diff --git a/.env.template b/.env.template index aabe8ebf..86143e95 100644 --- a/.env.template +++ b/.env.template @@ -1,6 +1,7 @@ # only set this to true when testing/debugging # when unset: 1 (true) - dont unset this, just for development DEBUG=0 +SQL_DEBUG=0 # hosts the application can run under e.g. recipes.mydomain.com,cooking.mydomain.com,... ALLOWED_HOSTS=* @@ -78,6 +79,8 @@ GUNICORN_MEDIA=0 # when unset: 0 (false) REVERSE_PROXY_AUTH=0 +# If base URL is something other than just / (you are serving a subfolder in your proxy for instance http://recipe_app/recipes/) +# SCRIPT_NAME=/recipes # Default settings for spaces, apply per space and can be changed in the admin view # SPACE_DEFAULT_MAX_RECIPES=0 # 0=unlimited recipes # SPACE_DEFAULT_MAX_USERS=0 # 0=unlimited users per space @@ -117,8 +120,14 @@ REVERSE_PROXY_AUTH=0 # Django session cookie settings. Can be changed to allow a single django application to authenticate several applications # when running under the same database # SESSION_COOKIE_DOMAIN=.example.com -# SESSION_COOKIE_NAME=sessionid # use this only to not interfere with non unified django applications under the same top level domain +# by default SORT_TREE_BY_NAME is disabled this will store all Keywords and Food in the order they are created +# enabling this setting makes saving new keywords and foods very slow, which doesn't matter in most usecases. +# however, when doing large imports of recipes that will create new objects, can increase total run time by 10-15x +# Keywords and Food can be manually sorted by name in Admin +# This value can also be temporarily changed in Admin, it will revert the next time the application is started +# This will be fixed/changed in the future by changing the implementation or finding a better workaround for sorting +# SORT_TREE_BY_NAME=0 # LDAP authentication # default 0 (false), when 1 (true) list of allowed users will be fetched from LDAP server #LDAP_AUTH= diff --git a/.github/dependabot.yml b/.github/dependabot.yml index cf7a39fb..ac81a766 100644 --- a/.github/dependabot.yml +++ b/.github/dependabot.yml @@ -5,7 +5,12 @@ version: 2 updates: - - package-ecosystem: "pip" # See documentation for possible values - directory: "/" # Location of package manifests + - package-ecosystem: "pip" + directory: "/" schedule: - interval: "daily" + interval: "monthly" + + - package-ecosystem: "npm" + directory: "/vue/" + schedule: + interval: "monthly" diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 1aa68a27..8d5c7840 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -4,7 +4,7 @@ on: [push] jobs: build: - + if: github.repository_owner == 'vabene1111' runs-on: ubuntu-latest strategy: max-parallel: 4 @@ -17,6 +17,16 @@ jobs: uses: actions/setup-python@v1 with: python-version: 3.9 + # Build Vue frontend + - uses: actions/setup-node@v2 + with: + node-version: '14' + - name: Install dependencies + working-directory: ./vue + run: yarn install + - name: Build dependencies + working-directory: ./vue + run: yarn build - name: Install dependencies run: | python -m pip install --upgrade pip diff --git a/.github/workflows/codeql-analysis.yml b/.github/workflows/codeql-analysis.yml index bd45ab21..ebb8381c 100644 --- a/.github/workflows/codeql-analysis.yml +++ b/.github/workflows/codeql-analysis.yml @@ -8,9 +8,8 @@ on: jobs: CodeQL-Build: - + if: github.repository_owner == 'vabene1111' runs-on: ubuntu-latest - steps: - name: Checkout repository uses: actions/checkout@v2 diff --git a/.github/workflows/docker-publish-beta.yml b/.github/workflows/docker-publish-beta.yml index 18387750..426531dd 100644 --- a/.github/workflows/docker-publish-beta.yml +++ b/.github/workflows/docker-publish-beta.yml @@ -5,9 +5,11 @@ on: - 'beta' jobs: build: + if: github.repository_owner == 'vabene1111' runs-on: ubuntu-latest steps: - uses: actions/checkout@master + # Update Version number - name: Update version file uses: DamianReeves/write-file-action@v1.0 with: @@ -16,6 +18,17 @@ jobs: VERSION_NUMBER = 'beta' BUILD_REF = '${{ github.sha }}' write-mode: overwrite + # Build Vue frontend + - uses: actions/setup-node@v2 + with: + node-version: '14' + - name: Install dependencies + working-directory: ./vue + run: yarn install + - name: Build dependencies + working-directory: ./vue + run: yarn build + # Build container - name: Build and publish image uses: ilteoood/docker_buildx@master with: @@ -23,4 +36,11 @@ jobs: imageName: vabene1111/recipes tag: beta dockerHubUser: ${{ secrets.DOCKER_USERNAME }} - dockerHubPassword: ${{ secrets.DOCKER_PASSWORD }} \ No newline at end of file + dockerHubPassword: ${{ secrets.DOCKER_PASSWORD }} + # Send discord notification + - name: Discord notification + env: + DISCORD_WEBHOOK: ${{ secrets.DISCORD_BETA_WEBHOOK }} + uses: Ilshidur/action-discord@0.3.2 + with: + args: '🚀 The BETA Image has been updated! 🥳' \ No newline at end of file diff --git a/.github/workflows/docker-publish-dev.yml b/.github/workflows/docker-publish-dev.yml index f6a14c3e..4598b035 100644 --- a/.github/workflows/docker-publish-dev.yml +++ b/.github/workflows/docker-publish-dev.yml @@ -7,9 +7,11 @@ on: - '!master' jobs: build: + if: github.repository_owner == 'vabene1111' runs-on: ubuntu-latest steps: - uses: actions/checkout@master + # Update Version number - name: Update version file uses: DamianReeves/write-file-action@v1.0 with: @@ -18,6 +20,17 @@ jobs: VERSION_NUMBER = 'develop' BUILD_REF = '${{ github.sha }}' write-mode: overwrite + # Build Vue frontend + - uses: actions/setup-node@v2 + with: + node-version: '14' + - name: Install dependencies + working-directory: ./vue + run: yarn install + - name: Build dependencies + working-directory: ./vue + run: yarn build + # Build container - name: Publish to Registry uses: elgohr/Publish-Docker-Github-Action@2.13 with: diff --git a/.github/workflows/docker-publish-latest.yml b/.github/workflows/docker-publish-latest.yml index cb320859..13b5c18a 100644 --- a/.github/workflows/docker-publish-latest.yml +++ b/.github/workflows/docker-publish-latest.yml @@ -6,12 +6,14 @@ on: jobs: build: + if: github.repository_owner == 'vabene1111' runs-on: ubuntu-latest steps: - uses: actions/checkout@master - name: Get version number id: get_version run: echo ::set-output name=VERSION::${GITHUB_REF/refs\/tags\//} + # Update Version number - name: Update version file uses: DamianReeves/write-file-action@v1.0 with: @@ -20,6 +22,17 @@ jobs: VERSION_NUMBER = '${{ steps.get_version.outputs.VERSION }}' BUILD_REF = '${{ github.sha }}' write-mode: overwrite + # Build Vue frontend + - uses: actions/setup-node@v2 + with: + node-version: '14' + - name: Install dependencies + working-directory: ./vue + run: yarn install + - name: Build dependencies + working-directory: ./vue + run: yarn build + # Build container - name: Build and publish image uses: ilteoood/docker_buildx@master with: diff --git a/.github/workflows/docker-publish-release.yml b/.github/workflows/docker-publish-release.yml index 665625d5..0d0b60b1 100644 --- a/.github/workflows/docker-publish-release.yml +++ b/.github/workflows/docker-publish-release.yml @@ -7,6 +7,7 @@ on: jobs: build: + if: github.repository_owner == 'vabene1111' runs-on: ubuntu-latest name: Build image job steps: @@ -15,6 +16,7 @@ jobs: - name: Get version number id: get_version run: echo ::set-output name=VERSION::${GITHUB_REF/refs\/tags\//} + # Update Version number - name: Update version file uses: DamianReeves/write-file-action@v1.0 with: @@ -23,6 +25,17 @@ jobs: VERSION_NUMBER = '${{ steps.get_version.outputs.VERSION }}' BUILD_REF = '${{ github.sha }}' write-mode: overwrite + # Build Vue frontend + - uses: actions/setup-node@v2 + with: + node-version: '14' + - name: Install dependencies + working-directory: ./vue + run: yarn install + - name: Build dependencies + working-directory: ./vue + run: yarn build + # Build container - name: Build and publish image uses: ilteoood/docker_buildx@master with: @@ -31,3 +44,10 @@ jobs: tag: ${{ steps.get_version.outputs.VERSION }} dockerHubUser: ${{ secrets.DOCKER_USERNAME }} dockerHubPassword: ${{ secrets.DOCKER_PASSWORD }} + # Send discord notification + - name: Discord notification + env: + DISCORD_WEBHOOK: ${{ secrets.DISCORD_RELEASE_WEBHOOK }} + uses: Ilshidur/action-discord@0.3.2 + with: + args: '🚀 A new Version of tandoor has been released 🥳 \n https://github.com/vabene1111/recipes/releases/tag/{{ steps.get_version.outputs.VERSION }}' \ No newline at end of file diff --git a/.github/workflows/docs.yml b/.github/workflows/docs.yml index e8a5833b..3e01d116 100644 --- a/.github/workflows/docs.yml +++ b/.github/workflows/docs.yml @@ -7,6 +7,7 @@ on: jobs: deploy: + if: github.repository_owner == 'vabene1111' runs-on: ubuntu-latest steps: - uses: actions/checkout@v2 diff --git a/.gitignore b/.gitignore index 33755583..5791432e 100644 --- a/.gitignore +++ b/.gitignore @@ -79,3 +79,8 @@ postgresql/ /docker-compose.override.yml vue/node_modules .vscode/ +vue/yarn.lock +vetur.config.js +cookbook/static/vue +vue/webpack-stats.json +cookbook/templates/sw.js diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml deleted file mode 100644 index ea21d86c..00000000 --- a/.pre-commit-config.yaml +++ /dev/null @@ -1,31 +0,0 @@ -# See https://pre-commit.com for more information -# See https://pre-commit.com/hooks.html for more hooks -repos: - - repo: local - hooks: - - id: pre-commit-yarn-build - name: Build javascript files - entry: yarn --cwd ./vue build - always_run: true - language: system - types: [ python ] - pass_filenames: false - -#- id: pre-commit-django-migrations -# name: Check django migrations -# entry: bash -c './venv/bin/activate && ./manage.py makemigrations --check' -# language: system -# types: [ python ] -# pass_filenames: false -# - id: pre-commit-django-make-messages -# name: Make messages if necessary -# entry: ./manage.py makemessages -i venv -a -# language: system -# types: [ python ] -# pass_filenames: false -# - id: pre-commit-django-compile-messages -# name: Compile messages if necessary -# entry: ./manage.py compilemessages -i venv -# language: system -# types: [ python ] -# pass_filenames: false \ No newline at end of file diff --git a/README.md b/README.md index 3f2c6d58..c7d2dfab 100644 --- a/README.md +++ b/README.md @@ -12,14 +12,16 @@ +

-Installation • +InstallationDocumentation • -Demo +Demo • +Discord server

![Preview](docs/preview.png) diff --git a/cookbook/admin.py b/cookbook/admin.py index 2301ca7f..4c4fc522 100644 --- a/cookbook/admin.py +++ b/cookbook/admin.py @@ -1,6 +1,12 @@ +from django.conf import settings from django.contrib import admin +from django.contrib.postgres.search import SearchVector +from treebeard.admin import TreeAdmin +from treebeard.forms import movenodeform_factory from django.contrib.auth.admin import UserAdmin from django.contrib.auth.models import User, Group +from django_scopes import scopes_disabled +from django.utils import translation from .models import (Comment, CookLog, Food, Ingredient, InviteLink, Keyword, MealPlan, MealType, NutritionInformation, Recipe, @@ -8,7 +14,9 @@ from .models import (Comment, CookLog, Food, Ingredient, InviteLink, Keyword, ShoppingList, ShoppingListEntry, ShoppingListRecipe, Space, Step, Storage, Sync, SyncLog, Unit, UserPreference, ViewLog, Supermarket, SupermarketCategory, SupermarketCategoryRelation, - ImportLog, TelegramBot, BookmarkletImport, UserFile) + ImportLog, TelegramBot, BookmarkletImport, UserFile, SearchPreference) + +from cookbook.managers import DICTIONARY class CustomUserAdmin(UserAdmin): @@ -46,6 +54,19 @@ class UserPreferenceAdmin(admin.ModelAdmin): admin.site.register(UserPreference, UserPreferenceAdmin) +class SearchPreferenceAdmin(admin.ModelAdmin): + list_display = ('name', 'search', 'trigram_threshold',) + search_fields = ('user__username',) + list_filter = ('search',) + + @staticmethod + def name(obj): + return obj.user.get_user_name() + + +admin.site.register(SearchPreference, SearchPreferenceAdmin) + + class StorageAdmin(admin.ModelAdmin): list_display = ('name', 'method') search_fields = ('name',) @@ -80,7 +101,38 @@ class SyncLogAdmin(admin.ModelAdmin): admin.site.register(SyncLog, SyncLogAdmin) -admin.site.register(Keyword) + +@admin.action(description='Temporarily ENABLE sorting on Foods and Keywords.') +def enable_tree_sorting(modeladmin, request, queryset): + Food.node_order_by = ['name'] + Keyword.node_order_by = ['name'] + with scopes_disabled(): + Food.fix_tree(fix_paths=True) + Keyword.fix_tree(fix_paths=True) + + +@admin.action(description='Temporarily DISABLE sorting on Foods and Keywords.') +def disable_tree_sorting(modeladmin, request, queryset): + Food.node_order_by = [] + Keyword.node_order_by = [] + + +@admin.action(description='Fix problems and sort tree by name') +def sort_tree(modeladmin, request, queryset): + orginal_value = modeladmin.model.node_order_by[:] + modeladmin.model.node_order_by = ['name'] + with scopes_disabled(): + modeladmin.model.fix_tree(fix_paths=True) + modeladmin.model.node_order_by = orginal_value + + +class KeywordAdmin(TreeAdmin): + form = movenodeform_factory(Keyword) + ordering = ('space', 'path',) + actions = [sort_tree, enable_tree_sorting, disable_tree_sorting] + + +admin.site.register(Keyword, KeywordAdmin) class StepAdmin(admin.ModelAdmin): @@ -91,6 +143,17 @@ class StepAdmin(admin.ModelAdmin): admin.site.register(Step, StepAdmin) +@admin.action(description='Rebuild index for selected recipes') +def rebuild_index(modeladmin, request, queryset): + language = DICTIONARY.get(translation.get_language(), 'simple') + with scopes_disabled(): + Recipe.objects.all().update( + name_search_vector=SearchVector('name__unaccent', weight='A', config=language), + desc_search_vector=SearchVector('description__unaccent', weight='B', config=language) + ) + Step.objects.all().update(search_vector=SearchVector('instruction__unaccent', weight='B', config=language)) + + class RecipeAdmin(admin.ModelAdmin): list_display = ('name', 'internal', 'created_by', 'storage') search_fields = ('name', 'created_by__username') @@ -101,11 +164,22 @@ class RecipeAdmin(admin.ModelAdmin): def created_by(obj): return obj.created_by.get_user_name() + if settings.DATABASES['default']['ENGINE'] in ['django.db.backends.postgresql_psycopg2', 'django.db.backends.postgresql']: + actions = [rebuild_index] + admin.site.register(Recipe, RecipeAdmin) admin.site.register(Unit) -admin.site.register(Food) + + +class FoodAdmin(TreeAdmin): + form = movenodeform_factory(Keyword) + ordering = ('space', 'path',) + actions = [sort_tree, enable_tree_sorting, disable_tree_sorting] + + +admin.site.register(Food, FoodAdmin) class IngredientAdmin(admin.ModelAdmin): diff --git a/cookbook/apps.py b/cookbook/apps.py index b0992662..2b76c457 100644 --- a/cookbook/apps.py +++ b/cookbook/apps.py @@ -1,5 +1,26 @@ from django.apps import AppConfig +from django.conf import settings +from django.db import OperationalError, ProgrammingError +from django_scopes import scopes_disabled class CookbookConfig(AppConfig): name = 'cookbook' + + def ready(self): + # post_save signal is only necessary if using full-text search on postgres + if settings.DATABASES['default']['ENGINE'] in ['django.db.backends.postgresql_psycopg2', 'django.db.backends.postgresql']: + import cookbook.signals # noqa + + # when starting up run fix_tree to: + # a) make sure that nodes are sorted when switching between sort modes + # b) fix problems, if any, with tree consistency + with scopes_disabled(): + try: + from cookbook.models import Keyword, Food + Keyword.fix_tree(fix_paths=True) + Food.fix_tree(fix_paths=True) + except OperationalError: + pass # if model does not exist there is no need to fix it + except ProgrammingError: + pass # if migration has not been run database cannot be fixed yet diff --git a/cookbook/filters.py b/cookbook/filters.py index b679a79f..30d42cf7 100644 --- a/cookbook/filters.py +++ b/cookbook/filters.py @@ -61,14 +61,12 @@ with scopes_disabled(): model = Recipe fields = ['name', 'keywords', 'foods', 'internal'] + # class FoodFilter(django_filters.FilterSet): + # name = django_filters.CharFilter(lookup_expr='icontains') - class FoodFilter(django_filters.FilterSet): - name = django_filters.CharFilter(lookup_expr='icontains') - - class Meta: - model = Food - fields = ['name'] - + # class Meta: + # model = Food + # fields = ['name'] class ShoppingListFilter(django_filters.FilterSet): diff --git a/cookbook/forms.py b/cookbook/forms.py index f4f37e08..60c9691b 100644 --- a/cookbook/forms.py +++ b/cookbook/forms.py @@ -1,16 +1,16 @@ from django import forms from django.conf import settings from django.core.exceptions import ValidationError -from django.forms import widgets +from django.forms import widgets, NumberInput from django.utils.translation import gettext_lazy as _ from django_scopes import scopes_disabled from django_scopes.forms import SafeModelChoiceField, SafeModelMultipleChoiceField -from emoji_picker.widgets import EmojiPickerTextInput from hcaptcha.fields import hCaptchaField -from .models import (Comment, Food, InviteLink, Keyword, MealPlan, Recipe, - RecipeBook, RecipeBookEntry, Storage, Sync, Unit, User, - UserPreference, SupermarketCategory, MealType, Space) +from .models import (Comment, InviteLink, Keyword, MealPlan, Recipe, + RecipeBook, RecipeBookEntry, Storage, Sync, User, + UserPreference, MealType, Space, + SearchPreference) class SelectWidget(widgets.Select): @@ -128,13 +128,15 @@ class ImportExportBase(forms.Form): MEALMASTER = 'MEALMASTER' REZKONV = 'REZKONV' OPENEATS = 'OPENEATS' + PLANTOEAT = 'PLANTOEAT' + COOKBOOKAPP = 'COOKBOOKAPP' type = forms.ChoiceField(choices=( (DEFAULT, _('Default')), (PAPRIKA, 'Paprika'), (NEXTCLOUD, 'Nextcloud Cookbook'), (MEALIE, 'Mealie'), (CHOWDOWN, 'Chowdown'), (SAFRON, 'Safron'), (CHEFTAP, 'ChefTap'), (PEPPERPLATE, 'Pepperplate'), (RECETTETEK, 'RecetteTek'), (RECIPESAGE, 'Recipe Sage'), (DOMESTICA, 'Domestica'), (MEALMASTER, 'MealMaster'), (REZKONV, 'RezKonv'), (OPENEATS, 'Openeats'), (RECIPEKEEPER, 'Recipe Keeper'), - + (PLANTOEAT, 'Plantoeat'), (COOKBOOKAPP, 'CookBookApp'), )) @@ -155,52 +157,6 @@ class ExportForm(ImportExportBase): self.fields['recipes'].queryset = Recipe.objects.filter(space=space).all() -class UnitMergeForm(forms.Form): - prefix = 'unit' - - new_unit = SafeModelChoiceField( - queryset=Unit.objects.none(), - widget=SelectWidget, - label=_('New Unit'), - help_text=_('New unit that other gets replaced by.'), - ) - old_unit = SafeModelChoiceField( - queryset=Unit.objects.none(), - widget=SelectWidget, - label=_('Old Unit'), - help_text=_('Unit that should be replaced.'), - ) - - def __init__(self, *args, **kwargs): - space = kwargs.pop('space') - super().__init__(*args, **kwargs) - self.fields['new_unit'].queryset = Unit.objects.filter(space=space).all() - self.fields['old_unit'].queryset = Unit.objects.filter(space=space).all() - - -class FoodMergeForm(forms.Form): - prefix = 'food' - - new_food = SafeModelChoiceField( - queryset=Food.objects.none(), - widget=SelectWidget, - label=_('New Food'), - help_text=_('New food that other gets replaced by.'), - ) - old_food = SafeModelChoiceField( - queryset=Food.objects.none(), - widget=SelectWidget, - label=_('Old Food'), - help_text=_('Food that should be replaced.'), - ) - - def __init__(self, *args, **kwargs): - space = kwargs.pop('space') - super().__init__(*args, **kwargs) - self.fields['new_food'].queryset = Food.objects.filter(space=space).all() - self.fields['old_food'].queryset = Food.objects.filter(space=space).all() - - class CommentForm(forms.ModelForm): prefix = 'comment' @@ -216,32 +172,6 @@ class CommentForm(forms.ModelForm): } -class KeywordForm(forms.ModelForm): - class Meta: - model = Keyword - fields = ('name', 'icon', 'description') - widgets = {'icon': EmojiPickerTextInput} - - -class FoodForm(forms.ModelForm): - - def __init__(self, *args, **kwargs): - space = kwargs.pop('space') - super().__init__(*args, **kwargs) - self.fields['recipe'].queryset = Recipe.objects.filter(space=space).all() - self.fields['supermarket_category'].queryset = SupermarketCategory.objects.filter(space=space).all() - - class Meta: - model = Food - fields = ('name', 'description', 'ignore_shopping', 'recipe', 'supermarket_category') - widgets = {'recipe': SelectWidget} - - field_classes = { - 'recipe': SafeModelChoiceField, - 'supermarket_category': SafeModelChoiceField, - } - - class StorageForm(forms.ModelForm): username = forms.CharField( widget=forms.TextInput(attrs={'autocomplete': 'new-password'}), @@ -339,21 +269,6 @@ class ImportRecipeForm(forms.ModelForm): } -class RecipeBookForm(forms.ModelForm): - def __init__(self, *args, **kwargs): - space = kwargs.pop('space') - super().__init__(*args, **kwargs) - self.fields['shared'].queryset = User.objects.filter(userpreference__space=space).all() - - class Meta: - model = RecipeBook - fields = ('name', 'icon', 'description', 'shared') - widgets = {'icon': EmojiPickerTextInput, 'shared': MultiSelectWidget} - field_classes = { - 'shared': SafeModelMultipleChoiceField, - } - - class MealPlanForm(forms.ModelForm): def __init__(self, *args, **kwargs): space = kwargs.pop('space') @@ -471,3 +386,43 @@ class UserCreateForm(forms.Form): attrs={'autocomplete': 'new-password', 'type': 'password'} ) ) + + +class SearchPreferenceForm(forms.ModelForm): + prefix = 'search' + trigram_threshold = forms.DecimalField(min_value=0.01, max_value=1, decimal_places=2, widget=NumberInput(attrs={'class': "form-control-range", 'type': 'range'}), + help_text=_('Determines how fuzzy a search is if it uses trigram similarity matching (e.g. low values mean more typos are ignored).')) + preset = forms.CharField(widget=forms.HiddenInput(),required=False) + + class Meta: + model = SearchPreference + fields = ('search', 'lookup', 'unaccent', 'icontains', 'istartswith', 'trigram', 'fulltext', 'trigram_threshold') + + help_texts = { + 'search': _('Select type method of search. Click here for full desciption of choices.'), + 'lookup': _('Use fuzzy matching on units, keywords and ingredients when editing and importing recipes.'), + 'unaccent': _('Fields to search ignoring accents. Selecting this option can improve or degrade search quality depending on language'), + 'icontains': _("Fields to search for partial matches. (e.g. searching for 'Pie' will return 'pie' and 'piece' and 'soapie')"), + 'istartswith': _("Fields to search for beginning of word matches. (e.g. searching for 'sa' will return 'salad' and 'sandwich')"), + 'trigram': _("Fields to 'fuzzy' search. (e.g. searching for 'recpie' will find 'recipe'.) Note: this option will conflict with 'web' and 'raw' methods of search."), + 'fulltext': _("Fields to full text search. Note: 'web', 'phrase', and 'raw' search methods only function with fulltext fields."), + } + + labels = { + 'search': _('Search Method'), + 'lookup': _('Fuzzy Lookups'), + 'unaccent': _('Ignore Accent'), + 'icontains': _("Partial Match"), + 'istartswith': _("Starts Wtih"), + 'trigram': _("Fuzzy Search"), + 'fulltext': _("Full Text") + } + + widgets = { + 'search': SelectWidget, + 'unaccent': MultiSelectWidget, + 'icontains': MultiSelectWidget, + 'istartswith': MultiSelectWidget, + 'trigram': MultiSelectWidget, + 'fulltext': MultiSelectWidget, + } diff --git a/cookbook/helper/image_processing.py b/cookbook/helper/image_processing.py index 610f5868..376cf74e 100644 --- a/cookbook/helper/image_processing.py +++ b/cookbook/helper/image_processing.py @@ -32,7 +32,7 @@ def rescale_image_png(image_object, base_width=720): def get_filetype(name): try: return os.path.splitext(name)[1] - except: + except Exception: return '.jpeg' diff --git a/cookbook/helper/ingredient_parser.py b/cookbook/helper/ingredient_parser.py index a6172852..b3f4a1c0 100644 --- a/cookbook/helper/ingredient_parser.py +++ b/cookbook/helper/ingredient_parser.py @@ -2,193 +2,273 @@ import re import string import unicodedata -from cookbook.models import Unit, Food +from django.core.cache import caches + +from cookbook.models import Unit, Food, Automation -def parse_fraction(x): - if len(x) == 1 and 'fraction' in unicodedata.decomposition(x): - frac_split = unicodedata.decomposition(x[-1:]).split() - return (float((frac_split[1]).replace('003', '')) - / float((frac_split[3]).replace('003', ''))) - else: - frac_split = x.split('/') - if not len(frac_split) == 2: - raise ValueError - try: - return int(frac_split[0]) / int(frac_split[1]) - except ZeroDivisionError: - raise ValueError +class IngredientParser: + request = None + ignore_rules = False + food_aliases = {} + unit_aliases = {} - -def parse_amount(x): - amount = 0 - unit = '' - note = '' - - did_check_frac = False - end = 0 - while (end < len(x) and (x[end] in string.digits - or ( - (x[end] == '.' or x[end] == ',' or x[end] == '/') - and end + 1 < len(x) - and x[end + 1] in string.digits - ))): - end += 1 - if end > 0: - if "/" in x[:end]: - amount = parse_fraction(x[:end]) - else: - amount = float(x[:end].replace(',', '.')) - else: - amount = parse_fraction(x[0]) - end += 1 - did_check_frac = True - if end < len(x): - if did_check_frac: - unit = x[end:] - else: - try: - amount += parse_fraction(x[end]) - unit = x[end + 1:] - except ValueError: - unit = x[end:] - - if unit.startswith('(') or unit.startswith('-'): # i dont know any unit that starts with ( or - so its likely an alternative like 1L (500ml) Water or 2-3 - unit = '' - note = x - return amount, unit, note - - -def parse_ingredient_with_comma(tokens): - ingredient = '' - note = '' - start = 0 - # search for first occurrence of an argument ending in a comma - while start < len(tokens) and not tokens[start].endswith(','): - start += 1 - if start == len(tokens): - # no token ending in a comma found -> use everything as ingredient - ingredient = ' '.join(tokens) - else: - ingredient = ' '.join(tokens[:start + 1])[:-1] - note = ' '.join(tokens[start + 1:]) - return ingredient, note - - -def parse_ingredient(tokens): - ingredient = '' - note = '' - if tokens[-1].endswith(')'): - # Check if the matching opening bracket is in the same token - if (not tokens[-1].startswith('(')) and ('(' in tokens[-1]): - return parse_ingredient_with_comma(tokens) - # last argument ends with closing bracket -> look for opening bracket - start = len(tokens) - 1 - while not tokens[start].startswith('(') and not start == 0: - start -= 1 - if start == 0: - # the whole list is wrapped in brackets -> assume it is an error (e.g. assumed first argument was the unit) # noqa: E501 - raise ValueError - elif start < 0: - # no opening bracket anywhere -> just ignore the last bracket - ingredient, note = parse_ingredient_with_comma(tokens) - else: - # opening bracket found -> split in ingredient and note, remove brackets from note # noqa: E501 - note = ' '.join(tokens[start:])[1:-1] - ingredient = ' '.join(tokens[:start]) - else: - ingredient, note = parse_ingredient_with_comma(tokens) - return ingredient, note - - -def parse(x): - # initialize default values - amount = 0 - unit = '' - ingredient = '' - note = '' - unit_note = '' - - # if the string contains parenthesis early on remove it and place it at the end - # because its likely some kind of note - if re.match('(.){1,6}\s\((.[^\(\)])+\)\s', x): - match = re.search('\((.[^\(])+\)', x) - x = x[:match.start()] + x[match.end():] + ' ' + x[match.start():match.end()] - - tokens = x.split() - if len(tokens) == 1: - # there only is one argument, that must be the ingredient - ingredient = tokens[0] - else: - try: - # try to parse first argument as amount - amount, unit, unit_note = parse_amount(tokens[0]) - # only try to parse second argument as amount if there are at least - # three arguments if it already has a unit there can't be - # a fraction for the amount - if len(tokens) > 2: - try: - if not unit == '': - # a unit is already found, no need to try the second argument for a fraction - # probably not the best method to do it, but I didn't want to make an if check and paste the exact same thing in the else as already is in the except # noqa: E501 - raise ValueError - # try to parse second argument as amount and add that, in case of '2 1/2' or '2 ½' - amount += parse_fraction(tokens[1]) - # assume that units can't end with a comma - if len(tokens) > 3 and not tokens[2].endswith(','): - # try to use third argument as unit and everything else as ingredient, use everything as ingredient if it fails # noqa: E501 - try: - ingredient, note = parse_ingredient(tokens[3:]) - unit = tokens[2] - except ValueError: - ingredient, note = parse_ingredient(tokens[2:]) - else: - ingredient, note = parse_ingredient(tokens[2:]) - except ValueError: - # assume that units can't end with a comma - if not tokens[1].endswith(','): - # try to use second argument as unit and everything else as ingredient, use everything as ingredient if it fails # noqa: E501 - try: - ingredient, note = parse_ingredient(tokens[2:]) - if unit == '': - unit = tokens[1] - else: - note = tokens[1] - except ValueError: - ingredient, note = parse_ingredient(tokens[1:]) - else: - ingredient, note = parse_ingredient(tokens[1:]) + def __init__(self, request, cache_mode, ignore_automations=False): + """ + Initialize ingredient parser + :param request: request context (to control caching, rule ownership, etc.) + :param cache_mode: defines if all rules should be loaded on initialization (good when parser is used many times) or if they should be retrieved every time (good when parser is not used many times in a row) + :param ignore_automations: ignore automation rules, allows to use ingredient parser without database access/request (request can be None) + """ + self.request = request + self.ignore_rules = ignore_automations + if cache_mode: + FOOD_CACHE_KEY = f'automation_food_alias_{self.request.space.pk}' + if c := caches['default'].get(FOOD_CACHE_KEY, None): + self.food_aliases = c + caches['default'].touch(FOOD_CACHE_KEY, 30) else: - # only two arguments, first one is the amount - # which means this is the ingredient - ingredient = tokens[1] - except ValueError: + for a in Automation.objects.filter(space=self.request.space, disabled=False, type=Automation.FOOD_ALIAS).only('param_1', 'param_2').all(): + self.food_aliases[a.param_1] = a.param_2 + caches['default'].set(FOOD_CACHE_KEY, self.food_aliases, 30) + + UNIT_CACHE_KEY = f'automation_unit_alias_{self.request.space.pk}' + if c := caches['default'].get(UNIT_CACHE_KEY, None): + self.unit_aliases = c + caches['default'].touch(UNIT_CACHE_KEY, 30) + else: + for a in Automation.objects.filter(space=self.request.space, disabled=False, type=Automation.UNIT_ALIAS).only('param_1', 'param_2').all(): + self.unit_aliases[a.param_1] = a.param_2 + caches['default'].set(UNIT_CACHE_KEY, self.unit_aliases, 30) + else: + self.food_aliases = {} + self.unit_aliases = {} + + def apply_food_automation(self, food): + """ + Apply food alias automations to passed foood + :param food: unit as string + :return: food as string (possibly changed by automation) + """ + if self.ignore_rules: + return food + else: + if self.food_aliases: + try: + return self.food_aliases[food] + except KeyError: + return food + else: + if automation := Automation.objects.filter(space=self.request.space, type=Automation.FOOD_ALIAS, param_1=food, disabled=False).first(): + return automation.param_2 + return food + + def apply_unit_automation(self, unit): + """ + Apply unit alias automations to passed unit + :param unit: unit as string + :return: unit as string (possibly changed by automation) + """ + if self.ignore_rules: + return unit + else: + if self.unit_aliases: + try: + return self.unit_aliases[unit] + except KeyError: + return unit + else: + if automation := Automation.objects.filter(space=self.request.space, type=Automation.UNIT_ALIAS, param_1=unit, disabled=False).first(): + return automation.param_2 + return unit + + def get_unit(self, unit): + """ + Get or create a unit for given space respecting possible automations + :param unit: string unit + :return: None if unit passed is invalid, Unit object otherwise + """ + if not unit: + return None + if len(unit) > 0: + u, created = Unit.objects.get_or_create(name=self.apply_unit_automation(unit), space=self.request.space) + return u + return None + + def get_food(self, food): + """ + Get or create a food for given space respecting possible automations + :param food: string food + :return: None if food passed is invalid, Food object otherwise + """ + if not food: + return None + if len(food) > 0: + f, created = Food.objects.get_or_create(name=self.apply_food_automation(food), space=self.request.space) + return f + return None + + def parse_fraction(self, x): + if len(x) == 1 and 'fraction' in unicodedata.decomposition(x): + frac_split = unicodedata.decomposition(x[-1:]).split() + return (float((frac_split[1]).replace('003', '')) + / float((frac_split[3]).replace('003', ''))) + else: + frac_split = x.split('/') + if not len(frac_split) == 2: + raise ValueError try: - # can't parse first argument as amount - # -> no unit -> parse everything as ingredient - ingredient, note = parse_ingredient(tokens) + return int(frac_split[0]) / int(frac_split[1]) + except ZeroDivisionError: + raise ValueError + + def parse_amount(self, x): + amount = 0 + unit = '' + note = '' + + did_check_frac = False + end = 0 + while (end < len(x) and (x[end] in string.digits + or ( + (x[end] == '.' or x[end] == ',' or x[end] == '/') + and end + 1 < len(x) + and x[end + 1] in string.digits + ))): + end += 1 + if end > 0: + if "/" in x[:end]: + amount = self.parse_fraction(x[:end]) + else: + amount = float(x[:end].replace(',', '.')) + else: + amount = self.parse_fraction(x[0]) + end += 1 + did_check_frac = True + if end < len(x): + if did_check_frac: + unit = x[end:] + else: + try: + amount += self.parse_fraction(x[end]) + unit = x[end + 1:] + except ValueError: + unit = x[end:] + + if unit.startswith('(') or unit.startswith('-'): # i dont know any unit that starts with ( or - so its likely an alternative like 1L (500ml) Water or 2-3 + unit = '' + note = x + return amount, unit, note + + def parse_ingredient_with_comma(self, tokens): + ingredient = '' + note = '' + start = 0 + # search for first occurrence of an argument ending in a comma + while start < len(tokens) and not tokens[start].endswith(','): + start += 1 + if start == len(tokens): + # no token ending in a comma found -> use everything as ingredient + ingredient = ' '.join(tokens) + else: + ingredient = ' '.join(tokens[:start + 1])[:-1] + note = ' '.join(tokens[start + 1:]) + return ingredient, note + + def parse_ingredient(self, tokens): + ingredient = '' + note = '' + if tokens[-1].endswith(')'): + # Check if the matching opening bracket is in the same token + if (not tokens[-1].startswith('(')) and ('(' in tokens[-1]): + return self.parse_ingredient_with_comma(tokens) + # last argument ends with closing bracket -> look for opening bracket + start = len(tokens) - 1 + while not tokens[start].startswith('(') and not start == 0: + start -= 1 + if start == 0: + # the whole list is wrapped in brackets -> assume it is an error (e.g. assumed first argument was the unit) # noqa: E501 + raise ValueError + elif start < 0: + # no opening bracket anywhere -> just ignore the last bracket + ingredient, note = self.parse_ingredient_with_comma(tokens) + else: + # opening bracket found -> split in ingredient and note, remove brackets from note # noqa: E501 + note = ' '.join(tokens[start:])[1:-1] + ingredient = ' '.join(tokens[:start]) + else: + ingredient, note = self.parse_ingredient_with_comma(tokens) + return ingredient, note + + def parse(self, x): + # initialize default values + amount = 0 + unit = '' + ingredient = '' + note = '' + unit_note = '' + + # if the string contains parenthesis early on remove it and place it at the end + # because its likely some kind of note + if re.match('(.){1,6}\s\((.[^\(\)])+\)\s', x): + match = re.search('\((.[^\(])+\)', x) + x = x[:match.start()] + x[match.end():] + ' ' + x[match.start():match.end()] + + tokens = x.split() + if len(tokens) == 1: + # there only is one argument, that must be the ingredient + ingredient = tokens[0] + else: + try: + # try to parse first argument as amount + amount, unit, unit_note = self.parse_amount(tokens[0]) + # only try to parse second argument as amount if there are at least + # three arguments if it already has a unit there can't be + # a fraction for the amount + if len(tokens) > 2: + try: + if not unit == '': + # a unit is already found, no need to try the second argument for a fraction + # probably not the best method to do it, but I didn't want to make an if check and paste the exact same thing in the else as already is in the except # noqa: E501 + raise ValueError + # try to parse second argument as amount and add that, in case of '2 1/2' or '2 ½' + amount += self.parse_fraction(tokens[1]) + # assume that units can't end with a comma + if len(tokens) > 3 and not tokens[2].endswith(','): + # try to use third argument as unit and everything else as ingredient, use everything as ingredient if it fails # noqa: E501 + try: + ingredient, note = self.parse_ingredient(tokens[3:]) + unit = tokens[2] + except ValueError: + ingredient, note = self.parse_ingredient(tokens[2:]) + else: + ingredient, note = self.parse_ingredient(tokens[2:]) + except ValueError: + # assume that units can't end with a comma + if not tokens[1].endswith(','): + # try to use second argument as unit and everything else as ingredient, use everything as ingredient if it fails # noqa: E501 + try: + ingredient, note = self.parse_ingredient(tokens[2:]) + if unit == '': + unit = tokens[1] + else: + note = tokens[1] + except ValueError: + ingredient, note = self.parse_ingredient(tokens[1:]) + else: + ingredient, note = self.parse_ingredient(tokens[1:]) + else: + # only two arguments, first one is the amount + # which means this is the ingredient + ingredient = tokens[1] except ValueError: - ingredient = ' '.join(tokens[1:]) + try: + # can't parse first argument as amount + # -> no unit -> parse everything as ingredient + ingredient, note = self.parse_ingredient(tokens) + except ValueError: + ingredient = ' '.join(tokens[1:]) - if unit_note not in note: - note += ' ' + unit_note - return amount, unit.strip(), ingredient.strip(), note.strip() - - -# small utility functions to prevent emtpy unit/food creation -def get_unit(unit, space): - if not unit: - return None - if len(unit) > 0: - u, created = Unit.objects.get_or_create(name=unit, space=space) - return u - return None - - -def get_food(food, space): - if not food: - return None - if len(food) > 0: - f, created = Food.objects.get_or_create(name=food, space=space) - return f - return None + if unit_note not in note: + note += ' ' + unit_note + return amount, self.apply_unit_automation(unit.strip()), self.apply_food_automation(ingredient.strip()), note.strip() diff --git a/cookbook/helper/permission_helper.py b/cookbook/helper/permission_helper.py index 73946853..cb3f791d 100644 --- a/cookbook/helper/permission_helper.py +++ b/cookbook/helper/permission_helper.py @@ -3,8 +3,6 @@ Source: https://djangosnippets.org/snippets/1703/ """ from django.conf import settings from django.core.cache import caches -from django.views.generic.detail import SingleObjectTemplateResponseMixin -from django.views.generic.edit import ModelFormMixin from cookbook.models import ShareLink from django.contrib import messages @@ -64,7 +62,7 @@ def is_object_owner(user, obj): return False try: return obj.get_owner() == user - except: + except Exception: return False diff --git a/cookbook/helper/recipe_html_import.py b/cookbook/helper/recipe_html_import.py index 3b06dc80..7b779add 100644 --- a/cookbook/helper/recipe_html_import.py +++ b/cookbook/helper/recipe_html_import.py @@ -10,7 +10,7 @@ from recipe_scrapers._utils import get_host_name, normalize_string from urllib.parse import unquote -def get_recipe_from_source(text, url, space): +def get_recipe_from_source(text, url, request): def build_node(k, v): if isinstance(v, dict): node = { @@ -103,7 +103,7 @@ def get_recipe_from_source(text, url, space): parse_list.append(el) scrape = text_scraper(text, url=url) - recipe_json = helper.get_from_scraper(scrape, space) + recipe_json = helper.get_from_scraper(scrape, request) for el in parse_list: temp_tree = [] diff --git a/cookbook/helper/recipe_search.py b/cookbook/helper/recipe_search.py index 1f61fbd4..d63dba0f 100644 --- a/cookbook/helper/recipe_search.py +++ b/cookbook/helper/recipe_search.py @@ -1,76 +1,397 @@ -from datetime import datetime, timedelta -from functools import reduce +from collections import Counter +from datetime import timedelta -from django.contrib.postgres.search import TrigramSimilarity -from django.db.models import Q, Case, When, Value -from django.forms import IntegerField - -from cookbook.models import ViewLog from recipes import settings +from django.contrib.postgres.search import ( + SearchQuery, SearchRank, TrigramSimilarity +) +from django.core.cache import caches +from django.db.models import Avg, Case, Count, Func, Max, Q, Subquery, Value, When +from django.db.models.functions import Coalesce +from django.utils import timezone, translation + +from cookbook.managers import DICTIONARY +from cookbook.models import Food, Keyword, ViewLog, SearchPreference +class Round(Func): + function = 'ROUND' + template = '%(function)s(%(expressions)s, 0)' + + +def str2bool(v): + if type(v) == bool: + return v + else: + return v.lower() in ("yes", "true", "1") + + +# TODO create extensive tests to make sure ORs ANDs and various filters, sorting, etc work as expected +# TODO consider creating a simpleListRecipe API that only includes minimum of recipe info and minimal filtering def search_recipes(request, queryset, params): - search_string = params.get('query', '') + if request.user.is_authenticated: + search_prefs = request.user.searchpreference + else: + search_prefs = SearchPreference() + search_string = params.get('query', '').strip() + search_rating = int(params.get('rating', 0)) search_keywords = params.getlist('keywords', []) search_foods = params.getlist('foods', []) search_books = params.getlist('books', []) + search_units = params.get('units', None) - search_keywords_or = params.get('keywords_or', True) - search_foods_or = params.get('foods_or', True) - search_books_or = params.get('books_or', True) + # TODO I think default behavior should be 'AND' which is how most sites operate with facet/filters based on results + search_keywords_or = str2bool(params.get('keywords_or', True)) + search_foods_or = str2bool(params.get('foods_or', True)) + search_books_or = str2bool(params.get('books_or', True)) - search_internal = params.get('internal', None) - search_random = params.get('random', False) - search_new = params.get('new', False) + search_internal = str2bool(params.get('internal', False)) + search_random = str2bool(params.get('random', False)) + search_new = str2bool(params.get('new', False)) search_last_viewed = int(params.get('last_viewed', 0)) + orderby = [] + # only sort by recent not otherwise filtering/sorting if search_last_viewed > 0: - last_viewed_recipes = ViewLog.objects.filter(created_by=request.user, space=request.space, - created_at__gte=datetime.now() - timedelta(days=14)).order_by('pk').values_list('recipe__pk', flat=True).distinct() + last_viewed_recipes = ViewLog.objects.filter( + created_by=request.user, space=request.space, + created_at__gte=timezone.now() - timedelta(days=14) # TODO make recent days a setting + ).order_by('-pk').values_list('recipe__pk', flat=True) + last_viewed_recipes = list(dict.fromkeys(last_viewed_recipes))[:search_last_viewed] # removes duplicates from list prior to slicing - return queryset.filter(pk__in=last_viewed_recipes[len(last_viewed_recipes) - min(len(last_viewed_recipes), search_last_viewed):]) + # return queryset.annotate(last_view=Max('viewlog__pk')).annotate(new=Case(When(pk__in=last_viewed_recipes, then=('last_view')), default=Value(0))).filter(new__gt=0).order_by('-new') + # queryset that only annotates most recent view (higher pk = lastest view) + queryset = queryset.annotate(recent=Coalesce(Max('viewlog__pk'), Value(0))) + orderby += ['-recent'] - if search_new == 'true': - queryset = queryset.annotate( - new_recipe=Case(When(created_at__gte=(datetime.now() - timedelta(days=7)), then=Value(100)), - default=Value(0), )).order_by('-new_recipe', 'name') - else: - queryset = queryset.order_by('name') + # TODO create setting for default ordering - most cooked, rating, + # TODO create options for live sorting + # TODO make days of new recipe a setting + if search_new: + queryset = ( + queryset.annotate(new_recipe=Case( + When(created_at__gte=(timezone.now() - timedelta(days=7)), then=('pk')), default=Value(0), )) + ) + # only sort by new recipes if not otherwise filtering/sorting + orderby += ['-new_recipe'] - if settings.DATABASES['default']['ENGINE'] in ['django.db.backends.postgresql_psycopg2', - 'django.db.backends.postgresql']: - queryset = queryset.annotate(similarity=TrigramSimilarity('name', search_string), ).filter( - Q(similarity__gt=0.1) | Q(name__unaccent__icontains=search_string)).order_by('-similarity') - else: - queryset = queryset.filter(name__icontains=search_string) + search_type = search_prefs.search or 'plain' + if len(search_string) > 0: + unaccent_include = search_prefs.unaccent.values_list('field', flat=True) + + icontains_include = [x + '__unaccent' if x in unaccent_include else x for x in search_prefs.icontains.values_list('field', flat=True)] + istartswith_include = [x + '__unaccent' if x in unaccent_include else x for x in search_prefs.istartswith.values_list('field', flat=True)] + trigram_include = [x + '__unaccent' if x in unaccent_include else x for x in search_prefs.trigram.values_list('field', flat=True)] + fulltext_include = search_prefs.fulltext.values_list('field', flat=True) # fulltext doesn't use field name directly + + # if no filters are configured use name__icontains as default + if len(icontains_include) + len(istartswith_include) + len(trigram_include) + len(fulltext_include) == 0: + filters = [Q(**{"name__icontains": search_string})] + else: + filters = [] + + # dynamically build array of filters that will be applied + for f in icontains_include: + filters += [Q(**{"%s__icontains" % f: search_string})] + + for f in istartswith_include: + filters += [Q(**{"%s__istartswith" % f: search_string})] + + if settings.DATABASES['default']['ENGINE'] in ['django.db.backends.postgresql_psycopg2', 'django.db.backends.postgresql']: + language = DICTIONARY.get(translation.get_language(), 'simple') + # django full text search https://docs.djangoproject.com/en/3.2/ref/contrib/postgres/search/#searchquery + # TODO can options install this extension to further enhance search query language https://github.com/caub/pg-tsquery + # trigram breaks full text search 'websearch' and 'raw' capabilities and will be ignored if those methods are chosen + if search_type in ['websearch', 'raw']: + search_trigram = False + else: + search_trigram = True + search_query = SearchQuery( + search_string, + search_type=search_type, + config=language, + ) + + # iterate through fields to use in trigrams generating a single trigram + if search_trigram and len(trigram_include) > 0: + trigram = None + for f in trigram_include: + if trigram: + trigram += TrigramSimilarity(f, search_string) + else: + trigram = TrigramSimilarity(f, search_string) + queryset = queryset.annotate(similarity=trigram) + filters += [Q(similarity__gt=search_prefs.trigram_threshold)] + + if 'name' in fulltext_include: + filters += [Q(name_search_vector=search_query)] + if 'description' in fulltext_include: + filters += [Q(desc_search_vector=search_query)] + if 'instructions' in fulltext_include: + filters += [Q(steps__search_vector=search_query)] + if 'keywords' in fulltext_include: + filters += [Q(keywords__in=Subquery(Keyword.objects.filter(name__search=search_query).values_list('id', flat=True)))] + if 'foods' in fulltext_include: + filters += [Q(steps__ingredients__food__in=Subquery(Food.objects.filter(name__search=search_query).values_list('id', flat=True)))] + query_filter = None + for f in filters: + if query_filter: + query_filter |= f + else: + query_filter = f + + # TODO add order by user settings - only do search rank and annotation if rank order is configured + search_rank = ( + SearchRank('name_search_vector', search_query, cover_density=True) + + SearchRank('desc_search_vector', search_query, cover_density=True) + + SearchRank('steps__search_vector', search_query, cover_density=True) + ) + queryset = queryset.filter(query_filter).annotate(rank=search_rank) + orderby += ['-rank'] + else: + queryset = queryset.filter(name__icontains=search_string) if len(search_keywords) > 0: - if search_keywords_or == 'true': + if search_keywords_or: + # TODO creating setting to include descendants of keywords a setting + # for kw in Keyword.objects.filter(pk__in=search_keywords): + # search_keywords += list(kw.get_descendants().values_list('pk', flat=True)) queryset = queryset.filter(keywords__id__in=search_keywords) else: - for k in search_keywords: - queryset = queryset.filter(keywords__id=k) + # when performing an 'and' search returned recipes should include a parent OR any of its descedants + # AND other keywords selected so filters are appended using keyword__id__in the list of keywords and descendants + for kw in Keyword.objects.filter(pk__in=search_keywords): + queryset = queryset.filter(keywords__id__in=list(kw.get_descendants_and_self().values_list('pk', flat=True))) if len(search_foods) > 0: - if search_foods_or == 'true': + if search_foods_or: + # TODO creating setting to include descendants of food a setting queryset = queryset.filter(steps__ingredients__food__id__in=search_foods) else: - for k in search_foods: - queryset = queryset.filter(steps__ingredients__food__id=k) + # when performing an 'and' search returned recipes should include a parent OR any of its descedants + # AND other foods selected so filters are appended using steps__ingredients__food__id__in the list of foods and descendants + for fd in Food.objects.filter(pk__in=search_foods): + queryset = queryset.filter(steps__ingredients__food__id__in=list(fd.get_descendants_and_self().values_list('pk', flat=True))) if len(search_books) > 0: - if search_books_or == 'true': + if search_books_or: queryset = queryset.filter(recipebookentry__book__id__in=search_books) else: for k in search_books: queryset = queryset.filter(recipebookentry__book__id=k) - queryset = queryset.distinct() + if search_rating: + queryset = queryset.annotate(rating=Round(Avg(Case(When(cooklog__created_by=request.user, then='cooklog__rating'), default=Value(0))))) + if search_rating == -1: + queryset = queryset.filter(rating=0) + else: + queryset = queryset.filter(rating__gte=search_rating) - if search_internal == 'true': + # probably only useful in Unit list view, so keeping it simple + if search_units: + queryset = queryset.filter(steps__ingredients__unit__id=search_units) + + if search_internal: queryset = queryset.filter(internal=True) - if search_random == 'true': - queryset = queryset.order_by("?") + queryset = queryset.distinct() + if search_random: + queryset = queryset.order_by("?") + else: + queryset = queryset.order_by(*orderby) return queryset + + +def get_facet(qs=None, request=None, use_cache=True, hash_key=None): + """ + Gets an annotated list from a queryset. + :param qs: + + recipe queryset to build facets from + + :param request: + + the web request that contains the necessary query parameters + + :param use_cache: + + will find results in cache, if any, and return them or empty list. + will save the list of recipes IDs in the cache for future processing + + :param hash_key: + + the cache key of the recipe list to process + only evaluated if the use_cache parameter is false + """ + facets = {} + recipe_list = [] + cache_timeout = 600 + + if use_cache: + qs_hash = hash(frozenset(qs.values_list('pk'))) + facets['cache_key'] = str(qs_hash) + SEARCH_CACHE_KEY = f"recipes_filter_{qs_hash}" + if c := caches['default'].get(SEARCH_CACHE_KEY, None): + facets['Keywords'] = c['Keywords'] or [] + facets['Foods'] = c['Foods'] or [] + facets['Books'] = c['Books'] or [] + facets['Ratings'] = c['Ratings'] or [] + facets['Recent'] = c['Recent'] or [] + else: + facets['Keywords'] = [] + facets['Foods'] = [] + facets['Books'] = [] + rating_qs = qs.annotate(rating=Round(Avg(Case(When(cooklog__created_by=request.user, then='cooklog__rating'), default=Value(0))))) + facets['Ratings'] = dict(Counter(r.rating for r in rating_qs)) + facets['Recent'] = ViewLog.objects.filter( + created_by=request.user, space=request.space, + created_at__gte=timezone.now() - timedelta(days=14) # TODO make days of recent recipe a setting + ).values_list('recipe__pk', flat=True) + + cached_search = { + 'recipe_list': list(qs.values_list('id', flat=True)), + 'keyword_list': request.query_params.getlist('keywords', []), + 'food_list': request.query_params.getlist('foods', []), + 'book_list': request.query_params.getlist('book', []), + 'search_keywords_or': str2bool(request.query_params.get('keywords_or', True)), + 'search_foods_or': str2bool(request.query_params.get('foods_or', True)), + 'search_books_or': str2bool(request.query_params.get('books_or', True)), + 'space': request.space, + 'Ratings': facets['Ratings'], + 'Recent': facets['Recent'], + 'Keywords': facets['Keywords'], + 'Foods': facets['Foods'], + 'Books': facets['Books'] + } + caches['default'].set(SEARCH_CACHE_KEY, cached_search, cache_timeout) + return facets + + SEARCH_CACHE_KEY = f'recipes_filter_{hash_key}' + if c := caches['default'].get(SEARCH_CACHE_KEY, None): + recipe_list = c['recipe_list'] + keyword_list = c['keyword_list'] + food_list = c['food_list'] + book_list = c['book_list'] + search_keywords_or = c['search_keywords_or'] + search_foods_or = c['search_foods_or'] + search_books_or = c['search_books_or'] + else: + return {} + + # if using an OR search, will annotate all keywords, otherwise, just those that appear in results + if search_keywords_or: + keywords = Keyword.objects.filter(space=request.space).annotate(recipe_count=Count('recipe')) + else: + keywords = Keyword.objects.filter(recipe__in=recipe_list, space=request.space).annotate(recipe_count=Count('recipe')) + # custom django-tree function annotates a queryset to make building a tree easier. + # see https://django-treebeard.readthedocs.io/en/latest/api.html#treebeard.models.Node.get_annotated_list_qs for details + kw_a = annotated_qs(keywords, root=True, fill=True) + + # # if using an OR search, will annotate all keywords, otherwise, just those that appear in results + if search_foods_or: + foods = Food.objects.filter(space=request.space).annotate(recipe_count=Count('ingredient')) + else: + foods = Food.objects.filter(ingredient__step__recipe__in=recipe_list, space=request.space).annotate(recipe_count=Count('ingredient')) + food_a = annotated_qs(foods, root=True, fill=True) + + # TODO add rating facet + facets['Keywords'] = fill_annotated_parents(kw_a, keyword_list) + facets['Foods'] = fill_annotated_parents(food_a, food_list) + # TODO add book facet + facets['Books'] = [] + c['Keywords'] = facets['Keywords'] + c['Foods'] = facets['Foods'] + c['Books'] = facets['Books'] + caches['default'].set(SEARCH_CACHE_KEY, c, cache_timeout) + return facets + + +def fill_annotated_parents(annotation, filters): + tree_list = [] + parent = [] + i = 0 + level = -1 + for r in annotation: + expand = False + + annotation[i][1]['id'] = r[0].id + annotation[i][1]['name'] = r[0].name + annotation[i][1]['count'] = getattr(r[0], 'recipe_count', 0) + annotation[i][1]['isDefaultExpanded'] = False + + if str(r[0].id) in filters: + expand = True + if r[1]['level'] < level: + parent = parent[:r[1]['level'] - level] + parent[-1] = i + level = r[1]['level'] + elif r[1]['level'] > level: + parent.extend([i]) + level = r[1]['level'] + else: + parent[-1] = i + j = 0 + + while j < level: + # this causes some double counting when a recipe has both a child and an ancestor + annotation[parent[j]][1]['count'] += getattr(r[0], 'recipe_count', 0) + if expand: + annotation[parent[j]][1]['isDefaultExpanded'] = True + j += 1 + if level == 0: + tree_list.append(annotation[i][1]) + elif level > 0: + annotation[parent[level - 1]][1].setdefault('children', []).append(annotation[i][1]) + i += 1 + return tree_list + + +def annotated_qs(qs, root=False, fill=False): + """ + Gets an annotated list from a queryset. + :param root: + + Will backfill in annotation to include all parents to root node. + + :param fill: + Will fill in gaps in annotation where nodes between children + and ancestors are not included in the queryset. + """ + + result, info = [], {} + start_depth, prev_depth = (None, None) + nodes_list = list(qs.values_list('pk', flat=True)) + for node in qs.order_by('path'): + node_queue = [node] + while len(node_queue) > 0: + dirty = False + current_node = node_queue[-1] + depth = current_node.get_depth() + # TODO if node is at the wrong depth for some reason this fails + # either create a 'fix node' page, or automatically move the node to the root + parent_id = current_node.parent + if root and depth > 1 and parent_id not in nodes_list: + parent_id = current_node.parent + nodes_list.append(parent_id) + node_queue.append(current_node.__class__.objects.get(pk=parent_id)) + dirty = True + + if fill and depth > 1 and prev_depth and depth > prev_depth and parent_id not in nodes_list: + nodes_list.append(parent_id) + node_queue.append(current_node.__class__.objects.get(pk=parent_id)) + dirty = True + + if not dirty: + working_node = node_queue.pop() + if start_depth is None: + start_depth = depth + open = (depth and (prev_depth is None or depth > prev_depth)) + if prev_depth is not None and depth < prev_depth: + info['close'] = list(range(0, prev_depth - depth)) + info = {'open': open, 'close': [], 'level': depth - start_depth} + result.append((working_node, info,)) + prev_depth = depth + if start_depth and start_depth > 0: + info['close'] = list(range(0, prev_depth - start_depth + 1)) + return result diff --git a/cookbook/helper/recipe_url_import.py b/cookbook/helper/recipe_url_import.py index e76d12e8..2ea889bf 100644 --- a/cookbook/helper/recipe_url_import.py +++ b/cookbook/helper/recipe_url_import.py @@ -2,17 +2,15 @@ import random import re from isodate import parse_duration as iso_parse_duration from isodate.isoerror import ISO8601Error -from recipe_scrapers._exceptions import ElementNotFoundInHtml -from cookbook.helper.ingredient_parser import parse as parse_single_ingredient +from cookbook.helper.ingredient_parser import IngredientParser from cookbook.models import Keyword from django.utils.dateparse import parse_duration from html import unescape -from recipe_scrapers._schemaorg import SchemaOrgException from recipe_scrapers._utils import get_minutes -def get_from_scraper(scrape, space): +def get_from_scraper(scrape, request): # converting the scrape_me object to the existing json format based on ld+json recipe_json = {} try: @@ -56,6 +54,7 @@ def get_from_scraper(scrape, space): recipe_json['cookTime'] = get_minutes(scrape.schema.data.get("cookTime")) or 0 except Exception: recipe_json['cookTime'] = 0 + if recipe_json['cookTime'] + recipe_json['prepTime'] == 0: try: recipe_json['prepTime'] = get_minutes(scrape.total_time()) or 0 @@ -92,15 +91,16 @@ def get_from_scraper(scrape, space): except Exception: pass try: - recipe_json['keywords'] = parse_keywords(list(set(map(str.casefold, keywords))), space) + recipe_json['keywords'] = parse_keywords(list(set(map(str.casefold, keywords))), request.space) except AttributeError: recipe_json['keywords'] = keywords + ingredient_parser = IngredientParser(request, True) try: ingredients = [] for x in scrape.ingredients(): try: - amount, unit, ingredient, note = parse_single_ingredient(x) + amount, unit, ingredient, note = ingredient_parser.parse(x) ingredients.append( { 'amount': amount, diff --git a/cookbook/helper/scope_middleware.py b/cookbook/helper/scope_middleware.py index 809a7eb1..8e1f7740 100644 --- a/cookbook/helper/scope_middleware.py +++ b/cookbook/helper/scope_middleware.py @@ -1,4 +1,3 @@ -from django.shortcuts import redirect from django.urls import reverse from django_scopes import scope, scopes_disabled diff --git a/cookbook/helper/scrapers/scrapers.py b/cookbook/helper/scrapers/scrapers.py index 4c41474e..6d785a5e 100644 --- a/cookbook/helper/scrapers/scrapers.py +++ b/cookbook/helper/scrapers/scrapers.py @@ -30,7 +30,6 @@ def text_scraper(text, url=None): url=None ): self.wild_mode = False - # self.exception_handling = None # TODO add new method here, old one was deprecated self.meta_http_equiv = False self.soup = BeautifulSoup(page_data, "html.parser") self.url = url diff --git a/cookbook/helper/template_helper.py b/cookbook/helper/template_helper.py index d7189e3f..63c2921c 100644 --- a/cookbook/helper/template_helper.py +++ b/cookbook/helper/template_helper.py @@ -6,6 +6,7 @@ from cookbook.helper.mdx_urlize import UrlizeExtension from jinja2 import Template, TemplateSyntaxError, UndefinedError from gettext import gettext as _ + class IngredientObject(object): amount = "" unit = "" diff --git a/cookbook/integration/cheftap.py b/cookbook/integration/cheftap.py index 4dd67830..f83203dc 100644 --- a/cookbook/integration/cheftap.py +++ b/cookbook/integration/cheftap.py @@ -1,10 +1,8 @@ import re -from django.utils.translation import gettext as _ - -from cookbook.helper.ingredient_parser import parse, get_food, get_unit +from cookbook.helper.ingredient_parser import IngredientParser from cookbook.integration.integration import Integration -from cookbook.models import Recipe, Step, Food, Unit, Ingredient +from cookbook.models import Recipe, Step, Ingredient class ChefTap(Integration): @@ -44,11 +42,12 @@ class ChefTap(Integration): step.instruction += '\n' + source_url step.save() + ingredient_parser = IngredientParser(self.request, True) for ingredient in ingredients: if len(ingredient.strip()) > 0: - amount, unit, ingredient, note = parse(ingredient) - f = get_food(ingredient, self.request.space) - u = get_unit(unit, self.request.space) + amount, unit, ingredient, note = ingredient_parser.parse(ingredient) + f = ingredient_parser.get_food(ingredient) + u = ingredient_parser.get_unit(unit) step.ingredients.add(Ingredient.objects.create( food=f, unit=u, amount=amount, note=note, space=self.request.space, )) diff --git a/cookbook/integration/chowdown.py b/cookbook/integration/chowdown.py index 4b36e3b2..8a16ae0e 100644 --- a/cookbook/integration/chowdown.py +++ b/cookbook/integration/chowdown.py @@ -1,12 +1,11 @@ -import json import re from io import BytesIO from zipfile import ZipFile from cookbook.helper.image_processing import get_filetype -from cookbook.helper.ingredient_parser import parse, get_food, get_unit +from cookbook.helper.ingredient_parser import IngredientParser from cookbook.integration.integration import Integration -from cookbook.models import Recipe, Step, Food, Unit, Ingredient, Keyword +from cookbook.models import Recipe, Step, Ingredient, Keyword class Chowdown(Integration): @@ -51,6 +50,7 @@ class Chowdown(Integration): recipe = Recipe.objects.create(name=title, created_by=self.request.user, internal=True, space=self.request.space) for k in tags.split(','): + print(f'adding keyword {k.strip()}') keyword, created = Keyword.objects.get_or_create(name=k.strip(), space=self.request.space) recipe.keywords.add(keyword) @@ -58,10 +58,11 @@ class Chowdown(Integration): instruction='\n'.join(directions) + '\n\n' + '\n'.join(descriptions), space=self.request.space, ) + ingredient_parser = IngredientParser(self.request, True) for ingredient in ingredients: - amount, unit, ingredient, note = parse(ingredient) - f = get_food(ingredient, self.request.space) - u = get_unit(unit, self.request.space) + amount, unit, ingredient, note = ingredient_parser.parse(ingredient) + f = ingredient_parser.get_food(ingredient) + u = ingredient_parser.get_unit(unit) step.ingredients.add(Ingredient.objects.create( food=f, unit=u, amount=amount, note=note, space=self.request.space, )) diff --git a/cookbook/integration/cookbookapp.py b/cookbook/integration/cookbookapp.py new file mode 100644 index 00000000..f7dc55d7 --- /dev/null +++ b/cookbook/integration/cookbookapp.py @@ -0,0 +1,67 @@ +import base64 +import gzip +import json +import re +from io import BytesIO + +import yaml + +from cookbook.helper.ingredient_parser import IngredientParser +from cookbook.integration.integration import Integration +from cookbook.models import Recipe, Step, Ingredient, Keyword +from gettext import gettext as _ + + +class CookBookApp(Integration): + + def import_file_name_filter(self, zip_info_object): + return zip_info_object.filename.endswith('.yml') + + def get_recipe_from_file(self, file): + recipe_yml = yaml.safe_load(file.getvalue().decode("utf-8")) + + recipe = Recipe.objects.create( + name=recipe_yml['name'].strip(), + created_by=self.request.user, internal=True, + space=self.request.space) + + try: + recipe.servings = re.findall('([0-9])+', recipe_yml['recipeYield'])[0] + except Exception as e: + pass + + try: + recipe.working_time = recipe_yml['prep_time'].replace(' minutes', '') + recipe.waiting_time = recipe_yml['cook_time'].replace(' minutes', '') + except Exception: + pass + + if recipe_yml['on_favorites']: + recipe.keywords.add(Keyword.objects.get_or_create(name=_('Favorites'), space=self.request.space)) + + step = Step.objects.create(instruction=recipe_yml['directions'], space=self.request.space, ) + + if 'notes' in recipe_yml and recipe_yml['notes'].strip() != '': + step.instruction = step.instruction + '\n\n' + recipe_yml['notes'] + + if 'nutritional_info' in recipe_yml: + step.instruction = step.instruction + '\n\n' + recipe_yml['nutritional_info'] + + if 'source' in recipe_yml and recipe_yml['source'].strip() != '': + step.instruction = step.instruction + '\n\n' + recipe_yml['source'] + + step.save() + recipe.steps.add(step) + + ingredient_parser = IngredientParser(self.request, True) + for ingredient in recipe_yml['ingredients'].split('\n'): + if ingredient.strip() != '': + amount, unit, ingredient, note = ingredient_parser.parse(ingredient) + f = ingredient_parser.get_food(ingredient) + u = ingredient_parser.get_unit(unit) + step.ingredients.add(Ingredient.objects.create( + food=f, unit=u, amount=amount, note=note, space=self.request.space, + )) + + recipe.save() + return recipe diff --git a/cookbook/integration/domestica.py b/cookbook/integration/domestica.py index da55e7c3..f580063d 100644 --- a/cookbook/integration/domestica.py +++ b/cookbook/integration/domestica.py @@ -2,7 +2,7 @@ import base64 import json from io import BytesIO -from cookbook.helper.ingredient_parser import parse, get_food, get_unit +from cookbook.helper.ingredient_parser import IngredientParser from cookbook.integration.integration import Integration from cookbook.models import Recipe, Step, Ingredient @@ -34,11 +34,12 @@ class Domestica(Integration): if file['source'] != '': step.instruction += '\n' + file['source'] + ingredient_parser = IngredientParser(self.request, True) for ingredient in file['ingredients'].split('\n'): if len(ingredient.strip()) > 0: - amount, unit, ingredient, note = parse(ingredient) - f = get_food(ingredient, self.request.space) - u = get_unit(unit, self.request.space) + amount, unit, ingredient, note = ingredient_parser.parse(ingredient) + f = ingredient_parser.get_food(ingredient) + u = ingredient_parser.get_unit(unit) step.ingredients.add(Ingredient.objects.create( food=f, unit=u, amount=amount, note=note, space=self.request.space, )) diff --git a/cookbook/integration/integration.py b/cookbook/integration/integration.py index b7ee9f29..fe1c10a6 100644 --- a/cookbook/integration/integration.py +++ b/cookbook/integration/integration.py @@ -1,12 +1,13 @@ import datetime import json -import os -import re +import traceback import uuid from io import BytesIO, StringIO from zipfile import ZipFile, BadZipFile +from django.core.exceptions import ObjectDoesNotExist from django.core.files import File +from django.db import IntegrityError from django.http import HttpResponse from django.utils.formats import date_format from django.utils.translation import gettext as _ @@ -15,6 +16,7 @@ from django_scopes import scope from cookbook.forms import ImportExportBase from cookbook.helper.image_processing import get_filetype from cookbook.models import Keyword, Recipe +from recipes.settings import DATABASES, DEBUG class Integration: @@ -31,12 +33,32 @@ class Integration: """ self.request = request self.export_type = export_type - self.keyword = Keyword.objects.create( - name=f'Import {export_type} {date_format(datetime.datetime.now(), "DATETIME_FORMAT")}.{datetime.datetime.now().strftime("%S")}', - description=f'Imported by {request.user.get_user_name()} at {date_format(datetime.datetime.now(), "DATETIME_FORMAT")}. Type: {export_type}', - icon='📥', - space=request.space - ) + self.ignored_recipes = [] + + description = f'Imported by {request.user.get_user_name()} at {date_format(datetime.datetime.now(), "DATETIME_FORMAT")}. Type: {export_type}' + icon = '📥' + + try: + last_kw = Keyword.objects.filter(name__regex=r'^(Import [0-9]+)', space=request.space).latest('created_at') + name = f'Import {int(last_kw.name.replace("Import ", "")) + 1}' + except ObjectDoesNotExist: + name = 'Import 1' + + parent, created = Keyword.objects.get_or_create(name='Import', space=request.space) + try: + self.keyword = parent.add_child( + name=name, + description=description, + icon=icon, + space=request.space + ) + except IntegrityError: # in case, for whatever reason, the name does exist append UUID to it. Not nice but works for now. + self.keyword = parent.add_child( + name=f'{name} {str(uuid.uuid4())[0:8]}', + description=description, + icon=icon, + space=request.space + ) def do_export(self, recipes): """ @@ -142,9 +164,10 @@ class Integration: il.imported_recipes += 1 il.save() except Exception as e: - il.msg += f'-------------------- \n ERROR \n{e}\n--------------------\n' + traceback.print_exc() + self.handle_exception(e, log=il, message=f'-------------------- \nERROR \n{e}\n--------------------\n') import_zip.close() - elif '.json' in f['name'] or '.txt' in f['name']: + elif '.json' in f['name'] or '.txt' in f['name'] or '.mmf' in f['name']: data_list = self.split_recipe_file(f['file']) il.total_recipes += len(data_list) for d in data_list: @@ -156,7 +179,7 @@ class Integration: il.imported_recipes += 1 il.save() except Exception as e: - il.msg += f'-------------------- \n ERROR \n{e}\n--------------------\n' + self.handle_exception(e, log=il, message=f'-------------------- \nERROR \n{e}\n--------------------\n') elif '.rtk' in f['name']: import_zip = ZipFile(f['file']) for z in import_zip.filelist: @@ -173,7 +196,7 @@ class Integration: il.imported_recipes += 1 il.save() except Exception as e: - il.msg += f'-------------------- \n ERROR \n{e}\n--------------------\n' + self.handle_exception(e, log=il, message=f'-------------------- \nERROR \n{e}\n--------------------\n') import_zip.close() else: recipe = self.get_recipe_from_file(f['file']) @@ -183,9 +206,10 @@ class Integration: except BadZipFile: il.msg += 'ERROR ' + _( 'Importer expected a .zip file. Did you choose the correct importer type for your data ?') + '\n' - except: - il.msg += 'ERROR ' + _( + except Exception as e: + msg = 'ERROR ' + _( 'An unexpected error occurred during the import. Please make sure you have uploaded a valid file.') + '\n' + self.handle_exception(e, log=il, message=msg) if len(self.ignored_recipes) > 0: il.msg += '\n' + _( @@ -204,8 +228,8 @@ class Integration: :param import_duplicates: if duplicates should be imported """ if Recipe.objects.filter(space=self.request.space, name=recipe.name).count() > 1 and not import_duplicates: - recipe.delete() self.ignored_recipes.append(recipe.name) + recipe.delete() @staticmethod def import_recipe_image(recipe, image_file, filetype='.jpeg'): @@ -244,3 +268,12 @@ class Integration: - data - string content for file to get created in export zip """ raise NotImplementedError('Method not implemented in integration') + + def handle_exception(self, exception, log=None, message=''): + if log: + if message: + log.msg += message + else: + log.msg += exception.msg + if DEBUG: + traceback.print_exc() diff --git a/cookbook/integration/mealie.py b/cookbook/integration/mealie.py index e1144472..15117595 100644 --- a/cookbook/integration/mealie.py +++ b/cookbook/integration/mealie.py @@ -4,9 +4,9 @@ from io import BytesIO from zipfile import ZipFile from cookbook.helper.image_processing import get_filetype -from cookbook.helper.ingredient_parser import parse, get_food, get_unit +from cookbook.helper.ingredient_parser import IngredientParser from cookbook.integration.integration import Integration -from cookbook.models import Recipe, Step, Food, Unit, Ingredient +from cookbook.models import Recipe, Step, Ingredient class Mealie(Integration): @@ -24,6 +24,7 @@ class Mealie(Integration): created_by=self.request.user, internal=True, space=self.request.space) # TODO parse times (given in PT2H3M ) + # @vabene check recipe_url_import.iso_duration_to_minutes I think it does what you are looking for ingredients_added = False for s in recipe_json['recipe_instructions']: @@ -36,21 +37,22 @@ class Mealie(Integration): if len(recipe_json['description'].strip()) > 500: step.instruction = recipe_json['description'].strip() + '\n\n' + step.instruction + ingredient_parser = IngredientParser(self.request, True) for ingredient in recipe_json['recipe_ingredient']: try: if ingredient['food']: - f = get_food(ingredient['food'], self.request.space) - u = get_unit(ingredient['unit'], self.request.space) + f = ingredient_parser.get_food(ingredient['food']) + u = ingredient_parser.get_unit(ingredient['unit']) amount = ingredient['quantity'] note = ingredient['note'] else: - amount, unit, ingredient, note = parse(ingredient['note']) - f = get_food(ingredient, self.request.space) - u = get_unit(unit, self.request.space) + amount, unit, ingredient, note = ingredient_parser.parse(ingredient['note']) + f = ingredient_parser.get_food(ingredient) + u = ingredient_parser.get_unit(unit) step.ingredients.add(Ingredient.objects.create( food=f, unit=u, amount=amount, note=note, space=self.request.space, )) - except: + except Exception: pass recipe.steps.add(step) @@ -59,7 +61,7 @@ class Mealie(Integration): import_zip = ZipFile(f['file']) try: self.import_recipe_image(recipe, BytesIO(import_zip.read(f'recipes/{recipe_json["slug"]}/images/min-original.webp')), filetype=get_filetype(f'recipes/{recipe_json["slug"]}/images/original')) - except: + except Exception: pass return recipe diff --git a/cookbook/integration/mealmaster.py b/cookbook/integration/mealmaster.py index 0baf4157..7b067b35 100644 --- a/cookbook/integration/mealmaster.py +++ b/cookbook/integration/mealmaster.py @@ -1,22 +1,17 @@ -import json import re -from io import BytesIO -from zipfile import ZipFile -from cookbook.helper.ingredient_parser import parse, get_food, get_unit +from cookbook.helper.ingredient_parser import IngredientParser from cookbook.integration.integration import Integration -from cookbook.models import Recipe, Step, Food, Unit, Ingredient, Keyword +from cookbook.models import Recipe, Step, Ingredient, Keyword class MealMaster(Integration): def get_recipe_from_file(self, file): - print('------------ getting recipe') servings = 1 ingredients = [] directions = [] for line in file.replace('\r', '').split('\n'): - print('testing line') if not line.startswith('MMMMM') and line.strip != '': if 'Title:' in line: title = line.replace('Title:', '').strip() @@ -47,11 +42,12 @@ class MealMaster(Integration): instruction='\n'.join(directions) + '\n\n', space=self.request.space, ) + ingredient_parser = IngredientParser(self.request, True) for ingredient in ingredients: if len(ingredient.strip()) > 0: - amount, unit, ingredient, note = parse(ingredient) - f = get_food(ingredient, self.request.space) - u = get_unit(unit, self.request.space) + amount, unit, ingredient, note = ingredient_parser.parse(ingredient) + f = ingredient_parser.get_food(ingredient) + u = ingredient_parser.get_unit(unit) step.ingredients.add(Ingredient.objects.create( food=f, unit=u, amount=amount, note=note, space=self.request.space, )) diff --git a/cookbook/integration/nextcloud_cookbook.py b/cookbook/integration/nextcloud_cookbook.py index 2e668f7e..882f1329 100644 --- a/cookbook/integration/nextcloud_cookbook.py +++ b/cookbook/integration/nextcloud_cookbook.py @@ -4,9 +4,9 @@ from io import BytesIO from zipfile import ZipFile from cookbook.helper.image_processing import get_filetype -from cookbook.helper.ingredient_parser import parse, get_food, get_unit +from cookbook.helper.ingredient_parser import IngredientParser from cookbook.integration.integration import Integration -from cookbook.models import Recipe, Step, Food, Unit, Ingredient +from cookbook.models import Recipe, Step, Ingredient class NextcloudCookbook(Integration): @@ -25,6 +25,7 @@ class NextcloudCookbook(Integration): servings=recipe_json['recipeYield'], space=self.request.space) # TODO parse times (given in PT2H3M ) + # @vabene check recipe_url_import.iso_duration_to_minutes I think it does what you are looking for # TODO parse keywords ingredients_added = False @@ -38,6 +39,7 @@ class NextcloudCookbook(Integration): ingredients_added = True + ingredient_parser = IngredientParser(self.request, True) for ingredient in recipe_json['recipeIngredient']: amount, unit, ingredient, note = parse(ingredient) f = get_food(ingredient, self.request.space) diff --git a/cookbook/integration/openeats.py b/cookbook/integration/openeats.py index e258becb..d948d90a 100644 --- a/cookbook/integration/openeats.py +++ b/cookbook/integration/openeats.py @@ -1,11 +1,8 @@ import json -import re -from django.utils.translation import gettext as _ - -from cookbook.helper.ingredient_parser import parse, get_food, get_unit +from cookbook.helper.ingredient_parser import IngredientParser from cookbook.integration.integration import Integration -from cookbook.models import Recipe, Step, Food, Unit, Ingredient +from cookbook.models import Recipe, Step, Ingredient class OpenEats(Integration): @@ -26,9 +23,10 @@ class OpenEats(Integration): step = Step.objects.create(instruction=instructions, space=self.request.space,) + ingredient_parser = IngredientParser(self.request, True) for ingredient in file['ingredients']: - f = get_food(ingredient['food'], self.request.space) - u = get_unit(ingredient['unit'], self.request.space) + f = ingredient_parser.get_food(ingredient['food']) + u = ingredient_parser.get_unit(ingredient['unit']) step.ingredients.add(Ingredient.objects.create( food=f, unit=u, amount=ingredient['amount'], space=self.request.space, )) diff --git a/cookbook/integration/paprika.py b/cookbook/integration/paprika.py index 6a8c5076..dcd5bfbe 100644 --- a/cookbook/integration/paprika.py +++ b/cookbook/integration/paprika.py @@ -4,7 +4,7 @@ import json import re from io import BytesIO -from cookbook.helper.ingredient_parser import parse, get_food, get_unit +from cookbook.helper.ingredient_parser import IngredientParser from cookbook.integration.integration import Integration from cookbook.models import Recipe, Step, Ingredient, Keyword from gettext import gettext as _ @@ -16,7 +16,7 @@ class Paprika(Integration): raise NotImplementedError('Method not implemented in storage integration') def get_recipe_from_file(self, file): - with gzip.open(file, 'r') as recipe_zip: + with gzip.open(file, 'r') as recipe_zip: recipe_json = json.loads(recipe_zip.read().decode("utf-8")) recipe = Recipe.objects.create( @@ -58,7 +58,7 @@ class Paprika(Integration): instruction=instructions, space=self.request.space, ) - if len(recipe_json['description'].strip()) > 500: + if 'description' in recipe_json and len(recipe_json['description'].strip()) > 500: step.instruction = recipe_json['description'].strip() + '\n\n' + step.instruction if 'categories' in recipe_json: @@ -66,12 +66,13 @@ class Paprika(Integration): keyword, created = Keyword.objects.get_or_create(name=c.strip(), space=self.request.space) recipe.keywords.add(keyword) + ingredient_parser = IngredientParser(self.request, True) try: for ingredient in recipe_json['ingredients'].split('\n'): if len(ingredient.strip()) > 0: - amount, unit, ingredient, note = parse(ingredient) - f = get_food(ingredient, self.request.space) - u = get_unit(unit, self.request.space) + amount, unit, ingredient, note = ingredient_parser.parse(ingredient) + f = ingredient_parser.get_food(ingredient) + u = ingredient_parser.get_unit(unit) step.ingredients.add(Ingredient.objects.create( food=f, unit=u, amount=amount, note=note, space=self.request.space, )) diff --git a/cookbook/integration/Pepperplate.py b/cookbook/integration/pepperplate.py similarity index 82% rename from cookbook/integration/Pepperplate.py rename to cookbook/integration/pepperplate.py index 76615570..4acc2d7b 100644 --- a/cookbook/integration/Pepperplate.py +++ b/cookbook/integration/pepperplate.py @@ -1,11 +1,6 @@ -import json -import re -from io import BytesIO -from zipfile import ZipFile - -from cookbook.helper.ingredient_parser import parse, get_food, get_unit +from cookbook.helper.ingredient_parser import IngredientParser from cookbook.integration.integration import Integration -from cookbook.models import Recipe, Step, Food, Unit, Ingredient, Keyword +from cookbook.models import Recipe, Step, Ingredient class Pepperplate(Integration): @@ -43,11 +38,12 @@ class Pepperplate(Integration): instruction='\n'.join(directions) + '\n\n', space=self.request.space, ) + ingredient_parser = IngredientParser(self.request, True) for ingredient in ingredients: if len(ingredient.strip()) > 0: - amount, unit, ingredient, note = parse(ingredient) - f = get_food(ingredient, self.request.space) - u = get_unit(unit, self.request.space) + amount, unit, ingredient, note = ingredient_parser.parse(ingredient) + f = ingredient_parser.get_food(ingredient) + u = ingredient_parser.get_unit(unit) step.ingredients.add(Ingredient.objects.create( food=f, unit=u, amount=amount, note=note, space=self.request.space, )) diff --git a/cookbook/integration/plantoeat.py b/cookbook/integration/plantoeat.py new file mode 100644 index 00000000..f679bcb0 --- /dev/null +++ b/cookbook/integration/plantoeat.py @@ -0,0 +1,94 @@ +from io import BytesIO + +import requests + +from cookbook.helper.ingredient_parser import IngredientParser +from cookbook.integration.integration import Integration +from cookbook.models import Recipe, Step, Ingredient, Keyword + + +class Plantoeat(Integration): + + def get_recipe_from_file(self, file): + ingredient_mode = False + direction_mode = False + + image_url = None + tags = None + ingredients = [] + directions = [] + description = '' + for line in file.replace('\r', '').split('\n'): + if line.strip() != '': + if 'Title:' in line: + title = line.replace('Title:', '').replace('"', '').strip() + if 'Description:' in line: + description = line.replace('Description:', '').strip() + if 'Source:' in line or 'Serves:' in line or 'Prep Time:' in line or 'Cook Time:' in line: + directions.append(line.strip() + '\n') + if 'Photo Url:' in line: + image_url = line.replace('Photo Url:', '').strip() + if 'Tags:' in line: + tags = line.replace('Tags:', '').strip() + if ingredient_mode: + if len(line) > 2 and 'Instructions:' not in line: + ingredients.append(line.strip()) + if direction_mode: + if len(line) > 2: + directions.append(line.strip() + '\n') + if 'Ingredients:' in line: + ingredient_mode = True + if 'Directions:' in line: + ingredient_mode = False + direction_mode = True + + recipe = Recipe.objects.create(name=title, description=description, created_by=self.request.user, internal=True, space=self.request.space) + + step = Step.objects.create( + instruction='\n'.join(directions) + '\n\n', space=self.request.space, + ) + + if tags: + for k in tags.split(','): + keyword, created = Keyword.objects.get_or_create(name=k.strip(), space=self.request.space) + recipe.keywords.add(keyword) + + ingredient_parser = IngredientParser(self.request, True) + for ingredient in ingredients: + if len(ingredient.strip()) > 0: + amount, unit, ingredient, note = ingredient_parser.parse(ingredient) + f = ingredient_parser.get_food(ingredient) + u = ingredient_parser.get_unit(unit) + step.ingredients.add(Ingredient.objects.create( + food=f, unit=u, amount=amount, note=note, space=self.request.space, + )) + recipe.steps.add(step) + + if image_url: + try: + response = requests.get(image_url) + self.import_recipe_image(recipe, BytesIO(response.content)) + except Exception as e: + print('failed to import image ', str(e)) + + return recipe + + def split_recipe_file(self, file): + recipe_list = [] + current_recipe = '' + + for fl in file.readlines(): + line = fl.decode("ANSI") + if line.startswith('--------------'): + if current_recipe != '': + recipe_list.append(current_recipe) + current_recipe = '' + else: + current_recipe = '' + else: + current_recipe += line + '\n' + + if current_recipe != '': + recipe_list.append(current_recipe) + + return recipe_list diff --git a/cookbook/integration/recettetek.py b/cookbook/integration/recettetek.py index c6443e0a..be1c5ae0 100644 --- a/cookbook/integration/recettetek.py +++ b/cookbook/integration/recettetek.py @@ -1,16 +1,14 @@ import re import json -import base64 import requests from io import BytesIO from zipfile import ZipFile import imghdr -from django.utils.translation import gettext as _ from cookbook.helper.image_processing import get_filetype -from cookbook.helper.ingredient_parser import parse, get_food, get_unit +from cookbook.helper.ingredient_parser import IngredientParser from cookbook.integration.integration import Integration -from cookbook.models import Recipe, Step, Food, Unit, Ingredient, Keyword +from cookbook.models import Recipe, Step, Ingredient, Keyword class RecetteTek(Integration): @@ -57,11 +55,12 @@ class RecetteTek(Integration): try: # Process the ingredients. Assumes 1 ingredient per line. + ingredient_parser = IngredientParser(self.request, True) for ingredient in file['ingredients'].split('\n'): if len(ingredient.strip()) > 0: - amount, unit, ingredient, note = parse(ingredient) - f = get_food(ingredient, self.request.space) - u = get_unit(unit, self.request.space) + amount, unit, ingredient, note = ingredient_parser.parse(ingredient) + f = ingredient_parser.get_food(ingredient) + u = ingredient_parser.get_unit(unit) step.ingredients.add(Ingredient.objects.create( food=f, unit=u, amount=amount, note=note, space=self.request.space, )) @@ -108,7 +107,7 @@ class RecetteTek(Integration): recipe.keywords.add(k) recipe.save() except Exception as e: - pass + print(recipe.name, ': failed to parse keywords ', str(e)) # TODO: Parse Nutritional Information @@ -123,7 +122,7 @@ class RecetteTek(Integration): else: if file['originalPicture'] != '': response = requests.get(file['originalPicture']) - if imghdr.what(BytesIO(response.content)) != None: + if imghdr.what(BytesIO(response.content)) is not None: self.import_recipe_image(recipe, BytesIO(response.content), filetype=get_filetype(file['originalPicture'])) else: raise Exception("Original image failed to download.") diff --git a/cookbook/integration/recipekeeper.py b/cookbook/integration/recipekeeper.py index f819a772..0de2ff8e 100644 --- a/cookbook/integration/recipekeeper.py +++ b/cookbook/integration/recipekeeper.py @@ -3,12 +3,10 @@ from bs4 import BeautifulSoup from io import BytesIO from zipfile import ZipFile -from django.utils.translation import gettext as _ - -from cookbook.helper.ingredient_parser import parse, get_food, get_unit +from cookbook.helper.ingredient_parser import IngredientParser from cookbook.helper.recipe_url_import import parse_servings, iso_duration_to_minutes from cookbook.integration.integration import Integration -from cookbook.models import Recipe, Step, Food, Unit, Ingredient, Keyword +from cookbook.models import Recipe, Step, Ingredient, Keyword class RecipeKeeper(Integration): @@ -43,12 +41,13 @@ class RecipeKeeper(Integration): step = Step.objects.create(instruction='', space=self.request.space,) + ingredient_parser = IngredientParser(self.request, True) for ingredient in file.find("div", {"itemprop": "recipeIngredients"}).findChildren("p"): if ingredient.text == "": continue - amount, unit, ingredient, note = parse(ingredient.text.strip()) - f = get_food(ingredient, self.request.space) - u = get_unit(unit, self.request.space) + amount, unit, ingredient, note = ingredient_parser.parse(ingredient.text.strip()) + f = ingredient_parser.get_food(ingredient) + u = ingredient_parser.get_unit(unit) step.ingredients.add(Ingredient.objects.create( food=f, unit=u, amount=amount, note=note, space=self.request.space, )) @@ -61,7 +60,6 @@ class RecipeKeeper(Integration): if file.find("span", {"itemprop": "recipeSource"}).text != '': step.instruction += "\n\nImported from: " + file.find("span", {"itemprop": "recipeSource"}).text step.save() - source_url_added = True recipe.steps.add(step) @@ -72,7 +70,7 @@ class RecipeKeeper(Integration): import_zip = ZipFile(f['file']) self.import_recipe_image(recipe, BytesIO(import_zip.read(file.find("img", class_="recipe-photo").get("src"))), filetype='.jpeg') except Exception as e: - pass + print(recipe.name, ': failed to import image ', str(e)) return recipe diff --git a/cookbook/integration/recipesage.py b/cookbook/integration/recipesage.py index a76a88fb..9c5f70ac 100644 --- a/cookbook/integration/recipesage.py +++ b/cookbook/integration/recipesage.py @@ -1,11 +1,9 @@ -import base64 import json from io import BytesIO import requests -from rest_framework.renderers import JSONRenderer -from cookbook.helper.ingredient_parser import parse, get_food, get_unit +from cookbook.helper.ingredient_parser import IngredientParser from cookbook.integration.integration import Integration from cookbook.models import Recipe, Step, Ingredient @@ -33,6 +31,7 @@ class RecipeSage(Integration): except Exception as e: print('failed to parse yield or time ', str(e)) + ingredient_parser = IngredientParser(self.request,True) ingredients_added = False for s in file['recipeInstructions']: step = Step.objects.create( @@ -42,9 +41,9 @@ class RecipeSage(Integration): ingredients_added = True for ingredient in file['recipeIngredient']: - amount, unit, ingredient, note = parse(ingredient) - f = get_food(ingredient, self.request.space) - u = get_unit(unit, self.request.space) + amount, unit, ingredient, note = ingredient_parser.parse(ingredient) + f = ingredient_parser.get_food(ingredient) + u = ingredient_parser.get_unit(unit) step.ingredients.add(Ingredient.objects.create( food=f, unit=u, amount=amount, note=note, space=self.request.space, )) diff --git a/cookbook/integration/rezkonv.py b/cookbook/integration/rezkonv.py index 51145f05..4ee8eb19 100644 --- a/cookbook/integration/rezkonv.py +++ b/cookbook/integration/rezkonv.py @@ -1,11 +1,6 @@ -import json -import re -from io import BytesIO -from zipfile import ZipFile - -from cookbook.helper.ingredient_parser import parse, get_food, get_unit +from cookbook.helper.ingredient_parser import IngredientParser from cookbook.integration.integration import Integration -from cookbook.models import Recipe, Step, Food, Unit, Ingredient, Keyword +from cookbook.models import Recipe, Step, Ingredient, Keyword class RezKonv(Integration): @@ -46,11 +41,12 @@ class RezKonv(Integration): instruction='\n'.join(directions) + '\n\n', space=self.request.space, ) + ingredient_parser = IngredientParser(self.request, True) for ingredient in ingredients: if len(ingredient.strip()) > 0: - amount, unit, ingredient, note = parse(ingredient) - f = get_food(ingredient, self.request.space) - u = get_unit(unit, self.request.space) + amount, unit, ingredient, note = ingredient_parser.parse(ingredient) + f = ingredient_parser.get_food(ingredient) + u = ingredient_parser.get_unit(unit) step.ingredients.add(Ingredient.objects.create( food=f, unit=u, amount=amount, note=note, space=self.request.space, )) diff --git a/cookbook/integration/safron.py b/cookbook/integration/safron.py index b0a30be3..fa7a793e 100644 --- a/cookbook/integration/safron.py +++ b/cookbook/integration/safron.py @@ -1,8 +1,8 @@ from django.utils.translation import gettext as _ -from cookbook.helper.ingredient_parser import parse, get_food, get_unit +from cookbook.helper.ingredient_parser import IngredientParser from cookbook.integration.integration import Integration -from cookbook.models import Recipe, Step, Food, Unit, Ingredient +from cookbook.models import Recipe, Step, Ingredient class Safron(Integration): @@ -43,12 +43,13 @@ class Safron(Integration): recipe = Recipe.objects.create(name=title, description=description, created_by=self.request.user, internal=True, space=self.request.space, ) - step = Step.objects.create(instruction='\n'.join(directions), space=self.request.space,) + step = Step.objects.create(instruction='\n'.join(directions), space=self.request.space, ) + ingredient_parser = IngredientParser(self.request, True) for ingredient in ingredients: - amount, unit, ingredient, note = parse(ingredient) - f = get_food(ingredient, self.request.space) - u = get_unit(unit, self.request.space) + amount, unit, ingredient, note = ingredient_parser.parse(ingredient) + f = ingredient_parser.get_food(ingredient) + u = ingredient_parser.get_unit(unit) step.ingredients.add(Ingredient.objects.create( food=f, unit=u, amount=amount, note=note, space=self.request.space, )) diff --git a/cookbook/locale/ca/LC_MESSAGES/django.mo b/cookbook/locale/ca/LC_MESSAGES/django.mo index 19d0f6ba..17840261 100644 Binary files a/cookbook/locale/ca/LC_MESSAGES/django.mo and b/cookbook/locale/ca/LC_MESSAGES/django.mo differ diff --git a/cookbook/locale/ca/LC_MESSAGES/django.po b/cookbook/locale/ca/LC_MESSAGES/django.po index c00fd1e7..1cb6b41a 100644 --- a/cookbook/locale/ca/LC_MESSAGES/django.po +++ b/cookbook/locale/ca/LC_MESSAGES/django.po @@ -13,7 +13,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-08-12 15:09+0200\n" +"POT-Creation-Date: 2021-09-13 22:40+0200\n" "PO-Revision-Date: 2020-06-02 19:28+0000\n" "Last-Translator: Miguel Canteras , 2021\n" "Language-Team: Catalan (https://www.transifex.com/django-recipes/" @@ -24,15 +24,14 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: .\cookbook\filters.py:23 .\cookbook\templates\base.html:98 -#: .\cookbook\templates\forms\edit_internal_recipe.html:269 +#: .\cookbook\filters.py:23 .\cookbook\templates\base.html:125 #: .\cookbook\templates\forms\ingredients.html:34 #: .\cookbook\templates\space.html:43 .\cookbook\templates\stats.html:28 -#: .\cookbook\templates\url_import.html:270 .\cookbook\views\lists.py:67 +#: .\cookbook\templates\url_import.html:270 msgid "Ingredients" msgstr "Ingredients" -#: .\cookbook\forms.py:49 +#: .\cookbook\forms.py:50 msgid "" "Color of the top navigation bar. Not all colors work with all themes, just " "try them out!" @@ -40,13 +39,13 @@ msgstr "" "Color de la barra de navegació superior. No tots els colors funcionen amb " "tots els temes, només cal provar-los." -#: .\cookbook\forms.py:51 +#: .\cookbook\forms.py:52 msgid "Default Unit to be used when inserting a new ingredient into a recipe." msgstr "" "Unitat per defecte que s'utilitzarà quan s'insereixi un ingredient nou en " "una recepta." -#: .\cookbook\forms.py:53 +#: .\cookbook\forms.py:54 msgid "" "Enables support for fractions in ingredient amounts (e.g. convert decimals " "to fractions automatically)" @@ -54,7 +53,7 @@ msgstr "" "Permet l'ús de fraccions de quantitats d'ingredients (p.ex.: converteix els " "decimals a fraccions automàticament)" -#: .\cookbook\forms.py:56 +#: .\cookbook\forms.py:57 msgid "" "Users with whom newly created meal plan/shopping list entries should be " "shared by default." @@ -62,19 +61,19 @@ msgstr "" "Els usuaris que han creat elements d'un pla de menjars/llistat de compra " "s'haurien de compartir per defecte." -#: .\cookbook\forms.py:58 +#: .\cookbook\forms.py:59 msgid "Show recently viewed recipes on search page." msgstr "Mostra les receptes vistes recentment a la pàgina de cerca." -#: .\cookbook\forms.py:59 +#: .\cookbook\forms.py:60 msgid "Number of decimals to round ingredients." msgstr "Nombre de decimals dels ingredients." -#: .\cookbook\forms.py:60 +#: .\cookbook\forms.py:61 msgid "If you want to be able to create and see comments underneath recipes." msgstr "Si vols poder crear i veure comentaris a sota de les receptes." -#: .\cookbook\forms.py:62 +#: .\cookbook\forms.py:63 msgid "" "Setting to 0 will disable auto sync. When viewing a shopping list the list " "is updated every set seconds to sync changes someone else might have made. " @@ -87,11 +86,11 @@ msgstr "" "diverses persones, però pot fer servir una mica de dades mòbils. Si és " "inferior al límit d’instància, es restablirà quan es desa." -#: .\cookbook\forms.py:65 +#: .\cookbook\forms.py:66 msgid "Makes the navbar stick to the top of the page." msgstr "" -#: .\cookbook\forms.py:81 +#: .\cookbook\forms.py:82 msgid "" "Both fields are optional. If none are given the username will be displayed " "instead" @@ -99,94 +98,91 @@ msgstr "" "Tots dos camps són opcionals. Si no se'n dóna cap, es mostrarà el nom " "d'usuari" -#: .\cookbook\forms.py:102 .\cookbook\forms.py:331 -#: .\cookbook\templates\forms\edit_internal_recipe.html:49 +#: .\cookbook\forms.py:103 .\cookbook\forms.py:334 #: .\cookbook\templates\url_import.html:154 msgid "Name" msgstr "Nom" -#: .\cookbook\forms.py:103 .\cookbook\forms.py:332 -#: .\cookbook\templates\base.html:108 .\cookbook\templates\base.html:169 -#: .\cookbook\templates\forms\edit_internal_recipe.html:85 +#: .\cookbook\forms.py:104 .\cookbook\forms.py:335 #: .\cookbook\templates\space.html:39 .\cookbook\templates\stats.html:24 #: .\cookbook\templates\url_import.html:188 -#: .\cookbook\templates\url_import.html:573 +#: .\cookbook\templates\url_import.html:573 .\cookbook\views\lists.py:112 msgid "Keywords" msgstr "Paraules clau" -#: .\cookbook\forms.py:104 +#: .\cookbook\forms.py:105 msgid "Preparation time in minutes" msgstr "Temps de preparació en minuts" -#: .\cookbook\forms.py:105 +#: .\cookbook\forms.py:106 msgid "Waiting time (cooking/baking) in minutes" msgstr "Temps d'espera (cocció/fornejat) en minuts" -#: .\cookbook\forms.py:106 .\cookbook\forms.py:333 +#: .\cookbook\forms.py:107 .\cookbook\forms.py:336 msgid "Path" msgstr "Ruta" -#: .\cookbook\forms.py:107 +#: .\cookbook\forms.py:108 msgid "Storage UID" msgstr "UID Emmagatzematge" -#: .\cookbook\forms.py:133 +#: .\cookbook\forms.py:134 msgid "Default" msgstr "Per defecte" -#: .\cookbook\forms.py:144 .\cookbook\templates\url_import.html:90 +#: .\cookbook\forms.py:145 .\cookbook\templates\url_import.html:90 msgid "" "To prevent duplicates recipes with the same name as existing ones are " "ignored. Check this box to import everything." msgstr "" -#: .\cookbook\forms.py:164 +#: .\cookbook\forms.py:165 msgid "New Unit" msgstr "Nova Unitat" -#: .\cookbook\forms.py:165 +#: .\cookbook\forms.py:166 msgid "New unit that other gets replaced by." msgstr "Nova unitat per la qual se substitueix una altra." -#: .\cookbook\forms.py:170 +#: .\cookbook\forms.py:171 msgid "Old Unit" msgstr "Unitat Antiga" -#: .\cookbook\forms.py:171 +#: .\cookbook\forms.py:172 msgid "Unit that should be replaced." msgstr "Unitat que s’hauria de substituir." -#: .\cookbook\forms.py:187 +#: .\cookbook\forms.py:189 msgid "New Food" msgstr "Menjar Nou" -#: .\cookbook\forms.py:188 +#: .\cookbook\forms.py:190 msgid "New food that other gets replaced by." msgstr "Nou menjar que altres substitueixen." -#: .\cookbook\forms.py:193 +#: .\cookbook\forms.py:195 msgid "Old Food" msgstr "Antic Menjar" -#: .\cookbook\forms.py:194 +#: .\cookbook\forms.py:196 msgid "Food that should be replaced." msgstr "Menjar que s’hauria de substituir." -#: .\cookbook\forms.py:212 +#: .\cookbook\forms.py:214 msgid "Add your comment: " msgstr "Afegir el teu comentari:" -#: .\cookbook\forms.py:253 +#: .\cookbook\forms.py:256 msgid "Leave empty for dropbox and enter app password for nextcloud." msgstr "" "Deixeu-lo buit per a Dropbox i introduïu la contrasenya de l'aplicació per a " "nextcloud." -#: .\cookbook\forms.py:260 +#: .\cookbook\forms.py:263 msgid "Leave empty for nextcloud and enter api token for dropbox." msgstr "Deixeu-lo buit per a nextcloud i introduïu el token API per a Dropbox." -#: .\cookbook\forms.py:269 +#: .\cookbook\forms.py:272 msgid "" "Leave empty for dropbox and enter only base url for nextcloud (/remote." "php/webdav/ is added automatically)" @@ -194,26 +190,25 @@ msgstr "" "Deixeu-lo buit per a Dropbox i introduïu només l'URL base per a nextcloud " "(/remote.php/webdav/ s'afegeix automàticament)" -#: .\cookbook\forms.py:307 +#: .\cookbook\forms.py:310 msgid "Search String" msgstr "Cerca Cadena" -#: .\cookbook\forms.py:334 +#: .\cookbook\forms.py:337 msgid "File ID" msgstr "ID d'Arxiu" -#: .\cookbook\forms.py:370 +#: .\cookbook\forms.py:373 msgid "You must provide at least a recipe or a title." msgstr "Has de proporcionar com a mínim una recepta o un títol." -#: .\cookbook\forms.py:383 +#: .\cookbook\forms.py:386 msgid "You can list default users to share recipes with in the settings." msgstr "" "Podeu llistar els usuaris predeterminats amb els quals voleu compartir " "receptes a la configuració." -#: .\cookbook\forms.py:384 -#: .\cookbook\templates\forms\edit_internal_recipe.html:427 +#: .\cookbook\forms.py:387 msgid "" "You can use markdown to format this field. See the docs here" @@ -221,64 +216,140 @@ msgstr "" "Podeu utilitzar el marcador per donar format a aquest camp. Consulteu els documents aquí " -#: .\cookbook\forms.py:409 +#: .\cookbook\forms.py:412 msgid "Maximum number of users for this space reached." msgstr "" -#: .\cookbook\forms.py:415 +#: .\cookbook\forms.py:418 msgid "Email address already taken!" msgstr "" -#: .\cookbook\forms.py:423 +#: .\cookbook\forms.py:426 msgid "" "An email address is not required but if present the invite link will be send " "to the user." msgstr "" -#: .\cookbook\forms.py:438 +#: .\cookbook\forms.py:441 msgid "Name already taken." msgstr "" -#: .\cookbook\forms.py:449 +#: .\cookbook\forms.py:452 msgid "Accept Terms and Privacy" msgstr "" +#: .\cookbook\forms.py:487 +msgid "" +"Select type method of search. Click here for " +"full desciption of choices." +msgstr "" + +#: .\cookbook\forms.py:488 +msgid "" +"Use fuzzy matching on units, keywords and ingredients when editing and " +"importing recipes." +msgstr "" + +#: .\cookbook\forms.py:489 +msgid "" +"Fields to search ignoring accents. Selecting this option can improve or " +"degrade search quality depending on language" +msgstr "" + +#: .\cookbook\forms.py:490 +msgid "" +"Fields to search for partial matches. (e.g. searching for 'Pie' will return " +"'pie' and 'piece' and 'soapie')" +msgstr "" + +#: .\cookbook\forms.py:491 +msgid "" +"Fields to search for beginning of word matches. (e.g. searching for 'sa' " +"will return 'salad' and 'sandwich')" +msgstr "" + +#: .\cookbook\forms.py:492 +msgid "" +"Fields to 'fuzzy' search. (e.g. searching for 'recpie' will find 'recipe'.) " +"Note: this option will conflict with 'web' and 'raw' methods of search." +msgstr "" + +#: .\cookbook\forms.py:493 +msgid "" +"Fields to full text search. Note: 'web', 'phrase', and 'raw' search methods " +"only function with fulltext fields." +msgstr "" + +#: .\cookbook\forms.py:497 +#, fuzzy +#| msgid "Search" +msgid "Search Method" +msgstr "Cerca" + +#: .\cookbook\forms.py:498 +msgid "Fuzzy Lookups" +msgstr "" + +#: .\cookbook\forms.py:499 +msgid "Ignore Accent" +msgstr "" + +#: .\cookbook\forms.py:500 +msgid "Partial Match" +msgstr "" + +#: .\cookbook\forms.py:501 +msgid "Starts Wtih" +msgstr "" + +#: .\cookbook\forms.py:502 +#, fuzzy +#| msgid "Search" +msgid "Fuzzy Search" +msgstr "Cerca" + +#: .\cookbook\forms.py:503 +#, fuzzy +#| msgid "Text" +msgid "Full Text" +msgstr "Text" + #: .\cookbook\helper\AllAuthCustomAdapter.py:36 msgid "" "In order to prevent spam, the requested email was not send. Please wait a " "few minutes and try again." msgstr "" -#: .\cookbook\helper\permission_helper.py:138 -#: .\cookbook\helper\permission_helper.py:161 .\cookbook\views\views.py:151 +#: .\cookbook\helper\permission_helper.py:136 +#: .\cookbook\helper\permission_helper.py:159 .\cookbook\views\views.py:150 msgid "You are not logged in and therefore cannot view this page!" msgstr "No heu iniciat la sessió i, per tant, no podeu veure aquesta pàgina." -#: .\cookbook\helper\permission_helper.py:142 -#: .\cookbook\helper\permission_helper.py:148 -#: .\cookbook\helper\permission_helper.py:173 -#: .\cookbook\helper\permission_helper.py:218 -#: .\cookbook\helper\permission_helper.py:232 -#: .\cookbook\helper\permission_helper.py:243 -#: .\cookbook\helper\permission_helper.py:254 .\cookbook\views\data.py:40 -#: .\cookbook\views\views.py:162 .\cookbook\views\views.py:169 -#: .\cookbook\views\views.py:259 +#: .\cookbook\helper\permission_helper.py:140 +#: .\cookbook\helper\permission_helper.py:146 +#: .\cookbook\helper\permission_helper.py:171 +#: .\cookbook\helper\permission_helper.py:216 +#: .\cookbook\helper\permission_helper.py:230 +#: .\cookbook\helper\permission_helper.py:241 +#: .\cookbook\helper\permission_helper.py:252 .\cookbook\views\data.py:40 +#: .\cookbook\views\views.py:161 .\cookbook\views\views.py:168 +#: .\cookbook\views\views.py:245 msgid "You do not have the required permissions to view this page!" msgstr "No teniu els permisos necessaris per veure aquesta pàgina!" -#: .\cookbook\helper\permission_helper.py:166 -#: .\cookbook\helper\permission_helper.py:189 -#: .\cookbook\helper\permission_helper.py:204 +#: .\cookbook\helper\permission_helper.py:164 +#: .\cookbook\helper\permission_helper.py:187 +#: .\cookbook\helper\permission_helper.py:202 msgid "You cannot interact with this object as it is not owned by you!" msgstr "" "No pots interaccionar amb aquest objecte ja que no és de la teva propietat!" -#: .\cookbook\helper\template_helper.py:60 -#: .\cookbook\helper\template_helper.py:62 +#: .\cookbook\helper\template_helper.py:61 +#: .\cookbook\helper\template_helper.py:63 msgid "Could not parse template code." msgstr "" -#: .\cookbook\integration\integration.py:104 +#: .\cookbook\integration\integration.py:119 #: .\cookbook\templates\import.html:14 .\cookbook\templates\import.html:20 #: .\cookbook\templates\import_response.html:7 #: .\cookbook\templates\test.html:14 .\cookbook\templates\test.html:20 @@ -287,27 +358,27 @@ msgstr "" #: .\cookbook\templates\url_import.html:123 #: .\cookbook\templates\url_import.html:317 #: .\cookbook\templates\url_import.html:604 .\cookbook\views\delete.py:60 -#: .\cookbook\views\edit.py:199 +#: .\cookbook\views\edit.py:197 msgid "Import" msgstr "Importar" -#: .\cookbook\integration\integration.py:185 +#: .\cookbook\integration\integration.py:200 msgid "" "Importer expected a .zip file. Did you choose the correct importer type for " "your data ?" msgstr "" -#: .\cookbook\integration\integration.py:188 +#: .\cookbook\integration\integration.py:203 msgid "" "An unexpected error occurred during the import. Please make sure you have " "uploaded a valid file." msgstr "" -#: .\cookbook\integration\integration.py:192 +#: .\cookbook\integration\integration.py:208 msgid "The following recipes were ignored because they already existed:" msgstr "" -#: .\cookbook\integration\integration.py:196 +#: .\cookbook\integration\integration.py:212 #, fuzzy, python-format #| msgid "Imported new recipe!" msgid "Imported %s recipes." @@ -330,7 +401,6 @@ msgid "Source" msgstr "" #: .\cookbook\integration\safron.py:23 -#: .\cookbook\templates\forms\edit_internal_recipe.html:79 #: .\cookbook\templates\include\log_cooking.html:16 #: .\cookbook\templates\url_import.html:224 #: .\cookbook\templates\url_import.html:455 @@ -342,7 +412,6 @@ msgid "Waiting time" msgstr "Temps d'espera" #: .\cookbook\integration\safron.py:27 -#: .\cookbook\templates\forms\edit_internal_recipe.html:73 msgid "Preparation Time" msgstr "Temps de preparació" @@ -356,6 +425,22 @@ msgstr "Receptari" msgid "Section" msgstr "Secció" +#: .\cookbook\management\commands\rebuildindex.py:14 +msgid "Rebuilds full text search index on Recipe" +msgstr "" + +#: .\cookbook\management\commands\rebuildindex.py:18 +msgid "Only Postgress databases use full text search, no index to rebuild" +msgstr "" + +#: .\cookbook\management\commands\rebuildindex.py:29 +msgid "Recipe index rebuild complete." +msgstr "" + +#: .\cookbook\management\commands\rebuildindex.py:31 +msgid "Recipe index rebuild failed." +msgstr "" + #: .\cookbook\migrations\0047_auto_20200602_1133.py:14 msgid "Breakfast" msgstr "Esmorzar" @@ -372,78 +457,91 @@ msgstr "Sopar" msgid "Other" msgstr "Un altre" -#: .\cookbook\models.py:72 +#: .\cookbook\models.py:144 msgid "" "Maximum file storage for space in MB. 0 for unlimited, -1 to disable file " "upload." msgstr "" -#: .\cookbook\models.py:123 .\cookbook\templates\search.html:7 +#: .\cookbook\models.py:196 .\cookbook\templates\search.html:7 #: .\cookbook\templates\shopping_list.html:52 msgid "Search" msgstr "Cerca" -#: .\cookbook\models.py:124 .\cookbook\templates\base.html:92 +#: .\cookbook\models.py:197 .\cookbook\templates\base.html:82 #: .\cookbook\templates\meal_plan.html:5 .\cookbook\views\delete.py:152 -#: .\cookbook\views\edit.py:233 .\cookbook\views\new.py:201 +#: .\cookbook\views\edit.py:231 .\cookbook\views\new.py:200 msgid "Meal-Plan" msgstr "Plans de Menjar" -#: .\cookbook\models.py:125 .\cookbook\templates\base.html:89 +#: .\cookbook\models.py:198 .\cookbook\templates\base.html:90 msgid "Books" msgstr "Receptes" -#: .\cookbook\models.py:133 +#: .\cookbook\models.py:206 msgid "Small" msgstr "Petit" -#: .\cookbook\models.py:133 +#: .\cookbook\models.py:206 msgid "Large" msgstr "Gran" -#: .\cookbook\models.py:133 .\cookbook\templates\generic\new_template.html:6 +#: .\cookbook\models.py:206 .\cookbook\templates\generic\new_template.html:6 #: .\cookbook\templates\generic\new_template.html:14 #: .\cookbook\templates\meal_plan.html:323 msgid "New" msgstr "Nova" -#: .\cookbook\models.py:338 -#: .\cookbook\templates\forms\edit_internal_recipe.html:202 +#: .\cookbook\models.py:389 +msgid " is part of a recipe step and cannot be deleted" +msgstr "" + +#: .\cookbook\models.py:429 msgid "Text" msgstr "Text" -#: .\cookbook\models.py:338 -#: .\cookbook\templates\forms\edit_internal_recipe.html:203 +#: .\cookbook\models.py:429 msgid "Time" msgstr "Temps" -#: .\cookbook\models.py:338 -#: .\cookbook\templates\forms\edit_internal_recipe.html:204 -#: .\cookbook\templates\forms\edit_internal_recipe.html:219 +#: .\cookbook\models.py:429 #, fuzzy #| msgid "File ID" msgid "File" msgstr "ID d'Arxiu" -#: .\cookbook\models.py:338 -#: .\cookbook\templates\forms\edit_internal_recipe.html:205 -#: .\cookbook\templates\forms\edit_internal_recipe.html:241 +#: .\cookbook\models.py:429 #: .\cookbook\templates\include\recipe_open_modal.html:7 #: .\cookbook\templates\meal_plan.html:247 .\cookbook\views\delete.py:28 -#: .\cookbook\views\edit.py:273 .\cookbook\views\new.py:52 +#: .\cookbook\views\edit.py:271 .\cookbook\views\new.py:52 msgid "Recipe" msgstr "Recepta" -#: .\cookbook\serializer.py:109 +#: .\cookbook\models.py:836 .\cookbook\templates\search_info.html:28 +msgid "Simple" +msgstr "" + +#: .\cookbook\models.py:837 .\cookbook\templates\search_info.html:33 +msgid "Phrase" +msgstr "" + +#: .\cookbook\models.py:838 .\cookbook\templates\search_info.html:38 +msgid "Web" +msgstr "" + +#: .\cookbook\models.py:839 .\cookbook\templates\search_info.html:47 +msgid "Raw" +msgstr "" + +#: .\cookbook\serializer.py:112 msgid "File uploads are not enabled for this Space." msgstr "" -#: .\cookbook\serializer.py:117 +#: .\cookbook\serializer.py:125 msgid "You have reached your file upload limit." msgstr "" -#: .\cookbook\tables.py:35 .\cookbook\templates\books.html:36 -#: .\cookbook\templates\generic\edit_template.html:6 +#: .\cookbook\tables.py:35 .\cookbook\templates\generic\edit_template.html:6 #: .\cookbook\templates\generic\edit_template.html:14 #: .\cookbook\templates\meal_plan.html:281 #: .\cookbook\templates\recipes_table.html:82 @@ -452,11 +550,10 @@ msgstr "" msgid "Edit" msgstr "Edita" -#: .\cookbook\tables.py:124 .\cookbook\tables.py:147 -#: .\cookbook\templates\books.html:38 +#: .\cookbook\tables.py:115 .\cookbook\tables.py:138 #: .\cookbook\templates\generic\delete_template.html:5 #: .\cookbook\templates\generic\delete_template.html:13 -#: .\cookbook\templates\generic\edit_template.html:27 +#: .\cookbook\templates\generic\edit_template.html:28 #: .\cookbook\templates\meal_plan.html:277 #: .\cookbook\templates\recipes_table.html:90 msgid "Delete" @@ -486,7 +583,7 @@ msgstr "" #: .\cookbook\templates\account\email.html:12 #: .\cookbook\templates\account\password_change.html:11 #: .\cookbook\templates\account\password_set.html:11 -#: .\cookbook\templates\base.html:154 .\cookbook\templates\settings.html:6 +#: .\cookbook\templates\base.html:204 .\cookbook\templates\settings.html:6 #: .\cookbook\templates\settings.html:17 #: .\cookbook\templates\socialaccount\connections.html:10 msgid "Settings" @@ -566,7 +663,7 @@ msgid "" msgstr "" #: .\cookbook\templates\account\email_confirm.html:22 -#: .\cookbook\templates\generic\delete_template.html:21 +#: .\cookbook\templates\generic\delete_template.html:22 msgid "Confirm" msgstr "Confirma" @@ -578,7 +675,7 @@ msgid "" "request." msgstr "" -#: .\cookbook\templates\account\login.html:8 .\cookbook\templates\base.html:189 +#: .\cookbook\templates\account\login.html:8 .\cookbook\templates\base.html:234 msgid "Login" msgstr "Iniciar Sessió" @@ -633,7 +730,7 @@ msgstr "Canvis desats!" #: .\cookbook\templates\account\password_change.html:12 #: .\cookbook\templates\account\password_set.html:12 -#: .\cookbook\templates\settings.html:52 +#: .\cookbook\templates\settings.html:64 #, fuzzy #| msgid "Settings" msgid "Password" @@ -719,103 +816,88 @@ msgstr "" msgid "We are sorry, but the sign up is currently closed." msgstr "" -#: .\cookbook\templates\api_info.html:5 .\cookbook\templates\base.html:179 +#: .\cookbook\templates\api_info.html:5 .\cookbook\templates\base.html:222 #: .\cookbook\templates\rest_framework\api.html:11 msgid "API Documentation" msgstr "Documentació API " -#: .\cookbook\templates\base.html:85 -msgid "Utensils" -msgstr "Estris" - -#: .\cookbook\templates\base.html:95 +#: .\cookbook\templates\base.html:86 msgid "Shopping" msgstr "Compres" -#: .\cookbook\templates\base.html:101 +#: .\cookbook\templates\base.html:113 +msgid "Keyword" +msgstr "Paraula Clau" + +#: .\cookbook\templates\base.html:137 +#: .\cookbook\templates\forms\ingredients.html:24 +#: .\cookbook\templates\space.html:41 .\cookbook\templates\stats.html:26 +#: .\cookbook\views\lists.py:146 +msgid "Units" +msgstr "Unitats" + +#: .\cookbook\templates\base.html:151 #: .\cookbook\templates\shopping_list.html:230 #: .\cookbook\templates\supermarket.html:7 msgid "Supermarket" msgstr "Supermercat" -#: .\cookbook\templates\base.html:112 .\cookbook\views\delete.py:84 -#: .\cookbook\views\edit.py:102 .\cookbook\views\lists.py:26 -#: .\cookbook\views\new.py:78 -msgid "Keyword" -msgstr "Paraula Clau" - -#: .\cookbook\templates\base.html:114 +#: .\cookbook\templates\base.html:163 msgid "Batch Edit" msgstr "Edició per lots" -#: .\cookbook\templates\base.html:119 -msgid "Storage Data" -msgstr "Emmagatzematge de dades" - -#: .\cookbook\templates\base.html:123 -msgid "Storage Backends" -msgstr "Backends d'emmagatzematge" - -#: .\cookbook\templates\base.html:125 -msgid "Configure Sync" -msgstr "Configurar Sync" - -#: .\cookbook\templates\base.html:127 -msgid "Discovered Recipes" -msgstr "Receptes Descobertes" - -#: .\cookbook\templates\base.html:129 -msgid "Discovery Log" -msgstr "Registre de descobriment" - -#: .\cookbook\templates\base.html:131 .\cookbook\templates\stats.html:10 -msgid "Statistics" -msgstr "Estadístiques" - -#: .\cookbook\templates\base.html:133 -msgid "Units & Ingredients" -msgstr "Unitats i ingredients" - -#: .\cookbook\templates\base.html:135 .\cookbook\templates\index.html:47 -msgid "Import Recipe" -msgstr "Importa recepta" - -#: .\cookbook\templates\base.html:156 .\cookbook\templates\history.html:6 +#: .\cookbook\templates\base.html:175 .\cookbook\templates\history.html:6 #: .\cookbook\templates\history.html:14 msgid "History" msgstr "Historial" -#: .\cookbook\templates\base.html:159 .\cookbook\templates\space.html:7 +#: .\cookbook\templates\base.html:191 .\cookbook\templates\index.html:47 +msgid "Import Recipe" +msgstr "Importa recepta" + +#: .\cookbook\templates\base.html:193 +#: .\cookbook\templates\shopping_list.html:188 +#: .\cookbook\templates\shopping_list.html:210 +msgid "Create" +msgstr "Crea" + +#: .\cookbook\templates\base.html:207 .\cookbook\templates\space.html:7 #: .\cookbook\templates\space.html:19 #, fuzzy #| msgid "Settings" msgid "Space Settings" msgstr "Opcions" -#: .\cookbook\templates\base.html:163 .\cookbook\templates\system.html:13 +#: .\cookbook\templates\base.html:212 .\cookbook\templates\system.html:13 msgid "System" msgstr "Sistema" -#: .\cookbook\templates\base.html:165 .\cookbook\templates\base.html:171 +#: .\cookbook\templates\base.html:214 msgid "Admin" msgstr "Admin" -#: .\cookbook\templates\base.html:175 +#: .\cookbook\templates\base.html:218 msgid "Markdown Guide" msgstr "Guia Markdown" -#: .\cookbook\templates\base.html:177 +#: .\cookbook\templates\base.html:220 msgid "GitHub" msgstr "GitHub" -#: .\cookbook\templates\base.html:181 +#: .\cookbook\templates\base.html:224 msgid "API Browser" msgstr "Navegador API" -#: .\cookbook\templates\base.html:184 +#: .\cookbook\templates\base.html:227 msgid "Log out" msgstr "" +#: .\cookbook\templates\base.html:229 +#: .\cookbook\templates\generic\list_template.html:14 +#: .\cookbook\templates\space.html:58 .\cookbook\templates\stats.html:43 +msgid "External Recipes" +msgstr "Receptes Externes" + #: .\cookbook\templates\batch\edit.html:6 msgid "Batch edit Category" msgstr "Edició per lots de Categoria" @@ -830,7 +912,7 @@ msgstr "" "Afegiu les paraules clau especificades a totes les receptes que continguin " "la paraula" -#: .\cookbook\templates\batch\monitor.html:6 .\cookbook\views\edit.py:85 +#: .\cookbook\templates\batch\monitor.html:6 .\cookbook\views\edit.py:83 msgid "Sync" msgstr "Sync" @@ -850,10 +932,26 @@ msgstr "" msgid "The path must be in the following format" msgstr "El camí ha de tenir el format següent" -#: .\cookbook\templates\batch\monitor.html:27 +#: .\cookbook\templates\batch\monitor.html:21 +msgid "Manage External Storage" +msgstr "" + +#: .\cookbook\templates\batch\monitor.html:28 msgid "Sync Now!" msgstr "Sincronitza Ara!" +#: .\cookbook\templates\batch\monitor.html:29 +#, fuzzy +#| msgid "Shopping Recipes" +msgid "Show Recipes" +msgstr "Llista de Compra de Receptes" + +#: .\cookbook\templates\batch\monitor.html:30 +#, fuzzy +#| msgid "Show Links" +msgid "Show Log" +msgstr "Mostra Enllaços" + #: .\cookbook\templates\batch\waiting.html:4 #: .\cookbook\templates\batch\waiting.html:10 msgid "Importing Recipes" @@ -867,32 +965,10 @@ msgstr "" "Això pot trigar uns minuts, en funció del nombre de receptes sincronitzades, " "espereu." -#: .\cookbook\templates\books.html:5 .\cookbook\templates\books.html:11 +#: .\cookbook\templates\books.html:7 msgid "Recipe Books" msgstr "Llibres de Receptes" -#: .\cookbook\templates\books.html:15 -msgid "New Book" -msgstr "Nou Llibre" - -#: .\cookbook\templates\books.html:27 .\cookbook\templates\recipe_view.html:26 -msgid "by" -msgstr "per" - -#: .\cookbook\templates\books.html:34 -msgid "Toggle Recipes" -msgstr "Commuta Receptes" - -#: .\cookbook\templates\books.html:54 -#: .\cookbook\templates\meal_plan_entry.html:48 -#: .\cookbook\templates\recipes_table.html:64 -msgid "Last cooked" -msgstr "Darrera cocció" - -#: .\cookbook\templates\books.html:71 -msgid "There are no recipes in this book yet." -msgstr "Encara no hi ha receptes en aquest llibre." - #: .\cookbook\templates\export.html:6 .\cookbook\templates\test2.html:6 msgid "Export Recipes" msgstr "Exporta Receptes" @@ -915,217 +991,21 @@ msgid "Import new Recipe" msgstr "Importa nova Recepta" #: .\cookbook\templates\forms\edit_import_recipe.html:14 -#: .\cookbook\templates\forms\edit_internal_recipe.html:439 -#: .\cookbook\templates\forms\edit_internal_recipe.html:471 #: .\cookbook\templates\generic\edit_template.html:23 #: .\cookbook\templates\generic\new_template.html:23 #: .\cookbook\templates\include\log_cooking.html:28 #: .\cookbook\templates\meal_plan.html:325 -#: .\cookbook\templates\settings.html:46 .\cookbook\templates\settings.html:87 -#: .\cookbook\templates\settings.html:105 +#: .\cookbook\templates\settings.html:58 .\cookbook\templates\settings.html:99 +#: .\cookbook\templates\settings.html:117 +#: .\cookbook\templates\settings.html:162 #: .\cookbook\templates\shopping_list.html:353 msgid "Save" msgstr "Desa" #: .\cookbook\templates\forms\edit_internal_recipe.html:7 -#: .\cookbook\templates\forms\edit_internal_recipe.html:34 msgid "Edit Recipe" msgstr "Edita Recepta" -#: .\cookbook\templates\forms\edit_internal_recipe.html:56 -#: .\cookbook\templates\url_import.html:171 -msgid "Description" -msgstr "" - -#: .\cookbook\templates\forms\edit_internal_recipe.html:76 -msgid "Waiting Time" -msgstr "Temps d'Espera" - -#: .\cookbook\templates\forms\edit_internal_recipe.html:82 -msgid "Servings Text" -msgstr "" - -#: .\cookbook\templates\forms\edit_internal_recipe.html:93 -msgid "Select Keywords" -msgstr "Selecciona Paraules clau" - -#: .\cookbook\templates\forms\edit_internal_recipe.html:94 -#: .\cookbook\templates\url_import.html:583 -#, fuzzy -#| msgid "All Keywords" -msgid "Add Keyword" -msgstr "Totes les paraules clau" - -#: .\cookbook\templates\forms\edit_internal_recipe.html:112 -msgid "Nutrition" -msgstr "Nutrició" - -#: .\cookbook\templates\forms\edit_internal_recipe.html:116 -#: .\cookbook\templates\forms\edit_internal_recipe.html:166 -msgid "Delete Step" -msgstr "Esborra Pas" - -#: .\cookbook\templates\forms\edit_internal_recipe.html:120 -msgid "Calories" -msgstr "Calories" - -#: .\cookbook\templates\forms\edit_internal_recipe.html:123 -msgid "Carbohydrates" -msgstr "Hidrats de carboni" - -#: .\cookbook\templates\forms\edit_internal_recipe.html:126 -msgid "Fats" -msgstr "Greixos" - -#: .\cookbook\templates\forms\edit_internal_recipe.html:128 -msgid "Proteins" -msgstr "Proteïnes" - -#: .\cookbook\templates\forms\edit_internal_recipe.html:150 -#: .\cookbook\templates\forms\edit_internal_recipe.html:504 -msgid "Step" -msgstr "Pas" - -#: .\cookbook\templates\forms\edit_internal_recipe.html:171 -msgid "Show as header" -msgstr "Mostra com a capçalera" - -#: .\cookbook\templates\forms\edit_internal_recipe.html:177 -msgid "Hide as header" -msgstr "Amaga com a capçalera" - -#: .\cookbook\templates\forms\edit_internal_recipe.html:182 -msgid "Move Up" -msgstr "Mou Amunt" - -#: .\cookbook\templates\forms\edit_internal_recipe.html:187 -msgid "Move Down" -msgstr "Mou Avall" - -#: .\cookbook\templates\forms\edit_internal_recipe.html:196 -msgid "Step Name" -msgstr "Nom del Pas" - -#: .\cookbook\templates\forms\edit_internal_recipe.html:200 -msgid "Step Type" -msgstr "Tipus de Pas" - -#: .\cookbook\templates\forms\edit_internal_recipe.html:213 -msgid "Step time in Minutes" -msgstr "Temps de pas en Minuts" - -#: .\cookbook\templates\forms\edit_internal_recipe.html:229 -#, fuzzy -#| msgid "Select one" -msgid "Select File" -msgstr "Sel·lecciona un" - -#: .\cookbook\templates\forms\edit_internal_recipe.html:230 -#: .\cookbook\templates\forms\edit_internal_recipe.html:252 -#: .\cookbook\templates\forms\edit_internal_recipe.html:313 -#: .\cookbook\templates\forms\edit_internal_recipe.html:337 -#: .\cookbook\templates\shopping_list.html:189 -#: .\cookbook\templates\shopping_list.html:211 -#: .\cookbook\templates\shopping_list.html:241 -#: .\cookbook\templates\shopping_list.html:265 -#: .\cookbook\templates\url_import.html:495 -#: .\cookbook\templates\url_import.html:527 -msgid "Select" -msgstr "Selecciona" - -#: .\cookbook\templates\forms\edit_internal_recipe.html:251 -#, fuzzy -#| msgid "Delete Recipe" -msgid "Select Recipe" -msgstr "Esborra Recepta" - -#: .\cookbook\templates\forms\edit_internal_recipe.html:311 -#: .\cookbook\templates\shopping_list.html:187 -msgid "Select Unit" -msgstr "Selecciona Unitat" - -#: .\cookbook\templates\forms\edit_internal_recipe.html:312 -#: .\cookbook\templates\forms\edit_internal_recipe.html:336 -#: .\cookbook\templates\shopping_list.html:188 -#: .\cookbook\templates\shopping_list.html:210 -msgid "Create" -msgstr "Crea" - -#: .\cookbook\templates\forms\edit_internal_recipe.html:335 -#: .\cookbook\templates\shopping_list.html:209 -msgid "Select Food" -msgstr "Selecciona Menjar" - -#: .\cookbook\templates\forms\edit_internal_recipe.html:352 -#: .\cookbook\templates\meal_plan.html:256 -#: .\cookbook\templates\url_import.html:542 -msgid "Note" -msgstr "Nota" - -#: .\cookbook\templates\forms\edit_internal_recipe.html:369 -msgid "Delete Ingredient" -msgstr "Esborra Ingredient" - -#: .\cookbook\templates\forms\edit_internal_recipe.html:375 -msgid "Make Header" -msgstr "Crea Capçalera" - -#: .\cookbook\templates\forms\edit_internal_recipe.html:381 -msgid "Make Ingredient" -msgstr "Crea Ingredient" - -#: .\cookbook\templates\forms\edit_internal_recipe.html:387 -msgid "Disable Amount" -msgstr "Deshabilita Quantitat" - -#: .\cookbook\templates\forms\edit_internal_recipe.html:393 -msgid "Enable Amount" -msgstr "Habilita Quantitat" - -#: .\cookbook\templates\forms\edit_internal_recipe.html:398 -msgid "Copy Template Reference" -msgstr "" - -#: .\cookbook\templates\forms\edit_internal_recipe.html:424 -#: .\cookbook\templates\url_import.html:297 -#: .\cookbook\templates\url_import.html:567 -msgid "Instructions" -msgstr "Instruccions" - -#: .\cookbook\templates\forms\edit_internal_recipe.html:437 -#: .\cookbook\templates\forms\edit_internal_recipe.html:468 -msgid "Save & View" -msgstr "Desa i Comprova" - -#: .\cookbook\templates\forms\edit_internal_recipe.html:441 -#: .\cookbook\templates\forms\edit_internal_recipe.html:474 -msgid "Add Step" -msgstr "Afegir Pas" - -#: .\cookbook\templates\forms\edit_internal_recipe.html:444 -#: .\cookbook\templates\forms\edit_internal_recipe.html:478 -msgid "Add Nutrition" -msgstr "Afegeix nutrients" - -#: .\cookbook\templates\forms\edit_internal_recipe.html:446 -#: .\cookbook\templates\forms\edit_internal_recipe.html:480 -msgid "Remove Nutrition" -msgstr "Elimina nutrients" - -#: .\cookbook\templates\forms\edit_internal_recipe.html:448 -#: .\cookbook\templates\forms\edit_internal_recipe.html:483 -msgid "View Recipe" -msgstr "Veure Recepta" - -#: .\cookbook\templates\forms\edit_internal_recipe.html:450 -#: .\cookbook\templates\forms\edit_internal_recipe.html:485 -msgid "Delete Recipe" -msgstr "Esborra Recepta" - -#: .\cookbook\templates\forms\edit_internal_recipe.html:491 -msgid "Steps" -msgstr "Passos" - #: .\cookbook\templates\forms\ingredients.html:15 msgid "Edit Ingredients" msgstr "Edita Ingredients" @@ -1145,11 +1025,6 @@ msgstr "" "unitats o ingredients es van crear hi haurien de ser el mateix.\n" "Combina dues unitats o ingredients i actualitza totes les receptes amb ells" -#: .\cookbook\templates\forms\ingredients.html:24 -#: .\cookbook\templates\space.html:41 .\cookbook\templates\stats.html:26 -msgid "Units" -msgstr "Unitats" - #: .\cookbook\templates\forms\ingredients.html:26 msgid "Are you sure that you want to merge these two units?" msgstr "Estàs segur que vols combinar aquestes dues unitats?" @@ -1163,29 +1038,33 @@ msgstr "Combina" msgid "Are you sure that you want to merge these two ingredients?" msgstr "Estàs segur que vols combinar aquests dos ingredients?" -#: .\cookbook\templates\generic\delete_template.html:18 +#: .\cookbook\templates\generic\delete_template.html:19 #, python-format msgid "Are you sure you want to delete the %(title)s: %(object)s " msgstr "Segur que vols esborrar el %(title)s:%(object)s" -#: .\cookbook\templates\generic\edit_template.html:30 +#: .\cookbook\templates\generic\delete_template.html:23 +msgid "Cancel" +msgstr "" + +#: .\cookbook\templates\generic\edit_template.html:32 msgid "View" msgstr "Veure" -#: .\cookbook\templates\generic\edit_template.html:34 +#: .\cookbook\templates\generic\edit_template.html:36 msgid "Delete original file" msgstr "Esborra arxiu original" #: .\cookbook\templates\generic\list_template.html:6 -#: .\cookbook\templates\generic\list_template.html:12 +#: .\cookbook\templates\generic\list_template.html:21 msgid "List" msgstr "Llista" -#: .\cookbook\templates\generic\list_template.html:25 +#: .\cookbook\templates\generic\list_template.html:34 msgid "Filter" msgstr "Filtre" -#: .\cookbook\templates\generic\list_template.html:30 +#: .\cookbook\templates\generic\list_template.html:39 msgid "Import all" msgstr "Importa tot" @@ -1522,6 +1401,11 @@ msgstr "Mostra ajuda" msgid "Week iCal export" msgstr "Exportació iCal setmanal" +#: .\cookbook\templates\meal_plan.html:256 +#: .\cookbook\templates\url_import.html:542 +msgid "Note" +msgstr "Nota" + #: .\cookbook\templates\meal_plan.html:264 #: .\cookbook\templates\meal_plan_entry.html:18 msgid "Created by" @@ -1585,6 +1469,11 @@ msgstr "" msgid "Meal Plan View" msgstr "Vista del pla de menjars" +#: .\cookbook\templates\meal_plan_entry.html:48 +#: .\cookbook\templates\recipes_table.html:64 +msgid "Last cooked" +msgstr "Darrera cocció" + #: .\cookbook\templates\meal_plan_entry.html:50 msgid "Never cooked before." msgstr "No cuinat abans" @@ -1687,8 +1576,12 @@ msgstr "" msgid "Comments" msgstr "Comentaris" +#: .\cookbook\templates\recipe_view.html:26 +msgid "by" +msgstr "per" + #: .\cookbook\templates\recipe_view.html:44 .\cookbook\views\delete.py:118 -#: .\cookbook\views\edit.py:179 +#: .\cookbook\views\edit.py:177 msgid "Comment" msgstr "Comentari" @@ -1720,56 +1613,227 @@ msgstr "Registre de Cuines" msgid "Recipe Home" msgstr "Receptes" -#: .\cookbook\templates\settings.html:25 +#: .\cookbook\templates\search_info.html:5 +#: .\cookbook\templates\search_info.html:9 +#: .\cookbook\templates\settings.html:157 +#, fuzzy +#| msgid "Search String" +msgid "Search Settings" +msgstr "Cerca Cadena" + +#: .\cookbook\templates\search_info.html:10 +msgid "" +"\n" +" Creating the best search experience is complicated and weighs " +"heavily on your personal configuration. \n" +" Changing any of the search settings can have significant impact on " +"the speed and quality of the results.\n" +" Search Methods, Trigrams and Full Text Search configurations are " +"only available if you are using Postgres for your database.\n" +" " +msgstr "" + +#: .\cookbook\templates\search_info.html:19 +#, fuzzy +#| msgid "Search" +msgid "Search Methods" +msgstr "Cerca" + +#: .\cookbook\templates\search_info.html:23 +msgid "" +" \n" +" Full text searches attempt to normalize the words provided to " +"match common variants. For example: 'forked', 'forking', 'forks' will all " +"normalize to 'fork'.\n" +" There are several methods available, described below, that will " +"control how the search behavior should react when multiple words are " +"searched.\n" +" Full technical details on how these operate can be viewed on Postgresql's website.\n" +" " +msgstr "" + +#: .\cookbook\templates\search_info.html:29 +msgid "" +" \n" +" Simple searches ignore punctuation and common words such as " +"'the', 'a', 'and'. And will treat seperate words as required.\n" +" Searching for 'apple or flour' will return any recipe that " +"includes both 'apple' and 'flour' anywhere in the fields that have been " +"selected for a full text search.\n" +" " +msgstr "" + +#: .\cookbook\templates\search_info.html:34 +msgid "" +" \n" +" Phrase searches ignore punctuation, but will search for all of " +"the words in the exact order provided.\n" +" Searching for 'apple or flour' will only return a recipe that " +"includes the exact phrase 'apple or flour' in any of the fields that have " +"been selected for a full text search.\n" +" " +msgstr "" + +#: .\cookbook\templates\search_info.html:39 +msgid "" +" \n" +" Web searches simulate functionality found on many web search " +"sites supporting special syntax.\n" +" Placing quotes around several words will convert those words " +"into a phrase.\n" +" 'or' is recongized as searching for the word (or phrase) " +"immediately before 'or' OR the word (or phrase) directly after.\n" +" '-' is recognized as searching for recipes that do not include " +"the word (or phrase) that comes immediately after. \n" +" For example searching for 'apple pie' or cherry -butter will " +"return any recipe that includes the phrase 'apple pie' or the word " +"'cherry' \n" +" in any field included in the full text search but exclude any " +"recipe that has the word 'butter' in any field included.\n" +" " +msgstr "" + +#: .\cookbook\templates\search_info.html:48 +msgid "" +" \n" +" Raw search is similar to Web except will take puncuation " +"operators such as '|', '&' and '()'\n" +" " +msgstr "" + +#: .\cookbook\templates\search_info.html:59 +msgid "" +" \n" +" Another approach to searching that also requires Postgresql is " +"fuzzy search or trigram similarity. A trigram is a group of three " +"consecutive characters.\n" +" For example searching for 'apple' will create x trigrams 'app', " +"'ppl', 'ple' and will create a score of how closely words match the " +"generated trigrams.\n" +" One benefit of searching trigams is that a search for 'sandwich' " +"will find mispelled words such as 'sandwhich' that would be missed by other " +"methods.\n" +" " +msgstr "" + +#: .\cookbook\templates\search_info.html:69 +#, fuzzy +#| msgid "Search Recipe" +msgid "Search Fields" +msgstr "Cerca Recepta" + +#: .\cookbook\templates\search_info.html:73 +msgid "" +" \n" +" Unaccent is a special case in that it enables searching a field " +"'unaccented' for each search style attempting to ignore accented values. \n" +" For example when you enable unaccent for 'Name' any search " +"(starts with, contains, trigram) will attempt the search ignoring accented " +"characters.\n" +" \n" +" For the other options, you can enable search on any or all " +"fields and they will be combined together with an assumed 'OR'.\n" +" For example enabling 'Name' for Starts With, 'Name' and " +"'Description' for Partial Match and 'Ingredients' and 'Keywords' for Full " +"Search\n" +" and searching for 'apple' will generate a search that will " +"return recipes that have:\n" +" - A recipe name that starts with 'apple'\n" +" - OR a recipe name that contains 'apple'\n" +" - OR a recipe description that contains 'apple'\n" +" - OR a recipe that will have a full text search match ('apple' " +"or 'apples') in ingredients\n" +" - OR a recipe that will have a full text search match in " +"Keywords\n" +"\n" +" Combining too many fields in too many types of search can have a " +"negative impact on performance, create duplicate results or return " +"unexpected results.\n" +" For example, enabling fuzzy search or partial matches will " +"interfere with web search methods. \n" +" Searching for 'apple -pie' with fuzzy search and full text " +"search will return the recipe Apple Pie. Though it is not included in the " +"full text results, it does match the trigram results.\n" +" " +msgstr "" + +#: .\cookbook\templates\search_info.html:95 +#, fuzzy +#| msgid "Search" +msgid "Search Index" +msgstr "Cerca" + +#: .\cookbook\templates\search_info.html:99 +msgid "" +" \n" +" Trigram search and Full Text Search both rely on database " +"indexes to perform effectively. \n" +" You can rebuild the indexes on all fields in the Admin page for " +"Recipes and selecting all recipes and running 'rebuild index for selected " +"recipes'\n" +" You can also rebuild indexes at the command line by executing " +"the management command 'python manage.py rebuildindex'\n" +" " +msgstr "" + +#: .\cookbook\templates\settings.html:27 msgid "Account" msgstr "Compte" -#: .\cookbook\templates\settings.html:29 +#: .\cookbook\templates\settings.html:33 msgid "Preferences" msgstr "" -#: .\cookbook\templates\settings.html:33 +#: .\cookbook\templates\settings.html:39 #, fuzzy #| msgid "Settings" msgid "API-Settings" msgstr "Opcions" -#: .\cookbook\templates\settings.html:41 +#: .\cookbook\templates\settings.html:45 +#, fuzzy +#| msgid "Search String" +msgid "Search-Settings" +msgstr "Cerca Cadena" + +#: .\cookbook\templates\settings.html:53 #, fuzzy #| msgid "Settings" msgid "Name Settings" msgstr "Opcions" -#: .\cookbook\templates\settings.html:49 +#: .\cookbook\templates\settings.html:61 #, fuzzy #| msgid "Settings" msgid "Account Settings" msgstr "Opcions" -#: .\cookbook\templates\settings.html:51 +#: .\cookbook\templates\settings.html:63 #, fuzzy #| msgid "Settings" msgid "Emails" msgstr "Opcions" -#: .\cookbook\templates\settings.html:54 +#: .\cookbook\templates\settings.html:66 #: .\cookbook\templates\socialaccount\connections.html:11 msgid "Social" msgstr "" -#: .\cookbook\templates\settings.html:66 +#: .\cookbook\templates\settings.html:78 msgid "Language" msgstr "Idioma" -#: .\cookbook\templates\settings.html:96 +#: .\cookbook\templates\settings.html:108 msgid "Style" msgstr "Estil" -#: .\cookbook\templates\settings.html:116 +#: .\cookbook\templates\settings.html:128 msgid "API Token" msgstr "Token API" -#: .\cookbook\templates\settings.html:117 +#: .\cookbook\templates\settings.html:129 msgid "" "You can use both basic authentication and token based authentication to " "access the REST API." @@ -1777,7 +1841,7 @@ msgstr "" "Podeu utilitzar tant l’autenticació bàsica com l’autenticació basada en " "token per accedir a l’API REST." -#: .\cookbook\templates\settings.html:134 +#: .\cookbook\templates\settings.html:146 msgid "" "Use the token as an Authorization header prefixed by the word token as shown " "in the following examples:" @@ -1785,7 +1849,7 @@ msgstr "" "Utilitzeu el testimoni com a capçalera d'autorització prefixada per la " "paraula símbol tal com es mostra als exemples següents:" -#: .\cookbook\templates\settings.html:136 +#: .\cookbook\templates\settings.html:148 msgid "or" msgstr "o" @@ -1828,6 +1892,23 @@ msgstr "" msgid "Amount" msgstr "Quantitat" +#: .\cookbook\templates\shopping_list.html:187 +msgid "Select Unit" +msgstr "Selecciona Unitat" + +#: .\cookbook\templates\shopping_list.html:189 +#: .\cookbook\templates\shopping_list.html:211 +#: .\cookbook\templates\shopping_list.html:241 +#: .\cookbook\templates\shopping_list.html:265 +#: .\cookbook\templates\url_import.html:495 +#: .\cookbook\templates\url_import.html:527 +msgid "Select" +msgstr "Selecciona" + +#: .\cookbook\templates\shopping_list.html:209 +msgid "Select Food" +msgstr "Selecciona Menjar" + #: .\cookbook\templates\shopping_list.html:240 msgid "Select Supermarket" msgstr "Seleccioni supermercat" @@ -1926,10 +2007,6 @@ msgstr "Estadístiques d'objectes" msgid "Recipes without Keywords" msgstr "Receptes sense paraules clau" -#: .\cookbook\templates\space.html:58 .\cookbook\templates\stats.html:43 -msgid "External Recipes" -msgstr "Receptes Externes" - #: .\cookbook\templates\space.html:60 .\cookbook\templates\stats.html:45 msgid "Internal Recipes" msgstr "Receptes Internes" @@ -1989,7 +2066,7 @@ msgid "There are no members in your space yet!" msgstr "Encara no hi ha receptes en aquest llibre." #: .\cookbook\templates\space.html:130 .\cookbook\templates\system.html:21 -#: .\cookbook\views\lists.py:115 +#: .\cookbook\views\lists.py:100 msgid "Invite Links" msgstr "Enllaços Invitació" @@ -1997,6 +2074,10 @@ msgstr "Enllaços Invitació" msgid "Stats" msgstr "Estadístiques" +#: .\cookbook\templates\stats.html:10 +msgid "Statistics" +msgstr "Estadístiques" + #: .\cookbook\templates\system.html:22 msgid "Show Links" msgstr "Mostra Enllaços" @@ -2175,6 +2256,10 @@ msgstr "" msgid "Text dragged here will be appended to the name." msgstr "" +#: .\cookbook\templates\url_import.html:171 +msgid "Description" +msgstr "" + #: .\cookbook\templates\url_import.html:175 msgid "Text dragged here will be appended to the description." msgstr "" @@ -2203,6 +2288,11 @@ msgstr "Temps" msgid "Ingredients dragged here will be appended to current list." msgstr "" +#: .\cookbook\templates\url_import.html:297 +#: .\cookbook\templates\url_import.html:567 +msgid "Instructions" +msgstr "Instruccions" + #: .\cookbook\templates\url_import.html:302 msgid "" "Recipe instructions dragged here will be appended to current instructions." @@ -2262,6 +2352,12 @@ msgstr "Especificació de marcatge de receptes" msgid "Select one" msgstr "Sel·lecciona un" +#: .\cookbook\templates\url_import.html:583 +#, fuzzy +#| msgid "All Keywords" +msgid "Add Keyword" +msgstr "Totes les paraules clau" + #: .\cookbook\templates\url_import.html:596 msgid "All Keywords" msgstr "Totes les paraules clau" @@ -2305,38 +2401,95 @@ msgstr "Problemes de GitHub" msgid "Recipe Markup Specification" msgstr "Especificació de marcatge de receptes" -#: .\cookbook\views\api.py:79 +#: .\cookbook\views\api.py:82 .\cookbook\views\api.py:131 #, fuzzy #| msgid "Parameter filter_list incorrectly formatted" msgid "Parameter updated_at incorrectly formatted" msgstr "El paràmetre filter_list té un format incorrecte" -#: .\cookbook\views\api.py:580 .\cookbook\views\views.py:303 +#: .\cookbook\views\api.py:151 +#, python-brace-format +msgid "No {self.basename} with id {pk} exists" +msgstr "" + +#: .\cookbook\views\api.py:155 .\cookbook\views\edit.py:300 +#: .\cookbook\views\edit.py:316 +msgid "Cannot merge with the same object!" +msgstr "" + +#: .\cookbook\views\api.py:162 +#, python-brace-format +msgid "No {self.basename} with id {target} exists" +msgstr "" + +#: .\cookbook\views\api.py:167 +msgid "Cannot merge with child object!" +msgstr "" + +#: .\cookbook\views\api.py:195 +#, python-brace-format +msgid "{source.name} was merged successfully with {target.name}" +msgstr "" + +#: .\cookbook\views\api.py:199 +#, python-brace-format +msgid "An error occurred attempting to merge {source.name} with {target.name}" +msgstr "" + +#: .\cookbook\views\api.py:239 +#, python-brace-format +msgid "No {self.basename} with id {child} exists" +msgstr "" + +#: .\cookbook\views\api.py:248 +#, python-brace-format +msgid "{child.name} was moved successfully to the root." +msgstr "" + +#: .\cookbook\views\api.py:251 .\cookbook\views\api.py:269 +msgid "An error occurred attempting to move " +msgstr "" + +#: .\cookbook\views\api.py:254 +msgid "Cannot move an object to itself!" +msgstr "" + +#: .\cookbook\views\api.py:260 +#, python-brace-format +msgid "No {self.basename} with id {parent} exists" +msgstr "" + +#: .\cookbook\views\api.py:266 +#, python-brace-format +msgid "{child.name} was moved successfully to parent {parent.name}" +msgstr "" + +#: .\cookbook\views\api.py:704 .\cookbook\views\views.py:289 msgid "This feature is not available in the demo version!" msgstr "" -#: .\cookbook\views\api.py:603 +#: .\cookbook\views\api.py:727 msgid "Sync successful!" msgstr "Sincronització correcte" -#: .\cookbook\views\api.py:608 +#: .\cookbook\views\api.py:732 msgid "Error synchronizing with Storage" msgstr "Error de sincronització amb emmagatzematge" -#: .\cookbook\views\api.py:686 +#: .\cookbook\views\api.py:810 msgid "Nothing to do." msgstr "" -#: .\cookbook\views\api.py:701 +#: .\cookbook\views\api.py:825 msgid "The requested site provided malformed data and cannot be read." msgstr "" "El lloc sol·licitat proporcionava dades malformades i no es pot llegir." -#: .\cookbook\views\api.py:708 +#: .\cookbook\views\api.py:832 msgid "The requested page could not be found." msgstr "No s'ha pogut trobar la pàgina sol·licitada." -#: .\cookbook\views\api.py:717 +#: .\cookbook\views\api.py:841 msgid "" "The requested site does not provide any recognized data format to import the " "recipe from." @@ -2344,13 +2497,13 @@ msgstr "" "El lloc sol·licitat no proporciona cap format de dades reconegut des d’on " "importar la recepta." -#: .\cookbook\views\api.py:731 +#: .\cookbook\views\api.py:855 #, fuzzy #| msgid "The requested page could not be found." msgid "No useable data could be found." msgstr "No s'ha pogut trobar la pàgina sol·licitada." -#: .\cookbook\views\api.py:747 +#: .\cookbook\views\api.py:871 msgid "I couldn't find anything to do." msgstr "" @@ -2378,8 +2531,8 @@ msgstr[1] "" msgid "Monitor" msgstr "Monitoratge" -#: .\cookbook\views\delete.py:96 .\cookbook\views\lists.py:102 -#: .\cookbook\views\new.py:98 +#: .\cookbook\views\delete.py:96 .\cookbook\views\lists.py:86 +#: .\cookbook\views\new.py:97 msgid "Storage Backend" msgstr "Backend d'emmagatzematge" @@ -2390,8 +2543,8 @@ msgstr "" "No s'ha pogut suprimir aquest fons d'emmagatzematge, ja que s'utilitza en " "almenys un monitor." -#: .\cookbook\views\delete.py:129 .\cookbook\views\edit.py:213 -#: .\cookbook\views\new.py:156 +#: .\cookbook\views\delete.py:129 .\cookbook\views\edit.py:211 +#: .\cookbook\views\new.py:155 msgid "Recipe Book" msgstr "Llibre de Receptes" @@ -2399,47 +2552,39 @@ msgstr "Llibre de Receptes" msgid "Bookmarks" msgstr "Marcadors" -#: .\cookbook\views\delete.py:163 .\cookbook\views\new.py:252 +#: .\cookbook\views\delete.py:163 .\cookbook\views\new.py:251 msgid "Invite Link" msgstr "Enllaç de invitació" -#: .\cookbook\views\edit.py:119 -msgid "Food" -msgstr "Menjar" - -#: .\cookbook\views\edit.py:128 +#: .\cookbook\views\edit.py:126 msgid "You cannot edit this storage!" msgstr "No podeu editar aquest emmagatzematge." -#: .\cookbook\views\edit.py:148 +#: .\cookbook\views\edit.py:146 msgid "Storage saved!" msgstr "Emmagatzematge desat." -#: .\cookbook\views\edit.py:154 +#: .\cookbook\views\edit.py:152 msgid "There was an error updating this storage backend!" msgstr "S'ha produït un error en actualitzar aquest backend d'emmagatzematge." -#: .\cookbook\views\edit.py:165 +#: .\cookbook\views\edit.py:163 msgid "Storage" msgstr "Emmagatzematge" -#: .\cookbook\views\edit.py:261 +#: .\cookbook\views\edit.py:259 msgid "Changes saved!" msgstr "Canvis desats!" -#: .\cookbook\views\edit.py:265 +#: .\cookbook\views\edit.py:263 msgid "Error saving changes!" msgstr "Error al desar canvis!" -#: .\cookbook\views\edit.py:299 +#: .\cookbook\views\edit.py:298 msgid "Units merged!" msgstr "Unitats fusionades!" -#: .\cookbook\views\edit.py:301 .\cookbook\views\edit.py:317 -msgid "Cannot merge with the same object!" -msgstr "" - -#: .\cookbook\views\edit.py:315 +#: .\cookbook\views\edit.py:314 msgid "Foods merged!" msgstr "Menjars Fusionats!" @@ -2451,89 +2596,121 @@ msgstr "" msgid "Exporting is not implemented for this provider" msgstr "" -#: .\cookbook\views\lists.py:40 +#: .\cookbook\views\lists.py:26 msgid "Import Log" msgstr "Importa Registre" -#: .\cookbook\views\lists.py:53 +#: .\cookbook\views\lists.py:39 msgid "Discovery" msgstr "Descobriment" -#: .\cookbook\views\lists.py:85 +#: .\cookbook\views\lists.py:69 msgid "Shopping Lists" msgstr "Llistes de Compra" -#: .\cookbook\views\new.py:123 +#: .\cookbook\views\lists.py:129 +#, fuzzy +#| msgid "Food" +msgid "Foods" +msgstr "Menjar" + +#: .\cookbook\views\lists.py:163 +#, fuzzy +#| msgid "Supermarket" +msgid "Supermarkets" +msgstr "Supermercat" + +#: .\cookbook\views\lists.py:179 +#, fuzzy +#| msgid "Shopping Recipes" +msgid "Shopping Categories" +msgstr "Llista de Compra de Receptes" + +#: .\cookbook\views\new.py:122 msgid "Imported new recipe!" msgstr "Nova Recepta importada!" -#: .\cookbook\views\new.py:126 +#: .\cookbook\views\new.py:125 msgid "There was an error importing this recipe!" msgstr "S'ha produït un error en importar la recepta!" -#: .\cookbook\views\new.py:226 +#: .\cookbook\views\new.py:225 msgid "Hello" msgstr "" -#: .\cookbook\views\new.py:226 +#: .\cookbook\views\new.py:225 msgid "You have been invited by " msgstr "" -#: .\cookbook\views\new.py:227 +#: .\cookbook\views\new.py:226 msgid " to join their Tandoor Recipes space " msgstr "" -#: .\cookbook\views\new.py:228 +#: .\cookbook\views\new.py:227 msgid "Click the following link to activate your account: " msgstr "" -#: .\cookbook\views\new.py:229 +#: .\cookbook\views\new.py:228 msgid "" "If the link does not work use the following code to manually join the space: " msgstr "" -#: .\cookbook\views\new.py:230 +#: .\cookbook\views\new.py:229 msgid "The invitation is valid until " msgstr "" -#: .\cookbook\views\new.py:231 +#: .\cookbook\views\new.py:230 msgid "" "Tandoor Recipes is an Open Source recipe manager. Check it out on GitHub " msgstr "" -#: .\cookbook\views\new.py:234 +#: .\cookbook\views\new.py:233 msgid "Tandoor Recipes Invite" msgstr "" -#: .\cookbook\views\new.py:241 +#: .\cookbook\views\new.py:240 msgid "Invite link successfully send to user." msgstr "" -#: .\cookbook\views\new.py:244 +#: .\cookbook\views\new.py:243 msgid "" "You have send to many emails, please share the link manually or wait a few " "hours." msgstr "" -#: .\cookbook\views\new.py:246 +#: .\cookbook\views\new.py:245 msgid "Email to user could not be send, please share link manually." msgstr "" -#: .\cookbook\views\views.py:129 +#: .\cookbook\views\views.py:128 msgid "" "You have successfully created your own recipe space. Start by adding some " "recipes or invite other people to join you." msgstr "" -#: .\cookbook\views\views.py:177 +#: .\cookbook\views\views.py:176 msgid "You do not have the required permissions to perform this action!" msgstr "No teniu els permisos necessaris per dur a terme aquesta acció!" -#: .\cookbook\views\views.py:188 +#: .\cookbook\views\views.py:187 msgid "Comment saved!" msgstr "Comentari Desat!" -#: .\cookbook\views\views.py:395 +#: .\cookbook\views\views.py:351 +msgid "You must select at least one field to search!" +msgstr "" + +#: .\cookbook\views\views.py:354 +msgid "" +"To use this search method you must select at least one full text search " +"field!" +msgstr "" + +#: .\cookbook\views\views.py:357 +msgid "Fuzzy search is not compatible with this search method!" +msgstr "" + +#: .\cookbook\views\views.py:437 msgid "" "The setup page can only be used to create the first user! If you have " "forgotten your superuser credentials please consult the django documentation " @@ -2543,44 +2720,168 @@ msgstr "" "Si heu oblidat les vostres credencials de superusuari, consulteu la " "documentació de django sobre com restablir les contrasenyes." -#: .\cookbook\views\views.py:402 +#: .\cookbook\views\views.py:444 msgid "Passwords dont match!" msgstr "Les contrasenyes no coincideixen!" -#: .\cookbook\views\views.py:418 +#: .\cookbook\views\views.py:460 msgid "User has been created, please login!" msgstr "L'usuari s'ha creat, si us plau inicieu la sessió!" -#: .\cookbook\views\views.py:434 +#: .\cookbook\views\views.py:476 msgid "Malformed Invite Link supplied!" msgstr "S'ha proporcionat un enllaç d'invitació mal format." -#: .\cookbook\views\views.py:441 +#: .\cookbook\views\views.py:483 #, fuzzy #| msgid "You are not logged in and therefore cannot view this page!" msgid "You are already member of a space and therefore cannot join this one." msgstr "No heu iniciat la sessió i, per tant, no podeu veure aquesta pàgina." -#: .\cookbook\views\views.py:452 +#: .\cookbook\views\views.py:494 msgid "Successfully joined space." msgstr "" -#: .\cookbook\views\views.py:458 +#: .\cookbook\views\views.py:500 msgid "Invite Link not valid or already used!" msgstr "L'enllaç d'invitació no és vàlid o ja s'ha utilitzat." -#: .\cookbook\views\views.py:522 +#: .\cookbook\views\views.py:564 msgid "" "Reporting share links is not enabled for this instance. Please notify the " "page administrator to report problems." msgstr "" -#: .\cookbook\views\views.py:528 +#: .\cookbook\views\views.py:570 msgid "" "Recipe sharing link has been disabled! For additional information please " "contact the page administrator." msgstr "" +#~ msgid "Utensils" +#~ msgstr "Estris" + +#~ msgid "Storage Data" +#~ msgstr "Emmagatzematge de dades" + +#~ msgid "Storage Backends" +#~ msgstr "Backends d'emmagatzematge" + +#~ msgid "Configure Sync" +#~ msgstr "Configurar Sync" + +#~ msgid "Discovered Recipes" +#~ msgstr "Receptes Descobertes" + +#~ msgid "Discovery Log" +#~ msgstr "Registre de descobriment" + +#~ msgid "Units & Ingredients" +#~ msgstr "Unitats i ingredients" + +#~ msgid "New Book" +#~ msgstr "Nou Llibre" + +#~ msgid "Toggle Recipes" +#~ msgstr "Commuta Receptes" + +#~ msgid "There are no recipes in this book yet." +#~ msgstr "Encara no hi ha receptes en aquest llibre." + +#~ msgid "Waiting Time" +#~ msgstr "Temps d'Espera" + +#~ msgid "Select Keywords" +#~ msgstr "Selecciona Paraules clau" + +#~ msgid "Nutrition" +#~ msgstr "Nutrició" + +#~ msgid "Delete Step" +#~ msgstr "Esborra Pas" + +#~ msgid "Calories" +#~ msgstr "Calories" + +#~ msgid "Carbohydrates" +#~ msgstr "Hidrats de carboni" + +#~ msgid "Fats" +#~ msgstr "Greixos" + +#~ msgid "Proteins" +#~ msgstr "Proteïnes" + +#~ msgid "Step" +#~ msgstr "Pas" + +#~ msgid "Show as header" +#~ msgstr "Mostra com a capçalera" + +#~ msgid "Hide as header" +#~ msgstr "Amaga com a capçalera" + +#~ msgid "Move Up" +#~ msgstr "Mou Amunt" + +#~ msgid "Move Down" +#~ msgstr "Mou Avall" + +#~ msgid "Step Name" +#~ msgstr "Nom del Pas" + +#~ msgid "Step Type" +#~ msgstr "Tipus de Pas" + +#~ msgid "Step time in Minutes" +#~ msgstr "Temps de pas en Minuts" + +#, fuzzy +#~| msgid "Select one" +#~ msgid "Select File" +#~ msgstr "Sel·lecciona un" + +#, fuzzy +#~| msgid "Delete Recipe" +#~ msgid "Select Recipe" +#~ msgstr "Esborra Recepta" + +#~ msgid "Delete Ingredient" +#~ msgstr "Esborra Ingredient" + +#~ msgid "Make Header" +#~ msgstr "Crea Capçalera" + +#~ msgid "Make Ingredient" +#~ msgstr "Crea Ingredient" + +#~ msgid "Disable Amount" +#~ msgstr "Deshabilita Quantitat" + +#~ msgid "Enable Amount" +#~ msgstr "Habilita Quantitat" + +#~ msgid "Save & View" +#~ msgstr "Desa i Comprova" + +#~ msgid "Add Step" +#~ msgstr "Afegir Pas" + +#~ msgid "Add Nutrition" +#~ msgstr "Afegeix nutrients" + +#~ msgid "Remove Nutrition" +#~ msgstr "Elimina nutrients" + +#~ msgid "View Recipe" +#~ msgstr "Veure Recepta" + +#~ msgid "Delete Recipe" +#~ msgstr "Esborra Recepta" + +#~ msgid "Steps" +#~ msgstr "Passos" + #~ msgid "" #~ "A username is not required, if left blank the new user can choose one." #~ msgstr "" diff --git a/cookbook/locale/de/LC_MESSAGES/django.mo b/cookbook/locale/de/LC_MESSAGES/django.mo index 675ff110..e0bb2936 100644 Binary files a/cookbook/locale/de/LC_MESSAGES/django.mo and b/cookbook/locale/de/LC_MESSAGES/django.mo differ diff --git a/cookbook/locale/de/LC_MESSAGES/django.po b/cookbook/locale/de/LC_MESSAGES/django.po index 6fe76517..c6069616 100644 --- a/cookbook/locale/de/LC_MESSAGES/django.po +++ b/cookbook/locale/de/LC_MESSAGES/django.po @@ -14,27 +14,26 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-08-12 15:09+0200\n" -"PO-Revision-Date: 2021-06-24 15:49+0000\n" -"Last-Translator: Maximilian J \n" -"Language-Team: German \n" +"POT-Creation-Date: 2021-09-13 22:40+0200\n" +"PO-Revision-Date: 2021-10-07 19:06+0000\n" +"Last-Translator: vabene1111 \n" +"Language-Team: German \n" "Language: de\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" -"X-Generator: Weblate 4.7\n" +"X-Generator: Weblate 4.8\n" -#: .\cookbook\filters.py:23 .\cookbook\templates\base.html:98 -#: .\cookbook\templates\forms\edit_internal_recipe.html:269 +#: .\cookbook\filters.py:23 .\cookbook\templates\base.html:125 #: .\cookbook\templates\forms\ingredients.html:34 #: .\cookbook\templates\space.html:43 .\cookbook\templates\stats.html:28 -#: .\cookbook\templates\url_import.html:270 .\cookbook\views\lists.py:67 +#: .\cookbook\templates\url_import.html:270 msgid "Ingredients" msgstr "Zutaten" -#: .\cookbook\forms.py:49 +#: .\cookbook\forms.py:50 msgid "" "Color of the top navigation bar. Not all colors work with all themes, just " "try them out!" @@ -42,13 +41,13 @@ msgstr "" "Farbe der oberen Navigationsleiste. Nicht alle Farben passen, daher einfach " "mal ausprobieren!" -#: .\cookbook\forms.py:51 +#: .\cookbook\forms.py:52 msgid "Default Unit to be used when inserting a new ingredient into a recipe." msgstr "" "Standardeinheit, die beim Einfügen einer neuen Zutat in ein Rezept zu " "verwenden ist." -#: .\cookbook\forms.py:53 +#: .\cookbook\forms.py:54 msgid "" "Enables support for fractions in ingredient amounts (e.g. convert decimals " "to fractions automatically)" @@ -56,7 +55,7 @@ msgstr "" "Unterstützung für Brüche in Zutaten aktivieren. Dadurch werden Dezimalzahlen " "mit Brüchen ersetzt, z.B. 0.5 mit ½." -#: .\cookbook\forms.py:56 +#: .\cookbook\forms.py:57 msgid "" "Users with whom newly created meal plan/shopping list entries should be " "shared by default." @@ -64,21 +63,21 @@ msgstr "" "Nutzer, mit denen neue Pläne und Einkaufslisten standardmäßig geteilt werden " "sollen." -#: .\cookbook\forms.py:58 +#: .\cookbook\forms.py:59 msgid "Show recently viewed recipes on search page." msgstr "Zuletzt angeschaute Rezepte bei der Suche anzeigen." -#: .\cookbook\forms.py:59 +#: .\cookbook\forms.py:60 msgid "Number of decimals to round ingredients." msgstr "Anzahl an Dezimalstellen, auf die gerundet werden soll." -#: .\cookbook\forms.py:60 +#: .\cookbook\forms.py:61 msgid "If you want to be able to create and see comments underneath recipes." msgstr "" "Wenn du in der Lage sein willst, Kommentare unter Rezepten zu erstellen und " "zu sehen." -#: .\cookbook\forms.py:62 +#: .\cookbook\forms.py:63 msgid "" "Setting to 0 will disable auto sync. When viewing a shopping list the list " "is updated every set seconds to sync changes someone else might have made. " @@ -90,11 +89,11 @@ msgstr "" "aktualisiert. Dies ist nützlich, wenn mehrere Personen eine Liste beim " "Einkaufen verwenden, benötigt jedoch etwas Datenvolumen." -#: .\cookbook\forms.py:65 +#: .\cookbook\forms.py:66 msgid "Makes the navbar stick to the top of the page." msgstr "Navigationsleiste wird oben angeheftet." -#: .\cookbook\forms.py:81 +#: .\cookbook\forms.py:82 msgid "" "Both fields are optional. If none are given the username will be displayed " "instead" @@ -102,42 +101,39 @@ msgstr "" "Beide Felder sind optional. Wenn keins von beiden gegeben ist, wird der " "Nutzername angezeigt" -#: .\cookbook\forms.py:102 .\cookbook\forms.py:331 -#: .\cookbook\templates\forms\edit_internal_recipe.html:49 +#: .\cookbook\forms.py:103 .\cookbook\forms.py:334 #: .\cookbook\templates\url_import.html:154 msgid "Name" msgstr "Name" -#: .\cookbook\forms.py:103 .\cookbook\forms.py:332 -#: .\cookbook\templates\base.html:108 .\cookbook\templates\base.html:169 -#: .\cookbook\templates\forms\edit_internal_recipe.html:85 +#: .\cookbook\forms.py:104 .\cookbook\forms.py:335 #: .\cookbook\templates\space.html:39 .\cookbook\templates\stats.html:24 #: .\cookbook\templates\url_import.html:188 -#: .\cookbook\templates\url_import.html:573 +#: .\cookbook\templates\url_import.html:573 .\cookbook\views\lists.py:112 msgid "Keywords" msgstr "Stichwörter" -#: .\cookbook\forms.py:104 +#: .\cookbook\forms.py:105 msgid "Preparation time in minutes" msgstr "Zubereitungszeit in Minuten" -#: .\cookbook\forms.py:105 +#: .\cookbook\forms.py:106 msgid "Waiting time (cooking/baking) in minutes" msgstr "Wartezeit (kochen/backen) in Minuten" -#: .\cookbook\forms.py:106 .\cookbook\forms.py:333 +#: .\cookbook\forms.py:107 .\cookbook\forms.py:336 msgid "Path" msgstr "Pfad" -#: .\cookbook\forms.py:107 +#: .\cookbook\forms.py:108 msgid "Storage UID" msgstr "Speicher-UID" -#: .\cookbook\forms.py:133 +#: .\cookbook\forms.py:134 msgid "Default" msgstr "Standard" -#: .\cookbook\forms.py:144 .\cookbook\templates\url_import.html:90 +#: .\cookbook\forms.py:145 .\cookbook\templates\url_import.html:90 msgid "" "To prevent duplicates recipes with the same name as existing ones are " "ignored. Check this box to import everything." @@ -145,51 +141,51 @@ msgstr "" "Um Duplikate zu vermeiden werden Rezepte mit dem gleichen Namen ignoriert. " "Aktivieren Sie dieses Kontrollkästchen, um alles zu importieren." -#: .\cookbook\forms.py:164 +#: .\cookbook\forms.py:165 msgid "New Unit" msgstr "Neue Einheit" -#: .\cookbook\forms.py:165 +#: .\cookbook\forms.py:166 msgid "New unit that other gets replaced by." msgstr "Neue Einheit, die die alte ersetzt." -#: .\cookbook\forms.py:170 +#: .\cookbook\forms.py:171 msgid "Old Unit" msgstr "Alte Einheit" -#: .\cookbook\forms.py:171 +#: .\cookbook\forms.py:172 msgid "Unit that should be replaced." msgstr "Einheit, die ersetzt werden soll." -#: .\cookbook\forms.py:187 +#: .\cookbook\forms.py:189 msgid "New Food" msgstr "Neue Zutat" -#: .\cookbook\forms.py:188 +#: .\cookbook\forms.py:190 msgid "New food that other gets replaced by." msgstr "Neue Zutat, die die alte ersetzt." -#: .\cookbook\forms.py:193 +#: .\cookbook\forms.py:195 msgid "Old Food" msgstr "Alte Zutat" -#: .\cookbook\forms.py:194 +#: .\cookbook\forms.py:196 msgid "Food that should be replaced." msgstr "Zutat, die ersetzt werden soll." -#: .\cookbook\forms.py:212 +#: .\cookbook\forms.py:214 msgid "Add your comment: " msgstr "Schreibe einen Kommentar: " -#: .\cookbook\forms.py:253 +#: .\cookbook\forms.py:256 msgid "Leave empty for dropbox and enter app password for nextcloud." msgstr "Für Dropbox leer lassen, bei Nextcloud App-Passwort eingeben." -#: .\cookbook\forms.py:260 +#: .\cookbook\forms.py:263 msgid "Leave empty for nextcloud and enter api token for dropbox." msgstr "Für Nextcloud leer lassen, für Dropbox API-Token eingeben." -#: .\cookbook\forms.py:269 +#: .\cookbook\forms.py:272 msgid "" "Leave empty for dropbox and enter only base url for nextcloud (/remote." "php/webdav/ is added automatically)" @@ -197,26 +193,25 @@ msgstr "" "Für Dropbox leer lassen, für Nextcloud Server-URL angeben (/remote.php/" "webdav/ wird automatisch hinzugefügt)" -#: .\cookbook\forms.py:307 +#: .\cookbook\forms.py:310 msgid "Search String" msgstr "Suchwort" -#: .\cookbook\forms.py:334 +#: .\cookbook\forms.py:337 msgid "File ID" msgstr "Datei-ID" -#: .\cookbook\forms.py:370 +#: .\cookbook\forms.py:373 msgid "You must provide at least a recipe or a title." msgstr "Mindestens ein Rezept oder ein Titel müssen angegeben werden." -#: .\cookbook\forms.py:383 +#: .\cookbook\forms.py:386 msgid "You can list default users to share recipes with in the settings." msgstr "" "Sie können in den Einstellungen Standardbenutzer auflisten, für die Sie " "Rezepte freigeben möchten." -#: .\cookbook\forms.py:384 -#: .\cookbook\templates\forms\edit_internal_recipe.html:427 +#: .\cookbook\forms.py:387 msgid "" "You can use markdown to format this field. See the docs here" @@ -224,15 +219,15 @@ msgstr "" "Markdown kann genutzt werden, um dieses Feld zu formatieren. Siehe hier für weitere Information" -#: .\cookbook\forms.py:409 +#: .\cookbook\forms.py:412 msgid "Maximum number of users for this space reached." msgstr "Maximale Nutzer-Anzahl wurde für diesen Space erreicht." -#: .\cookbook\forms.py:415 +#: .\cookbook\forms.py:418 msgid "Email address already taken!" msgstr "Email-Adresse ist bereits vergeben!" -#: .\cookbook\forms.py:423 +#: .\cookbook\forms.py:426 msgid "" "An email address is not required but if present the invite link will be send " "to the user." @@ -240,14 +235,84 @@ msgstr "" "Eine Email-Adresse wird nicht benötigt, aber falls vorhanden, wird der " "Einladungslink zum Benutzer geschickt." -#: .\cookbook\forms.py:438 +#: .\cookbook\forms.py:441 msgid "Name already taken." msgstr "Name wird bereits verwendet." -#: .\cookbook\forms.py:449 +#: .\cookbook\forms.py:452 msgid "Accept Terms and Privacy" msgstr "AGBs und Datenschutz akzeptieren" +#: .\cookbook\forms.py:487 +msgid "" +"Select type method of search. Click here for " +"full desciption of choices." +msgstr "" + +#: .\cookbook\forms.py:488 +msgid "" +"Use fuzzy matching on units, keywords and ingredients when editing and " +"importing recipes." +msgstr "" + +#: .\cookbook\forms.py:489 +msgid "" +"Fields to search ignoring accents. Selecting this option can improve or " +"degrade search quality depending on language" +msgstr "" + +#: .\cookbook\forms.py:490 +msgid "" +"Fields to search for partial matches. (e.g. searching for 'Pie' will return " +"'pie' and 'piece' and 'soapie')" +msgstr "" + +#: .\cookbook\forms.py:491 +msgid "" +"Fields to search for beginning of word matches. (e.g. searching for 'sa' " +"will return 'salad' and 'sandwich')" +msgstr "" + +#: .\cookbook\forms.py:492 +msgid "" +"Fields to 'fuzzy' search. (e.g. searching for 'recpie' will find 'recipe'.) " +"Note: this option will conflict with 'web' and 'raw' methods of search." +msgstr "" + +#: .\cookbook\forms.py:493 +msgid "" +"Fields to full text search. Note: 'web', 'phrase', and 'raw' search methods " +"only function with fulltext fields." +msgstr "" + +#: .\cookbook\forms.py:497 +msgid "Search Method" +msgstr "Suchmethode" + +#: .\cookbook\forms.py:498 +msgid "Fuzzy Lookups" +msgstr "Unpräzise Suche" + +#: .\cookbook\forms.py:499 +msgid "Ignore Accent" +msgstr "Akzente ignorieren" + +#: .\cookbook\forms.py:500 +msgid "Partial Match" +msgstr "Teilweise Übereinstimmung" + +#: .\cookbook\forms.py:501 +msgid "Starts Wtih" +msgstr "Beginnt mit" + +#: .\cookbook\forms.py:502 +msgid "Fuzzy Search" +msgstr "Unpräzise Suche" + +#: .\cookbook\forms.py:503 +msgid "Full Text" +msgstr "Volltext" + #: .\cookbook\helper\AllAuthCustomAdapter.py:36 msgid "" "In order to prevent spam, the requested email was not send. Please wait a " @@ -256,36 +321,36 @@ msgstr "" "Um Spam zu vermeiden, wurde die angeforderte Email nicht gesendet. Bitte " "warte ein paar Minuten und versuche es erneut." -#: .\cookbook\helper\permission_helper.py:138 -#: .\cookbook\helper\permission_helper.py:161 .\cookbook\views\views.py:151 +#: .\cookbook\helper\permission_helper.py:136 +#: .\cookbook\helper\permission_helper.py:159 .\cookbook\views\views.py:150 msgid "You are not logged in and therefore cannot view this page!" msgstr "Du bist nicht angemeldet, daher kannst du diese Seite nicht sehen!" -#: .\cookbook\helper\permission_helper.py:142 -#: .\cookbook\helper\permission_helper.py:148 -#: .\cookbook\helper\permission_helper.py:173 -#: .\cookbook\helper\permission_helper.py:218 -#: .\cookbook\helper\permission_helper.py:232 -#: .\cookbook\helper\permission_helper.py:243 -#: .\cookbook\helper\permission_helper.py:254 .\cookbook\views\data.py:40 -#: .\cookbook\views\views.py:162 .\cookbook\views\views.py:169 -#: .\cookbook\views\views.py:259 +#: .\cookbook\helper\permission_helper.py:140 +#: .\cookbook\helper\permission_helper.py:146 +#: .\cookbook\helper\permission_helper.py:171 +#: .\cookbook\helper\permission_helper.py:216 +#: .\cookbook\helper\permission_helper.py:230 +#: .\cookbook\helper\permission_helper.py:241 +#: .\cookbook\helper\permission_helper.py:252 .\cookbook\views\data.py:40 +#: .\cookbook\views\views.py:161 .\cookbook\views\views.py:168 +#: .\cookbook\views\views.py:245 msgid "You do not have the required permissions to view this page!" msgstr "Du hast nicht die notwendigen Rechte um diese Seite zu sehen!" -#: .\cookbook\helper\permission_helper.py:166 -#: .\cookbook\helper\permission_helper.py:189 -#: .\cookbook\helper\permission_helper.py:204 +#: .\cookbook\helper\permission_helper.py:164 +#: .\cookbook\helper\permission_helper.py:187 +#: .\cookbook\helper\permission_helper.py:202 msgid "You cannot interact with this object as it is not owned by you!" msgstr "" "Du kannst mit diesem Objekt nicht interagieren, da es dir nicht gehört!" -#: .\cookbook\helper\template_helper.py:60 -#: .\cookbook\helper\template_helper.py:62 +#: .\cookbook\helper\template_helper.py:61 +#: .\cookbook\helper\template_helper.py:63 msgid "Could not parse template code." msgstr "Konnte den Template code nicht verarbeiten." -#: .\cookbook\integration\integration.py:104 +#: .\cookbook\integration\integration.py:119 #: .\cookbook\templates\import.html:14 .\cookbook\templates\import.html:20 #: .\cookbook\templates\import_response.html:7 #: .\cookbook\templates\test.html:14 .\cookbook\templates\test.html:20 @@ -294,11 +359,11 @@ msgstr "Konnte den Template code nicht verarbeiten." #: .\cookbook\templates\url_import.html:123 #: .\cookbook\templates\url_import.html:317 #: .\cookbook\templates\url_import.html:604 .\cookbook\views\delete.py:60 -#: .\cookbook\views\edit.py:199 +#: .\cookbook\views\edit.py:197 msgid "Import" msgstr "Importieren" -#: .\cookbook\integration\integration.py:185 +#: .\cookbook\integration\integration.py:200 msgid "" "Importer expected a .zip file. Did you choose the correct importer type for " "your data ?" @@ -306,7 +371,7 @@ msgstr "" "Importer erwartet eine .zip Datei. Hast du den richtigen Importer-Typ für " "deine Daten ausgewählt?" -#: .\cookbook\integration\integration.py:188 +#: .\cookbook\integration\integration.py:203 msgid "" "An unexpected error occurred during the import. Please make sure you have " "uploaded a valid file." @@ -314,11 +379,11 @@ msgstr "" "Ein unerwarteter Fehler trat beim Importieren auf. Bitte stelle sicher, dass " "die hochgeladene Datei gültig ist." -#: .\cookbook\integration\integration.py:192 +#: .\cookbook\integration\integration.py:208 msgid "The following recipes were ignored because they already existed:" msgstr "Die folgenden Rezepte wurden ignoriert da sie bereits existieren:" -#: .\cookbook\integration\integration.py:196 +#: .\cookbook\integration\integration.py:212 #, python-format msgid "Imported %s recipes." msgstr "%s Rezepte importiert." @@ -336,11 +401,9 @@ msgid "Source" msgstr "Quelle" #: .\cookbook\integration\safron.py:23 -#: .\cookbook\templates\forms\edit_internal_recipe.html:79 #: .\cookbook\templates\include\log_cooking.html:16 #: .\cookbook\templates\url_import.html:224 #: .\cookbook\templates\url_import.html:455 -#, fuzzy msgid "Servings" msgstr "Portionen" @@ -349,7 +412,6 @@ msgid "Waiting time" msgstr "Wartezeit" #: .\cookbook\integration\safron.py:27 -#: .\cookbook\templates\forms\edit_internal_recipe.html:73 msgid "Preparation Time" msgstr "Vorbereitungszeit" @@ -363,6 +425,22 @@ msgstr "Kochbuch" msgid "Section" msgstr "Sektion" +#: .\cookbook\management\commands\rebuildindex.py:14 +msgid "Rebuilds full text search index on Recipe" +msgstr "" + +#: .\cookbook\management\commands\rebuildindex.py:18 +msgid "Only Postgress databases use full text search, no index to rebuild" +msgstr "" + +#: .\cookbook\management\commands\rebuildindex.py:29 +msgid "Recipe index rebuild complete." +msgstr "" + +#: .\cookbook\management\commands\rebuildindex.py:31 +msgid "Recipe index rebuild failed." +msgstr "" + #: .\cookbook\migrations\0047_auto_20200602_1133.py:14 msgid "Breakfast" msgstr "Frühstück" @@ -379,7 +457,7 @@ msgstr "Abendessen" msgid "Other" msgstr "Andere" -#: .\cookbook\models.py:72 +#: .\cookbook\models.py:144 msgid "" "Maximum file storage for space in MB. 0 for unlimited, -1 to disable file " "upload." @@ -387,72 +465,85 @@ msgstr "" "Maximale Datei-Speichergröße in MB. 0 für unbegrenzt, -1 um den Datei-Upload " "zu deaktivieren." -#: .\cookbook\models.py:123 .\cookbook\templates\search.html:7 +#: .\cookbook\models.py:196 .\cookbook\templates\search.html:7 #: .\cookbook\templates\shopping_list.html:52 msgid "Search" -msgstr "Suche" +msgstr "Suchen" -#: .\cookbook\models.py:124 .\cookbook\templates\base.html:92 +#: .\cookbook\models.py:197 .\cookbook\templates\base.html:82 #: .\cookbook\templates\meal_plan.html:5 .\cookbook\views\delete.py:152 -#: .\cookbook\views\edit.py:233 .\cookbook\views\new.py:201 +#: .\cookbook\views\edit.py:231 .\cookbook\views\new.py:200 msgid "Meal-Plan" msgstr "Essensplan" -#: .\cookbook\models.py:125 .\cookbook\templates\base.html:89 +#: .\cookbook\models.py:198 .\cookbook\templates\base.html:90 msgid "Books" msgstr "Bücher" -#: .\cookbook\models.py:133 +#: .\cookbook\models.py:206 msgid "Small" msgstr "Klein" -#: .\cookbook\models.py:133 +#: .\cookbook\models.py:206 msgid "Large" msgstr "Groß" -#: .\cookbook\models.py:133 .\cookbook\templates\generic\new_template.html:6 +#: .\cookbook\models.py:206 .\cookbook\templates\generic\new_template.html:6 #: .\cookbook\templates\generic\new_template.html:14 #: .\cookbook\templates\meal_plan.html:323 msgid "New" msgstr "Neu" -#: .\cookbook\models.py:338 -#: .\cookbook\templates\forms\edit_internal_recipe.html:202 +#: .\cookbook\models.py:389 +msgid " is part of a recipe step and cannot be deleted" +msgstr " ist Teil eines Rezepts und kann nicht gelöscht werden" + +#: .\cookbook\models.py:429 msgid "Text" msgstr "Text" -#: .\cookbook\models.py:338 -#: .\cookbook\templates\forms\edit_internal_recipe.html:203 +#: .\cookbook\models.py:429 msgid "Time" msgstr "Zeit" -#: .\cookbook\models.py:338 -#: .\cookbook\templates\forms\edit_internal_recipe.html:204 -#: .\cookbook\templates\forms\edit_internal_recipe.html:219 +#: .\cookbook\models.py:429 #, fuzzy #| msgid "File ID" msgid "File" msgstr "Datei-ID" -#: .\cookbook\models.py:338 -#: .\cookbook\templates\forms\edit_internal_recipe.html:205 -#: .\cookbook\templates\forms\edit_internal_recipe.html:241 +#: .\cookbook\models.py:429 #: .\cookbook\templates\include\recipe_open_modal.html:7 #: .\cookbook\templates\meal_plan.html:247 .\cookbook\views\delete.py:28 -#: .\cookbook\views\edit.py:273 .\cookbook\views\new.py:52 +#: .\cookbook\views\edit.py:271 .\cookbook\views\new.py:52 msgid "Recipe" msgstr "Rezept" -#: .\cookbook\serializer.py:109 +#: .\cookbook\models.py:836 .\cookbook\templates\search_info.html:28 +msgid "Simple" +msgstr "" + +#: .\cookbook\models.py:837 .\cookbook\templates\search_info.html:33 +msgid "Phrase" +msgstr "" + +#: .\cookbook\models.py:838 .\cookbook\templates\search_info.html:38 +msgid "Web" +msgstr "" + +#: .\cookbook\models.py:839 .\cookbook\templates\search_info.html:47 +msgid "Raw" +msgstr "" + +#: .\cookbook\serializer.py:112 msgid "File uploads are not enabled for this Space." msgstr "Datei-Uploads sind in diesem Space nicht aktiviert." -#: .\cookbook\serializer.py:117 +#: .\cookbook\serializer.py:125 msgid "You have reached your file upload limit." msgstr "Du hast Dein Datei-Uploadlimit erreicht." -#: .\cookbook\tables.py:35 .\cookbook\templates\books.html:36 -#: .\cookbook\templates\generic\edit_template.html:6 +#: .\cookbook\tables.py:35 .\cookbook\templates\generic\edit_template.html:6 #: .\cookbook\templates\generic\edit_template.html:14 #: .\cookbook\templates\meal_plan.html:281 #: .\cookbook\templates\recipes_table.html:82 @@ -461,11 +552,10 @@ msgstr "Du hast Dein Datei-Uploadlimit erreicht." msgid "Edit" msgstr "Bearbeiten" -#: .\cookbook\tables.py:124 .\cookbook\tables.py:147 -#: .\cookbook\templates\books.html:38 +#: .\cookbook\tables.py:115 .\cookbook\tables.py:138 #: .\cookbook\templates\generic\delete_template.html:5 #: .\cookbook\templates\generic\delete_template.html:13 -#: .\cookbook\templates\generic\edit_template.html:27 +#: .\cookbook\templates\generic\edit_template.html:28 #: .\cookbook\templates\meal_plan.html:277 #: .\cookbook\templates\recipes_table.html:90 msgid "Delete" @@ -495,7 +585,7 @@ msgstr "Email-Adressen" #: .\cookbook\templates\account\email.html:12 #: .\cookbook\templates\account\password_change.html:11 #: .\cookbook\templates\account\password_set.html:11 -#: .\cookbook\templates\base.html:154 .\cookbook\templates\settings.html:6 +#: .\cookbook\templates\base.html:204 .\cookbook\templates\settings.html:6 #: .\cookbook\templates\settings.html:17 #: .\cookbook\templates\socialaccount\connections.html:10 msgid "Settings" @@ -582,7 +672,7 @@ msgstr "" " ist." #: .\cookbook\templates\account\email_confirm.html:22 -#: .\cookbook\templates\generic\delete_template.html:21 +#: .\cookbook\templates\generic\delete_template.html:22 msgid "Confirm" msgstr "Bestätigen" @@ -597,7 +687,7 @@ msgstr "" " beantrage einen neuen Email-" "Bestätigungslink." -#: .\cookbook\templates\account\login.html:8 .\cookbook\templates\base.html:189 +#: .\cookbook\templates\account\login.html:8 .\cookbook\templates\base.html:234 msgid "Login" msgstr "Anmelden" @@ -652,7 +742,7 @@ msgstr "Passwort zurücksetzen" #: .\cookbook\templates\account\password_change.html:12 #: .\cookbook\templates\account\password_set.html:12 -#: .\cookbook\templates\settings.html:52 +#: .\cookbook\templates\settings.html:64 #, fuzzy #| msgid "Password Reset" msgid "Password" @@ -744,101 +834,86 @@ msgstr "Registrierung geschlossen" msgid "We are sorry, but the sign up is currently closed." msgstr "Es tut uns Leid, aber die Registrierung ist derzeit geschlossen." -#: .\cookbook\templates\api_info.html:5 .\cookbook\templates\base.html:179 +#: .\cookbook\templates\api_info.html:5 .\cookbook\templates\base.html:222 #: .\cookbook\templates\rest_framework\api.html:11 msgid "API Documentation" msgstr "API-Dokumentation" -#: .\cookbook\templates\base.html:85 -msgid "Utensils" -msgstr "Utensilien" - -#: .\cookbook\templates\base.html:95 +#: .\cookbook\templates\base.html:86 msgid "Shopping" msgstr "Einkaufsliste" -#: .\cookbook\templates\base.html:101 +#: .\cookbook\templates\base.html:113 +msgid "Keyword" +msgstr "Schlagwort" + +#: .\cookbook\templates\base.html:137 +#: .\cookbook\templates\forms\ingredients.html:24 +#: .\cookbook\templates\space.html:41 .\cookbook\templates\stats.html:26 +#: .\cookbook\views\lists.py:146 +msgid "Units" +msgstr "Einheiten" + +#: .\cookbook\templates\base.html:151 #: .\cookbook\templates\shopping_list.html:230 #: .\cookbook\templates\supermarket.html:7 msgid "Supermarket" msgstr "Supermarkt" -#: .\cookbook\templates\base.html:112 .\cookbook\views\delete.py:84 -#: .\cookbook\views\edit.py:102 .\cookbook\views\lists.py:26 -#: .\cookbook\views\new.py:78 -msgid "Keyword" -msgstr "Schlagwort" - -#: .\cookbook\templates\base.html:114 +#: .\cookbook\templates\base.html:163 msgid "Batch Edit" msgstr "Massenbearbeitung" -#: .\cookbook\templates\base.html:119 -msgid "Storage Data" -msgstr "Datenquellen" - -#: .\cookbook\templates\base.html:123 -msgid "Storage Backends" -msgstr "Speicherquellen" - -#: .\cookbook\templates\base.html:125 -msgid "Configure Sync" -msgstr "Synchronisation einstellen" - -#: .\cookbook\templates\base.html:127 -msgid "Discovered Recipes" -msgstr "Entdeckte Rezepte" - -#: .\cookbook\templates\base.html:129 -msgid "Discovery Log" -msgstr "Entdeckungsverlauf" - -#: .\cookbook\templates\base.html:131 .\cookbook\templates\stats.html:10 -msgid "Statistics" -msgstr "Statistiken" - -#: .\cookbook\templates\base.html:133 -msgid "Units & Ingredients" -msgstr "Einheiten & Zutaten" - -#: .\cookbook\templates\base.html:135 .\cookbook\templates\index.html:47 -msgid "Import Recipe" -msgstr "Rezept importieren" - -#: .\cookbook\templates\base.html:156 .\cookbook\templates\history.html:6 +#: .\cookbook\templates\base.html:175 .\cookbook\templates\history.html:6 #: .\cookbook\templates\history.html:14 msgid "History" msgstr "Verlauf" -#: .\cookbook\templates\base.html:159 .\cookbook\templates\space.html:7 +#: .\cookbook\templates\base.html:191 .\cookbook\templates\index.html:47 +msgid "Import Recipe" +msgstr "Rezept importieren" + +#: .\cookbook\templates\base.html:193 +#: .\cookbook\templates\shopping_list.html:188 +#: .\cookbook\templates\shopping_list.html:210 +msgid "Create" +msgstr "Erstellen" + +#: .\cookbook\templates\base.html:207 .\cookbook\templates\space.html:7 #: .\cookbook\templates\space.html:19 msgid "Space Settings" msgstr "Space Einstellungen" -#: .\cookbook\templates\base.html:163 .\cookbook\templates\system.html:13 +#: .\cookbook\templates\base.html:212 .\cookbook\templates\system.html:13 msgid "System" msgstr "System" -#: .\cookbook\templates\base.html:165 .\cookbook\templates\base.html:171 +#: .\cookbook\templates\base.html:214 msgid "Admin" msgstr "Admin" -#: .\cookbook\templates\base.html:175 +#: .\cookbook\templates\base.html:218 msgid "Markdown Guide" msgstr "Markdown-Anleitung" -#: .\cookbook\templates\base.html:177 +#: .\cookbook\templates\base.html:220 msgid "GitHub" msgstr "GitHub" -#: .\cookbook\templates\base.html:181 +#: .\cookbook\templates\base.html:224 msgid "API Browser" msgstr "API Browser" -#: .\cookbook\templates\base.html:184 +#: .\cookbook\templates\base.html:227 msgid "Log out" msgstr "Ausloggen" +#: .\cookbook\templates\base.html:229 +#: .\cookbook\templates\generic\list_template.html:14 +#: .\cookbook\templates\space.html:58 .\cookbook\templates\stats.html:43 +msgid "External Recipes" +msgstr "Externe Rezepte" + #: .\cookbook\templates\batch\edit.html:6 msgid "Batch edit Category" msgstr "Kategorie-Massenbearbeitung" @@ -853,7 +928,7 @@ msgstr "" "Ausgewählte Schlagwörter zu allen Rezepten, die das Suchwort enthalten, " "hinzufügen" -#: .\cookbook\templates\batch\monitor.html:6 .\cookbook\views\edit.py:85 +#: .\cookbook\templates\batch\monitor.html:6 .\cookbook\views\edit.py:83 msgid "Sync" msgstr "Synchronisieren" @@ -873,10 +948,28 @@ msgstr "" msgid "The path must be in the following format" msgstr "Der Pfad muss folgendes Format haben" -#: .\cookbook\templates\batch\monitor.html:27 +#: .\cookbook\templates\batch\monitor.html:21 +#, fuzzy +#| msgid "Manage Email Settings" +msgid "Manage External Storage" +msgstr "Email-Einstellungen verwalten" + +#: .\cookbook\templates\batch\monitor.html:28 msgid "Sync Now!" msgstr "Jetzt Synchronisieren!" +#: .\cookbook\templates\batch\monitor.html:29 +#, fuzzy +#| msgid "Shopping Recipes" +msgid "Show Recipes" +msgstr "Einkaufs-Rezepte" + +#: .\cookbook\templates\batch\monitor.html:30 +#, fuzzy +#| msgid "Show Links" +msgid "Show Log" +msgstr "Links anzeigen" + #: .\cookbook\templates\batch\waiting.html:4 #: .\cookbook\templates\batch\waiting.html:10 msgid "Importing Recipes" @@ -890,32 +983,10 @@ msgstr "" "Abhängig von der Anzahl der Rezepte kann dieser Vorgang einige Minuten " "dauern, bitte gedulde dich ein wenig." -#: .\cookbook\templates\books.html:5 .\cookbook\templates\books.html:11 +#: .\cookbook\templates\books.html:7 msgid "Recipe Books" msgstr "Rezeptbuch" -#: .\cookbook\templates\books.html:15 -msgid "New Book" -msgstr "Neues Buch" - -#: .\cookbook\templates\books.html:27 .\cookbook\templates\recipe_view.html:26 -msgid "by" -msgstr "von" - -#: .\cookbook\templates\books.html:34 -msgid "Toggle Recipes" -msgstr "Rezepte umschalten" - -#: .\cookbook\templates\books.html:54 -#: .\cookbook\templates\meal_plan_entry.html:48 -#: .\cookbook\templates\recipes_table.html:64 -msgid "Last cooked" -msgstr "Zuletzt gekocht" - -#: .\cookbook\templates\books.html:71 -msgid "There are no recipes in this book yet." -msgstr "In diesem Buch sind bisher noch keine Rezepte." - #: .\cookbook\templates\export.html:6 .\cookbook\templates\test2.html:6 msgid "Export Recipes" msgstr "Rezepte exportieren" @@ -936,213 +1007,21 @@ msgid "Import new Recipe" msgstr "Rezept importieren" #: .\cookbook\templates\forms\edit_import_recipe.html:14 -#: .\cookbook\templates\forms\edit_internal_recipe.html:439 -#: .\cookbook\templates\forms\edit_internal_recipe.html:471 #: .\cookbook\templates\generic\edit_template.html:23 #: .\cookbook\templates\generic\new_template.html:23 #: .\cookbook\templates\include\log_cooking.html:28 #: .\cookbook\templates\meal_plan.html:325 -#: .\cookbook\templates\settings.html:46 .\cookbook\templates\settings.html:87 -#: .\cookbook\templates\settings.html:105 +#: .\cookbook\templates\settings.html:58 .\cookbook\templates\settings.html:99 +#: .\cookbook\templates\settings.html:117 +#: .\cookbook\templates\settings.html:162 #: .\cookbook\templates\shopping_list.html:353 msgid "Save" msgstr "Speichern" #: .\cookbook\templates\forms\edit_internal_recipe.html:7 -#: .\cookbook\templates\forms\edit_internal_recipe.html:34 msgid "Edit Recipe" msgstr "Rezept bearbeiten" -#: .\cookbook\templates\forms\edit_internal_recipe.html:56 -#: .\cookbook\templates\url_import.html:171 -msgid "Description" -msgstr "Beschreibung" - -#: .\cookbook\templates\forms\edit_internal_recipe.html:76 -msgid "Waiting Time" -msgstr "Wartezeit" - -#: .\cookbook\templates\forms\edit_internal_recipe.html:82 -msgid "Servings Text" -msgstr "Portionen-Text" - -#: .\cookbook\templates\forms\edit_internal_recipe.html:93 -msgid "Select Keywords" -msgstr "Schlagwörter wählen" - -#: .\cookbook\templates\forms\edit_internal_recipe.html:94 -#: .\cookbook\templates\url_import.html:583 -msgid "Add Keyword" -msgstr "Schlagwort hinzufügen" - -#: .\cookbook\templates\forms\edit_internal_recipe.html:112 -msgid "Nutrition" -msgstr "Nährwerte" - -#: .\cookbook\templates\forms\edit_internal_recipe.html:116 -#: .\cookbook\templates\forms\edit_internal_recipe.html:166 -msgid "Delete Step" -msgstr "Schritt löschen" - -#: .\cookbook\templates\forms\edit_internal_recipe.html:120 -msgid "Calories" -msgstr "Kalorien" - -#: .\cookbook\templates\forms\edit_internal_recipe.html:123 -msgid "Carbohydrates" -msgstr "Kohlenhydrate" - -#: .\cookbook\templates\forms\edit_internal_recipe.html:126 -msgid "Fats" -msgstr "Fette" - -#: .\cookbook\templates\forms\edit_internal_recipe.html:128 -msgid "Proteins" -msgstr "Proteine" - -#: .\cookbook\templates\forms\edit_internal_recipe.html:150 -#: .\cookbook\templates\forms\edit_internal_recipe.html:504 -msgid "Step" -msgstr "Schritt" - -#: .\cookbook\templates\forms\edit_internal_recipe.html:171 -msgid "Show as header" -msgstr "Als Überschrift anzeigen" - -#: .\cookbook\templates\forms\edit_internal_recipe.html:177 -msgid "Hide as header" -msgstr "Nicht als Überschrift anzeigen" - -#: .\cookbook\templates\forms\edit_internal_recipe.html:182 -msgid "Move Up" -msgstr "Nach oben" - -#: .\cookbook\templates\forms\edit_internal_recipe.html:187 -msgid "Move Down" -msgstr "Nach unten" - -#: .\cookbook\templates\forms\edit_internal_recipe.html:196 -msgid "Step Name" -msgstr "Name des Schritts" - -#: .\cookbook\templates\forms\edit_internal_recipe.html:200 -msgid "Step Type" -msgstr "Art des Schritts" - -#: .\cookbook\templates\forms\edit_internal_recipe.html:213 -msgid "Step time in Minutes" -msgstr "Zeit in Minuten" - -#: .\cookbook\templates\forms\edit_internal_recipe.html:229 -msgid "Select File" -msgstr "Datei auswählen" - -#: .\cookbook\templates\forms\edit_internal_recipe.html:230 -#: .\cookbook\templates\forms\edit_internal_recipe.html:252 -#: .\cookbook\templates\forms\edit_internal_recipe.html:313 -#: .\cookbook\templates\forms\edit_internal_recipe.html:337 -#: .\cookbook\templates\shopping_list.html:189 -#: .\cookbook\templates\shopping_list.html:211 -#: .\cookbook\templates\shopping_list.html:241 -#: .\cookbook\templates\shopping_list.html:265 -#: .\cookbook\templates\url_import.html:495 -#: .\cookbook\templates\url_import.html:527 -msgid "Select" -msgstr "Auswählen" - -#: .\cookbook\templates\forms\edit_internal_recipe.html:251 -#, fuzzy -#| msgid "Delete Recipe" -msgid "Select Recipe" -msgstr "Rezept löschen" - -#: .\cookbook\templates\forms\edit_internal_recipe.html:311 -#: .\cookbook\templates\shopping_list.html:187 -msgid "Select Unit" -msgstr "Einheit wählen" - -#: .\cookbook\templates\forms\edit_internal_recipe.html:312 -#: .\cookbook\templates\forms\edit_internal_recipe.html:336 -#: .\cookbook\templates\shopping_list.html:188 -#: .\cookbook\templates\shopping_list.html:210 -msgid "Create" -msgstr "Erstellen" - -#: .\cookbook\templates\forms\edit_internal_recipe.html:335 -#: .\cookbook\templates\shopping_list.html:209 -msgid "Select Food" -msgstr "Zutat auswählen" - -#: .\cookbook\templates\forms\edit_internal_recipe.html:352 -#: .\cookbook\templates\meal_plan.html:256 -#: .\cookbook\templates\url_import.html:542 -msgid "Note" -msgstr "Notiz" - -#: .\cookbook\templates\forms\edit_internal_recipe.html:369 -msgid "Delete Ingredient" -msgstr "Zutat löschen" - -#: .\cookbook\templates\forms\edit_internal_recipe.html:375 -msgid "Make Header" -msgstr "Überschrift erstellen" - -#: .\cookbook\templates\forms\edit_internal_recipe.html:381 -msgid "Make Ingredient" -msgstr "Zutat erstellen" - -#: .\cookbook\templates\forms\edit_internal_recipe.html:387 -msgid "Disable Amount" -msgstr "Menge deaktivieren" - -#: .\cookbook\templates\forms\edit_internal_recipe.html:393 -msgid "Enable Amount" -msgstr "Menge aktivieren" - -#: .\cookbook\templates\forms\edit_internal_recipe.html:398 -msgid "Copy Template Reference" -msgstr "Kopiere Vorlagen-Referenz" - -#: .\cookbook\templates\forms\edit_internal_recipe.html:424 -#: .\cookbook\templates\url_import.html:297 -#: .\cookbook\templates\url_import.html:567 -msgid "Instructions" -msgstr "Anleitung" - -#: .\cookbook\templates\forms\edit_internal_recipe.html:437 -#: .\cookbook\templates\forms\edit_internal_recipe.html:468 -msgid "Save & View" -msgstr "Speichern & Ansehen" - -#: .\cookbook\templates\forms\edit_internal_recipe.html:441 -#: .\cookbook\templates\forms\edit_internal_recipe.html:474 -msgid "Add Step" -msgstr "Schritt hinzufügen" - -#: .\cookbook\templates\forms\edit_internal_recipe.html:444 -#: .\cookbook\templates\forms\edit_internal_recipe.html:478 -msgid "Add Nutrition" -msgstr "Nährwerte hinzufügen" - -#: .\cookbook\templates\forms\edit_internal_recipe.html:446 -#: .\cookbook\templates\forms\edit_internal_recipe.html:480 -msgid "Remove Nutrition" -msgstr "Nährwerte entfernen" - -#: .\cookbook\templates\forms\edit_internal_recipe.html:448 -#: .\cookbook\templates\forms\edit_internal_recipe.html:483 -msgid "View Recipe" -msgstr "Rezept ansehen" - -#: .\cookbook\templates\forms\edit_internal_recipe.html:450 -#: .\cookbook\templates\forms\edit_internal_recipe.html:485 -msgid "Delete Recipe" -msgstr "Rezept löschen" - -#: .\cookbook\templates\forms\edit_internal_recipe.html:491 -msgid "Steps" -msgstr "Schritte" - #: .\cookbook\templates\forms\ingredients.html:15 msgid "Edit Ingredients" msgstr "Zutaten bearbeiten" @@ -1165,11 +1044,6 @@ msgstr "" "entsprechenden Rezepte.\n" " " -#: .\cookbook\templates\forms\ingredients.html:24 -#: .\cookbook\templates\space.html:41 .\cookbook\templates\stats.html:26 -msgid "Units" -msgstr "Einheiten" - #: .\cookbook\templates\forms\ingredients.html:26 msgid "Are you sure that you want to merge these two units?" msgstr "" @@ -1185,30 +1059,34 @@ msgid "Are you sure that you want to merge these two ingredients?" msgstr "" "Bist du dir sicher, dass du diese beiden Zutaten zusammenführen möchtest?" -#: .\cookbook\templates\generic\delete_template.html:18 +#: .\cookbook\templates\generic\delete_template.html:19 #, python-format msgid "Are you sure you want to delete the %(title)s: %(object)s " msgstr "" "Bist du sicher, dass %(title)s: %(object)s gelöscht werden soll?" -#: .\cookbook\templates\generic\edit_template.html:30 +#: .\cookbook\templates\generic\delete_template.html:23 +msgid "Cancel" +msgstr "" + +#: .\cookbook\templates\generic\edit_template.html:32 msgid "View" msgstr "Anschauen" -#: .\cookbook\templates\generic\edit_template.html:34 +#: .\cookbook\templates\generic\edit_template.html:36 msgid "Delete original file" msgstr "Original löschen" #: .\cookbook\templates\generic\list_template.html:6 -#: .\cookbook\templates\generic\list_template.html:12 +#: .\cookbook\templates\generic\list_template.html:21 msgid "List" msgstr "Liste" -#: .\cookbook\templates\generic\list_template.html:25 +#: .\cookbook\templates\generic\list_template.html:34 msgid "Filter" msgstr "Filter" -#: .\cookbook\templates\generic\list_template.html:30 +#: .\cookbook\templates\generic\list_template.html:39 msgid "Import all" msgstr "Alle importieren" @@ -1544,6 +1422,11 @@ msgstr "Hilfe anzeigen" msgid "Week iCal export" msgstr "Woche als iCal exportieren" +#: .\cookbook\templates\meal_plan.html:256 +#: .\cookbook\templates\url_import.html:542 +msgid "Note" +msgstr "Notiz" + #: .\cookbook\templates\meal_plan.html:264 #: .\cookbook\templates\meal_plan_entry.html:18 msgid "Created by" @@ -1630,6 +1513,11 @@ msgstr "" msgid "Meal Plan View" msgstr "Plan-Ansicht" +#: .\cookbook\templates\meal_plan_entry.html:48 +#: .\cookbook\templates\recipes_table.html:64 +msgid "Last cooked" +msgstr "Zuletzt gekocht" + #: .\cookbook\templates\meal_plan_entry.html:50 msgid "Never cooked before." msgstr "Noch nie gekocht." @@ -1735,8 +1623,12 @@ msgstr "" msgid "Comments" msgstr "Kommentare" +#: .\cookbook\templates\recipe_view.html:26 +msgid "by" +msgstr "von" + #: .\cookbook\templates\recipe_view.html:44 .\cookbook\views\delete.py:118 -#: .\cookbook\views\edit.py:179 +#: .\cookbook\views\edit.py:177 msgid "Comment" msgstr "Kommentar" @@ -1768,54 +1660,225 @@ msgstr "Kochen protokollieren" msgid "Recipe Home" msgstr "Rezept-Hauptseite" -#: .\cookbook\templates\settings.html:25 +#: .\cookbook\templates\search_info.html:5 +#: .\cookbook\templates\search_info.html:9 +#: .\cookbook\templates\settings.html:157 +#, fuzzy +#| msgid "Search String" +msgid "Search Settings" +msgstr "Suchwort" + +#: .\cookbook\templates\search_info.html:10 +msgid "" +"\n" +" Creating the best search experience is complicated and weighs " +"heavily on your personal configuration. \n" +" Changing any of the search settings can have significant impact on " +"the speed and quality of the results.\n" +" Search Methods, Trigrams and Full Text Search configurations are " +"only available if you are using Postgres for your database.\n" +" " +msgstr "" + +#: .\cookbook\templates\search_info.html:19 +#, fuzzy +#| msgid "Search" +msgid "Search Methods" +msgstr "Suche" + +#: .\cookbook\templates\search_info.html:23 +msgid "" +" \n" +" Full text searches attempt to normalize the words provided to " +"match common variants. For example: 'forked', 'forking', 'forks' will all " +"normalize to 'fork'.\n" +" There are several methods available, described below, that will " +"control how the search behavior should react when multiple words are " +"searched.\n" +" Full technical details on how these operate can be viewed on Postgresql's website.\n" +" " +msgstr "" + +#: .\cookbook\templates\search_info.html:29 +msgid "" +" \n" +" Simple searches ignore punctuation and common words such as " +"'the', 'a', 'and'. And will treat seperate words as required.\n" +" Searching for 'apple or flour' will return any recipe that " +"includes both 'apple' and 'flour' anywhere in the fields that have been " +"selected for a full text search.\n" +" " +msgstr "" + +#: .\cookbook\templates\search_info.html:34 +msgid "" +" \n" +" Phrase searches ignore punctuation, but will search for all of " +"the words in the exact order provided.\n" +" Searching for 'apple or flour' will only return a recipe that " +"includes the exact phrase 'apple or flour' in any of the fields that have " +"been selected for a full text search.\n" +" " +msgstr "" + +#: .\cookbook\templates\search_info.html:39 +msgid "" +" \n" +" Web searches simulate functionality found on many web search " +"sites supporting special syntax.\n" +" Placing quotes around several words will convert those words " +"into a phrase.\n" +" 'or' is recongized as searching for the word (or phrase) " +"immediately before 'or' OR the word (or phrase) directly after.\n" +" '-' is recognized as searching for recipes that do not include " +"the word (or phrase) that comes immediately after. \n" +" For example searching for 'apple pie' or cherry -butter will " +"return any recipe that includes the phrase 'apple pie' or the word " +"'cherry' \n" +" in any field included in the full text search but exclude any " +"recipe that has the word 'butter' in any field included.\n" +" " +msgstr "" + +#: .\cookbook\templates\search_info.html:48 +msgid "" +" \n" +" Raw search is similar to Web except will take puncuation " +"operators such as '|', '&' and '()'\n" +" " +msgstr "" + +#: .\cookbook\templates\search_info.html:59 +msgid "" +" \n" +" Another approach to searching that also requires Postgresql is " +"fuzzy search or trigram similarity. A trigram is a group of three " +"consecutive characters.\n" +" For example searching for 'apple' will create x trigrams 'app', " +"'ppl', 'ple' and will create a score of how closely words match the " +"generated trigrams.\n" +" One benefit of searching trigams is that a search for 'sandwich' " +"will find mispelled words such as 'sandwhich' that would be missed by other " +"methods.\n" +" " +msgstr "" + +#: .\cookbook\templates\search_info.html:69 +#, fuzzy +#| msgid "Search Recipe" +msgid "Search Fields" +msgstr "Rezept suchen" + +#: .\cookbook\templates\search_info.html:73 +msgid "" +" \n" +" Unaccent is a special case in that it enables searching a field " +"'unaccented' for each search style attempting to ignore accented values. \n" +" For example when you enable unaccent for 'Name' any search " +"(starts with, contains, trigram) will attempt the search ignoring accented " +"characters.\n" +" \n" +" For the other options, you can enable search on any or all " +"fields and they will be combined together with an assumed 'OR'.\n" +" For example enabling 'Name' for Starts With, 'Name' and " +"'Description' for Partial Match and 'Ingredients' and 'Keywords' for Full " +"Search\n" +" and searching for 'apple' will generate a search that will " +"return recipes that have:\n" +" - A recipe name that starts with 'apple'\n" +" - OR a recipe name that contains 'apple'\n" +" - OR a recipe description that contains 'apple'\n" +" - OR a recipe that will have a full text search match ('apple' " +"or 'apples') in ingredients\n" +" - OR a recipe that will have a full text search match in " +"Keywords\n" +"\n" +" Combining too many fields in too many types of search can have a " +"negative impact on performance, create duplicate results or return " +"unexpected results.\n" +" For example, enabling fuzzy search or partial matches will " +"interfere with web search methods. \n" +" Searching for 'apple -pie' with fuzzy search and full text " +"search will return the recipe Apple Pie. Though it is not included in the " +"full text results, it does match the trigram results.\n" +" " +msgstr "" + +#: .\cookbook\templates\search_info.html:95 +#, fuzzy +#| msgid "Search" +msgid "Search Index" +msgstr "Suche" + +#: .\cookbook\templates\search_info.html:99 +msgid "" +" \n" +" Trigram search and Full Text Search both rely on database " +"indexes to perform effectively. \n" +" You can rebuild the indexes on all fields in the Admin page for " +"Recipes and selecting all recipes and running 'rebuild index for selected " +"recipes'\n" +" You can also rebuild indexes at the command line by executing " +"the management command 'python manage.py rebuildindex'\n" +" " +msgstr "" + +#: .\cookbook\templates\settings.html:27 msgid "Account" msgstr "Account" -#: .\cookbook\templates\settings.html:29 +#: .\cookbook\templates\settings.html:33 msgid "Preferences" msgstr "Präferenzen" -#: .\cookbook\templates\settings.html:33 +#: .\cookbook\templates\settings.html:39 msgid "API-Settings" msgstr "API-Einstellungen" -#: .\cookbook\templates\settings.html:41 +#: .\cookbook\templates\settings.html:45 +#, fuzzy +#| msgid "Search String" +msgid "Search-Settings" +msgstr "Suchwort" + +#: .\cookbook\templates\settings.html:53 msgid "Name Settings" msgstr "Namen-Einstellungen" -#: .\cookbook\templates\settings.html:49 +#: .\cookbook\templates\settings.html:61 #, fuzzy #| msgid "Account Connections" msgid "Account Settings" msgstr "Account-Verbindungen" -#: .\cookbook\templates\settings.html:51 +#: .\cookbook\templates\settings.html:63 #, fuzzy #| msgid "Add E-mail" msgid "Emails" msgstr "Email hinzufügen" -#: .\cookbook\templates\settings.html:54 +#: .\cookbook\templates\settings.html:66 #: .\cookbook\templates\socialaccount\connections.html:11 #, fuzzy #| msgid "Social Login" msgid "Social" msgstr "Social Login" -#: .\cookbook\templates\settings.html:66 +#: .\cookbook\templates\settings.html:78 msgid "Language" msgstr "Sprache" -#: .\cookbook\templates\settings.html:96 +#: .\cookbook\templates\settings.html:108 msgid "Style" msgstr "Stil" -#: .\cookbook\templates\settings.html:116 +#: .\cookbook\templates\settings.html:128 msgid "API Token" msgstr "API-Token" -#: .\cookbook\templates\settings.html:117 +#: .\cookbook\templates\settings.html:129 msgid "" "You can use both basic authentication and token based authentication to " "access the REST API." @@ -1823,7 +1886,7 @@ msgstr "" "Sowohl Basic Authentication als auch tokenbasierte Authentifizierung können " "für die REST-API verwendet werden." -#: .\cookbook\templates\settings.html:134 +#: .\cookbook\templates\settings.html:146 msgid "" "Use the token as an Authorization header prefixed by the word token as shown " "in the following examples:" @@ -1831,7 +1894,7 @@ msgstr "" "Nutz den Token als Authorization-Header mit der Präfix \"Token\" wie in " "folgendem Beispiel:" -#: .\cookbook\templates\settings.html:136 +#: .\cookbook\templates\settings.html:148 msgid "or" msgstr "oder" @@ -1874,6 +1937,23 @@ msgstr "Eintrag hinzufügen" msgid "Amount" msgstr "Menge" +#: .\cookbook\templates\shopping_list.html:187 +msgid "Select Unit" +msgstr "Einheit wählen" + +#: .\cookbook\templates\shopping_list.html:189 +#: .\cookbook\templates\shopping_list.html:211 +#: .\cookbook\templates\shopping_list.html:241 +#: .\cookbook\templates\shopping_list.html:265 +#: .\cookbook\templates\url_import.html:495 +#: .\cookbook\templates\url_import.html:527 +msgid "Select" +msgstr "Auswählen" + +#: .\cookbook\templates\shopping_list.html:209 +msgid "Select Food" +msgstr "Zutat auswählen" + #: .\cookbook\templates\shopping_list.html:240 msgid "Select Supermarket" msgstr "Supermarkt auswählen" @@ -1982,10 +2062,6 @@ msgstr "Objekt-Statistiken" msgid "Recipes without Keywords" msgstr "Rezepte ohne Schlagwort" -#: .\cookbook\templates\space.html:58 .\cookbook\templates\stats.html:43 -msgid "External Recipes" -msgstr "Externe Rezepte" - #: .\cookbook\templates\space.html:60 .\cookbook\templates\stats.html:45 msgid "Internal Recipes" msgstr "Interne Rezepte" @@ -2039,7 +2115,7 @@ msgid "There are no members in your space yet!" msgstr "In diesem Space sind bisher noch keine Mitglieder!" #: .\cookbook\templates\space.html:130 .\cookbook\templates\system.html:21 -#: .\cookbook\views\lists.py:115 +#: .\cookbook\views\lists.py:100 msgid "Invite Links" msgstr "Einladungslinks" @@ -2047,6 +2123,10 @@ msgstr "Einladungslinks" msgid "Stats" msgstr "Statistiken" +#: .\cookbook\templates\stats.html:10 +msgid "Statistics" +msgstr "Statistiken" + #: .\cookbook\templates\system.html:22 msgid "Show Links" msgstr "Links anzeigen" @@ -2222,6 +2302,10 @@ msgstr "" msgid "Text dragged here will be appended to the name." msgstr "" +#: .\cookbook\templates\url_import.html:171 +msgid "Description" +msgstr "Beschreibung" + #: .\cookbook\templates\url_import.html:175 msgid "Text dragged here will be appended to the description." msgstr "" @@ -2246,6 +2330,11 @@ msgstr "Kochzeit" msgid "Ingredients dragged here will be appended to current list." msgstr "" +#: .\cookbook\templates\url_import.html:297 +#: .\cookbook\templates\url_import.html:567 +msgid "Instructions" +msgstr "Anleitung" + #: .\cookbook\templates\url_import.html:302 msgid "" "Recipe instructions dragged here will be appended to current instructions." @@ -2295,6 +2384,10 @@ msgstr "Rezept Beschreibung" msgid "Select one" msgstr "Auswählen" +#: .\cookbook\templates\url_import.html:583 +msgid "Add Keyword" +msgstr "Schlagwort hinzufügen" + #: .\cookbook\templates\url_import.html:596 msgid "All Keywords" msgstr "Alle Schlagwörter" @@ -2334,48 +2427,107 @@ msgstr "GitHub-Issues" msgid "Recipe Markup Specification" msgstr "Rezept-Markup-Spezifikation" -#: .\cookbook\views\api.py:79 +#: .\cookbook\views\api.py:82 .\cookbook\views\api.py:131 msgid "Parameter updated_at incorrectly formatted" msgstr "Der Parameter updated_at ist falsch formatiert" -#: .\cookbook\views\api.py:580 .\cookbook\views\views.py:303 +#: .\cookbook\views\api.py:151 +#, python-brace-format +msgid "No {self.basename} with id {pk} exists" +msgstr "" + +#: .\cookbook\views\api.py:155 .\cookbook\views\edit.py:300 +#: .\cookbook\views\edit.py:316 +msgid "Cannot merge with the same object!" +msgstr "Zusammenführen mit selben Objekt nicht möglich!" + +#: .\cookbook\views\api.py:162 +#, python-brace-format +msgid "No {self.basename} with id {target} exists" +msgstr "" + +#: .\cookbook\views\api.py:167 +#, fuzzy +#| msgid "Cannot merge with the same object!" +msgid "Cannot merge with child object!" +msgstr "Zusammenführen mit selben Objekt nicht möglich!" + +#: .\cookbook\views\api.py:195 +#, python-brace-format +msgid "{source.name} was merged successfully with {target.name}" +msgstr "" + +#: .\cookbook\views\api.py:199 +#, python-brace-format +msgid "An error occurred attempting to merge {source.name} with {target.name}" +msgstr "" + +#: .\cookbook\views\api.py:239 +#, python-brace-format +msgid "No {self.basename} with id {child} exists" +msgstr "" + +#: .\cookbook\views\api.py:248 +#, python-brace-format +msgid "{child.name} was moved successfully to the root." +msgstr "" + +#: .\cookbook\views\api.py:251 .\cookbook\views\api.py:269 +msgid "An error occurred attempting to move " +msgstr "" + +#: .\cookbook\views\api.py:254 +msgid "Cannot move an object to itself!" +msgstr "" + +#: .\cookbook\views\api.py:260 +#, python-brace-format +msgid "No {self.basename} with id {parent} exists" +msgstr "" + +#: .\cookbook\views\api.py:266 +#, python-brace-format +msgid "{child.name} was moved successfully to parent {parent.name}" +msgstr "" + +#: .\cookbook\views\api.py:704 .\cookbook\views\views.py:289 msgid "This feature is not available in the demo version!" msgstr "Diese Funktion ist in der Demo-Version nicht verfügbar!" -#: .\cookbook\views\api.py:603 +#: .\cookbook\views\api.py:727 msgid "Sync successful!" msgstr "Synchronisation erfolgreich!" -#: .\cookbook\views\api.py:608 +#: .\cookbook\views\api.py:732 msgid "Error synchronizing with Storage" msgstr "Fehler beim Synchronisieren" -#: .\cookbook\views\api.py:686 +#: .\cookbook\views\api.py:810 msgid "Nothing to do." msgstr "Nichts zu tun." -#: .\cookbook\views\api.py:701 +#: .\cookbook\views\api.py:825 msgid "The requested site provided malformed data and cannot be read." msgstr "" "Die angefragte Seite hat ungültige Daten zurückgegeben oder die Daten " "konnten nicht verarbeitet werden." -#: .\cookbook\views\api.py:708 +#: .\cookbook\views\api.py:832 msgid "The requested page could not be found." msgstr "Die angefragte Seite konnte nicht gefunden werden." -#: .\cookbook\views\api.py:717 +#: .\cookbook\views\api.py:841 msgid "" "The requested site does not provide any recognized data format to import the " "recipe from." msgstr "" "Die angefragte Seite stellt keine bekannten Datenformate zur Verfügung." -#: .\cookbook\views\api.py:731 +#: .\cookbook\views\api.py:855 msgid "No useable data could be found." msgstr "Es konnten keine nutzbaren Daten gefunden werden." -#: .\cookbook\views\api.py:747 +#: .\cookbook\views\api.py:871 msgid "I couldn't find anything to do." msgstr "Ich konnte nichts zu tun finden." @@ -2403,8 +2555,8 @@ msgstr[1] "" msgid "Monitor" msgstr "Überwachen" -#: .\cookbook\views\delete.py:96 .\cookbook\views\lists.py:102 -#: .\cookbook\views\new.py:98 +#: .\cookbook\views\delete.py:96 .\cookbook\views\lists.py:86 +#: .\cookbook\views\new.py:97 msgid "Storage Backend" msgstr "Speicherquelle" @@ -2415,8 +2567,8 @@ msgstr "" "Speicherquelle konnte nicht gelöscht werden, da sie in mindestens einem " "Monitor verwendet wird." -#: .\cookbook\views\delete.py:129 .\cookbook\views\edit.py:213 -#: .\cookbook\views\new.py:156 +#: .\cookbook\views\delete.py:129 .\cookbook\views\edit.py:211 +#: .\cookbook\views\new.py:155 msgid "Recipe Book" msgstr "Rezeptbuch" @@ -2424,47 +2576,39 @@ msgstr "Rezeptbuch" msgid "Bookmarks" msgstr "Lesezeichen" -#: .\cookbook\views\delete.py:163 .\cookbook\views\new.py:252 +#: .\cookbook\views\delete.py:163 .\cookbook\views\new.py:251 msgid "Invite Link" msgstr "Einladungslink" -#: .\cookbook\views\edit.py:119 -msgid "Food" -msgstr "Lebensmittel" - -#: .\cookbook\views\edit.py:128 +#: .\cookbook\views\edit.py:126 msgid "You cannot edit this storage!" msgstr "Du kannst diese Speicherquelle nicht bearbeiten!" -#: .\cookbook\views\edit.py:148 +#: .\cookbook\views\edit.py:146 msgid "Storage saved!" msgstr "Speicherquelle gespeichert!" -#: .\cookbook\views\edit.py:154 +#: .\cookbook\views\edit.py:152 msgid "There was an error updating this storage backend!" msgstr "Es gab einen Fehler beim Aktualisieren dieser Speicherquelle!" -#: .\cookbook\views\edit.py:165 +#: .\cookbook\views\edit.py:163 msgid "Storage" msgstr "Speicher" -#: .\cookbook\views\edit.py:261 +#: .\cookbook\views\edit.py:259 msgid "Changes saved!" msgstr "Änderungen gespeichert!" -#: .\cookbook\views\edit.py:265 +#: .\cookbook\views\edit.py:263 msgid "Error saving changes!" msgstr "Fehler beim Speichern der Daten!" -#: .\cookbook\views\edit.py:299 +#: .\cookbook\views\edit.py:298 msgid "Units merged!" msgstr "Einheiten zusammengeführt!" -#: .\cookbook\views\edit.py:301 .\cookbook\views\edit.py:317 -msgid "Cannot merge with the same object!" -msgstr "Zusammenführen mit selben Objekt nicht möglich!" - -#: .\cookbook\views\edit.py:315 +#: .\cookbook\views\edit.py:314 msgid "Foods merged!" msgstr "Zutaten zusammengeführt!" @@ -2476,55 +2620,73 @@ msgstr "Importieren ist für diesen Anbieter noch nicht implementiert" msgid "Exporting is not implemented for this provider" msgstr "Exportieren ist für diesen Anbieter noch nicht implementiert" -#: .\cookbook\views\lists.py:40 +#: .\cookbook\views\lists.py:26 msgid "Import Log" msgstr "Importverlauf" -#: .\cookbook\views\lists.py:53 +#: .\cookbook\views\lists.py:39 msgid "Discovery" msgstr "Entdecken" -#: .\cookbook\views\lists.py:85 +#: .\cookbook\views\lists.py:69 msgid "Shopping Lists" msgstr "Einkaufslisten" -#: .\cookbook\views\new.py:123 +#: .\cookbook\views\lists.py:129 +#, fuzzy +#| msgid "Food" +msgid "Foods" +msgstr "Lebensmittel" + +#: .\cookbook\views\lists.py:163 +#, fuzzy +#| msgid "Supermarket" +msgid "Supermarkets" +msgstr "Supermarkt" + +#: .\cookbook\views\lists.py:179 +#, fuzzy +#| msgid "Shopping Recipes" +msgid "Shopping Categories" +msgstr "Einkaufs-Rezepte" + +#: .\cookbook\views\new.py:122 msgid "Imported new recipe!" msgstr "Neues Rezept importiert!" -#: .\cookbook\views\new.py:126 +#: .\cookbook\views\new.py:125 msgid "There was an error importing this recipe!" msgstr "Beim Importieren des Rezeptes ist ein Fehler aufgetreten!" -#: .\cookbook\views\new.py:226 +#: .\cookbook\views\new.py:225 msgid "Hello" msgstr "Hallo" -#: .\cookbook\views\new.py:226 +#: .\cookbook\views\new.py:225 msgid "You have been invited by " msgstr "Du wurdest eingeladen von " -#: .\cookbook\views\new.py:227 +#: .\cookbook\views\new.py:226 #, fuzzy msgid " to join their Tandoor Recipes space " msgstr " um deren Tandoor Recipes Space " -#: .\cookbook\views\new.py:228 +#: .\cookbook\views\new.py:227 msgid "Click the following link to activate your account: " msgstr "Klicke auf den folgenden Link, um deinen Account zu aktivieren: " -#: .\cookbook\views\new.py:229 +#: .\cookbook\views\new.py:228 msgid "" "If the link does not work use the following code to manually join the space: " msgstr "" "Falls der Link nicht funktioniert, benutze den folgenden Code um dem Space " "manuell beizutreten: " -#: .\cookbook\views\new.py:230 +#: .\cookbook\views\new.py:229 msgid "The invitation is valid until " msgstr "Die Einladung ist gültig bis " -#: .\cookbook\views\new.py:231 +#: .\cookbook\views\new.py:230 #, fuzzy msgid "" "Tandoor Recipes is an Open Source recipe manager. Check it out on GitHub " @@ -2532,16 +2694,16 @@ msgstr "" "Tandoor Recipes ist ein Open-Source Rezept-Manager. Sieh es Dir auf GitHub " "an " -#: .\cookbook\views\new.py:234 +#: .\cookbook\views\new.py:233 #, fuzzy msgid "Tandoor Recipes Invite" msgstr "Tandoor Recipes Einladung" -#: .\cookbook\views\new.py:241 +#: .\cookbook\views\new.py:240 msgid "Invite link successfully send to user." msgstr "Einladungslink erfolgreich an Benutzer gesendet." -#: .\cookbook\views\new.py:244 +#: .\cookbook\views\new.py:243 msgid "" "You have send to many emails, please share the link manually or wait a few " "hours." @@ -2549,13 +2711,13 @@ msgstr "" "Du hast zu viele Email gesendet. Bitte teile den Link manuell oder warte ein " "paar Stunden." -#: .\cookbook\views\new.py:246 +#: .\cookbook\views\new.py:245 msgid "Email to user could not be send, please share link manually." msgstr "" "Email konnte an den Benutzer nicht gesendet werden. Bitte teile den Link " "manuell." -#: .\cookbook\views\views.py:129 +#: .\cookbook\views\views.py:128 msgid "" "You have successfully created your own recipe space. Start by adding some " "recipes or invite other people to join you." @@ -2563,16 +2725,30 @@ msgstr "" "Du hast erfolgreich deinen eigenen Rezept-Space erstellt. Beginne, indem Du " "ein paar Rezepte hinzufügst oder weitere Leute einlädst." -#: .\cookbook\views\views.py:177 +#: .\cookbook\views\views.py:176 msgid "You do not have the required permissions to perform this action!" msgstr "" "Du hast nicht die notwendige Berechtigung, um diese Aktion durchzuführen!" -#: .\cookbook\views\views.py:188 +#: .\cookbook\views\views.py:187 msgid "Comment saved!" msgstr "Kommentar gespeichert!" -#: .\cookbook\views\views.py:395 +#: .\cookbook\views\views.py:351 +msgid "You must select at least one field to search!" +msgstr "" + +#: .\cookbook\views\views.py:354 +msgid "" +"To use this search method you must select at least one full text search " +"field!" +msgstr "" + +#: .\cookbook\views\views.py:357 +msgid "Fuzzy search is not compatible with this search method!" +msgstr "" + +#: .\cookbook\views\views.py:437 msgid "" "The setup page can only be used to create the first user! If you have " "forgotten your superuser credentials please consult the django documentation " @@ -2581,53 +2757,178 @@ msgstr "" "Die Setup-Seite kann nur für den ersten Nutzer verwendet werden. Zum " "Zurücksetzen von Passwörtern bitte der Django-Dokumentation folgen." -#: .\cookbook\views\views.py:402 +#: .\cookbook\views\views.py:444 msgid "Passwords dont match!" msgstr "Passwörter stimmen nicht überein!" -#: .\cookbook\views\views.py:418 +#: .\cookbook\views\views.py:460 msgid "User has been created, please login!" msgstr "Benutzer wurde erstellt, bitte einloggen!" -#: .\cookbook\views\views.py:434 +#: .\cookbook\views\views.py:476 msgid "Malformed Invite Link supplied!" msgstr "Fehlerhafter Einladungslink angegeben!" -#: .\cookbook\views\views.py:441 +#: .\cookbook\views\views.py:483 msgid "You are already member of a space and therefore cannot join this one." msgstr "" "Du bist bereits Mitglied eines Space, daher kannst du diesem Space nicht " "beitreten." -#: .\cookbook\views\views.py:452 +#: .\cookbook\views\views.py:494 msgid "Successfully joined space." msgstr "Space erfolgreich beigetreten." -#: .\cookbook\views\views.py:458 +#: .\cookbook\views\views.py:500 msgid "Invite Link not valid or already used!" msgstr "Einladungslink ungültig oder bereits genutzt!" -#: .\cookbook\views\views.py:522 +#: .\cookbook\views\views.py:564 msgid "" "Reporting share links is not enabled for this instance. Please notify the " "page administrator to report problems." msgstr "" -#: .\cookbook\views\views.py:528 +#: .\cookbook\views\views.py:570 msgid "" "Recipe sharing link has been disabled! For additional information please " "contact the page administrator." msgstr "" +#~ msgid "Utensils" +#~ msgstr "Utensilien" + +#~ msgid "Storage Data" +#~ msgstr "Datenquellen" + +#~ msgid "Storage Backends" +#~ msgstr "Speicherquellen" + +#~ msgid "Configure Sync" +#~ msgstr "Synchronisation einstellen" + +#~ msgid "Discovered Recipes" +#~ msgstr "Entdeckte Rezepte" + +#~ msgid "Discovery Log" +#~ msgstr "Entdeckungsverlauf" + +#~ msgid "Units & Ingredients" +#~ msgstr "Einheiten & Zutaten" + +#~ msgid "New Book" +#~ msgstr "Neues Buch" + +#~ msgid "Toggle Recipes" +#~ msgstr "Rezepte umschalten" + +#~ msgid "There are no recipes in this book yet." +#~ msgstr "In diesem Buch sind bisher noch keine Rezepte." + +#~ msgid "Waiting Time" +#~ msgstr "Wartezeit" + +#~ msgid "Servings Text" +#~ msgstr "Portionen-Text" + +#~ msgid "Select Keywords" +#~ msgstr "Schlagwörter wählen" + +#~ msgid "Nutrition" +#~ msgstr "Nährwerte" + +#~ msgid "Delete Step" +#~ msgstr "Schritt löschen" + +#~ msgid "Calories" +#~ msgstr "Kalorien" + +#~ msgid "Carbohydrates" +#~ msgstr "Kohlenhydrate" + +#~ msgid "Fats" +#~ msgstr "Fette" + +#~ msgid "Proteins" +#~ msgstr "Proteine" + +#~ msgid "Step" +#~ msgstr "Schritt" + +#~ msgid "Show as header" +#~ msgstr "Als Überschrift anzeigen" + +#~ msgid "Hide as header" +#~ msgstr "Nicht als Überschrift anzeigen" + +#~ msgid "Move Up" +#~ msgstr "Nach oben" + +#~ msgid "Move Down" +#~ msgstr "Nach unten" + +#~ msgid "Step Name" +#~ msgstr "Name des Schritts" + +#~ msgid "Step Type" +#~ msgstr "Art des Schritts" + +#~ msgid "Step time in Minutes" +#~ msgstr "Zeit in Minuten" + +#~ msgid "Select File" +#~ msgstr "Datei auswählen" + +#, fuzzy +#~| msgid "Delete Recipe" +#~ msgid "Select Recipe" +#~ msgstr "Rezept löschen" + +#~ msgid "Delete Ingredient" +#~ msgstr "Zutat löschen" + +#~ msgid "Make Header" +#~ msgstr "Überschrift erstellen" + +#~ msgid "Make Ingredient" +#~ msgstr "Zutat erstellen" + +#~ msgid "Disable Amount" +#~ msgstr "Menge deaktivieren" + +#~ msgid "Enable Amount" +#~ msgstr "Menge aktivieren" + +#~ msgid "Copy Template Reference" +#~ msgstr "Kopiere Vorlagen-Referenz" + +#~ msgid "Save & View" +#~ msgstr "Speichern & Ansehen" + +#~ msgid "Add Step" +#~ msgstr "Schritt hinzufügen" + +#~ msgid "Add Nutrition" +#~ msgstr "Nährwerte hinzufügen" + +#~ msgid "Remove Nutrition" +#~ msgstr "Nährwerte entfernen" + +#~ msgid "View Recipe" +#~ msgstr "Rezept ansehen" + +#~ msgid "Delete Recipe" +#~ msgstr "Rezept löschen" + +#~ msgid "Steps" +#~ msgstr "Schritte" + #~ msgid "Password Settings" #~ msgstr "Passwort-Einstellungen" #~ msgid "Email Settings" #~ msgstr "Email-Einstellungen" -#~ msgid "Manage Email Settings" -#~ msgstr "Email-Einstellungen verwalten" - #~ msgid "Manage Social Accounts" #~ msgstr "Social Accounts verwalten" diff --git a/cookbook/locale/en/LC_MESSAGES/django.mo b/cookbook/locale/en/LC_MESSAGES/django.mo index 71cbdf3e..4855a0f5 100644 Binary files a/cookbook/locale/en/LC_MESSAGES/django.mo and b/cookbook/locale/en/LC_MESSAGES/django.mo differ diff --git a/cookbook/locale/en/LC_MESSAGES/django.po b/cookbook/locale/en/LC_MESSAGES/django.po index c043275c..2f5d77e6 100644 --- a/cookbook/locale/en/LC_MESSAGES/django.po +++ b/cookbook/locale/en/LC_MESSAGES/django.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-08-12 15:09+0200\n" +"POT-Creation-Date: 2021-09-13 22:40+0200\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -18,49 +18,48 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: .\cookbook\filters.py:23 .\cookbook\templates\base.html:98 -#: .\cookbook\templates\forms\edit_internal_recipe.html:269 +#: .\cookbook\filters.py:23 .\cookbook\templates\base.html:125 #: .\cookbook\templates\forms\ingredients.html:34 #: .\cookbook\templates\space.html:43 .\cookbook\templates\stats.html:28 -#: .\cookbook\templates\url_import.html:270 .\cookbook\views\lists.py:67 +#: .\cookbook\templates\url_import.html:270 msgid "Ingredients" msgstr "" -#: .\cookbook\forms.py:49 +#: .\cookbook\forms.py:50 msgid "" "Color of the top navigation bar. Not all colors work with all themes, just " "try them out!" msgstr "" -#: .\cookbook\forms.py:51 +#: .\cookbook\forms.py:52 msgid "Default Unit to be used when inserting a new ingredient into a recipe." msgstr "" -#: .\cookbook\forms.py:53 +#: .\cookbook\forms.py:54 msgid "" "Enables support for fractions in ingredient amounts (e.g. convert decimals " "to fractions automatically)" msgstr "" -#: .\cookbook\forms.py:56 +#: .\cookbook\forms.py:57 msgid "" "Users with whom newly created meal plan/shopping list entries should be " "shared by default." msgstr "" -#: .\cookbook\forms.py:58 +#: .\cookbook\forms.py:59 msgid "Show recently viewed recipes on search page." msgstr "" -#: .\cookbook\forms.py:59 +#: .\cookbook\forms.py:60 msgid "Number of decimals to round ingredients." msgstr "" -#: .\cookbook\forms.py:60 +#: .\cookbook\forms.py:61 msgid "If you want to be able to create and see comments underneath recipes." msgstr "" -#: .\cookbook\forms.py:62 +#: .\cookbook\forms.py:63 msgid "" "Setting to 0 will disable auto sync. When viewing a shopping list the list " "is updated every set seconds to sync changes someone else might have made. " @@ -68,187 +67,253 @@ msgid "" "mobile data. If lower than instance limit it is reset when saving." msgstr "" -#: .\cookbook\forms.py:65 +#: .\cookbook\forms.py:66 msgid "Makes the navbar stick to the top of the page." msgstr "" -#: .\cookbook\forms.py:81 +#: .\cookbook\forms.py:82 msgid "" "Both fields are optional. If none are given the username will be displayed " "instead" msgstr "" -#: .\cookbook\forms.py:102 .\cookbook\forms.py:331 -#: .\cookbook\templates\forms\edit_internal_recipe.html:49 +#: .\cookbook\forms.py:103 .\cookbook\forms.py:334 #: .\cookbook\templates\url_import.html:154 msgid "Name" msgstr "" -#: .\cookbook\forms.py:103 .\cookbook\forms.py:332 -#: .\cookbook\templates\base.html:108 .\cookbook\templates\base.html:169 -#: .\cookbook\templates\forms\edit_internal_recipe.html:85 +#: .\cookbook\forms.py:104 .\cookbook\forms.py:335 #: .\cookbook\templates\space.html:39 .\cookbook\templates\stats.html:24 #: .\cookbook\templates\url_import.html:188 -#: .\cookbook\templates\url_import.html:573 +#: .\cookbook\templates\url_import.html:573 .\cookbook\views\lists.py:112 msgid "Keywords" msgstr "" -#: .\cookbook\forms.py:104 +#: .\cookbook\forms.py:105 msgid "Preparation time in minutes" msgstr "" -#: .\cookbook\forms.py:105 +#: .\cookbook\forms.py:106 msgid "Waiting time (cooking/baking) in minutes" msgstr "" -#: .\cookbook\forms.py:106 .\cookbook\forms.py:333 +#: .\cookbook\forms.py:107 .\cookbook\forms.py:336 msgid "Path" msgstr "" -#: .\cookbook\forms.py:107 +#: .\cookbook\forms.py:108 msgid "Storage UID" msgstr "" -#: .\cookbook\forms.py:133 +#: .\cookbook\forms.py:134 msgid "Default" msgstr "" -#: .\cookbook\forms.py:144 .\cookbook\templates\url_import.html:90 +#: .\cookbook\forms.py:145 .\cookbook\templates\url_import.html:90 msgid "" "To prevent duplicates recipes with the same name as existing ones are " "ignored. Check this box to import everything." msgstr "" -#: .\cookbook\forms.py:164 +#: .\cookbook\forms.py:165 msgid "New Unit" msgstr "" -#: .\cookbook\forms.py:165 +#: .\cookbook\forms.py:166 msgid "New unit that other gets replaced by." msgstr "" -#: .\cookbook\forms.py:170 +#: .\cookbook\forms.py:171 msgid "Old Unit" msgstr "" -#: .\cookbook\forms.py:171 +#: .\cookbook\forms.py:172 msgid "Unit that should be replaced." msgstr "" -#: .\cookbook\forms.py:187 +#: .\cookbook\forms.py:189 msgid "New Food" msgstr "" -#: .\cookbook\forms.py:188 +#: .\cookbook\forms.py:190 msgid "New food that other gets replaced by." msgstr "" -#: .\cookbook\forms.py:193 +#: .\cookbook\forms.py:195 msgid "Old Food" msgstr "" -#: .\cookbook\forms.py:194 +#: .\cookbook\forms.py:196 msgid "Food that should be replaced." msgstr "" -#: .\cookbook\forms.py:212 +#: .\cookbook\forms.py:214 msgid "Add your comment: " msgstr "" -#: .\cookbook\forms.py:253 +#: .\cookbook\forms.py:256 msgid "Leave empty for dropbox and enter app password for nextcloud." msgstr "" -#: .\cookbook\forms.py:260 +#: .\cookbook\forms.py:263 msgid "Leave empty for nextcloud and enter api token for dropbox." msgstr "" -#: .\cookbook\forms.py:269 +#: .\cookbook\forms.py:272 msgid "" "Leave empty for dropbox and enter only base url for nextcloud (/remote." "php/webdav/ is added automatically)" msgstr "" -#: .\cookbook\forms.py:307 +#: .\cookbook\forms.py:310 msgid "Search String" msgstr "" -#: .\cookbook\forms.py:334 +#: .\cookbook\forms.py:337 msgid "File ID" msgstr "" -#: .\cookbook\forms.py:370 +#: .\cookbook\forms.py:373 msgid "You must provide at least a recipe or a title." msgstr "" -#: .\cookbook\forms.py:383 +#: .\cookbook\forms.py:386 msgid "You can list default users to share recipes with in the settings." msgstr "" -#: .\cookbook\forms.py:384 -#: .\cookbook\templates\forms\edit_internal_recipe.html:427 +#: .\cookbook\forms.py:387 msgid "" "You can use markdown to format this field. See the docs here" msgstr "" -#: .\cookbook\forms.py:409 +#: .\cookbook\forms.py:412 msgid "Maximum number of users for this space reached." msgstr "" -#: .\cookbook\forms.py:415 +#: .\cookbook\forms.py:418 msgid "Email address already taken!" msgstr "" -#: .\cookbook\forms.py:423 +#: .\cookbook\forms.py:426 msgid "" "An email address is not required but if present the invite link will be send " "to the user." msgstr "" -#: .\cookbook\forms.py:438 +#: .\cookbook\forms.py:441 msgid "Name already taken." msgstr "" -#: .\cookbook\forms.py:449 +#: .\cookbook\forms.py:452 msgid "Accept Terms and Privacy" msgstr "" +#: .\cookbook\forms.py:487 +msgid "" +"Select type method of search. Click here for " +"full desciption of choices." +msgstr "" + +#: .\cookbook\forms.py:488 +msgid "" +"Use fuzzy matching on units, keywords and ingredients when editing and " +"importing recipes." +msgstr "" + +#: .\cookbook\forms.py:489 +msgid "" +"Fields to search ignoring accents. Selecting this option can improve or " +"degrade search quality depending on language" +msgstr "" + +#: .\cookbook\forms.py:490 +msgid "" +"Fields to search for partial matches. (e.g. searching for 'Pie' will return " +"'pie' and 'piece' and 'soapie')" +msgstr "" + +#: .\cookbook\forms.py:491 +msgid "" +"Fields to search for beginning of word matches. (e.g. searching for 'sa' " +"will return 'salad' and 'sandwich')" +msgstr "" + +#: .\cookbook\forms.py:492 +msgid "" +"Fields to 'fuzzy' search. (e.g. searching for 'recpie' will find 'recipe'.) " +"Note: this option will conflict with 'web' and 'raw' methods of search." +msgstr "" + +#: .\cookbook\forms.py:493 +msgid "" +"Fields to full text search. Note: 'web', 'phrase', and 'raw' search methods " +"only function with fulltext fields." +msgstr "" + +#: .\cookbook\forms.py:497 +msgid "Search Method" +msgstr "" + +#: .\cookbook\forms.py:498 +msgid "Fuzzy Lookups" +msgstr "" + +#: .\cookbook\forms.py:499 +msgid "Ignore Accent" +msgstr "" + +#: .\cookbook\forms.py:500 +msgid "Partial Match" +msgstr "" + +#: .\cookbook\forms.py:501 +msgid "Starts Wtih" +msgstr "" + +#: .\cookbook\forms.py:502 +msgid "Fuzzy Search" +msgstr "" + +#: .\cookbook\forms.py:503 +msgid "Full Text" +msgstr "" + #: .\cookbook\helper\AllAuthCustomAdapter.py:36 msgid "" "In order to prevent spam, the requested email was not send. Please wait a " "few minutes and try again." msgstr "" -#: .\cookbook\helper\permission_helper.py:138 -#: .\cookbook\helper\permission_helper.py:161 .\cookbook\views\views.py:151 +#: .\cookbook\helper\permission_helper.py:136 +#: .\cookbook\helper\permission_helper.py:159 .\cookbook\views\views.py:150 msgid "You are not logged in and therefore cannot view this page!" msgstr "" -#: .\cookbook\helper\permission_helper.py:142 -#: .\cookbook\helper\permission_helper.py:148 -#: .\cookbook\helper\permission_helper.py:173 -#: .\cookbook\helper\permission_helper.py:218 -#: .\cookbook\helper\permission_helper.py:232 -#: .\cookbook\helper\permission_helper.py:243 -#: .\cookbook\helper\permission_helper.py:254 .\cookbook\views\data.py:40 -#: .\cookbook\views\views.py:162 .\cookbook\views\views.py:169 -#: .\cookbook\views\views.py:259 +#: .\cookbook\helper\permission_helper.py:140 +#: .\cookbook\helper\permission_helper.py:146 +#: .\cookbook\helper\permission_helper.py:171 +#: .\cookbook\helper\permission_helper.py:216 +#: .\cookbook\helper\permission_helper.py:230 +#: .\cookbook\helper\permission_helper.py:241 +#: .\cookbook\helper\permission_helper.py:252 .\cookbook\views\data.py:40 +#: .\cookbook\views\views.py:161 .\cookbook\views\views.py:168 +#: .\cookbook\views\views.py:245 msgid "You do not have the required permissions to view this page!" msgstr "" -#: .\cookbook\helper\permission_helper.py:166 -#: .\cookbook\helper\permission_helper.py:189 -#: .\cookbook\helper\permission_helper.py:204 +#: .\cookbook\helper\permission_helper.py:164 +#: .\cookbook\helper\permission_helper.py:187 +#: .\cookbook\helper\permission_helper.py:202 msgid "You cannot interact with this object as it is not owned by you!" msgstr "" -#: .\cookbook\helper\template_helper.py:60 -#: .\cookbook\helper\template_helper.py:62 +#: .\cookbook\helper\template_helper.py:61 +#: .\cookbook\helper\template_helper.py:63 msgid "Could not parse template code." msgstr "" -#: .\cookbook\integration\integration.py:104 +#: .\cookbook\integration\integration.py:119 #: .\cookbook\templates\import.html:14 .\cookbook\templates\import.html:20 #: .\cookbook\templates\import_response.html:7 #: .\cookbook\templates\test.html:14 .\cookbook\templates\test.html:20 @@ -257,27 +322,27 @@ msgstr "" #: .\cookbook\templates\url_import.html:123 #: .\cookbook\templates\url_import.html:317 #: .\cookbook\templates\url_import.html:604 .\cookbook\views\delete.py:60 -#: .\cookbook\views\edit.py:199 +#: .\cookbook\views\edit.py:197 msgid "Import" msgstr "" -#: .\cookbook\integration\integration.py:185 +#: .\cookbook\integration\integration.py:200 msgid "" "Importer expected a .zip file. Did you choose the correct importer type for " "your data ?" msgstr "" -#: .\cookbook\integration\integration.py:188 +#: .\cookbook\integration\integration.py:203 msgid "" "An unexpected error occurred during the import. Please make sure you have " "uploaded a valid file." msgstr "" -#: .\cookbook\integration\integration.py:192 +#: .\cookbook\integration\integration.py:208 msgid "The following recipes were ignored because they already existed:" msgstr "" -#: .\cookbook\integration\integration.py:196 +#: .\cookbook\integration\integration.py:212 #, python-format msgid "Imported %s recipes." msgstr "" @@ -295,7 +360,6 @@ msgid "Source" msgstr "" #: .\cookbook\integration\safron.py:23 -#: .\cookbook\templates\forms\edit_internal_recipe.html:79 #: .\cookbook\templates\include\log_cooking.html:16 #: .\cookbook\templates\url_import.html:224 #: .\cookbook\templates\url_import.html:455 @@ -307,7 +371,6 @@ msgid "Waiting time" msgstr "" #: .\cookbook\integration\safron.py:27 -#: .\cookbook\templates\forms\edit_internal_recipe.html:73 msgid "Preparation Time" msgstr "" @@ -321,6 +384,22 @@ msgstr "" msgid "Section" msgstr "" +#: .\cookbook\management\commands\rebuildindex.py:14 +msgid "Rebuilds full text search index on Recipe" +msgstr "" + +#: .\cookbook\management\commands\rebuildindex.py:18 +msgid "Only Postgress databases use full text search, no index to rebuild" +msgstr "" + +#: .\cookbook\management\commands\rebuildindex.py:29 +msgid "Recipe index rebuild complete." +msgstr "" + +#: .\cookbook\management\commands\rebuildindex.py:31 +msgid "Recipe index rebuild failed." +msgstr "" + #: .\cookbook\migrations\0047_auto_20200602_1133.py:14 msgid "Breakfast" msgstr "" @@ -337,76 +416,89 @@ msgstr "" msgid "Other" msgstr "" -#: .\cookbook\models.py:72 +#: .\cookbook\models.py:144 msgid "" "Maximum file storage for space in MB. 0 for unlimited, -1 to disable file " "upload." msgstr "" -#: .\cookbook\models.py:123 .\cookbook\templates\search.html:7 +#: .\cookbook\models.py:196 .\cookbook\templates\search.html:7 #: .\cookbook\templates\shopping_list.html:52 msgid "Search" msgstr "" -#: .\cookbook\models.py:124 .\cookbook\templates\base.html:92 +#: .\cookbook\models.py:197 .\cookbook\templates\base.html:82 #: .\cookbook\templates\meal_plan.html:5 .\cookbook\views\delete.py:152 -#: .\cookbook\views\edit.py:233 .\cookbook\views\new.py:201 +#: .\cookbook\views\edit.py:231 .\cookbook\views\new.py:200 msgid "Meal-Plan" msgstr "" -#: .\cookbook\models.py:125 .\cookbook\templates\base.html:89 +#: .\cookbook\models.py:198 .\cookbook\templates\base.html:90 msgid "Books" msgstr "" -#: .\cookbook\models.py:133 +#: .\cookbook\models.py:206 msgid "Small" msgstr "" -#: .\cookbook\models.py:133 +#: .\cookbook\models.py:206 msgid "Large" msgstr "" -#: .\cookbook\models.py:133 .\cookbook\templates\generic\new_template.html:6 +#: .\cookbook\models.py:206 .\cookbook\templates\generic\new_template.html:6 #: .\cookbook\templates\generic\new_template.html:14 #: .\cookbook\templates\meal_plan.html:323 msgid "New" msgstr "" -#: .\cookbook\models.py:338 -#: .\cookbook\templates\forms\edit_internal_recipe.html:202 +#: .\cookbook\models.py:389 +msgid " is part of a recipe step and cannot be deleted" +msgstr "" + +#: .\cookbook\models.py:429 msgid "Text" msgstr "" -#: .\cookbook\models.py:338 -#: .\cookbook\templates\forms\edit_internal_recipe.html:203 +#: .\cookbook\models.py:429 msgid "Time" msgstr "" -#: .\cookbook\models.py:338 -#: .\cookbook\templates\forms\edit_internal_recipe.html:204 -#: .\cookbook\templates\forms\edit_internal_recipe.html:219 +#: .\cookbook\models.py:429 msgid "File" msgstr "" -#: .\cookbook\models.py:338 -#: .\cookbook\templates\forms\edit_internal_recipe.html:205 -#: .\cookbook\templates\forms\edit_internal_recipe.html:241 +#: .\cookbook\models.py:429 #: .\cookbook\templates\include\recipe_open_modal.html:7 #: .\cookbook\templates\meal_plan.html:247 .\cookbook\views\delete.py:28 -#: .\cookbook\views\edit.py:273 .\cookbook\views\new.py:52 +#: .\cookbook\views\edit.py:271 .\cookbook\views\new.py:52 msgid "Recipe" msgstr "" -#: .\cookbook\serializer.py:109 +#: .\cookbook\models.py:836 .\cookbook\templates\search_info.html:28 +msgid "Simple" +msgstr "" + +#: .\cookbook\models.py:837 .\cookbook\templates\search_info.html:33 +msgid "Phrase" +msgstr "" + +#: .\cookbook\models.py:838 .\cookbook\templates\search_info.html:38 +msgid "Web" +msgstr "" + +#: .\cookbook\models.py:839 .\cookbook\templates\search_info.html:47 +msgid "Raw" +msgstr "" + +#: .\cookbook\serializer.py:112 msgid "File uploads are not enabled for this Space." msgstr "" -#: .\cookbook\serializer.py:117 +#: .\cookbook\serializer.py:125 msgid "You have reached your file upload limit." msgstr "" -#: .\cookbook\tables.py:35 .\cookbook\templates\books.html:36 -#: .\cookbook\templates\generic\edit_template.html:6 +#: .\cookbook\tables.py:35 .\cookbook\templates\generic\edit_template.html:6 #: .\cookbook\templates\generic\edit_template.html:14 #: .\cookbook\templates\meal_plan.html:281 #: .\cookbook\templates\recipes_table.html:82 @@ -415,11 +507,10 @@ msgstr "" msgid "Edit" msgstr "" -#: .\cookbook\tables.py:124 .\cookbook\tables.py:147 -#: .\cookbook\templates\books.html:38 +#: .\cookbook\tables.py:115 .\cookbook\tables.py:138 #: .\cookbook\templates\generic\delete_template.html:5 #: .\cookbook\templates\generic\delete_template.html:13 -#: .\cookbook\templates\generic\edit_template.html:27 +#: .\cookbook\templates\generic\edit_template.html:28 #: .\cookbook\templates\meal_plan.html:277 #: .\cookbook\templates\recipes_table.html:90 msgid "Delete" @@ -449,7 +540,7 @@ msgstr "" #: .\cookbook\templates\account\email.html:12 #: .\cookbook\templates\account\password_change.html:11 #: .\cookbook\templates\account\password_set.html:11 -#: .\cookbook\templates\base.html:154 .\cookbook\templates\settings.html:6 +#: .\cookbook\templates\base.html:204 .\cookbook\templates\settings.html:6 #: .\cookbook\templates\settings.html:17 #: .\cookbook\templates\socialaccount\connections.html:10 msgid "Settings" @@ -525,7 +616,7 @@ msgid "" msgstr "" #: .\cookbook\templates\account\email_confirm.html:22 -#: .\cookbook\templates\generic\delete_template.html:21 +#: .\cookbook\templates\generic\delete_template.html:22 msgid "Confirm" msgstr "" @@ -537,7 +628,7 @@ msgid "" "request." msgstr "" -#: .\cookbook\templates\account\login.html:8 .\cookbook\templates\base.html:189 +#: .\cookbook\templates\account\login.html:8 .\cookbook\templates\base.html:234 msgid "Login" msgstr "" @@ -590,7 +681,7 @@ msgstr "" #: .\cookbook\templates\account\password_change.html:12 #: .\cookbook\templates\account\password_set.html:12 -#: .\cookbook\templates\settings.html:52 +#: .\cookbook\templates\settings.html:64 msgid "Password" msgstr "" @@ -672,101 +763,86 @@ msgstr "" msgid "We are sorry, but the sign up is currently closed." msgstr "" -#: .\cookbook\templates\api_info.html:5 .\cookbook\templates\base.html:179 +#: .\cookbook\templates\api_info.html:5 .\cookbook\templates\base.html:222 #: .\cookbook\templates\rest_framework\api.html:11 msgid "API Documentation" msgstr "" -#: .\cookbook\templates\base.html:85 -msgid "Utensils" -msgstr "" - -#: .\cookbook\templates\base.html:95 +#: .\cookbook\templates\base.html:86 msgid "Shopping" msgstr "" -#: .\cookbook\templates\base.html:101 +#: .\cookbook\templates\base.html:113 +msgid "Keyword" +msgstr "" + +#: .\cookbook\templates\base.html:137 +#: .\cookbook\templates\forms\ingredients.html:24 +#: .\cookbook\templates\space.html:41 .\cookbook\templates\stats.html:26 +#: .\cookbook\views\lists.py:146 +msgid "Units" +msgstr "" + +#: .\cookbook\templates\base.html:151 #: .\cookbook\templates\shopping_list.html:230 #: .\cookbook\templates\supermarket.html:7 msgid "Supermarket" msgstr "" -#: .\cookbook\templates\base.html:112 .\cookbook\views\delete.py:84 -#: .\cookbook\views\edit.py:102 .\cookbook\views\lists.py:26 -#: .\cookbook\views\new.py:78 -msgid "Keyword" -msgstr "" - -#: .\cookbook\templates\base.html:114 +#: .\cookbook\templates\base.html:163 msgid "Batch Edit" msgstr "" -#: .\cookbook\templates\base.html:119 -msgid "Storage Data" -msgstr "" - -#: .\cookbook\templates\base.html:123 -msgid "Storage Backends" -msgstr "" - -#: .\cookbook\templates\base.html:125 -msgid "Configure Sync" -msgstr "" - -#: .\cookbook\templates\base.html:127 -msgid "Discovered Recipes" -msgstr "" - -#: .\cookbook\templates\base.html:129 -msgid "Discovery Log" -msgstr "" - -#: .\cookbook\templates\base.html:131 .\cookbook\templates\stats.html:10 -msgid "Statistics" -msgstr "" - -#: .\cookbook\templates\base.html:133 -msgid "Units & Ingredients" -msgstr "" - -#: .\cookbook\templates\base.html:135 .\cookbook\templates\index.html:47 -msgid "Import Recipe" -msgstr "" - -#: .\cookbook\templates\base.html:156 .\cookbook\templates\history.html:6 +#: .\cookbook\templates\base.html:175 .\cookbook\templates\history.html:6 #: .\cookbook\templates\history.html:14 msgid "History" msgstr "" -#: .\cookbook\templates\base.html:159 .\cookbook\templates\space.html:7 +#: .\cookbook\templates\base.html:191 .\cookbook\templates\index.html:47 +msgid "Import Recipe" +msgstr "" + +#: .\cookbook\templates\base.html:193 +#: .\cookbook\templates\shopping_list.html:188 +#: .\cookbook\templates\shopping_list.html:210 +msgid "Create" +msgstr "" + +#: .\cookbook\templates\base.html:207 .\cookbook\templates\space.html:7 #: .\cookbook\templates\space.html:19 msgid "Space Settings" msgstr "" -#: .\cookbook\templates\base.html:163 .\cookbook\templates\system.html:13 +#: .\cookbook\templates\base.html:212 .\cookbook\templates\system.html:13 msgid "System" msgstr "" -#: .\cookbook\templates\base.html:165 .\cookbook\templates\base.html:171 +#: .\cookbook\templates\base.html:214 msgid "Admin" msgstr "" -#: .\cookbook\templates\base.html:175 +#: .\cookbook\templates\base.html:218 msgid "Markdown Guide" msgstr "" -#: .\cookbook\templates\base.html:177 +#: .\cookbook\templates\base.html:220 msgid "GitHub" msgstr "" -#: .\cookbook\templates\base.html:181 +#: .\cookbook\templates\base.html:224 msgid "API Browser" msgstr "" -#: .\cookbook\templates\base.html:184 +#: .\cookbook\templates\base.html:227 msgid "Log out" msgstr "" +#: .\cookbook\templates\base.html:229 +#: .\cookbook\templates\generic\list_template.html:14 +#: .\cookbook\templates\space.html:58 .\cookbook\templates\stats.html:43 +msgid "External Recipes" +msgstr "" + #: .\cookbook\templates\batch\edit.html:6 msgid "Batch edit Category" msgstr "" @@ -779,7 +855,7 @@ msgstr "" msgid "Add the specified keywords to all recipes containing a word" msgstr "" -#: .\cookbook\templates\batch\monitor.html:6 .\cookbook\views\edit.py:85 +#: .\cookbook\templates\batch\monitor.html:6 .\cookbook\views\edit.py:83 msgid "Sync" msgstr "" @@ -797,10 +873,22 @@ msgstr "" msgid "The path must be in the following format" msgstr "" -#: .\cookbook\templates\batch\monitor.html:27 +#: .\cookbook\templates\batch\monitor.html:21 +msgid "Manage External Storage" +msgstr "" + +#: .\cookbook\templates\batch\monitor.html:28 msgid "Sync Now!" msgstr "" +#: .\cookbook\templates\batch\monitor.html:29 +msgid "Show Recipes" +msgstr "" + +#: .\cookbook\templates\batch\monitor.html:30 +msgid "Show Log" +msgstr "" + #: .\cookbook\templates\batch\waiting.html:4 #: .\cookbook\templates\batch\waiting.html:10 msgid "Importing Recipes" @@ -812,32 +900,10 @@ msgid "" "please wait." msgstr "" -#: .\cookbook\templates\books.html:5 .\cookbook\templates\books.html:11 +#: .\cookbook\templates\books.html:7 msgid "Recipe Books" msgstr "" -#: .\cookbook\templates\books.html:15 -msgid "New Book" -msgstr "" - -#: .\cookbook\templates\books.html:27 .\cookbook\templates\recipe_view.html:26 -msgid "by" -msgstr "" - -#: .\cookbook\templates\books.html:34 -msgid "Toggle Recipes" -msgstr "" - -#: .\cookbook\templates\books.html:54 -#: .\cookbook\templates\meal_plan_entry.html:48 -#: .\cookbook\templates\recipes_table.html:64 -msgid "Last cooked" -msgstr "" - -#: .\cookbook\templates\books.html:71 -msgid "There are no recipes in this book yet." -msgstr "" - #: .\cookbook\templates\export.html:6 .\cookbook\templates\test2.html:6 msgid "Export Recipes" msgstr "" @@ -858,211 +924,21 @@ msgid "Import new Recipe" msgstr "" #: .\cookbook\templates\forms\edit_import_recipe.html:14 -#: .\cookbook\templates\forms\edit_internal_recipe.html:439 -#: .\cookbook\templates\forms\edit_internal_recipe.html:471 #: .\cookbook\templates\generic\edit_template.html:23 #: .\cookbook\templates\generic\new_template.html:23 #: .\cookbook\templates\include\log_cooking.html:28 #: .\cookbook\templates\meal_plan.html:325 -#: .\cookbook\templates\settings.html:46 .\cookbook\templates\settings.html:87 -#: .\cookbook\templates\settings.html:105 +#: .\cookbook\templates\settings.html:58 .\cookbook\templates\settings.html:99 +#: .\cookbook\templates\settings.html:117 +#: .\cookbook\templates\settings.html:162 #: .\cookbook\templates\shopping_list.html:353 msgid "Save" msgstr "" #: .\cookbook\templates\forms\edit_internal_recipe.html:7 -#: .\cookbook\templates\forms\edit_internal_recipe.html:34 msgid "Edit Recipe" msgstr "" -#: .\cookbook\templates\forms\edit_internal_recipe.html:56 -#: .\cookbook\templates\url_import.html:171 -msgid "Description" -msgstr "" - -#: .\cookbook\templates\forms\edit_internal_recipe.html:76 -msgid "Waiting Time" -msgstr "" - -#: .\cookbook\templates\forms\edit_internal_recipe.html:82 -msgid "Servings Text" -msgstr "" - -#: .\cookbook\templates\forms\edit_internal_recipe.html:93 -msgid "Select Keywords" -msgstr "" - -#: .\cookbook\templates\forms\edit_internal_recipe.html:94 -#: .\cookbook\templates\url_import.html:583 -msgid "Add Keyword" -msgstr "" - -#: .\cookbook\templates\forms\edit_internal_recipe.html:112 -msgid "Nutrition" -msgstr "" - -#: .\cookbook\templates\forms\edit_internal_recipe.html:116 -#: .\cookbook\templates\forms\edit_internal_recipe.html:166 -msgid "Delete Step" -msgstr "" - -#: .\cookbook\templates\forms\edit_internal_recipe.html:120 -msgid "Calories" -msgstr "" - -#: .\cookbook\templates\forms\edit_internal_recipe.html:123 -msgid "Carbohydrates" -msgstr "" - -#: .\cookbook\templates\forms\edit_internal_recipe.html:126 -msgid "Fats" -msgstr "" - -#: .\cookbook\templates\forms\edit_internal_recipe.html:128 -msgid "Proteins" -msgstr "" - -#: .\cookbook\templates\forms\edit_internal_recipe.html:150 -#: .\cookbook\templates\forms\edit_internal_recipe.html:504 -msgid "Step" -msgstr "" - -#: .\cookbook\templates\forms\edit_internal_recipe.html:171 -msgid "Show as header" -msgstr "" - -#: .\cookbook\templates\forms\edit_internal_recipe.html:177 -msgid "Hide as header" -msgstr "" - -#: .\cookbook\templates\forms\edit_internal_recipe.html:182 -msgid "Move Up" -msgstr "" - -#: .\cookbook\templates\forms\edit_internal_recipe.html:187 -msgid "Move Down" -msgstr "" - -#: .\cookbook\templates\forms\edit_internal_recipe.html:196 -msgid "Step Name" -msgstr "" - -#: .\cookbook\templates\forms\edit_internal_recipe.html:200 -msgid "Step Type" -msgstr "" - -#: .\cookbook\templates\forms\edit_internal_recipe.html:213 -msgid "Step time in Minutes" -msgstr "" - -#: .\cookbook\templates\forms\edit_internal_recipe.html:229 -msgid "Select File" -msgstr "" - -#: .\cookbook\templates\forms\edit_internal_recipe.html:230 -#: .\cookbook\templates\forms\edit_internal_recipe.html:252 -#: .\cookbook\templates\forms\edit_internal_recipe.html:313 -#: .\cookbook\templates\forms\edit_internal_recipe.html:337 -#: .\cookbook\templates\shopping_list.html:189 -#: .\cookbook\templates\shopping_list.html:211 -#: .\cookbook\templates\shopping_list.html:241 -#: .\cookbook\templates\shopping_list.html:265 -#: .\cookbook\templates\url_import.html:495 -#: .\cookbook\templates\url_import.html:527 -msgid "Select" -msgstr "" - -#: .\cookbook\templates\forms\edit_internal_recipe.html:251 -msgid "Select Recipe" -msgstr "" - -#: .\cookbook\templates\forms\edit_internal_recipe.html:311 -#: .\cookbook\templates\shopping_list.html:187 -msgid "Select Unit" -msgstr "" - -#: .\cookbook\templates\forms\edit_internal_recipe.html:312 -#: .\cookbook\templates\forms\edit_internal_recipe.html:336 -#: .\cookbook\templates\shopping_list.html:188 -#: .\cookbook\templates\shopping_list.html:210 -msgid "Create" -msgstr "" - -#: .\cookbook\templates\forms\edit_internal_recipe.html:335 -#: .\cookbook\templates\shopping_list.html:209 -msgid "Select Food" -msgstr "" - -#: .\cookbook\templates\forms\edit_internal_recipe.html:352 -#: .\cookbook\templates\meal_plan.html:256 -#: .\cookbook\templates\url_import.html:542 -msgid "Note" -msgstr "" - -#: .\cookbook\templates\forms\edit_internal_recipe.html:369 -msgid "Delete Ingredient" -msgstr "" - -#: .\cookbook\templates\forms\edit_internal_recipe.html:375 -msgid "Make Header" -msgstr "" - -#: .\cookbook\templates\forms\edit_internal_recipe.html:381 -msgid "Make Ingredient" -msgstr "" - -#: .\cookbook\templates\forms\edit_internal_recipe.html:387 -msgid "Disable Amount" -msgstr "" - -#: .\cookbook\templates\forms\edit_internal_recipe.html:393 -msgid "Enable Amount" -msgstr "" - -#: .\cookbook\templates\forms\edit_internal_recipe.html:398 -msgid "Copy Template Reference" -msgstr "" - -#: .\cookbook\templates\forms\edit_internal_recipe.html:424 -#: .\cookbook\templates\url_import.html:297 -#: .\cookbook\templates\url_import.html:567 -msgid "Instructions" -msgstr "" - -#: .\cookbook\templates\forms\edit_internal_recipe.html:437 -#: .\cookbook\templates\forms\edit_internal_recipe.html:468 -msgid "Save & View" -msgstr "" - -#: .\cookbook\templates\forms\edit_internal_recipe.html:441 -#: .\cookbook\templates\forms\edit_internal_recipe.html:474 -msgid "Add Step" -msgstr "" - -#: .\cookbook\templates\forms\edit_internal_recipe.html:444 -#: .\cookbook\templates\forms\edit_internal_recipe.html:478 -msgid "Add Nutrition" -msgstr "" - -#: .\cookbook\templates\forms\edit_internal_recipe.html:446 -#: .\cookbook\templates\forms\edit_internal_recipe.html:480 -msgid "Remove Nutrition" -msgstr "" - -#: .\cookbook\templates\forms\edit_internal_recipe.html:448 -#: .\cookbook\templates\forms\edit_internal_recipe.html:483 -msgid "View Recipe" -msgstr "" - -#: .\cookbook\templates\forms\edit_internal_recipe.html:450 -#: .\cookbook\templates\forms\edit_internal_recipe.html:485 -msgid "Delete Recipe" -msgstr "" - -#: .\cookbook\templates\forms\edit_internal_recipe.html:491 -msgid "Steps" -msgstr "" - #: .\cookbook\templates\forms\ingredients.html:15 msgid "Edit Ingredients" msgstr "" @@ -1078,11 +954,6 @@ msgid "" " " msgstr "" -#: .\cookbook\templates\forms\ingredients.html:24 -#: .\cookbook\templates\space.html:41 .\cookbook\templates\stats.html:26 -msgid "Units" -msgstr "" - #: .\cookbook\templates\forms\ingredients.html:26 msgid "Are you sure that you want to merge these two units?" msgstr "" @@ -1096,29 +967,33 @@ msgstr "" msgid "Are you sure that you want to merge these two ingredients?" msgstr "" -#: .\cookbook\templates\generic\delete_template.html:18 +#: .\cookbook\templates\generic\delete_template.html:19 #, python-format msgid "Are you sure you want to delete the %(title)s: %(object)s " msgstr "" -#: .\cookbook\templates\generic\edit_template.html:30 +#: .\cookbook\templates\generic\delete_template.html:23 +msgid "Cancel" +msgstr "" + +#: .\cookbook\templates\generic\edit_template.html:32 msgid "View" msgstr "" -#: .\cookbook\templates\generic\edit_template.html:34 +#: .\cookbook\templates\generic\edit_template.html:36 msgid "Delete original file" msgstr "" #: .\cookbook\templates\generic\list_template.html:6 -#: .\cookbook\templates\generic\list_template.html:12 +#: .\cookbook\templates\generic\list_template.html:21 msgid "List" msgstr "" -#: .\cookbook\templates\generic\list_template.html:25 +#: .\cookbook\templates\generic\list_template.html:34 msgid "Filter" msgstr "" -#: .\cookbook\templates\generic\list_template.html:30 +#: .\cookbook\templates\generic\list_template.html:39 msgid "Import all" msgstr "" @@ -1427,6 +1302,11 @@ msgstr "" msgid "Week iCal export" msgstr "" +#: .\cookbook\templates\meal_plan.html:256 +#: .\cookbook\templates\url_import.html:542 +msgid "Note" +msgstr "" + #: .\cookbook\templates\meal_plan.html:264 #: .\cookbook\templates\meal_plan_entry.html:18 msgid "Created by" @@ -1490,6 +1370,11 @@ msgstr "" msgid "Meal Plan View" msgstr "" +#: .\cookbook\templates\meal_plan_entry.html:48 +#: .\cookbook\templates\recipes_table.html:64 +msgid "Last cooked" +msgstr "" + #: .\cookbook\templates\meal_plan_entry.html:50 msgid "Never cooked before." msgstr "" @@ -1586,8 +1471,12 @@ msgstr "" msgid "Comments" msgstr "" +#: .\cookbook\templates\recipe_view.html:26 +msgid "by" +msgstr "" + #: .\cookbook\templates\recipe_view.html:44 .\cookbook\views\delete.py:118 -#: .\cookbook\views\edit.py:179 +#: .\cookbook\views\edit.py:177 msgid "Comment" msgstr "" @@ -1619,60 +1508,221 @@ msgstr "" msgid "Recipe Home" msgstr "" -#: .\cookbook\templates\settings.html:25 +#: .\cookbook\templates\search_info.html:5 +#: .\cookbook\templates\search_info.html:9 +#: .\cookbook\templates\settings.html:157 +msgid "Search Settings" +msgstr "" + +#: .\cookbook\templates\search_info.html:10 +msgid "" +"\n" +" Creating the best search experience is complicated and weighs " +"heavily on your personal configuration. \n" +" Changing any of the search settings can have significant impact on " +"the speed and quality of the results.\n" +" Search Methods, Trigrams and Full Text Search configurations are " +"only available if you are using Postgres for your database.\n" +" " +msgstr "" + +#: .\cookbook\templates\search_info.html:19 +msgid "Search Methods" +msgstr "" + +#: .\cookbook\templates\search_info.html:23 +msgid "" +" \n" +" Full text searches attempt to normalize the words provided to " +"match common variants. For example: 'forked', 'forking', 'forks' will all " +"normalize to 'fork'.\n" +" There are several methods available, described below, that will " +"control how the search behavior should react when multiple words are " +"searched.\n" +" Full technical details on how these operate can be viewed on Postgresql's website.\n" +" " +msgstr "" + +#: .\cookbook\templates\search_info.html:29 +msgid "" +" \n" +" Simple searches ignore punctuation and common words such as " +"'the', 'a', 'and'. And will treat seperate words as required.\n" +" Searching for 'apple or flour' will return any recipe that " +"includes both 'apple' and 'flour' anywhere in the fields that have been " +"selected for a full text search.\n" +" " +msgstr "" + +#: .\cookbook\templates\search_info.html:34 +msgid "" +" \n" +" Phrase searches ignore punctuation, but will search for all of " +"the words in the exact order provided.\n" +" Searching for 'apple or flour' will only return a recipe that " +"includes the exact phrase 'apple or flour' in any of the fields that have " +"been selected for a full text search.\n" +" " +msgstr "" + +#: .\cookbook\templates\search_info.html:39 +msgid "" +" \n" +" Web searches simulate functionality found on many web search " +"sites supporting special syntax.\n" +" Placing quotes around several words will convert those words " +"into a phrase.\n" +" 'or' is recongized as searching for the word (or phrase) " +"immediately before 'or' OR the word (or phrase) directly after.\n" +" '-' is recognized as searching for recipes that do not include " +"the word (or phrase) that comes immediately after. \n" +" For example searching for 'apple pie' or cherry -butter will " +"return any recipe that includes the phrase 'apple pie' or the word " +"'cherry' \n" +" in any field included in the full text search but exclude any " +"recipe that has the word 'butter' in any field included.\n" +" " +msgstr "" + +#: .\cookbook\templates\search_info.html:48 +msgid "" +" \n" +" Raw search is similar to Web except will take puncuation " +"operators such as '|', '&' and '()'\n" +" " +msgstr "" + +#: .\cookbook\templates\search_info.html:59 +msgid "" +" \n" +" Another approach to searching that also requires Postgresql is " +"fuzzy search or trigram similarity. A trigram is a group of three " +"consecutive characters.\n" +" For example searching for 'apple' will create x trigrams 'app', " +"'ppl', 'ple' and will create a score of how closely words match the " +"generated trigrams.\n" +" One benefit of searching trigams is that a search for 'sandwich' " +"will find mispelled words such as 'sandwhich' that would be missed by other " +"methods.\n" +" " +msgstr "" + +#: .\cookbook\templates\search_info.html:69 +msgid "Search Fields" +msgstr "" + +#: .\cookbook\templates\search_info.html:73 +msgid "" +" \n" +" Unaccent is a special case in that it enables searching a field " +"'unaccented' for each search style attempting to ignore accented values. \n" +" For example when you enable unaccent for 'Name' any search " +"(starts with, contains, trigram) will attempt the search ignoring accented " +"characters.\n" +" \n" +" For the other options, you can enable search on any or all " +"fields and they will be combined together with an assumed 'OR'.\n" +" For example enabling 'Name' for Starts With, 'Name' and " +"'Description' for Partial Match and 'Ingredients' and 'Keywords' for Full " +"Search\n" +" and searching for 'apple' will generate a search that will " +"return recipes that have:\n" +" - A recipe name that starts with 'apple'\n" +" - OR a recipe name that contains 'apple'\n" +" - OR a recipe description that contains 'apple'\n" +" - OR a recipe that will have a full text search match ('apple' " +"or 'apples') in ingredients\n" +" - OR a recipe that will have a full text search match in " +"Keywords\n" +"\n" +" Combining too many fields in too many types of search can have a " +"negative impact on performance, create duplicate results or return " +"unexpected results.\n" +" For example, enabling fuzzy search or partial matches will " +"interfere with web search methods. \n" +" Searching for 'apple -pie' with fuzzy search and full text " +"search will return the recipe Apple Pie. Though it is not included in the " +"full text results, it does match the trigram results.\n" +" " +msgstr "" + +#: .\cookbook\templates\search_info.html:95 +msgid "Search Index" +msgstr "" + +#: .\cookbook\templates\search_info.html:99 +msgid "" +" \n" +" Trigram search and Full Text Search both rely on database " +"indexes to perform effectively. \n" +" You can rebuild the indexes on all fields in the Admin page for " +"Recipes and selecting all recipes and running 'rebuild index for selected " +"recipes'\n" +" You can also rebuild indexes at the command line by executing " +"the management command 'python manage.py rebuildindex'\n" +" " +msgstr "" + +#: .\cookbook\templates\settings.html:27 msgid "Account" msgstr "" -#: .\cookbook\templates\settings.html:29 +#: .\cookbook\templates\settings.html:33 msgid "Preferences" msgstr "" -#: .\cookbook\templates\settings.html:33 +#: .\cookbook\templates\settings.html:39 msgid "API-Settings" msgstr "" -#: .\cookbook\templates\settings.html:41 +#: .\cookbook\templates\settings.html:45 +msgid "Search-Settings" +msgstr "" + +#: .\cookbook\templates\settings.html:53 msgid "Name Settings" msgstr "" -#: .\cookbook\templates\settings.html:49 +#: .\cookbook\templates\settings.html:61 msgid "Account Settings" msgstr "" -#: .\cookbook\templates\settings.html:51 +#: .\cookbook\templates\settings.html:63 msgid "Emails" msgstr "" -#: .\cookbook\templates\settings.html:54 +#: .\cookbook\templates\settings.html:66 #: .\cookbook\templates\socialaccount\connections.html:11 msgid "Social" msgstr "" -#: .\cookbook\templates\settings.html:66 +#: .\cookbook\templates\settings.html:78 msgid "Language" msgstr "" -#: .\cookbook\templates\settings.html:96 +#: .\cookbook\templates\settings.html:108 msgid "Style" msgstr "" -#: .\cookbook\templates\settings.html:116 +#: .\cookbook\templates\settings.html:128 msgid "API Token" msgstr "" -#: .\cookbook\templates\settings.html:117 +#: .\cookbook\templates\settings.html:129 msgid "" "You can use both basic authentication and token based authentication to " "access the REST API." msgstr "" -#: .\cookbook\templates\settings.html:134 +#: .\cookbook\templates\settings.html:146 msgid "" "Use the token as an Authorization header prefixed by the word token as shown " "in the following examples:" msgstr "" -#: .\cookbook\templates\settings.html:136 +#: .\cookbook\templates\settings.html:148 msgid "or" msgstr "" @@ -1713,6 +1763,23 @@ msgstr "" msgid "Amount" msgstr "" +#: .\cookbook\templates\shopping_list.html:187 +msgid "Select Unit" +msgstr "" + +#: .\cookbook\templates\shopping_list.html:189 +#: .\cookbook\templates\shopping_list.html:211 +#: .\cookbook\templates\shopping_list.html:241 +#: .\cookbook\templates\shopping_list.html:265 +#: .\cookbook\templates\url_import.html:495 +#: .\cookbook\templates\url_import.html:527 +msgid "Select" +msgstr "" + +#: .\cookbook\templates\shopping_list.html:209 +msgid "Select Food" +msgstr "" + #: .\cookbook\templates\shopping_list.html:240 msgid "Select Supermarket" msgstr "" @@ -1810,10 +1877,6 @@ msgstr "" msgid "Recipes without Keywords" msgstr "" -#: .\cookbook\templates\space.html:58 .\cookbook\templates\stats.html:43 -msgid "External Recipes" -msgstr "" - #: .\cookbook\templates\space.html:60 .\cookbook\templates\stats.html:45 msgid "Internal Recipes" msgstr "" @@ -1863,7 +1926,7 @@ msgid "There are no members in your space yet!" msgstr "" #: .\cookbook\templates\space.html:130 .\cookbook\templates\system.html:21 -#: .\cookbook\views\lists.py:115 +#: .\cookbook\views\lists.py:100 msgid "Invite Links" msgstr "" @@ -1871,6 +1934,10 @@ msgstr "" msgid "Stats" msgstr "" +#: .\cookbook\templates\stats.html:10 +msgid "Statistics" +msgstr "" + #: .\cookbook\templates\system.html:22 msgid "Show Links" msgstr "" @@ -2017,6 +2084,10 @@ msgstr "" msgid "Text dragged here will be appended to the name." msgstr "" +#: .\cookbook\templates\url_import.html:171 +msgid "Description" +msgstr "" + #: .\cookbook\templates\url_import.html:175 msgid "Text dragged here will be appended to the description." msgstr "" @@ -2041,6 +2112,11 @@ msgstr "" msgid "Ingredients dragged here will be appended to current list." msgstr "" +#: .\cookbook\templates\url_import.html:297 +#: .\cookbook\templates\url_import.html:567 +msgid "Instructions" +msgstr "" + #: .\cookbook\templates\url_import.html:302 msgid "" "Recipe instructions dragged here will be appended to current instructions." @@ -2090,6 +2166,10 @@ msgstr "" msgid "Select one" msgstr "" +#: .\cookbook\templates\url_import.html:583 +msgid "Add Keyword" +msgstr "" + #: .\cookbook\templates\url_import.html:596 msgid "All Keywords" msgstr "" @@ -2125,45 +2205,102 @@ msgstr "" msgid "Recipe Markup Specification" msgstr "" -#: .\cookbook\views\api.py:79 +#: .\cookbook\views\api.py:82 .\cookbook\views\api.py:131 msgid "Parameter updated_at incorrectly formatted" msgstr "" -#: .\cookbook\views\api.py:580 .\cookbook\views\views.py:303 +#: .\cookbook\views\api.py:151 +#, python-brace-format +msgid "No {self.basename} with id {pk} exists" +msgstr "" + +#: .\cookbook\views\api.py:155 .\cookbook\views\edit.py:300 +#: .\cookbook\views\edit.py:316 +msgid "Cannot merge with the same object!" +msgstr "" + +#: .\cookbook\views\api.py:162 +#, python-brace-format +msgid "No {self.basename} with id {target} exists" +msgstr "" + +#: .\cookbook\views\api.py:167 +msgid "Cannot merge with child object!" +msgstr "" + +#: .\cookbook\views\api.py:195 +#, python-brace-format +msgid "{source.name} was merged successfully with {target.name}" +msgstr "" + +#: .\cookbook\views\api.py:199 +#, python-brace-format +msgid "An error occurred attempting to merge {source.name} with {target.name}" +msgstr "" + +#: .\cookbook\views\api.py:239 +#, python-brace-format +msgid "No {self.basename} with id {child} exists" +msgstr "" + +#: .\cookbook\views\api.py:248 +#, python-brace-format +msgid "{child.name} was moved successfully to the root." +msgstr "" + +#: .\cookbook\views\api.py:251 .\cookbook\views\api.py:269 +msgid "An error occurred attempting to move " +msgstr "" + +#: .\cookbook\views\api.py:254 +msgid "Cannot move an object to itself!" +msgstr "" + +#: .\cookbook\views\api.py:260 +#, python-brace-format +msgid "No {self.basename} with id {parent} exists" +msgstr "" + +#: .\cookbook\views\api.py:266 +#, python-brace-format +msgid "{child.name} was moved successfully to parent {parent.name}" +msgstr "" + +#: .\cookbook\views\api.py:704 .\cookbook\views\views.py:289 msgid "This feature is not available in the demo version!" msgstr "" -#: .\cookbook\views\api.py:603 +#: .\cookbook\views\api.py:727 msgid "Sync successful!" msgstr "" -#: .\cookbook\views\api.py:608 +#: .\cookbook\views\api.py:732 msgid "Error synchronizing with Storage" msgstr "" -#: .\cookbook\views\api.py:686 +#: .\cookbook\views\api.py:810 msgid "Nothing to do." msgstr "" -#: .\cookbook\views\api.py:701 +#: .\cookbook\views\api.py:825 msgid "The requested site provided malformed data and cannot be read." msgstr "" -#: .\cookbook\views\api.py:708 +#: .\cookbook\views\api.py:832 msgid "The requested page could not be found." msgstr "" -#: .\cookbook\views\api.py:717 +#: .\cookbook\views\api.py:841 msgid "" "The requested site does not provide any recognized data format to import the " "recipe from." msgstr "" -#: .\cookbook\views\api.py:731 +#: .\cookbook\views\api.py:855 msgid "No useable data could be found." msgstr "" -#: .\cookbook\views\api.py:747 +#: .\cookbook\views\api.py:871 msgid "I couldn't find anything to do." msgstr "" @@ -2190,8 +2327,8 @@ msgstr[1] "" msgid "Monitor" msgstr "" -#: .\cookbook\views\delete.py:96 .\cookbook\views\lists.py:102 -#: .\cookbook\views\new.py:98 +#: .\cookbook\views\delete.py:96 .\cookbook\views\lists.py:86 +#: .\cookbook\views\new.py:97 msgid "Storage Backend" msgstr "" @@ -2200,8 +2337,8 @@ msgid "" "Could not delete this storage backend as it is used in at least one monitor." msgstr "" -#: .\cookbook\views\delete.py:129 .\cookbook\views\edit.py:213 -#: .\cookbook\views\new.py:156 +#: .\cookbook\views\delete.py:129 .\cookbook\views\edit.py:211 +#: .\cookbook\views\new.py:155 msgid "Recipe Book" msgstr "" @@ -2209,47 +2346,39 @@ msgstr "" msgid "Bookmarks" msgstr "" -#: .\cookbook\views\delete.py:163 .\cookbook\views\new.py:252 +#: .\cookbook\views\delete.py:163 .\cookbook\views\new.py:251 msgid "Invite Link" msgstr "" -#: .\cookbook\views\edit.py:119 -msgid "Food" -msgstr "" - -#: .\cookbook\views\edit.py:128 +#: .\cookbook\views\edit.py:126 msgid "You cannot edit this storage!" msgstr "" -#: .\cookbook\views\edit.py:148 +#: .\cookbook\views\edit.py:146 msgid "Storage saved!" msgstr "" -#: .\cookbook\views\edit.py:154 +#: .\cookbook\views\edit.py:152 msgid "There was an error updating this storage backend!" msgstr "" -#: .\cookbook\views\edit.py:165 +#: .\cookbook\views\edit.py:163 msgid "Storage" msgstr "" -#: .\cookbook\views\edit.py:261 +#: .\cookbook\views\edit.py:259 msgid "Changes saved!" msgstr "" -#: .\cookbook\views\edit.py:265 +#: .\cookbook\views\edit.py:263 msgid "Error saving changes!" msgstr "" -#: .\cookbook\views\edit.py:299 +#: .\cookbook\views\edit.py:298 msgid "Units merged!" msgstr "" -#: .\cookbook\views\edit.py:301 .\cookbook\views\edit.py:317 -msgid "Cannot merge with the same object!" -msgstr "" - -#: .\cookbook\views\edit.py:315 +#: .\cookbook\views\edit.py:314 msgid "Foods merged!" msgstr "" @@ -2261,126 +2390,152 @@ msgstr "" msgid "Exporting is not implemented for this provider" msgstr "" -#: .\cookbook\views\lists.py:40 +#: .\cookbook\views\lists.py:26 msgid "Import Log" msgstr "" -#: .\cookbook\views\lists.py:53 +#: .\cookbook\views\lists.py:39 msgid "Discovery" msgstr "" -#: .\cookbook\views\lists.py:85 +#: .\cookbook\views\lists.py:69 msgid "Shopping Lists" msgstr "" -#: .\cookbook\views\new.py:123 +#: .\cookbook\views\lists.py:129 +msgid "Foods" +msgstr "" + +#: .\cookbook\views\lists.py:163 +msgid "Supermarkets" +msgstr "" + +#: .\cookbook\views\lists.py:179 +msgid "Shopping Categories" +msgstr "" + +#: .\cookbook\views\new.py:122 msgid "Imported new recipe!" msgstr "" -#: .\cookbook\views\new.py:126 +#: .\cookbook\views\new.py:125 msgid "There was an error importing this recipe!" msgstr "" -#: .\cookbook\views\new.py:226 +#: .\cookbook\views\new.py:225 msgid "Hello" msgstr "" -#: .\cookbook\views\new.py:226 +#: .\cookbook\views\new.py:225 msgid "You have been invited by " msgstr "" -#: .\cookbook\views\new.py:227 +#: .\cookbook\views\new.py:226 msgid " to join their Tandoor Recipes space " msgstr "" -#: .\cookbook\views\new.py:228 +#: .\cookbook\views\new.py:227 msgid "Click the following link to activate your account: " msgstr "" -#: .\cookbook\views\new.py:229 +#: .\cookbook\views\new.py:228 msgid "" "If the link does not work use the following code to manually join the space: " msgstr "" -#: .\cookbook\views\new.py:230 +#: .\cookbook\views\new.py:229 msgid "The invitation is valid until " msgstr "" -#: .\cookbook\views\new.py:231 +#: .\cookbook\views\new.py:230 msgid "" "Tandoor Recipes is an Open Source recipe manager. Check it out on GitHub " msgstr "" -#: .\cookbook\views\new.py:234 +#: .\cookbook\views\new.py:233 msgid "Tandoor Recipes Invite" msgstr "" -#: .\cookbook\views\new.py:241 +#: .\cookbook\views\new.py:240 msgid "Invite link successfully send to user." msgstr "" -#: .\cookbook\views\new.py:244 +#: .\cookbook\views\new.py:243 msgid "" "You have send to many emails, please share the link manually or wait a few " "hours." msgstr "" -#: .\cookbook\views\new.py:246 +#: .\cookbook\views\new.py:245 msgid "Email to user could not be send, please share link manually." msgstr "" -#: .\cookbook\views\views.py:129 +#: .\cookbook\views\views.py:128 msgid "" "You have successfully created your own recipe space. Start by adding some " "recipes or invite other people to join you." msgstr "" -#: .\cookbook\views\views.py:177 +#: .\cookbook\views\views.py:176 msgid "You do not have the required permissions to perform this action!" msgstr "" -#: .\cookbook\views\views.py:188 +#: .\cookbook\views\views.py:187 msgid "Comment saved!" msgstr "" -#: .\cookbook\views\views.py:395 +#: .\cookbook\views\views.py:351 +msgid "You must select at least one field to search!" +msgstr "" + +#: .\cookbook\views\views.py:354 +msgid "" +"To use this search method you must select at least one full text search " +"field!" +msgstr "" + +#: .\cookbook\views\views.py:357 +msgid "Fuzzy search is not compatible with this search method!" +msgstr "" + +#: .\cookbook\views\views.py:437 msgid "" "The setup page can only be used to create the first user! If you have " "forgotten your superuser credentials please consult the django documentation " "on how to reset passwords." msgstr "" -#: .\cookbook\views\views.py:402 +#: .\cookbook\views\views.py:444 msgid "Passwords dont match!" msgstr "" -#: .\cookbook\views\views.py:418 +#: .\cookbook\views\views.py:460 msgid "User has been created, please login!" msgstr "" -#: .\cookbook\views\views.py:434 +#: .\cookbook\views\views.py:476 msgid "Malformed Invite Link supplied!" msgstr "" -#: .\cookbook\views\views.py:441 +#: .\cookbook\views\views.py:483 msgid "You are already member of a space and therefore cannot join this one." msgstr "" -#: .\cookbook\views\views.py:452 +#: .\cookbook\views\views.py:494 msgid "Successfully joined space." msgstr "" -#: .\cookbook\views\views.py:458 +#: .\cookbook\views\views.py:500 msgid "Invite Link not valid or already used!" msgstr "" -#: .\cookbook\views\views.py:522 +#: .\cookbook\views\views.py:564 msgid "" "Reporting share links is not enabled for this instance. Please notify the " "page administrator to report problems." msgstr "" -#: .\cookbook\views\views.py:528 +#: .\cookbook\views\views.py:570 msgid "" "Recipe sharing link has been disabled! For additional information please " "contact the page administrator." diff --git a/cookbook/locale/es/LC_MESSAGES/django.mo b/cookbook/locale/es/LC_MESSAGES/django.mo index b53695b2..ff1023d1 100644 Binary files a/cookbook/locale/es/LC_MESSAGES/django.mo and b/cookbook/locale/es/LC_MESSAGES/django.mo differ diff --git a/cookbook/locale/es/LC_MESSAGES/django.po b/cookbook/locale/es/LC_MESSAGES/django.po index 566ee8bd..560eb104 100644 --- a/cookbook/locale/es/LC_MESSAGES/django.po +++ b/cookbook/locale/es/LC_MESSAGES/django.po @@ -14,7 +14,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-08-12 15:09+0200\n" +"POT-Creation-Date: 2021-09-13 22:40+0200\n" "PO-Revision-Date: 2020-06-02 19:28+0000\n" "Last-Translator: Miguel Canteras , 2021\n" "Language-Team: Spanish (https://www.transifex.com/django-recipes/" @@ -25,15 +25,14 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: .\cookbook\filters.py:23 .\cookbook\templates\base.html:98 -#: .\cookbook\templates\forms\edit_internal_recipe.html:269 +#: .\cookbook\filters.py:23 .\cookbook\templates\base.html:125 #: .\cookbook\templates\forms\ingredients.html:34 #: .\cookbook\templates\space.html:43 .\cookbook\templates\stats.html:28 -#: .\cookbook\templates\url_import.html:270 .\cookbook\views\lists.py:67 +#: .\cookbook\templates\url_import.html:270 msgid "Ingredients" msgstr "Ingredientes" -#: .\cookbook\forms.py:49 +#: .\cookbook\forms.py:50 msgid "" "Color of the top navigation bar. Not all colors work with all themes, just " "try them out!" @@ -41,13 +40,13 @@ msgstr "" "Color de la barra de navegación superior. No todos los colores funcionan con " "todos los temas, ¡pruébalos!" -#: .\cookbook\forms.py:51 +#: .\cookbook\forms.py:52 msgid "Default Unit to be used when inserting a new ingredient into a recipe." msgstr "" "Unidad predeterminada que se utilizará al insertar un nuevo ingrediente en " "una receta." -#: .\cookbook\forms.py:53 +#: .\cookbook\forms.py:54 msgid "" "Enables support for fractions in ingredient amounts (e.g. convert decimals " "to fractions automatically)" @@ -55,7 +54,7 @@ msgstr "" "Permite utilizar fracciones en cantidades de ingredientes (e.g. convierte " "los decimales en fracciones automáticamente)" -#: .\cookbook\forms.py:56 +#: .\cookbook\forms.py:57 msgid "" "Users with whom newly created meal plan/shopping list entries should be " "shared by default." @@ -63,19 +62,19 @@ msgstr "" "Usuarios con los que las entradas recién creadas del plan de comida/lista de " "la compra deben compartirse de forma predeterminada." -#: .\cookbook\forms.py:58 +#: .\cookbook\forms.py:59 msgid "Show recently viewed recipes on search page." msgstr "Muestra recetas vistas recientemente en la página de búsqueda." -#: .\cookbook\forms.py:59 +#: .\cookbook\forms.py:60 msgid "Number of decimals to round ingredients." msgstr "Número de decimales para redondear los ingredientes." -#: .\cookbook\forms.py:60 +#: .\cookbook\forms.py:61 msgid "If you want to be able to create and see comments underneath recipes." msgstr "Si desea poder crear y ver comentarios debajo de las recetas." -#: .\cookbook\forms.py:62 +#: .\cookbook\forms.py:63 msgid "" "Setting to 0 will disable auto sync. When viewing a shopping list the list " "is updated every set seconds to sync changes someone else might have made. " @@ -89,11 +88,11 @@ msgstr "" "valor establecido es inferior al límite de la instancia, este se " "restablecerá al guardar." -#: .\cookbook\forms.py:65 +#: .\cookbook\forms.py:66 msgid "Makes the navbar stick to the top of the page." msgstr "Hace la barra de navegación fija en la parte superior de la página." -#: .\cookbook\forms.py:81 +#: .\cookbook\forms.py:82 msgid "" "Both fields are optional. If none are given the username will be displayed " "instead" @@ -105,95 +104,92 @@ msgstr "" " \n" " " -#: .\cookbook\forms.py:102 .\cookbook\forms.py:331 -#: .\cookbook\templates\forms\edit_internal_recipe.html:49 +#: .\cookbook\forms.py:103 .\cookbook\forms.py:334 #: .\cookbook\templates\url_import.html:154 msgid "Name" msgstr "Nombre" -#: .\cookbook\forms.py:103 .\cookbook\forms.py:332 -#: .\cookbook\templates\base.html:108 .\cookbook\templates\base.html:169 -#: .\cookbook\templates\forms\edit_internal_recipe.html:85 +#: .\cookbook\forms.py:104 .\cookbook\forms.py:335 #: .\cookbook\templates\space.html:39 .\cookbook\templates\stats.html:24 #: .\cookbook\templates\url_import.html:188 -#: .\cookbook\templates\url_import.html:573 +#: .\cookbook\templates\url_import.html:573 .\cookbook\views\lists.py:112 msgid "Keywords" msgstr "Palabras clave" -#: .\cookbook\forms.py:104 +#: .\cookbook\forms.py:105 msgid "Preparation time in minutes" msgstr "Tiempo de preparación en minutos" -#: .\cookbook\forms.py:105 +#: .\cookbook\forms.py:106 msgid "Waiting time (cooking/baking) in minutes" msgstr "Tiempo de espera (cocinar/hornear) en minutos" -#: .\cookbook\forms.py:106 .\cookbook\forms.py:333 +#: .\cookbook\forms.py:107 .\cookbook\forms.py:336 msgid "Path" msgstr "Ruta" -#: .\cookbook\forms.py:107 +#: .\cookbook\forms.py:108 msgid "Storage UID" msgstr "UID de almacenamiento" -#: .\cookbook\forms.py:133 +#: .\cookbook\forms.py:134 msgid "Default" msgstr "Por defecto" -#: .\cookbook\forms.py:144 .\cookbook\templates\url_import.html:90 +#: .\cookbook\forms.py:145 .\cookbook\templates\url_import.html:90 msgid "" "To prevent duplicates recipes with the same name as existing ones are " "ignored. Check this box to import everything." msgstr "" -#: .\cookbook\forms.py:164 +#: .\cookbook\forms.py:165 msgid "New Unit" msgstr "Nueva Unidad" -#: .\cookbook\forms.py:165 +#: .\cookbook\forms.py:166 msgid "New unit that other gets replaced by." msgstr "Nueva unidad que reemplaza a la anterior." -#: .\cookbook\forms.py:170 +#: .\cookbook\forms.py:171 msgid "Old Unit" msgstr "Antigua unidad" -#: .\cookbook\forms.py:171 +#: .\cookbook\forms.py:172 msgid "Unit that should be replaced." msgstr "Unidad que se va a reemplazar." -#: .\cookbook\forms.py:187 +#: .\cookbook\forms.py:189 msgid "New Food" msgstr "Nuevo Alimento" -#: .\cookbook\forms.py:188 +#: .\cookbook\forms.py:190 msgid "New food that other gets replaced by." msgstr "Nuevo alimento que remplaza al anterior." -#: .\cookbook\forms.py:193 +#: .\cookbook\forms.py:195 msgid "Old Food" msgstr "Antiguo alimento" -#: .\cookbook\forms.py:194 +#: .\cookbook\forms.py:196 msgid "Food that should be replaced." msgstr "Alimento que se va a reemplazar." -#: .\cookbook\forms.py:212 +#: .\cookbook\forms.py:214 msgid "Add your comment: " msgstr "Añada su comentario:" -#: .\cookbook\forms.py:253 +#: .\cookbook\forms.py:256 msgid "Leave empty for dropbox and enter app password for nextcloud." msgstr "" "Déjelo vacío para Dropbox e ingrese la contraseña de la aplicación para " "nextcloud." -#: .\cookbook\forms.py:260 +#: .\cookbook\forms.py:263 msgid "Leave empty for nextcloud and enter api token for dropbox." msgstr "" "Déjelo en blanco para nextcloud e ingrese el token de api para dropbox." -#: .\cookbook\forms.py:269 +#: .\cookbook\forms.py:272 msgid "" "Leave empty for dropbox and enter only base url for nextcloud (/remote." "php/webdav/ is added automatically)" @@ -201,26 +197,25 @@ msgstr "" "Dejar vació para Dropbox e introducir sólo la URL base para Nextcloud " "(/remote.php/webdav/ se añade automáticamente)" -#: .\cookbook\forms.py:307 +#: .\cookbook\forms.py:310 msgid "Search String" msgstr "Cadena de búsqueda" -#: .\cookbook\forms.py:334 +#: .\cookbook\forms.py:337 msgid "File ID" msgstr "ID de Fichero" -#: .\cookbook\forms.py:370 +#: .\cookbook\forms.py:373 msgid "You must provide at least a recipe or a title." msgstr "Debe proporcionar al menos una receta o un título." -#: .\cookbook\forms.py:383 +#: .\cookbook\forms.py:386 msgid "You can list default users to share recipes with in the settings." msgstr "" "Puede enumerar los usuarios predeterminados con los que compartir recetas en " "la configuración." -#: .\cookbook\forms.py:384 -#: .\cookbook\templates\forms\edit_internal_recipe.html:427 +#: .\cookbook\forms.py:387 msgid "" "You can use markdown to format this field. See the docs here" @@ -228,63 +223,139 @@ msgstr "" "Puede utilizar Markdown para formatear este campo. Vea la documentación aqui" -#: .\cookbook\forms.py:409 +#: .\cookbook\forms.py:412 msgid "Maximum number of users for this space reached." msgstr "" -#: .\cookbook\forms.py:415 +#: .\cookbook\forms.py:418 msgid "Email address already taken!" msgstr "" -#: .\cookbook\forms.py:423 +#: .\cookbook\forms.py:426 msgid "" "An email address is not required but if present the invite link will be send " "to the user." msgstr "" -#: .\cookbook\forms.py:438 +#: .\cookbook\forms.py:441 msgid "Name already taken." msgstr "" -#: .\cookbook\forms.py:449 +#: .\cookbook\forms.py:452 msgid "Accept Terms and Privacy" msgstr "" +#: .\cookbook\forms.py:487 +msgid "" +"Select type method of search. Click here for " +"full desciption of choices." +msgstr "" + +#: .\cookbook\forms.py:488 +msgid "" +"Use fuzzy matching on units, keywords and ingredients when editing and " +"importing recipes." +msgstr "" + +#: .\cookbook\forms.py:489 +msgid "" +"Fields to search ignoring accents. Selecting this option can improve or " +"degrade search quality depending on language" +msgstr "" + +#: .\cookbook\forms.py:490 +msgid "" +"Fields to search for partial matches. (e.g. searching for 'Pie' will return " +"'pie' and 'piece' and 'soapie')" +msgstr "" + +#: .\cookbook\forms.py:491 +msgid "" +"Fields to search for beginning of word matches. (e.g. searching for 'sa' " +"will return 'salad' and 'sandwich')" +msgstr "" + +#: .\cookbook\forms.py:492 +msgid "" +"Fields to 'fuzzy' search. (e.g. searching for 'recpie' will find 'recipe'.) " +"Note: this option will conflict with 'web' and 'raw' methods of search." +msgstr "" + +#: .\cookbook\forms.py:493 +msgid "" +"Fields to full text search. Note: 'web', 'phrase', and 'raw' search methods " +"only function with fulltext fields." +msgstr "" + +#: .\cookbook\forms.py:497 +#, fuzzy +#| msgid "Search" +msgid "Search Method" +msgstr "Buscar" + +#: .\cookbook\forms.py:498 +msgid "Fuzzy Lookups" +msgstr "" + +#: .\cookbook\forms.py:499 +msgid "Ignore Accent" +msgstr "" + +#: .\cookbook\forms.py:500 +msgid "Partial Match" +msgstr "" + +#: .\cookbook\forms.py:501 +msgid "Starts Wtih" +msgstr "" + +#: .\cookbook\forms.py:502 +#, fuzzy +#| msgid "Search" +msgid "Fuzzy Search" +msgstr "Buscar" + +#: .\cookbook\forms.py:503 +#, fuzzy +#| msgid "Text" +msgid "Full Text" +msgstr "Texto" + #: .\cookbook\helper\AllAuthCustomAdapter.py:36 msgid "" "In order to prevent spam, the requested email was not send. Please wait a " "few minutes and try again." msgstr "" -#: .\cookbook\helper\permission_helper.py:138 -#: .\cookbook\helper\permission_helper.py:161 .\cookbook\views\views.py:151 +#: .\cookbook\helper\permission_helper.py:136 +#: .\cookbook\helper\permission_helper.py:159 .\cookbook\views\views.py:150 msgid "You are not logged in and therefore cannot view this page!" msgstr "¡No ha iniciado sesión y por lo tanto no puede ver esta página!" -#: .\cookbook\helper\permission_helper.py:142 -#: .\cookbook\helper\permission_helper.py:148 -#: .\cookbook\helper\permission_helper.py:173 -#: .\cookbook\helper\permission_helper.py:218 -#: .\cookbook\helper\permission_helper.py:232 -#: .\cookbook\helper\permission_helper.py:243 -#: .\cookbook\helper\permission_helper.py:254 .\cookbook\views\data.py:40 -#: .\cookbook\views\views.py:162 .\cookbook\views\views.py:169 -#: .\cookbook\views\views.py:259 +#: .\cookbook\helper\permission_helper.py:140 +#: .\cookbook\helper\permission_helper.py:146 +#: .\cookbook\helper\permission_helper.py:171 +#: .\cookbook\helper\permission_helper.py:216 +#: .\cookbook\helper\permission_helper.py:230 +#: .\cookbook\helper\permission_helper.py:241 +#: .\cookbook\helper\permission_helper.py:252 .\cookbook\views\data.py:40 +#: .\cookbook\views\views.py:161 .\cookbook\views\views.py:168 +#: .\cookbook\views\views.py:245 msgid "You do not have the required permissions to view this page!" msgstr "¡No tienes los permisos necesarios para ver esta página!" -#: .\cookbook\helper\permission_helper.py:166 -#: .\cookbook\helper\permission_helper.py:189 -#: .\cookbook\helper\permission_helper.py:204 +#: .\cookbook\helper\permission_helper.py:164 +#: .\cookbook\helper\permission_helper.py:187 +#: .\cookbook\helper\permission_helper.py:202 msgid "You cannot interact with this object as it is not owned by you!" msgstr "¡No puede interactuar con este objeto ya que no es de tu propiedad!" -#: .\cookbook\helper\template_helper.py:60 -#: .\cookbook\helper\template_helper.py:62 +#: .\cookbook\helper\template_helper.py:61 +#: .\cookbook\helper\template_helper.py:63 msgid "Could not parse template code." msgstr "" -#: .\cookbook\integration\integration.py:104 +#: .\cookbook\integration\integration.py:119 #: .\cookbook\templates\import.html:14 .\cookbook\templates\import.html:20 #: .\cookbook\templates\import_response.html:7 #: .\cookbook\templates\test.html:14 .\cookbook\templates\test.html:20 @@ -293,11 +364,11 @@ msgstr "" #: .\cookbook\templates\url_import.html:123 #: .\cookbook\templates\url_import.html:317 #: .\cookbook\templates\url_import.html:604 .\cookbook\views\delete.py:60 -#: .\cookbook\views\edit.py:199 +#: .\cookbook\views\edit.py:197 msgid "Import" msgstr "Importar" -#: .\cookbook\integration\integration.py:185 +#: .\cookbook\integration\integration.py:200 msgid "" "Importer expected a .zip file. Did you choose the correct importer type for " "your data ?" @@ -305,17 +376,17 @@ msgstr "" "El importador esperaba un fichero.zip. ¿Has escogido el tipo de importador " "correcto para tus datos?" -#: .\cookbook\integration\integration.py:188 +#: .\cookbook\integration\integration.py:203 msgid "" "An unexpected error occurred during the import. Please make sure you have " "uploaded a valid file." msgstr "" -#: .\cookbook\integration\integration.py:192 +#: .\cookbook\integration\integration.py:208 msgid "The following recipes were ignored because they already existed:" msgstr "" -#: .\cookbook\integration\integration.py:196 +#: .\cookbook\integration\integration.py:212 #, fuzzy, python-format #| msgid "Imported new recipe!" msgid "Imported %s recipes." @@ -338,7 +409,6 @@ msgid "Source" msgstr "" #: .\cookbook\integration\safron.py:23 -#: .\cookbook\templates\forms\edit_internal_recipe.html:79 #: .\cookbook\templates\include\log_cooking.html:16 #: .\cookbook\templates\url_import.html:224 #: .\cookbook\templates\url_import.html:455 @@ -350,7 +420,6 @@ msgid "Waiting time" msgstr "Tiempo de espera" #: .\cookbook\integration\safron.py:27 -#: .\cookbook\templates\forms\edit_internal_recipe.html:73 msgid "Preparation Time" msgstr "Tiempo de Preparación" @@ -364,6 +433,22 @@ msgstr "Libro de cocina" msgid "Section" msgstr "Sección" +#: .\cookbook\management\commands\rebuildindex.py:14 +msgid "Rebuilds full text search index on Recipe" +msgstr "" + +#: .\cookbook\management\commands\rebuildindex.py:18 +msgid "Only Postgress databases use full text search, no index to rebuild" +msgstr "" + +#: .\cookbook\management\commands\rebuildindex.py:29 +msgid "Recipe index rebuild complete." +msgstr "" + +#: .\cookbook\management\commands\rebuildindex.py:31 +msgid "Recipe index rebuild failed." +msgstr "" + #: .\cookbook\migrations\0047_auto_20200602_1133.py:14 msgid "Breakfast" msgstr "Desayuno" @@ -380,78 +465,91 @@ msgstr "Cena" msgid "Other" msgstr "Otro" -#: .\cookbook\models.py:72 +#: .\cookbook\models.py:144 msgid "" "Maximum file storage for space in MB. 0 for unlimited, -1 to disable file " "upload." msgstr "" -#: .\cookbook\models.py:123 .\cookbook\templates\search.html:7 +#: .\cookbook\models.py:196 .\cookbook\templates\search.html:7 #: .\cookbook\templates\shopping_list.html:52 msgid "Search" msgstr "Buscar" -#: .\cookbook\models.py:124 .\cookbook\templates\base.html:92 +#: .\cookbook\models.py:197 .\cookbook\templates\base.html:82 #: .\cookbook\templates\meal_plan.html:5 .\cookbook\views\delete.py:152 -#: .\cookbook\views\edit.py:233 .\cookbook\views\new.py:201 +#: .\cookbook\views\edit.py:231 .\cookbook\views\new.py:200 msgid "Meal-Plan" msgstr "Régimen de comidas" -#: .\cookbook\models.py:125 .\cookbook\templates\base.html:89 +#: .\cookbook\models.py:198 .\cookbook\templates\base.html:90 msgid "Books" msgstr "Libros" -#: .\cookbook\models.py:133 +#: .\cookbook\models.py:206 msgid "Small" msgstr "Pequeño" -#: .\cookbook\models.py:133 +#: .\cookbook\models.py:206 msgid "Large" msgstr "Grande" -#: .\cookbook\models.py:133 .\cookbook\templates\generic\new_template.html:6 +#: .\cookbook\models.py:206 .\cookbook\templates\generic\new_template.html:6 #: .\cookbook\templates\generic\new_template.html:14 #: .\cookbook\templates\meal_plan.html:323 msgid "New" msgstr "Nuevo" -#: .\cookbook\models.py:338 -#: .\cookbook\templates\forms\edit_internal_recipe.html:202 +#: .\cookbook\models.py:389 +msgid " is part of a recipe step and cannot be deleted" +msgstr "" + +#: .\cookbook\models.py:429 msgid "Text" msgstr "Texto" -#: .\cookbook\models.py:338 -#: .\cookbook\templates\forms\edit_internal_recipe.html:203 +#: .\cookbook\models.py:429 msgid "Time" msgstr "Tiempo" -#: .\cookbook\models.py:338 -#: .\cookbook\templates\forms\edit_internal_recipe.html:204 -#: .\cookbook\templates\forms\edit_internal_recipe.html:219 +#: .\cookbook\models.py:429 #, fuzzy #| msgid "File ID" msgid "File" msgstr "ID de Fichero" -#: .\cookbook\models.py:338 -#: .\cookbook\templates\forms\edit_internal_recipe.html:205 -#: .\cookbook\templates\forms\edit_internal_recipe.html:241 +#: .\cookbook\models.py:429 #: .\cookbook\templates\include\recipe_open_modal.html:7 #: .\cookbook\templates\meal_plan.html:247 .\cookbook\views\delete.py:28 -#: .\cookbook\views\edit.py:273 .\cookbook\views\new.py:52 +#: .\cookbook\views\edit.py:271 .\cookbook\views\new.py:52 msgid "Recipe" msgstr "Receta" -#: .\cookbook\serializer.py:109 +#: .\cookbook\models.py:836 .\cookbook\templates\search_info.html:28 +msgid "Simple" +msgstr "" + +#: .\cookbook\models.py:837 .\cookbook\templates\search_info.html:33 +msgid "Phrase" +msgstr "" + +#: .\cookbook\models.py:838 .\cookbook\templates\search_info.html:38 +msgid "Web" +msgstr "" + +#: .\cookbook\models.py:839 .\cookbook\templates\search_info.html:47 +msgid "Raw" +msgstr "" + +#: .\cookbook\serializer.py:112 msgid "File uploads are not enabled for this Space." msgstr "" -#: .\cookbook\serializer.py:117 +#: .\cookbook\serializer.py:125 msgid "You have reached your file upload limit." msgstr "" -#: .\cookbook\tables.py:35 .\cookbook\templates\books.html:36 -#: .\cookbook\templates\generic\edit_template.html:6 +#: .\cookbook\tables.py:35 .\cookbook\templates\generic\edit_template.html:6 #: .\cookbook\templates\generic\edit_template.html:14 #: .\cookbook\templates\meal_plan.html:281 #: .\cookbook\templates\recipes_table.html:82 @@ -460,11 +558,10 @@ msgstr "" msgid "Edit" msgstr "Editar" -#: .\cookbook\tables.py:124 .\cookbook\tables.py:147 -#: .\cookbook\templates\books.html:38 +#: .\cookbook\tables.py:115 .\cookbook\tables.py:138 #: .\cookbook\templates\generic\delete_template.html:5 #: .\cookbook\templates\generic\delete_template.html:13 -#: .\cookbook\templates\generic\edit_template.html:27 +#: .\cookbook\templates\generic\edit_template.html:28 #: .\cookbook\templates\meal_plan.html:277 #: .\cookbook\templates\recipes_table.html:90 msgid "Delete" @@ -494,7 +591,7 @@ msgstr "" #: .\cookbook\templates\account\email.html:12 #: .\cookbook\templates\account\password_change.html:11 #: .\cookbook\templates\account\password_set.html:11 -#: .\cookbook\templates\base.html:154 .\cookbook\templates\settings.html:6 +#: .\cookbook\templates\base.html:204 .\cookbook\templates\settings.html:6 #: .\cookbook\templates\settings.html:17 #: .\cookbook\templates\socialaccount\connections.html:10 msgid "Settings" @@ -574,7 +671,7 @@ msgid "" msgstr "" #: .\cookbook\templates\account\email_confirm.html:22 -#: .\cookbook\templates\generic\delete_template.html:21 +#: .\cookbook\templates\generic\delete_template.html:22 msgid "Confirm" msgstr "Confirmar" @@ -586,7 +683,7 @@ msgid "" "request." msgstr "" -#: .\cookbook\templates\account\login.html:8 .\cookbook\templates\base.html:189 +#: .\cookbook\templates\account\login.html:8 .\cookbook\templates\base.html:234 msgid "Login" msgstr "Iniciar sesión" @@ -644,7 +741,7 @@ msgstr "¡Cambios guardados!" #: .\cookbook\templates\account\password_change.html:12 #: .\cookbook\templates\account\password_set.html:12 -#: .\cookbook\templates\settings.html:52 +#: .\cookbook\templates\settings.html:64 #, fuzzy #| msgid "Password Reset" msgid "Password" @@ -734,103 +831,88 @@ msgstr "" msgid "We are sorry, but the sign up is currently closed." msgstr "" -#: .\cookbook\templates\api_info.html:5 .\cookbook\templates\base.html:179 +#: .\cookbook\templates\api_info.html:5 .\cookbook\templates\base.html:222 #: .\cookbook\templates\rest_framework\api.html:11 msgid "API Documentation" msgstr "Documentación de API" -#: .\cookbook\templates\base.html:85 -msgid "Utensils" -msgstr "Utensilios" - -#: .\cookbook\templates\base.html:95 +#: .\cookbook\templates\base.html:86 msgid "Shopping" msgstr "Compras" -#: .\cookbook\templates\base.html:101 +#: .\cookbook\templates\base.html:113 +msgid "Keyword" +msgstr "Palabra clave" + +#: .\cookbook\templates\base.html:137 +#: .\cookbook\templates\forms\ingredients.html:24 +#: .\cookbook\templates\space.html:41 .\cookbook\templates\stats.html:26 +#: .\cookbook\views\lists.py:146 +msgid "Units" +msgstr "Unidades" + +#: .\cookbook\templates\base.html:151 #: .\cookbook\templates\shopping_list.html:230 #: .\cookbook\templates\supermarket.html:7 msgid "Supermarket" msgstr "Supermercado" -#: .\cookbook\templates\base.html:112 .\cookbook\views\delete.py:84 -#: .\cookbook\views\edit.py:102 .\cookbook\views\lists.py:26 -#: .\cookbook\views\new.py:78 -msgid "Keyword" -msgstr "Palabra clave" - -#: .\cookbook\templates\base.html:114 +#: .\cookbook\templates\base.html:163 msgid "Batch Edit" msgstr "Edición Masiva" -#: .\cookbook\templates\base.html:119 -msgid "Storage Data" -msgstr "Almacenamiento de Datos" - -#: .\cookbook\templates\base.html:123 -msgid "Storage Backends" -msgstr "Backends de Almacenamiento" - -#: .\cookbook\templates\base.html:125 -msgid "Configure Sync" -msgstr "Configurar Sincronización" - -#: .\cookbook\templates\base.html:127 -msgid "Discovered Recipes" -msgstr "Recetas Descubiertas" - -#: .\cookbook\templates\base.html:129 -msgid "Discovery Log" -msgstr "Registro de descubrimiento" - -#: .\cookbook\templates\base.html:131 .\cookbook\templates\stats.html:10 -msgid "Statistics" -msgstr "Estadísticas" - -#: .\cookbook\templates\base.html:133 -msgid "Units & Ingredients" -msgstr "Unidades e ingredientes" - -#: .\cookbook\templates\base.html:135 .\cookbook\templates\index.html:47 -msgid "Import Recipe" -msgstr "Importar receta" - -#: .\cookbook\templates\base.html:156 .\cookbook\templates\history.html:6 +#: .\cookbook\templates\base.html:175 .\cookbook\templates\history.html:6 #: .\cookbook\templates\history.html:14 msgid "History" msgstr "Historial" -#: .\cookbook\templates\base.html:159 .\cookbook\templates\space.html:7 +#: .\cookbook\templates\base.html:191 .\cookbook\templates\index.html:47 +msgid "Import Recipe" +msgstr "Importar receta" + +#: .\cookbook\templates\base.html:193 +#: .\cookbook\templates\shopping_list.html:188 +#: .\cookbook\templates\shopping_list.html:210 +msgid "Create" +msgstr "Crear" + +#: .\cookbook\templates\base.html:207 .\cookbook\templates\space.html:7 #: .\cookbook\templates\space.html:19 #, fuzzy #| msgid "Settings" msgid "Space Settings" msgstr "Opciones" -#: .\cookbook\templates\base.html:163 .\cookbook\templates\system.html:13 +#: .\cookbook\templates\base.html:212 .\cookbook\templates\system.html:13 msgid "System" msgstr "Sistema" -#: .\cookbook\templates\base.html:165 .\cookbook\templates\base.html:171 +#: .\cookbook\templates\base.html:214 msgid "Admin" msgstr "Administrador" -#: .\cookbook\templates\base.html:175 +#: .\cookbook\templates\base.html:218 msgid "Markdown Guide" msgstr "Guia Markdown" -#: .\cookbook\templates\base.html:177 +#: .\cookbook\templates\base.html:220 msgid "GitHub" msgstr "GitHub" -#: .\cookbook\templates\base.html:181 +#: .\cookbook\templates\base.html:224 msgid "API Browser" msgstr "Explorador de API" -#: .\cookbook\templates\base.html:184 +#: .\cookbook\templates\base.html:227 msgid "Log out" msgstr "" +#: .\cookbook\templates\base.html:229 +#: .\cookbook\templates\generic\list_template.html:14 +#: .\cookbook\templates\space.html:58 .\cookbook\templates\stats.html:43 +msgid "External Recipes" +msgstr "Recetas Externas" + #: .\cookbook\templates\batch\edit.html:6 msgid "Batch edit Category" msgstr "Edición masiva de Categorías" @@ -845,7 +927,7 @@ msgstr "" "Agregue las palabras clave especificadas a todas las recetas que contengan " "una palabra" -#: .\cookbook\templates\batch\monitor.html:6 .\cookbook\views\edit.py:85 +#: .\cookbook\templates\batch\monitor.html:6 .\cookbook\views\edit.py:83 msgid "Sync" msgstr "Sincronizar" @@ -865,10 +947,26 @@ msgstr "" msgid "The path must be in the following format" msgstr "La ruta debe tener el siguiente formato" -#: .\cookbook\templates\batch\monitor.html:27 +#: .\cookbook\templates\batch\monitor.html:21 +msgid "Manage External Storage" +msgstr "" + +#: .\cookbook\templates\batch\monitor.html:28 msgid "Sync Now!" msgstr "¡Sincronizar ahora!" +#: .\cookbook\templates\batch\monitor.html:29 +#, fuzzy +#| msgid "Shopping Recipes" +msgid "Show Recipes" +msgstr "Recetas en el carro de la compra" + +#: .\cookbook\templates\batch\monitor.html:30 +#, fuzzy +#| msgid "Show Links" +msgid "Show Log" +msgstr "Mostrar Enlaces" + #: .\cookbook\templates\batch\waiting.html:4 #: .\cookbook\templates\batch\waiting.html:10 msgid "Importing Recipes" @@ -882,32 +980,10 @@ msgstr "" "Esto puede tardar unos minutos, dependiendo de la cantidad de recetas " "sincronizadas, espere." -#: .\cookbook\templates\books.html:5 .\cookbook\templates\books.html:11 +#: .\cookbook\templates\books.html:7 msgid "Recipe Books" msgstr "Libros de recetas" -#: .\cookbook\templates\books.html:15 -msgid "New Book" -msgstr "Nuevo Libro" - -#: .\cookbook\templates\books.html:27 .\cookbook\templates\recipe_view.html:26 -msgid "by" -msgstr "por" - -#: .\cookbook\templates\books.html:34 -msgid "Toggle Recipes" -msgstr "Alternar recetas" - -#: .\cookbook\templates\books.html:54 -#: .\cookbook\templates\meal_plan_entry.html:48 -#: .\cookbook\templates\recipes_table.html:64 -msgid "Last cooked" -msgstr "Cocinado por última vez" - -#: .\cookbook\templates\books.html:71 -msgid "There are no recipes in this book yet." -msgstr "Todavía no hay recetas en este libro." - #: .\cookbook\templates\export.html:6 .\cookbook\templates\test2.html:6 msgid "Export Recipes" msgstr "Exportar recetas" @@ -930,217 +1006,21 @@ msgid "Import new Recipe" msgstr "Importar nueva receta" #: .\cookbook\templates\forms\edit_import_recipe.html:14 -#: .\cookbook\templates\forms\edit_internal_recipe.html:439 -#: .\cookbook\templates\forms\edit_internal_recipe.html:471 #: .\cookbook\templates\generic\edit_template.html:23 #: .\cookbook\templates\generic\new_template.html:23 #: .\cookbook\templates\include\log_cooking.html:28 #: .\cookbook\templates\meal_plan.html:325 -#: .\cookbook\templates\settings.html:46 .\cookbook\templates\settings.html:87 -#: .\cookbook\templates\settings.html:105 +#: .\cookbook\templates\settings.html:58 .\cookbook\templates\settings.html:99 +#: .\cookbook\templates\settings.html:117 +#: .\cookbook\templates\settings.html:162 #: .\cookbook\templates\shopping_list.html:353 msgid "Save" msgstr "Guardar" #: .\cookbook\templates\forms\edit_internal_recipe.html:7 -#: .\cookbook\templates\forms\edit_internal_recipe.html:34 msgid "Edit Recipe" msgstr "Editar receta" -#: .\cookbook\templates\forms\edit_internal_recipe.html:56 -#: .\cookbook\templates\url_import.html:171 -msgid "Description" -msgstr "Descripción" - -#: .\cookbook\templates\forms\edit_internal_recipe.html:76 -msgid "Waiting Time" -msgstr "Tiempo de espera" - -#: .\cookbook\templates\forms\edit_internal_recipe.html:82 -msgid "Servings Text" -msgstr "Texto de raciones" - -#: .\cookbook\templates\forms\edit_internal_recipe.html:93 -msgid "Select Keywords" -msgstr "Seleccionar palabras clave" - -#: .\cookbook\templates\forms\edit_internal_recipe.html:94 -#: .\cookbook\templates\url_import.html:583 -#, fuzzy -#| msgid "All Keywords" -msgid "Add Keyword" -msgstr "Todas las palabras clave." - -#: .\cookbook\templates\forms\edit_internal_recipe.html:112 -msgid "Nutrition" -msgstr "Información Nutricional" - -#: .\cookbook\templates\forms\edit_internal_recipe.html:116 -#: .\cookbook\templates\forms\edit_internal_recipe.html:166 -msgid "Delete Step" -msgstr "Eliminar paso" - -#: .\cookbook\templates\forms\edit_internal_recipe.html:120 -msgid "Calories" -msgstr "Calorías" - -#: .\cookbook\templates\forms\edit_internal_recipe.html:123 -msgid "Carbohydrates" -msgstr "Carbohidratos" - -#: .\cookbook\templates\forms\edit_internal_recipe.html:126 -msgid "Fats" -msgstr "Grasas" - -#: .\cookbook\templates\forms\edit_internal_recipe.html:128 -msgid "Proteins" -msgstr "Proteinas" - -#: .\cookbook\templates\forms\edit_internal_recipe.html:150 -#: .\cookbook\templates\forms\edit_internal_recipe.html:504 -msgid "Step" -msgstr "Paso" - -#: .\cookbook\templates\forms\edit_internal_recipe.html:171 -msgid "Show as header" -msgstr "Mostrar como encabezado" - -#: .\cookbook\templates\forms\edit_internal_recipe.html:177 -msgid "Hide as header" -msgstr "Ocultar como encabezado" - -#: .\cookbook\templates\forms\edit_internal_recipe.html:182 -msgid "Move Up" -msgstr "Mover Arriba" - -#: .\cookbook\templates\forms\edit_internal_recipe.html:187 -msgid "Move Down" -msgstr "Mover Abajo" - -#: .\cookbook\templates\forms\edit_internal_recipe.html:196 -msgid "Step Name" -msgstr "Nombre del paso" - -#: .\cookbook\templates\forms\edit_internal_recipe.html:200 -msgid "Step Type" -msgstr "Tipo de paso" - -#: .\cookbook\templates\forms\edit_internal_recipe.html:213 -msgid "Step time in Minutes" -msgstr "Tiempo de paso en minutos" - -#: .\cookbook\templates\forms\edit_internal_recipe.html:229 -#, fuzzy -#| msgid "Select one" -msgid "Select File" -msgstr "Seleccione uno" - -#: .\cookbook\templates\forms\edit_internal_recipe.html:230 -#: .\cookbook\templates\forms\edit_internal_recipe.html:252 -#: .\cookbook\templates\forms\edit_internal_recipe.html:313 -#: .\cookbook\templates\forms\edit_internal_recipe.html:337 -#: .\cookbook\templates\shopping_list.html:189 -#: .\cookbook\templates\shopping_list.html:211 -#: .\cookbook\templates\shopping_list.html:241 -#: .\cookbook\templates\shopping_list.html:265 -#: .\cookbook\templates\url_import.html:495 -#: .\cookbook\templates\url_import.html:527 -msgid "Select" -msgstr "Seleccionar" - -#: .\cookbook\templates\forms\edit_internal_recipe.html:251 -#, fuzzy -#| msgid "Delete Recipe" -msgid "Select Recipe" -msgstr "Eliminar receta" - -#: .\cookbook\templates\forms\edit_internal_recipe.html:311 -#: .\cookbook\templates\shopping_list.html:187 -msgid "Select Unit" -msgstr "Seleccionar unidad" - -#: .\cookbook\templates\forms\edit_internal_recipe.html:312 -#: .\cookbook\templates\forms\edit_internal_recipe.html:336 -#: .\cookbook\templates\shopping_list.html:188 -#: .\cookbook\templates\shopping_list.html:210 -msgid "Create" -msgstr "Crear" - -#: .\cookbook\templates\forms\edit_internal_recipe.html:335 -#: .\cookbook\templates\shopping_list.html:209 -msgid "Select Food" -msgstr "Seleccionar Alimento" - -#: .\cookbook\templates\forms\edit_internal_recipe.html:352 -#: .\cookbook\templates\meal_plan.html:256 -#: .\cookbook\templates\url_import.html:542 -msgid "Note" -msgstr "Nota" - -#: .\cookbook\templates\forms\edit_internal_recipe.html:369 -msgid "Delete Ingredient" -msgstr "Eliminar ingrediente" - -#: .\cookbook\templates\forms\edit_internal_recipe.html:375 -msgid "Make Header" -msgstr "Crear encabezado" - -#: .\cookbook\templates\forms\edit_internal_recipe.html:381 -msgid "Make Ingredient" -msgstr "Crear ingrediente" - -#: .\cookbook\templates\forms\edit_internal_recipe.html:387 -msgid "Disable Amount" -msgstr "Deshabilitar cantidad" - -#: .\cookbook\templates\forms\edit_internal_recipe.html:393 -msgid "Enable Amount" -msgstr "Habilitar cantidad" - -#: .\cookbook\templates\forms\edit_internal_recipe.html:398 -msgid "Copy Template Reference" -msgstr "Copiar Referencia de Plantilla" - -#: .\cookbook\templates\forms\edit_internal_recipe.html:424 -#: .\cookbook\templates\url_import.html:297 -#: .\cookbook\templates\url_import.html:567 -msgid "Instructions" -msgstr "Instrucciones" - -#: .\cookbook\templates\forms\edit_internal_recipe.html:437 -#: .\cookbook\templates\forms\edit_internal_recipe.html:468 -msgid "Save & View" -msgstr "Guardar y ver" - -#: .\cookbook\templates\forms\edit_internal_recipe.html:441 -#: .\cookbook\templates\forms\edit_internal_recipe.html:474 -msgid "Add Step" -msgstr "Agregar paso" - -#: .\cookbook\templates\forms\edit_internal_recipe.html:444 -#: .\cookbook\templates\forms\edit_internal_recipe.html:478 -msgid "Add Nutrition" -msgstr "Añadir Información Nutricional" - -#: .\cookbook\templates\forms\edit_internal_recipe.html:446 -#: .\cookbook\templates\forms\edit_internal_recipe.html:480 -msgid "Remove Nutrition" -msgstr "Eliminar Información Nutricional" - -#: .\cookbook\templates\forms\edit_internal_recipe.html:448 -#: .\cookbook\templates\forms\edit_internal_recipe.html:483 -msgid "View Recipe" -msgstr "Ver la receta" - -#: .\cookbook\templates\forms\edit_internal_recipe.html:450 -#: .\cookbook\templates\forms\edit_internal_recipe.html:485 -msgid "Delete Recipe" -msgstr "Eliminar receta" - -#: .\cookbook\templates\forms\edit_internal_recipe.html:491 -msgid "Steps" -msgstr "Pasos" - #: .\cookbook\templates\forms\ingredients.html:15 msgid "Edit Ingredients" msgstr "Editar ingredientes" @@ -1163,11 +1043,6 @@ msgstr "" "que los usan.\n" " " -#: .\cookbook\templates\forms\ingredients.html:24 -#: .\cookbook\templates\space.html:41 .\cookbook\templates\stats.html:26 -msgid "Units" -msgstr "Unidades" - #: .\cookbook\templates\forms\ingredients.html:26 msgid "Are you sure that you want to merge these two units?" msgstr "¿Estás seguro de que quieres combinar estas dos unidades?" @@ -1181,29 +1056,33 @@ msgstr "Combinar" msgid "Are you sure that you want to merge these two ingredients?" msgstr "¿Estás seguro de que quieres combinar estos dos ingredientes?" -#: .\cookbook\templates\generic\delete_template.html:18 +#: .\cookbook\templates\generic\delete_template.html:19 #, python-format msgid "Are you sure you want to delete the %(title)s: %(object)s " msgstr "¿Estás seguro de que quieres borrar el %(title)s: %(object)s?" -#: .\cookbook\templates\generic\edit_template.html:30 +#: .\cookbook\templates\generic\delete_template.html:23 +msgid "Cancel" +msgstr "" + +#: .\cookbook\templates\generic\edit_template.html:32 msgid "View" msgstr "Ver" -#: .\cookbook\templates\generic\edit_template.html:34 +#: .\cookbook\templates\generic\edit_template.html:36 msgid "Delete original file" msgstr "Eliminar archivo original" #: .\cookbook\templates\generic\list_template.html:6 -#: .\cookbook\templates\generic\list_template.html:12 +#: .\cookbook\templates\generic\list_template.html:21 msgid "List" msgstr "Lista" -#: .\cookbook\templates\generic\list_template.html:25 +#: .\cookbook\templates\generic\list_template.html:34 msgid "Filter" msgstr "Filtro" -#: .\cookbook\templates\generic\list_template.html:30 +#: .\cookbook\templates\generic\list_template.html:39 msgid "Import all" msgstr "Importar todo" @@ -1544,6 +1423,11 @@ msgstr "Mostrar Ayuda" msgid "Week iCal export" msgstr "Exportar a iCal" +#: .\cookbook\templates\meal_plan.html:256 +#: .\cookbook\templates\url_import.html:542 +msgid "Note" +msgstr "Nota" + #: .\cookbook\templates\meal_plan.html:264 #: .\cookbook\templates\meal_plan_entry.html:18 msgid "Created by" @@ -1639,6 +1523,11 @@ msgstr "" msgid "Meal Plan View" msgstr "Vista de menú" +#: .\cookbook\templates\meal_plan_entry.html:48 +#: .\cookbook\templates\recipes_table.html:64 +msgid "Last cooked" +msgstr "Cocinado por última vez" + #: .\cookbook\templates\meal_plan_entry.html:50 msgid "Never cooked before." msgstr "Nunca antes cocinado." @@ -1750,8 +1639,12 @@ msgstr "" msgid "Comments" msgstr "Comentarios" +#: .\cookbook\templates\recipe_view.html:26 +msgid "by" +msgstr "por" + #: .\cookbook\templates\recipe_view.html:44 .\cookbook\views\delete.py:118 -#: .\cookbook\views\edit.py:179 +#: .\cookbook\views\edit.py:177 msgid "Comment" msgstr "Comentario" @@ -1783,58 +1676,229 @@ msgstr "Registrar receta cocinada" msgid "Recipe Home" msgstr "Página de inicio" -#: .\cookbook\templates\settings.html:25 +#: .\cookbook\templates\search_info.html:5 +#: .\cookbook\templates\search_info.html:9 +#: .\cookbook\templates\settings.html:157 +#, fuzzy +#| msgid "Search String" +msgid "Search Settings" +msgstr "Cadena de búsqueda" + +#: .\cookbook\templates\search_info.html:10 +msgid "" +"\n" +" Creating the best search experience is complicated and weighs " +"heavily on your personal configuration. \n" +" Changing any of the search settings can have significant impact on " +"the speed and quality of the results.\n" +" Search Methods, Trigrams and Full Text Search configurations are " +"only available if you are using Postgres for your database.\n" +" " +msgstr "" + +#: .\cookbook\templates\search_info.html:19 +#, fuzzy +#| msgid "Search" +msgid "Search Methods" +msgstr "Buscar" + +#: .\cookbook\templates\search_info.html:23 +msgid "" +" \n" +" Full text searches attempt to normalize the words provided to " +"match common variants. For example: 'forked', 'forking', 'forks' will all " +"normalize to 'fork'.\n" +" There are several methods available, described below, that will " +"control how the search behavior should react when multiple words are " +"searched.\n" +" Full technical details on how these operate can be viewed on Postgresql's website.\n" +" " +msgstr "" + +#: .\cookbook\templates\search_info.html:29 +msgid "" +" \n" +" Simple searches ignore punctuation and common words such as " +"'the', 'a', 'and'. And will treat seperate words as required.\n" +" Searching for 'apple or flour' will return any recipe that " +"includes both 'apple' and 'flour' anywhere in the fields that have been " +"selected for a full text search.\n" +" " +msgstr "" + +#: .\cookbook\templates\search_info.html:34 +msgid "" +" \n" +" Phrase searches ignore punctuation, but will search for all of " +"the words in the exact order provided.\n" +" Searching for 'apple or flour' will only return a recipe that " +"includes the exact phrase 'apple or flour' in any of the fields that have " +"been selected for a full text search.\n" +" " +msgstr "" + +#: .\cookbook\templates\search_info.html:39 +msgid "" +" \n" +" Web searches simulate functionality found on many web search " +"sites supporting special syntax.\n" +" Placing quotes around several words will convert those words " +"into a phrase.\n" +" 'or' is recongized as searching for the word (or phrase) " +"immediately before 'or' OR the word (or phrase) directly after.\n" +" '-' is recognized as searching for recipes that do not include " +"the word (or phrase) that comes immediately after. \n" +" For example searching for 'apple pie' or cherry -butter will " +"return any recipe that includes the phrase 'apple pie' or the word " +"'cherry' \n" +" in any field included in the full text search but exclude any " +"recipe that has the word 'butter' in any field included.\n" +" " +msgstr "" + +#: .\cookbook\templates\search_info.html:48 +msgid "" +" \n" +" Raw search is similar to Web except will take puncuation " +"operators such as '|', '&' and '()'\n" +" " +msgstr "" + +#: .\cookbook\templates\search_info.html:59 +msgid "" +" \n" +" Another approach to searching that also requires Postgresql is " +"fuzzy search or trigram similarity. A trigram is a group of three " +"consecutive characters.\n" +" For example searching for 'apple' will create x trigrams 'app', " +"'ppl', 'ple' and will create a score of how closely words match the " +"generated trigrams.\n" +" One benefit of searching trigams is that a search for 'sandwich' " +"will find mispelled words such as 'sandwhich' that would be missed by other " +"methods.\n" +" " +msgstr "" + +#: .\cookbook\templates\search_info.html:69 +#, fuzzy +#| msgid "Search Recipe" +msgid "Search Fields" +msgstr "Buscar Receta" + +#: .\cookbook\templates\search_info.html:73 +msgid "" +" \n" +" Unaccent is a special case in that it enables searching a field " +"'unaccented' for each search style attempting to ignore accented values. \n" +" For example when you enable unaccent for 'Name' any search " +"(starts with, contains, trigram) will attempt the search ignoring accented " +"characters.\n" +" \n" +" For the other options, you can enable search on any or all " +"fields and they will be combined together with an assumed 'OR'.\n" +" For example enabling 'Name' for Starts With, 'Name' and " +"'Description' for Partial Match and 'Ingredients' and 'Keywords' for Full " +"Search\n" +" and searching for 'apple' will generate a search that will " +"return recipes that have:\n" +" - A recipe name that starts with 'apple'\n" +" - OR a recipe name that contains 'apple'\n" +" - OR a recipe description that contains 'apple'\n" +" - OR a recipe that will have a full text search match ('apple' " +"or 'apples') in ingredients\n" +" - OR a recipe that will have a full text search match in " +"Keywords\n" +"\n" +" Combining too many fields in too many types of search can have a " +"negative impact on performance, create duplicate results or return " +"unexpected results.\n" +" For example, enabling fuzzy search or partial matches will " +"interfere with web search methods. \n" +" Searching for 'apple -pie' with fuzzy search and full text " +"search will return the recipe Apple Pie. Though it is not included in the " +"full text results, it does match the trigram results.\n" +" " +msgstr "" + +#: .\cookbook\templates\search_info.html:95 +#, fuzzy +#| msgid "Search" +msgid "Search Index" +msgstr "Buscar" + +#: .\cookbook\templates\search_info.html:99 +msgid "" +" \n" +" Trigram search and Full Text Search both rely on database " +"indexes to perform effectively. \n" +" You can rebuild the indexes on all fields in the Admin page for " +"Recipes and selecting all recipes and running 'rebuild index for selected " +"recipes'\n" +" You can also rebuild indexes at the command line by executing " +"the management command 'python manage.py rebuildindex'\n" +" " +msgstr "" + +#: .\cookbook\templates\settings.html:27 msgid "Account" msgstr "Cuenta" -#: .\cookbook\templates\settings.html:29 +#: .\cookbook\templates\settings.html:33 msgid "Preferences" msgstr "" -#: .\cookbook\templates\settings.html:33 +#: .\cookbook\templates\settings.html:39 #, fuzzy #| msgid "Settings" msgid "API-Settings" msgstr "Opciones" -#: .\cookbook\templates\settings.html:41 +#: .\cookbook\templates\settings.html:45 +#, fuzzy +#| msgid "Search String" +msgid "Search-Settings" +msgstr "Cadena de búsqueda" + +#: .\cookbook\templates\settings.html:53 #, fuzzy #| msgid "Settings" msgid "Name Settings" msgstr "Opciones" -#: .\cookbook\templates\settings.html:49 +#: .\cookbook\templates\settings.html:61 #, fuzzy #| msgid "Account Connections" msgid "Account Settings" msgstr "Conexiones de la cuenta" -#: .\cookbook\templates\settings.html:51 +#: .\cookbook\templates\settings.html:63 #, fuzzy #| msgid "Settings" msgid "Emails" msgstr "Opciones" -#: .\cookbook\templates\settings.html:54 +#: .\cookbook\templates\settings.html:66 #: .\cookbook\templates\socialaccount\connections.html:11 #, fuzzy #| msgid "Social Login" msgid "Social" msgstr "Inicio de sesión social" -#: .\cookbook\templates\settings.html:66 +#: .\cookbook\templates\settings.html:78 msgid "Language" msgstr "Idioma" -#: .\cookbook\templates\settings.html:96 +#: .\cookbook\templates\settings.html:108 msgid "Style" msgstr "Estilo" -#: .\cookbook\templates\settings.html:116 +#: .\cookbook\templates\settings.html:128 msgid "API Token" msgstr "Token API" -#: .\cookbook\templates\settings.html:117 +#: .\cookbook\templates\settings.html:129 msgid "" "You can use both basic authentication and token based authentication to " "access the REST API." @@ -1842,7 +1906,7 @@ msgstr "" "Puedes utilizar tanto la autenticación básica como la autenticación basada " "en tokens para acceder a la API REST." -#: .\cookbook\templates\settings.html:134 +#: .\cookbook\templates\settings.html:146 msgid "" "Use the token as an Authorization header prefixed by the word token as shown " "in the following examples:" @@ -1850,7 +1914,7 @@ msgstr "" "Utilice el token como cabecera de autorización usando como prefijo la " "palabra token, tal y como se muestra en los siguientes ejemplos:" -#: .\cookbook\templates\settings.html:136 +#: .\cookbook\templates\settings.html:148 msgid "or" msgstr "o" @@ -1893,6 +1957,23 @@ msgstr "Añadir entrada" msgid "Amount" msgstr "Cantidad" +#: .\cookbook\templates\shopping_list.html:187 +msgid "Select Unit" +msgstr "Seleccionar unidad" + +#: .\cookbook\templates\shopping_list.html:189 +#: .\cookbook\templates\shopping_list.html:211 +#: .\cookbook\templates\shopping_list.html:241 +#: .\cookbook\templates\shopping_list.html:265 +#: .\cookbook\templates\url_import.html:495 +#: .\cookbook\templates\url_import.html:527 +msgid "Select" +msgstr "Seleccionar" + +#: .\cookbook\templates\shopping_list.html:209 +msgid "Select Food" +msgstr "Seleccionar Alimento" + #: .\cookbook\templates\shopping_list.html:240 msgid "Select Supermarket" msgstr "Seleccionar supermercado" @@ -1998,10 +2079,6 @@ msgstr "Estadísticas de objetos" msgid "Recipes without Keywords" msgstr "Recetas sin palabras clave" -#: .\cookbook\templates\space.html:58 .\cookbook\templates\stats.html:43 -msgid "External Recipes" -msgstr "Recetas Externas" - #: .\cookbook\templates\space.html:60 .\cookbook\templates\stats.html:45 msgid "Internal Recipes" msgstr "Recetas Internas" @@ -2061,7 +2138,7 @@ msgid "There are no members in your space yet!" msgstr "Todavía no hay recetas en este libro." #: .\cookbook\templates\space.html:130 .\cookbook\templates\system.html:21 -#: .\cookbook\views\lists.py:115 +#: .\cookbook\views\lists.py:100 msgid "Invite Links" msgstr "Enlaces de Invitación" @@ -2069,6 +2146,10 @@ msgstr "Enlaces de Invitación" msgid "Stats" msgstr "Estadísticas" +#: .\cookbook\templates\stats.html:10 +msgid "Statistics" +msgstr "Estadísticas" + #: .\cookbook\templates\system.html:22 msgid "Show Links" msgstr "Mostrar Enlaces" @@ -2254,6 +2335,10 @@ msgstr "" msgid "Text dragged here will be appended to the name." msgstr "" +#: .\cookbook\templates\url_import.html:171 +msgid "Description" +msgstr "Descripción" + #: .\cookbook\templates\url_import.html:175 msgid "Text dragged here will be appended to the description." msgstr "" @@ -2282,6 +2367,11 @@ msgstr "Tiempo" msgid "Ingredients dragged here will be appended to current list." msgstr "" +#: .\cookbook\templates\url_import.html:297 +#: .\cookbook\templates\url_import.html:567 +msgid "Instructions" +msgstr "Instrucciones" + #: .\cookbook\templates\url_import.html:302 msgid "" "Recipe instructions dragged here will be appended to current instructions." @@ -2341,6 +2431,12 @@ msgstr "Descripción" msgid "Select one" msgstr "Seleccione uno" +#: .\cookbook\templates\url_import.html:583 +#, fuzzy +#| msgid "All Keywords" +msgid "Add Keyword" +msgstr "Todas las palabras clave." + #: .\cookbook\templates\url_import.html:596 msgid "All Keywords" msgstr "Todas las palabras clave." @@ -2384,39 +2480,98 @@ msgstr "Propuestas de GitHub" msgid "Recipe Markup Specification" msgstr "Especificación de anotaciones de la receta" -#: .\cookbook\views\api.py:79 +#: .\cookbook\views\api.py:82 .\cookbook\views\api.py:131 #, fuzzy #| msgid "Parameter filter_list incorrectly formatted" msgid "Parameter updated_at incorrectly formatted" msgstr "Parámetro filter_list formateado incorrectamente" -#: .\cookbook\views\api.py:580 .\cookbook\views\views.py:303 +#: .\cookbook\views\api.py:151 +#, python-brace-format +msgid "No {self.basename} with id {pk} exists" +msgstr "" + +#: .\cookbook\views\api.py:155 .\cookbook\views\edit.py:300 +#: .\cookbook\views\edit.py:316 +msgid "Cannot merge with the same object!" +msgstr "¡No se puede unir con el mismo objeto!" + +#: .\cookbook\views\api.py:162 +#, python-brace-format +msgid "No {self.basename} with id {target} exists" +msgstr "" + +#: .\cookbook\views\api.py:167 +#, fuzzy +#| msgid "Cannot merge with the same object!" +msgid "Cannot merge with child object!" +msgstr "¡No se puede unir con el mismo objeto!" + +#: .\cookbook\views\api.py:195 +#, python-brace-format +msgid "{source.name} was merged successfully with {target.name}" +msgstr "" + +#: .\cookbook\views\api.py:199 +#, python-brace-format +msgid "An error occurred attempting to merge {source.name} with {target.name}" +msgstr "" + +#: .\cookbook\views\api.py:239 +#, python-brace-format +msgid "No {self.basename} with id {child} exists" +msgstr "" + +#: .\cookbook\views\api.py:248 +#, python-brace-format +msgid "{child.name} was moved successfully to the root." +msgstr "" + +#: .\cookbook\views\api.py:251 .\cookbook\views\api.py:269 +msgid "An error occurred attempting to move " +msgstr "" + +#: .\cookbook\views\api.py:254 +msgid "Cannot move an object to itself!" +msgstr "" + +#: .\cookbook\views\api.py:260 +#, python-brace-format +msgid "No {self.basename} with id {parent} exists" +msgstr "" + +#: .\cookbook\views\api.py:266 +#, python-brace-format +msgid "{child.name} was moved successfully to parent {parent.name}" +msgstr "" + +#: .\cookbook\views\api.py:704 .\cookbook\views\views.py:289 msgid "This feature is not available in the demo version!" msgstr "¡Esta funcionalidad no está disponible en la versión demo!" -#: .\cookbook\views\api.py:603 +#: .\cookbook\views\api.py:727 msgid "Sync successful!" msgstr "¡Sincronización exitosa!" -#: .\cookbook\views\api.py:608 +#: .\cookbook\views\api.py:732 msgid "Error synchronizing with Storage" msgstr "Error de sincronización con el almacenamiento" -#: .\cookbook\views\api.py:686 +#: .\cookbook\views\api.py:810 msgid "Nothing to do." msgstr "" -#: .\cookbook\views\api.py:701 +#: .\cookbook\views\api.py:825 msgid "The requested site provided malformed data and cannot be read." msgstr "" "El sitio solicitado proporcionó datos con formato incorrecto y no se puede " "leer." -#: .\cookbook\views\api.py:708 +#: .\cookbook\views\api.py:832 msgid "The requested page could not be found." msgstr "La página solicitada no pudo ser encontrada." -#: .\cookbook\views\api.py:717 +#: .\cookbook\views\api.py:841 msgid "" "The requested site does not provide any recognized data format to import the " "recipe from." @@ -2424,13 +2579,13 @@ msgstr "" "El sitio solicitado no proporciona ningún formato de datos reconocido para " "importar la receta." -#: .\cookbook\views\api.py:731 +#: .\cookbook\views\api.py:855 #, fuzzy #| msgid "The requested page could not be found." msgid "No useable data could be found." msgstr "La página solicitada no pudo ser encontrada." -#: .\cookbook\views\api.py:747 +#: .\cookbook\views\api.py:871 msgid "I couldn't find anything to do." msgstr "" @@ -2457,8 +2612,8 @@ msgstr[1] "Edición masiva realizada. %(count)d Recetas fueron actualizadas." msgid "Monitor" msgstr "Monitor" -#: .\cookbook\views\delete.py:96 .\cookbook\views\lists.py:102 -#: .\cookbook\views\new.py:98 +#: .\cookbook\views\delete.py:96 .\cookbook\views\lists.py:86 +#: .\cookbook\views\new.py:97 msgid "Storage Backend" msgstr "Backend de Almacenamiento" @@ -2469,8 +2624,8 @@ msgstr "" "No se pudo borrar este backend de almacenamiento ya que se utiliza en al " "menos un monitor." -#: .\cookbook\views\delete.py:129 .\cookbook\views\edit.py:213 -#: .\cookbook\views\new.py:156 +#: .\cookbook\views\delete.py:129 .\cookbook\views\edit.py:211 +#: .\cookbook\views\new.py:155 msgid "Recipe Book" msgstr "Libro de recetas" @@ -2478,47 +2633,39 @@ msgstr "Libro de recetas" msgid "Bookmarks" msgstr "Marcadores" -#: .\cookbook\views\delete.py:163 .\cookbook\views\new.py:252 +#: .\cookbook\views\delete.py:163 .\cookbook\views\new.py:251 msgid "Invite Link" msgstr "Enlace de invitación" -#: .\cookbook\views\edit.py:119 -msgid "Food" -msgstr "Comida" - -#: .\cookbook\views\edit.py:128 +#: .\cookbook\views\edit.py:126 msgid "You cannot edit this storage!" msgstr "¡No puede editar este almacenamiento!" -#: .\cookbook\views\edit.py:148 +#: .\cookbook\views\edit.py:146 msgid "Storage saved!" msgstr "¡Almacenamiento guardado!" -#: .\cookbook\views\edit.py:154 +#: .\cookbook\views\edit.py:152 msgid "There was an error updating this storage backend!" msgstr "¡Hubo un error al actualizar este backend de almacenamiento!" -#: .\cookbook\views\edit.py:165 +#: .\cookbook\views\edit.py:163 msgid "Storage" msgstr "Almacenamiento" -#: .\cookbook\views\edit.py:261 +#: .\cookbook\views\edit.py:259 msgid "Changes saved!" msgstr "¡Cambios guardados!" -#: .\cookbook\views\edit.py:265 +#: .\cookbook\views\edit.py:263 msgid "Error saving changes!" msgstr "¡Error al guardar los cambios!" -#: .\cookbook\views\edit.py:299 +#: .\cookbook\views\edit.py:298 msgid "Units merged!" msgstr "¡Unidades fusionadas!" -#: .\cookbook\views\edit.py:301 .\cookbook\views\edit.py:317 -msgid "Cannot merge with the same object!" -msgstr "¡No se puede unir con el mismo objeto!" - -#: .\cookbook\views\edit.py:315 +#: .\cookbook\views\edit.py:314 msgid "Foods merged!" msgstr "¡Alimentos fusionados!" @@ -2530,89 +2677,121 @@ msgstr "La importación no está implementada para este proveedor" msgid "Exporting is not implemented for this provider" msgstr "La exportación no está implementada para este proveedor" -#: .\cookbook\views\lists.py:40 +#: .\cookbook\views\lists.py:26 msgid "Import Log" msgstr "Importar registro" -#: .\cookbook\views\lists.py:53 +#: .\cookbook\views\lists.py:39 msgid "Discovery" msgstr "Descubrimiento" -#: .\cookbook\views\lists.py:85 +#: .\cookbook\views\lists.py:69 msgid "Shopping Lists" msgstr "Listas de la compra" -#: .\cookbook\views\new.py:123 +#: .\cookbook\views\lists.py:129 +#, fuzzy +#| msgid "Food" +msgid "Foods" +msgstr "Comida" + +#: .\cookbook\views\lists.py:163 +#, fuzzy +#| msgid "Supermarket" +msgid "Supermarkets" +msgstr "Supermercado" + +#: .\cookbook\views\lists.py:179 +#, fuzzy +#| msgid "Shopping Recipes" +msgid "Shopping Categories" +msgstr "Recetas en el carro de la compra" + +#: .\cookbook\views\new.py:122 msgid "Imported new recipe!" msgstr "¡Nueva receta importada!" -#: .\cookbook\views\new.py:126 +#: .\cookbook\views\new.py:125 msgid "There was an error importing this recipe!" msgstr "¡Hubo un error al importar esta receta!" -#: .\cookbook\views\new.py:226 +#: .\cookbook\views\new.py:225 msgid "Hello" msgstr "" -#: .\cookbook\views\new.py:226 +#: .\cookbook\views\new.py:225 msgid "You have been invited by " msgstr "" -#: .\cookbook\views\new.py:227 +#: .\cookbook\views\new.py:226 msgid " to join their Tandoor Recipes space " msgstr "" -#: .\cookbook\views\new.py:228 +#: .\cookbook\views\new.py:227 msgid "Click the following link to activate your account: " msgstr "" -#: .\cookbook\views\new.py:229 +#: .\cookbook\views\new.py:228 msgid "" "If the link does not work use the following code to manually join the space: " msgstr "" -#: .\cookbook\views\new.py:230 +#: .\cookbook\views\new.py:229 msgid "The invitation is valid until " msgstr "" -#: .\cookbook\views\new.py:231 +#: .\cookbook\views\new.py:230 msgid "" "Tandoor Recipes is an Open Source recipe manager. Check it out on GitHub " msgstr "" -#: .\cookbook\views\new.py:234 +#: .\cookbook\views\new.py:233 msgid "Tandoor Recipes Invite" msgstr "" -#: .\cookbook\views\new.py:241 +#: .\cookbook\views\new.py:240 msgid "Invite link successfully send to user." msgstr "" -#: .\cookbook\views\new.py:244 +#: .\cookbook\views\new.py:243 msgid "" "You have send to many emails, please share the link manually or wait a few " "hours." msgstr "" -#: .\cookbook\views\new.py:246 +#: .\cookbook\views\new.py:245 msgid "Email to user could not be send, please share link manually." msgstr "" -#: .\cookbook\views\views.py:129 +#: .\cookbook\views\views.py:128 msgid "" "You have successfully created your own recipe space. Start by adding some " "recipes or invite other people to join you." msgstr "" -#: .\cookbook\views\views.py:177 +#: .\cookbook\views\views.py:176 msgid "You do not have the required permissions to perform this action!" msgstr "¡No tienes los permisos necesarios para realizar esta acción!" -#: .\cookbook\views\views.py:188 +#: .\cookbook\views\views.py:187 msgid "Comment saved!" msgstr "¡Comentario guardado!" -#: .\cookbook\views\views.py:395 +#: .\cookbook\views\views.py:351 +msgid "You must select at least one field to search!" +msgstr "" + +#: .\cookbook\views\views.py:354 +msgid "" +"To use this search method you must select at least one full text search " +"field!" +msgstr "" + +#: .\cookbook\views\views.py:357 +msgid "Fuzzy search is not compatible with this search method!" +msgstr "" + +#: .\cookbook\views\views.py:437 msgid "" "The setup page can only be used to create the first user! If you have " "forgotten your superuser credentials please consult the django documentation " @@ -2622,44 +2801,174 @@ msgstr "" "usuario. Si has olvidado tus credenciales de superusuario, por favor " "consulta la documentación de django sobre cómo restablecer las contraseñas." -#: .\cookbook\views\views.py:402 +#: .\cookbook\views\views.py:444 msgid "Passwords dont match!" msgstr "¡Las contraseñas no coinciden!" -#: .\cookbook\views\views.py:418 +#: .\cookbook\views\views.py:460 msgid "User has been created, please login!" msgstr "El usuario ha sido creado, ¡inicie sesión!" -#: .\cookbook\views\views.py:434 +#: .\cookbook\views\views.py:476 msgid "Malformed Invite Link supplied!" msgstr "¡Se proporcionó un enlace de invitación con formato incorrecto!" -#: .\cookbook\views\views.py:441 +#: .\cookbook\views\views.py:483 #, fuzzy #| msgid "You are not logged in and therefore cannot view this page!" msgid "You are already member of a space and therefore cannot join this one." msgstr "¡No ha iniciado sesión y por lo tanto no puede ver esta página!" -#: .\cookbook\views\views.py:452 +#: .\cookbook\views\views.py:494 msgid "Successfully joined space." msgstr "" -#: .\cookbook\views\views.py:458 +#: .\cookbook\views\views.py:500 msgid "Invite Link not valid or already used!" msgstr "¡El enlace de invitación no es válido o ya se ha utilizado!" -#: .\cookbook\views\views.py:522 +#: .\cookbook\views\views.py:564 msgid "" "Reporting share links is not enabled for this instance. Please notify the " "page administrator to report problems." msgstr "" -#: .\cookbook\views\views.py:528 +#: .\cookbook\views\views.py:570 msgid "" "Recipe sharing link has been disabled! For additional information please " "contact the page administrator." msgstr "" +#~ msgid "Utensils" +#~ msgstr "Utensilios" + +#~ msgid "Storage Data" +#~ msgstr "Almacenamiento de Datos" + +#~ msgid "Storage Backends" +#~ msgstr "Backends de Almacenamiento" + +#~ msgid "Configure Sync" +#~ msgstr "Configurar Sincronización" + +#~ msgid "Discovered Recipes" +#~ msgstr "Recetas Descubiertas" + +#~ msgid "Discovery Log" +#~ msgstr "Registro de descubrimiento" + +#~ msgid "Units & Ingredients" +#~ msgstr "Unidades e ingredientes" + +#~ msgid "New Book" +#~ msgstr "Nuevo Libro" + +#~ msgid "Toggle Recipes" +#~ msgstr "Alternar recetas" + +#~ msgid "There are no recipes in this book yet." +#~ msgstr "Todavía no hay recetas en este libro." + +#~ msgid "Waiting Time" +#~ msgstr "Tiempo de espera" + +#~ msgid "Servings Text" +#~ msgstr "Texto de raciones" + +#~ msgid "Select Keywords" +#~ msgstr "Seleccionar palabras clave" + +#~ msgid "Nutrition" +#~ msgstr "Información Nutricional" + +#~ msgid "Delete Step" +#~ msgstr "Eliminar paso" + +#~ msgid "Calories" +#~ msgstr "Calorías" + +#~ msgid "Carbohydrates" +#~ msgstr "Carbohidratos" + +#~ msgid "Fats" +#~ msgstr "Grasas" + +#~ msgid "Proteins" +#~ msgstr "Proteinas" + +#~ msgid "Step" +#~ msgstr "Paso" + +#~ msgid "Show as header" +#~ msgstr "Mostrar como encabezado" + +#~ msgid "Hide as header" +#~ msgstr "Ocultar como encabezado" + +#~ msgid "Move Up" +#~ msgstr "Mover Arriba" + +#~ msgid "Move Down" +#~ msgstr "Mover Abajo" + +#~ msgid "Step Name" +#~ msgstr "Nombre del paso" + +#~ msgid "Step Type" +#~ msgstr "Tipo de paso" + +#~ msgid "Step time in Minutes" +#~ msgstr "Tiempo de paso en minutos" + +#, fuzzy +#~| msgid "Select one" +#~ msgid "Select File" +#~ msgstr "Seleccione uno" + +#, fuzzy +#~| msgid "Delete Recipe" +#~ msgid "Select Recipe" +#~ msgstr "Eliminar receta" + +#~ msgid "Delete Ingredient" +#~ msgstr "Eliminar ingrediente" + +#~ msgid "Make Header" +#~ msgstr "Crear encabezado" + +#~ msgid "Make Ingredient" +#~ msgstr "Crear ingrediente" + +#~ msgid "Disable Amount" +#~ msgstr "Deshabilitar cantidad" + +#~ msgid "Enable Amount" +#~ msgstr "Habilitar cantidad" + +#~ msgid "Copy Template Reference" +#~ msgstr "Copiar Referencia de Plantilla" + +#~ msgid "Save & View" +#~ msgstr "Guardar y ver" + +#~ msgid "Add Step" +#~ msgstr "Agregar paso" + +#~ msgid "Add Nutrition" +#~ msgstr "Añadir Información Nutricional" + +#~ msgid "Remove Nutrition" +#~ msgstr "Eliminar Información Nutricional" + +#~ msgid "View Recipe" +#~ msgstr "Ver la receta" + +#~ msgid "Delete Recipe" +#~ msgstr "Eliminar receta" + +#~ msgid "Steps" +#~ msgstr "Pasos" + #, fuzzy #~| msgid "Password Reset" #~ msgid "Password Settings" diff --git a/cookbook/locale/fr/LC_MESSAGES/django.mo b/cookbook/locale/fr/LC_MESSAGES/django.mo index 2ce9bad7..7456bf6c 100644 Binary files a/cookbook/locale/fr/LC_MESSAGES/django.mo and b/cookbook/locale/fr/LC_MESSAGES/django.mo differ diff --git a/cookbook/locale/fr/LC_MESSAGES/django.po b/cookbook/locale/fr/LC_MESSAGES/django.po index d4e5a293..1d972585 100644 --- a/cookbook/locale/fr/LC_MESSAGES/django.po +++ b/cookbook/locale/fr/LC_MESSAGES/django.po @@ -13,8 +13,8 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-08-12 15:09+0200\n" -"PO-Revision-Date: 2021-08-11 16:51+0000\n" +"POT-Creation-Date: 2021-09-13 22:40+0200\n" +"PO-Revision-Date: 2021-09-07 16:06+0000\n" "Last-Translator: Afaren \n" "Language-Team: French \n" @@ -23,17 +23,16 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n > 1;\n" -"X-Generator: Weblate 4.7.2\n" +"X-Generator: Weblate 4.8\n" -#: .\cookbook\filters.py:23 .\cookbook\templates\base.html:98 -#: .\cookbook\templates\forms\edit_internal_recipe.html:269 +#: .\cookbook\filters.py:23 .\cookbook\templates\base.html:125 #: .\cookbook\templates\forms\ingredients.html:34 #: .\cookbook\templates\space.html:43 .\cookbook\templates\stats.html:28 -#: .\cookbook\templates\url_import.html:270 .\cookbook\views\lists.py:67 +#: .\cookbook\templates\url_import.html:270 msgid "Ingredients" msgstr "Ingrédients" -#: .\cookbook\forms.py:49 +#: .\cookbook\forms.py:50 msgid "" "Color of the top navigation bar. Not all colors work with all themes, just " "try them out!" @@ -41,13 +40,13 @@ msgstr "" "La couleur de la barre de navigation du haut. Toutes les couleurs ne " "marchent pas avec tous les thèmes, essayez-les !" -#: .\cookbook\forms.py:51 +#: .\cookbook\forms.py:52 msgid "Default Unit to be used when inserting a new ingredient into a recipe." msgstr "" "L'unité par défaut utilisée lors de l'ajout d'un nouvel ingrédient dans une " "recette." -#: .\cookbook\forms.py:53 +#: .\cookbook\forms.py:54 msgid "" "Enables support for fractions in ingredient amounts (e.g. convert decimals " "to fractions automatically)" @@ -55,7 +54,7 @@ msgstr "" "Autorise l'usage des fractions dans les quantités des ingrédients (convertit " "les décimales en fractions automatiquement)" -#: .\cookbook\forms.py:56 +#: .\cookbook\forms.py:57 msgid "" "Users with whom newly created meal plan/shopping list entries should be " "shared by default." @@ -63,21 +62,21 @@ msgstr "" "Utilisateurs avec lesquels les listes de courses et plans de repas " "nouvellement créés seront partagés par défaut." -#: .\cookbook\forms.py:58 +#: .\cookbook\forms.py:59 msgid "Show recently viewed recipes on search page." msgstr "Afficher les recettes récemment consultées sur la page de recherche." -#: .\cookbook\forms.py:59 +#: .\cookbook\forms.py:60 msgid "Number of decimals to round ingredients." msgstr "Nombre de décimales pour arrondir les ingrédients." -#: .\cookbook\forms.py:60 +#: .\cookbook\forms.py:61 msgid "If you want to be able to create and see comments underneath recipes." msgstr "" "Si vous souhaitez pouvoir créer et consulter des commentaires en-dessous des " "recettes." -#: .\cookbook\forms.py:62 +#: .\cookbook\forms.py:63 msgid "" "Setting to 0 will disable auto sync. When viewing a shopping list the list " "is updated every set seconds to sync changes someone else might have made. " @@ -91,11 +90,11 @@ msgstr "" "données mobiles. Si la valeur est plus petite que les limites de l'instance, " "le paramètre sera réinitialisé." -#: .\cookbook\forms.py:65 +#: .\cookbook\forms.py:66 msgid "Makes the navbar stick to the top of the page." msgstr "Épingler la barre de navigation en haut de la page." -#: .\cookbook\forms.py:81 +#: .\cookbook\forms.py:82 msgid "" "Both fields are optional. If none are given the username will be displayed " "instead" @@ -103,43 +102,39 @@ msgstr "" "Les deux champs sont facultatifs. Si aucun n'est rempli, le nom " "d'utilisateur sera affiché à la place" -#: .\cookbook\forms.py:102 .\cookbook\forms.py:331 -#: .\cookbook\templates\forms\edit_internal_recipe.html:49 +#: .\cookbook\forms.py:103 .\cookbook\forms.py:334 #: .\cookbook\templates\url_import.html:154 msgid "Name" msgstr "Nom" -#: .\cookbook\forms.py:103 .\cookbook\forms.py:332 -#: .\cookbook\templates\base.html:108 .\cookbook\templates\base.html:169 -#: .\cookbook\templates\forms\edit_internal_recipe.html:85 +#: .\cookbook\forms.py:104 .\cookbook\forms.py:335 #: .\cookbook\templates\space.html:39 .\cookbook\templates\stats.html:24 #: .\cookbook\templates\url_import.html:188 -#: .\cookbook\templates\url_import.html:573 +#: .\cookbook\templates\url_import.html:573 .\cookbook\views\lists.py:112 msgid "Keywords" -msgstr "Mot-clés" +msgstr "Mots-clés" -#: .\cookbook\forms.py:104 +#: .\cookbook\forms.py:105 msgid "Preparation time in minutes" msgstr "Le temps de préparation en minutes" -#: .\cookbook\forms.py:105 +#: .\cookbook\forms.py:106 msgid "Waiting time (cooking/baking) in minutes" msgstr "Temps d'attente (pose/cuisson) en minutes" -#: .\cookbook\forms.py:106 .\cookbook\forms.py:333 +#: .\cookbook\forms.py:107 .\cookbook\forms.py:336 msgid "Path" msgstr "Chemin" -#: .\cookbook\forms.py:107 +#: .\cookbook\forms.py:108 msgid "Storage UID" msgstr "UID de stockage" -#: .\cookbook\forms.py:133 -#, fuzzy +#: .\cookbook\forms.py:134 msgid "Default" msgstr "Par défaut" -#: .\cookbook\forms.py:144 .\cookbook\templates\url_import.html:90 +#: .\cookbook\forms.py:145 .\cookbook\templates\url_import.html:90 msgid "" "To prevent duplicates recipes with the same name as existing ones are " "ignored. Check this box to import everything." @@ -147,54 +142,54 @@ msgstr "" "Pour éviter les doublons, les recettes de même nom seront ignorées. Cocher " "cette case pour tout importer." -#: .\cookbook\forms.py:164 +#: .\cookbook\forms.py:165 msgid "New Unit" msgstr "Nouvelle unité" -#: .\cookbook\forms.py:165 +#: .\cookbook\forms.py:166 msgid "New unit that other gets replaced by." msgstr "La nouvelle unité qui remplacera l'autre." -#: .\cookbook\forms.py:170 +#: .\cookbook\forms.py:171 msgid "Old Unit" msgstr "Ancienne unité" -#: .\cookbook\forms.py:171 +#: .\cookbook\forms.py:172 msgid "Unit that should be replaced." msgstr "L'unité qui doit être remplacée." -#: .\cookbook\forms.py:187 +#: .\cookbook\forms.py:189 msgid "New Food" -msgstr "Nouvel ingrédient" +msgstr "Nouvel aliment" -#: .\cookbook\forms.py:188 +#: .\cookbook\forms.py:190 msgid "New food that other gets replaced by." -msgstr "Nouvel ingrédient qui remplace les autres." +msgstr "Nouvel aliment qui remplace les autres." -#: .\cookbook\forms.py:193 +#: .\cookbook\forms.py:195 msgid "Old Food" -msgstr "Ancien ingrédient" +msgstr "Ancien aliment" -#: .\cookbook\forms.py:194 +#: .\cookbook\forms.py:196 msgid "Food that should be replaced." -msgstr "Ingrédient qui devrait être remplacé." +msgstr "Aliment qui devrait être remplacé." -#: .\cookbook\forms.py:212 +#: .\cookbook\forms.py:214 msgid "Add your comment: " msgstr "Ajoutez votre commentaire : " -#: .\cookbook\forms.py:253 +#: .\cookbook\forms.py:256 msgid "Leave empty for dropbox and enter app password for nextcloud." msgstr "" "Laissez vide pour Dropbox et renseigner votre mot de passe d'application " "pour Nextcloud." -#: .\cookbook\forms.py:260 +#: .\cookbook\forms.py:263 msgid "Leave empty for nextcloud and enter api token for dropbox." msgstr "" "Laissez vide pour Nextcloud et renseignez vote jeton d'API pour Dropbox." -#: .\cookbook\forms.py:269 +#: .\cookbook\forms.py:272 msgid "" "Leave empty for dropbox and enter only base url for nextcloud (/remote." "php/webdav/ is added automatically)" @@ -202,26 +197,25 @@ msgstr "" "Laisser vide pour Dropbox et saisissez seulement l'URL de base pour " "Nextcloud (/remote.php/webdav/ est ajouté automatiquement)" -#: .\cookbook\forms.py:307 +#: .\cookbook\forms.py:310 msgid "Search String" msgstr "Texte recherché" -#: .\cookbook\forms.py:334 +#: .\cookbook\forms.py:337 msgid "File ID" msgstr "ID du fichier" -#: .\cookbook\forms.py:370 +#: .\cookbook\forms.py:373 msgid "You must provide at least a recipe or a title." msgstr "Vous devez au moins fournir une recette ou un titre." -#: .\cookbook\forms.py:383 +#: .\cookbook\forms.py:386 msgid "You can list default users to share recipes with in the settings." msgstr "" "Vous pouvez lister les utilisateurs par défaut avec qui partager des " "recettes dans les paramètres." -#: .\cookbook\forms.py:384 -#: .\cookbook\templates\forms\edit_internal_recipe.html:427 +#: .\cookbook\forms.py:387 msgid "" "You can use markdown to format this field. See the docs here" @@ -229,15 +223,15 @@ msgstr "" "Vous pouvez utiliser du markdown pour mettre en forme ce champ. Voir la documentation ici" -#: .\cookbook\forms.py:409 +#: .\cookbook\forms.py:412 msgid "Maximum number of users for this space reached." -msgstr "Nombre maximum d'utilisateurs atteint pour cet espace." +msgstr "Nombre maximum d'utilisateurs atteint pour ce groupe." -#: .\cookbook\forms.py:415 +#: .\cookbook\forms.py:418 msgid "Email address already taken!" msgstr "Adresse mail déjà utilisée !" -#: .\cookbook\forms.py:423 +#: .\cookbook\forms.py:426 msgid "" "An email address is not required but if present the invite link will be send " "to the user." @@ -245,14 +239,90 @@ msgstr "" "Une adresse mail n'est pas requise mais le lien d'invitation sera envoyé à " "l'utilisateur si elle est présente." -#: .\cookbook\forms.py:438 +#: .\cookbook\forms.py:441 msgid "Name already taken." msgstr "Nom déjà pris." -#: .\cookbook\forms.py:449 +#: .\cookbook\forms.py:452 msgid "Accept Terms and Privacy" msgstr "Accepter les conditions d'utilisation" +#: .\cookbook\forms.py:487 +msgid "" +"Select type method of search. Click here for " +"full desciption of choices." +msgstr "" + +#: .\cookbook\forms.py:488 +msgid "" +"Use fuzzy matching on units, keywords and ingredients when editing and " +"importing recipes." +msgstr "" + +#: .\cookbook\forms.py:489 +msgid "" +"Fields to search ignoring accents. Selecting this option can improve or " +"degrade search quality depending on language" +msgstr "" + +#: .\cookbook\forms.py:490 +msgid "" +"Fields to search for partial matches. (e.g. searching for 'Pie' will return " +"'pie' and 'piece' and 'soapie')" +msgstr "" + +#: .\cookbook\forms.py:491 +msgid "" +"Fields to search for beginning of word matches. (e.g. searching for 'sa' " +"will return 'salad' and 'sandwich')" +msgstr "" + +#: .\cookbook\forms.py:492 +msgid "" +"Fields to 'fuzzy' search. (e.g. searching for 'recpie' will find 'recipe'.) " +"Note: this option will conflict with 'web' and 'raw' methods of search." +msgstr "" + +#: .\cookbook\forms.py:493 +msgid "" +"Fields to full text search. Note: 'web', 'phrase', and 'raw' search methods " +"only function with fulltext fields." +msgstr "" + +#: .\cookbook\forms.py:497 +#, fuzzy +#| msgid "Search" +msgid "Search Method" +msgstr "Rechercher" + +#: .\cookbook\forms.py:498 +msgid "Fuzzy Lookups" +msgstr "" + +#: .\cookbook\forms.py:499 +msgid "Ignore Accent" +msgstr "" + +#: .\cookbook\forms.py:500 +msgid "Partial Match" +msgstr "" + +#: .\cookbook\forms.py:501 +msgid "Starts Wtih" +msgstr "" + +#: .\cookbook\forms.py:502 +#, fuzzy +#| msgid "Search" +msgid "Fuzzy Search" +msgstr "Rechercher" + +#: .\cookbook\forms.py:503 +#, fuzzy +#| msgid "Text" +msgid "Full Text" +msgstr "Texte" + #: .\cookbook\helper\AllAuthCustomAdapter.py:36 msgid "" "In order to prevent spam, the requested email was not send. Please wait a " @@ -261,37 +331,37 @@ msgstr "" "Pour éviter les spam, l'email demandé n'a pas été envoyé. Attendez quelques " "minutes et réessayez." -#: .\cookbook\helper\permission_helper.py:138 -#: .\cookbook\helper\permission_helper.py:161 .\cookbook\views\views.py:151 +#: .\cookbook\helper\permission_helper.py:136 +#: .\cookbook\helper\permission_helper.py:159 .\cookbook\views\views.py:150 msgid "You are not logged in and therefore cannot view this page!" msgstr "Vous n'êtes pas connecté et ne pouvez donc pas afficher cette page !" -#: .\cookbook\helper\permission_helper.py:142 -#: .\cookbook\helper\permission_helper.py:148 -#: .\cookbook\helper\permission_helper.py:173 -#: .\cookbook\helper\permission_helper.py:218 -#: .\cookbook\helper\permission_helper.py:232 -#: .\cookbook\helper\permission_helper.py:243 -#: .\cookbook\helper\permission_helper.py:254 .\cookbook\views\data.py:40 -#: .\cookbook\views\views.py:162 .\cookbook\views\views.py:169 -#: .\cookbook\views\views.py:259 +#: .\cookbook\helper\permission_helper.py:140 +#: .\cookbook\helper\permission_helper.py:146 +#: .\cookbook\helper\permission_helper.py:171 +#: .\cookbook\helper\permission_helper.py:216 +#: .\cookbook\helper\permission_helper.py:230 +#: .\cookbook\helper\permission_helper.py:241 +#: .\cookbook\helper\permission_helper.py:252 .\cookbook\views\data.py:40 +#: .\cookbook\views\views.py:161 .\cookbook\views\views.py:168 +#: .\cookbook\views\views.py:245 msgid "You do not have the required permissions to view this page!" msgstr "Vous n'avez pas les droits suffisants pour afficher cette page !" -#: .\cookbook\helper\permission_helper.py:166 -#: .\cookbook\helper\permission_helper.py:189 -#: .\cookbook\helper\permission_helper.py:204 +#: .\cookbook\helper\permission_helper.py:164 +#: .\cookbook\helper\permission_helper.py:187 +#: .\cookbook\helper\permission_helper.py:202 msgid "You cannot interact with this object as it is not owned by you!" msgstr "" "Vous ne pouvez pas interagir avec cet objet car il appartient à un autre " "utilisateur !" -#: .\cookbook\helper\template_helper.py:60 -#: .\cookbook\helper\template_helper.py:62 +#: .\cookbook\helper\template_helper.py:61 +#: .\cookbook\helper\template_helper.py:63 msgid "Could not parse template code." msgstr "Le code du modèle n'a pas pu être analysé." -#: .\cookbook\integration\integration.py:104 +#: .\cookbook\integration\integration.py:119 #: .\cookbook\templates\import.html:14 .\cookbook\templates\import.html:20 #: .\cookbook\templates\import_response.html:7 #: .\cookbook\templates\test.html:14 .\cookbook\templates\test.html:20 @@ -300,11 +370,11 @@ msgstr "Le code du modèle n'a pas pu être analysé." #: .\cookbook\templates\url_import.html:123 #: .\cookbook\templates\url_import.html:317 #: .\cookbook\templates\url_import.html:604 .\cookbook\views\delete.py:60 -#: .\cookbook\views\edit.py:199 +#: .\cookbook\views\edit.py:197 msgid "Import" msgstr "Importer" -#: .\cookbook\integration\integration.py:185 +#: .\cookbook\integration\integration.py:200 msgid "" "Importer expected a .zip file. Did you choose the correct importer type for " "your data ?" @@ -312,7 +382,7 @@ msgstr "" "Un fichier .zip était attendu à l'importation. Avez-vous choisi le bon " "format pour vos données ?" -#: .\cookbook\integration\integration.py:188 +#: .\cookbook\integration\integration.py:203 msgid "" "An unexpected error occurred during the import. Please make sure you have " "uploaded a valid file." @@ -320,11 +390,11 @@ msgstr "" "Une erreur imprévue est survenue durant l'importation. Vérifiez que vous " "avez téléverser un fichier valide." -#: .\cookbook\integration\integration.py:192 +#: .\cookbook\integration\integration.py:208 msgid "The following recipes were ignored because they already existed:" msgstr "Les recettes suivantes ont été ignorées car elles existaient déjà :" -#: .\cookbook\integration\integration.py:196 +#: .\cookbook\integration\integration.py:212 #, python-format msgid "Imported %s recipes." msgstr "%s recettes importées." @@ -342,7 +412,6 @@ msgid "Source" msgstr "Source" #: .\cookbook\integration\safron.py:23 -#: .\cookbook\templates\forms\edit_internal_recipe.html:79 #: .\cookbook\templates\include\log_cooking.html:16 #: .\cookbook\templates\url_import.html:224 #: .\cookbook\templates\url_import.html:455 @@ -354,7 +423,6 @@ msgid "Waiting time" msgstr "Temps d'attente" #: .\cookbook\integration\safron.py:27 -#: .\cookbook\templates\forms\edit_internal_recipe.html:73 msgid "Preparation Time" msgstr "Temps de préparation" @@ -368,6 +436,22 @@ msgstr "Livre de recettes" msgid "Section" msgstr "Rubrique" +#: .\cookbook\management\commands\rebuildindex.py:14 +msgid "Rebuilds full text search index on Recipe" +msgstr "" + +#: .\cookbook\management\commands\rebuildindex.py:18 +msgid "Only Postgress databases use full text search, no index to rebuild" +msgstr "" + +#: .\cookbook\management\commands\rebuildindex.py:29 +msgid "Recipe index rebuild complete." +msgstr "" + +#: .\cookbook\management\commands\rebuildindex.py:31 +msgid "Recipe index rebuild failed." +msgstr "" + #: .\cookbook\migrations\0047_auto_20200602_1133.py:14 msgid "Breakfast" msgstr "Petit-déjeuner" @@ -384,78 +468,91 @@ msgstr "Dîner" msgid "Other" msgstr "Autre" -#: .\cookbook\models.py:72 +#: .\cookbook\models.py:144 msgid "" "Maximum file storage for space in MB. 0 for unlimited, -1 to disable file " "upload." msgstr "" -"Le stockage maximal de fichiers pour l'espace en Mo. Mettre 0 pour ne pas " +"Le stockage maximal de fichiers pour ce groupe en Mo. Mettre 0 pour ne pas " "avoir de limite et -1 pour empêcher le téléversement de fichiers." -#: .\cookbook\models.py:123 .\cookbook\templates\search.html:7 +#: .\cookbook\models.py:196 .\cookbook\templates\search.html:7 #: .\cookbook\templates\shopping_list.html:52 msgid "Search" -msgstr "Recherche" +msgstr "Rechercher" -#: .\cookbook\models.py:124 .\cookbook\templates\base.html:92 +#: .\cookbook\models.py:197 .\cookbook\templates\base.html:82 #: .\cookbook\templates\meal_plan.html:5 .\cookbook\views\delete.py:152 -#: .\cookbook\views\edit.py:233 .\cookbook\views\new.py:201 +#: .\cookbook\views\edit.py:231 .\cookbook\views\new.py:200 msgid "Meal-Plan" msgstr "Menu de la semaine" -#: .\cookbook\models.py:125 .\cookbook\templates\base.html:89 +#: .\cookbook\models.py:198 .\cookbook\templates\base.html:90 msgid "Books" msgstr "Livres" -#: .\cookbook\models.py:133 +#: .\cookbook\models.py:206 msgid "Small" msgstr "Petit" -#: .\cookbook\models.py:133 +#: .\cookbook\models.py:206 msgid "Large" msgstr "Grand" -#: .\cookbook\models.py:133 .\cookbook\templates\generic\new_template.html:6 +#: .\cookbook\models.py:206 .\cookbook\templates\generic\new_template.html:6 #: .\cookbook\templates\generic\new_template.html:14 #: .\cookbook\templates\meal_plan.html:323 msgid "New" -msgstr "Nouveau" +msgstr "Nouveau/Nouvelle" -#: .\cookbook\models.py:338 -#: .\cookbook\templates\forms\edit_internal_recipe.html:202 +#: .\cookbook\models.py:389 +msgid " is part of a recipe step and cannot be deleted" +msgstr "" + +#: .\cookbook\models.py:429 msgid "Text" msgstr "Texte" -#: .\cookbook\models.py:338 -#: .\cookbook\templates\forms\edit_internal_recipe.html:203 +#: .\cookbook\models.py:429 msgid "Time" msgstr "Temps" -#: .\cookbook\models.py:338 -#: .\cookbook\templates\forms\edit_internal_recipe.html:204 -#: .\cookbook\templates\forms\edit_internal_recipe.html:219 +#: .\cookbook\models.py:429 msgid "File" msgstr "Fichier" -#: .\cookbook\models.py:338 -#: .\cookbook\templates\forms\edit_internal_recipe.html:205 -#: .\cookbook\templates\forms\edit_internal_recipe.html:241 +#: .\cookbook\models.py:429 #: .\cookbook\templates\include\recipe_open_modal.html:7 #: .\cookbook\templates\meal_plan.html:247 .\cookbook\views\delete.py:28 -#: .\cookbook\views\edit.py:273 .\cookbook\views\new.py:52 +#: .\cookbook\views\edit.py:271 .\cookbook\views\new.py:52 msgid "Recipe" msgstr "Recette" -#: .\cookbook\serializer.py:109 -msgid "File uploads are not enabled for this Space." -msgstr "Le téléversement de fichiers n'est pas autorisé pour cet espace." +#: .\cookbook\models.py:836 .\cookbook\templates\search_info.html:28 +msgid "Simple" +msgstr "" -#: .\cookbook\serializer.py:117 +#: .\cookbook\models.py:837 .\cookbook\templates\search_info.html:33 +msgid "Phrase" +msgstr "" + +#: .\cookbook\models.py:838 .\cookbook\templates\search_info.html:38 +msgid "Web" +msgstr "" + +#: .\cookbook\models.py:839 .\cookbook\templates\search_info.html:47 +msgid "Raw" +msgstr "" + +#: .\cookbook\serializer.py:112 +msgid "File uploads are not enabled for this Space." +msgstr "Le téléversement de fichiers n'est pas autorisé pour ce groupe." + +#: .\cookbook\serializer.py:125 msgid "You have reached your file upload limit." msgstr "Vous avez atteint votre limite de téléversement de fichiers." -#: .\cookbook\tables.py:35 .\cookbook\templates\books.html:36 -#: .\cookbook\templates\generic\edit_template.html:6 +#: .\cookbook\tables.py:35 .\cookbook\templates\generic\edit_template.html:6 #: .\cookbook\templates\generic\edit_template.html:14 #: .\cookbook\templates\meal_plan.html:281 #: .\cookbook\templates\recipes_table.html:82 @@ -464,11 +561,10 @@ msgstr "Vous avez atteint votre limite de téléversement de fichiers." msgid "Edit" msgstr "Modifier" -#: .\cookbook\tables.py:124 .\cookbook\tables.py:147 -#: .\cookbook\templates\books.html:38 +#: .\cookbook\tables.py:115 .\cookbook\tables.py:138 #: .\cookbook\templates\generic\delete_template.html:5 #: .\cookbook\templates\generic\delete_template.html:13 -#: .\cookbook\templates\generic\edit_template.html:27 +#: .\cookbook\templates\generic\edit_template.html:28 #: .\cookbook\templates\meal_plan.html:277 #: .\cookbook\templates\recipes_table.html:90 msgid "Delete" @@ -498,16 +594,15 @@ msgstr "Adresses mail" #: .\cookbook\templates\account\email.html:12 #: .\cookbook\templates\account\password_change.html:11 #: .\cookbook\templates\account\password_set.html:11 -#: .\cookbook\templates\base.html:154 .\cookbook\templates\settings.html:6 +#: .\cookbook\templates\base.html:204 .\cookbook\templates\settings.html:6 #: .\cookbook\templates\settings.html:17 #: .\cookbook\templates\socialaccount\connections.html:10 msgid "Settings" msgstr "Paramètres" #: .\cookbook\templates\account\email.html:13 -#, fuzzy msgid "Email" -msgstr "Ajouter une adresse mail" +msgstr "Adresse mail" #: .\cookbook\templates\account\email.html:19 msgid "The following e-mail addresses are associated with your account:" @@ -555,7 +650,6 @@ msgid "Add E-mail Address" msgstr "Ajouter une adresse mail" #: .\cookbook\templates\account\email.html:69 -#, fuzzy msgid "Add E-mail" msgstr "Ajouter une adresse mail" @@ -580,7 +674,7 @@ msgstr "" "l'utilisateur %(user_display)s." #: .\cookbook\templates\account\email_confirm.html:22 -#: .\cookbook\templates\generic\delete_template.html:21 +#: .\cookbook\templates\generic\delete_template.html:22 msgid "Confirm" msgstr "Confirmer" @@ -594,7 +688,7 @@ msgstr "" "Ce lien de confirmation par mail est expiré ou invalide. Veuillez demander une nouvelle vérification par mail." -#: .\cookbook\templates\account\login.html:8 .\cookbook\templates\base.html:189 +#: .\cookbook\templates\account\login.html:8 .\cookbook\templates\base.html:234 msgid "Login" msgstr "Connexion" @@ -642,24 +736,18 @@ msgstr "Êtes-vous sûr de vouloir vous déconnecter ?" #: .\cookbook\templates\account\password_change.html:6 #: .\cookbook\templates\account\password_change.html:16 #: .\cookbook\templates\account\password_change.html:21 -#, fuzzy -#| msgid "Reset My Password" msgid "Change Password" -msgstr "Réinitialiser le mot de passe" +msgstr "Modifier le mot de passe" #: .\cookbook\templates\account\password_change.html:12 #: .\cookbook\templates\account\password_set.html:12 -#: .\cookbook\templates\settings.html:52 -#, fuzzy -#| msgid "Password Reset" +#: .\cookbook\templates\settings.html:64 msgid "Password" -msgstr "Réinitialiser le mot de passe" +msgstr "Mot de passe" #: .\cookbook\templates\account\password_change.html:22 -#, fuzzy -#| msgid "Lost your password?" msgid "Forgot Password?" -msgstr "Mot de passe perdu ?" +msgstr "Mot de passe oublié ?" #: .\cookbook\templates\account\password_reset.html:7 #: .\cookbook\templates\account\password_reset.html:13 @@ -692,10 +780,8 @@ msgstr "" #: .\cookbook\templates\account\password_set.html:6 #: .\cookbook\templates\account\password_set.html:16 #: .\cookbook\templates\account\password_set.html:21 -#, fuzzy -#| msgid "Reset My Password" msgid "Set Password" -msgstr "Réinitialiser le mot de passe" +msgstr "Ajouter un mot de passe" #: .\cookbook\templates\account\signup.html:6 msgid "Register" @@ -742,101 +828,86 @@ msgstr "Inscriptions closes" msgid "We are sorry, but the sign up is currently closed." msgstr "Nous sommes désolés, mais les inscriptions sont closes pour le moment." -#: .\cookbook\templates\api_info.html:5 .\cookbook\templates\base.html:179 +#: .\cookbook\templates\api_info.html:5 .\cookbook\templates\base.html:222 #: .\cookbook\templates\rest_framework\api.html:11 msgid "API Documentation" msgstr "Documentation API" -#: .\cookbook\templates\base.html:85 -msgid "Utensils" -msgstr "Ustensiles" - -#: .\cookbook\templates\base.html:95 +#: .\cookbook\templates\base.html:86 msgid "Shopping" msgstr "Courses" -#: .\cookbook\templates\base.html:101 +#: .\cookbook\templates\base.html:113 +msgid "Keyword" +msgstr "Mot-clé" + +#: .\cookbook\templates\base.html:137 +#: .\cookbook\templates\forms\ingredients.html:24 +#: .\cookbook\templates\space.html:41 .\cookbook\templates\stats.html:26 +#: .\cookbook\views\lists.py:146 +msgid "Units" +msgstr "Unités" + +#: .\cookbook\templates\base.html:151 #: .\cookbook\templates\shopping_list.html:230 #: .\cookbook\templates\supermarket.html:7 msgid "Supermarket" msgstr "Supermarché" -#: .\cookbook\templates\base.html:112 .\cookbook\views\delete.py:84 -#: .\cookbook\views\edit.py:102 .\cookbook\views\lists.py:26 -#: .\cookbook\views\new.py:78 -msgid "Keyword" -msgstr "Mot-clé" - -#: .\cookbook\templates\base.html:114 +#: .\cookbook\templates\base.html:163 msgid "Batch Edit" msgstr "Modification en masse" -#: .\cookbook\templates\base.html:119 -msgid "Storage Data" -msgstr "Données de stockage" - -#: .\cookbook\templates\base.html:123 -msgid "Storage Backends" -msgstr "Espaces de stockage" - -#: .\cookbook\templates\base.html:125 -msgid "Configure Sync" -msgstr "Configurer synchro" - -#: .\cookbook\templates\base.html:127 -msgid "Discovered Recipes" -msgstr "Recettes découvertes" - -#: .\cookbook\templates\base.html:129 -msgid "Discovery Log" -msgstr "Historique des découvertes" - -#: .\cookbook\templates\base.html:131 .\cookbook\templates\stats.html:10 -msgid "Statistics" -msgstr "Statistiques" - -#: .\cookbook\templates\base.html:133 -msgid "Units & Ingredients" -msgstr "Unités et ingrédients" - -#: .\cookbook\templates\base.html:135 .\cookbook\templates\index.html:47 -msgid "Import Recipe" -msgstr "Importer une recette" - -#: .\cookbook\templates\base.html:156 .\cookbook\templates\history.html:6 +#: .\cookbook\templates\base.html:175 .\cookbook\templates\history.html:6 #: .\cookbook\templates\history.html:14 msgid "History" msgstr "Historique" -#: .\cookbook\templates\base.html:159 .\cookbook\templates\space.html:7 +#: .\cookbook\templates\base.html:191 .\cookbook\templates\index.html:47 +msgid "Import Recipe" +msgstr "Importer une recette" + +#: .\cookbook\templates\base.html:193 +#: .\cookbook\templates\shopping_list.html:188 +#: .\cookbook\templates\shopping_list.html:210 +msgid "Create" +msgstr "Créer" + +#: .\cookbook\templates\base.html:207 .\cookbook\templates\space.html:7 #: .\cookbook\templates\space.html:19 msgid "Space Settings" -msgstr "Paramètres d'espaces" +msgstr "Paramètres de groupe" -#: .\cookbook\templates\base.html:163 .\cookbook\templates\system.html:13 +#: .\cookbook\templates\base.html:212 .\cookbook\templates\system.html:13 msgid "System" msgstr "Système" -#: .\cookbook\templates\base.html:165 .\cookbook\templates\base.html:171 +#: .\cookbook\templates\base.html:214 msgid "Admin" msgstr "Admin" -#: .\cookbook\templates\base.html:175 +#: .\cookbook\templates\base.html:218 msgid "Markdown Guide" msgstr "Guide Markdown" -#: .\cookbook\templates\base.html:177 +#: .\cookbook\templates\base.html:220 msgid "GitHub" msgstr "GitHub" -#: .\cookbook\templates\base.html:181 +#: .\cookbook\templates\base.html:224 msgid "API Browser" msgstr "Navigateur API" -#: .\cookbook\templates\base.html:184 +#: .\cookbook\templates\base.html:227 msgid "Log out" msgstr "Déconnexion" +#: .\cookbook\templates\base.html:229 +#: .\cookbook\templates\generic\list_template.html:14 +#: .\cookbook\templates\space.html:58 .\cookbook\templates\stats.html:43 +msgid "External Recipes" +msgstr "Recettes externes" + #: .\cookbook\templates\batch\edit.html:6 msgid "Batch edit Category" msgstr "Modifier en masse les catégories" @@ -849,7 +920,7 @@ msgstr "Modifier en masse les recettes" msgid "Add the specified keywords to all recipes containing a word" msgstr "Ajouter les mots-clés spécifiés à toutes les recettes contenant un mot" -#: .\cookbook\templates\batch\monitor.html:6 .\cookbook\views\edit.py:85 +#: .\cookbook\templates\batch\monitor.html:6 .\cookbook\views\edit.py:83 msgid "Sync" msgstr "Synchro" @@ -869,10 +940,28 @@ msgstr "" msgid "The path must be in the following format" msgstr "Le chemin doit être au format suivant" -#: .\cookbook\templates\batch\monitor.html:27 +#: .\cookbook\templates\batch\monitor.html:21 +#, fuzzy +#| msgid "Manage Email Settings" +msgid "Manage External Storage" +msgstr "Gérer les paramètres de mails" + +#: .\cookbook\templates\batch\monitor.html:28 msgid "Sync Now!" msgstr "Lancer la synchro !" +#: .\cookbook\templates\batch\monitor.html:29 +#, fuzzy +#| msgid "Shopping Recipes" +msgid "Show Recipes" +msgstr "Recettes dans le panier" + +#: .\cookbook\templates\batch\monitor.html:30 +#, fuzzy +#| msgid "Show Links" +msgid "Show Log" +msgstr "Afficher les liens" + #: .\cookbook\templates\batch\waiting.html:4 #: .\cookbook\templates\batch\waiting.html:10 msgid "Importing Recipes" @@ -886,32 +975,10 @@ msgstr "" "Cela peut prendre quelques minutes, selon le nombre de recettes à " "synchroniser. Veuillez patienter." -#: .\cookbook\templates\books.html:5 .\cookbook\templates\books.html:11 +#: .\cookbook\templates\books.html:7 msgid "Recipe Books" msgstr "Livres de recettes" -#: .\cookbook\templates\books.html:15 -msgid "New Book" -msgstr "Nouveau livre" - -#: .\cookbook\templates\books.html:27 .\cookbook\templates\recipe_view.html:26 -msgid "by" -msgstr "par" - -#: .\cookbook\templates\books.html:34 -msgid "Toggle Recipes" -msgstr "Afficher les recettes" - -#: .\cookbook\templates\books.html:54 -#: .\cookbook\templates\meal_plan_entry.html:48 -#: .\cookbook\templates\recipes_table.html:64 -msgid "Last cooked" -msgstr "Cuisiné pour la dernière fois le" - -#: .\cookbook\templates\books.html:71 -msgid "There are no recipes in this book yet." -msgstr "Il n'y a pas encore de recettes dans ce livre." - #: .\cookbook\templates\export.html:6 .\cookbook\templates\test2.html:6 msgid "Export Recipes" msgstr "Exporter des ecettes" @@ -932,214 +999,21 @@ msgid "Import new Recipe" msgstr "Importer une nouvelle recette" #: .\cookbook\templates\forms\edit_import_recipe.html:14 -#: .\cookbook\templates\forms\edit_internal_recipe.html:439 -#: .\cookbook\templates\forms\edit_internal_recipe.html:471 #: .\cookbook\templates\generic\edit_template.html:23 #: .\cookbook\templates\generic\new_template.html:23 #: .\cookbook\templates\include\log_cooking.html:28 #: .\cookbook\templates\meal_plan.html:325 -#: .\cookbook\templates\settings.html:46 .\cookbook\templates\settings.html:87 -#: .\cookbook\templates\settings.html:105 +#: .\cookbook\templates\settings.html:58 .\cookbook\templates\settings.html:99 +#: .\cookbook\templates\settings.html:117 +#: .\cookbook\templates\settings.html:162 #: .\cookbook\templates\shopping_list.html:353 msgid "Save" msgstr "Sauvegarder" #: .\cookbook\templates\forms\edit_internal_recipe.html:7 -#: .\cookbook\templates\forms\edit_internal_recipe.html:34 msgid "Edit Recipe" msgstr "Modifier une recette" -#: .\cookbook\templates\forms\edit_internal_recipe.html:56 -#: .\cookbook\templates\url_import.html:171 -msgid "Description" -msgstr "Description" - -#: .\cookbook\templates\forms\edit_internal_recipe.html:76 -msgid "Waiting Time" -msgstr "Temps d'attente" - -#: .\cookbook\templates\forms\edit_internal_recipe.html:82 -#, fuzzy -msgid "Servings Text" -msgstr "Texte d'accompagnement" - -#: .\cookbook\templates\forms\edit_internal_recipe.html:93 -msgid "Select Keywords" -msgstr "Sélectionner des mots-clés" - -#: .\cookbook\templates\forms\edit_internal_recipe.html:94 -#: .\cookbook\templates\url_import.html:583 -msgid "Add Keyword" -msgstr "Ajouter un mot-clé" - -#: .\cookbook\templates\forms\edit_internal_recipe.html:112 -msgid "Nutrition" -msgstr "Informations nutritionnelles" - -#: .\cookbook\templates\forms\edit_internal_recipe.html:116 -#: .\cookbook\templates\forms\edit_internal_recipe.html:166 -msgid "Delete Step" -msgstr "Supprimer l'étape" - -#: .\cookbook\templates\forms\edit_internal_recipe.html:120 -msgid "Calories" -msgstr "Calories" - -#: .\cookbook\templates\forms\edit_internal_recipe.html:123 -msgid "Carbohydrates" -msgstr "Glucides" - -#: .\cookbook\templates\forms\edit_internal_recipe.html:126 -msgid "Fats" -msgstr "Matières grasses" - -#: .\cookbook\templates\forms\edit_internal_recipe.html:128 -msgid "Proteins" -msgstr "Protéines" - -#: .\cookbook\templates\forms\edit_internal_recipe.html:150 -#: .\cookbook\templates\forms\edit_internal_recipe.html:504 -msgid "Step" -msgstr "Étape" - -#: .\cookbook\templates\forms\edit_internal_recipe.html:171 -msgid "Show as header" -msgstr "Afficher en entête" - -#: .\cookbook\templates\forms\edit_internal_recipe.html:177 -msgid "Hide as header" -msgstr "Masquer en entête" - -#: .\cookbook\templates\forms\edit_internal_recipe.html:182 -msgid "Move Up" -msgstr "Remonter" - -#: .\cookbook\templates\forms\edit_internal_recipe.html:187 -msgid "Move Down" -msgstr "Descendre" - -#: .\cookbook\templates\forms\edit_internal_recipe.html:196 -msgid "Step Name" -msgstr "Nom de l'étape" - -#: .\cookbook\templates\forms\edit_internal_recipe.html:200 -msgid "Step Type" -msgstr "Type de l'étape" - -#: .\cookbook\templates\forms\edit_internal_recipe.html:213 -msgid "Step time in Minutes" -msgstr "Durée de l'étape en minutes" - -#: .\cookbook\templates\forms\edit_internal_recipe.html:229 -msgid "Select File" -msgstr "Sélectionner un fichier" - -#: .\cookbook\templates\forms\edit_internal_recipe.html:230 -#: .\cookbook\templates\forms\edit_internal_recipe.html:252 -#: .\cookbook\templates\forms\edit_internal_recipe.html:313 -#: .\cookbook\templates\forms\edit_internal_recipe.html:337 -#: .\cookbook\templates\shopping_list.html:189 -#: .\cookbook\templates\shopping_list.html:211 -#: .\cookbook\templates\shopping_list.html:241 -#: .\cookbook\templates\shopping_list.html:265 -#: .\cookbook\templates\url_import.html:495 -#: .\cookbook\templates\url_import.html:527 -msgid "Select" -msgstr "Sélectionner" - -#: .\cookbook\templates\forms\edit_internal_recipe.html:251 -#, fuzzy -#| msgid "Delete Recipe" -msgid "Select Recipe" -msgstr "Supprimer la recette" - -#: .\cookbook\templates\forms\edit_internal_recipe.html:311 -#: .\cookbook\templates\shopping_list.html:187 -msgid "Select Unit" -msgstr "Sélectionnez l'unité" - -#: .\cookbook\templates\forms\edit_internal_recipe.html:312 -#: .\cookbook\templates\forms\edit_internal_recipe.html:336 -#: .\cookbook\templates\shopping_list.html:188 -#: .\cookbook\templates\shopping_list.html:210 -msgid "Create" -msgstr "Créer" - -#: .\cookbook\templates\forms\edit_internal_recipe.html:335 -#: .\cookbook\templates\shopping_list.html:209 -msgid "Select Food" -msgstr "Sélectionnez l'ingrédient" - -#: .\cookbook\templates\forms\edit_internal_recipe.html:352 -#: .\cookbook\templates\meal_plan.html:256 -#: .\cookbook\templates\url_import.html:542 -msgid "Note" -msgstr "Notes" - -#: .\cookbook\templates\forms\edit_internal_recipe.html:369 -msgid "Delete Ingredient" -msgstr "Supprimer l'ingrédient" - -#: .\cookbook\templates\forms\edit_internal_recipe.html:375 -msgid "Make Header" -msgstr "Transformer en texte" - -#: .\cookbook\templates\forms\edit_internal_recipe.html:381 -msgid "Make Ingredient" -msgstr "Transformer en ingrédient" - -#: .\cookbook\templates\forms\edit_internal_recipe.html:387 -msgid "Disable Amount" -msgstr "Sans quantité" - -#: .\cookbook\templates\forms\edit_internal_recipe.html:393 -msgid "Enable Amount" -msgstr "Avec quantité" - -#: .\cookbook\templates\forms\edit_internal_recipe.html:398 -msgid "Copy Template Reference" -msgstr "Copier le modèle de référence" - -#: .\cookbook\templates\forms\edit_internal_recipe.html:424 -#: .\cookbook\templates\url_import.html:297 -#: .\cookbook\templates\url_import.html:567 -msgid "Instructions" -msgstr "Instructions" - -#: .\cookbook\templates\forms\edit_internal_recipe.html:437 -#: .\cookbook\templates\forms\edit_internal_recipe.html:468 -msgid "Save & View" -msgstr "Sauvegarder et afficher" - -#: .\cookbook\templates\forms\edit_internal_recipe.html:441 -#: .\cookbook\templates\forms\edit_internal_recipe.html:474 -msgid "Add Step" -msgstr "Ajouter une étape" - -#: .\cookbook\templates\forms\edit_internal_recipe.html:444 -#: .\cookbook\templates\forms\edit_internal_recipe.html:478 -msgid "Add Nutrition" -msgstr "Ajouter les informations nutritionnelles" - -#: .\cookbook\templates\forms\edit_internal_recipe.html:446 -#: .\cookbook\templates\forms\edit_internal_recipe.html:480 -msgid "Remove Nutrition" -msgstr "Supprimer les informations nutritionnelles" - -#: .\cookbook\templates\forms\edit_internal_recipe.html:448 -#: .\cookbook\templates\forms\edit_internal_recipe.html:483 -msgid "View Recipe" -msgstr "Afficher la recette" - -#: .\cookbook\templates\forms\edit_internal_recipe.html:450 -#: .\cookbook\templates\forms\edit_internal_recipe.html:485 -msgid "Delete Recipe" -msgstr "Supprimer la recette" - -#: .\cookbook\templates\forms\edit_internal_recipe.html:491 -msgid "Steps" -msgstr "Étapes" - #: .\cookbook\templates\forms\ingredients.html:15 msgid "Edit Ingredients" msgstr "Modifier les ingrédients" @@ -1161,11 +1035,6 @@ msgstr "" "utilisant.\n" " " -#: .\cookbook\templates\forms\ingredients.html:24 -#: .\cookbook\templates\space.html:41 .\cookbook\templates\stats.html:26 -msgid "Units" -msgstr "Unités" - #: .\cookbook\templates\forms\ingredients.html:26 msgid "Are you sure that you want to merge these two units?" msgstr "Êtes-vous sûr(e) de vouloir fusionner ces deux unités ?" @@ -1179,29 +1048,33 @@ msgstr "Fusionner" msgid "Are you sure that you want to merge these two ingredients?" msgstr "Êtes-vous sûr(e) de vouloir fusionner ces deux ingrédients ?" -#: .\cookbook\templates\generic\delete_template.html:18 -#, fuzzy, python-format +#: .\cookbook\templates\generic\delete_template.html:19 +#, python-format msgid "Are you sure you want to delete the %(title)s: %(object)s " msgstr "Êtes-vous certain de vouloir supprimer %(title)s : %(object)s " -#: .\cookbook\templates\generic\edit_template.html:30 +#: .\cookbook\templates\generic\delete_template.html:23 +msgid "Cancel" +msgstr "" + +#: .\cookbook\templates\generic\edit_template.html:32 msgid "View" msgstr "Voir" -#: .\cookbook\templates\generic\edit_template.html:34 +#: .\cookbook\templates\generic\edit_template.html:36 msgid "Delete original file" msgstr "Supprimer le fichier original" #: .\cookbook\templates\generic\list_template.html:6 -#: .\cookbook\templates\generic\list_template.html:12 +#: .\cookbook\templates\generic\list_template.html:21 msgid "List" msgstr "Liste" -#: .\cookbook\templates\generic\list_template.html:25 +#: .\cookbook\templates\generic\list_template.html:34 msgid "Filter" msgstr "Filtre" -#: .\cookbook\templates\generic\list_template.html:30 +#: .\cookbook\templates\generic\list_template.html:39 msgid "Import all" msgstr "Tout importer" @@ -1229,7 +1102,7 @@ msgstr "Importer des recettes" #: .\cookbook\templates\include\log_cooking.html:7 msgid "Log Recipe Cooking" -msgstr "Marquer comme cuisinée" +msgstr "Marquer la recette comme cuisinée" #: .\cookbook\templates\include\log_cooking.html:13 msgid "All fields are optional and can be left empty." @@ -1543,6 +1416,11 @@ msgstr "Afficher l'aide" msgid "Week iCal export" msgstr "Export iCal" +#: .\cookbook\templates\meal_plan.html:256 +#: .\cookbook\templates\url_import.html:542 +msgid "Note" +msgstr "Notes" + #: .\cookbook\templates\meal_plan.html:264 #: .\cookbook\templates\meal_plan_entry.html:18 msgid "Created by" @@ -1627,6 +1505,11 @@ msgstr "" msgid "Meal Plan View" msgstr "Vue des menus" +#: .\cookbook\templates\meal_plan_entry.html:48 +#: .\cookbook\templates\recipes_table.html:64 +msgid "Last cooked" +msgstr "Cuisiné pour la dernière fois le" + #: .\cookbook\templates\meal_plan_entry.html:50 msgid "Never cooked before." msgstr "Pas encore cuisiné." @@ -1666,7 +1549,7 @@ msgstr "" #: .\cookbook\templates\no_space_info.html:6 #: .\cookbook\templates\no_space_info.html:13 msgid "No Space" -msgstr "Pas d'espace" +msgstr "Pas de groupe" #: .\cookbook\templates\no_space_info.html:17 msgid "" @@ -1674,44 +1557,44 @@ msgid "" "more people." msgstr "" "Recettes, aliments, listes de courses et plus encore sont organisés en " -"espaces d'une ou plusieurs personnes." +"groupes d'une ou plusieurs personnes." #: .\cookbook\templates\no_space_info.html:18 msgid "" "You can either be invited into an existing space or create your own one." -msgstr "Vous pouvez être invité dans un espace existant ou en créer un." +msgstr "Vous pouvez être invité dans un groupe existant ou en créer un." #: .\cookbook\templates\no_space_info.html:31 #: .\cookbook\templates\no_space_info.html:40 msgid "Join Space" -msgstr "Rejoindre un espace" +msgstr "Rejoindre un groupe" #: .\cookbook\templates\no_space_info.html:34 msgid "Join an existing space." -msgstr "Rejoindre un espace déjà existant." +msgstr "Rejoindre un groupe déjà existant." #: .\cookbook\templates\no_space_info.html:35 msgid "" "To join an existing space either enter your invite token or click on the " "invite link the space owner send you." msgstr "" -"Pour rejoindre un espace déjà existant, entrez le token d'invitation ou " -"cliquez sur le lien d'invitation que le créateur de l'espace vous a envoyé." +"Pour rejoindre un groupe déjà existant, entrez le token d'invitation ou " +"cliquez sur le lien d'invitation que le créateur du groupe vous a envoyé." #: .\cookbook\templates\no_space_info.html:48 #: .\cookbook\templates\no_space_info.html:56 msgid "Create Space" -msgstr "Créer un espace" +msgstr "Créer un groupe" #: .\cookbook\templates\no_space_info.html:51 msgid "Create your own recipe space." -msgstr "Créer votre propre espace de recettes." +msgstr "Créer votre propre groupe de partage de recettes." #: .\cookbook\templates\no_space_info.html:52 msgid "Start your own recipe space and invite other users to it." msgstr "" -"Créez votre propre espace de recettes et invitez d'autres utilisateurs à " -"l'utiliser." +"Créez votre propre groupe de partage de recettes et invitez d'autres " +"utilisateurs à l'utiliser." #: .\cookbook\templates\offline.html:6 msgid "Offline" @@ -1735,8 +1618,12 @@ msgstr "" msgid "Comments" msgstr "Commentaires" +#: .\cookbook\templates\recipe_view.html:26 +msgid "by" +msgstr "par" + #: .\cookbook\templates\recipe_view.html:44 .\cookbook\views\delete.py:118 -#: .\cookbook\views\edit.py:179 +#: .\cookbook\views\edit.py:177 msgid "Comment" msgstr "Commentaire" @@ -1762,56 +1649,225 @@ msgstr "Externe" #: .\cookbook\templates\recipes_table.html:86 msgid "Log Cooking" -msgstr "Marquer cuisiné" +msgstr "Marquer comme cuisiné" #: .\cookbook\templates\rest_framework\api.html:5 msgid "Recipe Home" msgstr "Page d'accueil" -#: .\cookbook\templates\settings.html:25 +#: .\cookbook\templates\search_info.html:5 +#: .\cookbook\templates\search_info.html:9 +#: .\cookbook\templates\settings.html:157 +#, fuzzy +#| msgid "Search String" +msgid "Search Settings" +msgstr "Texte recherché" + +#: .\cookbook\templates\search_info.html:10 +msgid "" +"\n" +" Creating the best search experience is complicated and weighs " +"heavily on your personal configuration. \n" +" Changing any of the search settings can have significant impact on " +"the speed and quality of the results.\n" +" Search Methods, Trigrams and Full Text Search configurations are " +"only available if you are using Postgres for your database.\n" +" " +msgstr "" + +#: .\cookbook\templates\search_info.html:19 +#, fuzzy +#| msgid "Search" +msgid "Search Methods" +msgstr "Rechercher" + +#: .\cookbook\templates\search_info.html:23 +msgid "" +" \n" +" Full text searches attempt to normalize the words provided to " +"match common variants. For example: 'forked', 'forking', 'forks' will all " +"normalize to 'fork'.\n" +" There are several methods available, described below, that will " +"control how the search behavior should react when multiple words are " +"searched.\n" +" Full technical details on how these operate can be viewed on Postgresql's website.\n" +" " +msgstr "" + +#: .\cookbook\templates\search_info.html:29 +msgid "" +" \n" +" Simple searches ignore punctuation and common words such as " +"'the', 'a', 'and'. And will treat seperate words as required.\n" +" Searching for 'apple or flour' will return any recipe that " +"includes both 'apple' and 'flour' anywhere in the fields that have been " +"selected for a full text search.\n" +" " +msgstr "" + +#: .\cookbook\templates\search_info.html:34 +msgid "" +" \n" +" Phrase searches ignore punctuation, but will search for all of " +"the words in the exact order provided.\n" +" Searching for 'apple or flour' will only return a recipe that " +"includes the exact phrase 'apple or flour' in any of the fields that have " +"been selected for a full text search.\n" +" " +msgstr "" + +#: .\cookbook\templates\search_info.html:39 +msgid "" +" \n" +" Web searches simulate functionality found on many web search " +"sites supporting special syntax.\n" +" Placing quotes around several words will convert those words " +"into a phrase.\n" +" 'or' is recongized as searching for the word (or phrase) " +"immediately before 'or' OR the word (or phrase) directly after.\n" +" '-' is recognized as searching for recipes that do not include " +"the word (or phrase) that comes immediately after. \n" +" For example searching for 'apple pie' or cherry -butter will " +"return any recipe that includes the phrase 'apple pie' or the word " +"'cherry' \n" +" in any field included in the full text search but exclude any " +"recipe that has the word 'butter' in any field included.\n" +" " +msgstr "" + +#: .\cookbook\templates\search_info.html:48 +msgid "" +" \n" +" Raw search is similar to Web except will take puncuation " +"operators such as '|', '&' and '()'\n" +" " +msgstr "" + +#: .\cookbook\templates\search_info.html:59 +msgid "" +" \n" +" Another approach to searching that also requires Postgresql is " +"fuzzy search or trigram similarity. A trigram is a group of three " +"consecutive characters.\n" +" For example searching for 'apple' will create x trigrams 'app', " +"'ppl', 'ple' and will create a score of how closely words match the " +"generated trigrams.\n" +" One benefit of searching trigams is that a search for 'sandwich' " +"will find mispelled words such as 'sandwhich' that would be missed by other " +"methods.\n" +" " +msgstr "" + +#: .\cookbook\templates\search_info.html:69 +#, fuzzy +#| msgid "Search Recipe" +msgid "Search Fields" +msgstr "Rechercher une recette" + +#: .\cookbook\templates\search_info.html:73 +msgid "" +" \n" +" Unaccent is a special case in that it enables searching a field " +"'unaccented' for each search style attempting to ignore accented values. \n" +" For example when you enable unaccent for 'Name' any search " +"(starts with, contains, trigram) will attempt the search ignoring accented " +"characters.\n" +" \n" +" For the other options, you can enable search on any or all " +"fields and they will be combined together with an assumed 'OR'.\n" +" For example enabling 'Name' for Starts With, 'Name' and " +"'Description' for Partial Match and 'Ingredients' and 'Keywords' for Full " +"Search\n" +" and searching for 'apple' will generate a search that will " +"return recipes that have:\n" +" - A recipe name that starts with 'apple'\n" +" - OR a recipe name that contains 'apple'\n" +" - OR a recipe description that contains 'apple'\n" +" - OR a recipe that will have a full text search match ('apple' " +"or 'apples') in ingredients\n" +" - OR a recipe that will have a full text search match in " +"Keywords\n" +"\n" +" Combining too many fields in too many types of search can have a " +"negative impact on performance, create duplicate results or return " +"unexpected results.\n" +" For example, enabling fuzzy search or partial matches will " +"interfere with web search methods. \n" +" Searching for 'apple -pie' with fuzzy search and full text " +"search will return the recipe Apple Pie. Though it is not included in the " +"full text results, it does match the trigram results.\n" +" " +msgstr "" + +#: .\cookbook\templates\search_info.html:95 +#, fuzzy +#| msgid "Search" +msgid "Search Index" +msgstr "Rechercher" + +#: .\cookbook\templates\search_info.html:99 +msgid "" +" \n" +" Trigram search and Full Text Search both rely on database " +"indexes to perform effectively. \n" +" You can rebuild the indexes on all fields in the Admin page for " +"Recipes and selecting all recipes and running 'rebuild index for selected " +"recipes'\n" +" You can also rebuild indexes at the command line by executing " +"the management command 'python manage.py rebuildindex'\n" +" " +msgstr "" + +#: .\cookbook\templates\settings.html:27 msgid "Account" msgstr "Compte" -#: .\cookbook\templates\settings.html:29 +#: .\cookbook\templates\settings.html:33 msgid "Preferences" msgstr "Préférences" -#: .\cookbook\templates\settings.html:33 +#: .\cookbook\templates\settings.html:39 msgid "API-Settings" msgstr "Paramètres d'API" -#: .\cookbook\templates\settings.html:41 +#: .\cookbook\templates\settings.html:45 +#, fuzzy +#| msgid "Search String" +msgid "Search-Settings" +msgstr "Texte recherché" + +#: .\cookbook\templates\settings.html:53 msgid "Name Settings" msgstr "Paramètres de noms" -#: .\cookbook\templates\settings.html:49 -#, fuzzy +#: .\cookbook\templates\settings.html:61 msgid "Account Settings" -msgstr "Comptes connectés" +msgstr "Paramètres de compte" -#: .\cookbook\templates\settings.html:51 -#, fuzzy +#: .\cookbook\templates\settings.html:63 msgid "Emails" -msgstr "Ajouter une adresse mail" +msgstr "Adresses mail" -#: .\cookbook\templates\settings.html:54 +#: .\cookbook\templates\settings.html:66 #: .\cookbook\templates\socialaccount\connections.html:11 msgid "Social" msgstr "Réseaux sociaux" -#: .\cookbook\templates\settings.html:66 +#: .\cookbook\templates\settings.html:78 msgid "Language" msgstr "Langue" -#: .\cookbook\templates\settings.html:96 +#: .\cookbook\templates\settings.html:108 msgid "Style" msgstr "Style" -#: .\cookbook\templates\settings.html:116 +#: .\cookbook\templates\settings.html:128 msgid "API Token" msgstr "Jeton API" -#: .\cookbook\templates\settings.html:117 +#: .\cookbook\templates\settings.html:129 msgid "" "You can use both basic authentication and token based authentication to " "access the REST API." @@ -1819,7 +1875,7 @@ msgstr "" "Vous pouvez utiliser à la fois l'authentification classique et " "l'authentification par jeton pour accéder à l'API REST." -#: .\cookbook\templates\settings.html:134 +#: .\cookbook\templates\settings.html:146 msgid "" "Use the token as an Authorization header prefixed by the word token as shown " "in the following examples:" @@ -1827,7 +1883,7 @@ msgstr "" "Utilisez le jeton dans l'entête d'autorisation préfixé par le mot \"token\" " "comme indiqué dans les exemples suivants :" -#: .\cookbook\templates\settings.html:136 +#: .\cookbook\templates\settings.html:148 msgid "or" msgstr "ou" @@ -1870,6 +1926,23 @@ msgstr "Ajouter une entrée" msgid "Amount" msgstr "Quantité" +#: .\cookbook\templates\shopping_list.html:187 +msgid "Select Unit" +msgstr "Sélectionnez l'unité" + +#: .\cookbook\templates\shopping_list.html:189 +#: .\cookbook\templates\shopping_list.html:211 +#: .\cookbook\templates\shopping_list.html:241 +#: .\cookbook\templates\shopping_list.html:265 +#: .\cookbook\templates\url_import.html:495 +#: .\cookbook\templates\url_import.html:527 +msgid "Select" +msgstr "Sélectionner" + +#: .\cookbook\templates\shopping_list.html:209 +msgid "Select Food" +msgstr "Sélectionnez l'aliment" + #: .\cookbook\templates\shopping_list.html:240 msgid "Select Supermarket" msgstr "Sélectionner un supermarché" @@ -1896,7 +1969,6 @@ msgstr "Préfixe de la liste" #: .\cookbook\templates\socialaccount\connections.html:4 #: .\cookbook\templates\socialaccount\connections.html:15 -#, fuzzy msgid "Account Connections" msgstr "Comptes connectés" @@ -1920,8 +1992,6 @@ msgid "Add a 3rd Party Account" msgstr "Ajouter un compte tiers" #: .\cookbook\templates\socialaccount\signup.html:5 -#, fuzzy -#| msgid "Sign Up" msgid "Signup" msgstr "S'inscrire" @@ -1932,6 +2002,9 @@ msgid "" " %(provider_name)s account to login to\n" " %(site_name)s. As a final step, please complete the following form:" msgstr "" +"Vous êtes sur le point d'utiliser votre compte %(provider_name)s pour vous " +"connecter à %(site_name)s. Pour finaliser la requête, veuillez compléter le " +"formulaire suivant :" #: .\cookbook\templates\socialaccount\snippets\provider_list.html:23 #: .\cookbook\templates\socialaccount\snippets\provider_list.html:31 @@ -1947,16 +2020,12 @@ msgstr "" #: .\cookbook\templates\socialaccount\snippets\provider_list.html:111 #: .\cookbook\templates\socialaccount\snippets\provider_list.html:119 #: .\cookbook\templates\socialaccount\snippets\provider_list.html:127 -#, fuzzy -#| msgid "Sign In" msgid "Sign in using" -msgstr "Connexion" +msgstr "Se connecter avec" #: .\cookbook\templates\space.html:23 -#, fuzzy -#| msgid "No Space" msgid "Space:" -msgstr "Pas d'espace" +msgstr "Groupe :" #: .\cookbook\templates\space.html:24 msgid "Manage Subscription" @@ -1978,10 +2047,6 @@ msgstr "Stats d'objets" msgid "Recipes without Keywords" msgstr "Recettes sans mots-clés" -#: .\cookbook\templates\space.html:58 .\cookbook\templates\stats.html:43 -msgid "External Recipes" -msgstr "Recettes externes" - #: .\cookbook\templates\space.html:60 .\cookbook\templates\stats.html:45 msgid "Internal Recipes" msgstr "Recettes internes" @@ -2028,10 +2093,10 @@ msgstr "Vous ne pouvez pas modifier cela vous-même." #: .\cookbook\templates\space.html:123 msgid "There are no members in your space yet!" -msgstr "Il n'y a pas encore de membres dans votre espace !" +msgstr "Il n'y a pas encore de membres dans votre groupe !" #: .\cookbook\templates\space.html:130 .\cookbook\templates\system.html:21 -#: .\cookbook\views\lists.py:115 +#: .\cookbook\views\lists.py:100 msgid "Invite Links" msgstr "Liens d'invitation" @@ -2039,6 +2104,10 @@ msgstr "Liens d'invitation" msgid "Stats" msgstr "Stats" +#: .\cookbook\templates\stats.html:10 +msgid "Statistics" +msgstr "Statistiques" + #: .\cookbook\templates\system.html:22 msgid "Show Links" msgstr "Afficher les liens" @@ -2119,8 +2188,7 @@ msgstr "" " Vous n'avez pas de SECRET_KEY configurée dans votre " "fichier.env. Django utilise par défaut la clé standard fournie " "avec l'application qui est connue publiquement et non sécurisée ! Veuillez " -"définir SECRET_KEY dans le fichier.env .\n" +"définir SECRET_KEY dans le fichier.env\n" " " #: .\cookbook\templates\system.html:78 @@ -2184,11 +2252,11 @@ msgstr "Saisissez l'URL du site web" #: .\cookbook\templates\url_import.html:97 msgid "Select recipe files to import or drop them here..." -msgstr "" +msgstr "Sélectionnez des fichiers de recettes à importer ou glissez-les ici…" #: .\cookbook\templates\url_import.html:118 msgid "Paste json or html source here to load recipe." -msgstr "" +msgstr "Collez une source json ou html pour charger la recette." #: .\cookbook\templates\url_import.html:146 msgid "Preview Recipe Data" @@ -2197,6 +2265,8 @@ msgstr "Prévisualiser les informations de la recette" #: .\cookbook\templates\url_import.html:147 msgid "Drag recipe attributes from the right into the appropriate box below." msgstr "" +"Glissez les attributs de la recette depuis la droite dans la boîte " +"appropriée ci-dessous." #: .\cookbook\templates\url_import.html:156 #: .\cookbook\templates\url_import.html:173 @@ -2209,46 +2279,53 @@ msgstr "" #: .\cookbook\templates\url_import.html:300 #: .\cookbook\templates\url_import.html:351 msgid "Clear Contents" -msgstr "" +msgstr "Effacer le contenu" #: .\cookbook\templates\url_import.html:158 msgid "Text dragged here will be appended to the name." -msgstr "" +msgstr "Le texte glissé ici sera ajouté au nom." + +#: .\cookbook\templates\url_import.html:171 +msgid "Description" +msgstr "Description" #: .\cookbook\templates\url_import.html:175 msgid "Text dragged here will be appended to the description." -msgstr "" +msgstr "Le texte glissé ici sera ajouté à la description." #: .\cookbook\templates\url_import.html:192 msgid "Keywords dragged here will be appended to current list" -msgstr "" +msgstr "Les mots-clés ajoutés ici seront ajoutés à la liste actuelle" #: .\cookbook\templates\url_import.html:207 msgid "Image" -msgstr "" +msgstr "Image" #: .\cookbook\templates\url_import.html:239 msgid "Prep Time" msgstr "Temps de préparation" #: .\cookbook\templates\url_import.html:254 -#, fuzzy -#| msgid "Time" msgid "Cook Time" msgstr "Temps de cuisson" #: .\cookbook\templates\url_import.html:275 msgid "Ingredients dragged here will be appended to current list." -msgstr "" +msgstr "Les ingrédients glissés ici seront ajoutés à la liste actuelle." + +#: .\cookbook\templates\url_import.html:297 +#: .\cookbook\templates\url_import.html:567 +msgid "Instructions" +msgstr "Instructions" #: .\cookbook\templates\url_import.html:302 msgid "" "Recipe instructions dragged here will be appended to current instructions." msgstr "" +"Les instructions de recette glissés ici seront ajoutés aux instructions " +"actuelles." #: .\cookbook\templates\url_import.html:325 -#, fuzzy -#| msgid "Discovered Recipes" msgid "Discovered Attributes" msgstr "Attributs découverts" @@ -2257,6 +2334,8 @@ msgid "" "Drag recipe attributes from below into the appropriate box on the left. " "Click any node to display its full properties." msgstr "" +"Glissez les attributs de recettes d'en-dessous vers la boîte appropriée à " +"gauche. Cliquez sur un nœud pour voir toutes ses propriétés." #: .\cookbook\templates\url_import.html:344 msgid "Show Blank Field" @@ -2264,11 +2343,11 @@ msgstr "Afficher un champ vierge" #: .\cookbook\templates\url_import.html:349 msgid "Blank Field" -msgstr "" +msgstr "Champ vierge" #: .\cookbook\templates\url_import.html:353 msgid "Items dragged to Blank Field will be appended." -msgstr "" +msgstr "Les objets glissés dans le champ vierge seront ajoutés." #: .\cookbook\templates\url_import.html:400 msgid "Delete Text" @@ -2292,13 +2371,17 @@ msgstr "Description de la recette" msgid "Select one" msgstr "Faites votre choix" +#: .\cookbook\templates\url_import.html:583 +msgid "Add Keyword" +msgstr "Ajouter un mot-clé" + #: .\cookbook\templates\url_import.html:596 msgid "All Keywords" msgstr "Tous les mots-clés" #: .\cookbook\templates\url_import.html:599 msgid "Import all keywords, not only the ones already existing." -msgstr "" +msgstr "Importer tous les mots-clés, pas uniquement ceux déjà existant." #: .\cookbook\templates\url_import.html:626 msgid "Information" @@ -2333,37 +2416,94 @@ msgstr "Ticket GitHub" msgid "Recipe Markup Specification" msgstr "Spécification Recipe Markup" -#: .\cookbook\views\api.py:79 -#, fuzzy -#| msgid "Parameter filter_list incorrectly formatted" +#: .\cookbook\views\api.py:82 .\cookbook\views\api.py:131 msgid "Parameter updated_at incorrectly formatted" msgstr "Le paramètre « update_at » n'est pas correctement formatté" -#: .\cookbook\views\api.py:580 .\cookbook\views\views.py:303 -msgid "This feature is not available in the demo version!" +#: .\cookbook\views\api.py:151 +#, python-brace-format +msgid "No {self.basename} with id {pk} exists" msgstr "" -#: .\cookbook\views\api.py:603 +#: .\cookbook\views\api.py:155 .\cookbook\views\edit.py:300 +#: .\cookbook\views\edit.py:316 +msgid "Cannot merge with the same object!" +msgstr "Un objet ne peut être fusionné avec lui-même !" + +#: .\cookbook\views\api.py:162 +#, python-brace-format +msgid "No {self.basename} with id {target} exists" +msgstr "" + +#: .\cookbook\views\api.py:167 +#, fuzzy +#| msgid "Cannot merge with the same object!" +msgid "Cannot merge with child object!" +msgstr "Un objet ne peut être fusionné avec lui-même !" + +#: .\cookbook\views\api.py:195 +#, python-brace-format +msgid "{source.name} was merged successfully with {target.name}" +msgstr "" + +#: .\cookbook\views\api.py:199 +#, python-brace-format +msgid "An error occurred attempting to merge {source.name} with {target.name}" +msgstr "" + +#: .\cookbook\views\api.py:239 +#, python-brace-format +msgid "No {self.basename} with id {child} exists" +msgstr "" + +#: .\cookbook\views\api.py:248 +#, python-brace-format +msgid "{child.name} was moved successfully to the root." +msgstr "" + +#: .\cookbook\views\api.py:251 .\cookbook\views\api.py:269 +msgid "An error occurred attempting to move " +msgstr "" + +#: .\cookbook\views\api.py:254 +msgid "Cannot move an object to itself!" +msgstr "" + +#: .\cookbook\views\api.py:260 +#, python-brace-format +msgid "No {self.basename} with id {parent} exists" +msgstr "" + +#: .\cookbook\views\api.py:266 +#, python-brace-format +msgid "{child.name} was moved successfully to parent {parent.name}" +msgstr "" + +#: .\cookbook\views\api.py:704 .\cookbook\views\views.py:289 +msgid "This feature is not available in the demo version!" +msgstr "Cette fonctionnalité n'est pas disponible dans la version d'essai !" + +#: .\cookbook\views\api.py:727 msgid "Sync successful!" msgstr "Synchro réussie !" -#: .\cookbook\views\api.py:608 +#: .\cookbook\views\api.py:732 msgid "Error synchronizing with Storage" msgstr "Erreur lors de la synchronisation avec le stockage" -#: .\cookbook\views\api.py:686 +#: .\cookbook\views\api.py:810 msgid "Nothing to do." -msgstr "" +msgstr "Rien à faire." -#: .\cookbook\views\api.py:701 +#: .\cookbook\views\api.py:825 msgid "The requested site provided malformed data and cannot be read." msgstr "Le site web a renvoyé des données malformées et ne peut être lu." -#: .\cookbook\views\api.py:708 +#: .\cookbook\views\api.py:832 msgid "The requested page could not be found." msgstr "La page souhaitée n'a pas été trouvée." -#: .\cookbook\views\api.py:717 +#: .\cookbook\views\api.py:841 msgid "" "The requested site does not provide any recognized data format to import the " "recipe from." @@ -2371,25 +2511,25 @@ msgstr "" "Le site web est dans un format qui ne permet pas d'importer automatiquement " "la recette." -#: .\cookbook\views\api.py:731 +#: .\cookbook\views\api.py:855 msgid "No useable data could be found." msgstr "Aucune information utilisable n'a été trouvée." -#: .\cookbook\views\api.py:747 +#: .\cookbook\views\api.py:871 msgid "I couldn't find anything to do." -msgstr "" +msgstr "Je n'ai rien trouvé à faire." #: .\cookbook\views\data.py:31 .\cookbook\views\data.py:122 #: .\cookbook\views\edit.py:50 .\cookbook\views\import_export.py:67 #: .\cookbook\views\new.py:32 msgid "You have reached the maximum number of recipes for your space." -msgstr "" +msgstr "Vous avez atteint le nombre maximum de recettes pour votre groupe." #: .\cookbook\views\data.py:35 .\cookbook\views\data.py:126 #: .\cookbook\views\edit.py:54 .\cookbook\views\import_export.py:71 #: .\cookbook\views\new.py:36 msgid "You have more users than allowed in your space." -msgstr "" +msgstr "Vous avez plus d'utilisateurs qu'autorisés dans votre groupe." #: .\cookbook\views\data.py:104 #, python-format @@ -2404,8 +2544,8 @@ msgstr[1] "" msgid "Monitor" msgstr "Surveiller" -#: .\cookbook\views\delete.py:96 .\cookbook\views\lists.py:102 -#: .\cookbook\views\new.py:98 +#: .\cookbook\views\delete.py:96 .\cookbook\views\lists.py:86 +#: .\cookbook\views\new.py:97 msgid "Storage Backend" msgstr "Espace de stockage" @@ -2416,8 +2556,8 @@ msgstr "" "Impossible de supprimer cet espace de stockage car il est utilisé dans au " "moins un dossier surveillé." -#: .\cookbook\views\delete.py:129 .\cookbook\views\edit.py:213 -#: .\cookbook\views\new.py:156 +#: .\cookbook\views\delete.py:129 .\cookbook\views\edit.py:211 +#: .\cookbook\views\new.py:155 msgid "Recipe Book" msgstr "Livre de recettes" @@ -2425,142 +2565,177 @@ msgstr "Livre de recettes" msgid "Bookmarks" msgstr "Favoris" -#: .\cookbook\views\delete.py:163 .\cookbook\views\new.py:252 +#: .\cookbook\views\delete.py:163 .\cookbook\views\new.py:251 msgid "Invite Link" msgstr "Lien d'invitation" -#: .\cookbook\views\edit.py:119 -msgid "Food" -msgstr "Ingrédient" - -#: .\cookbook\views\edit.py:128 +#: .\cookbook\views\edit.py:126 msgid "You cannot edit this storage!" msgstr "Vous ne pouvez pas modifier ce stockage !" -#: .\cookbook\views\edit.py:148 +#: .\cookbook\views\edit.py:146 msgid "Storage saved!" msgstr "Stockage sauvegardé !" -#: .\cookbook\views\edit.py:154 +#: .\cookbook\views\edit.py:152 msgid "There was an error updating this storage backend!" msgstr "" "Une erreur s'est produite lors de la mise à jour de cet espace de stockage !" -#: .\cookbook\views\edit.py:165 +#: .\cookbook\views\edit.py:163 msgid "Storage" msgstr "Stockage" -#: .\cookbook\views\edit.py:261 +#: .\cookbook\views\edit.py:259 msgid "Changes saved!" msgstr "Modifications sauvegardées !" -#: .\cookbook\views\edit.py:265 +#: .\cookbook\views\edit.py:263 msgid "Error saving changes!" msgstr "Erreur lors de la sauvegarde des modifications !" -#: .\cookbook\views\edit.py:299 +#: .\cookbook\views\edit.py:298 msgid "Units merged!" msgstr "Unités fusionnées !" -#: .\cookbook\views\edit.py:301 .\cookbook\views\edit.py:317 -msgid "Cannot merge with the same object!" -msgstr "" - -#: .\cookbook\views\edit.py:315 +#: .\cookbook\views\edit.py:314 msgid "Foods merged!" -msgstr "Ingrédient fusionné !" +msgstr "Aliments fusionnés !" #: .\cookbook\views\import_export.py:93 msgid "Importing is not implemented for this provider" -msgstr "" +msgstr "L'importation n'est pas implémentée pour ce fournisseur" #: .\cookbook\views\import_export.py:115 msgid "Exporting is not implemented for this provider" -msgstr "" +msgstr "L'exportation n'est pas implémentée pour ce fournisseur" -#: .\cookbook\views\lists.py:40 +#: .\cookbook\views\lists.py:26 msgid "Import Log" msgstr "Historique d'import" -#: .\cookbook\views\lists.py:53 +#: .\cookbook\views\lists.py:39 msgid "Discovery" msgstr "Découverte" -#: .\cookbook\views\lists.py:85 +#: .\cookbook\views\lists.py:69 msgid "Shopping Lists" msgstr "Listes de course" -#: .\cookbook\views\new.py:123 +#: .\cookbook\views\lists.py:129 +#, fuzzy +#| msgid "Food" +msgid "Foods" +msgstr "Aliment" + +#: .\cookbook\views\lists.py:163 +#, fuzzy +#| msgid "Supermarket" +msgid "Supermarkets" +msgstr "Supermarché" + +#: .\cookbook\views\lists.py:179 +#, fuzzy +#| msgid "Shopping Recipes" +msgid "Shopping Categories" +msgstr "Recettes dans le panier" + +#: .\cookbook\views\new.py:122 msgid "Imported new recipe!" msgstr "Nouvelle recette importée !" -#: .\cookbook\views\new.py:126 +#: .\cookbook\views\new.py:125 msgid "There was an error importing this recipe!" msgstr "Une erreur s\\\\'est produite lors de l\\\\'import de cette recette !" -#: .\cookbook\views\new.py:226 +#: .\cookbook\views\new.py:225 msgid "Hello" -msgstr "" +msgstr "Bonjour" + +#: .\cookbook\views\new.py:225 +msgid "You have been invited by " +msgstr "Vous avez été invité par " #: .\cookbook\views\new.py:226 -msgid "You have been invited by " -msgstr "" +msgid " to join their Tandoor Recipes space " +msgstr " pour rejoindre leur groupe Tandoor Recipes " #: .\cookbook\views\new.py:227 -msgid " to join their Tandoor Recipes space " -msgstr "" +msgid "Click the following link to activate your account: " +msgstr "Cliquez le lien suivant pour activer votre compte : " #: .\cookbook\views\new.py:228 -msgid "Click the following link to activate your account: " -msgstr "" - -#: .\cookbook\views\new.py:229 msgid "" "If the link does not work use the following code to manually join the space: " msgstr "" +"Si le lien ne fonctionne pas, utilisez le code suivant manuellement pour " +"rejoindre le groupe : " + +#: .\cookbook\views\new.py:229 +msgid "The invitation is valid until " +msgstr "L'invitation est valide jusqu'au " #: .\cookbook\views\new.py:230 -msgid "The invitation is valid until " -msgstr "" - -#: .\cookbook\views\new.py:231 msgid "" "Tandoor Recipes is an Open Source recipe manager. Check it out on GitHub " msgstr "" +"Tandoor Recipes sont un gestionnaire de recettes open source. Venez-voir " +"notre Github " -#: .\cookbook\views\new.py:234 +#: .\cookbook\views\new.py:233 msgid "Tandoor Recipes Invite" -msgstr "" +msgstr "Invitation Tandoor Recipes" -#: .\cookbook\views\new.py:241 +#: .\cookbook\views\new.py:240 msgid "Invite link successfully send to user." -msgstr "" +msgstr "Le lien d'invitation a été correctement envoyé à l'utilisateur." -#: .\cookbook\views\new.py:244 +#: .\cookbook\views\new.py:243 msgid "" "You have send to many emails, please share the link manually or wait a few " "hours." msgstr "" +"Vous avez envoyé trop de mails, partagez le lien manuellement ou attendez " +"quelques heures." -#: .\cookbook\views\new.py:246 +#: .\cookbook\views\new.py:245 msgid "Email to user could not be send, please share link manually." msgstr "" +"Le mail n'a pas pu être envoyé à l'utilisateur, veuillez envoyer le lien " +"manuellement." -#: .\cookbook\views\views.py:129 +#: .\cookbook\views\views.py:128 msgid "" "You have successfully created your own recipe space. Start by adding some " "recipes or invite other people to join you." msgstr "" +"Vous avez réussi à créer votre propre groupe de partage de recettes. " +"Commencez à ajoutez des recettes ou invitez d'autres personnes à vous " +"rejoindre." -#: .\cookbook\views\views.py:177 +#: .\cookbook\views\views.py:176 msgid "You do not have the required permissions to perform this action!" msgstr "Vous n'avez pas la permission d'effectuer cette action !" -#: .\cookbook\views\views.py:188 +#: .\cookbook\views\views.py:187 msgid "Comment saved!" msgstr "Commentaire enregistré !" -#: .\cookbook\views\views.py:395 +#: .\cookbook\views\views.py:351 +msgid "You must select at least one field to search!" +msgstr "" + +#: .\cookbook\views\views.py:354 +msgid "" +"To use this search method you must select at least one full text search " +"field!" +msgstr "" + +#: .\cookbook\views\views.py:357 +msgid "Fuzzy search is not compatible with this search method!" +msgstr "" + +#: .\cookbook\views\views.py:437 msgid "" "The setup page can only be used to create the first user! If you have " "forgotten your superuser credentials please consult the django documentation " @@ -2571,42 +2746,172 @@ msgstr "" "utilisateur, counsultez la documentation Django pour savoir comment " "réinitialiser le mot de passe." -#: .\cookbook\views\views.py:402 +#: .\cookbook\views\views.py:444 msgid "Passwords dont match!" msgstr "Les mots de passe ne correspondent pas !" -#: .\cookbook\views\views.py:418 +#: .\cookbook\views\views.py:460 msgid "User has been created, please login!" msgstr "L'utilisateur a été créé, veuillez vous connecter !" -#: .\cookbook\views\views.py:434 +#: .\cookbook\views\views.py:476 msgid "Malformed Invite Link supplied!" msgstr "Le lien d'invitation fourni est mal formé !" -#: .\cookbook\views\views.py:441 +#: .\cookbook\views\views.py:483 msgid "You are already member of a space and therefore cannot join this one." msgstr "" -"Vous êtes déjà membre d'un espace, ainsi, vous ne pouvez rejoindre celui-ci." +"Vous êtes déjà membre d'un groupe, ainsi, vous ne pouvez rejoindre celui-ci." -#: .\cookbook\views\views.py:452 +#: .\cookbook\views\views.py:494 msgid "Successfully joined space." -msgstr "" +msgstr "Vous avez bien rejoint le groupe." -#: .\cookbook\views\views.py:458 +#: .\cookbook\views\views.py:500 msgid "Invite Link not valid or already used!" msgstr "Le lien d'invitation est invalide ou déjà utilisé !" -#: .\cookbook\views\views.py:522 +#: .\cookbook\views\views.py:564 msgid "" "Reporting share links is not enabled for this instance. Please notify the " "page administrator to report problems." msgstr "" +"Le signalement de liens partagés n'est pas autorisé pour cette installation. " +"Veuillez contacter l'administrateur de la page pour signaler le problème." -#: .\cookbook\views\views.py:528 +#: .\cookbook\views\views.py:570 msgid "" "Recipe sharing link has been disabled! For additional information please " "contact the page administrator." msgstr "" +"Les liens partagés de recettes ont été désactivés ! Pour plus " +"d'informations, veuillez contacter l'administrateur de la page." + +#~ msgid "Utensils" +#~ msgstr "Ustensiles" + +#~ msgid "Storage Data" +#~ msgstr "Données de stockage" + +#~ msgid "Storage Backends" +#~ msgstr "Espaces de stockage" + +#~ msgid "Configure Sync" +#~ msgstr "Configurer synchro" + +#~ msgid "Discovered Recipes" +#~ msgstr "Recettes découvertes" + +#~ msgid "Discovery Log" +#~ msgstr "Historique des découvertes" + +#~ msgid "Units & Ingredients" +#~ msgstr "Unités et ingrédients" + +#~ msgid "New Book" +#~ msgstr "Nouveau livre" + +#~ msgid "Toggle Recipes" +#~ msgstr "Afficher les recettes" + +#~ msgid "There are no recipes in this book yet." +#~ msgstr "Il n'y a pas encore de recettes dans ce livre." + +#~ msgid "Waiting Time" +#~ msgstr "Temps d'attente" + +#~ msgid "Servings Text" +#~ msgstr "Service" + +#~ msgid "Select Keywords" +#~ msgstr "Sélectionner des mots-clés" + +#~ msgid "Nutrition" +#~ msgstr "Informations nutritionnelles" + +#~ msgid "Delete Step" +#~ msgstr "Supprimer l'étape" + +#~ msgid "Calories" +#~ msgstr "Calories" + +#~ msgid "Carbohydrates" +#~ msgstr "Glucides" + +#~ msgid "Fats" +#~ msgstr "Matières grasses" + +#~ msgid "Proteins" +#~ msgstr "Protéines" + +#~ msgid "Step" +#~ msgstr "Étape" + +#~ msgid "Show as header" +#~ msgstr "Afficher en entête" + +#~ msgid "Hide as header" +#~ msgstr "Masquer en entête" + +#~ msgid "Move Up" +#~ msgstr "Remonter" + +#~ msgid "Move Down" +#~ msgstr "Descendre" + +#~ msgid "Step Name" +#~ msgstr "Nom de l'étape" + +#~ msgid "Step Type" +#~ msgstr "Type de l'étape" + +#~ msgid "Step time in Minutes" +#~ msgstr "Durée de l'étape en minutes" + +#~ msgid "Select File" +#~ msgstr "Sélectionner un fichier" + +#~ msgid "Select Recipe" +#~ msgstr "Sélectionner la recette" + +#~ msgid "Delete Ingredient" +#~ msgstr "Supprimer l'ingrédient" + +#~ msgid "Make Header" +#~ msgstr "Transformer en texte" + +#~ msgid "Make Ingredient" +#~ msgstr "Transformer en ingrédient" + +#~ msgid "Disable Amount" +#~ msgstr "Sans quantité" + +#~ msgid "Enable Amount" +#~ msgstr "Avec quantité" + +#~ msgid "Copy Template Reference" +#~ msgstr "Copier le modèle de référence" + +#~ msgid "Save & View" +#~ msgstr "Sauvegarder et afficher" + +#~ msgid "Add Step" +#~ msgstr "Ajouter une étape" + +#~ msgid "Add Nutrition" +#~ msgstr "Ajouter les informations nutritionnelles" + +#~ msgid "Remove Nutrition" +#~ msgstr "Supprimer les informations nutritionnelles" + +#~ msgid "View Recipe" +#~ msgstr "Afficher la recette" + +#~ msgid "Delete Recipe" +#~ msgstr "Supprimer la recette" + +#~ msgid "Steps" +#~ msgstr "Étapes" #~ msgid "Password Settings" #~ msgstr "Paramètres de mots de passe" @@ -2614,9 +2919,6 @@ msgstr "" #~ msgid "Email Settings" #~ msgstr "Paramètres d'email" -#~ msgid "Manage Email Settings" -#~ msgstr "Gérer les paramètres de mails" - #~ msgid "Manage Social Accounts" #~ msgstr "Gérer les comptes de réseaux sociaux" diff --git a/cookbook/locale/hu_HU/LC_MESSAGES/django.mo b/cookbook/locale/hu_HU/LC_MESSAGES/django.mo index d22c2735..35156fa9 100644 Binary files a/cookbook/locale/hu_HU/LC_MESSAGES/django.mo and b/cookbook/locale/hu_HU/LC_MESSAGES/django.mo differ diff --git a/cookbook/locale/hu_HU/LC_MESSAGES/django.po b/cookbook/locale/hu_HU/LC_MESSAGES/django.po index 19a094b5..37bec8ad 100644 --- a/cookbook/locale/hu_HU/LC_MESSAGES/django.po +++ b/cookbook/locale/hu_HU/LC_MESSAGES/django.po @@ -11,7 +11,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-08-12 15:09+0200\n" +"POT-Creation-Date: 2021-09-13 22:40+0200\n" "PO-Revision-Date: 2020-06-02 19:28+0000\n" "Last-Translator: igazka , 2020\n" "Language-Team: Hungarian (Hungary) (https://www.transifex.com/django-recipes/" @@ -22,15 +22,14 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: .\cookbook\filters.py:23 .\cookbook\templates\base.html:98 -#: .\cookbook\templates\forms\edit_internal_recipe.html:269 +#: .\cookbook\filters.py:23 .\cookbook\templates\base.html:125 #: .\cookbook\templates\forms\ingredients.html:34 #: .\cookbook\templates\space.html:43 .\cookbook\templates\stats.html:28 -#: .\cookbook\templates\url_import.html:270 .\cookbook\views\lists.py:67 +#: .\cookbook\templates\url_import.html:270 msgid "Ingredients" msgstr "Hozzávalók" -#: .\cookbook\forms.py:49 +#: .\cookbook\forms.py:50 msgid "" "Color of the top navigation bar. Not all colors work with all themes, just " "try them out!" @@ -38,12 +37,12 @@ msgstr "" "A felső navigációs sáv színe. Nem minden szín működik minden témával. " "Próbáld ki őket! " -#: .\cookbook\forms.py:51 +#: .\cookbook\forms.py:52 msgid "Default Unit to be used when inserting a new ingredient into a recipe." msgstr "" "Az alapértelmezett mértékegység, új hozzávaló receptbe való beillesztésekor." -#: .\cookbook\forms.py:53 +#: .\cookbook\forms.py:54 msgid "" "Enables support for fractions in ingredient amounts (e.g. convert decimals " "to fractions automatically)" @@ -51,25 +50,25 @@ msgstr "" "Lehetővé teszi az összetevők mennyiségében a törtrészek használatát (pl. A " "tizedesjegyek automatikus törtrészekké alakítása)" -#: .\cookbook\forms.py:56 +#: .\cookbook\forms.py:57 msgid "" "Users with whom newly created meal plan/shopping list entries should be " "shared by default." msgstr "" -#: .\cookbook\forms.py:58 +#: .\cookbook\forms.py:59 msgid "Show recently viewed recipes on search page." msgstr "" -#: .\cookbook\forms.py:59 +#: .\cookbook\forms.py:60 msgid "Number of decimals to round ingredients." msgstr "" -#: .\cookbook\forms.py:60 +#: .\cookbook\forms.py:61 msgid "If you want to be able to create and see comments underneath recipes." msgstr "" -#: .\cookbook\forms.py:62 +#: .\cookbook\forms.py:63 msgid "" "Setting to 0 will disable auto sync. When viewing a shopping list the list " "is updated every set seconds to sync changes someone else might have made. " @@ -77,187 +76,255 @@ msgid "" "mobile data. If lower than instance limit it is reset when saving." msgstr "" -#: .\cookbook\forms.py:65 +#: .\cookbook\forms.py:66 msgid "Makes the navbar stick to the top of the page." msgstr "" -#: .\cookbook\forms.py:81 +#: .\cookbook\forms.py:82 msgid "" "Both fields are optional. If none are given the username will be displayed " "instead" msgstr "" -#: .\cookbook\forms.py:102 .\cookbook\forms.py:331 -#: .\cookbook\templates\forms\edit_internal_recipe.html:49 +#: .\cookbook\forms.py:103 .\cookbook\forms.py:334 #: .\cookbook\templates\url_import.html:154 msgid "Name" msgstr "Név" -#: .\cookbook\forms.py:103 .\cookbook\forms.py:332 -#: .\cookbook\templates\base.html:108 .\cookbook\templates\base.html:169 -#: .\cookbook\templates\forms\edit_internal_recipe.html:85 +#: .\cookbook\forms.py:104 .\cookbook\forms.py:335 #: .\cookbook\templates\space.html:39 .\cookbook\templates\stats.html:24 #: .\cookbook\templates\url_import.html:188 -#: .\cookbook\templates\url_import.html:573 +#: .\cookbook\templates\url_import.html:573 .\cookbook\views\lists.py:112 msgid "Keywords" msgstr "Kulcsszavak" -#: .\cookbook\forms.py:104 +#: .\cookbook\forms.py:105 msgid "Preparation time in minutes" msgstr "Előkészítési idő percben" -#: .\cookbook\forms.py:105 +#: .\cookbook\forms.py:106 msgid "Waiting time (cooking/baking) in minutes" msgstr "Várakozási idő (sütés/főzés) percben" -#: .\cookbook\forms.py:106 .\cookbook\forms.py:333 +#: .\cookbook\forms.py:107 .\cookbook\forms.py:336 msgid "Path" msgstr "Elérési útvonal" -#: .\cookbook\forms.py:107 +#: .\cookbook\forms.py:108 msgid "Storage UID" msgstr "Tárhely UID" -#: .\cookbook\forms.py:133 +#: .\cookbook\forms.py:134 msgid "Default" msgstr "" -#: .\cookbook\forms.py:144 .\cookbook\templates\url_import.html:90 +#: .\cookbook\forms.py:145 .\cookbook\templates\url_import.html:90 msgid "" "To prevent duplicates recipes with the same name as existing ones are " "ignored. Check this box to import everything." msgstr "" -#: .\cookbook\forms.py:164 +#: .\cookbook\forms.py:165 msgid "New Unit" msgstr "Új Mértékegység" -#: .\cookbook\forms.py:165 +#: .\cookbook\forms.py:166 msgid "New unit that other gets replaced by." msgstr "" -#: .\cookbook\forms.py:170 +#: .\cookbook\forms.py:171 msgid "Old Unit" msgstr "Régi Mértékegység" -#: .\cookbook\forms.py:171 +#: .\cookbook\forms.py:172 msgid "Unit that should be replaced." msgstr "" -#: .\cookbook\forms.py:187 +#: .\cookbook\forms.py:189 msgid "New Food" msgstr "Új Étel" -#: .\cookbook\forms.py:188 +#: .\cookbook\forms.py:190 msgid "New food that other gets replaced by." msgstr "" -#: .\cookbook\forms.py:193 +#: .\cookbook\forms.py:195 msgid "Old Food" msgstr "Régi Étel" -#: .\cookbook\forms.py:194 +#: .\cookbook\forms.py:196 msgid "Food that should be replaced." msgstr "" -#: .\cookbook\forms.py:212 +#: .\cookbook\forms.py:214 msgid "Add your comment: " msgstr "Add hozzá a kommented:" -#: .\cookbook\forms.py:253 +#: .\cookbook\forms.py:256 msgid "Leave empty for dropbox and enter app password for nextcloud." msgstr "" -#: .\cookbook\forms.py:260 +#: .\cookbook\forms.py:263 msgid "Leave empty for nextcloud and enter api token for dropbox." msgstr "" -#: .\cookbook\forms.py:269 +#: .\cookbook\forms.py:272 msgid "" "Leave empty for dropbox and enter only base url for nextcloud (/remote." "php/webdav/ is added automatically)" msgstr "" -#: .\cookbook\forms.py:307 +#: .\cookbook\forms.py:310 msgid "Search String" msgstr "" -#: .\cookbook\forms.py:334 +#: .\cookbook\forms.py:337 msgid "File ID" msgstr "Fájl ID:" -#: .\cookbook\forms.py:370 +#: .\cookbook\forms.py:373 msgid "You must provide at least a recipe or a title." msgstr "" -#: .\cookbook\forms.py:383 +#: .\cookbook\forms.py:386 msgid "You can list default users to share recipes with in the settings." msgstr "" -#: .\cookbook\forms.py:384 -#: .\cookbook\templates\forms\edit_internal_recipe.html:427 +#: .\cookbook\forms.py:387 msgid "" "You can use markdown to format this field. See the docs here" msgstr "" -#: .\cookbook\forms.py:409 +#: .\cookbook\forms.py:412 msgid "Maximum number of users for this space reached." msgstr "" -#: .\cookbook\forms.py:415 +#: .\cookbook\forms.py:418 msgid "Email address already taken!" msgstr "" -#: .\cookbook\forms.py:423 +#: .\cookbook\forms.py:426 msgid "" "An email address is not required but if present the invite link will be send " "to the user." msgstr "" -#: .\cookbook\forms.py:438 +#: .\cookbook\forms.py:441 msgid "Name already taken." msgstr "" -#: .\cookbook\forms.py:449 +#: .\cookbook\forms.py:452 msgid "Accept Terms and Privacy" msgstr "" +#: .\cookbook\forms.py:487 +msgid "" +"Select type method of search. Click here for " +"full desciption of choices." +msgstr "" + +#: .\cookbook\forms.py:488 +msgid "" +"Use fuzzy matching on units, keywords and ingredients when editing and " +"importing recipes." +msgstr "" + +#: .\cookbook\forms.py:489 +msgid "" +"Fields to search ignoring accents. Selecting this option can improve or " +"degrade search quality depending on language" +msgstr "" + +#: .\cookbook\forms.py:490 +msgid "" +"Fields to search for partial matches. (e.g. searching for 'Pie' will return " +"'pie' and 'piece' and 'soapie')" +msgstr "" + +#: .\cookbook\forms.py:491 +msgid "" +"Fields to search for beginning of word matches. (e.g. searching for 'sa' " +"will return 'salad' and 'sandwich')" +msgstr "" + +#: .\cookbook\forms.py:492 +msgid "" +"Fields to 'fuzzy' search. (e.g. searching for 'recpie' will find 'recipe'.) " +"Note: this option will conflict with 'web' and 'raw' methods of search." +msgstr "" + +#: .\cookbook\forms.py:493 +msgid "" +"Fields to full text search. Note: 'web', 'phrase', and 'raw' search methods " +"only function with fulltext fields." +msgstr "" + +#: .\cookbook\forms.py:497 +msgid "Search Method" +msgstr "" + +#: .\cookbook\forms.py:498 +msgid "Fuzzy Lookups" +msgstr "" + +#: .\cookbook\forms.py:499 +msgid "Ignore Accent" +msgstr "" + +#: .\cookbook\forms.py:500 +msgid "Partial Match" +msgstr "" + +#: .\cookbook\forms.py:501 +msgid "Starts Wtih" +msgstr "" + +#: .\cookbook\forms.py:502 +msgid "Fuzzy Search" +msgstr "" + +#: .\cookbook\forms.py:503 +#, fuzzy +#| msgid "Text" +msgid "Full Text" +msgstr "Szöveg" + #: .\cookbook\helper\AllAuthCustomAdapter.py:36 msgid "" "In order to prevent spam, the requested email was not send. Please wait a " "few minutes and try again." msgstr "" -#: .\cookbook\helper\permission_helper.py:138 -#: .\cookbook\helper\permission_helper.py:161 .\cookbook\views\views.py:151 +#: .\cookbook\helper\permission_helper.py:136 +#: .\cookbook\helper\permission_helper.py:159 .\cookbook\views\views.py:150 msgid "You are not logged in and therefore cannot view this page!" msgstr "" -#: .\cookbook\helper\permission_helper.py:142 -#: .\cookbook\helper\permission_helper.py:148 -#: .\cookbook\helper\permission_helper.py:173 -#: .\cookbook\helper\permission_helper.py:218 -#: .\cookbook\helper\permission_helper.py:232 -#: .\cookbook\helper\permission_helper.py:243 -#: .\cookbook\helper\permission_helper.py:254 .\cookbook\views\data.py:40 -#: .\cookbook\views\views.py:162 .\cookbook\views\views.py:169 -#: .\cookbook\views\views.py:259 +#: .\cookbook\helper\permission_helper.py:140 +#: .\cookbook\helper\permission_helper.py:146 +#: .\cookbook\helper\permission_helper.py:171 +#: .\cookbook\helper\permission_helper.py:216 +#: .\cookbook\helper\permission_helper.py:230 +#: .\cookbook\helper\permission_helper.py:241 +#: .\cookbook\helper\permission_helper.py:252 .\cookbook\views\data.py:40 +#: .\cookbook\views\views.py:161 .\cookbook\views\views.py:168 +#: .\cookbook\views\views.py:245 msgid "You do not have the required permissions to view this page!" msgstr "" -#: .\cookbook\helper\permission_helper.py:166 -#: .\cookbook\helper\permission_helper.py:189 -#: .\cookbook\helper\permission_helper.py:204 +#: .\cookbook\helper\permission_helper.py:164 +#: .\cookbook\helper\permission_helper.py:187 +#: .\cookbook\helper\permission_helper.py:202 msgid "You cannot interact with this object as it is not owned by you!" msgstr "" -#: .\cookbook\helper\template_helper.py:60 -#: .\cookbook\helper\template_helper.py:62 +#: .\cookbook\helper\template_helper.py:61 +#: .\cookbook\helper\template_helper.py:63 msgid "Could not parse template code." msgstr "" -#: .\cookbook\integration\integration.py:104 +#: .\cookbook\integration\integration.py:119 #: .\cookbook\templates\import.html:14 .\cookbook\templates\import.html:20 #: .\cookbook\templates\import_response.html:7 #: .\cookbook\templates\test.html:14 .\cookbook\templates\test.html:20 @@ -266,27 +333,27 @@ msgstr "" #: .\cookbook\templates\url_import.html:123 #: .\cookbook\templates\url_import.html:317 #: .\cookbook\templates\url_import.html:604 .\cookbook\views\delete.py:60 -#: .\cookbook\views\edit.py:199 +#: .\cookbook\views\edit.py:197 msgid "Import" msgstr "" -#: .\cookbook\integration\integration.py:185 +#: .\cookbook\integration\integration.py:200 msgid "" "Importer expected a .zip file. Did you choose the correct importer type for " "your data ?" msgstr "" -#: .\cookbook\integration\integration.py:188 +#: .\cookbook\integration\integration.py:203 msgid "" "An unexpected error occurred during the import. Please make sure you have " "uploaded a valid file." msgstr "" -#: .\cookbook\integration\integration.py:192 +#: .\cookbook\integration\integration.py:208 msgid "The following recipes were ignored because they already existed:" msgstr "" -#: .\cookbook\integration\integration.py:196 +#: .\cookbook\integration\integration.py:212 #, python-format msgid "Imported %s recipes." msgstr "" @@ -304,7 +371,6 @@ msgid "Source" msgstr "" #: .\cookbook\integration\safron.py:23 -#: .\cookbook\templates\forms\edit_internal_recipe.html:79 #: .\cookbook\templates\include\log_cooking.html:16 #: .\cookbook\templates\url_import.html:224 #: .\cookbook\templates\url_import.html:455 @@ -316,7 +382,6 @@ msgid "Waiting time" msgstr "" #: .\cookbook\integration\safron.py:27 -#: .\cookbook\templates\forms\edit_internal_recipe.html:73 msgid "Preparation Time" msgstr "" @@ -330,6 +395,22 @@ msgstr "" msgid "Section" msgstr "" +#: .\cookbook\management\commands\rebuildindex.py:14 +msgid "Rebuilds full text search index on Recipe" +msgstr "" + +#: .\cookbook\management\commands\rebuildindex.py:18 +msgid "Only Postgress databases use full text search, no index to rebuild" +msgstr "" + +#: .\cookbook\management\commands\rebuildindex.py:29 +msgid "Recipe index rebuild complete." +msgstr "" + +#: .\cookbook\management\commands\rebuildindex.py:31 +msgid "Recipe index rebuild failed." +msgstr "" + #: .\cookbook\migrations\0047_auto_20200602_1133.py:14 msgid "Breakfast" msgstr "Reggeli" @@ -346,78 +427,91 @@ msgstr "Vacsora" msgid "Other" msgstr "" -#: .\cookbook\models.py:72 +#: .\cookbook\models.py:144 msgid "" "Maximum file storage for space in MB. 0 for unlimited, -1 to disable file " "upload." msgstr "" -#: .\cookbook\models.py:123 .\cookbook\templates\search.html:7 +#: .\cookbook\models.py:196 .\cookbook\templates\search.html:7 #: .\cookbook\templates\shopping_list.html:52 msgid "Search" msgstr "" -#: .\cookbook\models.py:124 .\cookbook\templates\base.html:92 +#: .\cookbook\models.py:197 .\cookbook\templates\base.html:82 #: .\cookbook\templates\meal_plan.html:5 .\cookbook\views\delete.py:152 -#: .\cookbook\views\edit.py:233 .\cookbook\views\new.py:201 +#: .\cookbook\views\edit.py:231 .\cookbook\views\new.py:200 msgid "Meal-Plan" msgstr "" -#: .\cookbook\models.py:125 .\cookbook\templates\base.html:89 +#: .\cookbook\models.py:198 .\cookbook\templates\base.html:90 msgid "Books" msgstr "" -#: .\cookbook\models.py:133 +#: .\cookbook\models.py:206 msgid "Small" msgstr "" -#: .\cookbook\models.py:133 +#: .\cookbook\models.py:206 msgid "Large" msgstr "" -#: .\cookbook\models.py:133 .\cookbook\templates\generic\new_template.html:6 +#: .\cookbook\models.py:206 .\cookbook\templates\generic\new_template.html:6 #: .\cookbook\templates\generic\new_template.html:14 #: .\cookbook\templates\meal_plan.html:323 msgid "New" msgstr "" -#: .\cookbook\models.py:338 -#: .\cookbook\templates\forms\edit_internal_recipe.html:202 +#: .\cookbook\models.py:389 +msgid " is part of a recipe step and cannot be deleted" +msgstr "" + +#: .\cookbook\models.py:429 msgid "Text" msgstr "Szöveg" -#: .\cookbook\models.py:338 -#: .\cookbook\templates\forms\edit_internal_recipe.html:203 +#: .\cookbook\models.py:429 msgid "Time" msgstr "" -#: .\cookbook\models.py:338 -#: .\cookbook\templates\forms\edit_internal_recipe.html:204 -#: .\cookbook\templates\forms\edit_internal_recipe.html:219 +#: .\cookbook\models.py:429 #, fuzzy #| msgid "File ID" msgid "File" msgstr "Fájl ID:" -#: .\cookbook\models.py:338 -#: .\cookbook\templates\forms\edit_internal_recipe.html:205 -#: .\cookbook\templates\forms\edit_internal_recipe.html:241 +#: .\cookbook\models.py:429 #: .\cookbook\templates\include\recipe_open_modal.html:7 #: .\cookbook\templates\meal_plan.html:247 .\cookbook\views\delete.py:28 -#: .\cookbook\views\edit.py:273 .\cookbook\views\new.py:52 +#: .\cookbook\views\edit.py:271 .\cookbook\views\new.py:52 msgid "Recipe" msgstr "" -#: .\cookbook\serializer.py:109 +#: .\cookbook\models.py:836 .\cookbook\templates\search_info.html:28 +msgid "Simple" +msgstr "" + +#: .\cookbook\models.py:837 .\cookbook\templates\search_info.html:33 +msgid "Phrase" +msgstr "" + +#: .\cookbook\models.py:838 .\cookbook\templates\search_info.html:38 +msgid "Web" +msgstr "" + +#: .\cookbook\models.py:839 .\cookbook\templates\search_info.html:47 +msgid "Raw" +msgstr "" + +#: .\cookbook\serializer.py:112 msgid "File uploads are not enabled for this Space." msgstr "" -#: .\cookbook\serializer.py:117 +#: .\cookbook\serializer.py:125 msgid "You have reached your file upload limit." msgstr "" -#: .\cookbook\tables.py:35 .\cookbook\templates\books.html:36 -#: .\cookbook\templates\generic\edit_template.html:6 +#: .\cookbook\tables.py:35 .\cookbook\templates\generic\edit_template.html:6 #: .\cookbook\templates\generic\edit_template.html:14 #: .\cookbook\templates\meal_plan.html:281 #: .\cookbook\templates\recipes_table.html:82 @@ -426,11 +520,10 @@ msgstr "" msgid "Edit" msgstr "" -#: .\cookbook\tables.py:124 .\cookbook\tables.py:147 -#: .\cookbook\templates\books.html:38 +#: .\cookbook\tables.py:115 .\cookbook\tables.py:138 #: .\cookbook\templates\generic\delete_template.html:5 #: .\cookbook\templates\generic\delete_template.html:13 -#: .\cookbook\templates\generic\edit_template.html:27 +#: .\cookbook\templates\generic\edit_template.html:28 #: .\cookbook\templates\meal_plan.html:277 #: .\cookbook\templates\recipes_table.html:90 msgid "Delete" @@ -460,7 +553,7 @@ msgstr "" #: .\cookbook\templates\account\email.html:12 #: .\cookbook\templates\account\password_change.html:11 #: .\cookbook\templates\account\password_set.html:11 -#: .\cookbook\templates\base.html:154 .\cookbook\templates\settings.html:6 +#: .\cookbook\templates\base.html:204 .\cookbook\templates\settings.html:6 #: .\cookbook\templates\settings.html:17 #: .\cookbook\templates\socialaccount\connections.html:10 msgid "Settings" @@ -536,7 +629,7 @@ msgid "" msgstr "" #: .\cookbook\templates\account\email_confirm.html:22 -#: .\cookbook\templates\generic\delete_template.html:21 +#: .\cookbook\templates\generic\delete_template.html:22 msgid "Confirm" msgstr "" @@ -548,7 +641,7 @@ msgid "" "request." msgstr "" -#: .\cookbook\templates\account\login.html:8 .\cookbook\templates\base.html:189 +#: .\cookbook\templates\account\login.html:8 .\cookbook\templates\base.html:234 msgid "Login" msgstr "" @@ -601,7 +694,7 @@ msgstr "" #: .\cookbook\templates\account\password_change.html:12 #: .\cookbook\templates\account\password_set.html:12 -#: .\cookbook\templates\settings.html:52 +#: .\cookbook\templates\settings.html:64 msgid "Password" msgstr "" @@ -683,101 +776,86 @@ msgstr "" msgid "We are sorry, but the sign up is currently closed." msgstr "" -#: .\cookbook\templates\api_info.html:5 .\cookbook\templates\base.html:179 +#: .\cookbook\templates\api_info.html:5 .\cookbook\templates\base.html:222 #: .\cookbook\templates\rest_framework\api.html:11 msgid "API Documentation" msgstr "" -#: .\cookbook\templates\base.html:85 -msgid "Utensils" -msgstr "" - -#: .\cookbook\templates\base.html:95 +#: .\cookbook\templates\base.html:86 msgid "Shopping" msgstr "" -#: .\cookbook\templates\base.html:101 +#: .\cookbook\templates\base.html:113 +msgid "Keyword" +msgstr "" + +#: .\cookbook\templates\base.html:137 +#: .\cookbook\templates\forms\ingredients.html:24 +#: .\cookbook\templates\space.html:41 .\cookbook\templates\stats.html:26 +#: .\cookbook\views\lists.py:146 +msgid "Units" +msgstr "" + +#: .\cookbook\templates\base.html:151 #: .\cookbook\templates\shopping_list.html:230 #: .\cookbook\templates\supermarket.html:7 msgid "Supermarket" msgstr "" -#: .\cookbook\templates\base.html:112 .\cookbook\views\delete.py:84 -#: .\cookbook\views\edit.py:102 .\cookbook\views\lists.py:26 -#: .\cookbook\views\new.py:78 -msgid "Keyword" -msgstr "" - -#: .\cookbook\templates\base.html:114 +#: .\cookbook\templates\base.html:163 msgid "Batch Edit" msgstr "" -#: .\cookbook\templates\base.html:119 -msgid "Storage Data" -msgstr "" - -#: .\cookbook\templates\base.html:123 -msgid "Storage Backends" -msgstr "" - -#: .\cookbook\templates\base.html:125 -msgid "Configure Sync" -msgstr "" - -#: .\cookbook\templates\base.html:127 -msgid "Discovered Recipes" -msgstr "" - -#: .\cookbook\templates\base.html:129 -msgid "Discovery Log" -msgstr "" - -#: .\cookbook\templates\base.html:131 .\cookbook\templates\stats.html:10 -msgid "Statistics" -msgstr "" - -#: .\cookbook\templates\base.html:133 -msgid "Units & Ingredients" -msgstr "" - -#: .\cookbook\templates\base.html:135 .\cookbook\templates\index.html:47 -msgid "Import Recipe" -msgstr "" - -#: .\cookbook\templates\base.html:156 .\cookbook\templates\history.html:6 +#: .\cookbook\templates\base.html:175 .\cookbook\templates\history.html:6 #: .\cookbook\templates\history.html:14 msgid "History" msgstr "" -#: .\cookbook\templates\base.html:159 .\cookbook\templates\space.html:7 +#: .\cookbook\templates\base.html:191 .\cookbook\templates\index.html:47 +msgid "Import Recipe" +msgstr "" + +#: .\cookbook\templates\base.html:193 +#: .\cookbook\templates\shopping_list.html:188 +#: .\cookbook\templates\shopping_list.html:210 +msgid "Create" +msgstr "" + +#: .\cookbook\templates\base.html:207 .\cookbook\templates\space.html:7 #: .\cookbook\templates\space.html:19 msgid "Space Settings" msgstr "" -#: .\cookbook\templates\base.html:163 .\cookbook\templates\system.html:13 +#: .\cookbook\templates\base.html:212 .\cookbook\templates\system.html:13 msgid "System" msgstr "" -#: .\cookbook\templates\base.html:165 .\cookbook\templates\base.html:171 +#: .\cookbook\templates\base.html:214 msgid "Admin" msgstr "" -#: .\cookbook\templates\base.html:175 +#: .\cookbook\templates\base.html:218 msgid "Markdown Guide" msgstr "" -#: .\cookbook\templates\base.html:177 +#: .\cookbook\templates\base.html:220 msgid "GitHub" msgstr "" -#: .\cookbook\templates\base.html:181 +#: .\cookbook\templates\base.html:224 msgid "API Browser" msgstr "" -#: .\cookbook\templates\base.html:184 +#: .\cookbook\templates\base.html:227 msgid "Log out" msgstr "" +#: .\cookbook\templates\base.html:229 +#: .\cookbook\templates\generic\list_template.html:14 +#: .\cookbook\templates\space.html:58 .\cookbook\templates\stats.html:43 +msgid "External Recipes" +msgstr "" + #: .\cookbook\templates\batch\edit.html:6 msgid "Batch edit Category" msgstr "" @@ -790,7 +868,7 @@ msgstr "" msgid "Add the specified keywords to all recipes containing a word" msgstr "" -#: .\cookbook\templates\batch\monitor.html:6 .\cookbook\views\edit.py:85 +#: .\cookbook\templates\batch\monitor.html:6 .\cookbook\views\edit.py:83 msgid "Sync" msgstr "" @@ -808,10 +886,22 @@ msgstr "" msgid "The path must be in the following format" msgstr "" -#: .\cookbook\templates\batch\monitor.html:27 +#: .\cookbook\templates\batch\monitor.html:21 +msgid "Manage External Storage" +msgstr "" + +#: .\cookbook\templates\batch\monitor.html:28 msgid "Sync Now!" msgstr "" +#: .\cookbook\templates\batch\monitor.html:29 +msgid "Show Recipes" +msgstr "" + +#: .\cookbook\templates\batch\monitor.html:30 +msgid "Show Log" +msgstr "" + #: .\cookbook\templates\batch\waiting.html:4 #: .\cookbook\templates\batch\waiting.html:10 msgid "Importing Recipes" @@ -823,32 +913,10 @@ msgid "" "please wait." msgstr "" -#: .\cookbook\templates\books.html:5 .\cookbook\templates\books.html:11 +#: .\cookbook\templates\books.html:7 msgid "Recipe Books" msgstr "" -#: .\cookbook\templates\books.html:15 -msgid "New Book" -msgstr "" - -#: .\cookbook\templates\books.html:27 .\cookbook\templates\recipe_view.html:26 -msgid "by" -msgstr "" - -#: .\cookbook\templates\books.html:34 -msgid "Toggle Recipes" -msgstr "" - -#: .\cookbook\templates\books.html:54 -#: .\cookbook\templates\meal_plan_entry.html:48 -#: .\cookbook\templates\recipes_table.html:64 -msgid "Last cooked" -msgstr "" - -#: .\cookbook\templates\books.html:71 -msgid "There are no recipes in this book yet." -msgstr "" - #: .\cookbook\templates\export.html:6 .\cookbook\templates\test2.html:6 msgid "Export Recipes" msgstr "" @@ -871,213 +939,21 @@ msgid "Import new Recipe" msgstr "" #: .\cookbook\templates\forms\edit_import_recipe.html:14 -#: .\cookbook\templates\forms\edit_internal_recipe.html:439 -#: .\cookbook\templates\forms\edit_internal_recipe.html:471 #: .\cookbook\templates\generic\edit_template.html:23 #: .\cookbook\templates\generic\new_template.html:23 #: .\cookbook\templates\include\log_cooking.html:28 #: .\cookbook\templates\meal_plan.html:325 -#: .\cookbook\templates\settings.html:46 .\cookbook\templates\settings.html:87 -#: .\cookbook\templates\settings.html:105 +#: .\cookbook\templates\settings.html:58 .\cookbook\templates\settings.html:99 +#: .\cookbook\templates\settings.html:117 +#: .\cookbook\templates\settings.html:162 #: .\cookbook\templates\shopping_list.html:353 msgid "Save" msgstr "" #: .\cookbook\templates\forms\edit_internal_recipe.html:7 -#: .\cookbook\templates\forms\edit_internal_recipe.html:34 msgid "Edit Recipe" msgstr "" -#: .\cookbook\templates\forms\edit_internal_recipe.html:56 -#: .\cookbook\templates\url_import.html:171 -msgid "Description" -msgstr "" - -#: .\cookbook\templates\forms\edit_internal_recipe.html:76 -msgid "Waiting Time" -msgstr "" - -#: .\cookbook\templates\forms\edit_internal_recipe.html:82 -msgid "Servings Text" -msgstr "" - -#: .\cookbook\templates\forms\edit_internal_recipe.html:93 -msgid "Select Keywords" -msgstr "" - -#: .\cookbook\templates\forms\edit_internal_recipe.html:94 -#: .\cookbook\templates\url_import.html:583 -#, fuzzy -#| msgid "Keywords" -msgid "Add Keyword" -msgstr "Kulcsszavak" - -#: .\cookbook\templates\forms\edit_internal_recipe.html:112 -msgid "Nutrition" -msgstr "" - -#: .\cookbook\templates\forms\edit_internal_recipe.html:116 -#: .\cookbook\templates\forms\edit_internal_recipe.html:166 -msgid "Delete Step" -msgstr "" - -#: .\cookbook\templates\forms\edit_internal_recipe.html:120 -msgid "Calories" -msgstr "" - -#: .\cookbook\templates\forms\edit_internal_recipe.html:123 -msgid "Carbohydrates" -msgstr "" - -#: .\cookbook\templates\forms\edit_internal_recipe.html:126 -msgid "Fats" -msgstr "" - -#: .\cookbook\templates\forms\edit_internal_recipe.html:128 -msgid "Proteins" -msgstr "" - -#: .\cookbook\templates\forms\edit_internal_recipe.html:150 -#: .\cookbook\templates\forms\edit_internal_recipe.html:504 -msgid "Step" -msgstr "" - -#: .\cookbook\templates\forms\edit_internal_recipe.html:171 -msgid "Show as header" -msgstr "" - -#: .\cookbook\templates\forms\edit_internal_recipe.html:177 -msgid "Hide as header" -msgstr "" - -#: .\cookbook\templates\forms\edit_internal_recipe.html:182 -msgid "Move Up" -msgstr "" - -#: .\cookbook\templates\forms\edit_internal_recipe.html:187 -msgid "Move Down" -msgstr "" - -#: .\cookbook\templates\forms\edit_internal_recipe.html:196 -msgid "Step Name" -msgstr "" - -#: .\cookbook\templates\forms\edit_internal_recipe.html:200 -msgid "Step Type" -msgstr "" - -#: .\cookbook\templates\forms\edit_internal_recipe.html:213 -msgid "Step time in Minutes" -msgstr "" - -#: .\cookbook\templates\forms\edit_internal_recipe.html:229 -msgid "Select File" -msgstr "" - -#: .\cookbook\templates\forms\edit_internal_recipe.html:230 -#: .\cookbook\templates\forms\edit_internal_recipe.html:252 -#: .\cookbook\templates\forms\edit_internal_recipe.html:313 -#: .\cookbook\templates\forms\edit_internal_recipe.html:337 -#: .\cookbook\templates\shopping_list.html:189 -#: .\cookbook\templates\shopping_list.html:211 -#: .\cookbook\templates\shopping_list.html:241 -#: .\cookbook\templates\shopping_list.html:265 -#: .\cookbook\templates\url_import.html:495 -#: .\cookbook\templates\url_import.html:527 -msgid "Select" -msgstr "" - -#: .\cookbook\templates\forms\edit_internal_recipe.html:251 -msgid "Select Recipe" -msgstr "" - -#: .\cookbook\templates\forms\edit_internal_recipe.html:311 -#: .\cookbook\templates\shopping_list.html:187 -msgid "Select Unit" -msgstr "" - -#: .\cookbook\templates\forms\edit_internal_recipe.html:312 -#: .\cookbook\templates\forms\edit_internal_recipe.html:336 -#: .\cookbook\templates\shopping_list.html:188 -#: .\cookbook\templates\shopping_list.html:210 -msgid "Create" -msgstr "" - -#: .\cookbook\templates\forms\edit_internal_recipe.html:335 -#: .\cookbook\templates\shopping_list.html:209 -msgid "Select Food" -msgstr "" - -#: .\cookbook\templates\forms\edit_internal_recipe.html:352 -#: .\cookbook\templates\meal_plan.html:256 -#: .\cookbook\templates\url_import.html:542 -msgid "Note" -msgstr "" - -#: .\cookbook\templates\forms\edit_internal_recipe.html:369 -msgid "Delete Ingredient" -msgstr "" - -#: .\cookbook\templates\forms\edit_internal_recipe.html:375 -msgid "Make Header" -msgstr "" - -#: .\cookbook\templates\forms\edit_internal_recipe.html:381 -msgid "Make Ingredient" -msgstr "" - -#: .\cookbook\templates\forms\edit_internal_recipe.html:387 -msgid "Disable Amount" -msgstr "" - -#: .\cookbook\templates\forms\edit_internal_recipe.html:393 -msgid "Enable Amount" -msgstr "" - -#: .\cookbook\templates\forms\edit_internal_recipe.html:398 -msgid "Copy Template Reference" -msgstr "" - -#: .\cookbook\templates\forms\edit_internal_recipe.html:424 -#: .\cookbook\templates\url_import.html:297 -#: .\cookbook\templates\url_import.html:567 -msgid "Instructions" -msgstr "" - -#: .\cookbook\templates\forms\edit_internal_recipe.html:437 -#: .\cookbook\templates\forms\edit_internal_recipe.html:468 -msgid "Save & View" -msgstr "" - -#: .\cookbook\templates\forms\edit_internal_recipe.html:441 -#: .\cookbook\templates\forms\edit_internal_recipe.html:474 -msgid "Add Step" -msgstr "" - -#: .\cookbook\templates\forms\edit_internal_recipe.html:444 -#: .\cookbook\templates\forms\edit_internal_recipe.html:478 -msgid "Add Nutrition" -msgstr "" - -#: .\cookbook\templates\forms\edit_internal_recipe.html:446 -#: .\cookbook\templates\forms\edit_internal_recipe.html:480 -msgid "Remove Nutrition" -msgstr "" - -#: .\cookbook\templates\forms\edit_internal_recipe.html:448 -#: .\cookbook\templates\forms\edit_internal_recipe.html:483 -msgid "View Recipe" -msgstr "" - -#: .\cookbook\templates\forms\edit_internal_recipe.html:450 -#: .\cookbook\templates\forms\edit_internal_recipe.html:485 -msgid "Delete Recipe" -msgstr "" - -#: .\cookbook\templates\forms\edit_internal_recipe.html:491 -msgid "Steps" -msgstr "" - #: .\cookbook\templates\forms\ingredients.html:15 msgid "Edit Ingredients" msgstr "" @@ -1093,11 +969,6 @@ msgid "" " " msgstr "" -#: .\cookbook\templates\forms\ingredients.html:24 -#: .\cookbook\templates\space.html:41 .\cookbook\templates\stats.html:26 -msgid "Units" -msgstr "" - #: .\cookbook\templates\forms\ingredients.html:26 msgid "Are you sure that you want to merge these two units?" msgstr "" @@ -1111,29 +982,33 @@ msgstr "" msgid "Are you sure that you want to merge these two ingredients?" msgstr "" -#: .\cookbook\templates\generic\delete_template.html:18 +#: .\cookbook\templates\generic\delete_template.html:19 #, python-format msgid "Are you sure you want to delete the %(title)s: %(object)s " msgstr "" -#: .\cookbook\templates\generic\edit_template.html:30 +#: .\cookbook\templates\generic\delete_template.html:23 +msgid "Cancel" +msgstr "" + +#: .\cookbook\templates\generic\edit_template.html:32 msgid "View" msgstr "" -#: .\cookbook\templates\generic\edit_template.html:34 +#: .\cookbook\templates\generic\edit_template.html:36 msgid "Delete original file" msgstr "" #: .\cookbook\templates\generic\list_template.html:6 -#: .\cookbook\templates\generic\list_template.html:12 +#: .\cookbook\templates\generic\list_template.html:21 msgid "List" msgstr "" -#: .\cookbook\templates\generic\list_template.html:25 +#: .\cookbook\templates\generic\list_template.html:34 msgid "Filter" msgstr "" -#: .\cookbook\templates\generic\list_template.html:30 +#: .\cookbook\templates\generic\list_template.html:39 msgid "Import all" msgstr "" @@ -1442,6 +1317,11 @@ msgstr "" msgid "Week iCal export" msgstr "" +#: .\cookbook\templates\meal_plan.html:256 +#: .\cookbook\templates\url_import.html:542 +msgid "Note" +msgstr "" + #: .\cookbook\templates\meal_plan.html:264 #: .\cookbook\templates\meal_plan_entry.html:18 msgid "Created by" @@ -1505,6 +1385,11 @@ msgstr "" msgid "Meal Plan View" msgstr "" +#: .\cookbook\templates\meal_plan_entry.html:48 +#: .\cookbook\templates\recipes_table.html:64 +msgid "Last cooked" +msgstr "" + #: .\cookbook\templates\meal_plan_entry.html:50 msgid "Never cooked before." msgstr "" @@ -1601,8 +1486,12 @@ msgstr "" msgid "Comments" msgstr "" +#: .\cookbook\templates\recipe_view.html:26 +msgid "by" +msgstr "" + #: .\cookbook\templates\recipe_view.html:44 .\cookbook\views\delete.py:118 -#: .\cookbook\views\edit.py:179 +#: .\cookbook\views\edit.py:177 msgid "Comment" msgstr "" @@ -1634,60 +1523,221 @@ msgstr "" msgid "Recipe Home" msgstr "" -#: .\cookbook\templates\settings.html:25 +#: .\cookbook\templates\search_info.html:5 +#: .\cookbook\templates\search_info.html:9 +#: .\cookbook\templates\settings.html:157 +msgid "Search Settings" +msgstr "" + +#: .\cookbook\templates\search_info.html:10 +msgid "" +"\n" +" Creating the best search experience is complicated and weighs " +"heavily on your personal configuration. \n" +" Changing any of the search settings can have significant impact on " +"the speed and quality of the results.\n" +" Search Methods, Trigrams and Full Text Search configurations are " +"only available if you are using Postgres for your database.\n" +" " +msgstr "" + +#: .\cookbook\templates\search_info.html:19 +msgid "Search Methods" +msgstr "" + +#: .\cookbook\templates\search_info.html:23 +msgid "" +" \n" +" Full text searches attempt to normalize the words provided to " +"match common variants. For example: 'forked', 'forking', 'forks' will all " +"normalize to 'fork'.\n" +" There are several methods available, described below, that will " +"control how the search behavior should react when multiple words are " +"searched.\n" +" Full technical details on how these operate can be viewed on Postgresql's website.\n" +" " +msgstr "" + +#: .\cookbook\templates\search_info.html:29 +msgid "" +" \n" +" Simple searches ignore punctuation and common words such as " +"'the', 'a', 'and'. And will treat seperate words as required.\n" +" Searching for 'apple or flour' will return any recipe that " +"includes both 'apple' and 'flour' anywhere in the fields that have been " +"selected for a full text search.\n" +" " +msgstr "" + +#: .\cookbook\templates\search_info.html:34 +msgid "" +" \n" +" Phrase searches ignore punctuation, but will search for all of " +"the words in the exact order provided.\n" +" Searching for 'apple or flour' will only return a recipe that " +"includes the exact phrase 'apple or flour' in any of the fields that have " +"been selected for a full text search.\n" +" " +msgstr "" + +#: .\cookbook\templates\search_info.html:39 +msgid "" +" \n" +" Web searches simulate functionality found on many web search " +"sites supporting special syntax.\n" +" Placing quotes around several words will convert those words " +"into a phrase.\n" +" 'or' is recongized as searching for the word (or phrase) " +"immediately before 'or' OR the word (or phrase) directly after.\n" +" '-' is recognized as searching for recipes that do not include " +"the word (or phrase) that comes immediately after. \n" +" For example searching for 'apple pie' or cherry -butter will " +"return any recipe that includes the phrase 'apple pie' or the word " +"'cherry' \n" +" in any field included in the full text search but exclude any " +"recipe that has the word 'butter' in any field included.\n" +" " +msgstr "" + +#: .\cookbook\templates\search_info.html:48 +msgid "" +" \n" +" Raw search is similar to Web except will take puncuation " +"operators such as '|', '&' and '()'\n" +" " +msgstr "" + +#: .\cookbook\templates\search_info.html:59 +msgid "" +" \n" +" Another approach to searching that also requires Postgresql is " +"fuzzy search or trigram similarity. A trigram is a group of three " +"consecutive characters.\n" +" For example searching for 'apple' will create x trigrams 'app', " +"'ppl', 'ple' and will create a score of how closely words match the " +"generated trigrams.\n" +" One benefit of searching trigams is that a search for 'sandwich' " +"will find mispelled words such as 'sandwhich' that would be missed by other " +"methods.\n" +" " +msgstr "" + +#: .\cookbook\templates\search_info.html:69 +msgid "Search Fields" +msgstr "" + +#: .\cookbook\templates\search_info.html:73 +msgid "" +" \n" +" Unaccent is a special case in that it enables searching a field " +"'unaccented' for each search style attempting to ignore accented values. \n" +" For example when you enable unaccent for 'Name' any search " +"(starts with, contains, trigram) will attempt the search ignoring accented " +"characters.\n" +" \n" +" For the other options, you can enable search on any or all " +"fields and they will be combined together with an assumed 'OR'.\n" +" For example enabling 'Name' for Starts With, 'Name' and " +"'Description' for Partial Match and 'Ingredients' and 'Keywords' for Full " +"Search\n" +" and searching for 'apple' will generate a search that will " +"return recipes that have:\n" +" - A recipe name that starts with 'apple'\n" +" - OR a recipe name that contains 'apple'\n" +" - OR a recipe description that contains 'apple'\n" +" - OR a recipe that will have a full text search match ('apple' " +"or 'apples') in ingredients\n" +" - OR a recipe that will have a full text search match in " +"Keywords\n" +"\n" +" Combining too many fields in too many types of search can have a " +"negative impact on performance, create duplicate results or return " +"unexpected results.\n" +" For example, enabling fuzzy search or partial matches will " +"interfere with web search methods. \n" +" Searching for 'apple -pie' with fuzzy search and full text " +"search will return the recipe Apple Pie. Though it is not included in the " +"full text results, it does match the trigram results.\n" +" " +msgstr "" + +#: .\cookbook\templates\search_info.html:95 +msgid "Search Index" +msgstr "" + +#: .\cookbook\templates\search_info.html:99 +msgid "" +" \n" +" Trigram search and Full Text Search both rely on database " +"indexes to perform effectively. \n" +" You can rebuild the indexes on all fields in the Admin page for " +"Recipes and selecting all recipes and running 'rebuild index for selected " +"recipes'\n" +" You can also rebuild indexes at the command line by executing " +"the management command 'python manage.py rebuildindex'\n" +" " +msgstr "" + +#: .\cookbook\templates\settings.html:27 msgid "Account" msgstr "" -#: .\cookbook\templates\settings.html:29 +#: .\cookbook\templates\settings.html:33 msgid "Preferences" msgstr "" -#: .\cookbook\templates\settings.html:33 +#: .\cookbook\templates\settings.html:39 msgid "API-Settings" msgstr "" -#: .\cookbook\templates\settings.html:41 +#: .\cookbook\templates\settings.html:45 +msgid "Search-Settings" +msgstr "" + +#: .\cookbook\templates\settings.html:53 msgid "Name Settings" msgstr "" -#: .\cookbook\templates\settings.html:49 +#: .\cookbook\templates\settings.html:61 msgid "Account Settings" msgstr "" -#: .\cookbook\templates\settings.html:51 +#: .\cookbook\templates\settings.html:63 msgid "Emails" msgstr "" -#: .\cookbook\templates\settings.html:54 +#: .\cookbook\templates\settings.html:66 #: .\cookbook\templates\socialaccount\connections.html:11 msgid "Social" msgstr "" -#: .\cookbook\templates\settings.html:66 +#: .\cookbook\templates\settings.html:78 msgid "Language" msgstr "" -#: .\cookbook\templates\settings.html:96 +#: .\cookbook\templates\settings.html:108 msgid "Style" msgstr "" -#: .\cookbook\templates\settings.html:116 +#: .\cookbook\templates\settings.html:128 msgid "API Token" msgstr "" -#: .\cookbook\templates\settings.html:117 +#: .\cookbook\templates\settings.html:129 msgid "" "You can use both basic authentication and token based authentication to " "access the REST API." msgstr "" -#: .\cookbook\templates\settings.html:134 +#: .\cookbook\templates\settings.html:146 msgid "" "Use the token as an Authorization header prefixed by the word token as shown " "in the following examples:" msgstr "" -#: .\cookbook\templates\settings.html:136 +#: .\cookbook\templates\settings.html:148 msgid "or" msgstr "" @@ -1728,6 +1778,23 @@ msgstr "" msgid "Amount" msgstr "" +#: .\cookbook\templates\shopping_list.html:187 +msgid "Select Unit" +msgstr "" + +#: .\cookbook\templates\shopping_list.html:189 +#: .\cookbook\templates\shopping_list.html:211 +#: .\cookbook\templates\shopping_list.html:241 +#: .\cookbook\templates\shopping_list.html:265 +#: .\cookbook\templates\url_import.html:495 +#: .\cookbook\templates\url_import.html:527 +msgid "Select" +msgstr "" + +#: .\cookbook\templates\shopping_list.html:209 +msgid "Select Food" +msgstr "" + #: .\cookbook\templates\shopping_list.html:240 msgid "Select Supermarket" msgstr "" @@ -1825,10 +1892,6 @@ msgstr "" msgid "Recipes without Keywords" msgstr "" -#: .\cookbook\templates\space.html:58 .\cookbook\templates\stats.html:43 -msgid "External Recipes" -msgstr "" - #: .\cookbook\templates\space.html:60 .\cookbook\templates\stats.html:45 msgid "Internal Recipes" msgstr "" @@ -1878,7 +1941,7 @@ msgid "There are no members in your space yet!" msgstr "" #: .\cookbook\templates\space.html:130 .\cookbook\templates\system.html:21 -#: .\cookbook\views\lists.py:115 +#: .\cookbook\views\lists.py:100 msgid "Invite Links" msgstr "" @@ -1886,6 +1949,10 @@ msgstr "" msgid "Stats" msgstr "" +#: .\cookbook\templates\stats.html:10 +msgid "Statistics" +msgstr "" + #: .\cookbook\templates\system.html:22 msgid "Show Links" msgstr "" @@ -2032,6 +2099,10 @@ msgstr "" msgid "Text dragged here will be appended to the name." msgstr "" +#: .\cookbook\templates\url_import.html:171 +msgid "Description" +msgstr "" + #: .\cookbook\templates\url_import.html:175 msgid "Text dragged here will be appended to the description." msgstr "" @@ -2056,6 +2127,11 @@ msgstr "" msgid "Ingredients dragged here will be appended to current list." msgstr "" +#: .\cookbook\templates\url_import.html:297 +#: .\cookbook\templates\url_import.html:567 +msgid "Instructions" +msgstr "" + #: .\cookbook\templates\url_import.html:302 msgid "" "Recipe instructions dragged here will be appended to current instructions." @@ -2105,6 +2181,12 @@ msgstr "" msgid "Select one" msgstr "" +#: .\cookbook\templates\url_import.html:583 +#, fuzzy +#| msgid "Keywords" +msgid "Add Keyword" +msgstr "Kulcsszavak" + #: .\cookbook\templates\url_import.html:596 msgid "All Keywords" msgstr "" @@ -2140,45 +2222,102 @@ msgstr "" msgid "Recipe Markup Specification" msgstr "" -#: .\cookbook\views\api.py:79 +#: .\cookbook\views\api.py:82 .\cookbook\views\api.py:131 msgid "Parameter updated_at incorrectly formatted" msgstr "" -#: .\cookbook\views\api.py:580 .\cookbook\views\views.py:303 +#: .\cookbook\views\api.py:151 +#, python-brace-format +msgid "No {self.basename} with id {pk} exists" +msgstr "" + +#: .\cookbook\views\api.py:155 .\cookbook\views\edit.py:300 +#: .\cookbook\views\edit.py:316 +msgid "Cannot merge with the same object!" +msgstr "" + +#: .\cookbook\views\api.py:162 +#, python-brace-format +msgid "No {self.basename} with id {target} exists" +msgstr "" + +#: .\cookbook\views\api.py:167 +msgid "Cannot merge with child object!" +msgstr "" + +#: .\cookbook\views\api.py:195 +#, python-brace-format +msgid "{source.name} was merged successfully with {target.name}" +msgstr "" + +#: .\cookbook\views\api.py:199 +#, python-brace-format +msgid "An error occurred attempting to merge {source.name} with {target.name}" +msgstr "" + +#: .\cookbook\views\api.py:239 +#, python-brace-format +msgid "No {self.basename} with id {child} exists" +msgstr "" + +#: .\cookbook\views\api.py:248 +#, python-brace-format +msgid "{child.name} was moved successfully to the root." +msgstr "" + +#: .\cookbook\views\api.py:251 .\cookbook\views\api.py:269 +msgid "An error occurred attempting to move " +msgstr "" + +#: .\cookbook\views\api.py:254 +msgid "Cannot move an object to itself!" +msgstr "" + +#: .\cookbook\views\api.py:260 +#, python-brace-format +msgid "No {self.basename} with id {parent} exists" +msgstr "" + +#: .\cookbook\views\api.py:266 +#, python-brace-format +msgid "{child.name} was moved successfully to parent {parent.name}" +msgstr "" + +#: .\cookbook\views\api.py:704 .\cookbook\views\views.py:289 msgid "This feature is not available in the demo version!" msgstr "" -#: .\cookbook\views\api.py:603 +#: .\cookbook\views\api.py:727 msgid "Sync successful!" msgstr "" -#: .\cookbook\views\api.py:608 +#: .\cookbook\views\api.py:732 msgid "Error synchronizing with Storage" msgstr "" -#: .\cookbook\views\api.py:686 +#: .\cookbook\views\api.py:810 msgid "Nothing to do." msgstr "" -#: .\cookbook\views\api.py:701 +#: .\cookbook\views\api.py:825 msgid "The requested site provided malformed data and cannot be read." msgstr "" -#: .\cookbook\views\api.py:708 +#: .\cookbook\views\api.py:832 msgid "The requested page could not be found." msgstr "" -#: .\cookbook\views\api.py:717 +#: .\cookbook\views\api.py:841 msgid "" "The requested site does not provide any recognized data format to import the " "recipe from." msgstr "" -#: .\cookbook\views\api.py:731 +#: .\cookbook\views\api.py:855 msgid "No useable data could be found." msgstr "" -#: .\cookbook\views\api.py:747 +#: .\cookbook\views\api.py:871 msgid "I couldn't find anything to do." msgstr "" @@ -2205,8 +2344,8 @@ msgstr[1] "" msgid "Monitor" msgstr "" -#: .\cookbook\views\delete.py:96 .\cookbook\views\lists.py:102 -#: .\cookbook\views\new.py:98 +#: .\cookbook\views\delete.py:96 .\cookbook\views\lists.py:86 +#: .\cookbook\views\new.py:97 msgid "Storage Backend" msgstr "" @@ -2215,8 +2354,8 @@ msgid "" "Could not delete this storage backend as it is used in at least one monitor." msgstr "" -#: .\cookbook\views\delete.py:129 .\cookbook\views\edit.py:213 -#: .\cookbook\views\new.py:156 +#: .\cookbook\views\delete.py:129 .\cookbook\views\edit.py:211 +#: .\cookbook\views\new.py:155 msgid "Recipe Book" msgstr "" @@ -2224,47 +2363,39 @@ msgstr "" msgid "Bookmarks" msgstr "" -#: .\cookbook\views\delete.py:163 .\cookbook\views\new.py:252 +#: .\cookbook\views\delete.py:163 .\cookbook\views\new.py:251 msgid "Invite Link" msgstr "" -#: .\cookbook\views\edit.py:119 -msgid "Food" -msgstr "" - -#: .\cookbook\views\edit.py:128 +#: .\cookbook\views\edit.py:126 msgid "You cannot edit this storage!" msgstr "" -#: .\cookbook\views\edit.py:148 +#: .\cookbook\views\edit.py:146 msgid "Storage saved!" msgstr "" -#: .\cookbook\views\edit.py:154 +#: .\cookbook\views\edit.py:152 msgid "There was an error updating this storage backend!" msgstr "" -#: .\cookbook\views\edit.py:165 +#: .\cookbook\views\edit.py:163 msgid "Storage" msgstr "" -#: .\cookbook\views\edit.py:261 +#: .\cookbook\views\edit.py:259 msgid "Changes saved!" msgstr "" -#: .\cookbook\views\edit.py:265 +#: .\cookbook\views\edit.py:263 msgid "Error saving changes!" msgstr "" -#: .\cookbook\views\edit.py:299 +#: .\cookbook\views\edit.py:298 msgid "Units merged!" msgstr "" -#: .\cookbook\views\edit.py:301 .\cookbook\views\edit.py:317 -msgid "Cannot merge with the same object!" -msgstr "" - -#: .\cookbook\views\edit.py:315 +#: .\cookbook\views\edit.py:314 msgid "Foods merged!" msgstr "" @@ -2276,126 +2407,154 @@ msgstr "" msgid "Exporting is not implemented for this provider" msgstr "" -#: .\cookbook\views\lists.py:40 +#: .\cookbook\views\lists.py:26 msgid "Import Log" msgstr "" -#: .\cookbook\views\lists.py:53 +#: .\cookbook\views\lists.py:39 msgid "Discovery" msgstr "" -#: .\cookbook\views\lists.py:85 +#: .\cookbook\views\lists.py:69 msgid "Shopping Lists" msgstr "" -#: .\cookbook\views\new.py:123 +#: .\cookbook\views\lists.py:129 +#, fuzzy +#| msgid "New Food" +msgid "Foods" +msgstr "Új Étel" + +#: .\cookbook\views\lists.py:163 +msgid "Supermarkets" +msgstr "" + +#: .\cookbook\views\lists.py:179 +msgid "Shopping Categories" +msgstr "" + +#: .\cookbook\views\new.py:122 msgid "Imported new recipe!" msgstr "" -#: .\cookbook\views\new.py:126 +#: .\cookbook\views\new.py:125 msgid "There was an error importing this recipe!" msgstr "" -#: .\cookbook\views\new.py:226 +#: .\cookbook\views\new.py:225 msgid "Hello" msgstr "" -#: .\cookbook\views\new.py:226 +#: .\cookbook\views\new.py:225 msgid "You have been invited by " msgstr "" -#: .\cookbook\views\new.py:227 +#: .\cookbook\views\new.py:226 msgid " to join their Tandoor Recipes space " msgstr "" -#: .\cookbook\views\new.py:228 +#: .\cookbook\views\new.py:227 msgid "Click the following link to activate your account: " msgstr "" -#: .\cookbook\views\new.py:229 +#: .\cookbook\views\new.py:228 msgid "" "If the link does not work use the following code to manually join the space: " msgstr "" -#: .\cookbook\views\new.py:230 +#: .\cookbook\views\new.py:229 msgid "The invitation is valid until " msgstr "" -#: .\cookbook\views\new.py:231 +#: .\cookbook\views\new.py:230 msgid "" "Tandoor Recipes is an Open Source recipe manager. Check it out on GitHub " msgstr "" -#: .\cookbook\views\new.py:234 +#: .\cookbook\views\new.py:233 msgid "Tandoor Recipes Invite" msgstr "" -#: .\cookbook\views\new.py:241 +#: .\cookbook\views\new.py:240 msgid "Invite link successfully send to user." msgstr "" -#: .\cookbook\views\new.py:244 +#: .\cookbook\views\new.py:243 msgid "" "You have send to many emails, please share the link manually or wait a few " "hours." msgstr "" -#: .\cookbook\views\new.py:246 +#: .\cookbook\views\new.py:245 msgid "Email to user could not be send, please share link manually." msgstr "" -#: .\cookbook\views\views.py:129 +#: .\cookbook\views\views.py:128 msgid "" "You have successfully created your own recipe space. Start by adding some " "recipes or invite other people to join you." msgstr "" -#: .\cookbook\views\views.py:177 +#: .\cookbook\views\views.py:176 msgid "You do not have the required permissions to perform this action!" msgstr "" -#: .\cookbook\views\views.py:188 +#: .\cookbook\views\views.py:187 msgid "Comment saved!" msgstr "" -#: .\cookbook\views\views.py:395 +#: .\cookbook\views\views.py:351 +msgid "You must select at least one field to search!" +msgstr "" + +#: .\cookbook\views\views.py:354 +msgid "" +"To use this search method you must select at least one full text search " +"field!" +msgstr "" + +#: .\cookbook\views\views.py:357 +msgid "Fuzzy search is not compatible with this search method!" +msgstr "" + +#: .\cookbook\views\views.py:437 msgid "" "The setup page can only be used to create the first user! If you have " "forgotten your superuser credentials please consult the django documentation " "on how to reset passwords." msgstr "" -#: .\cookbook\views\views.py:402 +#: .\cookbook\views\views.py:444 msgid "Passwords dont match!" msgstr "" -#: .\cookbook\views\views.py:418 +#: .\cookbook\views\views.py:460 msgid "User has been created, please login!" msgstr "" -#: .\cookbook\views\views.py:434 +#: .\cookbook\views\views.py:476 msgid "Malformed Invite Link supplied!" msgstr "" -#: .\cookbook\views\views.py:441 +#: .\cookbook\views\views.py:483 msgid "You are already member of a space and therefore cannot join this one." msgstr "" -#: .\cookbook\views\views.py:452 +#: .\cookbook\views\views.py:494 msgid "Successfully joined space." msgstr "" -#: .\cookbook\views\views.py:458 +#: .\cookbook\views\views.py:500 msgid "Invite Link not valid or already used!" msgstr "" -#: .\cookbook\views\views.py:522 +#: .\cookbook\views\views.py:564 msgid "" "Reporting share links is not enabled for this instance. Please notify the " "page administrator to report problems." msgstr "" -#: .\cookbook\views\views.py:528 +#: .\cookbook\views\views.py:570 msgid "" "Recipe sharing link has been disabled! For additional information please " "contact the page administrator." diff --git a/cookbook/locale/hy/LC_MESSAGES/django.mo b/cookbook/locale/hy/LC_MESSAGES/django.mo index 852dca01..b9b8a32f 100644 Binary files a/cookbook/locale/hy/LC_MESSAGES/django.mo and b/cookbook/locale/hy/LC_MESSAGES/django.mo differ diff --git a/cookbook/locale/hy/LC_MESSAGES/django.po b/cookbook/locale/hy/LC_MESSAGES/django.po index 225651f2..968c6aa9 100644 --- a/cookbook/locale/hy/LC_MESSAGES/django.po +++ b/cookbook/locale/hy/LC_MESSAGES/django.po @@ -11,7 +11,7 @@ msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2021-02-09 18:01+0100\n" -"PO-Revision-Date: 2021-04-12 20:22+0000\n" +"PO-Revision-Date: 2021-10-13 12:50+0000\n" "Last-Translator: Hrachya Kocharyan \n" "Language-Team: Armenian \n" @@ -20,7 +20,7 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -"X-Generator: Weblate 4.5.3\n" +"X-Generator: Weblate 4.8\n" #: .\cookbook\filters.py:22 .\cookbook\templates\base.html:87 #: .\cookbook\templates\forms\edit_internal_recipe.html:219 @@ -79,7 +79,7 @@ msgid "" "mobile data. If lower than instance limit it is reset when saving." msgstr "" "0-ն կանջատի ավտոմատ սինքրոնացումը։ Գնումների ցուցակը թարմացվում է " -"յուրաքանչյուր սահմանված վարկյանը մեկ, մեկ ուրիշի կատարած փոփոխությունները " +"յուրաքանչյուր սահմանված վարկյանը մեկ, ուրիշի կատարած փոփոխությունները " "սինքրոնացնելու համար։ Հարմար է, երբ մեկից ավել մարդ է կատարում գնումները, " "բայց կարող է օգտագործել բջջային ինտերնետ։" diff --git a/cookbook/locale/it/LC_MESSAGES/django.mo b/cookbook/locale/it/LC_MESSAGES/django.mo index d3dc38b4..c3171dbf 100644 Binary files a/cookbook/locale/it/LC_MESSAGES/django.mo and b/cookbook/locale/it/LC_MESSAGES/django.mo differ diff --git a/cookbook/locale/it/LC_MESSAGES/django.po b/cookbook/locale/it/LC_MESSAGES/django.po index 25a8904d..f5992280 100644 --- a/cookbook/locale/it/LC_MESSAGES/django.po +++ b/cookbook/locale/it/LC_MESSAGES/django.po @@ -11,8 +11,8 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-08-12 15:09+0200\n" -"PO-Revision-Date: 2021-06-18 23:12+0000\n" +"POT-Creation-Date: 2021-09-13 22:40+0200\n" +"PO-Revision-Date: 2021-09-18 23:06+0000\n" "Last-Translator: Oliver Cervera \n" "Language-Team: Italian \n" @@ -21,17 +21,16 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" -"X-Generator: Weblate 4.6.2\n" +"X-Generator: Weblate 4.8\n" -#: .\cookbook\filters.py:23 .\cookbook\templates\base.html:98 -#: .\cookbook\templates\forms\edit_internal_recipe.html:269 +#: .\cookbook\filters.py:23 .\cookbook\templates\base.html:125 #: .\cookbook\templates\forms\ingredients.html:34 #: .\cookbook\templates\space.html:43 .\cookbook\templates\stats.html:28 -#: .\cookbook\templates\url_import.html:270 .\cookbook\views\lists.py:67 +#: .\cookbook\templates\url_import.html:270 msgid "Ingredients" msgstr "Ingredienti" -#: .\cookbook\forms.py:49 +#: .\cookbook\forms.py:50 msgid "" "Color of the top navigation bar. Not all colors work with all themes, just " "try them out!" @@ -39,13 +38,13 @@ msgstr "" "Colore della barra di navigazione in alto. Non tutti i colori funzionano con " "tutti i temi, provali e basta!" -#: .\cookbook\forms.py:51 +#: .\cookbook\forms.py:52 msgid "Default Unit to be used when inserting a new ingredient into a recipe." msgstr "" "Unità di misura predefinita da utilizzare quando si inserisce un nuovo " "ingrediente in una ricetta." -#: .\cookbook\forms.py:53 +#: .\cookbook\forms.py:54 msgid "" "Enables support for fractions in ingredient amounts (e.g. convert decimals " "to fractions automatically)" @@ -53,7 +52,7 @@ msgstr "" "Abilita il supporto alle frazioni per le quantità degli ingredienti (ad " "esempio converte i decimali in frazioni automaticamente)" -#: .\cookbook\forms.py:56 +#: .\cookbook\forms.py:57 msgid "" "Users with whom newly created meal plan/shopping list entries should be " "shared by default." @@ -61,20 +60,20 @@ msgstr "" "Gli utenti con i quali le nuove voci del piano alimentare/lista della spesa " "devono essere condivise per impostazione predefinita." -#: .\cookbook\forms.py:58 +#: .\cookbook\forms.py:59 msgid "Show recently viewed recipes on search page." msgstr "Mostra le ricette visualizzate di recente nella pagina di ricerca." -#: .\cookbook\forms.py:59 +#: .\cookbook\forms.py:60 msgid "Number of decimals to round ingredients." msgstr "Numero di decimali per approssimare gli ingredienti." -#: .\cookbook\forms.py:60 +#: .\cookbook\forms.py:61 msgid "If you want to be able to create and see comments underneath recipes." msgstr "" "Se vuoi essere in grado di creare e vedere i commenti sotto le ricette." -#: .\cookbook\forms.py:62 +#: .\cookbook\forms.py:63 msgid "" "Setting to 0 will disable auto sync. When viewing a shopping list the list " "is updated every set seconds to sync changes someone else might have made. " @@ -85,14 +84,14 @@ msgstr "" "visualizza una lista della spesa, la lista viene aggiornata ogni tot secondi " "impostati per sincronizzare le modifiche che qualcun altro potrebbe aver " "fatto. Utile per gli acquisti con più persone, ma potrebbe utilizzare un po' " -"di dati mobili. Se inferiore al limite di istanza viene ripristinato durante " -"il salvataggio." +"di dati mobili. Se inferiore al limite della istanza viene ripristinato " +"durante il salvataggio." -#: .\cookbook\forms.py:65 +#: .\cookbook\forms.py:66 msgid "Makes the navbar stick to the top of the page." msgstr "Fissa la barra di navigazione nella parte superiore della pagina." -#: .\cookbook\forms.py:81 +#: .\cookbook\forms.py:82 msgid "" "Both fields are optional. If none are given the username will be displayed " "instead" @@ -100,42 +99,39 @@ msgstr "" "Entrambi i campi sono facoltativi. Se non viene fornito, verrà visualizzato " "il nome utente" -#: .\cookbook\forms.py:102 .\cookbook\forms.py:331 -#: .\cookbook\templates\forms\edit_internal_recipe.html:49 +#: .\cookbook\forms.py:103 .\cookbook\forms.py:334 #: .\cookbook\templates\url_import.html:154 msgid "Name" msgstr "Nome" -#: .\cookbook\forms.py:103 .\cookbook\forms.py:332 -#: .\cookbook\templates\base.html:108 .\cookbook\templates\base.html:169 -#: .\cookbook\templates\forms\edit_internal_recipe.html:85 +#: .\cookbook\forms.py:104 .\cookbook\forms.py:335 #: .\cookbook\templates\space.html:39 .\cookbook\templates\stats.html:24 #: .\cookbook\templates\url_import.html:188 -#: .\cookbook\templates\url_import.html:573 +#: .\cookbook\templates\url_import.html:573 .\cookbook\views\lists.py:112 msgid "Keywords" msgstr "Parole chiave" -#: .\cookbook\forms.py:104 +#: .\cookbook\forms.py:105 msgid "Preparation time in minutes" msgstr "Tempo di preparazione in minuti" -#: .\cookbook\forms.py:105 +#: .\cookbook\forms.py:106 msgid "Waiting time (cooking/baking) in minutes" msgstr "Tempo di attesa (cottura) in minuti" -#: .\cookbook\forms.py:106 .\cookbook\forms.py:333 +#: .\cookbook\forms.py:107 .\cookbook\forms.py:336 msgid "Path" msgstr "Percorso" -#: .\cookbook\forms.py:107 +#: .\cookbook\forms.py:108 msgid "Storage UID" msgstr "UID di archiviazione" -#: .\cookbook\forms.py:133 +#: .\cookbook\forms.py:134 msgid "Default" msgstr "Predefinito" -#: .\cookbook\forms.py:144 .\cookbook\templates\url_import.html:90 +#: .\cookbook\forms.py:145 .\cookbook\templates\url_import.html:90 msgid "" "To prevent duplicates recipes with the same name as existing ones are " "ignored. Check this box to import everything." @@ -143,52 +139,52 @@ msgstr "" "Per prevenire duplicati, vengono ignorate le ricette che hanno lo stesso " "nome di quelle esistenti. Metti la spunta per importare tutto." -#: .\cookbook\forms.py:164 +#: .\cookbook\forms.py:165 msgid "New Unit" msgstr "Nuova unità di misura" -#: .\cookbook\forms.py:165 +#: .\cookbook\forms.py:166 msgid "New unit that other gets replaced by." msgstr "Nuova unità di misura che sostituisce le altre." -#: .\cookbook\forms.py:170 +#: .\cookbook\forms.py:171 msgid "Old Unit" msgstr "Vecchia unità di misura" -#: .\cookbook\forms.py:171 +#: .\cookbook\forms.py:172 msgid "Unit that should be replaced." msgstr "Unità di misura che dovrebbe essere rimpiazzata." -#: .\cookbook\forms.py:187 +#: .\cookbook\forms.py:189 msgid "New Food" msgstr "Nuovo alimento" -#: .\cookbook\forms.py:188 +#: .\cookbook\forms.py:190 msgid "New food that other gets replaced by." msgstr "Nuovo alimento che sostituisce gli altri." -#: .\cookbook\forms.py:193 +#: .\cookbook\forms.py:195 msgid "Old Food" msgstr "Vecchio alimento" -#: .\cookbook\forms.py:194 +#: .\cookbook\forms.py:196 msgid "Food that should be replaced." msgstr "Alimento che dovrebbe essere rimpiazzato." -#: .\cookbook\forms.py:212 +#: .\cookbook\forms.py:214 msgid "Add your comment: " -msgstr "Aggiungi il tuo commento:" +msgstr "Aggiungi il tuo commento: " -#: .\cookbook\forms.py:253 +#: .\cookbook\forms.py:256 msgid "Leave empty for dropbox and enter app password for nextcloud." msgstr "" "Lascia vuoto per dropbox e inserisci la password dell'app per nextcloud." -#: .\cookbook\forms.py:260 +#: .\cookbook\forms.py:263 msgid "Leave empty for nextcloud and enter api token for dropbox." msgstr "Lascia vuoto per nextcloud e inserisci l'api token per dropbox." -#: .\cookbook\forms.py:269 +#: .\cookbook\forms.py:272 msgid "" "Leave empty for dropbox and enter only base url for nextcloud (/remote." "php/webdav/ is added automatically)" @@ -196,26 +192,25 @@ msgstr "" "Lascia vuoto per dropbox e inserisci solo l'url base per nextcloud (/" "remote.php/webdav/ è aggiunto automaticamente)" -#: .\cookbook\forms.py:307 +#: .\cookbook\forms.py:310 msgid "Search String" msgstr "Stringa di Ricerca" -#: .\cookbook\forms.py:334 +#: .\cookbook\forms.py:337 msgid "File ID" msgstr "ID del File" -#: .\cookbook\forms.py:370 +#: .\cookbook\forms.py:373 msgid "You must provide at least a recipe or a title." msgstr "Devi fornire almeno una ricetta o un titolo." -#: .\cookbook\forms.py:383 +#: .\cookbook\forms.py:386 msgid "You can list default users to share recipes with in the settings." msgstr "" "È possibile visualizzare l'elenco degli utenti predefiniti con cui " "condividere le ricette nelle impostazioni." -#: .\cookbook\forms.py:384 -#: .\cookbook\templates\forms\edit_internal_recipe.html:427 +#: .\cookbook\forms.py:387 msgid "" "You can use markdown to format this field. See the docs here" @@ -223,63 +218,141 @@ msgstr "" "Puoi usare markdown per formattare questo campo. Guarda la documentazione qui" -#: .\cookbook\forms.py:409 +#: .\cookbook\forms.py:412 msgid "Maximum number of users for this space reached." -msgstr "" +msgstr "È stato raggiunto il numero massimo di utenti per questa istanza." -#: .\cookbook\forms.py:415 +#: .\cookbook\forms.py:418 msgid "Email address already taken!" -msgstr "" +msgstr "Questo indirizzo email è già in uso!" -#: .\cookbook\forms.py:423 +#: .\cookbook\forms.py:426 msgid "" "An email address is not required but if present the invite link will be send " "to the user." msgstr "" +"Non è obbligatorio specificare l'indirizzo email, ma se presente verrà " +"utilizzato per mandare all'utente un link di invito." -#: .\cookbook\forms.py:438 +#: .\cookbook\forms.py:441 msgid "Name already taken." +msgstr "Nome già in uso." + +#: .\cookbook\forms.py:452 +msgid "Accept Terms and Privacy" +msgstr "Accetta i Termini d'uso e Privacy" + +#: .\cookbook\forms.py:487 +msgid "" +"Select type method of search. Click here for " +"full desciption of choices." +msgstr "" +"Seleziona il metodo di ricerca. Cliccaqui per " +"avere maggiori informazioni." + +#: .\cookbook\forms.py:488 +msgid "" +"Use fuzzy matching on units, keywords and ingredients when editing and " +"importing recipes." msgstr "" -#: .\cookbook\forms.py:449 -msgid "Accept Terms and Privacy" +#: .\cookbook\forms.py:489 +msgid "" +"Fields to search ignoring accents. Selecting this option can improve or " +"degrade search quality depending on language" msgstr "" +#: .\cookbook\forms.py:490 +msgid "" +"Fields to search for partial matches. (e.g. searching for 'Pie' will return " +"'pie' and 'piece' and 'soapie')" +msgstr "" + +#: .\cookbook\forms.py:491 +msgid "" +"Fields to search for beginning of word matches. (e.g. searching for 'sa' " +"will return 'salad' and 'sandwich')" +msgstr "" + +#: .\cookbook\forms.py:492 +msgid "" +"Fields to 'fuzzy' search. (e.g. searching for 'recpie' will find 'recipe'.) " +"Note: this option will conflict with 'web' and 'raw' methods of search." +msgstr "" + +#: .\cookbook\forms.py:493 +msgid "" +"Fields to full text search. Note: 'web', 'phrase', and 'raw' search methods " +"only function with fulltext fields." +msgstr "" + +#: .\cookbook\forms.py:497 +msgid "Search Method" +msgstr "Metodo di ricerca" + +#: .\cookbook\forms.py:498 +msgid "Fuzzy Lookups" +msgstr "" + +#: .\cookbook\forms.py:499 +msgid "Ignore Accent" +msgstr "Ignora accento" + +#: .\cookbook\forms.py:500 +msgid "Partial Match" +msgstr "Corrispondenza parziale" + +#: .\cookbook\forms.py:501 +msgid "Starts Wtih" +msgstr "Inizia con" + +#: .\cookbook\forms.py:502 +#, fuzzy +#| msgid "Search" +msgid "Fuzzy Search" +msgstr "Cerca" + +#: .\cookbook\forms.py:503 +msgid "Full Text" +msgstr "Full Text" + #: .\cookbook\helper\AllAuthCustomAdapter.py:36 msgid "" "In order to prevent spam, the requested email was not send. Please wait a " "few minutes and try again." msgstr "" +"Per evitare spam, la mail non è stata inviata. Aspetta qualche minuto e " +"riprova." -#: .\cookbook\helper\permission_helper.py:138 -#: .\cookbook\helper\permission_helper.py:161 .\cookbook\views\views.py:151 +#: .\cookbook\helper\permission_helper.py:136 +#: .\cookbook\helper\permission_helper.py:159 .\cookbook\views\views.py:150 msgid "You are not logged in and therefore cannot view this page!" msgstr "Non hai fatto l'accesso e quindi non puoi visualizzare questa pagina!" -#: .\cookbook\helper\permission_helper.py:142 -#: .\cookbook\helper\permission_helper.py:148 -#: .\cookbook\helper\permission_helper.py:173 -#: .\cookbook\helper\permission_helper.py:218 -#: .\cookbook\helper\permission_helper.py:232 -#: .\cookbook\helper\permission_helper.py:243 -#: .\cookbook\helper\permission_helper.py:254 .\cookbook\views\data.py:40 -#: .\cookbook\views\views.py:162 .\cookbook\views\views.py:169 -#: .\cookbook\views\views.py:259 +#: .\cookbook\helper\permission_helper.py:140 +#: .\cookbook\helper\permission_helper.py:146 +#: .\cookbook\helper\permission_helper.py:171 +#: .\cookbook\helper\permission_helper.py:216 +#: .\cookbook\helper\permission_helper.py:230 +#: .\cookbook\helper\permission_helper.py:241 +#: .\cookbook\helper\permission_helper.py:252 .\cookbook\views\data.py:40 +#: .\cookbook\views\views.py:161 .\cookbook\views\views.py:168 +#: .\cookbook\views\views.py:245 msgid "You do not have the required permissions to view this page!" msgstr "Non hai i permessi necessari per visualizzare questa pagina!" -#: .\cookbook\helper\permission_helper.py:166 -#: .\cookbook\helper\permission_helper.py:189 -#: .\cookbook\helper\permission_helper.py:204 +#: .\cookbook\helper\permission_helper.py:164 +#: .\cookbook\helper\permission_helper.py:187 +#: .\cookbook\helper\permission_helper.py:202 msgid "You cannot interact with this object as it is not owned by you!" msgstr "Non puoi interagire con questo oggetto perché non ne hai i diritti!" -#: .\cookbook\helper\template_helper.py:60 -#: .\cookbook\helper\template_helper.py:62 +#: .\cookbook\helper\template_helper.py:61 +#: .\cookbook\helper\template_helper.py:63 msgid "Could not parse template code." msgstr "Impossibile elaborare il codice del template." -#: .\cookbook\integration\integration.py:104 +#: .\cookbook\integration\integration.py:119 #: .\cookbook\templates\import.html:14 .\cookbook\templates\import.html:20 #: .\cookbook\templates\import_response.html:7 #: .\cookbook\templates\test.html:14 .\cookbook\templates\test.html:20 @@ -288,11 +361,11 @@ msgstr "Impossibile elaborare il codice del template." #: .\cookbook\templates\url_import.html:123 #: .\cookbook\templates\url_import.html:317 #: .\cookbook\templates\url_import.html:604 .\cookbook\views\delete.py:60 -#: .\cookbook\views\edit.py:199 +#: .\cookbook\views\edit.py:197 msgid "Import" msgstr "Importa" -#: .\cookbook\integration\integration.py:185 +#: .\cookbook\integration\integration.py:200 msgid "" "Importer expected a .zip file. Did you choose the correct importer type for " "your data ?" @@ -300,17 +373,19 @@ msgstr "" "La procedura di import necessita di un file .zip. Hai scelto il tipo di " "importazione corretta per i tuoi dati?" -#: .\cookbook\integration\integration.py:188 +#: .\cookbook\integration\integration.py:203 msgid "" "An unexpected error occurred during the import. Please make sure you have " "uploaded a valid file." msgstr "" +"Un errore imprevisto si è verificato durante l'importazione. Assicurati di " +"aver caricato un file valido." -#: .\cookbook\integration\integration.py:192 +#: .\cookbook\integration\integration.py:208 msgid "The following recipes were ignored because they already existed:" msgstr "Le seguenti ricette sono state ignorate perché già esistenti:" -#: .\cookbook\integration\integration.py:196 +#: .\cookbook\integration\integration.py:212 #, python-format msgid "Imported %s recipes." msgstr "Importate %s ricette." @@ -328,7 +403,6 @@ msgid "Source" msgstr "Fonte" #: .\cookbook\integration\safron.py:23 -#: .\cookbook\templates\forms\edit_internal_recipe.html:79 #: .\cookbook\templates\include\log_cooking.html:16 #: .\cookbook\templates\url_import.html:224 #: .\cookbook\templates\url_import.html:455 @@ -340,7 +414,6 @@ msgid "Waiting time" msgstr "Tempo di cottura" #: .\cookbook\integration\safron.py:27 -#: .\cookbook\templates\forms\edit_internal_recipe.html:73 msgid "Preparation Time" msgstr "Tempo di preparazione" @@ -354,6 +427,24 @@ msgstr "Ricettario" msgid "Section" msgstr "Selezione" +#: .\cookbook\management\commands\rebuildindex.py:14 +msgid "Rebuilds full text search index on Recipe" +msgstr "Ricostruisce l'indice di ricerca full text per la ricetta" + +#: .\cookbook\management\commands\rebuildindex.py:18 +msgid "Only Postgress databases use full text search, no index to rebuild" +msgstr "" +"Solo i database Postgres usano l'indice di ricerca full text, non ci sono " +"indici da ricostruire" + +#: .\cookbook\management\commands\rebuildindex.py:29 +msgid "Recipe index rebuild complete." +msgstr "È stato ricostruito l'indice della ricetta." + +#: .\cookbook\management\commands\rebuildindex.py:31 +msgid "Recipe index rebuild failed." +msgstr "Non è stato possibile ricostruire l'indice della ricetta." + #: .\cookbook\migrations\0047_auto_20200602_1133.py:14 msgid "Breakfast" msgstr "Colazione" @@ -370,78 +461,91 @@ msgstr "Cena" msgid "Other" msgstr "Altro" -#: .\cookbook\models.py:72 +#: .\cookbook\models.py:144 msgid "" "Maximum file storage for space in MB. 0 for unlimited, -1 to disable file " "upload." msgstr "" +"Archiviazione massima in MB. 0 per illimitata, -1 per disabilitare il " +"caricamento dei file." -#: .\cookbook\models.py:123 .\cookbook\templates\search.html:7 +#: .\cookbook\models.py:196 .\cookbook\templates\search.html:7 #: .\cookbook\templates\shopping_list.html:52 msgid "Search" msgstr "Cerca" -#: .\cookbook\models.py:124 .\cookbook\templates\base.html:92 +#: .\cookbook\models.py:197 .\cookbook\templates\base.html:82 #: .\cookbook\templates\meal_plan.html:5 .\cookbook\views\delete.py:152 -#: .\cookbook\views\edit.py:233 .\cookbook\views\new.py:201 +#: .\cookbook\views\edit.py:231 .\cookbook\views\new.py:200 msgid "Meal-Plan" msgstr "Piano alimentare" -#: .\cookbook\models.py:125 .\cookbook\templates\base.html:89 +#: .\cookbook\models.py:198 .\cookbook\templates\base.html:90 msgid "Books" msgstr "Libri" -#: .\cookbook\models.py:133 +#: .\cookbook\models.py:206 msgid "Small" msgstr "Piccolo" -#: .\cookbook\models.py:133 +#: .\cookbook\models.py:206 msgid "Large" msgstr "Grande" -#: .\cookbook\models.py:133 .\cookbook\templates\generic\new_template.html:6 +#: .\cookbook\models.py:206 .\cookbook\templates\generic\new_template.html:6 #: .\cookbook\templates\generic\new_template.html:14 #: .\cookbook\templates\meal_plan.html:323 msgid "New" msgstr "Nuovo" -#: .\cookbook\models.py:338 -#: .\cookbook\templates\forms\edit_internal_recipe.html:202 +#: .\cookbook\models.py:389 +msgid " is part of a recipe step and cannot be deleted" +msgstr " è parte dello step di una ricetta e non può essere eliminato" + +#: .\cookbook\models.py:429 msgid "Text" msgstr "Testo" -#: .\cookbook\models.py:338 -#: .\cookbook\templates\forms\edit_internal_recipe.html:203 +#: .\cookbook\models.py:429 msgid "Time" msgstr "Tempo" -#: .\cookbook\models.py:338 -#: .\cookbook\templates\forms\edit_internal_recipe.html:204 -#: .\cookbook\templates\forms\edit_internal_recipe.html:219 -#, fuzzy -#| msgid "File ID" +#: .\cookbook\models.py:429 msgid "File" -msgstr "ID del File" +msgstr "File" -#: .\cookbook\models.py:338 -#: .\cookbook\templates\forms\edit_internal_recipe.html:205 -#: .\cookbook\templates\forms\edit_internal_recipe.html:241 +#: .\cookbook\models.py:429 #: .\cookbook\templates\include\recipe_open_modal.html:7 #: .\cookbook\templates\meal_plan.html:247 .\cookbook\views\delete.py:28 -#: .\cookbook\views\edit.py:273 .\cookbook\views\new.py:52 +#: .\cookbook\views\edit.py:271 .\cookbook\views\new.py:52 msgid "Recipe" msgstr "Ricetta" -#: .\cookbook\serializer.py:109 +#: .\cookbook\models.py:836 .\cookbook\templates\search_info.html:28 +msgid "Simple" +msgstr "Semplice" + +#: .\cookbook\models.py:837 .\cookbook\templates\search_info.html:33 +msgid "Phrase" +msgstr "Frase" + +#: .\cookbook\models.py:838 .\cookbook\templates\search_info.html:38 +msgid "Web" +msgstr "Web" + +#: .\cookbook\models.py:839 .\cookbook\templates\search_info.html:47 +msgid "Raw" +msgstr "Raw" + +#: .\cookbook\serializer.py:112 msgid "File uploads are not enabled for this Space." -msgstr "" +msgstr "Il caricamento dei file non è abilitato in questa istanza." -#: .\cookbook\serializer.py:117 +#: .\cookbook\serializer.py:125 msgid "You have reached your file upload limit." -msgstr "" +msgstr "Hai raggiungo il limite per il caricamento dei file." -#: .\cookbook\tables.py:35 .\cookbook\templates\books.html:36 -#: .\cookbook\templates\generic\edit_template.html:6 +#: .\cookbook\tables.py:35 .\cookbook\templates\generic\edit_template.html:6 #: .\cookbook\templates\generic\edit_template.html:14 #: .\cookbook\templates\meal_plan.html:281 #: .\cookbook\templates\recipes_table.html:82 @@ -450,11 +554,10 @@ msgstr "" msgid "Edit" msgstr "Modifica" -#: .\cookbook\tables.py:124 .\cookbook\tables.py:147 -#: .\cookbook\templates\books.html:38 +#: .\cookbook\tables.py:115 .\cookbook\tables.py:138 #: .\cookbook\templates\generic\delete_template.html:5 #: .\cookbook\templates\generic\delete_template.html:13 -#: .\cookbook\templates\generic\edit_template.html:27 +#: .\cookbook\templates\generic\edit_template.html:28 #: .\cookbook\templates\meal_plan.html:277 #: .\cookbook\templates\recipes_table.html:90 msgid "Delete" @@ -484,7 +587,7 @@ msgstr "Indirizzi email" #: .\cookbook\templates\account\email.html:12 #: .\cookbook\templates\account\password_change.html:11 #: .\cookbook\templates\account\password_set.html:11 -#: .\cookbook\templates\base.html:154 .\cookbook\templates\settings.html:6 +#: .\cookbook\templates\base.html:204 .\cookbook\templates\settings.html:6 #: .\cookbook\templates\settings.html:17 #: .\cookbook\templates\socialaccount\connections.html:10 msgid "Settings" @@ -492,11 +595,11 @@ msgstr "Impostazioni" #: .\cookbook\templates\account\email.html:13 msgid "Email" -msgstr "" +msgstr "Email" #: .\cookbook\templates\account\email.html:19 msgid "The following e-mail addresses are associated with your account:" -msgstr "" +msgstr "I seguenti indirizzi email sono associati al tuo account:" #: .\cookbook\templates\account\email.html:36 msgid "Verified" @@ -511,14 +614,12 @@ msgid "Primary" msgstr "Principale" #: .\cookbook\templates\account\email.html:47 -#, fuzzy -#| msgid "Make Header" msgid "Make Primary" -msgstr "Crea Intestazione" +msgstr "Rendi principale" #: .\cookbook\templates\account\email.html:49 msgid "Re-send Verification" -msgstr "" +msgstr "Invia verifica di nuovo" #: .\cookbook\templates\account\email.html:50 #: .\cookbook\templates\socialaccount\connections.html:44 @@ -526,33 +627,33 @@ msgid "Remove" msgstr "Rimuovi" #: .\cookbook\templates\account\email.html:58 -#, fuzzy -#| msgid "Warning" msgid "Warning:" -msgstr "Avviso" +msgstr "Avviso:" #: .\cookbook\templates\account\email.html:58 msgid "" "You currently do not have any e-mail address set up. You should really add " "an e-mail address so you can receive notifications, reset your password, etc." msgstr "" +"Non hai configurato un indirizzo email. Se lo facessi, potresti ricevere " +"notifiche, resettare la password e altro." #: .\cookbook\templates\account\email.html:64 msgid "Add E-mail Address" -msgstr "" +msgstr "Aggiungi indirizzo email" #: .\cookbook\templates\account\email.html:69 msgid "Add E-mail" -msgstr "" +msgstr "Aggiungi E-mail" #: .\cookbook\templates\account\email.html:79 msgid "Do you really want to remove the selected e-mail address?" -msgstr "" +msgstr "Sei sicuro di voler rimuovere l'indirizzo email selezionato?" #: .\cookbook\templates\account\email_confirm.html:6 #: .\cookbook\templates\account\email_confirm.html:10 msgid "Confirm E-mail Address" -msgstr "" +msgstr "Conferma indirizzo email" #: .\cookbook\templates\account\email_confirm.html:16 #, python-format @@ -562,9 +663,13 @@ msgid "" "for user %(user_display)s\n" " ." msgstr "" +"Conferma che\n" +" %(email)s è un indirizzo email " +"per l'utente %(user_display)s\n" +" ." #: .\cookbook\templates\account\email_confirm.html:22 -#: .\cookbook\templates\generic\delete_template.html:21 +#: .\cookbook\templates\generic\delete_template.html:22 msgid "Confirm" msgstr "Conferma" @@ -575,8 +680,11 @@ msgid "" " issue a new e-mail confirmation " "request." msgstr "" +"Questo link di conferma è scaduto o non è valido. Puoi\n" +" richiedere un nuovo link di conferma." -#: .\cookbook\templates\account\login.html:8 .\cookbook\templates\base.html:189 +#: .\cookbook\templates\account\login.html:8 .\cookbook\templates\base.html:234 msgid "Login" msgstr "Login" @@ -590,20 +698,18 @@ msgstr "Accedi" #: .\cookbook\templates\account\login.html:32 #: .\cookbook\templates\socialaccount\signup.html:8 #: .\cookbook\templates\socialaccount\signup.html:57 -#, fuzzy -#| msgid "Sign In" msgid "Sign Up" -msgstr "Accedi" +msgstr "Iscriviti" #: .\cookbook\templates\account\login.html:36 #: .\cookbook\templates\account\login.html:37 #: .\cookbook\templates\account\password_reset.html:29 msgid "Reset My Password" -msgstr "" +msgstr "Reimposta password" #: .\cookbook\templates\account\login.html:37 msgid "Lost your password?" -msgstr "" +msgstr "Hai dimenticato la password?" #: .\cookbook\templates\account\login.html:48 msgid "Social Login" @@ -626,22 +732,18 @@ msgstr "Sei sicuro di voler uscire?" #: .\cookbook\templates\account\password_change.html:6 #: .\cookbook\templates\account\password_change.html:16 #: .\cookbook\templates\account\password_change.html:21 -#, fuzzy -#| msgid "Changes saved!" msgid "Change Password" -msgstr "Modifiche salvate!" +msgstr "Cambia Password" #: .\cookbook\templates\account\password_change.html:12 #: .\cookbook\templates\account\password_set.html:12 -#: .\cookbook\templates\settings.html:52 -#, fuzzy -#| msgid "Password Reset" +#: .\cookbook\templates\settings.html:64 msgid "Password" -msgstr "Recupero password" +msgstr "Password" #: .\cookbook\templates\account\password_change.html:22 msgid "Forgot Password?" -msgstr "" +msgstr "Hai dimenticato la password?" #: .\cookbook\templates\account\password_reset.html:7 #: .\cookbook\templates\account\password_reset.html:13 @@ -655,56 +757,54 @@ msgid "" "Forgotten your password? Enter your e-mail address below, and we'll send you " "an e-mail allowing you to reset it." msgstr "" +"Hai dimenticato la password? Digita il tuo indirizzo email e riceverai una " +"email con le istruzioni per il reset." #: .\cookbook\templates\account\password_reset.html:32 -#, fuzzy -#| msgid "Password reset is not implemented for the time being!" msgid "Password reset is disabled on this instance." -msgstr "Il recupero della password non è stato ancora implementato!" +msgstr "Il recupero della password è disabilitato in questa istanza." #: .\cookbook\templates\account\password_reset_done.html:16 msgid "" "We have sent you an e-mail. Please contact us if you do not receive it " "within a few minutes." msgstr "" +"Ti abbiamo mandato una mail. Contattaci se non la ricevi entro qualche " +"minuto." #: .\cookbook\templates\account\password_set.html:6 #: .\cookbook\templates\account\password_set.html:16 #: .\cookbook\templates\account\password_set.html:21 -#, fuzzy -#| msgid "Password Reset" msgid "Set Password" -msgstr "Recupero password" +msgstr "Imposta password" #: .\cookbook\templates\account\signup.html:6 msgid "Register" msgstr "Registrati" #: .\cookbook\templates\account\signup.html:12 -#, fuzzy -#| msgid "Create your Account" msgid "Create an Account" -msgstr "Crea il tuo account" +msgstr "Crea un account" #: .\cookbook\templates\account\signup.html:42 #: .\cookbook\templates\socialaccount\signup.html:33 msgid "I accept the follwoing" -msgstr "" +msgstr "Accetto i seguenti" #: .\cookbook\templates\account\signup.html:45 #: .\cookbook\templates\socialaccount\signup.html:36 msgid "Terms and Conditions" -msgstr "" +msgstr "Termini e Condizioni" #: .\cookbook\templates\account\signup.html:48 #: .\cookbook\templates\socialaccount\signup.html:39 msgid "and" -msgstr "" +msgstr "e" #: .\cookbook\templates\account\signup.html:52 #: .\cookbook\templates\socialaccount\signup.html:43 msgid "Privacy Policy" -msgstr "" +msgstr "Privacy Policy" #: .\cookbook\templates\account\signup.html:65 msgid "Create User" @@ -712,113 +812,96 @@ msgstr "Crea utente" #: .\cookbook\templates\account\signup.html:69 msgid "Already have an account?" -msgstr "" +msgstr "Hai già un account?" #: .\cookbook\templates\account\signup_closed.html:5 #: .\cookbook\templates\account\signup_closed.html:11 msgid "Sign Up Closed" -msgstr "" +msgstr "Iscrizioni chiuse" #: .\cookbook\templates\account\signup_closed.html:13 msgid "We are sorry, but the sign up is currently closed." -msgstr "" +msgstr "Spiacenti, al momento le iscrizioni sono chiuse." -#: .\cookbook\templates\api_info.html:5 .\cookbook\templates\base.html:179 +#: .\cookbook\templates\api_info.html:5 .\cookbook\templates\base.html:222 #: .\cookbook\templates\rest_framework\api.html:11 msgid "API Documentation" msgstr "Documentazione API" -#: .\cookbook\templates\base.html:85 -msgid "Utensils" -msgstr "Strumenti" - -#: .\cookbook\templates\base.html:95 +#: .\cookbook\templates\base.html:86 msgid "Shopping" msgstr "Spesa" -#: .\cookbook\templates\base.html:101 +#: .\cookbook\templates\base.html:113 +msgid "Keyword" +msgstr "Parola chiave" + +#: .\cookbook\templates\base.html:137 +#: .\cookbook\templates\forms\ingredients.html:24 +#: .\cookbook\templates\space.html:41 .\cookbook\templates\stats.html:26 +#: .\cookbook\views\lists.py:146 +msgid "Units" +msgstr "Unità di misura" + +#: .\cookbook\templates\base.html:151 #: .\cookbook\templates\shopping_list.html:230 #: .\cookbook\templates\supermarket.html:7 msgid "Supermarket" msgstr "Supermercato" -#: .\cookbook\templates\base.html:112 .\cookbook\views\delete.py:84 -#: .\cookbook\views\edit.py:102 .\cookbook\views\lists.py:26 -#: .\cookbook\views\new.py:78 -msgid "Keyword" -msgstr "Parola chiave" - -#: .\cookbook\templates\base.html:114 +#: .\cookbook\templates\base.html:163 msgid "Batch Edit" msgstr "Modifica in blocco" -#: .\cookbook\templates\base.html:119 -msgid "Storage Data" -msgstr "Dati e Archiviazione" - -#: .\cookbook\templates\base.html:123 -msgid "Storage Backends" -msgstr "Backend Archiviazione" - -#: .\cookbook\templates\base.html:125 -msgid "Configure Sync" -msgstr "Configura Sincronizzazione" - -#: .\cookbook\templates\base.html:127 -msgid "Discovered Recipes" -msgstr "Ricette trovate" - -#: .\cookbook\templates\base.html:129 -msgid "Discovery Log" -msgstr "Registro ricette trovate" - -#: .\cookbook\templates\base.html:131 .\cookbook\templates\stats.html:10 -msgid "Statistics" -msgstr "Statistiche" - -#: .\cookbook\templates\base.html:133 -msgid "Units & Ingredients" -msgstr "Unità di misura & Ingredienti" - -#: .\cookbook\templates\base.html:135 .\cookbook\templates\index.html:47 -msgid "Import Recipe" -msgstr "Importa Ricetta" - -#: .\cookbook\templates\base.html:156 .\cookbook\templates\history.html:6 +#: .\cookbook\templates\base.html:175 .\cookbook\templates\history.html:6 #: .\cookbook\templates\history.html:14 msgid "History" msgstr "Cronologia" -#: .\cookbook\templates\base.html:159 .\cookbook\templates\space.html:7 -#: .\cookbook\templates\space.html:19 -#, fuzzy -#| msgid "Settings" -msgid "Space Settings" -msgstr "Impostazioni" +#: .\cookbook\templates\base.html:191 .\cookbook\templates\index.html:47 +msgid "Import Recipe" +msgstr "Importa Ricetta" -#: .\cookbook\templates\base.html:163 .\cookbook\templates\system.html:13 +#: .\cookbook\templates\base.html:193 +#: .\cookbook\templates\shopping_list.html:188 +#: .\cookbook\templates\shopping_list.html:210 +msgid "Create" +msgstr "Crea" + +#: .\cookbook\templates\base.html:207 .\cookbook\templates\space.html:7 +#: .\cookbook\templates\space.html:19 +msgid "Space Settings" +msgstr "Impostazioni Istanza" + +#: .\cookbook\templates\base.html:212 .\cookbook\templates\system.html:13 msgid "System" msgstr "Sistema" -#: .\cookbook\templates\base.html:165 .\cookbook\templates\base.html:171 +#: .\cookbook\templates\base.html:214 msgid "Admin" msgstr "Amministratore" -#: .\cookbook\templates\base.html:175 +#: .\cookbook\templates\base.html:218 msgid "Markdown Guide" msgstr "Informazioni su Markdown" -#: .\cookbook\templates\base.html:177 +#: .\cookbook\templates\base.html:220 msgid "GitHub" msgstr "GitHub" -#: .\cookbook\templates\base.html:181 +#: .\cookbook\templates\base.html:224 msgid "API Browser" msgstr "Browser API" -#: .\cookbook\templates\base.html:184 +#: .\cookbook\templates\base.html:227 msgid "Log out" -msgstr "" +msgstr "Esci" + +#: .\cookbook\templates\base.html:229 +#: .\cookbook\templates\generic\list_template.html:14 +#: .\cookbook\templates\space.html:58 .\cookbook\templates\stats.html:43 +msgid "External Recipes" +msgstr "Ricette esterne" #: .\cookbook\templates\batch\edit.html:6 msgid "Batch edit Category" @@ -834,7 +917,7 @@ msgstr "" "Aggiungi le parole chiave che desideri a tutte le ricette che contengono una " "determinata stringa" -#: .\cookbook\templates\batch\monitor.html:6 .\cookbook\views\edit.py:85 +#: .\cookbook\templates\batch\monitor.html:6 .\cookbook\views\edit.py:83 msgid "Sync" msgstr "Sincronizza" @@ -854,10 +937,26 @@ msgstr "" msgid "The path must be in the following format" msgstr "Il percorso deve essere nel formato seguente" -#: .\cookbook\templates\batch\monitor.html:27 +#: .\cookbook\templates\batch\monitor.html:21 +msgid "Manage External Storage" +msgstr "Gestisci archiviazione esterna" + +#: .\cookbook\templates\batch\monitor.html:28 msgid "Sync Now!" msgstr "Sincronizza Ora!" +#: .\cookbook\templates\batch\monitor.html:29 +#, fuzzy +#| msgid "Shopping Recipes" +msgid "Show Recipes" +msgstr "Ricette per la spesa" + +#: .\cookbook\templates\batch\monitor.html:30 +#, fuzzy +#| msgid "Show Links" +msgid "Show Log" +msgstr "Mostra link" + #: .\cookbook\templates\batch\waiting.html:4 #: .\cookbook\templates\batch\waiting.html:10 msgid "Importing Recipes" @@ -871,32 +970,10 @@ msgstr "" "Questa operazione può richiedere alcuni minuti, a seconda del numero di " "ricette sincronizzate, attendere prego." -#: .\cookbook\templates\books.html:5 .\cookbook\templates\books.html:11 +#: .\cookbook\templates\books.html:7 msgid "Recipe Books" msgstr "Libri di Ricette" -#: .\cookbook\templates\books.html:15 -msgid "New Book" -msgstr "Nuovo Libro" - -#: .\cookbook\templates\books.html:27 .\cookbook\templates\recipe_view.html:26 -msgid "by" -msgstr "di" - -#: .\cookbook\templates\books.html:34 -msgid "Toggle Recipes" -msgstr "Attiva/Disattiva Ricette" - -#: .\cookbook\templates\books.html:54 -#: .\cookbook\templates\meal_plan_entry.html:48 -#: .\cookbook\templates\recipes_table.html:64 -msgid "Last cooked" -msgstr "Cucinato ultimamente" - -#: .\cookbook\templates\books.html:71 -msgid "There are no recipes in this book yet." -msgstr "Non ci sono ancora ricette in questo libro." - #: .\cookbook\templates\export.html:6 .\cookbook\templates\test2.html:6 msgid "Export Recipes" msgstr "Esporta Ricette" @@ -908,10 +985,8 @@ msgid "Export" msgstr "Esporta" #: .\cookbook\templates\files.html:7 -#, fuzzy -#| msgid "File ID" msgid "Files" -msgstr "ID del File" +msgstr "File" #: .\cookbook\templates\forms\edit_import_recipe.html:5 #: .\cookbook\templates\forms\edit_import_recipe.html:9 @@ -919,215 +994,21 @@ msgid "Import new Recipe" msgstr "Importa nuova Ricetta" #: .\cookbook\templates\forms\edit_import_recipe.html:14 -#: .\cookbook\templates\forms\edit_internal_recipe.html:439 -#: .\cookbook\templates\forms\edit_internal_recipe.html:471 #: .\cookbook\templates\generic\edit_template.html:23 #: .\cookbook\templates\generic\new_template.html:23 #: .\cookbook\templates\include\log_cooking.html:28 #: .\cookbook\templates\meal_plan.html:325 -#: .\cookbook\templates\settings.html:46 .\cookbook\templates\settings.html:87 -#: .\cookbook\templates\settings.html:105 +#: .\cookbook\templates\settings.html:58 .\cookbook\templates\settings.html:99 +#: .\cookbook\templates\settings.html:117 +#: .\cookbook\templates\settings.html:162 #: .\cookbook\templates\shopping_list.html:353 msgid "Save" msgstr "Salva" #: .\cookbook\templates\forms\edit_internal_recipe.html:7 -#: .\cookbook\templates\forms\edit_internal_recipe.html:34 msgid "Edit Recipe" msgstr "Modifica Ricetta" -#: .\cookbook\templates\forms\edit_internal_recipe.html:56 -#: .\cookbook\templates\url_import.html:171 -msgid "Description" -msgstr "Descrizione" - -#: .\cookbook\templates\forms\edit_internal_recipe.html:76 -msgid "Waiting Time" -msgstr "Tempo di cottura" - -#: .\cookbook\templates\forms\edit_internal_recipe.html:82 -msgid "Servings Text" -msgstr "Nome delle porzioni" - -#: .\cookbook\templates\forms\edit_internal_recipe.html:93 -msgid "Select Keywords" -msgstr "Seleziona parole chiave" - -#: .\cookbook\templates\forms\edit_internal_recipe.html:94 -#: .\cookbook\templates\url_import.html:583 -msgid "Add Keyword" -msgstr "Aggiungi parole chiave" - -#: .\cookbook\templates\forms\edit_internal_recipe.html:112 -msgid "Nutrition" -msgstr "Nutrienti" - -#: .\cookbook\templates\forms\edit_internal_recipe.html:116 -#: .\cookbook\templates\forms\edit_internal_recipe.html:166 -msgid "Delete Step" -msgstr "Elimina Step" - -#: .\cookbook\templates\forms\edit_internal_recipe.html:120 -msgid "Calories" -msgstr "Calorie" - -#: .\cookbook\templates\forms\edit_internal_recipe.html:123 -msgid "Carbohydrates" -msgstr "Carboidrati" - -#: .\cookbook\templates\forms\edit_internal_recipe.html:126 -msgid "Fats" -msgstr "Grassi" - -#: .\cookbook\templates\forms\edit_internal_recipe.html:128 -msgid "Proteins" -msgstr "Proteine" - -#: .\cookbook\templates\forms\edit_internal_recipe.html:150 -#: .\cookbook\templates\forms\edit_internal_recipe.html:504 -msgid "Step" -msgstr "Step" - -#: .\cookbook\templates\forms\edit_internal_recipe.html:171 -msgid "Show as header" -msgstr "Mostra come intestazione" - -#: .\cookbook\templates\forms\edit_internal_recipe.html:177 -msgid "Hide as header" -msgstr "Nascondi come intestazione" - -#: .\cookbook\templates\forms\edit_internal_recipe.html:182 -msgid "Move Up" -msgstr "Sposta Sopra" - -#: .\cookbook\templates\forms\edit_internal_recipe.html:187 -msgid "Move Down" -msgstr "Sposta Sotto" - -#: .\cookbook\templates\forms\edit_internal_recipe.html:196 -msgid "Step Name" -msgstr "Nome dello Step" - -#: .\cookbook\templates\forms\edit_internal_recipe.html:200 -msgid "Step Type" -msgstr "Tipo dello Step" - -#: .\cookbook\templates\forms\edit_internal_recipe.html:213 -msgid "Step time in Minutes" -msgstr "Tempo dello step in minuti" - -#: .\cookbook\templates\forms\edit_internal_recipe.html:229 -#, fuzzy -#| msgid "Select one" -msgid "Select File" -msgstr "Seleziona un elemento" - -#: .\cookbook\templates\forms\edit_internal_recipe.html:230 -#: .\cookbook\templates\forms\edit_internal_recipe.html:252 -#: .\cookbook\templates\forms\edit_internal_recipe.html:313 -#: .\cookbook\templates\forms\edit_internal_recipe.html:337 -#: .\cookbook\templates\shopping_list.html:189 -#: .\cookbook\templates\shopping_list.html:211 -#: .\cookbook\templates\shopping_list.html:241 -#: .\cookbook\templates\shopping_list.html:265 -#: .\cookbook\templates\url_import.html:495 -#: .\cookbook\templates\url_import.html:527 -msgid "Select" -msgstr "Seleziona" - -#: .\cookbook\templates\forms\edit_internal_recipe.html:251 -#, fuzzy -#| msgid "Delete Recipe" -msgid "Select Recipe" -msgstr "Elimina Ricetta" - -#: .\cookbook\templates\forms\edit_internal_recipe.html:311 -#: .\cookbook\templates\shopping_list.html:187 -msgid "Select Unit" -msgstr "Seleziona unità di misura" - -#: .\cookbook\templates\forms\edit_internal_recipe.html:312 -#: .\cookbook\templates\forms\edit_internal_recipe.html:336 -#: .\cookbook\templates\shopping_list.html:188 -#: .\cookbook\templates\shopping_list.html:210 -msgid "Create" -msgstr "Crea" - -#: .\cookbook\templates\forms\edit_internal_recipe.html:335 -#: .\cookbook\templates\shopping_list.html:209 -msgid "Select Food" -msgstr "Seleziona alimento" - -#: .\cookbook\templates\forms\edit_internal_recipe.html:352 -#: .\cookbook\templates\meal_plan.html:256 -#: .\cookbook\templates\url_import.html:542 -msgid "Note" -msgstr "Nota" - -#: .\cookbook\templates\forms\edit_internal_recipe.html:369 -msgid "Delete Ingredient" -msgstr "Elimina Ingredienti" - -#: .\cookbook\templates\forms\edit_internal_recipe.html:375 -msgid "Make Header" -msgstr "Crea Intestazione" - -#: .\cookbook\templates\forms\edit_internal_recipe.html:381 -msgid "Make Ingredient" -msgstr "Crea Ingrediente" - -#: .\cookbook\templates\forms\edit_internal_recipe.html:387 -msgid "Disable Amount" -msgstr "Disabilita Quantità" - -#: .\cookbook\templates\forms\edit_internal_recipe.html:393 -msgid "Enable Amount" -msgstr "Abilita Quantità" - -#: .\cookbook\templates\forms\edit_internal_recipe.html:398 -msgid "Copy Template Reference" -msgstr "Copia riferimento template" - -#: .\cookbook\templates\forms\edit_internal_recipe.html:424 -#: .\cookbook\templates\url_import.html:297 -#: .\cookbook\templates\url_import.html:567 -msgid "Instructions" -msgstr "Istruzioni" - -#: .\cookbook\templates\forms\edit_internal_recipe.html:437 -#: .\cookbook\templates\forms\edit_internal_recipe.html:468 -msgid "Save & View" -msgstr "Salva & Mostra" - -#: .\cookbook\templates\forms\edit_internal_recipe.html:441 -#: .\cookbook\templates\forms\edit_internal_recipe.html:474 -msgid "Add Step" -msgstr "Aggiungi Step" - -#: .\cookbook\templates\forms\edit_internal_recipe.html:444 -#: .\cookbook\templates\forms\edit_internal_recipe.html:478 -msgid "Add Nutrition" -msgstr "Aggiungi nutrienti" - -#: .\cookbook\templates\forms\edit_internal_recipe.html:446 -#: .\cookbook\templates\forms\edit_internal_recipe.html:480 -msgid "Remove Nutrition" -msgstr "Rimuovi nutrienti" - -#: .\cookbook\templates\forms\edit_internal_recipe.html:448 -#: .\cookbook\templates\forms\edit_internal_recipe.html:483 -msgid "View Recipe" -msgstr "Mostra ricetta" - -#: .\cookbook\templates\forms\edit_internal_recipe.html:450 -#: .\cookbook\templates\forms\edit_internal_recipe.html:485 -msgid "Delete Recipe" -msgstr "Elimina Ricetta" - -#: .\cookbook\templates\forms\edit_internal_recipe.html:491 -msgid "Steps" -msgstr "Step" - #: .\cookbook\templates\forms\ingredients.html:15 msgid "Edit Ingredients" msgstr "Modifica Ingredienti" @@ -1149,11 +1030,6 @@ msgstr "" "Unisce due unità di misura o ingredienti e aggiorna tutte le ricette che li " "utilizzano." -#: .\cookbook\templates\forms\ingredients.html:24 -#: .\cookbook\templates\space.html:41 .\cookbook\templates\stats.html:26 -msgid "Units" -msgstr "Unità di misura" - #: .\cookbook\templates\forms\ingredients.html:26 msgid "Are you sure that you want to merge these two units?" msgstr "Sei sicuro di volere unire queste due unità di misura?" @@ -1167,29 +1043,33 @@ msgstr "Unisci" msgid "Are you sure that you want to merge these two ingredients?" msgstr "Sei sicuro di volere unire questi due ingredienti?" -#: .\cookbook\templates\generic\delete_template.html:18 +#: .\cookbook\templates\generic\delete_template.html:19 #, python-format msgid "Are you sure you want to delete the %(title)s: %(object)s " msgstr "Sei sicuro di volere eliminare %(title)s: %(object)s" -#: .\cookbook\templates\generic\edit_template.html:30 +#: .\cookbook\templates\generic\delete_template.html:23 +msgid "Cancel" +msgstr "Annulla" + +#: .\cookbook\templates\generic\edit_template.html:32 msgid "View" msgstr "Mostra" -#: .\cookbook\templates\generic\edit_template.html:34 +#: .\cookbook\templates\generic\edit_template.html:36 msgid "Delete original file" msgstr "Elimina il file originale" #: .\cookbook\templates\generic\list_template.html:6 -#: .\cookbook\templates\generic\list_template.html:12 +#: .\cookbook\templates\generic\list_template.html:21 msgid "List" msgstr "Elenco" -#: .\cookbook\templates\generic\list_template.html:25 +#: .\cookbook\templates\generic\list_template.html:34 msgid "Filter" msgstr "Filtro" -#: .\cookbook\templates\generic\list_template.html:30 +#: .\cookbook\templates\generic\list_template.html:39 msgid "Import all" msgstr "Importa tutto" @@ -1428,7 +1308,7 @@ msgid "" msgstr "" "Le tabelle in markdown sono difficili da creare a mano. Si raccomanda " "l'utilizzo di un editor di come questo." +"markdown_tables\" rel=\"noreferrer noopener\" target=\"_blank\">questo." #: .\cookbook\templates\markdown_info.html:155 #: .\cookbook\templates\markdown_info.html:157 @@ -1530,6 +1410,11 @@ msgstr "Mostra aiuto" msgid "Week iCal export" msgstr "Esporta iCall settimanale" +#: .\cookbook\templates\meal_plan.html:256 +#: .\cookbook\templates\url_import.html:542 +msgid "Note" +msgstr "Nota" + #: .\cookbook\templates\meal_plan.html:264 #: .\cookbook\templates\meal_plan_entry.html:18 msgid "Created by" @@ -1617,6 +1502,11 @@ msgstr "" msgid "Meal Plan View" msgstr "Mostra il piano alimentare" +#: .\cookbook\templates\meal_plan_entry.html:48 +#: .\cookbook\templates\recipes_table.html:64 +msgid "Last cooked" +msgstr "Cucinato ultimamente" + #: .\cookbook\templates\meal_plan_entry.html:50 msgid "Never cooked before." msgstr "Mai cucinato." @@ -1651,55 +1541,56 @@ msgid "" "action." msgstr "" "Non hai i permessi necessari per visualizzare questa pagina o completare " -"l'operazione!" +"l'operazione." #: .\cookbook\templates\no_space_info.html:6 #: .\cookbook\templates\no_space_info.html:13 msgid "No Space" -msgstr "Nessuno spazio" +msgstr "Nessuna istanza" #: .\cookbook\templates\no_space_info.html:17 msgid "" "Recipes, foods, shopping lists and more are organized in spaces of one or " "more people." msgstr "" +"Ricette, cibi, liste della spesa e altro sono organizzati in istanze per una " +"o più persone." #: .\cookbook\templates\no_space_info.html:18 msgid "" "You can either be invited into an existing space or create your own one." -msgstr "" +msgstr "Puoi essere invitato in una istanza già esistente o crearne una nuova." #: .\cookbook\templates\no_space_info.html:31 #: .\cookbook\templates\no_space_info.html:40 -#, fuzzy -#| msgid "No Space" msgid "Join Space" -msgstr "Nessuno spazio" +msgstr "Partecipa all'istanza" #: .\cookbook\templates\no_space_info.html:34 msgid "Join an existing space." -msgstr "" +msgstr "Entra in una istanza già esistente." #: .\cookbook\templates\no_space_info.html:35 msgid "" "To join an existing space either enter your invite token or click on the " "invite link the space owner send you." msgstr "" +"Per entrare in una istanza già esistente, inserisci il token di invito o " +"clicca sul link di invito che l'amministratore ti ha mandato." #: .\cookbook\templates\no_space_info.html:48 #: .\cookbook\templates\no_space_info.html:56 -#, fuzzy -#| msgid "Create User" msgid "Create Space" -msgstr "Crea utente" +msgstr "Crea Istanza" #: .\cookbook\templates\no_space_info.html:51 msgid "Create your own recipe space." -msgstr "" +msgstr "Crea una istanza per le tue ricette." #: .\cookbook\templates\no_space_info.html:52 msgid "Start your own recipe space and invite other users to it." msgstr "" +"Apri la tua istanza personale di ricette e invita altri utenti a usarlo." #: .\cookbook\templates\offline.html:6 msgid "Offline" @@ -1723,8 +1614,12 @@ msgstr "" msgid "Comments" msgstr "Commenti" +#: .\cookbook\templates\recipe_view.html:26 +msgid "by" +msgstr "di" + #: .\cookbook\templates\recipe_view.html:44 .\cookbook\views\delete.py:118 -#: .\cookbook\views\edit.py:179 +#: .\cookbook\views\edit.py:177 msgid "Comment" msgstr "Commento" @@ -1750,64 +1645,233 @@ msgstr "Esterna" #: .\cookbook\templates\recipes_table.html:86 msgid "Log Cooking" -msgstr "Registo ricette cucinate" +msgstr "Registro ricette cucinate" #: .\cookbook\templates\rest_framework\api.html:5 msgid "Recipe Home" msgstr "Pagina iniziale ricette" -#: .\cookbook\templates\settings.html:25 +#: .\cookbook\templates\search_info.html:5 +#: .\cookbook\templates\search_info.html:9 +#: .\cookbook\templates\settings.html:157 +#, fuzzy +#| msgid "Search String" +msgid "Search Settings" +msgstr "Stringa di Ricerca" + +#: .\cookbook\templates\search_info.html:10 +msgid "" +"\n" +" Creating the best search experience is complicated and weighs " +"heavily on your personal configuration. \n" +" Changing any of the search settings can have significant impact on " +"the speed and quality of the results.\n" +" Search Methods, Trigrams and Full Text Search configurations are " +"only available if you are using Postgres for your database.\n" +" " +msgstr "" +"\n" +" Creare la migliore esperienza di ricerca è complicato e pesa molto " +"sulla tua configurazione. \n" +" Cambiare una delle opzioni di ricerca può avere impatto " +"significativo sulla velocità e qualità dei risultati.\n" +" Metodi di ricerca, Trigrams e ricerca Full Text sono disponibili " +"solo se stati usando un database Postgres.\n" +" " + +#: .\cookbook\templates\search_info.html:19 +#, fuzzy +#| msgid "Search" +msgid "Search Methods" +msgstr "Cerca" + +#: .\cookbook\templates\search_info.html:23 +msgid "" +" \n" +" Full text searches attempt to normalize the words provided to " +"match common variants. For example: 'forked', 'forking', 'forks' will all " +"normalize to 'fork'.\n" +" There are several methods available, described below, that will " +"control how the search behavior should react when multiple words are " +"searched.\n" +" Full technical details on how these operate can be viewed on Postgresql's website.\n" +" " +msgstr "" + +#: .\cookbook\templates\search_info.html:29 +msgid "" +" \n" +" Simple searches ignore punctuation and common words such as " +"'the', 'a', 'and'. And will treat seperate words as required.\n" +" Searching for 'apple or flour' will return any recipe that " +"includes both 'apple' and 'flour' anywhere in the fields that have been " +"selected for a full text search.\n" +" " +msgstr "" + +#: .\cookbook\templates\search_info.html:34 +msgid "" +" \n" +" Phrase searches ignore punctuation, but will search for all of " +"the words in the exact order provided.\n" +" Searching for 'apple or flour' will only return a recipe that " +"includes the exact phrase 'apple or flour' in any of the fields that have " +"been selected for a full text search.\n" +" " +msgstr "" + +#: .\cookbook\templates\search_info.html:39 +msgid "" +" \n" +" Web searches simulate functionality found on many web search " +"sites supporting special syntax.\n" +" Placing quotes around several words will convert those words " +"into a phrase.\n" +" 'or' is recongized as searching for the word (or phrase) " +"immediately before 'or' OR the word (or phrase) directly after.\n" +" '-' is recognized as searching for recipes that do not include " +"the word (or phrase) that comes immediately after. \n" +" For example searching for 'apple pie' or cherry -butter will " +"return any recipe that includes the phrase 'apple pie' or the word " +"'cherry' \n" +" in any field included in the full text search but exclude any " +"recipe that has the word 'butter' in any field included.\n" +" " +msgstr "" + +#: .\cookbook\templates\search_info.html:48 +msgid "" +" \n" +" Raw search is similar to Web except will take puncuation " +"operators such as '|', '&' and '()'\n" +" " +msgstr "" + +#: .\cookbook\templates\search_info.html:59 +msgid "" +" \n" +" Another approach to searching that also requires Postgresql is " +"fuzzy search or trigram similarity. A trigram is a group of three " +"consecutive characters.\n" +" For example searching for 'apple' will create x trigrams 'app', " +"'ppl', 'ple' and will create a score of how closely words match the " +"generated trigrams.\n" +" One benefit of searching trigams is that a search for 'sandwich' " +"will find mispelled words such as 'sandwhich' that would be missed by other " +"methods.\n" +" " +msgstr "" + +#: .\cookbook\templates\search_info.html:69 +#, fuzzy +#| msgid "Search Recipe" +msgid "Search Fields" +msgstr "Cerca Ricetta" + +#: .\cookbook\templates\search_info.html:73 +msgid "" +" \n" +" Unaccent is a special case in that it enables searching a field " +"'unaccented' for each search style attempting to ignore accented values. \n" +" For example when you enable unaccent for 'Name' any search " +"(starts with, contains, trigram) will attempt the search ignoring accented " +"characters.\n" +" \n" +" For the other options, you can enable search on any or all " +"fields and they will be combined together with an assumed 'OR'.\n" +" For example enabling 'Name' for Starts With, 'Name' and " +"'Description' for Partial Match and 'Ingredients' and 'Keywords' for Full " +"Search\n" +" and searching for 'apple' will generate a search that will " +"return recipes that have:\n" +" - A recipe name that starts with 'apple'\n" +" - OR a recipe name that contains 'apple'\n" +" - OR a recipe description that contains 'apple'\n" +" - OR a recipe that will have a full text search match ('apple' " +"or 'apples') in ingredients\n" +" - OR a recipe that will have a full text search match in " +"Keywords\n" +"\n" +" Combining too many fields in too many types of search can have a " +"negative impact on performance, create duplicate results or return " +"unexpected results.\n" +" For example, enabling fuzzy search or partial matches will " +"interfere with web search methods. \n" +" Searching for 'apple -pie' with fuzzy search and full text " +"search will return the recipe Apple Pie. Though it is not included in the " +"full text results, it does match the trigram results.\n" +" " +msgstr "" + +#: .\cookbook\templates\search_info.html:95 +#, fuzzy +#| msgid "Search" +msgid "Search Index" +msgstr "Cerca" + +#: .\cookbook\templates\search_info.html:99 +msgid "" +" \n" +" Trigram search and Full Text Search both rely on database " +"indexes to perform effectively. \n" +" You can rebuild the indexes on all fields in the Admin page for " +"Recipes and selecting all recipes and running 'rebuild index for selected " +"recipes'\n" +" You can also rebuild indexes at the command line by executing " +"the management command 'python manage.py rebuildindex'\n" +" " +msgstr "" + +#: .\cookbook\templates\settings.html:27 msgid "Account" msgstr "Account" -#: .\cookbook\templates\settings.html:29 -msgid "Preferences" -msgstr "" - #: .\cookbook\templates\settings.html:33 -#, fuzzy -#| msgid "Settings" +msgid "Preferences" +msgstr "Preferenze" + +#: .\cookbook\templates\settings.html:39 msgid "API-Settings" -msgstr "Impostazioni" +msgstr "Impostazioni API" -#: .\cookbook\templates\settings.html:41 +#: .\cookbook\templates\settings.html:45 #, fuzzy -#| msgid "Settings" +#| msgid "Search String" +msgid "Search-Settings" +msgstr "Stringa di Ricerca" + +#: .\cookbook\templates\settings.html:53 msgid "Name Settings" -msgstr "Impostazioni" +msgstr "Impostazioni Nome" -#: .\cookbook\templates\settings.html:49 -#, fuzzy -#| msgid "Account Connections" +#: .\cookbook\templates\settings.html:61 msgid "Account Settings" -msgstr "Collegamenti dell'account" +msgstr "Impostazioni Account" -#: .\cookbook\templates\settings.html:51 -#, fuzzy -#| msgid "Settings" +#: .\cookbook\templates\settings.html:63 msgid "Emails" -msgstr "Impostazioni" - -#: .\cookbook\templates\settings.html:54 -#: .\cookbook\templates\socialaccount\connections.html:11 -#, fuzzy -#| msgid "Social Login" -msgid "Social" -msgstr "Login con social network" +msgstr "Email" #: .\cookbook\templates\settings.html:66 +#: .\cookbook\templates\socialaccount\connections.html:11 +msgid "Social" +msgstr "Social" + +#: .\cookbook\templates\settings.html:78 msgid "Language" msgstr "Lingua" -#: .\cookbook\templates\settings.html:96 +#: .\cookbook\templates\settings.html:108 msgid "Style" msgstr "Stile" -#: .\cookbook\templates\settings.html:116 +#: .\cookbook\templates\settings.html:128 msgid "API Token" msgstr "Token API" -#: .\cookbook\templates\settings.html:117 +#: .\cookbook\templates\settings.html:129 msgid "" "You can use both basic authentication and token based authentication to " "access the REST API." @@ -1815,7 +1879,7 @@ msgstr "" "Per accedere alle API REST puoi usare sia l'autenticazione base sia quella " "tramite token." -#: .\cookbook\templates\settings.html:134 +#: .\cookbook\templates\settings.html:146 msgid "" "Use the token as an Authorization header prefixed by the word token as shown " "in the following examples:" @@ -1823,7 +1887,7 @@ msgstr "" "Usa il token come header Authorization preceduto dalla parola Token come " "negli esempi seguenti:" -#: .\cookbook\templates\settings.html:136 +#: .\cookbook\templates\settings.html:148 msgid "or" msgstr "o" @@ -1865,6 +1929,23 @@ msgstr "Aggiungi voce" msgid "Amount" msgstr "Quantità" +#: .\cookbook\templates\shopping_list.html:187 +msgid "Select Unit" +msgstr "Seleziona unità di misura" + +#: .\cookbook\templates\shopping_list.html:189 +#: .\cookbook\templates\shopping_list.html:211 +#: .\cookbook\templates\shopping_list.html:241 +#: .\cookbook\templates\shopping_list.html:265 +#: .\cookbook\templates\url_import.html:495 +#: .\cookbook\templates\url_import.html:527 +msgid "Select" +msgstr "Seleziona" + +#: .\cookbook\templates\shopping_list.html:209 +msgid "Select Food" +msgstr "Seleziona alimento" + #: .\cookbook\templates\shopping_list.html:240 msgid "Select Supermarket" msgstr "Seleziona supermercato" @@ -1911,10 +1992,8 @@ msgid "Add a 3rd Party Account" msgstr "Aggiungi un account di terze parti" #: .\cookbook\templates\socialaccount\signup.html:5 -#, fuzzy -#| msgid "Sign In" msgid "Signup" -msgstr "Accedi" +msgstr "Iscriviti" #: .\cookbook\templates\socialaccount\signup.html:10 #, python-format @@ -1923,6 +2002,9 @@ msgid "" " %(provider_name)s account to login to\n" " %(site_name)s. As a final step, please complete the following form:" msgstr "" +"Stai per usare il tuo:\n" +" Account %(provider_name)s per fare l'accesso a\n" +" %(site_name)s. Per finire, completa il modulo qui sotto:" #: .\cookbook\templates\socialaccount\snippets\provider_list.html:23 #: .\cookbook\templates\socialaccount\snippets\provider_list.html:31 @@ -1938,22 +2020,16 @@ msgstr "" #: .\cookbook\templates\socialaccount\snippets\provider_list.html:111 #: .\cookbook\templates\socialaccount\snippets\provider_list.html:119 #: .\cookbook\templates\socialaccount\snippets\provider_list.html:127 -#, fuzzy -#| msgid "Sign In" msgid "Sign in using" -msgstr "Accedi" +msgstr "Accedi usando" #: .\cookbook\templates\space.html:23 -#, fuzzy -#| msgid "No Space" msgid "Space:" -msgstr "Nessuno spazio" +msgstr "Istanza:" #: .\cookbook\templates\space.html:24 -#, fuzzy -#| msgid "Description" msgid "Manage Subscription" -msgstr "Descrizione" +msgstr "Gestisci iscrizione" #: .\cookbook\templates\space.html:32 .\cookbook\templates\stats.html:19 msgid "Number of objects" @@ -1971,70 +2047,56 @@ msgstr "Statistiche degli oggetti" msgid "Recipes without Keywords" msgstr "Ricette senza parole chiave" -#: .\cookbook\templates\space.html:58 .\cookbook\templates\stats.html:43 -msgid "External Recipes" -msgstr "Ricette esterne" - #: .\cookbook\templates\space.html:60 .\cookbook\templates\stats.html:45 msgid "Internal Recipes" msgstr "Ricette interne" #: .\cookbook\templates\space.html:73 msgid "Members" -msgstr "" +msgstr "Membri" #: .\cookbook\templates\space.html:77 -#, fuzzy -#| msgid "Invite Links" msgid "Invite User" -msgstr "Link di invito" +msgstr "Invita utente" #: .\cookbook\templates\space.html:88 msgid "User" -msgstr "" +msgstr "Utente" #: .\cookbook\templates\space.html:89 msgid "Groups" -msgstr "" +msgstr "Gruppi" #: .\cookbook\templates\space.html:105 -#, fuzzy -#| msgid "Admin" msgid "admin" -msgstr "Amministratore" +msgstr "admin" #: .\cookbook\templates\space.html:106 msgid "user" -msgstr "" +msgstr "utente" #: .\cookbook\templates\space.html:107 msgid "guest" -msgstr "" +msgstr "ospite" #: .\cookbook\templates\space.html:108 -#, fuzzy -#| msgid "Remove" msgid "remove" -msgstr "Rimuovi" +msgstr "rimuovi" #: .\cookbook\templates\space.html:112 msgid "Update" -msgstr "" +msgstr "Aggiorna" #: .\cookbook\templates\space.html:116 -#, fuzzy -#| msgid "You cannot edit this storage!" msgid "You cannot edit yourself." -msgstr "Non puoi modificare questo backend!" +msgstr "Non puoi modificare te stesso." #: .\cookbook\templates\space.html:123 -#, fuzzy -#| msgid "There are no recipes in this book yet." msgid "There are no members in your space yet!" -msgstr "Non ci sono ancora ricette in questo libro." +msgstr "Non ci sono ancora ricette in questa istanza!" #: .\cookbook\templates\space.html:130 .\cookbook\templates\system.html:21 -#: .\cookbook\views\lists.py:115 +#: .\cookbook\views\lists.py:100 msgid "Invite Links" msgstr "Link di invito" @@ -2042,6 +2104,10 @@ msgstr "Link di invito" msgid "Stats" msgstr "Statistiche" +#: .\cookbook\templates\stats.html:10 +msgid "Statistics" +msgstr "Statistiche" + #: .\cookbook\templates\system.html:22 msgid "Show Links" msgstr "Mostra link" @@ -2169,13 +2235,11 @@ msgstr "Importa da URL" #: .\cookbook\templates\url_import.html:31 msgid "Drag me to your bookmarks to import recipes from anywhere" -msgstr "" +msgstr "Spostami nei tuoi segnalibri per importare facilmente le ricette" #: .\cookbook\templates\url_import.html:32 -#, fuzzy -#| msgid "Bookmark saved!" msgid "Bookmark Me!" -msgstr "Preferito salvato!" +msgstr "Salvami nei preferiti!" #: .\cookbook\templates\url_import.html:61 msgid "Enter website URL" @@ -2183,21 +2247,19 @@ msgstr "Inserisci l'indirizzo del sito web" #: .\cookbook\templates\url_import.html:97 msgid "Select recipe files to import or drop them here..." -msgstr "" +msgstr "Seleziona i file delle ricette da importare o spostarli qui..." #: .\cookbook\templates\url_import.html:118 msgid "Paste json or html source here to load recipe." -msgstr "" +msgstr "Incolla qui il codice html o json per caricare una ricetta." #: .\cookbook\templates\url_import.html:146 -#, fuzzy -#| msgid "View Recipe" msgid "Preview Recipe Data" -msgstr "Mostra ricetta" +msgstr "Anteprima dati della ricetta" #: .\cookbook\templates\url_import.html:147 msgid "Drag recipe attributes from the right into the appropriate box below." -msgstr "" +msgstr "Trascina gli attributi della ricetta da destra nella casella in basso." #: .\cookbook\templates\url_import.html:156 #: .\cookbook\templates\url_import.html:173 @@ -2210,82 +2272,83 @@ msgstr "" #: .\cookbook\templates\url_import.html:300 #: .\cookbook\templates\url_import.html:351 msgid "Clear Contents" -msgstr "" +msgstr "Cancella il contenuto" #: .\cookbook\templates\url_import.html:158 msgid "Text dragged here will be appended to the name." -msgstr "" +msgstr "Il testo trascinato qui sarà aggiunto al nome." + +#: .\cookbook\templates\url_import.html:171 +msgid "Description" +msgstr "Descrizione" #: .\cookbook\templates\url_import.html:175 msgid "Text dragged here will be appended to the description." -msgstr "" +msgstr "Il testo trascinato qui sarà aggiunto alla descrizione." #: .\cookbook\templates\url_import.html:192 msgid "Keywords dragged here will be appended to current list" -msgstr "" +msgstr "Le parole chiave trascinate qui saranno aggiunte alla lista corrente" #: .\cookbook\templates\url_import.html:207 msgid "Image" -msgstr "" +msgstr "Immagine" #: .\cookbook\templates\url_import.html:239 -#, fuzzy -#| msgid "Preparation Time" msgid "Prep Time" msgstr "Tempo di preparazione" #: .\cookbook\templates\url_import.html:254 -#, fuzzy -#| msgid "Time" msgid "Cook Time" -msgstr "Tempo" +msgstr "Tempo di cottura" #: .\cookbook\templates\url_import.html:275 msgid "Ingredients dragged here will be appended to current list." -msgstr "" +msgstr "Gli ingredienti trascinati qui saranno aggiunti alla lista corrente." + +#: .\cookbook\templates\url_import.html:297 +#: .\cookbook\templates\url_import.html:567 +msgid "Instructions" +msgstr "Istruzioni" #: .\cookbook\templates\url_import.html:302 msgid "" "Recipe instructions dragged here will be appended to current instructions." msgstr "" +"Le istruzioni per la ricetta trascinate qui saranno aggiunte alle istruzioni " +"correnti." #: .\cookbook\templates\url_import.html:325 -#, fuzzy -#| msgid "Discovered Recipes" msgid "Discovered Attributes" -msgstr "Ricette trovate" +msgstr "Attributi trovati" #: .\cookbook\templates\url_import.html:327 msgid "" "Drag recipe attributes from below into the appropriate box on the left. " "Click any node to display its full properties." msgstr "" +"Trascina gli attributi delle ricette dal basso nella casella sulla sinistra. " +"Clicca su qualsiasi nodo per mostrare le sue proprietà complete." #: .\cookbook\templates\url_import.html:344 -#, fuzzy -#| msgid "Show as header" msgid "Show Blank Field" -msgstr "Mostra come intestazione" +msgstr "Mostra campo vuoto" #: .\cookbook\templates\url_import.html:349 msgid "Blank Field" -msgstr "" +msgstr "Campo vuoto" #: .\cookbook\templates\url_import.html:353 msgid "Items dragged to Blank Field will be appended." -msgstr "" +msgstr "Gli elementi trascinati nel campo vuoto saranno ignorati." #: .\cookbook\templates\url_import.html:400 -#, fuzzy -#| msgid "Delete Step" msgid "Delete Text" -msgstr "Elimina Step" +msgstr "Elimina testo" #: .\cookbook\templates\url_import.html:413 -#, fuzzy -#| msgid "Delete Recipe" msgid "Delete image" -msgstr "Elimina Ricetta" +msgstr "Elimina immagine" #: .\cookbook\templates\url_import.html:429 msgid "Recipe Name" @@ -2301,6 +2364,10 @@ msgstr "Descrizione ricetta" msgid "Select one" msgstr "Seleziona un elemento" +#: .\cookbook\templates\url_import.html:583 +msgid "Add Keyword" +msgstr "Aggiungi parole chiave" + #: .\cookbook\templates\url_import.html:596 msgid "All Keywords" msgstr "Tutte le parole chiave" @@ -2311,7 +2378,7 @@ msgstr "Importa tutte le parole chiave, non solo quelle che già esistono." #: .\cookbook\templates\url_import.html:626 msgid "Information" -msgstr "Info" +msgstr "Informazioni" #: .\cookbook\templates\url_import.html:628 msgid "" @@ -2323,11 +2390,13 @@ msgid "" "data feel free to post an example in the\n" " github issues." msgstr "" -"Possono essere importati solo i siti che contengono informazioni Id+json o " +" Possono essere importati solo i siti che contengono informazioni Id+json o " "microdata.\n" -"I maggiori siti di ricette di solito sono supportati.\n" -"Se questo sito non può essere importato ma credi che abbia una qualche tipo " -"di struttura dati, puoi inviare un esempio nella sezione Issues su GitHub." +" I maggiori siti di ricette di solito " +"sono supportati. Se questo sito non può essere importato ma \n" +" credi che abbia una qualche tipo di " +"struttura dati, puoi inviare un esempio nella sezione Issues \n" +" su GitHub." #: .\cookbook\templates\url_import.html:636 msgid "Google ld+json Info" @@ -2341,37 +2410,97 @@ msgstr "Issues (Problemi aperti) su GitHub" msgid "Recipe Markup Specification" msgstr "Specifica di Markup della ricetta" -#: .\cookbook\views\api.py:79 +#: .\cookbook\views\api.py:82 .\cookbook\views\api.py:131 msgid "Parameter updated_at incorrectly formatted" msgstr "Il parametro updated_at non è formattato correttamente" -#: .\cookbook\views\api.py:580 .\cookbook\views\views.py:303 +#: .\cookbook\views\api.py:151 +#, python-brace-format +msgid "No {self.basename} with id {pk} exists" +msgstr "Non esiste nessun {self.basename} con id {pk}" + +#: .\cookbook\views\api.py:155 .\cookbook\views\edit.py:300 +#: .\cookbook\views\edit.py:316 +msgid "Cannot merge with the same object!" +msgstr "Non è possibile unirlo con lo stesso oggetto!" + +#: .\cookbook\views\api.py:162 +#, python-brace-format +msgid "No {self.basename} with id {target} exists" +msgstr "Non esiste nessun {self.basename} con id {target}" + +#: .\cookbook\views\api.py:167 +#, fuzzy +#| msgid "Cannot merge with the same object!" +msgid "Cannot merge with child object!" +msgstr "Non è possibile unirlo con lo stesso oggetto!" + +#: .\cookbook\views\api.py:195 +#, python-brace-format +msgid "{source.name} was merged successfully with {target.name}" +msgstr "{source.name} è stato unito con successo a {target.name}" + +#: .\cookbook\views\api.py:199 +#, python-brace-format +msgid "An error occurred attempting to merge {source.name} with {target.name}" +msgstr "" +"Si è verificato un errore durante l'unione di {source.name} con {target.name}" + +#: .\cookbook\views\api.py:239 +#, python-brace-format +msgid "No {self.basename} with id {child} exists" +msgstr "Non esiste nessun {self.basename} con id {child}" + +#: .\cookbook\views\api.py:248 +#, python-brace-format +msgid "{child.name} was moved successfully to the root." +msgstr "{child.name} è stato spostato con successo alla radice." + +#: .\cookbook\views\api.py:251 .\cookbook\views\api.py:269 +msgid "An error occurred attempting to move " +msgstr "Si è verificato un errore durante lo spostamento " + +#: .\cookbook\views\api.py:254 +msgid "Cannot move an object to itself!" +msgstr "Non è possibile muovere un oggetto a sé stesso!" + +#: .\cookbook\views\api.py:260 +#, python-brace-format +msgid "No {self.basename} with id {parent} exists" +msgstr "Non esiste nessun {self.basename} con id {parent}" + +#: .\cookbook\views\api.py:266 +#, python-brace-format +msgid "{child.name} was moved successfully to parent {parent.name}" +msgstr "{child.name} è stato spostato con successo al primario {parent.name}" + +#: .\cookbook\views\api.py:704 .\cookbook\views\views.py:289 msgid "This feature is not available in the demo version!" msgstr "Questa funzione non è disponibile nella versione demo!" -#: .\cookbook\views\api.py:603 +#: .\cookbook\views\api.py:727 msgid "Sync successful!" msgstr "Sincronizzazione completata con successo!" -#: .\cookbook\views\api.py:608 +#: .\cookbook\views\api.py:732 msgid "Error synchronizing with Storage" msgstr "Errore di sincronizzazione con questo backend" -#: .\cookbook\views\api.py:686 +#: .\cookbook\views\api.py:810 msgid "Nothing to do." -msgstr "" +msgstr "Nulla da fare." -#: .\cookbook\views\api.py:701 +#: .\cookbook\views\api.py:825 msgid "The requested site provided malformed data and cannot be read." msgstr "" "Il sito richiesto ha fornito dati in formato non corretto e non può essere " "letto." -#: .\cookbook\views\api.py:708 +#: .\cookbook\views\api.py:832 msgid "The requested page could not be found." msgstr "La pagina richiesta non è stata trovata." -#: .\cookbook\views\api.py:717 +#: .\cookbook\views\api.py:841 msgid "" "The requested site does not provide any recognized data format to import the " "recipe from." @@ -2379,27 +2508,25 @@ msgstr "" "Il sito richiesto non fornisce un formato di dati riconosciuto da cui " "importare la ricetta." -#: .\cookbook\views\api.py:731 -#, fuzzy -#| msgid "The requested page could not be found." +#: .\cookbook\views\api.py:855 msgid "No useable data could be found." -msgstr "La pagina richiesta non è stata trovata." +msgstr "Nessuna informazione utilizzabile è stata trovata." -#: .\cookbook\views\api.py:747 +#: .\cookbook\views\api.py:871 msgid "I couldn't find anything to do." -msgstr "" +msgstr "Non è stato trovato nulla da fare." #: .\cookbook\views\data.py:31 .\cookbook\views\data.py:122 #: .\cookbook\views\edit.py:50 .\cookbook\views\import_export.py:67 #: .\cookbook\views\new.py:32 msgid "You have reached the maximum number of recipes for your space." -msgstr "" +msgstr "Hai raggiunto il numero massimo di ricette nella tua istanza." #: .\cookbook\views\data.py:35 .\cookbook\views\data.py:126 #: .\cookbook\views\edit.py:54 .\cookbook\views\import_export.py:71 #: .\cookbook\views\new.py:36 msgid "You have more users than allowed in your space." -msgstr "" +msgstr "Hai più utenti di quanti permessi nella tua istanza." #: .\cookbook\views\data.py:104 #, python-format @@ -2413,8 +2540,8 @@ msgstr[1] "" msgid "Monitor" msgstr "Monitoraggio" -#: .\cookbook\views\delete.py:96 .\cookbook\views\lists.py:102 -#: .\cookbook\views\new.py:98 +#: .\cookbook\views\delete.py:96 .\cookbook\views\lists.py:86 +#: .\cookbook\views\new.py:97 msgid "Storage Backend" msgstr "Backend di archiviazione" @@ -2425,8 +2552,8 @@ msgstr "" "Non è possibile eliminare questo backend di archiviazione perchè è usato in " "almeno un monitoraggio." -#: .\cookbook\views\delete.py:129 .\cookbook\views\edit.py:213 -#: .\cookbook\views\new.py:156 +#: .\cookbook\views\delete.py:129 .\cookbook\views\edit.py:211 +#: .\cookbook\views\new.py:155 msgid "Recipe Book" msgstr "Libro delle ricette" @@ -2434,49 +2561,41 @@ msgstr "Libro delle ricette" msgid "Bookmarks" msgstr "Preferiti" -#: .\cookbook\views\delete.py:163 .\cookbook\views\new.py:252 +#: .\cookbook\views\delete.py:163 .\cookbook\views\new.py:251 msgid "Invite Link" msgstr "Link di invito" -#: .\cookbook\views\edit.py:119 -msgid "Food" -msgstr "Alimento" - -#: .\cookbook\views\edit.py:128 +#: .\cookbook\views\edit.py:126 msgid "You cannot edit this storage!" msgstr "Non puoi modificare questo backend!" -#: .\cookbook\views\edit.py:148 +#: .\cookbook\views\edit.py:146 msgid "Storage saved!" msgstr "Backend salvato!" -#: .\cookbook\views\edit.py:154 +#: .\cookbook\views\edit.py:152 msgid "There was an error updating this storage backend!" msgstr "" "Si è verificato un errore durante l'aggiornamento di questo backend di " "archiviazione!" -#: .\cookbook\views\edit.py:165 +#: .\cookbook\views\edit.py:163 msgid "Storage" msgstr "Archiviazione" -#: .\cookbook\views\edit.py:261 +#: .\cookbook\views\edit.py:259 msgid "Changes saved!" msgstr "Modifiche salvate!" -#: .\cookbook\views\edit.py:265 +#: .\cookbook\views\edit.py:263 msgid "Error saving changes!" msgstr "Si è verificato un errore durante il salvataggio delle modifiche!" -#: .\cookbook\views\edit.py:299 +#: .\cookbook\views\edit.py:298 msgid "Units merged!" msgstr "Le unità sono state unite!" -#: .\cookbook\views\edit.py:301 .\cookbook\views\edit.py:317 -msgid "Cannot merge with the same object!" -msgstr "Non è possibile unirlo con lo stesso oggetto!" - -#: .\cookbook\views\edit.py:315 +#: .\cookbook\views\edit.py:314 msgid "Foods merged!" msgstr "Gli alimenti sono stati uniti!" @@ -2488,89 +2607,133 @@ msgstr "Questo provider non permette l'importazione" msgid "Exporting is not implemented for this provider" msgstr "Questo provider non permette l'esportazione" -#: .\cookbook\views\lists.py:40 +#: .\cookbook\views\lists.py:26 msgid "Import Log" msgstr "Registro importazioni" -#: .\cookbook\views\lists.py:53 +#: .\cookbook\views\lists.py:39 msgid "Discovery" msgstr "Trovate" -#: .\cookbook\views\lists.py:85 +#: .\cookbook\views\lists.py:69 msgid "Shopping Lists" msgstr "Liste della spesa" -#: .\cookbook\views\new.py:123 +#: .\cookbook\views\lists.py:129 +#, fuzzy +#| msgid "Food" +msgid "Foods" +msgstr "Alimento" + +#: .\cookbook\views\lists.py:163 +#, fuzzy +#| msgid "Supermarket" +msgid "Supermarkets" +msgstr "Supermercato" + +#: .\cookbook\views\lists.py:179 +#, fuzzy +#| msgid "Shopping Recipes" +msgid "Shopping Categories" +msgstr "Ricette per la spesa" + +#: .\cookbook\views\new.py:122 msgid "Imported new recipe!" msgstr "La nuova ricetta è stata importata!" -#: .\cookbook\views\new.py:126 +#: .\cookbook\views\new.py:125 msgid "There was an error importing this recipe!" msgstr "Si è verificato un errore durante l'importazione di questa ricetta!" -#: .\cookbook\views\new.py:226 +#: .\cookbook\views\new.py:225 msgid "Hello" -msgstr "" +msgstr "Ciao" + +#: .\cookbook\views\new.py:225 +msgid "You have been invited by " +msgstr "Sei stato invitato da " #: .\cookbook\views\new.py:226 -msgid "You have been invited by " -msgstr "" +msgid " to join their Tandoor Recipes space " +msgstr " per entrare nella sua istanza di Tandoor Recipes " #: .\cookbook\views\new.py:227 -msgid " to join their Tandoor Recipes space " -msgstr "" +msgid "Click the following link to activate your account: " +msgstr "Clicca il link qui di seguito per attivare il tuo account: " #: .\cookbook\views\new.py:228 -msgid "Click the following link to activate your account: " -msgstr "" - -#: .\cookbook\views\new.py:229 msgid "" "If the link does not work use the following code to manually join the space: " msgstr "" +"Se il link non funziona, usa il seguente codice per entrare manualmente " +"nell'istanza: " + +#: .\cookbook\views\new.py:229 +msgid "The invitation is valid until " +msgstr "L'invito è valido fino al " #: .\cookbook\views\new.py:230 -msgid "The invitation is valid until " -msgstr "" - -#: .\cookbook\views\new.py:231 msgid "" "Tandoor Recipes is an Open Source recipe manager. Check it out on GitHub " msgstr "" +"Tandoor Recipes è un gestore di ricette Open Source. Dagli una occhiata su " +"GitHub " -#: .\cookbook\views\new.py:234 +#: .\cookbook\views\new.py:233 msgid "Tandoor Recipes Invite" -msgstr "" +msgstr "Invito per Tandoor Recipes" -#: .\cookbook\views\new.py:241 +#: .\cookbook\views\new.py:240 msgid "Invite link successfully send to user." -msgstr "" +msgstr "Link di invito inviato con successo all'utente." -#: .\cookbook\views\new.py:244 +#: .\cookbook\views\new.py:243 msgid "" "You have send to many emails, please share the link manually or wait a few " "hours." msgstr "" +"Hai mandato troppe email, condividi il link manualmente o aspetta qualche " +"ora." -#: .\cookbook\views\new.py:246 +#: .\cookbook\views\new.py:245 msgid "Email to user could not be send, please share link manually." msgstr "" +"Non è stato possibile inviare l'email all'utente, condividi il link " +"manualmente." -#: .\cookbook\views\views.py:129 +#: .\cookbook\views\views.py:128 msgid "" "You have successfully created your own recipe space. Start by adding some " "recipes or invite other people to join you." msgstr "" +"Hai creato la tua istanza personale per le ricette. Inizia aggiungendo " +"qualche ricetta o invita altre persone a unirsi a te." -#: .\cookbook\views\views.py:177 +#: .\cookbook\views\views.py:176 msgid "You do not have the required permissions to perform this action!" msgstr "Non hai i permessi necessari per completare questa operazione!" -#: .\cookbook\views\views.py:188 +#: .\cookbook\views\views.py:187 msgid "Comment saved!" msgstr "Commento salvato!" -#: .\cookbook\views\views.py:395 +#: .\cookbook\views\views.py:351 +msgid "You must select at least one field to search!" +msgstr "Devi selezionare almeno un campo da cercare!" + +#: .\cookbook\views\views.py:354 +msgid "" +"To use this search method you must select at least one full text search " +"field!" +msgstr "" +"Per utilizzare questo metodo di ricerca devi selezionare almeno un campo di " +"ricerca full text!" + +#: .\cookbook\views\views.py:357 +msgid "Fuzzy search is not compatible with this search method!" +msgstr "" + +#: .\cookbook\views\views.py:437 msgid "" "The setup page can only be used to create the first user! If you have " "forgotten your superuser credentials please consult the django documentation " @@ -2578,45 +2741,174 @@ msgid "" msgstr "" "La pagina di configurazione può essere usata solo per creare il primo " "utente! Se hai dimenticato le credenziali del tuo super utente controlla la " -"documentazione di Django per resettare le password. " +"documentazione di Django per resettare le password." -#: .\cookbook\views\views.py:402 +#: .\cookbook\views\views.py:444 msgid "Passwords dont match!" msgstr "Le password non combaciano!" -#: .\cookbook\views\views.py:418 +#: .\cookbook\views\views.py:460 msgid "User has been created, please login!" msgstr "L'utente è stato creato e ora può essere usato per il login!" -#: .\cookbook\views\views.py:434 +#: .\cookbook\views\views.py:476 msgid "Malformed Invite Link supplied!" msgstr "È stato fornito un link di invito non valido!" -#: .\cookbook\views\views.py:441 -#, fuzzy -#| msgid "You are not logged in and therefore cannot view this page!" +#: .\cookbook\views\views.py:483 msgid "You are already member of a space and therefore cannot join this one." -msgstr "Non hai fatto l'accesso e quindi non puoi visualizzare questa pagina!" - -#: .\cookbook\views\views.py:452 -msgid "Successfully joined space." msgstr "" +"Sei già membro di una istanza e quindi non puoi entrare in quest'altra." -#: .\cookbook\views\views.py:458 +#: .\cookbook\views\views.py:494 +msgid "Successfully joined space." +msgstr "Sei entrato a far parte di questa istanza." + +#: .\cookbook\views\views.py:500 msgid "Invite Link not valid or already used!" msgstr "Il link di invito non è valido o è stato già usato!" -#: .\cookbook\views\views.py:522 +#: .\cookbook\views\views.py:564 msgid "" "Reporting share links is not enabled for this instance. Please notify the " "page administrator to report problems." msgstr "" +"La segnalazione dei link di condivisione non è abilitata per questa istanza. " +"Notifica l'amministratore per segnalare i problemi." -#: .\cookbook\views\views.py:528 +#: .\cookbook\views\views.py:570 msgid "" "Recipe sharing link has been disabled! For additional information please " "contact the page administrator." msgstr "" +"Il link per la condivisione delle ricette è stato disabilitato! Per maggiori " +"informazioni contatta l'amministratore." + +#~ msgid "Utensils" +#~ msgstr "Strumenti" + +#~ msgid "Storage Data" +#~ msgstr "Dati e Archiviazione" + +#~ msgid "Storage Backends" +#~ msgstr "Backend Archiviazione" + +#~ msgid "Configure Sync" +#~ msgstr "Configura Sincronizzazione" + +#~ msgid "Discovered Recipes" +#~ msgstr "Ricette trovate" + +#~ msgid "Discovery Log" +#~ msgstr "Registro ricette trovate" + +#~ msgid "Units & Ingredients" +#~ msgstr "Unità di misura & Ingredienti" + +#~ msgid "New Book" +#~ msgstr "Nuovo Libro" + +#~ msgid "Toggle Recipes" +#~ msgstr "Attiva/Disattiva Ricette" + +#~ msgid "There are no recipes in this book yet." +#~ msgstr "Non ci sono ancora ricette in questo libro." + +#~ msgid "Waiting Time" +#~ msgstr "Tempo di cottura" + +#~ msgid "Servings Text" +#~ msgstr "Nome delle porzioni" + +#~ msgid "Select Keywords" +#~ msgstr "Seleziona parole chiave" + +#~ msgid "Nutrition" +#~ msgstr "Nutrienti" + +#~ msgid "Delete Step" +#~ msgstr "Elimina Step" + +#~ msgid "Calories" +#~ msgstr "Calorie" + +#~ msgid "Carbohydrates" +#~ msgstr "Carboidrati" + +#~ msgid "Fats" +#~ msgstr "Grassi" + +#~ msgid "Proteins" +#~ msgstr "Proteine" + +#~ msgid "Step" +#~ msgstr "Step" + +#~ msgid "Show as header" +#~ msgstr "Mostra come intestazione" + +#~ msgid "Hide as header" +#~ msgstr "Nascondi come intestazione" + +#~ msgid "Move Up" +#~ msgstr "Sposta Sopra" + +#~ msgid "Move Down" +#~ msgstr "Sposta Sotto" + +#~ msgid "Step Name" +#~ msgstr "Nome dello Step" + +#~ msgid "Step Type" +#~ msgstr "Tipo dello Step" + +#~ msgid "Step time in Minutes" +#~ msgstr "Tempo dello step in minuti" + +#~ msgid "Select File" +#~ msgstr "Seleziona file" + +#~ msgid "Select Recipe" +#~ msgstr "Seleziona ricetta" + +#~ msgid "Delete Ingredient" +#~ msgstr "Elimina Ingredienti" + +#~ msgid "Make Header" +#~ msgstr "Crea Intestazione" + +#~ msgid "Make Ingredient" +#~ msgstr "Crea Ingrediente" + +#~ msgid "Disable Amount" +#~ msgstr "Disabilita Quantità" + +#~ msgid "Enable Amount" +#~ msgstr "Abilita Quantità" + +#~ msgid "Copy Template Reference" +#~ msgstr "Copia riferimento template" + +#~ msgid "Save & View" +#~ msgstr "Salva & Mostra" + +#~ msgid "Add Step" +#~ msgstr "Aggiungi Step" + +#~ msgid "Add Nutrition" +#~ msgstr "Aggiungi nutrienti" + +#~ msgid "Remove Nutrition" +#~ msgstr "Rimuovi nutrienti" + +#~ msgid "View Recipe" +#~ msgstr "Mostra ricetta" + +#~ msgid "Delete Recipe" +#~ msgstr "Elimina Ricetta" + +#~ msgid "Steps" +#~ msgstr "Step" #, fuzzy #~| msgid "Password Reset" diff --git a/cookbook/locale/lv/LC_MESSAGES/django.mo b/cookbook/locale/lv/LC_MESSAGES/django.mo index 4c4b6926..f3addbf9 100644 Binary files a/cookbook/locale/lv/LC_MESSAGES/django.mo and b/cookbook/locale/lv/LC_MESSAGES/django.mo differ diff --git a/cookbook/locale/lv/LC_MESSAGES/django.po b/cookbook/locale/lv/LC_MESSAGES/django.po index 18dcc251..d41b7c87 100644 --- a/cookbook/locale/lv/LC_MESSAGES/django.po +++ b/cookbook/locale/lv/LC_MESSAGES/django.po @@ -11,7 +11,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-08-12 15:09+0200\n" +"POT-Creation-Date: 2021-09-13 22:40+0200\n" "PO-Revision-Date: 2020-06-02 19:28+0000\n" "Last-Translator: vabene1111 , 2021\n" "Language-Team: Latvian (https://www.transifex.com/django-recipes/" @@ -23,15 +23,14 @@ msgstr "" "Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n != 0 ? 1 : " "2);\n" -#: .\cookbook\filters.py:23 .\cookbook\templates\base.html:98 -#: .\cookbook\templates\forms\edit_internal_recipe.html:269 +#: .\cookbook\filters.py:23 .\cookbook\templates\base.html:125 #: .\cookbook\templates\forms\ingredients.html:34 #: .\cookbook\templates\space.html:43 .\cookbook\templates\stats.html:28 -#: .\cookbook\templates\url_import.html:270 .\cookbook\views\lists.py:67 +#: .\cookbook\templates\url_import.html:270 msgid "Ingredients" msgstr "Sastāvdaļas" -#: .\cookbook\forms.py:49 +#: .\cookbook\forms.py:50 msgid "" "Color of the top navigation bar. Not all colors work with all themes, just " "try them out!" @@ -39,11 +38,11 @@ msgstr "" "Augšējās navigācijas joslas krāsa. Ne visas krāsas darbojas ar visām tēmām, " "vienkārši izmēģiniet tās!" -#: .\cookbook\forms.py:51 +#: .\cookbook\forms.py:52 msgid "Default Unit to be used when inserting a new ingredient into a recipe." msgstr "Noklusējuma vienība, ko izmantot, ievietojot receptē jaunu sastāvdaļu." -#: .\cookbook\forms.py:53 +#: .\cookbook\forms.py:54 msgid "" "Enables support for fractions in ingredient amounts (e.g. convert decimals " "to fractions automatically)" @@ -51,7 +50,7 @@ msgstr "" "Iespējot daļskaitļus sastāvdaļu daudzumos (piemēram, decimāldaļas " "automātiski pārveidot par daļskaitļiem)" -#: .\cookbook\forms.py:56 +#: .\cookbook\forms.py:57 msgid "" "Users with whom newly created meal plan/shopping list entries should be " "shared by default." @@ -59,20 +58,20 @@ msgstr "" "Lietotāji, ar kuriem jaunizveidotie maltīšu saraksti/iepirkumu saraksti tiks " "kopīgoti pēc noklusējuma." -#: .\cookbook\forms.py:58 +#: .\cookbook\forms.py:59 msgid "Show recently viewed recipes on search page." msgstr "Parādīt nesen skatītās receptes meklēšanas lapā." -#: .\cookbook\forms.py:59 +#: .\cookbook\forms.py:60 msgid "Number of decimals to round ingredients." msgstr "Ciparu skaits pēc komata decimāldaļām sastāvdaļās." -#: .\cookbook\forms.py:60 +#: .\cookbook\forms.py:61 msgid "If you want to be able to create and see comments underneath recipes." msgstr "" "Ja vēlaties, lai jūs varētu izveidot un redzēt komentārus zem receptēm." -#: .\cookbook\forms.py:62 +#: .\cookbook\forms.py:63 msgid "" "Setting to 0 will disable auto sync. When viewing a shopping list the list " "is updated every set seconds to sync changes someone else might have made. " @@ -86,11 +85,11 @@ msgstr "" "Ja tas ir zemāks par instances ierobežojumu, tas tiek atiestatīts, " "saglabājot." -#: .\cookbook\forms.py:65 +#: .\cookbook\forms.py:66 msgid "Makes the navbar stick to the top of the page." msgstr "" -#: .\cookbook\forms.py:81 +#: .\cookbook\forms.py:82 msgid "" "Both fields are optional. If none are given the username will be displayed " "instead" @@ -98,92 +97,89 @@ msgstr "" "Abi lauki nav obligāti. Ja neviens nav norādīts, tā vietā tiks parādīts " "lietotājvārds" -#: .\cookbook\forms.py:102 .\cookbook\forms.py:331 -#: .\cookbook\templates\forms\edit_internal_recipe.html:49 +#: .\cookbook\forms.py:103 .\cookbook\forms.py:334 #: .\cookbook\templates\url_import.html:154 msgid "Name" msgstr "Vārds" -#: .\cookbook\forms.py:103 .\cookbook\forms.py:332 -#: .\cookbook\templates\base.html:108 .\cookbook\templates\base.html:169 -#: .\cookbook\templates\forms\edit_internal_recipe.html:85 +#: .\cookbook\forms.py:104 .\cookbook\forms.py:335 #: .\cookbook\templates\space.html:39 .\cookbook\templates\stats.html:24 #: .\cookbook\templates\url_import.html:188 -#: .\cookbook\templates\url_import.html:573 +#: .\cookbook\templates\url_import.html:573 .\cookbook\views\lists.py:112 msgid "Keywords" msgstr "Atslēgvārdi" -#: .\cookbook\forms.py:104 +#: .\cookbook\forms.py:105 msgid "Preparation time in minutes" msgstr "Pagatavošanas laiks minūtēs" -#: .\cookbook\forms.py:105 +#: .\cookbook\forms.py:106 msgid "Waiting time (cooking/baking) in minutes" msgstr "Gaidīšanas laiks (vārīšana / cepšana) minūtēs" -#: .\cookbook\forms.py:106 .\cookbook\forms.py:333 +#: .\cookbook\forms.py:107 .\cookbook\forms.py:336 msgid "Path" msgstr "Ceļš" -#: .\cookbook\forms.py:107 +#: .\cookbook\forms.py:108 msgid "Storage UID" msgstr "Krātuves UID" -#: .\cookbook\forms.py:133 +#: .\cookbook\forms.py:134 msgid "Default" msgstr "" -#: .\cookbook\forms.py:144 .\cookbook\templates\url_import.html:90 +#: .\cookbook\forms.py:145 .\cookbook\templates\url_import.html:90 msgid "" "To prevent duplicates recipes with the same name as existing ones are " "ignored. Check this box to import everything." msgstr "" -#: .\cookbook\forms.py:164 +#: .\cookbook\forms.py:165 msgid "New Unit" msgstr "Jaunā vienība" -#: .\cookbook\forms.py:165 +#: .\cookbook\forms.py:166 msgid "New unit that other gets replaced by." msgstr "Jauna vienība, ar kuru cits tiek aizstāts." -#: .\cookbook\forms.py:170 +#: .\cookbook\forms.py:171 msgid "Old Unit" msgstr "Vecā vienība" -#: .\cookbook\forms.py:171 +#: .\cookbook\forms.py:172 msgid "Unit that should be replaced." msgstr "Vienība, kas jāaizstāj." -#: .\cookbook\forms.py:187 +#: .\cookbook\forms.py:189 msgid "New Food" msgstr "Jauns ēdiens" -#: .\cookbook\forms.py:188 +#: .\cookbook\forms.py:190 msgid "New food that other gets replaced by." msgstr "Jauns ēdiens, ar kuru citi tiek aizstāti." -#: .\cookbook\forms.py:193 +#: .\cookbook\forms.py:195 msgid "Old Food" msgstr "Vecais ēdiens" -#: .\cookbook\forms.py:194 +#: .\cookbook\forms.py:196 msgid "Food that should be replaced." msgstr "Ēdiens, kas būtu jāaizstāj." -#: .\cookbook\forms.py:212 +#: .\cookbook\forms.py:214 msgid "Add your comment: " msgstr "Pievienot komentāru: " -#: .\cookbook\forms.py:253 +#: .\cookbook\forms.py:256 msgid "Leave empty for dropbox and enter app password for nextcloud." msgstr "Atstājiet tukšu Dropbox un ievadiet lietotnes paroli Nextcloud." -#: .\cookbook\forms.py:260 +#: .\cookbook\forms.py:263 msgid "Leave empty for nextcloud and enter api token for dropbox." msgstr "Atstājiet tukšu Nextcloud un ievadiet API tokenu Dropbox." -#: .\cookbook\forms.py:269 +#: .\cookbook\forms.py:272 msgid "" "Leave empty for dropbox and enter only base url for nextcloud (/remote." "php/webdav/ is added automatically)" @@ -191,26 +187,25 @@ msgstr "" "Atstājiet tukšu Dropbox un ievadiet tikai Nextcloud bāzes URL ( /" "remote.php/webdav/ tiek pievienots automātiski)" -#: .\cookbook\forms.py:307 +#: .\cookbook\forms.py:310 msgid "Search String" msgstr "Meklēšanas virkne" -#: .\cookbook\forms.py:334 +#: .\cookbook\forms.py:337 msgid "File ID" msgstr "Faila ID" -#: .\cookbook\forms.py:370 +#: .\cookbook\forms.py:373 msgid "You must provide at least a recipe or a title." msgstr "Jums jānorāda vismaz recepte vai nosaukums." -#: .\cookbook\forms.py:383 +#: .\cookbook\forms.py:386 msgid "You can list default users to share recipes with in the settings." msgstr "" "Iestatījumos varat uzskaitīt noklusējuma lietotājus, ar kuriem koplietot " "receptes." -#: .\cookbook\forms.py:384 -#: .\cookbook\templates\forms\edit_internal_recipe.html:427 +#: .\cookbook\forms.py:387 msgid "" "You can use markdown to format this field. See the docs here" @@ -218,63 +213,139 @@ msgstr "" "Lai formatētu šo lauku, varat izmantot Markdown. Skatiet dokumentus šeit " -#: .\cookbook\forms.py:409 +#: .\cookbook\forms.py:412 msgid "Maximum number of users for this space reached." msgstr "" -#: .\cookbook\forms.py:415 +#: .\cookbook\forms.py:418 msgid "Email address already taken!" msgstr "" -#: .\cookbook\forms.py:423 +#: .\cookbook\forms.py:426 msgid "" "An email address is not required but if present the invite link will be send " "to the user." msgstr "" -#: .\cookbook\forms.py:438 +#: .\cookbook\forms.py:441 msgid "Name already taken." msgstr "" -#: .\cookbook\forms.py:449 +#: .\cookbook\forms.py:452 msgid "Accept Terms and Privacy" msgstr "" +#: .\cookbook\forms.py:487 +msgid "" +"Select type method of search. Click here for " +"full desciption of choices." +msgstr "" + +#: .\cookbook\forms.py:488 +msgid "" +"Use fuzzy matching on units, keywords and ingredients when editing and " +"importing recipes." +msgstr "" + +#: .\cookbook\forms.py:489 +msgid "" +"Fields to search ignoring accents. Selecting this option can improve or " +"degrade search quality depending on language" +msgstr "" + +#: .\cookbook\forms.py:490 +msgid "" +"Fields to search for partial matches. (e.g. searching for 'Pie' will return " +"'pie' and 'piece' and 'soapie')" +msgstr "" + +#: .\cookbook\forms.py:491 +msgid "" +"Fields to search for beginning of word matches. (e.g. searching for 'sa' " +"will return 'salad' and 'sandwich')" +msgstr "" + +#: .\cookbook\forms.py:492 +msgid "" +"Fields to 'fuzzy' search. (e.g. searching for 'recpie' will find 'recipe'.) " +"Note: this option will conflict with 'web' and 'raw' methods of search." +msgstr "" + +#: .\cookbook\forms.py:493 +msgid "" +"Fields to full text search. Note: 'web', 'phrase', and 'raw' search methods " +"only function with fulltext fields." +msgstr "" + +#: .\cookbook\forms.py:497 +#, fuzzy +#| msgid "Search" +msgid "Search Method" +msgstr "Meklēt" + +#: .\cookbook\forms.py:498 +msgid "Fuzzy Lookups" +msgstr "" + +#: .\cookbook\forms.py:499 +msgid "Ignore Accent" +msgstr "" + +#: .\cookbook\forms.py:500 +msgid "Partial Match" +msgstr "" + +#: .\cookbook\forms.py:501 +msgid "Starts Wtih" +msgstr "" + +#: .\cookbook\forms.py:502 +#, fuzzy +#| msgid "Search" +msgid "Fuzzy Search" +msgstr "Meklēt" + +#: .\cookbook\forms.py:503 +#, fuzzy +#| msgid "Text" +msgid "Full Text" +msgstr "Teskts" + #: .\cookbook\helper\AllAuthCustomAdapter.py:36 msgid "" "In order to prevent spam, the requested email was not send. Please wait a " "few minutes and try again." msgstr "" -#: .\cookbook\helper\permission_helper.py:138 -#: .\cookbook\helper\permission_helper.py:161 .\cookbook\views\views.py:151 +#: .\cookbook\helper\permission_helper.py:136 +#: .\cookbook\helper\permission_helper.py:159 .\cookbook\views\views.py:150 msgid "You are not logged in and therefore cannot view this page!" msgstr "Jūs neesat pieteicies un tāpēc nevarat skatīt šo lapu!" -#: .\cookbook\helper\permission_helper.py:142 -#: .\cookbook\helper\permission_helper.py:148 -#: .\cookbook\helper\permission_helper.py:173 -#: .\cookbook\helper\permission_helper.py:218 -#: .\cookbook\helper\permission_helper.py:232 -#: .\cookbook\helper\permission_helper.py:243 -#: .\cookbook\helper\permission_helper.py:254 .\cookbook\views\data.py:40 -#: .\cookbook\views\views.py:162 .\cookbook\views\views.py:169 -#: .\cookbook\views\views.py:259 +#: .\cookbook\helper\permission_helper.py:140 +#: .\cookbook\helper\permission_helper.py:146 +#: .\cookbook\helper\permission_helper.py:171 +#: .\cookbook\helper\permission_helper.py:216 +#: .\cookbook\helper\permission_helper.py:230 +#: .\cookbook\helper\permission_helper.py:241 +#: .\cookbook\helper\permission_helper.py:252 .\cookbook\views\data.py:40 +#: .\cookbook\views\views.py:161 .\cookbook\views\views.py:168 +#: .\cookbook\views\views.py:245 msgid "You do not have the required permissions to view this page!" msgstr "Jums nav nepieciešamo atļauju, lai apskatītu šo lapu!" -#: .\cookbook\helper\permission_helper.py:166 -#: .\cookbook\helper\permission_helper.py:189 -#: .\cookbook\helper\permission_helper.py:204 +#: .\cookbook\helper\permission_helper.py:164 +#: .\cookbook\helper\permission_helper.py:187 +#: .\cookbook\helper\permission_helper.py:202 msgid "You cannot interact with this object as it is not owned by you!" msgstr "Jūs nevarat mainīt šo objektu, jo tas nepieder jums!" -#: .\cookbook\helper\template_helper.py:60 -#: .\cookbook\helper\template_helper.py:62 +#: .\cookbook\helper\template_helper.py:61 +#: .\cookbook\helper\template_helper.py:63 msgid "Could not parse template code." msgstr "" -#: .\cookbook\integration\integration.py:104 +#: .\cookbook\integration\integration.py:119 #: .\cookbook\templates\import.html:14 .\cookbook\templates\import.html:20 #: .\cookbook\templates\import_response.html:7 #: .\cookbook\templates\test.html:14 .\cookbook\templates\test.html:20 @@ -283,27 +354,27 @@ msgstr "" #: .\cookbook\templates\url_import.html:123 #: .\cookbook\templates\url_import.html:317 #: .\cookbook\templates\url_import.html:604 .\cookbook\views\delete.py:60 -#: .\cookbook\views\edit.py:199 +#: .\cookbook\views\edit.py:197 msgid "Import" msgstr "Importēt" -#: .\cookbook\integration\integration.py:185 +#: .\cookbook\integration\integration.py:200 msgid "" "Importer expected a .zip file. Did you choose the correct importer type for " "your data ?" msgstr "" -#: .\cookbook\integration\integration.py:188 +#: .\cookbook\integration\integration.py:203 msgid "" "An unexpected error occurred during the import. Please make sure you have " "uploaded a valid file." msgstr "" -#: .\cookbook\integration\integration.py:192 +#: .\cookbook\integration\integration.py:208 msgid "The following recipes were ignored because they already existed:" msgstr "" -#: .\cookbook\integration\integration.py:196 +#: .\cookbook\integration\integration.py:212 #, fuzzy, python-format #| msgid "Imported new recipe!" msgid "Imported %s recipes." @@ -326,7 +397,6 @@ msgid "Source" msgstr "" #: .\cookbook\integration\safron.py:23 -#: .\cookbook\templates\forms\edit_internal_recipe.html:79 #: .\cookbook\templates\include\log_cooking.html:16 #: .\cookbook\templates\url_import.html:224 #: .\cookbook\templates\url_import.html:455 @@ -338,7 +408,6 @@ msgid "Waiting time" msgstr "" #: .\cookbook\integration\safron.py:27 -#: .\cookbook\templates\forms\edit_internal_recipe.html:73 msgid "Preparation Time" msgstr "Pagatavošanas laiks" @@ -352,6 +421,22 @@ msgstr "Pavārgrāmata" msgid "Section" msgstr "" +#: .\cookbook\management\commands\rebuildindex.py:14 +msgid "Rebuilds full text search index on Recipe" +msgstr "" + +#: .\cookbook\management\commands\rebuildindex.py:18 +msgid "Only Postgress databases use full text search, no index to rebuild" +msgstr "" + +#: .\cookbook\management\commands\rebuildindex.py:29 +msgid "Recipe index rebuild complete." +msgstr "" + +#: .\cookbook\management\commands\rebuildindex.py:31 +msgid "Recipe index rebuild failed." +msgstr "" + #: .\cookbook\migrations\0047_auto_20200602_1133.py:14 msgid "Breakfast" msgstr "Brokastis" @@ -368,78 +453,91 @@ msgstr "Vakariņas" msgid "Other" msgstr "Cits" -#: .\cookbook\models.py:72 +#: .\cookbook\models.py:144 msgid "" "Maximum file storage for space in MB. 0 for unlimited, -1 to disable file " "upload." msgstr "" -#: .\cookbook\models.py:123 .\cookbook\templates\search.html:7 +#: .\cookbook\models.py:196 .\cookbook\templates\search.html:7 #: .\cookbook\templates\shopping_list.html:52 msgid "Search" msgstr "Meklēt" -#: .\cookbook\models.py:124 .\cookbook\templates\base.html:92 +#: .\cookbook\models.py:197 .\cookbook\templates\base.html:82 #: .\cookbook\templates\meal_plan.html:5 .\cookbook\views\delete.py:152 -#: .\cookbook\views\edit.py:233 .\cookbook\views\new.py:201 +#: .\cookbook\views\edit.py:231 .\cookbook\views\new.py:200 msgid "Meal-Plan" msgstr "Maltīšu plāns" -#: .\cookbook\models.py:125 .\cookbook\templates\base.html:89 +#: .\cookbook\models.py:198 .\cookbook\templates\base.html:90 msgid "Books" msgstr "Grāmatas" -#: .\cookbook\models.py:133 +#: .\cookbook\models.py:206 msgid "Small" msgstr "Mazs" -#: .\cookbook\models.py:133 +#: .\cookbook\models.py:206 msgid "Large" msgstr "Liels" -#: .\cookbook\models.py:133 .\cookbook\templates\generic\new_template.html:6 +#: .\cookbook\models.py:206 .\cookbook\templates\generic\new_template.html:6 #: .\cookbook\templates\generic\new_template.html:14 #: .\cookbook\templates\meal_plan.html:323 msgid "New" msgstr "Jauns" -#: .\cookbook\models.py:338 -#: .\cookbook\templates\forms\edit_internal_recipe.html:202 +#: .\cookbook\models.py:389 +msgid " is part of a recipe step and cannot be deleted" +msgstr "" + +#: .\cookbook\models.py:429 msgid "Text" msgstr "Teskts" -#: .\cookbook\models.py:338 -#: .\cookbook\templates\forms\edit_internal_recipe.html:203 +#: .\cookbook\models.py:429 msgid "Time" msgstr "Laiks" -#: .\cookbook\models.py:338 -#: .\cookbook\templates\forms\edit_internal_recipe.html:204 -#: .\cookbook\templates\forms\edit_internal_recipe.html:219 +#: .\cookbook\models.py:429 #, fuzzy #| msgid "File ID" msgid "File" msgstr "Faila ID" -#: .\cookbook\models.py:338 -#: .\cookbook\templates\forms\edit_internal_recipe.html:205 -#: .\cookbook\templates\forms\edit_internal_recipe.html:241 +#: .\cookbook\models.py:429 #: .\cookbook\templates\include\recipe_open_modal.html:7 #: .\cookbook\templates\meal_plan.html:247 .\cookbook\views\delete.py:28 -#: .\cookbook\views\edit.py:273 .\cookbook\views\new.py:52 +#: .\cookbook\views\edit.py:271 .\cookbook\views\new.py:52 msgid "Recipe" msgstr "Recepte" -#: .\cookbook\serializer.py:109 +#: .\cookbook\models.py:836 .\cookbook\templates\search_info.html:28 +msgid "Simple" +msgstr "" + +#: .\cookbook\models.py:837 .\cookbook\templates\search_info.html:33 +msgid "Phrase" +msgstr "" + +#: .\cookbook\models.py:838 .\cookbook\templates\search_info.html:38 +msgid "Web" +msgstr "" + +#: .\cookbook\models.py:839 .\cookbook\templates\search_info.html:47 +msgid "Raw" +msgstr "" + +#: .\cookbook\serializer.py:112 msgid "File uploads are not enabled for this Space." msgstr "" -#: .\cookbook\serializer.py:117 +#: .\cookbook\serializer.py:125 msgid "You have reached your file upload limit." msgstr "" -#: .\cookbook\tables.py:35 .\cookbook\templates\books.html:36 -#: .\cookbook\templates\generic\edit_template.html:6 +#: .\cookbook\tables.py:35 .\cookbook\templates\generic\edit_template.html:6 #: .\cookbook\templates\generic\edit_template.html:14 #: .\cookbook\templates\meal_plan.html:281 #: .\cookbook\templates\recipes_table.html:82 @@ -448,11 +546,10 @@ msgstr "" msgid "Edit" msgstr "Rediģēt" -#: .\cookbook\tables.py:124 .\cookbook\tables.py:147 -#: .\cookbook\templates\books.html:38 +#: .\cookbook\tables.py:115 .\cookbook\tables.py:138 #: .\cookbook\templates\generic\delete_template.html:5 #: .\cookbook\templates\generic\delete_template.html:13 -#: .\cookbook\templates\generic\edit_template.html:27 +#: .\cookbook\templates\generic\edit_template.html:28 #: .\cookbook\templates\meal_plan.html:277 #: .\cookbook\templates\recipes_table.html:90 msgid "Delete" @@ -482,7 +579,7 @@ msgstr "" #: .\cookbook\templates\account\email.html:12 #: .\cookbook\templates\account\password_change.html:11 #: .\cookbook\templates\account\password_set.html:11 -#: .\cookbook\templates\base.html:154 .\cookbook\templates\settings.html:6 +#: .\cookbook\templates\base.html:204 .\cookbook\templates\settings.html:6 #: .\cookbook\templates\settings.html:17 #: .\cookbook\templates\socialaccount\connections.html:10 msgid "Settings" @@ -562,7 +659,7 @@ msgid "" msgstr "" #: .\cookbook\templates\account\email_confirm.html:22 -#: .\cookbook\templates\generic\delete_template.html:21 +#: .\cookbook\templates\generic\delete_template.html:22 msgid "Confirm" msgstr "Apstiprināt" @@ -574,7 +671,7 @@ msgid "" "request." msgstr "" -#: .\cookbook\templates\account\login.html:8 .\cookbook\templates\base.html:189 +#: .\cookbook\templates\account\login.html:8 .\cookbook\templates\base.html:234 msgid "Login" msgstr "Pieslēgties" @@ -629,7 +726,7 @@ msgstr "Izmaiņas saglabātas!" #: .\cookbook\templates\account\password_change.html:12 #: .\cookbook\templates\account\password_set.html:12 -#: .\cookbook\templates\settings.html:52 +#: .\cookbook\templates\settings.html:64 #, fuzzy #| msgid "Settings" msgid "Password" @@ -715,103 +812,88 @@ msgstr "" msgid "We are sorry, but the sign up is currently closed." msgstr "" -#: .\cookbook\templates\api_info.html:5 .\cookbook\templates\base.html:179 +#: .\cookbook\templates\api_info.html:5 .\cookbook\templates\base.html:222 #: .\cookbook\templates\rest_framework\api.html:11 msgid "API Documentation" msgstr "API dokumentācija" -#: .\cookbook\templates\base.html:85 -msgid "Utensils" -msgstr "Piederumi" - -#: .\cookbook\templates\base.html:95 +#: .\cookbook\templates\base.html:86 msgid "Shopping" msgstr "Iepirkšanās" -#: .\cookbook\templates\base.html:101 +#: .\cookbook\templates\base.html:113 +msgid "Keyword" +msgstr "Atslēgvārds" + +#: .\cookbook\templates\base.html:137 +#: .\cookbook\templates\forms\ingredients.html:24 +#: .\cookbook\templates\space.html:41 .\cookbook\templates\stats.html:26 +#: .\cookbook\views\lists.py:146 +msgid "Units" +msgstr "Vienības" + +#: .\cookbook\templates\base.html:151 #: .\cookbook\templates\shopping_list.html:230 #: .\cookbook\templates\supermarket.html:7 msgid "Supermarket" msgstr "" -#: .\cookbook\templates\base.html:112 .\cookbook\views\delete.py:84 -#: .\cookbook\views\edit.py:102 .\cookbook\views\lists.py:26 -#: .\cookbook\views\new.py:78 -msgid "Keyword" -msgstr "Atslēgvārds" - -#: .\cookbook\templates\base.html:114 +#: .\cookbook\templates\base.html:163 msgid "Batch Edit" msgstr "Rediģēt vairākus" -#: .\cookbook\templates\base.html:119 -msgid "Storage Data" -msgstr "Krātuves dati" - -#: .\cookbook\templates\base.html:123 -msgid "Storage Backends" -msgstr "Krātuves backendi" - -#: .\cookbook\templates\base.html:125 -msgid "Configure Sync" -msgstr "Konfigurēt sinhronizāciju" - -#: .\cookbook\templates\base.html:127 -msgid "Discovered Recipes" -msgstr "Atrastās receptes" - -#: .\cookbook\templates\base.html:129 -msgid "Discovery Log" -msgstr "Atrastās žurnāls" - -#: .\cookbook\templates\base.html:131 .\cookbook\templates\stats.html:10 -msgid "Statistics" -msgstr "Statistika" - -#: .\cookbook\templates\base.html:133 -msgid "Units & Ingredients" -msgstr "Vienības un sastāvdaļas" - -#: .\cookbook\templates\base.html:135 .\cookbook\templates\index.html:47 -msgid "Import Recipe" -msgstr "Importēt recepti" - -#: .\cookbook\templates\base.html:156 .\cookbook\templates\history.html:6 +#: .\cookbook\templates\base.html:175 .\cookbook\templates\history.html:6 #: .\cookbook\templates\history.html:14 msgid "History" msgstr "Vēsture" -#: .\cookbook\templates\base.html:159 .\cookbook\templates\space.html:7 +#: .\cookbook\templates\base.html:191 .\cookbook\templates\index.html:47 +msgid "Import Recipe" +msgstr "Importēt recepti" + +#: .\cookbook\templates\base.html:193 +#: .\cookbook\templates\shopping_list.html:188 +#: .\cookbook\templates\shopping_list.html:210 +msgid "Create" +msgstr "Izveidot" + +#: .\cookbook\templates\base.html:207 .\cookbook\templates\space.html:7 #: .\cookbook\templates\space.html:19 #, fuzzy #| msgid "Settings" msgid "Space Settings" msgstr "Iestatījumi" -#: .\cookbook\templates\base.html:163 .\cookbook\templates\system.html:13 +#: .\cookbook\templates\base.html:212 .\cookbook\templates\system.html:13 msgid "System" msgstr "Sistēma" -#: .\cookbook\templates\base.html:165 .\cookbook\templates\base.html:171 +#: .\cookbook\templates\base.html:214 msgid "Admin" msgstr "Administrators" -#: .\cookbook\templates\base.html:175 +#: .\cookbook\templates\base.html:218 msgid "Markdown Guide" msgstr "Markdown rokasgrāmata" -#: .\cookbook\templates\base.html:177 +#: .\cookbook\templates\base.html:220 msgid "GitHub" msgstr "Github" -#: .\cookbook\templates\base.html:181 +#: .\cookbook\templates\base.html:224 msgid "API Browser" msgstr "API pārlūks" -#: .\cookbook\templates\base.html:184 +#: .\cookbook\templates\base.html:227 msgid "Log out" msgstr "" +#: .\cookbook\templates\base.html:229 +#: .\cookbook\templates\generic\list_template.html:14 +#: .\cookbook\templates\space.html:58 .\cookbook\templates\stats.html:43 +msgid "External Recipes" +msgstr "Ārējās receptes" + #: .\cookbook\templates\batch\edit.html:6 msgid "Batch edit Category" msgstr "Rediģēt vairākas kategorijas uzreiz" @@ -825,7 +907,7 @@ msgid "Add the specified keywords to all recipes containing a word" msgstr "" "Pievienojiet norādītos atslēgvārdus visām receptēm, kurās ir atrodams vārds" -#: .\cookbook\templates\batch\monitor.html:6 .\cookbook\views\edit.py:85 +#: .\cookbook\templates\batch\monitor.html:6 .\cookbook\views\edit.py:83 msgid "Sync" msgstr "Sinhronizēt" @@ -845,10 +927,26 @@ msgstr "" msgid "The path must be in the following format" msgstr "Ceļam jābūt šādā formātā" -#: .\cookbook\templates\batch\monitor.html:27 +#: .\cookbook\templates\batch\monitor.html:21 +msgid "Manage External Storage" +msgstr "" + +#: .\cookbook\templates\batch\monitor.html:28 msgid "Sync Now!" msgstr "Sinhronizēt tagad!" +#: .\cookbook\templates\batch\monitor.html:29 +#, fuzzy +#| msgid "Shopping Recipes" +msgid "Show Recipes" +msgstr "Iepirkšanās receptes" + +#: .\cookbook\templates\batch\monitor.html:30 +#, fuzzy +#| msgid "Show Links" +msgid "Show Log" +msgstr "Rādīt saites" + #: .\cookbook\templates\batch\waiting.html:4 #: .\cookbook\templates\batch\waiting.html:10 msgid "Importing Recipes" @@ -862,32 +960,10 @@ msgstr "" "Tas var aizņemt dažas minūtes, atkarībā no sinhronizēto recepšu skaita, " "lūdzu, uzgaidiet." -#: .\cookbook\templates\books.html:5 .\cookbook\templates\books.html:11 +#: .\cookbook\templates\books.html:7 msgid "Recipe Books" msgstr "Recepšu grāmatas" -#: .\cookbook\templates\books.html:15 -msgid "New Book" -msgstr "Jauna grāmata" - -#: .\cookbook\templates\books.html:27 .\cookbook\templates\recipe_view.html:26 -msgid "by" -msgstr "pēc" - -#: .\cookbook\templates\books.html:34 -msgid "Toggle Recipes" -msgstr "Pārslēgt receptes" - -#: .\cookbook\templates\books.html:54 -#: .\cookbook\templates\meal_plan_entry.html:48 -#: .\cookbook\templates\recipes_table.html:64 -msgid "Last cooked" -msgstr "Pēdējoreiz gatavots" - -#: .\cookbook\templates\books.html:71 -msgid "There are no recipes in this book yet." -msgstr "Šajā grāmatā vēl nav receptes." - #: .\cookbook\templates\export.html:6 .\cookbook\templates\test2.html:6 msgid "Export Recipes" msgstr "Eksportēt receptes" @@ -910,217 +986,21 @@ msgid "Import new Recipe" msgstr "Importēt jaunu recepti" #: .\cookbook\templates\forms\edit_import_recipe.html:14 -#: .\cookbook\templates\forms\edit_internal_recipe.html:439 -#: .\cookbook\templates\forms\edit_internal_recipe.html:471 #: .\cookbook\templates\generic\edit_template.html:23 #: .\cookbook\templates\generic\new_template.html:23 #: .\cookbook\templates\include\log_cooking.html:28 #: .\cookbook\templates\meal_plan.html:325 -#: .\cookbook\templates\settings.html:46 .\cookbook\templates\settings.html:87 -#: .\cookbook\templates\settings.html:105 +#: .\cookbook\templates\settings.html:58 .\cookbook\templates\settings.html:99 +#: .\cookbook\templates\settings.html:117 +#: .\cookbook\templates\settings.html:162 #: .\cookbook\templates\shopping_list.html:353 msgid "Save" msgstr "Saglabāt" #: .\cookbook\templates\forms\edit_internal_recipe.html:7 -#: .\cookbook\templates\forms\edit_internal_recipe.html:34 msgid "Edit Recipe" msgstr "Rediģēt recepti" -#: .\cookbook\templates\forms\edit_internal_recipe.html:56 -#: .\cookbook\templates\url_import.html:171 -msgid "Description" -msgstr "" - -#: .\cookbook\templates\forms\edit_internal_recipe.html:76 -msgid "Waiting Time" -msgstr "Gaidīšanas laiks" - -#: .\cookbook\templates\forms\edit_internal_recipe.html:82 -msgid "Servings Text" -msgstr "" - -#: .\cookbook\templates\forms\edit_internal_recipe.html:93 -msgid "Select Keywords" -msgstr "Atlasīt atslēgvārdus" - -#: .\cookbook\templates\forms\edit_internal_recipe.html:94 -#: .\cookbook\templates\url_import.html:583 -#, fuzzy -#| msgid "All Keywords" -msgid "Add Keyword" -msgstr "Visi atslēgvārdi" - -#: .\cookbook\templates\forms\edit_internal_recipe.html:112 -msgid "Nutrition" -msgstr "Uzturs" - -#: .\cookbook\templates\forms\edit_internal_recipe.html:116 -#: .\cookbook\templates\forms\edit_internal_recipe.html:166 -msgid "Delete Step" -msgstr "Dzēst soli" - -#: .\cookbook\templates\forms\edit_internal_recipe.html:120 -msgid "Calories" -msgstr "Kalorijas" - -#: .\cookbook\templates\forms\edit_internal_recipe.html:123 -msgid "Carbohydrates" -msgstr "Ogļhidrāti" - -#: .\cookbook\templates\forms\edit_internal_recipe.html:126 -msgid "Fats" -msgstr "Tauki" - -#: .\cookbook\templates\forms\edit_internal_recipe.html:128 -msgid "Proteins" -msgstr "Olbaltumvielas" - -#: .\cookbook\templates\forms\edit_internal_recipe.html:150 -#: .\cookbook\templates\forms\edit_internal_recipe.html:504 -msgid "Step" -msgstr "Solis" - -#: .\cookbook\templates\forms\edit_internal_recipe.html:171 -msgid "Show as header" -msgstr "Rādīt kā galveni" - -#: .\cookbook\templates\forms\edit_internal_recipe.html:177 -msgid "Hide as header" -msgstr "Slēpt kā galveni" - -#: .\cookbook\templates\forms\edit_internal_recipe.html:182 -msgid "Move Up" -msgstr "Pārvietot uz augšu" - -#: .\cookbook\templates\forms\edit_internal_recipe.html:187 -msgid "Move Down" -msgstr "Pārvietot uz leju" - -#: .\cookbook\templates\forms\edit_internal_recipe.html:196 -msgid "Step Name" -msgstr "Soļa nosaukums" - -#: .\cookbook\templates\forms\edit_internal_recipe.html:200 -msgid "Step Type" -msgstr "Soļa tips" - -#: .\cookbook\templates\forms\edit_internal_recipe.html:213 -msgid "Step time in Minutes" -msgstr "Soļa laiks minūtēs" - -#: .\cookbook\templates\forms\edit_internal_recipe.html:229 -#, fuzzy -#| msgid "Select one" -msgid "Select File" -msgstr "Izvēlies vienu" - -#: .\cookbook\templates\forms\edit_internal_recipe.html:230 -#: .\cookbook\templates\forms\edit_internal_recipe.html:252 -#: .\cookbook\templates\forms\edit_internal_recipe.html:313 -#: .\cookbook\templates\forms\edit_internal_recipe.html:337 -#: .\cookbook\templates\shopping_list.html:189 -#: .\cookbook\templates\shopping_list.html:211 -#: .\cookbook\templates\shopping_list.html:241 -#: .\cookbook\templates\shopping_list.html:265 -#: .\cookbook\templates\url_import.html:495 -#: .\cookbook\templates\url_import.html:527 -msgid "Select" -msgstr "Atlasīt" - -#: .\cookbook\templates\forms\edit_internal_recipe.html:251 -#, fuzzy -#| msgid "Delete Recipe" -msgid "Select Recipe" -msgstr "Dzēst recepti" - -#: .\cookbook\templates\forms\edit_internal_recipe.html:311 -#: .\cookbook\templates\shopping_list.html:187 -msgid "Select Unit" -msgstr "Atlasiet vienību" - -#: .\cookbook\templates\forms\edit_internal_recipe.html:312 -#: .\cookbook\templates\forms\edit_internal_recipe.html:336 -#: .\cookbook\templates\shopping_list.html:188 -#: .\cookbook\templates\shopping_list.html:210 -msgid "Create" -msgstr "Izveidot" - -#: .\cookbook\templates\forms\edit_internal_recipe.html:335 -#: .\cookbook\templates\shopping_list.html:209 -msgid "Select Food" -msgstr "Atlasīt ēdienu" - -#: .\cookbook\templates\forms\edit_internal_recipe.html:352 -#: .\cookbook\templates\meal_plan.html:256 -#: .\cookbook\templates\url_import.html:542 -msgid "Note" -msgstr "Piezīme" - -#: .\cookbook\templates\forms\edit_internal_recipe.html:369 -msgid "Delete Ingredient" -msgstr "Dzēst sastāvdaļu" - -#: .\cookbook\templates\forms\edit_internal_recipe.html:375 -msgid "Make Header" -msgstr "Izveidot galveni" - -#: .\cookbook\templates\forms\edit_internal_recipe.html:381 -msgid "Make Ingredient" -msgstr "Pagatavot sastāvdaļu" - -#: .\cookbook\templates\forms\edit_internal_recipe.html:387 -msgid "Disable Amount" -msgstr "Atspējot summu" - -#: .\cookbook\templates\forms\edit_internal_recipe.html:393 -msgid "Enable Amount" -msgstr "Iespējot summu" - -#: .\cookbook\templates\forms\edit_internal_recipe.html:398 -msgid "Copy Template Reference" -msgstr "" - -#: .\cookbook\templates\forms\edit_internal_recipe.html:424 -#: .\cookbook\templates\url_import.html:297 -#: .\cookbook\templates\url_import.html:567 -msgid "Instructions" -msgstr "Instrukcijas" - -#: .\cookbook\templates\forms\edit_internal_recipe.html:437 -#: .\cookbook\templates\forms\edit_internal_recipe.html:468 -msgid "Save & View" -msgstr "Saglabāt un skatīt" - -#: .\cookbook\templates\forms\edit_internal_recipe.html:441 -#: .\cookbook\templates\forms\edit_internal_recipe.html:474 -msgid "Add Step" -msgstr "Pievienot soli" - -#: .\cookbook\templates\forms\edit_internal_recipe.html:444 -#: .\cookbook\templates\forms\edit_internal_recipe.html:478 -msgid "Add Nutrition" -msgstr "Pievienot uzturu" - -#: .\cookbook\templates\forms\edit_internal_recipe.html:446 -#: .\cookbook\templates\forms\edit_internal_recipe.html:480 -msgid "Remove Nutrition" -msgstr "Noņemt uzturu" - -#: .\cookbook\templates\forms\edit_internal_recipe.html:448 -#: .\cookbook\templates\forms\edit_internal_recipe.html:483 -msgid "View Recipe" -msgstr "Skatīt recepti" - -#: .\cookbook\templates\forms\edit_internal_recipe.html:450 -#: .\cookbook\templates\forms\edit_internal_recipe.html:485 -msgid "Delete Recipe" -msgstr "Dzēst recepti" - -#: .\cookbook\templates\forms\edit_internal_recipe.html:491 -msgid "Steps" -msgstr "Soļi" - #: .\cookbook\templates\forms\ingredients.html:15 msgid "Edit Ingredients" msgstr "Rediģēt sastāvdaļas" @@ -1143,11 +1023,6 @@ msgstr "" "receptes, kas izmanto tās.\n" " " -#: .\cookbook\templates\forms\ingredients.html:24 -#: .\cookbook\templates\space.html:41 .\cookbook\templates\stats.html:26 -msgid "Units" -msgstr "Vienības" - #: .\cookbook\templates\forms\ingredients.html:26 msgid "Are you sure that you want to merge these two units?" msgstr "Vai tiešām vēlaties apvienot šīs divas vienības?" @@ -1161,29 +1036,33 @@ msgstr "Apvienot" msgid "Are you sure that you want to merge these two ingredients?" msgstr "Vai tiešām vēlaties apvienot šīs divas sastāvdaļas?" -#: .\cookbook\templates\generic\delete_template.html:18 +#: .\cookbook\templates\generic\delete_template.html:19 #, python-format msgid "Are you sure you want to delete the %(title)s: %(object)s " msgstr "Vai tiešām vēlaties izdzēst %(title)s: %(object)s " -#: .\cookbook\templates\generic\edit_template.html:30 +#: .\cookbook\templates\generic\delete_template.html:23 +msgid "Cancel" +msgstr "" + +#: .\cookbook\templates\generic\edit_template.html:32 msgid "View" msgstr "Skatīt" -#: .\cookbook\templates\generic\edit_template.html:34 +#: .\cookbook\templates\generic\edit_template.html:36 msgid "Delete original file" msgstr "Dzēst sākotnējo failu" #: .\cookbook\templates\generic\list_template.html:6 -#: .\cookbook\templates\generic\list_template.html:12 +#: .\cookbook\templates\generic\list_template.html:21 msgid "List" msgstr "Saraksts" -#: .\cookbook\templates\generic\list_template.html:25 +#: .\cookbook\templates\generic\list_template.html:34 msgid "Filter" msgstr "Filtrs" -#: .\cookbook\templates\generic\list_template.html:30 +#: .\cookbook\templates\generic\list_template.html:39 msgid "Import all" msgstr "Importēt visu" @@ -1523,6 +1402,11 @@ msgstr "Parādīt palīdzību" msgid "Week iCal export" msgstr "Nedēļas iCal eksports" +#: .\cookbook\templates\meal_plan.html:256 +#: .\cookbook\templates\url_import.html:542 +msgid "Note" +msgstr "Piezīme" + #: .\cookbook\templates\meal_plan.html:264 #: .\cookbook\templates\meal_plan_entry.html:18 msgid "Created by" @@ -1586,6 +1470,11 @@ msgstr "" msgid "Meal Plan View" msgstr "Maltītes plāna skats" +#: .\cookbook\templates\meal_plan_entry.html:48 +#: .\cookbook\templates\recipes_table.html:64 +msgid "Last cooked" +msgstr "Pēdējoreiz gatavots" + #: .\cookbook\templates\meal_plan_entry.html:50 msgid "Never cooked before." msgstr "Nekad nav gatavojis." @@ -1688,8 +1577,12 @@ msgstr "" msgid "Comments" msgstr "Komentāri" +#: .\cookbook\templates\recipe_view.html:26 +msgid "by" +msgstr "pēc" + #: .\cookbook\templates\recipe_view.html:44 .\cookbook\views\delete.py:118 -#: .\cookbook\views\edit.py:179 +#: .\cookbook\views\edit.py:177 msgid "Comment" msgstr "Komentēt" @@ -1721,56 +1614,227 @@ msgstr "Veikt ierakstus pagatavošanas žurnālā" msgid "Recipe Home" msgstr "Recepšu Sākums" -#: .\cookbook\templates\settings.html:25 +#: .\cookbook\templates\search_info.html:5 +#: .\cookbook\templates\search_info.html:9 +#: .\cookbook\templates\settings.html:157 +#, fuzzy +#| msgid "Search String" +msgid "Search Settings" +msgstr "Meklēšanas virkne" + +#: .\cookbook\templates\search_info.html:10 +msgid "" +"\n" +" Creating the best search experience is complicated and weighs " +"heavily on your personal configuration. \n" +" Changing any of the search settings can have significant impact on " +"the speed and quality of the results.\n" +" Search Methods, Trigrams and Full Text Search configurations are " +"only available if you are using Postgres for your database.\n" +" " +msgstr "" + +#: .\cookbook\templates\search_info.html:19 +#, fuzzy +#| msgid "Search" +msgid "Search Methods" +msgstr "Meklēt" + +#: .\cookbook\templates\search_info.html:23 +msgid "" +" \n" +" Full text searches attempt to normalize the words provided to " +"match common variants. For example: 'forked', 'forking', 'forks' will all " +"normalize to 'fork'.\n" +" There are several methods available, described below, that will " +"control how the search behavior should react when multiple words are " +"searched.\n" +" Full technical details on how these operate can be viewed on Postgresql's website.\n" +" " +msgstr "" + +#: .\cookbook\templates\search_info.html:29 +msgid "" +" \n" +" Simple searches ignore punctuation and common words such as " +"'the', 'a', 'and'. And will treat seperate words as required.\n" +" Searching for 'apple or flour' will return any recipe that " +"includes both 'apple' and 'flour' anywhere in the fields that have been " +"selected for a full text search.\n" +" " +msgstr "" + +#: .\cookbook\templates\search_info.html:34 +msgid "" +" \n" +" Phrase searches ignore punctuation, but will search for all of " +"the words in the exact order provided.\n" +" Searching for 'apple or flour' will only return a recipe that " +"includes the exact phrase 'apple or flour' in any of the fields that have " +"been selected for a full text search.\n" +" " +msgstr "" + +#: .\cookbook\templates\search_info.html:39 +msgid "" +" \n" +" Web searches simulate functionality found on many web search " +"sites supporting special syntax.\n" +" Placing quotes around several words will convert those words " +"into a phrase.\n" +" 'or' is recongized as searching for the word (or phrase) " +"immediately before 'or' OR the word (or phrase) directly after.\n" +" '-' is recognized as searching for recipes that do not include " +"the word (or phrase) that comes immediately after. \n" +" For example searching for 'apple pie' or cherry -butter will " +"return any recipe that includes the phrase 'apple pie' or the word " +"'cherry' \n" +" in any field included in the full text search but exclude any " +"recipe that has the word 'butter' in any field included.\n" +" " +msgstr "" + +#: .\cookbook\templates\search_info.html:48 +msgid "" +" \n" +" Raw search is similar to Web except will take puncuation " +"operators such as '|', '&' and '()'\n" +" " +msgstr "" + +#: .\cookbook\templates\search_info.html:59 +msgid "" +" \n" +" Another approach to searching that also requires Postgresql is " +"fuzzy search or trigram similarity. A trigram is a group of three " +"consecutive characters.\n" +" For example searching for 'apple' will create x trigrams 'app', " +"'ppl', 'ple' and will create a score of how closely words match the " +"generated trigrams.\n" +" One benefit of searching trigams is that a search for 'sandwich' " +"will find mispelled words such as 'sandwhich' that would be missed by other " +"methods.\n" +" " +msgstr "" + +#: .\cookbook\templates\search_info.html:69 +#, fuzzy +#| msgid "Search Recipe" +msgid "Search Fields" +msgstr "Meklēt recepti" + +#: .\cookbook\templates\search_info.html:73 +msgid "" +" \n" +" Unaccent is a special case in that it enables searching a field " +"'unaccented' for each search style attempting to ignore accented values. \n" +" For example when you enable unaccent for 'Name' any search " +"(starts with, contains, trigram) will attempt the search ignoring accented " +"characters.\n" +" \n" +" For the other options, you can enable search on any or all " +"fields and they will be combined together with an assumed 'OR'.\n" +" For example enabling 'Name' for Starts With, 'Name' and " +"'Description' for Partial Match and 'Ingredients' and 'Keywords' for Full " +"Search\n" +" and searching for 'apple' will generate a search that will " +"return recipes that have:\n" +" - A recipe name that starts with 'apple'\n" +" - OR a recipe name that contains 'apple'\n" +" - OR a recipe description that contains 'apple'\n" +" - OR a recipe that will have a full text search match ('apple' " +"or 'apples') in ingredients\n" +" - OR a recipe that will have a full text search match in " +"Keywords\n" +"\n" +" Combining too many fields in too many types of search can have a " +"negative impact on performance, create duplicate results or return " +"unexpected results.\n" +" For example, enabling fuzzy search or partial matches will " +"interfere with web search methods. \n" +" Searching for 'apple -pie' with fuzzy search and full text " +"search will return the recipe Apple Pie. Though it is not included in the " +"full text results, it does match the trigram results.\n" +" " +msgstr "" + +#: .\cookbook\templates\search_info.html:95 +#, fuzzy +#| msgid "Search" +msgid "Search Index" +msgstr "Meklēt" + +#: .\cookbook\templates\search_info.html:99 +msgid "" +" \n" +" Trigram search and Full Text Search both rely on database " +"indexes to perform effectively. \n" +" You can rebuild the indexes on all fields in the Admin page for " +"Recipes and selecting all recipes and running 'rebuild index for selected " +"recipes'\n" +" You can also rebuild indexes at the command line by executing " +"the management command 'python manage.py rebuildindex'\n" +" " +msgstr "" + +#: .\cookbook\templates\settings.html:27 msgid "Account" msgstr "Konts" -#: .\cookbook\templates\settings.html:29 +#: .\cookbook\templates\settings.html:33 msgid "Preferences" msgstr "" -#: .\cookbook\templates\settings.html:33 +#: .\cookbook\templates\settings.html:39 #, fuzzy #| msgid "Settings" msgid "API-Settings" msgstr "Iestatījumi" -#: .\cookbook\templates\settings.html:41 +#: .\cookbook\templates\settings.html:45 +#, fuzzy +#| msgid "Search String" +msgid "Search-Settings" +msgstr "Meklēšanas virkne" + +#: .\cookbook\templates\settings.html:53 #, fuzzy #| msgid "Settings" msgid "Name Settings" msgstr "Iestatījumi" -#: .\cookbook\templates\settings.html:49 +#: .\cookbook\templates\settings.html:61 #, fuzzy #| msgid "Settings" msgid "Account Settings" msgstr "Iestatījumi" -#: .\cookbook\templates\settings.html:51 +#: .\cookbook\templates\settings.html:63 #, fuzzy #| msgid "Settings" msgid "Emails" msgstr "Iestatījumi" -#: .\cookbook\templates\settings.html:54 +#: .\cookbook\templates\settings.html:66 #: .\cookbook\templates\socialaccount\connections.html:11 msgid "Social" msgstr "" -#: .\cookbook\templates\settings.html:66 +#: .\cookbook\templates\settings.html:78 msgid "Language" msgstr "Valoda" -#: .\cookbook\templates\settings.html:96 +#: .\cookbook\templates\settings.html:108 msgid "Style" msgstr "Stils" -#: .\cookbook\templates\settings.html:116 +#: .\cookbook\templates\settings.html:128 msgid "API Token" msgstr "API Tokens" -#: .\cookbook\templates\settings.html:117 +#: .\cookbook\templates\settings.html:129 msgid "" "You can use both basic authentication and token based authentication to " "access the REST API." @@ -1778,7 +1842,7 @@ msgstr "" "Lai piekļūtu REST API, varat izmantot gan pamata autentifikāciju, gan tokena " "autentifikāciju." -#: .\cookbook\templates\settings.html:134 +#: .\cookbook\templates\settings.html:146 msgid "" "Use the token as an Authorization header prefixed by the word token as shown " "in the following examples:" @@ -1786,7 +1850,7 @@ msgstr "" "Izmantojiet token, kā Authorization header, kas pievienota vārdam token, kā " "parādīts šajos piemēros:" -#: .\cookbook\templates\settings.html:136 +#: .\cookbook\templates\settings.html:148 msgid "or" msgstr "vai" @@ -1829,6 +1893,23 @@ msgstr "" msgid "Amount" msgstr "Summa" +#: .\cookbook\templates\shopping_list.html:187 +msgid "Select Unit" +msgstr "Atlasiet vienību" + +#: .\cookbook\templates\shopping_list.html:189 +#: .\cookbook\templates\shopping_list.html:211 +#: .\cookbook\templates\shopping_list.html:241 +#: .\cookbook\templates\shopping_list.html:265 +#: .\cookbook\templates\url_import.html:495 +#: .\cookbook\templates\url_import.html:527 +msgid "Select" +msgstr "Atlasīt" + +#: .\cookbook\templates\shopping_list.html:209 +msgid "Select Food" +msgstr "Atlasīt ēdienu" + #: .\cookbook\templates\shopping_list.html:240 msgid "Select Supermarket" msgstr "" @@ -1926,10 +2007,6 @@ msgstr "Objektu statistika" msgid "Recipes without Keywords" msgstr "Receptes bez atslēgas vārdiem" -#: .\cookbook\templates\space.html:58 .\cookbook\templates\stats.html:43 -msgid "External Recipes" -msgstr "Ārējās receptes" - #: .\cookbook\templates\space.html:60 .\cookbook\templates\stats.html:45 msgid "Internal Recipes" msgstr "Iekšējās receptes" @@ -1987,7 +2064,7 @@ msgid "There are no members in your space yet!" msgstr "Šajā grāmatā vēl nav receptes." #: .\cookbook\templates\space.html:130 .\cookbook\templates\system.html:21 -#: .\cookbook\views\lists.py:115 +#: .\cookbook\views\lists.py:100 msgid "Invite Links" msgstr "Uzaicinājuma saites" @@ -1995,6 +2072,10 @@ msgstr "Uzaicinājuma saites" msgid "Stats" msgstr "Statistika" +#: .\cookbook\templates\stats.html:10 +msgid "Statistics" +msgstr "Statistika" + #: .\cookbook\templates\system.html:22 msgid "Show Links" msgstr "Rādīt saites" @@ -2179,6 +2260,10 @@ msgstr "" msgid "Text dragged here will be appended to the name." msgstr "" +#: .\cookbook\templates\url_import.html:171 +msgid "Description" +msgstr "" + #: .\cookbook\templates\url_import.html:175 msgid "Text dragged here will be appended to the description." msgstr "" @@ -2207,6 +2292,11 @@ msgstr "Laiks" msgid "Ingredients dragged here will be appended to current list." msgstr "" +#: .\cookbook\templates\url_import.html:297 +#: .\cookbook\templates\url_import.html:567 +msgid "Instructions" +msgstr "Instrukcijas" + #: .\cookbook\templates\url_import.html:302 msgid "" "Recipe instructions dragged here will be appended to current instructions." @@ -2266,6 +2356,12 @@ msgstr "Recepšu Markup specifikācija" msgid "Select one" msgstr "Izvēlies vienu" +#: .\cookbook\templates\url_import.html:583 +#, fuzzy +#| msgid "All Keywords" +msgid "Add Keyword" +msgstr "Visi atslēgvārdi" + #: .\cookbook\templates\url_import.html:596 msgid "All Keywords" msgstr "Visi atslēgvārdi" @@ -2309,37 +2405,94 @@ msgstr "GitHub Issues" msgid "Recipe Markup Specification" msgstr "Recepšu Markup specifikācija" -#: .\cookbook\views\api.py:79 +#: .\cookbook\views\api.py:82 .\cookbook\views\api.py:131 #, fuzzy #| msgid "Parameter filter_list incorrectly formatted" msgid "Parameter updated_at incorrectly formatted" msgstr "Parametrs filter_list ir nepareizi formatēts" -#: .\cookbook\views\api.py:580 .\cookbook\views\views.py:303 +#: .\cookbook\views\api.py:151 +#, python-brace-format +msgid "No {self.basename} with id {pk} exists" +msgstr "" + +#: .\cookbook\views\api.py:155 .\cookbook\views\edit.py:300 +#: .\cookbook\views\edit.py:316 +msgid "Cannot merge with the same object!" +msgstr "" + +#: .\cookbook\views\api.py:162 +#, python-brace-format +msgid "No {self.basename} with id {target} exists" +msgstr "" + +#: .\cookbook\views\api.py:167 +msgid "Cannot merge with child object!" +msgstr "" + +#: .\cookbook\views\api.py:195 +#, python-brace-format +msgid "{source.name} was merged successfully with {target.name}" +msgstr "" + +#: .\cookbook\views\api.py:199 +#, python-brace-format +msgid "An error occurred attempting to merge {source.name} with {target.name}" +msgstr "" + +#: .\cookbook\views\api.py:239 +#, python-brace-format +msgid "No {self.basename} with id {child} exists" +msgstr "" + +#: .\cookbook\views\api.py:248 +#, python-brace-format +msgid "{child.name} was moved successfully to the root." +msgstr "" + +#: .\cookbook\views\api.py:251 .\cookbook\views\api.py:269 +msgid "An error occurred attempting to move " +msgstr "" + +#: .\cookbook\views\api.py:254 +msgid "Cannot move an object to itself!" +msgstr "" + +#: .\cookbook\views\api.py:260 +#, python-brace-format +msgid "No {self.basename} with id {parent} exists" +msgstr "" + +#: .\cookbook\views\api.py:266 +#, python-brace-format +msgid "{child.name} was moved successfully to parent {parent.name}" +msgstr "" + +#: .\cookbook\views\api.py:704 .\cookbook\views\views.py:289 msgid "This feature is not available in the demo version!" msgstr "" -#: .\cookbook\views\api.py:603 +#: .\cookbook\views\api.py:727 msgid "Sync successful!" msgstr "Sinhronizācija ir veiksmīga!" -#: .\cookbook\views\api.py:608 +#: .\cookbook\views\api.py:732 msgid "Error synchronizing with Storage" msgstr "Sinhronizējot ar krātuvi, radās kļūda" -#: .\cookbook\views\api.py:686 +#: .\cookbook\views\api.py:810 msgid "Nothing to do." msgstr "" -#: .\cookbook\views\api.py:701 +#: .\cookbook\views\api.py:825 msgid "The requested site provided malformed data and cannot be read." msgstr "Pieprasītā vietne sniedza nepareizus datus, kurus nevar nolasīt." -#: .\cookbook\views\api.py:708 +#: .\cookbook\views\api.py:832 msgid "The requested page could not be found." msgstr "Pieprasīto lapu nevarēja atrast." -#: .\cookbook\views\api.py:717 +#: .\cookbook\views\api.py:841 msgid "" "The requested site does not provide any recognized data format to import the " "recipe from." @@ -2347,13 +2500,13 @@ msgstr "" "Pieprasītajā vietnē nav norādīts atzīts datu formāts, no kura varētu " "importēt recepti." -#: .\cookbook\views\api.py:731 +#: .\cookbook\views\api.py:855 #, fuzzy #| msgid "The requested page could not be found." msgid "No useable data could be found." msgstr "Pieprasīto lapu nevarēja atrast." -#: .\cookbook\views\api.py:747 +#: .\cookbook\views\api.py:871 msgid "I couldn't find anything to do." msgstr "" @@ -2381,8 +2534,8 @@ msgstr[2] "Partijas rediģēšana pabeigta. %(count)d receptes tika atjaunināta msgid "Monitor" msgstr "Uzraudzīt" -#: .\cookbook\views\delete.py:96 .\cookbook\views\lists.py:102 -#: .\cookbook\views\new.py:98 +#: .\cookbook\views\delete.py:96 .\cookbook\views\lists.py:86 +#: .\cookbook\views\new.py:97 msgid "Storage Backend" msgstr "Krātuves aizmugursistēma" @@ -2393,8 +2546,8 @@ msgstr "" "Nevarēja izdzēst šo krātuves aizmugursistēmu, jo tā tiek izmantota vismaz " "vienā uzraugā." -#: .\cookbook\views\delete.py:129 .\cookbook\views\edit.py:213 -#: .\cookbook\views\new.py:156 +#: .\cookbook\views\delete.py:129 .\cookbook\views\edit.py:211 +#: .\cookbook\views\new.py:155 msgid "Recipe Book" msgstr "Recepšu grāmata" @@ -2402,47 +2555,39 @@ msgstr "Recepšu grāmata" msgid "Bookmarks" msgstr "Grāmatzīmes" -#: .\cookbook\views\delete.py:163 .\cookbook\views\new.py:252 +#: .\cookbook\views\delete.py:163 .\cookbook\views\new.py:251 msgid "Invite Link" msgstr "Uzaicinājuma saite" -#: .\cookbook\views\edit.py:119 -msgid "Food" -msgstr "Ēdiens" - -#: .\cookbook\views\edit.py:128 +#: .\cookbook\views\edit.py:126 msgid "You cannot edit this storage!" msgstr "Jūs nevarat rediģēt šo krātuvi!" -#: .\cookbook\views\edit.py:148 +#: .\cookbook\views\edit.py:146 msgid "Storage saved!" msgstr "Krātuve saglabāta!" -#: .\cookbook\views\edit.py:154 +#: .\cookbook\views\edit.py:152 msgid "There was an error updating this storage backend!" msgstr "Atjauninot šo krātuves aizmugursistēmu, radās kļūda!" -#: .\cookbook\views\edit.py:165 +#: .\cookbook\views\edit.py:163 msgid "Storage" msgstr "Krātuve" -#: .\cookbook\views\edit.py:261 +#: .\cookbook\views\edit.py:259 msgid "Changes saved!" msgstr "Izmaiņas saglabātas!" -#: .\cookbook\views\edit.py:265 +#: .\cookbook\views\edit.py:263 msgid "Error saving changes!" msgstr "Saglabājot izmaiņas, radās kļūda!" -#: .\cookbook\views\edit.py:299 +#: .\cookbook\views\edit.py:298 msgid "Units merged!" msgstr "Vienības ir apvienotas!" -#: .\cookbook\views\edit.py:301 .\cookbook\views\edit.py:317 -msgid "Cannot merge with the same object!" -msgstr "" - -#: .\cookbook\views\edit.py:315 +#: .\cookbook\views\edit.py:314 msgid "Foods merged!" msgstr "Ēdieni apvienoti!" @@ -2454,89 +2599,119 @@ msgstr "" msgid "Exporting is not implemented for this provider" msgstr "" -#: .\cookbook\views\lists.py:40 +#: .\cookbook\views\lists.py:26 msgid "Import Log" msgstr "Importēšanas žurnāls" -#: .\cookbook\views\lists.py:53 +#: .\cookbook\views\lists.py:39 msgid "Discovery" msgstr "Atklāšana" -#: .\cookbook\views\lists.py:85 +#: .\cookbook\views\lists.py:69 msgid "Shopping Lists" msgstr "Iepirkšanās saraksti" -#: .\cookbook\views\new.py:123 +#: .\cookbook\views\lists.py:129 +#, fuzzy +#| msgid "Food" +msgid "Foods" +msgstr "Ēdiens" + +#: .\cookbook\views\lists.py:163 +msgid "Supermarkets" +msgstr "" + +#: .\cookbook\views\lists.py:179 +#, fuzzy +#| msgid "Shopping Recipes" +msgid "Shopping Categories" +msgstr "Iepirkšanās receptes" + +#: .\cookbook\views\new.py:122 msgid "Imported new recipe!" msgstr "Importēta jauna recepte!" -#: .\cookbook\views\new.py:126 +#: .\cookbook\views\new.py:125 msgid "There was an error importing this recipe!" msgstr "Importējot šo recepti, radās kļūda!" -#: .\cookbook\views\new.py:226 +#: .\cookbook\views\new.py:225 msgid "Hello" msgstr "" -#: .\cookbook\views\new.py:226 +#: .\cookbook\views\new.py:225 msgid "You have been invited by " msgstr "" -#: .\cookbook\views\new.py:227 +#: .\cookbook\views\new.py:226 msgid " to join their Tandoor Recipes space " msgstr "" -#: .\cookbook\views\new.py:228 +#: .\cookbook\views\new.py:227 msgid "Click the following link to activate your account: " msgstr "" -#: .\cookbook\views\new.py:229 +#: .\cookbook\views\new.py:228 msgid "" "If the link does not work use the following code to manually join the space: " msgstr "" -#: .\cookbook\views\new.py:230 +#: .\cookbook\views\new.py:229 msgid "The invitation is valid until " msgstr "" -#: .\cookbook\views\new.py:231 +#: .\cookbook\views\new.py:230 msgid "" "Tandoor Recipes is an Open Source recipe manager. Check it out on GitHub " msgstr "" -#: .\cookbook\views\new.py:234 +#: .\cookbook\views\new.py:233 msgid "Tandoor Recipes Invite" msgstr "" -#: .\cookbook\views\new.py:241 +#: .\cookbook\views\new.py:240 msgid "Invite link successfully send to user." msgstr "" -#: .\cookbook\views\new.py:244 +#: .\cookbook\views\new.py:243 msgid "" "You have send to many emails, please share the link manually or wait a few " "hours." msgstr "" -#: .\cookbook\views\new.py:246 +#: .\cookbook\views\new.py:245 msgid "Email to user could not be send, please share link manually." msgstr "" -#: .\cookbook\views\views.py:129 +#: .\cookbook\views\views.py:128 msgid "" "You have successfully created your own recipe space. Start by adding some " "recipes or invite other people to join you." msgstr "" -#: .\cookbook\views\views.py:177 +#: .\cookbook\views\views.py:176 msgid "You do not have the required permissions to perform this action!" msgstr "Jums nav nepieciešamo atļauju, lai veiktu šo darbību!" -#: .\cookbook\views\views.py:188 +#: .\cookbook\views\views.py:187 msgid "Comment saved!" msgstr "Komentārs saglabāts!" -#: .\cookbook\views\views.py:395 +#: .\cookbook\views\views.py:351 +msgid "You must select at least one field to search!" +msgstr "" + +#: .\cookbook\views\views.py:354 +msgid "" +"To use this search method you must select at least one full text search " +"field!" +msgstr "" + +#: .\cookbook\views\views.py:357 +msgid "Fuzzy search is not compatible with this search method!" +msgstr "" + +#: .\cookbook\views\views.py:437 msgid "" "The setup page can only be used to create the first user! If you have " "forgotten your superuser credentials please consult the django documentation " @@ -2546,44 +2721,168 @@ msgstr "" "aizmirsis sava superlietotāja informāciju, lūdzu, skatiet Django " "dokumentāciju par paroļu atiestatīšanu." -#: .\cookbook\views\views.py:402 +#: .\cookbook\views\views.py:444 msgid "Passwords dont match!" msgstr "Paroles nesakrīt!" -#: .\cookbook\views\views.py:418 +#: .\cookbook\views\views.py:460 msgid "User has been created, please login!" msgstr "Lietotājs ir izveidots, lūdzu, piesakieties!" -#: .\cookbook\views\views.py:434 +#: .\cookbook\views\views.py:476 msgid "Malformed Invite Link supplied!" msgstr "Nepareiza uzaicinājuma saite!" -#: .\cookbook\views\views.py:441 +#: .\cookbook\views\views.py:483 #, fuzzy #| msgid "You are not logged in and therefore cannot view this page!" msgid "You are already member of a space and therefore cannot join this one." msgstr "Jūs neesat pieteicies un tāpēc nevarat skatīt šo lapu!" -#: .\cookbook\views\views.py:452 +#: .\cookbook\views\views.py:494 msgid "Successfully joined space." msgstr "" -#: .\cookbook\views\views.py:458 +#: .\cookbook\views\views.py:500 msgid "Invite Link not valid or already used!" msgstr "Uzaicinājuma saite nav derīga vai jau izmantota!" -#: .\cookbook\views\views.py:522 +#: .\cookbook\views\views.py:564 msgid "" "Reporting share links is not enabled for this instance. Please notify the " "page administrator to report problems." msgstr "" -#: .\cookbook\views\views.py:528 +#: .\cookbook\views\views.py:570 msgid "" "Recipe sharing link has been disabled! For additional information please " "contact the page administrator." msgstr "" +#~ msgid "Utensils" +#~ msgstr "Piederumi" + +#~ msgid "Storage Data" +#~ msgstr "Krātuves dati" + +#~ msgid "Storage Backends" +#~ msgstr "Krātuves backendi" + +#~ msgid "Configure Sync" +#~ msgstr "Konfigurēt sinhronizāciju" + +#~ msgid "Discovered Recipes" +#~ msgstr "Atrastās receptes" + +#~ msgid "Discovery Log" +#~ msgstr "Atrastās žurnāls" + +#~ msgid "Units & Ingredients" +#~ msgstr "Vienības un sastāvdaļas" + +#~ msgid "New Book" +#~ msgstr "Jauna grāmata" + +#~ msgid "Toggle Recipes" +#~ msgstr "Pārslēgt receptes" + +#~ msgid "There are no recipes in this book yet." +#~ msgstr "Šajā grāmatā vēl nav receptes." + +#~ msgid "Waiting Time" +#~ msgstr "Gaidīšanas laiks" + +#~ msgid "Select Keywords" +#~ msgstr "Atlasīt atslēgvārdus" + +#~ msgid "Nutrition" +#~ msgstr "Uzturs" + +#~ msgid "Delete Step" +#~ msgstr "Dzēst soli" + +#~ msgid "Calories" +#~ msgstr "Kalorijas" + +#~ msgid "Carbohydrates" +#~ msgstr "Ogļhidrāti" + +#~ msgid "Fats" +#~ msgstr "Tauki" + +#~ msgid "Proteins" +#~ msgstr "Olbaltumvielas" + +#~ msgid "Step" +#~ msgstr "Solis" + +#~ msgid "Show as header" +#~ msgstr "Rādīt kā galveni" + +#~ msgid "Hide as header" +#~ msgstr "Slēpt kā galveni" + +#~ msgid "Move Up" +#~ msgstr "Pārvietot uz augšu" + +#~ msgid "Move Down" +#~ msgstr "Pārvietot uz leju" + +#~ msgid "Step Name" +#~ msgstr "Soļa nosaukums" + +#~ msgid "Step Type" +#~ msgstr "Soļa tips" + +#~ msgid "Step time in Minutes" +#~ msgstr "Soļa laiks minūtēs" + +#, fuzzy +#~| msgid "Select one" +#~ msgid "Select File" +#~ msgstr "Izvēlies vienu" + +#, fuzzy +#~| msgid "Delete Recipe" +#~ msgid "Select Recipe" +#~ msgstr "Dzēst recepti" + +#~ msgid "Delete Ingredient" +#~ msgstr "Dzēst sastāvdaļu" + +#~ msgid "Make Header" +#~ msgstr "Izveidot galveni" + +#~ msgid "Make Ingredient" +#~ msgstr "Pagatavot sastāvdaļu" + +#~ msgid "Disable Amount" +#~ msgstr "Atspējot summu" + +#~ msgid "Enable Amount" +#~ msgstr "Iespējot summu" + +#~ msgid "Save & View" +#~ msgstr "Saglabāt un skatīt" + +#~ msgid "Add Step" +#~ msgstr "Pievienot soli" + +#~ msgid "Add Nutrition" +#~ msgstr "Pievienot uzturu" + +#~ msgid "Remove Nutrition" +#~ msgstr "Noņemt uzturu" + +#~ msgid "View Recipe" +#~ msgstr "Skatīt recepti" + +#~ msgid "Delete Recipe" +#~ msgstr "Dzēst recepti" + +#~ msgid "Steps" +#~ msgstr "Soļi" + #~ msgid "" #~ "A username is not required, if left blank the new user can choose one." #~ msgstr "" diff --git a/cookbook/locale/nl/LC_MESSAGES/django.mo b/cookbook/locale/nl/LC_MESSAGES/django.mo index 284ded70..df897bf5 100644 Binary files a/cookbook/locale/nl/LC_MESSAGES/django.mo and b/cookbook/locale/nl/LC_MESSAGES/django.mo differ diff --git a/cookbook/locale/nl/LC_MESSAGES/django.po b/cookbook/locale/nl/LC_MESSAGES/django.po index 9d048c89..984fb994 100644 --- a/cookbook/locale/nl/LC_MESSAGES/django.po +++ b/cookbook/locale/nl/LC_MESSAGES/django.po @@ -12,27 +12,26 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-08-12 15:09+0200\n" -"PO-Revision-Date: 2021-07-19 16:40+0000\n" +"POT-Creation-Date: 2021-09-13 22:40+0200\n" +"PO-Revision-Date: 2021-10-02 12:25+0000\n" "Last-Translator: Jesse \n" -"Language-Team: Dutch \n" +"Language-Team: Dutch \n" "Language: nl\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" -"X-Generator: Weblate 4.7.1\n" +"X-Generator: Weblate 4.8\n" -#: .\cookbook\filters.py:23 .\cookbook\templates\base.html:98 -#: .\cookbook\templates\forms\edit_internal_recipe.html:269 +#: .\cookbook\filters.py:23 .\cookbook\templates\base.html:125 #: .\cookbook\templates\forms\ingredients.html:34 #: .\cookbook\templates\space.html:43 .\cookbook\templates\stats.html:28 -#: .\cookbook\templates\url_import.html:270 .\cookbook\views\lists.py:67 +#: .\cookbook\templates\url_import.html:270 msgid "Ingredients" msgstr "Ingrediënten" -#: .\cookbook\forms.py:49 +#: .\cookbook\forms.py:50 msgid "" "Color of the top navigation bar. Not all colors work with all themes, just " "try them out!" @@ -40,13 +39,13 @@ msgstr "" "De kleur van de bovenste navigatie balk. Niet alle kleuren werken met alle " "thema's, je dient ze dus simpelweg uit te proberen!" -#: .\cookbook\forms.py:51 +#: .\cookbook\forms.py:52 msgid "Default Unit to be used when inserting a new ingredient into a recipe." msgstr "" "Standaard eenheid die gebruikt wordt wanneer een nieuw ingrediënt aan een " "recept wordt toegevoegd." -#: .\cookbook\forms.py:53 +#: .\cookbook\forms.py:54 msgid "" "Enables support for fractions in ingredient amounts (e.g. convert decimals " "to fractions automatically)" @@ -54,7 +53,7 @@ msgstr "" "Mogelijk maken van breuken bij ingrediënt aantallen (het automatisch " "converteren van decimalen naar breuken)" -#: .\cookbook\forms.py:56 +#: .\cookbook\forms.py:57 msgid "" "Users with whom newly created meal plan/shopping list entries should be " "shared by default." @@ -62,19 +61,19 @@ msgstr "" "Gebruikers waarmee nieuwe maaltijdplannen/boodschappenlijstjes standaard " "gedeeld moeten worden." -#: .\cookbook\forms.py:58 +#: .\cookbook\forms.py:59 msgid "Show recently viewed recipes on search page." msgstr "Geef recent bekeken recepten op de zoekpagina weer." -#: .\cookbook\forms.py:59 +#: .\cookbook\forms.py:60 msgid "Number of decimals to round ingredients." msgstr "Aantal decimalen om ingrediënten op af te ronden." -#: .\cookbook\forms.py:60 +#: .\cookbook\forms.py:61 msgid "If you want to be able to create and see comments underneath recipes." msgstr "Als je opmerkingen bij recepten wil kunnen maken en zien." -#: .\cookbook\forms.py:62 +#: .\cookbook\forms.py:63 msgid "" "Setting to 0 will disable auto sync. When viewing a shopping list the list " "is updated every set seconds to sync changes someone else might have made. " @@ -87,11 +86,11 @@ msgstr "" "gelijktijdig boodschappen doen maar verbruikt mogelijk extra mobiele data. " "Wordt gereset bij opslaan wanneer de limiet niet bereikt is." -#: .\cookbook\forms.py:65 +#: .\cookbook\forms.py:66 msgid "Makes the navbar stick to the top of the page." msgstr "Zet de navbar vast aan de bovenkant van de pagina." -#: .\cookbook\forms.py:81 +#: .\cookbook\forms.py:82 msgid "" "Both fields are optional. If none are given the username will be displayed " "instead" @@ -99,42 +98,39 @@ msgstr "" "Beide velden zijn optioneel. Indien niks is opgegeven wordt de " "gebruikersnaam weergegeven" -#: .\cookbook\forms.py:102 .\cookbook\forms.py:331 -#: .\cookbook\templates\forms\edit_internal_recipe.html:49 +#: .\cookbook\forms.py:103 .\cookbook\forms.py:334 #: .\cookbook\templates\url_import.html:154 msgid "Name" msgstr "Naam" -#: .\cookbook\forms.py:103 .\cookbook\forms.py:332 -#: .\cookbook\templates\base.html:108 .\cookbook\templates\base.html:169 -#: .\cookbook\templates\forms\edit_internal_recipe.html:85 +#: .\cookbook\forms.py:104 .\cookbook\forms.py:335 #: .\cookbook\templates\space.html:39 .\cookbook\templates\stats.html:24 #: .\cookbook\templates\url_import.html:188 -#: .\cookbook\templates\url_import.html:573 +#: .\cookbook\templates\url_import.html:573 .\cookbook\views\lists.py:112 msgid "Keywords" msgstr "Etiketten" -#: .\cookbook\forms.py:104 +#: .\cookbook\forms.py:105 msgid "Preparation time in minutes" msgstr "Voorbereidingstijd in minuten" -#: .\cookbook\forms.py:105 +#: .\cookbook\forms.py:106 msgid "Waiting time (cooking/baking) in minutes" msgstr "Wacht tijd in minuten (koken en bakken)" -#: .\cookbook\forms.py:106 .\cookbook\forms.py:333 +#: .\cookbook\forms.py:107 .\cookbook\forms.py:336 msgid "Path" msgstr "Pad" -#: .\cookbook\forms.py:107 +#: .\cookbook\forms.py:108 msgid "Storage UID" msgstr "Opslag UID" -#: .\cookbook\forms.py:133 +#: .\cookbook\forms.py:134 msgid "Default" msgstr "Standaard waarde" -#: .\cookbook\forms.py:144 .\cookbook\templates\url_import.html:90 +#: .\cookbook\forms.py:145 .\cookbook\templates\url_import.html:90 msgid "" "To prevent duplicates recipes with the same name as existing ones are " "ignored. Check this box to import everything." @@ -142,51 +138,51 @@ msgstr "" "Om dubbelingen te voorkomen worden recepten met dezelfde naam als een " "bestaand recept genegeerd. Vink aan om alles te importeren." -#: .\cookbook\forms.py:164 +#: .\cookbook\forms.py:165 msgid "New Unit" msgstr "Nieuwe eenheid" -#: .\cookbook\forms.py:165 +#: .\cookbook\forms.py:166 msgid "New unit that other gets replaced by." msgstr "Nieuwe eenheid waarmee de andere wordt vervangen." -#: .\cookbook\forms.py:170 +#: .\cookbook\forms.py:171 msgid "Old Unit" msgstr "Oude eenheid" -#: .\cookbook\forms.py:171 +#: .\cookbook\forms.py:172 msgid "Unit that should be replaced." msgstr "Eenheid die vervangen dient te worden." -#: .\cookbook\forms.py:187 +#: .\cookbook\forms.py:189 msgid "New Food" msgstr "Nieuw Ingredïent" -#: .\cookbook\forms.py:188 +#: .\cookbook\forms.py:190 msgid "New food that other gets replaced by." msgstr "Nieuw Ingredïent dat Oud Ingrediënt vervangt." -#: .\cookbook\forms.py:193 +#: .\cookbook\forms.py:195 msgid "Old Food" msgstr "Oud Ingrediënt" -#: .\cookbook\forms.py:194 +#: .\cookbook\forms.py:196 msgid "Food that should be replaced." msgstr "Te vervangen Ingrediënt." -#: .\cookbook\forms.py:212 +#: .\cookbook\forms.py:214 msgid "Add your comment: " msgstr "Voeg een opmerking toe: " -#: .\cookbook\forms.py:253 +#: .\cookbook\forms.py:256 msgid "Leave empty for dropbox and enter app password for nextcloud." msgstr "Laat leeg voor dropbox en vul het app wachtwoord in voor nextcloud." -#: .\cookbook\forms.py:260 +#: .\cookbook\forms.py:263 msgid "Leave empty for nextcloud and enter api token for dropbox." msgstr "Laat leeg voor nextcloud en vul de api token in voor dropbox." -#: .\cookbook\forms.py:269 +#: .\cookbook\forms.py:272 msgid "" "Leave empty for dropbox and enter only base url for nextcloud (/remote." "php/webdav/ is added automatically)" @@ -194,26 +190,25 @@ msgstr "" "Laat leeg voor dropbox en vul enkel de base url voor nextcloud in. (/" "remote.php/webdav/ wordt automatisch toegevoegd.)" -#: .\cookbook\forms.py:307 +#: .\cookbook\forms.py:310 msgid "Search String" msgstr "Zoekopdracht" -#: .\cookbook\forms.py:334 +#: .\cookbook\forms.py:337 msgid "File ID" msgstr "Bestands ID" -#: .\cookbook\forms.py:370 +#: .\cookbook\forms.py:373 msgid "You must provide at least a recipe or a title." msgstr "Je moet minimaal één recept of titel te specificeren." -#: .\cookbook\forms.py:383 +#: .\cookbook\forms.py:386 msgid "You can list default users to share recipes with in the settings." msgstr "" "Je kan in de instellingen standaard gebruikers in stellen om de recepten met " "te delen." -#: .\cookbook\forms.py:384 -#: .\cookbook\templates\forms\edit_internal_recipe.html:427 +#: .\cookbook\forms.py:387 msgid "" "You can use markdown to format this field. See the docs here" @@ -221,15 +216,15 @@ msgstr "" "Je kunt markdown gebruiken om dit veld te op te maken. Bekijk de documentatie hier" -#: .\cookbook\forms.py:409 +#: .\cookbook\forms.py:412 msgid "Maximum number of users for this space reached." msgstr "Maximum aantal gebruikers voor deze ruimte bereikt." -#: .\cookbook\forms.py:415 +#: .\cookbook\forms.py:418 msgid "Email address already taken!" msgstr "E-mailadres reeds in gebruik!" -#: .\cookbook\forms.py:423 +#: .\cookbook\forms.py:426 msgid "" "An email address is not required but if present the invite link will be send " "to the user." @@ -237,14 +232,99 @@ msgstr "" "Een e-mailadres is niet vereist, maar indien aanwezig zal de " "uitnodigingslink naar de gebruiker worden gestuurd." -#: .\cookbook\forms.py:438 +#: .\cookbook\forms.py:441 msgid "Name already taken." msgstr "Naam reeds in gebruik." -#: .\cookbook\forms.py:449 +#: .\cookbook\forms.py:452 msgid "Accept Terms and Privacy" msgstr "Accepteer voorwaarden" +#: .\cookbook\forms.py:487 +msgid "" +"Select type method of search. Click here for " +"full desciption of choices." +msgstr "" +"Selecteer zoekmethode. Klik hier voor een " +"beschrijving van de keuzes." + +#: .\cookbook\forms.py:488 +msgid "" +"Use fuzzy matching on units, keywords and ingredients when editing and " +"importing recipes." +msgstr "" +"Gebruik 'fuzzy' koppelen bij eenheden, etiketten en ingrediënten bij " +"bewerken en importeren van recepten." + +#: .\cookbook\forms.py:489 +msgid "" +"Fields to search ignoring accents. Selecting this option can improve or " +"degrade search quality depending on language" +msgstr "" +"Velden doorzoeken waarbij accenten genegeerd worden. Het selecteren van " +"deze optie kan de zoekkwaliteit afhankelijk van de taal, zowel verbeteren " +"als verslechteren" + +#: .\cookbook\forms.py:490 +msgid "" +"Fields to search for partial matches. (e.g. searching for 'Pie' will return " +"'pie' and 'piece' and 'soapie')" +msgstr "" +"Velden doorzoeken op gedeelde overeenkomsten. (zoeken op 'Appel' vindt " +"'appel', 'aardappel' en 'appelsap')" + +#: .\cookbook\forms.py:491 +msgid "" +"Fields to search for beginning of word matches. (e.g. searching for 'sa' " +"will return 'salad' and 'sandwich')" +msgstr "" +"Velden doorzoeken op overeenkomsten aan het begin van het woord. (zoeken op " +"'sa' vindt 'salade' en 'sandwich')" + +#: .\cookbook\forms.py:492 +msgid "" +"Fields to 'fuzzy' search. (e.g. searching for 'recpie' will find 'recipe'.) " +"Note: this option will conflict with 'web' and 'raw' methods of search." +msgstr "" +"Velden 'fuzzy' doorzoeken. (zoeken op 'recetp' vindt ook 'recept') Noot: " +"deze optie conflicteert met de zoekmethoden 'web' en 'raw'." + +#: .\cookbook\forms.py:493 +msgid "" +"Fields to full text search. Note: 'web', 'phrase', and 'raw' search methods " +"only function with fulltext fields." +msgstr "" +"Velden doorzoeken op volledige tekst. Noot: Web, Zin en Raw zoekmethoden " +"werken alleen met volledige tekstvelden." + +#: .\cookbook\forms.py:497 +msgid "Search Method" +msgstr "Zoekmethode" + +#: .\cookbook\forms.py:498 +msgid "Fuzzy Lookups" +msgstr "'Fuzzy' zoekopdrachten" + +#: .\cookbook\forms.py:499 +msgid "Ignore Accent" +msgstr "Negeer accent" + +#: .\cookbook\forms.py:500 +msgid "Partial Match" +msgstr "Gedeeltelijke overeenkomst" + +#: .\cookbook\forms.py:501 +msgid "Starts Wtih" +msgstr "Begint met" + +#: .\cookbook\forms.py:502 +msgid "Fuzzy Search" +msgstr "'Fuzzy' zoeken" + +#: .\cookbook\forms.py:503 +msgid "Full Text" +msgstr "Volledige tekst" + #: .\cookbook\helper\AllAuthCustomAdapter.py:36 msgid "" "In order to prevent spam, the requested email was not send. Please wait a " @@ -253,36 +333,36 @@ msgstr "" "Om spam te voorkomen werd de gevraagde e-mail niet verzonden. Wacht een paar " "minuten en probeer het opnieuw." -#: .\cookbook\helper\permission_helper.py:138 -#: .\cookbook\helper\permission_helper.py:161 .\cookbook\views\views.py:151 +#: .\cookbook\helper\permission_helper.py:136 +#: .\cookbook\helper\permission_helper.py:159 .\cookbook\views\views.py:150 msgid "You are not logged in and therefore cannot view this page!" msgstr "Je bent niet ingelogd en kan deze pagina daarom niet bekijken!" -#: .\cookbook\helper\permission_helper.py:142 -#: .\cookbook\helper\permission_helper.py:148 -#: .\cookbook\helper\permission_helper.py:173 -#: .\cookbook\helper\permission_helper.py:218 -#: .\cookbook\helper\permission_helper.py:232 -#: .\cookbook\helper\permission_helper.py:243 -#: .\cookbook\helper\permission_helper.py:254 .\cookbook\views\data.py:40 -#: .\cookbook\views\views.py:162 .\cookbook\views\views.py:169 -#: .\cookbook\views\views.py:259 +#: .\cookbook\helper\permission_helper.py:140 +#: .\cookbook\helper\permission_helper.py:146 +#: .\cookbook\helper\permission_helper.py:171 +#: .\cookbook\helper\permission_helper.py:216 +#: .\cookbook\helper\permission_helper.py:230 +#: .\cookbook\helper\permission_helper.py:241 +#: .\cookbook\helper\permission_helper.py:252 .\cookbook\views\data.py:40 +#: .\cookbook\views\views.py:161 .\cookbook\views\views.py:168 +#: .\cookbook\views\views.py:245 msgid "You do not have the required permissions to view this page!" msgstr "Je hebt niet de benodigde machtigingen om deze pagina te bekijken!" -#: .\cookbook\helper\permission_helper.py:166 -#: .\cookbook\helper\permission_helper.py:189 -#: .\cookbook\helper\permission_helper.py:204 +#: .\cookbook\helper\permission_helper.py:164 +#: .\cookbook\helper\permission_helper.py:187 +#: .\cookbook\helper\permission_helper.py:202 msgid "You cannot interact with this object as it is not owned by you!" msgstr "" "Interactie met dit object is niet mogelijk omdat je niet de eigenaar bent!" -#: .\cookbook\helper\template_helper.py:60 -#: .\cookbook\helper\template_helper.py:62 +#: .\cookbook\helper\template_helper.py:61 +#: .\cookbook\helper\template_helper.py:63 msgid "Could not parse template code." msgstr "Sjablooncode kon niet verwerkt worden." -#: .\cookbook\integration\integration.py:104 +#: .\cookbook\integration\integration.py:119 #: .\cookbook\templates\import.html:14 .\cookbook\templates\import.html:20 #: .\cookbook\templates\import_response.html:7 #: .\cookbook\templates\test.html:14 .\cookbook\templates\test.html:20 @@ -291,18 +371,18 @@ msgstr "Sjablooncode kon niet verwerkt worden." #: .\cookbook\templates\url_import.html:123 #: .\cookbook\templates\url_import.html:317 #: .\cookbook\templates\url_import.html:604 .\cookbook\views\delete.py:60 -#: .\cookbook\views\edit.py:199 +#: .\cookbook\views\edit.py:197 msgid "Import" msgstr "Importeer" -#: .\cookbook\integration\integration.py:185 +#: .\cookbook\integration\integration.py:200 msgid "" "Importer expected a .zip file. Did you choose the correct importer type for " "your data ?" msgstr "" "De importtool verwachtte een .zip bestand. Heb je het juiste type gekozen?" -#: .\cookbook\integration\integration.py:188 +#: .\cookbook\integration\integration.py:203 msgid "" "An unexpected error occurred during the import. Please make sure you have " "uploaded a valid file." @@ -310,11 +390,11 @@ msgstr "" "Er is een onverwachte fout opgetreden tijdens het importeren. Controleer of " "u een geldig bestand hebt geüpload." -#: .\cookbook\integration\integration.py:192 +#: .\cookbook\integration\integration.py:208 msgid "The following recipes were ignored because they already existed:" msgstr "De volgende recepten zijn genegeerd omdat ze al bestonden:" -#: .\cookbook\integration\integration.py:196 +#: .\cookbook\integration\integration.py:212 #, python-format msgid "Imported %s recipes." msgstr "%s recepten geïmporteerd." @@ -332,7 +412,6 @@ msgid "Source" msgstr "Bron" #: .\cookbook\integration\safron.py:23 -#: .\cookbook\templates\forms\edit_internal_recipe.html:79 #: .\cookbook\templates\include\log_cooking.html:16 #: .\cookbook\templates\url_import.html:224 #: .\cookbook\templates\url_import.html:455 @@ -344,7 +423,6 @@ msgid "Waiting time" msgstr "Wachttijd" #: .\cookbook\integration\safron.py:27 -#: .\cookbook\templates\forms\edit_internal_recipe.html:73 msgid "Preparation Time" msgstr "Bereidingstijd" @@ -358,6 +436,24 @@ msgstr "Kookboek" msgid "Section" msgstr "Sectie" +#: .\cookbook\management\commands\rebuildindex.py:14 +msgid "Rebuilds full text search index on Recipe" +msgstr "Herbouwt de volledige tekst zoekindex van Recept" + +#: .\cookbook\management\commands\rebuildindex.py:18 +msgid "Only Postgress databases use full text search, no index to rebuild" +msgstr "" +"Alleen Postgress databases gebruiken volledige tekst zoekmethoden, geen " +"index aanwezig om te herbouwen" + +#: .\cookbook\management\commands\rebuildindex.py:29 +msgid "Recipe index rebuild complete." +msgstr "Recept index herbouw afgerond." + +#: .\cookbook\management\commands\rebuildindex.py:31 +msgid "Recipe index rebuild failed." +msgstr "Recept index herbouw mislukt." + #: .\cookbook\migrations\0047_auto_20200602_1133.py:14 msgid "Breakfast" msgstr "Ontbijt" @@ -374,7 +470,7 @@ msgstr "Avondeten" msgid "Other" msgstr "Overige" -#: .\cookbook\models.py:72 +#: .\cookbook\models.py:144 msgid "" "Maximum file storage for space in MB. 0 for unlimited, -1 to disable file " "upload." @@ -382,70 +478,83 @@ msgstr "" "Maximale bestandsopslag voor ruimte in MB. 0 voor onbeperkt, -1 om uploaden " "van bestanden uit te schakelen." -#: .\cookbook\models.py:123 .\cookbook\templates\search.html:7 +#: .\cookbook\models.py:196 .\cookbook\templates\search.html:7 #: .\cookbook\templates\shopping_list.html:52 msgid "Search" msgstr "Zoeken" -#: .\cookbook\models.py:124 .\cookbook\templates\base.html:92 +#: .\cookbook\models.py:197 .\cookbook\templates\base.html:82 #: .\cookbook\templates\meal_plan.html:5 .\cookbook\views\delete.py:152 -#: .\cookbook\views\edit.py:233 .\cookbook\views\new.py:201 +#: .\cookbook\views\edit.py:231 .\cookbook\views\new.py:200 msgid "Meal-Plan" msgstr "Maaltijdplan" -#: .\cookbook\models.py:125 .\cookbook\templates\base.html:89 +#: .\cookbook\models.py:198 .\cookbook\templates\base.html:90 msgid "Books" msgstr "Boeken" -#: .\cookbook\models.py:133 +#: .\cookbook\models.py:206 msgid "Small" msgstr "Klein" -#: .\cookbook\models.py:133 +#: .\cookbook\models.py:206 msgid "Large" msgstr "Groot" -#: .\cookbook\models.py:133 .\cookbook\templates\generic\new_template.html:6 +#: .\cookbook\models.py:206 .\cookbook\templates\generic\new_template.html:6 #: .\cookbook\templates\generic\new_template.html:14 #: .\cookbook\templates\meal_plan.html:323 msgid "New" msgstr "Nieuw" -#: .\cookbook\models.py:338 -#: .\cookbook\templates\forms\edit_internal_recipe.html:202 +#: .\cookbook\models.py:389 +msgid " is part of a recipe step and cannot be deleted" +msgstr " is deel van een receptstap en kan niet verwijderd worden" + +#: .\cookbook\models.py:429 msgid "Text" msgstr "Tekst" -#: .\cookbook\models.py:338 -#: .\cookbook\templates\forms\edit_internal_recipe.html:203 +#: .\cookbook\models.py:429 msgid "Time" msgstr "Tijd" -#: .\cookbook\models.py:338 -#: .\cookbook\templates\forms\edit_internal_recipe.html:204 -#: .\cookbook\templates\forms\edit_internal_recipe.html:219 +#: .\cookbook\models.py:429 msgid "File" msgstr "Bestand" -#: .\cookbook\models.py:338 -#: .\cookbook\templates\forms\edit_internal_recipe.html:205 -#: .\cookbook\templates\forms\edit_internal_recipe.html:241 +#: .\cookbook\models.py:429 #: .\cookbook\templates\include\recipe_open_modal.html:7 #: .\cookbook\templates\meal_plan.html:247 .\cookbook\views\delete.py:28 -#: .\cookbook\views\edit.py:273 .\cookbook\views\new.py:52 +#: .\cookbook\views\edit.py:271 .\cookbook\views\new.py:52 msgid "Recipe" -msgstr "recept" +msgstr "Recept" -#: .\cookbook\serializer.py:109 +#: .\cookbook\models.py:836 .\cookbook\templates\search_info.html:28 +msgid "Simple" +msgstr "Simpel" + +#: .\cookbook\models.py:837 .\cookbook\templates\search_info.html:33 +msgid "Phrase" +msgstr "Zin" + +#: .\cookbook\models.py:838 .\cookbook\templates\search_info.html:38 +msgid "Web" +msgstr "Web" + +#: .\cookbook\models.py:839 .\cookbook\templates\search_info.html:47 +msgid "Raw" +msgstr "Raw" + +#: .\cookbook\serializer.py:112 msgid "File uploads are not enabled for this Space." msgstr "Bestandsuploads zijn niet ingeschakeld voor deze Ruimte." -#: .\cookbook\serializer.py:117 +#: .\cookbook\serializer.py:125 msgid "You have reached your file upload limit." msgstr "U heeft de uploadlimiet bereikt." -#: .\cookbook\tables.py:35 .\cookbook\templates\books.html:36 -#: .\cookbook\templates\generic\edit_template.html:6 +#: .\cookbook\tables.py:35 .\cookbook\templates\generic\edit_template.html:6 #: .\cookbook\templates\generic\edit_template.html:14 #: .\cookbook\templates\meal_plan.html:281 #: .\cookbook\templates\recipes_table.html:82 @@ -454,11 +563,10 @@ msgstr "U heeft de uploadlimiet bereikt." msgid "Edit" msgstr "Bewerken" -#: .\cookbook\tables.py:124 .\cookbook\tables.py:147 -#: .\cookbook\templates\books.html:38 +#: .\cookbook\tables.py:115 .\cookbook\tables.py:138 #: .\cookbook\templates\generic\delete_template.html:5 #: .\cookbook\templates\generic\delete_template.html:13 -#: .\cookbook\templates\generic\edit_template.html:27 +#: .\cookbook\templates\generic\edit_template.html:28 #: .\cookbook\templates\meal_plan.html:277 #: .\cookbook\templates\recipes_table.html:90 msgid "Delete" @@ -488,17 +596,15 @@ msgstr "E-mailadressen" #: .\cookbook\templates\account\email.html:12 #: .\cookbook\templates\account\password_change.html:11 #: .\cookbook\templates\account\password_set.html:11 -#: .\cookbook\templates\base.html:154 .\cookbook\templates\settings.html:6 +#: .\cookbook\templates\base.html:204 .\cookbook\templates\settings.html:6 #: .\cookbook\templates\settings.html:17 #: .\cookbook\templates\socialaccount\connections.html:10 msgid "Settings" msgstr "Instellingen" #: .\cookbook\templates\account\email.html:13 -#, fuzzy -#| msgid "Add E-mail" msgid "Email" -msgstr "E-mail toevoegen" +msgstr "E-mail" #: .\cookbook\templates\account\email.html:19 msgid "The following e-mail addresses are associated with your account:" @@ -572,7 +678,7 @@ msgstr "" " ." #: .\cookbook\templates\account\email_confirm.html:22 -#: .\cookbook\templates\generic\delete_template.html:21 +#: .\cookbook\templates\generic\delete_template.html:22 msgid "Confirm" msgstr "Bevestigen" @@ -586,7 +692,7 @@ msgstr "" "Deze e-mail bevestigingslink is verlopen of ongeldig.\n" "Vraag een nieuwe bevestigingslink aan." -#: .\cookbook\templates\account\login.html:8 .\cookbook\templates\base.html:189 +#: .\cookbook\templates\account\login.html:8 .\cookbook\templates\base.html:234 msgid "Login" msgstr "Inloggen" @@ -634,22 +740,16 @@ msgstr "Weet je zeker dat je uit wil loggen?" #: .\cookbook\templates\account\password_change.html:6 #: .\cookbook\templates\account\password_change.html:16 #: .\cookbook\templates\account\password_change.html:21 -#, fuzzy -#| msgid "Reset My Password" msgid "Change Password" -msgstr "Reset wachtwoord" +msgstr "Wijzig wachtwoord" #: .\cookbook\templates\account\password_change.html:12 #: .\cookbook\templates\account\password_set.html:12 -#: .\cookbook\templates\settings.html:52 -#, fuzzy -#| msgid "Password Reset" +#: .\cookbook\templates\settings.html:64 msgid "Password" -msgstr "Wachtwoord reset" +msgstr "Wachtwoord" #: .\cookbook\templates\account\password_change.html:22 -#, fuzzy -#| msgid "Lost your password?" msgid "Forgot Password?" msgstr "Wachtwoord vergeten?" @@ -683,10 +783,8 @@ msgstr "" #: .\cookbook\templates\account\password_set.html:6 #: .\cookbook\templates\account\password_set.html:16 #: .\cookbook\templates\account\password_set.html:21 -#, fuzzy -#| msgid "Reset My Password" msgid "Set Password" -msgstr "Reset wachtwoord" +msgstr "Stel een wachtwoord in" #: .\cookbook\templates\account\signup.html:6 msgid "Register" @@ -733,101 +831,86 @@ msgstr "Registratie gesloten" msgid "We are sorry, but the sign up is currently closed." msgstr "Excuses, registratie is op dit moment gesloten." -#: .\cookbook\templates\api_info.html:5 .\cookbook\templates\base.html:179 +#: .\cookbook\templates\api_info.html:5 .\cookbook\templates\base.html:222 #: .\cookbook\templates\rest_framework\api.html:11 msgid "API Documentation" msgstr "API documentatie" -#: .\cookbook\templates\base.html:85 -msgid "Utensils" -msgstr "Kookgerei" - -#: .\cookbook\templates\base.html:95 +#: .\cookbook\templates\base.html:86 msgid "Shopping" msgstr "Winkelen" -#: .\cookbook\templates\base.html:101 +#: .\cookbook\templates\base.html:113 +msgid "Keyword" +msgstr "Etiket" + +#: .\cookbook\templates\base.html:137 +#: .\cookbook\templates\forms\ingredients.html:24 +#: .\cookbook\templates\space.html:41 .\cookbook\templates\stats.html:26 +#: .\cookbook\views\lists.py:146 +msgid "Units" +msgstr "Eenheden" + +#: .\cookbook\templates\base.html:151 #: .\cookbook\templates\shopping_list.html:230 #: .\cookbook\templates\supermarket.html:7 msgid "Supermarket" msgstr "Supermarkt" -#: .\cookbook\templates\base.html:112 .\cookbook\views\delete.py:84 -#: .\cookbook\views\edit.py:102 .\cookbook\views\lists.py:26 -#: .\cookbook\views\new.py:78 -msgid "Keyword" -msgstr "Etiket" - -#: .\cookbook\templates\base.html:114 +#: .\cookbook\templates\base.html:163 msgid "Batch Edit" msgstr "Batchbewerking" -#: .\cookbook\templates\base.html:119 -msgid "Storage Data" -msgstr "Dataopslag" - -#: .\cookbook\templates\base.html:123 -msgid "Storage Backends" -msgstr "Opslag Backends" - -#: .\cookbook\templates\base.html:125 -msgid "Configure Sync" -msgstr "Synchronisatie configureren" - -#: .\cookbook\templates\base.html:127 -msgid "Discovered Recipes" -msgstr "Ontdekte recepten" - -#: .\cookbook\templates\base.html:129 -msgid "Discovery Log" -msgstr "Ontdekkingslogboek" - -#: .\cookbook\templates\base.html:131 .\cookbook\templates\stats.html:10 -msgid "Statistics" -msgstr "Statistieken" - -#: .\cookbook\templates\base.html:133 -msgid "Units & Ingredients" -msgstr "Eenheden & Ingrediënten" - -#: .\cookbook\templates\base.html:135 .\cookbook\templates\index.html:47 -msgid "Import Recipe" -msgstr "Recept importeren" - -#: .\cookbook\templates\base.html:156 .\cookbook\templates\history.html:6 +#: .\cookbook\templates\base.html:175 .\cookbook\templates\history.html:6 #: .\cookbook\templates\history.html:14 msgid "History" msgstr "Geschiedenis" -#: .\cookbook\templates\base.html:159 .\cookbook\templates\space.html:7 +#: .\cookbook\templates\base.html:191 .\cookbook\templates\index.html:47 +msgid "Import Recipe" +msgstr "Recept importeren" + +#: .\cookbook\templates\base.html:193 +#: .\cookbook\templates\shopping_list.html:188 +#: .\cookbook\templates\shopping_list.html:210 +msgid "Create" +msgstr "Maak" + +#: .\cookbook\templates\base.html:207 .\cookbook\templates\space.html:7 #: .\cookbook\templates\space.html:19 msgid "Space Settings" msgstr "Ruimte Instellingen" -#: .\cookbook\templates\base.html:163 .\cookbook\templates\system.html:13 +#: .\cookbook\templates\base.html:212 .\cookbook\templates\system.html:13 msgid "System" msgstr "Systeem" -#: .\cookbook\templates\base.html:165 .\cookbook\templates\base.html:171 +#: .\cookbook\templates\base.html:214 msgid "Admin" msgstr "Beheer" -#: .\cookbook\templates\base.html:175 +#: .\cookbook\templates\base.html:218 msgid "Markdown Guide" msgstr "Markdown gids" -#: .\cookbook\templates\base.html:177 +#: .\cookbook\templates\base.html:220 msgid "GitHub" msgstr "GitHub" -#: .\cookbook\templates\base.html:181 +#: .\cookbook\templates\base.html:224 msgid "API Browser" msgstr "API Browser" -#: .\cookbook\templates\base.html:184 +#: .\cookbook\templates\base.html:227 msgid "Log out" msgstr "Uitloggen" +#: .\cookbook\templates\base.html:229 +#: .\cookbook\templates\generic\list_template.html:14 +#: .\cookbook\templates\space.html:58 .\cookbook\templates\stats.html:43 +msgid "External Recipes" +msgstr "Externe recepten" + #: .\cookbook\templates\batch\edit.html:6 msgid "Batch edit Category" msgstr "Batch bewerking toepassen op categorie" @@ -842,7 +925,7 @@ msgstr "" "Voeg de gespecificeerde etiketten toe aan alle recepten die een woord " "bevatten" -#: .\cookbook\templates\batch\monitor.html:6 .\cookbook\views\edit.py:85 +#: .\cookbook\templates\batch\monitor.html:6 .\cookbook\views\edit.py:83 msgid "Sync" msgstr "Synchroniseren" @@ -862,10 +945,22 @@ msgstr "" msgid "The path must be in the following format" msgstr "Het pad dient het volgende format te hebben" -#: .\cookbook\templates\batch\monitor.html:27 +#: .\cookbook\templates\batch\monitor.html:21 +msgid "Manage External Storage" +msgstr "Beheer externe opslag" + +#: .\cookbook\templates\batch\monitor.html:28 msgid "Sync Now!" msgstr "Synchroniseer nu!" +#: .\cookbook\templates\batch\monitor.html:29 +msgid "Show Recipes" +msgstr "Toon Recepten" + +#: .\cookbook\templates\batch\monitor.html:30 +msgid "Show Log" +msgstr "Toon Log" + #: .\cookbook\templates\batch\waiting.html:4 #: .\cookbook\templates\batch\waiting.html:10 msgid "Importing Recipes" @@ -879,32 +974,10 @@ msgstr "" "Dit kan een aantal minuten duren, afhankelijk van het aantal documenten wat " "op het moment gesynchroniseerd worden. Een ogenblik geduld alstublieft." -#: .\cookbook\templates\books.html:5 .\cookbook\templates\books.html:11 +#: .\cookbook\templates\books.html:7 msgid "Recipe Books" msgstr "Kookboeken" -#: .\cookbook\templates\books.html:15 -msgid "New Book" -msgstr "Nieuw boek" - -#: .\cookbook\templates\books.html:27 .\cookbook\templates\recipe_view.html:26 -msgid "by" -msgstr "door" - -#: .\cookbook\templates\books.html:34 -msgid "Toggle Recipes" -msgstr "Recepten in/uitschakelen" - -#: .\cookbook\templates\books.html:54 -#: .\cookbook\templates\meal_plan_entry.html:48 -#: .\cookbook\templates\recipes_table.html:64 -msgid "Last cooked" -msgstr "Laatst bereid" - -#: .\cookbook\templates\books.html:71 -msgid "There are no recipes in this book yet." -msgstr "In dit boek bestaan nog geen recepten." - #: .\cookbook\templates\export.html:6 .\cookbook\templates\test2.html:6 msgid "Export Recipes" msgstr "Recepten exporteren" @@ -925,213 +998,21 @@ msgid "Import new Recipe" msgstr "Nieuw recept importeren" #: .\cookbook\templates\forms\edit_import_recipe.html:14 -#: .\cookbook\templates\forms\edit_internal_recipe.html:439 -#: .\cookbook\templates\forms\edit_internal_recipe.html:471 #: .\cookbook\templates\generic\edit_template.html:23 #: .\cookbook\templates\generic\new_template.html:23 #: .\cookbook\templates\include\log_cooking.html:28 #: .\cookbook\templates\meal_plan.html:325 -#: .\cookbook\templates\settings.html:46 .\cookbook\templates\settings.html:87 -#: .\cookbook\templates\settings.html:105 +#: .\cookbook\templates\settings.html:58 .\cookbook\templates\settings.html:99 +#: .\cookbook\templates\settings.html:117 +#: .\cookbook\templates\settings.html:162 #: .\cookbook\templates\shopping_list.html:353 msgid "Save" msgstr "Opslaan" #: .\cookbook\templates\forms\edit_internal_recipe.html:7 -#: .\cookbook\templates\forms\edit_internal_recipe.html:34 msgid "Edit Recipe" msgstr "Recept bewerken" -#: .\cookbook\templates\forms\edit_internal_recipe.html:56 -#: .\cookbook\templates\url_import.html:171 -msgid "Description" -msgstr "Beschrijving" - -#: .\cookbook\templates\forms\edit_internal_recipe.html:76 -msgid "Waiting Time" -msgstr "Wachttijd" - -#: .\cookbook\templates\forms\edit_internal_recipe.html:82 -msgid "Servings Text" -msgstr "Porties tekst" - -#: .\cookbook\templates\forms\edit_internal_recipe.html:93 -msgid "Select Keywords" -msgstr "Selecteer etiketten" - -#: .\cookbook\templates\forms\edit_internal_recipe.html:94 -#: .\cookbook\templates\url_import.html:583 -msgid "Add Keyword" -msgstr "Voeg Etiket toe" - -#: .\cookbook\templates\forms\edit_internal_recipe.html:112 -msgid "Nutrition" -msgstr "Voedingswaarde" - -#: .\cookbook\templates\forms\edit_internal_recipe.html:116 -#: .\cookbook\templates\forms\edit_internal_recipe.html:166 -msgid "Delete Step" -msgstr "Verwijder stap" - -#: .\cookbook\templates\forms\edit_internal_recipe.html:120 -msgid "Calories" -msgstr "Calorieën" - -#: .\cookbook\templates\forms\edit_internal_recipe.html:123 -msgid "Carbohydrates" -msgstr "Koolhydraten" - -#: .\cookbook\templates\forms\edit_internal_recipe.html:126 -msgid "Fats" -msgstr "Vetten" - -#: .\cookbook\templates\forms\edit_internal_recipe.html:128 -msgid "Proteins" -msgstr "Eiwitten" - -#: .\cookbook\templates\forms\edit_internal_recipe.html:150 -#: .\cookbook\templates\forms\edit_internal_recipe.html:504 -msgid "Step" -msgstr "Stap" - -#: .\cookbook\templates\forms\edit_internal_recipe.html:171 -msgid "Show as header" -msgstr "Laat als kop zien" - -#: .\cookbook\templates\forms\edit_internal_recipe.html:177 -msgid "Hide as header" -msgstr "Verbergen als kop" - -#: .\cookbook\templates\forms\edit_internal_recipe.html:182 -msgid "Move Up" -msgstr "Verplaats omhoog" - -#: .\cookbook\templates\forms\edit_internal_recipe.html:187 -msgid "Move Down" -msgstr "Verplaats omlaag" - -#: .\cookbook\templates\forms\edit_internal_recipe.html:196 -msgid "Step Name" -msgstr "Stap naam" - -#: .\cookbook\templates\forms\edit_internal_recipe.html:200 -msgid "Step Type" -msgstr "Stap type" - -#: .\cookbook\templates\forms\edit_internal_recipe.html:213 -msgid "Step time in Minutes" -msgstr "Tijdsduur stap in minuten" - -#: .\cookbook\templates\forms\edit_internal_recipe.html:229 -msgid "Select File" -msgstr "Selecteer bestand" - -#: .\cookbook\templates\forms\edit_internal_recipe.html:230 -#: .\cookbook\templates\forms\edit_internal_recipe.html:252 -#: .\cookbook\templates\forms\edit_internal_recipe.html:313 -#: .\cookbook\templates\forms\edit_internal_recipe.html:337 -#: .\cookbook\templates\shopping_list.html:189 -#: .\cookbook\templates\shopping_list.html:211 -#: .\cookbook\templates\shopping_list.html:241 -#: .\cookbook\templates\shopping_list.html:265 -#: .\cookbook\templates\url_import.html:495 -#: .\cookbook\templates\url_import.html:527 -msgid "Select" -msgstr "Selecteer" - -#: .\cookbook\templates\forms\edit_internal_recipe.html:251 -#, fuzzy -#| msgid "Delete Recipe" -msgid "Select Recipe" -msgstr "Verwijder recept" - -#: .\cookbook\templates\forms\edit_internal_recipe.html:311 -#: .\cookbook\templates\shopping_list.html:187 -msgid "Select Unit" -msgstr "Selecteer eenheid" - -#: .\cookbook\templates\forms\edit_internal_recipe.html:312 -#: .\cookbook\templates\forms\edit_internal_recipe.html:336 -#: .\cookbook\templates\shopping_list.html:188 -#: .\cookbook\templates\shopping_list.html:210 -msgid "Create" -msgstr "Maak" - -#: .\cookbook\templates\forms\edit_internal_recipe.html:335 -#: .\cookbook\templates\shopping_list.html:209 -msgid "Select Food" -msgstr "Selecteer ingrediënt" - -#: .\cookbook\templates\forms\edit_internal_recipe.html:352 -#: .\cookbook\templates\meal_plan.html:256 -#: .\cookbook\templates\url_import.html:542 -msgid "Note" -msgstr "Notitie" - -#: .\cookbook\templates\forms\edit_internal_recipe.html:369 -msgid "Delete Ingredient" -msgstr "Verwijder ingrediënt" - -#: .\cookbook\templates\forms\edit_internal_recipe.html:375 -msgid "Make Header" -msgstr "Stel in als kop" - -#: .\cookbook\templates\forms\edit_internal_recipe.html:381 -msgid "Make Ingredient" -msgstr "Maak ingrediënt" - -#: .\cookbook\templates\forms\edit_internal_recipe.html:387 -msgid "Disable Amount" -msgstr "Hoeveelheid uitschakelen" - -#: .\cookbook\templates\forms\edit_internal_recipe.html:393 -msgid "Enable Amount" -msgstr "Hoeveelheid inschakelen" - -#: .\cookbook\templates\forms\edit_internal_recipe.html:398 -msgid "Copy Template Reference" -msgstr "Kopieer sjabloon referentie" - -#: .\cookbook\templates\forms\edit_internal_recipe.html:424 -#: .\cookbook\templates\url_import.html:297 -#: .\cookbook\templates\url_import.html:567 -msgid "Instructions" -msgstr "Instructies" - -#: .\cookbook\templates\forms\edit_internal_recipe.html:437 -#: .\cookbook\templates\forms\edit_internal_recipe.html:468 -msgid "Save & View" -msgstr "Opslaan & bekijken" - -#: .\cookbook\templates\forms\edit_internal_recipe.html:441 -#: .\cookbook\templates\forms\edit_internal_recipe.html:474 -msgid "Add Step" -msgstr "Voeg stap toe" - -#: .\cookbook\templates\forms\edit_internal_recipe.html:444 -#: .\cookbook\templates\forms\edit_internal_recipe.html:478 -msgid "Add Nutrition" -msgstr "Voedingswaarde toevoegen" - -#: .\cookbook\templates\forms\edit_internal_recipe.html:446 -#: .\cookbook\templates\forms\edit_internal_recipe.html:480 -msgid "Remove Nutrition" -msgstr "Voedingswaarde verwijderen" - -#: .\cookbook\templates\forms\edit_internal_recipe.html:448 -#: .\cookbook\templates\forms\edit_internal_recipe.html:483 -msgid "View Recipe" -msgstr "Bekijk recept" - -#: .\cookbook\templates\forms\edit_internal_recipe.html:450 -#: .\cookbook\templates\forms\edit_internal_recipe.html:485 -msgid "Delete Recipe" -msgstr "Verwijder recept" - -#: .\cookbook\templates\forms\edit_internal_recipe.html:491 -msgid "Steps" -msgstr "Stappen" - #: .\cookbook\templates\forms\ingredients.html:15 msgid "Edit Ingredients" msgstr "Ingrediënten bewerken" @@ -1154,11 +1035,6 @@ msgstr "" "recepten aan.\n" " " -#: .\cookbook\templates\forms\ingredients.html:24 -#: .\cookbook\templates\space.html:41 .\cookbook\templates\stats.html:26 -msgid "Units" -msgstr "Eenheden" - #: .\cookbook\templates\forms\ingredients.html:26 msgid "Are you sure that you want to merge these two units?" msgstr "Weet je zeker dat je deze twee eenheden wil samenvoegen?" @@ -1172,29 +1048,33 @@ msgstr "Samenvoegen" msgid "Are you sure that you want to merge these two ingredients?" msgstr "Weet je zeker dat je deze ingrediënten wil samenvoegen?" -#: .\cookbook\templates\generic\delete_template.html:18 +#: .\cookbook\templates\generic\delete_template.html:19 #, python-format msgid "Are you sure you want to delete the %(title)s: %(object)s " msgstr "Weet je zeker dat je %(title)s: %(object)s wil verwijderen " -#: .\cookbook\templates\generic\edit_template.html:30 -msgid "View" -msgstr "Bekijken" +#: .\cookbook\templates\generic\delete_template.html:23 +msgid "Cancel" +msgstr "Annuleer" -#: .\cookbook\templates\generic\edit_template.html:34 +#: .\cookbook\templates\generic\edit_template.html:32 +msgid "View" +msgstr "Bekijk" + +#: .\cookbook\templates\generic\edit_template.html:36 msgid "Delete original file" msgstr "Origineel bestand verwijderen" #: .\cookbook\templates\generic\list_template.html:6 -#: .\cookbook\templates\generic\list_template.html:12 +#: .\cookbook\templates\generic\list_template.html:21 msgid "List" msgstr "Lijst" -#: .\cookbook\templates\generic\list_template.html:25 +#: .\cookbook\templates\generic\list_template.html:34 msgid "Filter" msgstr "Filtreren" -#: .\cookbook\templates\generic\list_template.html:30 +#: .\cookbook\templates\generic\list_template.html:39 msgid "Import all" msgstr "Alles importeren" @@ -1535,6 +1415,11 @@ msgstr "Toon help" msgid "Week iCal export" msgstr "Week iCal export" +#: .\cookbook\templates\meal_plan.html:256 +#: .\cookbook\templates\url_import.html:542 +msgid "Note" +msgstr "Notitie" + #: .\cookbook\templates\meal_plan.html:264 #: .\cookbook\templates\meal_plan_entry.html:18 msgid "Created by" @@ -1621,6 +1506,11 @@ msgstr "" msgid "Meal Plan View" msgstr "Maaltijdenplan bekijken" +#: .\cookbook\templates\meal_plan_entry.html:48 +#: .\cookbook\templates\recipes_table.html:64 +msgid "Last cooked" +msgstr "Laatst bereid" + #: .\cookbook\templates\meal_plan_entry.html:50 msgid "Never cooked before." msgstr "Nog nooit bereid." @@ -1727,8 +1617,12 @@ msgstr "" msgid "Comments" msgstr "Opmerkingen" +#: .\cookbook\templates\recipe_view.html:26 +msgid "by" +msgstr "door" + #: .\cookbook\templates\recipe_view.html:44 .\cookbook\views\delete.py:118 -#: .\cookbook\views\edit.py:179 +#: .\cookbook\views\edit.py:177 msgid "Comment" msgstr "Opmerking" @@ -1760,52 +1654,308 @@ msgstr "Bereiding loggen" msgid "Recipe Home" msgstr "Recept thuis" -#: .\cookbook\templates\settings.html:25 +#: .\cookbook\templates\search_info.html:5 +#: .\cookbook\templates\search_info.html:9 +#: .\cookbook\templates\settings.html:157 +msgid "Search Settings" +msgstr "Zoekinstellingen" + +#: .\cookbook\templates\search_info.html:10 +msgid "" +"\n" +" Creating the best search experience is complicated and weighs " +"heavily on your personal configuration. \n" +" Changing any of the search settings can have significant impact on " +"the speed and quality of the results.\n" +" Search Methods, Trigrams and Full Text Search configurations are " +"only available if you are using Postgres for your database.\n" +" " +msgstr "" +"\n" +" Het maken van de beste zoekervaring is gecompliceerd en sterk " +"afhankelijk van je persoonlijke configuratie. \n" +" Het aanpassen van de zoekinstellingen kan een significante impact op " +"de snelheid en kwaliteit van de resultaten hebben.\n" +" Zoekmethoden Trigram en Volledige tekst zoeken zijn alleen " +"beschikbaar wanneer je Postgress als database gebruikt.\n" +" " + +#: .\cookbook\templates\search_info.html:19 +msgid "Search Methods" +msgstr "Zoekmethoden" + +#: .\cookbook\templates\search_info.html:23 +msgid "" +" \n" +" Full text searches attempt to normalize the words provided to " +"match common variants. For example: 'forked', 'forking', 'forks' will all " +"normalize to 'fork'.\n" +" There are several methods available, described below, that will " +"control how the search behavior should react when multiple words are " +"searched.\n" +" Full technical details on how these operate can be viewed on Postgresql's website.\n" +" " +msgstr "" +" \n" +" Volledige tekst zoeken probeert de woorden te normaliseren om " +"ook varianten te vinden. Bijvoorbeeld: 'appel' en 'appels' worden beiden " +"genormaliseerd naar 'appel'.\n" +" Er zijn verschillende zoekmethoden beschikbaar, hier beneden " +"beschreven, die het zoekgedrag bepalen wanneer er naar meerdere woorden " +"gezocht wordt.\n" +" Volledige technische details kunnen bekene worden op Postgresql's website.\n" +" " + +#: .\cookbook\templates\search_info.html:29 +msgid "" +" \n" +" Simple searches ignore punctuation and common words such as " +"'the', 'a', 'and'. And will treat seperate words as required.\n" +" Searching for 'apple or flour' will return any recipe that " +"includes both 'apple' and 'flour' anywhere in the fields that have been " +"selected for a full text search.\n" +" " +msgstr "" +" \n" +" Simpel zoeken negeert interpunctie en veelgebruikte worden zoals " +"'de', 'het', 'een' of 'en'. Het behandelt de losse woorden zoals gevraagd\n" +" Zoeken naar 'appel' of bloem vindt elk recept dat zowel 'appel' " +"als 'bloem' ergens in de velden die geselecteerd zijn voor een zoekopdracht " +"bevat.\n" +" " + +#: .\cookbook\templates\search_info.html:34 +msgid "" +" \n" +" Phrase searches ignore punctuation, but will search for all of " +"the words in the exact order provided.\n" +" Searching for 'apple or flour' will only return a recipe that " +"includes the exact phrase 'apple or flour' in any of the fields that have " +"been selected for a full text search.\n" +" " +msgstr "" +" \n" +" Zin zoeken negeert interpunctie en zoekt naar alle woorden in de " +"volgorde waarin ze opgegeven zijn.\n" +" Zoeken naar 'appel of bloem' vindt alleen recepten waarbij de " +"exacte zin 'appel of bloem' in een van de velden die geselecteerd zijn voor " +"een zoekopdracht.\n" +" " + +#: .\cookbook\templates\search_info.html:39 +msgid "" +" \n" +" Web searches simulate functionality found on many web search " +"sites supporting special syntax.\n" +" Placing quotes around several words will convert those words " +"into a phrase.\n" +" 'or' is recongized as searching for the word (or phrase) " +"immediately before 'or' OR the word (or phrase) directly after.\n" +" '-' is recognized as searching for recipes that do not include " +"the word (or phrase) that comes immediately after. \n" +" For example searching for 'apple pie' or cherry -butter will " +"return any recipe that includes the phrase 'apple pie' or the word " +"'cherry' \n" +" in any field included in the full text search but exclude any " +"recipe that has the word 'butter' in any field included.\n" +" " +msgstr "" +" \n" +" Web zoeken simuleert functionaliteit zoals gevonden op veel " +"websites, met ondersteuning voor speciale tekens\n" +" Het plaatsen van aanhalingstekens om woorden zorgt ervoor dat ze " +"als zin behandeld worden.\n" +" 'or' kan worden gebruikt om te zoeken naar het woord (of de zin) " +"direct voor of na de 'or'.\n" +" '-' kan worden gebruikt om te zoeken naar recepten waarin het " +"woord (of zin) direct na de '-' niet voorkomt.\n" +" Bijvoorbeeld: zoeken naar \"'stamppot boerenkool' or kersen -" +"vlaai\" vindt recepten die de zin 'stamppot boerenkool' of het woord kersen " +"maar laat geen recepten zien waarbij het woord 'vlaai' in één van de " +"geselecteerde zoekvelden staat.\n" +" " + +#: .\cookbook\templates\search_info.html:48 +msgid "" +" \n" +" Raw search is similar to Web except will take puncuation " +"operators such as '|', '&' and '()'\n" +" " +msgstr "" +" \n" +" Raw zoeken is vergelijkbaar met Web met als toevoeging dat het " +"tekens zoals '|', '&' en '()' accepteert\n" +" " + +#: .\cookbook\templates\search_info.html:59 +msgid "" +" \n" +" Another approach to searching that also requires Postgresql is " +"fuzzy search or trigram similarity. A trigram is a group of three " +"consecutive characters.\n" +" For example searching for 'apple' will create x trigrams 'app', " +"'ppl', 'ple' and will create a score of how closely words match the " +"generated trigrams.\n" +" One benefit of searching trigams is that a search for 'sandwich' " +"will find mispelled words such as 'sandwhich' that would be missed by other " +"methods.\n" +" " +msgstr "" +" \n" +" Een andere benadering voor zoeken die ook Postgresql vereist is " +"'Fuzzy' of Trigram zoeken. Een Trigram is een groep van drie opvolgende " +"karakters.\n" +" Bijvoorbeeld: zoeken op 'appel' maakt 3 trigrams op 'app', 'ppe' " +"en 'pel' en maakt een score van hoe dicht de woorden overeenkomen met de " +"gegenereerde trigrams.\n" +" Eén voordeel van het zoeken met trigrams is dat een zoekopdracht " +"ook verkeerd gespelde woorden, die met andere zoekmethoden gemist worden, " +"vindt.\n" +" " + +#: .\cookbook\templates\search_info.html:69 +msgid "Search Fields" +msgstr "Zoekvelden" + +#: .\cookbook\templates\search_info.html:73 +msgid "" +" \n" +" Unaccent is a special case in that it enables searching a field " +"'unaccented' for each search style attempting to ignore accented values. \n" +" For example when you enable unaccent for 'Name' any search " +"(starts with, contains, trigram) will attempt the search ignoring accented " +"characters.\n" +" \n" +" For the other options, you can enable search on any or all " +"fields and they will be combined together with an assumed 'OR'.\n" +" For example enabling 'Name' for Starts With, 'Name' and " +"'Description' for Partial Match and 'Ingredients' and 'Keywords' for Full " +"Search\n" +" and searching for 'apple' will generate a search that will " +"return recipes that have:\n" +" - A recipe name that starts with 'apple'\n" +" - OR a recipe name that contains 'apple'\n" +" - OR a recipe description that contains 'apple'\n" +" - OR a recipe that will have a full text search match ('apple' " +"or 'apples') in ingredients\n" +" - OR a recipe that will have a full text search match in " +"Keywords\n" +"\n" +" Combining too many fields in too many types of search can have a " +"negative impact on performance, create duplicate results or return " +"unexpected results.\n" +" For example, enabling fuzzy search or partial matches will " +"interfere with web search methods. \n" +" Searching for 'apple -pie' with fuzzy search and full text " +"search will return the recipe Apple Pie. Though it is not included in the " +"full text results, it does match the trigram results.\n" +" " +msgstr "" +" \n" +" Ongeaccentueerd is een optie waarbij letters met accenten met de " +"gekozen zoekmethode genegeerd worden. \n" +" Wanneer je bijvoorbeeld ongeaccentueerd voor 'Naam' activeert " +"wordt bij elke zoekmethode geaccentueerde tekens genegeerd.\n" +" Voor de andere opties kan je zoeken op elk of alle velden " +"waarbij ze dan worden gecombineerd met een aangenomen 'OR'.\n" +" Bijvoorbeeld activatie van 'Naam' voor Begint met, 'Naam' en " +"'Beschrijving' voor Gedeeltelijke overeenkomst en 'Ingrediënten' en " +"'Etiketten' voor Volledig zoeken vindt de volgende recepten:\n" +" - Een receptnaam die begint met 'appel'\n" +" - OF een receptnaam die 'appel' bevat\n" +" - OF een receptbeschrijving die 'appel' bevat\n" +" - OF een recept met een volledige tekst overeenkomst ('appel' of " +"'appels') in Ingredienten\n" +" - OF een recept met een volledige tekst overeenkomst in " +"Etiketten\n" +"\n" +" Te veel velden combineren in te veel verschillende zoekmethoden " +"kan een negatieve impact op de prestaties hebben, dubbele resultaten creëren " +"of tot onverwachte resultaten leiden.\n" +" Het activeren van 'Fuzzy' zoeken of gedeeltelijke overeenkomsten " +"belemmert 'web' zoekmethoden. \n" +" Zoeken naar 'appel - taart' met 'Fuzzy' zoeken en volledige " +"tekst zoeken vindt het recept Appeltaart. Ondanks dat het niet in de " +"volledige tekst zoeken resultaten staat, komt het overeen met de " +"trigramresultaten.\n" +" " + +#: .\cookbook\templates\search_info.html:95 +msgid "Search Index" +msgstr "Zoekindex" + +#: .\cookbook\templates\search_info.html:99 +msgid "" +" \n" +" Trigram search and Full Text Search both rely on database " +"indexes to perform effectively. \n" +" You can rebuild the indexes on all fields in the Admin page for " +"Recipes and selecting all recipes and running 'rebuild index for selected " +"recipes'\n" +" You can also rebuild indexes at the command line by executing " +"the management command 'python manage.py rebuildindex'\n" +" " +msgstr "" +" \n" +" Trigram zoeken en Volledige tekst zoeken gebruiken beiden " +"database indices om effectief te kunnen zoeken. \n" +" Je kan de indices herbouwen op alle velden in de " +"Administratiepagina voor Recepten en vervolgens alle recepten te selecteren " +"en 'herbouw index voor geselecteerde recepten' te activeren.\n" +" Je kan ook indices herbouwen op de command line met het " +"managementcommando 'python manage.py rebuildindex'\n" +" " + +#: .\cookbook\templates\settings.html:27 msgid "Account" msgstr "Account" -#: .\cookbook\templates\settings.html:29 +#: .\cookbook\templates\settings.html:33 msgid "Preferences" msgstr "Voorkeuren" -#: .\cookbook\templates\settings.html:33 +#: .\cookbook\templates\settings.html:39 msgid "API-Settings" msgstr "API-instellingen" -#: .\cookbook\templates\settings.html:41 +#: .\cookbook\templates\settings.html:45 +msgid "Search-Settings" +msgstr "Zoek instellingen" + +#: .\cookbook\templates\settings.html:53 msgid "Name Settings" msgstr "Naam instellingen" -#: .\cookbook\templates\settings.html:49 -#, fuzzy -#| msgid "Account Connections" +#: .\cookbook\templates\settings.html:61 msgid "Account Settings" -msgstr "Account verbindingen" +msgstr "Account instellingen" -#: .\cookbook\templates\settings.html:51 -#, fuzzy -#| msgid "Add E-mail" +#: .\cookbook\templates\settings.html:63 msgid "Emails" -msgstr "E-mail toevoegen" +msgstr "E-mails" -#: .\cookbook\templates\settings.html:54 +#: .\cookbook\templates\settings.html:66 #: .\cookbook\templates\socialaccount\connections.html:11 msgid "Social" msgstr "Socials" -#: .\cookbook\templates\settings.html:66 +#: .\cookbook\templates\settings.html:78 msgid "Language" msgstr "Taal" -#: .\cookbook\templates\settings.html:96 +#: .\cookbook\templates\settings.html:108 msgid "Style" msgstr "Stijl" -#: .\cookbook\templates\settings.html:116 +#: .\cookbook\templates\settings.html:128 msgid "API Token" msgstr "API Token" -#: .\cookbook\templates\settings.html:117 +#: .\cookbook\templates\settings.html:129 msgid "" "You can use both basic authentication and token based authentication to " "access the REST API." @@ -1813,7 +1963,7 @@ msgstr "" "Je kan zowel basale verificatie als verificatie op basis van tokens " "gebruiken om toegang tot de REST API te krijgen." -#: .\cookbook\templates\settings.html:134 +#: .\cookbook\templates\settings.html:146 msgid "" "Use the token as an Authorization header prefixed by the word token as shown " "in the following examples:" @@ -1821,7 +1971,7 @@ msgstr "" "Gebruik de token als een 'Authorization header'voorafgegaan door het woord " "token zoals in de volgende voorbeelden:" -#: .\cookbook\templates\settings.html:136 +#: .\cookbook\templates\settings.html:148 msgid "or" msgstr "of" @@ -1863,6 +2013,23 @@ msgstr "Zet op lijst" msgid "Amount" msgstr "Hoeveelheid" +#: .\cookbook\templates\shopping_list.html:187 +msgid "Select Unit" +msgstr "Selecteer eenheid" + +#: .\cookbook\templates\shopping_list.html:189 +#: .\cookbook\templates\shopping_list.html:211 +#: .\cookbook\templates\shopping_list.html:241 +#: .\cookbook\templates\shopping_list.html:265 +#: .\cookbook\templates\url_import.html:495 +#: .\cookbook\templates\url_import.html:527 +msgid "Select" +msgstr "Selecteer" + +#: .\cookbook\templates\shopping_list.html:209 +msgid "Select Food" +msgstr "Selecteer ingrediënt" + #: .\cookbook\templates\shopping_list.html:240 msgid "Select Supermarket" msgstr "Selecteer supermarkt" @@ -1911,10 +2078,8 @@ msgid "Add a 3rd Party Account" msgstr "Voeg account van een 3e partij toe" #: .\cookbook\templates\socialaccount\signup.html:5 -#, fuzzy -#| msgid "Sign Up" msgid "Signup" -msgstr "Registreer" +msgstr "Registratie" #: .\cookbook\templates\socialaccount\signup.html:10 #, python-format @@ -1923,6 +2088,9 @@ msgid "" " %(provider_name)s account to login to\n" " %(site_name)s. As a final step, please complete the following form:" msgstr "" +"Je staat op het punt om met je\n" +"%(provider_name)s account in te loggen op\n" +"%(site_name)s. Vul als laatste stap het volgende formulier in:" #: .\cookbook\templates\socialaccount\snippets\provider_list.html:23 #: .\cookbook\templates\socialaccount\snippets\provider_list.html:31 @@ -1938,16 +2106,12 @@ msgstr "" #: .\cookbook\templates\socialaccount\snippets\provider_list.html:111 #: .\cookbook\templates\socialaccount\snippets\provider_list.html:119 #: .\cookbook\templates\socialaccount\snippets\provider_list.html:127 -#, fuzzy -#| msgid "Sign In" msgid "Sign in using" -msgstr "Log in" +msgstr "Log in met" #: .\cookbook\templates\space.html:23 -#, fuzzy -#| msgid "No Space" msgid "Space:" -msgstr "Geen ruimte" +msgstr "Ruimte:" #: .\cookbook\templates\space.html:24 msgid "Manage Subscription" @@ -1969,10 +2133,6 @@ msgstr "Object statistieken" msgid "Recipes without Keywords" msgstr "Recepten zonder etiketten" -#: .\cookbook\templates\space.html:58 .\cookbook\templates\stats.html:43 -msgid "External Recipes" -msgstr "Externe recepten" - #: .\cookbook\templates\space.html:60 .\cookbook\templates\stats.html:45 msgid "Internal Recipes" msgstr "Interne recepten" @@ -2022,7 +2182,7 @@ msgid "There are no members in your space yet!" msgstr "Er zitten nog geen leden in jouw ruimte!" #: .\cookbook\templates\space.html:130 .\cookbook\templates\system.html:21 -#: .\cookbook\views\lists.py:115 +#: .\cookbook\views\lists.py:100 msgid "Invite Links" msgstr "Uitnodigingslink" @@ -2030,6 +2190,10 @@ msgstr "Uitnodigingslink" msgid "Stats" msgstr "Statistieken" +#: .\cookbook\templates\stats.html:10 +msgid "Statistics" +msgstr "Statistieken" + #: .\cookbook\templates\system.html:22 msgid "Show Links" msgstr "Toon links" @@ -2210,6 +2374,10 @@ msgstr "Wis inhoud" msgid "Text dragged here will be appended to the name." msgstr "Hierheen gesleepte tekst wordt aan de naam toegevoegd." +#: .\cookbook\templates\url_import.html:171 +msgid "Description" +msgstr "Beschrijving" + #: .\cookbook\templates\url_import.html:175 msgid "Text dragged here will be appended to the description." msgstr "Hierheen gesleepte tekst wordt aan de beschrijving toegevoegd." @@ -2235,6 +2403,11 @@ msgid "Ingredients dragged here will be appended to current list." msgstr "" "Hierheen gesleepte Ingrediënten worden aan de huidige lijst toegevoegd." +#: .\cookbook\templates\url_import.html:297 +#: .\cookbook\templates\url_import.html:567 +msgid "Instructions" +msgstr "Instructies" + #: .\cookbook\templates\url_import.html:302 msgid "" "Recipe instructions dragged here will be appended to current instructions." @@ -2287,6 +2460,10 @@ msgstr "Beschrijving recept" msgid "Select one" msgstr "Selecteer één" +#: .\cookbook\templates\url_import.html:583 +msgid "Add Keyword" +msgstr "Voeg Etiket toe" + #: .\cookbook\templates\url_import.html:596 msgid "All Keywords" msgstr "Alle etiketten" @@ -2329,37 +2506,96 @@ msgstr "GitHub issues" msgid "Recipe Markup Specification" msgstr "Recept opmaak specificatie" -#: .\cookbook\views\api.py:79 +#: .\cookbook\views\api.py:82 .\cookbook\views\api.py:131 msgid "Parameter updated_at incorrectly formatted" msgstr "Parameter updatet_at is onjuist geformateerd" -#: .\cookbook\views\api.py:580 .\cookbook\views\views.py:303 +#: .\cookbook\views\api.py:151 +#, python-brace-format +msgid "No {self.basename} with id {pk} exists" +msgstr "Er bestaat geen {self.basename} met id {pk}" + +#: .\cookbook\views\api.py:155 .\cookbook\views\edit.py:300 +#: .\cookbook\views\edit.py:316 +msgid "Cannot merge with the same object!" +msgstr "Kan niet met hetzelfde object samenvoegen!" + +#: .\cookbook\views\api.py:162 +#, python-brace-format +msgid "No {self.basename} with id {target} exists" +msgstr "Er bestaat geen {self.basename} met id {target}" + +#: .\cookbook\views\api.py:167 +msgid "Cannot merge with child object!" +msgstr "Kan niet met kindobject samenvoegen!" + +#: .\cookbook\views\api.py:195 +#, python-brace-format +msgid "{source.name} was merged successfully with {target.name}" +msgstr "{source.name} is succesvol samengevoegd met {target.name}" + +#: .\cookbook\views\api.py:199 +#, python-brace-format +msgid "An error occurred attempting to merge {source.name} with {target.name}" +msgstr "" +"Er is een error opgetreden bij het samenvoegen van {source.name} met {target." +"name}" + +#: .\cookbook\views\api.py:239 +#, python-brace-format +msgid "No {self.basename} with id {child} exists" +msgstr "Er bestaat geen {self.basename} met id {child}" + +#: .\cookbook\views\api.py:248 +#, python-brace-format +msgid "{child.name} was moved successfully to the root." +msgstr "{child.name} is succesvol verplaatst naar het hoogste niveau." + +#: .\cookbook\views\api.py:251 .\cookbook\views\api.py:269 +msgid "An error occurred attempting to move " +msgstr "Er is een error opgetreden bij het verplaatsen " + +#: .\cookbook\views\api.py:254 +msgid "Cannot move an object to itself!" +msgstr "Kan object niet verplaatsen naar zichzelf!" + +#: .\cookbook\views\api.py:260 +#, python-brace-format +msgid "No {self.basename} with id {parent} exists" +msgstr "Er bestaat geen {self.basename} met id {parent}" + +#: .\cookbook\views\api.py:266 +#, python-brace-format +msgid "{child.name} was moved successfully to parent {parent.name}" +msgstr "{child.name} is succesvol verplaatst naar {parent.name}" + +#: .\cookbook\views\api.py:704 .\cookbook\views\views.py:289 msgid "This feature is not available in the demo version!" msgstr "Deze optie is niet beschikbaar in de demo versie!" -#: .\cookbook\views\api.py:603 +#: .\cookbook\views\api.py:727 msgid "Sync successful!" msgstr "Synchronisatie succesvol!" -#: .\cookbook\views\api.py:608 +#: .\cookbook\views\api.py:732 msgid "Error synchronizing with Storage" msgstr "Er is een fout opgetreden bij het synchroniseren met Opslag" -#: .\cookbook\views\api.py:686 +#: .\cookbook\views\api.py:810 msgid "Nothing to do." msgstr "Niks te doen." -#: .\cookbook\views\api.py:701 +#: .\cookbook\views\api.py:825 msgid "The requested site provided malformed data and cannot be read." msgstr "" "De opgevraagde site heeft misvormde data verstrekt en kan niet gelezen " "worden." -#: .\cookbook\views\api.py:708 +#: .\cookbook\views\api.py:832 msgid "The requested page could not be found." msgstr "De opgevraagde pagina kon niet gevonden worden." -#: .\cookbook\views\api.py:717 +#: .\cookbook\views\api.py:841 msgid "" "The requested site does not provide any recognized data format to import the " "recipe from." @@ -2367,11 +2603,11 @@ msgstr "" "De opgevraagde site biedt geen bekend gegevensformaat aan om het recept van " "te importeren." -#: .\cookbook\views\api.py:731 +#: .\cookbook\views\api.py:855 msgid "No useable data could be found." msgstr "Er is geen bruikbare data gevonden." -#: .\cookbook\views\api.py:747 +#: .\cookbook\views\api.py:871 msgid "I couldn't find anything to do." msgstr "Ik kon niks vinden om te doen." @@ -2398,8 +2634,8 @@ msgstr[1] "Batch bewerking voldaan. %(count)d Recepten zijn geupdatet." msgid "Monitor" msgstr "Bewaker" -#: .\cookbook\views\delete.py:96 .\cookbook\views\lists.py:102 -#: .\cookbook\views\new.py:98 +#: .\cookbook\views\delete.py:96 .\cookbook\views\lists.py:86 +#: .\cookbook\views\new.py:97 msgid "Storage Backend" msgstr "Opslag backend" @@ -2410,8 +2646,8 @@ msgstr "" "Dit Opslag backend kon niet verwijderd worden omdat het gebruikt wordt in " "tenminste een Bewaker." -#: .\cookbook\views\delete.py:129 .\cookbook\views\edit.py:213 -#: .\cookbook\views\new.py:156 +#: .\cookbook\views\delete.py:129 .\cookbook\views\edit.py:211 +#: .\cookbook\views\new.py:155 msgid "Recipe Book" msgstr "Kookboek" @@ -2419,47 +2655,39 @@ msgstr "Kookboek" msgid "Bookmarks" msgstr "Bladwijzers" -#: .\cookbook\views\delete.py:163 .\cookbook\views\new.py:252 +#: .\cookbook\views\delete.py:163 .\cookbook\views\new.py:251 msgid "Invite Link" msgstr "Uitnodigingslink" -#: .\cookbook\views\edit.py:119 -msgid "Food" -msgstr "Ingrediënt" - -#: .\cookbook\views\edit.py:128 +#: .\cookbook\views\edit.py:126 msgid "You cannot edit this storage!" msgstr "Je kan deze opslag niet bewerken!" -#: .\cookbook\views\edit.py:148 +#: .\cookbook\views\edit.py:146 msgid "Storage saved!" msgstr "Opslag opgeslagen!" -#: .\cookbook\views\edit.py:154 +#: .\cookbook\views\edit.py:152 msgid "There was an error updating this storage backend!" msgstr "Er is een fout opgetreden bij het updaten van deze opslag backend!" -#: .\cookbook\views\edit.py:165 +#: .\cookbook\views\edit.py:163 msgid "Storage" msgstr "Opslag" -#: .\cookbook\views\edit.py:261 +#: .\cookbook\views\edit.py:259 msgid "Changes saved!" msgstr "Wijzigingen opgeslagen!" -#: .\cookbook\views\edit.py:265 +#: .\cookbook\views\edit.py:263 msgid "Error saving changes!" msgstr "Fout bij het opslaan van de wijzigingen!" -#: .\cookbook\views\edit.py:299 +#: .\cookbook\views\edit.py:298 msgid "Units merged!" msgstr "Eenheden samengevoegd!" -#: .\cookbook\views\edit.py:301 .\cookbook\views\edit.py:317 -msgid "Cannot merge with the same object!" -msgstr "Kan niet met hetzelfde object samenvoegen!" - -#: .\cookbook\views\edit.py:315 +#: .\cookbook\views\edit.py:314 msgid "Foods merged!" msgstr "Ingrediënten samengevoegd!" @@ -2471,68 +2699,80 @@ msgstr "Importeren is voor deze provider niet geïmplementeerd" msgid "Exporting is not implemented for this provider" msgstr "Exporteren is voor deze provider niet geïmplementeerd" -#: .\cookbook\views\lists.py:40 +#: .\cookbook\views\lists.py:26 msgid "Import Log" msgstr "Import logboek" -#: .\cookbook\views\lists.py:53 +#: .\cookbook\views\lists.py:39 msgid "Discovery" msgstr "Ontdekken" -#: .\cookbook\views\lists.py:85 +#: .\cookbook\views\lists.py:69 msgid "Shopping Lists" msgstr "Boodschappenlijst" -#: .\cookbook\views\new.py:123 +#: .\cookbook\views\lists.py:129 +msgid "Foods" +msgstr "Ingrediënten" + +#: .\cookbook\views\lists.py:163 +msgid "Supermarkets" +msgstr "Supermarkten" + +#: .\cookbook\views\lists.py:179 +msgid "Shopping Categories" +msgstr "Boodschappen categorieën" + +#: .\cookbook\views\new.py:122 msgid "Imported new recipe!" msgstr "Nieuw recept geïmporteerd!" -#: .\cookbook\views\new.py:126 +#: .\cookbook\views\new.py:125 msgid "There was an error importing this recipe!" msgstr "Er is een fout opgetreden bij het importeren van dit recept!" -#: .\cookbook\views\new.py:226 +#: .\cookbook\views\new.py:225 msgid "Hello" msgstr "Hallo" -#: .\cookbook\views\new.py:226 +#: .\cookbook\views\new.py:225 msgid "You have been invited by " msgstr "Je bent uitgenodigd door " -#: .\cookbook\views\new.py:227 +#: .\cookbook\views\new.py:226 msgid " to join their Tandoor Recipes space " msgstr " om zijn/haar Tandoor Recepten ruimte " -#: .\cookbook\views\new.py:228 +#: .\cookbook\views\new.py:227 msgid "Click the following link to activate your account: " msgstr "Klik om de volgende link om je account te activeren: " -#: .\cookbook\views\new.py:229 +#: .\cookbook\views\new.py:228 msgid "" "If the link does not work use the following code to manually join the space: " msgstr "" "Als de linkt niet werkt, gebruik dan de volgende code om handmatig tot de " "ruimte toe te treden: " -#: .\cookbook\views\new.py:230 +#: .\cookbook\views\new.py:229 msgid "The invitation is valid until " msgstr "De uitnodiging is geldig tot " -#: .\cookbook\views\new.py:231 +#: .\cookbook\views\new.py:230 msgid "" "Tandoor Recipes is an Open Source recipe manager. Check it out on GitHub " msgstr "" "Tandoor Recepten is een Open Source recepten manager. Bekijk het op GitHub " -#: .\cookbook\views\new.py:234 +#: .\cookbook\views\new.py:233 msgid "Tandoor Recipes Invite" msgstr "Tandoor Recepten uitnodiging" -#: .\cookbook\views\new.py:241 +#: .\cookbook\views\new.py:240 msgid "Invite link successfully send to user." msgstr "Uitnodigingslink succesvol verstuurd naar gebruiker." -#: .\cookbook\views\new.py:244 +#: .\cookbook\views\new.py:243 msgid "" "You have send to many emails, please share the link manually or wait a few " "hours." @@ -2540,12 +2780,12 @@ msgstr "" "Je hebt te veel e-mails verstuurd, deel de link handmatig of wacht enkele " "uren." -#: .\cookbook\views\new.py:246 +#: .\cookbook\views\new.py:245 msgid "Email to user could not be send, please share link manually." msgstr "" "E-mail aan gebruiker kon niet verzonden worden, deel de link handmatig." -#: .\cookbook\views\views.py:129 +#: .\cookbook\views\views.py:128 msgid "" "You have successfully created your own recipe space. Start by adding some " "recipes or invite other people to join you." @@ -2553,15 +2793,31 @@ msgstr "" "Je hebt je eigen recepten ruimte succesvol aangemaakt. Start met het " "toevoegen van recepten of nodig anderen uit om je te vergezellen." -#: .\cookbook\views\views.py:177 +#: .\cookbook\views\views.py:176 msgid "You do not have the required permissions to perform this action!" msgstr "Je beschikt niet over de juiste rechten om deze actie uit te voeren!" -#: .\cookbook\views\views.py:188 +#: .\cookbook\views\views.py:187 msgid "Comment saved!" msgstr "Opmerking opgeslagen!" -#: .\cookbook\views\views.py:395 +#: .\cookbook\views\views.py:351 +msgid "You must select at least one field to search!" +msgstr "Je moet tenminste één veld om te doorzoeken selecteren!" + +#: .\cookbook\views\views.py:354 +msgid "" +"To use this search method you must select at least one full text search " +"field!" +msgstr "" +"Om deze zoekmethode te gebruiken moet je tenminste één volledig tekstveld " +"selecteren!" + +#: .\cookbook\views\views.py:357 +msgid "Fuzzy search is not compatible with this search method!" +msgstr "'Fuzzy' zoeken is niet te gebruiken met deze zoekmethode!" + +#: .\cookbook\views\views.py:437 msgid "" "The setup page can only be used to create the first user! If you have " "forgotten your superuser credentials please consult the django documentation " @@ -2572,41 +2828,171 @@ msgstr "" "documentatie raad moeten plegen voor een methode om je wachtwoord te " "resetten." -#: .\cookbook\views\views.py:402 +#: .\cookbook\views\views.py:444 msgid "Passwords dont match!" msgstr "Wachtwoorden komen niet overeen!" -#: .\cookbook\views\views.py:418 +#: .\cookbook\views\views.py:460 msgid "User has been created, please login!" msgstr "Gebruiker is gecreëerd, Log in alstublieft!" -#: .\cookbook\views\views.py:434 +#: .\cookbook\views\views.py:476 msgid "Malformed Invite Link supplied!" msgstr "Onjuiste uitnodigingslink opgegeven!" -#: .\cookbook\views\views.py:441 +#: .\cookbook\views\views.py:483 msgid "You are already member of a space and therefore cannot join this one." msgstr "Je bent al lid van een ruimte en kan daardoor niet toetreden tot deze." -#: .\cookbook\views\views.py:452 +#: .\cookbook\views\views.py:494 msgid "Successfully joined space." msgstr "Succesvol toegetreden tot ruimte." -#: .\cookbook\views\views.py:458 +#: .\cookbook\views\views.py:500 msgid "Invite Link not valid or already used!" msgstr "De uitnodigingslink is niet valide of al gebruikt!" -#: .\cookbook\views\views.py:522 +#: .\cookbook\views\views.py:564 msgid "" "Reporting share links is not enabled for this instance. Please notify the " "page administrator to report problems." msgstr "" +"Het rapporteren van gedeelde links is niet geactiveerd voor deze instantie. " +"Rapporteer problemen bij de beheerder van de pagina." -#: .\cookbook\views\views.py:528 +#: .\cookbook\views\views.py:570 msgid "" "Recipe sharing link has been disabled! For additional information please " "contact the page administrator." msgstr "" +"Links voor het delen van recepten zijn gedeactiveerd. Neem contact op met de " +"paginabeheerder voor aanvullende informatie." + +#~ msgid "Utensils" +#~ msgstr "Kookgerei" + +#~ msgid "Storage Data" +#~ msgstr "Dataopslag" + +#~ msgid "Storage Backends" +#~ msgstr "Opslag Backends" + +#~ msgid "Configure Sync" +#~ msgstr "Synchronisatie configureren" + +#~ msgid "Discovered Recipes" +#~ msgstr "Ontdekte recepten" + +#~ msgid "Discovery Log" +#~ msgstr "Ontdekkingslogboek" + +#~ msgid "Units & Ingredients" +#~ msgstr "Eenheden & Ingrediënten" + +#~ msgid "New Book" +#~ msgstr "Nieuw boek" + +#~ msgid "Toggle Recipes" +#~ msgstr "Recepten in/uitschakelen" + +#~ msgid "There are no recipes in this book yet." +#~ msgstr "In dit boek bestaan nog geen recepten." + +#~ msgid "Waiting Time" +#~ msgstr "Wachttijd" + +#~ msgid "Servings Text" +#~ msgstr "Porties tekst" + +#~ msgid "Select Keywords" +#~ msgstr "Selecteer etiketten" + +#~ msgid "Nutrition" +#~ msgstr "Voedingswaarde" + +#~ msgid "Delete Step" +#~ msgstr "Verwijder stap" + +#~ msgid "Calories" +#~ msgstr "Calorieën" + +#~ msgid "Carbohydrates" +#~ msgstr "Koolhydraten" + +#~ msgid "Fats" +#~ msgstr "Vetten" + +#~ msgid "Proteins" +#~ msgstr "Eiwitten" + +#~ msgid "Step" +#~ msgstr "Stap" + +#~ msgid "Show as header" +#~ msgstr "Laat als kop zien" + +#~ msgid "Hide as header" +#~ msgstr "Verbergen als kop" + +#~ msgid "Move Up" +#~ msgstr "Verplaats omhoog" + +#~ msgid "Move Down" +#~ msgstr "Verplaats omlaag" + +#~ msgid "Step Name" +#~ msgstr "Stap naam" + +#~ msgid "Step Type" +#~ msgstr "Stap type" + +#~ msgid "Step time in Minutes" +#~ msgstr "Tijdsduur stap in minuten" + +#~ msgid "Select File" +#~ msgstr "Selecteer bestand" + +#~ msgid "Select Recipe" +#~ msgstr "Selecteer recept" + +#~ msgid "Delete Ingredient" +#~ msgstr "Verwijder ingrediënt" + +#~ msgid "Make Header" +#~ msgstr "Stel in als kop" + +#~ msgid "Make Ingredient" +#~ msgstr "Maak ingrediënt" + +#~ msgid "Disable Amount" +#~ msgstr "Hoeveelheid uitschakelen" + +#~ msgid "Enable Amount" +#~ msgstr "Hoeveelheid inschakelen" + +#~ msgid "Copy Template Reference" +#~ msgstr "Kopieer sjabloon referentie" + +#~ msgid "Save & View" +#~ msgstr "Opslaan & bekijken" + +#~ msgid "Add Step" +#~ msgstr "Voeg stap toe" + +#~ msgid "Add Nutrition" +#~ msgstr "Voedingswaarde toevoegen" + +#~ msgid "Remove Nutrition" +#~ msgstr "Voedingswaarde verwijderen" + +#~ msgid "View Recipe" +#~ msgstr "Bekijk recept" + +#~ msgid "Delete Recipe" +#~ msgstr "Verwijder recept" + +#~ msgid "Steps" +#~ msgstr "Stappen" #~ msgid "Password Settings" #~ msgstr "Wachtwoord instellingen" @@ -2614,9 +3000,6 @@ msgstr "" #~ msgid "Email Settings" #~ msgstr "E-mail instellingen" -#~ msgid "Manage Email Settings" -#~ msgstr "Beheer e-mail instellingen" - #~ msgid "Manage Social Accounts" #~ msgstr "Beheer sociale media accounts" diff --git a/cookbook/locale/pl/LC_MESSAGES/django.mo b/cookbook/locale/pl/LC_MESSAGES/django.mo index 316de277..e90dadc6 100644 Binary files a/cookbook/locale/pl/LC_MESSAGES/django.mo and b/cookbook/locale/pl/LC_MESSAGES/django.mo differ diff --git a/cookbook/locale/pl/LC_MESSAGES/django.po b/cookbook/locale/pl/LC_MESSAGES/django.po index afd2c168..a981e0b5 100644 --- a/cookbook/locale/pl/LC_MESSAGES/django.po +++ b/cookbook/locale/pl/LC_MESSAGES/django.po @@ -6,20 +6,23 @@ # Translators: # retmas , 2021 # -#, fuzzy msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2021-02-09 18:01+0100\n" -"PO-Revision-Date: 2020-06-02 19:28+0000\n" -"Last-Translator: retmas , 2021\n" -"Language-Team: Polish (https://www.transifex.com/django-recipes/teams/110507/pl/)\n" +"PO-Revision-Date: 2021-10-02 12:25+0000\n" +"Last-Translator: Tomasz Klimczak \n" +"Language-Team: Polish \n" +"Language: pl\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"Language: pl\n" -"Plural-Forms: nplurals=4; plural=(n==1 ? 0 : (n%10>=2 && n%10<=4) && (n%100<12 || n%100>14) ? 1 : n!=1 && (n%10>=0 && n%10<=1) || (n%10>=5 && n%10<=9) || (n%100>=12 && n%100<=14) ? 2 : 3);\n" +"Plural-Forms: nplurals=4; plural=(n==1 ? 0 : (n%10>=2 && n%10<=4) && (n" +"%100<12 || n%100>14) ? 1 : n!=1 && (n%10>=0 && n%10<=1) || (n%10>=5 && n" +"%10<=9) || (n%100>=12 && n%100<=14) ? 2 : 3);\n" +"X-Generator: Weblate 4.8\n" #: .\cookbook\filters.py:22 .\cookbook\templates\base.html:87 #: .\cookbook\templates\forms\edit_internal_recipe.html:219 @@ -175,7 +178,7 @@ msgstr "Posiłek który zostanie zamieniony." #: .\cookbook\forms.py:198 msgid "Add your comment: " -msgstr "Dodaj komentarz:" +msgstr "Dodaj komentarz: " #: .\cookbook\forms.py:229 msgid "Leave empty for dropbox and enter app password for nextcloud." @@ -949,6 +952,15 @@ msgid "" " To limit the possible damage tokens or accounts with limited access can be used.\n" " " msgstr "" +"\n" +" Pola Hasło oraz Token są zapisane jawnym tekstem " +"wewnątrz bazy danych.\n" +" To jest konieczne ponieważ są one potrzebne do tworzenia wywołań " +"API, ale zwiększa to również ryzyko,\n" +" że ktoś je wykradnie.
\n" +" W celu ograniczenia możliwych szkód należy używać kont i tokenów z " +"ograniczonym dostępem.\n" +" " #: .\cookbook\templates\index.html:29 msgid "Search recipe ..." @@ -956,37 +968,37 @@ msgstr "Wyszukaj przepis ..." #: .\cookbook\templates\index.html:44 msgid "New Recipe" -msgstr "" +msgstr "Nowy przepis" #: .\cookbook\templates\index.html:47 msgid "Website Import" -msgstr "" +msgstr "Import z WWW" #: .\cookbook\templates\index.html:53 msgid "Advanced Search" -msgstr "" +msgstr "Zaawansowane wyszukiwanie" #: .\cookbook\templates\index.html:57 msgid "Reset Search" -msgstr "" +msgstr "Wyzeruj wyszukiwanie" #: .\cookbook\templates\index.html:85 msgid "Last viewed" -msgstr "" +msgstr "Ostatnio przeglądane" #: .\cookbook\templates\index.html:87 .\cookbook\templates\meal_plan.html:178 #: .\cookbook\templates\stats.html:22 msgid "Recipes" -msgstr "" +msgstr "Przepisy" #: .\cookbook\templates\index.html:94 msgid "Log in to view recipes" -msgstr "" +msgstr "Zaloguj się w celu przeglądania przepisów" #: .\cookbook\templates\markdown_info.html:5 #: .\cookbook\templates\markdown_info.html:13 msgid "Markdown Info" -msgstr "" +msgstr "Informacje o języku Markdown" #: .\cookbook\templates\markdown_info.html:14 msgid "" @@ -998,54 +1010,71 @@ msgid "" " An incomplete but most likely sufficient documentation can be found below.\n" " " msgstr "" +"\n" +" Markdown jest prostym językiem znaczników przeznaczonym do łatwego " +"formatowania teksu.\n" +" Ta strona używa biblioteki Python Markdown w celu \n" +" konwertowania Twojego tekstu w ładnie wyglądający HTML. Pełna " +"dokumentacja markdown znajduje się\n" +" tutaj.\n" +" Niekompletna, ale w większości przypadków wystarczająca dokumentacja " +"znajduje się poniżej.\n" +" " #: .\cookbook\templates\markdown_info.html:25 msgid "Headers" -msgstr "" +msgstr "Nagłówki" #: .\cookbook\templates\markdown_info.html:54 msgid "Formatting" -msgstr "" +msgstr "Formatowanie" #: .\cookbook\templates\markdown_info.html:56 #: .\cookbook\templates\markdown_info.html:72 msgid "Line breaks are inserted by adding two spaces after the end of a line" msgstr "" +"Podział linii jest realizowany poprzez dodanie dwóch spacji na końcu linii" #: .\cookbook\templates\markdown_info.html:57 #: .\cookbook\templates\markdown_info.html:73 msgid "or by leaving a blank line inbetween." msgstr "" +"lub poprzez pozostawienie pustej linii pomiędzy tekstem, który ma zostać " +"podzielony." #: .\cookbook\templates\markdown_info.html:59 #: .\cookbook\templates\markdown_info.html:74 msgid "This text is bold" -msgstr "" +msgstr "Ten tekst jest pogrubiony" #: .\cookbook\templates\markdown_info.html:60 #: .\cookbook\templates\markdown_info.html:75 msgid "This text is italic" -msgstr "" +msgstr "Ten tekst jest napisany kursywą" #: .\cookbook\templates\markdown_info.html:61 #: .\cookbook\templates\markdown_info.html:77 msgid "Blockquotes are also possible" -msgstr "" +msgstr "Cytaty blokowe również są możliwe" #: .\cookbook\templates\markdown_info.html:84 msgid "Lists" -msgstr "" +msgstr "Listy" #: .\cookbook\templates\markdown_info.html:85 msgid "" "Lists can ordered or unorderd. It is important to leave a blank line " "before the list!" msgstr "" +"Listy mogą być uporządkowane lub nieuporządkowane. Ważne jest, żeby " +"pozostawić pustą linię przed listą!" #: .\cookbook\templates\markdown_info.html:87 #: .\cookbook\templates\markdown_info.html:108 msgid "Ordered List" -msgstr "" +msgstr "Lista uporządkowana" #: .\cookbook\templates\markdown_info.html:89 #: .\cookbook\templates\markdown_info.html:90 @@ -1054,12 +1083,12 @@ msgstr "" #: .\cookbook\templates\markdown_info.html:111 #: .\cookbook\templates\markdown_info.html:112 msgid "unordered list item" -msgstr "" +msgstr "element listy nieuporządkowanej" #: .\cookbook\templates\markdown_info.html:93 #: .\cookbook\templates\markdown_info.html:114 msgid "Unordered List" -msgstr "" +msgstr "Lista nieuporządkowana" #: .\cookbook\templates\markdown_info.html:95 #: .\cookbook\templates\markdown_info.html:96 @@ -1068,26 +1097,29 @@ msgstr "" #: .\cookbook\templates\markdown_info.html:117 #: .\cookbook\templates\markdown_info.html:118 msgid "ordered list item" -msgstr "" +msgstr "element listy uporządkowanej" #: .\cookbook\templates\markdown_info.html:125 msgid "Images & Links" -msgstr "" +msgstr "Obrazki oraz Linki" #: .\cookbook\templates\markdown_info.html:126 msgid "" "Links can be formatted with Markdown. This application also allows to paste " "links directly into markdown fields without any formatting." msgstr "" +"Linki mogą być formatowane przy użyciu Markdown. Ta aplikacja pozwala " +"również na wklejanie linków bezpośrednio do pól Markdown bez żadnego " +"formatowania." #: .\cookbook\templates\markdown_info.html:132 #: .\cookbook\templates\markdown_info.html:145 msgid "This will become an image" -msgstr "" +msgstr "To stanie się obrazkiem" #: .\cookbook\templates\markdown_info.html:152 msgid "Tables" -msgstr "" +msgstr "Tabele" #: .\cookbook\templates\markdown_info.html:153 msgid "" @@ -1095,40 +1127,43 @@ msgid "" " editor like this one." msgstr "" +"Tabele w Markdown trudno stworzyć z ręki. Zalecane jest użycie edytora " +"tablic takiego jak ten." #: .\cookbook\templates\markdown_info.html:155 #: .\cookbook\templates\markdown_info.html:157 #: .\cookbook\templates\markdown_info.html:171 #: .\cookbook\templates\markdown_info.html:177 msgid "Table" -msgstr "" +msgstr "Tablica" #: .\cookbook\templates\markdown_info.html:155 #: .\cookbook\templates\markdown_info.html:172 msgid "Header" -msgstr "" +msgstr "Nagłówek" #: .\cookbook\templates\markdown_info.html:157 #: .\cookbook\templates\markdown_info.html:178 msgid "Cell" -msgstr "" +msgstr "Komórka" #: .\cookbook\templates\meal_plan.html:101 msgid "New Entry" -msgstr "" +msgstr "Nowy wpis" #: .\cookbook\templates\meal_plan.html:113 #: .\cookbook\templates\shopping_list.html:52 msgid "Search Recipe" -msgstr "" +msgstr "Szukaj przepisu" #: .\cookbook\templates\meal_plan.html:139 msgid "Title" -msgstr "" +msgstr "Tytuł" #: .\cookbook\templates\meal_plan.html:141 msgid "Note (optional)" -msgstr "" +msgstr "Notatka (opcjonalna)" #: .\cookbook\templates\meal_plan.html:143 msgid "" @@ -1136,84 +1171,87 @@ msgid "" "href=\"/docs/markdown/\" target=\"_blank\" rel=\"noopener noreferrer\">docs " "here" msgstr "" +"Możesz użyć Markdown do sformatowania tego pola. Sprawdź tę dokumentację" #: .\cookbook\templates\meal_plan.html:147 #: .\cookbook\templates\meal_plan.html:251 msgid "Serving Count" -msgstr "" +msgstr "Liczba porcji" #: .\cookbook\templates\meal_plan.html:153 msgid "Create only note" -msgstr "" +msgstr "Stwórz tylko natatkę" #: .\cookbook\templates\meal_plan.html:168 #: .\cookbook\templates\shopping_list.html:7 #: .\cookbook\templates\shopping_list.html:29 #: .\cookbook\templates\shopping_list.html:693 msgid "Shopping List" -msgstr "" +msgstr "Lista zakupów" #: .\cookbook\templates\meal_plan.html:172 msgid "Shopping list currently empty" -msgstr "" +msgstr "Lista zakupów obecnie jest pusta" #: .\cookbook\templates\meal_plan.html:175 msgid "Open Shopping List" -msgstr "" +msgstr "Otwórz Listę zakupów" #: .\cookbook\templates\meal_plan.html:189 msgid "Plan" -msgstr "" +msgstr "Planowanie" #: .\cookbook\templates\meal_plan.html:196 msgid "Number of Days" -msgstr "" +msgstr "Liczba dni" #: .\cookbook\templates\meal_plan.html:206 msgid "Weekday offset" -msgstr "" +msgstr "Przesunięcie dni tygodnia" #: .\cookbook\templates\meal_plan.html:209 msgid "" "Number of days starting from the first day of the week to offset the default" " view." msgstr "" +"Liczba dni począwszy od pierwszego dnia tygodnia aby ustawić domyślny widok." #: .\cookbook\templates\meal_plan.html:217 #: .\cookbook\templates\meal_plan.html:294 msgid "Edit plan types" -msgstr "" +msgstr "Edytuj typy planów" #: .\cookbook\templates\meal_plan.html:219 msgid "Show help" -msgstr "" +msgstr "Wyświetl pomoc" #: .\cookbook\templates\meal_plan.html:220 msgid "Week iCal export" -msgstr "" +msgstr "Eksport planu tygodniowego do pliku iCal" #: .\cookbook\templates\meal_plan.html:264 #: .\cookbook\templates\meal_plan_entry.html:18 msgid "Created by" -msgstr "" +msgstr "Stworzone przez" #: .\cookbook\templates\meal_plan.html:270 #: .\cookbook\templates\meal_plan_entry.html:20 #: .\cookbook\templates\shopping_list.html:248 msgid "Shared with" -msgstr "" +msgstr "Współdzielone z" #: .\cookbook\templates\meal_plan.html:280 msgid "Add to Shopping" -msgstr "" +msgstr "Dodaj do zakupów" #: .\cookbook\templates\meal_plan.html:323 msgid "New meal type" -msgstr "" +msgstr "Nowy typ posiłku" #: .\cookbook\templates\meal_plan.html:338 msgid "Meal Plan Help" -msgstr "" +msgstr "Pomoc dla Planu posiłków" #: .\cookbook\templates\meal_plan.html:344 msgid "" @@ -1237,257 +1275,302 @@ msgid "" " merged.

\n" " " msgstr "" +"\n" +"

Moduł planowania posiłków pozwala na " +"planowanie zarówno przy wykorzystaniu przepisów jak i notatek.

\n" +"

Po prostu wybierz przepis z listy ostatnio " +"oglądanych przepisów lub wyszukaj ten\n" +" który chcesz i przeciągnij go do wybranej " +"pozycji na planie. Możesz również dodać tytuł i notatkę\n" +" i wtedy przeciągnąć przepis w celu " +"stworzenia pozycji na planie z własnym tytułem i notatką. Tworzenie tylko\n" +" Notatek jest możliwe poprzez przeciągnięcie " +"bloku Stwórz tylko notatkę na plan.

\n" +"

Kliknij na przepisie w celu otworzenia " +"podglądu szczegółów. Stąd możesz dodać go do\n" +" listy zakupów. Możesz również dodać " +"wszystkie przepisy z dnia do listy zakupów poprzez\n" +" kliknięcie wózka sklepowego na górze " +"tabeli.

\n" +"

Ze względu na to że powszechne jest wspólne " +"planowanie posiłków, możesz wskazać\n" +" użytkowników z którymi chcesz współdzielić " +"swój plan w ustawieniach.\n" +"

\n" +"

Możesz również edytować typy posiłków, które " +"chcesz planować. Jeżeli współdzielisz swój plan\n" +" z kimś z innymi posiłkami,\n" +" ich typy posiłków również pojawią się na " +"twojej liście. Aby zapobiec\n" +" duplikowaniu (np. Inne i Różne)\n" +" nazywaj swoje typy posiłków tak samo jak " +"użytkownicy z którymi współdzielisz posiłki a wtedy zostaną\n" +" połączone.

\n" +" " #: .\cookbook\templates\meal_plan_entry.html:6 msgid "Meal Plan View" -msgstr "" +msgstr "Podgląd Planu posiłków" #: .\cookbook\templates\meal_plan_entry.html:50 msgid "Never cooked before." -msgstr "" +msgstr "Nigdy dotąd nie ugotowane." #: .\cookbook\templates\meal_plan_entry.html:76 msgid "Other meals on this day" -msgstr "" +msgstr "Inne posiłki tego dnia" #: .\cookbook\templates\no_groups_info.html:5 #: .\cookbook\templates\offline.html:6 msgid "Offline" -msgstr "" +msgstr "Nie podłączone" #: .\cookbook\templates\no_groups_info.html:12 msgid "No Permissions" -msgstr "" +msgstr "Brak uprawnień" #: .\cookbook\templates\no_groups_info.html:15 msgid "" "You do not have any groups and therefor cannot use this application. Please " "contact your administrator." msgstr "" +"Nie masz żadnych grup i dlatego nie możesz korzystać z tej aplikacji. " +"Skontaktuj się z administratorem." #: .\cookbook\templates\offline.html:19 msgid "You are currently offline!" -msgstr "" +msgstr "Jesteś obecnie offline!" #: .\cookbook\templates\offline.html:20 msgid "" "The recipes listed below are available for offline viewing because you have " "recently viewed them. Keep in mind that data might be outdated." msgstr "" +"Przepisy wymienione poniżej są dostępne do przeglądania w trybie offline, " +"ponieważ ostatnio je oglądałeś. Pamiętaj, że dane mogą być nieaktualne." #: .\cookbook\templates\recipe_view.html:21 .\cookbook\templates\stats.html:47 msgid "Comments" -msgstr "" +msgstr "Uwagi" #: .\cookbook\templates\recipe_view.html:44 .\cookbook\views\delete.py:118 #: .\cookbook\views\edit.py:162 msgid "Comment" -msgstr "" +msgstr "Komentarz" #: .\cookbook\templates\recipes_table.html:19 #: .\cookbook\templates\recipes_table.html:23 #: .\cookbook\templates\url_import.html:50 msgid "Recipe Image" -msgstr "" +msgstr "Obraz dla przepisu" #: .\cookbook\templates\recipes_table.html:46 #: .\cookbook\templates\url_import.html:55 msgid "Preparation time ca." -msgstr "" +msgstr "Czas przygotowania około" #: .\cookbook\templates\recipes_table.html:52 #: .\cookbook\templates\url_import.html:60 msgid "Waiting time ca." -msgstr "" +msgstr "Czas oczekiwania około" #: .\cookbook\templates\recipes_table.html:55 msgid "External" -msgstr "" +msgstr "Zewnętrzny" #: .\cookbook\templates\recipes_table.html:81 msgid "Log Cooking" -msgstr "" +msgstr "Dziennik gotowania" #: .\cookbook\templates\rest_framework\api.html:5 msgid "Recipe Home" -msgstr "" +msgstr "Strona główna Przepisów" #: .\cookbook\templates\settings.html:22 msgid "Account" -msgstr "" +msgstr "Konto" #: .\cookbook\templates\settings.html:38 msgid "Link social account" -msgstr "" +msgstr "Połącz konto społecznościowe" #: .\cookbook\templates\settings.html:42 msgid "Language" -msgstr "" +msgstr "Język" #: .\cookbook\templates\settings.html:67 msgid "Style" -msgstr "" +msgstr "Styl" #: .\cookbook\templates\settings.html:79 msgid "API Token" -msgstr "" +msgstr "Token dla API" #: .\cookbook\templates\settings.html:80 msgid "" "You can use both basic authentication and token based authentication to " "access the REST API." msgstr "" +"Aby uzyskać dostęp do interfejsu REST API, można użyć zarówno " +"uwierzytelniania podstawowego, jak i uwierzytelniania opartego na tokenach." #: .\cookbook\templates\settings.html:92 msgid "" "Use the token as an Authorization header prefixed by the word token as shown" " in the following examples:" msgstr "" +"Użyj tokena jako nagłówka autoryzacji poprzedzonego słowem token, jak " +"pokazano w następujących przykładach:" #: .\cookbook\templates\settings.html:94 msgid "or" -msgstr "" +msgstr "lub" #: .\cookbook\templates\setup.html:6 .\cookbook\templates\system.html:5 msgid "Cookbook Setup" -msgstr "" +msgstr "Konfiguracja Książki kucharskiej" #: .\cookbook\templates\setup.html:14 msgid "Setup" -msgstr "" +msgstr "Konfiguracja" #: .\cookbook\templates\setup.html:15 msgid "" "To start using this application you must first create a superuser account." msgstr "" +"Aby rozpocząć korzystanie z tej aplikacji, musisz najpierw utworzyć konto " +"super użytkownika." #: .\cookbook\templates\setup.html:20 msgid "Create Superuser account" -msgstr "" +msgstr "Utwórz konto super użytkownika" #: .\cookbook\templates\shopping_list.html:75 msgid "Shopping Recipes" -msgstr "" +msgstr "Zakupy do Przepisów" #: .\cookbook\templates\shopping_list.html:79 msgid "No recipes selected" -msgstr "" +msgstr "Nie wybrano przepisów" #: .\cookbook\templates\shopping_list.html:145 msgid "Entry Mode" -msgstr "" +msgstr "Tryb wprowadzania" #: .\cookbook\templates\shopping_list.html:153 msgid "Add Entry" -msgstr "" +msgstr "Dodaj pozycję" #: .\cookbook\templates\shopping_list.html:168 msgid "Amount" -msgstr "" +msgstr "Ilość" #: .\cookbook\templates\shopping_list.html:224 msgid "Supermarket" -msgstr "" +msgstr "Sklep" #: .\cookbook\templates\shopping_list.html:234 msgid "Select Supermarket" -msgstr "" +msgstr "Wybierz sklep" #: .\cookbook\templates\shopping_list.html:258 msgid "Select User" -msgstr "" +msgstr "Wybierz użytkownika" #: .\cookbook\templates\shopping_list.html:277 msgid "Finished" -msgstr "" +msgstr "Skończone" #: .\cookbook\templates\shopping_list.html:290 msgid "You are offline, shopping list might not syncronize." -msgstr "" +msgstr "Jesteś offline, lista zakupów może się nie zsynchronizować." #: .\cookbook\templates\shopping_list.html:353 msgid "Copy/Export" -msgstr "" +msgstr "Kopiuj/Eksportuj" #: .\cookbook\templates\shopping_list.html:357 msgid "List Prefix" -msgstr "" +msgstr "Prefiks listy" #: .\cookbook\templates\shopping_list.html:696 msgid "There was an error creating a resource!" -msgstr "" +msgstr "Wystąpił błąd podczas tworzenia zasobu!" #: .\cookbook\templates\socialaccount\connections.html:4 #: .\cookbook\templates\socialaccount\connections.html:7 msgid "Account Connections" -msgstr "" +msgstr "Połączenie kont" #: .\cookbook\templates\socialaccount\connections.html:10 msgid "" "You can sign in to your account using any of the following third party\n" " accounts:" msgstr "" +"Możesz zalogować się na swoje konto za pomocą dowolnego z następujących " +"kont\n" +" zewnętrznych:" #: .\cookbook\templates\socialaccount\connections.html:36 msgid "Remove" -msgstr "" +msgstr "Usuń" #: .\cookbook\templates\socialaccount\connections.html:44 msgid "" "You currently have no social network accounts connected to this account." -msgstr "" +msgstr "Obecnie nie masz kont sieci społecznościowych połączonych z tym kontem." #: .\cookbook\templates\socialaccount\connections.html:47 msgid "Add a 3rd Party Account" -msgstr "" +msgstr "Dodaj konto firmy zewnętrznej" #: .\cookbook\templates\stats.html:4 msgid "Stats" -msgstr "" +msgstr "Statystyki" #: .\cookbook\templates\stats.html:19 msgid "Number of objects" -msgstr "" +msgstr "Liczba obiektów" #: .\cookbook\templates\stats.html:30 msgid "Recipe Imports" -msgstr "" +msgstr "Import przepisów" #: .\cookbook\templates\stats.html:38 msgid "Objects stats" -msgstr "" +msgstr "Statystyki obiektów" #: .\cookbook\templates\stats.html:41 msgid "Recipes without Keywords" -msgstr "" +msgstr "Przepisy bez słów kluczowych" #: .\cookbook\templates\stats.html:43 msgid "External Recipes" -msgstr "" +msgstr "Przepisy zewnętrzne" #: .\cookbook\templates\stats.html:45 msgid "Internal Recipes" -msgstr "" +msgstr "Przepisy zapisane lokalnie" #: .\cookbook\templates\system.html:21 .\cookbook\views\lists.py:128 msgid "Invite Links" -msgstr "" +msgstr "Linki z zaproszeniami" #: .\cookbook\templates\system.html:22 msgid "Show Links" -msgstr "" +msgstr "Wyświetl linki" #: .\cookbook\templates\system.html:27 msgid "Backup & Restore" -msgstr "" +msgstr "Kopie zapasowe" #: .\cookbook\templates\system.html:28 msgid "Download Backup" -msgstr "" +msgstr "Pobierz kopię zapasową" #: .\cookbook\templates\system.html:49 msgid "System Information" -msgstr "" +msgstr "Informacje o systemie" #: .\cookbook\templates\system.html:51 msgid "" @@ -1497,20 +1580,27 @@ msgid "" " Changelogs can be found here.\n" " " msgstr "" +"\n" +" Django Recipes to darmowa aplikacja typu open source. Można ją " +"znaleźć na\n" +" GitHub.\n" +" Dziennik zmian można znaleźć tutaj.\n" +" " #: .\cookbook\templates\system.html:65 msgid "Media Serving" -msgstr "" +msgstr "Obsługa multimediów" #: .\cookbook\templates\system.html:66 .\cookbook\templates\system.html:81 #: .\cookbook\templates\system.html:97 msgid "Warning" -msgstr "" +msgstr "Uwaga" #: .\cookbook\templates\system.html:66 .\cookbook\templates\system.html:81 #: .\cookbook\templates\system.html:97 .\cookbook\templates\system.html:112 msgid "Ok" -msgstr "" +msgstr "Ok" #: .\cookbook\templates\system.html:68 msgid "" @@ -1520,15 +1610,22 @@ msgid "" " your installation.\n" " " msgstr "" +"Udostępnianie plików multimedialnych bezpośrednio przy użyciu gunicorn/" +"python nie jest rekomendowane!\n" +" Postępuj zgodnie z opisanymi \n" +" tutaj krokami w celu\n" +" uaktualnienia swojej instalacji.\n" +" " #: .\cookbook\templates\system.html:74 .\cookbook\templates\system.html:90 #: .\cookbook\templates\system.html:105 .\cookbook\templates\system.html:119 msgid "Everything is fine!" -msgstr "" +msgstr "Wszystko w porządku!" #: .\cookbook\templates\system.html:79 msgid "Secret Key" -msgstr "" +msgstr "Sekretny klucz" #: .\cookbook\templates\system.html:83 msgid "" @@ -1539,10 +1636,19 @@ msgid "" " SECRET_KEY int the .env configuration file.\n" " " msgstr "" +"\n" +" Nie posiadasz skonfigurowanego SECRET_KEY w swoim " +"pliku .env. Django domyślnie\n" +" korzysta ze standardowego klucza\n" +" dostarczonego z instalacją, który jest publicznie znany i " +"niezabezpieczony! Proszę ustawić\n" +" SECRET_KEY w pliku konfiguracyjnym ." +"env.\n" +" " #: .\cookbook\templates\system.html:95 msgid "Debug Mode" -msgstr "" +msgstr "Tryb debugowania" #: .\cookbook\templates\system.html:99 msgid "" @@ -1552,14 +1658,20 @@ msgid "" " DEBUG=0 int the .env configuration file.\n" " " msgstr "" +"\n" +" Ta aplikacja nadal działa w trybie debugowania. " +"Najprawdopodobniej nie jest to potrzebne. Wyłącz tryb debugowania,\n" +" ustawiając\n" +" DEBUG=0 w pliku konfiguracyjnym .env.\n" +" " #: .\cookbook\templates\system.html:110 msgid "Database" -msgstr "" +msgstr "Baza danych" #: .\cookbook\templates\system.html:112 msgid "Info" -msgstr "" +msgstr "Informacje" #: .\cookbook\templates\system.html:114 msgid "" @@ -1568,36 +1680,41 @@ msgid "" " features only work with postgres databases.\n" " " msgstr "" +"\n" +" Ta aplikacja nie pracuje z bazą danych Postgres. To jest " +"możliwe, ale nie zalecane, ponieważ\n" +" niektóre funkcje działają tylko z bazami danych Postgres.\n" +" " #: .\cookbook\templates\url_import.html:5 msgid "URL Import" -msgstr "" +msgstr "Importuj z URL" #: .\cookbook\templates\url_import.html:23 msgid "Enter website URL" -msgstr "" +msgstr "Wpisz adres URL witryny" #: .\cookbook\templates\url_import.html:44 msgid "Recipe Name" -msgstr "" +msgstr "Nazwa przepisu" #: .\cookbook\templates\url_import.html:104 #: .\cookbook\templates\url_import.html:136 #: .\cookbook\templates\url_import.html:192 msgid "Select one" -msgstr "" +msgstr "Wybierz jeden" #: .\cookbook\templates\url_import.html:203 msgid "All Keywords" -msgstr "" +msgstr "Wszystkie słowa kluczowe" #: .\cookbook\templates\url_import.html:206 msgid "Import all keywords, not only the ones already existing." -msgstr "" +msgstr "Importuj wszystkie słowa kluczowe, nie tylko te już istniejące." #: .\cookbook\templates\url_import.html:233 msgid "Information" -msgstr "" +msgstr "Informacja" #: .\cookbook\templates\url_import.html:235 msgid "" @@ -1607,103 +1724,113 @@ msgid "" " it probably has some kind of structured data feel free to post an example in the\n" " github issues." msgstr "" +" Obecnie można importować tylko witryny internetowe zawierające informacje o " +"ld+json lub mikrodanych.\n" +" Obsługuje to większość dużych stron z " +"przepisami. Jeśli Twoja witryna nie może zostać zaimportowana,\n" +" ale uważasz,\n" +" że prawdopodobnie zawiera jakieś " +"uporządkowane dane, możesz zamieścić przykład\n" +" na github." #: .\cookbook\templates\url_import.html:243 msgid "Google ld+json Info" -msgstr "" +msgstr "Informacje o Google ld+json" #: .\cookbook\templates\url_import.html:246 msgid "GitHub Issues" -msgstr "" +msgstr "Problemy na GitHub" #: .\cookbook\templates\url_import.html:248 msgid "Recipe Markup Specification" -msgstr "" +msgstr "Specyfikacja znaczników przepisów" #: .\cookbook\views\api.py:104 msgid "Parameter filter_list incorrectly formatted" -msgstr "" +msgstr "Nieprawidłowo sformatowany parametr filter_list" #: .\cookbook\views\api.py:117 msgid "Preference for given user already exists" -msgstr "" +msgstr "Preferencja dla danego użytkownika już istnieje" #: .\cookbook\views\api.py:416 .\cookbook\views\views.py:265 msgid "This feature is not available in the demo version!" -msgstr "" +msgstr "Ta funkcja nie jest dostępna w wersji demo!" #: .\cookbook\views\api.py:439 msgid "Sync successful!" -msgstr "" +msgstr "Synchronizacja powiodła się!" #: .\cookbook\views\api.py:444 msgid "Error synchronizing with Storage" -msgstr "" +msgstr "Błąd synchronizacji z magazynem" #: .\cookbook\views\api.py:510 msgid "The requested page could not be found." -msgstr "" +msgstr "Żądana strona nie została znaleziona." #: .\cookbook\views\api.py:519 msgid "" "The requested page refused to provide any information (Status Code 403)." -msgstr "" +msgstr "Żądana strona odmówiła podania jakichkolwiek informacji (Kod 403)." #: .\cookbook\views\data.py:101 #, python-format msgid "Batch edit done. %(count)d recipe was updated." msgid_plural "Batch edit done. %(count)d Recipes where updated." -msgstr[0] "" -msgstr[1] "" -msgstr[2] "" -msgstr[3] "" +msgstr[0] "Edycja zbiorcza zakończona. Zaktualizowano %(count)d przepis." +msgstr[1] "Edycja zbiorcza zakończona. Zaktualizowano %(count)d przepisy." +msgstr[2] "Edycja zbiorcza zakończona. Zaktualizowano %(count)d przepisów." +msgstr[3] "Edycja zbiorcza zakończona. Zaktualizowano przepisy: %(count)d." #: .\cookbook\views\delete.py:72 msgid "Monitor" -msgstr "" +msgstr "Monitor" #: .\cookbook\views\delete.py:96 .\cookbook\views\lists.py:109 #: .\cookbook\views\new.py:83 msgid "Storage Backend" -msgstr "" +msgstr "Obsługa Magazynów" #: .\cookbook\views\delete.py:106 msgid "" "Could not delete this storage backend as it is used in at least one monitor." msgstr "" +"Nie można usunąć tego typu Magazynu, ponieważ jest on używany w co najmniej " +"jednym monitorze." #: .\cookbook\views\delete.py:129 .\cookbook\views\edit.py:196 #: .\cookbook\views\new.py:144 msgid "Recipe Book" -msgstr "" +msgstr "Książka z przepisami" #: .\cookbook\views\delete.py:154 msgid "Bookmarks" -msgstr "" +msgstr "Zakładki" #: .\cookbook\views\delete.py:176 .\cookbook\views\new.py:214 msgid "Invite Link" -msgstr "" +msgstr "Link z zaproszeniem" #: .\cookbook\views\edit.py:100 msgid "Food" -msgstr "" +msgstr "Jedzenie" #: .\cookbook\views\edit.py:110 msgid "You cannot edit this storage!" -msgstr "" +msgstr "Nie możesz edytować tego Magazynu!" #: .\cookbook\views\edit.py:131 msgid "Storage saved!" -msgstr "" +msgstr "Magazyn zapisany!" #: .\cookbook\views\edit.py:137 msgid "There was an error updating this storage backend!" -msgstr "" +msgstr "Podczas aktualizowania tego Magazynu wystąpił błąd!" #: .\cookbook\views\edit.py:148 msgid "Storage" -msgstr "" +msgstr "Magazyn" #: .\cookbook\views\edit.py:245 msgid "Changes saved!" @@ -1727,11 +1854,11 @@ msgstr "Posiłki scalone!" #: .\cookbook\views\import_export.py:42 msgid "Importing is not implemented for this provider" -msgstr "Importowanie dla tego usługodawcy nie zostało zaimplementowane." +msgstr "Importowanie dla tego usługodawcy nie zostało zaimplementowane" #: .\cookbook\views\import_export.py:58 msgid "Exporting is not implemented for this provider" -msgstr "Eksportowanie dla tego usługodawcy nie zostało zaimplementowane." +msgstr "Eksportowanie dla tego usługodawcy nie zostało zaimplementowane" #: .\cookbook\views\lists.py:42 msgid "Import Log" diff --git a/cookbook/locale/pt/LC_MESSAGES/django.mo b/cookbook/locale/pt/LC_MESSAGES/django.mo index 7f6b9401..4c2505ca 100644 Binary files a/cookbook/locale/pt/LC_MESSAGES/django.mo and b/cookbook/locale/pt/LC_MESSAGES/django.mo differ diff --git a/cookbook/locale/pt/LC_MESSAGES/django.po b/cookbook/locale/pt/LC_MESSAGES/django.po index ba97d28c..0cfe8723 100644 --- a/cookbook/locale/pt/LC_MESSAGES/django.po +++ b/cookbook/locale/pt/LC_MESSAGES/django.po @@ -12,7 +12,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-08-12 15:09+0200\n" +"POT-Creation-Date: 2021-09-13 22:40+0200\n" "PO-Revision-Date: 2020-06-02 19:28+0000\n" "Last-Translator: João Cunha , 2020\n" "Language-Team: Portuguese (https://www.transifex.com/django-recipes/" @@ -23,49 +23,48 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: .\cookbook\filters.py:23 .\cookbook\templates\base.html:98 -#: .\cookbook\templates\forms\edit_internal_recipe.html:269 +#: .\cookbook\filters.py:23 .\cookbook\templates\base.html:125 #: .\cookbook\templates\forms\ingredients.html:34 #: .\cookbook\templates\space.html:43 .\cookbook\templates\stats.html:28 -#: .\cookbook\templates\url_import.html:270 .\cookbook\views\lists.py:67 +#: .\cookbook\templates\url_import.html:270 msgid "Ingredients" msgstr "Ingredientes" -#: .\cookbook\forms.py:49 +#: .\cookbook\forms.py:50 msgid "" "Color of the top navigation bar. Not all colors work with all themes, just " "try them out!" msgstr "Cor da barra de navegação." -#: .\cookbook\forms.py:51 +#: .\cookbook\forms.py:52 msgid "Default Unit to be used when inserting a new ingredient into a recipe." msgstr "Unidade defeito a ser usada quando um novo ingrediente for inserido." -#: .\cookbook\forms.py:53 +#: .\cookbook\forms.py:54 msgid "" "Enables support for fractions in ingredient amounts (e.g. convert decimals " "to fractions automatically)" msgstr "" -#: .\cookbook\forms.py:56 +#: .\cookbook\forms.py:57 msgid "" "Users with whom newly created meal plan/shopping list entries should be " "shared by default." msgstr "" -#: .\cookbook\forms.py:58 +#: .\cookbook\forms.py:59 msgid "Show recently viewed recipes on search page." msgstr "Mostrar receitas recentes na página de pesquisa." -#: .\cookbook\forms.py:59 +#: .\cookbook\forms.py:60 msgid "Number of decimals to round ingredients." msgstr "Número de casas decimais para arredondamentos." -#: .\cookbook\forms.py:60 +#: .\cookbook\forms.py:61 msgid "If you want to be able to create and see comments underneath recipes." msgstr "" -#: .\cookbook\forms.py:62 +#: .\cookbook\forms.py:63 msgid "" "Setting to 0 will disable auto sync. When viewing a shopping list the list " "is updated every set seconds to sync changes someone else might have made. " @@ -73,11 +72,11 @@ msgid "" "mobile data. If lower than instance limit it is reset when saving." msgstr "" -#: .\cookbook\forms.py:65 +#: .\cookbook\forms.py:66 msgid "Makes the navbar stick to the top of the page." msgstr "" -#: .\cookbook\forms.py:81 +#: .\cookbook\forms.py:82 msgid "" "Both fields are optional. If none are given the username will be displayed " "instead" @@ -85,94 +84,91 @@ msgstr "" "Ambos os campos são opcionais. Se nenhum for preenchido o nome de utilizador " "será apresentado." -#: .\cookbook\forms.py:102 .\cookbook\forms.py:331 -#: .\cookbook\templates\forms\edit_internal_recipe.html:49 +#: .\cookbook\forms.py:103 .\cookbook\forms.py:334 #: .\cookbook\templates\url_import.html:154 msgid "Name" msgstr "Nome" -#: .\cookbook\forms.py:103 .\cookbook\forms.py:332 -#: .\cookbook\templates\base.html:108 .\cookbook\templates\base.html:169 -#: .\cookbook\templates\forms\edit_internal_recipe.html:85 +#: .\cookbook\forms.py:104 .\cookbook\forms.py:335 #: .\cookbook\templates\space.html:39 .\cookbook\templates\stats.html:24 #: .\cookbook\templates\url_import.html:188 -#: .\cookbook\templates\url_import.html:573 +#: .\cookbook\templates\url_import.html:573 .\cookbook\views\lists.py:112 msgid "Keywords" msgstr "Palavras-chave" -#: .\cookbook\forms.py:104 +#: .\cookbook\forms.py:105 msgid "Preparation time in minutes" msgstr "Tempo de preparação em minutos" -#: .\cookbook\forms.py:105 +#: .\cookbook\forms.py:106 msgid "Waiting time (cooking/baking) in minutes" msgstr "Tempo de espera (cozedura) em minutos" -#: .\cookbook\forms.py:106 .\cookbook\forms.py:333 +#: .\cookbook\forms.py:107 .\cookbook\forms.py:336 msgid "Path" msgstr "Caminho" -#: .\cookbook\forms.py:107 +#: .\cookbook\forms.py:108 msgid "Storage UID" msgstr "UID de armazenamento" -#: .\cookbook\forms.py:133 +#: .\cookbook\forms.py:134 msgid "Default" msgstr "" -#: .\cookbook\forms.py:144 .\cookbook\templates\url_import.html:90 +#: .\cookbook\forms.py:145 .\cookbook\templates\url_import.html:90 msgid "" "To prevent duplicates recipes with the same name as existing ones are " "ignored. Check this box to import everything." msgstr "" -#: .\cookbook\forms.py:164 +#: .\cookbook\forms.py:165 msgid "New Unit" msgstr "Nova Unidade" -#: .\cookbook\forms.py:165 +#: .\cookbook\forms.py:166 msgid "New unit that other gets replaced by." msgstr "Nova unidade substituta." -#: .\cookbook\forms.py:170 +#: .\cookbook\forms.py:171 msgid "Old Unit" msgstr "Unidade Anterior" -#: .\cookbook\forms.py:171 +#: .\cookbook\forms.py:172 msgid "Unit that should be replaced." msgstr "Unidade a ser alterada." -#: .\cookbook\forms.py:187 +#: .\cookbook\forms.py:189 msgid "New Food" msgstr "Novo Prato" -#: .\cookbook\forms.py:188 +#: .\cookbook\forms.py:190 msgid "New food that other gets replaced by." msgstr "Novo prato a ser alterado." -#: .\cookbook\forms.py:193 +#: .\cookbook\forms.py:195 msgid "Old Food" msgstr "Prato Anterior" -#: .\cookbook\forms.py:194 +#: .\cookbook\forms.py:196 msgid "Food that should be replaced." msgstr "Prato a ser alterado." -#: .\cookbook\forms.py:212 +#: .\cookbook\forms.py:214 msgid "Add your comment: " msgstr "Adicionar comentário:" -#: .\cookbook\forms.py:253 +#: .\cookbook\forms.py:256 msgid "Leave empty for dropbox and enter app password for nextcloud." msgstr "" "Deixar vazio para Dropbox e inserir palavra-passe de aplicação para " "Nextcloud." -#: .\cookbook\forms.py:260 +#: .\cookbook\forms.py:263 msgid "Leave empty for nextcloud and enter api token for dropbox." msgstr "Deixar vazio para Nextcloud e inserir token api para Dropbox." -#: .\cookbook\forms.py:269 +#: .\cookbook\forms.py:272 msgid "" "Leave empty for dropbox and enter only base url for nextcloud (/remote." "php/webdav/ is added automatically)" @@ -180,26 +176,25 @@ msgstr "" "Deixar vazio para Dropbox e inserir apenas url base para Nextcloud (/" "remote.php/webdav/é adicionado automaticamente). " -#: .\cookbook\forms.py:307 +#: .\cookbook\forms.py:310 msgid "Search String" msgstr "Procurar" -#: .\cookbook\forms.py:334 +#: .\cookbook\forms.py:337 msgid "File ID" msgstr "ID the ficheiro" -#: .\cookbook\forms.py:370 +#: .\cookbook\forms.py:373 msgid "You must provide at least a recipe or a title." msgstr "É necessário inserir uma receita ou um título." -#: .\cookbook\forms.py:383 +#: .\cookbook\forms.py:386 msgid "You can list default users to share recipes with in the settings." msgstr "" "É possível escolher os utilizadores com quem partilhar receitas por defeitos " "nas definições." -#: .\cookbook\forms.py:384 -#: .\cookbook\templates\forms\edit_internal_recipe.html:427 +#: .\cookbook\forms.py:387 msgid "" "You can use markdown to format this field. See the docs here" @@ -207,63 +202,139 @@ msgstr "" "É possível utilizar markdown para editar este campo. Documentação disponível aqui" -#: .\cookbook\forms.py:409 +#: .\cookbook\forms.py:412 msgid "Maximum number of users for this space reached." msgstr "" -#: .\cookbook\forms.py:415 +#: .\cookbook\forms.py:418 msgid "Email address already taken!" msgstr "" -#: .\cookbook\forms.py:423 +#: .\cookbook\forms.py:426 msgid "" "An email address is not required but if present the invite link will be send " "to the user." msgstr "" -#: .\cookbook\forms.py:438 +#: .\cookbook\forms.py:441 msgid "Name already taken." msgstr "" -#: .\cookbook\forms.py:449 +#: .\cookbook\forms.py:452 msgid "Accept Terms and Privacy" msgstr "" +#: .\cookbook\forms.py:487 +msgid "" +"Select type method of search. Click here for " +"full desciption of choices." +msgstr "" + +#: .\cookbook\forms.py:488 +msgid "" +"Use fuzzy matching on units, keywords and ingredients when editing and " +"importing recipes." +msgstr "" + +#: .\cookbook\forms.py:489 +msgid "" +"Fields to search ignoring accents. Selecting this option can improve or " +"degrade search quality depending on language" +msgstr "" + +#: .\cookbook\forms.py:490 +msgid "" +"Fields to search for partial matches. (e.g. searching for 'Pie' will return " +"'pie' and 'piece' and 'soapie')" +msgstr "" + +#: .\cookbook\forms.py:491 +msgid "" +"Fields to search for beginning of word matches. (e.g. searching for 'sa' " +"will return 'salad' and 'sandwich')" +msgstr "" + +#: .\cookbook\forms.py:492 +msgid "" +"Fields to 'fuzzy' search. (e.g. searching for 'recpie' will find 'recipe'.) " +"Note: this option will conflict with 'web' and 'raw' methods of search." +msgstr "" + +#: .\cookbook\forms.py:493 +msgid "" +"Fields to full text search. Note: 'web', 'phrase', and 'raw' search methods " +"only function with fulltext fields." +msgstr "" + +#: .\cookbook\forms.py:497 +#, fuzzy +#| msgid "Search" +msgid "Search Method" +msgstr "Procurar" + +#: .\cookbook\forms.py:498 +msgid "Fuzzy Lookups" +msgstr "" + +#: .\cookbook\forms.py:499 +msgid "Ignore Accent" +msgstr "" + +#: .\cookbook\forms.py:500 +msgid "Partial Match" +msgstr "" + +#: .\cookbook\forms.py:501 +msgid "Starts Wtih" +msgstr "" + +#: .\cookbook\forms.py:502 +#, fuzzy +#| msgid "Search" +msgid "Fuzzy Search" +msgstr "Procurar" + +#: .\cookbook\forms.py:503 +#, fuzzy +#| msgid "Text" +msgid "Full Text" +msgstr "Texto" + #: .\cookbook\helper\AllAuthCustomAdapter.py:36 msgid "" "In order to prevent spam, the requested email was not send. Please wait a " "few minutes and try again." msgstr "" -#: .\cookbook\helper\permission_helper.py:138 -#: .\cookbook\helper\permission_helper.py:161 .\cookbook\views\views.py:151 +#: .\cookbook\helper\permission_helper.py:136 +#: .\cookbook\helper\permission_helper.py:159 .\cookbook\views\views.py:150 msgid "You are not logged in and therefore cannot view this page!" msgstr "Autenticação necessária para aceder a esta página!" -#: .\cookbook\helper\permission_helper.py:142 -#: .\cookbook\helper\permission_helper.py:148 -#: .\cookbook\helper\permission_helper.py:173 -#: .\cookbook\helper\permission_helper.py:218 -#: .\cookbook\helper\permission_helper.py:232 -#: .\cookbook\helper\permission_helper.py:243 -#: .\cookbook\helper\permission_helper.py:254 .\cookbook\views\data.py:40 -#: .\cookbook\views\views.py:162 .\cookbook\views\views.py:169 -#: .\cookbook\views\views.py:259 +#: .\cookbook\helper\permission_helper.py:140 +#: .\cookbook\helper\permission_helper.py:146 +#: .\cookbook\helper\permission_helper.py:171 +#: .\cookbook\helper\permission_helper.py:216 +#: .\cookbook\helper\permission_helper.py:230 +#: .\cookbook\helper\permission_helper.py:241 +#: .\cookbook\helper\permission_helper.py:252 .\cookbook\views\data.py:40 +#: .\cookbook\views\views.py:161 .\cookbook\views\views.py:168 +#: .\cookbook\views\views.py:245 msgid "You do not have the required permissions to view this page!" msgstr "Sem permissões para aceder a esta página!" -#: .\cookbook\helper\permission_helper.py:166 -#: .\cookbook\helper\permission_helper.py:189 -#: .\cookbook\helper\permission_helper.py:204 +#: .\cookbook\helper\permission_helper.py:164 +#: .\cookbook\helper\permission_helper.py:187 +#: .\cookbook\helper\permission_helper.py:202 msgid "You cannot interact with this object as it is not owned by you!" msgstr "" -#: .\cookbook\helper\template_helper.py:60 -#: .\cookbook\helper\template_helper.py:62 +#: .\cookbook\helper\template_helper.py:61 +#: .\cookbook\helper\template_helper.py:63 msgid "Could not parse template code." msgstr "" -#: .\cookbook\integration\integration.py:104 +#: .\cookbook\integration\integration.py:119 #: .\cookbook\templates\import.html:14 .\cookbook\templates\import.html:20 #: .\cookbook\templates\import_response.html:7 #: .\cookbook\templates\test.html:14 .\cookbook\templates\test.html:20 @@ -272,27 +343,27 @@ msgstr "" #: .\cookbook\templates\url_import.html:123 #: .\cookbook\templates\url_import.html:317 #: .\cookbook\templates\url_import.html:604 .\cookbook\views\delete.py:60 -#: .\cookbook\views\edit.py:199 +#: .\cookbook\views\edit.py:197 msgid "Import" msgstr "Importar" -#: .\cookbook\integration\integration.py:185 +#: .\cookbook\integration\integration.py:200 msgid "" "Importer expected a .zip file. Did you choose the correct importer type for " "your data ?" msgstr "" -#: .\cookbook\integration\integration.py:188 +#: .\cookbook\integration\integration.py:203 msgid "" "An unexpected error occurred during the import. Please make sure you have " "uploaded a valid file." msgstr "" -#: .\cookbook\integration\integration.py:192 +#: .\cookbook\integration\integration.py:208 msgid "The following recipes were ignored because they already existed:" msgstr "" -#: .\cookbook\integration\integration.py:196 +#: .\cookbook\integration\integration.py:212 #, fuzzy, python-format #| msgid "Import Recipes" msgid "Imported %s recipes." @@ -313,7 +384,6 @@ msgid "Source" msgstr "" #: .\cookbook\integration\safron.py:23 -#: .\cookbook\templates\forms\edit_internal_recipe.html:79 #: .\cookbook\templates\include\log_cooking.html:16 #: .\cookbook\templates\url_import.html:224 #: .\cookbook\templates\url_import.html:455 @@ -325,7 +395,6 @@ msgid "Waiting time" msgstr "" #: .\cookbook\integration\safron.py:27 -#: .\cookbook\templates\forms\edit_internal_recipe.html:73 msgid "Preparation Time" msgstr "" @@ -339,6 +408,22 @@ msgstr "Livro de refeições" msgid "Section" msgstr "" +#: .\cookbook\management\commands\rebuildindex.py:14 +msgid "Rebuilds full text search index on Recipe" +msgstr "" + +#: .\cookbook\management\commands\rebuildindex.py:18 +msgid "Only Postgress databases use full text search, no index to rebuild" +msgstr "" + +#: .\cookbook\management\commands\rebuildindex.py:29 +msgid "Recipe index rebuild complete." +msgstr "" + +#: .\cookbook\management\commands\rebuildindex.py:31 +msgid "Recipe index rebuild failed." +msgstr "" + #: .\cookbook\migrations\0047_auto_20200602_1133.py:14 msgid "Breakfast" msgstr "Pequeno-almoço" @@ -355,78 +440,91 @@ msgstr "Jantar" msgid "Other" msgstr "Outro" -#: .\cookbook\models.py:72 +#: .\cookbook\models.py:144 msgid "" "Maximum file storage for space in MB. 0 for unlimited, -1 to disable file " "upload." msgstr "" -#: .\cookbook\models.py:123 .\cookbook\templates\search.html:7 +#: .\cookbook\models.py:196 .\cookbook\templates\search.html:7 #: .\cookbook\templates\shopping_list.html:52 msgid "Search" msgstr "Procurar" -#: .\cookbook\models.py:124 .\cookbook\templates\base.html:92 +#: .\cookbook\models.py:197 .\cookbook\templates\base.html:82 #: .\cookbook\templates\meal_plan.html:5 .\cookbook\views\delete.py:152 -#: .\cookbook\views\edit.py:233 .\cookbook\views\new.py:201 +#: .\cookbook\views\edit.py:231 .\cookbook\views\new.py:200 msgid "Meal-Plan" msgstr "Plano de refeição" -#: .\cookbook\models.py:125 .\cookbook\templates\base.html:89 +#: .\cookbook\models.py:198 .\cookbook\templates\base.html:90 msgid "Books" msgstr "Livros" -#: .\cookbook\models.py:133 +#: .\cookbook\models.py:206 msgid "Small" msgstr "Pequeno" -#: .\cookbook\models.py:133 +#: .\cookbook\models.py:206 msgid "Large" msgstr "Grande" -#: .\cookbook\models.py:133 .\cookbook\templates\generic\new_template.html:6 +#: .\cookbook\models.py:206 .\cookbook\templates\generic\new_template.html:6 #: .\cookbook\templates\generic\new_template.html:14 #: .\cookbook\templates\meal_plan.html:323 msgid "New" msgstr "Novo" -#: .\cookbook\models.py:338 -#: .\cookbook\templates\forms\edit_internal_recipe.html:202 +#: .\cookbook\models.py:389 +msgid " is part of a recipe step and cannot be deleted" +msgstr "" + +#: .\cookbook\models.py:429 msgid "Text" msgstr "Texto" -#: .\cookbook\models.py:338 -#: .\cookbook\templates\forms\edit_internal_recipe.html:203 +#: .\cookbook\models.py:429 msgid "Time" msgstr "Tempo" -#: .\cookbook\models.py:338 -#: .\cookbook\templates\forms\edit_internal_recipe.html:204 -#: .\cookbook\templates\forms\edit_internal_recipe.html:219 +#: .\cookbook\models.py:429 #, fuzzy #| msgid "File ID" msgid "File" msgstr "ID the ficheiro" -#: .\cookbook\models.py:338 -#: .\cookbook\templates\forms\edit_internal_recipe.html:205 -#: .\cookbook\templates\forms\edit_internal_recipe.html:241 +#: .\cookbook\models.py:429 #: .\cookbook\templates\include\recipe_open_modal.html:7 #: .\cookbook\templates\meal_plan.html:247 .\cookbook\views\delete.py:28 -#: .\cookbook\views\edit.py:273 .\cookbook\views\new.py:52 +#: .\cookbook\views\edit.py:271 .\cookbook\views\new.py:52 msgid "Recipe" msgstr "Receita" -#: .\cookbook\serializer.py:109 +#: .\cookbook\models.py:836 .\cookbook\templates\search_info.html:28 +msgid "Simple" +msgstr "" + +#: .\cookbook\models.py:837 .\cookbook\templates\search_info.html:33 +msgid "Phrase" +msgstr "" + +#: .\cookbook\models.py:838 .\cookbook\templates\search_info.html:38 +msgid "Web" +msgstr "" + +#: .\cookbook\models.py:839 .\cookbook\templates\search_info.html:47 +msgid "Raw" +msgstr "" + +#: .\cookbook\serializer.py:112 msgid "File uploads are not enabled for this Space." msgstr "" -#: .\cookbook\serializer.py:117 +#: .\cookbook\serializer.py:125 msgid "You have reached your file upload limit." msgstr "" -#: .\cookbook\tables.py:35 .\cookbook\templates\books.html:36 -#: .\cookbook\templates\generic\edit_template.html:6 +#: .\cookbook\tables.py:35 .\cookbook\templates\generic\edit_template.html:6 #: .\cookbook\templates\generic\edit_template.html:14 #: .\cookbook\templates\meal_plan.html:281 #: .\cookbook\templates\recipes_table.html:82 @@ -435,11 +533,10 @@ msgstr "" msgid "Edit" msgstr "Editar" -#: .\cookbook\tables.py:124 .\cookbook\tables.py:147 -#: .\cookbook\templates\books.html:38 +#: .\cookbook\tables.py:115 .\cookbook\tables.py:138 #: .\cookbook\templates\generic\delete_template.html:5 #: .\cookbook\templates\generic\delete_template.html:13 -#: .\cookbook\templates\generic\edit_template.html:27 +#: .\cookbook\templates\generic\edit_template.html:28 #: .\cookbook\templates\meal_plan.html:277 #: .\cookbook\templates\recipes_table.html:90 msgid "Delete" @@ -469,7 +566,7 @@ msgstr "" #: .\cookbook\templates\account\email.html:12 #: .\cookbook\templates\account\password_change.html:11 #: .\cookbook\templates\account\password_set.html:11 -#: .\cookbook\templates\base.html:154 .\cookbook\templates\settings.html:6 +#: .\cookbook\templates\base.html:204 .\cookbook\templates\settings.html:6 #: .\cookbook\templates\settings.html:17 #: .\cookbook\templates\socialaccount\connections.html:10 msgid "Settings" @@ -547,7 +644,7 @@ msgid "" msgstr "" #: .\cookbook\templates\account\email_confirm.html:22 -#: .\cookbook\templates\generic\delete_template.html:21 +#: .\cookbook\templates\generic\delete_template.html:22 msgid "Confirm" msgstr "Confirme" @@ -559,7 +656,7 @@ msgid "" "request." msgstr "" -#: .\cookbook\templates\account\login.html:8 .\cookbook\templates\base.html:189 +#: .\cookbook\templates\account\login.html:8 .\cookbook\templates\base.html:234 msgid "Login" msgstr "Iniciar sessão" @@ -612,7 +709,7 @@ msgstr "" #: .\cookbook\templates\account\password_change.html:12 #: .\cookbook\templates\account\password_set.html:12 -#: .\cookbook\templates\settings.html:52 +#: .\cookbook\templates\settings.html:64 #, fuzzy #| msgid "Settings" msgid "Password" @@ -696,103 +793,88 @@ msgstr "" msgid "We are sorry, but the sign up is currently closed." msgstr "" -#: .\cookbook\templates\api_info.html:5 .\cookbook\templates\base.html:179 +#: .\cookbook\templates\api_info.html:5 .\cookbook\templates\base.html:222 #: .\cookbook\templates\rest_framework\api.html:11 msgid "API Documentation" msgstr "Documentação API" -#: .\cookbook\templates\base.html:85 -msgid "Utensils" -msgstr "Utensílios" - -#: .\cookbook\templates\base.html:95 +#: .\cookbook\templates\base.html:86 msgid "Shopping" msgstr "Compras" -#: .\cookbook\templates\base.html:101 +#: .\cookbook\templates\base.html:113 +msgid "Keyword" +msgstr "Palavra-chave" + +#: .\cookbook\templates\base.html:137 +#: .\cookbook\templates\forms\ingredients.html:24 +#: .\cookbook\templates\space.html:41 .\cookbook\templates\stats.html:26 +#: .\cookbook\views\lists.py:146 +msgid "Units" +msgstr "Unidades" + +#: .\cookbook\templates\base.html:151 #: .\cookbook\templates\shopping_list.html:230 #: .\cookbook\templates\supermarket.html:7 msgid "Supermarket" msgstr "" -#: .\cookbook\templates\base.html:112 .\cookbook\views\delete.py:84 -#: .\cookbook\views\edit.py:102 .\cookbook\views\lists.py:26 -#: .\cookbook\views\new.py:78 -msgid "Keyword" -msgstr "Palavra-chave" - -#: .\cookbook\templates\base.html:114 +#: .\cookbook\templates\base.html:163 msgid "Batch Edit" msgstr "Editor em massa" -#: .\cookbook\templates\base.html:119 -msgid "Storage Data" -msgstr "Dados de armazenamento" - -#: .\cookbook\templates\base.html:123 -msgid "Storage Backends" -msgstr "" - -#: .\cookbook\templates\base.html:125 -msgid "Configure Sync" -msgstr "Configurar sincronização" - -#: .\cookbook\templates\base.html:127 -msgid "Discovered Recipes" -msgstr "Descobrir Receitas" - -#: .\cookbook\templates\base.html:129 -msgid "Discovery Log" -msgstr "" - -#: .\cookbook\templates\base.html:131 .\cookbook\templates\stats.html:10 -msgid "Statistics" -msgstr "Estatísticas" - -#: .\cookbook\templates\base.html:133 -msgid "Units & Ingredients" -msgstr "Unidades e Ingredientes" - -#: .\cookbook\templates\base.html:135 .\cookbook\templates\index.html:47 -msgid "Import Recipe" -msgstr "Importar Receita" - -#: .\cookbook\templates\base.html:156 .\cookbook\templates\history.html:6 +#: .\cookbook\templates\base.html:175 .\cookbook\templates\history.html:6 #: .\cookbook\templates\history.html:14 msgid "History" msgstr "Histórico" -#: .\cookbook\templates\base.html:159 .\cookbook\templates\space.html:7 +#: .\cookbook\templates\base.html:191 .\cookbook\templates\index.html:47 +msgid "Import Recipe" +msgstr "Importar Receita" + +#: .\cookbook\templates\base.html:193 +#: .\cookbook\templates\shopping_list.html:188 +#: .\cookbook\templates\shopping_list.html:210 +msgid "Create" +msgstr "Criar" + +#: .\cookbook\templates\base.html:207 .\cookbook\templates\space.html:7 #: .\cookbook\templates\space.html:19 #, fuzzy #| msgid "Settings" msgid "Space Settings" msgstr "Definições" -#: .\cookbook\templates\base.html:163 .\cookbook\templates\system.html:13 +#: .\cookbook\templates\base.html:212 .\cookbook\templates\system.html:13 msgid "System" msgstr "Sistema" -#: .\cookbook\templates\base.html:165 .\cookbook\templates\base.html:171 +#: .\cookbook\templates\base.html:214 msgid "Admin" msgstr "Administração" -#: .\cookbook\templates\base.html:175 +#: .\cookbook\templates\base.html:218 msgid "Markdown Guide" msgstr "" -#: .\cookbook\templates\base.html:177 +#: .\cookbook\templates\base.html:220 msgid "GitHub" msgstr "GitHub" -#: .\cookbook\templates\base.html:181 +#: .\cookbook\templates\base.html:224 msgid "API Browser" msgstr "Navegador de API" -#: .\cookbook\templates\base.html:184 +#: .\cookbook\templates\base.html:227 msgid "Log out" msgstr "" +#: .\cookbook\templates\base.html:229 +#: .\cookbook\templates\generic\list_template.html:14 +#: .\cookbook\templates\space.html:58 .\cookbook\templates\stats.html:43 +msgid "External Recipes" +msgstr "" + #: .\cookbook\templates\batch\edit.html:6 msgid "Batch edit Category" msgstr "Editar Categorias em massa" @@ -805,7 +887,7 @@ msgstr "Editar Receitas em massa" msgid "Add the specified keywords to all recipes containing a word" msgstr "Adicionar palavras-chave a todas as receitas que contenham uma palavra" -#: .\cookbook\templates\batch\monitor.html:6 .\cookbook\views\edit.py:85 +#: .\cookbook\templates\batch\monitor.html:6 .\cookbook\views\edit.py:83 msgid "Sync" msgstr "Sincronizar" @@ -823,10 +905,26 @@ msgstr "" msgid "The path must be in the following format" msgstr "O caminho deve estar no seguinte formato" -#: .\cookbook\templates\batch\monitor.html:27 +#: .\cookbook\templates\batch\monitor.html:21 +msgid "Manage External Storage" +msgstr "" + +#: .\cookbook\templates\batch\monitor.html:28 msgid "Sync Now!" msgstr "Sincronizar" +#: .\cookbook\templates\batch\monitor.html:29 +#, fuzzy +#| msgid "Recipes" +msgid "Show Recipes" +msgstr "Receitas" + +#: .\cookbook\templates\batch\monitor.html:30 +#, fuzzy +#| msgid "View Log" +msgid "Show Log" +msgstr "Ver Registro" + #: .\cookbook\templates\batch\waiting.html:4 #: .\cookbook\templates\batch\waiting.html:10 msgid "Importing Recipes" @@ -840,32 +938,10 @@ msgstr "" "Este processo pode demorar alguns minutos, dependendo do número de receitas " "a ser importadas." -#: .\cookbook\templates\books.html:5 .\cookbook\templates\books.html:11 +#: .\cookbook\templates\books.html:7 msgid "Recipe Books" msgstr "Livros de Receitas" -#: .\cookbook\templates\books.html:15 -msgid "New Book" -msgstr "Novo Livro" - -#: .\cookbook\templates\books.html:27 .\cookbook\templates\recipe_view.html:26 -msgid "by" -msgstr "por" - -#: .\cookbook\templates\books.html:34 -msgid "Toggle Recipes" -msgstr "" - -#: .\cookbook\templates\books.html:54 -#: .\cookbook\templates\meal_plan_entry.html:48 -#: .\cookbook\templates\recipes_table.html:64 -msgid "Last cooked" -msgstr "Última cozinhada" - -#: .\cookbook\templates\books.html:71 -msgid "There are no recipes in this book yet." -msgstr "Ainda não há receitas neste livro." - #: .\cookbook\templates\export.html:6 .\cookbook\templates\test2.html:6 msgid "Export Recipes" msgstr "Exportar Receitas" @@ -888,217 +964,21 @@ msgid "Import new Recipe" msgstr "Importar nova Receita" #: .\cookbook\templates\forms\edit_import_recipe.html:14 -#: .\cookbook\templates\forms\edit_internal_recipe.html:439 -#: .\cookbook\templates\forms\edit_internal_recipe.html:471 #: .\cookbook\templates\generic\edit_template.html:23 #: .\cookbook\templates\generic\new_template.html:23 #: .\cookbook\templates\include\log_cooking.html:28 #: .\cookbook\templates\meal_plan.html:325 -#: .\cookbook\templates\settings.html:46 .\cookbook\templates\settings.html:87 -#: .\cookbook\templates\settings.html:105 +#: .\cookbook\templates\settings.html:58 .\cookbook\templates\settings.html:99 +#: .\cookbook\templates\settings.html:117 +#: .\cookbook\templates\settings.html:162 #: .\cookbook\templates\shopping_list.html:353 msgid "Save" msgstr "Gravar" #: .\cookbook\templates\forms\edit_internal_recipe.html:7 -#: .\cookbook\templates\forms\edit_internal_recipe.html:34 msgid "Edit Recipe" msgstr "Editar Receita" -#: .\cookbook\templates\forms\edit_internal_recipe.html:56 -#: .\cookbook\templates\url_import.html:171 -msgid "Description" -msgstr "" - -#: .\cookbook\templates\forms\edit_internal_recipe.html:76 -msgid "Waiting Time" -msgstr "Tempo de Espera" - -#: .\cookbook\templates\forms\edit_internal_recipe.html:82 -msgid "Servings Text" -msgstr "" - -#: .\cookbook\templates\forms\edit_internal_recipe.html:93 -msgid "Select Keywords" -msgstr "Escolher Palavras-chave" - -#: .\cookbook\templates\forms\edit_internal_recipe.html:94 -#: .\cookbook\templates\url_import.html:583 -#, fuzzy -#| msgid "Keyword" -msgid "Add Keyword" -msgstr "Palavra-chave" - -#: .\cookbook\templates\forms\edit_internal_recipe.html:112 -msgid "Nutrition" -msgstr "" - -#: .\cookbook\templates\forms\edit_internal_recipe.html:116 -#: .\cookbook\templates\forms\edit_internal_recipe.html:166 -msgid "Delete Step" -msgstr "Apagar Passo" - -#: .\cookbook\templates\forms\edit_internal_recipe.html:120 -msgid "Calories" -msgstr "" - -#: .\cookbook\templates\forms\edit_internal_recipe.html:123 -msgid "Carbohydrates" -msgstr "" - -#: .\cookbook\templates\forms\edit_internal_recipe.html:126 -msgid "Fats" -msgstr "" - -#: .\cookbook\templates\forms\edit_internal_recipe.html:128 -msgid "Proteins" -msgstr "" - -#: .\cookbook\templates\forms\edit_internal_recipe.html:150 -#: .\cookbook\templates\forms\edit_internal_recipe.html:504 -msgid "Step" -msgstr "Passo" - -#: .\cookbook\templates\forms\edit_internal_recipe.html:171 -msgid "Show as header" -msgstr "Mostrar como cabeçalho" - -#: .\cookbook\templates\forms\edit_internal_recipe.html:177 -msgid "Hide as header" -msgstr "Esconder como cabeçalho" - -#: .\cookbook\templates\forms\edit_internal_recipe.html:182 -msgid "Move Up" -msgstr "Mover para cima" - -#: .\cookbook\templates\forms\edit_internal_recipe.html:187 -msgid "Move Down" -msgstr "Mover para baixo" - -#: .\cookbook\templates\forms\edit_internal_recipe.html:196 -msgid "Step Name" -msgstr "Nome do passo" - -#: .\cookbook\templates\forms\edit_internal_recipe.html:200 -msgid "Step Type" -msgstr "Tipo de passo" - -#: .\cookbook\templates\forms\edit_internal_recipe.html:213 -msgid "Step time in Minutes" -msgstr "Tempo de passo em minutos" - -#: .\cookbook\templates\forms\edit_internal_recipe.html:229 -#, fuzzy -#| msgid "Select Unit" -msgid "Select File" -msgstr "Selecionar Unidade" - -#: .\cookbook\templates\forms\edit_internal_recipe.html:230 -#: .\cookbook\templates\forms\edit_internal_recipe.html:252 -#: .\cookbook\templates\forms\edit_internal_recipe.html:313 -#: .\cookbook\templates\forms\edit_internal_recipe.html:337 -#: .\cookbook\templates\shopping_list.html:189 -#: .\cookbook\templates\shopping_list.html:211 -#: .\cookbook\templates\shopping_list.html:241 -#: .\cookbook\templates\shopping_list.html:265 -#: .\cookbook\templates\url_import.html:495 -#: .\cookbook\templates\url_import.html:527 -msgid "Select" -msgstr "Selecionar" - -#: .\cookbook\templates\forms\edit_internal_recipe.html:251 -#, fuzzy -#| msgid "Delete Recipe" -msgid "Select Recipe" -msgstr "Apagar Receita" - -#: .\cookbook\templates\forms\edit_internal_recipe.html:311 -#: .\cookbook\templates\shopping_list.html:187 -msgid "Select Unit" -msgstr "Selecionar Unidade" - -#: .\cookbook\templates\forms\edit_internal_recipe.html:312 -#: .\cookbook\templates\forms\edit_internal_recipe.html:336 -#: .\cookbook\templates\shopping_list.html:188 -#: .\cookbook\templates\shopping_list.html:210 -msgid "Create" -msgstr "Criar" - -#: .\cookbook\templates\forms\edit_internal_recipe.html:335 -#: .\cookbook\templates\shopping_list.html:209 -msgid "Select Food" -msgstr "" - -#: .\cookbook\templates\forms\edit_internal_recipe.html:352 -#: .\cookbook\templates\meal_plan.html:256 -#: .\cookbook\templates\url_import.html:542 -msgid "Note" -msgstr "Nota" - -#: .\cookbook\templates\forms\edit_internal_recipe.html:369 -msgid "Delete Ingredient" -msgstr "Apagar Ingrediente" - -#: .\cookbook\templates\forms\edit_internal_recipe.html:375 -msgid "Make Header" -msgstr "Adicionar Cabeçalho" - -#: .\cookbook\templates\forms\edit_internal_recipe.html:381 -msgid "Make Ingredient" -msgstr "Adicionar Ingrediente" - -#: .\cookbook\templates\forms\edit_internal_recipe.html:387 -msgid "Disable Amount" -msgstr "Desativar Quantidade" - -#: .\cookbook\templates\forms\edit_internal_recipe.html:393 -msgid "Enable Amount" -msgstr "Ativar Quantidade" - -#: .\cookbook\templates\forms\edit_internal_recipe.html:398 -msgid "Copy Template Reference" -msgstr "" - -#: .\cookbook\templates\forms\edit_internal_recipe.html:424 -#: .\cookbook\templates\url_import.html:297 -#: .\cookbook\templates\url_import.html:567 -msgid "Instructions" -msgstr "Instruções" - -#: .\cookbook\templates\forms\edit_internal_recipe.html:437 -#: .\cookbook\templates\forms\edit_internal_recipe.html:468 -msgid "Save & View" -msgstr "Gravar e Ver" - -#: .\cookbook\templates\forms\edit_internal_recipe.html:441 -#: .\cookbook\templates\forms\edit_internal_recipe.html:474 -msgid "Add Step" -msgstr "Adicionar Passo" - -#: .\cookbook\templates\forms\edit_internal_recipe.html:444 -#: .\cookbook\templates\forms\edit_internal_recipe.html:478 -msgid "Add Nutrition" -msgstr "" - -#: .\cookbook\templates\forms\edit_internal_recipe.html:446 -#: .\cookbook\templates\forms\edit_internal_recipe.html:480 -msgid "Remove Nutrition" -msgstr "" - -#: .\cookbook\templates\forms\edit_internal_recipe.html:448 -#: .\cookbook\templates\forms\edit_internal_recipe.html:483 -msgid "View Recipe" -msgstr "Ver Receita" - -#: .\cookbook\templates\forms\edit_internal_recipe.html:450 -#: .\cookbook\templates\forms\edit_internal_recipe.html:485 -msgid "Delete Recipe" -msgstr "Apagar Receita" - -#: .\cookbook\templates\forms\edit_internal_recipe.html:491 -msgid "Steps" -msgstr "Passos" - #: .\cookbook\templates\forms\ingredients.html:15 msgid "Edit Ingredients" msgstr "Editar ingredientes" @@ -1119,11 +999,6 @@ msgstr "" "Junta duas unidades ou ingredientes e atualiza todas as receitas que as " "estejam a usar. " -#: .\cookbook\templates\forms\ingredients.html:24 -#: .\cookbook\templates\space.html:41 .\cookbook\templates\stats.html:26 -msgid "Units" -msgstr "Unidades" - #: .\cookbook\templates\forms\ingredients.html:26 msgid "Are you sure that you want to merge these two units?" msgstr "" @@ -1137,29 +1012,33 @@ msgstr "Juntar" msgid "Are you sure that you want to merge these two ingredients?" msgstr "" -#: .\cookbook\templates\generic\delete_template.html:18 +#: .\cookbook\templates\generic\delete_template.html:19 #, python-format msgid "Are you sure you want to delete the %(title)s: %(object)s " msgstr "Tem a certeza que quer apagar %(title)s: %(object)s" -#: .\cookbook\templates\generic\edit_template.html:30 +#: .\cookbook\templates\generic\delete_template.html:23 +msgid "Cancel" +msgstr "" + +#: .\cookbook\templates\generic\edit_template.html:32 msgid "View" msgstr "Ver" -#: .\cookbook\templates\generic\edit_template.html:34 +#: .\cookbook\templates\generic\edit_template.html:36 msgid "Delete original file" msgstr "Apagar ficheiro original" #: .\cookbook\templates\generic\list_template.html:6 -#: .\cookbook\templates\generic\list_template.html:12 +#: .\cookbook\templates\generic\list_template.html:21 msgid "List" msgstr "Listar " -#: .\cookbook\templates\generic\list_template.html:25 +#: .\cookbook\templates\generic\list_template.html:34 msgid "Filter" msgstr "Filtrar" -#: .\cookbook\templates\generic\list_template.html:30 +#: .\cookbook\templates\generic\list_template.html:39 msgid "Import all" msgstr "Importar tudo" @@ -1482,6 +1361,11 @@ msgstr "" msgid "Week iCal export" msgstr "" +#: .\cookbook\templates\meal_plan.html:256 +#: .\cookbook\templates\url_import.html:542 +msgid "Note" +msgstr "Nota" + #: .\cookbook\templates\meal_plan.html:264 #: .\cookbook\templates\meal_plan_entry.html:18 msgid "Created by" @@ -1545,6 +1429,11 @@ msgstr "" msgid "Meal Plan View" msgstr "" +#: .\cookbook\templates\meal_plan_entry.html:48 +#: .\cookbook\templates\recipes_table.html:64 +msgid "Last cooked" +msgstr "Última cozinhada" + #: .\cookbook\templates\meal_plan_entry.html:50 msgid "Never cooked before." msgstr "" @@ -1647,8 +1536,12 @@ msgstr "" msgid "Comments" msgstr "" +#: .\cookbook\templates\recipe_view.html:26 +msgid "by" +msgstr "por" + #: .\cookbook\templates\recipe_view.html:44 .\cookbook\views\delete.py:118 -#: .\cookbook\views\edit.py:179 +#: .\cookbook\views\edit.py:177 msgid "Comment" msgstr "" @@ -1680,68 +1573,239 @@ msgstr "" msgid "Recipe Home" msgstr "" -#: .\cookbook\templates\settings.html:25 +#: .\cookbook\templates\search_info.html:5 +#: .\cookbook\templates\search_info.html:9 +#: .\cookbook\templates\settings.html:157 +#, fuzzy +#| msgid "Search String" +msgid "Search Settings" +msgstr "Procurar" + +#: .\cookbook\templates\search_info.html:10 +msgid "" +"\n" +" Creating the best search experience is complicated and weighs " +"heavily on your personal configuration. \n" +" Changing any of the search settings can have significant impact on " +"the speed and quality of the results.\n" +" Search Methods, Trigrams and Full Text Search configurations are " +"only available if you are using Postgres for your database.\n" +" " +msgstr "" + +#: .\cookbook\templates\search_info.html:19 +#, fuzzy +#| msgid "Search" +msgid "Search Methods" +msgstr "Procurar" + +#: .\cookbook\templates\search_info.html:23 +msgid "" +" \n" +" Full text searches attempt to normalize the words provided to " +"match common variants. For example: 'forked', 'forking', 'forks' will all " +"normalize to 'fork'.\n" +" There are several methods available, described below, that will " +"control how the search behavior should react when multiple words are " +"searched.\n" +" Full technical details on how these operate can be viewed on Postgresql's website.\n" +" " +msgstr "" + +#: .\cookbook\templates\search_info.html:29 +msgid "" +" \n" +" Simple searches ignore punctuation and common words such as " +"'the', 'a', 'and'. And will treat seperate words as required.\n" +" Searching for 'apple or flour' will return any recipe that " +"includes both 'apple' and 'flour' anywhere in the fields that have been " +"selected for a full text search.\n" +" " +msgstr "" + +#: .\cookbook\templates\search_info.html:34 +msgid "" +" \n" +" Phrase searches ignore punctuation, but will search for all of " +"the words in the exact order provided.\n" +" Searching for 'apple or flour' will only return a recipe that " +"includes the exact phrase 'apple or flour' in any of the fields that have " +"been selected for a full text search.\n" +" " +msgstr "" + +#: .\cookbook\templates\search_info.html:39 +msgid "" +" \n" +" Web searches simulate functionality found on many web search " +"sites supporting special syntax.\n" +" Placing quotes around several words will convert those words " +"into a phrase.\n" +" 'or' is recongized as searching for the word (or phrase) " +"immediately before 'or' OR the word (or phrase) directly after.\n" +" '-' is recognized as searching for recipes that do not include " +"the word (or phrase) that comes immediately after. \n" +" For example searching for 'apple pie' or cherry -butter will " +"return any recipe that includes the phrase 'apple pie' or the word " +"'cherry' \n" +" in any field included in the full text search but exclude any " +"recipe that has the word 'butter' in any field included.\n" +" " +msgstr "" + +#: .\cookbook\templates\search_info.html:48 +msgid "" +" \n" +" Raw search is similar to Web except will take puncuation " +"operators such as '|', '&' and '()'\n" +" " +msgstr "" + +#: .\cookbook\templates\search_info.html:59 +msgid "" +" \n" +" Another approach to searching that also requires Postgresql is " +"fuzzy search or trigram similarity. A trigram is a group of three " +"consecutive characters.\n" +" For example searching for 'apple' will create x trigrams 'app', " +"'ppl', 'ple' and will create a score of how closely words match the " +"generated trigrams.\n" +" One benefit of searching trigams is that a search for 'sandwich' " +"will find mispelled words such as 'sandwhich' that would be missed by other " +"methods.\n" +" " +msgstr "" + +#: .\cookbook\templates\search_info.html:69 +#, fuzzy +#| msgid "Search Recipe" +msgid "Search Fields" +msgstr "Procure Receita" + +#: .\cookbook\templates\search_info.html:73 +msgid "" +" \n" +" Unaccent is a special case in that it enables searching a field " +"'unaccented' for each search style attempting to ignore accented values. \n" +" For example when you enable unaccent for 'Name' any search " +"(starts with, contains, trigram) will attempt the search ignoring accented " +"characters.\n" +" \n" +" For the other options, you can enable search on any or all " +"fields and they will be combined together with an assumed 'OR'.\n" +" For example enabling 'Name' for Starts With, 'Name' and " +"'Description' for Partial Match and 'Ingredients' and 'Keywords' for Full " +"Search\n" +" and searching for 'apple' will generate a search that will " +"return recipes that have:\n" +" - A recipe name that starts with 'apple'\n" +" - OR a recipe name that contains 'apple'\n" +" - OR a recipe description that contains 'apple'\n" +" - OR a recipe that will have a full text search match ('apple' " +"or 'apples') in ingredients\n" +" - OR a recipe that will have a full text search match in " +"Keywords\n" +"\n" +" Combining too many fields in too many types of search can have a " +"negative impact on performance, create duplicate results or return " +"unexpected results.\n" +" For example, enabling fuzzy search or partial matches will " +"interfere with web search methods. \n" +" Searching for 'apple -pie' with fuzzy search and full text " +"search will return the recipe Apple Pie. Though it is not included in the " +"full text results, it does match the trigram results.\n" +" " +msgstr "" + +#: .\cookbook\templates\search_info.html:95 +#, fuzzy +#| msgid "Search" +msgid "Search Index" +msgstr "Procurar" + +#: .\cookbook\templates\search_info.html:99 +msgid "" +" \n" +" Trigram search and Full Text Search both rely on database " +"indexes to perform effectively. \n" +" You can rebuild the indexes on all fields in the Admin page for " +"Recipes and selecting all recipes and running 'rebuild index for selected " +"recipes'\n" +" You can also rebuild indexes at the command line by executing " +"the management command 'python manage.py rebuildindex'\n" +" " +msgstr "" + +#: .\cookbook\templates\settings.html:27 msgid "Account" msgstr "" -#: .\cookbook\templates\settings.html:29 +#: .\cookbook\templates\settings.html:33 msgid "Preferences" msgstr "" -#: .\cookbook\templates\settings.html:33 +#: .\cookbook\templates\settings.html:39 #, fuzzy #| msgid "Settings" msgid "API-Settings" msgstr "Definições" -#: .\cookbook\templates\settings.html:41 +#: .\cookbook\templates\settings.html:45 +#, fuzzy +#| msgid "Search String" +msgid "Search-Settings" +msgstr "Procurar" + +#: .\cookbook\templates\settings.html:53 #, fuzzy #| msgid "Settings" msgid "Name Settings" msgstr "Definições" -#: .\cookbook\templates\settings.html:49 +#: .\cookbook\templates\settings.html:61 #, fuzzy #| msgid "Settings" msgid "Account Settings" msgstr "Definições" -#: .\cookbook\templates\settings.html:51 +#: .\cookbook\templates\settings.html:63 #, fuzzy #| msgid "Settings" msgid "Emails" msgstr "Definições" -#: .\cookbook\templates\settings.html:54 +#: .\cookbook\templates\settings.html:66 #: .\cookbook\templates\socialaccount\connections.html:11 msgid "Social" msgstr "" -#: .\cookbook\templates\settings.html:66 +#: .\cookbook\templates\settings.html:78 msgid "Language" msgstr "" -#: .\cookbook\templates\settings.html:96 +#: .\cookbook\templates\settings.html:108 msgid "Style" msgstr "" -#: .\cookbook\templates\settings.html:116 +#: .\cookbook\templates\settings.html:128 msgid "API Token" msgstr "" -#: .\cookbook\templates\settings.html:117 +#: .\cookbook\templates\settings.html:129 msgid "" "You can use both basic authentication and token based authentication to " "access the REST API." msgstr "" -#: .\cookbook\templates\settings.html:134 +#: .\cookbook\templates\settings.html:146 msgid "" "Use the token as an Authorization header prefixed by the word token as shown " "in the following examples:" msgstr "" -#: .\cookbook\templates\settings.html:136 +#: .\cookbook\templates\settings.html:148 msgid "or" msgstr "" @@ -1782,6 +1846,23 @@ msgstr "" msgid "Amount" msgstr "" +#: .\cookbook\templates\shopping_list.html:187 +msgid "Select Unit" +msgstr "Selecionar Unidade" + +#: .\cookbook\templates\shopping_list.html:189 +#: .\cookbook\templates\shopping_list.html:211 +#: .\cookbook\templates\shopping_list.html:241 +#: .\cookbook\templates\shopping_list.html:265 +#: .\cookbook\templates\url_import.html:495 +#: .\cookbook\templates\url_import.html:527 +msgid "Select" +msgstr "Selecionar" + +#: .\cookbook\templates\shopping_list.html:209 +msgid "Select Food" +msgstr "" + #: .\cookbook\templates\shopping_list.html:240 msgid "Select Supermarket" msgstr "" @@ -1879,10 +1960,6 @@ msgstr "" msgid "Recipes without Keywords" msgstr "" -#: .\cookbook\templates\space.html:58 .\cookbook\templates\stats.html:43 -msgid "External Recipes" -msgstr "" - #: .\cookbook\templates\space.html:60 .\cookbook\templates\stats.html:45 msgid "Internal Recipes" msgstr "" @@ -1936,7 +2013,7 @@ msgid "There are no members in your space yet!" msgstr "Ainda não há receitas neste livro." #: .\cookbook\templates\space.html:130 .\cookbook\templates\system.html:21 -#: .\cookbook\views\lists.py:115 +#: .\cookbook\views\lists.py:100 msgid "Invite Links" msgstr "" @@ -1944,6 +2021,10 @@ msgstr "" msgid "Stats" msgstr "" +#: .\cookbook\templates\stats.html:10 +msgid "Statistics" +msgstr "Estatísticas" + #: .\cookbook\templates\system.html:22 msgid "Show Links" msgstr "" @@ -2092,6 +2173,10 @@ msgstr "" msgid "Text dragged here will be appended to the name." msgstr "" +#: .\cookbook\templates\url_import.html:171 +msgid "Description" +msgstr "" + #: .\cookbook\templates\url_import.html:175 msgid "Text dragged here will be appended to the description." msgstr "" @@ -2120,6 +2205,11 @@ msgstr "Tempo" msgid "Ingredients dragged here will be appended to current list." msgstr "" +#: .\cookbook\templates\url_import.html:297 +#: .\cookbook\templates\url_import.html:567 +msgid "Instructions" +msgstr "Instruções" + #: .\cookbook\templates\url_import.html:302 msgid "" "Recipe instructions dragged here will be appended to current instructions." @@ -2177,6 +2267,12 @@ msgstr "" msgid "Select one" msgstr "" +#: .\cookbook\templates\url_import.html:583 +#, fuzzy +#| msgid "Keyword" +msgid "Add Keyword" +msgstr "Palavra-chave" + #: .\cookbook\templates\url_import.html:596 msgid "All Keywords" msgstr "" @@ -2212,45 +2308,102 @@ msgstr "" msgid "Recipe Markup Specification" msgstr "" -#: .\cookbook\views\api.py:79 +#: .\cookbook\views\api.py:82 .\cookbook\views\api.py:131 msgid "Parameter updated_at incorrectly formatted" msgstr "" -#: .\cookbook\views\api.py:580 .\cookbook\views\views.py:303 +#: .\cookbook\views\api.py:151 +#, python-brace-format +msgid "No {self.basename} with id {pk} exists" +msgstr "" + +#: .\cookbook\views\api.py:155 .\cookbook\views\edit.py:300 +#: .\cookbook\views\edit.py:316 +msgid "Cannot merge with the same object!" +msgstr "" + +#: .\cookbook\views\api.py:162 +#, python-brace-format +msgid "No {self.basename} with id {target} exists" +msgstr "" + +#: .\cookbook\views\api.py:167 +msgid "Cannot merge with child object!" +msgstr "" + +#: .\cookbook\views\api.py:195 +#, python-brace-format +msgid "{source.name} was merged successfully with {target.name}" +msgstr "" + +#: .\cookbook\views\api.py:199 +#, python-brace-format +msgid "An error occurred attempting to merge {source.name} with {target.name}" +msgstr "" + +#: .\cookbook\views\api.py:239 +#, python-brace-format +msgid "No {self.basename} with id {child} exists" +msgstr "" + +#: .\cookbook\views\api.py:248 +#, python-brace-format +msgid "{child.name} was moved successfully to the root." +msgstr "" + +#: .\cookbook\views\api.py:251 .\cookbook\views\api.py:269 +msgid "An error occurred attempting to move " +msgstr "" + +#: .\cookbook\views\api.py:254 +msgid "Cannot move an object to itself!" +msgstr "" + +#: .\cookbook\views\api.py:260 +#, python-brace-format +msgid "No {self.basename} with id {parent} exists" +msgstr "" + +#: .\cookbook\views\api.py:266 +#, python-brace-format +msgid "{child.name} was moved successfully to parent {parent.name}" +msgstr "" + +#: .\cookbook\views\api.py:704 .\cookbook\views\views.py:289 msgid "This feature is not available in the demo version!" msgstr "" -#: .\cookbook\views\api.py:603 +#: .\cookbook\views\api.py:727 msgid "Sync successful!" msgstr "" -#: .\cookbook\views\api.py:608 +#: .\cookbook\views\api.py:732 msgid "Error synchronizing with Storage" msgstr "" -#: .\cookbook\views\api.py:686 +#: .\cookbook\views\api.py:810 msgid "Nothing to do." msgstr "" -#: .\cookbook\views\api.py:701 +#: .\cookbook\views\api.py:825 msgid "The requested site provided malformed data and cannot be read." msgstr "" -#: .\cookbook\views\api.py:708 +#: .\cookbook\views\api.py:832 msgid "The requested page could not be found." msgstr "" -#: .\cookbook\views\api.py:717 +#: .\cookbook\views\api.py:841 msgid "" "The requested site does not provide any recognized data format to import the " "recipe from." msgstr "Esta página não contém uma receita que eu consiga entender." -#: .\cookbook\views\api.py:731 +#: .\cookbook\views\api.py:855 msgid "No useable data could be found." msgstr "" -#: .\cookbook\views\api.py:747 +#: .\cookbook\views\api.py:871 msgid "I couldn't find anything to do." msgstr "" @@ -2277,8 +2430,8 @@ msgstr[1] "" msgid "Monitor" msgstr "" -#: .\cookbook\views\delete.py:96 .\cookbook\views\lists.py:102 -#: .\cookbook\views\new.py:98 +#: .\cookbook\views\delete.py:96 .\cookbook\views\lists.py:86 +#: .\cookbook\views\new.py:97 msgid "Storage Backend" msgstr "" @@ -2287,8 +2440,8 @@ msgid "" "Could not delete this storage backend as it is used in at least one monitor." msgstr "" -#: .\cookbook\views\delete.py:129 .\cookbook\views\edit.py:213 -#: .\cookbook\views\new.py:156 +#: .\cookbook\views\delete.py:129 .\cookbook\views\edit.py:211 +#: .\cookbook\views\new.py:155 msgid "Recipe Book" msgstr "" @@ -2296,47 +2449,39 @@ msgstr "" msgid "Bookmarks" msgstr "" -#: .\cookbook\views\delete.py:163 .\cookbook\views\new.py:252 +#: .\cookbook\views\delete.py:163 .\cookbook\views\new.py:251 msgid "Invite Link" msgstr "" -#: .\cookbook\views\edit.py:119 -msgid "Food" -msgstr "" - -#: .\cookbook\views\edit.py:128 +#: .\cookbook\views\edit.py:126 msgid "You cannot edit this storage!" msgstr "" -#: .\cookbook\views\edit.py:148 +#: .\cookbook\views\edit.py:146 msgid "Storage saved!" msgstr "" -#: .\cookbook\views\edit.py:154 +#: .\cookbook\views\edit.py:152 msgid "There was an error updating this storage backend!" msgstr "" -#: .\cookbook\views\edit.py:165 +#: .\cookbook\views\edit.py:163 msgid "Storage" msgstr "" -#: .\cookbook\views\edit.py:261 +#: .\cookbook\views\edit.py:259 msgid "Changes saved!" msgstr "" -#: .\cookbook\views\edit.py:265 +#: .\cookbook\views\edit.py:263 msgid "Error saving changes!" msgstr "" -#: .\cookbook\views\edit.py:299 +#: .\cookbook\views\edit.py:298 msgid "Units merged!" msgstr "" -#: .\cookbook\views\edit.py:301 .\cookbook\views\edit.py:317 -msgid "Cannot merge with the same object!" -msgstr "" - -#: .\cookbook\views\edit.py:315 +#: .\cookbook\views\edit.py:314 msgid "Foods merged!" msgstr "" @@ -2348,133 +2493,255 @@ msgstr "" msgid "Exporting is not implemented for this provider" msgstr "" -#: .\cookbook\views\lists.py:40 +#: .\cookbook\views\lists.py:26 msgid "Import Log" msgstr "" -#: .\cookbook\views\lists.py:53 +#: .\cookbook\views\lists.py:39 msgid "Discovery" msgstr "" -#: .\cookbook\views\lists.py:85 +#: .\cookbook\views\lists.py:69 msgid "Shopping Lists" msgstr "" -#: .\cookbook\views\new.py:123 +#: .\cookbook\views\lists.py:129 +#, fuzzy +#| msgid "New Food" +msgid "Foods" +msgstr "Novo Prato" + +#: .\cookbook\views\lists.py:163 +msgid "Supermarkets" +msgstr "" + +#: .\cookbook\views\lists.py:179 +msgid "Shopping Categories" +msgstr "" + +#: .\cookbook\views\new.py:122 msgid "Imported new recipe!" msgstr "" -#: .\cookbook\views\new.py:126 +#: .\cookbook\views\new.py:125 msgid "There was an error importing this recipe!" msgstr "" -#: .\cookbook\views\new.py:226 +#: .\cookbook\views\new.py:225 msgid "Hello" msgstr "" -#: .\cookbook\views\new.py:226 +#: .\cookbook\views\new.py:225 msgid "You have been invited by " msgstr "" -#: .\cookbook\views\new.py:227 +#: .\cookbook\views\new.py:226 msgid " to join their Tandoor Recipes space " msgstr "" -#: .\cookbook\views\new.py:228 +#: .\cookbook\views\new.py:227 msgid "Click the following link to activate your account: " msgstr "" -#: .\cookbook\views\new.py:229 +#: .\cookbook\views\new.py:228 msgid "" "If the link does not work use the following code to manually join the space: " msgstr "" -#: .\cookbook\views\new.py:230 +#: .\cookbook\views\new.py:229 msgid "The invitation is valid until " msgstr "" -#: .\cookbook\views\new.py:231 +#: .\cookbook\views\new.py:230 msgid "" "Tandoor Recipes is an Open Source recipe manager. Check it out on GitHub " msgstr "" -#: .\cookbook\views\new.py:234 +#: .\cookbook\views\new.py:233 msgid "Tandoor Recipes Invite" msgstr "" -#: .\cookbook\views\new.py:241 +#: .\cookbook\views\new.py:240 msgid "Invite link successfully send to user." msgstr "" -#: .\cookbook\views\new.py:244 +#: .\cookbook\views\new.py:243 msgid "" "You have send to many emails, please share the link manually or wait a few " "hours." msgstr "" -#: .\cookbook\views\new.py:246 +#: .\cookbook\views\new.py:245 msgid "Email to user could not be send, please share link manually." msgstr "" -#: .\cookbook\views\views.py:129 +#: .\cookbook\views\views.py:128 msgid "" "You have successfully created your own recipe space. Start by adding some " "recipes or invite other people to join you." msgstr "" -#: .\cookbook\views\views.py:177 +#: .\cookbook\views\views.py:176 msgid "You do not have the required permissions to perform this action!" msgstr "" -#: .\cookbook\views\views.py:188 +#: .\cookbook\views\views.py:187 msgid "Comment saved!" msgstr "" -#: .\cookbook\views\views.py:395 +#: .\cookbook\views\views.py:351 +msgid "You must select at least one field to search!" +msgstr "" + +#: .\cookbook\views\views.py:354 +msgid "" +"To use this search method you must select at least one full text search " +"field!" +msgstr "" + +#: .\cookbook\views\views.py:357 +msgid "Fuzzy search is not compatible with this search method!" +msgstr "" + +#: .\cookbook\views\views.py:437 msgid "" "The setup page can only be used to create the first user! If you have " "forgotten your superuser credentials please consult the django documentation " "on how to reset passwords." msgstr "" -#: .\cookbook\views\views.py:402 +#: .\cookbook\views\views.py:444 msgid "Passwords dont match!" msgstr "" -#: .\cookbook\views\views.py:418 +#: .\cookbook\views\views.py:460 msgid "User has been created, please login!" msgstr "" -#: .\cookbook\views\views.py:434 +#: .\cookbook\views\views.py:476 msgid "Malformed Invite Link supplied!" msgstr "" -#: .\cookbook\views\views.py:441 +#: .\cookbook\views\views.py:483 #, fuzzy #| msgid "You are not logged in and therefore cannot view this page!" msgid "You are already member of a space and therefore cannot join this one." msgstr "Autenticação necessária para aceder a esta página!" -#: .\cookbook\views\views.py:452 +#: .\cookbook\views\views.py:494 msgid "Successfully joined space." msgstr "" -#: .\cookbook\views\views.py:458 +#: .\cookbook\views\views.py:500 msgid "Invite Link not valid or already used!" msgstr "" -#: .\cookbook\views\views.py:522 +#: .\cookbook\views\views.py:564 msgid "" "Reporting share links is not enabled for this instance. Please notify the " "page administrator to report problems." msgstr "" -#: .\cookbook\views\views.py:528 +#: .\cookbook\views\views.py:570 msgid "" "Recipe sharing link has been disabled! For additional information please " "contact the page administrator." msgstr "" +#~ msgid "Utensils" +#~ msgstr "Utensílios" + +#~ msgid "Storage Data" +#~ msgstr "Dados de armazenamento" + +#~ msgid "Configure Sync" +#~ msgstr "Configurar sincronização" + +#~ msgid "Discovered Recipes" +#~ msgstr "Descobrir Receitas" + +#~ msgid "Units & Ingredients" +#~ msgstr "Unidades e Ingredientes" + +#~ msgid "New Book" +#~ msgstr "Novo Livro" + +#~ msgid "There are no recipes in this book yet." +#~ msgstr "Ainda não há receitas neste livro." + +#~ msgid "Waiting Time" +#~ msgstr "Tempo de Espera" + +#~ msgid "Select Keywords" +#~ msgstr "Escolher Palavras-chave" + +#~ msgid "Delete Step" +#~ msgstr "Apagar Passo" + +#~ msgid "Step" +#~ msgstr "Passo" + +#~ msgid "Show as header" +#~ msgstr "Mostrar como cabeçalho" + +#~ msgid "Hide as header" +#~ msgstr "Esconder como cabeçalho" + +#~ msgid "Move Up" +#~ msgstr "Mover para cima" + +#~ msgid "Move Down" +#~ msgstr "Mover para baixo" + +#~ msgid "Step Name" +#~ msgstr "Nome do passo" + +#~ msgid "Step Type" +#~ msgstr "Tipo de passo" + +#~ msgid "Step time in Minutes" +#~ msgstr "Tempo de passo em minutos" + +#, fuzzy +#~| msgid "Select Unit" +#~ msgid "Select File" +#~ msgstr "Selecionar Unidade" + +#, fuzzy +#~| msgid "Delete Recipe" +#~ msgid "Select Recipe" +#~ msgstr "Apagar Receita" + +#~ msgid "Delete Ingredient" +#~ msgstr "Apagar Ingrediente" + +#~ msgid "Make Header" +#~ msgstr "Adicionar Cabeçalho" + +#~ msgid "Make Ingredient" +#~ msgstr "Adicionar Ingrediente" + +#~ msgid "Disable Amount" +#~ msgstr "Desativar Quantidade" + +#~ msgid "Enable Amount" +#~ msgstr "Ativar Quantidade" + +#~ msgid "Save & View" +#~ msgstr "Gravar e Ver" + +#~ msgid "Add Step" +#~ msgstr "Adicionar Passo" + +#~ msgid "View Recipe" +#~ msgstr "Ver Receita" + +#~ msgid "Delete Recipe" +#~ msgstr "Apagar Receita" + +#~ msgid "Steps" +#~ msgstr "Passos" + #~ msgid "" #~ "A username is not required, if left blank the new user can choose one." #~ msgstr "" diff --git a/cookbook/locale/rn/LC_MESSAGES/django.mo b/cookbook/locale/rn/LC_MESSAGES/django.mo index 195f6802..7dcc051f 100644 Binary files a/cookbook/locale/rn/LC_MESSAGES/django.mo and b/cookbook/locale/rn/LC_MESSAGES/django.mo differ diff --git a/cookbook/locale/rn/LC_MESSAGES/django.po b/cookbook/locale/rn/LC_MESSAGES/django.po index 2cf23b6f..2ac21231 100644 --- a/cookbook/locale/rn/LC_MESSAGES/django.po +++ b/cookbook/locale/rn/LC_MESSAGES/django.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-08-12 15:09+0200\n" +"POT-Creation-Date: 2021-09-13 22:40+0200\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -18,49 +18,48 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=INTEGER; plural=EXPRESSION;\n" -#: .\cookbook\filters.py:23 .\cookbook\templates\base.html:98 -#: .\cookbook\templates\forms\edit_internal_recipe.html:269 +#: .\cookbook\filters.py:23 .\cookbook\templates\base.html:125 #: .\cookbook\templates\forms\ingredients.html:34 #: .\cookbook\templates\space.html:43 .\cookbook\templates\stats.html:28 -#: .\cookbook\templates\url_import.html:270 .\cookbook\views\lists.py:67 +#: .\cookbook\templates\url_import.html:270 msgid "Ingredients" msgstr "" -#: .\cookbook\forms.py:49 +#: .\cookbook\forms.py:50 msgid "" "Color of the top navigation bar. Not all colors work with all themes, just " "try them out!" msgstr "" -#: .\cookbook\forms.py:51 +#: .\cookbook\forms.py:52 msgid "Default Unit to be used when inserting a new ingredient into a recipe." msgstr "" -#: .\cookbook\forms.py:53 +#: .\cookbook\forms.py:54 msgid "" "Enables support for fractions in ingredient amounts (e.g. convert decimals " "to fractions automatically)" msgstr "" -#: .\cookbook\forms.py:56 +#: .\cookbook\forms.py:57 msgid "" "Users with whom newly created meal plan/shopping list entries should be " "shared by default." msgstr "" -#: .\cookbook\forms.py:58 +#: .\cookbook\forms.py:59 msgid "Show recently viewed recipes on search page." msgstr "" -#: .\cookbook\forms.py:59 +#: .\cookbook\forms.py:60 msgid "Number of decimals to round ingredients." msgstr "" -#: .\cookbook\forms.py:60 +#: .\cookbook\forms.py:61 msgid "If you want to be able to create and see comments underneath recipes." msgstr "" -#: .\cookbook\forms.py:62 +#: .\cookbook\forms.py:63 msgid "" "Setting to 0 will disable auto sync. When viewing a shopping list the list " "is updated every set seconds to sync changes someone else might have made. " @@ -68,187 +67,253 @@ msgid "" "mobile data. If lower than instance limit it is reset when saving." msgstr "" -#: .\cookbook\forms.py:65 +#: .\cookbook\forms.py:66 msgid "Makes the navbar stick to the top of the page." msgstr "" -#: .\cookbook\forms.py:81 +#: .\cookbook\forms.py:82 msgid "" "Both fields are optional. If none are given the username will be displayed " "instead" msgstr "" -#: .\cookbook\forms.py:102 .\cookbook\forms.py:331 -#: .\cookbook\templates\forms\edit_internal_recipe.html:49 +#: .\cookbook\forms.py:103 .\cookbook\forms.py:334 #: .\cookbook\templates\url_import.html:154 msgid "Name" msgstr "" -#: .\cookbook\forms.py:103 .\cookbook\forms.py:332 -#: .\cookbook\templates\base.html:108 .\cookbook\templates\base.html:169 -#: .\cookbook\templates\forms\edit_internal_recipe.html:85 +#: .\cookbook\forms.py:104 .\cookbook\forms.py:335 #: .\cookbook\templates\space.html:39 .\cookbook\templates\stats.html:24 #: .\cookbook\templates\url_import.html:188 -#: .\cookbook\templates\url_import.html:573 +#: .\cookbook\templates\url_import.html:573 .\cookbook\views\lists.py:112 msgid "Keywords" msgstr "" -#: .\cookbook\forms.py:104 +#: .\cookbook\forms.py:105 msgid "Preparation time in minutes" msgstr "" -#: .\cookbook\forms.py:105 +#: .\cookbook\forms.py:106 msgid "Waiting time (cooking/baking) in minutes" msgstr "" -#: .\cookbook\forms.py:106 .\cookbook\forms.py:333 +#: .\cookbook\forms.py:107 .\cookbook\forms.py:336 msgid "Path" msgstr "" -#: .\cookbook\forms.py:107 +#: .\cookbook\forms.py:108 msgid "Storage UID" msgstr "" -#: .\cookbook\forms.py:133 +#: .\cookbook\forms.py:134 msgid "Default" msgstr "" -#: .\cookbook\forms.py:144 .\cookbook\templates\url_import.html:90 +#: .\cookbook\forms.py:145 .\cookbook\templates\url_import.html:90 msgid "" "To prevent duplicates recipes with the same name as existing ones are " "ignored. Check this box to import everything." msgstr "" -#: .\cookbook\forms.py:164 +#: .\cookbook\forms.py:165 msgid "New Unit" msgstr "" -#: .\cookbook\forms.py:165 +#: .\cookbook\forms.py:166 msgid "New unit that other gets replaced by." msgstr "" -#: .\cookbook\forms.py:170 +#: .\cookbook\forms.py:171 msgid "Old Unit" msgstr "" -#: .\cookbook\forms.py:171 +#: .\cookbook\forms.py:172 msgid "Unit that should be replaced." msgstr "" -#: .\cookbook\forms.py:187 +#: .\cookbook\forms.py:189 msgid "New Food" msgstr "" -#: .\cookbook\forms.py:188 +#: .\cookbook\forms.py:190 msgid "New food that other gets replaced by." msgstr "" -#: .\cookbook\forms.py:193 +#: .\cookbook\forms.py:195 msgid "Old Food" msgstr "" -#: .\cookbook\forms.py:194 +#: .\cookbook\forms.py:196 msgid "Food that should be replaced." msgstr "" -#: .\cookbook\forms.py:212 +#: .\cookbook\forms.py:214 msgid "Add your comment: " msgstr "" -#: .\cookbook\forms.py:253 +#: .\cookbook\forms.py:256 msgid "Leave empty for dropbox and enter app password for nextcloud." msgstr "" -#: .\cookbook\forms.py:260 +#: .\cookbook\forms.py:263 msgid "Leave empty for nextcloud and enter api token for dropbox." msgstr "" -#: .\cookbook\forms.py:269 +#: .\cookbook\forms.py:272 msgid "" "Leave empty for dropbox and enter only base url for nextcloud (/remote." "php/webdav/ is added automatically)" msgstr "" -#: .\cookbook\forms.py:307 +#: .\cookbook\forms.py:310 msgid "Search String" msgstr "" -#: .\cookbook\forms.py:334 +#: .\cookbook\forms.py:337 msgid "File ID" msgstr "" -#: .\cookbook\forms.py:370 +#: .\cookbook\forms.py:373 msgid "You must provide at least a recipe or a title." msgstr "" -#: .\cookbook\forms.py:383 +#: .\cookbook\forms.py:386 msgid "You can list default users to share recipes with in the settings." msgstr "" -#: .\cookbook\forms.py:384 -#: .\cookbook\templates\forms\edit_internal_recipe.html:427 +#: .\cookbook\forms.py:387 msgid "" "You can use markdown to format this field. See the docs here" msgstr "" -#: .\cookbook\forms.py:409 +#: .\cookbook\forms.py:412 msgid "Maximum number of users for this space reached." msgstr "" -#: .\cookbook\forms.py:415 +#: .\cookbook\forms.py:418 msgid "Email address already taken!" msgstr "" -#: .\cookbook\forms.py:423 +#: .\cookbook\forms.py:426 msgid "" "An email address is not required but if present the invite link will be send " "to the user." msgstr "" -#: .\cookbook\forms.py:438 +#: .\cookbook\forms.py:441 msgid "Name already taken." msgstr "" -#: .\cookbook\forms.py:449 +#: .\cookbook\forms.py:452 msgid "Accept Terms and Privacy" msgstr "" +#: .\cookbook\forms.py:487 +msgid "" +"Select type method of search. Click here for " +"full desciption of choices." +msgstr "" + +#: .\cookbook\forms.py:488 +msgid "" +"Use fuzzy matching on units, keywords and ingredients when editing and " +"importing recipes." +msgstr "" + +#: .\cookbook\forms.py:489 +msgid "" +"Fields to search ignoring accents. Selecting this option can improve or " +"degrade search quality depending on language" +msgstr "" + +#: .\cookbook\forms.py:490 +msgid "" +"Fields to search for partial matches. (e.g. searching for 'Pie' will return " +"'pie' and 'piece' and 'soapie')" +msgstr "" + +#: .\cookbook\forms.py:491 +msgid "" +"Fields to search for beginning of word matches. (e.g. searching for 'sa' " +"will return 'salad' and 'sandwich')" +msgstr "" + +#: .\cookbook\forms.py:492 +msgid "" +"Fields to 'fuzzy' search. (e.g. searching for 'recpie' will find 'recipe'.) " +"Note: this option will conflict with 'web' and 'raw' methods of search." +msgstr "" + +#: .\cookbook\forms.py:493 +msgid "" +"Fields to full text search. Note: 'web', 'phrase', and 'raw' search methods " +"only function with fulltext fields." +msgstr "" + +#: .\cookbook\forms.py:497 +msgid "Search Method" +msgstr "" + +#: .\cookbook\forms.py:498 +msgid "Fuzzy Lookups" +msgstr "" + +#: .\cookbook\forms.py:499 +msgid "Ignore Accent" +msgstr "" + +#: .\cookbook\forms.py:500 +msgid "Partial Match" +msgstr "" + +#: .\cookbook\forms.py:501 +msgid "Starts Wtih" +msgstr "" + +#: .\cookbook\forms.py:502 +msgid "Fuzzy Search" +msgstr "" + +#: .\cookbook\forms.py:503 +msgid "Full Text" +msgstr "" + #: .\cookbook\helper\AllAuthCustomAdapter.py:36 msgid "" "In order to prevent spam, the requested email was not send. Please wait a " "few minutes and try again." msgstr "" -#: .\cookbook\helper\permission_helper.py:138 -#: .\cookbook\helper\permission_helper.py:161 .\cookbook\views\views.py:151 +#: .\cookbook\helper\permission_helper.py:136 +#: .\cookbook\helper\permission_helper.py:159 .\cookbook\views\views.py:150 msgid "You are not logged in and therefore cannot view this page!" msgstr "" -#: .\cookbook\helper\permission_helper.py:142 -#: .\cookbook\helper\permission_helper.py:148 -#: .\cookbook\helper\permission_helper.py:173 -#: .\cookbook\helper\permission_helper.py:218 -#: .\cookbook\helper\permission_helper.py:232 -#: .\cookbook\helper\permission_helper.py:243 -#: .\cookbook\helper\permission_helper.py:254 .\cookbook\views\data.py:40 -#: .\cookbook\views\views.py:162 .\cookbook\views\views.py:169 -#: .\cookbook\views\views.py:259 +#: .\cookbook\helper\permission_helper.py:140 +#: .\cookbook\helper\permission_helper.py:146 +#: .\cookbook\helper\permission_helper.py:171 +#: .\cookbook\helper\permission_helper.py:216 +#: .\cookbook\helper\permission_helper.py:230 +#: .\cookbook\helper\permission_helper.py:241 +#: .\cookbook\helper\permission_helper.py:252 .\cookbook\views\data.py:40 +#: .\cookbook\views\views.py:161 .\cookbook\views\views.py:168 +#: .\cookbook\views\views.py:245 msgid "You do not have the required permissions to view this page!" msgstr "" -#: .\cookbook\helper\permission_helper.py:166 -#: .\cookbook\helper\permission_helper.py:189 -#: .\cookbook\helper\permission_helper.py:204 +#: .\cookbook\helper\permission_helper.py:164 +#: .\cookbook\helper\permission_helper.py:187 +#: .\cookbook\helper\permission_helper.py:202 msgid "You cannot interact with this object as it is not owned by you!" msgstr "" -#: .\cookbook\helper\template_helper.py:60 -#: .\cookbook\helper\template_helper.py:62 +#: .\cookbook\helper\template_helper.py:61 +#: .\cookbook\helper\template_helper.py:63 msgid "Could not parse template code." msgstr "" -#: .\cookbook\integration\integration.py:104 +#: .\cookbook\integration\integration.py:119 #: .\cookbook\templates\import.html:14 .\cookbook\templates\import.html:20 #: .\cookbook\templates\import_response.html:7 #: .\cookbook\templates\test.html:14 .\cookbook\templates\test.html:20 @@ -257,27 +322,27 @@ msgstr "" #: .\cookbook\templates\url_import.html:123 #: .\cookbook\templates\url_import.html:317 #: .\cookbook\templates\url_import.html:604 .\cookbook\views\delete.py:60 -#: .\cookbook\views\edit.py:199 +#: .\cookbook\views\edit.py:197 msgid "Import" msgstr "" -#: .\cookbook\integration\integration.py:185 +#: .\cookbook\integration\integration.py:200 msgid "" "Importer expected a .zip file. Did you choose the correct importer type for " "your data ?" msgstr "" -#: .\cookbook\integration\integration.py:188 +#: .\cookbook\integration\integration.py:203 msgid "" "An unexpected error occurred during the import. Please make sure you have " "uploaded a valid file." msgstr "" -#: .\cookbook\integration\integration.py:192 +#: .\cookbook\integration\integration.py:208 msgid "The following recipes were ignored because they already existed:" msgstr "" -#: .\cookbook\integration\integration.py:196 +#: .\cookbook\integration\integration.py:212 #, python-format msgid "Imported %s recipes." msgstr "" @@ -295,7 +360,6 @@ msgid "Source" msgstr "" #: .\cookbook\integration\safron.py:23 -#: .\cookbook\templates\forms\edit_internal_recipe.html:79 #: .\cookbook\templates\include\log_cooking.html:16 #: .\cookbook\templates\url_import.html:224 #: .\cookbook\templates\url_import.html:455 @@ -307,7 +371,6 @@ msgid "Waiting time" msgstr "" #: .\cookbook\integration\safron.py:27 -#: .\cookbook\templates\forms\edit_internal_recipe.html:73 msgid "Preparation Time" msgstr "" @@ -321,6 +384,22 @@ msgstr "" msgid "Section" msgstr "" +#: .\cookbook\management\commands\rebuildindex.py:14 +msgid "Rebuilds full text search index on Recipe" +msgstr "" + +#: .\cookbook\management\commands\rebuildindex.py:18 +msgid "Only Postgress databases use full text search, no index to rebuild" +msgstr "" + +#: .\cookbook\management\commands\rebuildindex.py:29 +msgid "Recipe index rebuild complete." +msgstr "" + +#: .\cookbook\management\commands\rebuildindex.py:31 +msgid "Recipe index rebuild failed." +msgstr "" + #: .\cookbook\migrations\0047_auto_20200602_1133.py:14 msgid "Breakfast" msgstr "" @@ -337,76 +416,89 @@ msgstr "" msgid "Other" msgstr "" -#: .\cookbook\models.py:72 +#: .\cookbook\models.py:144 msgid "" "Maximum file storage for space in MB. 0 for unlimited, -1 to disable file " "upload." msgstr "" -#: .\cookbook\models.py:123 .\cookbook\templates\search.html:7 +#: .\cookbook\models.py:196 .\cookbook\templates\search.html:7 #: .\cookbook\templates\shopping_list.html:52 msgid "Search" msgstr "" -#: .\cookbook\models.py:124 .\cookbook\templates\base.html:92 +#: .\cookbook\models.py:197 .\cookbook\templates\base.html:82 #: .\cookbook\templates\meal_plan.html:5 .\cookbook\views\delete.py:152 -#: .\cookbook\views\edit.py:233 .\cookbook\views\new.py:201 +#: .\cookbook\views\edit.py:231 .\cookbook\views\new.py:200 msgid "Meal-Plan" msgstr "" -#: .\cookbook\models.py:125 .\cookbook\templates\base.html:89 +#: .\cookbook\models.py:198 .\cookbook\templates\base.html:90 msgid "Books" msgstr "" -#: .\cookbook\models.py:133 +#: .\cookbook\models.py:206 msgid "Small" msgstr "" -#: .\cookbook\models.py:133 +#: .\cookbook\models.py:206 msgid "Large" msgstr "" -#: .\cookbook\models.py:133 .\cookbook\templates\generic\new_template.html:6 +#: .\cookbook\models.py:206 .\cookbook\templates\generic\new_template.html:6 #: .\cookbook\templates\generic\new_template.html:14 #: .\cookbook\templates\meal_plan.html:323 msgid "New" msgstr "" -#: .\cookbook\models.py:338 -#: .\cookbook\templates\forms\edit_internal_recipe.html:202 +#: .\cookbook\models.py:389 +msgid " is part of a recipe step and cannot be deleted" +msgstr "" + +#: .\cookbook\models.py:429 msgid "Text" msgstr "" -#: .\cookbook\models.py:338 -#: .\cookbook\templates\forms\edit_internal_recipe.html:203 +#: .\cookbook\models.py:429 msgid "Time" msgstr "" -#: .\cookbook\models.py:338 -#: .\cookbook\templates\forms\edit_internal_recipe.html:204 -#: .\cookbook\templates\forms\edit_internal_recipe.html:219 +#: .\cookbook\models.py:429 msgid "File" msgstr "" -#: .\cookbook\models.py:338 -#: .\cookbook\templates\forms\edit_internal_recipe.html:205 -#: .\cookbook\templates\forms\edit_internal_recipe.html:241 +#: .\cookbook\models.py:429 #: .\cookbook\templates\include\recipe_open_modal.html:7 #: .\cookbook\templates\meal_plan.html:247 .\cookbook\views\delete.py:28 -#: .\cookbook\views\edit.py:273 .\cookbook\views\new.py:52 +#: .\cookbook\views\edit.py:271 .\cookbook\views\new.py:52 msgid "Recipe" msgstr "" -#: .\cookbook\serializer.py:109 +#: .\cookbook\models.py:836 .\cookbook\templates\search_info.html:28 +msgid "Simple" +msgstr "" + +#: .\cookbook\models.py:837 .\cookbook\templates\search_info.html:33 +msgid "Phrase" +msgstr "" + +#: .\cookbook\models.py:838 .\cookbook\templates\search_info.html:38 +msgid "Web" +msgstr "" + +#: .\cookbook\models.py:839 .\cookbook\templates\search_info.html:47 +msgid "Raw" +msgstr "" + +#: .\cookbook\serializer.py:112 msgid "File uploads are not enabled for this Space." msgstr "" -#: .\cookbook\serializer.py:117 +#: .\cookbook\serializer.py:125 msgid "You have reached your file upload limit." msgstr "" -#: .\cookbook\tables.py:35 .\cookbook\templates\books.html:36 -#: .\cookbook\templates\generic\edit_template.html:6 +#: .\cookbook\tables.py:35 .\cookbook\templates\generic\edit_template.html:6 #: .\cookbook\templates\generic\edit_template.html:14 #: .\cookbook\templates\meal_plan.html:281 #: .\cookbook\templates\recipes_table.html:82 @@ -415,11 +507,10 @@ msgstr "" msgid "Edit" msgstr "" -#: .\cookbook\tables.py:124 .\cookbook\tables.py:147 -#: .\cookbook\templates\books.html:38 +#: .\cookbook\tables.py:115 .\cookbook\tables.py:138 #: .\cookbook\templates\generic\delete_template.html:5 #: .\cookbook\templates\generic\delete_template.html:13 -#: .\cookbook\templates\generic\edit_template.html:27 +#: .\cookbook\templates\generic\edit_template.html:28 #: .\cookbook\templates\meal_plan.html:277 #: .\cookbook\templates\recipes_table.html:90 msgid "Delete" @@ -449,7 +540,7 @@ msgstr "" #: .\cookbook\templates\account\email.html:12 #: .\cookbook\templates\account\password_change.html:11 #: .\cookbook\templates\account\password_set.html:11 -#: .\cookbook\templates\base.html:154 .\cookbook\templates\settings.html:6 +#: .\cookbook\templates\base.html:204 .\cookbook\templates\settings.html:6 #: .\cookbook\templates\settings.html:17 #: .\cookbook\templates\socialaccount\connections.html:10 msgid "Settings" @@ -525,7 +616,7 @@ msgid "" msgstr "" #: .\cookbook\templates\account\email_confirm.html:22 -#: .\cookbook\templates\generic\delete_template.html:21 +#: .\cookbook\templates\generic\delete_template.html:22 msgid "Confirm" msgstr "" @@ -537,7 +628,7 @@ msgid "" "request." msgstr "" -#: .\cookbook\templates\account\login.html:8 .\cookbook\templates\base.html:189 +#: .\cookbook\templates\account\login.html:8 .\cookbook\templates\base.html:234 msgid "Login" msgstr "" @@ -590,7 +681,7 @@ msgstr "" #: .\cookbook\templates\account\password_change.html:12 #: .\cookbook\templates\account\password_set.html:12 -#: .\cookbook\templates\settings.html:52 +#: .\cookbook\templates\settings.html:64 msgid "Password" msgstr "" @@ -672,101 +763,86 @@ msgstr "" msgid "We are sorry, but the sign up is currently closed." msgstr "" -#: .\cookbook\templates\api_info.html:5 .\cookbook\templates\base.html:179 +#: .\cookbook\templates\api_info.html:5 .\cookbook\templates\base.html:222 #: .\cookbook\templates\rest_framework\api.html:11 msgid "API Documentation" msgstr "" -#: .\cookbook\templates\base.html:85 -msgid "Utensils" -msgstr "" - -#: .\cookbook\templates\base.html:95 +#: .\cookbook\templates\base.html:86 msgid "Shopping" msgstr "" -#: .\cookbook\templates\base.html:101 +#: .\cookbook\templates\base.html:113 +msgid "Keyword" +msgstr "" + +#: .\cookbook\templates\base.html:137 +#: .\cookbook\templates\forms\ingredients.html:24 +#: .\cookbook\templates\space.html:41 .\cookbook\templates\stats.html:26 +#: .\cookbook\views\lists.py:146 +msgid "Units" +msgstr "" + +#: .\cookbook\templates\base.html:151 #: .\cookbook\templates\shopping_list.html:230 #: .\cookbook\templates\supermarket.html:7 msgid "Supermarket" msgstr "" -#: .\cookbook\templates\base.html:112 .\cookbook\views\delete.py:84 -#: .\cookbook\views\edit.py:102 .\cookbook\views\lists.py:26 -#: .\cookbook\views\new.py:78 -msgid "Keyword" -msgstr "" - -#: .\cookbook\templates\base.html:114 +#: .\cookbook\templates\base.html:163 msgid "Batch Edit" msgstr "" -#: .\cookbook\templates\base.html:119 -msgid "Storage Data" -msgstr "" - -#: .\cookbook\templates\base.html:123 -msgid "Storage Backends" -msgstr "" - -#: .\cookbook\templates\base.html:125 -msgid "Configure Sync" -msgstr "" - -#: .\cookbook\templates\base.html:127 -msgid "Discovered Recipes" -msgstr "" - -#: .\cookbook\templates\base.html:129 -msgid "Discovery Log" -msgstr "" - -#: .\cookbook\templates\base.html:131 .\cookbook\templates\stats.html:10 -msgid "Statistics" -msgstr "" - -#: .\cookbook\templates\base.html:133 -msgid "Units & Ingredients" -msgstr "" - -#: .\cookbook\templates\base.html:135 .\cookbook\templates\index.html:47 -msgid "Import Recipe" -msgstr "" - -#: .\cookbook\templates\base.html:156 .\cookbook\templates\history.html:6 +#: .\cookbook\templates\base.html:175 .\cookbook\templates\history.html:6 #: .\cookbook\templates\history.html:14 msgid "History" msgstr "" -#: .\cookbook\templates\base.html:159 .\cookbook\templates\space.html:7 +#: .\cookbook\templates\base.html:191 .\cookbook\templates\index.html:47 +msgid "Import Recipe" +msgstr "" + +#: .\cookbook\templates\base.html:193 +#: .\cookbook\templates\shopping_list.html:188 +#: .\cookbook\templates\shopping_list.html:210 +msgid "Create" +msgstr "" + +#: .\cookbook\templates\base.html:207 .\cookbook\templates\space.html:7 #: .\cookbook\templates\space.html:19 msgid "Space Settings" msgstr "" -#: .\cookbook\templates\base.html:163 .\cookbook\templates\system.html:13 +#: .\cookbook\templates\base.html:212 .\cookbook\templates\system.html:13 msgid "System" msgstr "" -#: .\cookbook\templates\base.html:165 .\cookbook\templates\base.html:171 +#: .\cookbook\templates\base.html:214 msgid "Admin" msgstr "" -#: .\cookbook\templates\base.html:175 +#: .\cookbook\templates\base.html:218 msgid "Markdown Guide" msgstr "" -#: .\cookbook\templates\base.html:177 +#: .\cookbook\templates\base.html:220 msgid "GitHub" msgstr "" -#: .\cookbook\templates\base.html:181 +#: .\cookbook\templates\base.html:224 msgid "API Browser" msgstr "" -#: .\cookbook\templates\base.html:184 +#: .\cookbook\templates\base.html:227 msgid "Log out" msgstr "" +#: .\cookbook\templates\base.html:229 +#: .\cookbook\templates\generic\list_template.html:14 +#: .\cookbook\templates\space.html:58 .\cookbook\templates\stats.html:43 +msgid "External Recipes" +msgstr "" + #: .\cookbook\templates\batch\edit.html:6 msgid "Batch edit Category" msgstr "" @@ -779,7 +855,7 @@ msgstr "" msgid "Add the specified keywords to all recipes containing a word" msgstr "" -#: .\cookbook\templates\batch\monitor.html:6 .\cookbook\views\edit.py:85 +#: .\cookbook\templates\batch\monitor.html:6 .\cookbook\views\edit.py:83 msgid "Sync" msgstr "" @@ -797,10 +873,22 @@ msgstr "" msgid "The path must be in the following format" msgstr "" -#: .\cookbook\templates\batch\monitor.html:27 +#: .\cookbook\templates\batch\monitor.html:21 +msgid "Manage External Storage" +msgstr "" + +#: .\cookbook\templates\batch\monitor.html:28 msgid "Sync Now!" msgstr "" +#: .\cookbook\templates\batch\monitor.html:29 +msgid "Show Recipes" +msgstr "" + +#: .\cookbook\templates\batch\monitor.html:30 +msgid "Show Log" +msgstr "" + #: .\cookbook\templates\batch\waiting.html:4 #: .\cookbook\templates\batch\waiting.html:10 msgid "Importing Recipes" @@ -812,32 +900,10 @@ msgid "" "please wait." msgstr "" -#: .\cookbook\templates\books.html:5 .\cookbook\templates\books.html:11 +#: .\cookbook\templates\books.html:7 msgid "Recipe Books" msgstr "" -#: .\cookbook\templates\books.html:15 -msgid "New Book" -msgstr "" - -#: .\cookbook\templates\books.html:27 .\cookbook\templates\recipe_view.html:26 -msgid "by" -msgstr "" - -#: .\cookbook\templates\books.html:34 -msgid "Toggle Recipes" -msgstr "" - -#: .\cookbook\templates\books.html:54 -#: .\cookbook\templates\meal_plan_entry.html:48 -#: .\cookbook\templates\recipes_table.html:64 -msgid "Last cooked" -msgstr "" - -#: .\cookbook\templates\books.html:71 -msgid "There are no recipes in this book yet." -msgstr "" - #: .\cookbook\templates\export.html:6 .\cookbook\templates\test2.html:6 msgid "Export Recipes" msgstr "" @@ -858,211 +924,21 @@ msgid "Import new Recipe" msgstr "" #: .\cookbook\templates\forms\edit_import_recipe.html:14 -#: .\cookbook\templates\forms\edit_internal_recipe.html:439 -#: .\cookbook\templates\forms\edit_internal_recipe.html:471 #: .\cookbook\templates\generic\edit_template.html:23 #: .\cookbook\templates\generic\new_template.html:23 #: .\cookbook\templates\include\log_cooking.html:28 #: .\cookbook\templates\meal_plan.html:325 -#: .\cookbook\templates\settings.html:46 .\cookbook\templates\settings.html:87 -#: .\cookbook\templates\settings.html:105 +#: .\cookbook\templates\settings.html:58 .\cookbook\templates\settings.html:99 +#: .\cookbook\templates\settings.html:117 +#: .\cookbook\templates\settings.html:162 #: .\cookbook\templates\shopping_list.html:353 msgid "Save" msgstr "" #: .\cookbook\templates\forms\edit_internal_recipe.html:7 -#: .\cookbook\templates\forms\edit_internal_recipe.html:34 msgid "Edit Recipe" msgstr "" -#: .\cookbook\templates\forms\edit_internal_recipe.html:56 -#: .\cookbook\templates\url_import.html:171 -msgid "Description" -msgstr "" - -#: .\cookbook\templates\forms\edit_internal_recipe.html:76 -msgid "Waiting Time" -msgstr "" - -#: .\cookbook\templates\forms\edit_internal_recipe.html:82 -msgid "Servings Text" -msgstr "" - -#: .\cookbook\templates\forms\edit_internal_recipe.html:93 -msgid "Select Keywords" -msgstr "" - -#: .\cookbook\templates\forms\edit_internal_recipe.html:94 -#: .\cookbook\templates\url_import.html:583 -msgid "Add Keyword" -msgstr "" - -#: .\cookbook\templates\forms\edit_internal_recipe.html:112 -msgid "Nutrition" -msgstr "" - -#: .\cookbook\templates\forms\edit_internal_recipe.html:116 -#: .\cookbook\templates\forms\edit_internal_recipe.html:166 -msgid "Delete Step" -msgstr "" - -#: .\cookbook\templates\forms\edit_internal_recipe.html:120 -msgid "Calories" -msgstr "" - -#: .\cookbook\templates\forms\edit_internal_recipe.html:123 -msgid "Carbohydrates" -msgstr "" - -#: .\cookbook\templates\forms\edit_internal_recipe.html:126 -msgid "Fats" -msgstr "" - -#: .\cookbook\templates\forms\edit_internal_recipe.html:128 -msgid "Proteins" -msgstr "" - -#: .\cookbook\templates\forms\edit_internal_recipe.html:150 -#: .\cookbook\templates\forms\edit_internal_recipe.html:504 -msgid "Step" -msgstr "" - -#: .\cookbook\templates\forms\edit_internal_recipe.html:171 -msgid "Show as header" -msgstr "" - -#: .\cookbook\templates\forms\edit_internal_recipe.html:177 -msgid "Hide as header" -msgstr "" - -#: .\cookbook\templates\forms\edit_internal_recipe.html:182 -msgid "Move Up" -msgstr "" - -#: .\cookbook\templates\forms\edit_internal_recipe.html:187 -msgid "Move Down" -msgstr "" - -#: .\cookbook\templates\forms\edit_internal_recipe.html:196 -msgid "Step Name" -msgstr "" - -#: .\cookbook\templates\forms\edit_internal_recipe.html:200 -msgid "Step Type" -msgstr "" - -#: .\cookbook\templates\forms\edit_internal_recipe.html:213 -msgid "Step time in Minutes" -msgstr "" - -#: .\cookbook\templates\forms\edit_internal_recipe.html:229 -msgid "Select File" -msgstr "" - -#: .\cookbook\templates\forms\edit_internal_recipe.html:230 -#: .\cookbook\templates\forms\edit_internal_recipe.html:252 -#: .\cookbook\templates\forms\edit_internal_recipe.html:313 -#: .\cookbook\templates\forms\edit_internal_recipe.html:337 -#: .\cookbook\templates\shopping_list.html:189 -#: .\cookbook\templates\shopping_list.html:211 -#: .\cookbook\templates\shopping_list.html:241 -#: .\cookbook\templates\shopping_list.html:265 -#: .\cookbook\templates\url_import.html:495 -#: .\cookbook\templates\url_import.html:527 -msgid "Select" -msgstr "" - -#: .\cookbook\templates\forms\edit_internal_recipe.html:251 -msgid "Select Recipe" -msgstr "" - -#: .\cookbook\templates\forms\edit_internal_recipe.html:311 -#: .\cookbook\templates\shopping_list.html:187 -msgid "Select Unit" -msgstr "" - -#: .\cookbook\templates\forms\edit_internal_recipe.html:312 -#: .\cookbook\templates\forms\edit_internal_recipe.html:336 -#: .\cookbook\templates\shopping_list.html:188 -#: .\cookbook\templates\shopping_list.html:210 -msgid "Create" -msgstr "" - -#: .\cookbook\templates\forms\edit_internal_recipe.html:335 -#: .\cookbook\templates\shopping_list.html:209 -msgid "Select Food" -msgstr "" - -#: .\cookbook\templates\forms\edit_internal_recipe.html:352 -#: .\cookbook\templates\meal_plan.html:256 -#: .\cookbook\templates\url_import.html:542 -msgid "Note" -msgstr "" - -#: .\cookbook\templates\forms\edit_internal_recipe.html:369 -msgid "Delete Ingredient" -msgstr "" - -#: .\cookbook\templates\forms\edit_internal_recipe.html:375 -msgid "Make Header" -msgstr "" - -#: .\cookbook\templates\forms\edit_internal_recipe.html:381 -msgid "Make Ingredient" -msgstr "" - -#: .\cookbook\templates\forms\edit_internal_recipe.html:387 -msgid "Disable Amount" -msgstr "" - -#: .\cookbook\templates\forms\edit_internal_recipe.html:393 -msgid "Enable Amount" -msgstr "" - -#: .\cookbook\templates\forms\edit_internal_recipe.html:398 -msgid "Copy Template Reference" -msgstr "" - -#: .\cookbook\templates\forms\edit_internal_recipe.html:424 -#: .\cookbook\templates\url_import.html:297 -#: .\cookbook\templates\url_import.html:567 -msgid "Instructions" -msgstr "" - -#: .\cookbook\templates\forms\edit_internal_recipe.html:437 -#: .\cookbook\templates\forms\edit_internal_recipe.html:468 -msgid "Save & View" -msgstr "" - -#: .\cookbook\templates\forms\edit_internal_recipe.html:441 -#: .\cookbook\templates\forms\edit_internal_recipe.html:474 -msgid "Add Step" -msgstr "" - -#: .\cookbook\templates\forms\edit_internal_recipe.html:444 -#: .\cookbook\templates\forms\edit_internal_recipe.html:478 -msgid "Add Nutrition" -msgstr "" - -#: .\cookbook\templates\forms\edit_internal_recipe.html:446 -#: .\cookbook\templates\forms\edit_internal_recipe.html:480 -msgid "Remove Nutrition" -msgstr "" - -#: .\cookbook\templates\forms\edit_internal_recipe.html:448 -#: .\cookbook\templates\forms\edit_internal_recipe.html:483 -msgid "View Recipe" -msgstr "" - -#: .\cookbook\templates\forms\edit_internal_recipe.html:450 -#: .\cookbook\templates\forms\edit_internal_recipe.html:485 -msgid "Delete Recipe" -msgstr "" - -#: .\cookbook\templates\forms\edit_internal_recipe.html:491 -msgid "Steps" -msgstr "" - #: .\cookbook\templates\forms\ingredients.html:15 msgid "Edit Ingredients" msgstr "" @@ -1078,11 +954,6 @@ msgid "" " " msgstr "" -#: .\cookbook\templates\forms\ingredients.html:24 -#: .\cookbook\templates\space.html:41 .\cookbook\templates\stats.html:26 -msgid "Units" -msgstr "" - #: .\cookbook\templates\forms\ingredients.html:26 msgid "Are you sure that you want to merge these two units?" msgstr "" @@ -1096,29 +967,33 @@ msgstr "" msgid "Are you sure that you want to merge these two ingredients?" msgstr "" -#: .\cookbook\templates\generic\delete_template.html:18 +#: .\cookbook\templates\generic\delete_template.html:19 #, python-format msgid "Are you sure you want to delete the %(title)s: %(object)s " msgstr "" -#: .\cookbook\templates\generic\edit_template.html:30 +#: .\cookbook\templates\generic\delete_template.html:23 +msgid "Cancel" +msgstr "" + +#: .\cookbook\templates\generic\edit_template.html:32 msgid "View" msgstr "" -#: .\cookbook\templates\generic\edit_template.html:34 +#: .\cookbook\templates\generic\edit_template.html:36 msgid "Delete original file" msgstr "" #: .\cookbook\templates\generic\list_template.html:6 -#: .\cookbook\templates\generic\list_template.html:12 +#: .\cookbook\templates\generic\list_template.html:21 msgid "List" msgstr "" -#: .\cookbook\templates\generic\list_template.html:25 +#: .\cookbook\templates\generic\list_template.html:34 msgid "Filter" msgstr "" -#: .\cookbook\templates\generic\list_template.html:30 +#: .\cookbook\templates\generic\list_template.html:39 msgid "Import all" msgstr "" @@ -1427,6 +1302,11 @@ msgstr "" msgid "Week iCal export" msgstr "" +#: .\cookbook\templates\meal_plan.html:256 +#: .\cookbook\templates\url_import.html:542 +msgid "Note" +msgstr "" + #: .\cookbook\templates\meal_plan.html:264 #: .\cookbook\templates\meal_plan_entry.html:18 msgid "Created by" @@ -1490,6 +1370,11 @@ msgstr "" msgid "Meal Plan View" msgstr "" +#: .\cookbook\templates\meal_plan_entry.html:48 +#: .\cookbook\templates\recipes_table.html:64 +msgid "Last cooked" +msgstr "" + #: .\cookbook\templates\meal_plan_entry.html:50 msgid "Never cooked before." msgstr "" @@ -1586,8 +1471,12 @@ msgstr "" msgid "Comments" msgstr "" +#: .\cookbook\templates\recipe_view.html:26 +msgid "by" +msgstr "" + #: .\cookbook\templates\recipe_view.html:44 .\cookbook\views\delete.py:118 -#: .\cookbook\views\edit.py:179 +#: .\cookbook\views\edit.py:177 msgid "Comment" msgstr "" @@ -1619,60 +1508,221 @@ msgstr "" msgid "Recipe Home" msgstr "" -#: .\cookbook\templates\settings.html:25 +#: .\cookbook\templates\search_info.html:5 +#: .\cookbook\templates\search_info.html:9 +#: .\cookbook\templates\settings.html:157 +msgid "Search Settings" +msgstr "" + +#: .\cookbook\templates\search_info.html:10 +msgid "" +"\n" +" Creating the best search experience is complicated and weighs " +"heavily on your personal configuration. \n" +" Changing any of the search settings can have significant impact on " +"the speed and quality of the results.\n" +" Search Methods, Trigrams and Full Text Search configurations are " +"only available if you are using Postgres for your database.\n" +" " +msgstr "" + +#: .\cookbook\templates\search_info.html:19 +msgid "Search Methods" +msgstr "" + +#: .\cookbook\templates\search_info.html:23 +msgid "" +" \n" +" Full text searches attempt to normalize the words provided to " +"match common variants. For example: 'forked', 'forking', 'forks' will all " +"normalize to 'fork'.\n" +" There are several methods available, described below, that will " +"control how the search behavior should react when multiple words are " +"searched.\n" +" Full technical details on how these operate can be viewed on Postgresql's website.\n" +" " +msgstr "" + +#: .\cookbook\templates\search_info.html:29 +msgid "" +" \n" +" Simple searches ignore punctuation and common words such as " +"'the', 'a', 'and'. And will treat seperate words as required.\n" +" Searching for 'apple or flour' will return any recipe that " +"includes both 'apple' and 'flour' anywhere in the fields that have been " +"selected for a full text search.\n" +" " +msgstr "" + +#: .\cookbook\templates\search_info.html:34 +msgid "" +" \n" +" Phrase searches ignore punctuation, but will search for all of " +"the words in the exact order provided.\n" +" Searching for 'apple or flour' will only return a recipe that " +"includes the exact phrase 'apple or flour' in any of the fields that have " +"been selected for a full text search.\n" +" " +msgstr "" + +#: .\cookbook\templates\search_info.html:39 +msgid "" +" \n" +" Web searches simulate functionality found on many web search " +"sites supporting special syntax.\n" +" Placing quotes around several words will convert those words " +"into a phrase.\n" +" 'or' is recongized as searching for the word (or phrase) " +"immediately before 'or' OR the word (or phrase) directly after.\n" +" '-' is recognized as searching for recipes that do not include " +"the word (or phrase) that comes immediately after. \n" +" For example searching for 'apple pie' or cherry -butter will " +"return any recipe that includes the phrase 'apple pie' or the word " +"'cherry' \n" +" in any field included in the full text search but exclude any " +"recipe that has the word 'butter' in any field included.\n" +" " +msgstr "" + +#: .\cookbook\templates\search_info.html:48 +msgid "" +" \n" +" Raw search is similar to Web except will take puncuation " +"operators such as '|', '&' and '()'\n" +" " +msgstr "" + +#: .\cookbook\templates\search_info.html:59 +msgid "" +" \n" +" Another approach to searching that also requires Postgresql is " +"fuzzy search or trigram similarity. A trigram is a group of three " +"consecutive characters.\n" +" For example searching for 'apple' will create x trigrams 'app', " +"'ppl', 'ple' and will create a score of how closely words match the " +"generated trigrams.\n" +" One benefit of searching trigams is that a search for 'sandwich' " +"will find mispelled words such as 'sandwhich' that would be missed by other " +"methods.\n" +" " +msgstr "" + +#: .\cookbook\templates\search_info.html:69 +msgid "Search Fields" +msgstr "" + +#: .\cookbook\templates\search_info.html:73 +msgid "" +" \n" +" Unaccent is a special case in that it enables searching a field " +"'unaccented' for each search style attempting to ignore accented values. \n" +" For example when you enable unaccent for 'Name' any search " +"(starts with, contains, trigram) will attempt the search ignoring accented " +"characters.\n" +" \n" +" For the other options, you can enable search on any or all " +"fields and they will be combined together with an assumed 'OR'.\n" +" For example enabling 'Name' for Starts With, 'Name' and " +"'Description' for Partial Match and 'Ingredients' and 'Keywords' for Full " +"Search\n" +" and searching for 'apple' will generate a search that will " +"return recipes that have:\n" +" - A recipe name that starts with 'apple'\n" +" - OR a recipe name that contains 'apple'\n" +" - OR a recipe description that contains 'apple'\n" +" - OR a recipe that will have a full text search match ('apple' " +"or 'apples') in ingredients\n" +" - OR a recipe that will have a full text search match in " +"Keywords\n" +"\n" +" Combining too many fields in too many types of search can have a " +"negative impact on performance, create duplicate results or return " +"unexpected results.\n" +" For example, enabling fuzzy search or partial matches will " +"interfere with web search methods. \n" +" Searching for 'apple -pie' with fuzzy search and full text " +"search will return the recipe Apple Pie. Though it is not included in the " +"full text results, it does match the trigram results.\n" +" " +msgstr "" + +#: .\cookbook\templates\search_info.html:95 +msgid "Search Index" +msgstr "" + +#: .\cookbook\templates\search_info.html:99 +msgid "" +" \n" +" Trigram search and Full Text Search both rely on database " +"indexes to perform effectively. \n" +" You can rebuild the indexes on all fields in the Admin page for " +"Recipes and selecting all recipes and running 'rebuild index for selected " +"recipes'\n" +" You can also rebuild indexes at the command line by executing " +"the management command 'python manage.py rebuildindex'\n" +" " +msgstr "" + +#: .\cookbook\templates\settings.html:27 msgid "Account" msgstr "" -#: .\cookbook\templates\settings.html:29 +#: .\cookbook\templates\settings.html:33 msgid "Preferences" msgstr "" -#: .\cookbook\templates\settings.html:33 +#: .\cookbook\templates\settings.html:39 msgid "API-Settings" msgstr "" -#: .\cookbook\templates\settings.html:41 +#: .\cookbook\templates\settings.html:45 +msgid "Search-Settings" +msgstr "" + +#: .\cookbook\templates\settings.html:53 msgid "Name Settings" msgstr "" -#: .\cookbook\templates\settings.html:49 +#: .\cookbook\templates\settings.html:61 msgid "Account Settings" msgstr "" -#: .\cookbook\templates\settings.html:51 +#: .\cookbook\templates\settings.html:63 msgid "Emails" msgstr "" -#: .\cookbook\templates\settings.html:54 +#: .\cookbook\templates\settings.html:66 #: .\cookbook\templates\socialaccount\connections.html:11 msgid "Social" msgstr "" -#: .\cookbook\templates\settings.html:66 +#: .\cookbook\templates\settings.html:78 msgid "Language" msgstr "" -#: .\cookbook\templates\settings.html:96 +#: .\cookbook\templates\settings.html:108 msgid "Style" msgstr "" -#: .\cookbook\templates\settings.html:116 +#: .\cookbook\templates\settings.html:128 msgid "API Token" msgstr "" -#: .\cookbook\templates\settings.html:117 +#: .\cookbook\templates\settings.html:129 msgid "" "You can use both basic authentication and token based authentication to " "access the REST API." msgstr "" -#: .\cookbook\templates\settings.html:134 +#: .\cookbook\templates\settings.html:146 msgid "" "Use the token as an Authorization header prefixed by the word token as shown " "in the following examples:" msgstr "" -#: .\cookbook\templates\settings.html:136 +#: .\cookbook\templates\settings.html:148 msgid "or" msgstr "" @@ -1713,6 +1763,23 @@ msgstr "" msgid "Amount" msgstr "" +#: .\cookbook\templates\shopping_list.html:187 +msgid "Select Unit" +msgstr "" + +#: .\cookbook\templates\shopping_list.html:189 +#: .\cookbook\templates\shopping_list.html:211 +#: .\cookbook\templates\shopping_list.html:241 +#: .\cookbook\templates\shopping_list.html:265 +#: .\cookbook\templates\url_import.html:495 +#: .\cookbook\templates\url_import.html:527 +msgid "Select" +msgstr "" + +#: .\cookbook\templates\shopping_list.html:209 +msgid "Select Food" +msgstr "" + #: .\cookbook\templates\shopping_list.html:240 msgid "Select Supermarket" msgstr "" @@ -1810,10 +1877,6 @@ msgstr "" msgid "Recipes without Keywords" msgstr "" -#: .\cookbook\templates\space.html:58 .\cookbook\templates\stats.html:43 -msgid "External Recipes" -msgstr "" - #: .\cookbook\templates\space.html:60 .\cookbook\templates\stats.html:45 msgid "Internal Recipes" msgstr "" @@ -1863,7 +1926,7 @@ msgid "There are no members in your space yet!" msgstr "" #: .\cookbook\templates\space.html:130 .\cookbook\templates\system.html:21 -#: .\cookbook\views\lists.py:115 +#: .\cookbook\views\lists.py:100 msgid "Invite Links" msgstr "" @@ -1871,6 +1934,10 @@ msgstr "" msgid "Stats" msgstr "" +#: .\cookbook\templates\stats.html:10 +msgid "Statistics" +msgstr "" + #: .\cookbook\templates\system.html:22 msgid "Show Links" msgstr "" @@ -2017,6 +2084,10 @@ msgstr "" msgid "Text dragged here will be appended to the name." msgstr "" +#: .\cookbook\templates\url_import.html:171 +msgid "Description" +msgstr "" + #: .\cookbook\templates\url_import.html:175 msgid "Text dragged here will be appended to the description." msgstr "" @@ -2041,6 +2112,11 @@ msgstr "" msgid "Ingredients dragged here will be appended to current list." msgstr "" +#: .\cookbook\templates\url_import.html:297 +#: .\cookbook\templates\url_import.html:567 +msgid "Instructions" +msgstr "" + #: .\cookbook\templates\url_import.html:302 msgid "" "Recipe instructions dragged here will be appended to current instructions." @@ -2090,6 +2166,10 @@ msgstr "" msgid "Select one" msgstr "" +#: .\cookbook\templates\url_import.html:583 +msgid "Add Keyword" +msgstr "" + #: .\cookbook\templates\url_import.html:596 msgid "All Keywords" msgstr "" @@ -2125,45 +2205,102 @@ msgstr "" msgid "Recipe Markup Specification" msgstr "" -#: .\cookbook\views\api.py:79 +#: .\cookbook\views\api.py:82 .\cookbook\views\api.py:131 msgid "Parameter updated_at incorrectly formatted" msgstr "" -#: .\cookbook\views\api.py:580 .\cookbook\views\views.py:303 +#: .\cookbook\views\api.py:151 +#, python-brace-format +msgid "No {self.basename} with id {pk} exists" +msgstr "" + +#: .\cookbook\views\api.py:155 .\cookbook\views\edit.py:300 +#: .\cookbook\views\edit.py:316 +msgid "Cannot merge with the same object!" +msgstr "" + +#: .\cookbook\views\api.py:162 +#, python-brace-format +msgid "No {self.basename} with id {target} exists" +msgstr "" + +#: .\cookbook\views\api.py:167 +msgid "Cannot merge with child object!" +msgstr "" + +#: .\cookbook\views\api.py:195 +#, python-brace-format +msgid "{source.name} was merged successfully with {target.name}" +msgstr "" + +#: .\cookbook\views\api.py:199 +#, python-brace-format +msgid "An error occurred attempting to merge {source.name} with {target.name}" +msgstr "" + +#: .\cookbook\views\api.py:239 +#, python-brace-format +msgid "No {self.basename} with id {child} exists" +msgstr "" + +#: .\cookbook\views\api.py:248 +#, python-brace-format +msgid "{child.name} was moved successfully to the root." +msgstr "" + +#: .\cookbook\views\api.py:251 .\cookbook\views\api.py:269 +msgid "An error occurred attempting to move " +msgstr "" + +#: .\cookbook\views\api.py:254 +msgid "Cannot move an object to itself!" +msgstr "" + +#: .\cookbook\views\api.py:260 +#, python-brace-format +msgid "No {self.basename} with id {parent} exists" +msgstr "" + +#: .\cookbook\views\api.py:266 +#, python-brace-format +msgid "{child.name} was moved successfully to parent {parent.name}" +msgstr "" + +#: .\cookbook\views\api.py:704 .\cookbook\views\views.py:289 msgid "This feature is not available in the demo version!" msgstr "" -#: .\cookbook\views\api.py:603 +#: .\cookbook\views\api.py:727 msgid "Sync successful!" msgstr "" -#: .\cookbook\views\api.py:608 +#: .\cookbook\views\api.py:732 msgid "Error synchronizing with Storage" msgstr "" -#: .\cookbook\views\api.py:686 +#: .\cookbook\views\api.py:810 msgid "Nothing to do." msgstr "" -#: .\cookbook\views\api.py:701 +#: .\cookbook\views\api.py:825 msgid "The requested site provided malformed data and cannot be read." msgstr "" -#: .\cookbook\views\api.py:708 +#: .\cookbook\views\api.py:832 msgid "The requested page could not be found." msgstr "" -#: .\cookbook\views\api.py:717 +#: .\cookbook\views\api.py:841 msgid "" "The requested site does not provide any recognized data format to import the " "recipe from." msgstr "" -#: .\cookbook\views\api.py:731 +#: .\cookbook\views\api.py:855 msgid "No useable data could be found." msgstr "" -#: .\cookbook\views\api.py:747 +#: .\cookbook\views\api.py:871 msgid "I couldn't find anything to do." msgstr "" @@ -2190,8 +2327,8 @@ msgstr[1] "" msgid "Monitor" msgstr "" -#: .\cookbook\views\delete.py:96 .\cookbook\views\lists.py:102 -#: .\cookbook\views\new.py:98 +#: .\cookbook\views\delete.py:96 .\cookbook\views\lists.py:86 +#: .\cookbook\views\new.py:97 msgid "Storage Backend" msgstr "" @@ -2200,8 +2337,8 @@ msgid "" "Could not delete this storage backend as it is used in at least one monitor." msgstr "" -#: .\cookbook\views\delete.py:129 .\cookbook\views\edit.py:213 -#: .\cookbook\views\new.py:156 +#: .\cookbook\views\delete.py:129 .\cookbook\views\edit.py:211 +#: .\cookbook\views\new.py:155 msgid "Recipe Book" msgstr "" @@ -2209,47 +2346,39 @@ msgstr "" msgid "Bookmarks" msgstr "" -#: .\cookbook\views\delete.py:163 .\cookbook\views\new.py:252 +#: .\cookbook\views\delete.py:163 .\cookbook\views\new.py:251 msgid "Invite Link" msgstr "" -#: .\cookbook\views\edit.py:119 -msgid "Food" -msgstr "" - -#: .\cookbook\views\edit.py:128 +#: .\cookbook\views\edit.py:126 msgid "You cannot edit this storage!" msgstr "" -#: .\cookbook\views\edit.py:148 +#: .\cookbook\views\edit.py:146 msgid "Storage saved!" msgstr "" -#: .\cookbook\views\edit.py:154 +#: .\cookbook\views\edit.py:152 msgid "There was an error updating this storage backend!" msgstr "" -#: .\cookbook\views\edit.py:165 +#: .\cookbook\views\edit.py:163 msgid "Storage" msgstr "" -#: .\cookbook\views\edit.py:261 +#: .\cookbook\views\edit.py:259 msgid "Changes saved!" msgstr "" -#: .\cookbook\views\edit.py:265 +#: .\cookbook\views\edit.py:263 msgid "Error saving changes!" msgstr "" -#: .\cookbook\views\edit.py:299 +#: .\cookbook\views\edit.py:298 msgid "Units merged!" msgstr "" -#: .\cookbook\views\edit.py:301 .\cookbook\views\edit.py:317 -msgid "Cannot merge with the same object!" -msgstr "" - -#: .\cookbook\views\edit.py:315 +#: .\cookbook\views\edit.py:314 msgid "Foods merged!" msgstr "" @@ -2261,126 +2390,152 @@ msgstr "" msgid "Exporting is not implemented for this provider" msgstr "" -#: .\cookbook\views\lists.py:40 +#: .\cookbook\views\lists.py:26 msgid "Import Log" msgstr "" -#: .\cookbook\views\lists.py:53 +#: .\cookbook\views\lists.py:39 msgid "Discovery" msgstr "" -#: .\cookbook\views\lists.py:85 +#: .\cookbook\views\lists.py:69 msgid "Shopping Lists" msgstr "" -#: .\cookbook\views\new.py:123 +#: .\cookbook\views\lists.py:129 +msgid "Foods" +msgstr "" + +#: .\cookbook\views\lists.py:163 +msgid "Supermarkets" +msgstr "" + +#: .\cookbook\views\lists.py:179 +msgid "Shopping Categories" +msgstr "" + +#: .\cookbook\views\new.py:122 msgid "Imported new recipe!" msgstr "" -#: .\cookbook\views\new.py:126 +#: .\cookbook\views\new.py:125 msgid "There was an error importing this recipe!" msgstr "" -#: .\cookbook\views\new.py:226 +#: .\cookbook\views\new.py:225 msgid "Hello" msgstr "" -#: .\cookbook\views\new.py:226 +#: .\cookbook\views\new.py:225 msgid "You have been invited by " msgstr "" -#: .\cookbook\views\new.py:227 +#: .\cookbook\views\new.py:226 msgid " to join their Tandoor Recipes space " msgstr "" -#: .\cookbook\views\new.py:228 +#: .\cookbook\views\new.py:227 msgid "Click the following link to activate your account: " msgstr "" -#: .\cookbook\views\new.py:229 +#: .\cookbook\views\new.py:228 msgid "" "If the link does not work use the following code to manually join the space: " msgstr "" -#: .\cookbook\views\new.py:230 +#: .\cookbook\views\new.py:229 msgid "The invitation is valid until " msgstr "" -#: .\cookbook\views\new.py:231 +#: .\cookbook\views\new.py:230 msgid "" "Tandoor Recipes is an Open Source recipe manager. Check it out on GitHub " msgstr "" -#: .\cookbook\views\new.py:234 +#: .\cookbook\views\new.py:233 msgid "Tandoor Recipes Invite" msgstr "" -#: .\cookbook\views\new.py:241 +#: .\cookbook\views\new.py:240 msgid "Invite link successfully send to user." msgstr "" -#: .\cookbook\views\new.py:244 +#: .\cookbook\views\new.py:243 msgid "" "You have send to many emails, please share the link manually or wait a few " "hours." msgstr "" -#: .\cookbook\views\new.py:246 +#: .\cookbook\views\new.py:245 msgid "Email to user could not be send, please share link manually." msgstr "" -#: .\cookbook\views\views.py:129 +#: .\cookbook\views\views.py:128 msgid "" "You have successfully created your own recipe space. Start by adding some " "recipes or invite other people to join you." msgstr "" -#: .\cookbook\views\views.py:177 +#: .\cookbook\views\views.py:176 msgid "You do not have the required permissions to perform this action!" msgstr "" -#: .\cookbook\views\views.py:188 +#: .\cookbook\views\views.py:187 msgid "Comment saved!" msgstr "" -#: .\cookbook\views\views.py:395 +#: .\cookbook\views\views.py:351 +msgid "You must select at least one field to search!" +msgstr "" + +#: .\cookbook\views\views.py:354 +msgid "" +"To use this search method you must select at least one full text search " +"field!" +msgstr "" + +#: .\cookbook\views\views.py:357 +msgid "Fuzzy search is not compatible with this search method!" +msgstr "" + +#: .\cookbook\views\views.py:437 msgid "" "The setup page can only be used to create the first user! If you have " "forgotten your superuser credentials please consult the django documentation " "on how to reset passwords." msgstr "" -#: .\cookbook\views\views.py:402 +#: .\cookbook\views\views.py:444 msgid "Passwords dont match!" msgstr "" -#: .\cookbook\views\views.py:418 +#: .\cookbook\views\views.py:460 msgid "User has been created, please login!" msgstr "" -#: .\cookbook\views\views.py:434 +#: .\cookbook\views\views.py:476 msgid "Malformed Invite Link supplied!" msgstr "" -#: .\cookbook\views\views.py:441 +#: .\cookbook\views\views.py:483 msgid "You are already member of a space and therefore cannot join this one." msgstr "" -#: .\cookbook\views\views.py:452 +#: .\cookbook\views\views.py:494 msgid "Successfully joined space." msgstr "" -#: .\cookbook\views\views.py:458 +#: .\cookbook\views\views.py:500 msgid "Invite Link not valid or already used!" msgstr "" -#: .\cookbook\views\views.py:522 +#: .\cookbook\views\views.py:564 msgid "" "Reporting share links is not enabled for this instance. Please notify the " "page administrator to report problems." msgstr "" -#: .\cookbook\views\views.py:528 +#: .\cookbook\views\views.py:570 msgid "" "Recipe sharing link has been disabled! For additional information please " "contact the page administrator." diff --git a/cookbook/locale/tr/LC_MESSAGES/django.mo b/cookbook/locale/tr/LC_MESSAGES/django.mo index 94cbafa5..fcd9108d 100644 Binary files a/cookbook/locale/tr/LC_MESSAGES/django.mo and b/cookbook/locale/tr/LC_MESSAGES/django.mo differ diff --git a/cookbook/locale/tr/LC_MESSAGES/django.po b/cookbook/locale/tr/LC_MESSAGES/django.po index 217b3d88..9528169c 100644 --- a/cookbook/locale/tr/LC_MESSAGES/django.po +++ b/cookbook/locale/tr/LC_MESSAGES/django.po @@ -11,7 +11,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-08-12 15:09+0200\n" +"POT-Creation-Date: 2021-09-13 22:40+0200\n" "PO-Revision-Date: 2020-06-02 19:28+0000\n" "Last-Translator: Emre S, 2020\n" "Language-Team: Turkish (https://www.transifex.com/django-recipes/" @@ -22,15 +22,14 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n > 1);\n" -#: .\cookbook\filters.py:23 .\cookbook\templates\base.html:98 -#: .\cookbook\templates\forms\edit_internal_recipe.html:269 +#: .\cookbook\filters.py:23 .\cookbook\templates\base.html:125 #: .\cookbook\templates\forms\ingredients.html:34 #: .\cookbook\templates\space.html:43 .\cookbook\templates\stats.html:28 -#: .\cookbook\templates\url_import.html:270 .\cookbook\views\lists.py:67 +#: .\cookbook\templates\url_import.html:270 msgid "Ingredients" msgstr "Malzemeler" -#: .\cookbook\forms.py:49 +#: .\cookbook\forms.py:50 msgid "" "Color of the top navigation bar. Not all colors work with all themes, just " "try them out!" @@ -38,35 +37,35 @@ msgstr "" "Gezinti çubuğunun rengi. Bütün renkeler bütün temalarla çalışmayabilir, önce " "deneyin!" -#: .\cookbook\forms.py:51 +#: .\cookbook\forms.py:52 msgid "Default Unit to be used when inserting a new ingredient into a recipe." msgstr "Bir tarife yeni bir malzeme eklenirken kullanılacak Varsayılan Birim." -#: .\cookbook\forms.py:53 +#: .\cookbook\forms.py:54 msgid "" "Enables support for fractions in ingredient amounts (e.g. convert decimals " "to fractions automatically)" msgstr "" -#: .\cookbook\forms.py:56 +#: .\cookbook\forms.py:57 msgid "" "Users with whom newly created meal plan/shopping list entries should be " "shared by default." msgstr "" -#: .\cookbook\forms.py:58 +#: .\cookbook\forms.py:59 msgid "Show recently viewed recipes on search page." msgstr "Son görüntülenen tarifleri arama sayfasında göster." -#: .\cookbook\forms.py:59 +#: .\cookbook\forms.py:60 msgid "Number of decimals to round ingredients." msgstr "Malzeme birimleri için yuvarlanma basamağı." -#: .\cookbook\forms.py:60 +#: .\cookbook\forms.py:61 msgid "If you want to be able to create and see comments underneath recipes." msgstr "Tariflerin altında yorumlar oluşturup görebilmek istiyorsanız." -#: .\cookbook\forms.py:62 +#: .\cookbook\forms.py:63 msgid "" "Setting to 0 will disable auto sync. When viewing a shopping list the list " "is updated every set seconds to sync changes someone else might have made. " @@ -79,187 +78,253 @@ msgstr "" "fazla kişiyle alışveriş yaparken kullanışlıdır, ancak biraz mobil veri " "kullanabilir. Örnek sınırından düşükse, kaydederken sıfırlanır." -#: .\cookbook\forms.py:65 +#: .\cookbook\forms.py:66 msgid "Makes the navbar stick to the top of the page." msgstr "" -#: .\cookbook\forms.py:81 +#: .\cookbook\forms.py:82 msgid "" "Both fields are optional. If none are given the username will be displayed " "instead" msgstr "" -#: .\cookbook\forms.py:102 .\cookbook\forms.py:331 -#: .\cookbook\templates\forms\edit_internal_recipe.html:49 +#: .\cookbook\forms.py:103 .\cookbook\forms.py:334 #: .\cookbook\templates\url_import.html:154 msgid "Name" msgstr "İsim" -#: .\cookbook\forms.py:103 .\cookbook\forms.py:332 -#: .\cookbook\templates\base.html:108 .\cookbook\templates\base.html:169 -#: .\cookbook\templates\forms\edit_internal_recipe.html:85 +#: .\cookbook\forms.py:104 .\cookbook\forms.py:335 #: .\cookbook\templates\space.html:39 .\cookbook\templates\stats.html:24 #: .\cookbook\templates\url_import.html:188 -#: .\cookbook\templates\url_import.html:573 +#: .\cookbook\templates\url_import.html:573 .\cookbook\views\lists.py:112 msgid "Keywords" msgstr "" -#: .\cookbook\forms.py:104 +#: .\cookbook\forms.py:105 msgid "Preparation time in minutes" msgstr "" -#: .\cookbook\forms.py:105 +#: .\cookbook\forms.py:106 msgid "Waiting time (cooking/baking) in minutes" msgstr "" -#: .\cookbook\forms.py:106 .\cookbook\forms.py:333 +#: .\cookbook\forms.py:107 .\cookbook\forms.py:336 msgid "Path" msgstr "" -#: .\cookbook\forms.py:107 +#: .\cookbook\forms.py:108 msgid "Storage UID" msgstr "" -#: .\cookbook\forms.py:133 +#: .\cookbook\forms.py:134 msgid "Default" msgstr "" -#: .\cookbook\forms.py:144 .\cookbook\templates\url_import.html:90 +#: .\cookbook\forms.py:145 .\cookbook\templates\url_import.html:90 msgid "" "To prevent duplicates recipes with the same name as existing ones are " "ignored. Check this box to import everything." msgstr "" -#: .\cookbook\forms.py:164 +#: .\cookbook\forms.py:165 msgid "New Unit" msgstr "" -#: .\cookbook\forms.py:165 +#: .\cookbook\forms.py:166 msgid "New unit that other gets replaced by." msgstr "" -#: .\cookbook\forms.py:170 +#: .\cookbook\forms.py:171 msgid "Old Unit" msgstr "" -#: .\cookbook\forms.py:171 +#: .\cookbook\forms.py:172 msgid "Unit that should be replaced." msgstr "" -#: .\cookbook\forms.py:187 +#: .\cookbook\forms.py:189 msgid "New Food" msgstr "" -#: .\cookbook\forms.py:188 +#: .\cookbook\forms.py:190 msgid "New food that other gets replaced by." msgstr "" -#: .\cookbook\forms.py:193 +#: .\cookbook\forms.py:195 msgid "Old Food" msgstr "" -#: .\cookbook\forms.py:194 +#: .\cookbook\forms.py:196 msgid "Food that should be replaced." msgstr "" -#: .\cookbook\forms.py:212 +#: .\cookbook\forms.py:214 msgid "Add your comment: " msgstr "" -#: .\cookbook\forms.py:253 +#: .\cookbook\forms.py:256 msgid "Leave empty for dropbox and enter app password for nextcloud." msgstr "" -#: .\cookbook\forms.py:260 +#: .\cookbook\forms.py:263 msgid "Leave empty for nextcloud and enter api token for dropbox." msgstr "" -#: .\cookbook\forms.py:269 +#: .\cookbook\forms.py:272 msgid "" "Leave empty for dropbox and enter only base url for nextcloud (/remote." "php/webdav/ is added automatically)" msgstr "" -#: .\cookbook\forms.py:307 +#: .\cookbook\forms.py:310 msgid "Search String" msgstr "" -#: .\cookbook\forms.py:334 +#: .\cookbook\forms.py:337 msgid "File ID" msgstr "" -#: .\cookbook\forms.py:370 +#: .\cookbook\forms.py:373 msgid "You must provide at least a recipe or a title." msgstr "" -#: .\cookbook\forms.py:383 +#: .\cookbook\forms.py:386 msgid "You can list default users to share recipes with in the settings." msgstr "" -#: .\cookbook\forms.py:384 -#: .\cookbook\templates\forms\edit_internal_recipe.html:427 +#: .\cookbook\forms.py:387 msgid "" "You can use markdown to format this field. See the docs here" msgstr "" -#: .\cookbook\forms.py:409 +#: .\cookbook\forms.py:412 msgid "Maximum number of users for this space reached." msgstr "" -#: .\cookbook\forms.py:415 +#: .\cookbook\forms.py:418 msgid "Email address already taken!" msgstr "" -#: .\cookbook\forms.py:423 +#: .\cookbook\forms.py:426 msgid "" "An email address is not required but if present the invite link will be send " "to the user." msgstr "" -#: .\cookbook\forms.py:438 +#: .\cookbook\forms.py:441 msgid "Name already taken." msgstr "" -#: .\cookbook\forms.py:449 +#: .\cookbook\forms.py:452 msgid "Accept Terms and Privacy" msgstr "" +#: .\cookbook\forms.py:487 +msgid "" +"Select type method of search. Click here for " +"full desciption of choices." +msgstr "" + +#: .\cookbook\forms.py:488 +msgid "" +"Use fuzzy matching on units, keywords and ingredients when editing and " +"importing recipes." +msgstr "" + +#: .\cookbook\forms.py:489 +msgid "" +"Fields to search ignoring accents. Selecting this option can improve or " +"degrade search quality depending on language" +msgstr "" + +#: .\cookbook\forms.py:490 +msgid "" +"Fields to search for partial matches. (e.g. searching for 'Pie' will return " +"'pie' and 'piece' and 'soapie')" +msgstr "" + +#: .\cookbook\forms.py:491 +msgid "" +"Fields to search for beginning of word matches. (e.g. searching for 'sa' " +"will return 'salad' and 'sandwich')" +msgstr "" + +#: .\cookbook\forms.py:492 +msgid "" +"Fields to 'fuzzy' search. (e.g. searching for 'recpie' will find 'recipe'.) " +"Note: this option will conflict with 'web' and 'raw' methods of search." +msgstr "" + +#: .\cookbook\forms.py:493 +msgid "" +"Fields to full text search. Note: 'web', 'phrase', and 'raw' search methods " +"only function with fulltext fields." +msgstr "" + +#: .\cookbook\forms.py:497 +msgid "Search Method" +msgstr "" + +#: .\cookbook\forms.py:498 +msgid "Fuzzy Lookups" +msgstr "" + +#: .\cookbook\forms.py:499 +msgid "Ignore Accent" +msgstr "" + +#: .\cookbook\forms.py:500 +msgid "Partial Match" +msgstr "" + +#: .\cookbook\forms.py:501 +msgid "Starts Wtih" +msgstr "" + +#: .\cookbook\forms.py:502 +msgid "Fuzzy Search" +msgstr "" + +#: .\cookbook\forms.py:503 +msgid "Full Text" +msgstr "" + #: .\cookbook\helper\AllAuthCustomAdapter.py:36 msgid "" "In order to prevent spam, the requested email was not send. Please wait a " "few minutes and try again." msgstr "" -#: .\cookbook\helper\permission_helper.py:138 -#: .\cookbook\helper\permission_helper.py:161 .\cookbook\views\views.py:151 +#: .\cookbook\helper\permission_helper.py:136 +#: .\cookbook\helper\permission_helper.py:159 .\cookbook\views\views.py:150 msgid "You are not logged in and therefore cannot view this page!" msgstr "" -#: .\cookbook\helper\permission_helper.py:142 -#: .\cookbook\helper\permission_helper.py:148 -#: .\cookbook\helper\permission_helper.py:173 -#: .\cookbook\helper\permission_helper.py:218 -#: .\cookbook\helper\permission_helper.py:232 -#: .\cookbook\helper\permission_helper.py:243 -#: .\cookbook\helper\permission_helper.py:254 .\cookbook\views\data.py:40 -#: .\cookbook\views\views.py:162 .\cookbook\views\views.py:169 -#: .\cookbook\views\views.py:259 +#: .\cookbook\helper\permission_helper.py:140 +#: .\cookbook\helper\permission_helper.py:146 +#: .\cookbook\helper\permission_helper.py:171 +#: .\cookbook\helper\permission_helper.py:216 +#: .\cookbook\helper\permission_helper.py:230 +#: .\cookbook\helper\permission_helper.py:241 +#: .\cookbook\helper\permission_helper.py:252 .\cookbook\views\data.py:40 +#: .\cookbook\views\views.py:161 .\cookbook\views\views.py:168 +#: .\cookbook\views\views.py:245 msgid "You do not have the required permissions to view this page!" msgstr "" -#: .\cookbook\helper\permission_helper.py:166 -#: .\cookbook\helper\permission_helper.py:189 -#: .\cookbook\helper\permission_helper.py:204 +#: .\cookbook\helper\permission_helper.py:164 +#: .\cookbook\helper\permission_helper.py:187 +#: .\cookbook\helper\permission_helper.py:202 msgid "You cannot interact with this object as it is not owned by you!" msgstr "" -#: .\cookbook\helper\template_helper.py:60 -#: .\cookbook\helper\template_helper.py:62 +#: .\cookbook\helper\template_helper.py:61 +#: .\cookbook\helper\template_helper.py:63 msgid "Could not parse template code." msgstr "" -#: .\cookbook\integration\integration.py:104 +#: .\cookbook\integration\integration.py:119 #: .\cookbook\templates\import.html:14 .\cookbook\templates\import.html:20 #: .\cookbook\templates\import_response.html:7 #: .\cookbook\templates\test.html:14 .\cookbook\templates\test.html:20 @@ -268,27 +333,27 @@ msgstr "" #: .\cookbook\templates\url_import.html:123 #: .\cookbook\templates\url_import.html:317 #: .\cookbook\templates\url_import.html:604 .\cookbook\views\delete.py:60 -#: .\cookbook\views\edit.py:199 +#: .\cookbook\views\edit.py:197 msgid "Import" msgstr "" -#: .\cookbook\integration\integration.py:185 +#: .\cookbook\integration\integration.py:200 msgid "" "Importer expected a .zip file. Did you choose the correct importer type for " "your data ?" msgstr "" -#: .\cookbook\integration\integration.py:188 +#: .\cookbook\integration\integration.py:203 msgid "" "An unexpected error occurred during the import. Please make sure you have " "uploaded a valid file." msgstr "" -#: .\cookbook\integration\integration.py:192 +#: .\cookbook\integration\integration.py:208 msgid "The following recipes were ignored because they already existed:" msgstr "" -#: .\cookbook\integration\integration.py:196 +#: .\cookbook\integration\integration.py:212 #, python-format msgid "Imported %s recipes." msgstr "" @@ -306,7 +371,6 @@ msgid "Source" msgstr "" #: .\cookbook\integration\safron.py:23 -#: .\cookbook\templates\forms\edit_internal_recipe.html:79 #: .\cookbook\templates\include\log_cooking.html:16 #: .\cookbook\templates\url_import.html:224 #: .\cookbook\templates\url_import.html:455 @@ -318,7 +382,6 @@ msgid "Waiting time" msgstr "" #: .\cookbook\integration\safron.py:27 -#: .\cookbook\templates\forms\edit_internal_recipe.html:73 msgid "Preparation Time" msgstr "" @@ -332,6 +395,22 @@ msgstr "" msgid "Section" msgstr "" +#: .\cookbook\management\commands\rebuildindex.py:14 +msgid "Rebuilds full text search index on Recipe" +msgstr "" + +#: .\cookbook\management\commands\rebuildindex.py:18 +msgid "Only Postgress databases use full text search, no index to rebuild" +msgstr "" + +#: .\cookbook\management\commands\rebuildindex.py:29 +msgid "Recipe index rebuild complete." +msgstr "" + +#: .\cookbook\management\commands\rebuildindex.py:31 +msgid "Recipe index rebuild failed." +msgstr "" + #: .\cookbook\migrations\0047_auto_20200602_1133.py:14 msgid "Breakfast" msgstr "" @@ -348,76 +427,89 @@ msgstr "" msgid "Other" msgstr "" -#: .\cookbook\models.py:72 +#: .\cookbook\models.py:144 msgid "" "Maximum file storage for space in MB. 0 for unlimited, -1 to disable file " "upload." msgstr "" -#: .\cookbook\models.py:123 .\cookbook\templates\search.html:7 +#: .\cookbook\models.py:196 .\cookbook\templates\search.html:7 #: .\cookbook\templates\shopping_list.html:52 msgid "Search" msgstr "" -#: .\cookbook\models.py:124 .\cookbook\templates\base.html:92 +#: .\cookbook\models.py:197 .\cookbook\templates\base.html:82 #: .\cookbook\templates\meal_plan.html:5 .\cookbook\views\delete.py:152 -#: .\cookbook\views\edit.py:233 .\cookbook\views\new.py:201 +#: .\cookbook\views\edit.py:231 .\cookbook\views\new.py:200 msgid "Meal-Plan" msgstr "" -#: .\cookbook\models.py:125 .\cookbook\templates\base.html:89 +#: .\cookbook\models.py:198 .\cookbook\templates\base.html:90 msgid "Books" msgstr "" -#: .\cookbook\models.py:133 +#: .\cookbook\models.py:206 msgid "Small" msgstr "" -#: .\cookbook\models.py:133 +#: .\cookbook\models.py:206 msgid "Large" msgstr "" -#: .\cookbook\models.py:133 .\cookbook\templates\generic\new_template.html:6 +#: .\cookbook\models.py:206 .\cookbook\templates\generic\new_template.html:6 #: .\cookbook\templates\generic\new_template.html:14 #: .\cookbook\templates\meal_plan.html:323 msgid "New" msgstr "" -#: .\cookbook\models.py:338 -#: .\cookbook\templates\forms\edit_internal_recipe.html:202 +#: .\cookbook\models.py:389 +msgid " is part of a recipe step and cannot be deleted" +msgstr "" + +#: .\cookbook\models.py:429 msgid "Text" msgstr "" -#: .\cookbook\models.py:338 -#: .\cookbook\templates\forms\edit_internal_recipe.html:203 +#: .\cookbook\models.py:429 msgid "Time" msgstr "" -#: .\cookbook\models.py:338 -#: .\cookbook\templates\forms\edit_internal_recipe.html:204 -#: .\cookbook\templates\forms\edit_internal_recipe.html:219 +#: .\cookbook\models.py:429 msgid "File" msgstr "" -#: .\cookbook\models.py:338 -#: .\cookbook\templates\forms\edit_internal_recipe.html:205 -#: .\cookbook\templates\forms\edit_internal_recipe.html:241 +#: .\cookbook\models.py:429 #: .\cookbook\templates\include\recipe_open_modal.html:7 #: .\cookbook\templates\meal_plan.html:247 .\cookbook\views\delete.py:28 -#: .\cookbook\views\edit.py:273 .\cookbook\views\new.py:52 +#: .\cookbook\views\edit.py:271 .\cookbook\views\new.py:52 msgid "Recipe" msgstr "" -#: .\cookbook\serializer.py:109 +#: .\cookbook\models.py:836 .\cookbook\templates\search_info.html:28 +msgid "Simple" +msgstr "" + +#: .\cookbook\models.py:837 .\cookbook\templates\search_info.html:33 +msgid "Phrase" +msgstr "" + +#: .\cookbook\models.py:838 .\cookbook\templates\search_info.html:38 +msgid "Web" +msgstr "" + +#: .\cookbook\models.py:839 .\cookbook\templates\search_info.html:47 +msgid "Raw" +msgstr "" + +#: .\cookbook\serializer.py:112 msgid "File uploads are not enabled for this Space." msgstr "" -#: .\cookbook\serializer.py:117 +#: .\cookbook\serializer.py:125 msgid "You have reached your file upload limit." msgstr "" -#: .\cookbook\tables.py:35 .\cookbook\templates\books.html:36 -#: .\cookbook\templates\generic\edit_template.html:6 +#: .\cookbook\tables.py:35 .\cookbook\templates\generic\edit_template.html:6 #: .\cookbook\templates\generic\edit_template.html:14 #: .\cookbook\templates\meal_plan.html:281 #: .\cookbook\templates\recipes_table.html:82 @@ -426,11 +518,10 @@ msgstr "" msgid "Edit" msgstr "" -#: .\cookbook\tables.py:124 .\cookbook\tables.py:147 -#: .\cookbook\templates\books.html:38 +#: .\cookbook\tables.py:115 .\cookbook\tables.py:138 #: .\cookbook\templates\generic\delete_template.html:5 #: .\cookbook\templates\generic\delete_template.html:13 -#: .\cookbook\templates\generic\edit_template.html:27 +#: .\cookbook\templates\generic\edit_template.html:28 #: .\cookbook\templates\meal_plan.html:277 #: .\cookbook\templates\recipes_table.html:90 msgid "Delete" @@ -460,7 +551,7 @@ msgstr "" #: .\cookbook\templates\account\email.html:12 #: .\cookbook\templates\account\password_change.html:11 #: .\cookbook\templates\account\password_set.html:11 -#: .\cookbook\templates\base.html:154 .\cookbook\templates\settings.html:6 +#: .\cookbook\templates\base.html:204 .\cookbook\templates\settings.html:6 #: .\cookbook\templates\settings.html:17 #: .\cookbook\templates\socialaccount\connections.html:10 msgid "Settings" @@ -536,7 +627,7 @@ msgid "" msgstr "" #: .\cookbook\templates\account\email_confirm.html:22 -#: .\cookbook\templates\generic\delete_template.html:21 +#: .\cookbook\templates\generic\delete_template.html:22 msgid "Confirm" msgstr "" @@ -548,7 +639,7 @@ msgid "" "request." msgstr "" -#: .\cookbook\templates\account\login.html:8 .\cookbook\templates\base.html:189 +#: .\cookbook\templates\account\login.html:8 .\cookbook\templates\base.html:234 msgid "Login" msgstr "" @@ -601,7 +692,7 @@ msgstr "" #: .\cookbook\templates\account\password_change.html:12 #: .\cookbook\templates\account\password_set.html:12 -#: .\cookbook\templates\settings.html:52 +#: .\cookbook\templates\settings.html:64 msgid "Password" msgstr "" @@ -683,101 +774,86 @@ msgstr "" msgid "We are sorry, but the sign up is currently closed." msgstr "" -#: .\cookbook\templates\api_info.html:5 .\cookbook\templates\base.html:179 +#: .\cookbook\templates\api_info.html:5 .\cookbook\templates\base.html:222 #: .\cookbook\templates\rest_framework\api.html:11 msgid "API Documentation" msgstr "" -#: .\cookbook\templates\base.html:85 -msgid "Utensils" -msgstr "" - -#: .\cookbook\templates\base.html:95 +#: .\cookbook\templates\base.html:86 msgid "Shopping" msgstr "" -#: .\cookbook\templates\base.html:101 +#: .\cookbook\templates\base.html:113 +msgid "Keyword" +msgstr "" + +#: .\cookbook\templates\base.html:137 +#: .\cookbook\templates\forms\ingredients.html:24 +#: .\cookbook\templates\space.html:41 .\cookbook\templates\stats.html:26 +#: .\cookbook\views\lists.py:146 +msgid "Units" +msgstr "" + +#: .\cookbook\templates\base.html:151 #: .\cookbook\templates\shopping_list.html:230 #: .\cookbook\templates\supermarket.html:7 msgid "Supermarket" msgstr "" -#: .\cookbook\templates\base.html:112 .\cookbook\views\delete.py:84 -#: .\cookbook\views\edit.py:102 .\cookbook\views\lists.py:26 -#: .\cookbook\views\new.py:78 -msgid "Keyword" -msgstr "" - -#: .\cookbook\templates\base.html:114 +#: .\cookbook\templates\base.html:163 msgid "Batch Edit" msgstr "" -#: .\cookbook\templates\base.html:119 -msgid "Storage Data" -msgstr "" - -#: .\cookbook\templates\base.html:123 -msgid "Storage Backends" -msgstr "" - -#: .\cookbook\templates\base.html:125 -msgid "Configure Sync" -msgstr "" - -#: .\cookbook\templates\base.html:127 -msgid "Discovered Recipes" -msgstr "" - -#: .\cookbook\templates\base.html:129 -msgid "Discovery Log" -msgstr "" - -#: .\cookbook\templates\base.html:131 .\cookbook\templates\stats.html:10 -msgid "Statistics" -msgstr "" - -#: .\cookbook\templates\base.html:133 -msgid "Units & Ingredients" -msgstr "" - -#: .\cookbook\templates\base.html:135 .\cookbook\templates\index.html:47 -msgid "Import Recipe" -msgstr "" - -#: .\cookbook\templates\base.html:156 .\cookbook\templates\history.html:6 +#: .\cookbook\templates\base.html:175 .\cookbook\templates\history.html:6 #: .\cookbook\templates\history.html:14 msgid "History" msgstr "" -#: .\cookbook\templates\base.html:159 .\cookbook\templates\space.html:7 +#: .\cookbook\templates\base.html:191 .\cookbook\templates\index.html:47 +msgid "Import Recipe" +msgstr "" + +#: .\cookbook\templates\base.html:193 +#: .\cookbook\templates\shopping_list.html:188 +#: .\cookbook\templates\shopping_list.html:210 +msgid "Create" +msgstr "" + +#: .\cookbook\templates\base.html:207 .\cookbook\templates\space.html:7 #: .\cookbook\templates\space.html:19 msgid "Space Settings" msgstr "" -#: .\cookbook\templates\base.html:163 .\cookbook\templates\system.html:13 +#: .\cookbook\templates\base.html:212 .\cookbook\templates\system.html:13 msgid "System" msgstr "" -#: .\cookbook\templates\base.html:165 .\cookbook\templates\base.html:171 +#: .\cookbook\templates\base.html:214 msgid "Admin" msgstr "" -#: .\cookbook\templates\base.html:175 +#: .\cookbook\templates\base.html:218 msgid "Markdown Guide" msgstr "" -#: .\cookbook\templates\base.html:177 +#: .\cookbook\templates\base.html:220 msgid "GitHub" msgstr "" -#: .\cookbook\templates\base.html:181 +#: .\cookbook\templates\base.html:224 msgid "API Browser" msgstr "" -#: .\cookbook\templates\base.html:184 +#: .\cookbook\templates\base.html:227 msgid "Log out" msgstr "" +#: .\cookbook\templates\base.html:229 +#: .\cookbook\templates\generic\list_template.html:14 +#: .\cookbook\templates\space.html:58 .\cookbook\templates\stats.html:43 +msgid "External Recipes" +msgstr "" + #: .\cookbook\templates\batch\edit.html:6 msgid "Batch edit Category" msgstr "" @@ -790,7 +866,7 @@ msgstr "" msgid "Add the specified keywords to all recipes containing a word" msgstr "" -#: .\cookbook\templates\batch\monitor.html:6 .\cookbook\views\edit.py:85 +#: .\cookbook\templates\batch\monitor.html:6 .\cookbook\views\edit.py:83 msgid "Sync" msgstr "" @@ -808,10 +884,22 @@ msgstr "" msgid "The path must be in the following format" msgstr "" -#: .\cookbook\templates\batch\monitor.html:27 +#: .\cookbook\templates\batch\monitor.html:21 +msgid "Manage External Storage" +msgstr "" + +#: .\cookbook\templates\batch\monitor.html:28 msgid "Sync Now!" msgstr "" +#: .\cookbook\templates\batch\monitor.html:29 +msgid "Show Recipes" +msgstr "" + +#: .\cookbook\templates\batch\monitor.html:30 +msgid "Show Log" +msgstr "" + #: .\cookbook\templates\batch\waiting.html:4 #: .\cookbook\templates\batch\waiting.html:10 msgid "Importing Recipes" @@ -823,32 +911,10 @@ msgid "" "please wait." msgstr "" -#: .\cookbook\templates\books.html:5 .\cookbook\templates\books.html:11 +#: .\cookbook\templates\books.html:7 msgid "Recipe Books" msgstr "" -#: .\cookbook\templates\books.html:15 -msgid "New Book" -msgstr "" - -#: .\cookbook\templates\books.html:27 .\cookbook\templates\recipe_view.html:26 -msgid "by" -msgstr "" - -#: .\cookbook\templates\books.html:34 -msgid "Toggle Recipes" -msgstr "" - -#: .\cookbook\templates\books.html:54 -#: .\cookbook\templates\meal_plan_entry.html:48 -#: .\cookbook\templates\recipes_table.html:64 -msgid "Last cooked" -msgstr "" - -#: .\cookbook\templates\books.html:71 -msgid "There are no recipes in this book yet." -msgstr "" - #: .\cookbook\templates\export.html:6 .\cookbook\templates\test2.html:6 msgid "Export Recipes" msgstr "" @@ -869,211 +935,21 @@ msgid "Import new Recipe" msgstr "" #: .\cookbook\templates\forms\edit_import_recipe.html:14 -#: .\cookbook\templates\forms\edit_internal_recipe.html:439 -#: .\cookbook\templates\forms\edit_internal_recipe.html:471 #: .\cookbook\templates\generic\edit_template.html:23 #: .\cookbook\templates\generic\new_template.html:23 #: .\cookbook\templates\include\log_cooking.html:28 #: .\cookbook\templates\meal_plan.html:325 -#: .\cookbook\templates\settings.html:46 .\cookbook\templates\settings.html:87 -#: .\cookbook\templates\settings.html:105 +#: .\cookbook\templates\settings.html:58 .\cookbook\templates\settings.html:99 +#: .\cookbook\templates\settings.html:117 +#: .\cookbook\templates\settings.html:162 #: .\cookbook\templates\shopping_list.html:353 msgid "Save" msgstr "" #: .\cookbook\templates\forms\edit_internal_recipe.html:7 -#: .\cookbook\templates\forms\edit_internal_recipe.html:34 msgid "Edit Recipe" msgstr "" -#: .\cookbook\templates\forms\edit_internal_recipe.html:56 -#: .\cookbook\templates\url_import.html:171 -msgid "Description" -msgstr "" - -#: .\cookbook\templates\forms\edit_internal_recipe.html:76 -msgid "Waiting Time" -msgstr "" - -#: .\cookbook\templates\forms\edit_internal_recipe.html:82 -msgid "Servings Text" -msgstr "" - -#: .\cookbook\templates\forms\edit_internal_recipe.html:93 -msgid "Select Keywords" -msgstr "" - -#: .\cookbook\templates\forms\edit_internal_recipe.html:94 -#: .\cookbook\templates\url_import.html:583 -msgid "Add Keyword" -msgstr "" - -#: .\cookbook\templates\forms\edit_internal_recipe.html:112 -msgid "Nutrition" -msgstr "" - -#: .\cookbook\templates\forms\edit_internal_recipe.html:116 -#: .\cookbook\templates\forms\edit_internal_recipe.html:166 -msgid "Delete Step" -msgstr "" - -#: .\cookbook\templates\forms\edit_internal_recipe.html:120 -msgid "Calories" -msgstr "" - -#: .\cookbook\templates\forms\edit_internal_recipe.html:123 -msgid "Carbohydrates" -msgstr "" - -#: .\cookbook\templates\forms\edit_internal_recipe.html:126 -msgid "Fats" -msgstr "" - -#: .\cookbook\templates\forms\edit_internal_recipe.html:128 -msgid "Proteins" -msgstr "" - -#: .\cookbook\templates\forms\edit_internal_recipe.html:150 -#: .\cookbook\templates\forms\edit_internal_recipe.html:504 -msgid "Step" -msgstr "" - -#: .\cookbook\templates\forms\edit_internal_recipe.html:171 -msgid "Show as header" -msgstr "" - -#: .\cookbook\templates\forms\edit_internal_recipe.html:177 -msgid "Hide as header" -msgstr "" - -#: .\cookbook\templates\forms\edit_internal_recipe.html:182 -msgid "Move Up" -msgstr "" - -#: .\cookbook\templates\forms\edit_internal_recipe.html:187 -msgid "Move Down" -msgstr "" - -#: .\cookbook\templates\forms\edit_internal_recipe.html:196 -msgid "Step Name" -msgstr "" - -#: .\cookbook\templates\forms\edit_internal_recipe.html:200 -msgid "Step Type" -msgstr "" - -#: .\cookbook\templates\forms\edit_internal_recipe.html:213 -msgid "Step time in Minutes" -msgstr "" - -#: .\cookbook\templates\forms\edit_internal_recipe.html:229 -msgid "Select File" -msgstr "" - -#: .\cookbook\templates\forms\edit_internal_recipe.html:230 -#: .\cookbook\templates\forms\edit_internal_recipe.html:252 -#: .\cookbook\templates\forms\edit_internal_recipe.html:313 -#: .\cookbook\templates\forms\edit_internal_recipe.html:337 -#: .\cookbook\templates\shopping_list.html:189 -#: .\cookbook\templates\shopping_list.html:211 -#: .\cookbook\templates\shopping_list.html:241 -#: .\cookbook\templates\shopping_list.html:265 -#: .\cookbook\templates\url_import.html:495 -#: .\cookbook\templates\url_import.html:527 -msgid "Select" -msgstr "" - -#: .\cookbook\templates\forms\edit_internal_recipe.html:251 -msgid "Select Recipe" -msgstr "" - -#: .\cookbook\templates\forms\edit_internal_recipe.html:311 -#: .\cookbook\templates\shopping_list.html:187 -msgid "Select Unit" -msgstr "" - -#: .\cookbook\templates\forms\edit_internal_recipe.html:312 -#: .\cookbook\templates\forms\edit_internal_recipe.html:336 -#: .\cookbook\templates\shopping_list.html:188 -#: .\cookbook\templates\shopping_list.html:210 -msgid "Create" -msgstr "" - -#: .\cookbook\templates\forms\edit_internal_recipe.html:335 -#: .\cookbook\templates\shopping_list.html:209 -msgid "Select Food" -msgstr "" - -#: .\cookbook\templates\forms\edit_internal_recipe.html:352 -#: .\cookbook\templates\meal_plan.html:256 -#: .\cookbook\templates\url_import.html:542 -msgid "Note" -msgstr "" - -#: .\cookbook\templates\forms\edit_internal_recipe.html:369 -msgid "Delete Ingredient" -msgstr "" - -#: .\cookbook\templates\forms\edit_internal_recipe.html:375 -msgid "Make Header" -msgstr "" - -#: .\cookbook\templates\forms\edit_internal_recipe.html:381 -msgid "Make Ingredient" -msgstr "" - -#: .\cookbook\templates\forms\edit_internal_recipe.html:387 -msgid "Disable Amount" -msgstr "" - -#: .\cookbook\templates\forms\edit_internal_recipe.html:393 -msgid "Enable Amount" -msgstr "" - -#: .\cookbook\templates\forms\edit_internal_recipe.html:398 -msgid "Copy Template Reference" -msgstr "" - -#: .\cookbook\templates\forms\edit_internal_recipe.html:424 -#: .\cookbook\templates\url_import.html:297 -#: .\cookbook\templates\url_import.html:567 -msgid "Instructions" -msgstr "" - -#: .\cookbook\templates\forms\edit_internal_recipe.html:437 -#: .\cookbook\templates\forms\edit_internal_recipe.html:468 -msgid "Save & View" -msgstr "" - -#: .\cookbook\templates\forms\edit_internal_recipe.html:441 -#: .\cookbook\templates\forms\edit_internal_recipe.html:474 -msgid "Add Step" -msgstr "" - -#: .\cookbook\templates\forms\edit_internal_recipe.html:444 -#: .\cookbook\templates\forms\edit_internal_recipe.html:478 -msgid "Add Nutrition" -msgstr "" - -#: .\cookbook\templates\forms\edit_internal_recipe.html:446 -#: .\cookbook\templates\forms\edit_internal_recipe.html:480 -msgid "Remove Nutrition" -msgstr "" - -#: .\cookbook\templates\forms\edit_internal_recipe.html:448 -#: .\cookbook\templates\forms\edit_internal_recipe.html:483 -msgid "View Recipe" -msgstr "" - -#: .\cookbook\templates\forms\edit_internal_recipe.html:450 -#: .\cookbook\templates\forms\edit_internal_recipe.html:485 -msgid "Delete Recipe" -msgstr "" - -#: .\cookbook\templates\forms\edit_internal_recipe.html:491 -msgid "Steps" -msgstr "" - #: .\cookbook\templates\forms\ingredients.html:15 msgid "Edit Ingredients" msgstr "" @@ -1089,11 +965,6 @@ msgid "" " " msgstr "" -#: .\cookbook\templates\forms\ingredients.html:24 -#: .\cookbook\templates\space.html:41 .\cookbook\templates\stats.html:26 -msgid "Units" -msgstr "" - #: .\cookbook\templates\forms\ingredients.html:26 msgid "Are you sure that you want to merge these two units?" msgstr "" @@ -1107,29 +978,33 @@ msgstr "" msgid "Are you sure that you want to merge these two ingredients?" msgstr "" -#: .\cookbook\templates\generic\delete_template.html:18 +#: .\cookbook\templates\generic\delete_template.html:19 #, python-format msgid "Are you sure you want to delete the %(title)s: %(object)s " msgstr "" -#: .\cookbook\templates\generic\edit_template.html:30 +#: .\cookbook\templates\generic\delete_template.html:23 +msgid "Cancel" +msgstr "" + +#: .\cookbook\templates\generic\edit_template.html:32 msgid "View" msgstr "" -#: .\cookbook\templates\generic\edit_template.html:34 +#: .\cookbook\templates\generic\edit_template.html:36 msgid "Delete original file" msgstr "" #: .\cookbook\templates\generic\list_template.html:6 -#: .\cookbook\templates\generic\list_template.html:12 +#: .\cookbook\templates\generic\list_template.html:21 msgid "List" msgstr "" -#: .\cookbook\templates\generic\list_template.html:25 +#: .\cookbook\templates\generic\list_template.html:34 msgid "Filter" msgstr "" -#: .\cookbook\templates\generic\list_template.html:30 +#: .\cookbook\templates\generic\list_template.html:39 msgid "Import all" msgstr "" @@ -1438,6 +1313,11 @@ msgstr "" msgid "Week iCal export" msgstr "" +#: .\cookbook\templates\meal_plan.html:256 +#: .\cookbook\templates\url_import.html:542 +msgid "Note" +msgstr "" + #: .\cookbook\templates\meal_plan.html:264 #: .\cookbook\templates\meal_plan_entry.html:18 msgid "Created by" @@ -1501,6 +1381,11 @@ msgstr "" msgid "Meal Plan View" msgstr "" +#: .\cookbook\templates\meal_plan_entry.html:48 +#: .\cookbook\templates\recipes_table.html:64 +msgid "Last cooked" +msgstr "" + #: .\cookbook\templates\meal_plan_entry.html:50 msgid "Never cooked before." msgstr "" @@ -1597,8 +1482,12 @@ msgstr "" msgid "Comments" msgstr "" +#: .\cookbook\templates\recipe_view.html:26 +msgid "by" +msgstr "" + #: .\cookbook\templates\recipe_view.html:44 .\cookbook\views\delete.py:118 -#: .\cookbook\views\edit.py:179 +#: .\cookbook\views\edit.py:177 msgid "Comment" msgstr "" @@ -1630,60 +1519,221 @@ msgstr "" msgid "Recipe Home" msgstr "" -#: .\cookbook\templates\settings.html:25 +#: .\cookbook\templates\search_info.html:5 +#: .\cookbook\templates\search_info.html:9 +#: .\cookbook\templates\settings.html:157 +msgid "Search Settings" +msgstr "" + +#: .\cookbook\templates\search_info.html:10 +msgid "" +"\n" +" Creating the best search experience is complicated and weighs " +"heavily on your personal configuration. \n" +" Changing any of the search settings can have significant impact on " +"the speed and quality of the results.\n" +" Search Methods, Trigrams and Full Text Search configurations are " +"only available if you are using Postgres for your database.\n" +" " +msgstr "" + +#: .\cookbook\templates\search_info.html:19 +msgid "Search Methods" +msgstr "" + +#: .\cookbook\templates\search_info.html:23 +msgid "" +" \n" +" Full text searches attempt to normalize the words provided to " +"match common variants. For example: 'forked', 'forking', 'forks' will all " +"normalize to 'fork'.\n" +" There are several methods available, described below, that will " +"control how the search behavior should react when multiple words are " +"searched.\n" +" Full technical details on how these operate can be viewed on Postgresql's website.\n" +" " +msgstr "" + +#: .\cookbook\templates\search_info.html:29 +msgid "" +" \n" +" Simple searches ignore punctuation and common words such as " +"'the', 'a', 'and'. And will treat seperate words as required.\n" +" Searching for 'apple or flour' will return any recipe that " +"includes both 'apple' and 'flour' anywhere in the fields that have been " +"selected for a full text search.\n" +" " +msgstr "" + +#: .\cookbook\templates\search_info.html:34 +msgid "" +" \n" +" Phrase searches ignore punctuation, but will search for all of " +"the words in the exact order provided.\n" +" Searching for 'apple or flour' will only return a recipe that " +"includes the exact phrase 'apple or flour' in any of the fields that have " +"been selected for a full text search.\n" +" " +msgstr "" + +#: .\cookbook\templates\search_info.html:39 +msgid "" +" \n" +" Web searches simulate functionality found on many web search " +"sites supporting special syntax.\n" +" Placing quotes around several words will convert those words " +"into a phrase.\n" +" 'or' is recongized as searching for the word (or phrase) " +"immediately before 'or' OR the word (or phrase) directly after.\n" +" '-' is recognized as searching for recipes that do not include " +"the word (or phrase) that comes immediately after. \n" +" For example searching for 'apple pie' or cherry -butter will " +"return any recipe that includes the phrase 'apple pie' or the word " +"'cherry' \n" +" in any field included in the full text search but exclude any " +"recipe that has the word 'butter' in any field included.\n" +" " +msgstr "" + +#: .\cookbook\templates\search_info.html:48 +msgid "" +" \n" +" Raw search is similar to Web except will take puncuation " +"operators such as '|', '&' and '()'\n" +" " +msgstr "" + +#: .\cookbook\templates\search_info.html:59 +msgid "" +" \n" +" Another approach to searching that also requires Postgresql is " +"fuzzy search or trigram similarity. A trigram is a group of three " +"consecutive characters.\n" +" For example searching for 'apple' will create x trigrams 'app', " +"'ppl', 'ple' and will create a score of how closely words match the " +"generated trigrams.\n" +" One benefit of searching trigams is that a search for 'sandwich' " +"will find mispelled words such as 'sandwhich' that would be missed by other " +"methods.\n" +" " +msgstr "" + +#: .\cookbook\templates\search_info.html:69 +msgid "Search Fields" +msgstr "" + +#: .\cookbook\templates\search_info.html:73 +msgid "" +" \n" +" Unaccent is a special case in that it enables searching a field " +"'unaccented' for each search style attempting to ignore accented values. \n" +" For example when you enable unaccent for 'Name' any search " +"(starts with, contains, trigram) will attempt the search ignoring accented " +"characters.\n" +" \n" +" For the other options, you can enable search on any or all " +"fields and they will be combined together with an assumed 'OR'.\n" +" For example enabling 'Name' for Starts With, 'Name' and " +"'Description' for Partial Match and 'Ingredients' and 'Keywords' for Full " +"Search\n" +" and searching for 'apple' will generate a search that will " +"return recipes that have:\n" +" - A recipe name that starts with 'apple'\n" +" - OR a recipe name that contains 'apple'\n" +" - OR a recipe description that contains 'apple'\n" +" - OR a recipe that will have a full text search match ('apple' " +"or 'apples') in ingredients\n" +" - OR a recipe that will have a full text search match in " +"Keywords\n" +"\n" +" Combining too many fields in too many types of search can have a " +"negative impact on performance, create duplicate results or return " +"unexpected results.\n" +" For example, enabling fuzzy search or partial matches will " +"interfere with web search methods. \n" +" Searching for 'apple -pie' with fuzzy search and full text " +"search will return the recipe Apple Pie. Though it is not included in the " +"full text results, it does match the trigram results.\n" +" " +msgstr "" + +#: .\cookbook\templates\search_info.html:95 +msgid "Search Index" +msgstr "" + +#: .\cookbook\templates\search_info.html:99 +msgid "" +" \n" +" Trigram search and Full Text Search both rely on database " +"indexes to perform effectively. \n" +" You can rebuild the indexes on all fields in the Admin page for " +"Recipes and selecting all recipes and running 'rebuild index for selected " +"recipes'\n" +" You can also rebuild indexes at the command line by executing " +"the management command 'python manage.py rebuildindex'\n" +" " +msgstr "" + +#: .\cookbook\templates\settings.html:27 msgid "Account" msgstr "" -#: .\cookbook\templates\settings.html:29 +#: .\cookbook\templates\settings.html:33 msgid "Preferences" msgstr "" -#: .\cookbook\templates\settings.html:33 +#: .\cookbook\templates\settings.html:39 msgid "API-Settings" msgstr "" -#: .\cookbook\templates\settings.html:41 +#: .\cookbook\templates\settings.html:45 +msgid "Search-Settings" +msgstr "" + +#: .\cookbook\templates\settings.html:53 msgid "Name Settings" msgstr "" -#: .\cookbook\templates\settings.html:49 +#: .\cookbook\templates\settings.html:61 msgid "Account Settings" msgstr "" -#: .\cookbook\templates\settings.html:51 +#: .\cookbook\templates\settings.html:63 msgid "Emails" msgstr "" -#: .\cookbook\templates\settings.html:54 +#: .\cookbook\templates\settings.html:66 #: .\cookbook\templates\socialaccount\connections.html:11 msgid "Social" msgstr "" -#: .\cookbook\templates\settings.html:66 +#: .\cookbook\templates\settings.html:78 msgid "Language" msgstr "" -#: .\cookbook\templates\settings.html:96 +#: .\cookbook\templates\settings.html:108 msgid "Style" msgstr "" -#: .\cookbook\templates\settings.html:116 +#: .\cookbook\templates\settings.html:128 msgid "API Token" msgstr "" -#: .\cookbook\templates\settings.html:117 +#: .\cookbook\templates\settings.html:129 msgid "" "You can use both basic authentication and token based authentication to " "access the REST API." msgstr "" -#: .\cookbook\templates\settings.html:134 +#: .\cookbook\templates\settings.html:146 msgid "" "Use the token as an Authorization header prefixed by the word token as shown " "in the following examples:" msgstr "" -#: .\cookbook\templates\settings.html:136 +#: .\cookbook\templates\settings.html:148 msgid "or" msgstr "" @@ -1724,6 +1774,23 @@ msgstr "" msgid "Amount" msgstr "" +#: .\cookbook\templates\shopping_list.html:187 +msgid "Select Unit" +msgstr "" + +#: .\cookbook\templates\shopping_list.html:189 +#: .\cookbook\templates\shopping_list.html:211 +#: .\cookbook\templates\shopping_list.html:241 +#: .\cookbook\templates\shopping_list.html:265 +#: .\cookbook\templates\url_import.html:495 +#: .\cookbook\templates\url_import.html:527 +msgid "Select" +msgstr "" + +#: .\cookbook\templates\shopping_list.html:209 +msgid "Select Food" +msgstr "" + #: .\cookbook\templates\shopping_list.html:240 msgid "Select Supermarket" msgstr "" @@ -1821,10 +1888,6 @@ msgstr "" msgid "Recipes without Keywords" msgstr "" -#: .\cookbook\templates\space.html:58 .\cookbook\templates\stats.html:43 -msgid "External Recipes" -msgstr "" - #: .\cookbook\templates\space.html:60 .\cookbook\templates\stats.html:45 msgid "Internal Recipes" msgstr "" @@ -1874,7 +1937,7 @@ msgid "There are no members in your space yet!" msgstr "" #: .\cookbook\templates\space.html:130 .\cookbook\templates\system.html:21 -#: .\cookbook\views\lists.py:115 +#: .\cookbook\views\lists.py:100 msgid "Invite Links" msgstr "" @@ -1882,6 +1945,10 @@ msgstr "" msgid "Stats" msgstr "" +#: .\cookbook\templates\stats.html:10 +msgid "Statistics" +msgstr "" + #: .\cookbook\templates\system.html:22 msgid "Show Links" msgstr "" @@ -2028,6 +2095,10 @@ msgstr "" msgid "Text dragged here will be appended to the name." msgstr "" +#: .\cookbook\templates\url_import.html:171 +msgid "Description" +msgstr "" + #: .\cookbook\templates\url_import.html:175 msgid "Text dragged here will be appended to the description." msgstr "" @@ -2052,6 +2123,11 @@ msgstr "" msgid "Ingredients dragged here will be appended to current list." msgstr "" +#: .\cookbook\templates\url_import.html:297 +#: .\cookbook\templates\url_import.html:567 +msgid "Instructions" +msgstr "" + #: .\cookbook\templates\url_import.html:302 msgid "" "Recipe instructions dragged here will be appended to current instructions." @@ -2101,6 +2177,10 @@ msgstr "" msgid "Select one" msgstr "" +#: .\cookbook\templates\url_import.html:583 +msgid "Add Keyword" +msgstr "" + #: .\cookbook\templates\url_import.html:596 msgid "All Keywords" msgstr "" @@ -2136,45 +2216,102 @@ msgstr "" msgid "Recipe Markup Specification" msgstr "" -#: .\cookbook\views\api.py:79 +#: .\cookbook\views\api.py:82 .\cookbook\views\api.py:131 msgid "Parameter updated_at incorrectly formatted" msgstr "" -#: .\cookbook\views\api.py:580 .\cookbook\views\views.py:303 +#: .\cookbook\views\api.py:151 +#, python-brace-format +msgid "No {self.basename} with id {pk} exists" +msgstr "" + +#: .\cookbook\views\api.py:155 .\cookbook\views\edit.py:300 +#: .\cookbook\views\edit.py:316 +msgid "Cannot merge with the same object!" +msgstr "" + +#: .\cookbook\views\api.py:162 +#, python-brace-format +msgid "No {self.basename} with id {target} exists" +msgstr "" + +#: .\cookbook\views\api.py:167 +msgid "Cannot merge with child object!" +msgstr "" + +#: .\cookbook\views\api.py:195 +#, python-brace-format +msgid "{source.name} was merged successfully with {target.name}" +msgstr "" + +#: .\cookbook\views\api.py:199 +#, python-brace-format +msgid "An error occurred attempting to merge {source.name} with {target.name}" +msgstr "" + +#: .\cookbook\views\api.py:239 +#, python-brace-format +msgid "No {self.basename} with id {child} exists" +msgstr "" + +#: .\cookbook\views\api.py:248 +#, python-brace-format +msgid "{child.name} was moved successfully to the root." +msgstr "" + +#: .\cookbook\views\api.py:251 .\cookbook\views\api.py:269 +msgid "An error occurred attempting to move " +msgstr "" + +#: .\cookbook\views\api.py:254 +msgid "Cannot move an object to itself!" +msgstr "" + +#: .\cookbook\views\api.py:260 +#, python-brace-format +msgid "No {self.basename} with id {parent} exists" +msgstr "" + +#: .\cookbook\views\api.py:266 +#, python-brace-format +msgid "{child.name} was moved successfully to parent {parent.name}" +msgstr "" + +#: .\cookbook\views\api.py:704 .\cookbook\views\views.py:289 msgid "This feature is not available in the demo version!" msgstr "" -#: .\cookbook\views\api.py:603 +#: .\cookbook\views\api.py:727 msgid "Sync successful!" msgstr "" -#: .\cookbook\views\api.py:608 +#: .\cookbook\views\api.py:732 msgid "Error synchronizing with Storage" msgstr "" -#: .\cookbook\views\api.py:686 +#: .\cookbook\views\api.py:810 msgid "Nothing to do." msgstr "" -#: .\cookbook\views\api.py:701 +#: .\cookbook\views\api.py:825 msgid "The requested site provided malformed data and cannot be read." msgstr "" -#: .\cookbook\views\api.py:708 +#: .\cookbook\views\api.py:832 msgid "The requested page could not be found." msgstr "" -#: .\cookbook\views\api.py:717 +#: .\cookbook\views\api.py:841 msgid "" "The requested site does not provide any recognized data format to import the " "recipe from." msgstr "" -#: .\cookbook\views\api.py:731 +#: .\cookbook\views\api.py:855 msgid "No useable data could be found." msgstr "" -#: .\cookbook\views\api.py:747 +#: .\cookbook\views\api.py:871 msgid "I couldn't find anything to do." msgstr "" @@ -2201,8 +2338,8 @@ msgstr[1] "" msgid "Monitor" msgstr "" -#: .\cookbook\views\delete.py:96 .\cookbook\views\lists.py:102 -#: .\cookbook\views\new.py:98 +#: .\cookbook\views\delete.py:96 .\cookbook\views\lists.py:86 +#: .\cookbook\views\new.py:97 msgid "Storage Backend" msgstr "" @@ -2211,8 +2348,8 @@ msgid "" "Could not delete this storage backend as it is used in at least one monitor." msgstr "" -#: .\cookbook\views\delete.py:129 .\cookbook\views\edit.py:213 -#: .\cookbook\views\new.py:156 +#: .\cookbook\views\delete.py:129 .\cookbook\views\edit.py:211 +#: .\cookbook\views\new.py:155 msgid "Recipe Book" msgstr "" @@ -2220,47 +2357,39 @@ msgstr "" msgid "Bookmarks" msgstr "" -#: .\cookbook\views\delete.py:163 .\cookbook\views\new.py:252 +#: .\cookbook\views\delete.py:163 .\cookbook\views\new.py:251 msgid "Invite Link" msgstr "" -#: .\cookbook\views\edit.py:119 -msgid "Food" -msgstr "" - -#: .\cookbook\views\edit.py:128 +#: .\cookbook\views\edit.py:126 msgid "You cannot edit this storage!" msgstr "" -#: .\cookbook\views\edit.py:148 +#: .\cookbook\views\edit.py:146 msgid "Storage saved!" msgstr "" -#: .\cookbook\views\edit.py:154 +#: .\cookbook\views\edit.py:152 msgid "There was an error updating this storage backend!" msgstr "" -#: .\cookbook\views\edit.py:165 +#: .\cookbook\views\edit.py:163 msgid "Storage" msgstr "" -#: .\cookbook\views\edit.py:261 +#: .\cookbook\views\edit.py:259 msgid "Changes saved!" msgstr "" -#: .\cookbook\views\edit.py:265 +#: .\cookbook\views\edit.py:263 msgid "Error saving changes!" msgstr "" -#: .\cookbook\views\edit.py:299 +#: .\cookbook\views\edit.py:298 msgid "Units merged!" msgstr "" -#: .\cookbook\views\edit.py:301 .\cookbook\views\edit.py:317 -msgid "Cannot merge with the same object!" -msgstr "" - -#: .\cookbook\views\edit.py:315 +#: .\cookbook\views\edit.py:314 msgid "Foods merged!" msgstr "" @@ -2272,126 +2401,152 @@ msgstr "" msgid "Exporting is not implemented for this provider" msgstr "" -#: .\cookbook\views\lists.py:40 +#: .\cookbook\views\lists.py:26 msgid "Import Log" msgstr "" -#: .\cookbook\views\lists.py:53 +#: .\cookbook\views\lists.py:39 msgid "Discovery" msgstr "" -#: .\cookbook\views\lists.py:85 +#: .\cookbook\views\lists.py:69 msgid "Shopping Lists" msgstr "" -#: .\cookbook\views\new.py:123 +#: .\cookbook\views\lists.py:129 +msgid "Foods" +msgstr "" + +#: .\cookbook\views\lists.py:163 +msgid "Supermarkets" +msgstr "" + +#: .\cookbook\views\lists.py:179 +msgid "Shopping Categories" +msgstr "" + +#: .\cookbook\views\new.py:122 msgid "Imported new recipe!" msgstr "" -#: .\cookbook\views\new.py:126 +#: .\cookbook\views\new.py:125 msgid "There was an error importing this recipe!" msgstr "" -#: .\cookbook\views\new.py:226 +#: .\cookbook\views\new.py:225 msgid "Hello" msgstr "" -#: .\cookbook\views\new.py:226 +#: .\cookbook\views\new.py:225 msgid "You have been invited by " msgstr "" -#: .\cookbook\views\new.py:227 +#: .\cookbook\views\new.py:226 msgid " to join their Tandoor Recipes space " msgstr "" -#: .\cookbook\views\new.py:228 +#: .\cookbook\views\new.py:227 msgid "Click the following link to activate your account: " msgstr "" -#: .\cookbook\views\new.py:229 +#: .\cookbook\views\new.py:228 msgid "" "If the link does not work use the following code to manually join the space: " msgstr "" -#: .\cookbook\views\new.py:230 +#: .\cookbook\views\new.py:229 msgid "The invitation is valid until " msgstr "" -#: .\cookbook\views\new.py:231 +#: .\cookbook\views\new.py:230 msgid "" "Tandoor Recipes is an Open Source recipe manager. Check it out on GitHub " msgstr "" -#: .\cookbook\views\new.py:234 +#: .\cookbook\views\new.py:233 msgid "Tandoor Recipes Invite" msgstr "" -#: .\cookbook\views\new.py:241 +#: .\cookbook\views\new.py:240 msgid "Invite link successfully send to user." msgstr "" -#: .\cookbook\views\new.py:244 +#: .\cookbook\views\new.py:243 msgid "" "You have send to many emails, please share the link manually or wait a few " "hours." msgstr "" -#: .\cookbook\views\new.py:246 +#: .\cookbook\views\new.py:245 msgid "Email to user could not be send, please share link manually." msgstr "" -#: .\cookbook\views\views.py:129 +#: .\cookbook\views\views.py:128 msgid "" "You have successfully created your own recipe space. Start by adding some " "recipes or invite other people to join you." msgstr "" -#: .\cookbook\views\views.py:177 +#: .\cookbook\views\views.py:176 msgid "You do not have the required permissions to perform this action!" msgstr "" -#: .\cookbook\views\views.py:188 +#: .\cookbook\views\views.py:187 msgid "Comment saved!" msgstr "" -#: .\cookbook\views\views.py:395 +#: .\cookbook\views\views.py:351 +msgid "You must select at least one field to search!" +msgstr "" + +#: .\cookbook\views\views.py:354 +msgid "" +"To use this search method you must select at least one full text search " +"field!" +msgstr "" + +#: .\cookbook\views\views.py:357 +msgid "Fuzzy search is not compatible with this search method!" +msgstr "" + +#: .\cookbook\views\views.py:437 msgid "" "The setup page can only be used to create the first user! If you have " "forgotten your superuser credentials please consult the django documentation " "on how to reset passwords." msgstr "" -#: .\cookbook\views\views.py:402 +#: .\cookbook\views\views.py:444 msgid "Passwords dont match!" msgstr "" -#: .\cookbook\views\views.py:418 +#: .\cookbook\views\views.py:460 msgid "User has been created, please login!" msgstr "" -#: .\cookbook\views\views.py:434 +#: .\cookbook\views\views.py:476 msgid "Malformed Invite Link supplied!" msgstr "" -#: .\cookbook\views\views.py:441 +#: .\cookbook\views\views.py:483 msgid "You are already member of a space and therefore cannot join this one." msgstr "" -#: .\cookbook\views\views.py:452 +#: .\cookbook\views\views.py:494 msgid "Successfully joined space." msgstr "" -#: .\cookbook\views\views.py:458 +#: .\cookbook\views\views.py:500 msgid "Invite Link not valid or already used!" msgstr "" -#: .\cookbook\views\views.py:522 +#: .\cookbook\views\views.py:564 msgid "" "Reporting share links is not enabled for this instance. Please notify the " "page administrator to report problems." msgstr "" -#: .\cookbook\views\views.py:528 +#: .\cookbook\views\views.py:570 msgid "" "Recipe sharing link has been disabled! For additional information please " "contact the page administrator." diff --git a/cookbook/locale/zh_CN/LC_MESSAGES/django.mo b/cookbook/locale/zh_CN/LC_MESSAGES/django.mo index 63e8def8..a48d59a7 100644 Binary files a/cookbook/locale/zh_CN/LC_MESSAGES/django.mo and b/cookbook/locale/zh_CN/LC_MESSAGES/django.mo differ diff --git a/cookbook/locale/zh_CN/LC_MESSAGES/django.po b/cookbook/locale/zh_CN/LC_MESSAGES/django.po index 4584665b..891d17d2 100644 --- a/cookbook/locale/zh_CN/LC_MESSAGES/django.po +++ b/cookbook/locale/zh_CN/LC_MESSAGES/django.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-08-12 15:09+0200\n" -"PO-Revision-Date: 2021-08-10 08:51+0000\n" +"POT-Creation-Date: 2021-09-13 22:40+0200\n" +"PO-Revision-Date: 2021-08-20 19:28+0000\n" "Last-Translator: Danny Tsui \n" "Language-Team: Chinese (Simplified) \n" @@ -19,237 +19,316 @@ msgstr "" "Plural-Forms: nplurals=1; plural=0;\n" "X-Generator: Weblate 4.7.2\n" -#: .\cookbook\filters.py:23 .\cookbook\templates\base.html:98 -#: .\cookbook\templates\forms\edit_internal_recipe.html:269 +#: .\cookbook\filters.py:23 .\cookbook\templates\base.html:125 #: .\cookbook\templates\forms\ingredients.html:34 #: .\cookbook\templates\space.html:43 .\cookbook\templates\stats.html:28 -#: .\cookbook\templates\url_import.html:270 .\cookbook\views\lists.py:67 +#: .\cookbook\templates\url_import.html:270 msgid "Ingredients" msgstr "材料" -#: .\cookbook\forms.py:49 +#: .\cookbook\forms.py:50 msgid "" "Color of the top navigation bar. Not all colors work with all themes, just " "try them out!" msgstr "" +"顶部导航栏的颜色。并非所有的颜色都适用于所有的主题,只要试一试就可以了!" -#: .\cookbook\forms.py:51 +#: .\cookbook\forms.py:52 msgid "Default Unit to be used when inserting a new ingredient into a recipe." -msgstr "" +msgstr "在配方中插入新原料时使用的默认单位。" -#: .\cookbook\forms.py:53 +#: .\cookbook\forms.py:54 msgid "" "Enables support for fractions in ingredient amounts (e.g. convert decimals " "to fractions automatically)" -msgstr "" +msgstr "启用对原料数量的分数支持(例如自动将小数转换为分数)" -#: .\cookbook\forms.py:56 +#: .\cookbook\forms.py:57 +#, fuzzy msgid "" "Users with whom newly created meal plan/shopping list entries should be " "shared by default." -msgstr "" - -#: .\cookbook\forms.py:58 -msgid "Show recently viewed recipes on search page." -msgstr "" +msgstr "默认情况下,新创建的膳食计划/购物清单条目应与之共享的用户。" #: .\cookbook\forms.py:59 -msgid "Number of decimals to round ingredients." -msgstr "" +msgid "Show recently viewed recipes on search page." +msgstr "在搜索页面上显示最近查看的菜谱。" #: .\cookbook\forms.py:60 -msgid "If you want to be able to create and see comments underneath recipes." -msgstr "" +msgid "Number of decimals to round ingredients." +msgstr "四舍五入成分的小数点数目。" -#: .\cookbook\forms.py:62 +#: .\cookbook\forms.py:61 +msgid "If you want to be able to create and see comments underneath recipes." +msgstr "如果你希望能够在菜谱下面创建并看到评论。" + +#: .\cookbook\forms.py:63 msgid "" "Setting to 0 will disable auto sync. When viewing a shopping list the list " "is updated every set seconds to sync changes someone else might have made. " "Useful when shopping with multiple people but might use a little bit of " "mobile data. If lower than instance limit it is reset when saving." msgstr "" +"设置为0将禁用自动同步。当查看购物清单时,清单会每隔几秒钟更新一次,以同步其他" +"人可能做出的改变。在与多人一起购物时很有用,但可能会消耗一点移动数据。如果低" +"于实例限制,它将在保存时被重置。" -#: .\cookbook\forms.py:65 +#: .\cookbook\forms.py:66 msgid "Makes the navbar stick to the top of the page." -msgstr "" +msgstr "使导航条粘在页面的顶部。" -#: .\cookbook\forms.py:81 +#: .\cookbook\forms.py:82 msgid "" "Both fields are optional. If none are given the username will be displayed " "instead" -msgstr "" +msgstr "这两个字段都是可选的。如果没有给出,将显示用户名" -#: .\cookbook\forms.py:102 .\cookbook\forms.py:331 -#: .\cookbook\templates\forms\edit_internal_recipe.html:49 +#: .\cookbook\forms.py:103 .\cookbook\forms.py:334 #: .\cookbook\templates\url_import.html:154 msgid "Name" msgstr "名称" -#: .\cookbook\forms.py:103 .\cookbook\forms.py:332 -#: .\cookbook\templates\base.html:108 .\cookbook\templates\base.html:169 -#: .\cookbook\templates\forms\edit_internal_recipe.html:85 +#: .\cookbook\forms.py:104 .\cookbook\forms.py:335 #: .\cookbook\templates\space.html:39 .\cookbook\templates\stats.html:24 #: .\cookbook\templates\url_import.html:188 -#: .\cookbook\templates\url_import.html:573 +#: .\cookbook\templates\url_import.html:573 .\cookbook\views\lists.py:112 msgid "Keywords" msgstr "关键字" -#: .\cookbook\forms.py:104 +#: .\cookbook\forms.py:105 msgid "Preparation time in minutes" msgstr "准备时间(分钟)" -#: .\cookbook\forms.py:105 +#: .\cookbook\forms.py:106 msgid "Waiting time (cooking/baking) in minutes" msgstr "等候时间(分钟)" -#: .\cookbook\forms.py:106 .\cookbook\forms.py:333 +#: .\cookbook\forms.py:107 .\cookbook\forms.py:336 msgid "Path" msgstr "路径" -#: .\cookbook\forms.py:107 +#: .\cookbook\forms.py:108 msgid "Storage UID" -msgstr "" +msgstr "存储 UID" -#: .\cookbook\forms.py:133 +#: .\cookbook\forms.py:134 msgid "Default" msgstr "预置" -#: .\cookbook\forms.py:144 .\cookbook\templates\url_import.html:90 +#: .\cookbook\forms.py:145 .\cookbook\templates\url_import.html:90 msgid "" "To prevent duplicates recipes with the same name as existing ones are " "ignored. Check this box to import everything." -msgstr "" +msgstr "為了防止與現有菜谱同名的重複菜谱被忽略。勾选此框以导入所有内容。" -#: .\cookbook\forms.py:164 +#: .\cookbook\forms.py:165 msgid "New Unit" msgstr "新单位" -#: .\cookbook\forms.py:165 +#: .\cookbook\forms.py:166 +#, fuzzy msgid "New unit that other gets replaced by." -msgstr "" +msgstr "新的单位被其他取代." -#: .\cookbook\forms.py:170 +#: .\cookbook\forms.py:171 msgid "Old Unit" msgstr "旧单位" -#: .\cookbook\forms.py:171 +#: .\cookbook\forms.py:172 msgid "Unit that should be replaced." msgstr "单位应被取代." -#: .\cookbook\forms.py:187 +#: .\cookbook\forms.py:189 msgid "New Food" msgstr "新的食品" -#: .\cookbook\forms.py:188 +#: .\cookbook\forms.py:190 +#, fuzzy msgid "New food that other gets replaced by." -msgstr "" +msgstr "新食品被其他取代." -#: .\cookbook\forms.py:193 +#: .\cookbook\forms.py:195 msgid "Old Food" msgstr "旧的食品" -#: .\cookbook\forms.py:194 +#: .\cookbook\forms.py:196 msgid "Food that should be replaced." msgstr "食品应被取代." -#: .\cookbook\forms.py:212 +#: .\cookbook\forms.py:214 msgid "Add your comment: " msgstr "发表评论: " -#: .\cookbook\forms.py:253 +#: .\cookbook\forms.py:256 msgid "Leave empty for dropbox and enter app password for nextcloud." -msgstr "" +msgstr "dropbox留空和为nextcloud输入应用密码。" -#: .\cookbook\forms.py:260 +#: .\cookbook\forms.py:263 msgid "Leave empty for nextcloud and enter api token for dropbox." msgstr "" -#: .\cookbook\forms.py:269 +#: .\cookbook\forms.py:272 msgid "" "Leave empty for dropbox and enter only base url for nextcloud (/remote." "php/webdav/ is added automatically)" msgstr "" -#: .\cookbook\forms.py:307 +#: .\cookbook\forms.py:310 msgid "Search String" msgstr "搜索字符串" -#: .\cookbook\forms.py:334 +#: .\cookbook\forms.py:337 msgid "File ID" -msgstr "" +msgstr "文件编号" -#: .\cookbook\forms.py:370 +#: .\cookbook\forms.py:373 msgid "You must provide at least a recipe or a title." -msgstr "" +msgstr "你必须至少提供一份菜谱或一个标题。" -#: .\cookbook\forms.py:383 +#: .\cookbook\forms.py:386 msgid "You can list default users to share recipes with in the settings." -msgstr "" +msgstr "你可以在设置中列出默认用户来分享食谱。" -#: .\cookbook\forms.py:384 -#: .\cookbook\templates\forms\edit_internal_recipe.html:427 +#: .\cookbook\forms.py:387 msgid "" "You can use markdown to format this field. See the docs here" msgstr "" -#: .\cookbook\forms.py:409 +#: .\cookbook\forms.py:412 msgid "Maximum number of users for this space reached." -msgstr "" +msgstr "已达到该空间的最大用户数。" -#: .\cookbook\forms.py:415 +#: .\cookbook\forms.py:418 msgid "Email address already taken!" msgstr "电子邮件地址已被注册!" -#: .\cookbook\forms.py:423 +#: .\cookbook\forms.py:426 msgid "" "An email address is not required but if present the invite link will be send " "to the user." -msgstr "" +msgstr "电子邮件地址不是必需的,但如果存在,邀请链接将被发送给用户。" -#: .\cookbook\forms.py:438 +#: .\cookbook\forms.py:441 msgid "Name already taken." -msgstr "" +msgstr "名字已被占用。" -#: .\cookbook\forms.py:449 +#: .\cookbook\forms.py:452 msgid "Accept Terms and Privacy" msgstr "接受条款细则及私隐政策" +#: .\cookbook\forms.py:487 +msgid "" +"Select type method of search. Click here for " +"full desciption of choices." +msgstr "" + +#: .\cookbook\forms.py:488 +msgid "" +"Use fuzzy matching on units, keywords and ingredients when editing and " +"importing recipes." +msgstr "" + +#: .\cookbook\forms.py:489 +msgid "" +"Fields to search ignoring accents. Selecting this option can improve or " +"degrade search quality depending on language" +msgstr "" + +#: .\cookbook\forms.py:490 +msgid "" +"Fields to search for partial matches. (e.g. searching for 'Pie' will return " +"'pie' and 'piece' and 'soapie')" +msgstr "" + +#: .\cookbook\forms.py:491 +msgid "" +"Fields to search for beginning of word matches. (e.g. searching for 'sa' " +"will return 'salad' and 'sandwich')" +msgstr "" + +#: .\cookbook\forms.py:492 +msgid "" +"Fields to 'fuzzy' search. (e.g. searching for 'recpie' will find 'recipe'.) " +"Note: this option will conflict with 'web' and 'raw' methods of search." +msgstr "" + +#: .\cookbook\forms.py:493 +msgid "" +"Fields to full text search. Note: 'web', 'phrase', and 'raw' search methods " +"only function with fulltext fields." +msgstr "" + +#: .\cookbook\forms.py:497 +#, fuzzy +#| msgid "Search" +msgid "Search Method" +msgstr "搜索" + +#: .\cookbook\forms.py:498 +msgid "Fuzzy Lookups" +msgstr "" + +#: .\cookbook\forms.py:499 +msgid "Ignore Accent" +msgstr "" + +#: .\cookbook\forms.py:500 +msgid "Partial Match" +msgstr "" + +#: .\cookbook\forms.py:501 +msgid "Starts Wtih" +msgstr "" + +#: .\cookbook\forms.py:502 +#, fuzzy +#| msgid "Search" +msgid "Fuzzy Search" +msgstr "搜索" + +#: .\cookbook\forms.py:503 +#, fuzzy +#| msgid "Text" +msgid "Full Text" +msgstr "文本" + #: .\cookbook\helper\AllAuthCustomAdapter.py:36 msgid "" "In order to prevent spam, the requested email was not send. Please wait a " "few minutes and try again." -msgstr "" +msgstr "为了防止垃圾邮件,所要求的电子邮件没有被发送。请等待几分钟后再试。" -#: .\cookbook\helper\permission_helper.py:138 -#: .\cookbook\helper\permission_helper.py:161 .\cookbook\views\views.py:151 +#: .\cookbook\helper\permission_helper.py:136 +#: .\cookbook\helper\permission_helper.py:159 .\cookbook\views\views.py:150 msgid "You are not logged in and therefore cannot view this page!" -msgstr "" +msgstr "你没有登录,因此不能查看这个页面!" -#: .\cookbook\helper\permission_helper.py:142 -#: .\cookbook\helper\permission_helper.py:148 -#: .\cookbook\helper\permission_helper.py:173 -#: .\cookbook\helper\permission_helper.py:218 -#: .\cookbook\helper\permission_helper.py:232 -#: .\cookbook\helper\permission_helper.py:243 -#: .\cookbook\helper\permission_helper.py:254 .\cookbook\views\data.py:40 -#: .\cookbook\views\views.py:162 .\cookbook\views\views.py:169 -#: .\cookbook\views\views.py:259 +#: .\cookbook\helper\permission_helper.py:140 +#: .\cookbook\helper\permission_helper.py:146 +#: .\cookbook\helper\permission_helper.py:171 +#: .\cookbook\helper\permission_helper.py:216 +#: .\cookbook\helper\permission_helper.py:230 +#: .\cookbook\helper\permission_helper.py:241 +#: .\cookbook\helper\permission_helper.py:252 .\cookbook\views\data.py:40 +#: .\cookbook\views\views.py:161 .\cookbook\views\views.py:168 +#: .\cookbook\views\views.py:245 msgid "You do not have the required permissions to view this page!" -msgstr "" +msgstr "你没有必要的权限来查看这个页面!" -#: .\cookbook\helper\permission_helper.py:166 -#: .\cookbook\helper\permission_helper.py:189 -#: .\cookbook\helper\permission_helper.py:204 +#: .\cookbook\helper\permission_helper.py:164 +#: .\cookbook\helper\permission_helper.py:187 +#: .\cookbook\helper\permission_helper.py:202 +#, fuzzy msgid "You cannot interact with this object as it is not owned by you!" -msgstr "" +msgstr "你不能与这个对象进行互动,因为它不属于你!" -#: .\cookbook\helper\template_helper.py:60 -#: .\cookbook\helper\template_helper.py:62 +#: .\cookbook\helper\template_helper.py:61 +#: .\cookbook\helper\template_helper.py:63 msgid "Could not parse template code." -msgstr "" +msgstr "无法解析模板代码。" -#: .\cookbook\integration\integration.py:104 +#: .\cookbook\integration\integration.py:119 #: .\cookbook\templates\import.html:14 .\cookbook\templates\import.html:20 #: .\cookbook\templates\import_response.html:7 #: .\cookbook\templates\test.html:14 .\cookbook\templates\test.html:20 @@ -258,30 +337,30 @@ msgstr "" #: .\cookbook\templates\url_import.html:123 #: .\cookbook\templates\url_import.html:317 #: .\cookbook\templates\url_import.html:604 .\cookbook\views\delete.py:60 -#: .\cookbook\views\edit.py:199 +#: .\cookbook\views\edit.py:197 msgid "Import" msgstr "导入" -#: .\cookbook\integration\integration.py:185 +#: .\cookbook\integration\integration.py:200 msgid "" "Importer expected a .zip file. Did you choose the correct importer type for " "your data ?" -msgstr "" +msgstr "输入者需要一个.zip文件。你为你的数据选择了正确的导入器类型吗?" -#: .\cookbook\integration\integration.py:188 +#: .\cookbook\integration\integration.py:203 msgid "" "An unexpected error occurred during the import. Please make sure you have " "uploaded a valid file." -msgstr "" +msgstr "在导入过程中发生了一个意外的错误。请确认你已经上传了一个有效的文件。" -#: .\cookbook\integration\integration.py:192 +#: .\cookbook\integration\integration.py:208 msgid "The following recipes were ignored because they already existed:" -msgstr "" +msgstr "以下菜谱被忽略了,因为它们已经存在了:" -#: .\cookbook\integration\integration.py:196 +#: .\cookbook\integration\integration.py:212 #, python-format msgid "Imported %s recipes." -msgstr "" +msgstr "导入了%s菜谱。" #: .\cookbook\integration\paprika.py:46 msgid "Notes" @@ -296,7 +375,6 @@ msgid "Source" msgstr "来源" #: .\cookbook\integration\safron.py:23 -#: .\cookbook\templates\forms\edit_internal_recipe.html:79 #: .\cookbook\templates\include\log_cooking.html:16 #: .\cookbook\templates\url_import.html:224 #: .\cookbook\templates\url_import.html:455 @@ -308,7 +386,6 @@ msgid "Waiting time" msgstr "等待时间" #: .\cookbook\integration\safron.py:27 -#: .\cookbook\templates\forms\edit_internal_recipe.html:73 msgid "Preparation Time" msgstr "准备时间" @@ -322,6 +399,22 @@ msgstr "食谱" msgid "Section" msgstr "节" +#: .\cookbook\management\commands\rebuildindex.py:14 +msgid "Rebuilds full text search index on Recipe" +msgstr "" + +#: .\cookbook\management\commands\rebuildindex.py:18 +msgid "Only Postgress databases use full text search, no index to rebuild" +msgstr "" + +#: .\cookbook\management\commands\rebuildindex.py:29 +msgid "Recipe index rebuild complete." +msgstr "" + +#: .\cookbook\management\commands\rebuildindex.py:31 +msgid "Recipe index rebuild failed." +msgstr "" + #: .\cookbook\migrations\0047_auto_20200602_1133.py:14 msgid "Breakfast" msgstr "早餐" @@ -338,76 +431,89 @@ msgstr "晚餐" msgid "Other" msgstr "其他" -#: .\cookbook\models.py:72 +#: .\cookbook\models.py:144 msgid "" "Maximum file storage for space in MB. 0 for unlimited, -1 to disable file " "upload." -msgstr "" +msgstr "空间的最大文件存储量,单位为MB。0表示无限制,-1表示禁止文件上传。" -#: .\cookbook\models.py:123 .\cookbook\templates\search.html:7 +#: .\cookbook\models.py:196 .\cookbook\templates\search.html:7 #: .\cookbook\templates\shopping_list.html:52 msgid "Search" msgstr "搜索" -#: .\cookbook\models.py:124 .\cookbook\templates\base.html:92 +#: .\cookbook\models.py:197 .\cookbook\templates\base.html:82 #: .\cookbook\templates\meal_plan.html:5 .\cookbook\views\delete.py:152 -#: .\cookbook\views\edit.py:233 .\cookbook\views\new.py:201 +#: .\cookbook\views\edit.py:231 .\cookbook\views\new.py:200 msgid "Meal-Plan" msgstr "餐单" -#: .\cookbook\models.py:125 .\cookbook\templates\base.html:89 +#: .\cookbook\models.py:198 .\cookbook\templates\base.html:90 msgid "Books" msgstr "书籍" -#: .\cookbook\models.py:133 +#: .\cookbook\models.py:206 msgid "Small" msgstr "小" -#: .\cookbook\models.py:133 +#: .\cookbook\models.py:206 msgid "Large" msgstr "大" -#: .\cookbook\models.py:133 .\cookbook\templates\generic\new_template.html:6 +#: .\cookbook\models.py:206 .\cookbook\templates\generic\new_template.html:6 #: .\cookbook\templates\generic\new_template.html:14 #: .\cookbook\templates\meal_plan.html:323 msgid "New" msgstr "新" -#: .\cookbook\models.py:338 -#: .\cookbook\templates\forms\edit_internal_recipe.html:202 +#: .\cookbook\models.py:389 +msgid " is part of a recipe step and cannot be deleted" +msgstr "" + +#: .\cookbook\models.py:429 msgid "Text" msgstr "文本" -#: .\cookbook\models.py:338 -#: .\cookbook\templates\forms\edit_internal_recipe.html:203 +#: .\cookbook\models.py:429 msgid "Time" msgstr "时间" -#: .\cookbook\models.py:338 -#: .\cookbook\templates\forms\edit_internal_recipe.html:204 -#: .\cookbook\templates\forms\edit_internal_recipe.html:219 +#: .\cookbook\models.py:429 msgid "File" msgstr "文件" -#: .\cookbook\models.py:338 -#: .\cookbook\templates\forms\edit_internal_recipe.html:205 -#: .\cookbook\templates\forms\edit_internal_recipe.html:241 +#: .\cookbook\models.py:429 #: .\cookbook\templates\include\recipe_open_modal.html:7 #: .\cookbook\templates\meal_plan.html:247 .\cookbook\views\delete.py:28 -#: .\cookbook\views\edit.py:273 .\cookbook\views\new.py:52 +#: .\cookbook\views\edit.py:271 .\cookbook\views\new.py:52 msgid "Recipe" +msgstr "菜谱" + +#: .\cookbook\models.py:836 .\cookbook\templates\search_info.html:28 +msgid "Simple" msgstr "" -#: .\cookbook\serializer.py:109 +#: .\cookbook\models.py:837 .\cookbook\templates\search_info.html:33 +msgid "Phrase" +msgstr "" + +#: .\cookbook\models.py:838 .\cookbook\templates\search_info.html:38 +msgid "Web" +msgstr "" + +#: .\cookbook\models.py:839 .\cookbook\templates\search_info.html:47 +msgid "Raw" +msgstr "" + +#: .\cookbook\serializer.py:112 msgid "File uploads are not enabled for this Space." msgstr "文件不能上载此空间。" -#: .\cookbook\serializer.py:117 +#: .\cookbook\serializer.py:125 msgid "You have reached your file upload limit." msgstr "你已达到文件上载的上限。" -#: .\cookbook\tables.py:35 .\cookbook\templates\books.html:36 -#: .\cookbook\templates\generic\edit_template.html:6 +#: .\cookbook\tables.py:35 .\cookbook\templates\generic\edit_template.html:6 #: .\cookbook\templates\generic\edit_template.html:14 #: .\cookbook\templates\meal_plan.html:281 #: .\cookbook\templates\recipes_table.html:82 @@ -416,31 +522,30 @@ msgstr "你已达到文件上载的上限。" msgid "Edit" msgstr "编辑" -#: .\cookbook\tables.py:124 .\cookbook\tables.py:147 -#: .\cookbook\templates\books.html:38 +#: .\cookbook\tables.py:115 .\cookbook\tables.py:138 #: .\cookbook\templates\generic\delete_template.html:5 #: .\cookbook\templates\generic\delete_template.html:13 -#: .\cookbook\templates\generic\edit_template.html:27 +#: .\cookbook\templates\generic\edit_template.html:28 #: .\cookbook\templates\meal_plan.html:277 #: .\cookbook\templates\recipes_table.html:90 msgid "Delete" -msgstr "" +msgstr "删除" #: .\cookbook\templates\404.html:5 msgid "404 Error" -msgstr "" +msgstr "404 错误" #: .\cookbook\templates\404.html:18 msgid "The page you are looking for could not be found." -msgstr "" +msgstr "找不到你要找的页面。" #: .\cookbook\templates\404.html:33 msgid "Take me Home" -msgstr "" +msgstr "带我回家" #: .\cookbook\templates\404.html:35 msgid "Report a Bug" -msgstr "" +msgstr "报告一个错误" #: .\cookbook\templates\account\email.html:6 #: .\cookbook\templates\account\email.html:17 @@ -450,39 +555,41 @@ msgstr "电子邮件地址" #: .\cookbook\templates\account\email.html:12 #: .\cookbook\templates\account\password_change.html:11 #: .\cookbook\templates\account\password_set.html:11 -#: .\cookbook\templates\base.html:154 .\cookbook\templates\settings.html:6 +#: .\cookbook\templates\base.html:204 .\cookbook\templates\settings.html:6 #: .\cookbook\templates\settings.html:17 #: .\cookbook\templates\socialaccount\connections.html:10 msgid "Settings" -msgstr "" +msgstr "设置" #: .\cookbook\templates\account\email.html:13 msgid "Email" -msgstr "" +msgstr "电子邮件" #: .\cookbook\templates\account\email.html:19 msgid "The following e-mail addresses are associated with your account:" -msgstr "" +msgstr "以下电子邮件地址与您的账户相关联:" #: .\cookbook\templates\account\email.html:36 msgid "Verified" -msgstr "" +msgstr "已验证" #: .\cookbook\templates\account\email.html:38 msgid "Unverified" -msgstr "" +msgstr "未验证" #: .\cookbook\templates\account\email.html:40 +#, fuzzy msgid "Primary" -msgstr "" +msgstr "初选" #: .\cookbook\templates\account\email.html:47 +#, fuzzy msgid "Make Primary" -msgstr "" +msgstr "做出初选" #: .\cookbook\templates\account\email.html:49 msgid "Re-send Verification" -msgstr "" +msgstr "重新发送验证" #: .\cookbook\templates\account\email.html:50 #: .\cookbook\templates\socialaccount\connections.html:44 @@ -491,30 +598,32 @@ msgstr "移除" #: .\cookbook\templates\account\email.html:58 msgid "Warning:" -msgstr "" +msgstr "警告:" #: .\cookbook\templates\account\email.html:58 msgid "" "You currently do not have any e-mail address set up. You should really add " "an e-mail address so you can receive notifications, reset your password, etc." msgstr "" +"你目前没有设置任何电子邮件地址。你真的应该添加一个电子邮件地址,这样你就可以" +"收到通知,重置你的密码,等等。" #: .\cookbook\templates\account\email.html:64 msgid "Add E-mail Address" -msgstr "" +msgstr "添加电子邮件地址" #: .\cookbook\templates\account\email.html:69 msgid "Add E-mail" -msgstr "" +msgstr "添加电子邮件" #: .\cookbook\templates\account\email.html:79 msgid "Do you really want to remove the selected e-mail address?" -msgstr "" +msgstr "你真的想删除选定的电子邮件地址吗?" #: .\cookbook\templates\account\email_confirm.html:6 #: .\cookbook\templates\account\email_confirm.html:10 msgid "Confirm E-mail Address" -msgstr "" +msgstr "确认电子邮件地址" #: .\cookbook\templates\account\email_confirm.html:16 #, python-format @@ -526,7 +635,7 @@ msgid "" msgstr "" #: .\cookbook\templates\account\email_confirm.html:22 -#: .\cookbook\templates\generic\delete_template.html:21 +#: .\cookbook\templates\generic\delete_template.html:22 msgid "Confirm" msgstr "确认" @@ -538,238 +647,223 @@ msgid "" "request." msgstr "" -#: .\cookbook\templates\account\login.html:8 .\cookbook\templates\base.html:189 +#: .\cookbook\templates\account\login.html:8 .\cookbook\templates\base.html:234 msgid "Login" -msgstr "" +msgstr "登录" #: .\cookbook\templates\account\login.html:15 #: .\cookbook\templates\account\login.html:31 #: .\cookbook\templates\account\signup.html:69 #: .\cookbook\templates\account\signup_closed.html:15 msgid "Sign In" -msgstr "" +msgstr "登入" #: .\cookbook\templates\account\login.html:32 #: .\cookbook\templates\socialaccount\signup.html:8 #: .\cookbook\templates\socialaccount\signup.html:57 msgid "Sign Up" -msgstr "" +msgstr "注册" #: .\cookbook\templates\account\login.html:36 #: .\cookbook\templates\account\login.html:37 #: .\cookbook\templates\account\password_reset.html:29 msgid "Reset My Password" -msgstr "" +msgstr "重置我的密码" #: .\cookbook\templates\account\login.html:37 msgid "Lost your password?" -msgstr "" +msgstr "遗失密码?" #: .\cookbook\templates\account\login.html:48 msgid "Social Login" -msgstr "" +msgstr "社交登录" #: .\cookbook\templates\account\login.html:49 msgid "You can use any of the following providers to sign in." -msgstr "" +msgstr "你可以使用以下任何一个供应商来登录。" #: .\cookbook\templates\account\logout.html:5 #: .\cookbook\templates\account\logout.html:9 #: .\cookbook\templates\account\logout.html:18 msgid "Sign Out" -msgstr "" +msgstr "登出" #: .\cookbook\templates\account\logout.html:11 msgid "Are you sure you want to sign out?" -msgstr "" +msgstr "你确定你要登出吗?" #: .\cookbook\templates\account\password_change.html:6 #: .\cookbook\templates\account\password_change.html:16 #: .\cookbook\templates\account\password_change.html:21 -#, fuzzy -#| msgid "Changes saved!" msgid "Change Password" -msgstr "更改已保存!" +msgstr "更改密码" #: .\cookbook\templates\account\password_change.html:12 #: .\cookbook\templates\account\password_set.html:12 -#: .\cookbook\templates\settings.html:52 +#: .\cookbook\templates\settings.html:64 msgid "Password" -msgstr "" +msgstr "密码" #: .\cookbook\templates\account\password_change.html:22 msgid "Forgot Password?" -msgstr "" +msgstr "忘记密码?" #: .\cookbook\templates\account\password_reset.html:7 #: .\cookbook\templates\account\password_reset.html:13 #: .\cookbook\templates\account\password_reset_done.html:7 #: .\cookbook\templates\account\password_reset_done.html:10 msgid "Password Reset" -msgstr "" +msgstr "密码重置" #: .\cookbook\templates\account\password_reset.html:24 msgid "" "Forgotten your password? Enter your e-mail address below, and we'll send you " "an e-mail allowing you to reset it." msgstr "" +"忘记密码了吗?请在下面输入你的电子邮件地址,我们将向你发送一封电子邮件,允许" +"你重新设置密码。" #: .\cookbook\templates\account\password_reset.html:32 msgid "Password reset is disabled on this instance." -msgstr "" +msgstr "该实例上的密码重置被禁用。" #: .\cookbook\templates\account\password_reset_done.html:16 msgid "" "We have sent you an e-mail. Please contact us if you do not receive it " "within a few minutes." -msgstr "" +msgstr "我们已经向您发送了一封电子邮件。如果你在几分钟内没有收到,请联系我们。" #: .\cookbook\templates\account\password_set.html:6 #: .\cookbook\templates\account\password_set.html:16 #: .\cookbook\templates\account\password_set.html:21 msgid "Set Password" -msgstr "" +msgstr "设置密码" #: .\cookbook\templates\account\signup.html:6 msgid "Register" -msgstr "" +msgstr "注册" #: .\cookbook\templates\account\signup.html:12 msgid "Create an Account" -msgstr "" +msgstr "创建账户" #: .\cookbook\templates\account\signup.html:42 #: .\cookbook\templates\socialaccount\signup.html:33 msgid "I accept the follwoing" -msgstr "" +msgstr "我接受以下" #: .\cookbook\templates\account\signup.html:45 #: .\cookbook\templates\socialaccount\signup.html:36 msgid "Terms and Conditions" -msgstr "" +msgstr "条款及细则" #: .\cookbook\templates\account\signup.html:48 #: .\cookbook\templates\socialaccount\signup.html:39 msgid "and" -msgstr "" +msgstr "和" #: .\cookbook\templates\account\signup.html:52 #: .\cookbook\templates\socialaccount\signup.html:43 msgid "Privacy Policy" -msgstr "" +msgstr "隐私政策" #: .\cookbook\templates\account\signup.html:65 msgid "Create User" -msgstr "" +msgstr "创建用户" #: .\cookbook\templates\account\signup.html:69 msgid "Already have an account?" -msgstr "" +msgstr "已有账户?" #: .\cookbook\templates\account\signup_closed.html:5 #: .\cookbook\templates\account\signup_closed.html:11 msgid "Sign Up Closed" -msgstr "" +msgstr "注册关闭" #: .\cookbook\templates\account\signup_closed.html:13 msgid "We are sorry, but the sign up is currently closed." -msgstr "" +msgstr "我们很抱歉,但目前注册已经结束。" -#: .\cookbook\templates\api_info.html:5 .\cookbook\templates\base.html:179 +#: .\cookbook\templates\api_info.html:5 .\cookbook\templates\base.html:222 #: .\cookbook\templates\rest_framework\api.html:11 msgid "API Documentation" -msgstr "" +msgstr "API文档" -#: .\cookbook\templates\base.html:85 -msgid "Utensils" -msgstr "" - -#: .\cookbook\templates\base.html:95 +#: .\cookbook\templates\base.html:86 msgid "Shopping" +msgstr "购物" + +#: .\cookbook\templates\base.html:113 +msgid "Keyword" +msgstr "关键词" + +#: .\cookbook\templates\base.html:137 +#: .\cookbook\templates\forms\ingredients.html:24 +#: .\cookbook\templates\space.html:41 .\cookbook\templates\stats.html:26 +#: .\cookbook\views\lists.py:146 +msgid "Units" msgstr "" -#: .\cookbook\templates\base.html:101 +#: .\cookbook\templates\base.html:151 #: .\cookbook\templates\shopping_list.html:230 #: .\cookbook\templates\supermarket.html:7 msgid "Supermarket" -msgstr "" +msgstr "超市" -#: .\cookbook\templates\base.html:112 .\cookbook\views\delete.py:84 -#: .\cookbook\views\edit.py:102 .\cookbook\views\lists.py:26 -#: .\cookbook\views\new.py:78 -msgid "Keyword" -msgstr "" - -#: .\cookbook\templates\base.html:114 +#: .\cookbook\templates\base.html:163 msgid "Batch Edit" -msgstr "" +msgstr "批量编辑" -#: .\cookbook\templates\base.html:119 -msgid "Storage Data" -msgstr "" - -#: .\cookbook\templates\base.html:123 -msgid "Storage Backends" -msgstr "" - -#: .\cookbook\templates\base.html:125 -msgid "Configure Sync" -msgstr "" - -#: .\cookbook\templates\base.html:127 -msgid "Discovered Recipes" -msgstr "" - -#: .\cookbook\templates\base.html:129 -msgid "Discovery Log" -msgstr "" - -#: .\cookbook\templates\base.html:131 .\cookbook\templates\stats.html:10 -msgid "Statistics" -msgstr "" - -#: .\cookbook\templates\base.html:133 -msgid "Units & Ingredients" -msgstr "" - -#: .\cookbook\templates\base.html:135 .\cookbook\templates\index.html:47 -msgid "Import Recipe" -msgstr "" - -#: .\cookbook\templates\base.html:156 .\cookbook\templates\history.html:6 +#: .\cookbook\templates\base.html:175 .\cookbook\templates\history.html:6 #: .\cookbook\templates\history.html:14 msgid "History" msgstr "" -#: .\cookbook\templates\base.html:159 .\cookbook\templates\space.html:7 +#: .\cookbook\templates\base.html:191 .\cookbook\templates\index.html:47 +msgid "Import Recipe" +msgstr "" + +#: .\cookbook\templates\base.html:193 +#: .\cookbook\templates\shopping_list.html:188 +#: .\cookbook\templates\shopping_list.html:210 +msgid "Create" +msgstr "" + +#: .\cookbook\templates\base.html:207 .\cookbook\templates\space.html:7 #: .\cookbook\templates\space.html:19 msgid "Space Settings" msgstr "" -#: .\cookbook\templates\base.html:163 .\cookbook\templates\system.html:13 +#: .\cookbook\templates\base.html:212 .\cookbook\templates\system.html:13 msgid "System" msgstr "" -#: .\cookbook\templates\base.html:165 .\cookbook\templates\base.html:171 +#: .\cookbook\templates\base.html:214 msgid "Admin" msgstr "" -#: .\cookbook\templates\base.html:175 +#: .\cookbook\templates\base.html:218 msgid "Markdown Guide" msgstr "" -#: .\cookbook\templates\base.html:177 +#: .\cookbook\templates\base.html:220 msgid "GitHub" msgstr "" -#: .\cookbook\templates\base.html:181 +#: .\cookbook\templates\base.html:224 msgid "API Browser" msgstr "" -#: .\cookbook\templates\base.html:184 +#: .\cookbook\templates\base.html:227 msgid "Log out" msgstr "" +#: .\cookbook\templates\base.html:229 +#: .\cookbook\templates\generic\list_template.html:14 +#: .\cookbook\templates\space.html:58 .\cookbook\templates\stats.html:43 +msgid "External Recipes" +msgstr "" + #: .\cookbook\templates\batch\edit.html:6 msgid "Batch edit Category" msgstr "" @@ -782,7 +876,7 @@ msgstr "" msgid "Add the specified keywords to all recipes containing a word" msgstr "" -#: .\cookbook\templates\batch\monitor.html:6 .\cookbook\views\edit.py:85 +#: .\cookbook\templates\batch\monitor.html:6 .\cookbook\views\edit.py:83 msgid "Sync" msgstr "" @@ -800,10 +894,26 @@ msgstr "" msgid "The path must be in the following format" msgstr "" -#: .\cookbook\templates\batch\monitor.html:27 +#: .\cookbook\templates\batch\monitor.html:21 +msgid "Manage External Storage" +msgstr "" + +#: .\cookbook\templates\batch\monitor.html:28 msgid "Sync Now!" msgstr "" +#: .\cookbook\templates\batch\monitor.html:29 +#, fuzzy +#| msgid "Recipe" +msgid "Show Recipes" +msgstr "菜谱" + +#: .\cookbook\templates\batch\monitor.html:30 +#, fuzzy +#| msgid "Social Login" +msgid "Show Log" +msgstr "社交登录" + #: .\cookbook\templates\batch\waiting.html:4 #: .\cookbook\templates\batch\waiting.html:10 msgid "Importing Recipes" @@ -815,32 +925,10 @@ msgid "" "please wait." msgstr "" -#: .\cookbook\templates\books.html:5 .\cookbook\templates\books.html:11 +#: .\cookbook\templates\books.html:7 msgid "Recipe Books" msgstr "" -#: .\cookbook\templates\books.html:15 -msgid "New Book" -msgstr "" - -#: .\cookbook\templates\books.html:27 .\cookbook\templates\recipe_view.html:26 -msgid "by" -msgstr "" - -#: .\cookbook\templates\books.html:34 -msgid "Toggle Recipes" -msgstr "" - -#: .\cookbook\templates\books.html:54 -#: .\cookbook\templates\meal_plan_entry.html:48 -#: .\cookbook\templates\recipes_table.html:64 -msgid "Last cooked" -msgstr "" - -#: .\cookbook\templates\books.html:71 -msgid "There are no recipes in this book yet." -msgstr "" - #: .\cookbook\templates\export.html:6 .\cookbook\templates\test2.html:6 msgid "Export Recipes" msgstr "" @@ -861,213 +949,21 @@ msgid "Import new Recipe" msgstr "" #: .\cookbook\templates\forms\edit_import_recipe.html:14 -#: .\cookbook\templates\forms\edit_internal_recipe.html:439 -#: .\cookbook\templates\forms\edit_internal_recipe.html:471 #: .\cookbook\templates\generic\edit_template.html:23 #: .\cookbook\templates\generic\new_template.html:23 #: .\cookbook\templates\include\log_cooking.html:28 #: .\cookbook\templates\meal_plan.html:325 -#: .\cookbook\templates\settings.html:46 .\cookbook\templates\settings.html:87 -#: .\cookbook\templates\settings.html:105 +#: .\cookbook\templates\settings.html:58 .\cookbook\templates\settings.html:99 +#: .\cookbook\templates\settings.html:117 +#: .\cookbook\templates\settings.html:162 #: .\cookbook\templates\shopping_list.html:353 msgid "Save" msgstr "" #: .\cookbook\templates\forms\edit_internal_recipe.html:7 -#: .\cookbook\templates\forms\edit_internal_recipe.html:34 msgid "Edit Recipe" msgstr "" -#: .\cookbook\templates\forms\edit_internal_recipe.html:56 -#: .\cookbook\templates\url_import.html:171 -msgid "Description" -msgstr "" - -#: .\cookbook\templates\forms\edit_internal_recipe.html:76 -msgid "Waiting Time" -msgstr "" - -#: .\cookbook\templates\forms\edit_internal_recipe.html:82 -msgid "Servings Text" -msgstr "" - -#: .\cookbook\templates\forms\edit_internal_recipe.html:93 -msgid "Select Keywords" -msgstr "" - -#: .\cookbook\templates\forms\edit_internal_recipe.html:94 -#: .\cookbook\templates\url_import.html:583 -msgid "Add Keyword" -msgstr "" - -#: .\cookbook\templates\forms\edit_internal_recipe.html:112 -msgid "Nutrition" -msgstr "" - -#: .\cookbook\templates\forms\edit_internal_recipe.html:116 -#: .\cookbook\templates\forms\edit_internal_recipe.html:166 -msgid "Delete Step" -msgstr "" - -#: .\cookbook\templates\forms\edit_internal_recipe.html:120 -msgid "Calories" -msgstr "" - -#: .\cookbook\templates\forms\edit_internal_recipe.html:123 -msgid "Carbohydrates" -msgstr "" - -#: .\cookbook\templates\forms\edit_internal_recipe.html:126 -msgid "Fats" -msgstr "" - -#: .\cookbook\templates\forms\edit_internal_recipe.html:128 -msgid "Proteins" -msgstr "" - -#: .\cookbook\templates\forms\edit_internal_recipe.html:150 -#: .\cookbook\templates\forms\edit_internal_recipe.html:504 -msgid "Step" -msgstr "" - -#: .\cookbook\templates\forms\edit_internal_recipe.html:171 -msgid "Show as header" -msgstr "" - -#: .\cookbook\templates\forms\edit_internal_recipe.html:177 -msgid "Hide as header" -msgstr "" - -#: .\cookbook\templates\forms\edit_internal_recipe.html:182 -msgid "Move Up" -msgstr "" - -#: .\cookbook\templates\forms\edit_internal_recipe.html:187 -msgid "Move Down" -msgstr "" - -#: .\cookbook\templates\forms\edit_internal_recipe.html:196 -msgid "Step Name" -msgstr "" - -#: .\cookbook\templates\forms\edit_internal_recipe.html:200 -msgid "Step Type" -msgstr "" - -#: .\cookbook\templates\forms\edit_internal_recipe.html:213 -msgid "Step time in Minutes" -msgstr "" - -#: .\cookbook\templates\forms\edit_internal_recipe.html:229 -msgid "Select File" -msgstr "" - -#: .\cookbook\templates\forms\edit_internal_recipe.html:230 -#: .\cookbook\templates\forms\edit_internal_recipe.html:252 -#: .\cookbook\templates\forms\edit_internal_recipe.html:313 -#: .\cookbook\templates\forms\edit_internal_recipe.html:337 -#: .\cookbook\templates\shopping_list.html:189 -#: .\cookbook\templates\shopping_list.html:211 -#: .\cookbook\templates\shopping_list.html:241 -#: .\cookbook\templates\shopping_list.html:265 -#: .\cookbook\templates\url_import.html:495 -#: .\cookbook\templates\url_import.html:527 -msgid "Select" -msgstr "" - -#: .\cookbook\templates\forms\edit_internal_recipe.html:251 -#, fuzzy -#| msgid "Select one" -msgid "Select Recipe" -msgstr "选择一项" - -#: .\cookbook\templates\forms\edit_internal_recipe.html:311 -#: .\cookbook\templates\shopping_list.html:187 -msgid "Select Unit" -msgstr "" - -#: .\cookbook\templates\forms\edit_internal_recipe.html:312 -#: .\cookbook\templates\forms\edit_internal_recipe.html:336 -#: .\cookbook\templates\shopping_list.html:188 -#: .\cookbook\templates\shopping_list.html:210 -msgid "Create" -msgstr "" - -#: .\cookbook\templates\forms\edit_internal_recipe.html:335 -#: .\cookbook\templates\shopping_list.html:209 -msgid "Select Food" -msgstr "" - -#: .\cookbook\templates\forms\edit_internal_recipe.html:352 -#: .\cookbook\templates\meal_plan.html:256 -#: .\cookbook\templates\url_import.html:542 -msgid "Note" -msgstr "" - -#: .\cookbook\templates\forms\edit_internal_recipe.html:369 -msgid "Delete Ingredient" -msgstr "" - -#: .\cookbook\templates\forms\edit_internal_recipe.html:375 -msgid "Make Header" -msgstr "" - -#: .\cookbook\templates\forms\edit_internal_recipe.html:381 -msgid "Make Ingredient" -msgstr "" - -#: .\cookbook\templates\forms\edit_internal_recipe.html:387 -msgid "Disable Amount" -msgstr "" - -#: .\cookbook\templates\forms\edit_internal_recipe.html:393 -msgid "Enable Amount" -msgstr "" - -#: .\cookbook\templates\forms\edit_internal_recipe.html:398 -msgid "Copy Template Reference" -msgstr "" - -#: .\cookbook\templates\forms\edit_internal_recipe.html:424 -#: .\cookbook\templates\url_import.html:297 -#: .\cookbook\templates\url_import.html:567 -msgid "Instructions" -msgstr "" - -#: .\cookbook\templates\forms\edit_internal_recipe.html:437 -#: .\cookbook\templates\forms\edit_internal_recipe.html:468 -msgid "Save & View" -msgstr "" - -#: .\cookbook\templates\forms\edit_internal_recipe.html:441 -#: .\cookbook\templates\forms\edit_internal_recipe.html:474 -msgid "Add Step" -msgstr "" - -#: .\cookbook\templates\forms\edit_internal_recipe.html:444 -#: .\cookbook\templates\forms\edit_internal_recipe.html:478 -msgid "Add Nutrition" -msgstr "" - -#: .\cookbook\templates\forms\edit_internal_recipe.html:446 -#: .\cookbook\templates\forms\edit_internal_recipe.html:480 -msgid "Remove Nutrition" -msgstr "" - -#: .\cookbook\templates\forms\edit_internal_recipe.html:448 -#: .\cookbook\templates\forms\edit_internal_recipe.html:483 -msgid "View Recipe" -msgstr "" - -#: .\cookbook\templates\forms\edit_internal_recipe.html:450 -#: .\cookbook\templates\forms\edit_internal_recipe.html:485 -msgid "Delete Recipe" -msgstr "" - -#: .\cookbook\templates\forms\edit_internal_recipe.html:491 -msgid "Steps" -msgstr "" - #: .\cookbook\templates\forms\ingredients.html:15 msgid "Edit Ingredients" msgstr "" @@ -1083,11 +979,6 @@ msgid "" " " msgstr "" -#: .\cookbook\templates\forms\ingredients.html:24 -#: .\cookbook\templates\space.html:41 .\cookbook\templates\stats.html:26 -msgid "Units" -msgstr "" - #: .\cookbook\templates\forms\ingredients.html:26 msgid "Are you sure that you want to merge these two units?" msgstr "" @@ -1101,29 +992,33 @@ msgstr "" msgid "Are you sure that you want to merge these two ingredients?" msgstr "" -#: .\cookbook\templates\generic\delete_template.html:18 +#: .\cookbook\templates\generic\delete_template.html:19 #, python-format msgid "Are you sure you want to delete the %(title)s: %(object)s " msgstr "" -#: .\cookbook\templates\generic\edit_template.html:30 +#: .\cookbook\templates\generic\delete_template.html:23 +msgid "Cancel" +msgstr "" + +#: .\cookbook\templates\generic\edit_template.html:32 msgid "View" msgstr "" -#: .\cookbook\templates\generic\edit_template.html:34 +#: .\cookbook\templates\generic\edit_template.html:36 msgid "Delete original file" msgstr "" #: .\cookbook\templates\generic\list_template.html:6 -#: .\cookbook\templates\generic\list_template.html:12 +#: .\cookbook\templates\generic\list_template.html:21 msgid "List" msgstr "" -#: .\cookbook\templates\generic\list_template.html:25 +#: .\cookbook\templates\generic\list_template.html:34 msgid "Filter" msgstr "" -#: .\cookbook\templates\generic\list_template.html:30 +#: .\cookbook\templates\generic\list_template.html:39 msgid "Import all" msgstr "" @@ -1432,6 +1327,11 @@ msgstr "" msgid "Week iCal export" msgstr "" +#: .\cookbook\templates\meal_plan.html:256 +#: .\cookbook\templates\url_import.html:542 +msgid "Note" +msgstr "" + #: .\cookbook\templates\meal_plan.html:264 #: .\cookbook\templates\meal_plan_entry.html:18 msgid "Created by" @@ -1495,6 +1395,11 @@ msgstr "" msgid "Meal Plan View" msgstr "" +#: .\cookbook\templates\meal_plan_entry.html:48 +#: .\cookbook\templates\recipes_table.html:64 +msgid "Last cooked" +msgstr "" + #: .\cookbook\templates\meal_plan_entry.html:50 msgid "Never cooked before." msgstr "" @@ -1591,8 +1496,12 @@ msgstr "" msgid "Comments" msgstr "" +#: .\cookbook\templates\recipe_view.html:26 +msgid "by" +msgstr "" + #: .\cookbook\templates\recipe_view.html:44 .\cookbook\views\delete.py:118 -#: .\cookbook\views\edit.py:179 +#: .\cookbook\views\edit.py:177 msgid "Comment" msgstr "" @@ -1624,60 +1533,231 @@ msgstr "" msgid "Recipe Home" msgstr "" -#: .\cookbook\templates\settings.html:25 +#: .\cookbook\templates\search_info.html:5 +#: .\cookbook\templates\search_info.html:9 +#: .\cookbook\templates\settings.html:157 +#, fuzzy +#| msgid "Search String" +msgid "Search Settings" +msgstr "搜索字符串" + +#: .\cookbook\templates\search_info.html:10 +msgid "" +"\n" +" Creating the best search experience is complicated and weighs " +"heavily on your personal configuration. \n" +" Changing any of the search settings can have significant impact on " +"the speed and quality of the results.\n" +" Search Methods, Trigrams and Full Text Search configurations are " +"only available if you are using Postgres for your database.\n" +" " +msgstr "" + +#: .\cookbook\templates\search_info.html:19 +#, fuzzy +#| msgid "Search" +msgid "Search Methods" +msgstr "搜索" + +#: .\cookbook\templates\search_info.html:23 +msgid "" +" \n" +" Full text searches attempt to normalize the words provided to " +"match common variants. For example: 'forked', 'forking', 'forks' will all " +"normalize to 'fork'.\n" +" There are several methods available, described below, that will " +"control how the search behavior should react when multiple words are " +"searched.\n" +" Full technical details on how these operate can be viewed on Postgresql's website.\n" +" " +msgstr "" + +#: .\cookbook\templates\search_info.html:29 +msgid "" +" \n" +" Simple searches ignore punctuation and common words such as " +"'the', 'a', 'and'. And will treat seperate words as required.\n" +" Searching for 'apple or flour' will return any recipe that " +"includes both 'apple' and 'flour' anywhere in the fields that have been " +"selected for a full text search.\n" +" " +msgstr "" + +#: .\cookbook\templates\search_info.html:34 +msgid "" +" \n" +" Phrase searches ignore punctuation, but will search for all of " +"the words in the exact order provided.\n" +" Searching for 'apple or flour' will only return a recipe that " +"includes the exact phrase 'apple or flour' in any of the fields that have " +"been selected for a full text search.\n" +" " +msgstr "" + +#: .\cookbook\templates\search_info.html:39 +msgid "" +" \n" +" Web searches simulate functionality found on many web search " +"sites supporting special syntax.\n" +" Placing quotes around several words will convert those words " +"into a phrase.\n" +" 'or' is recongized as searching for the word (or phrase) " +"immediately before 'or' OR the word (or phrase) directly after.\n" +" '-' is recognized as searching for recipes that do not include " +"the word (or phrase) that comes immediately after. \n" +" For example searching for 'apple pie' or cherry -butter will " +"return any recipe that includes the phrase 'apple pie' or the word " +"'cherry' \n" +" in any field included in the full text search but exclude any " +"recipe that has the word 'butter' in any field included.\n" +" " +msgstr "" + +#: .\cookbook\templates\search_info.html:48 +msgid "" +" \n" +" Raw search is similar to Web except will take puncuation " +"operators such as '|', '&' and '()'\n" +" " +msgstr "" + +#: .\cookbook\templates\search_info.html:59 +msgid "" +" \n" +" Another approach to searching that also requires Postgresql is " +"fuzzy search or trigram similarity. A trigram is a group of three " +"consecutive characters.\n" +" For example searching for 'apple' will create x trigrams 'app', " +"'ppl', 'ple' and will create a score of how closely words match the " +"generated trigrams.\n" +" One benefit of searching trigams is that a search for 'sandwich' " +"will find mispelled words such as 'sandwhich' that would be missed by other " +"methods.\n" +" " +msgstr "" + +#: .\cookbook\templates\search_info.html:69 +#, fuzzy +#| msgid "Search" +msgid "Search Fields" +msgstr "搜索" + +#: .\cookbook\templates\search_info.html:73 +msgid "" +" \n" +" Unaccent is a special case in that it enables searching a field " +"'unaccented' for each search style attempting to ignore accented values. \n" +" For example when you enable unaccent for 'Name' any search " +"(starts with, contains, trigram) will attempt the search ignoring accented " +"characters.\n" +" \n" +" For the other options, you can enable search on any or all " +"fields and they will be combined together with an assumed 'OR'.\n" +" For example enabling 'Name' for Starts With, 'Name' and " +"'Description' for Partial Match and 'Ingredients' and 'Keywords' for Full " +"Search\n" +" and searching for 'apple' will generate a search that will " +"return recipes that have:\n" +" - A recipe name that starts with 'apple'\n" +" - OR a recipe name that contains 'apple'\n" +" - OR a recipe description that contains 'apple'\n" +" - OR a recipe that will have a full text search match ('apple' " +"or 'apples') in ingredients\n" +" - OR a recipe that will have a full text search match in " +"Keywords\n" +"\n" +" Combining too many fields in too many types of search can have a " +"negative impact on performance, create duplicate results or return " +"unexpected results.\n" +" For example, enabling fuzzy search or partial matches will " +"interfere with web search methods. \n" +" Searching for 'apple -pie' with fuzzy search and full text " +"search will return the recipe Apple Pie. Though it is not included in the " +"full text results, it does match the trigram results.\n" +" " +msgstr "" + +#: .\cookbook\templates\search_info.html:95 +#, fuzzy +#| msgid "Search" +msgid "Search Index" +msgstr "搜索" + +#: .\cookbook\templates\search_info.html:99 +msgid "" +" \n" +" Trigram search and Full Text Search both rely on database " +"indexes to perform effectively. \n" +" You can rebuild the indexes on all fields in the Admin page for " +"Recipes and selecting all recipes and running 'rebuild index for selected " +"recipes'\n" +" You can also rebuild indexes at the command line by executing " +"the management command 'python manage.py rebuildindex'\n" +" " +msgstr "" + +#: .\cookbook\templates\settings.html:27 msgid "Account" msgstr "" -#: .\cookbook\templates\settings.html:29 +#: .\cookbook\templates\settings.html:33 msgid "Preferences" msgstr "" -#: .\cookbook\templates\settings.html:33 +#: .\cookbook\templates\settings.html:39 msgid "API-Settings" msgstr "" -#: .\cookbook\templates\settings.html:41 +#: .\cookbook\templates\settings.html:45 +#, fuzzy +#| msgid "Search String" +msgid "Search-Settings" +msgstr "搜索字符串" + +#: .\cookbook\templates\settings.html:53 msgid "Name Settings" msgstr "" -#: .\cookbook\templates\settings.html:49 +#: .\cookbook\templates\settings.html:61 msgid "Account Settings" msgstr "" -#: .\cookbook\templates\settings.html:51 +#: .\cookbook\templates\settings.html:63 msgid "Emails" msgstr "" -#: .\cookbook\templates\settings.html:54 +#: .\cookbook\templates\settings.html:66 #: .\cookbook\templates\socialaccount\connections.html:11 msgid "Social" msgstr "" -#: .\cookbook\templates\settings.html:66 +#: .\cookbook\templates\settings.html:78 msgid "Language" msgstr "" -#: .\cookbook\templates\settings.html:96 +#: .\cookbook\templates\settings.html:108 msgid "Style" msgstr "" -#: .\cookbook\templates\settings.html:116 +#: .\cookbook\templates\settings.html:128 msgid "API Token" msgstr "" -#: .\cookbook\templates\settings.html:117 +#: .\cookbook\templates\settings.html:129 msgid "" "You can use both basic authentication and token based authentication to " "access the REST API." msgstr "" -#: .\cookbook\templates\settings.html:134 +#: .\cookbook\templates\settings.html:146 msgid "" "Use the token as an Authorization header prefixed by the word token as shown " "in the following examples:" msgstr "" -#: .\cookbook\templates\settings.html:136 +#: .\cookbook\templates\settings.html:148 msgid "or" msgstr "" @@ -1718,6 +1798,23 @@ msgstr "" msgid "Amount" msgstr "" +#: .\cookbook\templates\shopping_list.html:187 +msgid "Select Unit" +msgstr "" + +#: .\cookbook\templates\shopping_list.html:189 +#: .\cookbook\templates\shopping_list.html:211 +#: .\cookbook\templates\shopping_list.html:241 +#: .\cookbook\templates\shopping_list.html:265 +#: .\cookbook\templates\url_import.html:495 +#: .\cookbook\templates\url_import.html:527 +msgid "Select" +msgstr "" + +#: .\cookbook\templates\shopping_list.html:209 +msgid "Select Food" +msgstr "" + #: .\cookbook\templates\shopping_list.html:240 msgid "Select Supermarket" msgstr "" @@ -1815,10 +1912,6 @@ msgstr "" msgid "Recipes without Keywords" msgstr "" -#: .\cookbook\templates\space.html:58 .\cookbook\templates\stats.html:43 -msgid "External Recipes" -msgstr "" - #: .\cookbook\templates\space.html:60 .\cookbook\templates\stats.html:45 msgid "Internal Recipes" msgstr "" @@ -1868,7 +1961,7 @@ msgid "There are no members in your space yet!" msgstr "" #: .\cookbook\templates\space.html:130 .\cookbook\templates\system.html:21 -#: .\cookbook\views\lists.py:115 +#: .\cookbook\views\lists.py:100 msgid "Invite Links" msgstr "" @@ -1876,6 +1969,10 @@ msgstr "" msgid "Stats" msgstr "" +#: .\cookbook\templates\stats.html:10 +msgid "Statistics" +msgstr "" + #: .\cookbook\templates\system.html:22 msgid "Show Links" msgstr "" @@ -2022,6 +2119,10 @@ msgstr "清除内容" msgid "Text dragged here will be appended to the name." msgstr "" +#: .\cookbook\templates\url_import.html:171 +msgid "Description" +msgstr "" + #: .\cookbook\templates\url_import.html:175 msgid "Text dragged here will be appended to the description." msgstr "" @@ -2046,6 +2147,11 @@ msgstr "烹调时间" msgid "Ingredients dragged here will be appended to current list." msgstr "" +#: .\cookbook\templates\url_import.html:297 +#: .\cookbook\templates\url_import.html:567 +msgid "Instructions" +msgstr "" + #: .\cookbook\templates\url_import.html:302 msgid "" "Recipe instructions dragged here will be appended to current instructions." @@ -2095,6 +2201,10 @@ msgstr "菜谱描述" msgid "Select one" msgstr "选择一项" +#: .\cookbook\templates\url_import.html:583 +msgid "Add Keyword" +msgstr "" + #: .\cookbook\templates\url_import.html:596 msgid "All Keywords" msgstr "所有关键字" @@ -2130,45 +2240,102 @@ msgstr "GitHub问题" msgid "Recipe Markup Specification" msgstr "" -#: .\cookbook\views\api.py:79 +#: .\cookbook\views\api.py:82 .\cookbook\views\api.py:131 msgid "Parameter updated_at incorrectly formatted" msgstr "" -#: .\cookbook\views\api.py:580 .\cookbook\views\views.py:303 +#: .\cookbook\views\api.py:151 +#, python-brace-format +msgid "No {self.basename} with id {pk} exists" +msgstr "" + +#: .\cookbook\views\api.py:155 .\cookbook\views\edit.py:300 +#: .\cookbook\views\edit.py:316 +msgid "Cannot merge with the same object!" +msgstr "" + +#: .\cookbook\views\api.py:162 +#, python-brace-format +msgid "No {self.basename} with id {target} exists" +msgstr "" + +#: .\cookbook\views\api.py:167 +msgid "Cannot merge with child object!" +msgstr "" + +#: .\cookbook\views\api.py:195 +#, python-brace-format +msgid "{source.name} was merged successfully with {target.name}" +msgstr "" + +#: .\cookbook\views\api.py:199 +#, python-brace-format +msgid "An error occurred attempting to merge {source.name} with {target.name}" +msgstr "" + +#: .\cookbook\views\api.py:239 +#, python-brace-format +msgid "No {self.basename} with id {child} exists" +msgstr "" + +#: .\cookbook\views\api.py:248 +#, python-brace-format +msgid "{child.name} was moved successfully to the root." +msgstr "" + +#: .\cookbook\views\api.py:251 .\cookbook\views\api.py:269 +msgid "An error occurred attempting to move " +msgstr "" + +#: .\cookbook\views\api.py:254 +msgid "Cannot move an object to itself!" +msgstr "" + +#: .\cookbook\views\api.py:260 +#, python-brace-format +msgid "No {self.basename} with id {parent} exists" +msgstr "" + +#: .\cookbook\views\api.py:266 +#, python-brace-format +msgid "{child.name} was moved successfully to parent {parent.name}" +msgstr "" + +#: .\cookbook\views\api.py:704 .\cookbook\views\views.py:289 msgid "This feature is not available in the demo version!" msgstr "" -#: .\cookbook\views\api.py:603 +#: .\cookbook\views\api.py:727 msgid "Sync successful!" msgstr "" -#: .\cookbook\views\api.py:608 +#: .\cookbook\views\api.py:732 msgid "Error synchronizing with Storage" msgstr "" -#: .\cookbook\views\api.py:686 +#: .\cookbook\views\api.py:810 msgid "Nothing to do." msgstr "" -#: .\cookbook\views\api.py:701 +#: .\cookbook\views\api.py:825 msgid "The requested site provided malformed data and cannot be read." msgstr "" -#: .\cookbook\views\api.py:708 +#: .\cookbook\views\api.py:832 msgid "The requested page could not be found." msgstr "" -#: .\cookbook\views\api.py:717 +#: .\cookbook\views\api.py:841 msgid "" "The requested site does not provide any recognized data format to import the " "recipe from." msgstr "" -#: .\cookbook\views\api.py:731 +#: .\cookbook\views\api.py:855 msgid "No useable data could be found." msgstr "" -#: .\cookbook\views\api.py:747 +#: .\cookbook\views\api.py:871 msgid "I couldn't find anything to do." msgstr "" @@ -2195,8 +2362,8 @@ msgstr[1] "" msgid "Monitor" msgstr "监测" -#: .\cookbook\views\delete.py:96 .\cookbook\views\lists.py:102 -#: .\cookbook\views\new.py:98 +#: .\cookbook\views\delete.py:96 .\cookbook\views\lists.py:86 +#: .\cookbook\views\new.py:97 msgid "Storage Backend" msgstr "存储后端" @@ -2205,8 +2372,8 @@ msgid "" "Could not delete this storage backend as it is used in at least one monitor." msgstr "" -#: .\cookbook\views\delete.py:129 .\cookbook\views\edit.py:213 -#: .\cookbook\views\new.py:156 +#: .\cookbook\views\delete.py:129 .\cookbook\views\edit.py:211 +#: .\cookbook\views\new.py:155 msgid "Recipe Book" msgstr "" @@ -2214,47 +2381,39 @@ msgstr "" msgid "Bookmarks" msgstr "书签" -#: .\cookbook\views\delete.py:163 .\cookbook\views\new.py:252 +#: .\cookbook\views\delete.py:163 .\cookbook\views\new.py:251 msgid "Invite Link" msgstr "" -#: .\cookbook\views\edit.py:119 -msgid "Food" -msgstr "食物" - -#: .\cookbook\views\edit.py:128 +#: .\cookbook\views\edit.py:126 msgid "You cannot edit this storage!" msgstr "" -#: .\cookbook\views\edit.py:148 +#: .\cookbook\views\edit.py:146 msgid "Storage saved!" msgstr "存储已存储!" -#: .\cookbook\views\edit.py:154 +#: .\cookbook\views\edit.py:152 msgid "There was an error updating this storage backend!" msgstr "" -#: .\cookbook\views\edit.py:165 +#: .\cookbook\views\edit.py:163 msgid "Storage" msgstr "" -#: .\cookbook\views\edit.py:261 +#: .\cookbook\views\edit.py:259 msgid "Changes saved!" msgstr "更改已保存!" -#: .\cookbook\views\edit.py:265 +#: .\cookbook\views\edit.py:263 msgid "Error saving changes!" msgstr "" -#: .\cookbook\views\edit.py:299 +#: .\cookbook\views\edit.py:298 msgid "Units merged!" msgstr "" -#: .\cookbook\views\edit.py:301 .\cookbook\views\edit.py:317 -msgid "Cannot merge with the same object!" -msgstr "" - -#: .\cookbook\views\edit.py:315 +#: .\cookbook\views\edit.py:314 msgid "Foods merged!" msgstr "" @@ -2266,127 +2425,176 @@ msgstr "" msgid "Exporting is not implemented for this provider" msgstr "" -#: .\cookbook\views\lists.py:40 +#: .\cookbook\views\lists.py:26 msgid "Import Log" msgstr "" -#: .\cookbook\views\lists.py:53 +#: .\cookbook\views\lists.py:39 msgid "Discovery" msgstr "探索" -#: .\cookbook\views\lists.py:85 +#: .\cookbook\views\lists.py:69 msgid "Shopping Lists" msgstr "购物清单" -#: .\cookbook\views\new.py:123 +#: .\cookbook\views\lists.py:129 +#, fuzzy +#| msgid "Food" +msgid "Foods" +msgstr "食物" + +#: .\cookbook\views\lists.py:163 +#, fuzzy +#| msgid "Supermarket" +msgid "Supermarkets" +msgstr "超市" + +#: .\cookbook\views\lists.py:179 +#, fuzzy +#| msgid "Shopping Lists" +msgid "Shopping Categories" +msgstr "购物清单" + +#: .\cookbook\views\new.py:122 msgid "Imported new recipe!" msgstr "" -#: .\cookbook\views\new.py:126 +#: .\cookbook\views\new.py:125 msgid "There was an error importing this recipe!" msgstr "" -#: .\cookbook\views\new.py:226 +#: .\cookbook\views\new.py:225 msgid "Hello" msgstr "你好" -#: .\cookbook\views\new.py:226 +#: .\cookbook\views\new.py:225 msgid "You have been invited by " msgstr "" -#: .\cookbook\views\new.py:227 +#: .\cookbook\views\new.py:226 msgid " to join their Tandoor Recipes space " msgstr "" -#: .\cookbook\views\new.py:228 +#: .\cookbook\views\new.py:227 msgid "Click the following link to activate your account: " msgstr "" -#: .\cookbook\views\new.py:229 +#: .\cookbook\views\new.py:228 msgid "" "If the link does not work use the following code to manually join the space: " msgstr "" -#: .\cookbook\views\new.py:230 +#: .\cookbook\views\new.py:229 msgid "The invitation is valid until " msgstr "邀请有效期至 " -#: .\cookbook\views\new.py:231 +#: .\cookbook\views\new.py:230 msgid "" "Tandoor Recipes is an Open Source recipe manager. Check it out on GitHub " msgstr "" -#: .\cookbook\views\new.py:234 +#: .\cookbook\views\new.py:233 msgid "Tandoor Recipes Invite" msgstr "" -#: .\cookbook\views\new.py:241 +#: .\cookbook\views\new.py:240 msgid "Invite link successfully send to user." msgstr "" -#: .\cookbook\views\new.py:244 +#: .\cookbook\views\new.py:243 msgid "" "You have send to many emails, please share the link manually or wait a few " "hours." msgstr "" -#: .\cookbook\views\new.py:246 +#: .\cookbook\views\new.py:245 msgid "Email to user could not be send, please share link manually." msgstr "" -#: .\cookbook\views\views.py:129 +#: .\cookbook\views\views.py:128 msgid "" "You have successfully created your own recipe space. Start by adding some " "recipes or invite other people to join you." msgstr "" -#: .\cookbook\views\views.py:177 +#: .\cookbook\views\views.py:176 msgid "You do not have the required permissions to perform this action!" msgstr "" -#: .\cookbook\views\views.py:188 +#: .\cookbook\views\views.py:187 msgid "Comment saved!" msgstr "评论已保存!" -#: .\cookbook\views\views.py:395 +#: .\cookbook\views\views.py:351 +msgid "You must select at least one field to search!" +msgstr "" + +#: .\cookbook\views\views.py:354 +msgid "" +"To use this search method you must select at least one full text search " +"field!" +msgstr "" + +#: .\cookbook\views\views.py:357 +msgid "Fuzzy search is not compatible with this search method!" +msgstr "" + +#: .\cookbook\views\views.py:437 msgid "" "The setup page can only be used to create the first user! If you have " "forgotten your superuser credentials please consult the django documentation " "on how to reset passwords." msgstr "" -#: .\cookbook\views\views.py:402 +#: .\cookbook\views\views.py:444 msgid "Passwords dont match!" msgstr "密码不匹配!" -#: .\cookbook\views\views.py:418 +#: .\cookbook\views\views.py:460 msgid "User has been created, please login!" msgstr "用户已创建,請登录!" -#: .\cookbook\views\views.py:434 +#: .\cookbook\views\views.py:476 msgid "Malformed Invite Link supplied!" msgstr "" -#: .\cookbook\views\views.py:441 +#: .\cookbook\views\views.py:483 msgid "You are already member of a space and therefore cannot join this one." msgstr "你已是空间的成员,因此未能加入。" -#: .\cookbook\views\views.py:452 +#: .\cookbook\views\views.py:494 msgid "Successfully joined space." msgstr "成功加入空间。" -#: .\cookbook\views\views.py:458 +#: .\cookbook\views\views.py:500 msgid "Invite Link not valid or already used!" msgstr "邀请连结无效或已使用!" -#: .\cookbook\views\views.py:522 +#: .\cookbook\views\views.py:564 msgid "" "Reporting share links is not enabled for this instance. Please notify the " "page administrator to report problems." msgstr "" -#: .\cookbook\views\views.py:528 +#: .\cookbook\views\views.py:570 msgid "" "Recipe sharing link has been disabled! For additional information please " "contact the page administrator." msgstr "" + +#~ msgid "Utensils" +#~ msgstr "厨具" + +#~ msgid "Storage Data" +#~ msgstr "存储数据" + +#~ msgid "Storage Backends" +#~ msgstr "存储后端" + +#~ msgid "Configure Sync" +#~ msgstr "配置同步" + +#, fuzzy +#~| msgid "Select one" +#~ msgid "Select Recipe" +#~ msgstr "选择一项" diff --git a/cookbook/management/commands/rebuildindex.py b/cookbook/management/commands/rebuildindex.py new file mode 100644 index 00000000..425727df --- /dev/null +++ b/cookbook/management/commands/rebuildindex.py @@ -0,0 +1,31 @@ +from django.conf import settings +from django.contrib.postgres.search import SearchVector +from django.core.management.base import BaseCommand +from django_scopes import scopes_disabled +from django.utils import translation +from django.utils.translation import gettext_lazy as _ + +from cookbook.managers import DICTIONARY +from cookbook.models import Recipe, Step + + +# can be executed at the command line with 'python manage.py rebuildindex' +class Command(BaseCommand): + help = _('Rebuilds full text search index on Recipe') + + def handle(self, *args, **options): + if settings.DATABASES['default']['ENGINE'] not in ['django.db.backends.postgresql_psycopg2', 'django.db.backends.postgresql']: + self.stdout.write(self.style.WARNING(_('Only Postgress databases use full text search, no index to rebuild'))) + + try: + language = DICTIONARY.get(translation.get_language(), 'simple') + with scopes_disabled(): + Recipe.objects.all().update( + name_search_vector=SearchVector('name__unaccent', weight='A', config=language), + desc_search_vector=SearchVector('description__unaccent', weight='B', config=language) + ) + Step.objects.all().update(search_vector=SearchVector('instruction__unaccent', weight='B', config=language)) + + self.stdout.write(self.style.SUCCESS(_('Recipe index rebuild complete.'))) + except Exception: + self.stdout.write(self.style.ERROR(_('Recipe index rebuild failed.'))) diff --git a/cookbook/managers.py b/cookbook/managers.py new file mode 100644 index 00000000..76b01f96 --- /dev/null +++ b/cookbook/managers.py @@ -0,0 +1,69 @@ +from django.contrib.postgres.aggregates import StringAgg +from django.contrib.postgres.search import ( + SearchQuery, SearchRank, SearchVector, +) +from django.db import models +from django.db.models import Q +from django.utils import translation + +DICTIONARY = { + # TODO find custom dictionaries - maybe from here https://www.postgresql.org/message-id/CAF4Au4x6X_wSXFwsQYE8q5o0aQZANrvYjZJ8uOnsiHDnOVPPEg%40mail.gmail.com + # 'hy': 'Armenian', + # 'ca': 'Catalan', + # 'cs': 'Czech', + 'nl': 'dutch', + 'en': 'english', + 'fr': 'french', + 'de': 'german', + 'it': 'italian', + # 'lv': 'Latvian', + 'es': 'spanish', +} + + +# TODO add schedule index rebuild +class RecipeSearchManager(models.Manager): + def search(self, search_text, space): + language = DICTIONARY.get(translation.get_language(), 'simple') + search_query = SearchQuery( + search_text, + config=language, + search_type="websearch" + ) + search_vectors = ( + SearchVector('search_vector') + + SearchVector(StringAgg('steps__ingredients__food__name__unaccent', delimiter=' '), weight='B', config=language) + + SearchVector(StringAgg('keywords__name__unaccent', delimiter=' '), weight='B', config=language)) + search_rank = SearchRank(search_vectors, search_query) + # USING TRIGRAM BREAKS WEB SEARCH + # ADDING MULTIPLE TRIGRAMS CREATES DUPLICATE RESULTS + # DISTINCT NOT COMPAITBLE WITH ANNOTATE + # trigram_name = (TrigramSimilarity('name', search_text)) + # trigram_description = (TrigramSimilarity('description', search_text)) + # trigram_food = (TrigramSimilarity('steps__ingredients__food__name', search_text)) + # trigram_keyword = (TrigramSimilarity('keywords__name', search_text)) + # adding additional trigrams created duplicates + # + TrigramSimilarity('description', search_text) + # + TrigramSimilarity('steps__ingredients__food__name', search_text) + # + TrigramSimilarity('keywords__name', search_text) + return ( + self.get_queryset() + .annotate( + search=search_vectors, + rank=search_rank, + # trigram=trigram_name+trigram_description+trigram_food+trigram_keyword + # trigram_name=trigram_name, + # trigram_description=trigram_description, + # trigram_food=trigram_food, + # trigram_keyword=trigram_keyword + ) + .filter( + Q(search=search_query) + # | Q(trigram_name__gt=0.1) + # | Q(name__icontains=search_text) + # | Q(trigram_name__gt=0.2) + # | Q(trigram_description__gt=0.2) + # | Q(trigram_food__gt=0.2) + # | Q(trigram_keyword__gt=0.2) + ) + .order_by('-rank')) diff --git a/cookbook/migrations/0121_auto_20210518_1638.py b/cookbook/migrations/0121_auto_20210518_1638.py index 678bfd36..a67fc933 100644 --- a/cookbook/migrations/0121_auto_20210518_1638.py +++ b/cookbook/migrations/0121_auto_20210518_1638.py @@ -18,6 +18,6 @@ class Migration(migrations.Migration): migrations.AlterField( model_name='userpreference', name='use_fractions', - field=models.BooleanField(default=False), + field=models.BooleanField(default=True), ), ] diff --git a/cookbook/migrations/0124_alter_userpreference_theme.py b/cookbook/migrations/0124_alter_userpreference_theme.py index b7d7ebb3..6190a46f 100644 --- a/cookbook/migrations/0124_alter_userpreference_theme.py +++ b/cookbook/migrations/0124_alter_userpreference_theme.py @@ -15,4 +15,4 @@ class Migration(migrations.Migration): name='theme', field=models.CharField(choices=[('BOOTSTRAP', 'Bootstrap'), ('DARKLY', 'Darkly'), ('FLATLY', 'Flatly'), ('SUPERHERO', 'Superhero'), ('TANDOOR', 'Tandoor')], default='FLATLY', max_length=128), ), - ] + ] \ No newline at end of file diff --git a/cookbook/migrations/0143_build_full_text_index.py b/cookbook/migrations/0143_build_full_text_index.py new file mode 100644 index 00000000..ca58fb0e --- /dev/null +++ b/cookbook/migrations/0143_build_full_text_index.py @@ -0,0 +1,110 @@ +# Generated by Django 3.1.7 on 2021-04-07 20:00 +import annoying.fields +from django.conf import settings +from django.contrib.postgres.indexes import GinIndex +from django.contrib.postgres.search import SearchVectorField, SearchVector +from django.db import migrations, models +from django.db.models import deletion +from django_scopes import scopes_disabled +from django.utils import translation +from cookbook.managers import DICTIONARY +from cookbook.models import Recipe, Step, Index, PermissionModelMixin, nameSearchField, allSearchFields + + +def set_default_search_vector(apps, schema_editor): + if settings.DATABASES['default']['ENGINE'] not in ['django.db.backends.postgresql_psycopg2', 'django.db.backends.postgresql']: + return + language = DICTIONARY.get(translation.get_language(), 'simple') + with scopes_disabled(): + # TODO this approach doesn't work terribly well if multiple languages are in use + # I'm also uncertain about forcing unaccent here + Recipe.objects.all().update( + name_search_vector=SearchVector('name__unaccent', weight='A', config=language), + desc_search_vector=SearchVector('description__unaccent', weight='B', config=language) + ) + Step.objects.all().update(search_vector=SearchVector('instruction__unaccent', weight='B')) + + +class Migration(migrations.Migration): + dependencies = [ + ('cookbook', '0142_alter_userpreference_search_style'), + ] + operations = [ + migrations.AddField( + model_name='recipe', + name='desc_search_vector', + field=SearchVectorField(null=True), + ), + migrations.AddField( + model_name='recipe', + name='name_search_vector', + field=SearchVectorField(null=True), + ), + migrations.AddIndex( + model_name='recipe', + index=GinIndex(fields=['name_search_vector', 'desc_search_vector'], name='cookbook_re_name_se_bdf3ca_gin'), + ), + migrations.AddField( + model_name='step', + name='search_vector', + field=SearchVectorField(null=True), + ), + migrations.AddIndex( + model_name='step', + index=GinIndex(fields=['search_vector'], name='cookbook_st_search__2ef7fa_gin'), + ), + migrations.AddIndex( + model_name='cooklog', + index=Index(fields=['id', 'recipe', '-created_at', 'rating'], name='cookbook_co_id_37485a_idx'), + ), + migrations.AddIndex( + model_name='food', + index=Index(fields=['id', 'name'], name='cookbook_fo_id_22b733_idx'), + ), + migrations.AddIndex( + model_name='ingredient', + index=Index(fields=['id', 'food', 'unit'], name='cookbook_in_id_3368be_idx'), + ), + migrations.AddIndex( + model_name='keyword', + index=Index(fields=['id', 'name'], name='cookbook_ke_id_ebc03f_idx'), + ), + migrations.AddIndex( + model_name='recipe', + index=Index(fields=['id', 'name', 'description'], name='cookbook_re_id_e4c2d4_idx'), + ), + migrations.AddIndex( + model_name='recipebook', + index=Index(fields=['name', 'description'], name='cookbook_re_name_bbe446_idx'), + ), + migrations.AddIndex( + model_name='viewlog', + index=Index(fields=['recipe', '-created_at'], name='cookbook_vi_recipe__5cd178_idx'), + ), + migrations.CreateModel( + name='SearchFields', + fields=[ + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('name', models.CharField(max_length=32, unique=True)), + ('field', models.CharField(max_length=64, unique=True)), + ], + bases=(models.Model, PermissionModelMixin), + ), + migrations.CreateModel( + name='SearchPreference', + fields=[ + ('user', annoying.fields.AutoOneToOneField(on_delete=deletion.CASCADE, primary_key=True, serialize=False, to='auth.user')), + ('search', models.CharField(choices=[('plain', 'Simple'), ('phrase', 'Phrase'), ('websearch', 'Web'), ('raw', 'Raw')], default='plain', max_length=32)), + ('lookup', models.BooleanField(default=False)), + ('fulltext', models.ManyToManyField(blank=True, related_name='fulltext_fields', to='cookbook.SearchFields')), + ('icontains', models.ManyToManyField(blank=True, default=nameSearchField, related_name='icontains_fields', to='cookbook.SearchFields')), + ('istartswith', models.ManyToManyField(blank=True, related_name='istartswith_fields', to='cookbook.SearchFields')), + ('trigram', models.ManyToManyField(blank=True, related_name='trigram_fields', to='cookbook.SearchFields')), + ('unaccent', models.ManyToManyField(blank=True, default=allSearchFields, related_name='unaccent_fields', to='cookbook.SearchFields')), + ], + bases=(models.Model, PermissionModelMixin), + ), + migrations.RunPython( + set_default_search_vector + ), + ] diff --git a/cookbook/migrations/0144_create_searchfields.py b/cookbook/migrations/0144_create_searchfields.py new file mode 100644 index 00000000..dfbb486c --- /dev/null +++ b/cookbook/migrations/0144_create_searchfields.py @@ -0,0 +1,23 @@ +from cookbook.models import SearchFields +from django.db import migrations + + +def create_searchfields(apps, schema_editor): + SearchFields.objects.create(name='Name', field='name') + SearchFields.objects.create(name='Description', field='description') + SearchFields.objects.create(name='Instructions', field='steps__instruction') + SearchFields.objects.create(name='Ingredients', field='steps__ingredients__food__name') + SearchFields.objects.create(name='Keywords', field='keywords__name') + + +class Migration(migrations.Migration): + + dependencies = [ + ('cookbook', '0143_build_full_text_index'), + ] + + operations = [ + migrations.RunPython( + create_searchfields + ), + ] diff --git a/cookbook/migrations/0145_alter_userpreference_search_style.py b/cookbook/migrations/0145_alter_userpreference_search_style.py new file mode 100644 index 00000000..afcae5c1 --- /dev/null +++ b/cookbook/migrations/0145_alter_userpreference_search_style.py @@ -0,0 +1,18 @@ +# Generated by Django 3.2 on 2021-04-22 21:33 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('cookbook', '0144_create_searchfields'), + ] + + operations = [ + migrations.AlterField( + model_name='userpreference', + name='search_style', + field=models.CharField(choices=[('SMALL', 'Small'), ('LARGE', 'Large'), ('NEW', 'New')], default='LARGE', max_length=64), + ), + ] diff --git a/cookbook/migrations/0146_alter_userpreference_use_fractions.py b/cookbook/migrations/0146_alter_userpreference_use_fractions.py new file mode 100644 index 00000000..e913f893 --- /dev/null +++ b/cookbook/migrations/0146_alter_userpreference_use_fractions.py @@ -0,0 +1,18 @@ +# Generated by Django 3.2.4 on 2021-07-03 08:32 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('cookbook', '0145_alter_userpreference_search_style'), + ] + + operations = [ + migrations.AlterField( + model_name='userpreference', + name='use_fractions', + field=models.BooleanField(default=False), + ), + ] diff --git a/cookbook/migrations/0147_keyword_to_tree.py b/cookbook/migrations/0147_keyword_to_tree.py new file mode 100644 index 00000000..32967b5e --- /dev/null +++ b/cookbook/migrations/0147_keyword_to_tree.py @@ -0,0 +1,70 @@ +# Generated by Django 3.1.7 on 2021-03-30 19:42 + +from treebeard.mp_tree import MP_Node +from django.db import migrations, models +from django_scopes import scopes_disabled +# update if needed +steplen = MP_Node.steplen +alphabet = MP_Node.alphabet +node_order_by = ["name"] + + +def update_paths(apps, schema_editor): + with scopes_disabled(): + Node = apps.get_model("cookbook", "Keyword") + nodes = Node.objects.all().order_by(*node_order_by) + for i, node in enumerate(nodes, 1): + # for default values, this resolves to: "{:04d}".format(i) + node.path = f"{{:{alphabet[0]}{steplen}d}}".format(i) + if nodes: + Node.objects.bulk_update(nodes, ["path"]) + + +def backwards(apps, schema_editor): + """nothing to do""" + + +class Migration(migrations.Migration): + + dependencies = [ + ('cookbook', '0146_alter_userpreference_use_fractions'), + ] + + operations = [ + migrations.AddField( + model_name='keyword', + name='depth', + field=models.PositiveIntegerField(default=1), + preserve_default=False, + ), + migrations.AddField( + model_name='keyword', + name='numchild', + field=models.PositiveIntegerField(default=0), + ), + migrations.AddField( + model_name='keyword', + name='path', + field=models.CharField(default="", max_length=255, unique=False), + preserve_default=False, + ), + migrations.AlterField( + model_name='userpreference', + name='use_fractions', + field=models.BooleanField(default=True), + ), + migrations.RunPython(update_paths, backwards), + migrations.AlterField( + model_name="keyword", + name="path", + field=models.CharField(max_length=255, unique=True), + ), + migrations.AlterUniqueTogether( + name='keyword', + unique_together=set(), + ), + migrations.AddConstraint( + model_name='keyword', + constraint=models.UniqueConstraint(fields=('space', 'name'), name='unique_name_per_space'), + ), + ] diff --git a/cookbook/migrations/0148_auto_20210813_1829.py b/cookbook/migrations/0148_auto_20210813_1829.py new file mode 100644 index 00000000..ed6758d9 --- /dev/null +++ b/cookbook/migrations/0148_auto_20210813_1829.py @@ -0,0 +1,66 @@ +# Generated by Django 3.2.5 on 2021-08-13 16:29 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('cookbook', '0147_keyword_to_tree'), + ] + + operations = [ + migrations.RemoveConstraint( + model_name='keyword', + name='unique_name_per_space', + ), + migrations.AlterField( + model_name='userpreference', + name='use_fractions', + field=models.BooleanField(default=False), + ), + migrations.AlterUniqueTogether( + name='food', + unique_together=set(), + ), + migrations.AlterUniqueTogether( + name='recipebookentry', + unique_together=set(), + ), + migrations.AlterUniqueTogether( + name='supermarket', + unique_together=set(), + ), + migrations.AlterUniqueTogether( + name='supermarketcategory', + unique_together=set(), + ), + migrations.AlterUniqueTogether( + name='unit', + unique_together=set(), + ), + migrations.AddConstraint( + model_name='food', + constraint=models.UniqueConstraint(fields=('space', 'name'), name='f_unique_name_per_space'), + ), + migrations.AddConstraint( + model_name='keyword', + constraint=models.UniqueConstraint(fields=('space', 'name'), name='kw_unique_name_per_space'), + ), + migrations.AddConstraint( + model_name='recipebookentry', + constraint=models.UniqueConstraint(fields=('recipe', 'book'), name='rbe_unique_name_per_space'), + ), + migrations.AddConstraint( + model_name='supermarket', + constraint=models.UniqueConstraint(fields=('space', 'name'), name='sm_unique_name_per_space'), + ), + migrations.AddConstraint( + model_name='supermarketcategory', + constraint=models.UniqueConstraint(fields=('space', 'name'), name='smc_unique_name_per_space'), + ), + migrations.AddConstraint( + model_name='unit', + constraint=models.UniqueConstraint(fields=('space', 'name'), name='u_unique_name_per_space'), + ), + ] diff --git a/cookbook/migrations/0149_fix_leading_trailing_spaces.py b/cookbook/migrations/0149_fix_leading_trailing_spaces.py new file mode 100644 index 00000000..779de652 --- /dev/null +++ b/cookbook/migrations/0149_fix_leading_trailing_spaces.py @@ -0,0 +1,31 @@ +from django.db import migrations, models +from django_scopes import scopes_disabled +models = ["Keyword", "Food", "Unit"] + +def update_paths(apps, schema_editor): + with scopes_disabled(): + for model in models: + Node = apps.get_model("cookbook", model) + nodes = Node.objects.all().filter(name__startswith=" ") + for i in nodes: + i.name = "_" + i.name + i.save() + nodes = Node.objects.all().filter(name__endswith=" ") + for i in nodes: + i.name = i.name + "_" + i.save() + + +def backwards(apps, schema_editor): + """nothing to do""" + + +class Migration(migrations.Migration): + + dependencies = [ + ('cookbook', '0148_auto_20210813_1829'), + ] + + operations = [ + migrations.RunPython(update_paths, backwards), + ] diff --git a/cookbook/migrations/0150_food_to_tree.py b/cookbook/migrations/0150_food_to_tree.py new file mode 100644 index 00000000..1bcb933c --- /dev/null +++ b/cookbook/migrations/0150_food_to_tree.py @@ -0,0 +1,57 @@ +# Generated by Django 3.2.5 on 2021-08-14 15:40 + +from treebeard.mp_tree import MP_Node +from django.db import migrations, models +from django_scopes import scopes_disabled +# update if needed +steplen = MP_Node.steplen +alphabet = MP_Node.alphabet +node_order_by = ["name"] + + +def update_paths(apps, schema_editor): + with scopes_disabled(): + Node = apps.get_model("cookbook", "Food") + nodes = Node.objects.all().order_by(*node_order_by) + for i, node in enumerate(nodes, 1): + # for default values, this resolves to: "{:04d}".format(i) + node.path = f"{{:{alphabet[0]}{steplen}d}}".format(i) + if nodes: + Node.objects.bulk_update(nodes, ["path"]) + + +def backwards(apps, schema_editor): + """nothing to do""" + + +class Migration(migrations.Migration): + + dependencies = [ + ('cookbook', '0149_fix_leading_trailing_spaces'), + ] + + operations = [ + migrations.AddField( + model_name='food', + name='depth', + field=models.PositiveIntegerField(default=1), + preserve_default=False, + ), + migrations.AddField( + model_name='food', + name='numchild', + field=models.PositiveIntegerField(default=0), + ), + migrations.AddField( + model_name='food', + name='path', + field=models.CharField(default=0, max_length=255, unique=False), + preserve_default=False, + ), + migrations.RunPython(update_paths, backwards), + migrations.AlterField( + model_name="food", + name="path", + field=models.CharField(max_length=255, unique=True), + ), + ] diff --git a/cookbook/migrations/0151_auto_20210915_1037.py b/cookbook/migrations/0151_auto_20210915_1037.py new file mode 100644 index 00000000..4e3c9c3b --- /dev/null +++ b/cookbook/migrations/0151_auto_20210915_1037.py @@ -0,0 +1,40 @@ +# Generated by Django 3.2.7 on 2021-09-15 08:37 + +from django.db import migrations, models +import django.db.models.deletion + + +class Migration(migrations.Migration): + + dependencies = [ + ('cookbook', '0150_food_to_tree'), + ] + + operations = [ + migrations.RemoveIndex( + model_name='cooklog', + name='cookbook_co_id_37485a_idx', + ), + migrations.RemoveIndex( + model_name='viewlog', + name='cookbook_vi_recipe__5cd178_idx', + ), + migrations.AlterField( + model_name='ingredient', + name='food', + field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to='cookbook.food'), + ), + migrations.AlterField( + model_name='userpreference', + name='search_style', + field=models.CharField(choices=[('SMALL', 'Small'), ('LARGE', 'Large'), ('NEW', 'New')], default='NEW', max_length=64), + ), + migrations.AddIndex( + model_name='cooklog', + index=models.Index(fields=['id', 'recipe', '-created_at', 'rating', 'created_by'], name='cookbook_co_id_93d841_idx'), + ), + migrations.AddIndex( + model_name='viewlog', + index=models.Index(fields=['recipe', '-created_at', 'created_by'], name='cookbook_vi_recipe__1b051f_idx'), + ), + ] diff --git a/cookbook/migrations/0152_automation.py b/cookbook/migrations/0152_automation.py new file mode 100644 index 00000000..f383f6ab --- /dev/null +++ b/cookbook/migrations/0152_automation.py @@ -0,0 +1,35 @@ +# Generated by Django 3.2.7 on 2021-09-15 10:12 + +import cookbook.models +from django.conf import settings +from django.db import migrations, models +import django.db.models.deletion + + +class Migration(migrations.Migration): + + dependencies = [ + migrations.swappable_dependency(settings.AUTH_USER_MODEL), + ('cookbook', '0151_auto_20210915_1037'), + ] + + operations = [ + migrations.CreateModel( + name='Automation', + fields=[ + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('type', models.CharField(choices=[('FOOD_ALIAS', 'Food Alias'), ('UNIT_ALIAS', 'Unit Alias'), ('KEYWORD_ALIAS', 'Keyword Alias')], max_length=128)), + ('name', models.CharField(default='', max_length=128)), + ('description', models.TextField(blank=True, null=True)), + ('param_1', models.CharField(blank=True, max_length=128, null=True)), + ('param_2', models.CharField(blank=True, max_length=128, null=True)), + ('param_3', models.CharField(blank=True, max_length=128, null=True)), + ('disabled', models.BooleanField(default=False)), + ('updated_at', models.DateTimeField(auto_now=True)), + ('created_at', models.DateTimeField(auto_now_add=True)), + ('created_by', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL)), + ('space', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='cookbook.space')), + ], + bases=(models.Model, cookbook.models.PermissionModelMixin), + ), + ] diff --git a/cookbook/migrations/0153_auto_20210915_2327.py b/cookbook/migrations/0153_auto_20210915_2327.py new file mode 100644 index 00000000..3997e3c3 --- /dev/null +++ b/cookbook/migrations/0153_auto_20210915_2327.py @@ -0,0 +1,106 @@ +# Generated by Django 3.2.7 on 2021-09-15 21:27 + +import django.contrib.postgres.indexes +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('cookbook', '0152_automation'), + ] + + operations = [ + migrations.RemoveIndex( + model_name='cooklog', + name='cookbook_co_id_93d841_idx', + ), + migrations.RemoveIndex( + model_name='food', + name='cookbook_fo_id_22b733_idx', + ), + migrations.RemoveIndex( + model_name='ingredient', + name='cookbook_in_id_3368be_idx', + ), + migrations.RemoveIndex( + model_name='recipe', + name='cookbook_re_name_se_bdf3ca_gin', + ), + migrations.RemoveIndex( + model_name='recipe', + name='cookbook_re_id_e4c2d4_idx', + ), + migrations.RemoveIndex( + model_name='recipebook', + name='cookbook_re_name_bbe446_idx', + ), + migrations.AddIndex( + model_name='cooklog', + index=models.Index(fields=['id'], name='cookbook_co_id_553a6d_idx'), + ), + migrations.AddIndex( + model_name='cooklog', + index=models.Index(fields=['recipe'], name='cookbook_co_recipe__8ec719_idx'), + ), + migrations.AddIndex( + model_name='cooklog', + index=models.Index(fields=['-created_at'], name='cookbook_co_created_f6e244_idx'), + ), + migrations.AddIndex( + model_name='cooklog', + index=models.Index(fields=['rating'], name='cookbook_co_rating_aa7662_idx'), + ), + migrations.AddIndex( + model_name='cooklog', + index=models.Index(fields=['created_by'], name='cookbook_co_created_7ea086_idx'), + ), + migrations.AddIndex( + model_name='cooklog', + index=models.Index(fields=['created_by', 'rating'], name='cookbook_co_created_f5ccd7_idx'), + ), + migrations.AddIndex( + model_name='food', + index=models.Index(fields=['id'], name='cookbook_fo_id_3c379b_idx'), + ), + migrations.AddIndex( + model_name='food', + index=models.Index(fields=['name'], name='cookbook_fo_name_c848b6_idx'), + ), + migrations.AddIndex( + model_name='ingredient', + index=models.Index(fields=['id'], name='cookbook_in_id_2c1f57_idx'), + ), + migrations.AddIndex( + model_name='recipe', + index=django.contrib.postgres.indexes.GinIndex(fields=['name_search_vector'], name='cookbook_re_name_se_5dbbd5_gin'), + ), + migrations.AddIndex( + model_name='recipe', + index=django.contrib.postgres.indexes.GinIndex(fields=['desc_search_vector'], name='cookbook_re_desc_se_fdee30_gin'), + ), + migrations.AddIndex( + model_name='recipe', + index=models.Index(fields=['id'], name='cookbook_re_id_b2bdcf_idx'), + ), + migrations.AddIndex( + model_name='recipe', + index=models.Index(fields=['name'], name='cookbook_re_name_b8a027_idx'), + ), + migrations.AddIndex( + model_name='recipebook', + index=models.Index(fields=['name'], name='cookbook_re_name_94cc63_idx'), + ), + migrations.AddIndex( + model_name='viewlog', + index=models.Index(fields=['recipe'], name='cookbook_vi_recipe__ce995d_idx'), + ), + migrations.AddIndex( + model_name='viewlog', + index=models.Index(fields=['-created_at'], name='cookbook_vi_created_bd2b5f_idx'), + ), + migrations.AddIndex( + model_name='viewlog', + index=models.Index(fields=['created_by'], name='cookbook_vi_created_f9385c_idx'), + ), + ] diff --git a/cookbook/migrations/0154_auto_20210922_1705.py b/cookbook/migrations/0154_auto_20210922_1705.py new file mode 100644 index 00000000..bcbbfb77 --- /dev/null +++ b/cookbook/migrations/0154_auto_20210922_1705.py @@ -0,0 +1,23 @@ +# Generated by Django 3.2.7 on 2021-09-22 15:05 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('cookbook', '0153_auto_20210915_2327'), + ] + + operations = [ + migrations.AddField( + model_name='mealtype', + name='color', + field=models.CharField(blank=True, max_length=7, null=True), + ), + migrations.AddField( + model_name='mealtype', + name='icon', + field=models.CharField(blank=True, max_length=16, null=True), + ), + ] diff --git a/cookbook/migrations/0155_mealtype_default.py b/cookbook/migrations/0155_mealtype_default.py new file mode 100644 index 00000000..6519916e --- /dev/null +++ b/cookbook/migrations/0155_mealtype_default.py @@ -0,0 +1,18 @@ +# Generated by Django 3.2.7 on 2021-09-23 11:38 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('cookbook', '0154_auto_20210922_1705'), + ] + + operations = [ + migrations.AddField( + model_name='mealtype', + name='default', + field=models.BooleanField(blank=True, default=False), + ), + ] diff --git a/cookbook/migrations/0156_searchpreference_trigram_threshold.py b/cookbook/migrations/0156_searchpreference_trigram_threshold.py new file mode 100644 index 00000000..23d925ea --- /dev/null +++ b/cookbook/migrations/0156_searchpreference_trigram_threshold.py @@ -0,0 +1,18 @@ +# Generated by Django 3.2.7 on 2021-09-28 16:45 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('cookbook', '0155_mealtype_default'), + ] + + operations = [ + migrations.AddField( + model_name='searchpreference', + name='trigram_threshold', + field=models.DecimalField(decimal_places=2, default=0.1, max_digits=3), + ), + ] diff --git a/cookbook/migrations/0157_alter_searchpreference_trigram.py b/cookbook/migrations/0157_alter_searchpreference_trigram.py new file mode 100644 index 00000000..7f5f5531 --- /dev/null +++ b/cookbook/migrations/0157_alter_searchpreference_trigram.py @@ -0,0 +1,33 @@ +# Generated by Django 3.2.7 on 2021-09-29 06:37 +from django_scopes import scopes_disabled + +from django.db import migrations, models +from cookbook.models import nameSearchField + + +def add_default_trigram(apps, schema_editor): + with scopes_disabled(): + SearchFields = apps.get_model('cookbook', 'SearchFields') + SearchPreference = apps.get_model('cookbook', 'SearchPreference') + + name_field = SearchFields.objects.get(name='Name') + + for p in SearchPreference.objects.all(): + if not p.trigram.all() and p.search == 'plain': + p.trigram.add(name_field) + p.save() + + +class Migration(migrations.Migration): + dependencies = [ + ('cookbook', '0156_searchpreference_trigram_threshold'), + ] + + operations = [ + migrations.AlterField( + model_name='searchpreference', + name='trigram', + field=models.ManyToManyField(blank=True, default=nameSearchField, related_name='trigram_fields', to='cookbook.SearchFields'), + ), + migrations.RunPython(add_default_trigram), + ] diff --git a/cookbook/models.py b/cookbook/models.py index 091321a7..228c45be 100644 --- a/cookbook/models.py +++ b/cookbook/models.py @@ -7,16 +7,19 @@ from datetime import date, timedelta from annoying.fields import AutoOneToOneField from django.contrib import auth from django.contrib.auth.models import Group, User +from django.contrib.postgres.indexes import GinIndex +from django.contrib.postgres.search import SearchVectorField from django.core.files.uploadedfile import UploadedFile, InMemoryUploadedFile from django.core.validators import MinLengthValidator -from django.db import models +from django.db import models, IntegrityError +from django.db.models import Index, ProtectedError from django.utils import timezone from django.utils.translation import gettext as _ +from treebeard.mp_tree import MP_Node, MP_NodeManager +from django_scopes import ScopedManager, scopes_disabled from django_prometheus.models import ExportModelOperationsMixin -from django_scopes import ScopedManager - from recipes.settings import (COMMENT_PREF_DEFAULT, FRACTION_PREF_DEFAULT, - STICKY_NAV_PREF_DEFAULT) + STICKY_NAV_PREF_DEFAULT, SORT_TREE_BY_NAME) def get_user_name(self): @@ -33,8 +36,82 @@ def get_model_name(model): return ('_'.join(re.findall('[A-Z][^A-Z]*', model.__name__))).lower() -class PermissionModelMixin: +class TreeManager(MP_NodeManager): + # model.Manager get_or_create() is not compatible with MP_Tree + def get_or_create(self, **kwargs): + kwargs['name'] = kwargs['name'].strip() + try: + return self.get(name__exact=kwargs['name'], space=kwargs['space']), False + except self.model.DoesNotExist: + with scopes_disabled(): + try: + return self.model.add_root(**kwargs), True + except IntegrityError as e: + if 'Key (path)' in e.args[0]: + self.model.fix_tree(fix_paths=True) + return self.model.add_root(**kwargs), True + +class TreeModel(MP_Node): + _full_name_separator = ' > ' + + def __str__(self): + if self.icon: + return f"{self.icon} {self.name}" + else: + return f"{self.name}" + + @property + def parent(self): + parent = self.get_parent() + if parent: + return self.get_parent().id + return None + + @property + def full_name(self): + """ + Returns a string representation of a tree node and it's ancestors, + e.g. 'Cuisine > Asian > Chinese > Catonese'. + """ + names = [node.name for node in self.get_ancestors_and_self()] + return self._full_name_separator.join(names) + + def get_ancestors_and_self(self): + """ + Gets ancestors and includes itself. Use treebeard's get_ancestors + if you don't want to include the node itself. It's a separate + function as it's commonly used in templates. + """ + if self.is_root(): + return [self] + return list(self.get_ancestors()) + [self] + + def get_descendants_and_self(self): + """ + Gets descendants and includes itself. Use treebeard's get_descendants + if you don't want to include the node itself. It's a separate + function as it's commonly used in templates. + """ + return self.get_tree(self) + + def has_children(self): + return self.get_num_children() > 0 + + def get_num_children(self): + return self.get_children().count() + + # use self.objects.get_or_create() instead + @classmethod + def add_root(self, **kwargs): + with scopes_disabled(): + return super().add_root(**kwargs) + + class Meta: + abstract = True + + +class PermissionModelMixin: @staticmethod def get_space_key(): return ('space',) @@ -107,7 +184,8 @@ class UserPreference(models.Model, PermissionModelMixin): COLORS = ( (PRIMARY, 'Primary'), (SECONDARY, 'Secondary'), - (SUCCESS, 'Success'), (INFO, 'Info'), + (SUCCESS, 'Success'), + (INFO, 'Info'), (WARNING, 'Warning'), (DANGER, 'Danger'), (LIGHT, 'Light'), @@ -212,7 +290,9 @@ class SupermarketCategory(models.Model, PermissionModelMixin): return self.name class Meta: - unique_together = (('space', 'name'),) + constraints = [ + models.UniqueConstraint(fields=['space', 'name'], name='smc_unique_name_per_space') + ] class Supermarket(models.Model, PermissionModelMixin): @@ -227,7 +307,9 @@ class Supermarket(models.Model, PermissionModelMixin): return self.name class Meta: - unique_together = (('space', 'name'),) + constraints = [ + models.UniqueConstraint(fields=['space', 'name'], name='sm_unique_name_per_space') + ] class SupermarketCategoryRelation(models.Model, PermissionModelMixin): @@ -257,7 +339,9 @@ class SyncLog(models.Model, PermissionModelMixin): return f"{self.created_at}:{self.sync} - {self.status}" -class Keyword(ExportModelOperationsMixin('keyword'), models.Model, PermissionModelMixin): +class Keyword(ExportModelOperationsMixin('keyword'), TreeModel, PermissionModelMixin): + if SORT_TREE_BY_NAME: + node_order_by = ['name'] name = models.CharField(max_length=64) icon = models.CharField(max_length=16, blank=True, null=True) description = models.TextField(default="", blank=True) @@ -265,16 +349,13 @@ class Keyword(ExportModelOperationsMixin('keyword'), models.Model, PermissionMod updated_at = models.DateTimeField(auto_now=True) space = models.ForeignKey(Space, on_delete=models.CASCADE) - objects = ScopedManager(space='space') - - def __str__(self): - if self.icon: - return f"{self.icon} {self.name}" - else: - return f"{self.name}" + objects = ScopedManager(space='space', _manager_class=TreeManager) class Meta: - unique_together = (('space', 'name'),) + constraints = [ + models.UniqueConstraint(fields=['space', 'name'], name='kw_unique_name_per_space') + ] + indexes = (Index(fields=['id', 'name']),) class Unit(ExportModelOperationsMixin('unit'), models.Model, PermissionModelMixin): @@ -288,10 +369,14 @@ class Unit(ExportModelOperationsMixin('unit'), models.Model, PermissionModelMixi return self.name class Meta: - unique_together = (('space', 'name'),) + constraints = [ + models.UniqueConstraint(fields=['space', 'name'], name='u_unique_name_per_space') + ] -class Food(ExportModelOperationsMixin('food'), models.Model, PermissionModelMixin): +class Food(ExportModelOperationsMixin('food'), TreeModel, PermissionModelMixin): + if SORT_TREE_BY_NAME: + node_order_by = ['name'] name = models.CharField(max_length=128, validators=[MinLengthValidator(1)]) recipe = models.ForeignKey('Recipe', null=True, blank=True, on_delete=models.SET_NULL) supermarket_category = models.ForeignKey(SupermarketCategory, null=True, blank=True, on_delete=models.SET_NULL) @@ -299,17 +384,30 @@ class Food(ExportModelOperationsMixin('food'), models.Model, PermissionModelMixi description = models.TextField(default='', blank=True) space = models.ForeignKey(Space, on_delete=models.CASCADE) - objects = ScopedManager(space='space') + objects = ScopedManager(space='space', _manager_class=TreeManager) def __str__(self): return self.name + def delete(self): + if self.ingredient_set.all().exclude(step=None).count() > 0: + raise ProtectedError(self.name + _(" is part of a recipe step and cannot be deleted"), self.ingredient_set.all().exclude(step=None)) + else: + return super().delete() + class Meta: - unique_together = (('space', 'name'),) + constraints = [ + models.UniqueConstraint(fields=['space', 'name'], name='f_unique_name_per_space') + ] + indexes = ( + Index(fields=['id']), + Index(fields=['name']), + ) class Ingredient(ExportModelOperationsMixin('ingredient'), models.Model, PermissionModelMixin): - food = models.ForeignKey(Food, on_delete=models.PROTECT, null=True, blank=True) + # a pre-delete signal on Food checks if the Ingredient is part of a Step, if it is raises a ProtectedError instead of cascading the delete + food = models.ForeignKey(Food, on_delete=models.CASCADE, null=True, blank=True) unit = models.ForeignKey(Unit, on_delete=models.PROTECT, null=True, blank=True) amount = models.DecimalField(default=0, decimal_places=16, max_digits=32) note = models.CharField(max_length=256, null=True, blank=True) @@ -325,6 +423,9 @@ class Ingredient(ExportModelOperationsMixin('ingredient'), models.Model, Permiss class Meta: ordering = ['order', 'pk'] + indexes = ( + Index(fields=['id']), + ) class Step(ExportModelOperationsMixin('step'), models.Model, PermissionModelMixin): @@ -345,6 +446,7 @@ class Step(ExportModelOperationsMixin('step'), models.Model, PermissionModelMixi order = models.IntegerField(default=0) file = models.ForeignKey('UserFile', on_delete=models.PROTECT, null=True, blank=True) show_as_header = models.BooleanField(default=True) + search_vector = SearchVectorField(null=True) step_recipe = models.ForeignKey('Recipe', default=None, blank=True, null=True, on_delete=models.PROTECT) space = models.ForeignKey(Space, on_delete=models.CASCADE) @@ -356,6 +458,7 @@ class Step(ExportModelOperationsMixin('step'), models.Model, PermissionModelMixi class Meta: ordering = ['order', 'pk'] + indexes = (GinIndex(fields=["search_vector"]),) class NutritionInformation(models.Model, PermissionModelMixin): @@ -401,12 +504,23 @@ class Recipe(ExportModelOperationsMixin('recipe'), models.Model, PermissionModel created_at = models.DateTimeField(auto_now_add=True) updated_at = models.DateTimeField(auto_now=True) + name_search_vector = SearchVectorField(null=True) + desc_search_vector = SearchVectorField(null=True) space = models.ForeignKey(Space, on_delete=models.CASCADE) + objects = ScopedManager(space='space') def __str__(self): return self.name + class Meta(): + indexes = ( + GinIndex(fields=["name_search_vector"]), + GinIndex(fields=["desc_search_vector"]), + Index(fields=['id']), + Index(fields=['name']), + ) + class Comment(ExportModelOperationsMixin('comment'), models.Model, PermissionModelMixin): recipe = models.ForeignKey(Recipe, on_delete=models.CASCADE) @@ -455,6 +569,9 @@ class RecipeBook(ExportModelOperationsMixin('book'), models.Model, PermissionMod def __str__(self): return self.name + class Meta(): + indexes = (Index(fields=['name']),) + class RecipeBookEntry(ExportModelOperationsMixin('book_entry'), models.Model, PermissionModelMixin): recipe = models.ForeignKey(Recipe, on_delete=models.CASCADE) @@ -476,12 +593,17 @@ class RecipeBookEntry(ExportModelOperationsMixin('book_entry'), models.Model, Pe return None class Meta: - unique_together = (('recipe', 'book'),) + constraints = [ + models.UniqueConstraint(fields=['recipe', 'book'], name='rbe_unique_name_per_space') + ] class MealType(models.Model, PermissionModelMixin): name = models.CharField(max_length=128) order = models.IntegerField(default=0) + icon = models.CharField(max_length=16, blank=True, null=True) + color = models.CharField(max_length=7, blank=True, null=True) + default = models.BooleanField(default=False, blank=True) created_by = models.ForeignKey(User, on_delete=models.CASCADE) space = models.ForeignKey(Space, on_delete=models.CASCADE) @@ -651,6 +773,16 @@ class CookLog(ExportModelOperationsMixin('cook_log'), models.Model, PermissionMo def __str__(self): return self.recipe.name + class Meta(): + indexes = ( + Index(fields=['id']), + Index(fields=['recipe']), + Index(fields=['-created_at']), + Index(fields=['rating']), + Index(fields=['created_by']), + Index(fields=['created_by', 'rating']), + ) + class ViewLog(ExportModelOperationsMixin('view_log'), models.Model, PermissionModelMixin): recipe = models.ForeignKey(Recipe, on_delete=models.CASCADE) @@ -663,6 +795,14 @@ class ViewLog(ExportModelOperationsMixin('view_log'), models.Model, PermissionMo def __str__(self): return self.recipe.name + class Meta(): + indexes = ( + Index(fields=['recipe']), + Index(fields=['-created_at']), + Index(fields=['created_by']), + Index(fields=['recipe', '-created_at', 'created_by']), + ) + class ImportLog(models.Model, PermissionModelMixin): type = models.CharField(max_length=32) @@ -693,6 +833,54 @@ class BookmarkletImport(ExportModelOperationsMixin('bookmarklet_import'), models space = models.ForeignKey(Space, on_delete=models.CASCADE) +# field names used to configure search behavior - all data populated during data migration +# other option is to use a MultiSelectField from https://github.com/goinnn/django-multiselectfield +class SearchFields(models.Model, PermissionModelMixin): + name = models.CharField(max_length=32, unique=True) + field = models.CharField(max_length=64, unique=True) + + def __str__(self): + return _(self.name) + + @staticmethod + def get_name(self): + return _(self.name) + + +def allSearchFields(): + return list(SearchFields.objects.values_list('id', flat=True)) + + +def nameSearchField(): + return [SearchFields.objects.get(name='Name').id] + + +class SearchPreference(models.Model, PermissionModelMixin): + # Search Style (validation parsleyjs.org) + # phrase or plain or raw (websearch and trigrams are mutually exclusive) + SIMPLE = 'plain' + PHRASE = 'phrase' + WEB = 'websearch' + RAW = 'raw' + SEARCH_STYLE = ( + (SIMPLE, _('Simple')), + (PHRASE, _('Phrase')), + (WEB, _('Web')), + (RAW, _('Raw')) + ) + + user = AutoOneToOneField(User, on_delete=models.CASCADE, primary_key=True) + search = models.CharField(choices=SEARCH_STYLE, max_length=32, default=SIMPLE) + + lookup = models.BooleanField(default=False) + unaccent = models.ManyToManyField(SearchFields, related_name="unaccent_fields", blank=True, default=allSearchFields) + icontains = models.ManyToManyField(SearchFields, related_name="icontains_fields", blank=True, default=nameSearchField) + istartswith = models.ManyToManyField(SearchFields, related_name="istartswith_fields", blank=True) + trigram = models.ManyToManyField(SearchFields, related_name="trigram_fields", blank=True, default=nameSearchField) + fulltext = models.ManyToManyField(SearchFields, related_name="fulltext_fields", blank=True) + trigram_threshold = models.DecimalField(default=0.1, decimal_places=2, max_digits=3) + + class UserFile(ExportModelOperationsMixin('user_files'), models.Model, PermissionModelMixin): name = models.CharField(max_length=128) file = models.FileField(upload_to='files/') @@ -708,3 +896,27 @@ class UserFile(ExportModelOperationsMixin('user_files'), models.Model, Permissio self.file.name = f'{uuid.uuid4()}' + pathlib.Path(self.file.name).suffix self.file_size_kb = round(self.file.size / 1000) super(UserFile, self).save(*args, **kwargs) + + +class Automation(ExportModelOperationsMixin('automations'), models.Model, PermissionModelMixin): + FOOD_ALIAS = 'FOOD_ALIAS' + UNIT_ALIAS = 'UNIT_ALIAS' + KEYWORD_ALIAS = 'KEYWORD_ALIAS' + + type = models.CharField(max_length=128, + choices=((FOOD_ALIAS, _('Food Alias')), (UNIT_ALIAS, _('Unit Alias')), (KEYWORD_ALIAS, _('Keyword Alias')),)) + name = models.CharField(max_length=128, default='') + description = models.TextField(blank=True, null=True) + + param_1 = models.CharField(max_length=128, blank=True, null=True) + param_2 = models.CharField(max_length=128, blank=True, null=True) + param_3 = models.CharField(max_length=128, blank=True, null=True) + + disabled = models.BooleanField(default=False) + + updated_at = models.DateTimeField(auto_now=True) + created_at = models.DateTimeField(auto_now_add=True) + created_by = models.ForeignKey(User, on_delete=models.CASCADE) + + objects = ScopedManager(space='space') + space = models.ForeignKey(Space, on_delete=models.CASCADE) diff --git a/cookbook/provider/local.py b/cookbook/provider/local.py index d24c4eb1..9f3d2100 100644 --- a/cookbook/provider/local.py +++ b/cookbook/provider/local.py @@ -1,6 +1,5 @@ import io import os -import tempfile from datetime import datetime from os import listdir from os.path import isfile, join diff --git a/cookbook/schemas.py b/cookbook/schemas.py new file mode 100644 index 00000000..f1553d9c --- /dev/null +++ b/cookbook/schemas.py @@ -0,0 +1,112 @@ +from rest_framework.schemas.openapi import AutoSchema +from rest_framework.schemas.utils import is_list_view + + +# TODO move to separate class to cleanup +class RecipeSchema(AutoSchema): + def get_path_parameters(self, path, method): + if not is_list_view(path, method, self.view): + return super(RecipeSchema, self).get_path_parameters(path, method) + + parameters = super().get_path_parameters(path, method) + parameters.append({ + "name": 'query', "in": "query", "required": False, + "description": 'Query string matched (fuzzy) against recipe name. In the future also fulltext search.', + 'schema': {'type': 'string', }, + }) + parameters.append({ + "name": 'keywords', "in": "query", "required": False, + "description": 'Id of keyword a recipe should have. For multiple repeat parameter.', + 'schema': {'type': 'string', }, + }) + parameters.append({ + "name": 'foods', "in": "query", "required": False, + "description": 'Id of food a recipe should have. For multiple repeat parameter.', + 'schema': {'type': 'string', }, + }) + parameters.append({ + "name": 'units', "in": "query", "required": False, + "description": 'Id of unit a recipe should have.', + 'schema': {'type': 'int', }, + }) + parameters.append({ + "name": 'rating', "in": "query", "required": False, + "description": 'Id of unit a recipe should have.', + 'schema': {'type': 'int', }, + }) + parameters.append({ + "name": 'books', "in": "query", "required": False, + "description": 'Id of book a recipe should have. For multiple repeat parameter.', + 'schema': {'type': 'string', }, + }) + parameters.append({ + "name": 'keywords_or', "in": "query", "required": False, + "description": 'If recipe should have all (AND) or any (OR) of the provided keywords.', + 'schema': {'type': 'string', }, + }) + parameters.append({ + "name": 'foods_or', "in": "query", "required": False, + "description": 'If recipe should have all (AND) or any (OR) any of the provided foods.', + 'schema': {'type': 'string', }, + }) + parameters.append({ + "name": 'books_or', "in": "query", "required": False, + "description": 'If recipe should be in all (AND) or any (OR) any of the provided books.', + 'schema': {'type': 'string', }, + }) + parameters.append({ + "name": 'internal', "in": "query", "required": False, + "description": 'true or false. If only internal recipes should be returned or not.', + 'schema': {'type': 'string', }, + }) + parameters.append({ + "name": 'random', "in": "query", "required": False, + "description": 'true or false. returns the results in randomized order.', + 'schema': {'type': 'string', }, + }) + parameters.append({ + "name": 'new', "in": "query", "required": False, + "description": 'true or false. returns new results first in search results', + 'schema': {'type': 'string', }, + }) + return parameters + + +class TreeSchema(AutoSchema): + def get_path_parameters(self, path, method): + if not is_list_view(path, method, self.view): + return super(TreeSchema, self).get_path_parameters(path, method) + + api_name = path.split('/')[2] + parameters = super().get_path_parameters(path, method) + parameters.append({ + "name": 'query', "in": "query", "required": False, + "description": 'Query string matched against {} name.'.format(api_name), + 'schema': {'type': 'string', }, + }) + parameters.append({ + "name": 'root', "in": "query", "required": False, + "description": 'Return first level children of {obj} with ID [int]. Integer 0 will return root {obj}s.'.format(obj=api_name), + 'schema': {'type': 'int', }, + }) + parameters.append({ + "name": 'tree', "in": "query", "required": False, + "description": 'Return all self and children of {} with ID [int].'.format(api_name), + 'schema': {'type': 'int', }, + }) + return parameters + + +class FilterSchema(AutoSchema): + def get_path_parameters(self, path, method): + if not is_list_view(path, method, self.view): + return super(FilterSchema, self).get_path_parameters(path, method) + + api_name = path.split('/')[2] + parameters = super().get_path_parameters(path, method) + parameters.append({ + "name": 'query', "in": "query", "required": False, + "description": 'Query string matched against {} name.'.format(api_name), + 'schema': {'type': 'string', }, + }) + return parameters diff --git a/cookbook/serializer.py b/cookbook/serializer.py index 6727f5a7..4ca666d1 100644 --- a/cookbook/serializer.py +++ b/cookbook/serializer.py @@ -1,8 +1,11 @@ +import random +from datetime import timedelta from decimal import Decimal from gettext import gettext as _ - from django.contrib.auth.models import User -from django.db.models import QuerySet, Sum, Avg +from django.db.models import Avg, QuerySet, Sum +from django.urls import reverse +from django.utils import timezone from drf_writable_nested import (UniqueFieldsMixin, WritableNestedModelSerializer) from rest_framework import serializers @@ -14,10 +17,49 @@ from cookbook.models import (Comment, CookLog, Food, Ingredient, Keyword, ShareLink, ShoppingList, ShoppingListEntry, ShoppingListRecipe, Step, Storage, Sync, SyncLog, Unit, UserPreference, ViewLog, SupermarketCategory, Supermarket, - SupermarketCategoryRelation, ImportLog, BookmarkletImport, UserFile) + SupermarketCategoryRelation, ImportLog, BookmarkletImport, UserFile, Automation) from cookbook.templatetags.custom_tags import markdown +class ExtendedRecipeMixin(serializers.ModelSerializer): + # adds image and recipe count to serializer when query param extended=1 + image = serializers.SerializerMethodField('get_image') + numrecipe = serializers.SerializerMethodField('count_recipes') + recipe_filter = None + + def get_fields(self, *args, **kwargs): + fields = super().get_fields(*args, **kwargs) + try: + api_serializer = self.context['view'].serializer_class + except KeyError: + api_serializer = None + # extended values are computationally expensive and not needed in normal circumstances + if self.context.get('request', False) and bool(int(self.context['request'].query_params.get('extended', False))) and self.__class__ == api_serializer: + return fields + else: + del fields['image'] + del fields['numrecipe'] + return fields + + def get_image(self, obj): + # TODO add caching + recipes = Recipe.objects.filter(**{self.recipe_filter: obj}, space=obj.space).exclude(image__isnull=True).exclude(image__exact='') + try: + if recipes.count() == 0 and obj.has_children(): + obj__in = self.recipe_filter + '__in' + recipes = Recipe.objects.filter(**{obj__in: obj.get_descendants()}, space=obj.space).exclude(image__isnull=True).exclude(image__exact='') # if no recipes found - check whole tree + except AttributeError: + # probably not a tree + pass + if recipes.count() != 0: + return random.choice(recipes).image.url + else: + return None + + def count_recipes(self, obj): + return Recipe.objects.filter(**{self.recipe_filter: obj}, space=obj.space).count() + + class CustomDecimalField(serializers.Field): """ Custom decimal field to normalize useless decimal places @@ -25,10 +67,9 @@ class CustomDecimalField(serializers.Field): """ def to_representation(self, value): - if isinstance(value, Decimal): - return value.normalize() - else: - return Decimal(value).normalize() + if not isinstance(value, Decimal): + value = Decimal(value) + return round(value, 2).normalize() def to_internal_value(self, data): if type(data) == int or type(data) == float: @@ -45,7 +86,7 @@ class CustomDecimalField(serializers.Field): class SpaceFilterSerializer(serializers.ListSerializer): def to_representation(self, data): - if type(data) == QuerySet and data.query.is_sliced: + if (type(data) == QuerySet and data.query.is_sliced): # if query is sliced it came from api request not nested serializer return super().to_representation(data) if self.child.Meta.model == User: @@ -61,7 +102,7 @@ class SpacedModelSerializer(serializers.ModelSerializer): return super().create(validated_data) -class MealTypeSerializer(SpacedModelSerializer): +class MealTypeSerializer(SpacedModelSerializer, WritableNestedModelSerializer): def create(self, validated_data): validated_data['created_by'] = self.context['request'].user @@ -70,7 +111,7 @@ class MealTypeSerializer(SpacedModelSerializer): class Meta: list_serializer_class = SpaceFilterSerializer model = MealType - fields = ('id', 'name', 'order', 'created_by') + fields = ('id', 'name', 'order', 'icon', 'color', 'default', 'created_by') read_only_fields = ('created_by',) @@ -105,16 +146,20 @@ class UserPreferenceSerializer(serializers.ModelSerializer): class UserFileSerializer(serializers.ModelSerializer): def check_file_limit(self, validated_data): - if self.context['request'].space.max_file_storage_mb == -1: - raise ValidationError(_('File uploads are not enabled for this Space.')) + if 'file' in validated_data: + if self.context['request'].space.max_file_storage_mb == -1: + raise ValidationError(_('File uploads are not enabled for this Space.')) - try: - current_file_size_mb = UserFile.objects.filter(space=self.context['request'].space).aggregate(Sum('file_size_kb'))['file_size_kb__sum'] / 1000 - except TypeError: - current_file_size_mb = 0 + try: + current_file_size_mb = \ + UserFile.objects.filter(space=self.context['request'].space).aggregate(Sum('file_size_kb'))[ + 'file_size_kb__sum'] / 1000 + except TypeError: + current_file_size_mb = 0 - if (validated_data['file'].size / 1000 / 1000 + current_file_size_mb - 5) > self.context['request'].space.max_file_storage_mb != 0: - raise ValidationError(_('You have reached your file upload limit.')) + if ((validated_data['file'].size / 1000 / 1000 + current_file_size_mb - 5) + > self.context['request'].space.max_file_storage_mb != 0): + raise ValidationError(_('You have reached your file upload limit.')) def create(self, validated_data): self.check_file_limit(validated_data) @@ -198,28 +243,63 @@ class KeywordLabelSerializer(serializers.ModelSerializer): read_only_fields = ('id', 'label') -class KeywordSerializer(UniqueFieldsMixin, serializers.ModelSerializer): +class KeywordSerializer(UniqueFieldsMixin, ExtendedRecipeMixin): label = serializers.SerializerMethodField('get_label') + # image = serializers.SerializerMethodField('get_image') + # numrecipe = serializers.SerializerMethodField('count_recipes') + recipe_filter = 'keywords' def get_label(self, obj): return str(obj) + # def get_image(self, obj): + # recipes = obj.recipe_set.all().filter(space=obj.space).exclude(image__isnull=True).exclude(image__exact='') + # if recipes.count() == 0 and obj.has_children(): + # recipes = Recipe.objects.filter(keywords__in=obj.get_descendants(), space=obj.space).exclude(image__isnull=True).exclude(image__exact='') # if no recipes found - check whole tree + # if recipes.count() != 0: + # return random.choice(recipes).image.url + # else: + # return None + + # def count_recipes(self, obj): + # return obj.recipe_set.filter(space=self.context['request'].space).all().count() + def create(self, validated_data): - obj, created = Keyword.objects.get_or_create(name=validated_data['name'].strip(), space=self.context['request'].space) + # since multi select tags dont have id's + # duplicate names might be routed to create + validated_data['name'] = validated_data['name'].strip() + validated_data['space'] = self.context['request'].space + obj, created = Keyword.objects.get_or_create(**validated_data) return obj class Meta: - list_serializer_class = SpaceFilterSerializer model = Keyword - fields = ('id', 'name', 'icon', 'label', 'description', 'created_at', 'updated_at') - - read_only_fields = ('id',) + fields = ( + 'id', 'name', 'icon', 'label', 'description', 'image', 'parent', 'numchild', 'numrecipe', 'created_at', + 'updated_at') + read_only_fields = ('id', 'numchild', 'parent', 'image') -class UnitSerializer(UniqueFieldsMixin, serializers.ModelSerializer): +class UnitSerializer(UniqueFieldsMixin, ExtendedRecipeMixin): + # image = serializers.SerializerMethodField('get_image') + # numrecipe = serializers.SerializerMethodField('count_recipes') + recipe_filter = 'steps__ingredients__unit' + + # def get_image(self, obj): + # recipes = Recipe.objects.filter(steps__ingredients__unit=obj, space=obj.space).exclude(image__isnull=True).exclude(image__exact='') + + # if recipes.count() != 0: + # return random.choice(recipes).image.url + # else: + # return None + + # def count_recipes(self, obj): + # return Recipe.objects.filter(steps__ingredients__unit=obj, space=obj.space).count() def create(self, validated_data): - obj, created = Unit.objects.get_or_create(name=validated_data['name'].strip(), space=self.context['request'].space) + validated_data['name'] = validated_data['name'].strip() + validated_data['space'] = self.context['request'].space + obj, created = Unit.objects.get_or_create(**validated_data) return obj def update(self, instance, validated_data): @@ -228,14 +308,16 @@ class UnitSerializer(UniqueFieldsMixin, serializers.ModelSerializer): class Meta: model = Unit - fields = ('id', 'name', 'description') - read_only_fields = ('id',) + fields = ('id', 'name', 'description', 'numrecipe', 'image') + read_only_fields = ('id', 'numrecipe', 'image') class SupermarketCategorySerializer(UniqueFieldsMixin, WritableNestedModelSerializer): def create(self, validated_data): - obj, created = SupermarketCategory.objects.get_or_create(name=validated_data['name'], space=self.context['request'].space) + validated_data['name'] = validated_data['name'].strip() + validated_data['space'] = self.context['request'].space + obj, created = SupermarketCategory.objects.get_or_create(**validated_data) return obj def update(self, instance, validated_data): @@ -243,7 +325,7 @@ class SupermarketCategorySerializer(UniqueFieldsMixin, WritableNestedModelSerial class Meta: model = SupermarketCategory - fields = ('id', 'name') + fields = ('id', 'name', 'description') class SupermarketCategoryRelationSerializer(WritableNestedModelSerializer): @@ -259,14 +341,55 @@ class SupermarketSerializer(UniqueFieldsMixin, SpacedModelSerializer): class Meta: model = Supermarket - fields = ('id', 'name', 'category_to_supermarket') + fields = ('id', 'name', 'description', 'category_to_supermarket') -class FoodSerializer(UniqueFieldsMixin, WritableNestedModelSerializer): +class RecipeSimpleSerializer(serializers.ModelSerializer): + url = serializers.SerializerMethodField('get_url') + + def get_url(self, obj): + return reverse('view_recipe', args=[obj.id]) + + class Meta: + model = Recipe + fields = ('id', 'name', 'url') + read_only_fields = ['id', 'name', 'url'] + + +class FoodSerializer(UniqueFieldsMixin, WritableNestedModelSerializer, ExtendedRecipeMixin): supermarket_category = SupermarketCategorySerializer(allow_null=True, required=False) + recipe = RecipeSimpleSerializer(allow_null=True, required=False) + # image = serializers.SerializerMethodField('get_image') + # numrecipe = serializers.SerializerMethodField('count_recipes') + recipe_filter = 'steps__ingredients__food' + + # def get_image(self, obj): + # if obj.recipe and obj.space == obj.recipe.space: + # if obj.recipe.image and obj.recipe.image != '': + # return obj.recipe.image.url + # # if food is not also a recipe, look for recipe images that use the food + # recipes = Recipe.objects.filter(steps__ingredients__food=obj, space=obj.space).exclude(image__isnull=True).exclude(image__exact='') + # # if no recipes found - check whole tree + # if recipes.count() == 0 and obj.has_children(): + # recipes = Recipe.objects.filter(steps__ingredients__food__in=obj.get_descendants(), space=obj.space).exclude(image__isnull=True).exclude(image__exact='') + + # if recipes.count() != 0: + # return random.choice(recipes).image.url + # else: + # return None + + # def count_recipes(self, obj): + # return Recipe.objects.filter(steps__ingredients__food=obj, space=obj.space).count() def create(self, validated_data): - obj, created = Food.objects.get_or_create(name=validated_data['name'].strip(), space=self.context['request'].space) + validated_data['name'] = validated_data['name'].strip() + validated_data['space'] = self.context['request'].space + # supermarket category needs to be handled manually as food.get or create does not create nested serializers unlike a super.create of serializer + if 'supermarket_category' in validated_data and validated_data['supermarket_category']: + validated_data['supermarket_category'], sc_created = SupermarketCategory.objects.get_or_create( + name=validated_data.pop('supermarket_category')['name'], + space=self.context['request'].space) + obj, created = Food.objects.get_or_create(**validated_data) return obj def update(self, instance, validated_data): @@ -275,7 +398,8 @@ class FoodSerializer(UniqueFieldsMixin, WritableNestedModelSerializer): class Meta: model = Food - fields = ('id', 'name', 'recipe', 'ignore_shopping', 'supermarket_category') + fields = ('id', 'name', 'description', 'recipe', 'ignore_shopping', 'supermarket_category', 'image', 'parent', 'numchild', 'numrecipe') + read_only_fields = ('id', 'numchild', 'parent', 'image') class IngredientSerializer(WritableNestedModelSerializer): @@ -350,7 +474,8 @@ class NutritionInformationSerializer(serializers.ModelSerializer): class RecipeBaseSerializer(WritableNestedModelSerializer): def get_recipe_rating(self, obj): try: - rating = obj.cooklog_set.filter(created_by=self.context['request'].user, rating__gt=0).aggregate(Avg('rating')) + rating = obj.cooklog_set.filter(created_by=self.context['request'].user, rating__gt=0).aggregate( + Avg('rating')) if rating['rating__avg']: return rating['rating__avg'] except TypeError: @@ -366,11 +491,19 @@ class RecipeBaseSerializer(WritableNestedModelSerializer): pass return None + # TODO make days of new recipe a setting + def is_recipe_new(self, obj): + if obj.created_at > (timezone.now() - timedelta(days=7)): + return True + else: + return False + class RecipeOverviewSerializer(RecipeBaseSerializer): keywords = KeywordLabelSerializer(many=True) rating = serializers.SerializerMethodField('get_recipe_rating') last_cooked = serializers.SerializerMethodField('get_recipe_last_cooked') + new = serializers.SerializerMethodField('is_recipe_new') def create(self, validated_data): pass @@ -383,7 +516,7 @@ class RecipeOverviewSerializer(RecipeBaseSerializer): fields = ( 'id', 'name', 'description', 'image', 'keywords', 'working_time', 'waiting_time', 'created_by', 'created_at', 'updated_at', - 'internal', 'servings', 'servings_text', 'rating', 'last_cooked', + 'internal', 'servings', 'servings_text', 'rating', 'last_cooked', 'new' ) read_only_fields = ['image', 'created_by', 'created_at'] @@ -428,7 +561,8 @@ class CommentSerializer(serializers.ModelSerializer): fields = '__all__' -class RecipeBookSerializer(SpacedModelSerializer): +class RecipeBookSerializer(SpacedModelSerializer, WritableNestedModelSerializer): + shared = UserNameSerializer(many=True) def create(self, validated_data): validated_data['created_by'] = self.context['request'].user @@ -452,9 +586,11 @@ class RecipeBookEntrySerializer(serializers.ModelSerializer): def create(self, validated_data): book = validated_data['book'] + recipe = validated_data['recipe'] if not book.get_owner() == self.context['request'].user: raise NotFound(detail=None, code=None) - return super().create(validated_data) + obj, created = RecipeBookEntry.objects.get_or_create(book=book, recipe=recipe) + return obj class Meta: model = RecipeBookEntry @@ -464,7 +600,8 @@ class RecipeBookEntrySerializer(serializers.ModelSerializer): class MealPlanSerializer(SpacedModelSerializer, WritableNestedModelSerializer): recipe = RecipeOverviewSerializer(required=False, allow_null=True) recipe_name = serializers.ReadOnlyField(source='recipe.name') - meal_type_name = serializers.ReadOnlyField(source='meal_type.name') + meal_type = MealTypeSerializer() + meal_type_name = serializers.ReadOnlyField(source='meal_type.name') # TODO deprecate once old meal plan was removed note_markdown = serializers.SerializerMethodField('get_note_markdown') servings = CustomDecimalField() @@ -582,7 +719,22 @@ class ImportLogSerializer(serializers.ModelSerializer): class Meta: model = ImportLog - fields = ('id', 'type', 'msg', 'running', 'keyword', 'total_recipes', 'imported_recipes', 'created_by', 'created_at') + fields = ( + 'id', 'type', 'msg', 'running', 'keyword', 'total_recipes', 'imported_recipes', 'created_by', 'created_at') + read_only_fields = ('created_by',) + + +class AutomationSerializer(serializers.ModelSerializer): + + def create(self, validated_data): + validated_data['created_by'] = self.context['request'].user + validated_data['space'] = self.context['request'].space + return super().create(validated_data) + + class Meta: + model = Automation + fields = ( + 'id', 'type', 'name', 'description', 'param_1', 'param_2', 'param_3', 'disabled', 'created_by',) read_only_fields = ('created_by',) diff --git a/cookbook/signals.py b/cookbook/signals.py new file mode 100644 index 00000000..dc820c11 --- /dev/null +++ b/cookbook/signals.py @@ -0,0 +1,47 @@ +from django.contrib.postgres.search import SearchVector +from django.db.models.signals import post_save +from django.dispatch import receiver +from django.utils import translation + +from cookbook.models import Recipe, Step +from cookbook.managers import DICTIONARY + + +# TODO there is probably a way to generalize this +@receiver(post_save, sender=Recipe) +def update_recipe_search_vector(sender, instance=None, created=False, **kwargs): + if not instance: + return + + # needed to ensure search vector update doesn't trigger recursion + if hasattr(instance, '_dirty'): + return + + language = DICTIONARY.get(translation.get_language(), 'simple') + instance.name_search_vector = SearchVector('name__unaccent', weight='A', config=language) + instance.desc_search_vector = SearchVector('description__unaccent', weight='C', config=language) + + try: + instance._dirty = True + instance.save() + finally: + del instance._dirty + + +@receiver(post_save, sender=Step) +def update_step_search_vector(sender, instance=None, created=False, **kwargs): + if not instance: + return + + # needed to ensure search vector update doesn't trigger recursion + if hasattr(instance, '_dirty'): + return + + language = DICTIONARY.get(translation.get_language(), 'simple') + instance.search_vector = SearchVector('instruction__unaccent', weight='B', config=language) + + try: + instance._dirty = True + instance.save() + finally: + del instance._dirty diff --git a/cookbook/static/css/app.min.css b/cookbook/static/css/app.min.css index 272dac27..7c680a78 100644 --- a/cookbook/static/css/app.min.css +++ b/cookbook/static/css/app.min.css @@ -1126,4 +1126,17 @@ .btn-apple .badge { color: #000; background-color: #fff; -} \ No newline at end of file +} + +@media (min-width: 992px) { + .dropdown-menu-center { + right: auto; + left: 65%; + -webkit-transform: translate(-65%, 0); + -o-transform: translate(-65%, 0); + transform: translate(-65%, 0); + } + .dropdown-menu-center-large { + min-width: 28rem; + } +} diff --git a/cookbook/static/custom/js/form_emoji.js b/cookbook/static/custom/js/form_emoji.js deleted file mode 100644 index 8b2fd287..00000000 --- a/cookbook/static/custom/js/form_emoji.js +++ /dev/null @@ -1,3 +0,0 @@ -$(document).ready(function () { - $('.emojiwidget').emojioneArea(); -}); \ No newline at end of file diff --git a/cookbook/static/django_js_reverse/reverse.js b/cookbook/static/django_js_reverse/reverse.js index 89839d42..105335cb 100644 --- a/cookbook/static/django_js_reverse/reverse.js +++ b/cookbook/static/django_js_reverse/reverse.js @@ -1,14 +1,14 @@ -this.Urls=(function(){"use strict";var data={"urls":[["admin:app_list",[["admin/%(app_label)s/",["app_label"]]]],["admin:auth_group_add",[["admin/auth/group/add/",[]]]],["admin:auth_group_autocomplete",[["admin/auth/group/autocomplete/",[]]]],["admin:auth_group_change",[["admin/auth/group/%(object_id)s/change/",["object_id"]]]],["admin:auth_group_changelist",[["admin/auth/group/",[]]]],["admin:auth_group_delete",[["admin/auth/group/%(object_id)s/delete/",["object_id"]]]],["admin:auth_group_history",[["admin/auth/group/%(object_id)s/history/",["object_id"]]]],["admin:auth_user_add",[["admin/auth/user/add/",[]]]],["admin:auth_user_autocomplete",[["admin/auth/user/autocomplete/",[]]]],["admin:auth_user_change",[["admin/auth/user/%(object_id)s/change/",["object_id"]]]],["admin:auth_user_changelist",[["admin/auth/user/",[]]]],["admin:auth_user_delete",[["admin/auth/user/%(object_id)s/delete/",["object_id"]]]],["admin:auth_user_history",[["admin/auth/user/%(object_id)s/history/",["object_id"]]]],["admin:auth_user_password_change",[["admin/auth/user/%(id)s/password/",["id"]]]],["admin:authtoken_tokenproxy_add",[["admin/authtoken/tokenproxy/add/",[]]]],["admin:authtoken_tokenproxy_autocomplete",[["admin/authtoken/tokenproxy/autocomplete/",[]]]],["admin:authtoken_tokenproxy_change",[["admin/authtoken/tokenproxy/%(object_id)s/change/",["object_id"]]]],["admin:authtoken_tokenproxy_changelist",[["admin/authtoken/tokenproxy/",[]]]],["admin:authtoken_tokenproxy_delete",[["admin/authtoken/tokenproxy/%(object_id)s/delete/",["object_id"]]]],["admin:authtoken_tokenproxy_history",[["admin/authtoken/tokenproxy/%(object_id)s/history/",["object_id"]]]],["admin:cookbook_comment_add",[["admin/cookbook/comment/add/",[]]]],["admin:cookbook_comment_autocomplete",[["admin/cookbook/comment/autocomplete/",[]]]],["admin:cookbook_comment_change",[["admin/cookbook/comment/%(object_id)s/change/",["object_id"]]]],["admin:cookbook_comment_changelist",[["admin/cookbook/comment/",[]]]],["admin:cookbook_comment_delete",[["admin/cookbook/comment/%(object_id)s/delete/",["object_id"]]]],["admin:cookbook_comment_history",[["admin/cookbook/comment/%(object_id)s/history/",["object_id"]]]],["admin:cookbook_cooklog_add",[["admin/cookbook/cooklog/add/",[]]]],["admin:cookbook_cooklog_autocomplete",[["admin/cookbook/cooklog/autocomplete/",[]]]],["admin:cookbook_cooklog_change",[["admin/cookbook/cooklog/%(object_id)s/change/",["object_id"]]]],["admin:cookbook_cooklog_changelist",[["admin/cookbook/cooklog/",[]]]],["admin:cookbook_cooklog_delete",[["admin/cookbook/cooklog/%(object_id)s/delete/",["object_id"]]]],["admin:cookbook_cooklog_history",[["admin/cookbook/cooklog/%(object_id)s/history/",["object_id"]]]],["admin:cookbook_food_add",[["admin/cookbook/food/add/",[]]]],["admin:cookbook_food_autocomplete",[["admin/cookbook/food/autocomplete/",[]]]],["admin:cookbook_food_change",[["admin/cookbook/food/%(object_id)s/change/",["object_id"]]]],["admin:cookbook_food_changelist",[["admin/cookbook/food/",[]]]],["admin:cookbook_food_delete",[["admin/cookbook/food/%(object_id)s/delete/",["object_id"]]]],["admin:cookbook_food_history",[["admin/cookbook/food/%(object_id)s/history/",["object_id"]]]],["admin:cookbook_ingredient_add",[["admin/cookbook/ingredient/add/",[]]]],["admin:cookbook_ingredient_autocomplete",[["admin/cookbook/ingredient/autocomplete/",[]]]],["admin:cookbook_ingredient_change",[["admin/cookbook/ingredient/%(object_id)s/change/",["object_id"]]]],["admin:cookbook_ingredient_changelist",[["admin/cookbook/ingredient/",[]]]],["admin:cookbook_ingredient_delete",[["admin/cookbook/ingredient/%(object_id)s/delete/",["object_id"]]]],["admin:cookbook_ingredient_history",[["admin/cookbook/ingredient/%(object_id)s/history/",["object_id"]]]],["admin:cookbook_invitelink_add",[["admin/cookbook/invitelink/add/",[]]]],["admin:cookbook_invitelink_autocomplete",[["admin/cookbook/invitelink/autocomplete/",[]]]],["admin:cookbook_invitelink_change",[["admin/cookbook/invitelink/%(object_id)s/change/",["object_id"]]]],["admin:cookbook_invitelink_changelist",[["admin/cookbook/invitelink/",[]]]],["admin:cookbook_invitelink_delete",[["admin/cookbook/invitelink/%(object_id)s/delete/",["object_id"]]]],["admin:cookbook_invitelink_history",[["admin/cookbook/invitelink/%(object_id)s/history/",["object_id"]]]],["admin:cookbook_keyword_add",[["admin/cookbook/keyword/add/",[]]]],["admin:cookbook_keyword_autocomplete",[["admin/cookbook/keyword/autocomplete/",[]]]],["admin:cookbook_keyword_change",[["admin/cookbook/keyword/%(object_id)s/change/",["object_id"]]]],["admin:cookbook_keyword_changelist",[["admin/cookbook/keyword/",[]]]],["admin:cookbook_keyword_delete",[["admin/cookbook/keyword/%(object_id)s/delete/",["object_id"]]]],["admin:cookbook_keyword_history",[["admin/cookbook/keyword/%(object_id)s/history/",["object_id"]]]],["admin:cookbook_mealplan_add",[["admin/cookbook/mealplan/add/",[]]]],["admin:cookbook_mealplan_autocomplete",[["admin/cookbook/mealplan/autocomplete/",[]]]],["admin:cookbook_mealplan_change",[["admin/cookbook/mealplan/%(object_id)s/change/",["object_id"]]]],["admin:cookbook_mealplan_changelist",[["admin/cookbook/mealplan/",[]]]],["admin:cookbook_mealplan_delete",[["admin/cookbook/mealplan/%(object_id)s/delete/",["object_id"]]]],["admin:cookbook_mealplan_history",[["admin/cookbook/mealplan/%(object_id)s/history/",["object_id"]]]],["admin:cookbook_mealtype_add",[["admin/cookbook/mealtype/add/",[]]]],["admin:cookbook_mealtype_autocomplete",[["admin/cookbook/mealtype/autocomplete/",[]]]],["admin:cookbook_mealtype_change",[["admin/cookbook/mealtype/%(object_id)s/change/",["object_id"]]]],["admin:cookbook_mealtype_changelist",[["admin/cookbook/mealtype/",[]]]],["admin:cookbook_mealtype_delete",[["admin/cookbook/mealtype/%(object_id)s/delete/",["object_id"]]]],["admin:cookbook_mealtype_history",[["admin/cookbook/mealtype/%(object_id)s/history/",["object_id"]]]],["admin:cookbook_nutritioninformation_add",[["admin/cookbook/nutritioninformation/add/",[]]]],["admin:cookbook_nutritioninformation_autocomplete",[["admin/cookbook/nutritioninformation/autocomplete/",[]]]],["admin:cookbook_nutritioninformation_change",[["admin/cookbook/nutritioninformation/%(object_id)s/change/",["object_id"]]]],["admin:cookbook_nutritioninformation_changelist",[["admin/cookbook/nutritioninformation/",[]]]],["admin:cookbook_nutritioninformation_delete",[["admin/cookbook/nutritioninformation/%(object_id)s/delete/",["object_id"]]]],["admin:cookbook_nutritioninformation_history",[["admin/cookbook/nutritioninformation/%(object_id)s/history/",["object_id"]]]],["admin:cookbook_recipe_add",[["admin/cookbook/recipe/add/",[]]]],["admin:cookbook_recipe_autocomplete",[["admin/cookbook/recipe/autocomplete/",[]]]],["admin:cookbook_recipe_change",[["admin/cookbook/recipe/%(object_id)s/change/",["object_id"]]]],["admin:cookbook_recipe_changelist",[["admin/cookbook/recipe/",[]]]],["admin:cookbook_recipe_delete",[["admin/cookbook/recipe/%(object_id)s/delete/",["object_id"]]]],["admin:cookbook_recipe_history",[["admin/cookbook/recipe/%(object_id)s/history/",["object_id"]]]],["admin:cookbook_recipebook_add",[["admin/cookbook/recipebook/add/",[]]]],["admin:cookbook_recipebook_autocomplete",[["admin/cookbook/recipebook/autocomplete/",[]]]],["admin:cookbook_recipebook_change",[["admin/cookbook/recipebook/%(object_id)s/change/",["object_id"]]]],["admin:cookbook_recipebook_changelist",[["admin/cookbook/recipebook/",[]]]],["admin:cookbook_recipebook_delete",[["admin/cookbook/recipebook/%(object_id)s/delete/",["object_id"]]]],["admin:cookbook_recipebook_history",[["admin/cookbook/recipebook/%(object_id)s/history/",["object_id"]]]],["admin:cookbook_recipebookentry_add",[["admin/cookbook/recipebookentry/add/",[]]]],["admin:cookbook_recipebookentry_autocomplete",[["admin/cookbook/recipebookentry/autocomplete/",[]]]],["admin:cookbook_recipebookentry_change",[["admin/cookbook/recipebookentry/%(object_id)s/change/",["object_id"]]]],["admin:cookbook_recipebookentry_changelist",[["admin/cookbook/recipebookentry/",[]]]],["admin:cookbook_recipebookentry_delete",[["admin/cookbook/recipebookentry/%(object_id)s/delete/",["object_id"]]]],["admin:cookbook_recipebookentry_history",[["admin/cookbook/recipebookentry/%(object_id)s/history/",["object_id"]]]],["admin:cookbook_recipeimport_add",[["admin/cookbook/recipeimport/add/",[]]]],["admin:cookbook_recipeimport_autocomplete",[["admin/cookbook/recipeimport/autocomplete/",[]]]],["admin:cookbook_recipeimport_change",[["admin/cookbook/recipeimport/%(object_id)s/change/",["object_id"]]]],["admin:cookbook_recipeimport_changelist",[["admin/cookbook/recipeimport/",[]]]],["admin:cookbook_recipeimport_delete",[["admin/cookbook/recipeimport/%(object_id)s/delete/",["object_id"]]]],["admin:cookbook_recipeimport_history",[["admin/cookbook/recipeimport/%(object_id)s/history/",["object_id"]]]],["admin:cookbook_sharelink_add",[["admin/cookbook/sharelink/add/",[]]]],["admin:cookbook_sharelink_autocomplete",[["admin/cookbook/sharelink/autocomplete/",[]]]],["admin:cookbook_sharelink_change",[["admin/cookbook/sharelink/%(object_id)s/change/",["object_id"]]]],["admin:cookbook_sharelink_changelist",[["admin/cookbook/sharelink/",[]]]],["admin:cookbook_sharelink_delete",[["admin/cookbook/sharelink/%(object_id)s/delete/",["object_id"]]]],["admin:cookbook_sharelink_history",[["admin/cookbook/sharelink/%(object_id)s/history/",["object_id"]]]],["admin:cookbook_shoppinglist_add",[["admin/cookbook/shoppinglist/add/",[]]]],["admin:cookbook_shoppinglist_autocomplete",[["admin/cookbook/shoppinglist/autocomplete/",[]]]],["admin:cookbook_shoppinglist_change",[["admin/cookbook/shoppinglist/%(object_id)s/change/",["object_id"]]]],["admin:cookbook_shoppinglist_changelist",[["admin/cookbook/shoppinglist/",[]]]],["admin:cookbook_shoppinglist_delete",[["admin/cookbook/shoppinglist/%(object_id)s/delete/",["object_id"]]]],["admin:cookbook_shoppinglist_history",[["admin/cookbook/shoppinglist/%(object_id)s/history/",["object_id"]]]],["admin:cookbook_shoppinglistentry_add",[["admin/cookbook/shoppinglistentry/add/",[]]]],["admin:cookbook_shoppinglistentry_autocomplete",[["admin/cookbook/shoppinglistentry/autocomplete/",[]]]],["admin:cookbook_shoppinglistentry_change",[["admin/cookbook/shoppinglistentry/%(object_id)s/change/",["object_id"]]]],["admin:cookbook_shoppinglistentry_changelist",[["admin/cookbook/shoppinglistentry/",[]]]],["admin:cookbook_shoppinglistentry_delete",[["admin/cookbook/shoppinglistentry/%(object_id)s/delete/",["object_id"]]]],["admin:cookbook_shoppinglistentry_history",[["admin/cookbook/shoppinglistentry/%(object_id)s/history/",["object_id"]]]],["admin:cookbook_shoppinglistrecipe_add",[["admin/cookbook/shoppinglistrecipe/add/",[]]]],["admin:cookbook_shoppinglistrecipe_autocomplete",[["admin/cookbook/shoppinglistrecipe/autocomplete/",[]]]],["admin:cookbook_shoppinglistrecipe_change",[["admin/cookbook/shoppinglistrecipe/%(object_id)s/change/",["object_id"]]]],["admin:cookbook_shoppinglistrecipe_changelist",[["admin/cookbook/shoppinglistrecipe/",[]]]],["admin:cookbook_shoppinglistrecipe_delete",[["admin/cookbook/shoppinglistrecipe/%(object_id)s/delete/",["object_id"]]]],["admin:cookbook_shoppinglistrecipe_history",[["admin/cookbook/shoppinglistrecipe/%(object_id)s/history/",["object_id"]]]],["admin:cookbook_space_add",[["admin/cookbook/space/add/",[]]]],["admin:cookbook_space_autocomplete",[["admin/cookbook/space/autocomplete/",[]]]],["admin:cookbook_space_change",[["admin/cookbook/space/%(object_id)s/change/",["object_id"]]]],["admin:cookbook_space_changelist",[["admin/cookbook/space/",[]]]],["admin:cookbook_space_delete",[["admin/cookbook/space/%(object_id)s/delete/",["object_id"]]]],["admin:cookbook_space_history",[["admin/cookbook/space/%(object_id)s/history/",["object_id"]]]],["admin:cookbook_step_add",[["admin/cookbook/step/add/",[]]]],["admin:cookbook_step_autocomplete",[["admin/cookbook/step/autocomplete/",[]]]],["admin:cookbook_step_change",[["admin/cookbook/step/%(object_id)s/change/",["object_id"]]]],["admin:cookbook_step_changelist",[["admin/cookbook/step/",[]]]],["admin:cookbook_step_delete",[["admin/cookbook/step/%(object_id)s/delete/",["object_id"]]]],["admin:cookbook_step_history",[["admin/cookbook/step/%(object_id)s/history/",["object_id"]]]],["admin:cookbook_storage_add",[["admin/cookbook/storage/add/",[]]]],["admin:cookbook_storage_autocomplete",[["admin/cookbook/storage/autocomplete/",[]]]],["admin:cookbook_storage_change",[["admin/cookbook/storage/%(object_id)s/change/",["object_id"]]]],["admin:cookbook_storage_changelist",[["admin/cookbook/storage/",[]]]],["admin:cookbook_storage_delete",[["admin/cookbook/storage/%(object_id)s/delete/",["object_id"]]]],["admin:cookbook_storage_history",[["admin/cookbook/storage/%(object_id)s/history/",["object_id"]]]],["admin:cookbook_sync_add",[["admin/cookbook/sync/add/",[]]]],["admin:cookbook_sync_autocomplete",[["admin/cookbook/sync/autocomplete/",[]]]],["admin:cookbook_sync_change",[["admin/cookbook/sync/%(object_id)s/change/",["object_id"]]]],["admin:cookbook_sync_changelist",[["admin/cookbook/sync/",[]]]],["admin:cookbook_sync_delete",[["admin/cookbook/sync/%(object_id)s/delete/",["object_id"]]]],["admin:cookbook_sync_history",[["admin/cookbook/sync/%(object_id)s/history/",["object_id"]]]],["admin:cookbook_synclog_add",[["admin/cookbook/synclog/add/",[]]]],["admin:cookbook_synclog_autocomplete",[["admin/cookbook/synclog/autocomplete/",[]]]],["admin:cookbook_synclog_change",[["admin/cookbook/synclog/%(object_id)s/change/",["object_id"]]]],["admin:cookbook_synclog_changelist",[["admin/cookbook/synclog/",[]]]],["admin:cookbook_synclog_delete",[["admin/cookbook/synclog/%(object_id)s/delete/",["object_id"]]]],["admin:cookbook_synclog_history",[["admin/cookbook/synclog/%(object_id)s/history/",["object_id"]]]],["admin:cookbook_unit_add",[["admin/cookbook/unit/add/",[]]]],["admin:cookbook_unit_autocomplete",[["admin/cookbook/unit/autocomplete/",[]]]],["admin:cookbook_unit_change",[["admin/cookbook/unit/%(object_id)s/change/",["object_id"]]]],["admin:cookbook_unit_changelist",[["admin/cookbook/unit/",[]]]],["admin:cookbook_unit_delete",[["admin/cookbook/unit/%(object_id)s/delete/",["object_id"]]]],["admin:cookbook_unit_history",[["admin/cookbook/unit/%(object_id)s/history/",["object_id"]]]],["admin:cookbook_userpreference_add",[["admin/cookbook/userpreference/add/",[]]]],["admin:cookbook_userpreference_autocomplete",[["admin/cookbook/userpreference/autocomplete/",[]]]],["admin:cookbook_userpreference_change",[["admin/cookbook/userpreference/%(object_id)s/change/",["object_id"]]]],["admin:cookbook_userpreference_changelist",[["admin/cookbook/userpreference/",[]]]],["admin:cookbook_userpreference_delete",[["admin/cookbook/userpreference/%(object_id)s/delete/",["object_id"]]]],["admin:cookbook_userpreference_history",[["admin/cookbook/userpreference/%(object_id)s/history/",["object_id"]]]],["admin:cookbook_viewlog_add",[["admin/cookbook/viewlog/add/",[]]]],["admin:cookbook_viewlog_autocomplete",[["admin/cookbook/viewlog/autocomplete/",[]]]],["admin:cookbook_viewlog_change",[["admin/cookbook/viewlog/%(object_id)s/change/",["object_id"]]]],["admin:cookbook_viewlog_changelist",[["admin/cookbook/viewlog/",[]]]],["admin:cookbook_viewlog_delete",[["admin/cookbook/viewlog/%(object_id)s/delete/",["object_id"]]]],["admin:cookbook_viewlog_history",[["admin/cookbook/viewlog/%(object_id)s/history/",["object_id"]]]],["admin:index",[["admin/",[]]]],["admin:jsi18n",[["admin/jsi18n/",[]]]],["admin:login",[["admin/login/",[]]]],["admin:logout",[["admin/logout/",[]]]],["admin:password_change",[["admin/password_change/",[]]]],["admin:password_change_done",[["admin/password_change/done/",[]]]],["admin:view_on_site",[["admin/r/%(content_type_id)s/%(object_id)s/",["content_type_id","object_id"]]]],["api:api-root",[["api/.%(format)s",["format"]],["api/",[]]]],["api:cooklog-detail",[["api/cook-log/%(pk)s.%(format)s",["pk","format"]],["api/cook-log/%(pk)s/",["pk"]]]],["api:cooklog-list",[["api/cook-log.%(format)s",["format"]],["api/cook-log/",[]]]],["api:food-detail",[["api/food/%(pk)s.%(format)s",["pk","format"]],["api/food/%(pk)s/",["pk"]]]],["api:food-list",[["api/food.%(format)s",["format"]],["api/food/",[]]]],["api:ingredient-detail",[["api/ingredient/%(pk)s.%(format)s",["pk","format"]],["api/ingredient/%(pk)s/",["pk"]]]],["api:ingredient-list",[["api/ingredient.%(format)s",["format"]],["api/ingredient/",[]]]],["api:keyword-detail",[["api/keyword/%(pk)s.%(format)s",["pk","format"]],["api/keyword/%(pk)s/",["pk"]]]],["api:keyword-list",[["api/keyword.%(format)s",["format"]],["api/keyword/",[]]]],["api:mealplan-detail",[["api/meal-plan/%(pk)s.%(format)s",["pk","format"]],["api/meal-plan/%(pk)s/",["pk"]]]],["api:mealplan-list",[["api/meal-plan.%(format)s",["format"]],["api/meal-plan/",[]]]],["api:mealtype-detail",[["api/meal-type/%(pk)s.%(format)s",["pk","format"]],["api/meal-type/%(pk)s/",["pk"]]]],["api:mealtype-list",[["api/meal-type.%(format)s",["format"]],["api/meal-type/",[]]]],["api:recipe-detail",[["api/recipe/%(pk)s.%(format)s",["pk","format"]],["api/recipe/%(pk)s/",["pk"]]]],["api:recipe-image",[["api/recipe/%(pk)s/image.%(format)s",["pk","format"]],["api/recipe/%(pk)s/image/",["pk"]]]],["api:recipe-list",[["api/recipe.%(format)s",["format"]],["api/recipe/",[]]]],["api:shoppinglist-detail",[["api/shopping-list/%(pk)s.%(format)s",["pk","format"]],["api/shopping-list/%(pk)s/",["pk"]]]],["api:shoppinglist-list",[["api/shopping-list.%(format)s",["format"]],["api/shopping-list/",[]]]],["api:shoppinglistentry-detail",[["api/shopping-list-entry/%(pk)s.%(format)s",["pk","format"]],["api/shopping-list-entry/%(pk)s/",["pk"]]]],["api:shoppinglistentry-list",[["api/shopping-list-entry.%(format)s",["format"]],["api/shopping-list-entry/",[]]]],["api:shoppinglistrecipe-detail",[["api/shopping-list-recipe/%(pk)s.%(format)s",["pk","format"]],["api/shopping-list-recipe/%(pk)s/",["pk"]]]],["api:shoppinglistrecipe-list",[["api/shopping-list-recipe.%(format)s",["format"]],["api/shopping-list-recipe/",[]]]],["api:step-detail",[["api/step/%(pk)s.%(format)s",["pk","format"]],["api/step/%(pk)s/",["pk"]]]],["api:step-list",[["api/step.%(format)s",["format"]],["api/step/",[]]]],["api:storage-detail",[["api/storage/%(pk)s.%(format)s",["pk","format"]],["api/storage/%(pk)s/",["pk"]]]],["api:storage-list",[["api/storage.%(format)s",["format"]],["api/storage/",[]]]],["api:sync-detail",[["api/sync/%(pk)s.%(format)s",["pk","format"]],["api/sync/%(pk)s/",["pk"]]]],["api:sync-list",[["api/sync.%(format)s",["format"]],["api/sync/",[]]]],["api:synclog-detail",[["api/sync-log/%(pk)s.%(format)s",["pk","format"]],["api/sync-log/%(pk)s/",["pk"]]]],["api:synclog-list",[["api/sync-log.%(format)s",["format"]],["api/sync-log/",[]]]],["api:unit-detail",[["api/unit/%(pk)s.%(format)s",["pk","format"]],["api/unit/%(pk)s/",["pk"]]]],["api:unit-list",[["api/unit.%(format)s",["format"]],["api/unit/",[]]]],["api:username-detail",[["api/user-name/%(pk)s.%(format)s",["pk","format"]],["api/user-name/%(pk)s/",["pk"]]]],["api:username-list",[["api/user-name.%(format)s",["format"]],["api/user-name/",[]]]],["api:userpreference-detail",[["api/user-preference/%(pk)s.%(format)s",["pk","format"]],["api/user-preference/%(pk)s/",["pk"]]]],["api:userpreference-list",[["api/user-preference.%(format)s",["format"]],["api/user-preference/",[]]]],["api:viewlog-detail",[["api/view-log/%(pk)s.%(format)s",["pk","format"]],["api/view-log/%(pk)s/",["pk"]]]],["api:viewlog-list",[["api/view-log.%(format)s",["format"]],["api/view-log/",[]]]],["api_backup",[["api/backup/",[]]]],["api_get_external_file_link",[["api/get_external_file_link/%(recipe_id)s/",["recipe_id"]]]],["api_get_plan_ical",[["api/plan-ical/%(from_date)s/%(to_date)s/",["from_date","to_date"]]]],["api_get_recipe_file",[["api/get_recipe_file/%(recipe_id)s/",["recipe_id"]]]],["api_log_cooking",[["api/log_cooking/%(recipe_id)s/",["recipe_id"]]]],["api_recipe_from_url",[["api/recipe-from-url/",[]]]],["api_sync",[["api/sync_all/",[]]]],["dal_food",[["dal/food/",[]]]],["dal_keyword",[["dal/keyword/",[]]]],["dal_unit",[["dal/unit/",[]]]],["data_batch_edit",[["data/batch/edit",[]]]],["data_batch_import",[["data/batch/import",[]]]],["data_import_url",[["data/import/url",[]]]],["data_stats",[["data/statistics",[]]]],["data_sync",[["data/sync",[]]]],["data_sync_wait",[["data/sync/wait",[]]]],["delete_comment",[["delete/comment/%(pk)s/",["pk"]]]],["delete_invite_link",[["delete/invite-link/%(pk)s/",["pk"]]]],["delete_keyword",[["delete/keyword/%(pk)s/",["pk"]]]],["delete_meal_plan",[["delete/meal-plan/%(pk)s/",["pk"]]]],["delete_recipe",[["delete/recipe/%(pk)s/",["pk"]]]],["delete_recipe_book",[["delete/recipe-book/%(pk)s/",["pk"]]]],["delete_recipe_book_entry",[["delete/recipe-book-entry/%(pk)s/",["pk"]]]],["delete_recipe_import",[["delete/recipe-import/%(pk)s/",["pk"]]]],["delete_recipe_source",[["delete/recipe-source/%(pk)s/",["pk"]]]],["delete_storage",[["delete/storage/%(pk)s/",["pk"]]]],["delete_sync",[["delete/sync/%(pk)s/",["pk"]]]],["docs_api",[["docs/api/",[]]]],["docs_markdown",[["docs/markdown/",[]]]],["edit_comment",[["edit/comment/%(pk)s/",["pk"]]]],["edit_convert_recipe",[["edit/recipe/convert/%(pk)s/",["pk"]]]],["edit_external_recipe",[["edit/recipe/external/%(pk)s/",["pk"]]]],["edit_food",[["edit/food/%(pk)s/",["pk"]],["edit/ingredient/",[]]]],["edit_internal_recipe",[["edit/recipe/internal/%(pk)s/",["pk"]]]],["edit_keyword",[["edit/keyword/%(pk)s/",["pk"]]]],["edit_meal_plan",[["edit/meal-plan/%(pk)s/",["pk"]]]],["edit_recipe",[["edit/recipe/%(pk)s/",["pk"]]]],["edit_recipe_book",[["edit/recipe-book/%(pk)s/",["pk"]]]],["edit_storage",[["edit/storage/%(pk)s/",["pk"]]]],["edit_sync",[["edit/sync/%(pk)s/",["pk"]]]],["index",[["",[]]]],["javascript-catalog",[["jsi18n/",[]]]],["js_reverse",[["jsreverse.json",[]]]],["list_food",[["list/food/",[]]]],["list_invite_link",[["list/invite-link/",[]]]],["list_keyword",[["list/keyword/",[]]]],["list_recipe_import",[["list/recipe-import/",[]]]],["list_shopping_list",[["list/shopping-list/",[]]]],["list_storage",[["list/storage/",[]]]],["list_sync_log",[["list/sync-log/",[]]]],["login",[["accounts/login/",[]]]],["logout",[["accounts/logout/",[]]]],["new_invite_link",[["new/invite-link/",[]]]],["new_keyword",[["new/keyword/",[]]]],["new_meal_plan",[["new/meal-plan/",[]]]],["new_recipe",[["new/recipe/",[]]]],["new_recipe_book",[["new/recipe-book/",[]]]],["new_recipe_import",[["new/recipe-import/%(import_id)s/",["import_id"]]]],["new_share_link",[["new/share-link/%(pk)s/",["pk"]]]],["new_storage",[["new/storage/",[]]]],["openapi-schema",[["openapi",[]]]],["password_change",[["accounts/password_change/",[]]]],["password_change_done",[["accounts/password_change/done/",[]]]],["password_reset",[["accounts/password_reset/",[]]]],["password_reset_complete",[["accounts/reset/done/",[]]]],["password_reset_confirm",[["accounts/reset/%(uidb64)s/%(token)s/",["uidb64","token"]]]],["password_reset_done",[["accounts/password_reset/done/",[]]]],["rest_framework:login",[["api-auth/login/",[]]]],["rest_framework:logout",[["api-auth/logout/",[]]]],["service_worker",[["service-worker.js",[]]]],["set_language",[["i18n/setlang/",[]]]],["view_books",[["books/",[]]]],["view_export",[["export/",[]]]],["view_history",[["history/",[]]]],["view_import",[["import/",[]]]],["view_offline",[["offline/",[]]]],["view_plan",[["plan/",[]]]],["view_plan_entry",[["plan/entry/%(pk)s",["pk"]]]],["view_recipe",[["view/recipe/%(pk)s/%(share)s",["pk","share"]],["view/recipe/%(pk)s",["pk"]]]],["view_search",[["search/",[]]]],["view_settings",[["settings/",[]]]],["view_setup",[["setup/",[]]]],["view_shopping",[["shopping/%(pk)s",["pk"]],["shopping/",[]]]],["view_signup",[["signup/%(token)s",["token"]]]],["view_system",[["system/",[]]]],["view_test",[["test/%(pk)s",["pk"]]]]],"prefix":"/"};function factory(d){var url_patterns=d.urls;var url_prefix=d.prefix;var Urls={};var self_url_patterns={};var _get_url=function(url_pattern){return function(){var _arguments,index,url,url_arg,url_args,_i,_len,_ref,_ref_list,match_ref,provided_keys,build_kwargs;_arguments=arguments;_ref_list=self_url_patterns[url_pattern];if(arguments.length==1&&typeof(arguments[0])=="object"){var provided_keys_list=Object.keys(arguments[0]);provided_keys={};for(_i=0;_i .emojionearea-editor { - height: 32px; - min-height: 20px; - overflow: hidden; - white-space: nowrap; - position: absolute; - top: 0; - left: 12px; - right: 24px; - padding: 6px 0; } - .emojionearea.emojionearea-inline > .emojionearea-button { - top: 4px; } -.emojionearea .emojionearea-button { - z-index: 5; - position: absolute; - right: 3px; - top: 3px; - width: 24px; - height: 24px; - opacity: 0.6; - cursor: pointer; - -moz-transition: opacity 300ms ease-in-out; - -o-transition: opacity 300ms ease-in-out; - -webkit-transition: opacity 300ms ease-in-out; - transition: opacity 300ms ease-in-out; } - .emojionearea .emojionearea-button:hover { - opacity: 1; } - .emojionearea .emojionearea-button > div { - display: block; - width: 24px; - height: 24px; - position: absolute; - -moz-transition: all 400ms ease-in-out; - -o-transition: all 400ms ease-in-out; - -webkit-transition: all 400ms ease-in-out; - transition: all 400ms ease-in-out; } - .emojionearea .emojionearea-button > div.emojionearea-button-open { - background-position: 0 -24px; - filter: progid:DXImageTransform.Microsoft.Alpha(enabled=false); - opacity: 1; } - .emojionearea .emojionearea-button > div.emojionearea-button-close { - background-position: 0 0; - -webkit-transform: rotate(-45deg); - -o-transform: rotate(-45deg); - transform: rotate(-45deg); - filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=0); - opacity: 0; } - .emojionearea .emojionearea-button.active > div.emojionearea-button-open { - -webkit-transform: rotate(45deg); - -o-transform: rotate(45deg); - transform: rotate(45deg); - filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=0); - opacity: 0; } - .emojionearea .emojionearea-button.active > div.emojionearea-button-close { - -webkit-transform: rotate(0deg); - -o-transform: rotate(0deg); - transform: rotate(0deg); - filter: progid:DXImageTransform.Microsoft.Alpha(enabled=false); - opacity: 1; } -.emojionearea .emojionearea-picker { - background: #FFFFFF; - position: absolute; - -moz-box-shadow: 0 1px 5px rgba(0, 0, 0, 0.32); - -webkit-box-shadow: 0 1px 5px rgba(0, 0, 0, 0.32); - box-shadow: 0 1px 5px rgba(0, 0, 0, 0.32); - -moz-border-radius: 5px; - -webkit-border-radius: 5px; - border-radius: 5px; - height: 276px; - width: 316px; - top: -15px; - right: -15px; - z-index: 90; - -moz-transition: all 0.25s ease-in-out; - -o-transition: all 0.25s ease-in-out; - -webkit-transition: all 0.25s ease-in-out; - transition: all 0.25s ease-in-out; - filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=0); - opacity: 0; - -moz-user-select: -moz-none; - -ms-user-select: none; - -webkit-user-select: none; - user-select: none; } - .emojionearea .emojionearea-picker.hidden { - display: none; } - .emojionearea .emojionearea-picker .emojionearea-wrapper { - position: relative; - height: 276px; - width: 316px; } - .emojionearea .emojionearea-picker .emojionearea-wrapper:after { - content: ""; - display: block; - position: absolute; - background-repeat: no-repeat; - z-index: 91; } - .emojionearea .emojionearea-picker .emojionearea-filters { - width: 100%; - position: absolute; - z-index: 95; } - .emojionearea .emojionearea-picker .emojionearea-filters { - background: #F5F7F9; - padding: 0 0 0 7px; - height: 40px; } - .emojionearea .emojionearea-picker .emojionearea-filters .emojionearea-filter { - display: block; - float: left; - height: 40px; - width: 32px; - filter: inherit; - padding: 7px 1px 0; - cursor: pointer; - -webkit-filter: grayscale(1); - filter: grayscale(1); } - .emojionearea .emojionearea-picker .emojionearea-filters .emojionearea-filter.active { - background: #fff; } - .emojionearea .emojionearea-picker .emojionearea-filters .emojionearea-filter.active, .emojionearea .emojionearea-picker .emojionearea-filters .emojionearea-filter:hover { - -webkit-filter: grayscale(0); - filter: grayscale(0); } - .emojionearea .emojionearea-picker .emojionearea-filters .emojionearea-filter > i { - width: 24px; - height: 24px; - top: 0; } - .emojionearea .emojionearea-picker .emojionearea-filters .emojionearea-filter > img { - width: 24px; - height: 24px; - margin: 0 3px; } - .emojionearea .emojionearea-picker .emojionearea-search-panel { - height: 30px; - position: absolute; - z-index: 95; - top: 40px; - left: 0; - right: 0; - padding: 5px 0 5px 8px; } - .emojionearea .emojionearea-picker .emojionearea-search-panel .emojionearea-tones { - float: right; - margin-right: 10px; - margin-top: -1px; } - .emojionearea .emojionearea-picker .emojionearea-tones-panel .emojionearea-tones { - position: absolute; - top: 4px; - left: 171px; } - .emojionearea .emojionearea-picker .emojionearea-search { - float: left; - padding: 0; - height: 20px; - width: 160px; } - .emojionearea .emojionearea-picker .emojionearea-search > input { - outline: none; - width: 160px; - min-width: 160px; - height: 20px; } - .emojionearea .emojionearea-picker .emojionearea-tones { - padding: 0; - width: 120px; - height: 20px; } - .emojionearea .emojionearea-picker .emojionearea-tones > .btn-tone { - display: inline-block; - padding: 0; - border: 0; - vertical-align: middle; - outline: none; - background: transparent; - cursor: pointer; - position: relative; } - .emojionearea .emojionearea-picker .emojionearea-tones > .btn-tone.btn-tone-0, .emojionearea .emojionearea-picker .emojionearea-tones > .btn-tone.btn-tone-0:after { - background-color: #ffcf3e; } - .emojionearea .emojionearea-picker .emojionearea-tones > .btn-tone.btn-tone-1, .emojionearea .emojionearea-picker .emojionearea-tones > .btn-tone.btn-tone-1:after { - background-color: #fae3c5; } - .emojionearea .emojionearea-picker .emojionearea-tones > .btn-tone.btn-tone-2, .emojionearea .emojionearea-picker .emojionearea-tones > .btn-tone.btn-tone-2:after { - background-color: #e2cfa5; } - .emojionearea .emojionearea-picker .emojionearea-tones > .btn-tone.btn-tone-3, .emojionearea .emojionearea-picker .emojionearea-tones > .btn-tone.btn-tone-3:after { - background-color: #daa478; } - .emojionearea .emojionearea-picker .emojionearea-tones > .btn-tone.btn-tone-4, .emojionearea .emojionearea-picker .emojionearea-tones > .btn-tone.btn-tone-4:after { - background-color: #a78058; } - .emojionearea .emojionearea-picker .emojionearea-tones > .btn-tone.btn-tone-5, .emojionearea .emojionearea-picker .emojionearea-tones > .btn-tone.btn-tone-5:after { - background-color: #5e4d43; } - .emojionearea .emojionearea-picker .emojionearea-tones.emojionearea-tones-bullet > .btn-tone, .emojionearea .emojionearea-picker .emojionearea-tones.emojionearea-tones-square > .btn-tone { - width: 20px; - height: 20px; - margin: 0; - background-color: transparent; } - .emojionearea .emojionearea-picker .emojionearea-tones.emojionearea-tones-bullet > .btn-tone:after, .emojionearea .emojionearea-picker .emojionearea-tones.emojionearea-tones-square > .btn-tone:after { - content: ""; - position: absolute; - display: block; - top: 4px; - left: 4px; - width: 12px; - height: 12px; } - .emojionearea .emojionearea-picker .emojionearea-tones.emojionearea-tones-bullet > .btn-tone.active:after, .emojionearea .emojionearea-picker .emojionearea-tones.emojionearea-tones-square > .btn-tone.active:after { - top: 0; - left: 0; - width: 20px; - height: 20px; } - .emojionearea .emojionearea-picker .emojionearea-tones.emojionearea-tones-radio > .btn-tone, .emojionearea .emojionearea-picker .emojionearea-tones.emojionearea-tones-checkbox > .btn-tone { - width: 16px; - height: 16px; - margin: 0px 2px; } - .emojionearea .emojionearea-picker .emojionearea-tones.emojionearea-tones-radio > .btn-tone.active:after, .emojionearea .emojionearea-picker .emojionearea-tones.emojionearea-tones-checkbox > .btn-tone.active:after { - content: ""; - position: absolute; - display: block; - background-color: transparent; - border: 2px solid #fff; - width: 8px; - height: 8px; - top: 2px; - left: 2px; - box-sizing: initial; } - .emojionearea .emojionearea-picker .emojionearea-tones.emojionearea-tones-bullet > .btn-tone, .emojionearea .emojionearea-picker .emojionearea-tones.emojionearea-tones-bullet > .btn-tone:after, .emojionearea .emojionearea-picker .emojionearea-tones.emojionearea-tones-radio > .btn-tone, .emojionearea .emojionearea-picker .emojionearea-tones.emojionearea-tones-radio > .btn-tone:after { - -moz-border-radius: 100%; - -webkit-border-radius: 100%; - border-radius: 100%; } - .emojionearea .emojionearea-picker .emojionearea-tones.emojionearea-tones-square > .btn-tone, .emojionearea .emojionearea-picker .emojionearea-tones.emojionearea-tones-square > .btn-tone:after, .emojionearea .emojionearea-picker .emojionearea-tones.emojionearea-tones-checkbox > .btn-tone, .emojionearea .emojionearea-picker .emojionearea-tones.emojionearea-tones-checkbox > .btn-tone:after { - -moz-border-radius: 1px; - -webkit-border-radius: 1px; - border-radius: 1px; } - .emojionearea .emojionearea-picker .emojionearea-scroll-area { - height: 236px; } - .emojionearea .emojionearea-picker .emojionearea-search-panel + .emojionearea-scroll-area { - height: 206px; } - .emojionearea .emojionearea-picker .emojionearea-scroll-area { - overflow: auto; - overflow-x: hidden; - width: 100%; - position: absolute; - padding: 0 0 5px; } - .emojionearea .emojionearea-picker .emojionearea-scroll-area .emojionearea-emojis-list { - z-index: 1; } - .emojionearea .emojionearea-picker .emojionearea-scroll-area .emojionearea-category-title { - display: block; - font-family: Arial, 'Helvetica Neue', Helvetica, sans-serif; - font-size: 13px; - font-weight: normal; - color: #b2b2b2; - background: #FFFFFF; - line-height: 20px; - margin: 0; - padding: 7px 0 5px 6px; } - .emojionearea .emojionearea-picker .emojionearea-scroll-area .emojionearea-category-title:after, .emojionearea .emojionearea-picker .emojionearea-scroll-area .emojionearea-category-title:before { - content: " "; - display: block; - clear: both; } - .emojionearea .emojionearea-picker .emojionearea-scroll-area .emojionearea-category-block { - padding: 0 0 0 7px; } - .emojionearea .emojionearea-picker .emojionearea-scroll-area .emojionearea-category-block > .emojionearea-category { - padding: 0 !important; } - .emojionearea .emojionearea-picker .emojionearea-scroll-area .emojionearea-category-block > .emojionearea-category:after, .emojionearea .emojionearea-picker .emojionearea-scroll-area .emojionearea-category-block > .emojionearea-category:before { - content: " "; - display: block; - clear: both; } - .emojionearea .emojionearea-picker .emojionearea-scroll-area .emojionearea-category-block:after, .emojionearea .emojionearea-picker .emojionearea-scroll-area .emojionearea-category-block:before { - content: " "; - display: block; - clear: both; } - .emojionearea .emojionearea-picker .emojionearea-scroll-area [class*=emojione-] { - -moz-box-sizing: content-box; - -webkit-box-sizing: content-box; - box-sizing: content-box; - margin: 0; - width: 24px; - height: 24px; - top: 0; } - .emojionearea .emojionearea-picker .emojionearea-scroll-area .emojibtn { - -moz-box-sizing: content-box; - -webkit-box-sizing: content-box; - box-sizing: content-box; - width: 24px; - height: 24px; - float: left; - display: block; - margin: 1px; - padding: 3px; } - .emojionearea .emojionearea-picker .emojionearea-scroll-area .emojibtn:hover { - -moz-border-radius: 4px; - -webkit-border-radius: 4px; - border-radius: 4px; - background-color: #e4e4e4; - cursor: pointer; } - .emojionearea .emojionearea-picker .emojionearea-scroll-area .emojibtn i, .emojionearea .emojionearea-picker .emojionearea-scroll-area .emojibtn img { - float: left; - display: block; - width: 24px; - height: 24px; } - .emojionearea .emojionearea-picker .emojionearea-scroll-area .emojibtn img.lazy-emoji { - filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=0); - opacity: 0; } - .emojionearea .emojionearea-picker.emojionearea-filters-position-top .emojionearea-filters { - top: 0; - -moz-border-radius-topleft: 5px; - -webkit-border-top-left-radius: 5px; - border-top-left-radius: 5px; - -moz-border-radius-topright: 5px; - -webkit-border-top-right-radius: 5px; - border-top-right-radius: 5px; } - .emojionearea .emojionearea-picker.emojionearea-filters-position-top.emojionearea-search-position-top .emojionearea-scroll-area { - bottom: 0; } - .emojionearea .emojionearea-picker.emojionearea-filters-position-top.emojionearea-search-position-bottom .emojionearea-scroll-area { - top: 40px; } - .emojionearea .emojionearea-picker.emojionearea-filters-position-top.emojionearea-search-position-bottom .emojionearea-search-panel { - top: initial; - bottom: 0; } - .emojionearea .emojionearea-picker.emojionearea-filters-position-bottom .emojionearea-filters { - bottom: 0; - -moz-border-radius-bottomleft: 5px; - -webkit-border-bottom-left-radius: 5px; - border-bottom-left-radius: 5px; - -moz-border-radius-bottomright: 5px; - -webkit-border-bottom-right-radius: 5px; - border-bottom-right-radius: 5px; } - .emojionearea .emojionearea-picker.emojionearea-filters-position-bottom.emojionearea-search-position-bottom .emojionearea-scroll-area { - top: 0; } - .emojionearea .emojionearea-picker.emojionearea-filters-position-bottom.emojionearea-search-position-bottom .emojionearea-search-panel { - top: initial; - bottom: 40px; } - .emojionearea .emojionearea-picker.emojionearea-filters-position-bottom.emojionearea-search-position-top .emojionearea-scroll-area { - top: initial; - bottom: 40px; } - .emojionearea .emojionearea-picker.emojionearea-filters-position-bottom.emojionearea-search-position-top .emojionearea-search-panel { - top: 0; } - .emojionearea .emojionearea-picker.emojionearea-picker-position-top { - margin-top: -286px; - right: -14px; } - .emojionearea .emojionearea-picker.emojionearea-picker-position-top .emojionearea-wrapper:after { - width: 19px; - height: 10px; - background-position: -2px -49px; - bottom: -10px; - right: 20px; } - .emojionearea .emojionearea-picker.emojionearea-picker-position-top.emojionearea-filters-position-bottom .emojionearea-wrapper:after { - background-position: -2px -80px; } - .emojionearea .emojionearea-picker.emojionearea-picker-position-left, .emojionearea .emojionearea-picker.emojionearea-picker-position-right { - margin-right: -326px; - top: -8px; } - .emojionearea .emojionearea-picker.emojionearea-picker-position-left .emojionearea-wrapper:after, .emojionearea .emojionearea-picker.emojionearea-picker-position-right .emojionearea-wrapper:after { - width: 10px; - height: 19px; - background-position: 0px -60px; - top: 13px; - left: -10px; } - .emojionearea .emojionearea-picker.emojionearea-picker-position-left.emojionearea-filters-position-bottom .emojionearea-wrapper:after, .emojionearea .emojionearea-picker.emojionearea-picker-position-right.emojionearea-filters-position-bottom .emojionearea-wrapper:after { - background-position: right -60px; } - .emojionearea .emojionearea-picker.emojionearea-picker-position-bottom { - margin-top: 10px; - right: -14px; - top: 47px; } - .emojionearea .emojionearea-picker.emojionearea-picker-position-bottom .emojionearea-wrapper:after { - width: 19px; - height: 10px; - background-position: -2px -100px; - top: -10px; - right: 20px; } - .emojionearea .emojionearea-picker.emojionearea-picker-position-bottom.emojionearea-filters-position-bottom .emojionearea-wrapper:after { - background-position: -2px -90px; } -.emojionearea .emojionearea-button.active + .emojionearea-picker { - filter: progid:DXImageTransform.Microsoft.Alpha(enabled=false); - opacity: 1; } -.emojionearea .emojionearea-button.active + .emojionearea-picker-position-top { - margin-top: -269px; } -.emojionearea .emojionearea-button.active + .emojionearea-picker-position-left, -.emojionearea .emojionearea-button.active + .emojionearea-picker-position-right { - margin-right: -309px; } -.emojionearea .emojionearea-button.active + .emojionearea-picker-position-bottom { - margin-top: -7px; } -.emojionearea.emojionearea-standalone { - display: inline-block; - width: auto; - box-shadow: none; } - .emojionearea.emojionearea-standalone .emojionearea-editor { - min-height: 33px; - position: relative; - padding: 6px 42px 6px 6px; } - .emojionearea.emojionearea-standalone .emojionearea-editor::before { - content: ""; - position: absolute; - top: 4px; - left: 50%; - bottom: 4px; - border-left: 1px solid #e6e6e6; } - .emojionearea.emojionearea-standalone .emojionearea-editor.has-placeholder { - background-repeat: no-repeat; - background-position: 20px 4px; } - .emojionearea.emojionearea-standalone .emojionearea-editor.has-placeholder .emojioneemoji { - opacity: 0.4; } - .emojionearea.emojionearea-standalone .emojionearea-button { - top: 0; - right: 0; - bottom: 0; - left: 0; - width: auto; - height: auto; } - .emojionearea.emojionearea-standalone .emojionearea-button > div { - right: 6px; - top: 5px; } - .emojionearea.emojionearea-standalone .emojionearea-picker.emojionearea-picker-position-bottom .emojionearea-wrapper:after, .emojionearea.emojionearea-standalone .emojionearea-picker.emojionearea-picker-position-top .emojionearea-wrapper:after { - right: 23px; } - .emojionearea.emojionearea-standalone .emojionearea-picker.emojionearea-picker-position-left .emojionearea-wrapper:after, .emojionearea.emojionearea-standalone .emojionearea-picker.emojionearea-picker-position-right .emojionearea-wrapper:after { - top: 15px; } - -.emojionearea .emojionearea-button > div, .emojionearea .emojionearea-picker .emojionearea-wrapper:after { - background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABcAAABuCAYAAADMB4ipAAAHfElEQVRo3u1XS1NT2Rb+9uOcQF4YlAJzLymFUHaLrdxKULvEUNpdTnRqD532f+AHMLMc94gqR1Zbt8rBnUh3YXipPGKwRDoWgXvrYiFUlEdIkPPYZ/dAkwox5yQCVt/bzRrBPnt9e+211/etFeDQDu3ArL+/X37OeqmRWoH7+vpItfWawStF1tfXR+zW9xW5ne0p8loOcAKuCdwpRft60C8a+X5zTvebCqcAvmidf1GGHtqhHdpf1qqKzsrKipyensbi4iKWl5cBAMFgEG1tbYhGo2hpadlbmxseHpaDg4MAgI6ODng8HgBAPp/H/Pw8AODatWvo7e2tvUHrui7v3r2L+fl5XL58GVeuXIHH49m1N5/Py0ePHmF0dBQdHR24desWVFXdtYdXAn/48CHm5+dx8+ZNRKPRigEUDpuenpb3799H4YaOnWh5eVmOj48jFoshGo0STdPkwMCAXF5elqV7BgYGpKZpMhqNklgshrGxMbx580Y6gicSCTDGEIvFAADpdBqpVArJZLK4J5lMIpVKIZ1OAwBisRgYY0gkEs6Rp1IphMNh+Hw+AgCGYQAANE0r7in8Xfjm8/lIOBzGq1evnMHX19fR1NRU/D8UCoFzjnA4XFwLh8PgnCMUChXXmpqakM1mUfVBS62xsZHk83lZWi1nz579ZA0AhBDO4A0NDchkMsWSJIRAURRiVy26rktVVUkmk0EgEHAGP3XqFKamppDP56Vpmrhz5w5u374t/X4/OP+w3TRNZLNZ6LoO0zSRz+dlf38/Ll686Jzz8+fPQwiBeDwOt9tNrl+/jkwmU6yaQpVkMhncuHEDbrebxONxCCEQiUScIw8Gg+TBgwdyZGQEyWRSdnV1kVQqJYeGhrC6ugrGGEKhEHp7e3Hy5EmSTCblvXv30NPTg2AwSA6M/vF4HCMjI7b0/yzh8vv9AIBsNrt34aokuQsLC7skt729varkHtqftUFf++FHsrq0QN3eBvp68Tfvf9Mv12oFCYU7G//e9nVuO7dpNbe2W4M//yQr0p8yRvyBo1Zr++lwLcCt7afD/sBRizJGavrB1dDYYh47Htrq+Kb7jBNwxzfdZ44dD201NLaYVUkU7ozQpuAJBkARwnRZpunN5zaa5hJjiXLH05GeiMd7JEM5zzHGNQBGZvk/Iv0yYVWMvK0zKk1Dl6ahW5RQobjqdjy+wEZn9PKF0n2d0csXPL7AhuKq26GECtPQLdPQZVtn1LlB69p7yRVVSEiDEGJwRd12e4+8PR3piRQidnuPvOWKuk0IMSSkwRVV6Np7WVVbSqvGsgSnlKkAFNPQXdrOtuKqcxtcUTUAhmUJnVJmlleJo3CVHmAaOlPUOmYJkxFKibQsSRkXhr4juKIKO2BHVSwcoLrqCVdUYho6K3YYRRWmoUtdey/tgKtK7rUffiQAsLq08MnbNLe2WwBgB/zHzueFyD8nwlIfbvdx8eU0WV1aKD1cVAMs9+F2j9gUPEEKemEJIe3AnXy4XfkBoNKSZHNthWfX31EA69VKttyHVyIOY1wRwmS6tqNsrr31vXo5k/bUu4gT2cp9lhbm0rzCJpeUUrE0vS63+c7/6uXMbDUWl/ssLczNFrVFddUT09AZpUy1LKvO0DVfPrfR9HxqfNbuEe185l9MFX3o6tIC5YpKFLWOfdQQ93Zu49j0+FDCDtjOp1yaOQCYhs4Y40wI05XfWj8yPT40Ua2ey33mEmMTtp2IUEq0nW3FKeJPGPjRp1Iz2QUuLUu66txG9NLVSK3gBZ+C1lcE54oqKOOCK6rm8QU2unu+u1ANuNynvFsBAG1ubbdMQ5eGviMAFDuP0w3sfMpvQEtb24fOQncU1bXl8R7JnOu+ZNv97XxKJwY6+PNPsrm13drObVqUMlMIU5OWpVHOc96Go5lTnV2fzC/VfAozD7HTCa6olBBa1Imlhbmq2lLuQ5xaW6nCPfnln0Yt7bDUhzhps8cfKH5//uTXmvS81OeLdqI/ZoROzSZrHqG/OvOPzxuhK5VgJTvV2bW3EdqJRABwrvvS/kfoSkoZvXT1YEbociHr7vnuYEfogpBFL109HKH/h0fomnXg3Lff79r7/MmvVbWG7gX4QObzc99+Tz7mHKah05KcW6ahQ9feS6cbMCdgt7eBWJagjCuUAC5tZzuouuo0Spm0hElc9R4cbf4bVl8v1p6WUmCuqEwIs34ruxaeeTy4uJVd67As08UVlVmWoG5vA7FLG3WMmHEupVTyW+vh2cn4DADMTsaTuc21LiGEhzHOnQ6gNtMrJSBMCKHkNt999WLi0S7hejEZH81n174WpukiIMw0dKq66p3Bw50RwhUVXFGJKUy28Xal48VkfKrSlWenhsc23q2cEB9SR7iiItwZIbbgHn8AlDFCCMW7laXjqZnHjkNpaubJzNuVpWZCKChjxOMPVH/QlaW0f/G3ZLqWWl6ce/bvlddp7yFD/w8Z+njoX1+GoZMjgzMAMDkyeLAMnRh+uKveJ0YGD4ahEyODFRk6OfrL/hj67GnckaHPng7vjaGzyYmaGDr77KktQ38H8tqx8Wja+WIAAAAASUVORK5CYII=') !important; } - -.emojionearea.emojionearea-standalone .emojionearea-editor.has-placeholder { - background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAwAAAAMAQMAAABsu86kAAAABlBMVEUAAAC/v79T5hyIAAAAAXRSTlMAQObYZgAAABNJREFUCNdjYGNgQEb/P4AQqiAASiUEG6Vit44AAAAASUVORK5CYII=') !important; } - -/*# sourceMappingURL=emojionearea.css.map */ diff --git a/cookbook/static/emojionearea/emojionearea.js b/cookbook/static/emojionearea/emojionearea.js deleted file mode 100644 index db2cc8e7..00000000 --- a/cookbook/static/emojionearea/emojionearea.js +++ /dev/null @@ -1,1743 +0,0 @@ -/*! - * EmojioneArea v3.4.1 - * https://github.com/mervick/emojionearea - * Copyright Andrey Izman and other contributors - * Released under the MIT license - * Date: 2018-04-27T09:03Z - */ -window = ( typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {} ); -document = window.document || {}; - -; ( function ( factory, global ) { - if ( typeof require === "function" && typeof exports === "object" && typeof module === "object" ) { - - // CommonJS - factory( require( "jquery" ) ); - } else if ( typeof define === "function" && define.amd ) { - - // AMD - define( [ "jquery" ], factory ); - } else { - - // Normal script tag - factory( global.jQuery ); - } -}( function ( $ ) { - "use strict"; - - var unique = 0; - var eventStorage = {}; - var possibleEvents = {}; - var emojione = window.emojione; - var readyCallbacks = []; - function emojioneReady (fn) { - if (emojione) { - fn(); - } else { - readyCallbacks.push(fn); - } - }; - var blankImg = 'data:image/gif;base64,R0lGODlhAQABAJH/AP///wAAAMDAwAAAACH5BAEAAAIALAAAAAABAAEAAAICVAEAOw=='; - var slice = [].slice; - var css_class = "emojionearea"; - var emojioneSupportMode = 0; - var invisibleChar = '​'; - function trigger(self, event, args) { - var result = true, j = 1; - if (event) { - event = event.toLowerCase(); - do { - var _event = j==1 ? '@' + event : event; - if (eventStorage[self.id][_event] && eventStorage[self.id][_event].length) { - $.each(eventStorage[self.id][_event], function (i, fn) { - return result = fn.apply(self, args|| []) !== false; - }); - } - } while (result && !!j--); - } - return result; - } - function attach(self, element, events, target) { - target = target || function (event, callerEvent) { return $(callerEvent.currentTarget) }; - $.each(events, function(event, link) { - event = $.isArray(events) ? link : event; - (possibleEvents[self.id][link] || (possibleEvents[self.id][link] = [])) - .push([element, event, target]); - }); - } - function getTemplate(template, unicode, shortname) { - var imageType = emojione.imageType, imagePath; - if (imageType=='svg'){ - imagePath = emojione.imagePathSVG; - } else { - imagePath = emojione.imagePathPNG; - } - var friendlyName = ''; - if (shortname) { - friendlyName = shortname.substr(1, shortname.length - 2).replace(/_/g, ' ').replace(/\w\S*/g, function(txt) { return txt.charAt(0).toUpperCase() + txt.substr(1).toLowerCase();}); - } - var fname = ''; - if (unicode.uc_base && emojioneSupportMode > 4) { - fname = unicode.uc_base; - unicode = unicode.uc_output.toUpperCase(); - } else { - fname = unicode; - } - template = template.replace('{name}', shortname || '') - .replace('{friendlyName}', friendlyName) - .replace('{img}', imagePath + (emojioneSupportMode < 2 ? fname.toUpperCase() : fname) + '.' + imageType) - .replace('{uni}', unicode); - - if(shortname) { - template = template.replace('{alt}', emojione.shortnameToUnicode(shortname)); - } else { - template = template.replace('{alt}', emojione.convert(unicode)); - } - - return template; - }; - function shortnameTo(str, template, clear) { - return str.replace(/:?\+?[\w_\-]+:?/g, function(shortname) { - shortname = ":" + shortname.replace(/:$/,'').replace(/^:/,'') + ":"; - var unicode = emojione.emojioneList[shortname]; - if (unicode) { - if (emojioneSupportMode > 4) { - return getTemplate(template, unicode, shortname); - } else { - if (emojioneSupportMode > 3) unicode = unicode.unicode; - return getTemplate(template, unicode[unicode.length-1], shortname); - } - } - return clear ? '' : shortname; - }); - }; - function pasteHtmlAtCaret(html) { - var sel, range; - if (window.getSelection) { - sel = window.getSelection(); - if (sel.getRangeAt && sel.rangeCount) { - range = sel.getRangeAt(0); - range.deleteContents(); - var el = document.createElement("div"); - el.innerHTML = html; - var frag = document.createDocumentFragment(), node, lastNode; - while ( (node = el.firstChild) ) { - lastNode = frag.appendChild(node); - } - range.insertNode(frag); - if (lastNode) { - range = range.cloneRange(); - range.setStartAfter(lastNode); - range.collapse(true); - sel.removeAllRanges(); - sel.addRange(range); - } - } - } else if (document.selection && document.selection.type != "Control") { - document.selection.createRange().pasteHTML(html); - } - } - function getEmojioneVersion() { - return window.emojioneVersion || '3.1.2'; - }; - function isObject(variable) { - return typeof variable === 'object'; - }; - function detectVersion(emojione) { - var version; - if (emojione.cacheBustParam) { - version = emojione.cacheBustParam; - if (!isObject(emojione['jsEscapeMap'])) return '1.5.2'; - if (version === "?v=1.2.4") return '2.0.0'; - if (version === "?v=2.0.1") return '2.1.0'; // v2.0.1 || v2.1.0 - if (version === "?v=2.1.1") return '2.1.1'; - if (version === "?v=2.1.2") return '2.1.2'; - if (version === "?v=2.1.3") return '2.1.3'; - if (version === "?v=2.1.4") return '2.1.4'; - if (version === "?v=2.2.7") return '2.2.7'; - return '2.2.7'; - } else { - return emojione.emojiVersion; - } - }; - function getSupportMode(version) { - switch (version) { - case '1.5.2': return 0; - case '2.0.0': return 1; - case '2.1.0': - case '2.1.1': return 2; - case '2.1.2': return 3; - case '2.1.3': - case '2.1.4': - case '2.2.7': return 4; - case '3.0.1': - case '3.0.2': - case '3.0.3': - case '3.0': return 5; - case '3.1.0': - case '3.1.1': - case '3.1.2': - case '3.1': - default: return 6; - } - }; - function getDefaultOptions () { - if ($.fn.emojioneArea && $.fn.emojioneArea.defaults) { - return $.fn.emojioneArea.defaults; - } - - var defaultOptions = { - attributes: { - dir : "ltr", - spellcheck : false, - autocomplete : "off", - autocorrect : "off", - autocapitalize : "off", - }, - search : true, - placeholder : null, - emojiPlaceholder : ":smiley:", - searchPlaceholder : "SEARCH", - container : null, - hideSource : true, - shortnames : true, - sprite : true, - pickerPosition : "top", // top | bottom | right - filtersPosition : "top", // top | bottom - searchPosition : "top", // top | bottom - hidePickerOnBlur : true, - buttonTitle : "Use the TAB key to insert emoji faster", - tones : true, - tonesStyle : "bullet", // bullet | radio | square | checkbox - inline : null, // null - auto - saveEmojisAs : "unicode", // unicode | shortname | image - shortcuts : true, - autocomplete : true, - autocompleteTones : false, - standalone : false, - useInternalCDN : true, // Use the self loading mechanism - imageType : "png", // Default image type used by internal CDN - recentEmojis : true, - textcomplete: { - maxCount : 15, - placement : null // null - default | top | absleft | absright - } - }; - - var supportMode = !emojione ? getSupportMode(getEmojioneVersion()) : getSupportMode(detectVersion(emojione)); - - if (supportMode > 4) { - defaultOptions.filters = { - tones: { - title: "Diversity", - emoji: "open_hands raised_hands palms_up_together clap pray thumbsup thumbsdown punch fist left_facing_fist right_facing_fist " + - "fingers_crossed v metal love_you_gesture ok_hand point_left point_right point_up_2 point_down point_up raised_hand " + - "raised_back_of_hand hand_splayed vulcan wave call_me muscle middle_finger writing_hand selfie nail_care ear " + - "nose baby boy girl man woman blond-haired_woman blond-haired_man older_man older_woman " + - "man_with_chinese_cap woman_wearing_turban man_wearing_turban woman_police_officer " + - "man_police_officer woman_construction_worker man_construction_worker " + - "woman_guard man_guard woman_detective man_detective woman_health_worker man_health_worker " + - "woman_farmer man_farmer woman_cook man_cook woman_student man_student woman_singer man_singer woman_teacher " + - "man_teacher woman_factory_worker man_factory_worker woman_technologist man_technologist woman_office_worker " + - "man_office_worker woman_mechanic man_mechanic woman_scientist man_scientist woman_artist man_artist " + - "woman_firefighter man_firefighter woman_pilot man_pilot woman_astronaut man_astronaut woman_judge " + - "man_judge mrs_claus santa princess prince bride_with_veil man_in_tuxedo angel pregnant_woman " + - "breast_feeding woman_bowing man_bowing man_tipping_hand woman_tipping_hand " + - "man_gesturing_no woman_gesturing_no man_gesturing_ok woman_gesturing_ok " + - "man_raising_hand woman_raising_hand woman_facepalming man_facepalming " + - "woman_shrugging man_shrugging man_pouting woman_pouting " + - "man_frowning woman_frowning man_getting_haircut woman_getting_haircut " + - "man_getting_face_massage woman_getting_face_massage man_in_business_suit_levitating dancer man_dancing " + - "woman_walking man_walking woman_running man_running adult child older_adult " + - "bearded_person woman_with_headscarf woman_mage man_mage " + - "woman_fairy man_fairy woman_vampire man_vampire mermaid merman woman_elf man_elf " + - "snowboarder woman_lifting_weights man_lifting_weights woman_cartwheeling " + - "man_cartwheeling woman_bouncing_ball man_bouncing_ball " + - "woman_playing_handball man_playing_handball woman_golfing man_golfing " + - "woman_surfing man_surfing woman_swimming man_swimming woman_playing_water_polo " + - "man_playing_water_polo woman_rowing_boat man_rowing_boat " + - "horse_racing woman_biking man_biking woman_mountain_biking " + - "man_mountain_biking woman_juggling man_juggling " + - "woman_in_steamy_room man_in_steamy_room woman_climbing " + - "man_climbing woman_in_lotus_position man_in_lotus_position bath person_in_bed" - }, - - recent: { - icon: "clock3", - title: "Recent", - emoji: "" - }, - - smileys_people: { - icon: "yum", - title: "Smileys & People", - emoji: "grinning smiley smile grin laughing sweat_smile joy rofl relaxed blush innocent slight_smile upside_down " + - "wink relieved crazy_face star_struck heart_eyes kissing_heart kissing kissing_smiling_eyes kissing_closed_eyes yum " + - "stuck_out_tongue_winking_eye stuck_out_tongue_closed_eyes stuck_out_tongue money_mouth hugging nerd sunglasses " + - "cowboy smirk unamused disappointed pensive worried face_with_raised_eyebrow face_with_monocle confused slight_frown " + - "frowning2 persevere confounded tired_face weary triumph angry rage face_with_symbols_over_mouth " + - "no_mouth neutral_face expressionless hushed frowning anguished open_mouth astonished dizzy_face exploding_head flushed scream " + - "fearful cold_sweat cry disappointed_relieved drooling_face sob sweat sleepy sleeping rolling_eyes thinking " + - "shushing_face face_with_hand_over_mouth lying_face grimacing zipper_mouth face_vomiting nauseated_face sneezing_face mask thermometer_face " + - "head_bandage smiling_imp imp japanese_ogre japanese_goblin poop ghost skull skull_crossbones alien space_invader " + - "robot jack_o_lantern clown smiley_cat smile_cat joy_cat heart_eyes_cat smirk_cat kissing_cat scream_cat crying_cat_face " + - "pouting_cat open_hands raised_hands palms_up_together clap pray handshake thumbsup thumbsdown punch fist left_facing_fist " + - "right_facing_fist fingers_crossed v metal love_you_gesture ok_hand point_left point_right point_up_2 point_down point_up " + - "raised_hand raised_back_of_hand hand_splayed vulcan wave call_me muscle middle_finger writing_hand selfie " + - "nail_care ring lipstick kiss lips tongue ear nose footprints eye eyes speaking_head bust_in_silhouette " + - "busts_in_silhouette baby boy girl man woman blond-haired_woman blond_haired_man older_man older_woman " + - "man_with_chinese_cap woman_wearing_turban man_wearing_turban woman_police_officer police_officer " + - "woman_construction_worker construction_worker woman_guard guard woman_detective detective woman_health_worker " + - "man_health_worker woman_farmer man_farmer woman_cook man_cook woman_student man_student woman_singer man_singer " + - "woman_teacher man_teacher woman_factory_worker man_factory_worker woman_technologist man_technologist " + - "woman_office_worker man_office_worker woman_mechanic man_mechanic woman_scientist man_scientist woman_artist " + - "man_artist woman_firefighter man_firefighter woman_pilot man_pilot woman_astronaut man_astronaut woman_judge " + - "man_judge mrs_claus santa princess prince bride_with_veil man_in_tuxedo angel pregnant_woman breast_feeding woman_bowing " + - "man_bowing woman_tipping_hand man_tipping_hand woman_gesturing_no man_gesturing_no woman_gesturing_ok " + - "man_gesturing_ok woman_raising_hand man_raising_hand woman_facepalming man_facepalming woman_shrugging " + - "man_shrugging woman_pouting man_pouting woman_frowning man_frowning woman_getting_haircut man_getting_haircut " + - "woman_getting_face_massage man_getting_face_massage man_in_business_suit_levitating dancer man_dancing women_with_bunny_ears_partying " + - "men_with_bunny_ears_partying woman_walking man_walking woman_running man_running couple two_women_holding_hands " + - "two_men_holding_hands couple_with_heart couple_ww couple_mm couplekiss kiss_ww kiss_mm family family_mwg family_mwgb " + - "family_mwbb family_mwgg family_wwb family_wwg family_wwgb family_wwbb family_wwgg family_mmb family_mmg family_mmgb " + - "family_mmbb family_mmgg family_woman_boy family_woman_girl family_woman_girl_boy family_woman_boy_boy " + - "family_woman_girl_girl family_man_boy family_man_girl family_man_girl_boy family_man_boy_boy family_man_girl_girl " + - "bearded_person woman_with_headscarf woman_mage man_mage woman_fairy man_fairy woman_vampire man_vampire " + - "mermaid merman woman_elf man_elf woman_genie man_genie woman_zombie man_zombie " + - "womans_clothes shirt jeans necktie dress bikini kimono high_heel sandal boot mans_shoe athletic_shoe womans_hat " + - "tophat mortar_board crown helmet_with_cross school_satchel pouch purse handbag briefcase eyeglasses dark_sunglasses " + - "closed_umbrella umbrella2 brain billed_cap scarf gloves coat socks " - }, - - animals_nature: { - icon: "hamster", - title: "Animals & Nature", - emoji: "dog cat mouse hamster rabbit fox bear panda_face koala tiger lion_face cow pig pig_nose frog monkey_face see_no_evil " + - "hear_no_evil speak_no_evil monkey chicken penguin bird baby_chick hatching_chick hatched_chick duck eagle owl bat wolf boar " + - "horse unicorn bee bug butterfly snail shell beetle ant spider spider_web turtle snake lizard scorpion crab squid octopus shrimp " + - "tropical_fish fish blowfish dolphin shark whale whale2 crocodile leopard tiger2 water_buffalo ox cow2 deer dromedary_camel camel " + - "elephant rhino gorilla racehorse pig2 goat ram sheep dog2 poodle cat2 rooster turkey dove rabbit2 mouse2 rat chipmunk dragon " + - "giraffe zebra hedgehog sauropod t_rex cricket dragon_face feet cactus christmas_tree evergreen_tree deciduous_tree palm_tree seedling herb shamrock four_leaf_clover " + - "bamboo tanabata_tree leaves fallen_leaf maple_leaf mushroom ear_of_rice bouquet tulip rose wilted_rose sunflower blossom " + - "cherry_blossom hibiscus earth_americas earth_africa earth_asia full_moon waning_gibbous_moon last_quarter_moon " + - "waning_crescent_moon new_moon waxing_crescent_moon first_quarter_moon waxing_gibbous_moon new_moon_with_face " + - "full_moon_with_face sun_with_face first_quarter_moon_with_face last_quarter_moon_with_face crescent_moon dizzy star star2 " + - "sparkles zap fire boom comet sunny white_sun_small_cloud partly_sunny white_sun_cloud white_sun_rain_cloud rainbow cloud " + - "cloud_rain thunder_cloud_rain cloud_lightning cloud_snow snowman2 snowman snowflake wind_blowing_face dash cloud_tornado " + - "fog ocean droplet sweat_drops umbrella " - }, - - food_drink: { - icon: "pizza", - title: "Food & Drink", - emoji: "green_apple apple pear tangerine lemon banana watermelon grapes strawberry melon cherries peach pineapple kiwi " + - "avocado tomato eggplant cucumber carrot corn hot_pepper potato sweet_potato chestnut peanuts honey_pot croissant " + - "bread french_bread cheese egg cooking bacon pancakes fried_shrimp poultry_leg meat_on_bone pizza hotdog hamburger " + - "fries stuffed_flatbread taco burrito salad shallow_pan_of_food spaghetti ramen stew fish_cake sushi bento curry " + - "rice_ball rice rice_cracker oden dango shaved_ice ice_cream icecream cake birthday custard lollipop candy " + - "chocolate_bar popcorn doughnut cookie milk baby_bottle coffee tea sake beer beers champagne_glass wine_glass " + - "tumbler_glass cocktail tropical_drink champagne spoon fork_and_knife fork_knife_plate dumpling fortune_cookie " + - "takeout_box chopsticks bowl_with_spoon cup_with_straw coconut broccoli pie pretzel cut_of_meat sandwich canned_food" - }, - - activity: { - icon: "basketball", - title: "Activity", - emoji: "soccer basketball football baseball tennis volleyball rugby_football 8ball ping_pong badminton goal hockey field_hockey " + - "cricket_game golf bow_and_arrow fishing_pole_and_fish boxing_glove martial_arts_uniform ice_skate ski skier snowboarder " + - "woman_lifting_weights man_lifting_weights person_fencing women_wrestling men_wrestling woman_cartwheeling " + - "man_cartwheeling woman_bouncing_ball man_bouncing_ball woman_playing_handball man_playing_handball woman_golfing " + - "man_golfing woman_surfing man_surfing woman_swimming man_swimming woman_playing_water_polo " + - "man_playing_water_polo woman_rowing_boat man_rowing_boat horse_racing woman_biking man_biking woman_mountain_biking man_mountain_biking " + - "woman_in_steamy_room man_in_steamy_room woman_climbing man_climbing woman_in_lotus_position man_in_lotus_position " + - "running_shirt_with_sash medal military_medal first_place second_place " + - "third_place trophy rosette reminder_ribbon ticket tickets circus_tent woman_juggling man_juggling performing_arts art " + - "clapper microphone headphones musical_score musical_keyboard drum saxophone trumpet guitar violin game_die dart bowling " + - "video_game slot_machine sled curling_stone " - }, - - travel_places: { - icon: "rocket", - title: "Travel & Places", - emoji: "red_car taxi blue_car bus trolleybus race_car police_car ambulance fire_engine minibus truck articulated_lorry tractor " + - "scooter bike motor_scooter motorcycle rotating_light oncoming_police_car oncoming_bus oncoming_automobile oncoming_taxi " + - "aerial_tramway mountain_cableway suspension_railway railway_car train mountain_railway monorail bullettrain_side " + - "bullettrain_front light_rail steam_locomotive train2 metro tram station helicopter airplane_small airplane " + - "airplane_departure airplane_arriving rocket satellite_orbital seat canoe sailboat motorboat speedboat cruise_ship " + - "ferry ship anchor construction fuelpump busstop vertical_traffic_light traffic_light map moyai statue_of_liberty " + - "fountain tokyo_tower european_castle japanese_castle stadium ferris_wheel roller_coaster carousel_horse beach_umbrella " + - "beach island mountain mountain_snow mount_fuji volcano desert camping tent railway_track motorway construction_site " + - "factory house house_with_garden homes house_abandoned office department_store post_office european_post_office hospital " + - "bank hotel convenience_store school love_hotel wedding classical_building church mosque synagogue kaaba shinto_shrine " + - "japan rice_scene park sunrise sunrise_over_mountains stars sparkler fireworks city_sunset city_dusk cityscape " + - "night_with_stars milky_way bridge_at_night foggy flying_saucer" - }, - - objects: { - icon: "bulb", - title: "Objects", - emoji: "watch iphone calling computer keyboard desktop printer mouse_three_button trackball joystick compression minidisc " + - "floppy_disk cd dvd vhs camera camera_with_flash video_camera movie_camera projector film_frames telephone_receiver " + - "telephone pager fax tv radio microphone2 level_slider control_knobs stopwatch timer alarm_clock clock hourglass " + - "hourglass_flowing_sand satellite battery electric_plug bulb flashlight candle wastebasket oil money_with_wings " + - "dollar yen euro pound moneybag credit_card gem scales wrench hammer hammer_pick tools pick nut_and_bolt gear " + - "chains gun bomb knife dagger crossed_swords shield smoking coffin urn amphora crystal_ball prayer_beads barber " + - "alembic telescope microscope hole pill syringe thermometer toilet potable_water shower bathtub bath bellhop key " + - "key2 door couch bed sleeping_accommodation frame_photo shopping_bags shopping_cart gift balloon flags ribbon " + - "confetti_ball tada dolls izakaya_lantern wind_chime envelope envelope_with_arrow incoming_envelope e-mail " + - "love_letter inbox_tray outbox_tray package label mailbox_closed mailbox mailbox_with_mail mailbox_with_no_mail " + - "postbox postal_horn scroll page_with_curl page_facing_up bookmark_tabs bar_chart chart_with_upwards_trend " + - "chart_with_downwards_trend notepad_spiral calendar_spiral calendar date card_index card_box ballot_box " + - "file_cabinet clipboard file_folder open_file_folder dividers newspaper2 newspaper notebook " + - "notebook_with_decorative_cover ledger closed_book green_book blue_book orange_book books book bookmark link " + - "paperclip paperclips triangular_ruler straight_ruler pushpin round_pushpin scissors pen_ballpoint pen_fountain " + - "black_nib paintbrush crayon pencil pencil2 mag mag_right lock_with_ink_pen closed_lock_with_key lock unlock" - }, - - symbols: { - icon: "heartpulse", - title: "Symbols", - emoji: "heart orange_heart yellow_heart green_heart blue_heart purple_heart black_heart broken_heart heart_exclamation two_hearts " + - "revolving_hearts heartbeat heartpulse sparkling_heart cupid gift_heart heart_decoration peace cross star_and_crescent " + - "om_symbol wheel_of_dharma star_of_david six_pointed_star menorah yin_yang orthodox_cross place_of_worship ophiuchus " + - "aries taurus gemini cancer leo virgo libra scorpius sagittarius capricorn aquarius pisces id atom accept radioactive " + - "biohazard mobile_phone_off vibration_mode u6709 u7121 u7533 u55b6 u6708 eight_pointed_black_star vs white_flower " + - "ideograph_advantage secret congratulations u5408 u6e80 u5272 u7981 a b ab cl o2 sos x o octagonal_sign no_entry " + - "name_badge no_entry_sign 100 anger hotsprings no_pedestrians do_not_litter no_bicycles non-potable_water underage " + - "no_mobile_phones no_smoking exclamation grey_exclamation question grey_question bangbang interrobang low_brightness " + - "high_brightness part_alternation_mark warning children_crossing trident fleur-de-lis beginner recycle " + - "white_check_mark u6307 chart sparkle eight_spoked_asterisk negative_squared_cross_mark globe_with_meridians " + - "diamond_shape_with_a_dot_inside m cyclone zzz atm wc wheelchair parking u7a7a sa passport_control customs " + - "baggage_claim left_luggage mens womens baby_symbol restroom put_litter_in_its_place cinema signal_strength koko " + - "symbols information_source abc abcd capital_abcd ng ok up cool new free zero one two three four five six seven " + - "eight nine keycap_ten 1234 hash asterisk arrow_forward pause_button play_pause stop_button record_button eject " + - "track_next track_previous fast_forward rewind arrow_double_up arrow_double_down arrow_backward arrow_up_small " + - "arrow_down_small arrow_right arrow_left arrow_up arrow_down arrow_upper_right arrow_lower_right arrow_lower_left " + - "arrow_upper_left arrow_up_down left_right_arrow arrow_right_hook leftwards_arrow_with_hook arrow_heading_up " + - "arrow_heading_down twisted_rightwards_arrows repeat repeat_one arrows_counterclockwise arrows_clockwise " + - "musical_note notes heavy_plus_sign heavy_minus_sign heavy_division_sign heavy_multiplication_x heavy_dollar_sign " + - "currency_exchange tm copyright registered wavy_dash curly_loop loop end back on top soon heavy_check_mark " + - "ballot_box_with_check radio_button white_circle black_circle red_circle blue_circle small_red_triangle " + - "small_red_triangle_down small_orange_diamond small_blue_diamond large_orange_diamond large_blue_diamond " + - "white_square_button black_square_button black_small_square white_small_square black_medium_small_square " + - "white_medium_small_square black_medium_square white_medium_square black_large_square white_large_square speaker " + - "mute sound loud_sound bell no_bell mega loudspeaker speech_left eye_in_speech_bubble speech_balloon thought_balloon " + - "anger_right spades clubs hearts diamonds black_joker flower_playing_cards mahjong clock1 clock2 clock3 clock4 clock5 " + - "clock6 clock7 clock8 clock9 clock10 clock11 clock12 clock130 clock230 clock330 clock430 clock530 clock630 " + - "clock730 clock830 clock930 clock1030 clock1130 clock1230" - }, - - flags: { - icon: "flag_gb", - title: "Flags", - emoji: "flag_white flag_black checkered_flag triangular_flag_on_post rainbow_flag flag_af flag_ax flag_al flag_dz flag_as " + - "flag_ad flag_ao flag_ai flag_aq flag_ag flag_ar flag_am flag_aw flag_au flag_at flag_az flag_bs flag_bh flag_bd flag_bb " + - "flag_by flag_be flag_bz flag_bj flag_bm flag_bt flag_bo flag_ba flag_bw flag_br flag_io flag_vg flag_bn flag_bg flag_bf " + - "flag_bi flag_kh flag_cm flag_ca flag_ic flag_cv flag_bq flag_ky flag_cf flag_td flag_cl flag_cn flag_cx flag_cc flag_co " + - "flag_km flag_cg flag_cd flag_ck flag_cr flag_ci flag_hr flag_cu flag_cw flag_cy flag_cz flag_dk flag_dj flag_dm flag_do " + - "flag_ec flag_eg flag_sv flag_gq flag_er flag_ee flag_et flag_eu flag_fk flag_fo flag_fj flag_fi flag_fr flag_gf flag_pf " + - "flag_tf flag_ga flag_gm flag_ge flag_de flag_gh flag_gi flag_gr flag_gl flag_gd flag_gp flag_gu flag_gt flag_gg flag_gn " + - "flag_gw flag_gy flag_ht flag_hn flag_hk flag_hu flag_is flag_in flag_id flag_ir flag_iq flag_ie flag_im flag_il flag_it " + - "flag_jm flag_jp crossed_flags flag_je flag_jo flag_kz flag_ke flag_ki flag_xk flag_kw flag_kg flag_la flag_lv flag_lb " + - "flag_ls flag_lr flag_ly flag_li flag_lt flag_lu flag_mo flag_mk flag_mg flag_mw flag_my flag_mv flag_ml flag_mt flag_mh " + - "flag_mq flag_mr flag_mu flag_yt flag_mx flag_fm flag_md flag_mc flag_mn flag_me flag_ms flag_ma flag_mz flag_mm flag_na " + - "flag_nr flag_np flag_nl flag_nc flag_nz flag_ni flag_ne flag_ng flag_nu flag_nf flag_kp flag_mp flag_no flag_om flag_pk " + - "flag_pw flag_ps flag_pa flag_pg flag_py flag_pe flag_ph flag_pn flag_pl flag_pt flag_pr flag_qa flag_re flag_ro flag_ru " + - "flag_rw flag_ws flag_sm flag_st flag_sa flag_sn flag_rs flag_sc flag_sl flag_sg flag_sx flag_sk flag_si flag_gs flag_sb " + - "flag_so flag_za flag_kr flag_ss flag_es flag_lk flag_bl flag_sh flag_kn flag_lc flag_pm flag_vc flag_sd flag_sr flag_sz " + - "flag_se flag_ch flag_sy flag_tw flag_tj flag_tz flag_th flag_tl flag_tg flag_tk flag_to flag_tt flag_tn flag_tr flag_tm " + - "flag_tc flag_tv flag_vi flag_ug flag_ua flag_ae flag_gb flag_us flag_uy flag_uz flag_vu flag_va flag_ve flag_vn flag_wf " + - "flag_eh flag_ye flag_zm flag_zw flag_ac flag_ta flag_bv flag_hm flag_sj flag_um flag_ea flag_cp flag_dg flag_mf " + - "united_nations england scotland wales" - } - }; - } else { - defaultOptions.filters = { - tones: { - title: "Diversity", - emoji: "santa runner surfer swimmer lifter ear nose point_up_2 point_down point_left point_right punch " + - "wave ok_hand thumbsup thumbsdown clap open_hands boy girl man woman cop bride_with_veil person_with_blond_hair " + - "man_with_gua_pi_mao man_with_turban older_man grandma baby construction_worker princess angel " + - "information_desk_person guardsman dancer nail_care massage haircut muscle spy hand_splayed middle_finger " + - "vulcan no_good ok_woman bow raising_hand raised_hands person_frowning person_with_pouting_face pray rowboat " + - "bicyclist mountain_bicyclist walking bath metal point_up basketball_player fist raised_hand v writing_hand" - }, - - recent: { - icon: "clock3", - title: "Recent", - emoji: "" - }, - - smileys_people: { - icon: "yum", - title: "Smileys & People", - emoji: "grinning grimacing grin joy smiley smile sweat_smile laughing innocent wink blush slight_smile " + - "upside_down relaxed yum relieved heart_eyes kissing_heart kissing kissing_smiling_eyes " + - "kissing_closed_eyes stuck_out_tongue_winking_eye stuck_out_tongue_closed_eyes stuck_out_tongue " + - "money_mouth nerd sunglasses hugging smirk no_mouth neutral_face expressionless unamused rolling_eyes " + - "thinking flushed disappointed worried angry rage pensive confused slight_frown frowning2 persevere " + - "confounded tired_face weary triumph open_mouth scream fearful cold_sweat hushed frowning anguished " + - "cry disappointed_relieved sleepy sweat sob dizzy_face astonished zipper_mouth mask thermometer_face " + - "head_bandage sleeping zzz poop smiling_imp imp japanese_ogre japanese_goblin skull ghost alien robot " + - "smiley_cat smile_cat joy_cat heart_eyes_cat smirk_cat kissing_cat scream_cat crying_cat_face " + - "pouting_cat raised_hands clap wave thumbsup thumbsdown punch fist v ok_hand raised_hand open_hands " + - "muscle pray point_up point_up_2 point_down point_left point_right middle_finger hand_splayed metal " + - "vulcan writing_hand nail_care lips tongue ear nose eye eyes bust_in_silhouette busts_in_silhouette " + - "speaking_head baby boy girl man woman person_with_blond_hair older_man older_woman man_with_gua_pi_mao " + - "man_with_turban cop construction_worker guardsman spy santa angel princess bride_with_veil walking " + - "runner dancer dancers couple two_men_holding_hands two_women_holding_hands bow information_desk_person " + - "no_good ok_woman raising_hand person_with_pouting_face person_frowning haircut massage couple_with_heart " + - "couple_ww couple_mm couplekiss kiss_ww kiss_mm family family_mwg family_mwgb family_mwbb family_mwgg " + - "family_wwb family_wwg family_wwgb family_wwbb family_wwgg family_mmb family_mmg family_mmgb family_mmbb " + - "family_mmgg womans_clothes shirt jeans necktie dress bikini kimono lipstick kiss footprints high_heel " + - "sandal boot mans_shoe athletic_shoe womans_hat tophat helmet_with_cross mortar_board crown school_satchel " + - "pouch purse handbag briefcase eyeglasses dark_sunglasses ring closed_umbrella" - }, - - animals_nature: { - icon: "hamster", - title: "Animals & Nature", - emoji: "dog cat mouse hamster rabbit bear panda_face koala tiger lion_face cow pig pig_nose frog " + - "octopus monkey_face see_no_evil hear_no_evil speak_no_evil monkey chicken penguin bird baby_chick " + - "hatching_chick hatched_chick wolf boar horse unicorn bee bug snail beetle ant spider scorpion crab " + - "snake turtle tropical_fish fish blowfish dolphin whale whale2 crocodile leopard tiger2 water_buffalo " + - "ox cow2 dromedary_camel camel elephant goat ram sheep racehorse pig2 rat mouse2 rooster turkey dove " + - "dog2 poodle cat2 rabbit2 chipmunk feet dragon dragon_face cactus christmas_tree evergreen_tree " + - "deciduous_tree palm_tree seedling herb shamrock four_leaf_clover bamboo tanabata_tree leaves " + - "fallen_leaf maple_leaf ear_of_rice hibiscus sunflower rose tulip blossom cherry_blossom bouquet " + - "mushroom chestnut jack_o_lantern shell spider_web earth_americas earth_africa earth_asia full_moon " + - "waning_gibbous_moon last_quarter_moon waning_crescent_moon new_moon waxing_crescent_moon " + - "first_quarter_moon waxing_gibbous_moon new_moon_with_face full_moon_with_face first_quarter_moon_with_face " + - "last_quarter_moon_with_face sun_with_face crescent_moon star star2 dizzy sparkles comet sunny " + - "white_sun_small_cloud partly_sunny white_sun_cloud white_sun_rain_cloud cloud cloud_rain " + - "thunder_cloud_rain cloud_lightning zap fire boom snowflake cloud_snow snowman2 snowman wind_blowing_face " + - "dash cloud_tornado fog umbrella2 umbrella droplet sweat_drops ocean" - }, - - food_drink: { - icon: "pizza", - title: "Food & Drink", - emoji: "green_apple apple pear tangerine lemon banana watermelon grapes strawberry melon cherries peach " + - "pineapple tomato eggplant hot_pepper corn sweet_potato honey_pot bread cheese poultry_leg meat_on_bone " + - "fried_shrimp egg hamburger fries hotdog pizza spaghetti taco burrito ramen stew fish_cake sushi bento " + - "curry rice_ball rice rice_cracker oden dango shaved_ice ice_cream icecream cake birthday custard candy " + - "lollipop chocolate_bar popcorn doughnut cookie beer beers wine_glass cocktail tropical_drink champagne " + - "sake tea coffee baby_bottle fork_and_knife fork_knife_plate" - }, - - activity: { - icon: "basketball", - title: "Activity", - emoji: "soccer basketball football baseball tennis volleyball rugby_football 8ball golf golfer ping_pong " + - "badminton hockey field_hockey cricket ski skier snowboarder ice_skate bow_and_arrow fishing_pole_and_fish " + - "rowboat swimmer surfer bath basketball_player lifter bicyclist mountain_bicyclist horse_racing levitate " + - "trophy running_shirt_with_sash medal military_medal reminder_ribbon rosette ticket tickets performing_arts " + - "art circus_tent microphone headphones musical_score musical_keyboard saxophone trumpet guitar violin " + - "clapper video_game space_invader dart game_die slot_machine bowling" - }, - - travel_places: { - icon: "rocket", - title: "Travel & Places", - emoji: "red_car taxi blue_car bus trolleybus race_car police_car ambulance fire_engine minibus truck " + - "articulated_lorry tractor motorcycle bike rotating_light oncoming_police_car oncoming_bus " + - "oncoming_automobile oncoming_taxi aerial_tramway mountain_cableway suspension_railway railway_car " + - "train monorail bullettrain_side bullettrain_front light_rail mountain_railway steam_locomotive train2 " + - "metro tram station helicopter airplane_small airplane airplane_departure airplane_arriving sailboat " + - "motorboat speedboat ferry cruise_ship rocket satellite_orbital seat anchor construction fuelpump busstop " + - "vertical_traffic_light traffic_light checkered_flag ship ferris_wheel roller_coaster carousel_horse " + - "construction_site foggy tokyo_tower factory fountain rice_scene mountain mountain_snow mount_fuji volcano " + - "japan camping tent park motorway railway_track sunrise sunrise_over_mountains desert beach island " + - "city_sunset city_dusk cityscape night_with_stars bridge_at_night milky_way stars sparkler fireworks " + - "rainbow homes european_castle japanese_castle stadium statue_of_liberty house house_with_garden " + - "house_abandoned office department_store post_office european_post_office hospital bank hotel " + - "convenience_store school love_hotel wedding classical_building church mosque synagogue kaaba shinto_shrine" - }, - - objects: { - icon: "bulb", - title: "Objects", - emoji: "watch iphone calling computer keyboard desktop printer mouse_three_button trackball joystick " + - "compression minidisc floppy_disk cd dvd vhs camera camera_with_flash video_camera movie_camera projector " + - "film_frames telephone_receiver telephone pager fax tv radio microphone2 level_slider control_knobs " + - "stopwatch timer alarm_clock clock hourglass_flowing_sand hourglass satellite battery electric_plug bulb " + - "flashlight candle wastebasket oil money_with_wings dollar yen euro pound moneybag credit_card gem scales " + - "wrench hammer hammer_pick tools pick nut_and_bolt gear chains gun bomb knife dagger crossed_swords shield " + - "smoking skull_crossbones coffin urn amphora crystal_ball prayer_beads barber alembic telescope microscope " + - "hole pill syringe thermometer label bookmark toilet shower bathtub key key2 couch sleeping_accommodation " + - "bed door bellhop frame_photo map beach_umbrella moyai shopping_bags balloon flags ribbon gift confetti_ball " + - "tada dolls wind_chime crossed_flags izakaya_lantern envelope envelope_with_arrow incoming_envelope e-mail " + - "love_letter postbox mailbox_closed mailbox mailbox_with_mail mailbox_with_no_mail package postal_horn " + - "inbox_tray outbox_tray scroll page_with_curl bookmark_tabs bar_chart chart_with_upwards_trend " + - "chart_with_downwards_trend page_facing_up date calendar calendar_spiral card_index card_box ballot_box " + - "file_cabinet clipboard notepad_spiral file_folder open_file_folder dividers newspaper2 newspaper notebook " + - "closed_book green_book blue_book orange_book notebook_with_decorative_cover ledger books book link " + - "paperclip paperclips scissors triangular_ruler straight_ruler pushpin round_pushpin triangular_flag_on_post " + - "flag_white flag_black closed_lock_with_key lock unlock lock_with_ink_pen pen_ballpoint pen_fountain " + - "black_nib pencil pencil2 crayon paintbrush mag mag_right" - }, - - symbols: { - icon: "heartpulse", - title: "Symbols", - emoji: "heart yellow_heart green_heart blue_heart purple_heart broken_heart heart_exclamation two_hearts " + - "revolving_hearts heartbeat heartpulse sparkling_heart cupid gift_heart heart_decoration peace cross " + - "star_and_crescent om_symbol wheel_of_dharma star_of_david six_pointed_star menorah yin_yang orthodox_cross " + - "place_of_worship ophiuchus aries taurus gemini cancer leo virgo libra scorpius sagittarius capricorn " + - "aquarius pisces id atom u7a7a u5272 radioactive biohazard mobile_phone_off vibration_mode u6709 u7121 " + - "u7533 u55b6 u6708 eight_pointed_black_star vs accept white_flower ideograph_advantage secret congratulations " + - "u5408 u6e80 u7981 a b ab cl o2 sos no_entry name_badge no_entry_sign x o anger hotsprings no_pedestrians " + - "do_not_litter no_bicycles non-potable_water underage no_mobile_phones exclamation grey_exclamation question " + - "grey_question bangbang interrobang 100 low_brightness high_brightness trident fleur-de-lis part_alternation_mark " + - "warning children_crossing beginner recycle u6307 chart sparkle eight_spoked_asterisk negative_squared_cross_mark " + - "white_check_mark diamond_shape_with_a_dot_inside cyclone loop globe_with_meridians m atm sa passport_control " + - "customs baggage_claim left_luggage wheelchair no_smoking wc parking potable_water mens womens baby_symbol " + - "restroom put_litter_in_its_place cinema signal_strength koko ng ok up cool new free zero one two three four " + - "five six seven eight nine ten 1234 arrow_forward pause_button play_pause stop_button record_button track_next " + - "track_previous fast_forward rewind twisted_rightwards_arrows repeat repeat_one arrow_backward arrow_up_small " + - "arrow_down_small arrow_double_up arrow_double_down arrow_right arrow_left arrow_up arrow_down arrow_upper_right " + - "arrow_lower_right arrow_lower_left arrow_upper_left arrow_up_down left_right_arrow arrows_counterclockwise " + - "arrow_right_hook leftwards_arrow_with_hook arrow_heading_up arrow_heading_down hash asterisk information_source " + - "abc abcd capital_abcd symbols musical_note notes wavy_dash curly_loop heavy_check_mark arrows_clockwise " + - "heavy_plus_sign heavy_minus_sign heavy_division_sign heavy_multiplication_x heavy_dollar_sign currency_exchange " + - "copyright registered tm end back on top soon ballot_box_with_check radio_button white_circle black_circle " + - "red_circle large_blue_circle small_orange_diamond small_blue_diamond large_orange_diamond large_blue_diamond " + - "small_red_triangle black_small_square white_small_square black_large_square white_large_square small_red_triangle_down " + - "black_medium_square white_medium_square black_medium_small_square white_medium_small_square black_square_button " + - "white_square_button speaker sound loud_sound mute mega loudspeaker bell no_bell black_joker mahjong spades " + - "clubs hearts diamonds flower_playing_cards thought_balloon anger_right speech_balloon clock1 clock2 clock3 " + - "clock4 clock5 clock6 clock7 clock8 clock9 clock10 clock11 clock12 clock130 clock230 clock330 clock430 " + - "clock530 clock630 clock730 clock830 clock930 clock1030 clock1130 clock1230 eye_in_speech_bubble" - }, - - flags: { - icon: "flag_gb", - title: "Flags", - emoji: "ac af al dz ad ao ai ag ar am aw au at az bs bh bd bb by be bz bj bm bt bo ba bw br bn bg bf bi " + - "cv kh cm ca ky cf td flag_cl cn co km cg flag_cd cr hr cu cy cz dk dj dm do ec eg sv gq er ee et fk fo " + - "fj fi fr pf ga gm ge de gh gi gr gl gd gu gt gn gw gy ht hn hk hu is in flag_id ir iq ie il it ci jm jp " + - "je jo kz ke ki xk kw kg la lv lb ls lr ly li lt lu mo mk mg mw my mv ml mt mh mr mu mx fm md mc mn me " + - "ms ma mz mm na nr np nl nc nz ni ne flag_ng nu kp no om pk pw ps pa pg py pe ph pl pt pr qa ro ru rw " + - "sh kn lc vc ws sm st flag_sa sn rs sc sl sg sk si sb so za kr es lk sd sr sz se ch sy tw tj tz th tl " + - "tg to tt tn tr flag_tm flag_tm ug ua ae gb us vi uy uz vu va ve vn wf eh ye zm zw re ax ta io bq cx " + - "cc gg im yt nf pn bl pm gs tk bv hm sj um ic ea cp dg as aq vg ck cw eu gf tf gp mq mp sx ss tc " - } - }; - }; - - return defaultOptions; - }; - function getOptions(options) { - var default_options = getDefaultOptions(); - if (options && options['filters']) { - var filters = default_options.filters; - $.each(options['filters'], function(filter, data) { - if (!isObject(data) || $.isEmptyObject(data)) { - delete filters[filter]; - return; - } - $.each(data, function(key, val) { - filters[filter][key] = val; - }); - }); - options['filters'] = filters; - } - return $.extend({}, default_options, options); - }; - - var saveSelection, restoreSelection; - if (window.getSelection && document.createRange) { - saveSelection = function(el) { - var sel = window.getSelection && window.getSelection(); - if (sel && sel.rangeCount > 0) { - return sel.getRangeAt(0); - } - }; - - restoreSelection = function(el, sel) { - var range = document.createRange(); - range.setStart(sel.startContainer, sel.startOffset); - range.setEnd(sel.endContainer, sel.endOffset) - - sel = window.getSelection(); - sel.removeAllRanges(); - sel.addRange(range); - } - } else if (document.selection && document.body.createTextRange) { - saveSelection = function(el) { - return document.selection.createRange(); - }; - - restoreSelection = function(el, sel) { - var textRange = document.body.createTextRange(); - textRange.moveToElementText(el); - textRange.setStart(sel.startContanier, sel.startOffset); - textRange.setEnd(sel.endContainer, sel.endOffset); - textRange.select(); - }; - } - - - var uniRegexp; - function unicodeTo(str, template) { - return str.replace(uniRegexp, function(unicodeChar) { - var map = emojione[(emojioneSupportMode === 0 ? 'jsecapeMap' : 'jsEscapeMap')]; - if (typeof unicodeChar !== 'undefined' && unicodeChar in map) { - return getTemplate(template, map[unicodeChar], emojione.toShort(unicodeChar)); - } - return unicodeChar; - }); - } - function htmlFromText(str, self) { - str = str - .replace(/&/g, '&') - .replace(//g, '>') - .replace(/"/g, '"') - .replace(/'/g, ''') - .replace(/`/g, '`') - .replace(/(?:\r\n|\r|\n)/g, '\n') - .replace(/(\n+)/g, '
$1
') - .replace(/\n/g, '
') - .replace(/<\/div>/g, ''); - if (self.shortnames) { - str = emojione.shortnameToUnicode(str); - } - return unicodeTo(str, self.emojiTemplate) - .replace(/\t/g, '    ') - .replace(/ /g, '  '); - } - function textFromHtml(str, self) { - str = str - .replace(/ /g, '\n') - .replace(/ /g, '\t') - .replace(/]*alt="([^"]+)"[^>]*>/ig, '$1') - .replace(/\n|\r/g, '') - .replace(/]*>/ig, '\n') - .replace(/(?:<(?:div|p|ol|ul|li|pre|code|object)[^>]*>)+/ig, '
') - .replace(/(?:<\/(?:div|p|ol|ul|li|pre|code|object)>)+/ig, '
') - .replace(/\n
<\/div>/ig, '\n') - .replace(/
<\/div>\n/ig, '\n') - .replace(/(?:
)+<\/div>/ig, '\n') - .replace(/([^\n])<\/div>
/ig, '$1\n') - .replace(/(?:<\/div>)+/ig, '
') - .replace(/([^\n])<\/div>([^\n])/ig, '$1\n$2') - .replace(/<\/div>/ig, '') - .replace(/([^\n])
/ig, '$1\n') - .replace(/\n
/ig, '\n') - .replace(/
\n/ig, '\n\n') - .replace(/<(?:[^>]+)?>/g, '') - .replace(new RegExp(invisibleChar, 'g'), '') - .replace(/ /g, ' ') - .replace(/</g, '<') - .replace(/>/g, '>') - .replace(/"/g, '"') - .replace(/'/g, "'") - .replace(/`/g, '`') - .replace(/</g, '<') - .replace(/>/g, '>') - .replace(/&/g, '&'); - - switch (self.saveEmojisAs) { - case 'image': - str = unicodeTo(str, self.emojiTemplate); - break; - case 'shortname': - str = emojione.toShort(str); - } - return str; - } - function calcButtonPosition() { - var self = this, - offset = self.editor[0].offsetWidth - self.editor[0].clientWidth, - current = parseInt(self.button.css('marginRight')); - if (current !== offset) { - self.button.css({marginRight: offset}); - if (self.floatingPicker) { - self.picker.css({right: parseInt(self.picker.css('right')) - current + offset}); - } - } - } - function lazyLoading() { - var self = this; - if (!self.sprite && self.lasyEmoji[0] && self.lasyEmoji.eq(0).is(".lazy-emoji")) { - var pickerTop = self.picker.offset().top, - pickerBottom = pickerTop + self.picker.height() + 20; - - self.lasyEmoji.each(function() { - var e = $(this), top = e.offset().top; - - if (top > pickerTop && top < pickerBottom) { - e.attr("src", e.data("src")).removeClass("lazy-emoji"); - } - - if (top > pickerBottom) { - return false; - } - }); - self.lasyEmoji = self.lasyEmoji.filter(".lazy-emoji"); - } - }; - function selector (prefix, skip_dot) { - return (skip_dot ? '' : '.') + css_class + (prefix ? ("-" + prefix) : ""); - } - function div(prefix) { - var parent = $('
', isObject(prefix) ? prefix : {"class" : selector(prefix, true)}); - $.each(slice.call(arguments).slice(1), function(i, child) { - if ($.isFunction(child)) { - child = child.call(parent); - } - if (child) { - $(child).appendTo(parent); - } - }); - return parent; - } - function getRecent () { - return localStorage.getItem("recent_emojis") || ""; - } - function updateRecent(self, show) { - var emojis = getRecent(); - if (!self.recent || self.recent !== emojis || show) { - if (emojis.length) { - var skinnable = self.scrollArea.is(".skinnable"), - scrollTop, height; - - if (!skinnable) { - scrollTop = self.scrollArea.scrollTop(); - if (show) { - self.recentCategory.show(); - } - height = self.recentCategory.is(":visible") ? self.recentCategory.height() : 0; - } - - var items = shortnameTo(emojis, self.emojiBtnTemplate, true).split('|').join(''); - self.recentCategory.children(".emojibtn").remove(); - $(items).insertAfter(self.recentCategory.children(".emojionearea-category-title")); - - - self.recentCategory.children(".emojibtn").on("click", function() { - self.trigger("emojibtn.click", $(this)); - }); - - self.recentFilter.show(); - - if (!skinnable) { - self.recentCategory.show(); - - var height2 = self.recentCategory.height(); - - if (height !== height2) { - self.scrollArea.scrollTop(scrollTop + height2 - height); - } - } - } else { - if (self.recentFilter.hasClass("active")) { - self.recentFilter.removeClass("active").next().addClass("active"); - } - self.recentCategory.hide(); - self.recentFilter.hide(); - } - self.recent = emojis; - } - }; - function setRecent(self, emoji) { - var recent = getRecent(); - var emojis = recent.split("|"); - - var index = emojis.indexOf(emoji); - if (index !== -1) { - emojis.splice(index, 1); - } - emojis.unshift(emoji); - - if (emojis.length > 9) { - emojis.pop(); - } - - localStorage.setItem("recent_emojis", emojis.join("|")); - - updateRecent(self); - }; -// see https://github.com/Modernizr/Modernizr/blob/master/feature-detects/storage/localstorage.js - function supportsLocalStorage () { - var test = 'test'; - try { - localStorage.setItem(test, test); - localStorage.removeItem(test); - return true; - } catch(e) { - return false; - } - } - function init(self, source, options) { - //calcElapsedTime('init', function() { - self.options = options = getOptions(options); - self.sprite = options.sprite && emojioneSupportMode < 3; - self.inline = options.inline === null ? source.is("INPUT") : options.inline; - self.shortnames = options.shortnames; - self.saveEmojisAs = options.saveEmojisAs; - self.standalone = options.standalone; - self.emojiTemplate = '{alt}' : 'emoji" src="{img}"/>'); - self.emojiTemplateAlt = self.sprite ? '' : ''; - self.emojiBtnTemplate = '' + self.emojiTemplateAlt + ''; - self.recentEmojis = options.recentEmojis && supportsLocalStorage(); - - var pickerPosition = options.pickerPosition; - self.floatingPicker = pickerPosition === 'top' || pickerPosition === 'bottom'; - self.source = source; - - if (source.is(":disabled") || source.is(".disabled")) { - self.disable(); - } - - var sourceValFunc = source.is("TEXTAREA") || source.is("INPUT") ? "val" : "text", - editor, button, picker, filters, filtersBtns, searchPanel, emojisList, categories, categoryBlocks, scrollArea, - tones = div('tones', - options.tones ? - function() { - this.addClass(selector('tones-' + options.tonesStyle, true)); - for (var i = 0; i <= 5; i++) { - this.append($("", { - "class": "btn-tone btn-tone-" + i + (!i ? " active" : ""), - "data-skin": i, - role: "button" - })); - } - } : null - ), - app = div({ - "class" : css_class + ((self.standalone) ? " " + css_class + "-standalone " : " ") + (source.attr("class") || ""), - role: "application" - }, - editor = self.editor = div("editor").attr({ - contenteditable: (self.standalone) ? false : true, - placeholder: options.placeholder || source.data("placeholder") || source.attr("placeholder") || "", - tabindex: 0 - }), - button = self.button = div('button', - div('button-open'), - div('button-close') - ).attr('title', options.buttonTitle), - picker = self.picker = div('picker', - div('wrapper', - filters = div('filters'), - (options.search ? - searchPanel = div('search-panel', - div('search', - options.search ? - function() { - self.search = $("", { - "placeholder": options.searchPlaceholder || "", - "type": "text", - "class": "search" - }); - this.append(self.search); - } : null - ), - tones - ) : null - ), - scrollArea = div('scroll-area', - options.tones && !options.search ? div('tones-panel', - tones - ) : null, - emojisList = div('emojis-list') - ) - ) - ).addClass(selector('picker-position-' + options.pickerPosition, true)) - .addClass(selector('filters-position-' + options.filtersPosition, true)) - .addClass(selector('search-position-' + options.searchPosition, true)) - .addClass('hidden') - ); - - if (options.search) { - searchPanel.addClass(selector('with-search', true)); - } - - self.searchSel = null; - - editor.data(source.data()); - - $.each(options.attributes, function(attr, value) { - editor.attr(attr, value); - }); - - var mainBlock = div('category-block').attr({"data-tone": 0}).prependTo(emojisList); - - $.each(options.filters, function(filter, params) { - var skin = 0; - if (filter === 'recent' && !self.recentEmojis) { - return; - } - if (filter !== 'tones') { - $("", { - "class": selector("filter", true) + " " + selector("filter-" + filter, true), - "data-filter": filter, - title: params.title - }) - .wrapInner(shortnameTo(params.icon, self.emojiTemplateAlt)) - .appendTo(filters); - } else if (options.tones) { - skin = 5; - } else { - return; - } - - do { - var category, - items = params.emoji.replace(/[\s,;]+/g, '|'); - - if (skin === 0) { - category = div('category').attr({ - name: filter, - "data-tone": skin - }).appendTo(mainBlock); - } else { - category = div('category-block').attr({ - name: filter, - "data-tone": skin - }).appendTo(emojisList); - } - - if (skin > 0) { - category.hide(); - items = items.split('|').join('_tone' + skin + '|') + '_tone' + skin; - } - - if (filter === 'recent') { - items = getRecent(); - } - - items = shortnameTo(items, - self.sprite ? - '' : - '', - true).split('|').join(''); - - category.html(items); - $('
').text(params.title).prependTo(category); - } while (--skin > 0); - }); - - options.filters = null; - if (!self.sprite) { - self.lasyEmoji = emojisList.find(".lazy-emoji"); - } - - filtersBtns = filters.find(selector("filter")); - filtersBtns.eq(0).addClass("active"); - categoryBlocks = emojisList.find(selector("category-block")) - categories = emojisList.find(selector("category")) - - self.recentFilter = filtersBtns.filter('[data-filter="recent"]'); - self.recentCategory = categories.filter("[name=recent]"); - - self.scrollArea = scrollArea; - - if (options.container) { - $(options.container).wrapInner(app); - } else { - app.insertAfter(source); - } - - if (options.hideSource) { - source.hide(); - } - - self.setText(source[sourceValFunc]()); - source[sourceValFunc](self.getText()); - calcButtonPosition.apply(self); - - // if in standalone mode and no value is set, initialise with a placeholder - if (self.standalone && !self.getText().length) { - var placeholder = $(source).data("emoji-placeholder") || options.emojiPlaceholder; - self.setText(placeholder); - editor.addClass("has-placeholder"); - } - - // attach() must be called before any .on() methods !!! - // 1) attach() stores events into possibleEvents{}, - // 2) .on() calls bindEvent() and stores handlers into eventStorage{}, - // 3) bindEvent() finds events in possibleEvents{} and bind founded via jQuery.on() - // 4) attached events via jQuery.on() calls trigger() - // 5) trigger() calls handlers stored into eventStorage{} - - attach(self, emojisList.find(".emojibtn"), {click: "emojibtn.click"}); - attach(self, window, {resize: "!resize"}); - attach(self, tones.children(), {click: "tone.click"}); - attach(self, [picker, button], {mousedown: "!mousedown"}, editor); - attach(self, button, {click: "button.click"}); - attach(self, editor, {paste :"!paste"}, editor); - attach(self, editor, ["focus", "blur"], function() { return self.stayFocused ? false : editor; } ); - attach(self, picker, {mousedown: "picker.mousedown", mouseup: "picker.mouseup", click: "picker.click", - keyup: "picker.keyup", keydown: "picker.keydown", keypress: "picker.keypress"}); - attach(self, editor, ["mousedown", "mouseup", "click", "keyup", "keydown", "keypress"]); - attach(self, picker.find(".emojionearea-filter"), {click: "filter.click"}); - attach(self, source, {change: "source.change"}); - - if (options.search) { - attach(self, self.search, {keyup: "search.keypress", focus: "search.focus", blur: "search.blur"}); - } - - var noListenScroll = false; - scrollArea.on('scroll', function () { - if (!noListenScroll) { - lazyLoading.call(self); - if (scrollArea.is(":not(.skinnable)")) { - var item = categories.eq(0), scrollTop = scrollArea.offset().top; - categories.each(function (i, e) { - if ($(e).offset().top - scrollTop >= 10) { - return false; - } - item = $(e); - }); - var filter = filtersBtns.filter('[data-filter="' + item.attr("name") + '"]'); - if (filter[0] && !filter.is(".active")) { - filtersBtns.removeClass("active"); - filter.addClass("active"); - } - } - } - }); - - self.on("@filter.click", function(filter) { - var isActive = filter.is(".active"); - if (scrollArea.is(".skinnable")) { - if (isActive) return; - tones.children().eq(0).click(); - } - noListenScroll = true; - if (!isActive) { - filtersBtns.filter(".active").removeClass("active"); - filter.addClass("active"); - } - var headerOffset = categories.filter('[name="' + filter.data('filter') + '"]').offset().top, - scroll = scrollArea.scrollTop(), - offsetTop = scrollArea.offset().top; - - scrollArea.stop().animate({ - scrollTop: headerOffset + scroll - offsetTop - 2 - }, 200, 'swing', function () { - lazyLoading.call(self); - noListenScroll = false; - }); - }) - - .on("@picker.show", function() { - if (self.recentEmojis) { - updateRecent(self); - } - lazyLoading.call(self); - }) - - .on("@tone.click", function(tone) { - tones.children().removeClass("active"); - var skin = tone.addClass("active").data("skin"); - if (skin) { - scrollArea.addClass("skinnable"); - categoryBlocks.hide().filter("[data-tone=" + skin + "]").show(); - filtersBtns.removeClass("active");//.not('[data-filter="recent"]').eq(0).addClass("active"); - } else { - scrollArea.removeClass("skinnable"); - categoryBlocks.hide().filter("[data-tone=0]").show(); - filtersBtns.eq(0).click(); - } - lazyLoading.call(self); - if (options.search) { - self.trigger('search.keypress'); - } - }) - - .on("@button.click", function(button) { - if (button.is(".active")) { - self.hidePicker(); - } else { - self.showPicker(); - self.searchSel = null; - } - }) - - .on("@!paste", function(editor, event) { - - var pasteText = function(text) { - var caretID = "caret-" + (new Date()).getTime(); - var html = htmlFromText(text, self); - pasteHtmlAtCaret(html); - pasteHtmlAtCaret(''); - editor.scrollTop(editorScrollTop); - var caret = $("#" + caretID), - top = caret.offset().top - editor.offset().top, - height = editor.height(); - if (editorScrollTop + top >= height || editorScrollTop > top) { - editor.scrollTop(editorScrollTop + top - 2 * height/3); - } - caret.remove(); - self.stayFocused = false; - calcButtonPosition.apply(self); - trigger(self, 'paste', [editor, text, html]); - }; - - if (event.originalEvent.clipboardData) { - var text = event.originalEvent.clipboardData.getData('text/plain'); - pasteText(text); - - if (event.preventDefault){ - event.preventDefault(); - } else { - event.stop(); - } - - event.returnValue = false; - event.stopPropagation(); - return false; - } - - self.stayFocused = true; - // insert invisible character for fix caret position - pasteHtmlAtCaret('' + invisibleChar + ''); - - var sel = saveSelection(editor[0]), - editorScrollTop = editor.scrollTop(), - clipboard = $("
", {contenteditable: true}) - .css({position: "fixed", left: "-999px", width: "1px", height: "1px", top: "20px", overflow: "hidden"}) - .appendTo($("BODY")) - .focus(); - - window.setTimeout(function() { - editor.focus(); - restoreSelection(editor[0], sel); - var text = textFromHtml(clipboard.html().replace(/\r\n|\n|\r/g, '
'), self); - clipboard.remove(); - pasteText(text); - }, 200); - }) - - .on("@emojibtn.click", function(emojibtn) { - editor.removeClass("has-placeholder"); - - if (self.searchSel !== null) { - editor.focus(); - restoreSelection(editor[0], self.searchSel); - self.searchSel = null; - } - - if (self.standalone) { - editor.html(shortnameTo(emojibtn.data("name"), self.emojiTemplate)); - self.trigger("blur"); - } else { - saveSelection(editor[0]); - pasteHtmlAtCaret(shortnameTo(emojibtn.data("name"), self.emojiTemplate)); - } - - if (self.recentEmojis) { - setRecent(self, emojibtn.data("name")); - } - - // self.search.val('').trigger("change"); - self.trigger('search.keypress'); - }) - - .on("@!resize @keyup @emojibtn.click", calcButtonPosition) - - .on("@!mousedown", function(editor, event) { - if ($(event.target).hasClass('search')) { - // Allow search clicks - self.stayFocused = true; - if (self.searchSel === null) { - self.searchSel = saveSelection(editor[0]); - } - } else { - if (!app.is(".focused")) { - editor.trigger("focus"); - } - event.preventDefault(); - } - return false; - }) - - .on("@change", function() { - var html = self.editor.html().replace(/<\/?(?:div|span|p)[^>]*>/ig, ''); - // clear input: chrome adds
when contenteditable is empty - if (!html.length || /^]*>$/i.test(html)) { - self.editor.html(self.content = ''); - } - source[sourceValFunc](self.getText()); - }) - - .on("@source.change", function() { - self.setText(source[sourceValFunc]()); - trigger('change'); - }) - - .on("@focus", function() { - app.addClass("focused"); - }) - - .on("@blur", function() { - app.removeClass("focused"); - - if (options.hidePickerOnBlur) { - self.hidePicker(); - } - - var content = self.editor.html(); - if (self.content !== content) { - self.content = content; - trigger(self, 'change', [self.editor]); - source.trigger("blur").trigger("change"); - } else { - source.trigger("blur"); - } - - if (options.search) { - self.search.val(''); - self.trigger('search.keypress', true); - } - }); - - if (options.search) { - self.on("@search.focus", function() { - self.stayFocused = true; - self.search.addClass("focused"); - }) - - .on("@search.keypress", function(hide) { - var filterBtns = picker.find(".emojionearea-filter"); - var activeTone = (options.tones ? tones.find("i.active").data("skin") : 0); - var term = self.search.val().replace( / /g, "_" ).replace(/"/g, "\\\""); - - if (term && term.length) { - if (self.recentFilter.hasClass("active")) { - self.recentFilter.removeClass("active").next().addClass("active"); - } - - self.recentCategory.hide(); - self.recentFilter.hide(); - - categoryBlocks.each(function() { - var matchEmojis = function(category, activeTone) { - var $matched = category.find('.emojibtn[data-name*="' + term + '"]'); - if ($matched.length === 0) { - if (category.data('tone') === activeTone) { - category.hide(); - } - filterBtns.filter('[data-filter="' + category.attr('name') + '"]').hide(); - } else { - var $notMatched = category.find('.emojibtn:not([data-name*="' + term + '"])'); - $notMatched.hide(); - - $matched.show(); - - if (category.data('tone') === activeTone) { - category.show(); - } - - filterBtns.filter('[data-filter="' + category.attr('name') + '"]').show(); - } - } - - var $block = $(this); - if ($block.data('tone') === 0) { - categories.filter(':not([name="recent"])').each(function() { - matchEmojis($(this), 0); - }) - } else { - matchEmojis($block, activeTone); - } - }); - if (!noListenScroll) { - scrollArea.trigger('scroll'); - } else { - lazyLoading.call(self); - } - } else { - updateRecent(self, true); - categoryBlocks.filter('[data-tone="' + tones.find("i.active").data("skin") + '"]:not([name="recent"])').show(); - $('.emojibtn', categoryBlocks).show(); - filterBtns.show(); - lazyLoading.call(self); - } - }) - - .on("@search.blur", function() { - self.stayFocused = false; - self.search.removeClass("focused"); - self.trigger("blur"); - }); - } - - if (options.shortcuts) { - self.on("@keydown", function(_, e) { - if (!e.ctrlKey) { - if (e.which == 9) { - e.preventDefault(); - button.click(); - } - else if (e.which == 27) { - e.preventDefault(); - if (button.is(".active")) { - self.hidePicker(); - } - } - } - }); - } - - if (isObject(options.events) && !$.isEmptyObject(options.events)) { - $.each(options.events, function(event, handler) { - self.on(event.replace(/_/g, '.'), handler); - }); - } - - if (options.autocomplete) { - var autocomplete = function() { - var textcompleteOptions = { - maxCount: options.textcomplete.maxCount, - placement: options.textcomplete.placement - }; - - if (options.shortcuts) { - textcompleteOptions.onKeydown = function (e, commands) { - if (!e.ctrlKey && e.which == 13) { - return commands.KEY_ENTER; - } - }; - } - - var map = $.map(emojione.emojioneList, function (_, emoji) { - return !options.autocompleteTones ? /_tone[12345]/.test(emoji) ? null : emoji : emoji; - }); - map.sort(); - editor.textcomplete([ - { - id: css_class, - match: /\B(:[\-+\w]*)$/, - search: function (term, callback) { - callback($.map(map, function (emoji) { - return emoji.indexOf(term) === 0 ? emoji : null; - })); - }, - template: function (value) { - return shortnameTo(value, self.emojiTemplate) + " " + value.replace(/:/g, ''); - }, - replace: function (value) { - return shortnameTo(value, self.emojiTemplate); - }, - cache: true, - index: 1 - } - ], textcompleteOptions); - - if (options.textcomplete.placement) { - // Enable correct positioning for textcomplete - if ($(editor.data('textComplete').option.appendTo).css("position") == "static") { - $(editor.data('textComplete').option.appendTo).css("position", "relative"); - } - } - }; - - var initAutocomplete = function() { - if (self.disabled) { - var enable = function () { - self.off('enabled', enable); - autocomplete(); - }; - self.on('enabled', enable); - } else { - autocomplete(); - } - } - - if ($.fn.textcomplete) { - initAutocomplete(); - } else { - $.ajax({ - url: "https://cdn.rawgit.com/yuku-t/jquery-textcomplete/v1.3.4/dist/jquery.textcomplete.js", - dataType: "script", - cache: true, - success: initAutocomplete - }); - } - } - - if (self.inline) { - app.addClass(selector('inline', true)); - self.on("@keydown", function(_, e) { - if (e.which == 13) { - e.preventDefault(); - } - }); - } - - if (/firefox/i.test(navigator.userAgent)) { - // disabling resize images on Firefox - document.execCommand("enableObjectResizing", false, false); - } - - self.isReady = true; - self.trigger("onLoad", editor); - self.trigger("ready", editor); - //}, self.id === 1); // calcElapsedTime() - }; - var cdn = { - defaultBase: "https://cdnjs.cloudflare.com/ajax/libs/emojione/", - defaultBase3: "https://cdn.jsdelivr.net/", - base: null, - isLoading: false - }; - function loadEmojione(options) { - var emojioneVersion = getEmojioneVersion() - options = getOptions(options); - - if (!cdn.isLoading) { - if (!emojione || getSupportMode(detectVersion(emojione)) < 2) { - cdn.isLoading = true; - var emojioneJsCdnUrlBase; - if (getSupportMode(emojioneVersion) > 5) { - emojioneJsCdnUrlBase = cdn.defaultBase3 + "npm/emojione@" + emojioneVersion; - } else if (getSupportMode(emojioneVersion) > 4) { - emojioneJsCdnUrlBase = cdn.defaultBase3 + "emojione/" + emojioneVersion; - } else { - emojioneJsCdnUrlBase = cdn.defaultBase + "/" + emojioneVersion; - } - - $.ajax({ - url: emojioneJsCdnUrlBase + "/lib/js/emojione.min.js", - dataType: "script", - cache: true, - success: function () { - emojione = window.emojione; - emojioneVersion = detectVersion(emojione); - emojioneSupportMode = getSupportMode(emojioneVersion); - var sprite; - if (emojioneSupportMode > 4) { - cdn.base = cdn.defaultBase3 + "emojione/assets/" + emojioneVersion; - sprite = cdn.base + "/sprites/emojione-sprite-" + emojione.emojiSize + ".css"; - } else { - cdn.base = cdn.defaultBase + emojioneVersion + "/assets"; - sprite = cdn.base + "/sprites/emojione.sprites.css"; - } - if (options.sprite) { - if (document.createStyleSheet) { - document.createStyleSheet(sprite); - } else { - $('', {rel: 'stylesheet', href: sprite}).appendTo('head'); - } - } - while (readyCallbacks.length) { - readyCallbacks.shift().call(); - } - cdn.isLoading = false; - } - }); - } else { - emojioneVersion = detectVersion(emojione); - emojioneSupportMode = getSupportMode(emojioneVersion); - if (emojioneSupportMode > 4) { - cdn.base = cdn.defaultBase3 + "emojione/assets/" + emojioneVersion; - } else { - cdn.base = cdn.defaultBase + emojioneVersion + "/assets"; - } - } - } - - emojioneReady(function() { - var emojiSize = ""; - if (options.useInternalCDN) { - if (emojioneSupportMode > 4) emojiSize = emojione.emojiSize + "/"; - - emojione.imagePathPNG = cdn.base + "/png/" + emojiSize; - emojione.imagePathSVG = cdn.base + "/svg/" + emojiSize; - emojione.imagePathSVGSprites = cdn.base + "/sprites/emojione.sprites.svg"; - emojione.imageType = options.imageType; - } - if (getSupportMode(emojioneVersion) > 4) { - uniRegexp = emojione.regUnicode; - emojione.imageType = options.imageType || "png"; - } else { - uniRegexp = new RegExp("]*>.*?<\/object>|]*>.*?<\/span>|<(?:object|embed|svg|img|div|span|p|a)[^>]*>|(" + emojione.unicodeRegexp + ")", "gi"); - } - }); - }; - var EmojioneArea = function(element, options) { - var self = this; - loadEmojione(options); - eventStorage[self.id = ++unique] = {}; - possibleEvents[self.id] = {}; - emojioneReady(function() { - init(self, element, options); - }); - }; - function bindEvent(self, event) { - event = event.replace(/^@/, ''); - var id = self.id; - if (possibleEvents[id][event]) { - $.each(possibleEvents[id][event], function(i, ev) { - // ev[0] = element - // ev[1] = event - // ev[2] = target - $.each($.isArray(ev[0]) ? ev[0] : [ev[0]], function(i, el) { - $(el).on(ev[1], function() { - var args = slice.call(arguments), - target = $.isFunction(ev[2]) ? ev[2].apply(self, [event].concat(args)) : ev[2]; - if (target) { - trigger(self, event, [target].concat(args)); - } - }); - }); - }); - possibleEvents[id][event] = null; - } - } - - EmojioneArea.prototype.on = function(events, handler) { - if (events && $.isFunction(handler)) { - var self = this; - $.each(events.toLowerCase().split(' '), function(i, event) { - bindEvent(self, event); - (eventStorage[self.id][event] || (eventStorage[self.id][event] = [])).push(handler); - }); - } - return this; - }; - - EmojioneArea.prototype.off = function(events, handler) { - if (events) { - var id = this.id; - $.each(events.toLowerCase().replace(/_/g, '.').split(' '), function(i, event) { - if (eventStorage[id][event] && !/^@/.test(event)) { - if (handler) { - $.each(eventStorage[id][event], function(j, fn) { - if (fn === handler) { - eventStorage[id][event].splice(j, 1); - } - }); - } else { - eventStorage[id][event] = []; - } - } - }); - } - return this; - }; - - EmojioneArea.prototype.trigger = function() { - var args = slice.call(arguments), - call_args = [this].concat(args.slice(0,1)); - call_args.push(args.slice(1)); - return trigger.apply(this, call_args); - }; - - EmojioneArea.prototype.setFocus = function () { - var self = this; - emojioneReady(function () { - self.editor.focus(); - }); - return self; - }; - - EmojioneArea.prototype.setText = function (str) { - var self = this; - emojioneReady(function () { - self.editor.html(htmlFromText(str, self)); - self.content = self.editor.html(); - trigger(self, 'change', [self.editor]); - calcButtonPosition.apply(self); - }); - return self; - } - - EmojioneArea.prototype.getText = function() { - return textFromHtml(this.editor.html(), this); - } - - EmojioneArea.prototype.showPicker = function () { - var self = this; - if (self._sh_timer) { - window.clearTimeout(self._sh_timer); - } - self.picker.removeClass("hidden"); - self._sh_timer = window.setTimeout(function() { - self.button.addClass("active"); - }, 50); - trigger(self, "picker.show", [self.picker]); - return self; - } - - EmojioneArea.prototype.hidePicker = function () { - var self = this; - if (self._sh_timer) { - window.clearTimeout(self._sh_timer); - } - self.button.removeClass("active"); - self._sh_timer = window.setTimeout(function() { - self.picker.addClass("hidden"); - }, 500); - trigger(self, "picker.hide", [self.picker]); - return self; - } - - EmojioneArea.prototype.enable = function () { - var self = this; - var next = function () { - self.disabled = false; - self.editor.prop('contenteditable', true); - self.button.show(); - var editor = self[(self.standalone) ? "button" : "editor"]; - editor.parent().removeClass('emojionearea-disable'); - trigger(self, 'enabled', [editor]); - }; - self.isReady ? next() : self.on("ready", next); - return self; - } - - EmojioneArea.prototype.disable = function () { - var self = this; - self.disabled = true; - var next = function () { - self.editor.prop('contenteditable', false); - self.hidePicker(); - self.button.hide(); - var editor = self[(self.standalone) ? "button" : "editor"]; - editor.parent().addClass('emojionearea-disable'); - trigger(self, 'disabled', [editor]); - }; - self.isReady ? next() : self.on("ready", next); - return self; - } - - $.fn.emojioneArea = function(options) { - return this.each(function() { - if (!!this.emojioneArea) return this.emojioneArea; - $.data(this, 'emojioneArea', this.emojioneArea = new EmojioneArea($(this), options)); - return this.emojioneArea; - }); - }; - - $.fn.emojioneArea.defaults = getDefaultOptions(); - - $.fn.emojioneAreaText = function(options) { - options = getOptions(options); - - var self = this, pseudoSelf = { - shortnames: (options && typeof options.shortnames !== 'undefined' ? options.shortnames : true), - emojiTemplate: '{alt}' - }; - - loadEmojione(options); - emojioneReady(function() { - self.each(function() { - var $this = $(this); - if (!$this.hasClass('emojionearea-text')) { - $this.addClass('emojionearea-text').html(htmlFromText(($this.is('TEXTAREA') || $this.is('INPUT') ? $this.val() : $this.text()), pseudoSelf)); - } - return $this; - }); - }); - - return this; - }; - -}, window ) ); diff --git a/cookbook/static/emojionearea/emojionearea.min.css b/cookbook/static/emojionearea/emojionearea.min.css deleted file mode 100644 index f92213c8..00000000 --- a/cookbook/static/emojionearea/emojionearea.min.css +++ /dev/null @@ -1 +0,0 @@ -.dropdown-menu.textcomplete-dropdown[data-strategy=emojionearea]{position:absolute;z-index:1000;min-width:160px;padding:5px 0;margin:2px 0 0;font-size:14px;text-align:left;list-style:none;background-color:#fff;-webkit-background-clip:padding-box;background-clip:padding-box;border:1px solid #ccc;border:1px solid rgba(0,0,0,.15);-moz-border-radius:4px;-webkit-border-radius:4px;border-radius:4px;-moz-box-shadow:0 6px 12px rgba(0,0,0,.175);-webkit-box-shadow:0 6px 12px rgba(0,0,0,.175);box-shadow:0 6px 12px rgba(0,0,0,.175)}.dropdown-menu.textcomplete-dropdown[data-strategy=emojionearea] li.textcomplete-item{font-size:14px;padding:1px 3px;border:0}.dropdown-menu.textcomplete-dropdown[data-strategy=emojionearea] li.textcomplete-item a{text-decoration:none;display:block;height:100%;line-height:1.8em;padding:0 1.54em 0 .615em;color:#4f4f4f}.dropdown-menu.textcomplete-dropdown[data-strategy=emojionearea] li.textcomplete-item.active,.dropdown-menu.textcomplete-dropdown[data-strategy=emojionearea] li.textcomplete-item:hover{background-color:#e4e4e4}.dropdown-menu.textcomplete-dropdown[data-strategy=emojionearea] li.textcomplete-item.active a,.dropdown-menu.textcomplete-dropdown[data-strategy=emojionearea] li.textcomplete-item:hover a{color:#333}.dropdown-menu.textcomplete-dropdown[data-strategy=emojionearea] li.textcomplete-item .emojioneemoji{font-size:inherit;height:2ex;width:2.1ex;min-height:20px;min-width:20px;display:inline-block;margin:0 5px .2ex 0;line-height:normal;vertical-align:middle;max-width:100%;top:0}.emojionearea-text .emojioneemoji,.emojionearea-text [class*=emojione-]{font-size:inherit;height:2ex;width:2.1ex;min-height:20px;min-width:20px;display:inline-block;margin:-.2ex .15em .2ex;line-height:normal;vertical-align:middle;max-width:100%;top:0}.emojionearea,.emojionearea *{-moz-box-sizing:border-box;-webkit-box-sizing:border-box;box-sizing:border-box}.emojionearea.emojionearea-disable{position:relative;background-color:#eee;-moz-user-select:-moz-none;-ms-user-select:none;-webkit-user-select:none;user-select:none}.emojionearea.emojionearea-disable:before{content:"";display:block;top:0;left:0;right:0;bottom:0;z-index:1;opacity:.3;position:absolute;background-color:#eee}.emojionearea,.emojionearea.form-control{display:block;position:relative!important;width:100%;height:auto;padding:0;font-size:14px;background-color:#FFF;border:1px solid #CCC;-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px;-moz-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075);-moz-transition:border-color .15s ease-in-out,-moz-box-shadow .15s ease-in-out;-o-transition:border-color .15s ease-in-out,box-shadow .15s ease-in-out;-webkit-transition:border-color .15s ease-in-out,-webkit-box-shadow .15s ease-in-out;transition:border-color .15s ease-in-out,box-shadow .15s ease-in-out}.emojionearea.focused{border-color:#66AFE9;outline:0;-moz-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(102,175,233,.6);-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(102,175,233,.6);box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(102,175,233,.6)}.emojionearea .emojionearea-editor{display:block;height:auto;min-height:8em;max-height:15em;overflow:auto;padding:6px 24px 6px 12px;line-height:1.42857143;font-size:inherit;color:#555;background-color:transparent;border:0;cursor:text;margin-right:1px;-moz-border-radius:0;-webkit-border-radius:0;border-radius:0;-moz-box-shadow:none;-webkit-box-shadow:none;box-shadow:none}.emojionearea .emojionearea-editor:empty:before{content:attr(placeholder);display:block;color:#BBB}.emojionearea .emojionearea-editor:focus{border:0;outline:0;-moz-box-shadow:none;-webkit-box-shadow:none;box-shadow:none}.emojionearea .emojionearea-editor .emojioneemoji,.emojionearea .emojionearea-editor [class*=emojione-]{font-size:inherit;height:2ex;width:2.1ex;min-height:20px;min-width:20px;display:inline-block;margin:-.2ex .15em .2ex;line-height:normal;vertical-align:middle;max-width:100%;top:0}.emojionearea.emojionearea-inline{height:34px}.emojionearea.emojionearea-inline>.emojionearea-editor{height:32px;min-height:20px;overflow:hidden;white-space:nowrap;position:absolute;top:0;left:12px;right:24px;padding:6px 0}.emojionearea.emojionearea-inline>.emojionearea-button{top:4px}.emojionearea .emojionearea-button{z-index:5;position:absolute;right:3px;top:3px;width:24px;height:24px;opacity:.6;cursor:pointer;-moz-transition:opacity .3s ease-in-out;-o-transition:opacity .3s ease-in-out;-webkit-transition:opacity .3s ease-in-out;transition:opacity .3s ease-in-out}.emojionearea .emojionearea-button:hover{opacity:1}.emojionearea .emojionearea-button>div{display:block;width:24px;height:24px;position:absolute;-moz-transition:all .4s ease-in-out;-o-transition:all .4s ease-in-out;-webkit-transition:all .4s ease-in-out;transition:all .4s ease-in-out}.emojionearea .emojionearea-button>div.emojionearea-button-open{background-position:0 -24px;filter:alpha(enabled=false);opacity:1}.emojionearea .emojionearea-button>div.emojionearea-button-close{background-position:0 0;-webkit-transform:rotate(-45deg);-o-transform:rotate(-45deg);transform:rotate(-45deg);filter:alpha(Opacity=0);opacity:0}.emojionearea .emojionearea-button.active>div.emojionearea-button-open{-webkit-transform:rotate(45deg);-o-transform:rotate(45deg);transform:rotate(45deg);filter:alpha(Opacity=0);opacity:0}.emojionearea .emojionearea-button.active>div.emojionearea-button-close{-webkit-transform:rotate(0);-o-transform:rotate(0);transform:rotate(0);filter:alpha(enabled=false);opacity:1}.emojionearea .emojionearea-picker{background:#FFF;position:absolute;-moz-box-shadow:0 1px 5px rgba(0,0,0,.32);-webkit-box-shadow:0 1px 5px rgba(0,0,0,.32);box-shadow:0 1px 5px rgba(0,0,0,.32);-moz-border-radius:5px;-webkit-border-radius:5px;border-radius:5px;height:276px;width:316px;top:-15px;right:-15px;z-index:90;-moz-transition:all .25s ease-in-out;-o-transition:all .25s ease-in-out;-webkit-transition:all .25s ease-in-out;transition:all .25s ease-in-out;filter:alpha(Opacity=0);opacity:0;-moz-user-select:-moz-none;-ms-user-select:none;-webkit-user-select:none;user-select:none}.emojionearea .emojionearea-picker.hidden{display:none}.emojionearea .emojionearea-picker .emojionearea-wrapper{position:relative;height:276px;width:316px}.emojionearea .emojionearea-picker .emojionearea-wrapper:after{content:"";display:block;position:absolute;background-repeat:no-repeat;z-index:91}.emojionearea .emojionearea-picker .emojionearea-filters{width:100%;position:absolute;z-index:95;background:#F5F7F9;padding:0 0 0 7px;height:40px}.emojionearea .emojionearea-picker .emojionearea-filters .emojionearea-filter{display:block;float:left;height:40px;width:32px;padding:7px 1px 0;cursor:pointer;-webkit-filter:grayscale(1);filter:grayscale(1)}.emojionearea .emojionearea-picker .emojionearea-filters .emojionearea-filter.active{background:#fff}.emojionearea .emojionearea-picker .emojionearea-filters .emojionearea-filter.active,.emojionearea .emojionearea-picker .emojionearea-filters .emojionearea-filter:hover{-webkit-filter:grayscale(0);filter:grayscale(0)}.emojionearea .emojionearea-picker .emojionearea-filters .emojionearea-filter>i{width:24px;height:24px;top:0}.emojionearea .emojionearea-picker .emojionearea-filters .emojionearea-filter>img{width:24px;height:24px;margin:0 3px}.emojionearea .emojionearea-picker .emojionearea-search-panel{height:30px;position:absolute;z-index:95;top:40px;left:0;right:0;padding:5px 0 5px 8px}.emojionearea .emojionearea-picker .emojionearea-search-panel .emojionearea-tones{float:right;margin-right:10px;margin-top:-1px}.emojionearea .emojionearea-picker .emojionearea-tones-panel .emojionearea-tones{position:absolute;top:4px;left:171px}.emojionearea .emojionearea-picker .emojionearea-search{float:left;padding:0;height:20px;width:160px}.emojionearea .emojionearea-picker .emojionearea-search>input{outline:0;width:160px;min-width:160px;height:20px}.emojionearea .emojionearea-picker .emojionearea-tones{padding:0;width:120px;height:20px}.emojionearea .emojionearea-picker .emojionearea-tones>.btn-tone{display:inline-block;padding:0;border:0;vertical-align:middle;outline:0;background:0 0;cursor:pointer;position:relative}.emojionearea .emojionearea-picker .emojionearea-tones>.btn-tone.btn-tone-0,.emojionearea .emojionearea-picker .emojionearea-tones>.btn-tone.btn-tone-0:after{background-color:#ffcf3e}.emojionearea .emojionearea-picker .emojionearea-tones>.btn-tone.btn-tone-1,.emojionearea .emojionearea-picker .emojionearea-tones>.btn-tone.btn-tone-1:after{background-color:#fae3c5}.emojionearea .emojionearea-picker .emojionearea-tones>.btn-tone.btn-tone-2,.emojionearea .emojionearea-picker .emojionearea-tones>.btn-tone.btn-tone-2:after{background-color:#e2cfa5}.emojionearea .emojionearea-picker .emojionearea-tones>.btn-tone.btn-tone-3,.emojionearea .emojionearea-picker .emojionearea-tones>.btn-tone.btn-tone-3:after{background-color:#daa478}.emojionearea .emojionearea-picker .emojionearea-tones>.btn-tone.btn-tone-4,.emojionearea .emojionearea-picker .emojionearea-tones>.btn-tone.btn-tone-4:after{background-color:#a78058}.emojionearea .emojionearea-picker .emojionearea-tones>.btn-tone.btn-tone-5,.emojionearea .emojionearea-picker .emojionearea-tones>.btn-tone.btn-tone-5:after{background-color:#5e4d43}.emojionearea .emojionearea-picker .emojionearea-tones.emojionearea-tones-bullet>.btn-tone,.emojionearea .emojionearea-picker .emojionearea-tones.emojionearea-tones-square>.btn-tone{width:20px;height:20px;margin:0;background-color:transparent}.emojionearea .emojionearea-picker .emojionearea-tones.emojionearea-tones-bullet>.btn-tone:after,.emojionearea .emojionearea-picker .emojionearea-tones.emojionearea-tones-square>.btn-tone:after{content:"";position:absolute;display:block;top:4px;left:4px;width:12px;height:12px}.emojionearea .emojionearea-picker .emojionearea-tones.emojionearea-tones-bullet>.btn-tone.active:after,.emojionearea .emojionearea-picker .emojionearea-tones.emojionearea-tones-square>.btn-tone.active:after{top:0;left:0;width:20px;height:20px}.emojionearea .emojionearea-picker .emojionearea-tones.emojionearea-tones-checkbox>.btn-tone,.emojionearea .emojionearea-picker .emojionearea-tones.emojionearea-tones-radio>.btn-tone{width:16px;height:16px;margin:0 2px}.emojionearea .emojionearea-picker .emojionearea-tones.emojionearea-tones-checkbox>.btn-tone.active:after,.emojionearea .emojionearea-picker .emojionearea-tones.emojionearea-tones-radio>.btn-tone.active:after{content:"";position:absolute;display:block;background-color:transparent;border:2px solid #fff;width:8px;height:8px;top:2px;left:2px;box-sizing:initial}.emojionearea .emojionearea-picker .emojionearea-scroll-area .emojionearea-category-block:after,.emojionearea .emojionearea-picker .emojionearea-scroll-area .emojionearea-category-block:before,.emojionearea .emojionearea-picker .emojionearea-scroll-area .emojionearea-category-block>.emojionearea-category:after,.emojionearea .emojionearea-picker .emojionearea-scroll-area .emojionearea-category-block>.emojionearea-category:before,.emojionearea .emojionearea-picker .emojionearea-scroll-area .emojionearea-category-title:after,.emojionearea .emojionearea-picker .emojionearea-scroll-area .emojionearea-category-title:before{content:" ";clear:both;display:block}.emojionearea .emojionearea-picker .emojionearea-tones.emojionearea-tones-bullet>.btn-tone,.emojionearea .emojionearea-picker .emojionearea-tones.emojionearea-tones-bullet>.btn-tone:after,.emojionearea .emojionearea-picker .emojionearea-tones.emojionearea-tones-radio>.btn-tone,.emojionearea .emojionearea-picker .emojionearea-tones.emojionearea-tones-radio>.btn-tone:after{-moz-border-radius:100%;-webkit-border-radius:100%;border-radius:100%}.emojionearea .emojionearea-picker .emojionearea-tones.emojionearea-tones-checkbox>.btn-tone,.emojionearea .emojionearea-picker .emojionearea-tones.emojionearea-tones-checkbox>.btn-tone:after,.emojionearea .emojionearea-picker .emojionearea-tones.emojionearea-tones-square>.btn-tone,.emojionearea .emojionearea-picker .emojionearea-tones.emojionearea-tones-square>.btn-tone:after{-moz-border-radius:1px;-webkit-border-radius:1px;border-radius:1px}.emojionearea .emojionearea-picker .emojionearea-scroll-area{height:236px;overflow:auto;overflow-x:hidden;width:100%;position:absolute;padding:0 0 5px}.emojionearea .emojionearea-picker .emojionearea-search-panel+.emojionearea-scroll-area{height:206px}.emojionearea .emojionearea-picker .emojionearea-scroll-area .emojionearea-emojis-list{z-index:1}.emojionearea .emojionearea-picker .emojionearea-scroll-area .emojionearea-category-title{display:block;font-family:Arial,'Helvetica Neue',Helvetica,sans-serif;font-size:13px;font-weight:400;color:#b2b2b2;background:#FFF;line-height:20px;margin:0;padding:7px 0 5px 6px}.emojionearea .emojionearea-picker .emojionearea-scroll-area .emojionearea-category-block{padding:0 0 0 7px}.emojionearea .emojionearea-picker .emojionearea-scroll-area .emojionearea-category-block>.emojionearea-category{padding:0!important}.emojionearea .emojionearea-picker .emojionearea-scroll-area [class*=emojione-]{-moz-box-sizing:content-box;-webkit-box-sizing:content-box;box-sizing:content-box;margin:0;width:24px;height:24px;top:0}.emojionearea .emojionearea-picker .emojionearea-scroll-area .emojibtn{-moz-box-sizing:content-box;-webkit-box-sizing:content-box;box-sizing:content-box;width:24px;height:24px;float:left;display:block;margin:1px;padding:3px}.emojionearea .emojionearea-picker .emojionearea-scroll-area .emojibtn:hover{-moz-border-radius:4px;-webkit-border-radius:4px;border-radius:4px;background-color:#e4e4e4;cursor:pointer}.emojionearea .emojionearea-picker .emojionearea-scroll-area .emojibtn i,.emojionearea .emojionearea-picker .emojionearea-scroll-area .emojibtn img{float:left;display:block;width:24px;height:24px}.emojionearea .emojionearea-picker .emojionearea-scroll-area .emojibtn img.lazy-emoji{filter:alpha(Opacity=0);opacity:0}.emojionearea .emojionearea-picker.emojionearea-filters-position-top .emojionearea-filters{top:0;-moz-border-radius-topleft:5px;-webkit-border-top-left-radius:5px;border-top-left-radius:5px;-moz-border-radius-topright:5px;-webkit-border-top-right-radius:5px;border-top-right-radius:5px}.emojionearea .emojionearea-picker.emojionearea-filters-position-top.emojionearea-search-position-top .emojionearea-scroll-area{bottom:0}.emojionearea .emojionearea-picker.emojionearea-filters-position-top.emojionearea-search-position-bottom .emojionearea-scroll-area{top:40px}.emojionearea .emojionearea-picker.emojionearea-filters-position-top.emojionearea-search-position-bottom .emojionearea-search-panel{top:initial;bottom:0}.emojionearea .emojionearea-picker.emojionearea-filters-position-bottom .emojionearea-filters{bottom:0;-moz-border-radius-bottomleft:5px;-webkit-border-bottom-left-radius:5px;border-bottom-left-radius:5px;-moz-border-radius-bottomright:5px;-webkit-border-bottom-right-radius:5px;border-bottom-right-radius:5px}.emojionearea .emojionearea-picker.emojionearea-filters-position-bottom.emojionearea-search-position-bottom .emojionearea-scroll-area{top:0}.emojionearea .emojionearea-picker.emojionearea-filters-position-bottom.emojionearea-search-position-bottom .emojionearea-search-panel,.emojionearea .emojionearea-picker.emojionearea-filters-position-bottom.emojionearea-search-position-top .emojionearea-scroll-area{top:initial;bottom:40px}.emojionearea .emojionearea-picker.emojionearea-filters-position-bottom.emojionearea-search-position-top .emojionearea-search-panel{top:0}.emojionearea .emojionearea-picker.emojionearea-picker-position-top{margin-top:-286px;right:-14px}.emojionearea .emojionearea-picker.emojionearea-picker-position-top .emojionearea-wrapper:after{width:19px;height:10px;background-position:-2px -49px;bottom:-10px;right:20px}.emojionearea .emojionearea-picker.emojionearea-picker-position-top.emojionearea-filters-position-bottom .emojionearea-wrapper:after{background-position:-2px -80px}.emojionearea .emojionearea-picker.emojionearea-picker-position-left,.emojionearea .emojionearea-picker.emojionearea-picker-position-right{margin-right:-326px;top:-8px}.emojionearea .emojionearea-picker.emojionearea-picker-position-left .emojionearea-wrapper:after,.emojionearea .emojionearea-picker.emojionearea-picker-position-right .emojionearea-wrapper:after{width:10px;height:19px;background-position:0 -60px;top:13px;left:-10px}.emojionearea .emojionearea-picker.emojionearea-picker-position-left.emojionearea-filters-position-bottom .emojionearea-wrapper:after,.emojionearea .emojionearea-picker.emojionearea-picker-position-right.emojionearea-filters-position-bottom .emojionearea-wrapper:after{background-position:right -60px}.emojionearea .emojionearea-picker.emojionearea-picker-position-bottom{margin-top:10px;right:-14px;top:47px}.emojionearea .emojionearea-picker.emojionearea-picker-position-bottom .emojionearea-wrapper:after{width:19px;height:10px;background-position:-2px -100px;top:-10px;right:20px}.emojionearea .emojionearea-picker.emojionearea-picker-position-bottom.emojionearea-filters-position-bottom .emojionearea-wrapper:after{background-position:-2px -90px}.emojionearea .emojionearea-button.active+.emojionearea-picker{filter:alpha(enabled=false);opacity:1}.emojionearea .emojionearea-button.active+.emojionearea-picker-position-top{margin-top:-269px}.emojionearea .emojionearea-button.active+.emojionearea-picker-position-left,.emojionearea .emojionearea-button.active+.emojionearea-picker-position-right{margin-right:-309px}.emojionearea .emojionearea-button.active+.emojionearea-picker-position-bottom{margin-top:-7px}.emojionearea.emojionearea-standalone{display:inline-block;width:auto;box-shadow:none}.emojionearea.emojionearea-standalone .emojionearea-editor{min-height:33px;position:relative;padding:6px 42px 6px 6px}.emojionearea.emojionearea-standalone .emojionearea-editor::before{content:"";position:absolute;top:4px;left:50%;bottom:4px;border-left:1px solid #e6e6e6}.emojionearea.emojionearea-standalone .emojionearea-editor.has-placeholder .emojioneemoji{opacity:.4}.emojionearea.emojionearea-standalone .emojionearea-button{top:0;right:0;bottom:0;left:0;width:auto;height:auto}.emojionearea.emojionearea-standalone .emojionearea-button>div{right:6px;top:5px}.emojionearea.emojionearea-standalone .emojionearea-picker.emojionearea-picker-position-bottom .emojionearea-wrapper:after,.emojionearea.emojionearea-standalone .emojionearea-picker.emojionearea-picker-position-top .emojionearea-wrapper:after{right:23px}.emojionearea.emojionearea-standalone .emojionearea-picker.emojionearea-picker-position-left .emojionearea-wrapper:after,.emojionearea.emojionearea-standalone .emojionearea-picker.emojionearea-picker-position-right .emojionearea-wrapper:after{top:15px}.emojionearea .emojionearea-button>div,.emojionearea .emojionearea-picker .emojionearea-wrapper:after{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABcAAABuCAYAAADMB4ipAAAHfElEQVRo3u1XS1NT2Rb+9uOcQF4YlAJzLymFUHaLrdxKULvEUNpdTnRqD532f+AHMLMc94gqR1Zbt8rBnUh3YXipPGKwRDoWgXvrYiFUlEdIkPPYZ/dAkwox5yQCVt/bzRrBPnt9e+211/etFeDQDu3ArL+/X37OeqmRWoH7+vpItfWawStF1tfXR+zW9xW5ne0p8loOcAKuCdwpRft60C8a+X5zTvebCqcAvmidf1GGHtqhHdpf1qqKzsrKipyensbi4iKWl5cBAMFgEG1tbYhGo2hpadlbmxseHpaDg4MAgI6ODng8HgBAPp/H/Pw8AODatWvo7e2tvUHrui7v3r2L+fl5XL58GVeuXIHH49m1N5/Py0ePHmF0dBQdHR24desWVFXdtYdXAn/48CHm5+dx8+ZNRKPRigEUDpuenpb3799H4YaOnWh5eVmOj48jFoshGo0STdPkwMCAXF5elqV7BgYGpKZpMhqNklgshrGxMbx580Y6gicSCTDGEIvFAADpdBqpVArJZLK4J5lMIpVKIZ1OAwBisRgYY0gkEs6Rp1IphMNh+Hw+AgCGYQAANE0r7in8Xfjm8/lIOBzGq1evnMHX19fR1NRU/D8UCoFzjnA4XFwLh8PgnCMUChXXmpqakM1mUfVBS62xsZHk83lZWi1nz579ZA0AhBDO4A0NDchkMsWSJIRAURRiVy26rktVVUkmk0EgEHAGP3XqFKamppDP56Vpmrhz5w5u374t/X4/OP+w3TRNZLNZ6LoO0zSRz+dlf38/Ll686Jzz8+fPQwiBeDwOt9tNrl+/jkwmU6yaQpVkMhncuHEDbrebxONxCCEQiUScIw8Gg+TBgwdyZGQEyWRSdnV1kVQqJYeGhrC6ugrGGEKhEHp7e3Hy5EmSTCblvXv30NPTg2AwSA6M/vF4HCMjI7b0/yzh8vv9AIBsNrt34aokuQsLC7skt729varkHtqftUFf++FHsrq0QN3eBvp68Tfvf9Mv12oFCYU7G//e9nVuO7dpNbe2W4M//yQr0p8yRvyBo1Zr++lwLcCt7afD/sBRizJGavrB1dDYYh47Htrq+Kb7jBNwxzfdZ44dD201NLaYVUkU7ozQpuAJBkARwnRZpunN5zaa5hJjiXLH05GeiMd7JEM5zzHGNQBGZvk/Iv0yYVWMvK0zKk1Dl6ahW5RQobjqdjy+wEZn9PKF0n2d0csXPL7AhuKq26GECtPQLdPQZVtn1LlB69p7yRVVSEiDEGJwRd12e4+8PR3piRQidnuPvOWKuk0IMSSkwRVV6Np7WVVbSqvGsgSnlKkAFNPQXdrOtuKqcxtcUTUAhmUJnVJmlleJo3CVHmAaOlPUOmYJkxFKibQsSRkXhr4juKIKO2BHVSwcoLrqCVdUYho6K3YYRRWmoUtdey/tgKtK7rUffiQAsLq08MnbNLe2WwBgB/zHzueFyD8nwlIfbvdx8eU0WV1aKD1cVAMs9+F2j9gUPEEKemEJIe3AnXy4XfkBoNKSZHNthWfX31EA69VKttyHVyIOY1wRwmS6tqNsrr31vXo5k/bUu4gT2cp9lhbm0rzCJpeUUrE0vS63+c7/6uXMbDUWl/ssLczNFrVFddUT09AZpUy1LKvO0DVfPrfR9HxqfNbuEe185l9MFX3o6tIC5YpKFLWOfdQQ93Zu49j0+FDCDtjOp1yaOQCYhs4Y40wI05XfWj8yPT40Ua2ey33mEmMTtp2IUEq0nW3FKeJPGPjRp1Iz2QUuLUu66txG9NLVSK3gBZ+C1lcE54oqKOOCK6rm8QU2unu+u1ANuNynvFsBAG1ubbdMQ5eGviMAFDuP0w3sfMpvQEtb24fOQncU1bXl8R7JnOu+ZNv97XxKJwY6+PNPsrm13drObVqUMlMIU5OWpVHOc96Go5lTnV2fzC/VfAozD7HTCa6olBBa1Imlhbmq2lLuQ5xaW6nCPfnln0Yt7bDUhzhps8cfKH5//uTXmvS81OeLdqI/ZoROzSZrHqG/OvOPzxuhK5VgJTvV2bW3EdqJRABwrvvS/kfoSkoZvXT1YEbociHr7vnuYEfogpBFL109HKH/h0fomnXg3Lff79r7/MmvVbWG7gX4QObzc99+Tz7mHKah05KcW6ahQ9feS6cbMCdgt7eBWJagjCuUAC5tZzuouuo0Spm0hElc9R4cbf4bVl8v1p6WUmCuqEwIs34ruxaeeTy4uJVd67As08UVlVmWoG5vA7FLG3WMmHEupVTyW+vh2cn4DADMTsaTuc21LiGEhzHOnQ6gNtMrJSBMCKHkNt999WLi0S7hejEZH81n174WpukiIMw0dKq66p3Bw50RwhUVXFGJKUy28Xal48VkfKrSlWenhsc23q2cEB9SR7iiItwZIbbgHn8AlDFCCMW7laXjqZnHjkNpaubJzNuVpWZCKChjxOMPVH/QlaW0f/G3ZLqWWl6ce/bvlddp7yFD/w8Z+njoX1+GoZMjgzMAMDkyeLAMnRh+uKveJ0YGD4ahEyODFRk6OfrL/hj67GnckaHPng7vjaGzyYmaGDr77KktQ38H8tqx8Wja+WIAAAAASUVORK5CYII=)!important}.emojionearea.emojionearea-standalone .emojionearea-editor.has-placeholder{background-repeat:no-repeat;background-position:20px 4px;background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAwAAAAMAQMAAABsu86kAAAABlBMVEUAAAC/v79T5hyIAAAAAXRSTlMAQObYZgAAABNJREFUCNdjYGNgQEb/P4AQqiAASiUEG6Vit44AAAAASUVORK5CYII=)!important} \ No newline at end of file diff --git a/cookbook/static/emojionearea/emojionearea.min.js b/cookbook/static/emojionearea/emojionearea.min.js deleted file mode 100644 index ef0c357e..00000000 --- a/cookbook/static/emojionearea/emojionearea.min.js +++ /dev/null @@ -1,4 +0,0 @@ -/*! EmojioneArea v3.4.1 | MIT license */ -window="undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{},document=window.document||{},function(a,b){"function"==typeof require&&"object"==typeof exports&&"object"==typeof module?a(require("jquery")):"function"==typeof define&&define.amd?define(["jquery"],a):a(b.jQuery)}(function(a){"use strict";var b=0,c={},d={},e=window.emojione,f=[];function g(a){e?a():f.push(a)}var h="data:image/gif;base64,R0lGODlhAQABAJH/AP///wAAAMDAwAAAACH5BAEAAAIALAAAAAABAAEAAAICVAEAOw==",i=[].slice,j="emojionearea",k=0,l="​";function m(b,d,e){var f=!0,g=1;if(d){d=d.toLowerCase();do{var h=1==g?"@"+d:d;c[b.id][h]&&c[b.id][h].length&&a.each(c[b.id][h],function(a,c){return f=c.apply(b,e||[])!==!1})}while(f&&g--)}return f}function n(b,c,e,f){f=f||function(b,c){return a(c.currentTarget)},a.each(e,function(g,h){g=a.isArray(e)?h:g,(d[b.id][h]||(d[b.id][h]=[])).push([c,g,f])})}function o(a,b,c){var d=e.imageType,f;f="svg"==d?e.imagePathSVG:e.imagePathPNG;var g="";c&&(g=c.substr(1,c.length-2).replace(/_/g," ").replace(/\w\S*/g,function(a){return a.charAt(0).toUpperCase()+a.substr(1).toLowerCase()}));var h="";return b.uc_base&&k>4?(h=b.uc_base,b=b.uc_output.toUpperCase()):h=b,a.replace("{name}",c||"").replace("{friendlyName}",g).replace("{img}",f+(k<2?h.toUpperCase():h)+"."+d).replace("{uni}",b).replace("{alt}",e.convert(b))}function p(a,b,c){return a.replace(/:?\+?[\w_\-]+:?/g,function(a){a=":"+a.replace(/:$/,"").replace(/^:/,"")+":";var d=e.emojioneList[a];return d?k>4?o(b,d,a):(k>3&&(d=d.unicode),o(b,d[d.length-1],a)):c?"":a})}function q(a){var b,c;if(window.getSelection){if(b=window.getSelection(),b.getRangeAt&&b.rangeCount){c=b.getRangeAt(0),c.deleteContents();var d=document.createElement("div");d.innerHTML=a;var e=document.createDocumentFragment(),f,g;while(f=d.firstChild)g=e.appendChild(f);c.insertNode(e),g&&(c=c.cloneRange(),c.setStartAfter(g),c.collapse(!0),b.removeAllRanges(),b.addRange(c))}}else document.selection&&"Control"!=document.selection.type&&document.selection.createRange().pasteHTML(a)}function r(){return window.emojioneVersion||"3.1.2"}function s(a){return"object"==typeof a}function t(a){var b;return a.cacheBustParam?(b=a.cacheBustParam,s(a.jsEscapeMap)?"?v=1.2.4"===b?"2.0.0":"?v=2.0.1"===b?"2.1.0":"?v=2.1.1"===b?"2.1.1":"?v=2.1.2"===b?"2.1.2":"?v=2.1.3"===b?"2.1.3":"?v=2.1.4"===b?"2.1.4":"2.2.7":"1.5.2"):a.emojiVersion}function u(a){switch(a){case"1.5.2":return 0;case"2.0.0":return 1;case"2.1.0":case"2.1.1":return 2;case"2.1.2":return 3;case"2.1.3":case"2.1.4":case"2.2.7":return 4;case"3.0.1":case"3.0.2":case"3.0.3":case"3.0":return 5;case"3.1.0":case"3.1.1":case"3.1.2":case"3.1":default:return 6}}function v(){if(a.fn.emojioneArea&&a.fn.emojioneArea.defaults)return a.fn.emojioneArea.defaults;var b={attributes:{dir:"ltr",spellcheck:!1,autocomplete:"off",autocorrect:"off",autocapitalize:"off"},search:!0,placeholder:null,emojiPlaceholder:":smiley:",searchPlaceholder:"SEARCH",container:null,hideSource:!0,shortnames:!0,sprite:!0,pickerPosition:"top",filtersPosition:"top",searchPosition:"top",hidePickerOnBlur:!0,buttonTitle:"Use the TAB key to insert emoji faster",tones:!0,tonesStyle:"bullet",inline:null,saveEmojisAs:"unicode",shortcuts:!0,autocomplete:!0,autocompleteTones:!1,standalone:!1,useInternalCDN:!0,imageType:"png",recentEmojis:!0,textcomplete:{maxCount:15,placement:null}},c=u(e?t(e):r());return c>4?b.filters={tones:{title:"Diversity",emoji:"open_hands raised_hands palms_up_together clap pray thumbsup thumbsdown punch fist left_facing_fist right_facing_fist fingers_crossed v metal love_you_gesture ok_hand point_left point_right point_up_2 point_down point_up raised_hand raised_back_of_hand hand_splayed vulcan wave call_me muscle middle_finger writing_hand selfie nail_care ear nose baby boy girl man woman blond-haired_woman blond-haired_man older_man older_woman man_with_chinese_cap woman_wearing_turban man_wearing_turban woman_police_officer man_police_officer woman_construction_worker man_construction_worker woman_guard man_guard woman_detective man_detective woman_health_worker man_health_worker woman_farmer man_farmer woman_cook man_cook woman_student man_student woman_singer man_singer woman_teacher man_teacher woman_factory_worker man_factory_worker woman_technologist man_technologist woman_office_worker man_office_worker woman_mechanic man_mechanic woman_scientist man_scientist woman_artist man_artist woman_firefighter man_firefighter woman_pilot man_pilot woman_astronaut man_astronaut woman_judge man_judge mrs_claus santa princess prince bride_with_veil man_in_tuxedo angel pregnant_woman breast_feeding woman_bowing man_bowing man_tipping_hand woman_tipping_hand man_gesturing_no woman_gesturing_no man_gesturing_ok woman_gesturing_ok man_raising_hand woman_raising_hand woman_facepalming man_facepalming woman_shrugging man_shrugging man_pouting woman_pouting man_frowning woman_frowning man_getting_haircut woman_getting_haircut man_getting_face_massage woman_getting_face_massage man_in_business_suit_levitating dancer man_dancing woman_walking man_walking woman_running man_running adult child older_adult bearded_person woman_with_headscarf woman_mage man_mage woman_fairy man_fairy woman_vampire man_vampire mermaid merman woman_elf man_elf snowboarder woman_lifting_weights man_lifting_weights woman_cartwheeling man_cartwheeling woman_bouncing_ball man_bouncing_ball woman_playing_handball man_playing_handball woman_golfing man_golfing woman_surfing man_surfing woman_swimming man_swimming woman_playing_water_polo man_playing_water_polo woman_rowing_boat man_rowing_boat horse_racing woman_biking man_biking woman_mountain_biking man_mountain_biking woman_juggling man_juggling woman_in_steamy_room man_in_steamy_room woman_climbing man_climbing woman_in_lotus_position man_in_lotus_position bath person_in_bed"},recent:{icon:"clock3",title:"Recent",emoji:""},smileys_people:{icon:"yum",title:"Smileys & People",emoji:"grinning smiley smile grin laughing sweat_smile joy rofl relaxed blush innocent slight_smile upside_down wink relieved crazy_face star_struck heart_eyes kissing_heart kissing kissing_smiling_eyes kissing_closed_eyes yum stuck_out_tongue_winking_eye stuck_out_tongue_closed_eyes stuck_out_tongue money_mouth hugging nerd sunglasses cowboy smirk unamused disappointed pensive worried face_with_raised_eyebrow face_with_monocle confused slight_frown frowning2 persevere confounded tired_face weary triumph angry rage face_with_symbols_over_mouth no_mouth neutral_face expressionless hushed frowning anguished open_mouth astonished dizzy_face exploding_head flushed scream fearful cold_sweat cry disappointed_relieved drooling_face sob sweat sleepy sleeping rolling_eyes thinking shushing_face face_with_hand_over_mouth lying_face grimacing zipper_mouth face_vomiting nauseated_face sneezing_face mask thermometer_face head_bandage smiling_imp imp japanese_ogre japanese_goblin poop ghost skull skull_crossbones alien space_invader robot jack_o_lantern clown smiley_cat smile_cat joy_cat heart_eyes_cat smirk_cat kissing_cat scream_cat crying_cat_face pouting_cat open_hands raised_hands palms_up_together clap pray handshake thumbsup thumbsdown punch fist left_facing_fist right_facing_fist fingers_crossed v metal love_you_gesture ok_hand point_left point_right point_up_2 point_down point_up raised_hand raised_back_of_hand hand_splayed vulcan wave call_me muscle middle_finger writing_hand selfie nail_care ring lipstick kiss lips tongue ear nose footprints eye eyes speaking_head bust_in_silhouette busts_in_silhouette baby boy girl man woman blond-haired_woman blond_haired_man older_man older_woman man_with_chinese_cap woman_wearing_turban man_wearing_turban woman_police_officer police_officer woman_construction_worker construction_worker woman_guard guard woman_detective detective woman_health_worker man_health_worker woman_farmer man_farmer woman_cook man_cook woman_student man_student woman_singer man_singer woman_teacher man_teacher woman_factory_worker man_factory_worker woman_technologist man_technologist woman_office_worker man_office_worker woman_mechanic man_mechanic woman_scientist man_scientist woman_artist man_artist woman_firefighter man_firefighter woman_pilot man_pilot woman_astronaut man_astronaut woman_judge man_judge mrs_claus santa princess prince bride_with_veil man_in_tuxedo angel pregnant_woman breast_feeding woman_bowing man_bowing woman_tipping_hand man_tipping_hand woman_gesturing_no man_gesturing_no woman_gesturing_ok man_gesturing_ok woman_raising_hand man_raising_hand woman_facepalming man_facepalming woman_shrugging man_shrugging woman_pouting man_pouting woman_frowning man_frowning woman_getting_haircut man_getting_haircut woman_getting_face_massage man_getting_face_massage man_in_business_suit_levitating dancer man_dancing women_with_bunny_ears_partying men_with_bunny_ears_partying woman_walking man_walking woman_running man_running couple two_women_holding_hands two_men_holding_hands couple_with_heart couple_ww couple_mm couplekiss kiss_ww kiss_mm family family_mwg family_mwgb family_mwbb family_mwgg family_wwb family_wwg family_wwgb family_wwbb family_wwgg family_mmb family_mmg family_mmgb family_mmbb family_mmgg family_woman_boy family_woman_girl family_woman_girl_boy family_woman_boy_boy family_woman_girl_girl family_man_boy family_man_girl family_man_girl_boy family_man_boy_boy family_man_girl_girl bearded_person woman_with_headscarf woman_mage man_mage woman_fairy man_fairy woman_vampire man_vampire mermaid merman woman_elf man_elf woman_genie man_genie woman_zombie man_zombie womans_clothes shirt jeans necktie dress bikini kimono high_heel sandal boot mans_shoe athletic_shoe womans_hat tophat mortar_board crown helmet_with_cross school_satchel pouch purse handbag briefcase eyeglasses dark_sunglasses closed_umbrella umbrella2 brain billed_cap scarf gloves coat socks "},animals_nature:{icon:"hamster",title:"Animals & Nature",emoji:"dog cat mouse hamster rabbit fox bear panda_face koala tiger lion_face cow pig pig_nose frog monkey_face see_no_evil hear_no_evil speak_no_evil monkey chicken penguin bird baby_chick hatching_chick hatched_chick duck eagle owl bat wolf boar horse unicorn bee bug butterfly snail shell beetle ant spider spider_web turtle snake lizard scorpion crab squid octopus shrimp tropical_fish fish blowfish dolphin shark whale whale2 crocodile leopard tiger2 water_buffalo ox cow2 deer dromedary_camel camel elephant rhino gorilla racehorse pig2 goat ram sheep dog2 poodle cat2 rooster turkey dove rabbit2 mouse2 rat chipmunk dragon giraffe zebra hedgehog sauropod t_rex cricket dragon_face feet cactus christmas_tree evergreen_tree deciduous_tree palm_tree seedling herb shamrock four_leaf_clover bamboo tanabata_tree leaves fallen_leaf maple_leaf mushroom ear_of_rice bouquet tulip rose wilted_rose sunflower blossom cherry_blossom hibiscus earth_americas earth_africa earth_asia full_moon waning_gibbous_moon last_quarter_moon waning_crescent_moon new_moon waxing_crescent_moon first_quarter_moon waxing_gibbous_moon new_moon_with_face full_moon_with_face sun_with_face first_quarter_moon_with_face last_quarter_moon_with_face crescent_moon dizzy star star2 sparkles zap fire boom comet sunny white_sun_small_cloud partly_sunny white_sun_cloud white_sun_rain_cloud rainbow cloud cloud_rain thunder_cloud_rain cloud_lightning cloud_snow snowman2 snowman snowflake wind_blowing_face dash cloud_tornado fog ocean droplet sweat_drops umbrella "},food_drink:{icon:"pizza",title:"Food & Drink",emoji:"green_apple apple pear tangerine lemon banana watermelon grapes strawberry melon cherries peach pineapple kiwi avocado tomato eggplant cucumber carrot corn hot_pepper potato sweet_potato chestnut peanuts honey_pot croissant bread french_bread cheese egg cooking bacon pancakes fried_shrimp poultry_leg meat_on_bone pizza hotdog hamburger fries stuffed_flatbread taco burrito salad shallow_pan_of_food spaghetti ramen stew fish_cake sushi bento curry rice_ball rice rice_cracker oden dango shaved_ice ice_cream icecream cake birthday custard lollipop candy chocolate_bar popcorn doughnut cookie milk baby_bottle coffee tea sake beer beers champagne_glass wine_glass tumbler_glass cocktail tropical_drink champagne spoon fork_and_knife fork_knife_plate dumpling fortune_cookie takeout_box chopsticks bowl_with_spoon cup_with_straw coconut broccoli pie pretzel cut_of_meat sandwich canned_food"},activity:{icon:"basketball",title:"Activity",emoji:"soccer basketball football baseball tennis volleyball rugby_football 8ball ping_pong badminton goal hockey field_hockey cricket_game golf bow_and_arrow fishing_pole_and_fish boxing_glove martial_arts_uniform ice_skate ski skier snowboarder woman_lifting_weights man_lifting_weights person_fencing women_wrestling men_wrestling woman_cartwheeling man_cartwheeling woman_bouncing_ball man_bouncing_ball woman_playing_handball man_playing_handball woman_golfing man_golfing woman_surfing man_surfing woman_swimming man_swimming woman_playing_water_polo man_playing_water_polo woman_rowing_boat man_rowing_boat horse_racing woman_biking man_biking woman_mountain_biking man_mountain_biking woman_in_steamy_room man_in_steamy_room woman_climbing man_climbing woman_in_lotus_position man_in_lotus_position running_shirt_with_sash medal military_medal first_place second_place third_place trophy rosette reminder_ribbon ticket tickets circus_tent woman_juggling man_juggling performing_arts art clapper microphone headphones musical_score musical_keyboard drum saxophone trumpet guitar violin game_die dart bowling video_game slot_machine sled curling_stone "},travel_places:{icon:"rocket",title:"Travel & Places",emoji:"red_car taxi blue_car bus trolleybus race_car police_car ambulance fire_engine minibus truck articulated_lorry tractor scooter bike motor_scooter motorcycle rotating_light oncoming_police_car oncoming_bus oncoming_automobile oncoming_taxi aerial_tramway mountain_cableway suspension_railway railway_car train mountain_railway monorail bullettrain_side bullettrain_front light_rail steam_locomotive train2 metro tram station helicopter airplane_small airplane airplane_departure airplane_arriving rocket satellite_orbital seat canoe sailboat motorboat speedboat cruise_ship ferry ship anchor construction fuelpump busstop vertical_traffic_light traffic_light map moyai statue_of_liberty fountain tokyo_tower european_castle japanese_castle stadium ferris_wheel roller_coaster carousel_horse beach_umbrella beach island mountain mountain_snow mount_fuji volcano desert camping tent railway_track motorway construction_site factory house house_with_garden homes house_abandoned office department_store post_office european_post_office hospital bank hotel convenience_store school love_hotel wedding classical_building church mosque synagogue kaaba shinto_shrine japan rice_scene park sunrise sunrise_over_mountains stars sparkler fireworks city_sunset city_dusk cityscape night_with_stars milky_way bridge_at_night foggy flying_saucer"},objects:{icon:"bulb",title:"Objects",emoji:"watch iphone calling computer keyboard desktop printer mouse_three_button trackball joystick compression minidisc floppy_disk cd dvd vhs camera camera_with_flash video_camera movie_camera projector film_frames telephone_receiver telephone pager fax tv radio microphone2 level_slider control_knobs stopwatch timer alarm_clock clock hourglass hourglass_flowing_sand satellite battery electric_plug bulb flashlight candle wastebasket oil money_with_wings dollar yen euro pound moneybag credit_card gem scales wrench hammer hammer_pick tools pick nut_and_bolt gear chains gun bomb knife dagger crossed_swords shield smoking coffin urn amphora crystal_ball prayer_beads barber alembic telescope microscope hole pill syringe thermometer toilet potable_water shower bathtub bath bellhop key key2 door couch bed sleeping_accommodation frame_photo shopping_bags shopping_cart gift balloon flags ribbon confetti_ball tada dolls izakaya_lantern wind_chime envelope envelope_with_arrow incoming_envelope e-mail love_letter inbox_tray outbox_tray package label mailbox_closed mailbox mailbox_with_mail mailbox_with_no_mail postbox postal_horn scroll page_with_curl page_facing_up bookmark_tabs bar_chart chart_with_upwards_trend chart_with_downwards_trend notepad_spiral calendar_spiral calendar date card_index card_box ballot_box file_cabinet clipboard file_folder open_file_folder dividers newspaper2 newspaper notebook notebook_with_decorative_cover ledger closed_book green_book blue_book orange_book books book bookmark link paperclip paperclips triangular_ruler straight_ruler pushpin round_pushpin scissors pen_ballpoint pen_fountain black_nib paintbrush crayon pencil pencil2 mag mag_right lock_with_ink_pen closed_lock_with_key lock unlock"},symbols:{icon:"heartpulse",title:"Symbols",emoji:"heart orange_heart yellow_heart green_heart blue_heart purple_heart black_heart broken_heart heart_exclamation two_hearts revolving_hearts heartbeat heartpulse sparkling_heart cupid gift_heart heart_decoration peace cross star_and_crescent om_symbol wheel_of_dharma star_of_david six_pointed_star menorah yin_yang orthodox_cross place_of_worship ophiuchus aries taurus gemini cancer leo virgo libra scorpius sagittarius capricorn aquarius pisces id atom accept radioactive biohazard mobile_phone_off vibration_mode u6709 u7121 u7533 u55b6 u6708 eight_pointed_black_star vs white_flower ideograph_advantage secret congratulations u5408 u6e80 u5272 u7981 a b ab cl o2 sos x o octagonal_sign no_entry name_badge no_entry_sign 100 anger hotsprings no_pedestrians do_not_litter no_bicycles non-potable_water underage no_mobile_phones no_smoking exclamation grey_exclamation question grey_question bangbang interrobang low_brightness high_brightness part_alternation_mark warning children_crossing trident fleur-de-lis beginner recycle white_check_mark u6307 chart sparkle eight_spoked_asterisk negative_squared_cross_mark globe_with_meridians diamond_shape_with_a_dot_inside m cyclone zzz atm wc wheelchair parking u7a7a sa passport_control customs baggage_claim left_luggage mens womens baby_symbol restroom put_litter_in_its_place cinema signal_strength koko symbols information_source abc abcd capital_abcd ng ok up cool new free zero one two three four five six seven eight nine keycap_ten 1234 hash asterisk arrow_forward pause_button play_pause stop_button record_button eject track_next track_previous fast_forward rewind arrow_double_up arrow_double_down arrow_backward arrow_up_small arrow_down_small arrow_right arrow_left arrow_up arrow_down arrow_upper_right arrow_lower_right arrow_lower_left arrow_upper_left arrow_up_down left_right_arrow arrow_right_hook leftwards_arrow_with_hook arrow_heading_up arrow_heading_down twisted_rightwards_arrows repeat repeat_one arrows_counterclockwise arrows_clockwise musical_note notes heavy_plus_sign heavy_minus_sign heavy_division_sign heavy_multiplication_x heavy_dollar_sign currency_exchange tm copyright registered wavy_dash curly_loop loop end back on top soon heavy_check_mark ballot_box_with_check radio_button white_circle black_circle red_circle blue_circle small_red_triangle small_red_triangle_down small_orange_diamond small_blue_diamond large_orange_diamond large_blue_diamond white_square_button black_square_button black_small_square white_small_square black_medium_small_square white_medium_small_square black_medium_square white_medium_square black_large_square white_large_square speaker mute sound loud_sound bell no_bell mega loudspeaker speech_left eye_in_speech_bubble speech_balloon thought_balloon anger_right spades clubs hearts diamonds black_joker flower_playing_cards mahjong clock1 clock2 clock3 clock4 clock5 clock6 clock7 clock8 clock9 clock10 clock11 clock12 clock130 clock230 clock330 clock430 clock530 clock630 clock730 clock830 clock930 clock1030 clock1130 clock1230"},flags:{icon:"flag_gb",title:"Flags",emoji:"flag_white flag_black checkered_flag triangular_flag_on_post rainbow_flag flag_af flag_ax flag_al flag_dz flag_as flag_ad flag_ao flag_ai flag_aq flag_ag flag_ar flag_am flag_aw flag_au flag_at flag_az flag_bs flag_bh flag_bd flag_bb flag_by flag_be flag_bz flag_bj flag_bm flag_bt flag_bo flag_ba flag_bw flag_br flag_io flag_vg flag_bn flag_bg flag_bf flag_bi flag_kh flag_cm flag_ca flag_ic flag_cv flag_bq flag_ky flag_cf flag_td flag_cl flag_cn flag_cx flag_cc flag_co flag_km flag_cg flag_cd flag_ck flag_cr flag_ci flag_hr flag_cu flag_cw flag_cy flag_cz flag_dk flag_dj flag_dm flag_do flag_ec flag_eg flag_sv flag_gq flag_er flag_ee flag_et flag_eu flag_fk flag_fo flag_fj flag_fi flag_fr flag_gf flag_pf flag_tf flag_ga flag_gm flag_ge flag_de flag_gh flag_gi flag_gr flag_gl flag_gd flag_gp flag_gu flag_gt flag_gg flag_gn flag_gw flag_gy flag_ht flag_hn flag_hk flag_hu flag_is flag_in flag_id flag_ir flag_iq flag_ie flag_im flag_il flag_it flag_jm flag_jp crossed_flags flag_je flag_jo flag_kz flag_ke flag_ki flag_xk flag_kw flag_kg flag_la flag_lv flag_lb flag_ls flag_lr flag_ly flag_li flag_lt flag_lu flag_mo flag_mk flag_mg flag_mw flag_my flag_mv flag_ml flag_mt flag_mh flag_mq flag_mr flag_mu flag_yt flag_mx flag_fm flag_md flag_mc flag_mn flag_me flag_ms flag_ma flag_mz flag_mm flag_na flag_nr flag_np flag_nl flag_nc flag_nz flag_ni flag_ne flag_ng flag_nu flag_nf flag_kp flag_mp flag_no flag_om flag_pk flag_pw flag_ps flag_pa flag_pg flag_py flag_pe flag_ph flag_pn flag_pl flag_pt flag_pr flag_qa flag_re flag_ro flag_ru flag_rw flag_ws flag_sm flag_st flag_sa flag_sn flag_rs flag_sc flag_sl flag_sg flag_sx flag_sk flag_si flag_gs flag_sb flag_so flag_za flag_kr flag_ss flag_es flag_lk flag_bl flag_sh flag_kn flag_lc flag_pm flag_vc flag_sd flag_sr flag_sz flag_se flag_ch flag_sy flag_tw flag_tj flag_tz flag_th flag_tl flag_tg flag_tk flag_to flag_tt flag_tn flag_tr flag_tm flag_tc flag_tv flag_vi flag_ug flag_ua flag_ae flag_gb flag_us flag_uy flag_uz flag_vu flag_va flag_ve flag_vn flag_wf flag_eh flag_ye flag_zm flag_zw flag_ac flag_ta flag_bv flag_hm flag_sj flag_um flag_ea flag_cp flag_dg flag_mf united_nations england scotland wales"}}:b.filters={tones:{title:"Diversity",emoji:"santa runner surfer swimmer lifter ear nose point_up_2 point_down point_left point_right punch wave ok_hand thumbsup thumbsdown clap open_hands boy girl man woman cop bride_with_veil person_with_blond_hair man_with_gua_pi_mao man_with_turban older_man grandma baby construction_worker princess angel information_desk_person guardsman dancer nail_care massage haircut muscle spy hand_splayed middle_finger vulcan no_good ok_woman bow raising_hand raised_hands person_frowning person_with_pouting_face pray rowboat bicyclist mountain_bicyclist walking bath metal point_up basketball_player fist raised_hand v writing_hand"},recent:{icon:"clock3",title:"Recent",emoji:""},smileys_people:{icon:"yum",title:"Smileys & People",emoji:"grinning grimacing grin joy smiley smile sweat_smile laughing innocent wink blush slight_smile upside_down relaxed yum relieved heart_eyes kissing_heart kissing kissing_smiling_eyes kissing_closed_eyes stuck_out_tongue_winking_eye stuck_out_tongue_closed_eyes stuck_out_tongue money_mouth nerd sunglasses hugging smirk no_mouth neutral_face expressionless unamused rolling_eyes thinking flushed disappointed worried angry rage pensive confused slight_frown frowning2 persevere confounded tired_face weary triumph open_mouth scream fearful cold_sweat hushed frowning anguished cry disappointed_relieved sleepy sweat sob dizzy_face astonished zipper_mouth mask thermometer_face head_bandage sleeping zzz poop smiling_imp imp japanese_ogre japanese_goblin skull ghost alien robot smiley_cat smile_cat joy_cat heart_eyes_cat smirk_cat kissing_cat scream_cat crying_cat_face pouting_cat raised_hands clap wave thumbsup thumbsdown punch fist v ok_hand raised_hand open_hands muscle pray point_up point_up_2 point_down point_left point_right middle_finger hand_splayed metal vulcan writing_hand nail_care lips tongue ear nose eye eyes bust_in_silhouette busts_in_silhouette speaking_head baby boy girl man woman person_with_blond_hair older_man older_woman man_with_gua_pi_mao man_with_turban cop construction_worker guardsman spy santa angel princess bride_with_veil walking runner dancer dancers couple two_men_holding_hands two_women_holding_hands bow information_desk_person no_good ok_woman raising_hand person_with_pouting_face person_frowning haircut massage couple_with_heart couple_ww couple_mm couplekiss kiss_ww kiss_mm family family_mwg family_mwgb family_mwbb family_mwgg family_wwb family_wwg family_wwgb family_wwbb family_wwgg family_mmb family_mmg family_mmgb family_mmbb family_mmgg womans_clothes shirt jeans necktie dress bikini kimono lipstick kiss footprints high_heel sandal boot mans_shoe athletic_shoe womans_hat tophat helmet_with_cross mortar_board crown school_satchel pouch purse handbag briefcase eyeglasses dark_sunglasses ring closed_umbrella"},animals_nature:{icon:"hamster",title:"Animals & Nature",emoji:"dog cat mouse hamster rabbit bear panda_face koala tiger lion_face cow pig pig_nose frog octopus monkey_face see_no_evil hear_no_evil speak_no_evil monkey chicken penguin bird baby_chick hatching_chick hatched_chick wolf boar horse unicorn bee bug snail beetle ant spider scorpion crab snake turtle tropical_fish fish blowfish dolphin whale whale2 crocodile leopard tiger2 water_buffalo ox cow2 dromedary_camel camel elephant goat ram sheep racehorse pig2 rat mouse2 rooster turkey dove dog2 poodle cat2 rabbit2 chipmunk feet dragon dragon_face cactus christmas_tree evergreen_tree deciduous_tree palm_tree seedling herb shamrock four_leaf_clover bamboo tanabata_tree leaves fallen_leaf maple_leaf ear_of_rice hibiscus sunflower rose tulip blossom cherry_blossom bouquet mushroom chestnut jack_o_lantern shell spider_web earth_americas earth_africa earth_asia full_moon waning_gibbous_moon last_quarter_moon waning_crescent_moon new_moon waxing_crescent_moon first_quarter_moon waxing_gibbous_moon new_moon_with_face full_moon_with_face first_quarter_moon_with_face last_quarter_moon_with_face sun_with_face crescent_moon star star2 dizzy sparkles comet sunny white_sun_small_cloud partly_sunny white_sun_cloud white_sun_rain_cloud cloud cloud_rain thunder_cloud_rain cloud_lightning zap fire boom snowflake cloud_snow snowman2 snowman wind_blowing_face dash cloud_tornado fog umbrella2 umbrella droplet sweat_drops ocean"},food_drink:{icon:"pizza",title:"Food & Drink",emoji:"green_apple apple pear tangerine lemon banana watermelon grapes strawberry melon cherries peach pineapple tomato eggplant hot_pepper corn sweet_potato honey_pot bread cheese poultry_leg meat_on_bone fried_shrimp egg hamburger fries hotdog pizza spaghetti taco burrito ramen stew fish_cake sushi bento curry rice_ball rice rice_cracker oden dango shaved_ice ice_cream icecream cake birthday custard candy lollipop chocolate_bar popcorn doughnut cookie beer beers wine_glass cocktail tropical_drink champagne sake tea coffee baby_bottle fork_and_knife fork_knife_plate"},activity:{icon:"basketball",title:"Activity",emoji:"soccer basketball football baseball tennis volleyball rugby_football 8ball golf golfer ping_pong badminton hockey field_hockey cricket ski skier snowboarder ice_skate bow_and_arrow fishing_pole_and_fish rowboat swimmer surfer bath basketball_player lifter bicyclist mountain_bicyclist horse_racing levitate trophy running_shirt_with_sash medal military_medal reminder_ribbon rosette ticket tickets performing_arts art circus_tent microphone headphones musical_score musical_keyboard saxophone trumpet guitar violin clapper video_game space_invader dart game_die slot_machine bowling"},travel_places:{icon:"rocket",title:"Travel & Places",emoji:"red_car taxi blue_car bus trolleybus race_car police_car ambulance fire_engine minibus truck articulated_lorry tractor motorcycle bike rotating_light oncoming_police_car oncoming_bus oncoming_automobile oncoming_taxi aerial_tramway mountain_cableway suspension_railway railway_car train monorail bullettrain_side bullettrain_front light_rail mountain_railway steam_locomotive train2 metro tram station helicopter airplane_small airplane airplane_departure airplane_arriving sailboat motorboat speedboat ferry cruise_ship rocket satellite_orbital seat anchor construction fuelpump busstop vertical_traffic_light traffic_light checkered_flag ship ferris_wheel roller_coaster carousel_horse construction_site foggy tokyo_tower factory fountain rice_scene mountain mountain_snow mount_fuji volcano japan camping tent park motorway railway_track sunrise sunrise_over_mountains desert beach island city_sunset city_dusk cityscape night_with_stars bridge_at_night milky_way stars sparkler fireworks rainbow homes european_castle japanese_castle stadium statue_of_liberty house house_with_garden house_abandoned office department_store post_office european_post_office hospital bank hotel convenience_store school love_hotel wedding classical_building church mosque synagogue kaaba shinto_shrine"},objects:{icon:"bulb",title:"Objects",emoji:"watch iphone calling computer keyboard desktop printer mouse_three_button trackball joystick compression minidisc floppy_disk cd dvd vhs camera camera_with_flash video_camera movie_camera projector film_frames telephone_receiver telephone pager fax tv radio microphone2 level_slider control_knobs stopwatch timer alarm_clock clock hourglass_flowing_sand hourglass satellite battery electric_plug bulb flashlight candle wastebasket oil money_with_wings dollar yen euro pound moneybag credit_card gem scales wrench hammer hammer_pick tools pick nut_and_bolt gear chains gun bomb knife dagger crossed_swords shield smoking skull_crossbones coffin urn amphora crystal_ball prayer_beads barber alembic telescope microscope hole pill syringe thermometer label bookmark toilet shower bathtub key key2 couch sleeping_accommodation bed door bellhop frame_photo map beach_umbrella moyai shopping_bags balloon flags ribbon gift confetti_ball tada dolls wind_chime crossed_flags izakaya_lantern envelope envelope_with_arrow incoming_envelope e-mail love_letter postbox mailbox_closed mailbox mailbox_with_mail mailbox_with_no_mail package postal_horn inbox_tray outbox_tray scroll page_with_curl bookmark_tabs bar_chart chart_with_upwards_trend chart_with_downwards_trend page_facing_up date calendar calendar_spiral card_index card_box ballot_box file_cabinet clipboard notepad_spiral file_folder open_file_folder dividers newspaper2 newspaper notebook closed_book green_book blue_book orange_book notebook_with_decorative_cover ledger books book link paperclip paperclips scissors triangular_ruler straight_ruler pushpin round_pushpin triangular_flag_on_post flag_white flag_black closed_lock_with_key lock unlock lock_with_ink_pen pen_ballpoint pen_fountain black_nib pencil pencil2 crayon paintbrush mag mag_right"},symbols:{icon:"heartpulse",title:"Symbols",emoji:"heart yellow_heart green_heart blue_heart purple_heart broken_heart heart_exclamation two_hearts revolving_hearts heartbeat heartpulse sparkling_heart cupid gift_heart heart_decoration peace cross star_and_crescent om_symbol wheel_of_dharma star_of_david six_pointed_star menorah yin_yang orthodox_cross place_of_worship ophiuchus aries taurus gemini cancer leo virgo libra scorpius sagittarius capricorn aquarius pisces id atom u7a7a u5272 radioactive biohazard mobile_phone_off vibration_mode u6709 u7121 u7533 u55b6 u6708 eight_pointed_black_star vs accept white_flower ideograph_advantage secret congratulations u5408 u6e80 u7981 a b ab cl o2 sos no_entry name_badge no_entry_sign x o anger hotsprings no_pedestrians do_not_litter no_bicycles non-potable_water underage no_mobile_phones exclamation grey_exclamation question grey_question bangbang interrobang 100 low_brightness high_brightness trident fleur-de-lis part_alternation_mark warning children_crossing beginner recycle u6307 chart sparkle eight_spoked_asterisk negative_squared_cross_mark white_check_mark diamond_shape_with_a_dot_inside cyclone loop globe_with_meridians m atm sa passport_control customs baggage_claim left_luggage wheelchair no_smoking wc parking potable_water mens womens baby_symbol restroom put_litter_in_its_place cinema signal_strength koko ng ok up cool new free zero one two three four five six seven eight nine ten 1234 arrow_forward pause_button play_pause stop_button record_button track_next track_previous fast_forward rewind twisted_rightwards_arrows repeat repeat_one arrow_backward arrow_up_small arrow_down_small arrow_double_up arrow_double_down arrow_right arrow_left arrow_up arrow_down arrow_upper_right arrow_lower_right arrow_lower_left arrow_upper_left arrow_up_down left_right_arrow arrows_counterclockwise arrow_right_hook leftwards_arrow_with_hook arrow_heading_up arrow_heading_down hash asterisk information_source abc abcd capital_abcd symbols musical_note notes wavy_dash curly_loop heavy_check_mark arrows_clockwise heavy_plus_sign heavy_minus_sign heavy_division_sign heavy_multiplication_x heavy_dollar_sign currency_exchange copyright registered tm end back on top soon ballot_box_with_check radio_button white_circle black_circle red_circle large_blue_circle small_orange_diamond small_blue_diamond large_orange_diamond large_blue_diamond small_red_triangle black_small_square white_small_square black_large_square white_large_square small_red_triangle_down black_medium_square white_medium_square black_medium_small_square white_medium_small_square black_square_button white_square_button speaker sound loud_sound mute mega loudspeaker bell no_bell black_joker mahjong spades clubs hearts diamonds flower_playing_cards thought_balloon anger_right speech_balloon clock1 clock2 clock3 clock4 clock5 clock6 clock7 clock8 clock9 clock10 clock11 clock12 clock130 clock230 clock330 clock430 clock530 clock630 clock730 clock830 clock930 clock1030 clock1130 clock1230 eye_in_speech_bubble" -},flags:{icon:"flag_gb",title:"Flags",emoji:"ac af al dz ad ao ai ag ar am aw au at az bs bh bd bb by be bz bj bm bt bo ba bw br bn bg bf bi cv kh cm ca ky cf td flag_cl cn co km cg flag_cd cr hr cu cy cz dk dj dm do ec eg sv gq er ee et fk fo fj fi fr pf ga gm ge de gh gi gr gl gd gu gt gn gw gy ht hn hk hu is in flag_id ir iq ie il it ci jm jp je jo kz ke ki xk kw kg la lv lb ls lr ly li lt lu mo mk mg mw my mv ml mt mh mr mu mx fm md mc mn me ms ma mz mm na nr np nl nc nz ni ne flag_ng nu kp no om pk pw ps pa pg py pe ph pl pt pr qa ro ru rw sh kn lc vc ws sm st flag_sa sn rs sc sl sg sk si sb so za kr es lk sd sr sz se ch sy tw tj tz th tl tg to tt tn tr flag_tm flag_tm ug ua ae gb us vi uy uz vu va ve vn wf eh ye zm zw re ax ta io bq cx cc gg im yt nf pn bl pm gs tk bv hm sj um ic ea cp dg as aq vg ck cw eu gf tf gp mq mp sx ss tc "}},b}function w(b){var c=v();if(b&&b.filters){var d=c.filters;a.each(b.filters,function(b,c){return!s(c)||a.isEmptyObject(c)?void delete d[b]:void a.each(c,function(a,c){d[b][a]=c})}),b.filters=d}return a.extend({},c,b)}var x,y;window.getSelection&&document.createRange?(x=function(a){var b=window.getSelection&&window.getSelection();if(b&&b.rangeCount>0)return b.getRangeAt(0)},y=function(a,b){var c=document.createRange();c.setStart(b.startContainer,b.startOffset),c.setEnd(b.endContainer,b.endOffset),b=window.getSelection(),b.removeAllRanges(),b.addRange(c)}):document.selection&&document.body.createTextRange&&(x=function(a){return document.selection.createRange()},y=function(a,b){var c=document.body.createTextRange();c.moveToElementText(a),c.setStart(b.startContanier,b.startOffset),c.setEnd(b.endContainer,b.endOffset),c.select()});var z;function A(a,b){return a.replace(z,function(a){var c=e[0===k?"jsecapeMap":"jsEscapeMap"];return"undefined"!=typeof a&&a in c?o(b,c[a]):a})}function B(a,b){return a=a.replace(/&/g,"&").replace(//g,">").replace(/"/g,""").replace(/'/g,"'").replace(/`/g,"`").replace(/(?:\r\n|\r|\n)/g,"\n").replace(/(\n+)/g,"
$1
").replace(/\n/g,"
").replace(/<\/div>/g,"
"),b.shortnames&&(a=e.shortnameToUnicode(a)),A(a,b.emojiTemplate).replace(/\t/g,"    ").replace(/ /g,"  ")}function C(a,b){switch(a=a.replace(/ /g,"\n").replace(/ /g,"\t").replace(/]*alt="([^"]+)"[^>]*>/gi,"$1").replace(/\n|\r/g,"").replace(/]*>/gi,"\n").replace(/(?:<(?:div|p|ol|ul|li|pre|code|object)[^>]*>)+/gi,"
").replace(/(?:<\/(?:div|p|ol|ul|li|pre|code|object)>)+/gi,"
").replace(/\n
<\/div>/gi,"\n").replace(/
<\/div>\n/gi,"\n").replace(/(?:
)+<\/div>/gi,"\n").replace(/([^\n])<\/div>
/gi,"$1\n").replace(/(?:<\/div>)+/gi,"
").replace(/([^\n])<\/div>([^\n])/gi,"$1\n$2").replace(/<\/div>/gi,"").replace(/([^\n])
/gi,"$1\n").replace(/\n
/gi,"\n").replace(/
\n/gi,"\n\n").replace(/<(?:[^>]+)?>/g,"").replace(new RegExp(l,"g"),"").replace(/ /g," ").replace(/</g,"<").replace(/>/g,">").replace(/"/g,'"').replace(/'/g,"'").replace(/`/g,"`").replace(/</g,"<").replace(/>/g,">").replace(/&/g,"&"),b.saveEmojisAs){case"image":a=A(a,b.emojiTemplate);break;case"shortname":a=e.toShort(a)}return a}function D(){var a=this,b=a.editor[0].offsetWidth-a.editor[0].clientWidth,c=parseInt(a.button.css("marginRight"));c!==b&&(a.button.css({marginRight:b}),a.floatingPicker&&a.picker.css({right:parseInt(a.picker.css("right"))-c+b}))}function E(){var b=this;if(!b.sprite&&b.lasyEmoji[0]&&b.lasyEmoji.eq(0).is(".lazy-emoji")){var c=b.picker.offset().top,d=c+b.picker.height()+20;b.lasyEmoji.each(function(){var b=a(this),e=b.offset().top;if(e>c&&ed)return!1}),b.lasyEmoji=b.lasyEmoji.filter(".lazy-emoji")}}function F(a,b){return(b?"":".")+j+(a?"-"+a:"")}function G(b){var c=a("
",s(b)?b:{"class":F(b,!0)});return a.each(i.call(arguments).slice(1),function(b,d){a.isFunction(d)&&(d=d.call(c)),d&&a(d).appendTo(c)}),c}function H(){return localStorage.getItem("recent_emojis")||""}function I(b,c){var d=H();if(!b.recent||b.recent!==d||c){if(d.length){var e=b.scrollArea.is(".skinnable"),f,g;e||(f=b.scrollArea.scrollTop(),c&&b.recentCategory.show(),g=b.recentCategory.is(":visible")?b.recentCategory.height():0);var h=p(d,b.emojiBtnTemplate,!0).split("|").join("");if(b.recentCategory.children(".emojibtn").remove(),a(h).insertAfter(b.recentCategory.children(".emojionearea-category-title")),b.recentCategory.children(".emojibtn").on("click",function(){b.trigger("emojibtn.click",a(this))}),b.recentFilter.show(),!e){b.recentCategory.show();var i=b.recentCategory.height();g!==i&&b.scrollArea.scrollTop(f+i-g)}}else b.recentFilter.hasClass("active")&&b.recentFilter.removeClass("active").next().addClass("active"),b.recentCategory.hide(),b.recentFilter.hide();b.recent=d}}function J(a,b){var c=H(),d=c.split("|"),e=d.indexOf(b);e!==-1&&d.splice(e,1),d.unshift(b),d.length>9&&d.pop(),localStorage.setItem("recent_emojis",d.join("|")),I(a)}function K(){var a="test";try{return localStorage.setItem(a,a),localStorage.removeItem(a),!0}catch(b){return!1}}function L(b,c,d){b.options=d=w(d),b.sprite=d.sprite&&k<3,b.inline=null===d.inline?c.is("INPUT"):d.inline,b.shortnames=d.shortnames,b.saveEmojisAs=d.saveEmojisAs,b.standalone=d.standalone,b.emojiTemplate='{alt}':'emoji" src="{img}"/>'),b.emojiTemplateAlt=b.sprite?'':'',b.emojiBtnTemplate=''+b.emojiTemplateAlt+"",b.recentEmojis=d.recentEmojis&&K();var f=d.pickerPosition;b.floatingPicker="top"===f||"bottom"===f,b.source=c,(c.is(":disabled")||c.is(".disabled"))&&b.disable();var g=c.is("TEXTAREA")||c.is("INPUT")?"val":"text",i,o,r,t,u,v,z,A,L,M,N=G("tones",d.tones?function(){this.addClass(F("tones-"+d.tonesStyle,!0));for(var b=0;b<=5;b++)this.append(a("",{"class":"btn-tone btn-tone-"+b+(b?"":" active"),"data-skin":b,role:"button"}))}:null),O=G({"class":j+(b.standalone?" "+j+"-standalone ":" ")+(c.attr("class")||""),role:"application"},i=b.editor=G("editor").attr({contenteditable:!b.standalone,placeholder:d.placeholder||c.data("placeholder")||c.attr("placeholder")||"",tabindex:0}),o=b.button=G("button",G("button-open"),G("button-close")).attr("title",d.buttonTitle),r=b.picker=G("picker",G("wrapper",t=G("filters"),d.search?v=G("search-panel",G("search",d.search?function(){b.search=a("",{placeholder:d.searchPlaceholder||"",type:"text","class":"search"}),this.append(b.search)}:null),N):null,M=G("scroll-area",d.tones&&!d.search?G("tones-panel",N):null,z=G("emojis-list")))).addClass(F("picker-position-"+d.pickerPosition,!0)).addClass(F("filters-position-"+d.filtersPosition,!0)).addClass(F("search-position-"+d.searchPosition,!0)).addClass("hidden"));d.search&&v.addClass(F("with-search",!0)),b.searchSel=null,i.data(c.data()),a.each(d.attributes,function(a,b){i.attr(a,b)});var P=G("category-block").attr({"data-tone":0}).prependTo(z);if(a.each(d.filters,function(c,e){var f=0;if("recent"!==c||b.recentEmojis){if("tones"!==c)a("",{"class":F("filter",!0)+" "+F("filter-"+c,!0),"data-filter":c,title:e.title}).wrapInner(p(e.icon,b.emojiTemplateAlt)).appendTo(t);else{if(!d.tones)return;f=5}do{var g,h=e.emoji.replace(/[\s,;]+/g,"|");g=0===f?G("category").attr({name:c,"data-tone":f}).appendTo(P):G("category-block").attr({name:c,"data-tone":f}).appendTo(z),f>0&&(g.hide(),h=h.split("|").join("_tone"+f+"|")+"_tone"+f),"recent"===c&&(h=H()),h=p(h,b.sprite?'':'',!0).split("|").join(""),g.html(h),a('
').text(e.title).prependTo(g)}while(--f>0)}}),d.filters=null,b.sprite||(b.lasyEmoji=z.find(".lazy-emoji")),u=t.find(F("filter")),u.eq(0).addClass("active"),L=z.find(F("category-block")),A=z.find(F("category")),b.recentFilter=u.filter('[data-filter="recent"]'),b.recentCategory=A.filter("[name=recent]"),b.scrollArea=M,d.container?a(d.container).wrapInner(O):O.insertAfter(c),d.hideSource&&c.hide(),b.setText(c[g]()),c[g](b.getText()),D.apply(b),b.standalone&&!b.getText().length){var Q=a(c).data("emoji-placeholder")||d.emojiPlaceholder;b.setText(Q),i.addClass("has-placeholder")}n(b,z.find(".emojibtn"),{click:"emojibtn.click"}),n(b,window,{resize:"!resize"}),n(b,N.children(),{click:"tone.click"}),n(b,[r,o],{mousedown:"!mousedown"},i),n(b,o,{click:"button.click"}),n(b,i,{paste:"!paste"},i),n(b,i,["focus","blur"],function(){return!b.stayFocused&&i}),n(b,r,{mousedown:"picker.mousedown",mouseup:"picker.mouseup",click:"picker.click",keyup:"picker.keyup",keydown:"picker.keydown",keypress:"picker.keypress"}),n(b,i,["mousedown","mouseup","click","keyup","keydown","keypress"]),n(b,r.find(".emojionearea-filter"),{click:"filter.click"}),n(b,c,{change:"source.change"}),d.search&&n(b,b.search,{keyup:"search.keypress",focus:"search.focus",blur:"search.blur"});var R=!1;if(M.on("scroll",function(){if(!R&&(E.call(b),M.is(":not(.skinnable)"))){var c=A.eq(0),d=M.offset().top;A.each(function(b,e){return!(a(e).offset().top-d>=10)&&void(c=a(e))});var e=u.filter('[data-filter="'+c.attr("name")+'"]');e[0]&&!e.is(".active")&&(u.removeClass("active"),e.addClass("active"))}}),b.on("@filter.click",function(a){var c=a.is(".active");if(M.is(".skinnable")){if(c)return;N.children().eq(0).click()}R=!0,c||(u.filter(".active").removeClass("active"),a.addClass("active"));var d=A.filter('[name="'+a.data("filter")+'"]').offset().top,e=M.scrollTop(),f=M.offset().top;M.stop().animate({scrollTop:d+e-f-2},200,"swing",function(){E.call(b),R=!1})}).on("@picker.show",function(){b.recentEmojis&&I(b),E.call(b)}).on("@tone.click",function(a){N.children().removeClass("active");var c=a.addClass("active").data("skin");c?(M.addClass("skinnable"),L.hide().filter("[data-tone="+c+"]").show(),u.removeClass("active")):(M.removeClass("skinnable"),L.hide().filter("[data-tone=0]").show(),u.eq(0).click()),E.call(b),d.search&&b.trigger("search.keypress")}).on("@button.click",function(a){a.is(".active")?b.hidePicker():(b.showPicker(),b.searchSel=null)}).on("@!paste",function(c,d){var e=function(d){var e="caret-"+(new Date).getTime(),f=B(d,b);q(f),q(''),c.scrollTop(h);var g=a("#"+e),i=g.offset().top-c.offset().top,j=c.height();(h+i>=j||h>i)&&c.scrollTop(h+i-2*j/3),g.remove(),b.stayFocused=!1,D.apply(b),m(b,"paste",[c,d,f])};if(d.originalEvent.clipboardData){var f=d.originalEvent.clipboardData.getData("text/plain");return e(f),d.preventDefault?d.preventDefault():d.stop(),d.returnValue=!1,d.stopPropagation(),!1}b.stayFocused=!0,q(""+l+"");var g=x(c[0]),h=c.scrollTop(),i=a("
",{contenteditable:!0}).css({position:"fixed",left:"-999px",width:"1px",height:"1px",top:"20px",overflow:"hidden"}).appendTo(a("BODY")).focus();window.setTimeout(function(){c.focus(),y(c[0],g);var a=C(i.html().replace(/\r\n|\n|\r/g,"
"),b);i.remove(),e(a)},200)}).on("@emojibtn.click",function(a){i.removeClass("has-placeholder"),null!==b.searchSel&&(i.focus(),y(i[0],b.searchSel),b.searchSel=null),b.standalone?(i.html(p(a.data("name"),b.emojiTemplate)),b.trigger("blur")):(x(i[0]),q(p(a.data("name"),b.emojiTemplate))),b.recentEmojis&&J(b,a.data("name")),b.trigger("search.keypress")}).on("@!resize @keyup @emojibtn.click",D).on("@!mousedown",function(c,d){return a(d.target).hasClass("search")?(b.stayFocused=!0,null===b.searchSel&&(b.searchSel=x(c[0]))):(O.is(".focused")||c.trigger("focus"),d.preventDefault()),!1}).on("@change",function(){var a=b.editor.html().replace(/<\/?(?:div|span|p)[^>]*>/gi,"");a.length&&!/^]*>$/i.test(a)||b.editor.html(b.content=""),c[g](b.getText())}).on("@source.change",function(){b.setText(c[g]()),m("change")}).on("@focus",function(){O.addClass("focused")}).on("@blur",function(){O.removeClass("focused"),d.hidePickerOnBlur&&b.hidePicker();var a=b.editor.html();b.content!==a?(b.content=a,m(b,"change",[b.editor]),c.trigger("blur").trigger("change")):c.trigger("blur"),d.search&&(b.search.val(""),b.trigger("search.keypress",!0))}),d.search&&b.on("@search.focus",function(){b.stayFocused=!0,b.search.addClass("focused")}).on("@search.keypress",function(c){var e=r.find(".emojionearea-filter"),f=d.tones?N.find("i.active").data("skin"):0,g=b.search.val().replace(/ /g,"_").replace(/"/g,'\\"');g&&g.length?(b.recentFilter.hasClass("active")&&b.recentFilter.removeClass("active").next().addClass("active"),b.recentCategory.hide(),b.recentFilter.hide(),L.each(function(){var b=function(a,b){var c=a.find('.emojibtn[data-name*="'+g+'"]');if(0===c.length)a.data("tone")===b&&a.hide(),e.filter('[data-filter="'+a.attr("name")+'"]').hide();else{var d=a.find('.emojibtn:not([data-name*="'+g+'"])');d.hide(),c.show(),a.data("tone")===b&&a.show(),e.filter('[data-filter="'+a.attr("name")+'"]').show()}},c=a(this);0===c.data("tone")?A.filter(':not([name="recent"])').each(function(){b(a(this),0)}):b(c,f)}),R?E.call(b):M.trigger("scroll")):(I(b,!0),L.filter('[data-tone="'+N.find("i.active").data("skin")+'"]:not([name="recent"])').show(),a(".emojibtn",L).show(),e.show(),E.call(b))}).on("@search.blur",function(){b.stayFocused=!1,b.search.removeClass("focused"),b.trigger("blur")}),d.shortcuts&&b.on("@keydown",function(a,c){c.ctrlKey||(9==c.which?(c.preventDefault(),o.click()):27==c.which&&(c.preventDefault(),o.is(".active")&&b.hidePicker()))}),s(d.events)&&!a.isEmptyObject(d.events)&&a.each(d.events,function(a,c){b.on(a.replace(/_/g,"."),c)}),d.autocomplete){var S=function(){var c={maxCount:d.textcomplete.maxCount,placement:d.textcomplete.placement};d.shortcuts&&(c.onKeydown=function(a,b){if(!a.ctrlKey&&13==a.which)return b.KEY_ENTER});var f=a.map(e.emojioneList,function(a,b){return d.autocompleteTones?b:/_tone[12345]/.test(b)?null:b});f.sort(),i.textcomplete([{id:j,match:/\B(:[\-+\w]*)$/,search:function(b,c){c(a.map(f,function(a){return 0===a.indexOf(b)?a:null}))},template:function(a){return p(a,b.emojiTemplate)+" "+a.replace(/:/g,"")},replace:function(a){return p(a,b.emojiTemplate)},cache:!0,index:1}],c),d.textcomplete.placement&&"static"==a(i.data("textComplete").option.appendTo).css("position")&&a(i.data("textComplete").option.appendTo).css("position","relative")},T=function(){if(b.disabled){var a=function(){b.off("enabled",a),S()};b.on("enabled",a)}else S()};a.fn.textcomplete?T():a.ajax({url:"https://cdn.rawgit.com/yuku-t/jquery-textcomplete/v1.3.4/dist/jquery.textcomplete.js",dataType:"script",cache:!0,success:T})}b.inline&&(O.addClass(F("inline",!0)),b.on("@keydown",function(a,b){13==b.which&&b.preventDefault()})),/firefox/i.test(navigator.userAgent)&&document.execCommand("enableObjectResizing",!1,!1),b.isReady=!0,b.trigger("onLoad",i),b.trigger("ready",i)}var M={defaultBase:"https://cdnjs.cloudflare.com/ajax/libs/emojione/",defaultBase3:"https://cdn.jsdelivr.net/",base:null,isLoading:!1};function N(b){var c=r();if(b=w(b),!M.isLoading)if(!e||u(t(e))<2){M.isLoading=!0;var d;d=u(c)>5?M.defaultBase3+"npm/emojione@"+c:u(c)>4?M.defaultBase3+"emojione/"+c:M.defaultBase+"/"+c,a.ajax({url:d+"/lib/js/emojione.min.js",dataType:"script",cache:!0,success:function(){e=window.emojione,c=t(e),k=u(c);var d;k>4?(M.base=M.defaultBase3+"emojione/assets/"+c,d=M.base+"/sprites/emojione-sprite-"+e.emojiSize+".css"):(M.base=M.defaultBase+c+"/assets",d=M.base+"/sprites/emojione.sprites.css"),b.sprite&&(document.createStyleSheet?document.createStyleSheet(d):a("",{rel:"stylesheet",href:d}).appendTo("head"));while(f.length)f.shift().call();M.isLoading=!1}})}else c=t(e),k=u(c),k>4?M.base=M.defaultBase3+"emojione/assets/"+c:M.base=M.defaultBase+c+"/assets";g(function(){var a="";b.useInternalCDN&&(k>4&&(a=e.emojiSize+"/"),e.imagePathPNG=M.base+"/png/"+a,e.imagePathSVG=M.base+"/svg/"+a,e.imagePathSVGSprites=M.base+"/sprites/emojione.sprites.svg",e.imageType=b.imageType),u(c)>4?(z=e.regUnicode,e.imageType=b.imageType||"png"):z=new RegExp("]*>.*?|]*>.*?|<(?:object|embed|svg|img|div|span|p|a)[^>]*>|("+e.unicodeRegexp+")","gi")})}var O=function(a,e){var f=this;N(e),c[f.id=++b]={},d[f.id]={},g(function(){L(f,a,e)})};function P(b,c){c=c.replace(/^@/,"");var e=b.id;d[e][c]&&(a.each(d[e][c],function(d,e){a.each(a.isArray(e[0])?e[0]:[e[0]],function(d,f){a(f).on(e[1],function(){var d=i.call(arguments),f=a.isFunction(e[2])?e[2].apply(b,[c].concat(d)):e[2];f&&m(b,c,[f].concat(d))})})}),d[e][c]=null)}O.prototype.on=function(b,d){if(b&&a.isFunction(d)){var e=this;a.each(b.toLowerCase().split(" "),function(a,b){P(e,b),(c[e.id][b]||(c[e.id][b]=[])).push(d)})}return this},O.prototype.off=function(b,d){if(b){var e=this.id;a.each(b.toLowerCase().replace(/_/g,".").split(" "),function(b,f){c[e][f]&&!/^@/.test(f)&&(d?a.each(c[e][f],function(a,b){b===d&&(c[e][f]=c[e][f].splice(a,1))}):c[e][f]=[])})}return this},O.prototype.trigger=function(){var a=i.call(arguments),b=[this].concat(a.slice(0,1));return b.push(a.slice(1)),m.apply(this,b)},O.prototype.setFocus=function(){var a=this;return g(function(){a.editor.focus()}),a},O.prototype.setText=function(a){var b=this;return g(function(){b.editor.html(B(a,b)),b.content=b.editor.html(),m(b,"change",[b.editor]),D.apply(b)}),b},O.prototype.getText=function(){return C(this.editor.html(),this)},O.prototype.showPicker=function(){var a=this;return a._sh_timer&&window.clearTimeout(a._sh_timer),a.picker.removeClass("hidden"),a._sh_timer=window.setTimeout(function(){a.button.addClass("active")},50),m(a,"picker.show",[a.picker]),a},O.prototype.hidePicker=function(){var a=this;return a._sh_timer&&window.clearTimeout(a._sh_timer),a.button.removeClass("active"),a._sh_timer=window.setTimeout(function(){a.picker.addClass("hidden")},500),m(a,"picker.hide",[a.picker]),a},O.prototype.enable=function(){var a=this,b=function(){a.disabled=!1,a.editor.prop("contenteditable",!0),a.button.show();var b=a[a.standalone?"button":"editor"];b.parent().removeClass("emojionearea-disable"),m(a,"enabled",[b])};return a.isReady?b():a.on("ready",b),a},O.prototype.disable=function(){var a=this;a.disabled=!0;var b=function(){a.editor.prop("contenteditable",!1),a.hidePicker(),a.button.hide();var b=a[a.standalone?"button":"editor"];b.parent().addClass("emojionearea-disable"),m(a,"disabled",[b])};return a.isReady?b():a.on("ready",b),a},a.fn.emojioneArea=function(b){return this.each(function(){return this.emojioneArea?this.emojioneArea:(a.data(this,"emojioneArea",this.emojioneArea=new O(a(this),b)),this.emojioneArea)})},a.fn.emojioneArea.defaults=v(),a.fn.emojioneAreaText=function(b){b=w(b);var c=this,d={shortnames:!b||"undefined"==typeof b.shortnames||b.shortnames,emojiTemplate:'{alt}'};return N(b),g(function(){c.each(function(){var b=a(this);return b.hasClass("emojionearea-text")||b.addClass("emojionearea-text").html(B(b.is("TEXTAREA")||b.is("INPUT")?b.val():b.text(),d)),b})}),this}},window); -//# sourceMappingURL=emojionearea.min.map \ No newline at end of file diff --git a/cookbook/static/js/bookmarklet.js b/cookbook/static/js/bookmarklet.js index 434b2632..f109b2df 100644 --- a/cookbook/static/js/bookmarklet.js +++ b/cookbook/static/js/bookmarklet.js @@ -18,7 +18,7 @@ } function initBookmarklet() { (window.bookmarkletTandoor = function() { - let recipe = document.documentElement.innerHTML + let recipe = document.documentElement.outerHTML let windowName = "ImportRecipe" let url = localStorage.getItem('importURL') let redirect = localStorage.getItem('redirectURL') diff --git a/cookbook/static/tabulator/tabulator.min.js b/cookbook/static/tabulator/tabulator.min.js deleted file mode 100644 index 2b316d84..00000000 --- a/cookbook/static/tabulator/tabulator.min.js +++ /dev/null @@ -1,12 +0,0 @@ -/* Tabulator v4.6.0 (c) Oliver Folkerd */ -var _typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e};!function(e,t){"object"===("undefined"==typeof exports?"undefined":_typeof(exports))&&"undefined"!=typeof module?module.exports=t():"function"==typeof define&&define.amd?define(t):e.Tabulator=t()}(this,function(){"use strict";Array.prototype.findIndex||Object.defineProperty(Array.prototype,"findIndex",{value:function(e){if(null==this)throw new TypeError('"this" is null or not defined');var t=Object(this),o=t.length>>>0;if("function"!=typeof e)throw new TypeError("predicate must be a function");for(var i=arguments[1],n=0;n>>0;if("function"!=typeof e)throw new TypeError("predicate must be a function");for(var i=arguments[1],n=0;no?(t=e-o,this.element.style.marginLeft=-t+"px"):this.element.style.marginLeft=0,this.scrollLeft=e,this.table.modExists("frozenColumns")&&this.table.modules.frozenColumns.scrollHorizontal()},t.prototype.generateColumnsFromRowData=function(e){var t,o,i=[];if(e&&e.length){t=e[0];for(var n in t){var s={field:n,title:n},r=t[n];switch(void 0===r?"undefined":_typeof(r)){case"undefined":o="string";break;case"boolean":o="boolean";break;case"object":o=Array.isArray(r)?"array":"string";break;default:o=isNaN(r)||""===r?r.match(/((^[0-9]+[a-z]+)|(^[a-z]+[0-9]+))+$/i)?"alphanum":"string":"number"}s.sorter=o,i.push(s)}this.table.options.columns=i,this.setColumns(this.table.options.columns)}},t.prototype.setColumns=function(e,t){for(var o=this;o.headersElement.firstChild;)o.headersElement.removeChild(o.headersElement.firstChild);o.columns=[],o.columnsByIndex=[],o.columnsByField={},o.table.modExists("frozenColumns")&&o.table.modules.frozenColumns.reset(),e.forEach(function(e,t){o._addColumn(e)}),o._reIndexColumns(),o.table.options.responsiveLayout&&o.table.modExists("responsiveLayout",!0)&&o.table.modules.responsiveLayout.initialize(),o.redraw(!0)},t.prototype._addColumn=function(e,t,o){var n=new i(e,this),s=n.getElement(),r=o?this.findColumnIndex(o):o;if(o&&r>-1){var a=this.columns.indexOf(o.getTopColumn()),l=o.getElement();t?(this.columns.splice(a,0,n),l.parentNode.insertBefore(s,l)):(this.columns.splice(a+1,0,n),l.parentNode.insertBefore(s,l.nextSibling))}else t?(this.columns.unshift(n),this.headersElement.insertBefore(n.getElement(),this.headersElement.firstChild)):(this.columns.push(n),this.headersElement.appendChild(n.getElement())),n.columnRendered();return n},t.prototype.registerColumnField=function(e){e.definition.field&&(this.columnsByField[e.definition.field]=e)},t.prototype.registerColumnPosition=function(e){this.columnsByIndex.push(e)},t.prototype._reIndexColumns=function(){this.columnsByIndex=[],this.columns.forEach(function(e){e.reRegisterPosition()})},t.prototype._verticalAlignHeaders=function(){var e=this,t=0;e.columns.forEach(function(e){var o;e.clearVerticalAlign(),(o=e.getHeight())>t&&(t=o)}),e.columns.forEach(function(o){o.verticalAlign(e.table.options.columnHeaderVertAlign,t)}),e.rowManager.adjustTableSize()},t.prototype.findColumn=function(e){var t=this;if("object"!=(void 0===e?"undefined":_typeof(e)))return this.columnsByField[e]||!1;if(e instanceof i)return e;if(e instanceof o)return e._getSelf()||!1;if("undefined"!=typeof HTMLElement&&e instanceof HTMLElement){return t.columns.find(function(t){return t.element===e})||!1}return!1},t.prototype.getColumnByField=function(e){return this.columnsByField[e]},t.prototype.getColumnsByFieldRoot=function(e){var t=this,o=[];return Object.keys(this.columnsByField).forEach(function(i){i.split(".")[0]===e&&o.push(t.columnsByField[i])}),o},t.prototype.getColumnByIndex=function(e){return this.columnsByIndex[e]},t.prototype.getFirstVisibileColumn=function(e){var e=this.columnsByIndex.findIndex(function(e){return e.visible});return e>-1&&this.columnsByIndex[e]},t.prototype.getColumns=function(){return this.columns},t.prototype.findColumnIndex=function(e){return this.columnsByIndex.findIndex(function(t){return e===t})},t.prototype.getRealColumns=function(){return this.columnsByIndex},t.prototype.traverse=function(e){this.columnsByIndex.forEach(function(t,o){e(t,o)})},t.prototype.getDefinitions=function(e){var t=this,o=[];return t.columnsByIndex.forEach(function(t){(!e||e&&t.visible)&&o.push(t.getDefinition())}),o},t.prototype.getDefinitionTree=function(){var e=this,t=[];return e.columns.forEach(function(e){t.push(e.getDefinition(!0))}),t},t.prototype.getComponents=function(e){var t=this,o=[];return(e?t.columns:t.columnsByIndex).forEach(function(e){o.push(e.getComponent())}),o},t.prototype.getWidth=function(){var e=0;return this.columnsByIndex.forEach(function(t){t.visible&&(e+=t.getWidth())}),e},t.prototype.moveColumn=function(e,t,o){this.moveColumnActual(e,t,o),this.table.options.responsiveLayout&&this.table.modExists("responsiveLayout",!0)&&this.table.modules.responsiveLayout.initialize(),this.table.modExists("columnCalcs")&&this.table.modules.columnCalcs.recalc(this.table.rowManager.activeRows),t.element.parentNode.insertBefore(e.element,t.element),o&&t.element.parentNode.insertBefore(t.element,e.element),this._verticalAlignHeaders(),this.table.rowManager.reinitialize()},t.prototype.moveColumnActual=function(e,t,o){e.parent.isGroup?this._moveColumnInArray(e.parent.columns,e,t,o):this._moveColumnInArray(this.columns,e,t,o),this._moveColumnInArray(this.columnsByIndex,e,t,o,!0),this.table.options.responsiveLayout&&this.table.modExists("responsiveLayout",!0)&&this.table.modules.responsiveLayout.initialize(),this.table.options.columnMoved&&this.table.options.columnMoved.call(this.table,e.getComponent(),this.table.columnManager.getComponents()),this.table.options.persistence&&this.table.modExists("persistence",!0)&&this.table.modules.persistence.config.columns&&this.table.modules.persistence.save("columns")},t.prototype._moveColumnInArray=function(e,t,o,i,n){var s,r=e.indexOf(t);r>-1&&(e.splice(r,1),s=e.indexOf(o),s>-1?i&&(s+=1):s=r,e.splice(s,0,t),n&&this.table.rowManager.rows.forEach(function(e){if(e.cells.length){var t=e.cells.splice(r,1)[0];e.cells.splice(s,0,t)}}))},t.prototype.scrollToColumn=function(e,t,o){var i=this,n=0,s=0,r=0,a=e.getElement();return new Promise(function(l,c){if(void 0===t&&(t=i.table.options.scrollToColumnPosition),void 0===o&&(o=i.table.options.scrollToColumnIfVisible),e.visible){switch(t){case"middle":case"center":r=-i.element.clientWidth/2;break;case"right":r=a.clientWidth-i.headersElement.clientWidth}if(!o&&(s=a.offsetLeft)>0&&s+a.offsetWidthe.rowManager.element.clientHeight&&(t-=e.rowManager.element.offsetWidth-e.rowManager.element.clientWidth),this.columnsByIndex.forEach(function(i){var n,s,r;i.visible&&(n=i.definition.width||0,s=void 0===i.minWidth?e.table.options.columnMinWidth:parseInt(i.minWidth),r="string"==typeof n?n.indexOf("%")>-1?t/100*parseInt(n):parseInt(n):n,o+=r>s?r:s)}),o},t.prototype.addColumn=function(e,t,o){var i=this;return new Promise(function(n,s){var r=i._addColumn(e,t,o);i._reIndexColumns(),i.table.options.responsiveLayout&&i.table.modExists("responsiveLayout",!0)&&i.table.modules.responsiveLayout.initialize(),i.table.modExists("columnCalcs")&&i.table.modules.columnCalcs.recalc(i.table.rowManager.activeRows),i.redraw(),"fitColumns"!=i.table.modules.layout.getMode()&&r.reinitializeWidth(),i._verticalAlignHeaders(),i.table.rowManager.reinitialize(),n(r)})},t.prototype.deregisterColumn=function(e){var t,o=e.getField();o&&delete this.columnsByField[o],t=this.columnsByIndex.indexOf(e),t>-1&&this.columnsByIndex.splice(t,1),t=this.columns.indexOf(e),t>-1&&this.columns.splice(t,1),this.table.options.responsiveLayout&&this.table.modExists("responsiveLayout",!0)&&this.table.modules.responsiveLayout.initialize(),this.redraw()},t.prototype.redraw=function(e){e&&(u.prototype.helpers.elVisible(this.element)&&this._verticalAlignHeaders(),this.table.rowManager.resetScroll(),this.table.rowManager.reinitialize()),["fitColumns","fitDataStretch"].indexOf(this.table.modules.layout.getMode())>-1?this.table.modules.layout.layout():e?this.table.modules.layout.layout():this.table.options.responsiveLayout&&this.table.modExists("responsiveLayout",!0)&&this.table.modules.responsiveLayout.update(),this.table.modExists("frozenColumns")&&this.table.modules.frozenColumns.layout(),this.table.modExists("columnCalcs")&&this.table.modules.columnCalcs.recalc(this.table.rowManager.activeRows),e&&(this.table.options.persistence&&this.table.modExists("persistence",!0)&&this.table.modules.persistence.config.columns&&this.table.modules.persistence.save("columns"),this.table.modExists("columnCalcs")&&this.table.modules.columnCalcs.redraw()),this.table.footerManager.redraw()};var o=function(e){this._column=e,this.type="ColumnComponent"};o.prototype.getElement=function(){return this._column.getElement()},o.prototype.getDefinition=function(){return this._column.getDefinition()},o.prototype.getField=function(){return this._column.getField()},o.prototype.getCells=function(){var e=[];return this._column.cells.forEach(function(t){e.push(t.getComponent())}),e},o.prototype.getVisibility=function(){return this._column.visible},o.prototype.show=function(){this._column.isGroup?this._column.columns.forEach(function(e){e.show()}):this._column.show()},o.prototype.hide=function(){this._column.isGroup?this._column.columns.forEach(function(e){e.hide()}):this._column.hide()},o.prototype.toggle=function(){this._column.visible?this.hide():this.show()},o.prototype.delete=function(){return this._column.delete()},o.prototype.getSubColumns=function(){var e=[];return this._column.columns.length&&this._column.columns.forEach(function(t){e.push(t.getComponent())}),e},o.prototype.getParentColumn=function(){return this._column.parent instanceof i&&this._column.parent.getComponent()},o.prototype._getSelf=function(){return this._column},o.prototype.scrollTo=function(){return this._column.table.columnManager.scrollToColumn(this._column)},o.prototype.getTable=function(){return this._column.table},o.prototype.headerFilterFocus=function(){this._column.table.modExists("filter",!0)&&this._column.table.modules.filter.setHeaderFilterFocus(this._column)},o.prototype.reloadHeaderFilter=function(){this._column.table.modExists("filter",!0)&&this._column.table.modules.filter.reloadHeaderFilter(this._column)},o.prototype.getHeaderFilterValue=function(){this._column.table.modExists("filter",!0)&&this._column.table.modules.filter.getHeaderFilterValue(this._column)},o.prototype.setHeaderFilterValue=function(e){this._column.table.modExists("filter",!0)&&this._column.table.modules.filter.setHeaderFilterValue(this._column,e)},o.prototype.move=function(e,t){var o=this._column.table.columnManager.findColumn(e);o?this._column.table.columnManager.moveColumn(this._column,o,t):console.warn("Move Error - No matching column found:",o)},o.prototype.getNextColumn=function(){var e=this._column.nextColumn();return!!e&&e.getComponent()},o.prototype.getPrevColumn=function(){var e=this._column.prevColumn();return!!e&&e.getComponent()},o.prototype.updateDefinition=function(e){return this._column.updateDefinition(e)};var i=function e(t,o){var i=this;this.table=o.table,this.definition=t,this.parent=o,this.type="column",this.columns=[],this.cells=[],this.element=this.createElement(),this.contentElement=!1,this.titleElement=!1,this.groupElement=this.createGroupElement(),this.isGroup=!1,this.tooltip=!1,this.hozAlign="",this.vertAlign="",this.field="",this.fieldStructure="",this.getFieldValue="",this.setFieldValue="",this.titleFormatterRendered=!1,this.setField(this.definition.field),this.table.options.invalidOptionWarnings&&this.checkDefinition(),this.modules={},this.cellEvents={cellClick:!1,cellDblClick:!1,cellContext:!1,cellTap:!1,cellDblTap:!1,cellTapHold:!1,cellMouseEnter:!1,cellMouseLeave:!1,cellMouseOver:!1,cellMouseOut:!1,cellMouseMove:!1},this.width=null,this.widthStyled="",this.minWidth=null,this.minWidthStyled="",this.widthFixed=!1,this.visible=!0,this._mapDepricatedFunctionality(),t.columns?(this.isGroup=!0,t.columns.forEach(function(t,o){var n=new e(t,i);i.attachColumn(n)}),i.checkColumnVisibility()):o.registerColumnField(this),t.rowHandle&&!1!==this.table.options.movableRows&&this.table.modExists("moveRow")&&this.table.modules.moveRow.setHandle(!0),this._buildHeader(),this.bindModuleColumns()};i.prototype.createElement=function(){var e=document.createElement("div");return e.classList.add("tabulator-col"),e.setAttribute("role","columnheader"),e.setAttribute("aria-sort","none"),e},i.prototype.createGroupElement=function(){var e=document.createElement("div");return e.classList.add("tabulator-col-group-cols"),e},i.prototype.checkDefinition=function(){var e=this;Object.keys(this.definition).forEach(function(t){-1===e.defaultOptionList.indexOf(t)&&console.warn("Invalid column definition option in '"+(e.field||e.definition.title)+"' column:",t)})},i.prototype.setField=function(e){this.field=e,this.fieldStructure=e?this.table.options.nestedFieldSeparator?e.split(this.table.options.nestedFieldSeparator):[e]:[],this.getFieldValue=this.fieldStructure.length>1?this._getNestedData:this._getFlatData,this.setFieldValue=this.fieldStructure.length>1?this._setNestedData:this._setFlatData},i.prototype.registerColumnPosition=function(e){this.parent.registerColumnPosition(e)},i.prototype.registerColumnField=function(e){this.parent.registerColumnField(e)},i.prototype.reRegisterPosition=function(){this.isGroup?this.columns.forEach(function(e){e.reRegisterPosition()}):this.registerColumnPosition(this)},i.prototype._mapDepricatedFunctionality=function(){void 0!==this.definition.hideInHtml&&(this.definition.htmlOutput=!this.definition.hideInHtml,console.warn("hideInHtml column definition property is deprecated, you should now use htmlOutput")),void 0!==this.definition.align&&(this.definition.hozAlign=this.definition.align,console.warn("align column definition property is deprecated, you should now use hozAlign"))},i.prototype.setTooltip=function(){var e=this,t=e.definition,o=t.headerTooltip||!1===t.tooltip?t.headerTooltip:e.table.options.tooltipsHeader;o?!0===o?t.field?e.table.modules.localize.bind("columns|"+t.field,function(o){e.element.setAttribute("title",o||t.title)}):e.element.setAttribute("title",t.title):("function"==typeof o&&!1===(o=o(e.getComponent()))&&(o=""),e.element.setAttribute("title",o)):e.element.setAttribute("title","")},i.prototype._buildHeader=function(){for(var e=this,t=e.definition;e.element.firstChild;)e.element.removeChild(e.element.firstChild);t.headerVertical&&(e.element.classList.add("tabulator-col-vertical"),"flip"===t.headerVertical&&e.element.classList.add("tabulator-col-vertical-flip")),e.contentElement=e._bindEvents(),e.contentElement=e._buildColumnHeaderContent(),e.element.appendChild(e.contentElement),e.isGroup?e._buildGroupHeader():e._buildColumnHeader(),e.setTooltip(),e.table.options.resizableColumns&&e.table.modExists("resizeColumns")&&e.table.modules.resizeColumns.initializeColumn("header",e,e.element),t.headerFilter&&e.table.modExists("filter")&&e.table.modExists("edit")&&(void 0!==t.headerFilterPlaceholder&&t.field&&e.table.modules.localize.setHeaderFilterColumnPlaceholder(t.field,t.headerFilterPlaceholder),e.table.modules.filter.initializeColumn(e)),e.table.modExists("frozenColumns")&&e.table.modules.frozenColumns.initializeColumn(e),e.table.options.movableColumns&&!e.isGroup&&e.table.modExists("moveColumn")&&e.table.modules.moveColumn.initializeColumn(e),(t.topCalc||t.bottomCalc)&&e.table.modExists("columnCalcs")&&e.table.modules.columnCalcs.initializeColumn(e),e.table.modExists("persistence")&&e.table.modules.persistence.config.columns&&e.table.modules.persistence.initializeColumn(e),e.element.addEventListener("mouseenter",function(t){e.setTooltip()})},i.prototype._bindEvents=function(){var e,t,o,i=this,n=i.definition;"function"==typeof n.headerClick&&i.element.addEventListener("click",function(e){n.headerClick(e,i.getComponent())}),"function"==typeof n.headerDblClick&&i.element.addEventListener("dblclick",function(e){n.headerDblClick(e,i.getComponent())}),"function"==typeof n.headerContext&&i.element.addEventListener("contextmenu",function(e){n.headerContext(e,i.getComponent())}),"function"==typeof n.headerTap&&(o=!1,i.element.addEventListener("touchstart",function(e){o=!0},{passive:!0}),i.element.addEventListener("touchend",function(e){o&&n.headerTap(e,i.getComponent()),o=!1})),"function"==typeof n.headerDblTap&&(e=null,i.element.addEventListener("touchend",function(t){e?(clearTimeout(e),e=null,n.headerDblTap(t,i.getComponent())):e=setTimeout(function(){clearTimeout(e),e=null},300)})),"function"==typeof n.headerTapHold&&(t=null,i.element.addEventListener("touchstart",function(e){clearTimeout(t),t=setTimeout(function(){clearTimeout(t),t=null,o=!1,n.headerTapHold(e,i.getComponent())},1e3)},{passive:!0}),i.element.addEventListener("touchend",function(e){clearTimeout(t),t=null})),"function"==typeof n.cellClick&&(i.cellEvents.cellClick=n.cellClick),"function"==typeof n.cellDblClick&&(i.cellEvents.cellDblClick=n.cellDblClick),"function"==typeof n.cellContext&&(i.cellEvents.cellContext=n.cellContext),"function"==typeof n.cellMouseEnter&&(i.cellEvents.cellMouseEnter=n.cellMouseEnter),"function"==typeof n.cellMouseLeave&&(i.cellEvents.cellMouseLeave=n.cellMouseLeave),"function"==typeof n.cellMouseOver&&(i.cellEvents.cellMouseOver=n.cellMouseOver),"function"==typeof n.cellMouseOut&&(i.cellEvents.cellMouseOut=n.cellMouseOut),"function"==typeof n.cellMouseMove&&(i.cellEvents.cellMouseMove=n.cellMouseMove),"function"==typeof n.cellTap&&(i.cellEvents.cellTap=n.cellTap),"function"==typeof n.cellDblTap&&(i.cellEvents.cellDblTap=n.cellDblTap),"function"==typeof n.cellTapHold&&(i.cellEvents.cellTapHold=n.cellTapHold),"function"==typeof n.cellEdited&&(i.cellEvents.cellEdited=n.cellEdited),"function"==typeof n.cellEditing&&(i.cellEvents.cellEditing=n.cellEditing),"function"==typeof n.cellEditCancelled&&(i.cellEvents.cellEditCancelled=n.cellEditCancelled)},i.prototype._buildColumnHeader=function(){var e=this,t=e.definition,o=e.table;if(o.modExists("sort")&&o.modules.sort.initializeColumn(e,e.contentElement),(t.headerContextMenu||t.headerMenu)&&o.modExists("menu")&&o.modules.menu.initializeColumnHeader(e),o.modExists("format")&&o.modules.format.initializeColumn(e),void 0!==t.editor&&o.modExists("edit")&&o.modules.edit.initializeColumn(e),void 0!==t.validator&&o.modExists("validate")&&o.modules.validate.initializeColumn(e),o.modExists("mutator")&&o.modules.mutator.initializeColumn(e),o.modExists("accessor")&&o.modules.accessor.initializeColumn(e),_typeof(o.options.responsiveLayout)&&o.modExists("responsiveLayout")&&o.modules.responsiveLayout.initializeColumn(e),void 0!==t.visible&&(t.visible?e.show(!0):e.hide(!0)),t.cssClass){t.cssClass.split(" ").forEach(function(t){e.element.classList.add(t)})}t.field&&this.element.setAttribute("tabulator-field",t.field),e.setMinWidth(void 0===t.minWidth?e.table.options.columnMinWidth:parseInt(t.minWidth)),e.reinitializeWidth(),e.tooltip=e.definition.tooltip||!1===e.definition.tooltip?e.definition.tooltip:e.table.options.tooltips,e.hozAlign=void 0===e.definition.hozAlign?e.table.options.cellHozAlign:e.definition.hozAlign,e.vertAlign=void 0===e.definition.vertAlign?e.table.options.cellVertAlign:e.definition.vertAlign},i.prototype._buildColumnHeaderContent=function(){var e=(self.definition,self.table,document.createElement("div"));return e.classList.add("tabulator-col-content"),this.titleElement=this._buildColumnHeaderTitle(),e.appendChild(this.titleElement),e},i.prototype._buildColumnHeaderTitle=function(){var e=this,t=e.definition,o=e.table,i=document.createElement("div");if(i.classList.add("tabulator-col-title"),t.editableTitle){var n=document.createElement("input");n.classList.add("tabulator-title-editor"),n.addEventListener("click",function(e){e.stopPropagation(),n.focus()}),n.addEventListener("change",function(){t.title=n.value,o.options.columnTitleChanged.call(e.table,e.getComponent())}),i.appendChild(n),t.field?o.modules.localize.bind("columns|"+t.field,function(e){n.value=e||t.title||" "}):n.value=t.title||" "}else t.field?o.modules.localize.bind("columns|"+t.field,function(o){e._formatColumnHeaderTitle(i,o||t.title||" ")}):e._formatColumnHeaderTitle(i,t.title||" ");return i},i.prototype._formatColumnHeaderTitle=function(e,t){var o,i,n,s,r,a=this;if(this.definition.titleFormatter&&this.table.modExists("format"))switch(o=this.table.modules.format.getFormatter(this.definition.titleFormatter),r=function(e){a.titleFormatterRendered=e},s={getValue:function(){return t},getElement:function(){return e}},n=this.definition.titleFormatterParams||{},n="function"==typeof n?n():n,i=o.call(this.table.modules.format,s,n,r),void 0===i?"undefined":_typeof(i)){case"object":i instanceof Node?e.appendChild(i):(e.innerHTML="",console.warn("Format Error - Title formatter has returned a type of object, the only valid formatter object return is an instance of Node, the formatter returned:",i));break;case"undefined":case"null":e.innerHTML="";break;default:e.innerHTML=i}else e.innerHTML=t},i.prototype._buildGroupHeader=function(){var e=this;if(this.element.classList.add("tabulator-col-group"),this.element.setAttribute("role","columngroup"),this.element.setAttribute("aria-title",this.definition.title),this.definition.cssClass){this.definition.cssClass.split(" ").forEach(function(t){e.element.classList.add(t)})}this.element.appendChild(this.groupElement)},i.prototype._getFlatData=function(e){return e[this.field]},i.prototype._getNestedData=function(e){for(var t,o=e,i=this.fieldStructure,n=i.length,s=0;s-1&&this._nextVisibleColumn(e+1)},i.prototype._nextVisibleColumn=function(e){var t=this.table.columnManager.getColumnByIndex(e);return!t||t.visible?t:this._nextVisibleColumn(e+1)},i.prototype.prevColumn=function(){var e=this.table.columnManager.findColumnIndex(this);return e>-1&&this._prevVisibleColumn(e-1)},i.prototype._prevVisibleColumn=function(e){var t=this.table.columnManager.getColumnByIndex(e);return!t||t.visible?t:this._prevVisibleColumn(e-1)},i.prototype.reinitializeWidth=function(e){this.widthFixed=!1,void 0===this.definition.width||e||this.setWidth(this.definition.width),this.table.modExists("filter")&&this.table.modules.filter.hideHeaderFilterElements(),this.fitToData(),this.table.modExists("filter")&&this.table.modules.filter.showHeaderFilterElements()},i.prototype.fitToData=function(){var e=this;this.widthFixed||(this.element.style.width="",e.cells.forEach(function(e){e.clearWidth()}));var t=this.element.offsetWidth;e.width&&this.widthFixed||(e.cells.forEach(function(e){var o=e.getWidth();o>t&&(t=o)}),t&&e.setWidthActual(t+1))},i.prototype.updateDefinition=function(e){var t=this;return new Promise(function(o,i){var n;t.isGroup?(console.warn("Column Update Error - The updateDefintion function is only available on columns, not column groups"),i("Column Update Error - The updateDefintion function is only available on columns, not column groups")):(n=Object.assign({},t.getDefinition()),n=Object.assign(n,e),t.table.columnManager.addColumn(n,!1,t).then(function(e){n.field==t.field&&(t.field=!1),t.delete().then(function(){o(e.getComponent())}).catch(function(e){i(e)})}).catch(function(e){i(e)}))})},i.prototype.deleteCell=function(e){var t=this.cells.indexOf(e);t>-1&&this.cells.splice(t,1)}, -i.prototype.defaultOptionList=["title","field","columns","visible","align","hozAlign","vertAlign","width","minWidth","widthGrow","widthShrink","resizable","frozen","responsive","tooltip","cssClass","rowHandle","hideInHtml","print","htmlOutput","sorter","sorterParams","formatter","formatterParams","variableHeight","editable","editor","editorParams","validator","mutator","mutatorParams","mutatorData","mutatorDataParams","mutatorEdit","mutatorEditParams","mutatorClipboard","mutatorClipboardParams","accessor","accessorParams","accessorData","accessorDataParams","accessorDownload","accessorDownloadParams","accessorClipboard","accessorClipboardParams","accessorPrint","accessorPrintParams","accessorHtmlOutput","accessorHtmlOutputParams","clipboard","download","downloadTitle","topCalc","topCalcParams","topCalcFormatter","topCalcFormatterParams","bottomCalc","bottomCalcParams","bottomCalcFormatter","bottomCalcFormatterParams","cellClick","cellDblClick","cellContext","cellTap","cellDblTap","cellTapHold","cellMouseEnter","cellMouseLeave","cellMouseOver","cellMouseOut","cellMouseMove","cellEditing","cellEdited","cellEditCancelled","headerSort","headerSortStartingDir","headerSortTristate","headerClick","headerDblClick","headerContext","headerTap","headerDblTap","headerTapHold","headerTooltip","headerVertical","editableTitle","titleFormatter","titleFormatterParams","headerFilter","headerFilterPlaceholder","headerFilterParams","headerFilterEmptyCheck","headerFilterFunc","headerFilterFuncParams","headerFilterLiveFilter","print","headerContextMenu","headerMenu","contextMenu","formatterPrint","formatterPrintParams","formatterClipboard","formatterClipboardParams","formatterHtmlOutput","formatterHtmlOutputParams"],i.prototype.getComponent=function(){return new o(this)};var n=function(e){this.table=e,this.element=this.createHolderElement(),this.tableElement=this.createTableElement(),this.heightFixer=this.createTableElement(),this.columnManager=null,this.height=0,this.firstRender=!1,this.renderMode="virtual",this.fixedHeight=!1,this.rows=[],this.activeRows=[],this.activeRowsCount=0,this.displayRows=[],this.displayRowsCount=0,this.scrollTop=0,this.scrollLeft=0,this.vDomRowHeight=20,this.vDomTop=0,this.vDomBottom=0,this.vDomScrollPosTop=0,this.vDomScrollPosBottom=0,this.vDomTopPad=0,this.vDomBottomPad=0,this.vDomMaxRenderChain=90,this.vDomWindowBuffer=0,this.vDomWindowMinTotalRows=20,this.vDomWindowMinMarginRows=5,this.vDomTopNewRows=[],this.vDomBottomNewRows=[],this.rowNumColumn=!1,this.redrawBlock=!1,this.redrawBlockRestoreConfig=!1,this.redrawBlockRederInPosition=!1};n.prototype.createHolderElement=function(){var e=document.createElement("div");return e.classList.add("tabulator-tableHolder"),e.setAttribute("tabindex",0),e},n.prototype.createTableElement=function(){var e=document.createElement("div");return e.classList.add("tabulator-table"),e},n.prototype.getElement=function(){return this.element},n.prototype.getTableElement=function(){return this.tableElement},n.prototype.getRowPosition=function(e,t){return t?this.activeRows.indexOf(e):this.rows.indexOf(e)},n.prototype.setColumnManager=function(e){this.columnManager=e},n.prototype.initialize=function(){var e=this;e.setRenderMode(),e.element.appendChild(e.tableElement),e.firstRender=!0,e.element.addEventListener("scroll",function(){var t=e.element.scrollLeft;e.scrollLeft!=t&&(e.columnManager.scrollHorizontal(t),e.table.options.groupBy&&e.table.modules.groupRows.scrollHeaders(t),e.table.modExists("columnCalcs")&&e.table.modules.columnCalcs.scrollHorizontal(t),e.table.options.scrollHorizontal(t)),e.scrollLeft=t}),"virtual"===this.renderMode&&e.element.addEventListener("scroll",function(){var t=e.element.scrollTop,o=e.scrollTop>t;e.scrollTop!=t?(e.scrollTop=t,e.scrollVertical(o),"scroll"==e.table.options.ajaxProgressiveLoad&&e.table.modules.ajax.nextPage(e.element.scrollHeight-e.element.clientHeight-t),e.table.options.scrollVertical(t)):e.scrollTop=t})},n.prototype.findRow=function(e){var t=this;if("object"!=(void 0===e?"undefined":_typeof(e))){if(void 0===e||null===e)return!1;return t.rows.find(function(o){return o.data[t.table.options.index]==e})||!1}if(e instanceof r)return e;if(e instanceof s)return e._getSelf()||!1;if("undefined"!=typeof HTMLElement&&e instanceof HTMLElement){return t.rows.find(function(t){return t.element===e})||!1}return!1},n.prototype.getRowFromDataObject=function(e){return this.rows.find(function(t){return t.data===e})||!1},n.prototype.getRowFromPosition=function(e,t){return t?this.activeRows[e]:this.rows[e]},n.prototype.scrollToRow=function(e,t,o){var i,n=this,s=this.getDisplayRows().indexOf(e),r=e.getElement(),a=0;return new Promise(function(e,l){if(s>-1){if(void 0===t&&(t=n.table.options.scrollToRowPosition),void 0===o&&(o=n.table.options.scrollToRowIfVisible),"nearest"===t)switch(n.renderMode){case"classic":i=u.prototype.helpers.elOffset(r).top,t=Math.abs(n.element.scrollTop-i)>Math.abs(n.element.scrollTop+n.element.clientHeight-i)?"bottom":"top";break;case"virtual":t=Math.abs(n.vDomTop-s)>Math.abs(n.vDomBottom-s)?"bottom":"top"}if(!o&&u.prototype.helpers.elVisible(r)&&(a=u.prototype.helpers.elOffset(r).top-u.prototype.helpers.elOffset(n.element).top)>0&&a-1&&this.activeRows.splice(i,1),o>-1&&this.rows.splice(o,1),this.setActiveRows(this.activeRows),this.displayRowIterator(function(t){var o=t.indexOf(e);o>-1&&t.splice(o,1)}),t||this.reRenderInPosition(),this.regenerateRowNumbers(),this.table.options.rowDeleted.call(this.table,e.getComponent()),this.table.options.dataEdited.call(this.table,this.getData()),this.table.options.groupBy&&this.table.modExists("groupRows")?this.table.modules.groupRows.updateGroupRows(!0):this.table.options.pagination&&this.table.modExists("page")?this.refreshActiveData(!1,!1,!0):this.table.options.pagination&&this.table.modExists("page")&&this.refreshActiveData("page")},n.prototype.addRow=function(e,t,o,i){var n=this.addRowActual(e,t,o,i);return this.table.options.history&&this.table.modExists("history")&&this.table.modules.history.action("rowAdd",n,{data:e,pos:t,index:o}),n},n.prototype.addRows=function(e,t,o){var i=this,n=this,s=0,r=[];return new Promise(function(a,l){t=i.findAddRowPos(t),Array.isArray(e)||(e=[e]),s=e.length-1,(void 0===o&&t||void 0!==o&&!t)&&e.reverse(),e.forEach(function(e,i){var s=n.addRow(e,t,o,!0);r.push(s)}),i.table.options.groupBy&&i.table.modExists("groupRows")?i.table.modules.groupRows.updateGroupRows(!0):i.table.options.pagination&&i.table.modExists("page")?i.refreshActiveData(!1,!1,!0):i.reRenderInPosition(),i.table.modExists("columnCalcs")&&i.table.modules.columnCalcs.recalc(i.table.rowManager.activeRows),i.regenerateRowNumbers(),a(r)})},n.prototype.findAddRowPos=function(e){return void 0===e&&(e=this.table.options.addRowPos),"pos"===e&&(e=!0),"bottom"===e&&(e=!1),e},n.prototype.addRowActual=function(e,t,o,i){var n,s,a=e instanceof r?e:new r(e||{},this),l=this.findAddRowPos(t),c=-1;if(!o&&this.table.options.pagination&&"page"==this.table.options.paginationAddRow&&(s=this.getDisplayRows(),l?s.length?o=s[0]:this.activeRows.length&&(o=this.activeRows[this.activeRows.length-1],l=!1):s.length&&(o=s[s.length-1],l=!(s.length1&&(!o||o&&-1==u.indexOf(o)?l?u[0]!==a&&(o=u[0],this._moveRowInArray(a.getGroup().rows,a,o,!l)):u[u.length-1]!==a&&(o=u[u.length-1],this._moveRowInArray(a.getGroup().rows,a,o,!l)):this._moveRowInArray(a.getGroup().rows,a,o,!l))}return o&&(c=this.rows.indexOf(o)),o&&c>-1?(n=this.activeRows.indexOf(o),this.displayRowIterator(function(e){var t=e.indexOf(o);t>-1&&e.splice(l?t:t+1,0,a)}),n>-1&&this.activeRows.splice(l?n:n+1,0,a),this.rows.splice(l?c:c+1,0,a)):l?(this.displayRowIterator(function(e){e.unshift(a)}),this.activeRows.unshift(a),this.rows.unshift(a)):(this.displayRowIterator(function(e){e.push(a)}),this.activeRows.push(a),this.rows.push(a)),this.setActiveRows(this.activeRows),this.table.options.rowAdded.call(this.table,a.getComponent()),this.table.options.dataEdited.call(this.table,this.getData()),i||this.reRenderInPosition(),a},n.prototype.moveRow=function(e,t,o){this.table.options.history&&this.table.modExists("history")&&this.table.modules.history.action("rowMove",e,{posFrom:this.getRowPosition(e),posTo:this.getRowPosition(t),to:t,after:o}),this.moveRowActual(e,t,o),this.regenerateRowNumbers(),this.table.options.rowMoved.call(this.table,e.getComponent())},n.prototype.moveRowActual=function(e,t,o){var i=this;if(this._moveRowInArray(this.rows,e,t,o),this._moveRowInArray(this.activeRows,e,t,o),this.displayRowIterator(function(n){i._moveRowInArray(n,e,t,o)}),this.table.options.groupBy&&this.table.modExists("groupRows")){var n=t.getGroup(),s=e.getGroup();n===s?this._moveRowInArray(n.rows,e,t,o):(s&&s.removeRow(e),n.insertRow(e,t,o))}},n.prototype._moveRowInArray=function(e,t,o,i){var n,s,r,a;if(t!==o&&(n=e.indexOf(t),n>-1&&(e.splice(n,1),s=e.indexOf(o),s>-1?i?e.splice(s+1,0,t):e.splice(s,0,t):e.splice(n,0,t)),e===this.getDisplayRows())){r=nn?s:n+1;for(var l=r;l<=a;l++)e[l]&&this.styleRow(e[l],l)}},n.prototype.clearData=function(){this.setData([])},n.prototype.getRowIndex=function(e){return this.findRowIndex(e,this.rows)},n.prototype.getDisplayRowIndex=function(e){var t=this.getDisplayRows().indexOf(e);return t>-1&&t},n.prototype.nextDisplayRow=function(e,t){var o=this.getDisplayRowIndex(e),i=!1;return!1!==o&&o-1)&&o},n.prototype.getData=function(e,t){var o=[];return this.getRows(e).forEach(function(e){"row"==e.type&&o.push(e.getData(t||"data"))}),o},n.prototype.getComponents=function(e){var t=[];return this.getRows(e).forEach(function(e){t.push(e.getComponent())}),t},n.prototype.getDataCount=function(e){return this.getRows(e).length},n.prototype._genRemoteRequest=function(){var e=this,t=this.table,o=t.options,i={};if(t.modExists("page")){if(o.ajaxSorting){var n=this.table.modules.sort.getSort();n.forEach(function(e){delete e.column}),i[this.table.modules.page.paginationDataSentNames.sorters]=n}if(o.ajaxFiltering){var s=this.table.modules.filter.getFilters(!0,!0);i[this.table.modules.page.paginationDataSentNames.filters]=s}this.table.modules.ajax.setParams(i,!0)}t.modules.ajax.sendRequest().then(function(t){e._setDataActual(t,!0)}).catch(function(e){})},n.prototype.filterRefresh=function(){var e=this.table,t=e.options,o=this.scrollLeft;t.ajaxFiltering?"remote"==t.pagination&&e.modExists("page")?(e.modules.page.reset(!0),e.modules.page.setPage(1).then(function(){}).catch(function(){})):t.ajaxProgressiveLoad?e.modules.ajax.loadData().then(function(){}).catch(function(){}):this._genRemoteRequest():this.refreshActiveData("filter"),this.scrollHorizontal(o)},n.prototype.sorterRefresh=function(e){var t=this.table,o=this.table.options,i=this.scrollLeft;o.ajaxSorting?("remote"==o.pagination||o.progressiveLoad)&&t.modExists("page")?(t.modules.page.reset(!0),t.modules.page.setPage(1).then(function(){}).catch(function(){})):o.ajaxProgressiveLoad?t.modules.ajax.loadData().then(function(){}).catch(function(){}):this._genRemoteRequest():this.refreshActiveData(e?"filter":"sort"),this.scrollHorizontal(i)},n.prototype.scrollHorizontal=function(e){this.scrollLeft=e,this.element.scrollLeft=e,this.table.options.groupBy&&this.table.modules.groupRows.scrollHeaders(e),this.table.modExists("columnCalcs")&&this.table.modules.columnCalcs.scrollHorizontal(e)},n.prototype.refreshActiveData=function(e,t,o){var i,n=this,s=this.table,r=["all","filter","sort","display","freeze","group","tree","page"];if(this.redrawBlock)return void((!this.redrawBlockRestoreConfig||r.indexOf(e)=0))break;s=a}else if(t-r[a].getElement().offsetTop>=0)n=a;else{if(i=!0,!(o-r[a].getElement().offsetTop>=0))break;s=a}}else n=this.vDomTop,s=this.vDomBottom;return r.slice(n,s+1)},n.prototype.displayRowIterator=function(e){this.displayRows.forEach(e),this.displayRowsCount=this.displayRows[this.displayRows.length-1].length},n.prototype.getRows=function(e){var t;switch(e){case"active":t=this.activeRows;break;case"display":t=this.table.rowManager.getDisplayRows();break;case"visible":t=this.getVisibleRows(!0);break;default:t=this.rows}return t},n.prototype.reRenderInPosition=function(e){if("virtual"==this.getRenderMode())if(this.redrawBlock)e?e():this.redrawBlockRederInPosition=!0;else{for(var t=this.element.scrollTop,o=!1,i=!1,n=this.scrollLeft,s=this.getDisplayRows(),r=this.vDomTop;r<=this.vDomBottom;r++)if(s[r]){var a=t-s[r].getElement().offsetTop;if(!(!1===i||Math.abs(a)this.vDomWindowBuffer&&(this.vDomWindowBuffer=2*g),"group"!==f.type&&(d=!1),i.vDomBottom++,c++}e?(i.vDomTopPad=t?i.vDomRowHeight*this.vDomTop+o:i.scrollTop-l,i.vDomBottomPad=i.vDomBottom==i.displayRowsCount-1?0:Math.max(i.vDomScrollHeight-i.vDomTopPad-a-l,0)):(this.vDomTopPad=0,i.vDomRowHeight=Math.floor((a+l)/c),i.vDomBottomPad=i.vDomRowHeight*(i.displayRowsCount-i.vDomBottom-1),i.vDomScrollHeight=l+a+i.vDomBottomPad-i.height),n.style.paddingTop=i.vDomTopPad+"px",n.style.paddingBottom=i.vDomBottomPad+"px",t&&(this.scrollTop=i.vDomTopPad+l+o-(this.element.scrollWidth>this.element.clientWidth?this.element.offsetHeight-this.element.clientHeight:0)),this.scrollTop=Math.min(this.scrollTop,this.element.scrollHeight-this.height),this.element.scrollWidth>this.element.offsetWidth&&t&&(this.scrollTop+=this.element.offsetHeight-this.element.clientHeight),this.vDomScrollPosTop=this.scrollTop,this.vDomScrollPosBottom=this.scrollTop,s.scrollTop=this.scrollTop,n.style.minWidth=d?i.table.columnManager.getWidth()+"px":"",i.table.options.groupBy&&"fitDataFill"!=i.table.modules.layout.getMode()&&i.displayRowsCount==i.table.modules.groupRows.countGroups()&&(i.tableElement.style.minWidth=i.table.columnManager.getWidth())}else this.renderEmptyScroll();this.fixedHeight||this.adjustTableSize()},n.prototype.scrollVertical=function(e){var t=this.scrollTop-this.vDomScrollPosTop,o=this.scrollTop-this.vDomScrollPosBottom,i=2*this.vDomWindowBuffer;if(-t>i||o>i){var n=this.scrollLeft;this._virtualRenderFill(Math.floor(this.element.scrollTop/this.element.scrollHeight*this.displayRowsCount)),this.scrollHorizontal(n)}else e?(t<0&&this._addTopRow(-t),o<0&&this.vDomScrollHeight-this.scrollTop>this.vDomWindowBuffer&&this._removeBottomRow(-o)):(t>=0&&this.scrollTop>this.vDomWindowBuffer&&this._removeTopRow(t),o>=0&&this._addBottomRow(o))},n.prototype._addTopRow=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0,o=this.tableElement,i=this.getDisplayRows();if(this.vDomTop){var n=this.vDomTop-1,s=i[n],r=s.getHeight()||this.vDomRowHeight;e>=r&&(this.styleRow(s,n),o.insertBefore(s.getElement(),o.firstChild),s.initialized&&s.heightInitialized||(this.vDomTopNewRows.push(s),s.heightInitialized||s.clearCellHeight()),s.initialize(),this.vDomTopPad-=r,this.vDomTopPad<0&&(this.vDomTopPad=n*this.vDomRowHeight),n||(this.vDomTopPad=0),o.style.paddingTop=this.vDomTopPad+"px",this.vDomScrollPosTop-=r,this.vDomTop--),e=-(this.scrollTop-this.vDomScrollPosTop),s.getHeight()>this.vDomWindowBuffer&&(this.vDomWindowBuffer=2*s.getHeight()),t=(i[this.vDomTop-1].getHeight()||this.vDomRowHeight)?this._addTopRow(e,t+1):this._quickNormalizeRowHeight(this.vDomTopNewRows)}},n.prototype._removeTopRow=function(e){var t=this.tableElement,o=this.getDisplayRows()[this.vDomTop],i=o.getHeight()||this.vDomRowHeight;if(e>=i){var n=o.getElement();n.parentNode.removeChild(n),this.vDomTopPad+=i,t.style.paddingTop=this.vDomTopPad+"px",this.vDomScrollPosTop+=this.vDomTop?i:i+this.vDomWindowBuffer,this.vDomTop++,e=this.scrollTop-this.vDomScrollPosTop,this._removeTopRow(e)}},n.prototype._addBottomRow=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0,o=this.tableElement,i=this.getDisplayRows();if(this.vDomBottom=r&&(this.styleRow(s,n),o.appendChild(s.getElement()),s.initialized&&s.heightInitialized||(this.vDomBottomNewRows.push(s),s.heightInitialized||s.clearCellHeight()),s.initialize(),this.vDomBottomPad-=r,(this.vDomBottomPad<0||n==this.displayRowsCount-1)&&(this.vDomBottomPad=0),o.style.paddingBottom=this.vDomBottomPad+"px",this.vDomScrollPosBottom+=r,this.vDomBottom++),e=this.scrollTop-this.vDomScrollPosBottom,s.getHeight()>this.vDomWindowBuffer&&(this.vDomWindowBuffer=2*s.getHeight()),t=(i[this.vDomBottom+1].getHeight()||this.vDomRowHeight)?this._addBottomRow(e,t+1):this._quickNormalizeRowHeight(this.vDomBottomNewRows)}},n.prototype._removeBottomRow=function(e){var t=this.tableElement,o=this.getDisplayRows()[this.vDomBottom],i=o.getHeight()||this.vDomRowHeight;if(e>=i){var n=o.getElement();n.parentNode&&n.parentNode.removeChild(n),this.vDomBottomPad+=i,this.vDomBottomPad<0&&(this.vDomBottomPad=0),t.style.paddingBottom=this.vDomBottomPad+"px",this.vDomScrollPosBottom-=i,this.vDomBottom--,e=-(this.scrollTop-this.vDomScrollPosBottom),this._removeBottomRow(e)}},n.prototype._quickNormalizeRowHeight=function(e){e.forEach(function(e){e.calcHeight()}),e.forEach(function(e){e.setCellHeight()}),e.length=0},n.prototype.normalizeHeight=function(){this.activeRows.forEach(function(e){e.normalizeHeight()})},n.prototype.adjustTableSize=function(){var e,t=this.element.clientHeight;if("virtual"===this.renderMode){var o=this.columnManager.getElement().offsetHeight+(this.table.footerManager&&!this.table.footerManager.external?this.table.footerManager.getElement().offsetHeight:0);this.fixedHeight?(this.element.style.minHeight="calc(100% - "+o+"px)",this.element.style.height="calc(100% - "+o+"px)",this.element.style.maxHeight="calc(100% - "+o+"px)"):(this.element.style.height="",this.element.style.height=this.table.element.clientHeight-o+"px",this.element.scrollTop=this.scrollTop),this.height=this.element.clientHeight,this.vDomWindowBuffer=this.table.options.virtualDomBuffer||this.height,this.fixedHeight||t==this.element.clientHeight||((e=this.table.modExists("resizeTable"))&&!this.table.modules.resizeTable.autoResize||!e)&&this.redraw()}},n.prototype.reinitialize=function(){this.rows.forEach(function(e){e.reinitialize()})},n.prototype.blockRedraw=function(){this.redrawBlock=!0,this.redrawBlockRestoreConfig=!1},n.prototype.restoreRedraw=function(){this.redrawBlock=!1,this.redrawBlockRestoreConfig?(this.refreshActiveData(this.redrawBlockRestoreConfig.stage,this.redrawBlockRestoreConfig.skipStage,this.redrawBlockRestoreConfig.renderInPosition),this.redrawBlockRestoreConfig=!1):this.redrawBlockRederInPosition&&this.reRenderInPosition(),this.redrawBlockRederInPosition=!1},n.prototype.redraw=function(e){var t=this.scrollLeft;this.adjustTableSize(),this.table.tableWidth=this.table.element.clientWidth,e?this.renderTable():("classic"==this.renderMode?this.table.options.groupBy?this.refreshActiveData("group",!1,!1):this._simpleRender():(this.reRenderInPosition(),this.scrollHorizontal(t)),this.displayRowsCount||this.table.options.placeholder&&this.getElement().appendChild(this.table.options.placeholder))},n.prototype.resetScroll=function(){if(this.element.scrollLeft=0,this.element.scrollTop=0,"ie"===this.table.browser){var e=document.createEvent("Event");e.initEvent("scroll",!1,!0),this.element.dispatchEvent(e)}else this.element.dispatchEvent(new Event("scroll"))};var s=function(e){this._row=e};s.prototype.getData=function(e){return this._row.getData(e)},s.prototype.getElement=function(){return this._row.getElement()},s.prototype.getCells=function(){var e=[];return this._row.getCells().forEach(function(t){e.push(t.getComponent())}),e},s.prototype.getCell=function(e){var t=this._row.getCell(e);return!!t&&t.getComponent()},s.prototype.getIndex=function(){return this._row.getData("data")[this._row.table.options.index]},s.prototype.getPosition=function(e){return this._row.table.rowManager.getRowPosition(this._row,e)},s.prototype.delete=function(){return this._row.delete()},s.prototype.scrollTo=function(){return this._row.table.rowManager.scrollToRow(this._row)},s.prototype.pageTo=function(){if(this._row.table.modExists("page",!0))return this._row.table.modules.page.setPageToRow(this._row)},s.prototype.move=function(e,t){this._row.moveToRow(e,t)},s.prototype.update=function(e){return this._row.updateData(e)},s.prototype.normalizeHeight=function(){this._row.normalizeHeight(!0)},s.prototype.select=function(){this._row.table.modules.selectRow.selectRows(this._row)},s.prototype.deselect=function(){this._row.table.modules.selectRow.deselectRows(this._row)},s.prototype.toggleSelect=function(){this._row.table.modules.selectRow.toggleRow(this._row)},s.prototype.isSelected=function(){return this._row.table.modules.selectRow.isRowSelected(this._row)},s.prototype._getSelf=function(){return this._row},s.prototype.freeze=function(){this._row.table.modExists("frozenRows",!0)&&this._row.table.modules.frozenRows.freezeRow(this._row)},s.prototype.unfreeze=function(){this._row.table.modExists("frozenRows",!0)&&this._row.table.modules.frozenRows.unfreezeRow(this._row)},s.prototype.treeCollapse=function(){this._row.table.modExists("dataTree",!0)&&this._row.table.modules.dataTree.collapseRow(this._row)},s.prototype.treeExpand=function(){this._row.table.modExists("dataTree",!0)&&this._row.table.modules.dataTree.expandRow(this._row)},s.prototype.treeToggle=function(){this._row.table.modExists("dataTree",!0)&&this._row.table.modules.dataTree.toggleRow(this._row)},s.prototype.getTreeParent=function(){return!!this._row.table.modExists("dataTree",!0)&&this._row.table.modules.dataTree.getTreeParent(this._row)},s.prototype.getTreeChildren=function(){return!!this._row.table.modExists("dataTree",!0)&&this._row.table.modules.dataTree.getTreeChildren(this._row)},s.prototype.reformat=function(){ -return this._row.reinitialize()},s.prototype.getGroup=function(){return this._row.getGroup().getComponent()},s.prototype.getTable=function(){return this._row.table},s.prototype.getNextRow=function(){var e=this._row.nextRow();return e?e.getComponent():e},s.prototype.getPrevRow=function(){var e=this._row.prevRow();return e?e.getComponent():e};var r=function(e,t){var o=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"row";this.table=t.table,this.parent=t,this.data={},this.type=o,this.element=this.createElement(),this.modules={},this.cells=[],this.height=0,this.heightStyled="",this.manualHeight=!1,this.outerHeight=0,this.initialized=!1,this.heightInitialized=!1,this.setData(e),this.generateElement()};r.prototype.createElement=function(){var e=document.createElement("div");return e.classList.add("tabulator-row"),e.setAttribute("role","row"),e},r.prototype.getElement=function(){return this.element},r.prototype.detachElement=function(){this.element&&this.element.parentNode&&this.element.parentNode.removeChild(this.element)},r.prototype.generateElement=function(){var e,t,o,i=this;!1!==i.table.options.selectable&&i.table.modExists("selectRow")&&i.table.modules.selectRow.initializeRow(this),!1!==i.table.options.movableRows&&i.table.modExists("moveRow")&&i.table.modules.moveRow.initializeRow(this),!1!==i.table.options.dataTree&&i.table.modExists("dataTree")&&i.table.modules.dataTree.initializeRow(this),"collapse"===i.table.options.responsiveLayout&&i.table.modExists("responsiveLayout")&&i.table.modules.responsiveLayout.initializeRow(this),i.table.options.rowContextMenu&&this.table.modExists("menu")&&i.table.modules.menu.initializeRow(this),i.table.options.rowClick&&i.element.addEventListener("click",function(e){i.table.options.rowClick(e,i.getComponent())}),i.table.options.rowDblClick&&i.element.addEventListener("dblclick",function(e){i.table.options.rowDblClick(e,i.getComponent())}),i.table.options.rowContext&&i.element.addEventListener("contextmenu",function(e){i.table.options.rowContext(e,i.getComponent())}),i.table.options.rowMouseEnter&&i.element.addEventListener("mouseenter",function(e){i.table.options.rowMouseEnter(e,i.getComponent())}),i.table.options.rowMouseLeave&&i.element.addEventListener("mouseleave",function(e){i.table.options.rowMouseLeave(e,i.getComponent())}),i.table.options.rowMouseOver&&i.element.addEventListener("mouseover",function(e){i.table.options.rowMouseOver(e,i.getComponent())}),i.table.options.rowMouseOut&&i.element.addEventListener("mouseout",function(e){i.table.options.rowMouseOut(e,i.getComponent())}),i.table.options.rowMouseMove&&i.element.addEventListener("mousemove",function(e){i.table.options.rowMouseMove(e,i.getComponent())}),i.table.options.rowTap&&(o=!1,i.element.addEventListener("touchstart",function(e){o=!0},{passive:!0}),i.element.addEventListener("touchend",function(e){o&&i.table.options.rowTap(e,i.getComponent()),o=!1})),i.table.options.rowDblTap&&(e=null,i.element.addEventListener("touchend",function(t){e?(clearTimeout(e),e=null,i.table.options.rowDblTap(t,i.getComponent())):e=setTimeout(function(){clearTimeout(e),e=null},300)})),i.table.options.rowTapHold&&(t=null,i.element.addEventListener("touchstart",function(e){clearTimeout(t),t=setTimeout(function(){clearTimeout(t),t=null,o=!1,i.table.options.rowTapHold(e,i.getComponent())},1e3)},{passive:!0}),i.element.addEventListener("touchend",function(e){clearTimeout(t),t=null}))},r.prototype.generateCells=function(){this.cells=this.table.columnManager.generateCells(this)},r.prototype.initialize=function(e){var t=this;if(!t.initialized||e){for(t.deleteCells();t.element.firstChild;)t.element.removeChild(t.element.firstChild);this.table.modExists("frozenColumns")&&this.table.modules.frozenColumns.layoutRow(this),this.generateCells(),t.cells.forEach(function(e){t.element.appendChild(e.getElement()),e.cellRendered()}),e&&t.normalizeHeight(),t.table.options.dataTree&&t.table.modExists("dataTree")&&t.table.modules.dataTree.layoutRow(this),"collapse"===t.table.options.responsiveLayout&&t.table.modExists("responsiveLayout")&&t.table.modules.responsiveLayout.layoutRow(this),t.table.options.rowFormatter&&t.table.options.rowFormatter(t.getComponent()),t.table.options.resizableRows&&t.table.modExists("resizeRows")&&t.table.modules.resizeRows.initializeRow(t),t.initialized=!0}},r.prototype.reinitializeHeight=function(){this.heightInitialized=!1,null!==this.element.offsetParent&&this.normalizeHeight(!0)},r.prototype.reinitialize=function(){this.initialized=!1,this.heightInitialized=!1,this.manualHeight||(this.height=0,this.heightStyled=""),null!==this.element.offsetParent&&this.initialize(!0)},r.prototype.calcHeight=function(e){var t=0,o=this.table.options.resizableRows?this.element.clientHeight:0;this.cells.forEach(function(e){var o=e.getHeight();o>t&&(t=o)}),this.height=e?Math.max(t,o):this.manualHeight?this.height:Math.max(t,o),this.heightStyled=this.height?this.height+"px":"",this.outerHeight=this.element.offsetHeight},r.prototype.setCellHeight=function(){this.cells.forEach(function(e){e.setHeight()}),this.heightInitialized=!0},r.prototype.clearCellHeight=function(){this.cells.forEach(function(e){e.clearHeight()})},r.prototype.normalizeHeight=function(e){e&&this.clearCellHeight(),this.calcHeight(e),this.setCellHeight()},r.prototype.setHeight=function(e,t){(this.height!=e||t)&&(this.manualHeight=!0,this.height=e,this.heightStyled=e?e+"px":"",this.setCellHeight(),this.outerHeight=this.element.offsetHeight)},r.prototype.getHeight=function(){return this.outerHeight},r.prototype.getWidth=function(){return this.element.offsetWidth},r.prototype.deleteCell=function(e){var t=this.cells.indexOf(e);t>-1&&this.cells.splice(t,1)},r.prototype.setData=function(e){this.table.modExists("mutator")&&(e=this.table.modules.mutator.transformRow(e,"data")),this.data=e,this.table.options.reactiveData&&this.table.modExists("reactiveData",!0)&&this.table.modules.reactiveData.watchRow(this)},r.prototype.updateData=function(e){var t,o=this,i=u.prototype.helpers.elVisible(this.element),n={};return new Promise(function(s,r){"string"==typeof e&&(e=JSON.parse(e)),o.table.options.reactiveData&&o.table.modExists("reactiveData",!0)&&o.table.modules.reactiveData.block(),o.table.modExists("mutator")?(n=Object.assign(n,o.data),n=Object.assign(n,e),t=o.table.modules.mutator.transformRow(n,"data",e)):t=e;for(var a in t)o.data[a]=t[a];o.table.options.reactiveData&&o.table.modExists("reactiveData",!0)&&o.table.modules.reactiveData.unblock();for(var a in e){o.table.columnManager.getColumnsByFieldRoot(a).forEach(function(e){var n=o.getCell(e.getField());if(n){var s=e.getFieldValue(t);n.getValue()!=s&&(n.setValueProcessData(s),i&&n.cellRendered())}})}i?(o.normalizeHeight(),o.table.options.rowFormatter&&o.table.options.rowFormatter(o.getComponent())):(o.initialized=!1,o.height=0,o.heightStyled=""),!1!==o.table.options.dataTree&&o.table.modExists("dataTree")&&o.table.modules.dataTree.redrawNeeded(e)&&(o.table.modules.dataTree.initializeRow(o),o.table.modules.dataTree.layoutRow(o),o.table.rowManager.refreshActiveData("tree",!1,!0)),o.table.options.rowUpdated.call(o.table,o.getComponent()),s()})},r.prototype.getData=function(e){var t=this;return e?t.table.modExists("accessor")?t.table.modules.accessor.transformRow(t.data,e):void 0:this.data},r.prototype.getCell=function(e){return e=this.table.columnManager.findColumn(e),this.cells.find(function(t){return t.column===e})},r.prototype.getCellIndex=function(e){return this.cells.findIndex(function(t){return t===e})},r.prototype.findNextEditableCell=function(e){var t=!1;if(e0)for(var o=e-1;o>=0;o--){var i=this.cells[o],n=!0;if(i.column.modules.edit&&u.prototype.helpers.elVisible(i.getElement())&&("function"==typeof i.column.modules.edit.check&&(n=i.column.modules.edit.check(i.getComponent())),n)){t=i;break}}return t},r.prototype.getCells=function(){return this.cells},r.prototype.nextRow=function(){return this.table.rowManager.nextDisplayRow(this,!0)||!1},r.prototype.prevRow=function(){return this.table.rowManager.prevDisplayRow(this,!0)||!1},r.prototype.moveToRow=function(e,t){var o=this.table.rowManager.findRow(e);o?(this.table.rowManager.moveRowActual(this,o,!t),this.table.rowManager.refreshActiveData("display",!1,!0)):console.warn("Move Error - No matching row found:",e)},r.prototype.delete=function(){var e=this;return new Promise(function(t,o){var i,n;e.table.options.history&&e.table.modExists("history")&&(e.table.options.groupBy&&e.table.modExists("groupRows")?(n=e.getGroup().rows,(i=n.indexOf(e))&&(i=n[i-1])):(i=e.table.rowManager.getRowIndex(e))&&(i=e.table.rowManager.rows[i-1]),e.table.modules.history.action("rowDelete",e,{data:e.getData(),pos:!i,index:i})),e.deleteActual(),t()})},r.prototype.deleteActual=function(e){this.table.rowManager.getRowIndex(this);this.table.modExists("selectRow")&&this.table.modules.selectRow._deselectRow(this,!0),this.table.options.reactiveData&&this.table.modExists("reactiveData",!0),this.modules.group&&this.modules.group.removeRow(this),this.table.rowManager.deleteRow(this,e),this.deleteCells(),this.initialized=!1,this.heightInitialized=!1,this.table.modExists("columnCalcs")&&(this.table.options.groupBy&&this.table.modExists("groupRows")?this.table.modules.columnCalcs.recalcRowGroup(this):this.table.modules.columnCalcs.recalc(this.table.rowManager.activeRows))},r.prototype.deleteCells=function(){for(var e=this.cells.length,t=0;t-1?(this.browser="ie",this.browserSlow=!0):e.indexOf("Edge")>-1?(this.browser="edge",this.browserSlow=!0):e.indexOf("Firefox")>-1?(this.browser="firefox",this.browserSlow=!1):(this.browser="other",this.browserSlow=!1),this.browserMobile=/(android|bb\d+|meego).+mobile|avantgo|bada\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\.(browser|link)|vodafone|wap|windows ce|xda|xiino|android|ipad|playbook|silk/i.test(e)||/1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s\-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|\-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw\-(n|u)|c55\/|capi|ccwa|cdm\-|cell|chtm|cldc|cmd\-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc\-s|devi|dica|dmob|do(c|p)o|ds(12|\-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(\-|_)|g1 u|g560|gene|gf\-5|g\-mo|go(\.w|od)|gr(ad|un)|haie|hcit|hd\-(m|p|t)|hei\-|hi(pt|ta)|hp( i|ip)|hs\-c|ht(c(\-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i\-(20|go|ma)|i230|iac( |\-|\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\/)|klon|kpt |kwc\-|kyo(c|k)|le(no|xi)|lg( g|\/(k|l|u)|50|54|\-[a-w])|libw|lynx|m1\-w|m3ga|m50\/|ma(te|ui|xo)|mc(01|21|ca)|m\-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(\-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)\-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|\-([1-8]|c))|phil|pire|pl(ay|uc)|pn\-2|po(ck|rt|se)|prox|psio|pt\-g|qa\-a|qc(07|12|21|32|60|\-[2-7]|i\-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h\-|oo|p\-)|sdk\/|se(c(\-|0|1)|47|mc|nd|ri)|sgh\-|shar|sie(\-|m)|sk\-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h\-|v\-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl\-|tdg\-|tel(i|m)|tim\-|t\-mo|to(pl|sh)|ts(70|m\-|m3|m5)|tx\-9|up(\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|\-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(\-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas\-|your|zeto|zte\-/i.test(e.substr(0,4))},u.prototype.blockRedraw=function(){return this.rowManager.blockRedraw()},u.prototype.restoreRedraw=function(){return this.rowManager.restoreRedraw()},u.prototype.setDataFromLocalFile=function(e){var t=this;return new Promise(function(o,i){var n=document.createElement("input");n.type="file",n.accept=e||".json,application/json",n.addEventListener("change",function(e){var s,r=n.files[0],a=new FileReader;a.readAsText(r),a.onload=function(e){try{s=JSON.parse(a.result)}catch(e){return console.warn("File Load Error - File contents is invalid JSON",e),void i(e)}t._setData(s).then(function(e){o(e)}).catch(function(e){o(e)})},a.onerror=function(e){console.warn("File Load Error - Unable to read file"),i()}}),n.click()})},u.prototype.setData=function(e,t,o){return this.modExists("ajax")&&this.modules.ajax.blockActiveRequest(),this._setData(e,t,o,!1,!0)},u.prototype._setData=function(e,t,o,i,n){var s=this;return"string"!=typeof e?e?s.rowManager.setData(e,i,n):s.modExists("ajax")&&(s.modules.ajax.getUrl||s.options.ajaxURLGenerator)?"remote"==s.options.pagination&&s.modExists("page",!0)?(s.modules.page.reset(!0,!0),s.modules.page.setPage(1)):s.modules.ajax.loadData(i,n):s.rowManager.setData([],i,n):0==e.indexOf("{")||0==e.indexOf("[")?s.rowManager.setData(JSON.parse(e),i,n):s.modExists("ajax",!0)?(t&&s.modules.ajax.setParams(t),o&&s.modules.ajax.setConfig(o),s.modules.ajax.setUrl(e),"remote"==s.options.pagination&&s.modExists("page",!0)?(s.modules.page.reset(!0,!0),s.modules.page.setPage(1)):s.modules.ajax.loadData(i,n)):void 0},u.prototype.clearData=function(){this.modExists("ajax")&&this.modules.ajax.blockActiveRequest(),this.rowManager.clearData()},u.prototype.getData=function(e){return!0===e&&(console.warn("passing a boolean to the getData function is deprecated, you should now pass the string 'active'"),e="active"),this.rowManager.getData(e)},u.prototype.getDataCount=function(e){return!0===e&&(console.warn("passing a boolean to the getDataCount function is deprecated, you should now pass the string 'active'"),e="active"),this.rowManager.getDataCount(e)},u.prototype.searchRows=function(e,t,o){if(this.modExists("filter",!0))return this.modules.filter.search("rows",e,t,o)},u.prototype.searchData=function(e,t,o){if(this.modExists("filter",!0))return this.modules.filter.search("data",e,t,o)},u.prototype.getHtml=function(e,t,o){if(this.modExists("export",!0))return this.modules.export.getHtml(e,t,o)},u.prototype.print=function(e,t,o){if(this.modExists("print",!0))return this.modules.print.printFullscreen(e,t,o)},u.prototype.getAjaxUrl=function(){if(this.modExists("ajax",!0))return this.modules.ajax.getUrl()},u.prototype.replaceData=function(e,t,o){return this.modExists("ajax")&&this.modules.ajax.blockActiveRequest(),this._setData(e,t,o,!0)},u.prototype.updateData=function(e){var t=this,o=this,i=0;return new Promise(function(n,s){t.modExists("ajax")&&t.modules.ajax.blockActiveRequest(),"string"==typeof e&&(e=JSON.parse(e)),e?e.forEach(function(e){var t=o.rowManager.findRow(e[o.options.index]);t&&(i++,t.updateData(e).then(function(){--i||n()}))}):(console.warn("Update Error - No data provided"),s("Update Error - No data provided"))})},u.prototype.addData=function(e,t,o){var i=this;return new Promise(function(n,s){i.modExists("ajax")&&i.modules.ajax.blockActiveRequest(),"string"==typeof e&&(e=JSON.parse(e)),e?i.rowManager.addRows(e,t,o).then(function(e){var t=[];e.forEach(function(e){t.push(e.getComponent())}),n(t)}):(console.warn("Update Error - No data provided"),s("Update Error - No data provided"))})},u.prototype.updateOrAddData=function(e){var t=this,o=this,i=[],n=0;return new Promise(function(s,r){t.modExists("ajax")&&t.modules.ajax.blockActiveRequest(),"string"==typeof e&&(e=JSON.parse(e)),e?e.forEach(function(e){var t=o.rowManager.findRow(e[o.options.index]);n++,t?t.updateData(e).then(function(){n--,i.push(t.getComponent()),n||s(i)}):o.rowManager.addRows(e).then(function(e){n--,i.push(e[0].getComponent()),n||s(i)})}):(console.warn("Update Error - No data provided"),r("Update Error - No data provided"))})},u.prototype.getRow=function(e){var t=this.rowManager.findRow(e);return t?t.getComponent():(console.warn("Find Error - No matching row found:",e),!1)},u.prototype.getRowFromPosition=function(e,t){var o=this.rowManager.getRowFromPosition(e,t);return o?o.getComponent():(console.warn("Find Error - No matching row found:",e),!1)},u.prototype.deleteRow=function(e){var t=this;return new Promise(function(o,i){function n(){++s==e.length&&r&&(a.rowManager.reRenderInPosition(),o())}var s=0,r=0,a=t;Array.isArray(e)||(e=[e]),e.forEach(function(e){var o=t.rowManager.findRow(e,!0);o?o.delete().then(function(){r++,n()}).catch(function(e){n(),i(e)}):(console.warn("Delete Error - No matching row found:",e),i("Delete Error - No matching row found"),n())})})},u.prototype.addRow=function(e,t,o){var i=this;return new Promise(function(n,s){"string"==typeof e&&(e=JSON.parse(e)),i.rowManager.addRows(e,t,o).then(function(e){i.modExists("columnCalcs")&&i.modules.columnCalcs.recalc(i.rowManager.activeRows),n(e[0].getComponent())})})},u.prototype.updateOrAddRow=function(e,t){var o=this;return new Promise(function(i,n){var s=o.rowManager.findRow(e);"string"==typeof t&&(t=JSON.parse(t)),s?s.updateData(t).then(function(){o.modExists("columnCalcs")&&o.modules.columnCalcs.recalc(o.rowManager.activeRows),i(s.getComponent())}).catch(function(e){n(e)}):s=o.rowManager.addRows(t).then(function(e){o.modExists("columnCalcs")&&o.modules.columnCalcs.recalc(o.rowManager.activeRows),i(e[0].getComponent())}).catch(function(e){n(e)})})},u.prototype.updateRow=function(e,t){var o=this;return new Promise(function(i,n){var s=o.rowManager.findRow(e);"string"==typeof t&&(t=JSON.parse(t)),s?s.updateData(t).then(function(){i(s.getComponent())}).catch(function(e){n(e)}):(console.warn("Update Error - No matching row found:",e),n("Update Error - No matching row found"))})},u.prototype.scrollToRow=function(e,t,o){var i=this;return new Promise(function(n,s){var r=i.rowManager.findRow(e);r?i.rowManager.scrollToRow(r,t,o).then(function(){n()}).catch(function(e){s(e)}):(console.warn("Scroll Error - No matching row found:",e),s("Scroll Error - No matching row found"))})},u.prototype.moveRow=function(e,t,o){var i=this.rowManager.findRow(e);i?i.moveToRow(t,o):console.warn("Move Error - No matching row found:",e)},u.prototype.getRows=function(e){return!0===e&&(console.warn("passing a boolean to the getRows function is deprecated, you should now pass the string 'active'"),e="active"),this.rowManager.getComponents(e)},u.prototype.getRowPosition=function(e,t){var o=this.rowManager.findRow(e);return o?this.rowManager.getRowPosition(o,t):(console.warn("Position Error - No matching row found:",e),!1)},u.prototype.copyToClipboard=function(e){this.modExists("clipboard",!0)&&this.modules.clipboard.copy(e)},u.prototype.setColumns=function(e){this.columnManager.setColumns(e)},u.prototype.getColumns=function(e){return this.columnManager.getComponents(e)},u.prototype.getColumn=function(e){var t=this.columnManager.findColumn(e);return t?t.getComponent():(console.warn("Find Error - No matching column found:",e),!1)},u.prototype.getColumnDefinitions=function(){return this.columnManager.getDefinitionTree()},u.prototype.getColumnLayout=function(){if(this.modExists("persistence",!0))return this.modules.persistence.parseColumns(this.columnManager.getColumns())},u.prototype.setColumnLayout=function(e){return!!this.modExists("persistence",!0)&&(this.columnManager.setColumns(this.modules.persistence.mergeDefinition(this.options.columns,e)),!0)},u.prototype.showColumn=function(e){var t=this.columnManager.findColumn(e);if(!t)return console.warn("Column Show Error - No matching column found:",e),!1;t.show(),this.options.responsiveLayout&&this.modExists("responsiveLayout",!0)&&this.modules.responsiveLayout.update()},u.prototype.hideColumn=function(e){var t=this.columnManager.findColumn(e);if(!t)return console.warn("Column Hide Error - No matching column found:",e),!1;t.hide(),this.options.responsiveLayout&&this.modExists("responsiveLayout",!0)&&this.modules.responsiveLayout.update()},u.prototype.toggleColumn=function(e){var t=this.columnManager.findColumn(e);if(!t)return console.warn("Column Visibility Toggle Error - No matching column found:",e),!1;t.visible?t.hide():t.show()},u.prototype.addColumn=function(e,t,o){var i=this;return new Promise(function(n,s){var r=i.columnManager.findColumn(o);i.columnManager.addColumn(e,t,r).then(function(e){n(e.getComponent())}).catch(function(e){s(e)})})},u.prototype.deleteColumn=function(e){var t=this;return new Promise(function(o,i){var n=t.columnManager.findColumn(e);n?n.delete().then(function(){o()}).catch(function(e){i(e)}):(console.warn("Column Delete Error - No matching column found:",e),i())})},u.prototype.updateColumnDefinition=function(e,t){var o=this;return new Promise(function(i,n){var s=o.columnManager.findColumn(e);s?s.updateDefinition(t).then(function(e){i(e)}).catch(function(e){n(e)}):(console.warn("Column Update Error - No matching column found:",e),n())})},u.prototype.moveColumn=function(e,t,o){var i=this.columnManager.findColumn(e),n=this.columnManager.findColumn(t);i?n?this.columnManager.moveColumn(i,n,o):console.warn("Move Error - No matching column found:",n):console.warn("Move Error - No matching column found:",e)},u.prototype.scrollToColumn=function(e,t,o){var i=this;return new Promise(function(n,s){var r=i.columnManager.findColumn(e);r?i.columnManager.scrollToColumn(r,t,o).then(function(){n()}).catch(function(e){s(e)}):(console.warn("Scroll Error - No matching column found:",e),s("Scroll Error - No matching column found"))})},u.prototype.setLocale=function(e){this.modules.localize.setLocale(e)},u.prototype.getLocale=function(){return this.modules.localize.getLocale()},u.prototype.getLang=function(e){return this.modules.localize.getLang(e)},u.prototype.redraw=function(e){this.columnManager.redraw(e),this.rowManager.redraw(e)},u.prototype.setHeight=function(e){"classic"!==this.rowManager.renderMode?(this.options.height=isNaN(e)?e:e+"px",this.element.style.height=this.options.height,this.rowManager.setRenderMode(),this.rowManager.redraw()):console.warn("setHeight function is not available in classic render mode")},u.prototype.setSort=function(e,t){this.modExists("sort",!0)&&(this.modules.sort.setSort(e,t),this.rowManager.sorterRefresh())},u.prototype.getSorters=function(){if(this.modExists("sort",!0))return this.modules.sort.getSort()},u.prototype.clearSort=function(){this.modExists("sort",!0)&&(this.modules.sort.clear(),this.rowManager.sorterRefresh())},u.prototype.setFilter=function(e,t,o){this.modExists("filter",!0)&&(this.modules.filter.setFilter(e,t,o),this.rowManager.filterRefresh())},u.prototype.addFilter=function(e,t,o){this.modExists("filter",!0)&&(this.modules.filter.addFilter(e,t,o),this.rowManager.filterRefresh())},u.prototype.getFilters=function(e){if(this.modExists("filter",!0))return this.modules.filter.getFilters(e)},u.prototype.setHeaderFilterFocus=function(e){if(this.modExists("filter",!0)){var t=this.columnManager.findColumn(e);if(!t)return console.warn("Column Filter Focus Error - No matching column found:",e),!1;this.modules.filter.setHeaderFilterFocus(t)}},u.prototype.getHeaderFilterValue=function(e){if(this.modExists("filter",!0)){var t=this.columnManager.findColumn(e);if(t)return this.modules.filter.getHeaderFilterValue(t);console.warn("Column Filter Error - No matching column found:",e)}},u.prototype.setHeaderFilterValue=function(e,t){if(this.modExists("filter",!0)){var o=this.columnManager.findColumn(e);if(!o)return console.warn("Column Filter Error - No matching column found:",e),!1;this.modules.filter.setHeaderFilterValue(o,t)}},u.prototype.getHeaderFilters=function(){if(this.modExists("filter",!0))return this.modules.filter.getHeaderFilters()},u.prototype.removeFilter=function(e,t,o){this.modExists("filter",!0)&&(this.modules.filter.removeFilter(e,t,o),this.rowManager.filterRefresh())},u.prototype.clearFilter=function(e){this.modExists("filter",!0)&&(this.modules.filter.clearFilter(e),this.rowManager.filterRefresh())},u.prototype.clearHeaderFilter=function(){this.modExists("filter",!0)&&(this.modules.filter.clearHeaderFilter(),this.rowManager.filterRefresh())},u.prototype.selectRow=function(e){this.modExists("selectRow",!0)&&(!0===e&&(console.warn("passing a boolean to the selectRowselectRow function is deprecated, you should now pass the string 'active'"),e="active"),this.modules.selectRow.selectRows(e))},u.prototype.deselectRow=function(e){this.modExists("selectRow",!0)&&this.modules.selectRow.deselectRows(e)},u.prototype.toggleSelectRow=function(e){this.modExists("selectRow",!0)&&this.modules.selectRow.toggleRow(e)},u.prototype.getSelectedRows=function(){if(this.modExists("selectRow",!0))return this.modules.selectRow.getSelectedRows()},u.prototype.getSelectedData=function(){if(this.modExists("selectRow",!0))return this.modules.selectRow.getSelectedData()},u.prototype.setMaxPage=function(e){if(!this.options.pagination||!this.modExists("page"))return!1;this.modules.page.setMaxPage(e)},u.prototype.setPage=function(e){return this.options.pagination&&this.modExists("page")?this.modules.page.setPage(e):new Promise(function(e,t){t()})},u.prototype.setPageToRow=function(e){var t=this;return new Promise(function(o,i){t.options.pagination&&t.modExists("page")?(e=t.rowManager.findRow(e),e?t.modules.page.setPageToRow(e).then(function(){o()}).catch(function(){i()}):i()):i()})},u.prototype.setPageSize=function(e){if(!this.options.pagination||!this.modExists("page"))return!1;this.modules.page.setPageSize(e),this.modules.page.setPage(1).then(function(){}).catch(function(){})},u.prototype.getPageSize=function(){if(this.options.pagination&&this.modExists("page",!0))return this.modules.page.getPageSize()},u.prototype.previousPage=function(){if(!this.options.pagination||!this.modExists("page"))return!1;this.modules.page.previousPage()},u.prototype.nextPage=function(){if(!this.options.pagination||!this.modExists("page"))return!1;this.modules.page.nextPage()},u.prototype.getPage=function(){return!(!this.options.pagination||!this.modExists("page"))&&this.modules.page.getPage()},u.prototype.getPageMax=function(){return!(!this.options.pagination||!this.modExists("page"))&&this.modules.page.getPageMax()},u.prototype.setGroupBy=function(e){if(!this.modExists("groupRows",!0))return!1;this.options.groupBy=e,this.modules.groupRows.initialize(),this.rowManager.refreshActiveData("display"),this.options.persistence&&this.modExists("persistence",!0)&&this.modules.persistence.config.group&&this.modules.persistence.save("group")},u.prototype.setGroupStartOpen=function(e){if(!this.modExists("groupRows",!0))return!1;this.options.groupStartOpen=e,this.modules.groupRows.initialize(),this.options.groupBy?(this.rowManager.refreshActiveData("group"),this.options.persistence&&this.modExists("persistence",!0)&&this.modules.persistence.config.group&&this.modules.persistence.save("group")):console.warn("Grouping Update - cant refresh view, no groups have been set")},u.prototype.setGroupHeader=function(e){if(!this.modExists("groupRows",!0))return!1;this.options.groupHeader=e,this.modules.groupRows.initialize(),this.options.groupBy?(this.rowManager.refreshActiveData("group"),this.options.persistence&&this.modExists("persistence",!0)&&this.modules.persistence.config.group&&this.modules.persistence.save("group")):console.warn("Grouping Update - cant refresh view, no groups have been set")},u.prototype.getGroups=function(e){return!!this.modExists("groupRows",!0)&&this.modules.groupRows.getGroups(!0)},u.prototype.getGroupedData=function(){if(this.modExists("groupRows",!0))return this.options.groupBy?this.modules.groupRows.getGroupedData():this.getData()},u.prototype.getCalcResults=function(){return!!this.modExists("columnCalcs",!0)&&this.modules.columnCalcs.getResults()},u.prototype.recalc=function(){this.modExists("columnCalcs",!0)&&this.modules.columnCalcs.recalcAll(this.rowManager.activeRows)},u.prototype.navigatePrev=function(){var e=!1;return!(!this.modExists("edit",!0)||!(e=this.modules.edit.currentCell))&&e.nav().prev()},u.prototype.navigateNext=function(){var e=!1;return!(!this.modExists("edit",!0)||!(e=this.modules.edit.currentCell))&&e.nav().next()},u.prototype.navigateLeft=function(){var t=!1;return!(!this.modExists("edit",!0)||!(t=this.modules.edit.currentCell))&&(e.preventDefault(),t.nav().left())},u.prototype.navigateRight=function(){var t=!1;return!(!this.modExists("edit",!0)||!(t=this.modules.edit.currentCell))&&(e.preventDefault(),t.nav().right())},u.prototype.navigateUp=function(){var t=!1;return!(!this.modExists("edit",!0)||!(t=this.modules.edit.currentCell))&&(e.preventDefault(),t.nav().up())},u.prototype.navigateDown=function(){var t=!1;return!(!this.modExists("edit",!0)||!(t=this.modules.edit.currentCell))&&(e.preventDefault(),t.nav().down())},u.prototype.undo=function(){return!(!this.options.history||!this.modExists("history",!0))&&this.modules.history.undo()},u.prototype.redo=function(){return!(!this.options.history||!this.modExists("history",!0))&&this.modules.history.redo()},u.prototype.getHistoryUndoSize=function(){return!(!this.options.history||!this.modExists("history",!0))&&this.modules.history.getHistoryUndoSize()},u.prototype.getHistoryRedoSize=function(){return!(!this.options.history||!this.modExists("history",!0))&&this.modules.history.getHistoryRedoSize()},u.prototype.download=function(e,t,o,i){this.modExists("download",!0)&&this.modules.download.download(e,t,o,i)},u.prototype.downloadToTab=function(e,t,o,i){this.modExists("download",!0)&&this.modules.download.download(e,t,o,i,!0)},u.prototype.tableComms=function(e,t,o,i){this.modules.comms.receive(e,t,o,i)},u.prototype.moduleBindings={},u.prototype.extendModule=function(e,t,o){if(u.prototype.moduleBindings[e]){var i=u.prototype.moduleBindings[e].prototype[t];if(i)if("object"==(void 0===o?"undefined":_typeof(o)))for(var n in o)i[n]=o[n];else console.warn("Module Error - Invalid value type, it must be an object");else console.warn("Module Error - property does not exist:",t)}else console.warn("Module Error - module does not exist:",e)},u.prototype.registerModule=function(e,t){u.prototype.moduleBindings[e]=t},u.prototype.bindModules=function(){this.modules={};for(var e in u.prototype.moduleBindings)this.modules[e]=new u.prototype.moduleBindings[e](this)},u.prototype.modExists=function(e,t){return!!this.modules[e]||(t&&console.error("Tabulator Module Not Installed: "+e),!1)},u.prototype.helpers={elVisible:function(e){return!(e.offsetWidth<=0&&e.offsetHeight<=0)},elOffset:function(e){var t=e.getBoundingClientRect();return{top:t.top+window.pageYOffset-document.documentElement.clientTop,left:t.left+window.pageXOffset-document.documentElement.clientLeft}},deepClone:function(e){var t=Array.isArray(e)?[]:{};for(var o in e)null!=e[o]&&"object"===_typeof(e[o])?e[o]instanceof Date?t[o]=new Date(e[o]):t[o]=this.deepClone(e[o]):t[o]=e[o];return t}},u.prototype.comms={tables:[],register:function(e){u.prototype.comms.tables.push(e)},deregister:function(e){var t=u.prototype.comms.tables.indexOf(e);t>-1&&u.prototype.comms.tables.splice(t,1)},lookupTable:function(e,t){var o,i,n=[];if("string"==typeof e){if(o=document.querySelectorAll(e),o.length)for(var s=0;s0?s.setWidth(n):s.reinitializeWidth()):this.table.options.responsiveLayout&&this.table.modExists("responsiveLayout",!0)&&this.table.modules.responsiveLayout.update()},fitColumns:function(e){function t(e){return"string"==typeof e?e.indexOf("%")>-1?n/100*parseInt(e):parseInt(e):e}function o(e,i,n,s){function r(e){return n*(e.column.definition.widthGrow||1)}function a(e){return t(e.width)-n*(e.column.definition.widthShrink||0)}var l=[],c=0,u=0,d=0,h=0,p=0,m=[];return e.forEach(function(e,t){var o=s?a(e):r(e);e.column.minWidth>=o?l.push(e):(m.push(e),p+=s?e.column.definition.widthShrink||1:e.column.definition.widthGrow||1)}),l.length?(l.forEach(function(e){c+=s?e.width-e.column.minWidth:e.column.minWidth,e.width=e.column.minWidth}),u=i-c,d=p?Math.floor(u/p):u,h=u-d*p,h+=o(m,u,d,s)):(h=p?i-Math.floor(i/p)*p:i,m.forEach(function(e){e.width=s?a(e):r(e)})),h}var i=this,n=i.table.element.clientWidth,s=0,r=0,a=0,l=0,c=[],u=[],d=0,h=0,p=0;this.table.options.responsiveLayout&&this.table.modExists("responsiveLayout",!0)&&this.table.modules.responsiveLayout.update(),this.table.rowManager.element.scrollHeight>this.table.rowManager.element.clientHeight&&(n-=this.table.rowManager.element.offsetWidth-this.table.rowManager.element.clientWidth),e.forEach(function(e){var o,i,n;e.visible&&(o=e.definition.width,i=parseInt(e.minWidth),o?(n=t(o),s+=n>i?n:i,e.definition.widthShrink&&(u.push({column:e,width:n>i?n:i}),d+=e.definition.widthShrink)):(c.push({column:e,width:0}),a+=e.definition.widthGrow||1))}),r=n-s,l=Math.floor(r/a);var p=o(c,r,l,!1);c.length&&p>0&&(c[c.length-1].width+=+p),c.forEach(function(e){r-=e.width}),h=Math.abs(p)+r,h>0&&d&&(p=o(u,h,Math.floor(h/d),!0)),u.length&&(u[u.length-1].width-=p),c.forEach(function(e){e.column.setWidth(e.width)}),u.forEach(function(e){e.column.setWidth(e.width)})}},u.prototype.registerModule("layout",d);var h=function(e){this.table=e,this.locale="default",this.lang=!1,this.bindings={}};h.prototype.setHeaderFilterPlaceholder=function(e){this.langs.default.headerFilters.default=e},h.prototype.setHeaderFilterColumnPlaceholder=function(e,t){this.langs.default.headerFilters.columns[e]=t,this.lang&&!this.lang.headerFilters.columns[e]&&(this.lang.headerFilters.columns[e]=t)},h.prototype.installLang=function(e,t){this.langs[e]?this._setLangProp(this.langs[e],t):this.langs[e]=t},h.prototype._setLangProp=function(e,t){for(var o in t)e[o]&&"object"==_typeof(e[o])?this._setLangProp(e[o],t[o]):e[o]=t[o]},h.prototype.setLocale=function(e){function t(e,o){for(var i in e)"object"==_typeof(e[i])?(o[i]||(o[i]={}),t(e[i],o[i])):o[i]=e[i]}var o=this;if(e=e||"default",!0===e&&navigator.language&&(e=navigator.language.toLowerCase()),e&&!o.langs[e]){var i=e.split("-")[0];o.langs[i]?(console.warn("Localization Error - Exact matching locale not found, using closest match: ",e,i),e=i):(console.warn("Localization Error - Matching locale not found, using default: ",e),e="default")}o.locale=e,o.lang=u.prototype.helpers.deepClone(o.langs.default||{}),"default"!=e&&t(o.langs[e],o.lang),o.table.options.localized.call(o.table,o.locale,o.lang),o._executeBindings()},h.prototype.getLocale=function(e){return self.locale},h.prototype.getLang=function(e){return e?this.langs[e]:this.lang},h.prototype.getText=function(e,t){var e=t?e+"|"+t:e,o=e.split("|");return this._getLangElement(o,this.locale)||""},h.prototype._getLangElement=function(e,t){var o=this,i=o.lang;return e.forEach(function(e){var t;i&&(t=i[e],i=void 0!==t&&t)}),i},h.prototype.bind=function(e,t){this.bindings[e]||(this.bindings[e]=[]),this.bindings[e].push(t),t(this.getText(e),this.lang)},h.prototype._executeBindings=function(){var e=this;for(var t in e.bindings)!function(t){e.bindings[t].forEach(function(o){o(e.getText(t),e.lang)})}(t)},h.prototype.langs={default:{groups:{item:"item",items:"items"},columns:{},ajax:{loading:"Loading",error:"Error"},pagination:{page_size:"Page Size",first:"First",first_title:"First Page",last:"Last",last_title:"Last Page",prev:"Prev",prev_title:"Prev Page",next:"Next",next_title:"Next Page"},headerFilters:{default:"filter column...",columns:{}}}},u.prototype.registerModule("localize",h);var p=function(e){this.table=e};p.prototype.getConnections=function(e){var t,o=this,i=[];return t=u.prototype.comms.lookupTable(e),t.forEach(function(e){ -o.table!==e&&i.push(e)}),i},p.prototype.send=function(e,t,o,i){var n=this,s=this.getConnections(e);s.forEach(function(e){e.tableComms(n.table.element,t,o,i)}),!s.length&&e&&console.warn("Table Connection Error - No tables matching selector found",e)},p.prototype.receive=function(e,t,o,i){if(this.table.modExists(t))return this.table.modules[t].commsReceived(e,o,i);console.warn("Inter-table Comms Error - no such module:",t)},u.prototype.registerModule("comms",p);var m=function(e){this.table=e,this.allowedTypes=["","data","download","clipboard","print","htmlOutput"]};m.prototype.initializeColumn=function(e){var t=this,o=!1,i={};this.allowedTypes.forEach(function(n){var s,r="accessor"+(n.charAt(0).toUpperCase()+n.slice(1));e.definition[r]&&(s=t.lookupAccessor(e.definition[r]))&&(o=!0,i[r]={accessor:s,params:e.definition[r+"Params"]||{}})}),o&&(e.modules.accessor=i)},m.prototype.lookupAccessor=function(e){var t=!1;switch(void 0===e?"undefined":_typeof(e)){case"string":this.accessors[e]?t=this.accessors[e]:console.warn("Accessor Error - No such accessor found, ignoring: ",e);break;case"function":t=e}return t},m.prototype.transformRow=function(e,t){var o=this,i="accessor"+(t.charAt(0).toUpperCase()+t.slice(1)),n=u.prototype.helpers.deepClone(e||{});return o.table.columnManager.traverse(function(e){var o,s,r,a;e.modules.accessor&&(s=e.modules.accessor[i]||e.modules.accessor.accessor||!1)&&"undefined"!=(o=e.getFieldValue(n))&&(a=e.getComponent(),r="function"==typeof s.params?s.params(o,n,t,a):s.params,e.setFieldValue(n,s.accessor(o,n,t,r,a)))}),n},m.prototype.accessors={},u.prototype.registerModule("accessor",m);var f=function(e){this.table=e,this.config=!1,this.url="",this.urlGenerator=!1,this.params=!1,this.loaderElement=this.createLoaderElement(),this.msgElement=this.createMsgElement(),this.loadingElement=!1,this.errorElement=!1,this.loaderPromise=!1,this.progressiveLoad=!1,this.loading=!1,this.requestOrder=0};f.prototype.initialize=function(){var e;this.loaderElement.appendChild(this.msgElement),this.table.options.ajaxLoaderLoading&&("string"==typeof this.table.options.ajaxLoaderLoading?(e=document.createElement("template"),e.innerHTML=this.table.options.ajaxLoaderLoading.trim(),this.loadingElement=e.content.firstChild):this.loadingElement=this.table.options.ajaxLoaderLoading),this.loaderPromise=this.table.options.ajaxRequestFunc||this.defaultLoaderPromise,this.urlGenerator=this.table.options.ajaxURLGenerator||this.defaultURLGenerator,this.table.options.ajaxLoaderError&&("string"==typeof this.table.options.ajaxLoaderError?(e=document.createElement("template"),e.innerHTML=this.table.options.ajaxLoaderError.trim(),this.errorElement=e.content.firstChild):this.errorElement=this.table.options.ajaxLoaderError),this.table.options.ajaxParams&&this.setParams(this.table.options.ajaxParams),this.table.options.ajaxConfig&&this.setConfig(this.table.options.ajaxConfig),this.table.options.ajaxURL&&this.setUrl(this.table.options.ajaxURL),this.table.options.ajaxProgressiveLoad&&(this.table.options.pagination?(this.progressiveLoad=!1,console.error("Progressive Load Error - Pagination and progressive load cannot be used at the same time")):this.table.modExists("page")?(this.progressiveLoad=this.table.options.ajaxProgressiveLoad,this.table.modules.page.initializeProgressive(this.progressiveLoad)):console.error("Pagination plugin is required for progressive ajax loading"))},f.prototype.createLoaderElement=function(){var e=document.createElement("div");return e.classList.add("tabulator-loader"),e},f.prototype.createMsgElement=function(){var e=document.createElement("div");return e.classList.add("tabulator-loader-msg"),e.setAttribute("role","alert"),e},f.prototype.setParams=function(e,t){if(t){this.params=this.params||{};for(var o in e)this.params[o]=e[o]}else this.params=e},f.prototype.getParams=function(){return this.params||{}},f.prototype.setConfig=function(e){if(this._loadDefaultConfig(),"string"==typeof e)this.config.method=e;else for(var t in e)this.config[t]=e[t]},f.prototype._loadDefaultConfig=function(e){var t=this;if(!t.config||e){t.config={};for(var o in t.defaultConfig)t.config[o]=t.defaultConfig[o]}},f.prototype.setUrl=function(e){this.url=e},f.prototype.getUrl=function(){return this.url},f.prototype.loadData=function(e,t){return this.progressiveLoad?this._loadDataProgressive():this._loadDataStandard(e,t)},f.prototype.nextPage=function(e){var t;this.loading||(t=this.table.options.ajaxProgressiveLoadScrollMargin||2*this.table.rowManager.getElement().clientHeight,ei||null===i)&&(i=e)}),null!==i?!1!==n?i.toFixed(n):i:""},min:function(e,t,o){var i=null,n=void 0!==o.precision&&o.precision;return e.forEach(function(e){((e=Number(e))
"),o.dataTreeExpandElement?"string"==typeof o.dataTreeExpandElement?(e=document.createElement("div"),e.innerHTML=o.dataTreeExpandElement,this.expandEl=e.firstChild):this.expandEl=o.dataTreeExpandElement:(this.expandEl=document.createElement("div"),this.expandEl.classList.add("tabulator-data-tree-control"),this.expandEl.tabIndex=0,this.expandEl.innerHTML="
"),_typeof(o.dataTreeStartExpanded)){case"boolean":this.startOpen=function(e,t){return o.dataTreeStartExpanded};break;case"function":this.startOpen=o.dataTreeStartExpanded;break;default:this.startOpen=function(e,t){return o.dataTreeStartExpanded[t]}}},v.prototype.initializeRow=function(e){var t=e.getData()[this.field],o=Array.isArray(t),i=o||!o&&"object"===(void 0===t?"undefined":_typeof(t))&&null!==t;!i&&e.modules.dataTree&&e.modules.dataTree.branchEl&&e.modules.dataTree.branchEl.parentNode.removeChild(e.modules.dataTree.branchEl),!i&&e.modules.dataTree&&e.modules.dataTree.controlEl&&e.modules.dataTree.controlEl.parentNode.removeChild(e.modules.dataTree.controlEl),e.modules.dataTree={index:0,open:!!i&&(e.modules.dataTree?e.modules.dataTree.open:this.startOpen(e.getComponent(),0)),controlEl:!(!e.modules.dataTree||!i)&&e.modules.dataTree.controlEl,branchEl:!(!e.modules.dataTree||!i)&&e.modules.dataTree.branchEl,parent:!1,children:i}},v.prototype.layoutRow=function(e){var t=this.elementField?e.getCell(this.elementField):e.getCells()[0],o=t.getElement(),i=e.modules.dataTree;i.branchEl&&(i.branchEl.parentNode.removeChild(i.branchEl),i.branchEl=!1),i.controlEl&&(i.controlEl.parentNode.removeChild(i.controlEl),i.controlEl=!1),this.generateControlElement(e,o),e.element.classList.add("tabulator-tree-level-"+i.index),i.index&&(this.branchEl?(i.branchEl=this.branchEl.cloneNode(!0),o.insertBefore(i.branchEl,o.firstChild),i.branchEl.style.marginLeft=(i.branchEl.offsetWidth+i.branchEl.style.marginRight)*(i.index-1)+i.index*this.indent+"px"):o.style.paddingLeft=parseInt(window.getComputedStyle(o,null).getPropertyValue("padding-left"))+i.index*this.indent+"px")},v.prototype.generateControlElement=function(e,t){var o=this,i=e.modules.dataTree,t=t||e.getCells()[0].getElement(),n=i.controlEl;!1!==i.children&&(i.open?(i.controlEl=this.collapseEl.cloneNode(!0),i.controlEl.addEventListener("click",function(t){t.stopPropagation(),o.collapseRow(e)})):(i.controlEl=this.expandEl.cloneNode(!0),i.controlEl.addEventListener("click",function(t){t.stopPropagation(),o.expandRow(e)})),i.controlEl.addEventListener("mousedown",function(e){e.stopPropagation()}),n&&n.parentNode===t?n.parentNode.replaceChild(i.controlEl,n):t.insertBefore(i.controlEl,t.firstChild))},v.prototype.setDisplayIndex=function(e){this.displayIndex=e},v.prototype.getDisplayIndex=function(){return this.displayIndex},v.prototype.getRows=function(e){var t=this,o=[];return e.forEach(function(e,i){var n,s;o.push(e),e instanceof r&&(n=e.modules.dataTree.children,n.index||!1===n.children||(s=t.getChildren(e),s.forEach(function(e){o.push(e)})))}),o},v.prototype.getChildren=function(e){var t=this,o=e.modules.dataTree,i=[],n=[];return!1!==o.children&&o.open&&(Array.isArray(o.children)||(o.children=this.generateChildren(e)),i=this.table.modExists("filter")?this.table.modules.filter.filter(o.children):o.children,this.table.modExists("sort")&&this.table.modules.sort.sort(i),i.forEach(function(e){n.push(e),t.getChildren(e).forEach(function(e){n.push(e)})})),n},v.prototype.generateChildren=function(e){var t=this,o=[],i=e.getData()[this.field];return Array.isArray(i)||(i=[i]),i.forEach(function(i){var n=new r(i||{},t.table.rowManager);n.modules.dataTree.index=e.modules.dataTree.index+1,n.modules.dataTree.parent=e,n.modules.dataTree.children&&(n.modules.dataTree.open=t.startOpen(n.getComponent(),n.modules.dataTree.index)),o.push(n)}),o},v.prototype.expandRow=function(e,t){var o=e.modules.dataTree;!1!==o.children&&(o.open=!0,e.reinitialize(),this.table.rowManager.refreshActiveData("tree",!1,!0),this.table.options.dataTreeRowExpanded(e.getComponent(),e.modules.dataTree.index))},v.prototype.collapseRow=function(e){var t=e.modules.dataTree;!1!==t.children&&(t.open=!1,e.reinitialize(),this.table.rowManager.refreshActiveData("tree",!1,!0),this.table.options.dataTreeRowCollapsed(e.getComponent(),e.modules.dataTree.index))},v.prototype.toggleRow=function(e){var t=e.modules.dataTree;!1!==t.children&&(t.open?this.collapseRow(e):this.expandRow(e))},v.prototype.getTreeParent=function(e){return!!e.modules.dataTree.parent&&e.modules.dataTree.parent.getComponent()},v.prototype.getFilteredTreeChildren=function(e){var t,o=e.modules.dataTree,i=[];return o.children&&(Array.isArray(o.children)||(o.children=this.generateChildren(e)),t=this.table.modExists("filter")?this.table.modules.filter.filter(o.children):o.children,t.forEach(function(e){e instanceof r&&i.push(e)})),i},v.prototype.getTreeChildren=function(e){var t=e.modules.dataTree,o=[];return t.children&&(Array.isArray(t.children)||(t.children=this.generateChildren(e)),t.children.forEach(function(e){e instanceof r&&o.push(e.getComponent())})),o},v.prototype.checkForRestyle=function(e){e.row.cells.indexOf(e)||!1!==e.row.modules.dataTree.children&&e.row.reinitialize()},v.prototype.getChildField=function(){return this.field},v.prototype.redrawNeeded=function(e){return!!this.field&&void 0!==e[this.field]||!!this.elementField&&void 0!==e[this.elementField]},u.prototype.registerModule("dataTree",v);var y=function(e){this.table=e,this.fields={},this.columnsByIndex=[],this.columnsByField={},this.config={},this.active=!1};y.prototype.download=function(e,t,o,i,n){function s(o,i){n?!0===n?r.triggerDownload(o,i,e,t,!0):n(o):r.triggerDownload(o,i,e,t)}var r=this,a=!1;this.processConfig(),this.active=i,"function"==typeof e?a=e:r.downloaders[e]?a=r.downloaders[e]:console.warn("Download Error - No such download type found: ",e),this.processColumns(),a&&a.call(this,r.processDefinitions(),r.processData(i||"active"),o||{},s,this.config)},y.prototype.processConfig=function(){var e={columnGroups:!0,rowGroups:!0,columnCalcs:!0,dataTree:!0};if(this.table.options.downloadConfig)for(var t in this.table.options.downloadConfig)e[t]=this.table.options.downloadConfig[t];e.rowGroups&&this.table.options.groupBy&&this.table.modExists("groupRows")&&(this.config.rowGroups=!0),e.columnGroups&&this.table.columnManager.columns.length!=this.table.columnManager.columnsByIndex.length&&(this.config.columnGroups=!0),e.columnCalcs&&this.table.modExists("columnCalcs")&&(this.config.columnCalcs=!0),e.dataTree&&this.table.options.dataTree&&this.table.modExists("dataTree")&&(this.config.dataTree=!0)},y.prototype.processColumns=function(){var e=this;e.columnsByIndex=[],e.columnsByField={},e.table.columnManager.columnsByIndex.forEach(function(t){t.field&&!1!==t.definition.download&&(t.visible||!t.visible&&t.definition.download)&&(e.columnsByIndex.push(t),e.columnsByField[t.field]=t)})},y.prototype.processDefinitions=function(){var e=this,t=[];return this.config.columnGroups?e.table.columnManager.columns.forEach(function(o){var i=e.processColumnGroup(o);i&&t.push(i)}):e.columnsByIndex.forEach(function(o){!1!==o.download&&t.push(e.processDefinition(o))}),t},y.prototype.processColumnGroup=function(e){var t=this,o=e.columns,i=0,n=this.processDefinition(e),s={type:"group",title:n.title,depth:1};if(o.length){if(s.subGroups=[],s.width=0,o.forEach(function(e){var o=t.processColumnGroup(e);o.depth>i&&(i=o.depth),o&&(s.width+=o.width,s.subGroups.push(o))}),s.depth+=i,!s.width)return!1}else{if(!e.field||!1===e.definition.download||!(e.visible||!e.visible&&e.definition.download))return!1;s.width=1,s.definition=n}return s},y.prototype.processDefinition=function(e){var t={};for(var o in e.definition)t[o]=e.definition[o];return void 0!==e.definition.downloadTitle&&(t.title=e.definition.downloadTitle),t},y.prototype.processData=function(e){var t=this,o=this,i=[],n=[],s=!1,r={};return this.config.rowGroups?("visible"==e?(s=o.table.rowManager.getRows(e),s.forEach(function(e){if("row"==e.type){var t=e.getGroup();-1===n.indexOf(t)&&n.push(t)}})):n=this.table.modules.groupRows.getGroups(),n.forEach(function(e){i.push(t.processGroupData(e,s))})):(this.config.dataTree&&(e=e="display"),i=o.table.rowManager.getData(e,"download")),this.config.columnCalcs&&(r=this.table.getCalcResults(),i={calcs:r,data:i}),"function"==typeof o.table.options.downloadDataFormatter&&(i=o.table.options.downloadDataFormatter(i)),i},y.prototype.processGroupData=function(e,t){var o=this,i=e.getSubGroups(),n={type:"group",key:e.key};return i.length?(n.subGroups=[],i.forEach(function(e){n.subGroups.push(o.processGroupData(e,t))})):t?(n.rows=[],e.rows.forEach(function(e){t.indexOf(e)>-1&&n.rows.push(e.getData("download"))})):n.rows=e.getData(!0,"download"),n},y.prototype.triggerDownload=function(e,t,o,i,n){var s=document.createElement("a"),r=new Blob([e],{type:t -}),i=i||"Tabulator."+("function"==typeof o?"txt":o);(r=this.table.options.downloadReady.call(this.table,e,r))&&(n?window.open(window.URL.createObjectURL(r)):navigator.msSaveOrOpenBlob?navigator.msSaveOrOpenBlob(r,i):(s.setAttribute("href",window.URL.createObjectURL(r)),s.setAttribute("download",i),s.style.display="none",document.body.appendChild(s),s.click(),document.body.removeChild(s)),this.table.options.downloadComplete&&this.table.options.downloadComplete())},y.prototype.getFieldValue=function(e,t){var o=this.columnsByField[e];return!!o&&o.getFieldValue(t)},y.prototype.commsReceived=function(e,t,o){switch(t){case"intercept":this.download(o.type,"",o.options,o.active,o.intercept)}},y.prototype.downloaders={csv:function(e,t,o,i,n){function s(e,t){e.subGroups?e.subGroups.forEach(function(e){s(e,t+1)}):(d.push('"'+String(e.title).split('"').join('""')+'"'),h.push(e.definition.field))}function r(e){e.forEach(function(e){var t=[];h.forEach(function(o){var i=u.getFieldValue(o,e);switch(void 0===i?"undefined":_typeof(i)){case"object":i=JSON.stringify(i);break;case"undefined":case"null":i="";break;default:i=i}t.push('"'+String(i).split('"').join('""')+'"')}),l.push(t.join(p))})}function a(e){e.subGroups?e.subGroups.forEach(function(e){a(e)}):r(e.rows)}var l,c,u=this,d=[],h=[],p=o&&o.delimiter?o.delimiter:",";n.columnGroups?(console.warn("Download Warning - CSV downloader cannot process column groups"),e.forEach(function(e){s(e,0)})):function(){e.forEach(function(e){d.push('"'+String(e.title).split('"').join('""')+'"'),h.push(e.field)})}(),l=[d.join(p)],n.columnCalcs&&(console.warn("Download Warning - CSV downloader cannot process column calculations"),t=t.data),n.rowGroups?(console.warn("Download Warning - CSV downloader cannot process row groups"),t.forEach(function(e){a(e)})):r(t),c=l.join("\n"),o.bom&&(c="\ufeff"+c),i(c,"text/csv")},json:function(e,t,o,i,n){var s;n.columnCalcs&&(console.warn("Download Warning - CSV downloader cannot process column calculations"),t=t.data),s=JSON.stringify(t,null,"\t"),i(s,"application/json")},pdf:function(e,t,o,i,n){function s(e,t){var o=e.width,i=1,n={content:e.title||""};if(e.subGroups?(e.subGroups.forEach(function(e){s(e,t+1)}),i=1):(h.push(e.definition.field),i=g-t),n.rowSpan=i,p[t].push(n),o--,i>1)for(var r=t+1;rg&&(g=e.depth)});for(var C=0;C1&&h[t].push({type:"hoz",start:f[t].length,end:f[t].length+e.width-1}),f[t].push(e.title),e.subGroups?e.subGroups.forEach(function(e){o(e,t+1)}):(g.push(e.definition.field),i(g.length),h[t].push({type:"vert",start:g.length-1}))}function i(){var e=0;f.forEach(function(t){var o=t.length;o>e&&(e=o)}),f.forEach(function(t){var o=t.length;if(o46){if(o>=i.length)return t.preventDefault(),t.stopPropagation(),a=!1,!1;switch(i[o]){case n:if(l.toUpperCase()==l.toLowerCase())return t.preventDefault(),t.stopPropagation(),a=!1,!1;break;case s:if(isNaN(l))return t.preventDefault(),t.stopPropagation(),a=!1,!1;break;case r:break;default:if(l!==i[o])return t.preventDefault(),t.stopPropagation(),a=!1,!1}a=!0}}),e.addEventListener("keyup",function(i){i.keyCode>46&&t.maskAutoFill&&o(e.value.length)}),e.placeholder||(e.placeholder=i),t.maskAutoFill&&o(e.value.length)},w.prototype.editors={input:function(e,t,o,i,n){function s(e){(null===r||void 0===r)&&""!==a.value||a.value!==r?o(a.value)&&(r=a.value):i()}var r=e.getValue(),a=document.createElement("input");if(a.setAttribute("type",n.search?"search":"text"),a.style.padding="4px",a.style.width="100%",a.style.boxSizing="border-box",n.elementAttributes&&"object"==_typeof(n.elementAttributes))for(var l in n.elementAttributes)"+"==l.charAt(0)?(l=l.slice(1),a.setAttribute(l,a.getAttribute(l)+n.elementAttributes["+"+l])):a.setAttribute(l,n.elementAttributes[l]);return a.value=void 0!==r?r:"",t(function(){a.focus(),a.style.height="100%"}),a.addEventListener("change",s),a.addEventListener("blur",s),a.addEventListener("keydown",function(e){switch(e.keyCode){case 13:s(e);break;case 27:i()}}),n.mask&&this.table.modules.edit.maskInput(a,n),a},textarea:function(e,t,o,i,n){function s(t){(null===r||void 0===r)&&""!==c.value||c.value!==r?(o(c.value)&&(r=c.value),setTimeout(function(){e.getRow().normalizeHeight()},300)):i()}var r=e.getValue(),a=n.verticalNavigation||"hybrid",l=String(null!==r&&void 0!==r?r:""),c=(l.match(/(?:\r\n|\r|\n)/g),document.createElement("textarea")),u=0;if(c.style.display="block",c.style.padding="2px",c.style.height="100%",c.style.width="100%",c.style.boxSizing="border-box",c.style.whiteSpace="pre-wrap",c.style.resize="none",n.elementAttributes&&"object"==_typeof(n.elementAttributes))for(var d in n.elementAttributes)"+"==d.charAt(0)?(d=d.slice(1),c.setAttribute(d,c.getAttribute(d)+n.elementAttributes["+"+d])):c.setAttribute(d,n.elementAttributes[d]);return c.value=l,t(function(){c.focus(),c.style.height="100%"}),c.addEventListener("change",s),c.addEventListener("blur",s),c.addEventListener("keyup",function(){c.style.height="";var t=c.scrollHeight;c.style.height=t+"px",t!=u&&(u=t,e.getRow().normalizeHeight())}),c.addEventListener("keydown",function(e){switch(e.keyCode){case 27:i();break;case 38:("editor"==a||"hybrid"==a&&c.selectionStart)&&(e.stopImmediatePropagation(),e.stopPropagation());break;case 40:("editor"==a||"hybrid"==a&&c.selectionStart!==c.value.length)&&(e.stopImmediatePropagation(),e.stopPropagation())}}),n.mask&&this.table.modules.edit.maskInput(c,n),c},number:function(e,t,o,i,n){function s(){var e=l.value;isNaN(e)||""===e||(e=Number(e)),e!==r?o(e)&&(r=e):i()}var r=e.getValue(),a=n.verticalNavigation||"editor",l=document.createElement("input");if(l.setAttribute("type","number"),void 0!==n.max&&l.setAttribute("max",n.max),void 0!==n.min&&l.setAttribute("min",n.min),void 0!==n.step&&l.setAttribute("step",n.step),l.style.padding="4px",l.style.width="100%",l.style.boxSizing="border-box",n.elementAttributes&&"object"==_typeof(n.elementAttributes))for(var c in n.elementAttributes)"+"==c.charAt(0)?(c=c.slice(1),l.setAttribute(c,l.getAttribute(c)+n.elementAttributes["+"+c])):l.setAttribute(c,n.elementAttributes[c]);l.value=r;var u=function(e){s()};return t(function(){l.removeEventListener("blur",u),l.focus(),l.style.height="100%",l.addEventListener("blur",u)}),l.addEventListener("keydown",function(e){switch(e.keyCode){case 13:s();break;case 27:i();break;case 38:case 40:"editor"==a&&(e.stopImmediatePropagation(),e.stopPropagation())}}),n.mask&&this.table.modules.edit.maskInput(l,n),l},range:function(e,t,o,i,n){function s(){var e=a.value;isNaN(e)||""===e||(e=Number(e)),e!=r?o(e)&&(r=e):i()}var r=e.getValue(),a=document.createElement("input");if(a.setAttribute("type","range"),void 0!==n.max&&a.setAttribute("max",n.max),void 0!==n.min&&a.setAttribute("min",n.min),void 0!==n.step&&a.setAttribute("step",n.step),a.style.padding="4px",a.style.width="100%",a.style.boxSizing="border-box",n.elementAttributes&&"object"==_typeof(n.elementAttributes))for(var l in n.elementAttributes)"+"==l.charAt(0)?(l=l.slice(1),a.setAttribute(l,a.getAttribute(l)+n.elementAttributes["+"+l])):a.setAttribute(l,n.elementAttributes[l]);return a.value=r,t(function(){a.focus(),a.style.height="100%"}),a.addEventListener("blur",function(e){s()}),a.addEventListener("keydown",function(e){switch(e.keyCode){case 13:case 9:s();break;case 27:i()}}),a},select:function(e,t,o,i,n){function s(t){var o,i={},s=f.table.getData();return o=t?f.table.columnManager.getColumnByField(t):e.getColumn()._getSelf(),o?(s.forEach(function(e){var t=o.getFieldValue(e);null!==t&&void 0!==t&&""!==t&&(i[t]=!0)}),i=n.sortValuesList?"asc"==n.sortValuesList?Object.keys(i).sort():Object.keys(i).sort().reverse():Object.keys(i)):console.warn("unable to find matching column to create select lookup list:",t),i}function r(t,o){function i(e){var e={label:n.listItemFormatter?n.listItemFormatter(e.value,e.label):e.label,value:e.value,element:!1};return e.value!==o&&(isNaN(parseFloat(e.value))||isNaN(parseFloat(e.value))||parseFloat(e.value)!==parseFloat(o))||l(e),s.push(e),r.push(e),e}var s=[],r=[];if("function"==typeof t&&(t=t(e)),Array.isArray(t))t.forEach(function(e){var t;"object"===(void 0===e?"undefined":_typeof(e))?e.options?(t={label:e.label,group:!0,element:!1},r.push(t),e.options.forEach(function(e){i(e)})):i(e):(t={label:n.listItemFormatter?n.listItemFormatter(e,e):e,value:e,element:!1},t.value!==o&&(isNaN(parseFloat(t.value))||isNaN(parseFloat(t.value))||parseFloat(t.value)!==parseFloat(o))||l(t),s.push(t),r.push(t))});else for(var c in t){var u={label:n.listItemFormatter?n.listItemFormatter(c,t[c]):t[c],value:c,element:!1};u.value!==o&&(isNaN(parseFloat(u.value))||isNaN(parseFloat(u.value))||parseFloat(u.value)!==parseFloat(o))||l(u),s.push(u),r.push(u)}C=s,x=r,a()}function a(){for(;E.firstChild;)E.removeChild(E.firstChild);x.forEach(function(e){var t=e.element;t||(e.group?(t=document.createElement("div"),t.classList.add("tabulator-edit-select-list-group"),t.tabIndex=0,t.innerHTML=""===e.label?" ":e.label):(t=document.createElement("div"),t.classList.add("tabulator-edit-select-list-item"),t.tabIndex=0,t.innerHTML=""===e.label?" ":e.label,t.addEventListener("click",function(){l(e),c()}),e===R&&t.classList.add("active")),t.addEventListener("mousedown",function(){M=!1,setTimeout(function(){M=!0},10)}),e.element=t),E.appendChild(t)})}function l(e){R&&R.element&&R.element.classList.remove("active"),R=e,w.value=" "===e.label?"":e.label,e.element&&e.element.classList.add("active")}function c(){p(),b!==R.value?(b=R.value,o(R.value)):i()}function d(){p(),i()}function h(){if(!E.parentNode){!0===n.values?r(s(),y):"string"==typeof n.values?r(s(n.values),y):r(n.values||[],y);var e=u.prototype.helpers.elOffset(g);E.style.minWidth=g.offsetWidth+"px",E.style.top=e.top+g.offsetHeight+"px",E.style.left=e.left+"px",document.body.appendChild(E)}}function p(){E.parentNode&&E.parentNode.removeChild(E),m()}function m(){f.table.rowManager.element.removeEventListener("scroll",d)}var f=this,g=e.getElement(),b=e.getValue(),v=n.verticalNavigation||"editor",y=void 0!==b||null===b?b:void 0!==n.defaultValue?n.defaultValue:"",w=document.createElement("input"),E=document.createElement("div"),C=[],x=[],R={},M=!0;if(this.table.rowManager.element.addEventListener("scroll",d),(Array.isArray(n)||!Array.isArray(n)&&"object"===(void 0===n?"undefined":_typeof(n))&&!n.values)&&(console.warn("DEPRECATION WANRING - values for the select editor must now be passed into the values property of the editorParams object, not as the editorParams object"),n={values:n}),w.setAttribute("type","text"),w.style.padding="4px",w.style.width="100%",w.style.boxSizing="border-box",w.style.cursor="default",w.readOnly=0!=this.currentCell,n.elementAttributes&&"object"==_typeof(n.elementAttributes))for(var L in n.elementAttributes)"+"==L.charAt(0)?(L=L.slice(1),w.setAttribute(L,w.getAttribute(L)+n.elementAttributes["+"+L])):w.setAttribute(L,n.elementAttributes[L]);return w.value=void 0!==b||null===b?b:"",w.addEventListener("keydown",function(e){var t;switch(e.keyCode){case 38:t=C.indexOf(R),("editor"==v||"hybrid"==v&&t)&&(e.stopImmediatePropagation(),e.stopPropagation(),e.preventDefault(),t>0&&l(C[t-1]));break;case 40:t=C.indexOf(R),("editor"==v||"hybrid"==v&&t-1||String(t.title).toLowerCase().indexOf(String(e).toLowerCase())>-1)&&r.push(t)}),d(r,t))}function a(e){var t=document.createElement("div");c(),!1!==e&&(t.classList.add("tabulator-edit-select-list-notice"),t.tabIndex=0,e instanceof Node?t.appendChild(e):t.innerHTML=e,M.appendChild(t))}function l(e,t){var o=[];if(Array.isArray(e))e.forEach(function(e){var t={title:n.listItemFormatter?n.listItemFormatter(e,e):e,value:e};o.push(t)});else for(var i in e){var s={title:n.listItemFormatter?n.listItemFormatter(i,e[i]):e[i],value:i};o.push(s)}return o}function c(){for(;M.firstChild;)M.removeChild(M.firstChild)}function d(e,t){e.length?h(e,t):n.emptyPlaceholder&&a(n.emptyPlaceholder)}function h(e,t){var o=!1;c(),L=e,L.forEach(function(e){var i=e.element;i||(i=document.createElement("div"),i.classList.add("tabulator-edit-select-list-item"),i.tabIndex=0,i.innerHTML=e.title,i.addEventListener("click",function(){f(e),p()}),i.addEventListener("mousedown",function(){T=!1,setTimeout(function(){T=!0},10)}),e.element=i,t&&e.value==E&&(R.value=e.title,e.element.classList.add("active"),o=!0),e===D&&(e.element.classList.add("active"),o=!0)),M.appendChild(i)}),o||f(!1)}function p(){g(),D?E!==D.value?(E=D.value,R.value=D.title,o(D.value)):i():n.freetext?(E=R.value,o(R.value)):n.allowEmpty&&""===R.value?(E=R.value,o(R.value)):i()}function m(){if(!M.parentNode){for(;M.firstChild;)M.removeChild(M.firstChild);var e=u.prototype.helpers.elOffset(w);M.style.minWidth=w.offsetWidth+"px",M.style.top=e.top+w.offsetHeight+"px",M.style.left=e.left+"px",document.body.appendChild(M)}}function f(e,t){D&&D.element&&D.element.classList.remove("active"),D=e,e&&e.element&&e.element.classList.add("active")}function g(){M.parentNode&&M.parentNode.removeChild(M),v()}function b(){g(),i()}function v(){y.table.rowManager.element.removeEventListener("scroll",b)}var y=this,w=e.getElement(),E=e.getValue(),C=n.verticalNavigation||"editor",x=void 0!==E||null===E?E:void 0!==n.defaultValue?n.defaultValue:"",R=document.createElement("input"),M=document.createElement("div"),L=[],D={},T=!0;if(this.table.rowManager.element.addEventListener("scroll",b),R.setAttribute("type","search"),R.style.padding="4px",R.style.width="100%",R.style.boxSizing="border-box",n.elementAttributes&&"object"==_typeof(n.elementAttributes))for(var k in n.elementAttributes)"+"==k.charAt(0)?(k=k.slice(1),R.setAttribute(k,R.getAttribute(k)+n.elementAttributes["+"+k])):R.setAttribute(k,n.elementAttributes[k]);return M.classList.add("tabulator-edit-select-list"),R.addEventListener("keydown",function(e){var t;switch(e.keyCode){case 38:t=L.indexOf(D),("editor"==C||"hybrid"==C&&t)&&(e.stopImmediatePropagation(),e.stopPropagation(),e.preventDefault(),f(t>0?L[t-1]:!1));break;case 40:t=L.indexOf(D),("editor"==C||"hybrid"==C&&t'):("ie"==a.table.browser?t.setAttribute("class","tabulator-star-inactive"):t.classList.replace("tabulator-star-active","tabulator-star-inactive"),t.innerHTML='')})}function r(e){c=e,s(e)}var a=this,l=e.getElement(),c=e.getValue(),u=l.getElementsByTagName("svg").length||5,d=l.getElementsByTagName("svg")[0]?l.getElementsByTagName("svg")[0].getAttribute("width"):14,h=[],p=document.createElement("div"),m=document.createElementNS("http://www.w3.org/2000/svg","svg");if(l.style.whiteSpace="nowrap",l.style.overflow="hidden",l.style.textOverflow="ellipsis",p.style.verticalAlign="middle",p.style.display="inline-block",p.style.padding="4px",m.setAttribute("width",d),m.setAttribute("height",d),m.setAttribute("viewBox","0 0 512 512"),m.setAttribute("xml:space","preserve"),m.style.padding="0 1px",n.elementAttributes&&"object"==_typeof(n.elementAttributes))for(var f in n.elementAttributes)"+"==f.charAt(0)?(f=f.slice(1),p.setAttribute(f,p.getAttribute(f)+n.elementAttributes["+"+f])):p.setAttribute(f,n.elementAttributes[f]);for(var g=1;g<=u;g++)!function(e){var t=document.createElement("span"),i=m.cloneNode(!0);h.push(i),t.addEventListener("mouseenter",function(t){t.stopPropagation(),t.stopImmediatePropagation(),s(e)}),t.addEventListener("mousemove",function(e){e.stopPropagation(),e.stopImmediatePropagation()}),t.addEventListener("click",function(t){t.stopPropagation(),t.stopImmediatePropagation(),o(e)}),t.appendChild(i),p.appendChild(t)}(g);return c=Math.min(parseInt(c),u),s(c),p.addEventListener("mousemove",function(e){s(0)}),p.addEventListener("click",function(e){o(0)}),l.addEventListener("blur",function(e){i()}),l.addEventListener("keydown",function(e){switch(e.keyCode){case 39:r(c+1);break;case 37:r(c-1);break;case 13:o(c);break;case 27:i()}}),p},progress:function(e,t,o,i,n){function s(){var e=d*Math.round(m.offsetWidth/(l.clientWidth/100))+u;o(e),l.setAttribute("aria-valuenow",e),l.setAttribute("aria-label",h)}var r,a,l=e.getElement(),c=void 0===n.max?l.getElementsByTagName("div")[0].getAttribute("max")||100:n.max,u=void 0===n.min?l.getElementsByTagName("div")[0].getAttribute("min")||0:n.min,d=(c-u)/100,h=e.getValue()||0,p=document.createElement("div"),m=document.createElement("div");if(p.style.position="absolute",p.style.right="0",p.style.top="0",p.style.bottom="0",p.style.width="5px",p.classList.add("tabulator-progress-handle"),m.style.display="inline-block",m.style.position="relative",m.style.height="100%",m.style.backgroundColor="#488CE9",m.style.maxWidth="100%",m.style.minWidth="0%",n.elementAttributes&&"object"==_typeof(n.elementAttributes))for(var f in n.elementAttributes)"+"==f.charAt(0)?(f=f.slice(1),m.setAttribute(f,m.getAttribute(f)+n.elementAttributes["+"+f])):m.setAttribute(f,n.elementAttributes[f]);return l.style.padding="4px 4px",h=Math.min(parseFloat(h),c),h=Math.max(parseFloat(h),u),h=Math.round((h-u)/d),m.style.width=h+"%",l.setAttribute("aria-valuemin",u),l.setAttribute("aria-valuemax",c),m.appendChild(p),p.addEventListener("mousedown",function(e){r=e.screenX,a=m.offsetWidth}),p.addEventListener("mouseover",function(){p.style.cursor="ew-resize"}),l.addEventListener("mousemove",function(e){r&&(m.style.width=a+e.screenX-r+"px")}),l.addEventListener("mouseup",function(e){r&&(e.stopPropagation(),e.stopImmediatePropagation(),r=!1,a=!1,s())}),l.addEventListener("keydown",function(e){switch(e.keyCode){case 39:m.style.width=m.clientWidth+l.clientWidth/100+"px";break;case 37:m.style.width=m.clientWidth-l.clientWidth/100+"px";break;case 13:s();break;case 27:i()}}),l.addEventListener("blur",function(){i()}),m},tickCross:function(e,t,o,i,n){function s(e){return l?e?u?c:a.checked:a.checked&&!u?(a.checked=!1,a.indeterminate=!0,u=!0,c):(u=!1,a.checked):a.checked}var r=e.getValue(),a=document.createElement("input"),l=n.tristate,c=void 0===n.indeterminateValue?null:n.indeterminateValue,u=!1;if(a.setAttribute("type","checkbox"),a.style.marginTop="5px",a.style.boxSizing="border-box",n.elementAttributes&&"object"==_typeof(n.elementAttributes))for(var d in n.elementAttributes)"+"==d.charAt(0)?(d=d.slice(1),a.setAttribute(d,a.getAttribute(d)+n.elementAttributes["+"+d])):a.setAttribute(d,n.elementAttributes[d]);return a.value=r,!l||void 0!==r&&r!==c&&""!==r||(u=!0,a.indeterminate=!0),"firefox"!=this.table.browser&&t(function(){a.focus()}),a.checked=!0===r||"true"===r||"True"===r||1===r,a.addEventListener("change",function(e){o(s())}),a.addEventListener("blur",function(e){o(s(!0))}),a.addEventListener("keydown",function(e){13==e.keyCode&&o(s()),27==e.keyCode&&i()}),a}},u.prototype.registerModule("edit",w);var E=function(e){this.table=e,this.config={},this.cloneTableStyle=!0,this.colVisProp=""};E.prototype.genereateTable=function(e,t,o,i){this.cloneTableStyle=t,this.config=e||{},this.colVisProp=i;var n=document.createElement("table");return n.classList.add("tabulator-print-table"),!1!==this.config.columnHeaders&&n.appendChild(this.generateHeaderElements()),n.appendChild(this.generateBodyElements(this.rowLookup(o))),this.mapElementStyles(this.table.element,n,["border-top","border-left","border-right","border-bottom"]),n},E.prototype.rowLookup=function(e){var t=this,o=[];if("function"==typeof e)e.call(this.table).forEach(function(e){(e=t.table.rowManager.findRow(e))&&o.push(e)});else switch(e){case!0:case"visible":o=this.table.rowManager.getVisibleRows(!0);break;case"all":o=this.table.rowManager.rows;break;case"selected":o=this.modules.selectRow.selectedRows;break;case"active":default:o=this.table.rowManager.getDisplayRows()}return Object.assign([],o)},E.prototype.generateColumnGroupHeaders=function(){var e=this,t=[];return(!1!==this.config.columnGroups?this.table.columnManager.columns:this.table.columnManager.columnsByIndex).forEach(function(o){var i=e.processColumnGroup(o);i&&t.push(i)}),t},E.prototype.processColumnGroup=function(e){var t=this,o=e.columns,i=0,n={title:e.definition.title,column:e,depth:1};if(o.length){if(n.subGroups=[],n.width=0,o.forEach(function(e){var o=t.processColumnGroup(e);o&&(n.width+=o.width,n.subGroups.push(o),o.depth>i&&(i=o.depth))}),n.depth+=i,!n.width)return!1}else{if(!this.columnVisCheck(e))return!1;n.width=1}return n},E.prototype.groupHeadersToRows=function(e){function t(e,n){ -var s=i-n;void 0===o[n]&&(o[n]=[]),e.height=e.subGroups?1:s-e.depth+1,o[n].push(e),e.subGroups&&e.subGroups.forEach(function(e){t(e,n+1)})}var o=[],i=0;return e.forEach(function(e){e.depth>i&&(i=e.depth)}),e.forEach(function(e){t(e,0)}),o},E.prototype.generateHeaderElements=function(){var e=this,t=document.createElement("thead");return this.groupHeadersToRows(this.generateColumnGroupHeaders()).forEach(function(o){var i=document.createElement("tr");e.mapElementStyles(e.table.columnManager.getHeadersElement(),t,["border-top","border-left","border-right","border-bottom","background-color","color","font-weight","font-family","font-size"]),o.forEach(function(t){var o=document.createElement("th"),n=t.column.definition.cssClass?t.column.definition.cssClass.split(" "):[];o.colSpan=t.width,o.rowSpan=t.height,o.innerHTML=t.column.definition.title,e.cloneTableStyle&&(o.style.boxSizing="border-box"),n.forEach(function(e){o.classList.add(e)}),e.mapElementStyles(t.column.getElement(),o,["text-align","border-top","border-left","border-right","border-bottom","background-color","color","font-weight","font-family","font-size"]),e.mapElementStyles(t.column.contentElement,o,["padding-top","padding-left","padding-right","padding-bottom"]),t.column.visible?e.mapElementStyles(t.column.getElement(),o,["width"]):t.column.definition.width&&(o.style.width=t.column.definition.width+"px"),t.column.parent&&e.mapElementStyles(t.column.parent.groupElement,o,["border-top"]),i.appendChild(o)}),t.appendChild(i)}),t},E.prototype.generateBodyElements=function(e){},E.prototype.generateBodyElements=function(e){var t,o,i,n,s,r,a,l,c,u,d=this;u=this.table.options["rowFormatter"+(this.colVisProp.charAt(0).toUpperCase()+this.colVisProp.slice(1))],u=null!==u?u:this.table.options.rowFormatter,this.cloneTableStyle&&window.getComputedStyle&&(t=this.table.element.querySelector(".tabulator-row-odd:not(.tabulator-group):not(.tabulator-calcs)"),o=this.table.element.querySelector(".tabulator-row-even:not(.tabulator-group):not(.tabulator-calcs)"),i=this.table.element.querySelector(".tabulator-row.tabulator-calcs"),n=this.table.element.querySelector(".tabulator-row:not(.tabulator-group):not(.tabulator-calcs)"),r=this.table.element.getElementsByClassName("tabulator-group")[0],n&&(a=n.getElementsByClassName("tabulator-cell"),s=a[0],a[a.length-1]));var h=document.createElement("tbody"),p=[];return!1!==this.config.columnCalcs&&this.table.modExists("columnCalcs")&&(this.table.modules.columnCalcs.topInitialized&&e.unshift(this.table.modules.columnCalcs.topRow),this.table.modules.columnCalcs.botInitialized&&e.push(this.table.modules.columnCalcs.botRow)),this.table.columnManager.columnsByIndex.forEach(function(e){d.columnVisCheck(e)&&p.push(e)}),this.table.options.dataTree&&!1!==this.config.dataTree&&this.table.modExists("columnCalcs")&&(c=this.table.modules.dataTree.elementField),e=e.filter(function(e){switch(e.type){case"group":return!1!==d.config.rowGroups;case"calc":return!1!==d.config.columnCalcs}return!0}),e.length>1e3&&console.warn("It may take a long time to render an HTML table with more than 1000 rows"),e.forEach(function(e,n){var a=e.getData(d.colVisProp),m=document.createElement("tr");switch(m.classList.add("tabulator-print-table-row"),e.type){case"group":var f=document.createElement("td");f.colSpan=p.length,f.innerHTML=e.key,m.classList.add("tabulator-print-table-group"),d.mapElementStyles(r,m,["border-top","border-left","border-right","border-bottom","color","font-weight","font-family","font-size","background-color"]),d.mapElementStyles(r,f,["padding-top","padding-left","padding-right","padding-bottom"]),m.appendChild(f);break;case"calc":m.classList.add("tabulator-print-table-calcs");case"row":if(d.table.options.dataTree&&!1===d.config.dataTree&&e.modules.dataTree.parent)return;if(p.forEach(function(t,o){var i=document.createElement("td"),n=t.getFieldValue(a),r={modules:{},getValue:function(){return n},getField:function(){return t.definition.field},getElement:function(){return i},getColumn:function(){return t.getComponent()},getData:function(){return a},getRow:function(){return e.getComponent()},getComponent:function(){return r},column:t};if((t.definition.cssClass?t.definition.cssClass.split(" "):[]).forEach(function(e){i.classList.add(e)}),d.table.modExists("format")&&!1!==d.config.formatCells)n=d.table.modules.format.formatExportValue(r,d.colVisProp);else switch(void 0===n?"undefined":_typeof(n)){case"object":n=JSON.stringify(n);break;case"undefined":case"null":n="";break;default:n=n}n instanceof Node?i.appendChild(n):i.innerHTML=n,s&&(d.mapElementStyles(s,i,["padding-top","padding-left","padding-right","padding-bottom","border-top","border-left","border-right","border-bottom","color","font-weight","font-family","font-size"]),t.definition.align&&(i.style.textAlign=t.definition.align)),d.table.options.dataTree&&!1!==d.config.dataTree&&(c&&c==t.field||!c&&0==o)&&(e.modules.dataTree.controlEl&&i.insertBefore(e.modules.dataTree.controlEl.cloneNode(!0),i.firstChild),e.modules.dataTree.branchEl&&i.insertBefore(e.modules.dataTree.branchEl.cloneNode(!0),i.firstChild)),m.appendChild(i),r.modules.format&&r.modules.format.renderedCallback&&r.modules.format.renderedCallback()}),l="calc"==e.type?i:n%2&&o?o:t,d.mapElementStyles(l,m,["border-top","border-left","border-right","border-bottom","color","font-weight","font-family","font-size","background-color"]),u&&!1!==d.config.formatCells){var g=e.getComponent();g.getElement=function(){return m},u(g)}}h.appendChild(m)}),h},E.prototype.columnVisCheck=function(e){return!1!==e.definition[this.colVisProp]&&(e.visible||!e.visible&&e.definition[this.colVisProp])},E.prototype.getHtml=function(e,t,o,i){var n=document.createElement("div");return n.appendChild(this.genereateTable(o||this.table.options.htmlOutputConfig,t,e,i||"htmlOutput")),n.innerHTML},E.prototype.mapElementStyles=function(e,t,o){if(this.cloneTableStyle&&e&&t){var i={"background-color":"backgroundColor",color:"fontColor",width:"width","font-weight":"fontWeight","font-family":"fontFamily","font-size":"fontSize","text-align":"textAlign","border-top":"borderTop","border-left":"borderLeft","border-right":"borderRight","border-bottom":"borderBottom","padding-top":"paddingTop","padding-left":"paddingLeft","padding-right":"paddingRight","padding-bottom":"paddingBottom"};if(window.getComputedStyle){var n=window.getComputedStyle(e);o.forEach(function(e){t.style[i[e]]=n.getPropertyValue(e)})}}},u.prototype.registerModule("export",E);var C=function(e){this.table=e,this.filterList=[],this.headerFilters={},this.headerFilterColumns=[],this.prevHeaderFilterChangeCheck="",this.prevHeaderFilterChangeCheck="{}",this.changed=!1};C.prototype.initializeColumn=function(e,t){function o(t){var o,s="input"==e.modules.filter.tagType&&"text"==e.modules.filter.attrType||"textarea"==e.modules.filter.tagType?"partial":"match",r="",a="";if(void 0===e.modules.filter.prevSuccess||e.modules.filter.prevSuccess!==t){if(e.modules.filter.prevSuccess=t,e.modules.filter.emptyFunc(t))delete i.headerFilters[n];else{switch(e.modules.filter.value=t,_typeof(e.definition.headerFilterFunc)){case"string":i.filters[e.definition.headerFilterFunc]?(r=e.definition.headerFilterFunc,o=function(o){var n=e.definition.headerFilterFuncParams||{},s=e.getFieldValue(o);return n="function"==typeof n?n(t,s,o):n,i.filters[e.definition.headerFilterFunc](t,s,o,n)}):console.warn("Header Filter Error - Matching filter function not found: ",e.definition.headerFilterFunc);break;case"function":o=function(o){var i=e.definition.headerFilterFuncParams||{},n=e.getFieldValue(o);return i="function"==typeof i?i(t,n,o):i,e.definition.headerFilterFunc(t,n,o,i)},r=o}if(!o)switch(s){case"partial":o=function(o){var i=e.getFieldValue(o);return void 0!==i&&null!==i&&String(i).toLowerCase().indexOf(String(t).toLowerCase())>-1},r="like";break;default:o=function(o){return e.getFieldValue(o)==t},r="="}i.headerFilters[n]={value:t,func:o,type:r}}a=JSON.stringify(i.headerFilters),i.prevHeaderFilterChangeCheck!==a&&(i.prevHeaderFilterChangeCheck=a,i.changed=!0,i.table.rowManager.filterRefresh())}return!0}var i=this,n=e.getField();e.modules.filter={success:o,attrType:!1,tagType:!1,emptyFunc:!1},this.generateHeaderFilterElement(e)},C.prototype.generateHeaderFilterElement=function(e,t,o){function i(){}var n,s,r,a,l,c,u,d=this,h=this,p=e.modules.filter.success,m=e.getField();if(e.modules.filter.headerElement&&e.modules.filter.headerElement.parentNode&&e.contentElement.removeChild(e.modules.filter.headerElement.parentNode),m){switch(e.modules.filter.emptyFunc=e.definition.headerFilterEmptyCheck||function(e){return!e&&"0"!==e},n=document.createElement("div"),n.classList.add("tabulator-header-filter"),_typeof(e.definition.headerFilter)){case"string":h.table.modules.edit.editors[e.definition.headerFilter]?(s=h.table.modules.edit.editors[e.definition.headerFilter],"tick"!==e.definition.headerFilter&&"tickCross"!==e.definition.headerFilter||e.definition.headerFilterEmptyCheck||(e.modules.filter.emptyFunc=function(e){return!0!==e&&!1!==e})):console.warn("Filter Error - Cannot build header filter, No such editor found: ",e.definition.editor);break;case"function":s=e.definition.headerFilter;break;case"boolean":e.modules.edit&&e.modules.edit.editor?s=e.modules.edit.editor:e.definition.formatter&&h.table.modules.edit.editors[e.definition.formatter]?(s=h.table.modules.edit.editors[e.definition.formatter],"tick"!==e.definition.formatter&&"tickCross"!==e.definition.formatter||e.definition.headerFilterEmptyCheck||(e.modules.filter.emptyFunc=function(e){return!0!==e&&!1!==e})):s=h.table.modules.edit.editors.input}if(s){if(a={getValue:function(){return void 0!==t?t:""},getField:function(){return e.definition.field},getElement:function(){return n},getColumn:function(){return e.getComponent()},getRow:function(){return{normalizeHeight:function(){}}}},u=e.definition.headerFilterParams||{},u="function"==typeof u?u.call(h.table):u,!(r=s.call(this.table.modules.edit,a,function(){},p,i,u)))return void console.warn("Filter Error - Cannot add filter to "+m+" column, editor returned a value of false");if(!(r instanceof Node))return void console.warn("Filter Error - Cannot add filter to "+m+" column, editor should return an instance of Node, the editor returned:",r);m?h.table.modules.localize.bind("headerFilters|columns|"+e.definition.field,function(e){r.setAttribute("placeholder",void 0!==e&&e?e:h.table.modules.localize.getText("headerFilters|default"))}):h.table.modules.localize.bind("headerFilters|default",function(e){r.setAttribute("placeholder",void 0!==h.column.definition.headerFilterPlaceholder&&h.column.definition.headerFilterPlaceholder?h.column.definition.headerFilterPlaceholder:e)}),r.addEventListener("click",function(e){e.stopPropagation(),r.focus()}),r.addEventListener("focus",function(e){var t=d.table.columnManager.element.scrollLeft;t!==d.table.rowManager.element.scrollLeft&&(d.table.rowManager.scrollHorizontal(t),d.table.columnManager.scrollHorizontal(t))}),l=!1,c=function(e){l&&clearTimeout(l),l=setTimeout(function(){p(r.value)},h.table.options.headerFilterLiveFilterDelay)},e.modules.filter.headerElement=r,e.modules.filter.attrType=r.hasAttribute("type")?r.getAttribute("type").toLowerCase():"",e.modules.filter.tagType=r.tagName.toLowerCase(),!1!==e.definition.headerFilterLiveFilter&&("autocomplete"!==e.definition.headerFilter&&"tickCross"!==e.definition.headerFilter&&("autocomplete"!==e.definition.editor&&"tickCross"!==e.definition.editor||!0!==e.definition.headerFilter)&&(r.addEventListener("keyup",c),r.addEventListener("search",c),"number"==e.modules.filter.attrType&&r.addEventListener("change",function(e){p(r.value)}),"text"==e.modules.filter.attrType&&"ie"!==this.table.browser&&r.setAttribute("type","search")),"input"!=e.modules.filter.tagType&&"select"!=e.modules.filter.tagType&&"textarea"!=e.modules.filter.tagType||r.addEventListener("mousedown",function(e){e.stopPropagation()})),n.appendChild(r),e.contentElement.appendChild(n),o||h.headerFilterColumns.push(e)}}else console.warn("Filter Error - Cannot add header filter, column has no field set:",e.definition.title)},C.prototype.hideHeaderFilterElements=function(){this.headerFilterColumns.forEach(function(e){e.modules.filter&&e.modules.filter.headerElement&&(e.modules.filter.headerElement.style.display="none")})},C.prototype.showHeaderFilterElements=function(){this.headerFilterColumns.forEach(function(e){e.modules.filter&&e.modules.filter.headerElement&&(e.modules.filter.headerElement.style.display="")})},C.prototype.setHeaderFilterFocus=function(e){e.modules.filter&&e.modules.filter.headerElement?e.modules.filter.headerElement.focus():console.warn("Column Filter Focus Error - No header filter set on column:",e.getField())},C.prototype.getHeaderFilterValue=function(e){if(e.modules.filter&&e.modules.filter.headerElement)return e.modules.filter.headerElement.value;console.warn("Column Filter Error - No header filter set on column:",e.getField())},C.prototype.setHeaderFilterValue=function(e,t){e&&(e.modules.filter&&e.modules.filter.headerElement?(this.generateHeaderFilterElement(e,t,!0),e.modules.filter.success(t)):console.warn("Column Filter Error - No header filter set on column:",e.getField()))},C.prototype.reloadHeaderFilter=function(e){e&&(e.modules.filter&&e.modules.filter.headerElement?this.generateHeaderFilterElement(e,e.modules.filter.value,!0):console.warn("Column Filter Error - No header filter set on column:",e.getField()))},C.prototype.hasChanged=function(){var e=this.changed;return this.changed=!1,e},C.prototype.setFilter=function(e,t,o){var i=this;i.filterList=[],Array.isArray(e)||(e=[{field:e,type:t,value:o}]),i.addFilter(e)},C.prototype.addFilter=function(e,t,o){var i=this;Array.isArray(e)||(e=[{field:e,type:t,value:o}]),e.forEach(function(e){(e=i.findFilter(e))&&(i.filterList.push(e),i.changed=!0)}),this.table.options.persistence&&this.table.modExists("persistence",!0)&&this.table.modules.persistence.config.filter&&this.table.modules.persistence.save("filter")},C.prototype.findFilter=function(e){var t,o=this;if(Array.isArray(e))return this.findSubFilters(e);var i=!1;return"function"==typeof e.field?i=function(t){return e.field(t,e.type||{})}:o.filters[e.type]?(t=o.table.columnManager.getColumnByField(e.field),i=t?function(i){return o.filters[e.type](e.value,t.getFieldValue(i))}:function(t){return o.filters[e.type](e.value,t[e.field])}):console.warn("Filter Error - No such filter type found, ignoring: ",e.type),e.func=i,!!e.func&&e},C.prototype.findSubFilters=function(e){var t=this,o=[];return e.forEach(function(e){(e=t.findFilter(e))&&o.push(e)}),!!o.length&&o},C.prototype.getFilters=function(e,t){var o=[];return e&&(o=this.getHeaderFilters()),t&&o.forEach(function(e){"function"==typeof e.type&&(e.type="function")}),o=o.concat(this.filtersToArray(this.filterList,t))},C.prototype.filtersToArray=function(e,t){var o=this,i=[];return e.forEach(function(e){var n;Array.isArray(e)?i.push(o.filtersToArray(e,t)):(n={field:e.field,type:e.type,value:e.value},t&&"function"==typeof n.type&&(n.type="function"),i.push(n))}),i},C.prototype.getHeaderFilters=function(){var e=[];for(var t in this.headerFilters)e.push({field:t,type:this.headerFilters[t].type,value:this.headerFilters[t].value});return e},C.prototype.removeFilter=function(e,t,o){var i=this;Array.isArray(e)||(e=[{field:e,type:t,value:o}]),e.forEach(function(e){var t=-1;t="object"==_typeof(e.field)?i.filterList.findIndex(function(t){return e===t}):i.filterList.findIndex(function(t){return e.field===t.field&&e.type===t.type&&e.value===t.value}),t>-1?(i.filterList.splice(t,1),i.changed=!0):console.warn("Filter Error - No matching filter type found, ignoring: ",e.type)}),this.table.options.persistence&&this.table.modExists("persistence",!0)&&this.table.modules.persistence.config.filter&&this.table.modules.persistence.save("filter")},C.prototype.clearFilter=function(e){this.filterList=[],e&&this.clearHeaderFilter(),this.changed=!0,this.table.options.persistence&&this.table.modExists("persistence",!0)&&this.table.modules.persistence.config.filter&&this.table.modules.persistence.save("filter")},C.prototype.clearHeaderFilter=function(){var e=this;this.headerFilters={},e.prevHeaderFilterChangeCheck="{}",this.headerFilterColumns.forEach(function(t){t.modules.filter.value=null,t.modules.filter.prevSuccess=void 0,e.reloadHeaderFilter(t)}),this.changed=!0},C.prototype.search=function(e,t,o,i){var n=this,s=[],r=[];return Array.isArray(t)||(t=[{field:t,type:o,value:i}]),t.forEach(function(e){(e=n.findFilter(e))&&r.push(e)}),this.table.rowManager.rows.forEach(function(t){var o=!0;r.forEach(function(e){n.filterRecurse(e,t.getData())||(o=!1)}),o&&s.push("data"===e?t.getData("data"):t.getComponent())}),s},C.prototype.filter=function(e,t){var o=this,i=[],n=[];return o.table.options.dataFiltering&&o.table.options.dataFiltering.call(o.table,o.getFilters()),o.table.options.ajaxFiltering||!o.filterList.length&&!Object.keys(o.headerFilters).length?i=e.slice(0):e.forEach(function(e){o.filterRow(e)&&i.push(e)}),o.table.options.dataFiltered&&(i.forEach(function(e){n.push(e.getComponent())}),o.table.options.dataFiltered.call(o.table,o.getFilters(),n)),i},C.prototype.filterRow=function(e,t){var o=this,i=!0,n=e.getData();o.filterList.forEach(function(e){o.filterRecurse(e,n)||(i=!1)});for(var s in o.headerFilters)o.headerFilters[s].func(n)||(i=!1);return i},C.prototype.filterRecurse=function(e,t){var o=this,i=!1;return Array.isArray(e)?e.forEach(function(e){o.filterRecurse(e,t)&&(i=!0)}):i=e.func(t),i},C.prototype.filters={"=":function(e,t,o,i){return t==e},"<":function(e,t,o,i){return t":function(e,t,o,i){return t>e},">=":function(e,t,o,i){return t>=e},"!=":function(e,t,o,i){return t!=e},regex:function(e,t,o,i){return"string"==typeof e&&(e=new RegExp(e)),e.test(t)},like:function(e,t,o,i){return null===e||void 0===e?t===e:void 0!==t&&null!==t&&String(t).toLowerCase().indexOf(e.toLowerCase())>-1},in:function(e,t,o,i){return Array.isArray(e)?e.indexOf(t)>-1:(console.warn("Filter Error - filter value is not an array:",e),!1)}},u.prototype.registerModule("filter",C);var x=function(e){this.table=e};x.prototype.initializeColumn=function(e){e.modules.format=this.lookupFormatter(e,""),void 0!==e.definition.formatterPrint&&(e.modules.format.print=this.lookupFormatter(e,"Print")),void 0!==e.definition.formatterClipboard&&(e.modules.format.clipboard=this.lookupFormatter(e,"Clipboard")),void 0!==e.definition.formatterHtmlOutput&&(e.modules.format.htmlOutput=this.lookupFormatter(e,"HtmlOutput"))},x.prototype.lookupFormatter=function(e,t){var o={params:e.definition["formatter"+t+"Params"]||{}},i=e.definition["formatter"+t];switch(void 0===i?"undefined":_typeof(i)){case"string":"tick"===i&&(i="tickCross",void 0===o.params.crossElement&&(o.params.crossElement=!1),console.warn("DEPRECATION WARNING - the tick formatter has been deprecated, please use the tickCross formatter with the crossElement param set to false")),this.formatters[i]?o.formatter=this.formatters[i]:(console.warn("Formatter Error - No such formatter found: ",i),o.formatter=this.formatters.plaintext);break;case"function":o.formatter=i;break;default:o.formatter=this.formatters.plaintext}return o},x.prototype.cellRendered=function(e){e.modules.format&&e.modules.format.renderedCallback&&e.modules.format.renderedCallback()},x.prototype.formatValue=function(e){function t(t){e.modules.format||(e.modules.format={}),e.modules.format.renderedCallback=t}var o=e.getComponent(),i="function"==typeof e.column.modules.format.params?e.column.modules.format.params(o):e.column.modules.format.params;return e.column.modules.format.formatter.call(this,o,i,t)},x.prototype.formatExportValue=function(e,t){var o,i=e.column.modules.format[t];if(i){var n=function(t){e.modules.format||(e.modules.format={}),e.modules.format.renderedCallback=t};return o="function"==typeof i.params?i.params(component):i.params,i.formatter.call(this,e.getComponent(),o,n)}return this.formatValue(e)},x.prototype.sanitizeHTML=function(e){if(e){var t={"&":"&","<":"<",">":">",'"':""","'":"'","/":"/","`":"`","=":"="};return String(e).replace(/[&<>"'`=\/]/g,function(e){return t[e]})}return e},x.prototype.emptyToSpace=function(e){return null===e||void 0===e?" ":e},x.prototype.getFormatter=function(e){var e;switch(void 0===e?"undefined":_typeof(e)){case"string":this.formatters[e]?e=this.formatters[e]:(console.warn("Formatter Error - No such formatter found: ",e),e=this.formatters.plaintext);break;case"function":e=e;break;default:e=this.formatters.plaintext}return e},x.prototype.formatters={plaintext:function(e,t,o){return this.emptyToSpace(this.sanitizeHTML(e.getValue()))},html:function(e,t,o){return e.getValue()},textarea:function(e,t,o){return e.getElement().style.whiteSpace="pre-wrap",this.emptyToSpace(this.sanitizeHTML(e.getValue()))},money:function(e,t,o){var i,n,s,r,a=parseFloat(e.getValue()),l=t.decimal||".",c=t.thousand||",",u=t.symbol||"",d=!!t.symbolAfter,h=void 0!==t.precision?t.precision:2;if(isNaN(a))return this.emptyToSpace(this.sanitizeHTML(e.getValue()));for(i=!1!==h?a.toFixed(h):a,i=String(i).split("."),n=i[0],s=i.length>1?l+i[1]:"",r=/(\d+)(\d{3})/;r.test(n);)n=n.replace(r,"$1"+c+"$2");return d?n+s+u:u+n+s},link:function(e,t,o){var i,n=e.getValue(),s=t.urlPrefix||"",r=t.download,a=n,l=document.createElement("a");if(t.labelField&&(i=e.getData(),a=i[t.labelField]),t.label)switch(_typeof(t.label)){case"string":a=t.label;break;case"function":a=t.label(e)}if(a){if(t.urlField&&(i=e.getData(),n=i[t.urlField]),t.url)switch(_typeof(t.url)){case"string":n=t.url;break;case"function":n=t.url(e)}return l.setAttribute("href",s+n),t.target&&l.setAttribute("target",t.target),t.download&&(r="function"==typeof r?r(e):!0===r?"":r,l.setAttribute("download",r)),l.innerHTML=this.emptyToSpace(this.sanitizeHTML(a)),l}return" "},image:function(e,t,o){var i=document.createElement("img");switch(i.setAttribute("src",e.getValue()),_typeof(t.height)){case"number":i.style.height=t.height+"px";break;case"string":i.style.height=t.height}switch(_typeof(t.width)){case"number":i.style.width=t.width+"px";break;case"string":i.style.width=t.width}return i.addEventListener("load",function(){e.getRow().normalizeHeight()}),i},tickCross:function(e,t,o){var i=e.getValue(),n=e.getElement(),s=t.allowEmpty,r=t.allowTruthy,a=void 0!==t.tickElement?t.tickElement:'',l=void 0!==t.crossElement?t.crossElement:'';return r&&i||!0===i||"true"===i||"True"===i||1===i||"1"===i?(n.setAttribute("aria-checked",!0),a||""):!s||"null"!==i&&""!==i&&null!==i&&void 0!==i?(n.setAttribute("aria-checked",!1),l||""):(n.setAttribute("aria-checked","mixed"),"")},datetime:function(e,t,o){var i=t.inputFormat||"YYYY-MM-DD hh:mm:ss",n=t.outputFormat||"DD/MM/YYYY hh:mm:ss",s=void 0!==t.invalidPlaceholder?t.invalidPlaceholder:"",r=e.getValue(),a=moment(r,i);return a.isValid()?a.format(n):!0===s?r:"function"==typeof s?s(r):s},datetimediff:function(e,t,o){var i=t.inputFormat||"YYYY-MM-DD hh:mm:ss",n=void 0!==t.invalidPlaceholder?t.invalidPlaceholder:"",s=void 0!==t.suffix&&t.suffix,r=void 0!==t.unit?t.unit:void 0,a=void 0!==t.humanize&&t.humanize,l=void 0!==t.date?t.date:moment(),c=e.getValue(),u=moment(c,i);return u.isValid()?a?moment.duration(u.diff(l)).humanize(s):u.diff(l,r)+(s?" "+s:""):!0===n?c:"function"==typeof n?n(c):n},lookup:function(e,t,o){var i=e.getValue();return void 0===t[i]?(console.warn("Missing display value for "+i),i):t[i]},star:function(e,t,o){var i=e.getValue(),n=e.getElement(),s=t&&t.stars?t.stars:5,r=document.createElement("span"),a=document.createElementNS("http://www.w3.org/2000/svg","svg");r.style.verticalAlign="middle",a.setAttribute("width","14"),a.setAttribute("height","14"),a.setAttribute("viewBox","0 0 512 512"),a.setAttribute("xml:space","preserve"),a.style.padding="0 1px",i=i&&!isNaN(i)?parseInt(i):0,i=Math.max(0,Math.min(i,s));for(var l=1;l<=s;l++){var c=a.cloneNode(!0);c.innerHTML=l<=i?'':'',r.appendChild(c)}return n.style.whiteSpace="nowrap",n.style.overflow="hidden",n.style.textOverflow="ellipsis",n.setAttribute("aria-label",i),r},traffic:function(e,t,o){var i,n,s=this.sanitizeHTML(e.getValue())||0,r=document.createElement("span"),a=t&&t.max?t.max:100,l=t&&t.min?t.min:0,c=t&&void 0!==t.color?t.color:["red","orange","green"],u="#666666";if(!isNaN(s)&&void 0!==e.getValue()){switch(r.classList.add("tabulator-traffic-light"),n=parseFloat(s)<=a?parseFloat(s):a,n=parseFloat(n)>=l?parseFloat(n):l,i=(a-l)/100,n=Math.round((n-l)/i),void 0===c?"undefined":_typeof(c)){case"string":u=c;break;case"function":u=c(s);break;case"object":if(Array.isArray(c)){var d=100/c.length,h=Math.floor(n/d);h=Math.min(h,c.length-1),h=Math.max(h,0),u=c[h];break}}return r.style.backgroundColor=u,r}},progress:function(e,t,o){var i,n,s,r,l,c=this.sanitizeHTML(e.getValue())||0,u=e.getElement(),d=t&&t.max?t.max:100,h=t&&t.min?t.min:0,p=t&&t.legendAlign?t.legendAlign:"center";switch(n=parseFloat(c)<=d?parseFloat(c):d,n=parseFloat(n)>=h?parseFloat(n):h,i=(d-h)/100,n=Math.round((n-h)/i),_typeof(t.color)){case"string":s=t.color;break;case"function":s=t.color(c);break;case"object":if(Array.isArray(t.color)){var m=100/t.color.length,f=Math.floor(n/m);f=Math.min(f,t.color.length-1),f=Math.max(f,0),s=t.color[f];break}default:s="#2DC214"}switch(_typeof(t.legend)){case"string":r=t.legend;break;case"function":r=t.legend(c);break;case"boolean":r=c;break;default:r=!1}switch(_typeof(t.legendColor)){case"string":l=t.legendColor;break;case"function":l=t.legendColor(c);break;case"object":if(Array.isArray(t.legendColor)){var m=100/t.legendColor.length,f=Math.floor(n/m);f=Math.min(f,t.legendColor.length-1),f=Math.max(f,0),l=t.legendColor[f]}break;default:l="#000"}u.style.minWidth="30px",u.style.position="relative",u.setAttribute("aria-label",n);var g=document.createElement("div");if(g.style.display="inline-block",g.style.position="relative",g.style.width=n+"%",g.style.backgroundColor=s,g.style.height="100%",g.setAttribute("data-max",d),g.setAttribute("data-min",h),r){var b=document.createElement("div");b.style.position="absolute",b.style.top="4px",b.style.left=0,b.style.textAlign=p,b.style.width="100%",b.style.color=l,b.innerHTML=r}return o(function(){if(!(e instanceof a)){var t=document.createElement("div");t.style.position="absolute",t.style.top="4px",t.style.bottom="4px",t.style.left="4px",t.style.right="4px",u.appendChild(t),u=t}u.appendChild(g),r&&u.appendChild(b)}),""},color:function(e,t,o){return e.getElement().style.backgroundColor=this.sanitizeHTML(e.getValue()),""},buttonTick:function(e,t,o){return''},buttonCross:function(e,t,o){return''},rownum:function(e,t,o){return this.table.rowManager.activeRows.indexOf(e.getRow()._getSelf())+1},handle:function(e,t,o){return e.getElement().classList.add("tabulator-row-handle"),"
"},responsiveCollapse:function(e,t,o){function i(e){var t=s.element;s.open=e,t&&(s.open?(n.classList.add("open"),t.style.display=""):(n.classList.remove("open"),t.style.display="none"))}var n=document.createElement("div"),s=e.getRow()._row.modules.responsiveLayout;return n.classList.add("tabulator-responsive-collapse-toggle"),n.innerHTML="+-",e.getElement().classList.add("tabulator-row-handle"),n.addEventListener("click",function(e){e.stopImmediatePropagation(),i(!s.open)}),i(s.open),n},rowSelection:function(e){var t=this,o=document.createElement("input");if(o.type="checkbox",this.table.modExists("selectRow",!0))if(o.addEventListener("click",function(e){e.stopPropagation()}),"function"==typeof e.getRow){var i=e.getRow();o.addEventListener("change",function(e){i.toggleSelect()}),o.checked=i.isSelected(),this.table.modules.selectRow.registerRowSelectCheckbox(i,o)}else o.addEventListener("change",function(e){t.table.modules.selectRow.selectedRows.length?t.table.deselectRow():t.table.selectRow()}),this.table.modules.selectRow.registerHeaderSelectCheckbox(o);return o}},u.prototype.registerModule("format",x);var R=function(e){this.table=e,this.leftColumns=[],this.rightColumns=[],this.leftMargin=0,this.rightMargin=0,this.rightPadding=0,this.initializationMode="left",this.active=!1,this.scrollEndTimer=!1};R.prototype.reset=function(){this.initializationMode="left",this.leftColumns=[],this.rightColumns=[],this.leftMargin=0,this.rightMargin=0,this.rightMargin=0,this.active=!1,this.table.columnManager.headersElement.style.marginLeft=0,this.table.columnManager.element.style.paddingRight=0},R.prototype.initializeColumn=function(e){var t={margin:0,edge:!1} -;e.isGroup||(this.frozenCheck(e)?(t.position=this.initializationMode,"left"==this.initializationMode?this.leftColumns.push(e):this.rightColumns.unshift(e),this.active=!0,e.modules.frozen=t):this.initializationMode="right")},R.prototype.frozenCheck=function(e){return e.parent.isGroup&&e.definition.frozen&&console.warn("Frozen Column Error - Parent column group must be frozen, not individual columns or sub column groups"),e.parent.isGroup?this.frozenCheck(e.parent):e.definition.frozen},R.prototype.scrollHorizontal=function(){var e,t=this;this.active&&(clearTimeout(this.scrollEndTimer),this.scrollEndTimer=setTimeout(function(){t.layout()},100),e=this.table.rowManager.getVisibleRows(),this.calcMargins(),this.layoutColumnPosition(),this.layoutCalcRows(),e.forEach(function(e){"row"===e.type&&t.layoutRow(e)}),this.table.rowManager.tableElement.style.marginRight=this.rightMargin)},R.prototype.calcMargins=function(){this.leftMargin=this._calcSpace(this.leftColumns,this.leftColumns.length)+"px",this.table.columnManager.headersElement.style.marginLeft=this.leftMargin,this.rightMargin=this._calcSpace(this.rightColumns,this.rightColumns.length)+"px",this.table.columnManager.element.style.paddingRight=this.rightMargin,this.rightPadding=this.table.rowManager.element.clientWidth+this.table.columnManager.scrollLeft},R.prototype.layoutCalcRows=function(){this.table.modExists("columnCalcs")&&(this.table.modules.columnCalcs.topInitialized&&this.table.modules.columnCalcs.topRow&&this.layoutRow(this.table.modules.columnCalcs.topRow),this.table.modules.columnCalcs.botInitialized&&this.table.modules.columnCalcs.botRow&&this.layoutRow(this.table.modules.columnCalcs.botRow))},R.prototype.layoutColumnPosition=function(e){var t=this,o=[];this.leftColumns.forEach(function(i,n){if(i.modules.frozen.margin=t._calcSpace(t.leftColumns,n)+t.table.columnManager.scrollLeft+"px",n==t.leftColumns.length-1?i.modules.frozen.edge=!0:i.modules.frozen.edge=!1,i.parent.isGroup){var s=t.getColGroupParentElement(i);o.includes(s)||(t.layoutElement(s,i),o.push(s)),i.modules.frozen.edge&&s.classList.add("tabulator-frozen-"+i.modules.frozen.position)}else t.layoutElement(i.getElement(),i);e&&i.cells.forEach(function(e){t.layoutElement(e.getElement(),i)})}),this.rightColumns.forEach(function(o,i){o.modules.frozen.margin=t.rightPadding-t._calcSpace(t.rightColumns,i+1)+"px",i==t.rightColumns.length-1?o.modules.frozen.edge=!0:o.modules.frozen.edge=!1,o.parent.isGroup?t.layoutElement(t.getColGroupParentElement(o),o):t.layoutElement(o.getElement(),o),e&&o.cells.forEach(function(e){t.layoutElement(e.getElement(),o)})})},R.prototype.getColGroupParentElement=function(e){return e.parent.isGroup?this.getColGroupParentElement(e.parent):e.getElement()},R.prototype.layout=function(){var e=this;e.active&&(this.calcMargins(),e.table.rowManager.getDisplayRows().forEach(function(t){"row"===t.type&&e.layoutRow(t)}),this.layoutCalcRows(),this.layoutColumnPosition(!0),this.table.rowManager.tableElement.style.marginRight=this.rightMargin)},R.prototype.layoutRow=function(e){var t=this;e.getElement().style.paddingLeft=this.leftMargin,this.leftColumns.forEach(function(o){var i=e.getCell(o);i&&t.layoutElement(i.getElement(),o)}),this.rightColumns.forEach(function(o){var i=e.getCell(o);i&&t.layoutElement(i.getElement(),o)})},R.prototype.layoutElement=function(e,t){t.modules.frozen&&(e.style.position="absolute",e.style.left=t.modules.frozen.margin,e.classList.add("tabulator-frozen"),t.modules.frozen.edge&&e.classList.add("tabulator-frozen-"+t.modules.frozen.position))},R.prototype._calcSpace=function(e,t){for(var o=0,i=0;i-1&&t.splice(o,1)}),t},M.prototype.freezeRow=function(e){e.modules.frozen?console.warn("Freeze Error - Row is already frozen"):(e.modules.frozen=!0,this.topElement.appendChild(e.getElement()),e.initialize(),e.normalizeHeight(),this.table.rowManager.adjustTableSize(),this.rows.push(e),this.table.rowManager.refreshActiveData("display"),this.styleRows())},M.prototype.unfreezeRow=function(e){var t=this.rows.indexOf(e);if(e.modules.frozen){e.modules.frozen=!1;var o=e.getElement();o.parentNode.removeChild(o),this.table.rowManager.adjustTableSize(),this.rows.splice(t,1),this.table.rowManager.refreshActiveData("display"),this.rows.length&&this.styleRows()}else console.warn("Freeze Error - Row is already unfrozen")},M.prototype.styleRows=function(e){var t=this;this.rows.forEach(function(e,o){t.table.rowManager.styleRow(e,o)})},u.prototype.registerModule("frozenRows",M);var L=function(e){this._group=e,this.type="GroupComponent"};L.prototype.getKey=function(){return this._group.key},L.prototype.getField=function(){return this._group.field},L.prototype.getElement=function(){return this._group.element},L.prototype.getRows=function(){return this._group.getRows(!0)},L.prototype.getSubGroups=function(){return this._group.getSubGroups(!0)},L.prototype.getParentGroup=function(){return!!this._group.parent&&this._group.parent.getComponent()},L.prototype.getVisibility=function(){return this._group.visible},L.prototype.show=function(){this._group.show()},L.prototype.hide=function(){this._group.hide()},L.prototype.toggle=function(){this._group.toggleVisibility()},L.prototype._getSelf=function(){return this._group},L.prototype.getTable=function(){return this._group.groupManager.table};var D=function(e,t,o,i,n,s,r){this.groupManager=e,this.parent=t,this.key=i,this.level=o,this.field=n,this.hasSubGroups=o-1?o?this.rows.splice(n+1,0,e):this.rows.splice(n,0,e):o?this.rows.push(e):this.rows.unshift(e),e.modules.group=this,this.generateGroupHeaderContents(),this.groupManager.table.modExists("columnCalcs")&&"table"!=this.groupManager.table.options.columnCalcs&&this.groupManager.table.modules.columnCalcs.recalcGroup(this),this.groupManager.updateGroupRows(!0)},D.prototype.scrollHeader=function(e){this.arrowElement.style.marginLeft=e,this.groupList.forEach(function(t){t.scrollHeader(e)})},D.prototype.getRowIndex=function(e){},D.prototype.conformRowData=function(e){return this.field?e[this.field]=this.key:console.warn("Data Conforming Error - Cannot conform row data to match new group as groupBy is a function"),this.parent&&(e=this.parent.conformRowData(e)),e},D.prototype.removeRow=function(e){var t=this.rows.indexOf(e),o=e.getElement();t>-1&&this.rows.splice(t,1),this.groupManager.table.options.groupValues||this.rows.length?(o.parentNode&&o.parentNode.removeChild(o),this.generateGroupHeaderContents(),this.groupManager.table.modExists("columnCalcs")&&"table"!=this.groupManager.table.options.columnCalcs&&this.groupManager.table.modules.columnCalcs.recalcGroup(this)):(this.parent?this.parent.removeGroup(this):this.groupManager.removeGroup(this),this.groupManager.updateGroupRows(!0))},D.prototype.removeGroup=function(e){var t,o=e.level+"_"+e.key;this.groups[o]&&(delete this.groups[o],t=this.groupList.indexOf(e),t>-1&&this.groupList.splice(t,1),this.groupList.length||(this.parent?this.parent.removeGroup(this):this.groupManager.removeGroup(this)))},D.prototype.getHeadersAndRows=function(e){var t=[];return t.push(this),this._visSet(),this.visible?this.groupList.length?this.groupList.forEach(function(o){t=t.concat(o.getHeadersAndRows(e))}):(!e&&"table"!=this.groupManager.table.options.columnCalcs&&this.groupManager.table.modExists("columnCalcs")&&this.groupManager.table.modules.columnCalcs.hasTopCalcs()&&(this.calcs.top&&(this.calcs.top.detachElement(),this.calcs.top.deleteCells()),this.calcs.top=this.groupManager.table.modules.columnCalcs.generateTopRow(this.rows),t.push(this.calcs.top)),t=t.concat(this.rows),!e&&"table"!=this.groupManager.table.options.columnCalcs&&this.groupManager.table.modExists("columnCalcs")&&this.groupManager.table.modules.columnCalcs.hasBottomCalcs()&&(this.calcs.bottom&&(this.calcs.bottom.detachElement(),this.calcs.bottom.deleteCells()),this.calcs.bottom=this.groupManager.table.modules.columnCalcs.generateBottomRow(this.rows),t.push(this.calcs.bottom))):this.groupList.length||"table"==this.groupManager.table.options.columnCalcs||this.groupManager.table.modExists("columnCalcs")&&(!e&&this.groupManager.table.modules.columnCalcs.hasTopCalcs()&&(this.calcs.top&&(this.calcs.top.detachElement(),this.calcs.top.deleteCells()),this.groupManager.table.options.groupClosedShowCalcs&&(this.calcs.top=this.groupManager.table.modules.columnCalcs.generateTopRow(this.rows),t.push(this.calcs.top))),!e&&this.groupManager.table.modules.columnCalcs.hasBottomCalcs()&&(this.calcs.bottom&&(this.calcs.bottom.detachElement(),this.calcs.bottom.deleteCells()),this.groupManager.table.options.groupClosedShowCalcs&&(this.calcs.bottom=this.groupManager.table.modules.columnCalcs.generateBottomRow(this.rows),t.push(this.calcs.bottom)))),t},D.prototype.getData=function(e,t){var o=[];return this._visSet(),(!e||e&&this.visible)&&this.rows.forEach(function(e){o.push(e.getData(t||"data"))}),o},D.prototype.getRowCount=function(){var e=0;return this.groupList.length?this.groupList.forEach(function(t){e+=t.getRowCount()}):e=this.rows.length,e},D.prototype.toggleVisibility=function(){this.visible?this.hide():this.show()},D.prototype.hide=function(){this.visible=!1,"classic"!=this.groupManager.table.rowManager.getRenderMode()||this.groupManager.table.options.pagination?this.groupManager.updateGroupRows(!0):(this.element.classList.remove("tabulator-group-visible"),this.groupList.length?this.groupList.forEach(function(e){e.getHeadersAndRows().forEach(function(e){e.detachElement()})}):this.rows.forEach(function(e){var t=e.getElement();t.parentNode.removeChild(t)}),this.groupManager.table.rowManager.setDisplayRows(this.groupManager.updateGroupRows(),this.groupManager.getDisplayIndex()),this.groupManager.table.rowManager.checkClassicModeGroupHeaderWidth()),this.groupManager.table.options.groupVisibilityChanged.call(this.table,this.getComponent(),!1)},D.prototype.show=function(){var e=this;if(e.visible=!0,"classic"!=this.groupManager.table.rowManager.getRenderMode()||this.groupManager.table.options.pagination)this.groupManager.updateGroupRows(!0);else{this.element.classList.add("tabulator-group-visible");var t=e.getElement();this.groupList.length?this.groupList.forEach(function(e){e.getHeadersAndRows().forEach(function(e){var o=e.getElement();t.parentNode.insertBefore(o,t.nextSibling),e.initialize(),t=o})}):e.rows.forEach(function(e){var o=e.getElement();t.parentNode.insertBefore(o,t.nextSibling),e.initialize(),t=o}),this.groupManager.table.rowManager.setDisplayRows(this.groupManager.updateGroupRows(),this.groupManager.getDisplayIndex()),this.groupManager.table.rowManager.checkClassicModeGroupHeaderWidth()}this.groupManager.table.options.groupVisibilityChanged.call(this.table,this.getComponent(),!0)},D.prototype._visSet=function(){var e=[];"function"==typeof this.visible&&(this.rows.forEach(function(t){e.push(t.getData())}),this.visible=this.visible(this.key,this.getRowCount(),e,this.getComponent()))},D.prototype.getRowGroup=function(e){var t=!1;return this.groupList.length?this.groupList.forEach(function(o){var i=o.getRowGroup(e);i&&(t=i)}):this.rows.find(function(t){return t===e})&&(t=this),t},D.prototype.getSubGroups=function(e){var t=[];return this.groupList.forEach(function(o){t.push(e?o.getComponent():o)}),t},D.prototype.getRows=function(e){var t=[];return this.rows.forEach(function(o){t.push(e?o.getComponent():o)}),t},D.prototype.generateGroupHeaderContents=function(){var e=[];for(this.rows.forEach(function(t){e.push(t.getData())}),this.elementContents=this.generator(this.key,this.getRowCount(),e,this.getComponent());this.element.firstChild;)this.element.removeChild(this.element.firstChild);"string"==typeof this.elementContents?this.element.innerHTML=this.elementContents:this.element.appendChild(this.elementContents),this.element.insertBefore(this.arrowElement,this.element.firstChild)},D.prototype.getElement=function(){this.addBindingsd=!1,this._visSet(),this.visible?this.element.classList.add("tabulator-group-visible"):this.element.classList.remove("tabulator-group-visible");for(var e=0;ei.length&&console.warn("Error creating group headers, groupHeader array is shorter than groupBy array"),e.headerGenerator=[function(){return""}],this.startOpen=[function(){return!1}],e.table.modules.localize.bind("groups|item",function(t,o){e.headerGenerator[0]=function(e,i,n){return(void 0===e?"":e)+"("+i+" "+(1===i?t:o.groups.items)+")"}}),this.groupIDLookups=[],Array.isArray(t)||t)this.table.modExists("columnCalcs")&&"table"!=this.table.options.columnCalcs&&"both"!=this.table.options.columnCalcs&&this.table.modules.columnCalcs.removeCalcs();else if(this.table.modExists("columnCalcs")&&"group"!=this.table.options.columnCalcs){var n=this.table.columnManager.getRealColumns();n.forEach(function(t){t.definition.topCalc&&e.table.modules.columnCalcs.initializeTopRow(),t.definition.bottomCalc&&e.table.modules.columnCalcs.initializeBottomRow()})}Array.isArray(t)||(t=[t]),t.forEach(function(t,o){var i,n;"function"==typeof t?i=t:(n=e.table.columnManager.getColumnByField(t),i=n?function(e){return n.getFieldValue(e)}:function(e){return e[t]}),e.groupIDLookups.push({field:"function"!=typeof t&&t,func:i,values:!!e.allowedValues&&e.allowedValues[o]})}),o&&(Array.isArray(o)||(o=[o]),o.forEach(function(e){e="function"==typeof e?e:function(){return!0}}),e.startOpen=o),i&&(e.headerGenerator=Array.isArray(i)?i:[i]),this.initialized=!0},T.prototype.setDisplayIndex=function(e){this.displayIndex=e},T.prototype.getDisplayIndex=function(){return this.displayIndex},T.prototype.getRows=function(e){return this.groupIDLookups.length?(this.table.options.dataGrouping.call(this.table),this.generateGroups(e),this.table.options.dataGrouped&&this.table.options.dataGrouped.call(this.table,this.getGroups(!0)),this.updateGroupRows()):e.slice(0)},T.prototype.getGroups=function(e){var t=[];return this.groupList.forEach(function(o){t.push(e?o.getComponent():o)}),t},T.prototype.getChildGroups=function(e){var t=this,o=[];return e||(e=this),e.groupList.forEach(function(e){e.groupList.length?o=o.concat(t.getChildGroups(e)):o.push(e)}),o},T.prototype.wipe=function(){this.groupList.forEach(function(e){e.wipe()})},T.prototype.pullGroupListData=function(e){var t=this,o=[];return e.forEach(function(e){var i={};i.level=0,i.rowCount=0,i.headerContent="";var n=[];e.hasSubGroups?(n=t.pullGroupListData(e.groupList),i.level=e.level,i.rowCount=n.length-e.groupList.length,i.headerContent=e.generator(e.key,i.rowCount,e.rows,e),o.push(i),o=o.concat(n)):(i.level=e.level,i.headerContent=e.generator(e.key,e.rows.length,e.rows,e),i.rowCount=e.getRows().length,o.push(i),e.getRows().forEach(function(e){o.push(e.getData("data"))}))}),o},T.prototype.getGroupedData=function(){return this.pullGroupListData(this.groupList)},T.prototype.getRowGroup=function(e){var t=!1;return this.groupList.forEach(function(o){var i=o.getRowGroup(e);i&&(t=i)}),t},T.prototype.countGroups=function(){return this.groupList.length},T.prototype.generateGroups=function(e){var t=this,o=t.groups;t.groups={},t.groupList=[],this.allowedValues&&this.allowedValues[0]?(this.allowedValues[0].forEach(function(e){t.createGroup(e,0,o)}),e.forEach(function(e){t.assignRowToExistingGroup(e,o)})):e.forEach(function(e){t.assignRowToGroup(e,o)})},T.prototype.createGroup=function(e,t,o){var i,n=t+"_"+e;o=o||[],i=new D(this,!1,t,e,this.groupIDLookups[0].field,this.headerGenerator[0],o[n]),this.groups[n]=i,this.groupList.push(i)},T.prototype.assignRowToExistingGroup=function(e,t){var o=this.groupIDLookups[0].func(e.getData()),i="0_"+o;this.groups[i]&&this.groups[i].addRow(e)},T.prototype.assignRowToGroup=function(e,t){var o=this.groupIDLookups[0].func(e.getData()),i=!this.groups["0_"+o];return i&&this.createGroup(o,0,t),this.groups["0_"+o].addRow(e),!i},T.prototype.updateGroupRows=function(e){var t=this,o=[];if(t.groupList.forEach(function(e){o=o.concat(e.getHeadersAndRows())}),e){var i=t.table.rowManager.setDisplayRows(o,this.getDisplayIndex());!0!==i&&this.setDisplayIndex(i),t.table.rowManager.refreshActiveData("group",!0,!0)}return o},T.prototype.scrollHeaders=function(e){e+="px",this.groupList.forEach(function(t){t.scrollHeader(e)})},T.prototype.removeGroup=function(e){var t,o=e.level+"_"+e.key;this.groups[o]&&(delete this.groups[o],(t=this.groupList.indexOf(e))>-1&&this.groupList.splice(t,1))},u.prototype.registerModule("groupRows",T);var k=function(e){this.table=e,this.history=[],this.index=-1};k.prototype.clear=function(){this.history=[],this.index=-1},k.prototype.action=function(e,t,o){this.history=this.history.slice(0,this.index+1),this.history.push({type:e,component:t,data:o}),this.index++},k.prototype.getHistoryUndoSize=function(){return this.index+1},k.prototype.getHistoryRedoSize=function(){return this.history.length-(this.index+1)},k.prototype.undo=function(){if(this.index>-1){var e=this.history[this.index];return this.undoers[e.type].call(this,e),this.index--,this.table.options.historyUndo.call(this.table,e.type,e.component.getComponent(),e.data),!0}return console.warn("History Undo Error - No more history to undo"),!1},k.prototype.redo=function(){if(this.history.length-1>this.index){this.index++;var e=this.history[this.index];return this.redoers[e.type].call(this,e),this.table.options.historyRedo.call(this.table,e.type,e.component.getComponent(),e.data),!0}return console.warn("History Redo Error - No more history to redo"),!1},k.prototype.undoers={cellEdit:function(e){e.component.setValueProcessData(e.data.oldValue)},rowAdd:function(e){e.component.deleteActual()},rowDelete:function(e){var t=this.table.rowManager.addRowActual(e.data.data,e.data.pos,e.data.index);this.table.options.groupBy&&this.table.modExists("groupRows")&&this.table.modules.groupRows.updateGroupRows(!0),this._rebindRow(e.component,t)},rowMove:function(e){this.table.rowManager.moveRowActual(e.component,this.table.rowManager.rows[e.data.posFrom],!e.data.after),this.table.rowManager.redraw()}},k.prototype.redoers={cellEdit:function(e){e.component.setValueProcessData(e.data.newValue)},rowAdd:function(e){var t=this.table.rowManager.addRowActual(e.data.data,e.data.pos,e.data.index);this.table.options.groupBy&&this.table.modExists("groupRows")&&this.table.modules.groupRows.updateGroupRows(!0),this._rebindRow(e.component,t)},rowDelete:function(e){e.component.deleteActual()},rowMove:function(e){this.table.rowManager.moveRowActual(e.component,this.table.rowManager.rows[e.data.posTo],e.data.after),this.table.rowManager.redraw()}},k.prototype._rebindRow=function(e,t){this.history.forEach(function(o){if(o.component instanceof r)o.component===e&&(o.component=t);else if(o.component instanceof l&&o.component.row===e){var i=o.component.column.getField();i&&(o.component=t.getCell(i))}})},u.prototype.registerModule("history",k);var S=function(e){this.table=e,this.fieldIndex=[],this.hasIndex=!1};S.prototype.parseTable=function(){var e=this,t=e.table.element,o=e.table.options,i=(o.columns,t.getElementsByTagName("th")),n=t.getElementsByTagName("tbody")[0],s=[];e.hasIndex=!1,e.table.options.htmlImporting.call(this.table),n=n?n.getElementsByTagName("tr"):[],e._extractOptions(t,o),i.length?e._extractHeaders(i,n):e._generateBlankHeaders(i,n);for(var r=0;r-1&&e.pressedKeys.splice(i,1)}},this.table.element.addEventListener("keydown",this.keyupBinding),this.table.element.addEventListener("keyup",this.keydownBinding)},z.prototype.clearBindings=function(){this.keyupBinding&&this.table.element.removeEventListener("keydown",this.keyupBinding),this.keydownBinding&&this.table.element.removeEventListener("keyup",this.keydownBinding)},z.prototype.checkBinding=function(e,t){var o=this,i=!0;return e.ctrlKey==t.ctrl&&e.shiftKey==t.shift&&e.metaKey==t.meta&&(t.keys.forEach(function(e){-1==o.pressedKeys.indexOf(e)&&(i=!1)}),i&&t.action.call(o,e),!0)},z.prototype.bindings={navPrev:"shift + 9",navNext:9,navUp:38,navDown:40,scrollPageUp:33,scrollPageDown:34,scrollToStart:36,scrollToEnd:35,undo:"ctrl + 90",redo:"ctrl + 89",copyToClipboard:"ctrl + 67"},z.prototype.actions={keyBlock:function(e){e.stopPropagation(),e.preventDefault()},scrollPageUp:function(e){var t=this.table.rowManager,o=t.scrollTop-t.height;t.element.scrollHeight;e.preventDefault(),t.displayRowsCount&&(o>=0?t.element.scrollTop=o:t.scrollToRow(t.getDisplayRows()[0])),this.table.element.focus()},scrollPageDown:function(e){var t=this.table.rowManager,o=t.scrollTop+t.height,i=t.element.scrollHeight;e.preventDefault(),t.displayRowsCount&&(o<=i?t.element.scrollTop=o:t.scrollToRow(t.getDisplayRows()[t.displayRowsCount-1])),this.table.element.focus()},scrollToStart:function(e){var t=this.table.rowManager;e.preventDefault(),t.displayRowsCount&&t.scrollToRow(t.getDisplayRows()[0]),this.table.element.focus()},scrollToEnd:function(e){var t=this.table.rowManager;e.preventDefault(),t.displayRowsCount&&t.scrollToRow(t.getDisplayRows()[t.displayRowsCount-1]),this.table.element.focus()},navPrev:function(e){var t=!1;this.table.modExists("edit")&&(t=this.table.modules.edit.currentCell)&&(e.preventDefault(),t.nav().prev())},navNext:function(e){var t,o=!1,i=this.table.options.tabEndNewRow;this.table.modExists("edit")&&(o=this.table.modules.edit.currentCell)&&(e.preventDefault(),t=o.nav(),t.next()||i&&(o.getElement().firstChild.blur(),i=!0===i?this.table.addRow({}):"function"==typeof i?this.table.addRow(i(o.row.getComponent())):this.table.addRow(i),i.then(function(){setTimeout(function(){t.next()})})))},navLeft:function(e){var t=!1;this.table.modExists("edit")&&(t=this.table.modules.edit.currentCell)&&(e.preventDefault(),t.nav().left())},navRight:function(e){var t=!1;this.table.modExists("edit")&&(t=this.table.modules.edit.currentCell)&&(e.preventDefault(),t.nav().right())},navUp:function(e){var t=!1;this.table.modExists("edit")&&(t=this.table.modules.edit.currentCell)&&(e.preventDefault(),t.nav().up())},navDown:function(e){var t=!1;this.table.modExists("edit")&&(t=this.table.modules.edit.currentCell)&&(e.preventDefault(),t.nav().down())},undo:function(e){this.table.options.history&&this.table.modExists("history")&&this.table.modExists("edit")&&(this.table.modules.edit.currentCell||(e.preventDefault(),this.table.modules.history.undo()))},redo:function(e){this.table.options.history&&this.table.modExists("history")&&this.table.modExists("edit")&&(this.table.modules.edit.currentCell||(e.preventDefault(),this.table.modules.history.redo()))},copyToClipboard:function(e){this.table.modules.edit.currentCell||this.table.modExists("clipboard",!0)&&this.table.modules.clipboard.copy(!1,!0)}},u.prototype.registerModule("keybindings",z);var F=function(e){this.table=e,this.menuEl=!1,this.blurEvent=this.hideMenu.bind(this)};F.prototype.initializeColumnHeader=function(e){var t,o=this;e.definition.headerContextMenu&&e.getElement().addEventListener("contextmenu",function(t){ -var i="function"==typeof e.definition.headerContextMenu?e.definition.headerContextMenu():e.definition.headerContextMenu;t.preventDefault(),o.loadMenu(t,e,i)}),e.definition.headerMenu&&(t=document.createElement("span"),t.classList.add("tabulator-header-menu-button"),t.innerHTML="⋮",t.addEventListener("click",function(t){var i="function"==typeof e.definition.headerMenu?e.definition.headerMenu():e.definition.headerMenu;t.stopPropagation(),t.preventDefault(),o.loadMenu(t,e,i)}),e.titleElement.insertBefore(t,e.titleElement.firstChild))},F.prototype.initializeCell=function(e){var t=this;e.getElement().addEventListener("contextmenu",function(o){var i="function"==typeof e.column.definition.contextMenu?e.column.definition.contextMenu():e.column.definition.contextMenu;o.preventDefault(),t.loadMenu(o,e,i)})},F.prototype.initializeRow=function(e){var t=this;e.getElement().addEventListener("contextmenu",function(o){var i="function"==typeof t.table.options.rowContextMenu?t.table.options.rowContextMenu():t.table.options.rowContextMenu;o.preventDefault(),t.loadMenu(o,e,i)})},F.prototype.loadMenu=function(e,t,o){var i=this,n=document.body.offsetHeight;o&&o.length&&(this.hideMenu(),this.menuEl=document.createElement("div"),this.menuEl.classList.add("tabulator-menu"),o.forEach(function(e){var o=document.createElement("div"),n=e.label,s=e.disabled;e.separator?o.classList.add("tabulator-menu-separator"):(o.classList.add("tabulator-menu-item"),"function"==typeof n&&(n=n(t.getComponent())),n instanceof Node?o.appendChild(n):o.innerHTML=n,"function"==typeof s&&(s=s(t.getComponent())),s?(o.classList.add("tabulator-menu-item-disabled"),o.addEventListener("click",function(e){e.stopPropagation()})):o.addEventListener("click",function(o){i.hideMenu(),e.action(o,t.getComponent())})),i.menuEl.appendChild(o)}),this.menuEl.style.top=e.pageY+"px",this.menuEl.style.left=e.pageX+"px",document.body.addEventListener("click",this.blurEvent),this.table.rowManager.element.addEventListener("scroll",this.blurEvent),setTimeout(function(){document.body.addEventListener("contextmenu",i.blurEvent)},100),document.body.appendChild(this.menuEl),e.pageX+this.menuEl.offsetWidth>=document.body.offsetWidth&&(this.menuEl.style.left="",this.menuEl.style.right=document.body.offsetWidth-e.pageX+"px"),e.pageY+this.menuEl.offsetHeight>=n&&(this.menuEl.style.top="",this.menuEl.style.bottom=n-e.pageY+"px"))},F.prototype.hideMenu=function(){this.menuEl.parentNode&&this.menuEl.parentNode.removeChild(this.menuEl),this.blurEvent&&(document.body.removeEventListener("click",this.blurEvent),document.body.removeEventListener("contextmenu",this.blurEvent),this.table.rowManager.element.removeEventListener("scroll",this.blurEvent))},F.prototype.menus={},u.prototype.registerModule("menu",F);var H=function(e){this.table=e,this.placeholderElement=this.createPlaceholderElement(),this.hoverElement=!1,this.checkTimeout=!1,this.checkPeriod=250,this.moving=!1,this.toCol=!1,this.toColAfter=!1,this.startX=0,this.autoScrollMargin=40,this.autoScrollStep=5,this.autoScrollTimeout=!1,this.touchMove=!1,this.moveHover=this.moveHover.bind(this),this.endMove=this.endMove.bind(this)};H.prototype.createPlaceholderElement=function(){var e=document.createElement("div");return e.classList.add("tabulator-col"),e.classList.add("tabulator-col-placeholder"),e},H.prototype.initializeColumn=function(e){var t,o=this,i={};e.modules.frozen||(t=e.getElement(),i.mousemove=function(i){e.parent===o.moving.parent&&((o.touchMove?i.touches[0].pageX:i.pageX)-u.prototype.helpers.elOffset(t).left+o.table.columnManager.element.scrollLeft>e.getWidth()/2?o.toCol===e&&o.toColAfter||(t.parentNode.insertBefore(o.placeholderElement,t.nextSibling),o.moveColumn(e,!0)):(o.toCol!==e||o.toColAfter)&&(t.parentNode.insertBefore(o.placeholderElement,t),o.moveColumn(e,!1)))}.bind(o),t.addEventListener("mousedown",function(t){o.touchMove=!1,1===t.which&&(o.checkTimeout=setTimeout(function(){o.startMove(t,e)},o.checkPeriod))}),t.addEventListener("mouseup",function(e){1===e.which&&o.checkTimeout&&clearTimeout(o.checkTimeout)}),o.bindTouchEvents(e)),e.modules.moveColumn=i},H.prototype.bindTouchEvents=function(e){var t,o,i,n,s,r,a,l=this,c=e.getElement(),u=!1;c.addEventListener("touchstart",function(c){l.checkTimeout=setTimeout(function(){l.touchMove=!0,t=e,o=e.nextColumn(),n=o?o.getWidth()/2:0,i=e.prevColumn(),s=i?i.getWidth()/2:0,r=0,a=0,u=!1,l.startMove(c,e)},l.checkPeriod)},{passive:!0}),c.addEventListener("touchmove",function(c){var d,h;l.moving&&(l.moveHover(c),u||(u=c.touches[0].pageX),d=c.touches[0].pageX-u,d>0?o&&d-r>n&&(h=o)!==e&&(u=c.touches[0].pageX,h.getElement().parentNode.insertBefore(l.placeholderElement,h.getElement().nextSibling),l.moveColumn(h,!0)):i&&-d-a>s&&(h=i)!==e&&(u=c.touches[0].pageX,h.getElement().parentNode.insertBefore(l.placeholderElement,h.getElement()),l.moveColumn(h,!1)),h&&(t=h,o=h.nextColumn(),r=n,n=o?o.getWidth()/2:0,i=h.prevColumn(),a=s,s=i?i.getWidth()/2:0))},{passive:!0}),c.addEventListener("touchend",function(e){l.checkTimeout&&clearTimeout(l.checkTimeout),l.moving&&l.endMove(e)})},H.prototype.startMove=function(e,t){var o=t.getElement();this.moving=t,this.startX=(this.touchMove?e.touches[0].pageX:e.pageX)-u.prototype.helpers.elOffset(o).left,this.table.element.classList.add("tabulator-block-select"),this.placeholderElement.style.width=t.getWidth()+"px",this.placeholderElement.style.height=t.getHeight()+"px",o.parentNode.insertBefore(this.placeholderElement,o),o.parentNode.removeChild(o),this.hoverElement=o.cloneNode(!0),this.hoverElement.classList.add("tabulator-moving"),this.table.columnManager.getElement().appendChild(this.hoverElement),this.hoverElement.style.left="0",this.hoverElement.style.bottom="0",this.touchMove||(this._bindMouseMove(),document.body.addEventListener("mousemove",this.moveHover),document.body.addEventListener("mouseup",this.endMove)),this.moveHover(e)},H.prototype._bindMouseMove=function(){this.table.columnManager.columnsByIndex.forEach(function(e){e.modules.moveColumn.mousemove&&e.getElement().addEventListener("mousemove",e.modules.moveColumn.mousemove)})},H.prototype._unbindMouseMove=function(){this.table.columnManager.columnsByIndex.forEach(function(e){e.modules.moveColumn.mousemove&&e.getElement().removeEventListener("mousemove",e.modules.moveColumn.mousemove)})},H.prototype.moveColumn=function(e,t){var o=this.moving.getCells();this.toCol=e,this.toColAfter=t,t?e.getCells().forEach(function(e,t){var i=e.getElement();i.parentNode.insertBefore(o[t].getElement(),i.nextSibling)}):e.getCells().forEach(function(e,t){var i=e.getElement();i.parentNode.insertBefore(o[t].getElement(),i)})},H.prototype.endMove=function(e){(1===e.which||this.touchMove)&&(this._unbindMouseMove(),this.placeholderElement.parentNode.insertBefore(this.moving.getElement(),this.placeholderElement.nextSibling),this.placeholderElement.parentNode.removeChild(this.placeholderElement),this.hoverElement.parentNode.removeChild(this.hoverElement),this.table.element.classList.remove("tabulator-block-select"),this.toCol&&this.table.columnManager.moveColumnActual(this.moving,this.toCol,this.toColAfter),this.moving=!1,this.toCol=!1,this.toColAfter=!1,this.touchMove||(document.body.removeEventListener("mousemove",this.moveHover),document.body.removeEventListener("mouseup",this.endMove)))},H.prototype.moveHover=function(e){var t,o=this,i=o.table.columnManager.getElement(),n=i.scrollLeft,s=(o.touchMove?e.touches[0].pageX:e.pageX)-u.prototype.helpers.elOffset(i).left+n;o.hoverElement.style.left=s-o.startX+"px",s-ne.getHeight()/2){if(t.toRow!==e||!t.toRowAfter){var i=e.getElement();i.parentNode.insertBefore(t.placeholderElement,i.nextSibling),t.moveRow(e,!0)}}else if(t.toRow!==e||t.toRowAfter){var i=e.getElement();i.previousSibling&&(i.parentNode.insertBefore(t.placeholderElement,i),t.moveRow(e,!1))}}.bind(t),e.modules.moveRow=o},A.prototype.initializeRow=function(e){var t,o=this,i={};i.mouseup=function(t){o.tableRowDrop(t,e)}.bind(o),i.mousemove=function(t){if(t.pageY-u.prototype.helpers.elOffset(e.element).top+o.table.rowManager.element.scrollTop>e.getHeight()/2){if(o.toRow!==e||!o.toRowAfter){var i=e.getElement();i.parentNode.insertBefore(o.placeholderElement,i.nextSibling),o.moveRow(e,!0)}}else if(o.toRow!==e||o.toRowAfter){var i=e.getElement();i.parentNode.insertBefore(o.placeholderElement,i),o.moveRow(e,!1)}}.bind(o),this.hasHandle||(t=e.getElement(),t.addEventListener("mousedown",function(t){1===t.which&&(o.checkTimeout=setTimeout(function(){o.startMove(t,e)},o.checkPeriod))}),t.addEventListener("mouseup",function(e){1===e.which&&o.checkTimeout&&clearTimeout(o.checkTimeout)}),this.bindTouchEvents(e,e.getElement())),e.modules.moveRow=i},A.prototype.initializeCell=function(e){var t=this,o=e.getElement();o.addEventListener("mousedown",function(o){1===o.which&&(t.checkTimeout=setTimeout(function(){t.startMove(o,e.row)},t.checkPeriod))}),o.addEventListener("mouseup",function(e){1===e.which&&t.checkTimeout&&clearTimeout(t.checkTimeout)}),this.bindTouchEvents(e.row,e.getElement())},A.prototype.bindTouchEvents=function(e,t){var o,i,n,s,r,a,l,c=this,u=!1;t.addEventListener("touchstart",function(t){c.checkTimeout=setTimeout(function(){c.touchMove=!0,o=e,i=e.nextRow(),s=i?i.getHeight()/2:0,n=e.prevRow(),r=n?n.getHeight()/2:0,a=0,l=0,u=!1,c.startMove(t,e)},c.checkPeriod)},{passive:!0}),this.moving,this.toRow,this.toRowAfter,t.addEventListener("touchmove",function(t){var d,h;c.moving&&(t.preventDefault(),c.moveHover(t),u||(u=t.touches[0].pageY),d=t.touches[0].pageY-u,d>0?i&&d-a>s&&(h=i)!==e&&(u=t.touches[0].pageY,h.getElement().parentNode.insertBefore(c.placeholderElement,h.getElement().nextSibling),c.moveRow(h,!0)):n&&-d-l>r&&(h=n)!==e&&(u=t.touches[0].pageY,h.getElement().parentNode.insertBefore(c.placeholderElement,h.getElement()),c.moveRow(h,!1)),h&&(o=h,i=h.nextRow(),a=s,s=i?i.getHeight()/2:0,n=h.prevRow(),l=r,r=n?n.getHeight()/2:0))}),t.addEventListener("touchend",function(e){c.checkTimeout&&clearTimeout(c.checkTimeout),c.moving&&(c.endMove(e),c.touchMove=!1)})},A.prototype._bindMouseMove=function(){this.table.rowManager.getDisplayRows().forEach(function(e){"row"!==e.type&&"group"!==e.type||!e.modules.moveRow.mousemove||e.getElement().addEventListener("mousemove",e.modules.moveRow.mousemove)})},A.prototype._unbindMouseMove=function(){this.table.rowManager.getDisplayRows().forEach(function(e){"row"!==e.type&&"group"!==e.type||!e.modules.moveRow.mousemove||e.getElement().removeEventListener("mousemove",e.modules.moveRow.mousemove)})},A.prototype.startMove=function(e,t){var o=t.getElement();this.setStartPosition(e,t),this.moving=t,this.table.element.classList.add("tabulator-block-select"),this.placeholderElement.style.width=t.getWidth()+"px",this.placeholderElement.style.height=t.getHeight()+"px",this.connection?(this.table.element.classList.add("tabulator-movingrow-sending"),this.connectToTables(t)):(o.parentNode.insertBefore(this.placeholderElement,o),o.parentNode.removeChild(o)),this.hoverElement=o.cloneNode(!0),this.hoverElement.classList.add("tabulator-moving"),this.connection?(document.body.appendChild(this.hoverElement),this.hoverElement.style.left="0",this.hoverElement.style.top="0",this.hoverElement.style.width=this.table.element.clientWidth+"px",this.hoverElement.style.whiteSpace="nowrap",this.hoverElement.style.overflow="hidden",this.hoverElement.style.pointerEvents="none"):(this.table.rowManager.getTableElement().appendChild(this.hoverElement),this.hoverElement.style.left="0",this.hoverElement.style.top="0",this._bindMouseMove()),document.body.addEventListener("mousemove",this.moveHover),document.body.addEventListener("mouseup",this.endMove),this.moveHover(e)},A.prototype.setStartPosition=function(e,t){var o,i,n=this.touchMove?e.touches[0].pageX:e.pageX,s=this.touchMove?e.touches[0].pageY:e.pageY;o=t.getElement(),this.connection?(i=o.getBoundingClientRect(),this.startX=i.left-n+window.pageXOffset,this.startY=i.top-s+window.pageYOffset):this.startY=s-o.getBoundingClientRect().top},A.prototype.endMove=function(e){e&&1!==e.which&&!this.touchMove||(this._unbindMouseMove(),this.connection||(this.placeholderElement.parentNode.insertBefore(this.moving.getElement(),this.placeholderElement.nextSibling),this.placeholderElement.parentNode.removeChild(this.placeholderElement)),this.hoverElement.parentNode.removeChild(this.hoverElement),this.table.element.classList.remove("tabulator-block-select"),this.toRow&&this.table.rowManager.moveRow(this.moving,this.toRow,this.toRowAfter),this.moving=!1,this.toRow=!1,this.toRowAfter=!1,document.body.removeEventListener("mousemove",this.moveHover),document.body.removeEventListener("mouseup",this.endMove),this.connection&&(this.table.element.classList.remove("tabulator-movingrow-sending"),this.disconnectFromTables()))},A.prototype.moveRow=function(e,t){this.toRow=e,this.toRowAfter=t},A.prototype.moveHover=function(e){this.connection?this.moveHoverConnections.call(this,e):this.moveHoverTable.call(this,e)},A.prototype.moveHoverTable=function(e){var t=this.table.rowManager.getElement(),o=t.scrollTop,i=(this.touchMove?e.touches[0].pageY:e.pageY)-t.getBoundingClientRect().top+o;this.hoverElement.style.top=i-this.startY+"px"},A.prototype.moveHoverConnections=function(e){this.hoverElement.style.left=this.startX+(this.touchMove?e.touches[0].pageX:e.pageX)+"px",this.hoverElement.style.top=this.startY+(this.touchMove?e.touches[0].pageY:e.pageY)+"px"},A.prototype.connectToTables=function(e){var t=this.table.modules.comms.getConnections(this.connection);this.table.options.movableRowsSendingStart.call(this.table,t),this.table.modules.comms.send(this.connection,"moveRow","connect",{row:e})},A.prototype.disconnectFromTables=function(){var e=this.table.modules.comms.getConnections(this.connection);this.table.options.movableRowsSendingStop.call(this.table,e),this.table.modules.comms.send(this.connection,"moveRow","disconnect")},A.prototype.connect=function(e,t){var o=this;return this.connectedTable?(console.warn("Move Row Error - Table cannot accept connection, already connected to table:",this.connectedTable),!1):(this.connectedTable=e,this.connectedRow=t,this.table.element.classList.add("tabulator-movingrow-receiving"),o.table.rowManager.getDisplayRows().forEach(function(e){"row"===e.type&&e.modules.moveRow&&e.modules.moveRow.mouseup&&e.getElement().addEventListener("mouseup",e.modules.moveRow.mouseup)}),o.tableRowDropEvent=o.tableRowDrop.bind(o),o.table.element.addEventListener("mouseup",o.tableRowDropEvent),this.table.options.movableRowsReceivingStart.call(this.table,t,e),!0)},A.prototype.disconnect=function(e){var t=this;e===this.connectedTable?(this.connectedTable=!1,this.connectedRow=!1,this.table.element.classList.remove("tabulator-movingrow-receiving"),t.table.rowManager.getDisplayRows().forEach(function(e){"row"===e.type&&e.modules.moveRow&&e.modules.moveRow.mouseup&&e.getElement().removeEventListener("mouseup",e.modules.moveRow.mouseup)}),t.table.element.removeEventListener("mouseup",t.tableRowDropEvent),this.table.options.movableRowsReceivingStop.call(this.table,e)):console.warn("Move Row Error - trying to disconnect from non connected table")},A.prototype.dropComplete=function(e,t,o){var i=!1;if(o){switch(_typeof(this.table.options.movableRowsSender)){case"string":i=this.senders[this.table.options.movableRowsSender];break;case"function":i=this.table.options.movableRowsSender}i?i.call(this,this.moving.getComponent(),t?t.getComponent():void 0,e):this.table.options.movableRowsSender&&console.warn("Mover Row Error - no matching sender found:",this.table.options.movableRowsSender),this.table.options.movableRowsSent.call(this.table,this.moving.getComponent(),t?t.getComponent():void 0,e)}else this.table.options.movableRowsSentFailed.call(this.table,this.moving.getComponent(),t?t.getComponent():void 0,e);this.endMove()},A.prototype.tableRowDrop=function(e,t){var o=!1,i=!1;switch(e.stopImmediatePropagation(),_typeof(this.table.options.movableRowsReceiver)){case"string":o=this.receivers[this.table.options.movableRowsReceiver];break;case"function":o=this.table.options.movableRowsReceiver}o?i=o.call(this,this.connectedRow.getComponent(),t?t.getComponent():void 0,this.connectedTable):console.warn("Mover Row Error - no matching receiver found:",this.table.options.movableRowsReceiver),i?this.table.options.movableRowsReceived.call(this.table,this.connectedRow.getComponent(),t?t.getComponent():void 0,this.connectedTable):this.table.options.movableRowsReceivedFailed.call(this.table,this.connectedRow.getComponent(),t?t.getComponent():void 0,this.connectedTable),this.table.modules.comms.send(this.connectedTable,"moveRow","dropcomplete",{row:t,success:i})},A.prototype.receivers={insert:function(e,t,o){return this.table.addRow(e.getData(),void 0,t),!0},add:function(e,t,o){return this.table.addRow(e.getData()),!0},update:function(e,t,o){return!!t&&(t.update(e.getData()),!0)},replace:function(e,t,o){return!!t&&(this.table.addRow(e.getData(),void 0,t),t.delete(),!0)}},A.prototype.senders={delete:function(e,t,o){e.delete()}},A.prototype.commsReceived=function(e,t,o){switch(t){case"connect":return this.connect(e,o.row);case"disconnect":return this.disconnect(e);case"dropcomplete":return this.dropComplete(e,o.row,o.success)}},u.prototype.registerModule("moveRow",A);var P=function(e){this.table=e,this.allowedTypes=["","data","edit","clipboard"],this.enabled=!0};P.prototype.initializeColumn=function(e){var t=this,o=!1,i={};this.allowedTypes.forEach(function(n){var s,r="mutator"+(n.charAt(0).toUpperCase()+n.slice(1));e.definition[r]&&(s=t.lookupMutator(e.definition[r]))&&(o=!0,i[r]={mutator:s,params:e.definition[r+"Params"]||{}})}),o&&(e.modules.mutate=i)},P.prototype.lookupMutator=function(e){var t=!1;switch(void 0===e?"undefined":_typeof(e)){case"string":this.mutators[e]?t=this.mutators[e]:console.warn("Mutator Error - No such mutator found, ignoring: ",e);break;case"function":t=e}return t},P.prototype.transformRow=function(e,t,o){var i,n=this,s="mutator"+(t.charAt(0).toUpperCase()+t.slice(1));return this.enabled&&n.table.columnManager.traverse(function(n){var r,a,l;n.modules.mutate&&(r=n.modules.mutate[s]||n.modules.mutate.mutator||!1)&&(i=n.getFieldValue(void 0!==o?o:e),"data"!=t&&void 0===i||(l=n.getComponent(),a="function"==typeof r.params?r.params(i,e,t,l):r.params,n.setFieldValue(e,r.mutator(i,e,t,a,l))))}),e},P.prototype.transformCell=function(e,t){var o=e.column.modules.mutate.mutatorEdit||e.column.modules.mutate.mutator||!1,i={};return o?(i=Object.assign(i,e.row.getData()),e.column.setFieldValue(i,t),o.mutator(t,i,"edit",o.params,e.getComponent())):t},P.prototype.enable=function(){this.enabled=!0},P.prototype.disable=function(){this.enabled=!1},P.prototype.mutators={},u.prototype.registerModule("mutator",P);var _=function(e){this.table=e,this.mode="local",this.progressiveLoad=!1,this.size=0,this.page=1,this.count=5,this.max=1,this.displayIndex=0,this.initialLoad=!0,this.pageSizes=[],this.createElements()};_.prototype.createElements=function(){var e;this.element=document.createElement("span"),this.element.classList.add("tabulator-paginator"),this.pagesElement=document.createElement("span"),this.pagesElement.classList.add("tabulator-pages"),e=document.createElement("button"),e.classList.add("tabulator-page"),e.setAttribute("type","button"),e.setAttribute("role","button"),e.setAttribute("aria-label",""),e.setAttribute("title",""),this.firstBut=e.cloneNode(!0),this.firstBut.setAttribute("data-page","first"),this.prevBut=e.cloneNode(!0),this.prevBut.setAttribute("data-page","prev"),this.nextBut=e.cloneNode(!0),this.nextBut.setAttribute("data-page","next"),this.lastBut=e.cloneNode(!0),this.lastBut.setAttribute("data-page","last"),this.table.options.paginationSizeSelector&&(this.pageSizeSelect=document.createElement("select"),this.pageSizeSelect.classList.add("tabulator-page-size"))},_.prototype.generatePageSizeSelectList=function(){var e=this,t=[];if(this.pageSizeSelect){if(Array.isArray(this.table.options.paginationSizeSelector))t=this.table.options.paginationSizeSelector,this.pageSizes=t,-1==this.pageSizes.indexOf(this.size)&&t.unshift(this.size);else if(-1==this.pageSizes.indexOf(this.size)){t=[];for(var o=1;o<5;o++)t.push(this.size*o);this.pageSizes=t}else t=this.pageSizes;for(;this.pageSizeSelect.firstChild;)this.pageSizeSelect.removeChild(this.pageSizeSelect.firstChild);t.forEach(function(t){var o=document.createElement("option");o.value=t,o.innerHTML=t,e.pageSizeSelect.appendChild(o)}),this.pageSizeSelect.value=this.size}},_.prototype.initialize=function(e){var t,o=this;for(var i in o.table.options.paginationDataSent)o.paginationDataSentNames[i]=o.table.options.paginationDataSent[i];for(var n in o.table.options.paginationDataReceived)o.paginationDataReceivedNames[n]=o.table.options.paginationDataReceived[n];o.table.modules.localize.bind("pagination|first",function(e){o.firstBut.innerHTML=e}),o.table.modules.localize.bind("pagination|first_title",function(e){o.firstBut.setAttribute("aria-label",e),o.firstBut.setAttribute("title",e)}),o.table.modules.localize.bind("pagination|prev",function(e){o.prevBut.innerHTML=e}),o.table.modules.localize.bind("pagination|prev_title",function(e){o.prevBut.setAttribute("aria-label",e),o.prevBut.setAttribute("title",e)}),o.table.modules.localize.bind("pagination|next",function(e){o.nextBut.innerHTML=e}),o.table.modules.localize.bind("pagination|next_title",function(e){o.nextBut.setAttribute("aria-label",e),o.nextBut.setAttribute("title",e)}),o.table.modules.localize.bind("pagination|last",function(e){o.lastBut.innerHTML=e}),o.table.modules.localize.bind("pagination|last_title",function(e){o.lastBut.setAttribute("aria-label",e),o.lastBut.setAttribute("title",e)}),o.firstBut.addEventListener("click",function(){o.setPage(1)}),o.prevBut.addEventListener("click",function(){o.previousPage()}),o.nextBut.addEventListener("click",function(){o.nextPage().then(function(){}).catch(function(){})}),o.lastBut.addEventListener("click",function(){o.setPage(o.max)}),o.table.options.paginationElement&&(o.element=o.table.options.paginationElement),this.pageSizeSelect&&(t=document.createElement("label"),o.table.modules.localize.bind("pagination|page_size",function(e){o.pageSizeSelect.setAttribute("aria-label",e),o.pageSizeSelect.setAttribute("title",e),t.innerHTML=e}),o.element.appendChild(t),o.element.appendChild(o.pageSizeSelect),o.pageSizeSelect.addEventListener("change",function(e){o.setPageSize(o.pageSizeSelect.value),o.setPage(1).then(function(){}).catch(function(){})})),o.element.appendChild(o.firstBut),o.element.appendChild(o.prevBut),o.element.appendChild(o.pagesElement),o.element.appendChild(o.nextBut),o.element.appendChild(o.lastBut),o.table.options.paginationElement||e||o.table.footerManager.append(o.element,o),o.mode=o.table.options.pagination,o.size=o.table.options.paginationSize||Math.floor(o.table.rowManager.getElement().clientHeight/24),o.count=o.table.options.paginationButtonCount,o.generatePageSizeSelectList()},_.prototype.initializeProgressive=function(e){this.initialize(!0),this.mode="progressive_"+e,this.progressiveLoad=!0},_.prototype.setDisplayIndex=function(e){this.displayIndex=e},_.prototype.getDisplayIndex=function(){return this.displayIndex},_.prototype.setMaxRows=function(e){this.max=e?Math.ceil(e/this.size):1,this.page>this.max&&(this.page=this.max)},_.prototype.reset=function(e,t){return("local"==this.mode||e)&&(this.page=1),t&&(this.initialLoad=!0),!0},_.prototype.setMaxPage=function(e){e=parseInt(e),this.max=e||1,this.page>this.max&&(this.page=this.max,this.trigger())},_.prototype.setPage=function(e){var t=this,o=this;return new Promise(function(i,n){e=parseInt(e),e>0&&e<=t.max?(t.page=e,t.trigger().then(function(){i()}).catch(function(){n()}),o.table.options.persistence&&o.table.modExists("persistence",!0)&&o.table.modules.persistence.config.page&&o.table.modules.persistence.save("page")):(console.warn("Pagination Error - Requested page is out of range of 1 - "+t.max+":",e),n())})},_.prototype.setPageToRow=function(e){var t=this;return new Promise(function(o,i){var n=t.table.rowManager.getDisplayRows(t.displayIndex-1),s=n.indexOf(e);if(s>-1){var r=Math.ceil((s+1)/t.size);t.setPage(r).then(function(){o()}).catch(function(){i()})}else console.warn("Pagination Error - Requested row is not visible"),i()})},_.prototype.setPageSize=function(e){e=parseInt(e),e>0&&(this.size=e),this.pageSizeSelect&&this.generatePageSizeSelectList(),this.table.options.persistence&&this.table.modExists("persistence",!0)&&this.table.modules.persistence.config.page&&this.table.modules.persistence.save("page")},_.prototype._setPageButtons=function(){for(var e=this,t=Math.floor((this.count-1)/2),o=Math.ceil((this.count-1)/2),i=this.max-this.page+t+10&&s<=e.max&&e.pagesElement.appendChild(e._generatePageButton(s));this.footerRedraw()},_.prototype._generatePageButton=function(e){var t=this,o=document.createElement("button");return o.classList.add("tabulator-page"),e==t.page&&o.classList.add("active"),o.setAttribute("type","button"),o.setAttribute("role","button"),o.setAttribute("aria-label","Show Page "+e),o.setAttribute("title","Show Page "+e),o.setAttribute("data-page",e),o.textContent=e,o.addEventListener("click",function(o){t.setPage(e)}),o},_.prototype.previousPage=function(){var e=this;return new Promise(function(t,o){e.page>1?(e.page--,e.trigger().then(function(){t()}).catch(function(){o()}),e.table.options.persistence&&e.table.modExists("persistence",!0)&&e.table.modules.persistence.config.page&&e.table.modules.persistence.save("page")):(console.warn("Pagination Error - Previous page would be less than page 1:",0),o())})},_.prototype.nextPage=function(){var e=this;return new Promise(function(t,o){e.pagen?i.splice(n,0,e):i.push(e))}),i},B.prototype._findColumn=function(e,t){var o=t.columns?"group":t.field?"field":"object";return e.find(function(e){switch(o){case"group":return e.title===t.title&&e.columns.length===t.columns.length;case"field":return e.field===t.field;case"object":return e===t}})},B.prototype.save=function(e){var t={};switch(e){case"columns":t=this.parseColumns(this.table.columnManager.getColumns());break;case"filter":t=this.table.modules.filter.getFilters();break;case"sort":t=this.validateSorters(this.table.modules.sort.getSort());break;case"group":t=this.getGroupConfig();break;case"page":t=this.getPageConfig()}this.writeFunc&&this.writeFunc(this.id,e,t)},B.prototype.validateSorters=function(e){return e.forEach(function(e){e.column=e.field,delete e.field}),e},B.prototype.getGroupConfig=function(){return this.config.group&&((!0===this.config.group||this.config.group.groupBy)&&(data.groupBy=this.table.options.groupBy),(!0===this.config.group||this.config.group.groupStartOpen)&&(data.groupStartOpen=this.table.options.groupStartOpen),(!0===this.config.group||this.config.group.groupHeader)&&(data.groupHeader=this.table.options.groupHeader)),data},B.prototype.getPageConfig=function(){var e={};return this.config.page&&((!0===this.config.page||this.config.page.size)&&(e.paginationSize=this.table.modules.page.getPageSize()),(!0===this.config.page||this.config.page.page)&&(e.paginationInitialPage=this.table.modules.page.getPage())),e},B.prototype.parseColumns=function(e){var t=this,o=[];return e.forEach(function(e){var i,n={},s=e.getDefinition();e.isGroup?(n.title=s.title,n.columns=t.parseColumns(e.getColumns())):(n.field=e.getField(),!0===t.config.columns||void 0==t.config.columns?(i=Object.keys(s),i.push("width")):i=t.config.columns,i.forEach(function(t){switch(t){case"width":n.width=e.getWidth();break;case"visible":n.visible=e.visible;break;default:n[t]=s[t]}})),o.push(n)}),o},B.prototype.readers={local:function(e,t){var o=localStorage.getItem(e+"-"+t);return!!o&&JSON.parse(o)},cookie:function(e,t){var o,i,n=document.cookie,s=e+"-"+t,r=n.indexOf(s+"=");return r>-1&&(n=n.substr(r),o=n.indexOf(";"),o>-1&&(n=n.substr(0,o)),i=n.replace(s+"=","")),!!i&&JSON.parse(i)}},B.prototype.writers={local:function(e,t,o){localStorage.setItem(e+"-"+t,JSON.stringify(o))},cookie:function(e,t,o){var i=new Date;i.setDate(i.getDate()+1e4),document.cookie=e+"-"+t+"="+JSON.stringify(o)+"; expires="+i.toUTCString()}},u.prototype.registerModule("persistence",B);var N=function(e){this.table=e,this.element=!1,this.manualBlock=!1};N.prototype.initialize=function(){window.addEventListener("beforeprint",this.replaceTable.bind(this)),window.addEventListener("afterprint",this.cleanup.bind(this))},N.prototype.replaceTable=function(){this.manualBlock||(this.element=document.createElement("div"),this.element.classList.add("tabulator-print-table"),this.element.appendChild(this.table.modules.export.genereateTable(this.table.options.printConfig,this.table.options.printStyled,this.table.options.printRowRange,"print")),this.table.element.style.display="none",this.table.element.parentNode.insertBefore(this.element,this.table.element))},N.prototype.cleanup=function(){document.body.classList.remove("tabulator-print-fullscreen-hide"),this.element&&this.element.parentNode&&(this.element.parentNode.removeChild(this.element),this.table.element.style.display="")},N.prototype.printFullscreen=function(e,t,o){var i,n,s=window.scrollX,r=window.scrollY,a=document.createElement("div"),l=document.createElement("div"),c=this.table.modules.export.genereateTable(void 0!==o?o:this.table.options.printConfig,void 0!==t?t:this.table.options.printStyled,e,"print");this.manualBlock=!0,this.element=document.createElement("div"),this.element.classList.add("tabulator-print-fullscreen"),this.table.options.printHeader&&(a.classList.add("tabulator-print-header"),i="function"==typeof this.table.options.printHeader?this.table.options.printHeader.call(this.table):this.table.options.printHeader,"string"==typeof i?a.innerHTML=i:a.appendChild(i),this.element.appendChild(a)),this.element.appendChild(c),this.table.options.printFooter&&(l.classList.add("tabulator-print-footer"),n="function"==typeof this.table.options.printFooter?this.table.options.printFooter.call(this.table):this.table.options.printFooter,"string"==typeof n?l.innerHTML=n:l.appendChild(n),this.element.appendChild(l)),document.body.classList.add("tabulator-print-fullscreen-hide"),document.body.appendChild(this.element),this.table.options.printFormatter&&this.table.options.printFormatter(this.element,c),window.print(),this.cleanup(),window.scrollTo(s,r),this.manualBlock=!1},u.prototype.registerModule("print",N);var I=function(e){this.table=e,this.data=!1,this.blocked=!1,this.origFuncs={},this.currentVersion=0};I.prototype.watchData=function(e){var t,o=this;this.currentVersion++,t=this.currentVersion,o.unwatchData(),o.data=e,o.origFuncs.push=e.push,Object.defineProperty(o.data,"push",{enumerable:!1,configurable:!0,value:function(){var i=Array.from(arguments);return o.blocked||t!==o.currentVersion||i.forEach(function(e){o.table.rowManager.addRowActual(e,!1)}),o.origFuncs.push.apply(e,arguments)}}),o.origFuncs.unshift=e.unshift,Object.defineProperty(o.data,"unshift",{enumerable:!1,configurable:!0,value:function(){var i=Array.from(arguments);return o.blocked||t!==o.currentVersion||i.forEach(function(e){o.table.rowManager.addRowActual(e,!0)}),o.origFuncs.unshift.apply(e,arguments)}}),o.origFuncs.shift=e.shift,Object.defineProperty(o.data,"shift",{enumerable:!1,configurable:!0,value:function(){var i;return o.blocked||t!==o.currentVersion||o.data.length&&(i=o.table.rowManager.getRowFromDataObject(o.data[0]))&&i.deleteActual(),o.origFuncs.shift.call(e)}}),o.origFuncs.pop=e.pop,Object.defineProperty(o.data,"pop",{enumerable:!1,configurable:!0,value:function(){var i;return o.blocked||t!==o.currentVersion||o.data.length&&(i=o.table.rowManager.getRowFromDataObject(o.data[o.data.length-1]))&&i.deleteActual(),o.origFuncs.pop.call(e)}}),o.origFuncs.splice=e.splice,Object.defineProperty(o.data,"splice",{enumerable:!1,configurable:!0,value:function(){var i,n=Array.from(arguments),s=n[0]<0?e.length+n[0]:n[0],r=n[1],a=!!n[2]&&n.slice(2);if(!o.blocked&&t===o.currentVersion){if(a&&(i=!!e[s]&&o.table.rowManager.getRowFromDataObject(e[s]),i?a.forEach(function(e){o.table.rowManager.addRowActual(e,!0,i,!0)}):(a=a.slice().reverse(),a.forEach(function(e){o.table.rowManager.addRowActual(e,!0,!1,!0)}))),0!==r){var l=e.slice(s,void 0===n[1]?n[1]:s+r);l.forEach(function(e,t){var i=o.table.rowManager.getRowFromDataObject(e);i&&i.deleteActual(t!==l.length-1)})}(a||0!==r)&&o.table.rowManager.reRenderInPosition()}return o.origFuncs.splice.apply(e,arguments)}})},I.prototype.unwatchData=function(){if(!1!==this.data)for(var e in this.origFuncs)Object.defineProperty(this.data,e,{enumerable:!0,configurable:!0,writable:!0,value:this.origFuncs.key})},I.prototype.watchRow=function(e){var t=e.getData();this.blocked=!0;for(var o in t)this.watchKey(e,t,o);this.blocked=!1},I.prototype.watchKey=function(e,t,o){var i=this,n=Object.getOwnPropertyDescriptor(t,o),s=t[o],r=this.currentVersion;Object.defineProperty(t,o,{set:function(t){if(s=t,!i.blocked&&r===i.currentVersion){var a={};a[o]=t,e.updateData(a)}n.set&&n.set(t)},get:function(){return n.get&&n.get(),s}})},I.prototype.unwatchRow=function(e){var t=e.getData();for(var o in t)Object.defineProperty(t,o,{value:t[o]})},I.prototype.block=function(){this.blocked=!0},I.prototype.unblock=function(){this.blocked=!1},u.prototype.registerModule("reactiveData",I);var O=function(e){this.table=e,this.startColumn=!1,this.startX=!1,this.startWidth=!1,this.handle=null,this.prevHandle=null};O.prototype.initializeColumn=function(e,t,o){var i=this,n=!1,s=this.table.options.resizableColumns;if("header"===e&&(n="textarea"==t.definition.formatter||t.definition.variableHeight,t.modules.resize={variableHeight:n}),!0===s||s==e){var r=document.createElement("div");r.className="tabulator-col-resize-handle";var a=document.createElement("div");a.className="tabulator-col-resize-handle prev",r.addEventListener("click",function(e){e.stopPropagation()});var l=function(e){var o=t.getLastColumn();o&&i._checkResizability(o)&&(i.startColumn=t,i._mouseDown(e,o,r))};r.addEventListener("mousedown",l),r.addEventListener("touchstart",l,{passive:!0}),r.addEventListener("dblclick",function(e){var o=t.getLastColumn();o&&i._checkResizability(o)&&(e.stopPropagation(),o.reinitializeWidth(!0))}),a.addEventListener("click",function(e){e.stopPropagation()});var c=function(e){var o,n,s;(o=t.getFirstColumn())&&(n=i.table.columnManager.findColumnIndex(o),(s=n>0&&i.table.columnManager.getColumnByIndex(n-1))&&i._checkResizability(s)&&(i.startColumn=t,i._mouseDown(e,s,a)))};a.addEventListener("mousedown",c),a.addEventListener("touchstart",c,{passive:!0}),a.addEventListener("dblclick",function(e){var o,n,s;(o=t.getFirstColumn())&&(n=i.table.columnManager.findColumnIndex(o),(s=n>0&&i.table.columnManager.getColumnByIndex(n-1))&&i._checkResizability(s)&&(e.stopPropagation(),s.reinitializeWidth(!0)))}),o.appendChild(r),o.appendChild(a)}},O.prototype._checkResizability=function(e){return void 0!==e.definition.resizable?e.definition.resizable:this.table.options.resizableColumns},O.prototype._mouseDown=function(e,t,o){function i(e){t.setWidth(s.startWidth+((void 0===e.screenX?e.touches[0].screenX:e.screenX)-s.startX)),!s.table.browserSlow&&t.modules.resize&&t.modules.resize.variableHeight&&t.checkCellHeights()}function n(e){s.startColumn.modules.edit&&(s.startColumn.modules.edit.blocked=!1),s.table.browserSlow&&t.modules.resize&&t.modules.resize.variableHeight&&t.checkCellHeights(),document.body.removeEventListener("mouseup",n),document.body.removeEventListener("mousemove",i),o.removeEventListener("touchmove",i),o.removeEventListener("touchend",n),s.table.element.classList.remove("tabulator-block-select"),s.table.options.persistence&&s.table.modExists("persistence",!0)&&s.table.modules.persistence.config.columns&&s.table.modules.persistence.save("columns"),s.table.options.columnResized.call(s.table,t.getComponent())}var s=this;s.table.element.classList.add("tabulator-block-select"),e.stopPropagation(),s.startColumn.modules.edit&&(s.startColumn.modules.edit.blocked=!0),s.startX=void 0===e.screenX?e.touches[0].screenX:e.screenX,s.startWidth=t.getWidth(),document.body.addEventListener("mousemove",i),document.body.addEventListener("mouseup",n),o.addEventListener("touchmove",i,{passive:!0}),o.addEventListener("touchend",n)},u.prototype.registerModule("resizeColumns",O);var j=function(e){this.table=e,this.startColumn=!1,this.startY=!1,this.startHeight=!1,this.handle=null,this.prevHandle=null};j.prototype.initializeRow=function(e){var t=this,o=e.getElement(),i=document.createElement("div");i.className="tabulator-row-resize-handle";var n=document.createElement("div");n.className="tabulator-row-resize-handle prev",i.addEventListener("click",function(e){e.stopPropagation()});var s=function(o){t.startRow=e,t._mouseDown(o,e,i)};i.addEventListener("mousedown",s),i.addEventListener("touchstart",s,{passive:!0}),n.addEventListener("click",function(e){e.stopPropagation()});var r=function(o){var i=t.table.rowManager.prevDisplayRow(e);i&&(t.startRow=i,t._mouseDown(o,i,n))};n.addEventListener("mousedown",r),n.addEventListener("touchstart",r,{passive:!0}),o.appendChild(i),o.appendChild(n)},j.prototype._mouseDown=function(e,t,o){function i(e){t.setHeight(s.startHeight+((void 0===e.screenY?e.touches[0].screenY:e.screenY)-s.startY))}function n(e){document.body.removeEventListener("mouseup",i),document.body.removeEventListener("mousemove",i),o.removeEventListener("touchmove",i),o.removeEventListener("touchend",n),s.table.element.classList.remove("tabulator-block-select"),s.table.options.rowResized.call(this.table,t.getComponent())}var s=this;s.table.element.classList.add("tabulator-block-select"),e.stopPropagation(),s.startY=void 0===e.screenY?e.touches[0].screenY:e.screenY,s.startHeight=t.getHeight(),document.body.addEventListener("mousemove",i),document.body.addEventListener("mouseup",n),o.addEventListener("touchmove",i,{passive:!0}),o.addEventListener("touchend",n)},u.prototype.registerModule("resizeRows",j);var V=function(e){this.table=e,this.binding=!1,this.observer=!1,this.containerObserver=!1,this.tableHeight=0,this.tableWidth=0,this.containerHeight=0,this.containerWidth=0,this.autoResize=!1};V.prototype.initialize=function(e){var t,o=this,i=this.table;this.tableHeight=i.element.clientHeight,this.tableWidth=i.element.clientWidth,this.containerHeight=i.element.parentNode.clientHeight,this.containerWidth=i.element.parentNode.clientWidth,"undefined"!=typeof ResizeObserver&&"virtual"===i.rowManager.getRenderMode()?(this.autoResize=!0,this.observer=new ResizeObserver(function(e){if(!i.browserMobile||i.browserMobile&&!i.modules.edit.currentCell){var t=Math.floor(e[0].contentRect.height),n=Math.floor(e[0].contentRect.width);o.tableHeight==t&&o.tableWidth==n||(o.tableHeight=t,o.tableWidth=n,o.containerHeight=i.element.parentNode.clientHeight,o.containerWidth=i.element.parentNode.clientWidth,i.redraw())}}),this.observer.observe(i.element),t=window.getComputedStyle(i.element),this.table.rowManager.fixedHeight||!t.getPropertyValue("max-height")&&!t.getPropertyValue("min-height")||(this.containerObserver=new ResizeObserver(function(e){if(!i.browserMobile||i.browserMobile&&!i.modules.edit.currentCell){var t=Math.floor(e[0].contentRect.height),n=Math.floor(e[0].contentRect.width);o.containerHeight==t&&o.containerWidth==n||(o.containerHeight=t,o.containerWidth=n,o.tableHeight=i.element.clientHeight,o.tableWidth=i.element.clientWidth,i.redraw()),i.redraw()}}),this.containerObserver.observe(this.table.element.parentNode))):(this.binding=function(){(!i.browserMobile||i.browserMobile&&!i.modules.edit.currentCell)&&i.redraw()},window.addEventListener("resize",this.binding))},V.prototype.clearBindings=function(e){this.binding&&window.removeEventListener("resize",this.binding),this.observer&&this.observer.unobserve(this.table.element),this.containerObserver&&this.containerObserver.unobserve(this.table.element.parentNode)},u.prototype.registerModule("resizeTable",V);var G=function(e){this.table=e,this.columns=[],this.hiddenColumns=[],this.mode="",this.index=0,this.collapseFormatter=[],this.collapseStartOpen=!0,this.collapseHandleColumn=!1};G.prototype.initialize=function(){var e=this,t=[];this.mode=this.table.options.responsiveLayout,this.collapseFormatter=this.table.options.responsiveLayoutCollapseFormatter||this.formatCollapsedData,this.collapseStartOpen=this.table.options.responsiveLayoutCollapseStartOpen,this.hiddenColumns=[],this.table.columnManager.columnsByIndex.forEach(function(o,i){o.modules.responsive&&o.modules.responsive.order&&o.modules.responsive.visible&&(o.modules.responsive.index=i,t.push(o),o.visible||"collapse"!==e.mode||e.hiddenColumns.push(o))}),t=t.reverse(),t=t.sort(function(e,t){return t.modules.responsive.order-e.modules.responsive.order||t.modules.responsive.index-e.modules.responsive.index}),this.columns=t,"collapse"===this.mode&&this.generateCollapsedContent();for(var o=this.table.columnManager.columnsByIndex,i=Array.isArray(o),n=0,o=i?o:o[Symbol.iterator]();;){var s;if(i){if(n>=o.length)break;s=o[n++]}else{if(n=o.next(),n.done)break;s=n.value}var r=s;if("responsiveCollapse"==r.definition.formatter){this.collapseHandleColumn=r;break}}this.collapseHandleColumn&&(this.hiddenColumns.length?this.collapseHandleColumn.show():this.collapseHandleColumn.hide())},G.prototype.initializeColumn=function(e){var t=e.getDefinition();e.modules.responsive={order:void 0===t.responsive?1:t.responsive,visible:!1!==t.visible}},G.prototype.initializeRow=function(e){var t;"calc"!==e.type&&(t=document.createElement("div"),t.classList.add("tabulator-responsive-collapse"),e.modules.responsiveLayout={element:t,open:this.collapseStartOpen},this.collapseStartOpen||(t.style.display="none"))},G.prototype.layoutRow=function(e){var t=e.getElement();e.modules.responsiveLayout&&(t.appendChild(e.modules.responsiveLayout.element),this.generateCollapsedRowContent(e))},G.prototype.updateColumnVisibility=function(e,t){e.modules.responsive&&(e.modules.responsive.visible=t,this.initialize())},G.prototype.hideColumn=function(e){var t=this.hiddenColumns.length;e.hide(!1,!0),"collapse"===this.mode&&(this.hiddenColumns.unshift(e),this.generateCollapsedContent(),this.collapseHandleColumn&&!t&&this.collapseHandleColumn.show())},G.prototype.showColumn=function(e){var t;e.show(!1,!0),e.setWidth(e.getWidth()),"collapse"===this.mode&&(t=this.hiddenColumns.indexOf(e),t>-1&&this.hiddenColumns.splice(t,1),this.generateCollapsedContent(),this.collapseHandleColumn&&!this.hiddenColumns.length&&this.collapseHandleColumn.hide())},G.prototype.update=function(){for(var e=this,t=!0;t;){var o="fitColumns"==e.table.modules.layout.getMode()?e.table.columnManager.getFlexBaseWidth():e.table.columnManager.getWidth(),i=(e.table.options.headerVisible?e.table.columnManager.element.clientWidth:e.table.element.clientWidth)-o;if(i<0){var n=e.columns[e.index];n?(e.hideColumn(n),e.index++):t=!1}else{var s=e.columns[e.index-1];s&&i>0&&i>=s.getWidth()?(e.showColumn(s),e.index--):t=!1}e.table.rowManager.activeRowsCount||e.table.rowManager.renderEmptyScroll()}},G.prototype.generateCollapsedContent=function(){var e=this;this.table.rowManager.getDisplayRows().forEach(function(t){e.generateCollapsedRowContent(t)})},G.prototype.generateCollapsedRowContent=function(e){var t,o;if(e.modules.responsiveLayout){for(t=e.modules.responsiveLayout.element;t.firstChild;)t.removeChild(t.firstChild);o=this.collapseFormatter(this.generateCollapsedRowData(e)),o&&t.appendChild(o)}},G.prototype.generateCollapsedRowData=function(e){var t,o=this,i=e.getData(),n=[];return this.hiddenColumns.forEach(function(s){var r=s.getFieldValue(i);s.definition.title&&s.field&&(s.modules.format&&o.table.options.responsiveLayoutCollapseUseFormatters?(t={value:!1,data:{},getValue:function(){return r},getData:function(){return i},getElement:function(){return document.createElement("div")},getRow:function(){return e.getComponent()},getColumn:function(){return s.getComponent()}},n.push({title:s.definition.title,value:s.modules.format.formatter.call(o.table.modules.format,t,s.modules.format.params)})):n.push({title:s.definition.title,value:r}))}),n},G.prototype.formatCollapsedData=function(e){var t=document.createElement("table"),o="";return e.forEach(function(e){var t=document.createElement("div");e.value instanceof Node&&(t.appendChild(e.value),e.value=t.innerHTML),o+=""+e.title+""+e.value+""}),t.innerHTML=o,Object.keys(e).length?t:""},u.prototype.registerModule("responsiveLayout",G);var W=function(e){this.table=e,this.selecting=!1,this.lastClickedRow=!1,this.selectPrev=[],this.selectedRows=[],this.headerCheckboxElement=null};W.prototype.clearSelectionData=function(e){this.selecting=!1,this.lastClickedRow=!1,this.selectPrev=[],this.selectedRows=[],e||this._rowSelectionChanged()},W.prototype.initializeRow=function(e){var t=this,o=e.getElement(),i=function e(){setTimeout(function(){t.selecting=!1},50),document.body.removeEventListener("mouseup",e)};e.modules.select={selected:!1},t.table.options.selectableCheck.call(this.table,e.getComponent())?(o.classList.add("tabulator-selectable"),o.classList.remove("tabulator-unselectable"),t.table.options.selectable&&"highlight"!=t.table.options.selectable&&("click"===t.table.options.selectableRangeMode?o.addEventListener("click",function(o){if(o.shiftKey){t.table._clearSelection(),t.lastClickedRow=t.lastClickedRow||e;var i=t.table.rowManager.getDisplayRowIndex(t.lastClickedRow),n=t.table.rowManager.getDisplayRowIndex(e),s=i<=n?i:n,r=i>=n?i:n,a=t.table.rowManager.getDisplayRows().slice(0),l=a.splice(s,r-s+1);o.ctrlKey||o.metaKey?(l.forEach(function(o){o!==t.lastClickedRow&&(!0===t.table.options.selectable||t.isRowSelected(e)?t.toggleRow(o):t.selectedRows.lengtht.table.options.selectable&&(l=l.slice(0,t.table.options.selectable)),t.selectRows(l)),t.table._clearSelection()}else o.ctrlKey||o.metaKey?(t.toggleRow(e),t.lastClickedRow=e):(t.deselectRows(void 0,!0),t.selectRows(e),t.lastClickedRow=e)}):(o.addEventListener("click",function(o){t.table.modExists("edit")&&t.table.modules.edit.getCurrentCell()||t.table._clearSelection(),t.selecting||t.toggleRow(e)}),o.addEventListener("mousedown",function(o){if(o.shiftKey)return t.table._clearSelection(),t.selecting=!0,t.selectPrev=[],document.body.addEventListener("mouseup",i),document.body.addEventListener("keyup",i),t.toggleRow(e),!1}),o.addEventListener("mouseenter",function(o){t.selecting&&(t.table._clearSelection(),t.toggleRow(e),t.selectPrev[1]==e&&t.toggleRow(t.selectPrev[0]))}),o.addEventListener("mouseout",function(o){t.selecting&&(t.table._clearSelection(),t.selectPrev.unshift(e))})))):(o.classList.add("tabulator-unselectable"),o.classList.remove("tabulator-selectable"))},W.prototype.toggleRow=function(e){this.table.options.selectableCheck.call(this.table,e.getComponent())&&(e.modules.select&&e.modules.select.selected?this._deselectRow(e):this._selectRow(e))},W.prototype.selectRows=function(e){var t,o=this;switch(void 0===e?"undefined":_typeof(e)){case"undefined":this.table.rowManager.rows.forEach(function(e){o._selectRow(e,!0,!0)}),this._rowSelectionChanged();break;case"string":t=this.table.rowManager.findRow(e),t?this._selectRow(t,!0,!0):this.table.rowManager.getRows(e).forEach(function(e){o._selectRow(e,!0,!0)}),this._rowSelectionChanged();break;default:Array.isArray(e)?(e.forEach(function(e){o._selectRow(e,!0,!0)}),this._rowSelectionChanged()):this._selectRow(e,!1,!0)}},W.prototype._selectRow=function(e,t,o){if(!isNaN(this.table.options.selectable)&&!0!==this.table.options.selectable&&!o&&this.selectedRows.length>=this.table.options.selectable){if(!this.table.options.selectableRollingSelection)return!1;this._deselectRow(this.selectedRows[0])}var i=this.table.rowManager.findRow(e);i?-1==this.selectedRows.indexOf(i)&&(i.modules.select||(i.modules.select={}),i.modules.select.selected=!0,i.modules.select.checkboxEl&&(i.modules.select.checkboxEl.checked=!0),i.getElement().classList.add("tabulator-selected"),this.selectedRows.push(i),this.table.options.dataTreeSelectPropagate&&this.childRowSelection(i,!0),t||this.table.options.rowSelected.call(this.table,i.getComponent()),this._rowSelectionChanged(t)):t||console.warn("Selection Error - No such row found, ignoring selection:"+e)},W.prototype.isRowSelected=function(e){return-1!==this.selectedRows.indexOf(e)},W.prototype.deselectRows=function(e,t){var o,i=this;if(void 0===e){o=i.selectedRows.length;for(var n=0;n-1&&(n.modules.select||(n.modules.select={}),n.modules.select.selected=!1,n.modules.select.checkboxEl&&(n.modules.select.checkboxEl.checked=!1),n.getElement().classList.remove("tabulator-selected"),i.selectedRows.splice(o,1),this.table.options.dataTreeSelectPropagate&&this.childRowSelection(n,!1),t||i.table.options.rowDeselected.call(this.table,n.getComponent()),i._rowSelectionChanged(t)):t||console.warn("Deselection Error - No such row found, ignoring selection:"+e)},W.prototype.getSelectedData=function(){var e=[];return this.selectedRows.forEach(function(t){e.push(t.getData())}),e},W.prototype.getSelectedRows=function(){var e=[];return this.selectedRows.forEach(function(t){e.push(t.getComponent())}),e},W.prototype._rowSelectionChanged=function(e){this.headerCheckboxElement&&(0===this.selectedRows.length?(this.headerCheckboxElement.checked=!1,this.headerCheckboxElement.indeterminate=!1):this.table.rowManager.rows.length===this.selectedRows.length?(this.headerCheckboxElement.checked=!0,this.headerCheckboxElement.indeterminate=!1):(this.headerCheckboxElement.indeterminate=!0,this.headerCheckboxElement.checked=!1)),e||this.table.options.rowSelectionChanged.call(this.table,this.getSelectedData(),this.getSelectedRows())},W.prototype.registerRowSelectCheckbox=function(e,t){e._row.modules.select||(e._row.modules.select={}),e._row.modules.select.checkboxEl=t},W.prototype.registerHeaderSelectCheckbox=function(e){this.headerCheckboxElement=e},W.prototype.childRowSelection=function(e,t){var o=this.table.modules.dataTree.getChildren(e);if(t)for(var i=o,n=Array.isArray(i),s=0,i=n?i:i[Symbol.iterator]();;){var r;if(n){if(s>=i.length)break;r=i[s++]}else{if(s=i.next(),s.done)break;r=s.value}var a=r;this._selectRow(a,!0)}else for(var l=o,c=Array.isArray(l),u=0,l=c?l:l[Symbol.iterator]();;){var d;if(c){if(u>=l.length)break;d=l[u++]}else{if(u=l.next(),u.done)break;d=u.value}var h=d;this._deselectRow(h,!0)}},u.prototype.registerModule("selectRow",W);var U=function(e){this.table=e,this.sortList=[],this.changed=!1};U.prototype.initializeColumn=function(e,t){var o,i,n=this,s=!1;switch(_typeof(e.definition.sorter)){case"string":n.sorters[e.definition.sorter]?s=n.sorters[e.definition.sorter]:console.warn("Sort Error - No such sorter found: ",e.definition.sorter);break;case"function":s=e.definition.sorter}e.modules.sort={sorter:s,dir:"none",params:e.definition.sorterParams||{},startingDir:e.definition.headerSortStartingDir||"asc",tristate:void 0!==e.definition.headerSortTristate?e.definition.headerSortTristate:this.table.options.headerSortTristate},(void 0===e.definition.headerSort?!1!==this.table.options.headerSort:!1!==e.definition.headerSort)&&(o=e.getElement(),o.classList.add("tabulator-sortable"),i=document.createElement("div"),i.classList.add("tabulator-arrow"),t.appendChild(i),o.addEventListener("click",function(t){var o="",i=[],s=!1;if(e.modules.sort){if(e.modules.sort.tristate)o="none"==e.modules.sort.dir?e.modules.sort.startingDir:e.modules.sort.dir==e.modules.sort.startingDir?"asc"==e.modules.sort.dir?"desc":"asc":"none";else switch(e.modules.sort.dir){case"asc":o="desc";break;case"desc":o="asc";break;default:o=e.modules.sort.startingDir}n.table.options.columnHeaderSortMulti&&(t.shiftKey||t.ctrlKey)?(i=n.getSort(),s=i.findIndex(function(t){return t.field===e.getField()}),s>-1?(i[s].dir=o,s!=i.length-1&&(s=i.splice(s,1)[0],"none"!=o&&i.push(s))):"none"!=o&&i.push({column:e,dir:o}),n.setSort(i)):"none"==o?n.clear():n.setSort(e,o),n.table.rowManager.sorterRefresh(!n.sortList.length)}}))},U.prototype.hasChanged=function(){var e=this.changed;return this.changed=!1,e},U.prototype.getSort=function(){var e=this,t=[];return e.sortList.forEach(function(e){e.column&&t.push({column:e.column.getComponent(),field:e.column.getField(),dir:e.dir})}),t},U.prototype.setSort=function(e,t){var o=this,i=[];Array.isArray(e)||(e=[{column:e,dir:t}]),e.forEach(function(e){var t;t=o.table.columnManager.findColumn(e.column),t?(e.column=t,i.push(e),o.changed=!0):console.warn("Sort Warning - Sort field does not exist and is being ignored: ",e.column)}),o.sortList=i,this.table.options.persistence&&this.table.modExists("persistence",!0)&&this.table.modules.persistence.config.sort&&this.table.modules.persistence.save("sort")},U.prototype.clear=function(){this.setSort([])},U.prototype.findSorter=function(e){var t,o=this.table.rowManager.activeRows[0],i="string";if(o&&(o=o.getData(),e.getField()))switch(t=e.getFieldValue(o),void 0===t?"undefined":_typeof(t)){case"undefined":i="string";break;case"boolean":i="boolean";break;default:isNaN(t)||""===t?t.match(/((^[0-9]+[a-z]+)|(^[a-z]+[0-9]+))+$/i)&&(i="alphanum"):i="number"}return this.sorters[i]},U.prototype.sort=function(e){var t,o=this;t=this.table.options.sortOrderReverse?o.sortList.slice().reverse():o.sortList,o.table.options.dataSorting&&o.table.options.dataSorting.call(o.table,o.getSort()),o.clearColumnHeaders(),o.table.options.ajaxSorting?t.forEach(function(e,t){o.setColumnHeader(e.column,e.dir)}):t.forEach(function(i,n){ -i.column&&i.column.modules.sort&&(i.column.modules.sort.sorter||(i.column.modules.sort.sorter=o.findSorter(i.column)),o._sortItem(e,i.column,i.dir,t,n)),o.setColumnHeader(i.column,i.dir)}),o.table.options.dataSorted&&o.table.options.dataSorted.call(o.table,o.getSort(),o.table.rowManager.getComponents("active"))},U.prototype.clearColumnHeaders=function(){this.table.columnManager.getRealColumns().forEach(function(e){e.modules.sort&&(e.modules.sort.dir="none",e.getElement().setAttribute("aria-sort","none"))})},U.prototype.setColumnHeader=function(e,t){e.modules.sort.dir=t,e.getElement().setAttribute("aria-sort",t)},U.prototype._sortItem=function(e,t,o,i,n){var s=this,r="function"==typeof t.modules.sort.params?t.modules.sort.params(t.getComponent(),o):t.modules.sort.params;e.sort(function(e,a){var l=s._sortRow(e,a,t,o,r);if(0===l&&n)for(var c=n-1;c>=0&&0===(l=s._sortRow(e,a,i[c].column,i[c].dir,r));c--);return l})},U.prototype._sortRow=function(e,t,o,i,n){var s,r,a="asc"==i?e:t,l="asc"==i?t:e;return e=o.getFieldValue(a.getData()),t=o.getFieldValue(l.getData()),e=void 0!==e?e:"",t=void 0!==t?t:"",s=a.getComponent(),r=l.getComponent(),o.modules.sort.sorter.call(this,e,t,s,r,o.getComponent(),i,n)},U.prototype.sorters={number:function(e,t,o,i,n,s,r){var a=r.alignEmptyValues,l=r.decimalSeparator||".",c=r.thousandSeparator||",",u=0;if(e=parseFloat(String(e).split(c).join("").split(l).join(".")),t=parseFloat(String(t).split(c).join("").split(l).join(".")),isNaN(e))u=isNaN(t)?0:-1;else{if(!isNaN(t))return e-t;u=1}return("top"===a&&"desc"===s||"bottom"===a&&"asc"===s)&&(u*=-1),u},string:function(e,t,o,i,n,s,r){var a,l=r.alignEmptyValues,c=0;if(e){if(t){switch(_typeof(r.locale)){case"boolean":r.locale&&(a=this.table.modules.localize.getLocale());break;case"string":a=r.locale}return String(e).toLowerCase().localeCompare(String(t).toLowerCase(),a)}c=1}else c=t?-1:0;return("top"===l&&"desc"===s||"bottom"===l&&"asc"===s)&&(c*=-1),c},date:function(e,t,o,i,n,s,r){return r.format||(r.format="DD/MM/YYYY"),this.sorters.datetime.call(this,e,t,o,i,n,s,r)},time:function(e,t,o,i,n,s,r){return r.format||(r.format="hh:mm"),this.sorters.datetime.call(this,e,t,o,i,n,s,r)},datetime:function(e,t,o,i,n,s,r){var a=r.format||"DD/MM/YYYY hh:mm:ss",l=r.alignEmptyValues,c=0;if("undefined"!=typeof moment){if(e=moment(e,a),t=moment(t,a),e.isValid()){if(t.isValid())return e-t;c=1}else c=t.isValid()?-1:0;return("top"===l&&"desc"===s||"bottom"===l&&"asc"===s)&&(c*=-1),c}console.error("Sort Error - 'datetime' sorter is dependant on moment.js")},boolean:function(e,t,o,i,n,s,r){return(!0===e||"true"===e||"True"===e||1===e?1:0)-(!0===t||"true"===t||"True"===t||1===t?1:0)},array:function(e,t,o,i,n,s,r){function a(e){switch(u){case"length":return e.length;case"sum":return e.reduce(function(e,t){return e+t});case"max":return Math.max.apply(null,e);case"min":return Math.min.apply(null,e);case"avg":return e.reduce(function(e,t){return e+t})/e.length}}var l=0,c=0,u=r.type||"length",d=r.alignEmptyValues,h=0;if(Array.isArray(e)){if(Array.isArray(t))return l=e?a(e):0,c=t?a(t):0,l-c;d=1}else d=Array.isArray(t)?-1:0;return("top"===d&&"desc"===s||"bottom"===d&&"asc"===s)&&(h*=-1),h},exists:function(e,t,o,i,n,s,r){return(void 0===e?0:1)-(void 0===t?0:1)},alphanum:function(e,t,o,i,n,s,r){var a,l,c,u,d,h=0,p=/(\d+)|(\D+)/g,m=/\d/,f=r.alignEmptyValues,g=0;if(e||0===e){if(t||0===t){if(isFinite(e)&&isFinite(t))return e-t;if(a=String(e).toLowerCase(),l=String(t).toLowerCase(),a===l)return 0;if(!m.test(a)||!m.test(l))return a>l?1:-1;for(a=a.match(p),l=l.match(p),d=a.length>l.length?l.length:a.length;hu?1:-1;return a.length>l.length}g=1}else g=t||0===t?-1:0;return("top"===f&&"desc"===s||"bottom"===f&&"asc"===s)&&(g*=-1),g}},u.prototype.registerModule("sort",U);var Y=function(e){this.table=e};return Y.prototype.initializeColumn=function(e){var t,o=this,i=[];e.definition.validator&&(Array.isArray(e.definition.validator)?e.definition.validator.forEach(function(e){(t=o._extractValidator(e))&&i.push(t)}):(t=this._extractValidator(e.definition.validator))&&i.push(t),e.modules.validate=!!i.length&&i)},Y.prototype._extractValidator=function(e){var t,o,i;switch(void 0===e?"undefined":_typeof(e)){case"string":return i=e.indexOf(":"),i>-1?(t=e.substring(0,i),o=e.substring(i+1)):t=e,this._buildValidator(t,o);case"function":return this._buildValidator(e);case"object":return this._buildValidator(e.type,e.parameters)}},Y.prototype._buildValidator=function(e,t){var o="function"==typeof e?e:this.validators[e];return o?{type:"function"==typeof e?"function":e,func:o,params:t}:(console.warn("Validator Setup Error - No matching validator found:",e),!1)},Y.prototype.validate=function(e,t,o){var i=this,n=[];return e&&e.forEach(function(e){e.func.call(i,t,o,e.params)||n.push({type:e.type,parameters:e.params})}),!n.length||n},Y.prototype.validators={integer:function(e,t,o){return""===t||null===t||void 0===t||"number"==typeof(t=Number(t))&&isFinite(t)&&Math.floor(t)===t},float:function(e,t,o){return""===t||null===t||void 0===t||"number"==typeof(t=Number(t))&&isFinite(t)&&t%1!=0},numeric:function(e,t,o){return""===t||null===t||void 0===t||!isNaN(t)},string:function(e,t,o){return""===t||null===t||void 0===t||isNaN(t)},max:function(e,t,o){return""===t||null===t||void 0===t||parseFloat(t)<=o},min:function(e,t,o){return""===t||null===t||void 0===t||parseFloat(t)>=o},minLength:function(e,t,o){return""===t||null===t||void 0===t||String(t).length>=o},maxLength:function(e,t,o){return""===t||null===t||void 0===t||String(t).length<=o},in:function(e,t,o){return""===t||null===t||void 0===t||("string"==typeof o&&(o=o.split("|")),""===t||o.indexOf(t)>-1)},regex:function(e,t,o){return""===t||null===t||void 0===t||new RegExp(o).test(t)},unique:function(e,t,o){if(""===t||null===t||void 0===t)return!0;var i=!0,n=e.getData(),s=e.getColumn()._getSelf();return this.table.rowManager.rows.forEach(function(e){var o=e.getData();o!==n&&t==s.getFieldValue(o)&&(i=!1)}),i},required:function(e,t,o){return""!==t&&null!==t&&void 0!==t}},u.prototype.registerModule("validate",Y),u}); \ No newline at end of file diff --git a/cookbook/static/tabulator/tabulator_bootstrap4.min.css b/cookbook/static/tabulator/tabulator_bootstrap4.min.css deleted file mode 100644 index 0454d48c..00000000 --- a/cookbook/static/tabulator/tabulator_bootstrap4.min.css +++ /dev/null @@ -1,3 +0,0 @@ -/* Tabulator v4.5.1 (c) Oliver Folkerd */ -.tabulator{position:relative;background-color:#fff;overflow:hidden;font-size:1rem;text-align:left;width:100%;max-width:100%;transform:translatez(0)}.tabulator[tabulator-layout=fitDataFill] .tabulator-tableHolder .tabulator-table{min-width:100%}.tabulator.tabulator-block-select{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.tabulator .tabulator-header{position:relative;box-sizing:border-box;width:100%;border-top:1px solid #dee2e6;border-bottom:2px solid #dee2e6;background-color:#fff;font-weight:700;white-space:nowrap;overflow:hidden;-moz-user-select:none;-khtml-user-select:none;-webkit-user-select:none;-o-user-select:none}.tabulator .tabulator-header.tabulator-header-hidden{display:none}.tabulator .tabulator-header .tabulator-col{display:inline-block;position:relative;box-sizing:border-box;background-color:#fff;text-align:left;vertical-align:bottom;overflow:hidden}.tabulator .tabulator-header .tabulator-col.tabulator-moving{position:absolute;border:1px solid #dee2e6;background:#e6e6e6;pointer-events:none}.tabulator .tabulator-header .tabulator-col .tabulator-col-content{box-sizing:border-box;position:relative;padding:.75rem}.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title{box-sizing:border-box;width:100%;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;vertical-align:bottom}.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title .tabulator-title-editor{box-sizing:border-box;width:100%;border:1px solid #999;padding:1px;background:#fff}.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-arrow{display:inline-block;position:absolute;top:14px;right:8px;width:0;height:0;border-left:6px solid transparent;border-right:6px solid transparent;border-bottom:6px solid #bbb}.tabulator .tabulator-header .tabulator-col.tabulator-col-group .tabulator-col-group-cols{position:relative;display:-ms-flexbox;display:flex;border-top:1px solid #dee2e6;overflow:hidden}.tabulator .tabulator-header .tabulator-col.tabulator-col-group .tabulator-col-group-cols .tabulator-col:last-child{margin-right:-1px}.tabulator .tabulator-header .tabulator-col:first-child .tabulator-col-resize-handle.prev{display:none}.tabulator .tabulator-header .tabulator-col.ui-sortable-helper{position:absolute;background-color:#e6e6e6!important;border:1px solid #dee2e6}.tabulator .tabulator-header .tabulator-col .tabulator-header-filter{position:relative;box-sizing:border-box;margin-top:2px;width:100%;text-align:center}.tabulator .tabulator-header .tabulator-col .tabulator-header-filter textarea{height:auto!important}.tabulator .tabulator-header .tabulator-col .tabulator-header-filter svg{margin-top:3px}.tabulator .tabulator-header .tabulator-col .tabulator-header-filter input::-ms-clear{width:0;height:0}.tabulator .tabulator-header .tabulator-col.tabulator-sortable .tabulator-col-title{padding-right:25px}.tabulator .tabulator-header .tabulator-col.tabulator-sortable:hover{cursor:pointer;background-color:#e6e6e6}.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=none] .tabulator-col-content .tabulator-arrow{border-top:none;border-bottom:6px solid #bbb}.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=asc] .tabulator-col-content .tabulator-arrow{border-top:none;border-bottom:6px solid #666}.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=desc] .tabulator-col-content .tabulator-arrow{border-top:6px solid #666;border-bottom:none}.tabulator .tabulator-header .tabulator-col.tabulator-col-vertical .tabulator-col-content .tabulator-col-title{-ms-writing-mode:tb-rl;writing-mode:vertical-rl;text-orientation:mixed;display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center}.tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-col-vertical-flip .tabulator-col-title{transform:rotate(180deg)}.tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-sortable .tabulator-col-title{padding-right:0;padding-top:20px}.tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-sortable.tabulator-col-vertical-flip .tabulator-col-title{padding-right:0;padding-bottom:20px}.tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-sortable .tabulator-arrow{right:calc(50% - 6px)}.tabulator .tabulator-header .tabulator-frozen{display:inline-block;position:absolute;z-index:10}.tabulator .tabulator-header .tabulator-frozen.tabulator-frozen-left{border-right:2px solid #dee2e6}.tabulator .tabulator-header .tabulator-frozen.tabulator-frozen-right{border-left:2px solid #dee2e6}.tabulator .tabulator-header .tabulator-calcs-holder{box-sizing:border-box;width:100%;background:#fff!important;border-top:1px solid #dee2e6;border-bottom:1px solid #dee2e6;overflow:hidden}.tabulator .tabulator-header .tabulator-calcs-holder .tabulator-row{background:#fff!important}.tabulator .tabulator-header .tabulator-calcs-holder .tabulator-row .tabulator-col-resize-handle{display:none}.tabulator .tabulator-header .tabulator-frozen-rows-holder{min-width:600%}.tabulator .tabulator-header .tabulator-frozen-rows-holder:empty{display:none}.tabulator .tabulator-tableHolder{position:relative;width:100%;white-space:nowrap;overflow:auto;-webkit-overflow-scrolling:touch}.tabulator .tabulator-tableHolder:focus{outline:none}.tabulator .tabulator-tableHolder .tabulator-placeholder{box-sizing:border-box;display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;width:100%}.tabulator .tabulator-tableHolder .tabulator-placeholder[tabulator-render-mode=virtual]{position:absolute;top:0;left:0;height:100%}.tabulator .tabulator-tableHolder .tabulator-placeholder span{display:inline-block;margin:0 auto;padding:10px;color:#000;font-weight:700;font-size:20px}.tabulator .tabulator-tableHolder .tabulator-table{position:relative;display:inline-block;background-color:#fff;white-space:nowrap;overflow:visible}.tabulator .tabulator-tableHolder .tabulator-table .tabulator-row.tabulator-calcs{font-weight:700;background:#ececec!important}.tabulator .tabulator-tableHolder .tabulator-table .tabulator-row.tabulator-calcs.tabulator-calcs-top{border-bottom:2px solid #dee2e6}.tabulator .tabulator-tableHolder .tabulator-table .tabulator-row.tabulator-calcs.tabulator-calcs-bottom{border-top:2px solid #dee2e6}.tabulator .tabulator-col-resize-handle{position:absolute;right:0;top:0;bottom:0;width:5px}.tabulator .tabulator-col-resize-handle.prev{left:0;right:auto}.tabulator .tabulator-col-resize-handle:hover{cursor:ew-resize}.tabulator .tabulator-footer{padding:5px 10px;border-top:2px solid #dee2e6;text-align:right;font-weight:700;white-space:nowrap;-ms-user-select:none;user-select:none;-moz-user-select:none;-khtml-user-select:none;-webkit-user-select:none;-o-user-select:none}.tabulator .tabulator-footer .tabulator-calcs-holder{box-sizing:border-box;width:calc(100% + 20px);margin:-5px -10px 5px;text-align:left;background:#fff!important;border-bottom:1px solid #dee2e6;border-top:1px solid #dee2e6;overflow:hidden}.tabulator .tabulator-footer .tabulator-calcs-holder .tabulator-row{background:#fff!important}.tabulator .tabulator-footer .tabulator-calcs-holder .tabulator-row .tabulator-col-resize-handle{display:none}.tabulator .tabulator-footer .tabulator-calcs-holder:only-child{margin-bottom:-5px;border-bottom:none}.tabulator .tabulator-footer .tabulator-paginator{font-family:inherit;font-weight:inherit;font-size:inherit}.tabulator .tabulator-footer .tabulator-page-size{display:inline-block;margin:0 5px;padding:2px 5px;border:1px solid #dee2e6;border-radius:3px}.tabulator .tabulator-footer .tabulator-page{display:inline-block;margin:0;margin-top:5px;padding:8px 12px;border:1px solid #dee2e6;border-right:none;background:hsla(0,0%,100%,.2)}.tabulator .tabulator-footer .tabulator-page[data-page=first]{border-top-left-radius:4px;border-bottom-left-radius:4px}.tabulator .tabulator-footer .tabulator-page[data-page=last]{border:1px solid #dee2e6;border-top-right-radius:4px;border-bottom-right-radius:4px}.tabulator .tabulator-footer .tabulator-page.active{border-color:#007bff;background-color:#007bff;color:#fff}.tabulator .tabulator-footer .tabulator-page:disabled{border-color:#dee2e6;background:#fff;color:#6c757d}.tabulator .tabulator-footer .tabulator-page:not(.disabled):hover{cursor:pointer;border-color:#dee2e6;background:#e9ecef;color:#0056b3}.tabulator .tabulator-loader{position:absolute;display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;top:0;left:0;z-index:100;height:100%;width:100%;background:rgba(0,0,0,.4);text-align:center}.tabulator .tabulator-loader .tabulator-loader-msg{display:inline-block;margin:0 auto;padding:10px 20px;border-radius:10px;background:#fff;font-weight:700;font-size:16px}.tabulator .tabulator-loader .tabulator-loader-msg.tabulator-loading{border:4px solid #333;color:#000}.tabulator .tabulator-loader .tabulator-loader-msg.tabulator-error{border:4px solid #d00;color:#590000}.tabulator.thead-dark .tabulator-header,.tabulator.thead-dark .tabulator-header .tabulator-col{border-color:#32383e;background-color:#212529;color:#fff}.tabulator.table-dark{background-color:#212529}.tabulator.table-dark:not(.thead-light) .tabulator-header,.tabulator.table-dark:not(.thead-light) .tabulator-header .tabulator-col{border-color:#32383e;background-color:#212529;color:#fff}.tabulator.table-dark .tabulator-tableHolder{color:#fff}.tabulator.table-dark .tabulator-row{border-color:#32383e}.tabulator.table-dark .tabulator-row:hover{background-color:hsla(0,0%,100%,.075)!important}.tabulator.table-striped .tabulator-row:nth-child(2n){background-color:#f9f9f9}.tabulator.table-striped .tabulator-row:nth-child(2n).tabulator-selected{background-color:#9abcea}.tabulator.table-striped .tabulator-row:nth-child(2n).tabulator-selectable:hover{background-color:#f5f5f5;cursor:pointer}.tabulator.table-striped .tabulator-row:nth-child(2n).tabulator-selected:hover{background-color:#769bcc;cursor:pointer}.tabulator.table-striped.table-dark .tabulator-row:nth-child(2n){background-color:hsla(0,0%,100%,.05)}.tabulator.table-bordered{border:1px solid #dee2e6}.tabulator.table-bordered .tabulator-header .tabulator-col,.tabulator.table-bordered .tabulator-tableHolder .tabulator-table .tabulator-row .tabulator-cell{border-right:1px solid #dee2e6}.tabulator.table-borderless .tabulator-header,.tabulator.table-borderless .tabulator-row{border:none}.tabulator.table-sm .tabulator-header .tabulator-col .tabulator-col-content{padding:.3rem!important}.tabulator.table-sm .tabulator-tableHolder .tabulator-table .tabulator-row{min-height:1.6rem}.tabulator.table-sm .tabulator-tableHolder .tabulator-table .tabulator-row .tabulator-cell{padding:.3rem!important}.tabulator .tabulator-tableHolder .tabulator-table .tabulator-row.table-primary{background:#b8daff!important}.tabulator .tabulator-tableHolder .tabulator-table .tabulator-row.table-secondary{background:#d6d8db!important}.tabulator .tabulator-tableHolder .tabulator-table .tabulator-row.table-success{background:#c3e6cb!important}.tabulator .tabulator-tableHolder .tabulator-table .tabulator-row.table-info{background:#bee5eb!important}.tabulator .tabulator-tableHolder .tabulator-table .tabulator-row.table-warning{background:#ffeeba!important}.tabulator .tabulator-tableHolder .tabulator-table .tabulator-row.table-danger{background:#f5c6cb!important}.tabulator .tabulator-tableHolder .tabulator-table .tabulator-row.table-light{background:#fdfdfe!important}.tabulator .tabulator-tableHolder .tabulator-table .tabulator-row.table-dark{background:#c6c8ca!important}.tabulator .tabulator-tableHolder .tabulator-table .tabulator-row.table-active{background:#f5f5f5!important}.tabulator .tabulator-tableHolder .tabulator-table .tabulator-row.bg-primary{background:#007bff!important}.tabulator .tabulator-tableHolder .tabulator-table .tabulator-row.bg-secondary{background:#6c757d!important}.tabulator .tabulator-tableHolder .tabulator-table .tabulator-row.bg-success{background:#28a745!important}.tabulator .tabulator-tableHolder .tabulator-table .tabulator-row.bg-info{background:#17a2b8!important}.tabulator .tabulator-tableHolder .tabulator-table .tabulator-row.bg-warning{background:#ffc107!important}.tabulator .tabulator-tableHolder .tabulator-table .tabulator-row.bg-danger{background:#dc3545!important}.tabulator .tabulator-tableHolder .tabulator-table .tabulator-row.bg-light{background:#f8f9fa!important}.tabulator .tabulator-tableHolder .tabulator-table .tabulator-row.bg-dark{background:#343a40!important}.tabulator .tabulator-tableHolder .tabulator-table .tabulator-row.bg-active{background:#f5f5f5!important}.tabulator .tabulator-tableHolder .tabulator-table .tabulator-row .tabulator-cell.table-primary{background:#b8daff!important}.tabulator .tabulator-tableHolder .tabulator-table .tabulator-row .tabulator-cell.table-secondary{background:#d6d8db!important}.tabulator .tabulator-tableHolder .tabulator-table .tabulator-row .tabulator-cell.table-success{background:#c3e6cb!important}.tabulator .tabulator-tableHolder .tabulator-table .tabulator-row .tabulator-cell.table-info{background:#bee5eb!important}.tabulator .tabulator-tableHolder .tabulator-table .tabulator-row .tabulator-cell.table-warning{background:#ffeeba!important}.tabulator .tabulator-tableHolder .tabulator-table .tabulator-row .tabulator-cell.table-danger{background:#f5c6cb!important}.tabulator .tabulator-tableHolder .tabulator-table .tabulator-row .tabulator-cell.table-light{background:#fdfdfe!important}.tabulator .tabulator-tableHolder .tabulator-table .tabulator-row .tabulator-cell.table-dark{background:#c6c8ca!important}.tabulator .tabulator-tableHolder .tabulator-table .tabulator-row .tabulator-cell.table-active{background:#f5f5f5!important}.tabulator .tabulator-tableHolder .tabulator-table .tabulator-row .tabulator-cell.bg-primary{background:#007bff!important}.tabulator .tabulator-tableHolder .tabulator-table .tabulator-row .tabulator-cell.bg-secondary{background:#6c757d!important}.tabulator .tabulator-tableHolder .tabulator-table .tabulator-row .tabulator-cell.bg-success{background:#28a745!important}.tabulator .tabulator-tableHolder .tabulator-table .tabulator-row .tabulator-cell.bg-info{background:#17a2b8!important}.tabulator .tabulator-tableHolder .tabulator-table .tabulator-row .tabulator-cell.bg-warning{background:#ffc107!important}.tabulator .tabulator-tableHolder .tabulator-table .tabulator-row .tabulator-cell.bg-danger{background:#dc3545!important}.tabulator .tabulator-tableHolder .tabulator-table .tabulator-row .tabulator-cell.bg-light{background:#f8f9fa!important}.tabulator .tabulator-tableHolder .tabulator-table .tabulator-row .tabulator-cell.bg-dark{background:#343a40!important}.tabulator .tabulator-tableHolder .tabulator-table .tabulator-row .tabulator-cell.bg-active{background:#f5f5f5!important}.tabulator-row{position:relative;box-sizing:border-box;min-height:2.5rem;background-color:#fff;border-bottom:1px solid #dee2e6}.tabulator-row.tabulator-selectable:hover{background-color:#f5f5f5;cursor:pointer}.tabulator-row.tabulator-selected{background-color:#9abcea}.tabulator-row.tabulator-selected:hover{background-color:#769bcc;cursor:pointer}.tabulator-row.tabulator-moving{position:absolute;border-top:1px solid #dee2e6;border-bottom:1px solid #dee2e6;pointer-events:none!important;z-index:15}.tabulator-row .tabulator-row-resize-handle{position:absolute;right:0;bottom:0;left:0;height:5px}.tabulator-row .tabulator-row-resize-handle.prev{top:0;bottom:auto}.tabulator-row .tabulator-row-resize-handle:hover{cursor:ns-resize}.tabulator-row .tabulator-frozen{display:inline-block;position:absolute;background-color:inherit;z-index:10}.tabulator-row .tabulator-frozen.tabulator-frozen-left{border-right:2px solid #dee2e6}.tabulator-row .tabulator-frozen.tabulator-frozen-right{border-left:2px solid #dee2e6}.tabulator-row .tabulator-responsive-collapse{box-sizing:border-box;padding:5px;border-top:1px solid #dee2e6;border-bottom:1px solid #dee2e6}.tabulator-row .tabulator-responsive-collapse:empty{display:none}.tabulator-row .tabulator-responsive-collapse table{font-size:1rem}.tabulator-row .tabulator-responsive-collapse table tr td{position:relative}.tabulator-row .tabulator-responsive-collapse table tr td:first-of-type{padding-right:10px}.tabulator-row .tabulator-cell{display:inline-block;position:relative;box-sizing:border-box;padding:.75rem;vertical-align:middle;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.tabulator-row .tabulator-cell:last-of-type{border-right:none}.tabulator-row .tabulator-cell.tabulator-editing{border:1px solid #1d68cd;padding:0}.tabulator-row .tabulator-cell.tabulator-editing input,.tabulator-row .tabulator-cell.tabulator-editing select{border:1px;background:transparent}.tabulator-row .tabulator-cell.tabulator-validation-fail{border:1px solid #d00}.tabulator-row .tabulator-cell.tabulator-validation-fail input,.tabulator-row .tabulator-cell.tabulator-validation-fail select{border:1px;background:transparent;color:#d00}.tabulator-row .tabulator-cell:first-child .tabulator-col-resize-handle.prev{display:none}.tabulator-row .tabulator-cell.tabulator-row-handle{display:-ms-inline-flexbox;display:inline-flex;-ms-flex-align:center;align-items:center;-moz-user-select:none;-khtml-user-select:none;-webkit-user-select:none;-o-user-select:none}.tabulator-row .tabulator-cell.tabulator-row-handle .tabulator-row-handle-box{width:80%}.tabulator-row .tabulator-cell.tabulator-row-handle .tabulator-row-handle-box .tabulator-row-handle-bar{width:100%;height:3px;margin-top:2px;background:#666}.tabulator-row .tabulator-cell .tabulator-data-tree-branch{display:inline-block;vertical-align:middle;height:9px;width:7px;margin-top:-9px;margin-right:5px;border-bottom-left-radius:1px;border-left:2px solid #dee2e6;border-bottom:2px solid #dee2e6}.tabulator-row .tabulator-cell .tabulator-data-tree-control{display:-ms-inline-flexbox;display:inline-flex;-ms-flex-pack:center;justify-content:center;-ms-flex-align:center;align-items:center;vertical-align:middle;height:11px;width:11px;margin-right:5px;border:1px solid #ccc;border-radius:2px;background:rgba(0,0,0,.1);overflow:hidden}.tabulator-row .tabulator-cell .tabulator-data-tree-control:hover{cursor:pointer;background:rgba(0,0,0,.2)}.tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-collapse{display:inline-block;position:relative;height:7px;width:1px;background:transparent}.tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-collapse:after{position:absolute;content:"";left:-3px;top:3px;height:1px;width:7px;background:#ccc}.tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-expand{display:inline-block;position:relative;height:7px;width:1px;background:#ccc}.tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-expand:after{position:absolute;content:"";left:-3px;top:3px;height:1px;width:7px;background:#ccc}.tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle{display:-ms-inline-flexbox;display:inline-flex;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center;-moz-user-select:none;-khtml-user-select:none;-webkit-user-select:none;-o-user-select:none;height:15px;width:15px;border-radius:20px;background:#666;color:#fff;font-weight:700;font-size:1.1em}.tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle:hover{opacity:.7}.tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle.open .tabulator-responsive-collapse-toggle-close{display:initial}.tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle.open .tabulator-responsive-collapse-toggle-open,.tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle .tabulator-responsive-collapse-toggle-close{display:none}.tabulator-row .tabulator-cell .tabulator-traffic-light{display:inline-block;height:14px;width:14px;border-radius:14px}.tabulator-row.tabulator-group{box-sizing:border-box;border-bottom:1px solid #999;border-right:1px solid #dee2e6;border-top:1px solid #999;padding:5px;padding-left:10px;background:#fafafa;font-weight:700;min-width:100%}.tabulator-row.tabulator-group:hover{cursor:pointer;background-color:rgba(0,0,0,.1)}.tabulator-row.tabulator-group.tabulator-group-visible .tabulator-arrow{margin-right:10px;border-left:6px solid transparent;border-right:6px solid transparent;border-top:6px solid #666;border-bottom:0}.tabulator-row.tabulator-group.tabulator-group-level-1{padding-left:30px}.tabulator-row.tabulator-group.tabulator-group-level-2{padding-left:50px}.tabulator-row.tabulator-group.tabulator-group-level-3{padding-left:70px}.tabulator-row.tabulator-group.tabulator-group-level-4{padding-left:90px}.tabulator-row.tabulator-group.tabulator-group-level-5{padding-left:110px}.tabulator-row.tabulator-group .tabulator-group-toggle{display:inline-block}.tabulator-row.tabulator-group .tabulator-arrow{display:inline-block;width:0;height:0;margin-right:16px;border-top:6px solid transparent;border-bottom:6px solid transparent;border-right:0;border-left:6px solid #666;vertical-align:middle}.tabulator-row.tabulator-group span{margin-left:10px;color:#666}.tabulator-edit-select-list{position:absolute;display:inline-block;box-sizing:border-box;max-height:200px;background:#fff;border:1px solid #dee2e6;font-size:1rem;overflow-y:auto;-webkit-overflow-scrolling:touch;z-index:10000}.tabulator-edit-select-list .tabulator-edit-select-list-item{padding:4px}.tabulator-edit-select-list .tabulator-edit-select-list-item.active{color:#fff;background:#1d68cd}.tabulator-edit-select-list .tabulator-edit-select-list-item:hover{cursor:pointer;color:#fff;background:#1d68cd}.tabulator-edit-select-list .tabulator-edit-select-list-group{border-bottom:1px solid #dee2e6;padding:4px;padding-top:6px;font-weight:700}.tabulator-print-fullscreen{position:absolute;top:0;bottom:0;left:0;right:0;z-index:10000}body.tabulator-print-fullscreen-hide>:not(.tabulator-print-fullscreen){display:none!important}.tabulator-print-table{border-collapse:collapse} -/*# sourceMappingURL=tabulator_bootstrap4.min.css.map */ diff --git a/cookbook/static/tabulator/tabulator_midnight.min.css b/cookbook/static/tabulator/tabulator_midnight.min.css deleted file mode 100644 index ed8ed506..00000000 --- a/cookbook/static/tabulator/tabulator_midnight.min.css +++ /dev/null @@ -1,3 +0,0 @@ -/* Tabulator v4.5.3 (c) Oliver Folkerd */ -.tabulator{position:relative;border:1px solid #333;background-color:#222;overflow:hidden;font-size:14px;text-align:left;transform:translatez(0)}.tabulator[tabulator-layout=fitDataFill] .tabulator-tableHolder .tabulator-table{min-width:100%}.tabulator.tabulator-block-select{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.tabulator .tabulator-header{position:relative;box-sizing:border-box;width:100%;border-bottom:1px solid #999;background-color:#333;color:#fff;font-weight:700;white-space:nowrap;overflow:hidden;-moz-user-select:none;-khtml-user-select:none;-webkit-user-select:none;-o-user-select:none}.tabulator .tabulator-header.tabulator-header-hidden{display:none}.tabulator .tabulator-header .tabulator-col{display:inline-block;position:relative;box-sizing:border-box;border-right:1px solid #aaa;background-color:#333;text-align:left;vertical-align:bottom;overflow:hidden}.tabulator .tabulator-header .tabulator-col.tabulator-moving{position:absolute;border:1px solid #999;background:#1a1a1a;pointer-events:none}.tabulator .tabulator-header .tabulator-col .tabulator-col-content{box-sizing:border-box;position:relative;padding:4px}.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title{box-sizing:border-box;width:100%;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;vertical-align:bottom}.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title .tabulator-title-editor{box-sizing:border-box;width:100%;border:1px solid #999;padding:1px;background:#444;color:#fff}.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-arrow{display:inline-block;position:absolute;top:9px;right:8px;width:0;height:0;border-left:6px solid transparent;border-right:6px solid transparent;border-bottom:6px solid #bbb}.tabulator .tabulator-header .tabulator-col.tabulator-col-group .tabulator-col-group-cols{position:relative;display:-ms-flexbox;display:flex;border-top:1px solid #aaa;overflow:hidden}.tabulator .tabulator-header .tabulator-col.tabulator-col-group .tabulator-col-group-cols .tabulator-col:last-child{margin-right:-1px}.tabulator .tabulator-header .tabulator-col:first-child .tabulator-col-resize-handle.prev{display:none}.tabulator .tabulator-header .tabulator-col.ui-sortable-helper{position:absolute;background-color:#1a1a1a!important;border:1px solid #aaa}.tabulator .tabulator-header .tabulator-col .tabulator-header-filter{position:relative;box-sizing:border-box;margin-top:2px;width:100%;text-align:center}.tabulator .tabulator-header .tabulator-col .tabulator-header-filter textarea{height:auto!important}.tabulator .tabulator-header .tabulator-col .tabulator-header-filter svg{margin-top:3px}.tabulator .tabulator-header .tabulator-col .tabulator-header-filter input,.tabulator .tabulator-header .tabulator-col .tabulator-header-filter select{border:1px solid #999;background:#444;color:#fff}.tabulator .tabulator-header .tabulator-col .tabulator-header-filter input::-ms-clear{width:0;height:0}.tabulator .tabulator-header .tabulator-col.tabulator-sortable .tabulator-col-title{padding-right:25px}.tabulator .tabulator-header .tabulator-col.tabulator-sortable:hover{cursor:pointer;background-color:#1a1a1a}.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=none] .tabulator-col-content .tabulator-arrow{border-top:none;border-bottom:6px solid #bbb}.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=asc] .tabulator-col-content .tabulator-arrow{border-top:none;border-bottom:6px solid #666}.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=desc] .tabulator-col-content .tabulator-arrow{border-top:6px solid #666;border-bottom:none}.tabulator .tabulator-header .tabulator-col.tabulator-col-vertical .tabulator-col-content .tabulator-col-title{-ms-writing-mode:tb-rl;writing-mode:vertical-rl;text-orientation:mixed;display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center}.tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-col-vertical-flip .tabulator-col-title{transform:rotate(180deg)}.tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-sortable .tabulator-col-title{padding-right:0;padding-top:20px}.tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-sortable.tabulator-col-vertical-flip .tabulator-col-title{padding-right:0;padding-bottom:20px}.tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-sortable .tabulator-arrow{right:calc(50% - 6px)}.tabulator .tabulator-header .tabulator-frozen{display:inline-block;position:absolute;z-index:10}.tabulator .tabulator-header .tabulator-frozen.tabulator-frozen-left{border-right:2px solid #888}.tabulator .tabulator-header .tabulator-frozen.tabulator-frozen-right{border-left:2px solid #888}.tabulator .tabulator-header .tabulator-calcs-holder{box-sizing:border-box;min-width:600%;background:#1a1a1a!important;border-top:1px solid #888;border-bottom:1px solid #aaa;overflow:hidden}.tabulator .tabulator-header .tabulator-calcs-holder .tabulator-row{background:#1a1a1a!important}.tabulator .tabulator-header .tabulator-calcs-holder .tabulator-row .tabulator-col-resize-handle{display:none}.tabulator .tabulator-header .tabulator-frozen-rows-holder{min-width:600%}.tabulator .tabulator-header .tabulator-frozen-rows-holder:empty{display:none}.tabulator .tabulator-tableHolder{position:relative;width:100%;white-space:nowrap;overflow:auto;-webkit-overflow-scrolling:touch}.tabulator .tabulator-tableHolder:focus{outline:none}.tabulator .tabulator-tableHolder .tabulator-placeholder{box-sizing:border-box;display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;width:100%}.tabulator .tabulator-tableHolder .tabulator-placeholder[tabulator-render-mode=virtual]{position:absolute;top:0;left:0;height:100%}.tabulator .tabulator-tableHolder .tabulator-placeholder span{display:inline-block;margin:0 auto;padding:10px;color:#eee;font-weight:700;font-size:20px}.tabulator .tabulator-tableHolder .tabulator-table{position:relative;display:inline-block;background-color:#666;white-space:nowrap;overflow:visible;color:#fff}.tabulator .tabulator-tableHolder .tabulator-table .tabulator-row.tabulator-calcs{font-weight:700;background:#373737!important}.tabulator .tabulator-tableHolder .tabulator-table .tabulator-row.tabulator-calcs.tabulator-calcs-top{border-bottom:2px solid #888}.tabulator .tabulator-tableHolder .tabulator-table .tabulator-row.tabulator-calcs.tabulator-calcs-bottom{border-top:2px solid #888}.tabulator .tabulator-col-resize-handle{position:absolute;right:0;top:0;bottom:0;width:5px}.tabulator .tabulator-col-resize-handle.prev{left:0;right:auto}.tabulator .tabulator-col-resize-handle:hover{cursor:ew-resize}.tabulator .tabulator-footer{padding:5px 10px;border-top:1px solid #999;background-color:#333;text-align:right;color:#333;font-weight:700;white-space:nowrap;-ms-user-select:none;user-select:none;-moz-user-select:none;-khtml-user-select:none;-webkit-user-select:none;-o-user-select:none}.tabulator .tabulator-footer .tabulator-calcs-holder{box-sizing:border-box;width:calc(100% + 20px);margin:-5px -10px 5px;text-align:left;background:#262626!important;border-bottom:1px solid #888;border-top:1px solid #888;overflow:hidden}.tabulator .tabulator-footer .tabulator-calcs-holder .tabulator-row{background:#262626!important;color:#fff}.tabulator .tabulator-footer .tabulator-calcs-holder .tabulator-row .tabulator-col-resize-handle{display:none}.tabulator .tabulator-footer .tabulator-calcs-holder:only-child{margin-bottom:-5px;border-bottom:none}.tabulator .tabulator-footer .tabulator-paginator label{color:#fff}.tabulator .tabulator-footer .tabulator-page-size{display:inline-block;margin:0 5px;padding:2px 5px;border:1px solid #aaa;border-radius:3px}.tabulator .tabulator-footer .tabulator-pages{margin:0 7px}.tabulator .tabulator-footer .tabulator-page{display:inline-block;margin:0 2px;padding:2px 5px;border:1px solid #aaa;border-radius:3px;background:hsla(0,0%,100%,.2);color:#333;font-family:inherit;font-weight:inherit;font-size:inherit}.tabulator .tabulator-footer .tabulator-page.active{color:#fff}.tabulator .tabulator-footer .tabulator-page:disabled{opacity:.5}.tabulator .tabulator-footer .tabulator-page:not(.disabled):hover{cursor:pointer;background:rgba(0,0,0,.2);color:#fff}.tabulator .tabulator-loader{position:absolute;display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;top:0;left:0;z-index:100;height:100%;width:100%;background:rgba(0,0,0,.4);text-align:center}.tabulator .tabulator-loader .tabulator-loader-msg{display:inline-block;margin:0 auto;padding:10px 20px;border-radius:10px;background:#fff;font-weight:700;font-size:16px}.tabulator .tabulator-loader .tabulator-loader-msg.tabulator-loading{border:4px solid #333;color:#000}.tabulator .tabulator-loader .tabulator-loader-msg.tabulator-error{border:4px solid #d00;color:#590000}.tabulator-row{position:relative;box-sizing:border-box;min-height:22px;background-color:#666}.tabulator-row:nth-child(2n){background-color:#444}.tabulator-row.tabulator-selectable:hover{background-color:#999;cursor:pointer}.tabulator-row.tabulator-selected{background-color:#000}.tabulator-row.tabulator-selected:hover{background-color:#888;cursor:pointer}.tabulator-row.tabulator-moving{position:absolute;border-top:1px solid #888;border-bottom:1px solid #888;pointer-events:none!important;z-index:15}.tabulator-row .tabulator-row-resize-handle{position:absolute;right:0;bottom:0;left:0;height:5px}.tabulator-row .tabulator-row-resize-handle.prev{top:0;bottom:auto}.tabulator-row .tabulator-row-resize-handle:hover{cursor:ns-resize}.tabulator-row .tabulator-frozen{display:inline-block;position:absolute;background-color:inherit;z-index:10}.tabulator-row .tabulator-frozen.tabulator-frozen-left{border-right:2px solid #888}.tabulator-row .tabulator-frozen.tabulator-frozen-right{border-left:2px solid #888}.tabulator-row .tabulator-responsive-collapse{box-sizing:border-box;padding:5px;border-top:1px solid #888;border-bottom:1px solid #888}.tabulator-row .tabulator-responsive-collapse:empty{display:none}.tabulator-row .tabulator-responsive-collapse table{font-size:14px}.tabulator-row .tabulator-responsive-collapse table tr td{position:relative}.tabulator-row .tabulator-responsive-collapse table tr td:first-of-type{padding-right:10px}.tabulator-row .tabulator-cell{display:inline-block;position:relative;box-sizing:border-box;padding:4px;border-right:1px solid #888;vertical-align:middle;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.tabulator-row .tabulator-cell.tabulator-editing{border:1px solid #999;padding:0}.tabulator-row .tabulator-cell.tabulator-editing input,.tabulator-row .tabulator-cell.tabulator-editing select{border:1px;background:transparent}.tabulator-row .tabulator-cell.tabulator-validation-fail{border:1px solid #d00}.tabulator-row .tabulator-cell.tabulator-validation-fail input,.tabulator-row .tabulator-cell.tabulator-validation-fail select{border:1px;background:transparent;color:#d00}.tabulator-row .tabulator-cell:first-child .tabulator-col-resize-handle.prev{display:none}.tabulator-row .tabulator-cell.tabulator-row-handle{display:-ms-inline-flexbox;display:inline-flex;-ms-flex-align:center;align-items:center;-moz-user-select:none;-khtml-user-select:none;-webkit-user-select:none;-o-user-select:none}.tabulator-row .tabulator-cell.tabulator-row-handle .tabulator-row-handle-box{width:80%}.tabulator-row .tabulator-cell.tabulator-row-handle .tabulator-row-handle-box .tabulator-row-handle-bar{width:100%;height:3px;margin-top:2px;background:#666}.tabulator-row .tabulator-cell .tabulator-data-tree-branch{display:inline-block;vertical-align:middle;height:9px;width:7px;margin-top:-9px;margin-right:5px;border-bottom-left-radius:1px;border-left:2px solid #888;border-bottom:2px solid #888}.tabulator-row .tabulator-cell .tabulator-data-tree-control{display:-ms-inline-flexbox;display:inline-flex;-ms-flex-pack:center;justify-content:center;-ms-flex-align:center;align-items:center;vertical-align:middle;height:11px;width:11px;margin-right:5px;border:1px solid #fff;border-radius:2px;background:rgba(0,0,0,.1);overflow:hidden}.tabulator-row .tabulator-cell .tabulator-data-tree-control:hover{cursor:pointer;background:rgba(0,0,0,.2)}.tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-collapse{display:inline-block;position:relative;height:7px;width:1px;background:transparent}.tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-collapse:after{position:absolute;content:"";left:-3px;top:3px;height:1px;width:7px;background:#fff}.tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-expand{display:inline-block;position:relative;height:7px;width:1px;background:#fff}.tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-expand:after{position:absolute;content:"";left:-3px;top:3px;height:1px;width:7px;background:#fff}.tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle{display:-ms-inline-flexbox;display:inline-flex;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center;-moz-user-select:none;-khtml-user-select:none;-webkit-user-select:none;-o-user-select:none;height:15px;width:15px;border-radius:20px;background:#fff;color:#666;font-weight:700;font-size:1.1em}.tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle:hover{opacity:.7}.tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle.open .tabulator-responsive-collapse-toggle-close{display:initial}.tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle.open .tabulator-responsive-collapse-toggle-open,.tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle .tabulator-responsive-collapse-toggle-close{display:none}.tabulator-row .tabulator-cell .tabulator-traffic-light{display:inline-block;height:14px;width:14px;border-radius:14px}.tabulator-row.tabulator-group{box-sizing:border-box;border-bottom:1px solid #999;border-right:1px solid #888;border-top:1px solid #999;padding:5px;padding-left:10px;background:#ccc;font-weight:700;color:#333;min-width:100%}.tabulator-row.tabulator-group:hover{cursor:pointer;background-color:rgba(0,0,0,.1)}.tabulator-row.tabulator-group.tabulator-group-visible .tabulator-arrow{margin-right:10px;border-left:6px solid transparent;border-right:6px solid transparent;border-top:6px solid #666;border-bottom:0}.tabulator-row.tabulator-group.tabulator-group-level-1{padding-left:30px}.tabulator-row.tabulator-group.tabulator-group-level-2{padding-left:50px}.tabulator-row.tabulator-group.tabulator-group-level-3{padding-left:70px}.tabulator-row.tabulator-group.tabulator-group-level-4{padding-left:90px}.tabulator-row.tabulator-group.tabulator-group-level-5{padding-left:110px}.tabulator-row.tabulator-group .tabulator-group-toggle{display:inline-block}.tabulator-row.tabulator-group .tabulator-arrow{display:inline-block;width:0;height:0;margin-right:16px;border-top:6px solid transparent;border-bottom:6px solid transparent;border-right:0;border-left:6px solid #666;vertical-align:middle}.tabulator-row.tabulator-group span{margin-left:10px;color:#666}.tabulator-edit-select-list{position:absolute;display:inline-block;box-sizing:border-box;max-height:200px;background:#fff;border:1px solid #888;font-size:14px;overflow-y:auto;-webkit-overflow-scrolling:touch;z-index:10000}.tabulator-edit-select-list .tabulator-edit-select-list-item{padding:4px;color:#666}.tabulator-edit-select-list .tabulator-edit-select-list-item.active{color:#999;background:#444}.tabulator-edit-select-list .tabulator-edit-select-list-item:hover{cursor:pointer;color:#999;background:#666}.tabulator-edit-select-list .tabulator-edit-select-list-group{border-bottom:1px solid #888;padding:4px;padding-top:6px;color:#fff;font-weight:700}.tabulator-print-fullscreen{position:absolute;top:0;bottom:0;left:0;right:0;z-index:10000}body.tabulator-print-fullscreen-hide>:not(.tabulator-print-fullscreen){display:none!important}.tabulator-print-table{border-collapse:collapse} -/*# sourceMappingURL=tabulator_midnight.min.css.map */ diff --git a/cookbook/static/tabulator/tabulator_modern.min.css b/cookbook/static/tabulator/tabulator_modern.min.css deleted file mode 100644 index 333c6194..00000000 --- a/cookbook/static/tabulator/tabulator_modern.min.css +++ /dev/null @@ -1,3 +0,0 @@ -/* Tabulator v4.5.3 (c) Oliver Folkerd */ -.tabulator{position:relative;border:1px solid #fff;background-color:#fff;overflow:hidden;font-size:16px;text-align:left;transform:translatez(0)}.tabulator[tabulator-layout=fitDataFill] .tabulator-tableHolder .tabulator-table{min-width:100%}.tabulator.tabulator-block-select{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.tabulator .tabulator-header{position:relative;box-sizing:border-box;width:100%;border-bottom:3px solid #3759d7;margin-bottom:4px;background-color:#fff;color:#3759d7;font-weight:700;white-space:nowrap;overflow:hidden;-moz-user-select:none;-khtml-user-select:none;-webkit-user-select:none;-o-user-select:none;padding-left:10px;font-size:1.1em}.tabulator .tabulator-header.tabulator-header-hidden{display:none}.tabulator .tabulator-header .tabulator-col{display:inline-block;position:relative;box-sizing:border-box;border-right:2px solid #fff;background-color:#fff;text-align:left;vertical-align:bottom;overflow:hidden}.tabulator .tabulator-header .tabulator-col.tabulator-moving{position:absolute;border:1px solid #3759d7;background:#e6e6e6;pointer-events:none}.tabulator .tabulator-header .tabulator-col .tabulator-col-content{box-sizing:border-box;position:relative;padding:4px}.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title{box-sizing:border-box;width:100%;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;vertical-align:bottom}.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title .tabulator-title-editor{box-sizing:border-box;width:100%;border:1px solid #3759d7;padding:1px;background:#fff;font-size:1em;color:#3759d7}.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-arrow{display:inline-block;position:absolute;top:9px;right:8px;width:0;height:0;border-left:6px solid transparent;border-right:6px solid transparent;border-bottom:6px solid #b7c3f1}.tabulator .tabulator-header .tabulator-col.tabulator-col-group .tabulator-col-group-cols{position:relative;display:-ms-flexbox;display:flex;border-top:2px solid #3759d7;overflow:hidden}.tabulator .tabulator-header .tabulator-col.tabulator-col-group .tabulator-col-group-cols .tabulator-col:last-child{margin-right:-1px}.tabulator .tabulator-header .tabulator-col:first-child .tabulator-col-resize-handle.prev{display:none}.tabulator .tabulator-header .tabulator-col.ui-sortable-helper{position:absolute;background-color:#e6e6e6!important;border:1px solid #fff}.tabulator .tabulator-header .tabulator-col .tabulator-header-filter{position:relative;box-sizing:border-box;margin-top:2px;width:100%;text-align:center}.tabulator .tabulator-header .tabulator-col .tabulator-header-filter textarea{height:auto!important}.tabulator .tabulator-header .tabulator-col .tabulator-header-filter svg{margin-top:3px}.tabulator .tabulator-header .tabulator-col .tabulator-header-filter input::-ms-clear{width:0;height:0}.tabulator .tabulator-header .tabulator-col.tabulator-sortable .tabulator-col-title{padding-right:25px}.tabulator .tabulator-header .tabulator-col.tabulator-sortable:hover{cursor:pointer;background-color:#e6e6e6}.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=none] .tabulator-col-content .tabulator-arrow{border-top:none;border-bottom:6px solid #b7c3f1}.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=asc] .tabulator-col-content .tabulator-arrow{border-top:none;border-bottom:6px solid #3759d7}.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=desc] .tabulator-col-content .tabulator-arrow{border-top:6px solid #3759d7;border-bottom:none}.tabulator .tabulator-header .tabulator-col.tabulator-col-vertical .tabulator-col-content .tabulator-col-title{-ms-writing-mode:tb-rl;writing-mode:vertical-rl;text-orientation:mixed;display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center}.tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-col-vertical-flip .tabulator-col-title{transform:rotate(180deg)}.tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-sortable .tabulator-col-title{padding-right:0;padding-top:20px}.tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-sortable.tabulator-col-vertical-flip .tabulator-col-title{padding-right:0;padding-bottom:20px}.tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-sortable .tabulator-arrow{right:calc(50% - 6px)}.tabulator .tabulator-header .tabulator-frozen{display:inline-block;position:absolute;z-index:10}.tabulator .tabulator-header .tabulator-frozen.tabulator-frozen-left{padding-left:10px;border-right:2px solid #fff}.tabulator .tabulator-header .tabulator-frozen.tabulator-frozen-right{border-left:2px solid #fff}.tabulator .tabulator-header .tabulator-calcs-holder{box-sizing:border-box;min-width:600%;border-top:2px solid #3759d7!important;background:#fff!important;border-top:1px solid #fff;border-bottom:1px solid #fff;overflow:hidden}.tabulator .tabulator-header .tabulator-calcs-holder .tabulator-row{padding-left:0!important;background:#fff!important}.tabulator .tabulator-header .tabulator-calcs-holder .tabulator-row .tabulator-col-resize-handle{display:none}.tabulator .tabulator-header .tabulator-calcs-holder .tabulator-row .tabulator-cell{background:none}.tabulator .tabulator-header .tabulator-frozen-rows-holder{min-width:600%}.tabulator .tabulator-header .tabulator-frozen-rows-holder:empty{display:none}.tabulator .tabulator-tableHolder{position:relative;width:100%;white-space:nowrap;overflow:auto;-webkit-overflow-scrolling:touch}.tabulator .tabulator-tableHolder:focus{outline:none}.tabulator .tabulator-tableHolder .tabulator-placeholder{box-sizing:border-box;display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;width:100%}.tabulator .tabulator-tableHolder .tabulator-placeholder[tabulator-render-mode=virtual]{position:absolute;top:0;left:0;height:100%}.tabulator .tabulator-tableHolder .tabulator-placeholder span{display:inline-block;margin:0 auto;padding:10px;color:#3759d7;font-weight:700;font-size:20px}.tabulator .tabulator-tableHolder .tabulator-table{position:relative;display:inline-block;background-color:#f3f3f3;white-space:nowrap;overflow:visible;color:#333}.tabulator .tabulator-tableHolder .tabulator-table .tabulator-row.tabulator-calcs{font-weight:700;background:#f2f2f2!important}.tabulator .tabulator-tableHolder .tabulator-table .tabulator-row.tabulator-calcs.tabulator-calcs-top{border-bottom:2px solid #3759d7}.tabulator .tabulator-tableHolder .tabulator-table .tabulator-row.tabulator-calcs.tabulator-calcs-bottom{border-top:2px solid #3759d7}.tabulator .tabulator-col-resize-handle{position:absolute;right:0;top:0;bottom:0;width:5px}.tabulator .tabulator-col-resize-handle.prev{left:0;right:auto}.tabulator .tabulator-col-resize-handle:hover{cursor:ew-resize}.tabulator .tabulator-footer{padding:5px 10px;border-top:1px solid #999;background-color:#fff;text-align:right;color:#3759d7;font-weight:700;white-space:nowrap;-ms-user-select:none;user-select:none;-moz-user-select:none;-khtml-user-select:none;-webkit-user-select:none;-o-user-select:none}.tabulator .tabulator-footer .tabulator-calcs-holder{box-sizing:border-box;width:calc(100% + 20px);margin:-5px -10px 5px;text-align:left;background:#fff!important;border-top:3px solid #3759d7!important;border-bottom:2px solid #3759d7!important;border-bottom:1px solid #fff;border-top:1px solid #fff;overflow:hidden}.tabulator .tabulator-footer .tabulator-calcs-holder .tabulator-row{background:#fff!important}.tabulator .tabulator-footer .tabulator-calcs-holder .tabulator-row .tabulator-col-resize-handle{display:none}.tabulator .tabulator-footer .tabulator-calcs-holder .tabulator-row .tabulator-cell{background:none}.tabulator .tabulator-footer .tabulator-calcs-holder:only-child{margin-bottom:-5px;border-bottom:none;border-bottom:none!important}.tabulator .tabulator-footer .tabulator-paginator{color:#3759d7;font-family:inherit;font-weight:inherit;font-size:inherit}.tabulator .tabulator-footer .tabulator-page-size{display:inline-block;margin:0 5px;padding:2px 5px;border:1px solid #aaa;border-radius:3px}.tabulator .tabulator-footer .tabulator-pages{margin:0 7px}.tabulator .tabulator-footer .tabulator-page{display:inline-block;margin:0 2px;padding:2px 5px;border:1px solid #aaa;border-radius:3px;background:hsla(0,0%,100%,.2)}.tabulator .tabulator-footer .tabulator-page.active{color:#3759d7}.tabulator .tabulator-footer .tabulator-page:disabled{opacity:.5}.tabulator .tabulator-footer .tabulator-page:not(.disabled):hover{cursor:pointer;background:rgba(0,0,0,.2);color:#fff}.tabulator .tabulator-loader{position:absolute;display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;top:0;left:0;z-index:100;height:100%;width:100%;background:rgba(0,0,0,.4);text-align:center}.tabulator .tabulator-loader .tabulator-loader-msg{display:inline-block;margin:0 auto;padding:10px 20px;border-radius:10px;background:#fff;font-weight:700;font-size:16px}.tabulator .tabulator-loader .tabulator-loader-msg.tabulator-loading{border:4px solid #333;color:#000}.tabulator .tabulator-loader .tabulator-loader-msg.tabulator-error{border:4px solid #d00;color:#590000}.tabulator-row{position:relative;box-sizing:border-box;min-height:24px;background-color:#3759d7;padding-left:10px!important;margin-bottom:2px}.tabulator-row:nth-child(2n){background-color:#627ce0}.tabulator-row:nth-child(2n) .tabulator-cell{background-color:#fff}.tabulator-row.tabulator-selectable:hover{cursor:pointer}.tabulator-row.tabulator-selectable:hover .tabulator-cell{background-color:#bbb}.tabulator-row.tabulator-selected .tabulator-cell{background-color:#9abcea}.tabulator-row.tabulator-selected:hover .tabulator-cell{background-color:#769bcc;cursor:pointer}.tabulator-row.tabulator-moving{position:absolute;border-top:1px solid #fff;border-bottom:1px solid #fff;pointer-events:none!important;z-index:15}.tabulator-row .tabulator-row-resize-handle{position:absolute;right:0;bottom:0;left:0;height:5px}.tabulator-row .tabulator-row-resize-handle.prev{top:0;bottom:auto}.tabulator-row .tabulator-row-resize-handle:hover{cursor:ns-resize}.tabulator-row .tabulator-frozen{display:inline-block;position:absolute;background-color:inherit;z-index:10}.tabulator-row .tabulator-frozen.tabulator-frozen-left{padding-left:10px;border-right:2px solid #fff}.tabulator-row .tabulator-frozen.tabulator-frozen-right{border-left:2px solid #fff}.tabulator-row .tabulator-responsive-collapse{box-sizing:border-box;padding:5px;border-top:1px solid #fff;border-bottom:1px solid #fff}.tabulator-row .tabulator-responsive-collapse:empty{display:none}.tabulator-row .tabulator-responsive-collapse table{font-size:16px}.tabulator-row .tabulator-responsive-collapse table tr td{position:relative}.tabulator-row .tabulator-responsive-collapse table tr td:first-of-type{padding-right:10px}.tabulator-row .tabulator-cell{display:inline-block;position:relative;box-sizing:border-box;padding:6px 4px;border-right:2px solid #fff;vertical-align:middle;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;background-color:#f3f3f3}.tabulator-row .tabulator-cell.tabulator-editing{border:1px solid #1d68cd;padding:0}.tabulator-row .tabulator-cell.tabulator-editing input,.tabulator-row .tabulator-cell.tabulator-editing select{border:1px;background:transparent}.tabulator-row .tabulator-cell.tabulator-validation-fail{border:1px solid #d00}.tabulator-row .tabulator-cell.tabulator-validation-fail input,.tabulator-row .tabulator-cell.tabulator-validation-fail select{border:1px;background:transparent;color:#d00}.tabulator-row .tabulator-cell:first-child .tabulator-col-resize-handle.prev{display:none}.tabulator-row .tabulator-cell.tabulator-row-handle{display:-ms-inline-flexbox;display:inline-flex;-ms-flex-align:center;align-items:center;-moz-user-select:none;-khtml-user-select:none;-webkit-user-select:none;-o-user-select:none}.tabulator-row .tabulator-cell.tabulator-row-handle .tabulator-row-handle-box{width:80%}.tabulator-row .tabulator-cell.tabulator-row-handle .tabulator-row-handle-box .tabulator-row-handle-bar{width:100%;height:3px;margin-top:2px;background:#666}.tabulator-row .tabulator-cell .tabulator-data-tree-branch{display:inline-block;vertical-align:middle;height:9px;width:7px;margin-top:-9px;margin-right:5px;border-bottom-left-radius:1px;border-left:2px solid #fff;border-bottom:2px solid #fff}.tabulator-row .tabulator-cell .tabulator-data-tree-control{display:-ms-inline-flexbox;display:inline-flex;-ms-flex-pack:center;justify-content:center;-ms-flex-align:center;align-items:center;vertical-align:middle;height:11px;width:11px;margin-right:5px;border:1px solid #333;border-radius:2px;background:rgba(0,0,0,.1);overflow:hidden}.tabulator-row .tabulator-cell .tabulator-data-tree-control:hover{cursor:pointer;background:rgba(0,0,0,.2)}.tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-collapse{display:inline-block;position:relative;height:7px;width:1px;background:transparent}.tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-collapse:after{position:absolute;content:"";left:-3px;top:3px;height:1px;width:7px;background:#333}.tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-expand{display:inline-block;position:relative;height:7px;width:1px;background:#333}.tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-expand:after{position:absolute;content:"";left:-3px;top:3px;height:1px;width:7px;background:#333}.tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle{display:-ms-inline-flexbox;display:inline-flex;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center;-moz-user-select:none;-khtml-user-select:none;-webkit-user-select:none;-o-user-select:none;height:15px;width:15px;border-radius:20px;background:#666;color:#f3f3f3;font-weight:700;font-size:1.1em}.tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle:hover{opacity:.7}.tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle.open .tabulator-responsive-collapse-toggle-close{display:initial}.tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle.open .tabulator-responsive-collapse-toggle-open,.tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle .tabulator-responsive-collapse-toggle-close{display:none}.tabulator-row .tabulator-cell .tabulator-traffic-light{display:inline-block;height:14px;width:14px;border-radius:14px}.tabulator-row.tabulator-group{box-sizing:border-box;border-bottom:2px solid #3759d7;border-top:2px solid #3759d7;padding:5px;padding-left:10px;background:#8ca0e8;font-weight:700;color:fff;margin-bottom:2px;min-width:100%}.tabulator-row.tabulator-group:hover{cursor:pointer;background-color:rgba(0,0,0,.1)}.tabulator-row.tabulator-group.tabulator-group-visible .tabulator-arrow{margin-right:10px;border-left:6px solid transparent;border-right:6px solid transparent;border-top:6px solid #3759d7;border-bottom:0}.tabulator-row.tabulator-group.tabulator-group-level-1{padding-left:30px}.tabulator-row.tabulator-group.tabulator-group-level-2{padding-left:50px}.tabulator-row.tabulator-group.tabulator-group-level-3{padding-left:70px}.tabulator-row.tabulator-group.tabulator-group-level-4{padding-left:90px}.tabulator-row.tabulator-group.tabulator-group-level-5{padding-left:110px}.tabulator-row.tabulator-group .tabulator-group-toggle{display:inline-block}.tabulator-row.tabulator-group .tabulator-arrow{display:inline-block;width:0;height:0;margin-right:16px;border-top:6px solid transparent;border-bottom:6px solid transparent;border-right:0;border-left:6px solid #3759d7;vertical-align:middle}.tabulator-row.tabulator-group span{margin-left:10px;color:#3759d7}.tabulator-edit-select-list{position:absolute;display:inline-block;box-sizing:border-box;max-height:200px;background:#f3f3f3;border:1px solid #1d68cd;font-size:16px;overflow-y:auto;-webkit-overflow-scrolling:touch;z-index:10000}.tabulator-edit-select-list .tabulator-edit-select-list-item{padding:4px;color:#333}.tabulator-edit-select-list .tabulator-edit-select-list-item.active{color:#f3f3f3;background:#1d68cd}.tabulator-edit-select-list .tabulator-edit-select-list-item:hover{cursor:pointer;color:#f3f3f3;background:#1d68cd}.tabulator-edit-select-list .tabulator-edit-select-list-group{border-bottom:1px solid #fff;padding:4px;padding-top:6px;color:#333;font-weight:700}.tabulator-print-fullscreen{position:absolute;top:0;bottom:0;left:0;right:0;z-index:10000}body.tabulator-print-fullscreen-hide>:not(.tabulator-print-fullscreen){display:none!important}.tabulator-print-table{border-collapse:collapse} -/*# sourceMappingURL=tabulator_modern.min.css.map */ diff --git a/cookbook/static/tabulator/tabulator_simple.min.css b/cookbook/static/tabulator/tabulator_simple.min.css deleted file mode 100644 index 6820ae39..00000000 --- a/cookbook/static/tabulator/tabulator_simple.min.css +++ /dev/null @@ -1,3 +0,0 @@ -/* Tabulator v4.5.3 (c) Oliver Folkerd */ -.tabulator{position:relative;background-color:#fff;overflow:hidden;font-size:14px;text-align:left;transform:translatez(0)}.tabulator[tabulator-layout=fitDataFill] .tabulator-tableHolder .tabulator-table{min-width:100%}.tabulator.tabulator-block-select{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.tabulator .tabulator-header{position:relative;box-sizing:border-box;width:100%;border-bottom:1px solid #999;background-color:#fff;color:#555;font-weight:700;white-space:nowrap;overflow:hidden;-moz-user-select:none;-khtml-user-select:none;-webkit-user-select:none;-o-user-select:none}.tabulator .tabulator-header.tabulator-header-hidden{display:none}.tabulator .tabulator-header .tabulator-col{display:inline-block;position:relative;box-sizing:border-box;border-right:1px solid #ddd;background-color:#fff;text-align:left;vertical-align:bottom;overflow:hidden}.tabulator .tabulator-header .tabulator-col.tabulator-moving{position:absolute;border:1px solid #999;background:#e6e6e6;pointer-events:none}.tabulator .tabulator-header .tabulator-col .tabulator-col-content{box-sizing:border-box;position:relative;padding:4px}.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title{box-sizing:border-box;width:100%;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;vertical-align:bottom}.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title .tabulator-title-editor{box-sizing:border-box;width:100%;border:1px solid #999;padding:1px;background:#fff}.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-arrow{display:inline-block;position:absolute;top:9px;right:8px;width:0;height:0;border-left:6px solid transparent;border-right:6px solid transparent;border-bottom:6px solid #bbb}.tabulator .tabulator-header .tabulator-col.tabulator-col-group .tabulator-col-group-cols{position:relative;display:-ms-flexbox;display:flex;border-top:1px solid #ddd;overflow:hidden}.tabulator .tabulator-header .tabulator-col.tabulator-col-group .tabulator-col-group-cols .tabulator-col:last-child{margin-right:-1px}.tabulator .tabulator-header .tabulator-col:first-child .tabulator-col-resize-handle.prev{display:none}.tabulator .tabulator-header .tabulator-col.ui-sortable-helper{position:absolute;background-color:#e6e6e6!important;border:1px solid #ddd}.tabulator .tabulator-header .tabulator-col .tabulator-header-filter{position:relative;box-sizing:border-box;margin-top:2px;width:100%;text-align:center}.tabulator .tabulator-header .tabulator-col .tabulator-header-filter textarea{height:auto!important}.tabulator .tabulator-header .tabulator-col .tabulator-header-filter svg{margin-top:3px}.tabulator .tabulator-header .tabulator-col .tabulator-header-filter input::-ms-clear{width:0;height:0}.tabulator .tabulator-header .tabulator-col.tabulator-sortable .tabulator-col-title{padding-right:25px}.tabulator .tabulator-header .tabulator-col.tabulator-sortable:hover{cursor:pointer;background-color:#e6e6e6}.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=none] .tabulator-col-content .tabulator-arrow{border-top:none;border-bottom:6px solid #bbb}.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=asc] .tabulator-col-content .tabulator-arrow{border-top:none;border-bottom:6px solid #666}.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=desc] .tabulator-col-content .tabulator-arrow{border-top:6px solid #666;border-bottom:none}.tabulator .tabulator-header .tabulator-col.tabulator-col-vertical .tabulator-col-content .tabulator-col-title{-ms-writing-mode:tb-rl;writing-mode:vertical-rl;text-orientation:mixed;display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center}.tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-col-vertical-flip .tabulator-col-title{transform:rotate(180deg)}.tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-sortable .tabulator-col-title{padding-right:0;padding-top:20px}.tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-sortable.tabulator-col-vertical-flip .tabulator-col-title{padding-right:0;padding-bottom:20px}.tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-sortable .tabulator-arrow{right:calc(50% - 6px)}.tabulator .tabulator-header .tabulator-frozen{display:inline-block;position:absolute;z-index:10}.tabulator .tabulator-header .tabulator-frozen.tabulator-frozen-left{border-right:2px solid #ddd}.tabulator .tabulator-header .tabulator-frozen.tabulator-frozen-right{border-left:2px solid #ddd}.tabulator .tabulator-header .tabulator-calcs-holder{box-sizing:border-box;min-width:600%;background:#f2f2f2!important;border-top:1px solid #ddd;border-bottom:1px solid #999;overflow:hidden}.tabulator .tabulator-header .tabulator-calcs-holder .tabulator-row{background:#f2f2f2!important}.tabulator .tabulator-header .tabulator-calcs-holder .tabulator-row .tabulator-col-resize-handle{display:none}.tabulator .tabulator-header .tabulator-frozen-rows-holder{min-width:600%}.tabulator .tabulator-header .tabulator-frozen-rows-holder:empty{display:none}.tabulator .tabulator-tableHolder{position:relative;width:100%;white-space:nowrap;overflow:auto;-webkit-overflow-scrolling:touch}.tabulator .tabulator-tableHolder:focus{outline:none}.tabulator .tabulator-tableHolder .tabulator-placeholder{box-sizing:border-box;display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;width:100%}.tabulator .tabulator-tableHolder .tabulator-placeholder[tabulator-render-mode=virtual]{position:absolute;top:0;left:0;height:100%}.tabulator .tabulator-tableHolder .tabulator-placeholder span{display:inline-block;margin:0 auto;padding:10px;color:#000;font-weight:700;font-size:20px}.tabulator .tabulator-tableHolder .tabulator-table{position:relative;display:inline-block;background-color:#fff;white-space:nowrap;overflow:visible;color:#333}.tabulator .tabulator-tableHolder .tabulator-table .tabulator-row.tabulator-calcs{font-weight:700;background:#f2f2f2!important}.tabulator .tabulator-tableHolder .tabulator-table .tabulator-row.tabulator-calcs.tabulator-calcs-top{border-bottom:2px solid #ddd}.tabulator .tabulator-tableHolder .tabulator-table .tabulator-row.tabulator-calcs.tabulator-calcs-bottom{border-top:2px solid #ddd}.tabulator .tabulator-col-resize-handle{position:absolute;right:0;top:0;bottom:0;width:5px}.tabulator .tabulator-col-resize-handle.prev{left:0;right:auto}.tabulator .tabulator-col-resize-handle:hover{cursor:ew-resize}.tabulator .tabulator-footer{padding:5px 10px;border-top:1px solid #999;background-color:#fff;text-align:right;color:#555;font-weight:700;white-space:nowrap;-ms-user-select:none;user-select:none;-moz-user-select:none;-khtml-user-select:none;-webkit-user-select:none;-o-user-select:none}.tabulator .tabulator-footer .tabulator-calcs-holder{box-sizing:border-box;width:calc(100% + 20px);margin:-5px -10px 5px;text-align:left;background:#f2f2f2!important;border-bottom:1px solid #fff;border-top:1px solid #ddd;overflow:hidden}.tabulator .tabulator-footer .tabulator-calcs-holder .tabulator-row{background:#f2f2f2!important}.tabulator .tabulator-footer .tabulator-calcs-holder .tabulator-row .tabulator-col-resize-handle{display:none}.tabulator .tabulator-footer .tabulator-calcs-holder:only-child{margin-bottom:-5px;border-bottom:none}.tabulator .tabulator-footer .tabulator-paginator{color:#555;font-family:inherit;font-weight:inherit;font-size:inherit}.tabulator .tabulator-footer .tabulator-page-size{display:inline-block;margin:0 5px;padding:2px 5px;border:1px solid #aaa;border-radius:3px}.tabulator .tabulator-footer .tabulator-pages{margin:0 7px}.tabulator .tabulator-footer .tabulator-page{display:inline-block;margin:0 2px;padding:2px 5px;border:1px solid #aaa;border-radius:3px;background:hsla(0,0%,100%,.2)}.tabulator .tabulator-footer .tabulator-page.active{color:#d00}.tabulator .tabulator-footer .tabulator-page:disabled{opacity:.5}.tabulator .tabulator-footer .tabulator-page:not(.disabled):hover{cursor:pointer;background:rgba(0,0,0,.2);color:#fff}.tabulator .tabulator-loader{position:absolute;display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;top:0;left:0;z-index:100;height:100%;width:100%;background:rgba(0,0,0,.4);text-align:center}.tabulator .tabulator-loader .tabulator-loader-msg{display:inline-block;margin:0 auto;padding:10px 20px;border-radius:10px;background:#fff;font-weight:700;font-size:16px}.tabulator .tabulator-loader .tabulator-loader-msg.tabulator-loading{border:4px solid #333;color:#000}.tabulator .tabulator-loader .tabulator-loader-msg.tabulator-error{border:4px solid #d00;color:#590000}.tabulator-row{position:relative;box-sizing:border-box;min-height:22px;border-bottom:1px solid #ddd}.tabulator-row,.tabulator-row:nth-child(2n){background-color:#fff}.tabulator-row.tabulator-selectable:hover{background-color:#bbb;cursor:pointer}.tabulator-row.tabulator-selected{background-color:#9abcea}.tabulator-row.tabulator-selected:hover{background-color:#769bcc;cursor:pointer}.tabulator-row.tabulator-moving{position:absolute;border-top:1px solid #ddd;border-bottom:1px solid #ddd;pointer-events:none!important;z-index:15}.tabulator-row .tabulator-row-resize-handle{position:absolute;right:0;bottom:0;left:0;height:5px}.tabulator-row .tabulator-row-resize-handle.prev{top:0;bottom:auto}.tabulator-row .tabulator-row-resize-handle:hover{cursor:ns-resize}.tabulator-row .tabulator-frozen{display:inline-block;position:absolute;background-color:inherit;z-index:10}.tabulator-row .tabulator-frozen.tabulator-frozen-left{border-right:2px solid #ddd}.tabulator-row .tabulator-frozen.tabulator-frozen-right{border-left:2px solid #ddd}.tabulator-row .tabulator-responsive-collapse{box-sizing:border-box;padding:5px;border-top:1px solid #ddd;border-bottom:1px solid #ddd}.tabulator-row .tabulator-responsive-collapse:empty{display:none}.tabulator-row .tabulator-responsive-collapse table{font-size:14px}.tabulator-row .tabulator-responsive-collapse table tr td{position:relative}.tabulator-row .tabulator-responsive-collapse table tr td:first-of-type{padding-right:10px}.tabulator-row .tabulator-cell{display:inline-block;position:relative;box-sizing:border-box;padding:4px;border-right:1px solid #ddd;vertical-align:middle;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.tabulator-row .tabulator-cell:last-of-type{border-right:none}.tabulator-row .tabulator-cell.tabulator-editing{border:1px solid #1d68cd;padding:0}.tabulator-row .tabulator-cell.tabulator-editing input,.tabulator-row .tabulator-cell.tabulator-editing select{border:1px;background:transparent}.tabulator-row .tabulator-cell.tabulator-validation-fail{border:1px solid #d00}.tabulator-row .tabulator-cell.tabulator-validation-fail input,.tabulator-row .tabulator-cell.tabulator-validation-fail select{border:1px;background:transparent;color:#d00}.tabulator-row .tabulator-cell:first-child .tabulator-col-resize-handle.prev{display:none}.tabulator-row .tabulator-cell.tabulator-row-handle{display:-ms-inline-flexbox;display:inline-flex;-ms-flex-align:center;align-items:center;-moz-user-select:none;-khtml-user-select:none;-webkit-user-select:none;-o-user-select:none}.tabulator-row .tabulator-cell.tabulator-row-handle .tabulator-row-handle-box{width:80%}.tabulator-row .tabulator-cell.tabulator-row-handle .tabulator-row-handle-box .tabulator-row-handle-bar{width:100%;height:3px;margin-top:2px;background:#666}.tabulator-row .tabulator-cell .tabulator-data-tree-branch{display:inline-block;vertical-align:middle;height:9px;width:7px;margin-top:-9px;margin-right:5px;border-bottom-left-radius:1px;border-left:2px solid #ddd;border-bottom:2px solid #ddd}.tabulator-row .tabulator-cell .tabulator-data-tree-control{display:-ms-inline-flexbox;display:inline-flex;-ms-flex-pack:center;justify-content:center;-ms-flex-align:center;align-items:center;vertical-align:middle;height:11px;width:11px;margin-right:5px;border:1px solid #333;border-radius:2px;background:rgba(0,0,0,.1);overflow:hidden}.tabulator-row .tabulator-cell .tabulator-data-tree-control:hover{cursor:pointer;background:rgba(0,0,0,.2)}.tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-collapse{display:inline-block;position:relative;height:7px;width:1px;background:transparent}.tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-collapse:after{position:absolute;content:"";left:-3px;top:3px;height:1px;width:7px;background:#333}.tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-expand{display:inline-block;position:relative;height:7px;width:1px;background:#333}.tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-expand:after{position:absolute;content:"";left:-3px;top:3px;height:1px;width:7px;background:#333}.tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle{display:-ms-inline-flexbox;display:inline-flex;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center;-moz-user-select:none;-khtml-user-select:none;-webkit-user-select:none;-o-user-select:none;height:15px;width:15px;border-radius:20px;background:#666;color:#fff;font-weight:700;font-size:1.1em}.tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle:hover{opacity:.7}.tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle.open .tabulator-responsive-collapse-toggle-close{display:initial}.tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle.open .tabulator-responsive-collapse-toggle-open,.tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle .tabulator-responsive-collapse-toggle-close{display:none}.tabulator-row .tabulator-cell .tabulator-traffic-light{display:inline-block;height:14px;width:14px;border-radius:14px}.tabulator-row.tabulator-group{box-sizing:border-box;border-bottom:1px solid #999;border-right:1px solid #ddd;border-top:1px solid #999;padding:5px;padding-left:10px;background:#fafafa;font-weight:700;min-width:100%}.tabulator-row.tabulator-group:hover{cursor:pointer;background-color:rgba(0,0,0,.1)}.tabulator-row.tabulator-group.tabulator-group-visible .tabulator-arrow{margin-right:10px;border-left:6px solid transparent;border-right:6px solid transparent;border-top:6px solid #666;border-bottom:0}.tabulator-row.tabulator-group.tabulator-group-level-1{padding-left:30px}.tabulator-row.tabulator-group.tabulator-group-level-2{padding-left:50px}.tabulator-row.tabulator-group.tabulator-group-level-3{padding-left:70px}.tabulator-row.tabulator-group.tabulator-group-level-4{padding-left:90px}.tabulator-row.tabulator-group.tabulator-group-level-5{padding-left:110px}.tabulator-row.tabulator-group .tabulator-group-toggle{display:inline-block}.tabulator-row.tabulator-group .tabulator-arrow{display:inline-block;width:0;height:0;margin-right:16px;border-top:6px solid transparent;border-bottom:6px solid transparent;border-right:0;border-left:6px solid #666;vertical-align:middle}.tabulator-row.tabulator-group span{margin-left:10px;color:#666}.tabulator-edit-select-list{position:absolute;display:inline-block;box-sizing:border-box;max-height:200px;background:#fff;border:1px solid #ddd;font-size:14px;overflow-y:auto;-webkit-overflow-scrolling:touch;z-index:10000}.tabulator-edit-select-list .tabulator-edit-select-list-item{padding:4px;color:#333}.tabulator-edit-select-list .tabulator-edit-select-list-item.active{color:#fff;background:#1d68cd}.tabulator-edit-select-list .tabulator-edit-select-list-item:hover{cursor:pointer;color:#fff;background:#1d68cd}.tabulator-edit-select-list .tabulator-edit-select-list-group{border-bottom:1px solid #ddd;padding:4px;padding-top:6px;color:#333;font-weight:700}.tabulator-print-fullscreen{position:absolute;top:0;bottom:0;left:0;right:0;z-index:10000}body.tabulator-print-fullscreen-hide>:not(.tabulator-print-fullscreen){display:none!important}.tabulator-print-table{border-collapse:collapse} -/*# sourceMappingURL=tabulator_simple.min.css.map */ diff --git a/cookbook/static/tabulator/tabulator_site.min.css b/cookbook/static/tabulator/tabulator_site.min.css deleted file mode 100644 index 7ee17eaf..00000000 --- a/cookbook/static/tabulator/tabulator_site.min.css +++ /dev/null @@ -1,3 +0,0 @@ -/* Tabulator v4.5.3 (c) Oliver Folkerd */ -.tabulator{position:relative;border-bottom:5px solid #222;background-color:#fff;font-size:14px;text-align:left;overflow:hidden;transform:translatez(0)}.tabulator[tabulator-layout=fitDataFill] .tabulator-tableHolder .tabulator-table{min-width:100%}.tabulator[tabulator-layout=fitColumns] .tabulator-row .tabulator-cell:last-of-type{border-right:none}.tabulator.tabulator-block-select{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.tabulator .tabulator-header{position:relative;box-sizing:border-box;width:100%;border-bottom:3px solid #3fb449;background-color:#222;color:#fff;font-weight:700;white-space:nowrap;overflow:hidden;-moz-user-select:none;-khtml-user-select:none;-webkit-user-select:none;-o-user-select:none}.tabulator .tabulator-header.tabulator-header-hidden{display:none}.tabulator .tabulator-header .tabulator-col{display:inline-block;position:relative;box-sizing:border-box;border-right:1px solid #aaa;background-color:#222;text-align:left;vertical-align:bottom;overflow:hidden}.tabulator .tabulator-header .tabulator-col.tabulator-moving{position:absolute;border:1px solid #3fb449;background:#090909;pointer-events:none}.tabulator .tabulator-header .tabulator-col .tabulator-col-content{box-sizing:border-box;position:relative;padding:8px}.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title{box-sizing:border-box;width:100%;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;vertical-align:bottom}.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title .tabulator-title-editor{box-sizing:border-box;width:100%;border:1px solid #999;padding:1px;background:#fff}.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-arrow{display:inline-block;position:absolute;top:14px;right:8px;width:0;height:0;border-left:6px solid transparent;border-right:6px solid transparent;border-bottom:6px solid #bbb}.tabulator .tabulator-header .tabulator-col.tabulator-col-group .tabulator-col-group-cols{position:relative;display:-ms-flexbox;display:flex;border-top:1px solid #aaa;overflow:hidden}.tabulator .tabulator-header .tabulator-col.tabulator-col-group .tabulator-col-group-cols .tabulator-col:last-child{margin-right:-1px}.tabulator .tabulator-header .tabulator-col:first-child .tabulator-col-resize-handle.prev{display:none}.tabulator .tabulator-header .tabulator-col.ui-sortable-helper{position:absolute;background-color:#222!important;border:1px solid #aaa}.tabulator .tabulator-header .tabulator-col .tabulator-header-filter{position:relative;box-sizing:border-box;margin-top:2px;width:100%;text-align:center}.tabulator .tabulator-header .tabulator-col .tabulator-header-filter textarea{height:auto!important}.tabulator .tabulator-header .tabulator-col .tabulator-header-filter svg{margin-top:3px}.tabulator .tabulator-header .tabulator-col .tabulator-header-filter input::-ms-clear{width:0;height:0}.tabulator .tabulator-header .tabulator-col.tabulator-sortable .tabulator-col-title{padding-right:25px}.tabulator .tabulator-header .tabulator-col.tabulator-sortable:hover{cursor:pointer;background-color:#090909}.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=none] .tabulator-col-content .tabulator-arrow{border-top:none;border-bottom:6px solid #bbb}.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=asc] .tabulator-col-content .tabulator-arrow{border-top:none;border-bottom:6px solid #3fb449}.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=desc] .tabulator-col-content .tabulator-arrow{border-top:6px solid #3fb449;border-bottom:none}.tabulator .tabulator-header .tabulator-col.tabulator-col-vertical .tabulator-col-content .tabulator-col-title{-ms-writing-mode:tb-rl;writing-mode:vertical-rl;text-orientation:mixed;display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center}.tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-col-vertical-flip .tabulator-col-title{transform:rotate(180deg)}.tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-sortable .tabulator-col-title{padding-right:0;padding-top:20px}.tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-sortable.tabulator-col-vertical-flip .tabulator-col-title{padding-right:0;padding-bottom:20px}.tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-sortable .tabulator-arrow{right:calc(50% - 6px)}.tabulator .tabulator-header .tabulator-frozen{display:inline-block;position:absolute;z-index:10}.tabulator .tabulator-header .tabulator-frozen.tabulator-frozen-left{border-right:2px solid #aaa}.tabulator .tabulator-header .tabulator-frozen.tabulator-frozen-right{border-left:2px solid #aaa}.tabulator .tabulator-header .tabulator-calcs-holder{box-sizing:border-box;min-width:600%;background:#3c3c3c!important;border-top:1px solid #aaa;overflow:hidden}.tabulator .tabulator-header .tabulator-calcs-holder .tabulator-row{background:#3c3c3c!important}.tabulator .tabulator-header .tabulator-calcs-holder .tabulator-row .tabulator-col-resize-handle{display:none}.tabulator .tabulator-header .tabulator-frozen-rows-holder{min-width:600%}.tabulator .tabulator-header .tabulator-frozen-rows-holder:empty{display:none}.tabulator .tabulator-tableHolder{position:relative;width:100%;white-space:nowrap;overflow:auto;-webkit-overflow-scrolling:touch}.tabulator .tabulator-tableHolder:focus{outline:none}.tabulator .tabulator-tableHolder .tabulator-placeholder{box-sizing:border-box;display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;width:100%}.tabulator .tabulator-tableHolder .tabulator-placeholder[tabulator-render-mode=virtual]{position:absolute;top:0;left:0;height:100%}.tabulator .tabulator-tableHolder .tabulator-placeholder span{display:inline-block;margin:0 auto;padding:10px;color:#3fb449;font-weight:700;font-size:20px}.tabulator .tabulator-tableHolder .tabulator-table{position:relative;display:inline-block;background-color:#fff;white-space:nowrap;overflow:visible;color:#333}.tabulator .tabulator-tableHolder .tabulator-table .tabulator-row.tabulator-calcs{font-weight:700;background:#484848!important;color:#fff}.tabulator .tabulator-footer{padding:5px 10px;padding-top:8px;border-top:3px solid #3fb449;background-color:#222;text-align:right;color:#222;font-weight:700;white-space:nowrap;-ms-user-select:none;user-select:none;-moz-user-select:none;-khtml-user-select:none;-webkit-user-select:none;-o-user-select:none}.tabulator .tabulator-footer .tabulator-calcs-holder{box-sizing:border-box;width:calc(100% + 20px);margin:-8px -10px 8px;text-align:left;background:#3c3c3c!important;border-bottom:1px solid #aaa;overflow:hidden}.tabulator .tabulator-footer .tabulator-calcs-holder .tabulator-row{background:#3c3c3c!important;color:#fff!important}.tabulator .tabulator-footer .tabulator-calcs-holder .tabulator-row .tabulator-col-resize-handle{display:none}.tabulator .tabulator-footer .tabulator-calcs-holder:only-child{margin-bottom:-5px;border-bottom:none}.tabulator .tabulator-footer .tabulator-paginator label{color:#fff}.tabulator .tabulator-footer .tabulator-page-size{display:inline-block;margin:0 5px;padding:2px 5px;border:1px solid #aaa;border-radius:3px}.tabulator .tabulator-footer .tabulator-pages{margin:0 7px}.tabulator .tabulator-footer .tabulator-page{display:inline-block;margin:0 2px;padding:2px 5px;border:1px solid #aaa;border-radius:3px;background:#fff;color:#222;font-family:inherit;font-weight:inherit;font-size:inherit}.tabulator .tabulator-footer .tabulator-page.active{color:#3fb449}.tabulator .tabulator-footer .tabulator-page:disabled{opacity:.5}.tabulator .tabulator-footer .tabulator-page:not(.disabled):hover{cursor:pointer;background:rgba(0,0,0,.2);color:#fff}.tabulator .tabulator-col-resize-handle{position:absolute;right:0;top:0;bottom:0;width:5px}.tabulator .tabulator-col-resize-handle.prev{left:0;right:auto}.tabulator .tabulator-col-resize-handle:hover{cursor:ew-resize}.tabulator .tabulator-loader{position:absolute;display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;top:0;left:0;z-index:100;height:100%;width:100%;background:rgba(0,0,0,.4);text-align:center}.tabulator .tabulator-loader .tabulator-loader-msg{display:inline-block;margin:0 auto;padding:10px 20px;border-radius:10px;background:#fff;font-weight:700;font-size:16px}.tabulator .tabulator-loader .tabulator-loader-msg.tabulator-loading{border:4px solid #333;color:#000}.tabulator .tabulator-loader .tabulator-loader-msg.tabulator-error{border:4px solid #d00;color:#590000}.tabulator-row{position:relative;box-sizing:border-box;min-height:22px;background-color:#fff}.tabulator-row.tabulator-row-even{background-color:#efefef}.tabulator-row.tabulator-selectable:hover{background-color:#bbb;cursor:pointer}.tabulator-row.tabulator-selected{background-color:#9abcea}.tabulator-row.tabulator-selected:hover{background-color:#769bcc;cursor:pointer}.tabulator-row.tabulator-row-moving{border:1px solid #000;background:#fff}.tabulator-row.tabulator-moving{position:absolute;border-top:1px solid #aaa;border-bottom:1px solid #aaa;pointer-events:none!important;z-index:15}.tabulator-row .tabulator-row-resize-handle{position:absolute;right:0;bottom:0;left:0;height:5px}.tabulator-row .tabulator-row-resize-handle.prev{top:0;bottom:auto}.tabulator-row .tabulator-row-resize-handle:hover{cursor:ns-resize}.tabulator-row .tabulator-frozen{display:inline-block;position:absolute;background-color:inherit;z-index:10}.tabulator-row .tabulator-frozen.tabulator-frozen-left{border-right:2px solid #aaa}.tabulator-row .tabulator-frozen.tabulator-frozen-right{border-left:2px solid #aaa}.tabulator-row .tabulator-responsive-collapse{box-sizing:border-box;padding:5px;border-top:1px solid #aaa;border-bottom:1px solid #aaa}.tabulator-row .tabulator-responsive-collapse:empty{display:none}.tabulator-row .tabulator-responsive-collapse table{font-size:14px}.tabulator-row .tabulator-responsive-collapse table tr td{position:relative}.tabulator-row .tabulator-responsive-collapse table tr td:first-of-type{padding-right:10px}.tabulator-row .tabulator-cell{display:inline-block;position:relative;box-sizing:border-box;padding:6px;border-right:1px solid #aaa;vertical-align:middle;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.tabulator-row .tabulator-cell.tabulator-editing{border:1px solid #1d68cd;padding:0}.tabulator-row .tabulator-cell.tabulator-editing input,.tabulator-row .tabulator-cell.tabulator-editing select{border:1px;background:transparent}.tabulator-row .tabulator-cell.tabulator-validation-fail{border:1px solid #d00}.tabulator-row .tabulator-cell.tabulator-validation-fail input,.tabulator-row .tabulator-cell.tabulator-validation-fail select{border:1px;background:transparent;color:#d00}.tabulator-row .tabulator-cell:first-child .tabulator-col-resize-handle.prev{display:none}.tabulator-row .tabulator-cell.tabulator-row-handle{display:-ms-inline-flexbox;display:inline-flex;-ms-flex-align:center;align-items:center;-moz-user-select:none;-khtml-user-select:none;-webkit-user-select:none;-o-user-select:none}.tabulator-row .tabulator-cell.tabulator-row-handle .tabulator-row-handle-box{width:80%}.tabulator-row .tabulator-cell.tabulator-row-handle .tabulator-row-handle-box .tabulator-row-handle-bar{width:100%;height:3px;margin-top:2px;background:#3fb449}.tabulator-row .tabulator-cell .tabulator-data-tree-branch{display:inline-block;vertical-align:middle;height:9px;width:7px;margin-top:-9px;margin-right:5px;border-bottom-left-radius:1px;border-left:2px solid #aaa;border-bottom:2px solid #aaa}.tabulator-row .tabulator-cell .tabulator-data-tree-control{display:-ms-inline-flexbox;display:inline-flex;-ms-flex-pack:center;justify-content:center;-ms-flex-align:center;align-items:center;vertical-align:middle;height:11px;width:11px;margin-right:5px;border:1px solid #333;border-radius:2px;background:rgba(0,0,0,.1);overflow:hidden}.tabulator-row .tabulator-cell .tabulator-data-tree-control:hover{cursor:pointer;background:rgba(0,0,0,.2)}.tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-collapse{display:inline-block;position:relative;height:7px;width:1px;background:transparent}.tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-collapse:after{position:absolute;content:"";left:-3px;top:3px;height:1px;width:7px;background:#333}.tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-expand{display:inline-block;position:relative;height:7px;width:1px;background:#333}.tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-expand:after{position:absolute;content:"";left:-3px;top:3px;height:1px;width:7px;background:#333}.tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle{display:-ms-inline-flexbox;display:inline-flex;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center;-moz-user-select:none;-khtml-user-select:none;-webkit-user-select:none;-o-user-select:none;height:15px;width:15px;border-radius:20px;background:#666;color:#fff;font-weight:700;font-size:1.1em}.tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle:hover{opacity:.7}.tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle.open .tabulator-responsive-collapse-toggle-close{display:initial}.tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle.open .tabulator-responsive-collapse-toggle-open,.tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle .tabulator-responsive-collapse-toggle-close{display:none}.tabulator-row .tabulator-cell .tabulator-traffic-light{display:inline-block;height:14px;width:14px;border-radius:14px}.tabulator-row.tabulator-group{box-sizing:border-box;border-right:1px solid #aaa;border-top:1px solid #000;border-bottom:2px solid #3fb449;padding:5px;padding-left:10px;background:#222;color:#fff;font-weight:700;min-width:100%}.tabulator-row.tabulator-group:hover{cursor:pointer;background-color:#090909}.tabulator-row.tabulator-group.tabulator-group-visible .tabulator-arrow{margin-right:10px;border-left:6px solid transparent;border-right:6px solid transparent;border-top:6px solid #3fb449;border-bottom:0}.tabulator-row.tabulator-group.tabulator-group-level-1{padding-left:30px}.tabulator-row.tabulator-group.tabulator-group-level-2{padding-left:50px}.tabulator-row.tabulator-group.tabulator-group-level-3{padding-left:70px}.tabulator-row.tabulator-group.tabulator-group-level-4{padding-left:90px}.tabulator-row.tabulator-group.tabulator-group-level-5{padding-left:110px}.tabulator-row.tabulator-group .tabulator-group-toggle{display:inline-block}.tabulator-row.tabulator-group .tabulator-arrow{display:inline-block;width:0;height:0;margin-right:16px;border-top:6px solid transparent;border-bottom:6px solid transparent;border-right:0;border-left:6px solid #3fb449;vertical-align:middle}.tabulator-row.tabulator-group span{margin-left:10px;color:#3fb449}.tabulator-edit-select-list{position:absolute;display:inline-block;box-sizing:border-box;max-height:200px;background:#fff;border:1px solid #aaa;font-size:14px;overflow-y:auto;-webkit-overflow-scrolling:touch;z-index:10000}.tabulator-edit-select-list .tabulator-edit-select-list-item{padding:4px;color:#333}.tabulator-edit-select-list .tabulator-edit-select-list-item.active{color:#fff;background:#1d68cd}.tabulator-edit-select-list .tabulator-edit-select-list-item:hover{cursor:pointer;color:#fff;background:#1d68cd}.tabulator-edit-select-list .tabulator-edit-select-list-group{border-bottom:1px solid #aaa;padding:4px;padding-top:6px;color:#333;font-weight:700}.tabulator-print-fullscreen{position:absolute;top:0;bottom:0;left:0;right:0;z-index:10000}body.tabulator-print-fullscreen-hide>:not(.tabulator-print-fullscreen){display:none!important}.tabulator-print-table{border-collapse:collapse} -/*# sourceMappingURL=tabulator_site.min.css.map */ diff --git a/cookbook/static/themes/tandoor.min.css b/cookbook/static/themes/tandoor.min.css index 261c798e..9dc091af 100644 --- a/cookbook/static/themes/tandoor.min.css +++ b/cookbook/static/themes/tandoor.min.css @@ -10440,13 +10440,13 @@ footer a:hover { background-color: transparent !important; } -textarea, input:not([type="submit"]):not([class="multiselect__input"]):not([class="select2-search__field"]), select { +textarea, input:not([type="submit"]):not([class="multiselect__input"]):not([class="select2-search__field"]):not([class="vue-treeselect__input"]), select { background-color: white !important; border-radius: .25rem !important; border: 1px solid #ced4da !important; } -.multiselect__tag, .multiselect__option--highlight, .multiselect__option--highlight:after { +.multiselect__tag, .multiselect__option--highlight, .multiselect__option--highlight:after, .vue-treeselect__multi-value-item { background-color: #cfd5cd !important; color: #212529 !important; } @@ -10455,7 +10455,7 @@ textarea, input:not([type="submit"]):not([class="multiselect__input"]):not([clas background-color: #a7240e !important; } -.multiselect__tag-icon:after { +.multiselect__tag-icon:after, .vue-treeselect__icon vue-treeselect__value-remove, .vue-treeselect__value-remove { color: #212529 !important } diff --git a/cookbook/static/vue/css/chunk-vendors.css b/cookbook/static/vue/css/chunk-vendors.css deleted file mode 100644 index aafd58d7..00000000 --- a/cookbook/static/vue/css/chunk-vendors.css +++ /dev/null @@ -1,4 +0,0 @@ -@charset "UTF-8"; -/*! - * BootstrapVue Custom CSS (https://bootstrap-vue.org) - */.bv-no-focus-ring:focus{outline:none}@media (max-width:575.98px){.bv-d-xs-down-none{display:none!important}}@media (max-width:767.98px){.bv-d-sm-down-none{display:none!important}}@media (max-width:991.98px){.bv-d-md-down-none{display:none!important}}@media (max-width:1199.98px){.bv-d-lg-down-none{display:none!important}}.bv-d-xl-down-none{display:none!important}.form-control.focus{color:#495057;background-color:#fff;border-color:#80bdff;outline:0;box-shadow:0 0 0 .2rem rgba(0,123,255,.25)}.form-control.focus.is-valid{border-color:#28a745;box-shadow:0 0 0 .2rem rgba(40,167,69,.25)}.form-control.focus.is-invalid{border-color:#dc3545;box-shadow:0 0 0 .2rem rgba(220,53,69,.25)}.b-avatar{display:inline-flex;align-items:center;justify-content:center;vertical-align:middle;flex-shrink:0;width:2.5rem;height:2.5rem;font-size:inherit;font-weight:400;line-height:1;max-width:100%;max-height:auto;text-align:center;overflow:visible;position:relative;transition:color .15s ease-in-out,background-color .15s ease-in-out,box-shadow .15s ease-in-out}.b-avatar:focus{outline:0}.b-avatar.btn,.b-avatar[href]{padding:0;border:0}.b-avatar.btn .b-avatar-img img,.b-avatar[href] .b-avatar-img img{transition:transform .15s ease-in-out}.b-avatar.btn:not(:disabled):not(.disabled),.b-avatar[href]:not(:disabled):not(.disabled){cursor:pointer}.b-avatar.btn:not(:disabled):not(.disabled):hover .b-avatar-img img,.b-avatar[href]:not(:disabled):not(.disabled):hover .b-avatar-img img{transform:scale(1.15)}.b-avatar.disabled,.b-avatar:disabled,.b-avatar[disabled]{opacity:.65;pointer-events:none}.b-avatar .b-avatar-custom,.b-avatar .b-avatar-img,.b-avatar .b-avatar-text{border-radius:inherit;width:100%;height:100%;overflow:hidden;display:flex;justify-content:center;align-items:center;-webkit-mask-image:radial-gradient(#fff,#000);mask-image:radial-gradient(#fff,#000)}.b-avatar .b-avatar-text{text-transform:uppercase;white-space:nowrap}.b-avatar[href]{text-decoration:none}.b-avatar>.b-icon{width:60%;height:auto;max-width:100%}.b-avatar .b-avatar-img img{width:100%;height:100%;max-height:auto;border-radius:inherit;-o-object-fit:cover;object-fit:cover}.b-avatar .b-avatar-badge{position:absolute;min-height:1.5em;min-width:1.5em;padding:.25em;line-height:1;border-radius:10em;font-size:70%;font-weight:700;z-index:1}.b-avatar-sm{width:1.5rem;height:1.5rem}.b-avatar-sm .b-avatar-text{font-size:.6rem}.b-avatar-sm .b-avatar-badge{font-size:.42rem}.b-avatar-lg{width:3.5rem;height:3.5rem}.b-avatar-lg .b-avatar-text{font-size:1.4rem}.b-avatar-lg .b-avatar-badge{font-size:.98rem}.b-avatar-group .b-avatar-group-inner{display:flex;flex-wrap:wrap}.b-avatar-group .b-avatar{border:1px solid #dee2e6}.b-avatar-group .btn.b-avatar:hover:not(.disabled):not(disabled),.b-avatar-group a.b-avatar:hover:not(.disabled):not(disabled){z-index:1}.b-calendar{display:inline-flex}.b-calendar .b-calendar-inner{min-width:250px}.b-calendar .b-calendar-header,.b-calendar .b-calendar-nav{margin-bottom:.25rem}.b-calendar .b-calendar-nav .btn{padding:.25rem}.b-calendar output{padding:.25rem;font-size:80%}.b-calendar output.readonly{background-color:#e9ecef;opacity:1}.b-calendar .b-calendar-footer{margin-top:.5rem}.b-calendar .b-calendar-grid{padding:0;margin:0;overflow:hidden}.b-calendar .b-calendar-grid .row{flex-wrap:nowrap}.b-calendar .b-calendar-grid-caption{padding:.25rem}.b-calendar .b-calendar-grid-body .col[data-date] .btn{width:32px;height:32px;font-size:14px;line-height:1;margin:3px auto;padding:9px 0}.b-calendar .btn.disabled,.b-calendar .btn:disabled,.b-calendar .btn[aria-disabled=true]{cursor:default;pointer-events:none}.card-img-left{border-top-left-radius:calc(.25rem - 1px);border-bottom-left-radius:calc(.25rem - 1px)}.card-img-right{border-top-right-radius:calc(.25rem - 1px);border-bottom-right-radius:calc(.25rem - 1px)}.dropdown.dropleft .dropdown-toggle.dropdown-toggle-no-caret:before,.dropdown:not(.dropleft) .dropdown-toggle.dropdown-toggle-no-caret:after{display:none!important}.dropdown .dropdown-menu:focus{outline:none}.b-dropdown-form{display:inline-block;padding:.25rem 1.5rem;width:100%;clear:both;font-weight:400}.b-dropdown-form:focus{outline:1px dotted!important;outline:5px auto -webkit-focus-ring-color!important}.b-dropdown-form.disabled,.b-dropdown-form:disabled{outline:0!important;color:#6c757d;pointer-events:none}.b-dropdown-text{display:inline-block;padding:.25rem 1.5rem;margin-bottom:0;width:100%;clear:both;font-weight:lighter}.custom-checkbox.b-custom-control-lg,.input-group-lg .custom-checkbox{font-size:1.25rem;line-height:1.5;padding-left:1.875rem}.custom-checkbox.b-custom-control-lg .custom-control-label:before,.input-group-lg .custom-checkbox .custom-control-label:before{top:.3125rem;left:-1.875rem;width:1.25rem;height:1.25rem;border-radius:.3rem}.custom-checkbox.b-custom-control-lg .custom-control-label:after,.input-group-lg .custom-checkbox .custom-control-label:after{top:.3125rem;left:-1.875rem;width:1.25rem;height:1.25rem;background-size:50% 50%}.custom-checkbox.b-custom-control-sm,.input-group-sm .custom-checkbox{font-size:.875rem;line-height:1.5;padding-left:1.3125rem}.custom-checkbox.b-custom-control-sm .custom-control-label:before,.input-group-sm .custom-checkbox .custom-control-label:before{top:.21875rem;left:-1.3125rem;width:.875rem;height:.875rem;border-radius:.2rem}.custom-checkbox.b-custom-control-sm .custom-control-label:after,.input-group-sm .custom-checkbox .custom-control-label:after{top:.21875rem;left:-1.3125rem;width:.875rem;height:.875rem;background-size:50% 50%}.custom-switch.b-custom-control-lg,.input-group-lg .custom-switch{padding-left:2.8125rem}.custom-switch.b-custom-control-lg .custom-control-label,.input-group-lg .custom-switch .custom-control-label{font-size:1.25rem;line-height:1.5}.custom-switch.b-custom-control-lg .custom-control-label:before,.input-group-lg .custom-switch .custom-control-label:before{top:.3125rem;height:1.25rem;left:-2.8125rem;width:2.1875rem;border-radius:.625rem}.custom-switch.b-custom-control-lg .custom-control-label:after,.input-group-lg .custom-switch .custom-control-label:after{top:calc(.3125rem + 2px);left:calc(-2.8125rem + 2px);width:calc(1.25rem - 4px);height:calc(1.25rem - 4px);border-radius:.625rem;background-size:50% 50%}.custom-switch.b-custom-control-lg .custom-control-input:checked~.custom-control-label:after,.input-group-lg .custom-switch .custom-control-input:checked~.custom-control-label:after{transform:translateX(.9375rem)}.custom-switch.b-custom-control-sm,.input-group-sm .custom-switch{padding-left:1.96875rem}.custom-switch.b-custom-control-sm .custom-control-label,.input-group-sm .custom-switch .custom-control-label{font-size:.875rem;line-height:1.5}.custom-switch.b-custom-control-sm .custom-control-label:before,.input-group-sm .custom-switch .custom-control-label:before{top:.21875rem;left:-1.96875rem;width:1.53125rem;height:.875rem;border-radius:.4375rem}.custom-switch.b-custom-control-sm .custom-control-label:after,.input-group-sm .custom-switch .custom-control-label:after{top:calc(.21875rem + 2px);left:calc(-1.96875rem + 2px);width:calc(.875rem - 4px);height:calc(.875rem - 4px);border-radius:.4375rem;background-size:50% 50%}.custom-switch.b-custom-control-sm .custom-control-input:checked~.custom-control-label:after,.input-group-sm .custom-switch .custom-control-input:checked~.custom-control-label:after{transform:translateX(.65625rem)}.input-group>.input-group-append:last-child>.btn-group:not(:last-child):not(.dropdown-toggle)>.btn,.input-group>.input-group-append:not(:last-child)>.btn-group>.btn,.input-group>.input-group-prepend>.btn-group>.btn{border-top-right-radius:0;border-bottom-right-radius:0}.input-group>.input-group-append>.btn-group>.btn,.input-group>.input-group-prepend:first-child>.btn-group:not(:first-child)>.btn,.input-group>.input-group-prepend:not(:first-child)>.btn-group>.btn{border-top-left-radius:0;border-bottom-left-radius:0}.b-form-btn-label-control.form-control{display:flex;align-items:stretch;height:auto;padding:0;background-image:none}.input-group .b-form-btn-label-control.form-control{padding:0}.b-form-btn-label-control.form-control[dir=rtl],[dir=rtl] .b-form-btn-label-control.form-control{flex-direction:row-reverse}.b-form-btn-label-control.form-control[dir=rtl]>label,[dir=rtl] .b-form-btn-label-control.form-control>label{text-align:right}.b-form-btn-label-control.form-control>.btn{line-height:1;font-size:inherit;box-shadow:none!important;border:0}.b-form-btn-label-control.form-control>.btn:disabled{pointer-events:none}.b-form-btn-label-control.form-control.is-valid>.btn{color:#28a745}.b-form-btn-label-control.form-control.is-invalid>.btn{color:#dc3545}.b-form-btn-label-control.form-control>.dropdown-menu{padding:.5rem}.b-form-btn-label-control.form-control>.form-control{height:auto;min-height:calc(1.5em + .75rem);padding-left:.25rem;margin:0;border:0;outline:0;background:transparent;word-break:break-word;font-size:inherit;white-space:normal;cursor:pointer}.b-form-btn-label-control.form-control>.form-control.form-control-sm{min-height:calc(1.5em + .5rem)}.b-form-btn-label-control.form-control>.form-control.form-control-lg{min-height:calc(1.5em + 1rem)}.input-group.input-group-sm .b-form-btn-label-control.form-control>.form-control{min-height:calc(1.5em + .5rem);padding-top:.25rem;padding-bottom:.25rem}.input-group.input-group-lg .b-form-btn-label-control.form-control>.form-control{min-height:calc(1.5em + 1rem);padding-top:.5rem;padding-bottom:.5rem}.b-form-btn-label-control.form-control[aria-disabled=true],.b-form-btn-label-control.form-control[aria-readonly=true]{background-color:#e9ecef;opacity:1}.b-form-btn-label-control.form-control[aria-disabled=true]{pointer-events:none}.b-form-btn-label-control.form-control[aria-disabled=true]>label{cursor:default}.b-form-btn-label-control.btn-group>.dropdown-menu{padding:.5rem}.custom-file-label{white-space:nowrap;overflow-x:hidden}.b-custom-control-lg.custom-file,.b-custom-control-lg .custom-file-input,.b-custom-control-lg .custom-file-label,.input-group-lg.custom-file,.input-group-lg .custom-file-input,.input-group-lg .custom-file-label{font-size:1.25rem;height:calc(1.5em + 1rem + 2px)}.b-custom-control-lg .custom-file-label,.b-custom-control-lg .custom-file-label:after,.input-group-lg .custom-file-label,.input-group-lg .custom-file-label:after{padding:.5rem 1rem;line-height:1.5}.b-custom-control-lg .custom-file-label,.input-group-lg .custom-file-label{border-radius:.3rem}.b-custom-control-lg .custom-file-label:after,.input-group-lg .custom-file-label:after{font-size:inherit;height:calc(1.5em + 1rem);border-radius:0 .3rem .3rem 0}.b-custom-control-sm.custom-file,.b-custom-control-sm .custom-file-input,.b-custom-control-sm .custom-file-label,.input-group-sm.custom-file,.input-group-sm .custom-file-input,.input-group-sm .custom-file-label{font-size:.875rem;height:calc(1.5em + .5rem + 2px)}.b-custom-control-sm .custom-file-label,.b-custom-control-sm .custom-file-label:after,.input-group-sm .custom-file-label,.input-group-sm .custom-file-label:after{padding:.25rem .5rem;line-height:1.5}.b-custom-control-sm .custom-file-label,.input-group-sm .custom-file-label{border-radius:.2rem}.b-custom-control-sm .custom-file-label:after,.input-group-sm .custom-file-label:after{font-size:inherit;height:calc(1.5em + .5rem);border-radius:0 .2rem .2rem 0}.form-control.is-invalid,.form-control.is-valid,.was-validated .form-control:invalid,.was-validated .form-control:valid{background-position:right calc(.375em + .1875rem) center}input[type=color].form-control{height:calc(1.5em + .75rem + 2px);padding:.125rem .25rem}.input-group-sm input[type=color].form-control,input[type=color].form-control.form-control-sm{height:calc(1.5em + .5rem + 2px);padding:.125rem .25rem}.input-group-lg input[type=color].form-control,input[type=color].form-control.form-control-lg{height:calc(1.5em + 1rem + 2px);padding:.125rem .25rem}input[type=color].form-control:disabled{background-color:#adb5bd;opacity:.65}.input-group>.custom-range{position:relative;flex:1 1 auto;width:1%;margin-bottom:0}.input-group>.custom-file+.custom-range,.input-group>.custom-range+.custom-file,.input-group>.custom-range+.custom-range,.input-group>.custom-range+.custom-select,.input-group>.custom-range+.form-control,.input-group>.custom-range+.form-control-plaintext,.input-group>.custom-select+.custom-range,.input-group>.form-control+.custom-range,.input-group>.form-control-plaintext+.custom-range{margin-left:-1px}.input-group>.custom-range:focus{z-index:3}.input-group>.custom-range:not(:last-child){border-top-right-radius:0;border-bottom-right-radius:0}.input-group>.custom-range:not(:first-child){border-top-left-radius:0;border-bottom-left-radius:0}.input-group>.custom-range{padding:0 .75rem;background-color:#fff;background-clip:padding-box;border:1px solid #ced4da;height:calc(1.5em + .75rem + 2px);border-radius:.25rem;transition:border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion:reduce){.input-group>.custom-range{transition:none}}.input-group>.custom-range:focus{color:#495057;background-color:#fff;border-color:#80bdff;outline:0;box-shadow:0 0 0 .2rem rgba(0,123,255,.25)}.input-group>.custom-range:disabled,.input-group>.custom-range[readonly]{background-color:#e9ecef}.input-group-lg>.custom-range{height:calc(1.5em + 1rem + 2px);padding:0 1rem;border-radius:.3rem}.input-group-sm>.custom-range{height:calc(1.5em + .5rem + 2px);padding:0 .5rem;border-radius:.2rem}.input-group .custom-range.is-valid,.was-validated .input-group .custom-range:valid{border-color:#28a745}.input-group .custom-range.is-valid:focus,.was-validated .input-group .custom-range:valid:focus{border-color:#28a745;box-shadow:0 0 0 .2rem rgba(40,167,69,.25)}.custom-range.is-valid:focus::-webkit-slider-thumb,.was-validated .custom-range:valid:focus::-webkit-slider-thumb{box-shadow:0 0 0 1px #fff,0 0 0 .2rem #9be7ac}.custom-range.is-valid:focus::-moz-range-thumb,.was-validated .custom-range:valid:focus::-moz-range-thumb{box-shadow:0 0 0 1px #fff,0 0 0 .2rem #9be7ac}.custom-range.is-valid:focus::-ms-thumb,.was-validated .custom-range:valid:focus::-ms-thumb{box-shadow:0 0 0 1px #fff,0 0 0 .2rem #9be7ac}.custom-range.is-valid::-webkit-slider-thumb,.was-validated .custom-range:valid::-webkit-slider-thumb{background-color:#28a745;background-image:none}.custom-range.is-valid::-webkit-slider-thumb:active,.was-validated .custom-range:valid::-webkit-slider-thumb:active{background-color:#9be7ac;background-image:none}.custom-range.is-valid::-webkit-slider-runnable-track,.was-validated .custom-range:valid::-webkit-slider-runnable-track{background-color:rgba(40,167,69,.35)}.custom-range.is-valid::-moz-range-thumb,.was-validated .custom-range:valid::-moz-range-thumb{background-color:#28a745;background-image:none}.custom-range.is-valid::-moz-range-thumb:active,.was-validated .custom-range:valid::-moz-range-thumb:active{background-color:#9be7ac;background-image:none}.custom-range.is-valid::-moz-range-track,.was-validated .custom-range:valid::-moz-range-track{background:rgba(40,167,69,.35)}.custom-range.is-valid~.valid-feedback,.custom-range.is-valid~.valid-tooltip,.was-validated .custom-range:valid~.valid-feedback,.was-validated .custom-range:valid~.valid-tooltip{display:block}.custom-range.is-valid::-ms-thumb,.was-validated .custom-range:valid::-ms-thumb{background-color:#28a745;background-image:none}.custom-range.is-valid::-ms-thumb:active,.was-validated .custom-range:valid::-ms-thumb:active{background-color:#9be7ac;background-image:none}.custom-range.is-valid::-ms-track-lower,.custom-range.is-valid::-ms-track-upper,.was-validated .custom-range:valid::-ms-track-lower,.was-validated .custom-range:valid::-ms-track-upper{background:rgba(40,167,69,.35)}.input-group .custom-range.is-invalid,.was-validated .input-group .custom-range:invalid{border-color:#dc3545}.input-group .custom-range.is-invalid:focus,.was-validated .input-group .custom-range:invalid:focus{border-color:#dc3545;box-shadow:0 0 0 .2rem rgba(220,53,69,.25)}.custom-range.is-invalid:focus::-webkit-slider-thumb,.was-validated .custom-range:invalid:focus::-webkit-slider-thumb{box-shadow:0 0 0 1px #fff,0 0 0 .2rem #f6cdd1}.custom-range.is-invalid:focus::-moz-range-thumb,.was-validated .custom-range:invalid:focus::-moz-range-thumb{box-shadow:0 0 0 1px #fff,0 0 0 .2rem #f6cdd1}.custom-range.is-invalid:focus::-ms-thumb,.was-validated .custom-range:invalid:focus::-ms-thumb{box-shadow:0 0 0 1px #fff,0 0 0 .2rem #f6cdd1}.custom-range.is-invalid::-webkit-slider-thumb,.was-validated .custom-range:invalid::-webkit-slider-thumb{background-color:#dc3545;background-image:none}.custom-range.is-invalid::-webkit-slider-thumb:active,.was-validated .custom-range:invalid::-webkit-slider-thumb:active{background-color:#f6cdd1;background-image:none}.custom-range.is-invalid::-webkit-slider-runnable-track,.was-validated .custom-range:invalid::-webkit-slider-runnable-track{background-color:rgba(220,53,69,.35)}.custom-range.is-invalid::-moz-range-thumb,.was-validated .custom-range:invalid::-moz-range-thumb{background-color:#dc3545;background-image:none}.custom-range.is-invalid::-moz-range-thumb:active,.was-validated .custom-range:invalid::-moz-range-thumb:active{background-color:#f6cdd1;background-image:none}.custom-range.is-invalid::-moz-range-track,.was-validated .custom-range:invalid::-moz-range-track{background:rgba(220,53,69,.35)}.custom-range.is-invalid~.invalid-feedback,.custom-range.is-invalid~.invalid-tooltip,.was-validated .custom-range:invalid~.invalid-feedback,.was-validated .custom-range:invalid~.invalid-tooltip{display:block}.custom-range.is-invalid::-ms-thumb,.was-validated .custom-range:invalid::-ms-thumb{background-color:#dc3545;background-image:none}.custom-range.is-invalid::-ms-thumb:active,.was-validated .custom-range:invalid::-ms-thumb:active{background-color:#f6cdd1;background-image:none}.custom-range.is-invalid::-ms-track-lower,.custom-range.is-invalid::-ms-track-upper,.was-validated .custom-range:invalid::-ms-track-lower,.was-validated .custom-range:invalid::-ms-track-upper{background:rgba(220,53,69,.35)}.custom-radio.b-custom-control-lg,.input-group-lg .custom-radio{font-size:1.25rem;line-height:1.5;padding-left:1.875rem}.custom-radio.b-custom-control-lg .custom-control-label:before,.input-group-lg .custom-radio .custom-control-label:before{top:.3125rem;left:-1.875rem;width:1.25rem;height:1.25rem;border-radius:50%}.custom-radio.b-custom-control-lg .custom-control-label:after,.input-group-lg .custom-radio .custom-control-label:after{top:.3125rem;left:-1.875rem;width:1.25rem;height:1.25rem;background:no-repeat 50%/50% 50%}.custom-radio.b-custom-control-sm,.input-group-sm .custom-radio{font-size:.875rem;line-height:1.5;padding-left:1.3125rem}.custom-radio.b-custom-control-sm .custom-control-label:before,.input-group-sm .custom-radio .custom-control-label:before{top:.21875rem;left:-1.3125rem;width:.875rem;height:.875rem;border-radius:50%}.custom-radio.b-custom-control-sm .custom-control-label:after,.input-group-sm .custom-radio .custom-control-label:after{top:.21875rem;left:-1.3125rem;width:.875rem;height:.875rem;background:no-repeat 50%/50% 50%}.b-rating{text-align:center}.b-rating.d-inline-flex{width:auto}.b-rating .b-rating-star,.b-rating .b-rating-value{padding:0 .25em}.b-rating .b-rating-value{min-width:2.5em}.b-rating .b-rating-star{display:inline-flex;justify-content:center;outline:0}.b-rating .b-rating-star .b-rating-icon{display:inline-flex;transition:all .15s ease-in-out}.b-rating.disabled,.b-rating:disabled{background-color:#e9ecef;color:#6c757d}.b-rating:not(.disabled):not(.readonly) .b-rating-star{cursor:pointer}.b-rating:not(.disabled):not(.readonly) .b-rating-star:hover .b-rating-icon,.b-rating:not(.disabled):not(.readonly):focus:not(:hover) .b-rating-star.focused .b-rating-icon{transform:scale(1.5)}.b-rating[dir=rtl] .b-rating-star-half{transform:scaleX(-1)}.b-form-spinbutton{text-align:center;overflow:hidden;background-image:none;padding:0}.b-form-spinbutton[dir=rtl]:not(.flex-column),[dir=rtl] .b-form-spinbutton:not(.flex-column){flex-direction:row-reverse}.b-form-spinbutton output{font-size:inherit;outline:0;border:0;background-color:transparent;width:auto;margin:0;padding:0 .25rem}.b-form-spinbutton output>bdi,.b-form-spinbutton output>div{display:block;min-width:2.25em;height:1.5em}.b-form-spinbutton.flex-column{height:auto;width:auto}.b-form-spinbutton.flex-column output{margin:0 .25rem;padding:.25rem 0}.b-form-spinbutton:not(.d-inline-flex):not(.flex-column){output-width:100%}.b-form-spinbutton.d-inline-flex:not(.flex-column){width:auto}.b-form-spinbutton .btn{line-height:1;box-shadow:none!important}.b-form-spinbutton .btn:disabled{pointer-events:none}.b-form-spinbutton .btn:hover:not(:disabled)>div>.b-icon{transform:scale(1.25)}.b-form-spinbutton.disabled,.b-form-spinbutton.readonly{background-color:#e9ecef}.b-form-spinbutton.disabled{pointer-events:none}.b-form-tags .b-form-tags-list{margin-top:-.25rem}.b-form-tags .b-form-tags-list .b-form-tag,.b-form-tags .b-form-tags-list .b-from-tags-field{margin-top:.25rem}.b-form-tags.focus{color:#495057;background-color:#fff;border-color:#80bdff;outline:0;box-shadow:0 0 0 .2rem rgba(0,123,255,.25)}.b-form-tags.focus.is-valid{border-color:#28a745;box-shadow:0 0 0 .2rem rgba(40,167,69,.25)}.b-form-tags.focus.is-invalid{border-color:#dc3545;box-shadow:0 0 0 .2rem rgba(220,53,69,.25)}.b-form-tags.disabled{background-color:#e9ecef}.b-form-tag{font-size:75%;font-weight:400;line-height:1.5;margin-right:.25rem}.b-form-tag.disabled{opacity:.75}.b-form-tag>button.b-form-tag-remove{color:inherit;font-size:125%;line-height:1;float:none;margin-left:.25rem}.form-control-lg .b-form-tag,.form-control-sm .b-form-tag{line-height:1.5}.media-aside{display:flex;margin-right:1rem}.media-aside-right{margin-right:0;margin-left:1rem}.modal-backdrop{opacity:.5}.b-pagination-pills .page-item .page-link{border-radius:50rem!important;margin-left:.25rem;line-height:1}.b-pagination-pills .page-item:first-child .page-link{margin-left:0}.popover.b-popover{display:block;opacity:1;outline:0}.popover.b-popover.fade:not(.show){opacity:0}.popover.b-popover.show{opacity:1}.b-popover-primary.popover{background-color:#cce5ff;border-color:#b8daff}.b-popover-primary.bs-popover-auto[x-placement^=top]>.arrow:before,.b-popover-primary.bs-popover-top>.arrow:before{border-top-color:#b8daff}.b-popover-primary.bs-popover-auto[x-placement^=top]>.arrow:after,.b-popover-primary.bs-popover-top>.arrow:after{border-top-color:#cce5ff}.b-popover-primary.bs-popover-auto[x-placement^=right]>.arrow:before,.b-popover-primary.bs-popover-right>.arrow:before{border-right-color:#b8daff}.b-popover-primary.bs-popover-auto[x-placement^=right]>.arrow:after,.b-popover-primary.bs-popover-right>.arrow:after{border-right-color:#cce5ff}.b-popover-primary.bs-popover-auto[x-placement^=bottom]>.arrow:before,.b-popover-primary.bs-popover-bottom>.arrow:before{border-bottom-color:#b8daff}.b-popover-primary.bs-popover-auto[x-placement^=bottom] .popover-header:before,.b-popover-primary.bs-popover-auto[x-placement^=bottom]>.arrow:after,.b-popover-primary.bs-popover-bottom .popover-header:before,.b-popover-primary.bs-popover-bottom>.arrow:after{border-bottom-color:#bdddff}.b-popover-primary.bs-popover-auto[x-placement^=left]>.arrow:before,.b-popover-primary.bs-popover-left>.arrow:before{border-left-color:#b8daff}.b-popover-primary.bs-popover-auto[x-placement^=left]>.arrow:after,.b-popover-primary.bs-popover-left>.arrow:after{border-left-color:#cce5ff}.b-popover-primary .popover-header{color:#212529;background-color:#bdddff;border-bottom-color:#a3d0ff}.b-popover-primary .popover-body{color:#004085}.b-popover-secondary.popover{background-color:#e2e3e5;border-color:#d6d8db}.b-popover-secondary.bs-popover-auto[x-placement^=top]>.arrow:before,.b-popover-secondary.bs-popover-top>.arrow:before{border-top-color:#d6d8db}.b-popover-secondary.bs-popover-auto[x-placement^=top]>.arrow:after,.b-popover-secondary.bs-popover-top>.arrow:after{border-top-color:#e2e3e5}.b-popover-secondary.bs-popover-auto[x-placement^=right]>.arrow:before,.b-popover-secondary.bs-popover-right>.arrow:before{border-right-color:#d6d8db}.b-popover-secondary.bs-popover-auto[x-placement^=right]>.arrow:after,.b-popover-secondary.bs-popover-right>.arrow:after{border-right-color:#e2e3e5}.b-popover-secondary.bs-popover-auto[x-placement^=bottom]>.arrow:before,.b-popover-secondary.bs-popover-bottom>.arrow:before{border-bottom-color:#d6d8db}.b-popover-secondary.bs-popover-auto[x-placement^=bottom] .popover-header:before,.b-popover-secondary.bs-popover-auto[x-placement^=bottom]>.arrow:after,.b-popover-secondary.bs-popover-bottom .popover-header:before,.b-popover-secondary.bs-popover-bottom>.arrow:after{border-bottom-color:#dadbde}.b-popover-secondary.bs-popover-auto[x-placement^=left]>.arrow:before,.b-popover-secondary.bs-popover-left>.arrow:before{border-left-color:#d6d8db}.b-popover-secondary.bs-popover-auto[x-placement^=left]>.arrow:after,.b-popover-secondary.bs-popover-left>.arrow:after{border-left-color:#e2e3e5}.b-popover-secondary .popover-header{color:#212529;background-color:#dadbde;border-bottom-color:#ccced2}.b-popover-secondary .popover-body{color:#383d41}.b-popover-success.popover{background-color:#d4edda;border-color:#c3e6cb}.b-popover-success.bs-popover-auto[x-placement^=top]>.arrow:before,.b-popover-success.bs-popover-top>.arrow:before{border-top-color:#c3e6cb}.b-popover-success.bs-popover-auto[x-placement^=top]>.arrow:after,.b-popover-success.bs-popover-top>.arrow:after{border-top-color:#d4edda}.b-popover-success.bs-popover-auto[x-placement^=right]>.arrow:before,.b-popover-success.bs-popover-right>.arrow:before{border-right-color:#c3e6cb}.b-popover-success.bs-popover-auto[x-placement^=right]>.arrow:after,.b-popover-success.bs-popover-right>.arrow:after{border-right-color:#d4edda}.b-popover-success.bs-popover-auto[x-placement^=bottom]>.arrow:before,.b-popover-success.bs-popover-bottom>.arrow:before{border-bottom-color:#c3e6cb}.b-popover-success.bs-popover-auto[x-placement^=bottom] .popover-header:before,.b-popover-success.bs-popover-auto[x-placement^=bottom]>.arrow:after,.b-popover-success.bs-popover-bottom .popover-header:before,.b-popover-success.bs-popover-bottom>.arrow:after{border-bottom-color:#c9e8d1}.b-popover-success.bs-popover-auto[x-placement^=left]>.arrow:before,.b-popover-success.bs-popover-left>.arrow:before{border-left-color:#c3e6cb}.b-popover-success.bs-popover-auto[x-placement^=left]>.arrow:after,.b-popover-success.bs-popover-left>.arrow:after{border-left-color:#d4edda}.b-popover-success .popover-header{color:#212529;background-color:#c9e8d1;border-bottom-color:#b7e1c1}.b-popover-success .popover-body{color:#155724}.b-popover-info.popover{background-color:#d1ecf1;border-color:#bee5eb}.b-popover-info.bs-popover-auto[x-placement^=top]>.arrow:before,.b-popover-info.bs-popover-top>.arrow:before{border-top-color:#bee5eb}.b-popover-info.bs-popover-auto[x-placement^=top]>.arrow:after,.b-popover-info.bs-popover-top>.arrow:after{border-top-color:#d1ecf1}.b-popover-info.bs-popover-auto[x-placement^=right]>.arrow:before,.b-popover-info.bs-popover-right>.arrow:before{border-right-color:#bee5eb}.b-popover-info.bs-popover-auto[x-placement^=right]>.arrow:after,.b-popover-info.bs-popover-right>.arrow:after{border-right-color:#d1ecf1}.b-popover-info.bs-popover-auto[x-placement^=bottom]>.arrow:before,.b-popover-info.bs-popover-bottom>.arrow:before{border-bottom-color:#bee5eb}.b-popover-info.bs-popover-auto[x-placement^=bottom] .popover-header:before,.b-popover-info.bs-popover-auto[x-placement^=bottom]>.arrow:after,.b-popover-info.bs-popover-bottom .popover-header:before,.b-popover-info.bs-popover-bottom>.arrow:after{border-bottom-color:#c5e7ed}.b-popover-info.bs-popover-auto[x-placement^=left]>.arrow:before,.b-popover-info.bs-popover-left>.arrow:before{border-left-color:#bee5eb}.b-popover-info.bs-popover-auto[x-placement^=left]>.arrow:after,.b-popover-info.bs-popover-left>.arrow:after{border-left-color:#d1ecf1}.b-popover-info .popover-header{color:#212529;background-color:#c5e7ed;border-bottom-color:#b2dfe7}.b-popover-info .popover-body{color:#0c5460}.b-popover-warning.popover{background-color:#fff3cd;border-color:#ffeeba}.b-popover-warning.bs-popover-auto[x-placement^=top]>.arrow:before,.b-popover-warning.bs-popover-top>.arrow:before{border-top-color:#ffeeba}.b-popover-warning.bs-popover-auto[x-placement^=top]>.arrow:after,.b-popover-warning.bs-popover-top>.arrow:after{border-top-color:#fff3cd}.b-popover-warning.bs-popover-auto[x-placement^=right]>.arrow:before,.b-popover-warning.bs-popover-right>.arrow:before{border-right-color:#ffeeba}.b-popover-warning.bs-popover-auto[x-placement^=right]>.arrow:after,.b-popover-warning.bs-popover-right>.arrow:after{border-right-color:#fff3cd}.b-popover-warning.bs-popover-auto[x-placement^=bottom]>.arrow:before,.b-popover-warning.bs-popover-bottom>.arrow:before{border-bottom-color:#ffeeba}.b-popover-warning.bs-popover-auto[x-placement^=bottom] .popover-header:before,.b-popover-warning.bs-popover-auto[x-placement^=bottom]>.arrow:after,.b-popover-warning.bs-popover-bottom .popover-header:before,.b-popover-warning.bs-popover-bottom>.arrow:after{border-bottom-color:#ffefbe}.b-popover-warning.bs-popover-auto[x-placement^=left]>.arrow:before,.b-popover-warning.bs-popover-left>.arrow:before{border-left-color:#ffeeba}.b-popover-warning.bs-popover-auto[x-placement^=left]>.arrow:after,.b-popover-warning.bs-popover-left>.arrow:after{border-left-color:#fff3cd}.b-popover-warning .popover-header{color:#212529;background-color:#ffefbe;border-bottom-color:#ffe9a4}.b-popover-warning .popover-body{color:#856404}.b-popover-danger.popover{background-color:#f8d7da;border-color:#f5c6cb}.b-popover-danger.bs-popover-auto[x-placement^=top]>.arrow:before,.b-popover-danger.bs-popover-top>.arrow:before{border-top-color:#f5c6cb}.b-popover-danger.bs-popover-auto[x-placement^=top]>.arrow:after,.b-popover-danger.bs-popover-top>.arrow:after{border-top-color:#f8d7da}.b-popover-danger.bs-popover-auto[x-placement^=right]>.arrow:before,.b-popover-danger.bs-popover-right>.arrow:before{border-right-color:#f5c6cb}.b-popover-danger.bs-popover-auto[x-placement^=right]>.arrow:after,.b-popover-danger.bs-popover-right>.arrow:after{border-right-color:#f8d7da}.b-popover-danger.bs-popover-auto[x-placement^=bottom]>.arrow:before,.b-popover-danger.bs-popover-bottom>.arrow:before{border-bottom-color:#f5c6cb}.b-popover-danger.bs-popover-auto[x-placement^=bottom] .popover-header:before,.b-popover-danger.bs-popover-auto[x-placement^=bottom]>.arrow:after,.b-popover-danger.bs-popover-bottom .popover-header:before,.b-popover-danger.bs-popover-bottom>.arrow:after{border-bottom-color:#f6cace}.b-popover-danger.bs-popover-auto[x-placement^=left]>.arrow:before,.b-popover-danger.bs-popover-left>.arrow:before{border-left-color:#f5c6cb}.b-popover-danger.bs-popover-auto[x-placement^=left]>.arrow:after,.b-popover-danger.bs-popover-left>.arrow:after{border-left-color:#f8d7da}.b-popover-danger .popover-header{color:#212529;background-color:#f6cace;border-bottom-color:#f2b4ba}.b-popover-danger .popover-body{color:#721c24}.b-popover-light.popover{background-color:#fefefe;border-color:#fdfdfe}.b-popover-light.bs-popover-auto[x-placement^=top]>.arrow:before,.b-popover-light.bs-popover-top>.arrow:before{border-top-color:#fdfdfe}.b-popover-light.bs-popover-auto[x-placement^=top]>.arrow:after,.b-popover-light.bs-popover-top>.arrow:after{border-top-color:#fefefe}.b-popover-light.bs-popover-auto[x-placement^=right]>.arrow:before,.b-popover-light.bs-popover-right>.arrow:before{border-right-color:#fdfdfe}.b-popover-light.bs-popover-auto[x-placement^=right]>.arrow:after,.b-popover-light.bs-popover-right>.arrow:after{border-right-color:#fefefe}.b-popover-light.bs-popover-auto[x-placement^=bottom]>.arrow:before,.b-popover-light.bs-popover-bottom>.arrow:before{border-bottom-color:#fdfdfe}.b-popover-light.bs-popover-auto[x-placement^=bottom] .popover-header:before,.b-popover-light.bs-popover-auto[x-placement^=bottom]>.arrow:after,.b-popover-light.bs-popover-bottom .popover-header:before,.b-popover-light.bs-popover-bottom>.arrow:after{border-bottom-color:#f6f6f6}.b-popover-light.bs-popover-auto[x-placement^=left]>.arrow:before,.b-popover-light.bs-popover-left>.arrow:before{border-left-color:#fdfdfe}.b-popover-light.bs-popover-auto[x-placement^=left]>.arrow:after,.b-popover-light.bs-popover-left>.arrow:after{border-left-color:#fefefe}.b-popover-light .popover-header{color:#212529;background-color:#f6f6f6;border-bottom-color:#eaeaea}.b-popover-light .popover-body{color:#818182}.b-popover-dark.popover{background-color:#d6d8d9;border-color:#c6c8ca}.b-popover-dark.bs-popover-auto[x-placement^=top]>.arrow:before,.b-popover-dark.bs-popover-top>.arrow:before{border-top-color:#c6c8ca}.b-popover-dark.bs-popover-auto[x-placement^=top]>.arrow:after,.b-popover-dark.bs-popover-top>.arrow:after{border-top-color:#d6d8d9}.b-popover-dark.bs-popover-auto[x-placement^=right]>.arrow:before,.b-popover-dark.bs-popover-right>.arrow:before{border-right-color:#c6c8ca}.b-popover-dark.bs-popover-auto[x-placement^=right]>.arrow:after,.b-popover-dark.bs-popover-right>.arrow:after{border-right-color:#d6d8d9}.b-popover-dark.bs-popover-auto[x-placement^=bottom]>.arrow:before,.b-popover-dark.bs-popover-bottom>.arrow:before{border-bottom-color:#c6c8ca}.b-popover-dark.bs-popover-auto[x-placement^=bottom] .popover-header:before,.b-popover-dark.bs-popover-auto[x-placement^=bottom]>.arrow:after,.b-popover-dark.bs-popover-bottom .popover-header:before,.b-popover-dark.bs-popover-bottom>.arrow:after{border-bottom-color:#ced0d2}.b-popover-dark.bs-popover-auto[x-placement^=left]>.arrow:before,.b-popover-dark.bs-popover-left>.arrow:before{border-left-color:#c6c8ca}.b-popover-dark.bs-popover-auto[x-placement^=left]>.arrow:after,.b-popover-dark.bs-popover-left>.arrow:after{border-left-color:#d6d8d9}.b-popover-dark .popover-header{color:#212529;background-color:#ced0d2;border-bottom-color:#c1c4c5}.b-popover-dark .popover-body{color:#1b1e21}.b-sidebar-outer{position:fixed;top:0;left:0;right:0;height:0;overflow:visible;z-index:1035}.b-sidebar-backdrop{left:0;z-index:-1;width:100vw;opacity:.6}.b-sidebar,.b-sidebar-backdrop{position:fixed;top:0;height:100vh}.b-sidebar{display:flex;flex-direction:column;width:320px;max-width:100%;max-height:100%;margin:0;outline:0;transform:translateX(0)}.b-sidebar.slide{transition:transform .3s ease-in-out}@media (prefers-reduced-motion:reduce){.b-sidebar.slide{transition:none}}.b-sidebar:not(.b-sidebar-right){left:0;right:auto}.b-sidebar:not(.b-sidebar-right).slide:not(.show){transform:translateX(-100%)}.b-sidebar:not(.b-sidebar-right)>.b-sidebar-header .close{margin-left:auto}.b-sidebar.b-sidebar-right{left:auto;right:0}.b-sidebar.b-sidebar-right.slide:not(.show){transform:translateX(100%)}.b-sidebar.b-sidebar-right>.b-sidebar-header .close{margin-right:auto}.b-sidebar>.b-sidebar-header{font-size:1.5rem;padding:.5rem 1rem;display:flex;flex-direction:row;flex-grow:0;align-items:center}[dir=rtl] .b-sidebar>.b-sidebar-header{flex-direction:row-reverse}.b-sidebar>.b-sidebar-header .close{float:none;font-size:1.5rem}.b-sidebar>.b-sidebar-body{flex-grow:1;height:100%;overflow-y:auto}.b-sidebar>.b-sidebar-footer{flex-grow:0}.b-skeleton-wrapper{cursor:wait}.b-skeleton{position:relative;overflow:hidden;background-color:rgba(0,0,0,.12);cursor:wait;-webkit-mask-image:radial-gradient(#fff,#000);mask-image:radial-gradient(#fff,#000)}.b-skeleton:before{content:" "}.b-skeleton-text{height:1rem;margin-bottom:.25rem;border-radius:.25rem}.b-skeleton-button{width:75px;padding:.375rem .75rem;font-size:1rem;line-height:1.5;border-radius:.25rem}.b-skeleton-avatar{width:2.5em;height:2.5em;border-radius:50%}.b-skeleton-input{height:calc(1.5em + .75rem + 2px);padding:.375rem .75rem;line-height:1.5;border:1px solid #ced4da;border-radius:.25rem}.b-skeleton-icon-wrapper svg{color:rgba(0,0,0,.12)}.b-skeleton-img{height:100%;width:100%}.b-skeleton-animate-wave:after{content:"";position:absolute;top:0;right:0;bottom:0;left:0;z-index:0;background:linear-gradient(90deg,transparent,hsla(0,0%,100%,.4),transparent);-webkit-animation:b-skeleton-animate-wave 1.75s linear infinite;animation:b-skeleton-animate-wave 1.75s linear infinite}@media (prefers-reduced-motion:reduce){.b-skeleton-animate-wave:after{background:none;-webkit-animation:none;animation:none}}@-webkit-keyframes b-skeleton-animate-wave{0%{transform:translateX(-100%)}to{transform:translateX(100%)}}@keyframes b-skeleton-animate-wave{0%{transform:translateX(-100%)}to{transform:translateX(100%)}}.b-skeleton-animate-fade{-webkit-animation:b-skeleton-animate-fade .875s ease-in-out infinite alternate;animation:b-skeleton-animate-fade .875s ease-in-out infinite alternate}@media (prefers-reduced-motion:reduce){.b-skeleton-animate-fade{-webkit-animation:none;animation:none}}@-webkit-keyframes b-skeleton-animate-fade{0%{opacity:1}to{opacity:.4}}@keyframes b-skeleton-animate-fade{0%{opacity:1}to{opacity:.4}}.b-skeleton-animate-throb{-webkit-animation:b-skeleton-animate-throb .875s ease-in infinite alternate;animation:b-skeleton-animate-throb .875s ease-in infinite alternate}@media (prefers-reduced-motion:reduce){.b-skeleton-animate-throb{-webkit-animation:none;animation:none}}@-webkit-keyframes b-skeleton-animate-throb{0%{transform:scale(1)}to{transform:scale(.975)}}@keyframes b-skeleton-animate-throb{0%{transform:scale(1)}to{transform:scale(.975)}}.table.b-table.b-table-fixed{table-layout:fixed}.table.b-table.b-table-no-border-collapse{border-collapse:separate;border-spacing:0}.table.b-table[aria-busy=true]{opacity:.55}.table.b-table>tbody>tr.b-table-details>td{border-top:none!important}.table.b-table>caption{caption-side:bottom}.table.b-table.b-table-caption-top>caption{caption-side:top!important}.table.b-table>tbody>.table-active,.table.b-table>tbody>.table-active>td,.table.b-table>tbody>.table-active>th{background-color:rgba(0,0,0,.075)}.table.b-table.table-hover>tbody>tr.table-active:hover td,.table.b-table.table-hover>tbody>tr.table-active:hover th{color:#212529;background-image:linear-gradient(rgba(0,0,0,.075),rgba(0,0,0,.075));background-repeat:no-repeat}.table.b-table>tbody>.bg-active,.table.b-table>tbody>.bg-active>td,.table.b-table>tbody>.bg-active>th{background-color:hsla(0,0%,100%,.075)!important}.table.b-table.table-hover.table-dark>tbody>tr.bg-active:hover td,.table.b-table.table-hover.table-dark>tbody>tr.bg-active:hover th{color:#fff;background-image:linear-gradient(hsla(0,0%,100%,.075),hsla(0,0%,100%,.075));background-repeat:no-repeat}.b-table-sticky-header,.table-responsive,[class*=table-responsive-]{margin-bottom:1rem}.b-table-sticky-header>.table,.table-responsive>.table,[class*=table-responsive-]>.table{margin-bottom:0}.b-table-sticky-header{overflow-y:auto;max-height:300px}@media print{.b-table-sticky-header{overflow-y:visible!important;max-height:none!important}}@supports (position:sticky){.b-table-sticky-header>.table.b-table>thead>tr>th{position:sticky;top:0;z-index:2}.b-table-sticky-header>.table.b-table>tbody>tr>.b-table-sticky-column,.b-table-sticky-header>.table.b-table>tfoot>tr>.b-table-sticky-column,.b-table-sticky-header>.table.b-table>thead>tr>.b-table-sticky-column,.table-responsive>.table.b-table>tbody>tr>.b-table-sticky-column,.table-responsive>.table.b-table>tfoot>tr>.b-table-sticky-column,.table-responsive>.table.b-table>thead>tr>.b-table-sticky-column,[class*=table-responsive-]>.table.b-table>tbody>tr>.b-table-sticky-column,[class*=table-responsive-]>.table.b-table>tfoot>tr>.b-table-sticky-column,[class*=table-responsive-]>.table.b-table>thead>tr>.b-table-sticky-column{position:sticky;left:0}.b-table-sticky-header>.table.b-table>thead>tr>.b-table-sticky-column,.table-responsive>.table.b-table>thead>tr>.b-table-sticky-column,[class*=table-responsive-]>.table.b-table>thead>tr>.b-table-sticky-column{z-index:5}.b-table-sticky-header>.table.b-table>tbody>tr>.b-table-sticky-column,.b-table-sticky-header>.table.b-table>tfoot>tr>.b-table-sticky-column,.table-responsive>.table.b-table>tbody>tr>.b-table-sticky-column,.table-responsive>.table.b-table>tfoot>tr>.b-table-sticky-column,[class*=table-responsive-]>.table.b-table>tbody>tr>.b-table-sticky-column,[class*=table-responsive-]>.table.b-table>tfoot>tr>.b-table-sticky-column{z-index:2}.table.b-table>tbody>tr>.table-b-table-default,.table.b-table>tfoot>tr>.table-b-table-default,.table.b-table>thead>tr>.table-b-table-default{color:#212529;background-color:#fff}.table.b-table.table-dark>tbody>tr>.bg-b-table-default,.table.b-table.table-dark>tfoot>tr>.bg-b-table-default,.table.b-table.table-dark>thead>tr>.bg-b-table-default{color:#fff;background-color:#343a40}.table.b-table.table-striped>tbody>tr:nth-of-type(odd)>.table-b-table-default{background-image:linear-gradient(rgba(0,0,0,.05),rgba(0,0,0,.05));background-repeat:no-repeat}.table.b-table.table-striped.table-dark>tbody>tr:nth-of-type(odd)>.bg-b-table-default{background-image:linear-gradient(hsla(0,0%,100%,.05),hsla(0,0%,100%,.05));background-repeat:no-repeat}.table.b-table.table-hover>tbody>tr:hover>.table-b-table-default{color:#212529;background-image:linear-gradient(rgba(0,0,0,.075),rgba(0,0,0,.075));background-repeat:no-repeat}.table.b-table.table-hover.table-dark>tbody>tr:hover>.bg-b-table-default{color:#fff;background-image:linear-gradient(hsla(0,0%,100%,.075),hsla(0,0%,100%,.075));background-repeat:no-repeat}}.table.b-table>tfoot>tr>[aria-sort],.table.b-table>thead>tr>[aria-sort]{cursor:pointer;background-image:none;background-repeat:no-repeat;background-size:.65em 1em}.table.b-table>tfoot>tr>[aria-sort]:not(.b-table-sort-icon-left),.table.b-table>thead>tr>[aria-sort]:not(.b-table-sort-icon-left){background-position:right .375rem center;padding-right:calc(.75rem + .65em)}.table.b-table>tfoot>tr>[aria-sort].b-table-sort-icon-left,.table.b-table>thead>tr>[aria-sort].b-table-sort-icon-left{background-position:left .375rem center;padding-left:calc(.75rem + .65em)}.table.b-table>tfoot>tr>[aria-sort=none],.table.b-table>thead>tr>[aria-sort=none]{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='101' height='101' preserveAspectRatio='none'%3E%3Cpath opacity='.3' d='M51 1l25 23 24 22H1l25-22zm0 100l25-23 24-22H1l25 22z'/%3E%3C/svg%3E")}.table.b-table>tfoot>tr>[aria-sort=ascending],.table.b-table>thead>tr>[aria-sort=ascending]{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='101' height='101' preserveAspectRatio='none'%3E%3Cpath d='M51 1l25 23 24 22H1l25-22z'/%3E%3Cpath opacity='.3' d='M51 101l25-23 24-22H1l25 22z'/%3E%3C/svg%3E")}.table.b-table>tfoot>tr>[aria-sort=descending],.table.b-table>thead>tr>[aria-sort=descending]{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='101' height='101' preserveAspectRatio='none'%3E%3Cpath opacity='.3' d='M51 1l25 23 24 22H1l25-22z'/%3E%3Cpath d='M51 101l25-23 24-22H1l25 22z'/%3E%3C/svg%3E")}.table.b-table.table-dark>tfoot>tr>[aria-sort=none],.table.b-table.table-dark>thead>tr>[aria-sort=none],.table.b-table>.thead-dark>tr>[aria-sort=none]{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='101' height='101' preserveAspectRatio='none'%3E%3Cpath fill='%23fff' opacity='.3' d='M51 1l25 23 24 22H1l25-22zm0 100l25-23 24-22H1l25 22z'/%3E%3C/svg%3E")}.table.b-table.table-dark>tfoot>tr>[aria-sort=ascending],.table.b-table.table-dark>thead>tr>[aria-sort=ascending],.table.b-table>.thead-dark>tr>[aria-sort=ascending]{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='101' height='101' preserveAspectRatio='none'%3E%3Cpath fill='%23fff' d='M51 1l25 23 24 22H1l25-22z'/%3E%3Cpath fill='%23fff' opacity='.3' d='M51 101l25-23 24-22H1l25 22z'/%3E%3C/svg%3E")}.table.b-table.table-dark>tfoot>tr>[aria-sort=descending],.table.b-table.table-dark>thead>tr>[aria-sort=descending],.table.b-table>.thead-dark>tr>[aria-sort=descending]{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='101' height='101' preserveAspectRatio='none'%3E%3Cpath fill='%23fff' opacity='.3' d='M51 1l25 23 24 22H1l25-22z'/%3E%3Cpath fill='%23fff' d='M51 101l25-23 24-22H1l25 22z'/%3E%3C/svg%3E")}.table.b-table>tfoot>tr>.table-dark[aria-sort=none],.table.b-table>thead>tr>.table-dark[aria-sort=none]{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='101' height='101' preserveAspectRatio='none'%3E%3Cpath fill='%23fff' opacity='.3' d='M51 1l25 23 24 22H1l25-22zm0 100l25-23 24-22H1l25 22z'/%3E%3C/svg%3E")}.table.b-table>tfoot>tr>.table-dark[aria-sort=ascending],.table.b-table>thead>tr>.table-dark[aria-sort=ascending]{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='101' height='101' preserveAspectRatio='none'%3E%3Cpath fill='%23fff' d='M51 1l25 23 24 22H1l25-22z'/%3E%3Cpath fill='%23fff' opacity='.3' d='M51 101l25-23 24-22H1l25 22z'/%3E%3C/svg%3E")}.table.b-table>tfoot>tr>.table-dark[aria-sort=descending],.table.b-table>thead>tr>.table-dark[aria-sort=descending]{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='101' height='101' preserveAspectRatio='none'%3E%3Cpath fill='%23fff' opacity='.3' d='M51 1l25 23 24 22H1l25-22z'/%3E%3Cpath fill='%23fff' d='M51 101l25-23 24-22H1l25 22z'/%3E%3C/svg%3E")}.table.b-table.table-sm>tfoot>tr>[aria-sort]:not(.b-table-sort-icon-left),.table.b-table.table-sm>thead>tr>[aria-sort]:not(.b-table-sort-icon-left){background-position:right .15rem center;padding-right:calc(.3rem + .65em)}.table.b-table.table-sm>tfoot>tr>[aria-sort].b-table-sort-icon-left,.table.b-table.table-sm>thead>tr>[aria-sort].b-table-sort-icon-left{background-position:left .15rem center;padding-left:calc(.3rem + .65em)}.table.b-table.b-table-selectable:not(.b-table-selectable-no-click)>tbody>tr{cursor:pointer}.table.b-table.b-table-selectable:not(.b-table-selectable-no-click).b-table-selecting.b-table-select-range>tbody>tr{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}@media (max-width:575.98px){.table.b-table.b-table-stacked-sm{display:block;width:100%}.table.b-table.b-table-stacked-sm>caption,.table.b-table.b-table-stacked-sm>tbody,.table.b-table.b-table-stacked-sm>tbody>tr,.table.b-table.b-table-stacked-sm>tbody>tr>td,.table.b-table.b-table-stacked-sm>tbody>tr>th{display:block}.table.b-table.b-table-stacked-sm>tfoot,.table.b-table.b-table-stacked-sm>tfoot>tr.b-table-bottom-row,.table.b-table.b-table-stacked-sm>tfoot>tr.b-table-top-row,.table.b-table.b-table-stacked-sm>thead,.table.b-table.b-table-stacked-sm>thead>tr.b-table-bottom-row,.table.b-table.b-table-stacked-sm>thead>tr.b-table-top-row{display:none}.table.b-table.b-table-stacked-sm>caption{caption-side:top!important}.table.b-table.b-table-stacked-sm>tbody>tr>[data-label]:before{content:attr(data-label);width:40%;float:left;text-align:right;overflow-wrap:break-word;font-weight:700;font-style:normal;padding:0 .5rem 0 0;margin:0}.table.b-table.b-table-stacked-sm>tbody>tr>[data-label]:after{display:block;clear:both;content:""}.table.b-table.b-table-stacked-sm>tbody>tr>[data-label]>div{display:inline-block;width:60%;padding:0 0 0 .5rem;margin:0}.table.b-table.b-table-stacked-sm>tbody>tr.bottom-row,.table.b-table.b-table-stacked-sm>tbody>tr.top-row{display:none}.table.b-table.b-table-stacked-sm>tbody>tr>:first-child,.table.b-table.b-table-stacked-sm>tbody>tr>[rowspan]+td,.table.b-table.b-table-stacked-sm>tbody>tr>[rowspan]+th{border-top-width:3px}}@media (max-width:767.98px){.table.b-table.b-table-stacked-md{display:block;width:100%}.table.b-table.b-table-stacked-md>caption,.table.b-table.b-table-stacked-md>tbody,.table.b-table.b-table-stacked-md>tbody>tr,.table.b-table.b-table-stacked-md>tbody>tr>td,.table.b-table.b-table-stacked-md>tbody>tr>th{display:block}.table.b-table.b-table-stacked-md>tfoot,.table.b-table.b-table-stacked-md>tfoot>tr.b-table-bottom-row,.table.b-table.b-table-stacked-md>tfoot>tr.b-table-top-row,.table.b-table.b-table-stacked-md>thead,.table.b-table.b-table-stacked-md>thead>tr.b-table-bottom-row,.table.b-table.b-table-stacked-md>thead>tr.b-table-top-row{display:none}.table.b-table.b-table-stacked-md>caption{caption-side:top!important}.table.b-table.b-table-stacked-md>tbody>tr>[data-label]:before{content:attr(data-label);width:40%;float:left;text-align:right;overflow-wrap:break-word;font-weight:700;font-style:normal;padding:0 .5rem 0 0;margin:0}.table.b-table.b-table-stacked-md>tbody>tr>[data-label]:after{display:block;clear:both;content:""}.table.b-table.b-table-stacked-md>tbody>tr>[data-label]>div{display:inline-block;width:60%;padding:0 0 0 .5rem;margin:0}.table.b-table.b-table-stacked-md>tbody>tr.bottom-row,.table.b-table.b-table-stacked-md>tbody>tr.top-row{display:none}.table.b-table.b-table-stacked-md>tbody>tr>:first-child,.table.b-table.b-table-stacked-md>tbody>tr>[rowspan]+td,.table.b-table.b-table-stacked-md>tbody>tr>[rowspan]+th{border-top-width:3px}}@media (max-width:991.98px){.table.b-table.b-table-stacked-lg{display:block;width:100%}.table.b-table.b-table-stacked-lg>caption,.table.b-table.b-table-stacked-lg>tbody,.table.b-table.b-table-stacked-lg>tbody>tr,.table.b-table.b-table-stacked-lg>tbody>tr>td,.table.b-table.b-table-stacked-lg>tbody>tr>th{display:block}.table.b-table.b-table-stacked-lg>tfoot,.table.b-table.b-table-stacked-lg>tfoot>tr.b-table-bottom-row,.table.b-table.b-table-stacked-lg>tfoot>tr.b-table-top-row,.table.b-table.b-table-stacked-lg>thead,.table.b-table.b-table-stacked-lg>thead>tr.b-table-bottom-row,.table.b-table.b-table-stacked-lg>thead>tr.b-table-top-row{display:none}.table.b-table.b-table-stacked-lg>caption{caption-side:top!important}.table.b-table.b-table-stacked-lg>tbody>tr>[data-label]:before{content:attr(data-label);width:40%;float:left;text-align:right;overflow-wrap:break-word;font-weight:700;font-style:normal;padding:0 .5rem 0 0;margin:0}.table.b-table.b-table-stacked-lg>tbody>tr>[data-label]:after{display:block;clear:both;content:""}.table.b-table.b-table-stacked-lg>tbody>tr>[data-label]>div{display:inline-block;width:60%;padding:0 0 0 .5rem;margin:0}.table.b-table.b-table-stacked-lg>tbody>tr.bottom-row,.table.b-table.b-table-stacked-lg>tbody>tr.top-row{display:none}.table.b-table.b-table-stacked-lg>tbody>tr>:first-child,.table.b-table.b-table-stacked-lg>tbody>tr>[rowspan]+td,.table.b-table.b-table-stacked-lg>tbody>tr>[rowspan]+th{border-top-width:3px}}@media (max-width:1199.98px){.table.b-table.b-table-stacked-xl{display:block;width:100%}.table.b-table.b-table-stacked-xl>caption,.table.b-table.b-table-stacked-xl>tbody,.table.b-table.b-table-stacked-xl>tbody>tr,.table.b-table.b-table-stacked-xl>tbody>tr>td,.table.b-table.b-table-stacked-xl>tbody>tr>th{display:block}.table.b-table.b-table-stacked-xl>tfoot,.table.b-table.b-table-stacked-xl>tfoot>tr.b-table-bottom-row,.table.b-table.b-table-stacked-xl>tfoot>tr.b-table-top-row,.table.b-table.b-table-stacked-xl>thead,.table.b-table.b-table-stacked-xl>thead>tr.b-table-bottom-row,.table.b-table.b-table-stacked-xl>thead>tr.b-table-top-row{display:none}.table.b-table.b-table-stacked-xl>caption{caption-side:top!important}.table.b-table.b-table-stacked-xl>tbody>tr>[data-label]:before{content:attr(data-label);width:40%;float:left;text-align:right;overflow-wrap:break-word;font-weight:700;font-style:normal;padding:0 .5rem 0 0;margin:0}.table.b-table.b-table-stacked-xl>tbody>tr>[data-label]:after{display:block;clear:both;content:""}.table.b-table.b-table-stacked-xl>tbody>tr>[data-label]>div{display:inline-block;width:60%;padding:0 0 0 .5rem;margin:0}.table.b-table.b-table-stacked-xl>tbody>tr.bottom-row,.table.b-table.b-table-stacked-xl>tbody>tr.top-row{display:none}.table.b-table.b-table-stacked-xl>tbody>tr>:first-child,.table.b-table.b-table-stacked-xl>tbody>tr>[rowspan]+td,.table.b-table.b-table-stacked-xl>tbody>tr>[rowspan]+th{border-top-width:3px}}.table.b-table.b-table-stacked{display:block;width:100%}.table.b-table.b-table-stacked>caption,.table.b-table.b-table-stacked>tbody,.table.b-table.b-table-stacked>tbody>tr,.table.b-table.b-table-stacked>tbody>tr>td,.table.b-table.b-table-stacked>tbody>tr>th{display:block}.table.b-table.b-table-stacked>tfoot,.table.b-table.b-table-stacked>tfoot>tr.b-table-bottom-row,.table.b-table.b-table-stacked>tfoot>tr.b-table-top-row,.table.b-table.b-table-stacked>thead,.table.b-table.b-table-stacked>thead>tr.b-table-bottom-row,.table.b-table.b-table-stacked>thead>tr.b-table-top-row{display:none}.table.b-table.b-table-stacked>caption{caption-side:top!important}.table.b-table.b-table-stacked>tbody>tr>[data-label]:before{content:attr(data-label);width:40%;float:left;text-align:right;overflow-wrap:break-word;font-weight:700;font-style:normal;padding:0 .5rem 0 0;margin:0}.table.b-table.b-table-stacked>tbody>tr>[data-label]:after{display:block;clear:both;content:""}.table.b-table.b-table-stacked>tbody>tr>[data-label]>div{display:inline-block;width:60%;padding:0 0 0 .5rem;margin:0}.table.b-table.b-table-stacked>tbody>tr.bottom-row,.table.b-table.b-table-stacked>tbody>tr.top-row{display:none}.table.b-table.b-table-stacked>tbody>tr>:first-child,.table.b-table.b-table-stacked>tbody>tr>[rowspan]+td,.table.b-table.b-table-stacked>tbody>tr>[rowspan]+th{border-top-width:3px}.b-time{min-width:150px}.b-time[aria-disabled=true] output,.b-time[aria-readonly=true] output,.b-time output.disabled{background-color:#e9ecef;opacity:1}.b-time[aria-disabled=true] output{pointer-events:none}[dir=rtl] .b-time>.d-flex:not(.flex-column){flex-direction:row-reverse}.b-time .b-time-header{margin-bottom:.5rem}.b-time .b-time-header output{padding:.25rem;font-size:80%}.b-time .b-time-footer{margin-top:.5rem}.b-time .b-time-ampm{margin-left:.5rem}.b-toast{display:block;position:relative;max-width:350px;-webkit-backface-visibility:hidden;backface-visibility:hidden;background-clip:padding-box;z-index:1;border-radius:.25rem}.b-toast .toast{background-color:hsla(0,0%,100%,.85)}.b-toast:not(:last-child){margin-bottom:.75rem}.b-toast.b-toast-solid .toast{background-color:#fff}.b-toast .toast{opacity:1}.b-toast .toast.fade:not(.show){opacity:0}.b-toast .toast .toast-body{display:block}.b-toast-primary .toast{background-color:rgba(230,242,255,.85);border-color:rgba(184,218,255,.85);color:#004085}.b-toast-primary .toast .toast-header{color:#004085;background-color:rgba(204,229,255,.85);border-bottom-color:rgba(184,218,255,.85)}.b-toast-primary.b-toast-solid .toast{background-color:#e6f2ff}.b-toast-secondary .toast{background-color:rgba(239,240,241,.85);border-color:rgba(214,216,219,.85);color:#383d41}.b-toast-secondary .toast .toast-header{color:#383d41;background-color:rgba(226,227,229,.85);border-bottom-color:rgba(214,216,219,.85)}.b-toast-secondary.b-toast-solid .toast{background-color:#eff0f1}.b-toast-success .toast{background-color:rgba(230,245,233,.85);border-color:rgba(195,230,203,.85);color:#155724}.b-toast-success .toast .toast-header{color:#155724;background-color:rgba(212,237,218,.85);border-bottom-color:rgba(195,230,203,.85)}.b-toast-success.b-toast-solid .toast{background-color:#e6f5e9}.b-toast-info .toast{background-color:rgba(229,244,247,.85);border-color:rgba(190,229,235,.85);color:#0c5460}.b-toast-info .toast .toast-header{color:#0c5460;background-color:rgba(209,236,241,.85);border-bottom-color:rgba(190,229,235,.85)}.b-toast-info.b-toast-solid .toast{background-color:#e5f4f7}.b-toast-warning .toast{background-color:rgba(255,249,231,.85);border-color:rgba(255,238,186,.85);color:#856404}.b-toast-warning .toast .toast-header{color:#856404;background-color:rgba(255,243,205,.85);border-bottom-color:rgba(255,238,186,.85)}.b-toast-warning.b-toast-solid .toast{background-color:#fff9e7}.b-toast-danger .toast{background-color:rgba(252,237,238,.85);border-color:rgba(245,198,203,.85);color:#721c24}.b-toast-danger .toast .toast-header{color:#721c24;background-color:rgba(248,215,218,.85);border-bottom-color:rgba(245,198,203,.85)}.b-toast-danger.b-toast-solid .toast{background-color:#fcedee}.b-toast-light .toast{background-color:hsla(0,0%,100%,.85);border-color:rgba(253,253,254,.85);color:#818182}.b-toast-light .toast .toast-header{color:#818182;background-color:hsla(0,0%,99.6%,.85);border-bottom-color:rgba(253,253,254,.85)}.b-toast-light.b-toast-solid .toast{background-color:#fff}.b-toast-dark .toast{background-color:rgba(227,229,229,.85);border-color:rgba(198,200,202,.85);color:#1b1e21}.b-toast-dark .toast .toast-header{color:#1b1e21;background-color:rgba(214,216,217,.85);border-bottom-color:rgba(198,200,202,.85)}.b-toast-dark.b-toast-solid .toast{background-color:#e3e5e5}.b-toaster{z-index:1100}.b-toaster .b-toaster-slot{position:relative;display:block}.b-toaster .b-toaster-slot:empty{display:none!important}.b-toaster.b-toaster-bottom-center,.b-toaster.b-toaster-bottom-full,.b-toaster.b-toaster-bottom-left,.b-toaster.b-toaster-bottom-right,.b-toaster.b-toaster-top-center,.b-toaster.b-toaster-top-full,.b-toaster.b-toaster-top-left,.b-toaster.b-toaster-top-right{position:fixed;left:.5rem;right:.5rem;margin:0;padding:0;height:0;overflow:visible}.b-toaster.b-toaster-bottom-center .b-toaster-slot,.b-toaster.b-toaster-bottom-full .b-toaster-slot,.b-toaster.b-toaster-bottom-left .b-toaster-slot,.b-toaster.b-toaster-bottom-right .b-toaster-slot,.b-toaster.b-toaster-top-center .b-toaster-slot,.b-toaster.b-toaster-top-full .b-toaster-slot,.b-toaster.b-toaster-top-left .b-toaster-slot,.b-toaster.b-toaster-top-right .b-toaster-slot{position:absolute;max-width:350px;width:100%;left:0;right:0;padding:0;margin:0}.b-toaster.b-toaster-bottom-full .b-toaster-slot,.b-toaster.b-toaster-bottom-full .b-toaster-slot .b-toast,.b-toaster.b-toaster-bottom-full .b-toaster-slot .toast,.b-toaster.b-toaster-top-full .b-toaster-slot,.b-toaster.b-toaster-top-full .b-toaster-slot .b-toast,.b-toaster.b-toaster-top-full .b-toaster-slot .toast{width:100%;max-width:100%}.b-toaster.b-toaster-top-center,.b-toaster.b-toaster-top-full,.b-toaster.b-toaster-top-left,.b-toaster.b-toaster-top-right{top:0}.b-toaster.b-toaster-top-center .b-toaster-slot,.b-toaster.b-toaster-top-full .b-toaster-slot,.b-toaster.b-toaster-top-left .b-toaster-slot,.b-toaster.b-toaster-top-right .b-toaster-slot{top:.5rem}.b-toaster.b-toaster-bottom-center,.b-toaster.b-toaster-bottom-full,.b-toaster.b-toaster-bottom-left,.b-toaster.b-toaster-bottom-right{bottom:0}.b-toaster.b-toaster-bottom-center .b-toaster-slot,.b-toaster.b-toaster-bottom-full .b-toaster-slot,.b-toaster.b-toaster-bottom-left .b-toaster-slot,.b-toaster.b-toaster-bottom-right .b-toaster-slot{bottom:.5rem}.b-toaster.b-toaster-bottom-center .b-toaster-slot,.b-toaster.b-toaster-bottom-right .b-toaster-slot,.b-toaster.b-toaster-top-center .b-toaster-slot,.b-toaster.b-toaster-top-right .b-toaster-slot{margin-left:auto}.b-toaster.b-toaster-bottom-center .b-toaster-slot,.b-toaster.b-toaster-bottom-left .b-toaster-slot,.b-toaster.b-toaster-top-center .b-toaster-slot,.b-toaster.b-toaster-top-left .b-toaster-slot{margin-right:auto}.b-toaster.b-toaster-bottom-left .b-toast.b-toaster-enter-active,.b-toaster.b-toaster-bottom-left .b-toast.b-toaster-leave-active,.b-toaster.b-toaster-bottom-left .b-toast.b-toaster-move,.b-toaster.b-toaster-bottom-right .b-toast.b-toaster-enter-active,.b-toaster.b-toaster-bottom-right .b-toast.b-toaster-leave-active,.b-toaster.b-toaster-bottom-right .b-toast.b-toaster-move,.b-toaster.b-toaster-top-left .b-toast.b-toaster-enter-active,.b-toaster.b-toaster-top-left .b-toast.b-toaster-leave-active,.b-toaster.b-toaster-top-left .b-toast.b-toaster-move,.b-toaster.b-toaster-top-right .b-toast.b-toaster-enter-active,.b-toaster.b-toaster-top-right .b-toast.b-toaster-leave-active,.b-toaster.b-toaster-top-right .b-toast.b-toaster-move{transition:transform .175s}.b-toaster.b-toaster-bottom-left .b-toast.b-toaster-enter-active .toast.fade,.b-toaster.b-toaster-bottom-left .b-toast.b-toaster-enter-to .toast.fade,.b-toaster.b-toaster-bottom-right .b-toast.b-toaster-enter-active .toast.fade,.b-toaster.b-toaster-bottom-right .b-toast.b-toaster-enter-to .toast.fade,.b-toaster.b-toaster-top-left .b-toast.b-toaster-enter-active .toast.fade,.b-toaster.b-toaster-top-left .b-toast.b-toaster-enter-to .toast.fade,.b-toaster.b-toaster-top-right .b-toast.b-toaster-enter-active .toast.fade,.b-toaster.b-toaster-top-right .b-toast.b-toaster-enter-to .toast.fade{transition-delay:.175s}.b-toaster.b-toaster-bottom-left .b-toast.b-toaster-leave-active,.b-toaster.b-toaster-bottom-right .b-toast.b-toaster-leave-active,.b-toaster.b-toaster-top-left .b-toast.b-toaster-leave-active,.b-toaster.b-toaster-top-right .b-toast.b-toaster-leave-active{position:absolute;transition-delay:.175s}.b-toaster.b-toaster-bottom-left .b-toast.b-toaster-leave-active .toast.fade,.b-toaster.b-toaster-bottom-right .b-toast.b-toaster-leave-active .toast.fade,.b-toaster.b-toaster-top-left .b-toast.b-toaster-leave-active .toast.fade,.b-toaster.b-toaster-top-right .b-toast.b-toaster-leave-active .toast.fade{transition-delay:0s}.tooltip.b-tooltip{display:block;opacity:.9;outline:0}.tooltip.b-tooltip.fade:not(.show){opacity:0}.tooltip.b-tooltip.show{opacity:.9}.tooltip.b-tooltip.noninteractive{pointer-events:none}.tooltip.b-tooltip .arrow{margin:0 .25rem}.tooltip.b-tooltip.b-tooltip-danger.bs-tooltip-auto[x-placement^=left] .arrow,.tooltip.b-tooltip.b-tooltip-danger.bs-tooltip-auto[x-placement^=right] .arrow,.tooltip.b-tooltip.b-tooltip-dark.bs-tooltip-auto[x-placement^=left] .arrow,.tooltip.b-tooltip.b-tooltip-dark.bs-tooltip-auto[x-placement^=right] .arrow,.tooltip.b-tooltip.b-tooltip-info.bs-tooltip-auto[x-placement^=left] .arrow,.tooltip.b-tooltip.b-tooltip-info.bs-tooltip-auto[x-placement^=right] .arrow,.tooltip.b-tooltip.b-tooltip-light.bs-tooltip-auto[x-placement^=left] .arrow,.tooltip.b-tooltip.b-tooltip-light.bs-tooltip-auto[x-placement^=right] .arrow,.tooltip.b-tooltip.b-tooltip-primary.bs-tooltip-auto[x-placement^=left] .arrow,.tooltip.b-tooltip.b-tooltip-primary.bs-tooltip-auto[x-placement^=right] .arrow,.tooltip.b-tooltip.b-tooltip-secondary.bs-tooltip-auto[x-placement^=left] .arrow,.tooltip.b-tooltip.b-tooltip-secondary.bs-tooltip-auto[x-placement^=right] .arrow,.tooltip.b-tooltip.b-tooltip-success.bs-tooltip-auto[x-placement^=left] .arrow,.tooltip.b-tooltip.b-tooltip-success.bs-tooltip-auto[x-placement^=right] .arrow,.tooltip.b-tooltip.b-tooltip-warning.bs-tooltip-auto[x-placement^=left] .arrow,.tooltip.b-tooltip.b-tooltip-warning.bs-tooltip-auto[x-placement^=right] .arrow,.tooltip.b-tooltip.bs-tooltip-left .arrow,.tooltip.b-tooltip.bs-tooltip-right .arrow{margin:.25rem 0}.tooltip.b-tooltip-primary.bs-tooltip-auto[x-placement^=top] .arrow:before,.tooltip.b-tooltip-primary.bs-tooltip-top .arrow:before{border-top-color:#007bff}.tooltip.b-tooltip-primary.bs-tooltip-auto[x-placement^=right] .arrow:before,.tooltip.b-tooltip-primary.bs-tooltip-right .arrow:before{border-right-color:#007bff}.tooltip.b-tooltip-primary.bs-tooltip-auto[x-placement^=bottom] .arrow:before,.tooltip.b-tooltip-primary.bs-tooltip-bottom .arrow:before{border-bottom-color:#007bff}.tooltip.b-tooltip-primary.bs-tooltip-auto[x-placement^=left] .arrow:before,.tooltip.b-tooltip-primary.bs-tooltip-left .arrow:before{border-left-color:#007bff}.tooltip.b-tooltip-primary .tooltip-inner{color:#fff;background-color:#007bff}.tooltip.b-tooltip-secondary.bs-tooltip-auto[x-placement^=top] .arrow:before,.tooltip.b-tooltip-secondary.bs-tooltip-top .arrow:before{border-top-color:#6c757d}.tooltip.b-tooltip-secondary.bs-tooltip-auto[x-placement^=right] .arrow:before,.tooltip.b-tooltip-secondary.bs-tooltip-right .arrow:before{border-right-color:#6c757d}.tooltip.b-tooltip-secondary.bs-tooltip-auto[x-placement^=bottom] .arrow:before,.tooltip.b-tooltip-secondary.bs-tooltip-bottom .arrow:before{border-bottom-color:#6c757d}.tooltip.b-tooltip-secondary.bs-tooltip-auto[x-placement^=left] .arrow:before,.tooltip.b-tooltip-secondary.bs-tooltip-left .arrow:before{border-left-color:#6c757d}.tooltip.b-tooltip-secondary .tooltip-inner{color:#fff;background-color:#6c757d}.tooltip.b-tooltip-success.bs-tooltip-auto[x-placement^=top] .arrow:before,.tooltip.b-tooltip-success.bs-tooltip-top .arrow:before{border-top-color:#28a745}.tooltip.b-tooltip-success.bs-tooltip-auto[x-placement^=right] .arrow:before,.tooltip.b-tooltip-success.bs-tooltip-right .arrow:before{border-right-color:#28a745}.tooltip.b-tooltip-success.bs-tooltip-auto[x-placement^=bottom] .arrow:before,.tooltip.b-tooltip-success.bs-tooltip-bottom .arrow:before{border-bottom-color:#28a745}.tooltip.b-tooltip-success.bs-tooltip-auto[x-placement^=left] .arrow:before,.tooltip.b-tooltip-success.bs-tooltip-left .arrow:before{border-left-color:#28a745}.tooltip.b-tooltip-success .tooltip-inner{color:#fff;background-color:#28a745}.tooltip.b-tooltip-info.bs-tooltip-auto[x-placement^=top] .arrow:before,.tooltip.b-tooltip-info.bs-tooltip-top .arrow:before{border-top-color:#17a2b8}.tooltip.b-tooltip-info.bs-tooltip-auto[x-placement^=right] .arrow:before,.tooltip.b-tooltip-info.bs-tooltip-right .arrow:before{border-right-color:#17a2b8}.tooltip.b-tooltip-info.bs-tooltip-auto[x-placement^=bottom] .arrow:before,.tooltip.b-tooltip-info.bs-tooltip-bottom .arrow:before{border-bottom-color:#17a2b8}.tooltip.b-tooltip-info.bs-tooltip-auto[x-placement^=left] .arrow:before,.tooltip.b-tooltip-info.bs-tooltip-left .arrow:before{border-left-color:#17a2b8}.tooltip.b-tooltip-info .tooltip-inner{color:#fff;background-color:#17a2b8}.tooltip.b-tooltip-warning.bs-tooltip-auto[x-placement^=top] .arrow:before,.tooltip.b-tooltip-warning.bs-tooltip-top .arrow:before{border-top-color:#ffc107}.tooltip.b-tooltip-warning.bs-tooltip-auto[x-placement^=right] .arrow:before,.tooltip.b-tooltip-warning.bs-tooltip-right .arrow:before{border-right-color:#ffc107}.tooltip.b-tooltip-warning.bs-tooltip-auto[x-placement^=bottom] .arrow:before,.tooltip.b-tooltip-warning.bs-tooltip-bottom .arrow:before{border-bottom-color:#ffc107}.tooltip.b-tooltip-warning.bs-tooltip-auto[x-placement^=left] .arrow:before,.tooltip.b-tooltip-warning.bs-tooltip-left .arrow:before{border-left-color:#ffc107}.tooltip.b-tooltip-warning .tooltip-inner{color:#212529;background-color:#ffc107}.tooltip.b-tooltip-danger.bs-tooltip-auto[x-placement^=top] .arrow:before,.tooltip.b-tooltip-danger.bs-tooltip-top .arrow:before{border-top-color:#dc3545}.tooltip.b-tooltip-danger.bs-tooltip-auto[x-placement^=right] .arrow:before,.tooltip.b-tooltip-danger.bs-tooltip-right .arrow:before{border-right-color:#dc3545}.tooltip.b-tooltip-danger.bs-tooltip-auto[x-placement^=bottom] .arrow:before,.tooltip.b-tooltip-danger.bs-tooltip-bottom .arrow:before{border-bottom-color:#dc3545}.tooltip.b-tooltip-danger.bs-tooltip-auto[x-placement^=left] .arrow:before,.tooltip.b-tooltip-danger.bs-tooltip-left .arrow:before{border-left-color:#dc3545}.tooltip.b-tooltip-danger .tooltip-inner{color:#fff;background-color:#dc3545}.tooltip.b-tooltip-light.bs-tooltip-auto[x-placement^=top] .arrow:before,.tooltip.b-tooltip-light.bs-tooltip-top .arrow:before{border-top-color:#f8f9fa}.tooltip.b-tooltip-light.bs-tooltip-auto[x-placement^=right] .arrow:before,.tooltip.b-tooltip-light.bs-tooltip-right .arrow:before{border-right-color:#f8f9fa}.tooltip.b-tooltip-light.bs-tooltip-auto[x-placement^=bottom] .arrow:before,.tooltip.b-tooltip-light.bs-tooltip-bottom .arrow:before{border-bottom-color:#f8f9fa}.tooltip.b-tooltip-light.bs-tooltip-auto[x-placement^=left] .arrow:before,.tooltip.b-tooltip-light.bs-tooltip-left .arrow:before{border-left-color:#f8f9fa}.tooltip.b-tooltip-light .tooltip-inner{color:#212529;background-color:#f8f9fa}.tooltip.b-tooltip-dark.bs-tooltip-auto[x-placement^=top] .arrow:before,.tooltip.b-tooltip-dark.bs-tooltip-top .arrow:before{border-top-color:#343a40}.tooltip.b-tooltip-dark.bs-tooltip-auto[x-placement^=right] .arrow:before,.tooltip.b-tooltip-dark.bs-tooltip-right .arrow:before{border-right-color:#343a40}.tooltip.b-tooltip-dark.bs-tooltip-auto[x-placement^=bottom] .arrow:before,.tooltip.b-tooltip-dark.bs-tooltip-bottom .arrow:before{border-bottom-color:#343a40}.tooltip.b-tooltip-dark.bs-tooltip-auto[x-placement^=left] .arrow:before,.tooltip.b-tooltip-dark.bs-tooltip-left .arrow:before{border-left-color:#343a40}.tooltip.b-tooltip-dark .tooltip-inner{color:#fff;background-color:#343a40}.b-icon.bi{display:inline-block;overflow:visible;vertical-align:-.15em}.b-icon.b-icon-animation-cylon,.b-icon.b-iconstack .b-icon-animation-cylon>g{transform-origin:center;-webkit-animation:b-icon-animation-cylon .75s ease-in-out infinite alternate;animation:b-icon-animation-cylon .75s ease-in-out infinite alternate}@media (prefers-reduced-motion:reduce){.b-icon.b-icon-animation-cylon,.b-icon.b-iconstack .b-icon-animation-cylon>g{-webkit-animation:none;animation:none}}.b-icon.b-icon-animation-cylon-vertical,.b-icon.b-iconstack .b-icon-animation-cylon-vertical>g{transform-origin:center;-webkit-animation:b-icon-animation-cylon-vertical .75s ease-in-out infinite alternate;animation:b-icon-animation-cylon-vertical .75s ease-in-out infinite alternate}@media (prefers-reduced-motion:reduce){.b-icon.b-icon-animation-cylon-vertical,.b-icon.b-iconstack .b-icon-animation-cylon-vertical>g{-webkit-animation:none;animation:none}}.b-icon.b-icon-animation-fade,.b-icon.b-iconstack .b-icon-animation-fade>g{transform-origin:center;-webkit-animation:b-icon-animation-fade .75s ease-in-out infinite alternate;animation:b-icon-animation-fade .75s ease-in-out infinite alternate}@media (prefers-reduced-motion:reduce){.b-icon.b-icon-animation-fade,.b-icon.b-iconstack .b-icon-animation-fade>g{-webkit-animation:none;animation:none}}.b-icon.b-icon-animation-spin,.b-icon.b-iconstack .b-icon-animation-spin>g{transform-origin:center;-webkit-animation:b-icon-animation-spin 2s linear infinite normal;animation:b-icon-animation-spin 2s linear infinite normal}@media (prefers-reduced-motion:reduce){.b-icon.b-icon-animation-spin,.b-icon.b-iconstack .b-icon-animation-spin>g{-webkit-animation:none;animation:none}}.b-icon.b-icon-animation-spin-reverse,.b-icon.b-iconstack .b-icon-animation-spin-reverse>g{transform-origin:center;animation:b-icon-animation-spin 2s linear infinite reverse}@media (prefers-reduced-motion:reduce){.b-icon.b-icon-animation-spin-reverse,.b-icon.b-iconstack .b-icon-animation-spin-reverse>g{-webkit-animation:none;animation:none}}.b-icon.b-icon-animation-spin-pulse,.b-icon.b-iconstack .b-icon-animation-spin-pulse>g{transform-origin:center;-webkit-animation:b-icon-animation-spin 1s steps(8) infinite normal;animation:b-icon-animation-spin 1s steps(8) infinite normal}@media (prefers-reduced-motion:reduce){.b-icon.b-icon-animation-spin-pulse,.b-icon.b-iconstack .b-icon-animation-spin-pulse>g{-webkit-animation:none;animation:none}}.b-icon.b-icon-animation-spin-reverse-pulse,.b-icon.b-iconstack .b-icon-animation-spin-reverse-pulse>g{transform-origin:center;animation:b-icon-animation-spin 1s steps(8) infinite reverse}@media (prefers-reduced-motion:reduce){.b-icon.b-icon-animation-spin-reverse-pulse,.b-icon.b-iconstack .b-icon-animation-spin-reverse-pulse>g{-webkit-animation:none;animation:none}}.b-icon.b-icon-animation-throb,.b-icon.b-iconstack .b-icon-animation-throb>g{transform-origin:center;-webkit-animation:b-icon-animation-throb .75s ease-in-out infinite alternate;animation:b-icon-animation-throb .75s ease-in-out infinite alternate}@media (prefers-reduced-motion:reduce){.b-icon.b-icon-animation-throb,.b-icon.b-iconstack .b-icon-animation-throb>g{-webkit-animation:none;animation:none}}@-webkit-keyframes b-icon-animation-cylon{0%{transform:translateX(-25%)}to{transform:translateX(25%)}}@keyframes b-icon-animation-cylon{0%{transform:translateX(-25%)}to{transform:translateX(25%)}}@-webkit-keyframes b-icon-animation-cylon-vertical{0%{transform:translateY(25%)}to{transform:translateY(-25%)}}@keyframes b-icon-animation-cylon-vertical{0%{transform:translateY(25%)}to{transform:translateY(-25%)}}@-webkit-keyframes b-icon-animation-fade{0%{opacity:.1}to{opacity:1}}@keyframes b-icon-animation-fade{0%{opacity:.1}to{opacity:1}}@-webkit-keyframes b-icon-animation-spin{0%{transform:rotate(0deg)}to{transform:rotate(359deg)}}@keyframes b-icon-animation-spin{0%{transform:rotate(0deg)}to{transform:rotate(359deg)}}@-webkit-keyframes b-icon-animation-throb{0%{opacity:.5;transform:scale(.5)}to{opacity:1;transform:scale(1)}}@keyframes b-icon-animation-throb{0%{opacity:.5;transform:scale(.5)}to{opacity:1;transform:scale(1)}}.btn .b-icon.bi,.dropdown-item .b-icon.bi,.dropdown-toggle .b-icon.bi,.input-group-text .b-icon.bi,.nav-link .b-icon.bi{font-size:125%;vertical-align:text-bottom}fieldset[disabled] .multiselect{pointer-events:none}.multiselect__spinner{position:absolute;right:1px;top:1px;width:48px;height:35px;background:#fff;display:block}.multiselect__spinner:after,.multiselect__spinner:before{position:absolute;content:"";top:50%;left:50%;margin:-8px 0 0 -8px;width:16px;height:16px;border-radius:100%;border:2px solid transparent;border-top-color:#41b883;box-shadow:0 0 0 1px transparent}.multiselect__spinner:before{-webkit-animation:spinning 2.4s cubic-bezier(.41,.26,.2,.62);animation:spinning 2.4s cubic-bezier(.41,.26,.2,.62);-webkit-animation-iteration-count:infinite;animation-iteration-count:infinite}.multiselect__spinner:after{-webkit-animation:spinning 2.4s cubic-bezier(.51,.09,.21,.8);animation:spinning 2.4s cubic-bezier(.51,.09,.21,.8);-webkit-animation-iteration-count:infinite;animation-iteration-count:infinite}.multiselect__loading-enter-active,.multiselect__loading-leave-active{transition:opacity .4s ease-in-out;opacity:1}.multiselect__loading-enter,.multiselect__loading-leave-active{opacity:0}.multiselect,.multiselect__input,.multiselect__single{font-family:inherit;font-size:16px;touch-action:manipulation}.multiselect{box-sizing:content-box;display:block;position:relative;width:100%;min-height:40px;text-align:left;color:#35495e}.multiselect *{box-sizing:border-box}.multiselect:focus{outline:none}.multiselect--disabled{background:#ededed;pointer-events:none;opacity:.6}.multiselect--active{z-index:50}.multiselect--active:not(.multiselect--above) .multiselect__current,.multiselect--active:not(.multiselect--above) .multiselect__input,.multiselect--active:not(.multiselect--above) .multiselect__tags{border-bottom-left-radius:0;border-bottom-right-radius:0}.multiselect--active .multiselect__select{transform:rotate(180deg)}.multiselect--above.multiselect--active .multiselect__current,.multiselect--above.multiselect--active .multiselect__input,.multiselect--above.multiselect--active .multiselect__tags{border-top-left-radius:0;border-top-right-radius:0}.multiselect__input,.multiselect__single{position:relative;display:inline-block;min-height:20px;line-height:20px;border:none;border-radius:5px;background:#fff;padding:0 0 0 5px;width:100%;transition:border .1s ease;box-sizing:border-box;margin-bottom:8px;vertical-align:top}.multiselect__input:-ms-input-placeholder{color:#35495e}.multiselect__input::-moz-placeholder{color:#35495e}.multiselect__input::placeholder{color:#35495e}.multiselect__tag~.multiselect__input,.multiselect__tag~.multiselect__single{width:auto}.multiselect__input:hover,.multiselect__single:hover{border-color:#cfcfcf}.multiselect__input:focus,.multiselect__single:focus{border-color:#a8a8a8;outline:none}.multiselect__single{padding-left:5px;margin-bottom:8px}.multiselect__tags-wrap{display:inline}.multiselect__tags{min-height:40px;display:block;padding:8px 40px 0 8px;border-radius:5px;border:1px solid #e8e8e8;background:#fff;font-size:14px}.multiselect__tag{position:relative;display:inline-block;padding:4px 26px 4px 10px;border-radius:5px;margin-right:10px;color:#fff;line-height:1;background:#41b883;margin-bottom:5px;white-space:nowrap;overflow:hidden;max-width:100%;text-overflow:ellipsis}.multiselect__tag-icon{cursor:pointer;margin-left:7px;position:absolute;right:0;top:0;bottom:0;font-weight:700;font-style:normal;width:22px;text-align:center;line-height:22px;transition:all .2s ease;border-radius:5px}.multiselect__tag-icon:after{content:"\D7";color:#266d4d;font-size:14px}.multiselect__tag-icon:focus,.multiselect__tag-icon:hover{background:#369a6e}.multiselect__tag-icon:focus:after,.multiselect__tag-icon:hover:after{color:#fff}.multiselect__current{min-height:40px;overflow:hidden;padding:8px 30px 0 12px;white-space:nowrap;border-radius:5px;border:1px solid #e8e8e8}.multiselect__current,.multiselect__select{line-height:16px;box-sizing:border-box;display:block;margin:0;text-decoration:none;cursor:pointer}.multiselect__select{position:absolute;width:40px;height:38px;right:1px;top:1px;padding:4px 8px;text-align:center;transition:transform .2s ease}.multiselect__select:before{position:relative;right:0;top:65%;color:#999;margin-top:4px;border-color:#999 transparent transparent;border-style:solid;border-width:5px 5px 0;content:""}.multiselect__placeholder{color:#adadad;display:inline-block;margin-bottom:10px;padding-top:2px}.multiselect--active .multiselect__placeholder{display:none}.multiselect__content-wrapper{position:absolute;display:block;background:#fff;width:100%;max-height:240px;overflow:auto;border:1px solid #e8e8e8;border-top:none;border-bottom-left-radius:5px;border-bottom-right-radius:5px;z-index:50;-webkit-overflow-scrolling:touch}.multiselect__content{list-style:none;display:inline-block;padding:0;margin:0;min-width:100%;vertical-align:top}.multiselect--above .multiselect__content-wrapper{bottom:100%;border-bottom-left-radius:0;border-bottom-right-radius:0;border-top-left-radius:5px;border-top-right-radius:5px;border-bottom:none;border-top:1px solid #e8e8e8}.multiselect__content::webkit-scrollbar{display:none}.multiselect__element{display:block}.multiselect__option{display:block;padding:12px;min-height:40px;line-height:16px;text-decoration:none;text-transform:none;vertical-align:middle;position:relative;cursor:pointer;white-space:nowrap}.multiselect__option:after{top:0;right:0;position:absolute;line-height:40px;padding-right:12px;padding-left:20px;font-size:13px}.multiselect__option--highlight{background:#41b883;outline:none;color:#fff}.multiselect__option--highlight:after{content:attr(data-select);background:#41b883;color:#fff}.multiselect__option--selected{background:#f3f3f3;color:#35495e;font-weight:700}.multiselect__option--selected:after{content:attr(data-selected);color:silver}.multiselect__option--selected.multiselect__option--highlight{background:#ff6a6a;color:#fff}.multiselect__option--selected.multiselect__option--highlight:after{background:#ff6a6a;content:attr(data-deselect);color:#fff}.multiselect--disabled .multiselect__current,.multiselect--disabled .multiselect__select{background:#ededed;color:#a6a6a6}.multiselect__option--disabled{background:#ededed!important;color:#a6a6a6!important;cursor:text;pointer-events:none}.multiselect__option--group{background:#ededed;color:#35495e}.multiselect__option--group.multiselect__option--highlight{background:#35495e;color:#fff}.multiselect__option--group.multiselect__option--highlight:after{background:#35495e}.multiselect__option--disabled.multiselect__option--highlight{background:#dedede}.multiselect__option--group-selected.multiselect__option--highlight{background:#ff6a6a;color:#fff}.multiselect__option--group-selected.multiselect__option--highlight:after{background:#ff6a6a;content:attr(data-deselect);color:#fff}.multiselect-enter-active,.multiselect-leave-active{transition:all .15s ease}.multiselect-enter,.multiselect-leave-active{opacity:0}.multiselect__strong{margin-bottom:8px;line-height:20px;display:inline-block;vertical-align:top}[dir=rtl] .multiselect{text-align:right}[dir=rtl] .multiselect__select{right:auto;left:1px}[dir=rtl] .multiselect__tags{padding:8px 8px 0 40px}[dir=rtl] .multiselect__content{text-align:right}[dir=rtl] .multiselect__option:after{right:auto;left:0}[dir=rtl] .multiselect__clear{right:auto;left:12px}[dir=rtl] .multiselect__spinner{right:auto;left:1px}@-webkit-keyframes spinning{0%{transform:rotate(0)}to{transform:rotate(2turn)}}@keyframes spinning{0%{transform:rotate(0)}to{transform:rotate(2turn)}} \ No newline at end of file diff --git a/cookbook/static/vue/import_response_view.html b/cookbook/static/vue/import_response_view.html deleted file mode 100644 index 27032984..00000000 --- a/cookbook/static/vue/import_response_view.html +++ /dev/null @@ -1 +0,0 @@ -Vue App
\ No newline at end of file diff --git a/cookbook/static/vue/js/chunk-vendors.js b/cookbook/static/vue/js/chunk-vendors.js deleted file mode 100644 index f97900ac..00000000 --- a/cookbook/static/vue/js/chunk-vendors.js +++ /dev/null @@ -1,353 +0,0 @@ -(window["webpackJsonp"]=window["webpackJsonp"]||[]).push([["chunk-vendors"],{"0056":function(t,e,n){"use strict";n.d(e,"a",(function(){return r})),n.d(e,"b",(function(){return i})),n.d(e,"c",(function(){return a})),n.d(e,"d",(function(){return o})),n.d(e,"e",(function(){return s})),n.d(e,"f",(function(){return c})),n.d(e,"g",(function(){return u})),n.d(e,"h",(function(){return l})),n.d(e,"i",(function(){return d})),n.d(e,"j",(function(){return f})),n.d(e,"k",(function(){return h})),n.d(e,"l",(function(){return p})),n.d(e,"m",(function(){return m})),n.d(e,"n",(function(){return b})),n.d(e,"o",(function(){return v})),n.d(e,"p",(function(){return _})),n.d(e,"q",(function(){return g})),n.d(e,"r",(function(){return y})),n.d(e,"s",(function(){return O})),n.d(e,"t",(function(){return j})),n.d(e,"u",(function(){return w})),n.d(e,"v",(function(){return M})),n.d(e,"w",(function(){return L})),n.d(e,"x",(function(){return k})),n.d(e,"y",(function(){return T})),n.d(e,"z",(function(){return D})),n.d(e,"A",(function(){return S})),n.d(e,"B",(function(){return Y})),n.d(e,"C",(function(){return x})),n.d(e,"D",(function(){return P})),n.d(e,"E",(function(){return C})),n.d(e,"F",(function(){return E})),n.d(e,"G",(function(){return H})),n.d(e,"H",(function(){return A})),n.d(e,"I",(function(){return $})),n.d(e,"J",(function(){return F})),n.d(e,"K",(function(){return I})),n.d(e,"L",(function(){return B})),n.d(e,"M",(function(){return R})),n.d(e,"N",(function(){return N})),n.d(e,"O",(function(){return V})),n.d(e,"P",(function(){return z})),n.d(e,"Q",(function(){return W})),n.d(e,"R",(function(){return U})),n.d(e,"S",(function(){return G})),n.d(e,"T",(function(){return J})),n.d(e,"U",(function(){return q})),n.d(e,"V",(function(){return K})),n.d(e,"W",(function(){return X})),n.d(e,"X",(function(){return Z})),n.d(e,"Y",(function(){return Q})),n.d(e,"Z",(function(){return tt})),n.d(e,"ab",(function(){return et})),n.d(e,"bb",(function(){return nt})),n.d(e,"eb",(function(){return rt})),n.d(e,"fb",(function(){return it})),n.d(e,"gb",(function(){return at})),n.d(e,"hb",(function(){return ot})),n.d(e,"ib",(function(){return st})),n.d(e,"db",(function(){return ct})),n.d(e,"cb",(function(){return ut}));var r="activate-tab",i="blur",a="cancel",o="change",s="changed",c="click",u="close",l="context",d="context-changed",f="destroyed",h="disable",p="disabled",m="dismissed",b="dismiss-count-down",v="enable",_="enabled",g="filtered",y="first",O="focusin",j="focusout",w="head-clicked",M="hidden",L="hide",k="img-error",T="input",D="last",S="mouseenter",Y="mouseleave",x="next",P="ok",C="open",E="page-click",H="paused",A="prev",$="refresh",F="refreshed",I="remove",B="row-clicked",R="row-contextmenu",N="row-dblclicked",V="row-hovered",z="row-middle-clicked",W="row-selected",U="row-unhovered",G="selected",J="show",q="shown",K="sliding-end",X="sliding-start",Z="sort-changed",Q="tag-state",tt="toggle",et="unpaused",nt="update",rt="hook:beforeDestroy",it="hook:destroyed",at="update:",ot="bv",st="::",ct={passive:!0},ut={passive:!0,capture:!1}},"00ee":function(t,e,n){var r=n("b622"),i=r("toStringTag"),a={};a[i]="z",t.exports="[object z]"===String(a)},"00fd":function(t,e,n){var r=n("9e69"),i=Object.prototype,a=i.hasOwnProperty,o=i.toString,s=r?r.toStringTag:void 0;function c(t){var e=a.call(t,s),n=t[s];try{t[s]=void 0;var r=!0}catch(c){}var i=o.call(t);return r&&(e?t[s]=n:delete t[s]),i}t.exports=c},"010e":function(t,e,n){(function(t,e){e(n("c1df"))})(0,(function(t){"use strict"; -//! moment.js locale configuration -var e=t.defineLocale("uz-latn",{months:"Yanvar_Fevral_Mart_Aprel_May_Iyun_Iyul_Avgust_Sentabr_Oktabr_Noyabr_Dekabr".split("_"),monthsShort:"Yan_Fev_Mar_Apr_May_Iyun_Iyul_Avg_Sen_Okt_Noy_Dek".split("_"),weekdays:"Yakshanba_Dushanba_Seshanba_Chorshanba_Payshanba_Juma_Shanba".split("_"),weekdaysShort:"Yak_Dush_Sesh_Chor_Pay_Jum_Shan".split("_"),weekdaysMin:"Ya_Du_Se_Cho_Pa_Ju_Sha".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"D MMMM YYYY, dddd HH:mm"},calendar:{sameDay:"[Bugun soat] LT [da]",nextDay:"[Ertaga] LT [da]",nextWeek:"dddd [kuni soat] LT [da]",lastDay:"[Kecha soat] LT [da]",lastWeek:"[O'tgan] dddd [kuni soat] LT [da]",sameElse:"L"},relativeTime:{future:"Yaqin %s ichida",past:"Bir necha %s oldin",s:"soniya",ss:"%d soniya",m:"bir daqiqa",mm:"%d daqiqa",h:"bir soat",hh:"%d soat",d:"bir kun",dd:"%d kun",M:"bir oy",MM:"%d oy",y:"bir yil",yy:"%d yil"},week:{dow:1,doy:7}});return e}))},"02fb":function(t,e,n){(function(t,e){e(n("c1df"))})(0,(function(t){"use strict"; -//! moment.js locale configuration -var e=t.defineLocale("ml",{months:"ജനുവരി_ഫെബ്രുവരി_മാർച്ച്_ഏപ്രിൽ_മേയ്_ജൂൺ_ജൂലൈ_ഓഗസ്റ്റ്_സെപ്റ്റംബർ_ഒക്ടോബർ_നവംബർ_ഡിസംബർ".split("_"),monthsShort:"ജനു._ഫെബ്രു._മാർ._ഏപ്രി._മേയ്_ജൂൺ_ജൂലൈ._ഓഗ._സെപ്റ്റ._ഒക്ടോ._നവം._ഡിസം.".split("_"),monthsParseExact:!0,weekdays:"ഞായറാഴ്ച_തിങ്കളാഴ്ച_ചൊവ്വാഴ്ച_ബുധനാഴ്ച_വ്യാഴാഴ്ച_വെള്ളിയാഴ്ച_ശനിയാഴ്ച".split("_"),weekdaysShort:"ഞായർ_തിങ്കൾ_ചൊവ്വ_ബുധൻ_വ്യാഴം_വെള്ളി_ശനി".split("_"),weekdaysMin:"ഞാ_തി_ചൊ_ബു_വ്യാ_വെ_ശ".split("_"),longDateFormat:{LT:"A h:mm -നു",LTS:"A h:mm:ss -നു",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, A h:mm -നു",LLLL:"dddd, D MMMM YYYY, A h:mm -നു"},calendar:{sameDay:"[ഇന്ന്] LT",nextDay:"[നാളെ] LT",nextWeek:"dddd, LT",lastDay:"[ഇന്നലെ] LT",lastWeek:"[കഴിഞ്ഞ] dddd, LT",sameElse:"L"},relativeTime:{future:"%s കഴിഞ്ഞ്",past:"%s മുൻപ്",s:"അൽപ നിമിഷങ്ങൾ",ss:"%d സെക്കൻഡ്",m:"ഒരു മിനിറ്റ്",mm:"%d മിനിറ്റ്",h:"ഒരു മണിക്കൂർ",hh:"%d മണിക്കൂർ",d:"ഒരു ദിവസം",dd:"%d ദിവസം",M:"ഒരു മാസം",MM:"%d മാസം",y:"ഒരു വർഷം",yy:"%d വർഷം"},meridiemParse:/രാത്രി|രാവിലെ|ഉച്ച കഴിഞ്ഞ്|വൈകുന്നേരം|രാത്രി/i,meridiemHour:function(t,e){return 12===t&&(t=0),"രാത്രി"===e&&t>=4||"ഉച്ച കഴിഞ്ഞ്"===e||"വൈകുന്നേരം"===e?t+12:t},meridiem:function(t,e,n){return t<4?"രാത്രി":t<12?"രാവിലെ":t<17?"ഉച്ച കഴിഞ്ഞ്":t<20?"വൈകുന്നേരം":"രാത്രി"}});return e}))},"0366":function(t,e,n){var r=n("1c0b");t.exports=function(t,e,n){if(r(t),void 0===e)return t;switch(n){case 0:return function(){return t.call(e)};case 1:return function(n){return t.call(e,n)};case 2:return function(n,r){return t.call(e,n,r)};case 3:return function(n,r,i){return t.call(e,n,r,i)}}return function(){return t.apply(e,arguments)}}},"03ec":function(t,e,n){(function(t,e){e(n("c1df"))})(0,(function(t){"use strict"; -//! moment.js locale configuration -var e=t.defineLocale("cv",{months:"кӑрлач_нарӑс_пуш_ака_май_ҫӗртме_утӑ_ҫурла_авӑн_юпа_чӳк_раштав".split("_"),monthsShort:"кӑр_нар_пуш_ака_май_ҫӗр_утӑ_ҫур_авн_юпа_чӳк_раш".split("_"),weekdays:"вырсарникун_тунтикун_ытларикун_юнкун_кӗҫнерникун_эрнекун_шӑматкун".split("_"),weekdaysShort:"выр_тун_ытл_юн_кӗҫ_эрн_шӑм".split("_"),weekdaysMin:"вр_тн_ыт_юн_кҫ_эр_шм".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD-MM-YYYY",LL:"YYYY [ҫулхи] MMMM [уйӑхӗн] D[-мӗшӗ]",LLL:"YYYY [ҫулхи] MMMM [уйӑхӗн] D[-мӗшӗ], HH:mm",LLLL:"dddd, YYYY [ҫулхи] MMMM [уйӑхӗн] D[-мӗшӗ], HH:mm"},calendar:{sameDay:"[Паян] LT [сехетре]",nextDay:"[Ыран] LT [сехетре]",lastDay:"[Ӗнер] LT [сехетре]",nextWeek:"[Ҫитес] dddd LT [сехетре]",lastWeek:"[Иртнӗ] dddd LT [сехетре]",sameElse:"L"},relativeTime:{future:function(t){var e=/сехет$/i.exec(t)?"рен":/ҫул$/i.exec(t)?"тан":"ран";return t+e},past:"%s каялла",s:"пӗр-ик ҫеккунт",ss:"%d ҫеккунт",m:"пӗр минут",mm:"%d минут",h:"пӗр сехет",hh:"%d сехет",d:"пӗр кун",dd:"%d кун",M:"пӗр уйӑх",MM:"%d уйӑх",y:"пӗр ҫул",yy:"%d ҫул"},dayOfMonthOrdinalParse:/\d{1,2}-мӗш/,ordinal:"%d-мӗш",week:{dow:1,doy:7}});return e}))},"0558":function(t,e,n){(function(t,e){e(n("c1df"))})(0,(function(t){"use strict"; -//! moment.js locale configuration -function e(t){return t%100===11||t%10!==1}function n(t,n,r,i){var a=t+" ";switch(r){case"s":return n||i?"nokkrar sekúndur":"nokkrum sekúndum";case"ss":return e(t)?a+(n||i?"sekúndur":"sekúndum"):a+"sekúnda";case"m":return n?"mínúta":"mínútu";case"mm":return e(t)?a+(n||i?"mínútur":"mínútum"):n?a+"mínúta":a+"mínútu";case"hh":return e(t)?a+(n||i?"klukkustundir":"klukkustundum"):a+"klukkustund";case"d":return n?"dagur":i?"dag":"degi";case"dd":return e(t)?n?a+"dagar":a+(i?"daga":"dögum"):n?a+"dagur":a+(i?"dag":"degi");case"M":return n?"mánuður":i?"mánuð":"mánuði";case"MM":return e(t)?n?a+"mánuðir":a+(i?"mánuði":"mánuðum"):n?a+"mánuður":a+(i?"mánuð":"mánuði");case"y":return n||i?"ár":"ári";case"yy":return e(t)?a+(n||i?"ár":"árum"):a+(n||i?"ár":"ári")}}var r=t.defineLocale("is",{months:"janúar_febrúar_mars_apríl_maí_júní_júlí_ágúst_september_október_nóvember_desember".split("_"),monthsShort:"jan_feb_mar_apr_maí_jún_júl_ágú_sep_okt_nóv_des".split("_"),weekdays:"sunnudagur_mánudagur_þriðjudagur_miðvikudagur_fimmtudagur_föstudagur_laugardagur".split("_"),weekdaysShort:"sun_mán_þri_mið_fim_fös_lau".split("_"),weekdaysMin:"Su_Má_Þr_Mi_Fi_Fö_La".split("_"),longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY [kl.] H:mm",LLLL:"dddd, D. MMMM YYYY [kl.] H:mm"},calendar:{sameDay:"[í dag kl.] LT",nextDay:"[á morgun kl.] LT",nextWeek:"dddd [kl.] LT",lastDay:"[í gær kl.] LT",lastWeek:"[síðasta] dddd [kl.] LT",sameElse:"L"},relativeTime:{future:"eftir %s",past:"fyrir %s síðan",s:n,ss:n,m:n,mm:n,h:"klukkustund",hh:n,d:n,dd:n,M:n,MM:n,y:n,yy:n},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}});return r}))},"057f":function(t,e,n){var r=n("fc6a"),i=n("241c").f,a={}.toString,o="object"==typeof window&&window&&Object.getOwnPropertyNames?Object.getOwnPropertyNames(window):[],s=function(t){try{return i(t)}catch(e){return o.slice()}};t.exports.f=function(t){return o&&"[object Window]"==a.call(t)?s(t):i(r(t))}},"06cf":function(t,e,n){var r=n("83ab"),i=n("d1e7"),a=n("5c6c"),o=n("fc6a"),s=n("c04e"),c=n("5135"),u=n("0cfb"),l=Object.getOwnPropertyDescriptor;e.f=r?l:function(t,e){if(t=o(t),e=s(e,!0),u)try{return l(t,e)}catch(n){}if(c(t,e))return a(!i.f.call(t,e),t[e])}},"0721":function(t,e,n){(function(t,e){e(n("c1df"))})(0,(function(t){"use strict"; -//! moment.js locale configuration -var e=t.defineLocale("fo",{months:"januar_februar_mars_apríl_mai_juni_juli_august_september_oktober_november_desember".split("_"),monthsShort:"jan_feb_mar_apr_mai_jun_jul_aug_sep_okt_nov_des".split("_"),weekdays:"sunnudagur_mánadagur_týsdagur_mikudagur_hósdagur_fríggjadagur_leygardagur".split("_"),weekdaysShort:"sun_mán_týs_mik_hós_frí_ley".split("_"),weekdaysMin:"su_má_tý_mi_hó_fr_le".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D. MMMM, YYYY HH:mm"},calendar:{sameDay:"[Í dag kl.] LT",nextDay:"[Í morgin kl.] LT",nextWeek:"dddd [kl.] LT",lastDay:"[Í gjár kl.] LT",lastWeek:"[síðstu] dddd [kl] LT",sameElse:"L"},relativeTime:{future:"um %s",past:"%s síðani",s:"fá sekund",ss:"%d sekundir",m:"ein minuttur",mm:"%d minuttir",h:"ein tími",hh:"%d tímar",d:"ein dagur",dd:"%d dagar",M:"ein mánaður",MM:"%d mánaðir",y:"eitt ár",yy:"%d ár"},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}});return e}))},"079e":function(t,e,n){(function(t,e){e(n("c1df"))})(0,(function(t){"use strict"; -//! moment.js locale configuration -var e=t.defineLocale("ja",{eras:[{since:"2019-05-01",offset:1,name:"令和",narrow:"㋿",abbr:"R"},{since:"1989-01-08",until:"2019-04-30",offset:1,name:"平成",narrow:"㍻",abbr:"H"},{since:"1926-12-25",until:"1989-01-07",offset:1,name:"昭和",narrow:"㍼",abbr:"S"},{since:"1912-07-30",until:"1926-12-24",offset:1,name:"大正",narrow:"㍽",abbr:"T"},{since:"1873-01-01",until:"1912-07-29",offset:6,name:"明治",narrow:"㍾",abbr:"M"},{since:"0001-01-01",until:"1873-12-31",offset:1,name:"西暦",narrow:"AD",abbr:"AD"},{since:"0000-12-31",until:-1/0,offset:1,name:"紀元前",narrow:"BC",abbr:"BC"}],eraYearOrdinalRegex:/(元|\d+)年/,eraYearOrdinalParse:function(t,e){return"元"===e[1]?1:parseInt(e[1]||t,10)},months:"1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月".split("_"),monthsShort:"1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月".split("_"),weekdays:"日曜日_月曜日_火曜日_水曜日_木曜日_金曜日_土曜日".split("_"),weekdaysShort:"日_月_火_水_木_金_土".split("_"),weekdaysMin:"日_月_火_水_木_金_土".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY/MM/DD",LL:"YYYY年M月D日",LLL:"YYYY年M月D日 HH:mm",LLLL:"YYYY年M月D日 dddd HH:mm",l:"YYYY/MM/DD",ll:"YYYY年M月D日",lll:"YYYY年M月D日 HH:mm",llll:"YYYY年M月D日(ddd) HH:mm"},meridiemParse:/午前|午後/i,isPM:function(t){return"午後"===t},meridiem:function(t,e,n){return t<12?"午前":"午後"},calendar:{sameDay:"[今日] LT",nextDay:"[明日] LT",nextWeek:function(t){return t.week()!==this.week()?"[来週]dddd LT":"dddd LT"},lastDay:"[昨日] LT",lastWeek:function(t){return this.week()!==t.week()?"[先週]dddd LT":"dddd LT"},sameElse:"L"},dayOfMonthOrdinalParse:/\d{1,2}日/,ordinal:function(t,e){switch(e){case"y":return 1===t?"元年":t+"年";case"d":case"D":case"DDD":return t+"日";default:return t}},relativeTime:{future:"%s後",past:"%s前",s:"数秒",ss:"%d秒",m:"1分",mm:"%d分",h:"1時間",hh:"%d時間",d:"1日",dd:"%d日",M:"1ヶ月",MM:"%dヶ月",y:"1年",yy:"%d年"}});return e}))},"0a06":function(t,e,n){"use strict";var r=n("c532"),i=n("30b5"),a=n("f6b49"),o=n("5270"),s=n("4a7b");function c(t){this.defaults=t,this.interceptors={request:new a,response:new a}}c.prototype.request=function(t){"string"===typeof t?(t=arguments[1]||{},t.url=arguments[0]):t=t||{},t=s(this.defaults,t),t.method?t.method=t.method.toLowerCase():this.defaults.method?t.method=this.defaults.method.toLowerCase():t.method="get";var e=[o,void 0],n=Promise.resolve(t);this.interceptors.request.forEach((function(t){e.unshift(t.fulfilled,t.rejected)})),this.interceptors.response.forEach((function(t){e.push(t.fulfilled,t.rejected)}));while(e.length)n=n.then(e.shift(),e.shift());return n},c.prototype.getUri=function(t){return t=s(this.defaults,t),i(t.url,t.params,t.paramsSerializer).replace(/^\?/,"")},r.forEach(["delete","get","head","options"],(function(t){c.prototype[t]=function(e,n){return this.request(s(n||{},{method:t,url:e,data:(n||{}).data}))}})),r.forEach(["post","put","patch"],(function(t){c.prototype[t]=function(e,n,r){return this.request(s(r||{},{method:t,url:e,data:n}))}})),t.exports=c},"0a3c":function(t,e,n){(function(t,e){e(n("c1df"))})(0,(function(t){"use strict"; -//! moment.js locale configuration -var e="ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.".split("_"),n="ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic".split("_"),r=[/^ene/i,/^feb/i,/^mar/i,/^abr/i,/^may/i,/^jun/i,/^jul/i,/^ago/i,/^sep/i,/^oct/i,/^nov/i,/^dic/i],i=/^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre|ene\.?|feb\.?|mar\.?|abr\.?|may\.?|jun\.?|jul\.?|ago\.?|sep\.?|oct\.?|nov\.?|dic\.?)/i,a=t.defineLocale("es-do",{months:"enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre".split("_"),monthsShort:function(t,r){return t?/-MMM-/.test(r)?n[t.month()]:e[t.month()]:e},monthsRegex:i,monthsShortRegex:i,monthsStrictRegex:/^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre)/i,monthsShortStrictRegex:/^(ene\.?|feb\.?|mar\.?|abr\.?|may\.?|jun\.?|jul\.?|ago\.?|sep\.?|oct\.?|nov\.?|dic\.?)/i,monthsParse:r,longMonthsParse:r,shortMonthsParse:r,weekdays:"domingo_lunes_martes_miércoles_jueves_viernes_sábado".split("_"),weekdaysShort:"dom._lun._mar._mié._jue._vie._sáb.".split("_"),weekdaysMin:"do_lu_ma_mi_ju_vi_sá".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"h:mm A",LTS:"h:mm:ss A",L:"DD/MM/YYYY",LL:"D [de] MMMM [de] YYYY",LLL:"D [de] MMMM [de] YYYY h:mm A",LLLL:"dddd, D [de] MMMM [de] YYYY h:mm A"},calendar:{sameDay:function(){return"[hoy a la"+(1!==this.hours()?"s":"")+"] LT"},nextDay:function(){return"[mañana a la"+(1!==this.hours()?"s":"")+"] LT"},nextWeek:function(){return"dddd [a la"+(1!==this.hours()?"s":"")+"] LT"},lastDay:function(){return"[ayer a la"+(1!==this.hours()?"s":"")+"] LT"},lastWeek:function(){return"[el] dddd [pasado a la"+(1!==this.hours()?"s":"")+"] LT"},sameElse:"L"},relativeTime:{future:"en %s",past:"hace %s",s:"unos segundos",ss:"%d segundos",m:"un minuto",mm:"%d minutos",h:"una hora",hh:"%d horas",d:"un día",dd:"%d días",w:"una semana",ww:"%d semanas",M:"un mes",MM:"%d meses",y:"un año",yy:"%d años"},dayOfMonthOrdinalParse:/\d{1,2}º/,ordinal:"%dº",week:{dow:1,doy:4}});return a}))},"0a84":function(t,e,n){(function(t,e){e(n("c1df"))})(0,(function(t){"use strict"; -//! moment.js locale configuration -var e=t.defineLocale("ar-ma",{months:"يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر".split("_"),monthsShort:"يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر".split("_"),weekdays:"الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت".split("_"),weekdaysShort:"احد_اثنين_ثلاثاء_اربعاء_خميس_جمعة_سبت".split("_"),weekdaysMin:"ح_ن_ث_ر_خ_ج_س".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[اليوم على الساعة] LT",nextDay:"[غدا على الساعة] LT",nextWeek:"dddd [على الساعة] LT",lastDay:"[أمس على الساعة] LT",lastWeek:"dddd [على الساعة] LT",sameElse:"L"},relativeTime:{future:"في %s",past:"منذ %s",s:"ثوان",ss:"%d ثانية",m:"دقيقة",mm:"%d دقائق",h:"ساعة",hh:"%d ساعات",d:"يوم",dd:"%d أيام",M:"شهر",MM:"%d أشهر",y:"سنة",yy:"%d سنوات"},week:{dow:1,doy:4}});return e}))},"0b4b":function(t,e,n){},"0caa":function(t,e,n){(function(t,e){e(n("c1df"))})(0,(function(t){"use strict"; -//! moment.js locale configuration -function e(t,e,n,r){var i={s:["thoddea sekondamni","thodde sekond"],ss:[t+" sekondamni",t+" sekond"],m:["eka mintan","ek minut"],mm:[t+" mintamni",t+" mintam"],h:["eka voran","ek vor"],hh:[t+" voramni",t+" voram"],d:["eka disan","ek dis"],dd:[t+" disamni",t+" dis"],M:["eka mhoinean","ek mhoino"],MM:[t+" mhoineamni",t+" mhoine"],y:["eka vorsan","ek voros"],yy:[t+" vorsamni",t+" vorsam"]};return r?i[n][0]:i[n][1]}var n=t.defineLocale("gom-latn",{months:{standalone:"Janer_Febrer_Mars_Abril_Mai_Jun_Julai_Agost_Setembr_Otubr_Novembr_Dezembr".split("_"),format:"Janerachea_Febrerachea_Marsachea_Abrilachea_Maiachea_Junachea_Julaiachea_Agostachea_Setembrachea_Otubrachea_Novembrachea_Dezembrachea".split("_"),isFormat:/MMMM(\s)+D[oD]?/},monthsShort:"Jan._Feb._Mars_Abr._Mai_Jun_Jul._Ago._Set._Otu._Nov._Dez.".split("_"),monthsParseExact:!0,weekdays:"Aitar_Somar_Mongllar_Budhvar_Birestar_Sukrar_Son'var".split("_"),weekdaysShort:"Ait._Som._Mon._Bud._Bre._Suk._Son.".split("_"),weekdaysMin:"Ai_Sm_Mo_Bu_Br_Su_Sn".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"A h:mm [vazta]",LTS:"A h:mm:ss [vazta]",L:"DD-MM-YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY A h:mm [vazta]",LLLL:"dddd, MMMM Do, YYYY, A h:mm [vazta]",llll:"ddd, D MMM YYYY, A h:mm [vazta]"},calendar:{sameDay:"[Aiz] LT",nextDay:"[Faleam] LT",nextWeek:"[Fuddlo] dddd[,] LT",lastDay:"[Kal] LT",lastWeek:"[Fattlo] dddd[,] LT",sameElse:"L"},relativeTime:{future:"%s",past:"%s adim",s:e,ss:e,m:e,mm:e,h:e,hh:e,d:e,dd:e,M:e,MM:e,y:e,yy:e},dayOfMonthOrdinalParse:/\d{1,2}(er)/,ordinal:function(t,e){switch(e){case"D":return t+"er";default:case"M":case"Q":case"DDD":case"d":case"w":case"W":return t}},week:{dow:0,doy:3},meridiemParse:/rati|sokallim|donparam|sanje/,meridiemHour:function(t,e){return 12===t&&(t=0),"rati"===e?t<4?t:t+12:"sokallim"===e?t:"donparam"===e?t>12?t:t+12:"sanje"===e?t+12:void 0},meridiem:function(t,e,n){return t<4?"rati":t<12?"sokallim":t<16?"donparam":t<20?"sanje":"rati"}});return n}))},"0cb2":function(t,e,n){var r=n("7b0b"),i=Math.floor,a="".replace,o=/\$([$&'`]|\d{1,2}|<[^>]*>)/g,s=/\$([$&'`]|\d{1,2})/g;t.exports=function(t,e,n,c,u,l){var d=n+t.length,f=c.length,h=s;return void 0!==u&&(u=r(u),h=o),a.call(l,h,(function(r,a){var o;switch(a.charAt(0)){case"$":return"$";case"&":return t;case"`":return e.slice(0,n);case"'":return e.slice(d);case"<":o=u[a.slice(1,-1)];break;default:var s=+a;if(0===s)return r;if(s>f){var l=i(s/10);return 0===l?r:l<=f?void 0===c[l-1]?a.charAt(1):c[l-1]+a.charAt(1):r}o=c[s-1]}return void 0===o?"":o}))}},"0cfb":function(t,e,n){var r=n("83ab"),i=n("d039"),a=n("cc12");t.exports=!r&&!i((function(){return 7!=Object.defineProperty(a("div"),"a",{get:function(){return 7}}).a}))},"0d3b":function(t,e,n){var r=n("d039"),i=n("b622"),a=n("c430"),o=i("iterator");t.exports=!r((function(){var t=new URL("b?a=1&b=2&c=3","http://a"),e=t.searchParams,n="";return t.pathname="c%20d",e.forEach((function(t,r){e["delete"]("b"),n+=r+t})),a&&!t.toJSON||!e.sort||"http://a/c%20d?a=1&c=3"!==t.href||"3"!==e.get("c")||"a=1"!==String(new URLSearchParams("?a=1"))||!e[o]||"a"!==new URL("https://a@b").username||"b"!==new URLSearchParams(new URLSearchParams("a=b")).get("a")||"xn--e1aybc"!==new URL("http://тест").host||"#%D0%B1"!==new URL("http://a#б").hash||"a1c3"!==n||"x"!==new URL("http://x",void 0).host}))},"0df6":function(t,e,n){"use strict";t.exports=function(t){return function(e){return t.apply(null,e)}}},"0e49":function(t,e,n){(function(t,e){e(n("c1df"))})(0,(function(t){"use strict"; -//! moment.js locale configuration -var e=t.defineLocale("fr-ch",{months:"janvier_février_mars_avril_mai_juin_juillet_août_septembre_octobre_novembre_décembre".split("_"),monthsShort:"janv._févr._mars_avr._mai_juin_juil._août_sept._oct._nov._déc.".split("_"),monthsParseExact:!0,weekdays:"dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi".split("_"),weekdaysShort:"dim._lun._mar._mer._jeu._ven._sam.".split("_"),weekdaysMin:"di_lu_ma_me_je_ve_sa".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[Aujourd’hui à] LT",nextDay:"[Demain à] LT",nextWeek:"dddd [à] LT",lastDay:"[Hier à] LT",lastWeek:"dddd [dernier à] LT",sameElse:"L"},relativeTime:{future:"dans %s",past:"il y a %s",s:"quelques secondes",ss:"%d secondes",m:"une minute",mm:"%d minutes",h:"une heure",hh:"%d heures",d:"un jour",dd:"%d jours",M:"un mois",MM:"%d mois",y:"un an",yy:"%d ans"},dayOfMonthOrdinalParse:/\d{1,2}(er|e)/,ordinal:function(t,e){switch(e){default:case"M":case"Q":case"D":case"DDD":case"d":return t+(1===t?"er":"e");case"w":case"W":return t+(1===t?"re":"e")}},week:{dow:1,doy:4}});return e}))},"0e6b":function(t,e,n){(function(t,e){e(n("c1df"))})(0,(function(t){"use strict"; -//! moment.js locale configuration -var e=t.defineLocale("en-au",{months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),monthsShort:"Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),weekdaysShort:"Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),weekdaysMin:"Su_Mo_Tu_We_Th_Fr_Sa".split("_"),longDateFormat:{LT:"h:mm A",LTS:"h:mm:ss A",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY h:mm A",LLLL:"dddd, D MMMM YYYY h:mm A"},calendar:{sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[Last] dddd [at] LT",sameElse:"L"},relativeTime:{future:"in %s",past:"%s ago",s:"a few seconds",ss:"%d seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},dayOfMonthOrdinalParse:/\d{1,2}(st|nd|rd|th)/,ordinal:function(t){var e=t%10,n=1===~~(t%100/10)?"th":1===e?"st":2===e?"nd":3===e?"rd":"th";return t+n},week:{dow:0,doy:4}});return e}))},"0e81":function(t,e,n){(function(t,e){e(n("c1df"))})(0,(function(t){"use strict"; -//! moment.js locale configuration -var e={1:"'inci",5:"'inci",8:"'inci",70:"'inci",80:"'inci",2:"'nci",7:"'nci",20:"'nci",50:"'nci",3:"'üncü",4:"'üncü",100:"'üncü",6:"'ncı",9:"'uncu",10:"'uncu",30:"'uncu",60:"'ıncı",90:"'ıncı"},n=t.defineLocale("tr",{months:"Ocak_Şubat_Mart_Nisan_Mayıs_Haziran_Temmuz_Ağustos_Eylül_Ekim_Kasım_Aralık".split("_"),monthsShort:"Oca_Şub_Mar_Nis_May_Haz_Tem_Ağu_Eyl_Eki_Kas_Ara".split("_"),weekdays:"Pazar_Pazartesi_Salı_Çarşamba_Perşembe_Cuma_Cumartesi".split("_"),weekdaysShort:"Paz_Pts_Sal_Çar_Per_Cum_Cts".split("_"),weekdaysMin:"Pz_Pt_Sa_Ça_Pe_Cu_Ct".split("_"),meridiem:function(t,e,n){return t<12?n?"öö":"ÖÖ":n?"ös":"ÖS"},meridiemParse:/öö|ÖÖ|ös|ÖS/,isPM:function(t){return"ös"===t||"ÖS"===t},longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[bugün saat] LT",nextDay:"[yarın saat] LT",nextWeek:"[gelecek] dddd [saat] LT",lastDay:"[dün] LT",lastWeek:"[geçen] dddd [saat] LT",sameElse:"L"},relativeTime:{future:"%s sonra",past:"%s önce",s:"birkaç saniye",ss:"%d saniye",m:"bir dakika",mm:"%d dakika",h:"bir saat",hh:"%d saat",d:"bir gün",dd:"%d gün",w:"bir hafta",ww:"%d hafta",M:"bir ay",MM:"%d ay",y:"bir yıl",yy:"%d yıl"},ordinal:function(t,n){switch(n){case"d":case"D":case"Do":case"DD":return t;default:if(0===t)return t+"'ıncı";var r=t%10,i=t%100-r,a=t>=100?100:null;return t+(e[r]||e[i]||e[a])}},week:{dow:1,doy:7}});return n}))},"0f14":function(t,e,n){(function(t,e){e(n("c1df"))})(0,(function(t){"use strict"; -//! moment.js locale configuration -var e=t.defineLocale("da",{months:"januar_februar_marts_april_maj_juni_juli_august_september_oktober_november_december".split("_"),monthsShort:"jan_feb_mar_apr_maj_jun_jul_aug_sep_okt_nov_dec".split("_"),weekdays:"søndag_mandag_tirsdag_onsdag_torsdag_fredag_lørdag".split("_"),weekdaysShort:"søn_man_tir_ons_tor_fre_lør".split("_"),weekdaysMin:"sø_ma_ti_on_to_fr_lø".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY HH:mm",LLLL:"dddd [d.] D. MMMM YYYY [kl.] HH:mm"},calendar:{sameDay:"[i dag kl.] LT",nextDay:"[i morgen kl.] LT",nextWeek:"på dddd [kl.] LT",lastDay:"[i går kl.] LT",lastWeek:"[i] dddd[s kl.] LT",sameElse:"L"},relativeTime:{future:"om %s",past:"%s siden",s:"få sekunder",ss:"%d sekunder",m:"et minut",mm:"%d minutter",h:"en time",hh:"%d timer",d:"en dag",dd:"%d dage",M:"en måned",MM:"%d måneder",y:"et år",yy:"%d år"},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}});return e}))},"0f38":function(t,e,n){(function(t,e){e(n("c1df"))})(0,(function(t){"use strict"; -//! moment.js locale configuration -var e=t.defineLocale("tl-ph",{months:"Enero_Pebrero_Marso_Abril_Mayo_Hunyo_Hulyo_Agosto_Setyembre_Oktubre_Nobyembre_Disyembre".split("_"),monthsShort:"Ene_Peb_Mar_Abr_May_Hun_Hul_Ago_Set_Okt_Nob_Dis".split("_"),weekdays:"Linggo_Lunes_Martes_Miyerkules_Huwebes_Biyernes_Sabado".split("_"),weekdaysShort:"Lin_Lun_Mar_Miy_Huw_Biy_Sab".split("_"),weekdaysMin:"Li_Lu_Ma_Mi_Hu_Bi_Sab".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"MM/D/YYYY",LL:"MMMM D, YYYY",LLL:"MMMM D, YYYY HH:mm",LLLL:"dddd, MMMM DD, YYYY HH:mm"},calendar:{sameDay:"LT [ngayong araw]",nextDay:"[Bukas ng] LT",nextWeek:"LT [sa susunod na] dddd",lastDay:"LT [kahapon]",lastWeek:"LT [noong nakaraang] dddd",sameElse:"L"},relativeTime:{future:"sa loob ng %s",past:"%s ang nakalipas",s:"ilang segundo",ss:"%d segundo",m:"isang minuto",mm:"%d minuto",h:"isang oras",hh:"%d oras",d:"isang araw",dd:"%d araw",M:"isang buwan",MM:"%d buwan",y:"isang taon",yy:"%d taon"},dayOfMonthOrdinalParse:/\d{1,2}/,ordinal:function(t){return t},week:{dow:1,doy:4}});return e}))},"0f65":function(t,e,n){"use strict";n.d(e,"a",(function(){return b}));var r=n("2b88"),i=n("a026"),a=n("c637"),o=n("0056"),s=n("a723"),c=n("906c"),u=n("6b77"),l=n("cf75"),d=n("686b"),f=n("602d"),h=n("8c18"),p=i["default"].extend({mixins:[h["a"]],data:function(){return{name:"b-toaster"}},methods:{onAfterEnter:function(t){var e=this;Object(c["D"])((function(){Object(c["A"])(t,"".concat(e.name,"-enter-to"))}))}},render:function(t){return t("transition-group",{props:{tag:"div",name:this.name},on:{afterEnter:this.onAfterEnter}},this.normalizeSlot())}}),m=Object(l["d"])({ariaAtomic:Object(l["c"])(s["u"]),ariaLive:Object(l["c"])(s["u"]),name:Object(l["c"])(s["u"],void 0,!0),role:Object(l["c"])(s["u"])},a["qc"]),b=i["default"].extend({name:a["qc"],mixins:[f["a"]],props:m,data:function(){return{doRender:!1,dead:!1,staticName:this.name}},beforeMount:function(){var t=this,e=this.name;this.staticName=e,r["Wormhole"].hasTarget(e)?(Object(d["a"])('A "" with name "'.concat(e,'" already exists in the document.'),a["qc"]),this.dead=!0):(this.doRender=!0,this.$once(o["eb"],(function(){t.emitOnRoot(Object(u["e"])(a["qc"],o["j"]),e)})))},destroyed:function(){var t=this.$el;t&&t.parentNode&&t.parentNode.removeChild(t)},render:function(t){var e=t("div",{class:["d-none",{"b-dead-toaster":this.dead}]});if(this.doRender){var n=t(r["PortalTarget"],{staticClass:"b-toaster-slot",props:{name:this.staticName,multiple:!0,tag:"div",slim:!1,transition:p}});e=t("div",{staticClass:"b-toaster",class:[this.staticName],attrs:{id:this.staticName,role:this.role||null,"aria-live":this.ariaLive,"aria-atomic":this.ariaAtomic}},[n])}return e}})},"0ff2":function(t,e,n){(function(t,e){e(n("c1df"))})(0,(function(t){"use strict"; -//! moment.js locale configuration -var e=t.defineLocale("eu",{months:"urtarrila_otsaila_martxoa_apirila_maiatza_ekaina_uztaila_abuztua_iraila_urria_azaroa_abendua".split("_"),monthsShort:"urt._ots._mar._api._mai._eka._uzt._abu._ira._urr._aza._abe.".split("_"),monthsParseExact:!0,weekdays:"igandea_astelehena_asteartea_asteazkena_osteguna_ostirala_larunbata".split("_"),weekdaysShort:"ig._al._ar._az._og._ol._lr.".split("_"),weekdaysMin:"ig_al_ar_az_og_ol_lr".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY-MM-DD",LL:"YYYY[ko] MMMM[ren] D[a]",LLL:"YYYY[ko] MMMM[ren] D[a] HH:mm",LLLL:"dddd, YYYY[ko] MMMM[ren] D[a] HH:mm",l:"YYYY-M-D",ll:"YYYY[ko] MMM D[a]",lll:"YYYY[ko] MMM D[a] HH:mm",llll:"ddd, YYYY[ko] MMM D[a] HH:mm"},calendar:{sameDay:"[gaur] LT[etan]",nextDay:"[bihar] LT[etan]",nextWeek:"dddd LT[etan]",lastDay:"[atzo] LT[etan]",lastWeek:"[aurreko] dddd LT[etan]",sameElse:"L"},relativeTime:{future:"%s barru",past:"duela %s",s:"segundo batzuk",ss:"%d segundo",m:"minutu bat",mm:"%d minutu",h:"ordu bat",hh:"%d ordu",d:"egun bat",dd:"%d egun",M:"hilabete bat",MM:"%d hilabete",y:"urte bat",yy:"%d urte"},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:7}});return e}))},"10e8":function(t,e,n){(function(t,e){e(n("c1df"))})(0,(function(t){"use strict"; -//! moment.js locale configuration -var e=t.defineLocale("th",{months:"มกราคม_กุมภาพันธ์_มีนาคม_เมษายน_พฤษภาคม_มิถุนายน_กรกฎาคม_สิงหาคม_กันยายน_ตุลาคม_พฤศจิกายน_ธันวาคม".split("_"),monthsShort:"ม.ค._ก.พ._มี.ค._เม.ย._พ.ค._มิ.ย._ก.ค._ส.ค._ก.ย._ต.ค._พ.ย._ธ.ค.".split("_"),monthsParseExact:!0,weekdays:"อาทิตย์_จันทร์_อังคาร_พุธ_พฤหัสบดี_ศุกร์_เสาร์".split("_"),weekdaysShort:"อาทิตย์_จันทร์_อังคาร_พุธ_พฤหัส_ศุกร์_เสาร์".split("_"),weekdaysMin:"อา._จ._อ._พ._พฤ._ศ._ส.".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY เวลา H:mm",LLLL:"วันddddที่ D MMMM YYYY เวลา H:mm"},meridiemParse:/ก่อนเที่ยง|หลังเที่ยง/,isPM:function(t){return"หลังเที่ยง"===t},meridiem:function(t,e,n){return t<12?"ก่อนเที่ยง":"หลังเที่ยง"},calendar:{sameDay:"[วันนี้ เวลา] LT",nextDay:"[พรุ่งนี้ เวลา] LT",nextWeek:"dddd[หน้า เวลา] LT",lastDay:"[เมื่อวานนี้ เวลา] LT",lastWeek:"[วัน]dddd[ที่แล้ว เวลา] LT",sameElse:"L"},relativeTime:{future:"อีก %s",past:"%sที่แล้ว",s:"ไม่กี่วินาที",ss:"%d วินาที",m:"1 นาที",mm:"%d นาที",h:"1 ชั่วโมง",hh:"%d ชั่วโมง",d:"1 วัน",dd:"%d วัน",w:"1 สัปดาห์",ww:"%d สัปดาห์",M:"1 เดือน",MM:"%d เดือน",y:"1 ปี",yy:"%d ปี"}});return e}))},"129f":function(t,e){t.exports=Object.is||function(t,e){return t===e?0!==t||1/t===1/e:t!=t&&e!=e}},1310:function(t,e){function n(t){return null!=t&&"object"==typeof t}t.exports=n},"13e9":function(t,e,n){(function(t,e){e(n("c1df"))})(0,(function(t){"use strict"; -//! moment.js locale configuration -var e={words:{ss:["секунда","секунде","секунди"],m:["један минут","једне минуте"],mm:["минут","минуте","минута"],h:["један сат","једног сата"],hh:["сат","сата","сати"],dd:["дан","дана","дана"],MM:["месец","месеца","месеци"],yy:["година","године","година"]},correctGrammaticalCase:function(t,e){return 1===t?e[0]:t>=2&&t<=4?e[1]:e[2]},translate:function(t,n,r){var i=e.words[r];return 1===r.length?n?i[0]:i[1]:t+" "+e.correctGrammaticalCase(t,i)}},n=t.defineLocale("sr-cyrl",{months:"јануар_фебруар_март_април_мај_јун_јул_август_септембар_октобар_новембар_децембар".split("_"),monthsShort:"јан._феб._мар._апр._мај_јун_јул_авг._сеп._окт._нов._дец.".split("_"),monthsParseExact:!0,weekdays:"недеља_понедељак_уторак_среда_четвртак_петак_субота".split("_"),weekdaysShort:"нед._пон._уто._сре._чет._пет._суб.".split("_"),weekdaysMin:"не_по_ут_ср_че_пе_су".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"D. M. YYYY.",LL:"D. MMMM YYYY.",LLL:"D. MMMM YYYY. H:mm",LLLL:"dddd, D. MMMM YYYY. H:mm"},calendar:{sameDay:"[данас у] LT",nextDay:"[сутра у] LT",nextWeek:function(){switch(this.day()){case 0:return"[у] [недељу] [у] LT";case 3:return"[у] [среду] [у] LT";case 6:return"[у] [суботу] [у] LT";case 1:case 2:case 4:case 5:return"[у] dddd [у] LT"}},lastDay:"[јуче у] LT",lastWeek:function(){var t=["[прошле] [недеље] [у] LT","[прошлог] [понедељка] [у] LT","[прошлог] [уторка] [у] LT","[прошле] [среде] [у] LT","[прошлог] [четвртка] [у] LT","[прошлог] [петка] [у] LT","[прошле] [суботе] [у] LT"];return t[this.day()]},sameElse:"L"},relativeTime:{future:"за %s",past:"пре %s",s:"неколико секунди",ss:e.translate,m:e.translate,mm:e.translate,h:e.translate,hh:e.translate,d:"дан",dd:e.translate,M:"месец",MM:e.translate,y:"годину",yy:e.translate},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:7}});return n}))},"14c3":function(t,e,n){var r=n("c6b6"),i=n("9263");t.exports=function(t,e){var n=t.exec;if("function"===typeof n){var a=n.call(t,e);if("object"!==typeof a)throw TypeError("RegExp exec method returned something other than an Object or null");return a}if("RegExp"!==r(t))throw TypeError("RegExp#exec called on incompatible receiver");return i.call(t,e)}},"159b":function(t,e,n){var r=n("da84"),i=n("fdbc"),a=n("17c2"),o=n("9112");for(var s in i){var c=r[s],u=c&&c.prototype;if(u&&u.forEach!==a)try{o(u,"forEach",a)}catch(l){u.forEach=a}}},"167b":function(t,e,n){(function(t,e){e(n("c1df"))})(0,(function(t){"use strict"; -//! moment.js locale configuration -var e=t.defineLocale("oc-lnc",{months:{standalone:"genièr_febrièr_març_abril_mai_junh_julhet_agost_setembre_octòbre_novembre_decembre".split("_"),format:"de genièr_de febrièr_de març_d'abril_de mai_de junh_de julhet_d'agost_de setembre_d'octòbre_de novembre_de decembre".split("_"),isFormat:/D[oD]?(\s)+MMMM/},monthsShort:"gen._febr._març_abr._mai_junh_julh._ago._set._oct._nov._dec.".split("_"),monthsParseExact:!0,weekdays:"dimenge_diluns_dimars_dimècres_dijòus_divendres_dissabte".split("_"),weekdaysShort:"dg._dl._dm._dc._dj._dv._ds.".split("_"),weekdaysMin:"dg_dl_dm_dc_dj_dv_ds".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM [de] YYYY",ll:"D MMM YYYY",LLL:"D MMMM [de] YYYY [a] H:mm",lll:"D MMM YYYY, H:mm",LLLL:"dddd D MMMM [de] YYYY [a] H:mm",llll:"ddd D MMM YYYY, H:mm"},calendar:{sameDay:"[uèi a] LT",nextDay:"[deman a] LT",nextWeek:"dddd [a] LT",lastDay:"[ièr a] LT",lastWeek:"dddd [passat a] LT",sameElse:"L"},relativeTime:{future:"d'aquí %s",past:"fa %s",s:"unas segondas",ss:"%d segondas",m:"una minuta",mm:"%d minutas",h:"una ora",hh:"%d oras",d:"un jorn",dd:"%d jorns",M:"un mes",MM:"%d meses",y:"un an",yy:"%d ans"},dayOfMonthOrdinalParse:/\d{1,2}(r|n|t|è|a)/,ordinal:function(t,e){var n=1===t?"r":2===t?"n":3===t?"r":4===t?"t":"è";return"w"!==e&&"W"!==e||(n="a"),t+n},week:{dow:1,doy:4}});return e}))},"17c2":function(t,e,n){"use strict";var r=n("b727").forEach,i=n("a640"),a=i("forEach");t.exports=a?[].forEach:function(t){return r(this,t,arguments.length>1?arguments[1]:void 0)}},"19aa":function(t,e){t.exports=function(t,e,n){if(!(t instanceof e))throw TypeError("Incorrect "+(n?n+" ":"")+"invocation");return t}},"1a8c":function(t,e){function n(t){var e=typeof t;return null!=t&&("object"==e||"function"==e)}t.exports=n},"1b45":function(t,e,n){(function(t,e){e(n("c1df"))})(0,(function(t){"use strict"; -//! moment.js locale configuration -var e=t.defineLocale("mt",{months:"Jannar_Frar_Marzu_April_Mejju_Ġunju_Lulju_Awwissu_Settembru_Ottubru_Novembru_Diċembru".split("_"),monthsShort:"Jan_Fra_Mar_Apr_Mej_Ġun_Lul_Aww_Set_Ott_Nov_Diċ".split("_"),weekdays:"Il-Ħadd_It-Tnejn_It-Tlieta_L-Erbgħa_Il-Ħamis_Il-Ġimgħa_Is-Sibt".split("_"),weekdaysShort:"Ħad_Tne_Tli_Erb_Ħam_Ġim_Sib".split("_"),weekdaysMin:"Ħa_Tn_Tl_Er_Ħa_Ġi_Si".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[Illum fil-]LT",nextDay:"[Għada fil-]LT",nextWeek:"dddd [fil-]LT",lastDay:"[Il-bieraħ fil-]LT",lastWeek:"dddd [li għadda] [fil-]LT",sameElse:"L"},relativeTime:{future:"f’ %s",past:"%s ilu",s:"ftit sekondi",ss:"%d sekondi",m:"minuta",mm:"%d minuti",h:"siegħa",hh:"%d siegħat",d:"ġurnata",dd:"%d ġranet",M:"xahar",MM:"%d xhur",y:"sena",yy:"%d sni"},dayOfMonthOrdinalParse:/\d{1,2}º/,ordinal:"%dº",week:{dow:1,doy:4}});return e}))},"1be4":function(t,e,n){var r=n("d066");t.exports=r("document","documentElement")},"1c0b":function(t,e){t.exports=function(t){if("function"!=typeof t)throw TypeError(String(t)+" is not a function");return t}},"1c7e":function(t,e,n){var r=n("b622"),i=r("iterator"),a=!1;try{var o=0,s={next:function(){return{done:!!o++}},return:function(){a=!0}};s[i]=function(){return this},Array.from(s,(function(){throw 2}))}catch(c){}t.exports=function(t,e){if(!e&&!a)return!1;var n=!1;try{var r={};r[i]=function(){return{next:function(){return{done:n=!0}}}},t(r)}catch(c){}return n}},"1cdc":function(t,e,n){var r=n("342f");t.exports=/(?:iphone|ipod|ipad).*applewebkit/i.test(r)},"1cfd":function(t,e,n){(function(t,e){e(n("c1df"))})(0,(function(t){"use strict"; -//! moment.js locale configuration -var e={1:"1",2:"2",3:"3",4:"4",5:"5",6:"6",7:"7",8:"8",9:"9",0:"0"},n=function(t){return 0===t?0:1===t?1:2===t?2:t%100>=3&&t%100<=10?3:t%100>=11?4:5},r={s:["أقل من ثانية","ثانية واحدة",["ثانيتان","ثانيتين"],"%d ثوان","%d ثانية","%d ثانية"],m:["أقل من دقيقة","دقيقة واحدة",["دقيقتان","دقيقتين"],"%d دقائق","%d دقيقة","%d دقيقة"],h:["أقل من ساعة","ساعة واحدة",["ساعتان","ساعتين"],"%d ساعات","%d ساعة","%d ساعة"],d:["أقل من يوم","يوم واحد",["يومان","يومين"],"%d أيام","%d يومًا","%d يوم"],M:["أقل من شهر","شهر واحد",["شهران","شهرين"],"%d أشهر","%d شهرا","%d شهر"],y:["أقل من عام","عام واحد",["عامان","عامين"],"%d أعوام","%d عامًا","%d عام"]},i=function(t){return function(e,i,a,o){var s=n(e),c=r[t][n(e)];return 2===s&&(c=c[i?0:1]),c.replace(/%d/i,e)}},a=["يناير","فبراير","مارس","أبريل","مايو","يونيو","يوليو","أغسطس","سبتمبر","أكتوبر","نوفمبر","ديسمبر"],o=t.defineLocale("ar-ly",{months:a,monthsShort:a,weekdays:"الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت".split("_"),weekdaysShort:"أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت".split("_"),weekdaysMin:"ح_ن_ث_ر_خ_ج_س".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"D/‏M/‏YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},meridiemParse:/ص|م/,isPM:function(t){return"م"===t},meridiem:function(t,e,n){return t<12?"ص":"م"},calendar:{sameDay:"[اليوم عند الساعة] LT",nextDay:"[غدًا عند الساعة] LT",nextWeek:"dddd [عند الساعة] LT",lastDay:"[أمس عند الساعة] LT",lastWeek:"dddd [عند الساعة] LT",sameElse:"L"},relativeTime:{future:"بعد %s",past:"منذ %s",s:i("s"),ss:i("s"),m:i("m"),mm:i("m"),h:i("h"),hh:i("h"),d:i("d"),dd:i("d"),M:i("M"),MM:i("M"),y:i("y"),yy:i("y")},preparse:function(t){return t.replace(/،/g,",")},postformat:function(t){return t.replace(/\d/g,(function(t){return e[t]})).replace(/,/g,"،")},week:{dow:6,doy:12}});return o}))},"1d2b":function(t,e,n){"use strict";t.exports=function(t,e){return function(){for(var n=new Array(arguments.length),r=0;r=51||!r((function(){var e=[],n=e.constructor={};return n[o]=function(){return{foo:1}},1!==e[t](Boolean).foo}))}},"1fc1":function(t,e,n){(function(t,e){e(n("c1df"))})(0,(function(t){"use strict"; -//! moment.js locale configuration -function e(t,e){var n=t.split("_");return e%10===1&&e%100!==11?n[0]:e%10>=2&&e%10<=4&&(e%100<10||e%100>=20)?n[1]:n[2]}function n(t,n,r){var i={ss:n?"секунда_секунды_секунд":"секунду_секунды_секунд",mm:n?"хвіліна_хвіліны_хвілін":"хвіліну_хвіліны_хвілін",hh:n?"гадзіна_гадзіны_гадзін":"гадзіну_гадзіны_гадзін",dd:"дзень_дні_дзён",MM:"месяц_месяцы_месяцаў",yy:"год_гады_гадоў"};return"m"===r?n?"хвіліна":"хвіліну":"h"===r?n?"гадзіна":"гадзіну":t+" "+e(i[r],+t)}var r=t.defineLocale("be",{months:{format:"студзеня_лютага_сакавіка_красавіка_траўня_чэрвеня_ліпеня_жніўня_верасня_кастрычніка_лістапада_снежня".split("_"),standalone:"студзень_люты_сакавік_красавік_травень_чэрвень_ліпень_жнівень_верасень_кастрычнік_лістапад_снежань".split("_")},monthsShort:"студ_лют_сак_крас_трав_чэрв_ліп_жнів_вер_каст_ліст_снеж".split("_"),weekdays:{format:"нядзелю_панядзелак_аўторак_сераду_чацвер_пятніцу_суботу".split("_"),standalone:"нядзеля_панядзелак_аўторак_серада_чацвер_пятніца_субота".split("_"),isFormat:/\[ ?[Ууў] ?(?:мінулую|наступную)? ?\] ?dddd/},weekdaysShort:"нд_пн_ат_ср_чц_пт_сб".split("_"),weekdaysMin:"нд_пн_ат_ср_чц_пт_сб".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY г.",LLL:"D MMMM YYYY г., HH:mm",LLLL:"dddd, D MMMM YYYY г., HH:mm"},calendar:{sameDay:"[Сёння ў] LT",nextDay:"[Заўтра ў] LT",lastDay:"[Учора ў] LT",nextWeek:function(){return"[У] dddd [ў] LT"},lastWeek:function(){switch(this.day()){case 0:case 3:case 5:case 6:return"[У мінулую] dddd [ў] LT";case 1:case 2:case 4:return"[У мінулы] dddd [ў] LT"}},sameElse:"L"},relativeTime:{future:"праз %s",past:"%s таму",s:"некалькі секунд",m:n,mm:n,h:n,hh:n,d:"дзень",dd:n,M:"месяц",MM:n,y:"год",yy:n},meridiemParse:/ночы|раніцы|дня|вечара/,isPM:function(t){return/^(дня|вечара)$/.test(t)},meridiem:function(t,e,n){return t<4?"ночы":t<12?"раніцы":t<17?"дня":"вечара"},dayOfMonthOrdinalParse:/\d{1,2}-(і|ы|га)/,ordinal:function(t,e){switch(e){case"M":case"d":case"DDD":case"w":case"W":return t%10!==2&&t%10!==3||t%100===12||t%100===13?t+"-ы":t+"-і";case"D":return t+"-га";default:return t}},week:{dow:1,doy:7}});return r}))},"201b":function(t,e,n){(function(t,e){e(n("c1df"))})(0,(function(t){"use strict"; -//! moment.js locale configuration -var e=t.defineLocale("ka",{months:"იანვარი_თებერვალი_მარტი_აპრილი_მაისი_ივნისი_ივლისი_აგვისტო_სექტემბერი_ოქტომბერი_ნოემბერი_დეკემბერი".split("_"),monthsShort:"იან_თებ_მარ_აპრ_მაი_ივნ_ივლ_აგვ_სექ_ოქტ_ნოე_დეკ".split("_"),weekdays:{standalone:"კვირა_ორშაბათი_სამშაბათი_ოთხშაბათი_ხუთშაბათი_პარასკევი_შაბათი".split("_"),format:"კვირას_ორშაბათს_სამშაბათს_ოთხშაბათს_ხუთშაბათს_პარასკევს_შაბათს".split("_"),isFormat:/(წინა|შემდეგ)/},weekdaysShort:"კვი_ორშ_სამ_ოთხ_ხუთ_პარ_შაბ".split("_"),weekdaysMin:"კვ_ორ_სა_ოთ_ხუ_პა_შა".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[დღეს] LT[-ზე]",nextDay:"[ხვალ] LT[-ზე]",lastDay:"[გუშინ] LT[-ზე]",nextWeek:"[შემდეგ] dddd LT[-ზე]",lastWeek:"[წინა] dddd LT-ზე",sameElse:"L"},relativeTime:{future:function(t){return t.replace(/(წამ|წუთ|საათ|წელ|დღ|თვ)(ი|ე)/,(function(t,e,n){return"ი"===n?e+"ში":e+n+"ში"}))},past:function(t){return/(წამი|წუთი|საათი|დღე|თვე)/.test(t)?t.replace(/(ი|ე)$/,"ის წინ"):/წელი/.test(t)?t.replace(/წელი$/,"წლის წინ"):t},s:"რამდენიმე წამი",ss:"%d წამი",m:"წუთი",mm:"%d წუთი",h:"საათი",hh:"%d საათი",d:"დღე",dd:"%d დღე",M:"თვე",MM:"%d თვე",y:"წელი",yy:"%d წელი"},dayOfMonthOrdinalParse:/0|1-ლი|მე-\d{1,2}|\d{1,2}-ე/,ordinal:function(t){return 0===t?t:1===t?t+"-ლი":t<20||t<=100&&t%20===0||t%100===0?"მე-"+t:t+"-ე"},week:{dow:1,doy:7}});return e}))},2266:function(t,e,n){var r=n("825a"),i=n("e95a"),a=n("50c4"),o=n("0366"),s=n("35a1"),c=n("2a62"),u=function(t,e){this.stopped=t,this.result=e};t.exports=function(t,e,n){var l,d,f,h,p,m,b,v=n&&n.that,_=!(!n||!n.AS_ENTRIES),g=!(!n||!n.IS_ITERATOR),y=!(!n||!n.INTERRUPTED),O=o(e,v,1+_+y),j=function(t){return l&&c(l),new u(!0,t)},w=function(t){return _?(r(t),y?O(t[0],t[1],j):O(t[0],t[1])):y?O(t,j):O(t)};if(g)l=t;else{if(d=s(t),"function"!=typeof d)throw TypeError("Target is not iterable");if(i(d)){for(f=0,h=a(t.length);h>f;f++)if(p=w(t[f]),p&&p instanceof u)return p;return new u(!1)}l=d.call(t)}m=l.next;while(!(b=m.call(l)).done){try{p=w(b.value)}catch(M){throw c(l),M}if("object"==typeof p&&p&&p instanceof u)return p}return new u(!1)}},"228e":function(t,e,n){"use strict";n.d(e,"c",(function(){return u})),n.d(e,"a",(function(){return l})),n.d(e,"b",(function(){return h}));var r=n("a026"),i=n("50d3"),a=n("c9a9"),o=n("b508"),s=r["default"].prototype,c=function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:void 0,n=s[i["c"]];return n?n.getConfigValue(t,e):Object(a["a"])(e)},u=function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null,n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:void 0;return e?c("".concat(t,".").concat(e),n):c(t,{})},l=function(){return c("breakpoints",i["a"])},d=Object(o["a"])((function(){return l()})),f=function(){return Object(a["a"])(d())},h=Object(o["a"])((function(){var t=f();return t[0]="",t}))},"22f8":function(t,e,n){(function(t,e){e(n("c1df"))})(0,(function(t){"use strict"; -//! moment.js locale configuration -var e=t.defineLocale("ko",{months:"1월_2월_3월_4월_5월_6월_7월_8월_9월_10월_11월_12월".split("_"),monthsShort:"1월_2월_3월_4월_5월_6월_7월_8월_9월_10월_11월_12월".split("_"),weekdays:"일요일_월요일_화요일_수요일_목요일_금요일_토요일".split("_"),weekdaysShort:"일_월_화_수_목_금_토".split("_"),weekdaysMin:"일_월_화_수_목_금_토".split("_"),longDateFormat:{LT:"A h:mm",LTS:"A h:mm:ss",L:"YYYY.MM.DD.",LL:"YYYY년 MMMM D일",LLL:"YYYY년 MMMM D일 A h:mm",LLLL:"YYYY년 MMMM D일 dddd A h:mm",l:"YYYY.MM.DD.",ll:"YYYY년 MMMM D일",lll:"YYYY년 MMMM D일 A h:mm",llll:"YYYY년 MMMM D일 dddd A h:mm"},calendar:{sameDay:"오늘 LT",nextDay:"내일 LT",nextWeek:"dddd LT",lastDay:"어제 LT",lastWeek:"지난주 dddd LT",sameElse:"L"},relativeTime:{future:"%s 후",past:"%s 전",s:"몇 초",ss:"%d초",m:"1분",mm:"%d분",h:"한 시간",hh:"%d시간",d:"하루",dd:"%d일",M:"한 달",MM:"%d달",y:"일 년",yy:"%d년"},dayOfMonthOrdinalParse:/\d{1,2}(일|월|주)/,ordinal:function(t,e){switch(e){case"d":case"D":case"DDD":return t+"일";case"M":return t+"월";case"w":case"W":return t+"주";default:return t}},meridiemParse:/오전|오후/,isPM:function(t){return"오후"===t},meridiem:function(t,e,n){return t<12?"오전":"오후"}});return e}))},2326:function(t,e,n){"use strict";n.d(e,"f",(function(){return i})),n.d(e,"a",(function(){return a})),n.d(e,"b",(function(){return o})),n.d(e,"c",(function(){return s})),n.d(e,"d",(function(){return c})),n.d(e,"e",(function(){return u}));var r=n("7b1e"),i=function(){return Array.from.apply(Array,arguments)},a=function(t,e){return-1!==t.indexOf(e)},o=function(){for(var t=arguments.length,e=new Array(t),n=0;n=200&&t<300},headers:{common:{Accept:"application/json, text/plain, */*"}}};r.forEach(["delete","get","head"],(function(t){c.headers[t]={}})),r.forEach(["post","put","patch"],(function(t){c.headers[t]=r.merge(a)})),t.exports=c}).call(this,n("4362"))},2532:function(t,e,n){"use strict";var r=n("23e7"),i=n("5a34"),a=n("1d80"),o=n("ab13");r({target:"String",proto:!0,forced:!o("includes")},{includes:function(t){return!!~String(a(this)).indexOf(i(t),arguments.length>1?arguments[1]:void 0)}})},2554:function(t,e,n){(function(t,e){e(n("c1df"))})(0,(function(t){"use strict"; -//! moment.js locale configuration -function e(t,e,n){var r=t+" ";switch(n){case"ss":return r+=1===t?"sekunda":2===t||3===t||4===t?"sekunde":"sekundi",r;case"m":return e?"jedna minuta":"jedne minute";case"mm":return r+=1===t?"minuta":2===t||3===t||4===t?"minute":"minuta",r;case"h":return e?"jedan sat":"jednog sata";case"hh":return r+=1===t?"sat":2===t||3===t||4===t?"sata":"sati",r;case"dd":return r+=1===t?"dan":"dana",r;case"MM":return r+=1===t?"mjesec":2===t||3===t||4===t?"mjeseca":"mjeseci",r;case"yy":return r+=1===t?"godina":2===t||3===t||4===t?"godine":"godina",r}}var n=t.defineLocale("bs",{months:"januar_februar_mart_april_maj_juni_juli_august_septembar_oktobar_novembar_decembar".split("_"),monthsShort:"jan._feb._mar._apr._maj._jun._jul._aug._sep._okt._nov._dec.".split("_"),monthsParseExact:!0,weekdays:"nedjelja_ponedjeljak_utorak_srijeda_četvrtak_petak_subota".split("_"),weekdaysShort:"ned._pon._uto._sri._čet._pet._sub.".split("_"),weekdaysMin:"ne_po_ut_sr_če_pe_su".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY H:mm",LLLL:"dddd, D. MMMM YYYY H:mm"},calendar:{sameDay:"[danas u] LT",nextDay:"[sutra u] LT",nextWeek:function(){switch(this.day()){case 0:return"[u] [nedjelju] [u] LT";case 3:return"[u] [srijedu] [u] LT";case 6:return"[u] [subotu] [u] LT";case 1:case 2:case 4:case 5:return"[u] dddd [u] LT"}},lastDay:"[jučer u] LT",lastWeek:function(){switch(this.day()){case 0:case 3:return"[prošlu] dddd [u] LT";case 6:return"[prošle] [subote] [u] LT";case 1:case 2:case 4:case 5:return"[prošli] dddd [u] LT"}},sameElse:"L"},relativeTime:{future:"za %s",past:"prije %s",s:"par sekundi",ss:e,m:e,mm:e,h:e,hh:e,d:"dan",dd:e,M:"mjesec",MM:e,y:"godinu",yy:e},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:7}});return n}))},"25f0":function(t,e,n){"use strict";var r=n("6eeb"),i=n("825a"),a=n("d039"),o=n("ad6d"),s="toString",c=RegExp.prototype,u=c[s],l=a((function(){return"/a/b"!=u.call({source:"a",flags:"b"})})),d=u.name!=s;(l||d)&&r(RegExp.prototype,s,(function(){var t=i(this),e=String(t.source),n=t.flags,r=String(void 0===n&&t instanceof RegExp&&!("flags"in c)?o.call(t):n);return"/"+e+"/"+r}),{unsafe:!0})},2626:function(t,e,n){"use strict";var r=n("d066"),i=n("9bf2"),a=n("b622"),o=n("83ab"),s=a("species");t.exports=function(t){var e=r(t),n=i.f;o&&e&&!e[s]&&n(e,s,{configurable:!0,get:function(){return this}})}},"26f9":function(t,e,n){(function(t,e){e(n("c1df"))})(0,(function(t){"use strict"; -//! moment.js locale configuration -var e={ss:"sekundė_sekundžių_sekundes",m:"minutė_minutės_minutę",mm:"minutės_minučių_minutes",h:"valanda_valandos_valandą",hh:"valandos_valandų_valandas",d:"diena_dienos_dieną",dd:"dienos_dienų_dienas",M:"mėnuo_mėnesio_mėnesį",MM:"mėnesiai_mėnesių_mėnesius",y:"metai_metų_metus",yy:"metai_metų_metus"};function n(t,e,n,r){return e?"kelios sekundės":r?"kelių sekundžių":"kelias sekundes"}function r(t,e,n,r){return e?a(n)[0]:r?a(n)[1]:a(n)[2]}function i(t){return t%10===0||t>10&&t<20}function a(t){return e[t].split("_")}function o(t,e,n,o){var s=t+" ";return 1===t?s+r(t,e,n[0],o):e?s+(i(t)?a(n)[1]:a(n)[0]):o?s+a(n)[1]:s+(i(t)?a(n)[1]:a(n)[2])}var s=t.defineLocale("lt",{months:{format:"sausio_vasario_kovo_balandžio_gegužės_birželio_liepos_rugpjūčio_rugsėjo_spalio_lapkričio_gruodžio".split("_"),standalone:"sausis_vasaris_kovas_balandis_gegužė_birželis_liepa_rugpjūtis_rugsėjis_spalis_lapkritis_gruodis".split("_"),isFormat:/D[oD]?(\[[^\[\]]*\]|\s)+MMMM?|MMMM?(\[[^\[\]]*\]|\s)+D[oD]?/},monthsShort:"sau_vas_kov_bal_geg_bir_lie_rgp_rgs_spa_lap_grd".split("_"),weekdays:{format:"sekmadienį_pirmadienį_antradienį_trečiadienį_ketvirtadienį_penktadienį_šeštadienį".split("_"),standalone:"sekmadienis_pirmadienis_antradienis_trečiadienis_ketvirtadienis_penktadienis_šeštadienis".split("_"),isFormat:/dddd HH:mm/},weekdaysShort:"Sek_Pir_Ant_Tre_Ket_Pen_Šeš".split("_"),weekdaysMin:"S_P_A_T_K_Pn_Š".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY-MM-DD",LL:"YYYY [m.] MMMM D [d.]",LLL:"YYYY [m.] MMMM D [d.], HH:mm [val.]",LLLL:"YYYY [m.] MMMM D [d.], dddd, HH:mm [val.]",l:"YYYY-MM-DD",ll:"YYYY [m.] MMMM D [d.]",lll:"YYYY [m.] MMMM D [d.], HH:mm [val.]",llll:"YYYY [m.] MMMM D [d.], ddd, HH:mm [val.]"},calendar:{sameDay:"[Šiandien] LT",nextDay:"[Rytoj] LT",nextWeek:"dddd LT",lastDay:"[Vakar] LT",lastWeek:"[Praėjusį] dddd LT",sameElse:"L"},relativeTime:{future:"po %s",past:"prieš %s",s:n,ss:o,m:r,mm:o,h:r,hh:o,d:r,dd:o,M:r,MM:o,y:r,yy:o},dayOfMonthOrdinalParse:/\d{1,2}-oji/,ordinal:function(t){return t+"-oji"},week:{dow:1,doy:4}});return s}))},2877:function(t,e,n){"use strict";function r(t,e,n,r,i,a,o,s){var c,u="function"===typeof t?t.options:t;if(e&&(u.render=e,u.staticRenderFns=n,u._compiled=!0),r&&(u.functional=!0),a&&(u._scopeId="data-v-"+a),o?(c=function(t){t=t||this.$vnode&&this.$vnode.ssrContext||this.parent&&this.parent.$vnode&&this.parent.$vnode.ssrContext,t||"undefined"===typeof __VUE_SSR_CONTEXT__||(t=__VUE_SSR_CONTEXT__),i&&i.call(this,t),t&&t._registeredComponents&&t._registeredComponents.add(o)},u._ssrRegister=c):i&&(c=s?function(){i.call(this,(u.functional?this.parent:this).$root.$options.shadowRoot)}:i),c)if(u.functional){u._injectStyles=c;var l=u.render;u.render=function(t,e){return c.call(e),l(t,e)}}else{var d=u.beforeCreate;u.beforeCreate=d?[].concat(d,c):[c]}return{exports:t,options:u}}n.d(e,"a",(function(){return r}))},2921:function(t,e,n){(function(t,e){e(n("c1df"))})(0,(function(t){"use strict"; -//! moment.js locale configuration -var e=t.defineLocale("vi",{months:"tháng 1_tháng 2_tháng 3_tháng 4_tháng 5_tháng 6_tháng 7_tháng 8_tháng 9_tháng 10_tháng 11_tháng 12".split("_"),monthsShort:"Thg 01_Thg 02_Thg 03_Thg 04_Thg 05_Thg 06_Thg 07_Thg 08_Thg 09_Thg 10_Thg 11_Thg 12".split("_"),monthsParseExact:!0,weekdays:"chủ nhật_thứ hai_thứ ba_thứ tư_thứ năm_thứ sáu_thứ bảy".split("_"),weekdaysShort:"CN_T2_T3_T4_T5_T6_T7".split("_"),weekdaysMin:"CN_T2_T3_T4_T5_T6_T7".split("_"),weekdaysParseExact:!0,meridiemParse:/sa|ch/i,isPM:function(t){return/^ch$/i.test(t)},meridiem:function(t,e,n){return t<12?n?"sa":"SA":n?"ch":"CH"},longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM [năm] YYYY",LLL:"D MMMM [năm] YYYY HH:mm",LLLL:"dddd, D MMMM [năm] YYYY HH:mm",l:"DD/M/YYYY",ll:"D MMM YYYY",lll:"D MMM YYYY HH:mm",llll:"ddd, D MMM YYYY HH:mm"},calendar:{sameDay:"[Hôm nay lúc] LT",nextDay:"[Ngày mai lúc] LT",nextWeek:"dddd [tuần tới lúc] LT",lastDay:"[Hôm qua lúc] LT",lastWeek:"dddd [tuần trước lúc] LT",sameElse:"L"},relativeTime:{future:"%s tới",past:"%s trước",s:"vài giây",ss:"%d giây",m:"một phút",mm:"%d phút",h:"một giờ",hh:"%d giờ",d:"một ngày",dd:"%d ngày",w:"một tuần",ww:"%d tuần",M:"một tháng",MM:"%d tháng",y:"một năm",yy:"%d năm"},dayOfMonthOrdinalParse:/\d{1,2}/,ordinal:function(t){return t},week:{dow:1,doy:4}});return e}))},"293c":function(t,e,n){(function(t,e){e(n("c1df"))})(0,(function(t){"use strict"; -//! moment.js locale configuration -var e={words:{ss:["sekund","sekunda","sekundi"],m:["jedan minut","jednog minuta"],mm:["minut","minuta","minuta"],h:["jedan sat","jednog sata"],hh:["sat","sata","sati"],dd:["dan","dana","dana"],MM:["mjesec","mjeseca","mjeseci"],yy:["godina","godine","godina"]},correctGrammaticalCase:function(t,e){return 1===t?e[0]:t>=2&&t<=4?e[1]:e[2]},translate:function(t,n,r){var i=e.words[r];return 1===r.length?n?i[0]:i[1]:t+" "+e.correctGrammaticalCase(t,i)}},n=t.defineLocale("me",{months:"januar_februar_mart_april_maj_jun_jul_avgust_septembar_oktobar_novembar_decembar".split("_"),monthsShort:"jan._feb._mar._apr._maj_jun_jul_avg._sep._okt._nov._dec.".split("_"),monthsParseExact:!0,weekdays:"nedjelja_ponedjeljak_utorak_srijeda_četvrtak_petak_subota".split("_"),weekdaysShort:"ned._pon._uto._sri._čet._pet._sub.".split("_"),weekdaysMin:"ne_po_ut_sr_če_pe_su".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY H:mm",LLLL:"dddd, D. MMMM YYYY H:mm"},calendar:{sameDay:"[danas u] LT",nextDay:"[sjutra u] LT",nextWeek:function(){switch(this.day()){case 0:return"[u] [nedjelju] [u] LT";case 3:return"[u] [srijedu] [u] LT";case 6:return"[u] [subotu] [u] LT";case 1:case 2:case 4:case 5:return"[u] dddd [u] LT"}},lastDay:"[juče u] LT",lastWeek:function(){var t=["[prošle] [nedjelje] [u] LT","[prošlog] [ponedjeljka] [u] LT","[prošlog] [utorka] [u] LT","[prošle] [srijede] [u] LT","[prošlog] [četvrtka] [u] LT","[prošlog] [petka] [u] LT","[prošle] [subote] [u] LT"];return t[this.day()]},sameElse:"L"},relativeTime:{future:"za %s",past:"prije %s",s:"nekoliko sekundi",ss:e.translate,m:e.translate,mm:e.translate,h:e.translate,hh:e.translate,d:"dan",dd:e.translate,M:"mjesec",MM:e.translate,y:"godinu",yy:e.translate},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:7}});return n}))},"29f3":function(t,e){var n=Object.prototype,r=n.toString;function i(t){return r.call(t)}t.exports=i},"2a62":function(t,e,n){var r=n("825a");t.exports=function(t){var e=t["return"];if(void 0!==e)return r(e.call(t)).value}},"2b27":function(t,e,n){(function(){var e={expires:"1d",path:"; path=/",domain:"",secure:"",sameSite:"; SameSite=Lax"},n={install:function(t){t.prototype.$cookies=this,t.$cookies=this},config:function(t,n,r,i,a){e.expires=t||"1d",e.path=n?"; path="+n:"; path=/",e.domain=r?"; domain="+r:"",e.secure=i?"; Secure":"",e.sameSite=a?"; SameSite="+a:"; SameSite=Lax"},get:function(t){var e=decodeURIComponent(document.cookie.replace(new RegExp("(?:(?:^|.*;)\\s*"+encodeURIComponent(t).replace(/[\-\.\+\*]/g,"\\$&")+"\\s*\\=\\s*([^;]*).*$)|^.*$"),"$1"))||null;if(e&&"{"===e.substring(0,1)&&"}"===e.substring(e.length-1,e.length))try{e=JSON.parse(e)}catch(n){return e}return e},set:function(t,n,r,i,a,o,s){if(!t)throw new Error("Cookie name is not find in first argument.");if(/^(?:expires|max\-age|path|domain|secure|SameSite)$/i.test(t))throw new Error('Cookie key name illegality, Cannot be set to ["expires","max-age","path","domain","secure","SameSite"]\t current key name: '+t);n&&n.constructor===Object&&(n=JSON.stringify(n));var c="";if(r=void 0==r?e.expires:r,r&&0!=r)switch(r.constructor){case Number:c=r===1/0||-1===r?"; expires=Fri, 31 Dec 9999 23:59:59 GMT":"; max-age="+r;break;case String:if(/^(?:\d+(y|m|d|h|min|s))$/i.test(r)){var u=r.replace(/^(\d+)(?:y|m|d|h|min|s)$/i,"$1");switch(r.replace(/^(?:\d+)(y|m|d|h|min|s)$/i,"$1").toLowerCase()){case"m":c="; max-age="+2592e3*+u;break;case"d":c="; max-age="+86400*+u;break;case"h":c="; max-age="+3600*+u;break;case"min":c="; max-age="+60*+u;break;case"s":c="; max-age="+u;break;case"y":c="; max-age="+31104e3*+u;break;default:new Error('unknown exception of "set operation"')}}else c="; expires="+r;break;case Date:c="; expires="+r.toUTCString();break}return document.cookie=encodeURIComponent(t)+"="+encodeURIComponent(n)+c+(a?"; domain="+a:e.domain)+(i?"; path="+i:e.path)+(void 0==o?e.secure:o?"; Secure":"")+(void 0==s?e.sameSite:s?"; SameSite="+s:""),this},remove:function(t,n,r){return!(!t||!this.isKey(t))&&(document.cookie=encodeURIComponent(t)+"=; expires=Thu, 01 Jan 1970 00:00:00 GMT"+(r?"; domain="+r:e.domain)+(n?"; path="+n:e.path)+"; SameSite=Lax",this)},isKey:function(t){return new RegExp("(?:^|;\\s*)"+encodeURIComponent(t).replace(/[\-\.\+\*]/g,"\\$&")+"\\s*\\=").test(document.cookie)},keys:function(){if(!document.cookie)return[];for(var t=document.cookie.replace(/((?:^|\s*;)[^\=]+)(?=;|$)|^\s*|\s*(?:\=[^;]*)?(?:\1|$)/g,"").split(/\s*(?:\=[^;]*)?;\s*/),e=0;e4)return t;for(n=[],r=0;r1&&"0"==i.charAt(0)&&(a=C.test(i)?16:8,i=i.slice(8==a?1:2)),""===i)o=0;else{if(!(10==a?H:8==a?E:A).test(i))return t;o=parseInt(i,a)}n.push(o)}for(r=0;r=L(256,5-e))return null}else if(o>255)return null;for(s=n.pop(),r=0;r6)return;r=0;while(f()){if(i=null,r>0){if(!("."==f()&&r<4))return;d++}if(!P.test(f()))return;while(P.test(f())){if(a=parseInt(f(),10),null===i)i=a;else{if(0==i)return;i=10*i+a}if(i>255)return;d++}c[u]=256*c[u]+i,r++,2!=r&&4!=r||u++}if(4!=r)return;break}if(":"==f()){if(d++,!f())return}else if(f())return;c[u++]=e}else{if(null!==l)return;d++,u++,l=u}}if(null!==l){o=u-l,u=7;while(0!=u&&o>0)s=c[u],c[u--]=c[l+o-1],c[l+--o]=s}else if(8!=u)return;return c},z=function(t){for(var e=null,n=1,r=null,i=0,a=0;a<8;a++)0!==t[a]?(i>n&&(e=r,n=i),r=null,i=0):(null===r&&(r=a),++i);return i>n&&(e=r,n=i),e},W=function(t){var e,n,r,i;if("number"==typeof t){for(e=[],n=0;n<4;n++)e.unshift(t%256),t=M(t/256);return e.join(".")}if("object"==typeof t){for(e="",r=z(t),n=0;n<8;n++)i&&0===t[n]||(i&&(i=!1),r===n?(e+=n?":":"::",i=!0):(e+=t[n].toString(16),n<7&&(e+=":")));return"["+e+"]"}return t},U={},G=f({},U,{" ":1,'"':1,"<":1,">":1,"`":1}),J=f({},G,{"#":1,"?":1,"{":1,"}":1}),q=f({},J,{"/":1,":":1,";":1,"=":1,"@":1,"[":1,"\\":1,"]":1,"^":1,"|":1}),K=function(t,e){var n=p(t,0);return n>32&&n<127&&!d(e,t)?t:encodeURIComponent(t)},X={ftp:21,file:null,http:80,https:443,ws:80,wss:443},Z=function(t){return d(X,t.scheme)},Q=function(t){return""!=t.username||""!=t.password},tt=function(t){return!t.host||t.cannotBeABaseURL||"file"==t.scheme},et=function(t,e){var n;return 2==t.length&&Y.test(t.charAt(0))&&(":"==(n=t.charAt(1))||!e&&"|"==n)},nt=function(t){var e;return t.length>1&&et(t.slice(0,2))&&(2==t.length||"/"===(e=t.charAt(2))||"\\"===e||"?"===e||"#"===e)},rt=function(t){var e=t.path,n=e.length;!n||"file"==t.scheme&&1==n&&et(e[0],!0)||e.pop()},it=function(t){return"."===t||"%2e"===t.toLowerCase()},at=function(t){return t=t.toLowerCase(),".."===t||"%2e."===t||".%2e"===t||"%2e%2e"===t},ot={},st={},ct={},ut={},lt={},dt={},ft={},ht={},pt={},mt={},bt={},vt={},_t={},gt={},yt={},Ot={},jt={},wt={},Mt={},Lt={},kt={},Tt=function(t,e,n,i){var a,o,s,c,u=n||ot,l=0,f="",p=!1,m=!1,b=!1;n||(t.scheme="",t.username="",t.password="",t.host=null,t.port=null,t.path=[],t.query=null,t.fragment=null,t.cannotBeABaseURL=!1,e=e.replace(I,"")),e=e.replace(B,""),a=h(e);while(l<=a.length){switch(o=a[l],u){case ot:if(!o||!Y.test(o)){if(n)return T;u=ct;continue}f+=o.toLowerCase(),u=st;break;case st:if(o&&(x.test(o)||"+"==o||"-"==o||"."==o))f+=o.toLowerCase();else{if(":"!=o){if(n)return T;f="",u=ct,l=0;continue}if(n&&(Z(t)!=d(X,f)||"file"==f&&(Q(t)||null!==t.port)||"file"==t.scheme&&!t.host))return;if(t.scheme=f,n)return void(Z(t)&&X[t.scheme]==t.port&&(t.port=null));f="","file"==t.scheme?u=gt:Z(t)&&i&&i.scheme==t.scheme?u=ut:Z(t)?u=ht:"/"==a[l+1]?(u=lt,l++):(t.cannotBeABaseURL=!0,t.path.push(""),u=Mt)}break;case ct:if(!i||i.cannotBeABaseURL&&"#"!=o)return T;if(i.cannotBeABaseURL&&"#"==o){t.scheme=i.scheme,t.path=i.path.slice(),t.query=i.query,t.fragment="",t.cannotBeABaseURL=!0,u=kt;break}u="file"==i.scheme?gt:dt;continue;case ut:if("/"!=o||"/"!=a[l+1]){u=dt;continue}u=pt,l++;break;case lt:if("/"==o){u=mt;break}u=wt;continue;case dt:if(t.scheme=i.scheme,o==r)t.username=i.username,t.password=i.password,t.host=i.host,t.port=i.port,t.path=i.path.slice(),t.query=i.query;else if("/"==o||"\\"==o&&Z(t))u=ft;else if("?"==o)t.username=i.username,t.password=i.password,t.host=i.host,t.port=i.port,t.path=i.path.slice(),t.query="",u=Lt;else{if("#"!=o){t.username=i.username,t.password=i.password,t.host=i.host,t.port=i.port,t.path=i.path.slice(),t.path.pop(),u=wt;continue}t.username=i.username,t.password=i.password,t.host=i.host,t.port=i.port,t.path=i.path.slice(),t.query=i.query,t.fragment="",u=kt}break;case ft:if(!Z(t)||"/"!=o&&"\\"!=o){if("/"!=o){t.username=i.username,t.password=i.password,t.host=i.host,t.port=i.port,u=wt;continue}u=mt}else u=pt;break;case ht:if(u=pt,"/"!=o||"/"!=f.charAt(l+1))continue;l++;break;case pt:if("/"!=o&&"\\"!=o){u=mt;continue}break;case mt:if("@"==o){p&&(f="%40"+f),p=!0,s=h(f);for(var v=0;v65535)return S;t.port=Z(t)&&y===X[t.scheme]?null:y,f=""}if(n)return;u=jt;continue}return S}f+=o;break;case gt:if(t.scheme="file","/"==o||"\\"==o)u=yt;else{if(!i||"file"!=i.scheme){u=wt;continue}if(o==r)t.host=i.host,t.path=i.path.slice(),t.query=i.query;else if("?"==o)t.host=i.host,t.path=i.path.slice(),t.query="",u=Lt;else{if("#"!=o){nt(a.slice(l).join(""))||(t.host=i.host,t.path=i.path.slice(),rt(t)),u=wt;continue}t.host=i.host,t.path=i.path.slice(),t.query=i.query,t.fragment="",u=kt}}break;case yt:if("/"==o||"\\"==o){u=Ot;break}i&&"file"==i.scheme&&!nt(a.slice(l).join(""))&&(et(i.path[0],!0)?t.path.push(i.path[0]):t.host=i.host),u=wt;continue;case Ot:if(o==r||"/"==o||"\\"==o||"?"==o||"#"==o){if(!n&&et(f))u=wt;else if(""==f){if(t.host="",n)return;u=jt}else{if(c=R(t,f),c)return c;if("localhost"==t.host&&(t.host=""),n)return;f="",u=jt}continue}f+=o;break;case jt:if(Z(t)){if(u=wt,"/"!=o&&"\\"!=o)continue}else if(n||"?"!=o)if(n||"#"!=o){if(o!=r&&(u=wt,"/"!=o))continue}else t.fragment="",u=kt;else t.query="",u=Lt;break;case wt:if(o==r||"/"==o||"\\"==o&&Z(t)||!n&&("?"==o||"#"==o)){if(at(f)?(rt(t),"/"==o||"\\"==o&&Z(t)||t.path.push("")):it(f)?"/"==o||"\\"==o&&Z(t)||t.path.push(""):("file"==t.scheme&&!t.path.length&&et(f)&&(t.host&&(t.host=""),f=f.charAt(0)+":"),t.path.push(f)),f="","file"==t.scheme&&(o==r||"?"==o||"#"==o))while(t.path.length>1&&""===t.path[0])t.path.shift();"?"==o?(t.query="",u=Lt):"#"==o&&(t.fragment="",u=kt)}else f+=K(o,J);break;case Mt:"?"==o?(t.query="",u=Lt):"#"==o?(t.fragment="",u=kt):o!=r&&(t.path[0]+=K(o,U));break;case Lt:n||"#"!=o?o!=r&&("'"==o&&Z(t)?t.query+="%27":t.query+="#"==o?"%23":K(o,U)):(t.fragment="",u=kt);break;case kt:o!=r&&(t.fragment+=K(o,G));break}l++}},Dt=function(t){var e,n,r=l(this,Dt,"URL"),i=arguments.length>1?arguments[1]:void 0,o=String(t),s=j(r,{type:"URL"});if(void 0!==i)if(i instanceof Dt)e=w(i);else if(n=Tt(e={},String(i)),n)throw TypeError(n);if(n=Tt(s,o,null,e),n)throw TypeError(n);var c=s.searchParams=new y,u=O(c);u.updateSearchParams(s.query),u.updateURL=function(){s.query=String(c)||null},a||(r.href=Yt.call(r),r.origin=xt.call(r),r.protocol=Pt.call(r),r.username=Ct.call(r),r.password=Et.call(r),r.host=Ht.call(r),r.hostname=At.call(r),r.port=$t.call(r),r.pathname=Ft.call(r),r.search=It.call(r),r.searchParams=Bt.call(r),r.hash=Rt.call(r))},St=Dt.prototype,Yt=function(){var t=w(this),e=t.scheme,n=t.username,r=t.password,i=t.host,a=t.port,o=t.path,s=t.query,c=t.fragment,u=e+":";return null!==i?(u+="//",Q(t)&&(u+=n+(r?":"+r:"")+"@"),u+=W(i),null!==a&&(u+=":"+a)):"file"==e&&(u+="//"),u+=t.cannotBeABaseURL?o[0]:o.length?"/"+o.join("/"):"",null!==s&&(u+="?"+s),null!==c&&(u+="#"+c),u},xt=function(){var t=w(this),e=t.scheme,n=t.port;if("blob"==e)try{return new Dt(e.path[0]).origin}catch(r){return"null"}return"file"!=e&&Z(t)?e+"://"+W(t.host)+(null!==n?":"+n:""):"null"},Pt=function(){return w(this).scheme+":"},Ct=function(){return w(this).username},Et=function(){return w(this).password},Ht=function(){var t=w(this),e=t.host,n=t.port;return null===e?"":null===n?W(e):W(e)+":"+n},At=function(){var t=w(this).host;return null===t?"":W(t)},$t=function(){var t=w(this).port;return null===t?"":String(t)},Ft=function(){var t=w(this),e=t.path;return t.cannotBeABaseURL?e[0]:e.length?"/"+e.join("/"):""},It=function(){var t=w(this).query;return t?"?"+t:""},Bt=function(){return w(this).searchParams},Rt=function(){var t=w(this).fragment;return t?"#"+t:""},Nt=function(t,e){return{get:t,set:e,configurable:!0,enumerable:!0}};if(a&&c(St,{href:Nt(Yt,(function(t){var e=w(this),n=String(t),r=Tt(e,n);if(r)throw TypeError(r);O(e.searchParams).updateSearchParams(e.query)})),origin:Nt(xt),protocol:Nt(Pt,(function(t){var e=w(this);Tt(e,String(t)+":",ot)})),username:Nt(Ct,(function(t){var e=w(this),n=h(String(t));if(!tt(e)){e.username="";for(var r=0;r1&&void 0!==arguments[1]?arguments[1]:{};return t.reduce((function(t,n){var r=n.passengers[0],i="function"===typeof r?r(e):n.passengers;return t.concat(i)}),[])}function h(t,e){return t.map((function(t,e){return[e,t]})).sort((function(t,n){return e(t[1],n[1])||t[0]-n[0]})).map((function(t){return t[1]}))}function p(t,e){return e.reduce((function(e,n){return t.hasOwnProperty(n)&&(e[n]=t[n]),e}),{})}var m={},b={},v={},_=i.extend({data:function(){return{transports:m,targets:b,sources:v,trackInstances:l}},methods:{open:function(t){if(l){var e=t.to,n=t.from,r=t.passengers,a=t.order,o=void 0===a?1/0:a;if(e&&n&&r){var s={to:e,from:n,passengers:d(r),order:o},c=Object.keys(this.transports);-1===c.indexOf(e)&&i.set(this.transports,e,[]);var u=this.$_getTransportIndex(s),f=this.transports[e].slice(0);-1===u?f.push(s):f[u]=s,this.transports[e]=h(f,(function(t,e){return t.order-e.order}))}}},close:function(t){var e=arguments.length>1&&void 0!==arguments[1]&&arguments[1],n=t.to,r=t.from;if(n&&(r||!1!==e)&&this.transports[n])if(e)this.transports[n]=[];else{var i=this.$_getTransportIndex(t);if(i>=0){var a=this.transports[n].slice(0);a.splice(i,1),this.transports[n]=a}}},registerTarget:function(t,e,n){l&&(this.trackInstances&&!n&&this.targets[t]&&console.warn("[portal-vue]: Target ".concat(t," already exists")),this.$set(this.targets,t,Object.freeze([e])))},unregisterTarget:function(t){this.$delete(this.targets,t)},registerSource:function(t,e,n){l&&(this.trackInstances&&!n&&this.sources[t]&&console.warn("[portal-vue]: source ".concat(t," already exists")),this.$set(this.sources,t,Object.freeze([e])))},unregisterSource:function(t){this.$delete(this.sources,t)},hasTarget:function(t){return!(!this.targets[t]||!this.targets[t][0])},hasSource:function(t){return!(!this.sources[t]||!this.sources[t][0])},hasContentFor:function(t){return!!this.transports[t]&&!!this.transports[t].length},$_getTransportIndex:function(t){var e=t.to,n=t.from;for(var r in this.transports[e])if(this.transports[e][r].from===n)return+r;return-1}}}),g=new _(m),y=1,O=i.extend({name:"portal",props:{disabled:{type:Boolean},name:{type:String,default:function(){return String(y++)}},order:{type:Number,default:0},slim:{type:Boolean},slotProps:{type:Object,default:function(){return{}}},tag:{type:String,default:"DIV"},to:{type:String,default:function(){return String(Math.round(1e7*Math.random()))}}},created:function(){var t=this;this.$nextTick((function(){g.registerSource(t.name,t)}))},mounted:function(){this.disabled||this.sendUpdate()},updated:function(){this.disabled?this.clear():this.sendUpdate()},beforeDestroy:function(){g.unregisterSource(this.name),this.clear()},watch:{to:function(t,e){e&&e!==t&&this.clear(e),this.sendUpdate()}},methods:{clear:function(t){var e={from:this.name,to:t||this.to};g.close(e)},normalizeSlots:function(){return this.$scopedSlots.default?[this.$scopedSlots.default]:this.$slots.default},normalizeOwnChildren:function(t){return"function"===typeof t?t(this.slotProps):t},sendUpdate:function(){var t=this.normalizeSlots();if(t){var e={from:this.name,to:this.to,passengers:o(t),order:this.order};g.open(e)}else this.clear()}},render:function(t){var e=this.$slots.default||this.$scopedSlots.default||[],n=this.tag;return e&&this.disabled?e.length<=1&&this.slim?this.normalizeOwnChildren(e)[0]:t(n,[this.normalizeOwnChildren(e)]):this.slim?t():t(n,{class:{"v-portal":!0},style:{display:"none"},key:"v-portal-placeholder"})}}),j=i.extend({name:"portalTarget",props:{multiple:{type:Boolean,default:!1},name:{type:String,required:!0},slim:{type:Boolean,default:!1},slotProps:{type:Object,default:function(){return{}}},tag:{type:String,default:"div"},transition:{type:[String,Object,Function]}},data:function(){return{transports:g.transports,firstRender:!0}},created:function(){var t=this;this.$nextTick((function(){g.registerTarget(t.name,t)}))},watch:{ownTransports:function(){this.$emit("change",this.children().length>0)},name:function(t,e){g.unregisterTarget(e),g.registerTarget(t,this)}},mounted:function(){var t=this;this.transition&&this.$nextTick((function(){t.firstRender=!1}))},beforeDestroy:function(){g.unregisterTarget(this.name)},computed:{ownTransports:function(){var t=this.transports[this.name]||[];return this.multiple?t:0===t.length?[]:[t[t.length-1]]},passengers:function(){return f(this.ownTransports,this.slotProps)}},methods:{children:function(){return 0!==this.passengers.length?this.passengers:this.$scopedSlots.default?this.$scopedSlots.default(this.slotProps):this.$slots.default||[]},noWrapper:function(){var t=this.slim&&!this.transition;return t&&this.children().length>1&&console.warn("[portal-vue]: PortalTarget with `slim` option received more than one child element."),t}},render:function(t){var e=this.noWrapper(),n=this.children(),r=this.transition||this.tag;return e?n[0]:this.slim&&!r?t():t(r,{props:{tag:this.transition&&this.tag?this.tag:void 0},class:{"vue-portal-target":!0}},n)}}),w=0,M=["disabled","name","order","slim","slotProps","tag","to"],L=["multiple","transition"],k=i.extend({name:"MountingPortal",inheritAttrs:!1,props:{append:{type:[Boolean,String]},bail:{type:Boolean},mountTo:{type:String,required:!0},disabled:{type:Boolean},name:{type:String,default:function(){return"mounted_"+String(w++)}},order:{type:Number,default:0},slim:{type:Boolean},slotProps:{type:Object,default:function(){return{}}},tag:{type:String,default:"DIV"},to:{type:String,default:function(){return String(Math.round(1e7*Math.random()))}},multiple:{type:Boolean,default:!1},targetSlim:{type:Boolean},targetSlotProps:{type:Object,default:function(){return{}}},targetTag:{type:String,default:"div"},transition:{type:[String,Object,Function]}},created:function(){if("undefined"!==typeof document){var t=document.querySelector(this.mountTo);if(t){var e=this.$props;if(g.targets[e.name])e.bail?console.warn("[portal-vue]: Target ".concat(e.name," is already mounted.\n Aborting because 'bail: true' is set")):this.portalTarget=g.targets[e.name];else{var n=e.append;if(n){var r="string"===typeof n?n:"DIV",i=document.createElement(r);t.appendChild(i),t=i}var a=p(this.$props,L);a.slim=this.targetSlim,a.tag=this.targetTag,a.slotProps=this.targetSlotProps,a.name=this.to,this.portalTarget=new j({el:t,parent:this.$parent||this,propsData:a})}}else console.error("[portal-vue]: Mount Point '".concat(this.mountTo,"' not found in document"))}},beforeDestroy:function(){var t=this.portalTarget;if(this.append){var e=t.$el;e.parentNode.removeChild(e)}t.$destroy()},render:function(t){if(!this.portalTarget)return console.warn("[portal-vue] Target wasn't mounted"),t();if(!this.$scopedSlots.manual){var e=p(this.$props,M);return t(O,{props:e,attrs:this.$attrs,on:this.$listeners,scopedSlots:this.$scopedSlots},this.$slots.default)}var n=this.$scopedSlots.manual({to:this.to});return Array.isArray(n)&&(n=n[0]),n||t()}});function T(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};t.component(e.portalName||"Portal",O),t.component(e.portalTargetName||"PortalTarget",j),t.component(e.MountingPortalName||"MountingPortal",k)}var D={install:T};e.default=D,e.Portal=O,e.PortalTarget=j,e.MountingPortal=k,e.Wormhole=g},"2bfb":function(t,e,n){(function(t,e){e(n("c1df"))})(0,(function(t){"use strict"; -//! moment.js locale configuration -var e=t.defineLocale("af",{months:"Januarie_Februarie_Maart_April_Mei_Junie_Julie_Augustus_September_Oktober_November_Desember".split("_"),monthsShort:"Jan_Feb_Mrt_Apr_Mei_Jun_Jul_Aug_Sep_Okt_Nov_Des".split("_"),weekdays:"Sondag_Maandag_Dinsdag_Woensdag_Donderdag_Vrydag_Saterdag".split("_"),weekdaysShort:"Son_Maa_Din_Woe_Don_Vry_Sat".split("_"),weekdaysMin:"So_Ma_Di_Wo_Do_Vr_Sa".split("_"),meridiemParse:/vm|nm/i,isPM:function(t){return/^nm$/i.test(t)},meridiem:function(t,e,n){return t<12?n?"vm":"VM":n?"nm":"NM"},longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[Vandag om] LT",nextDay:"[Môre om] LT",nextWeek:"dddd [om] LT",lastDay:"[Gister om] LT",lastWeek:"[Laas] dddd [om] LT",sameElse:"L"},relativeTime:{future:"oor %s",past:"%s gelede",s:"'n paar sekondes",ss:"%d sekondes",m:"'n minuut",mm:"%d minute",h:"'n uur",hh:"%d ure",d:"'n dag",dd:"%d dae",M:"'n maand",MM:"%d maande",y:"'n jaar",yy:"%d jaar"},dayOfMonthOrdinalParse:/\d{1,2}(ste|de)/,ordinal:function(t){return t+(1===t||8===t||t>=20?"ste":"de")},week:{dow:1,doy:4}});return e}))},"2cf4":function(t,e,n){var r,i,a,o=n("da84"),s=n("d039"),c=n("0366"),u=n("1be4"),l=n("cc12"),d=n("1cdc"),f=n("605d"),h=o.location,p=o.setImmediate,m=o.clearImmediate,b=o.process,v=o.MessageChannel,_=o.Dispatch,g=0,y={},O="onreadystatechange",j=function(t){if(y.hasOwnProperty(t)){var e=y[t];delete y[t],e()}},w=function(t){return function(){j(t)}},M=function(t){j(t.data)},L=function(t){o.postMessage(t+"",h.protocol+"//"+h.host)};p&&m||(p=function(t){var e=[],n=1;while(arguments.length>n)e.push(arguments[n++]);return y[++g]=function(){("function"==typeof t?t:Function(t)).apply(void 0,e)},r(g),g},m=function(t){delete y[t]},f?r=function(t){b.nextTick(w(t))}:_&&_.now?r=function(t){_.now(w(t))}:v&&!d?(i=new v,a=i.port2,i.port1.onmessage=M,r=c(a.postMessage,a,1)):o.addEventListener&&"function"==typeof postMessage&&!o.importScripts&&h&&"file:"!==h.protocol&&!s(L)?(r=L,o.addEventListener("message",M,!1)):r=O in l("script")?function(t){u.appendChild(l("script"))[O]=function(){u.removeChild(this),j(t)}}:function(t){setTimeout(w(t),0)}),t.exports={set:p,clear:m}},"2d00":function(t,e,n){var r,i,a=n("da84"),o=n("342f"),s=a.process,c=s&&s.versions,u=c&&c.v8;u?(r=u.split("."),i=r[0]<4?1:r[0]+r[1]):o&&(r=o.match(/Edge\/(\d+)/),(!r||r[1]>=74)&&(r=o.match(/Chrome\/(\d+)/),r&&(i=r[1]))),t.exports=i&&+i},"2d83":function(t,e,n){"use strict";var r=n("387f");t.exports=function(t,e,n,i,a){var o=new Error(t);return r(o,e,n,i,a)}},"2dd8":function(t,e,n){},"2e67":function(t,e,n){"use strict";t.exports=function(t){return!(!t||!t.__CANCEL__)}},"2e8c":function(t,e,n){(function(t,e){e(n("c1df"))})(0,(function(t){"use strict"; -//! moment.js locale configuration -var e=t.defineLocale("uz",{months:"январ_феврал_март_апрел_май_июн_июл_август_сентябр_октябр_ноябр_декабр".split("_"),monthsShort:"янв_фев_мар_апр_май_июн_июл_авг_сен_окт_ноя_дек".split("_"),weekdays:"Якшанба_Душанба_Сешанба_Чоршанба_Пайшанба_Жума_Шанба".split("_"),weekdaysShort:"Якш_Душ_Сеш_Чор_Пай_Жум_Шан".split("_"),weekdaysMin:"Як_Ду_Се_Чо_Па_Жу_Ша".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"D MMMM YYYY, dddd HH:mm"},calendar:{sameDay:"[Бугун соат] LT [да]",nextDay:"[Эртага] LT [да]",nextWeek:"dddd [куни соат] LT [да]",lastDay:"[Кеча соат] LT [да]",lastWeek:"[Утган] dddd [куни соат] LT [да]",sameElse:"L"},relativeTime:{future:"Якин %s ичида",past:"Бир неча %s олдин",s:"фурсат",ss:"%d фурсат",m:"бир дакика",mm:"%d дакика",h:"бир соат",hh:"%d соат",d:"бир кун",dd:"%d кун",M:"бир ой",MM:"%d ой",y:"бир йил",yy:"%d йил"},week:{dow:1,doy:7}});return e}))},"2f79":function(t,e,n){"use strict";n.d(e,"a",(function(){return r}));n("b42e");var r="_uid"},"30b5":function(t,e,n){"use strict";var r=n("c532");function i(t){return encodeURIComponent(t).replace(/%3A/gi,":").replace(/%24/g,"$").replace(/%2C/gi,",").replace(/%20/g,"+").replace(/%5B/gi,"[").replace(/%5D/gi,"]")}t.exports=function(t,e,n){if(!e)return t;var a;if(n)a=n(e);else if(r.isURLSearchParams(e))a=e.toString();else{var o=[];r.forEach(e,(function(t,e){null!==t&&"undefined"!==typeof t&&(r.isArray(t)?e+="[]":t=[t],r.forEach(t,(function(t){r.isDate(t)?t=t.toISOString():r.isObject(t)&&(t=JSON.stringify(t)),o.push(i(e)+"="+i(t))})))})),a=o.join("&")}if(a){var s=t.indexOf("#");-1!==s&&(t=t.slice(0,s)),t+=(-1===t.indexOf("?")?"?":"&")+a}return t}},"342f":function(t,e,n){var r=n("d066");t.exports=r("navigator","userAgent")||""},"35a1":function(t,e,n){var r=n("f5df"),i=n("3f8c"),a=n("b622"),o=a("iterator");t.exports=function(t){if(void 0!=t)return t[o]||t["@@iterator"]||i[r(t)]}},"365c":function(t,e,n){"use strict";n.d(e,"a",(function(){return o})),n.d(e,"b",(function(){return s}));var r=n("2326"),i=n("6c06"),a=n("7b1e"),o=function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};return t=Object(r["b"])(t).filter(i["a"]),t.some((function(t){return e[t]||n[t]}))},s=function(t){var e,n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},o=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},s=arguments.length>3&&void 0!==arguments[3]?arguments[3]:{};t=Object(r["b"])(t).filter(i["a"]);for(var c=0;cc)i.f(t,n=r[c++],e[n]);return t}},"387f":function(t,e,n){"use strict";t.exports=function(t,e,n,r,i){return t.config=e,n&&(t.code=n),t.request=r,t.response=i,t.isAxiosError=!0,t.toJSON=function(){return{message:this.message,name:this.name,description:this.description,number:this.number,fileName:this.fileName,lineNumber:this.lineNumber,columnNumber:this.columnNumber,stack:this.stack,config:this.config,code:this.code}},t}},3886:function(t,e,n){(function(t,e){e(n("c1df"))})(0,(function(t){"use strict"; -//! moment.js locale configuration -var e=t.defineLocale("en-ca",{months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),monthsShort:"Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),weekdaysShort:"Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),weekdaysMin:"Su_Mo_Tu_We_Th_Fr_Sa".split("_"),longDateFormat:{LT:"h:mm A",LTS:"h:mm:ss A",L:"YYYY-MM-DD",LL:"MMMM D, YYYY",LLL:"MMMM D, YYYY h:mm A",LLLL:"dddd, MMMM D, YYYY h:mm A"},calendar:{sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[Last] dddd [at] LT",sameElse:"L"},relativeTime:{future:"in %s",past:"%s ago",s:"a few seconds",ss:"%d seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},dayOfMonthOrdinalParse:/\d{1,2}(st|nd|rd|th)/,ordinal:function(t){var e=t%10,n=1===~~(t%100/10)?"th":1===e?"st":2===e?"nd":3===e?"rd":"th";return t+n}});return e}))},3934:function(t,e,n){"use strict";var r=n("c532");t.exports=r.isStandardBrowserEnv()?function(){var t,e=/(msie|trident)/i.test(navigator.userAgent),n=document.createElement("a");function i(t){var r=t;return e&&(n.setAttribute("href",r),r=n.href),n.setAttribute("href",r),{href:n.href,protocol:n.protocol?n.protocol.replace(/:$/,""):"",host:n.host,search:n.search?n.search.replace(/^\?/,""):"",hash:n.hash?n.hash.replace(/^#/,""):"",hostname:n.hostname,port:n.port,pathname:"/"===n.pathname.charAt(0)?n.pathname:"/"+n.pathname}}return t=i(window.location.href),function(e){var n=r.isString(e)?i(e):e;return n.protocol===t.protocol&&n.host===t.host}}():function(){return function(){return!0}}()},"39a6":function(t,e,n){(function(t,e){e(n("c1df"))})(0,(function(t){"use strict"; -//! moment.js locale configuration -var e=t.defineLocale("en-gb",{months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),monthsShort:"Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),weekdaysShort:"Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),weekdaysMin:"Su_Mo_Tu_We_Th_Fr_Sa".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[Last] dddd [at] LT",sameElse:"L"},relativeTime:{future:"in %s",past:"%s ago",s:"a few seconds",ss:"%d seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},dayOfMonthOrdinalParse:/\d{1,2}(st|nd|rd|th)/,ordinal:function(t){var e=t%10,n=1===~~(t%100/10)?"th":1===e?"st":2===e?"nd":3===e?"rd":"th";return t+n},week:{dow:1,doy:4}});return e}))},"39bd":function(t,e,n){(function(t,e){e(n("c1df"))})(0,(function(t){"use strict"; -//! moment.js locale configuration -var e={1:"१",2:"२",3:"३",4:"४",5:"५",6:"६",7:"७",8:"८",9:"९",0:"०"},n={"१":"1","२":"2","३":"3","४":"4","५":"5","६":"6","७":"7","८":"8","९":"9","०":"0"};function r(t,e,n,r){var i="";if(e)switch(n){case"s":i="काही सेकंद";break;case"ss":i="%d सेकंद";break;case"m":i="एक मिनिट";break;case"mm":i="%d मिनिटे";break;case"h":i="एक तास";break;case"hh":i="%d तास";break;case"d":i="एक दिवस";break;case"dd":i="%d दिवस";break;case"M":i="एक महिना";break;case"MM":i="%d महिने";break;case"y":i="एक वर्ष";break;case"yy":i="%d वर्षे";break}else switch(n){case"s":i="काही सेकंदां";break;case"ss":i="%d सेकंदां";break;case"m":i="एका मिनिटा";break;case"mm":i="%d मिनिटां";break;case"h":i="एका तासा";break;case"hh":i="%d तासां";break;case"d":i="एका दिवसा";break;case"dd":i="%d दिवसां";break;case"M":i="एका महिन्या";break;case"MM":i="%d महिन्यां";break;case"y":i="एका वर्षा";break;case"yy":i="%d वर्षां";break}return i.replace(/%d/i,t)}var i=t.defineLocale("mr",{months:"जानेवारी_फेब्रुवारी_मार्च_एप्रिल_मे_जून_जुलै_ऑगस्ट_सप्टेंबर_ऑक्टोबर_नोव्हेंबर_डिसेंबर".split("_"),monthsShort:"जाने._फेब्रु._मार्च._एप्रि._मे._जून._जुलै._ऑग._सप्टें._ऑक्टो._नोव्हें._डिसें.".split("_"),monthsParseExact:!0,weekdays:"रविवार_सोमवार_मंगळवार_बुधवार_गुरूवार_शुक्रवार_शनिवार".split("_"),weekdaysShort:"रवि_सोम_मंगळ_बुध_गुरू_शुक्र_शनि".split("_"),weekdaysMin:"र_सो_मं_बु_गु_शु_श".split("_"),longDateFormat:{LT:"A h:mm वाजता",LTS:"A h:mm:ss वाजता",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, A h:mm वाजता",LLLL:"dddd, D MMMM YYYY, A h:mm वाजता"},calendar:{sameDay:"[आज] LT",nextDay:"[उद्या] LT",nextWeek:"dddd, LT",lastDay:"[काल] LT",lastWeek:"[मागील] dddd, LT",sameElse:"L"},relativeTime:{future:"%sमध्ये",past:"%sपूर्वी",s:r,ss:r,m:r,mm:r,h:r,hh:r,d:r,dd:r,M:r,MM:r,y:r,yy:r},preparse:function(t){return t.replace(/[१२३४५६७८९०]/g,(function(t){return n[t]}))},postformat:function(t){return t.replace(/\d/g,(function(t){return e[t]}))},meridiemParse:/पहाटे|सकाळी|दुपारी|सायंकाळी|रात्री/,meridiemHour:function(t,e){return 12===t&&(t=0),"पहाटे"===e||"सकाळी"===e?t:"दुपारी"===e||"सायंकाळी"===e||"रात्री"===e?t>=12?t:t+12:void 0},meridiem:function(t,e,n){return t>=0&&t<6?"पहाटे":t<12?"सकाळी":t<17?"दुपारी":t<20?"सायंकाळी":"रात्री"},week:{dow:0,doy:6}});return i}))},"3a39":function(t,e,n){(function(t,e){e(n("c1df"))})(0,(function(t){"use strict"; -//! moment.js locale configuration -var e={1:"१",2:"२",3:"३",4:"४",5:"५",6:"६",7:"७",8:"८",9:"९",0:"०"},n={"१":"1","२":"2","३":"3","४":"4","५":"5","६":"6","७":"7","८":"8","९":"9","०":"0"},r=t.defineLocale("ne",{months:"जनवरी_फेब्रुवरी_मार्च_अप्रिल_मई_जुन_जुलाई_अगष्ट_सेप्टेम्बर_अक्टोबर_नोभेम्बर_डिसेम्बर".split("_"),monthsShort:"जन._फेब्रु._मार्च_अप्रि._मई_जुन_जुलाई._अग._सेप्ट._अक्टो._नोभे._डिसे.".split("_"),monthsParseExact:!0,weekdays:"आइतबार_सोमबार_मङ्गलबार_बुधबार_बिहिबार_शुक्रबार_शनिबार".split("_"),weekdaysShort:"आइत._सोम._मङ्गल._बुध._बिहि._शुक्र._शनि.".split("_"),weekdaysMin:"आ._सो._मं._बु._बि._शु._श.".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"Aको h:mm बजे",LTS:"Aको h:mm:ss बजे",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, Aको h:mm बजे",LLLL:"dddd, D MMMM YYYY, Aको h:mm बजे"},preparse:function(t){return t.replace(/[१२३४५६७८९०]/g,(function(t){return n[t]}))},postformat:function(t){return t.replace(/\d/g,(function(t){return e[t]}))},meridiemParse:/राति|बिहान|दिउँसो|साँझ/,meridiemHour:function(t,e){return 12===t&&(t=0),"राति"===e?t<4?t:t+12:"बिहान"===e?t:"दिउँसो"===e?t>=10?t:t+12:"साँझ"===e?t+12:void 0},meridiem:function(t,e,n){return t<3?"राति":t<12?"बिहान":t<16?"दिउँसो":t<20?"साँझ":"राति"},calendar:{sameDay:"[आज] LT",nextDay:"[भोलि] LT",nextWeek:"[आउँदो] dddd[,] LT",lastDay:"[हिजो] LT",lastWeek:"[गएको] dddd[,] LT",sameElse:"L"},relativeTime:{future:"%sमा",past:"%s अगाडि",s:"केही क्षण",ss:"%d सेकेण्ड",m:"एक मिनेट",mm:"%d मिनेट",h:"एक घण्टा",hh:"%d घण्टा",d:"एक दिन",dd:"%d दिन",M:"एक महिना",MM:"%d महिना",y:"एक बर्ष",yy:"%d बर्ष"},week:{dow:0,doy:6}});return r}))},"3a58":function(t,e,n){"use strict";n.d(e,"c",(function(){return r})),n.d(e,"b",(function(){return i})),n.d(e,"a",(function(){return a}));var r=function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:NaN,n=parseInt(t,10);return isNaN(n)?e:n},i=function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:NaN,n=parseFloat(t);return isNaN(n)?e:n},a=function(t,e){return i(t).toFixed(r(e,0))}},"3a6c":function(t,e,n){(function(t,e){e(n("c1df"))})(0,(function(t){"use strict"; -//! moment.js locale configuration -var e=t.defineLocale("zh-mo",{months:"一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月".split("_"),monthsShort:"1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月".split("_"),weekdays:"星期日_星期一_星期二_星期三_星期四_星期五_星期六".split("_"),weekdaysShort:"週日_週一_週二_週三_週四_週五_週六".split("_"),weekdaysMin:"日_一_二_三_四_五_六".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"YYYY年M月D日",LLL:"YYYY年M月D日 HH:mm",LLLL:"YYYY年M月D日dddd HH:mm",l:"D/M/YYYY",ll:"YYYY年M月D日",lll:"YYYY年M月D日 HH:mm",llll:"YYYY年M月D日dddd HH:mm"},meridiemParse:/凌晨|早上|上午|中午|下午|晚上/,meridiemHour:function(t,e){return 12===t&&(t=0),"凌晨"===e||"早上"===e||"上午"===e?t:"中午"===e?t>=11?t:t+12:"下午"===e||"晚上"===e?t+12:void 0},meridiem:function(t,e,n){var r=100*t+e;return r<600?"凌晨":r<900?"早上":r<1130?"上午":r<1230?"中午":r<1800?"下午":"晚上"},calendar:{sameDay:"[今天] LT",nextDay:"[明天] LT",nextWeek:"[下]dddd LT",lastDay:"[昨天] LT",lastWeek:"[上]dddd LT",sameElse:"L"},dayOfMonthOrdinalParse:/\d{1,2}(日|月|週)/,ordinal:function(t,e){switch(e){case"d":case"D":case"DDD":return t+"日";case"M":return t+"月";case"w":case"W":return t+"週";default:return t}},relativeTime:{future:"%s內",past:"%s前",s:"幾秒",ss:"%d 秒",m:"1 分鐘",mm:"%d 分鐘",h:"1 小時",hh:"%d 小時",d:"1 天",dd:"%d 天",M:"1 個月",MM:"%d 個月",y:"1 年",yy:"%d 年"}});return e}))},"3b1b":function(t,e,n){(function(t,e){e(n("c1df"))})(0,(function(t){"use strict"; -//! moment.js locale configuration -var e={0:"-ум",1:"-ум",2:"-юм",3:"-юм",4:"-ум",5:"-ум",6:"-ум",7:"-ум",8:"-ум",9:"-ум",10:"-ум",12:"-ум",13:"-ум",20:"-ум",30:"-юм",40:"-ум",50:"-ум",60:"-ум",70:"-ум",80:"-ум",90:"-ум",100:"-ум"},n=t.defineLocale("tg",{months:{format:"январи_феврали_марти_апрели_майи_июни_июли_августи_сентябри_октябри_ноябри_декабри".split("_"),standalone:"январ_феврал_март_апрел_май_июн_июл_август_сентябр_октябр_ноябр_декабр".split("_")},monthsShort:"янв_фев_мар_апр_май_июн_июл_авг_сен_окт_ноя_дек".split("_"),weekdays:"якшанбе_душанбе_сешанбе_чоршанбе_панҷшанбе_ҷумъа_шанбе".split("_"),weekdaysShort:"яшб_дшб_сшб_чшб_пшб_ҷум_шнб".split("_"),weekdaysMin:"яш_дш_сш_чш_пш_ҷм_шб".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[Имрӯз соати] LT",nextDay:"[Фардо соати] LT",lastDay:"[Дирӯз соати] LT",nextWeek:"dddd[и] [ҳафтаи оянда соати] LT",lastWeek:"dddd[и] [ҳафтаи гузашта соати] LT",sameElse:"L"},relativeTime:{future:"баъди %s",past:"%s пеш",s:"якчанд сония",m:"як дақиқа",mm:"%d дақиқа",h:"як соат",hh:"%d соат",d:"як рӯз",dd:"%d рӯз",M:"як моҳ",MM:"%d моҳ",y:"як сол",yy:"%d сол"},meridiemParse:/шаб|субҳ|рӯз|бегоҳ/,meridiemHour:function(t,e){return 12===t&&(t=0),"шаб"===e?t<4?t:t+12:"субҳ"===e?t:"рӯз"===e?t>=11?t:t+12:"бегоҳ"===e?t+12:void 0},meridiem:function(t,e,n){return t<4?"шаб":t<11?"субҳ":t<16?"рӯз":t<19?"бегоҳ":"шаб"},dayOfMonthOrdinalParse:/\d{1,2}-(ум|юм)/,ordinal:function(t){var n=t%10,r=t>=100?100:null;return t+(e[t]||e[n]||e[r])},week:{dow:1,doy:7}});return n}))},"3bbe":function(t,e,n){var r=n("861d");t.exports=function(t){if(!r(t)&&null!==t)throw TypeError("Can't set "+String(t)+" as a prototype");return t}},"3c0d":function(t,e,n){(function(t,e){e(n("c1df"))})(0,(function(t){"use strict"; -//! moment.js locale configuration -var e="leden_únor_březen_duben_květen_červen_červenec_srpen_září_říjen_listopad_prosinec".split("_"),n="led_úno_bře_dub_kvě_čvn_čvc_srp_zář_říj_lis_pro".split("_"),r=[/^led/i,/^úno/i,/^bře/i,/^dub/i,/^kvě/i,/^(čvn|červen$|června)/i,/^(čvc|červenec|července)/i,/^srp/i,/^zář/i,/^říj/i,/^lis/i,/^pro/i],i=/^(leden|únor|březen|duben|květen|červenec|července|červen|června|srpen|září|říjen|listopad|prosinec|led|úno|bře|dub|kvě|čvn|čvc|srp|zář|říj|lis|pro)/i;function a(t){return t>1&&t<5&&1!==~~(t/10)}function o(t,e,n,r){var i=t+" ";switch(n){case"s":return e||r?"pár sekund":"pár sekundami";case"ss":return e||r?i+(a(t)?"sekundy":"sekund"):i+"sekundami";case"m":return e?"minuta":r?"minutu":"minutou";case"mm":return e||r?i+(a(t)?"minuty":"minut"):i+"minutami";case"h":return e?"hodina":r?"hodinu":"hodinou";case"hh":return e||r?i+(a(t)?"hodiny":"hodin"):i+"hodinami";case"d":return e||r?"den":"dnem";case"dd":return e||r?i+(a(t)?"dny":"dní"):i+"dny";case"M":return e||r?"měsíc":"měsícem";case"MM":return e||r?i+(a(t)?"měsíce":"měsíců"):i+"měsíci";case"y":return e||r?"rok":"rokem";case"yy":return e||r?i+(a(t)?"roky":"let"):i+"lety"}}var s=t.defineLocale("cs",{months:e,monthsShort:n,monthsRegex:i,monthsShortRegex:i,monthsStrictRegex:/^(leden|ledna|února|únor|březen|března|duben|dubna|květen|května|červenec|července|červen|června|srpen|srpna|září|říjen|října|listopadu|listopad|prosinec|prosince)/i,monthsShortStrictRegex:/^(led|úno|bře|dub|kvě|čvn|čvc|srp|zář|říj|lis|pro)/i,monthsParse:r,longMonthsParse:r,shortMonthsParse:r,weekdays:"neděle_pondělí_úterý_středa_čtvrtek_pátek_sobota".split("_"),weekdaysShort:"ne_po_út_st_čt_pá_so".split("_"),weekdaysMin:"ne_po_út_st_čt_pá_so".split("_"),longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY H:mm",LLLL:"dddd D. MMMM YYYY H:mm",l:"D. M. YYYY"},calendar:{sameDay:"[dnes v] LT",nextDay:"[zítra v] LT",nextWeek:function(){switch(this.day()){case 0:return"[v neděli v] LT";case 1:case 2:return"[v] dddd [v] LT";case 3:return"[ve středu v] LT";case 4:return"[ve čtvrtek v] LT";case 5:return"[v pátek v] LT";case 6:return"[v sobotu v] LT"}},lastDay:"[včera v] LT",lastWeek:function(){switch(this.day()){case 0:return"[minulou neděli v] LT";case 1:case 2:return"[minulé] dddd [v] LT";case 3:return"[minulou středu v] LT";case 4:case 5:return"[minulý] dddd [v] LT";case 6:return"[minulou sobotu v] LT"}},sameElse:"L"},relativeTime:{future:"za %s",past:"před %s",s:o,ss:o,m:o,mm:o,h:o,hh:o,d:o,dd:o,M:o,MM:o,y:o,yy:o},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}});return s}))},"3c21":function(t,e,n){"use strict";n.d(e,"a",(function(){return o}));var r=n("d82f"),i=n("7b1e"),a=function(t,e){if(t.length!==e.length)return!1;for(var n=!0,r=0;n&&r=n.length?{value:void 0,done:!0}:(t=r(n,i),e.index+=t.length,{value:t,done:!1})}))},"3de5":function(t,e,n){(function(t,e){e(n("c1df"))})(0,(function(t){"use strict"; -//! moment.js locale configuration -var e={1:"௧",2:"௨",3:"௩",4:"௪",5:"௫",6:"௬",7:"௭",8:"௮",9:"௯",0:"௦"},n={"௧":"1","௨":"2","௩":"3","௪":"4","௫":"5","௬":"6","௭":"7","௮":"8","௯":"9","௦":"0"},r=t.defineLocale("ta",{months:"ஜனவரி_பிப்ரவரி_மார்ச்_ஏப்ரல்_மே_ஜூன்_ஜூலை_ஆகஸ்ட்_செப்டெம்பர்_அக்டோபர்_நவம்பர்_டிசம்பர்".split("_"),monthsShort:"ஜனவரி_பிப்ரவரி_மார்ச்_ஏப்ரல்_மே_ஜூன்_ஜூலை_ஆகஸ்ட்_செப்டெம்பர்_அக்டோபர்_நவம்பர்_டிசம்பர்".split("_"),weekdays:"ஞாயிற்றுக்கிழமை_திங்கட்கிழமை_செவ்வாய்கிழமை_புதன்கிழமை_வியாழக்கிழமை_வெள்ளிக்கிழமை_சனிக்கிழமை".split("_"),weekdaysShort:"ஞாயிறு_திங்கள்_செவ்வாய்_புதன்_வியாழன்_வெள்ளி_சனி".split("_"),weekdaysMin:"ஞா_தி_செ_பு_வி_வெ_ச".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, HH:mm",LLLL:"dddd, D MMMM YYYY, HH:mm"},calendar:{sameDay:"[இன்று] LT",nextDay:"[நாளை] LT",nextWeek:"dddd, LT",lastDay:"[நேற்று] LT",lastWeek:"[கடந்த வாரம்] dddd, LT",sameElse:"L"},relativeTime:{future:"%s இல்",past:"%s முன்",s:"ஒரு சில விநாடிகள்",ss:"%d விநாடிகள்",m:"ஒரு நிமிடம்",mm:"%d நிமிடங்கள்",h:"ஒரு மணி நேரம்",hh:"%d மணி நேரம்",d:"ஒரு நாள்",dd:"%d நாட்கள்",M:"ஒரு மாதம்",MM:"%d மாதங்கள்",y:"ஒரு வருடம்",yy:"%d ஆண்டுகள்"},dayOfMonthOrdinalParse:/\d{1,2}வது/,ordinal:function(t){return t+"வது"},preparse:function(t){return t.replace(/[௧௨௩௪௫௬௭௮௯௦]/g,(function(t){return n[t]}))},postformat:function(t){return t.replace(/\d/g,(function(t){return e[t]}))},meridiemParse:/யாமம்|வைகறை|காலை|நண்பகல்|எற்பாடு|மாலை/,meridiem:function(t,e,n){return t<2?" யாமம்":t<6?" வைகறை":t<10?" காலை":t<14?" நண்பகல்":t<18?" எற்பாடு":t<22?" மாலை":" யாமம்"},meridiemHour:function(t,e){return 12===t&&(t=0),"யாமம்"===e?t<2?t:t+12:"வைகறை"===e||"காலை"===e||"நண்பகல்"===e&&t>=10?t:t+12},week:{dow:0,doy:6}});return r}))},"3e92":function(t,e,n){(function(t,e){e(n("c1df"))})(0,(function(t){"use strict"; -//! moment.js locale configuration -var e={1:"೧",2:"೨",3:"೩",4:"೪",5:"೫",6:"೬",7:"೭",8:"೮",9:"೯",0:"೦"},n={"೧":"1","೨":"2","೩":"3","೪":"4","೫":"5","೬":"6","೭":"7","೮":"8","೯":"9","೦":"0"},r=t.defineLocale("kn",{months:"ಜನವರಿ_ಫೆಬ್ರವರಿ_ಮಾರ್ಚ್_ಏಪ್ರಿಲ್_ಮೇ_ಜೂನ್_ಜುಲೈ_ಆಗಸ್ಟ್_ಸೆಪ್ಟೆಂಬರ್_ಅಕ್ಟೋಬರ್_ನವೆಂಬರ್_ಡಿಸೆಂಬರ್".split("_"),monthsShort:"ಜನ_ಫೆಬ್ರ_ಮಾರ್ಚ್_ಏಪ್ರಿಲ್_ಮೇ_ಜೂನ್_ಜುಲೈ_ಆಗಸ್ಟ್_ಸೆಪ್ಟೆಂ_ಅಕ್ಟೋ_ನವೆಂ_ಡಿಸೆಂ".split("_"),monthsParseExact:!0,weekdays:"ಭಾನುವಾರ_ಸೋಮವಾರ_ಮಂಗಳವಾರ_ಬುಧವಾರ_ಗುರುವಾರ_ಶುಕ್ರವಾರ_ಶನಿವಾರ".split("_"),weekdaysShort:"ಭಾನು_ಸೋಮ_ಮಂಗಳ_ಬುಧ_ಗುರು_ಶುಕ್ರ_ಶನಿ".split("_"),weekdaysMin:"ಭಾ_ಸೋ_ಮಂ_ಬು_ಗು_ಶು_ಶ".split("_"),longDateFormat:{LT:"A h:mm",LTS:"A h:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, A h:mm",LLLL:"dddd, D MMMM YYYY, A h:mm"},calendar:{sameDay:"[ಇಂದು] LT",nextDay:"[ನಾಳೆ] LT",nextWeek:"dddd, LT",lastDay:"[ನಿನ್ನೆ] LT",lastWeek:"[ಕೊನೆಯ] dddd, LT",sameElse:"L"},relativeTime:{future:"%s ನಂತರ",past:"%s ಹಿಂದೆ",s:"ಕೆಲವು ಕ್ಷಣಗಳು",ss:"%d ಸೆಕೆಂಡುಗಳು",m:"ಒಂದು ನಿಮಿಷ",mm:"%d ನಿಮಿಷ",h:"ಒಂದು ಗಂಟೆ",hh:"%d ಗಂಟೆ",d:"ಒಂದು ದಿನ",dd:"%d ದಿನ",M:"ಒಂದು ತಿಂಗಳು",MM:"%d ತಿಂಗಳು",y:"ಒಂದು ವರ್ಷ",yy:"%d ವರ್ಷ"},preparse:function(t){return t.replace(/[೧೨೩೪೫೬೭೮೯೦]/g,(function(t){return n[t]}))},postformat:function(t){return t.replace(/\d/g,(function(t){return e[t]}))},meridiemParse:/ರಾತ್ರಿ|ಬೆಳಿಗ್ಗೆ|ಮಧ್ಯಾಹ್ನ|ಸಂಜೆ/,meridiemHour:function(t,e){return 12===t&&(t=0),"ರಾತ್ರಿ"===e?t<4?t:t+12:"ಬೆಳಿಗ್ಗೆ"===e?t:"ಮಧ್ಯಾಹ್ನ"===e?t>=10?t:t+12:"ಸಂಜೆ"===e?t+12:void 0},meridiem:function(t,e,n){return t<4?"ರಾತ್ರಿ":t<10?"ಬೆಳಿಗ್ಗೆ":t<17?"ಮಧ್ಯಾಹ್ನ":t<20?"ಸಂಜೆ":"ರಾತ್ರಿ"},dayOfMonthOrdinalParse:/\d{1,2}(ನೇ)/,ordinal:function(t){return t+"ನೇ"},week:{dow:0,doy:6}});return r}))},"3f8c":function(t,e){t.exports={}},"408c":function(t,e,n){var r=n("2b3e"),i=function(){return r.Date.now()};t.exports=i},"423e":function(t,e,n){(function(t,e){e(n("c1df"))})(0,(function(t){"use strict"; -//! moment.js locale configuration -var e=t.defineLocale("ar-kw",{months:"يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر".split("_"),monthsShort:"يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر".split("_"),weekdays:"الأحد_الإتنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت".split("_"),weekdaysShort:"احد_اتنين_ثلاثاء_اربعاء_خميس_جمعة_سبت".split("_"),weekdaysMin:"ح_ن_ث_ر_خ_ج_س".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[اليوم على الساعة] LT",nextDay:"[غدا على الساعة] LT",nextWeek:"dddd [على الساعة] LT",lastDay:"[أمس على الساعة] LT",lastWeek:"dddd [على الساعة] LT",sameElse:"L"},relativeTime:{future:"في %s",past:"منذ %s",s:"ثوان",ss:"%d ثانية",m:"دقيقة",mm:"%d دقائق",h:"ساعة",hh:"%d ساعات",d:"يوم",dd:"%d أيام",M:"شهر",MM:"%d أشهر",y:"سنة",yy:"%d سنوات"},week:{dow:0,doy:12}});return e}))},"428f":function(t,e,n){var r=n("da84");t.exports=r},4362:function(t,e,n){e.nextTick=function(t){var e=Array.prototype.slice.call(arguments);e.shift(),setTimeout((function(){t.apply(null,e)}),0)},e.platform=e.arch=e.execPath=e.title="browser",e.pid=1,e.browser=!0,e.env={},e.argv=[],e.binding=function(t){throw new Error("No such module. (Possibly not yet loaded)")},function(){var t,r="/";e.cwd=function(){return r},e.chdir=function(e){t||(t=n("df7c")),r=t.resolve(e,r)}}(),e.exit=e.kill=e.umask=e.dlopen=e.uptime=e.memoryUsage=e.uvCounters=function(){},e.features={}},"440c":function(t,e,n){(function(t,e){e(n("c1df"))})(0,(function(t){"use strict"; -//! moment.js locale configuration -function e(t,e,n,r){var i={m:["eng Minutt","enger Minutt"],h:["eng Stonn","enger Stonn"],d:["een Dag","engem Dag"],M:["ee Mount","engem Mount"],y:["ee Joer","engem Joer"]};return e?i[n][0]:i[n][1]}function n(t){var e=t.substr(0,t.indexOf(" "));return i(e)?"a "+t:"an "+t}function r(t){var e=t.substr(0,t.indexOf(" "));return i(e)?"viru "+t:"virun "+t}function i(t){if(t=parseInt(t,10),isNaN(t))return!1;if(t<0)return!0;if(t<10)return 4<=t&&t<=7;if(t<100){var e=t%10,n=t/10;return i(0===e?n:e)}if(t<1e4){while(t>=10)t/=10;return i(t)}return t/=1e3,i(t)}var a=t.defineLocale("lb",{months:"Januar_Februar_Mäerz_Abrëll_Mee_Juni_Juli_August_September_Oktober_November_Dezember".split("_"),monthsShort:"Jan._Febr._Mrz._Abr._Mee_Jun._Jul._Aug._Sept._Okt._Nov._Dez.".split("_"),monthsParseExact:!0,weekdays:"Sonndeg_Méindeg_Dënschdeg_Mëttwoch_Donneschdeg_Freideg_Samschdeg".split("_"),weekdaysShort:"So._Mé._Dë._Më._Do._Fr._Sa.".split("_"),weekdaysMin:"So_Mé_Dë_Më_Do_Fr_Sa".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm [Auer]",LTS:"H:mm:ss [Auer]",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY H:mm [Auer]",LLLL:"dddd, D. MMMM YYYY H:mm [Auer]"},calendar:{sameDay:"[Haut um] LT",sameElse:"L",nextDay:"[Muer um] LT",nextWeek:"dddd [um] LT",lastDay:"[Gëschter um] LT",lastWeek:function(){switch(this.day()){case 2:case 4:return"[Leschten] dddd [um] LT";default:return"[Leschte] dddd [um] LT"}}},relativeTime:{future:n,past:r,s:"e puer Sekonnen",ss:"%d Sekonnen",m:e,mm:"%d Minutten",h:e,hh:"%d Stonnen",d:e,dd:"%d Deeg",M:e,MM:"%d Méint",y:e,yy:"%d Joer"},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}});return a}))},"44ad":function(t,e,n){var r=n("d039"),i=n("c6b6"),a="".split;t.exports=r((function(){return!Object("z").propertyIsEnumerable(0)}))?function(t){return"String"==i(t)?a.call(t,""):Object(t)}:Object},"44d2":function(t,e,n){var r=n("b622"),i=n("7c73"),a=n("9bf2"),o=r("unscopables"),s=Array.prototype;void 0==s[o]&&a.f(s,o,{configurable:!0,value:i(null)}),t.exports=function(t){s[o][t]=!0}},"44de":function(t,e,n){var r=n("da84");t.exports=function(t,e){var n=r.console;n&&n.error&&(1===arguments.length?n.error(t):n.error(t,e))}},"44e7":function(t,e,n){var r=n("861d"),i=n("c6b6"),a=n("b622"),o=a("match");t.exports=function(t){var e;return r(t)&&(void 0!==(e=t[o])?!!e:"RegExp"==i(t))}},"466d":function(t,e,n){"use strict";var r=n("d784"),i=n("825a"),a=n("50c4"),o=n("1d80"),s=n("8aa5"),c=n("14c3");r("match",1,(function(t,e,n){return[function(e){var n=o(this),r=void 0==e?void 0:e[t];return void 0!==r?r.call(e,n):new RegExp(e)[t](String(n))},function(t){var r=n(e,t,this);if(r.done)return r.value;var o=i(t),u=String(this);if(!o.global)return c(o,u);var l=o.unicode;o.lastIndex=0;var d,f=[],h=0;while(null!==(d=c(o,u))){var p=String(d[0]);f[h]=p,""===p&&(o.lastIndex=s(u,a(o.lastIndex),l)),h++}return 0===h?null:f}]}))},"467f":function(t,e,n){"use strict";var r=n("2d83");t.exports=function(t,e,n){var i=n.config.validateStatus;n.status&&i&&!i(n.status)?e(r("Request failed with status code "+n.status,n.config,null,n.request,n)):t(n)}},4840:function(t,e,n){var r=n("825a"),i=n("1c0b"),a=n("b622"),o=a("species");t.exports=function(t,e){var n,a=r(t).constructor;return void 0===a||void 0==(n=r(a)[o])?e:i(n)}},"485c":function(t,e,n){(function(t,e){e(n("c1df"))})(0,(function(t){"use strict"; -//! moment.js locale configuration -var e={1:"-inci",5:"-inci",8:"-inci",70:"-inci",80:"-inci",2:"-nci",7:"-nci",20:"-nci",50:"-nci",3:"-üncü",4:"-üncü",100:"-üncü",6:"-ncı",9:"-uncu",10:"-uncu",30:"-uncu",60:"-ıncı",90:"-ıncı"},n=t.defineLocale("az",{months:"yanvar_fevral_mart_aprel_may_iyun_iyul_avqust_sentyabr_oktyabr_noyabr_dekabr".split("_"),monthsShort:"yan_fev_mar_apr_may_iyn_iyl_avq_sen_okt_noy_dek".split("_"),weekdays:"Bazar_Bazar ertəsi_Çərşənbə axşamı_Çərşənbə_Cümə axşamı_Cümə_Şənbə".split("_"),weekdaysShort:"Baz_BzE_ÇAx_Çər_CAx_Cüm_Şən".split("_"),weekdaysMin:"Bz_BE_ÇA_Çə_CA_Cü_Şə".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[bugün saat] LT",nextDay:"[sabah saat] LT",nextWeek:"[gələn həftə] dddd [saat] LT",lastDay:"[dünən] LT",lastWeek:"[keçən həftə] dddd [saat] LT",sameElse:"L"},relativeTime:{future:"%s sonra",past:"%s əvvəl",s:"bir neçə saniyə",ss:"%d saniyə",m:"bir dəqiqə",mm:"%d dəqiqə",h:"bir saat",hh:"%d saat",d:"bir gün",dd:"%d gün",M:"bir ay",MM:"%d ay",y:"bir il",yy:"%d il"},meridiemParse:/gecə|səhər|gündüz|axşam/,isPM:function(t){return/^(gündüz|axşam)$/.test(t)},meridiem:function(t,e,n){return t<4?"gecə":t<12?"səhər":t<17?"gündüz":"axşam"},dayOfMonthOrdinalParse:/\d{1,2}-(ıncı|inci|nci|üncü|ncı|uncu)/,ordinal:function(t){if(0===t)return t+"-ıncı";var n=t%10,r=t%100-n,i=t>=100?100:null;return t+(e[n]||e[r]||e[i])},week:{dow:1,doy:7}});return n}))},4930:function(t,e,n){var r=n("2d00"),i=n("d039");t.exports=!!Object.getOwnPropertySymbols&&!i((function(){var t=Symbol();return!String(t)||!(Object(t)instanceof Symbol)||!Symbol.sham&&r&&r<41}))},"493b":function(t,e,n){"use strict";n.d(e,"a",(function(){return i}));var r=n("8c4e"),i=Object(r["a"])("$attrs","bvAttrs")},"49ab":function(t,e,n){(function(t,e){e(n("c1df"))})(0,(function(t){"use strict"; -//! moment.js locale configuration -var e=t.defineLocale("zh-hk",{months:"一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月".split("_"),monthsShort:"1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月".split("_"),weekdays:"星期日_星期一_星期二_星期三_星期四_星期五_星期六".split("_"),weekdaysShort:"週日_週一_週二_週三_週四_週五_週六".split("_"),weekdaysMin:"日_一_二_三_四_五_六".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY/MM/DD",LL:"YYYY年M月D日",LLL:"YYYY年M月D日 HH:mm",LLLL:"YYYY年M月D日dddd HH:mm",l:"YYYY/M/D",ll:"YYYY年M月D日",lll:"YYYY年M月D日 HH:mm",llll:"YYYY年M月D日dddd HH:mm"},meridiemParse:/凌晨|早上|上午|中午|下午|晚上/,meridiemHour:function(t,e){return 12===t&&(t=0),"凌晨"===e||"早上"===e||"上午"===e?t:"中午"===e?t>=11?t:t+12:"下午"===e||"晚上"===e?t+12:void 0},meridiem:function(t,e,n){var r=100*t+e;return r<600?"凌晨":r<900?"早上":r<1200?"上午":1200===r?"中午":r<1800?"下午":"晚上"},calendar:{sameDay:"[今天]LT",nextDay:"[明天]LT",nextWeek:"[下]ddddLT",lastDay:"[昨天]LT",lastWeek:"[上]ddddLT",sameElse:"L"},dayOfMonthOrdinalParse:/\d{1,2}(日|月|週)/,ordinal:function(t,e){switch(e){case"d":case"D":case"DDD":return t+"日";case"M":return t+"月";case"w":case"W":return t+"週";default:return t}},relativeTime:{future:"%s後",past:"%s前",s:"幾秒",ss:"%d 秒",m:"1 分鐘",mm:"%d 分鐘",h:"1 小時",hh:"%d 小時",d:"1 天",dd:"%d 天",M:"1 個月",MM:"%d 個月",y:"1 年",yy:"%d 年"}});return e}))},"4a38":function(t,e,n){"use strict";n.d(e,"f",(function(){return h})),n.d(e,"d",(function(){return p})),n.d(e,"e",(function(){return m})),n.d(e,"c",(function(){return b})),n.d(e,"b",(function(){return v})),n.d(e,"a",(function(){return _}));var r=n("992e"),i=n("906c"),a=n("7b1e"),o=n("d82f"),s=n("fa73"),c="a",u=function(t){return"%"+t.charCodeAt(0).toString(16)},l=function(t){return encodeURIComponent(Object(s["g"])(t)).replace(r["j"],u).replace(r["i"],",")},d=decodeURIComponent,f=function(t){if(!Object(a["k"])(t))return"";var e=Object(o["h"])(t).map((function(e){var n=t[e];return Object(a["o"])(n)?"":Object(a["g"])(n)?l(e):Object(a["a"])(n)?n.reduce((function(t,n){return Object(a["g"])(n)?t.push(l(e)):Object(a["o"])(n)||t.push(l(e)+"="+l(n)),t}),[]).join("&"):l(e)+"="+l(n)})).filter((function(t){return t.length>0})).join("&");return e?"?".concat(e):""},h=function(t){var e={};return t=Object(s["g"])(t).trim().replace(r["u"],""),t?(t.split("&").forEach((function(t){var n=t.replace(r["t"]," ").split("="),i=d(n.shift()),o=n.length>0?d(n.join("=")):null;Object(a["o"])(e[i])?e[i]=o:Object(a["a"])(e[i])?e[i].push(o):e[i]=[e[i],o]})),e):e},p=function(t){return!(!t.href&&!t.to)},m=function(t){return!(!t||Object(i["t"])(t,"a"))},b=function(t,e){var n=t.to,r=t.disabled,i=t.routerComponentName,a=!!e.$router;return!a||a&&(r||!n)?c:i||(e.$nuxt?"nuxt-link":"router-link")},v=function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},e=t.target,n=t.rel;return"_blank"===e&&Object(a["g"])(n)?"noopener":n||null},_=function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},e=t.href,n=t.to,r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:c,i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"#",o=arguments.length>3&&void 0!==arguments[3]?arguments[3]:"/";if(e)return e;if(m(r))return null;if(Object(a["n"])(n))return n||o;if(Object(a["k"])(n)&&(n.path||n.query||n.hash)){var u=Object(s["g"])(n.path),l=f(n.query),d=Object(s["g"])(n.hash);return d=d&&"#"!==d.charAt(0)?"#".concat(d):d,"".concat(u).concat(l).concat(d)||o}return i}},"4a7b":function(t,e,n){"use strict";var r=n("c532");t.exports=function(t,e){e=e||{};var n={},i=["url","method","data"],a=["headers","auth","proxy","params"],o=["baseURL","transformRequest","transformResponse","paramsSerializer","timeout","timeoutMessage","withCredentials","adapter","responseType","xsrfCookieName","xsrfHeaderName","onUploadProgress","onDownloadProgress","decompress","maxContentLength","maxBodyLength","maxRedirects","transport","httpAgent","httpsAgent","cancelToken","socketPath","responseEncoding"],s=["validateStatus"];function c(t,e){return r.isPlainObject(t)&&r.isPlainObject(e)?r.merge(t,e):r.isPlainObject(e)?r.merge({},e):r.isArray(e)?e.slice():e}function u(i){r.isUndefined(e[i])?r.isUndefined(t[i])||(n[i]=c(void 0,t[i])):n[i]=c(t[i],e[i])}r.forEach(i,(function(t){r.isUndefined(e[t])||(n[t]=c(void 0,e[t]))})),r.forEach(a,u),r.forEach(o,(function(i){r.isUndefined(e[i])?r.isUndefined(t[i])||(n[i]=c(void 0,t[i])):n[i]=c(void 0,e[i])})),r.forEach(s,(function(r){r in e?n[r]=c(t[r],e[r]):r in t&&(n[r]=c(void 0,t[r]))}));var l=i.concat(a).concat(o).concat(s),d=Object.keys(t).concat(Object.keys(e)).filter((function(t){return-1===l.indexOf(t)}));return r.forEach(d,u),n}},"4ba9":function(t,e,n){(function(t,e){e(n("c1df"))})(0,(function(t){"use strict"; -//! moment.js locale configuration -function e(t,e,n){var r=t+" ";switch(n){case"ss":return r+=1===t?"sekunda":2===t||3===t||4===t?"sekunde":"sekundi",r;case"m":return e?"jedna minuta":"jedne minute";case"mm":return r+=1===t?"minuta":2===t||3===t||4===t?"minute":"minuta",r;case"h":return e?"jedan sat":"jednog sata";case"hh":return r+=1===t?"sat":2===t||3===t||4===t?"sata":"sati",r;case"dd":return r+=1===t?"dan":"dana",r;case"MM":return r+=1===t?"mjesec":2===t||3===t||4===t?"mjeseca":"mjeseci",r;case"yy":return r+=1===t?"godina":2===t||3===t||4===t?"godine":"godina",r}}var n=t.defineLocale("hr",{months:{format:"siječnja_veljače_ožujka_travnja_svibnja_lipnja_srpnja_kolovoza_rujna_listopada_studenoga_prosinca".split("_"),standalone:"siječanj_veljača_ožujak_travanj_svibanj_lipanj_srpanj_kolovoz_rujan_listopad_studeni_prosinac".split("_")},monthsShort:"sij._velj._ožu._tra._svi._lip._srp._kol._ruj._lis._stu._pro.".split("_"),monthsParseExact:!0,weekdays:"nedjelja_ponedjeljak_utorak_srijeda_četvrtak_petak_subota".split("_"),weekdaysShort:"ned._pon._uto._sri._čet._pet._sub.".split("_"),weekdaysMin:"ne_po_ut_sr_če_pe_su".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"Do MMMM YYYY",LLL:"Do MMMM YYYY H:mm",LLLL:"dddd, Do MMMM YYYY H:mm"},calendar:{sameDay:"[danas u] LT",nextDay:"[sutra u] LT",nextWeek:function(){switch(this.day()){case 0:return"[u] [nedjelju] [u] LT";case 3:return"[u] [srijedu] [u] LT";case 6:return"[u] [subotu] [u] LT";case 1:case 2:case 4:case 5:return"[u] dddd [u] LT"}},lastDay:"[jučer u] LT",lastWeek:function(){switch(this.day()){case 0:return"[prošlu] [nedjelju] [u] LT";case 3:return"[prošlu] [srijedu] [u] LT";case 6:return"[prošle] [subote] [u] LT";case 1:case 2:case 4:case 5:return"[prošli] dddd [u] LT"}},sameElse:"L"},relativeTime:{future:"za %s",past:"prije %s",s:"par sekundi",ss:e,m:e,mm:e,h:e,hh:e,d:"dan",dd:e,M:"mjesec",MM:e,y:"godinu",yy:e},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:7}});return n}))},"4cef":function(t,e){var n=/\s/;function r(t){var e=t.length;while(e--&&n.test(t.charAt(e)));return e}t.exports=r},"4d64":function(t,e,n){var r=n("fc6a"),i=n("50c4"),a=n("23cb"),o=function(t){return function(e,n,o){var s,c=r(e),u=i(c.length),l=a(o,u);if(t&&n!=n){while(u>l)if(s=c[l++],s!=s)return!0}else for(;u>l;l++)if((t||l in c)&&c[l]===n)return t||l||0;return!t&&-1}};t.exports={includes:o(!0),indexOf:o(!1)}},"4de4":function(t,e,n){"use strict";var r=n("23e7"),i=n("b727").filter,a=n("1dde"),o=a("filter");r({target:"Array",proto:!0,forced:!o},{filter:function(t){return i(this,t,arguments.length>1?arguments[1]:void 0)}})},"4df4":function(t,e,n){"use strict";var r=n("0366"),i=n("7b0b"),a=n("9bdd"),o=n("e95a"),s=n("50c4"),c=n("8418"),u=n("35a1");t.exports=function(t){var e,n,l,d,f,h,p=i(t),m="function"==typeof this?this:Array,b=arguments.length,v=b>1?arguments[1]:void 0,_=void 0!==v,g=u(p),y=0;if(_&&(v=r(v,b>2?arguments[2]:void 0,2)),void 0==g||m==Array&&o(g))for(e=s(p.length),n=new m(e);e>y;y++)h=_?v(p[y],y):p[y],c(n,y,h);else for(d=g.call(p),f=d.next,n=new m;!(l=f.call(d)).done;y++)h=_?a(d,v,[l.value,y],!0):l.value,c(n,y,h);return n.length=y,n}},5038:function(t,e,n){(function(t,e){e(n("c1df"))})(0,(function(t){"use strict"; -//! moment.js locale configuration -var e=t.defineLocale("id",{months:"Januari_Februari_Maret_April_Mei_Juni_Juli_Agustus_September_Oktober_November_Desember".split("_"),monthsShort:"Jan_Feb_Mar_Apr_Mei_Jun_Jul_Agt_Sep_Okt_Nov_Des".split("_"),weekdays:"Minggu_Senin_Selasa_Rabu_Kamis_Jumat_Sabtu".split("_"),weekdaysShort:"Min_Sen_Sel_Rab_Kam_Jum_Sab".split("_"),weekdaysMin:"Mg_Sn_Sl_Rb_Km_Jm_Sb".split("_"),longDateFormat:{LT:"HH.mm",LTS:"HH.mm.ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY [pukul] HH.mm",LLLL:"dddd, D MMMM YYYY [pukul] HH.mm"},meridiemParse:/pagi|siang|sore|malam/,meridiemHour:function(t,e){return 12===t&&(t=0),"pagi"===e?t:"siang"===e?t>=11?t:t+12:"sore"===e||"malam"===e?t+12:void 0},meridiem:function(t,e,n){return t<11?"pagi":t<15?"siang":t<19?"sore":"malam"},calendar:{sameDay:"[Hari ini pukul] LT",nextDay:"[Besok pukul] LT",nextWeek:"dddd [pukul] LT",lastDay:"[Kemarin pukul] LT",lastWeek:"dddd [lalu pukul] LT",sameElse:"L"},relativeTime:{future:"dalam %s",past:"%s yang lalu",s:"beberapa detik",ss:"%d detik",m:"semenit",mm:"%d menit",h:"sejam",hh:"%d jam",d:"sehari",dd:"%d hari",M:"sebulan",MM:"%d bulan",y:"setahun",yy:"%d tahun"},week:{dow:0,doy:6}});return e}))},"50c4":function(t,e,n){var r=n("a691"),i=Math.min;t.exports=function(t){return t>0?i(r(t),9007199254740991):0}},"50d3":function(t,e,n){"use strict";n.d(e,"b",(function(){return r})),n.d(e,"c",(function(){return i})),n.d(e,"a",(function(){return a}));var r="BvConfig",i="$bvConfig",a=["xs","sm","md","lg","xl"]},5120:function(t,e,n){(function(t,e){e(n("c1df"))})(0,(function(t){"use strict"; -//! moment.js locale configuration -var e=["Eanáir","Feabhra","Márta","Aibreán","Bealtaine","Meitheamh","Iúil","Lúnasa","Meán Fómhair","Deireadh Fómhair","Samhain","Nollaig"],n=["Ean","Feabh","Márt","Aib","Beal","Meith","Iúil","Lún","M.F.","D.F.","Samh","Noll"],r=["Dé Domhnaigh","Dé Luain","Dé Máirt","Dé Céadaoin","Déardaoin","Dé hAoine","Dé Sathairn"],i=["Domh","Luan","Máirt","Céad","Déar","Aoine","Sath"],a=["Do","Lu","Má","Cé","Dé","A","Sa"],o=t.defineLocale("ga",{months:e,monthsShort:n,monthsParseExact:!0,weekdays:r,weekdaysShort:i,weekdaysMin:a,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[Inniu ag] LT",nextDay:"[Amárach ag] LT",nextWeek:"dddd [ag] LT",lastDay:"[Inné ag] LT",lastWeek:"dddd [seo caite] [ag] LT",sameElse:"L"},relativeTime:{future:"i %s",past:"%s ó shin",s:"cúpla soicind",ss:"%d soicind",m:"nóiméad",mm:"%d nóiméad",h:"uair an chloig",hh:"%d uair an chloig",d:"lá",dd:"%d lá",M:"mí",MM:"%d míonna",y:"bliain",yy:"%d bliain"},dayOfMonthOrdinalParse:/\d{1,2}(d|na|mh)/,ordinal:function(t){var e=1===t?"d":t%10===2?"na":"mh";return t+e},week:{dow:1,doy:4}});return o}))},5135:function(t,e,n){var r=n("7b0b"),i={}.hasOwnProperty;t.exports=Object.hasOwn||function(t,e){return i.call(r(t),e)}},5270:function(t,e,n){"use strict";var r=n("c532"),i=n("c401"),a=n("2e67"),o=n("2444");function s(t){t.cancelToken&&t.cancelToken.throwIfRequested()}t.exports=function(t){s(t),t.headers=t.headers||{},t.data=i(t.data,t.headers,t.transformRequest),t.headers=r.merge(t.headers.common||{},t.headers[t.method]||{},t.headers),r.forEach(["delete","get","head","post","put","patch","common"],(function(e){delete t.headers[e]}));var e=t.adapter||o.adapter;return e(t).then((function(e){return s(t),e.data=i(e.data,e.headers,t.transformResponse),e}),(function(e){return a(e)||(s(t),e&&e.response&&(e.response.data=i(e.response.data,e.response.headers,t.transformResponse))),Promise.reject(e)}))}},5294:function(t,e,n){(function(t,e){e(n("c1df"))})(0,(function(t){"use strict"; -//! moment.js locale configuration -var e=["جنوری","فروری","مارچ","اپریل","مئی","جون","جولائی","اگست","ستمبر","اکتوبر","نومبر","دسمبر"],n=["اتوار","پیر","منگل","بدھ","جمعرات","جمعہ","ہفتہ"],r=t.defineLocale("ur",{months:e,monthsShort:e,weekdays:n,weekdaysShort:n,weekdaysMin:n,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd، D MMMM YYYY HH:mm"},meridiemParse:/صبح|شام/,isPM:function(t){return"شام"===t},meridiem:function(t,e,n){return t<12?"صبح":"شام"},calendar:{sameDay:"[آج بوقت] LT",nextDay:"[کل بوقت] LT",nextWeek:"dddd [بوقت] LT",lastDay:"[گذشتہ روز بوقت] LT",lastWeek:"[گذشتہ] dddd [بوقت] LT",sameElse:"L"},relativeTime:{future:"%s بعد",past:"%s قبل",s:"چند سیکنڈ",ss:"%d سیکنڈ",m:"ایک منٹ",mm:"%d منٹ",h:"ایک گھنٹہ",hh:"%d گھنٹے",d:"ایک دن",dd:"%d دن",M:"ایک ماہ",MM:"%d ماہ",y:"ایک سال",yy:"%d سال"},preparse:function(t){return t.replace(/،/g,",")},postformat:function(t){return t.replace(/,/g,"،")},week:{dow:1,doy:4}});return r}))},"52bd":function(t,e,n){(function(t,e){e(n("c1df"))})(0,(function(t){"use strict"; -//! moment.js locale configuration -var e=t.defineLocale("ss",{months:"Bhimbidvwane_Indlovana_Indlov'lenkhulu_Mabasa_Inkhwekhweti_Inhlaba_Kholwane_Ingci_Inyoni_Imphala_Lweti_Ingongoni".split("_"),monthsShort:"Bhi_Ina_Inu_Mab_Ink_Inh_Kho_Igc_Iny_Imp_Lwe_Igo".split("_"),weekdays:"Lisontfo_Umsombuluko_Lesibili_Lesitsatfu_Lesine_Lesihlanu_Umgcibelo".split("_"),weekdaysShort:"Lis_Umb_Lsb_Les_Lsi_Lsh_Umg".split("_"),weekdaysMin:"Li_Us_Lb_Lt_Ls_Lh_Ug".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"h:mm A",LTS:"h:mm:ss A",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY h:mm A",LLLL:"dddd, D MMMM YYYY h:mm A"},calendar:{sameDay:"[Namuhla nga] LT",nextDay:"[Kusasa nga] LT",nextWeek:"dddd [nga] LT",lastDay:"[Itolo nga] LT",lastWeek:"dddd [leliphelile] [nga] LT",sameElse:"L"},relativeTime:{future:"nga %s",past:"wenteka nga %s",s:"emizuzwana lomcane",ss:"%d mzuzwana",m:"umzuzu",mm:"%d emizuzu",h:"lihora",hh:"%d emahora",d:"lilanga",dd:"%d emalanga",M:"inyanga",MM:"%d tinyanga",y:"umnyaka",yy:"%d iminyaka"},meridiemParse:/ekuseni|emini|entsambama|ebusuku/,meridiem:function(t,e,n){return t<11?"ekuseni":t<15?"emini":t<19?"entsambama":"ebusuku"},meridiemHour:function(t,e){return 12===t&&(t=0),"ekuseni"===e?t:"emini"===e?t>=11?t:t+12:"entsambama"===e||"ebusuku"===e?0===t?0:t+12:void 0},dayOfMonthOrdinalParse:/\d{1,2}/,ordinal:"%d",week:{dow:1,doy:4}});return e}))},5319:function(t,e,n){"use strict";var r=n("d784"),i=n("825a"),a=n("50c4"),o=n("a691"),s=n("1d80"),c=n("8aa5"),u=n("0cb2"),l=n("14c3"),d=Math.max,f=Math.min,h=function(t){return void 0===t?t:String(t)};r("replace",2,(function(t,e,n,r){var p=r.REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE,m=r.REPLACE_KEEPS_$0,b=p?"$":"$0";return[function(n,r){var i=s(this),a=void 0==n?void 0:n[t];return void 0!==a?a.call(n,i,r):e.call(String(i),n,r)},function(t,r){if(!p&&m||"string"===typeof r&&-1===r.indexOf(b)){var s=n(e,t,this,r);if(s.done)return s.value}var v=i(t),_=String(this),g="function"===typeof r;g||(r=String(r));var y=v.global;if(y){var O=v.unicode;v.lastIndex=0}var j=[];while(1){var w=l(v,_);if(null===w)break;if(j.push(w),!y)break;var M=String(w[0]);""===M&&(v.lastIndex=c(_,a(v.lastIndex),O))}for(var L="",k=0,T=0;T=k&&(L+=_.slice(k,S)+E,k=S+D.length)}return L+_.slice(k)}]}))},"55c9":function(t,e,n){(function(t,e){e(n("c1df"))})(0,(function(t){"use strict"; -//! moment.js locale configuration -var e="ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.".split("_"),n="ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic".split("_"),r=[/^ene/i,/^feb/i,/^mar/i,/^abr/i,/^may/i,/^jun/i,/^jul/i,/^ago/i,/^sep/i,/^oct/i,/^nov/i,/^dic/i],i=/^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre|ene\.?|feb\.?|mar\.?|abr\.?|may\.?|jun\.?|jul\.?|ago\.?|sep\.?|oct\.?|nov\.?|dic\.?)/i,a=t.defineLocale("es-us",{months:"enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre".split("_"),monthsShort:function(t,r){return t?/-MMM-/.test(r)?n[t.month()]:e[t.month()]:e},monthsRegex:i,monthsShortRegex:i,monthsStrictRegex:/^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre)/i,monthsShortStrictRegex:/^(ene\.?|feb\.?|mar\.?|abr\.?|may\.?|jun\.?|jul\.?|ago\.?|sep\.?|oct\.?|nov\.?|dic\.?)/i,monthsParse:r,longMonthsParse:r,shortMonthsParse:r,weekdays:"domingo_lunes_martes_miércoles_jueves_viernes_sábado".split("_"),weekdaysShort:"dom._lun._mar._mié._jue._vie._sáb.".split("_"),weekdaysMin:"do_lu_ma_mi_ju_vi_sá".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"h:mm A",LTS:"h:mm:ss A",L:"MM/DD/YYYY",LL:"D [de] MMMM [de] YYYY",LLL:"D [de] MMMM [de] YYYY h:mm A",LLLL:"dddd, D [de] MMMM [de] YYYY h:mm A"},calendar:{sameDay:function(){return"[hoy a la"+(1!==this.hours()?"s":"")+"] LT"},nextDay:function(){return"[mañana a la"+(1!==this.hours()?"s":"")+"] LT"},nextWeek:function(){return"dddd [a la"+(1!==this.hours()?"s":"")+"] LT"},lastDay:function(){return"[ayer a la"+(1!==this.hours()?"s":"")+"] LT"},lastWeek:function(){return"[el] dddd [pasado a la"+(1!==this.hours()?"s":"")+"] LT"},sameElse:"L"},relativeTime:{future:"en %s",past:"hace %s",s:"unos segundos",ss:"%d segundos",m:"un minuto",mm:"%d minutos",h:"una hora",hh:"%d horas",d:"un día",dd:"%d días",w:"una semana",ww:"%d semanas",M:"un mes",MM:"%d meses",y:"un año",yy:"%d años"},dayOfMonthOrdinalParse:/\d{1,2}º/,ordinal:"%dº",week:{dow:0,doy:6}});return a}))},5692:function(t,e,n){var r=n("c430"),i=n("c6cd");(t.exports=function(t,e){return i[t]||(i[t]=void 0!==e?e:{})})("versions",[]).push({version:"3.14.0",mode:r?"pure":"global",copyright:"© 2021 Denis Pushkarev (zloirock.ru)"})},"56ef":function(t,e,n){var r=n("d066"),i=n("241c"),a=n("7418"),o=n("825a");t.exports=r("Reflect","ownKeys")||function(t){var e=i.f(o(t)),n=a.f;return n?e.concat(n(t)):e}},"576c":function(t,e,n){(function(t,e){e(n("c1df"))})(0,(function(t){"use strict"; -//! moment.js locale configuration -var e=t.defineLocale("tet",{months:"Janeiru_Fevereiru_Marsu_Abril_Maiu_Juñu_Jullu_Agustu_Setembru_Outubru_Novembru_Dezembru".split("_"),monthsShort:"Jan_Fev_Mar_Abr_Mai_Jun_Jul_Ago_Set_Out_Nov_Dez".split("_"),weekdays:"Domingu_Segunda_Tersa_Kuarta_Kinta_Sesta_Sabadu".split("_"),weekdaysShort:"Dom_Seg_Ters_Kua_Kint_Sest_Sab".split("_"),weekdaysMin:"Do_Seg_Te_Ku_Ki_Ses_Sa".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[Ohin iha] LT",nextDay:"[Aban iha] LT",nextWeek:"dddd [iha] LT",lastDay:"[Horiseik iha] LT",lastWeek:"dddd [semana kotuk] [iha] LT",sameElse:"L"},relativeTime:{future:"iha %s",past:"%s liuba",s:"segundu balun",ss:"segundu %d",m:"minutu ida",mm:"minutu %d",h:"oras ida",hh:"oras %d",d:"loron ida",dd:"loron %d",M:"fulan ida",MM:"fulan %d",y:"tinan ida",yy:"tinan %d"},dayOfMonthOrdinalParse:/\d{1,2}(st|nd|rd|th)/,ordinal:function(t){var e=t%10,n=1===~~(t%100/10)?"th":1===e?"st":2===e?"nd":3===e?"rd":"th";return t+n},week:{dow:1,doy:4}});return e}))},"585a":function(t,e,n){(function(e){var n="object"==typeof e&&e&&e.Object===Object&&e;t.exports=n}).call(this,n("c8ba"))},5899:function(t,e){t.exports="\t\n\v\f\r                 \u2028\u2029\ufeff"},"58a8":function(t,e,n){var r=n("1d80"),i=n("5899"),a="["+i+"]",o=RegExp("^"+a+a+"*"),s=RegExp(a+a+"*$"),c=function(t){return function(e){var n=String(r(e));return 1&t&&(n=n.replace(o,"")),2&t&&(n=n.replace(s,"")),n}};t.exports={start:c(1),end:c(2),trim:c(3)}},"58f2":function(t,e,n){"use strict";n.d(e,"a",(function(){return c}));var r=n("a026"),i=n("0056"),a=n("a723"),o=n("cf75");function s(t,e,n){return e in t?Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,t}var c=function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=e.type,c=void 0===n?a["a"]:n,u=e.defaultValue,l=void 0===u?void 0:u,d=e.validator,f=void 0===d?void 0:d,h=e.event,p=void 0===h?i["y"]:h,m=s({},t,Object(o["c"])(c,l,f)),b=r["default"].extend({model:{prop:t,event:p},props:m});return{mixin:b,props:m,prop:t,event:p}}},"598a":function(t,e,n){(function(t,e){e(n("c1df"))})(0,(function(t){"use strict"; -//! moment.js locale configuration -var e=["ޖެނުއަރީ","ފެބްރުއަރީ","މާރިޗު","އޭޕްރީލު","މޭ","ޖޫން","ޖުލައި","އޯގަސްޓު","ސެޕްޓެމްބަރު","އޮކްޓޯބަރު","ނޮވެމްބަރު","ޑިސެމްބަރު"],n=["އާދިއްތަ","ހޯމަ","އަންގާރަ","ބުދަ","ބުރާސްފަތި","ހުކުރު","ހޮނިހިރު"],r=t.defineLocale("dv",{months:e,monthsShort:e,weekdays:n,weekdaysShort:n,weekdaysMin:"އާދި_ހޯމަ_އަން_ބުދަ_ބުރާ_ހުކު_ހޮނި".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"D/M/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},meridiemParse:/މކ|މފ/,isPM:function(t){return"މފ"===t},meridiem:function(t,e,n){return t<12?"މކ":"މފ"},calendar:{sameDay:"[މިއަދު] LT",nextDay:"[މާދަމާ] LT",nextWeek:"dddd LT",lastDay:"[އިއްޔެ] LT",lastWeek:"[ފާއިތުވި] dddd LT",sameElse:"L"},relativeTime:{future:"ތެރޭގައި %s",past:"ކުރިން %s",s:"ސިކުންތުކޮޅެއް",ss:"d% ސިކުންތު",m:"މިނިޓެއް",mm:"މިނިޓު %d",h:"ގަޑިއިރެއް",hh:"ގަޑިއިރު %d",d:"ދުވަހެއް",dd:"ދުވަސް %d",M:"މަހެއް",MM:"މަސް %d",y:"އަހަރެއް",yy:"އަހަރު %d"},preparse:function(t){return t.replace(/،/g,",")},postformat:function(t){return t.replace(/,/g,"،")},week:{dow:7,doy:12}});return r}))},"59e4":function(t,e,n){"use strict";n.d(e,"b",(function(){return I})),n.d(e,"a",(function(){return B}));var r,i=n("2b88"),a=n("a026"),o=n("2f79"),s=n("c637"),c=n("0056"),u=n("a723"),l=n("9b76"),d=n("6d40"),f=n("906c"),h=n("6b77"),p=n("a8c8"),m=n("58f2"),b=n("3a58"),v=n("d82f"),_=n("cf75"),g=n("4a38"),y=n("493b"),O=n("90ef"),j=n("602d"),w=n("8c18"),M=n("8d32"),L=n("f29e"),k=n("aa59"),T=n("ce2a"),D=n("0f65");function S(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);e&&(r=r.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),n.push.apply(n,r)}return n}function Y(t){for(var e=1;e1&&void 0!==arguments[1]?arguments[1]:{};return new d["a"](t,Y(Y({cancelable:!1,target:this.$el||null,relatedTarget:null},e),{},{vueTarget:this,componentId:this.safeId()}))},emitEvent:function(t){var e=t.type;this.emitOnRoot(Object(h["e"])(s["pc"],e),t),this.$emit(e,t)},ensureToaster:function(){if(!this.static){var t=this.computedToaster;if(!i["Wormhole"].hasTarget(t)){var e=document.createElement("div");document.body.appendChild(e);var n=new D["a"]({parent:this.$root,propsData:{name:t}});n.$mount(e)}}},startDismissTimer:function(){this.clearDismissTimer(),this.noAutoHide||(this.$_dismissTimer=setTimeout(this.hide,this.resumeDismiss||this.computedDuration),this.dismissStarted=Date.now(),this.resumeDismiss=0)},clearDismissTimer:function(){clearTimeout(this.$_dismissTimer),this.$_dismissTimer=null},setHoverHandler:function(t){var e=this.$refs["b-toast"];Object(h["c"])(t,e,"mouseenter",this.onPause,c["cb"]),Object(h["c"])(t,e,"mouseleave",this.onUnPause,c["cb"])},onPause:function(){if(!this.noAutoHide&&!this.noHoverPause&&this.$_dismissTimer&&!this.resumeDismiss){var t=Date.now()-this.dismissStarted;t>0&&(this.clearDismissTimer(),this.resumeDismiss=Object(p["d"])(this.computedDuration-t,$))}},onUnPause:function(){this.noAutoHide||this.noHoverPause||!this.resumeDismiss?this.resumeDismiss=this.dismissStarted=0:this.startDismissTimer()},onLinkClick:function(){var t=this;this.$nextTick((function(){Object(f["D"])((function(){t.hide()}))}))},onBeforeEnter:function(){this.isTransitioning=!0},onAfterEnter:function(){this.isTransitioning=!1;var t=this.buildEvent(c["U"]);this.emitEvent(t),this.startDismissTimer(),this.setHoverHandler(!0)},onBeforeLeave:function(){this.isTransitioning=!0},onAfterLeave:function(){this.isTransitioning=!1,this.order=0,this.resumeDismiss=this.dismissStarted=0;var t=this.buildEvent(c["v"]);this.emitEvent(t),this.doRender=!1},makeToast:function(t){var e=this,n=this.title,r=this.slotScope,i=Object(g["d"])(this),a=[],s=this.normalizeSlot(l["jb"],r);s?a.push(s):n&&a.push(t("strong",{staticClass:"mr-2"},n)),this.noCloseButton||a.push(t(L["a"],{staticClass:"ml-auto mb-1",on:{click:function(){e.hide()}}}));var c=t();a.length>0&&(c=t("header",{staticClass:"toast-header",class:this.headerClass},a));var u=t(i?k["a"]:"div",{staticClass:"toast-body",class:this.bodyClass,props:i?Object(_["e"])(F,this):{},on:i?{click:this.onLinkClick}:{}},this.normalizeSlot(l["i"],r));return t("div",{staticClass:"toast",class:this.toastClass,attrs:this.computedAttrs,key:"toast-".concat(this[o["a"]]),ref:"toast"},[c,u])}},render:function(t){if(!this.doRender||!this.isMounted)return t();var e=this.order,n=this.static,r=this.isHiding,a=this.isStatus,s="b-toast-".concat(this[o["a"]]),c=t("div",{staticClass:"b-toast",class:this.toastClasses,attrs:Y(Y({},n?{}:this.scopedStyleAttrs),{},{id:this.safeId("_toast_outer"),role:r?null:a?"status":"alert","aria-live":r?null:a?"polite":"assertive","aria-atomic":r?null:"true"}),key:s,ref:"b-toast"},[t(T["a"],{props:{noFade:this.noFade},on:this.transitionHandlers},[this.localShow?this.makeToast(t):t()])]);return t(i["Portal"],{props:{name:s,to:this.computedToaster,order:e,slim:!0,disabled:n}},[c])}})},"5a34":function(t,e,n){var r=n("44e7");t.exports=function(t){if(r(t))throw TypeError("The method doesn't accept regular expressions");return t}},"5aff":function(t,e,n){(function(t,e){e(n("c1df"))})(0,(function(t){"use strict"; -//! moment.js locale configuration -var e={1:"'inji",5:"'inji",8:"'inji",70:"'inji",80:"'inji",2:"'nji",7:"'nji",20:"'nji",50:"'nji",3:"'ünji",4:"'ünji",100:"'ünji",6:"'njy",9:"'unjy",10:"'unjy",30:"'unjy",60:"'ynjy",90:"'ynjy"},n=t.defineLocale("tk",{months:"Ýanwar_Fewral_Mart_Aprel_Maý_Iýun_Iýul_Awgust_Sentýabr_Oktýabr_Noýabr_Dekabr".split("_"),monthsShort:"Ýan_Few_Mar_Apr_Maý_Iýn_Iýl_Awg_Sen_Okt_Noý_Dek".split("_"),weekdays:"Ýekşenbe_Duşenbe_Sişenbe_Çarşenbe_Penşenbe_Anna_Şenbe".split("_"),weekdaysShort:"Ýek_Duş_Siş_Çar_Pen_Ann_Şen".split("_"),weekdaysMin:"Ýk_Dş_Sş_Çr_Pn_An_Şn".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[bugün sagat] LT",nextDay:"[ertir sagat] LT",nextWeek:"[indiki] dddd [sagat] LT",lastDay:"[düýn] LT",lastWeek:"[geçen] dddd [sagat] LT",sameElse:"L"},relativeTime:{future:"%s soň",past:"%s öň",s:"birnäçe sekunt",m:"bir minut",mm:"%d minut",h:"bir sagat",hh:"%d sagat",d:"bir gün",dd:"%d gün",M:"bir aý",MM:"%d aý",y:"bir ýyl",yy:"%d ýyl"},ordinal:function(t,n){switch(n){case"d":case"D":case"Do":case"DD":return t;default:if(0===t)return t+"'unjy";var r=t%10,i=t%100-r,a=t>=100?100:null;return t+(e[r]||e[i]||e[a])}},week:{dow:1,doy:7}});return n}))},"5b14":function(t,e,n){(function(t,e){e(n("c1df"))})(0,(function(t){"use strict"; -//! moment.js locale configuration -var e="vasárnap hétfőn kedden szerdán csütörtökön pénteken szombaton".split(" ");function n(t,e,n,r){var i=t;switch(n){case"s":return r||e?"néhány másodperc":"néhány másodperce";case"ss":return i+(r||e)?" másodperc":" másodperce";case"m":return"egy"+(r||e?" perc":" perce");case"mm":return i+(r||e?" perc":" perce");case"h":return"egy"+(r||e?" óra":" órája");case"hh":return i+(r||e?" óra":" órája");case"d":return"egy"+(r||e?" nap":" napja");case"dd":return i+(r||e?" nap":" napja");case"M":return"egy"+(r||e?" hónap":" hónapja");case"MM":return i+(r||e?" hónap":" hónapja");case"y":return"egy"+(r||e?" év":" éve");case"yy":return i+(r||e?" év":" éve")}return""}function r(t){return(t?"":"[múlt] ")+"["+e[this.day()]+"] LT[-kor]"}var i=t.defineLocale("hu",{months:"január_február_március_április_május_június_július_augusztus_szeptember_október_november_december".split("_"),monthsShort:"jan._feb._márc._ápr._máj._jún._júl._aug._szept._okt._nov._dec.".split("_"),monthsParseExact:!0,weekdays:"vasárnap_hétfő_kedd_szerda_csütörtök_péntek_szombat".split("_"),weekdaysShort:"vas_hét_kedd_sze_csüt_pén_szo".split("_"),weekdaysMin:"v_h_k_sze_cs_p_szo".split("_"),longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"YYYY.MM.DD.",LL:"YYYY. MMMM D.",LLL:"YYYY. MMMM D. H:mm",LLLL:"YYYY. MMMM D., dddd H:mm"},meridiemParse:/de|du/i,isPM:function(t){return"u"===t.charAt(1).toLowerCase()},meridiem:function(t,e,n){return t<12?!0===n?"de":"DE":!0===n?"du":"DU"},calendar:{sameDay:"[ma] LT[-kor]",nextDay:"[holnap] LT[-kor]",nextWeek:function(){return r.call(this,!0)},lastDay:"[tegnap] LT[-kor]",lastWeek:function(){return r.call(this,!1)},sameElse:"L"},relativeTime:{future:"%s múlva",past:"%s",s:n,ss:n,m:n,mm:n,h:n,hh:n,d:n,dd:n,M:n,MM:n,y:n,yy:n},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}});return i}))},"5c3a":function(t,e,n){(function(t,e){e(n("c1df"))})(0,(function(t){"use strict"; -//! moment.js locale configuration -var e=t.defineLocale("zh-cn",{months:"一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月".split("_"),monthsShort:"1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月".split("_"),weekdays:"星期日_星期一_星期二_星期三_星期四_星期五_星期六".split("_"),weekdaysShort:"周日_周一_周二_周三_周四_周五_周六".split("_"),weekdaysMin:"日_一_二_三_四_五_六".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY/MM/DD",LL:"YYYY年M月D日",LLL:"YYYY年M月D日Ah点mm分",LLLL:"YYYY年M月D日ddddAh点mm分",l:"YYYY/M/D",ll:"YYYY年M月D日",lll:"YYYY年M月D日 HH:mm",llll:"YYYY年M月D日dddd HH:mm"},meridiemParse:/凌晨|早上|上午|中午|下午|晚上/,meridiemHour:function(t,e){return 12===t&&(t=0),"凌晨"===e||"早上"===e||"上午"===e?t:"下午"===e||"晚上"===e?t+12:t>=11?t:t+12},meridiem:function(t,e,n){var r=100*t+e;return r<600?"凌晨":r<900?"早上":r<1130?"上午":r<1230?"中午":r<1800?"下午":"晚上"},calendar:{sameDay:"[今天]LT",nextDay:"[明天]LT",nextWeek:function(t){return t.week()!==this.week()?"[下]dddLT":"[本]dddLT"},lastDay:"[昨天]LT",lastWeek:function(t){return this.week()!==t.week()?"[上]dddLT":"[本]dddLT"},sameElse:"L"},dayOfMonthOrdinalParse:/\d{1,2}(日|月|周)/,ordinal:function(t,e){switch(e){case"d":case"D":case"DDD":return t+"日";case"M":return t+"月";case"w":case"W":return t+"周";default:return t}},relativeTime:{future:"%s后",past:"%s前",s:"几秒",ss:"%d 秒",m:"1 分钟",mm:"%d 分钟",h:"1 小时",hh:"%d 小时",d:"1 天",dd:"%d 天",w:"1 周",ww:"%d 周",M:"1 个月",MM:"%d 个月",y:"1 年",yy:"%d 年"},week:{dow:1,doy:4}});return e}))},"5c6c":function(t,e){t.exports=function(t,e){return{enumerable:!(1&t),configurable:!(2&t),writable:!(4&t),value:e}}},"5cbb":function(t,e,n){(function(t,e){e(n("c1df"))})(0,(function(t){"use strict"; -//! moment.js locale configuration -var e=t.defineLocale("te",{months:"జనవరి_ఫిబ్రవరి_మార్చి_ఏప్రిల్_మే_జూన్_జులై_ఆగస్టు_సెప్టెంబర్_అక్టోబర్_నవంబర్_డిసెంబర్".split("_"),monthsShort:"జన._ఫిబ్ర._మార్చి_ఏప్రి._మే_జూన్_జులై_ఆగ._సెప్._అక్టో._నవ._డిసె.".split("_"),monthsParseExact:!0,weekdays:"ఆదివారం_సోమవారం_మంగళవారం_బుధవారం_గురువారం_శుక్రవారం_శనివారం".split("_"),weekdaysShort:"ఆది_సోమ_మంగళ_బుధ_గురు_శుక్ర_శని".split("_"),weekdaysMin:"ఆ_సో_మం_బు_గు_శు_శ".split("_"),longDateFormat:{LT:"A h:mm",LTS:"A h:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, A h:mm",LLLL:"dddd, D MMMM YYYY, A h:mm"},calendar:{sameDay:"[నేడు] LT",nextDay:"[రేపు] LT",nextWeek:"dddd, LT",lastDay:"[నిన్న] LT",lastWeek:"[గత] dddd, LT",sameElse:"L"},relativeTime:{future:"%s లో",past:"%s క్రితం",s:"కొన్ని క్షణాలు",ss:"%d సెకన్లు",m:"ఒక నిమిషం",mm:"%d నిమిషాలు",h:"ఒక గంట",hh:"%d గంటలు",d:"ఒక రోజు",dd:"%d రోజులు",M:"ఒక నెల",MM:"%d నెలలు",y:"ఒక సంవత్సరం",yy:"%d సంవత్సరాలు"},dayOfMonthOrdinalParse:/\d{1,2}వ/,ordinal:"%dవ",meridiemParse:/రాత్రి|ఉదయం|మధ్యాహ్నం|సాయంత్రం/,meridiemHour:function(t,e){return 12===t&&(t=0),"రాత్రి"===e?t<4?t:t+12:"ఉదయం"===e?t:"మధ్యాహ్నం"===e?t>=10?t:t+12:"సాయంత్రం"===e?t+12:void 0},meridiem:function(t,e,n){return t<4?"రాత్రి":t<10?"ఉదయం":t<17?"మధ్యాహ్నం":t<20?"సాయంత్రం":"రాత్రి"},week:{dow:0,doy:6}});return e}))},"5f02":function(t,e,n){"use strict";t.exports=function(t){return"object"===typeof t&&!0===t.isAxiosError}},"5f5b":function(t,e,n){"use strict";n.d(e,"a",(function(){return _M}));var r=n("a026"),i=n("e863"),a=n("50d3"),o=n("c9a9"),s=n("992e"),c=n("6c06"),u=n("7b1e"),l=function(t,e){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:void 0;if(e=Object(u["a"])(e)?e.join("."):e,!e||!Object(u["j"])(t))return n;if(e in t)return t[e];e=String(e).replace(s["a"],".$1");var r=e.split(".").filter(c["a"]);return 0===r.length?n:r.every((function(e){return Object(u["j"])(t)&&e in t&&!Object(u["p"])(t=t[e])}))?t:Object(u["g"])(t)?null:n},d=function(t,e){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null,r=l(t,e);return Object(u["p"])(r)?n:r},f=n("d82f"),h=n("686b");function p(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function m(t,e){for(var n=0;n0&&void 0!==arguments[0]?arguments[0]:{};if(Object(u["k"])(e)){var n=Object(f["f"])(e);n.forEach((function(n){var r=e[n];"breakpoints"===n?!Object(u["a"])(r)||r.length<2||r.some((function(t){return!Object(u["n"])(t)||0===t.length}))?Object(h["a"])('"breakpoints" must be an array of at least 2 breakpoint names',a["b"]):t.$_config[n]=Object(o["a"])(r):Object(u["k"])(r)&&(t.$_config[n]=Object(f["f"])(r).reduce((function(t,e){return Object(u["o"])(r[e])||(t[e]=Object(o["a"])(r[e])),t}),t.$_config[n]||{}))}))}}},{key:"resetConfig",value:function(){this.$_config={}}},{key:"getConfig",value:function(){return Object(o["a"])(this.$_config)}},{key:"getConfigValue",value:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:void 0;return Object(o["a"])(l(this.$_config,t,e))}}]),t}(),_=function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:r["default"];e.prototype[a["c"]]=r["default"].prototype[a["c"]]=e.prototype[a["c"]]||r["default"].prototype[a["c"]]||new v,e.prototype[a["c"]].setConfig(t)};function g(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);e&&(r=r.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),n.push.apply(n,r)}return n}function y(t){for(var e=1;e0&&void 0!==arguments[0]?arguments[0]:{},e=t.components,n=t.directives,r=t.plugins,i=function t(i){var a=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};t.installed||(t.installed=!0,w(i),_(a,i),D(i,e),Y(i,n),k(i,r))};return i.installed=!1,i},L=function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return y(y({},e),{},{install:M(t)})},k=function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};for(var n in e)n&&e[n]&&t.use(e[n])},T=function(t,e,n){t&&e&&n&&t.component(e,n)},D=function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};for(var n in e)T(t,n,e[n])},S=function(t,e,n){t&&e&&n&&t.directive(e.replace(/^VB/,"B"),n)},Y=function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};for(var n in e)S(t,n,e[n])},x=n("2f79"),P=n("c637"),C=n("0056"),E=n("a723"),H=n("9b76"),A=n("906c"),$=n("58f2"),F=n("3a58"),I=n("cf75"),B=n("8c18"),R=n("f29e"),N=n("ce2a");function V(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);e&&(r=r.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),n.push.apply(n,r)}return n}function z(t){for(var e=1;e0?t:0)},Z=function(t){return""===t||!0===t||!(Object(F["c"])(t,0)<1)&&!!t},Q=Object(I["d"])(Object(f["m"])(z(z({},J),{},{dismissLabel:Object(I["c"])(E["u"],"Close"),dismissible:Object(I["c"])(E["g"],!1),fade:Object(I["c"])(E["g"],!1),variant:Object(I["c"])(E["u"],"info")})),P["a"]),tt=r["default"].extend({name:P["a"],mixins:[G,B["a"]],props:Q,data:function(){return{countDown:0,localShow:Z(this[q])}},watch:(j={},W(j,q,(function(t){this.countDown=X(t),this.localShow=Z(t)})),W(j,"countDown",(function(t){var e=this;this.clearCountDownInterval();var n=this[q];Object(u["i"])(n)&&(this.$emit(C["n"],t),n!==t&&this.$emit(K,t),t>0?(this.localShow=!0,this.$_countDownTimeout=setTimeout((function(){e.countDown--}),1e3)):this.$nextTick((function(){Object(A["D"])((function(){e.localShow=!1}))})))})),W(j,"localShow",(function(t){var e=this[q];t||!this.dismissible&&!Object(u["i"])(e)||this.$emit(C["m"]),Object(u["i"])(e)||e===t||this.$emit(K,t)})),j),created:function(){this.$_filterTimer=null;var t=this[q];this.countDown=X(t),this.localShow=Z(t)},beforeDestroy:function(){this.clearCountDownInterval()},methods:{dismiss:function(){this.clearCountDownInterval(),this.countDown=0,this.localShow=!1},clearCountDownInterval:function(){clearTimeout(this.$_countDownTimeout),this.$_countDownTimeout=null}},render:function(t){var e=t();if(this.localShow){var n=this.dismissible,r=this.variant,i=t();n&&(i=t(R["a"],{attrs:{"aria-label":this.dismissLabel},on:{click:this.dismiss}},[this.normalizeSlot(H["k"])])),e=t("div",{staticClass:"alert",class:W({"alert-dismissible":n},"alert-".concat(r),r),attrs:{role:"alert","aria-live":"polite","aria-atomic":!0},key:this[x["a"]]},[i,this.normalizeSlot()])}return t(N["a"],{props:{noFade:!this.fade}},[e])}}),et=L({components:{BAlert:tt}}),nt=n("a8c8");function rt(t,e){return ct(t)||st(t,e)||at(t,e)||it()}function it(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function at(t,e){if(t){if("string"===typeof t)return ot(t,e);var n=Object.prototype.toString.call(t).slice(8,-1);return"Object"===n&&t.constructor&&(n=t.constructor.name),"Map"===n||"Set"===n?Array.from(t):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?ot(t,e):void 0}}function ot(t,e){(null==e||e>t.length)&&(e=t.length);for(var n=0,r=new Array(e);n'),Tt=Mt("CalendarFill",''),Dt=Mt("ChevronBarLeft",''),St=Mt("ChevronDoubleLeft",''),Yt=Mt("ChevronDown",''),xt=Mt("ChevronLeft",''),Pt=Mt("ChevronUp",''),Ct=Mt("CircleFill",''),Et=Mt("Clock",''),Ht=Mt("ClockFill",''),At=Mt("Dash",''),$t=Mt("PersonFill",''),Ft=Mt("Plus",''),It=Mt("Star",''),Bt=Mt("StarFill",''),Rt=Mt("StarHalf",''),Nt=Mt("X",''); -/*! - * BootstrapVue Icons, generated from Bootstrap Icons 1.2.2 - * - * @link https://icons.getbootstrap.com/ - * @license MIT - * https://github.com/twbs/icons/blob/master/LICENSE.md - */function Vt(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);e&&(r=r.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),n.push.apply(n,r)}return n}function zt(t){for(var e=1;e0&&void 0!==arguments[0]?arguments[0]:"";return String(t).replace(s["o"],"")},Je=function(t,e){return t?{innerHTML:t}:e?{textContent:e}:{}};function qe(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);e&&(r=r.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),n.push.apply(n,r)}return n}function Ke(t){for(var e=1;e-1&&(e=e.slice(0,n).reverse(),Object(A["d"])(e[0]))},focusNext:function(t){var e=this.getItems(),n=e.indexOf(t.target);n>-1&&(e=e.slice(n+1),Object(A["d"])(e[0]))},focusLast:function(){var t=this.getItems().reverse();Object(A["d"])(t[0])},onFocusin:function(t){var e=this.$el;t.target!==e||Object(A["f"])(e,t.relatedTarget)||(Object(le["f"])(t),this.focusFirst(t))},onKeydown:function(t){var e=t.keyCode,n=t.shiftKey;e===ce||e===re?(Object(le["f"])(t),n?this.focusFirst(t):this.focusPrev(t)):e!==Zt&&e!==oe||(Object(le["f"])(t),n?this.focusLast(t):this.focusNext(t))}},render:function(t){var e=this.keyNav;return t("div",{staticClass:"btn-toolbar",class:{"justify-content-between":this.justify},attrs:{role:"toolbar",tabindex:e?"0":null},on:e?{focusin:this.onFocusin,keydown:this.onKeydown}:{}},[this.normalizeSlot()])}}),gn=L({components:{BButtonToolbar:_n,BBtnToolbar:_n}}),yn="gregory",On="long",jn="narrow",wn="short",Mn="2-digit",Ln="numeric";function kn(t,e){return xn(t)||Yn(t,e)||Dn(t,e)||Tn()}function Tn(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function Dn(t,e){if(t){if("string"===typeof t)return Sn(t,e);var n=Object.prototype.toString.call(t).slice(8,-1);return"Object"===n&&t.constructor&&(n=t.constructor.name),"Map"===n||"Set"===n?Array.from(t):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?Sn(t,e):void 0}}function Sn(t,e){(null==e||e>t.length)&&(e=t.length);for(var n=0,r=new Array(e);n1&&void 0!==arguments[1]?arguments[1]:yn;t=Object(ue["b"])(t).filter(c["a"]);var n=new Intl.DateTimeFormat(t,{calendar:e});return n.resolvedOptions().locale},Bn=function(t,e){var n=new Intl.DateTimeFormat(t,e);return n.format},Rn=function(t,e){return Fn(t)===Fn(e)},Nn=function(t){return t=An(t),t.setDate(1),t},Vn=function(t){return t=An(t),t.setMonth(t.getMonth()+1),t.setDate(0),t},zn=function(t,e){t=An(t);var n=t.getMonth();return t.setFullYear(t.getFullYear()+e),t.getMonth()!==n&&t.setDate(0),t},Wn=function(t){t=An(t);var e=t.getMonth();return t.setMonth(e-1),t.getMonth()===e&&t.setDate(0),t},Un=function(t){t=An(t);var e=t.getMonth();return t.setMonth(e+1),t.getMonth()===(e+2)%12&&t.setDate(0),t},Gn=function(t){return zn(t,-1)},Jn=function(t){return zn(t,1)},qn=function(t){return zn(t,-10)},Kn=function(t){return zn(t,10)},Xn=function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null,n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null;return t=$n(t),e=$n(e)||t,n=$n(n)||t,t?tn?n:t:null},Zn=["ar","az","ckb","fa","he","ks","lrc","mzn","ps","sd","te","ug","ur","yi"].map((function(t){return t.toLowerCase()})),Qn=function(t){var e=Object(mt["g"])(t).toLowerCase().replace(s["A"],"").split("-"),n=e.slice(0,2).join("-"),r=e[0];return Object(ue["a"])(Zn,n)||Object(ue["a"])(Zn,r)},tr=n("3c21"),er=n("493b"),nr=n("90ef");function rr(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);e&&(r=r.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),n.push.apply(n,r)}return n}function ir(t){for(var e=1;ee}},dateDisabled:function(){var t=this,e=this.dateOutOfRange;return function(n){n=$n(n);var r=Fn(n);return!(!e(n)&&!t.computedDateDisabledFn(r,n))}},formatDateString:function(){return Bn(this.calendarLocale,ir(ir({year:Ln,month:Mn,day:Mn},this.dateFormatOptions),{},{hour:void 0,minute:void 0,second:void 0,calendar:yn}))},formatYearMonth:function(){return Bn(this.calendarLocale,{year:Ln,month:On,calendar:yn})},formatWeekdayName:function(){return Bn(this.calendarLocale,{weekday:On,calendar:yn})},formatWeekdayNameShort:function(){return Bn(this.calendarLocale,{weekday:this.weekdayHeaderFormat||wn,calendar:yn})},formatDay:function(){var t=new Intl.NumberFormat([this.computedLocale],{style:"decimal",minimumIntegerDigits:1,minimumFractionDigits:0,maximumFractionDigits:0,notation:"standard"});return function(e){return t.format(e.getDate())}},prevDecadeDisabled:function(){var t=this.computedMin;return this.disabled||t&&Vn(qn(this.activeDate))t},nextYearDisabled:function(){var t=this.computedMax;return this.disabled||t&&Nn(Jn(this.activeDate))>t},nextDecadeDisabled:function(){var t=this.computedMax;return this.disabled||t&&Nn(Kn(this.activeDate))>t},calendar:function(){for(var t=[],e=this.calendarFirstDay,n=e.getFullYear(),r=e.getMonth(),i=this.calendarDaysInMonth,a=e.getDay(),o=(this.computedWeekStarts>a?7:0)-this.computedWeekStarts,s=0-o-a,c=0;c<6&&s0);n!==this.visible&&(this.visible=n,this.callback(n),this.once&&this.visible&&(this.doneOnce=!0,this.stop()))}},{key:"stop",value:function(){this.observer&&this.observer.disconnect(),this.observer=null}}]),t}(),ri=function(t){var e=t[ei];e&&e.stop&&e.stop(),delete t[ei]},ii=function(t,e,n){var r=e.value,i=e.modifiers,a={margin:"0px",once:!1,callback:r};Object(f["h"])(i).forEach((function(t){s["h"].test(t)?a.margin="".concat(t,"px"):"once"===t.toLowerCase()&&(a.once=!0)})),ri(t),t[ei]=new ni(t,a,n),t[ei]._prevModifiers=Object(f["b"])(i)},ai=function(t,e,n){var r=e.value,i=e.oldValue,a=e.modifiers;a=Object(f["b"])(a),!t||r===i&&t[ei]&&Object(tr["a"])(a,t[ei]._prevModifiers)||ii(t,{value:r,modifiers:a},n)},oi=function(t){ri(t)},si={bind:ii,componentUpdated:ai,unbind:oi};function ci(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);e&&(r=r.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),n.push.apply(n,r)}return n}function ui(t){for(var e=1;e0||i.removedNodes.length>0))&&(n=!0)}n&&e()}));return r.observe(t,Di({childList:!0,subtree:!0},n)),r};function Pi(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);e&&(r=r.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),n.push.apply(n,r)}return n}function Ci(t){for(var e=1;e0),touchStartX:0,touchDeltaX:0}},computed:{numSlides:function(){return this.slides.length}},watch:(Yi={},Ei(Yi,Fi,(function(t,e){t!==e&&this.setSlide(Object(F["c"])(t,0))})),Ei(Yi,"interval",(function(t,e){t!==e&&(t?(this.pause(!0),this.start(!1)):this.pause(!1))})),Ei(Yi,"isPaused",(function(t,e){t!==e&&this.$emit(t?C["G"]:C["ab"])})),Ei(Yi,"index",(function(t,e){t===e||this.isSliding||this.doSlide(t,e)})),Yi),created:function(){this.$_interval=null,this.$_animationTimeout=null,this.$_touchTimeout=null,this.$_observer=null,this.isPaused=!(Object(F["c"])(this.interval,0)>0)},mounted:function(){this.transitionEndEvent=Ui(this.$el)||null,this.updateSlides(),this.setObserver(!0)},beforeDestroy:function(){this.clearInterval(),this.clearAnimationTimeout(),this.clearTouchTimeout(),this.setObserver(!1)},methods:{clearInterval:function(t){function e(){return t.apply(this,arguments)}return e.toString=function(){return t.toString()},e}((function(){clearInterval(this.$_interval),this.$_interval=null})),clearAnimationTimeout:function(){clearTimeout(this.$_animationTimeout),this.$_animationTimeout=null},clearTouchTimeout:function(){clearTimeout(this.$_touchTimeout),this.$_touchTimeout=null},setObserver:function(){var t=arguments.length>0&&void 0!==arguments[0]&&arguments[0];this.$_observer&&this.$_observer.disconnect(),this.$_observer=null,t&&(this.$_observer=xi(this.$refs.inner,this.updateSlides.bind(this),{subtree:!1,childList:!0,attributes:!0,attributeFilter:["id"]}))},setSlide:function(t){var e=this,n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null;if(!(i["i"]&&document.visibilityState&&document.hidden)){var r=this.noWrap,a=this.numSlides;t=Object(nt["c"])(t),0!==a&&(this.isSliding?this.$once(C["V"],(function(){Object(A["D"])((function(){return e.setSlide(t,n)}))})):(this.direction=n,this.index=t>=a?r?a-1:0:t<0?r?0:a-1:t,r&&this.index!==t&&this.index!==this[Fi]&&this.$emit(Ii,this.index)))}},prev:function(){this.setSlide(this.index-1,"prev")},next:function(){this.setSlide(this.index+1,"next")},pause:function(t){t||(this.isPaused=!0),this.clearInterval()},start:function(t){t||(this.isPaused=!1),this.clearInterval(),this.interval&&this.numSlides>1&&(this.$_interval=setInterval(this.next,Object(nt["d"])(1e3,this.interval)))},restart:function(){this.$el.contains(Object(A["g"])())||this.start()},doSlide:function(t,e){var n=this,r=Boolean(this.interval),i=this.calcDirection(this.direction,e,t),a=i.overlayClass,o=i.dirClass,s=this.slides[e],c=this.slides[t];if(s&&c){if(this.isSliding=!0,r&&this.pause(!1),this.$emit(C["W"],t),this.$emit(Ii,this.index),this.noAnimation)Object(A["b"])(c,"active"),Object(A["A"])(s,"active"),this.isSliding=!1,this.$nextTick((function(){return n.$emit(C["V"],t)}));else{Object(A["b"])(c,a),Object(A["y"])(c),Object(A["b"])(s,o),Object(A["b"])(c,o);var u=!1,l=function e(){if(!u){if(u=!0,n.transitionEndEvent){var r=n.transitionEndEvent.split(/\s+/);r.forEach((function(t){return Object(le["a"])(c,t,e,C["cb"])}))}n.clearAnimationTimeout(),Object(A["A"])(c,o),Object(A["A"])(c,a),Object(A["b"])(c,"active"),Object(A["A"])(s,"active"),Object(A["A"])(s,o),Object(A["A"])(s,a),Object(A["G"])(s,"aria-current","false"),Object(A["G"])(c,"aria-current","true"),Object(A["G"])(s,"aria-hidden","true"),Object(A["G"])(c,"aria-hidden","false"),n.isSliding=!1,n.direction=null,n.$nextTick((function(){return n.$emit(C["V"],t)}))}};if(this.transitionEndEvent){var d=this.transitionEndEvent.split(/\s+/);d.forEach((function(t){return Object(le["b"])(c,t,l,C["cb"])}))}this.$_animationTimeout=setTimeout(l,Ri)}r&&this.start(!1)}},updateSlides:function(){this.pause(!0),this.slides=Object(A["F"])(".carousel-item",this.$refs.inner);var t=this.slides.length,e=Object(nt["d"])(0,Object(nt["e"])(Object(nt["c"])(this.index),t-1));this.slides.forEach((function(n,r){var i=r+1;r===e?(Object(A["b"])(n,"active"),Object(A["G"])(n,"aria-current","true")):(Object(A["A"])(n,"active"),Object(A["G"])(n,"aria-current","false")),Object(A["G"])(n,"aria-posinset",String(i)),Object(A["G"])(n,"aria-setsize",String(t))})),this.setSlide(e),this.start(this.isPaused)},calcDirection:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:null,e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0,n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:0;return t?Bi[t]:n>e?Bi.next:Bi.prev},handleClick:function(t,e){var n=t.keyCode;"click"!==t.type&&n!==se&&n!==te||(Object(le["f"])(t),e())},handleSwipe:function(){var t=Object(nt["a"])(this.touchDeltaX);if(!(t<=Vi)){var e=t/this.touchDeltaX;this.touchDeltaX=0,e>0?this.prev():e<0&&this.next()}},touchStart:function(t){i["e"]&&zi[t.pointerType.toUpperCase()]?this.touchStartX=t.clientX:i["e"]||(this.touchStartX=t.touches[0].clientX)},touchMove:function(t){t.touches&&t.touches.length>1?this.touchDeltaX=0:this.touchDeltaX=t.touches[0].clientX-this.touchStartX},touchEnd:function(t){i["e"]&&zi[t.pointerType.toUpperCase()]&&(this.touchDeltaX=t.clientX-this.touchStartX),this.handleSwipe(),this.pause(!1),this.clearTouchTimeout(),this.$_touchTimeout=setTimeout(this.start,Ni+Object(nt["d"])(1e3,this.interval))}},render:function(t){var e=this,n=this.indicators,r=this.background,a=this.noAnimation,o=this.noHoverPause,s=this.noTouch,c=this.index,u=this.isSliding,l=this.pause,d=this.restart,f=this.touchStart,h=this.touchEnd,p=this.safeId("__BV_inner_"),m=t("div",{staticClass:"carousel-inner",attrs:{id:p,role:"list"},ref:"inner"},[this.normalizeSlot()]),b=t();if(this.controls){var v=function(n,r,i){var a=function(t){u?Object(le["f"])(t,{propagation:!1}):e.handleClick(t,i)};return t("a",{staticClass:"carousel-control-".concat(n),attrs:{href:"#",role:"button","aria-controls":p,"aria-disabled":u?"true":null},on:{click:a,keydown:a}},[t("span",{staticClass:"carousel-control-".concat(n,"-icon"),attrs:{"aria-hidden":"true"}}),t("span",{class:"sr-only"},[r])])};b=[v("prev",this.labelPrev,this.prev),v("next",this.labelNext,this.next)]}var _=t("ol",{staticClass:"carousel-indicators",directives:[{name:"show",value:n}],attrs:{id:this.safeId("__BV_indicators_"),"aria-hidden":n?"false":"true","aria-label":this.labelIndicators,"aria-owns":p}},this.slides.map((function(r,i){var a=function(t){e.handleClick(t,(function(){e.setSlide(i)}))};return t("li",{class:{active:i===c},attrs:{role:"button",id:e.safeId("__BV_indicator_".concat(i+1,"_")),tabindex:n?"0":"-1","aria-current":i===c?"true":"false","aria-label":"".concat(e.labelGotoSlide," ").concat(i+1),"aria-describedby":r.id||null,"aria-controls":p},on:{click:a,keydown:a},key:"slide_".concat(i)})}))),g={mouseenter:o?ki:l,mouseleave:o?ki:d,focusin:l,focusout:d,keydown:function(t){if(!/input|textarea/i.test(t.target.tagName)){var n=t.keyCode;n!==re&&n!==oe||(Object(le["f"])(t),e[n===re?"prev":"next"]())}}};return i["g"]&&!s&&(i["e"]?(g["&pointerdown"]=f,g["&pointerup"]=h):(g["&touchstart"]=f,g["&touchmove"]=this.touchMove,g["&touchend"]=h)),t("div",{staticClass:"carousel",class:{slide:!a,"carousel-fade":!a&&this.fade,"pointer-event":i["g"]&&i["e"]&&!s},style:{background:r},attrs:{role:"region",id:this.safeId(),"aria-busy":u?"true":"false"},on:g},[m,b,_])}});function qi(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);e&&(r=r.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),n.push.apply(n,r)}return n}function Ki(t){for(var e=1;e0?(Object(A["G"])(t,$a,r.join(" ")),Object(A["H"])(t,Ra,"none")):(Object(A["z"])(t,$a),Object(A["C"])(t,Ra)),Object(A["D"])((function(){Ka(t,n)})),Object(tr["a"])(r,t[Ea])||(t[Ea]=r,r.forEach((function(t){n.context.$root.$emit(Wa,t)})))}},no={bind:function(t,e,n){t[Ca]=!1,t[Ea]=[],Za(t,n),eo(t,e,n)},componentUpdated:eo,updated:eo,unbind:function(t,e,n){qa(t),Xa(t,n),to(t,xa),to(t,Pa),to(t,Ca),to(t,Ea),Object(A["A"])(t,Da),Object(A["A"])(t,Sa),Object(A["z"])(t,Fa),Object(A["z"])(t,$a),Object(A["z"])(t,Ia),Object(A["C"])(t,Ra)}},ro=L({directives:{VBToggle:no}}),io=L({components:{BCollapse:Ta},plugins:{VBTogglePlugin:ro}}),ao=n("f0bd"),oo="top-start",so="top-end",co="bottom-start",uo="bottom-end",lo="right-start",fo="left-start",ho=n("ca88"),po=n("6d40"),mo=r["default"].extend({data:function(){return{listenForClickOut:!1}},watch:{listenForClickOut:function(t,e){t!==e&&(Object(le["a"])(this.clickOutElement,this.clickOutEventName,this._clickOutHandler,C["cb"]),t&&Object(le["b"])(this.clickOutElement,this.clickOutEventName,this._clickOutHandler,C["cb"]))}},beforeCreate:function(){this.clickOutElement=null,this.clickOutEventName=null},mounted:function(){this.clickOutElement||(this.clickOutElement=document),this.clickOutEventName||(this.clickOutEventName="click"),this.listenForClickOut&&Object(le["b"])(this.clickOutElement,this.clickOutEventName,this._clickOutHandler,C["cb"])},beforeDestroy:function(){Object(le["a"])(this.clickOutElement,this.clickOutEventName,this._clickOutHandler,C["cb"])},methods:{isClickOut:function(t){return!Object(A["f"])(this.$el,t.target)},_clickOutHandler:function(t){this.clickOutHandler&&this.isClickOut(t)&&this.clickOutHandler(t)}}}),bo=r["default"].extend({data:function(){return{listenForFocusIn:!1}},watch:{listenForFocusIn:function(t,e){t!==e&&(Object(le["a"])(this.focusInElement,"focusin",this._focusInHandler,C["cb"]),t&&Object(le["b"])(this.focusInElement,"focusin",this._focusInHandler,C["cb"]))}},beforeCreate:function(){this.focusInElement=null},mounted:function(){this.focusInElement||(this.focusInElement=document),this.listenForFocusIn&&Object(le["b"])(this.focusInElement,"focusin",this._focusInHandler,C["cb"])},beforeDestroy:function(){Object(le["a"])(this.focusInElement,"focusin",this._focusInHandler,C["cb"])},methods:{_focusInHandler:function(t){this.focusInHandler&&this.focusInHandler(t)}}});function vo(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);e&&(r=r.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),n.push.apply(n,r)}return n}function _o(t){for(var e=1;e0&&void 0!==arguments[0]&&arguments[0];this.disabled||(this.visible=!1,t&&this.$once(C["v"],this.focusToggler))},toggle:function(t){t=t||{};var e=t,n=e.type,r=e.keyCode;("click"===n||"keydown"===n&&-1!==[te,se,Zt].indexOf(r))&&(this.disabled?this.visible=!1:(this.$emit(C["Z"],t),Object(le["f"])(t),this.visible?this.hide(!0):this.show()))},onMousedown:function(t){Object(le["f"])(t,{propagation:!1})},onKeydown:function(t){var e=t.keyCode;e===ee?this.onEsc(t):e===Zt?this.focusNext(t,!1):e===ce&&this.focusNext(t,!0)},onEsc:function(t){this.visible&&(this.visible=!1,Object(le["f"])(t),this.$once(C["v"],this.focusToggler))},onSplitClick:function(t){this.disabled?this.visible=!1:this.$emit(C["f"],t)},hideHandler:function(t){var e=this,n=t.target;!this.visible||Object(A["f"])(this.$refs.menu,n)||Object(A["f"])(this.toggler,n)||(this.clearHideTimeout(),this.$_hideTimeout=setTimeout((function(){return e.hide()}),this.inNavbar?300:0))},clickOutHandler:function(t){this.hideHandler(t)},focusInHandler:function(t){this.hideHandler(t)},focusNext:function(t,e){var n=this,r=t.target;!this.visible||t&&Object(A["e"])(jo,r)||(Object(le["f"])(t),this.$nextTick((function(){var t=n.getItems();if(!(t.length<1)){var i=t.indexOf(r);e&&i>0?i--:!e&&i1&&void 0!==arguments[1]?arguments[1]:null;if(Object(u["k"])(t)){var n=d(t,this.valueField),r=d(t,this.textField);return{value:Object(u["o"])(n)?e||r:n,text:Ge(String(Object(u["o"])(r)?e:r)),html:d(t,this.htmlField),disabled:Boolean(d(t,this.disabledField))}}return{value:e||t,text:Ge(String(t)),disabled:!1}},normalizeOptions:function(t){var e=this;return Object(u["a"])(t)?t.map((function(t){return e.normalizeOption(t)})):Object(u["k"])(t)?(Object(h["a"])(ys,this.$options.name),Object(f["h"])(t).map((function(n){return e.normalizeOption(t[n]||{},n)}))):[]}}});function ws(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);e&&(r=r.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),n.push.apply(n,r)}return n}function Ms(t){for(var e=1;e-1:Object(tr["a"])(e,t)},isRadio:function(){return!1}},watch:uc({},lc,(function(t,e){Object(tr["a"])(t,e)||this.setIndeterminate(t)})),mounted:function(){this.setIndeterminate(this[lc])},methods:{computedLocalCheckedWatcher:function(t,e){if(!Object(tr["a"])(t,e)){this.$emit(ic,t);var n=this.$refs.input;n&&this.$emit(dc,n.indeterminate)}},handleChange:function(t){var e=this,n=t.target,r=n.checked,i=n.indeterminate,a=this.value,o=this.uncheckedValue,s=this.computedLocalChecked;if(Object(u["a"])(s)){var c=Bs(s,a);r&&c<0?s=s.concat(a):!r&&c>-1&&(s=s.slice(0,c).concat(s.slice(c+1)))}else s=r?a:o;this.computedLocalChecked=s,this.$nextTick((function(){e.$emit(C["d"],s),e.isGroup&&e.bvGroup.$emit(C["d"],s),e.$emit(dc,i)}))},setIndeterminate:function(t){Object(u["a"])(this.computedLocalChecked)&&(t=!1);var e=this.$refs.input;e&&(e.indeterminate=t,this.$emit(dc,t))}}});function pc(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);e&&(r=r.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),n.push.apply(n,r)}return n}function mc(t){for(var e=1;e0&&(c=[t("div",{staticClass:"b-form-date-controls d-flex flex-wrap",class:{"justify-content-between":c.length>1,"justify-content-end":c.length<2}},c)]);var p=t(fr,{staticClass:"b-form-date-calendar w-100",props:Zc(Zc({},Object(I["e"])(ou,a)),{},{hidden:!this.isVisible,value:e,valueAsDate:!1,width:this.calendarWidth}),on:{selected:this.onSelected,input:this.onInput,context:this.onContext},scopedSlots:Object(f["k"])(o,["nav-prev-decade","nav-prev-year","nav-prev-month","nav-this-month","nav-next-month","nav-next-year","nav-next-decade"]),key:"calendar",ref:"calendar"},c);return t(Kc,{staticClass:"b-form-datepicker",props:Zc(Zc({},Object(I["e"])(su,a)),{},{formattedValue:e?this.formattedValue:"",id:this.safeId(),lang:this.computedLang,menuClass:[{"bg-dark":i,"text-light":i},this.menuClass],placeholder:s,rtl:this.isRTL,value:e}),on:{show:this.onShow,shown:this.onShown,hidden:this.onHidden},scopedSlots:Qc({},H["f"],o[H["f"]]||this.defaultButtonFn),ref:"control"},[p])}}),lu=L({components:{BFormDatepicker:uu,BDatepicker:uu}});function du(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);e&&(r=r.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),n.push.apply(n,r)}return n}function fu(t){for(var e=1;e1&&void 0!==arguments[1])||arguments[1];return Promise.all(Object(ue["f"])(t).filter((function(t){return"file"===t.kind})).map((function(t){var n=Ou(t);if(n){if(n.isDirectory&&e)return wu(n.createReader(),"".concat(n.name,"/"));if(n.isFile)return new Promise((function(t){n.file((function(e){e.$path="",t(e)}))}))}return null})).filter(c["a"]))},wu=function t(e){var n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"";return new Promise((function(r){var i=[],a=function a(){e.readEntries((function(e){0===e.length?r(Promise.all(i).then((function(t){return Object(ue["d"])(t)}))):(i.push(Promise.all(e.map((function(e){if(e){if(e.isDirectory)return t(e.createReader(),"".concat(n).concat(e.name,"/"));if(e.isFile)return new Promise((function(t){e.file((function(e){e.$path="".concat(n).concat(e.name),t(e)}))}))}return null})).filter(c["a"]))),a())}))};a()}))},Mu=Object(I["d"])(Object(f["m"])(fu(fu(fu(fu(fu(fu(fu({},nr["b"]),bu),Ns),zs),Js),Us),{},{accept:Object(I["c"])(E["u"],""),browseText:Object(I["c"])(E["u"],"Browse"),capture:Object(I["c"])(E["g"],!1),directory:Object(I["c"])(E["g"],!1),dropPlaceholder:Object(I["c"])(E["u"],"Drop files here"),fileNameFormatter:Object(I["c"])(E["l"]),multiple:Object(I["c"])(E["g"],!1),noDrop:Object(I["c"])(E["g"],!1),noDropPlaceholder:Object(I["c"])(E["u"],"Not allowed"),noTraverse:Object(I["c"])(E["g"],!1),placeholder:Object(I["c"])(E["u"],"No file chosen")})),P["S"]),Lu=r["default"].extend({name:P["S"],mixins:[er["a"],nr["a"],mu,B["a"],Vs,qs,Ws,B["a"]],inheritAttrs:!1,props:Mu,data:function(){return{files:[],dragging:!1,dropAllowed:!this.noDrop,hasFocus:!1}},computed:{computedAccept:function(){var t=this.accept;return t=(t||"").trim().split(/[,\s]+/).filter(c["a"]),0===t.length?null:t.map((function(t){var e="name",n="^",r="$";s["k"].test(t)?n="":(e="type",s["y"].test(t)&&(r=".+$",t=t.slice(0,-1))),t=Object(mt["a"])(t);var i=new RegExp("".concat(n).concat(t).concat(r));return{rx:i,prop:e}}))},computedCapture:function(){var t=this.capture;return!0===t||""===t||(t||null)},computedAttrs:function(){var t=this.name,e=this.disabled,n=this.required,r=this.form,i=this.computedCapture,a=this.accept,o=this.multiple,s=this.directory;return fu(fu({},this.bvAttrs),{},{type:"file",id:this.safeId(),name:t,disabled:e,required:n,form:r||null,capture:i,accept:a||null,multiple:o,directory:s,webkitdirectory:s,"aria-required":n?"true":null})},computedFileNameFormatter:function(){var t=this.fileNameFormatter;return Object(I["b"])(t)?t:this.defaultFileNameFormatter},clonedFiles:function(){return Object(o["a"])(this.files)},flattenedFiles:function(){return Object(ue["e"])(this.files)},fileNames:function(){return this.flattenedFiles.map((function(t){return t.name}))},labelContent:function(){if(this.dragging&&!this.noDrop)return this.normalizeSlot(H["l"],{allowed:this.dropAllowed})||(this.dropAllowed?this.dropPlaceholder:this.$createElement("span",{staticClass:"text-danger"},this.noDropPlaceholder));if(0===this.files.length)return this.normalizeSlot(H["X"])||this.placeholder;var t=this.flattenedFiles,e=this.clonedFiles,n=this.fileNames,r=this.computedFileNameFormatter;return this.hasNormalizedSlot(H["p"])?this.normalizeSlot(H["p"],{files:t,filesTraversed:e,names:n}):r(t,e,n)}},watch:(tu={},hu(tu,vu,(function(t){(!t||Object(u["a"])(t)&&0===t.length)&&this.reset()})),hu(tu,"files",(function(t,e){if(!Object(tr["a"])(t,e)){var n=this.multiple,r=this.noTraverse,i=!n||r?Object(ue["e"])(t):t;this.$emit(_u,n?i:i[0]||null)}})),tu),created:function(){this.$_form=null},mounted:function(){var t=Object(A["e"])("form",this.$el);t&&(Object(le["b"])(t,"reset",this.reset,C["db"]),this.$_form=t)},beforeDestroy:function(){var t=this.$_form;t&&Object(le["a"])(t,"reset",this.reset,C["db"])},methods:{isFileValid:function(t){if(!t)return!1;var e=this.computedAccept;return!e||e.some((function(e){return e.rx.test(t[e.prop])}))},isFilesArrayValid:function(t){var e=this;return Object(u["a"])(t)?t.every((function(t){return e.isFileValid(t)})):this.isFileValid(t)},defaultFileNameFormatter:function(t,e,n){return n.join(", ")},setFiles:function(t){this.dropAllowed=!this.noDrop,this.dragging=!1,this.files=this.multiple?this.directory?t:Object(ue["e"])(t):Object(ue["e"])(t).slice(0,1)},setInputFiles:function(t){try{var e=new ClipboardEvent("").clipboardData||new DataTransfer;Object(ue["e"])(Object(o["a"])(t)).forEach((function(t){delete t.$path,e.items.add(t)})),this.$refs.input.files=e.files}catch(n){}},reset:function(){try{var t=this.$refs.input;t.value="",t.type="",t.type="file"}catch(e){}this.files=[]},handleFiles:function(t){var e=arguments.length>1&&void 0!==arguments[1]&&arguments[1];if(e){var n=t.filter(this.isFilesArrayValid);n.length>0&&(this.setFiles(n),this.setInputFiles(n))}else this.setFiles(t)},focusHandler:function(t){this.plain||"focusout"===t.type?this.hasFocus=!1:this.hasFocus=!0},onChange:function(t){var e=this,n=t.type,r=t.target,a=t.dataTransfer,o=void 0===a?{}:a,s="drop"===n;this.$emit(C["d"],t);var c=Object(ue["f"])(o.items||[]);if(i["f"]&&c.length>0&&!Object(u["g"])(Ou(c[0])))ju(c,this.directory).then((function(t){return e.handleFiles(t,s)}));else{var l=Object(ue["f"])(r.files||o.files||[]).map((function(t){return t.$path=t.webkitRelativePath||"",t}));this.handleFiles(l,s)}},onDragenter:function(t){Object(le["f"])(t),this.dragging=!0;var e=t.dataTransfer,n=void 0===e?{}:e;if(this.noDrop||this.disabled||!this.dropAllowed)return n.dropEffect="none",void(this.dropAllowed=!1);n.dropEffect="copy"},onDragover:function(t){Object(le["f"])(t),this.dragging=!0;var e=t.dataTransfer,n=void 0===e?{}:e;if(this.noDrop||this.disabled||!this.dropAllowed)return n.dropEffect="none",void(this.dropAllowed=!1);n.dropEffect="copy"},onDragleave:function(t){var e=this;Object(le["f"])(t),this.$nextTick((function(){e.dragging=!1,e.dropAllowed=!e.noDrop}))},onDrop:function(t){var e=this;Object(le["f"])(t),this.dragging=!1,this.noDrop||this.disabled||!this.dropAllowed?this.$nextTick((function(){e.dropAllowed=!e.noDrop})):this.onChange(t)}},render:function(t){var e=this.custom,n=this.plain,r=this.size,i=this.dragging,a=this.stateClass,o=this.bvAttrs,s=t("input",{class:[{"form-control-file":n,"custom-file-input":e,focus:e&&this.hasFocus},a],style:e?{zIndex:-5}:{},attrs:this.computedAttrs,on:{change:this.onChange,focusin:this.focusHandler,focusout:this.focusHandler,reset:this.reset},ref:"input"});if(n)return s;var c=t("label",{staticClass:"custom-file-label",class:{dragging:i},attrs:{for:this.safeId(),"data-browse":this.browseText||null}},[t("span",{staticClass:"d-block form-file-text",style:{pointerEvents:"none"}},[this.labelContent])]);return t("div",{staticClass:"custom-file b-form-file",class:[hu({},"b-custom-control-".concat(r),r),a,o.class],style:o.style,attrs:{id:this.safeId("_BV_file_outer_")},on:{dragenter:this.onDragenter,dragover:this.onDragover,dragleave:this.onDragleave,drop:this.onDrop}},[s,c])}}),ku=L({components:{BFormFile:Lu,BFile:Lu}}),Tu=n("228e"),Du=function(t){return"\\"+t},Su=function(t){t=Object(mt["g"])(t);var e=t.length,n=t.charCodeAt(0);return t.split("").reduce((function(r,i,a){var o=t.charCodeAt(a);return 0===o?r+"�":127===o||o>=1&&o<=31||0===a&&o>=48&&o<=57||1===a&&o>=48&&o<=57&&45===n?r+Du("".concat(o.toString(16)," ")):0===a&&45===o&&1===e?r+Du(i):o>=128||45===o||95===o||o>=48&&o<=57||o>=65&&o<=90||o>=97&&o<=122?r+i:r+Du(i)}),"")},Yu=n("b508");function xu(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);e&&(r=r.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),n.push.apply(n,r)}return n}function Pu(t){for(var e=1;e0||Object(f["h"])(this.labelColProps).length>0}},watch:{ariaDescribedby:function(t,e){t!==e&&this.updateAriaDescribedby(t,e)}},mounted:function(){var t=this;this.$nextTick((function(){t.updateAriaDescribedby(t.ariaDescribedby)}))},methods:{getAlignClasses:function(t,e){return Object(Tu["b"])().reduce((function(n,r){var i=t[Object(I["g"])(r,"".concat(e,"Align"))]||null;return i&&n.push(["text",r,i].filter(c["a"]).join("-")),n}),[])},getColProps:function(t,e){return Object(Tu["b"])().reduce((function(n,r){var i=t[Object(I["g"])(r,"".concat(e,"Cols"))];return i=""===i||(i||!1),Object(u["b"])(i)||"auto"===i||(i=Object(F["c"])(i,0),i=i>0&&i),i&&(n[r||(Object(u["b"])(i)?"col":"cols")]=i),n}),{})},updateAriaDescribedby:function(t,e){var n=this.labelFor;if(i["i"]&&n){var r=Object(A["E"])("#".concat(Su(n)),this.$refs.content);if(r){var a="aria-describedby",o=(t||"").split(s["x"]),u=(e||"").split(s["x"]),l=(Object(A["h"])(r,a)||"").split(s["x"]).filter((function(t){return!Object(ue["a"])(u,t)})).concat(o).filter((function(t,e,n){return n.indexOf(t)===e})).filter(c["a"]).join(" ").trim();l?Object(A["G"])(r,a,l):Object(A["z"])(r,a)}}},onLegendClick:function(t){if(!this.labelFor){var e=t.target,n=e?e.tagName:"";if(-1===Wu.indexOf(n)){var r=Object(A["F"])(zu,this.$refs.content).filter(A["u"]);1===r.length&&Object(A["d"])(r[0])}}}},render:function(t){var e=this.computedState,n=this.feedbackAriaLive,r=this.isHorizontal,i=this.labelFor,a=this.normalizeSlot,o=this.safeId,s=this.tooltip,u=o(),l=!i,d=t(),f=a(H["C"])||this.label,h=f?o("_BV_label_"):null;if(f||r){var p=this.labelSize,m=this.labelColProps,b=l?"legend":"label";this.labelSrOnly?(f&&(d=t(b,{class:"sr-only",attrs:{id:h,for:i||null}},[f])),d=t(r?Iu:"div",{props:r?m:{}},[d])):d=t(r?Iu:b,{on:l?{click:this.onLegendClick}:{},props:r?Ru(Ru({},m),{},{tag:b}):{},attrs:{id:h,for:i||null,tabindex:l?"-1":null},class:[l?"bv-no-focus-ring":"",r||l?"col-form-label":"",!r&&l?"pt-0":"",r||l?"":"d-block",p?"col-form-label-".concat(p):"",this.labelAlignClasses,this.labelClass]},[f])}var v=t(),_=a(H["B"])||this.invalidFeedback,g=_?o("_BV_feedback_invalid_"):null;_&&(v=t(Es,{props:{ariaLive:n,id:g,role:n?"alert":null,state:e,tooltip:s},attrs:{tabindex:_?"-1":null}},[_]));var y=t(),O=a(H["lb"])||this.validFeedback,j=O?o("_BV_feedback_valid_"):null;O&&(y=t(As,{props:{ariaLive:n,id:j,role:n?"alert":null,state:e,tooltip:s},attrs:{tabindex:O?"-1":null}},[O]));var w=t(),M=a(H["j"])||this.description,L=M?o("_BV_description_"):null;M&&(w=t(Ps,{attrs:{id:L,tabindex:"-1"}},[M]));var k=this.ariaDescribedby=[L,!1===e?g:null,!0===e?j:null].filter(c["a"]).join(" ")||null,T=t(r?Iu:"div",{props:r?this.contentColProps:{},ref:"content"},[a(H["i"],{ariaDescribedby:k,descriptionId:L,id:u,labelId:h})||t(),v,y,w]);return t(l?"fieldset":r?Fs:"div",{staticClass:"form-group",class:[{"was-validated":this.validated},this.stateClass],attrs:{id:u,disabled:l?this.disabled:null,role:l?null:"group","aria-invalid":this.computedAriaInvalid,"aria-labelledby":l&&r?h:null}},r&&l?[t(Fs,[d,T])]:[d,T])}},Ju=L({components:{BFormGroup:Gu,BFormFieldset:Gu}}),qu=r["default"].extend({computed:{selectionStart:{cache:!1,get:function(){return this.$refs.input.selectionStart},set:function(t){this.$refs.input.selectionStart=t}},selectionEnd:{cache:!1,get:function(){return this.$refs.input.selectionEnd},set:function(t){this.$refs.input.selectionEnd=t}},selectionDirection:{cache:!1,get:function(){return this.$refs.input.selectionDirection},set:function(t){this.$refs.input.selectionDirection=t}}},methods:{select:function(){var t;(t=this.$refs.input).select.apply(t,arguments)},setSelectionRange:function(){var t;(t=this.$refs.input).setSelectionRange.apply(t,arguments)},setRangeText:function(){var t;(t=this.$refs.input).setRangeText.apply(t,arguments)}}});function Ku(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);e&&(r=r.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),n.push.apply(n,r)}return n}function Xu(t){for(var e=1;e2&&void 0!==arguments[2]&&arguments[2];return t=Object(mt["g"])(t),!this.hasFormatter||this.lazyFormatter&&!n||(t=this.formatter(t,e)),t},modifyValue:function(t){return t=Object(mt["g"])(t),this.trim&&(t=t.trim()),this.number&&(t=Object(F["b"])(t,t)),t},updateValue:function(t){var e=this,n=arguments.length>1&&void 0!==arguments[1]&&arguments[1],r=this.lazy;if(!r||n){this.clearDebounce();var i=function(){if(t=e.modifyValue(t),t!==e.vModelValue)e.vModelValue=t,e.$emit(rl,t);else if(e.hasFormatter){var n=e.$refs.input;n&&t!==n.value&&(n.value=t)}},a=this.computedDebounce;a>0&&!r&&!n?this.$_inputDebounceTimer=setTimeout(i,a):i()}},onInput:function(t){if(!t.target.composing){var e=t.target.value,n=this.formatValue(e,t);!1===n||t.defaultPrevented?Object(le["f"])(t,{propagation:!1}):(this.localValue=n,this.updateValue(n),this.$emit(C["y"],n))}},onChange:function(t){var e=t.target.value,n=this.formatValue(e,t);!1===n||t.defaultPrevented?Object(le["f"])(t,{propagation:!1}):(this.localValue=n,this.updateValue(n,!0),this.$emit(C["d"],n))},onBlur:function(t){var e=t.target.value,n=this.formatValue(e,t,!0);!1!==n&&(this.localValue=Object(mt["g"])(this.modifyValue(n)),this.updateValue(n,!0)),this.$emit(C["b"],t)},focus:function(){this.disabled||Object(A["d"])(this.$el)},blur:function(){this.disabled||Object(A["c"])(this.$el)}}}),ol=r["default"].extend({computed:{validity:{cache:!1,get:function(){return this.$refs.input.validity}},validationMessage:{cache:!1,get:function(){return this.$refs.input.validationMessage}},willValidate:{cache:!1,get:function(){return this.$refs.input.willValidate}}},methods:{setCustomValidity:function(){var t;return(t=this.$refs.input).setCustomValidity.apply(t,arguments)},checkValidity:function(){var t;return(t=this.$refs.input).checkValidity.apply(t,arguments)},reportValidity:function(){var t;return(t=this.$refs.input).reportValidity.apply(t,arguments)}}}),sl=n("bc9a");function cl(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);e&&(r=r.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),n.push.apply(n,r)}return n}function ul(t){for(var e=1;e=n?"full":e>=n-.5?"half":"empty",l={variant:a,disabled:o,readonly:s};return t("span",{staticClass:"b-rating-star",class:{focused:r&&e===n||!Object(F["c"])(e)&&n===c,"b-rating-star-empty":"empty"===u,"b-rating-star-half":"half"===u,"b-rating-star-full":"full"===u},attrs:{tabindex:o||s?null:"-1"},on:{click:this.onClick}},[t("span",{staticClass:"b-rating-icon"},[this.normalizeSlot(u,l)])])}}),Pl=Object(I["d"])(Object(f["m"])(yl(yl(yl(yl(yl({},nr["b"]),Ml),Object(f["j"])(Ns,["required","autofocus"])),Us),{},{color:Object(I["c"])(E["u"]),iconClear:Object(I["c"])(E["u"],"x"),iconEmpty:Object(I["c"])(E["u"],"star"),iconFull:Object(I["c"])(E["u"],"star-fill"),iconHalf:Object(I["c"])(E["u"],"star-half"),inline:Object(I["c"])(E["g"],!1),locale:Object(I["c"])(E["f"]),noBorder:Object(I["c"])(E["g"],!1),precision:Object(I["c"])(E["p"]),readonly:Object(I["c"])(E["g"],!1),showClear:Object(I["c"])(E["g"],!1),showValue:Object(I["c"])(E["g"],!1),showValueMax:Object(I["c"])(E["g"],!1),stars:Object(I["c"])(E["p"],Dl,(function(t){return Object(F["c"])(t)>=Tl})),variant:Object(I["c"])(E["u"])})),P["Y"]),Cl=r["default"].extend({name:P["Y"],components:{BIconStar:It,BIconStarHalf:Rt,BIconStarFill:Bt,BIconX:Nt},mixins:[nr["a"],wl,Gs],props:Pl,data:function(){var t=Object(F["b"])(this[Ll],null),e=Sl(this.stars);return{localValue:Object(u["g"])(t)?null:Yl(t,0,e),hasFocus:!1}},computed:{computedStars:function(){return Sl(this.stars)},computedRating:function(){var t=Object(F["b"])(this.localValue,0),e=Object(F["c"])(this.precision,3);return Yl(Object(F["b"])(t.toFixed(e)),0,this.computedStars)},computedLocale:function(){var t=Object(ue["b"])(this.locale).filter(c["a"]),e=new Intl.NumberFormat(t);return e.resolvedOptions().locale},isInteractive:function(){return!this.disabled&&!this.readonly},isRTL:function(){return Qn(this.computedLocale)},formattedRating:function(){var t=Object(F["c"])(this.precision),e=this.showValueMax,n=this.computedLocale,r={notation:"standard",minimumFractionDigits:isNaN(t)?0:t,maximumFractionDigits:isNaN(t)?3:t},i=this.computedStars.toLocaleString(n),a=this.localValue;return a=Object(u["g"])(a)?e?"-":"":a.toLocaleString(n,r),e?"".concat(a,"/").concat(i):a}},watch:(dl={},Ol(dl,Ll,(function(t,e){if(t!==e){var n=Object(F["b"])(t,null);this.localValue=Object(u["g"])(n)?null:Yl(n,0,this.computedStars)}})),Ol(dl,"localValue",(function(t,e){t!==e&&t!==(this.value||0)&&this.$emit(kl,t||null)})),Ol(dl,"disabled",(function(t){t&&(this.hasFocus=!1,this.blur())})),dl),methods:{focus:function(){this.disabled||Object(A["d"])(this.$el)},blur:function(){this.disabled||Object(A["c"])(this.$el)},onKeydown:function(t){var e=t.keyCode;if(this.isInteractive&&Object(ue["a"])([re,Zt,oe,ce],e)){Object(le["f"])(t,{propagation:!1});var n=Object(F["c"])(this.localValue,0),r=this.showClear?0:1,i=this.computedStars,a=this.isRTL?-1:1;e===re?this.localValue=Yl(n-a,r,i)||null:e===oe?this.localValue=Yl(n+a,r,i):e===Zt?this.localValue=Yl(n-1,r,i)||null:e===ce&&(this.localValue=Yl(n+1,r,i))}},onSelected:function(t){this.isInteractive&&(this.localValue=t)},onFocus:function(t){this.hasFocus=!!this.isInteractive&&"focus"===t.type},renderIcon:function(t){return this.$createElement(qt,{props:{icon:t,variant:this.disabled||this.color?null:this.variant||null}})},iconEmptyFn:function(){return this.renderIcon(this.iconEmpty)},iconHalfFn:function(){return this.renderIcon(this.iconHalf)},iconFullFn:function(){return this.renderIcon(this.iconFull)},iconClearFn:function(){return this.$createElement(qt,{props:{icon:this.iconClear}})}},render:function(t){var e=this,n=this.disabled,r=this.readonly,i=this.name,a=this.form,o=this.inline,s=this.variant,c=this.color,l=this.noBorder,d=this.hasFocus,f=this.computedRating,h=this.computedStars,p=this.formattedRating,m=this.showClear,b=this.isRTL,v=this.isInteractive,_=this.$scopedSlots,g=[];if(m&&!n&&!r){var y=t("span",{staticClass:"b-rating-icon"},[(_[H["v"]]||this.iconClearFn)()]);g.push(t("span",{staticClass:"b-rating-star b-rating-star-clear flex-grow-1",class:{focused:d&&0===f},attrs:{tabindex:v?"-1":null},on:{click:function(){return e.onSelected(null)}},key:"clear"},[y]))}for(var O=0;O1&&void 0!==arguments[1]?arguments[1]:null;if(Object(u["k"])(t)){var n=d(t,this.valueField),r=d(t,this.textField),i=d(t,this.optionsField,null);return Object(u["g"])(i)?{value:Object(u["o"])(n)?e||r:n,text:String(Object(u["o"])(r)?e:r),html:d(t,this.htmlField),disabled:Boolean(d(t,this.disabledField))}:{label:String(d(t,this.labelField)||r),options:this.normalizeOptions(i)}}return{value:e||t,text:String(t),disabled:!1}}}}),Wl=Object(I["d"])({disabled:Object(I["c"])(E["g"],!1),value:Object(I["c"])(E["a"],void 0,!0)},P["cb"]),Ul=r["default"].extend({name:P["cb"],functional:!0,props:Wl,render:function(t,e){var n=e.props,r=e.data,i=e.children,a=n.value,o=n.disabled;return t("option",Object(pt["a"])(r,{attrs:{disabled:o},domProps:{value:a}}),i)}});function Gl(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);e&&(r=r.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),n.push.apply(n,r)}return n}function Jl(t){for(var e=1;e0?t:bd},computedInterval:function(){var t=Object(F["c"])(this.repeatInterval,0);return t>0?t:vd},computedThreshold:function(){return Object(nt["d"])(Object(F["c"])(this.repeatThreshold,_d),1)},computedStepMultiplier:function(){return Object(nt["d"])(Object(F["c"])(this.repeatStepMultiplier,gd),1)},computedPrecision:function(){var t=this.computedStep;return Object(nt["c"])(t)===t?0:(t.toString().split(".")[1]||"").length},computedMultiplier:function(){return Object(nt["f"])(10,this.computedPrecision||0)},valueAsFixed:function(){var t=this.localValue;return Object(u["g"])(t)?"":t.toFixed(this.computedPrecision)},computedLocale:function(){var t=Object(ue["b"])(this.locale).filter(c["a"]),e=new Intl.NumberFormat(t);return e.resolvedOptions().locale},computedRTL:function(){return Qn(this.computedLocale)},defaultFormatter:function(){var t=this.computedPrecision,e=new Intl.NumberFormat(this.computedLocale,{style:"decimal",useGrouping:!1,minimumIntegerDigits:1,minimumFractionDigits:t,maximumFractionDigits:t,notation:"standard"});return e.format},computedFormatter:function(){var t=this.formatterFn;return Object(I["b"])(t)?t:this.defaultFormatter},computedAttrs:function(){return od(od({},this.bvAttrs),{},{role:"group",lang:this.computedLocale,tabindex:this.disabled?null:"-1",title:this.ariaLabel})},computedSpinAttrs:function(){var t=this.spinId,e=this.localValue,n=this.computedRequired,r=this.disabled,i=this.state,a=this.computedFormatter,o=!Object(u["g"])(e);return od(od({dir:this.computedRTL?"rtl":"ltr"},this.bvAttrs),{},{id:t,role:"spinbutton",tabindex:r?null:"0","aria-live":"off","aria-label":this.ariaLabel||null,"aria-controls":this.ariaControls||null,"aria-invalid":!1===i||!o&&n?"true":null,"aria-required":n?"true":null,"aria-valuemin":Object(mt["g"])(this.computedMin),"aria-valuemax":Object(mt["g"])(this.computedMax),"aria-valuenow":o?e:null,"aria-valuetext":o?a(e):null})}},watch:(ed={},sd(ed,dd,(function(t){this.localValue=Object(F["b"])(t,null)})),sd(ed,"localValue",(function(t){this.$emit(fd,t)})),sd(ed,"disabled",(function(t){t&&this.clearRepeat()})),sd(ed,"readonly",(function(t){t&&this.clearRepeat()})),ed),created:function(){this.$_autoDelayTimer=null,this.$_autoRepeatTimer=null,this.$_keyIsDown=!1},beforeDestroy:function(){this.clearRepeat()},deactivated:function(){this.clearRepeat()},methods:{focus:function(){this.disabled||Object(A["d"])(this.$refs.spinner)},blur:function(){this.disabled||Object(A["c"])(this.$refs.spinner)},emitChange:function(){this.$emit(C["d"],this.localValue)},stepValue:function(t){var e=this.localValue;if(!this.disabled&&!Object(u["g"])(e)){var n=this.computedStep*t,r=this.computedMin,i=this.computedMax,a=this.computedMultiplier,o=this.wrap;e=Object(nt["g"])((e-r)/n)*n+r+n,e=Object(nt["g"])(e*a)/a,this.localValue=e>i?o?r:i:e0&&void 0!==arguments[0]?arguments[0]:1,e=this.localValue;Object(u["g"])(e)?this.localValue=this.computedMin:this.stepValue(1*t)},stepDown:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:1,e=this.localValue;Object(u["g"])(e)?this.localValue=this.wrap?this.computedMax:this.computedMin:this.stepValue(-1*t)},onKeydown:function(t){var e=t.keyCode,n=t.altKey,r=t.ctrlKey,i=t.metaKey;if(!(this.disabled||this.readonly||n||r||i)&&Object(ue["a"])(yd,e)){if(Object(le["f"])(t,{propagation:!1}),this.$_keyIsDown)return;this.resetTimers(),Object(ue["a"])([ce,Zt],e)?(this.$_keyIsDown=!0,e===ce?this.handleStepRepeat(t,this.stepUp):e===Zt&&this.handleStepRepeat(t,this.stepDown)):e===ae?this.stepUp(this.computedStepMultiplier):e===ie?this.stepDown(this.computedStepMultiplier):e===ne?this.localValue=this.computedMin:e===Qt&&(this.localValue=this.computedMax)}},onKeyup:function(t){var e=t.keyCode,n=t.altKey,r=t.ctrlKey,i=t.metaKey;this.disabled||this.readonly||n||r||i||Object(ue["a"])(yd,e)&&(Object(le["f"])(t,{propagation:!1}),this.resetTimers(),this.$_keyIsDown=!1,this.emitChange())},handleStepRepeat:function(t,e){var n=this,r=t||{},i=r.type,a=r.button;if(!this.disabled&&!this.readonly){if("mousedown"===i&&a)return;this.resetTimers(),e(1);var o=this.computedThreshold,s=this.computedStepMultiplier,c=this.computedDelay,u=this.computedInterval;this.$_autoDelayTimer=setTimeout((function(){var t=0;n.$_autoRepeatTimer=setInterval((function(){e(tt.length)&&(e=t.length);for(var n=0,r=new Array(e);n0&&n.indexOf(t)===e}))},Jd=function(t){return Object(u["n"])(t)?t:Object(u["d"])(t)&&t.target.value||""},qd=function(){return{all:[],valid:[],invalid:[],duplicate:[]}},Kd=Object(I["d"])(Object(f["m"])($d($d($d($d($d($d({},nr["b"]),Rd),Ns),Us),Js),{},{addButtonText:Object(I["c"])(E["u"],"Add"),addButtonVariant:Object(I["c"])(E["u"],"outline-secondary"),addOnChange:Object(I["c"])(E["g"],!1),duplicateTagText:Object(I["c"])(E["u"],"Duplicate tag(s)"),ignoreInputFocusSelector:Object(I["c"])(E["f"],Wd),inputAttrs:Object(I["c"])(E["q"],{}),inputClass:Object(I["c"])(E["e"]),inputId:Object(I["c"])(E["u"]),inputType:Object(I["c"])(E["u"],"text",(function(t){return Object(ue["a"])(zd,t)})),invalidTagText:Object(I["c"])(E["u"],"Invalid tag(s)"),limit:Object(I["c"])(E["n"]),limitTagsText:Object(I["c"])(E["u"],"Tag limit reached"),noAddOnEnter:Object(I["c"])(E["g"],!1),noOuterFocus:Object(I["c"])(E["g"],!1),noTagRemove:Object(I["c"])(E["g"],!1),placeholder:Object(I["c"])(E["u"],"Add tag..."),removeOnDelete:Object(I["c"])(E["g"],!1),separator:Object(I["c"])(E["f"]),tagClass:Object(I["c"])(E["e"]),tagPills:Object(I["c"])(E["g"],!1),tagRemoveLabel:Object(I["c"])(E["u"],"Remove tag"),tagRemovedLabel:Object(I["c"])(E["u"],"Tag removed"),tagValidator:Object(I["c"])(E["l"]),tagVariant:Object(I["c"])(E["u"],"secondary")})),P["gb"]),Xd=r["default"].extend({name:P["gb"],mixins:[nr["a"],Bd,Vs,Gs,qs,B["a"]],props:Kd,data:function(){return{hasFocus:!1,newTag:"",tags:[],removedTags:[],tagsState:qd()}},computed:{computedInputId:function(){return this.inputId||this.safeId("__input__")},computedInputType:function(){return Object(ue["a"])(zd,this.inputType)?this.inputType:"text"},computedInputAttrs:function(){var t=this.disabled,e=this.form;return $d($d({},this.inputAttrs),{},{id:this.computedInputId,value:this.newTag,disabled:t,form:e})},computedInputHandlers:function(){return{input:this.onInputInput,change:this.onInputChange,keydown:this.onInputKeydown,reset:this.reset}},computedSeparator:function(){return Object(ue["b"])(this.separator).filter(u["n"]).filter(c["a"]).join("")},computedSeparatorRegExp:function(){var t=this.computedSeparator;return t?new RegExp("[".concat(Ud(t),"]+")):null},computedJoiner:function(){var t=this.computedSeparator.charAt(0);return" "!==t?"".concat(t," "):t},computeIgnoreInputFocusSelector:function(){return Object(ue["b"])(this.ignoreInputFocusSelector).filter(c["a"]).join(",").trim()},disableAddButton:function(){var t=this,e=Object(mt["h"])(this.newTag);return""===e||!this.splitTags(e).some((function(e){return!Object(ue["a"])(t.tags,e)&&t.validateTag(e)}))},duplicateTags:function(){return this.tagsState.duplicate},hasDuplicateTags:function(){return this.duplicateTags.length>0},invalidTags:function(){return this.tagsState.invalid},hasInvalidTags:function(){return this.invalidTags.length>0},isLimitReached:function(){var t=this.limit;return Object(u["h"])(t)&&t>=0&&this.tags.length>=t}},watch:(Td={},Fd(Td,Nd,(function(t){this.tags=Gd(t)})),Fd(Td,"tags",(function(t,e){Object(tr["a"])(t,this[Nd])||this.$emit(Vd,t),Object(tr["a"])(t,e)||(t=Object(ue["b"])(t).filter(c["a"]),e=Object(ue["b"])(e).filter(c["a"]),this.removedTags=e.filter((function(e){return!Object(ue["a"])(t,e)})))})),Fd(Td,"tagsState",(function(t,e){Object(tr["a"])(t,e)||this.$emit(C["Y"],t.valid,t.invalid,t.duplicate)})),Td),created:function(){this.tags=Gd(this[Nd])},mounted:function(){var t=this,e=Object(A["e"])("form",this.$el);e&&(Object(le["b"])(e,"reset",this.reset,C["db"]),this.$on(C["eb"],(function(){Object(le["a"])(e,"reset",t.reset,C["db"])})))},methods:{addTag:function(t){if(t=Object(u["n"])(t)?t:this.newTag,!this.disabled&&""!==Object(mt["h"])(t)&&!this.isLimitReached){var e=this.parseTags(t);if(e.valid.length>0||0===e.all.length)if(Object(A["v"])(this.getInput(),"select"))this.newTag="";else{var n=[].concat(Yd(e.invalid),Yd(e.duplicate));this.newTag=e.all.filter((function(t){return Object(ue["a"])(n,t)})).join(this.computedJoiner).concat(n.length>0?this.computedJoiner.charAt(0):"")}e.valid.length>0&&(this.tags=Object(ue["b"])(this.tags,e.valid)),this.tagsState=e,this.focus()}},removeTag:function(t){var e=this;this.disabled||(this.tags=this.tags.filter((function(e){return e!==t})),this.$nextTick((function(){e.focus()})))},reset:function(){var t=this;this.newTag="",this.tags=[],this.$nextTick((function(){t.removedTags=[],t.tagsState=qd()}))},onInputInput:function(t){if(!(this.disabled||Object(u["d"])(t)&&t.target.composing)){var e=Jd(t),n=this.computedSeparatorRegExp;this.newTag!==e&&(this.newTag=e),e=Object(mt["i"])(e),n&&n.test(e.slice(-1))?this.addTag():this.tagsState=""===e?qd():this.parseTags(e)}},onInputChange:function(t){if(!this.disabled&&this.addOnChange){var e=Jd(t);this.newTag!==e&&(this.newTag=e),this.addTag()}},onInputKeydown:function(t){if(!this.disabled&&Object(u["d"])(t)){var e=t.keyCode,n=t.target.value||"";this.noAddOnEnter||e!==te?!this.removeOnDelete||e!==Kt&&e!==Xt||""!==n||(Object(le["f"])(t,{propagation:!1}),this.tags=this.tags.slice(0,-1)):(Object(le["f"])(t,{propagation:!1}),this.addTag())}},onClick:function(t){var e=this,n=this.computeIgnoreInputFocusSelector,r=t.target;this.disabled||Object(A["q"])(r)||n&&Object(A["e"])(n,r,!0)||this.$nextTick((function(){e.focus()}))},onFocusin:function(){this.hasFocus=!0},onFocusout:function(){this.hasFocus=!1},handleAutofocus:function(){var t=this;this.$nextTick((function(){Object(A["D"])((function(){t.autofocus&&!t.disabled&&t.focus()}))}))},focus:function(){this.disabled||Object(A["d"])(this.getInput())},blur:function(){this.disabled||Object(A["c"])(this.getInput())},splitTags:function(t){t=Object(mt["g"])(t);var e=this.computedSeparatorRegExp;return(e?t.split(e):[t]).map(mt["h"]).filter(c["a"])},parseTags:function(t){var e=this,n=this.splitTags(t),r={all:n,valid:[],invalid:[],duplicate:[]};return n.forEach((function(t){Object(ue["a"])(e.tags,t)||Object(ue["a"])(r.valid,t)?Object(ue["a"])(r.duplicate,t)||r.duplicate.push(t):e.validateTag(t)?r.valid.push(t):Object(ue["a"])(r.invalid,t)||r.invalid.push(t)})),r},validateTag:function(t){var e=this.tagValidator;return!Object(I["b"])(e)||e(t)},getInput:function(){return Object(A["E"])("#".concat(Su(this.computedInputId)),this.$el)},defaultRender:function(t){var e=t.addButtonText,n=t.addButtonVariant,r=t.addTag,i=t.disableAddButton,a=t.disabled,o=t.duplicateTagText,s=t.inputAttrs,u=t.inputClass,l=t.inputHandlers,d=t.inputType,f=t.invalidTagText,h=t.isDuplicate,p=t.isInvalid,m=t.isLimitReached,b=t.limitTagsText,v=t.noTagRemove,_=t.placeholder,g=t.removeTag,y=t.tagClass,O=t.tagPills,j=t.tagRemoveLabel,w=t.tagVariant,M=t.tags,L=this.$createElement,k=M.map((function(t){return t=Object(mt["g"])(t),L(Sd,{class:y,props:{disabled:a,noRemove:v,pill:O,removeLabel:j,tag:"li",title:t,variant:w},on:{remove:function(){return g(t)}},key:"tags_".concat(t)},t)})),T=f&&p?this.safeId("__invalid_feedback__"):null,D=o&&h?this.safeId("__duplicate_feedback__"):null,S=b&&m?this.safeId("__limit_feedback__"):null,Y=[s["aria-describedby"],T,D,S].filter(c["a"]).join(" "),x=L("input",{staticClass:"b-form-tags-input w-100 flex-grow-1 p-0 m-0 bg-transparent border-0",class:u,style:{outline:0,minWidth:"5rem"},attrs:$d($d({},s),{},{"aria-describedby":Y||null,type:d,placeholder:_||null}),domProps:{value:s.value},on:l,directives:[{name:"model",value:s.value}],ref:"input"}),P=L(Le,{staticClass:"b-form-tags-button py-0",class:{invisible:i},style:{fontSize:"90%"},props:{disabled:i||m,variant:n},on:{click:function(){return r()}},ref:"button"},[this.normalizeSlot(H["a"])||e]),C=this.safeId("__tag_list__"),E=L("li",{staticClass:"b-from-tags-field flex-grow-1",attrs:{role:"none","aria-live":"off","aria-controls":C},key:"tags_field"},[L("div",{staticClass:"d-flex",attrs:{role:"group"}},[x,P])]),A=L("ul",{staticClass:"b-form-tags-list list-unstyled mb-0 d-flex flex-wrap align-items-center",attrs:{id:C},key:"tags_list"},[k,E]),$=L();if(f||o||b){var F=this.computedJoiner,I=L();T&&(I=L(Es,{props:{id:T,forceShow:!0},key:"tags_invalid_feedback"},[this.invalidTagText,": ",this.invalidTags.join(F)]));var B=L();D&&(B=L(Ps,{props:{id:D},key:"tags_duplicate_feedback"},[this.duplicateTagText,": ",this.duplicateTags.join(F)]));var R=L();S&&(R=L(Ps,{props:{id:S},key:"tags_limit_feedback"},[b])),$=L("div",{attrs:{"aria-live":"polite","aria-atomic":"true"},key:"tags_feedback"},[I,B,R])}return[A,$]}},render:function(t){var e=this.name,n=this.disabled,r=this.required,i=this.form,a=this.tags,o=this.computedInputId,s=this.hasFocus,c=this.noOuterFocus,u=$d({tags:a.slice(),inputAttrs:this.computedInputAttrs,inputType:this.computedInputType,inputHandlers:this.computedInputHandlers,removeTag:this.removeTag,addTag:this.addTag,reset:this.reset,inputId:o,isInvalid:this.hasInvalidTags,invalidTags:this.invalidTags.slice(),isDuplicate:this.hasDuplicateTags,duplicateTags:this.duplicateTags.slice(),isLimitReached:this.isLimitReached,disableAddButton:this.disableAddButton},Object(f["k"])(this.$props,["addButtonText","addButtonVariant","disabled","duplicateTagText","form","inputClass","invalidTagText","limit","limitTagsText","noTagRemove","placeholder","required","separator","size","state","tagClass","tagPills","tagRemoveLabel","tagVariant"])),l=this.normalizeSlot(H["i"],u)||this.defaultRender(u),d=t("output",{staticClass:"sr-only",attrs:{id:this.safeId("__selected_tags__"),role:"status",for:o,"aria-live":s?"polite":"off","aria-atomic":"true","aria-relevant":"additions text"}},this.tags.join(", ")),h=t("div",{staticClass:"sr-only",attrs:{id:this.safeId("__removed_tags__"),role:"status","aria-live":s?"assertive":"off","aria-atomic":"true"}},this.removedTags.length>0?"(".concat(this.tagRemovedLabel,") ").concat(this.removedTags.join(", ")):""),p=t();if(e&&!n){var m=a.length>0;p=(m?a:[""]).map((function(n){return t("input",{class:{"sr-only":!m},attrs:{type:m?"hidden":"text",value:n,required:r,name:e,form:i},key:"tag_input_".concat(n)})}))}return t("div",{staticClass:"b-form-tags form-control h-auto",class:[{focus:s&&!c&&!n,disabled:n},this.sizeFormClass,this.stateClass],attrs:{id:this.safeId(),role:"group",tabindex:n||c?null:"-1","aria-describedby":this.safeId("__selected_tags__")},on:{click:this.onClick,focusin:this.onFocusin,focusout:this.onFocusout}},[d,h,l,p])}}),Zd=L({components:{BFormTags:Xd,BTags:Xd,BFormTag:Sd,BTag:Sd}});function Qd(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);e&&(r=r.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),n.push.apply(n,r)}return n}function tf(t){for(var e=1;ef?s:"".concat(f,"px")}},render:function(t){return t("textarea",{class:this.computedClass,style:this.computedStyle,directives:[{name:"b-visible",value:this.visibleCallback,modifiers:{640:!0}}],attrs:this.computedAttrs,domProps:{value:this.localValue},on:this.computedListeners,ref:"input"})}}),of=L({components:{BFormTextarea:af,BTextarea:af}});function sf(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);e&&(r=r.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),n.push.apply(n,r)}return n}function cf(t){for(var e=1;et.length)&&(e=t.length);for(var n=0,r=new Array(e);n1&&void 0!==arguments[1]&&arguments[1];if(Object(u["g"])(e)||Object(u["g"])(n)||i&&Object(u["g"])(r))return"";var a=[e,n,i?r:0];return a.map(wf).join(":")},kf=Object(I["d"])(Object(f["m"])(cf(cf(cf(cf({},nr["b"]),gf),Object(f["k"])(Od,["labelIncrement","labelDecrement"])),{},{ariaLabelledby:Object(I["c"])(E["u"]),disabled:Object(I["c"])(E["g"],!1),hidden:Object(I["c"])(E["g"],!1),hideHeader:Object(I["c"])(E["g"],!1),hour12:Object(I["c"])(E["g"],null),labelAm:Object(I["c"])(E["u"],"AM"),labelAmpm:Object(I["c"])(E["u"],"AM/PM"),labelHours:Object(I["c"])(E["u"],"Hours"),labelMinutes:Object(I["c"])(E["u"],"Minutes"),labelNoTimeSelected:Object(I["c"])(E["u"],"No time selected"),labelPm:Object(I["c"])(E["u"],"PM"),labelSeconds:Object(I["c"])(E["u"],"Seconds"),labelSelected:Object(I["c"])(E["u"],"Selected time"),locale:Object(I["c"])(E["f"]),minutesStep:Object(I["c"])(E["p"],1),readonly:Object(I["c"])(E["g"],!1),secondsStep:Object(I["c"])(E["p"],1),showSeconds:Object(I["c"])(E["g"],!1)})),P["oc"]),Tf=r["default"].extend({name:P["oc"],mixins:[nr["a"],_f,B["a"]],props:kf,data:function(){var t=Mf(this[yf]||"");return{modelHours:t.hours,modelMinutes:t.minutes,modelSeconds:t.seconds,modelAmpm:t.ampm,isLive:!1}},computed:{computedHMS:function(){var t=this.modelHours,e=this.modelMinutes,n=this.modelSeconds;return Lf({hours:t,minutes:e,seconds:n},this.showSeconds)},resolvedOptions:function(){var t=Object(ue["b"])(this.locale).filter(c["a"]),e={hour:jf,minute:jf,second:jf};Object(u["p"])(this.hour12)||(e.hour12=!!this.hour12);var n=new Intl.DateTimeFormat(t,e),r=n.resolvedOptions(),i=r.hour12||!1,a=r.hourCycle||(i?"h12":"h23");return{locale:r.locale,hour12:i,hourCycle:a}},computedLocale:function(){return this.resolvedOptions.locale},computedLang:function(){return(this.computedLocale||"").replace(/-u-.*$/,"")},computedRTL:function(){return Qn(this.computedLang)},computedHourCycle:function(){return this.resolvedOptions.hourCycle},is12Hour:function(){return!!this.resolvedOptions.hour12},context:function(){return{locale:this.computedLocale,isRTL:this.computedRTL,hourCycle:this.computedHourCycle,hour12:this.is12Hour,hours:this.modelHours,minutes:this.modelMinutes,seconds:this.showSeconds?this.modelSeconds:0,value:this.computedHMS,formatted:this.formattedTimeString}},valueId:function(){return this.safeId()||null},computedAriaLabelledby:function(){return[this.ariaLabelledby,this.valueId].filter(c["a"]).join(" ")||null},timeFormatter:function(){var t={hour12:this.is12Hour,hourCycle:this.computedHourCycle,hour:jf,minute:jf,timeZone:"UTC"};return this.showSeconds&&(t.second=jf),Bn(this.computedLocale,t)},numberFormatter:function(){var t=new Intl.NumberFormat(this.computedLocale,{style:"decimal",minimumIntegerDigits:2,minimumFractionDigits:0,maximumFractionDigits:0,notation:"standard"});return t.format},formattedTimeString:function(){var t=this.modelHours,e=this.modelMinutes,n=this.showSeconds&&this.modelSeconds||0;return this.computedHMS?this.timeFormatter(An(Date.UTC(0,0,1,t,e,n))):this.labelNoTimeSelected||" "},spinScopedSlots:function(){var t=this.$createElement;return{increment:function(e){var n=e.hasFocus;return t(Pt,{props:{scale:n?1.5:1.25},attrs:{"aria-hidden":"true"}})},decrement:function(e){var n=e.hasFocus;return t(Pt,{props:{flipV:!0,scale:n?1.5:1.25},attrs:{"aria-hidden":"true"}})}}}},watch:(nf={},uf(nf,yf,(function(t,e){if(t!==e&&!Object(tr["a"])(Mf(t),Mf(this.computedHMS))){var n=Mf(t),r=n.hours,i=n.minutes,a=n.seconds,o=n.ampm;this.modelHours=r,this.modelMinutes=i,this.modelSeconds=a,this.modelAmpm=o}})),uf(nf,"computedHMS",(function(t,e){t!==e&&this.$emit(Of,t)})),uf(nf,"context",(function(t,e){Object(tr["a"])(t,e)||this.$emit(C["h"],t)})),uf(nf,"modelAmpm",(function(t,e){var n=this;if(t!==e){var r=Object(u["g"])(this.modelHours)?0:this.modelHours;this.$nextTick((function(){0===t&&r>11?n.modelHours=r-12:1===t&&r<12&&(n.modelHours=r+12)}))}})),uf(nf,"modelHours",(function(t,e){t!==e&&(this.modelAmpm=t>11?1:0)})),nf),created:function(){var t=this;this.$nextTick((function(){t.$emit(C["h"],t.context)}))},mounted:function(){this.setLive(!0)},activated:function(){this.setLive(!0)},deactivated:function(){this.setLive(!1)},beforeDestroy:function(){this.setLive(!1)},methods:{focus:function(){this.disabled||Object(A["d"])(this.$refs.spinners[0])},blur:function(){if(!this.disabled){var t=Object(A["g"])();Object(A["f"])(this.$el,t)&&Object(A["c"])(t)}},formatHours:function(t){var e=this.computedHourCycle;return t=this.is12Hour&&t>12?t-12:t,t=0===t&&"h12"===e?12:0===t&&"h24"===e?24:12===t&&"h11"===e?0:t,this.numberFormatter(t)},formatMinutes:function(t){return this.numberFormatter(t)},formatSeconds:function(t){return this.numberFormatter(t)},formatAmpm:function(t){return 0===t?this.labelAm:1===t?this.labelPm:""},setHours:function(t){this.modelHours=t},setMinutes:function(t){this.modelMinutes=t},setSeconds:function(t){this.modelSeconds=t},setAmpm:function(t){this.modelAmpm=t},onSpinLeftRight:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},e=t.type,n=t.keyCode;if(!this.disabled&&"keydown"===e&&(n===re||n===oe)){Object(le["f"])(t);var r=this.$refs.spinners||[],i=r.map((function(t){return!!t.hasFocus})).indexOf(!0);i+=n===re?-1:1,i=i>=r.length?0:i<0?r.length-1:i,Object(A["d"])(r[i])}},setLive:function(t){var e=this;t?this.$nextTick((function(){Object(A["D"])((function(){e.isLive=!0}))})):this.isLive=!1}},render:function(t){var e=this;if(this.hidden)return t();var n=this.valueId,r=this.computedAriaLabelledby,i=[],a=function(r,a,o){var s=arguments.length>3&&void 0!==arguments[3]?arguments[3]:{},c=e.safeId("_spinbutton_".concat(a,"_"))||null;return i.push(c),t(jd,{class:o,props:cf({id:c,placeholder:"--",vertical:!0,required:!0,disabled:e.disabled,readonly:e.readonly,locale:e.computedLocale,labelIncrement:e.labelIncrement,labelDecrement:e.labelDecrement,wrap:!0,ariaControls:n,min:0},s),scopedSlots:e.spinScopedSlots,on:{change:r},key:a,ref:"spinners",refInFor:!0})},o=function(){return t("div",{staticClass:"d-flex flex-column",class:{"text-muted":e.disabled||e.readonly},attrs:{"aria-hidden":"true"}},[t(Ct,{props:{shiftV:4,scale:.5}}),t(Ct,{props:{shiftV:-4,scale:.5}})])},s=[];s.push(a(this.setHours,"hours","b-time-hours",{value:this.modelHours,max:23,step:1,formatterFn:this.formatHours,ariaLabel:this.labelHours})),s.push(o()),s.push(a(this.setMinutes,"minutes","b-time-minutes",{value:this.modelMinutes,max:59,step:this.minutesStep||1,formatterFn:this.formatMinutes,ariaLabel:this.labelMinutes})),this.showSeconds&&(s.push(o()),s.push(a(this.setSeconds,"seconds","b-time-seconds",{value:this.modelSeconds,max:59,step:this.secondsStep||1,formatterFn:this.formatSeconds,ariaLabel:this.labelSeconds}))),this.is12Hour&&s.push(a(this.setAmpm,"ampm","b-time-ampm",{value:this.modelAmpm,max:1,formatterFn:this.formatAmpm,ariaLabel:this.labelAmpm,required:!1})),s=t("div",{staticClass:"d-flex align-items-center justify-content-center mx-auto",attrs:{role:"group",tabindex:this.disabled||this.readonly?null:"-1","aria-labelledby":r},on:{keydown:this.onSpinLeftRight,click:function(t){t.target===t.currentTarget&&e.focus()}}},s);var u=t("output",{staticClass:"form-control form-control-sm text-center",class:{disabled:this.disabled||this.readonly},attrs:{id:n,role:"status",for:i.filter(c["a"]).join(" ")||null,tabindex:this.disabled?null:"-1","aria-live":this.isLive?"polite":"off","aria-atomic":"true"},on:{click:this.focus,focus:this.focus}},[t("bdi",this.formattedTimeString),this.computedHMS?t("span",{staticClass:"sr-only"}," (".concat(this.labelSelected,") ")):""]),l=t("header",{staticClass:"b-time-header",class:{"sr-only":this.hideHeader}},[u]),d=this.normalizeSlot();return d=d?t("footer",{staticClass:"b-time-footer"},d):t(),t("div",{staticClass:"b-time d-inline-flex flex-column text-center",attrs:{role:"group",lang:this.computedLang||null,"aria-labelledby":r||null,"aria-disabled":this.disabled?"true":null,"aria-readonly":this.readonly&&!this.disabled?"true":null}},[l,s,d])}});function Df(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);e&&(r=r.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),n.push.apply(n,r)}return n}function Sf(t){for(var e=1;e0&&o.push(t("span"," "));var c=this.labelResetButton;o.push(t(Le,{props:{size:"sm",disabled:n||r,variant:this.resetButtonVariant},attrs:{"aria-label":c||null},on:{click:this.onResetButton},key:"reset-btn"},c))}if(!this.noCloseButton){o.length>0&&o.push(t("span"," "));var l=this.labelCloseButton;o.push(t(Le,{props:{size:"sm",disabled:n,variant:this.closeButtonVariant},attrs:{"aria-label":l||null},on:{click:this.onCloseButton},key:"close-btn"},l))}o.length>0&&(o=[t("div",{staticClass:"b-form-date-controls d-flex flex-wrap",class:{"justify-content-between":o.length>1,"justify-content-end":o.length<2}},o)]);var d=t(Tf,{staticClass:"b-form-time-control",props:Sf(Sf({},Object(I["e"])(Af,i)),{},{value:e,hidden:!this.isVisible}),on:{input:this.onInput,context:this.onContext},ref:"time"},o);return t(Kc,{staticClass:"b-form-timepicker",props:Sf(Sf({},Object(I["e"])($f,i)),{},{id:this.safeId(),value:e,formattedValue:e?this.formattedValue:"",placeholder:a,rtl:this.isRTL,lang:this.computedLang}),on:{show:this.onShow,shown:this.onShown,hidden:this.onHidden},scopedSlots:Yf({},H["f"],this.$scopedSlots[H["f"]]||this.defaultButtonFn),ref:"control"},[d])}}),Bf=L({components:{BFormTimepicker:If,BTimepicker:If}}),Rf=L({components:{BImg:Ir,BImgLazy:mi}}),Nf=Object(I["d"])({tag:Object(I["c"])(E["u"],"div")},P["tb"]),Vf=r["default"].extend({name:P["tb"],functional:!0,props:Nf,render:function(t,e){var n=e.props,r=e.data,i=e.children;return t(n.tag,Object(pt["a"])(r,{staticClass:"input-group-text"}),i)}}),zf=Object(I["d"])({append:Object(I["c"])(E["g"],!1),id:Object(I["c"])(E["u"]),isText:Object(I["c"])(E["g"],!1),tag:Object(I["c"])(E["u"],"div")},P["qb"]),Wf=r["default"].extend({name:P["qb"],functional:!0,props:zf,render:function(t,e){var n=e.props,r=e.data,i=e.children,a=n.append;return t(n.tag,Object(pt["a"])(r,{class:{"input-group-append":a,"input-group-prepend":!a},attrs:{id:n.id}}),n.isText?[t(Vf,i)]:i)}});function Uf(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);e&&(r=r.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),n.push.apply(n,r)}return n}function Gf(t){for(var e=1;e0&&!n[0].text?n[0]:t()}}),qh={container:Object(I["c"])([ho["c"],E["u"]],"body"),disabled:Object(I["c"])(E["g"],!1),tag:Object(I["c"])(E["u"],"div")},Kh=r["default"].extend({name:P["xc"],mixins:[B["a"]],props:qh,watch:{disabled:{immediate:!0,handler:function(t){t?this.unmountTarget():this.$nextTick(this.mountTarget)}}},created:function(){this.$_defaultFn=null,this.$_target=null},beforeMount:function(){this.mountTarget()},updated:function(){this.updateTarget()},beforeDestroy:function(){this.unmountTarget(),this.$_defaultFn=null},methods:{getContainer:function(){if(i["i"]){var t=this.container;return Object(u["n"])(t)?Object(A["E"])(t):t}return null},mountTarget:function(){if(!this.$_target){var t=this.getContainer();if(t){var e=document.createElement("div");t.appendChild(e),this.$_target=new Jh({el:e,parent:this,propsData:{nodes:Object(ue["b"])(this.normalizeSlot())}})}}},updateTarget:function(){if(i["i"]&&this.$_target){var t=this.$scopedSlots.default;this.disabled||(t&&this.$_defaultFn!==t?this.$_target.updatedNodes=t:t||(this.$_target.updatedNodes=this.$slots.default)),this.$_defaultFn=t}},unmountTarget:function(){this.$_target&&this.$_target.$destroy(),this.$_target=null}},render:function(t){if(this.disabled){var e=Object(ue["b"])(this.normalizeSlot()).filter(c["a"]);if(e.length>0&&!e[0].text)return e[0]}return t()}});function Xh(t){return Xh="function"===typeof Symbol&&"symbol"===typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"===typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},Xh(t)}function Zh(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);e&&(r=r.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),n.push.apply(n,r)}return n}function Qh(t){for(var e=1;e1&&void 0!==arguments[1]?arguments[1]:{};return ep(this,n),r=e.call(this,t,i),Object(f["d"])(lp(r),{trigger:Object(f["l"])()}),r}return rp(n,null,[{key:"Defaults",get:function(){return Qh(Qh({},ip(fp(n),"Defaults",this)),{},{trigger:null})}}]),n}(po["a"]),pp=1040,mp=".fixed-top, .fixed-bottom, .is-fixed, .sticky-top",bp=".sticky-top",vp=".navbar-toggler",_p=r["default"].extend({data:function(){return{modals:[],baseZIndex:null,scrollbarWidth:null,isBodyOverflowing:!1}},computed:{modalCount:function(){return this.modals.length},modalsAreOpen:function(){return this.modalCount>0}},watch:{modalCount:function(t,e){i["i"]&&(this.getScrollbarWidth(),t>0&&0===e?(this.checkScrollbar(),this.setScrollbar(),Object(A["b"])(document.body,"modal-open")):0===t&&e>0&&(this.resetScrollbar(),Object(A["A"])(document.body,"modal-open")),Object(A["G"])(document.body,"data-modal-open-count",String(t)))},modals:function(t){var e=this;this.checkScrollbar(),Object(A["D"])((function(){e.updateModals(t||[])}))}},methods:{registerModal:function(t){var e=this;t&&-1===this.modals.indexOf(t)&&(this.modals.push(t),t.$once(C["eb"],(function(){e.unregisterModal(t)})))},unregisterModal:function(t){var e=this.modals.indexOf(t);e>-1&&(this.modals.splice(e,1),t._isBeingDestroyed||t._isDestroyed||this.resetModal(t))},getBaseZIndex:function(){if(Object(u["g"])(this.baseZIndex)&&i["i"]){var t=document.createElement("div");Object(A["b"])(t,"modal-backdrop"),Object(A["b"])(t,"d-none"),Object(A["H"])(t,"display","none"),document.body.appendChild(t),this.baseZIndex=Object(F["c"])(Object(A["k"])(t).zIndex,pp),document.body.removeChild(t)}return this.baseZIndex||pp},getScrollbarWidth:function(){if(Object(u["g"])(this.scrollbarWidth)&&i["i"]){var t=document.createElement("div");Object(A["b"])(t,"modal-scrollbar-measure"),document.body.appendChild(t),this.scrollbarWidth=Object(A["i"])(t).width-t.clientWidth,document.body.removeChild(t)}return this.scrollbarWidth||0},updateModals:function(t){var e=this,n=this.getBaseZIndex(),r=this.getScrollbarWidth();t.forEach((function(t,i){t.zIndex=n+i,t.scrollbarWidth=r,t.isTop=i===e.modals.length-1,t.isBodyOverflowing=e.isBodyOverflowing}))},resetModal:function(t){t&&(t.zIndex=this.getBaseZIndex(),t.isTop=!0,t.isBodyOverflowing=!1)},checkScrollbar:function(){var t=Object(A["i"])(document.body),e=t.left,n=t.right;this.isBodyOverflowing=e+n0&&void 0!==arguments[0]&&arguments[0];this.$_observer&&this.$_observer.disconnect(),this.$_observer=null,t&&(this.$_observer=xi(this.$refs.content,this.checkModalOverflow.bind(this),Ap))},updateModel:function(t){t!==this[kp]&&this.$emit(Tp,t)},buildEvent:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return new hp(t,Op(Op({cancelable:!1,target:this.$refs.modal||this.$el||null,relatedTarget:null,trigger:null},e),{},{vueTarget:this,componentId:this.modalId}))},show:function(){if(!this.isVisible&&!this.isOpening)if(this.isClosing)this.$once(C["v"],this.show);else{this.isOpening=!0,this.$_returnFocus=this.$_returnFocus||this.getActiveElement();var t=this.buildEvent(C["T"],{cancelable:!0});if(this.emitEvent(t),t.defaultPrevented||this.isVisible)return this.isOpening=!1,void this.updateModel(!1);this.doShow()}},hide:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"";if(this.isVisible&&!this.isClosing){this.isClosing=!0;var e=this.buildEvent(C["w"],{cancelable:t!==Yp,trigger:t||null});if(t===Ep?this.$emit(C["D"],e):t===Pp?this.$emit(C["c"],e):t===Cp&&this.$emit(C["g"],e),this.emitEvent(e),e.defaultPrevented||!this.isVisible)return this.isClosing=!1,void this.updateModel(!0);this.setObserver(!1),this.isVisible=!1,this.updateModel(!1)}},toggle:function(t){t&&(this.$_returnFocus=t),this.isVisible?this.hide(xp):this.show()},getActiveElement:function(){var t=Object(A["g"])(i["i"]?[document.body]:[]);return t&&t.focus?t:null},doShow:function(){var t=this;gp.modalsAreOpen&&this.noStacking?this.listenOnRootOnce(Object(le["e"])(P["Bb"],C["v"]),this.doShow):(gp.registerModal(this),this.isHidden=!1,this.$nextTick((function(){t.isVisible=!0,t.isOpening=!1,t.updateModel(!0),t.$nextTick((function(){t.setObserver(!0)}))})))},onBeforeEnter:function(){this.isTransitioning=!0,this.setResizeEvent(!0)},onEnter:function(){var t=this;this.isBlock=!0,Object(A["D"])((function(){Object(A["D"])((function(){t.isShow=!0}))}))},onAfterEnter:function(){var t=this;this.checkModalOverflow(),this.isTransitioning=!1,Object(A["D"])((function(){t.emitEvent(t.buildEvent(C["U"])),t.setEnforceFocus(!0),t.$nextTick((function(){t.focusFirst()}))}))},onBeforeLeave:function(){this.isTransitioning=!0,this.setResizeEvent(!1),this.setEnforceFocus(!1)},onLeave:function(){this.isShow=!1},onAfterLeave:function(){var t=this;this.isBlock=!1,this.isTransitioning=!1,this.isModalOverflowing=!1,this.isHidden=!0,this.$nextTick((function(){t.isClosing=!1,gp.unregisterModal(t),t.returnFocusTo(),t.emitEvent(t.buildEvent(C["v"]))}))},emitEvent:function(t){var e=t.type;this.emitOnRoot(Object(le["e"])(P["Bb"],e),t,t.componentId),this.$emit(e,t)},onDialogMousedown:function(){var t=this,e=this.$refs.modal,n=function n(r){Object(le["a"])(e,"mouseup",n,C["cb"]),r.target===e&&(t.ignoreBackdropClick=!0)};Object(le["b"])(e,"mouseup",n,C["cb"])},onClickOut:function(t){this.ignoreBackdropClick?this.ignoreBackdropClick=!1:this.isVisible&&!this.noCloseOnBackdrop&&Object(A["f"])(document.body,t.target)&&(Object(A["f"])(this.$refs.content,t.target)||this.hide(Dp))},onOk:function(){this.hide(Ep)},onCancel:function(){this.hide(Pp)},onClose:function(){this.hide(Cp)},onEsc:function(t){t.keyCode===ee&&this.isVisible&&!this.noCloseOnEsc&&this.hide(Sp)},focusHandler:function(t){var e=this.$refs.content,n=t.target;if(!(this.noEnforceFocus||!this.isTop||!this.isVisible||!e||document===n||Object(A["f"])(e,n)||this.computeIgnoreEnforceFocusSelector&&Object(A["e"])(this.computeIgnoreEnforceFocusSelector,n,!0))){var r=Object(A["n"])(this.$refs.content),i=this.$refs["bottom-trap"],a=this.$refs["top-trap"];if(i&&n===i){if(Object(A["d"])(r[0]))return}else if(a&&n===a&&Object(A["d"])(r[r.length-1]))return;Object(A["d"])(e,{preventScroll:!0})}},setEnforceFocus:function(t){this.listenDocument(t,"focusin",this.focusHandler)},setResizeEvent:function(t){this.listenWindow(t,"resize",this.checkModalOverflow),this.listenWindow(t,"orientationchange",this.checkModalOverflow)},showHandler:function(t,e){t===this.modalId&&(this.$_returnFocus=e||this.getActiveElement(),this.show())},hideHandler:function(t){t===this.modalId&&this.hide("event")},toggleHandler:function(t,e){t===this.modalId&&this.toggle(e)},modalListener:function(t){this.noStacking&&t.vueTarget!==this&&this.hide()},focusFirst:function(){var t=this;i["i"]&&Object(A["D"])((function(){var e=t.$refs.modal,n=t.$refs.content,r=t.getActiveElement();if(e&&n&&(!r||!Object(A["f"])(n,r))){var i=t.$refs["ok-button"],a=t.$refs["cancel-button"],o=t.$refs["close-button"],s=t.autoFocusButton,c=s===Ep&&i?i.$el||i:s===Pp&&a?a.$el||a:s===Cp&&o?o.$el||o:n;Object(A["d"])(c),c===n&&t.$nextTick((function(){e.scrollTop=0}))}}))},returnFocusTo:function(){var t=this.returnFocus||this.$_returnFocus||null;this.$_returnFocus=null,this.$nextTick((function(){t=Object(u["n"])(t)?Object(A["E"])(t):t,t&&(t=t.$el||t,Object(A["d"])(t))}))},checkModalOverflow:function(){if(this.isVisible){var t=this.$refs.modal;this.isModalOverflowing=t.scrollHeight>document.documentElement.clientHeight}},makeModal:function(t){var e=t();if(!this.hideHeader){var n=this.normalizeSlot(H["J"],this.slotScope);if(!n){var r=t();this.hideHeaderClose||(r=t(R["a"],{props:{content:this.headerCloseContent,disabled:this.isTransitioning,ariaLabel:this.headerCloseLabel,textVariant:this.headerCloseVariant||this.headerTextVariant},on:{click:this.onClose},ref:"close-button"},[this.normalizeSlot(H["K"])])),n=[t(this.titleTag,{staticClass:"modal-title",class:this.titleClasses,attrs:{id:this.modalTitleId},domProps:this.hasNormalizedSlot(H["M"])?{}:Je(this.titleHtml,this.title)},this.normalizeSlot(H["M"],this.slotScope)),r]}e=t("header",{staticClass:"modal-header",class:this.headerClasses,attrs:{id:this.modalHeaderId},ref:"header"},[n])}var i=t("div",{staticClass:"modal-body",class:this.bodyClasses,attrs:{id:this.modalBodyId},ref:"body"},this.normalizeSlot(H["i"],this.slotScope)),a=t();if(!this.hideFooter){var o=this.normalizeSlot(H["I"],this.slotScope);if(!o){var s=t();this.okOnly||(s=t(Le,{props:{variant:this.cancelVariant,size:this.buttonSize,disabled:this.cancelDisabled||this.busy||this.isTransitioning},domProps:this.hasNormalizedSlot(H["H"])?{}:Je(this.cancelTitleHtml,this.cancelTitle),on:{click:this.onCancel},ref:"cancel-button"},this.normalizeSlot(H["H"])));var c=t(Le,{props:{variant:this.okVariant,size:this.buttonSize,disabled:this.okDisabled||this.busy||this.isTransitioning},domProps:this.hasNormalizedSlot(H["L"])?{}:Je(this.okTitleHtml,this.okTitle),on:{click:this.onOk},ref:"ok-button"},this.normalizeSlot(H["L"]));o=[s,c]}a=t("footer",{staticClass:"modal-footer",class:this.footerClasses,attrs:{id:this.modalFooterId},ref:"footer"},[o])}var u=t("div",{staticClass:"modal-content",class:this.contentClass,attrs:{id:this.modalContentId,tabindex:"-1"},ref:"content"},[e,i,a]),l=t(),d=t();this.isVisible&&!this.noEnforceFocus&&(l=t("span",{attrs:{tabindex:"0"},ref:"top-trap"}),d=t("span",{attrs:{tabindex:"0"},ref:"bottom-trap"}));var f=t("div",{staticClass:"modal-dialog",class:this.dialogClasses,on:{mousedown:this.onDialogMousedown},ref:"dialog"},[l,u,d]),h=t("div",{staticClass:"modal",class:this.modalClasses,style:this.modalStyles,attrs:this.computedModalAttrs,on:{keydown:this.onEsc,click:this.onClickOut},directives:[{name:"show",value:this.isVisible}],ref:"modal"},[f]);h=t("transition",{props:{enterClass:"",enterToClass:"",enterActiveClass:"",leaveClass:"",leaveActiveClass:"",leaveToClass:""},on:{beforeEnter:this.onBeforeEnter,enter:this.onEnter,afterEnter:this.onAfterEnter,beforeLeave:this.onBeforeLeave,leave:this.onLeave,afterLeave:this.onAfterLeave}},[h]);var p=t();return!this.hideBackdrop&&this.isVisible&&(p=t("div",{staticClass:"modal-backdrop",attrs:{id:this.modalBackdropId}},this.normalizeSlot(H["G"]))),p=t(N["a"],{props:{noFade:this.noFade}},[p]),t("div",{style:this.modalOuterStyle,attrs:this.computedAttrs,key:"modal-outer-".concat(this[x["a"]])},[h,p])}},render:function(t){return this.static?this.lazy&&this.isHidden?t():this.makeModal(t):this.isHidden?t():t(Kh,[this.makeModal(t)])}}),Ip=Object(le["d"])(P["Bb"],C["T"]),Bp="__bv_modal_directive__",Rp=function(t){var e=t.modifiers,n=void 0===e?{}:e,r=t.arg,i=t.value;return Object(u["n"])(i)?i:Object(u["n"])(r)?r:Object(f["h"])(n).reverse()[0]},Np=function(t){return t&&Object(A["v"])(t,".dropdown-menu > li, li.nav-item")&&Object(A["E"])("a, button",t)||t},Vp=function(t){t&&"BUTTON"!==t.tagName&&(Object(A["o"])(t,"role")||Object(A["G"])(t,"role","button"),"A"===t.tagName||Object(A["o"])(t,"tabindex")||Object(A["G"])(t,"tabindex","0"))},zp=function(t,e,n){var r=Rp(e),i=Np(t);if(r&&i){var a=function(t){var e=t.currentTarget;if(!Object(A["r"])(e)){var i=t.type,a=t.keyCode;"click"!==i&&("keydown"!==i||a!==te&&a!==se)||n.context.$root.$emit(Ip,r,e)}};t[Bp]={handler:a,target:r,trigger:i},Vp(i),Object(le["b"])(i,"click",a,C["db"]),"BUTTON"!==i.tagName&&"button"===Object(A["h"])(i,"role")&&Object(le["b"])(i,"keydown",a,C["db"])}},Wp=function(t){var e=t[Bp]||{},n=e.trigger,r=e.handler;n&&r&&(Object(le["a"])(n,"click",r,C["db"]),Object(le["a"])(n,"keydown",r,C["db"]),Object(le["a"])(t,"click",r,C["db"]),Object(le["a"])(t,"keydown",r,C["db"])),delete t[Bp]},Up=function(t,e,n){var r=t[Bp]||{},i=Rp(e),a=Np(t);i===r.target&&a===r.trigger||(Wp(t,e,n),zp(t,e,n)),Vp(a)},Gp=function(){},Jp={inserted:Up,updated:Gp,componentUpdated:Up,unbind:Wp};function qp(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function Kp(t,e){for(var n=0;nt.length)&&(e=t.length);for(var n=0,r=new Array(e);n2&&void 0!==arguments[2]?arguments[2]:lm;if(!Object(h["d"])(sm)&&!Object(h["c"])(sm)){var i=new e({parent:t,propsData:Qp(Qp(Qp({},fm(Object(Tu["c"])(P["Bb"]))),{},{hideHeaderClose:!0,hideHeader:!(n.title||n.titleHtml)},Object(f["j"])(n,Object(f["h"])(dm))),{},{lazy:!1,busy:!1,visible:!1,noStacking:!1,noEnforceFocus:!1})});return Object(f["h"])(dm).forEach((function(t){Object(u["o"])(n[t])||(i.$slots[dm[t]]=Object(ue["b"])(n[t]))})),new Promise((function(t,e){var n=!1;i.$once(C["fb"],(function(){n||e(new Error("BootstrapVue MsgBox destroyed before resolve"))})),i.$on(C["w"],(function(e){if(!e.defaultPrevented){var i=r(e);e.defaultPrevented||(n=!0,t(i))}}));var a=document.createElement("div");document.body.appendChild(a),i.$mount(a)}))}},r=function(t,e){var r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},i=arguments.length>3&&void 0!==arguments[3]?arguments[3]:null;if(e&&!Object(h["c"])(sm)&&!Object(h["d"])(sm)&&Object(u["f"])(i))return n(t,Qp(Qp({},fm(r)),{},{msgBoxContent:e}),i)},i=function(){function t(e){qp(this,t),Object(f["a"])(this,{_vm:e,_root:e.$root}),Object(f["d"])(this,{_vm:Object(f["l"])(),_root:Object(f["l"])()})}return Xp(t,[{key:"show",value:function(t){if(t&&this._root){for(var e,n=arguments.length,r=new Array(n>1?n-1:0),i=1;i1?n-1:0),i=1;i1&&void 0!==arguments[1]?arguments[1]:{},n=Qp(Qp({},e),{},{okOnly:!0,okDisabled:!1,hideFooter:!1,msgBoxContent:t});return r(this._vm,t,n,(function(){return!0}))}},{key:"msgBoxConfirm",value:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=Qp(Qp({},e),{},{okOnly:!1,okDisabled:!1,cancelDisabled:!1,hideFooter:!1});return r(this._vm,t,n,(function(t){var e=t.trigger;return"ok"===e||"cancel"!==e&&null}))}}]),t}();t.mixin({beforeCreate:function(){this[cm]=new i(this)}}),Object(f["g"])(t.prototype,sm)||Object(f["e"])(t.prototype,sm,{get:function(){return this&&this[cm]||Object(h["a"])('"'.concat(sm,'" must be accessed from a Vue instance "this" context.'),P["Bb"]),this[cm]}})},pm=L({plugins:{plugin:hm}}),mm=L({components:{BModal:Fp},directives:{VBModal:Jp},plugins:{BVModalPlugin:pm}});function bm(t,e,n){return e in t?Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,t}var vm=function(t){return t="left"===t?"start":"right"===t?"end":t,"justify-content-".concat(t)},_m=Object(I["d"])({align:Object(I["c"])(E["u"]),cardHeader:Object(I["c"])(E["g"],!1),fill:Object(I["c"])(E["g"],!1),justified:Object(I["c"])(E["g"],!1),pills:Object(I["c"])(E["g"],!1),small:Object(I["c"])(E["g"],!1),tabs:Object(I["c"])(E["g"],!1),tag:Object(I["c"])(E["u"],"ul"),vertical:Object(I["c"])(E["g"],!1)},P["Db"]),gm=r["default"].extend({name:P["Db"],functional:!0,props:_m,render:function(t,e){var n,r=e.props,i=e.data,a=e.children,o=r.tabs,s=r.pills,c=r.vertical,u=r.align,l=r.cardHeader;return t(r.tag,Object(pt["a"])(i,{staticClass:"nav",class:(n={"nav-tabs":o,"nav-pills":s&&!o,"card-header-tabs":!c&&l&&o,"card-header-pills":!c&&l&&s&&!o,"flex-column":c,"nav-fill":!c&&r.fill,"nav-justified":!c&&r.justified},bm(n,vm(u),!c&&u),bm(n,"small",r.small),n)}),a)}});function ym(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);e&&(r=r.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),n.push.apply(n,r)}return n}function Om(t){for(var e=1;et.length)&&(e=t.length);for(var n=0,r=new Array(e);n=0&&e<=1})),overlayTag:Object(I["c"])(E["u"],"div"),rounded:Object(I["c"])(E["j"],!1),show:Object(I["c"])(E["g"],!1),spinnerSmall:Object(I["c"])(E["g"],!1),spinnerType:Object(I["c"])(E["u"],"border"),spinnerVariant:Object(I["c"])(E["u"]),variant:Object(I["c"])(E["u"],"light"),wrapTag:Object(I["c"])(E["u"],"div"),zIndex:Object(I["c"])(E["p"],10)},P["Mb"]),yb=r["default"].extend({name:P["Mb"],mixins:[B["a"]],props:gb,computed:{computedRounded:function(){var t=this.rounded;return!0===t||""===t?"rounded":t?"rounded-".concat(t):""},computedVariant:function(){var t=this.variant;return t&&!this.bgColor?"bg-".concat(t):""},slotScope:function(){return{spinnerType:this.spinnerType||null,spinnerVariant:this.spinnerVariant||null,spinnerSmall:this.spinnerSmall}}},methods:{defaultOverlayFn:function(t){var e=t.spinnerType,n=t.spinnerVariant,r=t.spinnerSmall;return this.$createElement(hb,{props:{type:e,variant:n,small:r}})}},render:function(t){var e=this,n=this.show,r=this.fixed,i=this.noFade,a=this.noWrap,o=this.slotScope,s=t();if(n){var c=t("div",{staticClass:"position-absolute",class:[this.computedVariant,this.computedRounded],style:mb(mb({},_b),{},{opacity:this.opacity,backgroundColor:this.bgColor||null,backdropFilter:this.blur?"blur(".concat(this.blur,")"):null})}),u=t("div",{staticClass:"position-absolute",style:this.noCenter?mb({},_b):{top:"50%",left:"50%",transform:"translateX(-50%) translateY(-50%)"}},[this.normalizeSlot(H["V"],o)||this.defaultOverlayFn(o)]);s=t(this.overlayTag,{staticClass:"b-overlay",class:{"position-absolute":!a||a&&!r,"position-fixed":a&&r},style:mb(mb({},_b),{},{zIndex:this.zIndex||10}),on:{click:function(t){return e.$emit(C["f"],t)}},key:"overlay"},[c,u])}return s=t(N["a"],{props:{noFade:i,appear:!0},on:{"after-enter":function(){return e.$emit(C["U"])},"after-leave":function(){return e.$emit(C["v"])}}},[s]),a?s:t(this.wrapTag,{staticClass:"b-overlay-wrap position-relative",attrs:{"aria-busy":n?"true":null}},a?[s]:[this.normalizeSlot(),s])}}),Ob=L({components:{BOverlay:yb}});function jb(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);e&&(r=r.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),n.push.apply(n,r)}return n}function wb(t){for(var e=1;ee?e:n<1?1:n},Hb=function(t){if(t.keyCode===se)return Object(le["f"])(t,{immediatePropagation:!0}),t.currentTarget.click(),!1},Ab=Object(I["d"])(Object(f["m"])(wb(wb({},Tb),{},{align:Object(I["c"])(E["u"],"left"),ariaLabel:Object(I["c"])(E["u"],"Pagination"),disabled:Object(I["c"])(E["g"],!1),ellipsisClass:Object(I["c"])(E["e"]),ellipsisText:Object(I["c"])(E["u"],"…"),firstClass:Object(I["c"])(E["e"]),firstNumber:Object(I["c"])(E["g"],!1),firstText:Object(I["c"])(E["u"],"«"),hideEllipsis:Object(I["c"])(E["g"],!1),hideGotoEndButtons:Object(I["c"])(E["g"],!1),labelFirstPage:Object(I["c"])(E["u"],"Go to first page"),labelLastPage:Object(I["c"])(E["u"],"Go to last page"),labelNextPage:Object(I["c"])(E["u"],"Go to next page"),labelPage:Object(I["c"])(E["m"],"Go to page"),labelPrevPage:Object(I["c"])(E["u"],"Go to previous page"),lastClass:Object(I["c"])(E["e"]),lastNumber:Object(I["c"])(E["g"],!1),lastText:Object(I["c"])(E["u"],"»"),limit:Object(I["c"])(E["p"],xb,(function(t){return!(Object(F["c"])(t,0)<1)||(Object(h["a"])('Prop "limit" must be a number greater than "0"',P["Nb"]),!1)})),nextClass:Object(I["c"])(E["e"]),nextText:Object(I["c"])(E["u"],"›"),pageClass:Object(I["c"])(E["e"]),pills:Object(I["c"])(E["g"],!1),prevClass:Object(I["c"])(E["e"]),prevText:Object(I["c"])(E["u"],"‹"),size:Object(I["c"])(E["u"])})),"pagination"),$b=r["default"].extend({mixins:[kb,B["a"]],props:Ab,data:function(){var t=Object(F["c"])(this[Db],0);return t=t>0?t:-1,{currentPage:t,localNumberOfPages:1,localLimit:xb}},computed:{btnSize:function(){var t=this.size;return t?"pagination-".concat(t):""},alignment:function(){var t=this.align;return"center"===t?"justify-content-center":"end"===t||"right"===t?"justify-content-end":"fill"===t?"text-center":""},styleClass:function(){return this.pills?"b-pagination-pills":""},computedCurrentPage:function(){return Eb(this.currentPage,this.localNumberOfPages)},paginationParams:function(){var t=this.localLimit,e=this.localNumberOfPages,n=this.computedCurrentPage,r=this.hideEllipsis,i=this.firstNumber,a=this.lastNumber,o=!1,s=!1,c=t,u=1;e<=t?c=e:nYb?(r&&!a||(s=!0,c=t-(i?0:1)),c=Object(nt["e"])(c,t)):e-n+2Yb?(r&&!i||(o=!0,c=t-(a?0:1)),u=e-c+1):(t>Yb&&(c=t-(r?0:2),o=!(r&&!i),s=!(r&&!a)),u=n-Object(nt["c"])(c/2)),u<1?(u=1,o=!1):u>e-c&&(u=e-c+1,s=!1),o&&i&&u<4&&(c+=2,u=1,o=!1);var l=u+c-1;return s&&a&&l>e-3&&(c+=l===e-2?2:3,s=!1),t<=Yb&&(i&&1===u?c=Object(nt["e"])(c+1,e,t+1):a&&e===u+c-1&&(u=Object(nt["d"])(u-1,1),c=Object(nt["e"])(e-u+1,e,t+1))),c=Object(nt["e"])(c,e-u+1),{showFirstDots:o,showLastDots:s,numberOfLinks:c,startNumber:u}},pageList:function(){var t=this.paginationParams,e=t.numberOfLinks,n=t.startNumber,r=this.computedCurrentPage,i=Pb(n,e);if(i.length>3){var a=r-n,o="bv-d-xs-down-none";if(0===a)for(var s=3;sa+1;l--)i[l].classes=o}}return i}},watch:(vb={},Mb(vb,Db,(function(t,e){t!==e&&(this.currentPage=Eb(t,this.localNumberOfPages))})),Mb(vb,"currentPage",(function(t,e){t!==e&&this.$emit(Sb,t>0?t:null)})),Mb(vb,"limit",(function(t,e){t!==e&&(this.localLimit=Cb(t))})),vb),created:function(){var t=this;this.localLimit=Cb(this.limit),this.$nextTick((function(){t.currentPage=t.currentPage>t.localNumberOfPages?t.localNumberOfPages:t.currentPage}))},methods:{handleKeyNav:function(t){var e=t.keyCode,n=t.shiftKey;this.isNav||(e===re||e===ce?(Object(le["f"])(t,{propagation:!1}),n?this.focusFirst():this.focusPrev()):e!==oe&&e!==Zt||(Object(le["f"])(t,{propagation:!1}),n?this.focusLast():this.focusNext()))},getButtons:function(){return Object(A["F"])("button.page-link, a.page-link",this.$el).filter((function(t){return Object(A["u"])(t)}))},focusCurrent:function(){var t=this;this.$nextTick((function(){var e=t.getButtons().find((function(e){return Object(F["c"])(Object(A["h"])(e,"aria-posinset"),0)===t.computedCurrentPage}));Object(A["d"])(e)||t.focusFirst()}))},focusFirst:function(){var t=this;this.$nextTick((function(){var e=t.getButtons().find((function(t){return!Object(A["r"])(t)}));Object(A["d"])(e)}))},focusLast:function(){var t=this;this.$nextTick((function(){var e=t.getButtons().reverse().find((function(t){return!Object(A["r"])(t)}));Object(A["d"])(e)}))},focusPrev:function(){var t=this;this.$nextTick((function(){var e=t.getButtons(),n=e.indexOf(Object(A["g"])());n>0&&!Object(A["r"])(e[n-1])&&Object(A["d"])(e[n-1])}))},focusNext:function(){var t=this;this.$nextTick((function(){var e=t.getButtons(),n=e.indexOf(Object(A["g"])());no,p=r<1?1:r>o?o:r,v={disabled:f,page:p,index:p-1},_=e.normalizeSlot(s,v)||Object(mt["g"])(c)||t(),g=t(f?"span":a?de["a"]:"button",{staticClass:"page-link",class:{"flex-grow-1":!a&&!f&&h},props:f||!a?{}:e.linkProps(r),attrs:{role:a?null:"menuitem",type:a||f?null:"button",tabindex:f||a?null:"-1","aria-label":i,"aria-controls":e.ariaControls||null,"aria-disabled":f?"true":null},on:f?{}:{"!click":function(t){e.onClick(t,r)},keydown:Hb}},[_]);return t("li",{key:d,staticClass:"page-item",class:[{disabled:f,"flex-fill":h,"d-flex":h&&!a&&!f},u],attrs:{role:a?null:"presentation","aria-hidden":f?"true":null}},[g])},_=function(n){return t("li",{staticClass:"page-item",class:["disabled","bv-d-xs-down-none",h?"flex-fill":"",e.ellipsisClass],attrs:{role:"separator"},key:"ellipsis-".concat(n?"last":"first")},[t("span",{staticClass:"page-link"},[e.normalizeSlot(H["m"])||Object(mt["g"])(e.ellipsisText)||t()])])},g=function(i,s){var c=i.number,l=m(c)&&!b,d=n?null:l||b&&0===s?"0":"-1",f={role:a?null:"menuitemradio",type:a||n?null:"button","aria-disabled":n?"true":null,"aria-controls":e.ariaControls||null,"aria-label":Object(I["b"])(r)?r(c):"".concat(Object(u["f"])(r)?r():r," ").concat(c),"aria-checked":a?null:l?"true":"false","aria-current":a&&l?"page":null,"aria-posinset":a?null:c,"aria-setsize":a?null:o,tabindex:a?null:d},p=Object(mt["g"])(e.makePage(c)),v={page:c,index:c-1,content:p,active:l,disabled:n},_=t(n?"span":a?de["a"]:"button",{props:n||!a?{}:e.linkProps(c),staticClass:"page-link",class:{"flex-grow-1":!a&&!n&&h},attrs:f,on:n?{}:{"!click":function(t){e.onClick(t,c)},keydown:Hb}},[e.normalizeSlot(H["W"],v)||p]);return t("li",{staticClass:"page-item",class:[{disabled:n,active:l,"flex-fill":h,"d-flex":h&&!a&&!n},i.classes,e.pageClass],attrs:{role:a?null:"presentation"},key:"page-".concat(c)},[_])},y=t();this.firstNumber||this.hideGotoEndButtons||(y=v(1,this.labelFirstPage,H["r"],this.firstText,this.firstClass,1,"pagination-goto-first")),p.push(y),p.push(v(s-1,this.labelPrevPage,H["Z"],this.prevText,this.prevClass,1,"pagination-goto-prev")),p.push(this.firstNumber&&1!==c[0]?g({number:1},0):t()),p.push(d?_(!1):t()),this.pageList.forEach((function(t,n){var r=d&&e.firstNumber&&1!==c[0]?1:0;p.push(g(t,n+r))})),p.push(f?_(!0):t()),p.push(this.lastNumber&&c[c.length-1]!==o?g({number:o},-1):t()),p.push(v(s+1,this.labelNextPage,H["U"],this.nextText,this.nextClass,o,"pagination-goto-next"));var O=t();this.lastNumber||this.hideGotoEndButtons||(O=v(o,this.labelLastPage,H["D"],this.lastText,this.lastClass,o,"pagination-goto-last")),p.push(O);var j=t("ul",{staticClass:"pagination",class:["b-pagination",this.btnSize,this.alignment,this.styleClass],attrs:{role:a?null:"menubar","aria-disabled":n?"true":"false","aria-label":a?null:i||null},on:a?{}:{keydown:this.handleKeyNav},ref:"ul"},p);return a?t("nav",{attrs:{"aria-disabled":n?"true":null,"aria-hidden":n?"true":"false","aria-label":a&&i||null}},[j]):j}});function Fb(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);e&&(r=r.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),n.push.apply(n,r)}return n}function Ib(t){for(var e=1;et.numberOfPages)&&(this.currentPage=1),this.localNumberOfPages=t.numberOfPages}},created:function(){var t=this;this.localNumberOfPages=this.numberOfPages;var e=Object(F["c"])(this[Db],0);e>0?this.currentPage=e:this.$nextTick((function(){t.currentPage=0}))},methods:{onClick:function(t,e){var n=this;if(e!==this.currentPage){var r=t.target,i=new po["a"](C["F"],{cancelable:!0,vueTarget:this,target:r});this.$emit(i.type,i,e),i.defaultPrevented||(this.currentPage=e,this.$emit(C["d"],this.currentPage),this.$nextTick((function(){Object(A["u"])(r)&&n.$el.contains(r)?Object(A["d"])(r):n.focusCurrent()})))}},makePage:function(t){return t},linkProps:function(){return{}}}}),Gb=L({components:{BPagination:Ub}});function Jb(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);e&&(r=r.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),n.push.apply(n,r)}return n}function qb(t){for(var e=1;e0?this.localNumberOfPages=this.pages.length:this.localNumberOfPages=Xb(this.numberOfPages),this.$nextTick((function(){t.guessCurrentPage()}))},onClick:function(t,e){var n=this;if(e!==this.currentPage){var r=t.currentTarget||t.target,i=new po["a"](C["F"],{cancelable:!0,vueTarget:this,target:r});this.$emit(i.type,i,e),i.defaultPrevented||(Object(A["D"])((function(){n.currentPage=e,n.$emit(C["d"],e)})),this.$nextTick((function(){Object(A["c"])(r)})))}},getPageInfo:function(t){if(!Object(u["a"])(this.pages)||0===this.pages.length||Object(u["o"])(this.pages[t-1])){var e="".concat(this.baseUrl).concat(t);return{link:this.useRouter?{path:e}:e,text:Object(mt["g"])(t)}}var n=this.pages[t-1];if(Object(u["j"])(n)){var r=n.link;return{link:Object(u["j"])(r)?r:this.useRouter?{path:r}:r,text:Object(mt["g"])(n.text||t)}}return{link:Object(mt["g"])(n),text:Object(mt["g"])(t)}},makePage:function(t){var e=this.pageGen,n=this.getPageInfo(t);return Object(I["b"])(e)?e(t,n):n.text},makeLink:function(t){var e=this.linkGen,n=this.getPageInfo(t);return Object(I["b"])(e)?e(t,n):n.link},linkProps:function(t){var e=Object(I["e"])(Zb,this),n=this.makeLink(t);return this.useRouter||Object(u["j"])(n)?e.to=n:e.href=n,e},resolveLink:function(){var t,e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"";try{t=document.createElement("a"),t.href=Object(ht["a"])({to:e},"a","/","/"),document.body.appendChild(t);var n=t,r=n.pathname,i=n.hash,a=n.search;return document.body.removeChild(t),{path:r,hash:i,query:Object(ht["f"])(a)}}catch(o){try{t&&t.parentNode&&t.parentNode.removeChild(t)}catch(s){}return{}}},resolveRoute:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"";try{var e=this.$router.resolve(t,this.$route).route;return{path:e.path,hash:e.hash,query:e.query}}catch(n){return{}}},guessCurrentPage:function(){var t=this.$router,e=this.$route,n=this.computedValue;if(!this.noPageDetect&&!n&&(i["i"]||!i["i"]&&t))for(var r=t&&e?{path:e.path,hash:e.hash,query:e.query}:{},a=i["i"]?window.location||document.location:null,o=a?{path:a.pathname,hash:a.hash,query:Object(ht["f"])(a.search)}:{},s=1;!n&&s<=this.localNumberOfPages;s++){var c=this.makeLink(s);n=t&&(Object(u["j"])(c)||this.useRouter)?Object(tr["a"])(this.resolveRoute(c),r)?s:null:i["i"]?Object(tr["a"])(this.resolveLink(c),o)?s:null:-1}this.currentPage=n>0?n:0}}}),ev=L({components:{BPaginationNav:tv}}),nv=n("be29"),rv={AUTO:"auto",TOP:"top",RIGHT:"right",BOTTOM:"bottom",LEFT:"left",TOPLEFT:"top",TOPRIGHT:"top",RIGHTTOP:"right",RIGHTBOTTOM:"right",BOTTOMLEFT:"bottom",BOTTOMRIGHT:"bottom",LEFTTOP:"left",LEFTBOTTOM:"left"},iv={AUTO:0,TOPLEFT:-1,TOP:0,TOPRIGHT:1,RIGHTTOP:-1,RIGHT:0,RIGHTBOTTOM:1,BOTTOMLEFT:-1,BOTTOM:0,BOTTOMRIGHT:1,LEFTTOP:-1,LEFT:0,LEFTBOTTOM:1},av={arrowPadding:Object(I["c"])(E["p"],6),boundary:Object(I["c"])([ho["c"],E["u"]],"scrollParent"),boundaryPadding:Object(I["c"])(E["p"],5),fallbackPlacement:Object(I["c"])(E["f"],"flip"),offset:Object(I["c"])(E["p"],0),placement:Object(I["c"])(E["u"],"top"),target:Object(I["c"])([ho["c"],ho["d"]])},ov=r["default"].extend({name:P["Sb"],props:av,data:function(){return{noFade:!1,localShow:!0,attachment:this.getAttachment(this.placement)}},computed:{templateType:function(){return"unknown"},popperConfig:function(){var t=this,e=this.placement;return{placement:this.getAttachment(e),modifiers:{offset:{offset:this.getOffset(e)},flip:{behavior:this.fallbackPlacement},arrow:{element:".arrow"},preventOverflow:{padding:this.boundaryPadding,boundariesElement:this.boundary}},onCreate:function(e){e.originalPlacement!==e.placement&&t.popperPlacementChange(e)},onUpdate:function(e){t.popperPlacementChange(e)}}}},created:function(){var t=this;this.$_popper=null,this.localShow=!0,this.$on(C["T"],(function(e){t.popperCreate(e)}));var e=function(){t.$nextTick((function(){Object(A["D"])((function(){t.$destroy()}))}))};this.$parent.$once(C["fb"],e),this.$once(C["v"],e)},beforeMount:function(){this.attachment=this.getAttachment(this.placement)},updated:function(){this.updatePopper()},beforeDestroy:function(){this.destroyPopper()},destroyed:function(){var t=this.$el;t&&t.parentNode&&t.parentNode.removeChild(t)},methods:{hide:function(){this.localShow=!1},getAttachment:function(t){return rv[String(t).toUpperCase()]||"auto"},getOffset:function(t){if(!this.offset){var e=this.$refs.arrow||Object(A["E"])(".arrow",this.$el),n=Object(F["b"])(Object(A["k"])(e).width,0)+Object(F["b"])(this.arrowPadding,0);switch(iv[String(t).toUpperCase()]||0){case 1:return"+50%p - ".concat(n,"px");case-1:return"-50%p + ".concat(n,"px");default:return 0}}return this.offset},popperCreate:function(t){this.destroyPopper(),this.$_popper=new ao["a"](this.target,t,this.popperConfig)},destroyPopper:function(){this.$_popper&&this.$_popper.destroy(),this.$_popper=null},updatePopper:function(){this.$_popper&&this.$_popper.scheduleUpdate()},popperPlacementChange:function(t){this.attachment=this.getAttachment(t.placement)},renderTemplate:function(t){return t("div")}},render:function(t){var e=this,n=this.noFade;return t(N["a"],{props:{appear:!0,noFade:n},on:{beforeEnter:function(t){return e.$emit(C["T"],t)},afterEnter:function(t){return e.$emit(C["U"],t)},beforeLeave:function(t){return e.$emit(C["w"],t)},afterLeave:function(t){return e.$emit(C["v"],t)}}},[this.localShow?this.renderTemplate(t):t()])}});function sv(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);e&&(r=r.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),n.push.apply(n,r)}return n}function cv(t){for(var e=1;e0&&void 0!==arguments[0]?arguments[0]:{},n=!1;Object(f["h"])(Mv).forEach((function(r){Object(u["o"])(e[r])||t[r]===e[r]||(t[r]=e[r],"title"===r&&(n=!0))})),n&&this.localShow&&this.fixTitle()},createTemplateAndShow:function(){var t=this.getContainer(),e=this.getTemplate(),n=this.$_tip=new e({parent:this,propsData:{id:this.computedId,html:this.html,placement:this.placement,fallbackPlacement:this.fallbackPlacement,target:this.getPlacementTarget(),boundary:this.getBoundary(),offset:Object(F["c"])(this.offset,0),arrowPadding:Object(F["c"])(this.arrowPadding,0),boundaryPadding:Object(F["c"])(this.boundaryPadding,0)}});this.handleTemplateUpdate(),n.$once(C["T"],this.onTemplateShow),n.$once(C["U"],this.onTemplateShown),n.$once(C["w"],this.onTemplateHide),n.$once(C["v"],this.onTemplateHidden),n.$once(C["fb"],this.destroyTemplate),n.$on(C["s"],this.handleEvent),n.$on(C["t"],this.handleEvent),n.$on(C["A"],this.handleEvent),n.$on(C["B"],this.handleEvent),n.$mount(t.appendChild(document.createElement("div")))},hideTemplate:function(){this.$_tip&&this.$_tip.hide(),this.clearActiveTriggers(),this.$_hoverState=""},destroyTemplate:function(){this.setWhileOpenListeners(!1),this.clearHoverTimeout(),this.$_hoverState="",this.clearActiveTriggers(),this.localPlacementTarget=null;try{this.$_tip.$destroy()}catch(t){}this.$_tip=null,this.removeAriaDescribedby(),this.restoreTitle(),this.localShow=!1},getTemplateElement:function(){return this.$_tip?this.$_tip.$el:null},handleTemplateUpdate:function(){var t=this,e=this.$_tip;if(e){var n=["title","content","variant","customClass","noFade","interactive"];n.forEach((function(n){e[n]!==t[n]&&(e[n]=t[n])}))}},show:function(){var t=this.getTarget();if(t&&Object(A["f"])(document.body,t)&&Object(A["u"])(t)&&!this.dropdownOpen()&&(!Object(u["p"])(this.title)&&""!==this.title||!Object(u["p"])(this.content)&&""!==this.content)&&!this.$_tip&&!this.localShow){this.localShow=!0;var e=this.buildEvent(C["T"],{cancelable:!0});this.emitEvent(e),e.defaultPrevented?this.destroyTemplate():(this.fixTitle(),this.addAriaDescribedby(),this.createTemplateAndShow())}},hide:function(){var t=arguments.length>0&&void 0!==arguments[0]&&arguments[0],e=this.getTemplateElement();if(e&&this.localShow){var n=this.buildEvent(C["w"],{cancelable:!t});this.emitEvent(n),n.defaultPrevented||this.hideTemplate()}else this.restoreTitle()},forceHide:function(){var t=this.getTemplateElement();t&&this.localShow&&(this.setWhileOpenListeners(!1),this.clearHoverTimeout(),this.$_hoverState="",this.clearActiveTriggers(),this.$_tip&&(this.$_tip.noFade=!0),this.hide(!0))},enable:function(){this.$_enabled=!0,this.emitEvent(this.buildEvent(C["p"]))},disable:function(){this.$_enabled=!1,this.emitEvent(this.buildEvent(C["l"]))},onTemplateShow:function(){this.setWhileOpenListeners(!0)},onTemplateShown:function(){var t=this.$_hoverState;this.$_hoverState="","out"===t&&this.leave(null),this.emitEvent(this.buildEvent(C["U"]))},onTemplateHide:function(){this.setWhileOpenListeners(!1)},onTemplateHidden:function(){this.destroyTemplate(),this.emitEvent(this.buildEvent(C["v"]))},getTarget:function(){var t=this.target;return Object(u["n"])(t)?t=Object(A["j"])(t.replace(/^#/,"")):Object(u["f"])(t)?t=t():t&&(t=t.$el||t),Object(A["s"])(t)?t:null},getPlacementTarget:function(){return this.getTarget()},getTargetId:function(){var t=this.getTarget();return t&&t.id?t.id:null},getContainer:function(){var t=!!this.container&&(this.container.$el||this.container),e=document.body,n=this.getTarget();return!1===t?Object(A["e"])(yv,n)||e:Object(u["n"])(t)&&Object(A["j"])(t.replace(/^#/,""))||e},getBoundary:function(){return this.boundary?this.boundary.$el||this.boundary:"scrollParent"},isInModal:function(){var t=this.getTarget();return t&&Object(A["e"])(vv,t)},isDropdown:function(){var t=this.getTarget();return t&&Object(A["p"])(t,Ov)},dropdownOpen:function(){var t=this.getTarget();return this.isDropdown()&&t&&Object(A["E"])(jv,t)},clearHoverTimeout:function(){clearTimeout(this.$_hoverTimeout),this.$_hoverTimeout=null},clearVisibilityInterval:function(){clearInterval(this.$_visibleInterval),this.$_visibleInterval=null},clearActiveTriggers:function(){for(var t in this.activeTrigger)this.activeTrigger[t]=!1},addAriaDescribedby:function(){var t=this.getTarget(),e=Object(A["h"])(t,"aria-describedby")||"";e=e.split(/\s+/).concat(this.computedId).join(" ").trim(),Object(A["G"])(t,"aria-describedby",e)},removeAriaDescribedby:function(){var t=this,e=this.getTarget(),n=Object(A["h"])(e,"aria-describedby")||"";n=n.split(/\s+/).filter((function(e){return e!==t.computedId})).join(" ").trim(),n?Object(A["G"])(e,"aria-describedby",n):Object(A["z"])(e,"aria-describedby")},fixTitle:function(){var t=this.getTarget();if(Object(A["o"])(t,"title")){var e=Object(A["h"])(t,"title");Object(A["G"])(t,"title",""),e&&Object(A["G"])(t,wv,e)}},restoreTitle:function(){var t=this.getTarget();if(Object(A["o"])(t,wv)){var e=Object(A["h"])(t,wv);Object(A["z"])(t,wv),e&&Object(A["G"])(t,"title",e)}},buildEvent:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return new po["a"](t,hv({cancelable:!1,target:this.getTarget(),relatedTarget:this.getTemplateElement()||null,componentId:this.computedId,vueTarget:this},e))},emitEvent:function(t){var e=t.type;this.emitOnRoot(Object(le["e"])(this.templateType,e),t),this.$emit(e,t)},listen:function(){var t=this,e=this.getTarget();e&&(this.setRootListener(!0),this.computedTriggers.forEach((function(n){"click"===n?Object(le["b"])(e,"click",t.handleEvent,C["cb"]):"focus"===n?(Object(le["b"])(e,"focusin",t.handleEvent,C["cb"]),Object(le["b"])(e,"focusout",t.handleEvent,C["cb"])):"blur"===n?Object(le["b"])(e,"focusout",t.handleEvent,C["cb"]):"hover"===n&&(Object(le["b"])(e,"mouseenter",t.handleEvent,C["cb"]),Object(le["b"])(e,"mouseleave",t.handleEvent,C["cb"]))}),this))},unListen:function(){var t=this,e=["click","focusin","focusout","mouseenter","mouseleave"],n=this.getTarget();this.setRootListener(!1),e.forEach((function(e){n&&Object(le["a"])(n,e,t.handleEvent,C["cb"])}),this)},setRootListener:function(t){var e=this.$root;if(e){var n=t?"$on":"$off",r=this.templateType;e[n](Object(le["d"])(r,C["w"]),this.doHide),e[n](Object(le["d"])(r,C["T"]),this.doShow),e[n](Object(le["d"])(r,C["k"]),this.doDisable),e[n](Object(le["d"])(r,C["o"]),this.doEnable)}},setWhileOpenListeners:function(t){this.setModalListener(t),this.setDropdownListener(t),this.visibleCheck(t),this.setOnTouchStartListener(t)},visibleCheck:function(t){var e=this;this.clearVisibilityInterval();var n=this.getTarget(),r=this.getTemplateElement();t&&(this.$_visibleInterval=setInterval((function(){!r||!e.localShow||n.parentNode&&Object(A["u"])(n)||e.forceHide()}),100))},setModalListener:function(t){this.isInModal()&&this.$root[t?"$on":"$off"](_v,this.forceHide)},setOnTouchStartListener:function(t){var e=this;"ontouchstart"in document.documentElement&&Object(ue["f"])(document.body.children).forEach((function(n){Object(le["c"])(t,n,"mouseover",e.$_noop)}))},setDropdownListener:function(t){var e=this.getTarget();e&&this.$root&&this.isDropdown&&e.__vue__&&e.__vue__[t?"$on":"$off"](C["U"],this.forceHide)},handleEvent:function(t){var e=this.getTarget();if(e&&!Object(A["r"])(e)&&this.$_enabled&&!this.dropdownOpen()){var n=t.type,r=this.computedTriggers;if("click"===n&&Object(ue["a"])(r,"click"))this.click(t);else if("mouseenter"===n&&Object(ue["a"])(r,"hover"))this.enter(t);else if("focusin"===n&&Object(ue["a"])(r,"focus"))this.enter(t);else if("focusout"===n&&(Object(ue["a"])(r,"focus")||Object(ue["a"])(r,"blur"))||"mouseleave"===n&&Object(ue["a"])(r,"hover")){var i=this.getTemplateElement(),a=t.target,o=t.relatedTarget;if(i&&Object(A["f"])(i,a)&&Object(A["f"])(e,o)||i&&Object(A["f"])(e,a)&&Object(A["f"])(i,o)||i&&Object(A["f"])(i,a)&&Object(A["f"])(i,o)||Object(A["f"])(e,a)&&Object(A["f"])(e,o))return;this.leave(t)}}},doHide:function(t){t&&this.getTargetId()!==t&&this.computedId!==t||this.forceHide()},doShow:function(t){t&&this.getTargetId()!==t&&this.computedId!==t||this.show()},doDisable:function(t){t&&this.getTargetId()!==t&&this.computedId!==t||this.disable()},doEnable:function(t){t&&this.getTargetId()!==t&&this.computedId!==t||this.enable()},click:function(t){this.$_enabled&&!this.dropdownOpen()&&(Object(A["d"])(t.currentTarget),this.activeTrigger.click=!this.activeTrigger.click,this.isWithActiveTrigger?this.enter(null):this.leave(null))},toggle:function(){this.$_enabled&&!this.dropdownOpen()&&(this.localShow?this.leave(null):this.enter(null))},enter:function(){var t=this,e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:null;e&&(this.activeTrigger["focusin"===e.type?"focus":"hover"]=!0),this.localShow||"in"===this.$_hoverState?this.$_hoverState="in":(this.clearHoverTimeout(),this.$_hoverState="in",this.computedDelay.show?(this.fixTitle(),this.$_hoverTimeout=setTimeout((function(){"in"===t.$_hoverState?t.show():t.localShow||t.restoreTitle()}),this.computedDelay.show)):this.show())},leave:function(){var t=this,e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:null;e&&(this.activeTrigger["focusout"===e.type?"focus":"hover"]=!1,"focusout"===e.type&&Object(ue["a"])(this.computedTriggers,"blur")&&(this.activeTrigger.click=!1,this.activeTrigger.hover=!1)),this.isWithActiveTrigger||(this.clearHoverTimeout(),this.$_hoverState="out",this.computedDelay.hide?this.$_hoverTimeout=setTimeout((function(){"out"===t.$_hoverState&&t.hide()}),this.computedDelay.hide):this.hide())}}});function kv(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);e&&(r=r.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),n.push.apply(n,r)}return n}function Tv(t){for(var e=1;e0&&t[Wv].updateData(e)}))}var o={title:r.title,content:r.content,triggers:r.trigger,placement:r.placement,fallbackPlacement:r.fallbackPlacement,variant:r.variant,customClass:r.customClass,container:r.container,boundary:r.boundary,delay:r.delay,offset:r.offset,noFade:!r.animation,id:r.id,disabled:r.disabled,html:r.html},s=t[Wv].__bv_prev_data__;if(t[Wv].__bv_prev_data__=o,!Object(tr["a"])(o,s)){var c={target:t};Object(f["h"])(o).forEach((function(e){o[e]!==s[e]&&(c[e]="title"!==e&&"content"!==e||!Object(u["f"])(o[e])?o[e]:o[e](t))})),t[Wv].updateData(c)}}},o_=function(t){t[Wv]&&(t[Wv].$destroy(),t[Wv]=null),delete t[Wv]},s_={bind:function(t,e,n){a_(t,e,n)},componentUpdated:function(t,e,n){n.context.$nextTick((function(){a_(t,e,n)}))},unbind:function(t){o_(t)}},c_=L({directives:{VBPopover:s_}}),u_=L({components:{BPopover:Rv},plugins:{VBPopoverPlugin:c_}}),l_=Object(I["d"])({animated:Object(I["c"])(E["g"],null),label:Object(I["c"])(E["u"]),labelHtml:Object(I["c"])(E["u"]),max:Object(I["c"])(E["p"],null),precision:Object(I["c"])(E["p"],null),showProgress:Object(I["c"])(E["g"],null),showValue:Object(I["c"])(E["g"],null),striped:Object(I["c"])(E["g"],null),value:Object(I["c"])(E["p"],0),variant:Object(I["c"])(E["u"])},P["Ub"]),d_=r["default"].extend({name:P["Ub"],mixins:[B["a"]],inject:{bvProgress:{default:function(){return{}}}},props:l_,computed:{progressBarClasses:function(){var t=this.computedAnimated,e=this.computedVariant;return[e?"bg-".concat(e):"",this.computedStriped||t?"progress-bar-striped":"",t?"progress-bar-animated":""]},progressBarStyles:function(){return{width:this.computedValue/this.computedMax*100+"%"}},computedValue:function(){return Object(F["b"])(this.value,0)},computedMax:function(){var t=Object(F["b"])(this.max)||Object(F["b"])(this.bvProgress.max,0);return t>0?t:100},computedPrecision:function(){return Object(nt["d"])(Object(F["c"])(this.precision,Object(F["c"])(this.bvProgress.precision,0)),0)},computedProgress:function(){var t=this.computedPrecision,e=Object(nt["f"])(10,t);return Object(F["a"])(100*e*this.computedValue/this.computedMax/e,t)},computedVariant:function(){return this.variant||this.bvProgress.variant},computedStriped:function(){return Object(u["b"])(this.striped)?this.striped:this.bvProgress.striped||!1},computedAnimated:function(){return Object(u["b"])(this.animated)?this.animated:this.bvProgress.animated||!1},computedShowProgress:function(){return Object(u["b"])(this.showProgress)?this.showProgress:this.bvProgress.showProgress||!1},computedShowValue:function(){return Object(u["b"])(this.showValue)?this.showValue:this.bvProgress.showValue||!1}},render:function(t){var e,n=this.label,r=this.labelHtml,i=this.computedValue,a=this.computedPrecision,o={};return this.hasNormalizedSlot()?e=this.normalizeSlot():n||r?o=Je(r,n):this.computedShowProgress?e=this.computedProgress:this.computedShowValue&&(e=Object(F["a"])(i,a)),t("div",{staticClass:"progress-bar",class:this.progressBarClasses,style:this.progressBarStyles,attrs:{role:"progressbar","aria-valuemin":"0","aria-valuemax":Object(mt["g"])(this.computedMax),"aria-valuenow":Object(F["a"])(i,a)},domProps:o},e)}});function f_(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);e&&(r=r.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),n.push.apply(n,r)}return n}function h_(t){for(var e=1;e0&&void 0!==arguments[0]?arguments[0]:{},e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};this.noCloseOnRouteChange||t.fullPath===e.fullPath||this.hide()})),m_),created:function(){this.$_returnFocusEl=null},mounted:function(){var t=this;this.listenOnRoot(L_,this.handleToggle),this.listenOnRoot(M_,this.handleSync),this.$nextTick((function(){t.emitState(t.localShow)}))},activated:function(){this.emitSync()},beforeDestroy:function(){this.localShow=!1,this.$_returnFocusEl=null},methods:{hide:function(){this.localShow=!1},emitState:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:this.localShow;this.emitOnRoot(k_,this.safeId(),t)},emitSync:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:this.localShow;this.emitOnRoot(T_,this.safeId(),t)},handleToggle:function(t){t&&t===this.safeId()&&(this.localShow=!this.localShow)},handleSync:function(t){var e=this;t&&t===this.safeId()&&this.$nextTick((function(){e.emitSync(e.localShow)}))},onKeydown:function(t){var e=t.keyCode;!this.noCloseOnEsc&&e===ee&&this.localShow&&this.hide()},onBackdropClick:function(){this.localShow&&!this.noCloseOnBackdrop&&this.hide()},onTopTrapFocus:function(){var t=Object(A["n"])(this.$refs.content);this.enforceFocus(t.reverse()[0])},onBottomTrapFocus:function(){var t=Object(A["n"])(this.$refs.content);this.enforceFocus(t[0])},onBeforeEnter:function(){this.$_returnFocusEl=Object(A["g"])(i["i"]?[document.body]:[]),this.isOpen=!0},onAfterEnter:function(t){Object(A["f"])(t,Object(A["g"])())||this.enforceFocus(t),this.$emit(C["U"])},onAfterLeave:function(){this.enforceFocus(this.$_returnFocusEl),this.$_returnFocusEl=null,this.isOpen=!1,this.$emit(C["v"])},enforceFocus:function(t){this.noEnforceFocus||Object(A["d"])(t)}},render:function(t){var e,n=this.bgVariant,r=this.width,i=this.textVariant,a=this.localShow,o=""===this.shadow||this.shadow,s=t(this.tag,{staticClass:w_,class:[(e={shadow:!0===o},j_(e,"shadow-".concat(o),o&&!0!==o),j_(e,"".concat(w_,"-right"),this.right),j_(e,"bg-".concat(n),n),j_(e,"text-".concat(i),i),e),this.sidebarClass],style:{width:r},attrs:this.computedAttrs,directives:[{name:"show",value:a}],ref:"content"},[I_(t,this)]);s=t("transition",{props:this.transitionProps,on:{beforeEnter:this.onBeforeEnter,afterEnter:this.onAfterEnter,afterLeave:this.onAfterLeave}},[s]);var c=t(N["a"],{props:{noFade:this.noSlide}},[B_(t,this)]),u=t(),l=t();return this.backdrop&&a&&(u=t("div",{attrs:{tabindex:"0"},on:{focus:this.onTopTrapFocus}}),l=t("div",{attrs:{tabindex:"0"},on:{focus:this.onBottomTrapFocus}})),t("div",{staticClass:"b-sidebar-outer",style:{zIndex:this.zIndex},attrs:{tabindex:"-1"},on:{keydown:this.onKeydown}},[u,s,l,c])}}),N_=L({components:{BSidebar:R_},plugins:{VBTogglePlugin:ro}});function V_(t,e,n){return e in t?Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,t}var z_=Object(I["d"])({animation:Object(I["c"])(E["u"],"wave"),height:Object(I["c"])(E["u"]),size:Object(I["c"])(E["u"]),type:Object(I["c"])(E["u"],"text"),variant:Object(I["c"])(E["u"]),width:Object(I["c"])(E["u"])},P["Xb"]),W_=r["default"].extend({name:P["Xb"],functional:!0,props:z_,render:function(t,e){var n,r=e.data,i=e.props,a=i.size,o=i.animation,s=i.variant;return t("div",Object(pt["a"])(r,{staticClass:"b-skeleton",style:{width:a||i.width,height:a||i.height},class:(n={},V_(n,"b-skeleton-".concat(i.type),!0),V_(n,"b-skeleton-animate-".concat(o),o),V_(n,"bg-".concat(s),s),n)}))}});function U_(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);e&&(r=r.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),n.push.apply(n,r)}return n}function G_(t){for(var e=1;e0}}});function eg(t,e,n){return e in t?Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,t}var ng={stacked:Object(I["c"])(E["j"],!1)},rg=r["default"].extend({props:ng,computed:{isStacked:function(){var t=this.stacked;return""===t||t},isStackedAlways:function(){return!0===this.isStacked},stackedTableClasses:function(){var t=this.isStackedAlways;return eg({"b-table-stacked":t},"b-table-stacked-".concat(this.stacked),!t&&this.isStacked)}}});function ig(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);e&&(r=r.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),n.push.apply(n,r)}return n}function ag(t){for(var e=1;e0&&!this.computedBusy,[this.tableClass,{"table-striped":this.striped,"table-hover":t,"table-dark":this.dark,"table-bordered":this.bordered,"table-borderless":this.borderless,"table-sm":this.small,border:this.outlined,"b-table-fixed":this.fixed,"b-table-caption-top":this.captionTop,"b-table-no-border-collapse":this.noBorderCollapse},e?"".concat(this.dark?"bg":"table","-").concat(e):"",this.stackedTableClasses,this.selectableTableClasses]},tableAttrs:function(){var t=this.computedItems,e=this.filteredItems,n=this.computedFields,r=this.selectableTableAttrs,i=this.isTableSimple?{}:{"aria-busy":this.computedBusy?"true":"false","aria-colcount":Object(mt["g"])(n.length),"aria-describedby":this.bvAttrs["aria-describedby"]||this.$refs.caption?this.captionId:null},a=t&&e&&e.length>t.length?Object(mt["g"])(e.length):null;return ag(ag(ag({"aria-rowcount":a},this.bvAttrs),{},{id:this.safeId(),role:"table"},i),r)}},render:function(t){var e=this.wrapperClasses,n=this.renderCaption,r=this.renderColgroup,i=this.renderThead,a=this.renderTbody,o=this.renderTfoot,s=[];this.isTableSimple?s.push(this.normalizeSlot()):(s.push(n?n():null),s.push(r?r():null),s.push(i?i():null),s.push(a?a():null),s.push(o?o():null));var u=t("table",{staticClass:"table b-table",class:this.tableClasses,attrs:this.tableAttrs,key:"b-table"},s.filter(c["a"]));return e.length>0?t("div",{class:e,style:this.wrapperStyles,key:"wrap"},[u]):u}});function ug(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);e&&(r=r.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),n.push.apply(n,r)}return n}function lg(t){for(var e=1;e0},_g=Object(I["d"])({animation:Object(I["c"])(E["u"]),columns:Object(I["c"])(E["n"],5,vg),hideHeader:Object(I["c"])(E["g"],!1),rows:Object(I["c"])(E["n"],3,vg),showFooter:Object(I["c"])(E["g"],!1),tableProps:Object(I["c"])(E["q"],{})},P["ac"]),gg=r["default"].extend({name:P["ac"],functional:!0,props:_g,render:function(t,e){var n=e.props,r=n.animation,i=n.columns,a=t("th",[t(W_,{props:{animation:r}})]),o=t("tr",Object(ue["c"])(i,a)),s=t("td",[t(W_,{props:{width:"75%",animation:r}})]),c=t("tr",Object(ue["c"])(i,s)),u=t("tbody",Object(ue["c"])(n.rows,c)),l=n.hideHeader?t():t("thead",[o]),d=n.showFooter?t("tfoot",[o]):t();return t(hg,{props:mg({},n.tableProps)},[l,u,d])}}),yg=Object(I["d"])({loading:Object(I["c"])(E["g"],!1)},P["bc"]),Og=r["default"].extend({name:P["bc"],functional:!0,props:yg,render:function(t,e){var n=e.data,r=e.props,i=e.slots,a=e.scopedSlots,o=i(),s=a||{},c={};return r.loading?t("div",Object(pt["a"])(n,{attrs:{role:"alert","aria-live":"polite","aria-busy":!0},staticClass:"b-skeleton-wrapper",key:"loading"}),Object(pr["b"])(H["F"],c,s,o)):Object(pr["b"])(H["i"],c,s,o)}}),jg=L({components:{BSkeleton:W_,BSkeletonIcon:K_,BSkeletonImg:Q_,BSkeletonTable:gg,BSkeletonWrapper:Og}}),wg=L({components:{BSpinner:hb}});function Mg(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);e&&(r=r.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),n.push.apply(n,r)}return n}function Lg(t){for(var e=1;e0?t:null},$g=function(t){return Object(u["p"])(t)||Ag(t)>0},Fg=Object(I["d"])({colspan:Object(I["c"])(E["p"],null,$g),rowspan:Object(I["c"])(E["p"],null,$g),stackedHeading:Object(I["c"])(E["u"]),stickyColumn:Object(I["c"])(E["g"],!1),variant:Object(I["c"])(E["u"])},P["fc"]),Ig=r["default"].extend({name:P["fc"],mixins:[er["a"],sl["a"],B["a"]],inject:{bvTableTr:{default:function(){return{}}}},inheritAttrs:!1,props:Fg,computed:{tag:function(){return"td"},inTbody:function(){return this.bvTableTr.inTbody},inThead:function(){return this.bvTableTr.inThead},inTfoot:function(){return this.bvTableTr.inTfoot},isDark:function(){return this.bvTableTr.isDark},isStacked:function(){return this.bvTableTr.isStacked},isStackedCell:function(){return this.inTbody&&this.isStacked},isResponsive:function(){return this.bvTableTr.isResponsive},isStickyHeader:function(){return this.bvTableTr.isStickyHeader},hasStickyHeader:function(){return this.bvTableTr.hasStickyHeader},isStickyColumn:function(){return!this.isStacked&&(this.isResponsive||this.hasStickyHeader)&&this.stickyColumn},rowVariant:function(){return this.bvTableTr.variant},headVariant:function(){return this.bvTableTr.headVariant},footVariant:function(){return this.bvTableTr.footVariant},tableVariant:function(){return this.bvTableTr.tableVariant},computedColspan:function(){return Ag(this.colspan)},computedRowspan:function(){return Ag(this.rowspan)},cellClasses:function(){var t=this.variant,e=this.headVariant,n=this.isStickyColumn;return(!t&&this.isStickyHeader&&!e||!t&&n&&this.inTfoot&&!this.footVariant||!t&&n&&this.inThead&&!e||!t&&n&&this.inTbody)&&(t=this.rowVariant||this.tableVariant||"b-table-default"),[t?"".concat(this.isDark?"bg":"table","-").concat(t):null,n?"b-table-sticky-column":null]},cellAttrs:function(){var t=this.stackedHeading,e=this.inThead||this.inTfoot,n=this.computedColspan,r=this.computedRowspan,i="cell",a=null;return e?(i="columnheader",a=n>0?"colspan":"col"):Object(A["t"])(this.tag,"th")&&(i="rowheader",a=r>0?"rowgroup":"row"),Eg(Eg({colspan:n,rowspan:r,role:i,scope:a},this.bvAttrs),{},{"data-label":this.isStackedCell&&!Object(u["p"])(t)?Object(mt["g"])(t):null})}},render:function(t){var e=[this.normalizeSlot()];return t(this.tag,{class:this.cellClasses,attrs:this.cellAttrs,on:this.bvListeners},[this.isStackedCell?t("div",[e]):e])}});function Bg(t,e,n){return e in t?Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,t}var Rg="busy",Ng=C["gb"]+Rg,Vg=Bg({},Rg,Object(I["c"])(E["g"],!1)),zg=r["default"].extend({props:Vg,data:function(){return{localBusy:!1}},computed:{computedBusy:function(){return this[Rg]||this.localBusy}},watch:{localBusy:function(t,e){t!==e&&this.$emit(Ng,t)}},methods:{stopIfBusy:function(t){return!!this.computedBusy&&(Object(le["f"])(t),!0)},renderBusy:function(){var t=this.tbodyTrClass,e=this.tbodyTrAttr,n=this.$createElement;return this.computedBusy&&this.hasNormalizedSlot(H["bb"])?n(Yg,{staticClass:"b-table-busy-slot",class:[Object(u["f"])(t)?t(null,H["bb"]):t],attrs:Object(u["f"])(e)?e(null,H["bb"]):e,key:"table-busy-slot"},[n(Ig,{props:{colspan:this.computedFields.length||null}},[this.normalizeSlot(H["bb"])])]):null}}}),Wg={caption:Object(I["c"])(E["u"]),captionHtml:Object(I["c"])(E["u"])},Ug=r["default"].extend({props:Wg,computed:{captionId:function(){return this.isStacked?this.safeId("_caption_"):null}},methods:{renderCaption:function(){var t=this.caption,e=this.captionHtml,n=this.$createElement,r=n(),i=this.hasNormalizedSlot(H["cb"]);return(i||t||e)&&(r=n("caption",{attrs:{id:this.captionId},domProps:i?{}:Je(e,t),key:"caption",ref:"caption"},this.normalizeSlot(H["cb"]))),r}}}),Gg={},Jg=r["default"].extend({methods:{renderColgroup:function(){var t=this.computedFields,e=this.$createElement,n=e();return this.hasNormalizedSlot(H["db"])&&(n=e("colgroup",{key:"colgroup"},[this.normalizeSlot(H["db"],{columns:t.length,fields:t})])),n}}}),qg={emptyFilteredHtml:Object(I["c"])(E["u"]),emptyFilteredText:Object(I["c"])(E["u"],"There are no records matching your request"),emptyHtml:Object(I["c"])(E["u"]),emptyText:Object(I["c"])(E["u"],"There are no records to show"),showEmpty:Object(I["c"])(E["g"],!1)},Kg=r["default"].extend({props:qg,methods:{renderEmpty:function(){var t=this.computedItems,e=this.$createElement,n=e();if(this.showEmpty&&(!t||0===t.length)&&(!this.computedBusy||!this.hasNormalizedSlot(H["bb"]))){var r=this.computedFields,i=this.isFiltered,a=this.emptyText,o=this.emptyHtml,s=this.emptyFilteredText,c=this.emptyFilteredHtml,l=this.tbodyTrClass,d=this.tbodyTrAttr;n=this.normalizeSlot(i?H["o"]:H["n"],{emptyFilteredHtml:c,emptyFilteredText:s,emptyHtml:o,emptyText:a,fields:r,items:t}),n||(n=e("div",{class:["text-center","my-2"],domProps:i?Je(c,s):Je(o,a)})),n=e(Ig,{props:{colspan:r.length||null}},[e("div",{attrs:{role:"alert","aria-live":"polite"}},[n])]),n=e(Yg,{staticClass:"b-table-empty-row",class:[Object(u["f"])(l)?l(null,"row-empty"):l],attrs:Object(u["f"])(d)?d(null,"row-empty"):d,key:i?"b-empty-filtered-row":"b-empty-row"},[n])}return n}}}),Xg=function t(e){return Object(u["p"])(e)?"":Object(u["j"])(e)&&!Object(u["c"])(e)?Object(f["h"])(e).sort().map((function(n){return t(e[n])})).filter((function(t){return!!t})).join(" "):Object(mt["g"])(e)};function Zg(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);e&&(r=r.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),n.push.apply(n,r)}return n}function Qg(t){for(var e=1;e3&&void 0!==arguments[3]?arguments[3]:{},i=Object(f["h"])(r).reduce((function(e,n){var i=r[n],a=i.filterByFormatted,o=Object(u["f"])(a)?a:a?i.formatter:null;return Object(u["f"])(o)&&(e[n]=o(t[n],n,t)),e}),Object(f["b"])(t)),a=Object(f["h"])(i).filter((function(t){return!iy[t]&&!(Object(u["a"])(e)&&e.length>0&&Object(ue["a"])(e,t))&&!(Object(u["a"])(n)&&n.length>0&&!Object(ue["a"])(n,t))}));return Object(f["k"])(i,a)},sy=function(t,e,n,r){return Object(u["j"])(t)?Xg(oy(t,e,n,r)):""};function cy(t){return fy(t)||dy(t)||ly(t)||uy()}function uy(){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 ly(t,e){if(t){if("string"===typeof t)return hy(t,e);var n=Object.prototype.toString.call(t).slice(8,-1);return"Object"===n&&t.constructor&&(n=t.constructor.name),"Map"===n||"Set"===n?Array.from(t):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?hy(t,e):void 0}}function dy(t){if("undefined"!==typeof Symbol&&Symbol.iterator in Object(t))return Array.from(t)}function fy(t){if(Array.isArray(t))return hy(t)}function hy(t,e){(null==e||e>t.length)&&(e=t.length);for(var n=0,r=new Array(e);n0&&Object(h["a"])(py,P["ec"]),t},localFiltering:function(){return!this.hasProvider||!!this.noProviderFiltering},filteredCheck:function(){var t=this.filteredItems,e=this.localItems,n=this.localFilter;return{filteredItems:t,localItems:e,localFilter:n}},localFilterFn:function(){var t=this.filterFunction;return Object(I["b"])(t)?t:null},filteredItems:function(){var t=this.localItems,e=this.localFilter,n=this.localFiltering?this.filterFnFactory(this.localFilterFn,e)||this.defaultFilterFnFactory(e):null;return n&&t.length>0?t.filter(n):t}},watch:{computedFilterDebounce:function(t){!t&&this.$_filterTimer&&(this.clearFilterTimer(),this.localFilter=this.filterSanitize(this.filter))},filter:{deep:!0,handler:function(t){var e=this,n=this.computedFilterDebounce;this.clearFilterTimer(),n&&n>0?this.$_filterTimer=setTimeout((function(){e.localFilter=e.filterSanitize(t)}),n):this.localFilter=this.filterSanitize(t)}},filteredCheck:function(t){var e=t.filteredItems,n=t.localFilter,r=!1;n?Object(tr["a"])(n,[])||Object(tr["a"])(n,{})?r=!1:n&&(r=!0):r=!1,r&&this.$emit(C["q"],e,e.length),this.isFiltered=r},isFiltered:function(t,e){if(!1===t&&!0===e){var n=this.localItems;this.$emit(C["q"],n,n.length)}}},created:function(){var t=this;this.$_filterTimer=null,this.$nextTick((function(){t.isFiltered=Boolean(t.localFilter)}))},beforeDestroy:function(){this.clearFilterTimer()},methods:{clearFilterTimer:function(){clearTimeout(this.$_filterTimer),this.$_filterTimer=null},filterSanitize:function(t){return!this.localFiltering||this.localFilterFn||Object(u["n"])(t)||Object(u["m"])(t)?Object(o["a"])(t):""},filterFnFactory:function(t,e){if(!t||!Object(u["f"])(t)||!e||Object(tr["a"])(e,[])||Object(tr["a"])(e,{}))return null;var n=function(n){return t(n,e)};return n},defaultFilterFnFactory:function(t){var e=this;if(!t||!Object(u["n"])(t)&&!Object(u["m"])(t))return null;var n=t;if(Object(u["n"])(n)){var r=Object(mt["a"])(t).replace(s["w"],"\\s+");n=new RegExp(".*".concat(r,".*"),"i")}var i=function(t){return n.lastIndex=0,n.test(sy(t,e.computedFilterIgnored,e.computedFilterIncluded,e.computedFieldsObj))};return i}}}),vy=function(t,e){var n=null;return Object(u["n"])(e)?n={key:t,label:e}:Object(u["f"])(e)?n={key:t,formatter:e}:Object(u["j"])(e)?(n=Object(f["b"])(e),n.key=n.key||t):!1!==e&&(n={key:t}),n},_y=function(t,e){var n=[];if(Object(u["a"])(t)&&t.filter(c["a"]).forEach((function(t){if(Object(u["n"])(t))n.push({key:t,label:Object(mt["f"])(t)});else if(Object(u["j"])(t)&&t.key&&Object(u["n"])(t.key))n.push(Object(f["b"])(t));else if(Object(u["j"])(t)&&1===Object(f["h"])(t).length){var e=Object(f["h"])(t)[0],r=vy(e,t[e]);r&&n.push(r)}})),0===n.length&&Object(u["a"])(e)&&e.length>0){var r=e[0];Object(f["h"])(r).forEach((function(t){iy[t]||n.push({key:t,label:Object(mt["f"])(t)})}))}var i={};return n.filter((function(t){return!i[t.key]&&(i[t.key]=!0,t.label=Object(u["n"])(t.label)?t.label:Object(mt["f"])(t.key),!0)}))};function gy(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);e&&(r=r.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),n.push.apply(n,r)}return n}function yy(t){for(var e=1;e0&&t.some(c["a"])},selectableIsMultiSelect:function(){return this.isSelectable&&Object(ue["a"])(["range","multi"],this.selectMode)},selectableTableClasses:function(){var t,e=this.isSelectable;return t={"b-table-selectable":e},Hy(t,"b-table-select-".concat(this.selectMode),e),Hy(t,"b-table-selecting",this.selectableHasSelection),Hy(t,"b-table-selectable-no-click",e&&!this.hasSelectableRowClick),t},selectableTableAttrs:function(){return{"aria-multiselectable":this.isSelectable?this.selectableIsMultiSelect?"true":"false":null}}},watch:{computedItems:function(t,e){var n=!1;if(this.isSelectable&&this.selectedRows.length>0){n=Object(u["a"])(t)&&Object(u["a"])(e)&&t.length===e.length;for(var r=0;n&&r=0&&t0&&(this.selectedLastClicked=-1,this.selectedRows=this.selectableIsMultiSelect?Object(ue["c"])(t,!0):[!0])},isRowSelected:function(t){return!(!Object(u["h"])(t)||!this.selectedRows[t])},clearSelected:function(){this.selectedLastClicked=-1,this.selectedRows=[]},selectableRowClasses:function(t){if(this.isSelectable&&this.isRowSelected(t)){var e=this.selectedVariant;return Hy({"b-table-row-selected":!0},"".concat(this.dark?"bg":"table","-").concat(e),e)}return{}},selectableRowAttrs:function(t){return{"aria-selected":this.isSelectable?this.isRowSelected(t)?"true":"false":null}},setSelectionHandlers:function(t){var e=t&&!this.noSelectOnClick?"$on":"$off";this[e](C["L"],this.selectionHandler),this[e](C["q"],this.clearSelected),this[e](C["i"],this.clearSelected)},selectionHandler:function(t,e,n){if(this.isSelectable&&!this.noSelectOnClick){var r=this.selectMode,i=this.selectedLastRow,a=this.selectedRows.slice(),o=!a[e];if("single"===r)a=[];else if("range"===r)if(i>-1&&n.shiftKey){for(var s=Object(nt["e"])(i,e);s<=Object(nt["d"])(i,e);s++)a[s]=!0;o=!0}else n.ctrlKey||n.metaKey||(a=[],o=!0),this.selectedLastRow=o?e:-1;a[e]=o,this.selectedRows=a}else this.clearSelected()}}}),Ry=function(t,e){return t.map((function(t,e){return[e,t]})).sort(function(t,e){return this(t[1],e[1])||t[0]-e[0]}.bind(e)).map((function(t){return t[1]}))},Ny=function(t){return Object(u["p"])(t)?"":Object(u["i"])(t)?Object(F["b"])(t,t):t},Vy=function(t,e){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},r=n.sortBy,i=void 0===r?null:r,a=n.formatter,o=void 0===a?null:a,s=n.locale,c=void 0===s?void 0:s,l=n.localeOptions,f=void 0===l?{}:l,h=n.nullLast,p=void 0!==h&&h,m=d(t,i,null),b=d(e,i,null);return Object(u["f"])(o)&&(m=o(m,i,t),b=o(b,i,e)),m=Ny(m),b=Ny(b),Object(u["c"])(m)&&Object(u["c"])(b)||Object(u["h"])(m)&&Object(u["h"])(b)?mb?1:0:p&&""===m&&""!==b?1:p&&""!==m&&""===b?-1:Xg(m).localeCompare(Xg(b),c,f)};function zy(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);e&&(r=r.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),n.push.apply(n,r)}return n}function Wy(t){for(var e=1;e0&&void 0!==arguments[0]?arguments[0]:document,e=Object(A["l"])();return!!(e&&""!==e.toString().trim()&&e.containsNode&&Object(A["s"])(t))&&e.containsNode(t,!0)},dO=Object(I["d"])(Fg,P["mc"]),fO=r["default"].extend({name:P["mc"],extends:Ig,props:dO,computed:{tag:function(){return"th"}}});function hO(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);e&&(r=r.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),n.push.apply(n,r)}return n}function pO(t){for(var e=1;et.length)&&(e=t.length);for(var n=0,r=new Array(e);n0&&(g=String((o-1)*s+e+1));var y=Object(mt["g"])(d(t,a))||null,O=y||Object(mt["g"])(e),j=y?this.safeId("_row_".concat(y)):null,w=this.selectableRowClasses?this.selectableRowClasses(e):{},M=this.selectableRowAttrs?this.selectableRowAttrs(e):{},L=Object(u["f"])(c)?c(t,"row"):c,k=Object(u["f"])(l)?l(t,"row"):l;if(b.push(f(Yg,{class:[L,w,p?"b-table-has-details":""],props:{variant:t[ny]||null},attrs:pO(pO({id:j},k),{},{tabindex:m?"0":null,"data-pk":y||null,"aria-details":v,"aria-owns":v,"aria-rowindex":g},M),on:{mouseenter:this.rowHovered,mouseleave:this.rowUnhovered},key:"__b-table-row-".concat(O,"__"),ref:"item-rows",refInFor:!0},_)),p){var T={item:t,index:e,fields:r,toggleDetails:this.toggleDetailsFactory(h,t)};this.supportsSelectableRows&&(T.rowSelected=this.isRowSelected(e),T.selectRow=function(){return n.selectRow(e)},T.unselectRow=function(){return n.unselectRow(e)});var D=f(Ig,{props:{colspan:r.length},class:this.detailsTdClass},[this.normalizeSlot(H["ab"],T)]);i&&b.push(f("tr",{staticClass:"d-none",attrs:{"aria-hidden":"true",role:"presentation"},key:"__b-table-details-stripe__".concat(O)}));var S=Object(u["f"])(this.tbodyTrClass)?this.tbodyTrClass(t,H["ab"]):this.tbodyTrClass,Y=Object(u["f"])(this.tbodyTrAttr)?this.tbodyTrAttr(t,H["ab"]):this.tbodyTrAttr;b.push(f(Yg,{staticClass:"b-table-details",class:[S],props:{variant:t[ny]||null},attrs:pO(pO({},Y),{},{id:v,tabindex:"-1"}),key:"__b-table-details__".concat(O)},[D]))}else h&&(b.push(f()),i&&b.push(f()));return b}}});function MO(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);e&&(r=r.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),n.push.apply(n,r)}return n}function LO(t){for(var e=1;e0&&n&&n.length>0?Object(ue["f"])(e.children).filter((function(t){return Object(ue["a"])(n,t)})):[]},getTbodyTrIndex:function(t){if(!Object(A["s"])(t))return-1;var e="TR"===t.tagName?t:Object(A["e"])("tr",t,!0);return e?this.getTbodyTrs().indexOf(e):-1},emitTbodyRowEvent:function(t,e){if(t&&this.hasListener(t)&&e&&e.target){var n=this.getTbodyTrIndex(e.target);if(n>-1){var r=this.computedItems[n];this.$emit(t,r,n,e)}}},tbodyRowEvtStopped:function(t){return this.stopIfBusy&&this.stopIfBusy(t)},onTbodyRowKeydown:function(t){var e=t.target,n=t.keyCode;if(!this.tbodyRowEvtStopped(t)&&"TR"===e.tagName&&Object(A["q"])(e)&&0===e.tabIndex)if(Object(ue["a"])([te,se],n))Object(le["f"])(t),this.onTBodyRowClicked(t);else if(Object(ue["a"])([ce,Zt,ne,Qt],n)){var r=this.getTbodyTrIndex(e);if(r>-1){Object(le["f"])(t);var i=this.getTbodyTrs(),a=t.shiftKey;n===ne||a&&n===ce?Object(A["d"])(i[0]):n===Qt||a&&n===Zt?Object(A["d"])(i[i.length-1]):n===ce&&r>0?Object(A["d"])(i[r-1]):n===Zt&&rt.length)&&(e=t.length);for(var n=0,r=new Array(e);n0&&void 0!==arguments[0]&&arguments[0],n=this.computedFields,r=this.isSortable,i=this.isSelectable,a=this.headVariant,o=this.footVariant,s=this.headRowVariant,l=this.footRowVariant,d=this.$createElement;if(this.isStackedAlways||0===n.length)return d();var f=r||this.hasListener(C["u"]),h=i?this.selectAllRows:ki,p=i?this.clearSelected:ki,m=function(n,i){var a=n.label,o=n.labelHtml,s=n.variant,u=n.stickyColumn,l=n.key,m=null;n.label.trim()||n.headerTitle||(m=Object(mt["f"])(n.key));var b={};f&&(b.click=function(r){t.headClicked(r,n,e)},b.keydown=function(r){var i=r.keyCode;i!==te&&i!==se||t.headClicked(r,n,e)});var v=r?t.sortTheadThAttrs(l,n,e):{},_=r?t.sortTheadThClasses(l,n,e):null,g=r?t.sortTheadThLabel(l,n,e):null,y={class:[t.fieldClasses(n),_],props:{variant:s,stickyColumn:u},style:n.thStyle||{},attrs:qO(qO({tabindex:f&&n.sortable?"0":null,abbr:n.headerAbbr||null,title:n.headerTitle||null,"aria-colindex":i+1,"aria-label":m},t.getThValues(null,l,n.thAttr,e?"foot":"head",{})),v),on:b,key:l},O=[XO(l),XO(l.toLowerCase()),XO()];e&&(O=[ZO(l),ZO(l.toLowerCase()),ZO()].concat(NO(O)));var j={label:a,column:l,field:n,isFoot:e,selectAllRows:h,clearSelected:p},w=t.normalizeSlot(O,j)||d("div",{domProps:Je(o,a)}),M=g?d("span",{staticClass:"sr-only"}," (".concat(g,")")):null;return d(fO,y,[w,M].filter(c["a"]))},b=n.map(m).filter(c["a"]),v=[];if(e)v.push(d(Yg,{class:this.tfootTrClass,props:{variant:Object(u["p"])(l)?s:l}},b));else{var _={columns:n.length,fields:n,selectAllRows:h,clearSelected:p};v.push(this.normalizeSlot(H["hb"],_)||d()),v.push(d(Yg,{class:this.theadTrClass,props:{variant:s}},b))}return d(e?EO:RO,{class:(e?this.tfootClass:this.theadClass)||null,props:e?{footVariant:o||a||null}:{headVariant:a||null},key:e?"bv-tfoot":"bv-thead"},v)}}}),ej={},nj=r["default"].extend({methods:{renderTopRow:function(){var t=this.computedFields,e=this.stacked,n=this.tbodyTrClass,r=this.tbodyTrAttr,i=this.$createElement;return this.hasNormalizedSlot(H["kb"])&&!0!==e&&""!==e?i(Yg,{staticClass:"b-table-top-row",class:[Object(u["f"])(n)?n(null,"row-top"):n],attrs:Object(u["f"])(r)?r(null,"row-top"):r,key:"b-top-row"},[this.normalizeSlot(H["kb"],{columns:t.length,fields:t})]):i()}}});function rj(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);e&&(r=r.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),n.push.apply(n,r)}return n}function ij(t){for(var e=1;e0&&void 0!==arguments[0])||arguments[0];if(this.$_observer&&this.$_observer.disconnect(),this.$_observer=null,e){var n=function(){t.$nextTick((function(){Object(A["D"])((function(){t.updateTabs()}))}))};this.$_observer=xi(this.$refs.content,n,{childList:!0,subtree:!1,attributes:!0,attributeFilter:["id"]})}},getTabs:function(){var t=this.registeredTabs.filter((function(t){return 0===t.$children.filter((function(t){return t._isTab})).length})),e=[];if(i["i"]&&t.length>0){var n=t.map((function(t){return"#".concat(t.safeId())})).join(", ");e=Object(A["F"])(n,this.$el).map((function(t){return t.id})).filter(c["a"])}return Ry(t,(function(t,n){return e.indexOf(t.safeId())-e.indexOf(n.safeId())}))},updateTabs:function(){var t=this.getTabs(),e=t.indexOf(t.slice().reverse().find((function(t){return t.localActive&&!t.disabled})));if(e<0){var n=this.currentTab;n>=t.length?e=t.indexOf(t.slice().reverse().find(Tj)):t[n]&&!t[n].disabled&&(e=n)}e<0&&(e=t.indexOf(t.find(Tj))),t.forEach((function(t,n){t.localActive=n===e})),this.tabs=t,this.currentTab=e},getButtonForTab:function(t){return(this.$refs.buttons||[]).find((function(e){return e.tab===t}))},updateButton:function(t){var e=this.getButtonForTab(t);e&&e.$forceUpdate&&e.$forceUpdate()},activateTab:function(t){var e=this.currentTab,n=this.tabs,r=!1;if(t){var i=n.indexOf(t);if(i!==e&&i>-1&&!t.disabled){var a=new po["a"](C["a"],{cancelable:!0,vueTarget:this,componentId:this.safeId()});this.$emit(a.type,i,e,a),a.defaultPrevented||(this.currentTab=i,r=!0)}}return r||this[Lj]===e||this.$emit(kj,e),r},deactivateTab:function(t){return!!t&&this.activateTab(this.tabs.filter((function(e){return e!==t})).find(Tj))},focusButton:function(t){var e=this;this.$nextTick((function(){Object(A["d"])(e.getButtonForTab(t))}))},emitTabClick:function(t,e){Object(u["d"])(e)&&t&&t.$emit&&!t.disabled&&t.$emit(C["f"],e)},clickTab:function(t,e){this.activateTab(t),this.emitTabClick(t,e)},firstTab:function(t){var e=this.tabs.find(Tj);this.activateTab(e)&&t&&(this.focusButton(e),this.emitTabClick(e,t))},previousTab:function(t){var e=Object(nt["d"])(this.currentTab,0),n=this.tabs.slice(0,e).reverse().find(Tj);this.activateTab(n)&&t&&(this.focusButton(n),this.emitTabClick(n,t))},nextTab:function(t){var e=Object(nt["d"])(this.currentTab,-1),n=this.tabs.slice(e+1).find(Tj);this.activateTab(n)&&t&&(this.focusButton(n),this.emitTabClick(n,t))},lastTab:function(t){var e=this.tabs.slice().reverse().find(Tj);this.activateTab(e)&&t&&(this.focusButton(e),this.emitTabClick(e,t))}},render:function(t){var e=this,n=this.align,r=this.card,i=this.end,a=this.fill,o=this.firstTab,s=this.justified,c=this.lastTab,u=this.nextTab,l=this.noKeyNav,d=this.noNavStyle,f=this.pills,h=this.previousTab,p=this.small,m=this.tabs,b=this.vertical,v=m.find((function(t){return t.localActive&&!t.disabled})),_=m.find((function(t){return!t.disabled})),g=m.map((function(n,r){var i,a=n.safeId,s=null;return l||(s=-1,(n===v||!v&&n===_)&&(s=null)),t(Dj,{props:{controls:a?a():null,id:n.controlledBy||(a?a("_BV_tab_button_"):null),noKeyNav:l,posInSet:r+1,setSize:m.length,tab:n,tabIndex:s},on:(i={},gj(i,C["f"],(function(t){e.clickTab(n,t)})),gj(i,C["r"],o),gj(i,C["H"],h),gj(i,C["C"],u),gj(i,C["z"],c),i),key:n[x["a"]]||r,ref:"buttons",refInFor:!0})})),y=t(gm,{class:this.localNavClass,attrs:{role:"tablist",id:this.safeId("_BV_tab_controls_")},props:{fill:a,justified:s,align:n,tabs:!d&&!f,pills:!d&&f,vertical:b,small:p,cardHeader:r&&!b},ref:"nav"},[this.normalizeSlot(H["fb"])||t(),g,this.normalizeSlot(H["eb"])||t()]);y=t("div",{class:[{"card-header":r&&!b&&!i,"card-footer":r&&!b&&i,"col-auto":b},this.navWrapperClass],key:"bv-tabs-nav"},[y]);var O=this.normalizeSlot()||[],j=t();0===O.length&&(j=t("div",{class:["tab-pane","active",{"card-body":r}],key:"bv-empty-tab"},this.normalizeSlot(H["n"])));var w=t("div",{staticClass:"tab-content",class:[{col:b},this.contentClass],attrs:{id:this.safeId("_BV_tab_container_")},key:"bv-content",ref:"content"},[O,j]);return t(this.tag,{staticClass:"tabs",class:{row:b,"no-gutters":b&&r},attrs:{id:this.safeId()}},[i?w:t(),y,i?t():w])}});function Pj(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);e&&(r=r.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),n.push.apply(n,r)}return n}function Cj(t){for(var e=1;et.length)&&(e=t.length);for(var n=0,r=new Array(e);n1&&void 0!==arguments[1]?arguments[1]:{};t&&!Object(h["d"])(tw)&&n(Uj(Uj({},iw(e)),{},{toastContent:t}),this._vm)}},{key:"show",value:function(t){t&&this._root.$emit(Object(le["d"])(P["pc"],C["T"]),t)}},{key:"hide",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:null;this._root.$emit(Object(le["d"])(P["pc"],C["w"]),t)}}]),t}();t.mixin({beforeCreate:function(){this[ew]=new r(this)}}),Object(f["g"])(t.prototype,tw)||Object(f["e"])(t.prototype,tw,{get:function(){return this&&this[ew]||Object(h["a"])('"'.concat(tw,'" must be accessed from a Vue instance "this" context.'),P["pc"]),this[ew]}})},ow=L({plugins:{plugin:aw}}),sw=n("0f65"),cw=L({components:{BToast:Rj["a"],BToaster:sw["a"]},plugins:{BVToastPlugin:ow}});function uw(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);e&&(r=r.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),n.push.apply(n,r)}return n}function lw(t){for(var e=1;e=n){var r=this.$targets[this.$targets.length-1];this.$activeTarget!==r&&this.activate(r)}else{if(this.$activeTarget&&t0)return this.$activeTarget=null,void this.clear();for(var i=this.$offsets.length;i--;){var a=this.$activeTarget!==this.$targets[i]&&t>=this.$offsets[i]&&(Object(u["o"])(this.$offsets[i+1])||t0&&this.$root&&this.$root.$emit(Xw,t,n)}},{key:"clear",value:function(){var t=this;Object(A["F"])("".concat(this.$selector,", ").concat(Uw),this.$el).filter((function(t){return Object(A["p"])(t,Vw)})).forEach((function(e){return t.setActiveState(e,!1)}))}},{key:"setActiveState",value:function(t,e){t&&(e?Object(A["b"])(t,Vw):Object(A["A"])(t,Vw))}}],[{key:"Name",get:function(){return Rw}},{key:"Default",get:function(){return tM}},{key:"DefaultType",get:function(){return eM}}]),t}(),oM="__BV_ScrollSpy__",sM=/^\d+$/,cM=/^(auto|position|offset)$/,uM=function(t){var e={};return t.arg&&(e.element="#".concat(t.arg)),Object(f["h"])(t.modifiers).forEach((function(t){sM.test(t)?e.offset=Object(F["c"])(t,0):cM.test(t)&&(e.method=t)})),Object(u["n"])(t.value)?e.element=t.value:Object(u["h"])(t.value)?e.offset=Object(nt["g"])(t.value):Object(u["j"])(t.value)&&Object(f["h"])(t.value).filter((function(t){return!!aM.DefaultType[t]})).forEach((function(n){e[n]=t.value[n]})),e},lM=function(t,e,n){if(i["i"]){var r=uM(e);t[oM]?t[oM].updateConfig(r,n.context.$root):t[oM]=new aM(t,r,n.context.$root)}},dM=function(t){t[oM]&&(t[oM].dispose(),t[oM]=null,delete t[oM])},fM={bind:function(t,e,n){lM(t,e,n)},inserted:function(t,e,n){lM(t,e,n)},update:function(t,e,n){e.value!==e.oldValue&&lM(t,e,n)},componentUpdated:function(t,e,n){e.value!==e.oldValue&&lM(t,e,n)},unbind:function(t){dM(t)}},hM=L({directives:{VBScrollspy:fM}}),pM=L({directives:{VBVisible:si}}),mM=L({plugins:{VBHoverPlugin:Cw,VBModalPlugin:Ew,VBPopoverPlugin:c_,VBScrollspyPlugin:hM,VBTogglePlugin:ro,VBTooltipPlugin:Yw,VBVisiblePlugin:pM}}),bM="BootstrapVue",vM=M({plugins:{componentsPlugin:Pw,directivesPlugin:mM}}),_M={install:vM,NAME:bM}},"5fb2":function(t,e,n){"use strict";var r=2147483647,i=36,a=1,o=26,s=38,c=700,u=72,l=128,d="-",f=/[^\0-\u007E]/,h=/[.\u3002\uFF0E\uFF61]/g,p="Overflow: input needs wider integers to process",m=i-a,b=Math.floor,v=String.fromCharCode,_=function(t){var e=[],n=0,r=t.length;while(n=55296&&i<=56319&&n>1,t+=b(t/e);t>m*o>>1;r+=i)t=b(t/m);return b(r+(m+1)*t/(t+s))},O=function(t){var e=[];t=_(t);var n,s,c=t.length,f=l,h=0,m=u;for(n=0;n=f&&sb((r-h)/M))throw RangeError(p);for(h+=(w-f)*M,f=w,n=0;nr)throw RangeError(p);if(s==f){for(var L=h,k=i;;k+=i){var T=k<=m?a:k>=m+o?o:k-m;if(L1?n-1:0),i=1;il){var h,p=u(arguments[l++]),m=d?a(p).concat(d(p)):a(p),b=m.length,v=0;while(b>v)h=m[v++],r&&!f.call(p,h)||(n[h]=p[h])}return n}:l},6117:function(t,e,n){(function(t,e){e(n("c1df"))})(0,(function(t){"use strict"; -//! moment.js locale configuration -var e=t.defineLocale("ug-cn",{months:"يانۋار_فېۋرال_مارت_ئاپرېل_ماي_ئىيۇن_ئىيۇل_ئاۋغۇست_سېنتەبىر_ئۆكتەبىر_نويابىر_دېكابىر".split("_"),monthsShort:"يانۋار_فېۋرال_مارت_ئاپرېل_ماي_ئىيۇن_ئىيۇل_ئاۋغۇست_سېنتەبىر_ئۆكتەبىر_نويابىر_دېكابىر".split("_"),weekdays:"يەكشەنبە_دۈشەنبە_سەيشەنبە_چارشەنبە_پەيشەنبە_جۈمە_شەنبە".split("_"),weekdaysShort:"يە_دۈ_سە_چا_پە_جۈ_شە".split("_"),weekdaysMin:"يە_دۈ_سە_چا_پە_جۈ_شە".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY-MM-DD",LL:"YYYY-يىلىM-ئاينىڭD-كۈنى",LLL:"YYYY-يىلىM-ئاينىڭD-كۈنى، HH:mm",LLLL:"dddd، YYYY-يىلىM-ئاينىڭD-كۈنى، HH:mm"},meridiemParse:/يېرىم كېچە|سەھەر|چۈشتىن بۇرۇن|چۈش|چۈشتىن كېيىن|كەچ/,meridiemHour:function(t,e){return 12===t&&(t=0),"يېرىم كېچە"===e||"سەھەر"===e||"چۈشتىن بۇرۇن"===e?t:"چۈشتىن كېيىن"===e||"كەچ"===e?t+12:t>=11?t:t+12},meridiem:function(t,e,n){var r=100*t+e;return r<600?"يېرىم كېچە":r<900?"سەھەر":r<1130?"چۈشتىن بۇرۇن":r<1230?"چۈش":r<1800?"چۈشتىن كېيىن":"كەچ"},calendar:{sameDay:"[بۈگۈن سائەت] LT",nextDay:"[ئەتە سائەت] LT",nextWeek:"[كېلەركى] dddd [سائەت] LT",lastDay:"[تۆنۈگۈن] LT",lastWeek:"[ئالدىنقى] dddd [سائەت] LT",sameElse:"L"},relativeTime:{future:"%s كېيىن",past:"%s بۇرۇن",s:"نەچچە سېكونت",ss:"%d سېكونت",m:"بىر مىنۇت",mm:"%d مىنۇت",h:"بىر سائەت",hh:"%d سائەت",d:"بىر كۈن",dd:"%d كۈن",M:"بىر ئاي",MM:"%d ئاي",y:"بىر يىل",yy:"%d يىل"},dayOfMonthOrdinalParse:/\d{1,2}(-كۈنى|-ئاي|-ھەپتە)/,ordinal:function(t,e){switch(e){case"d":case"D":case"DDD":return t+"-كۈنى";case"w":case"W":return t+"-ھەپتە";default:return t}},preparse:function(t){return t.replace(/،/g,",")},postformat:function(t){return t.replace(/,/g,"،")},week:{dow:1,doy:7}});return e}))},"62e4":function(t,e){t.exports=function(t){return t.webpackPolyfill||(t.deprecate=function(){},t.paths=[],t.children||(t.children=[]),Object.defineProperty(t,"loaded",{enumerable:!0,get:function(){return t.l}}),Object.defineProperty(t,"id",{enumerable:!0,get:function(){return t.i}}),t.webpackPolyfill=1),t}},6403:function(t,e,n){(function(t,e){e(n("c1df"))})(0,(function(t){"use strict"; -//! moment.js locale configuration -var e=t.defineLocale("ms-my",{months:"Januari_Februari_Mac_April_Mei_Jun_Julai_Ogos_September_Oktober_November_Disember".split("_"),monthsShort:"Jan_Feb_Mac_Apr_Mei_Jun_Jul_Ogs_Sep_Okt_Nov_Dis".split("_"),weekdays:"Ahad_Isnin_Selasa_Rabu_Khamis_Jumaat_Sabtu".split("_"),weekdaysShort:"Ahd_Isn_Sel_Rab_Kha_Jum_Sab".split("_"),weekdaysMin:"Ah_Is_Sl_Rb_Km_Jm_Sb".split("_"),longDateFormat:{LT:"HH.mm",LTS:"HH.mm.ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY [pukul] HH.mm",LLLL:"dddd, D MMMM YYYY [pukul] HH.mm"},meridiemParse:/pagi|tengahari|petang|malam/,meridiemHour:function(t,e){return 12===t&&(t=0),"pagi"===e?t:"tengahari"===e?t>=11?t:t+12:"petang"===e||"malam"===e?t+12:void 0},meridiem:function(t,e,n){return t<11?"pagi":t<15?"tengahari":t<19?"petang":"malam"},calendar:{sameDay:"[Hari ini pukul] LT",nextDay:"[Esok pukul] LT",nextWeek:"dddd [pukul] LT",lastDay:"[Kelmarin pukul] LT",lastWeek:"dddd [lepas pukul] LT",sameElse:"L"},relativeTime:{future:"dalam %s",past:"%s yang lepas",s:"beberapa saat",ss:"%d saat",m:"seminit",mm:"%d minit",h:"sejam",hh:"%d jam",d:"sehari",dd:"%d hari",M:"sebulan",MM:"%d bulan",y:"setahun",yy:"%d tahun"},week:{dow:1,doy:7}});return e}))},6547:function(t,e,n){var r=n("a691"),i=n("1d80"),a=function(t){return function(e,n){var a,o,s=String(i(e)),c=r(n),u=s.length;return c<0||c>=u?t?"":void 0:(a=s.charCodeAt(c),a<55296||a>56319||c+1===u||(o=s.charCodeAt(c+1))<56320||o>57343?t?s.charAt(c):a:t?s.slice(c,c+2):o-56320+(a-55296<<10)+65536)}};t.exports={codeAt:a(!1),charAt:a(!0)}},"65db":function(t,e,n){(function(t,e){e(n("c1df"))})(0,(function(t){"use strict"; -//! moment.js locale configuration -var e=t.defineLocale("eo",{months:"januaro_februaro_marto_aprilo_majo_junio_julio_aŭgusto_septembro_oktobro_novembro_decembro".split("_"),monthsShort:"jan_feb_mart_apr_maj_jun_jul_aŭg_sept_okt_nov_dec".split("_"),weekdays:"dimanĉo_lundo_mardo_merkredo_ĵaŭdo_vendredo_sabato".split("_"),weekdaysShort:"dim_lun_mard_merk_ĵaŭ_ven_sab".split("_"),weekdaysMin:"di_lu_ma_me_ĵa_ve_sa".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY-MM-DD",LL:"[la] D[-an de] MMMM, YYYY",LLL:"[la] D[-an de] MMMM, YYYY HH:mm",LLLL:"dddd[n], [la] D[-an de] MMMM, YYYY HH:mm",llll:"ddd, [la] D[-an de] MMM, YYYY HH:mm"},meridiemParse:/[ap]\.t\.m/i,isPM:function(t){return"p"===t.charAt(0).toLowerCase()},meridiem:function(t,e,n){return t>11?n?"p.t.m.":"P.T.M.":n?"a.t.m.":"A.T.M."},calendar:{sameDay:"[Hodiaŭ je] LT",nextDay:"[Morgaŭ je] LT",nextWeek:"dddd[n je] LT",lastDay:"[Hieraŭ je] LT",lastWeek:"[pasintan] dddd[n je] LT",sameElse:"L"},relativeTime:{future:"post %s",past:"antaŭ %s",s:"kelkaj sekundoj",ss:"%d sekundoj",m:"unu minuto",mm:"%d minutoj",h:"unu horo",hh:"%d horoj",d:"unu tago",dd:"%d tagoj",M:"unu monato",MM:"%d monatoj",y:"unu jaro",yy:"%d jaroj"},dayOfMonthOrdinalParse:/\d{1,2}a/,ordinal:"%da",week:{dow:1,doy:7}});return e}))},"65f0":function(t,e,n){var r=n("861d"),i=n("e8b5"),a=n("b622"),o=a("species");t.exports=function(t,e){var n;return i(t)&&(n=t.constructor,"function"!=typeof n||n!==Array&&!i(n.prototype)?r(n)&&(n=n[o],null===n&&(n=void 0)):n=void 0),new(void 0===n?Array:n)(0===e?0:e)}},6784:function(t,e,n){(function(t,e){e(n("c1df"))})(0,(function(t){"use strict"; -//! moment.js locale configuration -var e=["جنوري","فيبروري","مارچ","اپريل","مئي","جون","جولاءِ","آگسٽ","سيپٽمبر","آڪٽوبر","نومبر","ڊسمبر"],n=["آچر","سومر","اڱارو","اربع","خميس","جمع","ڇنڇر"],r=t.defineLocale("sd",{months:e,monthsShort:e,weekdays:n,weekdaysShort:n,weekdaysMin:n,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd، D MMMM YYYY HH:mm"},meridiemParse:/صبح|شام/,isPM:function(t){return"شام"===t},meridiem:function(t,e,n){return t<12?"صبح":"شام"},calendar:{sameDay:"[اڄ] LT",nextDay:"[سڀاڻي] LT",nextWeek:"dddd [اڳين هفتي تي] LT",lastDay:"[ڪالهه] LT",lastWeek:"[گزريل هفتي] dddd [تي] LT",sameElse:"L"},relativeTime:{future:"%s پوء",past:"%s اڳ",s:"چند سيڪنڊ",ss:"%d سيڪنڊ",m:"هڪ منٽ",mm:"%d منٽ",h:"هڪ ڪلاڪ",hh:"%d ڪلاڪ",d:"هڪ ڏينهن",dd:"%d ڏينهن",M:"هڪ مهينو",MM:"%d مهينا",y:"هڪ سال",yy:"%d سال"},preparse:function(t){return t.replace(/،/g,",")},postformat:function(t){return t.replace(/,/g,"،")},week:{dow:1,doy:4}});return r}))},"686b":function(t,e,n){"use strict";n.d(e,"a",(function(){return a})),n.d(e,"d",(function(){return o})),n.d(e,"c",(function(){return s})),n.d(e,"b",(function(){return c}));var r=n("e863"),i=n("938d"),a=function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null;Object(i["a"])()||console.warn("[BootstrapVue warn]: ".concat(e?"".concat(e," - "):"").concat(t))},o=function(t){return!r["i"]&&(a("".concat(t,": Can not be called during SSR.")),!0)},s=function(t){return!r["f"]&&(a("".concat(t,": Requires Promise support.")),!0)},c=function(t){return!r["c"]&&(a("".concat(t,": Requires MutationObserver support.")),!0)}},6887:function(t,e,n){(function(t,e){e(n("c1df"))})(0,(function(t){"use strict"; -//! moment.js locale configuration -function e(t,e,n){var r={mm:"munutenn",MM:"miz",dd:"devezh"};return t+" "+i(r[n],t)}function n(t){switch(r(t)){case 1:case 3:case 4:case 5:case 9:return t+" bloaz";default:return t+" vloaz"}}function r(t){return t>9?r(t%10):t}function i(t,e){return 2===e?a(t):t}function a(t){var e={m:"v",b:"v",d:"z"};return void 0===e[t.charAt(0)]?t:e[t.charAt(0)]+t.substring(1)}var o=[/^gen/i,/^c[ʼ\']hwe/i,/^meu/i,/^ebr/i,/^mae/i,/^(mez|eve)/i,/^gou/i,/^eos/i,/^gwe/i,/^her/i,/^du/i,/^ker/i],s=/^(genver|c[ʼ\']hwevrer|meurzh|ebrel|mae|mezheven|gouere|eost|gwengolo|here|du|kerzu|gen|c[ʼ\']hwe|meu|ebr|mae|eve|gou|eos|gwe|her|du|ker)/i,c=/^(genver|c[ʼ\']hwevrer|meurzh|ebrel|mae|mezheven|gouere|eost|gwengolo|here|du|kerzu)/i,u=/^(gen|c[ʼ\']hwe|meu|ebr|mae|eve|gou|eos|gwe|her|du|ker)/i,l=[/^sul/i,/^lun/i,/^meurzh/i,/^merc[ʼ\']her/i,/^yaou/i,/^gwener/i,/^sadorn/i],d=[/^Sul/i,/^Lun/i,/^Meu/i,/^Mer/i,/^Yao/i,/^Gwe/i,/^Sad/i],f=[/^Su/i,/^Lu/i,/^Me([^r]|$)/i,/^Mer/i,/^Ya/i,/^Gw/i,/^Sa/i],h=t.defineLocale("br",{months:"Genver_Cʼhwevrer_Meurzh_Ebrel_Mae_Mezheven_Gouere_Eost_Gwengolo_Here_Du_Kerzu".split("_"),monthsShort:"Gen_Cʼhwe_Meu_Ebr_Mae_Eve_Gou_Eos_Gwe_Her_Du_Ker".split("_"),weekdays:"Sul_Lun_Meurzh_Mercʼher_Yaou_Gwener_Sadorn".split("_"),weekdaysShort:"Sul_Lun_Meu_Mer_Yao_Gwe_Sad".split("_"),weekdaysMin:"Su_Lu_Me_Mer_Ya_Gw_Sa".split("_"),weekdaysParse:f,fullWeekdaysParse:l,shortWeekdaysParse:d,minWeekdaysParse:f,monthsRegex:s,monthsShortRegex:s,monthsStrictRegex:c,monthsShortStrictRegex:u,monthsParse:o,longMonthsParse:o,shortMonthsParse:o,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D [a viz] MMMM YYYY",LLL:"D [a viz] MMMM YYYY HH:mm",LLLL:"dddd, D [a viz] MMMM YYYY HH:mm"},calendar:{sameDay:"[Hiziv da] LT",nextDay:"[Warcʼhoazh da] LT",nextWeek:"dddd [da] LT",lastDay:"[Decʼh da] LT",lastWeek:"dddd [paset da] LT",sameElse:"L"},relativeTime:{future:"a-benn %s",past:"%s ʼzo",s:"un nebeud segondennoù",ss:"%d eilenn",m:"ur vunutenn",mm:e,h:"un eur",hh:"%d eur",d:"un devezh",dd:e,M:"ur miz",MM:e,y:"ur bloaz",yy:n},dayOfMonthOrdinalParse:/\d{1,2}(añ|vet)/,ordinal:function(t){var e=1===t?"añ":"vet";return t+e},week:{dow:1,doy:4},meridiemParse:/a.m.|g.m./,isPM:function(t){return"g.m."===t},meridiem:function(t,e,n){return t<12?"a.m.":"g.m."}});return h}))},"688b":function(t,e,n){(function(t,e){e(n("c1df"))})(0,(function(t){"use strict"; -//! moment.js locale configuration -var e=t.defineLocale("mi",{months:"Kohi-tāte_Hui-tanguru_Poutū-te-rangi_Paenga-whāwhā_Haratua_Pipiri_Hōngoingoi_Here-turi-kōkā_Mahuru_Whiringa-ā-nuku_Whiringa-ā-rangi_Hakihea".split("_"),monthsShort:"Kohi_Hui_Pou_Pae_Hara_Pipi_Hōngoi_Here_Mahu_Whi-nu_Whi-ra_Haki".split("_"),monthsRegex:/(?:['a-z\u0101\u014D\u016B]+\-?){1,3}/i,monthsStrictRegex:/(?:['a-z\u0101\u014D\u016B]+\-?){1,3}/i,monthsShortRegex:/(?:['a-z\u0101\u014D\u016B]+\-?){1,3}/i,monthsShortStrictRegex:/(?:['a-z\u0101\u014D\u016B]+\-?){1,2}/i,weekdays:"Rātapu_Mane_Tūrei_Wenerei_Tāite_Paraire_Hātarei".split("_"),weekdaysShort:"Ta_Ma_Tū_We_Tāi_Pa_Hā".split("_"),weekdaysMin:"Ta_Ma_Tū_We_Tāi_Pa_Hā".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY [i] HH:mm",LLLL:"dddd, D MMMM YYYY [i] HH:mm"},calendar:{sameDay:"[i teie mahana, i] LT",nextDay:"[apopo i] LT",nextWeek:"dddd [i] LT",lastDay:"[inanahi i] LT",lastWeek:"dddd [whakamutunga i] LT",sameElse:"L"},relativeTime:{future:"i roto i %s",past:"%s i mua",s:"te hēkona ruarua",ss:"%d hēkona",m:"he meneti",mm:"%d meneti",h:"te haora",hh:"%d haora",d:"he ra",dd:"%d ra",M:"he marama",MM:"%d marama",y:"he tau",yy:"%d tau"},dayOfMonthOrdinalParse:/\d{1,2}º/,ordinal:"%dº",week:{dow:1,doy:4}});return e}))},6909:function(t,e,n){(function(t,e){e(n("c1df"))})(0,(function(t){"use strict"; -//! moment.js locale configuration -var e=t.defineLocale("mk",{months:"јануари_февруари_март_април_мај_јуни_јули_август_септември_октомври_ноември_декември".split("_"),monthsShort:"јан_фев_мар_апр_мај_јун_јул_авг_сеп_окт_ное_дек".split("_"),weekdays:"недела_понеделник_вторник_среда_четврток_петок_сабота".split("_"),weekdaysShort:"нед_пон_вто_сре_чет_пет_саб".split("_"),weekdaysMin:"нe_пo_вт_ср_че_пе_сa".split("_"),longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"D.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY H:mm",LLLL:"dddd, D MMMM YYYY H:mm"},calendar:{sameDay:"[Денес во] LT",nextDay:"[Утре во] LT",nextWeek:"[Во] dddd [во] LT",lastDay:"[Вчера во] LT",lastWeek:function(){switch(this.day()){case 0:case 3:case 6:return"[Изминатата] dddd [во] LT";case 1:case 2:case 4:case 5:return"[Изминатиот] dddd [во] LT"}},sameElse:"L"},relativeTime:{future:"за %s",past:"пред %s",s:"неколку секунди",ss:"%d секунди",m:"една минута",mm:"%d минути",h:"еден час",hh:"%d часа",d:"еден ден",dd:"%d дена",M:"еден месец",MM:"%d месеци",y:"една година",yy:"%d години"},dayOfMonthOrdinalParse:/\d{1,2}-(ев|ен|ти|ви|ри|ми)/,ordinal:function(t){var e=t%10,n=t%100;return 0===t?t+"-ев":0===n?t+"-ен":n>10&&n<20?t+"-ти":1===e?t+"-ви":2===e?t+"-ри":7===e||8===e?t+"-ми":t+"-ти"},week:{dow:1,doy:7}});return e}))},"69f3":function(t,e,n){var r,i,a,o=n("7f9a"),s=n("da84"),c=n("861d"),u=n("9112"),l=n("5135"),d=n("c6cd"),f=n("f772"),h=n("d012"),p="Object already initialized",m=s.WeakMap,b=function(t){return a(t)?i(t):r(t,{})},v=function(t){return function(e){var n;if(!c(e)||(n=i(e)).type!==t)throw TypeError("Incompatible receiver, "+t+" required");return n}};if(o||d.state){var _=d.state||(d.state=new m),g=_.get,y=_.has,O=_.set;r=function(t,e){if(y.call(_,t))throw new TypeError(p);return e.facade=t,O.call(_,t,e),e},i=function(t){return g.call(_,t)||{}},a=function(t){return y.call(_,t)}}else{var j=f("state");h[j]=!0,r=function(t,e){if(l(t,j))throw new TypeError(p);return e.facade=t,u(t,j,e),e},i=function(t){return l(t,j)?t[j]:{}},a=function(t){return l(t,j)}}t.exports={set:r,get:i,has:a,enforce:b,getterFor:v}},"6b77":function(t,e,n){"use strict";n.d(e,"b",(function(){return u})),n.d(e,"a",(function(){return l})),n.d(e,"c",(function(){return d})),n.d(e,"f",(function(){return f})),n.d(e,"e",(function(){return p})),n.d(e,"d",(function(){return m}));var r=n("e863"),i=n("0056"),a=n("992e"),o=n("7b1e"),s=n("fa73"),c=function(t){return r["d"]?Object(o["j"])(t)?t:{capture:!!t||!1}:!!(Object(o["j"])(t)?t.capture:t)},u=function(t,e,n,r){t&&t.addEventListener&&t.addEventListener(e,n,c(r))},l=function(t,e,n,r){t&&t.removeEventListener&&t.removeEventListener(e,n,c(r))},d=function(t){for(var e=t?u:l,n=arguments.length,r=new Array(n>1?n-1:0),i=1;i1&&void 0!==arguments[1]?arguments[1]:{},n=e.preventDefault,r=void 0===n||n,i=e.propagation,a=void 0===i||i,o=e.immediatePropagation,s=void 0!==o&&o;r&&t.preventDefault(),a&&t.stopPropagation(),s&&t.stopImmediatePropagation()},h=function(t){return Object(s["b"])(t.replace(a["d"],""))},p=function(t,e){return[i["hb"],h(t),e].join(i["ib"])},m=function(t,e){return[i["hb"],e,h(t)].join(i["ib"])}},"6c06":function(t,e,n){"use strict";n.d(e,"a",(function(){return r}));var r=function(t){return t}},"6ce3":function(t,e,n){(function(t,e){e(n("c1df"))})(0,(function(t){"use strict"; -//! moment.js locale configuration -var e=t.defineLocale("nb",{months:"januar_februar_mars_april_mai_juni_juli_august_september_oktober_november_desember".split("_"),monthsShort:"jan._feb._mars_apr._mai_juni_juli_aug._sep._okt._nov._des.".split("_"),monthsParseExact:!0,weekdays:"søndag_mandag_tirsdag_onsdag_torsdag_fredag_lørdag".split("_"),weekdaysShort:"sø._ma._ti._on._to._fr._lø.".split("_"),weekdaysMin:"sø_ma_ti_on_to_fr_lø".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY [kl.] HH:mm",LLLL:"dddd D. MMMM YYYY [kl.] HH:mm"},calendar:{sameDay:"[i dag kl.] LT",nextDay:"[i morgen kl.] LT",nextWeek:"dddd [kl.] LT",lastDay:"[i går kl.] LT",lastWeek:"[forrige] dddd [kl.] LT",sameElse:"L"},relativeTime:{future:"om %s",past:"%s siden",s:"noen sekunder",ss:"%d sekunder",m:"ett minutt",mm:"%d minutter",h:"en time",hh:"%d timer",d:"en dag",dd:"%d dager",w:"en uke",ww:"%d uker",M:"en måned",MM:"%d måneder",y:"ett år",yy:"%d år"},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}});return e}))},"6d40":function(t,e,n){"use strict";n.d(e,"a",(function(){return s}));var r=n("d82f");function i(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function a(t,e){for(var n=0;n1&&void 0!==arguments[1]?arguments[1]:{};if(i(this,t),!e)throw new TypeError("Failed to construct '".concat(this.constructor.name,"'. 1 argument required, ").concat(arguments.length," given."));Object(r["a"])(this,t.Defaults,this.constructor.Defaults,n,{type:e}),Object(r["d"])(this,{type:Object(r["l"])(),cancelable:Object(r["l"])(),nativeEvent:Object(r["l"])(),target:Object(r["l"])(),relatedTarget:Object(r["l"])(),vueTarget:Object(r["l"])(),componentId:Object(r["l"])()});var a=!1;this.preventDefault=function(){this.cancelable&&(a=!0)},Object(r["e"])(this,"defaultPrevented",{enumerable:!0,get:function(){return a}})}return o(t,null,[{key:"Defaults",get:function(){return{type:"",cancelable:!0,nativeEvent:null,target:null,relatedTarget:null,vueTarget:null,componentId:null}}}]),t}()},"6d79":function(t,e,n){(function(t,e){e(n("c1df"))})(0,(function(t){"use strict"; -//! moment.js locale configuration -var e={0:"-ші",1:"-ші",2:"-ші",3:"-ші",4:"-ші",5:"-ші",6:"-шы",7:"-ші",8:"-ші",9:"-шы",10:"-шы",20:"-шы",30:"-шы",40:"-шы",50:"-ші",60:"-шы",70:"-ші",80:"-ші",90:"-шы",100:"-ші"},n=t.defineLocale("kk",{months:"қаңтар_ақпан_наурыз_сәуір_мамыр_маусым_шілде_тамыз_қыркүйек_қазан_қараша_желтоқсан".split("_"),monthsShort:"қаң_ақп_нау_сәу_мам_мау_шіл_там_қыр_қаз_қар_жел".split("_"),weekdays:"жексенбі_дүйсенбі_сейсенбі_сәрсенбі_бейсенбі_жұма_сенбі".split("_"),weekdaysShort:"жек_дүй_сей_сәр_бей_жұм_сен".split("_"),weekdaysMin:"жк_дй_сй_ср_бй_жм_сн".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[Бүгін сағат] LT",nextDay:"[Ертең сағат] LT",nextWeek:"dddd [сағат] LT",lastDay:"[Кеше сағат] LT",lastWeek:"[Өткен аптаның] dddd [сағат] LT",sameElse:"L"},relativeTime:{future:"%s ішінде",past:"%s бұрын",s:"бірнеше секунд",ss:"%d секунд",m:"бір минут",mm:"%d минут",h:"бір сағат",hh:"%d сағат",d:"бір күн",dd:"%d күн",M:"бір ай",MM:"%d ай",y:"бір жыл",yy:"%d жыл"},dayOfMonthOrdinalParse:/\d{1,2}-(ші|шы)/,ordinal:function(t){var n=t%10,r=t>=100?100:null;return t+(e[t]||e[n]||e[r])},week:{dow:1,doy:7}});return n}))},"6d83":function(t,e,n){(function(t,e){e(n("c1df"))})(0,(function(t){"use strict"; -//! moment.js locale configuration -var e=t.defineLocale("ar-tn",{months:"جانفي_فيفري_مارس_أفريل_ماي_جوان_جويلية_أوت_سبتمبر_أكتوبر_نوفمبر_ديسمبر".split("_"),monthsShort:"جانفي_فيفري_مارس_أفريل_ماي_جوان_جويلية_أوت_سبتمبر_أكتوبر_نوفمبر_ديسمبر".split("_"),weekdays:"الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت".split("_"),weekdaysShort:"أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت".split("_"),weekdaysMin:"ح_ن_ث_ر_خ_ج_س".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[اليوم على الساعة] LT",nextDay:"[غدا على الساعة] LT",nextWeek:"dddd [على الساعة] LT",lastDay:"[أمس على الساعة] LT",lastWeek:"dddd [على الساعة] LT",sameElse:"L"},relativeTime:{future:"في %s",past:"منذ %s",s:"ثوان",ss:"%d ثانية",m:"دقيقة",mm:"%d دقائق",h:"ساعة",hh:"%d ساعات",d:"يوم",dd:"%d أيام",M:"شهر",MM:"%d أشهر",y:"سنة",yy:"%d سنوات"},week:{dow:1,doy:4}});return e}))},"6e98":function(t,e,n){(function(t,e){e(n("c1df"))})(0,(function(t){"use strict"; -//! moment.js locale configuration -var e=t.defineLocale("it",{months:"gennaio_febbraio_marzo_aprile_maggio_giugno_luglio_agosto_settembre_ottobre_novembre_dicembre".split("_"),monthsShort:"gen_feb_mar_apr_mag_giu_lug_ago_set_ott_nov_dic".split("_"),weekdays:"domenica_lunedì_martedì_mercoledì_giovedì_venerdì_sabato".split("_"),weekdaysShort:"dom_lun_mar_mer_gio_ven_sab".split("_"),weekdaysMin:"do_lu_ma_me_gi_ve_sa".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:function(){return"[Oggi a"+(this.hours()>1?"lle ":0===this.hours()?" ":"ll'")+"]LT"},nextDay:function(){return"[Domani a"+(this.hours()>1?"lle ":0===this.hours()?" ":"ll'")+"]LT"},nextWeek:function(){return"dddd [a"+(this.hours()>1?"lle ":0===this.hours()?" ":"ll'")+"]LT"},lastDay:function(){return"[Ieri a"+(this.hours()>1?"lle ":0===this.hours()?" ":"ll'")+"]LT"},lastWeek:function(){switch(this.day()){case 0:return"[La scorsa] dddd [a"+(this.hours()>1?"lle ":0===this.hours()?" ":"ll'")+"]LT";default:return"[Lo scorso] dddd [a"+(this.hours()>1?"lle ":0===this.hours()?" ":"ll'")+"]LT"}},sameElse:"L"},relativeTime:{future:"tra %s",past:"%s fa",s:"alcuni secondi",ss:"%d secondi",m:"un minuto",mm:"%d minuti",h:"un'ora",hh:"%d ore",d:"un giorno",dd:"%d giorni",w:"una settimana",ww:"%d settimane",M:"un mese",MM:"%d mesi",y:"un anno",yy:"%d anni"},dayOfMonthOrdinalParse:/\d{1,2}º/,ordinal:"%dº",week:{dow:1,doy:4}});return e}))},"6eeb":function(t,e,n){var r=n("da84"),i=n("9112"),a=n("5135"),o=n("ce4e"),s=n("8925"),c=n("69f3"),u=c.get,l=c.enforce,d=String(String).split("String");(t.exports=function(t,e,n,s){var c,u=!!s&&!!s.unsafe,f=!!s&&!!s.enumerable,h=!!s&&!!s.noTargetGet;"function"==typeof n&&("string"!=typeof e||a(n,"name")||i(n,"name",e),c=l(n),c.source||(c.source=d.join("string"==typeof e?e:""))),t!==r?(u?!h&&t[e]&&(f=!0):delete t[e],f?t[e]=n:i(t,e,n)):f?t[e]=n:o(e,n)})(Function.prototype,"toString",(function(){return"function"==typeof this&&u(this).source||s(this)}))},"6f12":function(t,e,n){(function(t,e){e(n("c1df"))})(0,(function(t){"use strict"; -//! moment.js locale configuration -var e=t.defineLocale("it-ch",{months:"gennaio_febbraio_marzo_aprile_maggio_giugno_luglio_agosto_settembre_ottobre_novembre_dicembre".split("_"),monthsShort:"gen_feb_mar_apr_mag_giu_lug_ago_set_ott_nov_dic".split("_"),weekdays:"domenica_lunedì_martedì_mercoledì_giovedì_venerdì_sabato".split("_"),weekdaysShort:"dom_lun_mar_mer_gio_ven_sab".split("_"),weekdaysMin:"do_lu_ma_me_gi_ve_sa".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[Oggi alle] LT",nextDay:"[Domani alle] LT",nextWeek:"dddd [alle] LT",lastDay:"[Ieri alle] LT",lastWeek:function(){switch(this.day()){case 0:return"[la scorsa] dddd [alle] LT";default:return"[lo scorso] dddd [alle] LT"}},sameElse:"L"},relativeTime:{future:function(t){return(/^[0-9].+$/.test(t)?"tra":"in")+" "+t},past:"%s fa",s:"alcuni secondi",ss:"%d secondi",m:"un minuto",mm:"%d minuti",h:"un'ora",hh:"%d ore",d:"un giorno",dd:"%d giorni",M:"un mese",MM:"%d mesi",y:"un anno",yy:"%d anni"},dayOfMonthOrdinalParse:/\d{1,2}º/,ordinal:"%dº",week:{dow:1,doy:4}});return e}))},"6f50":function(t,e,n){(function(t,e){e(n("c1df"))})(0,(function(t){"use strict"; -//! moment.js locale configuration -var e=t.defineLocale("en-nz",{months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),monthsShort:"Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),weekdaysShort:"Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),weekdaysMin:"Su_Mo_Tu_We_Th_Fr_Sa".split("_"),longDateFormat:{LT:"h:mm A",LTS:"h:mm:ss A",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY h:mm A",LLLL:"dddd, D MMMM YYYY h:mm A"},calendar:{sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[Last] dddd [at] LT",sameElse:"L"},relativeTime:{future:"in %s",past:"%s ago",s:"a few seconds",ss:"%d seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},dayOfMonthOrdinalParse:/\d{1,2}(st|nd|rd|th)/,ordinal:function(t){var e=t%10,n=1===~~(t%100/10)?"th":1===e?"st":2===e?"nd":3===e?"rd":"th";return t+n},week:{dow:1,doy:4}});return e}))},7118:function(t,e,n){(function(t,e){e(n("c1df"))})(0,(function(t){"use strict"; -//! moment.js locale configuration -var e="jan._feb._mrt._apr._mai_jun._jul._aug._sep._okt._nov._des.".split("_"),n="jan_feb_mrt_apr_mai_jun_jul_aug_sep_okt_nov_des".split("_"),r=t.defineLocale("fy",{months:"jannewaris_febrewaris_maart_april_maaie_juny_july_augustus_septimber_oktober_novimber_desimber".split("_"),monthsShort:function(t,r){return t?/-MMM-/.test(r)?n[t.month()]:e[t.month()]:e},monthsParseExact:!0,weekdays:"snein_moandei_tiisdei_woansdei_tongersdei_freed_sneon".split("_"),weekdaysShort:"si._mo._ti._wo._to._fr._so.".split("_"),weekdaysMin:"Si_Mo_Ti_Wo_To_Fr_So".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD-MM-YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[hjoed om] LT",nextDay:"[moarn om] LT",nextWeek:"dddd [om] LT",lastDay:"[juster om] LT",lastWeek:"[ôfrûne] dddd [om] LT",sameElse:"L"},relativeTime:{future:"oer %s",past:"%s lyn",s:"in pear sekonden",ss:"%d sekonden",m:"ien minút",mm:"%d minuten",h:"ien oere",hh:"%d oeren",d:"ien dei",dd:"%d dagen",M:"ien moanne",MM:"%d moannen",y:"ien jier",yy:"%d jierren"},dayOfMonthOrdinalParse:/\d{1,2}(ste|de)/,ordinal:function(t){return t+(1===t||8===t||t>=20?"ste":"de")},week:{dow:1,doy:4}});return r}))},7156:function(t,e,n){var r=n("861d"),i=n("d2bb");t.exports=function(t,e,n){var a,o;return i&&"function"==typeof(a=e.constructor)&&a!==n&&r(o=a.prototype)&&o!==n.prototype&&i(t,o),t}},7333:function(t,e,n){(function(t,e){e(n("c1df"))})(0,(function(t){"use strict"; -//! moment.js locale configuration -var e=t.defineLocale("en-il",{months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),monthsShort:"Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),weekdaysShort:"Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),weekdaysMin:"Su_Mo_Tu_We_Th_Fr_Sa".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[Last] dddd [at] LT",sameElse:"L"},relativeTime:{future:"in %s",past:"%s ago",s:"a few seconds",ss:"%d seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},dayOfMonthOrdinalParse:/\d{1,2}(st|nd|rd|th)/,ordinal:function(t){var e=t%10,n=1===~~(t%100/10)?"th":1===e?"st":2===e?"nd":3===e?"rd":"th";return t+n}});return e}))},7418:function(t,e){e.f=Object.getOwnPropertySymbols},"746f":function(t,e,n){var r=n("428f"),i=n("5135"),a=n("e538"),o=n("9bf2").f;t.exports=function(t){var e=r.Symbol||(r.Symbol={});i(e,t)||o(e,t,{value:a.f(t)})}},"74dc":function(t,e,n){(function(t,e){e(n("c1df"))})(0,(function(t){"use strict"; -//! moment.js locale configuration -var e=t.defineLocale("sw",{months:"Januari_Februari_Machi_Aprili_Mei_Juni_Julai_Agosti_Septemba_Oktoba_Novemba_Desemba".split("_"),monthsShort:"Jan_Feb_Mac_Apr_Mei_Jun_Jul_Ago_Sep_Okt_Nov_Des".split("_"),weekdays:"Jumapili_Jumatatu_Jumanne_Jumatano_Alhamisi_Ijumaa_Jumamosi".split("_"),weekdaysShort:"Jpl_Jtat_Jnne_Jtan_Alh_Ijm_Jmos".split("_"),weekdaysMin:"J2_J3_J4_J5_Al_Ij_J1".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"hh:mm A",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[leo saa] LT",nextDay:"[kesho saa] LT",nextWeek:"[wiki ijayo] dddd [saat] LT",lastDay:"[jana] LT",lastWeek:"[wiki iliyopita] dddd [saat] LT",sameElse:"L"},relativeTime:{future:"%s baadaye",past:"tokea %s",s:"hivi punde",ss:"sekunde %d",m:"dakika moja",mm:"dakika %d",h:"saa limoja",hh:"masaa %d",d:"siku moja",dd:"siku %d",M:"mwezi mmoja",MM:"miezi %d",y:"mwaka mmoja",yy:"miaka %d"},week:{dow:1,doy:7}});return e}))},7839:function(t,e){t.exports=["constructor","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","toLocaleString","toString","valueOf"]},"7a77":function(t,e,n){"use strict";function r(t){this.message=t}r.prototype.toString=function(){return"Cancel"+(this.message?": "+this.message:"")},r.prototype.__CANCEL__=!0,t.exports=r},"7aac":function(t,e,n){"use strict";var r=n("c532");t.exports=r.isStandardBrowserEnv()?function(){return{write:function(t,e,n,i,a,o){var s=[];s.push(t+"="+encodeURIComponent(e)),r.isNumber(n)&&s.push("expires="+new Date(n).toGMTString()),r.isString(i)&&s.push("path="+i),r.isString(a)&&s.push("domain="+a),!0===o&&s.push("secure"),document.cookie=s.join("; ")},read:function(t){var e=document.cookie.match(new RegExp("(^|;\\s*)("+t+")=([^;]*)"));return e?decodeURIComponent(e[3]):null},remove:function(t){this.write(t,"",Date.now()-864e5)}}}():function(){return{write:function(){},read:function(){return null},remove:function(){}}}()},"7b0b":function(t,e,n){var r=n("1d80");t.exports=function(t){return Object(r(t))}},"7b1e":function(t,e,n){"use strict";n.d(e,"o",(function(){return c})),n.d(e,"g",(function(){return u})),n.d(e,"p",(function(){return l})),n.d(e,"f",(function(){return d})),n.d(e,"b",(function(){return f})),n.d(e,"n",(function(){return h})),n.d(e,"h",(function(){return p})),n.d(e,"i",(function(){return m})),n.d(e,"a",(function(){return b})),n.d(e,"j",(function(){return v})),n.d(e,"k",(function(){return _})),n.d(e,"c",(function(){return g})),n.d(e,"d",(function(){return y})),n.d(e,"e",(function(){return O})),n.d(e,"m",(function(){return j})),n.d(e,"l",(function(){return w}));var r=n("992e"),i=n("ca88");function a(t){return a="function"===typeof Symbol&&"symbol"===typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"===typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},a(t)}var o=function(t){return a(t)},s=function(t){return Object.prototype.toString.call(t).slice(8,-1)},c=function(t){return void 0===t},u=function(t){return null===t},l=function(t){return c(t)||u(t)},d=function(t){return"function"===o(t)},f=function(t){return"boolean"===o(t)},h=function(t){return"string"===o(t)},p=function(t){return"number"===o(t)},m=function(t){return r["s"].test(String(t))},b=function(t){return Array.isArray(t)},v=function(t){return null!==t&&"object"===a(t)},_=function(t){return"[object Object]"===Object.prototype.toString.call(t)},g=function(t){return t instanceof Date},y=function(t){return t instanceof Event},O=function(t){return t instanceof i["b"]},j=function(t){return"RegExp"===s(t)},w=function(t){return!l(t)&&d(t.then)&&d(t.catch)}},"7be6":function(t,e,n){(function(t,e){e(n("c1df"))})(0,(function(t){"use strict"; -//! moment.js locale configuration -var e="január_február_marec_apríl_máj_jún_júl_august_september_október_november_december".split("_"),n="jan_feb_mar_apr_máj_jún_júl_aug_sep_okt_nov_dec".split("_");function r(t){return t>1&&t<5}function i(t,e,n,i){var a=t+" ";switch(n){case"s":return e||i?"pár sekúnd":"pár sekundami";case"ss":return e||i?a+(r(t)?"sekundy":"sekúnd"):a+"sekundami";case"m":return e?"minúta":i?"minútu":"minútou";case"mm":return e||i?a+(r(t)?"minúty":"minút"):a+"minútami";case"h":return e?"hodina":i?"hodinu":"hodinou";case"hh":return e||i?a+(r(t)?"hodiny":"hodín"):a+"hodinami";case"d":return e||i?"deň":"dňom";case"dd":return e||i?a+(r(t)?"dni":"dní"):a+"dňami";case"M":return e||i?"mesiac":"mesiacom";case"MM":return e||i?a+(r(t)?"mesiace":"mesiacov"):a+"mesiacmi";case"y":return e||i?"rok":"rokom";case"yy":return e||i?a+(r(t)?"roky":"rokov"):a+"rokmi"}}var a=t.defineLocale("sk",{months:e,monthsShort:n,weekdays:"nedeľa_pondelok_utorok_streda_štvrtok_piatok_sobota".split("_"),weekdaysShort:"ne_po_ut_st_št_pi_so".split("_"),weekdaysMin:"ne_po_ut_st_št_pi_so".split("_"),longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY H:mm",LLLL:"dddd D. MMMM YYYY H:mm"},calendar:{sameDay:"[dnes o] LT",nextDay:"[zajtra o] LT",nextWeek:function(){switch(this.day()){case 0:return"[v nedeľu o] LT";case 1:case 2:return"[v] dddd [o] LT";case 3:return"[v stredu o] LT";case 4:return"[vo štvrtok o] LT";case 5:return"[v piatok o] LT";case 6:return"[v sobotu o] LT"}},lastDay:"[včera o] LT",lastWeek:function(){switch(this.day()){case 0:return"[minulú nedeľu o] LT";case 1:case 2:return"[minulý] dddd [o] LT";case 3:return"[minulú stredu o] LT";case 4:case 5:return"[minulý] dddd [o] LT";case 6:return"[minulú sobotu o] LT"}},sameElse:"L"},relativeTime:{future:"za %s",past:"pred %s",s:i,ss:i,m:i,mm:i,h:i,hh:i,d:i,dd:i,M:i,MM:i,y:i,yy:i},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}});return a}))},"7c73":function(t,e,n){var r,i=n("825a"),a=n("37e8"),o=n("7839"),s=n("d012"),c=n("1be4"),u=n("cc12"),l=n("f772"),d=">",f="<",h="prototype",p="script",m=l("IE_PROTO"),b=function(){},v=function(t){return f+p+d+t+f+"/"+p+d},_=function(t){t.write(v("")),t.close();var e=t.parentWindow.Object;return t=null,e},g=function(){var t,e=u("iframe"),n="java"+p+":";return e.style.display="none",c.appendChild(e),e.src=String(n),t=e.contentWindow.document,t.open(),t.write(v("document.F=Object")),t.close(),t.F},y=function(){try{r=document.domain&&new ActiveXObject("htmlfile")}catch(e){}y=r?_(r):g();var t=o.length;while(t--)delete y[h][o[t]];return y()};s[m]=!0,t.exports=Object.create||function(t,e){var n;return null!==t?(b[h]=i(t),n=new b,b[h]=null,n[m]=t):n=y(),void 0===e?n:a(n,e)}},"7dd0":function(t,e,n){"use strict";var r=n("23e7"),i=n("9ed3"),a=n("e163"),o=n("d2bb"),s=n("d44e"),c=n("9112"),u=n("6eeb"),l=n("b622"),d=n("c430"),f=n("3f8c"),h=n("ae93"),p=h.IteratorPrototype,m=h.BUGGY_SAFARI_ITERATORS,b=l("iterator"),v="keys",_="values",g="entries",y=function(){return this};t.exports=function(t,e,n,l,h,O,j){i(n,e,l);var w,M,L,k=function(t){if(t===h&&x)return x;if(!m&&t in S)return S[t];switch(t){case v:return function(){return new n(this,t)};case _:return function(){return new n(this,t)};case g:return function(){return new n(this,t)}}return function(){return new n(this)}},T=e+" Iterator",D=!1,S=t.prototype,Y=S[b]||S["@@iterator"]||h&&S[h],x=!m&&Y||k(h),P="Array"==e&&S.entries||Y;if(P&&(w=a(P.call(new t)),p!==Object.prototype&&w.next&&(d||a(w)===p||(o?o(w,p):"function"!=typeof w[b]&&c(w,b,y)),s(w,T,!0,!0),d&&(f[T]=y))),h==_&&Y&&Y.name!==_&&(D=!0,x=function(){return Y.call(this)}),d&&!j||S[b]===x||c(S,b,x),f[e]=x,h)if(M={values:k(_),keys:O?x:k(v),entries:k(g)},j)for(L in M)(m||D||!(L in S))&&u(S,L,M[L]);else r({target:e,proto:!0,forced:m||D},M);return M}},"7f33":function(t,e,n){(function(t,e){e(n("c1df"))})(0,(function(t){"use strict"; -//! moment.js locale configuration -var e=t.defineLocale("yo",{months:"Sẹ́rẹ́_Èrèlè_Ẹrẹ̀nà_Ìgbé_Èbibi_Òkùdu_Agẹmo_Ògún_Owewe_Ọ̀wàrà_Bélú_Ọ̀pẹ̀̀".split("_"),monthsShort:"Sẹ́r_Èrl_Ẹrn_Ìgb_Èbi_Òkù_Agẹ_Ògú_Owe_Ọ̀wà_Bél_Ọ̀pẹ̀̀".split("_"),weekdays:"Àìkú_Ajé_Ìsẹ́gun_Ọjọ́rú_Ọjọ́bọ_Ẹtì_Àbámẹ́ta".split("_"),weekdaysShort:"Àìk_Ajé_Ìsẹ́_Ọjr_Ọjb_Ẹtì_Àbá".split("_"),weekdaysMin:"Àì_Aj_Ìs_Ọr_Ọb_Ẹt_Àb".split("_"),longDateFormat:{LT:"h:mm A",LTS:"h:mm:ss A",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY h:mm A",LLLL:"dddd, D MMMM YYYY h:mm A"},calendar:{sameDay:"[Ònì ni] LT",nextDay:"[Ọ̀la ni] LT",nextWeek:"dddd [Ọsẹ̀ tón'bọ] [ni] LT",lastDay:"[Àna ni] LT",lastWeek:"dddd [Ọsẹ̀ tólọ́] [ni] LT",sameElse:"L"},relativeTime:{future:"ní %s",past:"%s kọjá",s:"ìsẹjú aayá die",ss:"aayá %d",m:"ìsẹjú kan",mm:"ìsẹjú %d",h:"wákati kan",hh:"wákati %d",d:"ọjọ́ kan",dd:"ọjọ́ %d",M:"osù kan",MM:"osù %d",y:"ọdún kan",yy:"ọdún %d"},dayOfMonthOrdinalParse:/ọjọ́\s\d{1,2}/,ordinal:"ọjọ́ %d",week:{dow:1,doy:4}});return e}))},"7f9a":function(t,e,n){var r=n("da84"),i=n("8925"),a=r.WeakMap;t.exports="function"===typeof a&&/native code/.test(i(a))},8155:function(t,e,n){(function(t,e){e(n("c1df"))})(0,(function(t){"use strict"; -//! moment.js locale configuration -function e(t,e,n,r){var i=t+" ";switch(n){case"s":return e||r?"nekaj sekund":"nekaj sekundami";case"ss":return i+=1===t?e?"sekundo":"sekundi":2===t?e||r?"sekundi":"sekundah":t<5?e||r?"sekunde":"sekundah":"sekund",i;case"m":return e?"ena minuta":"eno minuto";case"mm":return i+=1===t?e?"minuta":"minuto":2===t?e||r?"minuti":"minutama":t<5?e||r?"minute":"minutami":e||r?"minut":"minutami",i;case"h":return e?"ena ura":"eno uro";case"hh":return i+=1===t?e?"ura":"uro":2===t?e||r?"uri":"urama":t<5?e||r?"ure":"urami":e||r?"ur":"urami",i;case"d":return e||r?"en dan":"enim dnem";case"dd":return i+=1===t?e||r?"dan":"dnem":2===t?e||r?"dni":"dnevoma":e||r?"dni":"dnevi",i;case"M":return e||r?"en mesec":"enim mesecem";case"MM":return i+=1===t?e||r?"mesec":"mesecem":2===t?e||r?"meseca":"mesecema":t<5?e||r?"mesece":"meseci":e||r?"mesecev":"meseci",i;case"y":return e||r?"eno leto":"enim letom";case"yy":return i+=1===t?e||r?"leto":"letom":2===t?e||r?"leti":"letoma":t<5?e||r?"leta":"leti":e||r?"let":"leti",i}}var n=t.defineLocale("sl",{months:"januar_februar_marec_april_maj_junij_julij_avgust_september_oktober_november_december".split("_"),monthsShort:"jan._feb._mar._apr._maj._jun._jul._avg._sep._okt._nov._dec.".split("_"),monthsParseExact:!0,weekdays:"nedelja_ponedeljek_torek_sreda_četrtek_petek_sobota".split("_"),weekdaysShort:"ned._pon._tor._sre._čet._pet._sob.".split("_"),weekdaysMin:"ne_po_to_sr_če_pe_so".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD. MM. YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY H:mm",LLLL:"dddd, D. MMMM YYYY H:mm"},calendar:{sameDay:"[danes ob] LT",nextDay:"[jutri ob] LT",nextWeek:function(){switch(this.day()){case 0:return"[v] [nedeljo] [ob] LT";case 3:return"[v] [sredo] [ob] LT";case 6:return"[v] [soboto] [ob] LT";case 1:case 2:case 4:case 5:return"[v] dddd [ob] LT"}},lastDay:"[včeraj ob] LT",lastWeek:function(){switch(this.day()){case 0:return"[prejšnjo] [nedeljo] [ob] LT";case 3:return"[prejšnjo] [sredo] [ob] LT";case 6:return"[prejšnjo] [soboto] [ob] LT";case 1:case 2:case 4:case 5:return"[prejšnji] dddd [ob] LT"}},sameElse:"L"},relativeTime:{future:"čez %s",past:"pred %s",s:e,ss:e,m:e,mm:e,h:e,hh:e,d:e,dd:e,M:e,MM:e,y:e,yy:e},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:7}});return n}))},"81e9":function(t,e,n){(function(t,e){e(n("c1df"))})(0,(function(t){"use strict"; -//! moment.js locale configuration -var e="nolla yksi kaksi kolme neljä viisi kuusi seitsemän kahdeksan yhdeksän".split(" "),n=["nolla","yhden","kahden","kolmen","neljän","viiden","kuuden",e[7],e[8],e[9]];function r(t,e,n,r){var a="";switch(n){case"s":return r?"muutaman sekunnin":"muutama sekunti";case"ss":a=r?"sekunnin":"sekuntia";break;case"m":return r?"minuutin":"minuutti";case"mm":a=r?"minuutin":"minuuttia";break;case"h":return r?"tunnin":"tunti";case"hh":a=r?"tunnin":"tuntia";break;case"d":return r?"päivän":"päivä";case"dd":a=r?"päivän":"päivää";break;case"M":return r?"kuukauden":"kuukausi";case"MM":a=r?"kuukauden":"kuukautta";break;case"y":return r?"vuoden":"vuosi";case"yy":a=r?"vuoden":"vuotta";break}return a=i(t,r)+" "+a,a}function i(t,r){return t<10?r?n[t]:e[t]:t}var a=t.defineLocale("fi",{months:"tammikuu_helmikuu_maaliskuu_huhtikuu_toukokuu_kesäkuu_heinäkuu_elokuu_syyskuu_lokakuu_marraskuu_joulukuu".split("_"),monthsShort:"tammi_helmi_maalis_huhti_touko_kesä_heinä_elo_syys_loka_marras_joulu".split("_"),weekdays:"sunnuntai_maanantai_tiistai_keskiviikko_torstai_perjantai_lauantai".split("_"),weekdaysShort:"su_ma_ti_ke_to_pe_la".split("_"),weekdaysMin:"su_ma_ti_ke_to_pe_la".split("_"),longDateFormat:{LT:"HH.mm",LTS:"HH.mm.ss",L:"DD.MM.YYYY",LL:"Do MMMM[ta] YYYY",LLL:"Do MMMM[ta] YYYY, [klo] HH.mm",LLLL:"dddd, Do MMMM[ta] YYYY, [klo] HH.mm",l:"D.M.YYYY",ll:"Do MMM YYYY",lll:"Do MMM YYYY, [klo] HH.mm",llll:"ddd, Do MMM YYYY, [klo] HH.mm"},calendar:{sameDay:"[tänään] [klo] LT",nextDay:"[huomenna] [klo] LT",nextWeek:"dddd [klo] LT",lastDay:"[eilen] [klo] LT",lastWeek:"[viime] dddd[na] [klo] LT",sameElse:"L"},relativeTime:{future:"%s päästä",past:"%s sitten",s:r,ss:r,m:r,mm:r,h:r,hh:r,d:r,dd:r,M:r,MM:r,y:r,yy:r},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}});return a}))},8230:function(t,e,n){(function(t,e){e(n("c1df"))})(0,(function(t){"use strict"; -//! moment.js locale configuration -var e={1:"١",2:"٢",3:"٣",4:"٤",5:"٥",6:"٦",7:"٧",8:"٨",9:"٩",0:"٠"},n={"١":"1","٢":"2","٣":"3","٤":"4","٥":"5","٦":"6","٧":"7","٨":"8","٩":"9","٠":"0"},r=t.defineLocale("ar-sa",{months:"يناير_فبراير_مارس_أبريل_مايو_يونيو_يوليو_أغسطس_سبتمبر_أكتوبر_نوفمبر_ديسمبر".split("_"),monthsShort:"يناير_فبراير_مارس_أبريل_مايو_يونيو_يوليو_أغسطس_سبتمبر_أكتوبر_نوفمبر_ديسمبر".split("_"),weekdays:"الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت".split("_"),weekdaysShort:"أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت".split("_"),weekdaysMin:"ح_ن_ث_ر_خ_ج_س".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},meridiemParse:/ص|م/,isPM:function(t){return"م"===t},meridiem:function(t,e,n){return t<12?"ص":"م"},calendar:{sameDay:"[اليوم على الساعة] LT",nextDay:"[غدا على الساعة] LT",nextWeek:"dddd [على الساعة] LT",lastDay:"[أمس على الساعة] LT",lastWeek:"dddd [على الساعة] LT",sameElse:"L"},relativeTime:{future:"في %s",past:"منذ %s",s:"ثوان",ss:"%d ثانية",m:"دقيقة",mm:"%d دقائق",h:"ساعة",hh:"%d ساعات",d:"يوم",dd:"%d أيام",M:"شهر",MM:"%d أشهر",y:"سنة",yy:"%d سنوات"},preparse:function(t){return t.replace(/[١٢٣٤٥٦٧٨٩٠]/g,(function(t){return n[t]})).replace(/،/g,",")},postformat:function(t){return t.replace(/\d/g,(function(t){return e[t]})).replace(/,/g,"،")},week:{dow:0,doy:6}});return r}))},"825a":function(t,e,n){var r=n("861d");t.exports=function(t){if(!r(t))throw TypeError(String(t)+" is not an object");return t}},"83ab":function(t,e,n){var r=n("d039");t.exports=!r((function(){return 7!=Object.defineProperty({},1,{get:function(){return 7}})[1]}))},"83b9":function(t,e,n){"use strict";var r=n("d925"),i=n("e683");t.exports=function(t,e){return t&&!r(e)?i(t,e):e}},8418:function(t,e,n){"use strict";var r=n("c04e"),i=n("9bf2"),a=n("5c6c");t.exports=function(t,e,n){var o=r(e);o in t?i.f(t,o,a(0,n)):t[o]=n}},"841c":function(t,e,n){"use strict";var r=n("d784"),i=n("825a"),a=n("1d80"),o=n("129f"),s=n("14c3");r("search",1,(function(t,e,n){return[function(e){var n=a(this),r=void 0==e?void 0:e[t];return void 0!==r?r.call(e,n):new RegExp(e)[t](String(n))},function(t){var r=n(e,t,this);if(r.done)return r.value;var a=i(t),c=String(this),u=a.lastIndex;o(u,0)||(a.lastIndex=0);var l=s(a,c);return o(a.lastIndex,u)||(a.lastIndex=u),null===l?-1:l.index}]}))},"84aa":function(t,e,n){(function(t,e){e(n("c1df"))})(0,(function(t){"use strict"; -//! moment.js locale configuration -var e=t.defineLocale("bg",{months:"януари_февруари_март_април_май_юни_юли_август_септември_октомври_ноември_декември".split("_"),monthsShort:"яну_фев_мар_апр_май_юни_юли_авг_сеп_окт_ное_дек".split("_"),weekdays:"неделя_понеделник_вторник_сряда_четвъртък_петък_събота".split("_"),weekdaysShort:"нед_пон_вто_сря_чет_пет_съб".split("_"),weekdaysMin:"нд_пн_вт_ср_чт_пт_сб".split("_"),longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"D.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY H:mm",LLLL:"dddd, D MMMM YYYY H:mm"},calendar:{sameDay:"[Днес в] LT",nextDay:"[Утре в] LT",nextWeek:"dddd [в] LT",lastDay:"[Вчера в] LT",lastWeek:function(){switch(this.day()){case 0:case 3:case 6:return"[Миналата] dddd [в] LT";case 1:case 2:case 4:case 5:return"[Миналия] dddd [в] LT"}},sameElse:"L"},relativeTime:{future:"след %s",past:"преди %s",s:"няколко секунди",ss:"%d секунди",m:"минута",mm:"%d минути",h:"час",hh:"%d часа",d:"ден",dd:"%d дена",w:"седмица",ww:"%d седмици",M:"месец",MM:"%d месеца",y:"година",yy:"%d години"},dayOfMonthOrdinalParse:/\d{1,2}-(ев|ен|ти|ви|ри|ми)/,ordinal:function(t){var e=t%10,n=t%100;return 0===t?t+"-ев":0===n?t+"-ен":n>10&&n<20?t+"-ти":1===e?t+"-ви":2===e?t+"-ри":7===e||8===e?t+"-ми":t+"-ти"},week:{dow:1,doy:7}});return e}))},"857a":function(t,e,n){var r=n("1d80"),i=/"/g;t.exports=function(t,e,n,a){var o=String(r(t)),s="<"+e;return""!==n&&(s+=" "+n+'="'+String(a).replace(i,""")+'"'),s+">"+o+""}},"861d":function(t,e){t.exports=function(t){return"object"===typeof t?null!==t:"function"===typeof t}},8689:function(t,e,n){(function(t,e){e(n("c1df"))})(0,(function(t){"use strict"; -//! moment.js locale configuration -var e={1:"၁",2:"၂",3:"၃",4:"၄",5:"၅",6:"၆",7:"၇",8:"၈",9:"၉",0:"၀"},n={"၁":"1","၂":"2","၃":"3","၄":"4","၅":"5","၆":"6","၇":"7","၈":"8","၉":"9","၀":"0"},r=t.defineLocale("my",{months:"ဇန်နဝါရီ_ဖေဖော်ဝါရီ_မတ်_ဧပြီ_မေ_ဇွန်_ဇူလိုင်_သြဂုတ်_စက်တင်ဘာ_အောက်တိုဘာ_နိုဝင်ဘာ_ဒီဇင်ဘာ".split("_"),monthsShort:"ဇန်_ဖေ_မတ်_ပြီ_မေ_ဇွန်_လိုင်_သြ_စက်_အောက်_နို_ဒီ".split("_"),weekdays:"တနင်္ဂနွေ_တနင်္လာ_အင်္ဂါ_ဗုဒ္ဓဟူး_ကြာသပတေး_သောကြာ_စနေ".split("_"),weekdaysShort:"နွေ_လာ_ဂါ_ဟူး_ကြာ_သော_နေ".split("_"),weekdaysMin:"နွေ_လာ_ဂါ_ဟူး_ကြာ_သော_နေ".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[ယနေ.] LT [မှာ]",nextDay:"[မနက်ဖြန်] LT [မှာ]",nextWeek:"dddd LT [မှာ]",lastDay:"[မနေ.က] LT [မှာ]",lastWeek:"[ပြီးခဲ့သော] dddd LT [မှာ]",sameElse:"L"},relativeTime:{future:"လာမည့် %s မှာ",past:"လွန်ခဲ့သော %s က",s:"စက္ကန်.အနည်းငယ်",ss:"%d စက္ကန့်",m:"တစ်မိနစ်",mm:"%d မိနစ်",h:"တစ်နာရီ",hh:"%d နာရီ",d:"တစ်ရက်",dd:"%d ရက်",M:"တစ်လ",MM:"%d လ",y:"တစ်နှစ်",yy:"%d နှစ်"},preparse:function(t){return t.replace(/[၁၂၃၄၅၆၇၈၉၀]/g,(function(t){return n[t]}))},postformat:function(t){return t.replace(/\d/g,(function(t){return e[t]}))},week:{dow:1,doy:4}});return r}))},8840:function(t,e,n){(function(t,e){e(n("c1df"))})(0,(function(t){"use strict"; -//! moment.js locale configuration -var e=t.defineLocale("gl",{months:"xaneiro_febreiro_marzo_abril_maio_xuño_xullo_agosto_setembro_outubro_novembro_decembro".split("_"),monthsShort:"xan._feb._mar._abr._mai._xuñ._xul._ago._set._out._nov._dec.".split("_"),monthsParseExact:!0,weekdays:"domingo_luns_martes_mércores_xoves_venres_sábado".split("_"),weekdaysShort:"dom._lun._mar._mér._xov._ven._sáb.".split("_"),weekdaysMin:"do_lu_ma_mé_xo_ve_sá".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD/MM/YYYY",LL:"D [de] MMMM [de] YYYY",LLL:"D [de] MMMM [de] YYYY H:mm",LLLL:"dddd, D [de] MMMM [de] YYYY H:mm"},calendar:{sameDay:function(){return"[hoxe "+(1!==this.hours()?"ás":"á")+"] LT"},nextDay:function(){return"[mañá "+(1!==this.hours()?"ás":"á")+"] LT"},nextWeek:function(){return"dddd ["+(1!==this.hours()?"ás":"a")+"] LT"},lastDay:function(){return"[onte "+(1!==this.hours()?"á":"a")+"] LT"},lastWeek:function(){return"[o] dddd [pasado "+(1!==this.hours()?"ás":"a")+"] LT"},sameElse:"L"},relativeTime:{future:function(t){return 0===t.indexOf("un")?"n"+t:"en "+t},past:"hai %s",s:"uns segundos",ss:"%d segundos",m:"un minuto",mm:"%d minutos",h:"unha hora",hh:"%d horas",d:"un día",dd:"%d días",M:"un mes",MM:"%d meses",y:"un ano",yy:"%d anos"},dayOfMonthOrdinalParse:/\d{1,2}º/,ordinal:"%dº",week:{dow:1,doy:4}});return e}))},8925:function(t,e,n){var r=n("c6cd"),i=Function.toString;"function"!=typeof r.inspectSource&&(r.inspectSource=function(t){return i.call(t)}),t.exports=r.inspectSource},"898b":function(t,e,n){(function(t,e){e(n("c1df"))})(0,(function(t){"use strict"; -//! moment.js locale configuration -var e="ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.".split("_"),n="ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic".split("_"),r=[/^ene/i,/^feb/i,/^mar/i,/^abr/i,/^may/i,/^jun/i,/^jul/i,/^ago/i,/^sep/i,/^oct/i,/^nov/i,/^dic/i],i=/^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre|ene\.?|feb\.?|mar\.?|abr\.?|may\.?|jun\.?|jul\.?|ago\.?|sep\.?|oct\.?|nov\.?|dic\.?)/i,a=t.defineLocale("es",{months:"enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre".split("_"),monthsShort:function(t,r){return t?/-MMM-/.test(r)?n[t.month()]:e[t.month()]:e},monthsRegex:i,monthsShortRegex:i,monthsStrictRegex:/^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre)/i,monthsShortStrictRegex:/^(ene\.?|feb\.?|mar\.?|abr\.?|may\.?|jun\.?|jul\.?|ago\.?|sep\.?|oct\.?|nov\.?|dic\.?)/i,monthsParse:r,longMonthsParse:r,shortMonthsParse:r,weekdays:"domingo_lunes_martes_miércoles_jueves_viernes_sábado".split("_"),weekdaysShort:"dom._lun._mar._mié._jue._vie._sáb.".split("_"),weekdaysMin:"do_lu_ma_mi_ju_vi_sá".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD/MM/YYYY",LL:"D [de] MMMM [de] YYYY",LLL:"D [de] MMMM [de] YYYY H:mm",LLLL:"dddd, D [de] MMMM [de] YYYY H:mm"},calendar:{sameDay:function(){return"[hoy a la"+(1!==this.hours()?"s":"")+"] LT"},nextDay:function(){return"[mañana a la"+(1!==this.hours()?"s":"")+"] LT"},nextWeek:function(){return"dddd [a la"+(1!==this.hours()?"s":"")+"] LT"},lastDay:function(){return"[ayer a la"+(1!==this.hours()?"s":"")+"] LT"},lastWeek:function(){return"[el] dddd [pasado a la"+(1!==this.hours()?"s":"")+"] LT"},sameElse:"L"},relativeTime:{future:"en %s",past:"hace %s",s:"unos segundos",ss:"%d segundos",m:"un minuto",mm:"%d minutos",h:"una hora",hh:"%d horas",d:"un día",dd:"%d días",w:"una semana",ww:"%d semanas",M:"un mes",MM:"%d meses",y:"un año",yy:"%d años"},dayOfMonthOrdinalParse:/\d{1,2}º/,ordinal:"%dº",week:{dow:1,doy:4},invalidDate:"Fecha inválida"});return a}))},"8aa5":function(t,e,n){"use strict";var r=n("6547").charAt;t.exports=function(t,e,n){return e+(n?r(t,e).length:1)}},"8c18":function(t,e,n){"use strict";n.d(e,"a",(function(){return s}));var r=n("a026"),i=n("9b76"),a=n("365c"),o=n("2326"),s=r["default"].extend({methods:{hasNormalizedSlot:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:i["i"],e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:this.$scopedSlots,n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:this.$slots;return Object(a["a"])(t,e,n)},normalizeSlot:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:i["i"],e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:this.$scopedSlots,r=arguments.length>3&&void 0!==arguments[3]?arguments[3]:this.$slots,s=Object(a["b"])(t,e,n,r);return s?Object(o["b"])(s):s}}})},"8c4e":function(t,e,n){"use strict";n.d(e,"a",(function(){return l}));var r=n("a026"),i=n("c9a9"),a=n("3c21"),o=n("d82f");function s(t,e,n){return e in t?Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,t}var c=function(t){return!t||0===Object(o["h"])(t).length},u=function(t){return{handler:function(e,n){if(!Object(a["a"])(e,n))if(c(e)||c(n))this[t]=Object(i["a"])(e);else{for(var r in n)Object(o["g"])(e,r)||this.$delete(this.$data[t],r);for(var s in e)this.$set(this.$data[t],s,e[s])}}}},l=function(t,e){return r["default"].extend({data:function(){return s({},e,Object(i["a"])(this[t]))},watch:s({},t,u(e))})}},"8d32":function(t,e,n){"use strict";n.d(e,"a",(function(){return o}));var r=n("a026"),i=n("be29");function a(t,e,n){return e in t?Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,t}var o=r["default"].extend({computed:{scopedStyleAttrs:function(){var t=Object(i["a"])(this.$parent);return t?a({},t,""):{}}}})},"8d47":function(t,e,n){(function(t,e){e(n("c1df"))})(0,(function(t){"use strict"; -//! moment.js locale configuration -function e(t){return"undefined"!==typeof Function&&t instanceof Function||"[object Function]"===Object.prototype.toString.call(t)}var n=t.defineLocale("el",{monthsNominativeEl:"Ιανουάριος_Φεβρουάριος_Μάρτιος_Απρίλιος_Μάιος_Ιούνιος_Ιούλιος_Αύγουστος_Σεπτέμβριος_Οκτώβριος_Νοέμβριος_Δεκέμβριος".split("_"),monthsGenitiveEl:"Ιανουαρίου_Φεβρουαρίου_Μαρτίου_Απριλίου_Μαΐου_Ιουνίου_Ιουλίου_Αυγούστου_Σεπτεμβρίου_Οκτωβρίου_Νοεμβρίου_Δεκεμβρίου".split("_"),months:function(t,e){return t?"string"===typeof e&&/D/.test(e.substring(0,e.indexOf("MMMM")))?this._monthsGenitiveEl[t.month()]:this._monthsNominativeEl[t.month()]:this._monthsNominativeEl},monthsShort:"Ιαν_Φεβ_Μαρ_Απρ_Μαϊ_Ιουν_Ιουλ_Αυγ_Σεπ_Οκτ_Νοε_Δεκ".split("_"),weekdays:"Κυριακή_Δευτέρα_Τρίτη_Τετάρτη_Πέμπτη_Παρασκευή_Σάββατο".split("_"),weekdaysShort:"Κυρ_Δευ_Τρι_Τετ_Πεμ_Παρ_Σαβ".split("_"),weekdaysMin:"Κυ_Δε_Τρ_Τε_Πε_Πα_Σα".split("_"),meridiem:function(t,e,n){return t>11?n?"μμ":"ΜΜ":n?"πμ":"ΠΜ"},isPM:function(t){return"μ"===(t+"").toLowerCase()[0]},meridiemParse:/[ΠΜ]\.?Μ?\.?/i,longDateFormat:{LT:"h:mm A",LTS:"h:mm:ss A",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY h:mm A",LLLL:"dddd, D MMMM YYYY h:mm A"},calendarEl:{sameDay:"[Σήμερα {}] LT",nextDay:"[Αύριο {}] LT",nextWeek:"dddd [{}] LT",lastDay:"[Χθες {}] LT",lastWeek:function(){switch(this.day()){case 6:return"[το προηγούμενο] dddd [{}] LT";default:return"[την προηγούμενη] dddd [{}] LT"}},sameElse:"L"},calendar:function(t,n){var r=this._calendarEl[t],i=n&&n.hours();return e(r)&&(r=r.apply(n)),r.replace("{}",i%12===1?"στη":"στις")},relativeTime:{future:"σε %s",past:"%s πριν",s:"λίγα δευτερόλεπτα",ss:"%d δευτερόλεπτα",m:"ένα λεπτό",mm:"%d λεπτά",h:"μία ώρα",hh:"%d ώρες",d:"μία μέρα",dd:"%d μέρες",M:"ένας μήνας",MM:"%d μήνες",y:"ένας χρόνος",yy:"%d χρόνια"},dayOfMonthOrdinalParse:/\d{1,2}η/,ordinal:"%dη",week:{dow:1,doy:4}});return n}))},"8d57":function(t,e,n){(function(t,e){e(n("c1df"))})(0,(function(t){"use strict"; -//! moment.js locale configuration -var e="styczeń_luty_marzec_kwiecień_maj_czerwiec_lipiec_sierpień_wrzesień_październik_listopad_grudzień".split("_"),n="stycznia_lutego_marca_kwietnia_maja_czerwca_lipca_sierpnia_września_października_listopada_grudnia".split("_"),r=[/^sty/i,/^lut/i,/^mar/i,/^kwi/i,/^maj/i,/^cze/i,/^lip/i,/^sie/i,/^wrz/i,/^paź/i,/^lis/i,/^gru/i];function i(t){return t%10<5&&t%10>1&&~~(t/10)%10!==1}function a(t,e,n){var r=t+" ";switch(n){case"ss":return r+(i(t)?"sekundy":"sekund");case"m":return e?"minuta":"minutę";case"mm":return r+(i(t)?"minuty":"minut");case"h":return e?"godzina":"godzinę";case"hh":return r+(i(t)?"godziny":"godzin");case"ww":return r+(i(t)?"tygodnie":"tygodni");case"MM":return r+(i(t)?"miesiące":"miesięcy");case"yy":return r+(i(t)?"lata":"lat")}}var o=t.defineLocale("pl",{months:function(t,r){return t?/D MMMM/.test(r)?n[t.month()]:e[t.month()]:e},monthsShort:"sty_lut_mar_kwi_maj_cze_lip_sie_wrz_paź_lis_gru".split("_"),monthsParse:r,longMonthsParse:r,shortMonthsParse:r,weekdays:"niedziela_poniedziałek_wtorek_środa_czwartek_piątek_sobota".split("_"),weekdaysShort:"ndz_pon_wt_śr_czw_pt_sob".split("_"),weekdaysMin:"Nd_Pn_Wt_Śr_Cz_Pt_So".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[Dziś o] LT",nextDay:"[Jutro o] LT",nextWeek:function(){switch(this.day()){case 0:return"[W niedzielę o] LT";case 2:return"[We wtorek o] LT";case 3:return"[W środę o] LT";case 6:return"[W sobotę o] LT";default:return"[W] dddd [o] LT"}},lastDay:"[Wczoraj o] LT",lastWeek:function(){switch(this.day()){case 0:return"[W zeszłą niedzielę o] LT";case 3:return"[W zeszłą środę o] LT";case 6:return"[W zeszłą sobotę o] LT";default:return"[W zeszły] dddd [o] LT"}},sameElse:"L"},relativeTime:{future:"za %s",past:"%s temu",s:"kilka sekund",ss:a,m:a,mm:a,h:a,hh:a,d:"1 dzień",dd:"%d dni",w:"tydzień",ww:a,M:"miesiąc",MM:a,y:"rok",yy:a},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}});return o}))},"8d74":function(t,e,n){var r=n("4cef"),i=/^\s+/;function a(t){return t?t.slice(0,r(t)+1).replace(i,""):t}t.exports=a},"8df4":function(t,e,n){(function(t,e){e(n("c1df"))})(0,(function(t){"use strict"; -//! moment.js locale configuration -var e={1:"۱",2:"۲",3:"۳",4:"۴",5:"۵",6:"۶",7:"۷",8:"۸",9:"۹",0:"۰"},n={"۱":"1","۲":"2","۳":"3","۴":"4","۵":"5","۶":"6","۷":"7","۸":"8","۹":"9","۰":"0"},r=t.defineLocale("fa",{months:"ژانویه_فوریه_مارس_آوریل_مه_ژوئن_ژوئیه_اوت_سپتامبر_اکتبر_نوامبر_دسامبر".split("_"),monthsShort:"ژانویه_فوریه_مارس_آوریل_مه_ژوئن_ژوئیه_اوت_سپتامبر_اکتبر_نوامبر_دسامبر".split("_"),weekdays:"یک‌شنبه_دوشنبه_سه‌شنبه_چهارشنبه_پنج‌شنبه_جمعه_شنبه".split("_"),weekdaysShort:"یک‌شنبه_دوشنبه_سه‌شنبه_چهارشنبه_پنج‌شنبه_جمعه_شنبه".split("_"),weekdaysMin:"ی_د_س_چ_پ_ج_ش".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},meridiemParse:/قبل از ظهر|بعد از ظهر/,isPM:function(t){return/بعد از ظهر/.test(t)},meridiem:function(t,e,n){return t<12?"قبل از ظهر":"بعد از ظهر"},calendar:{sameDay:"[امروز ساعت] LT",nextDay:"[فردا ساعت] LT",nextWeek:"dddd [ساعت] LT",lastDay:"[دیروز ساعت] LT",lastWeek:"dddd [پیش] [ساعت] LT",sameElse:"L"},relativeTime:{future:"در %s",past:"%s پیش",s:"چند ثانیه",ss:"%d ثانیه",m:"یک دقیقه",mm:"%d دقیقه",h:"یک ساعت",hh:"%d ساعت",d:"یک روز",dd:"%d روز",M:"یک ماه",MM:"%d ماه",y:"یک سال",yy:"%d سال"},preparse:function(t){return t.replace(/[۰-۹]/g,(function(t){return n[t]})).replace(/،/g,",")},postformat:function(t){return t.replace(/\d/g,(function(t){return e[t]})).replace(/,/g,"،")},dayOfMonthOrdinalParse:/\d{1,2}م/,ordinal:"%dم",week:{dow:6,doy:12}});return r}))},"8df4b":function(t,e,n){"use strict";var r=n("7a77");function i(t){if("function"!==typeof t)throw new TypeError("executor must be a function.");var e;this.promise=new Promise((function(t){e=t}));var n=this;t((function(t){n.reason||(n.reason=new r(t),e(n.reason))}))}i.prototype.throwIfRequested=function(){if(this.reason)throw this.reason},i.source=function(){var t,e=new i((function(e){t=e}));return{token:e,cancel:t}},t.exports=i},"8e5f":function(t,e,n){!function(e,n){t.exports=n()}(0,(function(){return function(t){function e(r){if(n[r])return n[r].exports;var i=n[r]={i:r,l:!1,exports:{}};return t[r].call(i.exports,i,i.exports,e),i.l=!0,i.exports}var n={};return e.m=t,e.c=n,e.i=function(t){return t},e.d=function(t,n,r){e.o(t,n)||Object.defineProperty(t,n,{configurable:!1,enumerable:!0,get:r})},e.n=function(t){var n=t&&t.__esModule?function(){return t.default}:function(){return t};return e.d(n,"a",n),n},e.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},e.p="/",e(e.s=60)}([function(t,e){var n=t.exports="undefined"!=typeof window&&window.Math==Math?window:"undefined"!=typeof self&&self.Math==Math?self:Function("return this")();"number"==typeof __g&&(__g=n)},function(t,e,n){var r=n(49)("wks"),i=n(30),a=n(0).Symbol,o="function"==typeof a;(t.exports=function(t){return r[t]||(r[t]=o&&a[t]||(o?a:i)("Symbol."+t))}).store=r},function(t,e,n){var r=n(5);t.exports=function(t){if(!r(t))throw TypeError(t+" is not an object!");return t}},function(t,e,n){var r=n(0),i=n(10),a=n(8),o=n(6),s=n(11),c=function(t,e,n){var u,l,d,f,h=t&c.F,p=t&c.G,m=t&c.S,b=t&c.P,v=t&c.B,_=p?r:m?r[e]||(r[e]={}):(r[e]||{}).prototype,g=p?i:i[e]||(i[e]={}),y=g.prototype||(g.prototype={});for(u in p&&(n=e),n)l=!h&&_&&void 0!==_[u],d=(l?_:n)[u],f=v&&l?s(d,r):b&&"function"==typeof d?s(Function.call,d):d,_&&o(_,u,d,t&c.U),g[u]!=d&&a(g,u,f),b&&y[u]!=d&&(y[u]=d)};r.core=i,c.F=1,c.G=2,c.S=4,c.P=8,c.B=16,c.W=32,c.U=64,c.R=128,t.exports=c},function(t,e,n){t.exports=!n(7)((function(){return 7!=Object.defineProperty({},"a",{get:function(){return 7}}).a}))},function(t,e){t.exports=function(t){return"object"==typeof t?null!==t:"function"==typeof t}},function(t,e,n){var r=n(0),i=n(8),a=n(12),o=n(30)("src"),s=Function.toString,c=(""+s).split("toString");n(10).inspectSource=function(t){return s.call(t)},(t.exports=function(t,e,n,s){var u="function"==typeof n;u&&(a(n,"name")||i(n,"name",e)),t[e]!==n&&(u&&(a(n,o)||i(n,o,t[e]?""+t[e]:c.join(String(e)))),t===r?t[e]=n:s?t[e]?t[e]=n:i(t,e,n):(delete t[e],i(t,e,n)))})(Function.prototype,"toString",(function(){return"function"==typeof this&&this[o]||s.call(this)}))},function(t,e){t.exports=function(t){try{return!!t()}catch(t){return!0}}},function(t,e,n){var r=n(13),i=n(25);t.exports=n(4)?function(t,e,n){return r.f(t,e,i(1,n))}:function(t,e,n){return t[e]=n,t}},function(t,e){var n={}.toString;t.exports=function(t){return n.call(t).slice(8,-1)}},function(t,e){var n=t.exports={version:"2.5.7"};"number"==typeof __e&&(__e=n)},function(t,e,n){var r=n(14);t.exports=function(t,e,n){if(r(t),void 0===e)return t;switch(n){case 1:return function(n){return t.call(e,n)};case 2:return function(n,r){return t.call(e,n,r)};case 3:return function(n,r,i){return t.call(e,n,r,i)}}return function(){return t.apply(e,arguments)}}},function(t,e){var n={}.hasOwnProperty;t.exports=function(t,e){return n.call(t,e)}},function(t,e,n){var r=n(2),i=n(41),a=n(29),o=Object.defineProperty;e.f=n(4)?Object.defineProperty:function(t,e,n){if(r(t),e=a(e,!0),r(n),i)try{return o(t,e,n)}catch(t){}if("get"in n||"set"in n)throw TypeError("Accessors not supported!");return"value"in n&&(t[e]=n.value),t}},function(t,e){t.exports=function(t){if("function"!=typeof t)throw TypeError(t+" is not a function!");return t}},function(t,e){t.exports={}},function(t,e){t.exports=function(t){if(void 0==t)throw TypeError("Can't call method on "+t);return t}},function(t,e,n){"use strict";var r=n(7);t.exports=function(t,e){return!!t&&r((function(){e?t.call(null,(function(){}),1):t.call(null)}))}},function(t,e,n){var r=n(23),i=n(16);t.exports=function(t){return r(i(t))}},function(t,e,n){var r=n(53),i=Math.min;t.exports=function(t){return t>0?i(r(t),9007199254740991):0}},function(t,e,n){var r=n(11),i=n(23),a=n(28),o=n(19),s=n(64);t.exports=function(t,e){var n=1==t,c=2==t,u=3==t,l=4==t,d=6==t,f=5==t||d,h=e||s;return function(e,s,p){for(var m,b,v=a(e),_=i(v),g=r(s,p,3),y=o(_.length),O=0,j=n?h(e,y):c?h(e,0):void 0;y>O;O++)if((f||O in _)&&(m=_[O],b=g(m,O,v),t))if(n)j[O]=b;else if(b)switch(t){case 3:return!0;case 5:return m;case 6:return O;case 2:j.push(m)}else if(l)return!1;return d?-1:u||l?l:j}}},function(t,e,n){var r=n(5),i=n(0).document,a=r(i)&&r(i.createElement);t.exports=function(t){return a?i.createElement(t):{}}},function(t,e){t.exports="constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf".split(",")},function(t,e,n){var r=n(9);t.exports=Object("z").propertyIsEnumerable(0)?Object:function(t){return"String"==r(t)?t.split(""):Object(t)}},function(t,e){t.exports=!1},function(t,e){t.exports=function(t,e){return{enumerable:!(1&t),configurable:!(2&t),writable:!(4&t),value:e}}},function(t,e,n){var r=n(13).f,i=n(12),a=n(1)("toStringTag");t.exports=function(t,e,n){t&&!i(t=n?t:t.prototype,a)&&r(t,a,{configurable:!0,value:e})}},function(t,e,n){var r=n(49)("keys"),i=n(30);t.exports=function(t){return r[t]||(r[t]=i(t))}},function(t,e,n){var r=n(16);t.exports=function(t){return Object(r(t))}},function(t,e,n){var r=n(5);t.exports=function(t,e){if(!r(t))return t;var n,i;if(e&&"function"==typeof(n=t.toString)&&!r(i=n.call(t)))return i;if("function"==typeof(n=t.valueOf)&&!r(i=n.call(t)))return i;if(!e&&"function"==typeof(n=t.toString)&&!r(i=n.call(t)))return i;throw TypeError("Can't convert object to primitive value")}},function(t,e){var n=0,r=Math.random();t.exports=function(t){return"Symbol(".concat(void 0===t?"":t,")_",(++n+r).toString(36))}},function(t,e,n){"use strict";var r=n(0),i=n(12),a=n(9),o=n(67),s=n(29),c=n(7),u=n(77).f,l=n(45).f,d=n(13).f,f=n(51).trim,h=r.Number,p=h,m=h.prototype,b="Number"==a(n(44)(m)),v="trim"in String.prototype,_=function(t){var e=s(t,!1);if("string"==typeof e&&e.length>2){e=v?e.trim():f(e,3);var n,r,i,a=e.charCodeAt(0);if(43===a||45===a){if(88===(n=e.charCodeAt(2))||120===n)return NaN}else if(48===a){switch(e.charCodeAt(1)){case 66:case 98:r=2,i=49;break;case 79:case 111:r=8,i=55;break;default:return+e}for(var o,c=e.slice(2),u=0,l=c.length;ui)return NaN;return parseInt(c,r)}}return+e};if(!h(" 0o1")||!h("0b1")||h("+0x1")){h=function(t){var e=arguments.length<1?0:t,n=this;return n instanceof h&&(b?c((function(){m.valueOf.call(n)})):"Number"!=a(n))?o(new p(_(e)),n,h):_(e)};for(var g,y=n(4)?u(p):"MAX_VALUE,MIN_VALUE,NaN,NEGATIVE_INFINITY,POSITIVE_INFINITY,EPSILON,isFinite,isInteger,isNaN,isSafeInteger,MAX_SAFE_INTEGER,MIN_SAFE_INTEGER,parseFloat,parseInt,isInteger".split(","),O=0;y.length>O;O++)i(p,g=y[O])&&!i(h,g)&&d(h,g,l(p,g));h.prototype=m,m.constructor=h,n(6)(r,"Number",h)}},function(t,e,n){"use strict";function r(t){return 0!==t&&(!(!Array.isArray(t)||0!==t.length)||!t)}function i(t){return function(){return!t.apply(void 0,arguments)}}function a(t,e){return void 0===t&&(t="undefined"),null===t&&(t="null"),!1===t&&(t="false"),-1!==t.toString().toLowerCase().indexOf(e.trim())}function o(t,e,n,r){return t.filter((function(t){return a(r(t,n),e)}))}function s(t){return t.filter((function(t){return!t.$isLabel}))}function c(t,e){return function(n){return n.reduce((function(n,r){return r[t]&&r[t].length?(n.push({$groupLabel:r[e],$isLabel:!0}),n.concat(r[t])):n}),[])}}function u(t,e,r,i,a){return function(s){return s.map((function(s){var c;if(!s[r])return console.warn("Options passed to vue-multiselect do not contain groups, despite the config."),[];var u=o(s[r],t,e,a);return u.length?(c={},n.i(p.a)(c,i,s[i]),n.i(p.a)(c,r,u),c):[]}))}}var l=n(59),d=n(54),f=(n.n(d),n(95)),h=(n.n(f),n(31)),p=(n.n(h),n(58)),m=n(91),b=(n.n(m),n(98)),v=(n.n(b),n(92)),_=(n.n(v),n(88)),g=(n.n(_),n(97)),y=(n.n(g),n(89)),O=(n.n(y),n(96)),j=(n.n(O),n(93)),w=(n.n(j),n(90)),M=(n.n(w),function(){for(var t=arguments.length,e=new Array(t),n=0;n-1},isSelected:function(t){var e=this.trackBy?t[this.trackBy]:t;return this.valueKeys.indexOf(e)>-1},isOptionDisabled:function(t){return!!t.$isDisabled},getOptionLabel:function(t){if(r(t))return"";if(t.isTag)return t.label;if(t.$isLabel)return t.$groupLabel;var e=this.customLabel(t,this.label);return r(e)?"":e},select:function(t,e){if(t.$isLabel&&this.groupSelect)this.selectGroup(t);else if(!(-1!==this.blockKeys.indexOf(e)||this.disabled||t.$isDisabled||t.$isLabel)&&(!this.max||!this.multiple||this.internalValue.length!==this.max)&&("Tab"!==e||this.pointerDirty)){if(t.isTag)this.$emit("tag",t.label,this.id),this.search="",this.closeOnSelect&&!this.multiple&&this.deactivate();else{if(this.isSelected(t))return void("Tab"!==e&&this.removeElement(t));this.$emit("select",t,this.id),this.multiple?this.$emit("input",this.internalValue.concat([t]),this.id):this.$emit("input",t,this.id),this.clearOnSelect&&(this.search="")}this.closeOnSelect&&this.deactivate()}},selectGroup:function(t){var e=this,n=this.options.find((function(n){return n[e.groupLabel]===t.$groupLabel}));if(n)if(this.wholeGroupSelected(n)){this.$emit("remove",n[this.groupValues],this.id);var r=this.internalValue.filter((function(t){return-1===n[e.groupValues].indexOf(t)}));this.$emit("input",r,this.id)}else{var i=n[this.groupValues].filter((function(t){return!(e.isOptionDisabled(t)||e.isSelected(t))}));this.$emit("select",i,this.id),this.$emit("input",this.internalValue.concat(i),this.id)}},wholeGroupSelected:function(t){var e=this;return t[this.groupValues].every((function(t){return e.isSelected(t)||e.isOptionDisabled(t)}))},wholeGroupDisabled:function(t){return t[this.groupValues].every(this.isOptionDisabled)},removeElement:function(t){var e=!(arguments.length>1&&void 0!==arguments[1])||arguments[1];if(!this.disabled&&!t.$isDisabled){if(!this.allowEmpty&&this.internalValue.length<=1)return void this.deactivate();var r="object"===n.i(l.a)(t)?this.valueKeys.indexOf(t[this.trackBy]):this.valueKeys.indexOf(t);if(this.$emit("remove",t,this.id),this.multiple){var i=this.internalValue.slice(0,r).concat(this.internalValue.slice(r+1));this.$emit("input",i,this.id)}else this.$emit("input",null,this.id);this.closeOnSelect&&e&&this.deactivate()}},removeLastElement:function(){-1===this.blockKeys.indexOf("Delete")&&0===this.search.length&&Array.isArray(this.internalValue)&&this.internalValue.length&&this.removeElement(this.internalValue[this.internalValue.length-1],!1)},activate:function(){var t=this;this.isOpen||this.disabled||(this.adjustPosition(),this.groupValues&&0===this.pointer&&this.filteredOptions.length&&(this.pointer=1),this.isOpen=!0,this.searchable?(this.preserveSearch||(this.search=""),this.$nextTick((function(){return t.$refs.search.focus()}))):this.$el.focus(),this.$emit("open",this.id))},deactivate:function(){this.isOpen&&(this.isOpen=!1,this.searchable?this.$refs.search.blur():this.$el.blur(),this.preserveSearch||(this.search=""),this.$emit("close",this.getValue(),this.id))},toggle:function(){this.isOpen?this.deactivate():this.activate()},adjustPosition:function(){if("undefined"!=typeof window){var t=this.$el.getBoundingClientRect().top,e=window.innerHeight-this.$el.getBoundingClientRect().bottom;e>this.maxHeight||e>t||"below"===this.openDirection||"bottom"===this.openDirection?(this.preferredOpenDirection="below",this.optimizedHeight=Math.min(e-40,this.maxHeight)):(this.preferredOpenDirection="above",this.optimizedHeight=Math.min(t-40,this.maxHeight))}}}}},function(t,e,n){"use strict";var r=n(54),i=(n.n(r),n(31));n.n(i),e.a={data:function(){return{pointer:0,pointerDirty:!1}},props:{showPointer:{type:Boolean,default:!0},optionHeight:{type:Number,default:40}},computed:{pointerPosition:function(){return this.pointer*this.optionHeight},visibleElements:function(){return this.optimizedHeight/this.optionHeight}},watch:{filteredOptions:function(){this.pointerAdjust()},isOpen:function(){this.pointerDirty=!1}},methods:{optionHighlight:function(t,e){return{"multiselect__option--highlight":t===this.pointer&&this.showPointer,"multiselect__option--selected":this.isSelected(e)}},groupHighlight:function(t,e){var n=this;if(!this.groupSelect)return["multiselect__option--group","multiselect__option--disabled"];var r=this.options.find((function(t){return t[n.groupLabel]===e.$groupLabel}));return r&&!this.wholeGroupDisabled(r)?["multiselect__option--group",{"multiselect__option--highlight":t===this.pointer&&this.showPointer},{"multiselect__option--group-selected":this.wholeGroupSelected(r)}]:"multiselect__option--disabled"},addPointerElement:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"Enter",e=t.key;this.filteredOptions.length>0&&this.select(this.filteredOptions[this.pointer],e),this.pointerReset()},pointerForward:function(){this.pointer0?(this.pointer--,this.$refs.list.scrollTop>=this.pointerPosition&&(this.$refs.list.scrollTop=this.pointerPosition),this.filteredOptions[this.pointer]&&this.filteredOptions[this.pointer].$isLabel&&!this.groupSelect&&this.pointerBackward()):this.filteredOptions[this.pointer]&&this.filteredOptions[0].$isLabel&&!this.groupSelect&&this.pointerForward(),this.pointerDirty=!0},pointerReset:function(){this.closeOnSelect&&(this.pointer=0,this.$refs.list&&(this.$refs.list.scrollTop=0))},pointerAdjust:function(){this.pointer>=this.filteredOptions.length-1&&(this.pointer=this.filteredOptions.length?this.filteredOptions.length-1:0),this.filteredOptions.length>0&&this.filteredOptions[this.pointer].$isLabel&&!this.groupSelect&&this.pointerForward()},pointerSet:function(t){this.pointer=t,this.pointerDirty=!0}}}},function(t,e,n){"use strict";var r=n(36),i=n(74),a=n(15),o=n(18);t.exports=n(72)(Array,"Array",(function(t,e){this._t=o(t),this._i=0,this._k=e}),(function(){var t=this._t,e=this._k,n=this._i++;return!t||n>=t.length?(this._t=void 0,i(1)):i(0,"keys"==e?n:"values"==e?t[n]:[n,t[n]])}),"values"),a.Arguments=a.Array,r("keys"),r("values"),r("entries")},function(t,e,n){"use strict";var r=n(31),i=(n.n(r),n(32)),a=n(33);e.a={name:"vue-multiselect",mixins:[i.a,a.a],props:{name:{type:String,default:""},selectLabel:{type:String,default:"Press enter to select"},selectGroupLabel:{type:String,default:"Press enter to select group"},selectedLabel:{type:String,default:"Selected"},deselectLabel:{type:String,default:"Press enter to remove"},deselectGroupLabel:{type:String,default:"Press enter to deselect group"},showLabels:{type:Boolean,default:!0},limit:{type:Number,default:99999},maxHeight:{type:Number,default:300},limitText:{type:Function,default:function(t){return"and ".concat(t," more")}},loading:{type:Boolean,default:!1},disabled:{type:Boolean,default:!1},openDirection:{type:String,default:""},showNoOptions:{type:Boolean,default:!0},showNoResults:{type:Boolean,default:!0},tabindex:{type:Number,default:0}},computed:{isSingleLabelVisible:function(){return(this.singleValue||0===this.singleValue)&&(!this.isOpen||!this.searchable)&&!this.visibleValues.length},isPlaceholderVisible:function(){return!(this.internalValue.length||this.searchable&&this.isOpen)},visibleValues:function(){return this.multiple?this.internalValue.slice(0,this.limit):[]},singleValue:function(){return this.internalValue[0]},deselectLabelText:function(){return this.showLabels?this.deselectLabel:""},deselectGroupLabelText:function(){return this.showLabels?this.deselectGroupLabel:""},selectLabelText:function(){return this.showLabels?this.selectLabel:""},selectGroupLabelText:function(){return this.showLabels?this.selectGroupLabel:""},selectedLabelText:function(){return this.showLabels?this.selectedLabel:""},inputStyle:function(){if(this.searchable||this.multiple&&this.value&&this.value.length)return this.isOpen?{width:"100%"}:{width:"0",position:"absolute",padding:"0"}},contentStyle:function(){return this.options.length?{display:"inline-block"}:{display:"block"}},isAbove:function(){return"above"===this.openDirection||"top"===this.openDirection||"below"!==this.openDirection&&"bottom"!==this.openDirection&&"above"===this.preferredOpenDirection},showSearchInput:function(){return this.searchable&&(!this.hasSingleSelectedSlot||!this.visibleSingleValue&&0!==this.visibleSingleValue||this.isOpen)}}}},function(t,e,n){var r=n(1)("unscopables"),i=Array.prototype;void 0==i[r]&&n(8)(i,r,{}),t.exports=function(t){i[r][t]=!0}},function(t,e,n){var r=n(18),i=n(19),a=n(85);t.exports=function(t){return function(e,n,o){var s,c=r(e),u=i(c.length),l=a(o,u);if(t&&n!=n){for(;u>l;)if((s=c[l++])!=s)return!0}else for(;u>l;l++)if((t||l in c)&&c[l]===n)return t||l||0;return!t&&-1}}},function(t,e,n){var r=n(9),i=n(1)("toStringTag"),a="Arguments"==r(function(){return arguments}()),o=function(t,e){try{return t[e]}catch(t){}};t.exports=function(t){var e,n,s;return void 0===t?"Undefined":null===t?"Null":"string"==typeof(n=o(e=Object(t),i))?n:a?r(e):"Object"==(s=r(e))&&"function"==typeof e.callee?"Arguments":s}},function(t,e,n){"use strict";var r=n(2);t.exports=function(){var t=r(this),e="";return t.global&&(e+="g"),t.ignoreCase&&(e+="i"),t.multiline&&(e+="m"),t.unicode&&(e+="u"),t.sticky&&(e+="y"),e}},function(t,e,n){var r=n(0).document;t.exports=r&&r.documentElement},function(t,e,n){t.exports=!n(4)&&!n(7)((function(){return 7!=Object.defineProperty(n(21)("div"),"a",{get:function(){return 7}}).a}))},function(t,e,n){var r=n(9);t.exports=Array.isArray||function(t){return"Array"==r(t)}},function(t,e,n){"use strict";function r(t){var e,n;this.promise=new t((function(t,r){if(void 0!==e||void 0!==n)throw TypeError("Bad Promise constructor");e=t,n=r})),this.resolve=i(e),this.reject=i(n)}var i=n(14);t.exports.f=function(t){return new r(t)}},function(t,e,n){var r=n(2),i=n(76),a=n(22),o=n(27)("IE_PROTO"),s=function(){},c=function(){var t,e=n(21)("iframe"),r=a.length;for(e.style.display="none",n(40).appendChild(e),e.src="javascript:",t=e.contentWindow.document,t.open(),t.write(" \ No newline at end of file diff --git a/cookbook/static/vue/recipe_search_view.html b/cookbook/static/vue/recipe_search_view.html deleted file mode 100644 index 328da15e..00000000 --- a/cookbook/static/vue/recipe_search_view.html +++ /dev/null @@ -1 +0,0 @@ -Vue App
\ No newline at end of file diff --git a/cookbook/static/vue/recipe_view.html b/cookbook/static/vue/recipe_view.html deleted file mode 100644 index 6a477fdd..00000000 --- a/cookbook/static/vue/recipe_view.html +++ /dev/null @@ -1 +0,0 @@ -Vue App
\ No newline at end of file diff --git a/cookbook/static/vue/supermarket_view.html b/cookbook/static/vue/supermarket_view.html deleted file mode 100644 index a31f517c..00000000 --- a/cookbook/static/vue/supermarket_view.html +++ /dev/null @@ -1 +0,0 @@ -Vue App
\ No newline at end of file diff --git a/cookbook/static/vue/user_file_view.html b/cookbook/static/vue/user_file_view.html deleted file mode 100644 index e44a7839..00000000 --- a/cookbook/static/vue/user_file_view.html +++ /dev/null @@ -1 +0,0 @@ -Vue App
\ No newline at end of file diff --git a/cookbook/tables.py b/cookbook/tables.py index 2adf47a7..1829c6f5 100644 --- a/cookbook/tables.py +++ b/cookbook/tables.py @@ -52,22 +52,13 @@ class RecipeTable(tables.Table): ) -class KeywordTable(tables.Table): - id = tables.LinkColumn('edit_keyword', args=[A('id')]) +# class IngredientTable(tables.Table): +# id = tables.LinkColumn('edit_food', args=[A('id')]) - class Meta: - model = Keyword - template_name = 'generic/table_template.html' - fields = ('id', 'icon', 'name') - - -class IngredientTable(tables.Table): - id = tables.LinkColumn('edit_food', args=[A('id')]) - - class Meta: - model = Keyword - template_name = 'generic/table_template.html' - fields = ('id', 'name') +# class Meta: +# model = Keyword +# template_name = 'generic/table_template.html' +# fields = ('id', 'name') class StorageTable(tables.Table): diff --git a/cookbook/templates/base.html b/cookbook/templates/base.html index 4b3b4d28..1976ef33 100644 --- a/cookbook/templates/base.html +++ b/cookbook/templates/base.html @@ -73,68 +73,21 @@ {% endif %}
@@ -25,8 +26,10 @@
{% trans 'Sync Now!' %} + {% trans 'Show Recipes' %} + {% trans 'Show Log' %}

{% render_table monitored_paths %} -{% endblock %} \ No newline at end of file +{% endblock %} diff --git a/cookbook/templates/books.html b/cookbook/templates/books.html index f38c3362..7626f131 100644 --- a/cookbook/templates/books.html +++ b/cookbook/templates/books.html @@ -1,81 +1,33 @@ {% extends "base.html" %} -{% load custom_tags %} +{% load render_bundle from webpack_loader %} +{% load static %} {% load i18n %} +{% load l10n %} {% block title %}{% trans 'Recipe Books' %}{% endblock %} +{% block content_fluid %} -{% block content %} -
-
-

{% trans 'Recipe Books' %}

-
- +
+
-
-
- {% for b in book_list %} -
-
-
-
-
{% if b.book.icon %}{{ b.book.icon }} {% endif %}{{ b.book.name }}
-
{% if b.book.created_by != request.user %} - {% trans 'by' %} {{ b.book.created_by.get_user_name }} - {% endif %}
- {% if b.book.description %} -

{{ b.book.description }}

- {% endif %} - - {% if b.book.created_by == request.user or request.user.is_superuser %} - {% trans 'Edit' %} - {% trans 'Delete' %} - {% endif %} -
-
- {% if b.recipes %} -
    - {% for r in b.recipes %} -
  • -
    -
    - {% recipe_last r.recipe request.user as last_cooked %} - {{ r.recipe.name }} - {% recipe_rating r.recipe request.user as rating %} - {{ rating|safe }} - {% if last_cooked %} -   - {% trans 'Last cooked' %} {{ last_cooked|date }} - {% endif %} -
    - {% if b.book.created_by == request.user or request.user.is_superuser %} -
    - -
    - {% endif %} -
    -
  • - {% endfor %} -
- {% else %} -
-

- {% trans 'There are no recipes in this book yet.' %} -

-
- {% endif %} -
-
-
-
- {% endfor %} +{% endblock %} + +{% block script %} + {% if debug %} + + {% else %} + + {% endif %} + + + + {% render_bundle 'cookbook_view' %} {% endblock %} \ No newline at end of file diff --git a/cookbook/templates/forms/edit_internal_recipe.html b/cookbook/templates/forms/edit_internal_recipe.html index 5cd4e04c..85a04474 100644 --- a/cookbook/templates/forms/edit_internal_recipe.html +++ b/cookbook/templates/forms/edit_internal_recipe.html @@ -1,823 +1,39 @@ {% extends "base.html" %} -{% load i18n %} -{% load custom_tags %} -{% load theming_tags %} +{% load render_bundle from webpack_loader %} {% load static %} +{% load i18n %} +{% load l10n %} {% block title %}{% trans 'Edit Recipe' %}{% endblock %} {% block extra_head %} - {% include 'include/vue_base.html' %} - - - - - - - - - - - - {% endblock %} {% block content %} -

{% trans 'Edit Recipe' %}

- -
-
- {% if not request.user.is_authenticated or request.user.userpreference.theme == request.user.userpreference.TANDOOR %} - - {% else %} - - {% endif %} -
- -
- -
-
- - -
-
-
-
- - - -
-
-
- -
-
- - -
-
- - -
- - -
- - -
- - -
- - - -
-
- - - - - - -
- -
-
-
-

- - - - - -

-
-
- - - - - -
-
- -
-
- - -
-
- - -
-
- - -
-
- - -
- -
- - - -
- -
- - - -
-
- - - -
-
- - - {% trans 'You can use markdown to format this field. See the docs here' %} -
-
-
-
-
- -
-
- - - - - - {% trans 'View Recipe' %} - {% trans 'Delete Recipe' %} -
- -
+
+
{% endblock %} -{% block content_xl_right %} -
-
-
-
-
-
- - - - - - - - - - {% trans 'View Recipe' %} - {% trans 'Delete Recipe' %} -
-
-
-
-
-
{% trans 'Steps' %}
- -
-
-
- - -
- -
- -
-
-
-
-
-
-
- -{% endblock %} {% block script %} + {% if debug %} + + {% else %} + + {% endif %} - + + {% render_bundle 'edit_internal_recipe' %} {% endblock %} \ No newline at end of file diff --git a/cookbook/templates/generic/checklist_template.html b/cookbook/templates/generic/checklist_template.html new file mode 100644 index 00000000..e58ab5f7 --- /dev/null +++ b/cookbook/templates/generic/checklist_template.html @@ -0,0 +1,32 @@ +{% extends "base.html" %} +{% load render_bundle from webpack_loader %} +{% load static %} +{% load i18n %} +{% comment %} {% load l10n %} {% endcomment %} +{% block title %}{{ title }}{% endblock %} + +{% block content_fluid %} + +
+ +
+ + +{% endblock %} + + +{% block script %} + {{ config | json_script:"model_config" }} + + {% if debug %} + + {% else %} + + {% endif %} + + + + {% render_bundle 'checklist_view' %} +{% endblock %} \ No newline at end of file diff --git a/cookbook/templates/generic/delete_template.html b/cookbook/templates/generic/delete_template.html index 73d30643..e464a8f3 100644 --- a/cookbook/templates/generic/delete_template.html +++ b/cookbook/templates/generic/delete_template.html @@ -12,13 +12,16 @@

{% trans 'Delete' %} {{ title }}

+
{% csrf_token %} {{ form|crispy }} - + + {% trans 'Cancel' %}
+ {% endblock %} \ No newline at end of file diff --git a/cookbook/templates/generic/edit_template.html b/cookbook/templates/generic/edit_template.html index 244c1713..806927a3 100644 --- a/cookbook/templates/generic/edit_template.html +++ b/cookbook/templates/generic/edit_template.html @@ -20,11 +20,13 @@
{% csrf_token %} {{ form|crispy }} - + {% delete_url form.instance|get_class form.instance.pk as delete_view_url %} {% if delete_view_url %} - {% trans 'Delete' %} + {% if not object.numchild or object.numchild == 0 %} + {% trans 'Delete' %} + {% endif %} {% endif %} {% if view_url %} {% trans 'View' %} diff --git a/cookbook/templates/generic/list_template.html b/cookbook/templates/generic/list_template.html index bd69e526..673d9103 100644 --- a/cookbook/templates/generic/list_template.html +++ b/cookbook/templates/generic/list_template.html @@ -8,6 +8,15 @@ {% block content %} + {% if request.resolver_match.url_name in 'list_storage,list_recipe_import,list_sync_log' %} + + {% endif %} +

{{ title }} {% trans 'List' %} {% if create_url %} diff --git a/cookbook/templates/generic/model_template.html b/cookbook/templates/generic/model_template.html new file mode 100644 index 00000000..c9755625 --- /dev/null +++ b/cookbook/templates/generic/model_template.html @@ -0,0 +1,38 @@ +{% extends "base.html" %} +{% load l10n %} +{% load render_bundle from webpack_loader %} +{% load static %} +{% load i18n %} +{% comment %} {% load l10n %} {% endcomment %} +{% block title %}{{ title }}{% endblock %} + +{% block content_fluid %} + +
+ +
+ + +{% endblock %} + + +{% block script %} + {{ config | json_script:"model_config" }} + + {% if debug %} + + {% else %} + + {% endif %} + + + + {% render_bundle 'model_list_view' %} +{% endblock %} \ No newline at end of file diff --git a/cookbook/templates/meal_plan.html b/cookbook/templates/meal_plan.html index 1f92a1aa..187b3f95 100644 --- a/cookbook/templates/meal_plan.html +++ b/cookbook/templates/meal_plan.html @@ -21,9 +21,9 @@ {% block content %}
-
+
@@ -46,7 +53,8 @@ - @@ -460,7 +468,7 @@ this.$set(mte, 'delete', false) } - if (this.meal_types.length === 0){ + if (this.meal_types.length === 0) { this.makeToast(gettext('Information'), gettext('To use the meal plan please first create at least one meal plan type.'), 'warning') } }).catch((err) => { @@ -517,7 +525,7 @@ } this.$http.get(url).then((response) => { - this.recipes = response.data.results; + this.recipes = this.removeDuplicates(response.data.results, recipe => recipe.id); }).catch((err) => { console.log("getRecipes error: ", err); this.makeToast(gettext('Error'), gettext('There was an error loading a resource!') + err.bodyText, 'danger') @@ -552,7 +560,7 @@ let plan_entry = evt.added.element plan_entry.date = date - plan_entry.meal_type = meal_type.id + plan_entry.meal_type = meal_type plan_entry.meal_type_name = meal_type.name if (plan_entry.is_new) { // its not a meal plan object @@ -567,7 +575,6 @@ console.log("dragChanged create error", err); }) } else { - console.log(plan_entry) this.$http.put(`{% url 'api:mealplan-list' %}${plan_entry.id}/`, plan_entry).then((response) => { }).catch((err) => { console.log("dragChanged update error", err); @@ -585,6 +592,11 @@ this.makeToast(gettext('Error'), gettext('There was an error loading a resource!') + err.bodyText, 'danger') }) }, + removeDuplicates: function (data, key) { + return [ + ...new Map(data.map(item => [key(item), item])).values() + ] + }, updatePlanTypes: function () { let promise_list = [] let i = 0 diff --git a/cookbook/templates/files.html b/cookbook/templates/meal_plan_new.html similarity index 52% rename from cookbook/templates/files.html rename to cookbook/templates/meal_plan_new.html index 80421210..562c124d 100644 --- a/cookbook/templates/files.html +++ b/cookbook/templates/meal_plan_new.html @@ -4,16 +4,12 @@ {% load i18n %} {% load l10n %} -{% block title %}{% trans 'Files' %}{% endblock %} +{% block title %}{% trans 'Meal-Plan' %}{% endblock %} -{% block extra_head %} - -{% endblock %} +{% block content_fluid %} -{% block content %} - -
- +
+
@@ -28,12 +24,10 @@ {% endif %} - {% render_bundle 'user_file_view' %} + {% render_bundle 'meal_plan_view' %} {% endblock %} \ No newline at end of file diff --git a/cookbook/templates/search_info.html b/cookbook/templates/search_info.html new file mode 100644 index 00000000..6f267a58 --- /dev/null +++ b/cookbook/templates/search_info.html @@ -0,0 +1,110 @@ +{% extends "base.html" %} +{% load static %} +{% load i18n %} + +{% block title %}{% trans "Search Settings" %}{% endblock %} + +{% block content %} + +

{% trans 'Search Settings' %}

+ {% blocktrans %} + Creating the best search experience is complicated and weighs heavily on your personal configuration. + Changing any of the search settings can have significant impact on the speed and quality of the results. + Search Methods, Trigrams and Full Text Search configurations are only available if you are using Postgres for your database. + {% endblocktrans %} + +
+
+ +

{% trans 'Search Methods' %}

+ +
+
+

{% blocktrans %} + Full text searches attempt to normalize the words provided to match common variants. For example: 'forked', 'forking', 'forks' will all normalize to 'fork'. + There are several methods available, described below, that will control how the search behavior should react when multiple words are searched. + Full technical details on how these operate can be viewed on Postgresql's website. + {% endblocktrans %}

+

{% trans 'Simple' %}

+

{% blocktrans %} + Simple searches ignore punctuation and common words such as 'the', 'a', 'and'. And will treat seperate words as required. + Searching for 'apple or flour' will return any recipe that includes both 'apple' and 'flour' anywhere in the fields that have been selected for a full text search. + {% endblocktrans %}

+

{% trans 'Phrase' %}

+

{% blocktrans %} + Phrase searches ignore punctuation, but will search for all of the words in the exact order provided. + Searching for 'apple or flour' will only return a recipe that includes the exact phrase 'apple or flour' in any of the fields that have been selected for a full text search. + {% endblocktrans %}

+

{% trans 'Web' %}

+

{% blocktrans %} + Web searches simulate functionality found on many web search sites supporting special syntax. + Placing quotes around several words will convert those words into a phrase. + 'or' is recongized as searching for the word (or phrase) immediately before 'or' OR the word (or phrase) directly after. + '-' is recognized as searching for recipes that do not include the word (or phrase) that comes immediately after. + For example searching for 'apple pie' or cherry -butter will return any recipe that includes the phrase 'apple pie' or the word 'cherry' + in any field included in the full text search but exclude any recipe that has the word 'butter' in any field included. + {% endblocktrans %}

+

{% trans 'Raw' %}

+

{% blocktrans %} + Raw search is similar to Web except will take puncuation operators such as '|', '&' and '()' + {% endblocktrans %}

+
+ +
+ +
+

fuzzy search

+
+
+ {% blocktrans %} + Another approach to searching that also requires Postgresql is fuzzy search or trigram similarity. A trigram is a group of three consecutive characters. + For example searching for 'apple' will create x trigrams 'app', 'ppl', 'ple' and will create a score of how closely words match the generated trigrams. + One benefit of searching trigams is that a search for 'sandwich' will find mispelled words such as 'sandwhich' that would be missed by other methods. + {% endblocktrans %} +
+ +
+ +
+

{% trans 'Search Fields' %}

+ +
+
+ {% blocktrans %} + Unaccent is a special case in that it enables searching a field 'unaccented' for each search style attempting to ignore accented values. + For example when you enable unaccent for 'Name' any search (starts with, contains, trigram) will attempt the search ignoring accented characters. + + For the other options, you can enable search on any or all fields and they will be combined together with an assumed 'OR'. + For example enabling 'Name' for Starts With, 'Name' and 'Description' for Partial Match and 'Ingredients' and 'Keywords' for Full Search + and searching for 'apple' will generate a search that will return recipes that have: + - A recipe name that starts with 'apple' + - OR a recipe name that contains 'apple' + - OR a recipe description that contains 'apple' + - OR a recipe that will have a full text search match ('apple' or 'apples') in ingredients + - OR a recipe that will have a full text search match in Keywords + + Combining too many fields in too many types of search can have a negative impact on performance, create duplicate results or return unexpected results. + For example, enabling fuzzy search or partial matches will interfere with web search methods. + Searching for 'apple -pie' with fuzzy search and full text search will return the recipe Apple Pie. Though it is not included in the full text results, it does match the trigram results. + {% endblocktrans %} +
+ +
+ +
+

{% trans 'Search Index' %}

+ +
+
+ {% blocktrans %} + Trigram search and Full Text Search both rely on database indexes to perform effectively. + You can rebuild the indexes on all fields in the Admin page for Recipes and selecting all recipes and running 'rebuild index for selected recipes' + You can also rebuild indexes at the command line by executing the management command 'python manage.py rebuildindex' + {% endblocktrans %} +
+ +
+
+
+
+{% endblock %} diff --git a/cookbook/templates/settings.html b/cookbook/templates/settings.html index cd72af35..eba8ad14 100644 --- a/cookbook/templates/settings.html +++ b/cookbook/templates/settings.html @@ -21,23 +21,40 @@
-
+

{% trans 'Name Settings' %}

{% csrf_token %} @@ -48,8 +65,8 @@

{% trans 'Account Settings' %}

- {% trans 'Emails' %} - {% trans 'Password' %} + {% trans 'Emails' %} + {% trans 'Password' %} {% trans 'Social' %}
@@ -58,7 +75,8 @@
-
+
@@ -109,7 +127,8 @@
-
+
@@ -141,13 +160,69 @@
+ +
{% endblock %} \ No newline at end of file diff --git a/cookbook/templates/shopping_list.html b/cookbook/templates/shopping_list.html index 0b8110f0..545a1611 100644 --- a/cookbook/templates/shopping_list.html +++ b/cookbook/templates/shopping_list.html @@ -25,9 +25,16 @@ {% block content %}
-
+

{% trans 'Shopping List' %}

-
+ + + + + +
{% trans 'Edit' %} @@ -498,7 +505,7 @@ servings = this.servings_cache[item.list_recipe] } - entry.amount += item.amount * servings + entry.amount += (item.amount * servings).toFixed(2) if (item.list_recipe !== null && entry.recipes.indexOf(this.recipe_cache[item.list_recipe]) === -1) { entry.recipes.push(this.recipe_cache[item.list_recipe]) @@ -507,7 +514,7 @@ entry.entries.push(item.id) } else { if (item.list_recipe !== null) { - item.amount = item.amount * this.servings_cache[item.list_recipe] + item.amount = (item.amount * this.servings_cache[item.list_recipe]).toFixed(2) } item.unit = ((element.unit !== undefined && element.unit !== null) ? element.unit : {'name': ''}) item.entries = [element.id] @@ -908,7 +915,7 @@ searchKeywords: function (query) { this.keywords_loading = true this.$http.get("{% url 'api:keyword-list' %}" + '?query=' + query + '&limit=10').then((response) => { - this.keywords = response.data; + this.keywords = response.data.results; this.keywords_loading = false }).catch((err) => { console.log(err) @@ -919,7 +926,7 @@ searchUnits: function (query) { //TODO move to central component this.units_loading = true this.$http.get("{% url 'api:unit-list' %}" + '?query=' + query + '&limit=10').then((response) => { - this.units = response.data; + this.units = response.data.results; this.units_loading = false }).catch((err) => { this.makeToast(gettext('Error'), gettext("There was an error loading a resource!") + err.bodyText, 'danger') @@ -928,7 +935,7 @@ searchFoods: function (query) { //TODO move to central component this.foods_loading = true this.$http.get("{% url 'api:food-list' %}" + '?query=' + query + '&limit=10').then((response) => { - this.foods = response.data + this.foods = response.data.results this.foods_loading = false }).catch((err) => { this.makeToast(gettext('Error'), gettext("There was an error loading a resource!") + err.bodyText, 'danger') diff --git a/cookbook/templates/sw.js b/cookbook/templates/sw.js deleted file mode 100644 index de9c3e99..00000000 --- a/cookbook/templates/sw.js +++ /dev/null @@ -1 +0,0 @@ -(function(t){var e={};function n(r){if(e[r])return e[r].exports;var o=e[r]={i:r,l:!1,exports:{}};return t[r].call(o.exports,o,o.exports,n),o.l=!0,o.exports}n.m=t,n.c=e,n.d=function(t,e,r){n.o(t,e)||Object.defineProperty(t,e,{enumerable:!0,get:r})},n.r=function(t){"undefined"!==typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})},n.t=function(t,e){if(1&e&&(t=n(t)),8&e)return t;if(4&e&&"object"===typeof t&&t&&t.__esModule)return t;var r=Object.create(null);if(n.r(r),Object.defineProperty(r,"default",{enumerable:!0,value:t}),2&e&&"string"!=typeof t)for(var o in t)n.d(r,o,function(e){return t[e]}.bind(null,o));return r},n.n=function(t){var e=t&&t.__esModule?function(){return t["default"]}:function(){return t};return n.d(e,"a",e),e},n.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},n.p="",n(n.s="249e")})({"00ee":function(t,e,n){var r=n("b622"),o=r("toStringTag"),i={};i[o]="z",t.exports="[object z]"===String(i)},"06cf":function(t,e,n){var r=n("83ab"),o=n("d1e7"),i=n("5c6c"),a=n("fc6a"),c=n("c04e"),s=n("5135"),u=n("0cfb"),l=Object.getOwnPropertyDescriptor;e.f=r?l:function(t,e){if(t=a(t),e=c(e,!0),u)try{return l(t,e)}catch(n){}if(s(t,e))return i(!o.f.call(t,e),t[e])}},"0719":function(t,e,n){"use strict";try{self["workbox:core:6.1.5"]&&_()}catch(r){}},"0cfb":function(t,e,n){var r=n("83ab"),o=n("d039"),i=n("cc12");t.exports=!r&&!o((function(){return 7!=Object.defineProperty(i("div"),"a",{get:function(){return 7}}).a}))},"14c3":function(t,e,n){var r=n("c6b6"),o=n("9263");t.exports=function(t,e){var n=t.exec;if("function"===typeof n){var i=n.call(t,e);if("object"!==typeof i)throw TypeError("RegExp exec method returned something other than an Object or null");return i}if("RegExp"!==r(t))throw TypeError("RegExp#exec called on incompatible receiver");return o.call(t,e)}},"1d80":function(t,e){t.exports=function(t){if(void 0==t)throw TypeError("Can't call method on "+t);return t}},"23cb":function(t,e,n){var r=n("a691"),o=Math.max,i=Math.min;t.exports=function(t,e){var n=r(t);return n<0?o(n+e,0):i(n,e)}},"23e7":function(t,e,n){var r=n("da84"),o=n("06cf").f,i=n("9112"),a=n("6eeb"),c=n("ce4e"),s=n("e893"),u=n("94ca");t.exports=function(t,e){var n,l,h,f,p,d,g=t.target,y=t.global,m=t.stat;if(l=y?r:m?r[g]||c(g,{}):(r[g]||{}).prototype,l)for(h in e){if(p=e[h],t.noTargetGet?(d=o(l,h),f=d&&d.value):f=l[h],n=u(y?h:g+(m?".":"#")+h,t.forced),!n&&void 0!==f){if(typeof p===typeof f)continue;s(p,f)}(t.sham||f&&f.sham)&&i(p,"sham",!0),a(l,h,p,t)}}},"241c":function(t,e,n){var r=n("ca84"),o=n("7839"),i=o.concat("length","prototype");e.f=Object.getOwnPropertyNames||function(t){return r(t,i)}},"249e":function(t,e,n){"use strict";n.r(e);n("d3b7");function r(t,e,n,r,o,i,a){try{var c=t[i](a),s=c.value}catch(u){return void n(u)}c.done?e(s):Promise.resolve(s).then(r,o)}function o(t){return function(){var e=this,n=arguments;return new Promise((function(o,i){var a=t.apply(e,n);function c(t){r(a,o,i,c,s,"next",t)}function s(t){r(a,o,i,c,s,"throw",t)}c(void 0)}))}}n("ac1f"),n("466d"),n("4d63"),n("25f0"),n("96cf"),n("0719");const i=(t,...e)=>{let n=t;return e.length>0&&(n+=" :: "+JSON.stringify(e)),n},a=i;class c extends Error{constructor(t,e){const n=a(t,e);super(n),this.name=t,this.details=e}}const s={googleAnalytics:"googleAnalytics",precache:"precache-v2",prefix:"workbox",runtime:"runtime",suffix:"undefined"!==typeof registration?registration.scope:""},u=t=>[s.prefix,t,s.suffix].filter(t=>t&&t.length>0).join("-"),l=t=>{for(const e of Object.keys(s))t(e)},h={updateDetails:t=>{l(e=>{"string"===typeof t[e]&&(s[e]=t[e])})},getGoogleAnalyticsName:t=>t||u(s.googleAnalytics),getPrecacheName:t=>t||u(s.precache),getPrefix:()=>s.prefix,getRuntimeName:t=>t||u(s.runtime),getSuffix:()=>s.suffix};n("c700");let f;function p(){if(void 0===f){const e=new Response("");if("body"in e)try{new Response(e.body),f=!0}catch(t){f=!1}f=!1}return f}async function d(t,e){let n=null;if(t.url){const e=new URL(t.url);n=e.origin}if(n!==self.location.origin)throw new c("cross-origin-copy-response",{origin:n});const r=t.clone(),o={headers:new Headers(r.headers),status:r.status,statusText:r.statusText},i=e?e(o):o,a=p()?r.body:await r.blob();return new Response(a,i)}const g=t=>{const e=new URL(String(t),location.href);return e.href.replace(new RegExp("^"+location.origin),"")};function y(t,e){const n=new URL(t);for(const r of e)n.searchParams.delete(r);return n.href}async function m(t,e,n,r){const o=y(e.url,n);if(e.url===o)return t.match(e,r);const i={...r,ignoreSearch:!0},a=await t.keys(e,i);for(const c of a){const e=y(c.url,n);if(o===e)return t.match(c,r)}}class v{constructor(){this.promise=new Promise((t,e)=>{this.resolve=t,this.reject=e})}}const w=new Set;async function b(){for(const t of w)await t()}function x(t){return new Promise(e=>setTimeout(e,t))}n("6aa8");function _(t){return"string"===typeof t?new Request(t):t}class E{constructor(t,e){this._cacheKeys={},Object.assign(this,e),this.event=e.event,this._strategy=t,this._handlerDeferred=new v,this._extendLifetimePromises=[],this._plugins=[...t.plugins],this._pluginStateMap=new Map;for(const n of this._plugins)this._pluginStateMap.set(n,{});this.event.waitUntil(this._handlerDeferred.promise)}async fetch(t){const{event:e}=this;let n=_(t);if("navigate"===n.mode&&e instanceof FetchEvent&&e.preloadResponse){const t=await e.preloadResponse;if(t)return t}const r=this.hasCallback("fetchDidFail")?n.clone():null;try{for(const t of this.iterateCallbacks("requestWillFetch"))n=await t({request:n.clone(),event:e})}catch(i){throw new c("plugin-error-request-will-fetch",{thrownError:i})}const o=n.clone();try{let t;t=await fetch(n,"navigate"===n.mode?void 0:this._strategy.fetchOptions);for(const n of this.iterateCallbacks("fetchDidSucceed"))t=await n({event:e,request:o,response:t});return t}catch(a){throw r&&await this.runCallbacks("fetchDidFail",{error:a,event:e,originalRequest:r.clone(),request:o.clone()}),a}}async fetchAndCachePut(t){const e=await this.fetch(t),n=e.clone();return this.waitUntil(this.cachePut(t,n)),e}async cacheMatch(t){const e=_(t);let n;const{cacheName:r,matchOptions:o}=this._strategy,i=await this.getCacheKey(e,"read"),a={...o,cacheName:r};n=await caches.match(i,a);for(const c of this.iterateCallbacks("cachedResponseWillBeUsed"))n=await c({cacheName:r,matchOptions:o,cachedResponse:n,request:i,event:this.event})||void 0;return n}async cachePut(t,e){const n=_(t);await x(0);const r=await this.getCacheKey(n,"write");if(!e)throw new c("cache-put-with-no-response",{url:g(r.url)});const o=await this._ensureResponseSafeToCache(e);if(!o)return!1;const{cacheName:i,matchOptions:a}=this._strategy,s=await self.caches.open(i),u=this.hasCallback("cacheDidUpdate"),l=u?await m(s,r.clone(),["__WB_REVISION__"],a):null;try{await s.put(r,u?o.clone():o)}catch(h){throw"QuotaExceededError"===h.name&&await b(),h}for(const c of this.iterateCallbacks("cacheDidUpdate"))await c({cacheName:i,oldResponse:l,newResponse:o.clone(),request:r,event:this.event});return!0}async getCacheKey(t,e){if(!this._cacheKeys[e]){let n=t;for(const t of this.iterateCallbacks("cacheKeyWillBeUsed"))n=_(await t({mode:e,request:n,event:this.event,params:this.params}));this._cacheKeys[e]=n}return this._cacheKeys[e]}hasCallback(t){for(const e of this._strategy.plugins)if(t in e)return!0;return!1}async runCallbacks(t,e){for(const n of this.iterateCallbacks(t))await n(e)}*iterateCallbacks(t){for(const e of this._strategy.plugins)if("function"===typeof e[t]){const n=this._pluginStateMap.get(e),r=r=>{const o={...r,state:n};return e[t](o)};yield r}}waitUntil(t){return this._extendLifetimePromises.push(t),t}async doneWaiting(){let t;while(t=this._extendLifetimePromises.shift())await t}destroy(){this._handlerDeferred.resolve()}async _ensureResponseSafeToCache(t){let e=t,n=!1;for(const r of this.iterateCallbacks("cacheWillUpdate"))if(e=await r({request:this.request,response:e,event:this.event})||void 0,n=!0,!e)break;return n||e&&200!==e.status&&(e=void 0),e}}class R{constructor(t={}){this.cacheName=h.getRuntimeName(t.cacheName),this.plugins=t.plugins||[],this.fetchOptions=t.fetchOptions,this.matchOptions=t.matchOptions}handle(t){const[e]=this.handleAll(t);return e}handleAll(t){t instanceof FetchEvent&&(t={event:t,request:t.request});const e=t.event,n="string"===typeof t.request?new Request(t.request):t.request,r="params"in t?t.params:void 0,o=new E(this,{event:e,request:n,params:r}),i=this._getResponse(o,n,e),a=this._awaitComplete(i,o,n,e);return[i,a]}async _getResponse(t,e,n){await t.runCallbacks("handlerWillStart",{event:n,request:e});let r=void 0;try{if(r=await this._handle(e,t),!r||"error"===r.type)throw new c("no-response",{url:e.url})}catch(o){for(const i of t.iterateCallbacks("handlerDidError"))if(r=await i({error:o,event:n,request:e}),r)break;if(!r)throw o}for(const i of t.iterateCallbacks("handlerWillRespond"))r=await i({event:n,request:e,response:r});return r}async _awaitComplete(t,e,n,r){let o,i;try{o=await t}catch(i){}try{await e.runCallbacks("handlerDidRespond",{event:r,request:n,response:o}),await e.doneWaiting()}catch(a){i=a}if(await e.runCallbacks("handlerDidComplete",{event:r,request:n,response:o,error:i}),e.destroy(),i)throw i}}class S extends R{constructor(t={}){t.cacheName=h.getPrecacheName(t.cacheName),super(t),this._fallbackToNetwork=!1!==t.fallbackToNetwork,this.plugins.push(S.copyRedirectedCacheableResponsesPlugin)}async _handle(t,e){const n=await e.cacheMatch(t);return n||(e.event&&"install"===e.event.type?await this._handleInstall(t,e):await this._handleFetch(t,e))}async _handleFetch(t,e){let n;if(!this._fallbackToNetwork)throw new c("missing-precache-entry",{cacheName:this.cacheName,url:t.url});return n=await e.fetch(t),n}async _handleInstall(t,e){this._useDefaultCacheabilityPluginIfNeeded();const n=await e.fetch(t),r=await e.cachePut(t,n.clone());if(!r)throw new c("bad-precaching-response",{url:t.url,status:n.status});return n}_useDefaultCacheabilityPluginIfNeeded(){let t=null,e=0;for(const[n,r]of this.plugins.entries())r!==S.copyRedirectedCacheableResponsesPlugin&&(r===S.defaultPrecacheCacheabilityPlugin&&(t=n),r.cacheWillUpdate&&e++);0===e?this.plugins.push(S.defaultPrecacheCacheabilityPlugin):e>1&&null!==t&&this.plugins.splice(t,1)}}S.defaultPrecacheCacheabilityPlugin={async cacheWillUpdate({response:t}){return!t||t.status>=400?null:t}},S.copyRedirectedCacheableResponsesPlugin={async cacheWillUpdate({response:t}){return t.redirected?await d(t):t}};n("e6d2");const O="GET",P=t=>t&&"object"===typeof t?t:{handle:t};class N{constructor(t,e,n=O){this.handler=P(e),this.match=t,this.method=n}setCatchHandler(t){this.catchHandler=P(t)}}class T extends N{constructor(t,e,n){const r=({url:e})=>{const n=t.exec(e.href);if(n&&(e.origin===location.origin||0===n.index))return n.slice(1)};super(r,e,n)}}class j{constructor(){this._routes=new Map,this._defaultHandlerMap=new Map}get routes(){return this._routes}addFetchListener(){self.addEventListener("fetch",t=>{const{request:e}=t,n=this.handleRequest({request:e,event:t});n&&t.respondWith(n)})}addCacheListener(){self.addEventListener("message",t=>{if(t.data&&"CACHE_URLS"===t.data.type){const{payload:e}=t.data;0;const n=Promise.all(e.urlsToCache.map(e=>{"string"===typeof e&&(e=[e]);const n=new Request(...e);return this.handleRequest({request:n,event:t})}));t.waitUntil(n),t.ports&&t.ports[0]&&n.then(()=>t.ports[0].postMessage(!0))}})}handleRequest({request:t,event:e}){const n=new URL(t.url,location.href);if(!n.protocol.startsWith("http"))return void 0;const r=n.origin===location.origin,{params:o,route:i}=this.findMatchingRoute({event:e,request:t,sameOrigin:r,url:n});let a=i&&i.handler;const c=t.method;if(!a&&this._defaultHandlerMap.has(c)&&(a=this._defaultHandlerMap.get(c)),!a)return void 0;let s;try{s=a.handle({url:n,request:t,event:e,params:o})}catch(l){s=Promise.reject(l)}const u=i&&i.catchHandler;return s instanceof Promise&&(this._catchHandler||u)&&(s=s.catch(async r=>{if(u){0;try{return await u.handle({url:n,request:t,event:e,params:o})}catch(i){r=i}}if(this._catchHandler)return this._catchHandler.handle({url:n,request:t,event:e});throw r})),s}findMatchingRoute({url:t,sameOrigin:e,request:n,event:r}){const o=this._routes.get(n.method)||[];for(const i of o){let o;const a=i.match({url:t,sameOrigin:e,request:n,event:r});if(a)return o=a,(Array.isArray(a)&&0===a.length||a.constructor===Object&&0===Object.keys(a).length||"boolean"===typeof a)&&(o=void 0),{route:i,params:o}}return{}}setDefaultHandler(t,e=O){this._defaultHandlerMap.set(e,P(t))}setCatchHandler(t){this._catchHandler=P(t)}registerRoute(t){this._routes.has(t.method)||this._routes.set(t.method,[]),this._routes.get(t.method).push(t)}unregisterRoute(t){if(!this._routes.has(t.method))throw new c("unregister-route-but-not-found-with-method",{method:t.method});const e=this._routes.get(t.method).indexOf(t);if(!(e>-1))throw new c("unregister-route-route-not-registered");this._routes.get(t.method).splice(e,1)}}let k;const C=()=>(k||(k=new j,k.addFetchListener(),k.addCacheListener()),k);function q(t,e,n){let r;if("string"===typeof t){const o=new URL(t,location.href);0;const i=({url:t})=>t.href===o.href;r=new N(i,e,n)}else if(t instanceof RegExp)r=new T(t,e,n);else if("function"===typeof t)r=new N(t,e,n);else{if(!(t instanceof N))throw new c("unsupported-route-type",{moduleName:"workbox-routing",funcName:"registerRoute",paramName:"capture"});r=t}const o=C();return o.registerRoute(r),r}function A(t){const e=C();e.setCatchHandler(t)}class L extends R{async _handle(t,e){let n,r=await e.cacheMatch(t);if(r)0;else{0;try{r=await e.fetchAndCachePut(t)}catch(o){n=o}0}if(!r)throw new c("no-response",{url:t.url,error:n});return r}}const M={cacheWillUpdate:async({response:t})=>200===t.status||0===t.status?t:null};class U extends R{constructor(t={}){super(t),this.plugins.some(t=>"cacheWillUpdate"in t)||this.plugins.unshift(M),this._networkTimeoutSeconds=t.networkTimeoutSeconds||0}async _handle(t,e){const n=[];const r=[];let o;if(this._networkTimeoutSeconds){const{id:i,promise:a}=this._getTimeoutPromise({request:t,logs:n,handler:e});o=i,r.push(a)}const i=this._getNetworkPromise({timeoutId:o,request:t,logs:n,handler:e});r.push(i);const a=await e.waitUntil((async()=>await e.waitUntil(Promise.race(r))||await i)());if(!a)throw new c("no-response",{url:t.url});return a}_getTimeoutPromise({request:t,logs:e,handler:n}){let r;const o=new Promise(e=>{const o=async()=>{e(await n.cacheMatch(t))};r=setTimeout(o,1e3*this._networkTimeoutSeconds)});return{promise:o,id:r}}async _getNetworkPromise({timeoutId:t,request:e,logs:n,handler:r}){let o,i;try{i=await r.fetchAndCachePut(e)}catch(a){o=a}return t&&clearTimeout(t),!o&&i||(i=await r.cacheMatch(e)),i}}class I extends R{constructor(t){super(t),this.plugins.some(t=>"cacheWillUpdate"in t)||this.plugins.unshift(M)}async _handle(t,e){const n=e.fetchAndCachePut(t).catch(()=>{});let r,o=await e.cacheMatch(t);if(o)0;else{0;try{o=await n}catch(i){r=i}}if(!o)throw new c("no-response",{url:t.url,error:r});return o}}function D(t){t.then(()=>{})}class F{constructor(t,e,{onupgradeneeded:n,onversionchange:r}={}){this._db=null,this._name=t,this._version=e,this._onupgradeneeded=n,this._onversionchange=r||(()=>this.close())}get db(){return this._db}async open(){if(!this._db)return this._db=await new Promise((t,e)=>{let n=!1;setTimeout(()=>{n=!0,e(new Error("The open request was blocked and timed out"))},this.OPEN_TIMEOUT);const r=indexedDB.open(this._name,this._version);r.onerror=()=>e(r.error),r.onupgradeneeded=t=>{n?(r.transaction.abort(),r.result.close()):"function"===typeof this._onupgradeneeded&&this._onupgradeneeded(t)},r.onsuccess=()=>{const e=r.result;n?e.close():(e.onversionchange=this._onversionchange.bind(this),t(e))}}),this}async getKey(t,e){return(await this.getAllKeys(t,e,1))[0]}async getAll(t,e,n){return await this.getAllMatching(t,{query:e,count:n})}async getAllKeys(t,e,n){const r=await this.getAllMatching(t,{query:e,count:n,includeKeys:!0});return r.map(t=>t.key)}async getAllMatching(t,{index:e,query:n=null,direction:r="next",count:o,includeKeys:i=!1}={}){return await this.transaction([t],"readonly",(a,c)=>{const s=a.objectStore(t),u=e?s.index(e):s,l=[],h=u.openCursor(n,r);h.onsuccess=()=>{const t=h.result;t?(l.push(i?t:t.value),o&&l.length>=o?c(l):t.continue()):c(l)}})}async transaction(t,e,n){return await this.open(),await new Promise((r,o)=>{const i=this._db.transaction(t,e);i.onabort=()=>o(i.error),i.oncomplete=()=>r(),n(i,t=>r(t))})}async _call(t,e,n,...r){const o=(n,o)=>{const i=n.objectStore(e),a=i[t].apply(i,r);a.onsuccess=()=>o(a.result)};return await this.transaction([e],n,o)}close(){this._db&&(this._db.close(),this._db=null)}}F.prototype.OPEN_TIMEOUT=2e3;const W={readonly:["get","count","getKey","getAll","getAllKeys"],readwrite:["add","put","clear","delete"]};for(const[X,Z]of Object.entries(W))for(const t of Z)t in IDBObjectStore.prototype&&(F.prototype[t]=async function(e,...n){return await this._call(t,e,X,...n)});const H=async t=>{await new Promise((e,n)=>{const r=indexedDB.deleteDatabase(t);r.onerror=()=>{n(r.error)},r.onblocked=()=>{n(new Error("Delete blocked"))},r.onsuccess=()=>{e()}})};n("d8a5");const K="workbox-expiration",G="cache-entries",B=t=>{const e=new URL(t,location.href);return e.hash="",e.href};class z{constructor(t){this._cacheName=t,this._db=new F(K,1,{onupgradeneeded:t=>this._handleUpgrade(t)})}_handleUpgrade(t){const e=t.target.result,n=e.createObjectStore(G,{keyPath:"id"});n.createIndex("cacheName","cacheName",{unique:!1}),n.createIndex("timestamp","timestamp",{unique:!1}),H(this._cacheName)}async setTimestamp(t,e){t=B(t);const n={url:t,timestamp:e,cacheName:this._cacheName,id:this._getId(t)};await this._db.put(G,n)}async getTimestamp(t){const e=await this._db.get(G,this._getId(t));return e.timestamp}async expireEntries(t,e){const n=await this._db.transaction(G,"readwrite",(n,r)=>{const o=n.objectStore(G),i=o.index("timestamp").openCursor(null,"prev"),a=[];let c=0;i.onsuccess=()=>{const n=i.result;if(n){const r=n.value;r.cacheName===this._cacheName&&(t&&r.timestamp=e?a.push(n.value):c++),n.continue()}else r(a)}}),r=[];for(const o of n)await this._db.delete(G,o.id),r.push(o.url);return r}_getId(t){return this._cacheName+"|"+B(t)}}class Y{constructor(t,e={}){this._isRunning=!1,this._rerunRequested=!1,this._maxEntries=e.maxEntries,this._maxAgeSeconds=e.maxAgeSeconds,this._matchOptions=e.matchOptions,this._cacheName=t,this._timestampModel=new z(t)}async expireEntries(){if(this._isRunning)return void(this._rerunRequested=!0);this._isRunning=!0;const t=this._maxAgeSeconds?Date.now()-1e3*this._maxAgeSeconds:0,e=await this._timestampModel.expireEntries(t,this._maxEntries),n=await self.caches.open(this._cacheName);for(const r of e)await n.delete(r,this._matchOptions);this._isRunning=!1,this._rerunRequested&&(this._rerunRequested=!1,D(this.expireEntries()))}async updateTimestamp(t){await this._timestampModel.setTimestamp(t,Date.now())}async isURLExpired(t){if(this._maxAgeSeconds){const e=await this._timestampModel.getTimestamp(t),n=Date.now()-1e3*this._maxAgeSeconds;return e{if(!r)return null;const o=this._isResponseDateFresh(r),i=this._getCacheExpiration(n);D(i.expireEntries());const a=i.updateTimestamp(e.url);if(t)try{t.waitUntil(a)}catch(c){0}return o?r:null},this.cacheDidUpdate=async({cacheName:t,request:e})=>{const n=this._getCacheExpiration(t);await n.updateTimestamp(e.url),await n.expireEntries()},this._config=t,this._maxAgeSeconds=t.maxAgeSeconds,this._cacheExpirations=new Map,t.purgeOnQuotaError&&$(()=>this.deleteCacheAndMetadata())}_getCacheExpiration(t){if(t===h.getRuntimeName())throw new c("expire-custom-caches-only");let e=this._cacheExpirations.get(t);return e||(e=new Y(t,this._config),this._cacheExpirations.set(t,e)),e}_isResponseDateFresh(t){if(!this._maxAgeSeconds)return!0;const e=this._getDateHeaderTimestamp(t);if(null===e)return!0;const n=Date.now();return e>=n-1e3*this._maxAgeSeconds}_getDateHeaderTimestamp(t){if(!t.headers.has("date"))return null;const e=t.headers.get("date"),n=new Date(e),r=n.getTime();return isNaN(r)?null:r}async deleteCacheAndMetadata(){for(const[t,e]of this._cacheExpirations)await self.caches.delete(t),await e.delete();this._cacheExpirations=new Map}}var V="offline-html",J="/offline/";self.addEventListener("install",function(){var t=o(regeneratorRuntime.mark((function t(e){return regeneratorRuntime.wrap((function(t){while(1)switch(t.prev=t.next){case 0:e.waitUntil(caches.open(V).then((function(t){return t.add(new Request(J,{cache:"reload"}))})));case 1:case"end":return t.stop()}}),t)})));return function(e){return t.apply(this,arguments)}}()),[{'url':'static/vue/css/chunk-vendors.css'},{'url':'static/vue/import_response_view.html'},{'url':'static/vue/js/chunk-vendors.js'},{'url':'static/vue/js/import_response_view.js'},{'url':'static/vue/js/offline_view.js'},{'url':'static/vue/js/recipe_search_view.js'},{'url':'static/vue/js/recipe_view.js'},{'url':'static/vue/js/supermarket_view.js'},{'url':'static/vue/js/user_file_view.js'},{'url':'static/vue/manifest.json'},{'url':'static/vue/offline_view.html'},{'url':'static/vue/recipe_search_view.html'},{'url':'static/vue/recipe_view.html'},{'url':'static/vue/supermarket_view.html'},{'url':'static/vue/user_file_view.html'}],A((function(t){var e=t.event;switch(e.request.destination){case"document":return console.log("Triggered fallback HTML"),caches.open(V).then((function(t){return t.match(J)}));default:return console.log("Triggered response ERROR"),Response.error()}})),q((function(t){var e=t.request;return"image"===e.destination}),new L({cacheName:"images",plugins:[new Q({maxEntries:20})]})),q((function(t){var e=t.request;return"script"===e.destination||"style"===e.destination}),new I({cacheName:"assets"})),q(new RegExp("jsreverse"),new I({cacheName:"assets"})),q(new RegExp("jsi18n"),new I({cacheName:"assets"})),q(new RegExp("api/recipe/([0-9]+)"),new U({cacheName:"api-recipe",plugins:[new Q({maxEntries:50})]})),q(new RegExp("api/*"),new U({cacheName:"api",plugins:[new Q({maxEntries:50})]})),q((function(t){var e=t.request;return"document"===e.destination}),new U({cacheName:"html",plugins:[new Q({maxAgeSeconds:2592e3,maxEntries:50})]}))},"25f0":function(t,e,n){"use strict";var r=n("6eeb"),o=n("825a"),i=n("d039"),a=n("ad6d"),c="toString",s=RegExp.prototype,u=s[c],l=i((function(){return"/a/b"!=u.call({source:"a",flags:"b"})})),h=u.name!=c;(l||h)&&r(RegExp.prototype,c,(function(){var t=o(this),e=String(t.source),n=t.flags,r=String(void 0===n&&t instanceof RegExp&&!("flags"in s)?a.call(t):n);return"/"+e+"/"+r}),{unsafe:!0})},2626:function(t,e,n){"use strict";var r=n("d066"),o=n("9bf2"),i=n("b622"),a=n("83ab"),c=i("species");t.exports=function(t){var e=r(t),n=o.f;a&&e&&!e[c]&&n(e,c,{configurable:!0,get:function(){return this}})}},"2d00":function(t,e,n){var r,o,i=n("da84"),a=n("342f"),c=i.process,s=c&&c.versions,u=s&&s.v8;u?(r=u.split("."),o=r[0]<4?1:r[0]+r[1]):a&&(r=a.match(/Edge\/(\d+)/),(!r||r[1]>=74)&&(r=a.match(/Chrome\/(\d+)/),r&&(o=r[1]))),t.exports=o&&+o},"342f":function(t,e,n){var r=n("d066");t.exports=r("navigator","userAgent")||""},"3bbe":function(t,e,n){var r=n("861d");t.exports=function(t){if(!r(t)&&null!==t)throw TypeError("Can't set "+String(t)+" as a prototype");return t}},"428f":function(t,e,n){var r=n("da84");t.exports=r},"44ad":function(t,e,n){var r=n("d039"),o=n("c6b6"),i="".split;t.exports=r((function(){return!Object("z").propertyIsEnumerable(0)}))?function(t){return"String"==o(t)?i.call(t,""):Object(t)}:Object},"44e7":function(t,e,n){var r=n("861d"),o=n("c6b6"),i=n("b622"),a=i("match");t.exports=function(t){var e;return r(t)&&(void 0!==(e=t[a])?!!e:"RegExp"==o(t))}},"466d":function(t,e,n){"use strict";var r=n("d784"),o=n("825a"),i=n("50c4"),a=n("1d80"),c=n("8aa5"),s=n("14c3");r("match",1,(function(t,e,n){return[function(e){var n=a(this),r=void 0==e?void 0:e[t];return void 0!==r?r.call(e,n):new RegExp(e)[t](String(n))},function(t){var r=n(e,t,this);if(r.done)return r.value;var a=o(t),u=String(this);if(!a.global)return s(a,u);var l=a.unicode;a.lastIndex=0;var h,f=[],p=0;while(null!==(h=s(a,u))){var d=String(h[0]);f[p]=d,""===d&&(a.lastIndex=c(u,i(a.lastIndex),l)),p++}return 0===p?null:f}]}))},4930:function(t,e,n){var r=n("2d00"),o=n("d039");t.exports=!!Object.getOwnPropertySymbols&&!o((function(){var t=Symbol();return!String(t)||!(Object(t)instanceof Symbol)||!Symbol.sham&&r&&r<41}))},"4d63":function(t,e,n){var r=n("83ab"),o=n("da84"),i=n("94ca"),a=n("7156"),c=n("9bf2").f,s=n("241c").f,u=n("44e7"),l=n("ad6d"),h=n("9f7f"),f=n("6eeb"),p=n("d039"),d=n("69f3").enforce,g=n("2626"),y=n("b622"),m=y("match"),v=o.RegExp,w=v.prototype,b=/a/g,x=/a/g,_=new v(b)!==b,E=h.UNSUPPORTED_Y,R=r&&i("RegExp",!_||E||p((function(){return x[m]=!1,v(b)!=b||v(x)==x||"/a/i"!=v(b,"i")})));if(R){var S=function(t,e){var n,r=this instanceof S,o=u(t),i=void 0===e;if(!r&&o&&t.constructor===S&&i)return t;_?o&&!i&&(t=t.source):t instanceof S&&(i&&(e=l.call(t)),t=t.source),E&&(n=!!e&&e.indexOf("y")>-1,n&&(e=e.replace(/y/g,"")));var c=a(_?new v(t,e):v(t,e),r?this:w,S);if(E&&n){var s=d(c);s.sticky=!0}return c},O=function(t){t in S||c(S,t,{configurable:!0,get:function(){return v[t]},set:function(e){v[t]=e}})},P=s(v),N=0;while(P.length>N)O(P[N++]);w.constructor=S,S.prototype=w,f(o,"RegExp",S)}g("RegExp")},"4d64":function(t,e,n){var r=n("fc6a"),o=n("50c4"),i=n("23cb"),a=function(t){return function(e,n,a){var c,s=r(e),u=o(s.length),l=i(a,u);if(t&&n!=n){while(u>l)if(c=s[l++],c!=c)return!0}else for(;u>l;l++)if((t||l in s)&&s[l]===n)return t||l||0;return!t&&-1}};t.exports={includes:a(!0),indexOf:a(!1)}},"50c4":function(t,e,n){var r=n("a691"),o=Math.min;t.exports=function(t){return t>0?o(r(t),9007199254740991):0}},5135:function(t,e,n){var r=n("7b0b"),o={}.hasOwnProperty;t.exports=Object.hasOwn||function(t,e){return o.call(r(t),e)}},5692:function(t,e,n){var r=n("c430"),o=n("c6cd");(t.exports=function(t,e){return o[t]||(o[t]=void 0!==e?e:{})})("versions",[]).push({version:"3.14.0",mode:r?"pure":"global",copyright:"© 2021 Denis Pushkarev (zloirock.ru)"})},"56ef":function(t,e,n){var r=n("d066"),o=n("241c"),i=n("7418"),a=n("825a");t.exports=r("Reflect","ownKeys")||function(t){var e=o.f(a(t)),n=i.f;return n?e.concat(n(t)):e}},"5c6c":function(t,e){t.exports=function(t,e){return{enumerable:!(1&t),configurable:!(2&t),writable:!(4&t),value:e}}},6547:function(t,e,n){var r=n("a691"),o=n("1d80"),i=function(t){return function(e,n){var i,a,c=String(o(e)),s=r(n),u=c.length;return s<0||s>=u?t?"":void 0:(i=c.charCodeAt(s),i<55296||i>56319||s+1===u||(a=c.charCodeAt(s+1))<56320||a>57343?t?c.charAt(s):i:t?c.slice(s,s+2):a-56320+(i-55296<<10)+65536)}};t.exports={codeAt:i(!1),charAt:i(!0)}},"69f3":function(t,e,n){var r,o,i,a=n("7f9a"),c=n("da84"),s=n("861d"),u=n("9112"),l=n("5135"),h=n("c6cd"),f=n("f772"),p=n("d012"),d="Object already initialized",g=c.WeakMap,y=function(t){return i(t)?o(t):r(t,{})},m=function(t){return function(e){var n;if(!s(e)||(n=o(e)).type!==t)throw TypeError("Incompatible receiver, "+t+" required");return n}};if(a||h.state){var v=h.state||(h.state=new g),w=v.get,b=v.has,x=v.set;r=function(t,e){if(b.call(v,t))throw new TypeError(d);return e.facade=t,x.call(v,t,e),e},o=function(t){return w.call(v,t)||{}},i=function(t){return b.call(v,t)}}else{var _=f("state");p[_]=!0,r=function(t,e){if(l(t,_))throw new TypeError(d);return e.facade=t,u(t,_,e),e},o=function(t){return l(t,_)?t[_]:{}},i=function(t){return l(t,_)}}t.exports={set:r,get:o,has:i,enforce:y,getterFor:m}},"6aa8":function(t,e,n){"use strict";try{self["workbox:strategies:6.1.5"]&&_()}catch(r){}},"6eeb":function(t,e,n){var r=n("da84"),o=n("9112"),i=n("5135"),a=n("ce4e"),c=n("8925"),s=n("69f3"),u=s.get,l=s.enforce,h=String(String).split("String");(t.exports=function(t,e,n,c){var s,u=!!c&&!!c.unsafe,f=!!c&&!!c.enumerable,p=!!c&&!!c.noTargetGet;"function"==typeof n&&("string"!=typeof e||i(n,"name")||o(n,"name",e),s=l(n),s.source||(s.source=h.join("string"==typeof e?e:""))),t!==r?(u?!p&&t[e]&&(f=!0):delete t[e],f?t[e]=n:o(t,e,n)):f?t[e]=n:a(e,n)})(Function.prototype,"toString",(function(){return"function"==typeof this&&u(this).source||c(this)}))},7156:function(t,e,n){var r=n("861d"),o=n("d2bb");t.exports=function(t,e,n){var i,a;return o&&"function"==typeof(i=e.constructor)&&i!==n&&r(a=i.prototype)&&a!==n.prototype&&o(t,a),t}},7418:function(t,e){e.f=Object.getOwnPropertySymbols},7839:function(t,e){t.exports=["constructor","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","toLocaleString","toString","valueOf"]},"7b0b":function(t,e,n){var r=n("1d80");t.exports=function(t){return Object(r(t))}},"7f9a":function(t,e,n){var r=n("da84"),o=n("8925"),i=r.WeakMap;t.exports="function"===typeof i&&/native code/.test(o(i))},"825a":function(t,e,n){var r=n("861d");t.exports=function(t){if(!r(t))throw TypeError(String(t)+" is not an object");return t}},"83ab":function(t,e,n){var r=n("d039");t.exports=!r((function(){return 7!=Object.defineProperty({},1,{get:function(){return 7}})[1]}))},"861d":function(t,e){t.exports=function(t){return"object"===typeof t?null!==t:"function"===typeof t}},8925:function(t,e,n){var r=n("c6cd"),o=Function.toString;"function"!=typeof r.inspectSource&&(r.inspectSource=function(t){return o.call(t)}),t.exports=r.inspectSource},"8aa5":function(t,e,n){"use strict";var r=n("6547").charAt;t.exports=function(t,e,n){return e+(n?r(t,e).length:1)}},"90e3":function(t,e){var n=0,r=Math.random();t.exports=function(t){return"Symbol("+String(void 0===t?"":t)+")_"+(++n+r).toString(36)}},9112:function(t,e,n){var r=n("83ab"),o=n("9bf2"),i=n("5c6c");t.exports=r?function(t,e,n){return o.f(t,e,i(1,n))}:function(t,e,n){return t[e]=n,t}},9263:function(t,e,n){"use strict";var r=n("ad6d"),o=n("9f7f"),i=n("5692"),a=RegExp.prototype.exec,c=i("native-string-replace",String.prototype.replace),s=a,u=function(){var t=/a/,e=/b*/g;return a.call(t,"a"),a.call(e,"a"),0!==t.lastIndex||0!==e.lastIndex}(),l=o.UNSUPPORTED_Y||o.BROKEN_CARET,h=void 0!==/()??/.exec("")[1],f=u||h||l;f&&(s=function(t){var e,n,o,i,s=this,f=l&&s.sticky,p=r.call(s),d=s.source,g=0,y=t;return f&&(p=p.replace("y",""),-1===p.indexOf("g")&&(p+="g"),y=String(t).slice(s.lastIndex),s.lastIndex>0&&(!s.multiline||s.multiline&&"\n"!==t[s.lastIndex-1])&&(d="(?: "+d+")",y=" "+y,g++),n=new RegExp("^(?:"+d+")",p)),h&&(n=new RegExp("^"+d+"$(?!\\s)",p)),u&&(e=s.lastIndex),o=a.call(f?n:s,y),f?o?(o.input=o.input.slice(g),o[0]=o[0].slice(g),o.index=s.lastIndex,s.lastIndex+=o[0].length):s.lastIndex=0:u&&o&&(s.lastIndex=s.global?o.index+o[0].length:e),h&&o&&o.length>1&&c.call(o[0],n,(function(){for(i=1;i=0;--i){var a=this.tryEntries[i],c=a.completion;if("root"===a.tryLoc)return o("end");if(a.tryLoc<=this.prev){var s=r.call(a,"catchLoc"),u=r.call(a,"finallyLoc");if(s&&u){if(this.prev=0;--n){var o=this.tryEntries[n];if(o.tryLoc<=this.prev&&r.call(o,"finallyLoc")&&this.prev=0;--e){var n=this.tryEntries[e];if(n.finallyLoc===t)return this.complete(n.completion,n.afterLoc),N(n),g}},catch:function(t){for(var e=this.tryEntries.length-1;e>=0;--e){var n=this.tryEntries[e];if(n.tryLoc===t){var r=n.completion;if("throw"===r.type){var o=r.arg;N(n)}return o}}throw new Error("illegal catch attempt")},delegateYield:function(t,n,r){return this.delegate={iterator:j(t),resultName:n,nextLoc:r},"next"===this.method&&(this.arg=e),g}},t}(t.exports);try{regeneratorRuntime=r}catch(o){Function("r","regeneratorRuntime = r")(r)}},"9bf2":function(t,e,n){var r=n("83ab"),o=n("0cfb"),i=n("825a"),a=n("c04e"),c=Object.defineProperty;e.f=r?c:function(t,e,n){if(i(t),e=a(e,!0),i(n),o)try{return c(t,e,n)}catch(r){}if("get"in n||"set"in n)throw TypeError("Accessors not supported");return"value"in n&&(t[e]=n.value),t}},"9f7f":function(t,e,n){"use strict";var r=n("d039");function o(t,e){return RegExp(t,e)}e.UNSUPPORTED_Y=r((function(){var t=o("a","y");return t.lastIndex=2,null!=t.exec("abcd")})),e.BROKEN_CARET=r((function(){var t=o("^r","gy");return t.lastIndex=2,null!=t.exec("str")}))},a691:function(t,e){var n=Math.ceil,r=Math.floor;t.exports=function(t){return isNaN(t=+t)?0:(t>0?r:n)(t)}},ac1f:function(t,e,n){"use strict";var r=n("23e7"),o=n("9263");r({target:"RegExp",proto:!0,forced:/./.exec!==o},{exec:o})},ad6d:function(t,e,n){"use strict";var r=n("825a");t.exports=function(){var t=r(this),e="";return t.global&&(e+="g"),t.ignoreCase&&(e+="i"),t.multiline&&(e+="m"),t.dotAll&&(e+="s"),t.unicode&&(e+="u"),t.sticky&&(e+="y"),e}},b041:function(t,e,n){"use strict";var r=n("00ee"),o=n("f5df");t.exports=r?{}.toString:function(){return"[object "+o(this)+"]"}},b622:function(t,e,n){var r=n("da84"),o=n("5692"),i=n("5135"),a=n("90e3"),c=n("4930"),s=n("fdbf"),u=o("wks"),l=r.Symbol,h=s?l:l&&l.withoutSetter||a;t.exports=function(t){return i(u,t)&&(c||"string"==typeof u[t])||(c&&i(l,t)?u[t]=l[t]:u[t]=h("Symbol."+t)),u[t]}},c04e:function(t,e,n){var r=n("861d");t.exports=function(t,e){if(!r(t))return t;var n,o;if(e&&"function"==typeof(n=t.toString)&&!r(o=n.call(t)))return o;if("function"==typeof(n=t.valueOf)&&!r(o=n.call(t)))return o;if(!e&&"function"==typeof(n=t.toString)&&!r(o=n.call(t)))return o;throw TypeError("Can't convert object to primitive value")}},c430:function(t,e){t.exports=!1},c6b6:function(t,e){var n={}.toString;t.exports=function(t){return n.call(t).slice(8,-1)}},c6cd:function(t,e,n){var r=n("da84"),o=n("ce4e"),i="__core-js_shared__",a=r[i]||o(i,{});t.exports=a},c700:function(t,e,n){"use strict";try{self["workbox:precaching:6.1.5"]&&_()}catch(r){}},c8ba:function(t,e){var n;n=function(){return this}();try{n=n||new Function("return this")()}catch(r){"object"===typeof window&&(n=window)}t.exports=n},ca84:function(t,e,n){var r=n("5135"),o=n("fc6a"),i=n("4d64").indexOf,a=n("d012");t.exports=function(t,e){var n,c=o(t),s=0,u=[];for(n in c)!r(a,n)&&r(c,n)&&u.push(n);while(e.length>s)r(c,n=e[s++])&&(~i(u,n)||u.push(n));return u}},cc12:function(t,e,n){var r=n("da84"),o=n("861d"),i=r.document,a=o(i)&&o(i.createElement);t.exports=function(t){return a?i.createElement(t):{}}},ce4e:function(t,e,n){var r=n("da84"),o=n("9112");t.exports=function(t,e){try{o(r,t,e)}catch(n){r[t]=e}return e}},d012:function(t,e){t.exports={}},d039:function(t,e){t.exports=function(t){try{return!!t()}catch(e){return!0}}},d066:function(t,e,n){var r=n("428f"),o=n("da84"),i=function(t){return"function"==typeof t?t:void 0};t.exports=function(t,e){return arguments.length<2?i(r[t])||i(o[t]):r[t]&&r[t][e]||o[t]&&o[t][e]}},d1e7:function(t,e,n){"use strict";var r={}.propertyIsEnumerable,o=Object.getOwnPropertyDescriptor,i=o&&!r.call({1:2},1);e.f=i?function(t){var e=o(this,t);return!!e&&e.enumerable}:r},d2bb:function(t,e,n){var r=n("825a"),o=n("3bbe");t.exports=Object.setPrototypeOf||("__proto__"in{}?function(){var t,e=!1,n={};try{t=Object.getOwnPropertyDescriptor(Object.prototype,"__proto__").set,t.call(n,[]),e=n instanceof Array}catch(i){}return function(n,i){return r(n),o(i),e?t.call(n,i):n.__proto__=i,n}}():void 0)},d3b7:function(t,e,n){var r=n("00ee"),o=n("6eeb"),i=n("b041");r||o(Object.prototype,"toString",i,{unsafe:!0})},d784:function(t,e,n){"use strict";n("ac1f");var r=n("6eeb"),o=n("9263"),i=n("d039"),a=n("b622"),c=n("9112"),s=a("species"),u=RegExp.prototype,l=!i((function(){var t=/./;return t.exec=function(){var t=[];return t.groups={a:"7"},t},"7"!=="".replace(t,"$")})),h=function(){return"$0"==="a".replace(/./,"$0")}(),f=a("replace"),p=function(){return!!/./[f]&&""===/./[f]("a","$0")}(),d=!i((function(){var t=/(?:)/,e=t.exec;t.exec=function(){return e.apply(this,arguments)};var n="ab".split(t);return 2!==n.length||"a"!==n[0]||"b"!==n[1]}));t.exports=function(t,e,n,f){var g=a(t),y=!i((function(){var e={};return e[g]=function(){return 7},7!=""[t](e)})),m=y&&!i((function(){var e=!1,n=/a/;return"split"===t&&(n={},n.constructor={},n.constructor[s]=function(){return n},n.flags="",n[g]=/./[g]),n.exec=function(){return e=!0,null},n[g](""),!e}));if(!y||!m||"replace"===t&&(!l||!h||p)||"split"===t&&!d){var v=/./[g],w=n(g,""[t],(function(t,e,n,r,i){var a=e.exec;return a===o||a===u.exec?y&&!i?{done:!0,value:v.call(e,n,r)}:{done:!0,value:t.call(n,e,r)}:{done:!1}}),{REPLACE_KEEPS_$0:h,REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE:p}),b=w[0],x=w[1];r(String.prototype,t,b),r(u,g,2==e?function(t,e){return x.call(t,this,e)}:function(t){return x.call(t,this)})}f&&c(u[g],"sham",!0)}},d8a5:function(t,e,n){"use strict";try{self["workbox:expiration:6.1.5"]&&_()}catch(r){}},da84:function(t,e,n){(function(e){var n=function(t){return t&&t.Math==Math&&t};t.exports=n("object"==typeof globalThis&&globalThis)||n("object"==typeof window&&window)||n("object"==typeof self&&self)||n("object"==typeof e&&e)||function(){return this}()||Function("return this")()}).call(this,n("c8ba"))},e6d2:function(t,e,n){"use strict";try{self["workbox:routing:6.1.5"]&&_()}catch(r){}},e893:function(t,e,n){var r=n("5135"),o=n("56ef"),i=n("06cf"),a=n("9bf2");t.exports=function(t,e){for(var n=o(e),c=a.f,s=i.f,u=0;u - {% trans 'Bookmark Me!' %} + {% trans 'Bookmark Me!' %}
diff --git a/cookbook/templatetags/custom_tags.py b/cookbook/templatetags/custom_tags.py index a56c7b97..012074db 100644 --- a/cookbook/templatetags/custom_tags.py +++ b/cookbook/templatetags/custom_tags.py @@ -111,6 +111,11 @@ def is_debug(): return settings.DEBUG +@register.simple_tag() +def markdown_link(): + return f"{_('You can use markdown to format this field. See the ')}{_('docs here')}" + + @register.simple_tag def bookmarklet(request): if request.is_secure(): @@ -132,7 +137,14 @@ def bookmarklet(request): localStorage.setItem('redirectURL', '" + server + reverse('data_import_url') + "'); \ localStorage.setItem('token', '" + api_token.__str__() + "'); \ document.body.appendChild(document.createElement(\'script\')).src=\'" \ - + server + prefix + static('js/bookmarklet.js') + "? \ + + server + prefix + static('js/bookmarklet.js') + "? \ r=\'+Math.floor(Math.random()*999999999);}})();" - return re.sub(r"[\n\t\s]*", "", bookmark) + + +@register.simple_tag +def base_path(request, path_type): + if path_type == 'base': + return request._current_scheme_host + request.META.get('HTTP_X_SCRIPT_NAME', '') + elif path_type == 'script': + return request.META.get('HTTP_X_SCRIPT_NAME', '') diff --git a/cookbook/templatetags/theming_tags.py b/cookbook/templatetags/theming_tags.py index 2ba20d8c..2a919b3a 100644 --- a/cookbook/templatetags/theming_tags.py +++ b/cookbook/templatetags/theming_tags.py @@ -36,20 +36,4 @@ def sticky_nav(request): (request.user.is_authenticated and request.user.userpreference.sticky_navbar): # noqa: E501 return 'position: sticky; top: 0; left: 0; z-index: 1000;' else: - return '' - - -@register.simple_tag -def tabulator_theme_url(request): - if not request.user.is_authenticated: - return static('tabulator/tabulator_bootstrap4.min.css') - themes = { - UserPreference.BOOTSTRAP: 'tabulator/tabulator_bootstrap4.min.css', - UserPreference.FLATLY: 'tabulator/tabulator_bootstrap4.min.css', - UserPreference.DARKLY: 'tabulator/tabulator_site.min.css', - UserPreference.SUPERHERO: 'tabulator/tabulator_site.min.css', - } - if request.user.userpreference.theme in themes: - return static(themes[request.user.userpreference.theme]) - else: - raise AttributeError + return '' \ No newline at end of file diff --git a/cookbook/tests/api/test_api_cook_log.py b/cookbook/tests/api/test_api_cook_log.py index fb2730f1..ab0c1652 100644 --- a/cookbook/tests/api/test_api_cook_log.py +++ b/cookbook/tests/api/test_api_cook_log.py @@ -5,7 +5,7 @@ from django.contrib import auth from django.urls import reverse from django_scopes import scopes_disabled -from cookbook.models import Keyword, CookLog +from cookbook.models import CookLog LIST_URL = 'api:cooklog-list' DETAIL_URL = 'api:cooklog-detail' @@ -33,21 +33,21 @@ def test_list_permission(arg, request): def test_list_space(obj_1, obj_2, u1_s1, u1_s2, space_2): - assert len(json.loads(u1_s1.get(reverse(LIST_URL)).content)) == 2 - assert len(json.loads(u1_s2.get(reverse(LIST_URL)).content)) == 0 + assert json.loads(u1_s1.get(reverse(LIST_URL)).content)['count'] == 2 + assert json.loads(u1_s2.get(reverse(LIST_URL)).content)['count'] == 0 obj_1.space = space_2 obj_1.save() - assert len(json.loads(u1_s1.get(reverse(LIST_URL)).content)) == 1 - assert len(json.loads(u1_s2.get(reverse(LIST_URL)).content)) == 0 + assert json.loads(u1_s1.get(reverse(LIST_URL)).content)['count'] == 1 + assert json.loads(u1_s2.get(reverse(LIST_URL)).content)['count'] == 1 @pytest.mark.parametrize("arg", [ ['a_u', 403], - ['g1_s1', 404], + ['g1_s1', 403], # changed expected value. based on list permissions the log is visible, but not editable ['u1_s1', 200], - ['a1_s1', 404], + ['a1_s1', 403], # changed expected value. based on list permissions the log is visible, but not editable ['g1_s2', 404], ['u1_s2', 404], ['a1_s2', 404], @@ -68,31 +68,29 @@ def test_update(arg, request, obj_1): assert response['servings'] == 2 -# TODO disabled until https://github.com/vabene1111/recipes/issues/484 - -# @pytest.mark.parametrize("arg", [ -# ['a_u', 403], -# ['g1_s1', 201], -# ['u1_s1', 201], -# ['a1_s1', 201], -# ]) -# def test_add(arg, request, u1_s2, u2_s1, recipe_1_s1): -# c = request.getfixturevalue(arg[0]) -# r = c.post( -# reverse(LIST_URL), -# {'recipe': recipe_1_s1.id}, -# content_type='application/json' -# ) -# response = json.loads(r.content) -# assert r.status_code == arg[1] -# if r.status_code == 201: -# assert response['recipe'] == recipe_1_s1.id -# r = c.get(reverse(DETAIL_URL, args={response['id']})) -# assert r.status_code == 200 -# r = u2_s1.get(reverse(DETAIL_URL, args={response['id']})) -# assert r.status_code == 404 -# r = u1_s2.get(reverse(DETAIL_URL, args={response['id']})) -# assert r.status_code == 404 +@pytest.mark.parametrize("arg", [ + ['a_u', 403], + ['g1_s1', 201], + ['u1_s1', 201], + ['a1_s1', 201], +]) +def test_add(arg, request, u1_s2, u2_s1, recipe_1_s1): + c = request.getfixturevalue(arg[0]) + r = c.post( + reverse(LIST_URL), + {'recipe': recipe_1_s1.id}, + content_type='application/json' + ) + assert r.status_code == arg[1] + if r.status_code == 201: + response = json.loads(r.content) + assert response['recipe'] == recipe_1_s1.id + r = c.get(reverse(DETAIL_URL, args={response['id']})) + assert r.status_code == 200 + r = u2_s1.get(reverse(DETAIL_URL, args={response['id']})) + assert r.status_code == 403 # expected value changed. user can list the log - detail should be 403 as no reason to 'hide' that it actually exists + r = u1_s2.get(reverse(DETAIL_URL, args={response['id']})) + assert r.status_code == 404 def test_delete(u1_s1, u1_s2, obj_1): diff --git a/cookbook/tests/api/test_api_food.py b/cookbook/tests/api/test_api_food.py index 6619d8b3..a1b30d3c 100644 --- a/cookbook/tests/api/test_api_food.py +++ b/cookbook/tests/api/test_api_food.py @@ -1,13 +1,30 @@ import json - import pytest -from django.urls import reverse -from django_scopes import scopes_disabled -from cookbook.models import Food +from django.contrib import auth +from django_scopes import scopes_disabled +from django.urls import reverse + + +from cookbook.models import Food, Ingredient, ShoppingList, ShoppingListEntry + +# ------------------ IMPORTANT ------------------- +# +# if changing any capabilities associated with food +# you will need to ensure that it is tested against both +# SqlLite and PostgresSQL +# adding load_env() to settings.py will enable Postgress access +# +# ------------------ IMPORTANT ------------------- LIST_URL = 'api:food-list' DETAIL_URL = 'api:food-detail' +MOVE_URL = 'api:food-move' +MERGE_URL = 'api:food-merge' +if (Food.node_order_by): + node_location = 'sorted-child' +else: + node_location = 'last-child' @pytest.fixture() @@ -15,11 +32,75 @@ def obj_1(space_1): return Food.objects.get_or_create(name='test_1', space=space_1)[0] +@pytest.fixture() +def obj_1_1(obj_1, space_1): + return obj_1.add_child(name='test_1_1', space=space_1) + + +@pytest.fixture() +def obj_1_1_1(obj_1_1, space_1): + return obj_1_1.add_child(name='test_1_1_1', space=space_1) + + @pytest.fixture def obj_2(space_1): return Food.objects.get_or_create(name='test_2', space=space_1)[0] +@pytest.fixture() +def obj_3(space_2): + return Food.objects.get_or_create(name='test_3', space=space_2)[0] + + +@pytest.fixture() +def ing_1_s1(obj_1, space_1): + return Ingredient.objects.create(food=obj_1, space=space_1) + + +@pytest.fixture() +def ing_2_s1(obj_2, space_1): + return Ingredient.objects.create(food=obj_2, space=space_1) + + +@pytest.fixture() +def ing_3_s2(obj_3, space_2): + return Ingredient.objects.create(food=obj_3, space=space_2) + + +@pytest.fixture() +def ing_1_1_s1(obj_1_1, space_1): + return Ingredient.objects.create(food=obj_1_1, space=space_1) + + +@pytest.fixture() +def sle_1_s1(obj_1, u1_s1, space_1): + e = ShoppingListEntry.objects.create(food=obj_1) + s = ShoppingList.objects.create(created_by=auth.get_user(u1_s1), space=space_1, ) + s.entries.add(e) + return e + + +@pytest.fixture() +def sle_2_s1(obj_2, u1_s1, space_1): + return ShoppingListEntry.objects.create(food=obj_2) + + +@pytest.fixture() +def sle_3_s2(obj_3, u1_s2, space_2): + e = ShoppingListEntry.objects.create(food=obj_3) + s = ShoppingList.objects.create(created_by=auth.get_user(u1_s2), space=space_2, ) + s.entries.add(e) + return e + + +@pytest.fixture() +def sle_1_1_s1(obj_1_1, u1_s1, space_1): + e = ShoppingListEntry.objects.create(food=obj_1_1) + s = ShoppingList.objects.create(created_by=auth.get_user(u1_s1), space=space_1, ) + s.entries.add(e) + return e + + @pytest.mark.parametrize("arg", [ ['a_u', 403], ['g1_s1', 403], @@ -32,31 +113,37 @@ def test_list_permission(arg, request): def test_list_space(obj_1, obj_2, u1_s1, u1_s2, space_2): - assert len(json.loads(u1_s1.get(reverse(LIST_URL)).content)) == 2 - assert len(json.loads(u1_s2.get(reverse(LIST_URL)).content)) == 0 + assert json.loads(u1_s1.get(reverse(LIST_URL)).content)['count'] == 2 + assert json.loads(u1_s2.get(reverse(LIST_URL)).content)['count'] == 0 obj_1.space = space_2 obj_1.save() - assert len(json.loads(u1_s1.get(reverse(LIST_URL)).content)) == 1 - assert len(json.loads(u1_s2.get(reverse(LIST_URL)).content)) == 1 + assert json.loads(u1_s1.get(reverse(LIST_URL)).content)['count'] == 1 + assert json.loads(u1_s2.get(reverse(LIST_URL)).content)['count'] == 1 def test_list_filter(obj_1, obj_2, u1_s1): r = u1_s1.get(reverse(LIST_URL)) assert r.status_code == 200 response = json.loads(r.content) - assert len(response) == 2 - assert response[0]['name'] == obj_1.name + assert response['count'] == 2 + assert response['results'][0]['name'] == obj_1.name + + response = json.loads(u1_s1.get(f'{reverse(LIST_URL)}?page_size=1').content) + assert len(response['results']) == 1 response = json.loads(u1_s1.get(f'{reverse(LIST_URL)}?limit=1').content) - assert len(response) == 1 + assert len(response['results']) == 1 + + response = json.loads(u1_s1.get(f'{reverse(LIST_URL)}?query=''&limit=1').content) + assert len(response['results']) == 1 response = json.loads(u1_s1.get(f'{reverse(LIST_URL)}?query=chicken').content) - assert len(response) == 0 + assert response['count'] == 0 response = json.loads(u1_s1.get(f'{reverse(LIST_URL)}?query={obj_1.name[4:]}').content) - assert len(response) == 1 + assert response['count'] == 1 @pytest.mark.parametrize("arg", [ @@ -107,7 +194,10 @@ def test_add(arg, request, u1_s2): assert r.status_code == 404 -def test_add_duplicate(u1_s1, u1_s2, obj_1): +@pytest.mark.django_db(transaction=True) +def test_add_duplicate(u1_s1, u1_s2, obj_1, obj_3): + assert json.loads(u1_s1.get(reverse(LIST_URL)).content)['count'] == 1 + assert json.loads(u1_s2.get(reverse(LIST_URL)).content)['count'] == 1 r = u1_s1.post( reverse(LIST_URL), {'name': obj_1.name}, @@ -116,6 +206,8 @@ def test_add_duplicate(u1_s1, u1_s2, obj_1): response = json.loads(r.content) assert r.status_code == 201 assert response['id'] == obj_1.id + assert response['name'] == obj_1.name + assert json.loads(u1_s1.get(reverse(LIST_URL)).content)['count'] == 1 r = u1_s2.post( reverse(LIST_URL), @@ -125,9 +217,13 @@ def test_add_duplicate(u1_s1, u1_s2, obj_1): response = json.loads(r.content) assert r.status_code == 201 assert response['id'] != obj_1.id + assert json.loads(u1_s2.get(reverse(LIST_URL)).content)['count'] == 2 -def test_delete(u1_s1, u1_s2, obj_1): +def test_delete(u1_s1, u1_s2, obj_1, obj_1_1, obj_1_1_1): + with scopes_disabled(): + assert Food.objects.count() == 3 + r = u1_s2.delete( reverse( DETAIL_URL, @@ -135,14 +231,221 @@ def test_delete(u1_s1, u1_s2, obj_1): ) ) assert r.status_code == 404 + with scopes_disabled(): + assert Food.objects.count() == 3 r = u1_s1.delete( reverse( DETAIL_URL, - args={obj_1.id} + args={obj_1_1.id} ) ) assert r.status_code == 204 with scopes_disabled(): - assert Food.objects.count() == 0 + assert Food.objects.count() == 1 + assert Food.find_problems() == ([], [], [], [], []) + + +def test_integrity(u1_s1, recipe_1_s1): + with scopes_disabled(): + assert Food.objects.count() == 10 + assert Ingredient.objects.count() == 10 + f_1 = Food.objects.first() + + # deleting food will fail because food is part of recipe + r = u1_s1.delete( + reverse( + DETAIL_URL, + args={f_1.id} + ) + ) + assert r.status_code == 403 + + with scopes_disabled(): + i_1 = f_1.ingredient_set.first() + # remove Ingredient that references Food from recipe step + i_1.step_set.first().ingredients.remove(i_1) + assert Food.objects.count() == 10 + assert Ingredient.objects.count() == 10 + + # deleting food will succeed because its not part of recipe and delete will cascade to Ingredient + r = u1_s1.delete( + reverse( + DETAIL_URL, + args={f_1.id} + ) + ) + assert r.status_code == 204 + + with scopes_disabled(): + assert Food.objects.count() == 9 + assert Ingredient.objects.count() == 9 + + +def test_move(u1_s1, obj_1, obj_1_1, obj_1_1_1, obj_2, obj_3, space_1): + url = reverse(MOVE_URL, args=[obj_1_1.id, obj_2.id]) + with scopes_disabled(): + assert obj_1.get_num_children() == 1 + assert obj_1.get_descendant_count() == 2 + assert Food.get_root_nodes().filter(space=space_1).count() == 2 + + # move child to new parent, only HTTP put method should work + r = u1_s1.get(url) + assert r.status_code == 405 + r = u1_s1.post(url) + assert r.status_code == 405 + r = u1_s1.delete(url) + assert r.status_code == 405 + r = u1_s1.put(url) + assert r.status_code == 200 + with scopes_disabled(): + # django-treebeard bypasses django ORM so object needs retrieved again + obj_1 = Food.objects.get(pk=obj_1.id) + obj_2 = Food.objects.get(pk=obj_2.id) + assert obj_1.get_num_children() == 0 + assert obj_1.get_descendant_count() == 0 + assert obj_2.get_num_children() == 1 + assert obj_2.get_descendant_count() == 2 + + # move child to root + r = u1_s1.put(reverse(MOVE_URL, args=[obj_1_1.id, 0])) + assert r.status_code == 200 + with scopes_disabled(): + assert Food.get_root_nodes().filter(space=space_1).count() == 3 + + # attempt to move to non-existent parent + r = u1_s1.put( + reverse(MOVE_URL, args=[obj_1.id, 9999]) + ) + assert r.status_code == 404 + + # attempt to move to wrong space + r = u1_s1.put( + reverse(MOVE_URL, args=[obj_1_1.id, obj_3.id]) + ) + assert r.status_code == 404 + + # run diagnostic to find problems - none should be found + with scopes_disabled(): + assert Food.find_problems() == ([], [], [], [], []) + + +def test_merge( + u1_s1, + obj_1, obj_1_1, obj_1_1_1, obj_2, obj_3, + ing_1_s1, ing_2_s1, ing_3_s2, ing_1_1_s1, + sle_1_s1, sle_2_s1, sle_3_s2, sle_1_1_s1, + space_1 +): + with scopes_disabled(): + assert obj_1.get_num_children() == 1 + assert obj_1.get_descendant_count() == 2 + assert Food.get_root_nodes().filter(space=space_1).count() == 2 + assert Food.objects.filter(space=space_1).count() == 4 + assert obj_1.ingredient_set.count() == 1 + assert obj_2.ingredient_set.count() == 1 + assert obj_3.ingredient_set.count() == 1 + assert obj_1_1.ingredient_set.count() == 1 + assert obj_1_1_1.ingredient_set.count() == 0 + assert obj_1.shoppinglistentry_set.count() == 1 + assert obj_2.shoppinglistentry_set.count() == 1 + assert obj_3.shoppinglistentry_set.count() == 1 + assert obj_1_1.shoppinglistentry_set.count() == 1 + assert obj_1_1_1.shoppinglistentry_set.count() == 0 + + # merge food with no children and no ingredient/shopping list entry with another food, only HTTP put method should work + url = reverse(MERGE_URL, args=[obj_1_1_1.id, obj_2.id]) + r = u1_s1.get(url) + assert r.status_code == 405 + r = u1_s1.post(url) + assert r.status_code == 405 + r = u1_s1.delete(url) + assert r.status_code == 405 + r = u1_s1.put(url) + assert r.status_code == 200 + with scopes_disabled(): + # django-treebeard bypasses django ORM so object needs retrieved again + obj_1 = Food.objects.get(pk=obj_1.id) + obj_2 = Food.objects.get(pk=obj_2.id) + assert Food.objects.filter(pk=obj_1_1_1.id).count() == 0 + assert obj_1.get_num_children() == 1 + assert obj_1.get_descendant_count() == 1 + assert obj_2.get_num_children() == 0 + assert obj_2.get_descendant_count() == 0 + assert obj_1.ingredient_set.count() == 1 + assert obj_2.ingredient_set.count() == 1 + assert obj_3.ingredient_set.count() == 1 + assert obj_1_1.ingredient_set.count() == 1 + assert obj_1.shoppinglistentry_set.count() == 1 + assert obj_2.shoppinglistentry_set.count() == 1 + assert obj_3.shoppinglistentry_set.count() == 1 + assert obj_1_1.shoppinglistentry_set.count() == 1 + + # merge food (with connected ingredient/shoppinglistentry) with children to another food + r = u1_s1.put(reverse(MERGE_URL, args=[obj_1.id, obj_2.id])) + assert r.status_code == 200 + with scopes_disabled(): + # django-treebeard bypasses django ORM so object needs retrieved again + obj_2 = Food.objects.get(pk=obj_2.id) + assert Food.objects.filter(pk=obj_1.id).count() == 0 + assert obj_2.get_num_children() == 1 + assert obj_2.get_descendant_count() == 1 + assert obj_2.ingredient_set.count() == 2 + assert obj_3.ingredient_set.count() == 1 + assert obj_1_1.ingredient_set.count() == 1 + assert obj_2.shoppinglistentry_set.count() == 2 + assert obj_3.shoppinglistentry_set.count() == 1 + assert obj_1_1.shoppinglistentry_set.count() == 1 + + # attempt to merge with non-existent parent + r = u1_s1.put( + reverse(MERGE_URL, args=[obj_1_1.id, 9999]) + ) + assert r.status_code == 404 + + # attempt to move to wrong space + r = u1_s1.put( + reverse(MERGE_URL, args=[obj_2.id, obj_3.id]) + ) + assert r.status_code == 404 + + # attempt to merge with child + r = u1_s1.put( + reverse(MERGE_URL, args=[obj_2.id, obj_1_1.id]) + ) + assert r.status_code == 403 + + # attempt to merge with self + r = u1_s1.put( + reverse(MERGE_URL, args=[obj_2.id, obj_2.id]) + ) + assert r.status_code == 403 + + # run diagnostic to find problems - none should be found + with scopes_disabled(): + assert Food.find_problems() == ([], [], [], [], []) + + +def test_root_filter(obj_1, obj_1_1, obj_1_1_1, obj_2, obj_3, u1_s1): + # should return root objects in the space (obj_1, obj_2), ignoring query filters + response = json.loads(u1_s1.get(f'{reverse(LIST_URL)}?root=0').content) + assert len(response['results']) == 2 + + with scopes_disabled(): + obj_2.move(obj_1, node_location) + # should return direct children of obj_1 (obj_1_1, obj_2), ignoring query filters + response = json.loads(u1_s1.get(f'{reverse(LIST_URL)}?root={obj_1.id}').content) + assert response['count'] == 2 + response = json.loads(u1_s1.get(f'{reverse(LIST_URL)}?root={obj_1.id}&query={obj_2.name[4:]}').content) + assert response['count'] == 2 + + +def test_tree_filter(obj_1, obj_1_1, obj_1_1_1, obj_2, obj_3, u1_s1): + with scopes_disabled(): + obj_2.move(obj_1, node_location) + # should return full tree starting at obj_1 (obj_1_1_1, obj_2), ignoring query filters + response = json.loads(u1_s1.get(f'{reverse(LIST_URL)}?tree={obj_1.id}').content) + assert response['count'] == 4 + response = json.loads(u1_s1.get(f'{reverse(LIST_URL)}?tree={obj_1.id}&query={obj_2.name[4:]}').content) + assert response['count'] == 4 diff --git a/cookbook/tests/api/test_api_import_log.py b/cookbook/tests/api/test_api_import_log.py index 427c9a08..4bfd7ec7 100644 --- a/cookbook/tests/api/test_api_import_log.py +++ b/cookbook/tests/api/test_api_import_log.py @@ -5,7 +5,7 @@ from django.contrib import auth from django.urls import reverse from django_scopes import scopes_disabled -from cookbook.models import Keyword, CookLog, ViewLog, ImportLog +from cookbook.models import ImportLog LIST_URL = 'api:importlog-list' DETAIL_URL = 'api:importlog-detail' @@ -33,14 +33,14 @@ def test_list_permission(arg, request): def test_list_space(obj_1, obj_2, u1_s1, u1_s2, space_2): - assert len(json.loads(u1_s1.get(reverse(LIST_URL)).content)) == 2 - assert len(json.loads(u1_s2.get(reverse(LIST_URL)).content)) == 0 + assert json.loads(u1_s1.get(reverse(LIST_URL)).content)['count'] == 2 + assert json.loads(u1_s2.get(reverse(LIST_URL)).content)['count'] == 0 obj_1.space = space_2 obj_1.save() - assert len(json.loads(u1_s1.get(reverse(LIST_URL)).content)) == 1 - assert len(json.loads(u1_s2.get(reverse(LIST_URL)).content)) == 1 + assert json.loads(u1_s1.get(reverse(LIST_URL)).content)['count'] == 1 + assert json.loads(u1_s2.get(reverse(LIST_URL)).content)['count'] == 1 @pytest.mark.parametrize("arg", [ diff --git a/cookbook/tests/api/test_api_keyword.py b/cookbook/tests/api/test_api_keyword.py index 650ac14c..7afcbf8a 100644 --- a/cookbook/tests/api/test_api_keyword.py +++ b/cookbook/tests/api/test_api_keyword.py @@ -5,21 +5,71 @@ from django.urls import reverse from django_scopes import scopes_disabled from cookbook.models import Keyword +from cookbook.tests.conftest import get_random_recipe + +# ------------------ IMPORTANT ------------------- +# +# if changing any capabilities associated with keywords +# you will need to ensure that it is tested against both +# SqlLite and PostgresSQL +# adding load_env() to settings.py will enable Postgress access +# +# ------------------ IMPORTANT ------------------- LIST_URL = 'api:keyword-list' DETAIL_URL = 'api:keyword-detail' - +MOVE_URL = 'api:keyword-move' +MERGE_URL = 'api:keyword-merge' +if (Keyword.node_order_by): + node_location = 'sorted-child' +else: + node_location = 'last-child' @pytest.fixture() def obj_1(space_1): return Keyword.objects.get_or_create(name='test_1', space=space_1)[0] +@pytest.fixture() +def obj_1_1(obj_1, space_1): + return obj_1.add_child(name='test_1_1', space=space_1) + + +@pytest.fixture() +def obj_1_1_1(obj_1_1, space_1): + return obj_1_1.add_child(name='test_1_1_1', space=space_1) + + @pytest.fixture def obj_2(space_1): return Keyword.objects.get_or_create(name='test_2', space=space_1)[0] +@pytest.fixture() +def obj_3(space_2): + return Keyword.objects.get_or_create(name='test_3', space=space_2)[0] + + +@pytest.fixture() +def recipe_1_s1(obj_1, recipe_1_s1, space_1): + return recipe_1_s1.keywords.add(obj_1) + + +@pytest.fixture() +def recipe_2_s1(obj_2, recipe_2_s1, space_1): + return recipe_2_s1.keywords.add(obj_2) + + +@pytest.fixture() +def recipe_3_s2(u1_s2, obj_3, space_2): + return get_random_recipe(space_2, u1_s2).keywords.add(obj_3) + + +@pytest.fixture() +def recipe_1_1_s1(u1_s1, obj_1_1, space_1): + return get_random_recipe(space_1, u1_s1).keywords.add(obj_1_1) + + @pytest.mark.parametrize("arg", [ ['a_u', 403], ['g1_s1', 403], @@ -32,31 +82,37 @@ def test_list_permission(arg, request): def test_list_space(obj_1, obj_2, u1_s1, u1_s2, space_2): - assert len(json.loads(u1_s1.get(reverse(LIST_URL)).content)) == 2 - assert len(json.loads(u1_s2.get(reverse(LIST_URL)).content)) == 0 + assert json.loads(u1_s1.get(reverse(LIST_URL)).content)['count'] == 2 + assert json.loads(u1_s2.get(reverse(LIST_URL)).content)['count'] == 0 obj_1.space = space_2 obj_1.save() - assert len(json.loads(u1_s1.get(reverse(LIST_URL)).content)) == 1 - assert len(json.loads(u1_s2.get(reverse(LIST_URL)).content)) == 1 + assert json.loads(u1_s1.get(reverse(LIST_URL)).content)['count'] == 1 + assert json.loads(u1_s2.get(reverse(LIST_URL)).content)['count'] == 1 def test_list_filter(obj_1, obj_2, u1_s1): r = u1_s1.get(reverse(LIST_URL)) assert r.status_code == 200 response = json.loads(r.content) - assert len(response) == 2 - assert response[0]['name'] == obj_1.name + assert response['count'] == 2 + assert response['results'][0]['name'] == obj_1.name + + response = json.loads(u1_s1.get(f'{reverse(LIST_URL)}?page_size=1').content) + assert len(response['results']) == 1 response = json.loads(u1_s1.get(f'{reverse(LIST_URL)}?limit=1').content) - assert len(response) == 1 + assert len(response['results']) == 1 + + response = json.loads(u1_s1.get(f'{reverse(LIST_URL)}?query=''&limit=1').content) + assert len(response['results']) == 1 response = json.loads(u1_s1.get(f'{reverse(LIST_URL)}?query=chicken').content) - assert len(response) == 0 + assert response['count'] == 0 response = json.loads(u1_s1.get(f'{reverse(LIST_URL)}?query={obj_1.name[4:]}').content) - assert len(response) == 1 + assert response['count'] == 1 @pytest.mark.parametrize("arg", [ @@ -107,7 +163,9 @@ def test_add(arg, request, u1_s2): assert r.status_code == 404 -def test_add_duplicate(u1_s1, u1_s2, obj_1): +def test_add_duplicate(u1_s1, u1_s2, obj_1, obj_3): + assert json.loads(u1_s1.get(reverse(LIST_URL)).content)['count'] == 1 + assert json.loads(u1_s2.get(reverse(LIST_URL)).content)['count'] == 1 r = u1_s1.post( reverse(LIST_URL), {'name': obj_1.name}, @@ -116,6 +174,8 @@ def test_add_duplicate(u1_s1, u1_s2, obj_1): response = json.loads(r.content) assert r.status_code == 201 assert response['id'] == obj_1.id + assert response['name'] == obj_1.name + assert json.loads(u1_s1.get(reverse(LIST_URL)).content)['count'] == 1 r = u1_s2.post( reverse(LIST_URL), @@ -125,9 +185,13 @@ def test_add_duplicate(u1_s1, u1_s2, obj_1): response = json.loads(r.content) assert r.status_code == 201 assert response['id'] != obj_1.id + assert json.loads(u1_s2.get(reverse(LIST_URL)).content)['count'] == 2 -def test_delete(u1_s1, u1_s2, obj_1): +def test_delete(u1_s1, u1_s2, obj_1, obj_1_1, obj_1_1_1): + with scopes_disabled(): + assert Keyword.objects.count() == 3 + r = u1_s2.delete( reverse( DETAIL_URL, @@ -135,14 +199,173 @@ def test_delete(u1_s1, u1_s2, obj_1): ) ) assert r.status_code == 404 + with scopes_disabled(): + assert Keyword.objects.count() == 3 r = u1_s1.delete( reverse( DETAIL_URL, - args={obj_1.id} + args={obj_1_1.id} ) ) assert r.status_code == 204 with scopes_disabled(): - assert Keyword.objects.count() == 0 + assert Keyword.objects.count() == 1 + assert Keyword.find_problems() == ([], [], [], [], []) + + +def test_move(u1_s1, obj_1, obj_1_1, obj_1_1_1, obj_2, obj_3, space_1): + url = reverse(MOVE_URL, args=[obj_1_1.id, obj_2.id]) + with scopes_disabled(): + assert obj_1.get_num_children() == 1 + assert obj_1.get_descendant_count() == 2 + assert Keyword.get_root_nodes().filter(space=space_1).count() == 2 + + # move child to new parent, only HTTP put method should work + r = u1_s1.get(url) + assert r.status_code == 405 + r = u1_s1.post(url) + assert r.status_code == 405 + r = u1_s1.delete(url) + assert r.status_code == 405 + r = u1_s1.put(url) + assert r.status_code == 200 + with scopes_disabled(): + # django-treebeard bypasses django ORM so object needs retrieved again + obj_1 = Keyword.objects.get(pk=obj_1.id) + obj_2 = Keyword.objects.get(pk=obj_2.id) + assert obj_1.get_num_children() == 0 + assert obj_1.get_descendant_count() == 0 + assert obj_2.get_num_children() == 1 + assert obj_2.get_descendant_count() == 2 + + # move child to root + r = u1_s1.put(reverse(MOVE_URL, args=[obj_1_1.id, 0])) + assert r.status_code == 200 + with scopes_disabled(): + assert Keyword.get_root_nodes().filter(space=space_1).count() == 3 + + # attempt to move to non-existent parent + r = u1_s1.put( + reverse(MOVE_URL, args=[obj_1.id, 9999]) + ) + assert r.status_code == 404 + + # attempt to move to wrong space + r = u1_s1.put( + reverse(MOVE_URL, args=[obj_1_1.id, obj_3.id]) + ) + assert r.status_code == 404 + + # run diagnostic to find problems - none should be found + with scopes_disabled(): + assert Keyword.find_problems() == ([], [], [], [], []) + + +# this seems overly long - should it be broken into smaller pieces? +def test_merge( + u1_s1, + obj_1, obj_1_1, obj_1_1_1, obj_2, obj_3, + recipe_1_s1, recipe_2_s1, recipe_3_s2, recipe_1_1_s1, + space_1 +): + with scopes_disabled(): + assert obj_1.get_num_children() == 1 + assert obj_1.get_descendant_count() == 2 + assert Keyword.get_root_nodes().filter(space=space_1).count() == 2 + assert Keyword.objects.filter(space=space_1).count() == 4 + assert obj_1.recipe_set.count() == 1 + assert obj_2.recipe_set.count() == 1 + assert obj_3.recipe_set.count() == 1 + assert obj_1_1.recipe_set.count() == 1 + assert obj_1_1_1.recipe_set.count() == 0 + + # merge keyword with no children and no recipe with another keyword, only HTTP put method should work + url = reverse(MERGE_URL, args=[obj_1_1_1.id, obj_2.id]) + r = u1_s1.get(url) + assert r.status_code == 405 + r = u1_s1.post(url) + assert r.status_code == 405 + r = u1_s1.delete(url) + assert r.status_code == 405 + r = u1_s1.put(url) + assert r.status_code == 200 + with scopes_disabled(): + # django-treebeard bypasses django ORM so object needs retrieved again + obj_1 = Keyword.objects.get(pk=obj_1.id) + obj_2 = Keyword.objects.get(pk=obj_2.id) + assert Keyword.objects.filter(pk=obj_1_1_1.id).count() == 0 + assert obj_1.get_num_children() == 1 + assert obj_1.get_descendant_count() == 1 + assert obj_2.get_num_children() == 0 + assert obj_2.get_descendant_count() == 0 + assert obj_1.recipe_set.count() == 1 + assert obj_2.recipe_set.count() == 1 + assert obj_3.recipe_set.count() == 1 + assert obj_1_1.recipe_set.count() == 1 + + # merge keyword with children to another keyword + r = u1_s1.put(reverse(MERGE_URL, args=[obj_1.id, obj_2.id])) + assert r.status_code == 200 + with scopes_disabled(): + # django-treebeard bypasses django ORM so object needs retrieved again + obj_2 = Keyword.objects.get(pk=obj_2.id) + assert Keyword.objects.filter(pk=obj_1.id).count() == 0 + assert obj_2.get_num_children() == 1 + assert obj_2.get_descendant_count() == 1 + assert obj_2.recipe_set.count() == 2 + assert obj_3.recipe_set.count() == 1 + assert obj_1_1.recipe_set.count() == 1 + + # attempt to merge with non-existent parent + r = u1_s1.put( + reverse(MERGE_URL, args=[obj_1_1.id, 9999]) + ) + assert r.status_code == 404 + + # attempt to move to wrong space + r = u1_s1.put( + reverse(MERGE_URL, args=[obj_2.id, obj_3.id]) + ) + assert r.status_code == 404 + + # attempt to merge with child + r = u1_s1.put( + reverse(MERGE_URL, args=[obj_2.id, obj_1_1.id]) + ) + assert r.status_code == 403 + + # attempt to merge with self + r = u1_s1.put( + reverse(MERGE_URL, args=[obj_2.id, obj_2.id]) + ) + assert r.status_code == 403 + + # run diagnostic to find problems - none should be found + with scopes_disabled(): + assert Keyword.find_problems() == ([], [], [], [], []) + + +def test_root_filter(obj_1, obj_1_1, obj_1_1_1, obj_2, obj_3, u1_s1): + # should return root objects in the space (obj_1, obj_2), ignoring query filters + response = json.loads(u1_s1.get(f'{reverse(LIST_URL)}?root=0').content) + assert len(response['results']) == 2 + + with scopes_disabled(): + obj_2.move(obj_1, node_location) + # should return direct children of obj_1 (obj_1_1, obj_2), ignoring query filters + response = json.loads(u1_s1.get(f'{reverse(LIST_URL)}?root={obj_1.id}').content) + assert response['count'] == 2 + response = json.loads(u1_s1.get(f'{reverse(LIST_URL)}?root={obj_1.id}&query={obj_2.name[4:]}').content) + assert response['count'] == 2 + + +def test_tree_filter(obj_1, obj_1_1, obj_1_1_1, obj_2, obj_3, u1_s1): + with scopes_disabled(): + obj_2.move(obj_1, node_location) + # should return full tree starting at obj_1 (obj_1_1_1, obj_2), ignoring query filters + response = json.loads(u1_s1.get(f'{reverse(LIST_URL)}?tree={obj_1.id}').content) + assert response['count'] == 4 + response = json.loads(u1_s1.get(f'{reverse(LIST_URL)}?tree={obj_1.id}&query={obj_2.name[4:]}').content) + assert response['count'] == 4 diff --git a/cookbook/tests/api/test_api_meal_plan.py b/cookbook/tests/api/test_api_meal_plan.py index 773154c6..cf584162 100644 --- a/cookbook/tests/api/test_api_meal_plan.py +++ b/cookbook/tests/api/test_api_meal_plan.py @@ -105,7 +105,7 @@ def test_add(arg, request, u1_s2, recipe_1_s1, meal_type): c = request.getfixturevalue(arg[0]) r = c.post( reverse(LIST_URL), - {'recipe': {'id': recipe_1_s1.id, 'name': recipe_1_s1.name, 'keywords': []}, 'meal_type': meal_type.id, + {'recipe': {'id': recipe_1_s1.id, 'name': recipe_1_s1.name, 'keywords': []}, 'meal_type': {'id': meal_type.id, 'name': meal_type.name}, 'date': (datetime.now()).strftime("%Y-%m-%d"), 'servings': 1, 'title': 'test'}, content_type='application/json' ) diff --git a/cookbook/tests/api/test_api_recipe.py b/cookbook/tests/api/test_api_recipe.py index f68db563..feedcde2 100644 --- a/cookbook/tests/api/test_api_recipe.py +++ b/cookbook/tests/api/test_api_recipe.py @@ -1,15 +1,20 @@ import json - import pytest + from django.urls import reverse from django_scopes import scopes_disabled -from cookbook.models import Food, Ingredient, Step, Recipe +from cookbook.models import Recipe +from cookbook.tests.conftest import get_random_json_recipe, validate_recipe LIST_URL = 'api:recipe-list' DETAIL_URL = 'api:recipe-detail' +# TODO need to add extensive tests against recipe search to go through all of the combinations of parameters +# probably needs to include a far more extensive set of initial recipes to effectively test results +# and to ensure that all parts of the code are exercised. +# TODO should probably consider adding code coverage plugin to the test suite @pytest.mark.parametrize("arg", [ ['a_u', 403], ['g1_s1', 200], @@ -45,18 +50,19 @@ def test_list_space(recipe_1_s1, u1_s1, u1_s2, space_2): def test_update(arg, request, recipe_1_s1): with scopes_disabled(): c = request.getfixturevalue(arg[0]) + j = get_random_json_recipe() r = c.patch( reverse( DETAIL_URL, args={recipe_1_s1.id} ), - {'name': 'new'}, + j, content_type='application/json' ) response = json.loads(r.content) assert r.status_code == arg[1] if r.status_code == 200: - assert response['name'] == 'new' + validate_recipe(j, json.loads(r.content)) @pytest.mark.parametrize("arg", [ @@ -66,22 +72,24 @@ def test_update(arg, request, recipe_1_s1): ['a1_s1', 201], ]) def test_add(arg, request, u1_s2): - c = request.getfixturevalue(arg[0]) - r = c.post( - reverse(LIST_URL), - {'name': 'test', 'waiting_time': 0, 'working_time': 0, 'keywords': [], 'steps': []}, - content_type='application/json' - ) - response = json.loads(r.content) - print(r.content) - assert r.status_code == arg[1] - if r.status_code == 201: - # id can change when running multiple tests, changed to validate name - assert response['name'] == 'test' - r = c.get(reverse(DETAIL_URL, args={response['id']})) - assert r.status_code == 200 - r = u1_s2.get(reverse(DETAIL_URL, args={response['id']})) - assert r.status_code == 404 + x = 0 + while x < 2: + c = request.getfixturevalue(arg[0]) + j = get_random_json_recipe() + r = c.post( + reverse(LIST_URL), j, content_type='application/json' + ) + response = json.loads(r.content) + print(r.content) + assert r.status_code == arg[1] + if r.status_code == 201: + # id can change when running multiple tests, changed to validate name + validate_recipe(j, json.loads(r.content)) + r = c.get(reverse(DETAIL_URL, args={response['id']})) + assert r.status_code == 200 + r = u1_s2.get(reverse(DETAIL_URL, args={response['id']})) + assert r.status_code == 404 + x += 1 def test_delete(u1_s1, u1_s2, recipe_1_s1): diff --git a/cookbook/tests/api/test_api_recipe_book.py b/cookbook/tests/api/test_api_recipe_book.py index 3d551329..8bc03fae 100644 --- a/cookbook/tests/api/test_api_recipe_book.py +++ b/cookbook/tests/api/test_api_recipe_book.py @@ -97,7 +97,7 @@ def test_add(arg, request, u1_s2): c = request.getfixturevalue(arg[0]) r = c.post( reverse(LIST_URL), - {'name': 'test'}, + {'name': 'test', 'shared': []}, content_type='application/json' ) response = json.loads(r.content) diff --git a/cookbook/tests/api/test_api_recipe_book_entry.py b/cookbook/tests/api/test_api_recipe_book_entry.py index 89bf2ba0..11d1523e 100644 --- a/cookbook/tests/api/test_api_recipe_book_entry.py +++ b/cookbook/tests/api/test_api_recipe_book_entry.py @@ -11,7 +11,7 @@ LIST_URL = 'api:recipebookentry-list' DETAIL_URL = 'api:recipebookentry-detail' -@pytest.fixture() +@pytest.fixture def obj_1(space_1, u1_s1, recipe_1_s1): b = RecipeBook.objects.create(name='test_1', created_by=auth.get_user(u1_s1), space=space_1) @@ -100,7 +100,7 @@ def test_add_duplicate(u1_s1, obj_1): {'book': obj_1.book.pk, 'recipe': obj_1.recipe.pk}, content_type='application/json' ) - assert r.status_code == 400 + assert r.status_code == 201 def test_delete(u1_s1, u1_s2, obj_1): diff --git a/cookbook/tests/api/test_api_shopping_list_entry.py b/cookbook/tests/api/test_api_shopping_list_entry.py index 323e2004..71a1f8f6 100644 --- a/cookbook/tests/api/test_api_shopping_list_entry.py +++ b/cookbook/tests/api/test_api_shopping_list_entry.py @@ -6,7 +6,7 @@ from django.forms import model_to_dict from django.urls import reverse from django_scopes import scopes_disabled -from cookbook.models import RecipeBook, Storage, Sync, SyncLog, ShoppingList, ShoppingListEntry, Food +from cookbook.models import ShoppingList, ShoppingListEntry, Food LIST_URL = 'api:shoppinglistentry-list' DETAIL_URL = 'api:shoppinglistentry-detail' @@ -14,7 +14,7 @@ DETAIL_URL = 'api:shoppinglistentry-detail' @pytest.fixture() def obj_1(space_1, u1_s1): - e = ShoppingListEntry.objects.create(food=Food.objects.create(name='test 1', space=space_1)) + e = ShoppingListEntry.objects.create(food=Food.objects.get_or_create(name='test 1', space=space_1)[0]) s = ShoppingList.objects.create(created_by=auth.get_user(u1_s1), space=space_1, ) s.entries.add(e) return e @@ -22,7 +22,7 @@ def obj_1(space_1, u1_s1): @pytest.fixture def obj_2(space_1, u1_s1): - e = ShoppingListEntry.objects.create(food=Food.objects.create(name='test 2', space=space_1)) + e = ShoppingListEntry.objects.create(food=Food.objects.get_or_create(name='test 2', space=space_1)[0]) s = ShoppingList.objects.create(created_by=auth.get_user(u1_s1), space=space_1, ) s.entries.add(e) return e diff --git a/cookbook/tests/api/test_api_sync_log.py b/cookbook/tests/api/test_api_sync_log.py index 579699dd..a878b6ff 100644 --- a/cookbook/tests/api/test_api_sync_log.py +++ b/cookbook/tests/api/test_api_sync_log.py @@ -3,9 +3,8 @@ import json import pytest from django.contrib import auth from django.urls import reverse -from django_scopes import scopes_disabled -from cookbook.models import RecipeBook, Storage, Sync, SyncLog +from cookbook.models import Storage, Sync, SyncLog LIST_URL = 'api:synclog-list' DETAIL_URL = 'api:synclog-detail' @@ -37,14 +36,14 @@ def test_list_permission(arg, request): def test_list_space(obj_1, obj_2, a1_s1, a1_s2, space_2): - assert len(json.loads(a1_s1.get(reverse(LIST_URL)).content)) == 2 - assert len(json.loads(a1_s2.get(reverse(LIST_URL)).content)) == 0 + assert json.loads(a1_s1.get(reverse(LIST_URL)).content)['count'] == 2 + assert json.loads(a1_s2.get(reverse(LIST_URL)).content)['count'] == 0 obj_1.sync.space = space_2 obj_1.sync.save() - assert len(json.loads(a1_s1.get(reverse(LIST_URL)).content)) == 1 - assert len(json.loads(a1_s2.get(reverse(LIST_URL)).content)) == 1 + assert json.loads(a1_s1.get(reverse(LIST_URL)).content)['count'] == 1 + assert json.loads(a1_s2.get(reverse(LIST_URL)).content)['count'] == 1 @pytest.mark.parametrize("arg", [ @@ -82,7 +81,6 @@ def test_add(arg, request, a1_s2, obj_1): {'msg': 'test'}, content_type='application/json' ) - response = json.loads(r.content) assert r.status_code == arg[1] diff --git a/cookbook/tests/api/test_api_unit.py b/cookbook/tests/api/test_api_unit.py index 2a97a39b..13d0aaec 100644 --- a/cookbook/tests/api/test_api_unit.py +++ b/cookbook/tests/api/test_api_unit.py @@ -1,13 +1,20 @@ import json - import pytest +import uuid + +from django.contrib import auth from django.urls import reverse from django_scopes import scopes_disabled -from cookbook.models import Food, Unit +from cookbook.models import Food, Ingredient, ShoppingList, ShoppingListEntry, Unit LIST_URL = 'api:unit-list' DETAIL_URL = 'api:unit-detail' +MERGE_URL = 'api:unit-merge' + + +def random_food(space_1, u1_s1): + return Food.objects.get_or_create(name=str(uuid.uuid4()), space=space_1)[0] @pytest.fixture() @@ -20,6 +27,47 @@ def obj_2(space_1): return Unit.objects.get_or_create(name='test_2', space=space_1)[0] +@pytest.fixture +def obj_3(space_2): + return Unit.objects.get_or_create(name='test_3', space=space_2)[0] + + +@pytest.fixture() +def ing_1_s1(obj_1, space_1, u1_s1): + return Ingredient.objects.create(unit=obj_1, food=random_food(space_1, u1_s1), space=space_1) + + +@pytest.fixture() +def ing_2_s1(obj_2, space_1, u1_s1): + return Ingredient.objects.create(unit=obj_2, food=random_food(space_1, u1_s1), space=space_1) + + +@pytest.fixture() +def ing_3_s2(obj_3, space_2, u2_s2): + return Ingredient.objects.create(unit=obj_3, food=random_food(space_2, u2_s2), space=space_2) + + +@pytest.fixture() +def sle_1_s1(obj_1, u1_s1, space_1): + e = ShoppingListEntry.objects.create(unit=obj_1, food=random_food(space_1, u1_s1)) + s = ShoppingList.objects.create(created_by=auth.get_user(u1_s1), space=space_1, ) + s.entries.add(e) + return e + + +@pytest.fixture() +def sle_2_s1(obj_2, u1_s1, space_1): + return ShoppingListEntry.objects.create(unit=obj_2, food=random_food(space_1, u1_s1)) + + +@pytest.fixture() +def sle_3_s2(obj_3, u2_s2, space_2): + e = ShoppingListEntry.objects.create(unit=obj_3, food=random_food(space_2, u2_s2)) + s = ShoppingList.objects.create(created_by=auth.get_user(u2_s2), space=space_2) + s.entries.add(e) + return e + + @pytest.mark.parametrize("arg", [ ['a_u', 403], ['g1_s1', 403], @@ -32,33 +80,31 @@ def test_list_permission(arg, request): def test_list_space(obj_1, obj_2, u1_s1, u1_s2, space_2): - assert len(json.loads(u1_s1.get(reverse(LIST_URL)).content)) == 2 - assert len(json.loads(u1_s2.get(reverse(LIST_URL)).content)) == 0 + assert json.loads(u1_s1.get(reverse(LIST_URL)).content)['count'] == 2 + assert json.loads(u1_s2.get(reverse(LIST_URL)).content)['count'] == 0 obj_1.space = space_2 obj_1.save() - assert len(json.loads(u1_s1.get(reverse(LIST_URL)).content)) == 1 - assert len(json.loads(u1_s2.get(reverse(LIST_URL)).content)) == 1 + assert json.loads(u1_s1.get(reverse(LIST_URL)).content)['count'] == 1 + assert json.loads(u1_s2.get(reverse(LIST_URL)).content)['count'] == 1 def test_list_filter(obj_1, obj_2, u1_s1): r = u1_s1.get(reverse(LIST_URL)) assert r.status_code == 200 response = json.loads(r.content) - assert len(response) == 2 - # unit model isn't sorted - this isn't a stable test - # assert response[0]['name'] == obj_1.name + assert response['count'] == 2 response = json.loads(u1_s1.get(f'{reverse(LIST_URL)}?limit=1').content) - assert len(response) == 1 + assert response['count'] == 1 response = json.loads(u1_s1.get(f'{reverse(LIST_URL)}?query=chicken').content) - assert len(response) == 0 + assert response['count'] == 0 response = json.loads(u1_s1.get(f'{reverse(LIST_URL)}?query={obj_1.name[4:]}').content) - assert len(response) == 1 - assert response[0]['name'] == obj_1.name + assert response['count'] == 1 + assert response['results'][0]['name'] == obj_1.name @pytest.mark.parametrize("arg", [ @@ -148,3 +194,60 @@ def test_delete(u1_s1, u1_s2, obj_1): assert r.status_code == 204 with scopes_disabled(): assert Food.objects.count() == 0 + + +def test_merge( + u1_s1, + obj_1, obj_2, obj_3, + ing_1_s1, ing_2_s1, ing_3_s2, + sle_1_s1, sle_2_s1, sle_3_s2, + space_1 +): + with scopes_disabled(): + assert Unit.objects.filter(space=space_1).count() == 2 + assert obj_1.ingredient_set.count() == 1 + assert obj_2.ingredient_set.count() == 1 + assert obj_3.ingredient_set.count() == 1 + assert obj_1.shoppinglistentry_set.count() == 1 + assert obj_2.shoppinglistentry_set.count() == 1 + assert obj_3.shoppinglistentry_set.count() == 1 + + # merge Unit with ingredient/shopping list entry with another Unit, only HTTP put method should work + url = reverse(MERGE_URL, args=[obj_1.id, obj_2.id]) + r = u1_s1.get(url) + assert r.status_code == 405 + r = u1_s1.post(url) + assert r.status_code == 405 + r = u1_s1.delete(url) + assert r.status_code == 405 + r = u1_s1.put(url) + assert r.status_code == 200 + with scopes_disabled(): + assert Unit.objects.filter(pk=obj_1.id).count() == 0 + assert obj_2.ingredient_set.count() == 2 + assert obj_3.ingredient_set.count() == 1 + + assert obj_2.shoppinglistentry_set.count() == 2 + assert obj_3.shoppinglistentry_set.count() == 1 + + # attempt to merge with non-existent parent + r = u1_s1.put( + reverse(MERGE_URL, args=[obj_2.id, 9999]) + ) + assert r.status_code == 404 + + # attempt to move to wrong space + r = u1_s1.put( + reverse(MERGE_URL, args=[obj_2.id, obj_3.id]) + ) + assert r.status_code == 404 + + # attempt to merge with self + r = u1_s1.put( + reverse(MERGE_URL, args=[obj_2.id, obj_2.id]) + ) + assert r.status_code == 403 + + # run diagnostic to find problems - none should be found + with scopes_disabled(): + assert Food.find_problems() == ([], [], [], [], []) diff --git a/cookbook/tests/api/test_api_view_log.py b/cookbook/tests/api/test_api_view_log.py index 334daa03..95ca49db 100644 --- a/cookbook/tests/api/test_api_view_log.py +++ b/cookbook/tests/api/test_api_view_log.py @@ -5,7 +5,7 @@ from django.contrib import auth from django.urls import reverse from django_scopes import scopes_disabled -from cookbook.models import Keyword, CookLog, ViewLog +from cookbook.models import ViewLog LIST_URL = 'api:viewlog-list' DETAIL_URL = 'api:viewlog-detail' @@ -33,14 +33,14 @@ def test_list_permission(arg, request): def test_list_space(obj_1, obj_2, u1_s1, u1_s2, space_2): - assert len(json.loads(u1_s1.get(reverse(LIST_URL)).content)) == 2 - assert len(json.loads(u1_s2.get(reverse(LIST_URL)).content)) == 0 + assert json.loads(u1_s1.get(reverse(LIST_URL)).content)['count'] == 2 + assert json.loads(u1_s2.get(reverse(LIST_URL)).content)['count'] == 0 obj_1.space = space_2 obj_1.save() - assert len(json.loads(u1_s1.get(reverse(LIST_URL)).content)) == 1 - assert len(json.loads(u1_s2.get(reverse(LIST_URL)).content)) == 0 + assert json.loads(u1_s1.get(reverse(LIST_URL)).content)['count'] == 1 + assert json.loads(u1_s2.get(reverse(LIST_URL)).content)['count'] == 0 @pytest.mark.parametrize("arg", [ @@ -52,6 +52,7 @@ def test_list_space(obj_1, obj_2, u1_s1, u1_s2, space_2): ['u1_s2', 404], ['a1_s2', 404], ]) +# TODO: should logs be updateable at all? def test_update(arg, request, obj_1): c = request.getfixturevalue(arg[0]) r = c.patch( @@ -65,31 +66,29 @@ def test_update(arg, request, obj_1): assert r.status_code == arg[1] -# TODO disabled until https://github.com/vabene1111/recipes/issues/484 - -# @pytest.mark.parametrize("arg", [ -# ['a_u', 403], -# ['g1_s1', 201], -# ['u1_s1', 201], -# ['a1_s1', 201], -# ]) -# def test_add(arg, request, u1_s2, u2_s1, recipe_1_s1): -# c = request.getfixturevalue(arg[0]) -# r = c.post( -# reverse(LIST_URL), -# {'recipe': recipe_1_s1.id}, -# content_type='application/json' -# ) -# response = json.loads(r.content) -# assert r.status_code == arg[1] -# if r.status_code == 201: -# assert response['recipe'] == recipe_1_s1.id -# r = c.get(reverse(DETAIL_URL, args={response['id']})) -# assert r.status_code == 200 -# r = u2_s1.get(reverse(DETAIL_URL, args={response['id']})) -# assert r.status_code == 404 -# r = u1_s2.get(reverse(DETAIL_URL, args={response['id']})) -# assert r.status_code == 404 +@pytest.mark.parametrize("arg", [ + ['a_u', 403], + ['g1_s1', 201], + ['u1_s1', 201], + ['a1_s1', 201], +]) +def test_add(arg, request, u1_s2, u2_s1, recipe_1_s1): + c = request.getfixturevalue(arg[0]) + r = c.post( + reverse(LIST_URL), + {'recipe': recipe_1_s1.id}, + content_type='application/json' + ) + response = json.loads(r.content) + assert r.status_code == arg[1] + if r.status_code == 201: + assert response['recipe'] == recipe_1_s1.id + r = c.get(reverse(DETAIL_URL, args={response['id']})) + assert r.status_code == 200 + r = u2_s1.get(reverse(DETAIL_URL, args={response['id']})) + assert r.status_code == 404 + r = u1_s2.get(reverse(DETAIL_URL, args={response['id']})) + assert r.status_code == 404 def test_delete(u1_s1, u1_s2, obj_1): diff --git a/cookbook/tests/conftest.py b/cookbook/tests/conftest.py index 54d87c1c..48c4e9c6 100644 --- a/cookbook/tests/conftest.py +++ b/cookbook/tests/conftest.py @@ -1,5 +1,6 @@ import copy import inspect +import random import uuid import pytest @@ -7,7 +8,7 @@ from django.contrib import auth from django.contrib.auth.models import User, Group from django_scopes import scopes_disabled -from cookbook.models import Space, Recipe, Step, Ingredient, Food, Unit, Storage +from cookbook.models import Space, Recipe, Step, Ingredient, Food, Unit # hack from https://github.com/raphaelm/django-scopes to disable scopes for all fixtures @@ -61,7 +62,7 @@ def get_random_recipe(space_1, u1_s1): s1.ingredients.add( Ingredient.objects.create( amount=1, - food=Food.objects.create(name=uuid.uuid4(), space=space_1, ), + food=Food.objects.get_or_create(name=str(uuid.uuid4()), space=space_1)[0], unit=Unit.objects.create(name=uuid.uuid4(), space=space_1, ), note=uuid.uuid4(), space=space_1, @@ -71,7 +72,7 @@ def get_random_recipe(space_1, u1_s1): s2.ingredients.add( Ingredient.objects.create( amount=1, - food=Food.objects.create(name=uuid.uuid4(), space=space_1, ), + food=Food.objects.get_or_create(name=str(uuid.uuid4()), space=space_1)[0], unit=Unit.objects.create(name=uuid.uuid4(), space=space_1, ), note=uuid.uuid4(), space=space_1, @@ -81,6 +82,74 @@ def get_random_recipe(space_1, u1_s1): return r +def get_random_json_recipe(): + return { + "name": str(uuid.uuid4()), + "description": str(uuid.uuid4()), + "keywords": [{"name": str(uuid.uuid4())}, {"name": str(uuid.uuid4())}], + "steps": [ + { + "instruction": str(uuid.uuid4()), + "ingredients": [ + {"food": {"name": str(uuid.uuid4())}, "unit": {"name": str(uuid.uuid4())}, "amount": random.randint(0, 10)}, + {"food": {"name": str(uuid.uuid4())}, "unit": {"name": str(uuid.uuid4())}, "amount": random.randint(0, 10)}, + ], + } + ], + "working_time": random.randint(0, 120), + "waiting_time": random.randint(0, 120), + } + + +def validate_recipe(expected, recipe): + expected_lists = {} + target_lists = {} + # file and url are metadata not related to the recipe + [expected.pop(k) for k in ['file', 'url'] if k in expected] + # if a key is a list remove it to deal with later + lists = [k for k, v in expected.items() if type(v) == list] + for k in lists: + expected_lists[k] = expected.pop(k) + target_lists[k] = recipe.pop(k) + try: + # recipe dicts will have additional keys (IDs, default values, etc) + # this will check for an exact match from expected key:value to a superset of key:value pairs + assert expected.items() <= recipe.items() + except AssertionError: + for key in expected: + if expected[key] != recipe[key]: + print('Expected : ', expected[key], ' got: ', recipe[key]) + + # this is later, it may or may not work with keys that have list values + # it also may or may not work on complex nested dicts + for key in expected_lists: + for k in expected_lists[key]: + try: + assert any([dict_compare(k, i) for i in target_lists[key]]) + except AssertionError: + for result in [dict_compare(k, i, details=True) for i in target_lists[key]]: + print('Added Keys: ', result[0]) + print('Removed Keys', result[1]) + print('Modified Value Keys', result[2]) + print('Modified Dictionary Keys', result[3]) + + +def dict_compare(d1, d2, details=False): + d1_keys = set(d1.keys()) + d2_keys = set(d2.keys()) + shared = d1_keys.intersection(d2_keys) + sub_dicts = [i for i, j in d1.items() if type(j) == dict] + not_dicts = shared - set(sub_dicts) + added = d1_keys - d2_keys + removed = d2_keys - d1_keys + modified = {o: (d1[o], d2[o]) for o in not_dicts if d1[o] != d2[o]} + modified_dicts = {o: (d1[o], d2[o]) for o in sub_dicts if not d1[o].items() <= d2[o].items()} + if details: + return added, removed, modified, modified_dicts + else: + return any([not added, not removed, not modified, not modified_dicts]) + + @pytest.fixture def recipe_1_s1(space_1, u1_s1): return get_random_recipe(space_1, u1_s1) diff --git a/cookbook/tests/other/test_ingredient_parser.py b/cookbook/tests/other/test_ingredient_parser.py index d79671e8..5d61fa87 100644 --- a/cookbook/tests/other/test_ingredient_parser.py +++ b/cookbook/tests/other/test_ingredient_parser.py @@ -1,4 +1,4 @@ -from cookbook.helper.ingredient_parser import parse +from cookbook.helper.ingredient_parser import IngredientParser def test_ingredient_parser(): @@ -58,14 +58,16 @@ def test_ingredient_parser(): "2L Wasser": (2, "L", "Wasser", ""), "1 (16 ounce) package dry lentils, rinsed": (1, "package", "dry lentils, rinsed", "16 ounce"), "2-3 c Water": (2, "c", "Water", "2-3"), - "Pane (raffermo o secco) 80 g": (0, "", "Pane 80 g", "raffermo o secco"), #TODO this is actually not a good result but currently expected + "Pane (raffermo o secco) 80 g": (0, "", "Pane 80 g", "raffermo o secco"), # TODO this is actually not a good result but currently expected } # for German you could say that if an ingredient does not have # an amount # and it starts with a lowercase letter, then that # is a unit ("etwas", "evtl.") does not apply to English tho + ingredient_parser = IngredientParser(None, False, ignore_automations=True) + count = 0 for key, val in expectations.items(): count += 1 - parsed = parse(key) + parsed = ingredient_parser.parse(key) assert val == parsed diff --git a/cookbook/tests/other/test_url_import.py b/cookbook/tests/other/test_url_import.py index 223455ec..a50e6c75 100644 --- a/cookbook/tests/other/test_url_import.py +++ b/cookbook/tests/other/test_url_import.py @@ -9,6 +9,7 @@ from ._recipes import ( ALLRECIPES, AMERICAS_TEST_KITCHEN, CHEF_KOCH, CHEF_KOCH2, COOKPAD, COOKS_COUNTRY, DELISH, FOOD_NETWORK, GIALLOZAFFERANO, JOURNAL_DES_FEMMES, MADAME_DESSERT, MARMITON, TASTE_OF_HOME, THE_SPRUCE_EATS, TUDOGOSTOSO) +from cookbook.tests.conftest import validate_recipe IMPORT_SOURCE_URL = 'api_recipe_from_source' DATA_DIR = "cookbook/tests/other/test_data/" @@ -56,7 +57,8 @@ def test_import_permission(arg, request): TUDOGOSTOSO, ]) def test_recipe_import(arg, u1_s1): - for f in arg['file']: + url = arg['url'] + for f in list(arg['file']) : # url and files get popped later if 'cookbook' in os.getcwd(): test_file = os.path.join(os.getcwd(), 'other', 'test_data', f) else: @@ -66,33 +68,10 @@ def test_recipe_import(arg, u1_s1): reverse(IMPORT_SOURCE_URL), { 'data': d.read(), - 'url': arg['url'], + 'url': url, 'mode': 'source' }, files={'foo': 'bar'} ) recipe = json.loads(response.content)['recipe_json'] - for key in list(set(arg) - set(['file', 'url'])): - if type(arg[key]) == list: - assert len(recipe[key]) == len(arg[key]) - if key == 'keywords': - valid_keywords = [i['text'] for i in arg[key]] - for k in recipe[key]: - assert k['text'] in valid_keywords - elif key == 'recipeIngredient': - valid_ing = ["{:g}{}{}{}{}".format( - i['amount'], - i['unit']['text'], - i['ingredient']['text'], - i['note'], - i['original']) - for i in arg[key]] - for i in recipe[key]: - assert "{:g}{}{}{}{}".format( - i['amount'], - i['unit']['text'], - i['ingredient']['text'], - i['note'], - i['original']) in valid_ing - else: - assert recipe[key] == arg[key] + validate_recipe(arg, recipe) diff --git a/cookbook/urls.py b/cookbook/urls.py index 608753fe..80537c8d 100644 --- a/cookbook/urls.py +++ b/cookbook/urls.py @@ -10,7 +10,7 @@ from cookbook.helper import dal from .models import (Comment, Food, InviteLink, Keyword, MealPlan, Recipe, RecipeBook, RecipeBookEntry, RecipeImport, ShoppingList, - Storage, Sync, SyncLog, get_model_name) + Storage, Supermarket, SupermarketCategory, Sync, SyncLog, Unit, get_model_name, Automation, UserFile) from .views import api, data, delete, edit, import_export, lists, new, views, telegram router = routers.DefaultRouter() @@ -40,6 +40,7 @@ router.register(r'supermarket-category-relation', api.SupermarketCategoryRelatio router.register(r'import-log', api.ImportLogViewSet) router.register(r'bookmarklet-import', api.BookmarkletImportViewSet) router.register(r'user-file', api.UserFileViewSet) +router.register(r'automation', api.AutomationViewSet) urlpatterns = [ path('', views.index, name='index'), @@ -57,14 +58,15 @@ urlpatterns = [ path('search/v2/', views.search_v2, name='view_search_v2'), path('books/', views.books, name='view_books'), path('plan/', views.meal_plan, name='view_plan'), + path('plan_new/', views.meal_plan_new, name='view_plan_new'), path('plan/entry/', views.meal_plan_entry, name='view_plan_entry'), path('shopping/', views.shopping_list, name='view_shopping'), path('shopping/', views.shopping_list, name='view_shopping'), path('shopping/latest/', views.latest_shopping_list, name='view_shopping_latest'), + path('shopping/new/', lists.shopping_list_new, name='view_shopping_new'), path('settings/', views.user_settings, name='view_settings'), path('history/', views.history, name='view_history'), path('supermarket/', views.supermarket, name='view_supermarket'), - path('files/', views.files, name='view_files'), path('abuse/', views.report_share_abuse, name='view_report_share_abuse'), path('test/', views.test, name='view_test'), path('test2/', views.test2, name='view_test2'), @@ -87,7 +89,6 @@ urlpatterns = [ path('edit/recipe/convert//', edit.convert_recipe, name='edit_convert_recipe'), path('edit/storage//', edit.edit_storage, name='edit_storage'), - path('edit/ingredient/', edit.edit_ingredients, name='edit_food'), path('delete/recipe-source//', delete.delete_recipe_source, name='delete_recipe_source'), @@ -108,16 +109,18 @@ urlpatterns = [ path('api/backup/', api.get_backup, name='api_backup'), path('api/ingredient-from-string/', api.ingredient_from_string, name='api_ingredient_from_string'), path('api/share-link/', api.share_link, name='api_share_link'), + path('api/get_facets/', api.get_facets, name='api_get_facets'), - path('dal/keyword/', dal.KeywordAutocomplete.as_view(), name='dal_keyword'), - path('dal/food/', dal.IngredientsAutocomplete.as_view(), name='dal_food'), - path('dal/unit/', dal.UnitAutocomplete.as_view(), name='dal_unit'), + path('dal/keyword/', dal.KeywordAutocomplete.as_view(), name='dal_keyword'), # TODO is this deprecated? not yet, some old forms remain, could likely be changed to generic API endpoints + path('dal/food/', dal.IngredientsAutocomplete.as_view(), name='dal_food'), # TODO is this deprecated? + path('dal/unit/', dal.UnitAutocomplete.as_view(), name='dal_unit'), # TODO is this deprecated? path('telegram/setup/', telegram.setup_bot, name='telegram_setup'), path('telegram/remove/', telegram.remove_bot, name='telegram_remove'), path('telegram/hook//', telegram.hook, name='telegram_hook'), path('docs/markdown/', views.markdown_info, name='docs_markdown'), + path('docs/search/', views.search_info, name='docs_search'), path('docs/api/', views.api_info, name='docs_api'), path('openapi/', get_schema_view(title="Django Recipes", version=VERSION_NUMBER, public=True, @@ -136,7 +139,7 @@ urlpatterns = [ generic_models = ( Recipe, RecipeImport, Storage, RecipeBook, MealPlan, SyncLog, Sync, - Comment, RecipeBookEntry, Keyword, Food, ShoppingList, InviteLink + Comment, RecipeBookEntry, ShoppingList, InviteLink ) for m in generic_models: @@ -174,3 +177,15 @@ for m in generic_models: name=f'delete_{py_name}' ) ) + +vue_models = [Food, Keyword, Unit, Supermarket, SupermarketCategory, Automation, UserFile] +for m in vue_models: + py_name = get_model_name(m) + url_name = py_name.replace('_', '-') + + if c := getattr(lists, py_name, None): + urlpatterns.append( + path( + f'list/{url_name}/', c, name=f'list_{py_name}' + ) + ) diff --git a/cookbook/views/api.py b/cookbook/views/api.py index 7cc49e40..1bd27b91 100644 --- a/cookbook/views/api.py +++ b/cookbook/views/api.py @@ -4,47 +4,51 @@ import re import uuid import requests -from PIL import Image from annoying.decorators import ajax_request from annoying.functions import get_object_or_None +from collections import OrderedDict from django.contrib import messages from django.contrib.auth.models import User +from django.contrib.postgres.search import TrigramSimilarity from django.core.exceptions import FieldError, ValidationError from django.core.files import File -from django.db.models import Q +from django.db.models import Case, ProtectedError, Q, Value, When +from django.db.models.fields.related import ForeignObjectRel from django.http import FileResponse, HttpResponse, JsonResponse +from django_scopes import scopes_disabled from django.shortcuts import redirect, get_object_or_404 from django.urls import reverse from django.utils.translation import gettext as _ from icalendar import Calendar, Event from recipe_scrapers import scrape_me, WebsiteNotImplementedError, NoSchemaFoundInWildMode -from rest_framework import decorators, viewsets +from rest_framework import decorators, status, viewsets from rest_framework.exceptions import APIException, PermissionDenied from rest_framework.pagination import PageNumberPagination from rest_framework.parsers import MultiPartParser +from rest_framework.renderers import JSONRenderer, TemplateHTMLRenderer from rest_framework.response import Response -from rest_framework.schemas.openapi import AutoSchema -from rest_framework.schemas.utils import is_list_view from rest_framework.viewsets import ViewSetMixin +from treebeard.exceptions import PathOverflow, InvalidMoveToDescendant, InvalidPosition from cookbook.helper.image_processing import handle_image -from cookbook.helper.ingredient_parser import parse +from cookbook.helper.ingredient_parser import IngredientParser from cookbook.helper.permission_helper import (CustomIsAdmin, CustomIsGuest, CustomIsOwner, CustomIsShare, CustomIsShared, CustomIsUser, group_required) from cookbook.helper.recipe_html_import import get_recipe_from_source -from cookbook.helper.recipe_search import search_recipes +from cookbook.helper.recipe_search import search_recipes, get_facet from cookbook.helper.recipe_url_import import get_from_scraper from cookbook.models import (CookLog, Food, Ingredient, Keyword, MealPlan, MealType, Recipe, RecipeBook, ShoppingList, ShoppingListEntry, ShoppingListRecipe, Step, Storage, Sync, SyncLog, Unit, UserPreference, - ViewLog, RecipeBookEntry, Supermarket, ImportLog, BookmarkletImport, SupermarketCategory, UserFile, ShareLink, SupermarketCategoryRelation) + ViewLog, RecipeBookEntry, Supermarket, ImportLog, BookmarkletImport, SupermarketCategory, UserFile, ShareLink, SupermarketCategoryRelation, Automation) from cookbook.provider.dropbox import Dropbox from cookbook.provider.local import Local from cookbook.provider.nextcloud import Nextcloud +from cookbook.schemas import FilterSchema, RecipeSchema, TreeSchema from cookbook.serializer import (FoodSerializer, IngredientSerializer, KeywordSerializer, MealPlanSerializer, MealTypeSerializer, RecipeBookSerializer, @@ -58,11 +62,10 @@ from cookbook.serializer import (FoodSerializer, IngredientSerializer, UserNameSerializer, UserPreferenceSerializer, ViewLogSerializer, CookLogSerializer, RecipeBookEntrySerializer, RecipeOverviewSerializer, SupermarketSerializer, ImportLogSerializer, - BookmarkletImportSerializer, SupermarketCategorySerializer, UserFileSerializer, SupermarketCategoryRelationSerializer) + BookmarkletImportSerializer, SupermarketCategorySerializer, UserFileSerializer, SupermarketCategoryRelationSerializer, AutomationSerializer) class StandardFilterMixin(ViewSetMixin): - def get_queryset(self): queryset = self.queryset query = self.request.query_params.get('query', None) @@ -88,6 +91,194 @@ class StandardFilterMixin(ViewSetMixin): return queryset +class DefaultPagination(PageNumberPagination): + page_size = 50 + page_size_query_param = 'page_size' + max_page_size = 200 + + +class FuzzyFilterMixin(ViewSetMixin): + schema = FilterSchema() + + def get_queryset(self): + self.queryset = self.queryset.filter(space=self.request.space).order_by('name') + query = self.request.query_params.get('query', None) + fuzzy = self.request.user.searchpreference.lookup + + if query is not None and query not in ["''", '']: + if fuzzy: + self.queryset = ( + self.queryset + .annotate(exact=Case(When(name__iexact=query, then=(Value(100))), default=Value(0))) # put exact matches at the top of the result set + .annotate(trigram=TrigramSimilarity('name', query)).filter(trigram__gt=0.2) + .order_by('-exact', '-trigram') + ) + else: + # TODO have this check unaccent search settings or other search preferences? + self.queryset = ( + self.queryset + .annotate(exact=Case(When(name__iexact=query, then=(Value(100))), default=Value(0))) # put exact matches at the top of the result set + .filter(name__icontains=query).order_by('-exact', 'name') + ) + + updated_at = self.request.query_params.get('updated_at', None) + if updated_at is not None: + try: + self.queryset = self.queryset.filter(updated_at__gte=updated_at) + except FieldError: + pass + except ValidationError: + raise APIException(_('Parameter updated_at incorrectly formatted')) + + limit = self.request.query_params.get('limit', None) + random = self.request.query_params.get('random', False) + if limit is not None: + if random: + self.queryset = self.queryset.order_by("?") + self.queryset = self.queryset[:int(limit)] + return self.queryset + + +class MergeMixin(ViewSetMixin): + @decorators.action(detail=True, url_path='merge/(?P[^/.]+)', methods=['PUT'], ) + @decorators.renderer_classes((TemplateHTMLRenderer, JSONRenderer)) + def merge(self, request, pk, target): + self.description = f"Merge {self.basename} onto target {self.basename} with ID of [int]." + + try: + source = self.model.objects.get(pk=pk, space=self.request.space) + except (self.model.DoesNotExist): + content = {'error': True, 'msg': _(f'No {self.basename} with id {pk} exists')} + return Response(content, status=status.HTTP_404_NOT_FOUND) + + if int(target) == source.id: + content = {'error': True, 'msg': _('Cannot merge with the same object!')} + return Response(content, status=status.HTTP_403_FORBIDDEN) + + else: + try: + target = self.model.objects.get(pk=target, space=self.request.space) + except (self.model.DoesNotExist): + content = {'error': True, 'msg': _(f'No {self.basename} with id {target} exists')} + return Response(content, status=status.HTTP_404_NOT_FOUND) + + try: + if target in source.get_descendants_and_self(): + content = {'error': True, 'msg': _('Cannot merge with child object!')} + return Response(content, status=status.HTTP_403_FORBIDDEN) + isTree = True + except AttributeError: + # AttributeError probably means its not a tree, so can safely ignore + isTree = False + + try: + for link in [field for field in source._meta.get_fields() if issubclass(type(field), ForeignObjectRel)]: + linkManager = getattr(source, link.get_accessor_name()) + related = linkManager.all() + # link to foreign relationship could be OneToMany or ManyToMany + if link.one_to_many: + for r in related: + setattr(r, link.field.name, target) + r.save() + elif link.many_to_many: + for r in related: + getattr(r, link.field.name).add(target) + getattr(r, link.field.name).remove(source) + r.save() + else: + # a new scenario exists and needs to be handled + raise NotImplementedError + if isTree: + if self.model.node_order_by: + node_location = 'sorted-child' + else: + node_location = 'last-child' + + children = source.get_children().exclude(id=target.id) + for c in children: + c.move(target, node_location) + content = {'msg': _(f'{source.name} was merged successfully with {target.name}')} + source.delete() + return Response(content, status=status.HTTP_200_OK) + except Exception: + content = {'error': True, 'msg': _(f'An error occurred attempting to merge {source.name} with {target.name}')} + return Response(content, status=status.HTTP_400_BAD_REQUEST) + + +class TreeMixin(MergeMixin, FuzzyFilterMixin): + schema = TreeSchema() + model = None + + def get_queryset(self): + root = self.request.query_params.get('root', None) + tree = self.request.query_params.get('tree', None) + + if root: + if root.isnumeric(): + try: + root = int(root) + except self.model.DoesNotExist: + self.queryset = self.model.objects.none() + if root == 0: + self.queryset = self.model.get_root_nodes() + else: + self.queryset = self.model.objects.get(id=root).get_children() + elif tree: + if tree.isnumeric(): + try: + self.queryset = self.model.objects.get(id=int(tree)).get_descendants_and_self() + except self.model.DoesNotExist: + self.queryset = self.model.objects.none() + else: + return super().get_queryset() + return self.queryset.filter(space=self.request.space).order_by('name') + + @decorators.action(detail=True, url_path='move/(?P[^/.]+)', methods=['PUT'], ) + @decorators.renderer_classes((TemplateHTMLRenderer, JSONRenderer)) + def move(self, request, pk, parent): + self.description = f"Move {self.basename} to be a child of {self.basename} with ID of [int]. Use ID: 0 to move {self.basename} to the root." + if self.model.node_order_by: + node_location = 'sorted' + else: + node_location = 'last' + + try: + child = self.model.objects.get(pk=pk, space=self.request.space) + except (self.model.DoesNotExist): + content = {'error': True, 'msg': _(f'No {self.basename} with id {child} exists')} + return Response(content, status=status.HTTP_404_NOT_FOUND) + + parent = int(parent) + # parent 0 is root of the tree + if parent == 0: + try: + with scopes_disabled(): + child.move(self.model.get_first_root_node(), f'{node_location}-sibling') + content = {'msg': _(f'{child.name} was moved successfully to the root.')} + return Response(content, status=status.HTTP_200_OK) + except (PathOverflow, InvalidMoveToDescendant, InvalidPosition): + content = {'error': True, 'msg': _('An error occurred attempting to move ') + child.name} + return Response(content, status=status.HTTP_400_BAD_REQUEST) + elif parent == child.id: + content = {'error': True, 'msg': _('Cannot move an object to itself!')} + return Response(content, status=status.HTTP_403_FORBIDDEN) + + try: + parent = self.model.objects.get(pk=parent, space=self.request.space) + except (self.model.DoesNotExist): + content = {'error': True, 'msg': _(f'No {self.basename} with id {parent} exists')} + return Response(content, status=status.HTTP_404_NOT_FOUND) + + try: + with scopes_disabled(): + child.move(parent, f'{node_location}-child') + content = {'msg': _(f'{child.name} was moved successfully to parent {parent.name}')} + return Response(content, status=status.HTTP_200_OK) + except (PathOverflow, InvalidMoveToDescendant, InvalidPosition): + content = {'error': True, 'msg': _('An error occurred attempting to move ') + child.name} + return Response(content, status=status.HTTP_400_BAD_REQUEST) + + class UserNameViewSet(viewsets.ReadOnlyModelViewSet): """ list: @@ -144,6 +335,7 @@ class SyncLogViewSet(viewsets.ReadOnlyModelViewSet): queryset = SyncLog.objects serializer_class = SyncLogSerializer permission_classes = [CustomIsAdmin, ] + pagination_class = DefaultPagination def get_queryset(self): return self.queryset.filter(sync__space=self.request.space) @@ -173,48 +365,42 @@ class SupermarketCategoryRelationViewSet(viewsets.ModelViewSet, StandardFilterMi queryset = SupermarketCategoryRelation.objects serializer_class = SupermarketCategoryRelationSerializer permission_classes = [CustomIsUser] + pagination_class = DefaultPagination def get_queryset(self): - self.queryset = self.queryset.filter(supermarket__space=self.request.space) + self.queryset = self.queryset.filter(supermarket__space=self.request.space).order_by('order') return super().get_queryset() -class KeywordViewSet(viewsets.ModelViewSet, StandardFilterMixin): - """ - list: - optional parameters - - - **query**: search keywords for a string contained - in the keyword name (case in-sensitive) - - **limit**: limits the amount of returned results - """ +class KeywordViewSet(viewsets.ModelViewSet, TreeMixin): queryset = Keyword.objects + model = Keyword serializer_class = KeywordSerializer permission_classes = [CustomIsUser] - - def get_queryset(self): - self.queryset = self.queryset.filter(space=self.request.space) - return super().get_queryset() + pagination_class = DefaultPagination -class UnitViewSet(viewsets.ModelViewSet, StandardFilterMixin): +class UnitViewSet(viewsets.ModelViewSet, MergeMixin, FuzzyFilterMixin): queryset = Unit.objects + model = Unit serializer_class = UnitSerializer permission_classes = [CustomIsUser] - - def get_queryset(self): - self.queryset = self.queryset.filter(space=self.request.space) - return super().get_queryset() + pagination_class = DefaultPagination -class FoodViewSet(viewsets.ModelViewSet, StandardFilterMixin): +class FoodViewSet(viewsets.ModelViewSet, TreeMixin): queryset = Food.objects + model = Food serializer_class = FoodSerializer permission_classes = [CustomIsUser] + pagination_class = DefaultPagination - def get_queryset(self): - self.queryset = self.queryset.filter(space=self.request.space) - return super().get_queryset() + def destroy(self, *args, **kwargs): + try: + return (super().destroy(self, *args, **kwargs)) + except ProtectedError as e: + content = {'error': True, 'msg': e.args[0]} + return Response(content, status=status.HTTP_403_FORBIDDEN) class RecipeBookViewSet(viewsets.ModelViewSet, StandardFilterMixin): @@ -241,7 +427,7 @@ class RecipeBookEntryViewSet(viewsets.ModelViewSet, viewsets.GenericViewSet): permission_classes = [CustomIsOwner] def get_queryset(self): - queryset = self.queryset.filter(Q(book__created_by=self.request.user) | Q(book__shared=self.request.user)).filter(book__space=self.request.space) + queryset = self.queryset.filter(Q(book__created_by=self.request.user) | Q(book__shared=self.request.user)).filter(book__space=self.request.space).distinct() recipe_id = self.request.query_params.get('recipe', None) if recipe_id is not None: @@ -321,66 +507,18 @@ class RecipePagination(PageNumberPagination): page_size_query_param = 'page_size' max_page_size = 100 + def paginate_queryset(self, queryset, request, view=None): + self.facets = get_facet(qs=queryset, request=request) + return super().paginate_queryset(queryset, request, view) -# TODO move to separate class to cleanup -class RecipeSchema(AutoSchema): - - def get_path_parameters(self, path, method): - if not is_list_view(path, method, self.view): - return super(RecipeSchema, self).get_path_parameters(path, method) - - parameters = super().get_path_parameters(path, method) - parameters.append({ - "name": 'query', "in": "query", "required": False, - "description": 'Query string matched (fuzzy) against recipe name. In the future also fulltext search.', - 'schema': {'type': 'string', }, - }) - parameters.append({ - "name": 'keywords', "in": "query", "required": False, - "description": 'Id of keyword a recipe should have. For multiple repeat parameter.', - 'schema': {'type': 'string', }, - }) - parameters.append({ - "name": 'foods', "in": "query", "required": False, - "description": 'Id of food a recipe should have. For multiple repeat parameter.', - 'schema': {'type': 'string', }, - }) - parameters.append({ - "name": 'books', "in": "query", "required": False, - "description": 'Id of book a recipe should have. For multiple repeat parameter.', - 'schema': {'type': 'string', }, - }) - parameters.append({ - "name": 'keywords_or', "in": "query", "required": False, - "description": 'If recipe should have all (AND) or any (OR) of the provided keywords.', - 'schema': {'type': 'string', }, - }) - parameters.append({ - "name": 'foods_or', "in": "query", "required": False, - "description": 'If recipe should have all (AND) or any (OR) any of the provided foods.', - 'schema': {'type': 'string', }, - }) - parameters.append({ - "name": 'books_or', "in": "query", "required": False, - "description": 'If recipe should be in all (AND) or any (OR) any of the provided books.', - 'schema': {'type': 'string', }, - }) - parameters.append({ - "name": 'internal', "in": "query", "required": False, - "description": 'true or false. If only internal recipes should be returned or not.', - 'schema': {'type': 'string', }, - }) - parameters.append({ - "name": 'random', "in": "query", "required": False, - "description": 'true or false. returns the results in randomized order.', - 'schema': {'type': 'string', }, - }) - parameters.append({ - "name": 'new', "in": "query", "required": False, - "description": 'true or false. returns new results first in search results', - 'schema': {'type': 'string', }, - }) - return parameters + def get_paginated_response(self, data): + return Response(OrderedDict([ + ('count', self.page.paginator.count), + ('next', self.get_next_link()), + ('previous', self.get_previous_link()), + ('results', data), + ('facets', self.facets) + ])) class RecipeViewSet(viewsets.ModelViewSet): @@ -388,7 +526,6 @@ class RecipeViewSet(viewsets.ModelViewSet): serializer_class = RecipeSerializer # TODO split read and write permission for meal plan guest permission_classes = [CustomIsShare | CustomIsGuest] - pagination_class = RecipePagination schema = RecipeSchema() @@ -420,9 +557,7 @@ class RecipeViewSet(viewsets.ModelViewSet): if obj.get_space() != request.space: raise PermissionDenied(detail='You do not have the required permission to perform this action', code=403) - serializer = self.serializer_class( - obj, data=request.data, partial=True - ) + serializer = self.serializer_class(obj, data=request.data, partial=True) if self.request.space.demo: raise PermissionDenied(detail='Not available in demo', code=None) @@ -430,8 +565,11 @@ class RecipeViewSet(viewsets.ModelViewSet): if serializer.is_valid(): serializer.save() - img, filetype = handle_image(request, obj.image) - obj.image = File(img, name=f'{uuid.uuid4()}_{obj.pk}{filetype}') + if serializer.validated_data == {}: + obj.image = None + else: + img, filetype = handle_image(request, obj.image) + obj.image = File(img, name=f'{uuid.uuid4()}_{obj.pk}{filetype}') obj.save() return Response(serializer.data) @@ -446,7 +584,7 @@ class ShoppingListRecipeViewSet(viewsets.ModelViewSet): def get_queryset(self): return self.queryset.filter( Q(shoppinglist__created_by=self.request.user) | Q(shoppinglist__shared=self.request.user)).filter( - shoppinglist__space=self.request.space).all() + shoppinglist__space=self.request.space).distinct().all() class ShoppingListEntryViewSet(viewsets.ModelViewSet): @@ -457,7 +595,7 @@ class ShoppingListEntryViewSet(viewsets.ModelViewSet): def get_queryset(self): return self.queryset.filter( Q(shoppinglist__created_by=self.request.user) | Q(shoppinglist__shared=self.request.user)).filter( - shoppinglist__space=self.request.space).all() + shoppinglist__space=self.request.space).distinct().all() class ShoppingListViewSet(viewsets.ModelViewSet): @@ -483,35 +621,31 @@ class ViewLogViewSet(viewsets.ModelViewSet): queryset = ViewLog.objects serializer_class = ViewLogSerializer permission_classes = [CustomIsOwner] + pagination_class = DefaultPagination def get_queryset(self): - self.queryset = self.queryset.filter(created_by=self.request.user).filter(space=self.request.space).all() - if self.request.method == 'GET': - return self.queryset[:5] - else: - return self.queryset + # working backwards from the test - this is supposed to be limited to user view logs only?? + return self.queryset.filter(created_by=self.request.user).filter(space=self.request.space) class CookLogViewSet(viewsets.ModelViewSet): queryset = CookLog.objects serializer_class = CookLogSerializer - permission_classes = [CustomIsOwner] + permission_classes = [CustomIsOwner] # CustomIsShared? since ratings are in the cooklog? + pagination_class = DefaultPagination def get_queryset(self): - self.queryset = self.queryset.filter(created_by=self.request.user).filter(space=self.request.space).all() - if self.request.method == 'GET': - return self.queryset[:5] - else: - return self.queryset + return self.queryset.filter(space=self.request.space) class ImportLogViewSet(viewsets.ModelViewSet): queryset = ImportLog.objects serializer_class = ImportLogSerializer permission_classes = [CustomIsUser] + pagination_class = DefaultPagination def get_queryset(self): - return self.queryset.filter(space=self.request.space).all() + return self.queryset.filter(space=self.request.space) class BookmarkletImportViewSet(viewsets.ModelViewSet): @@ -534,8 +668,17 @@ class UserFileViewSet(viewsets.ModelViewSet, StandardFilterMixin): return super().get_queryset() -# -------------- non django rest api views -------------------- +class AutomationViewSet(viewsets.ModelViewSet, StandardFilterMixin): + queryset = Automation.objects + serializer_class = AutomationSerializer + permission_classes = [CustomIsUser] + def get_queryset(self): + self.queryset = self.queryset.filter(space=self.request.space).all() + return super().get_queryset() + + +# -------------- non django rest api views -------------------- def get_recipe_provider(recipe): if recipe.storage.method == Storage.DROPBOX: return Dropbox @@ -719,11 +862,11 @@ def recipe_from_source(request): }, status=400) else: - return JsonResponse({"recipe_json": get_from_scraper(scrape, request.space)}) + return JsonResponse({"recipe_json": get_from_scraper(scrape, request)}) elif (mode == 'source') or (mode == 'url' and auto == 'false'): if not data or data == 'undefined': data = requests.get(url, headers=HEADERS).content - recipe_json, recipe_tree, recipe_html, images = get_recipe_from_source(data, url, request.space) + recipe_json, recipe_tree, recipe_html, images = get_recipe_from_source(data, url, request) if len(recipe_tree) == 0 and len(recipe_json) == 0: return JsonResponse( { @@ -759,7 +902,9 @@ def get_backup(request): @group_required('user') def ingredient_from_string(request): text = request.POST['text'] - amount, unit, food, note = parse(text) + + ingredient_parser = IngredientParser(request, False) + amount, unit, food, note = ingredient_parser.parse(text) return JsonResponse( { @@ -770,3 +915,15 @@ def ingredient_from_string(request): }, status=200 ) + + +@group_required('user') +def get_facets(request): + key = request.GET['hash'] + + return JsonResponse( + { + 'facets': get_facet(request=request, use_cache=False, hash_key=key), + }, + status=200 + ) diff --git a/cookbook/views/data.py b/cookbook/views/data.py index 8e3d9d55..4ed41c40 100644 --- a/cookbook/views/data.py +++ b/cookbook/views/data.py @@ -13,11 +13,12 @@ from django.urls import reverse from django.utils.translation import gettext as _ from django.utils.translation import ngettext from django_tables2 import RequestConfig -from PIL import Image, UnidentifiedImageError +from PIL import UnidentifiedImageError from requests.exceptions import MissingSchema from cookbook.forms import BatchEditForm, SyncForm from cookbook.helper.image_processing import handle_image +from cookbook.helper.ingredient_parser import IngredientParser from cookbook.helper.permission_helper import group_required, has_group_permission from cookbook.helper.recipe_url_import import parse_cooktime from cookbook.models import (Comment, Food, Ingredient, Keyword, Recipe, @@ -149,24 +150,19 @@ def import_url(request): recipe.steps.add(step) for kw in data['keywords']: - if k := Keyword.objects.filter(name=kw['text'], space=request.space).first(): - recipe.keywords.add(k) - elif data['all_keywords']: - k = Keyword.objects.create(name=kw['text'], space=request.space) - recipe.keywords.add(k) + k, created = Keyword.objects.get_or_create(name=kw['text'], space=request.space) + recipe.keywords.add(k) + ingredient_parser = IngredientParser(request, True) for ing in data['recipeIngredient']: - ingredient = Ingredient(space=request.space,) + ingredient = Ingredient(space=request.space, ) - if ing['ingredient']['text'] != '': - ingredient.food, f_created = Food.objects.get_or_create( - name=ing['ingredient']['text'].strip(), space=request.space - ) + if food_text := ing['ingredient']['text'].strip(): + ingredient.food = ingredient_parser.get_food(food_text) - if ing['unit'] and ing['unit']['text'] != '': - ingredient.unit, u_created = Unit.objects.get_or_create( - name=ing['unit']['text'].strip(), space=request.space - ) + if ing['unit']: + if unit_text := ing['unit']['text'].strip(): + ingredient.unit = ingredient_parser.get_unit(unit_text) # TODO properly handle no_amount recipes if isinstance(ing['amount'], str): diff --git a/cookbook/views/delete.py b/cookbook/views/delete.py index cac4250b..bcd57cea 100644 --- a/cookbook/views/delete.py +++ b/cookbook/views/delete.py @@ -9,7 +9,7 @@ from django.views.generic import DeleteView from cookbook.helper.permission_helper import (GroupRequiredMixin, OwnerRequiredMixin, group_required) -from cookbook.models import (Comment, InviteLink, Keyword, MealPlan, Recipe, +from cookbook.models import (Comment, InviteLink, MealPlan, Recipe, RecipeBook, RecipeBookEntry, RecipeImport, Storage, Sync) from cookbook.provider.dropbox import Dropbox @@ -73,16 +73,16 @@ class SyncDelete(GroupRequiredMixin, DeleteView): return context -class KeywordDelete(GroupRequiredMixin, DeleteView): - groups_required = ['user'] - template_name = "generic/delete_template.html" - model = Keyword - success_url = reverse_lazy('list_keyword') +# class KeywordDelete(GroupRequiredMixin, DeleteView): +# groups_required = ['user'] +# template_name = "generic/delete_template.html" +# model = Keyword +# success_url = reverse_lazy('list_keyword') - def get_context_data(self, **kwargs): - context = super(KeywordDelete, self).get_context_data(**kwargs) - context['title'] = _("Keyword") - return context +# def get_context_data(self, **kwargs): +# context = super(KeywordDelete, self).get_context_data(**kwargs) +# context['title'] = _("Keyword") +# return context class StorageDelete(GroupRequiredMixin, DeleteView): diff --git a/cookbook/views/edit.py b/cookbook/views/edit.py index 241ea960..214c20aa 100644 --- a/cookbook/views/edit.py +++ b/cookbook/views/edit.py @@ -4,20 +4,20 @@ from django.contrib import messages from django.db.models import Q from django.http import HttpResponseRedirect from django.shortcuts import get_object_or_404, render -from django.urls import reverse, reverse_lazy +from django.urls import reverse from django.utils.translation import gettext as _ from django.views.generic import UpdateView from django.views.generic.edit import FormMixin from django_scopes import scopes_disabled -from cookbook.forms import (CommentForm, ExternalRecipeForm, FoodForm, - FoodMergeForm, KeywordForm, MealPlanForm, - RecipeBookForm, StorageForm, SyncForm, - UnitMergeForm) +from cookbook.forms import (CommentForm, ExternalRecipeForm, + MealPlanForm, + StorageForm, SyncForm, + ) from cookbook.helper.permission_helper import (GroupRequiredMixin, OwnerRequiredMixin, group_required) -from cookbook.models import (Comment, Food, Ingredient, Keyword, MealPlan, +from cookbook.models import (Comment, Ingredient, MealPlan, MealType, Recipe, RecipeBook, RecipeImport, Storage, Sync, UserPreference) from cookbook.provider.dropbox import Dropbox @@ -56,9 +56,7 @@ def internal_recipe_update(request, pk): recipe_instance = get_object_or_404(Recipe, pk=pk, space=request.space) - return render( - request, 'forms/edit_internal_recipe.html', {'recipe': recipe_instance} - ) + return render(request, 'forms/edit_internal_recipe.html', {'recipe': recipe_instance}) class SpaceFormMixing(FormMixin): @@ -86,38 +84,38 @@ class SyncUpdate(GroupRequiredMixin, UpdateView, SpaceFormMixing): return context -class KeywordUpdate(GroupRequiredMixin, UpdateView): - groups_required = ['user'] - template_name = "generic/edit_template.html" - model = Keyword - form_class = KeywordForm +# class KeywordUpdate(GroupRequiredMixin, UpdateView): +# groups_required = ['user'] +# template_name = "generic/edit_template.html" +# model = Keyword +# form_class = KeywordForm - # TODO add msg box +# # TODO add msg box - def get_success_url(self): - return reverse('edit_keyword', kwargs={'pk': self.object.pk}) +# def get_success_url(self): +# return reverse('list_keyword') - def get_context_data(self, **kwargs): - context = super().get_context_data(**kwargs) - context['title'] = _("Keyword") - return context +# def get_context_data(self, **kwargs): +# context = super().get_context_data(**kwargs) +# context['title'] = _("Keyword") +# return context -class FoodUpdate(GroupRequiredMixin, UpdateView, SpaceFormMixing): - groups_required = ['user'] - template_name = "generic/edit_template.html" - model = Food - form_class = FoodForm +# class FoodUpdate(GroupRequiredMixin, UpdateView, SpaceFormMixing): +# groups_required = ['user'] +# template_name = "generic/edit_template.html" +# model = Food +# form_class = FoodForm - # TODO add msg box +# # TODO add msg box - def get_success_url(self): - return reverse('edit_food', kwargs={'pk': self.object.pk}) +# def get_success_url(self): +# return reverse('edit_food', kwargs={'pk': self.object.pk}) - def get_context_data(self, **kwargs): - context = super(FoodUpdate, self).get_context_data(**kwargs) - context['title'] = _("Food") - return context +# def get_context_data(self, **kwargs): +# context = super(FoodUpdate, self).get_context_data(**kwargs) +# context['title'] = _("Food") +# return context @group_required('admin') @@ -200,20 +198,6 @@ class ImportUpdate(GroupRequiredMixin, UpdateView): return context -class RecipeBookUpdate(OwnerRequiredMixin, UpdateView, SpaceFormMixing): - template_name = "generic/edit_template.html" - model = RecipeBook - form_class = RecipeBookForm - - def get_success_url(self): - return reverse('view_books') - - def get_context_data(self, **kwargs): - context = super(RecipeBookUpdate, self).get_context_data(**kwargs) - context['title'] = _("Recipe Book") - return context - - class MealPlanUpdate(OwnerRequiredMixin, UpdateView, SpaceFormMixing): template_name = "generic/edit_template.html" model = MealPlan @@ -277,50 +261,3 @@ class ExternalRecipeUpdate(GroupRequiredMixin, UpdateView, SpaceFormMixing): 'delete_recipe_source', args=[self.object.pk] ) return context - - -@group_required('user') -def edit_ingredients(request): - if request.method == "POST": - success = False - units_form = UnitMergeForm(request.POST, prefix=UnitMergeForm.prefix, space=request.space) - if units_form.is_valid(): - new_unit = units_form.cleaned_data['new_unit'] - old_unit = units_form.cleaned_data['old_unit'] - if new_unit != old_unit: - with scopes_disabled(): - recipe_ingredients = Ingredient.objects.filter(unit=old_unit).filter(Q(step__recipe__space=request.space) | Q(step__recipe__isnull=True)).all() - for i in recipe_ingredients: - i.unit = new_unit - i.save() - - old_unit.delete() - success = True - messages.add_message(request, messages.SUCCESS, _('Units merged!')) - else: - messages.add_message(request, messages.ERROR, _('Cannot merge with the same object!')) - - food_form = FoodMergeForm(request.POST, prefix=FoodMergeForm.prefix, space=request.space) - if food_form.is_valid(): - new_food = food_form.cleaned_data['new_food'] - old_food = food_form.cleaned_data['old_food'] - if new_food != old_food: - ingredients = Ingredient.objects.filter(food=old_food).filter(Q(step__recipe__space=request.space) | Q(step__recipe__isnull=True)).all() - for i in ingredients: - i.food = new_food - i.save() - - old_food.delete() - success = True - messages.add_message(request, messages.SUCCESS, _('Foods merged!')) - else: - messages.add_message(request, messages.ERROR, _('Cannot merge with the same object!')) - - if success: - units_form = UnitMergeForm(space=request.space) - food_form = FoodMergeForm(space=request.space) - else: - units_form = UnitMergeForm(space=request.space) - food_form = FoodMergeForm(space=request.space) - - return render(request, 'forms/ingredients.html', {'units_form': units_form, 'food_form': food_form}) diff --git a/cookbook/views/import_export.py b/cookbook/views/import_export.py index 8c907071..0a8e83e1 100644 --- a/cookbook/views/import_export.py +++ b/cookbook/views/import_export.py @@ -10,7 +10,8 @@ from django.utils.translation import gettext as _ from cookbook.forms import ExportForm, ImportForm, ImportExportBase from cookbook.helper.permission_helper import group_required -from cookbook.integration.Pepperplate import Pepperplate +from cookbook.integration.cookbookapp import CookBookApp +from cookbook.integration.pepperplate import Pepperplate from cookbook.integration.cheftap import ChefTap from cookbook.integration.chowdown import Chowdown from cookbook.integration.default import Default @@ -20,6 +21,7 @@ from cookbook.integration.mealmaster import MealMaster from cookbook.integration.nextcloud_cookbook import NextcloudCookbook from cookbook.integration.openeats import OpenEats from cookbook.integration.paprika import Paprika +from cookbook.integration.plantoeat import Plantoeat from cookbook.integration.recipekeeper import RecipeKeeper from cookbook.integration.recettetek import RecetteTek from cookbook.integration.recipesage import RecipeSage @@ -59,11 +61,15 @@ def get_integration(request, export_type): return MealMaster(request, export_type) if export_type == ImportExportBase.OPENEATS: return OpenEats(request, export_type) + if export_type == ImportExportBase.PLANTOEAT: + return Plantoeat(request, export_type) + if export_type == ImportExportBase.COOKBOOKAPP: + return CookBookApp(request, export_type) @group_required('user') def import_recipe(request): - if request.space.max_recipes != 0 and Recipe.objects.filter(space=request.space).count() >= request.space.max_recipes: # TODO move to central helper function + if request.space.max_recipes != 0 and Recipe.objects.filter(space=request.space).count() >= request.space.max_recipes: # TODO move to central helper function messages.add_message(request, messages.WARNING, _('You have reached the maximum number of recipes for your space.')) return HttpResponseRedirect(reverse('index')) @@ -73,7 +79,7 @@ def import_recipe(request): if request.method == "POST": form = ImportForm(request.POST, request.FILES) - if form.is_valid(): + if form.is_valid() and request.FILES != {}: try: integration = get_integration(request, form.cleaned_data['type']) diff --git a/cookbook/views/lists.py b/cookbook/views/lists.py index 86bc4182..87ceb802 100644 --- a/cookbook/views/lists.py +++ b/cookbook/views/lists.py @@ -1,30 +1,16 @@ from datetime import datetime -from django.db.models import Q -from django.db.models.functions import Lower +from django.db.models import Q, Sum from django.shortcuts import render from django.utils.translation import gettext as _ from django_tables2 import RequestConfig -from cookbook.filters import FoodFilter, ShoppingListFilter +from cookbook.filters import ShoppingListFilter from cookbook.helper.permission_helper import group_required -from cookbook.models import (Food, InviteLink, Keyword, RecipeImport, - ShoppingList, Storage, SyncLog) -from cookbook.tables import (ImportLogTable, IngredientTable, InviteLinkTable, - KeywordTable, RecipeImportTable, - ShoppingListTable, StorageTable) - - -@group_required('user') -def keyword(request): - table = KeywordTable(Keyword.objects.filter(space=request.space).all()) - RequestConfig(request, paginate={'per_page': 25}).configure(table) - - return render( - request, - 'generic/list_template.html', - {'title': _("Keyword"), 'table': table, 'create_url': 'new_keyword'} - ) +from cookbook.models import (InviteLink, RecipeImport, + ShoppingList, Storage, SyncLog, UserFile) +from cookbook.tables import (ImportLogTable, InviteLinkTable, + RecipeImportTable, ShoppingListTable, StorageTable) @group_required('admin') @@ -54,26 +40,24 @@ def recipe_import(request): ) -@group_required('user') -def food(request): - f = FoodFilter(request.GET, queryset=Food.objects.filter(space=request.space).all().order_by('pk')) +# @group_required('user') +# def food(request): +# f = FoodFilter(request.GET, queryset=Food.objects.filter(space=request.space).all().order_by('pk')) - table = IngredientTable(f.qs) - RequestConfig(request, paginate={'per_page': 25}).configure(table) +# table = IngredientTable(f.qs) +# RequestConfig(request, paginate={'per_page': 25}).configure(table) - return render( - request, - 'generic/list_template.html', - {'title': _("Ingredients"), 'table': table, 'filter': f} - ) +# return render( +# request, +# 'generic/list_template.html', +# {'title': _("Ingredients"), 'table': table, 'filter': f} +# ) @group_required('user') def shopping_list(request): - f = ShoppingListFilter(request.GET, queryset=ShoppingList.objects.filter( - Q(created_by=request.user) | - Q(shared=request.user), space=request.space - ).all().order_by('finished', 'created_at')) + f = ShoppingListFilter(request.GET, queryset=ShoppingList.objects.filter(space=request.space).filter( + Q(created_by=request.user) | Q(shared=request.user)).distinct().all().order_by('finished', 'created_at')) table = ShoppingListTable(f.qs) RequestConfig(request, paginate={'per_page': 25}).configure(table) @@ -108,7 +92,8 @@ def storage(request): @group_required('admin') def invite_link(request): - table = InviteLinkTable(InviteLink.objects.filter(valid_until__gte=datetime.today(), used_by=None, space=request.space).all()) + table = InviteLinkTable( + InviteLink.objects.filter(valid_until__gte=datetime.today(), used_by=None, space=request.space).all()) RequestConfig(request, paginate={'per_page': 25}).configure(table) return render(request, 'generic/list_template.html', { @@ -116,3 +101,137 @@ def invite_link(request): 'table': table, 'create_url': 'new_invite_link' }) + + +@group_required('user') +def keyword(request): + return render( + request, + 'generic/model_template.html', + { + "title": _("Keywords"), + "config": { + 'model': "KEYWORD", + 'recipe_param': 'keywords' + } + } + ) + + +@group_required('user') +def food(request): + # recipe-param is the name of the parameters used when filtering recipes by this attribute + # model-name is the models.js name of the model, probably ALL-CAPS + return render( + request, + 'generic/model_template.html', + { + "title": _("Foods"), + "config": { + 'model': "FOOD", # *REQUIRED* name of the model in models.js + 'recipe_param': 'foods' # *OPTIONAL* name of the listRecipes parameter if filtering on this attribute + } + } + ) + + +@group_required('user') +def unit(request): + # recipe-param is the name of the parameters used when filtering recipes by this attribute + # model-name is the models.js name of the model, probably ALL-CAPS + return render( + request, + 'generic/model_template.html', + { + "title": _("Units"), + "config": { + 'model': "UNIT", # *REQUIRED* name of the model in models.js + 'recipe_param': 'units', # *OPTIONAL* name of the listRecipes parameter if filtering on this attribute + } + } + ) + + +@group_required('user') +def supermarket(request): + # recipe-param is the name of the parameters used when filtering recipes by this attribute + # model-name is the models.js name of the model, probably ALL-CAPS + return render( + request, + 'generic/model_template.html', + { + "title": _("Supermarkets"), + "config": { + 'model': "SUPERMARKET", # *REQUIRED* name of the model in models.js + } + } + ) + + +@group_required('user') +def supermarket_category(request): + # recipe-param is the name of the parameters used when filtering recipes by this attribute + # model-name is the models.js name of the model, probably ALL-CAPS + return render( + request, + 'generic/model_template.html', + { + "title": _("Shopping Categories"), + "config": { + 'model': "SHOPPING_CATEGORY", # *REQUIRED* name of the model in models.js + } + } + ) + + +@group_required('user') +def automation(request): + # recipe-param is the name of the parameters used when filtering recipes by this attribute + # model-name is the models.js name of the model, probably ALL-CAPS + return render( + request, + 'generic/model_template.html', + { + "title": _("Automations"), + "config": { + 'model': "AUTOMATION", # *REQUIRED* name of the model in models.js + } + } + ) + + +@group_required('user') +def user_file(request): + try: + current_file_size_mb = UserFile.objects.filter(space=request.space).aggregate(Sum('file_size_kb'))[ + 'file_size_kb__sum'] / 1000 + except TypeError: + current_file_size_mb = 0 + + return render( + request, + 'generic/model_template.html', + { + "title": _("Files"), + "config": { + 'model': "USERFILE", # *REQUIRED* name of the model in models.js + }, + 'current_file_size_mb': current_file_size_mb, 'max_file_size_mb': request.space.max_file_storage_mb + } + ) + + +@group_required('user') +def shopping_list_new(request): + # recipe-param is the name of the parameters used when filtering recipes by this attribute + # model-name is the models.js name of the model, probably ALL-CAPS + return render( + request, + 'generic/checklist_template.html', + { + "title": _("New Shopping List"), + "config": { + 'model': "SHOPPING_LIST", # *REQUIRED* name of the model in models.js + } + } + ) diff --git a/cookbook/views/new.py b/cookbook/views/new.py index a0f01496..d0ff94c5 100644 --- a/cookbook/views/new.py +++ b/cookbook/views/new.py @@ -12,11 +12,11 @@ from django.urls import reverse, reverse_lazy from django.utils.translation import gettext as _ from django.views.generic import CreateView -from cookbook.forms import (ImportRecipeForm, InviteLinkForm, KeywordForm, - MealPlanForm, RecipeBookForm, Storage, StorageForm) +from cookbook.forms import (ImportRecipeForm, InviteLinkForm, + MealPlanForm, Storage, StorageForm) from cookbook.helper.permission_helper import (GroupRequiredMixin, group_required) -from cookbook.models import (InviteLink, Keyword, MealPlan, MealType, Recipe, +from cookbook.models import (InviteLink, MealPlan, MealType, Recipe, RecipeBook, RecipeImport, ShareLink, Step, UserPreference) from cookbook.views.edit import SpaceFormMixing @@ -28,7 +28,7 @@ class RecipeCreate(GroupRequiredMixin, CreateView): fields = ('name',) def form_valid(self, form): - if self.request.space.max_recipes != 0 and Recipe.objects.filter(space=self.request.space).count() >= self.request.space.max_recipes: # TODO move to central helper function + if self.request.space.max_recipes != 0 and Recipe.objects.filter(space=self.request.space).count() >= self.request.space.max_recipes: # TODO move to central helper function messages.add_message(self.request, messages.WARNING, _('You have reached the maximum number of recipes for your space.')) return HttpResponseRedirect(reverse('index')) @@ -60,23 +60,22 @@ def share_link(request, pk): return HttpResponseRedirect(reverse('view_recipe', kwargs={'pk': pk, 'share': link.uuid})) -class KeywordCreate(GroupRequiredMixin, CreateView): - groups_required = ['user'] - template_name = "generic/new_template.html" - model = Keyword - form_class = KeywordForm - success_url = reverse_lazy('list_keyword') +# class KeywordCreate(GroupRequiredMixin, CreateView): +# groups_required = ['user'] +# template_name = "generic/new_template.html" +# model = Keyword +# form_class = KeywordForm +# success_url = reverse_lazy('list_keyword') - def form_valid(self, form): - obj = form.save(commit=False) - obj.space = self.request.space - obj.save() - return HttpResponseRedirect(reverse('edit_keyword', kwargs={'pk': obj.pk})) +# def form_valid(self, form): +# form.cleaned_data['space'] = self.request.space +# form.save() +# return HttpResponseRedirect(reverse('list_keyword')) - def get_context_data(self, **kwargs): - context = super(KeywordCreate, self).get_context_data(**kwargs) - context['title'] = _("Keyword") - return context +# def get_context_data(self, **kwargs): +# context = super(KeywordCreate, self).get_context_data(**kwargs) +# context['title'] = _("Keyword") +# return context class StorageCreate(GroupRequiredMixin, CreateView): @@ -137,26 +136,6 @@ def create_new_external_recipe(request, import_id): return render(request, 'forms/edit_import_recipe.html', {'form': form}) -class RecipeBookCreate(GroupRequiredMixin, CreateView, SpaceFormMixing): - groups_required = ['user'] - template_name = "generic/new_template.html" - model = RecipeBook - form_class = RecipeBookForm - success_url = reverse_lazy('view_books') - - def form_valid(self, form): - obj = form.save(commit=False) - obj.created_by = self.request.user - obj.space = self.request.space - obj.save() - return HttpResponseRedirect(reverse('view_books')) - - def get_context_data(self, **kwargs): - context = super(RecipeBookCreate, self).get_context_data(**kwargs) - context['title'] = _("Recipe Book") - return context - - class MealPlanCreate(GroupRequiredMixin, CreateView, SpaceFormMixing): groups_required = ['user'] template_name = "generic/new_template.html" diff --git a/cookbook/views/telegram.py b/cookbook/views/telegram.py index 25ea3ee9..9c73ba7b 100644 --- a/cookbook/views/telegram.py +++ b/cookbook/views/telegram.py @@ -3,12 +3,12 @@ import json import requests from django.db.models import Q from django.http import JsonResponse -from django.shortcuts import render, get_object_or_404 +from django.shortcuts import get_object_or_404 from django.views.decorators.csrf import csrf_exempt -from cookbook.helper.ingredient_parser import parse, get_unit, get_food +from cookbook.helper.ingredient_parser import IngredientParser from cookbook.helper.permission_helper import group_required -from cookbook.models import TelegramBot, ShoppingList, ShoppingListEntry, Food, Unit +from cookbook.models import TelegramBot, ShoppingList, ShoppingListEntry @group_required('user') @@ -49,16 +49,19 @@ def hook(request, token): if not sl: sl = ShoppingList.objects.create(created_by=tb.created_by, space=tb.space) - amount, unit, ingredient, note = parse(data['message']['text']) - f = get_food(ingredient, tb.space) - u = get_unit(unit, tb.space) + request.space = tb.space # TODO this is likely a bad idea. Verify and test + request.user = tb.created_by + ingredient_parser = IngredientParser(request, False) + amount, unit, ingredient, note = ingredient_parser.parse(data['message']['text']) + f = ingredient_parser.get_food(ingredient) + u = ingredient_parser.get_unit(unit) sl.entries.add( ShoppingListEntry.objects.create( food=f, unit=u, amount=amount ) ) return JsonResponse({'data': data['message']['text']}) - except: + except Exception: pass return JsonResponse({}) diff --git a/cookbook/views/views.py b/cookbook/views/views.py index d56222bf..0ccd5461 100644 --- a/cookbook/views/views.py +++ b/cookbook/views/views.py @@ -3,7 +3,6 @@ import re from datetime import datetime from uuid import UUID -from allauth.account.forms import SignupForm from django.conf import settings from django.contrib import messages from django.contrib.auth import update_session_auth_hash @@ -12,26 +11,25 @@ from django.contrib.auth.forms import PasswordChangeForm from django.contrib.auth.models import Group from django.contrib.auth.password_validation import validate_password from django.core.exceptions import ValidationError -from django.db import IntegrityError from django.db.models import Avg, Q, Sum from django.http import HttpResponseRedirect, JsonResponse from django.shortcuts import get_object_or_404, render, redirect from django.urls import reverse, reverse_lazy from django.utils import timezone from django.utils.translation import gettext as _ -from django_scopes import scopes_disabled, scope +from django_scopes import scopes_disabled from django_tables2 import RequestConfig from rest_framework.authtoken.models import Token from cookbook.filters import RecipeFilter -from cookbook.forms import (CommentForm, Recipe, RecipeBookEntryForm, User, +from cookbook.forms import (CommentForm, Recipe, User, UserCreateForm, UserNameForm, UserPreference, - UserPreferenceForm, SpaceJoinForm, SpaceCreateForm, AllAuthSignupForm) -from cookbook.helper.ingredient_parser import parse + UserPreferenceForm, SpaceJoinForm, SpaceCreateForm, + SearchPreferenceForm) from cookbook.helper.permission_helper import group_required, share_link_valid, has_group_permission from cookbook.models import (Comment, CookLog, InviteLink, MealPlan, - RecipeBook, RecipeBookEntry, ViewLog, ShoppingList, Space, Keyword, RecipeImport, Unit, - Food, UserFile, ShareLink) + ViewLog, ShoppingList, Space, Keyword, RecipeImport, Unit, + Food, UserFile, ShareLink, SearchPreference, SearchFields) from cookbook.tables import (CookLogTable, RecipeTable, RecipeTableSmall, ViewLogTable, InviteLinkTable) from cookbook.views.data import Object @@ -57,15 +55,14 @@ def index(request): return HttpResponseRedirect(reverse('view_search')) +# TODO need to deprecate def search(request): if has_group_permission(request.user, ('guest',)): if request.user.userpreference.search_style == UserPreference.NEW: return search_v2(request) - f = RecipeFilter(request.GET, queryset=Recipe.objects.filter(space=request.user.userpreference.space).all().order_by('name'), space=request.space) - if request.user.userpreference.search_style == UserPreference.LARGE: table = RecipeTable(f.qs) else: @@ -95,6 +92,7 @@ def search(request): return HttpResponseRedirect(reverse('account_login') + '?next=' + request.path) +@group_required('guest') def search_v2(request): return render(request, 'search.html', {}) @@ -214,20 +212,7 @@ def recipe_view(request, pk, share=None): @group_required('user') def books(request): - book_list = [] - - recipe_books = RecipeBook.objects.filter(Q(created_by=request.user) | Q(shared=request.user), - space=request.space).distinct().all() - - for b in recipe_books: - book_list.append( - { - 'book': b, - 'recipes': RecipeBookEntry.objects.filter(book=b).all() - } - ) - - return render(request, 'books.html', {'book_list': book_list}) + return render(request, 'books.html', {}) @group_required('user') @@ -236,19 +221,13 @@ def meal_plan(request): @group_required('user') -def supermarket(request): - return render(request, 'supermarket.html', {}) +def meal_plan_new(request): + return render(request, 'meal_plan_new.html', {}) @group_required('user') -def files(request): - try: - current_file_size_mb = UserFile.objects.filter(space=request.space).aggregate(Sum('file_size_kb'))[ - 'file_size_kb__sum'] / 1000 - except TypeError: - current_file_size_mb = 0 - return render(request, 'files.html', - {'current_file_size_mb': current_file_size_mb, 'max_file_size_mb': request.space.max_file_storage_mb}) +def supermarket(request): + return render(request, 'supermarket.html', {}) @group_required('user') @@ -304,11 +283,15 @@ def user_settings(request): return redirect('index') up = request.user.userpreference + sp = request.user.searchpreference + search_error = False + active_tab = 'account' user_name_form = UserNameForm(instance=request.user) if request.method == "POST": if 'preference_form' in request.POST: + active_tab = 'preferences' form = UserPreferenceForm(request.POST, prefix='preference') if form.is_valid(): if not up: @@ -332,25 +315,98 @@ def user_settings(request): up.save() - if 'user_name_form' in request.POST: + elif 'user_name_form' in request.POST: user_name_form = UserNameForm(request.POST, prefix='name') if user_name_form.is_valid(): request.user.first_name = user_name_form.cleaned_data['first_name'] request.user.last_name = user_name_form.cleaned_data['last_name'] request.user.save() + elif 'password_form' in request.POST: + password_form = PasswordChangeForm(request.user, request.POST) + if password_form.is_valid(): + user = password_form.save() + update_session_auth_hash(request, user) + + elif 'search_form' in request.POST: + active_tab = 'search' + search_form = SearchPreferenceForm(request.POST, prefix='search') + if search_form.is_valid(): + if not sp: + sp = SearchPreferenceForm(user=request.user) + fields_searched = ( + len(search_form.cleaned_data['icontains']) + + len(search_form.cleaned_data['istartswith']) + + len(search_form.cleaned_data['trigram']) + + len(search_form.cleaned_data['fulltext']) + ) + if fields_searched == 0: + search_form.add_error(None, _('You must select at least one field to search!')) + search_error = True + elif search_form.cleaned_data['search'] in ['websearch', 'raw'] and len(search_form.cleaned_data['fulltext']) == 0: + search_form.add_error('search', _('To use this search method you must select at least one full text search field!')) + search_error = True + elif search_form.cleaned_data['search'] in ['websearch', 'raw'] and len(search_form.cleaned_data['trigram']) > 0: + search_form.add_error(None, _('Fuzzy search is not compatible with this search method!')) + search_error = True + else: + sp.search = search_form.cleaned_data['search'] + sp.lookup = search_form.cleaned_data['lookup'] + sp.unaccent.set(search_form.cleaned_data['unaccent']) + sp.icontains.set(search_form.cleaned_data['icontains']) + sp.istartswith.set(search_form.cleaned_data['istartswith']) + sp.trigram.set(search_form.cleaned_data['trigram']) + sp.fulltext.set(search_form.cleaned_data['fulltext']) + sp.trigram_threshold = search_form.cleaned_data['trigram_threshold'] + + if search_form.cleaned_data['preset'] == 'fuzzy': + sp.search = SearchPreference.SIMPLE + sp.lookup = True + sp.unaccent.set([SearchFields.objects.get(name='Name')]) + sp.icontains.set([SearchFields.objects.get(name='Name')]) + sp.istartswith.clear() + sp.trigram.set([SearchFields.objects.get(name='Name')]) + sp.fulltext.clear() + sp.trigram_threshold = 0.1 + + if search_form.cleaned_data['preset'] == 'precise': + sp.search = SearchPreference.WEB + sp.lookup = True + sp.unaccent.set(SearchFields.objects.all()) + sp.icontains.clear() + sp.istartswith.set([SearchFields.objects.get(name='Name')]) + sp.trigram.clear() + sp.fulltext.set(SearchFields.objects.all()) + sp.trigram_threshold = 0.1 + + sp.save() if up: preference_form = UserPreferenceForm(instance=up) else: preference_form = UserPreferenceForm() + fields_searched = len(sp.icontains.all()) + len(sp.istartswith.all()) + len(sp.trigram.all()) + len(sp.fulltext.all()) + if sp and not search_error and fields_searched > 0: + search_form = SearchPreferenceForm(instance=sp) + elif not search_error: + search_form = SearchPreferenceForm() + if (api_token := Token.objects.filter(user=request.user).first()) is None: api_token = Token.objects.create(user=request.user) + # these fields require postgress - just disable them if postgress isn't available + if not settings.DATABASES['default']['ENGINE'] in ['django.db.backends.postgresql_psycopg2', 'django.db.backends.postgresql']: + search_form.fields['search'].disabled = True + search_form.fields['lookup'].disabled = True + search_form.fields['trigram'].disabled = True + search_form.fields['fulltext'].disabled = True + return render(request, 'settings.html', { 'preference_form': preference_form, 'user_name_form': user_name_form, 'api_token': api_token, + 'search_form': search_form, + 'active_tab': active_tab }) @@ -533,6 +589,10 @@ def markdown_info(request): return render(request, 'markdown_info.html', {}) +def search_info(request): + return render(request, 'search_info.html', {}) + + @group_required('guest') def api_info(request): return render(request, 'api_info.html', {}) @@ -545,7 +605,12 @@ def offline(request): def test(request): if not settings.DEBUG: return HttpResponseRedirect(reverse('index')) - return JsonResponse(parse('Pane (raffermo o secco) 80 g'), safe=False) + + with scopes_disabled(): + result = ShoppingList.objects.filter( + Q(created_by=request.user) | Q(shared=request.user)).filter( + space=request.space).values().distinct() + return JsonResponse(list(result), safe=False, json_dumps_params={'indent': 2}) def test2(request): diff --git a/docs/contribute.md b/docs/contribute.md index 42eda3a0..1c6a0242 100644 --- a/docs/contribute.md +++ b/docs/contribute.md @@ -49,15 +49,6 @@ Navigate to `vue/src/utils/openapi`. Generate the schema using `openapi-generator-cli generate -g typescript-axios -i http://127.0.0.1:8000/openapi/` (replace your dev server url if required) -### Pre-Commit -Some checks and scripts can be automatically run using [pre-commit](https://pre-commit.com/). - -The scripts are configured in the `pre-commit-config.yaml`. To setup the hooks on your development environment install -pre commit using `pip install pre-commit` and run `pre-commit install` to setup the hooks. - -To manually test all hooks (and ignore if files have changed) use `pre-commit run --all-files` - - ## Contribute Documentation The documentation is build from the markdown files in the [docs](https://github.com/vabene1111/recipes/tree/develop/docs) folder of the GitHub repository. diff --git a/docs/features/import_export.md b/docs/features/import_export.md index 90612af2..9155ba91 100644 --- a/docs/features/import_export.md +++ b/docs/features/import_export.md @@ -35,7 +35,8 @@ Overview of the capabilities of the different integrations. | MealMaster | ✔️ | ❌ | ❌ | | RezKonv | ✔️ | ❌ | ❌ | | OpenEats | ✔️ | ❌ | ⌚ | -| OpenEats | ✔️ | ❌ | ✔ | +| Plantoeat | ✔️ | ❌ | ✔ | +| CookBookApp | ✔️ | ⌚ | ❌ | ✔ = implemented, ❌ = not implemented and not possible/planned, ⌚ = not yet implemented @@ -208,4 +209,12 @@ Store the outputted json string in a `.json` file and simply import it using the } ] -``` \ No newline at end of file +``` + +## Plantoeat + +Plan to eat allow to export a text file containing all your recipes. Simply upload that text file to Tandoor to import all recipes + +## CookBookApp + +CookBookApp can export .zip files containing .yml files. Upload the entire ZIP to Tandoor to import all conluded recipes. \ No newline at end of file diff --git a/docs/index.md b/docs/index.md index 346e0d75..595a96a2 100644 --- a/docs/index.md +++ b/docs/index.md @@ -6,6 +6,25 @@
+

This is my personal beta of vabene's excellent recipe app. It includes many of the new features I've developed and should be considered experimental.

+## Experimental Features +- Manual import recipes from URL & Source (HTML/JSON) +- Bookmarklet to import recipes from any website +- Full Text Search +- Hierarchical Keywords + +## Coming Next +- Heirarchical Ingredients +- Faceted Search +- Search filter by rating +- What Can I Make Now? +- Better ingredient/unit matching on import +- Custom word replacement on import (e.g. 'grams' automatically imported as 'g') +- improved ingredient parser (items in parens moved to notes) +- quick view ingredients +- quick view associated recipe +- favorite recipes +

The recipe manager that allows you to manage your ever growing collection of digital recipes.

diff --git a/docs/install/manual.md b/docs/install/manual.md index 35ed5c81..2c27ba93 100644 --- a/docs/install/manual.md +++ b/docs/install/manual.md @@ -19,16 +19,32 @@ Give the user permissions: `chown -R recipes:www-data /var/www/recipes` Create virtual env: `python3.9 -m venv /var/www/recipes` +Install Javascript Tools +```shell +apt install nodejs +npm install --global yarn +``` + ### Install postgresql requirements `sudo apt install libpq-dev postgresql` ###Install project requirements +!!! warning "Update" + Dependencies change with most updates so the following steps need to be re-run with every update or else the application might stop working. + See section **Updating** below + Using binaries from the virtual env: `/var/www/recipes/bin/pip3.9 install -r requirements.txt` +You will also need to install front end requirements and build them. For this navigate to the `./vue`folder and run + +```shell +yarn install +yarn build +``` ## Setup postgresql @@ -66,11 +82,11 @@ Things to edit: Execute `export $(cat /var/www/recipes/.env |grep "^[^#]" | xargs)` to load variables from `/var/www/recipes/.env` -Execute `/python3.9 manage.py migrate` +Execute `bin/python3.9 manage.py migrate` and revert superuser from postgres: `sudo -u postgres psql` and `ALTER USER djangouser WITH NOSUPERUSER;` -Generate static files: `python3.9 manage.py collectstatic` and remember the folder where files have been copied. +Generate static files: `bin/python3.9 manage.py collectstatic` and `bin/python3.9 manage.py collectstatic_js_reverse` and remember the folder where files have been copied. ## Setup web services @@ -129,6 +145,7 @@ server { location / { proxy_set_header Host $http_host; proxy_pass http://unix:/var/www/recipes/recipes.sock; + proxy_set_header X-Forwarded-Proto $scheme; } } ``` @@ -136,3 +153,25 @@ server { *Note*: Enter the correct path in static and proxy_pass lines. Reload nginx : `sudo systemctl reload nginx` + +## Updating +In order to update the application you will need to run the following commands (probably best to put them into a small script). + +```shell +# Update source files +git pull +# load envirtonment variables +export $(cat /var/www/recipes/.env |grep "^[^#]" | xargs) +# migrate database +bin/python3.9 manage.py migrate +# collect static files +bin/python3.9 manage.py collectstatic +bin/python3.9 manage.py collectstatic_js_reverse +# change to frontend directory +cd vue +# install and build frontend +yarn install +yarn build +# restart gunicorn service +sudo systemctl restart gunicorn_recipes +``` diff --git a/node_modules/.yarn-integrity b/node_modules/.yarn-integrity deleted file mode 100644 index 93c98326..00000000 --- a/node_modules/.yarn-integrity +++ /dev/null @@ -1,16 +0,0 @@ -{ - "systemParams": "win32-x64-83", - "modulesFolders": [ - "node_modules" - ], - "flags": [], - "linkedModules": [], - "topLevelPatterns": [ - "vue-cookies@^1.7.4" - ], - "lockfileEntries": { - "vue-cookies@^1.7.4": "https://registry.yarnpkg.com/vue-cookies/-/vue-cookies-1.7.4.tgz#d241d0a0431da0795837651d10b4d73e7c8d3e8d" - }, - "files": [], - "artifacts": {} -} \ No newline at end of file diff --git a/node_modules/vue-cookies/LICENSE b/node_modules/vue-cookies/LICENSE deleted file mode 100644 index a8fc8514..00000000 --- a/node_modules/vue-cookies/LICENSE +++ /dev/null @@ -1,21 +0,0 @@ -MIT License - -Copyright (c) 2016 - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. diff --git a/node_modules/vue-cookies/README.md b/node_modules/vue-cookies/README.md deleted file mode 100644 index fc52b78e..00000000 --- a/node_modules/vue-cookies/README.md +++ /dev/null @@ -1,223 +0,0 @@ -# vue-cookies - -A simple Vue.js plugin for handling browser cookies - -## Installation - -### Browser -``` - - -``` -### Package Managers -``` -npm install vue-cookies --save - -// require -var Vue = require('vue') -Vue.use(require('vue-cookies')) - -// es2015 module -import Vue from 'vue' -import VueCookies from 'vue-cookies' -Vue.use(VueCookies) - -// set default config -Vue.$cookies.config('7d') - -// set global cookie -Vue.$cookies.set('theme','default'); -Vue.$cookies.set('hover-time','1s'); -``` - -## Api - -syntax format: **[this | Vue].$cookies.[method]** - -* Set global config -``` -$cookies.config(expireTimes[,path[, domain[, secure[, sameSite]]]) // default: expireTimes = 1d, path = '/', domain = '', secure = '', sameSite = 'Lax' -``` - -* Set a cookie -``` -$cookies.set(keyName, value[, expireTimes[, path[, domain[, secure[, sameSite]]]]]) //return this -``` -* Get a cookie -``` -$cookies.get(keyName) // return value -``` -* Remove a cookie -``` -$cookies.remove(keyName [, path [, domain]]) // return this -``` -* Exist a `cookie name` -``` -$cookies.isKey(keyName) // return false or true -``` -* Get All `cookie name` -``` -$cookies.keys() // return a array -``` - -## Example Usage - -#### set global config -``` -// 30 day after, expire -Vue.$cookies.config('30d') - -// set secure, only https works -Vue.$cookies.config('7d','','',true) - -// 2019-03-13 expire -this.$cookies.config(new Date(2019,03,13).toUTCString()) - -// 30 day after, expire, '' current path , browser default -this.$cookies.config(60 * 60 * 24 * 30,''); - -``` - -#### support json object -``` -var user = { id:1, name:'Journal',session:'25j_7Sl6xDq2Kc3ym0fmrSSk2xV2XkUkX' }; -this.$cookies.set('user',user); -// print user name -console.log(this.$cookies.get('user').name) -``` - -#### set expire times -**Suppose the current time is : Sat, 11 Mar 2017 12:25:57 GMT** - -**Following equivalence: 1 day after, expire** - -**Support chaining sets together** -``` javascript - // default expire time: 1 day -this.$cookies.set("user_session","25j_7Sl6xDq2Kc3ym0fmrSSk2xV2XkUkX") - // number + d , ignore case - .set("user_session","25j_7Sl6xDq2Kc3ym0fmrSSk2xV2XkUkX","1d") - .set("user_session","25j_7Sl6xDq2Kc3ym0fmrSSk2xV2XkUkX","1D") - // Base of second - .set("user_session","25j_7Sl6xDq2Kc3ym0fmrSSk2xV2XkUkX",60 * 60 * 24) - // input a Date, + 1day - .set("user_session","25j_7Sl6xDq2Kc3ym0fmrSSk2xV2XkUkX", new Date(2017, 03, 12)) - // input a date string, + 1day - .set("user_session","25j_7Sl6xDq2Kc3ym0fmrSSk2xV2XkUkX", "Sat, 13 Mar 2017 12:25:57 GMT") -``` -#### set expire times, input number type - -``` -this.$cookies.set("default_unit_second","input_value",1); // 1 second after, expire -this.$cookies.set("default_unit_second","input_value",60 + 30); // 1 minute 30 second after, expire -this.$cookies.set("default_unit_second","input_value",60 * 60 * 12); // 12 hour after, expire -this.$cookies.set("default_unit_second","input_value",60 * 60 * 24 * 30); // 1 month after, expire -``` - -#### set expire times - end of browser session - -``` -this.$cookies.set("default_unit_second","input_value",0); // end of session - use 0 or "0"! -``` - - -#### set expire times , input string type - -| Unit | full name | -| ----------- | ----------- | -| y | year | -| m | month | -| d | day | -| h | hour | -| min | minute | -| s | second | - -**Unit Names Ignore Case** - -**not support the combination** - -**not support the double value** - -```javascript -this.$cookies.set("token","GH1.1.1689020474.1484362313","60s"); // 60 second after, expire -this.$cookies.set("token","GH1.1.1689020474.1484362313","30MIN"); // 30 minute after, expire, ignore case -this.$cookies.set("token","GH1.1.1689020474.1484362313","24d"); // 24 day after, expire -this.$cookies.set("token","GH1.1.1689020474.1484362313","4m"); // 4 month after, expire -this.$cookies.set("token","GH1.1.1689020474.1484362313","16h"); // 16 hour after, expire -this.$cookies.set("token","GH1.1.1689020474.1484362313","3y"); // 3 year after, expire - -// input date string -this.$cookies.set('token',"GH1.1.1689020474.1484362313", new Date(2017,3,13).toUTCString()); -this.$cookies.set("token","GH1.1.1689020474.1484362313", "Sat, 13 Mar 2017 12:25:57 GMT "); -``` - -#### set expire support date -``` -var date = new Date; -date.setDate(date.getDate() + 1); -this.$cookies.set("token","GH1.1.1689020474.1484362313", date); -``` - -#### set never expire -``` -this.$cookies.set("token","GH1.1.1689020474.1484362313", Infinity); // never expire -// never expire , only -1,Other negative Numbers are invalid -this.$cookies.set("token","GH1.1.1689020474.1484362313", -1); -``` - -#### remove cookie -``` -this.$cookies.set("token",value); // domain.com and *.doamin.com are readable -this.$cookies.remove("token"); // remove token of domain.com and *.doamin.com - -this.$cookies.set("token", value, null, null, "domain.com"); // only domain.com are readable -this.$cookies.remove("token", null, "domain.com"); // remove token of domain.com -``` - -#### set other arguments -``` -// set path -this.$cookies.set("use_path_argument","value","1d","/app"); - -// set domain -this.$cookies.set("use_path_argument","value",null, null, "domain.com"); // default 1 day after,expire - -// set secure -this.$cookies.set("use_path_argument","value",null, null, null,true); - -// set sameSite - should be one of `None`, `Strict` or `Lax`. Read more https://web.dev/samesite-cookies-explained/ -this.$cookies.set("use_path_argument","value",null, null, null, null, "Lax"); -``` - -#### other operation -``` -// check a cookie exist -this.$cookies.isKey("token") - -// get a cookie -this.$cookies.get("token"); - -// remove a cookie -this.$cookies.remove("token"); - -// get all cookie key names, line shows -this.$cookies.keys().join("\n"); - -// remove all cookie -this.$cookies.keys().forEach(cookie => this.$cookies.remove(cookie)) - -// vue-cookies global -[this | Vue].$cookies.[method] - -``` - - -## Warning - -**$cookies key names Cannot be set to ['expires','max-age','path','domain','secure','SameSite']** - - -## License - -[MIT](http://opensource.org/licenses/MIT) -Copyright (c) 2016-present, cmp-cc diff --git a/node_modules/vue-cookies/package.json b/node_modules/vue-cookies/package.json deleted file mode 100644 index 2843b6f9..00000000 --- a/node_modules/vue-cookies/package.json +++ /dev/null @@ -1,29 +0,0 @@ -{ - "name": "vue-cookies", - "version": "1.7.4", - "description": "A simple Vue.js plugin for handling browser cookies", - "main": "vue-cookies.js", - "scripts": { - "test": "echo \"Error: no test specified\" && exit 1" - }, - "repository": { - "type": "git", - "url": "git+https://github.com/cmp-cc/vue-cookies.git" - }, - "keywords":[ - "javascript", - "vue", - "cookie", - "cookies", - "vue-cookies", - "browser", - "session" - ], - "author": "cmp-cc", - "license": "MIT", - "bugs": { - "url": "https://github.com/cmp-cc/vue-cookies/issues" - }, - "homepage": "https://github.com/cmp-cc/vue-cookies#readme", - "typings": "types/index.d.ts" -} diff --git a/node_modules/vue-cookies/sample/welcome.html b/node_modules/vue-cookies/sample/welcome.html deleted file mode 100644 index ae969d18..00000000 --- a/node_modules/vue-cookies/sample/welcome.html +++ /dev/null @@ -1,51 +0,0 @@ - - - - - - - Welcome Username - - -

- -

- Please enter your name : -

-

- Welcome again : {{ welcomeValue }} - - {{deleteUserState}} -

- -
- - - \ No newline at end of file diff --git a/node_modules/vue-cookies/types/index.d.ts b/node_modules/vue-cookies/types/index.d.ts deleted file mode 100644 index 4f185580..00000000 --- a/node_modules/vue-cookies/types/index.d.ts +++ /dev/null @@ -1,44 +0,0 @@ -import _Vue from 'vue'; -import './vue'; - -export declare function install(Vue: typeof _Vue): void; - -export interface VueCookies { - /** - * Set global config - */ - config(expireTimes: string | number | Date, path?: string, domain?: string, secure?: boolean, sameSite?: string): void; - - /** - * Set a cookie - */ - set(keyName: string, value: any, expireTimes?: string | number | Date, - path?: string, domain?: string, secure?: boolean, sameSite?: string): this; - - /** - * Get a cookie - */ - get(keyName: string): any; - - /** - * Remove a cookie - */ - remove(keyName: string, path?: string, domain?: string): this; - - /** - * Exist a cookie name - */ - isKey(keyName: string): boolean; - - /** - * Get All cookie name - */ - keys(): string[]; -} - -declare const _default : { - VueCookies: VueCookies; - install: typeof install; -}; - -export default _default; diff --git a/node_modules/vue-cookies/types/vue.d.ts b/node_modules/vue-cookies/types/vue.d.ts deleted file mode 100644 index 576bc348..00000000 --- a/node_modules/vue-cookies/types/vue.d.ts +++ /dev/null @@ -1,11 +0,0 @@ -import { VueCookies } from "./index"; - -declare module "vue/types/vue" { - interface Vue { - $cookies: VueCookies; - } - - interface VueConstructor { - $cookies: VueCookies; - } -} diff --git a/node_modules/vue-cookies/vue-cookies.js b/node_modules/vue-cookies/vue-cookies.js deleted file mode 100644 index b013475f..00000000 --- a/node_modules/vue-cookies/vue-cookies.js +++ /dev/null @@ -1,146 +0,0 @@ -/** - * Vue Cookies v1.7.4 - * https://github.com/cmp-cc/vue-cookies - * - * Copyright 2016, cmp-cc - * Released under the MIT license - */ - -(function () { - - var defaultConfig = { - expires: '1d', - path: '; path=/', - domain: '', - secure: '', - sameSite: '; SameSite=Lax' - }; - - var VueCookies = { - // install of Vue - install: function (Vue) { - Vue.prototype.$cookies = this; - Vue.$cookies = this; - }, - config: function (expireTimes, path, domain, secure, sameSite) { - defaultConfig.expires = expireTimes ? expireTimes : '1d'; - defaultConfig.path = path ? '; path=' + path : '; path=/'; - defaultConfig.domain = domain ? '; domain=' + domain : ''; - defaultConfig.secure = secure ? '; Secure' : ''; - defaultConfig.sameSite = sameSite ? '; SameSite=' + sameSite : '; SameSite=Lax'; - }, - get: function (key) { - var value = decodeURIComponent(document.cookie.replace(new RegExp('(?:(?:^|.*;)\\s*' + encodeURIComponent(key).replace(/[\-\.\+\*]/g, '\\$&') + '\\s*\\=\\s*([^;]*).*$)|^.*$'), '$1')) || null; - - if (value && value.substring(0, 1) === '{' && value.substring(value.length - 1, value.length) === '}') { - try { - value = JSON.parse(value); - } catch (e) { - return value; - } - } - return value; - }, - set: function (key, value, expireTimes, path, domain, secure, sameSite) { - if (!key) { - throw new Error('Cookie name is not find in first argument.'); - } else if (/^(?:expires|max\-age|path|domain|secure|SameSite)$/i.test(key)) { - throw new Error('Cookie key name illegality, Cannot be set to ["expires","max-age","path","domain","secure","SameSite"]\t current key name: ' + key); - } - // support json object - if (value && value.constructor === Object) { - value = JSON.stringify(value); - } - var _expires = ''; - expireTimes = expireTimes == undefined ? defaultConfig.expires : expireTimes; - if (expireTimes && expireTimes != 0) { - switch (expireTimes.constructor) { - case Number: - if (expireTimes === Infinity || expireTimes === -1) _expires = '; expires=Fri, 31 Dec 9999 23:59:59 GMT'; - else _expires = '; max-age=' + expireTimes; - break; - case String: - if (/^(?:\d+(y|m|d|h|min|s))$/i.test(expireTimes)) { - // get capture number group - var _expireTime = expireTimes.replace(/^(\d+)(?:y|m|d|h|min|s)$/i, '$1'); - // get capture type group , to lower case - switch (expireTimes.replace(/^(?:\d+)(y|m|d|h|min|s)$/i, '$1').toLowerCase()) { - // Frequency sorting - case 'm': - _expires = '; max-age=' + +_expireTime * 2592000; - break; // 60 * 60 * 24 * 30 - case 'd': - _expires = '; max-age=' + +_expireTime * 86400; - break; // 60 * 60 * 24 - case 'h': - _expires = '; max-age=' + +_expireTime * 3600; - break; // 60 * 60 - case 'min': - _expires = '; max-age=' + +_expireTime * 60; - break; // 60 - case 's': - _expires = '; max-age=' + _expireTime; - break; - case 'y': - _expires = '; max-age=' + +_expireTime * 31104000; - break; // 60 * 60 * 24 * 30 * 12 - default: - new Error('unknown exception of "set operation"'); - } - } else { - _expires = '; expires=' + expireTimes; - } - break; - case Date: - _expires = '; expires=' + expireTimes.toUTCString(); - break; - } - } - document.cookie = - encodeURIComponent(key) + '=' + encodeURIComponent(value) + - _expires + - (domain ? '; domain=' + domain : defaultConfig.domain) + - (path ? '; path=' + path : defaultConfig.path) + - (secure == undefined ? defaultConfig.secure : secure ? '; Secure' : '') + - (sameSite == undefined ? defaultConfig.sameSite : (sameSite ? '; SameSite=' + sameSite : '')); - return this; - }, - remove: function (key, path, domain) { - if (!key || !this.isKey(key)) { - return false; - } - document.cookie = encodeURIComponent(key) + - '=; expires=Thu, 01 Jan 1970 00:00:00 GMT' + - (domain ? '; domain=' + domain : defaultConfig.domain) + - (path ? '; path=' + path : defaultConfig.path) + - '; SameSite=Lax'; - return this; - }, - isKey: function (key) { - return (new RegExp('(?:^|;\\s*)' + encodeURIComponent(key).replace(/[\-\.\+\*]/g, '\\$&') + '\\s*\\=')).test(document.cookie); - }, - keys: function () { - if (!document.cookie) return []; - var _keys = document.cookie.replace(/((?:^|\s*;)[^\=]+)(?=;|$)|^\s*|\s*(?:\=[^;]*)?(?:\1|$)/g, '').split(/\s*(?:\=[^;]*)?;\s*/); - for (var _index = 0; _index < _keys.length; _index++) { - _keys[_index] = decodeURIComponent(_keys[_index]); - } - return _keys; - } - }; - - if (typeof exports == 'object') { - module.exports = VueCookies; - } else if (typeof define == 'function' && define.amd) { - define([], function () { - return VueCookies; - }); - } else if (window.Vue) { - Vue.use(VueCookies); - } - // vue-cookies can exist independently,no dependencies library - if (typeof window !== 'undefined') { - window.$cookies = VueCookies; - } - -})(); diff --git a/recipes/locale/ca/LC_MESSAGES/django.mo b/recipes/locale/ca/LC_MESSAGES/django.mo index 71cbdf3e..4855a0f5 100644 Binary files a/recipes/locale/ca/LC_MESSAGES/django.mo and b/recipes/locale/ca/LC_MESSAGES/django.mo differ diff --git a/recipes/locale/ca/LC_MESSAGES/django.po b/recipes/locale/ca/LC_MESSAGES/django.po index c00c5c00..bdb3e9f0 100644 --- a/recipes/locale/ca/LC_MESSAGES/django.po +++ b/recipes/locale/ca/LC_MESSAGES/django.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-08-12 15:09+0200\n" +"POT-Creation-Date: 2021-09-13 22:40+0200\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -18,42 +18,42 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: .\recipes\settings.py:317 +#: .\recipes\settings.py:324 msgid "Armenian " msgstr "" -#: .\recipes\settings.py:318 +#: .\recipes\settings.py:325 msgid "Catalan" msgstr "" -#: .\recipes\settings.py:319 +#: .\recipes\settings.py:326 msgid "Czech" msgstr "" -#: .\recipes\settings.py:320 +#: .\recipes\settings.py:327 msgid "Dutch" msgstr "" -#: .\recipes\settings.py:321 +#: .\recipes\settings.py:328 msgid "English" msgstr "" -#: .\recipes\settings.py:322 +#: .\recipes\settings.py:329 msgid "French" msgstr "" -#: .\recipes\settings.py:323 +#: .\recipes\settings.py:330 msgid "German" msgstr "" -#: .\recipes\settings.py:324 +#: .\recipes\settings.py:331 msgid "Italian" msgstr "" -#: .\recipes\settings.py:325 +#: .\recipes\settings.py:332 msgid "Latvian" msgstr "" -#: .\recipes\settings.py:326 +#: .\recipes\settings.py:333 msgid "Spanish" msgstr "" diff --git a/recipes/locale/de/LC_MESSAGES/django.mo b/recipes/locale/de/LC_MESSAGES/django.mo index 24682470..93a5e2b9 100644 Binary files a/recipes/locale/de/LC_MESSAGES/django.mo and b/recipes/locale/de/LC_MESSAGES/django.mo differ diff --git a/recipes/locale/de/LC_MESSAGES/django.po b/recipes/locale/de/LC_MESSAGES/django.po index bd5d1e7c..1a74c3e1 100644 --- a/recipes/locale/de/LC_MESSAGES/django.po +++ b/recipes/locale/de/LC_MESSAGES/django.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-08-12 15:09+0200\n" +"POT-Creation-Date: 2021-09-13 22:40+0200\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -18,42 +18,42 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: .\recipes\settings.py:317 +#: .\recipes\settings.py:324 msgid "Armenian " msgstr "" -#: .\recipes\settings.py:318 +#: .\recipes\settings.py:325 msgid "Catalan" msgstr "" -#: .\recipes\settings.py:319 +#: .\recipes\settings.py:326 msgid "Czech" msgstr "" -#: .\recipes\settings.py:320 +#: .\recipes\settings.py:327 msgid "Dutch" msgstr "" -#: .\recipes\settings.py:321 +#: .\recipes\settings.py:328 msgid "English" msgstr "Englisch" -#: .\recipes\settings.py:322 +#: .\recipes\settings.py:329 msgid "French" msgstr "" -#: .\recipes\settings.py:323 +#: .\recipes\settings.py:330 msgid "German" msgstr "Deutsch" -#: .\recipes\settings.py:324 +#: .\recipes\settings.py:331 msgid "Italian" msgstr "" -#: .\recipes\settings.py:325 +#: .\recipes\settings.py:332 msgid "Latvian" msgstr "" -#: .\recipes\settings.py:326 +#: .\recipes\settings.py:333 msgid "Spanish" msgstr "" diff --git a/recipes/locale/en/LC_MESSAGES/django.mo b/recipes/locale/en/LC_MESSAGES/django.mo index 71cbdf3e..4855a0f5 100644 Binary files a/recipes/locale/en/LC_MESSAGES/django.mo and b/recipes/locale/en/LC_MESSAGES/django.mo differ diff --git a/recipes/locale/en/LC_MESSAGES/django.po b/recipes/locale/en/LC_MESSAGES/django.po index c00c5c00..bdb3e9f0 100644 --- a/recipes/locale/en/LC_MESSAGES/django.po +++ b/recipes/locale/en/LC_MESSAGES/django.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-08-12 15:09+0200\n" +"POT-Creation-Date: 2021-09-13 22:40+0200\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -18,42 +18,42 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: .\recipes\settings.py:317 +#: .\recipes\settings.py:324 msgid "Armenian " msgstr "" -#: .\recipes\settings.py:318 +#: .\recipes\settings.py:325 msgid "Catalan" msgstr "" -#: .\recipes\settings.py:319 +#: .\recipes\settings.py:326 msgid "Czech" msgstr "" -#: .\recipes\settings.py:320 +#: .\recipes\settings.py:327 msgid "Dutch" msgstr "" -#: .\recipes\settings.py:321 +#: .\recipes\settings.py:328 msgid "English" msgstr "" -#: .\recipes\settings.py:322 +#: .\recipes\settings.py:329 msgid "French" msgstr "" -#: .\recipes\settings.py:323 +#: .\recipes\settings.py:330 msgid "German" msgstr "" -#: .\recipes\settings.py:324 +#: .\recipes\settings.py:331 msgid "Italian" msgstr "" -#: .\recipes\settings.py:325 +#: .\recipes\settings.py:332 msgid "Latvian" msgstr "" -#: .\recipes\settings.py:326 +#: .\recipes\settings.py:333 msgid "Spanish" msgstr "" diff --git a/recipes/locale/es/LC_MESSAGES/django.mo b/recipes/locale/es/LC_MESSAGES/django.mo index 71cbdf3e..4855a0f5 100644 Binary files a/recipes/locale/es/LC_MESSAGES/django.mo and b/recipes/locale/es/LC_MESSAGES/django.mo differ diff --git a/recipes/locale/es/LC_MESSAGES/django.po b/recipes/locale/es/LC_MESSAGES/django.po index c00c5c00..bdb3e9f0 100644 --- a/recipes/locale/es/LC_MESSAGES/django.po +++ b/recipes/locale/es/LC_MESSAGES/django.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-08-12 15:09+0200\n" +"POT-Creation-Date: 2021-09-13 22:40+0200\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -18,42 +18,42 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: .\recipes\settings.py:317 +#: .\recipes\settings.py:324 msgid "Armenian " msgstr "" -#: .\recipes\settings.py:318 +#: .\recipes\settings.py:325 msgid "Catalan" msgstr "" -#: .\recipes\settings.py:319 +#: .\recipes\settings.py:326 msgid "Czech" msgstr "" -#: .\recipes\settings.py:320 +#: .\recipes\settings.py:327 msgid "Dutch" msgstr "" -#: .\recipes\settings.py:321 +#: .\recipes\settings.py:328 msgid "English" msgstr "" -#: .\recipes\settings.py:322 +#: .\recipes\settings.py:329 msgid "French" msgstr "" -#: .\recipes\settings.py:323 +#: .\recipes\settings.py:330 msgid "German" msgstr "" -#: .\recipes\settings.py:324 +#: .\recipes\settings.py:331 msgid "Italian" msgstr "" -#: .\recipes\settings.py:325 +#: .\recipes\settings.py:332 msgid "Latvian" msgstr "" -#: .\recipes\settings.py:326 +#: .\recipes\settings.py:333 msgid "Spanish" msgstr "" diff --git a/recipes/locale/fr/LC_MESSAGES/django.mo b/recipes/locale/fr/LC_MESSAGES/django.mo index 2c90dd0c..e832d012 100644 Binary files a/recipes/locale/fr/LC_MESSAGES/django.mo and b/recipes/locale/fr/LC_MESSAGES/django.mo differ diff --git a/recipes/locale/fr/LC_MESSAGES/django.po b/recipes/locale/fr/LC_MESSAGES/django.po index bb660295..9c61c04a 100644 --- a/recipes/locale/fr/LC_MESSAGES/django.po +++ b/recipes/locale/fr/LC_MESSAGES/django.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-08-12 15:09+0200\n" +"POT-Creation-Date: 2021-09-13 22:40+0200\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -18,42 +18,42 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n > 1);\n" -#: .\recipes\settings.py:317 +#: .\recipes\settings.py:324 msgid "Armenian " msgstr "" -#: .\recipes\settings.py:318 +#: .\recipes\settings.py:325 msgid "Catalan" msgstr "" -#: .\recipes\settings.py:319 +#: .\recipes\settings.py:326 msgid "Czech" msgstr "" -#: .\recipes\settings.py:320 +#: .\recipes\settings.py:327 msgid "Dutch" msgstr "" -#: .\recipes\settings.py:321 +#: .\recipes\settings.py:328 msgid "English" msgstr "" -#: .\recipes\settings.py:322 +#: .\recipes\settings.py:329 msgid "French" msgstr "" -#: .\recipes\settings.py:323 +#: .\recipes\settings.py:330 msgid "German" msgstr "" -#: .\recipes\settings.py:324 +#: .\recipes\settings.py:331 msgid "Italian" msgstr "" -#: .\recipes\settings.py:325 +#: .\recipes\settings.py:332 msgid "Latvian" msgstr "" -#: .\recipes\settings.py:326 +#: .\recipes\settings.py:333 msgid "Spanish" msgstr "" diff --git a/recipes/locale/hu_HU/LC_MESSAGES/django.mo b/recipes/locale/hu_HU/LC_MESSAGES/django.mo index 6c5906d1..a05eae72 100644 Binary files a/recipes/locale/hu_HU/LC_MESSAGES/django.mo and b/recipes/locale/hu_HU/LC_MESSAGES/django.mo differ diff --git a/recipes/locale/hu_HU/LC_MESSAGES/django.po b/recipes/locale/hu_HU/LC_MESSAGES/django.po index bf720049..167fb8ea 100644 --- a/recipes/locale/hu_HU/LC_MESSAGES/django.po +++ b/recipes/locale/hu_HU/LC_MESSAGES/django.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-08-12 15:09+0200\n" +"POT-Creation-Date: 2021-09-13 22:40+0200\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -17,42 +17,42 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -#: .\recipes\settings.py:317 +#: .\recipes\settings.py:324 msgid "Armenian " msgstr "" -#: .\recipes\settings.py:318 +#: .\recipes\settings.py:325 msgid "Catalan" msgstr "" -#: .\recipes\settings.py:319 +#: .\recipes\settings.py:326 msgid "Czech" msgstr "" -#: .\recipes\settings.py:320 +#: .\recipes\settings.py:327 msgid "Dutch" msgstr "" -#: .\recipes\settings.py:321 +#: .\recipes\settings.py:328 msgid "English" msgstr "" -#: .\recipes\settings.py:322 +#: .\recipes\settings.py:329 msgid "French" msgstr "" -#: .\recipes\settings.py:323 +#: .\recipes\settings.py:330 msgid "German" msgstr "" -#: .\recipes\settings.py:324 +#: .\recipes\settings.py:331 msgid "Italian" msgstr "" -#: .\recipes\settings.py:325 +#: .\recipes\settings.py:332 msgid "Latvian" msgstr "" -#: .\recipes\settings.py:326 +#: .\recipes\settings.py:333 msgid "Spanish" msgstr "" diff --git a/recipes/locale/it/LC_MESSAGES/django.mo b/recipes/locale/it/LC_MESSAGES/django.mo index 71cbdf3e..4855a0f5 100644 Binary files a/recipes/locale/it/LC_MESSAGES/django.mo and b/recipes/locale/it/LC_MESSAGES/django.mo differ diff --git a/recipes/locale/it/LC_MESSAGES/django.po b/recipes/locale/it/LC_MESSAGES/django.po index c00c5c00..bdb3e9f0 100644 --- a/recipes/locale/it/LC_MESSAGES/django.po +++ b/recipes/locale/it/LC_MESSAGES/django.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-08-12 15:09+0200\n" +"POT-Creation-Date: 2021-09-13 22:40+0200\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -18,42 +18,42 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: .\recipes\settings.py:317 +#: .\recipes\settings.py:324 msgid "Armenian " msgstr "" -#: .\recipes\settings.py:318 +#: .\recipes\settings.py:325 msgid "Catalan" msgstr "" -#: .\recipes\settings.py:319 +#: .\recipes\settings.py:326 msgid "Czech" msgstr "" -#: .\recipes\settings.py:320 +#: .\recipes\settings.py:327 msgid "Dutch" msgstr "" -#: .\recipes\settings.py:321 +#: .\recipes\settings.py:328 msgid "English" msgstr "" -#: .\recipes\settings.py:322 +#: .\recipes\settings.py:329 msgid "French" msgstr "" -#: .\recipes\settings.py:323 +#: .\recipes\settings.py:330 msgid "German" msgstr "" -#: .\recipes\settings.py:324 +#: .\recipes\settings.py:331 msgid "Italian" msgstr "" -#: .\recipes\settings.py:325 +#: .\recipes\settings.py:332 msgid "Latvian" msgstr "" -#: .\recipes\settings.py:326 +#: .\recipes\settings.py:333 msgid "Spanish" msgstr "" diff --git a/recipes/locale/lv/LC_MESSAGES/django.mo b/recipes/locale/lv/LC_MESSAGES/django.mo index 474e9d25..15578a6f 100644 Binary files a/recipes/locale/lv/LC_MESSAGES/django.mo and b/recipes/locale/lv/LC_MESSAGES/django.mo differ diff --git a/recipes/locale/lv/LC_MESSAGES/django.po b/recipes/locale/lv/LC_MESSAGES/django.po index 1a7de1e0..4bd91882 100644 --- a/recipes/locale/lv/LC_MESSAGES/django.po +++ b/recipes/locale/lv/LC_MESSAGES/django.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-08-12 15:09+0200\n" +"POT-Creation-Date: 2021-09-13 22:40+0200\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -19,42 +19,42 @@ msgstr "" "Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n != 0 ? 1 : " "2);\n" -#: .\recipes\settings.py:317 +#: .\recipes\settings.py:324 msgid "Armenian " msgstr "" -#: .\recipes\settings.py:318 +#: .\recipes\settings.py:325 msgid "Catalan" msgstr "" -#: .\recipes\settings.py:319 +#: .\recipes\settings.py:326 msgid "Czech" msgstr "" -#: .\recipes\settings.py:320 +#: .\recipes\settings.py:327 msgid "Dutch" msgstr "" -#: .\recipes\settings.py:321 +#: .\recipes\settings.py:328 msgid "English" msgstr "" -#: .\recipes\settings.py:322 +#: .\recipes\settings.py:329 msgid "French" msgstr "" -#: .\recipes\settings.py:323 +#: .\recipes\settings.py:330 msgid "German" msgstr "" -#: .\recipes\settings.py:324 +#: .\recipes\settings.py:331 msgid "Italian" msgstr "" -#: .\recipes\settings.py:325 +#: .\recipes\settings.py:332 msgid "Latvian" msgstr "" -#: .\recipes\settings.py:326 +#: .\recipes\settings.py:333 msgid "Spanish" msgstr "" diff --git a/recipes/locale/nl/LC_MESSAGES/django.mo b/recipes/locale/nl/LC_MESSAGES/django.mo index 71cbdf3e..4855a0f5 100644 Binary files a/recipes/locale/nl/LC_MESSAGES/django.mo and b/recipes/locale/nl/LC_MESSAGES/django.mo differ diff --git a/recipes/locale/nl/LC_MESSAGES/django.po b/recipes/locale/nl/LC_MESSAGES/django.po index c00c5c00..bdb3e9f0 100644 --- a/recipes/locale/nl/LC_MESSAGES/django.po +++ b/recipes/locale/nl/LC_MESSAGES/django.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-08-12 15:09+0200\n" +"POT-Creation-Date: 2021-09-13 22:40+0200\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -18,42 +18,42 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: .\recipes\settings.py:317 +#: .\recipes\settings.py:324 msgid "Armenian " msgstr "" -#: .\recipes\settings.py:318 +#: .\recipes\settings.py:325 msgid "Catalan" msgstr "" -#: .\recipes\settings.py:319 +#: .\recipes\settings.py:326 msgid "Czech" msgstr "" -#: .\recipes\settings.py:320 +#: .\recipes\settings.py:327 msgid "Dutch" msgstr "" -#: .\recipes\settings.py:321 +#: .\recipes\settings.py:328 msgid "English" msgstr "" -#: .\recipes\settings.py:322 +#: .\recipes\settings.py:329 msgid "French" msgstr "" -#: .\recipes\settings.py:323 +#: .\recipes\settings.py:330 msgid "German" msgstr "" -#: .\recipes\settings.py:324 +#: .\recipes\settings.py:331 msgid "Italian" msgstr "" -#: .\recipes\settings.py:325 +#: .\recipes\settings.py:332 msgid "Latvian" msgstr "" -#: .\recipes\settings.py:326 +#: .\recipes\settings.py:333 msgid "Spanish" msgstr "" diff --git a/recipes/locale/pt/LC_MESSAGES/django.mo b/recipes/locale/pt/LC_MESSAGES/django.mo index 71cbdf3e..4855a0f5 100644 Binary files a/recipes/locale/pt/LC_MESSAGES/django.mo and b/recipes/locale/pt/LC_MESSAGES/django.mo differ diff --git a/recipes/locale/pt/LC_MESSAGES/django.po b/recipes/locale/pt/LC_MESSAGES/django.po index c00c5c00..bdb3e9f0 100644 --- a/recipes/locale/pt/LC_MESSAGES/django.po +++ b/recipes/locale/pt/LC_MESSAGES/django.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-08-12 15:09+0200\n" +"POT-Creation-Date: 2021-09-13 22:40+0200\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -18,42 +18,42 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: .\recipes\settings.py:317 +#: .\recipes\settings.py:324 msgid "Armenian " msgstr "" -#: .\recipes\settings.py:318 +#: .\recipes\settings.py:325 msgid "Catalan" msgstr "" -#: .\recipes\settings.py:319 +#: .\recipes\settings.py:326 msgid "Czech" msgstr "" -#: .\recipes\settings.py:320 +#: .\recipes\settings.py:327 msgid "Dutch" msgstr "" -#: .\recipes\settings.py:321 +#: .\recipes\settings.py:328 msgid "English" msgstr "" -#: .\recipes\settings.py:322 +#: .\recipes\settings.py:329 msgid "French" msgstr "" -#: .\recipes\settings.py:323 +#: .\recipes\settings.py:330 msgid "German" msgstr "" -#: .\recipes\settings.py:324 +#: .\recipes\settings.py:331 msgid "Italian" msgstr "" -#: .\recipes\settings.py:325 +#: .\recipes\settings.py:332 msgid "Latvian" msgstr "" -#: .\recipes\settings.py:326 +#: .\recipes\settings.py:333 msgid "Spanish" msgstr "" diff --git a/recipes/locale/rn/LC_MESSAGES/django.mo b/recipes/locale/rn/LC_MESSAGES/django.mo index 6c5906d1..a05eae72 100644 Binary files a/recipes/locale/rn/LC_MESSAGES/django.mo and b/recipes/locale/rn/LC_MESSAGES/django.mo differ diff --git a/recipes/locale/rn/LC_MESSAGES/django.po b/recipes/locale/rn/LC_MESSAGES/django.po index bf720049..167fb8ea 100644 --- a/recipes/locale/rn/LC_MESSAGES/django.po +++ b/recipes/locale/rn/LC_MESSAGES/django.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-08-12 15:09+0200\n" +"POT-Creation-Date: 2021-09-13 22:40+0200\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -17,42 +17,42 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -#: .\recipes\settings.py:317 +#: .\recipes\settings.py:324 msgid "Armenian " msgstr "" -#: .\recipes\settings.py:318 +#: .\recipes\settings.py:325 msgid "Catalan" msgstr "" -#: .\recipes\settings.py:319 +#: .\recipes\settings.py:326 msgid "Czech" msgstr "" -#: .\recipes\settings.py:320 +#: .\recipes\settings.py:327 msgid "Dutch" msgstr "" -#: .\recipes\settings.py:321 +#: .\recipes\settings.py:328 msgid "English" msgstr "" -#: .\recipes\settings.py:322 +#: .\recipes\settings.py:329 msgid "French" msgstr "" -#: .\recipes\settings.py:323 +#: .\recipes\settings.py:330 msgid "German" msgstr "" -#: .\recipes\settings.py:324 +#: .\recipes\settings.py:331 msgid "Italian" msgstr "" -#: .\recipes\settings.py:325 +#: .\recipes\settings.py:332 msgid "Latvian" msgstr "" -#: .\recipes\settings.py:326 +#: .\recipes\settings.py:333 msgid "Spanish" msgstr "" diff --git a/recipes/locale/tr/LC_MESSAGES/django.mo b/recipes/locale/tr/LC_MESSAGES/django.mo index 2c90dd0c..e832d012 100644 Binary files a/recipes/locale/tr/LC_MESSAGES/django.mo and b/recipes/locale/tr/LC_MESSAGES/django.mo differ diff --git a/recipes/locale/tr/LC_MESSAGES/django.po b/recipes/locale/tr/LC_MESSAGES/django.po index bb660295..9c61c04a 100644 --- a/recipes/locale/tr/LC_MESSAGES/django.po +++ b/recipes/locale/tr/LC_MESSAGES/django.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-08-12 15:09+0200\n" +"POT-Creation-Date: 2021-09-13 22:40+0200\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -18,42 +18,42 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n > 1);\n" -#: .\recipes\settings.py:317 +#: .\recipes\settings.py:324 msgid "Armenian " msgstr "" -#: .\recipes\settings.py:318 +#: .\recipes\settings.py:325 msgid "Catalan" msgstr "" -#: .\recipes\settings.py:319 +#: .\recipes\settings.py:326 msgid "Czech" msgstr "" -#: .\recipes\settings.py:320 +#: .\recipes\settings.py:327 msgid "Dutch" msgstr "" -#: .\recipes\settings.py:321 +#: .\recipes\settings.py:328 msgid "English" msgstr "" -#: .\recipes\settings.py:322 +#: .\recipes\settings.py:329 msgid "French" msgstr "" -#: .\recipes\settings.py:323 +#: .\recipes\settings.py:330 msgid "German" msgstr "" -#: .\recipes\settings.py:324 +#: .\recipes\settings.py:331 msgid "Italian" msgstr "" -#: .\recipes\settings.py:325 +#: .\recipes\settings.py:332 msgid "Latvian" msgstr "" -#: .\recipes\settings.py:326 +#: .\recipes\settings.py:333 msgid "Spanish" msgstr "" diff --git a/recipes/locale/zh_CN/LC_MESSAGES/django.mo b/recipes/locale/zh_CN/LC_MESSAGES/django.mo index 6c5906d1..a05eae72 100644 Binary files a/recipes/locale/zh_CN/LC_MESSAGES/django.mo and b/recipes/locale/zh_CN/LC_MESSAGES/django.mo differ diff --git a/recipes/locale/zh_CN/LC_MESSAGES/django.po b/recipes/locale/zh_CN/LC_MESSAGES/django.po index bf720049..167fb8ea 100644 --- a/recipes/locale/zh_CN/LC_MESSAGES/django.po +++ b/recipes/locale/zh_CN/LC_MESSAGES/django.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-08-12 15:09+0200\n" +"POT-Creation-Date: 2021-09-13 22:40+0200\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -17,42 +17,42 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -#: .\recipes\settings.py:317 +#: .\recipes\settings.py:324 msgid "Armenian " msgstr "" -#: .\recipes\settings.py:318 +#: .\recipes\settings.py:325 msgid "Catalan" msgstr "" -#: .\recipes\settings.py:319 +#: .\recipes\settings.py:326 msgid "Czech" msgstr "" -#: .\recipes\settings.py:320 +#: .\recipes\settings.py:327 msgid "Dutch" msgstr "" -#: .\recipes\settings.py:321 +#: .\recipes\settings.py:328 msgid "English" msgstr "" -#: .\recipes\settings.py:322 +#: .\recipes\settings.py:329 msgid "French" msgstr "" -#: .\recipes\settings.py:323 +#: .\recipes\settings.py:330 msgid "German" msgstr "" -#: .\recipes\settings.py:324 +#: .\recipes\settings.py:331 msgid "Italian" msgstr "" -#: .\recipes\settings.py:325 +#: .\recipes\settings.py:332 msgid "Latvian" msgstr "" -#: .\recipes\settings.py:326 +#: .\recipes\settings.py:333 msgid "Spanish" msgstr "" diff --git a/recipes/middleware.py b/recipes/middleware.py index b3efd366..5843f75b 100644 --- a/recipes/middleware.py +++ b/recipes/middleware.py @@ -1,7 +1,71 @@ from os import getenv +from django.conf import settings from django.contrib.auth.middleware import RemoteUserMiddleware +from django.db import connection class CustomRemoteUser(RemoteUserMiddleware): header = getenv('PROXY_HEADER', 'HTTP_REMOTE_USER') + + +""" +Gist code by vstoykov, you can check his original gist at: +https://gist.github.com/vstoykov/1390853/5d2e8fac3ca2b2ada8c7de2fb70c021e50927375 +Changes: +Ignoring static file requests and a certain useless admin request from triggering the logger. +Updated statements to make it Python 3 friendly. +""" + + + +def terminal_width(): + """ + Function to compute the terminal width. + """ + width = 0 + try: + import struct, fcntl, termios + s = struct.pack('HHHH', 0, 0, 0, 0) + x = fcntl.ioctl(1, termios.TIOCGWINSZ, s) + width = struct.unpack('HHHH', x)[1] + except: + pass + if width <= 0: + try: + width = int(getenv['COLUMNS']) + except: + pass + if width <= 0: + width = 80 + return width + + +def SqlPrintingMiddleware(get_response): + def middleware(request): + response = get_response(request) + if ( + not settings.DEBUG + or len(connection.queries) == 0 + or request.path_info.startswith(settings.MEDIA_URL) + or '/admin/jsi18n/' in request.path_info + ): + return response + + indentation = 2 + print("\n\n%s\033[1;35m[SQL Queries for]\033[1;34m %s\033[0m\n" % (" " * indentation, request.path_info)) + width = terminal_width() + total_time = 0.0 + for query in connection.queries: + nice_sql = query['sql'].replace('"', '').replace(',', ', ') + sql = "\033[1;31m[%s]\033[0m %s" % (query['time'], nice_sql) + total_time = total_time + float(query['time']) + while len(sql) > width - indentation: + #print("%s%s" % (" " * indentation, sql[:width - indentation])) + sql = sql[width - indentation:] + #print("%s%s\n" % (" " * indentation, sql)) + replace_tuple = (" " * indentation, str(total_time)) + print("%s\033[1;32m[TOTAL TIME: %s seconds]\033[0m" % replace_tuple) + print("%s\033[1;32m[TOTAL QUERIES: %s]\033[0m" % (" " * indentation, len(connection.queries))) + return response + return middleware diff --git a/recipes/settings.py b/recipes/settings.py index 1d880fbb..44d55198 100644 --- a/recipes/settings.py +++ b/recipes/settings.py @@ -12,16 +12,13 @@ https://docs.djangoproject.com/en/2.0/ref/settings/ import ast import json import os -import random import re -import string from django.contrib import messages -from django.contrib.staticfiles.storage import staticfiles_storage from django.utils.translation import gettext_lazy as _ from dotenv import load_dotenv -from webpack_loader.loader import WebpackLoader +load_dotenv() BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) # Get vars from .env files @@ -77,7 +74,6 @@ ACCOUNT_SIGNUP_FORM_CLASS = 'cookbook.forms.AllAuthSignupForm' TERMS_URL = os.getenv('TERMS_URL', '') PRIVACY_URL = os.getenv('PRIVACY_URL', '') IMPRINT_URL = os.getenv('IMPRINT_URL', '') - HOSTED = bool(int(os.getenv('HOSTED', False))) MESSAGE_TAGS = { @@ -102,7 +98,6 @@ INSTALLED_APPS = [ 'corsheaders', 'django_filters', 'crispy_forms', - 'emoji_picker', 'rest_framework', 'rest_framework.authtoken', 'django_cleanup.apps.CleanupConfig', @@ -113,6 +108,7 @@ INSTALLED_APPS = [ 'allauth.account', 'allauth.socialaccount', 'cookbook.apps.CookbookConfig', + 'treebeard', ] SOCIAL_PROVIDERS = os.getenv('SOCIAL_PROVIDERS').split(',') if os.getenv('SOCIAL_PROVIDERS') else [] @@ -153,6 +149,11 @@ MIDDLEWARE = [ 'cookbook.helper.scope_middleware.ScopeMiddleware', ] +SORT_TREE_BY_NAME = bool(int(os.getenv('SORT_TREE_BY_NAME', False))) + +if bool(int(os.getenv('SQL_DEBUG', False))): + MIDDLEWARE += ('recipes.middleware.SqlPrintingMiddleware',) + if ENABLE_METRICS: MIDDLEWARE += 'django_prometheus.middleware.PrometheusAfterMiddleware', @@ -295,7 +296,7 @@ else: 'USER': os.getenv('POSTGRES_USER'), 'PASSWORD': os.getenv('POSTGRES_PASSWORD'), 'NAME': os.getenv('POSTGRES_DB') if os.getenv('POSTGRES_DB') else 'db.sqlite3', - 'CONN_MAX_AGE': 600, + 'CONN_MAX_AGE': 60, } } @@ -312,6 +313,16 @@ else: # } # } +# SQLite testing DB +# DATABASES = { +# 'default': { +# 'ENGINE': 'django.db.backends.sqlite3', +# 'OPTIONS': ast.literal_eval(os.getenv('DB_OPTIONS')) if os.getenv('DB_OPTIONS') else {}, +# 'NAME': 'db.sqlite3', +# 'CONN_MAX_AGE': 600, +# } +# } + CACHES = { 'default': { 'BACKEND': 'django.core.cache.backends.locmem.LocMemCache', diff --git a/recipes/wsgi.py b/recipes/wsgi.py index 887f4365..64e99737 100644 --- a/recipes/wsgi.py +++ b/recipes/wsgi.py @@ -8,9 +8,27 @@ https://docs.djangoproject.com/en/2.0/howto/deployment/wsgi/ """ import os - from django.core.wsgi import get_wsgi_application os.environ.setdefault("DJANGO_SETTINGS_MODULE", "recipes.settings") -application = get_wsgi_application() +_application = get_wsgi_application() + + +# allows proxy servers to serve application at a subfolder +# NGINX config example is included in nginx/conf.d + +def application(environ, start_response): + # http://flask.pocoo.org/snippets/35/ + script_name = environ.get('HTTP_X_SCRIPT_NAME', '') + if script_name: + environ['SCRIPT_NAME'] = script_name + path_info = environ['PATH_INFO'] + if path_info.startswith(script_name): + environ['PATH_INFO'] = path_info[len(script_name):] + + scheme = environ.get('HTTP_X_SCHEME', '') + if scheme: + environ['wsgi.url_scheme'] = scheme + + return _application(environ, start_response) diff --git a/requirements.txt b/requirements.txt index 5830a302..603ca448 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,44 +1,43 @@ -Django==3.2.5 -cryptography==3.4.7 +Django==3.2.7 +cryptography==35.0.0 django-annoying==0.10.6 django-autocomplete-light==3.8.2 django-cleanup==5.2.0 -django-crispy-forms==1.12.0 -django-emoji-picker==0.0.6 -django-filter==2.4.0 +django-crispy-forms==1.13.0 +django-filter==21.1 django-tables2==2.4.0 djangorestframework==3.12.4 drf-writable-nested==0.6.3 -bleach==3.3.1 +bleach==4.1.0 bleach-allowlist==1.0.3 gunicorn==20.1.0 lxml==4.6.3 Markdown==3.3.4 -Pillow==8.3.1 +Pillow==8.3.2 psycopg2-binary==2.9.1 python-dotenv==0.19.0 requests==2.26.0 -simplejson==3.17.3 +simplejson==3.17.5 six==1.16.0 -webdavclient3==3.14.5 +webdavclient3==3.14.6 whitenoise==5.3.0 icalendar==4.0.7 pyyaml==5.4.1 uritemplate==3.0.1 -beautifulsoup4==4.9.3 +beautifulsoup4==4.10.0 microdata==0.7.1 Jinja2==3.0.1 -django-webpack-loader==1.1.0 +django-webpack-loader==1.4.1 django-js-reverse==0.9.1 django-allauth==0.45.0 -recipe-scrapers==13.3.5 +recipe-scrapers==13.4.0 django-scopes==1.2.0 -pytest==6.2.4 +pytest==6.2.5 pytest-django==4.4.0 -django-cors-headers==3.7.0 +django-treebeard==4.5.1 +django-cors-headers==3.9.0 django-storages==1.11.1 -boto3==1.18.9 +boto3==1.18.52 django-prometheus==2.1.0 -django-hCaptcha==0.1.0 python-ldap==3.3.1 django-auth-ldap==3.0.0 \ No newline at end of file diff --git a/vue/package-lock.json b/vue/package-lock.json new file mode 100644 index 00000000..2530c6f2 --- /dev/null +++ b/vue/package-lock.json @@ -0,0 +1,27362 @@ +{ + "name": "vue", + "version": "0.1.0", + "lockfileVersion": 2, + "requires": true, + "packages": { + "": { + "version": "0.1.0", + "dependencies": { + "@babel/eslint-parser": "^7.13.14", + "@kangc/v-md-editor": "^1.7.7", + "@kevinfaguiar/vue-twemoji-picker": "^5.7.4", + "@popperjs/core": "^2.10.1", + "@riophae/vue-treeselect": "^0.4.0", + "axios": "^0.21.4", + "bootstrap-vue": "^2.21.2", + "core-js": "^3.18.1", + "lodash": "^4.17.21", + "moment": "^2.29.1", + "prismjs": "^1.25.0", + "vue": "^2.6.14", + "vue-class-component": "^7.2.3", + "vue-click-outside": "^1.1.0", + "vue-clickaway": "^2.2.2", + "vue-cookies": "^1.7.4", + "vue-i18n": "^8.24.4", + "vue-infinite-loading": "^2.4.5", + "vue-multiselect": "^2.1.6", + "vue-property-decorator": "^9.1.2", + "vue-simple-calendar": "^5.0.1", + "vue-template-compiler": "^2.6.14", + "vue2-touch-events": "^3.2.2", + "vuedraggable": "^2.24.3", + "vuex": "^3.6.0", + "workbox-webpack-plugin": "^6.1.5" + }, + "devDependencies": { + "@kazupon/vue-i18n-loader": "^0.5.0", + "@typescript-eslint/eslint-plugin": "^4.26.1", + "@typescript-eslint/parser": "^4.32.0", + "@vue/cli-plugin-babel": "~4.5.13", + "@vue/cli-plugin-eslint": "~4.5.13", + "@vue/cli-plugin-pwa": "~4.5.13", + "@vue/cli-plugin-typescript": "^4.5.13", + "@vue/cli-service": "~4.5.13", + "@vue/compiler-sfc": "^3.1.1", + "@vue/eslint-config-typescript": "^7.0.0", + "babel-eslint": "^10.1.0", + "eslint": "^7.28.0", + "eslint-plugin-vue": "^7.10.0", + "typescript": "~4.4.3", + "vue-cli-plugin-i18n": "^2.1.1", + "webpack-bundle-tracker": "1.3.0", + "workbox-expiration": "^6.3.0", + "workbox-navigation-preload": "^6.0.2", + "workbox-precaching": "^6.3.0", + "workbox-routing": "^6.3.0", + "workbox-strategies": "^6.2.4" + } + }, + "node_modules/@babel/code-frame": { + "version": "7.12.13", + "license": "MIT", + "dependencies": { + "@babel/highlight": "^7.12.13" + } + }, + "node_modules/@babel/compat-data": { + "version": "7.14.4", + "license": "MIT" + }, + "node_modules/@babel/core": { + "version": "7.14.3", + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.12.13", + "@babel/generator": "^7.14.3", + "@babel/helper-compilation-targets": "^7.13.16", + "@babel/helper-module-transforms": "^7.14.2", + "@babel/helpers": "^7.14.0", + "@babel/parser": "^7.14.3", + "@babel/template": "^7.12.13", + "@babel/traverse": "^7.14.2", + "@babel/types": "^7.14.2", + "convert-source-map": "^1.7.0", + "debug": "^4.1.0", + "gensync": "^1.0.0-beta.2", + "json5": "^2.1.2", + "semver": "^6.3.0", + "source-map": "^0.5.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/babel" + } + }, + "node_modules/@babel/core/node_modules/source-map": { + "version": "0.5.7", + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/@babel/eslint-parser": { + "version": "7.14.4", + "license": "MIT", + "dependencies": { + "eslint-scope": "^5.1.0", + "eslint-visitor-keys": "^2.1.0", + "semver": "^6.3.0" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || >=14.0.0" + }, + "peerDependencies": { + "@babel/core": ">=7.11.0", + "eslint": ">=7.5.0" + } + }, + "node_modules/@babel/eslint-parser/node_modules/eslint-visitor-keys": { + "version": "2.1.0", + "license": "Apache-2.0", + "engines": { + "node": ">=10" + } + }, + "node_modules/@babel/generator": { + "version": "7.14.3", + "license": "MIT", + "dependencies": { + "@babel/types": "^7.14.2", + "jsesc": "^2.5.1", + "source-map": "^0.5.0" + } + }, + "node_modules/@babel/generator/node_modules/source-map": { + "version": "0.5.7", + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/@babel/helper-annotate-as-pure": { + "version": "7.12.13", + "license": "MIT", + "dependencies": { + "@babel/types": "^7.12.13" + } + }, + "node_modules/@babel/helper-builder-binary-assignment-operator-visitor": { + "version": "7.12.13", + "license": "MIT", + "dependencies": { + "@babel/helper-explode-assignable-expression": "^7.12.13", + "@babel/types": "^7.12.13" + } + }, + "node_modules/@babel/helper-compilation-targets": { + "version": "7.14.4", + "license": "MIT", + "dependencies": { + "@babel/compat-data": "^7.14.4", + "@babel/helper-validator-option": "^7.12.17", + "browserslist": "^4.16.6", + "semver": "^6.3.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-create-class-features-plugin": { + "version": "7.14.4", + "license": "MIT", + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.12.13", + "@babel/helper-function-name": "^7.14.2", + "@babel/helper-member-expression-to-functions": "^7.13.12", + "@babel/helper-optimise-call-expression": "^7.12.13", + "@babel/helper-replace-supers": "^7.14.4", + "@babel/helper-split-export-declaration": "^7.12.13" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-create-regexp-features-plugin": { + "version": "7.14.3", + "license": "MIT", + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.12.13", + "regexpu-core": "^4.7.1" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-define-polyfill-provider": { + "version": "0.2.3", + "license": "MIT", + "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", + "debug": "^4.1.1", + "lodash.debounce": "^4.0.8", + "resolve": "^1.14.2", + "semver": "^6.1.2" + }, + "peerDependencies": { + "@babel/core": "^7.4.0-0" + } + }, + "node_modules/@babel/helper-explode-assignable-expression": { + "version": "7.13.0", + "license": "MIT", + "dependencies": { + "@babel/types": "^7.13.0" + } + }, + "node_modules/@babel/helper-function-name": { + "version": "7.14.2", + "license": "MIT", + "dependencies": { + "@babel/helper-get-function-arity": "^7.12.13", + "@babel/template": "^7.12.13", + "@babel/types": "^7.14.2" + } + }, + "node_modules/@babel/helper-get-function-arity": { + "version": "7.12.13", + "license": "MIT", + "dependencies": { + "@babel/types": "^7.12.13" + } + }, + "node_modules/@babel/helper-hoist-variables": { + "version": "7.13.16", + "license": "MIT", + "dependencies": { + "@babel/traverse": "^7.13.15", + "@babel/types": "^7.13.16" + } + }, + "node_modules/@babel/helper-member-expression-to-functions": { + "version": "7.13.12", + "license": "MIT", + "dependencies": { + "@babel/types": "^7.13.12" + } + }, + "node_modules/@babel/helper-module-imports": { + "version": "7.13.12", + "license": "MIT", + "dependencies": { + "@babel/types": "^7.13.12" + } + }, + "node_modules/@babel/helper-module-transforms": { + "version": "7.14.2", + "license": "MIT", + "dependencies": { + "@babel/helper-module-imports": "^7.13.12", + "@babel/helper-replace-supers": "^7.13.12", + "@babel/helper-simple-access": "^7.13.12", + "@babel/helper-split-export-declaration": "^7.12.13", + "@babel/helper-validator-identifier": "^7.14.0", + "@babel/template": "^7.12.13", + "@babel/traverse": "^7.14.2", + "@babel/types": "^7.14.2" + } + }, + "node_modules/@babel/helper-optimise-call-expression": { + "version": "7.12.13", + "license": "MIT", + "dependencies": { + "@babel/types": "^7.12.13" + } + }, + "node_modules/@babel/helper-plugin-utils": { + "version": "7.13.0", + "license": "MIT" + }, + "node_modules/@babel/helper-remap-async-to-generator": { + "version": "7.13.0", + "license": "MIT", + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.12.13", + "@babel/helper-wrap-function": "^7.13.0", + "@babel/types": "^7.13.0" + } + }, + "node_modules/@babel/helper-replace-supers": { + "version": "7.14.4", + "license": "MIT", + "dependencies": { + "@babel/helper-member-expression-to-functions": "^7.13.12", + "@babel/helper-optimise-call-expression": "^7.12.13", + "@babel/traverse": "^7.14.2", + "@babel/types": "^7.14.4" + } + }, + "node_modules/@babel/helper-simple-access": { + "version": "7.13.12", + "license": "MIT", + "dependencies": { + "@babel/types": "^7.13.12" + } + }, + "node_modules/@babel/helper-skip-transparent-expression-wrappers": { + "version": "7.12.1", + "license": "MIT", + "dependencies": { + "@babel/types": "^7.12.1" + } + }, + "node_modules/@babel/helper-split-export-declaration": { + "version": "7.12.13", + "license": "MIT", + "dependencies": { + "@babel/types": "^7.12.13" + } + }, + "node_modules/@babel/helper-validator-identifier": { + "version": "7.14.0", + "license": "MIT" + }, + "node_modules/@babel/helper-validator-option": { + "version": "7.12.17", + "license": "MIT" + }, + "node_modules/@babel/helper-wrap-function": { + "version": "7.13.0", + "license": "MIT", + "dependencies": { + "@babel/helper-function-name": "^7.12.13", + "@babel/template": "^7.12.13", + "@babel/traverse": "^7.13.0", + "@babel/types": "^7.13.0" + } + }, + "node_modules/@babel/helpers": { + "version": "7.14.0", + "license": "MIT", + "dependencies": { + "@babel/template": "^7.12.13", + "@babel/traverse": "^7.14.0", + "@babel/types": "^7.14.0" + } + }, + "node_modules/@babel/highlight": { + "version": "7.14.0", + "license": "MIT", + "dependencies": { + "@babel/helper-validator-identifier": "^7.14.0", + "chalk": "^2.0.0", + "js-tokens": "^4.0.0" + } + }, + "node_modules/@babel/parser": { + "version": "7.14.4", + "license": "MIT", + "bin": { + "parser": "bin/babel-parser.js" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": { + "version": "7.13.12", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.13.0", + "@babel/helper-skip-transparent-expression-wrappers": "^7.12.1", + "@babel/plugin-proposal-optional-chaining": "^7.13.12" + }, + "peerDependencies": { + "@babel/core": "^7.13.0" + } + }, + "node_modules/@babel/plugin-proposal-async-generator-functions": { + "version": "7.14.2", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.13.0", + "@babel/helper-remap-async-to-generator": "^7.13.0", + "@babel/plugin-syntax-async-generators": "^7.8.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-class-properties": { + "version": "7.13.0", + "license": "MIT", + "dependencies": { + "@babel/helper-create-class-features-plugin": "^7.13.0", + "@babel/helper-plugin-utils": "^7.13.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-class-static-block": { + "version": "7.14.3", + "license": "MIT", + "dependencies": { + "@babel/helper-create-class-features-plugin": "^7.14.3", + "@babel/helper-plugin-utils": "^7.13.0", + "@babel/plugin-syntax-class-static-block": "^7.12.13" + }, + "peerDependencies": { + "@babel/core": "^7.12.0" + } + }, + "node_modules/@babel/plugin-proposal-decorators": { + "version": "7.14.2", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-create-class-features-plugin": "^7.14.2", + "@babel/helper-plugin-utils": "^7.13.0", + "@babel/plugin-syntax-decorators": "^7.12.13" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-dynamic-import": { + "version": "7.14.2", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.13.0", + "@babel/plugin-syntax-dynamic-import": "^7.8.3" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-export-namespace-from": { + "version": "7.14.2", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.13.0", + "@babel/plugin-syntax-export-namespace-from": "^7.8.3" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-json-strings": { + "version": "7.14.2", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.13.0", + "@babel/plugin-syntax-json-strings": "^7.8.3" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-logical-assignment-operators": { + "version": "7.14.2", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.13.0", + "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-nullish-coalescing-operator": { + "version": "7.14.2", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.13.0", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-numeric-separator": { + "version": "7.14.2", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.13.0", + "@babel/plugin-syntax-numeric-separator": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-object-rest-spread": { + "version": "7.14.4", + "license": "MIT", + "dependencies": { + "@babel/compat-data": "^7.14.4", + "@babel/helper-compilation-targets": "^7.14.4", + "@babel/helper-plugin-utils": "^7.13.0", + "@babel/plugin-syntax-object-rest-spread": "^7.8.3", + "@babel/plugin-transform-parameters": "^7.14.2" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-optional-catch-binding": { + "version": "7.14.2", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.13.0", + "@babel/plugin-syntax-optional-catch-binding": "^7.8.3" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-optional-chaining": { + "version": "7.14.2", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.13.0", + "@babel/helper-skip-transparent-expression-wrappers": "^7.12.1", + "@babel/plugin-syntax-optional-chaining": "^7.8.3" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-private-methods": { + "version": "7.13.0", + "license": "MIT", + "dependencies": { + "@babel/helper-create-class-features-plugin": "^7.13.0", + "@babel/helper-plugin-utils": "^7.13.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-private-property-in-object": { + "version": "7.14.0", + "license": "MIT", + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.12.13", + "@babel/helper-create-class-features-plugin": "^7.14.0", + "@babel/helper-plugin-utils": "^7.13.0", + "@babel/plugin-syntax-private-property-in-object": "^7.14.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-unicode-property-regex": { + "version": "7.12.13", + "license": "MIT", + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.12.13", + "@babel/helper-plugin-utils": "^7.12.13" + }, + "engines": { + "node": ">=4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-async-generators": { + "version": "7.8.4", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-class-properties": { + "version": "7.12.13", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.12.13" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-class-static-block": { + "version": "7.12.13", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.12.13" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-decorators": { + "version": "7.12.13", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.12.13" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-dynamic-import": { + "version": "7.8.3", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-export-namespace-from": { + "version": "7.8.3", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.3" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-json-strings": { + "version": "7.8.3", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-jsx": { + "version": "7.12.13", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.12.13" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-logical-assignment-operators": { + "version": "7.10.4", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-nullish-coalescing-operator": { + "version": "7.8.3", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-numeric-separator": { + "version": "7.10.4", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-object-rest-spread": { + "version": "7.8.3", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-optional-catch-binding": { + "version": "7.8.3", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-optional-chaining": { + "version": "7.8.3", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-private-property-in-object": { + "version": "7.14.0", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.13.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-top-level-await": { + "version": "7.12.13", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.12.13" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-arrow-functions": { + "version": "7.13.0", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.13.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-async-to-generator": { + "version": "7.13.0", + "license": "MIT", + "dependencies": { + "@babel/helper-module-imports": "^7.12.13", + "@babel/helper-plugin-utils": "^7.13.0", + "@babel/helper-remap-async-to-generator": "^7.13.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-block-scoped-functions": { + "version": "7.12.13", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.12.13" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-block-scoping": { + "version": "7.14.4", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.13.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-classes": { + "version": "7.14.4", + "license": "MIT", + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.12.13", + "@babel/helper-function-name": "^7.14.2", + "@babel/helper-optimise-call-expression": "^7.12.13", + "@babel/helper-plugin-utils": "^7.13.0", + "@babel/helper-replace-supers": "^7.14.4", + "@babel/helper-split-export-declaration": "^7.12.13", + "globals": "^11.1.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-computed-properties": { + "version": "7.13.0", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.13.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-destructuring": { + "version": "7.14.4", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.13.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-dotall-regex": { + "version": "7.12.13", + "license": "MIT", + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.12.13", + "@babel/helper-plugin-utils": "^7.12.13" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-duplicate-keys": { + "version": "7.12.13", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.12.13" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-exponentiation-operator": { + "version": "7.12.13", + "license": "MIT", + "dependencies": { + "@babel/helper-builder-binary-assignment-operator-visitor": "^7.12.13", + "@babel/helper-plugin-utils": "^7.12.13" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-for-of": { + "version": "7.13.0", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.13.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-function-name": { + "version": "7.12.13", + "license": "MIT", + "dependencies": { + "@babel/helper-function-name": "^7.12.13", + "@babel/helper-plugin-utils": "^7.12.13" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-literals": { + "version": "7.12.13", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.12.13" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-member-expression-literals": { + "version": "7.12.13", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.12.13" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-modules-amd": { + "version": "7.14.2", + "license": "MIT", + "dependencies": { + "@babel/helper-module-transforms": "^7.14.2", + "@babel/helper-plugin-utils": "^7.13.0", + "babel-plugin-dynamic-import-node": "^2.3.3" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-modules-commonjs": { + "version": "7.14.0", + "license": "MIT", + "dependencies": { + "@babel/helper-module-transforms": "^7.14.0", + "@babel/helper-plugin-utils": "^7.13.0", + "@babel/helper-simple-access": "^7.13.12", + "babel-plugin-dynamic-import-node": "^2.3.3" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-modules-systemjs": { + "version": "7.13.8", + "license": "MIT", + "dependencies": { + "@babel/helper-hoist-variables": "^7.13.0", + "@babel/helper-module-transforms": "^7.13.0", + "@babel/helper-plugin-utils": "^7.13.0", + "@babel/helper-validator-identifier": "^7.12.11", + "babel-plugin-dynamic-import-node": "^2.3.3" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-modules-umd": { + "version": "7.14.0", + "license": "MIT", + "dependencies": { + "@babel/helper-module-transforms": "^7.14.0", + "@babel/helper-plugin-utils": "^7.13.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-named-capturing-groups-regex": { + "version": "7.12.13", + "license": "MIT", + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.12.13" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/plugin-transform-new-target": { + "version": "7.12.13", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.12.13" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-object-super": { + "version": "7.12.13", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.12.13", + "@babel/helper-replace-supers": "^7.12.13" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-parameters": { + "version": "7.14.2", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.13.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-property-literals": { + "version": "7.12.13", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.12.13" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-regenerator": { + "version": "7.13.15", + "license": "MIT", + "dependencies": { + "regenerator-transform": "^0.14.2" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-reserved-words": { + "version": "7.12.13", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.12.13" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-runtime": { + "version": "7.14.3", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-module-imports": "^7.13.12", + "@babel/helper-plugin-utils": "^7.13.0", + "babel-plugin-polyfill-corejs2": "^0.2.0", + "babel-plugin-polyfill-corejs3": "^0.2.0", + "babel-plugin-polyfill-regenerator": "^0.2.0", + "semver": "^6.3.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-shorthand-properties": { + "version": "7.12.13", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.12.13" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-spread": { + "version": "7.13.0", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.13.0", + "@babel/helper-skip-transparent-expression-wrappers": "^7.12.1" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-sticky-regex": { + "version": "7.12.13", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.12.13" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-template-literals": { + "version": "7.13.0", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.13.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-typeof-symbol": { + "version": "7.12.13", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.12.13" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-unicode-escapes": { + "version": "7.12.13", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.12.13" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-unicode-regex": { + "version": "7.12.13", + "license": "MIT", + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.12.13", + "@babel/helper-plugin-utils": "^7.12.13" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/preset-env": { + "version": "7.14.4", + "license": "MIT", + "dependencies": { + "@babel/compat-data": "^7.14.4", + "@babel/helper-compilation-targets": "^7.14.4", + "@babel/helper-plugin-utils": "^7.13.0", + "@babel/helper-validator-option": "^7.12.17", + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.13.12", + "@babel/plugin-proposal-async-generator-functions": "^7.14.2", + "@babel/plugin-proposal-class-properties": "^7.13.0", + "@babel/plugin-proposal-class-static-block": "^7.14.3", + "@babel/plugin-proposal-dynamic-import": "^7.14.2", + "@babel/plugin-proposal-export-namespace-from": "^7.14.2", + "@babel/plugin-proposal-json-strings": "^7.14.2", + "@babel/plugin-proposal-logical-assignment-operators": "^7.14.2", + "@babel/plugin-proposal-nullish-coalescing-operator": "^7.14.2", + "@babel/plugin-proposal-numeric-separator": "^7.14.2", + "@babel/plugin-proposal-object-rest-spread": "^7.14.4", + "@babel/plugin-proposal-optional-catch-binding": "^7.14.2", + "@babel/plugin-proposal-optional-chaining": "^7.14.2", + "@babel/plugin-proposal-private-methods": "^7.13.0", + "@babel/plugin-proposal-private-property-in-object": "^7.14.0", + "@babel/plugin-proposal-unicode-property-regex": "^7.12.13", + "@babel/plugin-syntax-async-generators": "^7.8.4", + "@babel/plugin-syntax-class-properties": "^7.12.13", + "@babel/plugin-syntax-class-static-block": "^7.12.13", + "@babel/plugin-syntax-dynamic-import": "^7.8.3", + "@babel/plugin-syntax-export-namespace-from": "^7.8.3", + "@babel/plugin-syntax-json-strings": "^7.8.3", + "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3", + "@babel/plugin-syntax-numeric-separator": "^7.10.4", + "@babel/plugin-syntax-object-rest-spread": "^7.8.3", + "@babel/plugin-syntax-optional-catch-binding": "^7.8.3", + "@babel/plugin-syntax-optional-chaining": "^7.8.3", + "@babel/plugin-syntax-private-property-in-object": "^7.14.0", + "@babel/plugin-syntax-top-level-await": "^7.12.13", + "@babel/plugin-transform-arrow-functions": "^7.13.0", + "@babel/plugin-transform-async-to-generator": "^7.13.0", + "@babel/plugin-transform-block-scoped-functions": "^7.12.13", + "@babel/plugin-transform-block-scoping": "^7.14.4", + "@babel/plugin-transform-classes": "^7.14.4", + "@babel/plugin-transform-computed-properties": "^7.13.0", + "@babel/plugin-transform-destructuring": "^7.14.4", + "@babel/plugin-transform-dotall-regex": "^7.12.13", + "@babel/plugin-transform-duplicate-keys": "^7.12.13", + "@babel/plugin-transform-exponentiation-operator": "^7.12.13", + "@babel/plugin-transform-for-of": "^7.13.0", + "@babel/plugin-transform-function-name": "^7.12.13", + "@babel/plugin-transform-literals": "^7.12.13", + "@babel/plugin-transform-member-expression-literals": "^7.12.13", + "@babel/plugin-transform-modules-amd": "^7.14.2", + "@babel/plugin-transform-modules-commonjs": "^7.14.0", + "@babel/plugin-transform-modules-systemjs": "^7.13.8", + "@babel/plugin-transform-modules-umd": "^7.14.0", + "@babel/plugin-transform-named-capturing-groups-regex": "^7.12.13", + "@babel/plugin-transform-new-target": "^7.12.13", + "@babel/plugin-transform-object-super": "^7.12.13", + "@babel/plugin-transform-parameters": "^7.14.2", + "@babel/plugin-transform-property-literals": "^7.12.13", + "@babel/plugin-transform-regenerator": "^7.13.15", + "@babel/plugin-transform-reserved-words": "^7.12.13", + "@babel/plugin-transform-shorthand-properties": "^7.12.13", + "@babel/plugin-transform-spread": "^7.13.0", + "@babel/plugin-transform-sticky-regex": "^7.12.13", + "@babel/plugin-transform-template-literals": "^7.13.0", + "@babel/plugin-transform-typeof-symbol": "^7.12.13", + "@babel/plugin-transform-unicode-escapes": "^7.12.13", + "@babel/plugin-transform-unicode-regex": "^7.12.13", + "@babel/preset-modules": "^0.1.4", + "@babel/types": "^7.14.4", + "babel-plugin-polyfill-corejs2": "^0.2.0", + "babel-plugin-polyfill-corejs3": "^0.2.0", + "babel-plugin-polyfill-regenerator": "^0.2.0", + "core-js-compat": "^3.9.0", + "semver": "^6.3.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/preset-modules": { + "version": "0.1.4", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.0.0", + "@babel/plugin-proposal-unicode-property-regex": "^7.4.4", + "@babel/plugin-transform-dotall-regex": "^7.4.4", + "@babel/types": "^7.4.4", + "esutils": "^2.0.2" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/runtime": { + "version": "7.14.0", + "license": "MIT", + "dependencies": { + "regenerator-runtime": "^0.13.4" + } + }, + "node_modules/@babel/template": { + "version": "7.12.13", + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.12.13", + "@babel/parser": "^7.12.13", + "@babel/types": "^7.12.13" + } + }, + "node_modules/@babel/traverse": { + "version": "7.14.2", + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.12.13", + "@babel/generator": "^7.14.2", + "@babel/helper-function-name": "^7.14.2", + "@babel/helper-split-export-declaration": "^7.12.13", + "@babel/parser": "^7.14.2", + "@babel/types": "^7.14.2", + "debug": "^4.1.0", + "globals": "^11.1.0" + } + }, + "node_modules/@babel/types": { + "version": "7.14.4", + "license": "MIT", + "dependencies": { + "@babel/helper-validator-identifier": "^7.14.0", + "to-fast-properties": "^2.0.0" + } + }, + "node_modules/@braintree/sanitize-url": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@braintree/sanitize-url/-/sanitize-url-3.1.0.tgz", + "integrity": "sha512-GcIY79elgB+azP74j8vqkiXz8xLFfIzbQJdlwOPisgbKT00tviJQuEghOXSMVxJ00HoYJbGswr4kcllUc4xCcg==" + }, + "node_modules/@eslint/eslintrc": { + "version": "0.4.2", + "license": "MIT", + "dependencies": { + "ajv": "^6.12.4", + "debug": "^4.1.1", + "espree": "^7.3.0", + "globals": "^13.9.0", + "ignore": "^4.0.6", + "import-fresh": "^3.2.1", + "js-yaml": "^3.13.1", + "minimatch": "^3.0.4", + "strip-json-comments": "^3.1.1" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + } + }, + "node_modules/@eslint/eslintrc/node_modules/globals": { + "version": "13.9.0", + "license": "MIT", + "dependencies": { + "type-fest": "^0.20.2" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@hapi/address": { + "version": "2.1.4", + "license": "BSD-3-Clause" + }, + "node_modules/@hapi/bourne": { + "version": "1.3.2", + "dev": true, + "license": "BSD-3-Clause" + }, + "node_modules/@hapi/formula": { + "version": "1.2.0", + "license": "BSD-3-Clause" + }, + "node_modules/@hapi/hoek": { + "version": "8.5.1", + "license": "BSD-3-Clause" + }, + "node_modules/@hapi/joi": { + "version": "15.1.1", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "@hapi/address": "2.x.x", + "@hapi/bourne": "1.x.x", + "@hapi/hoek": "8.x.x", + "@hapi/topo": "3.x.x" + } + }, + "node_modules/@hapi/pinpoint": { + "version": "1.0.2", + "license": "BSD-3-Clause" + }, + "node_modules/@hapi/topo": { + "version": "3.1.6", + "license": "BSD-3-Clause", + "dependencies": { + "@hapi/hoek": "^8.3.0" + } + }, + "node_modules/@intervolga/optimize-cssnano-plugin": { + "version": "1.0.6", + "dev": true, + "license": "MIT", + "dependencies": { + "cssnano": "^4.0.0", + "cssnano-preset-default": "^4.0.0", + "postcss": "^7.0.0" + }, + "peerDependencies": { + "webpack": "^4.0.0" + } + }, + "node_modules/@kangc/v-md-editor": { + "version": "1.7.7", + "resolved": "https://registry.npmjs.org/@kangc/v-md-editor/-/v-md-editor-1.7.7.tgz", + "integrity": "sha512-QHywavUEATztkAANR847izkJvHtbJbrln/bqBXUrxUust27f4Q4NegMQSwejt7UbIyubv9VKCA+lBJsnE2EixA==", + "dependencies": { + "@vuepress/markdown": "^1.8.2", + "codemirror": "^5.61.0", + "copy-to-clipboard": "^3.3.1", + "highlight.js": "^10.7.1", + "insert-text-at-cursor": "^0.3.0", + "katex": "^0.13.11", + "markdown-it": "^12.0.6", + "markdown-it-attrs": "^4.0.0", + "markdown-it-container": "^3.0.0", + "mermaid": "^8.10.1", + "prismjs": "^1.23.0", + "resize-observer-polyfill": "^1.5.1", + "xss": "^1.0.9" + }, + "peerDependencies": { + "vue": "^2.6.11", + "vue-template-compiler": "^2.6.11" + } + }, + "node_modules/@kazupon/vue-i18n-loader": { + "version": "0.5.0", + "dev": true, + "license": "MIT", + "dependencies": { + "js-yaml": "^3.13.1", + "json5": "^2.1.1" + }, + "engines": { + "node": ">= 10" + } + }, + "node_modules/@kevinfaguiar/vue-twemoji-picker": { + "version": "5.7.4", + "license": "MIT", + "dependencies": { + "@popperjs/core": "^2.4.0", + "lodash.pick": "^4.4.0", + "twemoji": "^13.0.0", + "twitter-text": "^3.1.0", + "vue-clickaway": "^2.2.2" + }, + "peerDependencies": { + "vue": "^2.6.11" + } + }, + "node_modules/@mrmlnc/readdir-enhanced": { + "version": "2.2.1", + "license": "MIT", + "dependencies": { + "call-me-maybe": "^1.0.1", + "glob-to-regexp": "^0.3.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/@nodelib/fs.scandir": { + "version": "2.1.5", + "dev": true, + "license": "MIT", + "dependencies": { + "@nodelib/fs.stat": "2.0.5", + "run-parallel": "^1.1.9" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.stat": { + "version": "2.0.5", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.walk": { + "version": "1.2.7", + "dev": true, + "license": "MIT", + "dependencies": { + "@nodelib/fs.scandir": "2.1.5", + "fastq": "^1.6.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nuxt/opencollective": { + "version": "0.3.2", + "license": "MIT", + "dependencies": { + "chalk": "^4.1.0", + "consola": "^2.15.0", + "node-fetch": "^2.6.1" + }, + "bin": { + "opencollective": "bin/opencollective.js" + }, + "engines": { + "node": ">=8.0.0", + "npm": ">=5.0.0" + } + }, + "node_modules/@nuxt/opencollective/node_modules/chalk": { + "version": "4.1.1", + "license": "MIT", + "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/@nuxt/opencollective/node_modules/has-flag": { + "version": "4.0.0", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/@nuxt/opencollective/node_modules/supports-color": { + "version": "7.2.0", + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@popperjs/core": { + "version": "2.10.2", + "resolved": "https://registry.npmjs.org/@popperjs/core/-/core-2.10.2.tgz", + "integrity": "sha512-IXf3XA7+XyN7CP9gGh/XB0UxVMlvARGEgGXLubFICsUMGz6Q+DU+i4gGlpOxTjKvXjkJDJC8YdqdKkDj9qZHEQ==", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/popperjs" + } + }, + "node_modules/@riophae/vue-treeselect": { + "version": "0.4.0", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.3.1", + "babel-helper-vue-jsx-merge-props": "^2.0.3", + "easings-css": "^1.0.0", + "fuzzysearch": "^1.0.3", + "is-promise": "^2.1.0", + "lodash": "^4.0.0", + "material-colors": "^1.2.6", + "watch-size": "^2.0.0" + }, + "peerDependencies": { + "vue": "^2.2.0" + } + }, + "node_modules/@rollup/plugin-node-resolve": { + "version": "7.1.3", + "dev": true, + "license": "MIT", + "dependencies": { + "@rollup/pluginutils": "^3.0.8", + "@types/resolve": "0.0.8", + "builtin-modules": "^3.1.0", + "is-module": "^1.0.0", + "resolve": "^1.14.2" + }, + "engines": { + "node": ">= 8.0.0" + }, + "peerDependencies": { + "rollup": "^1.20.0||^2.0.0" + } + }, + "node_modules/@rollup/plugin-node-resolve/node_modules/@types/resolve": { + "version": "0.0.8", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@rollup/plugin-replace": { + "version": "2.4.2", + "dev": true, + "license": "MIT", + "dependencies": { + "@rollup/pluginutils": "^3.1.0", + "magic-string": "^0.25.7" + }, + "peerDependencies": { + "rollup": "^1.20.0 || ^2.0.0" + } + }, + "node_modules/@rollup/pluginutils": { + "version": "3.1.0", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/estree": "0.0.39", + "estree-walker": "^1.0.1", + "picomatch": "^2.2.2" + }, + "engines": { + "node": ">= 8.0.0" + }, + "peerDependencies": { + "rollup": "^1.20.0||^2.0.0" + } + }, + "node_modules/@rollup/pluginutils/node_modules/@types/estree": { + "version": "0.0.39", + "dev": true, + "license": "MIT" + }, + "node_modules/@rollup/pluginutils/node_modules/estree-walker": { + "version": "1.0.1", + "dev": true, + "license": "MIT" + }, + "node_modules/@soda/friendly-errors-webpack-plugin": { + "version": "1.8.0", + "dev": true, + "license": "MIT", + "dependencies": { + "chalk": "^2.4.2", + "error-stack-parser": "^2.0.2", + "string-width": "^2.0.0", + "strip-ansi": "^5" + }, + "engines": { + "node": ">=8.0.0" + }, + "peerDependencies": { + "webpack": "^4.0.0 || ^5.0.0" + } + }, + "node_modules/@soda/friendly-errors-webpack-plugin/node_modules/ansi-regex": { + "version": "4.1.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/@soda/friendly-errors-webpack-plugin/node_modules/string-width": { + "version": "2.1.1", + "dev": true, + "license": "MIT", + "dependencies": { + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^4.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/@soda/friendly-errors-webpack-plugin/node_modules/string-width/node_modules/ansi-regex": { + "version": "3.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/@soda/friendly-errors-webpack-plugin/node_modules/string-width/node_modules/strip-ansi": { + "version": "4.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-regex": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/@soda/friendly-errors-webpack-plugin/node_modules/strip-ansi": { + "version": "5.2.0", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-regex": "^4.1.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/@soda/get-current-script": { + "version": "1.0.2", + "dev": true, + "license": "MIT" + }, + "node_modules/@surma/rollup-plugin-off-main-thread": { + "version": "1.4.2", + "license": "Apache-2.0", + "dependencies": { + "ejs": "^2.6.1", + "magic-string": "^0.25.0" + } + }, + "node_modules/@types/body-parser": { + "version": "1.19.0", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/connect": "*", + "@types/node": "*" + } + }, + "node_modules/@types/connect": { + "version": "3.4.34", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/connect-history-api-fallback": { + "version": "1.3.4", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/express-serve-static-core": "*", + "@types/node": "*" + } + }, + "node_modules/@types/estree": { + "version": "0.0.48", + "license": "MIT" + }, + "node_modules/@types/express": { + "version": "4.17.12", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/body-parser": "*", + "@types/express-serve-static-core": "^4.17.18", + "@types/qs": "*", + "@types/serve-static": "*" + } + }, + "node_modules/@types/express-serve-static-core": { + "version": "4.17.21", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/node": "*", + "@types/qs": "*", + "@types/range-parser": "*" + } + }, + "node_modules/@types/glob": { + "version": "7.1.3", + "license": "MIT", + "dependencies": { + "@types/minimatch": "*", + "@types/node": "*" + } + }, + "node_modules/@types/http-proxy": { + "version": "1.17.6", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/json-schema": { + "version": "7.0.7", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/mime": { + "version": "1.3.2", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/minimatch": { + "version": "3.0.4", + "license": "MIT" + }, + "node_modules/@types/minimist": { + "version": "1.2.1", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/node": { + "version": "15.12.2", + "license": "MIT" + }, + "node_modules/@types/normalize-package-data": { + "version": "2.4.0", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/parse-json": { + "version": "4.0.0", + "dev": true, + "license": "MIT", + "optional": true + }, + "node_modules/@types/q": { + "version": "1.5.4", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/qs": { + "version": "6.9.6", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/range-parser": { + "version": "1.2.3", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/resolve": { + "version": "1.17.1", + "license": "MIT", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/serve-static": { + "version": "1.13.9", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/mime": "^1", + "@types/node": "*" + } + }, + "node_modules/@types/source-list-map": { + "version": "0.1.2", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/tapable": { + "version": "1.0.7", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/uglify-js": { + "version": "3.13.0", + "dev": true, + "license": "MIT", + "dependencies": { + "source-map": "^0.6.1" + } + }, + "node_modules/@types/webpack": { + "version": "4.41.29", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/node": "*", + "@types/tapable": "^1", + "@types/uglify-js": "*", + "@types/webpack-sources": "*", + "anymatch": "^3.0.0", + "source-map": "^0.6.0" + } + }, + "node_modules/@types/webpack-dev-server": { + "version": "3.11.4", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/connect-history-api-fallback": "*", + "@types/express": "*", + "@types/serve-static": "*", + "@types/webpack": "^4", + "http-proxy-middleware": "^1.0.0" + } + }, + "node_modules/@types/webpack-dev-server/node_modules/braces": { + "version": "3.0.2", + "dev": true, + "license": "MIT", + "dependencies": { + "fill-range": "^7.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@types/webpack-dev-server/node_modules/fill-range": { + "version": "7.0.1", + "dev": true, + "license": "MIT", + "dependencies": { + "to-regex-range": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@types/webpack-dev-server/node_modules/http-proxy-middleware": { + "version": "1.3.1", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/http-proxy": "^1.17.5", + "http-proxy": "^1.18.1", + "is-glob": "^4.0.1", + "is-plain-obj": "^3.0.0", + "micromatch": "^4.0.2" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/@types/webpack-dev-server/node_modules/is-number": { + "version": "7.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/@types/webpack-dev-server/node_modules/micromatch": { + "version": "4.0.4", + "dev": true, + "license": "MIT", + "dependencies": { + "braces": "^3.0.1", + "picomatch": "^2.2.3" + }, + "engines": { + "node": ">=8.6" + } + }, + "node_modules/@types/webpack-dev-server/node_modules/to-regex-range": { + "version": "5.0.1", + "dev": true, + "license": "MIT", + "dependencies": { + "is-number": "^7.0.0" + }, + "engines": { + "node": ">=8.0" + } + }, + "node_modules/@types/webpack-env": { + "version": "1.16.0", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/webpack-sources": { + "version": "2.1.0", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/node": "*", + "@types/source-list-map": "*", + "source-map": "^0.7.3" + } + }, + "node_modules/@types/webpack-sources/node_modules/source-map": { + "version": "0.7.3", + "dev": true, + "license": "BSD-3-Clause", + "engines": { + "node": ">= 8" + } + }, + "node_modules/@typescript-eslint/eslint-plugin": { + "version": "4.26.1", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/experimental-utils": "4.26.1", + "@typescript-eslint/scope-manager": "4.26.1", + "debug": "^4.3.1", + "functional-red-black-tree": "^1.0.1", + "lodash": "^4.17.21", + "regexpp": "^3.1.0", + "semver": "^7.3.5", + "tsutils": "^3.21.0" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "@typescript-eslint/parser": "^4.0.0", + "eslint": "^5.0.0 || ^6.0.0 || ^7.0.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/eslint-plugin/node_modules/lru-cache": { + "version": "6.0.0", + "dev": true, + "license": "ISC", + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@typescript-eslint/eslint-plugin/node_modules/semver": { + "version": "7.3.5", + "dev": true, + "license": "ISC", + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@typescript-eslint/experimental-utils": { + "version": "4.26.1", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/json-schema": "^7.0.7", + "@typescript-eslint/scope-manager": "4.26.1", + "@typescript-eslint/types": "4.26.1", + "@typescript-eslint/typescript-estree": "4.26.1", + "eslint-scope": "^5.1.1", + "eslint-utils": "^3.0.0" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "*" + } + }, + "node_modules/@typescript-eslint/experimental-utils/node_modules/eslint-utils": { + "version": "3.0.0", + "dev": true, + "license": "MIT", + "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/experimental-utils/node_modules/eslint-visitor-keys": { + "version": "2.1.0", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=10" + } + }, + "node_modules/@typescript-eslint/parser": { + "version": "4.32.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-4.32.0.tgz", + "integrity": "sha512-lhtYqQ2iEPV5JqV7K+uOVlPePjClj4dOw7K4/Z1F2yvjIUvyr13yJnDzkK6uon4BjHYuHy3EG0c2Z9jEhFk56w==", + "dev": true, + "dependencies": { + "@typescript-eslint/scope-manager": "4.32.0", + "@typescript-eslint/types": "4.32.0", + "@typescript-eslint/typescript-estree": "4.32.0", + "debug": "^4.3.1" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^5.0.0 || ^6.0.0 || ^7.0.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/parser/node_modules/@typescript-eslint/scope-manager": { + "version": "4.32.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-4.32.0.tgz", + "integrity": "sha512-DK+fMSHdM216C0OM/KR1lHXjP1CNtVIhJ54kQxfOE6x8UGFAjha8cXgDMBEIYS2XCYjjCtvTkjQYwL3uvGOo0w==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "4.32.0", + "@typescript-eslint/visitor-keys": "4.32.0" + }, + "engines": { + "node": "^8.10.0 || ^10.13.0 || >=11.10.1" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/parser/node_modules/@typescript-eslint/types": { + "version": "4.32.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-4.32.0.tgz", + "integrity": "sha512-LE7Z7BAv0E2UvqzogssGf1x7GPpUalgG07nGCBYb1oK4mFsOiFC/VrSMKbZQzFJdN2JL5XYmsx7C7FX9p9ns0w==", + "dev": true, + "engines": { + "node": "^8.10.0 || ^10.13.0 || >=11.10.1" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/parser/node_modules/@typescript-eslint/typescript-estree": { + "version": "4.32.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-4.32.0.tgz", + "integrity": "sha512-tRYCgJ3g1UjMw1cGG8Yn1KzOzNlQ6u1h9AmEtPhb5V5a1TmiHWcRyF/Ic+91M4f43QeChyYlVTcf3DvDTZR9vw==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "4.32.0", + "@typescript-eslint/visitor-keys": "4.32.0", + "debug": "^4.3.1", + "globby": "^11.0.3", + "is-glob": "^4.0.1", + "semver": "^7.3.5", + "tsutils": "^3.21.0" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/parser/node_modules/@typescript-eslint/visitor-keys": { + "version": "4.32.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-4.32.0.tgz", + "integrity": "sha512-e7NE0qz8W+atzv3Cy9qaQ7BTLwWsm084Z0c4nIO2l3Bp6u9WIgdqCgyPyV5oSPDMIW3b20H59OOCmVk3jw3Ptw==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "4.32.0", + "eslint-visitor-keys": "^2.0.0" + }, + "engines": { + "node": "^8.10.0 || ^10.13.0 || >=11.10.1" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/parser/node_modules/array-union": { + "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, + "engines": { + "node": ">=8" + } + }, + "node_modules/@typescript-eslint/parser/node_modules/braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "dev": true, + "dependencies": { + "fill-range": "^7.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@typescript-eslint/parser/node_modules/dir-glob": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", + "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", + "dev": true, + "dependencies": { + "path-type": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@typescript-eslint/parser/node_modules/eslint-visitor-keys": { + "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, + "engines": { + "node": ">=10" + } + }, + "node_modules/@typescript-eslint/parser/node_modules/fast-glob": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.7.tgz", + "integrity": "sha512-rYGMRwip6lUMvYD3BTScMwT1HtAs2d71SMv66Vrxs0IekGZEjhM0pcMfjQPnknBt2zeCwQMEupiN02ZP4DiT1Q==", + "dev": true, + "dependencies": { + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.2", + "merge2": "^1.3.0", + "micromatch": "^4.0.4" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@typescript-eslint/parser/node_modules/fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "dev": true, + "dependencies": { + "to-regex-range": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@typescript-eslint/parser/node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/@typescript-eslint/parser/node_modules/globby": { + "version": "11.0.4", + "resolved": "https://registry.npmjs.org/globby/-/globby-11.0.4.tgz", + "integrity": "sha512-9O4MVG9ioZJ08ffbcyVYyLOJLk5JQ688pJ4eMGLpdWLHq/Wr1D9BlriLQyL0E+jbkuePVZXYFj47QM/v093wHg==", + "dev": true, + "dependencies": { + "array-union": "^2.1.0", + "dir-glob": "^3.0.1", + "fast-glob": "^3.1.1", + "ignore": "^5.1.4", + "merge2": "^1.3.0", + "slash": "^3.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@typescript-eslint/parser/node_modules/ignore": { + "version": "5.1.8", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.1.8.tgz", + "integrity": "sha512-BMpfD7PpiETpBl/A6S498BaIJ6Y/ABT93ETbby2fP00v4EbvPBXWEoaR1UBPKs3iR53pJY7EtZk5KACI57i1Uw==", + "dev": true, + "engines": { + "node": ">= 4" + } + }, + "node_modules/@typescript-eslint/parser/node_modules/is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true, + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/@typescript-eslint/parser/node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@typescript-eslint/parser/node_modules/micromatch": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.4.tgz", + "integrity": "sha512-pRmzw/XUcwXGpD9aI9q/0XOwLNygjETJ8y0ao0wdqprrzDa4YnxLcz7fQRZr8voh8V10kGhABbNcHVk5wHgWwg==", + "dev": true, + "dependencies": { + "braces": "^3.0.1", + "picomatch": "^2.2.3" + }, + "engines": { + "node": ">=8.6" + } + }, + "node_modules/@typescript-eslint/parser/node_modules/semver": { + "version": "7.3.5", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", + "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", + "dev": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@typescript-eslint/parser/node_modules/slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/@typescript-eslint/parser/node_modules/to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dev": true, + "dependencies": { + "is-number": "^7.0.0" + }, + "engines": { + "node": ">=8.0" + } + }, + "node_modules/@typescript-eslint/scope-manager": { + "version": "4.26.1", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/types": "4.26.1", + "@typescript-eslint/visitor-keys": "4.26.1" + }, + "engines": { + "node": "^8.10.0 || ^10.13.0 || >=11.10.1" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/types": { + "version": "4.26.1", + "dev": true, + "license": "MIT", + "engines": { + "node": "^8.10.0 || ^10.13.0 || >=11.10.1" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/typescript-estree": { + "version": "4.26.1", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "@typescript-eslint/types": "4.26.1", + "@typescript-eslint/visitor-keys": "4.26.1", + "debug": "^4.3.1", + "globby": "^11.0.3", + "is-glob": "^4.0.1", + "semver": "^7.3.5", + "tsutils": "^3.21.0" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/typescript-estree/node_modules/array-union": { + "version": "2.1.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/@typescript-eslint/typescript-estree/node_modules/braces": { + "version": "3.0.2", + "dev": true, + "license": "MIT", + "dependencies": { + "fill-range": "^7.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@typescript-eslint/typescript-estree/node_modules/dir-glob": { + "version": "3.0.1", + "dev": true, + "license": "MIT", + "dependencies": { + "path-type": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@typescript-eslint/typescript-estree/node_modules/fast-glob": { + "version": "3.2.5", + "dev": true, + "license": "MIT", + "dependencies": { + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.0", + "merge2": "^1.3.0", + "micromatch": "^4.0.2", + "picomatch": "^2.2.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@typescript-eslint/typescript-estree/node_modules/fill-range": { + "version": "7.0.1", + "dev": true, + "license": "MIT", + "dependencies": { + "to-regex-range": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@typescript-eslint/typescript-estree/node_modules/glob-parent": { + "version": "5.1.2", + "dev": true, + "license": "ISC", + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/@typescript-eslint/typescript-estree/node_modules/globby": { + "version": "11.0.3", + "dev": true, + "license": "MIT", + "dependencies": { + "array-union": "^2.1.0", + "dir-glob": "^3.0.1", + "fast-glob": "^3.1.1", + "ignore": "^5.1.4", + "merge2": "^1.3.0", + "slash": "^3.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@typescript-eslint/typescript-estree/node_modules/ignore": { + "version": "5.1.8", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 4" + } + }, + "node_modules/@typescript-eslint/typescript-estree/node_modules/is-number": { + "version": "7.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/@typescript-eslint/typescript-estree/node_modules/lru-cache": { + "version": "6.0.0", + "dev": true, + "license": "ISC", + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@typescript-eslint/typescript-estree/node_modules/micromatch": { + "version": "4.0.4", + "dev": true, + "license": "MIT", + "dependencies": { + "braces": "^3.0.1", + "picomatch": "^2.2.3" + }, + "engines": { + "node": ">=8.6" + } + }, + "node_modules/@typescript-eslint/typescript-estree/node_modules/semver": { + "version": "7.3.5", + "dev": true, + "license": "ISC", + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@typescript-eslint/typescript-estree/node_modules/slash": { + "version": "3.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/@typescript-eslint/typescript-estree/node_modules/to-regex-range": { + "version": "5.0.1", + "dev": true, + "license": "MIT", + "dependencies": { + "is-number": "^7.0.0" + }, + "engines": { + "node": ">=8.0" + } + }, + "node_modules/@typescript-eslint/visitor-keys": { + "version": "4.26.1", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/types": "4.26.1", + "eslint-visitor-keys": "^2.0.0" + }, + "engines": { + "node": "^8.10.0 || ^10.13.0 || >=11.10.1" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/visitor-keys/node_modules/eslint-visitor-keys": { + "version": "2.1.0", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=10" + } + }, + "node_modules/@vue/babel-helper-vue-jsx-merge-props": { + "version": "1.2.1", + "dev": true, + "license": "MIT" + }, + "node_modules/@vue/babel-helper-vue-transform-on": { + "version": "1.0.2", + "dev": true, + "license": "MIT" + }, + "node_modules/@vue/babel-plugin-jsx": { + "version": "1.0.6", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-module-imports": "^7.0.0", + "@babel/plugin-syntax-jsx": "^7.0.0", + "@babel/template": "^7.0.0", + "@babel/traverse": "^7.0.0", + "@babel/types": "^7.0.0", + "@vue/babel-helper-vue-transform-on": "^1.0.2", + "camelcase": "^6.0.0", + "html-tags": "^3.1.0", + "svg-tags": "^1.0.0" + } + }, + "node_modules/@vue/babel-plugin-jsx/node_modules/camelcase": { + "version": "6.2.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@vue/babel-plugin-jsx/node_modules/html-tags": { + "version": "3.1.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/@vue/babel-plugin-transform-vue-jsx": { + "version": "1.2.1", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-module-imports": "^7.0.0", + "@babel/plugin-syntax-jsx": "^7.2.0", + "@vue/babel-helper-vue-jsx-merge-props": "^1.2.1", + "html-tags": "^2.0.0", + "lodash.kebabcase": "^4.1.1", + "svg-tags": "^1.0.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@vue/babel-preset-app": { + "version": "4.5.13", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/core": "^7.11.0", + "@babel/helper-compilation-targets": "^7.9.6", + "@babel/helper-module-imports": "^7.8.3", + "@babel/plugin-proposal-class-properties": "^7.8.3", + "@babel/plugin-proposal-decorators": "^7.8.3", + "@babel/plugin-syntax-dynamic-import": "^7.8.3", + "@babel/plugin-syntax-jsx": "^7.8.3", + "@babel/plugin-transform-runtime": "^7.11.0", + "@babel/preset-env": "^7.11.0", + "@babel/runtime": "^7.11.0", + "@vue/babel-plugin-jsx": "^1.0.3", + "@vue/babel-preset-jsx": "^1.2.4", + "babel-plugin-dynamic-import-node": "^2.3.3", + "core-js": "^3.6.5", + "core-js-compat": "^3.6.5", + "semver": "^6.1.0" + }, + "peerDependencies": { + "@babel/core": "*", + "core-js": "^3", + "vue": "^2 || ^3.0.0-0" + }, + "peerDependenciesMeta": { + "core-js": { + "optional": true + }, + "vue": { + "optional": true + } + } + }, + "node_modules/@vue/babel-preset-jsx": { + "version": "1.2.4", + "dev": true, + "license": "MIT", + "dependencies": { + "@vue/babel-helper-vue-jsx-merge-props": "^1.2.1", + "@vue/babel-plugin-transform-vue-jsx": "^1.2.1", + "@vue/babel-sugar-composition-api-inject-h": "^1.2.1", + "@vue/babel-sugar-composition-api-render-instance": "^1.2.4", + "@vue/babel-sugar-functional-vue": "^1.2.2", + "@vue/babel-sugar-inject-h": "^1.2.2", + "@vue/babel-sugar-v-model": "^1.2.3", + "@vue/babel-sugar-v-on": "^1.2.3" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@vue/babel-sugar-composition-api-inject-h": { + "version": "1.2.1", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/plugin-syntax-jsx": "^7.2.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@vue/babel-sugar-composition-api-render-instance": { + "version": "1.2.4", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/plugin-syntax-jsx": "^7.2.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@vue/babel-sugar-functional-vue": { + "version": "1.2.2", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/plugin-syntax-jsx": "^7.2.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@vue/babel-sugar-inject-h": { + "version": "1.2.2", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/plugin-syntax-jsx": "^7.2.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@vue/babel-sugar-v-model": { + "version": "1.2.3", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/plugin-syntax-jsx": "^7.2.0", + "@vue/babel-helper-vue-jsx-merge-props": "^1.2.1", + "@vue/babel-plugin-transform-vue-jsx": "^1.2.1", + "camelcase": "^5.0.0", + "html-tags": "^2.0.0", + "svg-tags": "^1.0.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@vue/babel-sugar-v-on": { + "version": "1.2.3", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/plugin-syntax-jsx": "^7.2.0", + "@vue/babel-plugin-transform-vue-jsx": "^1.2.1", + "camelcase": "^5.0.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@vue/cli-overlay": { + "version": "4.5.13", + "dev": true, + "license": "MIT" + }, + "node_modules/@vue/cli-plugin-babel": { + "version": "4.5.13", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/core": "^7.11.0", + "@vue/babel-preset-app": "^4.5.13", + "@vue/cli-shared-utils": "^4.5.13", + "babel-loader": "^8.1.0", + "cache-loader": "^4.1.0", + "thread-loader": "^2.1.3", + "webpack": "^4.0.0" + }, + "peerDependencies": { + "@vue/cli-service": "^3.0.0 || ^4.0.0-0" + } + }, + "node_modules/@vue/cli-plugin-eslint": { + "version": "4.5.13", + "dev": true, + "license": "MIT", + "dependencies": { + "@vue/cli-shared-utils": "^4.5.13", + "eslint-loader": "^2.2.1", + "globby": "^9.2.0", + "inquirer": "^7.1.0", + "webpack": "^4.0.0", + "yorkie": "^2.0.0" + }, + "peerDependencies": { + "@vue/cli-service": "^3.0.0 || ^4.0.0-0", + "eslint": ">= 1.6.0 < 7.0.0" + } + }, + "node_modules/@vue/cli-plugin-pwa": { + "version": "4.5.13", + "dev": true, + "license": "MIT", + "dependencies": { + "@vue/cli-shared-utils": "^4.5.13", + "webpack": "^4.0.0", + "workbox-webpack-plugin": "^4.3.1" + }, + "peerDependencies": { + "@vue/cli-service": "^3.0.0 || ^4.0.0-0" + } + }, + "node_modules/@vue/cli-plugin-pwa/node_modules/crypto-random-string": { + "version": "1.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/@vue/cli-plugin-pwa/node_modules/source-map": { + "version": "0.7.3", + "dev": true, + "license": "BSD-3-Clause", + "engines": { + "node": ">= 8" + } + }, + "node_modules/@vue/cli-plugin-pwa/node_modules/strip-comments": { + "version": "1.0.2", + "dev": true, + "license": "MIT", + "dependencies": { + "babel-extract-comments": "^1.0.0", + "babel-plugin-transform-object-rest-spread": "^6.26.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/@vue/cli-plugin-pwa/node_modules/temp-dir": { + "version": "1.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/@vue/cli-plugin-pwa/node_modules/tempy": { + "version": "0.3.0", + "dev": true, + "license": "MIT", + "dependencies": { + "temp-dir": "^1.0.0", + "type-fest": "^0.3.1", + "unique-string": "^1.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@vue/cli-plugin-pwa/node_modules/type-fest": { + "version": "0.3.1", + "dev": true, + "license": "(MIT OR CC0-1.0)", + "engines": { + "node": ">=6" + } + }, + "node_modules/@vue/cli-plugin-pwa/node_modules/unique-string": { + "version": "1.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "crypto-random-string": "^1.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/@vue/cli-plugin-pwa/node_modules/workbox-broadcast-update": { + "version": "5.1.4", + "dev": true, + "license": "MIT", + "dependencies": { + "workbox-core": "^5.1.4" + } + }, + "node_modules/@vue/cli-plugin-pwa/node_modules/workbox-build": { + "version": "5.1.4", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/core": "^7.8.4", + "@babel/preset-env": "^7.8.4", + "@babel/runtime": "^7.8.4", + "@hapi/joi": "^15.1.0", + "@rollup/plugin-node-resolve": "^7.1.1", + "@rollup/plugin-replace": "^2.3.1", + "@surma/rollup-plugin-off-main-thread": "^1.1.1", + "common-tags": "^1.8.0", + "fast-json-stable-stringify": "^2.1.0", + "fs-extra": "^8.1.0", + "glob": "^7.1.6", + "lodash.template": "^4.5.0", + "pretty-bytes": "^5.3.0", + "rollup": "^1.31.1", + "rollup-plugin-babel": "^4.3.3", + "rollup-plugin-terser": "^5.3.1", + "source-map": "^0.7.3", + "source-map-url": "^0.4.0", + "stringify-object": "^3.3.0", + "strip-comments": "^1.0.2", + "tempy": "^0.3.0", + "upath": "^1.2.0", + "workbox-background-sync": "^5.1.4", + "workbox-broadcast-update": "^5.1.4", + "workbox-cacheable-response": "^5.1.4", + "workbox-core": "^5.1.4", + "workbox-expiration": "^5.1.4", + "workbox-google-analytics": "^5.1.4", + "workbox-navigation-preload": "^5.1.4", + "workbox-precaching": "^5.1.4", + "workbox-range-requests": "^5.1.4", + "workbox-routing": "^5.1.4", + "workbox-strategies": "^5.1.4", + "workbox-streams": "^5.1.4", + "workbox-sw": "^5.1.4", + "workbox-window": "^5.1.4" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/@vue/cli-plugin-pwa/node_modules/workbox-cacheable-response": { + "version": "5.1.4", + "dev": true, + "license": "MIT", + "dependencies": { + "workbox-core": "^5.1.4" + } + }, + "node_modules/@vue/cli-plugin-pwa/node_modules/workbox-core": { + "version": "5.1.4", + "dev": true, + "license": "MIT" + }, + "node_modules/@vue/cli-plugin-pwa/node_modules/workbox-expiration": { + "version": "5.1.4", + "dev": true, + "license": "MIT", + "dependencies": { + "workbox-core": "^5.1.4" + } + }, + "node_modules/@vue/cli-plugin-pwa/node_modules/workbox-google-analytics": { + "version": "5.1.4", + "dev": true, + "license": "MIT", + "dependencies": { + "workbox-background-sync": "^5.1.4", + "workbox-core": "^5.1.4", + "workbox-routing": "^5.1.4", + "workbox-strategies": "^5.1.4" + } + }, + "node_modules/@vue/cli-plugin-pwa/node_modules/workbox-navigation-preload": { + "version": "5.1.4", + "dev": true, + "license": "MIT", + "dependencies": { + "workbox-core": "^5.1.4" + } + }, + "node_modules/@vue/cli-plugin-pwa/node_modules/workbox-precaching": { + "version": "5.1.4", + "dev": true, + "license": "MIT", + "dependencies": { + "workbox-core": "^5.1.4" + } + }, + "node_modules/@vue/cli-plugin-pwa/node_modules/workbox-range-requests": { + "version": "5.1.4", + "dev": true, + "license": "MIT", + "dependencies": { + "workbox-core": "^5.1.4" + } + }, + "node_modules/@vue/cli-plugin-pwa/node_modules/workbox-routing": { + "version": "5.1.4", + "dev": true, + "license": "MIT", + "dependencies": { + "workbox-core": "^5.1.4" + } + }, + "node_modules/@vue/cli-plugin-pwa/node_modules/workbox-strategies": { + "version": "5.1.4", + "dev": true, + "license": "MIT", + "dependencies": { + "workbox-core": "^5.1.4", + "workbox-routing": "^5.1.4" + } + }, + "node_modules/@vue/cli-plugin-pwa/node_modules/workbox-streams": { + "version": "5.1.4", + "dev": true, + "license": "MIT", + "dependencies": { + "workbox-core": "^5.1.4", + "workbox-routing": "^5.1.4" + } + }, + "node_modules/@vue/cli-plugin-pwa/node_modules/workbox-sw": { + "version": "5.1.4", + "dev": true, + "license": "MIT" + }, + "node_modules/@vue/cli-plugin-pwa/node_modules/workbox-webpack-plugin": { + "version": "5.1.4", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.5.5", + "fast-json-stable-stringify": "^2.0.0", + "source-map-url": "^0.4.0", + "upath": "^1.1.2", + "webpack-sources": "^1.3.0", + "workbox-build": "^5.1.4" + }, + "engines": { + "node": ">=8.0.0" + }, + "peerDependencies": { + "webpack": "^4.0.0" + } + }, + "node_modules/@vue/cli-plugin-pwa/node_modules/workbox-window": { + "version": "5.1.4", + "dev": true, + "license": "MIT", + "dependencies": { + "workbox-core": "^5.1.4" + } + }, + "node_modules/@vue/cli-plugin-router": { + "version": "4.5.13", + "dev": true, + "license": "MIT", + "dependencies": { + "@vue/cli-shared-utils": "^4.5.13" + }, + "peerDependencies": { + "@vue/cli-service": "^3.0.0 || ^4.0.0-0" + } + }, + "node_modules/@vue/cli-plugin-typescript": { + "version": "4.5.13", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/webpack-env": "^1.15.2", + "@vue/cli-shared-utils": "^4.5.13", + "cache-loader": "^4.1.0", + "fork-ts-checker-webpack-plugin": "^3.1.1", + "globby": "^9.2.0", + "thread-loader": "^2.1.3", + "ts-loader": "^6.2.2", + "tslint": "^5.20.1", + "webpack": "^4.0.0", + "yorkie": "^2.0.0" + }, + "optionalDependencies": { + "fork-ts-checker-webpack-plugin-v5": "npm:fork-ts-checker-webpack-plugin@^5.0.11" + }, + "peerDependencies": { + "@vue/cli-service": "^3.0.0 || ^4.0.0-0", + "@vue/compiler-sfc": "^3.0.0-beta.14", + "typescript": ">=2" + }, + "peerDependenciesMeta": { + "@vue/compiler-sfc": { + "optional": true + } + } + }, + "node_modules/@vue/cli-plugin-vuex": { + "version": "4.5.13", + "dev": true, + "license": "MIT", + "peerDependencies": { + "@vue/cli-service": "^3.0.0 || ^4.0.0-0" + } + }, + "node_modules/@vue/cli-service": { + "version": "4.5.13", + "dev": true, + "license": "MIT", + "dependencies": { + "@intervolga/optimize-cssnano-plugin": "^1.0.5", + "@soda/friendly-errors-webpack-plugin": "^1.7.1", + "@soda/get-current-script": "^1.0.0", + "@types/minimist": "^1.2.0", + "@types/webpack": "^4.0.0", + "@types/webpack-dev-server": "^3.11.0", + "@vue/cli-overlay": "^4.5.13", + "@vue/cli-plugin-router": "^4.5.13", + "@vue/cli-plugin-vuex": "^4.5.13", + "@vue/cli-shared-utils": "^4.5.13", + "@vue/component-compiler-utils": "^3.1.2", + "@vue/preload-webpack-plugin": "^1.1.0", + "@vue/web-component-wrapper": "^1.2.0", + "acorn": "^7.4.0", + "acorn-walk": "^7.1.1", + "address": "^1.1.2", + "autoprefixer": "^9.8.6", + "browserslist": "^4.12.0", + "cache-loader": "^4.1.0", + "case-sensitive-paths-webpack-plugin": "^2.3.0", + "cli-highlight": "^2.1.4", + "clipboardy": "^2.3.0", + "cliui": "^6.0.0", + "copy-webpack-plugin": "^5.1.1", + "css-loader": "^3.5.3", + "cssnano": "^4.1.10", + "debug": "^4.1.1", + "default-gateway": "^5.0.5", + "dotenv": "^8.2.0", + "dotenv-expand": "^5.1.0", + "file-loader": "^4.2.0", + "fs-extra": "^7.0.1", + "globby": "^9.2.0", + "hash-sum": "^2.0.0", + "html-webpack-plugin": "^3.2.0", + "launch-editor-middleware": "^2.2.1", + "lodash.defaultsdeep": "^4.6.1", + "lodash.mapvalues": "^4.6.0", + "lodash.transform": "^4.6.0", + "mini-css-extract-plugin": "^0.9.0", + "minimist": "^1.2.5", + "pnp-webpack-plugin": "^1.6.4", + "portfinder": "^1.0.26", + "postcss-loader": "^3.0.0", + "ssri": "^8.0.1", + "terser-webpack-plugin": "^1.4.4", + "thread-loader": "^2.1.3", + "url-loader": "^2.2.0", + "vue-loader": "^15.9.2", + "vue-style-loader": "^4.1.2", + "webpack": "^4.0.0", + "webpack-bundle-analyzer": "^3.8.0", + "webpack-chain": "^6.4.0", + "webpack-dev-server": "^3.11.0", + "webpack-merge": "^4.2.2" + }, + "bin": { + "vue-cli-service": "bin/vue-cli-service.js" + }, + "engines": { + "node": ">=8" + }, + "optionalDependencies": { + "vue-loader-v16": "npm:vue-loader@^16.1.0" + }, + "peerDependencies": { + "@vue/compiler-sfc": "^3.0.0-beta.14", + "vue-template-compiler": "^2.0.0" + }, + "peerDependenciesMeta": { + "@vue/compiler-sfc": { + "optional": true + }, + "less-loader": { + "optional": true + }, + "pug-plain-loader": { + "optional": true + }, + "raw-loader": { + "optional": true + }, + "sass-loader": { + "optional": true + }, + "stylus-loader": { + "optional": true + }, + "vue-template-compiler": { + "optional": true + } + } + }, + "node_modules/@vue/cli-service/node_modules/cliui": { + "version": "6.0.0", + "dev": true, + "license": "ISC", + "dependencies": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^6.2.0" + } + }, + "node_modules/@vue/cli-service/node_modules/fs-extra": { + "version": "7.0.1", + "dev": true, + "license": "MIT", + "dependencies": { + "graceful-fs": "^4.1.2", + "jsonfile": "^4.0.0", + "universalify": "^0.1.0" + }, + "engines": { + "node": ">=6 <7 || >=8" + } + }, + "node_modules/@vue/cli-service/node_modules/hash-sum": { + "version": "2.0.0", + "dev": true, + "license": "MIT" + }, + "node_modules/@vue/cli-service/node_modules/wrap-ansi": { + "version": "6.2.0", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@vue/cli-shared-utils": { + "version": "4.5.13", + "dev": true, + "license": "MIT", + "dependencies": { + "@hapi/joi": "^15.0.1", + "chalk": "^2.4.2", + "execa": "^1.0.0", + "launch-editor": "^2.2.1", + "lru-cache": "^5.1.1", + "node-ipc": "^9.1.1", + "open": "^6.3.0", + "ora": "^3.4.0", + "read-pkg": "^5.1.1", + "request": "^2.88.2", + "semver": "^6.1.0", + "strip-ansi": "^6.0.0" + } + }, + "node_modules/@vue/compiler-core": { + "version": "3.1.1", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/parser": "^7.12.0", + "@babel/types": "^7.12.0", + "@vue/shared": "3.1.1", + "estree-walker": "^2.0.1", + "source-map": "^0.6.1" + } + }, + "node_modules/@vue/compiler-dom": { + "version": "3.1.1", + "dev": true, + "license": "MIT", + "dependencies": { + "@vue/compiler-core": "3.1.1", + "@vue/shared": "3.1.1" + } + }, + "node_modules/@vue/compiler-sfc": { + "version": "3.1.1", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/parser": "^7.13.9", + "@babel/types": "^7.13.0", + "@vue/compiler-core": "3.1.1", + "@vue/compiler-dom": "3.1.1", + "@vue/compiler-ssr": "3.1.1", + "@vue/shared": "3.1.1", + "consolidate": "^0.16.0", + "estree-walker": "^2.0.1", + "hash-sum": "^2.0.0", + "lru-cache": "^5.1.1", + "magic-string": "^0.25.7", + "merge-source-map": "^1.1.0", + "postcss": "^8.1.10", + "postcss-modules": "^4.0.0", + "postcss-selector-parser": "^6.0.4", + "source-map": "^0.6.1" + }, + "peerDependencies": { + "vue": "3.1.1" + } + }, + "node_modules/@vue/compiler-sfc/node_modules/hash-sum": { + "version": "2.0.0", + "dev": true, + "license": "MIT" + }, + "node_modules/@vue/compiler-sfc/node_modules/icss-utils": { + "version": "5.1.0", + "dev": true, + "license": "ISC", + "engines": { + "node": "^10 || ^12 || >= 14" + }, + "peerDependencies": { + "postcss": "^8.1.0" + } + }, + "node_modules/@vue/compiler-sfc/node_modules/postcss": { + "version": "8.3.0", + "dev": true, + "license": "MIT", + "dependencies": { + "colorette": "^1.2.2", + "nanoid": "^3.1.23", + "source-map-js": "^0.6.2" + }, + "engines": { + "node": "^10 || ^12 || >=14" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + } + }, + "node_modules/@vue/compiler-sfc/node_modules/postcss-modules": { + "version": "4.1.3", + "dev": true, + "license": "MIT", + "dependencies": { + "generic-names": "^2.0.1", + "icss-replace-symbols": "^1.1.0", + "lodash.camelcase": "^4.3.0", + "postcss-modules-extract-imports": "^3.0.0", + "postcss-modules-local-by-default": "^4.0.0", + "postcss-modules-scope": "^3.0.0", + "postcss-modules-values": "^4.0.0", + "string-hash": "^1.1.1" + }, + "peerDependencies": { + "postcss": "^8.0.0" + } + }, + "node_modules/@vue/compiler-sfc/node_modules/postcss-modules-extract-imports": { + "version": "3.0.0", + "dev": true, + "license": "ISC", + "engines": { + "node": "^10 || ^12 || >= 14" + }, + "peerDependencies": { + "postcss": "^8.1.0" + } + }, + "node_modules/@vue/compiler-sfc/node_modules/postcss-modules-local-by-default": { + "version": "4.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "icss-utils": "^5.0.0", + "postcss-selector-parser": "^6.0.2", + "postcss-value-parser": "^4.1.0" + }, + "engines": { + "node": "^10 || ^12 || >= 14" + }, + "peerDependencies": { + "postcss": "^8.1.0" + } + }, + "node_modules/@vue/compiler-sfc/node_modules/postcss-modules-scope": { + "version": "3.0.0", + "dev": true, + "license": "ISC", + "dependencies": { + "postcss-selector-parser": "^6.0.4" + }, + "engines": { + "node": "^10 || ^12 || >= 14" + }, + "peerDependencies": { + "postcss": "^8.1.0" + } + }, + "node_modules/@vue/compiler-sfc/node_modules/postcss-modules-values": { + "version": "4.0.0", + "dev": true, + "license": "ISC", + "dependencies": { + "icss-utils": "^5.0.0" + }, + "engines": { + "node": "^10 || ^12 || >= 14" + }, + "peerDependencies": { + "postcss": "^8.1.0" + } + }, + "node_modules/@vue/compiler-sfc/node_modules/postcss-value-parser": { + "version": "4.1.0", + "dev": true, + "license": "MIT" + }, + "node_modules/@vue/compiler-ssr": { + "version": "3.1.1", + "dev": true, + "license": "MIT", + "dependencies": { + "@vue/compiler-dom": "3.1.1", + "@vue/shared": "3.1.1" + } + }, + "node_modules/@vue/component-compiler-utils": { + "version": "3.2.0", + "dev": true, + "license": "MIT", + "dependencies": { + "consolidate": "^0.15.1", + "hash-sum": "^1.0.2", + "lru-cache": "^4.1.2", + "merge-source-map": "^1.1.0", + "postcss": "^7.0.14", + "postcss-selector-parser": "^6.0.2", + "source-map": "~0.6.1", + "vue-template-es2015-compiler": "^1.9.0" + }, + "optionalDependencies": { + "prettier": "^1.18.2" + } + }, + "node_modules/@vue/component-compiler-utils/node_modules/consolidate": { + "version": "0.15.1", + "dev": true, + "license": "MIT", + "dependencies": { + "bluebird": "^3.1.1" + }, + "engines": { + "node": ">= 0.10.0" + } + }, + "node_modules/@vue/component-compiler-utils/node_modules/lru-cache": { + "version": "4.1.5", + "dev": true, + "license": "ISC", + "dependencies": { + "pseudomap": "^1.0.2", + "yallist": "^2.1.2" + } + }, + "node_modules/@vue/component-compiler-utils/node_modules/yallist": { + "version": "2.1.2", + "dev": true, + "license": "ISC" + }, + "node_modules/@vue/eslint-config-typescript": { + "version": "7.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "vue-eslint-parser": "^7.0.0" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + }, + "peerDependencies": { + "@typescript-eslint/eslint-plugin": "^4.4.0", + "@typescript-eslint/parser": "^4.4.0", + "eslint": "^5.0.0 || ^6.0.0 || ^7.0.0", + "eslint-plugin-vue": "^5.2.3 || ^6.0.0 || ^7.0.0" + } + }, + "node_modules/@vue/preload-webpack-plugin": { + "version": "1.1.2", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=6.0.0" + }, + "peerDependencies": { + "html-webpack-plugin": ">=2.26.0", + "webpack": ">=4.0.0" + } + }, + "node_modules/@vue/shared": { + "version": "3.1.1", + "dev": true, + "license": "MIT" + }, + "node_modules/@vue/web-component-wrapper": { + "version": "1.3.0", + "dev": true, + "license": "MIT" + }, + "node_modules/@vuepress/markdown": { + "version": "1.8.2", + "resolved": "https://registry.npmjs.org/@vuepress/markdown/-/markdown-1.8.2.tgz", + "integrity": "sha512-zznBHVqW+iBkznF/BO/GY9RFu53khyl0Ey0PnGqvwCJpRLNan6y5EXgYumtjw2GSYn5nDTTALYxtyNBdz64PKg==", + "dependencies": { + "@vuepress/shared-utils": "1.8.2", + "markdown-it": "^8.4.1", + "markdown-it-anchor": "^5.0.2", + "markdown-it-chain": "^1.3.0", + "markdown-it-emoji": "^1.4.0", + "markdown-it-table-of-contents": "^0.4.0", + "prismjs": "^1.13.0" + } + }, + "node_modules/@vuepress/markdown/node_modules/entities": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/entities/-/entities-1.1.2.tgz", + "integrity": "sha512-f2LZMYl1Fzu7YSBKg+RoROelpOaNrcGmE9AZubeDfrCEia483oW4MI4VyFd5VNHIgQ/7qm1I0wUHK1eJnn2y2w==" + }, + "node_modules/@vuepress/markdown/node_modules/linkify-it": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/linkify-it/-/linkify-it-2.2.0.tgz", + "integrity": "sha512-GnAl/knGn+i1U/wjBz3akz2stz+HrHLsxMwHQGofCDfPvlf+gDKN58UtfmUquTY4/MXeE2x7k19KQmeoZi94Iw==", + "dependencies": { + "uc.micro": "^1.0.1" + } + }, + "node_modules/@vuepress/markdown/node_modules/markdown-it": { + "version": "8.4.2", + "resolved": "https://registry.npmjs.org/markdown-it/-/markdown-it-8.4.2.tgz", + "integrity": "sha512-GcRz3AWTqSUphY3vsUqQSFMbgR38a4Lh3GWlHRh/7MRwz8mcu9n2IO7HOh+bXHrR9kOPDl5RNCaEsrneb+xhHQ==", + "dependencies": { + "argparse": "^1.0.7", + "entities": "~1.1.1", + "linkify-it": "^2.0.0", + "mdurl": "^1.0.1", + "uc.micro": "^1.0.5" + }, + "bin": { + "markdown-it": "bin/markdown-it.js" + } + }, + "node_modules/@vuepress/shared-utils": { + "version": "1.8.2", + "resolved": "https://registry.npmjs.org/@vuepress/shared-utils/-/shared-utils-1.8.2.tgz", + "integrity": "sha512-6kGubc7iBDWruEBUU7yR+sQ++SOhMuvKWvWeTZJKRZedthycdzYz7QVpua0FaZSAJm5/dIt8ymU4WQvxTtZgTQ==", + "dependencies": { + "chalk": "^2.3.2", + "escape-html": "^1.0.3", + "fs-extra": "^7.0.1", + "globby": "^9.2.0", + "gray-matter": "^4.0.1", + "hash-sum": "^1.0.2", + "semver": "^6.0.0", + "toml": "^3.0.0", + "upath": "^1.1.0" + } + }, + "node_modules/@vuepress/shared-utils/node_modules/fs-extra": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-7.0.1.tgz", + "integrity": "sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw==", + "dependencies": { + "graceful-fs": "^4.1.2", + "jsonfile": "^4.0.0", + "universalify": "^0.1.0" + }, + "engines": { + "node": ">=6 <7 || >=8" + } + }, + "node_modules/@webassemblyjs/ast": { + "version": "1.9.0", + "license": "MIT", + "dependencies": { + "@webassemblyjs/helper-module-context": "1.9.0", + "@webassemblyjs/helper-wasm-bytecode": "1.9.0", + "@webassemblyjs/wast-parser": "1.9.0" + } + }, + "node_modules/@webassemblyjs/floating-point-hex-parser": { + "version": "1.9.0", + "license": "MIT" + }, + "node_modules/@webassemblyjs/helper-api-error": { + "version": "1.9.0", + "license": "MIT" + }, + "node_modules/@webassemblyjs/helper-buffer": { + "version": "1.9.0", + "license": "MIT" + }, + "node_modules/@webassemblyjs/helper-code-frame": { + "version": "1.9.0", + "license": "MIT", + "dependencies": { + "@webassemblyjs/wast-printer": "1.9.0" + } + }, + "node_modules/@webassemblyjs/helper-fsm": { + "version": "1.9.0", + "license": "ISC" + }, + "node_modules/@webassemblyjs/helper-module-context": { + "version": "1.9.0", + "license": "MIT", + "dependencies": { + "@webassemblyjs/ast": "1.9.0" + } + }, + "node_modules/@webassemblyjs/helper-wasm-bytecode": { + "version": "1.9.0", + "license": "MIT" + }, + "node_modules/@webassemblyjs/helper-wasm-section": { + "version": "1.9.0", + "license": "MIT", + "dependencies": { + "@webassemblyjs/ast": "1.9.0", + "@webassemblyjs/helper-buffer": "1.9.0", + "@webassemblyjs/helper-wasm-bytecode": "1.9.0", + "@webassemblyjs/wasm-gen": "1.9.0" + } + }, + "node_modules/@webassemblyjs/ieee754": { + "version": "1.9.0", + "license": "MIT", + "dependencies": { + "@xtuc/ieee754": "^1.2.0" + } + }, + "node_modules/@webassemblyjs/leb128": { + "version": "1.9.0", + "license": "MIT", + "dependencies": { + "@xtuc/long": "4.2.2" + } + }, + "node_modules/@webassemblyjs/utf8": { + "version": "1.9.0", + "license": "MIT" + }, + "node_modules/@webassemblyjs/wasm-edit": { + "version": "1.9.0", + "license": "MIT", + "dependencies": { + "@webassemblyjs/ast": "1.9.0", + "@webassemblyjs/helper-buffer": "1.9.0", + "@webassemblyjs/helper-wasm-bytecode": "1.9.0", + "@webassemblyjs/helper-wasm-section": "1.9.0", + "@webassemblyjs/wasm-gen": "1.9.0", + "@webassemblyjs/wasm-opt": "1.9.0", + "@webassemblyjs/wasm-parser": "1.9.0", + "@webassemblyjs/wast-printer": "1.9.0" + } + }, + "node_modules/@webassemblyjs/wasm-gen": { + "version": "1.9.0", + "license": "MIT", + "dependencies": { + "@webassemblyjs/ast": "1.9.0", + "@webassemblyjs/helper-wasm-bytecode": "1.9.0", + "@webassemblyjs/ieee754": "1.9.0", + "@webassemblyjs/leb128": "1.9.0", + "@webassemblyjs/utf8": "1.9.0" + } + }, + "node_modules/@webassemblyjs/wasm-opt": { + "version": "1.9.0", + "license": "MIT", + "dependencies": { + "@webassemblyjs/ast": "1.9.0", + "@webassemblyjs/helper-buffer": "1.9.0", + "@webassemblyjs/wasm-gen": "1.9.0", + "@webassemblyjs/wasm-parser": "1.9.0" + } + }, + "node_modules/@webassemblyjs/wasm-parser": { + "version": "1.9.0", + "license": "MIT", + "dependencies": { + "@webassemblyjs/ast": "1.9.0", + "@webassemblyjs/helper-api-error": "1.9.0", + "@webassemblyjs/helper-wasm-bytecode": "1.9.0", + "@webassemblyjs/ieee754": "1.9.0", + "@webassemblyjs/leb128": "1.9.0", + "@webassemblyjs/utf8": "1.9.0" + } + }, + "node_modules/@webassemblyjs/wast-parser": { + "version": "1.9.0", + "license": "MIT", + "dependencies": { + "@webassemblyjs/ast": "1.9.0", + "@webassemblyjs/floating-point-hex-parser": "1.9.0", + "@webassemblyjs/helper-api-error": "1.9.0", + "@webassemblyjs/helper-code-frame": "1.9.0", + "@webassemblyjs/helper-fsm": "1.9.0", + "@xtuc/long": "4.2.2" + } + }, + "node_modules/@webassemblyjs/wast-printer": { + "version": "1.9.0", + "license": "MIT", + "dependencies": { + "@webassemblyjs/ast": "1.9.0", + "@webassemblyjs/wast-parser": "1.9.0", + "@xtuc/long": "4.2.2" + } + }, + "node_modules/@xtuc/ieee754": { + "version": "1.2.0", + "license": "BSD-3-Clause" + }, + "node_modules/@xtuc/long": { + "version": "4.2.2", + "license": "Apache-2.0" + }, + "node_modules/accepts": { + "version": "1.3.7", + "dev": true, + "license": "MIT", + "dependencies": { + "mime-types": "~2.1.24", + "negotiator": "0.6.2" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/acorn": { + "version": "7.4.1", + "license": "MIT", + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/acorn-jsx": { + "version": "5.3.1", + "license": "MIT", + "peerDependencies": { + "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" + } + }, + "node_modules/acorn-walk": { + "version": "7.2.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/address": { + "version": "1.1.2", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.12.0" + } + }, + "node_modules/ajv": { + "version": "6.12.6", + "license": "MIT", + "dependencies": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/ajv-errors": { + "version": "1.0.1", + "license": "MIT", + "peerDependencies": { + "ajv": ">=5.0.0" + } + }, + "node_modules/ajv-keywords": { + "version": "3.5.2", + "license": "MIT", + "peerDependencies": { + "ajv": "^6.9.1" + } + }, + "node_modules/alphanum-sort": { + "version": "1.0.2", + "dev": true, + "license": "MIT" + }, + "node_modules/ansi-colors": { + "version": "4.1.1", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/ansi-escapes": { + "version": "4.3.2", + "dev": true, + "license": "MIT", + "dependencies": { + "type-fest": "^0.21.3" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/ansi-escapes/node_modules/type-fest": { + "version": "0.21.3", + "dev": true, + "license": "(MIT OR CC0-1.0)", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/ansi-html": { + "version": "0.0.7", + "dev": true, + "engines": [ + "node >= 0.8.0" + ], + "license": "Apache-2.0", + "bin": { + "ansi-html": "bin/ansi-html" + } + }, + "node_modules/ansi-regex": { + "version": "2.1.1", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/ansi-styles": { + "version": "4.3.0", + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/ansi-styles/node_modules/color-convert": { + "version": "2.0.1", + "license": "MIT", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/any-promise": { + "version": "1.3.0", + "dev": true, + "license": "MIT" + }, + "node_modules/anymatch": { + "version": "3.1.2", + "devOptional": true, + "license": "ISC", + "dependencies": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/aproba": { + "version": "1.2.0", + "license": "ISC" + }, + "node_modules/arch": { + "version": "2.2.0", + "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" + } + ], + "license": "MIT" + }, + "node_modules/argparse": { + "version": "1.0.10", + "license": "MIT", + "dependencies": { + "sprintf-js": "~1.0.2" + } + }, + "node_modules/arr-diff": { + "version": "4.0.0", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/arr-flatten": { + "version": "1.1.0", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/arr-union": { + "version": "3.1.0", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/array-flatten": { + "version": "1.1.1", + "dev": true, + "license": "MIT" + }, + "node_modules/array-union": { + "version": "1.0.2", + "license": "MIT", + "dependencies": { + "array-uniq": "^1.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/array-uniq": { + "version": "1.0.3", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/array-unique": { + "version": "0.3.2", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/asn1": { + "version": "0.2.4", + "dev": true, + "license": "MIT", + "dependencies": { + "safer-buffer": "~2.1.0" + } + }, + "node_modules/asn1.js": { + "version": "5.4.1", + "license": "MIT", + "dependencies": { + "bn.js": "^4.0.0", + "inherits": "^2.0.1", + "minimalistic-assert": "^1.0.0", + "safer-buffer": "^2.1.0" + } + }, + "node_modules/assert": { + "version": "1.5.0", + "license": "MIT", + "dependencies": { + "object-assign": "^4.1.1", + "util": "0.10.3" + } + }, + "node_modules/assert-plus": { + "version": "1.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.8" + } + }, + "node_modules/assert/node_modules/inherits": { + "version": "2.0.1", + "license": "ISC" + }, + "node_modules/assert/node_modules/util": { + "version": "0.10.3", + "license": "MIT", + "dependencies": { + "inherits": "2.0.1" + } + }, + "node_modules/assign-symbols": { + "version": "1.0.0", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/astral-regex": { + "version": "2.0.0", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/async": { + "version": "2.6.3", + "dev": true, + "license": "MIT", + "dependencies": { + "lodash": "^4.17.14" + } + }, + "node_modules/async-each": { + "version": "1.0.3", + "devOptional": true, + "license": "MIT" + }, + "node_modules/async-limiter": { + "version": "1.0.1", + "dev": true, + "license": "MIT" + }, + "node_modules/asynckit": { + "version": "0.4.0", + "dev": true, + "license": "MIT" + }, + "node_modules/at-least-node": { + "version": "1.0.0", + "license": "ISC", + "engines": { + "node": ">= 4.0.0" + } + }, + "node_modules/atob": { + "version": "2.1.2", + "license": "(MIT OR Apache-2.0)", + "bin": { + "atob": "bin/atob.js" + }, + "engines": { + "node": ">= 4.5.0" + } + }, + "node_modules/autoprefixer": { + "version": "9.8.6", + "dev": true, + "license": "MIT", + "dependencies": { + "browserslist": "^4.12.0", + "caniuse-lite": "^1.0.30001109", + "colorette": "^1.2.1", + "normalize-range": "^0.1.2", + "num2fraction": "^1.2.2", + "postcss": "^7.0.32", + "postcss-value-parser": "^4.1.0" + }, + "bin": { + "autoprefixer": "bin/autoprefixer" + }, + "funding": { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/autoprefixer" + } + }, + "node_modules/autoprefixer/node_modules/postcss-value-parser": { + "version": "4.1.0", + "dev": true, + "license": "MIT" + }, + "node_modules/aws-sign2": { + "version": "0.7.0", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": "*" + } + }, + "node_modules/aws4": { + "version": "1.11.0", + "dev": true, + "license": "MIT" + }, + "node_modules/axios": { + "version": "0.21.4", + "resolved": "https://registry.npmjs.org/axios/-/axios-0.21.4.tgz", + "integrity": "sha512-ut5vewkiu8jjGBdqpM44XxjuCjq9LAKeHVmoVfHVzy8eHgxxq8SbAVQNovDA8mVi05kP0Ea/n/UzcSHcTJQfNg==", + "dependencies": { + "follow-redirects": "^1.14.0" + } + }, + "node_modules/babel-code-frame": { + "version": "6.26.0", + "dev": true, + "license": "MIT", + "dependencies": { + "chalk": "^1.1.3", + "esutils": "^2.0.2", + "js-tokens": "^3.0.2" + } + }, + "node_modules/babel-code-frame/node_modules/ansi-styles": { + "version": "2.2.1", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/babel-code-frame/node_modules/chalk": { + "version": "1.1.3", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^2.2.1", + "escape-string-regexp": "^1.0.2", + "has-ansi": "^2.0.0", + "strip-ansi": "^3.0.0", + "supports-color": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/babel-code-frame/node_modules/js-tokens": { + "version": "3.0.2", + "dev": true, + "license": "MIT" + }, + "node_modules/babel-code-frame/node_modules/strip-ansi": { + "version": "3.0.1", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-regex": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/babel-code-frame/node_modules/supports-color": { + "version": "2.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/babel-eslint": { + "version": "10.1.0", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.0.0", + "@babel/parser": "^7.7.0", + "@babel/traverse": "^7.7.0", + "@babel/types": "^7.7.0", + "eslint-visitor-keys": "^1.0.0", + "resolve": "^1.12.0" + }, + "engines": { + "node": ">=6" + }, + "peerDependencies": { + "eslint": ">= 4.12.1" + } + }, + "node_modules/babel-extract-comments": { + "version": "1.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "babylon": "^6.18.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/babel-helper-vue-jsx-merge-props": { + "version": "2.0.3", + "license": "MIT" + }, + "node_modules/babel-loader": { + "version": "8.2.2", + "dev": true, + "license": "MIT", + "dependencies": { + "find-cache-dir": "^3.3.1", + "loader-utils": "^1.4.0", + "make-dir": "^3.1.0", + "schema-utils": "^2.6.5" + }, + "engines": { + "node": ">= 8.9" + }, + "peerDependencies": { + "@babel/core": "^7.0.0", + "webpack": ">=2" + } + }, + "node_modules/babel-loader/node_modules/find-cache-dir": { + "version": "3.3.1", + "dev": true, + "license": "MIT", + "dependencies": { + "commondir": "^1.0.1", + "make-dir": "^3.0.2", + "pkg-dir": "^4.1.0" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/avajs/find-cache-dir?sponsor=1" + } + }, + "node_modules/babel-loader/node_modules/find-up": { + "version": "4.1.0", + "dev": true, + "license": "MIT", + "dependencies": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/babel-loader/node_modules/locate-path": { + "version": "5.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "p-locate": "^4.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/babel-loader/node_modules/p-locate": { + "version": "4.1.0", + "dev": true, + "license": "MIT", + "dependencies": { + "p-limit": "^2.2.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/babel-loader/node_modules/path-exists": { + "version": "4.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/babel-loader/node_modules/pkg-dir": { + "version": "4.2.0", + "dev": true, + "license": "MIT", + "dependencies": { + "find-up": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/babel-loader/node_modules/schema-utils": { + "version": "2.7.1", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/json-schema": "^7.0.5", + "ajv": "^6.12.4", + "ajv-keywords": "^3.5.2" + }, + "engines": { + "node": ">= 8.9.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } + }, + "node_modules/babel-plugin-dynamic-import-node": { + "version": "2.3.3", + "license": "MIT", + "dependencies": { + "object.assign": "^4.1.0" + } + }, + "node_modules/babel-plugin-polyfill-corejs2": { + "version": "0.2.2", + "license": "MIT", + "dependencies": { + "@babel/compat-data": "^7.13.11", + "@babel/helper-define-polyfill-provider": "^0.2.2", + "semver": "^6.1.1" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/babel-plugin-polyfill-corejs3": { + "version": "0.2.2", + "license": "MIT", + "dependencies": { + "@babel/helper-define-polyfill-provider": "^0.2.2", + "core-js-compat": "^3.9.1" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/babel-plugin-polyfill-regenerator": { + "version": "0.2.2", + "license": "MIT", + "dependencies": { + "@babel/helper-define-polyfill-provider": "^0.2.2" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/babel-plugin-syntax-object-rest-spread": { + "version": "6.13.0", + "dev": true, + "license": "MIT" + }, + "node_modules/babel-plugin-transform-object-rest-spread": { + "version": "6.26.0", + "dev": true, + "license": "MIT", + "dependencies": { + "babel-plugin-syntax-object-rest-spread": "^6.8.0", + "babel-runtime": "^6.26.0" + } + }, + "node_modules/babel-runtime": { + "version": "6.26.0", + "dev": true, + "license": "MIT", + "dependencies": { + "core-js": "^2.4.0", + "regenerator-runtime": "^0.11.0" + } + }, + "node_modules/babel-runtime/node_modules/core-js": { + "version": "2.6.12", + "dev": true, + "hasInstallScript": true, + "license": "MIT" + }, + "node_modules/babel-runtime/node_modules/regenerator-runtime": { + "version": "0.11.1", + "dev": true, + "license": "MIT" + }, + "node_modules/babylon": { + "version": "6.18.0", + "dev": true, + "license": "MIT", + "bin": { + "babylon": "bin/babylon.js" + } + }, + "node_modules/balanced-match": { + "version": "1.0.2", + "license": "MIT" + }, + "node_modules/base": { + "version": "0.11.2", + "license": "MIT", + "dependencies": { + "cache-base": "^1.0.1", + "class-utils": "^0.3.5", + "component-emitter": "^1.2.1", + "define-property": "^1.0.0", + "isobject": "^3.0.1", + "mixin-deep": "^1.2.0", + "pascalcase": "^0.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/base/node_modules/define-property": { + "version": "1.0.0", + "license": "MIT", + "dependencies": { + "is-descriptor": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/base64-js": { + "version": "1.5.1", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT" + }, + "node_modules/batch": { + "version": "0.6.1", + "dev": true, + "license": "MIT" + }, + "node_modules/bcrypt-pbkdf": { + "version": "1.0.2", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "tweetnacl": "^0.14.3" + } + }, + "node_modules/bfj": { + "version": "6.1.2", + "dev": true, + "license": "MIT", + "dependencies": { + "bluebird": "^3.5.5", + "check-types": "^8.0.3", + "hoopy": "^0.1.4", + "tryer": "^1.0.1" + }, + "engines": { + "node": ">= 6.0.0" + } + }, + "node_modules/big.js": { + "version": "5.2.2", + "license": "MIT", + "engines": { + "node": "*" + } + }, + "node_modules/binary-extensions": { + "version": "1.13.1", + "devOptional": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/bluebird": { + "version": "3.7.2", + "license": "MIT" + }, + "node_modules/bn.js": { + "version": "4.12.0", + "license": "MIT" + }, + "node_modules/body-parser": { + "version": "1.19.0", + "dev": true, + "license": "MIT", + "dependencies": { + "bytes": "3.1.0", + "content-type": "~1.0.4", + "debug": "2.6.9", + "depd": "~1.1.2", + "http-errors": "1.7.2", + "iconv-lite": "0.4.24", + "on-finished": "~2.3.0", + "qs": "6.7.0", + "raw-body": "2.4.0", + "type-is": "~1.6.17" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/body-parser/node_modules/debug": { + "version": "2.6.9", + "dev": true, + "license": "MIT", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/body-parser/node_modules/ms": { + "version": "2.0.0", + "dev": true, + "license": "MIT" + }, + "node_modules/bonjour": { + "version": "3.5.0", + "dev": true, + "license": "MIT", + "dependencies": { + "array-flatten": "^2.1.0", + "deep-equal": "^1.0.1", + "dns-equal": "^1.0.0", + "dns-txt": "^2.0.2", + "multicast-dns": "^6.0.1", + "multicast-dns-service-types": "^1.1.0" + } + }, + "node_modules/bonjour/node_modules/array-flatten": { + "version": "2.1.2", + "dev": true, + "license": "MIT" + }, + "node_modules/boolbase": { + "version": "1.0.0", + "dev": true, + "license": "ISC" + }, + "node_modules/bootstrap": { + "version": "4.6.0", + "license": "MIT", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/bootstrap" + }, + "peerDependencies": { + "jquery": "1.9.1 - 3", + "popper.js": "^1.16.1" + } + }, + "node_modules/bootstrap-vue": { + "version": "2.21.2", + "hasInstallScript": true, + "license": "MIT", + "dependencies": { + "@nuxt/opencollective": "^0.3.2", + "bootstrap": ">=4.5.3 <5.0.0", + "popper.js": "^1.16.1", + "portal-vue": "^2.1.7", + "vue-functional-data-merge": "^3.1.0" + } + }, + "node_modules/brace-expansion": { + "version": "1.1.11", + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/braces": { + "version": "2.3.2", + "license": "MIT", + "dependencies": { + "arr-flatten": "^1.1.0", + "array-unique": "^0.3.2", + "extend-shallow": "^2.0.1", + "fill-range": "^4.0.0", + "isobject": "^3.0.1", + "repeat-element": "^1.1.2", + "snapdragon": "^0.8.1", + "snapdragon-node": "^2.0.1", + "split-string": "^3.0.2", + "to-regex": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/brorand": { + "version": "1.1.0", + "license": "MIT" + }, + "node_modules/browserify-aes": { + "version": "1.2.0", + "license": "MIT", + "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", + "license": "MIT", + "dependencies": { + "browserify-aes": "^1.0.4", + "browserify-des": "^1.0.0", + "evp_bytestokey": "^1.0.0" + } + }, + "node_modules/browserify-des": { + "version": "1.0.2", + "license": "MIT", + "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", + "license": "MIT", + "dependencies": { + "bn.js": "^5.0.0", + "randombytes": "^2.0.1" + } + }, + "node_modules/browserify-rsa/node_modules/bn.js": { + "version": "5.2.0", + "license": "MIT" + }, + "node_modules/browserify-sign": { + "version": "4.2.1", + "license": "ISC", + "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/bn.js": { + "version": "5.2.0", + "license": "MIT" + }, + "node_modules/browserify-sign/node_modules/readable-stream": { + "version": "3.6.0", + "license": "MIT", + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/browserify-zlib": { + "version": "0.2.0", + "license": "MIT", + "dependencies": { + "pako": "~1.0.5" + } + }, + "node_modules/browserslist": { + "version": "4.16.6", + "license": "MIT", + "dependencies": { + "caniuse-lite": "^1.0.30001219", + "colorette": "^1.2.2", + "electron-to-chromium": "^1.3.723", + "escalade": "^3.1.1", + "node-releases": "^1.1.71" + }, + "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/buffer": { + "version": "4.9.2", + "license": "MIT", + "dependencies": { + "base64-js": "^1.0.2", + "ieee754": "^1.1.4", + "isarray": "^1.0.0" + } + }, + "node_modules/buffer-from": { + "version": "1.1.1", + "license": "MIT" + }, + "node_modules/buffer-indexof": { + "version": "1.1.1", + "dev": true, + "license": "MIT" + }, + "node_modules/buffer-json": { + "version": "2.0.0", + "dev": true, + "license": "MIT" + }, + "node_modules/buffer-xor": { + "version": "1.0.3", + "license": "MIT" + }, + "node_modules/builtin-modules": { + "version": "3.2.0", + "license": "MIT", + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/builtin-status-codes": { + "version": "3.0.0", + "license": "MIT" + }, + "node_modules/bytes": { + "version": "3.1.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/cacache": { + "version": "12.0.4", + "license": "ISC", + "dependencies": { + "bluebird": "^3.5.5", + "chownr": "^1.1.1", + "figgy-pudding": "^3.5.1", + "glob": "^7.1.4", + "graceful-fs": "^4.1.15", + "infer-owner": "^1.0.3", + "lru-cache": "^5.1.1", + "mississippi": "^3.0.0", + "mkdirp": "^0.5.1", + "move-concurrently": "^1.0.1", + "promise-inflight": "^1.0.1", + "rimraf": "^2.6.3", + "ssri": "^6.0.1", + "unique-filename": "^1.1.1", + "y18n": "^4.0.0" + } + }, + "node_modules/cacache/node_modules/ssri": { + "version": "6.0.2", + "license": "ISC", + "dependencies": { + "figgy-pudding": "^3.5.1" + } + }, + "node_modules/cache-base": { + "version": "1.0.1", + "license": "MIT", + "dependencies": { + "collection-visit": "^1.0.0", + "component-emitter": "^1.2.1", + "get-value": "^2.0.6", + "has-value": "^1.0.0", + "isobject": "^3.0.1", + "set-value": "^2.0.0", + "to-object-path": "^0.3.0", + "union-value": "^1.0.0", + "unset-value": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/cache-loader": { + "version": "4.1.0", + "dev": true, + "license": "MIT", + "dependencies": { + "buffer-json": "^2.0.0", + "find-cache-dir": "^3.0.0", + "loader-utils": "^1.2.3", + "mkdirp": "^0.5.1", + "neo-async": "^2.6.1", + "schema-utils": "^2.0.0" + }, + "engines": { + "node": ">= 8.9.0" + }, + "peerDependencies": { + "webpack": "^4.0.0" + } + }, + "node_modules/cache-loader/node_modules/find-cache-dir": { + "version": "3.3.1", + "dev": true, + "license": "MIT", + "dependencies": { + "commondir": "^1.0.1", + "make-dir": "^3.0.2", + "pkg-dir": "^4.1.0" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/avajs/find-cache-dir?sponsor=1" + } + }, + "node_modules/cache-loader/node_modules/find-up": { + "version": "4.1.0", + "dev": true, + "license": "MIT", + "dependencies": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/cache-loader/node_modules/locate-path": { + "version": "5.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "p-locate": "^4.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/cache-loader/node_modules/p-locate": { + "version": "4.1.0", + "dev": true, + "license": "MIT", + "dependencies": { + "p-limit": "^2.2.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/cache-loader/node_modules/path-exists": { + "version": "4.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/cache-loader/node_modules/pkg-dir": { + "version": "4.2.0", + "dev": true, + "license": "MIT", + "dependencies": { + "find-up": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/cache-loader/node_modules/schema-utils": { + "version": "2.7.1", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/json-schema": "^7.0.5", + "ajv": "^6.12.4", + "ajv-keywords": "^3.5.2" + }, + "engines": { + "node": ">= 8.9.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } + }, + "node_modules/call-bind": { + "version": "1.0.2", + "license": "MIT", + "dependencies": { + "function-bind": "^1.1.1", + "get-intrinsic": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/call-me-maybe": { + "version": "1.0.1", + "license": "MIT" + }, + "node_modules/caller-callsite": { + "version": "2.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "callsites": "^2.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/caller-callsite/node_modules/callsites": { + "version": "2.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/caller-path": { + "version": "2.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "caller-callsite": "^2.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/callsites": { + "version": "3.1.0", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/camel-case": { + "version": "3.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "no-case": "^2.2.0", + "upper-case": "^1.1.1" + } + }, + "node_modules/camelcase": { + "version": "5.3.1", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/caniuse-api": { + "version": "3.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "browserslist": "^4.0.0", + "caniuse-lite": "^1.0.0", + "lodash.memoize": "^4.1.2", + "lodash.uniq": "^4.5.0" + } + }, + "node_modules/caniuse-lite": { + "version": "1.0.30001235", + "license": "CC-BY-4.0", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + } + }, + "node_modules/case-sensitive-paths-webpack-plugin": { + "version": "2.4.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/caseless": { + "version": "0.12.0", + "dev": true, + "license": "Apache-2.0" + }, + "node_modules/chalk": { + "version": "2.4.2", + "license": "MIT", + "dependencies": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/chalk/node_modules/ansi-styles": { + "version": "3.2.1", + "license": "MIT", + "dependencies": { + "color-convert": "^1.9.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/chalk/node_modules/supports-color": { + "version": "5.5.0", + "license": "MIT", + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/chardet": { + "version": "0.7.0", + "dev": true, + "license": "MIT" + }, + "node_modules/check-types": { + "version": "8.0.3", + "dev": true, + "license": "MIT" + }, + "node_modules/chokidar": { + "version": "2.1.8", + "devOptional": true, + "license": "MIT", + "dependencies": { + "anymatch": "^2.0.0", + "async-each": "^1.0.1", + "braces": "^2.3.2", + "glob-parent": "^3.1.0", + "inherits": "^2.0.3", + "is-binary-path": "^1.0.0", + "is-glob": "^4.0.0", + "normalize-path": "^3.0.0", + "path-is-absolute": "^1.0.0", + "readdirp": "^2.2.1", + "upath": "^1.1.1" + }, + "optionalDependencies": { + "fsevents": "^1.2.7" + } + }, + "node_modules/chokidar/node_modules/anymatch": { + "version": "2.0.0", + "devOptional": true, + "license": "ISC", + "dependencies": { + "micromatch": "^3.1.4", + "normalize-path": "^2.1.1" + } + }, + "node_modules/chokidar/node_modules/anymatch/node_modules/normalize-path": { + "version": "2.1.1", + "devOptional": true, + "license": "MIT", + "dependencies": { + "remove-trailing-separator": "^1.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/chownr": { + "version": "1.1.4", + "license": "ISC" + }, + "node_modules/chrome-trace-event": { + "version": "1.0.3", + "license": "MIT", + "engines": { + "node": ">=6.0" + } + }, + "node_modules/ci-info": { + "version": "1.6.0", + "dev": true, + "license": "MIT" + }, + "node_modules/cipher-base": { + "version": "1.0.4", + "license": "MIT", + "dependencies": { + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + } + }, + "node_modules/class-utils": { + "version": "0.3.6", + "license": "MIT", + "dependencies": { + "arr-union": "^3.1.0", + "define-property": "^0.2.5", + "isobject": "^3.0.0", + "static-extend": "^0.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/clean-css": { + "version": "4.2.3", + "dev": true, + "license": "MIT", + "dependencies": { + "source-map": "~0.6.0" + }, + "engines": { + "node": ">= 4.0" + } + }, + "node_modules/cli-cursor": { + "version": "3.1.0", + "dev": true, + "license": "MIT", + "dependencies": { + "restore-cursor": "^3.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/cli-highlight": { + "version": "2.1.11", + "dev": true, + "license": "ISC", + "dependencies": { + "chalk": "^4.0.0", + "highlight.js": "^10.7.1", + "mz": "^2.4.0", + "parse5": "^5.1.1", + "parse5-htmlparser2-tree-adapter": "^6.0.0", + "yargs": "^16.0.0" + }, + "bin": { + "highlight": "bin/highlight" + }, + "engines": { + "node": ">=8.0.0", + "npm": ">=5.0.0" + } + }, + "node_modules/cli-highlight/node_modules/chalk": { + "version": "4.1.1", + "dev": true, + "license": "MIT", + "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/cli-highlight/node_modules/cliui": { + "version": "7.0.4", + "dev": true, + "license": "ISC", + "dependencies": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^7.0.0" + } + }, + "node_modules/cli-highlight/node_modules/has-flag": { + "version": "4.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/cli-highlight/node_modules/supports-color": { + "version": "7.2.0", + "dev": true, + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/cli-highlight/node_modules/wrap-ansi": { + "version": "7.0.0", + "dev": true, + "license": "MIT", + "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/cli-highlight/node_modules/y18n": { + "version": "5.0.8", + "dev": true, + "license": "ISC", + "engines": { + "node": ">=10" + } + }, + "node_modules/cli-highlight/node_modules/yargs": { + "version": "16.2.0", + "dev": true, + "license": "MIT", + "dependencies": { + "cliui": "^7.0.2", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.0", + "y18n": "^5.0.5", + "yargs-parser": "^20.2.2" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/cli-highlight/node_modules/yargs-parser": { + "version": "20.2.7", + "dev": true, + "license": "ISC", + "engines": { + "node": ">=10" + } + }, + "node_modules/cli-spinners": { + "version": "2.6.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/cli-table3": { + "version": "0.5.1", + "dev": true, + "license": "MIT", + "dependencies": { + "object-assign": "^4.1.0", + "string-width": "^2.1.1" + }, + "engines": { + "node": ">=6" + }, + "optionalDependencies": { + "colors": "^1.1.2" + } + }, + "node_modules/cli-table3/node_modules/ansi-regex": { + "version": "3.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/cli-table3/node_modules/string-width": { + "version": "2.1.1", + "dev": true, + "license": "MIT", + "dependencies": { + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^4.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/cli-table3/node_modules/strip-ansi": { + "version": "4.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-regex": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/cli-width": { + "version": "3.0.0", + "dev": true, + "license": "ISC", + "engines": { + "node": ">= 10" + } + }, + "node_modules/clipboardy": { + "version": "2.3.0", + "dev": true, + "license": "MIT", + "dependencies": { + "arch": "^2.1.1", + "execa": "^1.0.0", + "is-wsl": "^2.1.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/clipboardy/node_modules/is-wsl": { + "version": "2.2.0", + "dev": true, + "license": "MIT", + "dependencies": { + "is-docker": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/cliui": { + "version": "5.0.0", + "dev": true, + "license": "ISC", + "dependencies": { + "string-width": "^3.1.0", + "strip-ansi": "^5.2.0", + "wrap-ansi": "^5.1.0" + } + }, + "node_modules/cliui/node_modules/ansi-regex": { + "version": "4.1.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/cliui/node_modules/emoji-regex": { + "version": "7.0.3", + "dev": true, + "license": "MIT" + }, + "node_modules/cliui/node_modules/string-width": { + "version": "3.1.0", + "dev": true, + "license": "MIT", + "dependencies": { + "emoji-regex": "^7.0.1", + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^5.1.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/cliui/node_modules/strip-ansi": { + "version": "5.2.0", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-regex": "^4.1.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/clone": { + "version": "1.0.4", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.8" + } + }, + "node_modules/coa": { + "version": "2.0.2", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/q": "^1.5.1", + "chalk": "^2.4.1", + "q": "^1.1.2" + }, + "engines": { + "node": ">= 4.0" + } + }, + "node_modules/codemirror": { + "version": "5.62.3", + "resolved": "https://registry.npmjs.org/codemirror/-/codemirror-5.62.3.tgz", + "integrity": "sha512-zZAyOfN8TU67ngqrxhOgtkSAGV9jSpN1snbl8elPtnh9Z5A11daR405+dhLzLnuXrwX0WCShWlybxPN3QC/9Pg==" + }, + "node_modules/collection-visit": { + "version": "1.0.0", + "license": "MIT", + "dependencies": { + "map-visit": "^1.0.0", + "object-visit": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/color": { + "version": "3.1.3", + "dev": true, + "license": "MIT", + "dependencies": { + "color-convert": "^1.9.1", + "color-string": "^1.5.4" + } + }, + "node_modules/color-convert": { + "version": "1.9.3", + "license": "MIT", + "dependencies": { + "color-name": "1.1.3" + } + }, + "node_modules/color-convert/node_modules/color-name": { + "version": "1.1.3", + "license": "MIT" + }, + "node_modules/color-name": { + "version": "1.1.4", + "license": "MIT" + }, + "node_modules/color-string": { + "version": "1.5.5", + "dev": true, + "license": "MIT", + "dependencies": { + "color-name": "^1.0.0", + "simple-swizzle": "^0.2.2" + } + }, + "node_modules/colorette": { + "version": "1.2.2", + "license": "MIT" + }, + "node_modules/colors": { + "version": "1.4.0", + "dev": true, + "license": "MIT", + "optional": true, + "engines": { + "node": ">=0.1.90" + } + }, + "node_modules/combined-stream": { + "version": "1.0.8", + "dev": true, + "license": "MIT", + "dependencies": { + "delayed-stream": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/commander": { + "version": "2.20.3", + "license": "MIT" + }, + "node_modules/common-tags": { + "version": "1.8.0", + "license": "MIT", + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/commondir": { + "version": "1.0.1", + "license": "MIT" + }, + "node_modules/component-emitter": { + "version": "1.3.0", + "license": "MIT" + }, + "node_modules/compressible": { + "version": "2.0.18", + "dev": true, + "license": "MIT", + "dependencies": { + "mime-db": ">= 1.43.0 < 2" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/compression": { + "version": "1.7.4", + "dev": true, + "license": "MIT", + "dependencies": { + "accepts": "~1.3.5", + "bytes": "3.0.0", + "compressible": "~2.0.16", + "debug": "2.6.9", + "on-headers": "~1.0.2", + "safe-buffer": "5.1.2", + "vary": "~1.1.2" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/compression/node_modules/bytes": { + "version": "3.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/compression/node_modules/debug": { + "version": "2.6.9", + "dev": true, + "license": "MIT", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/compression/node_modules/ms": { + "version": "2.0.0", + "dev": true, + "license": "MIT" + }, + "node_modules/compression/node_modules/safe-buffer": { + "version": "5.1.2", + "dev": true, + "license": "MIT" + }, + "node_modules/concat-map": { + "version": "0.0.1", + "license": "MIT" + }, + "node_modules/concat-stream": { + "version": "1.6.2", + "engines": [ + "node >= 0.8" + ], + "license": "MIT", + "dependencies": { + "buffer-from": "^1.0.0", + "inherits": "^2.0.3", + "readable-stream": "^2.2.2", + "typedarray": "^0.0.6" + } + }, + "node_modules/connect-history-api-fallback": { + "version": "1.6.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.8" + } + }, + "node_modules/consola": { + "version": "2.15.3", + "license": "MIT" + }, + "node_modules/console-browserify": { + "version": "1.2.0" + }, + "node_modules/consolidate": { + "version": "0.16.0", + "dev": true, + "license": "MIT", + "dependencies": { + "bluebird": "^3.7.2" + }, + "engines": { + "node": ">= 0.10.0" + } + }, + "node_modules/constants-browserify": { + "version": "1.0.0", + "license": "MIT" + }, + "node_modules/content-disposition": { + "version": "0.5.3", + "dev": true, + "license": "MIT", + "dependencies": { + "safe-buffer": "5.1.2" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/content-disposition/node_modules/safe-buffer": { + "version": "5.1.2", + "dev": true, + "license": "MIT" + }, + "node_modules/content-type": { + "version": "1.0.4", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/convert-source-map": { + "version": "1.7.0", + "license": "MIT", + "dependencies": { + "safe-buffer": "~5.1.1" + } + }, + "node_modules/convert-source-map/node_modules/safe-buffer": { + "version": "5.1.2", + "license": "MIT" + }, + "node_modules/cookie": { + "version": "0.4.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/cookie-signature": { + "version": "1.0.6", + "dev": true, + "license": "MIT" + }, + "node_modules/copy-concurrently": { + "version": "1.0.5", + "license": "ISC", + "dependencies": { + "aproba": "^1.1.1", + "fs-write-stream-atomic": "^1.0.8", + "iferr": "^0.1.5", + "mkdirp": "^0.5.1", + "rimraf": "^2.5.4", + "run-queue": "^1.0.0" + } + }, + "node_modules/copy-descriptor": { + "version": "0.1.1", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/copy-to-clipboard": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/copy-to-clipboard/-/copy-to-clipboard-3.3.1.tgz", + "integrity": "sha512-i13qo6kIHTTpCm8/Wup+0b1mVWETvu2kIMzKoK8FpkLkFxlt0znUAHcMzox+T8sPlqtZXq3CulEjQHsYiGFJUw==", + "dependencies": { + "toggle-selection": "^1.0.6" + } + }, + "node_modules/copy-webpack-plugin": { + "version": "5.1.2", + "dev": true, + "license": "MIT", + "dependencies": { + "cacache": "^12.0.3", + "find-cache-dir": "^2.1.0", + "glob-parent": "^3.1.0", + "globby": "^7.1.1", + "is-glob": "^4.0.1", + "loader-utils": "^1.2.3", + "minimatch": "^3.0.4", + "normalize-path": "^3.0.0", + "p-limit": "^2.2.1", + "schema-utils": "^1.0.0", + "serialize-javascript": "^4.0.0", + "webpack-log": "^2.0.0" + }, + "engines": { + "node": ">= 6.9.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^4.0.0 || ^5.0.0" + } + }, + "node_modules/copy-webpack-plugin/node_modules/globby": { + "version": "7.1.1", + "dev": true, + "license": "MIT", + "dependencies": { + "array-union": "^1.0.1", + "dir-glob": "^2.0.0", + "glob": "^7.1.2", + "ignore": "^3.3.5", + "pify": "^3.0.0", + "slash": "^1.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/copy-webpack-plugin/node_modules/ignore": { + "version": "3.3.10", + "dev": true, + "license": "MIT" + }, + "node_modules/copy-webpack-plugin/node_modules/pify": { + "version": "3.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/copy-webpack-plugin/node_modules/slash": { + "version": "1.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/core-js": { + "version": "3.18.1", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.18.1.tgz", + "integrity": "sha512-vJlUi/7YdlCZeL6fXvWNaLUPh/id12WXj3MbkMw5uOyF0PfWPBNOCNbs53YqgrvtujLNlt9JQpruyIKkUZ+PKA==", + "hasInstallScript": true, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/core-js" + } + }, + "node_modules/core-js-compat": { + "version": "3.14.0", + "license": "MIT", + "dependencies": { + "browserslist": "^4.16.6", + "semver": "7.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/core-js" + } + }, + "node_modules/core-js-compat/node_modules/semver": { + "version": "7.0.0", + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/core-util-is": { + "version": "1.0.2", + "license": "MIT" + }, + "node_modules/cosmiconfig": { + "version": "5.2.1", + "dev": true, + "license": "MIT", + "dependencies": { + "import-fresh": "^2.0.0", + "is-directory": "^0.3.1", + "js-yaml": "^3.13.1", + "parse-json": "^4.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/cosmiconfig/node_modules/import-fresh": { + "version": "2.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "caller-path": "^2.0.0", + "resolve-from": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/cosmiconfig/node_modules/parse-json": { + "version": "4.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "error-ex": "^1.3.1", + "json-parse-better-errors": "^1.0.1" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/create-ecdh": { + "version": "4.0.4", + "license": "MIT", + "dependencies": { + "bn.js": "^4.1.0", + "elliptic": "^6.5.3" + } + }, + "node_modules/create-hash": { + "version": "1.2.0", + "license": "MIT", + "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", + "license": "MIT", + "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/cross-spawn": { + "version": "7.0.3", + "license": "MIT", + "dependencies": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/cross-spawn/node_modules/path-key": { + "version": "3.1.1", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/cross-spawn/node_modules/shebang-command": { + "version": "2.0.0", + "license": "MIT", + "dependencies": { + "shebang-regex": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/cross-spawn/node_modules/shebang-regex": { + "version": "3.0.0", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/cross-spawn/node_modules/which": { + "version": "2.0.2", + "license": "ISC", + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/crypto-browserify": { + "version": "3.12.0", + "license": "MIT", + "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/crypto-random-string": { + "version": "2.0.0", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/css-color-names": { + "version": "0.0.4", + "dev": true, + "license": "MIT", + "engines": { + "node": "*" + } + }, + "node_modules/css-declaration-sorter": { + "version": "4.0.1", + "dev": true, + "license": "MIT", + "dependencies": { + "postcss": "^7.0.1", + "timsort": "^0.3.0" + }, + "engines": { + "node": ">4" + } + }, + "node_modules/css-loader": { + "version": "3.6.0", + "dev": true, + "license": "MIT", + "dependencies": { + "camelcase": "^5.3.1", + "cssesc": "^3.0.0", + "icss-utils": "^4.1.1", + "loader-utils": "^1.2.3", + "normalize-path": "^3.0.0", + "postcss": "^7.0.32", + "postcss-modules-extract-imports": "^2.0.0", + "postcss-modules-local-by-default": "^3.0.2", + "postcss-modules-scope": "^2.2.0", + "postcss-modules-values": "^3.0.0", + "postcss-value-parser": "^4.1.0", + "schema-utils": "^2.7.0", + "semver": "^6.3.0" + }, + "engines": { + "node": ">= 8.9.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^4.0.0 || ^5.0.0" + } + }, + "node_modules/css-loader/node_modules/postcss-value-parser": { + "version": "4.1.0", + "dev": true, + "license": "MIT" + }, + "node_modules/css-loader/node_modules/schema-utils": { + "version": "2.7.1", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/json-schema": "^7.0.5", + "ajv": "^6.12.4", + "ajv-keywords": "^3.5.2" + }, + "engines": { + "node": ">= 8.9.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } + }, + "node_modules/css-select": { + "version": "4.1.3", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "boolbase": "^1.0.0", + "css-what": "^5.0.0", + "domhandler": "^4.2.0", + "domutils": "^2.6.0", + "nth-check": "^2.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/fb55" + } + }, + "node_modules/css-select-base-adapter": { + "version": "0.1.1", + "dev": true, + "license": "MIT" + }, + "node_modules/css-tree": { + "version": "1.0.0-alpha.37", + "dev": true, + "license": "MIT", + "dependencies": { + "mdn-data": "2.0.4", + "source-map": "^0.6.1" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/css-what": { + "version": "5.0.1", + "dev": true, + "license": "BSD-2-Clause", + "engines": { + "node": ">= 6" + }, + "funding": { + "url": "https://github.com/sponsors/fb55" + } + }, + "node_modules/cssesc": { + "version": "3.0.0", + "dev": true, + "license": "MIT", + "bin": { + "cssesc": "bin/cssesc" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/cssfilter": { + "version": "0.0.10", + "resolved": "https://registry.npmjs.org/cssfilter/-/cssfilter-0.0.10.tgz", + "integrity": "sha1-xtJnJjKi5cg+AT5oZKQs6N79IK4=" + }, + "node_modules/cssnano": { + "version": "4.1.11", + "dev": true, + "license": "MIT", + "dependencies": { + "cosmiconfig": "^5.0.0", + "cssnano-preset-default": "^4.0.8", + "is-resolvable": "^1.0.0", + "postcss": "^7.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/cssnano-preset-default": { + "version": "4.0.8", + "dev": true, + "license": "MIT", + "dependencies": { + "css-declaration-sorter": "^4.0.1", + "cssnano-util-raw-cache": "^4.0.1", + "postcss": "^7.0.0", + "postcss-calc": "^7.0.1", + "postcss-colormin": "^4.0.3", + "postcss-convert-values": "^4.0.1", + "postcss-discard-comments": "^4.0.2", + "postcss-discard-duplicates": "^4.0.2", + "postcss-discard-empty": "^4.0.1", + "postcss-discard-overridden": "^4.0.1", + "postcss-merge-longhand": "^4.0.11", + "postcss-merge-rules": "^4.0.3", + "postcss-minify-font-values": "^4.0.2", + "postcss-minify-gradients": "^4.0.2", + "postcss-minify-params": "^4.0.2", + "postcss-minify-selectors": "^4.0.2", + "postcss-normalize-charset": "^4.0.1", + "postcss-normalize-display-values": "^4.0.2", + "postcss-normalize-positions": "^4.0.2", + "postcss-normalize-repeat-style": "^4.0.2", + "postcss-normalize-string": "^4.0.2", + "postcss-normalize-timing-functions": "^4.0.2", + "postcss-normalize-unicode": "^4.0.1", + "postcss-normalize-url": "^4.0.1", + "postcss-normalize-whitespace": "^4.0.2", + "postcss-ordered-values": "^4.1.2", + "postcss-reduce-initial": "^4.0.3", + "postcss-reduce-transforms": "^4.0.2", + "postcss-svgo": "^4.0.3", + "postcss-unique-selectors": "^4.0.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/cssnano-util-get-arguments": { + "version": "4.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/cssnano-util-get-match": { + "version": "4.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/cssnano-util-raw-cache": { + "version": "4.0.1", + "dev": true, + "license": "MIT", + "dependencies": { + "postcss": "^7.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/cssnano-util-same-parent": { + "version": "4.0.1", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/csso": { + "version": "4.2.0", + "dev": true, + "license": "MIT", + "dependencies": { + "css-tree": "^1.1.2" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/csso/node_modules/css-tree": { + "version": "1.1.3", + "dev": true, + "license": "MIT", + "dependencies": { + "mdn-data": "2.0.14", + "source-map": "^0.6.1" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/csso/node_modules/mdn-data": { + "version": "2.0.14", + "dev": true, + "license": "CC0-1.0" + }, + "node_modules/cyclist": { + "version": "1.0.1", + "license": "MIT" + }, + "node_modules/d3": { + "version": "5.16.0", + "resolved": "https://registry.npmjs.org/d3/-/d3-5.16.0.tgz", + "integrity": "sha512-4PL5hHaHwX4m7Zr1UapXW23apo6pexCgdetdJ5kTmADpG/7T9Gkxw0M0tf/pjoB63ezCCm0u5UaFYy2aMt0Mcw==", + "dependencies": { + "d3-array": "1", + "d3-axis": "1", + "d3-brush": "1", + "d3-chord": "1", + "d3-collection": "1", + "d3-color": "1", + "d3-contour": "1", + "d3-dispatch": "1", + "d3-drag": "1", + "d3-dsv": "1", + "d3-ease": "1", + "d3-fetch": "1", + "d3-force": "1", + "d3-format": "1", + "d3-geo": "1", + "d3-hierarchy": "1", + "d3-interpolate": "1", + "d3-path": "1", + "d3-polygon": "1", + "d3-quadtree": "1", + "d3-random": "1", + "d3-scale": "2", + "d3-scale-chromatic": "1", + "d3-selection": "1", + "d3-shape": "1", + "d3-time": "1", + "d3-time-format": "2", + "d3-timer": "1", + "d3-transition": "1", + "d3-voronoi": "1", + "d3-zoom": "1" + } + }, + "node_modules/d3-array": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/d3-array/-/d3-array-1.2.4.tgz", + "integrity": "sha512-KHW6M86R+FUPYGb3R5XiYjXPq7VzwxZ22buHhAEVG5ztoEcZZMLov530mmccaqA1GghZArjQV46fuc8kUqhhHw==" + }, + "node_modules/d3-axis": { + "version": "1.0.12", + "resolved": "https://registry.npmjs.org/d3-axis/-/d3-axis-1.0.12.tgz", + "integrity": "sha512-ejINPfPSNdGFKEOAtnBtdkpr24c4d4jsei6Lg98mxf424ivoDP2956/5HDpIAtmHo85lqT4pruy+zEgvRUBqaQ==" + }, + "node_modules/d3-brush": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/d3-brush/-/d3-brush-1.1.6.tgz", + "integrity": "sha512-7RW+w7HfMCPyZLifTz/UnJmI5kdkXtpCbombUSs8xniAyo0vIbrDzDwUJB6eJOgl9u5DQOt2TQlYumxzD1SvYA==", + "dependencies": { + "d3-dispatch": "1", + "d3-drag": "1", + "d3-interpolate": "1", + "d3-selection": "1", + "d3-transition": "1" + } + }, + "node_modules/d3-chord": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/d3-chord/-/d3-chord-1.0.6.tgz", + "integrity": "sha512-JXA2Dro1Fxw9rJe33Uv+Ckr5IrAa74TlfDEhE/jfLOaXegMQFQTAgAw9WnZL8+HxVBRXaRGCkrNU7pJeylRIuA==", + "dependencies": { + "d3-array": "1", + "d3-path": "1" + } + }, + "node_modules/d3-collection": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/d3-collection/-/d3-collection-1.0.7.tgz", + "integrity": "sha512-ii0/r5f4sjKNTfh84Di+DpztYwqKhEyUlKoPrzUFfeSkWxjW49xU2QzO9qrPrNkpdI0XJkfzvmTu8V2Zylln6A==" + }, + "node_modules/d3-color": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/d3-color/-/d3-color-1.4.1.tgz", + "integrity": "sha512-p2sTHSLCJI2QKunbGb7ocOh7DgTAn8IrLx21QRc/BSnodXM4sv6aLQlnfpvehFMLZEfBc6g9pH9SWQccFYfJ9Q==" + }, + "node_modules/d3-contour": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/d3-contour/-/d3-contour-1.3.2.tgz", + "integrity": "sha512-hoPp4K/rJCu0ladiH6zmJUEz6+u3lgR+GSm/QdM2BBvDraU39Vr7YdDCicJcxP1z8i9B/2dJLgDC1NcvlF8WCg==", + "dependencies": { + "d3-array": "^1.1.1" + } + }, + "node_modules/d3-dispatch": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/d3-dispatch/-/d3-dispatch-1.0.6.tgz", + "integrity": "sha512-fVjoElzjhCEy+Hbn8KygnmMS7Or0a9sI2UzGwoB7cCtvI1XpVN9GpoYlnb3xt2YV66oXYb1fLJ8GMvP4hdU1RA==" + }, + "node_modules/d3-drag": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/d3-drag/-/d3-drag-1.2.5.tgz", + "integrity": "sha512-rD1ohlkKQwMZYkQlYVCrSFxsWPzI97+W+PaEIBNTMxRuxz9RF0Hi5nJWHGVJ3Om9d2fRTe1yOBINJyy/ahV95w==", + "dependencies": { + "d3-dispatch": "1", + "d3-selection": "1" + } + }, + "node_modules/d3-dsv": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/d3-dsv/-/d3-dsv-1.2.0.tgz", + "integrity": "sha512-9yVlqvZcSOMhCYzniHE7EVUws7Fa1zgw+/EAV2BxJoG3ME19V6BQFBwI855XQDsxyOuG7NibqRMTtiF/Qup46g==", + "dependencies": { + "commander": "2", + "iconv-lite": "0.4", + "rw": "1" + }, + "bin": { + "csv2json": "bin/dsv2json", + "csv2tsv": "bin/dsv2dsv", + "dsv2dsv": "bin/dsv2dsv", + "dsv2json": "bin/dsv2json", + "json2csv": "bin/json2dsv", + "json2dsv": "bin/json2dsv", + "json2tsv": "bin/json2dsv", + "tsv2csv": "bin/dsv2dsv", + "tsv2json": "bin/dsv2json" + } + }, + "node_modules/d3-ease": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/d3-ease/-/d3-ease-1.0.7.tgz", + "integrity": "sha512-lx14ZPYkhNx0s/2HX5sLFUI3mbasHjSSpwO/KaaNACweVwxUruKyWVcb293wMv1RqTPZyZ8kSZ2NogUZNcLOFQ==" + }, + "node_modules/d3-fetch": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/d3-fetch/-/d3-fetch-1.2.0.tgz", + "integrity": "sha512-yC78NBVcd2zFAyR/HnUiBS7Lf6inSCoWcSxFfw8FYL7ydiqe80SazNwoffcqOfs95XaLo7yebsmQqDKSsXUtvA==", + "dependencies": { + "d3-dsv": "1" + } + }, + "node_modules/d3-force": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/d3-force/-/d3-force-1.2.1.tgz", + "integrity": "sha512-HHvehyaiUlVo5CxBJ0yF/xny4xoaxFxDnBXNvNcfW9adORGZfyNF1dj6DGLKyk4Yh3brP/1h3rnDzdIAwL08zg==", + "dependencies": { + "d3-collection": "1", + "d3-dispatch": "1", + "d3-quadtree": "1", + "d3-timer": "1" + } + }, + "node_modules/d3-format": { + "version": "1.4.5", + "resolved": "https://registry.npmjs.org/d3-format/-/d3-format-1.4.5.tgz", + "integrity": "sha512-J0piedu6Z8iB6TbIGfZgDzfXxUFN3qQRMofy2oPdXzQibYGqPB/9iMcxr/TGalU+2RsyDO+U4f33id8tbnSRMQ==" + }, + "node_modules/d3-geo": { + "version": "1.12.1", + "resolved": "https://registry.npmjs.org/d3-geo/-/d3-geo-1.12.1.tgz", + "integrity": "sha512-XG4d1c/UJSEX9NfU02KwBL6BYPj8YKHxgBEw5om2ZnTRSbIcego6dhHwcxuSR3clxh0EpE38os1DVPOmnYtTPg==", + "dependencies": { + "d3-array": "1" + } + }, + "node_modules/d3-hierarchy": { + "version": "1.1.9", + "resolved": "https://registry.npmjs.org/d3-hierarchy/-/d3-hierarchy-1.1.9.tgz", + "integrity": "sha512-j8tPxlqh1srJHAtxfvOUwKNYJkQuBFdM1+JAUfq6xqH5eAqf93L7oG1NVqDa4CpFZNvnNKtCYEUC8KY9yEn9lQ==" + }, + "node_modules/d3-interpolate": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/d3-interpolate/-/d3-interpolate-1.4.0.tgz", + "integrity": "sha512-V9znK0zc3jOPV4VD2zZn0sDhZU3WAE2bmlxdIwwQPPzPjvyLkd8B3JUVdS1IDUFDkWZ72c9qnv1GK2ZagTZ8EA==", + "dependencies": { + "d3-color": "1" + } + }, + "node_modules/d3-path": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/d3-path/-/d3-path-1.0.9.tgz", + "integrity": "sha512-VLaYcn81dtHVTjEHd8B+pbe9yHWpXKZUC87PzoFmsFrJqgFwDe/qxfp5MlfsfM1V5E/iVt0MmEbWQ7FVIXh/bg==" + }, + "node_modules/d3-polygon": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/d3-polygon/-/d3-polygon-1.0.6.tgz", + "integrity": "sha512-k+RF7WvI08PC8reEoXa/w2nSg5AUMTi+peBD9cmFc+0ixHfbs4QmxxkarVal1IkVkgxVuk9JSHhJURHiyHKAuQ==" + }, + "node_modules/d3-quadtree": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/d3-quadtree/-/d3-quadtree-1.0.7.tgz", + "integrity": "sha512-RKPAeXnkC59IDGD0Wu5mANy0Q2V28L+fNe65pOCXVdVuTJS3WPKaJlFHer32Rbh9gIo9qMuJXio8ra4+YmIymA==" + }, + "node_modules/d3-random": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/d3-random/-/d3-random-1.1.2.tgz", + "integrity": "sha512-6AK5BNpIFqP+cx/sreKzNjWbwZQCSUatxq+pPRmFIQaWuoD+NrbVWw7YWpHiXpCQ/NanKdtGDuB+VQcZDaEmYQ==" + }, + "node_modules/d3-scale": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/d3-scale/-/d3-scale-2.2.2.tgz", + "integrity": "sha512-LbeEvGgIb8UMcAa0EATLNX0lelKWGYDQiPdHj+gLblGVhGLyNbaCn3EvrJf0A3Y/uOOU5aD6MTh5ZFCdEwGiCw==", + "dependencies": { + "d3-array": "^1.2.0", + "d3-collection": "1", + "d3-format": "1", + "d3-interpolate": "1", + "d3-time": "1", + "d3-time-format": "2" + } + }, + "node_modules/d3-scale-chromatic": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/d3-scale-chromatic/-/d3-scale-chromatic-1.5.0.tgz", + "integrity": "sha512-ACcL46DYImpRFMBcpk9HhtIyC7bTBR4fNOPxwVSl0LfulDAwyiHyPOTqcDG1+t5d4P9W7t/2NAuWu59aKko/cg==", + "dependencies": { + "d3-color": "1", + "d3-interpolate": "1" + } + }, + "node_modules/d3-selection": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/d3-selection/-/d3-selection-1.4.2.tgz", + "integrity": "sha512-SJ0BqYihzOjDnnlfyeHT0e30k0K1+5sR3d5fNueCNeuhZTnGw4M4o8mqJchSwgKMXCNFo+e2VTChiSJ0vYtXkg==" + }, + "node_modules/d3-shape": { + "version": "1.3.7", + "resolved": "https://registry.npmjs.org/d3-shape/-/d3-shape-1.3.7.tgz", + "integrity": "sha512-EUkvKjqPFUAZyOlhY5gzCxCeI0Aep04LwIRpsZ/mLFelJiUfnK56jo5JMDSE7yyP2kLSb6LtF+S5chMk7uqPqw==", + "dependencies": { + "d3-path": "1" + } + }, + "node_modules/d3-time": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/d3-time/-/d3-time-1.1.0.tgz", + "integrity": "sha512-Xh0isrZ5rPYYdqhAVk8VLnMEidhz5aP7htAADH6MfzgmmicPkTo8LhkLxci61/lCB7n7UmE3bN0leRt+qvkLxA==" + }, + "node_modules/d3-time-format": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/d3-time-format/-/d3-time-format-2.3.0.tgz", + "integrity": "sha512-guv6b2H37s2Uq/GefleCDtbe0XZAuy7Wa49VGkPVPMfLL9qObgBST3lEHJBMUp8S7NdLQAGIvr2KXk8Hc98iKQ==", + "dependencies": { + "d3-time": "1" + } + }, + "node_modules/d3-timer": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/d3-timer/-/d3-timer-1.0.10.tgz", + "integrity": "sha512-B1JDm0XDaQC+uvo4DT79H0XmBskgS3l6Ve+1SBCfxgmtIb1AVrPIoqd+nPSv+loMX8szQ0sVUhGngL7D5QPiXw==" + }, + "node_modules/d3-transition": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/d3-transition/-/d3-transition-1.3.2.tgz", + "integrity": "sha512-sc0gRU4PFqZ47lPVHloMn9tlPcv8jxgOQg+0zjhfZXMQuvppjG6YuwdMBE0TuqCZjeJkLecku/l9R0JPcRhaDA==", + "dependencies": { + "d3-color": "1", + "d3-dispatch": "1", + "d3-ease": "1", + "d3-interpolate": "1", + "d3-selection": "^1.1.0", + "d3-timer": "1" + } + }, + "node_modules/d3-voronoi": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/d3-voronoi/-/d3-voronoi-1.1.4.tgz", + "integrity": "sha512-dArJ32hchFsrQ8uMiTBLq256MpnZjeuBtdHpaDlYuQyjU0CVzCJl/BVW+SkszaAeH95D/8gxqAhgx0ouAWAfRg==" + }, + "node_modules/d3-zoom": { + "version": "1.8.3", + "resolved": "https://registry.npmjs.org/d3-zoom/-/d3-zoom-1.8.3.tgz", + "integrity": "sha512-VoLXTK4wvy1a0JpH2Il+F2CiOhVu7VRXWF5M/LroMIh3/zBAC3WAt7QoIvPibOavVo20hN6/37vwAsdBejLyKQ==", + "dependencies": { + "d3-dispatch": "1", + "d3-drag": "1", + "d3-interpolate": "1", + "d3-selection": "1", + "d3-transition": "1" + } + }, + "node_modules/dagre": { + "version": "0.8.5", + "resolved": "https://registry.npmjs.org/dagre/-/dagre-0.8.5.tgz", + "integrity": "sha512-/aTqmnRta7x7MCCpExk7HQL2O4owCT2h8NT//9I1OQ9vt29Pa0BzSAkR5lwFUcQ7491yVi/3CXU9jQ5o0Mn2Sw==", + "dependencies": { + "graphlib": "^2.1.8", + "lodash": "^4.17.15" + } + }, + "node_modules/dagre-d3": { + "version": "0.6.4", + "resolved": "https://registry.npmjs.org/dagre-d3/-/dagre-d3-0.6.4.tgz", + "integrity": "sha512-e/6jXeCP7/ptlAM48clmX4xTZc5Ek6T6kagS7Oz2HrYSdqcLZFLqpAfh7ldbZRFfxCZVyh61NEPR08UQRVxJzQ==", + "dependencies": { + "d3": "^5.14", + "dagre": "^0.8.5", + "graphlib": "^2.1.8", + "lodash": "^4.17.15" + } + }, + "node_modules/dashdash": { + "version": "1.14.1", + "dev": true, + "license": "MIT", + "dependencies": { + "assert-plus": "^1.0.0" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/de-indent": { + "version": "1.0.2", + "license": "MIT" + }, + "node_modules/debug": { + "version": "4.3.1", + "license": "MIT", + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/decamelize": { + "version": "1.2.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/decode-uri-component": { + "version": "0.2.0", + "license": "MIT", + "engines": { + "node": ">=0.10" + } + }, + "node_modules/deep-equal": { + "version": "1.1.1", + "dev": true, + "license": "MIT", + "dependencies": { + "is-arguments": "^1.0.4", + "is-date-object": "^1.0.1", + "is-regex": "^1.0.4", + "object-is": "^1.0.1", + "object-keys": "^1.1.1", + "regexp.prototype.flags": "^1.2.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/deep-is": { + "version": "0.1.3", + "license": "MIT" + }, + "node_modules/deepmerge": { + "version": "4.2.2", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/default-gateway": { + "version": "5.0.5", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "execa": "^3.3.0" + }, + "engines": { + "node": "^8.12.0 || >=9.7.0" + } + }, + "node_modules/default-gateway/node_modules/execa": { + "version": "3.4.0", + "dev": true, + "license": "MIT", + "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", + "p-finally": "^2.0.0", + "signal-exit": "^3.0.2", + "strip-final-newline": "^2.0.0" + }, + "engines": { + "node": "^8.12.0 || >=9.7.0" + } + }, + "node_modules/default-gateway/node_modules/get-stream": { + "version": "5.2.0", + "dev": true, + "license": "MIT", + "dependencies": { + "pump": "^3.0.0" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/default-gateway/node_modules/is-stream": { + "version": "2.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/default-gateway/node_modules/npm-run-path": { + "version": "4.0.1", + "dev": true, + "license": "MIT", + "dependencies": { + "path-key": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/default-gateway/node_modules/p-finally": { + "version": "2.0.1", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/default-gateway/node_modules/path-key": { + "version": "3.1.1", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/defaults": { + "version": "1.0.3", + "dev": true, + "license": "MIT", + "dependencies": { + "clone": "^1.0.2" + } + }, + "node_modules/define-properties": { + "version": "1.1.3", + "license": "MIT", + "dependencies": { + "object-keys": "^1.0.12" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/define-property": { + "version": "0.2.5", + "license": "MIT", + "dependencies": { + "is-descriptor": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/define-property/node_modules/is-accessor-descriptor": { + "version": "0.1.6", + "license": "MIT", + "dependencies": { + "kind-of": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/define-property/node_modules/is-accessor-descriptor/node_modules/kind-of": { + "version": "3.2.2", + "license": "MIT", + "dependencies": { + "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/define-property/node_modules/is-data-descriptor": { + "version": "0.1.4", + "license": "MIT", + "dependencies": { + "kind-of": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/define-property/node_modules/is-data-descriptor/node_modules/kind-of": { + "version": "3.2.2", + "license": "MIT", + "dependencies": { + "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/define-property/node_modules/is-descriptor": { + "version": "0.1.6", + "license": "MIT", + "dependencies": { + "is-accessor-descriptor": "^0.1.6", + "is-data-descriptor": "^0.1.4", + "kind-of": "^5.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/define-property/node_modules/kind-of": { + "version": "5.1.0", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/del": { + "version": "4.1.1", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/glob": "^7.1.1", + "globby": "^6.1.0", + "is-path-cwd": "^2.0.0", + "is-path-in-cwd": "^2.0.0", + "p-map": "^2.0.0", + "pify": "^4.0.1", + "rimraf": "^2.6.3" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/del/node_modules/globby": { + "version": "6.1.0", + "dev": true, + "license": "MIT", + "dependencies": { + "array-union": "^1.0.1", + "glob": "^7.0.3", + "object-assign": "^4.0.1", + "pify": "^2.0.0", + "pinkie-promise": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/del/node_modules/globby/node_modules/pify": { + "version": "2.3.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/delayed-stream": { + "version": "1.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/depd": { + "version": "1.1.2", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/des.js": { + "version": "1.0.1", + "license": "MIT", + "dependencies": { + "inherits": "^2.0.1", + "minimalistic-assert": "^1.0.0" + } + }, + "node_modules/destroy": { + "version": "1.0.4", + "dev": true, + "license": "MIT" + }, + "node_modules/detect-node": { + "version": "2.1.0", + "dev": true, + "license": "MIT" + }, + "node_modules/diff": { + "version": "4.0.2", + "dev": true, + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.3.1" + } + }, + "node_modules/diffie-hellman": { + "version": "5.0.3", + "license": "MIT", + "dependencies": { + "bn.js": "^4.1.0", + "miller-rabin": "^4.0.0", + "randombytes": "^2.0.0" + } + }, + "node_modules/dir-glob": { + "version": "2.2.2", + "license": "MIT", + "dependencies": { + "path-type": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/dir-glob/node_modules/path-type": { + "version": "3.0.0", + "license": "MIT", + "dependencies": { + "pify": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/dir-glob/node_modules/pify": { + "version": "3.0.0", + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/dns-equal": { + "version": "1.0.0", + "dev": true, + "license": "MIT" + }, + "node_modules/dns-packet": { + "version": "1.3.4", + "dev": true, + "license": "MIT", + "dependencies": { + "ip": "^1.1.0", + "safe-buffer": "^5.0.1" + } + }, + "node_modules/dns-txt": { + "version": "2.0.2", + "dev": true, + "license": "MIT", + "dependencies": { + "buffer-indexof": "^1.0.0" + } + }, + "node_modules/doctrine": { + "version": "3.0.0", + "license": "Apache-2.0", + "dependencies": { + "esutils": "^2.0.2" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/dom-converter": { + "version": "0.2.0", + "dev": true, + "license": "MIT", + "dependencies": { + "utila": "~0.4" + } + }, + "node_modules/dom-serializer": { + "version": "1.3.2", + "dev": true, + "license": "MIT", + "dependencies": { + "domelementtype": "^2.0.1", + "domhandler": "^4.2.0", + "entities": "^2.0.0" + }, + "funding": { + "url": "https://github.com/cheeriojs/dom-serializer?sponsor=1" + } + }, + "node_modules/domain-browser": { + "version": "1.2.0", + "license": "MIT", + "engines": { + "node": ">=0.4", + "npm": ">=1.2" + } + }, + "node_modules/domelementtype": { + "version": "2.2.0", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/fb55" + } + ], + "license": "BSD-2-Clause" + }, + "node_modules/domhandler": { + "version": "4.2.0", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "domelementtype": "^2.2.0" + }, + "engines": { + "node": ">= 4" + }, + "funding": { + "url": "https://github.com/fb55/domhandler?sponsor=1" + } + }, + "node_modules/dompurify": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/dompurify/-/dompurify-2.3.1.tgz", + "integrity": "sha512-xGWt+NHAQS+4tpgbOAI08yxW0Pr256Gu/FNE2frZVTbgrBUn8M7tz7/ktS/LZ2MHeGqz6topj0/xY+y8R5FBFw==" + }, + "node_modules/domutils": { + "version": "2.7.0", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "dom-serializer": "^1.0.1", + "domelementtype": "^2.2.0", + "domhandler": "^4.2.0" + }, + "funding": { + "url": "https://github.com/fb55/domutils?sponsor=1" + } + }, + "node_modules/dot-object": { + "version": "1.9.0", + "dev": true, + "dependencies": { + "commander": "^2.20.0", + "glob": "^7.1.4" + }, + "bin": { + "dot-object": "bin/dot-object" + } + }, + "node_modules/dot-prop": { + "version": "5.3.0", + "dev": true, + "license": "MIT", + "dependencies": { + "is-obj": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/dot-prop/node_modules/is-obj": { + "version": "2.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/dotenv": { + "version": "8.6.0", + "dev": true, + "license": "BSD-2-Clause", + "engines": { + "node": ">=10" + } + }, + "node_modules/dotenv-expand": { + "version": "5.1.0", + "dev": true, + "license": "BSD-2-Clause" + }, + "node_modules/duplexer": { + "version": "0.1.2", + "dev": true, + "license": "MIT" + }, + "node_modules/duplexify": { + "version": "3.7.1", + "license": "MIT", + "dependencies": { + "end-of-stream": "^1.0.0", + "inherits": "^2.0.1", + "readable-stream": "^2.0.0", + "stream-shift": "^1.0.0" + } + }, + "node_modules/easings-css": { + "version": "1.0.0", + "license": "MIT" + }, + "node_modules/easy-stack": { + "version": "1.0.1", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/ecc-jsbn": { + "version": "0.1.2", + "dev": true, + "license": "MIT", + "dependencies": { + "jsbn": "~0.1.0", + "safer-buffer": "^2.1.0" + } + }, + "node_modules/ee-first": { + "version": "1.1.1", + "dev": true, + "license": "MIT" + }, + "node_modules/ejs": { + "version": "2.7.4", + "hasInstallScript": true, + "license": "Apache-2.0", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/electron-to-chromium": { + "version": "1.3.749", + "license": "ISC" + }, + "node_modules/elliptic": { + "version": "6.5.4", + "license": "MIT", + "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/emoji-regex": { + "version": "8.0.0", + "license": "MIT" + }, + "node_modules/emojis-list": { + "version": "3.0.0", + "license": "MIT", + "engines": { + "node": ">= 4" + } + }, + "node_modules/encodeurl": { + "version": "1.0.2", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/end-of-stream": { + "version": "1.4.4", + "license": "MIT", + "dependencies": { + "once": "^1.4.0" + } + }, + "node_modules/enhanced-resolve": { + "version": "4.5.0", + "dependencies": { + "graceful-fs": "^4.1.2", + "memory-fs": "^0.5.0", + "tapable": "^1.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/enhanced-resolve/node_modules/memory-fs": { + "version": "0.5.0", + "license": "MIT", + "dependencies": { + "errno": "^0.1.3", + "readable-stream": "^2.0.1" + }, + "engines": { + "node": ">=4.3.0 <5.0.0 || >=5.10" + } + }, + "node_modules/enquirer": { + "version": "2.3.6", + "license": "MIT", + "dependencies": { + "ansi-colors": "^4.1.1" + }, + "engines": { + "node": ">=8.6" + } + }, + "node_modules/entities": { + "version": "2.2.0", + "dev": true, + "license": "BSD-2-Clause", + "funding": { + "url": "https://github.com/fb55/entities?sponsor=1" + } + }, + "node_modules/errno": { + "version": "0.1.8", + "license": "MIT", + "dependencies": { + "prr": "~1.0.1" + }, + "bin": { + "errno": "cli.js" + } + }, + "node_modules/error-ex": { + "version": "1.3.2", + "dev": true, + "license": "MIT", + "dependencies": { + "is-arrayish": "^0.2.1" + } + }, + "node_modules/error-stack-parser": { + "version": "2.0.6", + "dev": true, + "license": "MIT", + "dependencies": { + "stackframe": "^1.1.1" + } + }, + "node_modules/es-abstract": { + "version": "1.18.3", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.2", + "es-to-primitive": "^1.2.1", + "function-bind": "^1.1.1", + "get-intrinsic": "^1.1.1", + "has": "^1.0.3", + "has-symbols": "^1.0.2", + "is-callable": "^1.2.3", + "is-negative-zero": "^2.0.1", + "is-regex": "^1.1.3", + "is-string": "^1.0.6", + "object-inspect": "^1.10.3", + "object-keys": "^1.1.1", + "object.assign": "^4.1.2", + "string.prototype.trimend": "^1.0.4", + "string.prototype.trimstart": "^1.0.4", + "unbox-primitive": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/es-to-primitive": { + "version": "1.2.1", + "dev": true, + "license": "MIT", + "dependencies": { + "is-callable": "^1.1.4", + "is-date-object": "^1.0.1", + "is-symbol": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/escalade": { + "version": "3.1.1", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/escape-html": { + "version": "1.0.3", + "license": "MIT" + }, + "node_modules/escape-string-regexp": { + "version": "1.0.5", + "license": "MIT", + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/eslint": { + "version": "7.28.0", + "license": "MIT", + "dependencies": { + "@babel/code-frame": "7.12.11", + "@eslint/eslintrc": "^0.4.2", + "ajv": "^6.10.0", + "chalk": "^4.0.0", + "cross-spawn": "^7.0.2", + "debug": "^4.0.1", + "doctrine": "^3.0.0", + "enquirer": "^2.3.5", + "escape-string-regexp": "^4.0.0", + "eslint-scope": "^5.1.1", + "eslint-utils": "^2.1.0", + "eslint-visitor-keys": "^2.0.0", + "espree": "^7.3.1", + "esquery": "^1.4.0", + "esutils": "^2.0.2", + "fast-deep-equal": "^3.1.3", + "file-entry-cache": "^6.0.1", + "functional-red-black-tree": "^1.0.1", + "glob-parent": "^5.1.2", + "globals": "^13.6.0", + "ignore": "^4.0.6", + "import-fresh": "^3.0.0", + "imurmurhash": "^0.1.4", + "is-glob": "^4.0.0", + "js-yaml": "^3.13.1", + "json-stable-stringify-without-jsonify": "^1.0.1", + "levn": "^0.4.1", + "lodash.merge": "^4.6.2", + "minimatch": "^3.0.4", + "natural-compare": "^1.4.0", + "optionator": "^0.9.1", + "progress": "^2.0.0", + "regexpp": "^3.1.0", + "semver": "^7.2.1", + "strip-ansi": "^6.0.0", + "strip-json-comments": "^3.1.0", + "table": "^6.0.9", + "text-table": "^0.2.0", + "v8-compile-cache": "^2.0.3" + }, + "bin": { + "eslint": "bin/eslint.js" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint-loader": { + "version": "2.2.1", + "dev": true, + "license": "MIT", + "dependencies": { + "loader-fs-cache": "^1.0.0", + "loader-utils": "^1.0.2", + "object-assign": "^4.0.1", + "object-hash": "^1.1.4", + "rimraf": "^2.6.1" + }, + "peerDependencies": { + "eslint": ">=1.6.0 <7.0.0", + "webpack": ">=2.0.0 <5.0.0" + } + }, + "node_modules/eslint-plugin-vue": { + "version": "7.10.0", + "dev": true, + "license": "MIT", + "dependencies": { + "eslint-utils": "^2.1.0", + "natural-compare": "^1.4.0", + "semver": "^7.3.2", + "vue-eslint-parser": "^7.6.0" + }, + "engines": { + "node": ">=8.10" + }, + "peerDependencies": { + "eslint": "^6.2.0 || ^7.0.0" + } + }, + "node_modules/eslint-plugin-vue/node_modules/lru-cache": { + "version": "6.0.0", + "dev": true, + "license": "ISC", + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/eslint-plugin-vue/node_modules/semver": { + "version": "7.3.5", + "dev": true, + "license": "ISC", + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/eslint-scope": { + "version": "5.1.1", + "license": "BSD-2-Clause", + "dependencies": { + "esrecurse": "^4.3.0", + "estraverse": "^4.1.1" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/eslint-utils": { + "version": "2.1.0", + "license": "MIT", + "dependencies": { + "eslint-visitor-keys": "^1.1.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/mysticatea" + } + }, + "node_modules/eslint-visitor-keys": { + "version": "1.3.0", + "license": "Apache-2.0", + "engines": { + "node": ">=4" + } + }, + "node_modules/eslint/node_modules/@babel/code-frame": { + "version": "7.12.11", + "license": "MIT", + "dependencies": { + "@babel/highlight": "^7.10.4" + } + }, + "node_modules/eslint/node_modules/chalk": { + "version": "4.1.1", + "license": "MIT", + "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/eslint/node_modules/escape-string-regexp": { + "version": "4.0.0", + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/eslint/node_modules/eslint-visitor-keys": { + "version": "2.1.0", + "license": "Apache-2.0", + "engines": { + "node": ">=10" + } + }, + "node_modules/eslint/node_modules/glob-parent": { + "version": "5.1.2", + "license": "ISC", + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/eslint/node_modules/globals": { + "version": "13.9.0", + "license": "MIT", + "dependencies": { + "type-fest": "^0.20.2" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/eslint/node_modules/has-flag": { + "version": "4.0.0", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/eslint/node_modules/lru-cache": { + "version": "6.0.0", + "license": "ISC", + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/eslint/node_modules/semver": { + "version": "7.3.5", + "license": "ISC", + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/eslint/node_modules/supports-color": { + "version": "7.2.0", + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/esm": { + "version": "3.2.25", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/espree": { + "version": "7.3.1", + "license": "BSD-2-Clause", + "dependencies": { + "acorn": "^7.4.0", + "acorn-jsx": "^5.3.1", + "eslint-visitor-keys": "^1.3.0" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + } + }, + "node_modules/esprima": { + "version": "4.0.1", + "license": "BSD-2-Clause", + "bin": { + "esparse": "bin/esparse.js", + "esvalidate": "bin/esvalidate.js" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/esquery": { + "version": "1.4.0", + "license": "BSD-3-Clause", + "dependencies": { + "estraverse": "^5.1.0" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/esquery/node_modules/estraverse": { + "version": "5.2.0", + "license": "BSD-2-Clause", + "engines": { + "node": ">=4.0" + } + }, + "node_modules/esrecurse": { + "version": "4.3.0", + "license": "BSD-2-Clause", + "dependencies": { + "estraverse": "^5.2.0" + }, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/esrecurse/node_modules/estraverse": { + "version": "5.2.0", + "license": "BSD-2-Clause", + "engines": { + "node": ">=4.0" + } + }, + "node_modules/estraverse": { + "version": "4.3.0", + "license": "BSD-2-Clause", + "engines": { + "node": ">=4.0" + } + }, + "node_modules/estree-walker": { + "version": "2.0.2", + "dev": true, + "license": "MIT" + }, + "node_modules/esutils": { + "version": "2.0.3", + "license": "BSD-2-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/etag": { + "version": "1.8.1", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/event-pubsub": { + "version": "4.3.0", + "dev": true, + "license": "Unlicense", + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/eventemitter3": { + "version": "4.0.7", + "dev": true, + "license": "MIT" + }, + "node_modules/events": { + "version": "3.3.0", + "license": "MIT", + "engines": { + "node": ">=0.8.x" + } + }, + "node_modules/eventsource": { + "version": "1.1.0", + "dev": true, + "license": "MIT", + "dependencies": { + "original": "^1.0.0" + }, + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/evp_bytestokey": { + "version": "1.0.3", + "license": "MIT", + "dependencies": { + "md5.js": "^1.3.4", + "safe-buffer": "^5.1.1" + } + }, + "node_modules/execa": { + "version": "1.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "cross-spawn": "^6.0.0", + "get-stream": "^4.0.0", + "is-stream": "^1.1.0", + "npm-run-path": "^2.0.0", + "p-finally": "^1.0.0", + "signal-exit": "^3.0.0", + "strip-eof": "^1.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/execa/node_modules/cross-spawn": { + "version": "6.0.5", + "dev": true, + "license": "MIT", + "dependencies": { + "nice-try": "^1.0.4", + "path-key": "^2.0.1", + "semver": "^5.5.0", + "shebang-command": "^1.2.0", + "which": "^1.2.9" + }, + "engines": { + "node": ">=4.8" + } + }, + "node_modules/execa/node_modules/semver": { + "version": "5.7.1", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver" + } + }, + "node_modules/expand-brackets": { + "version": "2.1.4", + "license": "MIT", + "dependencies": { + "debug": "^2.3.3", + "define-property": "^0.2.5", + "extend-shallow": "^2.0.1", + "posix-character-classes": "^0.1.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/expand-brackets/node_modules/debug": { + "version": "2.6.9", + "license": "MIT", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/expand-brackets/node_modules/ms": { + "version": "2.0.0", + "license": "MIT" + }, + "node_modules/express": { + "version": "4.17.1", + "dev": true, + "license": "MIT", + "dependencies": { + "accepts": "~1.3.7", + "array-flatten": "1.1.1", + "body-parser": "1.19.0", + "content-disposition": "0.5.3", + "content-type": "~1.0.4", + "cookie": "0.4.0", + "cookie-signature": "1.0.6", + "debug": "2.6.9", + "depd": "~1.1.2", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "finalhandler": "~1.1.2", + "fresh": "0.5.2", + "merge-descriptors": "1.0.1", + "methods": "~1.1.2", + "on-finished": "~2.3.0", + "parseurl": "~1.3.3", + "path-to-regexp": "0.1.7", + "proxy-addr": "~2.0.5", + "qs": "6.7.0", + "range-parser": "~1.2.1", + "safe-buffer": "5.1.2", + "send": "0.17.1", + "serve-static": "1.14.1", + "setprototypeof": "1.1.1", + "statuses": "~1.5.0", + "type-is": "~1.6.18", + "utils-merge": "1.0.1", + "vary": "~1.1.2" + }, + "engines": { + "node": ">= 0.10.0" + } + }, + "node_modules/express/node_modules/debug": { + "version": "2.6.9", + "dev": true, + "license": "MIT", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/express/node_modules/ms": { + "version": "2.0.0", + "dev": true, + "license": "MIT" + }, + "node_modules/express/node_modules/safe-buffer": { + "version": "5.1.2", + "dev": true, + "license": "MIT" + }, + "node_modules/extend": { + "version": "3.0.2", + "dev": true, + "license": "MIT" + }, + "node_modules/extend-shallow": { + "version": "2.0.1", + "license": "MIT", + "dependencies": { + "is-extendable": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/external-editor": { + "version": "3.1.0", + "dev": true, + "license": "MIT", + "dependencies": { + "chardet": "^0.7.0", + "iconv-lite": "^0.4.24", + "tmp": "^0.0.33" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/extglob": { + "version": "2.0.4", + "license": "MIT", + "dependencies": { + "array-unique": "^0.3.2", + "define-property": "^1.0.0", + "expand-brackets": "^2.1.4", + "extend-shallow": "^2.0.1", + "fragment-cache": "^0.2.1", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/extglob/node_modules/define-property": { + "version": "1.0.0", + "license": "MIT", + "dependencies": { + "is-descriptor": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/extsprintf": { + "version": "1.3.0", + "dev": true, + "engines": [ + "node >=0.6.0" + ], + "license": "MIT" + }, + "node_modules/fast-deep-equal": { + "version": "3.1.3", + "license": "MIT" + }, + "node_modules/fast-glob": { + "version": "2.2.7", + "license": "MIT", + "dependencies": { + "@mrmlnc/readdir-enhanced": "^2.2.1", + "@nodelib/fs.stat": "^1.1.2", + "glob-parent": "^3.1.0", + "is-glob": "^4.0.0", + "merge2": "^1.2.3", + "micromatch": "^3.1.10" + }, + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/fast-glob/node_modules/@nodelib/fs.stat": { + "version": "1.1.3", + "license": "MIT", + "engines": { + "node": ">= 6" + } + }, + "node_modules/fast-json-stable-stringify": { + "version": "2.1.0", + "license": "MIT" + }, + "node_modules/fast-levenshtein": { + "version": "2.0.6", + "license": "MIT" + }, + "node_modules/fastq": { + "version": "1.11.0", + "dev": true, + "license": "ISC", + "dependencies": { + "reusify": "^1.0.4" + } + }, + "node_modules/faye-websocket": { + "version": "0.11.4", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "websocket-driver": ">=0.5.1" + }, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/figgy-pudding": { + "version": "3.5.2", + "license": "ISC" + }, + "node_modules/figures": { + "version": "3.2.0", + "dev": true, + "license": "MIT", + "dependencies": { + "escape-string-regexp": "^1.0.5" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/file-entry-cache": { + "version": "6.0.1", + "license": "MIT", + "dependencies": { + "flat-cache": "^3.0.4" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + } + }, + "node_modules/file-loader": { + "version": "4.3.0", + "dev": true, + "license": "MIT", + "dependencies": { + "loader-utils": "^1.2.3", + "schema-utils": "^2.5.0" + }, + "engines": { + "node": ">= 8.9.0" + }, + "peerDependencies": { + "webpack": "^4.0.0" + } + }, + "node_modules/file-loader/node_modules/schema-utils": { + "version": "2.7.1", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/json-schema": "^7.0.5", + "ajv": "^6.12.4", + "ajv-keywords": "^3.5.2" + }, + "engines": { + "node": ">= 8.9.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } + }, + "node_modules/filesize": { + "version": "3.6.1", + "dev": true, + "license": "BSD-3-Clause", + "engines": { + "node": ">= 0.4.0" + } + }, + "node_modules/fill-range": { + "version": "4.0.0", + "license": "MIT", + "dependencies": { + "extend-shallow": "^2.0.1", + "is-number": "^3.0.0", + "repeat-string": "^1.6.1", + "to-regex-range": "^2.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/finalhandler": { + "version": "1.1.2", + "dev": true, + "license": "MIT", + "dependencies": { + "debug": "2.6.9", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "on-finished": "~2.3.0", + "parseurl": "~1.3.3", + "statuses": "~1.5.0", + "unpipe": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/finalhandler/node_modules/debug": { + "version": "2.6.9", + "dev": true, + "license": "MIT", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/finalhandler/node_modules/ms": { + "version": "2.0.0", + "dev": true, + "license": "MIT" + }, + "node_modules/find-cache-dir": { + "version": "2.1.0", + "license": "MIT", + "dependencies": { + "commondir": "^1.0.1", + "make-dir": "^2.0.0", + "pkg-dir": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/find-cache-dir/node_modules/make-dir": { + "version": "2.1.0", + "license": "MIT", + "dependencies": { + "pify": "^4.0.1", + "semver": "^5.6.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/find-cache-dir/node_modules/semver": { + "version": "5.7.1", + "license": "ISC", + "bin": { + "semver": "bin/semver" + } + }, + "node_modules/find-up": { + "version": "3.0.0", + "license": "MIT", + "dependencies": { + "locate-path": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/flat": { + "version": "5.0.2", + "dev": true, + "license": "BSD-3-Clause", + "bin": { + "flat": "cli.js" + } + }, + "node_modules/flat-cache": { + "version": "3.0.4", + "license": "MIT", + "dependencies": { + "flatted": "^3.1.0", + "rimraf": "^3.0.2" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + } + }, + "node_modules/flat-cache/node_modules/rimraf": { + "version": "3.0.2", + "license": "ISC", + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/flatted": { + "version": "3.1.1", + "license": "ISC" + }, + "node_modules/flush-write-stream": { + "version": "1.1.1", + "license": "MIT", + "dependencies": { + "inherits": "^2.0.3", + "readable-stream": "^2.3.6" + } + }, + "node_modules/follow-redirects": { + "version": "1.14.1", + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/RubenVerborgh" + } + ], + "license": "MIT", + "engines": { + "node": ">=4.0" + }, + "peerDependenciesMeta": { + "debug": { + "optional": true + } + } + }, + "node_modules/for-in": { + "version": "1.0.2", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/forever-agent": { + "version": "0.6.1", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": "*" + } + }, + "node_modules/fork-ts-checker-webpack-plugin": { + "version": "3.1.1", + "dev": true, + "license": "MIT", + "dependencies": { + "babel-code-frame": "^6.22.0", + "chalk": "^2.4.1", + "chokidar": "^3.3.0", + "micromatch": "^3.1.10", + "minimatch": "^3.0.4", + "semver": "^5.6.0", + "tapable": "^1.0.0", + "worker-rpc": "^0.1.0" + }, + "engines": { + "node": ">=6.11.5", + "yarn": ">=1.0.0" + } + }, + "node_modules/fork-ts-checker-webpack-plugin-v5": { + "name": "fork-ts-checker-webpack-plugin", + "version": "5.2.1", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "@babel/code-frame": "^7.8.3", + "@types/json-schema": "^7.0.5", + "chalk": "^4.1.0", + "cosmiconfig": "^6.0.0", + "deepmerge": "^4.2.2", + "fs-extra": "^9.0.0", + "memfs": "^3.1.2", + "minimatch": "^3.0.4", + "schema-utils": "2.7.0", + "semver": "^7.3.2", + "tapable": "^1.0.0" + }, + "engines": { + "node": ">=10", + "yarn": ">=1.0.0" + } + }, + "node_modules/fork-ts-checker-webpack-plugin-v5/node_modules/chalk": { + "version": "4.1.1", + "dev": true, + "license": "MIT", + "optional": 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/fork-ts-checker-webpack-plugin-v5/node_modules/cosmiconfig": { + "version": "6.0.0", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "@types/parse-json": "^4.0.0", + "import-fresh": "^3.1.0", + "parse-json": "^5.0.0", + "path-type": "^4.0.0", + "yaml": "^1.7.2" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/fork-ts-checker-webpack-plugin-v5/node_modules/fs-extra": { + "version": "9.1.0", + "dev": true, + "license": "MIT", + "optional": 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/fork-ts-checker-webpack-plugin-v5/node_modules/has-flag": { + "version": "4.0.0", + "dev": true, + "license": "MIT", + "optional": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/fork-ts-checker-webpack-plugin-v5/node_modules/jsonfile": { + "version": "6.1.0", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "universalify": "^2.0.0" + }, + "optionalDependencies": { + "graceful-fs": "^4.1.6" + } + }, + "node_modules/fork-ts-checker-webpack-plugin-v5/node_modules/lru-cache": { + "version": "6.0.0", + "dev": true, + "license": "ISC", + "optional": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/fork-ts-checker-webpack-plugin-v5/node_modules/schema-utils": { + "version": "2.7.0", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "@types/json-schema": "^7.0.4", + "ajv": "^6.12.2", + "ajv-keywords": "^3.4.1" + }, + "engines": { + "node": ">= 8.9.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } + }, + "node_modules/fork-ts-checker-webpack-plugin-v5/node_modules/semver": { + "version": "7.3.5", + "dev": true, + "license": "ISC", + "optional": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/fork-ts-checker-webpack-plugin-v5/node_modules/supports-color": { + "version": "7.2.0", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/fork-ts-checker-webpack-plugin-v5/node_modules/universalify": { + "version": "2.0.0", + "dev": true, + "license": "MIT", + "optional": true, + "engines": { + "node": ">= 10.0.0" + } + }, + "node_modules/fork-ts-checker-webpack-plugin/node_modules/binary-extensions": { + "version": "2.2.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/fork-ts-checker-webpack-plugin/node_modules/braces": { + "version": "3.0.2", + "dev": true, + "license": "MIT", + "dependencies": { + "fill-range": "^7.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/fork-ts-checker-webpack-plugin/node_modules/chokidar": { + "version": "3.5.1", + "dev": true, + "license": "MIT", + "dependencies": { + "anymatch": "~3.1.1", + "braces": "~3.0.2", + "glob-parent": "~5.1.0", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.5.0" + }, + "engines": { + "node": ">= 8.10.0" + }, + "optionalDependencies": { + "fsevents": "~2.3.1" + } + }, + "node_modules/fork-ts-checker-webpack-plugin/node_modules/fill-range": { + "version": "7.0.1", + "dev": true, + "license": "MIT", + "dependencies": { + "to-regex-range": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/fork-ts-checker-webpack-plugin/node_modules/glob-parent": { + "version": "5.1.2", + "dev": true, + "license": "ISC", + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/fork-ts-checker-webpack-plugin/node_modules/is-binary-path": { + "version": "2.1.0", + "dev": true, + "license": "MIT", + "dependencies": { + "binary-extensions": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/fork-ts-checker-webpack-plugin/node_modules/is-number": { + "version": "7.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/fork-ts-checker-webpack-plugin/node_modules/readdirp": { + "version": "3.5.0", + "dev": true, + "license": "MIT", + "dependencies": { + "picomatch": "^2.2.1" + }, + "engines": { + "node": ">=8.10.0" + } + }, + "node_modules/fork-ts-checker-webpack-plugin/node_modules/semver": { + "version": "5.7.1", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver" + } + }, + "node_modules/fork-ts-checker-webpack-plugin/node_modules/to-regex-range": { + "version": "5.0.1", + "dev": true, + "license": "MIT", + "dependencies": { + "is-number": "^7.0.0" + }, + "engines": { + "node": ">=8.0" + } + }, + "node_modules/form-data": { + "version": "2.3.3", + "dev": true, + "license": "MIT", + "dependencies": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.6", + "mime-types": "^2.1.12" + }, + "engines": { + "node": ">= 0.12" + } + }, + "node_modules/forwarded": { + "version": "0.2.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/fragment-cache": { + "version": "0.2.1", + "license": "MIT", + "dependencies": { + "map-cache": "^0.2.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/fresh": { + "version": "0.5.2", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/from2": { + "version": "2.3.0", + "license": "MIT", + "dependencies": { + "inherits": "^2.0.1", + "readable-stream": "^2.0.0" + } + }, + "node_modules/fs-extra": { + "version": "8.1.0", + "license": "MIT", + "dependencies": { + "graceful-fs": "^4.2.0", + "jsonfile": "^4.0.0", + "universalify": "^0.1.0" + }, + "engines": { + "node": ">=6 <7 || >=8" + } + }, + "node_modules/fs-monkey": { + "version": "1.0.3", + "dev": true, + "license": "Unlicense", + "optional": true + }, + "node_modules/fs-write-stream-atomic": { + "version": "1.0.10", + "license": "ISC", + "dependencies": { + "graceful-fs": "^4.1.2", + "iferr": "^0.1.5", + "imurmurhash": "^0.1.4", + "readable-stream": "1 || 2" + } + }, + "node_modules/fs.realpath": { + "version": "1.0.0", + "license": "ISC" + }, + "node_modules/function-bind": { + "version": "1.1.1", + "license": "MIT" + }, + "node_modules/functional-red-black-tree": { + "version": "1.0.1", + "license": "MIT" + }, + "node_modules/fuzzysearch": { + "version": "1.0.3", + "license": "MIT" + }, + "node_modules/generic-names": { + "version": "2.0.1", + "dev": true, + "license": "MIT", + "dependencies": { + "loader-utils": "^1.1.0" + } + }, + "node_modules/gensync": { + "version": "1.0.0-beta.2", + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/get-caller-file": { + "version": "2.0.5", + "dev": true, + "license": "ISC", + "engines": { + "node": "6.* || 8.* || >= 10.*" + } + }, + "node_modules/get-intrinsic": { + "version": "1.1.1", + "license": "MIT", + "dependencies": { + "function-bind": "^1.1.1", + "has": "^1.0.3", + "has-symbols": "^1.0.1" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/get-own-enumerable-property-symbols": { + "version": "3.0.2", + "license": "ISC" + }, + "node_modules/get-stream": { + "version": "4.1.0", + "dev": true, + "license": "MIT", + "dependencies": { + "pump": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/get-value": { + "version": "2.0.6", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/getpass": { + "version": "0.1.7", + "dev": true, + "license": "MIT", + "dependencies": { + "assert-plus": "^1.0.0" + } + }, + "node_modules/glob": { + "version": "7.1.7", + "license": "ISC", + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/glob-parent": { + "version": "3.1.0", + "license": "ISC", + "dependencies": { + "is-glob": "^3.1.0", + "path-dirname": "^1.0.0" + } + }, + "node_modules/glob-parent/node_modules/is-glob": { + "version": "3.1.0", + "license": "MIT", + "dependencies": { + "is-extglob": "^2.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/glob-to-regexp": { + "version": "0.3.0", + "license": "BSD" + }, + "node_modules/globals": { + "version": "11.12.0", + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/globby": { + "version": "9.2.0", + "license": "MIT", + "dependencies": { + "@types/glob": "^7.1.1", + "array-union": "^1.0.2", + "dir-glob": "^2.2.2", + "fast-glob": "^2.2.6", + "glob": "^7.1.3", + "ignore": "^4.0.3", + "pify": "^4.0.1", + "slash": "^2.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/graceful-fs": { + "version": "4.2.6", + "license": "ISC" + }, + "node_modules/graphlib": { + "version": "2.1.8", + "resolved": "https://registry.npmjs.org/graphlib/-/graphlib-2.1.8.tgz", + "integrity": "sha512-jcLLfkpoVGmH7/InMC/1hIvOPSUh38oJtGhvrOFGzioE1DZ+0YW16RgmOJhHiuWTvGiJQ9Z1Ik43JvkRPRvE+A==", + "dependencies": { + "lodash": "^4.17.15" + } + }, + "node_modules/gray-matter": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/gray-matter/-/gray-matter-4.0.3.tgz", + "integrity": "sha512-5v6yZd4JK3eMI3FqqCouswVqwugaA9r4dNZB1wwcmrD02QkV5H0y7XBQW8QwQqEaZY1pM9aqORSORhJRdNK44Q==", + "dependencies": { + "js-yaml": "^3.13.1", + "kind-of": "^6.0.2", + "section-matter": "^1.0.0", + "strip-bom-string": "^1.0.0" + }, + "engines": { + "node": ">=6.0" + } + }, + "node_modules/gray-matter/node_modules/kind-of": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/gzip-size": { + "version": "5.1.1", + "dev": true, + "license": "MIT", + "dependencies": { + "duplexer": "^0.1.1", + "pify": "^4.0.1" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/handle-thing": { + "version": "2.0.1", + "dev": true, + "license": "MIT" + }, + "node_modules/har-schema": { + "version": "2.0.0", + "dev": true, + "license": "ISC", + "engines": { + "node": ">=4" + } + }, + "node_modules/har-validator": { + "version": "5.1.5", + "dev": true, + "license": "MIT", + "dependencies": { + "ajv": "^6.12.3", + "har-schema": "^2.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/has": { + "version": "1.0.3", + "license": "MIT", + "dependencies": { + "function-bind": "^1.1.1" + }, + "engines": { + "node": ">= 0.4.0" + } + }, + "node_modules/has-ansi": { + "version": "2.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-regex": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/has-bigints": { + "version": "1.0.1", + "dev": true, + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-flag": { + "version": "3.0.0", + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/has-symbols": { + "version": "1.0.2", + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-value": { + "version": "1.0.0", + "license": "MIT", + "dependencies": { + "get-value": "^2.0.6", + "has-values": "^1.0.0", + "isobject": "^3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/has-values": { + "version": "1.0.0", + "license": "MIT", + "dependencies": { + "is-number": "^3.0.0", + "kind-of": "^4.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/has-values/node_modules/kind-of": { + "version": "4.0.0", + "license": "MIT", + "dependencies": { + "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/hash-base": { + "version": "3.1.0", + "license": "MIT", + "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", + "license": "MIT", + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/hash-sum": { + "version": "1.0.2", + "license": "MIT" + }, + "node_modules/hash.js": { + "version": "1.1.7", + "license": "MIT", + "dependencies": { + "inherits": "^2.0.3", + "minimalistic-assert": "^1.0.1" + } + }, + "node_modules/he": { + "version": "1.2.0", + "license": "MIT", + "bin": { + "he": "bin/he" + } + }, + "node_modules/hex-color-regex": { + "version": "1.1.0", + "dev": true, + "license": "MIT" + }, + "node_modules/highlight.js": { + "version": "10.7.3", + "license": "BSD-3-Clause", + "engines": { + "node": "*" + } + }, + "node_modules/hmac-drbg": { + "version": "1.0.1", + "license": "MIT", + "dependencies": { + "hash.js": "^1.0.3", + "minimalistic-assert": "^1.0.0", + "minimalistic-crypto-utils": "^1.0.1" + } + }, + "node_modules/hoopy": { + "version": "0.1.4", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 6.0.0" + } + }, + "node_modules/hosted-git-info": { + "version": "2.8.9", + "dev": true, + "license": "ISC" + }, + "node_modules/hpack.js": { + "version": "2.1.6", + "dev": true, + "license": "MIT", + "dependencies": { + "inherits": "^2.0.1", + "obuf": "^1.0.0", + "readable-stream": "^2.0.1", + "wbuf": "^1.1.0" + } + }, + "node_modules/hsl-regex": { + "version": "1.0.0", + "dev": true, + "license": "MIT" + }, + "node_modules/hsla-regex": { + "version": "1.0.0", + "dev": true, + "license": "MIT" + }, + "node_modules/html-entities": { + "version": "1.4.0", + "dev": true, + "license": "MIT" + }, + "node_modules/html-minifier": { + "version": "3.5.21", + "dev": true, + "license": "MIT", + "dependencies": { + "camel-case": "3.0.x", + "clean-css": "4.2.x", + "commander": "2.17.x", + "he": "1.2.x", + "param-case": "2.1.x", + "relateurl": "0.2.x", + "uglify-js": "3.4.x" + }, + "bin": { + "html-minifier": "cli.js" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/html-minifier/node_modules/commander": { + "version": "2.17.1", + "dev": true, + "license": "MIT" + }, + "node_modules/html-tags": { + "version": "2.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/html-webpack-plugin": { + "version": "3.2.0", + "dev": true, + "license": "MIT", + "dependencies": { + "html-minifier": "^3.2.3", + "loader-utils": "^0.2.16", + "lodash": "^4.17.3", + "pretty-error": "^2.0.2", + "tapable": "^1.0.0", + "toposort": "^1.0.0", + "util.promisify": "1.0.0" + }, + "engines": { + "node": ">=6.9" + }, + "peerDependencies": { + "webpack": "^1.0.0 || ^2.0.0 || ^3.0.0 || ^4.0.0" + } + }, + "node_modules/html-webpack-plugin/node_modules/big.js": { + "version": "3.2.0", + "dev": true, + "license": "MIT", + "engines": { + "node": "*" + } + }, + "node_modules/html-webpack-plugin/node_modules/emojis-list": { + "version": "2.1.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/html-webpack-plugin/node_modules/json5": { + "version": "0.5.1", + "dev": true, + "license": "MIT", + "bin": { + "json5": "lib/cli.js" + } + }, + "node_modules/html-webpack-plugin/node_modules/loader-utils": { + "version": "0.2.17", + "dev": true, + "license": "MIT", + "dependencies": { + "big.js": "^3.1.3", + "emojis-list": "^2.0.0", + "json5": "^0.5.0", + "object-assign": "^4.0.1" + } + }, + "node_modules/htmlparser2": { + "version": "6.1.0", + "dev": true, + "funding": [ + "https://github.com/fb55/htmlparser2?sponsor=1", + { + "type": "github", + "url": "https://github.com/sponsors/fb55" + } + ], + "license": "MIT", + "dependencies": { + "domelementtype": "^2.0.1", + "domhandler": "^4.0.0", + "domutils": "^2.5.2", + "entities": "^2.0.0" + } + }, + "node_modules/http-deceiver": { + "version": "1.2.7", + "dev": true, + "license": "MIT" + }, + "node_modules/http-errors": { + "version": "1.7.2", + "dev": true, + "license": "MIT", + "dependencies": { + "depd": "~1.1.2", + "inherits": "2.0.3", + "setprototypeof": "1.1.1", + "statuses": ">= 1.5.0 < 2", + "toidentifier": "1.0.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/http-errors/node_modules/inherits": { + "version": "2.0.3", + "dev": true, + "license": "ISC" + }, + "node_modules/http-parser-js": { + "version": "0.5.3", + "dev": true, + "license": "MIT" + }, + "node_modules/http-proxy": { + "version": "1.18.1", + "dev": true, + "license": "MIT", + "dependencies": { + "eventemitter3": "^4.0.0", + "follow-redirects": "^1.0.0", + "requires-port": "^1.0.0" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/http-proxy-middleware": { + "version": "0.19.1", + "dev": true, + "license": "MIT", + "dependencies": { + "http-proxy": "^1.17.0", + "is-glob": "^4.0.0", + "lodash": "^4.17.11", + "micromatch": "^3.1.10" + }, + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/http-signature": { + "version": "1.2.0", + "dev": true, + "license": "MIT", + "dependencies": { + "assert-plus": "^1.0.0", + "jsprim": "^1.2.2", + "sshpk": "^1.7.0" + }, + "engines": { + "node": ">=0.8", + "npm": ">=1.3.7" + } + }, + "node_modules/https-browserify": { + "version": "1.0.0", + "license": "MIT" + }, + "node_modules/human-signals": { + "version": "1.1.1", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=8.12.0" + } + }, + "node_modules/iconv-lite": { + "version": "0.4.24", + "license": "MIT", + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/icss-replace-symbols": { + "version": "1.1.0", + "dev": true, + "license": "ISC" + }, + "node_modules/icss-utils": { + "version": "4.1.1", + "dev": true, + "license": "ISC", + "dependencies": { + "postcss": "^7.0.14" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/idb": { + "version": "6.1.4", + "resolved": "https://registry.npmjs.org/idb/-/idb-6.1.4.tgz", + "integrity": "sha512-DshI5yxIB3NYc47cPpfipYX8MSIgQPqVR+WoaGI9EDq6cnLGgGYR1fp6z8/Bq9vMS8Jq1bS3eWUgXpFO5+ypSA==" + }, + "node_modules/ieee754": { + "version": "1.2.1", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "BSD-3-Clause" + }, + "node_modules/iferr": { + "version": "0.1.5", + "license": "MIT" + }, + "node_modules/ignore": { + "version": "4.0.6", + "license": "MIT", + "engines": { + "node": ">= 4" + } + }, + "node_modules/import-cwd": { + "version": "2.1.0", + "dev": true, + "license": "MIT", + "dependencies": { + "import-from": "^2.1.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/import-fresh": { + "version": "3.3.0", + "license": "MIT", + "dependencies": { + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/import-fresh/node_modules/resolve-from": { + "version": "4.0.0", + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/import-from": { + "version": "2.1.0", + "dev": true, + "license": "MIT", + "dependencies": { + "resolve-from": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/import-local": { + "version": "2.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "pkg-dir": "^3.0.0", + "resolve-cwd": "^2.0.0" + }, + "bin": { + "import-local-fixture": "fixtures/cli.js" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/imurmurhash": { + "version": "0.1.4", + "license": "MIT", + "engines": { + "node": ">=0.8.19" + } + }, + "node_modules/indexes-of": { + "version": "1.0.1", + "dev": true, + "license": "MIT" + }, + "node_modules/infer-owner": { + "version": "1.0.4", + "license": "ISC" + }, + "node_modules/inflight": { + "version": "1.0.6", + "license": "ISC", + "dependencies": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "node_modules/inherits": { + "version": "2.0.4", + "license": "ISC" + }, + "node_modules/inquirer": { + "version": "7.3.3", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-escapes": "^4.2.1", + "chalk": "^4.1.0", + "cli-cursor": "^3.1.0", + "cli-width": "^3.0.0", + "external-editor": "^3.0.3", + "figures": "^3.0.0", + "lodash": "^4.17.19", + "mute-stream": "0.0.8", + "run-async": "^2.4.0", + "rxjs": "^6.6.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0", + "through": "^2.3.6" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/inquirer/node_modules/chalk": { + "version": "4.1.1", + "dev": true, + "license": "MIT", + "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/inquirer/node_modules/has-flag": { + "version": "4.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/inquirer/node_modules/supports-color": { + "version": "7.2.0", + "dev": true, + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/insert-text-at-cursor": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/insert-text-at-cursor/-/insert-text-at-cursor-0.3.0.tgz", + "integrity": "sha512-/nPtyeX9xPUvxZf+r0518B7uqNKlP+LqNJqSiXFEaa2T71rWIwTVXGH7hB9xO/EVdwa5/pWlFCPwShOW81XIxQ==" + }, + "node_modules/internal-ip": { + "version": "4.3.0", + "dev": true, + "license": "MIT", + "dependencies": { + "default-gateway": "^4.2.0", + "ipaddr.js": "^1.9.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/internal-ip/node_modules/default-gateway": { + "version": "4.2.0", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "execa": "^1.0.0", + "ip-regex": "^2.1.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/ip": { + "version": "1.1.5", + "dev": true, + "license": "MIT" + }, + "node_modules/ip-regex": { + "version": "2.1.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/ipaddr.js": { + "version": "1.9.1", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/is-absolute-url": { + "version": "3.0.3", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/is-accessor-descriptor": { + "version": "1.0.0", + "license": "MIT", + "dependencies": { + "kind-of": "^6.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-accessor-descriptor/node_modules/kind-of": { + "version": "6.0.3", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-arguments": { + "version": "1.1.0", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-arrayish": { + "version": "0.2.1", + "dev": true, + "license": "MIT" + }, + "node_modules/is-bigint": { + "version": "1.0.2", + "dev": true, + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-binary-path": { + "version": "1.0.1", + "devOptional": true, + "license": "MIT", + "dependencies": { + "binary-extensions": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-boolean-object": { + "version": "1.1.1", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-buffer": { + "version": "1.1.6", + "license": "MIT" + }, + "node_modules/is-callable": { + "version": "1.2.3", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-ci": { + "version": "1.2.1", + "dev": true, + "license": "MIT", + "dependencies": { + "ci-info": "^1.5.0" + }, + "bin": { + "is-ci": "bin.js" + } + }, + "node_modules/is-color-stop": { + "version": "1.1.0", + "dev": true, + "license": "MIT", + "dependencies": { + "css-color-names": "^0.0.4", + "hex-color-regex": "^1.1.0", + "hsl-regex": "^1.0.0", + "hsla-regex": "^1.0.0", + "rgb-regex": "^1.0.1", + "rgba-regex": "^1.0.0" + } + }, + "node_modules/is-core-module": { + "version": "2.4.0", + "license": "MIT", + "dependencies": { + "has": "^1.0.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-data-descriptor": { + "version": "1.0.0", + "license": "MIT", + "dependencies": { + "kind-of": "^6.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-data-descriptor/node_modules/kind-of": { + "version": "6.0.3", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-date-object": { + "version": "1.0.4", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-descriptor": { + "version": "1.0.2", + "license": "MIT", + "dependencies": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-descriptor/node_modules/kind-of": { + "version": "6.0.3", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-directory": { + "version": "0.3.1", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-docker": { + "version": "2.2.1", + "dev": true, + "license": "MIT", + "bin": { + "is-docker": "cli.js" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-extendable": { + "version": "0.1.1", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-extglob": { + "version": "2.1.1", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-fullwidth-code-point": { + "version": "2.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/is-glob": { + "version": "4.0.1", + "license": "MIT", + "dependencies": { + "is-extglob": "^2.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-module": { + "version": "1.0.0", + "license": "MIT" + }, + "node_modules/is-negative-zero": { + "version": "2.0.1", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-number": { + "version": "3.0.0", + "license": "MIT", + "dependencies": { + "kind-of": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-number-object": { + "version": "1.0.5", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-obj": { + "version": "1.0.1", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-path-cwd": { + "version": "2.2.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/is-path-in-cwd": { + "version": "2.1.0", + "dev": true, + "license": "MIT", + "dependencies": { + "is-path-inside": "^2.1.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/is-path-inside": { + "version": "2.1.0", + "dev": true, + "license": "MIT", + "dependencies": { + "path-is-inside": "^1.0.2" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/is-plain-obj": { + "version": "3.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-plain-object": { + "version": "2.0.4", + "license": "MIT", + "dependencies": { + "isobject": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-promise": { + "version": "2.2.2", + "license": "MIT" + }, + "node_modules/is-regex": { + "version": "1.1.3", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.2", + "has-symbols": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-regexp": { + "version": "1.0.0", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-resolvable": { + "version": "1.1.0", + "dev": true, + "license": "ISC" + }, + "node_modules/is-stream": { + "version": "1.1.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-string": { + "version": "1.0.6", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-symbol": { + "version": "1.0.4", + "dev": true, + "license": "MIT", + "dependencies": { + "has-symbols": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-typedarray": { + "version": "1.0.0", + "dev": true, + "license": "MIT" + }, + "node_modules/is-valid-glob": { + "version": "1.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-windows": { + "version": "1.0.2", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-wsl": { + "version": "1.1.0", + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/isarray": { + "version": "1.0.0", + "license": "MIT" + }, + "node_modules/isexe": { + "version": "2.0.0", + "license": "ISC" + }, + "node_modules/isobject": { + "version": "3.0.1", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/isstream": { + "version": "0.1.2", + "dev": true, + "license": "MIT" + }, + "node_modules/javascript-stringify": { + "version": "2.1.0", + "dev": true, + "license": "MIT" + }, + "node_modules/jest-worker": { + "version": "26.6.2", + "license": "MIT", + "dependencies": { + "@types/node": "*", + "merge-stream": "^2.0.0", + "supports-color": "^7.0.0" + }, + "engines": { + "node": ">= 10.13.0" + } + }, + "node_modules/jest-worker/node_modules/has-flag": { + "version": "4.0.0", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-worker/node_modules/supports-color": { + "version": "7.2.0", + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/js-message": { + "version": "1.0.7", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.6.0" + } + }, + "node_modules/js-queue": { + "version": "2.0.2", + "dev": true, + "license": "MIT", + "dependencies": { + "easy-stack": "^1.0.1" + }, + "engines": { + "node": ">=1.0.0" + } + }, + "node_modules/js-tokens": { + "version": "4.0.0", + "license": "MIT" + }, + "node_modules/js-yaml": { + "version": "3.14.1", + "license": "MIT", + "dependencies": { + "argparse": "^1.0.7", + "esprima": "^4.0.0" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/jsbn": { + "version": "0.1.1", + "dev": true, + "license": "MIT" + }, + "node_modules/jsesc": { + "version": "2.5.2", + "license": "MIT", + "bin": { + "jsesc": "bin/jsesc" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/json-parse-better-errors": { + "version": "1.0.2", + "license": "MIT" + }, + "node_modules/json-parse-even-better-errors": { + "version": "2.3.1", + "dev": true, + "license": "MIT" + }, + "node_modules/json-schema": { + "version": "0.2.3", + "dev": true + }, + "node_modules/json-schema-traverse": { + "version": "0.4.1", + "license": "MIT" + }, + "node_modules/json-stable-stringify-without-jsonify": { + "version": "1.0.1", + "license": "MIT" + }, + "node_modules/json-stringify-safe": { + "version": "5.0.1", + "dev": true, + "license": "ISC" + }, + "node_modules/json3": { + "version": "3.3.3", + "dev": true, + "license": "MIT" + }, + "node_modules/json5": { + "version": "2.2.0", + "license": "MIT", + "dependencies": { + "minimist": "^1.2.5" + }, + "bin": { + "json5": "lib/cli.js" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/jsonfile": { + "version": "4.0.0", + "license": "MIT", + "optionalDependencies": { + "graceful-fs": "^4.1.6" + } + }, + "node_modules/jsprim": { + "version": "1.4.1", + "dev": true, + "engines": [ + "node >=0.6.0" + ], + "license": "MIT", + "dependencies": { + "assert-plus": "1.0.0", + "extsprintf": "1.3.0", + "json-schema": "0.2.3", + "verror": "1.10.0" + } + }, + "node_modules/katex": { + "version": "0.13.18", + "resolved": "https://registry.npmjs.org/katex/-/katex-0.13.18.tgz", + "integrity": "sha512-a3dC4NSVSDU3O1WZbTnOiA8rVNJ2lSiomOl0kmckCIGObccIHXof7gAseIY0o1gjEspe+34ZeSEX2D1ChFKIvA==", + "dependencies": { + "commander": "^6.0.0" + }, + "bin": { + "katex": "cli.js" + } + }, + "node_modules/katex/node_modules/commander": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-6.2.1.tgz", + "integrity": "sha512-U7VdrJFnJgo4xjrHpTzu0yrHPGImdsmD95ZlgYSEajAn2JKzDhDTPG9kBTefmObL2w/ngeZnilk+OV9CG3d7UA==", + "engines": { + "node": ">= 6" + } + }, + "node_modules/khroma": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/khroma/-/khroma-1.4.1.tgz", + "integrity": "sha512-+GmxKvmiRuCcUYDgR7g5Ngo0JEDeOsGdNONdU2zsiBQaK4z19Y2NvXqfEDE0ZiIrg45GTZyAnPLVsLZZACYm3Q==" + }, + "node_modules/killable": { + "version": "1.0.1", + "dev": true, + "license": "ISC" + }, + "node_modules/kind-of": { + "version": "3.2.2", + "license": "MIT", + "dependencies": { + "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/launch-editor": { + "version": "2.2.1", + "dev": true, + "license": "MIT", + "dependencies": { + "chalk": "^2.3.0", + "shell-quote": "^1.6.1" + } + }, + "node_modules/launch-editor-middleware": { + "version": "2.2.1", + "dev": true, + "license": "MIT", + "dependencies": { + "launch-editor": "^2.2.1" + } + }, + "node_modules/levn": { + "version": "0.4.1", + "license": "MIT", + "dependencies": { + "prelude-ls": "^1.2.1", + "type-check": "~0.4.0" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/lines-and-columns": { + "version": "1.1.6", + "dev": true, + "license": "MIT" + }, + "node_modules/linkify-it": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/linkify-it/-/linkify-it-3.0.2.tgz", + "integrity": "sha512-gDBO4aHNZS6coiZCKVhSNh43F9ioIL4JwRjLZPkoLIY4yZFwg264Y5lu2x6rb1Js42Gh6Yqm2f6L2AJcnkzinQ==", + "dependencies": { + "uc.micro": "^1.0.1" + } + }, + "node_modules/loader-fs-cache": { + "version": "1.0.3", + "dev": true, + "license": "MIT", + "dependencies": { + "find-cache-dir": "^0.1.1", + "mkdirp": "^0.5.1" + } + }, + "node_modules/loader-fs-cache/node_modules/find-cache-dir": { + "version": "0.1.1", + "dev": true, + "license": "MIT", + "dependencies": { + "commondir": "^1.0.1", + "mkdirp": "^0.5.1", + "pkg-dir": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/loader-fs-cache/node_modules/find-up": { + "version": "1.1.2", + "dev": true, + "license": "MIT", + "dependencies": { + "path-exists": "^2.0.0", + "pinkie-promise": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/loader-fs-cache/node_modules/path-exists": { + "version": "2.1.0", + "dev": true, + "license": "MIT", + "dependencies": { + "pinkie-promise": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/loader-fs-cache/node_modules/pkg-dir": { + "version": "1.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "find-up": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/loader-runner": { + "version": "2.4.0", + "license": "MIT", + "engines": { + "node": ">=4.3.0 <5.0.0 || >=5.10" + } + }, + "node_modules/loader-utils": { + "version": "1.4.0", + "license": "MIT", + "dependencies": { + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^1.0.1" + }, + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/loader-utils/node_modules/json5": { + "version": "1.0.1", + "license": "MIT", + "dependencies": { + "minimist": "^1.2.0" + }, + "bin": { + "json5": "lib/cli.js" + } + }, + "node_modules/locate-path": { + "version": "3.0.0", + "license": "MIT", + "dependencies": { + "p-locate": "^3.0.0", + "path-exists": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/lodash": { + "version": "4.17.21", + "license": "MIT" + }, + "node_modules/lodash._reinterpolate": { + "version": "3.0.0", + "dev": true, + "license": "MIT" + }, + "node_modules/lodash.assign": { + "version": "4.2.0", + "dev": true, + "license": "MIT" + }, + "node_modules/lodash.camelcase": { + "version": "4.3.0", + "dev": true, + "license": "MIT" + }, + "node_modules/lodash.clonedeep": { + "version": "4.5.0", + "license": "MIT" + }, + "node_modules/lodash.debounce": { + "version": "4.0.8", + "license": "MIT" + }, + "node_modules/lodash.defaults": { + "version": "4.2.0", + "dev": true, + "license": "MIT" + }, + "node_modules/lodash.defaultsdeep": { + "version": "4.6.1", + "dev": true, + "license": "MIT" + }, + "node_modules/lodash.foreach": { + "version": "4.5.0", + "dev": true, + "license": "MIT" + }, + "node_modules/lodash.get": { + "version": "4.4.2", + "dev": true, + "license": "MIT" + }, + "node_modules/lodash.kebabcase": { + "version": "4.1.1", + "dev": true, + "license": "MIT" + }, + "node_modules/lodash.mapvalues": { + "version": "4.6.0", + "dev": true, + "license": "MIT" + }, + "node_modules/lodash.memoize": { + "version": "4.1.2", + "dev": true, + "license": "MIT" + }, + "node_modules/lodash.merge": { + "version": "4.6.2", + "license": "MIT" + }, + "node_modules/lodash.pick": { + "version": "4.4.0", + "license": "MIT" + }, + "node_modules/lodash.sortby": { + "version": "4.7.0", + "license": "MIT" + }, + "node_modules/lodash.template": { + "version": "4.5.0", + "dev": true, + "license": "MIT", + "dependencies": { + "lodash._reinterpolate": "^3.0.0", + "lodash.templatesettings": "^4.0.0" + } + }, + "node_modules/lodash.templatesettings": { + "version": "4.2.0", + "dev": true, + "license": "MIT", + "dependencies": { + "lodash._reinterpolate": "^3.0.0" + } + }, + "node_modules/lodash.transform": { + "version": "4.6.0", + "dev": true, + "license": "MIT" + }, + "node_modules/lodash.truncate": { + "version": "4.4.2", + "license": "MIT" + }, + "node_modules/lodash.uniq": { + "version": "4.5.0", + "dev": true, + "license": "MIT" + }, + "node_modules/log-symbols": { + "version": "2.2.0", + "dev": true, + "license": "MIT", + "dependencies": { + "chalk": "^2.0.1" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/loglevel": { + "version": "1.7.1", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.6.0" + }, + "funding": { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/loglevel" + } + }, + "node_modules/loose-envify": { + "version": "1.4.0", + "license": "MIT", + "dependencies": { + "js-tokens": "^3.0.0 || ^4.0.0" + }, + "bin": { + "loose-envify": "cli.js" + } + }, + "node_modules/lower-case": { + "version": "1.1.4", + "dev": true, + "license": "MIT" + }, + "node_modules/lru-cache": { + "version": "5.1.1", + "license": "ISC", + "dependencies": { + "yallist": "^3.0.2" + } + }, + "node_modules/lru-cache/node_modules/yallist": { + "version": "3.1.1", + "license": "ISC" + }, + "node_modules/magic-string": { + "version": "0.25.7", + "license": "MIT", + "dependencies": { + "sourcemap-codec": "^1.4.4" + } + }, + "node_modules/make-dir": { + "version": "3.1.0", + "dev": true, + "license": "MIT", + "dependencies": { + "semver": "^6.0.0" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/map-cache": { + "version": "0.2.2", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/map-visit": { + "version": "1.0.0", + "license": "MIT", + "dependencies": { + "object-visit": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/markdown-it": { + "version": "12.2.0", + "resolved": "https://registry.npmjs.org/markdown-it/-/markdown-it-12.2.0.tgz", + "integrity": "sha512-Wjws+uCrVQRqOoJvze4HCqkKl1AsSh95iFAeQDwnyfxM09divCBSXlDR1uTvyUP3Grzpn4Ru8GeCxYPM8vkCQg==", + "dependencies": { + "argparse": "^2.0.1", + "entities": "~2.1.0", + "linkify-it": "^3.0.1", + "mdurl": "^1.0.1", + "uc.micro": "^1.0.5" + }, + "bin": { + "markdown-it": "bin/markdown-it.js" + } + }, + "node_modules/markdown-it-anchor": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/markdown-it-anchor/-/markdown-it-anchor-5.3.0.tgz", + "integrity": "sha512-/V1MnLL/rgJ3jkMWo84UR+K+jF1cxNG1a+KwqeXqTIJ+jtA8aWSHuigx8lTzauiIjBDbwF3NcWQMotd0Dm39jA==", + "peerDependencies": { + "markdown-it": "*" + } + }, + "node_modules/markdown-it-attrs": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/markdown-it-attrs/-/markdown-it-attrs-4.0.0.tgz", + "integrity": "sha512-uLjtdCmhhmL3BuZsReYkFxk74qKjj5ahe34teBpOCJ4hYZZl7/ftLyXWLowngC2moRkbLEvKwN/7TMwbhbHE/A==", + "engines": { + "node": ">=6" + }, + "peerDependencies": { + "markdown-it": ">= 9.0.0 < 13.0.0" + } + }, + "node_modules/markdown-it-chain": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/markdown-it-chain/-/markdown-it-chain-1.3.0.tgz", + "integrity": "sha512-XClV8I1TKy8L2qsT9iX3qiV+50ZtcInGXI80CA+DP62sMs7hXlyV/RM3hfwy5O3Ad0sJm9xIwQELgANfESo8mQ==", + "dependencies": { + "webpack-chain": "^4.9.0" + }, + "engines": { + "node": ">=6.9" + }, + "peerDependencies": { + "markdown-it": ">=5.0.0" + } + }, + "node_modules/markdown-it-chain/node_modules/deepmerge": { + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-1.5.2.tgz", + "integrity": "sha512-95k0GDqvBjZavkuvzx/YqVLv/6YYa17fz6ILMSf7neqQITCPbnfEnQvEgMPNjH4kgobe7+WIL0yJEHku+H3qtQ==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/markdown-it-chain/node_modules/javascript-stringify": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/javascript-stringify/-/javascript-stringify-1.6.0.tgz", + "integrity": "sha1-FC0RHzpuPa6PSpr9d9RYVbWpzOM=" + }, + "node_modules/markdown-it-chain/node_modules/webpack-chain": { + "version": "4.12.1", + "resolved": "https://registry.npmjs.org/webpack-chain/-/webpack-chain-4.12.1.tgz", + "integrity": "sha512-BCfKo2YkDe2ByqkEWe1Rw+zko4LsyS75LVr29C6xIrxAg9JHJ4pl8kaIZ396SUSNp6b4815dRZPSTAS8LlURRQ==", + "dependencies": { + "deepmerge": "^1.5.2", + "javascript-stringify": "^1.6.0" + } + }, + "node_modules/markdown-it-container": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/markdown-it-container/-/markdown-it-container-3.0.0.tgz", + "integrity": "sha512-y6oKTq4BB9OQuY/KLfk/O3ysFhB3IMYoIWhGJEidXt1NQFocFK2sA2t0NYZAMyMShAGL6x5OPIbrmXPIqaN9rw==" + }, + "node_modules/markdown-it-emoji": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/markdown-it-emoji/-/markdown-it-emoji-1.4.0.tgz", + "integrity": "sha1-m+4OmpkKljupbfaYDE/dsF37Tcw=" + }, + "node_modules/markdown-it-table-of-contents": { + "version": "0.4.4", + "resolved": "https://registry.npmjs.org/markdown-it-table-of-contents/-/markdown-it-table-of-contents-0.4.4.tgz", + "integrity": "sha512-TAIHTHPwa9+ltKvKPWulm/beozQU41Ab+FIefRaQV1NRnpzwcV9QOe6wXQS5WLivm5Q/nlo0rl6laGkMDZE7Gw==", + "engines": { + "node": ">6.4.0" + } + }, + "node_modules/markdown-it/node_modules/argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==" + }, + "node_modules/markdown-it/node_modules/entities": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-2.1.0.tgz", + "integrity": "sha512-hCx1oky9PFrJ611mf0ifBLBRW8lUUVRlFolb5gWRfIELabBlbp9xZvrqZLZAs+NxFnbfQoeGd8wDkygjg7U85w==", + "funding": { + "url": "https://github.com/fb55/entities?sponsor=1" + } + }, + "node_modules/material-colors": { + "version": "1.2.6", + "license": "ISC" + }, + "node_modules/md5.js": { + "version": "1.3.5", + "license": "MIT", + "dependencies": { + "hash-base": "^3.0.0", + "inherits": "^2.0.1", + "safe-buffer": "^5.1.2" + } + }, + "node_modules/mdn-data": { + "version": "2.0.4", + "dev": true, + "license": "CC0-1.0" + }, + "node_modules/mdurl": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/mdurl/-/mdurl-1.0.1.tgz", + "integrity": "sha1-/oWy7HWlkDfyrf7BAP1sYBdhFS4=" + }, + "node_modules/media-typer": { + "version": "0.3.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/memfs": { + "version": "3.2.2", + "dev": true, + "license": "Unlicense", + "optional": true, + "dependencies": { + "fs-monkey": "1.0.3" + }, + "engines": { + "node": ">= 4.0.0" + } + }, + "node_modules/memory-fs": { + "version": "0.4.1", + "license": "MIT", + "dependencies": { + "errno": "^0.1.3", + "readable-stream": "^2.0.1" + } + }, + "node_modules/merge-descriptors": { + "version": "1.0.1", + "dev": true, + "license": "MIT" + }, + "node_modules/merge-source-map": { + "version": "1.1.0", + "dev": true, + "license": "MIT", + "dependencies": { + "source-map": "^0.6.1" + } + }, + "node_modules/merge-stream": { + "version": "2.0.0", + "license": "MIT" + }, + "node_modules/merge2": { + "version": "1.4.1", + "license": "MIT", + "engines": { + "node": ">= 8" + } + }, + "node_modules/mermaid": { + "version": "8.12.1", + "resolved": "https://registry.npmjs.org/mermaid/-/mermaid-8.12.1.tgz", + "integrity": "sha512-0UCcSF0FLoNcPBsRF4f9OIV32t41fV18//z8o3S+FDz2PbDA1CRGKdQF9IX84VP4Tv9kcgJI/oqJdcBEtB/GPA==", + "dependencies": { + "@braintree/sanitize-url": "^3.1.0", + "d3": "^5.16.0", + "dagre": "^0.8.5", + "dagre-d3": "^0.6.4", + "dompurify": "2.3.1", + "graphlib": "^2.1.8", + "khroma": "^1.4.1", + "moment-mini": "^2.24.0", + "stylis": "^4.0.10" + } + }, + "node_modules/methods": { + "version": "1.1.2", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/microevent.ts": { + "version": "0.1.1", + "dev": true, + "license": "MIT" + }, + "node_modules/micromatch": { + "version": "3.1.10", + "license": "MIT", + "dependencies": { + "arr-diff": "^4.0.0", + "array-unique": "^0.3.2", + "braces": "^2.3.1", + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "extglob": "^2.0.4", + "fragment-cache": "^0.2.1", + "kind-of": "^6.0.2", + "nanomatch": "^1.2.9", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/micromatch/node_modules/define-property": { + "version": "2.0.2", + "license": "MIT", + "dependencies": { + "is-descriptor": "^1.0.2", + "isobject": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/micromatch/node_modules/extend-shallow": { + "version": "3.0.2", + "license": "MIT", + "dependencies": { + "assign-symbols": "^1.0.0", + "is-extendable": "^1.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/micromatch/node_modules/is-extendable": { + "version": "1.0.1", + "license": "MIT", + "dependencies": { + "is-plain-object": "^2.0.4" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/micromatch/node_modules/kind-of": { + "version": "6.0.3", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/miller-rabin": { + "version": "4.0.1", + "license": "MIT", + "dependencies": { + "bn.js": "^4.0.0", + "brorand": "^1.0.1" + }, + "bin": { + "miller-rabin": "bin/miller-rabin" + } + }, + "node_modules/mime": { + "version": "2.5.2", + "dev": true, + "license": "MIT", + "bin": { + "mime": "cli.js" + }, + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/mime-db": { + "version": "1.48.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mime-types": { + "version": "2.1.31", + "dev": true, + "license": "MIT", + "dependencies": { + "mime-db": "1.48.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mimic-fn": { + "version": "2.1.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/mini-css-extract-plugin": { + "version": "0.9.0", + "dev": true, + "license": "MIT", + "dependencies": { + "loader-utils": "^1.1.0", + "normalize-url": "1.9.1", + "schema-utils": "^1.0.0", + "webpack-sources": "^1.1.0" + }, + "engines": { + "node": ">= 6.9.0" + }, + "peerDependencies": { + "webpack": "^4.4.0" + } + }, + "node_modules/minimalistic-assert": { + "version": "1.0.1", + "license": "ISC" + }, + "node_modules/minimalistic-crypto-utils": { + "version": "1.0.1", + "license": "MIT" + }, + "node_modules/minimatch": { + "version": "3.0.4", + "license": "ISC", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/minimist": { + "version": "1.2.5", + "license": "MIT" + }, + "node_modules/minipass": { + "version": "3.1.3", + "dev": true, + "license": "ISC", + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/mississippi": { + "version": "3.0.0", + "license": "BSD-2-Clause", + "dependencies": { + "concat-stream": "^1.5.0", + "duplexify": "^3.4.2", + "end-of-stream": "^1.1.0", + "flush-write-stream": "^1.0.0", + "from2": "^2.1.0", + "parallel-transform": "^1.1.0", + "pump": "^3.0.0", + "pumpify": "^1.3.3", + "stream-each": "^1.1.0", + "through2": "^2.0.0" + }, + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/mixin-deep": { + "version": "1.3.2", + "license": "MIT", + "dependencies": { + "for-in": "^1.0.2", + "is-extendable": "^1.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/mixin-deep/node_modules/is-extendable": { + "version": "1.0.1", + "license": "MIT", + "dependencies": { + "is-plain-object": "^2.0.4" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/mkdirp": { + "version": "0.5.5", + "license": "MIT", + "dependencies": { + "minimist": "^1.2.5" + }, + "bin": { + "mkdirp": "bin/cmd.js" + } + }, + "node_modules/moment": { + "version": "2.29.1", + "license": "MIT", + "engines": { + "node": "*" + } + }, + "node_modules/moment-mini": { + "version": "2.24.0", + "resolved": "https://registry.npmjs.org/moment-mini/-/moment-mini-2.24.0.tgz", + "integrity": "sha512-9ARkWHBs+6YJIvrIp0Ik5tyTTtP9PoV0Ssu2Ocq5y9v8+NOOpWiRshAp8c4rZVWTOe+157on/5G+zj5pwIQFEQ==" + }, + "node_modules/move-concurrently": { + "version": "1.0.1", + "license": "ISC", + "dependencies": { + "aproba": "^1.1.1", + "copy-concurrently": "^1.0.0", + "fs-write-stream-atomic": "^1.0.8", + "mkdirp": "^0.5.1", + "rimraf": "^2.5.4", + "run-queue": "^1.0.3" + } + }, + "node_modules/ms": { + "version": "2.1.2", + "license": "MIT" + }, + "node_modules/multicast-dns": { + "version": "6.2.3", + "dev": true, + "license": "MIT", + "dependencies": { + "dns-packet": "^1.3.1", + "thunky": "^1.0.2" + }, + "bin": { + "multicast-dns": "cli.js" + } + }, + "node_modules/multicast-dns-service-types": { + "version": "1.1.0", + "dev": true, + "license": "MIT" + }, + "node_modules/mute-stream": { + "version": "0.0.8", + "dev": true, + "license": "ISC" + }, + "node_modules/mz": { + "version": "2.7.0", + "dev": true, + "license": "MIT", + "dependencies": { + "any-promise": "^1.0.0", + "object-assign": "^4.0.1", + "thenify-all": "^1.0.0" + } + }, + "node_modules/nanoid": { + "version": "3.1.23", + "dev": true, + "license": "MIT", + "bin": { + "nanoid": "bin/nanoid.cjs" + }, + "engines": { + "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" + } + }, + "node_modules/nanomatch": { + "version": "1.2.13", + "license": "MIT", + "dependencies": { + "arr-diff": "^4.0.0", + "array-unique": "^0.3.2", + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "fragment-cache": "^0.2.1", + "is-windows": "^1.0.2", + "kind-of": "^6.0.2", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/nanomatch/node_modules/define-property": { + "version": "2.0.2", + "license": "MIT", + "dependencies": { + "is-descriptor": "^1.0.2", + "isobject": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/nanomatch/node_modules/extend-shallow": { + "version": "3.0.2", + "license": "MIT", + "dependencies": { + "assign-symbols": "^1.0.0", + "is-extendable": "^1.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/nanomatch/node_modules/is-extendable": { + "version": "1.0.1", + "license": "MIT", + "dependencies": { + "is-plain-object": "^2.0.4" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/nanomatch/node_modules/kind-of": { + "version": "6.0.3", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/natural-compare": { + "version": "1.4.0", + "license": "MIT" + }, + "node_modules/negotiator": { + "version": "0.6.2", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/neo-async": { + "version": "2.6.2", + "license": "MIT" + }, + "node_modules/nice-try": { + "version": "1.0.5", + "dev": true, + "license": "MIT" + }, + "node_modules/no-case": { + "version": "2.3.2", + "dev": true, + "license": "MIT", + "dependencies": { + "lower-case": "^1.1.1" + } + }, + "node_modules/node-fetch": { + "version": "2.6.1", + "license": "MIT", + "engines": { + "node": "4.x || >=6.0.0" + } + }, + "node_modules/node-forge": { + "version": "0.10.0", + "dev": true, + "license": "(BSD-3-Clause OR GPL-2.0)", + "engines": { + "node": ">= 6.0.0" + } + }, + "node_modules/node-ipc": { + "version": "9.1.4", + "dev": true, + "license": "MIT", + "dependencies": { + "event-pubsub": "4.3.0", + "js-message": "1.0.7", + "js-queue": "2.0.2" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/node-libs-browser": { + "version": "2.2.1", + "license": "MIT", + "dependencies": { + "assert": "^1.1.1", + "browserify-zlib": "^0.2.0", + "buffer": "^4.3.0", + "console-browserify": "^1.1.0", + "constants-browserify": "^1.0.0", + "crypto-browserify": "^3.11.0", + "domain-browser": "^1.1.1", + "events": "^3.0.0", + "https-browserify": "^1.0.0", + "os-browserify": "^0.3.0", + "path-browserify": "0.0.1", + "process": "^0.11.10", + "punycode": "^1.2.4", + "querystring-es3": "^0.2.0", + "readable-stream": "^2.3.3", + "stream-browserify": "^2.0.1", + "stream-http": "^2.7.2", + "string_decoder": "^1.0.0", + "timers-browserify": "^2.0.4", + "tty-browserify": "0.0.0", + "url": "^0.11.0", + "util": "^0.11.0", + "vm-browserify": "^1.0.1" + } + }, + "node_modules/node-libs-browser/node_modules/punycode": { + "version": "1.4.1", + "license": "MIT" + }, + "node_modules/node-releases": { + "version": "1.1.73", + "license": "MIT" + }, + "node_modules/normalize-package-data": { + "version": "2.5.0", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "hosted-git-info": "^2.1.4", + "resolve": "^1.10.0", + "semver": "2 || 3 || 4 || 5", + "validate-npm-package-license": "^3.0.1" + } + }, + "node_modules/normalize-package-data/node_modules/semver": { + "version": "5.7.1", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver" + } + }, + "node_modules/normalize-path": { + "version": "3.0.0", + "devOptional": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/normalize-range": { + "version": "0.1.2", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/normalize-url": { + "version": "1.9.1", + "dev": true, + "license": "MIT", + "dependencies": { + "object-assign": "^4.0.1", + "prepend-http": "^1.0.0", + "query-string": "^4.1.0", + "sort-keys": "^1.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/npm-run-path": { + "version": "2.0.2", + "dev": true, + "license": "MIT", + "dependencies": { + "path-key": "^2.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/nth-check": { + "version": "2.0.0", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "boolbase": "^1.0.0" + }, + "funding": { + "url": "https://github.com/fb55/nth-check?sponsor=1" + } + }, + "node_modules/num2fraction": { + "version": "1.2.2", + "dev": true, + "license": "MIT" + }, + "node_modules/oauth-sign": { + "version": "0.9.0", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": "*" + } + }, + "node_modules/object-assign": { + "version": "4.1.1", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object-copy": { + "version": "0.1.0", + "license": "MIT", + "dependencies": { + "copy-descriptor": "^0.1.0", + "define-property": "^0.2.5", + "kind-of": "^3.0.3" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object-hash": { + "version": "1.3.1", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.10.0" + } + }, + "node_modules/object-inspect": { + "version": "1.10.3", + "dev": true, + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object-is": { + "version": "1.1.5", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object-keys": { + "version": "1.1.1", + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/object-visit": { + "version": "1.0.1", + "license": "MIT", + "dependencies": { + "isobject": "^3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object.assign": { + "version": "4.1.2", + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.0", + "define-properties": "^1.1.3", + "has-symbols": "^1.0.1", + "object-keys": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object.getownpropertydescriptors": { + "version": "2.1.2", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3", + "es-abstract": "^1.18.0-next.2" + }, + "engines": { + "node": ">= 0.8" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object.pick": { + "version": "1.3.0", + "license": "MIT", + "dependencies": { + "isobject": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object.values": { + "version": "1.1.4", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3", + "es-abstract": "^1.18.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/obuf": { + "version": "1.1.2", + "dev": true, + "license": "MIT" + }, + "node_modules/on-finished": { + "version": "2.3.0", + "dev": true, + "license": "MIT", + "dependencies": { + "ee-first": "1.1.1" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/on-headers": { + "version": "1.0.2", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/once": { + "version": "1.4.0", + "license": "ISC", + "dependencies": { + "wrappy": "1" + } + }, + "node_modules/onetime": { + "version": "5.1.2", + "dev": true, + "license": "MIT", + "dependencies": { + "mimic-fn": "^2.1.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/open": { + "version": "6.4.0", + "dev": true, + "license": "MIT", + "dependencies": { + "is-wsl": "^1.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/opener": { + "version": "1.5.2", + "dev": true, + "license": "(WTFPL OR MIT)", + "bin": { + "opener": "bin/opener-bin.js" + } + }, + "node_modules/opn": { + "version": "5.5.0", + "dev": true, + "license": "MIT", + "dependencies": { + "is-wsl": "^1.1.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/optionator": { + "version": "0.9.1", + "license": "MIT", + "dependencies": { + "deep-is": "^0.1.3", + "fast-levenshtein": "^2.0.6", + "levn": "^0.4.1", + "prelude-ls": "^1.2.1", + "type-check": "^0.4.0", + "word-wrap": "^1.2.3" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/ora": { + "version": "3.4.0", + "dev": true, + "license": "MIT", + "dependencies": { + "chalk": "^2.4.2", + "cli-cursor": "^2.1.0", + "cli-spinners": "^2.0.0", + "log-symbols": "^2.2.0", + "strip-ansi": "^5.2.0", + "wcwidth": "^1.0.1" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/ora/node_modules/ansi-regex": { + "version": "4.1.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/ora/node_modules/cli-cursor": { + "version": "2.1.0", + "dev": true, + "license": "MIT", + "dependencies": { + "restore-cursor": "^2.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/ora/node_modules/mimic-fn": { + "version": "1.2.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/ora/node_modules/onetime": { + "version": "2.0.1", + "dev": true, + "license": "MIT", + "dependencies": { + "mimic-fn": "^1.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/ora/node_modules/restore-cursor": { + "version": "2.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "onetime": "^2.0.0", + "signal-exit": "^3.0.2" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/ora/node_modules/strip-ansi": { + "version": "5.2.0", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-regex": "^4.1.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/original": { + "version": "1.0.2", + "dev": true, + "license": "MIT", + "dependencies": { + "url-parse": "^1.4.3" + } + }, + "node_modules/os-browserify": { + "version": "0.3.0", + "license": "MIT" + }, + "node_modules/os-tmpdir": { + "version": "1.0.2", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/p-finally": { + "version": "1.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/p-limit": { + "version": "2.3.0", + "license": "MIT", + "dependencies": { + "p-try": "^2.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-locate": { + "version": "3.0.0", + "license": "MIT", + "dependencies": { + "p-limit": "^2.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/p-map": { + "version": "2.1.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/p-retry": { + "version": "3.0.1", + "dev": true, + "license": "MIT", + "dependencies": { + "retry": "^0.12.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/p-try": { + "version": "2.2.0", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/pako": { + "version": "1.0.11", + "license": "(MIT AND Zlib)" + }, + "node_modules/parallel-transform": { + "version": "1.2.0", + "license": "MIT", + "dependencies": { + "cyclist": "^1.0.1", + "inherits": "^2.0.3", + "readable-stream": "^2.1.5" + } + }, + "node_modules/param-case": { + "version": "2.1.1", + "dev": true, + "license": "MIT", + "dependencies": { + "no-case": "^2.2.0" + } + }, + "node_modules/parent-module": { + "version": "1.0.1", + "license": "MIT", + "dependencies": { + "callsites": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/parse-asn1": { + "version": "5.1.6", + "license": "ISC", + "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-json": { + "version": "5.2.0", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.0.0", + "error-ex": "^1.3.1", + "json-parse-even-better-errors": "^2.3.0", + "lines-and-columns": "^1.1.6" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/parse5": { + "version": "5.1.1", + "dev": true, + "license": "MIT" + }, + "node_modules/parse5-htmlparser2-tree-adapter": { + "version": "6.0.1", + "dev": true, + "license": "MIT", + "dependencies": { + "parse5": "^6.0.1" + } + }, + "node_modules/parse5-htmlparser2-tree-adapter/node_modules/parse5": { + "version": "6.0.1", + "dev": true, + "license": "MIT" + }, + "node_modules/parseurl": { + "version": "1.3.3", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/pascalcase": { + "version": "0.1.1", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/path-browserify": { + "version": "0.0.1", + "license": "MIT" + }, + "node_modules/path-dirname": { + "version": "1.0.2", + "license": "MIT" + }, + "node_modules/path-exists": { + "version": "3.0.0", + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/path-is-absolute": { + "version": "1.0.1", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/path-is-inside": { + "version": "1.0.2", + "dev": true, + "license": "(WTFPL OR MIT)" + }, + "node_modules/path-key": { + "version": "2.0.1", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/path-parse": { + "version": "1.0.7", + "license": "MIT" + }, + "node_modules/path-to-regexp": { + "version": "0.1.7", + "dev": true, + "license": "MIT" + }, + "node_modules/path-type": { + "version": "4.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/pbkdf2": { + "version": "3.1.2", + "license": "MIT", + "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/performance-now": { + "version": "2.1.0", + "dev": true, + "license": "MIT" + }, + "node_modules/picomatch": { + "version": "2.3.0", + "license": "MIT", + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/pify": { + "version": "4.0.1", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/pinkie": { + "version": "2.0.4", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/pinkie-promise": { + "version": "2.0.1", + "dev": true, + "license": "MIT", + "dependencies": { + "pinkie": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/pkg-dir": { + "version": "3.0.0", + "license": "MIT", + "dependencies": { + "find-up": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/pnp-webpack-plugin": { + "version": "1.6.4", + "dev": true, + "license": "MIT", + "dependencies": { + "ts-pnp": "^1.1.6" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/popper.js": { + "version": "1.16.1", + "license": "MIT", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/popperjs" + } + }, + "node_modules/portal-vue": { + "version": "2.1.7", + "license": "MIT", + "peerDependencies": { + "vue": "^2.5.18" + } + }, + "node_modules/portfinder": { + "version": "1.0.28", + "dev": true, + "license": "MIT", + "dependencies": { + "async": "^2.6.2", + "debug": "^3.1.1", + "mkdirp": "^0.5.5" + }, + "engines": { + "node": ">= 0.12.0" + } + }, + "node_modules/portfinder/node_modules/debug": { + "version": "3.2.7", + "dev": true, + "license": "MIT", + "dependencies": { + "ms": "^2.1.1" + } + }, + "node_modules/portfinder/node_modules/ms": { + "version": "2.1.3", + "dev": true, + "license": "MIT" + }, + "node_modules/posix-character-classes": { + "version": "0.1.1", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/postcss": { + "version": "7.0.36", + "dev": true, + "license": "MIT", + "dependencies": { + "chalk": "^2.4.2", + "source-map": "^0.6.1", + "supports-color": "^6.1.0" + }, + "engines": { + "node": ">=6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + } + }, + "node_modules/postcss-calc": { + "version": "7.0.5", + "dev": true, + "license": "MIT", + "dependencies": { + "postcss": "^7.0.27", + "postcss-selector-parser": "^6.0.2", + "postcss-value-parser": "^4.0.2" + } + }, + "node_modules/postcss-calc/node_modules/postcss-value-parser": { + "version": "4.1.0", + "dev": true, + "license": "MIT" + }, + "node_modules/postcss-colormin": { + "version": "4.0.3", + "dev": true, + "license": "MIT", + "dependencies": { + "browserslist": "^4.0.0", + "color": "^3.0.0", + "has": "^1.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/postcss-convert-values": { + "version": "4.0.1", + "dev": true, + "license": "MIT", + "dependencies": { + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/postcss-discard-comments": { + "version": "4.0.2", + "dev": true, + "license": "MIT", + "dependencies": { + "postcss": "^7.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/postcss-discard-duplicates": { + "version": "4.0.2", + "dev": true, + "license": "MIT", + "dependencies": { + "postcss": "^7.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/postcss-discard-empty": { + "version": "4.0.1", + "dev": true, + "license": "MIT", + "dependencies": { + "postcss": "^7.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/postcss-discard-overridden": { + "version": "4.0.1", + "dev": true, + "license": "MIT", + "dependencies": { + "postcss": "^7.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/postcss-load-config": { + "version": "2.1.2", + "dev": true, + "license": "MIT", + "dependencies": { + "cosmiconfig": "^5.0.0", + "import-cwd": "^2.0.0" + }, + "engines": { + "node": ">= 4" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + } + }, + "node_modules/postcss-loader": { + "version": "3.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "loader-utils": "^1.1.0", + "postcss": "^7.0.0", + "postcss-load-config": "^2.0.0", + "schema-utils": "^1.0.0" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/postcss-merge-longhand": { + "version": "4.0.11", + "dev": true, + "license": "MIT", + "dependencies": { + "css-color-names": "0.0.4", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0", + "stylehacks": "^4.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/postcss-merge-rules": { + "version": "4.0.3", + "dev": true, + "license": "MIT", + "dependencies": { + "browserslist": "^4.0.0", + "caniuse-api": "^3.0.0", + "cssnano-util-same-parent": "^4.0.0", + "postcss": "^7.0.0", + "postcss-selector-parser": "^3.0.0", + "vendors": "^1.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/postcss-merge-rules/node_modules/postcss-selector-parser": { + "version": "3.1.2", + "dev": true, + "license": "MIT", + "dependencies": { + "dot-prop": "^5.2.0", + "indexes-of": "^1.0.1", + "uniq": "^1.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/postcss-minify-font-values": { + "version": "4.0.2", + "dev": true, + "license": "MIT", + "dependencies": { + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/postcss-minify-gradients": { + "version": "4.0.2", + "dev": true, + "license": "MIT", + "dependencies": { + "cssnano-util-get-arguments": "^4.0.0", + "is-color-stop": "^1.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/postcss-minify-params": { + "version": "4.0.2", + "dev": true, + "license": "MIT", + "dependencies": { + "alphanum-sort": "^1.0.0", + "browserslist": "^4.0.0", + "cssnano-util-get-arguments": "^4.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0", + "uniqs": "^2.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/postcss-minify-selectors": { + "version": "4.0.2", + "dev": true, + "license": "MIT", + "dependencies": { + "alphanum-sort": "^1.0.0", + "has": "^1.0.0", + "postcss": "^7.0.0", + "postcss-selector-parser": "^3.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/postcss-minify-selectors/node_modules/postcss-selector-parser": { + "version": "3.1.2", + "dev": true, + "license": "MIT", + "dependencies": { + "dot-prop": "^5.2.0", + "indexes-of": "^1.0.1", + "uniq": "^1.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/postcss-modules-extract-imports": { + "version": "2.0.0", + "dev": true, + "license": "ISC", + "dependencies": { + "postcss": "^7.0.5" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/postcss-modules-local-by-default": { + "version": "3.0.3", + "dev": true, + "license": "MIT", + "dependencies": { + "icss-utils": "^4.1.1", + "postcss": "^7.0.32", + "postcss-selector-parser": "^6.0.2", + "postcss-value-parser": "^4.1.0" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/postcss-modules-local-by-default/node_modules/postcss-value-parser": { + "version": "4.1.0", + "dev": true, + "license": "MIT" + }, + "node_modules/postcss-modules-scope": { + "version": "2.2.0", + "dev": true, + "license": "ISC", + "dependencies": { + "postcss": "^7.0.6", + "postcss-selector-parser": "^6.0.0" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/postcss-modules-values": { + "version": "3.0.0", + "dev": true, + "license": "ISC", + "dependencies": { + "icss-utils": "^4.0.0", + "postcss": "^7.0.6" + } + }, + "node_modules/postcss-normalize-charset": { + "version": "4.0.1", + "dev": true, + "license": "MIT", + "dependencies": { + "postcss": "^7.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/postcss-normalize-display-values": { + "version": "4.0.2", + "dev": true, + "license": "MIT", + "dependencies": { + "cssnano-util-get-match": "^4.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/postcss-normalize-positions": { + "version": "4.0.2", + "dev": true, + "license": "MIT", + "dependencies": { + "cssnano-util-get-arguments": "^4.0.0", + "has": "^1.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/postcss-normalize-repeat-style": { + "version": "4.0.2", + "dev": true, + "license": "MIT", + "dependencies": { + "cssnano-util-get-arguments": "^4.0.0", + "cssnano-util-get-match": "^4.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/postcss-normalize-string": { + "version": "4.0.2", + "dev": true, + "license": "MIT", + "dependencies": { + "has": "^1.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/postcss-normalize-timing-functions": { + "version": "4.0.2", + "dev": true, + "license": "MIT", + "dependencies": { + "cssnano-util-get-match": "^4.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/postcss-normalize-unicode": { + "version": "4.0.1", + "dev": true, + "license": "MIT", + "dependencies": { + "browserslist": "^4.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/postcss-normalize-url": { + "version": "4.0.1", + "dev": true, + "license": "MIT", + "dependencies": { + "is-absolute-url": "^2.0.0", + "normalize-url": "^3.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/postcss-normalize-url/node_modules/is-absolute-url": { + "version": "2.1.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/postcss-normalize-url/node_modules/normalize-url": { + "version": "3.3.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/postcss-normalize-whitespace": { + "version": "4.0.2", + "dev": true, + "license": "MIT", + "dependencies": { + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/postcss-ordered-values": { + "version": "4.1.2", + "dev": true, + "license": "MIT", + "dependencies": { + "cssnano-util-get-arguments": "^4.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/postcss-reduce-initial": { + "version": "4.0.3", + "dev": true, + "license": "MIT", + "dependencies": { + "browserslist": "^4.0.0", + "caniuse-api": "^3.0.0", + "has": "^1.0.0", + "postcss": "^7.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/postcss-reduce-transforms": { + "version": "4.0.2", + "dev": true, + "license": "MIT", + "dependencies": { + "cssnano-util-get-match": "^4.0.0", + "has": "^1.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/postcss-selector-parser": { + "version": "6.0.6", + "dev": true, + "license": "MIT", + "dependencies": { + "cssesc": "^3.0.0", + "util-deprecate": "^1.0.2" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/postcss-svgo": { + "version": "4.0.3", + "dev": true, + "license": "MIT", + "dependencies": { + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0", + "svgo": "^1.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/postcss-unique-selectors": { + "version": "4.0.1", + "dev": true, + "license": "MIT", + "dependencies": { + "alphanum-sort": "^1.0.0", + "postcss": "^7.0.0", + "uniqs": "^2.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/postcss-value-parser": { + "version": "3.3.1", + "dev": true, + "license": "MIT" + }, + "node_modules/prelude-ls": { + "version": "1.2.1", + "license": "MIT", + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/prepend-http": { + "version": "1.0.4", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/prettier": { + "version": "1.19.1", + "dev": true, + "license": "MIT", + "optional": true, + "bin": { + "prettier": "bin-prettier.js" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/pretty-bytes": { + "version": "5.6.0", + "license": "MIT", + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/pretty-error": { + "version": "2.1.2", + "dev": true, + "license": "MIT", + "dependencies": { + "lodash": "^4.17.20", + "renderkid": "^2.0.4" + } + }, + "node_modules/prismjs": { + "version": "1.25.0", + "resolved": "https://registry.npmjs.org/prismjs/-/prismjs-1.25.0.tgz", + "integrity": "sha512-WCjJHl1KEWbnkQom1+SzftbtXMKQoezOCYs5rECqMN+jP+apI7ftoflyqigqzopSO3hMhTEb0mFClA8lkolgEg==" + }, + "node_modules/process": { + "version": "0.11.10", + "license": "MIT", + "engines": { + "node": ">= 0.6.0" + } + }, + "node_modules/process-nextick-args": { + "version": "2.0.1", + "license": "MIT" + }, + "node_modules/progress": { + "version": "2.0.3", + "license": "MIT", + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/promise-inflight": { + "version": "1.0.1", + "license": "ISC" + }, + "node_modules/proxy-addr": { + "version": "2.0.7", + "dev": true, + "license": "MIT", + "dependencies": { + "forwarded": "0.2.0", + "ipaddr.js": "1.9.1" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/prr": { + "version": "1.0.1", + "license": "MIT" + }, + "node_modules/pseudomap": { + "version": "1.0.2", + "dev": true, + "license": "ISC" + }, + "node_modules/psl": { + "version": "1.8.0", + "dev": true, + "license": "MIT" + }, + "node_modules/public-encrypt": { + "version": "4.0.3", + "license": "MIT", + "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/pump": { + "version": "3.0.0", + "license": "MIT", + "dependencies": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } + }, + "node_modules/pumpify": { + "version": "1.5.1", + "license": "MIT", + "dependencies": { + "duplexify": "^3.6.0", + "inherits": "^2.0.3", + "pump": "^2.0.0" + } + }, + "node_modules/pumpify/node_modules/pump": { + "version": "2.0.1", + "license": "MIT", + "dependencies": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } + }, + "node_modules/punycode": { + "version": "2.1.1", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/q": { + "version": "1.5.1", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.6.0", + "teleport": ">=0.2.0" + } + }, + "node_modules/qs": { + "version": "6.7.0", + "dev": true, + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.6" + } + }, + "node_modules/query-string": { + "version": "4.3.4", + "dev": true, + "license": "MIT", + "dependencies": { + "object-assign": "^4.1.0", + "strict-uri-encode": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/querystring": { + "version": "0.2.0", + "engines": { + "node": ">=0.4.x" + } + }, + "node_modules/querystring-es3": { + "version": "0.2.1", + "engines": { + "node": ">=0.4.x" + } + }, + "node_modules/querystringify": { + "version": "2.2.0", + "dev": true, + "license": "MIT" + }, + "node_modules/queue-microtask": { + "version": "1.2.3", + "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" + } + ], + "license": "MIT" + }, + "node_modules/randombytes": { + "version": "2.1.0", + "license": "MIT", + "dependencies": { + "safe-buffer": "^5.1.0" + } + }, + "node_modules/randomfill": { + "version": "1.0.4", + "license": "MIT", + "dependencies": { + "randombytes": "^2.0.5", + "safe-buffer": "^5.1.0" + } + }, + "node_modules/range-parser": { + "version": "1.2.1", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/raw-body": { + "version": "2.4.0", + "dev": true, + "license": "MIT", + "dependencies": { + "bytes": "3.1.0", + "http-errors": "1.7.2", + "iconv-lite": "0.4.24", + "unpipe": "1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/read-pkg": { + "version": "5.2.0", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/normalize-package-data": "^2.4.0", + "normalize-package-data": "^2.5.0", + "parse-json": "^5.0.0", + "type-fest": "^0.6.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/read-pkg/node_modules/type-fest": { + "version": "0.6.0", + "dev": true, + "license": "(MIT OR CC0-1.0)", + "engines": { + "node": ">=8" + } + }, + "node_modules/readable-stream": { + "version": "2.3.7", + "license": "MIT", + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "node_modules/readable-stream/node_modules/safe-buffer": { + "version": "5.1.2", + "license": "MIT" + }, + "node_modules/readable-stream/node_modules/string_decoder": { + "version": "1.1.1", + "license": "MIT", + "dependencies": { + "safe-buffer": "~5.1.0" + } + }, + "node_modules/readdirp": { + "version": "2.2.1", + "devOptional": true, + "license": "MIT", + "dependencies": { + "graceful-fs": "^4.1.11", + "micromatch": "^3.1.10", + "readable-stream": "^2.0.2" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/regenerate": { + "version": "1.4.2", + "license": "MIT" + }, + "node_modules/regenerate-unicode-properties": { + "version": "8.2.0", + "license": "MIT", + "dependencies": { + "regenerate": "^1.4.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/regenerator-runtime": { + "version": "0.13.7", + "license": "MIT" + }, + "node_modules/regenerator-transform": { + "version": "0.14.5", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.8.4" + } + }, + "node_modules/regex-not": { + "version": "1.0.2", + "license": "MIT", + "dependencies": { + "extend-shallow": "^3.0.2", + "safe-regex": "^1.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/regex-not/node_modules/extend-shallow": { + "version": "3.0.2", + "license": "MIT", + "dependencies": { + "assign-symbols": "^1.0.0", + "is-extendable": "^1.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/regex-not/node_modules/is-extendable": { + "version": "1.0.1", + "license": "MIT", + "dependencies": { + "is-plain-object": "^2.0.4" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/regexp.prototype.flags": { + "version": "1.3.1", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/regexpp": { + "version": "3.1.0", + "license": "MIT", + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/mysticatea" + } + }, + "node_modules/regexpu-core": { + "version": "4.7.1", + "license": "MIT", + "dependencies": { + "regenerate": "^1.4.0", + "regenerate-unicode-properties": "^8.2.0", + "regjsgen": "^0.5.1", + "regjsparser": "^0.6.4", + "unicode-match-property-ecmascript": "^1.0.4", + "unicode-match-property-value-ecmascript": "^1.2.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/regjsgen": { + "version": "0.5.2", + "license": "MIT" + }, + "node_modules/regjsparser": { + "version": "0.6.9", + "license": "BSD-2-Clause", + "dependencies": { + "jsesc": "~0.5.0" + }, + "bin": { + "regjsparser": "bin/parser" + } + }, + "node_modules/regjsparser/node_modules/jsesc": { + "version": "0.5.0", + "bin": { + "jsesc": "bin/jsesc" + } + }, + "node_modules/relateurl": { + "version": "0.2.7", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/remove-trailing-separator": { + "version": "1.1.0", + "devOptional": true, + "license": "ISC" + }, + "node_modules/renderkid": { + "version": "2.0.6", + "dev": true, + "license": "MIT", + "dependencies": { + "css-select": "^4.1.3", + "dom-converter": "^0.2.0", + "htmlparser2": "^6.1.0", + "lodash": "^4.17.21", + "strip-ansi": "^6.0.0" + } + }, + "node_modules/repeat-element": { + "version": "1.1.4", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/repeat-string": { + "version": "1.6.1", + "license": "MIT", + "engines": { + "node": ">=0.10" + } + }, + "node_modules/request": { + "version": "2.88.2", + "dev": true, + "license": "Apache-2.0", + "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", + "har-validator": "~5.1.3", + "http-signature": "~1.2.0", + "is-typedarray": "~1.0.0", + "isstream": "~0.1.2", + "json-stringify-safe": "~5.0.1", + "mime-types": "~2.1.19", + "oauth-sign": "~0.9.0", + "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": "^3.3.2" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/request/node_modules/qs": { + "version": "6.5.2", + "dev": true, + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.6" + } + }, + "node_modules/require-directory": { + "version": "2.1.1", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/require-from-string": { + "version": "2.0.2", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/require-main-filename": { + "version": "2.0.0", + "dev": true, + "license": "ISC" + }, + "node_modules/requires-port": { + "version": "1.0.0", + "dev": true, + "license": "MIT" + }, + "node_modules/resize-observer-polyfill": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/resize-observer-polyfill/-/resize-observer-polyfill-1.5.1.tgz", + "integrity": "sha512-LwZrotdHOo12nQuZlHEmtuXdqGoOD0OhaxopaNFxWzInpEgaLWoVuAMbTzixuosCx2nEG58ngzW3vxdWoxIgdg==" + }, + "node_modules/resolve": { + "version": "1.20.0", + "license": "MIT", + "dependencies": { + "is-core-module": "^2.2.0", + "path-parse": "^1.0.6" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/resolve-cwd": { + "version": "2.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "resolve-from": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/resolve-from": { + "version": "3.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/resolve-url": { + "version": "0.2.1", + "license": "MIT" + }, + "node_modules/restore-cursor": { + "version": "3.1.0", + "dev": true, + "license": "MIT", + "dependencies": { + "onetime": "^5.1.0", + "signal-exit": "^3.0.2" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/ret": { + "version": "0.1.15", + "license": "MIT", + "engines": { + "node": ">=0.12" + } + }, + "node_modules/retry": { + "version": "0.12.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 4" + } + }, + "node_modules/reusify": { + "version": "1.0.4", + "dev": true, + "license": "MIT", + "engines": { + "iojs": ">=1.0.0", + "node": ">=0.10.0" + } + }, + "node_modules/rgb-regex": { + "version": "1.0.1", + "dev": true, + "license": "MIT" + }, + "node_modules/rgba-regex": { + "version": "1.0.0", + "dev": true, + "license": "MIT" + }, + "node_modules/rimraf": { + "version": "2.7.1", + "license": "ISC", + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + } + }, + "node_modules/ripemd160": { + "version": "2.0.2", + "license": "MIT", + "dependencies": { + "hash-base": "^3.0.0", + "inherits": "^2.0.1" + } + }, + "node_modules/rollup": { + "version": "1.32.1", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/estree": "*", + "@types/node": "*", + "acorn": "^7.1.0" + }, + "bin": { + "rollup": "dist/bin/rollup" + } + }, + "node_modules/rollup-plugin-babel": { + "version": "4.4.0", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-module-imports": "^7.0.0", + "rollup-pluginutils": "^2.8.1" + }, + "peerDependencies": { + "@babel/core": "7 || ^7.0.0-rc.2", + "rollup": ">=0.60.0 <3" + } + }, + "node_modules/rollup-plugin-terser": { + "version": "5.3.1", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.5.5", + "jest-worker": "^24.9.0", + "rollup-pluginutils": "^2.8.2", + "serialize-javascript": "^4.0.0", + "terser": "^4.6.2" + }, + "peerDependencies": { + "rollup": ">=0.66.0 <3" + } + }, + "node_modules/rollup-plugin-terser/node_modules/jest-worker": { + "version": "24.9.0", + "dev": true, + "license": "MIT", + "dependencies": { + "merge-stream": "^2.0.0", + "supports-color": "^6.1.0" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/rollup-pluginutils": { + "version": "2.8.2", + "dev": true, + "license": "MIT", + "dependencies": { + "estree-walker": "^0.6.1" + } + }, + "node_modules/rollup-pluginutils/node_modules/estree-walker": { + "version": "0.6.1", + "dev": true, + "license": "MIT" + }, + "node_modules/run-async": { + "version": "2.4.1", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/run-parallel": { + "version": "1.2.0", + "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" + } + ], + "license": "MIT", + "dependencies": { + "queue-microtask": "^1.2.2" + } + }, + "node_modules/run-queue": { + "version": "1.0.3", + "license": "ISC", + "dependencies": { + "aproba": "^1.1.1" + } + }, + "node_modules/rw": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/rw/-/rw-1.3.3.tgz", + "integrity": "sha1-P4Yt+pGrdmsUiF700BEkv9oHT7Q=" + }, + "node_modules/rxjs": { + "version": "6.6.7", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "tslib": "^1.9.0" + }, + "engines": { + "npm": ">=2.0.0" + } + }, + "node_modules/safe-buffer": { + "version": "5.2.1", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT" + }, + "node_modules/safe-regex": { + "version": "1.1.0", + "license": "MIT", + "dependencies": { + "ret": "~0.1.10" + } + }, + "node_modules/safer-buffer": { + "version": "2.1.2", + "license": "MIT" + }, + "node_modules/sax": { + "version": "1.2.4", + "dev": true, + "license": "ISC" + }, + "node_modules/schema-utils": { + "version": "1.0.0", + "license": "MIT", + "dependencies": { + "ajv": "^6.1.0", + "ajv-errors": "^1.0.0", + "ajv-keywords": "^3.1.0" + }, + "engines": { + "node": ">= 4" + } + }, + "node_modules/section-matter": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/section-matter/-/section-matter-1.0.0.tgz", + "integrity": "sha512-vfD3pmTzGpufjScBh50YHKzEu2lxBWhVEHsNGoEXmCmn2hKGfeNLYMzCJpe8cD7gqX7TJluOVpBkAequ6dgMmA==", + "dependencies": { + "extend-shallow": "^2.0.1", + "kind-of": "^6.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/section-matter/node_modules/kind-of": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/select-hose": { + "version": "2.0.0", + "dev": true, + "license": "MIT" + }, + "node_modules/selfsigned": { + "version": "1.10.11", + "dev": true, + "license": "MIT", + "dependencies": { + "node-forge": "^0.10.0" + } + }, + "node_modules/semver": { + "version": "6.3.0", + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/send": { + "version": "0.17.1", + "dev": true, + "license": "MIT", + "dependencies": { + "debug": "2.6.9", + "depd": "~1.1.2", + "destroy": "~1.0.4", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "fresh": "0.5.2", + "http-errors": "~1.7.2", + "mime": "1.6.0", + "ms": "2.1.1", + "on-finished": "~2.3.0", + "range-parser": "~1.2.1", + "statuses": "~1.5.0" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/send/node_modules/debug": { + "version": "2.6.9", + "dev": true, + "license": "MIT", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/send/node_modules/debug/node_modules/ms": { + "version": "2.0.0", + "dev": true, + "license": "MIT" + }, + "node_modules/send/node_modules/http-errors": { + "version": "1.7.3", + "dev": true, + "license": "MIT", + "dependencies": { + "depd": "~1.1.2", + "inherits": "2.0.4", + "setprototypeof": "1.1.1", + "statuses": ">= 1.5.0 < 2", + "toidentifier": "1.0.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/send/node_modules/mime": { + "version": "1.6.0", + "dev": true, + "license": "MIT", + "bin": { + "mime": "cli.js" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/send/node_modules/ms": { + "version": "2.1.1", + "dev": true, + "license": "MIT" + }, + "node_modules/serialize-javascript": { + "version": "4.0.0", + "license": "BSD-3-Clause", + "dependencies": { + "randombytes": "^2.1.0" + } + }, + "node_modules/serve-index": { + "version": "1.9.1", + "dev": true, + "license": "MIT", + "dependencies": { + "accepts": "~1.3.4", + "batch": "0.6.1", + "debug": "2.6.9", + "escape-html": "~1.0.3", + "http-errors": "~1.6.2", + "mime-types": "~2.1.17", + "parseurl": "~1.3.2" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/serve-index/node_modules/debug": { + "version": "2.6.9", + "dev": true, + "license": "MIT", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/serve-index/node_modules/http-errors": { + "version": "1.6.3", + "dev": true, + "license": "MIT", + "dependencies": { + "depd": "~1.1.2", + "inherits": "2.0.3", + "setprototypeof": "1.1.0", + "statuses": ">= 1.4.0 < 2" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/serve-index/node_modules/inherits": { + "version": "2.0.3", + "dev": true, + "license": "ISC" + }, + "node_modules/serve-index/node_modules/ms": { + "version": "2.0.0", + "dev": true, + "license": "MIT" + }, + "node_modules/serve-index/node_modules/setprototypeof": { + "version": "1.1.0", + "dev": true, + "license": "ISC" + }, + "node_modules/serve-static": { + "version": "1.14.1", + "dev": true, + "license": "MIT", + "dependencies": { + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "parseurl": "~1.3.3", + "send": "0.17.1" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/set-blocking": { + "version": "2.0.0", + "dev": true, + "license": "ISC" + }, + "node_modules/set-value": { + "version": "2.0.1", + "license": "MIT", + "dependencies": { + "extend-shallow": "^2.0.1", + "is-extendable": "^0.1.1", + "is-plain-object": "^2.0.3", + "split-string": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/setimmediate": { + "version": "1.0.5", + "license": "MIT" + }, + "node_modules/setprototypeof": { + "version": "1.1.1", + "dev": true, + "license": "ISC" + }, + "node_modules/sha.js": { + "version": "2.4.11", + "license": "(MIT AND BSD-3-Clause)", + "dependencies": { + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + }, + "bin": { + "sha.js": "bin.js" + } + }, + "node_modules/shebang-command": { + "version": "1.2.0", + "dev": true, + "license": "MIT", + "dependencies": { + "shebang-regex": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/shebang-regex": { + "version": "1.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/shell-quote": { + "version": "1.7.2", + "dev": true, + "license": "MIT" + }, + "node_modules/signal-exit": { + "version": "3.0.3", + "dev": true, + "license": "ISC" + }, + "node_modules/simple-swizzle": { + "version": "0.2.2", + "dev": true, + "license": "MIT", + "dependencies": { + "is-arrayish": "^0.3.1" + } + }, + "node_modules/simple-swizzle/node_modules/is-arrayish": { + "version": "0.3.2", + "dev": true, + "license": "MIT" + }, + "node_modules/slash": { + "version": "2.0.0", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/slice-ansi": { + "version": "4.0.0", + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.0.0", + "astral-regex": "^2.0.0", + "is-fullwidth-code-point": "^3.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/slice-ansi?sponsor=1" + } + }, + "node_modules/slice-ansi/node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/snapdragon": { + "version": "0.8.2", + "license": "MIT", + "dependencies": { + "base": "^0.11.1", + "debug": "^2.2.0", + "define-property": "^0.2.5", + "extend-shallow": "^2.0.1", + "map-cache": "^0.2.2", + "source-map": "^0.5.6", + "source-map-resolve": "^0.5.0", + "use": "^3.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/snapdragon-node": { + "version": "2.1.1", + "license": "MIT", + "dependencies": { + "define-property": "^1.0.0", + "isobject": "^3.0.0", + "snapdragon-util": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/snapdragon-node/node_modules/define-property": { + "version": "1.0.0", + "license": "MIT", + "dependencies": { + "is-descriptor": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/snapdragon-util": { + "version": "3.0.1", + "license": "MIT", + "dependencies": { + "kind-of": "^3.2.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/snapdragon/node_modules/debug": { + "version": "2.6.9", + "license": "MIT", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/snapdragon/node_modules/ms": { + "version": "2.0.0", + "license": "MIT" + }, + "node_modules/snapdragon/node_modules/source-map": { + "version": "0.5.7", + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/sockjs": { + "version": "0.3.21", + "dev": true, + "license": "MIT", + "dependencies": { + "faye-websocket": "^0.11.3", + "uuid": "^3.4.0", + "websocket-driver": "^0.7.4" + } + }, + "node_modules/sockjs-client": { + "version": "1.5.1", + "dev": true, + "license": "MIT", + "dependencies": { + "debug": "^3.2.6", + "eventsource": "^1.0.7", + "faye-websocket": "^0.11.3", + "inherits": "^2.0.4", + "json3": "^3.3.3", + "url-parse": "^1.5.1" + } + }, + "node_modules/sockjs-client/node_modules/debug": { + "version": "3.2.7", + "dev": true, + "license": "MIT", + "dependencies": { + "ms": "^2.1.1" + } + }, + "node_modules/sockjs-client/node_modules/ms": { + "version": "2.1.3", + "dev": true, + "license": "MIT" + }, + "node_modules/sort-keys": { + "version": "1.1.2", + "dev": true, + "license": "MIT", + "dependencies": { + "is-plain-obj": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/sort-keys/node_modules/is-plain-obj": { + "version": "1.1.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/sortablejs": { + "version": "1.10.2", + "license": "MIT" + }, + "node_modules/source-list-map": { + "version": "2.0.1", + "license": "MIT" + }, + "node_modules/source-map": { + "version": "0.6.1", + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/source-map-js": { + "version": "0.6.2", + "dev": true, + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/source-map-resolve": { + "version": "0.5.3", + "license": "MIT", + "dependencies": { + "atob": "^2.1.2", + "decode-uri-component": "^0.2.0", + "resolve-url": "^0.2.1", + "source-map-url": "^0.4.0", + "urix": "^0.1.0" + } + }, + "node_modules/source-map-support": { + "version": "0.5.19", + "license": "MIT", + "dependencies": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + } + }, + "node_modules/source-map-url": { + "version": "0.4.1", + "license": "MIT" + }, + "node_modules/sourcemap-codec": { + "version": "1.4.8", + "license": "MIT" + }, + "node_modules/spdx-correct": { + "version": "3.1.1", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "spdx-expression-parse": "^3.0.0", + "spdx-license-ids": "^3.0.0" + } + }, + "node_modules/spdx-exceptions": { + "version": "2.3.0", + "dev": true, + "license": "CC-BY-3.0" + }, + "node_modules/spdx-expression-parse": { + "version": "3.0.1", + "dev": true, + "license": "MIT", + "dependencies": { + "spdx-exceptions": "^2.1.0", + "spdx-license-ids": "^3.0.0" + } + }, + "node_modules/spdx-license-ids": { + "version": "3.0.9", + "dev": true, + "license": "CC0-1.0" + }, + "node_modules/spdy": { + "version": "4.0.2", + "dev": true, + "license": "MIT", + "dependencies": { + "debug": "^4.1.0", + "handle-thing": "^2.0.0", + "http-deceiver": "^1.2.7", + "select-hose": "^2.0.0", + "spdy-transport": "^3.0.0" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/spdy-transport": { + "version": "3.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "debug": "^4.1.0", + "detect-node": "^2.0.4", + "hpack.js": "^2.1.6", + "obuf": "^1.1.2", + "readable-stream": "^3.0.6", + "wbuf": "^1.7.3" + } + }, + "node_modules/spdy-transport/node_modules/readable-stream": { + "version": "3.6.0", + "dev": true, + "license": "MIT", + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/split-string": { + "version": "3.1.0", + "license": "MIT", + "dependencies": { + "extend-shallow": "^3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/split-string/node_modules/extend-shallow": { + "version": "3.0.2", + "license": "MIT", + "dependencies": { + "assign-symbols": "^1.0.0", + "is-extendable": "^1.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/split-string/node_modules/is-extendable": { + "version": "1.0.1", + "license": "MIT", + "dependencies": { + "is-plain-object": "^2.0.4" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/sprintf-js": { + "version": "1.0.3", + "license": "BSD-3-Clause" + }, + "node_modules/sshpk": { + "version": "1.16.1", + "dev": true, + "license": "MIT", + "dependencies": { + "asn1": "~0.2.3", + "assert-plus": "^1.0.0", + "bcrypt-pbkdf": "^1.0.0", + "dashdash": "^1.12.0", + "ecc-jsbn": "~0.1.1", + "getpass": "^0.1.1", + "jsbn": "~0.1.0", + "safer-buffer": "^2.0.2", + "tweetnacl": "~0.14.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/ssri": { + "version": "8.0.1", + "dev": true, + "license": "ISC", + "dependencies": { + "minipass": "^3.1.1" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/stable": { + "version": "0.1.8", + "dev": true, + "license": "MIT" + }, + "node_modules/stackframe": { + "version": "1.2.0", + "dev": true, + "license": "MIT" + }, + "node_modules/static-extend": { + "version": "0.1.2", + "license": "MIT", + "dependencies": { + "define-property": "^0.2.5", + "object-copy": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/statuses": { + "version": "1.5.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/stream-browserify": { + "version": "2.0.2", + "license": "MIT", + "dependencies": { + "inherits": "~2.0.1", + "readable-stream": "^2.0.2" + } + }, + "node_modules/stream-each": { + "version": "1.2.3", + "license": "MIT", + "dependencies": { + "end-of-stream": "^1.1.0", + "stream-shift": "^1.0.0" + } + }, + "node_modules/stream-http": { + "version": "2.8.3", + "license": "MIT", + "dependencies": { + "builtin-status-codes": "^3.0.0", + "inherits": "^2.0.1", + "readable-stream": "^2.3.6", + "to-arraybuffer": "^1.0.0", + "xtend": "^4.0.0" + } + }, + "node_modules/stream-shift": { + "version": "1.0.1", + "license": "MIT" + }, + "node_modules/strict-uri-encode": { + "version": "1.1.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/string_decoder": { + "version": "1.3.0", + "license": "MIT", + "dependencies": { + "safe-buffer": "~5.2.0" + } + }, + "node_modules/string-hash": { + "version": "1.1.3", + "dev": true, + "license": "CC0-1.0" + }, + "node_modules/string-width": { + "version": "4.2.2", + "license": "MIT", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/string-width/node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/string.prototype.trimend": { + "version": "1.0.4", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/string.prototype.trimstart": { + "version": "1.0.4", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/stringify-object": { + "version": "3.3.0", + "license": "BSD-2-Clause", + "dependencies": { + "get-own-enumerable-property-symbols": "^3.0.0", + "is-obj": "^1.0.1", + "is-regexp": "^1.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/strip-ansi": { + "version": "6.0.0", + "license": "MIT", + "dependencies": { + "ansi-regex": "^5.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-ansi/node_modules/ansi-regex": { + "version": "5.0.0", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-bom-string": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/strip-bom-string/-/strip-bom-string-1.0.0.tgz", + "integrity": "sha1-5SEekiQ2n7uB1jOi8ABE3IztrZI=", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/strip-comments": { + "version": "2.0.1", + "license": "MIT", + "engines": { + "node": ">=10" + } + }, + "node_modules/strip-eof": { + "version": "1.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/strip-final-newline": { + "version": "2.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/strip-indent": { + "version": "2.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/strip-json-comments": { + "version": "3.1.1", + "license": "MIT", + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/stylehacks": { + "version": "4.0.3", + "dev": true, + "license": "MIT", + "dependencies": { + "browserslist": "^4.0.0", + "postcss": "^7.0.0", + "postcss-selector-parser": "^3.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/stylehacks/node_modules/postcss-selector-parser": { + "version": "3.1.2", + "dev": true, + "license": "MIT", + "dependencies": { + "dot-prop": "^5.2.0", + "indexes-of": "^1.0.1", + "uniq": "^1.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/stylis": { + "version": "4.0.10", + "resolved": "https://registry.npmjs.org/stylis/-/stylis-4.0.10.tgz", + "integrity": "sha512-m3k+dk7QeJw660eIKRRn3xPF6uuvHs/FFzjX3HQ5ove0qYsiygoAhwn5a3IYKaZPo5LrYD0rfVmtv1gNY1uYwg==" + }, + "node_modules/supports-color": { + "version": "6.1.0", + "dev": true, + "license": "MIT", + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/svg-tags": { + "version": "1.0.0", + "dev": true + }, + "node_modules/svgo": { + "version": "1.3.2", + "dev": true, + "license": "MIT", + "dependencies": { + "chalk": "^2.4.1", + "coa": "^2.0.2", + "css-select": "^2.0.0", + "css-select-base-adapter": "^0.1.1", + "css-tree": "1.0.0-alpha.37", + "csso": "^4.0.2", + "js-yaml": "^3.13.1", + "mkdirp": "~0.5.1", + "object.values": "^1.1.0", + "sax": "~1.2.4", + "stable": "^0.1.8", + "unquote": "~1.1.1", + "util.promisify": "~1.0.0" + }, + "bin": { + "svgo": "bin/svgo" + }, + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/svgo/node_modules/css-select": { + "version": "2.1.0", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "boolbase": "^1.0.0", + "css-what": "^3.2.1", + "domutils": "^1.7.0", + "nth-check": "^1.0.2" + } + }, + "node_modules/svgo/node_modules/css-what": { + "version": "3.4.2", + "dev": true, + "license": "BSD-2-Clause", + "engines": { + "node": ">= 6" + }, + "funding": { + "url": "https://github.com/sponsors/fb55" + } + }, + "node_modules/svgo/node_modules/dom-serializer": { + "version": "0.2.2", + "dev": true, + "license": "MIT", + "dependencies": { + "domelementtype": "^2.0.1", + "entities": "^2.0.0" + } + }, + "node_modules/svgo/node_modules/dom-serializer/node_modules/domelementtype": { + "version": "2.2.0", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/fb55" + } + ], + "license": "BSD-2-Clause" + }, + "node_modules/svgo/node_modules/domelementtype": { + "version": "1.3.1", + "dev": true, + "license": "BSD-2-Clause" + }, + "node_modules/svgo/node_modules/domutils": { + "version": "1.7.0", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "dom-serializer": "0", + "domelementtype": "1" + } + }, + "node_modules/svgo/node_modules/nth-check": { + "version": "1.0.2", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "boolbase": "~1.0.0" + } + }, + "node_modules/svgo/node_modules/util.promisify": { + "version": "1.0.1", + "dev": true, + "license": "MIT", + "dependencies": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.2", + "has-symbols": "^1.0.1", + "object.getownpropertydescriptors": "^2.1.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/table": { + "version": "6.7.1", + "license": "BSD-3-Clause", + "dependencies": { + "ajv": "^8.0.1", + "lodash.clonedeep": "^4.5.0", + "lodash.truncate": "^4.4.2", + "slice-ansi": "^4.0.0", + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/table/node_modules/ajv": { + "version": "8.6.0", + "license": "MIT", + "dependencies": { + "fast-deep-equal": "^3.1.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/table/node_modules/json-schema-traverse": { + "version": "1.0.0", + "license": "MIT" + }, + "node_modules/tapable": { + "version": "1.1.3", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/temp-dir": { + "version": "2.0.0", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/tempy": { + "version": "0.6.0", + "license": "MIT", + "dependencies": { + "is-stream": "^2.0.0", + "temp-dir": "^2.0.0", + "type-fest": "^0.16.0", + "unique-string": "^2.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/tempy/node_modules/is-stream": { + "version": "2.0.0", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/tempy/node_modules/type-fest": { + "version": "0.16.0", + "license": "(MIT OR CC0-1.0)", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/terser": { + "version": "4.8.0", + "license": "BSD-2-Clause", + "dependencies": { + "commander": "^2.20.0", + "source-map": "~0.6.1", + "source-map-support": "~0.5.12" + }, + "bin": { + "terser": "bin/terser" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/terser-webpack-plugin": { + "version": "1.4.5", + "license": "MIT", + "dependencies": { + "cacache": "^12.0.2", + "find-cache-dir": "^2.1.0", + "is-wsl": "^1.1.0", + "schema-utils": "^1.0.0", + "serialize-javascript": "^4.0.0", + "source-map": "^0.6.1", + "terser": "^4.1.2", + "webpack-sources": "^1.4.0", + "worker-farm": "^1.7.0" + }, + "engines": { + "node": ">= 6.9.0" + }, + "peerDependencies": { + "webpack": "^4.0.0" + } + }, + "node_modules/text-table": { + "version": "0.2.0", + "license": "MIT" + }, + "node_modules/thenify": { + "version": "3.3.1", + "dev": true, + "license": "MIT", + "dependencies": { + "any-promise": "^1.0.0" + } + }, + "node_modules/thenify-all": { + "version": "1.6.0", + "dev": true, + "license": "MIT", + "dependencies": { + "thenify": ">= 3.1.0 < 4" + }, + "engines": { + "node": ">=0.8" + } + }, + "node_modules/thread-loader": { + "version": "2.1.3", + "dev": true, + "license": "MIT", + "dependencies": { + "loader-runner": "^2.3.1", + "loader-utils": "^1.1.0", + "neo-async": "^2.6.0" + }, + "engines": { + "node": ">= 6.9.0 <7.0.0 || >= 8.9.0" + }, + "peerDependencies": { + "webpack": "^2.0.0 || ^3.0.0 || ^4.0.0" + } + }, + "node_modules/through": { + "version": "2.3.8", + "dev": true, + "license": "MIT" + }, + "node_modules/through2": { + "version": "2.0.5", + "license": "MIT", + "dependencies": { + "readable-stream": "~2.3.6", + "xtend": "~4.0.1" + } + }, + "node_modules/thunky": { + "version": "1.1.0", + "dev": true, + "license": "MIT" + }, + "node_modules/timers-browserify": { + "version": "2.0.12", + "license": "MIT", + "dependencies": { + "setimmediate": "^1.0.4" + }, + "engines": { + "node": ">=0.6.0" + } + }, + "node_modules/timsort": { + "version": "0.3.0", + "dev": true, + "license": "MIT" + }, + "node_modules/tmp": { + "version": "0.0.33", + "dev": true, + "license": "MIT", + "dependencies": { + "os-tmpdir": "~1.0.2" + }, + "engines": { + "node": ">=0.6.0" + } + }, + "node_modules/to-arraybuffer": { + "version": "1.0.1", + "license": "MIT" + }, + "node_modules/to-fast-properties": { + "version": "2.0.0", + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/to-object-path": { + "version": "0.3.0", + "license": "MIT", + "dependencies": { + "kind-of": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/to-regex": { + "version": "3.0.2", + "license": "MIT", + "dependencies": { + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "regex-not": "^1.0.2", + "safe-regex": "^1.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/to-regex-range": { + "version": "2.1.1", + "license": "MIT", + "dependencies": { + "is-number": "^3.0.0", + "repeat-string": "^1.6.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/to-regex/node_modules/define-property": { + "version": "2.0.2", + "license": "MIT", + "dependencies": { + "is-descriptor": "^1.0.2", + "isobject": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/to-regex/node_modules/extend-shallow": { + "version": "3.0.2", + "license": "MIT", + "dependencies": { + "assign-symbols": "^1.0.0", + "is-extendable": "^1.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/to-regex/node_modules/is-extendable": { + "version": "1.0.1", + "license": "MIT", + "dependencies": { + "is-plain-object": "^2.0.4" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/toggle-selection": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/toggle-selection/-/toggle-selection-1.0.6.tgz", + "integrity": "sha1-bkWxJj8gF/oKzH2J14sVuL932jI=" + }, + "node_modules/toidentifier": { + "version": "1.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.6" + } + }, + "node_modules/toml": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/toml/-/toml-3.0.0.tgz", + "integrity": "sha512-y/mWCZinnvxjTKYhJ+pYxwD0mRLVvOtdS2Awbgxln6iEnt4rk0yBxeSBHkGJcPucRiG0e55mwWp+g/05rsrd6w==" + }, + "node_modules/toposort": { + "version": "1.0.7", + "dev": true, + "license": "MIT" + }, + "node_modules/tough-cookie": { + "version": "2.5.0", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "psl": "^1.1.28", + "punycode": "^2.1.1" + }, + "engines": { + "node": ">=0.8" + } + }, + "node_modules/tr46": { + "version": "1.0.1", + "license": "MIT", + "dependencies": { + "punycode": "^2.1.0" + } + }, + "node_modules/tryer": { + "version": "1.0.1", + "dev": true, + "license": "MIT" + }, + "node_modules/ts-loader": { + "version": "6.2.2", + "dev": true, + "license": "MIT", + "dependencies": { + "chalk": "^2.3.0", + "enhanced-resolve": "^4.0.0", + "loader-utils": "^1.0.2", + "micromatch": "^4.0.0", + "semver": "^6.0.0" + }, + "engines": { + "node": ">=8.6" + }, + "peerDependencies": { + "typescript": "*" + } + }, + "node_modules/ts-loader/node_modules/braces": { + "version": "3.0.2", + "dev": true, + "license": "MIT", + "dependencies": { + "fill-range": "^7.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/ts-loader/node_modules/fill-range": { + "version": "7.0.1", + "dev": true, + "license": "MIT", + "dependencies": { + "to-regex-range": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/ts-loader/node_modules/is-number": { + "version": "7.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/ts-loader/node_modules/micromatch": { + "version": "4.0.4", + "dev": true, + "license": "MIT", + "dependencies": { + "braces": "^3.0.1", + "picomatch": "^2.2.3" + }, + "engines": { + "node": ">=8.6" + } + }, + "node_modules/ts-loader/node_modules/to-regex-range": { + "version": "5.0.1", + "dev": true, + "license": "MIT", + "dependencies": { + "is-number": "^7.0.0" + }, + "engines": { + "node": ">=8.0" + } + }, + "node_modules/ts-pnp": { + "version": "1.2.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/tslib": { + "version": "1.14.1", + "dev": true, + "license": "0BSD" + }, + "node_modules/tslint": { + "version": "5.20.1", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@babel/code-frame": "^7.0.0", + "builtin-modules": "^1.1.1", + "chalk": "^2.3.0", + "commander": "^2.12.1", + "diff": "^4.0.1", + "glob": "^7.1.1", + "js-yaml": "^3.13.1", + "minimatch": "^3.0.4", + "mkdirp": "^0.5.1", + "resolve": "^1.3.2", + "semver": "^5.3.0", + "tslib": "^1.8.0", + "tsutils": "^2.29.0" + }, + "bin": { + "tslint": "bin/tslint" + }, + "engines": { + "node": ">=4.8.0" + }, + "peerDependencies": { + "typescript": ">=2.3.0-dev || >=2.4.0-dev || >=2.5.0-dev || >=2.6.0-dev || >=2.7.0-dev || >=2.8.0-dev || >=2.9.0-dev || >=3.0.0-dev || >= 3.1.0-dev || >= 3.2.0-dev" + } + }, + "node_modules/tslint/node_modules/builtin-modules": { + "version": "1.1.1", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/tslint/node_modules/semver": { + "version": "5.7.1", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver" + } + }, + "node_modules/tslint/node_modules/tsutils": { + "version": "2.29.0", + "dev": true, + "license": "MIT", + "dependencies": { + "tslib": "^1.8.1" + }, + "peerDependencies": { + "typescript": ">=2.1.0 || >=2.1.0-dev || >=2.2.0-dev || >=2.3.0-dev || >=2.4.0-dev || >=2.5.0-dev || >=2.6.0-dev || >=2.7.0-dev || >=2.8.0-dev || >=2.9.0-dev || >= 3.0.0-dev || >= 3.1.0-dev" + } + }, + "node_modules/tsutils": { + "version": "3.21.0", + "dev": true, + "license": "MIT", + "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/tty-browserify": { + "version": "0.0.0", + "license": "MIT" + }, + "node_modules/tunnel-agent": { + "version": "0.6.0", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "safe-buffer": "^5.0.1" + }, + "engines": { + "node": "*" + } + }, + "node_modules/tweetnacl": { + "version": "0.14.5", + "dev": true, + "license": "Unlicense" + }, + "node_modules/twemoji": { + "version": "13.1.0", + "license": [ + "MIT", + "CC-BY-4.0" + ], + "dependencies": { + "fs-extra": "^8.0.1", + "jsonfile": "^5.0.0", + "twemoji-parser": "13.1.0", + "universalify": "^0.1.2" + } + }, + "node_modules/twemoji-parser": { + "version": "13.1.0", + "license": "MIT" + }, + "node_modules/twemoji/node_modules/jsonfile": { + "version": "5.0.0", + "license": "MIT", + "dependencies": { + "universalify": "^0.1.2" + }, + "optionalDependencies": { + "graceful-fs": "^4.1.6" + } + }, + "node_modules/twitter-text": { + "version": "3.1.0", + "dependencies": { + "@babel/runtime": "^7.3.1", + "core-js": "^2.5.0", + "punycode": "1.4.1", + "twemoji-parser": "^11.0.2" + } + }, + "node_modules/twitter-text/node_modules/core-js": { + "version": "2.6.12", + "hasInstallScript": true, + "license": "MIT" + }, + "node_modules/twitter-text/node_modules/punycode": { + "version": "1.4.1", + "license": "MIT" + }, + "node_modules/twitter-text/node_modules/twemoji-parser": { + "version": "11.0.2", + "license": "MIT" + }, + "node_modules/type-check": { + "version": "0.4.0", + "license": "MIT", + "dependencies": { + "prelude-ls": "^1.2.1" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/type-fest": { + "version": "0.20.2", + "license": "(MIT OR CC0-1.0)", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/type-is": { + "version": "1.6.18", + "dev": true, + "license": "MIT", + "dependencies": { + "media-typer": "0.3.0", + "mime-types": "~2.1.24" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/typedarray": { + "version": "0.0.6", + "license": "MIT" + }, + "node_modules/typescript": { + "version": "4.4.3", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.4.3.tgz", + "integrity": "sha512-4xfscpisVgqqDfPaJo5vkd+Qd/ItkoagnHpufr+i2QCHBsNYp+G7UAoyFl8aPtx879u38wPV65rZ8qbGZijalA==", + "dev": true, + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=4.2.0" + } + }, + "node_modules/uc.micro": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/uc.micro/-/uc.micro-1.0.6.tgz", + "integrity": "sha512-8Y75pvTYkLJW2hWQHXxoqRgV7qb9B+9vFEtidML+7koHUFapnVJAZ6cKs+Qjz5Aw3aZWHMC6u0wJE3At+nSGwA==" + }, + "node_modules/uglify-js": { + "version": "3.4.10", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "commander": "~2.19.0", + "source-map": "~0.6.1" + }, + "bin": { + "uglifyjs": "bin/uglifyjs" + }, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/uglify-js/node_modules/commander": { + "version": "2.19.0", + "dev": true, + "license": "MIT" + }, + "node_modules/unbox-primitive": { + "version": "1.0.1", + "dev": true, + "license": "MIT", + "dependencies": { + "function-bind": "^1.1.1", + "has-bigints": "^1.0.1", + "has-symbols": "^1.0.2", + "which-boxed-primitive": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/unicode-canonical-property-names-ecmascript": { + "version": "1.0.4", + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/unicode-match-property-ecmascript": { + "version": "1.0.4", + "license": "MIT", + "dependencies": { + "unicode-canonical-property-names-ecmascript": "^1.0.4", + "unicode-property-aliases-ecmascript": "^1.0.4" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/unicode-match-property-value-ecmascript": { + "version": "1.2.0", + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/unicode-property-aliases-ecmascript": { + "version": "1.1.0", + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/union-value": { + "version": "1.0.1", + "license": "MIT", + "dependencies": { + "arr-union": "^3.1.0", + "get-value": "^2.0.6", + "is-extendable": "^0.1.1", + "set-value": "^2.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/uniq": { + "version": "1.0.1", + "dev": true, + "license": "MIT" + }, + "node_modules/uniqs": { + "version": "2.0.0", + "dev": true, + "license": "MIT" + }, + "node_modules/unique-filename": { + "version": "1.1.1", + "license": "ISC", + "dependencies": { + "unique-slug": "^2.0.0" + } + }, + "node_modules/unique-slug": { + "version": "2.0.2", + "license": "ISC", + "dependencies": { + "imurmurhash": "^0.1.4" + } + }, + "node_modules/unique-string": { + "version": "2.0.0", + "license": "MIT", + "dependencies": { + "crypto-random-string": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/universalify": { + "version": "0.1.2", + "license": "MIT", + "engines": { + "node": ">= 4.0.0" + } + }, + "node_modules/unpipe": { + "version": "1.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/unquote": { + "version": "1.1.1", + "dev": true, + "license": "MIT" + }, + "node_modules/unset-value": { + "version": "1.0.0", + "license": "MIT", + "dependencies": { + "has-value": "^0.3.1", + "isobject": "^3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/unset-value/node_modules/has-value": { + "version": "0.3.1", + "license": "MIT", + "dependencies": { + "get-value": "^2.0.3", + "has-values": "^0.1.4", + "isobject": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/unset-value/node_modules/has-value/node_modules/isobject": { + "version": "2.1.0", + "license": "MIT", + "dependencies": { + "isarray": "1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/unset-value/node_modules/has-values": { + "version": "0.1.4", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/upath": { + "version": "1.2.0", + "license": "MIT", + "engines": { + "node": ">=4", + "yarn": "*" + } + }, + "node_modules/upper-case": { + "version": "1.1.3", + "dev": true, + "license": "MIT" + }, + "node_modules/uri-js": { + "version": "4.4.1", + "license": "BSD-2-Clause", + "dependencies": { + "punycode": "^2.1.0" + } + }, + "node_modules/urix": { + "version": "0.1.0", + "license": "MIT" + }, + "node_modules/url": { + "version": "0.11.0", + "license": "MIT", + "dependencies": { + "punycode": "1.3.2", + "querystring": "0.2.0" + } + }, + "node_modules/url-loader": { + "version": "2.3.0", + "dev": true, + "license": "MIT", + "dependencies": { + "loader-utils": "^1.2.3", + "mime": "^2.4.4", + "schema-utils": "^2.5.0" + }, + "engines": { + "node": ">= 8.9.0" + }, + "peerDependencies": { + "file-loader": "*", + "webpack": "^4.0.0" + }, + "peerDependenciesMeta": { + "file-loader": { + "optional": true + } + } + }, + "node_modules/url-loader/node_modules/schema-utils": { + "version": "2.7.1", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/json-schema": "^7.0.5", + "ajv": "^6.12.4", + "ajv-keywords": "^3.5.2" + }, + "engines": { + "node": ">= 8.9.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } + }, + "node_modules/url-parse": { + "version": "1.5.1", + "dev": true, + "license": "MIT", + "dependencies": { + "querystringify": "^2.1.1", + "requires-port": "^1.0.0" + } + }, + "node_modules/url/node_modules/punycode": { + "version": "1.3.2", + "license": "MIT" + }, + "node_modules/use": { + "version": "3.1.1", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/util": { + "version": "0.11.1", + "license": "MIT", + "dependencies": { + "inherits": "2.0.3" + } + }, + "node_modules/util-deprecate": { + "version": "1.0.2", + "license": "MIT" + }, + "node_modules/util.promisify": { + "version": "1.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "define-properties": "^1.1.2", + "object.getownpropertydescriptors": "^2.0.3" + } + }, + "node_modules/util/node_modules/inherits": { + "version": "2.0.3", + "license": "ISC" + }, + "node_modules/utila": { + "version": "0.4.0", + "dev": true, + "license": "MIT" + }, + "node_modules/utils-merge": { + "version": "1.0.1", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4.0" + } + }, + "node_modules/uuid": { + "version": "3.4.0", + "dev": true, + "license": "MIT", + "bin": { + "uuid": "bin/uuid" + } + }, + "node_modules/v8-compile-cache": { + "version": "2.3.0", + "license": "MIT" + }, + "node_modules/validate-npm-package-license": { + "version": "3.0.4", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "spdx-correct": "^3.0.0", + "spdx-expression-parse": "^3.0.0" + } + }, + "node_modules/vary": { + "version": "1.1.2", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/vendors": { + "version": "1.0.4", + "dev": true, + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/verror": { + "version": "1.10.0", + "dev": true, + "engines": [ + "node >=0.6.0" + ], + "license": "MIT", + "dependencies": { + "assert-plus": "^1.0.0", + "core-util-is": "1.0.2", + "extsprintf": "^1.2.0" + } + }, + "node_modules/verror/node_modules/extsprintf": { + "version": "1.4.0", + "dev": true, + "engines": [ + "node >=0.6.0" + ], + "license": "MIT" + }, + "node_modules/vm-browserify": { + "version": "1.1.2", + "license": "MIT" + }, + "node_modules/vue": { + "version": "2.6.14", + "license": "MIT" + }, + "node_modules/vue-class-component": { + "version": "7.2.6", + "license": "MIT", + "peerDependencies": { + "vue": "^2.0.0" + } + }, + "node_modules/vue-cli-plugin-i18n": { + "version": "2.1.1", + "dev": true, + "license": "MIT", + "dependencies": { + "debug": "^4.3.0", + "deepmerge": "^4.2.0", + "dotenv": "^8.2.0", + "flat": "^5.0.0", + "rimraf": "^3.0.0", + "vue": "^2.6.11", + "vue-i18n": "^8.17.0", + "vue-i18n-extract": "1.0.2" + }, + "engines": { + "node": ">= 12" + } + }, + "node_modules/vue-cli-plugin-i18n/node_modules/rimraf": { + "version": "3.0.2", + "dev": true, + "license": "ISC", + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/vue-click-outside": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/vue-click-outside/-/vue-click-outside-1.1.0.tgz", + "integrity": "sha512-pNyvAA9mRXJwPHlHJyjMb4IONSc7khS5lxGcMyE2EIKgNMAO279PWM9Hyq0d5J4FkiSRdmFLwnbjDd5UtPizHQ==" + }, + "node_modules/vue-clickaway": { + "version": "2.2.2", + "license": "MIT", + "dependencies": { + "loose-envify": "^1.2.0" + }, + "peerDependencies": { + "vue": "^2.0.0" + } + }, + "node_modules/vue-cookies": { + "version": "1.7.4", + "license": "MIT" + }, + "node_modules/vue-eslint-parser": { + "version": "7.6.0", + "dev": true, + "license": "MIT", + "dependencies": { + "debug": "^4.1.1", + "eslint-scope": "^5.0.0", + "eslint-visitor-keys": "^1.1.0", + "espree": "^6.2.1", + "esquery": "^1.4.0", + "lodash": "^4.17.15" + }, + "engines": { + "node": ">=8.10" + }, + "funding": { + "url": "https://github.com/sponsors/mysticatea" + }, + "peerDependencies": { + "eslint": ">=5.0.0" + } + }, + "node_modules/vue-eslint-parser/node_modules/espree": { + "version": "6.2.1", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "acorn": "^7.1.1", + "acorn-jsx": "^5.2.0", + "eslint-visitor-keys": "^1.1.0" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/vue-functional-data-merge": { + "version": "3.1.0", + "license": "MIT" + }, + "node_modules/vue-hot-reload-api": { + "version": "2.3.4", + "dev": true, + "license": "MIT" + }, + "node_modules/vue-i18n": { + "version": "8.24.4", + "license": "MIT" + }, + "node_modules/vue-i18n-extract": { + "version": "1.0.2", + "dev": true, + "license": "MIT", + "dependencies": { + "cli-table3": "^0.5.1", + "dot-object": "^1.7.1", + "esm": "^3.2.13", + "glob": "^7.1.3", + "is-valid-glob": "^1.0.0", + "yargs": "^13.2.2" + }, + "bin": { + "vue-i18n-extract": "dist-node/index.bin.js" + } + }, + "node_modules/vue-infinite-loading": { + "version": "2.4.5", + "resolved": "https://registry.npmjs.org/vue-infinite-loading/-/vue-infinite-loading-2.4.5.tgz", + "integrity": "sha512-xhq95Mxun060bRnsOoLE2Be6BR7jYwuC89kDe18+GmCLVrRA/dU0jrGb12Xu6NjmKs+iTW0AA6saSEmEW4cR7g==", + "peerDependencies": { + "vue": "^2.6.10" + } + }, + "node_modules/vue-loader": { + "version": "15.9.7", + "dev": true, + "license": "MIT", + "dependencies": { + "@vue/component-compiler-utils": "^3.1.0", + "hash-sum": "^1.0.2", + "loader-utils": "^1.1.0", + "vue-hot-reload-api": "^2.3.0", + "vue-style-loader": "^4.1.0" + }, + "peerDependencies": { + "css-loader": "*", + "webpack": "^3.0.0 || ^4.1.0 || ^5.0.0-0" + }, + "peerDependenciesMeta": { + "cache-loader": { + "optional": true + }, + "vue-template-compiler": { + "optional": true + } + } + }, + "node_modules/vue-loader-v16": { + "name": "vue-loader", + "version": "16.2.0", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "chalk": "^4.1.0", + "hash-sum": "^2.0.0", + "loader-utils": "^2.0.0" + } + }, + "node_modules/vue-loader-v16/node_modules/chalk": { + "version": "4.1.1", + "dev": true, + "license": "MIT", + "optional": 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/vue-loader-v16/node_modules/has-flag": { + "version": "4.0.0", + "dev": true, + "license": "MIT", + "optional": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/vue-loader-v16/node_modules/hash-sum": { + "version": "2.0.0", + "dev": true, + "license": "MIT", + "optional": true + }, + "node_modules/vue-loader-v16/node_modules/loader-utils": { + "version": "2.0.0", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^2.1.2" + }, + "engines": { + "node": ">=8.9.0" + } + }, + "node_modules/vue-loader-v16/node_modules/supports-color": { + "version": "7.2.0", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/vue-multiselect": { + "version": "2.1.6", + "license": "MIT", + "engines": { + "node": ">= 4.0.0", + "npm": ">= 3.0.0" + } + }, + "node_modules/vue-property-decorator": { + "version": "9.1.2", + "license": "MIT", + "peerDependencies": { + "vue": "*", + "vue-class-component": "*" + } + }, + "node_modules/vue-simple-calendar": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/vue-simple-calendar/-/vue-simple-calendar-5.0.1.tgz", + "integrity": "sha512-JRsN3cSyS7q38OSa8IJMars5Uq1BYq8jfBrtmmyCQXw1wXcEPyfjRSnrScobwFNE2XhSSkbkbDKYJlUAJudvpQ==", + "dependencies": { + "core-js": "^3.7.0", + "vue": "^2.6.12", + "webpack": "^4.45.0" + } + }, + "node_modules/vue-style-loader": { + "version": "4.1.3", + "dev": true, + "license": "MIT", + "dependencies": { + "hash-sum": "^1.0.2", + "loader-utils": "^1.0.2" + } + }, + "node_modules/vue-template-compiler": { + "version": "2.6.14", + "license": "MIT", + "dependencies": { + "de-indent": "^1.0.2", + "he": "^1.1.0" + } + }, + "node_modules/vue-template-es2015-compiler": { + "version": "1.9.1", + "dev": true, + "license": "MIT" + }, + "node_modules/vue2-touch-events": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/vue2-touch-events/-/vue2-touch-events-3.2.2.tgz", + "integrity": "sha512-rGV8jxgOQEJYkJCp7uOBe3hjvmG1arThrq1wGtJHwJTgi65+P2a+0l4CYcQO/U1ZFqTq2/TT2+oTE6H7Y+6Eog==" + }, + "node_modules/vuedraggable": { + "version": "2.24.3", + "license": "MIT", + "dependencies": { + "sortablejs": "1.10.2" + } + }, + "node_modules/vuex": { + "version": "3.6.2", + "license": "MIT", + "peerDependencies": { + "vue": "^2.0.0" + } + }, + "node_modules/watch-size": { + "version": "2.0.0", + "license": "CC0-1.0" + }, + "node_modules/watchpack": { + "version": "1.7.5", + "license": "MIT", + "dependencies": { + "graceful-fs": "^4.1.2", + "neo-async": "^2.5.0" + }, + "optionalDependencies": { + "chokidar": "^3.4.1", + "watchpack-chokidar2": "^2.0.1" + } + }, + "node_modules/watchpack-chokidar2": { + "version": "2.0.1", + "license": "MIT", + "optional": true, + "dependencies": { + "chokidar": "^2.1.8" + } + }, + "node_modules/watchpack/node_modules/binary-extensions": { + "version": "2.2.0", + "license": "MIT", + "optional": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/watchpack/node_modules/braces": { + "version": "3.0.2", + "license": "MIT", + "optional": true, + "dependencies": { + "fill-range": "^7.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/watchpack/node_modules/chokidar": { + "version": "3.5.1", + "license": "MIT", + "optional": true, + "dependencies": { + "anymatch": "~3.1.1", + "braces": "~3.0.2", + "glob-parent": "~5.1.0", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.5.0" + }, + "engines": { + "node": ">= 8.10.0" + }, + "optionalDependencies": { + "fsevents": "~2.3.1" + } + }, + "node_modules/watchpack/node_modules/fill-range": { + "version": "7.0.1", + "license": "MIT", + "optional": true, + "dependencies": { + "to-regex-range": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/watchpack/node_modules/glob-parent": { + "version": "5.1.2", + "license": "ISC", + "optional": true, + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/watchpack/node_modules/is-binary-path": { + "version": "2.1.0", + "license": "MIT", + "optional": true, + "dependencies": { + "binary-extensions": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/watchpack/node_modules/is-number": { + "version": "7.0.0", + "license": "MIT", + "optional": true, + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/watchpack/node_modules/readdirp": { + "version": "3.5.0", + "license": "MIT", + "optional": true, + "dependencies": { + "picomatch": "^2.2.1" + }, + "engines": { + "node": ">=8.10.0" + } + }, + "node_modules/watchpack/node_modules/to-regex-range": { + "version": "5.0.1", + "license": "MIT", + "optional": true, + "dependencies": { + "is-number": "^7.0.0" + }, + "engines": { + "node": ">=8.0" + } + }, + "node_modules/wbuf": { + "version": "1.7.3", + "dev": true, + "license": "MIT", + "dependencies": { + "minimalistic-assert": "^1.0.0" + } + }, + "node_modules/wcwidth": { + "version": "1.0.1", + "dev": true, + "license": "MIT", + "dependencies": { + "defaults": "^1.0.3" + } + }, + "node_modules/webidl-conversions": { + "version": "4.0.2", + "license": "BSD-2-Clause" + }, + "node_modules/webpack": { + "version": "4.46.0", + "license": "MIT", + "dependencies": { + "@webassemblyjs/ast": "1.9.0", + "@webassemblyjs/helper-module-context": "1.9.0", + "@webassemblyjs/wasm-edit": "1.9.0", + "@webassemblyjs/wasm-parser": "1.9.0", + "acorn": "^6.4.1", + "ajv": "^6.10.2", + "ajv-keywords": "^3.4.1", + "chrome-trace-event": "^1.0.2", + "enhanced-resolve": "^4.5.0", + "eslint-scope": "^4.0.3", + "json-parse-better-errors": "^1.0.2", + "loader-runner": "^2.4.0", + "loader-utils": "^1.2.3", + "memory-fs": "^0.4.1", + "micromatch": "^3.1.10", + "mkdirp": "^0.5.3", + "neo-async": "^2.6.1", + "node-libs-browser": "^2.2.1", + "schema-utils": "^1.0.0", + "tapable": "^1.1.3", + "terser-webpack-plugin": "^1.4.3", + "watchpack": "^1.7.4", + "webpack-sources": "^1.4.1" + }, + "bin": { + "webpack": "bin/webpack.js" + }, + "engines": { + "node": ">=6.11.5" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependenciesMeta": { + "webpack-cli": { + "optional": true + }, + "webpack-command": { + "optional": true + } + } + }, + "node_modules/webpack-bundle-analyzer": { + "version": "3.9.0", + "dev": true, + "license": "MIT", + "dependencies": { + "acorn": "^7.1.1", + "acorn-walk": "^7.1.1", + "bfj": "^6.1.1", + "chalk": "^2.4.1", + "commander": "^2.18.0", + "ejs": "^2.6.1", + "express": "^4.16.3", + "filesize": "^3.6.1", + "gzip-size": "^5.0.0", + "lodash": "^4.17.19", + "mkdirp": "^0.5.1", + "opener": "^1.5.1", + "ws": "^6.0.0" + }, + "bin": { + "webpack-bundle-analyzer": "lib/bin/analyzer.js" + }, + "engines": { + "node": ">= 6.14.4" + } + }, + "node_modules/webpack-bundle-tracker": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/webpack-bundle-tracker/-/webpack-bundle-tracker-1.3.0.tgz", + "integrity": "sha512-cs3QMgW5F0mE0e91X/SuEq2MUfu2LqpjFSdfINsOmNt/T4v39EESNhJ+P8d5lmbfFL6Z1z7n6LlpVCERTdDDvQ==", + "dev": true, + "dependencies": { + "lodash.assign": "^4.2.0", + "lodash.defaults": "^4.2.0", + "lodash.foreach": "^4.5.0", + "lodash.get": "^4.4.2", + "strip-ansi": "^6.0.0" + } + }, + "node_modules/webpack-chain": { + "version": "6.5.1", + "dev": true, + "license": "MPL-2.0", + "dependencies": { + "deepmerge": "^1.5.2", + "javascript-stringify": "^2.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/webpack-chain/node_modules/deepmerge": { + "version": "1.5.2", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/webpack-dev-middleware": { + "version": "3.7.3", + "dev": true, + "license": "MIT", + "dependencies": { + "memory-fs": "^0.4.1", + "mime": "^2.4.4", + "mkdirp": "^0.5.1", + "range-parser": "^1.2.1", + "webpack-log": "^2.0.0" + }, + "engines": { + "node": ">= 6" + }, + "peerDependencies": { + "webpack": "^4.0.0 || ^5.0.0" + } + }, + "node_modules/webpack-dev-server": { + "version": "3.11.2", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-html": "0.0.7", + "bonjour": "^3.5.0", + "chokidar": "^2.1.8", + "compression": "^1.7.4", + "connect-history-api-fallback": "^1.6.0", + "debug": "^4.1.1", + "del": "^4.1.1", + "express": "^4.17.1", + "html-entities": "^1.3.1", + "http-proxy-middleware": "0.19.1", + "import-local": "^2.0.0", + "internal-ip": "^4.3.0", + "ip": "^1.1.5", + "is-absolute-url": "^3.0.3", + "killable": "^1.0.1", + "loglevel": "^1.6.8", + "opn": "^5.5.0", + "p-retry": "^3.0.1", + "portfinder": "^1.0.26", + "schema-utils": "^1.0.0", + "selfsigned": "^1.10.8", + "semver": "^6.3.0", + "serve-index": "^1.9.1", + "sockjs": "^0.3.21", + "sockjs-client": "^1.5.0", + "spdy": "^4.0.2", + "strip-ansi": "^3.0.1", + "supports-color": "^6.1.0", + "url": "^0.11.0", + "webpack-dev-middleware": "^3.7.2", + "webpack-log": "^2.0.0", + "ws": "^6.2.1", + "yargs": "^13.3.2" + }, + "bin": { + "webpack-dev-server": "bin/webpack-dev-server.js" + }, + "engines": { + "node": ">= 6.11.5" + }, + "peerDependencies": { + "webpack": "^4.0.0 || ^5.0.0" + }, + "peerDependenciesMeta": { + "webpack-cli": { + "optional": true + } + } + }, + "node_modules/webpack-dev-server/node_modules/strip-ansi": { + "version": "3.0.1", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-regex": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/webpack-log": { + "version": "2.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-colors": "^3.0.0", + "uuid": "^3.3.2" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/webpack-log/node_modules/ansi-colors": { + "version": "3.2.4", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/webpack-merge": { + "version": "4.2.2", + "dev": true, + "license": "MIT", + "dependencies": { + "lodash": "^4.17.15" + } + }, + "node_modules/webpack-sources": { + "version": "1.4.3", + "license": "MIT", + "dependencies": { + "source-list-map": "^2.0.0", + "source-map": "~0.6.1" + } + }, + "node_modules/webpack/node_modules/acorn": { + "version": "6.4.2", + "license": "MIT", + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/webpack/node_modules/eslint-scope": { + "version": "4.0.3", + "license": "BSD-2-Clause", + "dependencies": { + "esrecurse": "^4.1.0", + "estraverse": "^4.1.1" + }, + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/websocket-driver": { + "version": "0.7.4", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "http-parser-js": ">=0.5.1", + "safe-buffer": ">=5.1.0", + "websocket-extensions": ">=0.1.1" + }, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/websocket-extensions": { + "version": "0.1.4", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/whatwg-url": { + "version": "7.1.0", + "license": "MIT", + "dependencies": { + "lodash.sortby": "^4.7.0", + "tr46": "^1.0.1", + "webidl-conversions": "^4.0.2" + } + }, + "node_modules/which": { + "version": "1.3.1", + "dev": true, + "license": "ISC", + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "which": "bin/which" + } + }, + "node_modules/which-boxed-primitive": { + "version": "1.0.2", + "dev": true, + "license": "MIT", + "dependencies": { + "is-bigint": "^1.0.1", + "is-boolean-object": "^1.1.0", + "is-number-object": "^1.0.4", + "is-string": "^1.0.5", + "is-symbol": "^1.0.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/which-module": { + "version": "2.0.0", + "dev": true, + "license": "ISC" + }, + "node_modules/word-wrap": { + "version": "1.2.3", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/workbox-background-sync": { + "version": "5.1.4", + "dev": true, + "license": "MIT", + "dependencies": { + "workbox-core": "^5.1.4" + } + }, + "node_modules/workbox-background-sync/node_modules/workbox-core": { + "version": "5.1.4", + "dev": true, + "license": "MIT" + }, + "node_modules/workbox-broadcast-update": { + "version": "6.1.5", + "license": "MIT", + "dependencies": { + "workbox-core": "^6.1.5" + } + }, + "node_modules/workbox-build": { + "version": "6.1.5", + "license": "MIT", + "dependencies": { + "@babel/core": "^7.11.1", + "@babel/preset-env": "^7.11.0", + "@babel/runtime": "^7.11.2", + "@hapi/joi": "^16.1.8", + "@rollup/plugin-babel": "^5.2.0", + "@rollup/plugin-node-resolve": "^11.2.1", + "@rollup/plugin-replace": "^2.4.1", + "@surma/rollup-plugin-off-main-thread": "^1.4.1", + "common-tags": "^1.8.0", + "fast-json-stable-stringify": "^2.1.0", + "fs-extra": "^9.0.1", + "glob": "^7.1.6", + "lodash": "^4.17.20", + "pretty-bytes": "^5.3.0", + "rollup": "^2.43.1", + "rollup-plugin-terser": "^7.0.0", + "source-map": "^0.8.0-beta.0", + "source-map-url": "^0.4.0", + "stringify-object": "^3.3.0", + "strip-comments": "^2.0.1", + "tempy": "^0.6.0", + "upath": "^1.2.0", + "workbox-background-sync": "^6.1.5", + "workbox-broadcast-update": "^6.1.5", + "workbox-cacheable-response": "^6.1.5", + "workbox-core": "^6.1.5", + "workbox-expiration": "^6.1.5", + "workbox-google-analytics": "^6.1.5", + "workbox-navigation-preload": "^6.1.5", + "workbox-precaching": "^6.1.5", + "workbox-range-requests": "^6.1.5", + "workbox-recipes": "^6.1.5", + "workbox-routing": "^6.1.5", + "workbox-strategies": "^6.1.5", + "workbox-streams": "^6.1.5", + "workbox-sw": "^6.1.5", + "workbox-window": "^6.1.5" + }, + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/workbox-build/node_modules/@hapi/joi": { + "version": "16.1.8", + "license": "BSD-3-Clause", + "dependencies": { + "@hapi/address": "^2.1.2", + "@hapi/formula": "^1.2.0", + "@hapi/hoek": "^8.2.4", + "@hapi/pinpoint": "^1.0.2", + "@hapi/topo": "^3.1.3" + } + }, + "node_modules/workbox-build/node_modules/@rollup/plugin-babel": { + "version": "5.3.0", + "license": "MIT", + "dependencies": { + "@babel/helper-module-imports": "^7.10.4", + "@rollup/pluginutils": "^3.1.0" + }, + "engines": { + "node": ">= 10.0.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0", + "@types/babel__core": "^7.1.9", + "rollup": "^1.20.0||^2.0.0" + }, + "peerDependenciesMeta": { + "@types/babel__core": { + "optional": true + } + } + }, + "node_modules/workbox-build/node_modules/@rollup/plugin-babel/node_modules/@rollup/pluginutils": { + "version": "3.1.0", + "license": "MIT", + "dependencies": { + "@types/estree": "0.0.39", + "estree-walker": "^1.0.1", + "picomatch": "^2.2.2" + }, + "engines": { + "node": ">= 8.0.0" + }, + "peerDependencies": { + "rollup": "^1.20.0||^2.0.0" + } + }, + "node_modules/workbox-build/node_modules/@rollup/plugin-babel/node_modules/@rollup/pluginutils/node_modules/@types/estree": { + "version": "0.0.39", + "license": "MIT" + }, + "node_modules/workbox-build/node_modules/@rollup/plugin-babel/node_modules/rollup": { + "version": "1.32.1", + "license": "MIT", + "peer": true, + "dependencies": { + "@types/estree": "*", + "@types/node": "*", + "acorn": "^7.1.0" + }, + "bin": { + "rollup": "dist/bin/rollup" + } + }, + "node_modules/workbox-build/node_modules/@rollup/plugin-node-resolve": { + "version": "11.2.1", + "license": "MIT", + "dependencies": { + "@rollup/pluginutils": "^3.1.0", + "@types/resolve": "1.17.1", + "builtin-modules": "^3.1.0", + "deepmerge": "^4.2.2", + "is-module": "^1.0.0", + "resolve": "^1.19.0" + }, + "engines": { + "node": ">= 10.0.0" + }, + "peerDependencies": { + "rollup": "^1.20.0||^2.0.0" + } + }, + "node_modules/workbox-build/node_modules/@rollup/plugin-node-resolve/node_modules/@rollup/pluginutils": { + "version": "3.1.0", + "license": "MIT", + "dependencies": { + "@types/estree": "0.0.39", + "estree-walker": "^1.0.1", + "picomatch": "^2.2.2" + }, + "engines": { + "node": ">= 8.0.0" + }, + "peerDependencies": { + "rollup": "^1.20.0||^2.0.0" + } + }, + "node_modules/workbox-build/node_modules/@rollup/plugin-node-resolve/node_modules/@rollup/pluginutils/node_modules/@types/estree": { + "version": "0.0.39", + "license": "MIT" + }, + "node_modules/workbox-build/node_modules/@rollup/plugin-node-resolve/node_modules/rollup": { + "version": "1.32.1", + "license": "MIT", + "peer": true, + "dependencies": { + "@types/estree": "*", + "@types/node": "*", + "acorn": "^7.1.0" + }, + "bin": { + "rollup": "dist/bin/rollup" + } + }, + "node_modules/workbox-build/node_modules/@rollup/plugin-replace": { + "version": "2.4.2", + "license": "MIT", + "dependencies": { + "@rollup/pluginutils": "^3.1.0", + "magic-string": "^0.25.7" + }, + "peerDependencies": { + "rollup": "^1.20.0 || ^2.0.0" + } + }, + "node_modules/workbox-build/node_modules/@rollup/plugin-replace/node_modules/@rollup/pluginutils": { + "version": "3.1.0", + "license": "MIT", + "dependencies": { + "@types/estree": "0.0.39", + "estree-walker": "^1.0.1", + "picomatch": "^2.2.2" + }, + "engines": { + "node": ">= 8.0.0" + }, + "peerDependencies": { + "rollup": "^1.20.0||^2.0.0" + } + }, + "node_modules/workbox-build/node_modules/@rollup/plugin-replace/node_modules/@rollup/pluginutils/node_modules/@types/estree": { + "version": "0.0.39", + "license": "MIT" + }, + "node_modules/workbox-build/node_modules/@rollup/plugin-replace/node_modules/rollup": { + "version": "1.32.1", + "license": "MIT", + "peer": true, + "dependencies": { + "@types/estree": "*", + "@types/node": "*", + "acorn": "^7.1.0" + }, + "bin": { + "rollup": "dist/bin/rollup" + } + }, + "node_modules/workbox-build/node_modules/estree-walker": { + "version": "1.0.1", + "license": "MIT" + }, + "node_modules/workbox-build/node_modules/fs-extra": { + "version": "9.1.0", + "license": "MIT", + "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/workbox-build/node_modules/jsonfile": { + "version": "6.1.0", + "license": "MIT", + "dependencies": { + "universalify": "^2.0.0" + }, + "optionalDependencies": { + "graceful-fs": "^4.1.6" + } + }, + "node_modules/workbox-build/node_modules/rollup": { + "version": "2.51.1", + "license": "MIT", + "bin": { + "rollup": "dist/bin/rollup" + }, + "engines": { + "node": ">=10.0.0" + }, + "optionalDependencies": { + "fsevents": "~2.3.1" + } + }, + "node_modules/workbox-build/node_modules/rollup-plugin-terser": { + "version": "7.0.2", + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.10.4", + "jest-worker": "^26.2.1", + "serialize-javascript": "^4.0.0", + "terser": "^5.0.0" + }, + "peerDependencies": { + "rollup": "^2.0.0" + } + }, + "node_modules/workbox-build/node_modules/source-map": { + "version": "0.8.0-beta.0", + "license": "BSD-3-Clause", + "dependencies": { + "whatwg-url": "^7.0.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/workbox-build/node_modules/terser": { + "version": "5.7.0", + "license": "BSD-2-Clause", + "dependencies": { + "commander": "^2.20.0", + "source-map": "~0.7.2", + "source-map-support": "~0.5.19" + }, + "bin": { + "terser": "bin/terser" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/workbox-build/node_modules/terser/node_modules/source-map": { + "version": "0.7.3", + "license": "BSD-3-Clause", + "engines": { + "node": ">= 8" + } + }, + "node_modules/workbox-build/node_modules/universalify": { + "version": "2.0.0", + "license": "MIT", + "engines": { + "node": ">= 10.0.0" + } + }, + "node_modules/workbox-build/node_modules/workbox-background-sync": { + "version": "6.1.5", + "license": "MIT", + "dependencies": { + "workbox-core": "^6.1.5" + } + }, + "node_modules/workbox-cacheable-response": { + "version": "6.1.5", + "license": "MIT", + "dependencies": { + "workbox-core": "^6.1.5" + } + }, + "node_modules/workbox-core": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/workbox-core/-/workbox-core-6.3.0.tgz", + "integrity": "sha512-SufToEV3SOLwwz3j+P4pgkfpzLRUlR17sX3p/LrMHP/brYKvJQqjTwtSvaCkkAX0RPHX2TFHmN8xhPP1bpmomg==" + }, + "node_modules/workbox-expiration": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/workbox-expiration/-/workbox-expiration-6.3.0.tgz", + "integrity": "sha512-teYuYfM3HFbwAD/nlZDw/dCMOrCKjsAiMRhz0uOy9IkfBb7vBynO3xf118lY62X6BfqjZdeahiHh10N0/aYICg==", + "dependencies": { + "idb": "^6.0.0", + "workbox-core": "6.3.0" + } + }, + "node_modules/workbox-google-analytics": { + "version": "6.1.5", + "license": "MIT", + "dependencies": { + "workbox-background-sync": "^6.1.5", + "workbox-core": "^6.1.5", + "workbox-routing": "^6.1.5", + "workbox-strategies": "^6.1.5" + } + }, + "node_modules/workbox-google-analytics/node_modules/workbox-background-sync": { + "version": "6.1.5", + "license": "MIT", + "dependencies": { + "workbox-core": "^6.1.5" + } + }, + "node_modules/workbox-navigation-preload": { + "version": "6.1.5", + "license": "MIT", + "dependencies": { + "workbox-core": "^6.1.5" + } + }, + "node_modules/workbox-precaching": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/workbox-precaching/-/workbox-precaching-6.3.0.tgz", + "integrity": "sha512-bND3rUxiuzFmDfeKywdvOqK0LQ5LLbOPk0eX22PlMQNOOduHRxzglMpgHo/MR6h+8cPJ3GpxT8hZ895/7bHMqQ==", + "dependencies": { + "workbox-core": "6.3.0", + "workbox-routing": "6.3.0", + "workbox-strategies": "6.3.0" + } + }, + "node_modules/workbox-range-requests": { + "version": "6.1.5", + "license": "MIT", + "dependencies": { + "workbox-core": "^6.1.5" + } + }, + "node_modules/workbox-recipes": { + "version": "6.1.5", + "license": "MIT", + "dependencies": { + "workbox-cacheable-response": "^6.1.5", + "workbox-core": "^6.1.5", + "workbox-expiration": "^6.1.5", + "workbox-precaching": "^6.1.5", + "workbox-routing": "^6.1.5", + "workbox-strategies": "^6.1.5" + } + }, + "node_modules/workbox-routing": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/workbox-routing/-/workbox-routing-6.3.0.tgz", + "integrity": "sha512-asajX5UPkaoU4PB9pEpxKWKkcpA+KJQUEeYU6NlK0rXTCpdWQ6iieMRDoBTZBjTzUdL3j3s1Zo2qCOSvtXSYGg==", + "dependencies": { + "workbox-core": "6.3.0" + } + }, + "node_modules/workbox-strategies": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/workbox-strategies/-/workbox-strategies-6.3.0.tgz", + "integrity": "sha512-SYZt40y+Iu5nA+UEPQOrAuAMMNTxtUBPLCIaMMb4lcADpBYrNP1CD+/s2QsrxzS651a8hfi06REKt+uTp1tqfw==", + "dependencies": { + "workbox-core": "6.3.0" + } + }, + "node_modules/workbox-streams": { + "version": "6.1.5", + "license": "MIT", + "dependencies": { + "workbox-core": "^6.1.5", + "workbox-routing": "^6.1.5" + } + }, + "node_modules/workbox-sw": { + "version": "6.1.5", + "license": "MIT" + }, + "node_modules/workbox-webpack-plugin": { + "version": "6.1.5", + "license": "MIT", + "dependencies": { + "fast-json-stable-stringify": "^2.1.0", + "pretty-bytes": "^5.4.1", + "source-map-url": "^0.4.0", + "upath": "^1.2.0", + "webpack-sources": "^1.4.3", + "workbox-build": "^6.1.5" + }, + "engines": { + "node": ">=10.0.0" + }, + "peerDependencies": { + "webpack": "^4.4.0 || ^5.9.0" + } + }, + "node_modules/workbox-window": { + "version": "6.1.5", + "license": "MIT", + "dependencies": { + "workbox-core": "^6.1.5" + } + }, + "node_modules/worker-farm": { + "version": "1.7.0", + "license": "MIT", + "dependencies": { + "errno": "~0.1.7" + } + }, + "node_modules/worker-rpc": { + "version": "0.1.1", + "dev": true, + "license": "MIT", + "dependencies": { + "microevent.ts": "~0.1.1" + } + }, + "node_modules/wrap-ansi": { + "version": "5.1.0", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^3.2.0", + "string-width": "^3.0.0", + "strip-ansi": "^5.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/wrap-ansi/node_modules/ansi-regex": { + "version": "4.1.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/wrap-ansi/node_modules/ansi-styles": { + "version": "3.2.1", + "dev": true, + "license": "MIT", + "dependencies": { + "color-convert": "^1.9.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/wrap-ansi/node_modules/emoji-regex": { + "version": "7.0.3", + "dev": true, + "license": "MIT" + }, + "node_modules/wrap-ansi/node_modules/string-width": { + "version": "3.1.0", + "dev": true, + "license": "MIT", + "dependencies": { + "emoji-regex": "^7.0.1", + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^5.1.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/wrap-ansi/node_modules/strip-ansi": { + "version": "5.2.0", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-regex": "^4.1.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/wrappy": { + "version": "1.0.2", + "license": "ISC" + }, + "node_modules/ws": { + "version": "6.2.2", + "dev": true, + "license": "MIT", + "dependencies": { + "async-limiter": "~1.0.0" + } + }, + "node_modules/xss": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/xss/-/xss-1.0.9.tgz", + "integrity": "sha512-2t7FahYnGJys6DpHLhajusId7R0Pm2yTmuL0GV9+mV0ZlaLSnb2toBmppATfg5sWIhZQGlsTLoecSzya+l4EAQ==", + "dependencies": { + "commander": "^2.20.3", + "cssfilter": "0.0.10" + }, + "bin": { + "xss": "bin/xss" + }, + "engines": { + "node": ">= 0.10.0" + } + }, + "node_modules/xtend": { + "version": "4.0.2", + "license": "MIT", + "engines": { + "node": ">=0.4" + } + }, + "node_modules/y18n": { + "version": "4.0.3", + "license": "ISC" + }, + "node_modules/yallist": { + "version": "4.0.0", + "license": "ISC" + }, + "node_modules/yaml": { + "version": "1.10.2", + "dev": true, + "license": "ISC", + "optional": true, + "engines": { + "node": ">= 6" + } + }, + "node_modules/yargs": { + "version": "13.3.2", + "dev": true, + "license": "MIT", + "dependencies": { + "cliui": "^5.0.0", + "find-up": "^3.0.0", + "get-caller-file": "^2.0.1", + "require-directory": "^2.1.1", + "require-main-filename": "^2.0.0", + "set-blocking": "^2.0.0", + "string-width": "^3.0.0", + "which-module": "^2.0.0", + "y18n": "^4.0.0", + "yargs-parser": "^13.1.2" + } + }, + "node_modules/yargs-parser": { + "version": "13.1.2", + "dev": true, + "license": "ISC", + "dependencies": { + "camelcase": "^5.0.0", + "decamelize": "^1.2.0" + } + }, + "node_modules/yargs/node_modules/ansi-regex": { + "version": "4.1.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/yargs/node_modules/emoji-regex": { + "version": "7.0.3", + "dev": true, + "license": "MIT" + }, + "node_modules/yargs/node_modules/string-width": { + "version": "3.1.0", + "dev": true, + "license": "MIT", + "dependencies": { + "emoji-regex": "^7.0.1", + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^5.1.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/yargs/node_modules/strip-ansi": { + "version": "5.2.0", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-regex": "^4.1.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/yorkie": { + "version": "2.0.0", + "dev": true, + "hasInstallScript": true, + "license": "MIT", + "dependencies": { + "execa": "^0.8.0", + "is-ci": "^1.0.10", + "normalize-path": "^1.0.0", + "strip-indent": "^2.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/yorkie/node_modules/cross-spawn": { + "version": "5.1.0", + "dev": true, + "license": "MIT", + "dependencies": { + "lru-cache": "^4.0.1", + "shebang-command": "^1.2.0", + "which": "^1.2.9" + } + }, + "node_modules/yorkie/node_modules/execa": { + "version": "0.8.0", + "dev": true, + "license": "MIT", + "dependencies": { + "cross-spawn": "^5.0.1", + "get-stream": "^3.0.0", + "is-stream": "^1.1.0", + "npm-run-path": "^2.0.0", + "p-finally": "^1.0.0", + "signal-exit": "^3.0.0", + "strip-eof": "^1.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/yorkie/node_modules/get-stream": { + "version": "3.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/yorkie/node_modules/lru-cache": { + "version": "4.1.5", + "dev": true, + "license": "ISC", + "dependencies": { + "pseudomap": "^1.0.2", + "yallist": "^2.1.2" + } + }, + "node_modules/yorkie/node_modules/normalize-path": { + "version": "1.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/yorkie/node_modules/yallist": { + "version": "2.1.2", + "dev": true, + "license": "ISC" + } + }, + "dependencies": { + "@babel/code-frame": { + "version": "7.12.13", + "requires": { + "@babel/highlight": "^7.12.13" + } + }, + "@babel/compat-data": { + "version": "7.14.4" + }, + "@babel/core": { + "version": "7.14.3", + "requires": { + "@babel/code-frame": "^7.12.13", + "@babel/generator": "^7.14.3", + "@babel/helper-compilation-targets": "^7.13.16", + "@babel/helper-module-transforms": "^7.14.2", + "@babel/helpers": "^7.14.0", + "@babel/parser": "^7.14.3", + "@babel/template": "^7.12.13", + "@babel/traverse": "^7.14.2", + "@babel/types": "^7.14.2", + "convert-source-map": "^1.7.0", + "debug": "^4.1.0", + "gensync": "^1.0.0-beta.2", + "json5": "^2.1.2", + "semver": "^6.3.0", + "source-map": "^0.5.0" + }, + "dependencies": { + "source-map": { + "version": "0.5.7" + } + } + }, + "@babel/eslint-parser": { + "version": "7.14.4", + "requires": { + "eslint-scope": "^5.1.0", + "eslint-visitor-keys": "^2.1.0", + "semver": "^6.3.0" + }, + "dependencies": { + "eslint-visitor-keys": { + "version": "2.1.0" + } + } + }, + "@babel/generator": { + "version": "7.14.3", + "requires": { + "@babel/types": "^7.14.2", + "jsesc": "^2.5.1", + "source-map": "^0.5.0" + }, + "dependencies": { + "source-map": { + "version": "0.5.7" + } + } + }, + "@babel/helper-annotate-as-pure": { + "version": "7.12.13", + "requires": { + "@babel/types": "^7.12.13" + } + }, + "@babel/helper-builder-binary-assignment-operator-visitor": { + "version": "7.12.13", + "requires": { + "@babel/helper-explode-assignable-expression": "^7.12.13", + "@babel/types": "^7.12.13" + } + }, + "@babel/helper-compilation-targets": { + "version": "7.14.4", + "requires": { + "@babel/compat-data": "^7.14.4", + "@babel/helper-validator-option": "^7.12.17", + "browserslist": "^4.16.6", + "semver": "^6.3.0" + } + }, + "@babel/helper-create-class-features-plugin": { + "version": "7.14.4", + "requires": { + "@babel/helper-annotate-as-pure": "^7.12.13", + "@babel/helper-function-name": "^7.14.2", + "@babel/helper-member-expression-to-functions": "^7.13.12", + "@babel/helper-optimise-call-expression": "^7.12.13", + "@babel/helper-replace-supers": "^7.14.4", + "@babel/helper-split-export-declaration": "^7.12.13" + } + }, + "@babel/helper-create-regexp-features-plugin": { + "version": "7.14.3", + "requires": { + "@babel/helper-annotate-as-pure": "^7.12.13", + "regexpu-core": "^4.7.1" + } + }, + "@babel/helper-define-polyfill-provider": { + "version": "0.2.3", + "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", + "debug": "^4.1.1", + "lodash.debounce": "^4.0.8", + "resolve": "^1.14.2", + "semver": "^6.1.2" + } + }, + "@babel/helper-explode-assignable-expression": { + "version": "7.13.0", + "requires": { + "@babel/types": "^7.13.0" + } + }, + "@babel/helper-function-name": { + "version": "7.14.2", + "requires": { + "@babel/helper-get-function-arity": "^7.12.13", + "@babel/template": "^7.12.13", + "@babel/types": "^7.14.2" + } + }, + "@babel/helper-get-function-arity": { + "version": "7.12.13", + "requires": { + "@babel/types": "^7.12.13" + } + }, + "@babel/helper-hoist-variables": { + "version": "7.13.16", + "requires": { + "@babel/traverse": "^7.13.15", + "@babel/types": "^7.13.16" + } + }, + "@babel/helper-member-expression-to-functions": { + "version": "7.13.12", + "requires": { + "@babel/types": "^7.13.12" + } + }, + "@babel/helper-module-imports": { + "version": "7.13.12", + "requires": { + "@babel/types": "^7.13.12" + } + }, + "@babel/helper-module-transforms": { + "version": "7.14.2", + "requires": { + "@babel/helper-module-imports": "^7.13.12", + "@babel/helper-replace-supers": "^7.13.12", + "@babel/helper-simple-access": "^7.13.12", + "@babel/helper-split-export-declaration": "^7.12.13", + "@babel/helper-validator-identifier": "^7.14.0", + "@babel/template": "^7.12.13", + "@babel/traverse": "^7.14.2", + "@babel/types": "^7.14.2" + } + }, + "@babel/helper-optimise-call-expression": { + "version": "7.12.13", + "requires": { + "@babel/types": "^7.12.13" + } + }, + "@babel/helper-plugin-utils": { + "version": "7.13.0" + }, + "@babel/helper-remap-async-to-generator": { + "version": "7.13.0", + "requires": { + "@babel/helper-annotate-as-pure": "^7.12.13", + "@babel/helper-wrap-function": "^7.13.0", + "@babel/types": "^7.13.0" + } + }, + "@babel/helper-replace-supers": { + "version": "7.14.4", + "requires": { + "@babel/helper-member-expression-to-functions": "^7.13.12", + "@babel/helper-optimise-call-expression": "^7.12.13", + "@babel/traverse": "^7.14.2", + "@babel/types": "^7.14.4" + } + }, + "@babel/helper-simple-access": { + "version": "7.13.12", + "requires": { + "@babel/types": "^7.13.12" + } + }, + "@babel/helper-skip-transparent-expression-wrappers": { + "version": "7.12.1", + "requires": { + "@babel/types": "^7.12.1" + } + }, + "@babel/helper-split-export-declaration": { + "version": "7.12.13", + "requires": { + "@babel/types": "^7.12.13" + } + }, + "@babel/helper-validator-identifier": { + "version": "7.14.0" + }, + "@babel/helper-validator-option": { + "version": "7.12.17" + }, + "@babel/helper-wrap-function": { + "version": "7.13.0", + "requires": { + "@babel/helper-function-name": "^7.12.13", + "@babel/template": "^7.12.13", + "@babel/traverse": "^7.13.0", + "@babel/types": "^7.13.0" + } + }, + "@babel/helpers": { + "version": "7.14.0", + "requires": { + "@babel/template": "^7.12.13", + "@babel/traverse": "^7.14.0", + "@babel/types": "^7.14.0" + } + }, + "@babel/highlight": { + "version": "7.14.0", + "requires": { + "@babel/helper-validator-identifier": "^7.14.0", + "chalk": "^2.0.0", + "js-tokens": "^4.0.0" + } + }, + "@babel/parser": { + "version": "7.14.4" + }, + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": { + "version": "7.13.12", + "requires": { + "@babel/helper-plugin-utils": "^7.13.0", + "@babel/helper-skip-transparent-expression-wrappers": "^7.12.1", + "@babel/plugin-proposal-optional-chaining": "^7.13.12" + } + }, + "@babel/plugin-proposal-async-generator-functions": { + "version": "7.14.2", + "requires": { + "@babel/helper-plugin-utils": "^7.13.0", + "@babel/helper-remap-async-to-generator": "^7.13.0", + "@babel/plugin-syntax-async-generators": "^7.8.4" + } + }, + "@babel/plugin-proposal-class-properties": { + "version": "7.13.0", + "requires": { + "@babel/helper-create-class-features-plugin": "^7.13.0", + "@babel/helper-plugin-utils": "^7.13.0" + } + }, + "@babel/plugin-proposal-class-static-block": { + "version": "7.14.3", + "requires": { + "@babel/helper-create-class-features-plugin": "^7.14.3", + "@babel/helper-plugin-utils": "^7.13.0", + "@babel/plugin-syntax-class-static-block": "^7.12.13" + } + }, + "@babel/plugin-proposal-decorators": { + "version": "7.14.2", + "dev": true, + "requires": { + "@babel/helper-create-class-features-plugin": "^7.14.2", + "@babel/helper-plugin-utils": "^7.13.0", + "@babel/plugin-syntax-decorators": "^7.12.13" + } + }, + "@babel/plugin-proposal-dynamic-import": { + "version": "7.14.2", + "requires": { + "@babel/helper-plugin-utils": "^7.13.0", + "@babel/plugin-syntax-dynamic-import": "^7.8.3" + } + }, + "@babel/plugin-proposal-export-namespace-from": { + "version": "7.14.2", + "requires": { + "@babel/helper-plugin-utils": "^7.13.0", + "@babel/plugin-syntax-export-namespace-from": "^7.8.3" + } + }, + "@babel/plugin-proposal-json-strings": { + "version": "7.14.2", + "requires": { + "@babel/helper-plugin-utils": "^7.13.0", + "@babel/plugin-syntax-json-strings": "^7.8.3" + } + }, + "@babel/plugin-proposal-logical-assignment-operators": { + "version": "7.14.2", + "requires": { + "@babel/helper-plugin-utils": "^7.13.0", + "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4" + } + }, + "@babel/plugin-proposal-nullish-coalescing-operator": { + "version": "7.14.2", + "requires": { + "@babel/helper-plugin-utils": "^7.13.0", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3" + } + }, + "@babel/plugin-proposal-numeric-separator": { + "version": "7.14.2", + "requires": { + "@babel/helper-plugin-utils": "^7.13.0", + "@babel/plugin-syntax-numeric-separator": "^7.10.4" + } + }, + "@babel/plugin-proposal-object-rest-spread": { + "version": "7.14.4", + "requires": { + "@babel/compat-data": "^7.14.4", + "@babel/helper-compilation-targets": "^7.14.4", + "@babel/helper-plugin-utils": "^7.13.0", + "@babel/plugin-syntax-object-rest-spread": "^7.8.3", + "@babel/plugin-transform-parameters": "^7.14.2" + } + }, + "@babel/plugin-proposal-optional-catch-binding": { + "version": "7.14.2", + "requires": { + "@babel/helper-plugin-utils": "^7.13.0", + "@babel/plugin-syntax-optional-catch-binding": "^7.8.3" + } + }, + "@babel/plugin-proposal-optional-chaining": { + "version": "7.14.2", + "requires": { + "@babel/helper-plugin-utils": "^7.13.0", + "@babel/helper-skip-transparent-expression-wrappers": "^7.12.1", + "@babel/plugin-syntax-optional-chaining": "^7.8.3" + } + }, + "@babel/plugin-proposal-private-methods": { + "version": "7.13.0", + "requires": { + "@babel/helper-create-class-features-plugin": "^7.13.0", + "@babel/helper-plugin-utils": "^7.13.0" + } + }, + "@babel/plugin-proposal-private-property-in-object": { + "version": "7.14.0", + "requires": { + "@babel/helper-annotate-as-pure": "^7.12.13", + "@babel/helper-create-class-features-plugin": "^7.14.0", + "@babel/helper-plugin-utils": "^7.13.0", + "@babel/plugin-syntax-private-property-in-object": "^7.14.0" + } + }, + "@babel/plugin-proposal-unicode-property-regex": { + "version": "7.12.13", + "requires": { + "@babel/helper-create-regexp-features-plugin": "^7.12.13", + "@babel/helper-plugin-utils": "^7.12.13" + } + }, + "@babel/plugin-syntax-async-generators": { + "version": "7.8.4", + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-class-properties": { + "version": "7.12.13", + "requires": { + "@babel/helper-plugin-utils": "^7.12.13" + } + }, + "@babel/plugin-syntax-class-static-block": { + "version": "7.12.13", + "requires": { + "@babel/helper-plugin-utils": "^7.12.13" + } + }, + "@babel/plugin-syntax-decorators": { + "version": "7.12.13", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.12.13" + } + }, + "@babel/plugin-syntax-dynamic-import": { + "version": "7.8.3", + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-export-namespace-from": { + "version": "7.8.3", + "requires": { + "@babel/helper-plugin-utils": "^7.8.3" + } + }, + "@babel/plugin-syntax-json-strings": { + "version": "7.8.3", + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-jsx": { + "version": "7.12.13", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.12.13" + } + }, + "@babel/plugin-syntax-logical-assignment-operators": { + "version": "7.10.4", + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-syntax-nullish-coalescing-operator": { + "version": "7.8.3", + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-numeric-separator": { + "version": "7.10.4", + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-syntax-object-rest-spread": { + "version": "7.8.3", + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-optional-catch-binding": { + "version": "7.8.3", + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-optional-chaining": { + "version": "7.8.3", + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-private-property-in-object": { + "version": "7.14.0", + "requires": { + "@babel/helper-plugin-utils": "^7.13.0" + } + }, + "@babel/plugin-syntax-top-level-await": { + "version": "7.12.13", + "requires": { + "@babel/helper-plugin-utils": "^7.12.13" + } + }, + "@babel/plugin-transform-arrow-functions": { + "version": "7.13.0", + "requires": { + "@babel/helper-plugin-utils": "^7.13.0" + } + }, + "@babel/plugin-transform-async-to-generator": { + "version": "7.13.0", + "requires": { + "@babel/helper-module-imports": "^7.12.13", + "@babel/helper-plugin-utils": "^7.13.0", + "@babel/helper-remap-async-to-generator": "^7.13.0" + } + }, + "@babel/plugin-transform-block-scoped-functions": { + "version": "7.12.13", + "requires": { + "@babel/helper-plugin-utils": "^7.12.13" + } + }, + "@babel/plugin-transform-block-scoping": { + "version": "7.14.4", + "requires": { + "@babel/helper-plugin-utils": "^7.13.0" + } + }, + "@babel/plugin-transform-classes": { + "version": "7.14.4", + "requires": { + "@babel/helper-annotate-as-pure": "^7.12.13", + "@babel/helper-function-name": "^7.14.2", + "@babel/helper-optimise-call-expression": "^7.12.13", + "@babel/helper-plugin-utils": "^7.13.0", + "@babel/helper-replace-supers": "^7.14.4", + "@babel/helper-split-export-declaration": "^7.12.13", + "globals": "^11.1.0" + } + }, + "@babel/plugin-transform-computed-properties": { + "version": "7.13.0", + "requires": { + "@babel/helper-plugin-utils": "^7.13.0" + } + }, + "@babel/plugin-transform-destructuring": { + "version": "7.14.4", + "requires": { + "@babel/helper-plugin-utils": "^7.13.0" + } + }, + "@babel/plugin-transform-dotall-regex": { + "version": "7.12.13", + "requires": { + "@babel/helper-create-regexp-features-plugin": "^7.12.13", + "@babel/helper-plugin-utils": "^7.12.13" + } + }, + "@babel/plugin-transform-duplicate-keys": { + "version": "7.12.13", + "requires": { + "@babel/helper-plugin-utils": "^7.12.13" + } + }, + "@babel/plugin-transform-exponentiation-operator": { + "version": "7.12.13", + "requires": { + "@babel/helper-builder-binary-assignment-operator-visitor": "^7.12.13", + "@babel/helper-plugin-utils": "^7.12.13" + } + }, + "@babel/plugin-transform-for-of": { + "version": "7.13.0", + "requires": { + "@babel/helper-plugin-utils": "^7.13.0" + } + }, + "@babel/plugin-transform-function-name": { + "version": "7.12.13", + "requires": { + "@babel/helper-function-name": "^7.12.13", + "@babel/helper-plugin-utils": "^7.12.13" + } + }, + "@babel/plugin-transform-literals": { + "version": "7.12.13", + "requires": { + "@babel/helper-plugin-utils": "^7.12.13" + } + }, + "@babel/plugin-transform-member-expression-literals": { + "version": "7.12.13", + "requires": { + "@babel/helper-plugin-utils": "^7.12.13" + } + }, + "@babel/plugin-transform-modules-amd": { + "version": "7.14.2", + "requires": { + "@babel/helper-module-transforms": "^7.14.2", + "@babel/helper-plugin-utils": "^7.13.0", + "babel-plugin-dynamic-import-node": "^2.3.3" + } + }, + "@babel/plugin-transform-modules-commonjs": { + "version": "7.14.0", + "requires": { + "@babel/helper-module-transforms": "^7.14.0", + "@babel/helper-plugin-utils": "^7.13.0", + "@babel/helper-simple-access": "^7.13.12", + "babel-plugin-dynamic-import-node": "^2.3.3" + } + }, + "@babel/plugin-transform-modules-systemjs": { + "version": "7.13.8", + "requires": { + "@babel/helper-hoist-variables": "^7.13.0", + "@babel/helper-module-transforms": "^7.13.0", + "@babel/helper-plugin-utils": "^7.13.0", + "@babel/helper-validator-identifier": "^7.12.11", + "babel-plugin-dynamic-import-node": "^2.3.3" + } + }, + "@babel/plugin-transform-modules-umd": { + "version": "7.14.0", + "requires": { + "@babel/helper-module-transforms": "^7.14.0", + "@babel/helper-plugin-utils": "^7.13.0" + } + }, + "@babel/plugin-transform-named-capturing-groups-regex": { + "version": "7.12.13", + "requires": { + "@babel/helper-create-regexp-features-plugin": "^7.12.13" + } + }, + "@babel/plugin-transform-new-target": { + "version": "7.12.13", + "requires": { + "@babel/helper-plugin-utils": "^7.12.13" + } + }, + "@babel/plugin-transform-object-super": { + "version": "7.12.13", + "requires": { + "@babel/helper-plugin-utils": "^7.12.13", + "@babel/helper-replace-supers": "^7.12.13" + } + }, + "@babel/plugin-transform-parameters": { + "version": "7.14.2", + "requires": { + "@babel/helper-plugin-utils": "^7.13.0" + } + }, + "@babel/plugin-transform-property-literals": { + "version": "7.12.13", + "requires": { + "@babel/helper-plugin-utils": "^7.12.13" + } + }, + "@babel/plugin-transform-regenerator": { + "version": "7.13.15", + "requires": { + "regenerator-transform": "^0.14.2" + } + }, + "@babel/plugin-transform-reserved-words": { + "version": "7.12.13", + "requires": { + "@babel/helper-plugin-utils": "^7.12.13" + } + }, + "@babel/plugin-transform-runtime": { + "version": "7.14.3", + "dev": true, + "requires": { + "@babel/helper-module-imports": "^7.13.12", + "@babel/helper-plugin-utils": "^7.13.0", + "babel-plugin-polyfill-corejs2": "^0.2.0", + "babel-plugin-polyfill-corejs3": "^0.2.0", + "babel-plugin-polyfill-regenerator": "^0.2.0", + "semver": "^6.3.0" + } + }, + "@babel/plugin-transform-shorthand-properties": { + "version": "7.12.13", + "requires": { + "@babel/helper-plugin-utils": "^7.12.13" + } + }, + "@babel/plugin-transform-spread": { + "version": "7.13.0", + "requires": { + "@babel/helper-plugin-utils": "^7.13.0", + "@babel/helper-skip-transparent-expression-wrappers": "^7.12.1" + } + }, + "@babel/plugin-transform-sticky-regex": { + "version": "7.12.13", + "requires": { + "@babel/helper-plugin-utils": "^7.12.13" + } + }, + "@babel/plugin-transform-template-literals": { + "version": "7.13.0", + "requires": { + "@babel/helper-plugin-utils": "^7.13.0" + } + }, + "@babel/plugin-transform-typeof-symbol": { + "version": "7.12.13", + "requires": { + "@babel/helper-plugin-utils": "^7.12.13" + } + }, + "@babel/plugin-transform-unicode-escapes": { + "version": "7.12.13", + "requires": { + "@babel/helper-plugin-utils": "^7.12.13" + } + }, + "@babel/plugin-transform-unicode-regex": { + "version": "7.12.13", + "requires": { + "@babel/helper-create-regexp-features-plugin": "^7.12.13", + "@babel/helper-plugin-utils": "^7.12.13" + } + }, + "@babel/preset-env": { + "version": "7.14.4", + "requires": { + "@babel/compat-data": "^7.14.4", + "@babel/helper-compilation-targets": "^7.14.4", + "@babel/helper-plugin-utils": "^7.13.0", + "@babel/helper-validator-option": "^7.12.17", + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.13.12", + "@babel/plugin-proposal-async-generator-functions": "^7.14.2", + "@babel/plugin-proposal-class-properties": "^7.13.0", + "@babel/plugin-proposal-class-static-block": "^7.14.3", + "@babel/plugin-proposal-dynamic-import": "^7.14.2", + "@babel/plugin-proposal-export-namespace-from": "^7.14.2", + "@babel/plugin-proposal-json-strings": "^7.14.2", + "@babel/plugin-proposal-logical-assignment-operators": "^7.14.2", + "@babel/plugin-proposal-nullish-coalescing-operator": "^7.14.2", + "@babel/plugin-proposal-numeric-separator": "^7.14.2", + "@babel/plugin-proposal-object-rest-spread": "^7.14.4", + "@babel/plugin-proposal-optional-catch-binding": "^7.14.2", + "@babel/plugin-proposal-optional-chaining": "^7.14.2", + "@babel/plugin-proposal-private-methods": "^7.13.0", + "@babel/plugin-proposal-private-property-in-object": "^7.14.0", + "@babel/plugin-proposal-unicode-property-regex": "^7.12.13", + "@babel/plugin-syntax-async-generators": "^7.8.4", + "@babel/plugin-syntax-class-properties": "^7.12.13", + "@babel/plugin-syntax-class-static-block": "^7.12.13", + "@babel/plugin-syntax-dynamic-import": "^7.8.3", + "@babel/plugin-syntax-export-namespace-from": "^7.8.3", + "@babel/plugin-syntax-json-strings": "^7.8.3", + "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3", + "@babel/plugin-syntax-numeric-separator": "^7.10.4", + "@babel/plugin-syntax-object-rest-spread": "^7.8.3", + "@babel/plugin-syntax-optional-catch-binding": "^7.8.3", + "@babel/plugin-syntax-optional-chaining": "^7.8.3", + "@babel/plugin-syntax-private-property-in-object": "^7.14.0", + "@babel/plugin-syntax-top-level-await": "^7.12.13", + "@babel/plugin-transform-arrow-functions": "^7.13.0", + "@babel/plugin-transform-async-to-generator": "^7.13.0", + "@babel/plugin-transform-block-scoped-functions": "^7.12.13", + "@babel/plugin-transform-block-scoping": "^7.14.4", + "@babel/plugin-transform-classes": "^7.14.4", + "@babel/plugin-transform-computed-properties": "^7.13.0", + "@babel/plugin-transform-destructuring": "^7.14.4", + "@babel/plugin-transform-dotall-regex": "^7.12.13", + "@babel/plugin-transform-duplicate-keys": "^7.12.13", + "@babel/plugin-transform-exponentiation-operator": "^7.12.13", + "@babel/plugin-transform-for-of": "^7.13.0", + "@babel/plugin-transform-function-name": "^7.12.13", + "@babel/plugin-transform-literals": "^7.12.13", + "@babel/plugin-transform-member-expression-literals": "^7.12.13", + "@babel/plugin-transform-modules-amd": "^7.14.2", + "@babel/plugin-transform-modules-commonjs": "^7.14.0", + "@babel/plugin-transform-modules-systemjs": "^7.13.8", + "@babel/plugin-transform-modules-umd": "^7.14.0", + "@babel/plugin-transform-named-capturing-groups-regex": "^7.12.13", + "@babel/plugin-transform-new-target": "^7.12.13", + "@babel/plugin-transform-object-super": "^7.12.13", + "@babel/plugin-transform-parameters": "^7.14.2", + "@babel/plugin-transform-property-literals": "^7.12.13", + "@babel/plugin-transform-regenerator": "^7.13.15", + "@babel/plugin-transform-reserved-words": "^7.12.13", + "@babel/plugin-transform-shorthand-properties": "^7.12.13", + "@babel/plugin-transform-spread": "^7.13.0", + "@babel/plugin-transform-sticky-regex": "^7.12.13", + "@babel/plugin-transform-template-literals": "^7.13.0", + "@babel/plugin-transform-typeof-symbol": "^7.12.13", + "@babel/plugin-transform-unicode-escapes": "^7.12.13", + "@babel/plugin-transform-unicode-regex": "^7.12.13", + "@babel/preset-modules": "^0.1.4", + "@babel/types": "^7.14.4", + "babel-plugin-polyfill-corejs2": "^0.2.0", + "babel-plugin-polyfill-corejs3": "^0.2.0", + "babel-plugin-polyfill-regenerator": "^0.2.0", + "core-js-compat": "^3.9.0", + "semver": "^6.3.0" + } + }, + "@babel/preset-modules": { + "version": "0.1.4", + "requires": { + "@babel/helper-plugin-utils": "^7.0.0", + "@babel/plugin-proposal-unicode-property-regex": "^7.4.4", + "@babel/plugin-transform-dotall-regex": "^7.4.4", + "@babel/types": "^7.4.4", + "esutils": "^2.0.2" + } + }, + "@babel/runtime": { + "version": "7.14.0", + "requires": { + "regenerator-runtime": "^0.13.4" + } + }, + "@babel/template": { + "version": "7.12.13", + "requires": { + "@babel/code-frame": "^7.12.13", + "@babel/parser": "^7.12.13", + "@babel/types": "^7.12.13" + } + }, + "@babel/traverse": { + "version": "7.14.2", + "requires": { + "@babel/code-frame": "^7.12.13", + "@babel/generator": "^7.14.2", + "@babel/helper-function-name": "^7.14.2", + "@babel/helper-split-export-declaration": "^7.12.13", + "@babel/parser": "^7.14.2", + "@babel/types": "^7.14.2", + "debug": "^4.1.0", + "globals": "^11.1.0" + } + }, + "@babel/types": { + "version": "7.14.4", + "requires": { + "@babel/helper-validator-identifier": "^7.14.0", + "to-fast-properties": "^2.0.0" + } + }, + "@braintree/sanitize-url": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@braintree/sanitize-url/-/sanitize-url-3.1.0.tgz", + "integrity": "sha512-GcIY79elgB+azP74j8vqkiXz8xLFfIzbQJdlwOPisgbKT00tviJQuEghOXSMVxJ00HoYJbGswr4kcllUc4xCcg==" + }, + "@eslint/eslintrc": { + "version": "0.4.2", + "requires": { + "ajv": "^6.12.4", + "debug": "^4.1.1", + "espree": "^7.3.0", + "globals": "^13.9.0", + "ignore": "^4.0.6", + "import-fresh": "^3.2.1", + "js-yaml": "^3.13.1", + "minimatch": "^3.0.4", + "strip-json-comments": "^3.1.1" + }, + "dependencies": { + "globals": { + "version": "13.9.0", + "requires": { + "type-fest": "^0.20.2" + } + } + } + }, + "@hapi/address": { + "version": "2.1.4" + }, + "@hapi/bourne": { + "version": "1.3.2", + "dev": true + }, + "@hapi/formula": { + "version": "1.2.0" + }, + "@hapi/hoek": { + "version": "8.5.1" + }, + "@hapi/joi": { + "version": "15.1.1", + "dev": true, + "requires": { + "@hapi/address": "2.x.x", + "@hapi/bourne": "1.x.x", + "@hapi/hoek": "8.x.x", + "@hapi/topo": "3.x.x" + } + }, + "@hapi/pinpoint": { + "version": "1.0.2" + }, + "@hapi/topo": { + "version": "3.1.6", + "requires": { + "@hapi/hoek": "^8.3.0" + } + }, + "@intervolga/optimize-cssnano-plugin": { + "version": "1.0.6", + "dev": true, + "requires": { + "cssnano": "^4.0.0", + "cssnano-preset-default": "^4.0.0", + "postcss": "^7.0.0" + } + }, + "@kangc/v-md-editor": { + "version": "1.7.7", + "resolved": "https://registry.npmjs.org/@kangc/v-md-editor/-/v-md-editor-1.7.7.tgz", + "integrity": "sha512-QHywavUEATztkAANR847izkJvHtbJbrln/bqBXUrxUust27f4Q4NegMQSwejt7UbIyubv9VKCA+lBJsnE2EixA==", + "requires": { + "@vuepress/markdown": "^1.8.2", + "codemirror": "^5.61.0", + "copy-to-clipboard": "^3.3.1", + "highlight.js": "^10.7.1", + "insert-text-at-cursor": "^0.3.0", + "katex": "^0.13.11", + "markdown-it": "^12.0.6", + "markdown-it-attrs": "^4.0.0", + "markdown-it-container": "^3.0.0", + "mermaid": "^8.10.1", + "prismjs": "^1.23.0", + "resize-observer-polyfill": "^1.5.1", + "xss": "^1.0.9" + } + }, + "@kazupon/vue-i18n-loader": { + "version": "0.5.0", + "dev": true, + "requires": { + "js-yaml": "^3.13.1", + "json5": "^2.1.1" + } + }, + "@kevinfaguiar/vue-twemoji-picker": { + "version": "5.7.4", + "requires": { + "@popperjs/core": "^2.4.0", + "lodash.pick": "^4.4.0", + "twemoji": "^13.0.0", + "twitter-text": "^3.1.0", + "vue-clickaway": "^2.2.2" + } + }, + "@mrmlnc/readdir-enhanced": { + "version": "2.2.1", + "requires": { + "call-me-maybe": "^1.0.1", + "glob-to-regexp": "^0.3.0" + } + }, + "@nodelib/fs.scandir": { + "version": "2.1.5", + "dev": true, + "requires": { + "@nodelib/fs.stat": "2.0.5", + "run-parallel": "^1.1.9" + } + }, + "@nodelib/fs.stat": { + "version": "2.0.5", + "dev": true + }, + "@nodelib/fs.walk": { + "version": "1.2.7", + "dev": true, + "requires": { + "@nodelib/fs.scandir": "2.1.5", + "fastq": "^1.6.0" + } + }, + "@nuxt/opencollective": { + "version": "0.3.2", + "requires": { + "chalk": "^4.1.0", + "consola": "^2.15.0", + "node-fetch": "^2.6.1" + }, + "dependencies": { + "chalk": { + "version": "4.1.1", + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "has-flag": { + "version": "4.0.0" + }, + "supports-color": { + "version": "7.2.0", + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "@popperjs/core": { + "version": "2.10.2", + "resolved": "https://registry.npmjs.org/@popperjs/core/-/core-2.10.2.tgz", + "integrity": "sha512-IXf3XA7+XyN7CP9gGh/XB0UxVMlvARGEgGXLubFICsUMGz6Q+DU+i4gGlpOxTjKvXjkJDJC8YdqdKkDj9qZHEQ==" + }, + "@riophae/vue-treeselect": { + "version": "0.4.0", + "requires": { + "@babel/runtime": "^7.3.1", + "babel-helper-vue-jsx-merge-props": "^2.0.3", + "easings-css": "^1.0.0", + "fuzzysearch": "^1.0.3", + "is-promise": "^2.1.0", + "lodash": "^4.0.0", + "material-colors": "^1.2.6", + "watch-size": "^2.0.0" + } + }, + "@rollup/plugin-node-resolve": { + "version": "7.1.3", + "dev": true, + "requires": { + "@rollup/pluginutils": "^3.0.8", + "@types/resolve": "0.0.8", + "builtin-modules": "^3.1.0", + "is-module": "^1.0.0", + "resolve": "^1.14.2" + }, + "dependencies": { + "@types/resolve": { + "version": "0.0.8", + "dev": true, + "requires": { + "@types/node": "*" + } + } + } + }, + "@rollup/plugin-replace": { + "version": "2.4.2", + "dev": true, + "requires": { + "@rollup/pluginutils": "^3.1.0", + "magic-string": "^0.25.7" + } + }, + "@rollup/pluginutils": { + "version": "3.1.0", + "dev": true, + "requires": { + "@types/estree": "0.0.39", + "estree-walker": "^1.0.1", + "picomatch": "^2.2.2" + }, + "dependencies": { + "@types/estree": { + "version": "0.0.39", + "dev": true + }, + "estree-walker": { + "version": "1.0.1", + "dev": true + } + } + }, + "@soda/friendly-errors-webpack-plugin": { + "version": "1.8.0", + "dev": true, + "requires": { + "chalk": "^2.4.2", + "error-stack-parser": "^2.0.2", + "string-width": "^2.0.0", + "strip-ansi": "^5" + }, + "dependencies": { + "ansi-regex": { + "version": "4.1.0", + "dev": true + }, + "string-width": { + "version": "2.1.1", + "dev": true, + "requires": { + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^4.0.0" + }, + "dependencies": { + "ansi-regex": { + "version": "3.0.0", + "dev": true + }, + "strip-ansi": { + "version": "4.0.0", + "dev": true, + "requires": { + "ansi-regex": "^3.0.0" + } + } + } + }, + "strip-ansi": { + "version": "5.2.0", + "dev": true, + "requires": { + "ansi-regex": "^4.1.0" + } + } + } + }, + "@soda/get-current-script": { + "version": "1.0.2", + "dev": true + }, + "@surma/rollup-plugin-off-main-thread": { + "version": "1.4.2", + "requires": { + "ejs": "^2.6.1", + "magic-string": "^0.25.0" + } + }, + "@types/body-parser": { + "version": "1.19.0", + "dev": true, + "requires": { + "@types/connect": "*", + "@types/node": "*" + } + }, + "@types/connect": { + "version": "3.4.34", + "dev": true, + "requires": { + "@types/node": "*" + } + }, + "@types/connect-history-api-fallback": { + "version": "1.3.4", + "dev": true, + "requires": { + "@types/express-serve-static-core": "*", + "@types/node": "*" + } + }, + "@types/estree": { + "version": "0.0.48" + }, + "@types/express": { + "version": "4.17.12", + "dev": true, + "requires": { + "@types/body-parser": "*", + "@types/express-serve-static-core": "^4.17.18", + "@types/qs": "*", + "@types/serve-static": "*" + } + }, + "@types/express-serve-static-core": { + "version": "4.17.21", + "dev": true, + "requires": { + "@types/node": "*", + "@types/qs": "*", + "@types/range-parser": "*" + } + }, + "@types/glob": { + "version": "7.1.3", + "requires": { + "@types/minimatch": "*", + "@types/node": "*" + } + }, + "@types/http-proxy": { + "version": "1.17.6", + "dev": true, + "requires": { + "@types/node": "*" + } + }, + "@types/json-schema": { + "version": "7.0.7", + "dev": true + }, + "@types/mime": { + "version": "1.3.2", + "dev": true + }, + "@types/minimatch": { + "version": "3.0.4" + }, + "@types/minimist": { + "version": "1.2.1", + "dev": true + }, + "@types/node": { + "version": "15.12.2" + }, + "@types/normalize-package-data": { + "version": "2.4.0", + "dev": true + }, + "@types/parse-json": { + "version": "4.0.0", + "dev": true, + "optional": true + }, + "@types/q": { + "version": "1.5.4", + "dev": true + }, + "@types/qs": { + "version": "6.9.6", + "dev": true + }, + "@types/range-parser": { + "version": "1.2.3", + "dev": true + }, + "@types/resolve": { + "version": "1.17.1", + "requires": { + "@types/node": "*" + } + }, + "@types/serve-static": { + "version": "1.13.9", + "dev": true, + "requires": { + "@types/mime": "^1", + "@types/node": "*" + } + }, + "@types/source-list-map": { + "version": "0.1.2", + "dev": true + }, + "@types/tapable": { + "version": "1.0.7", + "dev": true + }, + "@types/uglify-js": { + "version": "3.13.0", + "dev": true, + "requires": { + "source-map": "^0.6.1" + } + }, + "@types/webpack": { + "version": "4.41.29", + "dev": true, + "requires": { + "@types/node": "*", + "@types/tapable": "^1", + "@types/uglify-js": "*", + "@types/webpack-sources": "*", + "anymatch": "^3.0.0", + "source-map": "^0.6.0" + } + }, + "@types/webpack-dev-server": { + "version": "3.11.4", + "dev": true, + "requires": { + "@types/connect-history-api-fallback": "*", + "@types/express": "*", + "@types/serve-static": "*", + "@types/webpack": "^4", + "http-proxy-middleware": "^1.0.0" + }, + "dependencies": { + "braces": { + "version": "3.0.2", + "dev": true, + "requires": { + "fill-range": "^7.0.1" + } + }, + "fill-range": { + "version": "7.0.1", + "dev": true, + "requires": { + "to-regex-range": "^5.0.1" + } + }, + "http-proxy-middleware": { + "version": "1.3.1", + "dev": true, + "requires": { + "@types/http-proxy": "^1.17.5", + "http-proxy": "^1.18.1", + "is-glob": "^4.0.1", + "is-plain-obj": "^3.0.0", + "micromatch": "^4.0.2" + } + }, + "is-number": { + "version": "7.0.0", + "dev": true + }, + "micromatch": { + "version": "4.0.4", + "dev": true, + "requires": { + "braces": "^3.0.1", + "picomatch": "^2.2.3" + } + }, + "to-regex-range": { + "version": "5.0.1", + "dev": true, + "requires": { + "is-number": "^7.0.0" + } + } + } + }, + "@types/webpack-env": { + "version": "1.16.0", + "dev": true + }, + "@types/webpack-sources": { + "version": "2.1.0", + "dev": true, + "requires": { + "@types/node": "*", + "@types/source-list-map": "*", + "source-map": "^0.7.3" + }, + "dependencies": { + "source-map": { + "version": "0.7.3", + "dev": true + } + } + }, + "@typescript-eslint/eslint-plugin": { + "version": "4.26.1", + "dev": true, + "requires": { + "@typescript-eslint/experimental-utils": "4.26.1", + "@typescript-eslint/scope-manager": "4.26.1", + "debug": "^4.3.1", + "functional-red-black-tree": "^1.0.1", + "lodash": "^4.17.21", + "regexpp": "^3.1.0", + "semver": "^7.3.5", + "tsutils": "^3.21.0" + }, + "dependencies": { + "lru-cache": { + "version": "6.0.0", + "dev": true, + "requires": { + "yallist": "^4.0.0" + } + }, + "semver": { + "version": "7.3.5", + "dev": true, + "requires": { + "lru-cache": "^6.0.0" + } + } + } + }, + "@typescript-eslint/experimental-utils": { + "version": "4.26.1", + "dev": true, + "requires": { + "@types/json-schema": "^7.0.7", + "@typescript-eslint/scope-manager": "4.26.1", + "@typescript-eslint/types": "4.26.1", + "@typescript-eslint/typescript-estree": "4.26.1", + "eslint-scope": "^5.1.1", + "eslint-utils": "^3.0.0" + }, + "dependencies": { + "eslint-utils": { + "version": "3.0.0", + "dev": true, + "requires": { + "eslint-visitor-keys": "^2.0.0" + } + }, + "eslint-visitor-keys": { + "version": "2.1.0", + "dev": true + } + } + }, + "@typescript-eslint/parser": { + "version": "4.32.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-4.32.0.tgz", + "integrity": "sha512-lhtYqQ2iEPV5JqV7K+uOVlPePjClj4dOw7K4/Z1F2yvjIUvyr13yJnDzkK6uon4BjHYuHy3EG0c2Z9jEhFk56w==", + "dev": true, + "requires": { + "@typescript-eslint/scope-manager": "4.32.0", + "@typescript-eslint/types": "4.32.0", + "@typescript-eslint/typescript-estree": "4.32.0", + "debug": "^4.3.1" + }, + "dependencies": { + "@typescript-eslint/scope-manager": { + "version": "4.32.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-4.32.0.tgz", + "integrity": "sha512-DK+fMSHdM216C0OM/KR1lHXjP1CNtVIhJ54kQxfOE6x8UGFAjha8cXgDMBEIYS2XCYjjCtvTkjQYwL3uvGOo0w==", + "dev": true, + "requires": { + "@typescript-eslint/types": "4.32.0", + "@typescript-eslint/visitor-keys": "4.32.0" + } + }, + "@typescript-eslint/types": { + "version": "4.32.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-4.32.0.tgz", + "integrity": "sha512-LE7Z7BAv0E2UvqzogssGf1x7GPpUalgG07nGCBYb1oK4mFsOiFC/VrSMKbZQzFJdN2JL5XYmsx7C7FX9p9ns0w==", + "dev": true + }, + "@typescript-eslint/typescript-estree": { + "version": "4.32.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-4.32.0.tgz", + "integrity": "sha512-tRYCgJ3g1UjMw1cGG8Yn1KzOzNlQ6u1h9AmEtPhb5V5a1TmiHWcRyF/Ic+91M4f43QeChyYlVTcf3DvDTZR9vw==", + "dev": true, + "requires": { + "@typescript-eslint/types": "4.32.0", + "@typescript-eslint/visitor-keys": "4.32.0", + "debug": "^4.3.1", + "globby": "^11.0.3", + "is-glob": "^4.0.1", + "semver": "^7.3.5", + "tsutils": "^3.21.0" + } + }, + "@typescript-eslint/visitor-keys": { + "version": "4.32.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-4.32.0.tgz", + "integrity": "sha512-e7NE0qz8W+atzv3Cy9qaQ7BTLwWsm084Z0c4nIO2l3Bp6u9WIgdqCgyPyV5oSPDMIW3b20H59OOCmVk3jw3Ptw==", + "dev": true, + "requires": { + "@typescript-eslint/types": "4.32.0", + "eslint-visitor-keys": "^2.0.0" + } + }, + "array-union": { + "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 + }, + "braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "dev": true, + "requires": { + "fill-range": "^7.0.1" + } + }, + "dir-glob": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", + "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", + "dev": true, + "requires": { + "path-type": "^4.0.0" + } + }, + "eslint-visitor-keys": { + "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 + }, + "fast-glob": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.7.tgz", + "integrity": "sha512-rYGMRwip6lUMvYD3BTScMwT1HtAs2d71SMv66Vrxs0IekGZEjhM0pcMfjQPnknBt2zeCwQMEupiN02ZP4DiT1Q==", + "dev": true, + "requires": { + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.2", + "merge2": "^1.3.0", + "micromatch": "^4.0.4" + } + }, + "fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "dev": true, + "requires": { + "to-regex-range": "^5.0.1" + } + }, + "glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, + "requires": { + "is-glob": "^4.0.1" + } + }, + "globby": { + "version": "11.0.4", + "resolved": "https://registry.npmjs.org/globby/-/globby-11.0.4.tgz", + "integrity": "sha512-9O4MVG9ioZJ08ffbcyVYyLOJLk5JQ688pJ4eMGLpdWLHq/Wr1D9BlriLQyL0E+jbkuePVZXYFj47QM/v093wHg==", + "dev": true, + "requires": { + "array-union": "^2.1.0", + "dir-glob": "^3.0.1", + "fast-glob": "^3.1.1", + "ignore": "^5.1.4", + "merge2": "^1.3.0", + "slash": "^3.0.0" + } + }, + "ignore": { + "version": "5.1.8", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.1.8.tgz", + "integrity": "sha512-BMpfD7PpiETpBl/A6S498BaIJ6Y/ABT93ETbby2fP00v4EbvPBXWEoaR1UBPKs3iR53pJY7EtZk5KACI57i1Uw==", + "dev": true + }, + "is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true + }, + "lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "requires": { + "yallist": "^4.0.0" + } + }, + "micromatch": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.4.tgz", + "integrity": "sha512-pRmzw/XUcwXGpD9aI9q/0XOwLNygjETJ8y0ao0wdqprrzDa4YnxLcz7fQRZr8voh8V10kGhABbNcHVk5wHgWwg==", + "dev": true, + "requires": { + "braces": "^3.0.1", + "picomatch": "^2.2.3" + } + }, + "semver": { + "version": "7.3.5", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", + "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", + "dev": true, + "requires": { + "lru-cache": "^6.0.0" + } + }, + "slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "dev": true + }, + "to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dev": true, + "requires": { + "is-number": "^7.0.0" + } + } + } + }, + "@typescript-eslint/scope-manager": { + "version": "4.26.1", + "dev": true, + "requires": { + "@typescript-eslint/types": "4.26.1", + "@typescript-eslint/visitor-keys": "4.26.1" + } + }, + "@typescript-eslint/types": { + "version": "4.26.1", + "dev": true + }, + "@typescript-eslint/typescript-estree": { + "version": "4.26.1", + "dev": true, + "requires": { + "@typescript-eslint/types": "4.26.1", + "@typescript-eslint/visitor-keys": "4.26.1", + "debug": "^4.3.1", + "globby": "^11.0.3", + "is-glob": "^4.0.1", + "semver": "^7.3.5", + "tsutils": "^3.21.0" + }, + "dependencies": { + "array-union": { + "version": "2.1.0", + "dev": true + }, + "braces": { + "version": "3.0.2", + "dev": true, + "requires": { + "fill-range": "^7.0.1" + } + }, + "dir-glob": { + "version": "3.0.1", + "dev": true, + "requires": { + "path-type": "^4.0.0" + } + }, + "fast-glob": { + "version": "3.2.5", + "dev": true, + "requires": { + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.0", + "merge2": "^1.3.0", + "micromatch": "^4.0.2", + "picomatch": "^2.2.1" + } + }, + "fill-range": { + "version": "7.0.1", + "dev": true, + "requires": { + "to-regex-range": "^5.0.1" + } + }, + "glob-parent": { + "version": "5.1.2", + "dev": true, + "requires": { + "is-glob": "^4.0.1" + } + }, + "globby": { + "version": "11.0.3", + "dev": true, + "requires": { + "array-union": "^2.1.0", + "dir-glob": "^3.0.1", + "fast-glob": "^3.1.1", + "ignore": "^5.1.4", + "merge2": "^1.3.0", + "slash": "^3.0.0" + } + }, + "ignore": { + "version": "5.1.8", + "dev": true + }, + "is-number": { + "version": "7.0.0", + "dev": true + }, + "lru-cache": { + "version": "6.0.0", + "dev": true, + "requires": { + "yallist": "^4.0.0" + } + }, + "micromatch": { + "version": "4.0.4", + "dev": true, + "requires": { + "braces": "^3.0.1", + "picomatch": "^2.2.3" + } + }, + "semver": { + "version": "7.3.5", + "dev": true, + "requires": { + "lru-cache": "^6.0.0" + } + }, + "slash": { + "version": "3.0.0", + "dev": true + }, + "to-regex-range": { + "version": "5.0.1", + "dev": true, + "requires": { + "is-number": "^7.0.0" + } + } + } + }, + "@typescript-eslint/visitor-keys": { + "version": "4.26.1", + "dev": true, + "requires": { + "@typescript-eslint/types": "4.26.1", + "eslint-visitor-keys": "^2.0.0" + }, + "dependencies": { + "eslint-visitor-keys": { + "version": "2.1.0", + "dev": true + } + } + }, + "@vue/babel-helper-vue-jsx-merge-props": { + "version": "1.2.1", + "dev": true + }, + "@vue/babel-helper-vue-transform-on": { + "version": "1.0.2", + "dev": true + }, + "@vue/babel-plugin-jsx": { + "version": "1.0.6", + "dev": true, + "requires": { + "@babel/helper-module-imports": "^7.0.0", + "@babel/plugin-syntax-jsx": "^7.0.0", + "@babel/template": "^7.0.0", + "@babel/traverse": "^7.0.0", + "@babel/types": "^7.0.0", + "@vue/babel-helper-vue-transform-on": "^1.0.2", + "camelcase": "^6.0.0", + "html-tags": "^3.1.0", + "svg-tags": "^1.0.0" + }, + "dependencies": { + "camelcase": { + "version": "6.2.0", + "dev": true + }, + "html-tags": { + "version": "3.1.0", + "dev": true + } + } + }, + "@vue/babel-plugin-transform-vue-jsx": { + "version": "1.2.1", + "dev": true, + "requires": { + "@babel/helper-module-imports": "^7.0.0", + "@babel/plugin-syntax-jsx": "^7.2.0", + "@vue/babel-helper-vue-jsx-merge-props": "^1.2.1", + "html-tags": "^2.0.0", + "lodash.kebabcase": "^4.1.1", + "svg-tags": "^1.0.0" + } + }, + "@vue/babel-preset-app": { + "version": "4.5.13", + "dev": true, + "requires": { + "@babel/core": "^7.11.0", + "@babel/helper-compilation-targets": "^7.9.6", + "@babel/helper-module-imports": "^7.8.3", + "@babel/plugin-proposal-class-properties": "^7.8.3", + "@babel/plugin-proposal-decorators": "^7.8.3", + "@babel/plugin-syntax-dynamic-import": "^7.8.3", + "@babel/plugin-syntax-jsx": "^7.8.3", + "@babel/plugin-transform-runtime": "^7.11.0", + "@babel/preset-env": "^7.11.0", + "@babel/runtime": "^7.11.0", + "@vue/babel-plugin-jsx": "^1.0.3", + "@vue/babel-preset-jsx": "^1.2.4", + "babel-plugin-dynamic-import-node": "^2.3.3", + "core-js": "^3.6.5", + "core-js-compat": "^3.6.5", + "semver": "^6.1.0" + } + }, + "@vue/babel-preset-jsx": { + "version": "1.2.4", + "dev": true, + "requires": { + "@vue/babel-helper-vue-jsx-merge-props": "^1.2.1", + "@vue/babel-plugin-transform-vue-jsx": "^1.2.1", + "@vue/babel-sugar-composition-api-inject-h": "^1.2.1", + "@vue/babel-sugar-composition-api-render-instance": "^1.2.4", + "@vue/babel-sugar-functional-vue": "^1.2.2", + "@vue/babel-sugar-inject-h": "^1.2.2", + "@vue/babel-sugar-v-model": "^1.2.3", + "@vue/babel-sugar-v-on": "^1.2.3" + } + }, + "@vue/babel-sugar-composition-api-inject-h": { + "version": "1.2.1", + "dev": true, + "requires": { + "@babel/plugin-syntax-jsx": "^7.2.0" + } + }, + "@vue/babel-sugar-composition-api-render-instance": { + "version": "1.2.4", + "dev": true, + "requires": { + "@babel/plugin-syntax-jsx": "^7.2.0" + } + }, + "@vue/babel-sugar-functional-vue": { + "version": "1.2.2", + "dev": true, + "requires": { + "@babel/plugin-syntax-jsx": "^7.2.0" + } + }, + "@vue/babel-sugar-inject-h": { + "version": "1.2.2", + "dev": true, + "requires": { + "@babel/plugin-syntax-jsx": "^7.2.0" + } + }, + "@vue/babel-sugar-v-model": { + "version": "1.2.3", + "dev": true, + "requires": { + "@babel/plugin-syntax-jsx": "^7.2.0", + "@vue/babel-helper-vue-jsx-merge-props": "^1.2.1", + "@vue/babel-plugin-transform-vue-jsx": "^1.2.1", + "camelcase": "^5.0.0", + "html-tags": "^2.0.0", + "svg-tags": "^1.0.0" + } + }, + "@vue/babel-sugar-v-on": { + "version": "1.2.3", + "dev": true, + "requires": { + "@babel/plugin-syntax-jsx": "^7.2.0", + "@vue/babel-plugin-transform-vue-jsx": "^1.2.1", + "camelcase": "^5.0.0" + } + }, + "@vue/cli-overlay": { + "version": "4.5.13", + "dev": true + }, + "@vue/cli-plugin-babel": { + "version": "4.5.13", + "dev": true, + "requires": { + "@babel/core": "^7.11.0", + "@vue/babel-preset-app": "^4.5.13", + "@vue/cli-shared-utils": "^4.5.13", + "babel-loader": "^8.1.0", + "cache-loader": "^4.1.0", + "thread-loader": "^2.1.3", + "webpack": "^4.0.0" + } + }, + "@vue/cli-plugin-eslint": { + "version": "4.5.13", + "dev": true, + "requires": { + "@vue/cli-shared-utils": "^4.5.13", + "eslint-loader": "^2.2.1", + "globby": "^9.2.0", + "inquirer": "^7.1.0", + "webpack": "^4.0.0", + "yorkie": "^2.0.0" + } + }, + "@vue/cli-plugin-pwa": { + "version": "4.5.13", + "dev": true, + "requires": { + "@vue/cli-shared-utils": "^4.5.13", + "webpack": "^4.0.0", + "workbox-webpack-plugin": "^4.3.1" + }, + "dependencies": { + "crypto-random-string": { + "version": "1.0.0", + "dev": true + }, + "source-map": { + "version": "0.7.3", + "dev": true + }, + "strip-comments": { + "version": "1.0.2", + "dev": true, + "requires": { + "babel-extract-comments": "^1.0.0", + "babel-plugin-transform-object-rest-spread": "^6.26.0" + } + }, + "temp-dir": { + "version": "1.0.0", + "dev": true + }, + "tempy": { + "version": "0.3.0", + "dev": true, + "requires": { + "temp-dir": "^1.0.0", + "type-fest": "^0.3.1", + "unique-string": "^1.0.0" + } + }, + "type-fest": { + "version": "0.3.1", + "dev": true + }, + "unique-string": { + "version": "1.0.0", + "dev": true, + "requires": { + "crypto-random-string": "^1.0.0" + } + }, + "workbox-broadcast-update": { + "version": "5.1.4", + "dev": true, + "requires": { + "workbox-core": "^5.1.4" + } + }, + "workbox-build": { + "version": "5.1.4", + "dev": true, + "requires": { + "@babel/core": "^7.8.4", + "@babel/preset-env": "^7.8.4", + "@babel/runtime": "^7.8.4", + "@hapi/joi": "^15.1.0", + "@rollup/plugin-node-resolve": "^7.1.1", + "@rollup/plugin-replace": "^2.3.1", + "@surma/rollup-plugin-off-main-thread": "^1.1.1", + "common-tags": "^1.8.0", + "fast-json-stable-stringify": "^2.1.0", + "fs-extra": "^8.1.0", + "glob": "^7.1.6", + "lodash.template": "^4.5.0", + "pretty-bytes": "^5.3.0", + "rollup": "^1.31.1", + "rollup-plugin-babel": "^4.3.3", + "rollup-plugin-terser": "^5.3.1", + "source-map": "^0.7.3", + "source-map-url": "^0.4.0", + "stringify-object": "^3.3.0", + "strip-comments": "^1.0.2", + "tempy": "^0.3.0", + "upath": "^1.2.0", + "workbox-background-sync": "^5.1.4", + "workbox-broadcast-update": "^5.1.4", + "workbox-cacheable-response": "^5.1.4", + "workbox-core": "^5.1.4", + "workbox-expiration": "^5.1.4", + "workbox-google-analytics": "^5.1.4", + "workbox-navigation-preload": "^5.1.4", + "workbox-precaching": "^5.1.4", + "workbox-range-requests": "^5.1.4", + "workbox-routing": "^5.1.4", + "workbox-strategies": "^5.1.4", + "workbox-streams": "^5.1.4", + "workbox-sw": "^5.1.4", + "workbox-window": "^5.1.4" + } + }, + "workbox-cacheable-response": { + "version": "5.1.4", + "dev": true, + "requires": { + "workbox-core": "^5.1.4" + } + }, + "workbox-core": { + "version": "5.1.4", + "dev": true + }, + "workbox-expiration": { + "version": "5.1.4", + "dev": true, + "requires": { + "workbox-core": "^5.1.4" + } + }, + "workbox-google-analytics": { + "version": "5.1.4", + "dev": true, + "requires": { + "workbox-background-sync": "^5.1.4", + "workbox-core": "^5.1.4", + "workbox-routing": "^5.1.4", + "workbox-strategies": "^5.1.4" + } + }, + "workbox-navigation-preload": { + "version": "5.1.4", + "dev": true, + "requires": { + "workbox-core": "^5.1.4" + } + }, + "workbox-precaching": { + "version": "5.1.4", + "dev": true, + "requires": { + "workbox-core": "^5.1.4" + } + }, + "workbox-range-requests": { + "version": "5.1.4", + "dev": true, + "requires": { + "workbox-core": "^5.1.4" + } + }, + "workbox-routing": { + "version": "5.1.4", + "dev": true, + "requires": { + "workbox-core": "^5.1.4" + } + }, + "workbox-strategies": { + "version": "5.1.4", + "dev": true, + "requires": { + "workbox-core": "^5.1.4", + "workbox-routing": "^5.1.4" + } + }, + "workbox-streams": { + "version": "5.1.4", + "dev": true, + "requires": { + "workbox-core": "^5.1.4", + "workbox-routing": "^5.1.4" + } + }, + "workbox-sw": { + "version": "5.1.4", + "dev": true + }, + "workbox-webpack-plugin": { + "version": "5.1.4", + "dev": true, + "requires": { + "@babel/runtime": "^7.5.5", + "fast-json-stable-stringify": "^2.0.0", + "source-map-url": "^0.4.0", + "upath": "^1.1.2", + "webpack-sources": "^1.3.0", + "workbox-build": "^5.1.4" + } + }, + "workbox-window": { + "version": "5.1.4", + "dev": true, + "requires": { + "workbox-core": "^5.1.4" + } + } + } + }, + "@vue/cli-plugin-router": { + "version": "4.5.13", + "dev": true, + "requires": { + "@vue/cli-shared-utils": "^4.5.13" + } + }, + "@vue/cli-plugin-typescript": { + "version": "4.5.13", + "dev": true, + "requires": { + "@types/webpack-env": "^1.15.2", + "@vue/cli-shared-utils": "^4.5.13", + "cache-loader": "^4.1.0", + "fork-ts-checker-webpack-plugin": "^3.1.1", + "fork-ts-checker-webpack-plugin-v5": "npm:fork-ts-checker-webpack-plugin@^5.0.11", + "globby": "^9.2.0", + "thread-loader": "^2.1.3", + "ts-loader": "^6.2.2", + "tslint": "^5.20.1", + "webpack": "^4.0.0", + "yorkie": "^2.0.0" + } + }, + "@vue/cli-plugin-vuex": { + "version": "4.5.13", + "dev": true, + "requires": {} + }, + "@vue/cli-service": { + "version": "4.5.13", + "dev": true, + "requires": { + "@intervolga/optimize-cssnano-plugin": "^1.0.5", + "@soda/friendly-errors-webpack-plugin": "^1.7.1", + "@soda/get-current-script": "^1.0.0", + "@types/minimist": "^1.2.0", + "@types/webpack": "^4.0.0", + "@types/webpack-dev-server": "^3.11.0", + "@vue/cli-overlay": "^4.5.13", + "@vue/cli-plugin-router": "^4.5.13", + "@vue/cli-plugin-vuex": "^4.5.13", + "@vue/cli-shared-utils": "^4.5.13", + "@vue/component-compiler-utils": "^3.1.2", + "@vue/preload-webpack-plugin": "^1.1.0", + "@vue/web-component-wrapper": "^1.2.0", + "acorn": "^7.4.0", + "acorn-walk": "^7.1.1", + "address": "^1.1.2", + "autoprefixer": "^9.8.6", + "browserslist": "^4.12.0", + "cache-loader": "^4.1.0", + "case-sensitive-paths-webpack-plugin": "^2.3.0", + "cli-highlight": "^2.1.4", + "clipboardy": "^2.3.0", + "cliui": "^6.0.0", + "copy-webpack-plugin": "^5.1.1", + "css-loader": "^3.5.3", + "cssnano": "^4.1.10", + "debug": "^4.1.1", + "default-gateway": "^5.0.5", + "dotenv": "^8.2.0", + "dotenv-expand": "^5.1.0", + "file-loader": "^4.2.0", + "fs-extra": "^7.0.1", + "globby": "^9.2.0", + "hash-sum": "^2.0.0", + "html-webpack-plugin": "^3.2.0", + "launch-editor-middleware": "^2.2.1", + "lodash.defaultsdeep": "^4.6.1", + "lodash.mapvalues": "^4.6.0", + "lodash.transform": "^4.6.0", + "mini-css-extract-plugin": "^0.9.0", + "minimist": "^1.2.5", + "pnp-webpack-plugin": "^1.6.4", + "portfinder": "^1.0.26", + "postcss-loader": "^3.0.0", + "ssri": "^8.0.1", + "terser-webpack-plugin": "^1.4.4", + "thread-loader": "^2.1.3", + "url-loader": "^2.2.0", + "vue-loader": "^15.9.2", + "vue-loader-v16": "npm:vue-loader@^16.1.0", + "vue-style-loader": "^4.1.2", + "webpack": "^4.0.0", + "webpack-bundle-analyzer": "^3.8.0", + "webpack-chain": "^6.4.0", + "webpack-dev-server": "^3.11.0", + "webpack-merge": "^4.2.2" + }, + "dependencies": { + "cliui": { + "version": "6.0.0", + "dev": true, + "requires": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^6.2.0" + } + }, + "fs-extra": { + "version": "7.0.1", + "dev": true, + "requires": { + "graceful-fs": "^4.1.2", + "jsonfile": "^4.0.0", + "universalify": "^0.1.0" + } + }, + "hash-sum": { + "version": "2.0.0", + "dev": true + }, + "wrap-ansi": { + "version": "6.2.0", + "dev": true, + "requires": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + } + } + } + }, + "@vue/cli-shared-utils": { + "version": "4.5.13", + "dev": true, + "requires": { + "@hapi/joi": "^15.0.1", + "chalk": "^2.4.2", + "execa": "^1.0.0", + "launch-editor": "^2.2.1", + "lru-cache": "^5.1.1", + "node-ipc": "^9.1.1", + "open": "^6.3.0", + "ora": "^3.4.0", + "read-pkg": "^5.1.1", + "request": "^2.88.2", + "semver": "^6.1.0", + "strip-ansi": "^6.0.0" + } + }, + "@vue/compiler-core": { + "version": "3.1.1", + "dev": true, + "requires": { + "@babel/parser": "^7.12.0", + "@babel/types": "^7.12.0", + "@vue/shared": "3.1.1", + "estree-walker": "^2.0.1", + "source-map": "^0.6.1" + } + }, + "@vue/compiler-dom": { + "version": "3.1.1", + "dev": true, + "requires": { + "@vue/compiler-core": "3.1.1", + "@vue/shared": "3.1.1" + } + }, + "@vue/compiler-sfc": { + "version": "3.1.1", + "dev": true, + "requires": { + "@babel/parser": "^7.13.9", + "@babel/types": "^7.13.0", + "@vue/compiler-core": "3.1.1", + "@vue/compiler-dom": "3.1.1", + "@vue/compiler-ssr": "3.1.1", + "@vue/shared": "3.1.1", + "consolidate": "^0.16.0", + "estree-walker": "^2.0.1", + "hash-sum": "^2.0.0", + "lru-cache": "^5.1.1", + "magic-string": "^0.25.7", + "merge-source-map": "^1.1.0", + "postcss": "^8.1.10", + "postcss-modules": "^4.0.0", + "postcss-selector-parser": "^6.0.4", + "source-map": "^0.6.1" + }, + "dependencies": { + "hash-sum": { + "version": "2.0.0", + "dev": true + }, + "icss-utils": { + "version": "5.1.0", + "dev": true, + "requires": {} + }, + "postcss": { + "version": "8.3.0", + "dev": true, + "requires": { + "colorette": "^1.2.2", + "nanoid": "^3.1.23", + "source-map-js": "^0.6.2" + } + }, + "postcss-modules": { + "version": "4.1.3", + "dev": true, + "requires": { + "generic-names": "^2.0.1", + "icss-replace-symbols": "^1.1.0", + "lodash.camelcase": "^4.3.0", + "postcss-modules-extract-imports": "^3.0.0", + "postcss-modules-local-by-default": "^4.0.0", + "postcss-modules-scope": "^3.0.0", + "postcss-modules-values": "^4.0.0", + "string-hash": "^1.1.1" + } + }, + "postcss-modules-extract-imports": { + "version": "3.0.0", + "dev": true, + "requires": {} + }, + "postcss-modules-local-by-default": { + "version": "4.0.0", + "dev": true, + "requires": { + "icss-utils": "^5.0.0", + "postcss-selector-parser": "^6.0.2", + "postcss-value-parser": "^4.1.0" + } + }, + "postcss-modules-scope": { + "version": "3.0.0", + "dev": true, + "requires": { + "postcss-selector-parser": "^6.0.4" + } + }, + "postcss-modules-values": { + "version": "4.0.0", + "dev": true, + "requires": { + "icss-utils": "^5.0.0" + } + }, + "postcss-value-parser": { + "version": "4.1.0", + "dev": true + } + } + }, + "@vue/compiler-ssr": { + "version": "3.1.1", + "dev": true, + "requires": { + "@vue/compiler-dom": "3.1.1", + "@vue/shared": "3.1.1" + } + }, + "@vue/component-compiler-utils": { + "version": "3.2.0", + "dev": true, + "requires": { + "consolidate": "^0.15.1", + "hash-sum": "^1.0.2", + "lru-cache": "^4.1.2", + "merge-source-map": "^1.1.0", + "postcss": "^7.0.14", + "postcss-selector-parser": "^6.0.2", + "prettier": "^1.18.2", + "source-map": "~0.6.1", + "vue-template-es2015-compiler": "^1.9.0" + }, + "dependencies": { + "consolidate": { + "version": "0.15.1", + "dev": true, + "requires": { + "bluebird": "^3.1.1" + } + }, + "lru-cache": { + "version": "4.1.5", + "dev": true, + "requires": { + "pseudomap": "^1.0.2", + "yallist": "^2.1.2" + } + }, + "yallist": { + "version": "2.1.2", + "dev": true + } + } + }, + "@vue/eslint-config-typescript": { + "version": "7.0.0", + "dev": true, + "requires": { + "vue-eslint-parser": "^7.0.0" + } + }, + "@vue/preload-webpack-plugin": { + "version": "1.1.2", + "dev": true, + "requires": {} + }, + "@vue/shared": { + "version": "3.1.1", + "dev": true + }, + "@vue/web-component-wrapper": { + "version": "1.3.0", + "dev": true + }, + "@vuepress/markdown": { + "version": "1.8.2", + "resolved": "https://registry.npmjs.org/@vuepress/markdown/-/markdown-1.8.2.tgz", + "integrity": "sha512-zznBHVqW+iBkznF/BO/GY9RFu53khyl0Ey0PnGqvwCJpRLNan6y5EXgYumtjw2GSYn5nDTTALYxtyNBdz64PKg==", + "requires": { + "@vuepress/shared-utils": "1.8.2", + "markdown-it": "^8.4.1", + "markdown-it-anchor": "^5.0.2", + "markdown-it-chain": "^1.3.0", + "markdown-it-emoji": "^1.4.0", + "markdown-it-table-of-contents": "^0.4.0", + "prismjs": "^1.13.0" + }, + "dependencies": { + "entities": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/entities/-/entities-1.1.2.tgz", + "integrity": "sha512-f2LZMYl1Fzu7YSBKg+RoROelpOaNrcGmE9AZubeDfrCEia483oW4MI4VyFd5VNHIgQ/7qm1I0wUHK1eJnn2y2w==" + }, + "linkify-it": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/linkify-it/-/linkify-it-2.2.0.tgz", + "integrity": "sha512-GnAl/knGn+i1U/wjBz3akz2stz+HrHLsxMwHQGofCDfPvlf+gDKN58UtfmUquTY4/MXeE2x7k19KQmeoZi94Iw==", + "requires": { + "uc.micro": "^1.0.1" + } + }, + "markdown-it": { + "version": "8.4.2", + "resolved": "https://registry.npmjs.org/markdown-it/-/markdown-it-8.4.2.tgz", + "integrity": "sha512-GcRz3AWTqSUphY3vsUqQSFMbgR38a4Lh3GWlHRh/7MRwz8mcu9n2IO7HOh+bXHrR9kOPDl5RNCaEsrneb+xhHQ==", + "requires": { + "argparse": "^1.0.7", + "entities": "~1.1.1", + "linkify-it": "^2.0.0", + "mdurl": "^1.0.1", + "uc.micro": "^1.0.5" + } + } + } + }, + "@vuepress/shared-utils": { + "version": "1.8.2", + "resolved": "https://registry.npmjs.org/@vuepress/shared-utils/-/shared-utils-1.8.2.tgz", + "integrity": "sha512-6kGubc7iBDWruEBUU7yR+sQ++SOhMuvKWvWeTZJKRZedthycdzYz7QVpua0FaZSAJm5/dIt8ymU4WQvxTtZgTQ==", + "requires": { + "chalk": "^2.3.2", + "escape-html": "^1.0.3", + "fs-extra": "^7.0.1", + "globby": "^9.2.0", + "gray-matter": "^4.0.1", + "hash-sum": "^1.0.2", + "semver": "^6.0.0", + "toml": "^3.0.0", + "upath": "^1.1.0" + }, + "dependencies": { + "fs-extra": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-7.0.1.tgz", + "integrity": "sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw==", + "requires": { + "graceful-fs": "^4.1.2", + "jsonfile": "^4.0.0", + "universalify": "^0.1.0" + } + } + } + }, + "@webassemblyjs/ast": { + "version": "1.9.0", + "requires": { + "@webassemblyjs/helper-module-context": "1.9.0", + "@webassemblyjs/helper-wasm-bytecode": "1.9.0", + "@webassemblyjs/wast-parser": "1.9.0" + } + }, + "@webassemblyjs/floating-point-hex-parser": { + "version": "1.9.0" + }, + "@webassemblyjs/helper-api-error": { + "version": "1.9.0" + }, + "@webassemblyjs/helper-buffer": { + "version": "1.9.0" + }, + "@webassemblyjs/helper-code-frame": { + "version": "1.9.0", + "requires": { + "@webassemblyjs/wast-printer": "1.9.0" + } + }, + "@webassemblyjs/helper-fsm": { + "version": "1.9.0" + }, + "@webassemblyjs/helper-module-context": { + "version": "1.9.0", + "requires": { + "@webassemblyjs/ast": "1.9.0" + } + }, + "@webassemblyjs/helper-wasm-bytecode": { + "version": "1.9.0" + }, + "@webassemblyjs/helper-wasm-section": { + "version": "1.9.0", + "requires": { + "@webassemblyjs/ast": "1.9.0", + "@webassemblyjs/helper-buffer": "1.9.0", + "@webassemblyjs/helper-wasm-bytecode": "1.9.0", + "@webassemblyjs/wasm-gen": "1.9.0" + } + }, + "@webassemblyjs/ieee754": { + "version": "1.9.0", + "requires": { + "@xtuc/ieee754": "^1.2.0" + } + }, + "@webassemblyjs/leb128": { + "version": "1.9.0", + "requires": { + "@xtuc/long": "4.2.2" + } + }, + "@webassemblyjs/utf8": { + "version": "1.9.0" + }, + "@webassemblyjs/wasm-edit": { + "version": "1.9.0", + "requires": { + "@webassemblyjs/ast": "1.9.0", + "@webassemblyjs/helper-buffer": "1.9.0", + "@webassemblyjs/helper-wasm-bytecode": "1.9.0", + "@webassemblyjs/helper-wasm-section": "1.9.0", + "@webassemblyjs/wasm-gen": "1.9.0", + "@webassemblyjs/wasm-opt": "1.9.0", + "@webassemblyjs/wasm-parser": "1.9.0", + "@webassemblyjs/wast-printer": "1.9.0" + } + }, + "@webassemblyjs/wasm-gen": { + "version": "1.9.0", + "requires": { + "@webassemblyjs/ast": "1.9.0", + "@webassemblyjs/helper-wasm-bytecode": "1.9.0", + "@webassemblyjs/ieee754": "1.9.0", + "@webassemblyjs/leb128": "1.9.0", + "@webassemblyjs/utf8": "1.9.0" + } + }, + "@webassemblyjs/wasm-opt": { + "version": "1.9.0", + "requires": { + "@webassemblyjs/ast": "1.9.0", + "@webassemblyjs/helper-buffer": "1.9.0", + "@webassemblyjs/wasm-gen": "1.9.0", + "@webassemblyjs/wasm-parser": "1.9.0" + } + }, + "@webassemblyjs/wasm-parser": { + "version": "1.9.0", + "requires": { + "@webassemblyjs/ast": "1.9.0", + "@webassemblyjs/helper-api-error": "1.9.0", + "@webassemblyjs/helper-wasm-bytecode": "1.9.0", + "@webassemblyjs/ieee754": "1.9.0", + "@webassemblyjs/leb128": "1.9.0", + "@webassemblyjs/utf8": "1.9.0" + } + }, + "@webassemblyjs/wast-parser": { + "version": "1.9.0", + "requires": { + "@webassemblyjs/ast": "1.9.0", + "@webassemblyjs/floating-point-hex-parser": "1.9.0", + "@webassemblyjs/helper-api-error": "1.9.0", + "@webassemblyjs/helper-code-frame": "1.9.0", + "@webassemblyjs/helper-fsm": "1.9.0", + "@xtuc/long": "4.2.2" + } + }, + "@webassemblyjs/wast-printer": { + "version": "1.9.0", + "requires": { + "@webassemblyjs/ast": "1.9.0", + "@webassemblyjs/wast-parser": "1.9.0", + "@xtuc/long": "4.2.2" + } + }, + "@xtuc/ieee754": { + "version": "1.2.0" + }, + "@xtuc/long": { + "version": "4.2.2" + }, + "accepts": { + "version": "1.3.7", + "dev": true, + "requires": { + "mime-types": "~2.1.24", + "negotiator": "0.6.2" + } + }, + "acorn": { + "version": "7.4.1" + }, + "acorn-jsx": { + "version": "5.3.1", + "requires": {} + }, + "acorn-walk": { + "version": "7.2.0", + "dev": true + }, + "address": { + "version": "1.1.2", + "dev": true + }, + "ajv": { + "version": "6.12.6", + "requires": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + } + }, + "ajv-errors": { + "version": "1.0.1", + "requires": {} + }, + "ajv-keywords": { + "version": "3.5.2", + "requires": {} + }, + "alphanum-sort": { + "version": "1.0.2", + "dev": true + }, + "ansi-colors": { + "version": "4.1.1" + }, + "ansi-escapes": { + "version": "4.3.2", + "dev": true, + "requires": { + "type-fest": "^0.21.3" + }, + "dependencies": { + "type-fest": { + "version": "0.21.3", + "dev": true + } + } + }, + "ansi-html": { + "version": "0.0.7", + "dev": true + }, + "ansi-regex": { + "version": "2.1.1", + "dev": true + }, + "ansi-styles": { + "version": "4.3.0", + "requires": { + "color-convert": "^2.0.1" + }, + "dependencies": { + "color-convert": { + "version": "2.0.1", + "requires": { + "color-name": "~1.1.4" + } + } + } + }, + "any-promise": { + "version": "1.3.0", + "dev": true + }, + "anymatch": { + "version": "3.1.2", + "devOptional": true, + "requires": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + } + }, + "aproba": { + "version": "1.2.0" + }, + "arch": { + "version": "2.2.0", + "dev": true + }, + "argparse": { + "version": "1.0.10", + "requires": { + "sprintf-js": "~1.0.2" + } + }, + "arr-diff": { + "version": "4.0.0" + }, + "arr-flatten": { + "version": "1.1.0" + }, + "arr-union": { + "version": "3.1.0" + }, + "array-flatten": { + "version": "1.1.1", + "dev": true + }, + "array-union": { + "version": "1.0.2", + "requires": { + "array-uniq": "^1.0.1" + } + }, + "array-uniq": { + "version": "1.0.3" + }, + "array-unique": { + "version": "0.3.2" + }, + "asn1": { + "version": "0.2.4", + "dev": true, + "requires": { + "safer-buffer": "~2.1.0" + } + }, + "asn1.js": { + "version": "5.4.1", + "requires": { + "bn.js": "^4.0.0", + "inherits": "^2.0.1", + "minimalistic-assert": "^1.0.0", + "safer-buffer": "^2.1.0" + } + }, + "assert": { + "version": "1.5.0", + "requires": { + "object-assign": "^4.1.1", + "util": "0.10.3" + }, + "dependencies": { + "inherits": { + "version": "2.0.1" + }, + "util": { + "version": "0.10.3", + "requires": { + "inherits": "2.0.1" + } + } + } + }, + "assert-plus": { + "version": "1.0.0", + "dev": true + }, + "assign-symbols": { + "version": "1.0.0" + }, + "astral-regex": { + "version": "2.0.0" + }, + "async": { + "version": "2.6.3", + "dev": true, + "requires": { + "lodash": "^4.17.14" + } + }, + "async-each": { + "version": "1.0.3", + "devOptional": true + }, + "async-limiter": { + "version": "1.0.1", + "dev": true + }, + "asynckit": { + "version": "0.4.0", + "dev": true + }, + "at-least-node": { + "version": "1.0.0" + }, + "atob": { + "version": "2.1.2" + }, + "autoprefixer": { + "version": "9.8.6", + "dev": true, + "requires": { + "browserslist": "^4.12.0", + "caniuse-lite": "^1.0.30001109", + "colorette": "^1.2.1", + "normalize-range": "^0.1.2", + "num2fraction": "^1.2.2", + "postcss": "^7.0.32", + "postcss-value-parser": "^4.1.0" + }, + "dependencies": { + "postcss-value-parser": { + "version": "4.1.0", + "dev": true + } + } + }, + "aws-sign2": { + "version": "0.7.0", + "dev": true + }, + "aws4": { + "version": "1.11.0", + "dev": true + }, + "axios": { + "version": "0.21.4", + "resolved": "https://registry.npmjs.org/axios/-/axios-0.21.4.tgz", + "integrity": "sha512-ut5vewkiu8jjGBdqpM44XxjuCjq9LAKeHVmoVfHVzy8eHgxxq8SbAVQNovDA8mVi05kP0Ea/n/UzcSHcTJQfNg==", + "requires": { + "follow-redirects": "^1.14.0" + } + }, + "babel-code-frame": { + "version": "6.26.0", + "dev": true, + "requires": { + "chalk": "^1.1.3", + "esutils": "^2.0.2", + "js-tokens": "^3.0.2" + }, + "dependencies": { + "ansi-styles": { + "version": "2.2.1", + "dev": true + }, + "chalk": { + "version": "1.1.3", + "dev": true, + "requires": { + "ansi-styles": "^2.2.1", + "escape-string-regexp": "^1.0.2", + "has-ansi": "^2.0.0", + "strip-ansi": "^3.0.0", + "supports-color": "^2.0.0" + } + }, + "js-tokens": { + "version": "3.0.2", + "dev": true + }, + "strip-ansi": { + "version": "3.0.1", + "dev": true, + "requires": { + "ansi-regex": "^2.0.0" + } + }, + "supports-color": { + "version": "2.0.0", + "dev": true + } + } + }, + "babel-eslint": { + "version": "10.1.0", + "dev": true, + "requires": { + "@babel/code-frame": "^7.0.0", + "@babel/parser": "^7.7.0", + "@babel/traverse": "^7.7.0", + "@babel/types": "^7.7.0", + "eslint-visitor-keys": "^1.0.0", + "resolve": "^1.12.0" + } + }, + "babel-extract-comments": { + "version": "1.0.0", + "dev": true, + "requires": { + "babylon": "^6.18.0" + } + }, + "babel-helper-vue-jsx-merge-props": { + "version": "2.0.3" + }, + "babel-loader": { + "version": "8.2.2", + "dev": true, + "requires": { + "find-cache-dir": "^3.3.1", + "loader-utils": "^1.4.0", + "make-dir": "^3.1.0", + "schema-utils": "^2.6.5" + }, + "dependencies": { + "find-cache-dir": { + "version": "3.3.1", + "dev": true, + "requires": { + "commondir": "^1.0.1", + "make-dir": "^3.0.2", + "pkg-dir": "^4.1.0" + } + }, + "find-up": { + "version": "4.1.0", + "dev": true, + "requires": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + } + }, + "locate-path": { + "version": "5.0.0", + "dev": true, + "requires": { + "p-locate": "^4.1.0" + } + }, + "p-locate": { + "version": "4.1.0", + "dev": true, + "requires": { + "p-limit": "^2.2.0" + } + }, + "path-exists": { + "version": "4.0.0", + "dev": true + }, + "pkg-dir": { + "version": "4.2.0", + "dev": true, + "requires": { + "find-up": "^4.0.0" + } + }, + "schema-utils": { + "version": "2.7.1", + "dev": true, + "requires": { + "@types/json-schema": "^7.0.5", + "ajv": "^6.12.4", + "ajv-keywords": "^3.5.2" + } + } + } + }, + "babel-plugin-dynamic-import-node": { + "version": "2.3.3", + "requires": { + "object.assign": "^4.1.0" + } + }, + "babel-plugin-polyfill-corejs2": { + "version": "0.2.2", + "requires": { + "@babel/compat-data": "^7.13.11", + "@babel/helper-define-polyfill-provider": "^0.2.2", + "semver": "^6.1.1" + } + }, + "babel-plugin-polyfill-corejs3": { + "version": "0.2.2", + "requires": { + "@babel/helper-define-polyfill-provider": "^0.2.2", + "core-js-compat": "^3.9.1" + } + }, + "babel-plugin-polyfill-regenerator": { + "version": "0.2.2", + "requires": { + "@babel/helper-define-polyfill-provider": "^0.2.2" + } + }, + "babel-plugin-syntax-object-rest-spread": { + "version": "6.13.0", + "dev": true + }, + "babel-plugin-transform-object-rest-spread": { + "version": "6.26.0", + "dev": true, + "requires": { + "babel-plugin-syntax-object-rest-spread": "^6.8.0", + "babel-runtime": "^6.26.0" + } + }, + "babel-runtime": { + "version": "6.26.0", + "dev": true, + "requires": { + "core-js": "^2.4.0", + "regenerator-runtime": "^0.11.0" + }, + "dependencies": { + "core-js": { + "version": "2.6.12", + "dev": true + }, + "regenerator-runtime": { + "version": "0.11.1", + "dev": true + } + } + }, + "babylon": { + "version": "6.18.0", + "dev": true + }, + "balanced-match": { + "version": "1.0.2" + }, + "base": { + "version": "0.11.2", + "requires": { + "cache-base": "^1.0.1", + "class-utils": "^0.3.5", + "component-emitter": "^1.2.1", + "define-property": "^1.0.0", + "isobject": "^3.0.1", + "mixin-deep": "^1.2.0", + "pascalcase": "^0.1.1" + }, + "dependencies": { + "define-property": { + "version": "1.0.0", + "requires": { + "is-descriptor": "^1.0.0" + } + } + } + }, + "base64-js": { + "version": "1.5.1" + }, + "batch": { + "version": "0.6.1", + "dev": true + }, + "bcrypt-pbkdf": { + "version": "1.0.2", + "dev": true, + "requires": { + "tweetnacl": "^0.14.3" + } + }, + "bfj": { + "version": "6.1.2", + "dev": true, + "requires": { + "bluebird": "^3.5.5", + "check-types": "^8.0.3", + "hoopy": "^0.1.4", + "tryer": "^1.0.1" + } + }, + "big.js": { + "version": "5.2.2" + }, + "binary-extensions": { + "version": "1.13.1", + "devOptional": true + }, + "bluebird": { + "version": "3.7.2" + }, + "bn.js": { + "version": "4.12.0" + }, + "body-parser": { + "version": "1.19.0", + "dev": true, + "requires": { + "bytes": "3.1.0", + "content-type": "~1.0.4", + "debug": "2.6.9", + "depd": "~1.1.2", + "http-errors": "1.7.2", + "iconv-lite": "0.4.24", + "on-finished": "~2.3.0", + "qs": "6.7.0", + "raw-body": "2.4.0", + "type-is": "~1.6.17" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "ms": { + "version": "2.0.0", + "dev": true + } + } + }, + "bonjour": { + "version": "3.5.0", + "dev": true, + "requires": { + "array-flatten": "^2.1.0", + "deep-equal": "^1.0.1", + "dns-equal": "^1.0.0", + "dns-txt": "^2.0.2", + "multicast-dns": "^6.0.1", + "multicast-dns-service-types": "^1.1.0" + }, + "dependencies": { + "array-flatten": { + "version": "2.1.2", + "dev": true + } + } + }, + "boolbase": { + "version": "1.0.0", + "dev": true + }, + "bootstrap": { + "version": "4.6.0", + "requires": {} + }, + "bootstrap-vue": { + "version": "2.21.2", + "requires": { + "@nuxt/opencollective": "^0.3.2", + "bootstrap": ">=4.5.3 <5.0.0", + "popper.js": "^1.16.1", + "portal-vue": "^2.1.7", + "vue-functional-data-merge": "^3.1.0" + } + }, + "brace-expansion": { + "version": "1.1.11", + "requires": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "braces": { + "version": "2.3.2", + "requires": { + "arr-flatten": "^1.1.0", + "array-unique": "^0.3.2", + "extend-shallow": "^2.0.1", + "fill-range": "^4.0.0", + "isobject": "^3.0.1", + "repeat-element": "^1.1.2", + "snapdragon": "^0.8.1", + "snapdragon-node": "^2.0.1", + "split-string": "^3.0.2", + "to-regex": "^3.0.1" + } + }, + "brorand": { + "version": "1.1.0" + }, + "browserify-aes": { + "version": "1.2.0", + "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", + "requires": { + "browserify-aes": "^1.0.4", + "browserify-des": "^1.0.0", + "evp_bytestokey": "^1.0.0" + } + }, + "browserify-des": { + "version": "1.0.2", + "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", + "requires": { + "bn.js": "^5.0.0", + "randombytes": "^2.0.1" + }, + "dependencies": { + "bn.js": { + "version": "5.2.0" + } + } + }, + "browserify-sign": { + "version": "4.2.1", + "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": { + "bn.js": { + "version": "5.2.0" + }, + "readable-stream": { + "version": "3.6.0", + "requires": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + } + } + } + }, + "browserify-zlib": { + "version": "0.2.0", + "requires": { + "pako": "~1.0.5" + } + }, + "browserslist": { + "version": "4.16.6", + "requires": { + "caniuse-lite": "^1.0.30001219", + "colorette": "^1.2.2", + "electron-to-chromium": "^1.3.723", + "escalade": "^3.1.1", + "node-releases": "^1.1.71" + } + }, + "buffer": { + "version": "4.9.2", + "requires": { + "base64-js": "^1.0.2", + "ieee754": "^1.1.4", + "isarray": "^1.0.0" + } + }, + "buffer-from": { + "version": "1.1.1" + }, + "buffer-indexof": { + "version": "1.1.1", + "dev": true + }, + "buffer-json": { + "version": "2.0.0", + "dev": true + }, + "buffer-xor": { + "version": "1.0.3" + }, + "builtin-modules": { + "version": "3.2.0" + }, + "builtin-status-codes": { + "version": "3.0.0" + }, + "bytes": { + "version": "3.1.0", + "dev": true + }, + "cacache": { + "version": "12.0.4", + "requires": { + "bluebird": "^3.5.5", + "chownr": "^1.1.1", + "figgy-pudding": "^3.5.1", + "glob": "^7.1.4", + "graceful-fs": "^4.1.15", + "infer-owner": "^1.0.3", + "lru-cache": "^5.1.1", + "mississippi": "^3.0.0", + "mkdirp": "^0.5.1", + "move-concurrently": "^1.0.1", + "promise-inflight": "^1.0.1", + "rimraf": "^2.6.3", + "ssri": "^6.0.1", + "unique-filename": "^1.1.1", + "y18n": "^4.0.0" + }, + "dependencies": { + "ssri": { + "version": "6.0.2", + "requires": { + "figgy-pudding": "^3.5.1" + } + } + } + }, + "cache-base": { + "version": "1.0.1", + "requires": { + "collection-visit": "^1.0.0", + "component-emitter": "^1.2.1", + "get-value": "^2.0.6", + "has-value": "^1.0.0", + "isobject": "^3.0.1", + "set-value": "^2.0.0", + "to-object-path": "^0.3.0", + "union-value": "^1.0.0", + "unset-value": "^1.0.0" + } + }, + "cache-loader": { + "version": "4.1.0", + "dev": true, + "requires": { + "buffer-json": "^2.0.0", + "find-cache-dir": "^3.0.0", + "loader-utils": "^1.2.3", + "mkdirp": "^0.5.1", + "neo-async": "^2.6.1", + "schema-utils": "^2.0.0" + }, + "dependencies": { + "find-cache-dir": { + "version": "3.3.1", + "dev": true, + "requires": { + "commondir": "^1.0.1", + "make-dir": "^3.0.2", + "pkg-dir": "^4.1.0" + } + }, + "find-up": { + "version": "4.1.0", + "dev": true, + "requires": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + } + }, + "locate-path": { + "version": "5.0.0", + "dev": true, + "requires": { + "p-locate": "^4.1.0" + } + }, + "p-locate": { + "version": "4.1.0", + "dev": true, + "requires": { + "p-limit": "^2.2.0" + } + }, + "path-exists": { + "version": "4.0.0", + "dev": true + }, + "pkg-dir": { + "version": "4.2.0", + "dev": true, + "requires": { + "find-up": "^4.0.0" + } + }, + "schema-utils": { + "version": "2.7.1", + "dev": true, + "requires": { + "@types/json-schema": "^7.0.5", + "ajv": "^6.12.4", + "ajv-keywords": "^3.5.2" + } + } + } + }, + "call-bind": { + "version": "1.0.2", + "requires": { + "function-bind": "^1.1.1", + "get-intrinsic": "^1.0.2" + } + }, + "call-me-maybe": { + "version": "1.0.1" + }, + "caller-callsite": { + "version": "2.0.0", + "dev": true, + "requires": { + "callsites": "^2.0.0" + }, + "dependencies": { + "callsites": { + "version": "2.0.0", + "dev": true + } + } + }, + "caller-path": { + "version": "2.0.0", + "dev": true, + "requires": { + "caller-callsite": "^2.0.0" + } + }, + "callsites": { + "version": "3.1.0" + }, + "camel-case": { + "version": "3.0.0", + "dev": true, + "requires": { + "no-case": "^2.2.0", + "upper-case": "^1.1.1" + } + }, + "camelcase": { + "version": "5.3.1", + "dev": true + }, + "caniuse-api": { + "version": "3.0.0", + "dev": true, + "requires": { + "browserslist": "^4.0.0", + "caniuse-lite": "^1.0.0", + "lodash.memoize": "^4.1.2", + "lodash.uniq": "^4.5.0" + } + }, + "caniuse-lite": { + "version": "1.0.30001235" + }, + "case-sensitive-paths-webpack-plugin": { + "version": "2.4.0", + "dev": true + }, + "caseless": { + "version": "0.12.0", + "dev": true + }, + "chalk": { + "version": "2.4.2", + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "dependencies": { + "ansi-styles": { + "version": "3.2.1", + "requires": { + "color-convert": "^1.9.0" + } + }, + "supports-color": { + "version": "5.5.0", + "requires": { + "has-flag": "^3.0.0" + } + } + } + }, + "chardet": { + "version": "0.7.0", + "dev": true + }, + "check-types": { + "version": "8.0.3", + "dev": true + }, + "chokidar": { + "version": "2.1.8", + "devOptional": true, + "requires": { + "anymatch": "^2.0.0", + "async-each": "^1.0.1", + "braces": "^2.3.2", + "fsevents": "^1.2.7", + "glob-parent": "^3.1.0", + "inherits": "^2.0.3", + "is-binary-path": "^1.0.0", + "is-glob": "^4.0.0", + "normalize-path": "^3.0.0", + "path-is-absolute": "^1.0.0", + "readdirp": "^2.2.1", + "upath": "^1.1.1" + }, + "dependencies": { + "anymatch": { + "version": "2.0.0", + "devOptional": true, + "requires": { + "micromatch": "^3.1.4", + "normalize-path": "^2.1.1" + }, + "dependencies": { + "normalize-path": { + "version": "2.1.1", + "devOptional": true, + "requires": { + "remove-trailing-separator": "^1.0.1" + } + } + } + } + } + }, + "chownr": { + "version": "1.1.4" + }, + "chrome-trace-event": { + "version": "1.0.3" + }, + "ci-info": { + "version": "1.6.0", + "dev": true + }, + "cipher-base": { + "version": "1.0.4", + "requires": { + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + } + }, + "class-utils": { + "version": "0.3.6", + "requires": { + "arr-union": "^3.1.0", + "define-property": "^0.2.5", + "isobject": "^3.0.0", + "static-extend": "^0.1.1" + } + }, + "clean-css": { + "version": "4.2.3", + "dev": true, + "requires": { + "source-map": "~0.6.0" + } + }, + "cli-cursor": { + "version": "3.1.0", + "dev": true, + "requires": { + "restore-cursor": "^3.1.0" + } + }, + "cli-highlight": { + "version": "2.1.11", + "dev": true, + "requires": { + "chalk": "^4.0.0", + "highlight.js": "^10.7.1", + "mz": "^2.4.0", + "parse5": "^5.1.1", + "parse5-htmlparser2-tree-adapter": "^6.0.0", + "yargs": "^16.0.0" + }, + "dependencies": { + "chalk": { + "version": "4.1.1", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "cliui": { + "version": "7.0.4", + "dev": true, + "requires": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^7.0.0" + } + }, + "has-flag": { + "version": "4.0.0", + "dev": true + }, + "supports-color": { + "version": "7.2.0", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + }, + "wrap-ansi": { + "version": "7.0.0", + "dev": true, + "requires": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + } + }, + "y18n": { + "version": "5.0.8", + "dev": true + }, + "yargs": { + "version": "16.2.0", + "dev": true, + "requires": { + "cliui": "^7.0.2", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.0", + "y18n": "^5.0.5", + "yargs-parser": "^20.2.2" + } + }, + "yargs-parser": { + "version": "20.2.7", + "dev": true + } + } + }, + "cli-spinners": { + "version": "2.6.0", + "dev": true + }, + "cli-table3": { + "version": "0.5.1", + "dev": true, + "requires": { + "colors": "^1.1.2", + "object-assign": "^4.1.0", + "string-width": "^2.1.1" + }, + "dependencies": { + "ansi-regex": { + "version": "3.0.0", + "dev": true + }, + "string-width": { + "version": "2.1.1", + "dev": true, + "requires": { + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^4.0.0" + } + }, + "strip-ansi": { + "version": "4.0.0", + "dev": true, + "requires": { + "ansi-regex": "^3.0.0" + } + } + } + }, + "cli-width": { + "version": "3.0.0", + "dev": true + }, + "clipboardy": { + "version": "2.3.0", + "dev": true, + "requires": { + "arch": "^2.1.1", + "execa": "^1.0.0", + "is-wsl": "^2.1.1" + }, + "dependencies": { + "is-wsl": { + "version": "2.2.0", + "dev": true, + "requires": { + "is-docker": "^2.0.0" + } + } + } + }, + "cliui": { + "version": "5.0.0", + "dev": true, + "requires": { + "string-width": "^3.1.0", + "strip-ansi": "^5.2.0", + "wrap-ansi": "^5.1.0" + }, + "dependencies": { + "ansi-regex": { + "version": "4.1.0", + "dev": true + }, + "emoji-regex": { + "version": "7.0.3", + "dev": true + }, + "string-width": { + "version": "3.1.0", + "dev": true, + "requires": { + "emoji-regex": "^7.0.1", + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^5.1.0" + } + }, + "strip-ansi": { + "version": "5.2.0", + "dev": true, + "requires": { + "ansi-regex": "^4.1.0" + } + } + } + }, + "clone": { + "version": "1.0.4", + "dev": true + }, + "coa": { + "version": "2.0.2", + "dev": true, + "requires": { + "@types/q": "^1.5.1", + "chalk": "^2.4.1", + "q": "^1.1.2" + } + }, + "codemirror": { + "version": "5.62.3", + "resolved": "https://registry.npmjs.org/codemirror/-/codemirror-5.62.3.tgz", + "integrity": "sha512-zZAyOfN8TU67ngqrxhOgtkSAGV9jSpN1snbl8elPtnh9Z5A11daR405+dhLzLnuXrwX0WCShWlybxPN3QC/9Pg==" + }, + "collection-visit": { + "version": "1.0.0", + "requires": { + "map-visit": "^1.0.0", + "object-visit": "^1.0.0" + } + }, + "color": { + "version": "3.1.3", + "dev": true, + "requires": { + "color-convert": "^1.9.1", + "color-string": "^1.5.4" + } + }, + "color-convert": { + "version": "1.9.3", + "requires": { + "color-name": "1.1.3" + }, + "dependencies": { + "color-name": { + "version": "1.1.3" + } + } + }, + "color-name": { + "version": "1.1.4" + }, + "color-string": { + "version": "1.5.5", + "dev": true, + "requires": { + "color-name": "^1.0.0", + "simple-swizzle": "^0.2.2" + } + }, + "colorette": { + "version": "1.2.2" + }, + "colors": { + "version": "1.4.0", + "dev": true, + "optional": true + }, + "combined-stream": { + "version": "1.0.8", + "dev": true, + "requires": { + "delayed-stream": "~1.0.0" + } + }, + "commander": { + "version": "2.20.3" + }, + "common-tags": { + "version": "1.8.0" + }, + "commondir": { + "version": "1.0.1" + }, + "component-emitter": { + "version": "1.3.0" + }, + "compressible": { + "version": "2.0.18", + "dev": true, + "requires": { + "mime-db": ">= 1.43.0 < 2" + } + }, + "compression": { + "version": "1.7.4", + "dev": true, + "requires": { + "accepts": "~1.3.5", + "bytes": "3.0.0", + "compressible": "~2.0.16", + "debug": "2.6.9", + "on-headers": "~1.0.2", + "safe-buffer": "5.1.2", + "vary": "~1.1.2" + }, + "dependencies": { + "bytes": { + "version": "3.0.0", + "dev": true + }, + "debug": { + "version": "2.6.9", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "ms": { + "version": "2.0.0", + "dev": true + }, + "safe-buffer": { + "version": "5.1.2", + "dev": true + } + } + }, + "concat-map": { + "version": "0.0.1" + }, + "concat-stream": { + "version": "1.6.2", + "requires": { + "buffer-from": "^1.0.0", + "inherits": "^2.0.3", + "readable-stream": "^2.2.2", + "typedarray": "^0.0.6" + } + }, + "connect-history-api-fallback": { + "version": "1.6.0", + "dev": true + }, + "consola": { + "version": "2.15.3" + }, + "console-browserify": { + "version": "1.2.0" + }, + "consolidate": { + "version": "0.16.0", + "dev": true, + "requires": { + "bluebird": "^3.7.2" + } + }, + "constants-browserify": { + "version": "1.0.0" + }, + "content-disposition": { + "version": "0.5.3", + "dev": true, + "requires": { + "safe-buffer": "5.1.2" + }, + "dependencies": { + "safe-buffer": { + "version": "5.1.2", + "dev": true + } + } + }, + "content-type": { + "version": "1.0.4", + "dev": true + }, + "convert-source-map": { + "version": "1.7.0", + "requires": { + "safe-buffer": "~5.1.1" + }, + "dependencies": { + "safe-buffer": { + "version": "5.1.2" + } + } + }, + "cookie": { + "version": "0.4.0", + "dev": true + }, + "cookie-signature": { + "version": "1.0.6", + "dev": true + }, + "copy-concurrently": { + "version": "1.0.5", + "requires": { + "aproba": "^1.1.1", + "fs-write-stream-atomic": "^1.0.8", + "iferr": "^0.1.5", + "mkdirp": "^0.5.1", + "rimraf": "^2.5.4", + "run-queue": "^1.0.0" + } + }, + "copy-descriptor": { + "version": "0.1.1" + }, + "copy-to-clipboard": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/copy-to-clipboard/-/copy-to-clipboard-3.3.1.tgz", + "integrity": "sha512-i13qo6kIHTTpCm8/Wup+0b1mVWETvu2kIMzKoK8FpkLkFxlt0znUAHcMzox+T8sPlqtZXq3CulEjQHsYiGFJUw==", + "requires": { + "toggle-selection": "^1.0.6" + } + }, + "copy-webpack-plugin": { + "version": "5.1.2", + "dev": true, + "requires": { + "cacache": "^12.0.3", + "find-cache-dir": "^2.1.0", + "glob-parent": "^3.1.0", + "globby": "^7.1.1", + "is-glob": "^4.0.1", + "loader-utils": "^1.2.3", + "minimatch": "^3.0.4", + "normalize-path": "^3.0.0", + "p-limit": "^2.2.1", + "schema-utils": "^1.0.0", + "serialize-javascript": "^4.0.0", + "webpack-log": "^2.0.0" + }, + "dependencies": { + "globby": { + "version": "7.1.1", + "dev": true, + "requires": { + "array-union": "^1.0.1", + "dir-glob": "^2.0.0", + "glob": "^7.1.2", + "ignore": "^3.3.5", + "pify": "^3.0.0", + "slash": "^1.0.0" + } + }, + "ignore": { + "version": "3.3.10", + "dev": true + }, + "pify": { + "version": "3.0.0", + "dev": true + }, + "slash": { + "version": "1.0.0", + "dev": true + } + } + }, + "core-js": { + "version": "3.18.1", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.18.1.tgz", + "integrity": "sha512-vJlUi/7YdlCZeL6fXvWNaLUPh/id12WXj3MbkMw5uOyF0PfWPBNOCNbs53YqgrvtujLNlt9JQpruyIKkUZ+PKA==" + }, + "core-js-compat": { + "version": "3.14.0", + "requires": { + "browserslist": "^4.16.6", + "semver": "7.0.0" + }, + "dependencies": { + "semver": { + "version": "7.0.0" + } + } + }, + "core-util-is": { + "version": "1.0.2" + }, + "cosmiconfig": { + "version": "5.2.1", + "dev": true, + "requires": { + "import-fresh": "^2.0.0", + "is-directory": "^0.3.1", + "js-yaml": "^3.13.1", + "parse-json": "^4.0.0" + }, + "dependencies": { + "import-fresh": { + "version": "2.0.0", + "dev": true, + "requires": { + "caller-path": "^2.0.0", + "resolve-from": "^3.0.0" + } + }, + "parse-json": { + "version": "4.0.0", + "dev": true, + "requires": { + "error-ex": "^1.3.1", + "json-parse-better-errors": "^1.0.1" + } + } + } + }, + "create-ecdh": { + "version": "4.0.4", + "requires": { + "bn.js": "^4.1.0", + "elliptic": "^6.5.3" + } + }, + "create-hash": { + "version": "1.2.0", + "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", + "requires": { + "cipher-base": "^1.0.3", + "create-hash": "^1.1.0", + "inherits": "^2.0.1", + "ripemd160": "^2.0.0", + "safe-buffer": "^5.0.1", + "sha.js": "^2.4.8" + } + }, + "cross-spawn": { + "version": "7.0.3", + "requires": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + }, + "dependencies": { + "path-key": { + "version": "3.1.1" + }, + "shebang-command": { + "version": "2.0.0", + "requires": { + "shebang-regex": "^3.0.0" + } + }, + "shebang-regex": { + "version": "3.0.0" + }, + "which": { + "version": "2.0.2", + "requires": { + "isexe": "^2.0.0" + } + } + } + }, + "crypto-browserify": { + "version": "3.12.0", + "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" + } + }, + "crypto-random-string": { + "version": "2.0.0" + }, + "css-color-names": { + "version": "0.0.4", + "dev": true + }, + "css-declaration-sorter": { + "version": "4.0.1", + "dev": true, + "requires": { + "postcss": "^7.0.1", + "timsort": "^0.3.0" + } + }, + "css-loader": { + "version": "3.6.0", + "dev": true, + "requires": { + "camelcase": "^5.3.1", + "cssesc": "^3.0.0", + "icss-utils": "^4.1.1", + "loader-utils": "^1.2.3", + "normalize-path": "^3.0.0", + "postcss": "^7.0.32", + "postcss-modules-extract-imports": "^2.0.0", + "postcss-modules-local-by-default": "^3.0.2", + "postcss-modules-scope": "^2.2.0", + "postcss-modules-values": "^3.0.0", + "postcss-value-parser": "^4.1.0", + "schema-utils": "^2.7.0", + "semver": "^6.3.0" + }, + "dependencies": { + "postcss-value-parser": { + "version": "4.1.0", + "dev": true + }, + "schema-utils": { + "version": "2.7.1", + "dev": true, + "requires": { + "@types/json-schema": "^7.0.5", + "ajv": "^6.12.4", + "ajv-keywords": "^3.5.2" + } + } + } + }, + "css-select": { + "version": "4.1.3", + "dev": true, + "requires": { + "boolbase": "^1.0.0", + "css-what": "^5.0.0", + "domhandler": "^4.2.0", + "domutils": "^2.6.0", + "nth-check": "^2.0.0" + } + }, + "css-select-base-adapter": { + "version": "0.1.1", + "dev": true + }, + "css-tree": { + "version": "1.0.0-alpha.37", + "dev": true, + "requires": { + "mdn-data": "2.0.4", + "source-map": "^0.6.1" + } + }, + "css-what": { + "version": "5.0.1", + "dev": true + }, + "cssesc": { + "version": "3.0.0", + "dev": true + }, + "cssfilter": { + "version": "0.0.10", + "resolved": "https://registry.npmjs.org/cssfilter/-/cssfilter-0.0.10.tgz", + "integrity": "sha1-xtJnJjKi5cg+AT5oZKQs6N79IK4=" + }, + "cssnano": { + "version": "4.1.11", + "dev": true, + "requires": { + "cosmiconfig": "^5.0.0", + "cssnano-preset-default": "^4.0.8", + "is-resolvable": "^1.0.0", + "postcss": "^7.0.0" + } + }, + "cssnano-preset-default": { + "version": "4.0.8", + "dev": true, + "requires": { + "css-declaration-sorter": "^4.0.1", + "cssnano-util-raw-cache": "^4.0.1", + "postcss": "^7.0.0", + "postcss-calc": "^7.0.1", + "postcss-colormin": "^4.0.3", + "postcss-convert-values": "^4.0.1", + "postcss-discard-comments": "^4.0.2", + "postcss-discard-duplicates": "^4.0.2", + "postcss-discard-empty": "^4.0.1", + "postcss-discard-overridden": "^4.0.1", + "postcss-merge-longhand": "^4.0.11", + "postcss-merge-rules": "^4.0.3", + "postcss-minify-font-values": "^4.0.2", + "postcss-minify-gradients": "^4.0.2", + "postcss-minify-params": "^4.0.2", + "postcss-minify-selectors": "^4.0.2", + "postcss-normalize-charset": "^4.0.1", + "postcss-normalize-display-values": "^4.0.2", + "postcss-normalize-positions": "^4.0.2", + "postcss-normalize-repeat-style": "^4.0.2", + "postcss-normalize-string": "^4.0.2", + "postcss-normalize-timing-functions": "^4.0.2", + "postcss-normalize-unicode": "^4.0.1", + "postcss-normalize-url": "^4.0.1", + "postcss-normalize-whitespace": "^4.0.2", + "postcss-ordered-values": "^4.1.2", + "postcss-reduce-initial": "^4.0.3", + "postcss-reduce-transforms": "^4.0.2", + "postcss-svgo": "^4.0.3", + "postcss-unique-selectors": "^4.0.1" + } + }, + "cssnano-util-get-arguments": { + "version": "4.0.0", + "dev": true + }, + "cssnano-util-get-match": { + "version": "4.0.0", + "dev": true + }, + "cssnano-util-raw-cache": { + "version": "4.0.1", + "dev": true, + "requires": { + "postcss": "^7.0.0" + } + }, + "cssnano-util-same-parent": { + "version": "4.0.1", + "dev": true + }, + "csso": { + "version": "4.2.0", + "dev": true, + "requires": { + "css-tree": "^1.1.2" + }, + "dependencies": { + "css-tree": { + "version": "1.1.3", + "dev": true, + "requires": { + "mdn-data": "2.0.14", + "source-map": "^0.6.1" + } + }, + "mdn-data": { + "version": "2.0.14", + "dev": true + } + } + }, + "cyclist": { + "version": "1.0.1" + }, + "d3": { + "version": "5.16.0", + "resolved": "https://registry.npmjs.org/d3/-/d3-5.16.0.tgz", + "integrity": "sha512-4PL5hHaHwX4m7Zr1UapXW23apo6pexCgdetdJ5kTmADpG/7T9Gkxw0M0tf/pjoB63ezCCm0u5UaFYy2aMt0Mcw==", + "requires": { + "d3-array": "1", + "d3-axis": "1", + "d3-brush": "1", + "d3-chord": "1", + "d3-collection": "1", + "d3-color": "1", + "d3-contour": "1", + "d3-dispatch": "1", + "d3-drag": "1", + "d3-dsv": "1", + "d3-ease": "1", + "d3-fetch": "1", + "d3-force": "1", + "d3-format": "1", + "d3-geo": "1", + "d3-hierarchy": "1", + "d3-interpolate": "1", + "d3-path": "1", + "d3-polygon": "1", + "d3-quadtree": "1", + "d3-random": "1", + "d3-scale": "2", + "d3-scale-chromatic": "1", + "d3-selection": "1", + "d3-shape": "1", + "d3-time": "1", + "d3-time-format": "2", + "d3-timer": "1", + "d3-transition": "1", + "d3-voronoi": "1", + "d3-zoom": "1" + } + }, + "d3-array": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/d3-array/-/d3-array-1.2.4.tgz", + "integrity": "sha512-KHW6M86R+FUPYGb3R5XiYjXPq7VzwxZ22buHhAEVG5ztoEcZZMLov530mmccaqA1GghZArjQV46fuc8kUqhhHw==" + }, + "d3-axis": { + "version": "1.0.12", + "resolved": "https://registry.npmjs.org/d3-axis/-/d3-axis-1.0.12.tgz", + "integrity": "sha512-ejINPfPSNdGFKEOAtnBtdkpr24c4d4jsei6Lg98mxf424ivoDP2956/5HDpIAtmHo85lqT4pruy+zEgvRUBqaQ==" + }, + "d3-brush": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/d3-brush/-/d3-brush-1.1.6.tgz", + "integrity": "sha512-7RW+w7HfMCPyZLifTz/UnJmI5kdkXtpCbombUSs8xniAyo0vIbrDzDwUJB6eJOgl9u5DQOt2TQlYumxzD1SvYA==", + "requires": { + "d3-dispatch": "1", + "d3-drag": "1", + "d3-interpolate": "1", + "d3-selection": "1", + "d3-transition": "1" + } + }, + "d3-chord": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/d3-chord/-/d3-chord-1.0.6.tgz", + "integrity": "sha512-JXA2Dro1Fxw9rJe33Uv+Ckr5IrAa74TlfDEhE/jfLOaXegMQFQTAgAw9WnZL8+HxVBRXaRGCkrNU7pJeylRIuA==", + "requires": { + "d3-array": "1", + "d3-path": "1" + } + }, + "d3-collection": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/d3-collection/-/d3-collection-1.0.7.tgz", + "integrity": "sha512-ii0/r5f4sjKNTfh84Di+DpztYwqKhEyUlKoPrzUFfeSkWxjW49xU2QzO9qrPrNkpdI0XJkfzvmTu8V2Zylln6A==" + }, + "d3-color": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/d3-color/-/d3-color-1.4.1.tgz", + "integrity": "sha512-p2sTHSLCJI2QKunbGb7ocOh7DgTAn8IrLx21QRc/BSnodXM4sv6aLQlnfpvehFMLZEfBc6g9pH9SWQccFYfJ9Q==" + }, + "d3-contour": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/d3-contour/-/d3-contour-1.3.2.tgz", + "integrity": "sha512-hoPp4K/rJCu0ladiH6zmJUEz6+u3lgR+GSm/QdM2BBvDraU39Vr7YdDCicJcxP1z8i9B/2dJLgDC1NcvlF8WCg==", + "requires": { + "d3-array": "^1.1.1" + } + }, + "d3-dispatch": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/d3-dispatch/-/d3-dispatch-1.0.6.tgz", + "integrity": "sha512-fVjoElzjhCEy+Hbn8KygnmMS7Or0a9sI2UzGwoB7cCtvI1XpVN9GpoYlnb3xt2YV66oXYb1fLJ8GMvP4hdU1RA==" + }, + "d3-drag": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/d3-drag/-/d3-drag-1.2.5.tgz", + "integrity": "sha512-rD1ohlkKQwMZYkQlYVCrSFxsWPzI97+W+PaEIBNTMxRuxz9RF0Hi5nJWHGVJ3Om9d2fRTe1yOBINJyy/ahV95w==", + "requires": { + "d3-dispatch": "1", + "d3-selection": "1" + } + }, + "d3-dsv": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/d3-dsv/-/d3-dsv-1.2.0.tgz", + "integrity": "sha512-9yVlqvZcSOMhCYzniHE7EVUws7Fa1zgw+/EAV2BxJoG3ME19V6BQFBwI855XQDsxyOuG7NibqRMTtiF/Qup46g==", + "requires": { + "commander": "2", + "iconv-lite": "0.4", + "rw": "1" + } + }, + "d3-ease": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/d3-ease/-/d3-ease-1.0.7.tgz", + "integrity": "sha512-lx14ZPYkhNx0s/2HX5sLFUI3mbasHjSSpwO/KaaNACweVwxUruKyWVcb293wMv1RqTPZyZ8kSZ2NogUZNcLOFQ==" + }, + "d3-fetch": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/d3-fetch/-/d3-fetch-1.2.0.tgz", + "integrity": "sha512-yC78NBVcd2zFAyR/HnUiBS7Lf6inSCoWcSxFfw8FYL7ydiqe80SazNwoffcqOfs95XaLo7yebsmQqDKSsXUtvA==", + "requires": { + "d3-dsv": "1" + } + }, + "d3-force": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/d3-force/-/d3-force-1.2.1.tgz", + "integrity": "sha512-HHvehyaiUlVo5CxBJ0yF/xny4xoaxFxDnBXNvNcfW9adORGZfyNF1dj6DGLKyk4Yh3brP/1h3rnDzdIAwL08zg==", + "requires": { + "d3-collection": "1", + "d3-dispatch": "1", + "d3-quadtree": "1", + "d3-timer": "1" + } + }, + "d3-format": { + "version": "1.4.5", + "resolved": "https://registry.npmjs.org/d3-format/-/d3-format-1.4.5.tgz", + "integrity": "sha512-J0piedu6Z8iB6TbIGfZgDzfXxUFN3qQRMofy2oPdXzQibYGqPB/9iMcxr/TGalU+2RsyDO+U4f33id8tbnSRMQ==" + }, + "d3-geo": { + "version": "1.12.1", + "resolved": "https://registry.npmjs.org/d3-geo/-/d3-geo-1.12.1.tgz", + "integrity": "sha512-XG4d1c/UJSEX9NfU02KwBL6BYPj8YKHxgBEw5om2ZnTRSbIcego6dhHwcxuSR3clxh0EpE38os1DVPOmnYtTPg==", + "requires": { + "d3-array": "1" + } + }, + "d3-hierarchy": { + "version": "1.1.9", + "resolved": "https://registry.npmjs.org/d3-hierarchy/-/d3-hierarchy-1.1.9.tgz", + "integrity": "sha512-j8tPxlqh1srJHAtxfvOUwKNYJkQuBFdM1+JAUfq6xqH5eAqf93L7oG1NVqDa4CpFZNvnNKtCYEUC8KY9yEn9lQ==" + }, + "d3-interpolate": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/d3-interpolate/-/d3-interpolate-1.4.0.tgz", + "integrity": "sha512-V9znK0zc3jOPV4VD2zZn0sDhZU3WAE2bmlxdIwwQPPzPjvyLkd8B3JUVdS1IDUFDkWZ72c9qnv1GK2ZagTZ8EA==", + "requires": { + "d3-color": "1" + } + }, + "d3-path": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/d3-path/-/d3-path-1.0.9.tgz", + "integrity": "sha512-VLaYcn81dtHVTjEHd8B+pbe9yHWpXKZUC87PzoFmsFrJqgFwDe/qxfp5MlfsfM1V5E/iVt0MmEbWQ7FVIXh/bg==" + }, + "d3-polygon": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/d3-polygon/-/d3-polygon-1.0.6.tgz", + "integrity": "sha512-k+RF7WvI08PC8reEoXa/w2nSg5AUMTi+peBD9cmFc+0ixHfbs4QmxxkarVal1IkVkgxVuk9JSHhJURHiyHKAuQ==" + }, + "d3-quadtree": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/d3-quadtree/-/d3-quadtree-1.0.7.tgz", + "integrity": "sha512-RKPAeXnkC59IDGD0Wu5mANy0Q2V28L+fNe65pOCXVdVuTJS3WPKaJlFHer32Rbh9gIo9qMuJXio8ra4+YmIymA==" + }, + "d3-random": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/d3-random/-/d3-random-1.1.2.tgz", + "integrity": "sha512-6AK5BNpIFqP+cx/sreKzNjWbwZQCSUatxq+pPRmFIQaWuoD+NrbVWw7YWpHiXpCQ/NanKdtGDuB+VQcZDaEmYQ==" + }, + "d3-scale": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/d3-scale/-/d3-scale-2.2.2.tgz", + "integrity": "sha512-LbeEvGgIb8UMcAa0EATLNX0lelKWGYDQiPdHj+gLblGVhGLyNbaCn3EvrJf0A3Y/uOOU5aD6MTh5ZFCdEwGiCw==", + "requires": { + "d3-array": "^1.2.0", + "d3-collection": "1", + "d3-format": "1", + "d3-interpolate": "1", + "d3-time": "1", + "d3-time-format": "2" + } + }, + "d3-scale-chromatic": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/d3-scale-chromatic/-/d3-scale-chromatic-1.5.0.tgz", + "integrity": "sha512-ACcL46DYImpRFMBcpk9HhtIyC7bTBR4fNOPxwVSl0LfulDAwyiHyPOTqcDG1+t5d4P9W7t/2NAuWu59aKko/cg==", + "requires": { + "d3-color": "1", + "d3-interpolate": "1" + } + }, + "d3-selection": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/d3-selection/-/d3-selection-1.4.2.tgz", + "integrity": "sha512-SJ0BqYihzOjDnnlfyeHT0e30k0K1+5sR3d5fNueCNeuhZTnGw4M4o8mqJchSwgKMXCNFo+e2VTChiSJ0vYtXkg==" + }, + "d3-shape": { + "version": "1.3.7", + "resolved": "https://registry.npmjs.org/d3-shape/-/d3-shape-1.3.7.tgz", + "integrity": "sha512-EUkvKjqPFUAZyOlhY5gzCxCeI0Aep04LwIRpsZ/mLFelJiUfnK56jo5JMDSE7yyP2kLSb6LtF+S5chMk7uqPqw==", + "requires": { + "d3-path": "1" + } + }, + "d3-time": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/d3-time/-/d3-time-1.1.0.tgz", + "integrity": "sha512-Xh0isrZ5rPYYdqhAVk8VLnMEidhz5aP7htAADH6MfzgmmicPkTo8LhkLxci61/lCB7n7UmE3bN0leRt+qvkLxA==" + }, + "d3-time-format": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/d3-time-format/-/d3-time-format-2.3.0.tgz", + "integrity": "sha512-guv6b2H37s2Uq/GefleCDtbe0XZAuy7Wa49VGkPVPMfLL9qObgBST3lEHJBMUp8S7NdLQAGIvr2KXk8Hc98iKQ==", + "requires": { + "d3-time": "1" + } + }, + "d3-timer": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/d3-timer/-/d3-timer-1.0.10.tgz", + "integrity": "sha512-B1JDm0XDaQC+uvo4DT79H0XmBskgS3l6Ve+1SBCfxgmtIb1AVrPIoqd+nPSv+loMX8szQ0sVUhGngL7D5QPiXw==" + }, + "d3-transition": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/d3-transition/-/d3-transition-1.3.2.tgz", + "integrity": "sha512-sc0gRU4PFqZ47lPVHloMn9tlPcv8jxgOQg+0zjhfZXMQuvppjG6YuwdMBE0TuqCZjeJkLecku/l9R0JPcRhaDA==", + "requires": { + "d3-color": "1", + "d3-dispatch": "1", + "d3-ease": "1", + "d3-interpolate": "1", + "d3-selection": "^1.1.0", + "d3-timer": "1" + } + }, + "d3-voronoi": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/d3-voronoi/-/d3-voronoi-1.1.4.tgz", + "integrity": "sha512-dArJ32hchFsrQ8uMiTBLq256MpnZjeuBtdHpaDlYuQyjU0CVzCJl/BVW+SkszaAeH95D/8gxqAhgx0ouAWAfRg==" + }, + "d3-zoom": { + "version": "1.8.3", + "resolved": "https://registry.npmjs.org/d3-zoom/-/d3-zoom-1.8.3.tgz", + "integrity": "sha512-VoLXTK4wvy1a0JpH2Il+F2CiOhVu7VRXWF5M/LroMIh3/zBAC3WAt7QoIvPibOavVo20hN6/37vwAsdBejLyKQ==", + "requires": { + "d3-dispatch": "1", + "d3-drag": "1", + "d3-interpolate": "1", + "d3-selection": "1", + "d3-transition": "1" + } + }, + "dagre": { + "version": "0.8.5", + "resolved": "https://registry.npmjs.org/dagre/-/dagre-0.8.5.tgz", + "integrity": "sha512-/aTqmnRta7x7MCCpExk7HQL2O4owCT2h8NT//9I1OQ9vt29Pa0BzSAkR5lwFUcQ7491yVi/3CXU9jQ5o0Mn2Sw==", + "requires": { + "graphlib": "^2.1.8", + "lodash": "^4.17.15" + } + }, + "dagre-d3": { + "version": "0.6.4", + "resolved": "https://registry.npmjs.org/dagre-d3/-/dagre-d3-0.6.4.tgz", + "integrity": "sha512-e/6jXeCP7/ptlAM48clmX4xTZc5Ek6T6kagS7Oz2HrYSdqcLZFLqpAfh7ldbZRFfxCZVyh61NEPR08UQRVxJzQ==", + "requires": { + "d3": "^5.14", + "dagre": "^0.8.5", + "graphlib": "^2.1.8", + "lodash": "^4.17.15" + } + }, + "dashdash": { + "version": "1.14.1", + "dev": true, + "requires": { + "assert-plus": "^1.0.0" + } + }, + "de-indent": { + "version": "1.0.2" + }, + "debug": { + "version": "4.3.1", + "requires": { + "ms": "2.1.2" + } + }, + "decamelize": { + "version": "1.2.0", + "dev": true + }, + "decode-uri-component": { + "version": "0.2.0" + }, + "deep-equal": { + "version": "1.1.1", + "dev": true, + "requires": { + "is-arguments": "^1.0.4", + "is-date-object": "^1.0.1", + "is-regex": "^1.0.4", + "object-is": "^1.0.1", + "object-keys": "^1.1.1", + "regexp.prototype.flags": "^1.2.0" + } + }, + "deep-is": { + "version": "0.1.3" + }, + "deepmerge": { + "version": "4.2.2" + }, + "default-gateway": { + "version": "5.0.5", + "dev": true, + "requires": { + "execa": "^3.3.0" + }, + "dependencies": { + "execa": { + "version": "3.4.0", + "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", + "p-finally": "^2.0.0", + "signal-exit": "^3.0.2", + "strip-final-newline": "^2.0.0" + } + }, + "get-stream": { + "version": "5.2.0", + "dev": true, + "requires": { + "pump": "^3.0.0" + } + }, + "is-stream": { + "version": "2.0.0", + "dev": true + }, + "npm-run-path": { + "version": "4.0.1", + "dev": true, + "requires": { + "path-key": "^3.0.0" + } + }, + "p-finally": { + "version": "2.0.1", + "dev": true + }, + "path-key": { + "version": "3.1.1", + "dev": true + } + } + }, + "defaults": { + "version": "1.0.3", + "dev": true, + "requires": { + "clone": "^1.0.2" + } + }, + "define-properties": { + "version": "1.1.3", + "requires": { + "object-keys": "^1.0.12" + } + }, + "define-property": { + "version": "0.2.5", + "requires": { + "is-descriptor": "^0.1.0" + }, + "dependencies": { + "is-accessor-descriptor": { + "version": "0.1.6", + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-data-descriptor": { + "version": "0.1.4", + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-descriptor": { + "version": "0.1.6", + "requires": { + "is-accessor-descriptor": "^0.1.6", + "is-data-descriptor": "^0.1.4", + "kind-of": "^5.0.0" + } + }, + "kind-of": { + "version": "5.1.0" + } + } + }, + "del": { + "version": "4.1.1", + "dev": true, + "requires": { + "@types/glob": "^7.1.1", + "globby": "^6.1.0", + "is-path-cwd": "^2.0.0", + "is-path-in-cwd": "^2.0.0", + "p-map": "^2.0.0", + "pify": "^4.0.1", + "rimraf": "^2.6.3" + }, + "dependencies": { + "globby": { + "version": "6.1.0", + "dev": true, + "requires": { + "array-union": "^1.0.1", + "glob": "^7.0.3", + "object-assign": "^4.0.1", + "pify": "^2.0.0", + "pinkie-promise": "^2.0.0" + }, + "dependencies": { + "pify": { + "version": "2.3.0", + "dev": true + } + } + } + } + }, + "delayed-stream": { + "version": "1.0.0", + "dev": true + }, + "depd": { + "version": "1.1.2", + "dev": true + }, + "des.js": { + "version": "1.0.1", + "requires": { + "inherits": "^2.0.1", + "minimalistic-assert": "^1.0.0" + } + }, + "destroy": { + "version": "1.0.4", + "dev": true + }, + "detect-node": { + "version": "2.1.0", + "dev": true + }, + "diff": { + "version": "4.0.2", + "dev": true + }, + "diffie-hellman": { + "version": "5.0.3", + "requires": { + "bn.js": "^4.1.0", + "miller-rabin": "^4.0.0", + "randombytes": "^2.0.0" + } + }, + "dir-glob": { + "version": "2.2.2", + "requires": { + "path-type": "^3.0.0" + }, + "dependencies": { + "path-type": { + "version": "3.0.0", + "requires": { + "pify": "^3.0.0" + } + }, + "pify": { + "version": "3.0.0" + } + } + }, + "dns-equal": { + "version": "1.0.0", + "dev": true + }, + "dns-packet": { + "version": "1.3.4", + "dev": true, + "requires": { + "ip": "^1.1.0", + "safe-buffer": "^5.0.1" + } + }, + "dns-txt": { + "version": "2.0.2", + "dev": true, + "requires": { + "buffer-indexof": "^1.0.0" + } + }, + "doctrine": { + "version": "3.0.0", + "requires": { + "esutils": "^2.0.2" + } + }, + "dom-converter": { + "version": "0.2.0", + "dev": true, + "requires": { + "utila": "~0.4" + } + }, + "dom-serializer": { + "version": "1.3.2", + "dev": true, + "requires": { + "domelementtype": "^2.0.1", + "domhandler": "^4.2.0", + "entities": "^2.0.0" + } + }, + "domain-browser": { + "version": "1.2.0" + }, + "domelementtype": { + "version": "2.2.0", + "dev": true + }, + "domhandler": { + "version": "4.2.0", + "dev": true, + "requires": { + "domelementtype": "^2.2.0" + } + }, + "dompurify": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/dompurify/-/dompurify-2.3.1.tgz", + "integrity": "sha512-xGWt+NHAQS+4tpgbOAI08yxW0Pr256Gu/FNE2frZVTbgrBUn8M7tz7/ktS/LZ2MHeGqz6topj0/xY+y8R5FBFw==" + }, + "domutils": { + "version": "2.7.0", + "dev": true, + "requires": { + "dom-serializer": "^1.0.1", + "domelementtype": "^2.2.0", + "domhandler": "^4.2.0" + } + }, + "dot-object": { + "version": "1.9.0", + "dev": true, + "requires": { + "commander": "^2.20.0", + "glob": "^7.1.4" + } + }, + "dot-prop": { + "version": "5.3.0", + "dev": true, + "requires": { + "is-obj": "^2.0.0" + }, + "dependencies": { + "is-obj": { + "version": "2.0.0", + "dev": true + } + } + }, + "dotenv": { + "version": "8.6.0", + "dev": true + }, + "dotenv-expand": { + "version": "5.1.0", + "dev": true + }, + "duplexer": { + "version": "0.1.2", + "dev": true + }, + "duplexify": { + "version": "3.7.1", + "requires": { + "end-of-stream": "^1.0.0", + "inherits": "^2.0.1", + "readable-stream": "^2.0.0", + "stream-shift": "^1.0.0" + } + }, + "easings-css": { + "version": "1.0.0" + }, + "easy-stack": { + "version": "1.0.1", + "dev": true + }, + "ecc-jsbn": { + "version": "0.1.2", + "dev": true, + "requires": { + "jsbn": "~0.1.0", + "safer-buffer": "^2.1.0" + } + }, + "ee-first": { + "version": "1.1.1", + "dev": true + }, + "ejs": { + "version": "2.7.4" + }, + "electron-to-chromium": { + "version": "1.3.749" + }, + "elliptic": { + "version": "6.5.4", + "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" + } + }, + "emoji-regex": { + "version": "8.0.0" + }, + "emojis-list": { + "version": "3.0.0" + }, + "encodeurl": { + "version": "1.0.2", + "dev": true + }, + "end-of-stream": { + "version": "1.4.4", + "requires": { + "once": "^1.4.0" + } + }, + "enhanced-resolve": { + "version": "4.5.0", + "requires": { + "graceful-fs": "^4.1.2", + "memory-fs": "^0.5.0", + "tapable": "^1.0.0" + }, + "dependencies": { + "memory-fs": { + "version": "0.5.0", + "requires": { + "errno": "^0.1.3", + "readable-stream": "^2.0.1" + } + } + } + }, + "enquirer": { + "version": "2.3.6", + "requires": { + "ansi-colors": "^4.1.1" + } + }, + "entities": { + "version": "2.2.0", + "dev": true + }, + "errno": { + "version": "0.1.8", + "requires": { + "prr": "~1.0.1" + } + }, + "error-ex": { + "version": "1.3.2", + "dev": true, + "requires": { + "is-arrayish": "^0.2.1" + } + }, + "error-stack-parser": { + "version": "2.0.6", + "dev": true, + "requires": { + "stackframe": "^1.1.1" + } + }, + "es-abstract": { + "version": "1.18.3", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "es-to-primitive": "^1.2.1", + "function-bind": "^1.1.1", + "get-intrinsic": "^1.1.1", + "has": "^1.0.3", + "has-symbols": "^1.0.2", + "is-callable": "^1.2.3", + "is-negative-zero": "^2.0.1", + "is-regex": "^1.1.3", + "is-string": "^1.0.6", + "object-inspect": "^1.10.3", + "object-keys": "^1.1.1", + "object.assign": "^4.1.2", + "string.prototype.trimend": "^1.0.4", + "string.prototype.trimstart": "^1.0.4", + "unbox-primitive": "^1.0.1" + } + }, + "es-to-primitive": { + "version": "1.2.1", + "dev": true, + "requires": { + "is-callable": "^1.1.4", + "is-date-object": "^1.0.1", + "is-symbol": "^1.0.2" + } + }, + "escalade": { + "version": "3.1.1" + }, + "escape-html": { + "version": "1.0.3" + }, + "escape-string-regexp": { + "version": "1.0.5" + }, + "eslint": { + "version": "7.28.0", + "requires": { + "@babel/code-frame": "7.12.11", + "@eslint/eslintrc": "^0.4.2", + "ajv": "^6.10.0", + "chalk": "^4.0.0", + "cross-spawn": "^7.0.2", + "debug": "^4.0.1", + "doctrine": "^3.0.0", + "enquirer": "^2.3.5", + "escape-string-regexp": "^4.0.0", + "eslint-scope": "^5.1.1", + "eslint-utils": "^2.1.0", + "eslint-visitor-keys": "^2.0.0", + "espree": "^7.3.1", + "esquery": "^1.4.0", + "esutils": "^2.0.2", + "fast-deep-equal": "^3.1.3", + "file-entry-cache": "^6.0.1", + "functional-red-black-tree": "^1.0.1", + "glob-parent": "^5.1.2", + "globals": "^13.6.0", + "ignore": "^4.0.6", + "import-fresh": "^3.0.0", + "imurmurhash": "^0.1.4", + "is-glob": "^4.0.0", + "js-yaml": "^3.13.1", + "json-stable-stringify-without-jsonify": "^1.0.1", + "levn": "^0.4.1", + "lodash.merge": "^4.6.2", + "minimatch": "^3.0.4", + "natural-compare": "^1.4.0", + "optionator": "^0.9.1", + "progress": "^2.0.0", + "regexpp": "^3.1.0", + "semver": "^7.2.1", + "strip-ansi": "^6.0.0", + "strip-json-comments": "^3.1.0", + "table": "^6.0.9", + "text-table": "^0.2.0", + "v8-compile-cache": "^2.0.3" + }, + "dependencies": { + "@babel/code-frame": { + "version": "7.12.11", + "requires": { + "@babel/highlight": "^7.10.4" + } + }, + "chalk": { + "version": "4.1.1", + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "escape-string-regexp": { + "version": "4.0.0" + }, + "eslint-visitor-keys": { + "version": "2.1.0" + }, + "glob-parent": { + "version": "5.1.2", + "requires": { + "is-glob": "^4.0.1" + } + }, + "globals": { + "version": "13.9.0", + "requires": { + "type-fest": "^0.20.2" + } + }, + "has-flag": { + "version": "4.0.0" + }, + "lru-cache": { + "version": "6.0.0", + "requires": { + "yallist": "^4.0.0" + } + }, + "semver": { + "version": "7.3.5", + "requires": { + "lru-cache": "^6.0.0" + } + }, + "supports-color": { + "version": "7.2.0", + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "eslint-loader": { + "version": "2.2.1", + "dev": true, + "requires": { + "loader-fs-cache": "^1.0.0", + "loader-utils": "^1.0.2", + "object-assign": "^4.0.1", + "object-hash": "^1.1.4", + "rimraf": "^2.6.1" + } + }, + "eslint-plugin-vue": { + "version": "7.10.0", + "dev": true, + "requires": { + "eslint-utils": "^2.1.0", + "natural-compare": "^1.4.0", + "semver": "^7.3.2", + "vue-eslint-parser": "^7.6.0" + }, + "dependencies": { + "lru-cache": { + "version": "6.0.0", + "dev": true, + "requires": { + "yallist": "^4.0.0" + } + }, + "semver": { + "version": "7.3.5", + "dev": true, + "requires": { + "lru-cache": "^6.0.0" + } + } + } + }, + "eslint-scope": { + "version": "5.1.1", + "requires": { + "esrecurse": "^4.3.0", + "estraverse": "^4.1.1" + } + }, + "eslint-utils": { + "version": "2.1.0", + "requires": { + "eslint-visitor-keys": "^1.1.0" + } + }, + "eslint-visitor-keys": { + "version": "1.3.0" + }, + "esm": { + "version": "3.2.25", + "dev": true + }, + "espree": { + "version": "7.3.1", + "requires": { + "acorn": "^7.4.0", + "acorn-jsx": "^5.3.1", + "eslint-visitor-keys": "^1.3.0" + } + }, + "esprima": { + "version": "4.0.1" + }, + "esquery": { + "version": "1.4.0", + "requires": { + "estraverse": "^5.1.0" + }, + "dependencies": { + "estraverse": { + "version": "5.2.0" + } + } + }, + "esrecurse": { + "version": "4.3.0", + "requires": { + "estraverse": "^5.2.0" + }, + "dependencies": { + "estraverse": { + "version": "5.2.0" + } + } + }, + "estraverse": { + "version": "4.3.0" + }, + "estree-walker": { + "version": "2.0.2", + "dev": true + }, + "esutils": { + "version": "2.0.3" + }, + "etag": { + "version": "1.8.1", + "dev": true + }, + "event-pubsub": { + "version": "4.3.0", + "dev": true + }, + "eventemitter3": { + "version": "4.0.7", + "dev": true + }, + "events": { + "version": "3.3.0" + }, + "eventsource": { + "version": "1.1.0", + "dev": true, + "requires": { + "original": "^1.0.0" + } + }, + "evp_bytestokey": { + "version": "1.0.3", + "requires": { + "md5.js": "^1.3.4", + "safe-buffer": "^5.1.1" + } + }, + "execa": { + "version": "1.0.0", + "dev": true, + "requires": { + "cross-spawn": "^6.0.0", + "get-stream": "^4.0.0", + "is-stream": "^1.1.0", + "npm-run-path": "^2.0.0", + "p-finally": "^1.0.0", + "signal-exit": "^3.0.0", + "strip-eof": "^1.0.0" + }, + "dependencies": { + "cross-spawn": { + "version": "6.0.5", + "dev": true, + "requires": { + "nice-try": "^1.0.4", + "path-key": "^2.0.1", + "semver": "^5.5.0", + "shebang-command": "^1.2.0", + "which": "^1.2.9" + } + }, + "semver": { + "version": "5.7.1", + "dev": true + } + } + }, + "expand-brackets": { + "version": "2.1.4", + "requires": { + "debug": "^2.3.3", + "define-property": "^0.2.5", + "extend-shallow": "^2.0.1", + "posix-character-classes": "^0.1.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "requires": { + "ms": "2.0.0" + } + }, + "ms": { + "version": "2.0.0" + } + } + }, + "express": { + "version": "4.17.1", + "dev": true, + "requires": { + "accepts": "~1.3.7", + "array-flatten": "1.1.1", + "body-parser": "1.19.0", + "content-disposition": "0.5.3", + "content-type": "~1.0.4", + "cookie": "0.4.0", + "cookie-signature": "1.0.6", + "debug": "2.6.9", + "depd": "~1.1.2", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "finalhandler": "~1.1.2", + "fresh": "0.5.2", + "merge-descriptors": "1.0.1", + "methods": "~1.1.2", + "on-finished": "~2.3.0", + "parseurl": "~1.3.3", + "path-to-regexp": "0.1.7", + "proxy-addr": "~2.0.5", + "qs": "6.7.0", + "range-parser": "~1.2.1", + "safe-buffer": "5.1.2", + "send": "0.17.1", + "serve-static": "1.14.1", + "setprototypeof": "1.1.1", + "statuses": "~1.5.0", + "type-is": "~1.6.18", + "utils-merge": "1.0.1", + "vary": "~1.1.2" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "ms": { + "version": "2.0.0", + "dev": true + }, + "safe-buffer": { + "version": "5.1.2", + "dev": true + } + } + }, + "extend": { + "version": "3.0.2", + "dev": true + }, + "extend-shallow": { + "version": "2.0.1", + "requires": { + "is-extendable": "^0.1.0" + } + }, + "external-editor": { + "version": "3.1.0", + "dev": true, + "requires": { + "chardet": "^0.7.0", + "iconv-lite": "^0.4.24", + "tmp": "^0.0.33" + } + }, + "extglob": { + "version": "2.0.4", + "requires": { + "array-unique": "^0.3.2", + "define-property": "^1.0.0", + "expand-brackets": "^2.1.4", + "extend-shallow": "^2.0.1", + "fragment-cache": "^0.2.1", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + }, + "dependencies": { + "define-property": { + "version": "1.0.0", + "requires": { + "is-descriptor": "^1.0.0" + } + } + } + }, + "extsprintf": { + "version": "1.3.0", + "dev": true + }, + "fast-deep-equal": { + "version": "3.1.3" + }, + "fast-glob": { + "version": "2.2.7", + "requires": { + "@mrmlnc/readdir-enhanced": "^2.2.1", + "@nodelib/fs.stat": "^1.1.2", + "glob-parent": "^3.1.0", + "is-glob": "^4.0.0", + "merge2": "^1.2.3", + "micromatch": "^3.1.10" + }, + "dependencies": { + "@nodelib/fs.stat": { + "version": "1.1.3" + } + } + }, + "fast-json-stable-stringify": { + "version": "2.1.0" + }, + "fast-levenshtein": { + "version": "2.0.6" + }, + "fastq": { + "version": "1.11.0", + "dev": true, + "requires": { + "reusify": "^1.0.4" + } + }, + "faye-websocket": { + "version": "0.11.4", + "dev": true, + "requires": { + "websocket-driver": ">=0.5.1" + } + }, + "figgy-pudding": { + "version": "3.5.2" + }, + "figures": { + "version": "3.2.0", + "dev": true, + "requires": { + "escape-string-regexp": "^1.0.5" + } + }, + "file-entry-cache": { + "version": "6.0.1", + "requires": { + "flat-cache": "^3.0.4" + } + }, + "file-loader": { + "version": "4.3.0", + "dev": true, + "requires": { + "loader-utils": "^1.2.3", + "schema-utils": "^2.5.0" + }, + "dependencies": { + "schema-utils": { + "version": "2.7.1", + "dev": true, + "requires": { + "@types/json-schema": "^7.0.5", + "ajv": "^6.12.4", + "ajv-keywords": "^3.5.2" + } + } + } + }, + "filesize": { + "version": "3.6.1", + "dev": true + }, + "fill-range": { + "version": "4.0.0", + "requires": { + "extend-shallow": "^2.0.1", + "is-number": "^3.0.0", + "repeat-string": "^1.6.1", + "to-regex-range": "^2.1.0" + } + }, + "finalhandler": { + "version": "1.1.2", + "dev": true, + "requires": { + "debug": "2.6.9", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "on-finished": "~2.3.0", + "parseurl": "~1.3.3", + "statuses": "~1.5.0", + "unpipe": "~1.0.0" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "ms": { + "version": "2.0.0", + "dev": true + } + } + }, + "find-cache-dir": { + "version": "2.1.0", + "requires": { + "commondir": "^1.0.1", + "make-dir": "^2.0.0", + "pkg-dir": "^3.0.0" + }, + "dependencies": { + "make-dir": { + "version": "2.1.0", + "requires": { + "pify": "^4.0.1", + "semver": "^5.6.0" + } + }, + "semver": { + "version": "5.7.1" + } + } + }, + "find-up": { + "version": "3.0.0", + "requires": { + "locate-path": "^3.0.0" + } + }, + "flat": { + "version": "5.0.2", + "dev": true + }, + "flat-cache": { + "version": "3.0.4", + "requires": { + "flatted": "^3.1.0", + "rimraf": "^3.0.2" + }, + "dependencies": { + "rimraf": { + "version": "3.0.2", + "requires": { + "glob": "^7.1.3" + } + } + } + }, + "flatted": { + "version": "3.1.1" + }, + "flush-write-stream": { + "version": "1.1.1", + "requires": { + "inherits": "^2.0.3", + "readable-stream": "^2.3.6" + } + }, + "follow-redirects": { + "version": "1.14.1" + }, + "for-in": { + "version": "1.0.2" + }, + "forever-agent": { + "version": "0.6.1", + "dev": true + }, + "fork-ts-checker-webpack-plugin": { + "version": "3.1.1", + "dev": true, + "requires": { + "babel-code-frame": "^6.22.0", + "chalk": "^2.4.1", + "chokidar": "^3.3.0", + "micromatch": "^3.1.10", + "minimatch": "^3.0.4", + "semver": "^5.6.0", + "tapable": "^1.0.0", + "worker-rpc": "^0.1.0" + }, + "dependencies": { + "binary-extensions": { + "version": "2.2.0", + "dev": true + }, + "braces": { + "version": "3.0.2", + "dev": true, + "requires": { + "fill-range": "^7.0.1" + } + }, + "chokidar": { + "version": "3.5.1", + "dev": true, + "requires": { + "anymatch": "~3.1.1", + "braces": "~3.0.2", + "fsevents": "~2.3.1", + "glob-parent": "~5.1.0", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.5.0" + } + }, + "fill-range": { + "version": "7.0.1", + "dev": true, + "requires": { + "to-regex-range": "^5.0.1" + } + }, + "glob-parent": { + "version": "5.1.2", + "dev": true, + "requires": { + "is-glob": "^4.0.1" + } + }, + "is-binary-path": { + "version": "2.1.0", + "dev": true, + "requires": { + "binary-extensions": "^2.0.0" + } + }, + "is-number": { + "version": "7.0.0", + "dev": true + }, + "readdirp": { + "version": "3.5.0", + "dev": true, + "requires": { + "picomatch": "^2.2.1" + } + }, + "semver": { + "version": "5.7.1", + "dev": true + }, + "to-regex-range": { + "version": "5.0.1", + "dev": true, + "requires": { + "is-number": "^7.0.0" + } + } + } + }, + "fork-ts-checker-webpack-plugin-v5": { + "version": "npm:fork-ts-checker-webpack-plugin@5.2.1", + "dev": true, + "optional": true, + "requires": { + "@babel/code-frame": "^7.8.3", + "@types/json-schema": "^7.0.5", + "chalk": "^4.1.0", + "cosmiconfig": "^6.0.0", + "deepmerge": "^4.2.2", + "fs-extra": "^9.0.0", + "memfs": "^3.1.2", + "minimatch": "^3.0.4", + "schema-utils": "2.7.0", + "semver": "^7.3.2", + "tapable": "^1.0.0" + }, + "dependencies": { + "chalk": { + "version": "4.1.1", + "dev": true, + "optional": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "cosmiconfig": { + "version": "6.0.0", + "dev": true, + "optional": true, + "requires": { + "@types/parse-json": "^4.0.0", + "import-fresh": "^3.1.0", + "parse-json": "^5.0.0", + "path-type": "^4.0.0", + "yaml": "^1.7.2" + } + }, + "fs-extra": { + "version": "9.1.0", + "dev": true, + "optional": 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", + "dev": true, + "optional": true + }, + "jsonfile": { + "version": "6.1.0", + "dev": true, + "optional": true, + "requires": { + "graceful-fs": "^4.1.6", + "universalify": "^2.0.0" + } + }, + "lru-cache": { + "version": "6.0.0", + "dev": true, + "optional": true, + "requires": { + "yallist": "^4.0.0" + } + }, + "schema-utils": { + "version": "2.7.0", + "dev": true, + "optional": true, + "requires": { + "@types/json-schema": "^7.0.4", + "ajv": "^6.12.2", + "ajv-keywords": "^3.4.1" + } + }, + "semver": { + "version": "7.3.5", + "dev": true, + "optional": true, + "requires": { + "lru-cache": "^6.0.0" + } + }, + "supports-color": { + "version": "7.2.0", + "dev": true, + "optional": true, + "requires": { + "has-flag": "^4.0.0" + } + }, + "universalify": { + "version": "2.0.0", + "dev": true, + "optional": true + } + } + }, + "form-data": { + "version": "2.3.3", + "dev": true, + "requires": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.6", + "mime-types": "^2.1.12" + } + }, + "forwarded": { + "version": "0.2.0", + "dev": true + }, + "fragment-cache": { + "version": "0.2.1", + "requires": { + "map-cache": "^0.2.2" + } + }, + "fresh": { + "version": "0.5.2", + "dev": true + }, + "from2": { + "version": "2.3.0", + "requires": { + "inherits": "^2.0.1", + "readable-stream": "^2.0.0" + } + }, + "fs-extra": { + "version": "8.1.0", + "requires": { + "graceful-fs": "^4.2.0", + "jsonfile": "^4.0.0", + "universalify": "^0.1.0" + } + }, + "fs-monkey": { + "version": "1.0.3", + "dev": true, + "optional": true + }, + "fs-write-stream-atomic": { + "version": "1.0.10", + "requires": { + "graceful-fs": "^4.1.2", + "iferr": "^0.1.5", + "imurmurhash": "^0.1.4", + "readable-stream": "1 || 2" + } + }, + "fs.realpath": { + "version": "1.0.0" + }, + "function-bind": { + "version": "1.1.1" + }, + "functional-red-black-tree": { + "version": "1.0.1" + }, + "fuzzysearch": { + "version": "1.0.3" + }, + "generic-names": { + "version": "2.0.1", + "dev": true, + "requires": { + "loader-utils": "^1.1.0" + } + }, + "gensync": { + "version": "1.0.0-beta.2" + }, + "get-caller-file": { + "version": "2.0.5", + "dev": true + }, + "get-intrinsic": { + "version": "1.1.1", + "requires": { + "function-bind": "^1.1.1", + "has": "^1.0.3", + "has-symbols": "^1.0.1" + } + }, + "get-own-enumerable-property-symbols": { + "version": "3.0.2" + }, + "get-stream": { + "version": "4.1.0", + "dev": true, + "requires": { + "pump": "^3.0.0" + } + }, + "get-value": { + "version": "2.0.6" + }, + "getpass": { + "version": "0.1.7", + "dev": true, + "requires": { + "assert-plus": "^1.0.0" + } + }, + "glob": { + "version": "7.1.7", + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "glob-parent": { + "version": "3.1.0", + "requires": { + "is-glob": "^3.1.0", + "path-dirname": "^1.0.0" + }, + "dependencies": { + "is-glob": { + "version": "3.1.0", + "requires": { + "is-extglob": "^2.1.0" + } + } + } + }, + "glob-to-regexp": { + "version": "0.3.0" + }, + "globals": { + "version": "11.12.0" + }, + "globby": { + "version": "9.2.0", + "requires": { + "@types/glob": "^7.1.1", + "array-union": "^1.0.2", + "dir-glob": "^2.2.2", + "fast-glob": "^2.2.6", + "glob": "^7.1.3", + "ignore": "^4.0.3", + "pify": "^4.0.1", + "slash": "^2.0.0" + } + }, + "graceful-fs": { + "version": "4.2.6" + }, + "graphlib": { + "version": "2.1.8", + "resolved": "https://registry.npmjs.org/graphlib/-/graphlib-2.1.8.tgz", + "integrity": "sha512-jcLLfkpoVGmH7/InMC/1hIvOPSUh38oJtGhvrOFGzioE1DZ+0YW16RgmOJhHiuWTvGiJQ9Z1Ik43JvkRPRvE+A==", + "requires": { + "lodash": "^4.17.15" + } + }, + "gray-matter": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/gray-matter/-/gray-matter-4.0.3.tgz", + "integrity": "sha512-5v6yZd4JK3eMI3FqqCouswVqwugaA9r4dNZB1wwcmrD02QkV5H0y7XBQW8QwQqEaZY1pM9aqORSORhJRdNK44Q==", + "requires": { + "js-yaml": "^3.13.1", + "kind-of": "^6.0.2", + "section-matter": "^1.0.0", + "strip-bom-string": "^1.0.0" + }, + "dependencies": { + "kind-of": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==" + } + } + }, + "gzip-size": { + "version": "5.1.1", + "dev": true, + "requires": { + "duplexer": "^0.1.1", + "pify": "^4.0.1" + } + }, + "handle-thing": { + "version": "2.0.1", + "dev": true + }, + "har-schema": { + "version": "2.0.0", + "dev": true + }, + "har-validator": { + "version": "5.1.5", + "dev": true, + "requires": { + "ajv": "^6.12.3", + "har-schema": "^2.0.0" + } + }, + "has": { + "version": "1.0.3", + "requires": { + "function-bind": "^1.1.1" + } + }, + "has-ansi": { + "version": "2.0.0", + "dev": true, + "requires": { + "ansi-regex": "^2.0.0" + } + }, + "has-bigints": { + "version": "1.0.1", + "dev": true + }, + "has-flag": { + "version": "3.0.0" + }, + "has-symbols": { + "version": "1.0.2" + }, + "has-value": { + "version": "1.0.0", + "requires": { + "get-value": "^2.0.6", + "has-values": "^1.0.0", + "isobject": "^3.0.0" + } + }, + "has-values": { + "version": "1.0.0", + "requires": { + "is-number": "^3.0.0", + "kind-of": "^4.0.0" + }, + "dependencies": { + "kind-of": { + "version": "4.0.0", + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "hash-base": { + "version": "3.1.0", + "requires": { + "inherits": "^2.0.4", + "readable-stream": "^3.6.0", + "safe-buffer": "^5.2.0" + }, + "dependencies": { + "readable-stream": { + "version": "3.6.0", + "requires": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + } + } + } + }, + "hash-sum": { + "version": "1.0.2" + }, + "hash.js": { + "version": "1.1.7", + "requires": { + "inherits": "^2.0.3", + "minimalistic-assert": "^1.0.1" + } + }, + "he": { + "version": "1.2.0" + }, + "hex-color-regex": { + "version": "1.1.0", + "dev": true + }, + "highlight.js": { + "version": "10.7.3" + }, + "hmac-drbg": { + "version": "1.0.1", + "requires": { + "hash.js": "^1.0.3", + "minimalistic-assert": "^1.0.0", + "minimalistic-crypto-utils": "^1.0.1" + } + }, + "hoopy": { + "version": "0.1.4", + "dev": true + }, + "hosted-git-info": { + "version": "2.8.9", + "dev": true + }, + "hpack.js": { + "version": "2.1.6", + "dev": true, + "requires": { + "inherits": "^2.0.1", + "obuf": "^1.0.0", + "readable-stream": "^2.0.1", + "wbuf": "^1.1.0" + } + }, + "hsl-regex": { + "version": "1.0.0", + "dev": true + }, + "hsla-regex": { + "version": "1.0.0", + "dev": true + }, + "html-entities": { + "version": "1.4.0", + "dev": true + }, + "html-minifier": { + "version": "3.5.21", + "dev": true, + "requires": { + "camel-case": "3.0.x", + "clean-css": "4.2.x", + "commander": "2.17.x", + "he": "1.2.x", + "param-case": "2.1.x", + "relateurl": "0.2.x", + "uglify-js": "3.4.x" + }, + "dependencies": { + "commander": { + "version": "2.17.1", + "dev": true + } + } + }, + "html-tags": { + "version": "2.0.0", + "dev": true + }, + "html-webpack-plugin": { + "version": "3.2.0", + "dev": true, + "requires": { + "html-minifier": "^3.2.3", + "loader-utils": "^0.2.16", + "lodash": "^4.17.3", + "pretty-error": "^2.0.2", + "tapable": "^1.0.0", + "toposort": "^1.0.0", + "util.promisify": "1.0.0" + }, + "dependencies": { + "big.js": { + "version": "3.2.0", + "dev": true + }, + "emojis-list": { + "version": "2.1.0", + "dev": true + }, + "json5": { + "version": "0.5.1", + "dev": true + }, + "loader-utils": { + "version": "0.2.17", + "dev": true, + "requires": { + "big.js": "^3.1.3", + "emojis-list": "^2.0.0", + "json5": "^0.5.0", + "object-assign": "^4.0.1" + } + } + } + }, + "htmlparser2": { + "version": "6.1.0", + "dev": true, + "requires": { + "domelementtype": "^2.0.1", + "domhandler": "^4.0.0", + "domutils": "^2.5.2", + "entities": "^2.0.0" + } + }, + "http-deceiver": { + "version": "1.2.7", + "dev": true + }, + "http-errors": { + "version": "1.7.2", + "dev": true, + "requires": { + "depd": "~1.1.2", + "inherits": "2.0.3", + "setprototypeof": "1.1.1", + "statuses": ">= 1.5.0 < 2", + "toidentifier": "1.0.0" + }, + "dependencies": { + "inherits": { + "version": "2.0.3", + "dev": true + } + } + }, + "http-parser-js": { + "version": "0.5.3", + "dev": true + }, + "http-proxy": { + "version": "1.18.1", + "dev": true, + "requires": { + "eventemitter3": "^4.0.0", + "follow-redirects": "^1.0.0", + "requires-port": "^1.0.0" + } + }, + "http-proxy-middleware": { + "version": "0.19.1", + "dev": true, + "requires": { + "http-proxy": "^1.17.0", + "is-glob": "^4.0.0", + "lodash": "^4.17.11", + "micromatch": "^3.1.10" + } + }, + "http-signature": { + "version": "1.2.0", + "dev": true, + "requires": { + "assert-plus": "^1.0.0", + "jsprim": "^1.2.2", + "sshpk": "^1.7.0" + } + }, + "https-browserify": { + "version": "1.0.0" + }, + "human-signals": { + "version": "1.1.1", + "dev": true + }, + "iconv-lite": { + "version": "0.4.24", + "requires": { + "safer-buffer": ">= 2.1.2 < 3" + } + }, + "icss-replace-symbols": { + "version": "1.1.0", + "dev": true + }, + "icss-utils": { + "version": "4.1.1", + "dev": true, + "requires": { + "postcss": "^7.0.14" + } + }, + "idb": { + "version": "6.1.4", + "resolved": "https://registry.npmjs.org/idb/-/idb-6.1.4.tgz", + "integrity": "sha512-DshI5yxIB3NYc47cPpfipYX8MSIgQPqVR+WoaGI9EDq6cnLGgGYR1fp6z8/Bq9vMS8Jq1bS3eWUgXpFO5+ypSA==" + }, + "ieee754": { + "version": "1.2.1" + }, + "iferr": { + "version": "0.1.5" + }, + "ignore": { + "version": "4.0.6" + }, + "import-cwd": { + "version": "2.1.0", + "dev": true, + "requires": { + "import-from": "^2.1.0" + } + }, + "import-fresh": { + "version": "3.3.0", + "requires": { + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" + }, + "dependencies": { + "resolve-from": { + "version": "4.0.0" + } + } + }, + "import-from": { + "version": "2.1.0", + "dev": true, + "requires": { + "resolve-from": "^3.0.0" + } + }, + "import-local": { + "version": "2.0.0", + "dev": true, + "requires": { + "pkg-dir": "^3.0.0", + "resolve-cwd": "^2.0.0" + } + }, + "imurmurhash": { + "version": "0.1.4" + }, + "indexes-of": { + "version": "1.0.1", + "dev": true + }, + "infer-owner": { + "version": "1.0.4" + }, + "inflight": { + "version": "1.0.6", + "requires": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "inherits": { + "version": "2.0.4" + }, + "inquirer": { + "version": "7.3.3", + "dev": true, + "requires": { + "ansi-escapes": "^4.2.1", + "chalk": "^4.1.0", + "cli-cursor": "^3.1.0", + "cli-width": "^3.0.0", + "external-editor": "^3.0.3", + "figures": "^3.0.0", + "lodash": "^4.17.19", + "mute-stream": "0.0.8", + "run-async": "^2.4.0", + "rxjs": "^6.6.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0", + "through": "^2.3.6" + }, + "dependencies": { + "chalk": { + "version": "4.1.1", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "has-flag": { + "version": "4.0.0", + "dev": true + }, + "supports-color": { + "version": "7.2.0", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "insert-text-at-cursor": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/insert-text-at-cursor/-/insert-text-at-cursor-0.3.0.tgz", + "integrity": "sha512-/nPtyeX9xPUvxZf+r0518B7uqNKlP+LqNJqSiXFEaa2T71rWIwTVXGH7hB9xO/EVdwa5/pWlFCPwShOW81XIxQ==" + }, + "internal-ip": { + "version": "4.3.0", + "dev": true, + "requires": { + "default-gateway": "^4.2.0", + "ipaddr.js": "^1.9.0" + }, + "dependencies": { + "default-gateway": { + "version": "4.2.0", + "dev": true, + "requires": { + "execa": "^1.0.0", + "ip-regex": "^2.1.0" + } + } + } + }, + "ip": { + "version": "1.1.5", + "dev": true + }, + "ip-regex": { + "version": "2.1.0", + "dev": true + }, + "ipaddr.js": { + "version": "1.9.1", + "dev": true + }, + "is-absolute-url": { + "version": "3.0.3", + "dev": true + }, + "is-accessor-descriptor": { + "version": "1.0.0", + "requires": { + "kind-of": "^6.0.0" + }, + "dependencies": { + "kind-of": { + "version": "6.0.3" + } + } + }, + "is-arguments": { + "version": "1.1.0", + "dev": true, + "requires": { + "call-bind": "^1.0.0" + } + }, + "is-arrayish": { + "version": "0.2.1", + "dev": true + }, + "is-bigint": { + "version": "1.0.2", + "dev": true + }, + "is-binary-path": { + "version": "1.0.1", + "devOptional": true, + "requires": { + "binary-extensions": "^1.0.0" + } + }, + "is-boolean-object": { + "version": "1.1.1", + "dev": true, + "requires": { + "call-bind": "^1.0.2" + } + }, + "is-buffer": { + "version": "1.1.6" + }, + "is-callable": { + "version": "1.2.3", + "dev": true + }, + "is-ci": { + "version": "1.2.1", + "dev": true, + "requires": { + "ci-info": "^1.5.0" + } + }, + "is-color-stop": { + "version": "1.1.0", + "dev": true, + "requires": { + "css-color-names": "^0.0.4", + "hex-color-regex": "^1.1.0", + "hsl-regex": "^1.0.0", + "hsla-regex": "^1.0.0", + "rgb-regex": "^1.0.1", + "rgba-regex": "^1.0.0" + } + }, + "is-core-module": { + "version": "2.4.0", + "requires": { + "has": "^1.0.3" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "requires": { + "kind-of": "^6.0.0" + }, + "dependencies": { + "kind-of": { + "version": "6.0.3" + } + } + }, + "is-date-object": { + "version": "1.0.4", + "dev": true + }, + "is-descriptor": { + "version": "1.0.2", + "requires": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + }, + "dependencies": { + "kind-of": { + "version": "6.0.3" + } + } + }, + "is-directory": { + "version": "0.3.1", + "dev": true + }, + "is-docker": { + "version": "2.2.1", + "dev": true + }, + "is-extendable": { + "version": "0.1.1" + }, + "is-extglob": { + "version": "2.1.1" + }, + "is-fullwidth-code-point": { + "version": "2.0.0", + "dev": true + }, + "is-glob": { + "version": "4.0.1", + "requires": { + "is-extglob": "^2.1.1" + } + }, + "is-module": { + "version": "1.0.0" + }, + "is-negative-zero": { + "version": "2.0.1", + "dev": true + }, + "is-number": { + "version": "3.0.0", + "requires": { + "kind-of": "^3.0.2" + } + }, + "is-number-object": { + "version": "1.0.5", + "dev": true + }, + "is-obj": { + "version": "1.0.1" + }, + "is-path-cwd": { + "version": "2.2.0", + "dev": true + }, + "is-path-in-cwd": { + "version": "2.1.0", + "dev": true, + "requires": { + "is-path-inside": "^2.1.0" + } + }, + "is-path-inside": { + "version": "2.1.0", + "dev": true, + "requires": { + "path-is-inside": "^1.0.2" + } + }, + "is-plain-obj": { + "version": "3.0.0", + "dev": true + }, + "is-plain-object": { + "version": "2.0.4", + "requires": { + "isobject": "^3.0.1" + } + }, + "is-promise": { + "version": "2.2.2" + }, + "is-regex": { + "version": "1.1.3", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "has-symbols": "^1.0.2" + } + }, + "is-regexp": { + "version": "1.0.0" + }, + "is-resolvable": { + "version": "1.1.0", + "dev": true + }, + "is-stream": { + "version": "1.1.0", + "dev": true + }, + "is-string": { + "version": "1.0.6", + "dev": true + }, + "is-symbol": { + "version": "1.0.4", + "dev": true, + "requires": { + "has-symbols": "^1.0.2" + } + }, + "is-typedarray": { + "version": "1.0.0", + "dev": true + }, + "is-valid-glob": { + "version": "1.0.0", + "dev": true + }, + "is-windows": { + "version": "1.0.2" + }, + "is-wsl": { + "version": "1.1.0" + }, + "isarray": { + "version": "1.0.0" + }, + "isexe": { + "version": "2.0.0" + }, + "isobject": { + "version": "3.0.1" + }, + "isstream": { + "version": "0.1.2", + "dev": true + }, + "javascript-stringify": { + "version": "2.1.0", + "dev": true + }, + "jest-worker": { + "version": "26.6.2", + "requires": { + "@types/node": "*", + "merge-stream": "^2.0.0", + "supports-color": "^7.0.0" + }, + "dependencies": { + "has-flag": { + "version": "4.0.0" + }, + "supports-color": { + "version": "7.2.0", + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "js-message": { + "version": "1.0.7", + "dev": true + }, + "js-queue": { + "version": "2.0.2", + "dev": true, + "requires": { + "easy-stack": "^1.0.1" + } + }, + "js-tokens": { + "version": "4.0.0" + }, + "js-yaml": { + "version": "3.14.1", + "requires": { + "argparse": "^1.0.7", + "esprima": "^4.0.0" + } + }, + "jsbn": { + "version": "0.1.1", + "dev": true + }, + "jsesc": { + "version": "2.5.2" + }, + "json-parse-better-errors": { + "version": "1.0.2" + }, + "json-parse-even-better-errors": { + "version": "2.3.1", + "dev": true + }, + "json-schema": { + "version": "0.2.3", + "dev": true + }, + "json-schema-traverse": { + "version": "0.4.1" + }, + "json-stable-stringify-without-jsonify": { + "version": "1.0.1" + }, + "json-stringify-safe": { + "version": "5.0.1", + "dev": true + }, + "json3": { + "version": "3.3.3", + "dev": true + }, + "json5": { + "version": "2.2.0", + "requires": { + "minimist": "^1.2.5" + } + }, + "jsonfile": { + "version": "4.0.0", + "requires": { + "graceful-fs": "^4.1.6" + } + }, + "jsprim": { + "version": "1.4.1", + "dev": true, + "requires": { + "assert-plus": "1.0.0", + "extsprintf": "1.3.0", + "json-schema": "0.2.3", + "verror": "1.10.0" + } + }, + "katex": { + "version": "0.13.18", + "resolved": "https://registry.npmjs.org/katex/-/katex-0.13.18.tgz", + "integrity": "sha512-a3dC4NSVSDU3O1WZbTnOiA8rVNJ2lSiomOl0kmckCIGObccIHXof7gAseIY0o1gjEspe+34ZeSEX2D1ChFKIvA==", + "requires": { + "commander": "^6.0.0" + }, + "dependencies": { + "commander": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-6.2.1.tgz", + "integrity": "sha512-U7VdrJFnJgo4xjrHpTzu0yrHPGImdsmD95ZlgYSEajAn2JKzDhDTPG9kBTefmObL2w/ngeZnilk+OV9CG3d7UA==" + } + } + }, + "khroma": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/khroma/-/khroma-1.4.1.tgz", + "integrity": "sha512-+GmxKvmiRuCcUYDgR7g5Ngo0JEDeOsGdNONdU2zsiBQaK4z19Y2NvXqfEDE0ZiIrg45GTZyAnPLVsLZZACYm3Q==" + }, + "killable": { + "version": "1.0.1", + "dev": true + }, + "kind-of": { + "version": "3.2.2", + "requires": { + "is-buffer": "^1.1.5" + } + }, + "launch-editor": { + "version": "2.2.1", + "dev": true, + "requires": { + "chalk": "^2.3.0", + "shell-quote": "^1.6.1" + } + }, + "launch-editor-middleware": { + "version": "2.2.1", + "dev": true, + "requires": { + "launch-editor": "^2.2.1" + } + }, + "levn": { + "version": "0.4.1", + "requires": { + "prelude-ls": "^1.2.1", + "type-check": "~0.4.0" + } + }, + "lines-and-columns": { + "version": "1.1.6", + "dev": true + }, + "linkify-it": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/linkify-it/-/linkify-it-3.0.2.tgz", + "integrity": "sha512-gDBO4aHNZS6coiZCKVhSNh43F9ioIL4JwRjLZPkoLIY4yZFwg264Y5lu2x6rb1Js42Gh6Yqm2f6L2AJcnkzinQ==", + "requires": { + "uc.micro": "^1.0.1" + } + }, + "loader-fs-cache": { + "version": "1.0.3", + "dev": true, + "requires": { + "find-cache-dir": "^0.1.1", + "mkdirp": "^0.5.1" + }, + "dependencies": { + "find-cache-dir": { + "version": "0.1.1", + "dev": true, + "requires": { + "commondir": "^1.0.1", + "mkdirp": "^0.5.1", + "pkg-dir": "^1.0.0" + } + }, + "find-up": { + "version": "1.1.2", + "dev": true, + "requires": { + "path-exists": "^2.0.0", + "pinkie-promise": "^2.0.0" + } + }, + "path-exists": { + "version": "2.1.0", + "dev": true, + "requires": { + "pinkie-promise": "^2.0.0" + } + }, + "pkg-dir": { + "version": "1.0.0", + "dev": true, + "requires": { + "find-up": "^1.0.0" + } + } + } + }, + "loader-runner": { + "version": "2.4.0" + }, + "loader-utils": { + "version": "1.4.0", + "requires": { + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^1.0.1" + }, + "dependencies": { + "json5": { + "version": "1.0.1", + "requires": { + "minimist": "^1.2.0" + } + } + } + }, + "locate-path": { + "version": "3.0.0", + "requires": { + "p-locate": "^3.0.0", + "path-exists": "^3.0.0" + } + }, + "lodash": { + "version": "4.17.21" + }, + "lodash._reinterpolate": { + "version": "3.0.0", + "dev": true + }, + "lodash.assign": { + "version": "4.2.0", + "dev": true + }, + "lodash.camelcase": { + "version": "4.3.0", + "dev": true + }, + "lodash.clonedeep": { + "version": "4.5.0" + }, + "lodash.debounce": { + "version": "4.0.8" + }, + "lodash.defaults": { + "version": "4.2.0", + "dev": true + }, + "lodash.defaultsdeep": { + "version": "4.6.1", + "dev": true + }, + "lodash.foreach": { + "version": "4.5.0", + "dev": true + }, + "lodash.get": { + "version": "4.4.2", + "dev": true + }, + "lodash.kebabcase": { + "version": "4.1.1", + "dev": true + }, + "lodash.mapvalues": { + "version": "4.6.0", + "dev": true + }, + "lodash.memoize": { + "version": "4.1.2", + "dev": true + }, + "lodash.merge": { + "version": "4.6.2" + }, + "lodash.pick": { + "version": "4.4.0" + }, + "lodash.sortby": { + "version": "4.7.0" + }, + "lodash.template": { + "version": "4.5.0", + "dev": true, + "requires": { + "lodash._reinterpolate": "^3.0.0", + "lodash.templatesettings": "^4.0.0" + } + }, + "lodash.templatesettings": { + "version": "4.2.0", + "dev": true, + "requires": { + "lodash._reinterpolate": "^3.0.0" + } + }, + "lodash.transform": { + "version": "4.6.0", + "dev": true + }, + "lodash.truncate": { + "version": "4.4.2" + }, + "lodash.uniq": { + "version": "4.5.0", + "dev": true + }, + "log-symbols": { + "version": "2.2.0", + "dev": true, + "requires": { + "chalk": "^2.0.1" + } + }, + "loglevel": { + "version": "1.7.1", + "dev": true + }, + "loose-envify": { + "version": "1.4.0", + "requires": { + "js-tokens": "^3.0.0 || ^4.0.0" + } + }, + "lower-case": { + "version": "1.1.4", + "dev": true + }, + "lru-cache": { + "version": "5.1.1", + "requires": { + "yallist": "^3.0.2" + }, + "dependencies": { + "yallist": { + "version": "3.1.1" + } + } + }, + "magic-string": { + "version": "0.25.7", + "requires": { + "sourcemap-codec": "^1.4.4" + } + }, + "make-dir": { + "version": "3.1.0", + "dev": true, + "requires": { + "semver": "^6.0.0" + } + }, + "map-cache": { + "version": "0.2.2" + }, + "map-visit": { + "version": "1.0.0", + "requires": { + "object-visit": "^1.0.0" + } + }, + "markdown-it": { + "version": "12.2.0", + "resolved": "https://registry.npmjs.org/markdown-it/-/markdown-it-12.2.0.tgz", + "integrity": "sha512-Wjws+uCrVQRqOoJvze4HCqkKl1AsSh95iFAeQDwnyfxM09divCBSXlDR1uTvyUP3Grzpn4Ru8GeCxYPM8vkCQg==", + "requires": { + "argparse": "^2.0.1", + "entities": "~2.1.0", + "linkify-it": "^3.0.1", + "mdurl": "^1.0.1", + "uc.micro": "^1.0.5" + }, + "dependencies": { + "argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==" + }, + "entities": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-2.1.0.tgz", + "integrity": "sha512-hCx1oky9PFrJ611mf0ifBLBRW8lUUVRlFolb5gWRfIELabBlbp9xZvrqZLZAs+NxFnbfQoeGd8wDkygjg7U85w==" + } + } + }, + "markdown-it-anchor": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/markdown-it-anchor/-/markdown-it-anchor-5.3.0.tgz", + "integrity": "sha512-/V1MnLL/rgJ3jkMWo84UR+K+jF1cxNG1a+KwqeXqTIJ+jtA8aWSHuigx8lTzauiIjBDbwF3NcWQMotd0Dm39jA==", + "requires": {} + }, + "markdown-it-attrs": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/markdown-it-attrs/-/markdown-it-attrs-4.0.0.tgz", + "integrity": "sha512-uLjtdCmhhmL3BuZsReYkFxk74qKjj5ahe34teBpOCJ4hYZZl7/ftLyXWLowngC2moRkbLEvKwN/7TMwbhbHE/A==", + "requires": {} + }, + "markdown-it-chain": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/markdown-it-chain/-/markdown-it-chain-1.3.0.tgz", + "integrity": "sha512-XClV8I1TKy8L2qsT9iX3qiV+50ZtcInGXI80CA+DP62sMs7hXlyV/RM3hfwy5O3Ad0sJm9xIwQELgANfESo8mQ==", + "requires": { + "webpack-chain": "^4.9.0" + }, + "dependencies": { + "deepmerge": { + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-1.5.2.tgz", + "integrity": "sha512-95k0GDqvBjZavkuvzx/YqVLv/6YYa17fz6ILMSf7neqQITCPbnfEnQvEgMPNjH4kgobe7+WIL0yJEHku+H3qtQ==" + }, + "javascript-stringify": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/javascript-stringify/-/javascript-stringify-1.6.0.tgz", + "integrity": "sha1-FC0RHzpuPa6PSpr9d9RYVbWpzOM=" + }, + "webpack-chain": { + "version": "4.12.1", + "resolved": "https://registry.npmjs.org/webpack-chain/-/webpack-chain-4.12.1.tgz", + "integrity": "sha512-BCfKo2YkDe2ByqkEWe1Rw+zko4LsyS75LVr29C6xIrxAg9JHJ4pl8kaIZ396SUSNp6b4815dRZPSTAS8LlURRQ==", + "requires": { + "deepmerge": "^1.5.2", + "javascript-stringify": "^1.6.0" + } + } + } + }, + "markdown-it-container": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/markdown-it-container/-/markdown-it-container-3.0.0.tgz", + "integrity": "sha512-y6oKTq4BB9OQuY/KLfk/O3ysFhB3IMYoIWhGJEidXt1NQFocFK2sA2t0NYZAMyMShAGL6x5OPIbrmXPIqaN9rw==" + }, + "markdown-it-emoji": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/markdown-it-emoji/-/markdown-it-emoji-1.4.0.tgz", + "integrity": "sha1-m+4OmpkKljupbfaYDE/dsF37Tcw=" + }, + "markdown-it-table-of-contents": { + "version": "0.4.4", + "resolved": "https://registry.npmjs.org/markdown-it-table-of-contents/-/markdown-it-table-of-contents-0.4.4.tgz", + "integrity": "sha512-TAIHTHPwa9+ltKvKPWulm/beozQU41Ab+FIefRaQV1NRnpzwcV9QOe6wXQS5WLivm5Q/nlo0rl6laGkMDZE7Gw==" + }, + "material-colors": { + "version": "1.2.6" + }, + "md5.js": { + "version": "1.3.5", + "requires": { + "hash-base": "^3.0.0", + "inherits": "^2.0.1", + "safe-buffer": "^5.1.2" + } + }, + "mdn-data": { + "version": "2.0.4", + "dev": true + }, + "mdurl": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/mdurl/-/mdurl-1.0.1.tgz", + "integrity": "sha1-/oWy7HWlkDfyrf7BAP1sYBdhFS4=" + }, + "media-typer": { + "version": "0.3.0", + "dev": true + }, + "memfs": { + "version": "3.2.2", + "dev": true, + "optional": true, + "requires": { + "fs-monkey": "1.0.3" + } + }, + "memory-fs": { + "version": "0.4.1", + "requires": { + "errno": "^0.1.3", + "readable-stream": "^2.0.1" + } + }, + "merge-descriptors": { + "version": "1.0.1", + "dev": true + }, + "merge-source-map": { + "version": "1.1.0", + "dev": true, + "requires": { + "source-map": "^0.6.1" + } + }, + "merge-stream": { + "version": "2.0.0" + }, + "merge2": { + "version": "1.4.1" + }, + "mermaid": { + "version": "8.12.1", + "resolved": "https://registry.npmjs.org/mermaid/-/mermaid-8.12.1.tgz", + "integrity": "sha512-0UCcSF0FLoNcPBsRF4f9OIV32t41fV18//z8o3S+FDz2PbDA1CRGKdQF9IX84VP4Tv9kcgJI/oqJdcBEtB/GPA==", + "requires": { + "@braintree/sanitize-url": "^3.1.0", + "d3": "^5.16.0", + "dagre": "^0.8.5", + "dagre-d3": "^0.6.4", + "dompurify": "2.3.1", + "graphlib": "^2.1.8", + "khroma": "^1.4.1", + "moment-mini": "^2.24.0", + "stylis": "^4.0.10" + } + }, + "methods": { + "version": "1.1.2", + "dev": true + }, + "microevent.ts": { + "version": "0.1.1", + "dev": true + }, + "micromatch": { + "version": "3.1.10", + "requires": { + "arr-diff": "^4.0.0", + "array-unique": "^0.3.2", + "braces": "^2.3.1", + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "extglob": "^2.0.4", + "fragment-cache": "^0.2.1", + "kind-of": "^6.0.2", + "nanomatch": "^1.2.9", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.2" + }, + "dependencies": { + "define-property": { + "version": "2.0.2", + "requires": { + "is-descriptor": "^1.0.2", + "isobject": "^3.0.1" + } + }, + "extend-shallow": { + "version": "3.0.2", + "requires": { + "assign-symbols": "^1.0.0", + "is-extendable": "^1.0.1" + } + }, + "is-extendable": { + "version": "1.0.1", + "requires": { + "is-plain-object": "^2.0.4" + } + }, + "kind-of": { + "version": "6.0.3" + } + } + }, + "miller-rabin": { + "version": "4.0.1", + "requires": { + "bn.js": "^4.0.0", + "brorand": "^1.0.1" + } + }, + "mime": { + "version": "2.5.2", + "dev": true + }, + "mime-db": { + "version": "1.48.0", + "dev": true + }, + "mime-types": { + "version": "2.1.31", + "dev": true, + "requires": { + "mime-db": "1.48.0" + } + }, + "mimic-fn": { + "version": "2.1.0", + "dev": true + }, + "mini-css-extract-plugin": { + "version": "0.9.0", + "dev": true, + "requires": { + "loader-utils": "^1.1.0", + "normalize-url": "1.9.1", + "schema-utils": "^1.0.0", + "webpack-sources": "^1.1.0" + } + }, + "minimalistic-assert": { + "version": "1.0.1" + }, + "minimalistic-crypto-utils": { + "version": "1.0.1" + }, + "minimatch": { + "version": "3.0.4", + "requires": { + "brace-expansion": "^1.1.7" + } + }, + "minimist": { + "version": "1.2.5" + }, + "minipass": { + "version": "3.1.3", + "dev": true, + "requires": { + "yallist": "^4.0.0" + } + }, + "mississippi": { + "version": "3.0.0", + "requires": { + "concat-stream": "^1.5.0", + "duplexify": "^3.4.2", + "end-of-stream": "^1.1.0", + "flush-write-stream": "^1.0.0", + "from2": "^2.1.0", + "parallel-transform": "^1.1.0", + "pump": "^3.0.0", + "pumpify": "^1.3.3", + "stream-each": "^1.1.0", + "through2": "^2.0.0" + } + }, + "mixin-deep": { + "version": "1.3.2", + "requires": { + "for-in": "^1.0.2", + "is-extendable": "^1.0.1" + }, + "dependencies": { + "is-extendable": { + "version": "1.0.1", + "requires": { + "is-plain-object": "^2.0.4" + } + } + } + }, + "mkdirp": { + "version": "0.5.5", + "requires": { + "minimist": "^1.2.5" + } + }, + "moment": { + "version": "2.29.1" + }, + "moment-mini": { + "version": "2.24.0", + "resolved": "https://registry.npmjs.org/moment-mini/-/moment-mini-2.24.0.tgz", + "integrity": "sha512-9ARkWHBs+6YJIvrIp0Ik5tyTTtP9PoV0Ssu2Ocq5y9v8+NOOpWiRshAp8c4rZVWTOe+157on/5G+zj5pwIQFEQ==" + }, + "move-concurrently": { + "version": "1.0.1", + "requires": { + "aproba": "^1.1.1", + "copy-concurrently": "^1.0.0", + "fs-write-stream-atomic": "^1.0.8", + "mkdirp": "^0.5.1", + "rimraf": "^2.5.4", + "run-queue": "^1.0.3" + } + }, + "ms": { + "version": "2.1.2" + }, + "multicast-dns": { + "version": "6.2.3", + "dev": true, + "requires": { + "dns-packet": "^1.3.1", + "thunky": "^1.0.2" + } + }, + "multicast-dns-service-types": { + "version": "1.1.0", + "dev": true + }, + "mute-stream": { + "version": "0.0.8", + "dev": true + }, + "mz": { + "version": "2.7.0", + "dev": true, + "requires": { + "any-promise": "^1.0.0", + "object-assign": "^4.0.1", + "thenify-all": "^1.0.0" + } + }, + "nanoid": { + "version": "3.1.23", + "dev": true + }, + "nanomatch": { + "version": "1.2.13", + "requires": { + "arr-diff": "^4.0.0", + "array-unique": "^0.3.2", + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "fragment-cache": "^0.2.1", + "is-windows": "^1.0.2", + "kind-of": "^6.0.2", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + }, + "dependencies": { + "define-property": { + "version": "2.0.2", + "requires": { + "is-descriptor": "^1.0.2", + "isobject": "^3.0.1" + } + }, + "extend-shallow": { + "version": "3.0.2", + "requires": { + "assign-symbols": "^1.0.0", + "is-extendable": "^1.0.1" + } + }, + "is-extendable": { + "version": "1.0.1", + "requires": { + "is-plain-object": "^2.0.4" + } + }, + "kind-of": { + "version": "6.0.3" + } + } + }, + "natural-compare": { + "version": "1.4.0" + }, + "negotiator": { + "version": "0.6.2", + "dev": true + }, + "neo-async": { + "version": "2.6.2" + }, + "nice-try": { + "version": "1.0.5", + "dev": true + }, + "no-case": { + "version": "2.3.2", + "dev": true, + "requires": { + "lower-case": "^1.1.1" + } + }, + "node-fetch": { + "version": "2.6.1" + }, + "node-forge": { + "version": "0.10.0", + "dev": true + }, + "node-ipc": { + "version": "9.1.4", + "dev": true, + "requires": { + "event-pubsub": "4.3.0", + "js-message": "1.0.7", + "js-queue": "2.0.2" + } + }, + "node-libs-browser": { + "version": "2.2.1", + "requires": { + "assert": "^1.1.1", + "browserify-zlib": "^0.2.0", + "buffer": "^4.3.0", + "console-browserify": "^1.1.0", + "constants-browserify": "^1.0.0", + "crypto-browserify": "^3.11.0", + "domain-browser": "^1.1.1", + "events": "^3.0.0", + "https-browserify": "^1.0.0", + "os-browserify": "^0.3.0", + "path-browserify": "0.0.1", + "process": "^0.11.10", + "punycode": "^1.2.4", + "querystring-es3": "^0.2.0", + "readable-stream": "^2.3.3", + "stream-browserify": "^2.0.1", + "stream-http": "^2.7.2", + "string_decoder": "^1.0.0", + "timers-browserify": "^2.0.4", + "tty-browserify": "0.0.0", + "url": "^0.11.0", + "util": "^0.11.0", + "vm-browserify": "^1.0.1" + }, + "dependencies": { + "punycode": { + "version": "1.4.1" + } + } + }, + "node-releases": { + "version": "1.1.73" + }, + "normalize-package-data": { + "version": "2.5.0", + "dev": true, + "requires": { + "hosted-git-info": "^2.1.4", + "resolve": "^1.10.0", + "semver": "2 || 3 || 4 || 5", + "validate-npm-package-license": "^3.0.1" + }, + "dependencies": { + "semver": { + "version": "5.7.1", + "dev": true + } + } + }, + "normalize-path": { + "version": "3.0.0", + "devOptional": true + }, + "normalize-range": { + "version": "0.1.2", + "dev": true + }, + "normalize-url": { + "version": "1.9.1", + "dev": true, + "requires": { + "object-assign": "^4.0.1", + "prepend-http": "^1.0.0", + "query-string": "^4.1.0", + "sort-keys": "^1.0.0" + } + }, + "npm-run-path": { + "version": "2.0.2", + "dev": true, + "requires": { + "path-key": "^2.0.0" + } + }, + "nth-check": { + "version": "2.0.0", + "dev": true, + "requires": { + "boolbase": "^1.0.0" + } + }, + "num2fraction": { + "version": "1.2.2", + "dev": true + }, + "oauth-sign": { + "version": "0.9.0", + "dev": true + }, + "object-assign": { + "version": "4.1.1" + }, + "object-copy": { + "version": "0.1.0", + "requires": { + "copy-descriptor": "^0.1.0", + "define-property": "^0.2.5", + "kind-of": "^3.0.3" + } + }, + "object-hash": { + "version": "1.3.1", + "dev": true + }, + "object-inspect": { + "version": "1.10.3", + "dev": true + }, + "object-is": { + "version": "1.1.5", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3" + } + }, + "object-keys": { + "version": "1.1.1" + }, + "object-visit": { + "version": "1.0.1", + "requires": { + "isobject": "^3.0.0" + } + }, + "object.assign": { + "version": "4.1.2", + "requires": { + "call-bind": "^1.0.0", + "define-properties": "^1.1.3", + "has-symbols": "^1.0.1", + "object-keys": "^1.1.1" + } + }, + "object.getownpropertydescriptors": { + "version": "2.1.2", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3", + "es-abstract": "^1.18.0-next.2" + } + }, + "object.pick": { + "version": "1.3.0", + "requires": { + "isobject": "^3.0.1" + } + }, + "object.values": { + "version": "1.1.4", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3", + "es-abstract": "^1.18.2" + } + }, + "obuf": { + "version": "1.1.2", + "dev": true + }, + "on-finished": { + "version": "2.3.0", + "dev": true, + "requires": { + "ee-first": "1.1.1" + } + }, + "on-headers": { + "version": "1.0.2", + "dev": true + }, + "once": { + "version": "1.4.0", + "requires": { + "wrappy": "1" + } + }, + "onetime": { + "version": "5.1.2", + "dev": true, + "requires": { + "mimic-fn": "^2.1.0" + } + }, + "open": { + "version": "6.4.0", + "dev": true, + "requires": { + "is-wsl": "^1.1.0" + } + }, + "opener": { + "version": "1.5.2", + "dev": true + }, + "opn": { + "version": "5.5.0", + "dev": true, + "requires": { + "is-wsl": "^1.1.0" + } + }, + "optionator": { + "version": "0.9.1", + "requires": { + "deep-is": "^0.1.3", + "fast-levenshtein": "^2.0.6", + "levn": "^0.4.1", + "prelude-ls": "^1.2.1", + "type-check": "^0.4.0", + "word-wrap": "^1.2.3" + } + }, + "ora": { + "version": "3.4.0", + "dev": true, + "requires": { + "chalk": "^2.4.2", + "cli-cursor": "^2.1.0", + "cli-spinners": "^2.0.0", + "log-symbols": "^2.2.0", + "strip-ansi": "^5.2.0", + "wcwidth": "^1.0.1" + }, + "dependencies": { + "ansi-regex": { + "version": "4.1.0", + "dev": true + }, + "cli-cursor": { + "version": "2.1.0", + "dev": true, + "requires": { + "restore-cursor": "^2.0.0" + } + }, + "mimic-fn": { + "version": "1.2.0", + "dev": true + }, + "onetime": { + "version": "2.0.1", + "dev": true, + "requires": { + "mimic-fn": "^1.0.0" + } + }, + "restore-cursor": { + "version": "2.0.0", + "dev": true, + "requires": { + "onetime": "^2.0.0", + "signal-exit": "^3.0.2" + } + }, + "strip-ansi": { + "version": "5.2.0", + "dev": true, + "requires": { + "ansi-regex": "^4.1.0" + } + } + } + }, + "original": { + "version": "1.0.2", + "dev": true, + "requires": { + "url-parse": "^1.4.3" + } + }, + "os-browserify": { + "version": "0.3.0" + }, + "os-tmpdir": { + "version": "1.0.2", + "dev": true + }, + "p-finally": { + "version": "1.0.0", + "dev": true + }, + "p-limit": { + "version": "2.3.0", + "requires": { + "p-try": "^2.0.0" + } + }, + "p-locate": { + "version": "3.0.0", + "requires": { + "p-limit": "^2.0.0" + } + }, + "p-map": { + "version": "2.1.0", + "dev": true + }, + "p-retry": { + "version": "3.0.1", + "dev": true, + "requires": { + "retry": "^0.12.0" + } + }, + "p-try": { + "version": "2.2.0" + }, + "pako": { + "version": "1.0.11" + }, + "parallel-transform": { + "version": "1.2.0", + "requires": { + "cyclist": "^1.0.1", + "inherits": "^2.0.3", + "readable-stream": "^2.1.5" + } + }, + "param-case": { + "version": "2.1.1", + "dev": true, + "requires": { + "no-case": "^2.2.0" + } + }, + "parent-module": { + "version": "1.0.1", + "requires": { + "callsites": "^3.0.0" + } + }, + "parse-asn1": { + "version": "5.1.6", + "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-json": { + "version": "5.2.0", + "dev": true, + "requires": { + "@babel/code-frame": "^7.0.0", + "error-ex": "^1.3.1", + "json-parse-even-better-errors": "^2.3.0", + "lines-and-columns": "^1.1.6" + } + }, + "parse5": { + "version": "5.1.1", + "dev": true + }, + "parse5-htmlparser2-tree-adapter": { + "version": "6.0.1", + "dev": true, + "requires": { + "parse5": "^6.0.1" + }, + "dependencies": { + "parse5": { + "version": "6.0.1", + "dev": true + } + } + }, + "parseurl": { + "version": "1.3.3", + "dev": true + }, + "pascalcase": { + "version": "0.1.1" + }, + "path-browserify": { + "version": "0.0.1" + }, + "path-dirname": { + "version": "1.0.2" + }, + "path-exists": { + "version": "3.0.0" + }, + "path-is-absolute": { + "version": "1.0.1" + }, + "path-is-inside": { + "version": "1.0.2", + "dev": true + }, + "path-key": { + "version": "2.0.1", + "dev": true + }, + "path-parse": { + "version": "1.0.7" + }, + "path-to-regexp": { + "version": "0.1.7", + "dev": true + }, + "path-type": { + "version": "4.0.0", + "dev": true + }, + "pbkdf2": { + "version": "3.1.2", + "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" + } + }, + "performance-now": { + "version": "2.1.0", + "dev": true + }, + "picomatch": { + "version": "2.3.0" + }, + "pify": { + "version": "4.0.1" + }, + "pinkie": { + "version": "2.0.4", + "dev": true + }, + "pinkie-promise": { + "version": "2.0.1", + "dev": true, + "requires": { + "pinkie": "^2.0.0" + } + }, + "pkg-dir": { + "version": "3.0.0", + "requires": { + "find-up": "^3.0.0" + } + }, + "pnp-webpack-plugin": { + "version": "1.6.4", + "dev": true, + "requires": { + "ts-pnp": "^1.1.6" + } + }, + "popper.js": { + "version": "1.16.1" + }, + "portal-vue": { + "version": "2.1.7", + "requires": {} + }, + "portfinder": { + "version": "1.0.28", + "dev": true, + "requires": { + "async": "^2.6.2", + "debug": "^3.1.1", + "mkdirp": "^0.5.5" + }, + "dependencies": { + "debug": { + "version": "3.2.7", + "dev": true, + "requires": { + "ms": "^2.1.1" + } + }, + "ms": { + "version": "2.1.3", + "dev": true + } + } + }, + "posix-character-classes": { + "version": "0.1.1" + }, + "postcss": { + "version": "7.0.36", + "dev": true, + "requires": { + "chalk": "^2.4.2", + "source-map": "^0.6.1", + "supports-color": "^6.1.0" + } + }, + "postcss-calc": { + "version": "7.0.5", + "dev": true, + "requires": { + "postcss": "^7.0.27", + "postcss-selector-parser": "^6.0.2", + "postcss-value-parser": "^4.0.2" + }, + "dependencies": { + "postcss-value-parser": { + "version": "4.1.0", + "dev": true + } + } + }, + "postcss-colormin": { + "version": "4.0.3", + "dev": true, + "requires": { + "browserslist": "^4.0.0", + "color": "^3.0.0", + "has": "^1.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + } + }, + "postcss-convert-values": { + "version": "4.0.1", + "dev": true, + "requires": { + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + } + }, + "postcss-discard-comments": { + "version": "4.0.2", + "dev": true, + "requires": { + "postcss": "^7.0.0" + } + }, + "postcss-discard-duplicates": { + "version": "4.0.2", + "dev": true, + "requires": { + "postcss": "^7.0.0" + } + }, + "postcss-discard-empty": { + "version": "4.0.1", + "dev": true, + "requires": { + "postcss": "^7.0.0" + } + }, + "postcss-discard-overridden": { + "version": "4.0.1", + "dev": true, + "requires": { + "postcss": "^7.0.0" + } + }, + "postcss-load-config": { + "version": "2.1.2", + "dev": true, + "requires": { + "cosmiconfig": "^5.0.0", + "import-cwd": "^2.0.0" + } + }, + "postcss-loader": { + "version": "3.0.0", + "dev": true, + "requires": { + "loader-utils": "^1.1.0", + "postcss": "^7.0.0", + "postcss-load-config": "^2.0.0", + "schema-utils": "^1.0.0" + } + }, + "postcss-merge-longhand": { + "version": "4.0.11", + "dev": true, + "requires": { + "css-color-names": "0.0.4", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0", + "stylehacks": "^4.0.0" + } + }, + "postcss-merge-rules": { + "version": "4.0.3", + "dev": true, + "requires": { + "browserslist": "^4.0.0", + "caniuse-api": "^3.0.0", + "cssnano-util-same-parent": "^4.0.0", + "postcss": "^7.0.0", + "postcss-selector-parser": "^3.0.0", + "vendors": "^1.0.0" + }, + "dependencies": { + "postcss-selector-parser": { + "version": "3.1.2", + "dev": true, + "requires": { + "dot-prop": "^5.2.0", + "indexes-of": "^1.0.1", + "uniq": "^1.0.1" + } + } + } + }, + "postcss-minify-font-values": { + "version": "4.0.2", + "dev": true, + "requires": { + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + } + }, + "postcss-minify-gradients": { + "version": "4.0.2", + "dev": true, + "requires": { + "cssnano-util-get-arguments": "^4.0.0", + "is-color-stop": "^1.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + } + }, + "postcss-minify-params": { + "version": "4.0.2", + "dev": true, + "requires": { + "alphanum-sort": "^1.0.0", + "browserslist": "^4.0.0", + "cssnano-util-get-arguments": "^4.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0", + "uniqs": "^2.0.0" + } + }, + "postcss-minify-selectors": { + "version": "4.0.2", + "dev": true, + "requires": { + "alphanum-sort": "^1.0.0", + "has": "^1.0.0", + "postcss": "^7.0.0", + "postcss-selector-parser": "^3.0.0" + }, + "dependencies": { + "postcss-selector-parser": { + "version": "3.1.2", + "dev": true, + "requires": { + "dot-prop": "^5.2.0", + "indexes-of": "^1.0.1", + "uniq": "^1.0.1" + } + } + } + }, + "postcss-modules-extract-imports": { + "version": "2.0.0", + "dev": true, + "requires": { + "postcss": "^7.0.5" + } + }, + "postcss-modules-local-by-default": { + "version": "3.0.3", + "dev": true, + "requires": { + "icss-utils": "^4.1.1", + "postcss": "^7.0.32", + "postcss-selector-parser": "^6.0.2", + "postcss-value-parser": "^4.1.0" + }, + "dependencies": { + "postcss-value-parser": { + "version": "4.1.0", + "dev": true + } + } + }, + "postcss-modules-scope": { + "version": "2.2.0", + "dev": true, + "requires": { + "postcss": "^7.0.6", + "postcss-selector-parser": "^6.0.0" + } + }, + "postcss-modules-values": { + "version": "3.0.0", + "dev": true, + "requires": { + "icss-utils": "^4.0.0", + "postcss": "^7.0.6" + } + }, + "postcss-normalize-charset": { + "version": "4.0.1", + "dev": true, + "requires": { + "postcss": "^7.0.0" + } + }, + "postcss-normalize-display-values": { + "version": "4.0.2", + "dev": true, + "requires": { + "cssnano-util-get-match": "^4.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + } + }, + "postcss-normalize-positions": { + "version": "4.0.2", + "dev": true, + "requires": { + "cssnano-util-get-arguments": "^4.0.0", + "has": "^1.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + } + }, + "postcss-normalize-repeat-style": { + "version": "4.0.2", + "dev": true, + "requires": { + "cssnano-util-get-arguments": "^4.0.0", + "cssnano-util-get-match": "^4.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + } + }, + "postcss-normalize-string": { + "version": "4.0.2", + "dev": true, + "requires": { + "has": "^1.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + } + }, + "postcss-normalize-timing-functions": { + "version": "4.0.2", + "dev": true, + "requires": { + "cssnano-util-get-match": "^4.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + } + }, + "postcss-normalize-unicode": { + "version": "4.0.1", + "dev": true, + "requires": { + "browserslist": "^4.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + } + }, + "postcss-normalize-url": { + "version": "4.0.1", + "dev": true, + "requires": { + "is-absolute-url": "^2.0.0", + "normalize-url": "^3.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + }, + "dependencies": { + "is-absolute-url": { + "version": "2.1.0", + "dev": true + }, + "normalize-url": { + "version": "3.3.0", + "dev": true + } + } + }, + "postcss-normalize-whitespace": { + "version": "4.0.2", + "dev": true, + "requires": { + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + } + }, + "postcss-ordered-values": { + "version": "4.1.2", + "dev": true, + "requires": { + "cssnano-util-get-arguments": "^4.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + } + }, + "postcss-reduce-initial": { + "version": "4.0.3", + "dev": true, + "requires": { + "browserslist": "^4.0.0", + "caniuse-api": "^3.0.0", + "has": "^1.0.0", + "postcss": "^7.0.0" + } + }, + "postcss-reduce-transforms": { + "version": "4.0.2", + "dev": true, + "requires": { + "cssnano-util-get-match": "^4.0.0", + "has": "^1.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + } + }, + "postcss-selector-parser": { + "version": "6.0.6", + "dev": true, + "requires": { + "cssesc": "^3.0.0", + "util-deprecate": "^1.0.2" + } + }, + "postcss-svgo": { + "version": "4.0.3", + "dev": true, + "requires": { + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0", + "svgo": "^1.0.0" + } + }, + "postcss-unique-selectors": { + "version": "4.0.1", + "dev": true, + "requires": { + "alphanum-sort": "^1.0.0", + "postcss": "^7.0.0", + "uniqs": "^2.0.0" + } + }, + "postcss-value-parser": { + "version": "3.3.1", + "dev": true + }, + "prelude-ls": { + "version": "1.2.1" + }, + "prepend-http": { + "version": "1.0.4", + "dev": true + }, + "prettier": { + "version": "1.19.1", + "dev": true, + "optional": true + }, + "pretty-bytes": { + "version": "5.6.0" + }, + "pretty-error": { + "version": "2.1.2", + "dev": true, + "requires": { + "lodash": "^4.17.20", + "renderkid": "^2.0.4" + } + }, + "prismjs": { + "version": "1.25.0", + "resolved": "https://registry.npmjs.org/prismjs/-/prismjs-1.25.0.tgz", + "integrity": "sha512-WCjJHl1KEWbnkQom1+SzftbtXMKQoezOCYs5rECqMN+jP+apI7ftoflyqigqzopSO3hMhTEb0mFClA8lkolgEg==" + }, + "process": { + "version": "0.11.10" + }, + "process-nextick-args": { + "version": "2.0.1" + }, + "progress": { + "version": "2.0.3" + }, + "promise-inflight": { + "version": "1.0.1" + }, + "proxy-addr": { + "version": "2.0.7", + "dev": true, + "requires": { + "forwarded": "0.2.0", + "ipaddr.js": "1.9.1" + } + }, + "prr": { + "version": "1.0.1" + }, + "pseudomap": { + "version": "1.0.2", + "dev": true + }, + "psl": { + "version": "1.8.0", + "dev": true + }, + "public-encrypt": { + "version": "4.0.3", + "requires": { + "bn.js": "^4.1.0", + "browserify-rsa": "^4.0.0", + "create-hash": "^1.1.0", + "parse-asn1": "^5.0.0", + "randombytes": "^2.0.1", + "safe-buffer": "^5.1.2" + } + }, + "pump": { + "version": "3.0.0", + "requires": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } + }, + "pumpify": { + "version": "1.5.1", + "requires": { + "duplexify": "^3.6.0", + "inherits": "^2.0.3", + "pump": "^2.0.0" + }, + "dependencies": { + "pump": { + "version": "2.0.1", + "requires": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } + } + } + }, + "punycode": { + "version": "2.1.1" + }, + "q": { + "version": "1.5.1", + "dev": true + }, + "qs": { + "version": "6.7.0", + "dev": true + }, + "query-string": { + "version": "4.3.4", + "dev": true, + "requires": { + "object-assign": "^4.1.0", + "strict-uri-encode": "^1.0.0" + } + }, + "querystring": { + "version": "0.2.0" + }, + "querystring-es3": { + "version": "0.2.1" + }, + "querystringify": { + "version": "2.2.0", + "dev": true + }, + "queue-microtask": { + "version": "1.2.3", + "dev": true + }, + "randombytes": { + "version": "2.1.0", + "requires": { + "safe-buffer": "^5.1.0" + } + }, + "randomfill": { + "version": "1.0.4", + "requires": { + "randombytes": "^2.0.5", + "safe-buffer": "^5.1.0" + } + }, + "range-parser": { + "version": "1.2.1", + "dev": true + }, + "raw-body": { + "version": "2.4.0", + "dev": true, + "requires": { + "bytes": "3.1.0", + "http-errors": "1.7.2", + "iconv-lite": "0.4.24", + "unpipe": "1.0.0" + } + }, + "read-pkg": { + "version": "5.2.0", + "dev": true, + "requires": { + "@types/normalize-package-data": "^2.4.0", + "normalize-package-data": "^2.5.0", + "parse-json": "^5.0.0", + "type-fest": "^0.6.0" + }, + "dependencies": { + "type-fest": { + "version": "0.6.0", + "dev": true + } + } + }, + "readable-stream": { + "version": "2.3.7", + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + }, + "dependencies": { + "safe-buffer": { + "version": "5.1.2" + }, + "string_decoder": { + "version": "1.1.1", + "requires": { + "safe-buffer": "~5.1.0" + } + } + } + }, + "readdirp": { + "version": "2.2.1", + "devOptional": true, + "requires": { + "graceful-fs": "^4.1.11", + "micromatch": "^3.1.10", + "readable-stream": "^2.0.2" + } + }, + "regenerate": { + "version": "1.4.2" + }, + "regenerate-unicode-properties": { + "version": "8.2.0", + "requires": { + "regenerate": "^1.4.0" + } + }, + "regenerator-runtime": { + "version": "0.13.7" + }, + "regenerator-transform": { + "version": "0.14.5", + "requires": { + "@babel/runtime": "^7.8.4" + } + }, + "regex-not": { + "version": "1.0.2", + "requires": { + "extend-shallow": "^3.0.2", + "safe-regex": "^1.1.0" + }, + "dependencies": { + "extend-shallow": { + "version": "3.0.2", + "requires": { + "assign-symbols": "^1.0.0", + "is-extendable": "^1.0.1" + } + }, + "is-extendable": { + "version": "1.0.1", + "requires": { + "is-plain-object": "^2.0.4" + } + } + } + }, + "regexp.prototype.flags": { + "version": "1.3.1", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3" + } + }, + "regexpp": { + "version": "3.1.0" + }, + "regexpu-core": { + "version": "4.7.1", + "requires": { + "regenerate": "^1.4.0", + "regenerate-unicode-properties": "^8.2.0", + "regjsgen": "^0.5.1", + "regjsparser": "^0.6.4", + "unicode-match-property-ecmascript": "^1.0.4", + "unicode-match-property-value-ecmascript": "^1.2.0" + } + }, + "regjsgen": { + "version": "0.5.2" + }, + "regjsparser": { + "version": "0.6.9", + "requires": { + "jsesc": "~0.5.0" + }, + "dependencies": { + "jsesc": { + "version": "0.5.0" + } + } + }, + "relateurl": { + "version": "0.2.7", + "dev": true + }, + "remove-trailing-separator": { + "version": "1.1.0", + "devOptional": true + }, + "renderkid": { + "version": "2.0.6", + "dev": true, + "requires": { + "css-select": "^4.1.3", + "dom-converter": "^0.2.0", + "htmlparser2": "^6.1.0", + "lodash": "^4.17.21", + "strip-ansi": "^6.0.0" + } + }, + "repeat-element": { + "version": "1.1.4" + }, + "repeat-string": { + "version": "1.6.1" + }, + "request": { + "version": "2.88.2", + "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", + "har-validator": "~5.1.3", + "http-signature": "~1.2.0", + "is-typedarray": "~1.0.0", + "isstream": "~0.1.2", + "json-stringify-safe": "~5.0.1", + "mime-types": "~2.1.19", + "oauth-sign": "~0.9.0", + "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": "^3.3.2" + }, + "dependencies": { + "qs": { + "version": "6.5.2", + "dev": true + } + } + }, + "require-directory": { + "version": "2.1.1", + "dev": true + }, + "require-from-string": { + "version": "2.0.2" + }, + "require-main-filename": { + "version": "2.0.0", + "dev": true + }, + "requires-port": { + "version": "1.0.0", + "dev": true + }, + "resize-observer-polyfill": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/resize-observer-polyfill/-/resize-observer-polyfill-1.5.1.tgz", + "integrity": "sha512-LwZrotdHOo12nQuZlHEmtuXdqGoOD0OhaxopaNFxWzInpEgaLWoVuAMbTzixuosCx2nEG58ngzW3vxdWoxIgdg==" + }, + "resolve": { + "version": "1.20.0", + "requires": { + "is-core-module": "^2.2.0", + "path-parse": "^1.0.6" + } + }, + "resolve-cwd": { + "version": "2.0.0", + "dev": true, + "requires": { + "resolve-from": "^3.0.0" + } + }, + "resolve-from": { + "version": "3.0.0", + "dev": true + }, + "resolve-url": { + "version": "0.2.1" + }, + "restore-cursor": { + "version": "3.1.0", + "dev": true, + "requires": { + "onetime": "^5.1.0", + "signal-exit": "^3.0.2" + } + }, + "ret": { + "version": "0.1.15" + }, + "retry": { + "version": "0.12.0", + "dev": true + }, + "reusify": { + "version": "1.0.4", + "dev": true + }, + "rgb-regex": { + "version": "1.0.1", + "dev": true + }, + "rgba-regex": { + "version": "1.0.0", + "dev": true + }, + "rimraf": { + "version": "2.7.1", + "requires": { + "glob": "^7.1.3" + } + }, + "ripemd160": { + "version": "2.0.2", + "requires": { + "hash-base": "^3.0.0", + "inherits": "^2.0.1" + } + }, + "rollup": { + "version": "1.32.1", + "dev": true, + "requires": { + "@types/estree": "*", + "@types/node": "*", + "acorn": "^7.1.0" + } + }, + "rollup-plugin-babel": { + "version": "4.4.0", + "dev": true, + "requires": { + "@babel/helper-module-imports": "^7.0.0", + "rollup-pluginutils": "^2.8.1" + } + }, + "rollup-plugin-terser": { + "version": "5.3.1", + "dev": true, + "requires": { + "@babel/code-frame": "^7.5.5", + "jest-worker": "^24.9.0", + "rollup-pluginutils": "^2.8.2", + "serialize-javascript": "^4.0.0", + "terser": "^4.6.2" + }, + "dependencies": { + "jest-worker": { + "version": "24.9.0", + "dev": true, + "requires": { + "merge-stream": "^2.0.0", + "supports-color": "^6.1.0" + } + } + } + }, + "rollup-pluginutils": { + "version": "2.8.2", + "dev": true, + "requires": { + "estree-walker": "^0.6.1" + }, + "dependencies": { + "estree-walker": { + "version": "0.6.1", + "dev": true + } + } + }, + "run-async": { + "version": "2.4.1", + "dev": true + }, + "run-parallel": { + "version": "1.2.0", + "dev": true, + "requires": { + "queue-microtask": "^1.2.2" + } + }, + "run-queue": { + "version": "1.0.3", + "requires": { + "aproba": "^1.1.1" + } + }, + "rw": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/rw/-/rw-1.3.3.tgz", + "integrity": "sha1-P4Yt+pGrdmsUiF700BEkv9oHT7Q=" + }, + "rxjs": { + "version": "6.6.7", + "dev": true, + "requires": { + "tslib": "^1.9.0" + } + }, + "safe-buffer": { + "version": "5.2.1" + }, + "safe-regex": { + "version": "1.1.0", + "requires": { + "ret": "~0.1.10" + } + }, + "safer-buffer": { + "version": "2.1.2" + }, + "sax": { + "version": "1.2.4", + "dev": true + }, + "schema-utils": { + "version": "1.0.0", + "requires": { + "ajv": "^6.1.0", + "ajv-errors": "^1.0.0", + "ajv-keywords": "^3.1.0" + } + }, + "section-matter": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/section-matter/-/section-matter-1.0.0.tgz", + "integrity": "sha512-vfD3pmTzGpufjScBh50YHKzEu2lxBWhVEHsNGoEXmCmn2hKGfeNLYMzCJpe8cD7gqX7TJluOVpBkAequ6dgMmA==", + "requires": { + "extend-shallow": "^2.0.1", + "kind-of": "^6.0.0" + }, + "dependencies": { + "kind-of": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==" + } + } + }, + "select-hose": { + "version": "2.0.0", + "dev": true + }, + "selfsigned": { + "version": "1.10.11", + "dev": true, + "requires": { + "node-forge": "^0.10.0" + } + }, + "semver": { + "version": "6.3.0" + }, + "send": { + "version": "0.17.1", + "dev": true, + "requires": { + "debug": "2.6.9", + "depd": "~1.1.2", + "destroy": "~1.0.4", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "fresh": "0.5.2", + "http-errors": "~1.7.2", + "mime": "1.6.0", + "ms": "2.1.1", + "on-finished": "~2.3.0", + "range-parser": "~1.2.1", + "statuses": "~1.5.0" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "dev": true, + "requires": { + "ms": "2.0.0" + }, + "dependencies": { + "ms": { + "version": "2.0.0", + "dev": true + } + } + }, + "http-errors": { + "version": "1.7.3", + "dev": true, + "requires": { + "depd": "~1.1.2", + "inherits": "2.0.4", + "setprototypeof": "1.1.1", + "statuses": ">= 1.5.0 < 2", + "toidentifier": "1.0.0" + } + }, + "mime": { + "version": "1.6.0", + "dev": true + }, + "ms": { + "version": "2.1.1", + "dev": true + } + } + }, + "serialize-javascript": { + "version": "4.0.0", + "requires": { + "randombytes": "^2.1.0" + } + }, + "serve-index": { + "version": "1.9.1", + "dev": true, + "requires": { + "accepts": "~1.3.4", + "batch": "0.6.1", + "debug": "2.6.9", + "escape-html": "~1.0.3", + "http-errors": "~1.6.2", + "mime-types": "~2.1.17", + "parseurl": "~1.3.2" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "http-errors": { + "version": "1.6.3", + "dev": true, + "requires": { + "depd": "~1.1.2", + "inherits": "2.0.3", + "setprototypeof": "1.1.0", + "statuses": ">= 1.4.0 < 2" + } + }, + "inherits": { + "version": "2.0.3", + "dev": true + }, + "ms": { + "version": "2.0.0", + "dev": true + }, + "setprototypeof": { + "version": "1.1.0", + "dev": true + } + } + }, + "serve-static": { + "version": "1.14.1", + "dev": true, + "requires": { + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "parseurl": "~1.3.3", + "send": "0.17.1" + } + }, + "set-blocking": { + "version": "2.0.0", + "dev": true + }, + "set-value": { + "version": "2.0.1", + "requires": { + "extend-shallow": "^2.0.1", + "is-extendable": "^0.1.1", + "is-plain-object": "^2.0.3", + "split-string": "^3.0.1" + } + }, + "setimmediate": { + "version": "1.0.5" + }, + "setprototypeof": { + "version": "1.1.1", + "dev": true + }, + "sha.js": { + "version": "2.4.11", + "requires": { + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + } + }, + "shebang-command": { + "version": "1.2.0", + "dev": true, + "requires": { + "shebang-regex": "^1.0.0" + } + }, + "shebang-regex": { + "version": "1.0.0", + "dev": true + }, + "shell-quote": { + "version": "1.7.2", + "dev": true + }, + "signal-exit": { + "version": "3.0.3", + "dev": true + }, + "simple-swizzle": { + "version": "0.2.2", + "dev": true, + "requires": { + "is-arrayish": "^0.3.1" + }, + "dependencies": { + "is-arrayish": { + "version": "0.3.2", + "dev": true + } + } + }, + "slash": { + "version": "2.0.0" + }, + "slice-ansi": { + "version": "4.0.0", + "requires": { + "ansi-styles": "^4.0.0", + "astral-regex": "^2.0.0", + "is-fullwidth-code-point": "^3.0.0" + }, + "dependencies": { + "is-fullwidth-code-point": { + "version": "3.0.0" + } + } + }, + "snapdragon": { + "version": "0.8.2", + "requires": { + "base": "^0.11.1", + "debug": "^2.2.0", + "define-property": "^0.2.5", + "extend-shallow": "^2.0.1", + "map-cache": "^0.2.2", + "source-map": "^0.5.6", + "source-map-resolve": "^0.5.0", + "use": "^3.1.0" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "requires": { + "ms": "2.0.0" + } + }, + "ms": { + "version": "2.0.0" + }, + "source-map": { + "version": "0.5.7" + } + } + }, + "snapdragon-node": { + "version": "2.1.1", + "requires": { + "define-property": "^1.0.0", + "isobject": "^3.0.0", + "snapdragon-util": "^3.0.1" + }, + "dependencies": { + "define-property": { + "version": "1.0.0", + "requires": { + "is-descriptor": "^1.0.0" + } + } + } + }, + "snapdragon-util": { + "version": "3.0.1", + "requires": { + "kind-of": "^3.2.0" + } + }, + "sockjs": { + "version": "0.3.21", + "dev": true, + "requires": { + "faye-websocket": "^0.11.3", + "uuid": "^3.4.0", + "websocket-driver": "^0.7.4" + } + }, + "sockjs-client": { + "version": "1.5.1", + "dev": true, + "requires": { + "debug": "^3.2.6", + "eventsource": "^1.0.7", + "faye-websocket": "^0.11.3", + "inherits": "^2.0.4", + "json3": "^3.3.3", + "url-parse": "^1.5.1" + }, + "dependencies": { + "debug": { + "version": "3.2.7", + "dev": true, + "requires": { + "ms": "^2.1.1" + } + }, + "ms": { + "version": "2.1.3", + "dev": true + } + } + }, + "sort-keys": { + "version": "1.1.2", + "dev": true, + "requires": { + "is-plain-obj": "^1.0.0" + }, + "dependencies": { + "is-plain-obj": { + "version": "1.1.0", + "dev": true + } + } + }, + "sortablejs": { + "version": "1.10.2" + }, + "source-list-map": { + "version": "2.0.1" + }, + "source-map": { + "version": "0.6.1" + }, + "source-map-js": { + "version": "0.6.2", + "dev": true + }, + "source-map-resolve": { + "version": "0.5.3", + "requires": { + "atob": "^2.1.2", + "decode-uri-component": "^0.2.0", + "resolve-url": "^0.2.1", + "source-map-url": "^0.4.0", + "urix": "^0.1.0" + } + }, + "source-map-support": { + "version": "0.5.19", + "requires": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + } + }, + "source-map-url": { + "version": "0.4.1" + }, + "sourcemap-codec": { + "version": "1.4.8" + }, + "spdx-correct": { + "version": "3.1.1", + "dev": true, + "requires": { + "spdx-expression-parse": "^3.0.0", + "spdx-license-ids": "^3.0.0" + } + }, + "spdx-exceptions": { + "version": "2.3.0", + "dev": true + }, + "spdx-expression-parse": { + "version": "3.0.1", + "dev": true, + "requires": { + "spdx-exceptions": "^2.1.0", + "spdx-license-ids": "^3.0.0" + } + }, + "spdx-license-ids": { + "version": "3.0.9", + "dev": true + }, + "spdy": { + "version": "4.0.2", + "dev": true, + "requires": { + "debug": "^4.1.0", + "handle-thing": "^2.0.0", + "http-deceiver": "^1.2.7", + "select-hose": "^2.0.0", + "spdy-transport": "^3.0.0" + } + }, + "spdy-transport": { + "version": "3.0.0", + "dev": true, + "requires": { + "debug": "^4.1.0", + "detect-node": "^2.0.4", + "hpack.js": "^2.1.6", + "obuf": "^1.1.2", + "readable-stream": "^3.0.6", + "wbuf": "^1.7.3" + }, + "dependencies": { + "readable-stream": { + "version": "3.6.0", + "dev": true, + "requires": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + } + } + } + }, + "split-string": { + "version": "3.1.0", + "requires": { + "extend-shallow": "^3.0.0" + }, + "dependencies": { + "extend-shallow": { + "version": "3.0.2", + "requires": { + "assign-symbols": "^1.0.0", + "is-extendable": "^1.0.1" + } + }, + "is-extendable": { + "version": "1.0.1", + "requires": { + "is-plain-object": "^2.0.4" + } + } + } + }, + "sprintf-js": { + "version": "1.0.3" + }, + "sshpk": { + "version": "1.16.1", + "dev": true, + "requires": { + "asn1": "~0.2.3", + "assert-plus": "^1.0.0", + "bcrypt-pbkdf": "^1.0.0", + "dashdash": "^1.12.0", + "ecc-jsbn": "~0.1.1", + "getpass": "^0.1.1", + "jsbn": "~0.1.0", + "safer-buffer": "^2.0.2", + "tweetnacl": "~0.14.0" + } + }, + "ssri": { + "version": "8.0.1", + "dev": true, + "requires": { + "minipass": "^3.1.1" + } + }, + "stable": { + "version": "0.1.8", + "dev": true + }, + "stackframe": { + "version": "1.2.0", + "dev": true + }, + "static-extend": { + "version": "0.1.2", + "requires": { + "define-property": "^0.2.5", + "object-copy": "^0.1.0" + } + }, + "statuses": { + "version": "1.5.0", + "dev": true + }, + "stream-browserify": { + "version": "2.0.2", + "requires": { + "inherits": "~2.0.1", + "readable-stream": "^2.0.2" + } + }, + "stream-each": { + "version": "1.2.3", + "requires": { + "end-of-stream": "^1.1.0", + "stream-shift": "^1.0.0" + } + }, + "stream-http": { + "version": "2.8.3", + "requires": { + "builtin-status-codes": "^3.0.0", + "inherits": "^2.0.1", + "readable-stream": "^2.3.6", + "to-arraybuffer": "^1.0.0", + "xtend": "^4.0.0" + } + }, + "stream-shift": { + "version": "1.0.1" + }, + "strict-uri-encode": { + "version": "1.1.0", + "dev": true + }, + "string_decoder": { + "version": "1.3.0", + "requires": { + "safe-buffer": "~5.2.0" + } + }, + "string-hash": { + "version": "1.1.3", + "dev": true + }, + "string-width": { + "version": "4.2.2", + "requires": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.0" + }, + "dependencies": { + "is-fullwidth-code-point": { + "version": "3.0.0" + } + } + }, + "string.prototype.trimend": { + "version": "1.0.4", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3" + } + }, + "string.prototype.trimstart": { + "version": "1.0.4", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3" + } + }, + "stringify-object": { + "version": "3.3.0", + "requires": { + "get-own-enumerable-property-symbols": "^3.0.0", + "is-obj": "^1.0.1", + "is-regexp": "^1.0.0" + } + }, + "strip-ansi": { + "version": "6.0.0", + "requires": { + "ansi-regex": "^5.0.0" + }, + "dependencies": { + "ansi-regex": { + "version": "5.0.0" + } + } + }, + "strip-bom-string": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/strip-bom-string/-/strip-bom-string-1.0.0.tgz", + "integrity": "sha1-5SEekiQ2n7uB1jOi8ABE3IztrZI=" + }, + "strip-comments": { + "version": "2.0.1" + }, + "strip-eof": { + "version": "1.0.0", + "dev": true + }, + "strip-final-newline": { + "version": "2.0.0", + "dev": true + }, + "strip-indent": { + "version": "2.0.0", + "dev": true + }, + "strip-json-comments": { + "version": "3.1.1" + }, + "stylehacks": { + "version": "4.0.3", + "dev": true, + "requires": { + "browserslist": "^4.0.0", + "postcss": "^7.0.0", + "postcss-selector-parser": "^3.0.0" + }, + "dependencies": { + "postcss-selector-parser": { + "version": "3.1.2", + "dev": true, + "requires": { + "dot-prop": "^5.2.0", + "indexes-of": "^1.0.1", + "uniq": "^1.0.1" + } + } + } + }, + "stylis": { + "version": "4.0.10", + "resolved": "https://registry.npmjs.org/stylis/-/stylis-4.0.10.tgz", + "integrity": "sha512-m3k+dk7QeJw660eIKRRn3xPF6uuvHs/FFzjX3HQ5ove0qYsiygoAhwn5a3IYKaZPo5LrYD0rfVmtv1gNY1uYwg==" + }, + "supports-color": { + "version": "6.1.0", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + }, + "svg-tags": { + "version": "1.0.0", + "dev": true + }, + "svgo": { + "version": "1.3.2", + "dev": true, + "requires": { + "chalk": "^2.4.1", + "coa": "^2.0.2", + "css-select": "^2.0.0", + "css-select-base-adapter": "^0.1.1", + "css-tree": "1.0.0-alpha.37", + "csso": "^4.0.2", + "js-yaml": "^3.13.1", + "mkdirp": "~0.5.1", + "object.values": "^1.1.0", + "sax": "~1.2.4", + "stable": "^0.1.8", + "unquote": "~1.1.1", + "util.promisify": "~1.0.0" + }, + "dependencies": { + "css-select": { + "version": "2.1.0", + "dev": true, + "requires": { + "boolbase": "^1.0.0", + "css-what": "^3.2.1", + "domutils": "^1.7.0", + "nth-check": "^1.0.2" + } + }, + "css-what": { + "version": "3.4.2", + "dev": true + }, + "dom-serializer": { + "version": "0.2.2", + "dev": true, + "requires": { + "domelementtype": "^2.0.1", + "entities": "^2.0.0" + }, + "dependencies": { + "domelementtype": { + "version": "2.2.0", + "dev": true + } + } + }, + "domelementtype": { + "version": "1.3.1", + "dev": true + }, + "domutils": { + "version": "1.7.0", + "dev": true, + "requires": { + "dom-serializer": "0", + "domelementtype": "1" + } + }, + "nth-check": { + "version": "1.0.2", + "dev": true, + "requires": { + "boolbase": "~1.0.0" + } + }, + "util.promisify": { + "version": "1.0.1", + "dev": true, + "requires": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.2", + "has-symbols": "^1.0.1", + "object.getownpropertydescriptors": "^2.1.0" + } + } + } + }, + "table": { + "version": "6.7.1", + "requires": { + "ajv": "^8.0.1", + "lodash.clonedeep": "^4.5.0", + "lodash.truncate": "^4.4.2", + "slice-ansi": "^4.0.0", + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0" + }, + "dependencies": { + "ajv": { + "version": "8.6.0", + "requires": { + "fast-deep-equal": "^3.1.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2", + "uri-js": "^4.2.2" + } + }, + "json-schema-traverse": { + "version": "1.0.0" + } + } + }, + "tapable": { + "version": "1.1.3" + }, + "temp-dir": { + "version": "2.0.0" + }, + "tempy": { + "version": "0.6.0", + "requires": { + "is-stream": "^2.0.0", + "temp-dir": "^2.0.0", + "type-fest": "^0.16.0", + "unique-string": "^2.0.0" + }, + "dependencies": { + "is-stream": { + "version": "2.0.0" + }, + "type-fest": { + "version": "0.16.0" + } + } + }, + "terser": { + "version": "4.8.0", + "requires": { + "commander": "^2.20.0", + "source-map": "~0.6.1", + "source-map-support": "~0.5.12" + } + }, + "terser-webpack-plugin": { + "version": "1.4.5", + "requires": { + "cacache": "^12.0.2", + "find-cache-dir": "^2.1.0", + "is-wsl": "^1.1.0", + "schema-utils": "^1.0.0", + "serialize-javascript": "^4.0.0", + "source-map": "^0.6.1", + "terser": "^4.1.2", + "webpack-sources": "^1.4.0", + "worker-farm": "^1.7.0" + } + }, + "text-table": { + "version": "0.2.0" + }, + "thenify": { + "version": "3.3.1", + "dev": true, + "requires": { + "any-promise": "^1.0.0" + } + }, + "thenify-all": { + "version": "1.6.0", + "dev": true, + "requires": { + "thenify": ">= 3.1.0 < 4" + } + }, + "thread-loader": { + "version": "2.1.3", + "dev": true, + "requires": { + "loader-runner": "^2.3.1", + "loader-utils": "^1.1.0", + "neo-async": "^2.6.0" + } + }, + "through": { + "version": "2.3.8", + "dev": true + }, + "through2": { + "version": "2.0.5", + "requires": { + "readable-stream": "~2.3.6", + "xtend": "~4.0.1" + } + }, + "thunky": { + "version": "1.1.0", + "dev": true + }, + "timers-browserify": { + "version": "2.0.12", + "requires": { + "setimmediate": "^1.0.4" + } + }, + "timsort": { + "version": "0.3.0", + "dev": true + }, + "tmp": { + "version": "0.0.33", + "dev": true, + "requires": { + "os-tmpdir": "~1.0.2" + } + }, + "to-arraybuffer": { + "version": "1.0.1" + }, + "to-fast-properties": { + "version": "2.0.0" + }, + "to-object-path": { + "version": "0.3.0", + "requires": { + "kind-of": "^3.0.2" + } + }, + "to-regex": { + "version": "3.0.2", + "requires": { + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "regex-not": "^1.0.2", + "safe-regex": "^1.1.0" + }, + "dependencies": { + "define-property": { + "version": "2.0.2", + "requires": { + "is-descriptor": "^1.0.2", + "isobject": "^3.0.1" + } + }, + "extend-shallow": { + "version": "3.0.2", + "requires": { + "assign-symbols": "^1.0.0", + "is-extendable": "^1.0.1" + } + }, + "is-extendable": { + "version": "1.0.1", + "requires": { + "is-plain-object": "^2.0.4" + } + } + } + }, + "to-regex-range": { + "version": "2.1.1", + "requires": { + "is-number": "^3.0.0", + "repeat-string": "^1.6.1" + } + }, + "toggle-selection": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/toggle-selection/-/toggle-selection-1.0.6.tgz", + "integrity": "sha1-bkWxJj8gF/oKzH2J14sVuL932jI=" + }, + "toidentifier": { + "version": "1.0.0", + "dev": true + }, + "toml": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/toml/-/toml-3.0.0.tgz", + "integrity": "sha512-y/mWCZinnvxjTKYhJ+pYxwD0mRLVvOtdS2Awbgxln6iEnt4rk0yBxeSBHkGJcPucRiG0e55mwWp+g/05rsrd6w==" + }, + "toposort": { + "version": "1.0.7", + "dev": true + }, + "tough-cookie": { + "version": "2.5.0", + "dev": true, + "requires": { + "psl": "^1.1.28", + "punycode": "^2.1.1" + } + }, + "tr46": { + "version": "1.0.1", + "requires": { + "punycode": "^2.1.0" + } + }, + "tryer": { + "version": "1.0.1", + "dev": true + }, + "ts-loader": { + "version": "6.2.2", + "dev": true, + "requires": { + "chalk": "^2.3.0", + "enhanced-resolve": "^4.0.0", + "loader-utils": "^1.0.2", + "micromatch": "^4.0.0", + "semver": "^6.0.0" + }, + "dependencies": { + "braces": { + "version": "3.0.2", + "dev": true, + "requires": { + "fill-range": "^7.0.1" + } + }, + "fill-range": { + "version": "7.0.1", + "dev": true, + "requires": { + "to-regex-range": "^5.0.1" + } + }, + "is-number": { + "version": "7.0.0", + "dev": true + }, + "micromatch": { + "version": "4.0.4", + "dev": true, + "requires": { + "braces": "^3.0.1", + "picomatch": "^2.2.3" + } + }, + "to-regex-range": { + "version": "5.0.1", + "dev": true, + "requires": { + "is-number": "^7.0.0" + } + } + } + }, + "ts-pnp": { + "version": "1.2.0", + "dev": true + }, + "tslib": { + "version": "1.14.1", + "dev": true + }, + "tslint": { + "version": "5.20.1", + "dev": true, + "requires": { + "@babel/code-frame": "^7.0.0", + "builtin-modules": "^1.1.1", + "chalk": "^2.3.0", + "commander": "^2.12.1", + "diff": "^4.0.1", + "glob": "^7.1.1", + "js-yaml": "^3.13.1", + "minimatch": "^3.0.4", + "mkdirp": "^0.5.1", + "resolve": "^1.3.2", + "semver": "^5.3.0", + "tslib": "^1.8.0", + "tsutils": "^2.29.0" + }, + "dependencies": { + "builtin-modules": { + "version": "1.1.1", + "dev": true + }, + "semver": { + "version": "5.7.1", + "dev": true + }, + "tsutils": { + "version": "2.29.0", + "dev": true, + "requires": { + "tslib": "^1.8.1" + } + } + } + }, + "tsutils": { + "version": "3.21.0", + "dev": true, + "requires": { + "tslib": "^1.8.1" + } + }, + "tty-browserify": { + "version": "0.0.0" + }, + "tunnel-agent": { + "version": "0.6.0", + "dev": true, + "requires": { + "safe-buffer": "^5.0.1" + } + }, + "tweetnacl": { + "version": "0.14.5", + "dev": true + }, + "twemoji": { + "version": "13.1.0", + "requires": { + "fs-extra": "^8.0.1", + "jsonfile": "^5.0.0", + "twemoji-parser": "13.1.0", + "universalify": "^0.1.2" + }, + "dependencies": { + "jsonfile": { + "version": "5.0.0", + "requires": { + "graceful-fs": "^4.1.6", + "universalify": "^0.1.2" + } + } + } + }, + "twemoji-parser": { + "version": "13.1.0" + }, + "twitter-text": { + "version": "3.1.0", + "requires": { + "@babel/runtime": "^7.3.1", + "core-js": "^2.5.0", + "punycode": "1.4.1", + "twemoji-parser": "^11.0.2" + }, + "dependencies": { + "core-js": { + "version": "2.6.12" + }, + "punycode": { + "version": "1.4.1" + }, + "twemoji-parser": { + "version": "11.0.2" + } + } + }, + "type-check": { + "version": "0.4.0", + "requires": { + "prelude-ls": "^1.2.1" + } + }, + "type-fest": { + "version": "0.20.2" + }, + "type-is": { + "version": "1.6.18", + "dev": true, + "requires": { + "media-typer": "0.3.0", + "mime-types": "~2.1.24" + } + }, + "typedarray": { + "version": "0.0.6" + }, + "typescript": { + "version": "4.4.3", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.4.3.tgz", + "integrity": "sha512-4xfscpisVgqqDfPaJo5vkd+Qd/ItkoagnHpufr+i2QCHBsNYp+G7UAoyFl8aPtx879u38wPV65rZ8qbGZijalA==", + "dev": true + }, + "uc.micro": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/uc.micro/-/uc.micro-1.0.6.tgz", + "integrity": "sha512-8Y75pvTYkLJW2hWQHXxoqRgV7qb9B+9vFEtidML+7koHUFapnVJAZ6cKs+Qjz5Aw3aZWHMC6u0wJE3At+nSGwA==" + }, + "uglify-js": { + "version": "3.4.10", + "dev": true, + "requires": { + "commander": "~2.19.0", + "source-map": "~0.6.1" + }, + "dependencies": { + "commander": { + "version": "2.19.0", + "dev": true + } + } + }, + "unbox-primitive": { + "version": "1.0.1", + "dev": true, + "requires": { + "function-bind": "^1.1.1", + "has-bigints": "^1.0.1", + "has-symbols": "^1.0.2", + "which-boxed-primitive": "^1.0.2" + } + }, + "unicode-canonical-property-names-ecmascript": { + "version": "1.0.4" + }, + "unicode-match-property-ecmascript": { + "version": "1.0.4", + "requires": { + "unicode-canonical-property-names-ecmascript": "^1.0.4", + "unicode-property-aliases-ecmascript": "^1.0.4" + } + }, + "unicode-match-property-value-ecmascript": { + "version": "1.2.0" + }, + "unicode-property-aliases-ecmascript": { + "version": "1.1.0" + }, + "union-value": { + "version": "1.0.1", + "requires": { + "arr-union": "^3.1.0", + "get-value": "^2.0.6", + "is-extendable": "^0.1.1", + "set-value": "^2.0.1" + } + }, + "uniq": { + "version": "1.0.1", + "dev": true + }, + "uniqs": { + "version": "2.0.0", + "dev": true + }, + "unique-filename": { + "version": "1.1.1", + "requires": { + "unique-slug": "^2.0.0" + } + }, + "unique-slug": { + "version": "2.0.2", + "requires": { + "imurmurhash": "^0.1.4" + } + }, + "unique-string": { + "version": "2.0.0", + "requires": { + "crypto-random-string": "^2.0.0" + } + }, + "universalify": { + "version": "0.1.2" + }, + "unpipe": { + "version": "1.0.0", + "dev": true + }, + "unquote": { + "version": "1.1.1", + "dev": true + }, + "unset-value": { + "version": "1.0.0", + "requires": { + "has-value": "^0.3.1", + "isobject": "^3.0.0" + }, + "dependencies": { + "has-value": { + "version": "0.3.1", + "requires": { + "get-value": "^2.0.3", + "has-values": "^0.1.4", + "isobject": "^2.0.0" + }, + "dependencies": { + "isobject": { + "version": "2.1.0", + "requires": { + "isarray": "1.0.0" + } + } + } + }, + "has-values": { + "version": "0.1.4" + } + } + }, + "upath": { + "version": "1.2.0" + }, + "upper-case": { + "version": "1.1.3", + "dev": true + }, + "uri-js": { + "version": "4.4.1", + "requires": { + "punycode": "^2.1.0" + } + }, + "urix": { + "version": "0.1.0" + }, + "url": { + "version": "0.11.0", + "requires": { + "punycode": "1.3.2", + "querystring": "0.2.0" + }, + "dependencies": { + "punycode": { + "version": "1.3.2" + } + } + }, + "url-loader": { + "version": "2.3.0", + "dev": true, + "requires": { + "loader-utils": "^1.2.3", + "mime": "^2.4.4", + "schema-utils": "^2.5.0" + }, + "dependencies": { + "schema-utils": { + "version": "2.7.1", + "dev": true, + "requires": { + "@types/json-schema": "^7.0.5", + "ajv": "^6.12.4", + "ajv-keywords": "^3.5.2" + } + } + } + }, + "url-parse": { + "version": "1.5.1", + "dev": true, + "requires": { + "querystringify": "^2.1.1", + "requires-port": "^1.0.0" + } + }, + "use": { + "version": "3.1.1" + }, + "util": { + "version": "0.11.1", + "requires": { + "inherits": "2.0.3" + }, + "dependencies": { + "inherits": { + "version": "2.0.3" + } + } + }, + "util-deprecate": { + "version": "1.0.2" + }, + "util.promisify": { + "version": "1.0.0", + "dev": true, + "requires": { + "define-properties": "^1.1.2", + "object.getownpropertydescriptors": "^2.0.3" + } + }, + "utila": { + "version": "0.4.0", + "dev": true + }, + "utils-merge": { + "version": "1.0.1", + "dev": true + }, + "uuid": { + "version": "3.4.0", + "dev": true + }, + "v8-compile-cache": { + "version": "2.3.0" + }, + "validate-npm-package-license": { + "version": "3.0.4", + "dev": true, + "requires": { + "spdx-correct": "^3.0.0", + "spdx-expression-parse": "^3.0.0" + } + }, + "vary": { + "version": "1.1.2", + "dev": true + }, + "vendors": { + "version": "1.0.4", + "dev": true + }, + "verror": { + "version": "1.10.0", + "dev": true, + "requires": { + "assert-plus": "^1.0.0", + "core-util-is": "1.0.2", + "extsprintf": "^1.2.0" + }, + "dependencies": { + "extsprintf": { + "version": "1.4.0", + "dev": true + } + } + }, + "vm-browserify": { + "version": "1.1.2" + }, + "vue": { + "version": "2.6.14" + }, + "vue-class-component": { + "version": "7.2.6", + "requires": {} + }, + "vue-cli-plugin-i18n": { + "version": "2.1.1", + "dev": true, + "requires": { + "debug": "^4.3.0", + "deepmerge": "^4.2.0", + "dotenv": "^8.2.0", + "flat": "^5.0.0", + "rimraf": "^3.0.0", + "vue": "^2.6.11", + "vue-i18n": "^8.17.0", + "vue-i18n-extract": "1.0.2" + }, + "dependencies": { + "rimraf": { + "version": "3.0.2", + "dev": true, + "requires": { + "glob": "^7.1.3" + } + } + } + }, + "vue-click-outside": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/vue-click-outside/-/vue-click-outside-1.1.0.tgz", + "integrity": "sha512-pNyvAA9mRXJwPHlHJyjMb4IONSc7khS5lxGcMyE2EIKgNMAO279PWM9Hyq0d5J4FkiSRdmFLwnbjDd5UtPizHQ==" + }, + "vue-clickaway": { + "version": "2.2.2", + "requires": { + "loose-envify": "^1.2.0" + } + }, + "vue-cookies": { + "version": "1.7.4" + }, + "vue-eslint-parser": { + "version": "7.6.0", + "dev": true, + "requires": { + "debug": "^4.1.1", + "eslint-scope": "^5.0.0", + "eslint-visitor-keys": "^1.1.0", + "espree": "^6.2.1", + "esquery": "^1.4.0", + "lodash": "^4.17.15" + }, + "dependencies": { + "espree": { + "version": "6.2.1", + "dev": true, + "requires": { + "acorn": "^7.1.1", + "acorn-jsx": "^5.2.0", + "eslint-visitor-keys": "^1.1.0" + } + } + } + }, + "vue-functional-data-merge": { + "version": "3.1.0" + }, + "vue-hot-reload-api": { + "version": "2.3.4", + "dev": true + }, + "vue-i18n": { + "version": "8.24.4" + }, + "vue-i18n-extract": { + "version": "1.0.2", + "dev": true, + "requires": { + "cli-table3": "^0.5.1", + "dot-object": "^1.7.1", + "esm": "^3.2.13", + "glob": "^7.1.3", + "is-valid-glob": "^1.0.0", + "yargs": "^13.2.2" + } + }, + "vue-infinite-loading": { + "version": "2.4.5", + "resolved": "https://registry.npmjs.org/vue-infinite-loading/-/vue-infinite-loading-2.4.5.tgz", + "integrity": "sha512-xhq95Mxun060bRnsOoLE2Be6BR7jYwuC89kDe18+GmCLVrRA/dU0jrGb12Xu6NjmKs+iTW0AA6saSEmEW4cR7g==", + "requires": {} + }, + "vue-loader": { + "version": "15.9.7", + "dev": true, + "requires": { + "@vue/component-compiler-utils": "^3.1.0", + "hash-sum": "^1.0.2", + "loader-utils": "^1.1.0", + "vue-hot-reload-api": "^2.3.0", + "vue-style-loader": "^4.1.0" + } + }, + "vue-loader-v16": { + "version": "npm:vue-loader@16.2.0", + "dev": true, + "optional": true, + "requires": { + "chalk": "^4.1.0", + "hash-sum": "^2.0.0", + "loader-utils": "^2.0.0" + }, + "dependencies": { + "chalk": { + "version": "4.1.1", + "dev": true, + "optional": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "has-flag": { + "version": "4.0.0", + "dev": true, + "optional": true + }, + "hash-sum": { + "version": "2.0.0", + "dev": true, + "optional": true + }, + "loader-utils": { + "version": "2.0.0", + "dev": true, + "optional": true, + "requires": { + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^2.1.2" + } + }, + "supports-color": { + "version": "7.2.0", + "dev": true, + "optional": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "vue-multiselect": { + "version": "2.1.6" + }, + "vue-property-decorator": { + "version": "9.1.2", + "requires": {} + }, + "vue-simple-calendar": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/vue-simple-calendar/-/vue-simple-calendar-5.0.1.tgz", + "integrity": "sha512-JRsN3cSyS7q38OSa8IJMars5Uq1BYq8jfBrtmmyCQXw1wXcEPyfjRSnrScobwFNE2XhSSkbkbDKYJlUAJudvpQ==", + "requires": { + "core-js": "^3.7.0", + "vue": "^2.6.12", + "webpack": "^4.45.0" + } + }, + "vue-style-loader": { + "version": "4.1.3", + "dev": true, + "requires": { + "hash-sum": "^1.0.2", + "loader-utils": "^1.0.2" + } + }, + "vue-template-compiler": { + "version": "2.6.14", + "requires": { + "de-indent": "^1.0.2", + "he": "^1.1.0" + } + }, + "vue-template-es2015-compiler": { + "version": "1.9.1", + "dev": true + }, + "vue2-touch-events": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/vue2-touch-events/-/vue2-touch-events-3.2.2.tgz", + "integrity": "sha512-rGV8jxgOQEJYkJCp7uOBe3hjvmG1arThrq1wGtJHwJTgi65+P2a+0l4CYcQO/U1ZFqTq2/TT2+oTE6H7Y+6Eog==" + }, + "vuedraggable": { + "version": "2.24.3", + "requires": { + "sortablejs": "1.10.2" + } + }, + "vuex": { + "version": "3.6.2", + "requires": {} + }, + "watch-size": { + "version": "2.0.0" + }, + "watchpack": { + "version": "1.7.5", + "requires": { + "chokidar": "^3.4.1", + "graceful-fs": "^4.1.2", + "neo-async": "^2.5.0", + "watchpack-chokidar2": "^2.0.1" + }, + "dependencies": { + "binary-extensions": { + "version": "2.2.0", + "optional": true + }, + "braces": { + "version": "3.0.2", + "optional": true, + "requires": { + "fill-range": "^7.0.1" + } + }, + "chokidar": { + "version": "3.5.1", + "optional": true, + "requires": { + "anymatch": "~3.1.1", + "braces": "~3.0.2", + "fsevents": "~2.3.1", + "glob-parent": "~5.1.0", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.5.0" + } + }, + "fill-range": { + "version": "7.0.1", + "optional": true, + "requires": { + "to-regex-range": "^5.0.1" + } + }, + "glob-parent": { + "version": "5.1.2", + "optional": true, + "requires": { + "is-glob": "^4.0.1" + } + }, + "is-binary-path": { + "version": "2.1.0", + "optional": true, + "requires": { + "binary-extensions": "^2.0.0" + } + }, + "is-number": { + "version": "7.0.0", + "optional": true + }, + "readdirp": { + "version": "3.5.0", + "optional": true, + "requires": { + "picomatch": "^2.2.1" + } + }, + "to-regex-range": { + "version": "5.0.1", + "optional": true, + "requires": { + "is-number": "^7.0.0" + } + } + } + }, + "watchpack-chokidar2": { + "version": "2.0.1", + "optional": true, + "requires": { + "chokidar": "^2.1.8" + } + }, + "wbuf": { + "version": "1.7.3", + "dev": true, + "requires": { + "minimalistic-assert": "^1.0.0" + } + }, + "wcwidth": { + "version": "1.0.1", + "dev": true, + "requires": { + "defaults": "^1.0.3" + } + }, + "webidl-conversions": { + "version": "4.0.2" + }, + "webpack": { + "version": "4.46.0", + "requires": { + "@webassemblyjs/ast": "1.9.0", + "@webassemblyjs/helper-module-context": "1.9.0", + "@webassemblyjs/wasm-edit": "1.9.0", + "@webassemblyjs/wasm-parser": "1.9.0", + "acorn": "^6.4.1", + "ajv": "^6.10.2", + "ajv-keywords": "^3.4.1", + "chrome-trace-event": "^1.0.2", + "enhanced-resolve": "^4.5.0", + "eslint-scope": "^4.0.3", + "json-parse-better-errors": "^1.0.2", + "loader-runner": "^2.4.0", + "loader-utils": "^1.2.3", + "memory-fs": "^0.4.1", + "micromatch": "^3.1.10", + "mkdirp": "^0.5.3", + "neo-async": "^2.6.1", + "node-libs-browser": "^2.2.1", + "schema-utils": "^1.0.0", + "tapable": "^1.1.3", + "terser-webpack-plugin": "^1.4.3", + "watchpack": "^1.7.4", + "webpack-sources": "^1.4.1" + }, + "dependencies": { + "acorn": { + "version": "6.4.2" + }, + "eslint-scope": { + "version": "4.0.3", + "requires": { + "esrecurse": "^4.1.0", + "estraverse": "^4.1.1" + } + } + } + }, + "webpack-bundle-analyzer": { + "version": "3.9.0", + "dev": true, + "requires": { + "acorn": "^7.1.1", + "acorn-walk": "^7.1.1", + "bfj": "^6.1.1", + "chalk": "^2.4.1", + "commander": "^2.18.0", + "ejs": "^2.6.1", + "express": "^4.16.3", + "filesize": "^3.6.1", + "gzip-size": "^5.0.0", + "lodash": "^4.17.19", + "mkdirp": "^0.5.1", + "opener": "^1.5.1", + "ws": "^6.0.0" + } + }, + "webpack-bundle-tracker": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/webpack-bundle-tracker/-/webpack-bundle-tracker-1.3.0.tgz", + "integrity": "sha512-cs3QMgW5F0mE0e91X/SuEq2MUfu2LqpjFSdfINsOmNt/T4v39EESNhJ+P8d5lmbfFL6Z1z7n6LlpVCERTdDDvQ==", + "dev": true, + "requires": { + "lodash.assign": "^4.2.0", + "lodash.defaults": "^4.2.0", + "lodash.foreach": "^4.5.0", + "lodash.get": "^4.4.2", + "strip-ansi": "^6.0.0" + } + }, + "webpack-chain": { + "version": "6.5.1", + "dev": true, + "requires": { + "deepmerge": "^1.5.2", + "javascript-stringify": "^2.0.1" + }, + "dependencies": { + "deepmerge": { + "version": "1.5.2", + "dev": true + } + } + }, + "webpack-dev-middleware": { + "version": "3.7.3", + "dev": true, + "requires": { + "memory-fs": "^0.4.1", + "mime": "^2.4.4", + "mkdirp": "^0.5.1", + "range-parser": "^1.2.1", + "webpack-log": "^2.0.0" + } + }, + "webpack-dev-server": { + "version": "3.11.2", + "dev": true, + "requires": { + "ansi-html": "0.0.7", + "bonjour": "^3.5.0", + "chokidar": "^2.1.8", + "compression": "^1.7.4", + "connect-history-api-fallback": "^1.6.0", + "debug": "^4.1.1", + "del": "^4.1.1", + "express": "^4.17.1", + "html-entities": "^1.3.1", + "http-proxy-middleware": "0.19.1", + "import-local": "^2.0.0", + "internal-ip": "^4.3.0", + "ip": "^1.1.5", + "is-absolute-url": "^3.0.3", + "killable": "^1.0.1", + "loglevel": "^1.6.8", + "opn": "^5.5.0", + "p-retry": "^3.0.1", + "portfinder": "^1.0.26", + "schema-utils": "^1.0.0", + "selfsigned": "^1.10.8", + "semver": "^6.3.0", + "serve-index": "^1.9.1", + "sockjs": "^0.3.21", + "sockjs-client": "^1.5.0", + "spdy": "^4.0.2", + "strip-ansi": "^3.0.1", + "supports-color": "^6.1.0", + "url": "^0.11.0", + "webpack-dev-middleware": "^3.7.2", + "webpack-log": "^2.0.0", + "ws": "^6.2.1", + "yargs": "^13.3.2" + }, + "dependencies": { + "strip-ansi": { + "version": "3.0.1", + "dev": true, + "requires": { + "ansi-regex": "^2.0.0" + } + } + } + }, + "webpack-log": { + "version": "2.0.0", + "dev": true, + "requires": { + "ansi-colors": "^3.0.0", + "uuid": "^3.3.2" + }, + "dependencies": { + "ansi-colors": { + "version": "3.2.4", + "dev": true + } + } + }, + "webpack-merge": { + "version": "4.2.2", + "dev": true, + "requires": { + "lodash": "^4.17.15" + } + }, + "webpack-sources": { + "version": "1.4.3", + "requires": { + "source-list-map": "^2.0.0", + "source-map": "~0.6.1" + } + }, + "websocket-driver": { + "version": "0.7.4", + "dev": true, + "requires": { + "http-parser-js": ">=0.5.1", + "safe-buffer": ">=5.1.0", + "websocket-extensions": ">=0.1.1" + } + }, + "websocket-extensions": { + "version": "0.1.4", + "dev": true + }, + "whatwg-url": { + "version": "7.1.0", + "requires": { + "lodash.sortby": "^4.7.0", + "tr46": "^1.0.1", + "webidl-conversions": "^4.0.2" + } + }, + "which": { + "version": "1.3.1", + "dev": true, + "requires": { + "isexe": "^2.0.0" + } + }, + "which-boxed-primitive": { + "version": "1.0.2", + "dev": true, + "requires": { + "is-bigint": "^1.0.1", + "is-boolean-object": "^1.1.0", + "is-number-object": "^1.0.4", + "is-string": "^1.0.5", + "is-symbol": "^1.0.3" + } + }, + "which-module": { + "version": "2.0.0", + "dev": true + }, + "word-wrap": { + "version": "1.2.3" + }, + "workbox-background-sync": { + "version": "5.1.4", + "dev": true, + "requires": { + "workbox-core": "^5.1.4" + }, + "dependencies": { + "workbox-core": { + "version": "5.1.4", + "dev": true + } + } + }, + "workbox-broadcast-update": { + "version": "6.1.5", + "requires": { + "workbox-core": "^6.1.5" + } + }, + "workbox-build": { + "version": "6.1.5", + "requires": { + "@babel/core": "^7.11.1", + "@babel/preset-env": "^7.11.0", + "@babel/runtime": "^7.11.2", + "@hapi/joi": "^16.1.8", + "@rollup/plugin-babel": "^5.2.0", + "@rollup/plugin-node-resolve": "^11.2.1", + "@rollup/plugin-replace": "^2.4.1", + "@surma/rollup-plugin-off-main-thread": "^1.4.1", + "common-tags": "^1.8.0", + "fast-json-stable-stringify": "^2.1.0", + "fs-extra": "^9.0.1", + "glob": "^7.1.6", + "lodash": "^4.17.20", + "pretty-bytes": "^5.3.0", + "rollup": "^2.43.1", + "rollup-plugin-terser": "^7.0.0", + "source-map": "^0.8.0-beta.0", + "source-map-url": "^0.4.0", + "stringify-object": "^3.3.0", + "strip-comments": "^2.0.1", + "tempy": "^0.6.0", + "upath": "^1.2.0", + "workbox-background-sync": "^6.1.5", + "workbox-broadcast-update": "^6.1.5", + "workbox-cacheable-response": "^6.1.5", + "workbox-core": "^6.1.5", + "workbox-expiration": "^6.1.5", + "workbox-google-analytics": "^6.1.5", + "workbox-navigation-preload": "^6.1.5", + "workbox-precaching": "^6.1.5", + "workbox-range-requests": "^6.1.5", + "workbox-recipes": "^6.1.5", + "workbox-routing": "^6.1.5", + "workbox-strategies": "^6.1.5", + "workbox-streams": "^6.1.5", + "workbox-sw": "^6.1.5", + "workbox-window": "^6.1.5" + }, + "dependencies": { + "@hapi/joi": { + "version": "16.1.8", + "requires": { + "@hapi/address": "^2.1.2", + "@hapi/formula": "^1.2.0", + "@hapi/hoek": "^8.2.4", + "@hapi/pinpoint": "^1.0.2", + "@hapi/topo": "^3.1.3" + } + }, + "@rollup/plugin-babel": { + "version": "5.3.0", + "requires": { + "@babel/helper-module-imports": "^7.10.4", + "@rollup/pluginutils": "^3.1.0" + }, + "dependencies": { + "@rollup/pluginutils": { + "version": "3.1.0", + "requires": { + "@types/estree": "0.0.39", + "estree-walker": "^1.0.1", + "picomatch": "^2.2.2" + }, + "dependencies": { + "@types/estree": { + "version": "0.0.39" + } + } + }, + "rollup": { + "version": "1.32.1", + "peer": true, + "requires": { + "@types/estree": "*", + "@types/node": "*", + "acorn": "^7.1.0" + } + } + } + }, + "@rollup/plugin-node-resolve": { + "version": "11.2.1", + "requires": { + "@rollup/pluginutils": "^3.1.0", + "@types/resolve": "1.17.1", + "builtin-modules": "^3.1.0", + "deepmerge": "^4.2.2", + "is-module": "^1.0.0", + "resolve": "^1.19.0" + }, + "dependencies": { + "@rollup/pluginutils": { + "version": "3.1.0", + "requires": { + "@types/estree": "0.0.39", + "estree-walker": "^1.0.1", + "picomatch": "^2.2.2" + }, + "dependencies": { + "@types/estree": { + "version": "0.0.39" + } + } + }, + "rollup": { + "version": "1.32.1", + "peer": true, + "requires": { + "@types/estree": "*", + "@types/node": "*", + "acorn": "^7.1.0" + } + } + } + }, + "@rollup/plugin-replace": { + "version": "2.4.2", + "requires": { + "@rollup/pluginutils": "^3.1.0", + "magic-string": "^0.25.7" + }, + "dependencies": { + "@rollup/pluginutils": { + "version": "3.1.0", + "requires": { + "@types/estree": "0.0.39", + "estree-walker": "^1.0.1", + "picomatch": "^2.2.2" + }, + "dependencies": { + "@types/estree": { + "version": "0.0.39" + } + } + }, + "rollup": { + "version": "1.32.1", + "peer": true, + "requires": { + "@types/estree": "*", + "@types/node": "*", + "acorn": "^7.1.0" + } + } + } + }, + "estree-walker": { + "version": "1.0.1" + }, + "fs-extra": { + "version": "9.1.0", + "requires": { + "at-least-node": "^1.0.0", + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + } + }, + "jsonfile": { + "version": "6.1.0", + "requires": { + "graceful-fs": "^4.1.6", + "universalify": "^2.0.0" + } + }, + "rollup": { + "version": "2.51.1", + "requires": { + "fsevents": "~2.3.1" + } + }, + "rollup-plugin-terser": { + "version": "7.0.2", + "requires": { + "@babel/code-frame": "^7.10.4", + "jest-worker": "^26.2.1", + "serialize-javascript": "^4.0.0", + "terser": "^5.0.0" + } + }, + "source-map": { + "version": "0.8.0-beta.0", + "requires": { + "whatwg-url": "^7.0.0" + } + }, + "terser": { + "version": "5.7.0", + "requires": { + "commander": "^2.20.0", + "source-map": "~0.7.2", + "source-map-support": "~0.5.19" + }, + "dependencies": { + "source-map": { + "version": "0.7.3" + } + } + }, + "universalify": { + "version": "2.0.0" + }, + "workbox-background-sync": { + "version": "6.1.5", + "requires": { + "workbox-core": "^6.1.5" + } + } + } + }, + "workbox-cacheable-response": { + "version": "6.1.5", + "requires": { + "workbox-core": "^6.1.5" + } + }, + "workbox-core": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/workbox-core/-/workbox-core-6.3.0.tgz", + "integrity": "sha512-SufToEV3SOLwwz3j+P4pgkfpzLRUlR17sX3p/LrMHP/brYKvJQqjTwtSvaCkkAX0RPHX2TFHmN8xhPP1bpmomg==" + }, + "workbox-expiration": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/workbox-expiration/-/workbox-expiration-6.3.0.tgz", + "integrity": "sha512-teYuYfM3HFbwAD/nlZDw/dCMOrCKjsAiMRhz0uOy9IkfBb7vBynO3xf118lY62X6BfqjZdeahiHh10N0/aYICg==", + "requires": { + "idb": "^6.0.0", + "workbox-core": "6.3.0" + } + }, + "workbox-google-analytics": { + "version": "6.1.5", + "requires": { + "workbox-background-sync": "^6.1.5", + "workbox-core": "^6.1.5", + "workbox-routing": "^6.1.5", + "workbox-strategies": "^6.1.5" + }, + "dependencies": { + "workbox-background-sync": { + "version": "6.1.5", + "requires": { + "workbox-core": "^6.1.5" + } + } + } + }, + "workbox-navigation-preload": { + "version": "6.1.5", + "requires": { + "workbox-core": "^6.1.5" + } + }, + "workbox-precaching": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/workbox-precaching/-/workbox-precaching-6.3.0.tgz", + "integrity": "sha512-bND3rUxiuzFmDfeKywdvOqK0LQ5LLbOPk0eX22PlMQNOOduHRxzglMpgHo/MR6h+8cPJ3GpxT8hZ895/7bHMqQ==", + "requires": { + "workbox-core": "6.3.0", + "workbox-routing": "6.3.0", + "workbox-strategies": "6.3.0" + } + }, + "workbox-range-requests": { + "version": "6.1.5", + "requires": { + "workbox-core": "^6.1.5" + } + }, + "workbox-recipes": { + "version": "6.1.5", + "requires": { + "workbox-cacheable-response": "^6.1.5", + "workbox-core": "^6.1.5", + "workbox-expiration": "^6.1.5", + "workbox-precaching": "^6.1.5", + "workbox-routing": "^6.1.5", + "workbox-strategies": "^6.1.5" + } + }, + "workbox-routing": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/workbox-routing/-/workbox-routing-6.3.0.tgz", + "integrity": "sha512-asajX5UPkaoU4PB9pEpxKWKkcpA+KJQUEeYU6NlK0rXTCpdWQ6iieMRDoBTZBjTzUdL3j3s1Zo2qCOSvtXSYGg==", + "requires": { + "workbox-core": "6.3.0" + } + }, + "workbox-strategies": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/workbox-strategies/-/workbox-strategies-6.3.0.tgz", + "integrity": "sha512-SYZt40y+Iu5nA+UEPQOrAuAMMNTxtUBPLCIaMMb4lcADpBYrNP1CD+/s2QsrxzS651a8hfi06REKt+uTp1tqfw==", + "requires": { + "workbox-core": "6.3.0" + } + }, + "workbox-streams": { + "version": "6.1.5", + "requires": { + "workbox-core": "^6.1.5", + "workbox-routing": "^6.1.5" + } + }, + "workbox-sw": { + "version": "6.1.5" + }, + "workbox-webpack-plugin": { + "version": "6.1.5", + "requires": { + "fast-json-stable-stringify": "^2.1.0", + "pretty-bytes": "^5.4.1", + "source-map-url": "^0.4.0", + "upath": "^1.2.0", + "webpack-sources": "^1.4.3", + "workbox-build": "^6.1.5" + } + }, + "workbox-window": { + "version": "6.1.5", + "requires": { + "workbox-core": "^6.1.5" + } + }, + "worker-farm": { + "version": "1.7.0", + "requires": { + "errno": "~0.1.7" + } + }, + "worker-rpc": { + "version": "0.1.1", + "dev": true, + "requires": { + "microevent.ts": "~0.1.1" + } + }, + "wrap-ansi": { + "version": "5.1.0", + "dev": true, + "requires": { + "ansi-styles": "^3.2.0", + "string-width": "^3.0.0", + "strip-ansi": "^5.0.0" + }, + "dependencies": { + "ansi-regex": { + "version": "4.1.0", + "dev": true + }, + "ansi-styles": { + "version": "3.2.1", + "dev": true, + "requires": { + "color-convert": "^1.9.0" + } + }, + "emoji-regex": { + "version": "7.0.3", + "dev": true + }, + "string-width": { + "version": "3.1.0", + "dev": true, + "requires": { + "emoji-regex": "^7.0.1", + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^5.1.0" + } + }, + "strip-ansi": { + "version": "5.2.0", + "dev": true, + "requires": { + "ansi-regex": "^4.1.0" + } + } + } + }, + "wrappy": { + "version": "1.0.2" + }, + "ws": { + "version": "6.2.2", + "dev": true, + "requires": { + "async-limiter": "~1.0.0" + } + }, + "xss": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/xss/-/xss-1.0.9.tgz", + "integrity": "sha512-2t7FahYnGJys6DpHLhajusId7R0Pm2yTmuL0GV9+mV0ZlaLSnb2toBmppATfg5sWIhZQGlsTLoecSzya+l4EAQ==", + "requires": { + "commander": "^2.20.3", + "cssfilter": "0.0.10" + } + }, + "xtend": { + "version": "4.0.2" + }, + "y18n": { + "version": "4.0.3" + }, + "yallist": { + "version": "4.0.0" + }, + "yaml": { + "version": "1.10.2", + "dev": true, + "optional": true + }, + "yargs": { + "version": "13.3.2", + "dev": true, + "requires": { + "cliui": "^5.0.0", + "find-up": "^3.0.0", + "get-caller-file": "^2.0.1", + "require-directory": "^2.1.1", + "require-main-filename": "^2.0.0", + "set-blocking": "^2.0.0", + "string-width": "^3.0.0", + "which-module": "^2.0.0", + "y18n": "^4.0.0", + "yargs-parser": "^13.1.2" + }, + "dependencies": { + "ansi-regex": { + "version": "4.1.0", + "dev": true + }, + "emoji-regex": { + "version": "7.0.3", + "dev": true + }, + "string-width": { + "version": "3.1.0", + "dev": true, + "requires": { + "emoji-regex": "^7.0.1", + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^5.1.0" + } + }, + "strip-ansi": { + "version": "5.2.0", + "dev": true, + "requires": { + "ansi-regex": "^4.1.0" + } + } + } + }, + "yargs-parser": { + "version": "13.1.2", + "dev": true, + "requires": { + "camelcase": "^5.0.0", + "decamelize": "^1.2.0" + } + }, + "yorkie": { + "version": "2.0.0", + "dev": true, + "requires": { + "execa": "^0.8.0", + "is-ci": "^1.0.10", + "normalize-path": "^1.0.0", + "strip-indent": "^2.0.0" + }, + "dependencies": { + "cross-spawn": { + "version": "5.1.0", + "dev": true, + "requires": { + "lru-cache": "^4.0.1", + "shebang-command": "^1.2.0", + "which": "^1.2.9" + } + }, + "execa": { + "version": "0.8.0", + "dev": true, + "requires": { + "cross-spawn": "^5.0.1", + "get-stream": "^3.0.0", + "is-stream": "^1.1.0", + "npm-run-path": "^2.0.0", + "p-finally": "^1.0.0", + "signal-exit": "^3.0.0", + "strip-eof": "^1.0.0" + } + }, + "get-stream": { + "version": "3.0.0", + "dev": true + }, + "lru-cache": { + "version": "4.1.5", + "dev": true, + "requires": { + "pseudomap": "^1.0.2", + "yallist": "^2.1.2" + } + }, + "normalize-path": { + "version": "1.0.0", + "dev": true + }, + "yallist": { + "version": "2.1.2", + "dev": true + } + } + } + } +} diff --git a/vue/package.json b/vue/package.json index 573af9a7..1441637e 100644 --- a/vue/package.json +++ b/vue/package.json @@ -8,18 +8,29 @@ "lint": "vue-cli-service lint" }, "dependencies": { - "axios": "^0.21.1", + "@babel/eslint-parser": "^7.13.14", + "@kangc/v-md-editor": "^1.7.7", + "@kevinfaguiar/vue-twemoji-picker": "^5.7.4", + "@popperjs/core": "^2.10.1", + "@riophae/vue-treeselect": "^0.4.0", + "axios": "^0.21.4", "bootstrap-vue": "^2.21.2", - "core-js": "^3.14.0", + "core-js": "^3.18.1", "lodash": "^4.17.21", "moment": "^2.29.1", + "prismjs": "^1.25.0", "vue": "^2.6.14", "vue-class-component": "^7.2.3", + "vue-click-outside": "^1.1.0", + "vue-clickaway": "^2.2.2", "vue-cookies": "^1.7.4", "vue-i18n": "^8.24.4", + "vue-infinite-loading": "^2.4.5", "vue-multiselect": "^2.1.6", "vue-property-decorator": "^9.1.2", + "vue-simple-calendar": "^5.0.1", "vue-template-compiler": "^2.6.14", + "vue2-touch-events": "^3.2.2", "vuedraggable": "^2.24.3", "vuex": "^3.6.0", "workbox-webpack-plugin": "^6.1.5" @@ -27,7 +38,7 @@ "devDependencies": { "@kazupon/vue-i18n-loader": "^0.5.0", "@typescript-eslint/eslint-plugin": "^4.26.1", - "@typescript-eslint/parser": "^4.26.1", + "@typescript-eslint/parser": "^4.32.0", "@vue/cli-plugin-babel": "~4.5.13", "@vue/cli-plugin-eslint": "~4.5.13", "@vue/cli-plugin-pwa": "~4.5.13", @@ -38,14 +49,14 @@ "babel-eslint": "^10.1.0", "eslint": "^7.28.0", "eslint-plugin-vue": "^7.10.0", - "typescript": "~4.3.2", + "typescript": "~4.4.3", "vue-cli-plugin-i18n": "^2.1.1", - "webpack-bundle-tracker": "1.1.0", - "workbox-expiration": "^6.0.2", + "webpack-bundle-tracker": "1.4.0", + "workbox-expiration": "^6.3.0", "workbox-navigation-preload": "^6.0.2", - "workbox-precaching": "^6.0.2", - "workbox-routing": "^6.0.2", - "workbox-strategies": "^6.0.2" + "workbox-precaching": "^6.3.0", + "workbox-routing": "^6.3.0", + "workbox-strategies": "^6.2.4" }, "eslintConfig": { "root": true, diff --git a/vue/src/apps/ChecklistView/ChecklistView.vue b/vue/src/apps/ChecklistView/ChecklistView.vue new file mode 100644 index 00000000..afbc241a --- /dev/null +++ b/vue/src/apps/ChecklistView/ChecklistView.vue @@ -0,0 +1,195 @@ + + + + + + + diff --git a/vue/src/apps/UserFileView/main.js b/vue/src/apps/ChecklistView/main.js similarity index 79% rename from vue/src/apps/UserFileView/main.js rename to vue/src/apps/ChecklistView/main.js index 6493ae90..318cb9c8 100644 --- a/vue/src/apps/UserFileView/main.js +++ b/vue/src/apps/ChecklistView/main.js @@ -1,5 +1,5 @@ import Vue from 'vue' -import App from './UserFileView.vue' +import App from './ChecklistView' import i18n from '@/i18n' Vue.config.productionTip = false diff --git a/vue/src/apps/CookbookView/CookbookView.vue b/vue/src/apps/CookbookView/CookbookView.vue new file mode 100644 index 00000000..32284f60 --- /dev/null +++ b/vue/src/apps/CookbookView/CookbookView.vue @@ -0,0 +1,158 @@ + + + + + diff --git a/vue/src/apps/CookbookView/main.js b/vue/src/apps/CookbookView/main.js new file mode 100644 index 00000000..e0766d6e --- /dev/null +++ b/vue/src/apps/CookbookView/main.js @@ -0,0 +1,10 @@ +import Vue from 'vue' +import App from './CookbookView.vue' +import i18n from '@/i18n' + +Vue.config.productionTip = false + +new Vue({ + i18n, + render: h => h(App), +}).$mount('#app') diff --git a/vue/src/apps/MealPlanView/MealPlanView.vue b/vue/src/apps/MealPlanView/MealPlanView.vue new file mode 100644 index 00000000..370ba0f9 --- /dev/null +++ b/vue/src/apps/MealPlanView/MealPlanView.vue @@ -0,0 +1,536 @@ + + + + + \ No newline at end of file diff --git a/vue/src/apps/MealPlanView/main.js b/vue/src/apps/MealPlanView/main.js new file mode 100644 index 00000000..0dc36cf7 --- /dev/null +++ b/vue/src/apps/MealPlanView/main.js @@ -0,0 +1,10 @@ +import Vue from 'vue' +import App from './MealPlanView.vue' +import i18n from '@/i18n' + +Vue.config.productionTip = false + +new Vue({ + i18n, + render: h => h(App), +}).$mount('#app') diff --git a/vue/src/apps/ModelListView/ModelListView.vue b/vue/src/apps/ModelListView/ModelListView.vue new file mode 100644 index 00000000..67fb150b --- /dev/null +++ b/vue/src/apps/ModelListView/ModelListView.vue @@ -0,0 +1,479 @@ + + + + + + + diff --git a/vue/src/apps/ModelListView/main.js b/vue/src/apps/ModelListView/main.js new file mode 100644 index 00000000..8236aaaf --- /dev/null +++ b/vue/src/apps/ModelListView/main.js @@ -0,0 +1,10 @@ +import Vue from 'vue' +import App from './ModelListView' +import i18n from '@/i18n' + +Vue.config.productionTip = false + +new Vue({ + i18n, + render: h => h(App), +}).$mount('#app') diff --git a/vue/src/apps/RecipeEditView/RecipeEditView.vue b/vue/src/apps/RecipeEditView/RecipeEditView.vue new file mode 100644 index 00000000..07665664 --- /dev/null +++ b/vue/src/apps/RecipeEditView/RecipeEditView.vue @@ -0,0 +1,836 @@ + + + + + + + diff --git a/vue/src/apps/RecipeEditView/main.js b/vue/src/apps/RecipeEditView/main.js new file mode 100644 index 00000000..c07b4ee6 --- /dev/null +++ b/vue/src/apps/RecipeEditView/main.js @@ -0,0 +1,10 @@ +import Vue from 'vue' +import App from './RecipeEditView' +import i18n from '@/i18n' + +Vue.config.productionTip = false + +new Vue({ + i18n, + render: h => h(App), +}).$mount('#app') diff --git a/vue/src/apps/RecipeSearchView/RecipeSearchView.vue b/vue/src/apps/RecipeSearchView/RecipeSearchView.vue index 061bc179..9521fd6f 100644 --- a/vue/src/apps/RecipeSearchView/RecipeSearchView.vue +++ b/vue/src/apps/RecipeSearchView/RecipeSearchView.vue @@ -10,16 +10,20 @@ - + + v-b-tooltip.hover :title="$t('Advanced Settings')" + v-bind:variant="!isAdvancedSettingsSet() ? 'primary' : 'danger'" + > + + + +
@@ -89,8 +93,6 @@ > - - + + + +
+
+
- +
+
- +
+
@@ -192,6 +213,22 @@
+ +
+
+ + + + + + + +
+
+
@@ -214,17 +251,15 @@
- - - diff --git a/vue/src/components/AddRecipeToBook.vue b/vue/src/components/AddRecipeToBook.vue index 67cd8e37..b24b3334 100644 --- a/vue/src/components/AddRecipeToBook.vue +++ b/vue/src/components/AddRecipeToBook.vue @@ -3,15 +3,11 @@
- -
[[formatDateDayname(d)]]
[[formatDateDay(d)]]. +
+ [[formatDateDayname(d)]]
[[formatDateDay(d)]].
- - - - -
- - {{ be.book_content.name }}
+
    +
  • + {{ be.book_content.name }} +
  • +
+ + + + + + + \ No newline at end of file diff --git a/vue/src/components/Badges/Icon.vue b/vue/src/components/Badges/Icon.vue new file mode 100644 index 00000000..c292d2db --- /dev/null +++ b/vue/src/components/Badges/Icon.vue @@ -0,0 +1,27 @@ + + + \ No newline at end of file diff --git a/vue/src/components/Badges/LinkedRecipe.vue b/vue/src/components/Badges/LinkedRecipe.vue new file mode 100644 index 00000000..cc98b726 --- /dev/null +++ b/vue/src/components/Badges/LinkedRecipe.vue @@ -0,0 +1,26 @@ + + + \ No newline at end of file diff --git a/vue/src/components/BetaWarning.vue b/vue/src/components/BetaWarning.vue new file mode 100644 index 00000000..5607c396 --- /dev/null +++ b/vue/src/components/BetaWarning.vue @@ -0,0 +1,16 @@ + + + + + \ No newline at end of file diff --git a/vue/src/components/ContextMenu/ContextMenu.vue b/vue/src/components/ContextMenu/ContextMenu.vue new file mode 100644 index 00000000..73381f77 --- /dev/null +++ b/vue/src/components/ContextMenu/ContextMenu.vue @@ -0,0 +1,127 @@ + + + + diff --git a/vue/src/components/ContextMenu/ContextMenuItem.vue b/vue/src/components/ContextMenu/ContextMenuItem.vue new file mode 100644 index 00000000..660c6bb6 --- /dev/null +++ b/vue/src/components/ContextMenu/ContextMenuItem.vue @@ -0,0 +1,16 @@ + + + + + + diff --git a/vue/src/components/CookbookEditCard.vue b/vue/src/components/CookbookEditCard.vue new file mode 100644 index 00000000..a2feebe0 --- /dev/null +++ b/vue/src/components/CookbookEditCard.vue @@ -0,0 +1,130 @@ + + + + + + \ No newline at end of file diff --git a/vue/src/components/CookbookSlider.vue b/vue/src/components/CookbookSlider.vue new file mode 100644 index 00000000..8449f8de --- /dev/null +++ b/vue/src/components/CookbookSlider.vue @@ -0,0 +1,235 @@ + + + + + \ No newline at end of file diff --git a/vue/src/components/CookbookToc.vue b/vue/src/components/CookbookToc.vue new file mode 100644 index 00000000..50a4a041 --- /dev/null +++ b/vue/src/components/CookbookToc.vue @@ -0,0 +1,44 @@ + + + + + \ No newline at end of file diff --git a/vue/src/components/FileViewer.vue b/vue/src/components/FileViewer.vue new file mode 100644 index 00000000..9643d807 --- /dev/null +++ b/vue/src/components/FileViewer.vue @@ -0,0 +1,39 @@ + + + diff --git a/vue/src/components/GenericContextMenu.vue b/vue/src/components/GenericContextMenu.vue new file mode 100644 index 00000000..166b798e --- /dev/null +++ b/vue/src/components/GenericContextMenu.vue @@ -0,0 +1,42 @@ + + + \ No newline at end of file diff --git a/vue/src/components/GenericHorizontalCard.vue b/vue/src/components/GenericHorizontalCard.vue new file mode 100644 index 00000000..232c12eb --- /dev/null +++ b/vue/src/components/GenericHorizontalCard.vue @@ -0,0 +1,262 @@ + + + + + \ No newline at end of file diff --git a/vue/src/components/GenericInfiniteCards.vue b/vue/src/components/GenericInfiniteCards.vue new file mode 100644 index 00000000..6dec4836 --- /dev/null +++ b/vue/src/components/GenericInfiniteCards.vue @@ -0,0 +1,92 @@ + + + + + diff --git a/vue/src/components/GenericMultiselect.vue b/vue/src/components/GenericMultiselect.vue index 0c20b406..6f0db11f 100644 --- a/vue/src/components/GenericMultiselect.vue +++ b/vue/src/components/GenericMultiselect.vue @@ -4,62 +4,113 @@ :options="objects" :close-on-select="true" :clear-on-select="true" - :hide-selected="true" + :hide-selected="multiple" :preserve-search="true" - :placeholder="placeholder" + :placeholder="lookupPlaceholder" :label="label" track-by="id" - :multiple="true" + :multiple="multiple" + :taggable="allow_create" + :tag-placeholder="create_placeholder" :loading="loading" @search-change="search" - @input="selectionChanged"> + @input="selectionChanged" + @tag="addNew"> diff --git a/vue/src/components/GenericPill.vue b/vue/src/components/GenericPill.vue new file mode 100644 index 00000000..c443652a --- /dev/null +++ b/vue/src/components/GenericPill.vue @@ -0,0 +1,44 @@ + + + diff --git a/vue/src/components/Ingredient.vue b/vue/src/components/Ingredient.vue index 97759f8a..843aac60 100644 --- a/vue/src/components/Ingredient.vue +++ b/vue/src/components/Ingredient.vue @@ -2,41 +2,45 @@ - + @@ -51,6 +55,10 @@ export default { ingredient_factor: { type: Number, default: 1, + }, + detailed: { + type: Boolean, + default: true } }, mixins: [ @@ -68,3 +76,13 @@ export default { } } + + diff --git a/vue/src/components/Keywords.vue b/vue/src/components/Keywords.vue index 6be8e260..eff7fb1a 100644 --- a/vue/src/components/Keywords.vue +++ b/vue/src/components/Keywords.vue @@ -1,7 +1,7 @@ diff --git a/vue/src/components/LastCooked.vue b/vue/src/components/LastCooked.vue index bac08de7..84f8c73d 100644 --- a/vue/src/components/LastCooked.vue +++ b/vue/src/components/LastCooked.vue @@ -1,6 +1,6 @@ + + \ No newline at end of file diff --git a/vue/src/locales/de.json b/vue/src/locales/de.json index 7a3b02fa..a9d9d199 100644 --- a/vue/src/locales/de.json +++ b/vue/src/locales/de.json @@ -27,7 +27,7 @@ "min": "Min", "Servings": "Portionen", "Waiting": "Wartezeit", - "Preparation": "Vorbereitung", + "Preparation": "Zubereitung", "Edit": "Bearbeiten", "Open": "Öffnen", "Save": "Speichern", @@ -71,5 +71,101 @@ "Cancel": "Abbrechen", "success_deleting_resource": "Ressource erfolgreich gelöscht!", "Load_More": "Mehr laden", - "Ok": "Öffnen" + "Ok": "Öffnen", + "Link": "Verknüpfung", + "Key_Ctrl": "Strg", + "move_title": "Verschieben {type}", + "Food": "Essen", + "Recipe_Book": "Kochbuch", + "delete_title": "Löschen {type}", + "create_title": "Neu {type}", + "edit_title": "Bearbeiten {type}", + "Name": "Name", + "Empty": "Leer", + "Key_Shift": "Umschalttaste", + "Text": "Text", + "Icon": "Icon", + "Automation": "Automatisierung", + "Ignore_Shopping": "Einkauf Ignorieren", + "Parameter": "Parameter", + "Sort_by_new": "Sortieren nach neu", + "Shopping_Category": "Einkauf Kategorie", + "Edit_Food": "Essen bearbeiten", + "Move_Food": "Essen verschieben", + "New_Food": "Neues Essen", + "Hide_Food": "Essen verbergen", + "Food_Alias": "Essen Alias", + "Unit_Alias": "Einheit Alias", + "Keyword_Alias": "Schlagwort Alias", + "Delete_Food": "Essen löschen", + "No_ID": "Nr. nicht gefunden, Objekt kann nicht gelöscht werden", + "create_rule": "und erstelle Automatisierung", + "Table_of_Contents": "Inhaltsverzeichnis", + "merge_title": "Zusammenführen {type}", + "del_confirmation_tree": "Sicher das {source} und alle untergeordneten Objekte gelöscht werden soll?", + "warning_feature_beta": "Diese Funktion ist aktuell in einer BETA (Test) Phase. Fehler sind zu erwarten und Änderungen in der Zukunft können die Funktionsweise möglicherweise Verändern oder Daten die mit dieser Funktion zusammen hängen entfernen.", + "Edit_Keyword": "Schlagwort bearbeiten", + "Move_Keyword": "Schlagwort verschieben", + "Merge_Keyword": "Schlagwort zusammenführen", + "Hide_Keywords": "Schlagwort verstecken", + "Meal_Plan_Days": "Zukünftige Pläne", + "Description": "Beschreibung", + "Create_New_Shopping Category": "Erstelle neue Einkaufs Kategorie", + "Automate": "Automatisieren", + "Type": "Typ", + "and_up": "& Hoch", + "Unrated": "Unbewertet", + "Shopping_list": "Einkaufsliste", + "step_time_minutes": "Schritt Zeit in Minuten", + "Save_and_View": "Speichern & Ansehen", + "Edit_Recipe": "Rezept bearbeiten", + "Hide_Recipes": "Rezepte verstecken", + "Move_Up": "Hoch", + "confirm_delete": "Soll dieses {object} wirklich gelöscht werden?", + "Show_as_header": "Als Überschrift", + "Hide_as_header": "Keine Überschrift", + "Copy_template_reference": "Template Referenz kopieren", + "Step_Type": "Schritt Typ", + "Make_Ingredient": "In Zutat wandeln", + "Make_Header": "In Überschrift wandeln", + "Enable_Amount": "Menge aktivieren", + "Disable_Amount": "Menge deaktivieren", + "Add_Step": "Schritt hinzufügen", + "Note": "Notiz", + "Failure": "Fehler", + "Move_Down": "Runter", + "Step_Name": "Schritt Name", + "Create": "Erstellen", + "Advanced Search Settings": "Erweiterte Sucheinstellungen", + "View": "Ansicht", + "Recipes": "Rezepte", + "Move": "Verschieben", + "Merge": "Zusammenführen", + "Parent": "Eltern", + "move_confirmation": "Verschiebe {child} zu Elternelement {parent}", + "merge_confirmation": "Ersetze {source} mit {target}", + "move_selection": "Wähle Elternelement {type} um {source} zu verschieben.", + "Root": "Ursprung", + "Recipe": "Rezept", + "tree_root": "Ursprung des Baums", + "Unit": "Einheit", + "No_Results": "Keine Ergebnisse", + "New_Unit": "Neue Einheit", + "Create_New_Food": "Neues Essen", + "Create_New_Keyword": "Neues Schlagwort", + "Create_New_Unit": "Neue Einheit", + "Instructions": "Anleitung", + "Time": "Zeit", + "New_Keyword": "Neues Schlagwort", + "Delete_Keyword": "Schlagwort löschen", + "show_split_screen": "Geteilte Ansicht", + "Recipes_per_page": "Rezepte pro Seite", + "Manage_Books": "Bücher Verwalten", + "delete_confirmation": "Soll {source} wirklich gelöscht werden?", + "merge_selection": "Ersetze alle vorkommen von {source} mit dem ausgewählten {type}.", + "Plan_Period_To_Show": "Wochen, Monate oder Jahre anzeigen", + "Title": "Titel", + "Week": "Wocje", + "Month": "Monat", + "Year": "Jahr" } diff --git a/vue/src/locales/en.json b/vue/src/locales/en.json index 272e6ffb..b50b38e3 100644 --- a/vue/src/locales/en.json +++ b/vue/src/locales/en.json @@ -1,4 +1,5 @@ { + "warning_feature_beta": "This feature is currently in a BETA (testing) state. Please expect bugs and possibly breaking changes in the future (possibly loosing feature related data) when using this feature.", "err_fetching_resource": "There was an error fetching a resource!", "err_creating_resource": "There was an error creating a resource!", "err_updating_resource": "There was an error updating a resource!", @@ -7,23 +8,30 @@ "success_creating_resource": "Successfully created a resource!", "success_updating_resource": "Successfully updated a resource!", "success_deleting_resource": "Successfully deleted a resource!", - + "file_upload_disabled": "File upload is not enabled for your space.", + "step_time_minutes": "Step time in minutes", + "confirm_delete": "Are you sure you want to delete this {object}?", "import_running": "Import running, please wait!", "all_fields_optional": "All fields are optional and can be left empty.", "convert_internal": "Convert to internal recipe", "show_only_internal": "Show only internal recipes", - + "show_split_screen": "Split View", "Log_Recipe_Cooking": "Log Recipe Cooking", "External_Recipe_Image": "External Recipe Image", "Add_to_Shopping": "Add to Shopping", "Add_to_Plan": "Add to Plan", "Step_start_time": "Step start time", "Sort_by_new": "Sort by new", + "Table_of_Contents": "Table of Contents", "Recipes_per_page": "Recipes per Page", - + "Show_as_header": "Show as header", + "Hide_as_header": "Hide as header", + "Copy_template_reference": "Copy template reference", + "Save_and_View": "Save & View", "Manage_Books": "Manage Books", "Meal_Plan": "Meal Plan", "Select_Book": "Select Book", + "Select_File": "Select File", "Recipe_Image": "Recipe Image", "Import_finished": "Import finished", "View_Recipes": "View Recipes", @@ -33,7 +41,23 @@ "Reset_Search": "Reset Search", "Recently_Viewed": "Recently Viewed", "Load_More": "Load More", - + "New_Keyword": "New Keyword", + "Delete_Keyword": "Delete Keyword", + "Edit_Keyword": "Edit Keyword", + "Edit_Recipe": "Edit Recipe", + "Move_Keyword": "Move Keyword", + "Merge_Keyword": "Merge Keyword", + "Hide_Keywords": "Hide Keyword", + "Hide_Recipes": "Hide Recipes", + "Move_Up": "Move up", + "Move_Down": "Move down", + "Step_Name": "Step Name", + "Step_Type": "Step Type", + "Make_header": "Make_Header", + "Make_Ingredient": "Make_Ingredient", + "Enable_Amount": "Enable Amount", + "Disable_Amount": "Disable Amount", + "Add_Step": "Add Step", "Keywords": "Keywords", "Books": "Books", "Proteins": "Proteins", @@ -43,13 +67,17 @@ "Nutrition": "Nutrition", "Date": "Date", "Share": "Share", + "Automation": "Automation", + "Parameter": "Parameter", "Export": "Export", "Copy": "Copy", "Rating": "Rating", "Close": "Close", + "Cancel": "Cancel", "Link": "Link", "Add": "Add", "New": "New", + "Note": "Note", "Success": "Success", "Failure": "Failure", "Ingredients": "Ingredients", @@ -66,7 +94,7 @@ "Files": "Files", "File": "File", "Edit": "Edit", - "Cancel": "Cancel", + "Image": "Image", "Delete": "Delete", "Open": "Open", "Ok": "Open", @@ -80,5 +108,83 @@ "and": "and", "Information": "Information", "Download": "Download", - "Create": "Create" -} \ No newline at end of file + "Create": "Create", + "Advanced Search Settings": "Advanced Search Settings", + "View": "View", + "Recipes": "Recipes", + "Move": "Move", + "Merge": "Merge", + "Parent": "Parent", + "delete_confirmation": "Are you sure that you want to delete {source}?", + "move_confirmation": "Move {child} to parent {parent}", + "merge_confirmation": "Replace {source} with {target}", + "create_rule": "and create automation", + "move_selection": "Select a parent {type} to move {source} to.", + "merge_selection": "Replace all occurrences of {source} with the selected {type}.", + "Root": "Root", + "Ignore_Shopping": "Ignore Shopping", + "Shopping_Category": "Shopping Category", + "Edit_Food": "Edit Food", + "Move_Food": "Move Food", + "New_Food": "New Food", + "Hide_Food": "Hide Food", + "Food_Alias": "Food Alias", + "Unit_Alias": "Unit Alias", + "Keyword_Alias": "Keyword Alias", + "Delete_Food": "Delete Food", + "No_ID": "ID not found, cannot delete.", + "Meal_Plan_Days": "Future meal plans", + "merge_title": "Merge {type}", + "move_title": "Move {type}", + "Food": "Food", + "Recipe_Book": "Recipe Book", + "del_confirmation_tree": "Are you sure that you want to delete {source} and all of it's children?", + "delete_title": "Delete {type}", + "create_title": "New {type}", + "edit_title": "Edit {type}", + "Name": "Name", + "Type": "Type", + "Description": "Description", + "Recipe": "Recipe", + "tree_root": "Root of Tree", + "Icon": "Icon", + "Unit": "Unit", + "No_Results": "No Results", + "New_Unit": "New Unit", + "Create_New_Shopping Category": "Create New Shopping Category", + "Create_New_Food": "Add New Food", + "Create_New_Keyword": "Add New Keyword", + "Create_New_Unit": "Add New Unit", + "Create_New_Meal_Type": "Add New Meal Type", + "and_up": "& Up", + "Instructions": "Instructions", + "Unrated": "Unrated", + "Automate": "Automate", + "Empty": "Empty", + "Key_Ctrl": "Ctrl", + "Key_Shift": "Shift", + "Time": "Time", + "Text": "Text", + "Shopping_list": "Shopping List", + "Create_Meal_Plan_Entry": "Create meal plan entry", + "Edit_Meal_Plan_Entry": "Edit meal plan entry", + "Title": "Title", + "Week": "Week", + "Month": "Month", + "Year": "Year", + "Planner": "Planner", + "Planner_Settings": "Planner settings", + "Period": "Period", + "Plan_Period_To_Show": "Show weeks, months or years", + "Periods": "Periods", + "Plan_Show_How_Many_Periods": "How many periods to show", + "Starting_Day": "Starting day of the week", + "Meal_Types": "Meal types", + "Meal_Type": "Meal type", + "Clone": "Clone", + "Drag_Here_To_Delete": "Drag here to delete", + "Meal_Type_Required": "Meal type is required", + "Title_or_Recipe_Required": "Title or recipe selection required", + "Color": "Color", + "New_Meal_Type": "New Meal type" +} diff --git a/vue/src/locales/fr.json b/vue/src/locales/fr.json index 42667368..a54b3fb3 100644 --- a/vue/src/locales/fr.json +++ b/vue/src/locales/fr.json @@ -1,80 +1,123 @@ { - "err_fetching_resource": "", - "err_creating_resource": "", - "err_updating_resource": "", - "err_deleting_resource": "", - "success_fetching_resource": "", - "success_creating_resource": "", - "success_updating_resource": "", - "success_deleting_resource": "", - "import_running": "", - "all_fields_optional": "", - "convert_internal": "", - "show_only_internal": "", - "Log_Recipe_Cooking": "", - "External_Recipe_Image": "", - "Add_to_Shopping": "", - "Add_to_Plan": "", - "Step_start_time": "", - "Sort_by_new": "", - "Recipes_per_page": "", - "Manage_Books": "", - "Meal_Plan": "", - "Select_Book": "", - "Recipe_Image": "", - "Import_finished": "", - "View_Recipes": "", - "Log_Cooking": "", - "New_Recipe": "", - "Url_Import": "", - "Reset_Search": "", - "Recently_Viewed": "", - "Load_More": "", - "Keywords": "", - "Books": "", - "Proteins": "", - "Fats": "", - "Carbohydrates": "", - "Calories": "", - "Nutrition": "", - "Date": "", - "Share": "", - "Export": "", - "Copy": "", - "Rating": "", - "Close": "", - "Link": "", - "Add": "", - "New": "", - "Success": "", - "Failure": "", - "Ingredients": "", - "Supermarket": "", - "Categories": "", - "Category": "", - "Selected": "", - "min": "", - "Servings": "", - "Waiting": "", - "Preparation": "", - "External": "", - "Size": "", - "Files": "", - "File": "", + "err_fetching_resource": "Il y a eu une erreur pour récupérer une ressource !", + "err_creating_resource": "Il y a eu une erreur pour créer une ressource !", + "err_updating_resource": "Il y a eu une erreur pour mettre à jour une ressource !", + "err_deleting_resource": "Il y a eu une erreur pour supprimer une ressource !", + "success_fetching_resource": "Ressource correctement récupérée !", + "success_creating_resource": "Ressource correctement créée !", + "success_updating_resource": "Ressource correctement mise à jour !", + "success_deleting_resource": "Ressource correctement supprimée !", + "import_running": "Importation en cours, veuillez patienter !", + "all_fields_optional": "Tous les champs sont optionnels et peuvent être laissés vides.", + "convert_internal": "Convertir en recette interne", + "show_only_internal": "Montrer uniquement les recettes internes", + "Log_Recipe_Cooking": "Marquer la recette comme cuisinée", + "External_Recipe_Image": "Image externe de recette", + "Add_to_Shopping": "Ajouter à la liste de courses", + "Add_to_Plan": "Ajouter au menu", + "Step_start_time": "Heure de départ de l'étape", + "Sort_by_new": "Trier par nouveautés", + "Recipes_per_page": "Nombre de recettes par page", + "Manage_Books": "Gérer les favoris", + "Meal_Plan": "Menu de la semaine", + "Select_Book": "Sélectionnez livre", + "Recipe_Image": "Image de la recette", + "Import_finished": "Importation finie", + "View_Recipes": "Voir les recettes", + "Log_Cooking": "Marquer comme cuisiné", + "New_Recipe": "Nouvelle recette", + "Url_Import": "Importation de l'url", + "Reset_Search": "Réinitialiser la recherche", + "Recently_Viewed": "Vu récemment", + "Load_More": "Charger plus", + "Keywords": "Mots-clés", + "Books": "Livres", + "Proteins": "Protéines", + "Fats": "Matières grasses", + "Carbohydrates": "Glucides", + "Calories": "Calories", + "Nutrition": "Informations nutritionnelles", + "Date": "Date", + "Share": "Partager", + "Export": "Exporter", + "Copy": "Copier", + "Rating": "Note", + "Close": "Fermer", + "Link": "Lien", + "Add": "Ajouter", + "New": "Nouveau", + "Success": "Réussite", + "Failure": "Échec", + "Ingredients": "Ingrédients", + "Supermarket": "Supermarché", + "Categories": "Catégories", + "Category": "Catégorie", + "Selected": "Sélectionné", + "min": "min", + "Servings": "Portions", + "Waiting": "Attente", + "Preparation": "Préparation", + "External": "Externe", + "Size": "Taille", + "Files": "Fichiers", + "File": "Fichier", "Edit": "Modifier", - "Cancel": "", + "Cancel": "Annuler", "Delete": "Supprimer", - "Open": "", - "Ok": "", - "Save": "", - "Step": "", - "Search": "", - "Import": "", - "Print": "", - "Settings": "", - "or": "", - "and": "", - "Information": "", - "Download": "", - "Create": "" + "Open": "Ouvrir", + "Ok": "Ouvrir", + "Save": "Sauvegarder", + "Step": "Étape", + "Search": "Rechercher", + "Import": "Importer", + "Print": "Imprimer", + "Settings": "Paramètres", + "or": "ou", + "and": "et", + "Information": "Information", + "Download": "Télécharger", + "Create": "Créer", + "show_split_screen": "Voir la vue séparée", + "New_Keyword": "Nouveau mot-clé", + "Delete_Keyword": "Supprimer mot-clé", + "Move_Keyword": "Déplacer mot-clé", + "Merge_Keyword": "Fusionner mots-clés", + "Hide_Recipes": "Cacher recettes", + "Advanced Search Settings": "Paramètres de recherche avancée", + "View": "Voir", + "Recipes": "Recettes", + "Move": "Déplacer", + "Merge": "Fusionner", + "Parent": "Parent", + "move_confirmation": "Déplacer {child} vers le parent {parent}", + "merge_confirmation": "Remplacer {source} par {target}", + "Root": "Racine", + "delete_confirmation": "Êtes-vous sûr de vouloir supprimer {source} ?", + "Shopping_Category": "Catégorie de courses", + "Ignore_Shopping": "Ignorer les courses", + "Edit_Food": "Modifier aliment", + "Move_Food": "Déplacer aliment", + "New_Food": "Nouvel aliment", + "Hide_Food": "Cacher l'aliment", + "Delete_Food": "Supprimer l'aliment", + "No_ID": "ID introuvable, il n'a pas pu être supprimé.", + "Meal_Plan_Days": "Futurs menus", + "merge_title": "Fusionner {type}", + "Food": "Aliment", + "Recipe_Book": "Livre de recettes", + "delete_title": "Supprimer {type}", + "create_title": "Nouveau {type}", + "edit_title": "Modifier {type}", + "Name": "Nom", + "Description": "Description", + "Recipe": "Recette", + "tree_root": "Racine de l'arbre", + "Edit_Keyword": "Modifier mot-clé", + "Hide_Keywords": "Cacher mots-clés", + "move_selection": "Sélectionner un parent {type} pour y déplacer {source}.", + "merge_selection": "Remplace toutes les occurrences de {source} par {type}.", + "move_title": "Déplacer {type}", + "del_confirmation_tree": "Êtes-vous sûr de vouloir supprimer {source} et tous ses enfants ?", + "warning_feature_beta": "Cette fonctionnalité est actuellement en phase BETA (test). Veuillez vous attendre à des bugs et éventuellement à des changements avenir (éventuellement la perte de données liées aux fonctionnalités) lorsque vous utilisez cette fonctionnalité.", + "confirm_delete": "Voulez-vous vraiment supprimer {objet} ?" } diff --git a/vue/src/locales/hy.json b/vue/src/locales/hy.json index a453a9c5..59bc5942 100644 --- a/vue/src/locales/hy.json +++ b/vue/src/locales/hy.json @@ -66,11 +66,38 @@ "Save": "", "Step": "", "Search": "", - "Import": "", - "Print": "", - "Settings": "", - "or": "", - "and": "", - "Information": "", - "Download": "" + "Import": "Ներմուծել", + "Print": "Տպել", + "Settings": "Կարգավորումներ", + "or": "կամ", + "and": "և", + "Information": "Տեղեկություն", + "Download": "Ներբեռնել", + "Merge": "Միացնել", + "Parent": "Ծնող", + "create_rule": "և ստեղծել ավտոմատացում", + "Food": "Սննդամթերք", + "Name": "Անուն", + "Description": "Նկարագրություն", + "Recipe": "Բաղադրատոմս", + "Empty": "Դատարկ", + "No_Results": "Արդյունքներ չկան", + "Automate": "Ավտոմատացնել", + "Create_New_Food": "Ավելացնել նոր սննդամթերք", + "Create_New_Keyword": "Ավելացնել նոր բանալի բառ", + "Create_New_Shopping Category": "Ստեղծել գնումների նոր կատեգորիա", + "Recipe_Book": "Բաղադրատոմսերի գիրք", + "Move": "Տեղափոխել", + "Create": "Ստեղծել", + "Advanced Search Settings": "Ընդլայնված փնտրման կարգավորումներ", + "View": "Դիտել", + "Recipes": "Բաղադրատոմսեր", + "Shopping_list": "Գնումների ցուցակ", + "delete_confirmation": "Համոզվա՞ծ եք, որ ուզում եք ջնջել։", + "Shopping_Category": "Գնումների կատեգորիա", + "Edit_Food": "Խմբագրել սննդամթերքը", + "Move_Food": "Տեղափոխել սննդամթերքը", + "New_Food": "Նոր սննդամթերք", + "Hide_Food": "Թաքցնել սննդամթերքը", + "Delete_Food": "Ջնջել սննդամթերքը" } diff --git a/vue/src/locales/it.json b/vue/src/locales/it.json new file mode 100644 index 00000000..a015f631 --- /dev/null +++ b/vue/src/locales/it.json @@ -0,0 +1,186 @@ +{ + "err_fetching_resource": "Si è verificato un errore nel recupero della risorsa!", + "err_creating_resource": "Si è verificato un errore durante la creazione di una risorsa!", + "err_updating_resource": "Si è verificato un errore nell'aggiornamento della risorsa!", + "err_deleting_resource": "Si è verificato un errore nella cancellazione della risorsa!", + "success_fetching_resource": "Risorsa recuperata con successo!", + "success_creating_resource": "Risorsa creata con successo!", + "success_updating_resource": "Risorsa aggiornata con successo!", + "success_deleting_resource": "Risorsa eliminata con successo!", + "import_running": "Importazione in corso, attendere prego!", + "all_fields_optional": "Tutti i campi sono opzionali e possono essere lasciati vuoti.", + "convert_internal": "Converti come ricetta interna", + "show_only_internal": "Mostra solo ricette interne", + "show_split_screen": "Vista divisa", + "Log_Recipe_Cooking": "Aggiungi a ricette cucinate", + "External_Recipe_Image": "Immagine ricetta esterna", + "Add_to_Shopping": "Aggiunti a lista della spesa", + "Add_to_Plan": "Aggiungi a Piano", + "Step_start_time": "Ora di inizio dello Step", + "Sort_by_new": "Prima i nuovi", + "Recipes_per_page": "Ricette per pagina", + "Manage_Books": "Gestisci Libri", + "Meal_Plan": "Piano alimentare", + "Select_Book": "Seleziona Libro", + "Recipe_Image": "Immagine ricetta", + "Import_finished": "Importazione completata", + "View_Recipes": "Mostra ricette", + "Log_Cooking": "Registro ricette cucinate", + "New_Recipe": "Nuova Ricetta", + "Url_Import": "Importa da URL", + "Reset_Search": "Ripristina Ricerca", + "Recently_Viewed": "Visualizzati di recente", + "Load_More": "Carica di più", + "New_Keyword": "Nuova parola chiave", + "Delete_Keyword": "Elimina parola chiave", + "Edit_Keyword": "Modifica parola chiave", + "Move_Keyword": "Sposta parola chiave", + "Merge_Keyword": "Unisci parola chiave", + "Hide_Keywords": "Nascondi parola chiave", + "Hide_Recipes": "Nascondi Ricette", + "Keywords": "Parole chiave", + "Books": "Libri", + "Proteins": "Proteine", + "Fats": "Grassi", + "Carbohydrates": "Carboidrati", + "Calories": "Calorie", + "Nutrition": "Nutrienti", + "Date": "Data", + "Share": "Condividi", + "Export": "Esporta", + "Copy": "Copia", + "Rating": "Valutazione", + "Close": "Chiudi", + "Cancel": "Annulla", + "Link": "Link", + "Add": "Aggiungi", + "New": "Nuovo", + "Success": "Riuscito", + "Failure": "Errore", + "Ingredients": "Ingredienti", + "Supermarket": "Supermercato", + "Categories": "Categorie", + "Category": "Categoria", + "Selected": "Selezionato", + "min": "min", + "Servings": "Porzioni", + "Waiting": "Attesa", + "Preparation": "Preparazione", + "External": "Esterna", + "Size": "Dimensione", + "Files": "File", + "File": "File", + "Edit": "Modifica", + "Delete": "Elimina", + "Open": "Apri", + "Ok": "Apri", + "Save": "Salva", + "Step": "Step", + "Search": "Cerca", + "Import": "Importa", + "Print": "Stampa", + "Settings": "Impostazioni", + "or": "o", + "and": "e", + "Information": "Informazioni", + "Download": "Scarica", + "Create": "Crea", + "Advanced Search Settings": "Impostazioni avanzate di ricerca", + "View": "Mostra", + "Recipes": "Ricette", + "Move": "Sposta", + "Merge": "Unisci", + "Parent": "Principale", + "delete_confimation": "Sei sicuro di voler eliminare {kw} e tutti gli elementi dipendenti?", + "move_confirmation": "Sposta {child} al primario {parent}", + "merge_confirmation": "Sostituisci {source} con {target}", + "move_selection": "Scegli un primario {type} dove spostare {source}.", + "merge_selection": "Sostituisci tutte le voci di {source} con il {type} selezionato.", + "Root": "Radice", + "Ignore_Shopping": "Ignora lista della spesa", + "delete_confirmation": "Sei sicuro di voler eliminare {source}?", + "Description": "Descrizione", + "Icon": "Icona", + "Unit": "Unità", + "No_ID": "ID non trovato, non è possibile eliminare.", + "Recipe_Book": "Libro di Ricette", + "create_title": "Nuovo {type}", + "edit_title": "Modifica {type}", + "Name": "Nome", + "Recipe": "Ricetta", + "delete_title": "Elimina {type}", + "Unrated": "Senza valutazione", + "New_Unit": "Nuova unità di misura", + "move_title": "Sposta {type}", + "Food": "Alimento", + "Delete_Food": "Elimina alimento", + "Edit_Food": "Modifica alimento", + "Move_Food": "Sposta alimento", + "New_Food": "Nuovo alimento", + "Hide_Food": "Nascondi alimento", + "merge_title": "Unisci {type}", + "Key_Shift": "Maiusc", + "del_confirmation_tree": "Sei sicuro di voler eliminare {source} e tutti gli elementi dipendenti?", + "Disable_Amount": "Disabilita Quantità", + "Key_Ctrl": "Ctrl", + "No_Results": "Nessun risultato", + "Create_New_Shopping Category": "Crea nuova categoria di spesa", + "Create_New_Keyword": "Aggiungi nuova parola chiave", + "and_up": "& Su", + "step_time_minutes": "Tempo dello step in minuti", + "confirm_delete": "Sei sicuro di voler eliminare questo {object}?", + "Show_as_header": "Mostra come intestazione", + "Hide_as_header": "Nascondi come intestazione", + "Copy_template_reference": "Copia riferimento template", + "Save_and_View": "Salva & Mostra", + "Text": "Testo", + "Edit_Recipe": "Modifica Ricetta", + "Move_Up": "Sposta Sopra", + "Move_Down": "Sposta Sotto", + "Step_Name": "Nome dello Step", + "Step_Type": "Tipo di Step", + "Enable_Amount": "Abilita Quantità", + "Add_Step": "Aggiungi Step", + "Note": "Nota", + "Create_New_Food": "Aggiungi nuovo alimento", + "Make_Header": "Crea Intestazione", + "Make_Ingredient": "Crea Ingrediente", + "Create_New_Unit": "Aggiungi nuova unità", + "Instructions": "Istruzioni", + "Time": "Tempo", + "Shopping_Category": "Categoria di spesa", + "Meal_Plan_Days": "Piani alimentari futuri", + "tree_root": "Radice dell'albero", + "Automation": "Automazione", + "Parameter": "Parametro", + "Type": "Tipo", + "Automate": "Automatizza", + "create_rule": "e crea automazione", + "Empty": "Vuoto", + "Food_Alias": "Alias Alimento", + "Unit_Alias": "Alias Unità", + "Keyword_Alias": "Alias Parola Chiave", + "Table_of_Contents": "Indice dei contenuti", + "warning_feature_beta": "Questa funzione è attualmente in BETA (non è completa). Potrebbero verificarsi delle anomalie e modifiche che in futuro potrebbero bloccare la funzionalità stessa o rimuove i dati correlati a essa.", + "Shopping_list": "Lista della spesa", + "Title": "Titolo", + "Create_New_Meal_Type": "Aggiungi nuovo tipo di pasto", + "Week": "Settimana", + "Month": "Mese", + "Year": "Anno", + "Planner": "Planner", + "Planner_Settings": "Impostazioni planner", + "Period": "Periodo", + "Plan_Period_To_Show": "Mostra settimane, mesi o anni", + "Plan_Show_How_Many_Periods": "Periodo da mostrare", + "Starting_Day": "Giorno di inizio della settimana", + "Meal_Types": "Tipi di pasto", + "Clone": "Duplica", + "Drag_Here_To_Delete": "Sposta qui per eliminare", + "Meal_Type_Required": "Il tipo di pasto è richiesto", + "Periods": "Periodi", + "Meal_Type": "Tipo di pasto", + "Title_or_Recipe_Required": "Sono richiesti titolo o ricetta", + "Create_Meal_Plan_Entry": "Crea voce nel piano alimentare", + "Edit_Meal_Plan_Entry": "Modifica voce del piano alimentare" +} diff --git a/vue/src/locales/nl.json b/vue/src/locales/nl.json index bda045db..26b1340c 100644 --- a/vue/src/locales/nl.json +++ b/vue/src/locales/nl.json @@ -74,5 +74,120 @@ "Cancel": "Annuleer", "Delete": "Verwijder", "Ok": "Open", - "Load_More": "Laad meer" + "Load_More": "Laad meer", + "Manage_Books": "Beheer Boeken", + "Create": "Maak", + "Failure": "Storing", + "View": "Bekijk", + "Recipes": "Recepten", + "Move": "Verplaats", + "Parent": "Ouder", + "move_confirmation": "Verplaats {child} naar ouder {parent}", + "merge_confirmation": "Vervang {source} with {target}", + "move_selection": "Selecteer een ouder {type} om {source} naar te verplaatsen.", + "merge_selection": "Vervang alle voorvallen van {source} door het type {type}.", + "Root": "Bron", + "show_split_screen": "Gesplitste weergave", + "New_Keyword": "Nieuw Etiket", + "Delete_Keyword": "Verwijder Etiket", + "Edit_Keyword": "Bewerk Etiket", + "Move_Keyword": "Verplaats Etiket", + "Hide_Keywords": "Verberg Etiket", + "Hide_Recipes": "Verberg Recepten", + "Advanced Search Settings": "Geavanceerde zoekinstellingen", + "Merge": "Samenvoegen", + "delete_confimation": "Weet je zeker dat je {kw} en zijn kinderen wil verwijderen?", + "Merge_Keyword": "Voeg Etiket samen", + "step_time_minutes": "Stap duur in minuten", + "confirm_delete": "Weet je zeker dat je dit {object} wil verwijderen?", + "Show_as_header": "Toon als koptekst", + "Hide_as_header": "Verberg als koptekst", + "Copy_template_reference": "Kopieer sjabloon verwijzing", + "Save_and_View": "Sla op & Bekijk", + "Edit_Recipe": "Bewerk Recept", + "Move_Up": "Verplaats omhoog", + "Move_Down": "Verplaats omlaag", + "Step_Name": "Stap Naam", + "Step_Type": "Stap Type", + "Make_Header": "Maak_Koptekst", + "Make_Ingredient": "Maak_Ingrediënt", + "Enable_Amount": "Schakel Hoeveelheid in", + "Disable_Amount": "Schakel Hoeveelheid uit", + "Add_Step": "Voeg Stap toe", + "Note": "Notitie", + "delete_confirmation": "Weet je zeker dat je {source} wil verwijderen?", + "Ignore_Shopping": "Negeer Boodschappen", + "Shopping_Category": "Boodschappen Categorie", + "Edit_Food": "Bewerk Eten", + "Move_Food": "Verplaats Eten", + "New_Food": "Nieuw Eten", + "Hide_Food": "Verberg Eten", + "Delete_Food": "Verwijder Eten", + "No_ID": "ID niet gevonden, verwijderen niet mogelijk.", + "Meal_Plan_Days": "Toekomstige maaltijdplannen", + "merge_title": "Voeg {type} samen", + "move_title": "Verplaats {type}", + "Food": "Eten", + "Key_Ctrl": "Ctrl", + "Parameter": "Parameter", + "Automation": "Automatisering", + "create_rule": "en creëer automatisering", + "Food_Alias": "Eten Alias", + "Unit_Alias": "Eenheid Alias", + "Keyword_Alias": "Etiket Alias", + "Recipe_Book": "Kookboek", + "New_Unit": "Nieuwe Eenheid", + "Create_New_Shopping Category": "Maak nieuwe Boodschappen Categorie", + "delete_title": "Verwijder {type}", + "create_title": "Nieuw {type}", + "edit_title": "Bewerk {type}", + "Name": "Naam", + "Type": "Type", + "Description": "Beschrijving", + "Recipe": "Recept", + "tree_root": "Hoogste niveau", + "Icon": "Icoon", + "Unit": "Eenheid", + "No_Results": "Geen resultaten", + "Create_New_Keyword": "Voeg nieuw Etiket toe", + "Create_New_Unit": "Voeg nieuwe Eenheid toe", + "Instructions": "Instructies", + "Automate": "Automatiseer", + "Key_Shift": "Shift", + "Text": "Tekst", + "and_up": "& Omhoog", + "Unrated": "Niet beoordeeld", + "Shopping_list": "Boodschappenlijst", + "del_confirmation_tree": "Weet je zeker dat je {source} en al zijn kinderen wil verwijderen?", + "Create_New_Food": "Voeg nieuw Eten toe", + "Time": "Tijd", + "warning_feature_beta": "Deze functie zit op dit moment in de BETA (test) fase. Verwacht hier bugs en toekomstige wijzigingen die tot het verlies van data gaan leiden bij het gebruik.", + "Table_of_Contents": "Inhoudsopgave", + "Create_New_Meal_Type": "Voeg Nieuw Maaltijdtype toe", + "Empty": "Leeg", + "Create_Meal_Plan_Entry": "Maak maaltijdplan regel", + "Edit_Meal_Plan_Entry": "Bewerk maaltijdplan regel", + "Title": "Titel", + "Week": "Week", + "Month": "Maand", + "Make_header": "Maak_Koptekst", + "Color": "Kleur", + "New_Meal_Type": "Nieuw Maaltype", + "Image": "Afbeelding", + "Planner_Settings": "Planner instellingen", + "Period": "Periode", + "Plan_Period_To_Show": "Toon weken, maanden of jaren", + "Periods": "Periodes", + "Plan_Show_How_Many_Periods": "Hoeveel perioden tonen", + "Starting_Day": "Eerste dag van de week", + "Meal_Types": "Maaltypes", + "Meal_Type": "Maaltype", + "Clone": "Kloon", + "Drag_Here_To_Delete": "Sleep hierheen om te verwijderen", + "Meal_Type_Required": "Maaltype is verplicht", + "Title_or_Recipe_Required": "Titel of recept selectie is verplicht", + "Select_File": "Selecteer Bestand", + "Year": "Jaar", + "Planner": "Planner", + "file_upload_disabled": "Het uploaden van bestanden is niet ingeschakeld voor uw ruimte." } diff --git a/vue/src/locales/pl.json b/vue/src/locales/pl.json new file mode 100644 index 00000000..c8dde768 --- /dev/null +++ b/vue/src/locales/pl.json @@ -0,0 +1,163 @@ +{ + "warning_feature_beta": "Ta funkcja jest obecnie w wersji BETA (testowej). Podczas korzystania z tej funkcji należy spodziewać się błędów i ewentualnych zmian w przyszłości (prawdopodobna utrata danych powiązanych z tą funkcją).", + "err_fetching_resource": "Wystąpił błąd podczas pobierania zasobu!", + "err_creating_resource": "Wystąpił błąd podczas tworzenia zasobu!", + "err_updating_resource": "Wystąpił błąd podczas aktualizowania zasobu!", + "err_deleting_resource": "Wystąpił błąd podczas usuwania zasobu!", + "success_fetching_resource": "Pomyślnie pobrano zasób!", + "success_creating_resource": "Pomyślnie utworzono zasób!", + "success_updating_resource": "Pomyślnie zaktualizowano zasób!", + "success_deleting_resource": "Pomyślnie usunięto zasób!", + "step_time_minutes": "Poszczególne kroki w minutach", + "confirm_delete": "Czy na pewno chcesz usunąć {object}?", + "import_running": "Trwa importowanie, proszę czekać!", + "all_fields_optional": "Wszystkie pola są opcjonalne i można je pozostawić puste.", + "convert_internal": "Konwertuj do lokalnego przepisu", + "show_only_internal": "Pokaż tylko lokalne przepisy", + "show_split_screen": "Widok podzielony", + "Log_Recipe_Cooking": "Zaloguj gotowanie przepisu", + "External_Recipe_Image": "Zewnętrzny obraz dla przepisu", + "Add_to_Shopping": "Dodaj do zakupów", + "Add_to_Plan": "Dodaj do planu", + "Step_start_time": "Czas rozpoczęcia kroku", + "Sort_by_new": "Sortuj według nowych", + "Recipes_per_page": "Przepisy na stronę", + "Show_as_header": "Pokaż jako nagłówek", + "Hide_as_header": "Ukryj jako nagłówek", + "Copy_template_reference": "Skopiuj odniesienie do przykładowego szablonu", + "Save_and_View": "Zapisz i wyświetl", + "Manage_Books": "Zarządzaj książkami", + "Meal_Plan": "Plan posiłków", + "Select_Book": "Wybierz książkę", + "Recipe_Image": "Obrazek dla przepisu", + "Import_finished": "Import zakończony", + "View_Recipes": "Przeglądaj przepisy", + "Log_Cooking": "Zanotuj ugotowanie", + "New_Recipe": "Nowy przepis", + "Url_Import": "Importowanie URL", + "Reset_Search": "Resetuj wyszukiwanie", + "Recently_Viewed": "Ostatnio oglądane", + "Load_More": "Załaduj więcej", + "New_Keyword": "Nowe słowo kluczowe", + "Delete_Keyword": "Usuń słowo kluczowe", + "Edit_Keyword": "Edytuj słowo kluczowe", + "Edit_Recipe": "Edytuj przepis", + "Move_Keyword": "Przenieś słowo kluczowe", + "Merge_Keyword": "Scal słowa kluczowe", + "Hide_Keywords": "Ukryj słowo kluczowe", + "Hide_Recipes": "Ukryj przepisy", + "Move_Up": "Przesunąć w górę", + "Move_Down": "Przesunąć w dół", + "Step_Name": "Nazwa kroku", + "Step_Type": "Typ kroku", + "Make_Header": "Utwórz nagłówek", + "Make_Ingredient": "Utwórz składnik", + "Enable_Amount": "Włącz ilość", + "Disable_Amount": "Wyłącz ilość", + "Add_Step": "Dodaj krok", + "Keywords": "Słowa kluczowe", + "Books": "Książki", + "Proteins": "Białka", + "Fats": "Tłuszcze", + "Carbohydrates": "Węglowodany", + "Calories": "Kalorie", + "Nutrition": "Odżywianie", + "Date": "Data", + "Share": "Udostępnij", + "Automation": "Automatyzacja", + "Parameter": "Parametr", + "Export": "Eksport", + "Copy": "Kopiuj", + "Rating": "Ocena", + "Close": "Zamknij", + "Cancel": "Anuluj", + "Link": "Link", + "Add": "Dodaj", + "New": "Nowy", + "Note": "Notatka", + "Success": "Powodzenie", + "Failure": "Niepowodzenie", + "Ingredients": "Składniki", + "Supermarket": "Supermarket", + "Categories": "Kategorie", + "Category": "Kategorie", + "Selected": "Wybrane", + "min": "min", + "Servings": "Porcje", + "Waiting": "Oczekiwanie", + "Preparation": "Przygotowanie", + "External": "Zewnętrzny", + "Size": "Rozmiar", + "Files": "Pliki", + "File": "Plik", + "Edit": "Edytuj", + "Delete": "Usuń", + "Open": "Otwórz", + "Ok": "Ok", + "Save": "Zapisz", + "Step": "Krok", + "Search": "Szukaj", + "Import": "Importuj", + "Print": "Drukuj", + "Settings": "Ustawienia", + "or": "lub", + "and": "i", + "Information": "Informacja", + "Download": "Pobieranie", + "Create": "Stwórz", + "Advanced Search Settings": "Ustawienia zaawansowanego wyszukiwania", + "View": "Pogląd", + "Recipes": "Przepisy", + "Move": "Przenieś", + "Merge": "Scal", + "Parent": "Nadrzędny", + "delete_confirmation": "Czy na pewno chcesz usunąć {source}?", + "move_confirmation": "Przenieś {child} do nadrzędnego {parent}", + "merge_confirmation": "Zamień {source} z {target}", + "create_rule": "i stwórz automatyzację", + "move_selection": "Wskaż nadrzędny {type} aby przenieść do niego {source}.", + "merge_selection": "Zastąp wszystkie wystąpienia {source} wybranym {type}.", + "Root": "Główny", + "Ignore_Shopping": "Ignoruj zakupy", + "Shopping_Category": "Kategoria zakupów", + "Edit_Food": "Edytuj żywność", + "Move_Food": "Przenieś żywność", + "New_Food": "Nowa żywność", + "Hide_Food": "Ukryj żywność", + "Food_Alias": "Alias żywności", + "Unit_Alias": "Alias jednostek", + "Keyword_Alias": "Alias słowa kluczowego", + "Delete_Food": "Usuń żywność", + "No_ID": "ID nie znaleziono, nie można usunąć.", + "Meal_Plan_Days": "Przyszłe plany posiłków", + "merge_title": "Scal {type}", + "move_title": "Przenieś {type}", + "Food": "Żywność", + "Recipe_Book": "Książka z przepisami", + "del_confirmation_tree": "Czy na pewno chcesz usunąć {source} i wszystkie jego elementy podrzędne?", + "delete_title": "Usuń {type}", + "create_title": "Nowy {type}", + "edit_title": "Edytuj {type}", + "Name": "Nazwa", + "Type": "Typ", + "Description": "Opis", + "Recipe": "Przepis", + "tree_root": "Poziom główny drzewa", + "Icon": "Ikona", + "Unit": "Jednostka", + "No_Results": "Brak wyników", + "New_Unit": "Nowa jednostka", + "Create_New_Shopping Category": "Stwórz nową kategorię zakupów", + "Create_New_Food": "Dodaj nową żywność", + "Create_New_Keyword": "Dodaj nowe słowo kluczowe", + "Create_New_Unit": "Dodaj nowa jednostkę", + "and_up": "& Góra", + "Instructions": "Instrukcje", + "Unrated": "Nieoceniony", + "Automate": "Automatyzacja", + "Key_Ctrl": "Ctrl", + "Key_Shift": "Shift", + "Time": "Czas", + "Text": "Tekst", + "Shopping_list": "Lista zakupów" +} diff --git a/vue/src/sw.js b/vue/src/sw.js index 2bbc7f34..412586fd 100644 --- a/vue/src/sw.js +++ b/vue/src/sw.js @@ -6,7 +6,8 @@ import {ExpirationPlugin} from 'workbox-expiration'; const OFFLINE_CACHE_NAME = 'offline-html'; -const OFFLINE_PAGE_URL = '/offline/'; +let script_name = typeof window !== 'undefined' ? localStorage.getItem('SCRIPT_NAME') : '/' +var OFFLINE_PAGE_URL = script_name + 'offline/'; self.addEventListener('install', async (event) => { event.waitUntil( diff --git a/vue/src/utils/models.js b/vue/src/utils/models.js new file mode 100644 index 00000000..94cb5068 --- /dev/null +++ b/vue/src/utils/models.js @@ -0,0 +1,621 @@ +/* +* Utility CLASS to define model configurations +* */ +import i18n from "@/i18n"; + +// TODO this needs rethought and simplified +// maybe a function that returns a single dictionary based on action? +export class Models { + // Arrays correspond to ORDERED list of parameters required by ApiApiFactory + // Inner arrays are used to construct a dictionary of key:value pairs + // MODEL configurations will override MODEL_TYPE configurations with will override ACTION configurations + + // MODEL_TYPES - inherited by MODELS, inherits and takes precedence over ACTIONS + static TREE = { + 'list': { + 'params': ['query', 'root', 'tree', 'page', 'pageSize', 'options'], + 'config': { + 'root': { + 'default': { + 'function': 'CONDITIONAL', + 'check': 'query', + 'operator': 'not_exist', + 'true': 0, + 'false': undefined + } + }, + 'tree': {'default': undefined}, + }, + }, + 'delete': { + "form": { + 'instruction': { + 'form_field': true, + 'type': 'instruction', + 'function': 'translate', + 'phrase': "del_confimation_tree", + 'params': [ + { + 'token': 'source', + 'from': 'item1', + 'attribute': "name" + } + ] + } + } + }, + 'move': { + 'form': { + 'target': { + 'form_field': true, + 'type': 'lookup', + 'field': 'target', + 'list': 'self', + 'sticky_options': [{'id': 0, 'name': i18n.t('tree_root')}] + } + } + } + } + + // MODELS - inherits and takes precedence over MODEL_TYPES and ACTIONS + static FOOD = { + 'name': i18n.t('Food'), // *OPTIONAL* : parameters will be built model -> model_type -> default + 'apiName': 'Food', // *REQUIRED* : the name that is used in api.ts for this model + 'model_type': this.TREE, // *OPTIONAL* : model specific params for api, if not present will attempt modeltype_create then default_create + 'paginated': true, + 'move': true, + 'merge': true, + 'badges': { + 'linked_recipe': true, + }, + 'tags': [{'field': 'supermarket_category', 'label': 'name', 'color': 'info'}], + // REQUIRED: unordered array of fields that can be set during create + 'create': { + // if not defined partialUpdate will use the same parameters, prepending 'id' + 'params': [['name', 'description', 'recipe', 'ignore_shopping', 'supermarket_category']], + 'form': { + 'name': { + 'form_field': true, + 'type': 'text', + 'field': 'name', + 'label': i18n.t('Name'), + 'placeholder': '' + }, + 'description': { + 'form_field': true, + 'type': 'text', + 'field': 'description', + 'label': i18n.t('Description'), + 'placeholder': '' + }, + 'recipe': { + 'form_field': true, + 'type': 'lookup', + 'field': 'recipe', + 'list': 'RECIPE', + 'label': i18n.t('Recipe') + }, + 'shopping': { + 'form_field': true, + 'type': 'checkbox', + 'field': 'ignore_shopping', + 'label': i18n.t('Ignore_Shopping') + }, + 'shopping_category': { + 'form_field': true, + 'type': 'lookup', + 'field': 'supermarket_category', + 'list': 'SHOPPING_CATEGORY', + 'label': i18n.t('Shopping_Category'), + 'allow_create': true + }, + } + }, + + } + + static KEYWORD = { + 'name': i18n.t('Keyword'), // *OPTIONAL: parameters will be built model -> model_type -> default + 'apiName': 'Keyword', + 'model_type': this.TREE, + 'paginated': true, + 'move': true, + 'merge': true, + 'badges': { + 'icon': true + }, + 'create': { + // if not defined partialUpdate will use the same parameters, prepending 'id' + 'params': [['name', 'description', 'icon']], + 'form': { + 'name': { + 'form_field': true, + 'type': 'text', + 'field': 'name', + 'label': i18n.t('Name'), + 'placeholder': '' + }, + 'description': { + 'form_field': true, + 'type': 'text', + 'field': 'description', + 'label': i18n.t('Description'), + 'placeholder': '' + }, + 'icon': { + 'form_field': true, + 'type': 'emoji', + 'field': 'icon', + 'label': i18n.t('Icon') + }, + } + }, + } + + static UNIT = { + 'name': i18n.t('Unit'), + 'apiName': 'Unit', + 'paginated': true, + 'create': { + 'params': [['name', 'description']], + 'form': { + 'name': { + 'form_field': true, + 'type': 'text', + 'field': 'name', + 'label': i18n.t('Name'), + 'placeholder': '' + }, + 'description': { + 'form_field': true, + 'type': 'text', + 'field': 'description', + 'label': i18n.t('Description'), + 'placeholder': '' + } + } + }, + 'merge': true + } + + static SHOPPING_LIST = { + 'name': i18n.t('Shopping_list'), + 'apiName': 'ShoppingListEntry', + } + + static RECIPE_BOOK = { + 'name': i18n.t('Recipe_Book'), + 'apiName': 'RecipeBook', + 'create': { + 'params': [['name', 'description', 'icon']], + 'form': { + 'name': { + 'form_field': true, + 'type': 'text', + 'field': 'name', + 'label': i18n.t('Name'), + 'placeholder': '' + }, + 'description': { + 'form_field': true, + 'type': 'text', + 'field': 'description', + 'label': i18n.t('Description'), + 'placeholder': '' + }, + 'icon': { + 'form_field': true, + 'type': 'emoji', + 'field': 'icon', + 'label': i18n.t('Icon') + }, + } + }, + } + + static SHOPPING_CATEGORY = { + 'name': i18n.t('Shopping_Category'), + 'apiName': 'SupermarketCategory', + 'create': { + 'params': [['name', 'description']], + 'form': { + 'name': { + 'form_field': true, + 'type': 'text', + 'field': 'name', + 'label': i18n.t('Name'), + 'placeholder': '' + }, + 'description': { + 'form_field': true, + 'type': 'text', + 'field': 'description', + 'label': i18n.t('Description'), + 'placeholder': '' + } + } + }, + } + + static SHOPPING_CATEGORY_RELATION = { + 'name': i18n.t('Shopping_Category_Relation'), + 'apiName': 'SupermarketCategoryRelation', + 'create': { + 'params': [['category', 'supermarket', 'order']], + 'form': { + 'name': { + 'form_field': true, + 'type': 'text', + 'field': 'name', + 'label': i18n.t('Name'), + 'placeholder': '' + }, + 'description': { + 'form_field': true, + 'type': 'text', + 'field': 'description', + 'label': i18n.t('Description'), + 'placeholder': '' + } + } + }, + } + + static SUPERMARKET = { + 'name': i18n.t('Supermarket'), + 'apiName': 'Supermarket', + 'ordered_tags': [{'field': 'category_to_supermarket', 'label': 'category::name', 'color': 'info'}], + 'create': { + 'params': [['name', 'description', 'category_to_supermarket']], + 'form': { + 'name': { + 'form_field': true, + 'type': 'text', + 'field': 'name', + 'label': i18n.t('Name'), + 'placeholder': '' + }, + 'description': { + 'form_field': true, + 'type': 'text', + 'field': 'description', + 'label': i18n.t('Description'), + 'placeholder': '' + }, + 'categories': { + 'form_field': true, + 'type': 'lookup', + 'list': 'SHOPPING_CATEGORY', + 'list_label': 'category::name', + 'ordered': true, // ordered lookups assume working with relation field + 'field': 'category_to_supermarket', + 'label': i18n.t('Categories'), + 'placeholder': '' + }, + }, + 'config': { + 'function': 'SupermarketWithCategories', + } + }, + 'partialUpdate': { + 'config': { + 'function': 'SupermarketWithCategories', + } + } + } + + static AUTOMATION = { + 'name': i18n.t('Automation'), + 'apiName': 'Automation', + 'paginated': true, + 'list': { + 'header_component': { + 'name': 'BetaWarning' + }, + }, + 'create': { + 'params': [['name', 'description', 'type', 'param_1', 'param_2', 'param_3']], + 'form': { + 'name': { + 'form_field': true, + 'type': 'text', + 'field': 'name', + 'label': i18n.t('Name'), + 'placeholder': '' + }, + 'description': { + 'form_field': true, + 'type': 'text', + 'field': 'description', + 'label': i18n.t('Description'), + 'placeholder': '' + }, + 'type': { + 'form_field': true, + 'type': 'choice', + 'options': [ + {value: 'FOOD_ALIAS', text: i18n.t('Food_Alias')}, + {value: 'UNIT_ALIAS', text: i18n.t('Unit_Alias')}, + {value: 'KEYWORD_ALIAS', text: i18n.t('Keyword_Alias')}, + ], + 'field': 'type', + 'label': i18n.t('Type'), + 'placeholder': '' + }, + 'param_1': { + 'form_field': true, + 'type': 'text', + 'field': 'param_1', + 'label': i18n.t('Parameter') + ' 1', + 'placeholder': '' + }, + 'param_2': { + 'form_field': true, + 'type': 'text', + 'field': 'param_2', + 'label': i18n.t('Parameter') + ' 2', + 'placeholder': '' + }, + 'param_3': { + 'form_field': true, + 'type': 'text', + 'field': 'param_3', + 'label': i18n.t('Parameter') + ' 3', + 'placeholder': '' + }, + } + }, + } + + static RECIPE = { + 'name': i18n.t('Recipe'), + 'apiName': 'Recipe', + 'list': { + 'params': ['query', 'keywords', 'foods', 'units', 'rating', 'books', 'keywordsOr', 'foodsOr', 'booksOr', 'internal', 'random', '_new', 'page', 'pageSize', 'options'], + 'config': { + 'foods': {'type': 'string'}, + 'keywords': {'type': 'string'}, + 'books': {'type': 'string'}, + } + }, + + } + + static USER_NAME = { + 'name': i18n.t('User'), + 'apiName': 'User', + 'list': { + 'params': ['filter_list'], + }, + + } + + static MEAL_TYPE = { + 'name': i18n.t('Meal_Type'), + 'apiName': 'MealType', + 'list': { + 'params': ['filter_list'], + }, + + } + + static MEAL_PLAN = { + 'name': i18n.t('Meal_Plan'), + 'apiName': 'MealPlan', + 'list': { + 'params': ['options'], + }, + + } + + static USERFILE = { + 'name': i18n.t('File'), + 'apiName': 'UserFile', + 'paginated': false, + 'list': { + 'header_component': { + 'name': 'StorageQuota' + }, + }, + 'create': { + 'params': ['name', 'file',], + 'form': { + 'name': { + 'form_field': true, + 'type': 'text', + 'field': 'name', + 'label': i18n.t('Name'), + 'placeholder': '' + }, + 'file': { + 'form_field': true, + 'type': 'file', + 'field': 'file', + 'label': i18n.t('File'), + 'placeholder': '' + }, + } + }, + } +} + + +export class Actions { + static CREATE = { + "function": "create", + 'form': { + 'title': { + 'function': 'translate', + 'phrase': 'create_title', + 'params': [ + { + 'token': 'type', + 'from': 'model', + 'attribute': 'name' + } + ], + }, + 'ok_label': i18n.t('Save'), + } + } + static UPDATE = { + "function": "partialUpdate", + // special case for update only - updated assumes create form is sufficient, but a different title is required. + "form_title": { + 'function': 'translate', + 'phrase': 'edit_title', + 'params': [ + { + 'token': 'type', + 'from': 'model', + 'attribute': 'name' + } + ], + }, + } + static DELETE = { + "function": "destroy", + 'params': ['id'], + 'form': { + 'title': { + 'function': 'translate', + 'phrase': 'delete_title', + 'params': [ + { + 'token': 'type', + 'from': 'model', + 'attribute': 'name' + } + ], + }, + 'ok_label': i18n.t('Delete'), + 'instruction': { + 'form_field': true, + 'type': 'instruction', + 'label': { + 'function': 'translate', + 'phrase': "delete_confirmation", + 'params': [ + { + 'token': 'source', + 'from': 'item1', + 'attribute': "name" + } + ] + } + } + } + } + static FETCH = { + "function": "retrieve", + 'params': ['id'] + } + static LIST = { + "function": "list", + "suffix": "s", + "params": ['query', 'page', 'pageSize', 'options'], + "config": { + 'query': {'default': undefined}, + 'page': {'default': 1}, + 'pageSize': {'default': 25} + } + } + static MERGE = { + "function": "merge", + 'params': ['source', 'target'], + "config": { + 'source': {'type': 'string'}, + 'target': {'type': 'string'} + }, + 'form': { + 'title': { + 'function': 'translate', + 'phrase': 'merge_title', + 'params': [ + { + 'token': 'type', + 'from': 'model', + 'attribute': 'name' + } + ], + }, + 'ok_label': i18n.t('Merge'), + 'instruction': { + 'form_field': true, + 'type': 'instruction', + 'label': { + 'function': 'translate', + 'phrase': "merge_selection", + 'params': [ + { + 'token': 'source', + 'from': 'item1', + 'attribute': "name" + }, + { + 'token': 'type', + 'from': 'model', + 'attribute': "name" + }, + ] + } + }, + 'target': { + 'form_field': true, + 'type': 'lookup', + 'field': 'target', + 'list': 'self' + } + } + } + static MOVE = { + "function": "move", + 'params': ['source', 'target'], + "config": { + 'source': {'type': 'string'}, + 'target': {'type': 'string'} + }, + 'form': { + 'title': { + 'function': 'translate', + 'phrase': 'move_title', + 'params': [ + { + 'token': 'type', + 'from': 'model', + 'attribute': 'name' + } + ], + }, + 'ok_label': i18n.t('Move'), + 'instruction': { + 'form_field': true, + 'type': 'instruction', + 'label': { + 'function': 'translate', + 'phrase': "move_selection", + 'params': [ + { + 'token': 'source', + 'from': 'item1', + 'attribute': "name" + }, + { + 'token': 'type', + 'from': 'model', + 'attribute': "name" + }, + ] + } + + }, + 'target': { + 'form_field': true, + 'type': 'lookup', + 'field': 'target', + 'list': 'self' + } + } + + } +} diff --git a/vue/src/utils/openapi/api.ts b/vue/src/utils/openapi/api.ts index 8ed890f9..e339eafa 100644 --- a/vue/src/utils/openapi/api.ts +++ b/vue/src/utils/openapi/api.ts @@ -21,6 +21,78 @@ import { DUMMY_BASE_URL, assertParamExists, setApiKeyToObject, setBasicAuthToObj // @ts-ignore import { BASE_PATH, COLLECTION_FORMATS, RequestArgs, BaseAPI, RequiredError } from './base'; +/** + * + * @export + * @interface Automation + */ +export interface Automation { + /** + * + * @type {number} + * @memberof Automation + */ + id?: number; + /** + * + * @type {string} + * @memberof Automation + */ + type: AutomationTypeEnum; + /** + * + * @type {string} + * @memberof Automation + */ + name?: string; + /** + * + * @type {string} + * @memberof Automation + */ + description?: string | null; + /** + * + * @type {string} + * @memberof Automation + */ + param_1?: string | null; + /** + * + * @type {string} + * @memberof Automation + */ + param_2?: string | null; + /** + * + * @type {string} + * @memberof Automation + */ + param_3?: string | null; + /** + * + * @type {boolean} + * @memberof Automation + */ + disabled?: boolean; + /** + * + * @type {string} + * @memberof Automation + */ + created_by?: string; +} + +/** + * @export + * @enum {string} + */ +export enum AutomationTypeEnum { + FoodAlias = 'FOOD_ALIAS', + UnitAlias = 'UNIT_ALIAS', + KeywordAlias = 'KEYWORD_ALIAS' +} + /** * * @export @@ -121,10 +193,16 @@ export interface Food { name: string; /** * - * @type {number} + * @type {string} * @memberof Food */ - recipe?: number | null; + description?: string; + /** + * + * @type {FoodRecipe} + * @memberof Food + */ + recipe?: FoodRecipe | null; /** * * @type {boolean} @@ -137,6 +215,55 @@ export interface Food { * @memberof Food */ supermarket_category?: FoodSupermarketCategory | null; + /** + * + * @type {string} + * @memberof Food + */ + image?: string; + /** + * + * @type {string} + * @memberof Food + */ + parent?: string; + /** + * + * @type {number} + * @memberof Food + */ + numchild?: number; + /** + * + * @type {string} + * @memberof Food + */ + numrecipe?: string; +} +/** + * + * @export + * @interface FoodRecipe + */ +export interface FoodRecipe { + /** + * + * @type {number} + * @memberof FoodRecipe + */ + id?: number; + /** + * + * @type {string} + * @memberof FoodRecipe + */ + name?: string; + /** + * + * @type {string} + * @memberof FoodRecipe + */ + url?: string; } /** * @@ -156,6 +283,12 @@ export interface FoodSupermarketCategory { * @memberof FoodSupermarketCategory */ name: string; + /** + * + * @type {string} + * @memberof FoodSupermarketCategory + */ + description?: string | null; } /** * @@ -254,6 +387,30 @@ export interface ImportLogKeyword { * @memberof ImportLogKeyword */ description?: string; + /** + * + * @type {string} + * @memberof ImportLogKeyword + */ + image?: string; + /** + * + * @type {string} + * @memberof ImportLogKeyword + */ + parent?: string; + /** + * + * @type {number} + * @memberof ImportLogKeyword + */ + numchild?: number; + /** + * + * @type {string} + * @memberof ImportLogKeyword + */ + numrecipe?: string; /** * * @type {string} @@ -348,11 +505,259 @@ export interface InlineResponse200 { previous?: string | null; /** * - * @type {Array} + * @type {Array} * @memberof InlineResponse200 */ + results?: Array; +} +/** + * + * @export + * @interface InlineResponse2001 + */ +export interface InlineResponse2001 { + /** + * + * @type {number} + * @memberof InlineResponse2001 + */ + count?: number; + /** + * + * @type {string} + * @memberof InlineResponse2001 + */ + next?: string | null; + /** + * + * @type {string} + * @memberof InlineResponse2001 + */ + previous?: string | null; + /** + * + * @type {Array} + * @memberof InlineResponse2001 + */ + results?: Array; +} +/** + * + * @export + * @interface InlineResponse2002 + */ +export interface InlineResponse2002 { + /** + * + * @type {number} + * @memberof InlineResponse2002 + */ + count?: number; + /** + * + * @type {string} + * @memberof InlineResponse2002 + */ + next?: string | null; + /** + * + * @type {string} + * @memberof InlineResponse2002 + */ + previous?: string | null; + /** + * + * @type {Array} + * @memberof InlineResponse2002 + */ + results?: Array; +} +/** + * + * @export + * @interface InlineResponse2003 + */ +export interface InlineResponse2003 { + /** + * + * @type {number} + * @memberof InlineResponse2003 + */ + count?: number; + /** + * + * @type {string} + * @memberof InlineResponse2003 + */ + next?: string | null; + /** + * + * @type {string} + * @memberof InlineResponse2003 + */ + previous?: string | null; + /** + * + * @type {Array} + * @memberof InlineResponse2003 + */ + results?: Array; +} +/** + * + * @export + * @interface InlineResponse2004 + */ +export interface InlineResponse2004 { + /** + * + * @type {number} + * @memberof InlineResponse2004 + */ + count?: number; + /** + * + * @type {string} + * @memberof InlineResponse2004 + */ + next?: string | null; + /** + * + * @type {string} + * @memberof InlineResponse2004 + */ + previous?: string | null; + /** + * + * @type {Array} + * @memberof InlineResponse2004 + */ results?: Array; } +/** + * + * @export + * @interface InlineResponse2005 + */ +export interface InlineResponse2005 { + /** + * + * @type {number} + * @memberof InlineResponse2005 + */ + count?: number; + /** + * + * @type {string} + * @memberof InlineResponse2005 + */ + next?: string | null; + /** + * + * @type {string} + * @memberof InlineResponse2005 + */ + previous?: string | null; + /** + * + * @type {Array} + * @memberof InlineResponse2005 + */ + results?: Array; +} +/** + * + * @export + * @interface InlineResponse2006 + */ +export interface InlineResponse2006 { + /** + * + * @type {number} + * @memberof InlineResponse2006 + */ + count?: number; + /** + * + * @type {string} + * @memberof InlineResponse2006 + */ + next?: string | null; + /** + * + * @type {string} + * @memberof InlineResponse2006 + */ + previous?: string | null; + /** + * + * @type {Array} + * @memberof InlineResponse2006 + */ + results?: Array; +} +/** + * + * @export + * @interface InlineResponse2007 + */ +export interface InlineResponse2007 { + /** + * + * @type {number} + * @memberof InlineResponse2007 + */ + count?: number; + /** + * + * @type {string} + * @memberof InlineResponse2007 + */ + next?: string | null; + /** + * + * @type {string} + * @memberof InlineResponse2007 + */ + previous?: string | null; + /** + * + * @type {Array} + * @memberof InlineResponse2007 + */ + results?: Array; +} +/** + * + * @export + * @interface InlineResponse2008 + */ +export interface InlineResponse2008 { + /** + * + * @type {number} + * @memberof InlineResponse2008 + */ + count?: number; + /** + * + * @type {string} + * @memberof InlineResponse2008 + */ + next?: string | null; + /** + * + * @type {string} + * @memberof InlineResponse2008 + */ + previous?: string | null; + /** + * + * @type {Array} + * @memberof InlineResponse2008 + */ + results?: Array; +} /** * * @export @@ -389,6 +794,30 @@ export interface Keyword { * @memberof Keyword */ description?: string; + /** + * + * @type {string} + * @memberof Keyword + */ + image?: string; + /** + * + * @type {string} + * @memberof Keyword + */ + parent?: string; + /** + * + * @type {number} + * @memberof Keyword + */ + numchild?: number; + /** + * + * @type {string} + * @memberof Keyword + */ + numrecipe?: string; /** * * @type {string} @@ -577,6 +1006,12 @@ export interface MealPlanRecipe { * @memberof MealPlanRecipe */ last_cooked?: string; + /** + * + * @type {string} + * @memberof MealPlanRecipe + */ + _new?: string; } /** * @@ -756,10 +1191,10 @@ export interface RecipeBook { icon?: string | null; /** * - * @type {Array} + * @type {Array} * @memberof RecipeBook */ - shared?: Array; + shared: Array; /** * * @type {string} @@ -785,12 +1220,24 @@ export interface RecipeBookEntry { * @memberof RecipeBookEntry */ book: number; + /** + * + * @type {string} + * @memberof RecipeBookEntry + */ + book_content?: string; /** * * @type {number} * @memberof RecipeBookEntry */ recipe: number; + /** + * + * @type {string} + * @memberof RecipeBookEntry + */ + recipe_content?: string; } /** * @@ -841,6 +1288,30 @@ export interface RecipeKeywords { * @memberof RecipeKeywords */ description?: string; + /** + * + * @type {string} + * @memberof RecipeKeywords + */ + image?: string; + /** + * + * @type {string} + * @memberof RecipeKeywords + */ + parent?: string; + /** + * + * @type {number} + * @memberof RecipeKeywords + */ + numchild?: number; + /** + * + * @type {string} + * @memberof RecipeKeywords + */ + numrecipe?: string; /** * * @type {string} @@ -993,6 +1464,12 @@ export interface RecipeOverview { * @memberof RecipeOverview */ last_cooked?: string; + /** + * + * @type {string} + * @memberof RecipeOverview + */ + _new?: string; } /** * @@ -1374,6 +1851,12 @@ export interface ShoppingListSupermarket { * @memberof ShoppingListSupermarket */ name: string; + /** + * + * @type {string} + * @memberof ShoppingListSupermarket + */ + description?: string | null; /** * * @type {Array} @@ -1399,6 +1882,12 @@ export interface ShoppingListSupermarketCategory { * @memberof ShoppingListSupermarketCategory */ name: string; + /** + * + * @type {string} + * @memberof ShoppingListSupermarketCategory + */ + description?: string | null; } /** * @@ -1573,10 +2062,16 @@ export interface StepFood { name: string; /** * - * @type {number} + * @type {string} * @memberof StepFood */ - recipe?: number | null; + description?: string; + /** + * + * @type {FoodRecipe} + * @memberof StepFood + */ + recipe?: FoodRecipe | null; /** * * @type {boolean} @@ -1589,6 +2084,30 @@ export interface StepFood { * @memberof StepFood */ supermarket_category?: FoodSupermarketCategory | null; + /** + * + * @type {string} + * @memberof StepFood + */ + image?: string; + /** + * + * @type {string} + * @memberof StepFood + */ + parent?: string; + /** + * + * @type {number} + * @memberof StepFood + */ + numchild?: number; + /** + * + * @type {string} + * @memberof StepFood + */ + numrecipe?: string; } /** * @@ -1669,6 +2188,18 @@ export interface StepUnit { * @memberof StepUnit */ description?: string | null; + /** + * + * @type {string} + * @memberof StepUnit + */ + numrecipe?: string; + /** + * + * @type {string} + * @memberof StepUnit + */ + image?: string; } /** * @@ -1748,6 +2279,12 @@ export interface Supermarket { * @memberof Supermarket */ name: string; + /** + * + * @type {string} + * @memberof Supermarket + */ + description?: string | null; /** * * @type {Array} @@ -1773,6 +2310,12 @@ export interface SupermarketCategory { * @memberof SupermarketCategory */ name: string; + /** + * + * @type {string} + * @memberof SupermarketCategory + */ + description?: string | null; } /** * @@ -1915,6 +2458,18 @@ export interface Unit { * @memberof Unit */ description?: string | null; + /** + * + * @type {string} + * @memberof Unit + */ + numrecipe?: string; + /** + * + * @type {string} + * @memberof Unit + */ + image?: string; } /** * @@ -2116,6 +2671,39 @@ export interface ViewLog { */ export const ApiApiAxiosParamCreator = function (configuration?: Configuration) { return { + /** + * + * @param {Automation} [automation] + * @param {*} [options] Override http request option. + * @throws {RequiredError} + */ + createAutomation: async (automation?: Automation, options: any = {}): Promise => { + const localVarPath = `/api/automation/`; + // use dummy base URL string because the URL constructor only accepts absolute URLs. + const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL); + let baseOptions; + if (configuration) { + baseOptions = configuration.baseOptions; + } + + const localVarRequestOptions = { method: 'POST', ...baseOptions, ...options}; + const localVarHeaderParameter = {} as any; + const localVarQueryParameter = {} as any; + + + + localVarHeaderParameter['Content-Type'] = 'application/json'; + + setSearchParams(localVarUrlObj, localVarQueryParameter, options.query); + let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {}; + localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers}; + localVarRequestOptions.data = serializeDataIfNeeded(automation, localVarRequestOptions, configuration) + + return { + url: toPathString(localVarUrlObj), + options: localVarRequestOptions, + }; + }, /** * * @param {BookmarkletImport} [bookmarkletImport] @@ -2930,6 +3518,39 @@ export const ApiApiAxiosParamCreator = function (configuration?: Configuration) options: localVarRequestOptions, }; }, + /** + * + * @param {string} id A unique integer value identifying this automation. + * @param {*} [options] Override http request option. + * @throws {RequiredError} + */ + destroyAutomation: async (id: string, options: any = {}): Promise => { + // verify required parameter 'id' is not null or undefined + assertParamExists('destroyAutomation', 'id', id) + const localVarPath = `/api/automation/{id}/` + .replace(`{${"id"}}`, encodeURIComponent(String(id))); + // use dummy base URL string because the URL constructor only accepts absolute URLs. + const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL); + let baseOptions; + if (configuration) { + baseOptions = configuration.baseOptions; + } + + const localVarRequestOptions = { method: 'DELETE', ...baseOptions, ...options}; + const localVarHeaderParameter = {} as any; + const localVarQueryParameter = {} as any; + + + + setSearchParams(localVarUrlObj, localVarQueryParameter, options.query); + let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {}; + localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers}; + + return { + url: toPathString(localVarUrlObj), + options: localVarRequestOptions, + }; + }, /** * * @param {string} id A unique integer value identifying this bookmarklet import. @@ -3764,6 +4385,35 @@ export const ApiApiAxiosParamCreator = function (configuration?: Configuration) options: localVarRequestOptions, }; }, + /** + * + * @param {*} [options] Override http request option. + * @throws {RequiredError} + */ + listAutomations: async (options: any = {}): Promise => { + const localVarPath = `/api/automation/`; + // use dummy base URL string because the URL constructor only accepts absolute URLs. + const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL); + let baseOptions; + if (configuration) { + baseOptions = configuration.baseOptions; + } + + const localVarRequestOptions = { method: 'GET', ...baseOptions, ...options}; + const localVarHeaderParameter = {} as any; + const localVarQueryParameter = {} as any; + + + + setSearchParams(localVarUrlObj, localVarQueryParameter, options.query); + let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {}; + localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers}; + + return { + url: toPathString(localVarUrlObj), + options: localVarRequestOptions, + }; + }, /** * * @param {*} [options] Override http request option. @@ -3795,10 +4445,12 @@ export const ApiApiAxiosParamCreator = function (configuration?: Configuration) }, /** * + * @param {number} [page] A page number within the paginated result set. + * @param {number} [pageSize] Number of results to return per page. * @param {*} [options] Override http request option. * @throws {RequiredError} */ - listCookLogs: async (options: any = {}): Promise => { + listCookLogs: async (page?: number, pageSize?: number, options: any = {}): Promise => { const localVarPath = `/api/cook-log/`; // use dummy base URL string because the URL constructor only accepts absolute URLs. const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL); @@ -3811,6 +4463,14 @@ export const ApiApiAxiosParamCreator = function (configuration?: Configuration) const localVarHeaderParameter = {} as any; const localVarQueryParameter = {} as any; + if (page !== undefined) { + localVarQueryParameter['page'] = page; + } + + if (pageSize !== undefined) { + localVarQueryParameter['page_size'] = pageSize; + } + setSearchParams(localVarUrlObj, localVarQueryParameter, options.query); @@ -3824,10 +4484,15 @@ export const ApiApiAxiosParamCreator = function (configuration?: Configuration) }, /** * + * @param {string} [query] Query string matched against food name. + * @param {number} [root] Return first level children of food with ID [int]. Integer 0 will return root foods. + * @param {number} [tree] Return all self and children of food with ID [int]. + * @param {number} [page] A page number within the paginated result set. + * @param {number} [pageSize] Number of results to return per page. * @param {*} [options] Override http request option. * @throws {RequiredError} */ - listFoods: async (options: any = {}): Promise => { + listFoods: async (query?: string, root?: number, tree?: number, page?: number, pageSize?: number, options: any = {}): Promise => { const localVarPath = `/api/food/`; // use dummy base URL string because the URL constructor only accepts absolute URLs. const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL); @@ -3840,6 +4505,26 @@ export const ApiApiAxiosParamCreator = function (configuration?: Configuration) const localVarHeaderParameter = {} as any; const localVarQueryParameter = {} as any; + if (query !== undefined) { + localVarQueryParameter['query'] = query; + } + + if (root !== undefined) { + localVarQueryParameter['root'] = root; + } + + if (tree !== undefined) { + localVarQueryParameter['tree'] = tree; + } + + if (page !== undefined) { + localVarQueryParameter['page'] = page; + } + + if (pageSize !== undefined) { + localVarQueryParameter['page_size'] = pageSize; + } + setSearchParams(localVarUrlObj, localVarQueryParameter, options.query); @@ -3853,10 +4538,12 @@ export const ApiApiAxiosParamCreator = function (configuration?: Configuration) }, /** * + * @param {number} [page] A page number within the paginated result set. + * @param {number} [pageSize] Number of results to return per page. * @param {*} [options] Override http request option. * @throws {RequiredError} */ - listImportLogs: async (options: any = {}): Promise => { + listImportLogs: async (page?: number, pageSize?: number, options: any = {}): Promise => { const localVarPath = `/api/import-log/`; // use dummy base URL string because the URL constructor only accepts absolute URLs. const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL); @@ -3869,6 +4556,14 @@ export const ApiApiAxiosParamCreator = function (configuration?: Configuration) const localVarHeaderParameter = {} as any; const localVarQueryParameter = {} as any; + if (page !== undefined) { + localVarQueryParameter['page'] = page; + } + + if (pageSize !== undefined) { + localVarQueryParameter['page_size'] = pageSize; + } + setSearchParams(localVarUrlObj, localVarQueryParameter, options.query); @@ -3910,11 +4605,16 @@ export const ApiApiAxiosParamCreator = function (configuration?: Configuration) }; }, /** - * optional parameters - **query**: search keywords for a string contained in the keyword name (case in-sensitive) - **limit**: limits the amount of returned results + * + * @param {string} [query] Query string matched against keyword name. + * @param {number} [root] Return first level children of keyword with ID [int]. Integer 0 will return root keywords. + * @param {number} [tree] Return all self and children of keyword with ID [int]. + * @param {number} [page] A page number within the paginated result set. + * @param {number} [pageSize] Number of results to return per page. * @param {*} [options] Override http request option. * @throws {RequiredError} */ - listKeywords: async (options: any = {}): Promise => { + listKeywords: async (query?: string, root?: number, tree?: number, page?: number, pageSize?: number, options: any = {}): Promise => { const localVarPath = `/api/keyword/`; // use dummy base URL string because the URL constructor only accepts absolute URLs. const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL); @@ -3927,6 +4627,26 @@ export const ApiApiAxiosParamCreator = function (configuration?: Configuration) const localVarHeaderParameter = {} as any; const localVarQueryParameter = {} as any; + if (query !== undefined) { + localVarQueryParameter['query'] = query; + } + + if (root !== undefined) { + localVarQueryParameter['root'] = root; + } + + if (tree !== undefined) { + localVarQueryParameter['tree'] = tree; + } + + if (page !== undefined) { + localVarQueryParameter['page'] = page; + } + + if (pageSize !== undefined) { + localVarQueryParameter['page_size'] = pageSize; + } + setSearchParams(localVarUrlObj, localVarQueryParameter, options.query); @@ -3997,7 +4717,7 @@ export const ApiApiAxiosParamCreator = function (configuration?: Configuration) }; }, /** - * + * optional parameters - **recipe**: id of recipe - only return books for that recipe - **book**: id of book - only return recipes in that book * @param {*} [options] Override http request option. * @throws {RequiredError} */ @@ -4059,6 +4779,8 @@ export const ApiApiAxiosParamCreator = function (configuration?: Configuration) * @param {string} [query] Query string matched (fuzzy) against recipe name. In the future also fulltext search. * @param {string} [keywords] Id of keyword a recipe should have. For multiple repeat parameter. * @param {string} [foods] Id of food a recipe should have. For multiple repeat parameter. + * @param {number} [units] Id of unit a recipe should have. + * @param {number} [rating] Id of unit a recipe should have. * @param {string} [books] Id of book a recipe should have. For multiple repeat parameter. * @param {string} [keywordsOr] If recipe should have all (AND) or any (OR) of the provided keywords. * @param {string} [foodsOr] If recipe should have all (AND) or any (OR) any of the provided foods. @@ -4071,7 +4793,7 @@ export const ApiApiAxiosParamCreator = function (configuration?: Configuration) * @param {*} [options] Override http request option. * @throws {RequiredError} */ - listRecipes: async (query?: string, keywords?: string, foods?: string, books?: string, keywordsOr?: string, foodsOr?: string, booksOr?: string, internal?: string, random?: string, _new?: string, page?: number, pageSize?: number, options: any = {}): Promise => { + listRecipes: async (query?: string, keywords?: string, foods?: string, units?: number, rating?: number, books?: string, keywordsOr?: string, foodsOr?: string, booksOr?: string, internal?: string, random?: string, _new?: string, page?: number, pageSize?: number, options: any = {}): Promise => { const localVarPath = `/api/recipe/`; // use dummy base URL string because the URL constructor only accepts absolute URLs. const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL); @@ -4096,6 +4818,14 @@ export const ApiApiAxiosParamCreator = function (configuration?: Configuration) localVarQueryParameter['foods'] = foods; } + if (units !== undefined) { + localVarQueryParameter['units'] = units; + } + + if (rating !== undefined) { + localVarQueryParameter['rating'] = rating; + } + if (books !== undefined) { localVarQueryParameter['books'] = books; } @@ -4290,10 +5020,12 @@ export const ApiApiAxiosParamCreator = function (configuration?: Configuration) }, /** * + * @param {number} [page] A page number within the paginated result set. + * @param {number} [pageSize] Number of results to return per page. * @param {*} [options] Override http request option. * @throws {RequiredError} */ - listSupermarketCategoryRelations: async (options: any = {}): Promise => { + listSupermarketCategoryRelations: async (page?: number, pageSize?: number, options: any = {}): Promise => { const localVarPath = `/api/supermarket-category-relation/`; // use dummy base URL string because the URL constructor only accepts absolute URLs. const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL); @@ -4306,6 +5038,14 @@ export const ApiApiAxiosParamCreator = function (configuration?: Configuration) const localVarHeaderParameter = {} as any; const localVarQueryParameter = {} as any; + if (page !== undefined) { + localVarQueryParameter['page'] = page; + } + + if (pageSize !== undefined) { + localVarQueryParameter['page_size'] = pageSize; + } + setSearchParams(localVarUrlObj, localVarQueryParameter, options.query); @@ -4377,10 +5117,12 @@ export const ApiApiAxiosParamCreator = function (configuration?: Configuration) }, /** * + * @param {number} [page] A page number within the paginated result set. + * @param {number} [pageSize] Number of results to return per page. * @param {*} [options] Override http request option. * @throws {RequiredError} */ - listSyncLogs: async (options: any = {}): Promise => { + listSyncLogs: async (page?: number, pageSize?: number, options: any = {}): Promise => { const localVarPath = `/api/sync-log/`; // use dummy base URL string because the URL constructor only accepts absolute URLs. const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL); @@ -4393,6 +5135,14 @@ export const ApiApiAxiosParamCreator = function (configuration?: Configuration) const localVarHeaderParameter = {} as any; const localVarQueryParameter = {} as any; + if (page !== undefined) { + localVarQueryParameter['page'] = page; + } + + if (pageSize !== undefined) { + localVarQueryParameter['page_size'] = pageSize; + } + setSearchParams(localVarUrlObj, localVarQueryParameter, options.query); @@ -4435,10 +5185,13 @@ export const ApiApiAxiosParamCreator = function (configuration?: Configuration) }, /** * + * @param {string} [query] Query string matched against unit name. + * @param {number} [page] A page number within the paginated result set. + * @param {number} [pageSize] Number of results to return per page. * @param {*} [options] Override http request option. * @throws {RequiredError} */ - listUnits: async (options: any = {}): Promise => { + listUnits: async (query?: string, page?: number, pageSize?: number, options: any = {}): Promise => { const localVarPath = `/api/unit/`; // use dummy base URL string because the URL constructor only accepts absolute URLs. const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL); @@ -4451,6 +5204,18 @@ export const ApiApiAxiosParamCreator = function (configuration?: Configuration) const localVarHeaderParameter = {} as any; const localVarQueryParameter = {} as any; + if (query !== undefined) { + localVarQueryParameter['query'] = query; + } + + if (page !== undefined) { + localVarQueryParameter['page'] = page; + } + + if (pageSize !== undefined) { + localVarQueryParameter['page_size'] = pageSize; + } + setSearchParams(localVarUrlObj, localVarQueryParameter, options.query); @@ -4551,10 +5316,12 @@ export const ApiApiAxiosParamCreator = function (configuration?: Configuration) }, /** * + * @param {number} [page] A page number within the paginated result set. + * @param {number} [pageSize] Number of results to return per page. * @param {*} [options] Override http request option. * @throws {RequiredError} */ - listViewLogs: async (options: any = {}): Promise => { + listViewLogs: async (page?: number, pageSize?: number, options: any = {}): Promise => { const localVarPath = `/api/view-log/`; // use dummy base URL string because the URL constructor only accepts absolute URLs. const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL); @@ -4567,6 +5334,14 @@ export const ApiApiAxiosParamCreator = function (configuration?: Configuration) const localVarHeaderParameter = {} as any; const localVarQueryParameter = {} as any; + if (page !== undefined) { + localVarQueryParameter['page'] = page; + } + + if (pageSize !== undefined) { + localVarQueryParameter['page_size'] = pageSize; + } + setSearchParams(localVarUrlObj, localVarQueryParameter, options.query); @@ -4578,6 +5353,248 @@ export const ApiApiAxiosParamCreator = function (configuration?: Configuration) options: localVarRequestOptions, }; }, + /** + * + * @param {string} id A unique integer value identifying this food. + * @param {string} target + * @param {Food} [food] + * @param {*} [options] Override http request option. + * @throws {RequiredError} + */ + mergeFood: async (id: string, target: string, food?: Food, options: any = {}): Promise => { + // verify required parameter 'id' is not null or undefined + assertParamExists('mergeFood', 'id', id) + // verify required parameter 'target' is not null or undefined + assertParamExists('mergeFood', 'target', target) + const localVarPath = `/api/food/{id}/merge/{target}/` + .replace(`{${"id"}}`, encodeURIComponent(String(id))) + .replace(`{${"target"}}`, encodeURIComponent(String(target))); + // use dummy base URL string because the URL constructor only accepts absolute URLs. + const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL); + let baseOptions; + if (configuration) { + baseOptions = configuration.baseOptions; + } + + const localVarRequestOptions = { method: 'PUT', ...baseOptions, ...options}; + const localVarHeaderParameter = {} as any; + const localVarQueryParameter = {} as any; + + + + localVarHeaderParameter['Content-Type'] = 'application/json'; + + setSearchParams(localVarUrlObj, localVarQueryParameter, options.query); + let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {}; + localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers}; + localVarRequestOptions.data = serializeDataIfNeeded(food, localVarRequestOptions, configuration) + + return { + url: toPathString(localVarUrlObj), + options: localVarRequestOptions, + }; + }, + /** + * + * @param {string} id A unique integer value identifying this keyword. + * @param {string} target + * @param {Keyword} [keyword] + * @param {*} [options] Override http request option. + * @throws {RequiredError} + */ + mergeKeyword: async (id: string, target: string, keyword?: Keyword, options: any = {}): Promise => { + // verify required parameter 'id' is not null or undefined + assertParamExists('mergeKeyword', 'id', id) + // verify required parameter 'target' is not null or undefined + assertParamExists('mergeKeyword', 'target', target) + const localVarPath = `/api/keyword/{id}/merge/{target}/` + .replace(`{${"id"}}`, encodeURIComponent(String(id))) + .replace(`{${"target"}}`, encodeURIComponent(String(target))); + // use dummy base URL string because the URL constructor only accepts absolute URLs. + const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL); + let baseOptions; + if (configuration) { + baseOptions = configuration.baseOptions; + } + + const localVarRequestOptions = { method: 'PUT', ...baseOptions, ...options}; + const localVarHeaderParameter = {} as any; + const localVarQueryParameter = {} as any; + + + + localVarHeaderParameter['Content-Type'] = 'application/json'; + + setSearchParams(localVarUrlObj, localVarQueryParameter, options.query); + let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {}; + localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers}; + localVarRequestOptions.data = serializeDataIfNeeded(keyword, localVarRequestOptions, configuration) + + return { + url: toPathString(localVarUrlObj), + options: localVarRequestOptions, + }; + }, + /** + * + * @param {string} id A unique integer value identifying this unit. + * @param {string} target + * @param {Unit} [unit] + * @param {*} [options] Override http request option. + * @throws {RequiredError} + */ + mergeUnit: async (id: string, target: string, unit?: Unit, options: any = {}): Promise => { + // verify required parameter 'id' is not null or undefined + assertParamExists('mergeUnit', 'id', id) + // verify required parameter 'target' is not null or undefined + assertParamExists('mergeUnit', 'target', target) + const localVarPath = `/api/unit/{id}/merge/{target}/` + .replace(`{${"id"}}`, encodeURIComponent(String(id))) + .replace(`{${"target"}}`, encodeURIComponent(String(target))); + // use dummy base URL string because the URL constructor only accepts absolute URLs. + const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL); + let baseOptions; + if (configuration) { + baseOptions = configuration.baseOptions; + } + + const localVarRequestOptions = { method: 'PUT', ...baseOptions, ...options}; + const localVarHeaderParameter = {} as any; + const localVarQueryParameter = {} as any; + + + + localVarHeaderParameter['Content-Type'] = 'application/json'; + + setSearchParams(localVarUrlObj, localVarQueryParameter, options.query); + let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {}; + localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers}; + localVarRequestOptions.data = serializeDataIfNeeded(unit, localVarRequestOptions, configuration) + + return { + url: toPathString(localVarUrlObj), + options: localVarRequestOptions, + }; + }, + /** + * + * @param {string} id A unique integer value identifying this food. + * @param {string} parent + * @param {Food} [food] + * @param {*} [options] Override http request option. + * @throws {RequiredError} + */ + moveFood: async (id: string, parent: string, food?: Food, options: any = {}): Promise => { + // verify required parameter 'id' is not null or undefined + assertParamExists('moveFood', 'id', id) + // verify required parameter 'parent' is not null or undefined + assertParamExists('moveFood', 'parent', parent) + const localVarPath = `/api/food/{id}/move/{parent}/` + .replace(`{${"id"}}`, encodeURIComponent(String(id))) + .replace(`{${"parent"}}`, encodeURIComponent(String(parent))); + // use dummy base URL string because the URL constructor only accepts absolute URLs. + const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL); + let baseOptions; + if (configuration) { + baseOptions = configuration.baseOptions; + } + + const localVarRequestOptions = { method: 'PUT', ...baseOptions, ...options}; + const localVarHeaderParameter = {} as any; + const localVarQueryParameter = {} as any; + + + + localVarHeaderParameter['Content-Type'] = 'application/json'; + + setSearchParams(localVarUrlObj, localVarQueryParameter, options.query); + let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {}; + localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers}; + localVarRequestOptions.data = serializeDataIfNeeded(food, localVarRequestOptions, configuration) + + return { + url: toPathString(localVarUrlObj), + options: localVarRequestOptions, + }; + }, + /** + * + * @param {string} id A unique integer value identifying this keyword. + * @param {string} parent + * @param {Keyword} [keyword] + * @param {*} [options] Override http request option. + * @throws {RequiredError} + */ + moveKeyword: async (id: string, parent: string, keyword?: Keyword, options: any = {}): Promise => { + // verify required parameter 'id' is not null or undefined + assertParamExists('moveKeyword', 'id', id) + // verify required parameter 'parent' is not null or undefined + assertParamExists('moveKeyword', 'parent', parent) + const localVarPath = `/api/keyword/{id}/move/{parent}/` + .replace(`{${"id"}}`, encodeURIComponent(String(id))) + .replace(`{${"parent"}}`, encodeURIComponent(String(parent))); + // use dummy base URL string because the URL constructor only accepts absolute URLs. + const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL); + let baseOptions; + if (configuration) { + baseOptions = configuration.baseOptions; + } + + const localVarRequestOptions = { method: 'PUT', ...baseOptions, ...options}; + const localVarHeaderParameter = {} as any; + const localVarQueryParameter = {} as any; + + + + localVarHeaderParameter['Content-Type'] = 'application/json'; + + setSearchParams(localVarUrlObj, localVarQueryParameter, options.query); + let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {}; + localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers}; + localVarRequestOptions.data = serializeDataIfNeeded(keyword, localVarRequestOptions, configuration) + + return { + url: toPathString(localVarUrlObj), + options: localVarRequestOptions, + }; + }, + /** + * + * @param {string} id A unique integer value identifying this automation. + * @param {Automation} [automation] + * @param {*} [options] Override http request option. + * @throws {RequiredError} + */ + partialUpdateAutomation: async (id: string, automation?: Automation, options: any = {}): Promise => { + // verify required parameter 'id' is not null or undefined + assertParamExists('partialUpdateAutomation', 'id', id) + const localVarPath = `/api/automation/{id}/` + .replace(`{${"id"}}`, encodeURIComponent(String(id))); + // use dummy base URL string because the URL constructor only accepts absolute URLs. + const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL); + let baseOptions; + if (configuration) { + baseOptions = configuration.baseOptions; + } + + const localVarRequestOptions = { method: 'PATCH', ...baseOptions, ...options}; + const localVarHeaderParameter = {} as any; + const localVarQueryParameter = {} as any; + + + + localVarHeaderParameter['Content-Type'] = 'application/json'; + + setSearchParams(localVarUrlObj, localVarQueryParameter, options.query); + let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {}; + localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers}; + localVarRequestOptions.data = serializeDataIfNeeded(automation, localVarRequestOptions, configuration) + + return { + url: toPathString(localVarUrlObj), + options: localVarRequestOptions, + }; + }, /** * * @param {string} id A unique integer value identifying this bookmarklet import. @@ -5488,6 +6505,39 @@ export const ApiApiAxiosParamCreator = function (configuration?: Configuration) options: localVarRequestOptions, }; }, + /** + * + * @param {string} id A unique integer value identifying this automation. + * @param {*} [options] Override http request option. + * @throws {RequiredError} + */ + retrieveAutomation: async (id: string, options: any = {}): Promise => { + // verify required parameter 'id' is not null or undefined + assertParamExists('retrieveAutomation', 'id', id) + const localVarPath = `/api/automation/{id}/` + .replace(`{${"id"}}`, encodeURIComponent(String(id))); + // use dummy base URL string because the URL constructor only accepts absolute URLs. + const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL); + let baseOptions; + if (configuration) { + baseOptions = configuration.baseOptions; + } + + const localVarRequestOptions = { method: 'GET', ...baseOptions, ...options}; + const localVarHeaderParameter = {} as any; + const localVarQueryParameter = {} as any; + + + + setSearchParams(localVarUrlObj, localVarQueryParameter, options.query); + let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {}; + localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers}; + + return { + url: toPathString(localVarUrlObj), + options: localVarRequestOptions, + }; + }, /** * * @param {string} id A unique integer value identifying this bookmarklet import. @@ -6346,6 +7396,43 @@ export const ApiApiAxiosParamCreator = function (configuration?: Configuration) options: localVarRequestOptions, }; }, + /** + * + * @param {string} id A unique integer value identifying this automation. + * @param {Automation} [automation] + * @param {*} [options] Override http request option. + * @throws {RequiredError} + */ + updateAutomation: async (id: string, automation?: Automation, options: any = {}): Promise => { + // verify required parameter 'id' is not null or undefined + assertParamExists('updateAutomation', 'id', id) + const localVarPath = `/api/automation/{id}/` + .replace(`{${"id"}}`, encodeURIComponent(String(id))); + // use dummy base URL string because the URL constructor only accepts absolute URLs. + const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL); + let baseOptions; + if (configuration) { + baseOptions = configuration.baseOptions; + } + + const localVarRequestOptions = { method: 'PUT', ...baseOptions, ...options}; + const localVarHeaderParameter = {} as any; + const localVarQueryParameter = {} as any; + + + + localVarHeaderParameter['Content-Type'] = 'application/json'; + + setSearchParams(localVarUrlObj, localVarQueryParameter, options.query); + let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {}; + localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers}; + localVarRequestOptions.data = serializeDataIfNeeded(automation, localVarRequestOptions, configuration) + + return { + url: toPathString(localVarUrlObj), + options: localVarRequestOptions, + }; + }, /** * * @param {string} id A unique integer value identifying this bookmarklet import. @@ -7266,6 +8353,16 @@ export const ApiApiAxiosParamCreator = function (configuration?: Configuration) export const ApiApiFp = function(configuration?: Configuration) { const localVarAxiosParamCreator = ApiApiAxiosParamCreator(configuration) return { + /** + * + * @param {Automation} [automation] + * @param {*} [options] Override http request option. + * @throws {RequiredError} + */ + async createAutomation(automation?: Automation, options?: any): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise> { + const localVarAxiosArgs = await localVarAxiosParamCreator.createAutomation(automation, options); + return createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration); + }, /** * * @param {BookmarkletImport} [bookmarkletImport] @@ -7509,6 +8606,16 @@ export const ApiApiFp = function(configuration?: Configuration) { const localVarAxiosArgs = await localVarAxiosParamCreator.createViewLog(viewLog, options); return createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration); }, + /** + * + * @param {string} id A unique integer value identifying this automation. + * @param {*} [options] Override http request option. + * @throws {RequiredError} + */ + async destroyAutomation(id: string, options?: any): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise> { + const localVarAxiosArgs = await localVarAxiosParamCreator.destroyAutomation(id, options); + return createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration); + }, /** * * @param {string} id A unique integer value identifying this bookmarklet import. @@ -7760,6 +8867,15 @@ export const ApiApiFp = function(configuration?: Configuration) { const localVarAxiosArgs = await localVarAxiosParamCreator.imageRecipe(id, image, options); return createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration); }, + /** + * + * @param {*} [options] Override http request option. + * @throws {RequiredError} + */ + async listAutomations(options?: any): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise>> { + const localVarAxiosArgs = await localVarAxiosParamCreator.listAutomations(options); + return createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration); + }, /** * * @param {*} [options] Override http request option. @@ -7771,29 +8887,38 @@ export const ApiApiFp = function(configuration?: Configuration) { }, /** * + * @param {number} [page] A page number within the paginated result set. + * @param {number} [pageSize] Number of results to return per page. * @param {*} [options] Override http request option. * @throws {RequiredError} */ - async listCookLogs(options?: any): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise>> { - const localVarAxiosArgs = await localVarAxiosParamCreator.listCookLogs(options); + async listCookLogs(page?: number, pageSize?: number, options?: any): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise> { + const localVarAxiosArgs = await localVarAxiosParamCreator.listCookLogs(page, pageSize, options); return createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration); }, /** * + * @param {string} [query] Query string matched against food name. + * @param {number} [root] Return first level children of food with ID [int]. Integer 0 will return root foods. + * @param {number} [tree] Return all self and children of food with ID [int]. + * @param {number} [page] A page number within the paginated result set. + * @param {number} [pageSize] Number of results to return per page. * @param {*} [options] Override http request option. * @throws {RequiredError} */ - async listFoods(options?: any): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise>> { - const localVarAxiosArgs = await localVarAxiosParamCreator.listFoods(options); + async listFoods(query?: string, root?: number, tree?: number, page?: number, pageSize?: number, options?: any): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise> { + const localVarAxiosArgs = await localVarAxiosParamCreator.listFoods(query, root, tree, page, pageSize, options); return createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration); }, /** * + * @param {number} [page] A page number within the paginated result set. + * @param {number} [pageSize] Number of results to return per page. * @param {*} [options] Override http request option. * @throws {RequiredError} */ - async listImportLogs(options?: any): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise>> { - const localVarAxiosArgs = await localVarAxiosParamCreator.listImportLogs(options); + async listImportLogs(page?: number, pageSize?: number, options?: any): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise> { + const localVarAxiosArgs = await localVarAxiosParamCreator.listImportLogs(page, pageSize, options); return createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration); }, /** @@ -7806,12 +8931,17 @@ export const ApiApiFp = function(configuration?: Configuration) { return createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration); }, /** - * optional parameters - **query**: search keywords for a string contained in the keyword name (case in-sensitive) - **limit**: limits the amount of returned results + * + * @param {string} [query] Query string matched against keyword name. + * @param {number} [root] Return first level children of keyword with ID [int]. Integer 0 will return root keywords. + * @param {number} [tree] Return all self and children of keyword with ID [int]. + * @param {number} [page] A page number within the paginated result set. + * @param {number} [pageSize] Number of results to return per page. * @param {*} [options] Override http request option. * @throws {RequiredError} */ - async listKeywords(options?: any): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise>> { - const localVarAxiosArgs = await localVarAxiosParamCreator.listKeywords(options); + async listKeywords(query?: string, root?: number, tree?: number, page?: number, pageSize?: number, options?: any): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise> { + const localVarAxiosArgs = await localVarAxiosParamCreator.listKeywords(query, root, tree, page, pageSize, options); return createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration); }, /** @@ -7833,7 +8963,7 @@ export const ApiApiFp = function(configuration?: Configuration) { return createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration); }, /** - * + * optional parameters - **recipe**: id of recipe - only return books for that recipe - **book**: id of book - only return recipes in that book * @param {*} [options] Override http request option. * @throws {RequiredError} */ @@ -7855,6 +8985,8 @@ export const ApiApiFp = function(configuration?: Configuration) { * @param {string} [query] Query string matched (fuzzy) against recipe name. In the future also fulltext search. * @param {string} [keywords] Id of keyword a recipe should have. For multiple repeat parameter. * @param {string} [foods] Id of food a recipe should have. For multiple repeat parameter. + * @param {number} [units] Id of unit a recipe should have. + * @param {number} [rating] Id of unit a recipe should have. * @param {string} [books] Id of book a recipe should have. For multiple repeat parameter. * @param {string} [keywordsOr] If recipe should have all (AND) or any (OR) of the provided keywords. * @param {string} [foodsOr] If recipe should have all (AND) or any (OR) any of the provided foods. @@ -7867,8 +8999,8 @@ export const ApiApiFp = function(configuration?: Configuration) { * @param {*} [options] Override http request option. * @throws {RequiredError} */ - async listRecipes(query?: string, keywords?: string, foods?: string, books?: string, keywordsOr?: string, foodsOr?: string, booksOr?: string, internal?: string, random?: string, _new?: string, page?: number, pageSize?: number, options?: any): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise> { - const localVarAxiosArgs = await localVarAxiosParamCreator.listRecipes(query, keywords, foods, books, keywordsOr, foodsOr, booksOr, internal, random, _new, page, pageSize, options); + async listRecipes(query?: string, keywords?: string, foods?: string, units?: number, rating?: number, books?: string, keywordsOr?: string, foodsOr?: string, booksOr?: string, internal?: string, random?: string, _new?: string, page?: number, pageSize?: number, options?: any): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise> { + const localVarAxiosArgs = await localVarAxiosParamCreator.listRecipes(query, keywords, foods, units, rating, books, keywordsOr, foodsOr, booksOr, internal, random, _new, page, pageSize, options); return createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration); }, /** @@ -7918,11 +9050,13 @@ export const ApiApiFp = function(configuration?: Configuration) { }, /** * + * @param {number} [page] A page number within the paginated result set. + * @param {number} [pageSize] Number of results to return per page. * @param {*} [options] Override http request option. * @throws {RequiredError} */ - async listSupermarketCategoryRelations(options?: any): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise>> { - const localVarAxiosArgs = await localVarAxiosParamCreator.listSupermarketCategoryRelations(options); + async listSupermarketCategoryRelations(page?: number, pageSize?: number, options?: any): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise> { + const localVarAxiosArgs = await localVarAxiosParamCreator.listSupermarketCategoryRelations(page, pageSize, options); return createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration); }, /** @@ -7945,11 +9079,13 @@ export const ApiApiFp = function(configuration?: Configuration) { }, /** * + * @param {number} [page] A page number within the paginated result set. + * @param {number} [pageSize] Number of results to return per page. * @param {*} [options] Override http request option. * @throws {RequiredError} */ - async listSyncLogs(options?: any): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise>> { - const localVarAxiosArgs = await localVarAxiosParamCreator.listSyncLogs(options); + async listSyncLogs(page?: number, pageSize?: number, options?: any): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise> { + const localVarAxiosArgs = await localVarAxiosParamCreator.listSyncLogs(page, pageSize, options); return createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration); }, /** @@ -7963,11 +9099,14 @@ export const ApiApiFp = function(configuration?: Configuration) { }, /** * + * @param {string} [query] Query string matched against unit name. + * @param {number} [page] A page number within the paginated result set. + * @param {number} [pageSize] Number of results to return per page. * @param {*} [options] Override http request option. * @throws {RequiredError} */ - async listUnits(options?: any): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise>> { - const localVarAxiosArgs = await localVarAxiosParamCreator.listUnits(options); + async listUnits(query?: string, page?: number, pageSize?: number, options?: any): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise> { + const localVarAxiosArgs = await localVarAxiosParamCreator.listUnits(query, page, pageSize, options); return createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration); }, /** @@ -7999,11 +9138,84 @@ export const ApiApiFp = function(configuration?: Configuration) { }, /** * + * @param {number} [page] A page number within the paginated result set. + * @param {number} [pageSize] Number of results to return per page. * @param {*} [options] Override http request option. * @throws {RequiredError} */ - async listViewLogs(options?: any): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise>> { - const localVarAxiosArgs = await localVarAxiosParamCreator.listViewLogs(options); + async listViewLogs(page?: number, pageSize?: number, options?: any): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise> { + const localVarAxiosArgs = await localVarAxiosParamCreator.listViewLogs(page, pageSize, options); + return createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration); + }, + /** + * + * @param {string} id A unique integer value identifying this food. + * @param {string} target + * @param {Food} [food] + * @param {*} [options] Override http request option. + * @throws {RequiredError} + */ + async mergeFood(id: string, target: string, food?: Food, options?: any): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise> { + const localVarAxiosArgs = await localVarAxiosParamCreator.mergeFood(id, target, food, options); + return createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration); + }, + /** + * + * @param {string} id A unique integer value identifying this keyword. + * @param {string} target + * @param {Keyword} [keyword] + * @param {*} [options] Override http request option. + * @throws {RequiredError} + */ + async mergeKeyword(id: string, target: string, keyword?: Keyword, options?: any): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise> { + const localVarAxiosArgs = await localVarAxiosParamCreator.mergeKeyword(id, target, keyword, options); + return createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration); + }, + /** + * + * @param {string} id A unique integer value identifying this unit. + * @param {string} target + * @param {Unit} [unit] + * @param {*} [options] Override http request option. + * @throws {RequiredError} + */ + async mergeUnit(id: string, target: string, unit?: Unit, options?: any): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise> { + const localVarAxiosArgs = await localVarAxiosParamCreator.mergeUnit(id, target, unit, options); + return createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration); + }, + /** + * + * @param {string} id A unique integer value identifying this food. + * @param {string} parent + * @param {Food} [food] + * @param {*} [options] Override http request option. + * @throws {RequiredError} + */ + async moveFood(id: string, parent: string, food?: Food, options?: any): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise> { + const localVarAxiosArgs = await localVarAxiosParamCreator.moveFood(id, parent, food, options); + return createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration); + }, + /** + * + * @param {string} id A unique integer value identifying this keyword. + * @param {string} parent + * @param {Keyword} [keyword] + * @param {*} [options] Override http request option. + * @throws {RequiredError} + */ + async moveKeyword(id: string, parent: string, keyword?: Keyword, options?: any): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise> { + const localVarAxiosArgs = await localVarAxiosParamCreator.moveKeyword(id, parent, keyword, options); + return createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration); + }, + /** + * + * @param {string} id A unique integer value identifying this automation. + * @param {Automation} [automation] + * @param {*} [options] Override http request option. + * @throws {RequiredError} + */ + async partialUpdateAutomation(id: string, automation?: Automation, options?: any): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise> { + const localVarAxiosArgs = await localVarAxiosParamCreator.partialUpdateAutomation(id, automation, options); return createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration); }, /** @@ -8273,6 +9485,16 @@ export const ApiApiFp = function(configuration?: Configuration) { const localVarAxiosArgs = await localVarAxiosParamCreator.partialUpdateViewLog(id, viewLog, options); return createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration); }, + /** + * + * @param {string} id A unique integer value identifying this automation. + * @param {*} [options] Override http request option. + * @throws {RequiredError} + */ + async retrieveAutomation(id: string, options?: any): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise> { + const localVarAxiosArgs = await localVarAxiosParamCreator.retrieveAutomation(id, options); + return createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration); + }, /** * * @param {string} id A unique integer value identifying this bookmarklet import. @@ -8533,6 +9755,17 @@ export const ApiApiFp = function(configuration?: Configuration) { const localVarAxiosArgs = await localVarAxiosParamCreator.retrieveViewLog(id, options); return createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration); }, + /** + * + * @param {string} id A unique integer value identifying this automation. + * @param {Automation} [automation] + * @param {*} [options] Override http request option. + * @throws {RequiredError} + */ + async updateAutomation(id: string, automation?: Automation, options?: any): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise> { + const localVarAxiosArgs = await localVarAxiosParamCreator.updateAutomation(id, automation, options); + return createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration); + }, /** * * @param {string} id A unique integer value identifying this bookmarklet import. @@ -8810,6 +10043,15 @@ export const ApiApiFp = function(configuration?: Configuration) { export const ApiApiFactory = function (configuration?: Configuration, basePath?: string, axios?: AxiosInstance) { const localVarFp = ApiApiFp(configuration) return { + /** + * + * @param {Automation} [automation] + * @param {*} [options] Override http request option. + * @throws {RequiredError} + */ + createAutomation(automation?: Automation, options?: any): AxiosPromise { + return localVarFp.createAutomation(automation, options).then((request) => request(axios, basePath)); + }, /** * * @param {BookmarkletImport} [bookmarkletImport] @@ -9029,6 +10271,15 @@ export const ApiApiFactory = function (configuration?: Configuration, basePath?: createViewLog(viewLog?: ViewLog, options?: any): AxiosPromise { return localVarFp.createViewLog(viewLog, options).then((request) => request(axios, basePath)); }, + /** + * + * @param {string} id A unique integer value identifying this automation. + * @param {*} [options] Override http request option. + * @throws {RequiredError} + */ + destroyAutomation(id: string, options?: any): AxiosPromise { + return localVarFp.destroyAutomation(id, options).then((request) => request(axios, basePath)); + }, /** * * @param {string} id A unique integer value identifying this bookmarklet import. @@ -9255,6 +10506,14 @@ export const ApiApiFactory = function (configuration?: Configuration, basePath?: imageRecipe(id: string, image?: any, options?: any): AxiosPromise { return localVarFp.imageRecipe(id, image, options).then((request) => request(axios, basePath)); }, + /** + * + * @param {*} [options] Override http request option. + * @throws {RequiredError} + */ + listAutomations(options?: any): AxiosPromise> { + return localVarFp.listAutomations(options).then((request) => request(axios, basePath)); + }, /** * * @param {*} [options] Override http request option. @@ -9265,27 +10524,36 @@ export const ApiApiFactory = function (configuration?: Configuration, basePath?: }, /** * + * @param {number} [page] A page number within the paginated result set. + * @param {number} [pageSize] Number of results to return per page. * @param {*} [options] Override http request option. * @throws {RequiredError} */ - listCookLogs(options?: any): AxiosPromise> { - return localVarFp.listCookLogs(options).then((request) => request(axios, basePath)); + listCookLogs(page?: number, pageSize?: number, options?: any): AxiosPromise { + return localVarFp.listCookLogs(page, pageSize, options).then((request) => request(axios, basePath)); }, /** * + * @param {string} [query] Query string matched against food name. + * @param {number} [root] Return first level children of food with ID [int]. Integer 0 will return root foods. + * @param {number} [tree] Return all self and children of food with ID [int]. + * @param {number} [page] A page number within the paginated result set. + * @param {number} [pageSize] Number of results to return per page. * @param {*} [options] Override http request option. * @throws {RequiredError} */ - listFoods(options?: any): AxiosPromise> { - return localVarFp.listFoods(options).then((request) => request(axios, basePath)); + listFoods(query?: string, root?: number, tree?: number, page?: number, pageSize?: number, options?: any): AxiosPromise { + return localVarFp.listFoods(query, root, tree, page, pageSize, options).then((request) => request(axios, basePath)); }, /** * + * @param {number} [page] A page number within the paginated result set. + * @param {number} [pageSize] Number of results to return per page. * @param {*} [options] Override http request option. * @throws {RequiredError} */ - listImportLogs(options?: any): AxiosPromise> { - return localVarFp.listImportLogs(options).then((request) => request(axios, basePath)); + listImportLogs(page?: number, pageSize?: number, options?: any): AxiosPromise { + return localVarFp.listImportLogs(page, pageSize, options).then((request) => request(axios, basePath)); }, /** * @@ -9296,12 +10564,17 @@ export const ApiApiFactory = function (configuration?: Configuration, basePath?: return localVarFp.listIngredients(options).then((request) => request(axios, basePath)); }, /** - * optional parameters - **query**: search keywords for a string contained in the keyword name (case in-sensitive) - **limit**: limits the amount of returned results + * + * @param {string} [query] Query string matched against keyword name. + * @param {number} [root] Return first level children of keyword with ID [int]. Integer 0 will return root keywords. + * @param {number} [tree] Return all self and children of keyword with ID [int]. + * @param {number} [page] A page number within the paginated result set. + * @param {number} [pageSize] Number of results to return per page. * @param {*} [options] Override http request option. * @throws {RequiredError} */ - listKeywords(options?: any): AxiosPromise> { - return localVarFp.listKeywords(options).then((request) => request(axios, basePath)); + listKeywords(query?: string, root?: number, tree?: number, page?: number, pageSize?: number, options?: any): AxiosPromise { + return localVarFp.listKeywords(query, root, tree, page, pageSize, options).then((request) => request(axios, basePath)); }, /** * optional parameters - **from_date**: filter from (inclusive) a certain date onward - **to_date**: filter upward to (inclusive) certain date @@ -9320,7 +10593,7 @@ export const ApiApiFactory = function (configuration?: Configuration, basePath?: return localVarFp.listMealTypes(options).then((request) => request(axios, basePath)); }, /** - * + * optional parameters - **recipe**: id of recipe - only return books for that recipe - **book**: id of book - only return recipes in that book * @param {*} [options] Override http request option. * @throws {RequiredError} */ @@ -9340,6 +10613,8 @@ export const ApiApiFactory = function (configuration?: Configuration, basePath?: * @param {string} [query] Query string matched (fuzzy) against recipe name. In the future also fulltext search. * @param {string} [keywords] Id of keyword a recipe should have. For multiple repeat parameter. * @param {string} [foods] Id of food a recipe should have. For multiple repeat parameter. + * @param {number} [units] Id of unit a recipe should have. + * @param {number} [rating] Id of unit a recipe should have. * @param {string} [books] Id of book a recipe should have. For multiple repeat parameter. * @param {string} [keywordsOr] If recipe should have all (AND) or any (OR) of the provided keywords. * @param {string} [foodsOr] If recipe should have all (AND) or any (OR) any of the provided foods. @@ -9352,8 +10627,8 @@ export const ApiApiFactory = function (configuration?: Configuration, basePath?: * @param {*} [options] Override http request option. * @throws {RequiredError} */ - listRecipes(query?: string, keywords?: string, foods?: string, books?: string, keywordsOr?: string, foodsOr?: string, booksOr?: string, internal?: string, random?: string, _new?: string, page?: number, pageSize?: number, options?: any): AxiosPromise { - return localVarFp.listRecipes(query, keywords, foods, books, keywordsOr, foodsOr, booksOr, internal, random, _new, page, pageSize, options).then((request) => request(axios, basePath)); + listRecipes(query?: string, keywords?: string, foods?: string, units?: number, rating?: number, books?: string, keywordsOr?: string, foodsOr?: string, booksOr?: string, internal?: string, random?: string, _new?: string, page?: number, pageSize?: number, options?: any): AxiosPromise { + return localVarFp.listRecipes(query, keywords, foods, units, rating, books, keywordsOr, foodsOr, booksOr, internal, random, _new, page, pageSize, options).then((request) => request(axios, basePath)); }, /** * @@ -9397,11 +10672,13 @@ export const ApiApiFactory = function (configuration?: Configuration, basePath?: }, /** * + * @param {number} [page] A page number within the paginated result set. + * @param {number} [pageSize] Number of results to return per page. * @param {*} [options] Override http request option. * @throws {RequiredError} */ - listSupermarketCategoryRelations(options?: any): AxiosPromise> { - return localVarFp.listSupermarketCategoryRelations(options).then((request) => request(axios, basePath)); + listSupermarketCategoryRelations(page?: number, pageSize?: number, options?: any): AxiosPromise { + return localVarFp.listSupermarketCategoryRelations(page, pageSize, options).then((request) => request(axios, basePath)); }, /** * @@ -9421,11 +10698,13 @@ export const ApiApiFactory = function (configuration?: Configuration, basePath?: }, /** * + * @param {number} [page] A page number within the paginated result set. + * @param {number} [pageSize] Number of results to return per page. * @param {*} [options] Override http request option. * @throws {RequiredError} */ - listSyncLogs(options?: any): AxiosPromise> { - return localVarFp.listSyncLogs(options).then((request) => request(axios, basePath)); + listSyncLogs(page?: number, pageSize?: number, options?: any): AxiosPromise { + return localVarFp.listSyncLogs(page, pageSize, options).then((request) => request(axios, basePath)); }, /** * @@ -9437,11 +10716,14 @@ export const ApiApiFactory = function (configuration?: Configuration, basePath?: }, /** * + * @param {string} [query] Query string matched against unit name. + * @param {number} [page] A page number within the paginated result set. + * @param {number} [pageSize] Number of results to return per page. * @param {*} [options] Override http request option. * @throws {RequiredError} */ - listUnits(options?: any): AxiosPromise> { - return localVarFp.listUnits(options).then((request) => request(axios, basePath)); + listUnits(query?: string, page?: number, pageSize?: number, options?: any): AxiosPromise { + return localVarFp.listUnits(query, page, pageSize, options).then((request) => request(axios, basePath)); }, /** * @@ -9469,11 +10751,78 @@ export const ApiApiFactory = function (configuration?: Configuration, basePath?: }, /** * + * @param {number} [page] A page number within the paginated result set. + * @param {number} [pageSize] Number of results to return per page. * @param {*} [options] Override http request option. * @throws {RequiredError} */ - listViewLogs(options?: any): AxiosPromise> { - return localVarFp.listViewLogs(options).then((request) => request(axios, basePath)); + listViewLogs(page?: number, pageSize?: number, options?: any): AxiosPromise { + return localVarFp.listViewLogs(page, pageSize, options).then((request) => request(axios, basePath)); + }, + /** + * + * @param {string} id A unique integer value identifying this food. + * @param {string} target + * @param {Food} [food] + * @param {*} [options] Override http request option. + * @throws {RequiredError} + */ + mergeFood(id: string, target: string, food?: Food, options?: any): AxiosPromise { + return localVarFp.mergeFood(id, target, food, options).then((request) => request(axios, basePath)); + }, + /** + * + * @param {string} id A unique integer value identifying this keyword. + * @param {string} target + * @param {Keyword} [keyword] + * @param {*} [options] Override http request option. + * @throws {RequiredError} + */ + mergeKeyword(id: string, target: string, keyword?: Keyword, options?: any): AxiosPromise { + return localVarFp.mergeKeyword(id, target, keyword, options).then((request) => request(axios, basePath)); + }, + /** + * + * @param {string} id A unique integer value identifying this unit. + * @param {string} target + * @param {Unit} [unit] + * @param {*} [options] Override http request option. + * @throws {RequiredError} + */ + mergeUnit(id: string, target: string, unit?: Unit, options?: any): AxiosPromise { + return localVarFp.mergeUnit(id, target, unit, options).then((request) => request(axios, basePath)); + }, + /** + * + * @param {string} id A unique integer value identifying this food. + * @param {string} parent + * @param {Food} [food] + * @param {*} [options] Override http request option. + * @throws {RequiredError} + */ + moveFood(id: string, parent: string, food?: Food, options?: any): AxiosPromise { + return localVarFp.moveFood(id, parent, food, options).then((request) => request(axios, basePath)); + }, + /** + * + * @param {string} id A unique integer value identifying this keyword. + * @param {string} parent + * @param {Keyword} [keyword] + * @param {*} [options] Override http request option. + * @throws {RequiredError} + */ + moveKeyword(id: string, parent: string, keyword?: Keyword, options?: any): AxiosPromise { + return localVarFp.moveKeyword(id, parent, keyword, options).then((request) => request(axios, basePath)); + }, + /** + * + * @param {string} id A unique integer value identifying this automation. + * @param {Automation} [automation] + * @param {*} [options] Override http request option. + * @throws {RequiredError} + */ + partialUpdateAutomation(id: string, automation?: Automation, options?: any): AxiosPromise { + return localVarFp.partialUpdateAutomation(id, automation, options).then((request) => request(axios, basePath)); }, /** * @@ -9718,6 +11067,15 @@ export const ApiApiFactory = function (configuration?: Configuration, basePath?: partialUpdateViewLog(id: string, viewLog?: ViewLog, options?: any): AxiosPromise { return localVarFp.partialUpdateViewLog(id, viewLog, options).then((request) => request(axios, basePath)); }, + /** + * + * @param {string} id A unique integer value identifying this automation. + * @param {*} [options] Override http request option. + * @throws {RequiredError} + */ + retrieveAutomation(id: string, options?: any): AxiosPromise { + return localVarFp.retrieveAutomation(id, options).then((request) => request(axios, basePath)); + }, /** * * @param {string} id A unique integer value identifying this bookmarklet import. @@ -9952,6 +11310,16 @@ export const ApiApiFactory = function (configuration?: Configuration, basePath?: retrieveViewLog(id: string, options?: any): AxiosPromise { return localVarFp.retrieveViewLog(id, options).then((request) => request(axios, basePath)); }, + /** + * + * @param {string} id A unique integer value identifying this automation. + * @param {Automation} [automation] + * @param {*} [options] Override http request option. + * @throws {RequiredError} + */ + updateAutomation(id: string, automation?: Automation, options?: any): AxiosPromise { + return localVarFp.updateAutomation(id, automation, options).then((request) => request(axios, basePath)); + }, /** * * @param {string} id A unique integer value identifying this bookmarklet import. @@ -10205,6 +11573,17 @@ export const ApiApiFactory = function (configuration?: Configuration, basePath?: * @extends {BaseAPI} */ export class ApiApi extends BaseAPI { + /** + * + * @param {Automation} [automation] + * @param {*} [options] Override http request option. + * @throws {RequiredError} + * @memberof ApiApi + */ + public createAutomation(automation?: Automation, options?: any) { + return ApiApiFp(this.configuration).createAutomation(automation, options).then((request) => request(this.axios, this.basePath)); + } + /** * * @param {BookmarkletImport} [bookmarkletImport] @@ -10472,6 +11851,17 @@ export class ApiApi extends BaseAPI { return ApiApiFp(this.configuration).createViewLog(viewLog, options).then((request) => request(this.axios, this.basePath)); } + /** + * + * @param {string} id A unique integer value identifying this automation. + * @param {*} [options] Override http request option. + * @throws {RequiredError} + * @memberof ApiApi + */ + public destroyAutomation(id: string, options?: any) { + return ApiApiFp(this.configuration).destroyAutomation(id, options).then((request) => request(this.axios, this.basePath)); + } + /** * * @param {string} id A unique integer value identifying this bookmarklet import. @@ -10748,6 +12138,16 @@ export class ApiApi extends BaseAPI { return ApiApiFp(this.configuration).imageRecipe(id, image, options).then((request) => request(this.axios, this.basePath)); } + /** + * + * @param {*} [options] Override http request option. + * @throws {RequiredError} + * @memberof ApiApi + */ + public listAutomations(options?: any) { + return ApiApiFp(this.configuration).listAutomations(options).then((request) => request(this.axios, this.basePath)); + } + /** * * @param {*} [options] Override http request option. @@ -10760,32 +12160,41 @@ export class ApiApi extends BaseAPI { /** * + * @param {number} [page] A page number within the paginated result set. + * @param {number} [pageSize] Number of results to return per page. * @param {*} [options] Override http request option. * @throws {RequiredError} * @memberof ApiApi */ - public listCookLogs(options?: any) { - return ApiApiFp(this.configuration).listCookLogs(options).then((request) => request(this.axios, this.basePath)); + public listCookLogs(page?: number, pageSize?: number, options?: any) { + return ApiApiFp(this.configuration).listCookLogs(page, pageSize, options).then((request) => request(this.axios, this.basePath)); } /** * + * @param {string} [query] Query string matched against food name. + * @param {number} [root] Return first level children of food with ID [int]. Integer 0 will return root foods. + * @param {number} [tree] Return all self and children of food with ID [int]. + * @param {number} [page] A page number within the paginated result set. + * @param {number} [pageSize] Number of results to return per page. * @param {*} [options] Override http request option. * @throws {RequiredError} * @memberof ApiApi */ - public listFoods(options?: any) { - return ApiApiFp(this.configuration).listFoods(options).then((request) => request(this.axios, this.basePath)); + public listFoods(query?: string, root?: number, tree?: number, page?: number, pageSize?: number, options?: any) { + return ApiApiFp(this.configuration).listFoods(query, root, tree, page, pageSize, options).then((request) => request(this.axios, this.basePath)); } /** * + * @param {number} [page] A page number within the paginated result set. + * @param {number} [pageSize] Number of results to return per page. * @param {*} [options] Override http request option. * @throws {RequiredError} * @memberof ApiApi */ - public listImportLogs(options?: any) { - return ApiApiFp(this.configuration).listImportLogs(options).then((request) => request(this.axios, this.basePath)); + public listImportLogs(page?: number, pageSize?: number, options?: any) { + return ApiApiFp(this.configuration).listImportLogs(page, pageSize, options).then((request) => request(this.axios, this.basePath)); } /** @@ -10799,13 +12208,18 @@ export class ApiApi extends BaseAPI { } /** - * optional parameters - **query**: search keywords for a string contained in the keyword name (case in-sensitive) - **limit**: limits the amount of returned results + * + * @param {string} [query] Query string matched against keyword name. + * @param {number} [root] Return first level children of keyword with ID [int]. Integer 0 will return root keywords. + * @param {number} [tree] Return all self and children of keyword with ID [int]. + * @param {number} [page] A page number within the paginated result set. + * @param {number} [pageSize] Number of results to return per page. * @param {*} [options] Override http request option. * @throws {RequiredError} * @memberof ApiApi */ - public listKeywords(options?: any) { - return ApiApiFp(this.configuration).listKeywords(options).then((request) => request(this.axios, this.basePath)); + public listKeywords(query?: string, root?: number, tree?: number, page?: number, pageSize?: number, options?: any) { + return ApiApiFp(this.configuration).listKeywords(query, root, tree, page, pageSize, options).then((request) => request(this.axios, this.basePath)); } /** @@ -10829,7 +12243,7 @@ export class ApiApi extends BaseAPI { } /** - * + * optional parameters - **recipe**: id of recipe - only return books for that recipe - **book**: id of book - only return recipes in that book * @param {*} [options] Override http request option. * @throws {RequiredError} * @memberof ApiApi @@ -10853,6 +12267,8 @@ export class ApiApi extends BaseAPI { * @param {string} [query] Query string matched (fuzzy) against recipe name. In the future also fulltext search. * @param {string} [keywords] Id of keyword a recipe should have. For multiple repeat parameter. * @param {string} [foods] Id of food a recipe should have. For multiple repeat parameter. + * @param {number} [units] Id of unit a recipe should have. + * @param {number} [rating] Id of unit a recipe should have. * @param {string} [books] Id of book a recipe should have. For multiple repeat parameter. * @param {string} [keywordsOr] If recipe should have all (AND) or any (OR) of the provided keywords. * @param {string} [foodsOr] If recipe should have all (AND) or any (OR) any of the provided foods. @@ -10866,8 +12282,8 @@ export class ApiApi extends BaseAPI { * @throws {RequiredError} * @memberof ApiApi */ - public listRecipes(query?: string, keywords?: string, foods?: string, books?: string, keywordsOr?: string, foodsOr?: string, booksOr?: string, internal?: string, random?: string, _new?: string, page?: number, pageSize?: number, options?: any) { - return ApiApiFp(this.configuration).listRecipes(query, keywords, foods, books, keywordsOr, foodsOr, booksOr, internal, random, _new, page, pageSize, options).then((request) => request(this.axios, this.basePath)); + public listRecipes(query?: string, keywords?: string, foods?: string, units?: number, rating?: number, books?: string, keywordsOr?: string, foodsOr?: string, booksOr?: string, internal?: string, random?: string, _new?: string, page?: number, pageSize?: number, options?: any) { + return ApiApiFp(this.configuration).listRecipes(query, keywords, foods, units, rating, books, keywordsOr, foodsOr, booksOr, internal, random, _new, page, pageSize, options).then((request) => request(this.axios, this.basePath)); } /** @@ -10922,12 +12338,14 @@ export class ApiApi extends BaseAPI { /** * + * @param {number} [page] A page number within the paginated result set. + * @param {number} [pageSize] Number of results to return per page. * @param {*} [options] Override http request option. * @throws {RequiredError} * @memberof ApiApi */ - public listSupermarketCategoryRelations(options?: any) { - return ApiApiFp(this.configuration).listSupermarketCategoryRelations(options).then((request) => request(this.axios, this.basePath)); + public listSupermarketCategoryRelations(page?: number, pageSize?: number, options?: any) { + return ApiApiFp(this.configuration).listSupermarketCategoryRelations(page, pageSize, options).then((request) => request(this.axios, this.basePath)); } /** @@ -10952,12 +12370,14 @@ export class ApiApi extends BaseAPI { /** * + * @param {number} [page] A page number within the paginated result set. + * @param {number} [pageSize] Number of results to return per page. * @param {*} [options] Override http request option. * @throws {RequiredError} * @memberof ApiApi */ - public listSyncLogs(options?: any) { - return ApiApiFp(this.configuration).listSyncLogs(options).then((request) => request(this.axios, this.basePath)); + public listSyncLogs(page?: number, pageSize?: number, options?: any) { + return ApiApiFp(this.configuration).listSyncLogs(page, pageSize, options).then((request) => request(this.axios, this.basePath)); } /** @@ -10972,12 +12392,15 @@ export class ApiApi extends BaseAPI { /** * + * @param {string} [query] Query string matched against unit name. + * @param {number} [page] A page number within the paginated result set. + * @param {number} [pageSize] Number of results to return per page. * @param {*} [options] Override http request option. * @throws {RequiredError} * @memberof ApiApi */ - public listUnits(options?: any) { - return ApiApiFp(this.configuration).listUnits(options).then((request) => request(this.axios, this.basePath)); + public listUnits(query?: string, page?: number, pageSize?: number, options?: any) { + return ApiApiFp(this.configuration).listUnits(query, page, pageSize, options).then((request) => request(this.axios, this.basePath)); } /** @@ -11012,12 +12435,91 @@ export class ApiApi extends BaseAPI { /** * + * @param {number} [page] A page number within the paginated result set. + * @param {number} [pageSize] Number of results to return per page. * @param {*} [options] Override http request option. * @throws {RequiredError} * @memberof ApiApi */ - public listViewLogs(options?: any) { - return ApiApiFp(this.configuration).listViewLogs(options).then((request) => request(this.axios, this.basePath)); + public listViewLogs(page?: number, pageSize?: number, options?: any) { + return ApiApiFp(this.configuration).listViewLogs(page, pageSize, options).then((request) => request(this.axios, this.basePath)); + } + + /** + * + * @param {string} id A unique integer value identifying this food. + * @param {string} target + * @param {Food} [food] + * @param {*} [options] Override http request option. + * @throws {RequiredError} + * @memberof ApiApi + */ + public mergeFood(id: string, target: string, food?: Food, options?: any) { + return ApiApiFp(this.configuration).mergeFood(id, target, food, options).then((request) => request(this.axios, this.basePath)); + } + + /** + * + * @param {string} id A unique integer value identifying this keyword. + * @param {string} target + * @param {Keyword} [keyword] + * @param {*} [options] Override http request option. + * @throws {RequiredError} + * @memberof ApiApi + */ + public mergeKeyword(id: string, target: string, keyword?: Keyword, options?: any) { + return ApiApiFp(this.configuration).mergeKeyword(id, target, keyword, options).then((request) => request(this.axios, this.basePath)); + } + + /** + * + * @param {string} id A unique integer value identifying this unit. + * @param {string} target + * @param {Unit} [unit] + * @param {*} [options] Override http request option. + * @throws {RequiredError} + * @memberof ApiApi + */ + public mergeUnit(id: string, target: string, unit?: Unit, options?: any) { + return ApiApiFp(this.configuration).mergeUnit(id, target, unit, options).then((request) => request(this.axios, this.basePath)); + } + + /** + * + * @param {string} id A unique integer value identifying this food. + * @param {string} parent + * @param {Food} [food] + * @param {*} [options] Override http request option. + * @throws {RequiredError} + * @memberof ApiApi + */ + public moveFood(id: string, parent: string, food?: Food, options?: any) { + return ApiApiFp(this.configuration).moveFood(id, parent, food, options).then((request) => request(this.axios, this.basePath)); + } + + /** + * + * @param {string} id A unique integer value identifying this keyword. + * @param {string} parent + * @param {Keyword} [keyword] + * @param {*} [options] Override http request option. + * @throws {RequiredError} + * @memberof ApiApi + */ + public moveKeyword(id: string, parent: string, keyword?: Keyword, options?: any) { + return ApiApiFp(this.configuration).moveKeyword(id, parent, keyword, options).then((request) => request(this.axios, this.basePath)); + } + + /** + * + * @param {string} id A unique integer value identifying this automation. + * @param {Automation} [automation] + * @param {*} [options] Override http request option. + * @throws {RequiredError} + * @memberof ApiApi + */ + public partialUpdateAutomation(id: string, automation?: Automation, options?: any) { + return ApiApiFp(this.configuration).partialUpdateAutomation(id, automation, options).then((request) => request(this.axios, this.basePath)); } /** @@ -11311,6 +12813,17 @@ export class ApiApi extends BaseAPI { return ApiApiFp(this.configuration).partialUpdateViewLog(id, viewLog, options).then((request) => request(this.axios, this.basePath)); } + /** + * + * @param {string} id A unique integer value identifying this automation. + * @param {*} [options] Override http request option. + * @throws {RequiredError} + * @memberof ApiApi + */ + public retrieveAutomation(id: string, options?: any) { + return ApiApiFp(this.configuration).retrieveAutomation(id, options).then((request) => request(this.axios, this.basePath)); + } + /** * * @param {string} id A unique integer value identifying this bookmarklet import. @@ -11597,6 +13110,18 @@ export class ApiApi extends BaseAPI { return ApiApiFp(this.configuration).retrieveViewLog(id, options).then((request) => request(this.axios, this.basePath)); } + /** + * + * @param {string} id A unique integer value identifying this automation. + * @param {Automation} [automation] + * @param {*} [options] Override http request option. + * @throws {RequiredError} + * @memberof ApiApi + */ + public updateAutomation(id: string, automation?: Automation, options?: any) { + return ApiApiFp(this.configuration).updateAutomation(id, automation, options).then((request) => request(this.axios, this.basePath)); + } + /** * * @param {string} id A unique integer value identifying this bookmarklet import. diff --git a/vue/src/utils/openapi/base.ts b/vue/src/utils/openapi/base.ts index 762445b6..61f30009 100644 --- a/vue/src/utils/openapi/base.ts +++ b/vue/src/utils/openapi/base.ts @@ -10,15 +10,16 @@ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). * https://openapi-generator.tech * Do not edit the class manually. - */ + */ import { Configuration } from "./configuration"; -// Some imports not used depending on template conditions +// Some imports not used depending on template conditions // @ts-ignore import globalAxios, { AxiosPromise, AxiosInstance } from 'axios'; -export const BASE_PATH = location.protocol + '//' + location.host; //TODO manually edited. Find good solution to automate later, remove from openapi-generator-ignore afterwards +//export const BASE_PATH = location.protocol + '//' + location.host; //TODO manually edited. Find good solution to automate later, remove from openapi-generator-ignore afterwards +export let BASE_PATH = typeof window !== 'undefined' ? localStorage.getItem('BASE_PATH') || '' : location.protocol + '//' + location.host; /** * diff --git a/vue/src/utils/utils.js b/vue/src/utils/utils.js index 76d4a229..389da0b8 100644 --- a/vue/src/utils/utils.js +++ b/vue/src/utils/utils.js @@ -17,7 +17,7 @@ export function makeToast(title, message, variant = null) { toaster.$bvToast.toast(message, { title: title, variant: variant, - toaster: 'b-toaster-top-center', + toaster: 'b-toaster-bottom-right', solid: true }) } @@ -48,7 +48,7 @@ export class StandardToasts { makeToast(i18n.tc('Success'), i18n.tc('success_deleting_resource'), 'success') break; case StandardToasts.FAIL_CREATE: - makeToast(i18n.tc('Failure'), i18n.tc('success_creating_resource'), 'danger') + makeToast(i18n.tc('Failure'), i18n.tc('err_creating_resource'), 'danger') break; case StandardToasts.FAIL_FETCH: makeToast(i18n.tc('Failure'), i18n.tc('err_fetching_resource'), 'danger') @@ -104,10 +104,18 @@ export const ResolveUrlMixin = { } export function resolveDjangoUrl(url, params = null) { - if (params !== null) { - return window.Urls[url](params) - } else { + if (params == null) { return window.Urls[url]() + } else if (typeof(params) != "object") { + return window.Urls[url](params) + } else if (typeof(params) == "object") { + if (params.length === 1) { + return window.Urls[url](params) + } else if (params.length === 2) { + return window.Urls[url](params[0],params[1]) + } else if (params.length === 3) { + return window.Urls[url](params[0],params[1],params[2]) + } } } @@ -116,6 +124,9 @@ export function resolveDjangoUrl(url, params = null) { * */ export function getUserPreference(pref) { + if(window.USER_PREF === undefined) { + return undefined; + } return window.USER_PREF[pref] } @@ -144,3 +155,341 @@ export function roundDecimals(num) { let decimals = ((getUserPreference('user_fractions')) ? getUserPreference('user_fractions') : 2); return +(Math.round(num + `e+${decimals}`) + `e-${decimals}`); } + +/* +* Utility functions to use OpenAPIs generically +* */ +import {ApiApiFactory} from "@/utils/openapi/api.ts"; + +import axios from "axios"; +axios.defaults.xsrfCookieName = 'csrftoken' +axios.defaults.xsrfHeaderName = "X-CSRFTOKEN" +import { Actions, Models } from './models'; +import {RequestArgs} from "@/utils/openapi/base"; + +export const ApiMixin = { + data() { + return { + Models: Models, + Actions: Actions + } + }, + methods: { + genericAPI: function(model, action, options) { + let setup = getConfig(model, action) + if (setup?.config?.function) { + return specialCases[setup.config.function](action, options, setup) + } + let func = setup.function + let parameters = buildParams(options, setup) + let apiClient = new ApiApiFactory() + return apiClient[func](...parameters) + }, + genericGetAPI: function(url, options) { + return axios.get(this.resolveDjangoUrl(url), {'params':options, 'emulateJSON': true}) + } + } +} + +// /* +// * local functions for ApiMixin +// * */ +function formatParam(config, value, options) { + if (config) { + for (const [k, v] of Object.entries(config)) { + switch(k) { + case 'type': + switch(v) { + case 'string': + if (Array.isArray(value)) { + let tmpValue = [] + value.forEach(x => tmpValue.push(String(x))) + value = tmpValue + } else if (value !== undefined) { + value = String(value) + } + break; + case 'integer': + if (Array.isArray(value)) { + let tmpValue = [] + value.forEach(x => tmpValue.push(parseInt(x))) + value = tmpValue + } else if (value !== undefined) { + value = parseInt(value) + } + break; + } + break; + case 'function': + // needs wrapped in a promise and wait for the called function to complete before moving on + specialCases[v](value, options) + break; + } + } + } + return value +} +function buildParams(options, setup) { + let config = setup?.config ?? {} + let params = setup?.params ?? [] + let parameters = [] + let this_value = undefined + params.forEach(function (item, index) { + if (Array.isArray(item)) { + this_value = {} + // if the value is an array, convert it to a dictionary of key:value + // filtered based on OPTIONS passed + // maybe map/reduce is better? + for (const [k, v] of Object.entries(options)) { + if (item.includes(k)) { + this_value[k] = formatParam(config?.[k], v, options) + } + } + } else { + this_value = formatParam(config?.[item], options?.[item] ?? undefined, options) + } + // if no value is found so far, get the default if it exists + if (this_value === undefined) { + this_value = getDefault(config?.[item], options) + } + parameters.push(this_value) + }); + return parameters +} +function getDefault(config, options) { + let value = undefined + value = config?.default ?? undefined + if (typeof(value) === 'object') { + let condition = false + switch(value.function) { + // CONDITIONAL case requires 4 keys: + // - check: which other OPTIONS key to check against + // - operator: what type of operation to perform + // - true: what value to assign when true + // - false: what value to assign when false + case 'CONDITIONAL': + switch(value.operator) { + case 'not_exist': + condition = ( + (!options?.[value.check] ?? undefined) + || options?.[value.check]?.length == 0 + ) + if (condition) { + value = value.true + } else { + value = value.false + } + break; + } + break; + } + } + return value +} +export function getConfig(model, action) { + + let f = action.function + // if not defined partialUpdate will use params from create + if (f === 'partialUpdate' && !model?.[f]?.params) { + model[f] = {'params': [...['id'], ...model.create.params]} + } + + let config = { + 'name': model.name, + 'apiName': model.apiName, + } + // spread operator merges dictionaries - last item in list takes precedence + config = {...config, ...action, ...model.model_type?.[f], ...model?.[f]} + // nested dictionaries are not merged - so merge again on any nested keys + config.config = {...action?.config, ...model.model_type?.[f]?.config, ...model?.[f]?.config} + // look in partialUpdate again if necessary + if (f === 'partialUpdate' && Object.keys(config.config).length === 0) { + config.config = {...model.model_type?.create?.config, ...model?.create?.config} + } + config['function'] = f + config.apiName + (config?.suffix ?? '') // parens are required to force optional chaining to evaluate before concat + return config +} + +// /* +// * functions for Generic Modal Forms +// * */ +export function getForm(model, action, item1, item2) { + let f = action.function + let config = {...action?.form, ...model.model_type?.[f]?.form, ...model?.[f]?.form} + // if not defined partialUpdate will use form from create + if (f === 'partialUpdate' && Object.keys(config).length == 0) { + config = {...Actions.CREATE?.form, ...model.model_type?.['create']?.form, ...model?.['create']?.form} + config['title'] = {...action?.form_title, ...model.model_type?.[f]?.form_title, ...model?.[f]?.form_title} + } + let form = {'fields': []} + let value = '' + for (const [k, v] of Object.entries(config)) { + if (v?.function){ + switch(v.function) { + case 'translate': + value = formTranslate(v, model, item1, item2) + } + } else { + value = v + } + if (value?.form_field) { + value['value'] = item1?.[value?.field] ?? undefined + form.fields.push( + { + ...value, + ...{ + 'label': formTranslate(value?.label, model, item1, item2), + 'placeholder': formTranslate(value?.placeholder, model, item1, item2) + } + } + ) + } else { + form[k] = value + } + } + return form + +} +function formTranslate(translate, model, item1, item2) { + if (typeof(translate) !== 'object') {return translate} + let phrase = translate.phrase + let options = {} + let obj = undefined + translate?.params.forEach(function (x, index) { + switch(x.from){ + case 'item1': + obj = item1 + break; + case 'item2': + obj = item2 + break; + case 'model': + obj = model + } + options[x.token] = obj[x.attribute] + }) + return i18n.t(phrase, options) + +} + +// /* +// * Utility functions to use manipulate nested components +// * */ +import Vue from 'vue' +export const CardMixin = { + methods: { + findCard: function(id, card_list){ + let card_length = card_list?.length ?? 0 + if (card_length == 0) { + return false + } + let cards = card_list.filter(obj => obj.id == id) + if (cards.length == 1) { + return cards[0] + } else if (cards.length == 0) { + for (const c of card_list.filter(x => x.show_children == true)) { + cards = this.findCard(id, c.children) + if (cards) { + return cards + } + } + } else { + console.log('something terrible happened') + } + }, + destroyCard: function(id, card_list) { + let card = this.findCard(id, card_list) + let p_id = card?.parent ?? undefined + + if (p_id) { + let parent = this.findCard(p_id, card_list) + if (parent){ + Vue.set(parent, 'numchild', parent.numchild - 1) + if (parent.show_children) { + let idx = parent.children.indexOf(parent.children.find(x => x.id === id)) + Vue.delete(parent.children, idx) + } + } + } + return card_list.filter(x => x.id != id) + }, + refreshCard: function(obj, card_list){ + let target = {} + let idx = undefined + target = this.findCard(obj.id, card_list) + + if (target) { + idx = card_list.indexOf(card_list.find(x => x.id === target.id)) + Vue.set(card_list, idx, obj) + } + if (target?.parent) { + let parent = this.findCard(target.parent, card_list) + if (parent) { + if (parent.show_children){ + idx = parent.children.indexOf(parent.children.find(x => x.id === target.id)) + Vue.set(parent.children, idx, obj) + } + } + } + }, + } +} + + +const specialCases = { + // the supermarket API requires chaining promises together, instead of trying to make + // this use case generic just treat it as a unique use case + SupermarketWithCategories: function(action, options, setup) { + let API = undefined + let GenericAPI = ApiMixin.methods.genericAPI + let params = [] + if (action.function === 'partialUpdate') { + API = GenericAPI + params = [Models.SUPERMARKET, Actions.FETCH, {'id': options.id}] + + } else if (action.function === 'create') { + API = new ApiApiFactory()[setup.function] + params = buildParams(options, setup) + } + + return API(...params).then((result) => { + // either get the supermarket or create the supermarket (but without the category relations) + return result.data + }).then((result) => { + // delete, update or change all of the category/relations + let id = result.id + let existing_categories = result.category_to_supermarket + let updated_categories = options.category_to_supermarket + + let promises = [] + // if the 'category.name' key does not exist on the updated_categories, the categories were not updated + if (updated_categories?.[0]?.category?.name) { + // list of category relationship ids that are not part of the updated supermarket + let removed_categories = existing_categories.filter(x => !updated_categories.map(x => x.category.id).includes(x.category.id)) + let added_categories = updated_categories.filter(x => !existing_categories.map(x => x.category.id).includes(x.category.id)) + let changed_categories = updated_categories.filter(x => existing_categories.map(x => x.category.id).includes(x.category.id)) + + removed_categories.forEach(x => { + promises.push(GenericAPI(Models.SHOPPING_CATEGORY_RELATION, Actions.DELETE, {'id': x.id})) + }) + let item = {'supermarket': id} + added_categories.forEach(x => { + item.order = x.order + item.category = {'id': x.category.id, 'name': x.category.name} + promises.push(GenericAPI(Models.SHOPPING_CATEGORY_RELATION, Actions.CREATE, item)) + }) + changed_categories.forEach(x => { + item.id = x?.id ?? existing_categories.find(y => y.category.id === x.category.id).id; + item.order = x.order + item.category = {'id': x.category.id, 'name': x.category.name} + promises.push(GenericAPI(Models.SHOPPING_CATEGORY_RELATION, Actions.UPDATE, item)) + }) + } + + return Promise.all(promises).then(() => { + // finally get and return the Supermarket which everything downstream is expecting + return GenericAPI(Models.SUPERMARKET, Actions.FETCH, {'id': id}) + }) + }) + } +} diff --git a/vue/tsconfig.json b/vue/tsconfig.json index 9ee36413..63fe664a 100644 --- a/vue/tsconfig.json +++ b/vue/tsconfig.json @@ -33,7 +33,7 @@ "src/**/*.vue", "tests/**/*.ts", "tests/**/*.tsx" - ], +, "src/directives/OutsideClick.js" ], "exclude": [ "node_modules" ] diff --git a/vue/vue.config.js b/vue/vue.config.js index 1e12e601..689731a6 100644 --- a/vue/vue.config.js +++ b/vue/vue.config.js @@ -21,8 +21,24 @@ const pages = { entry: './src/apps/SupermarketView/main.js', chunks: ['chunk-vendors'] }, - 'user_file_view': { - entry: './src/apps/UserFileView/main.js', + 'model_list_view': { + entry: './src/apps/ModelListView/main.js', + chunks: ['chunk-vendors'] + }, + 'edit_internal_recipe': { + entry: './src/apps/RecipeEditView/main.js', + chunks: ['chunk-vendors'] + }, + 'cookbook_view': { + entry: './src/apps/CookbookView/main.js', + chunks: ['chunk-vendors'] + }, + 'meal_plan_view': { + entry: './src/apps/MealPlanView/main.js', + chunks: ['chunk-vendors'] + }, + 'checklist_view': { + entry: './src/apps/ChecklistView/main.js', chunks: ['chunk-vendors'] }, } @@ -32,7 +48,7 @@ module.exports = { filenameHashing: false, productionSourceMap: false, publicPath: process.env.NODE_ENV === 'production' - ? '' + ? '/static/vue' : 'http://localhost:8080/', outputDir: '../cookbook/static/vue/', runtimeCompiler: true, @@ -67,15 +83,18 @@ module.exports = { chainWebpack: config => { config.optimization.splitChunks({ - cacheGroups: { - vendor: { - test: /[\\/]node_modules[\\/]/, - name: "chunk-vendors", - chunks: "all", - priority: 1 + cacheGroups: { + vendor: { + test: /[\\/]node_modules[\\/]/, + name: "chunk-vendors", + chunks: "all", + priority: 1 + }, }, }, - }); + // TODO make this conditional on .env DEBUG = FALSE + config.optimization.minimize(true) + ); //TODO somehow remov them as they are also added to the manifest config of the service worker /* @@ -101,4 +120,4 @@ module.exports = { .headers({"Access-Control-Allow-Origin": ["*"]}) } -}; \ No newline at end of file +}; diff --git a/vue/webpack-stats.json b/vue/webpack-stats.json deleted file mode 100644 index ba0d5eaf..00000000 --- a/vue/webpack-stats.json +++ /dev/null @@ -1 +0,0 @@ -{"status":"done","chunks":{"recipe_search_view":["css/chunk-vendors.css","js/chunk-vendors.js","js/recipe_search_view.js"],"recipe_view":["css/chunk-vendors.css","js/chunk-vendors.js","js/recipe_view.js"],"offline_view":["css/chunk-vendors.css","js/chunk-vendors.js","js/offline_view.js"],"import_response_view":["css/chunk-vendors.css","js/chunk-vendors.js","js/import_response_view.js"],"supermarket_view":["css/chunk-vendors.css","js/chunk-vendors.js","js/supermarket_view.js"],"user_file_view":["css/chunk-vendors.css","js/chunk-vendors.js","js/user_file_view.js"]},"assets":{"../../templates/sw.js":{"name":"../../templates/sw.js","path":"..\\..\\templates\\sw.js"},"css/chunk-vendors.css":{"name":"css/chunk-vendors.css","path":"css\\chunk-vendors.css"},"js/chunk-vendors.js":{"name":"js/chunk-vendors.js","path":"js\\chunk-vendors.js"},"js/import_response_view.js":{"name":"js/import_response_view.js","path":"js\\import_response_view.js"},"js/offline_view.js":{"name":"js/offline_view.js","path":"js\\offline_view.js"},"js/recipe_search_view.js":{"name":"js/recipe_search_view.js","path":"js\\recipe_search_view.js"},"js/recipe_view.js":{"name":"js/recipe_view.js","path":"js\\recipe_view.js"},"js/supermarket_view.js":{"name":"js/supermarket_view.js","path":"js\\supermarket_view.js"},"js/user_file_view.js":{"name":"js/user_file_view.js","path":"js\\user_file_view.js"},"recipe_search_view.html":{"name":"recipe_search_view.html","path":"recipe_search_view.html"},"recipe_view.html":{"name":"recipe_view.html","path":"recipe_view.html"},"offline_view.html":{"name":"offline_view.html","path":"offline_view.html"},"import_response_view.html":{"name":"import_response_view.html","path":"import_response_view.html"},"supermarket_view.html":{"name":"supermarket_view.html","path":"supermarket_view.html"},"user_file_view.html":{"name":"user_file_view.html","path":"user_file_view.html"},"manifest.json":{"name":"manifest.json","path":"manifest.json"}}} \ No newline at end of file diff --git a/vue/yarn.lock b/vue/yarn.lock deleted file mode 100644 index b6302654..00000000 --- a/vue/yarn.lock +++ /dev/null @@ -1,10084 +0,0 @@ -# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. -# yarn lockfile v1 - - -"@babel/code-frame@7.12.11": - version "7.12.11" - resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.12.11.tgz#f4ad435aa263db935b8f10f2c552d23fb716a63f" - integrity sha512-Zt1yodBx1UcyiePMSkWnU4hPqhwq7hGi2nFL1LeA3EUl+q2LQx16MISgJ0+z7dnmgvP9QtIleuETGOiOH1RcIw== - dependencies: - "@babel/highlight" "^7.10.4" - -"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.10.4", "@babel/code-frame@^7.12.13", "@babel/code-frame@^7.5.5", "@babel/code-frame@^7.8.3": - version "7.12.13" - resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.12.13.tgz#dcfc826beef65e75c50e21d3837d7d95798dd658" - integrity sha512-HV1Cm0Q3ZrpCR93tkWOYiuYIgLxZXZFVG2VgK+MBWjUqZTundupbfx2aXarXuw5Ko5aMcjtJgbSs4vUGBS5v6g== - dependencies: - "@babel/highlight" "^7.12.13" - -"@babel/compat-data@^7.13.11", "@babel/compat-data@^7.14.4": - version "7.14.4" - resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.14.4.tgz#45720fe0cecf3fd42019e1d12cc3d27fadc98d58" - integrity sha512-i2wXrWQNkH6JplJQGn3Rd2I4Pij8GdHkXwHMxm+zV5YG/Jci+bCNrWZEWC4o+umiDkRrRs4dVzH3X4GP7vyjQQ== - -"@babel/core@^7.11.0", "@babel/core@^7.11.1", "@babel/core@^7.8.4": - version "7.14.3" - resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.14.3.tgz#5395e30405f0776067fbd9cf0884f15bfb770a38" - integrity sha512-jB5AmTKOCSJIZ72sd78ECEhuPiDMKlQdDI/4QRI6lzYATx5SSogS1oQA2AoPecRCknm30gHi2l+QVvNUu3wZAg== - dependencies: - "@babel/code-frame" "^7.12.13" - "@babel/generator" "^7.14.3" - "@babel/helper-compilation-targets" "^7.13.16" - "@babel/helper-module-transforms" "^7.14.2" - "@babel/helpers" "^7.14.0" - "@babel/parser" "^7.14.3" - "@babel/template" "^7.12.13" - "@babel/traverse" "^7.14.2" - "@babel/types" "^7.14.2" - convert-source-map "^1.7.0" - debug "^4.1.0" - gensync "^1.0.0-beta.2" - json5 "^2.1.2" - semver "^6.3.0" - source-map "^0.5.0" - -"@babel/generator@^7.14.2", "@babel/generator@^7.14.3": - version "7.14.3" - resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.14.3.tgz#0c2652d91f7bddab7cccc6ba8157e4f40dcedb91" - integrity sha512-bn0S6flG/j0xtQdz3hsjJ624h3W0r3llttBMfyHX3YrZ/KtLYr15bjA0FXkgW7FpvrDuTuElXeVjiKlYRpnOFA== - dependencies: - "@babel/types" "^7.14.2" - jsesc "^2.5.1" - source-map "^0.5.0" - -"@babel/helper-annotate-as-pure@^7.12.13": - version "7.12.13" - resolved "https://registry.yarnpkg.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.12.13.tgz#0f58e86dfc4bb3b1fcd7db806570e177d439b6ab" - integrity sha512-7YXfX5wQ5aYM/BOlbSccHDbuXXFPxeoUmfWtz8le2yTkTZc+BxsiEnENFoi2SlmA8ewDkG2LgIMIVzzn2h8kfw== - dependencies: - "@babel/types" "^7.12.13" - -"@babel/helper-builder-binary-assignment-operator-visitor@^7.12.13": - version "7.12.13" - resolved "https://registry.yarnpkg.com/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.12.13.tgz#6bc20361c88b0a74d05137a65cac8d3cbf6f61fc" - integrity sha512-CZOv9tGphhDRlVjVkAgm8Nhklm9RzSmWpX2my+t7Ua/KT616pEzXsQCjinzvkRvHWJ9itO4f296efroX23XCMA== - dependencies: - "@babel/helper-explode-assignable-expression" "^7.12.13" - "@babel/types" "^7.12.13" - -"@babel/helper-compilation-targets@^7.13.0", "@babel/helper-compilation-targets@^7.13.16", "@babel/helper-compilation-targets@^7.14.4", "@babel/helper-compilation-targets@^7.9.6": - version "7.14.4" - resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.14.4.tgz#33ebd0ffc34248051ee2089350a929ab02f2a516" - integrity sha512-JgdzOYZ/qGaKTVkn5qEDV/SXAh8KcyUVkCoSWGN8T3bwrgd6m+/dJa2kVGi6RJYJgEYPBdZ84BZp9dUjNWkBaA== - dependencies: - "@babel/compat-data" "^7.14.4" - "@babel/helper-validator-option" "^7.12.17" - browserslist "^4.16.6" - semver "^6.3.0" - -"@babel/helper-create-class-features-plugin@^7.13.0", "@babel/helper-create-class-features-plugin@^7.14.0", "@babel/helper-create-class-features-plugin@^7.14.2", "@babel/helper-create-class-features-plugin@^7.14.3": - version "7.14.4" - resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.14.4.tgz#abf888d836a441abee783c75229279748705dc42" - integrity sha512-idr3pthFlDCpV+p/rMgGLGYIVtazeatrSOQk8YzO2pAepIjQhCN3myeihVg58ax2bbbGK9PUE1reFi7axOYIOw== - dependencies: - "@babel/helper-annotate-as-pure" "^7.12.13" - "@babel/helper-function-name" "^7.14.2" - "@babel/helper-member-expression-to-functions" "^7.13.12" - "@babel/helper-optimise-call-expression" "^7.12.13" - "@babel/helper-replace-supers" "^7.14.4" - "@babel/helper-split-export-declaration" "^7.12.13" - -"@babel/helper-create-regexp-features-plugin@^7.12.13": - version "7.14.3" - resolved "https://registry.yarnpkg.com/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.14.3.tgz#149aa6d78c016e318c43e2409a0ae9c136a86688" - integrity sha512-JIB2+XJrb7v3zceV2XzDhGIB902CmKGSpSl4q2C6agU9SNLG/2V1RtFRGPG1Ajh9STj3+q6zJMOC+N/pp2P9DA== - dependencies: - "@babel/helper-annotate-as-pure" "^7.12.13" - regexpu-core "^4.7.1" - -"@babel/helper-define-polyfill-provider@^0.2.2": - version "0.2.3" - resolved "https://registry.yarnpkg.com/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.2.3.tgz#0525edec5094653a282688d34d846e4c75e9c0b6" - integrity sha512-RH3QDAfRMzj7+0Nqu5oqgO5q9mFtQEVvCRsi8qCEfzLR9p2BHfn5FzhSB2oj1fF7I2+DcTORkYaQ6aTR9Cofew== - 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" - debug "^4.1.1" - lodash.debounce "^4.0.8" - resolve "^1.14.2" - semver "^6.1.2" - -"@babel/helper-explode-assignable-expression@^7.12.13": - version "7.13.0" - resolved "https://registry.yarnpkg.com/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.13.0.tgz#17b5c59ff473d9f956f40ef570cf3a76ca12657f" - integrity sha512-qS0peLTDP8kOisG1blKbaoBg/o9OSa1qoumMjTK5pM+KDTtpxpsiubnCGP34vK8BXGcb2M9eigwgvoJryrzwWA== - dependencies: - "@babel/types" "^7.13.0" - -"@babel/helper-function-name@^7.12.13", "@babel/helper-function-name@^7.14.2": - version "7.14.2" - resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.14.2.tgz#397688b590760b6ef7725b5f0860c82427ebaac2" - integrity sha512-NYZlkZRydxw+YT56IlhIcS8PAhb+FEUiOzuhFTfqDyPmzAhRge6ua0dQYT/Uh0t/EDHq05/i+e5M2d4XvjgarQ== - dependencies: - "@babel/helper-get-function-arity" "^7.12.13" - "@babel/template" "^7.12.13" - "@babel/types" "^7.14.2" - -"@babel/helper-get-function-arity@^7.12.13": - version "7.12.13" - resolved "https://registry.yarnpkg.com/@babel/helper-get-function-arity/-/helper-get-function-arity-7.12.13.tgz#bc63451d403a3b3082b97e1d8b3fe5bd4091e583" - integrity sha512-DjEVzQNz5LICkzN0REdpD5prGoidvbdYk1BVgRUOINaWJP2t6avB27X1guXK1kXNrX0WMfsrm1A/ZBthYuIMQg== - dependencies: - "@babel/types" "^7.12.13" - -"@babel/helper-hoist-variables@^7.13.0": - version "7.13.16" - resolved "https://registry.yarnpkg.com/@babel/helper-hoist-variables/-/helper-hoist-variables-7.13.16.tgz#1b1651249e94b51f8f0d33439843e33e39775b30" - integrity sha512-1eMtTrXtrwscjcAeO4BVK+vvkxaLJSPFz1w1KLawz6HLNi9bPFGBNwwDyVfiu1Tv/vRRFYfoGaKhmAQPGPn5Wg== - dependencies: - "@babel/traverse" "^7.13.15" - "@babel/types" "^7.13.16" - -"@babel/helper-member-expression-to-functions@^7.13.12": - version "7.13.12" - resolved "https://registry.yarnpkg.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.13.12.tgz#dfe368f26d426a07299d8d6513821768216e6d72" - integrity sha512-48ql1CLL59aKbU94Y88Xgb2VFy7a95ykGRbJJaaVv+LX5U8wFpLfiGXJJGUozsmA1oEh/o5Bp60Voq7ACyA/Sw== - dependencies: - "@babel/types" "^7.13.12" - -"@babel/helper-module-imports@^7.0.0", "@babel/helper-module-imports@^7.10.4", "@babel/helper-module-imports@^7.12.13", "@babel/helper-module-imports@^7.13.12", "@babel/helper-module-imports@^7.8.3": - version "7.13.12" - resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.13.12.tgz#c6a369a6f3621cb25da014078684da9196b61977" - integrity sha512-4cVvR2/1B693IuOvSI20xqqa/+bl7lqAMR59R4iu39R9aOX8/JoYY1sFaNvUMyMBGnHdwvJgUrzNLoUZxXypxA== - dependencies: - "@babel/types" "^7.13.12" - -"@babel/helper-module-transforms@^7.13.0", "@babel/helper-module-transforms@^7.14.0", "@babel/helper-module-transforms@^7.14.2": - version "7.14.2" - resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.14.2.tgz#ac1cc30ee47b945e3e0c4db12fa0c5389509dfe5" - integrity sha512-OznJUda/soKXv0XhpvzGWDnml4Qnwp16GN+D/kZIdLsWoHj05kyu8Rm5kXmMef+rVJZ0+4pSGLkeixdqNUATDA== - dependencies: - "@babel/helper-module-imports" "^7.13.12" - "@babel/helper-replace-supers" "^7.13.12" - "@babel/helper-simple-access" "^7.13.12" - "@babel/helper-split-export-declaration" "^7.12.13" - "@babel/helper-validator-identifier" "^7.14.0" - "@babel/template" "^7.12.13" - "@babel/traverse" "^7.14.2" - "@babel/types" "^7.14.2" - -"@babel/helper-optimise-call-expression@^7.12.13": - version "7.12.13" - resolved "https://registry.yarnpkg.com/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.12.13.tgz#5c02d171b4c8615b1e7163f888c1c81c30a2aaea" - integrity sha512-BdWQhoVJkp6nVjB7nkFWcn43dkprYauqtk++Py2eaf/GRDFm5BxRqEIZCiHlZUGAVmtwKcsVL1dC68WmzeFmiA== - dependencies: - "@babel/types" "^7.12.13" - -"@babel/helper-plugin-utils@^7.0.0", "@babel/helper-plugin-utils@^7.10.4", "@babel/helper-plugin-utils@^7.12.13", "@babel/helper-plugin-utils@^7.13.0", "@babel/helper-plugin-utils@^7.8.0", "@babel/helper-plugin-utils@^7.8.3": - version "7.13.0" - resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.13.0.tgz#806526ce125aed03373bc416a828321e3a6a33af" - integrity sha512-ZPafIPSwzUlAoWT8DKs1W2VyF2gOWthGd5NGFMsBcMMol+ZhK+EQY/e6V96poa6PA/Bh+C9plWN0hXO1uB8AfQ== - -"@babel/helper-remap-async-to-generator@^7.13.0": - version "7.13.0" - resolved "https://registry.yarnpkg.com/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.13.0.tgz#376a760d9f7b4b2077a9dd05aa9c3927cadb2209" - integrity sha512-pUQpFBE9JvC9lrQbpX0TmeNIy5s7GnZjna2lhhcHC7DzgBs6fWn722Y5cfwgrtrqc7NAJwMvOa0mKhq6XaE4jg== - dependencies: - "@babel/helper-annotate-as-pure" "^7.12.13" - "@babel/helper-wrap-function" "^7.13.0" - "@babel/types" "^7.13.0" - -"@babel/helper-replace-supers@^7.12.13", "@babel/helper-replace-supers@^7.13.12", "@babel/helper-replace-supers@^7.14.4": - version "7.14.4" - resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.14.4.tgz#b2ab16875deecfff3ddfcd539bc315f72998d836" - integrity sha512-zZ7uHCWlxfEAAOVDYQpEf/uyi1dmeC7fX4nCf2iz9drnCwi1zvwXL3HwWWNXUQEJ1k23yVn3VbddiI9iJEXaTQ== - dependencies: - "@babel/helper-member-expression-to-functions" "^7.13.12" - "@babel/helper-optimise-call-expression" "^7.12.13" - "@babel/traverse" "^7.14.2" - "@babel/types" "^7.14.4" - -"@babel/helper-simple-access@^7.13.12": - version "7.13.12" - resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.13.12.tgz#dd6c538afb61819d205a012c31792a39c7a5eaf6" - integrity sha512-7FEjbrx5SL9cWvXioDbnlYTppcZGuCY6ow3/D5vMggb2Ywgu4dMrpTJX0JdQAIcRRUElOIxF3yEooa9gUb9ZbA== - dependencies: - "@babel/types" "^7.13.12" - -"@babel/helper-skip-transparent-expression-wrappers@^7.12.1": - version "7.12.1" - resolved "https://registry.yarnpkg.com/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.12.1.tgz#462dc63a7e435ade8468385c63d2b84cce4b3cbf" - integrity sha512-Mf5AUuhG1/OCChOJ/HcADmvcHM42WJockombn8ATJG3OnyiSxBK/Mm5x78BQWvmtXZKHgbjdGL2kin/HOLlZGA== - dependencies: - "@babel/types" "^7.12.1" - -"@babel/helper-split-export-declaration@^7.12.13": - version "7.12.13" - resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.12.13.tgz#e9430be00baf3e88b0e13e6f9d4eaf2136372b05" - integrity sha512-tCJDltF83htUtXx5NLcaDqRmknv652ZWCHyoTETf1CXYJdPC7nohZohjUgieXhv0hTJdRf2FjDueFehdNucpzg== - dependencies: - "@babel/types" "^7.12.13" - -"@babel/helper-validator-identifier@^7.12.11", "@babel/helper-validator-identifier@^7.14.0": - version "7.14.0" - resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.14.0.tgz#d26cad8a47c65286b15df1547319a5d0bcf27288" - integrity sha512-V3ts7zMSu5lfiwWDVWzRDGIN+lnCEUdaXgtVHJgLb1rGaA6jMrtB9EmE7L18foXJIE8Un/A/h6NJfGQp/e1J4A== - -"@babel/helper-validator-option@^7.12.17": - version "7.12.17" - resolved "https://registry.yarnpkg.com/@babel/helper-validator-option/-/helper-validator-option-7.12.17.tgz#d1fbf012e1a79b7eebbfdc6d270baaf8d9eb9831" - integrity sha512-TopkMDmLzq8ngChwRlyjR6raKD6gMSae4JdYDB8bByKreQgG0RBTuKe9LRxW3wFtUnjxOPRKBDwEH6Mg5KeDfw== - -"@babel/helper-wrap-function@^7.13.0": - version "7.13.0" - resolved "https://registry.yarnpkg.com/@babel/helper-wrap-function/-/helper-wrap-function-7.13.0.tgz#bdb5c66fda8526ec235ab894ad53a1235c79fcc4" - integrity sha512-1UX9F7K3BS42fI6qd2A4BjKzgGjToscyZTdp1DjknHLCIvpgne6918io+aL5LXFcER/8QWiwpoY902pVEqgTXA== - dependencies: - "@babel/helper-function-name" "^7.12.13" - "@babel/template" "^7.12.13" - "@babel/traverse" "^7.13.0" - "@babel/types" "^7.13.0" - -"@babel/helpers@^7.14.0": - version "7.14.0" - resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.14.0.tgz#ea9b6be9478a13d6f961dbb5f36bf75e2f3b8f62" - integrity sha512-+ufuXprtQ1D1iZTO/K9+EBRn+qPWMJjZSw/S0KlFrxCw4tkrzv9grgpDHkY9MeQTjTY8i2sp7Jep8DfU6tN9Mg== - dependencies: - "@babel/template" "^7.12.13" - "@babel/traverse" "^7.14.0" - "@babel/types" "^7.14.0" - -"@babel/highlight@^7.10.4", "@babel/highlight@^7.12.13": - version "7.14.0" - resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.14.0.tgz#3197e375711ef6bf834e67d0daec88e4f46113cf" - integrity sha512-YSCOwxvTYEIMSGaBQb5kDDsCopDdiUGsqpatp3fOlI4+2HQSkTmEVWnVuySdAC5EWCqSWWTv0ib63RjR7dTBdg== - dependencies: - "@babel/helper-validator-identifier" "^7.14.0" - chalk "^2.0.0" - js-tokens "^4.0.0" - -"@babel/parser@^7.12.0", "@babel/parser@^7.12.13", "@babel/parser@^7.13.9", "@babel/parser@^7.14.2", "@babel/parser@^7.14.3", "@babel/parser@^7.7.0": - version "7.14.4" - resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.14.4.tgz#a5c560d6db6cd8e6ed342368dea8039232cbab18" - integrity sha512-ArliyUsWDUqEGfWcmzpGUzNfLxTdTp6WU4IuP6QFSp9gGfWS6boxFCkJSJ/L4+RG8z/FnIU3WxCk6hPL9SSWeA== - -"@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@^7.13.12": - version "7.13.12" - resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.13.12.tgz#a3484d84d0b549f3fc916b99ee4783f26fabad2a" - integrity sha512-d0u3zWKcoZf379fOeJdr1a5WPDny4aOFZ6hlfKivgK0LY7ZxNfoaHL2fWwdGtHyVvra38FC+HVYkO+byfSA8AQ== - dependencies: - "@babel/helper-plugin-utils" "^7.13.0" - "@babel/helper-skip-transparent-expression-wrappers" "^7.12.1" - "@babel/plugin-proposal-optional-chaining" "^7.13.12" - -"@babel/plugin-proposal-async-generator-functions@^7.14.2": - version "7.14.2" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.14.2.tgz#3a2085abbf5d5f962d480dbc81347385ed62eb1e" - integrity sha512-b1AM4F6fwck4N8ItZ/AtC4FP/cqZqmKRQ4FaTDutwSYyjuhtvsGEMLK4N/ztV/ImP40BjIDyMgBQAeAMsQYVFQ== - dependencies: - "@babel/helper-plugin-utils" "^7.13.0" - "@babel/helper-remap-async-to-generator" "^7.13.0" - "@babel/plugin-syntax-async-generators" "^7.8.4" - -"@babel/plugin-proposal-class-properties@^7.13.0", "@babel/plugin-proposal-class-properties@^7.8.3": - version "7.13.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.13.0.tgz#146376000b94efd001e57a40a88a525afaab9f37" - integrity sha512-KnTDjFNC1g+45ka0myZNvSBFLhNCLN+GeGYLDEA8Oq7MZ6yMgfLoIRh86GRT0FjtJhZw8JyUskP9uvj5pHM9Zg== - dependencies: - "@babel/helper-create-class-features-plugin" "^7.13.0" - "@babel/helper-plugin-utils" "^7.13.0" - -"@babel/plugin-proposal-class-static-block@^7.14.3": - version "7.14.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-class-static-block/-/plugin-proposal-class-static-block-7.14.3.tgz#5a527e2cae4a4753119c3a3e7f64ecae8ccf1360" - integrity sha512-HEjzp5q+lWSjAgJtSluFDrGGosmwTgKwCXdDQZvhKsRlwv3YdkUEqxNrrjesJd+B9E9zvr1PVPVBvhYZ9msjvQ== - dependencies: - "@babel/helper-create-class-features-plugin" "^7.14.3" - "@babel/helper-plugin-utils" "^7.13.0" - "@babel/plugin-syntax-class-static-block" "^7.12.13" - -"@babel/plugin-proposal-decorators@^7.8.3": - version "7.14.2" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-decorators/-/plugin-proposal-decorators-7.14.2.tgz#e68c3c5e4a6a08834456568256fc3e71b93590cf" - integrity sha512-LauAqDd/VjQDtae58QgBcEOE42NNP+jB2OE+XeC3KBI/E+BhhRjtr5viCIrj1hmu1YvrguLipIPRJZmS5yUcFw== - dependencies: - "@babel/helper-create-class-features-plugin" "^7.14.2" - "@babel/helper-plugin-utils" "^7.13.0" - "@babel/plugin-syntax-decorators" "^7.12.13" - -"@babel/plugin-proposal-dynamic-import@^7.14.2": - version "7.14.2" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.14.2.tgz#01ebabd7c381cff231fa43e302939a9de5be9d9f" - integrity sha512-oxVQZIWFh91vuNEMKltqNsKLFWkOIyJc95k2Gv9lWVyDfPUQGSSlbDEgWuJUU1afGE9WwlzpucMZ3yDRHIItkA== - dependencies: - "@babel/helper-plugin-utils" "^7.13.0" - "@babel/plugin-syntax-dynamic-import" "^7.8.3" - -"@babel/plugin-proposal-export-namespace-from@^7.14.2": - version "7.14.2" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.14.2.tgz#62542f94aa9ce8f6dba79eec698af22112253791" - integrity sha512-sRxW3z3Zp3pFfLAgVEvzTFutTXax837oOatUIvSG9o5gRj9mKwm3br1Se5f4QalTQs9x4AzlA/HrCWbQIHASUQ== - dependencies: - "@babel/helper-plugin-utils" "^7.13.0" - "@babel/plugin-syntax-export-namespace-from" "^7.8.3" - -"@babel/plugin-proposal-json-strings@^7.14.2": - version "7.14.2" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.14.2.tgz#830b4e2426a782e8b2878fbfe2cba85b70cbf98c" - integrity sha512-w2DtsfXBBJddJacXMBhElGEYqCZQqN99Se1qeYn8DVLB33owlrlLftIbMzn5nz1OITfDVknXF433tBrLEAOEjA== - dependencies: - "@babel/helper-plugin-utils" "^7.13.0" - "@babel/plugin-syntax-json-strings" "^7.8.3" - -"@babel/plugin-proposal-logical-assignment-operators@^7.14.2": - version "7.14.2" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.14.2.tgz#222348c080a1678e0e74ea63fe76f275882d1fd7" - integrity sha512-1JAZtUrqYyGsS7IDmFeaem+/LJqujfLZ2weLR9ugB0ufUPjzf8cguyVT1g5im7f7RXxuLq1xUxEzvm68uYRtGg== - dependencies: - "@babel/helper-plugin-utils" "^7.13.0" - "@babel/plugin-syntax-logical-assignment-operators" "^7.10.4" - -"@babel/plugin-proposal-nullish-coalescing-operator@^7.14.2": - version "7.14.2" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.14.2.tgz#425b11dc62fc26939a2ab42cbba680bdf5734546" - integrity sha512-ebR0zU9OvI2N4qiAC38KIAK75KItpIPTpAtd2r4OZmMFeKbKJpUFLYP2EuDut82+BmYi8sz42B+TfTptJ9iG5Q== - dependencies: - "@babel/helper-plugin-utils" "^7.13.0" - "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.3" - -"@babel/plugin-proposal-numeric-separator@^7.14.2": - version "7.14.2" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.14.2.tgz#82b4cc06571143faf50626104b335dd71baa4f9e" - integrity sha512-DcTQY9syxu9BpU3Uo94fjCB3LN9/hgPS8oUL7KrSW3bA2ePrKZZPJcc5y0hoJAM9dft3pGfErtEUvxXQcfLxUg== - dependencies: - "@babel/helper-plugin-utils" "^7.13.0" - "@babel/plugin-syntax-numeric-separator" "^7.10.4" - -"@babel/plugin-proposal-object-rest-spread@^7.14.4": - version "7.14.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.14.4.tgz#0e2b4de419915dc0b409378e829412e2031777c4" - integrity sha512-AYosOWBlyyXEagrPRfLJ1enStufsr7D1+ddpj8OLi9k7B6+NdZ0t/9V7Fh+wJ4g2Jol8z2JkgczYqtWrZd4vbA== - dependencies: - "@babel/compat-data" "^7.14.4" - "@babel/helper-compilation-targets" "^7.14.4" - "@babel/helper-plugin-utils" "^7.13.0" - "@babel/plugin-syntax-object-rest-spread" "^7.8.3" - "@babel/plugin-transform-parameters" "^7.14.2" - -"@babel/plugin-proposal-optional-catch-binding@^7.14.2": - version "7.14.2" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.14.2.tgz#150d4e58e525b16a9a1431bd5326c4eed870d717" - integrity sha512-XtkJsmJtBaUbOxZsNk0Fvrv8eiqgneug0A6aqLFZ4TSkar2L5dSXWcnUKHgmjJt49pyB/6ZHvkr3dPgl9MOWRQ== - dependencies: - "@babel/helper-plugin-utils" "^7.13.0" - "@babel/plugin-syntax-optional-catch-binding" "^7.8.3" - -"@babel/plugin-proposal-optional-chaining@^7.13.12", "@babel/plugin-proposal-optional-chaining@^7.14.2": - version "7.14.2" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.14.2.tgz#df8171a8b9c43ebf4c1dabe6311b432d83e1b34e" - integrity sha512-qQByMRPwMZJainfig10BoaDldx/+VDtNcrA7qdNaEOAj6VXud+gfrkA8j4CRAU5HjnWREXqIpSpH30qZX1xivA== - dependencies: - "@babel/helper-plugin-utils" "^7.13.0" - "@babel/helper-skip-transparent-expression-wrappers" "^7.12.1" - "@babel/plugin-syntax-optional-chaining" "^7.8.3" - -"@babel/plugin-proposal-private-methods@^7.13.0": - version "7.13.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.13.0.tgz#04bd4c6d40f6e6bbfa2f57e2d8094bad900ef787" - integrity sha512-MXyyKQd9inhx1kDYPkFRVOBXQ20ES8Pto3T7UZ92xj2mY0EVD8oAVzeyYuVfy/mxAdTSIayOvg+aVzcHV2bn6Q== - dependencies: - "@babel/helper-create-class-features-plugin" "^7.13.0" - "@babel/helper-plugin-utils" "^7.13.0" - -"@babel/plugin-proposal-private-property-in-object@^7.14.0": - version "7.14.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.14.0.tgz#b1a1f2030586b9d3489cc26179d2eb5883277636" - integrity sha512-59ANdmEwwRUkLjB7CRtwJxxwtjESw+X2IePItA+RGQh+oy5RmpCh/EvVVvh5XQc3yxsm5gtv0+i9oBZhaDNVTg== - dependencies: - "@babel/helper-annotate-as-pure" "^7.12.13" - "@babel/helper-create-class-features-plugin" "^7.14.0" - "@babel/helper-plugin-utils" "^7.13.0" - "@babel/plugin-syntax-private-property-in-object" "^7.14.0" - -"@babel/plugin-proposal-unicode-property-regex@^7.12.13", "@babel/plugin-proposal-unicode-property-regex@^7.4.4": - version "7.12.13" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.12.13.tgz#bebde51339be829c17aaaaced18641deb62b39ba" - integrity sha512-XyJmZidNfofEkqFV5VC/bLabGmO5QzenPO/YOfGuEbgU+2sSwMmio3YLb4WtBgcmmdwZHyVyv8on77IUjQ5Gvg== - dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.12.13" - "@babel/helper-plugin-utils" "^7.12.13" - -"@babel/plugin-syntax-async-generators@^7.8.4": - version "7.8.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz#a983fb1aeb2ec3f6ed042a210f640e90e786fe0d" - integrity sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw== - dependencies: - "@babel/helper-plugin-utils" "^7.8.0" - -"@babel/plugin-syntax-class-properties@^7.12.13": - version "7.12.13" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz#b5c987274c4a3a82b89714796931a6b53544ae10" - integrity sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA== - dependencies: - "@babel/helper-plugin-utils" "^7.12.13" - -"@babel/plugin-syntax-class-static-block@^7.12.13": - version "7.12.13" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-class-static-block/-/plugin-syntax-class-static-block-7.12.13.tgz#8e3d674b0613e67975ceac2776c97b60cafc5c9c" - integrity sha512-ZmKQ0ZXR0nYpHZIIuj9zE7oIqCx2hw9TKi+lIo73NNrMPAZGHfS92/VRV0ZmPj6H2ffBgyFHXvJ5NYsNeEaP2A== - dependencies: - "@babel/helper-plugin-utils" "^7.12.13" - -"@babel/plugin-syntax-decorators@^7.12.13": - version "7.12.13" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-decorators/-/plugin-syntax-decorators-7.12.13.tgz#fac829bf3c7ef4a1bc916257b403e58c6bdaf648" - integrity sha512-Rw6aIXGuqDLr6/LoBBYE57nKOzQpz/aDkKlMqEwH+Vp0MXbG6H/TfRjaY343LKxzAKAMXIHsQ8JzaZKuDZ9MwA== - dependencies: - "@babel/helper-plugin-utils" "^7.12.13" - -"@babel/plugin-syntax-dynamic-import@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz#62bf98b2da3cd21d626154fc96ee5b3cb68eacb3" - integrity sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ== - dependencies: - "@babel/helper-plugin-utils" "^7.8.0" - -"@babel/plugin-syntax-export-namespace-from@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-export-namespace-from/-/plugin-syntax-export-namespace-from-7.8.3.tgz#028964a9ba80dbc094c915c487ad7c4e7a66465a" - integrity sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q== - dependencies: - "@babel/helper-plugin-utils" "^7.8.3" - -"@babel/plugin-syntax-json-strings@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz#01ca21b668cd8218c9e640cb6dd88c5412b2c96a" - integrity sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA== - dependencies: - "@babel/helper-plugin-utils" "^7.8.0" - -"@babel/plugin-syntax-jsx@^7.0.0", "@babel/plugin-syntax-jsx@^7.2.0", "@babel/plugin-syntax-jsx@^7.8.3": - version "7.12.13" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.12.13.tgz#044fb81ebad6698fe62c478875575bcbb9b70f15" - integrity sha512-d4HM23Q1K7oq/SLNmG6mRt85l2csmQ0cHRaxRXjKW0YFdEXqlZ5kzFQKH5Uc3rDJECgu+yCRgPkG04Mm98R/1g== - dependencies: - "@babel/helper-plugin-utils" "^7.12.13" - -"@babel/plugin-syntax-logical-assignment-operators@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz#ca91ef46303530448b906652bac2e9fe9941f699" - integrity sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig== - dependencies: - "@babel/helper-plugin-utils" "^7.10.4" - -"@babel/plugin-syntax-nullish-coalescing-operator@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz#167ed70368886081f74b5c36c65a88c03b66d1a9" - integrity sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ== - dependencies: - "@babel/helper-plugin-utils" "^7.8.0" - -"@babel/plugin-syntax-numeric-separator@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz#b9b070b3e33570cd9fd07ba7fa91c0dd37b9af97" - integrity sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug== - dependencies: - "@babel/helper-plugin-utils" "^7.10.4" - -"@babel/plugin-syntax-object-rest-spread@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz#60e225edcbd98a640332a2e72dd3e66f1af55871" - integrity sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA== - dependencies: - "@babel/helper-plugin-utils" "^7.8.0" - -"@babel/plugin-syntax-optional-catch-binding@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz#6111a265bcfb020eb9efd0fdfd7d26402b9ed6c1" - integrity sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q== - dependencies: - "@babel/helper-plugin-utils" "^7.8.0" - -"@babel/plugin-syntax-optional-chaining@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz#4f69c2ab95167e0180cd5336613f8c5788f7d48a" - integrity sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg== - dependencies: - "@babel/helper-plugin-utils" "^7.8.0" - -"@babel/plugin-syntax-private-property-in-object@^7.14.0": - version "7.14.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-private-property-in-object/-/plugin-syntax-private-property-in-object-7.14.0.tgz#762a4babec61176fec6c88480dec40372b140c0b" - integrity sha512-bda3xF8wGl5/5btF794utNOL0Jw+9jE5C1sLZcoK7c4uonE/y3iQiyG+KbkF3WBV/paX58VCpjhxLPkdj5Fe4w== - dependencies: - "@babel/helper-plugin-utils" "^7.13.0" - -"@babel/plugin-syntax-top-level-await@^7.12.13": - version "7.12.13" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.12.13.tgz#c5f0fa6e249f5b739727f923540cf7a806130178" - integrity sha512-A81F9pDwyS7yM//KwbCSDqy3Uj4NMIurtplxphWxoYtNPov7cJsDkAFNNyVlIZ3jwGycVsurZ+LtOA8gZ376iQ== - dependencies: - "@babel/helper-plugin-utils" "^7.12.13" - -"@babel/plugin-transform-arrow-functions@^7.13.0": - version "7.13.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.13.0.tgz#10a59bebad52d637a027afa692e8d5ceff5e3dae" - integrity sha512-96lgJagobeVmazXFaDrbmCLQxBysKu7U6Do3mLsx27gf5Dk85ezysrs2BZUpXD703U/Su1xTBDxxar2oa4jAGg== - dependencies: - "@babel/helper-plugin-utils" "^7.13.0" - -"@babel/plugin-transform-async-to-generator@^7.13.0": - version "7.13.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.13.0.tgz#8e112bf6771b82bf1e974e5e26806c5c99aa516f" - integrity sha512-3j6E004Dx0K3eGmhxVJxwwI89CTJrce7lg3UrtFuDAVQ/2+SJ/h/aSFOeE6/n0WB1GsOffsJp6MnPQNQ8nmwhg== - dependencies: - "@babel/helper-module-imports" "^7.12.13" - "@babel/helper-plugin-utils" "^7.13.0" - "@babel/helper-remap-async-to-generator" "^7.13.0" - -"@babel/plugin-transform-block-scoped-functions@^7.12.13": - version "7.12.13" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.12.13.tgz#a9bf1836f2a39b4eb6cf09967739de29ea4bf4c4" - integrity sha512-zNyFqbc3kI/fVpqwfqkg6RvBgFpC4J18aKKMmv7KdQ/1GgREapSJAykLMVNwfRGO3BtHj3YQZl8kxCXPcVMVeg== - dependencies: - "@babel/helper-plugin-utils" "^7.12.13" - -"@babel/plugin-transform-block-scoping@^7.14.4": - version "7.14.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.14.4.tgz#caf140b0b2e2462c509553d140e6d0abefb61ed8" - integrity sha512-5KdpkGxsZlTk+fPleDtGKsA+pon28+ptYmMO8GBSa5fHERCJWAzj50uAfCKBqq42HO+Zot6JF1x37CRprwmN4g== - dependencies: - "@babel/helper-plugin-utils" "^7.13.0" - -"@babel/plugin-transform-classes@^7.14.4": - version "7.14.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-classes/-/plugin-transform-classes-7.14.4.tgz#a83c15503fc71a0f99e876fdce7dadbc6575ec3a" - integrity sha512-p73t31SIj6y94RDVX57rafVjttNr8MvKEgs5YFatNB/xC68zM3pyosuOEcQmYsYlyQaGY9R7rAULVRcat5FKJQ== - dependencies: - "@babel/helper-annotate-as-pure" "^7.12.13" - "@babel/helper-function-name" "^7.14.2" - "@babel/helper-optimise-call-expression" "^7.12.13" - "@babel/helper-plugin-utils" "^7.13.0" - "@babel/helper-replace-supers" "^7.14.4" - "@babel/helper-split-export-declaration" "^7.12.13" - globals "^11.1.0" - -"@babel/plugin-transform-computed-properties@^7.13.0": - version "7.13.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.13.0.tgz#845c6e8b9bb55376b1fa0b92ef0bdc8ea06644ed" - integrity sha512-RRqTYTeZkZAz8WbieLTvKUEUxZlUTdmL5KGMyZj7FnMfLNKV4+r5549aORG/mgojRmFlQMJDUupwAMiF2Q7OUg== - dependencies: - "@babel/helper-plugin-utils" "^7.13.0" - -"@babel/plugin-transform-destructuring@^7.14.4": - version "7.14.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.14.4.tgz#acbec502e9951f30f4441eaca1d2f29efade59ed" - integrity sha512-JyywKreTCGTUsL1OKu1A3ms/R1sTP0WxbpXlALeGzF53eB3bxtNkYdMj9SDgK7g6ImPy76J5oYYKoTtQImlhQA== - dependencies: - "@babel/helper-plugin-utils" "^7.13.0" - -"@babel/plugin-transform-dotall-regex@^7.12.13", "@babel/plugin-transform-dotall-regex@^7.4.4": - version "7.12.13" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.12.13.tgz#3f1601cc29905bfcb67f53910f197aeafebb25ad" - integrity sha512-foDrozE65ZFdUC2OfgeOCrEPTxdB3yjqxpXh8CH+ipd9CHd4s/iq81kcUpyH8ACGNEPdFqbtzfgzbT/ZGlbDeQ== - dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.12.13" - "@babel/helper-plugin-utils" "^7.12.13" - -"@babel/plugin-transform-duplicate-keys@^7.12.13": - version "7.12.13" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.12.13.tgz#6f06b87a8b803fd928e54b81c258f0a0033904de" - integrity sha512-NfADJiiHdhLBW3pulJlJI2NB0t4cci4WTZ8FtdIuNc2+8pslXdPtRRAEWqUY+m9kNOk2eRYbTAOipAxlrOcwwQ== - dependencies: - "@babel/helper-plugin-utils" "^7.12.13" - -"@babel/plugin-transform-exponentiation-operator@^7.12.13": - version "7.12.13" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.12.13.tgz#4d52390b9a273e651e4aba6aee49ef40e80cd0a1" - integrity sha512-fbUelkM1apvqez/yYx1/oICVnGo2KM5s63mhGylrmXUxK/IAXSIf87QIxVfZldWf4QsOafY6vV3bX8aMHSvNrA== - dependencies: - "@babel/helper-builder-binary-assignment-operator-visitor" "^7.12.13" - "@babel/helper-plugin-utils" "^7.12.13" - -"@babel/plugin-transform-for-of@^7.13.0": - version "7.13.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.13.0.tgz#c799f881a8091ac26b54867a845c3e97d2696062" - integrity sha512-IHKT00mwUVYE0zzbkDgNRP6SRzvfGCYsOxIRz8KsiaaHCcT9BWIkO+H9QRJseHBLOGBZkHUdHiqj6r0POsdytg== - dependencies: - "@babel/helper-plugin-utils" "^7.13.0" - -"@babel/plugin-transform-function-name@^7.12.13": - version "7.12.13" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.12.13.tgz#bb024452f9aaed861d374c8e7a24252ce3a50051" - integrity sha512-6K7gZycG0cmIwwF7uMK/ZqeCikCGVBdyP2J5SKNCXO5EOHcqi+z7Jwf8AmyDNcBgxET8DrEtCt/mPKPyAzXyqQ== - dependencies: - "@babel/helper-function-name" "^7.12.13" - "@babel/helper-plugin-utils" "^7.12.13" - -"@babel/plugin-transform-literals@^7.12.13": - version "7.12.13" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-literals/-/plugin-transform-literals-7.12.13.tgz#2ca45bafe4a820197cf315794a4d26560fe4bdb9" - integrity sha512-FW+WPjSR7hiUxMcKqyNjP05tQ2kmBCdpEpZHY1ARm96tGQCCBvXKnpjILtDplUnJ/eHZ0lALLM+d2lMFSpYJrQ== - dependencies: - "@babel/helper-plugin-utils" "^7.12.13" - -"@babel/plugin-transform-member-expression-literals@^7.12.13": - version "7.12.13" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.12.13.tgz#5ffa66cd59b9e191314c9f1f803b938e8c081e40" - integrity sha512-kxLkOsg8yir4YeEPHLuO2tXP9R/gTjpuTOjshqSpELUN3ZAg2jfDnKUvzzJxObun38sw3wm4Uu69sX/zA7iRvg== - dependencies: - "@babel/helper-plugin-utils" "^7.12.13" - -"@babel/plugin-transform-modules-amd@^7.14.2": - version "7.14.2" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.14.2.tgz#6622806fe1a7c07a1388444222ef9535f2ca17b0" - integrity sha512-hPC6XBswt8P3G2D1tSV2HzdKvkqOpmbyoy+g73JG0qlF/qx2y3KaMmXb1fLrpmWGLZYA0ojCvaHdzFWjlmV+Pw== - dependencies: - "@babel/helper-module-transforms" "^7.14.2" - "@babel/helper-plugin-utils" "^7.13.0" - babel-plugin-dynamic-import-node "^2.3.3" - -"@babel/plugin-transform-modules-commonjs@^7.14.0": - version "7.14.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.14.0.tgz#52bc199cb581e0992edba0f0f80356467587f161" - integrity sha512-EX4QePlsTaRZQmw9BsoPeyh5OCtRGIhwfLquhxGp5e32w+dyL8htOcDwamlitmNFK6xBZYlygjdye9dbd9rUlQ== - dependencies: - "@babel/helper-module-transforms" "^7.14.0" - "@babel/helper-plugin-utils" "^7.13.0" - "@babel/helper-simple-access" "^7.13.12" - babel-plugin-dynamic-import-node "^2.3.3" - -"@babel/plugin-transform-modules-systemjs@^7.13.8": - version "7.13.8" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.13.8.tgz#6d066ee2bff3c7b3d60bf28dec169ad993831ae3" - integrity sha512-hwqctPYjhM6cWvVIlOIe27jCIBgHCsdH2xCJVAYQm7V5yTMoilbVMi9f6wKg0rpQAOn6ZG4AOyvCqFF/hUh6+A== - dependencies: - "@babel/helper-hoist-variables" "^7.13.0" - "@babel/helper-module-transforms" "^7.13.0" - "@babel/helper-plugin-utils" "^7.13.0" - "@babel/helper-validator-identifier" "^7.12.11" - babel-plugin-dynamic-import-node "^2.3.3" - -"@babel/plugin-transform-modules-umd@^7.14.0": - version "7.14.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.14.0.tgz#2f8179d1bbc9263665ce4a65f305526b2ea8ac34" - integrity sha512-nPZdnWtXXeY7I87UZr9VlsWme3Y0cfFFE41Wbxz4bbaexAjNMInXPFUpRRUJ8NoMm0Cw+zxbqjdPmLhcjfazMw== - dependencies: - "@babel/helper-module-transforms" "^7.14.0" - "@babel/helper-plugin-utils" "^7.13.0" - -"@babel/plugin-transform-named-capturing-groups-regex@^7.12.13": - version "7.12.13" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.12.13.tgz#2213725a5f5bbbe364b50c3ba5998c9599c5c9d9" - integrity sha512-Xsm8P2hr5hAxyYblrfACXpQKdQbx4m2df9/ZZSQ8MAhsadw06+jW7s9zsSw6he+mJZXRlVMyEnVktJo4zjk1WA== - dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.12.13" - -"@babel/plugin-transform-new-target@^7.12.13": - version "7.12.13" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.12.13.tgz#e22d8c3af24b150dd528cbd6e685e799bf1c351c" - integrity sha512-/KY2hbLxrG5GTQ9zzZSc3xWiOy379pIETEhbtzwZcw9rvuaVV4Fqy7BYGYOWZnaoXIQYbbJ0ziXLa/sKcGCYEQ== - dependencies: - "@babel/helper-plugin-utils" "^7.12.13" - -"@babel/plugin-transform-object-super@^7.12.13": - version "7.12.13" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.12.13.tgz#b4416a2d63b8f7be314f3d349bd55a9c1b5171f7" - integrity sha512-JzYIcj3XtYspZDV8j9ulnoMPZZnF/Cj0LUxPOjR89BdBVx+zYJI9MdMIlUZjbXDX+6YVeS6I3e8op+qQ3BYBoQ== - dependencies: - "@babel/helper-plugin-utils" "^7.12.13" - "@babel/helper-replace-supers" "^7.12.13" - -"@babel/plugin-transform-parameters@^7.14.2": - version "7.14.2" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.14.2.tgz#e4290f72e0e9e831000d066427c4667098decc31" - integrity sha512-NxoVmA3APNCC1JdMXkdYXuQS+EMdqy0vIwyDHeKHiJKRxmp1qGSdb0JLEIoPRhkx6H/8Qi3RJ3uqOCYw8giy9A== - dependencies: - "@babel/helper-plugin-utils" "^7.13.0" - -"@babel/plugin-transform-property-literals@^7.12.13": - version "7.12.13" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.12.13.tgz#4e6a9e37864d8f1b3bc0e2dce7bf8857db8b1a81" - integrity sha512-nqVigwVan+lR+g8Fj8Exl0UQX2kymtjcWfMOYM1vTYEKujeyv2SkMgazf2qNcK7l4SDiKyTA/nHCPqL4e2zo1A== - dependencies: - "@babel/helper-plugin-utils" "^7.12.13" - -"@babel/plugin-transform-regenerator@^7.13.15": - version "7.13.15" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.13.15.tgz#e5eb28945bf8b6563e7f818945f966a8d2997f39" - integrity sha512-Bk9cOLSz8DiurcMETZ8E2YtIVJbFCPGW28DJWUakmyVWtQSm6Wsf0p4B4BfEr/eL2Nkhe/CICiUiMOCi1TPhuQ== - dependencies: - regenerator-transform "^0.14.2" - -"@babel/plugin-transform-reserved-words@^7.12.13": - version "7.12.13" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.12.13.tgz#7d9988d4f06e0fe697ea1d9803188aa18b472695" - integrity sha512-xhUPzDXxZN1QfiOy/I5tyye+TRz6lA7z6xaT4CLOjPRMVg1ldRf0LHw0TDBpYL4vG78556WuHdyO9oi5UmzZBg== - dependencies: - "@babel/helper-plugin-utils" "^7.12.13" - -"@babel/plugin-transform-runtime@^7.11.0": - version "7.14.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.14.3.tgz#1fd885a2d0de1d3c223795a4e9be72c2db4515cf" - integrity sha512-t960xbi8wpTFE623ef7sd+UpEC5T6EEguQlTBJDEO05+XwnIWVfuqLw/vdLWY6IdFmtZE+65CZAfByT39zRpkg== - dependencies: - "@babel/helper-module-imports" "^7.13.12" - "@babel/helper-plugin-utils" "^7.13.0" - babel-plugin-polyfill-corejs2 "^0.2.0" - babel-plugin-polyfill-corejs3 "^0.2.0" - babel-plugin-polyfill-regenerator "^0.2.0" - semver "^6.3.0" - -"@babel/plugin-transform-shorthand-properties@^7.12.13": - version "7.12.13" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.12.13.tgz#db755732b70c539d504c6390d9ce90fe64aff7ad" - integrity sha512-xpL49pqPnLtf0tVluuqvzWIgLEhuPpZzvs2yabUHSKRNlN7ScYU7aMlmavOeyXJZKgZKQRBlh8rHbKiJDraTSw== - dependencies: - "@babel/helper-plugin-utils" "^7.12.13" - -"@babel/plugin-transform-spread@^7.13.0": - version "7.13.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-spread/-/plugin-transform-spread-7.13.0.tgz#84887710e273c1815ace7ae459f6f42a5d31d5fd" - integrity sha512-V6vkiXijjzYeFmQTr3dBxPtZYLPcUfY34DebOU27jIl2M/Y8Egm52Hw82CSjjPqd54GTlJs5x+CR7HeNr24ckg== - dependencies: - "@babel/helper-plugin-utils" "^7.13.0" - "@babel/helper-skip-transparent-expression-wrappers" "^7.12.1" - -"@babel/plugin-transform-sticky-regex@^7.12.13": - version "7.12.13" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.12.13.tgz#760ffd936face73f860ae646fb86ee82f3d06d1f" - integrity sha512-Jc3JSaaWT8+fr7GRvQP02fKDsYk4K/lYwWq38r/UGfaxo89ajud321NH28KRQ7xy1Ybc0VUE5Pz8psjNNDUglg== - dependencies: - "@babel/helper-plugin-utils" "^7.12.13" - -"@babel/plugin-transform-template-literals@^7.13.0": - version "7.13.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.13.0.tgz#a36049127977ad94438dee7443598d1cefdf409d" - integrity sha512-d67umW6nlfmr1iehCcBv69eSUSySk1EsIS8aTDX4Xo9qajAh6mYtcl4kJrBkGXuxZPEgVr7RVfAvNW6YQkd4Mw== - dependencies: - "@babel/helper-plugin-utils" "^7.13.0" - -"@babel/plugin-transform-typeof-symbol@^7.12.13": - version "7.12.13" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.12.13.tgz#785dd67a1f2ea579d9c2be722de8c84cb85f5a7f" - integrity sha512-eKv/LmUJpMnu4npgfvs3LiHhJua5fo/CysENxa45YCQXZwKnGCQKAg87bvoqSW1fFT+HA32l03Qxsm8ouTY3ZQ== - dependencies: - "@babel/helper-plugin-utils" "^7.12.13" - -"@babel/plugin-transform-unicode-escapes@^7.12.13": - version "7.12.13" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.12.13.tgz#840ced3b816d3b5127dd1d12dcedc5dead1a5e74" - integrity sha512-0bHEkdwJ/sN/ikBHfSmOXPypN/beiGqjo+o4/5K+vxEFNPRPdImhviPakMKG4x96l85emoa0Z6cDflsdBusZbw== - dependencies: - "@babel/helper-plugin-utils" "^7.12.13" - -"@babel/plugin-transform-unicode-regex@^7.12.13": - version "7.12.13" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.12.13.tgz#b52521685804e155b1202e83fc188d34bb70f5ac" - integrity sha512-mDRzSNY7/zopwisPZ5kM9XKCfhchqIYwAKRERtEnhYscZB79VRekuRSoYbN0+KVe3y8+q1h6A4svXtP7N+UoCA== - dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.12.13" - "@babel/helper-plugin-utils" "^7.12.13" - -"@babel/preset-env@^7.11.0", "@babel/preset-env@^7.8.4": - version "7.14.4" - resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.14.4.tgz#73fc3228c59727e5e974319156f304f0d6685a2d" - integrity sha512-GwMMsuAnDtULyOtuxHhzzuSRxFeP0aR/LNzrHRzP8y6AgDNgqnrfCCBm/1cRdTU75tRs28Eh76poHLcg9VF0LA== - dependencies: - "@babel/compat-data" "^7.14.4" - "@babel/helper-compilation-targets" "^7.14.4" - "@babel/helper-plugin-utils" "^7.13.0" - "@babel/helper-validator-option" "^7.12.17" - "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining" "^7.13.12" - "@babel/plugin-proposal-async-generator-functions" "^7.14.2" - "@babel/plugin-proposal-class-properties" "^7.13.0" - "@babel/plugin-proposal-class-static-block" "^7.14.3" - "@babel/plugin-proposal-dynamic-import" "^7.14.2" - "@babel/plugin-proposal-export-namespace-from" "^7.14.2" - "@babel/plugin-proposal-json-strings" "^7.14.2" - "@babel/plugin-proposal-logical-assignment-operators" "^7.14.2" - "@babel/plugin-proposal-nullish-coalescing-operator" "^7.14.2" - "@babel/plugin-proposal-numeric-separator" "^7.14.2" - "@babel/plugin-proposal-object-rest-spread" "^7.14.4" - "@babel/plugin-proposal-optional-catch-binding" "^7.14.2" - "@babel/plugin-proposal-optional-chaining" "^7.14.2" - "@babel/plugin-proposal-private-methods" "^7.13.0" - "@babel/plugin-proposal-private-property-in-object" "^7.14.0" - "@babel/plugin-proposal-unicode-property-regex" "^7.12.13" - "@babel/plugin-syntax-async-generators" "^7.8.4" - "@babel/plugin-syntax-class-properties" "^7.12.13" - "@babel/plugin-syntax-class-static-block" "^7.12.13" - "@babel/plugin-syntax-dynamic-import" "^7.8.3" - "@babel/plugin-syntax-export-namespace-from" "^7.8.3" - "@babel/plugin-syntax-json-strings" "^7.8.3" - "@babel/plugin-syntax-logical-assignment-operators" "^7.10.4" - "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.3" - "@babel/plugin-syntax-numeric-separator" "^7.10.4" - "@babel/plugin-syntax-object-rest-spread" "^7.8.3" - "@babel/plugin-syntax-optional-catch-binding" "^7.8.3" - "@babel/plugin-syntax-optional-chaining" "^7.8.3" - "@babel/plugin-syntax-private-property-in-object" "^7.14.0" - "@babel/plugin-syntax-top-level-await" "^7.12.13" - "@babel/plugin-transform-arrow-functions" "^7.13.0" - "@babel/plugin-transform-async-to-generator" "^7.13.0" - "@babel/plugin-transform-block-scoped-functions" "^7.12.13" - "@babel/plugin-transform-block-scoping" "^7.14.4" - "@babel/plugin-transform-classes" "^7.14.4" - "@babel/plugin-transform-computed-properties" "^7.13.0" - "@babel/plugin-transform-destructuring" "^7.14.4" - "@babel/plugin-transform-dotall-regex" "^7.12.13" - "@babel/plugin-transform-duplicate-keys" "^7.12.13" - "@babel/plugin-transform-exponentiation-operator" "^7.12.13" - "@babel/plugin-transform-for-of" "^7.13.0" - "@babel/plugin-transform-function-name" "^7.12.13" - "@babel/plugin-transform-literals" "^7.12.13" - "@babel/plugin-transform-member-expression-literals" "^7.12.13" - "@babel/plugin-transform-modules-amd" "^7.14.2" - "@babel/plugin-transform-modules-commonjs" "^7.14.0" - "@babel/plugin-transform-modules-systemjs" "^7.13.8" - "@babel/plugin-transform-modules-umd" "^7.14.0" - "@babel/plugin-transform-named-capturing-groups-regex" "^7.12.13" - "@babel/plugin-transform-new-target" "^7.12.13" - "@babel/plugin-transform-object-super" "^7.12.13" - "@babel/plugin-transform-parameters" "^7.14.2" - "@babel/plugin-transform-property-literals" "^7.12.13" - "@babel/plugin-transform-regenerator" "^7.13.15" - "@babel/plugin-transform-reserved-words" "^7.12.13" - "@babel/plugin-transform-shorthand-properties" "^7.12.13" - "@babel/plugin-transform-spread" "^7.13.0" - "@babel/plugin-transform-sticky-regex" "^7.12.13" - "@babel/plugin-transform-template-literals" "^7.13.0" - "@babel/plugin-transform-typeof-symbol" "^7.12.13" - "@babel/plugin-transform-unicode-escapes" "^7.12.13" - "@babel/plugin-transform-unicode-regex" "^7.12.13" - "@babel/preset-modules" "^0.1.4" - "@babel/types" "^7.14.4" - babel-plugin-polyfill-corejs2 "^0.2.0" - babel-plugin-polyfill-corejs3 "^0.2.0" - babel-plugin-polyfill-regenerator "^0.2.0" - core-js-compat "^3.9.0" - semver "^6.3.0" - -"@babel/preset-modules@^0.1.4": - version "0.1.4" - resolved "https://registry.yarnpkg.com/@babel/preset-modules/-/preset-modules-0.1.4.tgz#362f2b68c662842970fdb5e254ffc8fc1c2e415e" - integrity sha512-J36NhwnfdzpmH41M1DrnkkgAqhZaqr/NBdPfQ677mLzlaXo+oDiv1deyCDtgAhz8p328otdob0Du7+xgHGZbKg== - dependencies: - "@babel/helper-plugin-utils" "^7.0.0" - "@babel/plugin-proposal-unicode-property-regex" "^7.4.4" - "@babel/plugin-transform-dotall-regex" "^7.4.4" - "@babel/types" "^7.4.4" - esutils "^2.0.2" - -"@babel/runtime@^7.11.0", "@babel/runtime@^7.11.2", "@babel/runtime@^7.5.5", "@babel/runtime@^7.8.4": - version "7.14.0" - resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.14.0.tgz#46794bc20b612c5f75e62dd071e24dfd95f1cbe6" - integrity sha512-JELkvo/DlpNdJ7dlyw/eY7E0suy5i5GQH+Vlxaq1nsNJ+H7f4Vtv3jMeCEgRhZZQFXTjldYfQgv2qmM6M1v5wA== - dependencies: - regenerator-runtime "^0.13.4" - -"@babel/template@^7.0.0", "@babel/template@^7.12.13": - version "7.12.13" - resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.12.13.tgz#530265be8a2589dbb37523844c5bcb55947fb327" - integrity sha512-/7xxiGA57xMo/P2GVvdEumr8ONhFOhfgq2ihK3h1e6THqzTAkHbkXgB0xI9yeTfIUoH3+oAeHhqm/I43OTbbjA== - dependencies: - "@babel/code-frame" "^7.12.13" - "@babel/parser" "^7.12.13" - "@babel/types" "^7.12.13" - -"@babel/traverse@^7.0.0", "@babel/traverse@^7.13.0", "@babel/traverse@^7.13.15", "@babel/traverse@^7.14.0", "@babel/traverse@^7.14.2", "@babel/traverse@^7.7.0": - version "7.14.2" - resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.14.2.tgz#9201a8d912723a831c2679c7ebbf2fe1416d765b" - integrity sha512-TsdRgvBFHMyHOOzcP9S6QU0QQtjxlRpEYOy3mcCO5RgmC305ki42aSAmfZEMSSYBla2oZ9BMqYlncBaKmD/7iA== - dependencies: - "@babel/code-frame" "^7.12.13" - "@babel/generator" "^7.14.2" - "@babel/helper-function-name" "^7.14.2" - "@babel/helper-split-export-declaration" "^7.12.13" - "@babel/parser" "^7.14.2" - "@babel/types" "^7.14.2" - debug "^4.1.0" - globals "^11.1.0" - -"@babel/types@^7.0.0", "@babel/types@^7.12.0", "@babel/types@^7.12.1", "@babel/types@^7.12.13", "@babel/types@^7.13.0", "@babel/types@^7.13.12", "@babel/types@^7.13.16", "@babel/types@^7.14.0", "@babel/types@^7.14.2", "@babel/types@^7.14.4", "@babel/types@^7.4.4", "@babel/types@^7.7.0": - version "7.14.4" - resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.14.4.tgz#bfd6980108168593b38b3eb48a24aa026b919bc0" - integrity sha512-lCj4aIs0xUefJFQnwwQv2Bxg7Omd6bgquZ6LGC+gGMh6/s5qDVfjuCMlDmYQ15SLsWHd9n+X3E75lKIhl5Lkiw== - dependencies: - "@babel/helper-validator-identifier" "^7.14.0" - to-fast-properties "^2.0.0" - -"@eslint/eslintrc@^0.4.2": - version "0.4.2" - resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-0.4.2.tgz#f63d0ef06f5c0c57d76c4ab5f63d3835c51b0179" - integrity sha512-8nmGq/4ycLpIwzvhI4tNDmQztZ8sp+hI7cyG8i1nQDhkAbRzHpXPidRAHlNvCZQpJTKw5ItIpMw9RSToGF00mg== - dependencies: - ajv "^6.12.4" - debug "^4.1.1" - espree "^7.3.0" - globals "^13.9.0" - ignore "^4.0.6" - import-fresh "^3.2.1" - js-yaml "^3.13.1" - minimatch "^3.0.4" - strip-json-comments "^3.1.1" - -"@hapi/address@2.x.x", "@hapi/address@^2.1.2": - version "2.1.4" - resolved "https://registry.yarnpkg.com/@hapi/address/-/address-2.1.4.tgz#5d67ed43f3fd41a69d4b9ff7b56e7c0d1d0a81e5" - integrity sha512-QD1PhQk+s31P1ixsX0H0Suoupp3VMXzIVMSwobR3F3MSUO2YCV0B7xqLcUw/Bh8yuvd3LhpyqLQWTNcRmp6IdQ== - -"@hapi/bourne@1.x.x": - version "1.3.2" - resolved "https://registry.yarnpkg.com/@hapi/bourne/-/bourne-1.3.2.tgz#0a7095adea067243ce3283e1b56b8a8f453b242a" - integrity sha512-1dVNHT76Uu5N3eJNTYcvxee+jzX4Z9lfciqRRHCU27ihbUcYi+iSc2iml5Ke1LXe1SyJCLA0+14Jh4tXJgOppA== - -"@hapi/formula@^1.2.0": - version "1.2.0" - resolved "https://registry.yarnpkg.com/@hapi/formula/-/formula-1.2.0.tgz#994649c7fea1a90b91a0a1e6d983523f680e10cd" - integrity sha512-UFbtbGPjstz0eWHb+ga/GM3Z9EzqKXFWIbSOFURU0A/Gku0Bky4bCk9/h//K2Xr3IrCfjFNhMm4jyZ5dbCewGA== - -"@hapi/hoek@8.x.x", "@hapi/hoek@^8.2.4", "@hapi/hoek@^8.3.0": - version "8.5.1" - resolved "https://registry.yarnpkg.com/@hapi/hoek/-/hoek-8.5.1.tgz#fde96064ca446dec8c55a8c2f130957b070c6e06" - integrity sha512-yN7kbciD87WzLGc5539Tn0sApjyiGHAJgKvG9W8C7O+6c7qmoQMfVs0W4bX17eqz6C78QJqqFrtgdK5EWf6Qow== - -"@hapi/joi@^15.0.1", "@hapi/joi@^15.1.0": - version "15.1.1" - resolved "https://registry.yarnpkg.com/@hapi/joi/-/joi-15.1.1.tgz#c675b8a71296f02833f8d6d243b34c57b8ce19d7" - integrity sha512-entf8ZMOK8sc+8YfeOlM8pCfg3b5+WZIKBfUaaJT8UsjAAPjartzxIYm3TIbjvA4u+u++KbcXD38k682nVHDAQ== - dependencies: - "@hapi/address" "2.x.x" - "@hapi/bourne" "1.x.x" - "@hapi/hoek" "8.x.x" - "@hapi/topo" "3.x.x" - -"@hapi/joi@^16.1.8": - version "16.1.8" - resolved "https://registry.yarnpkg.com/@hapi/joi/-/joi-16.1.8.tgz#84c1f126269489871ad4e2decc786e0adef06839" - integrity sha512-wAsVvTPe+FwSrsAurNt5vkg3zo+TblvC5Bb1zMVK6SJzZqw9UrJnexxR+76cpePmtUZKHAPxcQ2Bf7oVHyahhg== - dependencies: - "@hapi/address" "^2.1.2" - "@hapi/formula" "^1.2.0" - "@hapi/hoek" "^8.2.4" - "@hapi/pinpoint" "^1.0.2" - "@hapi/topo" "^3.1.3" - -"@hapi/pinpoint@^1.0.2": - version "1.0.2" - resolved "https://registry.yarnpkg.com/@hapi/pinpoint/-/pinpoint-1.0.2.tgz#025b7a36dbbf4d35bf1acd071c26b20ef41e0d13" - integrity sha512-dtXC/WkZBfC5vxscazuiJ6iq4j9oNx1SHknmIr8hofarpKUZKmlUVYVIhNVzIEgK5Wrc4GMHL5lZtt1uS2flmQ== - -"@hapi/topo@3.x.x", "@hapi/topo@^3.1.3": - version "3.1.6" - resolved "https://registry.yarnpkg.com/@hapi/topo/-/topo-3.1.6.tgz#68d935fa3eae7fdd5ab0d7f953f3205d8b2bfc29" - integrity sha512-tAag0jEcjwH+P2quUfipd7liWCNX2F8NvYjQp2wtInsZxnMlypdw0FtAOLxtvvkO+GSRRbmNi8m/5y42PQJYCQ== - dependencies: - "@hapi/hoek" "^8.3.0" - -"@intervolga/optimize-cssnano-plugin@^1.0.5": - version "1.0.6" - resolved "https://registry.yarnpkg.com/@intervolga/optimize-cssnano-plugin/-/optimize-cssnano-plugin-1.0.6.tgz#be7c7846128b88f6a9b1d1261a0ad06eb5c0fdf8" - integrity sha512-zN69TnSr0viRSU6cEDIcuPcP67QcpQ6uHACg58FiN9PDrU6SLyGW3MR4tiISbYxy1kDWAVPwD+XwQTWE5cigAA== - dependencies: - cssnano "^4.0.0" - cssnano-preset-default "^4.0.0" - postcss "^7.0.0" - -"@kazupon/vue-i18n-loader@^0.5.0": - version "0.5.0" - resolved "https://registry.yarnpkg.com/@kazupon/vue-i18n-loader/-/vue-i18n-loader-0.5.0.tgz#64819fc9dbe21bac523e3436b7e15c32bcd33b92" - integrity sha512-Tp2mXKemf9/RBhI9CW14JjR9oKjL2KH7tV6S0eKEjIBuQBAOFNuPJu3ouacmz9hgoXbNp+nusw3MVQmxZWFR9g== - dependencies: - js-yaml "^3.13.1" - json5 "^2.1.1" - -"@mrmlnc/readdir-enhanced@^2.2.1": - version "2.2.1" - resolved "https://registry.yarnpkg.com/@mrmlnc/readdir-enhanced/-/readdir-enhanced-2.2.1.tgz#524af240d1a360527b730475ecfa1344aa540dde" - integrity sha512-bPHp6Ji8b41szTOcaP63VlnbbO5Ny6dwAATtY6JTjh5N2OLrb5Qk/Th5cRkRQhkWCt+EJsYrNB0MiL+Gpn6e3g== - dependencies: - call-me-maybe "^1.0.1" - glob-to-regexp "^0.3.0" - -"@nodelib/fs.scandir@2.1.5": - version "2.1.5" - resolved "https://registry.yarnpkg.com/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz#7619c2eb21b25483f6d167548b4cfd5a7488c3d5" - integrity sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g== - dependencies: - "@nodelib/fs.stat" "2.0.5" - run-parallel "^1.1.9" - -"@nodelib/fs.stat@2.0.5", "@nodelib/fs.stat@^2.0.2": - version "2.0.5" - resolved "https://registry.yarnpkg.com/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz#5bd262af94e9d25bd1e71b05deed44876a222e8b" - integrity sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A== - -"@nodelib/fs.stat@^1.1.2": - version "1.1.3" - resolved "https://registry.yarnpkg.com/@nodelib/fs.stat/-/fs.stat-1.1.3.tgz#2b5a3ab3f918cca48a8c754c08168e3f03eba61b" - integrity sha512-shAmDyaQC4H92APFoIaVDHCx5bStIocgvbwQyxPRrbUY20V1EYTbSDchWbuwlMG3V17cprZhA6+78JfB+3DTPw== - -"@nodelib/fs.walk@^1.2.3": - version "1.2.7" - resolved "https://registry.yarnpkg.com/@nodelib/fs.walk/-/fs.walk-1.2.7.tgz#94c23db18ee4653e129abd26fb06f870ac9e1ee2" - integrity sha512-BTIhocbPBSrRmHxOAJFtR18oLhxTtAFDAvL8hY1S3iU8k+E60W/YFs4jrixGzQjMpF4qPXxIQHcjVD9dz1C2QA== - dependencies: - "@nodelib/fs.scandir" "2.1.5" - fastq "^1.6.0" - -"@nuxt/opencollective@^0.3.2": - version "0.3.2" - resolved "https://registry.yarnpkg.com/@nuxt/opencollective/-/opencollective-0.3.2.tgz#83cb70cdb2bac5fad6f8c93529e7b11187d49c02" - integrity sha512-XG7rUdXG9fcafu9KTDIYjJSkRO38EwjlKYIb5TQ/0WDbiTUTtUtgncMscKOYzfsY86kGs05pAuMOR+3Fi0aN3A== - dependencies: - chalk "^4.1.0" - consola "^2.15.0" - node-fetch "^2.6.1" - -"@rollup/plugin-babel@^5.2.0": - version "5.3.0" - resolved "https://registry.yarnpkg.com/@rollup/plugin-babel/-/plugin-babel-5.3.0.tgz#9cb1c5146ddd6a4968ad96f209c50c62f92f9879" - integrity sha512-9uIC8HZOnVLrLHxayq/PTzw+uS25E14KPUBh5ktF+18Mjo5yK0ToMMx6epY0uEgkjwJw0aBW4x2horYXh8juWw== - dependencies: - "@babel/helper-module-imports" "^7.10.4" - "@rollup/pluginutils" "^3.1.0" - -"@rollup/plugin-node-resolve@^11.2.1": - version "11.2.1" - resolved "https://registry.yarnpkg.com/@rollup/plugin-node-resolve/-/plugin-node-resolve-11.2.1.tgz#82aa59397a29cd4e13248b106e6a4a1880362a60" - integrity sha512-yc2n43jcqVyGE2sqV5/YCmocy9ArjVAP/BeXyTtADTBBX6V0e5UMqwO8CdQ0kzjb6zu5P1qMzsScCMRvE9OlVg== - dependencies: - "@rollup/pluginutils" "^3.1.0" - "@types/resolve" "1.17.1" - builtin-modules "^3.1.0" - deepmerge "^4.2.2" - is-module "^1.0.0" - resolve "^1.19.0" - -"@rollup/plugin-node-resolve@^7.1.1": - version "7.1.3" - resolved "https://registry.yarnpkg.com/@rollup/plugin-node-resolve/-/plugin-node-resolve-7.1.3.tgz#80de384edfbd7bfc9101164910f86078151a3eca" - integrity sha512-RxtSL3XmdTAE2byxekYLnx+98kEUOrPHF/KRVjLH+DEIHy6kjIw7YINQzn+NXiH/NTrQLAwYs0GWB+csWygA9Q== - dependencies: - "@rollup/pluginutils" "^3.0.8" - "@types/resolve" "0.0.8" - builtin-modules "^3.1.0" - is-module "^1.0.0" - resolve "^1.14.2" - -"@rollup/plugin-replace@^2.3.1", "@rollup/plugin-replace@^2.4.1": - version "2.4.2" - resolved "https://registry.yarnpkg.com/@rollup/plugin-replace/-/plugin-replace-2.4.2.tgz#a2d539314fbc77c244858faa523012825068510a" - integrity sha512-IGcu+cydlUMZ5En85jxHH4qj2hta/11BHq95iHEyb2sbgiN0eCdzvUcHw5gt9pBL5lTi4JDYJ1acCoMGpTvEZg== - dependencies: - "@rollup/pluginutils" "^3.1.0" - magic-string "^0.25.7" - -"@rollup/pluginutils@^3.0.8", "@rollup/pluginutils@^3.1.0": - version "3.1.0" - resolved "https://registry.yarnpkg.com/@rollup/pluginutils/-/pluginutils-3.1.0.tgz#706b4524ee6dc8b103b3c995533e5ad680c02b9b" - integrity sha512-GksZ6pr6TpIjHm8h9lSQ8pi8BE9VeubNT0OMJ3B5uZJ8pz73NPiqOtCog/x2/QzM1ENChPKxMDhiQuRHsqc+lg== - dependencies: - "@types/estree" "0.0.39" - estree-walker "^1.0.1" - picomatch "^2.2.2" - -"@soda/friendly-errors-webpack-plugin@^1.7.1": - version "1.8.0" - resolved "https://registry.yarnpkg.com/@soda/friendly-errors-webpack-plugin/-/friendly-errors-webpack-plugin-1.8.0.tgz#84751d82a93019d5c92c0cf0e45ac59087cd2240" - integrity sha512-RLotfx6k1+nfLacwNCenj7VnTMPxVwYKoGOcffMFoJDKM8tXzBiCN0hMHFJNnoAojduYAsxuiMm0EOMixgiRow== - dependencies: - chalk "^2.4.2" - error-stack-parser "^2.0.2" - string-width "^2.0.0" - strip-ansi "^5" - -"@soda/get-current-script@^1.0.0": - version "1.0.2" - resolved "https://registry.yarnpkg.com/@soda/get-current-script/-/get-current-script-1.0.2.tgz#a53515db25d8038374381b73af20bb4f2e508d87" - integrity sha512-T7VNNlYVM1SgQ+VsMYhnDkcGmWhQdL0bDyGm5TlQ3GBXnJscEClUUOKduWTmm2zCnvNLC1hc3JpuXjs/nFOc5w== - -"@surma/rollup-plugin-off-main-thread@^1.1.1", "@surma/rollup-plugin-off-main-thread@^1.4.1": - version "1.4.2" - resolved "https://registry.yarnpkg.com/@surma/rollup-plugin-off-main-thread/-/rollup-plugin-off-main-thread-1.4.2.tgz#e6786b6af5799f82f7ab3a82e53f6182d2b91a58" - integrity sha512-yBMPqmd1yEJo/280PAMkychuaALyQ9Lkb5q1ck3mjJrFuEobIfhnQ4J3mbvBoISmR3SWMWV+cGB/I0lCQee79A== - dependencies: - ejs "^2.6.1" - magic-string "^0.25.0" - -"@types/body-parser@*": - version "1.19.0" - resolved "https://registry.yarnpkg.com/@types/body-parser/-/body-parser-1.19.0.tgz#0685b3c47eb3006ffed117cdd55164b61f80538f" - integrity sha512-W98JrE0j2K78swW4ukqMleo8R7h/pFETjM2DQ90MF6XK2i4LO4W3gQ71Lt4w3bfm2EvVSyWHplECvB5sK22yFQ== - dependencies: - "@types/connect" "*" - "@types/node" "*" - -"@types/connect-history-api-fallback@*": - version "1.3.4" - resolved "https://registry.yarnpkg.com/@types/connect-history-api-fallback/-/connect-history-api-fallback-1.3.4.tgz#8c0f0e6e5d8252b699f5a662f51bdf82fd9d8bb8" - integrity sha512-Kf8v0wljR5GSCOCF/VQWdV3ZhKOVA73drXtY3geMTQgHy9dgqQ0dLrf31M0hcuWkhFzK5sP0kkS3mJzcKVtZbw== - dependencies: - "@types/express-serve-static-core" "*" - "@types/node" "*" - -"@types/connect@*": - version "3.4.34" - resolved "https://registry.yarnpkg.com/@types/connect/-/connect-3.4.34.tgz#170a40223a6d666006d93ca128af2beb1d9b1901" - integrity sha512-ePPA/JuI+X0vb+gSWlPKOY0NdNAie/rPUqX2GUPpbZwiKTkSPhjXWuee47E4MtE54QVzGCQMQkAL6JhV2E1+cQ== - dependencies: - "@types/node" "*" - -"@types/estree@*": - version "0.0.48" - resolved "https://registry.yarnpkg.com/@types/estree/-/estree-0.0.48.tgz#18dc8091b285df90db2f25aa7d906cfc394b7f74" - integrity sha512-LfZwXoGUDo0C3me81HXgkBg5CTQYb6xzEl+fNmbO4JdRiSKQ8A0GD1OBBvKAIsbCUgoyAty7m99GqqMQe784ew== - -"@types/estree@0.0.39": - version "0.0.39" - resolved "https://registry.yarnpkg.com/@types/estree/-/estree-0.0.39.tgz#e177e699ee1b8c22d23174caaa7422644389509f" - integrity sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw== - -"@types/express-serve-static-core@*", "@types/express-serve-static-core@^4.17.18": - version "4.17.21" - resolved "https://registry.yarnpkg.com/@types/express-serve-static-core/-/express-serve-static-core-4.17.21.tgz#a427278e106bca77b83ad85221eae709a3414d42" - integrity sha512-gwCiEZqW6f7EoR8TTEfalyEhb1zA5jQJnRngr97+3pzMaO1RKoI1w2bw07TK72renMUVWcWS5mLI6rk1NqN0nA== - dependencies: - "@types/node" "*" - "@types/qs" "*" - "@types/range-parser" "*" - -"@types/express@*": - version "4.17.12" - resolved "https://registry.yarnpkg.com/@types/express/-/express-4.17.12.tgz#4bc1bf3cd0cfe6d3f6f2853648b40db7d54de350" - integrity sha512-pTYas6FrP15B1Oa0bkN5tQMNqOcVXa9j4FTFtO8DWI9kppKib+6NJtfTOOLcwxuuYvcX2+dVG6et1SxW/Kc17Q== - dependencies: - "@types/body-parser" "*" - "@types/express-serve-static-core" "^4.17.18" - "@types/qs" "*" - "@types/serve-static" "*" - -"@types/glob@^7.1.1": - version "7.1.3" - resolved "https://registry.yarnpkg.com/@types/glob/-/glob-7.1.3.tgz#e6ba80f36b7daad2c685acd9266382e68985c183" - integrity sha512-SEYeGAIQIQX8NN6LDKprLjbrd5dARM5EXsd8GI/A5l0apYI1fGMWgPHSe4ZKL4eozlAyI+doUE9XbYS4xCkQ1w== - dependencies: - "@types/minimatch" "*" - "@types/node" "*" - -"@types/http-proxy@^1.17.5": - version "1.17.6" - resolved "https://registry.yarnpkg.com/@types/http-proxy/-/http-proxy-1.17.6.tgz#62dc3fade227d6ac2862c8f19ee0da9da9fd8616" - integrity sha512-+qsjqR75S/ib0ig0R9WN+CDoZeOBU6F2XLewgC4KVgdXiNHiKKHFEMRHOrs5PbYE97D5vataw5wPj4KLYfUkuQ== - dependencies: - "@types/node" "*" - -"@types/json-schema@^7.0.4", "@types/json-schema@^7.0.5", "@types/json-schema@^7.0.7": - version "7.0.7" - resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.7.tgz#98a993516c859eb0d5c4c8f098317a9ea68db9ad" - integrity sha512-cxWFQVseBm6O9Gbw1IWb8r6OS4OhSt3hPZLkFApLjM8TEXROBuQGLAH2i2gZpcXdLBIrpXuTDhH7Vbm1iXmNGA== - -"@types/mime@^1": - version "1.3.2" - resolved "https://registry.yarnpkg.com/@types/mime/-/mime-1.3.2.tgz#93e25bf9ee75fe0fd80b594bc4feb0e862111b5a" - integrity sha512-YATxVxgRqNH6nHEIsvg6k2Boc1JHI9ZbH5iWFFv/MTkchz3b1ieGDa5T0a9RznNdI0KhVbdbWSN+KWWrQZRxTw== - -"@types/minimatch@*": - version "3.0.4" - resolved "https://registry.yarnpkg.com/@types/minimatch/-/minimatch-3.0.4.tgz#f0ec25dbf2f0e4b18647313ac031134ca5b24b21" - integrity sha512-1z8k4wzFnNjVK/tlxvrWuK5WMt6mydWWP7+zvH5eFep4oj+UkrfiJTRtjCeBXNpwaA/FYqqtb4/QS4ianFpIRA== - -"@types/minimist@^1.2.0": - version "1.2.1" - resolved "https://registry.yarnpkg.com/@types/minimist/-/minimist-1.2.1.tgz#283f669ff76d7b8260df8ab7a4262cc83d988256" - integrity sha512-fZQQafSREFyuZcdWFAExYjBiCL7AUCdgsk80iO0q4yihYYdcIiH28CcuPTGFgLOCC8RlW49GSQxdHwZP+I7CNg== - -"@types/node@*": - version "15.12.2" - resolved "https://registry.yarnpkg.com/@types/node/-/node-15.12.2.tgz#1f2b42c4be7156ff4a6f914b2fb03d05fa84e38d" - integrity sha512-zjQ69G564OCIWIOHSXyQEEDpdpGl+G348RAKY0XXy9Z5kU9Vzv1GMNnkar/ZJ8dzXB3COzD9Mo9NtRZ4xfgUww== - -"@types/normalize-package-data@^2.4.0": - version "2.4.0" - resolved "https://registry.yarnpkg.com/@types/normalize-package-data/-/normalize-package-data-2.4.0.tgz#e486d0d97396d79beedd0a6e33f4534ff6b4973e" - integrity sha512-f5j5b/Gf71L+dbqxIpQ4Z2WlmI/mPJ0fOkGGmFgtb6sAu97EPczzbS3/tJKxmcYDj55OX6ssqwDAWOHIYDRDGA== - -"@types/parse-json@^4.0.0": - version "4.0.0" - resolved "https://registry.yarnpkg.com/@types/parse-json/-/parse-json-4.0.0.tgz#2f8bb441434d163b35fb8ffdccd7138927ffb8c0" - integrity sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA== - -"@types/q@^1.5.1": - version "1.5.4" - resolved "https://registry.yarnpkg.com/@types/q/-/q-1.5.4.tgz#15925414e0ad2cd765bfef58842f7e26a7accb24" - integrity sha512-1HcDas8SEj4z1Wc696tH56G8OlRaH/sqZOynNNB+HF0WOeXPaxTtbYzJY2oEfiUxjSKjhCKr+MvR7dCHcEelug== - -"@types/qs@*": - version "6.9.6" - resolved "https://registry.yarnpkg.com/@types/qs/-/qs-6.9.6.tgz#df9c3c8b31a247ec315e6996566be3171df4b3b1" - integrity sha512-0/HnwIfW4ki2D8L8c9GVcG5I72s9jP5GSLVF0VIXDW00kmIpA6O33G7a8n59Tmh7Nz0WUC3rSb7PTY/sdW2JzA== - -"@types/range-parser@*": - version "1.2.3" - resolved "https://registry.yarnpkg.com/@types/range-parser/-/range-parser-1.2.3.tgz#7ee330ba7caafb98090bece86a5ee44115904c2c" - integrity sha512-ewFXqrQHlFsgc09MK5jP5iR7vumV/BYayNC6PgJO2LPe8vrnNFyjQjSppfEngITi0qvfKtzFvgKymGheFM9UOA== - -"@types/resolve@0.0.8": - version "0.0.8" - resolved "https://registry.yarnpkg.com/@types/resolve/-/resolve-0.0.8.tgz#f26074d238e02659e323ce1a13d041eee280e194" - integrity sha512-auApPaJf3NPfe18hSoJkp8EbZzer2ISk7o8mCC3M9he/a04+gbMF97NkpD2S8riMGvm4BMRI59/SZQSaLTKpsQ== - dependencies: - "@types/node" "*" - -"@types/resolve@1.17.1": - version "1.17.1" - resolved "https://registry.yarnpkg.com/@types/resolve/-/resolve-1.17.1.tgz#3afd6ad8967c77e4376c598a82ddd58f46ec45d6" - integrity sha512-yy7HuzQhj0dhGpD8RLXSZWEkLsV9ibvxvi6EiJ3bkqLAO1RGo0WbkWQiwpRlSFymTJRz0d3k5LM3kkx8ArDbLw== - dependencies: - "@types/node" "*" - -"@types/serve-static@*": - version "1.13.9" - resolved "https://registry.yarnpkg.com/@types/serve-static/-/serve-static-1.13.9.tgz#aacf28a85a05ee29a11fb7c3ead935ac56f33e4e" - integrity sha512-ZFqF6qa48XsPdjXV5Gsz0Zqmux2PerNd3a/ktL45mHpa19cuMi/cL8tcxdAx497yRh+QtYPuofjT9oWw9P7nkA== - dependencies: - "@types/mime" "^1" - "@types/node" "*" - -"@types/source-list-map@*": - version "0.1.2" - resolved "https://registry.yarnpkg.com/@types/source-list-map/-/source-list-map-0.1.2.tgz#0078836063ffaf17412349bba364087e0ac02ec9" - integrity sha512-K5K+yml8LTo9bWJI/rECfIPrGgxdpeNbj+d53lwN4QjW1MCwlkhUms+gtdzigTeUyBr09+u8BwOIY3MXvHdcsA== - -"@types/tapable@^1": - version "1.0.7" - resolved "https://registry.yarnpkg.com/@types/tapable/-/tapable-1.0.7.tgz#545158342f949e8fd3bfd813224971ecddc3fac4" - integrity sha512-0VBprVqfgFD7Ehb2vd8Lh9TG3jP98gvr8rgehQqzztZNI7o8zS8Ad4jyZneKELphpuE212D8J70LnSNQSyO6bQ== - -"@types/uglify-js@*": - version "3.13.0" - resolved "https://registry.yarnpkg.com/@types/uglify-js/-/uglify-js-3.13.0.tgz#1cad8df1fb0b143c5aba08de5712ea9d1ff71124" - integrity sha512-EGkrJD5Uy+Pg0NUR8uA4bJ5WMfljyad0G+784vLCNUkD+QwOJXUbBYExXfVGf7YtyzdQp3L/XMYcliB987kL5Q== - dependencies: - source-map "^0.6.1" - -"@types/webpack-dev-server@^3.11.0": - version "3.11.4" - resolved "https://registry.yarnpkg.com/@types/webpack-dev-server/-/webpack-dev-server-3.11.4.tgz#90d47dd660b696d409431ab8c1e9fa3615103a07" - integrity sha512-DCKORHjqNNVuMIDWFrlljftvc9CL0+09p3l7lBpb8dRqgN5SmvkWCY4MPKxoI6wJgdRqohmoNbptkxqSKAzLRg== - dependencies: - "@types/connect-history-api-fallback" "*" - "@types/express" "*" - "@types/serve-static" "*" - "@types/webpack" "^4" - http-proxy-middleware "^1.0.0" - -"@types/webpack-env@^1.15.2": - version "1.16.0" - resolved "https://registry.yarnpkg.com/@types/webpack-env/-/webpack-env-1.16.0.tgz#8c0a9435dfa7b3b1be76562f3070efb3f92637b4" - integrity sha512-Fx+NpfOO0CpeYX2g9bkvX8O5qh9wrU1sOF4g8sft4Mu7z+qfe387YlyY8w8daDyDsKY5vUxM0yxkAYnbkRbZEw== - -"@types/webpack-sources@*": - version "2.1.0" - resolved "https://registry.yarnpkg.com/@types/webpack-sources/-/webpack-sources-2.1.0.tgz#8882b0bd62d1e0ce62f183d0d01b72e6e82e8c10" - integrity sha512-LXn/oYIpBeucgP1EIJbKQ2/4ZmpvRl+dlrFdX7+94SKRUV3Evy3FsfMZY318vGhkWUS5MPhtOM3w1/hCOAOXcg== - dependencies: - "@types/node" "*" - "@types/source-list-map" "*" - source-map "^0.7.3" - -"@types/webpack@^4", "@types/webpack@^4.0.0": - version "4.41.29" - resolved "https://registry.yarnpkg.com/@types/webpack/-/webpack-4.41.29.tgz#2e66c1de8223c440366469415c50a47d97625773" - integrity sha512-6pLaORaVNZxiB3FSHbyBiWM7QdazAWda1zvAq4SbZObZqHSDbWLi62iFdblVea6SK9eyBIVp5yHhKt/yNQdR7Q== - dependencies: - "@types/node" "*" - "@types/tapable" "^1" - "@types/uglify-js" "*" - "@types/webpack-sources" "*" - anymatch "^3.0.0" - source-map "^0.6.0" - -"@typescript-eslint/eslint-plugin@^4.26.1": - version "4.26.1" - resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-4.26.1.tgz#b9c7313321cb837e2bf8bebe7acc2220659e67d3" - integrity sha512-aoIusj/8CR+xDWmZxARivZjbMBQTT9dImUtdZ8tVCVRXgBUuuZyM5Of5A9D9arQPxbi/0rlJLcuArclz/rCMJw== - dependencies: - "@typescript-eslint/experimental-utils" "4.26.1" - "@typescript-eslint/scope-manager" "4.26.1" - debug "^4.3.1" - functional-red-black-tree "^1.0.1" - lodash "^4.17.21" - regexpp "^3.1.0" - semver "^7.3.5" - tsutils "^3.21.0" - -"@typescript-eslint/experimental-utils@4.26.1": - version "4.26.1" - resolved "https://registry.yarnpkg.com/@typescript-eslint/experimental-utils/-/experimental-utils-4.26.1.tgz#a35980a2390da9232aa206b27f620eab66e94142" - integrity sha512-sQHBugRhrXzRCs9PaGg6rowie4i8s/iD/DpTB+EXte8OMDfdCG5TvO73XlO9Wc/zi0uyN4qOmX9hIjQEyhnbmQ== - dependencies: - "@types/json-schema" "^7.0.7" - "@typescript-eslint/scope-manager" "4.26.1" - "@typescript-eslint/types" "4.26.1" - "@typescript-eslint/typescript-estree" "4.26.1" - eslint-scope "^5.1.1" - eslint-utils "^3.0.0" - -"@typescript-eslint/parser@^4.26.1": - version "4.26.1" - resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-4.26.1.tgz#cecfdd5eb7a5c13aabce1c1cfd7fbafb5a0f1e8e" - integrity sha512-q7F3zSo/nU6YJpPJvQveVlIIzx9/wu75lr6oDbDzoeIRWxpoc/HQ43G4rmMoCc5my/3uSj2VEpg/D83LYZF5HQ== - dependencies: - "@typescript-eslint/scope-manager" "4.26.1" - "@typescript-eslint/types" "4.26.1" - "@typescript-eslint/typescript-estree" "4.26.1" - debug "^4.3.1" - -"@typescript-eslint/scope-manager@4.26.1": - version "4.26.1" - resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-4.26.1.tgz#075a74a15ff33ee3a7ed33e5fce16ee86689f662" - integrity sha512-TW1X2p62FQ8Rlne+WEShyd7ac2LA6o27S9i131W4NwDSfyeVlQWhw8ylldNNS8JG6oJB9Ha9Xyc+IUcqipvheQ== - dependencies: - "@typescript-eslint/types" "4.26.1" - "@typescript-eslint/visitor-keys" "4.26.1" - -"@typescript-eslint/types@4.26.1": - version "4.26.1" - resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-4.26.1.tgz#9e7c523f73c34b04a765e4167ca5650436ef1d38" - integrity sha512-STyMPxR3cS+LaNvS8yK15rb8Y0iL0tFXq0uyl6gY45glyI7w0CsyqyEXl/Fa0JlQy+pVANeK3sbwPneCbWE7yg== - -"@typescript-eslint/typescript-estree@4.26.1": - version "4.26.1" - resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-4.26.1.tgz#b2ce2e789233d62283fae2c16baabd4f1dbc9633" - integrity sha512-l3ZXob+h0NQzz80lBGaykdScYaiEbFqznEs99uwzm8fPHhDjwaBFfQkjUC/slw6Sm7npFL8qrGEAMxcfBsBJUg== - dependencies: - "@typescript-eslint/types" "4.26.1" - "@typescript-eslint/visitor-keys" "4.26.1" - debug "^4.3.1" - globby "^11.0.3" - is-glob "^4.0.1" - semver "^7.3.5" - tsutils "^3.21.0" - -"@typescript-eslint/visitor-keys@4.26.1": - version "4.26.1" - resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-4.26.1.tgz#0d55ea735cb0d8903b198017d6d4f518fdaac546" - integrity sha512-IGouNSSd+6x/fHtYRyLOM6/C+QxMDzWlDtN41ea+flWuSF9g02iqcIlX8wM53JkfljoIjP0U+yp7SiTS1onEkw== - dependencies: - "@typescript-eslint/types" "4.26.1" - eslint-visitor-keys "^2.0.0" - -"@vue/babel-helper-vue-jsx-merge-props@^1.2.1": - version "1.2.1" - resolved "https://registry.yarnpkg.com/@vue/babel-helper-vue-jsx-merge-props/-/babel-helper-vue-jsx-merge-props-1.2.1.tgz#31624a7a505fb14da1d58023725a4c5f270e6a81" - integrity sha512-QOi5OW45e2R20VygMSNhyQHvpdUwQZqGPc748JLGCYEy+yp8fNFNdbNIGAgZmi9e+2JHPd6i6idRuqivyicIkA== - -"@vue/babel-helper-vue-transform-on@^1.0.2": - version "1.0.2" - resolved "https://registry.yarnpkg.com/@vue/babel-helper-vue-transform-on/-/babel-helper-vue-transform-on-1.0.2.tgz#9b9c691cd06fc855221a2475c3cc831d774bc7dc" - integrity sha512-hz4R8tS5jMn8lDq6iD+yWL6XNB699pGIVLk7WSJnn1dbpjaazsjZQkieJoRX6gW5zpYSCFqQ7jUquPNY65tQYA== - -"@vue/babel-plugin-jsx@^1.0.3": - version "1.0.6" - resolved "https://registry.yarnpkg.com/@vue/babel-plugin-jsx/-/babel-plugin-jsx-1.0.6.tgz#184bf3541ab6efdbe5079ab8b20c19e2af100bfb" - integrity sha512-RzYsvBhzKUmY2YG6LoV+W5PnlnkInq0thh1AzCmewwctAgGN6e9UFon6ZrQQV1CO5G5PeME7MqpB+/vvGg0h4g== - dependencies: - "@babel/helper-module-imports" "^7.0.0" - "@babel/plugin-syntax-jsx" "^7.0.0" - "@babel/template" "^7.0.0" - "@babel/traverse" "^7.0.0" - "@babel/types" "^7.0.0" - "@vue/babel-helper-vue-transform-on" "^1.0.2" - camelcase "^6.0.0" - html-tags "^3.1.0" - svg-tags "^1.0.0" - -"@vue/babel-plugin-transform-vue-jsx@^1.2.1": - version "1.2.1" - resolved "https://registry.yarnpkg.com/@vue/babel-plugin-transform-vue-jsx/-/babel-plugin-transform-vue-jsx-1.2.1.tgz#646046c652c2f0242727f34519d917b064041ed7" - integrity sha512-HJuqwACYehQwh1fNT8f4kyzqlNMpBuUK4rSiSES5D4QsYncv5fxFsLyrxFPG2ksO7t5WP+Vgix6tt6yKClwPzA== - dependencies: - "@babel/helper-module-imports" "^7.0.0" - "@babel/plugin-syntax-jsx" "^7.2.0" - "@vue/babel-helper-vue-jsx-merge-props" "^1.2.1" - html-tags "^2.0.0" - lodash.kebabcase "^4.1.1" - svg-tags "^1.0.0" - -"@vue/babel-preset-app@^4.5.13": - version "4.5.13" - resolved "https://registry.yarnpkg.com/@vue/babel-preset-app/-/babel-preset-app-4.5.13.tgz#cb475321e4c73f7f110dac29a48c2a9cb80afeb6" - integrity sha512-pM7CR3yXB6L8Gfn6EmX7FLNE3+V/15I3o33GkSNsWvgsMp6HVGXKkXgojrcfUUauyL1LZOdvTmu4enU2RePGHw== - dependencies: - "@babel/core" "^7.11.0" - "@babel/helper-compilation-targets" "^7.9.6" - "@babel/helper-module-imports" "^7.8.3" - "@babel/plugin-proposal-class-properties" "^7.8.3" - "@babel/plugin-proposal-decorators" "^7.8.3" - "@babel/plugin-syntax-dynamic-import" "^7.8.3" - "@babel/plugin-syntax-jsx" "^7.8.3" - "@babel/plugin-transform-runtime" "^7.11.0" - "@babel/preset-env" "^7.11.0" - "@babel/runtime" "^7.11.0" - "@vue/babel-plugin-jsx" "^1.0.3" - "@vue/babel-preset-jsx" "^1.2.4" - babel-plugin-dynamic-import-node "^2.3.3" - core-js "^3.6.5" - core-js-compat "^3.6.5" - semver "^6.1.0" - -"@vue/babel-preset-jsx@^1.2.4": - version "1.2.4" - resolved "https://registry.yarnpkg.com/@vue/babel-preset-jsx/-/babel-preset-jsx-1.2.4.tgz#92fea79db6f13b01e80d3a0099e2924bdcbe4e87" - integrity sha512-oRVnmN2a77bYDJzeGSt92AuHXbkIxbf/XXSE3klINnh9AXBmVS1DGa1f0d+dDYpLfsAKElMnqKTQfKn7obcL4w== - dependencies: - "@vue/babel-helper-vue-jsx-merge-props" "^1.2.1" - "@vue/babel-plugin-transform-vue-jsx" "^1.2.1" - "@vue/babel-sugar-composition-api-inject-h" "^1.2.1" - "@vue/babel-sugar-composition-api-render-instance" "^1.2.4" - "@vue/babel-sugar-functional-vue" "^1.2.2" - "@vue/babel-sugar-inject-h" "^1.2.2" - "@vue/babel-sugar-v-model" "^1.2.3" - "@vue/babel-sugar-v-on" "^1.2.3" - -"@vue/babel-sugar-composition-api-inject-h@^1.2.1": - version "1.2.1" - resolved "https://registry.yarnpkg.com/@vue/babel-sugar-composition-api-inject-h/-/babel-sugar-composition-api-inject-h-1.2.1.tgz#05d6e0c432710e37582b2be9a6049b689b6f03eb" - integrity sha512-4B3L5Z2G+7s+9Bwbf+zPIifkFNcKth7fQwekVbnOA3cr3Pq71q71goWr97sk4/yyzH8phfe5ODVzEjX7HU7ItQ== - dependencies: - "@babel/plugin-syntax-jsx" "^7.2.0" - -"@vue/babel-sugar-composition-api-render-instance@^1.2.4": - version "1.2.4" - resolved "https://registry.yarnpkg.com/@vue/babel-sugar-composition-api-render-instance/-/babel-sugar-composition-api-render-instance-1.2.4.tgz#e4cbc6997c344fac271785ad7a29325c51d68d19" - integrity sha512-joha4PZznQMsxQYXtR3MnTgCASC9u3zt9KfBxIeuI5g2gscpTsSKRDzWQt4aqNIpx6cv8On7/m6zmmovlNsG7Q== - dependencies: - "@babel/plugin-syntax-jsx" "^7.2.0" - -"@vue/babel-sugar-functional-vue@^1.2.2": - version "1.2.2" - resolved "https://registry.yarnpkg.com/@vue/babel-sugar-functional-vue/-/babel-sugar-functional-vue-1.2.2.tgz#267a9ac8d787c96edbf03ce3f392c49da9bd2658" - integrity sha512-JvbgGn1bjCLByIAU1VOoepHQ1vFsroSA/QkzdiSs657V79q6OwEWLCQtQnEXD/rLTA8rRit4rMOhFpbjRFm82w== - dependencies: - "@babel/plugin-syntax-jsx" "^7.2.0" - -"@vue/babel-sugar-inject-h@^1.2.2": - version "1.2.2" - resolved "https://registry.yarnpkg.com/@vue/babel-sugar-inject-h/-/babel-sugar-inject-h-1.2.2.tgz#d738d3c893367ec8491dcbb669b000919293e3aa" - integrity sha512-y8vTo00oRkzQTgufeotjCLPAvlhnpSkcHFEp60+LJUwygGcd5Chrpn5480AQp/thrxVm8m2ifAk0LyFel9oCnw== - dependencies: - "@babel/plugin-syntax-jsx" "^7.2.0" - -"@vue/babel-sugar-v-model@^1.2.3": - version "1.2.3" - resolved "https://registry.yarnpkg.com/@vue/babel-sugar-v-model/-/babel-sugar-v-model-1.2.3.tgz#fa1f29ba51ebf0aa1a6c35fa66d539bc459a18f2" - integrity sha512-A2jxx87mySr/ulAsSSyYE8un6SIH0NWHiLaCWpodPCVOlQVODCaSpiR4+IMsmBr73haG+oeCuSvMOM+ttWUqRQ== - dependencies: - "@babel/plugin-syntax-jsx" "^7.2.0" - "@vue/babel-helper-vue-jsx-merge-props" "^1.2.1" - "@vue/babel-plugin-transform-vue-jsx" "^1.2.1" - camelcase "^5.0.0" - html-tags "^2.0.0" - svg-tags "^1.0.0" - -"@vue/babel-sugar-v-on@^1.2.3": - version "1.2.3" - resolved "https://registry.yarnpkg.com/@vue/babel-sugar-v-on/-/babel-sugar-v-on-1.2.3.tgz#342367178586a69f392f04bfba32021d02913ada" - integrity sha512-kt12VJdz/37D3N3eglBywV8GStKNUhNrsxChXIV+o0MwVXORYuhDTHJRKPgLJRb/EY3vM2aRFQdxJBp9CLikjw== - dependencies: - "@babel/plugin-syntax-jsx" "^7.2.0" - "@vue/babel-plugin-transform-vue-jsx" "^1.2.1" - camelcase "^5.0.0" - -"@vue/cli-overlay@^4.5.13": - version "4.5.13" - resolved "https://registry.yarnpkg.com/@vue/cli-overlay/-/cli-overlay-4.5.13.tgz#4f1fd2161be8f69d6cba8079f3f0d7dc4dee47a7" - integrity sha512-jhUIg3klgi5Cxhs8dnat5hi/W2tQJvsqCxR0u6hgfSob0ORODgUBlN+F/uwq7cKIe/pzedVUk1y07F13GQvPqg== - -"@vue/cli-plugin-babel@~4.5.13": - version "4.5.13" - resolved "https://registry.yarnpkg.com/@vue/cli-plugin-babel/-/cli-plugin-babel-4.5.13.tgz#a89c482edcc4ea1d135645cec502a7f5fd4c30e7" - integrity sha512-ykvEAfD8PgGs+dGMGqr7l/nRmIS39NRzWLhMluPLTvDV1L+IxcoB73HNLGA/aENDpl8CuWrTE+1VgydcOhp+wg== - dependencies: - "@babel/core" "^7.11.0" - "@vue/babel-preset-app" "^4.5.13" - "@vue/cli-shared-utils" "^4.5.13" - babel-loader "^8.1.0" - cache-loader "^4.1.0" - thread-loader "^2.1.3" - webpack "^4.0.0" - -"@vue/cli-plugin-eslint@~4.5.13": - version "4.5.13" - resolved "https://registry.yarnpkg.com/@vue/cli-plugin-eslint/-/cli-plugin-eslint-4.5.13.tgz#8baf22d0d96d76720c7506646b96f4f62c05bdfa" - integrity sha512-yc2uXX6aBiy3vEf5TwaueaDqQbdIXIhk0x0KzEtpPo23jBdLkpOSoU5NCgE06g/ZiGAcettpmBSv73Hfp4wHEw== - dependencies: - "@vue/cli-shared-utils" "^4.5.13" - eslint-loader "^2.2.1" - globby "^9.2.0" - inquirer "^7.1.0" - webpack "^4.0.0" - yorkie "^2.0.0" - -"@vue/cli-plugin-pwa@~4.5.13": - version "4.5.13" - resolved "https://registry.yarnpkg.com/@vue/cli-plugin-pwa/-/cli-plugin-pwa-4.5.13.tgz#a800639814b6f62a38f04198c340cfaee7295c3f" - integrity sha512-uU5pp94VU0YscfKq/mNRsKOdxG+CTqVlZWaYkRc+HCcwkJ/m/CnxgaEqQFr0QpHC8zmlX4gILO1RVYygJoR9tw== - dependencies: - "@vue/cli-shared-utils" "^4.5.13" - webpack "^4.0.0" - workbox-webpack-plugin "^4.3.1" - -"@vue/cli-plugin-router@^4.5.13": - version "4.5.13" - resolved "https://registry.yarnpkg.com/@vue/cli-plugin-router/-/cli-plugin-router-4.5.13.tgz#0b67c8898a2bf132941919a2a2e5f3aacbd9ffbe" - integrity sha512-tgtMDjchB/M1z8BcfV4jSOY9fZSMDTPgF9lsJIiqBWMxvBIsk9uIZHxp62DibYME4CCKb/nNK61XHaikFp+83w== - dependencies: - "@vue/cli-shared-utils" "^4.5.13" - -"@vue/cli-plugin-typescript@^4.5.13": - version "4.5.13" - resolved "https://registry.yarnpkg.com/@vue/cli-plugin-typescript/-/cli-plugin-typescript-4.5.13.tgz#f514f661e16f9096a89a9ca6e69a2d762c6d8464" - integrity sha512-CpLlIdFNV1gn9uC4Yh6QgWI42uk2x5Z3cb2ScxNSwWsR1vgSdr0/1DdNzoBm68aP8RUtnHHO/HZfPnvXiq42xA== - dependencies: - "@types/webpack-env" "^1.15.2" - "@vue/cli-shared-utils" "^4.5.13" - cache-loader "^4.1.0" - fork-ts-checker-webpack-plugin "^3.1.1" - globby "^9.2.0" - thread-loader "^2.1.3" - ts-loader "^6.2.2" - tslint "^5.20.1" - webpack "^4.0.0" - yorkie "^2.0.0" - optionalDependencies: - fork-ts-checker-webpack-plugin-v5 "npm:fork-ts-checker-webpack-plugin@^5.0.11" - -"@vue/cli-plugin-vuex@^4.5.13": - version "4.5.13" - resolved "https://registry.yarnpkg.com/@vue/cli-plugin-vuex/-/cli-plugin-vuex-4.5.13.tgz#98646d8bc1e69cf6c6a6cba2fed3eace0356c360" - integrity sha512-I1S9wZC7iI0Wn8kw8Zh+A2Qkf6s1M6vTGBkx8boXjuzfwEEyEHRxadsVCecZc8Mkpydo0nykj+MyYF96TKFuVA== - -"@vue/cli-service@~4.5.13": - version "4.5.13" - resolved "https://registry.yarnpkg.com/@vue/cli-service/-/cli-service-4.5.13.tgz#a09e684a801684b6e24e5414ad30650970eec9ed" - integrity sha512-CKAZN4iokMMsaUyJRU22oUAz3oS/X9sVBSKAF2/shFBV5xh3jqAlKl8OXZYz4cXGFLA6djNuYrniuLAo7Ku97A== - dependencies: - "@intervolga/optimize-cssnano-plugin" "^1.0.5" - "@soda/friendly-errors-webpack-plugin" "^1.7.1" - "@soda/get-current-script" "^1.0.0" - "@types/minimist" "^1.2.0" - "@types/webpack" "^4.0.0" - "@types/webpack-dev-server" "^3.11.0" - "@vue/cli-overlay" "^4.5.13" - "@vue/cli-plugin-router" "^4.5.13" - "@vue/cli-plugin-vuex" "^4.5.13" - "@vue/cli-shared-utils" "^4.5.13" - "@vue/component-compiler-utils" "^3.1.2" - "@vue/preload-webpack-plugin" "^1.1.0" - "@vue/web-component-wrapper" "^1.2.0" - acorn "^7.4.0" - acorn-walk "^7.1.1" - address "^1.1.2" - autoprefixer "^9.8.6" - browserslist "^4.12.0" - cache-loader "^4.1.0" - case-sensitive-paths-webpack-plugin "^2.3.0" - cli-highlight "^2.1.4" - clipboardy "^2.3.0" - cliui "^6.0.0" - copy-webpack-plugin "^5.1.1" - css-loader "^3.5.3" - cssnano "^4.1.10" - debug "^4.1.1" - default-gateway "^5.0.5" - dotenv "^8.2.0" - dotenv-expand "^5.1.0" - file-loader "^4.2.0" - fs-extra "^7.0.1" - globby "^9.2.0" - hash-sum "^2.0.0" - html-webpack-plugin "^3.2.0" - launch-editor-middleware "^2.2.1" - lodash.defaultsdeep "^4.6.1" - lodash.mapvalues "^4.6.0" - lodash.transform "^4.6.0" - mini-css-extract-plugin "^0.9.0" - minimist "^1.2.5" - pnp-webpack-plugin "^1.6.4" - portfinder "^1.0.26" - postcss-loader "^3.0.0" - ssri "^8.0.1" - terser-webpack-plugin "^1.4.4" - thread-loader "^2.1.3" - url-loader "^2.2.0" - vue-loader "^15.9.2" - vue-style-loader "^4.1.2" - webpack "^4.0.0" - webpack-bundle-analyzer "^3.8.0" - webpack-chain "^6.4.0" - webpack-dev-server "^3.11.0" - webpack-merge "^4.2.2" - optionalDependencies: - vue-loader-v16 "npm:vue-loader@^16.1.0" - -"@vue/cli-shared-utils@^4.5.13": - version "4.5.13" - resolved "https://registry.yarnpkg.com/@vue/cli-shared-utils/-/cli-shared-utils-4.5.13.tgz#acd40f31b4790f1634292bdaa5fca95dc1e0ff50" - integrity sha512-HpnOrkLg42RFUsQGMJv26oTG3J3FmKtO2WSRhKIIL+1ok3w9OjGCtA3nMMXN27f9eX14TqO64M36DaiSZ1fSiw== - dependencies: - "@hapi/joi" "^15.0.1" - chalk "^2.4.2" - execa "^1.0.0" - launch-editor "^2.2.1" - lru-cache "^5.1.1" - node-ipc "^9.1.1" - open "^6.3.0" - ora "^3.4.0" - read-pkg "^5.1.1" - request "^2.88.2" - semver "^6.1.0" - strip-ansi "^6.0.0" - -"@vue/compiler-core@3.1.1": - version "3.1.1" - resolved "https://registry.yarnpkg.com/@vue/compiler-core/-/compiler-core-3.1.1.tgz#4f2c5d70eabd454675714cc8bd2b97f6a8efb196" - integrity sha512-Z1RO3T6AEtAUFf2EqqovFm3ohAeTvFzRtB0qUENW2nEerJfdlk13/LS1a0EgsqlzxmYfR/S/S/gW9PLbFZZxkA== - dependencies: - "@babel/parser" "^7.12.0" - "@babel/types" "^7.12.0" - "@vue/shared" "3.1.1" - estree-walker "^2.0.1" - source-map "^0.6.1" - -"@vue/compiler-dom@3.1.1": - version "3.1.1" - resolved "https://registry.yarnpkg.com/@vue/compiler-dom/-/compiler-dom-3.1.1.tgz#ef60d856ac2ede5b2ad5c72a7a68122895e3d652" - integrity sha512-nobRIo0t5ibzg+q8nC31m+aJhbq8FbWUoKvk6h3Vs1EqTDJaj6lBTcVTq5or8AYht7FbSpdAJ81isbJ1rWNX7A== - dependencies: - "@vue/compiler-core" "3.1.1" - "@vue/shared" "3.1.1" - -"@vue/compiler-sfc@^3.1.1": - version "3.1.1" - resolved "https://registry.yarnpkg.com/@vue/compiler-sfc/-/compiler-sfc-3.1.1.tgz#d4e4507c013d0b219f0b106b317ec5bb1cde3398" - integrity sha512-lSgMsZaYHF+bAgryq5aUqpvyfhu52GJI2/4LoiJCE5uaxc6FCZfxfgqgw/d9ltiZghv+HiISFtmQVAVvlsk+/w== - dependencies: - "@babel/parser" "^7.13.9" - "@babel/types" "^7.13.0" - "@vue/compiler-core" "3.1.1" - "@vue/compiler-dom" "3.1.1" - "@vue/compiler-ssr" "3.1.1" - "@vue/shared" "3.1.1" - consolidate "^0.16.0" - estree-walker "^2.0.1" - hash-sum "^2.0.0" - lru-cache "^5.1.1" - magic-string "^0.25.7" - merge-source-map "^1.1.0" - postcss "^8.1.10" - postcss-modules "^4.0.0" - postcss-selector-parser "^6.0.4" - source-map "^0.6.1" - -"@vue/compiler-ssr@3.1.1": - version "3.1.1" - resolved "https://registry.yarnpkg.com/@vue/compiler-ssr/-/compiler-ssr-3.1.1.tgz#1d08b98601397258ed059b75966e0e94a385d770" - integrity sha512-7H6krZtVt3h/YzfNp7eYK41hMDz8ZskiBy+Wby+EDRINX6BD9JQ5C8zyy2xAa7T6Iz2VrQzsaJ/Bb52lTPSS5A== - dependencies: - "@vue/compiler-dom" "3.1.1" - "@vue/shared" "3.1.1" - -"@vue/component-compiler-utils@^3.1.0", "@vue/component-compiler-utils@^3.1.2": - version "3.2.0" - resolved "https://registry.yarnpkg.com/@vue/component-compiler-utils/-/component-compiler-utils-3.2.0.tgz#8f85182ceed28e9b3c75313de669f83166d11e5d" - integrity sha512-lejBLa7xAMsfiZfNp7Kv51zOzifnb29FwdnMLa96z26kXErPFioSf9BMcePVIQ6/Gc6/mC0UrPpxAWIHyae0vw== - dependencies: - consolidate "^0.15.1" - hash-sum "^1.0.2" - lru-cache "^4.1.2" - merge-source-map "^1.1.0" - postcss "^7.0.14" - postcss-selector-parser "^6.0.2" - source-map "~0.6.1" - vue-template-es2015-compiler "^1.9.0" - optionalDependencies: - prettier "^1.18.2" - -"@vue/eslint-config-typescript@^7.0.0": - version "7.0.0" - resolved "https://registry.yarnpkg.com/@vue/eslint-config-typescript/-/eslint-config-typescript-7.0.0.tgz#220c70c2edf7a253e739298525f4d401b8ef0038" - integrity sha512-UxUlvpSrFOoF8aQ+zX1leYiEBEm7CZmXYn/ZEM1zwSadUzpamx56RB4+Htdjisv1mX2tOjBegNUqH3kz2OL+Aw== - dependencies: - vue-eslint-parser "^7.0.0" - -"@vue/preload-webpack-plugin@^1.1.0": - version "1.1.2" - resolved "https://registry.yarnpkg.com/@vue/preload-webpack-plugin/-/preload-webpack-plugin-1.1.2.tgz#ceb924b4ecb3b9c43871c7a429a02f8423e621ab" - integrity sha512-LIZMuJk38pk9U9Ur4YzHjlIyMuxPlACdBIHH9/nGYVTsaGKOSnSuELiE8vS9wa+dJpIYspYUOqk+L1Q4pgHQHQ== - -"@vue/shared@3.1.1": - version "3.1.1" - resolved "https://registry.yarnpkg.com/@vue/shared/-/shared-3.1.1.tgz#2287cfc3dc20e5b20aeb65c2c3a56533bdca801c" - integrity sha512-g+4pzAw7PYSjARtLBoDq6DmcblX8i9KJHSCnyM5VDDFFifUaUT9iHbFpOF/KOizQ9f7QAqU2JH3Y6aXjzUMhVA== - -"@vue/web-component-wrapper@^1.2.0": - version "1.3.0" - resolved "https://registry.yarnpkg.com/@vue/web-component-wrapper/-/web-component-wrapper-1.3.0.tgz#b6b40a7625429d2bd7c2281ddba601ed05dc7f1a" - integrity sha512-Iu8Tbg3f+emIIMmI2ycSI8QcEuAUgPTgHwesDU1eKMLE4YC/c/sFbGc70QgMq31ijRftV0R7vCm9co6rldCeOA== - -"@webassemblyjs/ast@1.9.0": - version "1.9.0" - resolved "https://registry.yarnpkg.com/@webassemblyjs/ast/-/ast-1.9.0.tgz#bd850604b4042459a5a41cd7d338cbed695ed964" - integrity sha512-C6wW5L+b7ogSDVqymbkkvuW9kruN//YisMED04xzeBBqjHa2FYnmvOlS6Xj68xWQRgWvI9cIglsjFowH/RJyEA== - dependencies: - "@webassemblyjs/helper-module-context" "1.9.0" - "@webassemblyjs/helper-wasm-bytecode" "1.9.0" - "@webassemblyjs/wast-parser" "1.9.0" - -"@webassemblyjs/floating-point-hex-parser@1.9.0": - version "1.9.0" - resolved "https://registry.yarnpkg.com/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.9.0.tgz#3c3d3b271bddfc84deb00f71344438311d52ffb4" - integrity sha512-TG5qcFsS8QB4g4MhrxK5TqfdNe7Ey/7YL/xN+36rRjl/BlGE/NcBvJcqsRgCP6Z92mRE+7N50pRIi8SmKUbcQA== - -"@webassemblyjs/helper-api-error@1.9.0": - version "1.9.0" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-api-error/-/helper-api-error-1.9.0.tgz#203f676e333b96c9da2eeab3ccef33c45928b6a2" - integrity sha512-NcMLjoFMXpsASZFxJ5h2HZRcEhDkvnNFOAKneP5RbKRzaWJN36NC4jqQHKwStIhGXu5mUWlUUk7ygdtrO8lbmw== - -"@webassemblyjs/helper-buffer@1.9.0": - version "1.9.0" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-buffer/-/helper-buffer-1.9.0.tgz#a1442d269c5feb23fcbc9ef759dac3547f29de00" - integrity sha512-qZol43oqhq6yBPx7YM3m9Bv7WMV9Eevj6kMi6InKOuZxhw+q9hOkvq5e/PpKSiLfyetpaBnogSbNCfBwyB00CA== - -"@webassemblyjs/helper-code-frame@1.9.0": - version "1.9.0" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-code-frame/-/helper-code-frame-1.9.0.tgz#647f8892cd2043a82ac0c8c5e75c36f1d9159f27" - integrity sha512-ERCYdJBkD9Vu4vtjUYe8LZruWuNIToYq/ME22igL+2vj2dQ2OOujIZr3MEFvfEaqKoVqpsFKAGsRdBSBjrIvZA== - dependencies: - "@webassemblyjs/wast-printer" "1.9.0" - -"@webassemblyjs/helper-fsm@1.9.0": - version "1.9.0" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-fsm/-/helper-fsm-1.9.0.tgz#c05256b71244214671f4b08ec108ad63b70eddb8" - integrity sha512-OPRowhGbshCb5PxJ8LocpdX9Kl0uB4XsAjl6jH/dWKlk/mzsANvhwbiULsaiqT5GZGT9qinTICdj6PLuM5gslw== - -"@webassemblyjs/helper-module-context@1.9.0": - version "1.9.0" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-module-context/-/helper-module-context-1.9.0.tgz#25d8884b76839871a08a6c6f806c3979ef712f07" - integrity sha512-MJCW8iGC08tMk2enck1aPW+BE5Cw8/7ph/VGZxwyvGbJwjktKkDK7vy7gAmMDx88D7mhDTCNKAW5tED+gZ0W8g== - dependencies: - "@webassemblyjs/ast" "1.9.0" - -"@webassemblyjs/helper-wasm-bytecode@1.9.0": - version "1.9.0" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.9.0.tgz#4fed8beac9b8c14f8c58b70d124d549dd1fe5790" - integrity sha512-R7FStIzyNcd7xKxCZH5lE0Bqy+hGTwS3LJjuv1ZVxd9O7eHCedSdrId/hMOd20I+v8wDXEn+bjfKDLzTepoaUw== - -"@webassemblyjs/helper-wasm-section@1.9.0": - version "1.9.0" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.9.0.tgz#5a4138d5a6292ba18b04c5ae49717e4167965346" - integrity sha512-XnMB8l3ek4tvrKUUku+IVaXNHz2YsJyOOmz+MMkZvh8h1uSJpSen6vYnw3IoQ7WwEuAhL8Efjms1ZWjqh2agvw== - dependencies: - "@webassemblyjs/ast" "1.9.0" - "@webassemblyjs/helper-buffer" "1.9.0" - "@webassemblyjs/helper-wasm-bytecode" "1.9.0" - "@webassemblyjs/wasm-gen" "1.9.0" - -"@webassemblyjs/ieee754@1.9.0": - version "1.9.0" - resolved "https://registry.yarnpkg.com/@webassemblyjs/ieee754/-/ieee754-1.9.0.tgz#15c7a0fbaae83fb26143bbacf6d6df1702ad39e4" - integrity sha512-dcX8JuYU/gvymzIHc9DgxTzUUTLexWwt8uCTWP3otys596io0L5aW02Gb1RjYpx2+0Jus1h4ZFqjla7umFniTg== - dependencies: - "@xtuc/ieee754" "^1.2.0" - -"@webassemblyjs/leb128@1.9.0": - version "1.9.0" - resolved "https://registry.yarnpkg.com/@webassemblyjs/leb128/-/leb128-1.9.0.tgz#f19ca0b76a6dc55623a09cffa769e838fa1e1c95" - integrity sha512-ENVzM5VwV1ojs9jam6vPys97B/S65YQtv/aanqnU7D8aSoHFX8GyhGg0CMfyKNIHBuAVjy3tlzd5QMMINa7wpw== - dependencies: - "@xtuc/long" "4.2.2" - -"@webassemblyjs/utf8@1.9.0": - version "1.9.0" - resolved "https://registry.yarnpkg.com/@webassemblyjs/utf8/-/utf8-1.9.0.tgz#04d33b636f78e6a6813227e82402f7637b6229ab" - integrity sha512-GZbQlWtopBTP0u7cHrEx+73yZKrQoBMpwkGEIqlacljhXCkVM1kMQge/Mf+csMJAjEdSwhOyLAS0AoR3AG5P8w== - -"@webassemblyjs/wasm-edit@1.9.0": - version "1.9.0" - resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-edit/-/wasm-edit-1.9.0.tgz#3fe6d79d3f0f922183aa86002c42dd256cfee9cf" - integrity sha512-FgHzBm80uwz5M8WKnMTn6j/sVbqilPdQXTWraSjBwFXSYGirpkSWE2R9Qvz9tNiTKQvoKILpCuTjBKzOIm0nxw== - dependencies: - "@webassemblyjs/ast" "1.9.0" - "@webassemblyjs/helper-buffer" "1.9.0" - "@webassemblyjs/helper-wasm-bytecode" "1.9.0" - "@webassemblyjs/helper-wasm-section" "1.9.0" - "@webassemblyjs/wasm-gen" "1.9.0" - "@webassemblyjs/wasm-opt" "1.9.0" - "@webassemblyjs/wasm-parser" "1.9.0" - "@webassemblyjs/wast-printer" "1.9.0" - -"@webassemblyjs/wasm-gen@1.9.0": - version "1.9.0" - resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-gen/-/wasm-gen-1.9.0.tgz#50bc70ec68ded8e2763b01a1418bf43491a7a49c" - integrity sha512-cPE3o44YzOOHvlsb4+E9qSqjc9Qf9Na1OO/BHFy4OI91XDE14MjFN4lTMezzaIWdPqHnsTodGGNP+iRSYfGkjA== - dependencies: - "@webassemblyjs/ast" "1.9.0" - "@webassemblyjs/helper-wasm-bytecode" "1.9.0" - "@webassemblyjs/ieee754" "1.9.0" - "@webassemblyjs/leb128" "1.9.0" - "@webassemblyjs/utf8" "1.9.0" - -"@webassemblyjs/wasm-opt@1.9.0": - version "1.9.0" - resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-opt/-/wasm-opt-1.9.0.tgz#2211181e5b31326443cc8112eb9f0b9028721a61" - integrity sha512-Qkjgm6Anhm+OMbIL0iokO7meajkzQD71ioelnfPEj6r4eOFuqm4YC3VBPqXjFyyNwowzbMD+hizmprP/Fwkl2A== - dependencies: - "@webassemblyjs/ast" "1.9.0" - "@webassemblyjs/helper-buffer" "1.9.0" - "@webassemblyjs/wasm-gen" "1.9.0" - "@webassemblyjs/wasm-parser" "1.9.0" - -"@webassemblyjs/wasm-parser@1.9.0": - version "1.9.0" - resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-parser/-/wasm-parser-1.9.0.tgz#9d48e44826df4a6598294aa6c87469d642fff65e" - integrity sha512-9+wkMowR2AmdSWQzsPEjFU7njh8HTO5MqO8vjwEHuM+AMHioNqSBONRdr0NQQ3dVQrzp0s8lTcYqzUdb7YgELA== - dependencies: - "@webassemblyjs/ast" "1.9.0" - "@webassemblyjs/helper-api-error" "1.9.0" - "@webassemblyjs/helper-wasm-bytecode" "1.9.0" - "@webassemblyjs/ieee754" "1.9.0" - "@webassemblyjs/leb128" "1.9.0" - "@webassemblyjs/utf8" "1.9.0" - -"@webassemblyjs/wast-parser@1.9.0": - version "1.9.0" - resolved "https://registry.yarnpkg.com/@webassemblyjs/wast-parser/-/wast-parser-1.9.0.tgz#3031115d79ac5bd261556cecc3fa90a3ef451914" - integrity sha512-qsqSAP3QQ3LyZjNC/0jBJ/ToSxfYJ8kYyuiGvtn/8MK89VrNEfwj7BPQzJVHi0jGTRK2dGdJ5PRqhtjzoww+bw== - dependencies: - "@webassemblyjs/ast" "1.9.0" - "@webassemblyjs/floating-point-hex-parser" "1.9.0" - "@webassemblyjs/helper-api-error" "1.9.0" - "@webassemblyjs/helper-code-frame" "1.9.0" - "@webassemblyjs/helper-fsm" "1.9.0" - "@xtuc/long" "4.2.2" - -"@webassemblyjs/wast-printer@1.9.0": - version "1.9.0" - resolved "https://registry.yarnpkg.com/@webassemblyjs/wast-printer/-/wast-printer-1.9.0.tgz#4935d54c85fef637b00ce9f52377451d00d47899" - integrity sha512-2J0nE95rHXHyQ24cWjMKJ1tqB/ds8z/cyeOZxJhcb+rW+SQASVjuznUSmdz5GpVJTzU8JkhYut0D3siFDD6wsA== - dependencies: - "@webassemblyjs/ast" "1.9.0" - "@webassemblyjs/wast-parser" "1.9.0" - "@xtuc/long" "4.2.2" - -"@xtuc/ieee754@^1.2.0": - version "1.2.0" - resolved "https://registry.yarnpkg.com/@xtuc/ieee754/-/ieee754-1.2.0.tgz#eef014a3145ae477a1cbc00cd1e552336dceb790" - integrity sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA== - -"@xtuc/long@4.2.2": - version "4.2.2" - resolved "https://registry.yarnpkg.com/@xtuc/long/-/long-4.2.2.tgz#d291c6a4e97989b5c61d9acf396ae4fe133a718d" - integrity sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ== - -accepts@~1.3.4, accepts@~1.3.5, accepts@~1.3.7: - version "1.3.7" - resolved "https://registry.yarnpkg.com/accepts/-/accepts-1.3.7.tgz#531bc726517a3b2b41f850021c6cc15eaab507cd" - integrity sha512-Il80Qs2WjYlJIBNzNkK6KYqlVMTbZLXgHx2oT0pU/fjRHyEp+PEfEPY0R3WCwAGVOtauxh1hOxNgIf5bv7dQpA== - dependencies: - mime-types "~2.1.24" - negotiator "0.6.2" - -acorn-jsx@^5.2.0, acorn-jsx@^5.3.1: - version "5.3.1" - resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.3.1.tgz#fc8661e11b7ac1539c47dbfea2e72b3af34d267b" - integrity sha512-K0Ptm/47OKfQRpNQ2J/oIN/3QYiK6FwW+eJbILhsdxh2WTLdl+30o8aGdTbm5JbffpFFAg/g+zi1E+jvJha5ng== - -acorn-walk@^7.1.1: - version "7.2.0" - resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-7.2.0.tgz#0de889a601203909b0fbe07b8938dc21d2e967bc" - integrity sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA== - -acorn@^6.4.1: - version "6.4.2" - resolved "https://registry.yarnpkg.com/acorn/-/acorn-6.4.2.tgz#35866fd710528e92de10cf06016498e47e39e1e6" - integrity sha512-XtGIhXwF8YM8bJhGxG5kXgjkEuNGLTkoYqVE+KMR+aspr4KGYmKYg7yUe3KghyQ9yheNwLnjmzh/7+gfDBmHCQ== - -acorn@^7.1.0, acorn@^7.1.1, acorn@^7.4.0: - version "7.4.1" - resolved "https://registry.yarnpkg.com/acorn/-/acorn-7.4.1.tgz#feaed255973d2e77555b83dbc08851a6c63520fa" - integrity sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A== - -address@^1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/address/-/address-1.1.2.tgz#bf1116c9c758c51b7a933d296b72c221ed9428b6" - integrity sha512-aT6camzM4xEA54YVJYSqxz1kv4IHnQZRtThJJHhUMRExaU5spC7jX5ugSwTaTgJliIgs4VhZOk7htClvQ/LmRA== - -ajv-errors@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/ajv-errors/-/ajv-errors-1.0.1.tgz#f35986aceb91afadec4102fbd85014950cefa64d" - integrity sha512-DCRfO/4nQ+89p/RK43i8Ezd41EqdGIU4ld7nGF8OQ14oc/we5rEntLCUa7+jrn3nn83BosfwZA0wb4pon2o8iQ== - -ajv-keywords@^3.1.0, ajv-keywords@^3.4.1, ajv-keywords@^3.5.2: - version "3.5.2" - resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-3.5.2.tgz#31f29da5ab6e00d1c2d329acf7b5929614d5014d" - integrity sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ== - -ajv@^6.1.0, ajv@^6.10.0, ajv@^6.10.2, ajv@^6.12.2, ajv@^6.12.3, ajv@^6.12.4: - version "6.12.6" - resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.6.tgz#baf5a62e802b07d977034586f8c3baf5adf26df4" - integrity sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g== - dependencies: - fast-deep-equal "^3.1.1" - fast-json-stable-stringify "^2.0.0" - json-schema-traverse "^0.4.1" - uri-js "^4.2.2" - -ajv@^8.0.1: - version "8.6.0" - resolved "https://registry.yarnpkg.com/ajv/-/ajv-8.6.0.tgz#60cc45d9c46a477d80d92c48076d972c342e5720" - integrity sha512-cnUG4NSBiM4YFBxgZIj/In3/6KX+rQ2l2YPRVcvAMQGWEPKuXoPIhxzwqh31jA3IPbI4qEOp/5ILI4ynioXsGQ== - dependencies: - fast-deep-equal "^3.1.1" - json-schema-traverse "^1.0.0" - require-from-string "^2.0.2" - uri-js "^4.2.2" - -alphanum-sort@^1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/alphanum-sort/-/alphanum-sort-1.0.2.tgz#97a1119649b211ad33691d9f9f486a8ec9fbe0a3" - integrity sha1-l6ERlkmyEa0zaR2fn0hqjsn74KM= - -ansi-colors@^3.0.0: - version "3.2.4" - resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-3.2.4.tgz#e3a3da4bfbae6c86a9c285625de124a234026fbf" - integrity sha512-hHUXGagefjN2iRrID63xckIvotOXOojhQKWIPUZ4mNUZ9nLZW+7FMNoE1lOkEhNWYsx/7ysGIuJYCiMAA9FnrA== - -ansi-colors@^4.1.1: - version "4.1.1" - resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-4.1.1.tgz#cbb9ae256bf750af1eab344f229aa27fe94ba348" - integrity sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA== - -ansi-escapes@^4.2.1: - version "4.3.2" - resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-4.3.2.tgz#6b2291d1db7d98b6521d5f1efa42d0f3a9feb65e" - integrity sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ== - dependencies: - type-fest "^0.21.3" - -ansi-html@0.0.7: - version "0.0.7" - resolved "https://registry.yarnpkg.com/ansi-html/-/ansi-html-0.0.7.tgz#813584021962a9e9e6fd039f940d12f56ca7859e" - integrity sha1-gTWEAhliqenm/QOflA0S9WynhZ4= - -ansi-regex@^2.0.0: - version "2.1.1" - resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-2.1.1.tgz#c3b33ab5ee360d86e0e628f0468ae7ef27d654df" - integrity sha1-w7M6te42DYbg5ijwRorn7yfWVN8= - -ansi-regex@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-3.0.0.tgz#ed0317c322064f79466c02966bddb605ab37d998" - integrity sha1-7QMXwyIGT3lGbAKWa922Bas32Zg= - -ansi-regex@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-4.1.0.tgz#8b9f8f08cf1acb843756a839ca8c7e3168c51997" - integrity sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg== - -ansi-regex@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.0.tgz#388539f55179bf39339c81af30a654d69f87cb75" - integrity sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg== - -ansi-styles@^2.2.1: - version "2.2.1" - resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-2.2.1.tgz#b432dd3358b634cf75e1e4664368240533c1ddbe" - integrity sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4= - -ansi-styles@^3.2.0, ansi-styles@^3.2.1: - version "3.2.1" - resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d" - integrity sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA== - dependencies: - color-convert "^1.9.0" - -ansi-styles@^4.0.0, ansi-styles@^4.1.0: - version "4.3.0" - resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-4.3.0.tgz#edd803628ae71c04c85ae7a0906edad34b648937" - integrity sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg== - dependencies: - color-convert "^2.0.1" - -any-promise@^1.0.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/any-promise/-/any-promise-1.3.0.tgz#abc6afeedcea52e809cdc0376aed3ce39635d17f" - integrity sha1-q8av7tzqUugJzcA3au0845Y10X8= - -anymatch@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-2.0.0.tgz#bcb24b4f37934d9aa7ac17b4adaf89e7c76ef2eb" - integrity sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw== - dependencies: - micromatch "^3.1.4" - normalize-path "^2.1.1" - -anymatch@^3.0.0, anymatch@~3.1.1: - version "3.1.2" - resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.2.tgz#c0557c096af32f106198f4f4e2a383537e378716" - integrity sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg== - dependencies: - normalize-path "^3.0.0" - picomatch "^2.0.4" - -aproba@^1.1.1: - version "1.2.0" - resolved "https://registry.yarnpkg.com/aproba/-/aproba-1.2.0.tgz#6802e6264efd18c790a1b0d517f0f2627bf2c94a" - integrity sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw== - -arch@^2.1.1: - version "2.2.0" - resolved "https://registry.yarnpkg.com/arch/-/arch-2.2.0.tgz#1bc47818f305764f23ab3306b0bfc086c5a29d11" - integrity sha512-Of/R0wqp83cgHozfIYLbBMnej79U/SVGOOyuB3VVFv1NRM/PSFMK12x9KVtiYzJqmnU5WR2qp0Z5rHb7sWGnFQ== - -argparse@^1.0.7: - version "1.0.10" - resolved "https://registry.yarnpkg.com/argparse/-/argparse-1.0.10.tgz#bcd6791ea5ae09725e17e5ad988134cd40b3d911" - integrity sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg== - dependencies: - sprintf-js "~1.0.2" - -arr-diff@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/arr-diff/-/arr-diff-4.0.0.tgz#d6461074febfec71e7e15235761a329a5dc7c520" - integrity sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA= - -arr-flatten@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/arr-flatten/-/arr-flatten-1.1.0.tgz#36048bbff4e7b47e136644316c99669ea5ae91f1" - integrity sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg== - -arr-union@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/arr-union/-/arr-union-3.1.0.tgz#e39b09aea9def866a8f206e288af63919bae39c4" - integrity sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ= - -array-flatten@1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/array-flatten/-/array-flatten-1.1.1.tgz#9a5f699051b1e7073328f2a008968b64ea2955d2" - integrity sha1-ml9pkFGx5wczKPKgCJaLZOopVdI= - -array-flatten@^2.1.0: - version "2.1.2" - resolved "https://registry.yarnpkg.com/array-flatten/-/array-flatten-2.1.2.tgz#24ef80a28c1a893617e2149b0c6d0d788293b099" - integrity sha512-hNfzcOV8W4NdualtqBFPyVO+54DSJuZGY9qT4pRroB6S9e3iiido2ISIC5h9R2sPJ8H3FHCIiEnsv1lPXO3KtQ== - -array-union@^1.0.1, array-union@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/array-union/-/array-union-1.0.2.tgz#9a34410e4f4e3da23dea375be5be70f24778ec39" - integrity sha1-mjRBDk9OPaI96jdb5b5w8kd47Dk= - dependencies: - array-uniq "^1.0.1" - -array-union@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/array-union/-/array-union-2.1.0.tgz#b798420adbeb1de828d84acd8a2e23d3efe85e8d" - integrity sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw== - -array-uniq@^1.0.1: - version "1.0.3" - resolved "https://registry.yarnpkg.com/array-uniq/-/array-uniq-1.0.3.tgz#af6ac877a25cc7f74e058894753858dfdb24fdb6" - integrity sha1-r2rId6Jcx/dOBYiUdThY39sk/bY= - -array-unique@^0.3.2: - version "0.3.2" - resolved "https://registry.yarnpkg.com/array-unique/-/array-unique-0.3.2.tgz#a894b75d4bc4f6cd679ef3244a9fd8f46ae2d428" - integrity sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg= - -asn1.js@^5.2.0: - version "5.4.1" - resolved "https://registry.yarnpkg.com/asn1.js/-/asn1.js-5.4.1.tgz#11a980b84ebb91781ce35b0fdc2ee294e3783f07" - integrity sha512-+I//4cYPccV8LdmBLiX8CYvf9Sp3vQsrqu2QNXRcrbiWvcx/UdlFiqUJJzxRQxgsZmvhXhn4cSKeSmoFjVdupA== - dependencies: - bn.js "^4.0.0" - inherits "^2.0.1" - minimalistic-assert "^1.0.0" - safer-buffer "^2.1.0" - -asn1@~0.2.3: - version "0.2.4" - resolved "https://registry.yarnpkg.com/asn1/-/asn1-0.2.4.tgz#8d2475dfab553bb33e77b54e59e880bb8ce23136" - integrity sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg== - dependencies: - safer-buffer "~2.1.0" - -assert-plus@1.0.0, assert-plus@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/assert-plus/-/assert-plus-1.0.0.tgz#f12e0f3c5d77b0b1cdd9146942e4e96c1e4dd525" - integrity sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU= - -assert@^1.1.1: - version "1.5.0" - resolved "https://registry.yarnpkg.com/assert/-/assert-1.5.0.tgz#55c109aaf6e0aefdb3dc4b71240c70bf574b18eb" - integrity sha512-EDsgawzwoun2CZkCgtxJbv392v4nbk9XDD06zI+kQYoBM/3RBWLlEyJARDOmhAAosBjWACEkKL6S+lIZtcAubA== - dependencies: - object-assign "^4.1.1" - util "0.10.3" - -assign-symbols@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/assign-symbols/-/assign-symbols-1.0.0.tgz#59667f41fadd4f20ccbc2bb96b8d4f7f78ec0367" - integrity sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c= - -astral-regex@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/astral-regex/-/astral-regex-2.0.0.tgz#483143c567aeed4785759c0865786dc77d7d2e31" - integrity sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ== - -async-each@^1.0.1: - version "1.0.3" - resolved "https://registry.yarnpkg.com/async-each/-/async-each-1.0.3.tgz#b727dbf87d7651602f06f4d4ac387f47d91b0cbf" - integrity sha512-z/WhQ5FPySLdvREByI2vZiTWwCnF0moMJ1hK9YQwDTHKh6I7/uSckMetoRGb5UBZPC1z0jlw+n/XCgjeH7y1AQ== - -async-limiter@~1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/async-limiter/-/async-limiter-1.0.1.tgz#dd379e94f0db8310b08291f9d64c3209766617fd" - integrity sha512-csOlWGAcRFJaI6m+F2WKdnMKr4HhdhFVBk0H/QbJFMCr+uO2kwohwXQPxw/9OCxp05r5ghVBFSyioixx3gfkNQ== - -async@^2.6.2: - version "2.6.3" - resolved "https://registry.yarnpkg.com/async/-/async-2.6.3.tgz#d72625e2344a3656e3a3ad4fa749fa83299d82ff" - integrity sha512-zflvls11DCy+dQWzTW2dzuilv8Z5X/pjfmZOWba6TNIVDm+2UDaJmXSOXlasHKfNBs8oo3M0aT50fDEWfKZjXg== - dependencies: - lodash "^4.17.14" - -asynckit@^0.4.0: - version "0.4.0" - resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79" - integrity sha1-x57Zf380y48robyXkLzDZkdLS3k= - -at-least-node@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/at-least-node/-/at-least-node-1.0.0.tgz#602cd4b46e844ad4effc92a8011a3c46e0238dc2" - integrity sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg== - -atob@^2.1.2: - version "2.1.2" - resolved "https://registry.yarnpkg.com/atob/-/atob-2.1.2.tgz#6d9517eb9e030d2436666651e86bd9f6f13533c9" - integrity sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg== - -autoprefixer@^9.8.6: - version "9.8.6" - resolved "https://registry.yarnpkg.com/autoprefixer/-/autoprefixer-9.8.6.tgz#3b73594ca1bf9266320c5acf1588d74dea74210f" - integrity sha512-XrvP4VVHdRBCdX1S3WXVD8+RyG9qeb1D5Sn1DeLiG2xfSpzellk5k54xbUERJ3M5DggQxes39UGOTP8CFrEGbg== - dependencies: - browserslist "^4.12.0" - caniuse-lite "^1.0.30001109" - colorette "^1.2.1" - normalize-range "^0.1.2" - num2fraction "^1.2.2" - postcss "^7.0.32" - postcss-value-parser "^4.1.0" - -aws-sign2@~0.7.0: - version "0.7.0" - resolved "https://registry.yarnpkg.com/aws-sign2/-/aws-sign2-0.7.0.tgz#b46e890934a9591f2d2f6f86d7e6a9f1b3fe76a8" - integrity sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg= - -aws4@^1.8.0: - version "1.11.0" - resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.11.0.tgz#d61f46d83b2519250e2784daf5b09479a8b41c59" - integrity sha512-xh1Rl34h6Fi1DC2WWKfxUTVqRsNnr6LsKz2+hfwDxQJWmrx8+c7ylaqBMcHfl1U1r2dsifOvKX3LQuLNZ+XSvA== - -axios@^0.21.1: - version "0.21.1" - resolved "https://registry.yarnpkg.com/axios/-/axios-0.21.1.tgz#22563481962f4d6bde9a76d516ef0e5d3c09b2b8" - integrity sha512-dKQiRHxGD9PPRIUNIWvZhPTPpl1rf/OxTYKsqKUDjBwYylTvV7SjSHJb9ratfyzM6wCdLCOYLzs73qpg5c4iGA== - dependencies: - follow-redirects "^1.10.0" - -babel-code-frame@^6.22.0: - version "6.26.0" - resolved "https://registry.yarnpkg.com/babel-code-frame/-/babel-code-frame-6.26.0.tgz#63fd43f7dc1e3bb7ce35947db8fe369a3f58c74b" - integrity sha1-Y/1D99weO7fONZR9uP42mj9Yx0s= - dependencies: - chalk "^1.1.3" - esutils "^2.0.2" - js-tokens "^3.0.2" - -babel-eslint@^10.1.0: - version "10.1.0" - resolved "https://registry.yarnpkg.com/babel-eslint/-/babel-eslint-10.1.0.tgz#6968e568a910b78fb3779cdd8b6ac2f479943232" - integrity sha512-ifWaTHQ0ce+448CYop8AdrQiBsGrnC+bMgfyKFdi6EsPLTAWG+QfyDeM6OH+FmWnKvEq5NnBMLvlBUPKQZoDSg== - dependencies: - "@babel/code-frame" "^7.0.0" - "@babel/parser" "^7.7.0" - "@babel/traverse" "^7.7.0" - "@babel/types" "^7.7.0" - eslint-visitor-keys "^1.0.0" - resolve "^1.12.0" - -babel-extract-comments@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/babel-extract-comments/-/babel-extract-comments-1.0.0.tgz#0a2aedf81417ed391b85e18b4614e693a0351a21" - integrity sha512-qWWzi4TlddohA91bFwgt6zO/J0X+io7Qp184Fw0m2JYRSTZnJbFR8+07KmzudHCZgOiKRCrjhylwv9Xd8gfhVQ== - dependencies: - babylon "^6.18.0" - -babel-loader@^8.1.0: - version "8.2.2" - resolved "https://registry.yarnpkg.com/babel-loader/-/babel-loader-8.2.2.tgz#9363ce84c10c9a40e6c753748e1441b60c8a0b81" - integrity sha512-JvTd0/D889PQBtUXJ2PXaKU/pjZDMtHA9V2ecm+eNRmmBCMR09a+fmpGTNwnJtFmFl5Ei7Vy47LjBb+L0wQ99g== - dependencies: - find-cache-dir "^3.3.1" - loader-utils "^1.4.0" - make-dir "^3.1.0" - schema-utils "^2.6.5" - -babel-plugin-dynamic-import-node@^2.3.3: - version "2.3.3" - resolved "https://registry.yarnpkg.com/babel-plugin-dynamic-import-node/-/babel-plugin-dynamic-import-node-2.3.3.tgz#84fda19c976ec5c6defef57f9427b3def66e17a3" - integrity sha512-jZVI+s9Zg3IqA/kdi0i6UDCybUI3aSBLnglhYbSSjKlV7yF1F/5LWv8MakQmvYpnbJDS6fcBL2KzHSxNCMtWSQ== - dependencies: - object.assign "^4.1.0" - -babel-plugin-polyfill-corejs2@^0.2.0: - version "0.2.2" - resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.2.2.tgz#e9124785e6fd94f94b618a7954e5693053bf5327" - integrity sha512-kISrENsJ0z5dNPq5eRvcctITNHYXWOA4DUZRFYCz3jYCcvTb/A546LIddmoGNMVYg2U38OyFeNosQwI9ENTqIQ== - dependencies: - "@babel/compat-data" "^7.13.11" - "@babel/helper-define-polyfill-provider" "^0.2.2" - semver "^6.1.1" - -babel-plugin-polyfill-corejs3@^0.2.0: - version "0.2.2" - resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.2.2.tgz#7424a1682ee44baec817327710b1b094e5f8f7f5" - integrity sha512-l1Cf8PKk12eEk5QP/NQ6TH8A1pee6wWDJ96WjxrMXFLHLOBFzYM4moG80HFgduVhTqAFez4alnZKEhP/bYHg0A== - dependencies: - "@babel/helper-define-polyfill-provider" "^0.2.2" - core-js-compat "^3.9.1" - -babel-plugin-polyfill-regenerator@^0.2.0: - version "0.2.2" - resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.2.2.tgz#b310c8d642acada348c1fa3b3e6ce0e851bee077" - integrity sha512-Goy5ghsc21HgPDFtzRkSirpZVW35meGoTmTOb2bxqdl60ghub4xOidgNTHaZfQ2FaxQsKmwvXtOAkcIS4SMBWg== - dependencies: - "@babel/helper-define-polyfill-provider" "^0.2.2" - -babel-plugin-syntax-object-rest-spread@^6.8.0: - version "6.13.0" - resolved "https://registry.yarnpkg.com/babel-plugin-syntax-object-rest-spread/-/babel-plugin-syntax-object-rest-spread-6.13.0.tgz#fd6536f2bce13836ffa3a5458c4903a597bb3bf5" - integrity sha1-/WU28rzhODb/o6VFjEkDpZe7O/U= - -babel-plugin-transform-object-rest-spread@^6.26.0: - version "6.26.0" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-object-rest-spread/-/babel-plugin-transform-object-rest-spread-6.26.0.tgz#0f36692d50fef6b7e2d4b3ac1478137a963b7b06" - integrity sha1-DzZpLVD+9rfi1LOsFHgTepY7ewY= - dependencies: - babel-plugin-syntax-object-rest-spread "^6.8.0" - babel-runtime "^6.26.0" - -babel-runtime@^6.26.0: - version "6.26.0" - resolved "https://registry.yarnpkg.com/babel-runtime/-/babel-runtime-6.26.0.tgz#965c7058668e82b55d7bfe04ff2337bc8b5647fe" - integrity sha1-llxwWGaOgrVde/4E/yM3vItWR/4= - dependencies: - core-js "^2.4.0" - regenerator-runtime "^0.11.0" - -babylon@^6.18.0: - version "6.18.0" - resolved "https://registry.yarnpkg.com/babylon/-/babylon-6.18.0.tgz#af2f3b88fa6f5c1e4c634d1a0f8eac4f55b395e3" - integrity sha512-q/UEjfGJ2Cm3oKV71DJz9d25TPnq5rhBVL2Q4fA5wcC3jcrdn7+SssEybFIxwAvvP+YCsCYNKughoF33GxgycQ== - -balanced-match@^1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee" - integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw== - -base64-js@^1.0.2: - version "1.5.1" - resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.5.1.tgz#1b1b440160a5bf7ad40b650f095963481903930a" - integrity sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA== - -base@^0.11.1: - version "0.11.2" - resolved "https://registry.yarnpkg.com/base/-/base-0.11.2.tgz#7bde5ced145b6d551a90db87f83c558b4eb48a8f" - integrity sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg== - dependencies: - cache-base "^1.0.1" - class-utils "^0.3.5" - component-emitter "^1.2.1" - define-property "^1.0.0" - isobject "^3.0.1" - mixin-deep "^1.2.0" - pascalcase "^0.1.1" - -batch@0.6.1: - version "0.6.1" - resolved "https://registry.yarnpkg.com/batch/-/batch-0.6.1.tgz#dc34314f4e679318093fc760272525f94bf25c16" - integrity sha1-3DQxT05nkxgJP8dgJyUl+UvyXBY= - -bcrypt-pbkdf@^1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz#a4301d389b6a43f9b67ff3ca11a3f6637e360e9e" - integrity sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4= - dependencies: - tweetnacl "^0.14.3" - -bfj@^6.1.1: - version "6.1.2" - resolved "https://registry.yarnpkg.com/bfj/-/bfj-6.1.2.tgz#325c861a822bcb358a41c78a33b8e6e2086dde7f" - integrity sha512-BmBJa4Lip6BPRINSZ0BPEIfB1wUY/9rwbwvIHQA1KjX9om29B6id0wnWXq7m3bn5JrUVjeOTnVuhPT1FiHwPGw== - dependencies: - bluebird "^3.5.5" - check-types "^8.0.3" - hoopy "^0.1.4" - tryer "^1.0.1" - -big.js@^3.1.3: - version "3.2.0" - resolved "https://registry.yarnpkg.com/big.js/-/big.js-3.2.0.tgz#a5fc298b81b9e0dca2e458824784b65c52ba588e" - integrity sha512-+hN/Zh2D08Mx65pZ/4g5bsmNiZUuChDiQfTUQ7qJr4/kuopCr88xZsAXv6mBoZEsUI4OuGHlX59qE94K2mMW8Q== - -big.js@^5.2.2: - version "5.2.2" - resolved "https://registry.yarnpkg.com/big.js/-/big.js-5.2.2.tgz#65f0af382f578bcdc742bd9c281e9cb2d7768328" - integrity sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ== - -binary-extensions@^1.0.0: - version "1.13.1" - resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-1.13.1.tgz#598afe54755b2868a5330d2aff9d4ebb53209b65" - integrity sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw== - -binary-extensions@^2.0.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-2.2.0.tgz#75f502eeaf9ffde42fc98829645be4ea76bd9e2d" - integrity sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA== - -bindings@^1.5.0: - version "1.5.0" - resolved "https://registry.yarnpkg.com/bindings/-/bindings-1.5.0.tgz#10353c9e945334bc0511a6d90b38fbc7c9c504df" - integrity sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ== - dependencies: - file-uri-to-path "1.0.0" - -bluebird@^3.1.1, bluebird@^3.5.5, bluebird@^3.7.2: - version "3.7.2" - resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.7.2.tgz#9f229c15be272454ffa973ace0dbee79a1b0c36f" - integrity sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg== - -bn.js@^4.0.0, bn.js@^4.1.0, bn.js@^4.11.9: - version "4.12.0" - resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-4.12.0.tgz#775b3f278efbb9718eec7361f483fb36fbbfea88" - integrity sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA== - -bn.js@^5.0.0, bn.js@^5.1.1: - version "5.2.0" - resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-5.2.0.tgz#358860674396c6997771a9d051fcc1b57d4ae002" - integrity sha512-D7iWRBvnZE8ecXiLj/9wbxH7Tk79fAh8IHaTNq1RWRixsS02W+5qS+iE9yq6RYl0asXx5tw0bLhmT5pIfbSquw== - -body-parser@1.19.0: - version "1.19.0" - resolved "https://registry.yarnpkg.com/body-parser/-/body-parser-1.19.0.tgz#96b2709e57c9c4e09a6fd66a8fd979844f69f08a" - integrity sha512-dhEPs72UPbDnAQJ9ZKMNTP6ptJaionhP5cBb541nXPlW60Jepo9RV/a4fX4XWW9CuFNK22krhrj1+rgzifNCsw== - dependencies: - bytes "3.1.0" - content-type "~1.0.4" - debug "2.6.9" - depd "~1.1.2" - http-errors "1.7.2" - iconv-lite "0.4.24" - on-finished "~2.3.0" - qs "6.7.0" - raw-body "2.4.0" - type-is "~1.6.17" - -bonjour@^3.5.0: - version "3.5.0" - resolved "https://registry.yarnpkg.com/bonjour/-/bonjour-3.5.0.tgz#8e890a183d8ee9a2393b3844c691a42bcf7bc9f5" - integrity sha1-jokKGD2O6aI5OzhExpGkK897yfU= - dependencies: - array-flatten "^2.1.0" - deep-equal "^1.0.1" - dns-equal "^1.0.0" - dns-txt "^2.0.2" - multicast-dns "^6.0.1" - multicast-dns-service-types "^1.1.0" - -boolbase@^1.0.0, boolbase@~1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/boolbase/-/boolbase-1.0.0.tgz#68dff5fbe60c51eb37725ea9e3ed310dcc1e776e" - integrity sha1-aN/1++YMUes3cl6p4+0xDcwed24= - -bootstrap-vue@^2.21.2: - version "2.21.2" - resolved "https://registry.yarnpkg.com/bootstrap-vue/-/bootstrap-vue-2.21.2.tgz#ec38f66c3a2205becccddb6158a991d96509ed0b" - integrity sha512-0Exe+4MZysqhZNXIKf4TzkvXaupxh9EHsoCRez0o5Dc0J7rlafayOEwql63qXv74CgZO8E4U8ugRNJko1vMvNw== - dependencies: - "@nuxt/opencollective" "^0.3.2" - bootstrap ">=4.5.3 <5.0.0" - popper.js "^1.16.1" - portal-vue "^2.1.7" - vue-functional-data-merge "^3.1.0" - -"bootstrap@>=4.5.3 <5.0.0": - version "4.6.0" - resolved "https://registry.yarnpkg.com/bootstrap/-/bootstrap-4.6.0.tgz#97b9f29ac98f98dfa43bf7468262d84392552fd7" - integrity sha512-Io55IuQY3kydzHtbGvQya3H+KorS/M9rSNyfCGCg9WZ4pyT/lCxIlpJgG1GXW/PswzC84Tr2fBYi+7+jFVQQBw== - -brace-expansion@^1.1.7: - version "1.1.11" - resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" - integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA== - dependencies: - balanced-match "^1.0.0" - concat-map "0.0.1" - -braces@^2.3.1, braces@^2.3.2: - version "2.3.2" - resolved "https://registry.yarnpkg.com/braces/-/braces-2.3.2.tgz#5979fd3f14cd531565e5fa2df1abfff1dfaee729" - integrity sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w== - dependencies: - arr-flatten "^1.1.0" - array-unique "^0.3.2" - extend-shallow "^2.0.1" - fill-range "^4.0.0" - isobject "^3.0.1" - repeat-element "^1.1.2" - snapdragon "^0.8.1" - snapdragon-node "^2.0.1" - split-string "^3.0.2" - to-regex "^3.0.1" - -braces@^3.0.1, braces@~3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.2.tgz#3454e1a462ee8d599e236df336cd9ea4f8afe107" - integrity sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A== - dependencies: - fill-range "^7.0.1" - -brorand@^1.0.1, brorand@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/brorand/-/brorand-1.1.0.tgz#12c25efe40a45e3c323eb8675a0a0ce57b22371f" - integrity sha1-EsJe/kCkXjwyPrhnWgoM5XsiNx8= - -browserify-aes@^1.0.0, browserify-aes@^1.0.4: - version "1.2.0" - resolved "https://registry.yarnpkg.com/browserify-aes/-/browserify-aes-1.2.0.tgz#326734642f403dabc3003209853bb70ad428ef48" - integrity sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA== - 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" - -browserify-cipher@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/browserify-cipher/-/browserify-cipher-1.0.1.tgz#8d6474c1b870bfdabcd3bcfcc1934a10e94f15f0" - integrity sha512-sPhkz0ARKbf4rRQt2hTpAHqn47X3llLkUGn+xEJzLjwY8LRs2p0v7ljvI5EyoRO/mexrNunNECisZs+gw2zz1w== - dependencies: - browserify-aes "^1.0.4" - browserify-des "^1.0.0" - evp_bytestokey "^1.0.0" - -browserify-des@^1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/browserify-des/-/browserify-des-1.0.2.tgz#3af4f1f59839403572f1c66204375f7a7f703e9c" - integrity sha512-BioO1xf3hFwz4kc6iBhI3ieDFompMhrMlnDFC4/0/vd5MokpuAc3R+LYbwTA9A5Yc9pq9UYPqffKpW2ObuwX5A== - dependencies: - cipher-base "^1.0.1" - des.js "^1.0.0" - inherits "^2.0.1" - safe-buffer "^5.1.2" - -browserify-rsa@^4.0.0, browserify-rsa@^4.0.1: - version "4.1.0" - resolved "https://registry.yarnpkg.com/browserify-rsa/-/browserify-rsa-4.1.0.tgz#b2fd06b5b75ae297f7ce2dc651f918f5be158c8d" - integrity sha512-AdEER0Hkspgno2aR97SAf6vi0y0k8NuOpGnVH3O99rcA5Q6sh8QxcngtHuJ6uXwnfAXNM4Gn1Gb7/MV1+Ymbog== - dependencies: - bn.js "^5.0.0" - randombytes "^2.0.1" - -browserify-sign@^4.0.0: - version "4.2.1" - resolved "https://registry.yarnpkg.com/browserify-sign/-/browserify-sign-4.2.1.tgz#eaf4add46dd54be3bb3b36c0cf15abbeba7956c3" - integrity sha512-/vrA5fguVAKKAVTNJjgSm1tRQDHUU6DbwO9IROu/0WAzC8PKhucDSh18J0RMvVeHAn5puMd+QHC2erPRNf8lmg== - 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" - -browserify-zlib@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/browserify-zlib/-/browserify-zlib-0.2.0.tgz#2869459d9aa3be245fe8fe2ca1f46e2e7f54d73f" - integrity sha512-Z942RysHXmJrhqk88FmKBVq/v5tqmSkDz7p54G/MGyjMnCFFnC79XWNbg+Vta8W6Wb2qtSZTSxIGkJrRpCFEiA== - dependencies: - pako "~1.0.5" - -browserslist@^4.0.0, browserslist@^4.12.0, browserslist@^4.16.6: - version "4.16.6" - resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.16.6.tgz#d7901277a5a88e554ed305b183ec9b0c08f66fa2" - integrity sha512-Wspk/PqO+4W9qp5iUTJsa1B/QrYn1keNCcEP5OvP7WBwT4KaDly0uONYmC6Xa3Z5IqnUgS0KcgLYu1l74x0ZXQ== - dependencies: - caniuse-lite "^1.0.30001219" - colorette "^1.2.2" - electron-to-chromium "^1.3.723" - escalade "^3.1.1" - node-releases "^1.1.71" - -buffer-from@^1.0.0: - version "1.1.1" - resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.1.tgz#32713bc028f75c02fdb710d7c7bcec1f2c6070ef" - integrity sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A== - -buffer-indexof@^1.0.0: - version "1.1.1" - resolved "https://registry.yarnpkg.com/buffer-indexof/-/buffer-indexof-1.1.1.tgz#52fabcc6a606d1a00302802648ef68f639da268c" - integrity sha512-4/rOEg86jivtPTeOUUT61jJO1Ya1TrR/OkqCSZDyq84WJh3LuuiphBYJN+fm5xufIk4XAFcEwte/8WzC8If/1g== - -buffer-json@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/buffer-json/-/buffer-json-2.0.0.tgz#f73e13b1e42f196fe2fd67d001c7d7107edd7c23" - integrity sha512-+jjPFVqyfF1esi9fvfUs3NqM0pH1ziZ36VP4hmA/y/Ssfo/5w5xHKfTw9BwQjoJ1w/oVtpLomqwUHKdefGyuHw== - -buffer-xor@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/buffer-xor/-/buffer-xor-1.0.3.tgz#26e61ed1422fb70dd42e6e36729ed51d855fe8d9" - integrity sha1-JuYe0UIvtw3ULm42cp7VHYVf6Nk= - -buffer@^4.3.0: - version "4.9.2" - resolved "https://registry.yarnpkg.com/buffer/-/buffer-4.9.2.tgz#230ead344002988644841ab0244af8c44bbe3ef8" - integrity sha512-xq+q3SRMOxGivLhBNaUdC64hDTQwejJ+H0T/NB1XMtTVEwNTrfFF3gAxiyW0Bu/xWEGhjVKgUcMhCrUy2+uCWg== - dependencies: - base64-js "^1.0.2" - ieee754 "^1.1.4" - isarray "^1.0.0" - -builtin-modules@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/builtin-modules/-/builtin-modules-1.1.1.tgz#270f076c5a72c02f5b65a47df94c5fe3a278892f" - integrity sha1-Jw8HbFpywC9bZaR9+Uxf46J4iS8= - -builtin-modules@^3.1.0: - version "3.2.0" - resolved "https://registry.yarnpkg.com/builtin-modules/-/builtin-modules-3.2.0.tgz#45d5db99e7ee5e6bc4f362e008bf917ab5049887" - integrity sha512-lGzLKcioL90C7wMczpkY0n/oART3MbBa8R9OFGE1rJxoVI86u4WAGfEk8Wjv10eKSyTHVGkSo3bvBylCEtk7LA== - -builtin-status-codes@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz#85982878e21b98e1c66425e03d0174788f569ee8" - integrity sha1-hZgoeOIbmOHGZCXgPQF0eI9Wnug= - -bytes@3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.0.0.tgz#d32815404d689699f85a4ea4fa8755dd13a96048" - integrity sha1-0ygVQE1olpn4Wk6k+odV3ROpYEg= - -bytes@3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.1.0.tgz#f6cf7933a360e0588fa9fde85651cdc7f805d1f6" - integrity sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg== - -cacache@^12.0.2, cacache@^12.0.3: - version "12.0.4" - resolved "https://registry.yarnpkg.com/cacache/-/cacache-12.0.4.tgz#668bcbd105aeb5f1d92fe25570ec9525c8faa40c" - integrity sha512-a0tMB40oefvuInr4Cwb3GerbL9xTj1D5yg0T5xrjGCGyfvbxseIXX7BAO/u/hIXdafzOI5JC3wDwHyf24buOAQ== - dependencies: - bluebird "^3.5.5" - chownr "^1.1.1" - figgy-pudding "^3.5.1" - glob "^7.1.4" - graceful-fs "^4.1.15" - infer-owner "^1.0.3" - lru-cache "^5.1.1" - mississippi "^3.0.0" - mkdirp "^0.5.1" - move-concurrently "^1.0.1" - promise-inflight "^1.0.1" - rimraf "^2.6.3" - ssri "^6.0.1" - unique-filename "^1.1.1" - y18n "^4.0.0" - -cache-base@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/cache-base/-/cache-base-1.0.1.tgz#0a7f46416831c8b662ee36fe4e7c59d76f666ab2" - integrity sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ== - dependencies: - collection-visit "^1.0.0" - component-emitter "^1.2.1" - get-value "^2.0.6" - has-value "^1.0.0" - isobject "^3.0.1" - set-value "^2.0.0" - to-object-path "^0.3.0" - union-value "^1.0.0" - unset-value "^1.0.0" - -cache-loader@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/cache-loader/-/cache-loader-4.1.0.tgz#9948cae353aec0a1fcb1eafda2300816ec85387e" - integrity sha512-ftOayxve0PwKzBF/GLsZNC9fJBXl8lkZE3TOsjkboHfVHVkL39iUEs1FO07A33mizmci5Dudt38UZrrYXDtbhw== - dependencies: - buffer-json "^2.0.0" - find-cache-dir "^3.0.0" - loader-utils "^1.2.3" - mkdirp "^0.5.1" - neo-async "^2.6.1" - schema-utils "^2.0.0" - -call-bind@^1.0.0, call-bind@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/call-bind/-/call-bind-1.0.2.tgz#b1d4e89e688119c3c9a903ad30abb2f6a919be3c" - integrity sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA== - dependencies: - function-bind "^1.1.1" - get-intrinsic "^1.0.2" - -call-me-maybe@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/call-me-maybe/-/call-me-maybe-1.0.1.tgz#26d208ea89e37b5cbde60250a15f031c16a4d66b" - integrity sha1-JtII6onje1y95gJQoV8DHBak1ms= - -caller-callsite@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/caller-callsite/-/caller-callsite-2.0.0.tgz#847e0fce0a223750a9a027c54b33731ad3154134" - integrity sha1-hH4PzgoiN1CpoCfFSzNzGtMVQTQ= - dependencies: - callsites "^2.0.0" - -caller-path@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/caller-path/-/caller-path-2.0.0.tgz#468f83044e369ab2010fac5f06ceee15bb2cb1f4" - integrity sha1-Ro+DBE42mrIBD6xfBs7uFbsssfQ= - dependencies: - caller-callsite "^2.0.0" - -callsites@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/callsites/-/callsites-2.0.0.tgz#06eb84f00eea413da86affefacbffb36093b3c50" - integrity sha1-BuuE8A7qQT2oav/vrL/7Ngk7PFA= - -callsites@^3.0.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/callsites/-/callsites-3.1.0.tgz#b3630abd8943432f54b3f0519238e33cd7df2f73" - integrity sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ== - -camel-case@3.0.x: - version "3.0.0" - resolved "https://registry.yarnpkg.com/camel-case/-/camel-case-3.0.0.tgz#ca3c3688a4e9cf3a4cda777dc4dcbc713249cf73" - integrity sha1-yjw2iKTpzzpM2nd9xNy8cTJJz3M= - dependencies: - no-case "^2.2.0" - upper-case "^1.1.1" - -camelcase@^5.0.0, camelcase@^5.3.1: - version "5.3.1" - resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-5.3.1.tgz#e3c9b31569e106811df242f715725a1f4c494320" - integrity sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg== - -camelcase@^6.0.0: - version "6.2.0" - resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-6.2.0.tgz#924af881c9d525ac9d87f40d964e5cea982a1809" - integrity sha512-c7wVvbw3f37nuobQNtgsgG9POC9qMbNuMQmTCqZv23b6MIz0fcYpBiOlv9gEN/hdLdnZTDQhg6e9Dq5M1vKvfg== - -caniuse-api@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/caniuse-api/-/caniuse-api-3.0.0.tgz#5e4d90e2274961d46291997df599e3ed008ee4c0" - integrity sha512-bsTwuIg/BZZK/vreVTYYbSWoe2F+71P7K5QGEX+pT250DZbfU1MQ5prOKpPR+LL6uWKK3KMwMCAS74QB3Um1uw== - dependencies: - browserslist "^4.0.0" - caniuse-lite "^1.0.0" - lodash.memoize "^4.1.2" - lodash.uniq "^4.5.0" - -caniuse-lite@^1.0.0, caniuse-lite@^1.0.30001109, caniuse-lite@^1.0.30001219: - version "1.0.30001235" - resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001235.tgz#ad5ca75bc5a1f7b12df79ad806d715a43a5ac4ed" - integrity sha512-zWEwIVqnzPkSAXOUlQnPW2oKoYb2aLQ4Q5ejdjBcnH63rfypaW34CxaeBn1VMya2XaEU3P/R2qHpWyj+l0BT1A== - -case-sensitive-paths-webpack-plugin@^2.3.0: - version "2.4.0" - resolved "https://registry.yarnpkg.com/case-sensitive-paths-webpack-plugin/-/case-sensitive-paths-webpack-plugin-2.4.0.tgz#db64066c6422eed2e08cc14b986ca43796dbc6d4" - integrity sha512-roIFONhcxog0JSSWbvVAh3OocukmSgpqOH6YpMkCvav/ySIV3JKg4Dc8vYtQjYi/UxpNE36r/9v+VqTQqgkYmw== - -caseless@~0.12.0: - version "0.12.0" - resolved "https://registry.yarnpkg.com/caseless/-/caseless-0.12.0.tgz#1b681c21ff84033c826543090689420d187151dc" - integrity sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw= - -chalk@^1.1.3: - version "1.1.3" - resolved "https://registry.yarnpkg.com/chalk/-/chalk-1.1.3.tgz#a8115c55e4a702fe4d150abd3872822a7e09fc98" - integrity sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg= - dependencies: - ansi-styles "^2.2.1" - escape-string-regexp "^1.0.2" - has-ansi "^2.0.0" - strip-ansi "^3.0.0" - supports-color "^2.0.0" - -chalk@^2.0.0, chalk@^2.0.1, chalk@^2.3.0, chalk@^2.4.1, chalk@^2.4.2: - version "2.4.2" - resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" - integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ== - dependencies: - ansi-styles "^3.2.1" - escape-string-regexp "^1.0.5" - supports-color "^5.3.0" - -chalk@^4.0.0, chalk@^4.1.0: - version "4.1.1" - resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.1.tgz#c80b3fab28bf6371e6863325eee67e618b77e6ad" - integrity sha512-diHzdDKxcU+bAsUboHLPEDQiw0qEe0qd7SYUn3HgcFlWgbDcfLGswOHYeGrHKzG9z6UYf01d9VFMfZxPM1xZSg== - dependencies: - ansi-styles "^4.1.0" - supports-color "^7.1.0" - -chardet@^0.7.0: - version "0.7.0" - resolved "https://registry.yarnpkg.com/chardet/-/chardet-0.7.0.tgz#90094849f0937f2eedc2425d0d28a9e5f0cbad9e" - integrity sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA== - -check-types@^8.0.3: - version "8.0.3" - resolved "https://registry.yarnpkg.com/check-types/-/check-types-8.0.3.tgz#3356cca19c889544f2d7a95ed49ce508a0ecf552" - integrity sha512-YpeKZngUmG65rLudJ4taU7VLkOCTMhNl/u4ctNC56LQS/zJTyNH0Lrtwm1tfTsbLlwvlfsA2d1c8vCf/Kh2KwQ== - -chokidar@^2.1.8: - version "2.1.8" - resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-2.1.8.tgz#804b3a7b6a99358c3c5c61e71d8728f041cff917" - integrity sha512-ZmZUazfOzf0Nve7duiCKD23PFSCs4JPoYyccjUFF3aQkQadqBhfzhjkwBH2mNOG9cTBwhamM37EIsIkZw3nRgg== - dependencies: - anymatch "^2.0.0" - async-each "^1.0.1" - braces "^2.3.2" - glob-parent "^3.1.0" - inherits "^2.0.3" - is-binary-path "^1.0.0" - is-glob "^4.0.0" - normalize-path "^3.0.0" - path-is-absolute "^1.0.0" - readdirp "^2.2.1" - upath "^1.1.1" - optionalDependencies: - fsevents "^1.2.7" - -chokidar@^3.3.0, chokidar@^3.4.1: - version "3.5.1" - resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.5.1.tgz#ee9ce7bbebd2b79f49f304799d5468e31e14e68a" - integrity sha512-9+s+Od+W0VJJzawDma/gvBNQqkTiqYTWLuZoyAsivsI4AaWTCzHG06/TMjsf1cYe9Cb97UCEhjz7HvnPk2p/tw== - dependencies: - anymatch "~3.1.1" - braces "~3.0.2" - glob-parent "~5.1.0" - is-binary-path "~2.1.0" - is-glob "~4.0.1" - normalize-path "~3.0.0" - readdirp "~3.5.0" - optionalDependencies: - fsevents "~2.3.1" - -chownr@^1.1.1: - version "1.1.4" - resolved "https://registry.yarnpkg.com/chownr/-/chownr-1.1.4.tgz#6fc9d7b42d32a583596337666e7d08084da2cc6b" - integrity sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg== - -chrome-trace-event@^1.0.2: - version "1.0.3" - resolved "https://registry.yarnpkg.com/chrome-trace-event/-/chrome-trace-event-1.0.3.tgz#1015eced4741e15d06664a957dbbf50d041e26ac" - integrity sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg== - -ci-info@^1.5.0: - version "1.6.0" - resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-1.6.0.tgz#2ca20dbb9ceb32d4524a683303313f0304b1e497" - integrity sha512-vsGdkwSCDpWmP80ncATX7iea5DWQemg1UgCW5J8tqjU3lYw4FBYuj89J0CTVomA7BEfvSZd84GmHko+MxFQU2A== - -cipher-base@^1.0.0, cipher-base@^1.0.1, cipher-base@^1.0.3: - version "1.0.4" - resolved "https://registry.yarnpkg.com/cipher-base/-/cipher-base-1.0.4.tgz#8760e4ecc272f4c363532f926d874aae2c1397de" - integrity sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q== - dependencies: - inherits "^2.0.1" - safe-buffer "^5.0.1" - -class-utils@^0.3.5: - version "0.3.6" - resolved "https://registry.yarnpkg.com/class-utils/-/class-utils-0.3.6.tgz#f93369ae8b9a7ce02fd41faad0ca83033190c463" - integrity sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg== - dependencies: - arr-union "^3.1.0" - define-property "^0.2.5" - isobject "^3.0.0" - static-extend "^0.1.1" - -clean-css@4.2.x: - version "4.2.3" - resolved "https://registry.yarnpkg.com/clean-css/-/clean-css-4.2.3.tgz#507b5de7d97b48ee53d84adb0160ff6216380f78" - integrity sha512-VcMWDN54ZN/DS+g58HYL5/n4Zrqe8vHJpGA8KdgUXFU4fuP/aHNw8eld9SyEIyabIMJX/0RaY/fplOo5hYLSFA== - dependencies: - source-map "~0.6.0" - -cli-cursor@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/cli-cursor/-/cli-cursor-2.1.0.tgz#b35dac376479facc3e94747d41d0d0f5238ffcb5" - integrity sha1-s12sN2R5+sw+lHR9QdDQ9SOP/LU= - dependencies: - restore-cursor "^2.0.0" - -cli-cursor@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/cli-cursor/-/cli-cursor-3.1.0.tgz#264305a7ae490d1d03bf0c9ba7c925d1753af307" - integrity sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw== - dependencies: - restore-cursor "^3.1.0" - -cli-highlight@^2.1.4: - version "2.1.11" - resolved "https://registry.yarnpkg.com/cli-highlight/-/cli-highlight-2.1.11.tgz#49736fa452f0aaf4fae580e30acb26828d2dc1bf" - integrity sha512-9KDcoEVwyUXrjcJNvHD0NFc/hiwe/WPVYIleQh2O1N2Zro5gWJZ/K+3DGn8w8P/F6FxOgzyC5bxDyHIgCSPhGg== - dependencies: - chalk "^4.0.0" - highlight.js "^10.7.1" - mz "^2.4.0" - parse5 "^5.1.1" - parse5-htmlparser2-tree-adapter "^6.0.0" - yargs "^16.0.0" - -cli-spinners@^2.0.0: - version "2.6.0" - resolved "https://registry.yarnpkg.com/cli-spinners/-/cli-spinners-2.6.0.tgz#36c7dc98fb6a9a76bd6238ec3f77e2425627e939" - integrity sha512-t+4/y50K/+4xcCRosKkA7W4gTr1MySvLV0q+PxmG7FJ5g+66ChKurYjxBCjHggHH3HA5Hh9cy+lcUGWDqVH+4Q== - -cli-table3@^0.5.1: - version "0.5.1" - resolved "https://registry.yarnpkg.com/cli-table3/-/cli-table3-0.5.1.tgz#0252372d94dfc40dbd8df06005f48f31f656f202" - integrity sha512-7Qg2Jrep1S/+Q3EceiZtQcDPWxhAvBw+ERf1162v4sikJrvojMHFqXt8QIVha8UlH9rgU0BeWPytZ9/TzYqlUw== - dependencies: - object-assign "^4.1.0" - string-width "^2.1.1" - optionalDependencies: - colors "^1.1.2" - -cli-width@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/cli-width/-/cli-width-3.0.0.tgz#a2f48437a2caa9a22436e794bf071ec9e61cedf6" - integrity sha512-FxqpkPPwu1HjuN93Omfm4h8uIanXofW0RxVEW3k5RKx+mJJYSthzNhp32Kzxxy3YAEZ/Dc/EWN1vZRY0+kOhbw== - -clipboardy@^2.3.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/clipboardy/-/clipboardy-2.3.0.tgz#3c2903650c68e46a91b388985bc2774287dba290" - integrity sha512-mKhiIL2DrQIsuXMgBgnfEHOZOryC7kY7YO//TN6c63wlEm3NG5tz+YgY5rVi29KCmq/QQjKYvM7a19+MDOTHOQ== - dependencies: - arch "^2.1.1" - execa "^1.0.0" - is-wsl "^2.1.1" - -cliui@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/cliui/-/cliui-5.0.0.tgz#deefcfdb2e800784aa34f46fa08e06851c7bbbc5" - integrity sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA== - dependencies: - string-width "^3.1.0" - strip-ansi "^5.2.0" - wrap-ansi "^5.1.0" - -cliui@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/cliui/-/cliui-6.0.0.tgz#511d702c0c4e41ca156d7d0e96021f23e13225b1" - integrity sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ== - dependencies: - string-width "^4.2.0" - strip-ansi "^6.0.0" - wrap-ansi "^6.2.0" - -cliui@^7.0.2: - version "7.0.4" - resolved "https://registry.yarnpkg.com/cliui/-/cliui-7.0.4.tgz#a0265ee655476fc807aea9df3df8df7783808b4f" - integrity sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ== - dependencies: - string-width "^4.2.0" - strip-ansi "^6.0.0" - wrap-ansi "^7.0.0" - -clone@^1.0.2: - version "1.0.4" - resolved "https://registry.yarnpkg.com/clone/-/clone-1.0.4.tgz#da309cc263df15994c688ca902179ca3c7cd7c7e" - integrity sha1-2jCcwmPfFZlMaIypAheco8fNfH4= - -coa@^2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/coa/-/coa-2.0.2.tgz#43f6c21151b4ef2bf57187db0d73de229e3e7ec3" - integrity sha512-q5/jG+YQnSy4nRTV4F7lPepBJZ8qBNJJDBuJdoejDyLXgmL7IEo+Le2JDZudFTFt7mrCqIRaSjws4ygRCTCAXA== - dependencies: - "@types/q" "^1.5.1" - chalk "^2.4.1" - q "^1.1.2" - -collection-visit@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/collection-visit/-/collection-visit-1.0.0.tgz#4bc0373c164bc3291b4d368c829cf1a80a59dca0" - integrity sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA= - dependencies: - map-visit "^1.0.0" - object-visit "^1.0.0" - -color-convert@^1.9.0, color-convert@^1.9.1: - version "1.9.3" - resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8" - integrity sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg== - dependencies: - color-name "1.1.3" - -color-convert@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-2.0.1.tgz#72d3a68d598c9bdb3af2ad1e84f21d896abd4de3" - integrity sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ== - dependencies: - color-name "~1.1.4" - -color-name@1.1.3: - version "1.1.3" - resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25" - integrity sha1-p9BVi9icQveV3UIyj3QIMcpTvCU= - -color-name@^1.0.0, color-name@~1.1.4: - version "1.1.4" - resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2" - integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== - -color-string@^1.5.4: - version "1.5.5" - resolved "https://registry.yarnpkg.com/color-string/-/color-string-1.5.5.tgz#65474a8f0e7439625f3d27a6a19d89fc45223014" - integrity sha512-jgIoum0OfQfq9Whcfc2z/VhCNcmQjWbey6qBX0vqt7YICflUmBCh9E9CiQD5GSJ+Uehixm3NUwHVhqUAWRivZg== - dependencies: - color-name "^1.0.0" - simple-swizzle "^0.2.2" - -color@^3.0.0: - version "3.1.3" - resolved "https://registry.yarnpkg.com/color/-/color-3.1.3.tgz#ca67fb4e7b97d611dcde39eceed422067d91596e" - integrity sha512-xgXAcTHa2HeFCGLE9Xs/R82hujGtu9Jd9x4NW3T34+OMs7VoPsjwzRczKHvTAHeJwWFwX5j15+MgAppE8ztObQ== - dependencies: - color-convert "^1.9.1" - color-string "^1.5.4" - -colorette@^1.2.1, colorette@^1.2.2: - version "1.2.2" - resolved "https://registry.yarnpkg.com/colorette/-/colorette-1.2.2.tgz#cbcc79d5e99caea2dbf10eb3a26fd8b3e6acfa94" - integrity sha512-MKGMzyfeuutC/ZJ1cba9NqcNpfeqMUcYmyF1ZFY6/Cn7CNSAKx6a+s48sqLqyAiZuaP2TcqMhoo+dlwFnVxT9w== - -colors@^1.1.2: - version "1.4.0" - resolved "https://registry.yarnpkg.com/colors/-/colors-1.4.0.tgz#c50491479d4c1bdaed2c9ced32cf7c7dc2360f78" - integrity sha512-a+UqTh4kgZg/SlGvfbzDHpgRu7AAQOmmqRHJnxhRZICKFUT91brVhNNt58CMWU9PsBbv3PDCZUHbVxuDiH2mtA== - -combined-stream@^1.0.6, combined-stream@~1.0.6: - version "1.0.8" - resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.8.tgz#c3d45a8b34fd730631a110a8a2520682b31d5a7f" - integrity sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg== - dependencies: - delayed-stream "~1.0.0" - -commander@2.17.x: - version "2.17.1" - resolved "https://registry.yarnpkg.com/commander/-/commander-2.17.1.tgz#bd77ab7de6de94205ceacc72f1716d29f20a77bf" - integrity sha512-wPMUt6FnH2yzG95SA6mzjQOEKUU3aLaDEmzs1ti+1E9h+CsrZghRlqEM/EJ4KscsQVG8uNN4uVreUeT8+drlgg== - -commander@^2.12.1, commander@^2.18.0, commander@^2.20.0: - version "2.20.3" - resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.3.tgz#fd485e84c03eb4881c20722ba48035e8531aeb33" - integrity sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ== - -commander@~2.19.0: - version "2.19.0" - resolved "https://registry.yarnpkg.com/commander/-/commander-2.19.0.tgz#f6198aa84e5b83c46054b94ddedbfed5ee9ff12a" - integrity sha512-6tvAOO+D6OENvRAh524Dh9jcfKTYDQAqvqezbCW82xj5X0pSrcpxtvRKHLG0yBY6SD7PSDrJaj+0AiOcKVd1Xg== - -common-tags@^1.8.0: - version "1.8.0" - resolved "https://registry.yarnpkg.com/common-tags/-/common-tags-1.8.0.tgz#8e3153e542d4a39e9b10554434afaaf98956a937" - integrity sha512-6P6g0uetGpW/sdyUy/iQQCbFF0kWVMSIVSyYz7Zgjcgh8mgw8PQzDNZeyZ5DQ2gM7LBoZPHmnjz8rUthkBG5tw== - -commondir@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/commondir/-/commondir-1.0.1.tgz#ddd800da0c66127393cca5950ea968a3aaf1253b" - integrity sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs= - -component-emitter@^1.2.1: - version "1.3.0" - resolved "https://registry.yarnpkg.com/component-emitter/-/component-emitter-1.3.0.tgz#16e4070fba8ae29b679f2215853ee181ab2eabc0" - integrity sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg== - -compressible@~2.0.16: - version "2.0.18" - resolved "https://registry.yarnpkg.com/compressible/-/compressible-2.0.18.tgz#af53cca6b070d4c3c0750fbd77286a6d7cc46fba" - integrity sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg== - dependencies: - mime-db ">= 1.43.0 < 2" - -compression@^1.7.4: - version "1.7.4" - resolved "https://registry.yarnpkg.com/compression/-/compression-1.7.4.tgz#95523eff170ca57c29a0ca41e6fe131f41e5bb8f" - integrity sha512-jaSIDzP9pZVS4ZfQ+TzvtiWhdpFhE2RDHz8QJkpX9SIpLq88VueF5jJw6t+6CUQcAoA6t+x89MLrWAqpfDE8iQ== - dependencies: - accepts "~1.3.5" - bytes "3.0.0" - compressible "~2.0.16" - debug "2.6.9" - on-headers "~1.0.2" - safe-buffer "5.1.2" - vary "~1.1.2" - -concat-map@0.0.1: - version "0.0.1" - resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" - integrity sha1-2Klr13/Wjfd5OnMDajug1UBdR3s= - -concat-stream@^1.5.0: - version "1.6.2" - resolved "https://registry.yarnpkg.com/concat-stream/-/concat-stream-1.6.2.tgz#904bdf194cd3122fc675c77fc4ac3d4ff0fd1a34" - integrity sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw== - dependencies: - buffer-from "^1.0.0" - inherits "^2.0.3" - readable-stream "^2.2.2" - typedarray "^0.0.6" - -connect-history-api-fallback@^1.6.0: - version "1.6.0" - resolved "https://registry.yarnpkg.com/connect-history-api-fallback/-/connect-history-api-fallback-1.6.0.tgz#8b32089359308d111115d81cad3fceab888f97bc" - integrity sha512-e54B99q/OUoH64zYYRf3HBP5z24G38h5D3qXu23JGRoigpX5Ss4r9ZnDk3g0Z8uQC2x2lPaJ+UlWBc1ZWBWdLg== - -consola@^2.15.0: - version "2.15.3" - resolved "https://registry.yarnpkg.com/consola/-/consola-2.15.3.tgz#2e11f98d6a4be71ff72e0bdf07bd23e12cb61550" - integrity sha512-9vAdYbHj6x2fLKC4+oPH0kFzY/orMZyG2Aj+kNylHxKGJ/Ed4dpNyAQYwJOdqO4zdM7XpVHmyejQDcQHrnuXbw== - -console-browserify@^1.1.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/console-browserify/-/console-browserify-1.2.0.tgz#67063cef57ceb6cf4993a2ab3a55840ae8c49336" - integrity sha512-ZMkYO/LkF17QvCPqM0gxw8yUzigAOZOSWSHg91FH6orS7vcEj5dVZTidN2fQ14yBSdg97RqhSNwLUXInd52OTA== - -consolidate@^0.15.1: - version "0.15.1" - resolved "https://registry.yarnpkg.com/consolidate/-/consolidate-0.15.1.tgz#21ab043235c71a07d45d9aad98593b0dba56bab7" - integrity sha512-DW46nrsMJgy9kqAbPt5rKaCr7uFtpo4mSUvLHIUbJEjm0vo+aY5QLwBUq3FK4tRnJr/X0Psc0C4jf/h+HtXSMw== - dependencies: - bluebird "^3.1.1" - -consolidate@^0.16.0: - version "0.16.0" - resolved "https://registry.yarnpkg.com/consolidate/-/consolidate-0.16.0.tgz#a11864768930f2f19431660a65906668f5fbdc16" - integrity sha512-Nhl1wzCslqXYTJVDyJCu3ODohy9OfBMB5uD2BiBTzd7w+QY0lBzafkR8y8755yMYHAaMD4NuzbAw03/xzfw+eQ== - dependencies: - bluebird "^3.7.2" - -constants-browserify@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/constants-browserify/-/constants-browserify-1.0.0.tgz#c20b96d8c617748aaf1c16021760cd27fcb8cb75" - integrity sha1-wguW2MYXdIqvHBYCF2DNJ/y4y3U= - -content-disposition@0.5.3: - version "0.5.3" - resolved "https://registry.yarnpkg.com/content-disposition/-/content-disposition-0.5.3.tgz#e130caf7e7279087c5616c2007d0485698984fbd" - integrity sha512-ExO0774ikEObIAEV9kDo50o+79VCUdEB6n6lzKgGwupcVeRlhrj3qGAfwq8G6uBJjkqLrhT0qEYFcWng8z1z0g== - dependencies: - safe-buffer "5.1.2" - -content-type@~1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/content-type/-/content-type-1.0.4.tgz#e138cc75e040c727b1966fe5e5f8c9aee256fe3b" - integrity sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA== - -convert-source-map@^1.7.0: - version "1.7.0" - resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.7.0.tgz#17a2cb882d7f77d3490585e2ce6c524424a3a442" - integrity sha512-4FJkXzKXEDB1snCFZlLP4gpC3JILicCpGbzG9f9G7tGqGCzETQ2hWPrcinA9oU4wtf2biUaEH5065UnMeR33oA== - dependencies: - safe-buffer "~5.1.1" - -cookie-signature@1.0.6: - version "1.0.6" - resolved "https://registry.yarnpkg.com/cookie-signature/-/cookie-signature-1.0.6.tgz#e303a882b342cc3ee8ca513a79999734dab3ae2c" - integrity sha1-4wOogrNCzD7oylE6eZmXNNqzriw= - -cookie@0.4.0: - version "0.4.0" - resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.4.0.tgz#beb437e7022b3b6d49019d088665303ebe9c14ba" - integrity sha512-+Hp8fLp57wnUSt0tY0tHEXh4voZRDnoIrZPqlo3DPiI4y9lwg/jqx+1Om94/W6ZaPDOUbnjOt/99w66zk+l1Xg== - -copy-concurrently@^1.0.0: - version "1.0.5" - resolved "https://registry.yarnpkg.com/copy-concurrently/-/copy-concurrently-1.0.5.tgz#92297398cae34937fcafd6ec8139c18051f0b5e0" - integrity sha512-f2domd9fsVDFtaFcbaRZuYXwtdmnzqbADSwhSWYxYB/Q8zsdUUFMXVRwXGDMWmbEzAn1kdRrtI1T/KTFOL4X2A== - dependencies: - aproba "^1.1.1" - fs-write-stream-atomic "^1.0.8" - iferr "^0.1.5" - mkdirp "^0.5.1" - rimraf "^2.5.4" - run-queue "^1.0.0" - -copy-descriptor@^0.1.0: - version "0.1.1" - resolved "https://registry.yarnpkg.com/copy-descriptor/-/copy-descriptor-0.1.1.tgz#676f6eb3c39997c2ee1ac3a924fd6124748f578d" - integrity sha1-Z29us8OZl8LuGsOpJP1hJHSPV40= - -copy-webpack-plugin@^5.1.1: - version "5.1.2" - resolved "https://registry.yarnpkg.com/copy-webpack-plugin/-/copy-webpack-plugin-5.1.2.tgz#8a889e1dcafa6c91c6cd4be1ad158f1d3823bae2" - integrity sha512-Uh7crJAco3AjBvgAy9Z75CjK8IG+gxaErro71THQ+vv/bl4HaQcpkexAY8KVW/T6D2W2IRr+couF/knIRkZMIQ== - dependencies: - cacache "^12.0.3" - find-cache-dir "^2.1.0" - glob-parent "^3.1.0" - globby "^7.1.1" - is-glob "^4.0.1" - loader-utils "^1.2.3" - minimatch "^3.0.4" - normalize-path "^3.0.0" - p-limit "^2.2.1" - schema-utils "^1.0.0" - serialize-javascript "^4.0.0" - webpack-log "^2.0.0" - -core-js-compat@^3.6.5, core-js-compat@^3.9.0, core-js-compat@^3.9.1: - version "3.14.0" - resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.14.0.tgz#b574dabf29184681d5b16357bd33d104df3d29a5" - integrity sha512-R4NS2eupxtiJU+VwgkF9WTpnSfZW4pogwKHd8bclWU2sp93Pr5S1uYJI84cMOubJRou7bcfL0vmwtLslWN5p3A== - dependencies: - browserslist "^4.16.6" - semver "7.0.0" - -core-js@^2.4.0: - version "2.6.12" - resolved "https://registry.yarnpkg.com/core-js/-/core-js-2.6.12.tgz#d9333dfa7b065e347cc5682219d6f690859cc2ec" - integrity sha512-Kb2wC0fvsWfQrgk8HU5lW6U/Lcs8+9aaYcy4ZFc6DDlo4nZ7n70dEgE5rtR0oG6ufKDUnrwfWL1mXR5ljDatrQ== - -core-js@^3.14.0, core-js@^3.6.5: - version "3.14.0" - resolved "https://registry.yarnpkg.com/core-js/-/core-js-3.14.0.tgz#62322b98c71cc2018b027971a69419e2425c2a6c" - integrity sha512-3s+ed8er9ahK+zJpp9ZtuVcDoFzHNiZsPbNAAE4KXgrRHbjSqqNN6xGSXq6bq7TZIbKj4NLrLb6bJ5i+vSVjHA== - -core-util-is@1.0.2, core-util-is@~1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7" - integrity sha1-tf1UIgqivFq1eqtxQMlAdUUDwac= - -cosmiconfig@^5.0.0: - version "5.2.1" - resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-5.2.1.tgz#040f726809c591e77a17c0a3626ca45b4f168b1a" - integrity sha512-H65gsXo1SKjf8zmrJ67eJk8aIRKV5ff2D4uKZIBZShbhGSpEmsQOPW/SKMKYhSTrqR7ufy6RP69rPogdaPh/kA== - dependencies: - import-fresh "^2.0.0" - is-directory "^0.3.1" - js-yaml "^3.13.1" - parse-json "^4.0.0" - -cosmiconfig@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-6.0.0.tgz#da4fee853c52f6b1e6935f41c1a2fc50bd4a9982" - integrity sha512-xb3ZL6+L8b9JLLCx3ZdoZy4+2ECphCMo2PwqgP1tlfVq6M6YReyzBJtvWWtbDSpNr9hn96pkCiZqUcFEc+54Qg== - dependencies: - "@types/parse-json" "^4.0.0" - import-fresh "^3.1.0" - parse-json "^5.0.0" - path-type "^4.0.0" - yaml "^1.7.2" - -create-ecdh@^4.0.0: - version "4.0.4" - resolved "https://registry.yarnpkg.com/create-ecdh/-/create-ecdh-4.0.4.tgz#d6e7f4bffa66736085a0762fd3a632684dabcc4e" - integrity sha512-mf+TCx8wWc9VpuxfP2ht0iSISLZnt0JgWlrOKZiNqyUZWnjIaCIVNQArMHnCZKfEYRg6IM7A+NeJoN8gf/Ws0A== - dependencies: - bn.js "^4.1.0" - elliptic "^6.5.3" - -create-hash@^1.1.0, create-hash@^1.1.2, create-hash@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/create-hash/-/create-hash-1.2.0.tgz#889078af11a63756bcfb59bd221996be3a9ef196" - integrity sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg== - dependencies: - 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@^1.1.0, create-hmac@^1.1.4, create-hmac@^1.1.7: - version "1.1.7" - resolved "https://registry.yarnpkg.com/create-hmac/-/create-hmac-1.1.7.tgz#69170c78b3ab957147b2b8b04572e47ead2243ff" - integrity sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg== - 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" - -cross-spawn@^5.0.1: - version "5.1.0" - resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-5.1.0.tgz#e8bd0efee58fcff6f8f94510a0a554bbfa235449" - integrity sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk= - dependencies: - lru-cache "^4.0.1" - shebang-command "^1.2.0" - which "^1.2.9" - -cross-spawn@^6.0.0: - version "6.0.5" - resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-6.0.5.tgz#4a5ec7c64dfae22c3a14124dbacdee846d80cbc4" - integrity sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ== - dependencies: - nice-try "^1.0.4" - path-key "^2.0.1" - semver "^5.5.0" - shebang-command "^1.2.0" - which "^1.2.9" - -cross-spawn@^7.0.0, cross-spawn@^7.0.2: - version "7.0.3" - resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.3.tgz#f73a85b9d5d41d045551c177e2882d4ac85728a6" - integrity sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w== - dependencies: - path-key "^3.1.0" - shebang-command "^2.0.0" - which "^2.0.1" - -crypto-browserify@^3.11.0: - version "3.12.0" - resolved "https://registry.yarnpkg.com/crypto-browserify/-/crypto-browserify-3.12.0.tgz#396cf9f3137f03e4b8e532c58f698254e00f80ec" - integrity sha512-fz4spIh+znjO2VjL+IdhEpRJ3YN6sMzITSBijk6FK2UvTqruSQW+/cCZTSNsMiZNvUeq0CqurF+dAbyiGOY6Wg== - 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" - -crypto-random-string@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/crypto-random-string/-/crypto-random-string-1.0.0.tgz#a230f64f568310e1498009940790ec99545bca7e" - integrity sha1-ojD2T1aDEOFJgAmUB5DsmVRbyn4= - -crypto-random-string@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/crypto-random-string/-/crypto-random-string-2.0.0.tgz#ef2a7a966ec11083388369baa02ebead229b30d5" - integrity sha512-v1plID3y9r/lPhviJ1wrXpLeyUIGAZ2SHNYTEapm7/8A9nLPoyvVp3RK/EPFqn5kEznyWgYZNsRtYYIWbuG8KA== - -css-color-names@0.0.4, css-color-names@^0.0.4: - version "0.0.4" - resolved "https://registry.yarnpkg.com/css-color-names/-/css-color-names-0.0.4.tgz#808adc2e79cf84738069b646cb20ec27beb629e0" - integrity sha1-gIrcLnnPhHOAabZGyyDsJ762KeA= - -css-declaration-sorter@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/css-declaration-sorter/-/css-declaration-sorter-4.0.1.tgz#c198940f63a76d7e36c1e71018b001721054cb22" - integrity sha512-BcxQSKTSEEQUftYpBVnsH4SF05NTuBokb19/sBt6asXGKZ/6VP7PLG1CBCkFDYOnhXhPh0jMhO6xZ71oYHXHBA== - dependencies: - postcss "^7.0.1" - timsort "^0.3.0" - -css-loader@^3.5.3: - version "3.6.0" - resolved "https://registry.yarnpkg.com/css-loader/-/css-loader-3.6.0.tgz#2e4b2c7e6e2d27f8c8f28f61bffcd2e6c91ef645" - integrity sha512-M5lSukoWi1If8dhQAUCvj4H8vUt3vOnwbQBH9DdTm/s4Ym2B/3dPMtYZeJmq7Q3S3Pa+I94DcZ7pc9bP14cWIQ== - dependencies: - camelcase "^5.3.1" - cssesc "^3.0.0" - icss-utils "^4.1.1" - loader-utils "^1.2.3" - normalize-path "^3.0.0" - postcss "^7.0.32" - postcss-modules-extract-imports "^2.0.0" - postcss-modules-local-by-default "^3.0.2" - postcss-modules-scope "^2.2.0" - postcss-modules-values "^3.0.0" - postcss-value-parser "^4.1.0" - schema-utils "^2.7.0" - semver "^6.3.0" - -css-select-base-adapter@^0.1.1: - version "0.1.1" - resolved "https://registry.yarnpkg.com/css-select-base-adapter/-/css-select-base-adapter-0.1.1.tgz#3b2ff4972cc362ab88561507a95408a1432135d7" - integrity sha512-jQVeeRG70QI08vSTwf1jHxp74JoZsr2XSgETae8/xC8ovSnL2WF87GTLO86Sbwdt2lK4Umg4HnnwMO4YF3Ce7w== - -css-select@^2.0.0, css-select@^2.0.2: - version "2.1.0" - resolved "https://registry.yarnpkg.com/css-select/-/css-select-2.1.0.tgz#6a34653356635934a81baca68d0255432105dbef" - integrity sha512-Dqk7LQKpwLoH3VovzZnkzegqNSuAziQyNZUcrdDM401iY+R5NkGBXGmtO05/yaXQziALuPogeG0b7UAgjnTJTQ== - dependencies: - boolbase "^1.0.0" - css-what "^3.2.1" - domutils "^1.7.0" - nth-check "^1.0.2" - -css-tree@1.0.0-alpha.37: - version "1.0.0-alpha.37" - resolved "https://registry.yarnpkg.com/css-tree/-/css-tree-1.0.0-alpha.37.tgz#98bebd62c4c1d9f960ec340cf9f7522e30709a22" - integrity sha512-DMxWJg0rnz7UgxKT0Q1HU/L9BeJI0M6ksor0OgqOnF+aRCDWg/N2641HmVyU9KVIu0OVVWOb2IpC9A+BJRnejg== - dependencies: - mdn-data "2.0.4" - source-map "^0.6.1" - -css-tree@^1.1.2: - version "1.1.3" - resolved "https://registry.yarnpkg.com/css-tree/-/css-tree-1.1.3.tgz#eb4870fb6fd7707327ec95c2ff2ab09b5e8db91d" - integrity sha512-tRpdppF7TRazZrjJ6v3stzv93qxRcSsFmW6cX0Zm2NVKpxE1WV1HblnghVv9TreireHkqI/VDEsfolRF1p6y7Q== - dependencies: - mdn-data "2.0.14" - source-map "^0.6.1" - -css-what@^3.2.1: - version "3.4.2" - resolved "https://registry.yarnpkg.com/css-what/-/css-what-3.4.2.tgz#ea7026fcb01777edbde52124e21f327e7ae950e4" - integrity sha512-ACUm3L0/jiZTqfzRM3Hi9Q8eZqd6IK37mMWPLz9PJxkLWllYeRf+EHUSHYEtFop2Eqytaq1FizFVh7XfBnXCDQ== - -cssesc@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/cssesc/-/cssesc-3.0.0.tgz#37741919903b868565e1c09ea747445cd18983ee" - integrity sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg== - -cssnano-preset-default@^4.0.0, cssnano-preset-default@^4.0.8: - version "4.0.8" - resolved "https://registry.yarnpkg.com/cssnano-preset-default/-/cssnano-preset-default-4.0.8.tgz#920622b1fc1e95a34e8838203f1397a504f2d3ff" - integrity sha512-LdAyHuq+VRyeVREFmuxUZR1TXjQm8QQU/ktoo/x7bz+SdOge1YKc5eMN6pRW7YWBmyq59CqYba1dJ5cUukEjLQ== - dependencies: - css-declaration-sorter "^4.0.1" - cssnano-util-raw-cache "^4.0.1" - postcss "^7.0.0" - postcss-calc "^7.0.1" - postcss-colormin "^4.0.3" - postcss-convert-values "^4.0.1" - postcss-discard-comments "^4.0.2" - postcss-discard-duplicates "^4.0.2" - postcss-discard-empty "^4.0.1" - postcss-discard-overridden "^4.0.1" - postcss-merge-longhand "^4.0.11" - postcss-merge-rules "^4.0.3" - postcss-minify-font-values "^4.0.2" - postcss-minify-gradients "^4.0.2" - postcss-minify-params "^4.0.2" - postcss-minify-selectors "^4.0.2" - postcss-normalize-charset "^4.0.1" - postcss-normalize-display-values "^4.0.2" - postcss-normalize-positions "^4.0.2" - postcss-normalize-repeat-style "^4.0.2" - postcss-normalize-string "^4.0.2" - postcss-normalize-timing-functions "^4.0.2" - postcss-normalize-unicode "^4.0.1" - postcss-normalize-url "^4.0.1" - postcss-normalize-whitespace "^4.0.2" - postcss-ordered-values "^4.1.2" - postcss-reduce-initial "^4.0.3" - postcss-reduce-transforms "^4.0.2" - postcss-svgo "^4.0.3" - postcss-unique-selectors "^4.0.1" - -cssnano-util-get-arguments@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/cssnano-util-get-arguments/-/cssnano-util-get-arguments-4.0.0.tgz#ed3a08299f21d75741b20f3b81f194ed49cc150f" - integrity sha1-7ToIKZ8h11dBsg87gfGU7UnMFQ8= - -cssnano-util-get-match@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/cssnano-util-get-match/-/cssnano-util-get-match-4.0.0.tgz#c0e4ca07f5386bb17ec5e52250b4f5961365156d" - integrity sha1-wOTKB/U4a7F+xeUiULT1lhNlFW0= - -cssnano-util-raw-cache@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/cssnano-util-raw-cache/-/cssnano-util-raw-cache-4.0.1.tgz#b26d5fd5f72a11dfe7a7846fb4c67260f96bf282" - integrity sha512-qLuYtWK2b2Dy55I8ZX3ky1Z16WYsx544Q0UWViebptpwn/xDBmog2TLg4f+DBMg1rJ6JDWtn96WHbOKDWt1WQA== - dependencies: - postcss "^7.0.0" - -cssnano-util-same-parent@^4.0.0: - version "4.0.1" - resolved "https://registry.yarnpkg.com/cssnano-util-same-parent/-/cssnano-util-same-parent-4.0.1.tgz#574082fb2859d2db433855835d9a8456ea18bbf3" - integrity sha512-WcKx5OY+KoSIAxBW6UBBRay1U6vkYheCdjyVNDm85zt5K9mHoGOfsOsqIszfAqrQQFIIKgjh2+FDgIj/zsl21Q== - -cssnano@^4.0.0, cssnano@^4.1.10: - version "4.1.11" - resolved "https://registry.yarnpkg.com/cssnano/-/cssnano-4.1.11.tgz#c7b5f5b81da269cb1fd982cb960c1200910c9a99" - integrity sha512-6gZm2htn7xIPJOHY824ERgj8cNPgPxyCSnkXc4v7YvNW+TdVfzgngHcEhy/8D11kUWRUMbke+tC+AUcUsnMz2g== - dependencies: - cosmiconfig "^5.0.0" - cssnano-preset-default "^4.0.8" - is-resolvable "^1.0.0" - postcss "^7.0.0" - -csso@^4.0.2: - version "4.2.0" - resolved "https://registry.yarnpkg.com/csso/-/csso-4.2.0.tgz#ea3a561346e8dc9f546d6febedd50187cf389529" - integrity sha512-wvlcdIbf6pwKEk7vHj8/Bkc0B4ylXZruLvOgs9doS5eOsOpuodOV2zJChSpkp+pRpYQLQMeF04nr3Z68Sta9jA== - dependencies: - css-tree "^1.1.2" - -cyclist@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/cyclist/-/cyclist-1.0.1.tgz#596e9698fd0c80e12038c2b82d6eb1b35b6224d9" - integrity sha1-WW6WmP0MgOEgOMK4LW6xs1tiJNk= - -dashdash@^1.12.0: - version "1.14.1" - resolved "https://registry.yarnpkg.com/dashdash/-/dashdash-1.14.1.tgz#853cfa0f7cbe2fed5de20326b8dd581035f6e2f0" - integrity sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA= - dependencies: - assert-plus "^1.0.0" - -de-indent@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/de-indent/-/de-indent-1.0.2.tgz#b2038e846dc33baa5796128d0804b455b8c1e21d" - integrity sha1-sgOOhG3DO6pXlhKNCAS0VbjB4h0= - -debug@2.6.9, debug@^2.2.0, debug@^2.3.3: - version "2.6.9" - resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" - integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA== - dependencies: - ms "2.0.0" - -debug@^3.1.1, debug@^3.2.6: - version "3.2.7" - resolved "https://registry.yarnpkg.com/debug/-/debug-3.2.7.tgz#72580b7e9145fb39b6676f9c5e5fb100b934179a" - integrity sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ== - dependencies: - ms "^2.1.1" - -debug@^4.0.1, debug@^4.1.0, debug@^4.1.1, debug@^4.3.0, debug@^4.3.1: - version "4.3.1" - resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.1.tgz#f0d229c505e0c6d8c49ac553d1b13dc183f6b2ee" - integrity sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ== - dependencies: - ms "2.1.2" - -decamelize@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290" - integrity sha1-9lNNFRSCabIDUue+4m9QH5oZEpA= - -decode-uri-component@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/decode-uri-component/-/decode-uri-component-0.2.0.tgz#eb3913333458775cb84cd1a1fae062106bb87545" - integrity sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU= - -deep-equal@^1.0.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/deep-equal/-/deep-equal-1.1.1.tgz#b5c98c942ceffaf7cb051e24e1434a25a2e6076a" - integrity sha512-yd9c5AdiqVcR+JjcwUQb9DkhJc8ngNr0MahEBGvDiJw8puWab2yZlh+nkasOnZP+EGTAP6rRp2JzJhJZzvNF8g== - dependencies: - is-arguments "^1.0.4" - is-date-object "^1.0.1" - is-regex "^1.0.4" - object-is "^1.0.1" - object-keys "^1.1.1" - regexp.prototype.flags "^1.2.0" - -deep-is@^0.1.3: - version "0.1.3" - resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.3.tgz#b369d6fb5dbc13eecf524f91b070feedc357cf34" - integrity sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ= - -deepmerge@^1.5.2: - version "1.5.2" - resolved "https://registry.yarnpkg.com/deepmerge/-/deepmerge-1.5.2.tgz#10499d868844cdad4fee0842df8c7f6f0c95a753" - integrity sha512-95k0GDqvBjZavkuvzx/YqVLv/6YYa17fz6ILMSf7neqQITCPbnfEnQvEgMPNjH4kgobe7+WIL0yJEHku+H3qtQ== - -deepmerge@^4.2.0, deepmerge@^4.2.2: - version "4.2.2" - resolved "https://registry.yarnpkg.com/deepmerge/-/deepmerge-4.2.2.tgz#44d2ea3679b8f4d4ffba33f03d865fc1e7bf4955" - integrity sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg== - -default-gateway@^4.2.0: - version "4.2.0" - resolved "https://registry.yarnpkg.com/default-gateway/-/default-gateway-4.2.0.tgz#167104c7500c2115f6dd69b0a536bb8ed720552b" - integrity sha512-h6sMrVB1VMWVrW13mSc6ia/DwYYw5MN6+exNu1OaJeFac5aSAvwM7lZ0NVfTABuSkQelr4h5oebg3KB1XPdjgA== - dependencies: - execa "^1.0.0" - ip-regex "^2.1.0" - -default-gateway@^5.0.5: - version "5.0.5" - resolved "https://registry.yarnpkg.com/default-gateway/-/default-gateway-5.0.5.tgz#4fd6bd5d2855d39b34cc5a59505486e9aafc9b10" - integrity sha512-z2RnruVmj8hVMmAnEJMTIJNijhKCDiGjbLP+BHJFOT7ld3Bo5qcIBpVYDniqhbMIIf+jZDlkP2MkPXiQy/DBLA== - dependencies: - execa "^3.3.0" - -defaults@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/defaults/-/defaults-1.0.3.tgz#c656051e9817d9ff08ed881477f3fe4019f3ef7d" - integrity sha1-xlYFHpgX2f8I7YgUd/P+QBnz730= - dependencies: - clone "^1.0.2" - -define-properties@^1.1.2, define-properties@^1.1.3: - version "1.1.3" - resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.1.3.tgz#cf88da6cbee26fe6db7094f61d870cbd84cee9f1" - integrity sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ== - dependencies: - object-keys "^1.0.12" - -define-property@^0.2.5: - version "0.2.5" - resolved "https://registry.yarnpkg.com/define-property/-/define-property-0.2.5.tgz#c35b1ef918ec3c990f9a5bc57be04aacec5c8116" - integrity sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY= - dependencies: - is-descriptor "^0.1.0" - -define-property@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/define-property/-/define-property-1.0.0.tgz#769ebaaf3f4a63aad3af9e8d304c9bbe79bfb0e6" - integrity sha1-dp66rz9KY6rTr56NMEybvnm/sOY= - dependencies: - is-descriptor "^1.0.0" - -define-property@^2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/define-property/-/define-property-2.0.2.tgz#d459689e8d654ba77e02a817f8710d702cb16e9d" - integrity sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ== - dependencies: - is-descriptor "^1.0.2" - isobject "^3.0.1" - -del@^4.1.1: - version "4.1.1" - resolved "https://registry.yarnpkg.com/del/-/del-4.1.1.tgz#9e8f117222ea44a31ff3a156c049b99052a9f0b4" - integrity sha512-QwGuEUouP2kVwQenAsOof5Fv8K9t3D8Ca8NxcXKrIpEHjTXK5J2nXLdP+ALI1cgv8wj7KuwBhTwBkOZSJKM5XQ== - dependencies: - "@types/glob" "^7.1.1" - globby "^6.1.0" - is-path-cwd "^2.0.0" - is-path-in-cwd "^2.0.0" - p-map "^2.0.0" - pify "^4.0.1" - rimraf "^2.6.3" - -delayed-stream@~1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619" - integrity sha1-3zrhmayt+31ECqrgsp4icrJOxhk= - -depd@~1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/depd/-/depd-1.1.2.tgz#9bcd52e14c097763e749b274c4346ed2e560b5a9" - integrity sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak= - -des.js@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/des.js/-/des.js-1.0.1.tgz#5382142e1bdc53f85d86d53e5f4aa7deb91e0843" - integrity sha512-Q0I4pfFrv2VPd34/vfLrFOoRmlYj3OV50i7fskps1jZWK1kApMWWT9G6RRUeYedLcBDIhnSDaUvJMb3AhUlaEA== - dependencies: - inherits "^2.0.1" - minimalistic-assert "^1.0.0" - -destroy@~1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/destroy/-/destroy-1.0.4.tgz#978857442c44749e4206613e37946205826abd80" - integrity sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA= - -detect-node@^2.0.4: - version "2.1.0" - resolved "https://registry.yarnpkg.com/detect-node/-/detect-node-2.1.0.tgz#c9c70775a49c3d03bc2c06d9a73be550f978f8b1" - integrity sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g== - -diff@^4.0.1: - version "4.0.2" - resolved "https://registry.yarnpkg.com/diff/-/diff-4.0.2.tgz#60f3aecb89d5fae520c11aa19efc2bb982aade7d" - integrity sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A== - -diffie-hellman@^5.0.0: - version "5.0.3" - resolved "https://registry.yarnpkg.com/diffie-hellman/-/diffie-hellman-5.0.3.tgz#40e8ee98f55a2149607146921c63e1ae5f3d2875" - integrity sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg== - dependencies: - bn.js "^4.1.0" - miller-rabin "^4.0.0" - randombytes "^2.0.0" - -dir-glob@^2.0.0, dir-glob@^2.2.2: - version "2.2.2" - resolved "https://registry.yarnpkg.com/dir-glob/-/dir-glob-2.2.2.tgz#fa09f0694153c8918b18ba0deafae94769fc50c4" - integrity sha512-f9LBi5QWzIW3I6e//uxZoLBlUt9kcp66qo0sSCxL6YZKc75R1c4MFCoe/LaZiBGmgujvQdxc5Bn3QhfyvK5Hsw== - dependencies: - path-type "^3.0.0" - -dir-glob@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/dir-glob/-/dir-glob-3.0.1.tgz#56dbf73d992a4a93ba1584f4534063fd2e41717f" - integrity sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA== - dependencies: - path-type "^4.0.0" - -dns-equal@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/dns-equal/-/dns-equal-1.0.0.tgz#b39e7f1da6eb0a75ba9c17324b34753c47e0654d" - integrity sha1-s55/HabrCnW6nBcySzR1PEfgZU0= - -dns-packet@^1.3.1: - version "1.3.4" - resolved "https://registry.yarnpkg.com/dns-packet/-/dns-packet-1.3.4.tgz#e3455065824a2507ba886c55a89963bb107dec6f" - integrity sha512-BQ6F4vycLXBvdrJZ6S3gZewt6rcrks9KBgM9vrhW+knGRqc8uEdT7fuCwloc7nny5xNoMJ17HGH0R/6fpo8ECA== - dependencies: - ip "^1.1.0" - safe-buffer "^5.0.1" - -dns-txt@^2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/dns-txt/-/dns-txt-2.0.2.tgz#b91d806f5d27188e4ab3e7d107d881a1cc4642b6" - integrity sha1-uR2Ab10nGI5Ks+fRB9iBocxGQrY= - dependencies: - buffer-indexof "^1.0.0" - -doctrine@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-3.0.0.tgz#addebead72a6574db783639dc87a121773973961" - integrity sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w== - dependencies: - esutils "^2.0.2" - -dom-converter@^0.2: - version "0.2.0" - resolved "https://registry.yarnpkg.com/dom-converter/-/dom-converter-0.2.0.tgz#6721a9daee2e293682955b6afe416771627bb768" - integrity sha512-gd3ypIPfOMr9h5jIKq8E3sHOTCjeirnl0WK5ZdS1AW0Odt0b1PaWaHdJ4Qk4klv+YB9aJBS7mESXjFoDQPu6DA== - dependencies: - utila "~0.4" - -dom-serializer@0: - version "0.2.2" - resolved "https://registry.yarnpkg.com/dom-serializer/-/dom-serializer-0.2.2.tgz#1afb81f533717175d478655debc5e332d9f9bb51" - integrity sha512-2/xPb3ORsQ42nHYiSunXkDjPLBaEj/xTwUO4B7XCZQTRk7EBtTOPaygh10YAAh2OI1Qrp6NWfpAhzswj0ydt9g== - dependencies: - domelementtype "^2.0.1" - entities "^2.0.0" - -domain-browser@^1.1.1: - version "1.2.0" - resolved "https://registry.yarnpkg.com/domain-browser/-/domain-browser-1.2.0.tgz#3d31f50191a6749dd1375a7f522e823d42e54eda" - integrity sha512-jnjyiM6eRyZl2H+W8Q/zLMA481hzi0eszAaBUzIVnmYVDBbnLxVNnfu1HgEBvCbL+71FrxMl3E6lpKH7Ge3OXA== - -domelementtype@1, domelementtype@^1.3.1: - version "1.3.1" - resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-1.3.1.tgz#d048c44b37b0d10a7f2a3d5fee3f4333d790481f" - integrity sha512-BSKB+TSpMpFI/HOxCNr1O8aMOTZ8hT3pM3GQ0w/mWRmkhEDSFJkkyzz4XQsBV44BChwGkrDfMyjVD0eA2aFV3w== - -domelementtype@^2.0.1: - version "2.2.0" - resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-2.2.0.tgz#9a0b6c2782ed6a1c7323d42267183df9bd8b1d57" - integrity sha512-DtBMo82pv1dFtUmHyr48beiuq792Sxohr+8Hm9zoxklYPfa6n0Z3Byjj2IV7bmr2IyqClnqEQhfgHJJ5QF0R5A== - -domhandler@^2.3.0: - version "2.4.2" - resolved "https://registry.yarnpkg.com/domhandler/-/domhandler-2.4.2.tgz#8805097e933d65e85546f726d60f5eb88b44f803" - integrity sha512-JiK04h0Ht5u/80fdLMCEmV4zkNh2BcoMFBmZ/91WtYZ8qVXSKjiw7fXMgFPnHcSZgOo3XdinHvmnDUeMf5R4wA== - dependencies: - domelementtype "1" - -domutils@^1.5.1, domutils@^1.7.0: - version "1.7.0" - resolved "https://registry.yarnpkg.com/domutils/-/domutils-1.7.0.tgz#56ea341e834e06e6748af7a1cb25da67ea9f8c2a" - integrity sha512-Lgd2XcJ/NjEw+7tFvfKxOzCYKZsdct5lczQ2ZaQY8Djz7pfAD3Gbp8ySJWtreII/vDlMVmxwa6pHmdxIYgttDg== - dependencies: - dom-serializer "0" - domelementtype "1" - -dot-object@^1.7.1: - version "1.9.0" - resolved "https://registry.yarnpkg.com/dot-object/-/dot-object-1.9.0.tgz#6e3d6d8379f794c5174599ddf05528f5990f076e" - integrity sha512-7MPN6y7XhAO4vM4eguj5+5HNKLjJYfkVG1ZR1Aput4Q4TR6SYeSjhpVQ77IzJHoSHffKbDxBC+48aCiiRurDPw== - dependencies: - commander "^2.20.0" - glob "^7.1.4" - -dot-prop@^5.2.0: - version "5.3.0" - resolved "https://registry.yarnpkg.com/dot-prop/-/dot-prop-5.3.0.tgz#90ccce708cd9cd82cc4dc8c3ddd9abdd55b20e88" - integrity sha512-QM8q3zDe58hqUqjraQOmzZ1LIH9SWQJTlEKCH4kJ2oQvLZk7RbQXvtDM2XEq3fwkV9CCvvH4LA0AV+ogFsBM2Q== - dependencies: - is-obj "^2.0.0" - -dotenv-expand@^5.1.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/dotenv-expand/-/dotenv-expand-5.1.0.tgz#3fbaf020bfd794884072ea26b1e9791d45a629f0" - integrity sha512-YXQl1DSa4/PQyRfgrv6aoNjhasp/p4qs9FjJ4q4cQk+8m4r6k4ZSiEyytKG8f8W9gi8WsQtIObNmKd+tMzNTmA== - -dotenv@^8.2.0: - version "8.6.0" - resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-8.6.0.tgz#061af664d19f7f4d8fc6e4ff9b584ce237adcb8b" - integrity sha512-IrPdXQsk2BbzvCBGBOTmmSH5SodmqZNt4ERAZDmW4CT+tL8VtvinqywuANaFu4bOMWki16nqf0e4oC0QIaDr/g== - -duplexer@^0.1.1: - version "0.1.2" - resolved "https://registry.yarnpkg.com/duplexer/-/duplexer-0.1.2.tgz#3abe43aef3835f8ae077d136ddce0f276b0400e6" - integrity sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg== - -duplexify@^3.4.2, duplexify@^3.6.0: - version "3.7.1" - resolved "https://registry.yarnpkg.com/duplexify/-/duplexify-3.7.1.tgz#2a4df5317f6ccfd91f86d6fd25d8d8a103b88309" - integrity sha512-07z8uv2wMyS51kKhD1KsdXJg5WQ6t93RneqRxUHnskXVtlYYkLqM0gqStQZ3pj073g687jPCHrqNfCzawLYh5g== - dependencies: - end-of-stream "^1.0.0" - inherits "^2.0.1" - readable-stream "^2.0.0" - stream-shift "^1.0.0" - -easy-stack@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/easy-stack/-/easy-stack-1.0.1.tgz#8afe4264626988cabb11f3c704ccd0c835411066" - integrity sha512-wK2sCs4feiiJeFXn3zvY0p41mdU5VUgbgs1rNsc/y5ngFUijdWd+iIN8eoyuZHKB8xN6BL4PdWmzqFmxNg6V2w== - -ecc-jsbn@~0.1.1: - version "0.1.2" - resolved "https://registry.yarnpkg.com/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz#3a83a904e54353287874c564b7549386849a98c9" - integrity sha1-OoOpBOVDUyh4dMVkt1SThoSamMk= - dependencies: - jsbn "~0.1.0" - safer-buffer "^2.1.0" - -ee-first@1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d" - integrity sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0= - -ejs@^2.6.1: - version "2.7.4" - resolved "https://registry.yarnpkg.com/ejs/-/ejs-2.7.4.tgz#48661287573dcc53e366c7a1ae52c3a120eec9ba" - integrity sha512-7vmuyh5+kuUyJKePhQfRQBhXV5Ce+RnaeeQArKu1EAMpL3WbgMt5WG6uQZpEVvYSSsxMXRKOewtDk9RaTKXRlA== - -electron-to-chromium@^1.3.723: - version "1.3.749" - resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.749.tgz#0ecebc529ceb49dd2a7c838ae425236644c3439a" - integrity sha512-F+v2zxZgw/fMwPz/VUGIggG4ZndDsYy0vlpthi3tjmDZlcfbhN5mYW0evXUsBr2sUtuDANFtle410A9u/sd/4A== - -elliptic@^6.5.3: - version "6.5.4" - resolved "https://registry.yarnpkg.com/elliptic/-/elliptic-6.5.4.tgz#da37cebd31e79a1367e941b592ed1fbebd58abbb" - integrity sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ== - 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" - -emoji-regex@^7.0.1: - version "7.0.3" - resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-7.0.3.tgz#933a04052860c85e83c122479c4748a8e4c72156" - integrity sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA== - -emoji-regex@^8.0.0: - version "8.0.0" - resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37" - integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A== - -emojis-list@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/emojis-list/-/emojis-list-2.1.0.tgz#4daa4d9db00f9819880c79fa457ae5b09a1fd389" - integrity sha1-TapNnbAPmBmIDHn6RXrlsJof04k= - -emojis-list@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/emojis-list/-/emojis-list-3.0.0.tgz#5570662046ad29e2e916e71aae260abdff4f6a78" - integrity sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q== - -encodeurl@~1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/encodeurl/-/encodeurl-1.0.2.tgz#ad3ff4c86ec2d029322f5a02c3a9a606c95b3f59" - integrity sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k= - -end-of-stream@^1.0.0, end-of-stream@^1.1.0: - version "1.4.4" - resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-1.4.4.tgz#5ae64a5f45057baf3626ec14da0ca5e4b2431eb0" - integrity sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q== - dependencies: - once "^1.4.0" - -enhanced-resolve@^4.0.0, enhanced-resolve@^4.5.0: - version "4.5.0" - resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-4.5.0.tgz#2f3cfd84dbe3b487f18f2db2ef1e064a571ca5ec" - integrity sha512-Nv9m36S/vxpsI+Hc4/ZGRs0n9mXqSWGGq49zxb/cJfPAQMbUtttJAlNPS4AQzaBdw/pKskw5bMbekT/Y7W/Wlg== - dependencies: - graceful-fs "^4.1.2" - memory-fs "^0.5.0" - tapable "^1.0.0" - -enquirer@^2.3.5: - version "2.3.6" - resolved "https://registry.yarnpkg.com/enquirer/-/enquirer-2.3.6.tgz#2a7fe5dd634a1e4125a975ec994ff5456dc3734d" - integrity sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg== - dependencies: - ansi-colors "^4.1.1" - -entities@^1.1.1: - version "1.1.2" - resolved "https://registry.yarnpkg.com/entities/-/entities-1.1.2.tgz#bdfa735299664dfafd34529ed4f8522a275fea56" - integrity sha512-f2LZMYl1Fzu7YSBKg+RoROelpOaNrcGmE9AZubeDfrCEia483oW4MI4VyFd5VNHIgQ/7qm1I0wUHK1eJnn2y2w== - -entities@^2.0.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/entities/-/entities-2.2.0.tgz#098dc90ebb83d8dffa089d55256b351d34c4da55" - integrity sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A== - -errno@^0.1.3, errno@~0.1.7: - version "0.1.8" - resolved "https://registry.yarnpkg.com/errno/-/errno-0.1.8.tgz#8bb3e9c7d463be4976ff888f76b4809ebc2e811f" - integrity sha512-dJ6oBr5SQ1VSd9qkk7ByRgb/1SH4JZjCHSW/mr63/QcXO9zLVxvJ6Oy13nio03rxpSnVDDjFor75SjVeZWPW/A== - dependencies: - prr "~1.0.1" - -error-ex@^1.3.1: - version "1.3.2" - resolved "https://registry.yarnpkg.com/error-ex/-/error-ex-1.3.2.tgz#b4ac40648107fdcdcfae242f428bea8a14d4f1bf" - integrity sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g== - dependencies: - is-arrayish "^0.2.1" - -error-stack-parser@^2.0.2: - version "2.0.6" - resolved "https://registry.yarnpkg.com/error-stack-parser/-/error-stack-parser-2.0.6.tgz#5a99a707bd7a4c58a797902d48d82803ede6aad8" - integrity sha512-d51brTeqC+BHlwF0BhPtcYgF5nlzf9ZZ0ZIUQNZpc9ZB9qw5IJ2diTrBY9jlCJkTLITYPjmiX6OWCwH+fuyNgQ== - dependencies: - stackframe "^1.1.1" - -es-abstract@^1.17.2, es-abstract@^1.18.0-next.2, es-abstract@^1.18.2: - version "1.18.3" - resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.18.3.tgz#25c4c3380a27aa203c44b2b685bba94da31b63e0" - integrity sha512-nQIr12dxV7SSxE6r6f1l3DtAeEYdsGpps13dR0TwJg1S8gyp4ZPgy3FZcHBgbiQqnoqSTb+oC+kO4UQ0C/J8vw== - dependencies: - call-bind "^1.0.2" - es-to-primitive "^1.2.1" - function-bind "^1.1.1" - get-intrinsic "^1.1.1" - has "^1.0.3" - has-symbols "^1.0.2" - is-callable "^1.2.3" - is-negative-zero "^2.0.1" - is-regex "^1.1.3" - is-string "^1.0.6" - object-inspect "^1.10.3" - object-keys "^1.1.1" - object.assign "^4.1.2" - string.prototype.trimend "^1.0.4" - string.prototype.trimstart "^1.0.4" - unbox-primitive "^1.0.1" - -es-to-primitive@^1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/es-to-primitive/-/es-to-primitive-1.2.1.tgz#e55cd4c9cdc188bcefb03b366c736323fc5c898a" - integrity sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA== - dependencies: - is-callable "^1.1.4" - is-date-object "^1.0.1" - is-symbol "^1.0.2" - -escalade@^3.1.1: - version "3.1.1" - resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.1.1.tgz#d8cfdc7000965c5a0174b4a82eaa5c0552742e40" - integrity sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw== - -escape-html@~1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/escape-html/-/escape-html-1.0.3.tgz#0258eae4d3d0c0974de1c169188ef0051d1d1988" - integrity sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg= - -escape-string-regexp@^1.0.2, escape-string-regexp@^1.0.5: - version "1.0.5" - resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" - integrity sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ= - -escape-string-regexp@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz#14ba83a5d373e3d311e5afca29cf5bfad965bf34" - integrity sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA== - -eslint-loader@^2.2.1: - version "2.2.1" - resolved "https://registry.yarnpkg.com/eslint-loader/-/eslint-loader-2.2.1.tgz#28b9c12da54057af0845e2a6112701a2f6bf8337" - integrity sha512-RLgV9hoCVsMLvOxCuNjdqOrUqIj9oJg8hF44vzJaYqsAHuY9G2YAeN3joQ9nxP0p5Th9iFSIpKo+SD8KISxXRg== - dependencies: - loader-fs-cache "^1.0.0" - loader-utils "^1.0.2" - object-assign "^4.0.1" - object-hash "^1.1.4" - rimraf "^2.6.1" - -eslint-plugin-vue@^7.10.0: - version "7.10.0" - resolved "https://registry.yarnpkg.com/eslint-plugin-vue/-/eslint-plugin-vue-7.10.0.tgz#251749aa99e089e085275f011042c6e74189f89a" - integrity sha512-xdr6e4t/L2moRAeEQ9HKgge/hFq+w9v5Dj+BA54nTAzSFdUyKLiSOdZaRQjCHMY0Pk2WaQBFH9QiWG60xiC+6A== - dependencies: - eslint-utils "^2.1.0" - natural-compare "^1.4.0" - semver "^7.3.2" - vue-eslint-parser "^7.6.0" - -eslint-scope@^4.0.3: - version "4.0.3" - resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-4.0.3.tgz#ca03833310f6889a3264781aa82e63eb9cfe7848" - integrity sha512-p7VutNr1O/QrxysMo3E45FjYDTeXBy0iTltPFNSqKAIfjDSXC+4dj+qfyuD8bfAXrW/y6lW3O76VaYNPKfpKrg== - dependencies: - esrecurse "^4.1.0" - estraverse "^4.1.1" - -eslint-scope@^5.0.0, eslint-scope@^5.1.1: - version "5.1.1" - resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-5.1.1.tgz#e786e59a66cb92b3f6c1fb0d508aab174848f48c" - integrity sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw== - dependencies: - esrecurse "^4.3.0" - estraverse "^4.1.1" - -eslint-utils@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/eslint-utils/-/eslint-utils-2.1.0.tgz#d2de5e03424e707dc10c74068ddedae708741b27" - integrity sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg== - dependencies: - eslint-visitor-keys "^1.1.0" - -eslint-utils@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/eslint-utils/-/eslint-utils-3.0.0.tgz#8aebaface7345bb33559db0a1f13a1d2d48c3672" - integrity sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA== - dependencies: - eslint-visitor-keys "^2.0.0" - -eslint-visitor-keys@^1.0.0, eslint-visitor-keys@^1.1.0, eslint-visitor-keys@^1.3.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz#30ebd1ef7c2fdff01c3a4f151044af25fab0523e" - integrity sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ== - -eslint-visitor-keys@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz#f65328259305927392c938ed44eb0a5c9b2bd303" - integrity sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw== - -eslint@^7.28.0: - version "7.28.0" - resolved "https://registry.yarnpkg.com/eslint/-/eslint-7.28.0.tgz#435aa17a0b82c13bb2be9d51408b617e49c1e820" - integrity sha512-UMfH0VSjP0G4p3EWirscJEQ/cHqnT/iuH6oNZOB94nBjWbMnhGEPxsZm1eyIW0C/9jLI0Fow4W5DXLjEI7mn1g== - dependencies: - "@babel/code-frame" "7.12.11" - "@eslint/eslintrc" "^0.4.2" - ajv "^6.10.0" - chalk "^4.0.0" - cross-spawn "^7.0.2" - debug "^4.0.1" - doctrine "^3.0.0" - enquirer "^2.3.5" - escape-string-regexp "^4.0.0" - eslint-scope "^5.1.1" - eslint-utils "^2.1.0" - eslint-visitor-keys "^2.0.0" - espree "^7.3.1" - esquery "^1.4.0" - esutils "^2.0.2" - fast-deep-equal "^3.1.3" - file-entry-cache "^6.0.1" - functional-red-black-tree "^1.0.1" - glob-parent "^5.1.2" - globals "^13.6.0" - ignore "^4.0.6" - import-fresh "^3.0.0" - imurmurhash "^0.1.4" - is-glob "^4.0.0" - js-yaml "^3.13.1" - json-stable-stringify-without-jsonify "^1.0.1" - levn "^0.4.1" - lodash.merge "^4.6.2" - minimatch "^3.0.4" - natural-compare "^1.4.0" - optionator "^0.9.1" - progress "^2.0.0" - regexpp "^3.1.0" - semver "^7.2.1" - strip-ansi "^6.0.0" - strip-json-comments "^3.1.0" - table "^6.0.9" - text-table "^0.2.0" - v8-compile-cache "^2.0.3" - -esm@^3.2.13: - version "3.2.25" - resolved "https://registry.yarnpkg.com/esm/-/esm-3.2.25.tgz#342c18c29d56157688ba5ce31f8431fbb795cc10" - integrity sha512-U1suiZ2oDVWv4zPO56S0NcR5QriEahGtdN2OR6FiOG4WJvcjBVFB0qI4+eKoWFH483PKGuLuu6V8Z4T5g63UVA== - -espree@^6.2.1: - version "6.2.1" - resolved "https://registry.yarnpkg.com/espree/-/espree-6.2.1.tgz#77fc72e1fd744a2052c20f38a5b575832e82734a" - integrity sha512-ysCxRQY3WaXJz9tdbWOwuWr5Y/XrPTGX9Kiz3yoUXwW0VZ4w30HTkQLaGx/+ttFjF8i+ACbArnB4ce68a9m5hw== - dependencies: - acorn "^7.1.1" - acorn-jsx "^5.2.0" - eslint-visitor-keys "^1.1.0" - -espree@^7.3.0, espree@^7.3.1: - version "7.3.1" - resolved "https://registry.yarnpkg.com/espree/-/espree-7.3.1.tgz#f2df330b752c6f55019f8bd89b7660039c1bbbb6" - integrity sha512-v3JCNCE64umkFpmkFGqzVKsOT0tN1Zr+ueqLZfpV1Ob8e+CEgPWa+OxCoGH3tnhimMKIaBm4m/vaRpJ/krRz2g== - dependencies: - acorn "^7.4.0" - acorn-jsx "^5.3.1" - eslint-visitor-keys "^1.3.0" - -esprima@^4.0.0: - version "4.0.1" - resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71" - integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A== - -esquery@^1.4.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/esquery/-/esquery-1.4.0.tgz#2148ffc38b82e8c7057dfed48425b3e61f0f24a5" - integrity sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w== - dependencies: - estraverse "^5.1.0" - -esrecurse@^4.1.0, esrecurse@^4.3.0: - version "4.3.0" - resolved "https://registry.yarnpkg.com/esrecurse/-/esrecurse-4.3.0.tgz#7ad7964d679abb28bee72cec63758b1c5d2c9921" - integrity sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag== - dependencies: - estraverse "^5.2.0" - -estraverse@^4.1.1: - version "4.3.0" - resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.3.0.tgz#398ad3f3c5a24948be7725e83d11a7de28cdbd1d" - integrity sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw== - -estraverse@^5.1.0, estraverse@^5.2.0: - version "5.2.0" - resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-5.2.0.tgz#307df42547e6cc7324d3cf03c155d5cdb8c53880" - integrity sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ== - -estree-walker@^0.6.1: - version "0.6.1" - resolved "https://registry.yarnpkg.com/estree-walker/-/estree-walker-0.6.1.tgz#53049143f40c6eb918b23671d1fe3219f3a1b362" - integrity sha512-SqmZANLWS0mnatqbSfRP5g8OXZC12Fgg1IwNtLsyHDzJizORW4khDfjPqJZsemPWBB2uqykUah5YpQ6epsqC/w== - -estree-walker@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/estree-walker/-/estree-walker-1.0.1.tgz#31bc5d612c96b704106b477e6dd5d8aa138cb700" - integrity sha512-1fMXF3YP4pZZVozF8j/ZLfvnR8NSIljt56UhbZ5PeeDmmGHpgpdwQt7ITlGvYaQukCvuBRMLEiKiYC+oeIg4cg== - -estree-walker@^2.0.1: - version "2.0.2" - resolved "https://registry.yarnpkg.com/estree-walker/-/estree-walker-2.0.2.tgz#52f010178c2a4c117a7757cfe942adb7d2da4cac" - integrity sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w== - -esutils@^2.0.2: - version "2.0.3" - resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.3.tgz#74d2eb4de0b8da1293711910d50775b9b710ef64" - integrity sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g== - -etag@~1.8.1: - version "1.8.1" - resolved "https://registry.yarnpkg.com/etag/-/etag-1.8.1.tgz#41ae2eeb65efa62268aebfea83ac7d79299b0887" - integrity sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc= - -event-pubsub@4.3.0: - version "4.3.0" - resolved "https://registry.yarnpkg.com/event-pubsub/-/event-pubsub-4.3.0.tgz#f68d816bc29f1ec02c539dc58c8dd40ce72cb36e" - integrity sha512-z7IyloorXvKbFx9Bpie2+vMJKKx1fH1EN5yiTfp8CiLOTptSYy1g8H4yDpGlEdshL1PBiFtBHepF2cNsqeEeFQ== - -eventemitter3@^4.0.0: - version "4.0.7" - resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-4.0.7.tgz#2de9b68f6528d5644ef5c59526a1b4a07306169f" - integrity sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw== - -events@^3.0.0: - version "3.3.0" - resolved "https://registry.yarnpkg.com/events/-/events-3.3.0.tgz#31a95ad0a924e2d2c419a813aeb2c4e878ea7400" - integrity sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q== - -eventsource@^1.0.7: - version "1.1.0" - resolved "https://registry.yarnpkg.com/eventsource/-/eventsource-1.1.0.tgz#00e8ca7c92109e94b0ddf32dac677d841028cfaf" - integrity sha512-VSJjT5oCNrFvCS6igjzPAt5hBzQ2qPBFIbJ03zLI9SE0mxwZpMw6BfJrbFHm1a141AavMEB8JHmBhWAd66PfCg== - dependencies: - original "^1.0.0" - -evp_bytestokey@^1.0.0, evp_bytestokey@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz#7fcbdb198dc71959432efe13842684e0525acb02" - integrity sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA== - dependencies: - md5.js "^1.3.4" - safe-buffer "^5.1.1" - -execa@^0.8.0: - version "0.8.0" - resolved "https://registry.yarnpkg.com/execa/-/execa-0.8.0.tgz#d8d76bbc1b55217ed190fd6dd49d3c774ecfc8da" - integrity sha1-2NdrvBtVIX7RkP1t1J08d07PyNo= - dependencies: - cross-spawn "^5.0.1" - get-stream "^3.0.0" - is-stream "^1.1.0" - npm-run-path "^2.0.0" - p-finally "^1.0.0" - signal-exit "^3.0.0" - strip-eof "^1.0.0" - -execa@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/execa/-/execa-1.0.0.tgz#c6236a5bb4df6d6f15e88e7f017798216749ddd8" - integrity sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA== - dependencies: - cross-spawn "^6.0.0" - get-stream "^4.0.0" - is-stream "^1.1.0" - npm-run-path "^2.0.0" - p-finally "^1.0.0" - signal-exit "^3.0.0" - strip-eof "^1.0.0" - -execa@^3.3.0: - version "3.4.0" - resolved "https://registry.yarnpkg.com/execa/-/execa-3.4.0.tgz#c08ed4550ef65d858fac269ffc8572446f37eb89" - integrity sha512-r9vdGQk4bmCuK1yKQu1KTwcT2zwfWdbdaXfCtAh+5nU/4fSX+JAb7vZGvI5naJrQlvONrEB20jeruESI69530g== - 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" - p-finally "^2.0.0" - signal-exit "^3.0.2" - strip-final-newline "^2.0.0" - -expand-brackets@^2.1.4: - version "2.1.4" - resolved "https://registry.yarnpkg.com/expand-brackets/-/expand-brackets-2.1.4.tgz#b77735e315ce30f6b6eff0f83b04151a22449622" - integrity sha1-t3c14xXOMPa27/D4OwQVGiJEliI= - dependencies: - debug "^2.3.3" - define-property "^0.2.5" - extend-shallow "^2.0.1" - posix-character-classes "^0.1.0" - regex-not "^1.0.0" - snapdragon "^0.8.1" - to-regex "^3.0.1" - -express@^4.16.3, express@^4.17.1: - version "4.17.1" - resolved "https://registry.yarnpkg.com/express/-/express-4.17.1.tgz#4491fc38605cf51f8629d39c2b5d026f98a4c134" - integrity sha512-mHJ9O79RqluphRrcw2X/GTh3k9tVv8YcoyY4Kkh4WDMUYKRZUq0h1o0w2rrrxBqM7VoeUVqgb27xlEMXTnYt4g== - dependencies: - accepts "~1.3.7" - array-flatten "1.1.1" - body-parser "1.19.0" - content-disposition "0.5.3" - content-type "~1.0.4" - cookie "0.4.0" - cookie-signature "1.0.6" - debug "2.6.9" - depd "~1.1.2" - encodeurl "~1.0.2" - escape-html "~1.0.3" - etag "~1.8.1" - finalhandler "~1.1.2" - fresh "0.5.2" - merge-descriptors "1.0.1" - methods "~1.1.2" - on-finished "~2.3.0" - parseurl "~1.3.3" - path-to-regexp "0.1.7" - proxy-addr "~2.0.5" - qs "6.7.0" - range-parser "~1.2.1" - safe-buffer "5.1.2" - send "0.17.1" - serve-static "1.14.1" - setprototypeof "1.1.1" - statuses "~1.5.0" - type-is "~1.6.18" - utils-merge "1.0.1" - vary "~1.1.2" - -extend-shallow@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/extend-shallow/-/extend-shallow-2.0.1.tgz#51af7d614ad9a9f610ea1bafbb989d6b1c56890f" - integrity sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8= - dependencies: - is-extendable "^0.1.0" - -extend-shallow@^3.0.0, extend-shallow@^3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/extend-shallow/-/extend-shallow-3.0.2.tgz#26a71aaf073b39fb2127172746131c2704028db8" - integrity sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg= - dependencies: - assign-symbols "^1.0.0" - is-extendable "^1.0.1" - -extend@~3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.2.tgz#f8b1136b4071fbd8eb140aff858b1019ec2915fa" - integrity sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g== - -external-editor@^3.0.3: - version "3.1.0" - resolved "https://registry.yarnpkg.com/external-editor/-/external-editor-3.1.0.tgz#cb03f740befae03ea4d283caed2741a83f335495" - integrity sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew== - dependencies: - chardet "^0.7.0" - iconv-lite "^0.4.24" - tmp "^0.0.33" - -extglob@^2.0.4: - version "2.0.4" - resolved "https://registry.yarnpkg.com/extglob/-/extglob-2.0.4.tgz#ad00fe4dc612a9232e8718711dc5cb5ab0285543" - integrity sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw== - dependencies: - array-unique "^0.3.2" - define-property "^1.0.0" - expand-brackets "^2.1.4" - extend-shallow "^2.0.1" - fragment-cache "^0.2.1" - regex-not "^1.0.0" - snapdragon "^0.8.1" - to-regex "^3.0.1" - -extsprintf@1.3.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.3.0.tgz#96918440e3041a7a414f8c52e3c574eb3c3e1e05" - integrity sha1-lpGEQOMEGnpBT4xS48V06zw+HgU= - -extsprintf@^1.2.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.4.0.tgz#e2689f8f356fad62cca65a3a91c5df5f9551692f" - integrity sha1-4mifjzVvrWLMplo6kcXfX5VRaS8= - -fast-deep-equal@^3.1.1, fast-deep-equal@^3.1.3: - version "3.1.3" - resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525" - integrity sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q== - -fast-glob@^2.2.6: - version "2.2.7" - resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-2.2.7.tgz#6953857c3afa475fff92ee6015d52da70a4cd39d" - integrity sha512-g1KuQwHOZAmOZMuBtHdxDtju+T2RT8jgCC9aANsbpdiDDTSnjgfuVsIBNKbUeJI3oKMRExcfNDtJl4OhbffMsw== - dependencies: - "@mrmlnc/readdir-enhanced" "^2.2.1" - "@nodelib/fs.stat" "^1.1.2" - glob-parent "^3.1.0" - is-glob "^4.0.0" - merge2 "^1.2.3" - micromatch "^3.1.10" - -fast-glob@^3.1.1: - version "3.2.5" - resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.2.5.tgz#7939af2a656de79a4f1901903ee8adcaa7cb9661" - integrity sha512-2DtFcgT68wiTTiwZ2hNdJfcHNke9XOfnwmBRWXhmeKM8rF0TGwmC/Qto3S7RoZKp5cilZbxzO5iTNTQsJ+EeDg== - dependencies: - "@nodelib/fs.stat" "^2.0.2" - "@nodelib/fs.walk" "^1.2.3" - glob-parent "^5.1.0" - merge2 "^1.3.0" - micromatch "^4.0.2" - picomatch "^2.2.1" - -fast-json-stable-stringify@^2.0.0, fast-json-stable-stringify@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz#874bf69c6f404c2b5d99c481341399fd55892633" - integrity sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw== - -fast-levenshtein@^2.0.6: - version "2.0.6" - resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917" - integrity sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc= - -fastq@^1.6.0: - version "1.11.0" - resolved "https://registry.yarnpkg.com/fastq/-/fastq-1.11.0.tgz#bb9fb955a07130a918eb63c1f5161cc32a5d0858" - integrity sha512-7Eczs8gIPDrVzT+EksYBcupqMyxSHXXrHOLRRxU2/DicV8789MRBRR8+Hc2uWzUupOs4YS4JzBmBxjjCVBxD/g== - dependencies: - reusify "^1.0.4" - -faye-websocket@^0.11.3: - version "0.11.4" - resolved "https://registry.yarnpkg.com/faye-websocket/-/faye-websocket-0.11.4.tgz#7f0d9275cfdd86a1c963dc8b65fcc451edcbb1da" - integrity sha512-CzbClwlXAuiRQAlUyfqPgvPoNKTckTPGfwZV4ZdAhVcP2lh9KUxJg2b5GkE7XbjKQ3YJnQ9z6D9ntLAlB+tP8g== - dependencies: - websocket-driver ">=0.5.1" - -figgy-pudding@^3.5.1: - version "3.5.2" - resolved "https://registry.yarnpkg.com/figgy-pudding/-/figgy-pudding-3.5.2.tgz#b4eee8148abb01dcf1d1ac34367d59e12fa61d6e" - integrity sha512-0btnI/H8f2pavGMN8w40mlSKOfTK2SVJmBfBeVIj3kNw0swwgzyRq0d5TJVOwodFmtvpPeWPN/MCcfuWF0Ezbw== - -figures@^3.0.0: - version "3.2.0" - resolved "https://registry.yarnpkg.com/figures/-/figures-3.2.0.tgz#625c18bd293c604dc4a8ddb2febf0c88341746af" - integrity sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg== - dependencies: - escape-string-regexp "^1.0.5" - -file-entry-cache@^6.0.1: - version "6.0.1" - resolved "https://registry.yarnpkg.com/file-entry-cache/-/file-entry-cache-6.0.1.tgz#211b2dd9659cb0394b073e7323ac3c933d522027" - integrity sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg== - dependencies: - flat-cache "^3.0.4" - -file-loader@^4.2.0: - version "4.3.0" - resolved "https://registry.yarnpkg.com/file-loader/-/file-loader-4.3.0.tgz#780f040f729b3d18019f20605f723e844b8a58af" - integrity sha512-aKrYPYjF1yG3oX0kWRrqrSMfgftm7oJW5M+m4owoldH5C51C0RkIwB++JbRvEW3IU6/ZG5n8UvEcdgwOt2UOWA== - dependencies: - loader-utils "^1.2.3" - schema-utils "^2.5.0" - -file-uri-to-path@1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz#553a7b8446ff6f684359c445f1e37a05dacc33dd" - integrity sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw== - -filesize@^3.6.1: - version "3.6.1" - resolved "https://registry.yarnpkg.com/filesize/-/filesize-3.6.1.tgz#090bb3ee01b6f801a8a8be99d31710b3422bb317" - integrity sha512-7KjR1vv6qnicaPMi1iiTcI85CyYwRO/PSFCu6SvqL8jN2Wjt/NIYQTFtFs7fSDCYOstUkEWIQGFUg5YZQfjlcg== - -fill-range@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-4.0.0.tgz#d544811d428f98eb06a63dc402d2403c328c38f7" - integrity sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc= - dependencies: - extend-shallow "^2.0.1" - is-number "^3.0.0" - repeat-string "^1.6.1" - to-regex-range "^2.1.0" - -fill-range@^7.0.1: - version "7.0.1" - resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.0.1.tgz#1919a6a7c75fe38b2c7c77e5198535da9acdda40" - integrity sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ== - dependencies: - to-regex-range "^5.0.1" - -finalhandler@~1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/finalhandler/-/finalhandler-1.1.2.tgz#b7e7d000ffd11938d0fdb053506f6ebabe9f587d" - integrity sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA== - dependencies: - debug "2.6.9" - encodeurl "~1.0.2" - escape-html "~1.0.3" - on-finished "~2.3.0" - parseurl "~1.3.3" - statuses "~1.5.0" - unpipe "~1.0.0" - -find-cache-dir@^0.1.1: - version "0.1.1" - resolved "https://registry.yarnpkg.com/find-cache-dir/-/find-cache-dir-0.1.1.tgz#c8defae57c8a52a8a784f9e31c57c742e993a0b9" - integrity sha1-yN765XyKUqinhPnjHFfHQumToLk= - dependencies: - commondir "^1.0.1" - mkdirp "^0.5.1" - pkg-dir "^1.0.0" - -find-cache-dir@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/find-cache-dir/-/find-cache-dir-2.1.0.tgz#8d0f94cd13fe43c6c7c261a0d86115ca918c05f7" - integrity sha512-Tq6PixE0w/VMFfCgbONnkiQIVol/JJL7nRMi20fqzA4NRs9AfeqMGeRdPi3wIhYkxjeBaWh2rxwapn5Tu3IqOQ== - dependencies: - commondir "^1.0.1" - make-dir "^2.0.0" - pkg-dir "^3.0.0" - -find-cache-dir@^3.0.0, find-cache-dir@^3.3.1: - version "3.3.1" - resolved "https://registry.yarnpkg.com/find-cache-dir/-/find-cache-dir-3.3.1.tgz#89b33fad4a4670daa94f855f7fbe31d6d84fe880" - integrity sha512-t2GDMt3oGC/v+BMwzmllWDuJF/xcDtE5j/fCGbqDD7OLuJkj0cfh1YSA5VKPvwMeLFLNDBkwOKZ2X85jGLVftQ== - dependencies: - commondir "^1.0.1" - make-dir "^3.0.2" - pkg-dir "^4.1.0" - -find-up@^1.0.0: - version "1.1.2" - resolved "https://registry.yarnpkg.com/find-up/-/find-up-1.1.2.tgz#6b2e9822b1a2ce0a60ab64d610eccad53cb24d0f" - integrity sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8= - dependencies: - path-exists "^2.0.0" - pinkie-promise "^2.0.0" - -find-up@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/find-up/-/find-up-3.0.0.tgz#49169f1d7993430646da61ecc5ae355c21c97b73" - integrity sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg== - dependencies: - locate-path "^3.0.0" - -find-up@^4.0.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/find-up/-/find-up-4.1.0.tgz#97afe7d6cdc0bc5928584b7c8d7b16e8a9aa5d19" - integrity sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw== - dependencies: - locate-path "^5.0.0" - path-exists "^4.0.0" - -flat-cache@^3.0.4: - version "3.0.4" - resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-3.0.4.tgz#61b0338302b2fe9f957dcc32fc2a87f1c3048b11" - integrity sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg== - dependencies: - flatted "^3.1.0" - rimraf "^3.0.2" - -flat@^5.0.0: - version "5.0.2" - resolved "https://registry.yarnpkg.com/flat/-/flat-5.0.2.tgz#8ca6fe332069ffa9d324c327198c598259ceb241" - integrity sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ== - -flatted@^3.1.0: - version "3.1.1" - resolved "https://registry.yarnpkg.com/flatted/-/flatted-3.1.1.tgz#c4b489e80096d9df1dfc97c79871aea7c617c469" - integrity sha512-zAoAQiudy+r5SvnSw3KJy5os/oRJYHzrzja/tBDqrZtNhUw8bt6y8OBzMWcjWr+8liV8Eb6yOhw8WZ7VFZ5ZzA== - -flush-write-stream@^1.0.0: - version "1.1.1" - resolved "https://registry.yarnpkg.com/flush-write-stream/-/flush-write-stream-1.1.1.tgz#8dd7d873a1babc207d94ead0c2e0e44276ebf2e8" - integrity sha512-3Z4XhFZ3992uIq0XOqb9AreonueSYphE6oYbpt5+3u06JWklbsPkNv3ZKkP9Bz/r+1MWCaMoSQ28P85+1Yc77w== - dependencies: - inherits "^2.0.3" - readable-stream "^2.3.6" - -follow-redirects@^1.0.0, follow-redirects@^1.10.0: - version "1.14.1" - resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.14.1.tgz#d9114ded0a1cfdd334e164e6662ad02bfd91ff43" - integrity sha512-HWqDgT7ZEkqRzBvc2s64vSZ/hfOceEol3ac/7tKwzuvEyWx3/4UegXh5oBOIotkGsObyk3xznnSRVADBgWSQVg== - -for-in@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/for-in/-/for-in-1.0.2.tgz#81068d295a8142ec0ac726c6e2200c30fb6d5e80" - integrity sha1-gQaNKVqBQuwKxybG4iAMMPttXoA= - -forever-agent@~0.6.1: - version "0.6.1" - resolved "https://registry.yarnpkg.com/forever-agent/-/forever-agent-0.6.1.tgz#fbc71f0c41adeb37f96c577ad1ed42d8fdacca91" - integrity sha1-+8cfDEGt6zf5bFd60e1C2P2sypE= - -"fork-ts-checker-webpack-plugin-v5@npm:fork-ts-checker-webpack-plugin@^5.0.11": - version "5.2.1" - resolved "https://registry.yarnpkg.com/fork-ts-checker-webpack-plugin/-/fork-ts-checker-webpack-plugin-5.2.1.tgz#79326d869797906fa8b24e2abcf9421fc805450d" - integrity sha512-SVi+ZAQOGbtAsUWrZvGzz38ga2YqjWvca1pXQFUArIVXqli0lLoDQ8uS0wg0kSpcwpZmaW5jVCZXQebkyUQSsw== - dependencies: - "@babel/code-frame" "^7.8.3" - "@types/json-schema" "^7.0.5" - chalk "^4.1.0" - cosmiconfig "^6.0.0" - deepmerge "^4.2.2" - fs-extra "^9.0.0" - memfs "^3.1.2" - minimatch "^3.0.4" - schema-utils "2.7.0" - semver "^7.3.2" - tapable "^1.0.0" - -fork-ts-checker-webpack-plugin@^3.1.1: - version "3.1.1" - resolved "https://registry.yarnpkg.com/fork-ts-checker-webpack-plugin/-/fork-ts-checker-webpack-plugin-3.1.1.tgz#a1642c0d3e65f50c2cc1742e9c0a80f441f86b19" - integrity sha512-DuVkPNrM12jR41KM2e+N+styka0EgLkTnXmNcXdgOM37vtGeY+oCBK/Jx0hzSeEU6memFCtWb4htrHPMDfwwUQ== - dependencies: - babel-code-frame "^6.22.0" - chalk "^2.4.1" - chokidar "^3.3.0" - micromatch "^3.1.10" - minimatch "^3.0.4" - semver "^5.6.0" - tapable "^1.0.0" - worker-rpc "^0.1.0" - -form-data@~2.3.2: - version "2.3.3" - resolved "https://registry.yarnpkg.com/form-data/-/form-data-2.3.3.tgz#dcce52c05f644f298c6a7ab936bd724ceffbf3a6" - integrity sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ== - dependencies: - asynckit "^0.4.0" - combined-stream "^1.0.6" - mime-types "^2.1.12" - -forwarded@0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/forwarded/-/forwarded-0.2.0.tgz#2269936428aad4c15c7ebe9779a84bf0b2a81811" - integrity sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow== - -fragment-cache@^0.2.1: - version "0.2.1" - resolved "https://registry.yarnpkg.com/fragment-cache/-/fragment-cache-0.2.1.tgz#4290fad27f13e89be7f33799c6bc5a0abfff0d19" - integrity sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk= - dependencies: - map-cache "^0.2.2" - -fresh@0.5.2: - version "0.5.2" - resolved "https://registry.yarnpkg.com/fresh/-/fresh-0.5.2.tgz#3d8cadd90d976569fa835ab1f8e4b23a105605a7" - integrity sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac= - -from2@^2.1.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/from2/-/from2-2.3.0.tgz#8bfb5502bde4a4d36cfdeea007fcca21d7e382af" - integrity sha1-i/tVAr3kpNNs/e6gB/zKIdfjgq8= - dependencies: - inherits "^2.0.1" - readable-stream "^2.0.0" - -fs-extra@^7.0.1: - version "7.0.1" - resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-7.0.1.tgz#4f189c44aa123b895f722804f55ea23eadc348e9" - integrity sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw== - dependencies: - graceful-fs "^4.1.2" - jsonfile "^4.0.0" - universalify "^0.1.0" - -fs-extra@^8.1.0: - version "8.1.0" - resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-8.1.0.tgz#49d43c45a88cd9677668cb7be1b46efdb8d2e1c0" - integrity sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g== - dependencies: - graceful-fs "^4.2.0" - jsonfile "^4.0.0" - universalify "^0.1.0" - -fs-extra@^9.0.0, fs-extra@^9.0.1: - version "9.1.0" - resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-9.1.0.tgz#5954460c764a8da2094ba3554bf839e6b9a7c86d" - integrity sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ== - dependencies: - at-least-node "^1.0.0" - graceful-fs "^4.2.0" - jsonfile "^6.0.1" - universalify "^2.0.0" - -fs-monkey@1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/fs-monkey/-/fs-monkey-1.0.3.tgz#ae3ac92d53bb328efe0e9a1d9541f6ad8d48e2d3" - integrity sha512-cybjIfiiE+pTWicSCLFHSrXZ6EilF30oh91FDP9S2B051prEa7QWfrVTQm10/dDpswBDXZugPa1Ogu8Yh+HV0Q== - -fs-write-stream-atomic@^1.0.8: - version "1.0.10" - resolved "https://registry.yarnpkg.com/fs-write-stream-atomic/-/fs-write-stream-atomic-1.0.10.tgz#b47df53493ef911df75731e70a9ded0189db40c9" - integrity sha1-tH31NJPvkR33VzHnCp3tAYnbQMk= - dependencies: - graceful-fs "^4.1.2" - iferr "^0.1.5" - imurmurhash "^0.1.4" - readable-stream "1 || 2" - -fs.realpath@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" - integrity sha1-FQStJSMVjKpA20onh8sBQRmU6k8= - -fsevents@^1.2.7: - version "1.2.13" - resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-1.2.13.tgz#f325cb0455592428bcf11b383370ef70e3bfcc38" - integrity sha512-oWb1Z6mkHIskLzEJ/XWX0srkpkTQ7vaopMQkyaEIoq0fmtFVxOthb8cCxeT+p3ynTdkk/RZwbgG4brR5BeWECw== - dependencies: - bindings "^1.5.0" - nan "^2.12.1" - -fsevents@~2.3.1: - version "2.3.2" - resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.2.tgz#8a526f78b8fdf4623b709e0b975c52c24c02fd1a" - integrity sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA== - -function-bind@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d" - integrity sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A== - -functional-red-black-tree@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz#1b0ab3bd553b2a0d6399d29c0e3ea0b252078327" - integrity sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc= - -generic-names@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/generic-names/-/generic-names-2.0.1.tgz#f8a378ead2ccaa7a34f0317b05554832ae41b872" - integrity sha512-kPCHWa1m9wGG/OwQpeweTwM/PYiQLrUIxXbt/P4Nic3LbGjCP0YwrALHW1uNLKZ0LIMg+RF+XRlj2ekT9ZlZAQ== - dependencies: - loader-utils "^1.1.0" - -gensync@^1.0.0-beta.2: - version "1.0.0-beta.2" - resolved "https://registry.yarnpkg.com/gensync/-/gensync-1.0.0-beta.2.tgz#32a6ee76c3d7f52d46b2b1ae5d93fea8580a25e0" - integrity sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg== - -get-caller-file@^2.0.1, get-caller-file@^2.0.5: - version "2.0.5" - resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e" - integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg== - -get-intrinsic@^1.0.2, get-intrinsic@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.1.1.tgz#15f59f376f855c446963948f0d24cd3637b4abc6" - integrity sha512-kWZrnVM42QCiEA2Ig1bG8zjoIMOgxWwYCEeNdwY6Tv/cOSeGpcoX4pXHfKUxNKVoArnrEr2e9srnAxxGIraS9Q== - dependencies: - function-bind "^1.1.1" - has "^1.0.3" - has-symbols "^1.0.1" - -get-own-enumerable-property-symbols@^3.0.0: - version "3.0.2" - resolved "https://registry.yarnpkg.com/get-own-enumerable-property-symbols/-/get-own-enumerable-property-symbols-3.0.2.tgz#b5fde77f22cbe35f390b4e089922c50bce6ef664" - integrity sha512-I0UBV/XOz1XkIJHEUDMZAbzCThU/H8DxmSfmdGcKPnVhu2VfFqr34jr9777IyaTYvxjedWhqVIilEDsCdP5G6g== - -get-stream@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-3.0.0.tgz#8e943d1358dc37555054ecbe2edb05aa174ede14" - integrity sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ= - -get-stream@^4.0.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-4.1.0.tgz#c1b255575f3dc21d59bfc79cd3d2b46b1c3a54b5" - integrity sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w== - dependencies: - pump "^3.0.0" - -get-stream@^5.0.0: - version "5.2.0" - resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-5.2.0.tgz#4966a1795ee5ace65e706c4b7beb71257d6e22d3" - integrity sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA== - dependencies: - pump "^3.0.0" - -get-value@^2.0.3, get-value@^2.0.6: - version "2.0.6" - resolved "https://registry.yarnpkg.com/get-value/-/get-value-2.0.6.tgz#dc15ca1c672387ca76bd37ac0a395ba2042a2c28" - integrity sha1-3BXKHGcjh8p2vTesCjlbogQqLCg= - -getpass@^0.1.1: - version "0.1.7" - resolved "https://registry.yarnpkg.com/getpass/-/getpass-0.1.7.tgz#5eff8e3e684d569ae4cb2b1282604e8ba62149fa" - integrity sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo= - dependencies: - assert-plus "^1.0.0" - -glob-parent@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-3.1.0.tgz#9e6af6299d8d3bd2bd40430832bd113df906c5ae" - integrity sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4= - dependencies: - is-glob "^3.1.0" - path-dirname "^1.0.0" - -glob-parent@^5.1.0, glob-parent@^5.1.2, glob-parent@~5.1.0: - version "5.1.2" - resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.2.tgz#869832c58034fe68a4093c17dc15e8340d8401c4" - integrity sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow== - dependencies: - is-glob "^4.0.1" - -glob-to-regexp@^0.3.0: - version "0.3.0" - resolved "https://registry.yarnpkg.com/glob-to-regexp/-/glob-to-regexp-0.3.0.tgz#8c5a1494d2066c570cc3bfe4496175acc4d502ab" - integrity sha1-jFoUlNIGbFcMw7/kSWF1rMTVAqs= - -glob@^7.0.3, glob@^7.1.1, glob@^7.1.2, glob@^7.1.3, glob@^7.1.4, glob@^7.1.6: - version "7.1.7" - resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.7.tgz#3b193e9233f01d42d0b3f78294bbeeb418f94a90" - integrity sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ== - dependencies: - fs.realpath "^1.0.0" - inflight "^1.0.4" - inherits "2" - minimatch "^3.0.4" - once "^1.3.0" - path-is-absolute "^1.0.0" - -globals@^11.1.0: - version "11.12.0" - resolved "https://registry.yarnpkg.com/globals/-/globals-11.12.0.tgz#ab8795338868a0babd8525758018c2a7eb95c42e" - integrity sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA== - -globals@^13.6.0, globals@^13.9.0: - version "13.9.0" - resolved "https://registry.yarnpkg.com/globals/-/globals-13.9.0.tgz#4bf2bf635b334a173fb1daf7c5e6b218ecdc06cb" - integrity sha512-74/FduwI/JaIrr1H8e71UbDE+5x7pIPs1C2rrwC52SszOo043CsWOZEMW7o2Y58xwm9b+0RBKDxY5n2sUpEFxA== - dependencies: - type-fest "^0.20.2" - -globby@^11.0.3: - version "11.0.3" - resolved "https://registry.yarnpkg.com/globby/-/globby-11.0.3.tgz#9b1f0cb523e171dd1ad8c7b2a9fb4b644b9593cb" - integrity sha512-ffdmosjA807y7+lA1NM0jELARVmYul/715xiILEjo3hBLPTcirgQNnXECn5g3mtR8TOLCVbkfua1Hpen25/Xcg== - dependencies: - array-union "^2.1.0" - dir-glob "^3.0.1" - fast-glob "^3.1.1" - ignore "^5.1.4" - merge2 "^1.3.0" - slash "^3.0.0" - -globby@^6.1.0: - version "6.1.0" - resolved "https://registry.yarnpkg.com/globby/-/globby-6.1.0.tgz#f5a6d70e8395e21c858fb0489d64df02424d506c" - integrity sha1-9abXDoOV4hyFj7BInWTfAkJNUGw= - dependencies: - array-union "^1.0.1" - glob "^7.0.3" - object-assign "^4.0.1" - pify "^2.0.0" - pinkie-promise "^2.0.0" - -globby@^7.1.1: - version "7.1.1" - resolved "https://registry.yarnpkg.com/globby/-/globby-7.1.1.tgz#fb2ccff9401f8600945dfada97440cca972b8680" - integrity sha1-+yzP+UAfhgCUXfral0QMypcrhoA= - dependencies: - array-union "^1.0.1" - dir-glob "^2.0.0" - glob "^7.1.2" - ignore "^3.3.5" - pify "^3.0.0" - slash "^1.0.0" - -globby@^9.2.0: - version "9.2.0" - resolved "https://registry.yarnpkg.com/globby/-/globby-9.2.0.tgz#fd029a706c703d29bdd170f4b6db3a3f7a7cb63d" - integrity sha512-ollPHROa5mcxDEkwg6bPt3QbEf4pDQSNtd6JPL1YvOvAo/7/0VAm9TccUeoTmarjPw4pfUthSCqcyfNB1I3ZSg== - dependencies: - "@types/glob" "^7.1.1" - array-union "^1.0.2" - dir-glob "^2.2.2" - fast-glob "^2.2.6" - glob "^7.1.3" - ignore "^4.0.3" - pify "^4.0.1" - slash "^2.0.0" - -graceful-fs@^4.1.11, graceful-fs@^4.1.15, graceful-fs@^4.1.2, graceful-fs@^4.1.6, graceful-fs@^4.2.0: - version "4.2.6" - resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.6.tgz#ff040b2b0853b23c3d31027523706f1885d76bee" - integrity sha512-nTnJ528pbqxYanhpDYsi4Rd8MAeaBA67+RZ10CM1m3bTAVFEDcd5AuA4a6W5YkGZ1iNXHzZz8T6TBKLeBuNriQ== - -gzip-size@^5.0.0: - version "5.1.1" - resolved "https://registry.yarnpkg.com/gzip-size/-/gzip-size-5.1.1.tgz#cb9bee692f87c0612b232840a873904e4c135274" - integrity sha512-FNHi6mmoHvs1mxZAds4PpdCS6QG8B4C1krxJsMutgxl5t3+GlRTzzI3NEkifXx2pVsOvJdOGSmIgDhQ55FwdPA== - dependencies: - duplexer "^0.1.1" - pify "^4.0.1" - -handle-thing@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/handle-thing/-/handle-thing-2.0.1.tgz#857f79ce359580c340d43081cc648970d0bb234e" - integrity sha512-9Qn4yBxelxoh2Ow62nP+Ka/kMnOXRi8BXnRaUwezLNhqelnN49xKz4F/dPP8OYLxLxq6JDtZb2i9XznUQbNPTg== - -har-schema@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/har-schema/-/har-schema-2.0.0.tgz#a94c2224ebcac04782a0d9035521f24735b7ec92" - integrity sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI= - -har-validator@~5.1.3: - version "5.1.5" - resolved "https://registry.yarnpkg.com/har-validator/-/har-validator-5.1.5.tgz#1f0803b9f8cb20c0fa13822df1ecddb36bde1efd" - integrity sha512-nmT2T0lljbxdQZfspsno9hgrG3Uir6Ks5afism62poxqBM6sDnMEuPmzTq8XN0OEwqKLLdh1jQI3qyE66Nzb3w== - dependencies: - ajv "^6.12.3" - har-schema "^2.0.0" - -has-ansi@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/has-ansi/-/has-ansi-2.0.0.tgz#34f5049ce1ecdf2b0649af3ef24e45ed35416d91" - integrity sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE= - dependencies: - ansi-regex "^2.0.0" - -has-bigints@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/has-bigints/-/has-bigints-1.0.1.tgz#64fe6acb020673e3b78db035a5af69aa9d07b113" - integrity sha512-LSBS2LjbNBTf6287JEbEzvJgftkF5qFkmCo9hDRpAzKhUOlJ+hx8dd4USs00SgsUNwc4617J9ki5YtEClM2ffA== - -has-flag@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd" - integrity sha1-tdRU3CGZriJWmfNGfloH87lVuv0= - -has-flag@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b" - integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ== - -has-symbols@^1.0.1, has-symbols@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.2.tgz#165d3070c00309752a1236a479331e3ac56f1423" - integrity sha512-chXa79rL/UC2KlX17jo3vRGz0azaWEx5tGqZg5pO3NUyEJVB17dMruQlzCCOfUvElghKcm5194+BCRvi2Rv/Gw== - -has-value@^0.3.1: - version "0.3.1" - resolved "https://registry.yarnpkg.com/has-value/-/has-value-0.3.1.tgz#7b1f58bada62ca827ec0a2078025654845995e1f" - integrity sha1-ex9YutpiyoJ+wKIHgCVlSEWZXh8= - dependencies: - get-value "^2.0.3" - has-values "^0.1.4" - isobject "^2.0.0" - -has-value@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/has-value/-/has-value-1.0.0.tgz#18b281da585b1c5c51def24c930ed29a0be6b177" - integrity sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc= - dependencies: - get-value "^2.0.6" - has-values "^1.0.0" - isobject "^3.0.0" - -has-values@^0.1.4: - version "0.1.4" - resolved "https://registry.yarnpkg.com/has-values/-/has-values-0.1.4.tgz#6d61de95d91dfca9b9a02089ad384bff8f62b771" - integrity sha1-bWHeldkd/Km5oCCJrThL/49it3E= - -has-values@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/has-values/-/has-values-1.0.0.tgz#95b0b63fec2146619a6fe57fe75628d5a39efe4f" - integrity sha1-lbC2P+whRmGab+V/51Yo1aOe/k8= - dependencies: - is-number "^3.0.0" - kind-of "^4.0.0" - -has@^1.0.0, has@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/has/-/has-1.0.3.tgz#722d7cbfc1f6aa8241f16dd814e011e1f41e8796" - integrity sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw== - dependencies: - function-bind "^1.1.1" - -hash-base@^3.0.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/hash-base/-/hash-base-3.1.0.tgz#55c381d9e06e1d2997a883b4a3fddfe7f0d3af33" - integrity sha512-1nmYp/rhMDiE7AYkDw+lLwlAzz0AntGIe51F3RfFfEqyQ3feY2eI/NcwC6umIQVOASPMsWJLJScWKSSvzL9IVA== - dependencies: - inherits "^2.0.4" - readable-stream "^3.6.0" - safe-buffer "^5.2.0" - -hash-sum@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/hash-sum/-/hash-sum-1.0.2.tgz#33b40777754c6432573c120cc3808bbd10d47f04" - integrity sha1-M7QHd3VMZDJXPBIMw4CLvRDUfwQ= - -hash-sum@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/hash-sum/-/hash-sum-2.0.0.tgz#81d01bb5de8ea4a214ad5d6ead1b523460b0b45a" - integrity sha512-WdZTbAByD+pHfl/g9QSsBIIwy8IT+EsPiKDs0KNX+zSHhdDLFKdZu0BQHljvO+0QI/BasbMSUa8wYNCZTvhslg== - -hash.js@^1.0.0, hash.js@^1.0.3: - version "1.1.7" - resolved "https://registry.yarnpkg.com/hash.js/-/hash.js-1.1.7.tgz#0babca538e8d4ee4a0f8988d68866537a003cf42" - integrity sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA== - dependencies: - inherits "^2.0.3" - minimalistic-assert "^1.0.1" - -he@1.2.x, he@^1.1.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/he/-/he-1.2.0.tgz#84ae65fa7eafb165fddb61566ae14baf05664f0f" - integrity sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw== - -hex-color-regex@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/hex-color-regex/-/hex-color-regex-1.1.0.tgz#4c06fccb4602fe2602b3c93df82d7e7dbf1a8a8e" - integrity sha512-l9sfDFsuqtOqKDsQdqrMRk0U85RZc0RtOR9yPI7mRVOa4FsR/BVnZ0shmQRM96Ji99kYZP/7hn1cedc1+ApsTQ== - -highlight.js@^10.7.1: - version "10.7.3" - resolved "https://registry.yarnpkg.com/highlight.js/-/highlight.js-10.7.3.tgz#697272e3991356e40c3cac566a74eef681756531" - integrity sha512-tzcUFauisWKNHaRkN4Wjl/ZA07gENAjFl3J/c480dprkGTg5EQstgaNFqBfUqCq54kZRIEcreTsAgF/m2quD7A== - -hmac-drbg@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/hmac-drbg/-/hmac-drbg-1.0.1.tgz#d2745701025a6c775a6c545793ed502fc0c649a1" - integrity sha1-0nRXAQJabHdabFRXk+1QL8DGSaE= - dependencies: - hash.js "^1.0.3" - minimalistic-assert "^1.0.0" - minimalistic-crypto-utils "^1.0.1" - -hoopy@^0.1.4: - version "0.1.4" - resolved "https://registry.yarnpkg.com/hoopy/-/hoopy-0.1.4.tgz#609207d661100033a9a9402ad3dea677381c1b1d" - integrity sha512-HRcs+2mr52W0K+x8RzcLzuPPmVIKMSv97RGHy0Ea9y/mpcaK+xTrjICA04KAHi4GRzxliNqNJEFYWHghy3rSfQ== - -hosted-git-info@^2.1.4: - version "2.8.9" - resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.8.9.tgz#dffc0bf9a21c02209090f2aa69429e1414daf3f9" - integrity sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw== - -hpack.js@^2.1.6: - version "2.1.6" - resolved "https://registry.yarnpkg.com/hpack.js/-/hpack.js-2.1.6.tgz#87774c0949e513f42e84575b3c45681fade2a0b2" - integrity sha1-h3dMCUnlE/QuhFdbPEVoH63ioLI= - dependencies: - inherits "^2.0.1" - obuf "^1.0.0" - readable-stream "^2.0.1" - wbuf "^1.1.0" - -hsl-regex@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/hsl-regex/-/hsl-regex-1.0.0.tgz#d49330c789ed819e276a4c0d272dffa30b18fe6e" - integrity sha1-1JMwx4ntgZ4nakwNJy3/owsY/m4= - -hsla-regex@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/hsla-regex/-/hsla-regex-1.0.0.tgz#c1ce7a3168c8c6614033a4b5f7877f3b225f9c38" - integrity sha1-wc56MWjIxmFAM6S194d/OyJfnDg= - -html-entities@^1.3.1: - version "1.4.0" - resolved "https://registry.yarnpkg.com/html-entities/-/html-entities-1.4.0.tgz#cfbd1b01d2afaf9adca1b10ae7dffab98c71d2dc" - integrity sha512-8nxjcBcd8wovbeKx7h3wTji4e6+rhaVuPNpMqwWgnHh+N9ToqsCs6XztWRBPQ+UtzsoMAdKZtUENoVzU/EMtZA== - -html-minifier@^3.2.3: - version "3.5.21" - resolved "https://registry.yarnpkg.com/html-minifier/-/html-minifier-3.5.21.tgz#d0040e054730e354db008463593194015212d20c" - integrity sha512-LKUKwuJDhxNa3uf/LPR/KVjm/l3rBqtYeCOAekvG8F1vItxMUpueGd94i/asDDr8/1u7InxzFA5EeGjhhG5mMA== - dependencies: - camel-case "3.0.x" - clean-css "4.2.x" - commander "2.17.x" - he "1.2.x" - param-case "2.1.x" - relateurl "0.2.x" - uglify-js "3.4.x" - -html-tags@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/html-tags/-/html-tags-2.0.0.tgz#10b30a386085f43cede353cc8fa7cb0deeea668b" - integrity sha1-ELMKOGCF9Dzt41PMj6fLDe7qZos= - -html-tags@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/html-tags/-/html-tags-3.1.0.tgz#7b5e6f7e665e9fb41f30007ed9e0d41e97fb2140" - integrity sha512-1qYz89hW3lFDEazhjW0yVAV87lw8lVkrJocr72XmBkMKsoSVJCQx3W8BXsC7hO2qAt8BoVjYjtAcZ9perqGnNg== - -html-webpack-plugin@^3.2.0: - version "3.2.0" - resolved "https://registry.yarnpkg.com/html-webpack-plugin/-/html-webpack-plugin-3.2.0.tgz#b01abbd723acaaa7b37b6af4492ebda03d9dd37b" - integrity sha1-sBq71yOsqqeze2r0SS69oD2d03s= - dependencies: - html-minifier "^3.2.3" - loader-utils "^0.2.16" - lodash "^4.17.3" - pretty-error "^2.0.2" - tapable "^1.0.0" - toposort "^1.0.0" - util.promisify "1.0.0" - -htmlparser2@^3.10.1: - version "3.10.1" - resolved "https://registry.yarnpkg.com/htmlparser2/-/htmlparser2-3.10.1.tgz#bd679dc3f59897b6a34bb10749c855bb53a9392f" - integrity sha512-IgieNijUMbkDovyoKObU1DUhm1iwNYE/fuifEoEHfd1oZKZDaONBSkal7Y01shxsM49R4XaMdGez3WnF9UfiCQ== - dependencies: - domelementtype "^1.3.1" - domhandler "^2.3.0" - domutils "^1.5.1" - entities "^1.1.1" - inherits "^2.0.1" - readable-stream "^3.1.1" - -http-deceiver@^1.2.7: - version "1.2.7" - resolved "https://registry.yarnpkg.com/http-deceiver/-/http-deceiver-1.2.7.tgz#fa7168944ab9a519d337cb0bec7284dc3e723d87" - integrity sha1-+nFolEq5pRnTN8sL7HKE3D5yPYc= - -http-errors@1.7.2: - version "1.7.2" - resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.7.2.tgz#4f5029cf13239f31036e5b2e55292bcfbcc85c8f" - integrity sha512-uUQBt3H/cSIVfch6i1EuPNy/YsRSOUBXTVfZ+yR7Zjez3qjBz6i9+i4zjNaoqcoFVI4lQJ5plg63TvGfRSDCRg== - dependencies: - depd "~1.1.2" - inherits "2.0.3" - setprototypeof "1.1.1" - statuses ">= 1.5.0 < 2" - toidentifier "1.0.0" - -http-errors@~1.6.2: - version "1.6.3" - resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.6.3.tgz#8b55680bb4be283a0b5bf4ea2e38580be1d9320d" - integrity sha1-i1VoC7S+KDoLW/TqLjhYC+HZMg0= - dependencies: - depd "~1.1.2" - inherits "2.0.3" - setprototypeof "1.1.0" - statuses ">= 1.4.0 < 2" - -http-errors@~1.7.2: - version "1.7.3" - resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.7.3.tgz#6c619e4f9c60308c38519498c14fbb10aacebb06" - integrity sha512-ZTTX0MWrsQ2ZAhA1cejAwDLycFsd7I7nVtnkT3Ol0aqodaKW+0CTZDQ1uBv5whptCnc8e8HeRRJxRs0kmm/Qfw== - dependencies: - depd "~1.1.2" - inherits "2.0.4" - setprototypeof "1.1.1" - statuses ">= 1.5.0 < 2" - toidentifier "1.0.0" - -http-parser-js@>=0.5.1: - version "0.5.3" - resolved "https://registry.yarnpkg.com/http-parser-js/-/http-parser-js-0.5.3.tgz#01d2709c79d41698bb01d4decc5e9da4e4a033d9" - integrity sha512-t7hjvef/5HEK7RWTdUzVUhl8zkEu+LlaE0IYzdMuvbSDipxBRpOn4Uhw8ZyECEa808iVT8XCjzo6xmYt4CiLZg== - -http-proxy-middleware@0.19.1: - version "0.19.1" - resolved "https://registry.yarnpkg.com/http-proxy-middleware/-/http-proxy-middleware-0.19.1.tgz#183c7dc4aa1479150306498c210cdaf96080a43a" - integrity sha512-yHYTgWMQO8VvwNS22eLLloAkvungsKdKTLO8AJlftYIKNfJr3GK3zK0ZCfzDDGUBttdGc8xFy1mCitvNKQtC3Q== - dependencies: - http-proxy "^1.17.0" - is-glob "^4.0.0" - lodash "^4.17.11" - micromatch "^3.1.10" - -http-proxy-middleware@^1.0.0: - version "1.3.1" - resolved "https://registry.yarnpkg.com/http-proxy-middleware/-/http-proxy-middleware-1.3.1.tgz#43700d6d9eecb7419bf086a128d0f7205d9eb665" - integrity sha512-13eVVDYS4z79w7f1+NPllJtOQFx/FdUW4btIvVRMaRlUY9VGstAbo5MOhLEuUgZFRHn3x50ufn25zkj/boZnEg== - dependencies: - "@types/http-proxy" "^1.17.5" - http-proxy "^1.18.1" - is-glob "^4.0.1" - is-plain-obj "^3.0.0" - micromatch "^4.0.2" - -http-proxy@^1.17.0, http-proxy@^1.18.1: - version "1.18.1" - resolved "https://registry.yarnpkg.com/http-proxy/-/http-proxy-1.18.1.tgz#401541f0534884bbf95260334e72f88ee3976549" - integrity sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ== - dependencies: - eventemitter3 "^4.0.0" - follow-redirects "^1.0.0" - requires-port "^1.0.0" - -http-signature@~1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/http-signature/-/http-signature-1.2.0.tgz#9aecd925114772f3d95b65a60abb8f7c18fbace1" - integrity sha1-muzZJRFHcvPZW2WmCruPfBj7rOE= - dependencies: - assert-plus "^1.0.0" - jsprim "^1.2.2" - sshpk "^1.7.0" - -https-browserify@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/https-browserify/-/https-browserify-1.0.0.tgz#ec06c10e0a34c0f2faf199f7fd7fc78fffd03c73" - integrity sha1-7AbBDgo0wPL68Zn3/X/Hj//QPHM= - -human-signals@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/human-signals/-/human-signals-1.1.1.tgz#c5b1cd14f50aeae09ab6c59fe63ba3395fe4dfa3" - integrity sha512-SEQu7vl8KjNL2eoGBLF3+wAjpsNfA9XMlXAYj/3EdaNfAlxKthD1xjEQfGOUhllCGGJVNY34bRr6lPINhNjyZw== - -iconv-lite@0.4.24, iconv-lite@^0.4.24: - version "0.4.24" - resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b" - integrity sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA== - dependencies: - safer-buffer ">= 2.1.2 < 3" - -icss-replace-symbols@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/icss-replace-symbols/-/icss-replace-symbols-1.1.0.tgz#06ea6f83679a7749e386cfe1fe812ae5db223ded" - integrity sha1-Bupvg2ead0njhs/h/oEq5dsiPe0= - -icss-utils@^4.0.0, icss-utils@^4.1.1: - version "4.1.1" - resolved "https://registry.yarnpkg.com/icss-utils/-/icss-utils-4.1.1.tgz#21170b53789ee27447c2f47dd683081403f9a467" - integrity sha512-4aFq7wvWyMHKgxsH8QQtGpvbASCf+eM3wPRLI6R+MgAnTCZ6STYsRvttLvRWK0Nfif5piF394St3HeJDaljGPA== - dependencies: - postcss "^7.0.14" - -icss-utils@^5.0.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/icss-utils/-/icss-utils-5.1.0.tgz#c6be6858abd013d768e98366ae47e25d5887b1ae" - integrity sha512-soFhflCVWLfRNOPU3iv5Z9VUdT44xFRbzjLsEzSr5AQmgqPMTHdU3PMT1Cf1ssx8fLNJDA1juftYl+PUcv3MqA== - -ieee754@^1.1.4: - version "1.2.1" - resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.2.1.tgz#8eb7a10a63fff25d15a57b001586d177d1b0d352" - integrity sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA== - -iferr@^0.1.5: - version "0.1.5" - resolved "https://registry.yarnpkg.com/iferr/-/iferr-0.1.5.tgz#c60eed69e6d8fdb6b3104a1fcbca1c192dc5b501" - integrity sha1-xg7taebY/bazEEofy8ocGS3FtQE= - -ignore@^3.3.5: - version "3.3.10" - resolved "https://registry.yarnpkg.com/ignore/-/ignore-3.3.10.tgz#0a97fb876986e8081c631160f8f9f389157f0043" - integrity sha512-Pgs951kaMm5GXP7MOvxERINe3gsaVjUWFm+UZPSq9xYriQAksyhg0csnS0KXSNRD5NmNdapXEpjxG49+AKh/ug== - -ignore@^4.0.3, ignore@^4.0.6: - version "4.0.6" - resolved "https://registry.yarnpkg.com/ignore/-/ignore-4.0.6.tgz#750e3db5862087b4737ebac8207ffd1ef27b25fc" - integrity sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg== - -ignore@^5.1.4: - version "5.1.8" - resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.1.8.tgz#f150a8b50a34289b33e22f5889abd4d8016f0e57" - integrity sha512-BMpfD7PpiETpBl/A6S498BaIJ6Y/ABT93ETbby2fP00v4EbvPBXWEoaR1UBPKs3iR53pJY7EtZk5KACI57i1Uw== - -import-cwd@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/import-cwd/-/import-cwd-2.1.0.tgz#aa6cf36e722761285cb371ec6519f53e2435b0a9" - integrity sha1-qmzzbnInYShcs3HsZRn1PiQ1sKk= - dependencies: - import-from "^2.1.0" - -import-fresh@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-2.0.0.tgz#d81355c15612d386c61f9ddd3922d4304822a546" - integrity sha1-2BNVwVYS04bGH53dOSLUMEgipUY= - dependencies: - caller-path "^2.0.0" - resolve-from "^3.0.0" - -import-fresh@^3.0.0, import-fresh@^3.1.0, import-fresh@^3.2.1: - version "3.3.0" - resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-3.3.0.tgz#37162c25fcb9ebaa2e6e53d5b4d88ce17d9e0c2b" - integrity sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw== - dependencies: - parent-module "^1.0.0" - resolve-from "^4.0.0" - -import-from@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/import-from/-/import-from-2.1.0.tgz#335db7f2a7affd53aaa471d4b8021dee36b7f3b1" - integrity sha1-M1238qev/VOqpHHUuAId7ja387E= - dependencies: - resolve-from "^3.0.0" - -import-local@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/import-local/-/import-local-2.0.0.tgz#55070be38a5993cf18ef6db7e961f5bee5c5a09d" - integrity sha512-b6s04m3O+s3CGSbqDIyP4R6aAwAeYlVq9+WUWep6iHa8ETRf9yei1U48C5MmfJmV9AiLYYBKPMq/W+/WRpQmCQ== - dependencies: - pkg-dir "^3.0.0" - resolve-cwd "^2.0.0" - -imurmurhash@^0.1.4: - version "0.1.4" - resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea" - integrity sha1-khi5srkoojixPcT7a21XbyMUU+o= - -indexes-of@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/indexes-of/-/indexes-of-1.0.1.tgz#f30f716c8e2bd346c7b67d3df3915566a7c05607" - integrity sha1-8w9xbI4r00bHtn0985FVZqfAVgc= - -infer-owner@^1.0.3: - version "1.0.4" - resolved "https://registry.yarnpkg.com/infer-owner/-/infer-owner-1.0.4.tgz#c4cefcaa8e51051c2a40ba2ce8a3d27295af9467" - integrity sha512-IClj+Xz94+d7irH5qRyfJonOdfTzuDaifE6ZPWfx0N0+/ATZCbuTPq2prFl526urkQd90WyUKIh1DfBQ2hMz9A== - -inflight@^1.0.4: - version "1.0.6" - resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" - integrity sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk= - dependencies: - once "^1.3.0" - wrappy "1" - -inherits@2, inherits@2.0.4, inherits@^2.0.1, inherits@^2.0.3, inherits@^2.0.4, inherits@~2.0.1, inherits@~2.0.3: - version "2.0.4" - resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" - integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== - -inherits@2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.1.tgz#b17d08d326b4423e568eff719f91b0b1cbdf69f1" - integrity sha1-sX0I0ya0Qj5Wjv9xn5GwscvfafE= - -inherits@2.0.3: - version "2.0.3" - resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de" - integrity sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4= - -inquirer@^7.1.0: - version "7.3.3" - resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-7.3.3.tgz#04d176b2af04afc157a83fd7c100e98ee0aad003" - integrity sha512-JG3eIAj5V9CwcGvuOmoo6LB9kbAYT8HXffUl6memuszlwDC/qvFAJw49XJ5NROSFNPxp3iQg1GqkFhaY/CR0IA== - dependencies: - ansi-escapes "^4.2.1" - chalk "^4.1.0" - cli-cursor "^3.1.0" - cli-width "^3.0.0" - external-editor "^3.0.3" - figures "^3.0.0" - lodash "^4.17.19" - mute-stream "0.0.8" - run-async "^2.4.0" - rxjs "^6.6.0" - string-width "^4.1.0" - strip-ansi "^6.0.0" - through "^2.3.6" - -internal-ip@^4.3.0: - version "4.3.0" - resolved "https://registry.yarnpkg.com/internal-ip/-/internal-ip-4.3.0.tgz#845452baad9d2ca3b69c635a137acb9a0dad0907" - integrity sha512-S1zBo1D6zcsyuC6PMmY5+55YMILQ9av8lotMx447Bq6SAgo/sDK6y6uUKmuYhW7eacnIhFfsPmCNYdDzsnnDCg== - dependencies: - default-gateway "^4.2.0" - ipaddr.js "^1.9.0" - -ip-regex@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/ip-regex/-/ip-regex-2.1.0.tgz#fa78bf5d2e6913c911ce9f819ee5146bb6d844e9" - integrity sha1-+ni/XS5pE8kRzp+BnuUUa7bYROk= - -ip@^1.1.0, ip@^1.1.5: - version "1.1.5" - resolved "https://registry.yarnpkg.com/ip/-/ip-1.1.5.tgz#bdded70114290828c0a039e72ef25f5aaec4354a" - integrity sha1-vd7XARQpCCjAoDnnLvJfWq7ENUo= - -ipaddr.js@1.9.1, ipaddr.js@^1.9.0: - version "1.9.1" - resolved "https://registry.yarnpkg.com/ipaddr.js/-/ipaddr.js-1.9.1.tgz#bff38543eeb8984825079ff3a2a8e6cbd46781b3" - integrity sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g== - -is-absolute-url@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/is-absolute-url/-/is-absolute-url-2.1.0.tgz#50530dfb84fcc9aa7dbe7852e83a37b93b9f2aa6" - integrity sha1-UFMN+4T8yap9vnhS6Do3uTufKqY= - -is-absolute-url@^3.0.3: - version "3.0.3" - resolved "https://registry.yarnpkg.com/is-absolute-url/-/is-absolute-url-3.0.3.tgz#96c6a22b6a23929b11ea0afb1836c36ad4a5d698" - integrity sha512-opmNIX7uFnS96NtPmhWQgQx6/NYFgsUXYMllcfzwWKUMwfo8kku1TvE6hkNcH+Q1ts5cMVrsY7j0bxXQDciu9Q== - -is-accessor-descriptor@^0.1.6: - version "0.1.6" - resolved "https://registry.yarnpkg.com/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz#a9e12cb3ae8d876727eeef3843f8a0897b5c98d6" - integrity sha1-qeEss66Nh2cn7u84Q/igiXtcmNY= - dependencies: - kind-of "^3.0.2" - -is-accessor-descriptor@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz#169c2f6d3df1f992618072365c9b0ea1f6878656" - integrity sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ== - dependencies: - kind-of "^6.0.0" - -is-arguments@^1.0.4: - version "1.1.0" - resolved "https://registry.yarnpkg.com/is-arguments/-/is-arguments-1.1.0.tgz#62353031dfbee07ceb34656a6bde59efecae8dd9" - integrity sha512-1Ij4lOMPl/xB5kBDn7I+b2ttPMKa8szhEIrXDuXQD/oe3HJLTLhqhgGspwgyGd6MOywBUqVvYicF72lkgDnIHg== - dependencies: - call-bind "^1.0.0" - -is-arrayish@^0.2.1: - version "0.2.1" - resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d" - integrity sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0= - -is-arrayish@^0.3.1: - version "0.3.2" - resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.3.2.tgz#4574a2ae56f7ab206896fb431eaeed066fdf8f03" - integrity sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ== - -is-bigint@^1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/is-bigint/-/is-bigint-1.0.2.tgz#ffb381442503235ad245ea89e45b3dbff040ee5a" - integrity sha512-0JV5+SOCQkIdzjBK9buARcV804Ddu7A0Qet6sHi3FimE9ne6m4BGQZfRn+NZiXbBk4F4XmHfDZIipLj9pX8dSA== - -is-binary-path@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-1.0.1.tgz#75f16642b480f187a711c814161fd3a4a7655898" - integrity sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg= - dependencies: - binary-extensions "^1.0.0" - -is-binary-path@~2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-2.1.0.tgz#ea1f7f3b80f064236e83470f86c09c254fb45b09" - integrity sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw== - dependencies: - binary-extensions "^2.0.0" - -is-boolean-object@^1.1.0: - version "1.1.1" - resolved "https://registry.yarnpkg.com/is-boolean-object/-/is-boolean-object-1.1.1.tgz#3c0878f035cb821228d350d2e1e36719716a3de8" - integrity sha512-bXdQWkECBUIAcCkeH1unwJLIpZYaa5VvuygSyS/c2lf719mTKZDU5UdDRlpd01UjADgmW8RfqaP+mRaVPdr/Ng== - dependencies: - call-bind "^1.0.2" - -is-buffer@^1.1.5: - version "1.1.6" - resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-1.1.6.tgz#efaa2ea9daa0d7ab2ea13a97b2b8ad51fefbe8be" - integrity sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w== - -is-callable@^1.1.4, is-callable@^1.2.3: - version "1.2.3" - resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.2.3.tgz#8b1e0500b73a1d76c70487636f368e519de8db8e" - integrity sha512-J1DcMe8UYTBSrKezuIUTUwjXsho29693unXM2YhJUTR2txK/eG47bvNa/wipPFmZFgr/N6f1GA66dv0mEyTIyQ== - -is-ci@^1.0.10: - version "1.2.1" - resolved "https://registry.yarnpkg.com/is-ci/-/is-ci-1.2.1.tgz#e3779c8ee17fccf428488f6e281187f2e632841c" - integrity sha512-s6tfsaQaQi3JNciBH6shVqEDvhGut0SUXr31ag8Pd8BBbVVlcGfWhpPmEOoM6RJ5TFhbypvf5yyRw/VXW1IiWg== - dependencies: - ci-info "^1.5.0" - -is-color-stop@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/is-color-stop/-/is-color-stop-1.1.0.tgz#cfff471aee4dd5c9e158598fbe12967b5cdad345" - integrity sha1-z/9HGu5N1cnhWFmPvhKWe1za00U= - dependencies: - css-color-names "^0.0.4" - hex-color-regex "^1.1.0" - hsl-regex "^1.0.0" - hsla-regex "^1.0.0" - rgb-regex "^1.0.1" - rgba-regex "^1.0.0" - -is-core-module@^2.2.0: - version "2.4.0" - resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.4.0.tgz#8e9fc8e15027b011418026e98f0e6f4d86305cc1" - integrity sha512-6A2fkfq1rfeQZjxrZJGerpLCTHRNEBiSgnu0+obeJpEPZRUooHgsizvzv0ZjJwOz3iWIHdJtVWJ/tmPr3D21/A== - dependencies: - has "^1.0.3" - -is-data-descriptor@^0.1.4: - version "0.1.4" - resolved "https://registry.yarnpkg.com/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz#0b5ee648388e2c860282e793f1856fec3f301b56" - integrity sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y= - dependencies: - kind-of "^3.0.2" - -is-data-descriptor@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz#d84876321d0e7add03990406abbbbd36ba9268c7" - integrity sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ== - dependencies: - kind-of "^6.0.0" - -is-date-object@^1.0.1: - version "1.0.4" - resolved "https://registry.yarnpkg.com/is-date-object/-/is-date-object-1.0.4.tgz#550cfcc03afada05eea3dd30981c7b09551f73e5" - integrity sha512-/b4ZVsG7Z5XVtIxs/h9W8nvfLgSAyKYdtGWQLbqy6jA1icmgjf8WCoTKgeS4wy5tYaPePouzFMANbnj94c2Z+A== - -is-descriptor@^0.1.0: - version "0.1.6" - resolved "https://registry.yarnpkg.com/is-descriptor/-/is-descriptor-0.1.6.tgz#366d8240dde487ca51823b1ab9f07a10a78251ca" - integrity sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg== - dependencies: - is-accessor-descriptor "^0.1.6" - is-data-descriptor "^0.1.4" - kind-of "^5.0.0" - -is-descriptor@^1.0.0, is-descriptor@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/is-descriptor/-/is-descriptor-1.0.2.tgz#3b159746a66604b04f8c81524ba365c5f14d86ec" - integrity sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg== - dependencies: - is-accessor-descriptor "^1.0.0" - is-data-descriptor "^1.0.0" - kind-of "^6.0.2" - -is-directory@^0.3.1: - version "0.3.1" - resolved "https://registry.yarnpkg.com/is-directory/-/is-directory-0.3.1.tgz#61339b6f2475fc772fd9c9d83f5c8575dc154ae1" - integrity sha1-YTObbyR1/Hcv2cnYP1yFddwVSuE= - -is-docker@^2.0.0: - version "2.2.1" - resolved "https://registry.yarnpkg.com/is-docker/-/is-docker-2.2.1.tgz#33eeabe23cfe86f14bde4408a02c0cfb853acdaa" - integrity sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ== - -is-extendable@^0.1.0, is-extendable@^0.1.1: - version "0.1.1" - resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-0.1.1.tgz#62b110e289a471418e3ec36a617d472e301dfc89" - integrity sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik= - -is-extendable@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-1.0.1.tgz#a7470f9e426733d81bd81e1155264e3a3507cab4" - integrity sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA== - dependencies: - is-plain-object "^2.0.4" - -is-extglob@^2.1.0, is-extglob@^2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" - integrity sha1-qIwCU1eR8C7TfHahueqXc8gz+MI= - -is-fullwidth-code-point@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz#a3b30a5c4f199183167aaab93beefae3ddfb654f" - integrity sha1-o7MKXE8ZkYMWeqq5O+764937ZU8= - -is-fullwidth-code-point@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz#f116f8064fe90b3f7844a38997c0b75051269f1d" - integrity sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg== - -is-glob@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-3.1.0.tgz#7ba5ae24217804ac70707b96922567486cc3e84a" - integrity sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo= - dependencies: - is-extglob "^2.1.0" - -is-glob@^4.0.0, is-glob@^4.0.1, is-glob@~4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.1.tgz#7567dbe9f2f5e2467bc77ab83c4a29482407a5dc" - integrity sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg== - dependencies: - is-extglob "^2.1.1" - -is-module@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-module/-/is-module-1.0.0.tgz#3258fb69f78c14d5b815d664336b4cffb6441591" - integrity sha1-Mlj7afeMFNW4FdZkM2tM/7ZEFZE= - -is-negative-zero@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/is-negative-zero/-/is-negative-zero-2.0.1.tgz#3de746c18dda2319241a53675908d8f766f11c24" - integrity sha512-2z6JzQvZRa9A2Y7xC6dQQm4FSTSTNWjKIYYTt4246eMTJmIo0Q+ZyOsU66X8lxK1AbB92dFeglPLrhwpeRKO6w== - -is-number-object@^1.0.4: - version "1.0.5" - resolved "https://registry.yarnpkg.com/is-number-object/-/is-number-object-1.0.5.tgz#6edfaeed7950cff19afedce9fbfca9ee6dd289eb" - integrity sha512-RU0lI/n95pMoUKu9v1BZP5MBcZuNSVJkMkAG2dJqC4z2GlkGUNeH68SuHuBKBD/XFe+LHZ+f9BKkLET60Niedw== - -is-number@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/is-number/-/is-number-3.0.0.tgz#24fd6201a4782cf50561c810276afc7d12d71195" - integrity sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU= - dependencies: - kind-of "^3.0.2" - -is-number@^7.0.0: - version "7.0.0" - resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b" - integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng== - -is-obj@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/is-obj/-/is-obj-1.0.1.tgz#3e4729ac1f5fde025cd7d83a896dab9f4f67db0f" - integrity sha1-PkcprB9f3gJc19g6iW2rn09n2w8= - -is-obj@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/is-obj/-/is-obj-2.0.0.tgz#473fb05d973705e3fd9620545018ca8e22ef4982" - integrity sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w== - -is-path-cwd@^2.0.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/is-path-cwd/-/is-path-cwd-2.2.0.tgz#67d43b82664a7b5191fd9119127eb300048a9fdb" - integrity sha512-w942bTcih8fdJPJmQHFzkS76NEP8Kzzvmw92cXsazb8intwLqPibPPdXf4ANdKV3rYMuuQYGIWtvz9JilB3NFQ== - -is-path-in-cwd@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/is-path-in-cwd/-/is-path-in-cwd-2.1.0.tgz#bfe2dca26c69f397265a4009963602935a053acb" - integrity sha512-rNocXHgipO+rvnP6dk3zI20RpOtrAM/kzbB258Uw5BWr3TpXi861yzjo16Dn4hUox07iw5AyeMLHWsujkjzvRQ== - dependencies: - is-path-inside "^2.1.0" - -is-path-inside@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/is-path-inside/-/is-path-inside-2.1.0.tgz#7c9810587d659a40d27bcdb4d5616eab059494b2" - integrity sha512-wiyhTzfDWsvwAW53OBWF5zuvaOGlZ6PwYxAbPVDhpm+gM09xKQGjBq/8uYN12aDvMxnAnq3dxTyoSoRNmg5YFg== - dependencies: - path-is-inside "^1.0.2" - -is-plain-obj@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/is-plain-obj/-/is-plain-obj-1.1.0.tgz#71a50c8429dfca773c92a390a4a03b39fcd51d3e" - integrity sha1-caUMhCnfync8kqOQpKA7OfzVHT4= - -is-plain-obj@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/is-plain-obj/-/is-plain-obj-3.0.0.tgz#af6f2ea14ac5a646183a5bbdb5baabbc156ad9d7" - integrity sha512-gwsOE28k+23GP1B6vFl1oVh/WOzmawBrKwo5Ev6wMKzPkaXaCDIQKzLnvsA42DRlbVTWorkgTKIviAKCWkfUwA== - -is-plain-object@^2.0.3, is-plain-object@^2.0.4: - version "2.0.4" - resolved "https://registry.yarnpkg.com/is-plain-object/-/is-plain-object-2.0.4.tgz#2c163b3fafb1b606d9d17928f05c2a1c38e07677" - integrity sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og== - dependencies: - isobject "^3.0.1" - -is-regex@^1.0.4, is-regex@^1.1.3: - version "1.1.3" - resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.1.3.tgz#d029f9aff6448b93ebbe3f33dac71511fdcbef9f" - integrity sha512-qSVXFz28HM7y+IWX6vLCsexdlvzT1PJNFSBuaQLQ5o0IEw8UDYW6/2+eCMVyIsbM8CNLX2a/QWmSpyxYEHY7CQ== - dependencies: - call-bind "^1.0.2" - has-symbols "^1.0.2" - -is-regexp@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-regexp/-/is-regexp-1.0.0.tgz#fd2d883545c46bac5a633e7b9a09e87fa2cb5069" - integrity sha1-/S2INUXEa6xaYz57mgnof6LLUGk= - -is-resolvable@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/is-resolvable/-/is-resolvable-1.1.0.tgz#fb18f87ce1feb925169c9a407c19318a3206ed88" - integrity sha512-qgDYXFSR5WvEfuS5dMj6oTMEbrrSaM0CrFk2Yiq/gXnBvD9pMa2jGXxyhGLfvhZpuMZe18CJpFxAt3CRs42NMg== - -is-stream@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-1.1.0.tgz#12d4a3dd4e68e0b79ceb8dbc84173ae80d91ca44" - integrity sha1-EtSj3U5o4Lec6428hBc66A2RykQ= - -is-stream@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-2.0.0.tgz#bde9c32680d6fae04129d6ac9d921ce7815f78e3" - integrity sha512-XCoy+WlUr7d1+Z8GgSuXmpuUFC9fOhRXglJMx+dwLKTkL44Cjd4W1Z5P+BQZpr+cR93aGP4S/s7Ftw6Nd/kiEw== - -is-string@^1.0.5, is-string@^1.0.6: - version "1.0.6" - resolved "https://registry.yarnpkg.com/is-string/-/is-string-1.0.6.tgz#3fe5d5992fb0d93404f32584d4b0179a71b54a5f" - integrity sha512-2gdzbKUuqtQ3lYNrUTQYoClPhm7oQu4UdpSZMp1/DGgkHBT8E2Z1l0yMdb6D4zNAxwDiMv8MdulKROJGNl0Q0w== - -is-symbol@^1.0.2, is-symbol@^1.0.3: - version "1.0.4" - resolved "https://registry.yarnpkg.com/is-symbol/-/is-symbol-1.0.4.tgz#a6dac93b635b063ca6872236de88910a57af139c" - integrity sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg== - dependencies: - has-symbols "^1.0.2" - -is-typedarray@~1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-typedarray/-/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a" - integrity sha1-5HnICFjfDBsR3dppQPlgEfzaSpo= - -is-valid-glob@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-valid-glob/-/is-valid-glob-1.0.0.tgz#29bf3eff701be2d4d315dbacc39bc39fe8f601aa" - integrity sha1-Kb8+/3Ab4tTTFdusw5vDn+j2Aao= - -is-windows@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/is-windows/-/is-windows-1.0.2.tgz#d1850eb9791ecd18e6182ce12a30f396634bb19d" - integrity sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA== - -is-wsl@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/is-wsl/-/is-wsl-1.1.0.tgz#1f16e4aa22b04d1336b66188a66af3c600c3a66d" - integrity sha1-HxbkqiKwTRM2tmGIpmrzxgDDpm0= - -is-wsl@^2.1.1: - version "2.2.0" - resolved "https://registry.yarnpkg.com/is-wsl/-/is-wsl-2.2.0.tgz#74a4c76e77ca9fd3f932f290c17ea326cd157271" - integrity sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww== - dependencies: - is-docker "^2.0.0" - -isarray@1.0.0, isarray@^1.0.0, isarray@~1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" - integrity sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE= - -isexe@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" - integrity sha1-6PvzdNxVb/iUehDcsFctYz8s+hA= - -isobject@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/isobject/-/isobject-2.1.0.tgz#f065561096a3f1da2ef46272f815c840d87e0c89" - integrity sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk= - dependencies: - isarray "1.0.0" - -isobject@^3.0.0, isobject@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/isobject/-/isobject-3.0.1.tgz#4e431e92b11a9731636aa1f9c8d1ccbcfdab78df" - integrity sha1-TkMekrEalzFjaqH5yNHMvP2reN8= - -isstream@~0.1.2: - version "0.1.2" - resolved "https://registry.yarnpkg.com/isstream/-/isstream-0.1.2.tgz#47e63f7af55afa6f92e1500e690eb8b8529c099a" - integrity sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo= - -javascript-stringify@^2.0.1: - version "2.1.0" - resolved "https://registry.yarnpkg.com/javascript-stringify/-/javascript-stringify-2.1.0.tgz#27c76539be14d8bd128219a2d731b09337904e79" - integrity sha512-JVAfqNPTvNq3sB/VHQJAFxN/sPgKnsKrCwyRt15zwNCdrMMJDdcEOdubuy+DuJYYdm0ox1J4uzEuYKkN+9yhVg== - -jest-worker@^24.9.0: - version "24.9.0" - resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-24.9.0.tgz#5dbfdb5b2d322e98567898238a9697bcce67b3e5" - integrity sha512-51PE4haMSXcHohnSMdM42anbvZANYTqMrr52tVKPqqsPJMzoP6FYYDVqahX/HrAoKEKz3uUPzSvKs9A3qR4iVw== - dependencies: - merge-stream "^2.0.0" - supports-color "^6.1.0" - -jest-worker@^26.2.1: - version "26.6.2" - resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-26.6.2.tgz#7f72cbc4d643c365e27b9fd775f9d0eaa9c7a8ed" - integrity sha512-KWYVV1c4i+jbMpaBC+U++4Va0cp8OisU185o73T1vo99hqi7w8tSJfUXYswwqqrjzwxa6KpRK54WhPvwf5w6PQ== - dependencies: - "@types/node" "*" - merge-stream "^2.0.0" - supports-color "^7.0.0" - -js-message@1.0.7: - version "1.0.7" - resolved "https://registry.yarnpkg.com/js-message/-/js-message-1.0.7.tgz#fbddd053c7a47021871bb8b2c95397cc17c20e47" - integrity sha512-efJLHhLjIyKRewNS9EGZ4UpI8NguuL6fKkhRxVuMmrGV2xN/0APGdQYwLFky5w9naebSZ0OwAGp0G6/2Cg90rA== - -js-queue@2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/js-queue/-/js-queue-2.0.2.tgz#0be590338f903b36c73d33c31883a821412cd482" - integrity sha512-pbKLsbCfi7kriM3s1J4DDCo7jQkI58zPLHi0heXPzPlj0hjUsm+FesPUbE0DSbIVIK503A36aUBoCN7eMFedkA== - dependencies: - easy-stack "^1.0.1" - -js-tokens@^3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-3.0.2.tgz#9866df395102130e38f7f996bceb65443209c25b" - integrity sha1-mGbfOVECEw449/mWvOtlRDIJwls= - -js-tokens@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" - integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ== - -js-yaml@^3.13.1: - version "3.14.1" - resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.14.1.tgz#dae812fdb3825fa306609a8717383c50c36a0537" - integrity sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g== - dependencies: - argparse "^1.0.7" - esprima "^4.0.0" - -jsbn@~0.1.0: - version "0.1.1" - resolved "https://registry.yarnpkg.com/jsbn/-/jsbn-0.1.1.tgz#a5e654c2e5a2deb5f201d96cefbca80c0ef2f513" - integrity sha1-peZUwuWi3rXyAdls77yoDA7y9RM= - -jsesc@^2.5.1: - version "2.5.2" - resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-2.5.2.tgz#80564d2e483dacf6e8ef209650a67df3f0c283a4" - integrity sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA== - -jsesc@~0.5.0: - version "0.5.0" - resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-0.5.0.tgz#e7dee66e35d6fc16f710fe91d5cf69f70f08911d" - integrity sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0= - -json-parse-better-errors@^1.0.1, json-parse-better-errors@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz#bb867cfb3450e69107c131d1c514bab3dc8bcaa9" - integrity sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw== - -json-parse-even-better-errors@^2.3.0: - version "2.3.1" - resolved "https://registry.yarnpkg.com/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz#7c47805a94319928e05777405dc12e1f7a4ee02d" - integrity sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w== - -json-schema-traverse@^0.4.1: - version "0.4.1" - resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz#69f6a87d9513ab8bb8fe63bdb0979c448e684660" - integrity sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg== - -json-schema-traverse@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz#ae7bcb3656ab77a73ba5c49bf654f38e6b6860e2" - integrity sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug== - -json-schema@0.2.3: - version "0.2.3" - resolved "https://registry.yarnpkg.com/json-schema/-/json-schema-0.2.3.tgz#b480c892e59a2f05954ce727bd3f2a4e882f9e13" - integrity sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM= - -json-stable-stringify-without-jsonify@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz#9db7b59496ad3f3cfef30a75142d2d930ad72651" - integrity sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE= - -json-stringify-safe@~5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz#1296a2d58fd45f19a0f6ce01d65701e2c735b6eb" - integrity sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus= - -json3@^3.3.3: - version "3.3.3" - resolved "https://registry.yarnpkg.com/json3/-/json3-3.3.3.tgz#7fc10e375fc5ae42c4705a5cc0aa6f62be305b81" - integrity sha512-c7/8mbUsKigAbLkD5B010BK4D9LZm7A1pNItkEwiUZRpIN66exu/e7YQWysGun+TRKaJp8MhemM+VkfWv42aCA== - -json5@^0.5.0: - version "0.5.1" - resolved "https://registry.yarnpkg.com/json5/-/json5-0.5.1.tgz#1eade7acc012034ad84e2396767ead9fa5495821" - integrity sha1-Hq3nrMASA0rYTiOWdn6tn6VJWCE= - -json5@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/json5/-/json5-1.0.1.tgz#779fb0018604fa854eacbf6252180d83543e3dbe" - integrity sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow== - dependencies: - minimist "^1.2.0" - -json5@^2.1.1, json5@^2.1.2: - version "2.2.0" - resolved "https://registry.yarnpkg.com/json5/-/json5-2.2.0.tgz#2dfefe720c6ba525d9ebd909950f0515316c89a3" - integrity sha512-f+8cldu7X/y7RAJurMEJmdoKXGB/X550w2Nr3tTbezL6RwEE/iMcm+tZnXeoZtKuOq6ft8+CqzEkrIgx1fPoQA== - dependencies: - minimist "^1.2.5" - -jsonfile@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-4.0.0.tgz#8771aae0799b64076b76640fca058f9c10e33ecb" - integrity sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss= - optionalDependencies: - graceful-fs "^4.1.6" - -jsonfile@^6.0.1: - version "6.1.0" - resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-6.1.0.tgz#bc55b2634793c679ec6403094eb13698a6ec0aae" - integrity sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ== - dependencies: - universalify "^2.0.0" - optionalDependencies: - graceful-fs "^4.1.6" - -jsprim@^1.2.2: - version "1.4.1" - resolved "https://registry.yarnpkg.com/jsprim/-/jsprim-1.4.1.tgz#313e66bc1e5cc06e438bc1b7499c2e5c56acb6a2" - integrity sha1-MT5mvB5cwG5Di8G3SZwuXFastqI= - dependencies: - assert-plus "1.0.0" - extsprintf "1.3.0" - json-schema "0.2.3" - verror "1.10.0" - -killable@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/killable/-/killable-1.0.1.tgz#4c8ce441187a061c7474fb87ca08e2a638194892" - integrity sha512-LzqtLKlUwirEUyl/nicirVmNiPvYs7l5n8wOPP7fyJVpUPkvCnW/vuiXGpylGUlnPDnB7311rARzAt3Mhswpjg== - -kind-of@^3.0.2, kind-of@^3.0.3, kind-of@^3.2.0: - version "3.2.2" - resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-3.2.2.tgz#31ea21a734bab9bbb0f32466d893aea51e4a3c64" - integrity sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ= - dependencies: - is-buffer "^1.1.5" - -kind-of@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-4.0.0.tgz#20813df3d712928b207378691a45066fae72dd57" - integrity sha1-IIE989cSkosgc3hpGkUGb65y3Vc= - dependencies: - is-buffer "^1.1.5" - -kind-of@^5.0.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-5.1.0.tgz#729c91e2d857b7a419a1f9aa65685c4c33f5845d" - integrity sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw== - -kind-of@^6.0.0, kind-of@^6.0.2: - version "6.0.3" - resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-6.0.3.tgz#07c05034a6c349fa06e24fa35aa76db4580ce4dd" - integrity sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw== - -launch-editor-middleware@^2.2.1: - version "2.2.1" - resolved "https://registry.yarnpkg.com/launch-editor-middleware/-/launch-editor-middleware-2.2.1.tgz#e14b07e6c7154b0a4b86a0fd345784e45804c157" - integrity sha512-s0UO2/gEGiCgei3/2UN3SMuUj1phjQN8lcpnvgLSz26fAzNWPQ6Nf/kF5IFClnfU2ehp6LrmKdMU/beveO+2jg== - dependencies: - launch-editor "^2.2.1" - -launch-editor@^2.2.1: - version "2.2.1" - resolved "https://registry.yarnpkg.com/launch-editor/-/launch-editor-2.2.1.tgz#871b5a3ee39d6680fcc26d37930b6eeda89db0ca" - integrity sha512-On+V7K2uZK6wK7x691ycSUbLD/FyKKelArkbaAMSSJU8JmqmhwN2+mnJDNINuJWSrh2L0kDk+ZQtbC/gOWUwLw== - dependencies: - chalk "^2.3.0" - shell-quote "^1.6.1" - -levn@^0.4.1: - version "0.4.1" - resolved "https://registry.yarnpkg.com/levn/-/levn-0.4.1.tgz#ae4562c007473b932a6200d403268dd2fffc6ade" - integrity sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ== - dependencies: - prelude-ls "^1.2.1" - type-check "~0.4.0" - -lines-and-columns@^1.1.6: - version "1.1.6" - resolved "https://registry.yarnpkg.com/lines-and-columns/-/lines-and-columns-1.1.6.tgz#1c00c743b433cd0a4e80758f7b64a57440d9ff00" - integrity sha1-HADHQ7QzzQpOgHWPe2SldEDZ/wA= - -loader-fs-cache@^1.0.0: - version "1.0.3" - resolved "https://registry.yarnpkg.com/loader-fs-cache/-/loader-fs-cache-1.0.3.tgz#f08657646d607078be2f0a032f8bd69dd6f277d9" - integrity sha512-ldcgZpjNJj71n+2Mf6yetz+c9bM4xpKtNds4LbqXzU/PTdeAX0g3ytnU1AJMEcTk2Lex4Smpe3Q/eCTsvUBxbA== - dependencies: - find-cache-dir "^0.1.1" - mkdirp "^0.5.1" - -loader-runner@^2.3.1, loader-runner@^2.4.0: - version "2.4.0" - resolved "https://registry.yarnpkg.com/loader-runner/-/loader-runner-2.4.0.tgz#ed47066bfe534d7e84c4c7b9998c2a75607d9357" - integrity sha512-Jsmr89RcXGIwivFY21FcRrisYZfvLMTWx5kOLc+JTxtpBOG6xML0vzbc6SEQG2FO9/4Fc3wW4LVcB5DmGflaRw== - -loader-utils@^0.2.16: - version "0.2.17" - resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-0.2.17.tgz#f86e6374d43205a6e6c60e9196f17c0299bfb348" - integrity sha1-+G5jdNQyBabmxg6RlvF8Apm/s0g= - dependencies: - big.js "^3.1.3" - emojis-list "^2.0.0" - json5 "^0.5.0" - object-assign "^4.0.1" - -loader-utils@^1.0.2, loader-utils@^1.1.0, loader-utils@^1.2.3, loader-utils@^1.4.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-1.4.0.tgz#c579b5e34cb34b1a74edc6c1fb36bfa371d5a613" - integrity sha512-qH0WSMBtn/oHuwjy/NucEgbx5dbxxnxup9s4PVXJUDHZBQY+s0NWA9rJf53RBnQZxfch7euUui7hpoAPvALZdA== - dependencies: - big.js "^5.2.2" - emojis-list "^3.0.0" - json5 "^1.0.1" - -loader-utils@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-2.0.0.tgz#e4cace5b816d425a166b5f097e10cd12b36064b0" - integrity sha512-rP4F0h2RaWSvPEkD7BLDFQnvSf+nK+wr3ESUjNTyAGobqrijmW92zc+SO6d4p4B1wh7+B/Jg1mkQe5NYUEHtHQ== - dependencies: - big.js "^5.2.2" - emojis-list "^3.0.0" - json5 "^2.1.2" - -locate-path@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-3.0.0.tgz#dbec3b3ab759758071b58fe59fc41871af21400e" - integrity sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A== - dependencies: - p-locate "^3.0.0" - path-exists "^3.0.0" - -locate-path@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-5.0.0.tgz#1afba396afd676a6d42504d0a67a3a7eb9f62aa0" - integrity sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g== - dependencies: - p-locate "^4.1.0" - -lodash._reinterpolate@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/lodash._reinterpolate/-/lodash._reinterpolate-3.0.0.tgz#0ccf2d89166af03b3663c796538b75ac6e114d9d" - integrity sha1-DM8tiRZq8Ds2Y8eWU4t1rG4RTZ0= - -lodash.assign@^4.2.0: - version "4.2.0" - resolved "https://registry.yarnpkg.com/lodash.assign/-/lodash.assign-4.2.0.tgz#0d99f3ccd7a6d261d19bdaeb9245005d285808e7" - integrity sha1-DZnzzNem0mHRm9rrkkUAXShYCOc= - -lodash.camelcase@^4.3.0: - version "4.3.0" - resolved "https://registry.yarnpkg.com/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz#b28aa6288a2b9fc651035c7711f65ab6190331a6" - integrity sha1-soqmKIorn8ZRA1x3EfZathkDMaY= - -lodash.clonedeep@^4.5.0: - version "4.5.0" - resolved "https://registry.yarnpkg.com/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz#e23f3f9c4f8fbdde872529c1071857a086e5ccef" - integrity sha1-4j8/nE+Pvd6HJSnBBxhXoIblzO8= - -lodash.debounce@^4.0.8: - version "4.0.8" - resolved "https://registry.yarnpkg.com/lodash.debounce/-/lodash.debounce-4.0.8.tgz#82d79bff30a67c4005ffd5e2515300ad9ca4d7af" - integrity sha1-gteb/zCmfEAF/9XiUVMArZyk168= - -lodash.defaults@^4.2.0: - version "4.2.0" - resolved "https://registry.yarnpkg.com/lodash.defaults/-/lodash.defaults-4.2.0.tgz#d09178716ffea4dde9e5fb7b37f6f0802274580c" - integrity sha1-0JF4cW/+pN3p5ft7N/bwgCJ0WAw= - -lodash.defaultsdeep@^4.6.1: - version "4.6.1" - resolved "https://registry.yarnpkg.com/lodash.defaultsdeep/-/lodash.defaultsdeep-4.6.1.tgz#512e9bd721d272d94e3d3a63653fa17516741ca6" - integrity sha512-3j8wdDzYuWO3lM3Reg03MuQR957t287Rpcxp1njpEa8oDrikb+FwGdW3n+FELh/A6qib6yPit0j/pv9G/yeAqA== - -lodash.foreach@^4.5.0: - version "4.5.0" - resolved "https://registry.yarnpkg.com/lodash.foreach/-/lodash.foreach-4.5.0.tgz#1a6a35eace401280c7f06dddec35165ab27e3e53" - integrity sha1-Gmo16s5AEoDH8G3d7DUWWrJ+PlM= - -lodash.get@^4.4.2: - version "4.4.2" - resolved "https://registry.yarnpkg.com/lodash.get/-/lodash.get-4.4.2.tgz#2d177f652fa31e939b4438d5341499dfa3825e99" - integrity sha1-LRd/ZS+jHpObRDjVNBSZ36OCXpk= - -lodash.kebabcase@^4.1.1: - version "4.1.1" - resolved "https://registry.yarnpkg.com/lodash.kebabcase/-/lodash.kebabcase-4.1.1.tgz#8489b1cb0d29ff88195cceca448ff6d6cc295c36" - integrity sha1-hImxyw0p/4gZXM7KRI/21swpXDY= - -lodash.mapvalues@^4.6.0: - version "4.6.0" - resolved "https://registry.yarnpkg.com/lodash.mapvalues/-/lodash.mapvalues-4.6.0.tgz#1bafa5005de9dd6f4f26668c30ca37230cc9689c" - integrity sha1-G6+lAF3p3W9PJmaMMMo3IwzJaJw= - -lodash.memoize@^4.1.2: - version "4.1.2" - resolved "https://registry.yarnpkg.com/lodash.memoize/-/lodash.memoize-4.1.2.tgz#bcc6c49a42a2840ed997f323eada5ecd182e0bfe" - integrity sha1-vMbEmkKihA7Zl/Mj6tpezRguC/4= - -lodash.merge@^4.6.2: - version "4.6.2" - resolved "https://registry.yarnpkg.com/lodash.merge/-/lodash.merge-4.6.2.tgz#558aa53b43b661e1925a0afdfa36a9a1085fe57a" - integrity sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ== - -lodash.sortby@^4.7.0: - version "4.7.0" - resolved "https://registry.yarnpkg.com/lodash.sortby/-/lodash.sortby-4.7.0.tgz#edd14c824e2cc9c1e0b0a1b42bb5210516a42438" - integrity sha1-7dFMgk4sycHgsKG0K7UhBRakJDg= - -lodash.template@^4.5.0: - version "4.5.0" - resolved "https://registry.yarnpkg.com/lodash.template/-/lodash.template-4.5.0.tgz#f976195cf3f347d0d5f52483569fe8031ccce8ab" - integrity sha512-84vYFxIkmidUiFxidA/KjjH9pAycqW+h980j7Fuz5qxRtO9pgB7MDFTdys1N7A5mcucRiDyEq4fusljItR1T/A== - dependencies: - lodash._reinterpolate "^3.0.0" - lodash.templatesettings "^4.0.0" - -lodash.templatesettings@^4.0.0: - version "4.2.0" - resolved "https://registry.yarnpkg.com/lodash.templatesettings/-/lodash.templatesettings-4.2.0.tgz#e481310f049d3cf6d47e912ad09313b154f0fb33" - integrity sha512-stgLz+i3Aa9mZgnjr/O+v9ruKZsPsndy7qPZOchbqk2cnTU1ZaldKK+v7m54WoKIyxiuMZTKT2H81F8BeAc3ZQ== - dependencies: - lodash._reinterpolate "^3.0.0" - -lodash.transform@^4.6.0: - version "4.6.0" - resolved "https://registry.yarnpkg.com/lodash.transform/-/lodash.transform-4.6.0.tgz#12306422f63324aed8483d3f38332b5f670547a0" - integrity sha1-EjBkIvYzJK7YSD0/ODMrX2cFR6A= - -lodash.truncate@^4.4.2: - version "4.4.2" - resolved "https://registry.yarnpkg.com/lodash.truncate/-/lodash.truncate-4.4.2.tgz#5a350da0b1113b837ecfffd5812cbe58d6eae193" - integrity sha1-WjUNoLERO4N+z//VgSy+WNbq4ZM= - -lodash.uniq@^4.5.0: - version "4.5.0" - resolved "https://registry.yarnpkg.com/lodash.uniq/-/lodash.uniq-4.5.0.tgz#d0225373aeb652adc1bc82e4945339a842754773" - integrity sha1-0CJTc662Uq3BvILklFM5qEJ1R3M= - -lodash@^4.17.11, lodash@^4.17.14, lodash@^4.17.15, lodash@^4.17.19, lodash@^4.17.20, lodash@^4.17.21, lodash@^4.17.3: - version "4.17.21" - resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c" - integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== - -log-symbols@^2.2.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/log-symbols/-/log-symbols-2.2.0.tgz#5740e1c5d6f0dfda4ad9323b5332107ef6b4c40a" - integrity sha512-VeIAFslyIerEJLXHziedo2basKbMKtTw3vfn5IzG0XTjhAVEJyNHnL2p7vc+wBDSdQuUpNw3M2u6xb9QsAY5Eg== - dependencies: - chalk "^2.0.1" - -loglevel@^1.6.8: - version "1.7.1" - resolved "https://registry.yarnpkg.com/loglevel/-/loglevel-1.7.1.tgz#005fde2f5e6e47068f935ff28573e125ef72f197" - integrity sha512-Hesni4s5UkWkwCGJMQGAh71PaLUmKFM60dHvq0zi/vDhhrzuk+4GgNbTXJ12YYQJn6ZKBDNIjYcuQGKudvqrIw== - -lower-case@^1.1.1: - version "1.1.4" - resolved "https://registry.yarnpkg.com/lower-case/-/lower-case-1.1.4.tgz#9a2cabd1b9e8e0ae993a4bf7d5875c39c42e8eac" - integrity sha1-miyr0bno4K6ZOkv31YdcOcQujqw= - -lru-cache@^4.0.1, lru-cache@^4.1.2: - version "4.1.5" - resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-4.1.5.tgz#8bbe50ea85bed59bc9e33dcab8235ee9bcf443cd" - integrity sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g== - dependencies: - pseudomap "^1.0.2" - yallist "^2.1.2" - -lru-cache@^5.1.1: - version "5.1.1" - resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-5.1.1.tgz#1da27e6710271947695daf6848e847f01d84b920" - integrity sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w== - dependencies: - yallist "^3.0.2" - -lru-cache@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-6.0.0.tgz#6d6fe6570ebd96aaf90fcad1dafa3b2566db3a94" - integrity sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA== - dependencies: - yallist "^4.0.0" - -magic-string@^0.25.0, magic-string@^0.25.7: - version "0.25.7" - resolved "https://registry.yarnpkg.com/magic-string/-/magic-string-0.25.7.tgz#3f497d6fd34c669c6798dcb821f2ef31f5445051" - integrity sha512-4CrMT5DOHTDk4HYDlzmwu4FVCcIYI8gauveasrdCu2IKIFOJ3f0v/8MDGJCDL9oD2ppz/Av1b0Nj345H9M+XIA== - dependencies: - sourcemap-codec "^1.4.4" - -make-dir@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-2.1.0.tgz#5f0310e18b8be898cc07009295a30ae41e91e6f5" - integrity sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA== - dependencies: - pify "^4.0.1" - semver "^5.6.0" - -make-dir@^3.0.2, make-dir@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-3.1.0.tgz#415e967046b3a7f1d185277d84aa58203726a13f" - integrity sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw== - dependencies: - semver "^6.0.0" - -map-cache@^0.2.2: - version "0.2.2" - resolved "https://registry.yarnpkg.com/map-cache/-/map-cache-0.2.2.tgz#c32abd0bd6525d9b051645bb4f26ac5dc98a0dbf" - integrity sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8= - -map-visit@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/map-visit/-/map-visit-1.0.0.tgz#ecdca8f13144e660f1b5bd41f12f3479d98dfb8f" - integrity sha1-7Nyo8TFE5mDxtb1B8S80edmN+48= - dependencies: - object-visit "^1.0.0" - -md5.js@^1.3.4: - version "1.3.5" - resolved "https://registry.yarnpkg.com/md5.js/-/md5.js-1.3.5.tgz#b5d07b8e3216e3e27cd728d72f70d1e6a342005f" - integrity sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg== - dependencies: - hash-base "^3.0.0" - inherits "^2.0.1" - safe-buffer "^5.1.2" - -mdn-data@2.0.14: - version "2.0.14" - resolved "https://registry.yarnpkg.com/mdn-data/-/mdn-data-2.0.14.tgz#7113fc4281917d63ce29b43446f701e68c25ba50" - integrity sha512-dn6wd0uw5GsdswPFfsgMp5NSB0/aDe6fK94YJV/AJDYXL6HVLWBsxeq7js7Ad+mU2K9LAlwpk6kN2D5mwCPVow== - -mdn-data@2.0.4: - version "2.0.4" - resolved "https://registry.yarnpkg.com/mdn-data/-/mdn-data-2.0.4.tgz#699b3c38ac6f1d728091a64650b65d388502fd5b" - integrity sha512-iV3XNKw06j5Q7mi6h+9vbx23Tv7JkjEVgKHW4pimwyDGWm0OIQntJJ+u1C6mg6mK1EaTv42XQ7w76yuzH7M2cA== - -media-typer@0.3.0: - version "0.3.0" - resolved "https://registry.yarnpkg.com/media-typer/-/media-typer-0.3.0.tgz#8710d7af0aa626f8fffa1ce00168545263255748" - integrity sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g= - -memfs@^3.1.2: - version "3.2.2" - resolved "https://registry.yarnpkg.com/memfs/-/memfs-3.2.2.tgz#5de461389d596e3f23d48bb7c2afb6161f4df40e" - integrity sha512-RE0CwmIM3CEvpcdK3rZ19BC4E6hv9kADkMN5rPduRak58cNArWLi/9jFLsa4rhsjfVxMP3v0jO7FHXq7SvFY5Q== - dependencies: - fs-monkey "1.0.3" - -memory-fs@^0.4.1: - version "0.4.1" - resolved "https://registry.yarnpkg.com/memory-fs/-/memory-fs-0.4.1.tgz#3a9a20b8462523e447cfbc7e8bb80ed667bfc552" - integrity sha1-OpoguEYlI+RHz7x+i7gO1me/xVI= - dependencies: - errno "^0.1.3" - readable-stream "^2.0.1" - -memory-fs@^0.5.0: - version "0.5.0" - resolved "https://registry.yarnpkg.com/memory-fs/-/memory-fs-0.5.0.tgz#324c01288b88652966d161db77838720845a8e3c" - integrity sha512-jA0rdU5KoQMC0e6ppoNRtpp6vjFq6+NY7r8hywnC7V+1Xj/MtHwGIbB1QaK/dunyjWteJzmkpd7ooeWg10T7GA== - dependencies: - errno "^0.1.3" - readable-stream "^2.0.1" - -merge-descriptors@1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/merge-descriptors/-/merge-descriptors-1.0.1.tgz#b00aaa556dd8b44568150ec9d1b953f3f90cbb61" - integrity sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E= - -merge-source-map@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/merge-source-map/-/merge-source-map-1.1.0.tgz#2fdde7e6020939f70906a68f2d7ae685e4c8c646" - integrity sha512-Qkcp7P2ygktpMPh2mCQZaf3jhN6D3Z/qVZHSdWvQ+2Ef5HgRAPBO57A77+ENm0CPx2+1Ce/MYKi3ymqdfuqibw== - dependencies: - source-map "^0.6.1" - -merge-stream@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/merge-stream/-/merge-stream-2.0.0.tgz#52823629a14dd00c9770fb6ad47dc6310f2c1f60" - integrity sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w== - -merge2@^1.2.3, merge2@^1.3.0: - version "1.4.1" - resolved "https://registry.yarnpkg.com/merge2/-/merge2-1.4.1.tgz#4368892f885e907455a6fd7dc55c0c9d404990ae" - integrity sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg== - -methods@~1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/methods/-/methods-1.1.2.tgz#5529a4d67654134edcc5266656835b0f851afcee" - integrity sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4= - -microevent.ts@~0.1.1: - version "0.1.1" - resolved "https://registry.yarnpkg.com/microevent.ts/-/microevent.ts-0.1.1.tgz#70b09b83f43df5172d0205a63025bce0f7357fa0" - integrity sha512-jo1OfR4TaEwd5HOrt5+tAZ9mqT4jmpNAusXtyfNzqVm9uiSYFZlKM1wYL4oU7azZW/PxQW53wM0S6OR1JHNa2g== - -micromatch@^3.1.10, micromatch@^3.1.4: - version "3.1.10" - resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-3.1.10.tgz#70859bc95c9840952f359a068a3fc49f9ecfac23" - integrity sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg== - dependencies: - arr-diff "^4.0.0" - array-unique "^0.3.2" - braces "^2.3.1" - define-property "^2.0.2" - extend-shallow "^3.0.2" - extglob "^2.0.4" - fragment-cache "^0.2.1" - kind-of "^6.0.2" - nanomatch "^1.2.9" - object.pick "^1.3.0" - regex-not "^1.0.0" - snapdragon "^0.8.1" - to-regex "^3.0.2" - -micromatch@^4.0.0, micromatch@^4.0.2: - version "4.0.4" - resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.4.tgz#896d519dfe9db25fce94ceb7a500919bf881ebf9" - integrity sha512-pRmzw/XUcwXGpD9aI9q/0XOwLNygjETJ8y0ao0wdqprrzDa4YnxLcz7fQRZr8voh8V10kGhABbNcHVk5wHgWwg== - dependencies: - braces "^3.0.1" - picomatch "^2.2.3" - -miller-rabin@^4.0.0: - version "4.0.1" - resolved "https://registry.yarnpkg.com/miller-rabin/-/miller-rabin-4.0.1.tgz#f080351c865b0dc562a8462966daa53543c78a4d" - integrity sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA== - dependencies: - bn.js "^4.0.0" - brorand "^1.0.1" - -mime-db@1.48.0, "mime-db@>= 1.43.0 < 2": - version "1.48.0" - resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.48.0.tgz#e35b31045dd7eada3aaad537ed88a33afbef2d1d" - integrity sha512-FM3QwxV+TnZYQ2aRqhlKBMHxk10lTbMt3bBkMAp54ddrNeVSfcQYOOKuGuy3Ddrm38I04If834fOUSq1yzslJQ== - -mime-types@^2.1.12, mime-types@~2.1.17, mime-types@~2.1.19, mime-types@~2.1.24: - version "2.1.31" - resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.31.tgz#a00d76b74317c61f9c2db2218b8e9f8e9c5c9e6b" - integrity sha512-XGZnNzm3QvgKxa8dpzyhFTHmpP3l5YNusmne07VUOXxou9CqUqYa/HBy124RqtVh/O2pECas/MOcsDgpilPOPg== - dependencies: - mime-db "1.48.0" - -mime@1.6.0: - version "1.6.0" - resolved "https://registry.yarnpkg.com/mime/-/mime-1.6.0.tgz#32cd9e5c64553bd58d19a568af452acff04981b1" - integrity sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg== - -mime@^2.4.4: - version "2.5.2" - resolved "https://registry.yarnpkg.com/mime/-/mime-2.5.2.tgz#6e3dc6cc2b9510643830e5f19d5cb753da5eeabe" - integrity sha512-tqkh47FzKeCPD2PUiPB6pkbMzsCasjxAfC62/Wap5qrUWcb+sFasXUC5I3gYM5iBM8v/Qpn4UK0x+j0iHyFPDg== - -mimic-fn@^1.0.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-1.2.0.tgz#820c86a39334640e99516928bd03fca88057d022" - integrity sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ== - -mimic-fn@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-2.1.0.tgz#7ed2c2ccccaf84d3ffcb7a69b57711fc2083401b" - integrity sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg== - -mini-css-extract-plugin@^0.9.0: - version "0.9.0" - resolved "https://registry.yarnpkg.com/mini-css-extract-plugin/-/mini-css-extract-plugin-0.9.0.tgz#47f2cf07aa165ab35733b1fc97d4c46c0564339e" - integrity sha512-lp3GeY7ygcgAmVIcRPBVhIkf8Us7FZjA+ILpal44qLdSu11wmjKQ3d9k15lfD7pO4esu9eUIAW7qiYIBppv40A== - dependencies: - loader-utils "^1.1.0" - normalize-url "1.9.1" - schema-utils "^1.0.0" - webpack-sources "^1.1.0" - -minimalistic-assert@^1.0.0, minimalistic-assert@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz#2e194de044626d4a10e7f7fbc00ce73e83e4d5c7" - integrity sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A== - -minimalistic-crypto-utils@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz#f6c00c1c0b082246e5c4d99dfb8c7c083b2b582a" - integrity sha1-9sAMHAsIIkblxNmd+4x8CDsrWCo= - -minimatch@^3.0.4: - version "3.0.4" - resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083" - integrity sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA== - dependencies: - brace-expansion "^1.1.7" - -minimist@^1.2.0, minimist@^1.2.5: - version "1.2.5" - resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.5.tgz#67d66014b66a6a8aaa0c083c5fd58df4e4e97602" - integrity sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw== - -minipass@^3.1.1: - version "3.1.3" - resolved "https://registry.yarnpkg.com/minipass/-/minipass-3.1.3.tgz#7d42ff1f39635482e15f9cdb53184deebd5815fd" - integrity sha512-Mgd2GdMVzY+x3IJ+oHnVM+KG3lA5c8tnabyJKmHSaG2kAGpudxuOf8ToDkhumF7UzME7DecbQE9uOZhNm7PuJg== - dependencies: - yallist "^4.0.0" - -mississippi@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/mississippi/-/mississippi-3.0.0.tgz#ea0a3291f97e0b5e8776b363d5f0a12d94c67022" - integrity sha512-x471SsVjUtBRtcvd4BzKE9kFC+/2TeWgKCgw0bZcw1b9l2X3QX5vCWgF+KaZaYm87Ss//rHnWryupDrgLvmSkA== - dependencies: - concat-stream "^1.5.0" - duplexify "^3.4.2" - end-of-stream "^1.1.0" - flush-write-stream "^1.0.0" - from2 "^2.1.0" - parallel-transform "^1.1.0" - pump "^3.0.0" - pumpify "^1.3.3" - stream-each "^1.1.0" - through2 "^2.0.0" - -mixin-deep@^1.2.0: - version "1.3.2" - resolved "https://registry.yarnpkg.com/mixin-deep/-/mixin-deep-1.3.2.tgz#1120b43dc359a785dce65b55b82e257ccf479566" - integrity sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA== - dependencies: - for-in "^1.0.2" - is-extendable "^1.0.1" - -mkdirp@^0.5.1, mkdirp@^0.5.3, mkdirp@^0.5.5, mkdirp@~0.5.1: - version "0.5.5" - resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.5.tgz#d91cefd62d1436ca0f41620e251288d420099def" - integrity sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ== - dependencies: - minimist "^1.2.5" - -moment@^2.29.1: - version "2.29.1" - resolved "https://registry.yarnpkg.com/moment/-/moment-2.29.1.tgz#b2be769fa31940be9eeea6469c075e35006fa3d3" - integrity sha512-kHmoybcPV8Sqy59DwNDY3Jefr64lK/by/da0ViFcuA4DH0vQg5Q6Ze5VimxkfQNSC+Mls/Kx53s7TjP1RhFEDQ== - -move-concurrently@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/move-concurrently/-/move-concurrently-1.0.1.tgz#be2c005fda32e0b29af1f05d7c4b33214c701f92" - integrity sha1-viwAX9oy4LKa8fBdfEszIUxwH5I= - dependencies: - aproba "^1.1.1" - copy-concurrently "^1.0.0" - fs-write-stream-atomic "^1.0.8" - mkdirp "^0.5.1" - rimraf "^2.5.4" - run-queue "^1.0.3" - -ms@2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8" - integrity sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g= - -ms@2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.1.tgz#30a5864eb3ebb0a66f2ebe6d727af06a09d86e0a" - integrity sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg== - -ms@2.1.2: - version "2.1.2" - resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" - integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== - -ms@^2.1.1: - version "2.1.3" - resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.3.tgz#574c8138ce1d2b5861f0b44579dbadd60c6615b2" - integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA== - -multicast-dns-service-types@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/multicast-dns-service-types/-/multicast-dns-service-types-1.1.0.tgz#899f11d9686e5e05cb91b35d5f0e63b773cfc901" - integrity sha1-iZ8R2WhuXgXLkbNdXw5jt3PPyQE= - -multicast-dns@^6.0.1: - version "6.2.3" - resolved "https://registry.yarnpkg.com/multicast-dns/-/multicast-dns-6.2.3.tgz#a0ec7bd9055c4282f790c3c82f4e28db3b31b229" - integrity sha512-ji6J5enbMyGRHIAkAOu3WdV8nggqviKCEKtXcOqfphZZtQrmHKycfynJ2V7eVPUA4NhJ6V7Wf4TmGbTwKE9B6g== - dependencies: - dns-packet "^1.3.1" - thunky "^1.0.2" - -mute-stream@0.0.8: - version "0.0.8" - resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.8.tgz#1630c42b2251ff81e2a283de96a5497ea92e5e0d" - integrity sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA== - -mz@^2.4.0: - version "2.7.0" - resolved "https://registry.yarnpkg.com/mz/-/mz-2.7.0.tgz#95008057a56cafadc2bc63dde7f9ff6955948e32" - integrity sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q== - dependencies: - any-promise "^1.0.0" - object-assign "^4.0.1" - thenify-all "^1.0.0" - -nan@^2.12.1: - version "2.14.2" - resolved "https://registry.yarnpkg.com/nan/-/nan-2.14.2.tgz#f5376400695168f4cc694ac9393d0c9585eeea19" - integrity sha512-M2ufzIiINKCuDfBSAUr1vWQ+vuVcA9kqx8JJUsbQi6yf1uGRyb7HfpdfUr5qLXf3B/t8dPvcjhKMmlfnP47EzQ== - -nanoid@^3.1.23: - version "3.1.23" - resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.1.23.tgz#f744086ce7c2bc47ee0a8472574d5c78e4183a81" - integrity sha512-FiB0kzdP0FFVGDKlRLEQ1BgDzU87dy5NnzjeW9YZNt+/c3+q82EQDUwniSAUxp/F0gFNI1ZhKU1FqYsMuqZVnw== - -nanomatch@^1.2.9: - version "1.2.13" - resolved "https://registry.yarnpkg.com/nanomatch/-/nanomatch-1.2.13.tgz#b87a8aa4fc0de8fe6be88895b38983ff265bd119" - integrity sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA== - dependencies: - arr-diff "^4.0.0" - array-unique "^0.3.2" - define-property "^2.0.2" - extend-shallow "^3.0.2" - fragment-cache "^0.2.1" - is-windows "^1.0.2" - kind-of "^6.0.2" - object.pick "^1.3.0" - regex-not "^1.0.0" - snapdragon "^0.8.1" - to-regex "^3.0.1" - -natural-compare@^1.4.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7" - integrity sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc= - -negotiator@0.6.2: - version "0.6.2" - resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.2.tgz#feacf7ccf525a77ae9634436a64883ffeca346fb" - integrity sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw== - -neo-async@^2.5.0, neo-async@^2.6.0, neo-async@^2.6.1: - version "2.6.2" - resolved "https://registry.yarnpkg.com/neo-async/-/neo-async-2.6.2.tgz#b4aafb93e3aeb2d8174ca53cf163ab7d7308305f" - integrity sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw== - -nice-try@^1.0.4: - version "1.0.5" - resolved "https://registry.yarnpkg.com/nice-try/-/nice-try-1.0.5.tgz#a3378a7696ce7d223e88fc9b764bd7ef1089e366" - integrity sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ== - -no-case@^2.2.0: - version "2.3.2" - resolved "https://registry.yarnpkg.com/no-case/-/no-case-2.3.2.tgz#60b813396be39b3f1288a4c1ed5d1e7d28b464ac" - integrity sha512-rmTZ9kz+f3rCvK2TD1Ue/oZlns7OGoIWP4fc3llxxRXlOkHKoWPPWJOfFYpITabSow43QJbRIoHQXtt10VldyQ== - dependencies: - lower-case "^1.1.1" - -node-fetch@^2.6.1: - version "2.6.1" - resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.6.1.tgz#045bd323631f76ed2e2b55573394416b639a0052" - integrity sha512-V4aYg89jEoVRxRb2fJdAg8FHvI7cEyYdVAh94HH0UIK8oJxUfkjlDQN9RbMx+bEjP7+ggMiFRprSti032Oipxw== - -node-forge@^0.10.0: - version "0.10.0" - resolved "https://registry.yarnpkg.com/node-forge/-/node-forge-0.10.0.tgz#32dea2afb3e9926f02ee5ce8794902691a676bf3" - integrity sha512-PPmu8eEeG9saEUvI97fm4OYxXVB6bFvyNTyiUOBichBpFG8A1Ljw3bY62+5oOjDEMHRnd0Y7HQ+x7uzxOzC6JA== - -node-ipc@^9.1.1: - version "9.1.4" - resolved "https://registry.yarnpkg.com/node-ipc/-/node-ipc-9.1.4.tgz#2acf962681afdac2602876d98fe6434d54d9bd3c" - integrity sha512-A+f0mn2KxUt1uRTSd5ktxQUsn2OEhj5evo7NUi/powBzMSZ0vocdzDjlq9QN2v3LH6CJi3e5xAenpZ1QwU5A8g== - dependencies: - event-pubsub "4.3.0" - js-message "1.0.7" - js-queue "2.0.2" - -node-libs-browser@^2.2.1: - version "2.2.1" - resolved "https://registry.yarnpkg.com/node-libs-browser/-/node-libs-browser-2.2.1.tgz#b64f513d18338625f90346d27b0d235e631f6425" - integrity sha512-h/zcD8H9kaDZ9ALUWwlBUDo6TKF8a7qBSCSEGfjTVIYeqsioSKaAX+BN7NgiMGp6iSIXZ3PxgCu8KS3b71YK5Q== - dependencies: - assert "^1.1.1" - browserify-zlib "^0.2.0" - buffer "^4.3.0" - console-browserify "^1.1.0" - constants-browserify "^1.0.0" - crypto-browserify "^3.11.0" - domain-browser "^1.1.1" - events "^3.0.0" - https-browserify "^1.0.0" - os-browserify "^0.3.0" - path-browserify "0.0.1" - process "^0.11.10" - punycode "^1.2.4" - querystring-es3 "^0.2.0" - readable-stream "^2.3.3" - stream-browserify "^2.0.1" - stream-http "^2.7.2" - string_decoder "^1.0.0" - timers-browserify "^2.0.4" - tty-browserify "0.0.0" - url "^0.11.0" - util "^0.11.0" - vm-browserify "^1.0.1" - -node-releases@^1.1.71: - version "1.1.73" - resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-1.1.73.tgz#dd4e81ddd5277ff846b80b52bb40c49edf7a7b20" - integrity sha512-uW7fodD6pyW2FZNZnp/Z3hvWKeEW1Y8R1+1CnErE8cXFXzl5blBOoVB41CvMer6P6Q0S5FXDwcHgFd1Wj0U9zg== - -normalize-package-data@^2.5.0: - version "2.5.0" - resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-2.5.0.tgz#e66db1838b200c1dfc233225d12cb36520e234a8" - integrity sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA== - dependencies: - hosted-git-info "^2.1.4" - resolve "^1.10.0" - semver "2 || 3 || 4 || 5" - validate-npm-package-license "^3.0.1" - -normalize-path@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-1.0.0.tgz#32d0e472f91ff345701c15a8311018d3b0a90379" - integrity sha1-MtDkcvkf80VwHBWoMRAY07CpA3k= - -normalize-path@^2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-2.1.1.tgz#1ab28b556e198363a8c1a6f7e6fa20137fe6aed9" - integrity sha1-GrKLVW4Zg2Oowab35vogE3/mrtk= - dependencies: - remove-trailing-separator "^1.0.1" - -normalize-path@^3.0.0, normalize-path@~3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65" - integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA== - -normalize-range@^0.1.2: - version "0.1.2" - resolved "https://registry.yarnpkg.com/normalize-range/-/normalize-range-0.1.2.tgz#2d10c06bdfd312ea9777695a4d28439456b75942" - integrity sha1-LRDAa9/TEuqXd2laTShDlFa3WUI= - -normalize-url@1.9.1: - version "1.9.1" - resolved "https://registry.yarnpkg.com/normalize-url/-/normalize-url-1.9.1.tgz#2cc0d66b31ea23036458436e3620d85954c66c3c" - integrity sha1-LMDWazHqIwNkWENuNiDYWVTGbDw= - dependencies: - object-assign "^4.0.1" - prepend-http "^1.0.0" - query-string "^4.1.0" - sort-keys "^1.0.0" - -normalize-url@^3.0.0: - version "3.3.0" - resolved "https://registry.yarnpkg.com/normalize-url/-/normalize-url-3.3.0.tgz#b2e1c4dc4f7c6d57743df733a4f5978d18650559" - integrity sha512-U+JJi7duF1o+u2pynbp2zXDW2/PADgC30f0GsHZtRh+HOcXHnw137TrNlyxxRvWW5fjKd3bcLHPxofWuCjaeZg== - -npm-run-path@^2.0.0: - version "2.0.2" - resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-2.0.2.tgz#35a9232dfa35d7067b4cb2ddf2357b1871536c5f" - integrity sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8= - dependencies: - path-key "^2.0.0" - -npm-run-path@^4.0.0: - version "4.0.1" - resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-4.0.1.tgz#b7ecd1e5ed53da8e37a55e1c2269e0b97ed748ea" - integrity sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw== - dependencies: - path-key "^3.0.0" - -nth-check@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/nth-check/-/nth-check-1.0.2.tgz#b2bd295c37e3dd58a3bf0700376663ba4d9cf05c" - integrity sha512-WeBOdju8SnzPN5vTUJYxYUxLeXpCaVP5i5e0LF8fg7WORF2Wd7wFX/pk0tYZk7s8T+J7VLy0Da6J1+wCT0AtHg== - dependencies: - boolbase "~1.0.0" - -num2fraction@^1.2.2: - version "1.2.2" - resolved "https://registry.yarnpkg.com/num2fraction/-/num2fraction-1.2.2.tgz#6f682b6a027a4e9ddfa4564cd2589d1d4e669ede" - integrity sha1-b2gragJ6Tp3fpFZM0lidHU5mnt4= - -oauth-sign@~0.9.0: - version "0.9.0" - resolved "https://registry.yarnpkg.com/oauth-sign/-/oauth-sign-0.9.0.tgz#47a7b016baa68b5fa0ecf3dee08a85c679ac6455" - integrity sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ== - -object-assign@^4.0.1, object-assign@^4.1.0, object-assign@^4.1.1: - version "4.1.1" - resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" - integrity sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM= - -object-copy@^0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/object-copy/-/object-copy-0.1.0.tgz#7e7d858b781bd7c991a41ba975ed3812754e998c" - integrity sha1-fn2Fi3gb18mRpBupde04EnVOmYw= - dependencies: - copy-descriptor "^0.1.0" - define-property "^0.2.5" - kind-of "^3.0.3" - -object-hash@^1.1.4: - version "1.3.1" - resolved "https://registry.yarnpkg.com/object-hash/-/object-hash-1.3.1.tgz#fde452098a951cb145f039bb7d455449ddc126df" - integrity sha512-OSuu/pU4ENM9kmREg0BdNrUDIl1heYa4mBZacJc+vVWz4GtAwu7jO8s4AIt2aGRUTqxykpWzI3Oqnsm13tTMDA== - -object-inspect@^1.10.3: - version "1.10.3" - resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.10.3.tgz#c2aa7d2d09f50c99375704f7a0adf24c5782d369" - integrity sha512-e5mCJlSH7poANfC8z8S9s9S2IN5/4Zb3aZ33f5s8YqoazCFzNLloLU8r5VCG+G7WoqLvAAZoVMcy3tp/3X0Plw== - -object-is@^1.0.1: - version "1.1.5" - resolved "https://registry.yarnpkg.com/object-is/-/object-is-1.1.5.tgz#b9deeaa5fc7f1846a0faecdceec138e5778f53ac" - integrity sha512-3cyDsyHgtmi7I7DfSSI2LDp6SK2lwvtbg0p0R1e0RvTqF5ceGx+K2dfSjm1bKDMVCFEDAQvy+o8c6a7VujOddw== - dependencies: - call-bind "^1.0.2" - define-properties "^1.1.3" - -object-keys@^1.0.12, object-keys@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.1.1.tgz#1c47f272df277f3b1daf061677d9c82e2322c60e" - integrity sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA== - -object-visit@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/object-visit/-/object-visit-1.0.1.tgz#f79c4493af0c5377b59fe39d395e41042dd045bb" - integrity sha1-95xEk68MU3e1n+OdOV5BBC3QRbs= - dependencies: - isobject "^3.0.0" - -object.assign@^4.1.0, object.assign@^4.1.2: - version "4.1.2" - resolved "https://registry.yarnpkg.com/object.assign/-/object.assign-4.1.2.tgz#0ed54a342eceb37b38ff76eb831a0e788cb63940" - integrity sha512-ixT2L5THXsApyiUPYKmW+2EHpXXe5Ii3M+f4e+aJFAHao5amFRW6J0OO6c/LU8Be47utCx2GL89hxGB6XSmKuQ== - dependencies: - call-bind "^1.0.0" - define-properties "^1.1.3" - has-symbols "^1.0.1" - object-keys "^1.1.1" - -object.getownpropertydescriptors@^2.0.3, object.getownpropertydescriptors@^2.1.0: - version "2.1.2" - resolved "https://registry.yarnpkg.com/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.1.2.tgz#1bd63aeacf0d5d2d2f31b5e393b03a7c601a23f7" - integrity sha512-WtxeKSzfBjlzL+F9b7M7hewDzMwy+C8NRssHd1YrNlzHzIDrXcXiNOMrezdAEM4UXixgV+vvnyBeN7Rygl2ttQ== - dependencies: - call-bind "^1.0.2" - define-properties "^1.1.3" - es-abstract "^1.18.0-next.2" - -object.pick@^1.3.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/object.pick/-/object.pick-1.3.0.tgz#87a10ac4c1694bd2e1cbf53591a66141fb5dd747" - integrity sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c= - dependencies: - isobject "^3.0.1" - -object.values@^1.1.0: - version "1.1.4" - resolved "https://registry.yarnpkg.com/object.values/-/object.values-1.1.4.tgz#0d273762833e816b693a637d30073e7051535b30" - integrity sha512-TnGo7j4XSnKQoK3MfvkzqKCi0nVe/D9I9IjwTNYdb/fxYHpjrluHVOgw0AF6jrRFGMPHdfuidR09tIDiIvnaSg== - dependencies: - call-bind "^1.0.2" - define-properties "^1.1.3" - es-abstract "^1.18.2" - -obuf@^1.0.0, obuf@^1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/obuf/-/obuf-1.1.2.tgz#09bea3343d41859ebd446292d11c9d4db619084e" - integrity sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg== - -on-finished@~2.3.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/on-finished/-/on-finished-2.3.0.tgz#20f1336481b083cd75337992a16971aa2d906947" - integrity sha1-IPEzZIGwg811M3mSoWlxqi2QaUc= - dependencies: - ee-first "1.1.1" - -on-headers@~1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/on-headers/-/on-headers-1.0.2.tgz#772b0ae6aaa525c399e489adfad90c403eb3c28f" - integrity sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA== - -once@^1.3.0, once@^1.3.1, once@^1.4.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" - integrity sha1-WDsap3WWHUsROsF9nFC6753Xa9E= - dependencies: - wrappy "1" - -onetime@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/onetime/-/onetime-2.0.1.tgz#067428230fd67443b2794b22bba528b6867962d4" - integrity sha1-BnQoIw/WdEOyeUsiu6UotoZ5YtQ= - dependencies: - mimic-fn "^1.0.0" - -onetime@^5.1.0: - version "5.1.2" - resolved "https://registry.yarnpkg.com/onetime/-/onetime-5.1.2.tgz#d0e96ebb56b07476df1dd9c4806e5237985ca45e" - integrity sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg== - dependencies: - mimic-fn "^2.1.0" - -open@^6.3.0: - version "6.4.0" - resolved "https://registry.yarnpkg.com/open/-/open-6.4.0.tgz#5c13e96d0dc894686164f18965ecfe889ecfc8a9" - integrity sha512-IFenVPgF70fSm1keSd2iDBIDIBZkroLeuffXq+wKTzTJlBpesFWojV9lb8mzOfaAzM1sr7HQHuO0vtV0zYekGg== - dependencies: - is-wsl "^1.1.0" - -opener@^1.5.1: - version "1.5.2" - resolved "https://registry.yarnpkg.com/opener/-/opener-1.5.2.tgz#5d37e1f35077b9dcac4301372271afdeb2a13598" - integrity sha512-ur5UIdyw5Y7yEj9wLzhqXiy6GZ3Mwx0yGI+5sMn2r0N0v3cKJvUmFH5yPP+WXh9e0xfyzyJX95D8l088DNFj7A== - -opn@^5.5.0: - version "5.5.0" - resolved "https://registry.yarnpkg.com/opn/-/opn-5.5.0.tgz#fc7164fab56d235904c51c3b27da6758ca3b9bfc" - integrity sha512-PqHpggC9bLV0VeWcdKhkpxY+3JTzetLSqTCWL/z/tFIbI6G8JCjondXklT1JinczLz2Xib62sSp0T/gKT4KksA== - dependencies: - is-wsl "^1.1.0" - -optionator@^0.9.1: - version "0.9.1" - resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.9.1.tgz#4f236a6373dae0566a6d43e1326674f50c291499" - integrity sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw== - dependencies: - deep-is "^0.1.3" - fast-levenshtein "^2.0.6" - levn "^0.4.1" - prelude-ls "^1.2.1" - type-check "^0.4.0" - word-wrap "^1.2.3" - -ora@^3.4.0: - version "3.4.0" - resolved "https://registry.yarnpkg.com/ora/-/ora-3.4.0.tgz#bf0752491059a3ef3ed4c85097531de9fdbcd318" - integrity sha512-eNwHudNbO1folBP3JsZ19v9azXWtQZjICdr3Q0TDPIaeBQ3mXLrh54wM+er0+hSp+dWKf+Z8KM58CYzEyIYxYg== - dependencies: - chalk "^2.4.2" - cli-cursor "^2.1.0" - cli-spinners "^2.0.0" - log-symbols "^2.2.0" - strip-ansi "^5.2.0" - wcwidth "^1.0.1" - -original@^1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/original/-/original-1.0.2.tgz#e442a61cffe1c5fd20a65f3261c26663b303f25f" - integrity sha512-hyBVl6iqqUOJ8FqRe+l/gS8H+kKYjrEndd5Pm1MfBtsEKA038HkkdbAl/72EAXGyonD/PFsvmVG+EvcIpliMBg== - dependencies: - url-parse "^1.4.3" - -os-browserify@^0.3.0: - version "0.3.0" - resolved "https://registry.yarnpkg.com/os-browserify/-/os-browserify-0.3.0.tgz#854373c7f5c2315914fc9bfc6bd8238fdda1ec27" - integrity sha1-hUNzx/XCMVkU/Jv8a9gjj92h7Cc= - -os-tmpdir@~1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274" - integrity sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ= - -p-finally@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/p-finally/-/p-finally-1.0.0.tgz#3fbcfb15b899a44123b34b6dcc18b724336a2cae" - integrity sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4= - -p-finally@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/p-finally/-/p-finally-2.0.1.tgz#bd6fcaa9c559a096b680806f4d657b3f0f240561" - integrity sha512-vpm09aKwq6H9phqRQzecoDpD8TmVyGw70qmWlyq5onxY7tqyTTFVvxMykxQSQKILBSFlbXpypIw2T1Ml7+DDtw== - -p-limit@^2.0.0, p-limit@^2.2.0, p-limit@^2.2.1: - version "2.3.0" - resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-2.3.0.tgz#3dd33c647a214fdfffd835933eb086da0dc21db1" - integrity sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w== - dependencies: - p-try "^2.0.0" - -p-locate@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-3.0.0.tgz#322d69a05c0264b25997d9f40cd8a891ab0064a4" - integrity sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ== - dependencies: - p-limit "^2.0.0" - -p-locate@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-4.1.0.tgz#a3428bb7088b3a60292f66919278b7c297ad4f07" - integrity sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A== - dependencies: - p-limit "^2.2.0" - -p-map@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/p-map/-/p-map-2.1.0.tgz#310928feef9c9ecc65b68b17693018a665cea175" - integrity sha512-y3b8Kpd8OAN444hxfBbFfj1FY/RjtTd8tzYwhUqNYXx0fXx2iX4maP4Qr6qhIKbQXI02wTLAda4fYUbDagTUFw== - -p-retry@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/p-retry/-/p-retry-3.0.1.tgz#316b4c8893e2c8dc1cfa891f406c4b422bebf328" - integrity sha512-XE6G4+YTTkT2a0UWb2kjZe8xNwf8bIbnqpc/IS/idOBVhyves0mK5OJgeocjx7q5pvX/6m23xuzVPYT1uGM73w== - dependencies: - retry "^0.12.0" - -p-try@^2.0.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/p-try/-/p-try-2.2.0.tgz#cb2868540e313d61de58fafbe35ce9004d5540e6" - integrity sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ== - -pako@~1.0.5: - version "1.0.11" - resolved "https://registry.yarnpkg.com/pako/-/pako-1.0.11.tgz#6c9599d340d54dfd3946380252a35705a6b992bf" - integrity sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw== - -parallel-transform@^1.1.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/parallel-transform/-/parallel-transform-1.2.0.tgz#9049ca37d6cb2182c3b1d2c720be94d14a5814fc" - integrity sha512-P2vSmIu38uIlvdcU7fDkyrxj33gTUy/ABO5ZUbGowxNCopBq/OoD42bP4UmMrJoPyk4Uqf0mu3mtWBhHCZD8yg== - dependencies: - cyclist "^1.0.1" - inherits "^2.0.3" - readable-stream "^2.1.5" - -param-case@2.1.x: - version "2.1.1" - resolved "https://registry.yarnpkg.com/param-case/-/param-case-2.1.1.tgz#df94fd8cf6531ecf75e6bef9a0858fbc72be2247" - integrity sha1-35T9jPZTHs915r75oIWPvHK+Ikc= - dependencies: - no-case "^2.2.0" - -parent-module@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/parent-module/-/parent-module-1.0.1.tgz#691d2709e78c79fae3a156622452d00762caaaa2" - integrity sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g== - dependencies: - callsites "^3.0.0" - -parse-asn1@^5.0.0, parse-asn1@^5.1.5: - version "5.1.6" - resolved "https://registry.yarnpkg.com/parse-asn1/-/parse-asn1-5.1.6.tgz#385080a3ec13cb62a62d39409cb3e88844cdaed4" - integrity sha512-RnZRo1EPU6JBnra2vGHj0yhp6ebyjBZpmUCLHWiFhxlzvBCCpAuZ7elsBp1PVAbQN0/04VD/19rfzlBSwLstMw== - 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" - -parse-json@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-4.0.0.tgz#be35f5425be1f7f6c747184f98a788cb99477ee0" - integrity sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA= - dependencies: - error-ex "^1.3.1" - json-parse-better-errors "^1.0.1" - -parse-json@^5.0.0: - version "5.2.0" - resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-5.2.0.tgz#c76fc66dee54231c962b22bcc8a72cf2f99753cd" - integrity sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg== - dependencies: - "@babel/code-frame" "^7.0.0" - error-ex "^1.3.1" - json-parse-even-better-errors "^2.3.0" - lines-and-columns "^1.1.6" - -parse5-htmlparser2-tree-adapter@^6.0.0: - version "6.0.1" - resolved "https://registry.yarnpkg.com/parse5-htmlparser2-tree-adapter/-/parse5-htmlparser2-tree-adapter-6.0.1.tgz#2cdf9ad823321140370d4dbf5d3e92c7c8ddc6e6" - integrity sha512-qPuWvbLgvDGilKc5BoicRovlT4MtYT6JfJyBOMDsKoiT+GiuP5qyrPCnR9HcPECIJJmZh5jRndyNThnhhb/vlA== - dependencies: - parse5 "^6.0.1" - -parse5@^5.1.1: - version "5.1.1" - resolved "https://registry.yarnpkg.com/parse5/-/parse5-5.1.1.tgz#f68e4e5ba1852ac2cadc00f4555fff6c2abb6178" - integrity sha512-ugq4DFI0Ptb+WWjAdOK16+u/nHfiIrcE+sh8kZMaM0WllQKLI9rOUq6c2b7cwPkXdzfQESqvoqK6ug7U/Yyzug== - -parse5@^6.0.1: - version "6.0.1" - resolved "https://registry.yarnpkg.com/parse5/-/parse5-6.0.1.tgz#e1a1c085c569b3dc08321184f19a39cc27f7c30b" - integrity sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw== - -parseurl@~1.3.2, parseurl@~1.3.3: - version "1.3.3" - resolved "https://registry.yarnpkg.com/parseurl/-/parseurl-1.3.3.tgz#9da19e7bee8d12dff0513ed5b76957793bc2e8d4" - integrity sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ== - -pascalcase@^0.1.1: - version "0.1.1" - resolved "https://registry.yarnpkg.com/pascalcase/-/pascalcase-0.1.1.tgz#b363e55e8006ca6fe21784d2db22bd15d7917f14" - integrity sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ= - -path-browserify@0.0.1: - version "0.0.1" - resolved "https://registry.yarnpkg.com/path-browserify/-/path-browserify-0.0.1.tgz#e6c4ddd7ed3aa27c68a20cc4e50e1a4ee83bbc4a" - integrity sha512-BapA40NHICOS+USX9SN4tyhq+A2RrN/Ws5F0Z5aMHDp98Fl86lX8Oti8B7uN93L4Ifv4fHOEA+pQw87gmMO/lQ== - -path-dirname@^1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/path-dirname/-/path-dirname-1.0.2.tgz#cc33d24d525e099a5388c0336c6e32b9160609e0" - integrity sha1-zDPSTVJeCZpTiMAzbG4yuRYGCeA= - -path-exists@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-2.1.0.tgz#0feb6c64f0fc518d9a754dd5efb62c7022761f4b" - integrity sha1-D+tsZPD8UY2adU3V77YscCJ2H0s= - dependencies: - pinkie-promise "^2.0.0" - -path-exists@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-3.0.0.tgz#ce0ebeaa5f78cb18925ea7d810d7b59b010fd515" - integrity sha1-zg6+ql94yxiSXqfYENe1mwEP1RU= - -path-exists@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-4.0.0.tgz#513bdbe2d3b95d7762e8c1137efa195c6c61b5b3" - integrity sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w== - -path-is-absolute@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" - integrity sha1-F0uSaHNVNP+8es5r9TpanhtcX18= - -path-is-inside@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/path-is-inside/-/path-is-inside-1.0.2.tgz#365417dede44430d1c11af61027facf074bdfc53" - integrity sha1-NlQX3t5EQw0cEa9hAn+s8HS9/FM= - -path-key@^2.0.0, path-key@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/path-key/-/path-key-2.0.1.tgz#411cadb574c5a140d3a4b1910d40d80cc9f40b40" - integrity sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A= - -path-key@^3.0.0, path-key@^3.1.0: - version "3.1.1" - resolved "https://registry.yarnpkg.com/path-key/-/path-key-3.1.1.tgz#581f6ade658cbba65a0d3380de7753295054f375" - integrity sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q== - -path-parse@^1.0.6: - version "1.0.7" - resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.7.tgz#fbc114b60ca42b30d9daf5858e4bd68bbedb6735" - integrity sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw== - -path-to-regexp@0.1.7: - version "0.1.7" - resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-0.1.7.tgz#df604178005f522f15eb4490e7247a1bfaa67f8c" - integrity sha1-32BBeABfUi8V60SQ5yR6G/qmf4w= - -path-type@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/path-type/-/path-type-3.0.0.tgz#cef31dc8e0a1a3bb0d105c0cd97cf3bf47f4e36f" - integrity sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg== - dependencies: - pify "^3.0.0" - -path-type@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/path-type/-/path-type-4.0.0.tgz#84ed01c0a7ba380afe09d90a8c180dcd9d03043b" - integrity sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw== - -pbkdf2@^3.0.3: - version "3.1.2" - resolved "https://registry.yarnpkg.com/pbkdf2/-/pbkdf2-3.1.2.tgz#dd822aa0887580e52f1a039dc3eda108efae3075" - integrity sha512-iuh7L6jA7JEGu2WxDwtQP1ddOpaJNC4KlDEFfdQajSGgGPNi4OyDc2R7QnbY2bR9QjBVGwgvTdNJZoE7RaxUMA== - 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" - -performance-now@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/performance-now/-/performance-now-2.1.0.tgz#6309f4e0e5fa913ec1c69307ae364b4b377c9e7b" - integrity sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns= - -picomatch@^2.0.4, picomatch@^2.2.1, picomatch@^2.2.2, picomatch@^2.2.3: - version "2.3.0" - resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.0.tgz#f1f061de8f6a4bf022892e2d128234fb98302972" - integrity sha512-lY1Q/PiJGC2zOv/z391WOTD+Z02bCgsFfvxoXXf6h7kv9o+WmsmzYqrAwY63sNgOxE4xEdq0WyUnXfKeBrSvYw== - -pify@^2.0.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/pify/-/pify-2.3.0.tgz#ed141a6ac043a849ea588498e7dca8b15330e90c" - integrity sha1-7RQaasBDqEnqWISY59yosVMw6Qw= - -pify@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/pify/-/pify-3.0.0.tgz#e5a4acd2c101fdf3d9a4d07f0dbc4db49dd28176" - integrity sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY= - -pify@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/pify/-/pify-4.0.1.tgz#4b2cd25c50d598735c50292224fd8c6df41e3231" - integrity sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g== - -pinkie-promise@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/pinkie-promise/-/pinkie-promise-2.0.1.tgz#2135d6dfa7a358c069ac9b178776288228450ffa" - integrity sha1-ITXW36ejWMBprJsXh3YogihFD/o= - dependencies: - pinkie "^2.0.0" - -pinkie@^2.0.0: - version "2.0.4" - resolved "https://registry.yarnpkg.com/pinkie/-/pinkie-2.0.4.tgz#72556b80cfa0d48a974e80e77248e80ed4f7f870" - integrity sha1-clVrgM+g1IqXToDnckjoDtT3+HA= - -pkg-dir@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-1.0.0.tgz#7a4b508a8d5bb2d629d447056ff4e9c9314cf3d4" - integrity sha1-ektQio1bstYp1EcFb/TpyTFM89Q= - dependencies: - find-up "^1.0.0" - -pkg-dir@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-3.0.0.tgz#2749020f239ed990881b1f71210d51eb6523bea3" - integrity sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw== - dependencies: - find-up "^3.0.0" - -pkg-dir@^4.1.0: - version "4.2.0" - resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-4.2.0.tgz#f099133df7ede422e81d1d8448270eeb3e4261f3" - integrity sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ== - dependencies: - find-up "^4.0.0" - -pnp-webpack-plugin@^1.6.4: - version "1.6.4" - resolved "https://registry.yarnpkg.com/pnp-webpack-plugin/-/pnp-webpack-plugin-1.6.4.tgz#c9711ac4dc48a685dabafc86f8b6dd9f8df84149" - integrity sha512-7Wjy+9E3WwLOEL30D+m8TSTF7qJJUJLONBnwQp0518siuMxUQUbgZwssaFX+QKlZkjHZcw/IpZCt/H0srrntSg== - dependencies: - ts-pnp "^1.1.6" - -popper.js@^1.16.1: - version "1.16.1" - resolved "https://registry.yarnpkg.com/popper.js/-/popper.js-1.16.1.tgz#2a223cb3dc7b6213d740e40372be40de43e65b1b" - integrity sha512-Wb4p1J4zyFTbM+u6WuO4XstYx4Ky9Cewe4DWrel7B0w6VVICvPwdOpotjzcf6eD8TsckVnIMNONQyPIUFOUbCQ== - -portal-vue@^2.1.7: - version "2.1.7" - resolved "https://registry.yarnpkg.com/portal-vue/-/portal-vue-2.1.7.tgz#ea08069b25b640ca08a5b86f67c612f15f4e4ad4" - integrity sha512-+yCno2oB3xA7irTt0EU5Ezw22L2J51uKAacE/6hMPMoO/mx3h4rXFkkBkT4GFsMDv/vEe8TNKC3ujJJ0PTwb6g== - -portfinder@^1.0.26: - version "1.0.28" - resolved "https://registry.yarnpkg.com/portfinder/-/portfinder-1.0.28.tgz#67c4622852bd5374dd1dd900f779f53462fac778" - integrity sha512-Se+2isanIcEqf2XMHjyUKskczxbPH7dQnlMjXX6+dybayyHvAf/TCgyMRlzf/B6QDhAEFOGes0pzRo3by4AbMA== - dependencies: - async "^2.6.2" - debug "^3.1.1" - mkdirp "^0.5.5" - -posix-character-classes@^0.1.0: - version "0.1.1" - resolved "https://registry.yarnpkg.com/posix-character-classes/-/posix-character-classes-0.1.1.tgz#01eac0fe3b5af71a2a6c02feabb8c1fef7e00eab" - integrity sha1-AerA/jta9xoqbAL+q7jB/vfgDqs= - -postcss-calc@^7.0.1: - version "7.0.5" - resolved "https://registry.yarnpkg.com/postcss-calc/-/postcss-calc-7.0.5.tgz#f8a6e99f12e619c2ebc23cf6c486fdc15860933e" - integrity sha512-1tKHutbGtLtEZF6PT4JSihCHfIVldU72mZ8SdZHIYriIZ9fh9k9aWSppaT8rHsyI3dX+KSR+W+Ix9BMY3AODrg== - dependencies: - postcss "^7.0.27" - postcss-selector-parser "^6.0.2" - postcss-value-parser "^4.0.2" - -postcss-colormin@^4.0.3: - version "4.0.3" - resolved "https://registry.yarnpkg.com/postcss-colormin/-/postcss-colormin-4.0.3.tgz#ae060bce93ed794ac71264f08132d550956bd381" - integrity sha512-WyQFAdDZpExQh32j0U0feWisZ0dmOtPl44qYmJKkq9xFWY3p+4qnRzCHeNrkeRhwPHz9bQ3mo0/yVkaply0MNw== - dependencies: - browserslist "^4.0.0" - color "^3.0.0" - has "^1.0.0" - postcss "^7.0.0" - postcss-value-parser "^3.0.0" - -postcss-convert-values@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/postcss-convert-values/-/postcss-convert-values-4.0.1.tgz#ca3813ed4da0f812f9d43703584e449ebe189a7f" - integrity sha512-Kisdo1y77KUC0Jmn0OXU/COOJbzM8cImvw1ZFsBgBgMgb1iL23Zs/LXRe3r+EZqM3vGYKdQ2YJVQ5VkJI+zEJQ== - dependencies: - postcss "^7.0.0" - postcss-value-parser "^3.0.0" - -postcss-discard-comments@^4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/postcss-discard-comments/-/postcss-discard-comments-4.0.2.tgz#1fbabd2c246bff6aaad7997b2b0918f4d7af4033" - integrity sha512-RJutN259iuRf3IW7GZyLM5Sw4GLTOH8FmsXBnv8Ab/Tc2k4SR4qbV4DNbyyY4+Sjo362SyDmW2DQ7lBSChrpkg== - dependencies: - postcss "^7.0.0" - -postcss-discard-duplicates@^4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/postcss-discard-duplicates/-/postcss-discard-duplicates-4.0.2.tgz#3fe133cd3c82282e550fc9b239176a9207b784eb" - integrity sha512-ZNQfR1gPNAiXZhgENFfEglF93pciw0WxMkJeVmw8eF+JZBbMD7jp6C67GqJAXVZP2BWbOztKfbsdmMp/k8c6oQ== - dependencies: - postcss "^7.0.0" - -postcss-discard-empty@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/postcss-discard-empty/-/postcss-discard-empty-4.0.1.tgz#c8c951e9f73ed9428019458444a02ad90bb9f765" - integrity sha512-B9miTzbznhDjTfjvipfHoqbWKwd0Mj+/fL5s1QOz06wufguil+Xheo4XpOnc4NqKYBCNqqEzgPv2aPBIJLox0w== - dependencies: - postcss "^7.0.0" - -postcss-discard-overridden@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/postcss-discard-overridden/-/postcss-discard-overridden-4.0.1.tgz#652aef8a96726f029f5e3e00146ee7a4e755ff57" - integrity sha512-IYY2bEDD7g1XM1IDEsUT4//iEYCxAmP5oDSFMVU/JVvT7gh+l4fmjciLqGgwjdWpQIdb0Che2VX00QObS5+cTg== - dependencies: - postcss "^7.0.0" - -postcss-load-config@^2.0.0: - version "2.1.2" - resolved "https://registry.yarnpkg.com/postcss-load-config/-/postcss-load-config-2.1.2.tgz#c5ea504f2c4aef33c7359a34de3573772ad7502a" - integrity sha512-/rDeGV6vMUo3mwJZmeHfEDvwnTKKqQ0S7OHUi/kJvvtx3aWtyWG2/0ZWnzCt2keEclwN6Tf0DST2v9kITdOKYw== - dependencies: - cosmiconfig "^5.0.0" - import-cwd "^2.0.0" - -postcss-loader@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/postcss-loader/-/postcss-loader-3.0.0.tgz#6b97943e47c72d845fa9e03f273773d4e8dd6c2d" - integrity sha512-cLWoDEY5OwHcAjDnkyRQzAXfs2jrKjXpO/HQFcc5b5u/r7aa471wdmChmwfnv7x2u840iat/wi0lQ5nbRgSkUA== - dependencies: - loader-utils "^1.1.0" - postcss "^7.0.0" - postcss-load-config "^2.0.0" - schema-utils "^1.0.0" - -postcss-merge-longhand@^4.0.11: - version "4.0.11" - resolved "https://registry.yarnpkg.com/postcss-merge-longhand/-/postcss-merge-longhand-4.0.11.tgz#62f49a13e4a0ee04e7b98f42bb16062ca2549e24" - integrity sha512-alx/zmoeXvJjp7L4mxEMjh8lxVlDFX1gqWHzaaQewwMZiVhLo42TEClKaeHbRf6J7j82ZOdTJ808RtN0ZOZwvw== - dependencies: - css-color-names "0.0.4" - postcss "^7.0.0" - postcss-value-parser "^3.0.0" - stylehacks "^4.0.0" - -postcss-merge-rules@^4.0.3: - version "4.0.3" - resolved "https://registry.yarnpkg.com/postcss-merge-rules/-/postcss-merge-rules-4.0.3.tgz#362bea4ff5a1f98e4075a713c6cb25aefef9a650" - integrity sha512-U7e3r1SbvYzO0Jr3UT/zKBVgYYyhAz0aitvGIYOYK5CPmkNih+WDSsS5tvPrJ8YMQYlEMvsZIiqmn7HdFUaeEQ== - dependencies: - browserslist "^4.0.0" - caniuse-api "^3.0.0" - cssnano-util-same-parent "^4.0.0" - postcss "^7.0.0" - postcss-selector-parser "^3.0.0" - vendors "^1.0.0" - -postcss-minify-font-values@^4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/postcss-minify-font-values/-/postcss-minify-font-values-4.0.2.tgz#cd4c344cce474343fac5d82206ab2cbcb8afd5a6" - integrity sha512-j85oO6OnRU9zPf04+PZv1LYIYOprWm6IA6zkXkrJXyRveDEuQggG6tvoy8ir8ZwjLxLuGfNkCZEQG7zan+Hbtg== - dependencies: - postcss "^7.0.0" - postcss-value-parser "^3.0.0" - -postcss-minify-gradients@^4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/postcss-minify-gradients/-/postcss-minify-gradients-4.0.2.tgz#93b29c2ff5099c535eecda56c4aa6e665a663471" - integrity sha512-qKPfwlONdcf/AndP1U8SJ/uzIJtowHlMaSioKzebAXSG4iJthlWC9iSWznQcX4f66gIWX44RSA841HTHj3wK+Q== - dependencies: - cssnano-util-get-arguments "^4.0.0" - is-color-stop "^1.0.0" - postcss "^7.0.0" - postcss-value-parser "^3.0.0" - -postcss-minify-params@^4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/postcss-minify-params/-/postcss-minify-params-4.0.2.tgz#6b9cef030c11e35261f95f618c90036d680db874" - integrity sha512-G7eWyzEx0xL4/wiBBJxJOz48zAKV2WG3iZOqVhPet/9geefm/Px5uo1fzlHu+DOjT+m0Mmiz3jkQzVHe6wxAWg== - dependencies: - alphanum-sort "^1.0.0" - browserslist "^4.0.0" - cssnano-util-get-arguments "^4.0.0" - postcss "^7.0.0" - postcss-value-parser "^3.0.0" - uniqs "^2.0.0" - -postcss-minify-selectors@^4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/postcss-minify-selectors/-/postcss-minify-selectors-4.0.2.tgz#e2e5eb40bfee500d0cd9243500f5f8ea4262fbd8" - integrity sha512-D5S1iViljXBj9kflQo4YutWnJmwm8VvIsU1GeXJGiG9j8CIg9zs4voPMdQDUmIxetUOh60VilsNzCiAFTOqu3g== - dependencies: - alphanum-sort "^1.0.0" - has "^1.0.0" - postcss "^7.0.0" - postcss-selector-parser "^3.0.0" - -postcss-modules-extract-imports@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/postcss-modules-extract-imports/-/postcss-modules-extract-imports-2.0.0.tgz#818719a1ae1da325f9832446b01136eeb493cd7e" - integrity sha512-LaYLDNS4SG8Q5WAWqIJgdHPJrDDr/Lv775rMBFUbgjTz6j34lUznACHcdRWroPvXANP2Vj7yNK57vp9eFqzLWQ== - dependencies: - postcss "^7.0.5" - -postcss-modules-extract-imports@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/postcss-modules-extract-imports/-/postcss-modules-extract-imports-3.0.0.tgz#cda1f047c0ae80c97dbe28c3e76a43b88025741d" - integrity sha512-bdHleFnP3kZ4NYDhuGlVK+CMrQ/pqUm8bx/oGL93K6gVwiclvX5x0n76fYMKuIGKzlABOy13zsvqjb0f92TEXw== - -postcss-modules-local-by-default@^3.0.2: - version "3.0.3" - resolved "https://registry.yarnpkg.com/postcss-modules-local-by-default/-/postcss-modules-local-by-default-3.0.3.tgz#bb14e0cc78279d504dbdcbfd7e0ca28993ffbbb0" - integrity sha512-e3xDq+LotiGesympRlKNgaJ0PCzoUIdpH0dj47iWAui/kyTgh3CiAr1qP54uodmJhl6p9rN6BoNcdEDVJx9RDw== - dependencies: - icss-utils "^4.1.1" - postcss "^7.0.32" - postcss-selector-parser "^6.0.2" - postcss-value-parser "^4.1.0" - -postcss-modules-local-by-default@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/postcss-modules-local-by-default/-/postcss-modules-local-by-default-4.0.0.tgz#ebbb54fae1598eecfdf691a02b3ff3b390a5a51c" - integrity sha512-sT7ihtmGSF9yhm6ggikHdV0hlziDTX7oFoXtuVWeDd3hHObNkcHRo9V3yg7vCAY7cONyxJC/XXCmmiHHcvX7bQ== - dependencies: - icss-utils "^5.0.0" - postcss-selector-parser "^6.0.2" - postcss-value-parser "^4.1.0" - -postcss-modules-scope@^2.2.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/postcss-modules-scope/-/postcss-modules-scope-2.2.0.tgz#385cae013cc7743f5a7d7602d1073a89eaae62ee" - integrity sha512-YyEgsTMRpNd+HmyC7H/mh3y+MeFWevy7V1evVhJWewmMbjDHIbZbOXICC2y+m1xI1UVfIT1HMW/O04Hxyu9oXQ== - dependencies: - postcss "^7.0.6" - postcss-selector-parser "^6.0.0" - -postcss-modules-scope@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/postcss-modules-scope/-/postcss-modules-scope-3.0.0.tgz#9ef3151456d3bbfa120ca44898dfca6f2fa01f06" - integrity sha512-hncihwFA2yPath8oZ15PZqvWGkWf+XUfQgUGamS4LqoP1anQLOsOJw0vr7J7IwLpoY9fatA2qiGUGmuZL0Iqlg== - dependencies: - postcss-selector-parser "^6.0.4" - -postcss-modules-values@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/postcss-modules-values/-/postcss-modules-values-3.0.0.tgz#5b5000d6ebae29b4255301b4a3a54574423e7f10" - integrity sha512-1//E5jCBrZ9DmRX+zCtmQtRSV6PV42Ix7Bzj9GbwJceduuf7IqP8MgeTXuRDHOWj2m0VzZD5+roFWDuU8RQjcg== - dependencies: - icss-utils "^4.0.0" - postcss "^7.0.6" - -postcss-modules-values@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/postcss-modules-values/-/postcss-modules-values-4.0.0.tgz#d7c5e7e68c3bb3c9b27cbf48ca0bb3ffb4602c9c" - integrity sha512-RDxHkAiEGI78gS2ofyvCsu7iycRv7oqw5xMWn9iMoR0N/7mf9D50ecQqUo5BZ9Zh2vH4bCUR/ktCqbB9m8vJjQ== - dependencies: - icss-utils "^5.0.0" - -postcss-modules@^4.0.0: - version "4.1.3" - resolved "https://registry.yarnpkg.com/postcss-modules/-/postcss-modules-4.1.3.tgz#c4c4c41d98d97d24c70e88dacfc97af5a4b3e21d" - integrity sha512-dBT39hrXe4OAVYJe/2ZuIZ9BzYhOe7t+IhedYeQ2OxKwDpAGlkEN/fR0fGnrbx4BvgbMReRX4hCubYK9cE/pJQ== - dependencies: - generic-names "^2.0.1" - icss-replace-symbols "^1.1.0" - lodash.camelcase "^4.3.0" - postcss-modules-extract-imports "^3.0.0" - postcss-modules-local-by-default "^4.0.0" - postcss-modules-scope "^3.0.0" - postcss-modules-values "^4.0.0" - string-hash "^1.1.1" - -postcss-normalize-charset@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/postcss-normalize-charset/-/postcss-normalize-charset-4.0.1.tgz#8b35add3aee83a136b0471e0d59be58a50285dd4" - integrity sha512-gMXCrrlWh6G27U0hF3vNvR3w8I1s2wOBILvA87iNXaPvSNo5uZAMYsZG7XjCUf1eVxuPfyL4TJ7++SGZLc9A3g== - dependencies: - postcss "^7.0.0" - -postcss-normalize-display-values@^4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/postcss-normalize-display-values/-/postcss-normalize-display-values-4.0.2.tgz#0dbe04a4ce9063d4667ed2be476bb830c825935a" - integrity sha512-3F2jcsaMW7+VtRMAqf/3m4cPFhPD3EFRgNs18u+k3lTJJlVe7d0YPO+bnwqo2xg8YiRpDXJI2u8A0wqJxMsQuQ== - dependencies: - cssnano-util-get-match "^4.0.0" - postcss "^7.0.0" - postcss-value-parser "^3.0.0" - -postcss-normalize-positions@^4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/postcss-normalize-positions/-/postcss-normalize-positions-4.0.2.tgz#05f757f84f260437378368a91f8932d4b102917f" - integrity sha512-Dlf3/9AxpxE+NF1fJxYDeggi5WwV35MXGFnnoccP/9qDtFrTArZ0D0R+iKcg5WsUd8nUYMIl8yXDCtcrT8JrdA== - dependencies: - cssnano-util-get-arguments "^4.0.0" - has "^1.0.0" - postcss "^7.0.0" - postcss-value-parser "^3.0.0" - -postcss-normalize-repeat-style@^4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/postcss-normalize-repeat-style/-/postcss-normalize-repeat-style-4.0.2.tgz#c4ebbc289f3991a028d44751cbdd11918b17910c" - integrity sha512-qvigdYYMpSuoFs3Is/f5nHdRLJN/ITA7huIoCyqqENJe9PvPmLhNLMu7QTjPdtnVf6OcYYO5SHonx4+fbJE1+Q== - dependencies: - cssnano-util-get-arguments "^4.0.0" - cssnano-util-get-match "^4.0.0" - postcss "^7.0.0" - postcss-value-parser "^3.0.0" - -postcss-normalize-string@^4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/postcss-normalize-string/-/postcss-normalize-string-4.0.2.tgz#cd44c40ab07a0c7a36dc5e99aace1eca4ec2690c" - integrity sha512-RrERod97Dnwqq49WNz8qo66ps0swYZDSb6rM57kN2J+aoyEAJfZ6bMx0sx/F9TIEX0xthPGCmeyiam/jXif0eA== - dependencies: - has "^1.0.0" - postcss "^7.0.0" - postcss-value-parser "^3.0.0" - -postcss-normalize-timing-functions@^4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/postcss-normalize-timing-functions/-/postcss-normalize-timing-functions-4.0.2.tgz#8e009ca2a3949cdaf8ad23e6b6ab99cb5e7d28d9" - integrity sha512-acwJY95edP762e++00Ehq9L4sZCEcOPyaHwoaFOhIwWCDfik6YvqsYNxckee65JHLKzuNSSmAdxwD2Cud1Z54A== - dependencies: - cssnano-util-get-match "^4.0.0" - postcss "^7.0.0" - postcss-value-parser "^3.0.0" - -postcss-normalize-unicode@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/postcss-normalize-unicode/-/postcss-normalize-unicode-4.0.1.tgz#841bd48fdcf3019ad4baa7493a3d363b52ae1cfb" - integrity sha512-od18Uq2wCYn+vZ/qCOeutvHjB5jm57ToxRaMeNuf0nWVHaP9Hua56QyMF6fs/4FSUnVIw0CBPsU0K4LnBPwYwg== - dependencies: - browserslist "^4.0.0" - postcss "^7.0.0" - postcss-value-parser "^3.0.0" - -postcss-normalize-url@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/postcss-normalize-url/-/postcss-normalize-url-4.0.1.tgz#10e437f86bc7c7e58f7b9652ed878daaa95faae1" - integrity sha512-p5oVaF4+IHwu7VpMan/SSpmpYxcJMtkGppYf0VbdH5B6hN8YNmVyJLuY9FmLQTzY3fag5ESUUHDqM+heid0UVA== - dependencies: - is-absolute-url "^2.0.0" - normalize-url "^3.0.0" - postcss "^7.0.0" - postcss-value-parser "^3.0.0" - -postcss-normalize-whitespace@^4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/postcss-normalize-whitespace/-/postcss-normalize-whitespace-4.0.2.tgz#bf1d4070fe4fcea87d1348e825d8cc0c5faa7d82" - integrity sha512-tO8QIgrsI3p95r8fyqKV+ufKlSHh9hMJqACqbv2XknufqEDhDvbguXGBBqxw9nsQoXWf0qOqppziKJKHMD4GtA== - dependencies: - postcss "^7.0.0" - postcss-value-parser "^3.0.0" - -postcss-ordered-values@^4.1.2: - version "4.1.2" - resolved "https://registry.yarnpkg.com/postcss-ordered-values/-/postcss-ordered-values-4.1.2.tgz#0cf75c820ec7d5c4d280189559e0b571ebac0eee" - integrity sha512-2fCObh5UanxvSxeXrtLtlwVThBvHn6MQcu4ksNT2tsaV2Fg76R2CV98W7wNSlX+5/pFwEyaDwKLLoEV7uRybAw== - dependencies: - cssnano-util-get-arguments "^4.0.0" - postcss "^7.0.0" - postcss-value-parser "^3.0.0" - -postcss-reduce-initial@^4.0.3: - version "4.0.3" - resolved "https://registry.yarnpkg.com/postcss-reduce-initial/-/postcss-reduce-initial-4.0.3.tgz#7fd42ebea5e9c814609639e2c2e84ae270ba48df" - integrity sha512-gKWmR5aUulSjbzOfD9AlJiHCGH6AEVLaM0AV+aSioxUDd16qXP1PCh8d1/BGVvpdWn8k/HiK7n6TjeoXN1F7DA== - dependencies: - browserslist "^4.0.0" - caniuse-api "^3.0.0" - has "^1.0.0" - postcss "^7.0.0" - -postcss-reduce-transforms@^4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/postcss-reduce-transforms/-/postcss-reduce-transforms-4.0.2.tgz#17efa405eacc6e07be3414a5ca2d1074681d4e29" - integrity sha512-EEVig1Q2QJ4ELpJXMZR8Vt5DQx8/mo+dGWSR7vWXqcob2gQLyQGsionYcGKATXvQzMPn6DSN1vTN7yFximdIAg== - dependencies: - cssnano-util-get-match "^4.0.0" - has "^1.0.0" - postcss "^7.0.0" - postcss-value-parser "^3.0.0" - -postcss-selector-parser@^3.0.0: - version "3.1.2" - resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-3.1.2.tgz#b310f5c4c0fdaf76f94902bbaa30db6aa84f5270" - integrity sha512-h7fJ/5uWuRVyOtkO45pnt1Ih40CEleeyCHzipqAZO2e5H20g25Y48uYnFUiShvY4rZWNJ/Bib/KVPmanaCtOhA== - dependencies: - dot-prop "^5.2.0" - indexes-of "^1.0.1" - uniq "^1.0.1" - -postcss-selector-parser@^6.0.0, postcss-selector-parser@^6.0.2, postcss-selector-parser@^6.0.4: - version "6.0.6" - resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-6.0.6.tgz#2c5bba8174ac2f6981ab631a42ab0ee54af332ea" - integrity sha512-9LXrvaaX3+mcv5xkg5kFwqSzSH1JIObIx51PrndZwlmznwXRfxMddDvo9gve3gVR8ZTKgoFDdWkbRFmEhT4PMg== - dependencies: - cssesc "^3.0.0" - util-deprecate "^1.0.2" - -postcss-svgo@^4.0.3: - version "4.0.3" - resolved "https://registry.yarnpkg.com/postcss-svgo/-/postcss-svgo-4.0.3.tgz#343a2cdbac9505d416243d496f724f38894c941e" - integrity sha512-NoRbrcMWTtUghzuKSoIm6XV+sJdvZ7GZSc3wdBN0W19FTtp2ko8NqLsgoh/m9CzNhU3KLPvQmjIwtaNFkaFTvw== - dependencies: - postcss "^7.0.0" - postcss-value-parser "^3.0.0" - svgo "^1.0.0" - -postcss-unique-selectors@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/postcss-unique-selectors/-/postcss-unique-selectors-4.0.1.tgz#9446911f3289bfd64c6d680f073c03b1f9ee4bac" - integrity sha512-+JanVaryLo9QwZjKrmJgkI4Fn8SBgRO6WXQBJi7KiAVPlmxikB5Jzc4EvXMT2H0/m0RjrVVm9rGNhZddm/8Spg== - dependencies: - alphanum-sort "^1.0.0" - postcss "^7.0.0" - uniqs "^2.0.0" - -postcss-value-parser@^3.0.0: - version "3.3.1" - resolved "https://registry.yarnpkg.com/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz#9ff822547e2893213cf1c30efa51ac5fd1ba8281" - integrity sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ== - -postcss-value-parser@^4.0.2, postcss-value-parser@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/postcss-value-parser/-/postcss-value-parser-4.1.0.tgz#443f6a20ced6481a2bda4fa8532a6e55d789a2cb" - integrity sha512-97DXOFbQJhk71ne5/Mt6cOu6yxsSfM0QGQyl0L25Gca4yGWEGJaig7l7gbCX623VqTBNGLRLaVUCnNkcedlRSQ== - -postcss@^7.0.0, postcss@^7.0.1, postcss@^7.0.14, postcss@^7.0.27, postcss@^7.0.32, postcss@^7.0.5, postcss@^7.0.6: - version "7.0.36" - resolved "https://registry.yarnpkg.com/postcss/-/postcss-7.0.36.tgz#056f8cffa939662a8f5905950c07d5285644dfcb" - integrity sha512-BebJSIUMwJHRH0HAQoxN4u1CN86glsrwsW0q7T+/m44eXOUAxSNdHRkNZPYz5vVUbg17hFgOQDE7fZk7li3pZw== - dependencies: - chalk "^2.4.2" - source-map "^0.6.1" - supports-color "^6.1.0" - -postcss@^8.1.10: - version "8.3.0" - resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.3.0.tgz#b1a713f6172ca427e3f05ef1303de8b65683325f" - integrity sha512-+ogXpdAjWGa+fdYY5BQ96V/6tAo+TdSSIMP5huJBIygdWwKtVoB5JWZ7yUd4xZ8r+8Kvvx4nyg/PQ071H4UtcQ== - dependencies: - colorette "^1.2.2" - nanoid "^3.1.23" - source-map-js "^0.6.2" - -prelude-ls@^1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.2.1.tgz#debc6489d7a6e6b0e7611888cec880337d316396" - integrity sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g== - -prepend-http@^1.0.0: - version "1.0.4" - resolved "https://registry.yarnpkg.com/prepend-http/-/prepend-http-1.0.4.tgz#d4f4562b0ce3696e41ac52d0e002e57a635dc6dc" - integrity sha1-1PRWKwzjaW5BrFLQ4ALlemNdxtw= - -prettier@^1.18.2: - version "1.19.1" - resolved "https://registry.yarnpkg.com/prettier/-/prettier-1.19.1.tgz#f7d7f5ff8a9cd872a7be4ca142095956a60797cb" - integrity sha512-s7PoyDv/II1ObgQunCbB9PdLmUcBZcnWOcxDh7O0N/UwDEsHyqkW+Qh28jW+mVuCdx7gLB0BotYI1Y6uI9iyew== - -pretty-bytes@^5.3.0, pretty-bytes@^5.4.1: - version "5.6.0" - resolved "https://registry.yarnpkg.com/pretty-bytes/-/pretty-bytes-5.6.0.tgz#356256f643804773c82f64723fe78c92c62beaeb" - integrity sha512-FFw039TmrBqFK8ma/7OL3sDz/VytdtJr044/QUJtH0wK9lb9jLq9tJyIxUwtQJHwar2BqtiA4iCWSwo9JLkzFg== - -pretty-error@^2.0.2: - version "2.1.2" - resolved "https://registry.yarnpkg.com/pretty-error/-/pretty-error-2.1.2.tgz#be89f82d81b1c86ec8fdfbc385045882727f93b6" - integrity sha512-EY5oDzmsX5wvuynAByrmY0P0hcp+QpnAKbJng2A2MPjVKXCxrDSUkzghVJ4ZGPIv+JC4gX8fPUWscC0RtjsWGw== - dependencies: - lodash "^4.17.20" - renderkid "^2.0.4" - -process-nextick-args@~2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.1.tgz#7820d9b16120cc55ca9ae7792680ae7dba6d7fe2" - integrity sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag== - -process@^0.11.10: - version "0.11.10" - resolved "https://registry.yarnpkg.com/process/-/process-0.11.10.tgz#7332300e840161bda3e69a1d1d91a7d4bc16f182" - integrity sha1-czIwDoQBYb2j5podHZGn1LwW8YI= - -progress@^2.0.0: - version "2.0.3" - resolved "https://registry.yarnpkg.com/progress/-/progress-2.0.3.tgz#7e8cf8d8f5b8f239c1bc68beb4eb78567d572ef8" - integrity sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA== - -promise-inflight@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/promise-inflight/-/promise-inflight-1.0.1.tgz#98472870bf228132fcbdd868129bad12c3c029e3" - integrity sha1-mEcocL8igTL8vdhoEputEsPAKeM= - -proxy-addr@~2.0.5: - version "2.0.7" - resolved "https://registry.yarnpkg.com/proxy-addr/-/proxy-addr-2.0.7.tgz#f19fe69ceab311eeb94b42e70e8c2070f9ba1025" - integrity sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg== - dependencies: - forwarded "0.2.0" - ipaddr.js "1.9.1" - -prr@~1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/prr/-/prr-1.0.1.tgz#d3fc114ba06995a45ec6893f484ceb1d78f5f476" - integrity sha1-0/wRS6BplaRexok/SEzrHXj19HY= - -pseudomap@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/pseudomap/-/pseudomap-1.0.2.tgz#f052a28da70e618917ef0a8ac34c1ae5a68286b3" - integrity sha1-8FKijacOYYkX7wqKw0wa5aaChrM= - -psl@^1.1.28: - version "1.8.0" - resolved "https://registry.yarnpkg.com/psl/-/psl-1.8.0.tgz#9326f8bcfb013adcc005fdff056acce020e51c24" - integrity sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ== - -public-encrypt@^4.0.0: - version "4.0.3" - resolved "https://registry.yarnpkg.com/public-encrypt/-/public-encrypt-4.0.3.tgz#4fcc9d77a07e48ba7527e7cbe0de33d0701331e0" - integrity sha512-zVpa8oKZSz5bTMTFClc1fQOnyyEzpl5ozpi1B5YcvBrdohMjH2rfsBtyXcuNuwjsDIXmBYlF2N5FlJYhR29t8Q== - 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" - -pump@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/pump/-/pump-2.0.1.tgz#12399add6e4cf7526d973cbc8b5ce2e2908b3909" - integrity sha512-ruPMNRkN3MHP1cWJc9OWr+T/xDP0jhXYCLfJcBuX54hhfIBnaQmAUMfDcG4DM5UMWByBbJY69QSphm3jtDKIkA== - dependencies: - end-of-stream "^1.1.0" - once "^1.3.1" - -pump@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/pump/-/pump-3.0.0.tgz#b4a2116815bde2f4e1ea602354e8c75565107a64" - integrity sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww== - dependencies: - end-of-stream "^1.1.0" - once "^1.3.1" - -pumpify@^1.3.3: - version "1.5.1" - resolved "https://registry.yarnpkg.com/pumpify/-/pumpify-1.5.1.tgz#36513be246ab27570b1a374a5ce278bfd74370ce" - integrity sha512-oClZI37HvuUJJxSKKrC17bZ9Cu0ZYhEAGPsPUy9KlMUmv9dKX2o77RUmq7f3XjIxbwyGwYzbzQ1L2Ks8sIradQ== - dependencies: - duplexify "^3.6.0" - inherits "^2.0.3" - pump "^2.0.0" - -punycode@1.3.2: - version "1.3.2" - resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.3.2.tgz#9653a036fb7c1ee42342f2325cceefea3926c48d" - integrity sha1-llOgNvt8HuQjQvIyXM7v6jkmxI0= - -punycode@^1.2.4: - version "1.4.1" - resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.4.1.tgz#c0d5a63b2718800ad8e1eb0fa5269c84dd41845e" - integrity sha1-wNWmOycYgArY4esPpSachN1BhF4= - -punycode@^2.1.0, punycode@^2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.1.tgz#b58b010ac40c22c5657616c8d2c2c02c7bf479ec" - integrity sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A== - -q@^1.1.2: - version "1.5.1" - resolved "https://registry.yarnpkg.com/q/-/q-1.5.1.tgz#7e32f75b41381291d04611f1bf14109ac00651d7" - integrity sha1-fjL3W0E4EpHQRhHxvxQQmsAGUdc= - -qs@6.7.0: - version "6.7.0" - resolved "https://registry.yarnpkg.com/qs/-/qs-6.7.0.tgz#41dc1a015e3d581f1621776be31afb2876a9b1bc" - integrity sha512-VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ== - -qs@~6.5.2: - version "6.5.2" - resolved "https://registry.yarnpkg.com/qs/-/qs-6.5.2.tgz#cb3ae806e8740444584ef154ce8ee98d403f3e36" - integrity sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA== - -query-string@^4.1.0: - version "4.3.4" - resolved "https://registry.yarnpkg.com/query-string/-/query-string-4.3.4.tgz#bbb693b9ca915c232515b228b1a02b609043dbeb" - integrity sha1-u7aTucqRXCMlFbIosaArYJBD2+s= - dependencies: - object-assign "^4.1.0" - strict-uri-encode "^1.0.0" - -querystring-es3@^0.2.0: - version "0.2.1" - resolved "https://registry.yarnpkg.com/querystring-es3/-/querystring-es3-0.2.1.tgz#9ec61f79049875707d69414596fd907a4d711e73" - integrity sha1-nsYfeQSYdXB9aUFFlv2Qek1xHnM= - -querystring@0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/querystring/-/querystring-0.2.0.tgz#b209849203bb25df820da756e747005878521620" - integrity sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA= - -querystringify@^2.1.1: - version "2.2.0" - resolved "https://registry.yarnpkg.com/querystringify/-/querystringify-2.2.0.tgz#3345941b4153cb9d082d8eee4cda2016a9aef7f6" - integrity sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ== - -queue-microtask@^1.2.2: - version "1.2.3" - resolved "https://registry.yarnpkg.com/queue-microtask/-/queue-microtask-1.2.3.tgz#4929228bbc724dfac43e0efb058caf7b6cfb6243" - integrity sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A== - -randombytes@^2.0.0, randombytes@^2.0.1, randombytes@^2.0.5, randombytes@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/randombytes/-/randombytes-2.1.0.tgz#df6f84372f0270dc65cdf6291349ab7a473d4f2a" - integrity sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ== - dependencies: - safe-buffer "^5.1.0" - -randomfill@^1.0.3: - version "1.0.4" - resolved "https://registry.yarnpkg.com/randomfill/-/randomfill-1.0.4.tgz#c92196fc86ab42be983f1bf31778224931d61458" - integrity sha512-87lcbR8+MhcWcUiQ+9e+Rwx8MyR2P7qnt15ynUlbm3TU/fjbgz4GsvfSUDTemtCCtVCqb4ZcEFlyPNTh9bBTLw== - dependencies: - randombytes "^2.0.5" - safe-buffer "^5.1.0" - -range-parser@^1.2.1, range-parser@~1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/range-parser/-/range-parser-1.2.1.tgz#3cf37023d199e1c24d1a55b84800c2f3e6468031" - integrity sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg== - -raw-body@2.4.0: - version "2.4.0" - resolved "https://registry.yarnpkg.com/raw-body/-/raw-body-2.4.0.tgz#a1ce6fb9c9bc356ca52e89256ab59059e13d0332" - integrity sha512-4Oz8DUIwdvoa5qMJelxipzi/iJIi40O5cGV1wNYp5hvZP8ZN0T+jiNkL0QepXs+EsQ9XJ8ipEDoiH70ySUJP3Q== - dependencies: - bytes "3.1.0" - http-errors "1.7.2" - iconv-lite "0.4.24" - unpipe "1.0.0" - -read-pkg@^5.1.1: - version "5.2.0" - resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-5.2.0.tgz#7bf295438ca5a33e56cd30e053b34ee7250c93cc" - integrity sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg== - dependencies: - "@types/normalize-package-data" "^2.4.0" - normalize-package-data "^2.5.0" - parse-json "^5.0.0" - type-fest "^0.6.0" - -"readable-stream@1 || 2", readable-stream@^2.0.0, readable-stream@^2.0.1, readable-stream@^2.0.2, readable-stream@^2.1.5, readable-stream@^2.2.2, readable-stream@^2.3.3, readable-stream@^2.3.6, readable-stream@~2.3.6: - version "2.3.7" - resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.7.tgz#1eca1cf711aef814c04f62252a36a62f6cb23b57" - integrity sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw== - dependencies: - core-util-is "~1.0.0" - inherits "~2.0.3" - isarray "~1.0.0" - process-nextick-args "~2.0.0" - safe-buffer "~5.1.1" - string_decoder "~1.1.1" - util-deprecate "~1.0.1" - -readable-stream@^3.0.6, readable-stream@^3.1.1, readable-stream@^3.6.0: - version "3.6.0" - resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.6.0.tgz#337bbda3adc0706bd3e024426a286d4b4b2c9198" - integrity sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA== - dependencies: - inherits "^2.0.3" - string_decoder "^1.1.1" - util-deprecate "^1.0.1" - -readdirp@^2.2.1: - version "2.2.1" - resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-2.2.1.tgz#0e87622a3325aa33e892285caf8b4e846529a525" - integrity sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ== - dependencies: - graceful-fs "^4.1.11" - micromatch "^3.1.10" - readable-stream "^2.0.2" - -readdirp@~3.5.0: - version "3.5.0" - resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-3.5.0.tgz#9ba74c019b15d365278d2e91bb8c48d7b4d42c9e" - integrity sha512-cMhu7c/8rdhkHXWsY+osBhfSy0JikwpHK/5+imo+LpeasTF8ouErHrlYkwT0++njiyuDvc7OFY5T3ukvZ8qmFQ== - dependencies: - picomatch "^2.2.1" - -regenerate-unicode-properties@^8.2.0: - version "8.2.0" - resolved "https://registry.yarnpkg.com/regenerate-unicode-properties/-/regenerate-unicode-properties-8.2.0.tgz#e5de7111d655e7ba60c057dbe9ff37c87e65cdec" - integrity sha512-F9DjY1vKLo/tPePDycuH3dn9H1OTPIkVD9Kz4LODu+F2C75mgjAJ7x/gwy6ZcSNRAAkhNlJSOHRe8k3p+K9WhA== - dependencies: - regenerate "^1.4.0" - -regenerate@^1.4.0: - version "1.4.2" - resolved "https://registry.yarnpkg.com/regenerate/-/regenerate-1.4.2.tgz#b9346d8827e8f5a32f7ba29637d398b69014848a" - integrity sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A== - -regenerator-runtime@^0.11.0: - version "0.11.1" - resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz#be05ad7f9bf7d22e056f9726cee5017fbf19e2e9" - integrity sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg== - -regenerator-runtime@^0.13.4: - version "0.13.7" - resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.13.7.tgz#cac2dacc8a1ea675feaabaeb8ae833898ae46f55" - integrity sha512-a54FxoJDIr27pgf7IgeQGxmqUNYrcV338lf/6gH456HZ/PhX+5BcwHXG9ajESmwe6WRO0tAzRUrRmNONWgkrew== - -regenerator-transform@^0.14.2: - version "0.14.5" - resolved "https://registry.yarnpkg.com/regenerator-transform/-/regenerator-transform-0.14.5.tgz#c98da154683671c9c4dcb16ece736517e1b7feb4" - integrity sha512-eOf6vka5IO151Jfsw2NO9WpGX58W6wWmefK3I1zEGr0lOD0u8rwPaNqQL1aRxUaxLeKO3ArNh3VYg1KbaD+FFw== - dependencies: - "@babel/runtime" "^7.8.4" - -regex-not@^1.0.0, regex-not@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/regex-not/-/regex-not-1.0.2.tgz#1f4ece27e00b0b65e0247a6810e6a85d83a5752c" - integrity sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A== - dependencies: - extend-shallow "^3.0.2" - safe-regex "^1.1.0" - -regexp.prototype.flags@^1.2.0: - version "1.3.1" - resolved "https://registry.yarnpkg.com/regexp.prototype.flags/-/regexp.prototype.flags-1.3.1.tgz#7ef352ae8d159e758c0eadca6f8fcb4eef07be26" - integrity sha512-JiBdRBq91WlY7uRJ0ds7R+dU02i6LKi8r3BuQhNXn+kmeLN+EfHhfjqMRis1zJxnlu88hq/4dx0P2OP3APRTOA== - dependencies: - call-bind "^1.0.2" - define-properties "^1.1.3" - -regexpp@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/regexpp/-/regexpp-3.1.0.tgz#206d0ad0a5648cffbdb8ae46438f3dc51c9f78e2" - integrity sha512-ZOIzd8yVsQQA7j8GCSlPGXwg5PfmA1mrq0JP4nGhh54LaKN3xdai/vHUDu74pKwV8OxseMS65u2NImosQcSD0Q== - -regexpu-core@^4.7.1: - version "4.7.1" - resolved "https://registry.yarnpkg.com/regexpu-core/-/regexpu-core-4.7.1.tgz#2dea5a9a07233298fbf0db91fa9abc4c6e0f8ad6" - integrity sha512-ywH2VUraA44DZQuRKzARmw6S66mr48pQVva4LBeRhcOltJ6hExvWly5ZjFLYo67xbIxb6W1q4bAGtgfEl20zfQ== - dependencies: - regenerate "^1.4.0" - regenerate-unicode-properties "^8.2.0" - regjsgen "^0.5.1" - regjsparser "^0.6.4" - unicode-match-property-ecmascript "^1.0.4" - unicode-match-property-value-ecmascript "^1.2.0" - -regjsgen@^0.5.1: - version "0.5.2" - resolved "https://registry.yarnpkg.com/regjsgen/-/regjsgen-0.5.2.tgz#92ff295fb1deecbf6ecdab2543d207e91aa33733" - integrity sha512-OFFT3MfrH90xIW8OOSyUrk6QHD5E9JOTeGodiJeBS3J6IwlgzJMNE/1bZklWz5oTg+9dCMyEetclvCVXOPoN3A== - -regjsparser@^0.6.4: - version "0.6.9" - resolved "https://registry.yarnpkg.com/regjsparser/-/regjsparser-0.6.9.tgz#b489eef7c9a2ce43727627011429cf833a7183e6" - integrity sha512-ZqbNRz1SNjLAiYuwY0zoXW8Ne675IX5q+YHioAGbCw4X96Mjl2+dcX9B2ciaeyYjViDAfvIjFpQjJgLttTEERQ== - dependencies: - jsesc "~0.5.0" - -relateurl@0.2.x: - version "0.2.7" - resolved "https://registry.yarnpkg.com/relateurl/-/relateurl-0.2.7.tgz#54dbf377e51440aca90a4cd274600d3ff2d888a9" - integrity sha1-VNvzd+UUQKypCkzSdGANP/LYiKk= - -remove-trailing-separator@^1.0.1: - version "1.1.0" - resolved "https://registry.yarnpkg.com/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz#c24bce2a283adad5bc3f58e0d48249b92379d8ef" - integrity sha1-wkvOKig62tW8P1jg1IJJuSN52O8= - -renderkid@^2.0.4: - version "2.0.5" - resolved "https://registry.yarnpkg.com/renderkid/-/renderkid-2.0.5.tgz#483b1ac59c6601ab30a7a596a5965cabccfdd0a5" - integrity sha512-ccqoLg+HLOHq1vdfYNm4TBeaCDIi1FLt3wGojTDSvdewUv65oTmI3cnT2E4hRjl1gzKZIPK+KZrXzlUYKnR+vQ== - dependencies: - css-select "^2.0.2" - dom-converter "^0.2" - htmlparser2 "^3.10.1" - lodash "^4.17.20" - strip-ansi "^3.0.0" - -repeat-element@^1.1.2: - version "1.1.4" - resolved "https://registry.yarnpkg.com/repeat-element/-/repeat-element-1.1.4.tgz#be681520847ab58c7568ac75fbfad28ed42d39e9" - integrity sha512-LFiNfRcSu7KK3evMyYOuCzv3L10TW7yC1G2/+StMjK8Y6Vqd2MG7r/Qjw4ghtuCOjFvlnms/iMmLqpvW/ES/WQ== - -repeat-string@^1.6.1: - version "1.6.1" - resolved "https://registry.yarnpkg.com/repeat-string/-/repeat-string-1.6.1.tgz#8dcae470e1c88abc2d600fff4a776286da75e637" - integrity sha1-jcrkcOHIirwtYA//Sndihtp15jc= - -request@^2.88.2: - version "2.88.2" - resolved "https://registry.yarnpkg.com/request/-/request-2.88.2.tgz#d73c918731cb5a87da047e207234146f664d12b3" - integrity sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw== - 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" - har-validator "~5.1.3" - http-signature "~1.2.0" - is-typedarray "~1.0.0" - isstream "~0.1.2" - json-stringify-safe "~5.0.1" - mime-types "~2.1.19" - oauth-sign "~0.9.0" - 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 "^3.3.2" - -require-directory@^2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42" - integrity sha1-jGStX9MNqxyXbiNE/+f3kqam30I= - -require-from-string@^2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/require-from-string/-/require-from-string-2.0.2.tgz#89a7fdd938261267318eafe14f9c32e598c36909" - integrity sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw== - -require-main-filename@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/require-main-filename/-/require-main-filename-2.0.0.tgz#d0b329ecc7cc0f61649f62215be69af54aa8989b" - integrity sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg== - -requires-port@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/requires-port/-/requires-port-1.0.0.tgz#925d2601d39ac485e091cf0da5c6e694dc3dcaff" - integrity sha1-kl0mAdOaxIXgkc8NpcbmlNw9yv8= - -resolve-cwd@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/resolve-cwd/-/resolve-cwd-2.0.0.tgz#00a9f7387556e27038eae232caa372a6a59b665a" - integrity sha1-AKn3OHVW4nA46uIyyqNypqWbZlo= - dependencies: - resolve-from "^3.0.0" - -resolve-from@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-3.0.0.tgz#b22c7af7d9d6881bc8b6e653335eebcb0a188748" - integrity sha1-six699nWiBvItuZTM17rywoYh0g= - -resolve-from@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-4.0.0.tgz#4abcd852ad32dd7baabfe9b40e00a36db5f392e6" - integrity sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g== - -resolve-url@^0.2.1: - version "0.2.1" - resolved "https://registry.yarnpkg.com/resolve-url/-/resolve-url-0.2.1.tgz#2c637fe77c893afd2a663fe21aa9080068e2052a" - integrity sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo= - -resolve@^1.10.0, resolve@^1.12.0, resolve@^1.14.2, resolve@^1.19.0, resolve@^1.3.2: - version "1.20.0" - resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.20.0.tgz#629a013fb3f70755d6f0b7935cc1c2c5378b1975" - integrity sha512-wENBPt4ySzg4ybFQW2TT1zMQucPK95HSh/nq2CFTZVOGut2+pQvSsgtda4d26YrYcr067wjbmzOG8byDPBX63A== - dependencies: - is-core-module "^2.2.0" - path-parse "^1.0.6" - -restore-cursor@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/restore-cursor/-/restore-cursor-2.0.0.tgz#9f7ee287f82fd326d4fd162923d62129eee0dfaf" - integrity sha1-n37ih/gv0ybU/RYpI9YhKe7g368= - dependencies: - onetime "^2.0.0" - signal-exit "^3.0.2" - -restore-cursor@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/restore-cursor/-/restore-cursor-3.1.0.tgz#39f67c54b3a7a58cea5236d95cf0034239631f7e" - integrity sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA== - dependencies: - onetime "^5.1.0" - signal-exit "^3.0.2" - -ret@~0.1.10: - version "0.1.15" - resolved "https://registry.yarnpkg.com/ret/-/ret-0.1.15.tgz#b8a4825d5bdb1fc3f6f53c2bc33f81388681c7bc" - integrity sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg== - -retry@^0.12.0: - version "0.12.0" - resolved "https://registry.yarnpkg.com/retry/-/retry-0.12.0.tgz#1b42a6266a21f07421d1b0b54b7dc167b01c013b" - integrity sha1-G0KmJmoh8HQh0bC1S33BZ7AcATs= - -reusify@^1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/reusify/-/reusify-1.0.4.tgz#90da382b1e126efc02146e90845a88db12925d76" - integrity sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw== - -rgb-regex@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/rgb-regex/-/rgb-regex-1.0.1.tgz#c0e0d6882df0e23be254a475e8edd41915feaeb1" - integrity sha1-wODWiC3w4jviVKR16O3UGRX+rrE= - -rgba-regex@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/rgba-regex/-/rgba-regex-1.0.0.tgz#43374e2e2ca0968b0ef1523460b7d730ff22eeb3" - integrity sha1-QzdOLiyglosO8VI0YLfXMP8i7rM= - -rimraf@^2.5.4, rimraf@^2.6.1, rimraf@^2.6.3: - version "2.7.1" - resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.7.1.tgz#35797f13a7fdadc566142c29d4f07ccad483e3ec" - integrity sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w== - dependencies: - glob "^7.1.3" - -rimraf@^3.0.0, rimraf@^3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-3.0.2.tgz#f1a5402ba6220ad52cc1282bac1ae3aa49fd061a" - integrity sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA== - dependencies: - glob "^7.1.3" - -ripemd160@^2.0.0, ripemd160@^2.0.1: - version "2.0.2" - resolved "https://registry.yarnpkg.com/ripemd160/-/ripemd160-2.0.2.tgz#a1c1a6f624751577ba5d07914cbc92850585890c" - integrity sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA== - dependencies: - hash-base "^3.0.0" - inherits "^2.0.1" - -rollup-plugin-babel@^4.3.3: - version "4.4.0" - resolved "https://registry.yarnpkg.com/rollup-plugin-babel/-/rollup-plugin-babel-4.4.0.tgz#d15bd259466a9d1accbdb2fe2fff17c52d030acb" - integrity sha512-Lek/TYp1+7g7I+uMfJnnSJ7YWoD58ajo6Oarhlex7lvUce+RCKRuGRSgztDO3/MF/PuGKmUL5iTHKf208UNszw== - dependencies: - "@babel/helper-module-imports" "^7.0.0" - rollup-pluginutils "^2.8.1" - -rollup-plugin-terser@^5.3.1: - version "5.3.1" - resolved "https://registry.yarnpkg.com/rollup-plugin-terser/-/rollup-plugin-terser-5.3.1.tgz#8c650062c22a8426c64268548957463bf981b413" - integrity sha512-1pkwkervMJQGFYvM9nscrUoncPwiKR/K+bHdjv6PFgRo3cgPHoRT83y2Aa3GvINj4539S15t/tpFPb775TDs6w== - dependencies: - "@babel/code-frame" "^7.5.5" - jest-worker "^24.9.0" - rollup-pluginutils "^2.8.2" - serialize-javascript "^4.0.0" - terser "^4.6.2" - -rollup-plugin-terser@^7.0.0: - version "7.0.2" - resolved "https://registry.yarnpkg.com/rollup-plugin-terser/-/rollup-plugin-terser-7.0.2.tgz#e8fbba4869981b2dc35ae7e8a502d5c6c04d324d" - integrity sha512-w3iIaU4OxcF52UUXiZNsNeuXIMDvFrr+ZXK6bFZ0Q60qyVfq4uLptoS4bbq3paG3x216eQllFZX7zt6TIImguQ== - dependencies: - "@babel/code-frame" "^7.10.4" - jest-worker "^26.2.1" - serialize-javascript "^4.0.0" - terser "^5.0.0" - -rollup-pluginutils@^2.8.1, rollup-pluginutils@^2.8.2: - version "2.8.2" - resolved "https://registry.yarnpkg.com/rollup-pluginutils/-/rollup-pluginutils-2.8.2.tgz#72f2af0748b592364dbd3389e600e5a9444a351e" - integrity sha512-EEp9NhnUkwY8aif6bxgovPHMoMoNr2FulJziTndpt5H9RdwC47GSGuII9XxpSdzVGM0GWrNPHV6ie1LTNJPaLQ== - dependencies: - estree-walker "^0.6.1" - -rollup@^1.31.1: - version "1.32.1" - resolved "https://registry.yarnpkg.com/rollup/-/rollup-1.32.1.tgz#4480e52d9d9e2ae4b46ba0d9ddeaf3163940f9c4" - integrity sha512-/2HA0Ec70TvQnXdzynFffkjA6XN+1e2pEv/uKS5Ulca40g2L7KuOE3riasHoNVHOsFD5KKZgDsMk1CP3Tw9s+A== - dependencies: - "@types/estree" "*" - "@types/node" "*" - acorn "^7.1.0" - -rollup@^2.43.1: - version "2.51.1" - resolved "https://registry.yarnpkg.com/rollup/-/rollup-2.51.1.tgz#87bcd4095fe79b14c9bec0edc7ffa44e4827f793" - integrity sha512-8xfDbAtBleXotb6qKEHWuo/jkn94a9dVqGc7Rwl3sqspCVlnCfbRek7ldhCARSi7h32H0xR4QThm1t9zHN+3uw== - optionalDependencies: - fsevents "~2.3.1" - -run-async@^2.4.0: - version "2.4.1" - resolved "https://registry.yarnpkg.com/run-async/-/run-async-2.4.1.tgz#8440eccf99ea3e70bd409d49aab88e10c189a455" - integrity sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ== - -run-parallel@^1.1.9: - version "1.2.0" - resolved "https://registry.yarnpkg.com/run-parallel/-/run-parallel-1.2.0.tgz#66d1368da7bdf921eb9d95bd1a9229e7f21a43ee" - integrity sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA== - dependencies: - queue-microtask "^1.2.2" - -run-queue@^1.0.0, run-queue@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/run-queue/-/run-queue-1.0.3.tgz#e848396f057d223f24386924618e25694161ec47" - integrity sha1-6Eg5bwV9Ij8kOGkkYY4laUFh7Ec= - dependencies: - aproba "^1.1.1" - -rxjs@^6.6.0: - version "6.6.7" - resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-6.6.7.tgz#90ac018acabf491bf65044235d5863c4dab804c9" - integrity sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ== - dependencies: - tslib "^1.9.0" - -safe-buffer@5.1.2, safe-buffer@~5.1.0, safe-buffer@~5.1.1: - version "5.1.2" - resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" - integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== - -safe-buffer@>=5.1.0, safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@^5.1.1, safe-buffer@^5.1.2, safe-buffer@^5.2.0, safe-buffer@~5.2.0: - version "5.2.1" - resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6" - integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== - -safe-regex@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/safe-regex/-/safe-regex-1.1.0.tgz#40a3669f3b077d1e943d44629e157dd48023bf2e" - integrity sha1-QKNmnzsHfR6UPURinhV91IAjvy4= - dependencies: - ret "~0.1.10" - -"safer-buffer@>= 2.1.2 < 3", safer-buffer@^2.0.2, safer-buffer@^2.1.0, safer-buffer@~2.1.0: - version "2.1.2" - resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" - integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== - -sax@~1.2.4: - version "1.2.4" - resolved "https://registry.yarnpkg.com/sax/-/sax-1.2.4.tgz#2816234e2378bddc4e5354fab5caa895df7100d9" - integrity sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw== - -schema-utils@2.7.0: - version "2.7.0" - resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-2.7.0.tgz#17151f76d8eae67fbbf77960c33c676ad9f4efc7" - integrity sha512-0ilKFI6QQF5nxDZLFn2dMjvc4hjg/Wkg7rHd3jK6/A4a1Hl9VFdQWvgB1UMGoU94pad1P/8N7fMcEnLnSiju8A== - dependencies: - "@types/json-schema" "^7.0.4" - ajv "^6.12.2" - ajv-keywords "^3.4.1" - -schema-utils@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-1.0.0.tgz#0b79a93204d7b600d4b2850d1f66c2a34951c770" - integrity sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g== - dependencies: - ajv "^6.1.0" - ajv-errors "^1.0.0" - ajv-keywords "^3.1.0" - -schema-utils@^2.0.0, schema-utils@^2.5.0, schema-utils@^2.6.5, schema-utils@^2.7.0: - version "2.7.1" - resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-2.7.1.tgz#1ca4f32d1b24c590c203b8e7a50bf0ea4cd394d7" - integrity sha512-SHiNtMOUGWBQJwzISiVYKu82GiV4QYGePp3odlY1tuKO7gPtphAT5R/py0fA6xtbgLL/RvtJZnU9b8s0F1q0Xg== - dependencies: - "@types/json-schema" "^7.0.5" - ajv "^6.12.4" - ajv-keywords "^3.5.2" - -select-hose@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/select-hose/-/select-hose-2.0.0.tgz#625d8658f865af43ec962bfc376a37359a4994ca" - integrity sha1-Yl2GWPhlr0Psliv8N2o3NZpJlMo= - -selfsigned@^1.10.8: - version "1.10.11" - resolved "https://registry.yarnpkg.com/selfsigned/-/selfsigned-1.10.11.tgz#24929cd906fe0f44b6d01fb23999a739537acbe9" - integrity sha512-aVmbPOfViZqOZPgRBT0+3u4yZFHpmnIghLMlAcb5/xhp5ZtB/RVnKhz5vl2M32CLXAqR4kha9zfhNg0Lf/sxKA== - dependencies: - node-forge "^0.10.0" - -"semver@2 || 3 || 4 || 5", semver@^5.3.0, semver@^5.5.0, semver@^5.6.0: - version "5.7.1" - resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.1.tgz#a954f931aeba508d307bbf069eff0c01c96116f7" - integrity sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ== - -semver@7.0.0: - version "7.0.0" - resolved "https://registry.yarnpkg.com/semver/-/semver-7.0.0.tgz#5f3ca35761e47e05b206c6daff2cf814f0316b8e" - integrity sha512-+GB6zVA9LWh6zovYQLALHwv5rb2PHGlJi3lfiqIHxR0uuwCgefcOJc59v9fv1w8GbStwxuuqqAjI9NMAOOgq1A== - -semver@^6.0.0, semver@^6.1.0, semver@^6.1.1, semver@^6.1.2, semver@^6.3.0: - version "6.3.0" - resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.0.tgz#ee0a64c8af5e8ceea67687b133761e1becbd1d3d" - integrity sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw== - -semver@^7.2.1, semver@^7.3.2, semver@^7.3.5: - version "7.3.5" - resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.5.tgz#0b621c879348d8998e4b0e4be94b3f12e6018ef7" - integrity sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ== - dependencies: - lru-cache "^6.0.0" - -send@0.17.1: - version "0.17.1" - resolved "https://registry.yarnpkg.com/send/-/send-0.17.1.tgz#c1d8b059f7900f7466dd4938bdc44e11ddb376c8" - integrity sha512-BsVKsiGcQMFwT8UxypobUKyv7irCNRHk1T0G680vk88yf6LBByGcZJOTJCrTP2xVN6yI+XjPJcNuE3V4fT9sAg== - dependencies: - debug "2.6.9" - depd "~1.1.2" - destroy "~1.0.4" - encodeurl "~1.0.2" - escape-html "~1.0.3" - etag "~1.8.1" - fresh "0.5.2" - http-errors "~1.7.2" - mime "1.6.0" - ms "2.1.1" - on-finished "~2.3.0" - range-parser "~1.2.1" - statuses "~1.5.0" - -serialize-javascript@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-4.0.0.tgz#b525e1238489a5ecfc42afacc3fe99e666f4b1aa" - integrity sha512-GaNA54380uFefWghODBWEGisLZFj00nS5ACs6yHa9nLqlLpVLO8ChDGeKRjZnV4Nh4n0Qi7nhYZD/9fCPzEqkw== - dependencies: - randombytes "^2.1.0" - -serve-index@^1.9.1: - version "1.9.1" - resolved "https://registry.yarnpkg.com/serve-index/-/serve-index-1.9.1.tgz#d3768d69b1e7d82e5ce050fff5b453bea12a9239" - integrity sha1-03aNabHn2C5c4FD/9bRTvqEqkjk= - dependencies: - accepts "~1.3.4" - batch "0.6.1" - debug "2.6.9" - escape-html "~1.0.3" - http-errors "~1.6.2" - mime-types "~2.1.17" - parseurl "~1.3.2" - -serve-static@1.14.1: - version "1.14.1" - resolved "https://registry.yarnpkg.com/serve-static/-/serve-static-1.14.1.tgz#666e636dc4f010f7ef29970a88a674320898b2f9" - integrity sha512-JMrvUwE54emCYWlTI+hGrGv5I8dEwmco/00EvkzIIsR7MqrHonbD9pO2MOfFnpFntl7ecpZs+3mW+XbQZu9QCg== - dependencies: - encodeurl "~1.0.2" - escape-html "~1.0.3" - parseurl "~1.3.3" - send "0.17.1" - -set-blocking@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7" - integrity sha1-BF+XgtARrppoA93TgrJDkrPYkPc= - -set-value@^2.0.0, set-value@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/set-value/-/set-value-2.0.1.tgz#a18d40530e6f07de4228c7defe4227af8cad005b" - integrity sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw== - dependencies: - extend-shallow "^2.0.1" - is-extendable "^0.1.1" - is-plain-object "^2.0.3" - split-string "^3.0.1" - -setimmediate@^1.0.4: - version "1.0.5" - resolved "https://registry.yarnpkg.com/setimmediate/-/setimmediate-1.0.5.tgz#290cbb232e306942d7d7ea9b83732ab7856f8285" - integrity sha1-KQy7Iy4waULX1+qbg3Mqt4VvgoU= - -setprototypeof@1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.1.0.tgz#d0bd85536887b6fe7c0d818cb962d9d91c54e656" - integrity sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ== - -setprototypeof@1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.1.1.tgz#7e95acb24aa92f5885e0abef5ba131330d4ae683" - integrity sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw== - -sha.js@^2.4.0, sha.js@^2.4.8: - version "2.4.11" - resolved "https://registry.yarnpkg.com/sha.js/-/sha.js-2.4.11.tgz#37a5cf0b81ecbc6943de109ba2960d1b26584ae7" - integrity sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ== - dependencies: - inherits "^2.0.1" - safe-buffer "^5.0.1" - -shebang-command@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-1.2.0.tgz#44aac65b695b03398968c39f363fee5deafdf1ea" - integrity sha1-RKrGW2lbAzmJaMOfNj/uXer98eo= - dependencies: - shebang-regex "^1.0.0" - -shebang-command@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-2.0.0.tgz#ccd0af4f8835fbdc265b82461aaf0c36663f34ea" - integrity sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA== - dependencies: - shebang-regex "^3.0.0" - -shebang-regex@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-1.0.0.tgz#da42f49740c0b42db2ca9728571cb190c98efea3" - integrity sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM= - -shebang-regex@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-3.0.0.tgz#ae16f1644d873ecad843b0307b143362d4c42172" - integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A== - -shell-quote@^1.6.1: - version "1.7.2" - resolved "https://registry.yarnpkg.com/shell-quote/-/shell-quote-1.7.2.tgz#67a7d02c76c9da24f99d20808fcaded0e0e04be2" - integrity sha512-mRz/m/JVscCrkMyPqHc/bczi3OQHkLTqXHEFu0zDhK/qfv3UcOA4SVmRCLmos4bhjr9ekVQubj/R7waKapmiQg== - -signal-exit@^3.0.0, signal-exit@^3.0.2: - version "3.0.3" - resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.3.tgz#a1410c2edd8f077b08b4e253c8eacfcaf057461c" - integrity sha512-VUJ49FC8U1OxwZLxIbTTrDvLnf/6TDgxZcK8wxR8zs13xpx7xbG60ndBlhNrFi2EMuFRoeDoJO7wthSLq42EjA== - -simple-swizzle@^0.2.2: - version "0.2.2" - resolved "https://registry.yarnpkg.com/simple-swizzle/-/simple-swizzle-0.2.2.tgz#a4da6b635ffcccca33f70d17cb92592de95e557a" - integrity sha1-pNprY1/8zMoz9w0Xy5JZLeleVXo= - dependencies: - is-arrayish "^0.3.1" - -slash@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/slash/-/slash-1.0.0.tgz#c41f2f6c39fc16d1cd17ad4b5d896114ae470d55" - integrity sha1-xB8vbDn8FtHNF61LXYlhFK5HDVU= - -slash@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/slash/-/slash-2.0.0.tgz#de552851a1759df3a8f206535442f5ec4ddeab44" - integrity sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A== - -slash@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/slash/-/slash-3.0.0.tgz#6539be870c165adbd5240220dbe361f1bc4d4634" - integrity sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q== - -slice-ansi@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-4.0.0.tgz#500e8dd0fd55b05815086255b3195adf2a45fe6b" - integrity sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ== - dependencies: - ansi-styles "^4.0.0" - astral-regex "^2.0.0" - is-fullwidth-code-point "^3.0.0" - -snapdragon-node@^2.0.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/snapdragon-node/-/snapdragon-node-2.1.1.tgz#6c175f86ff14bdb0724563e8f3c1b021a286853b" - integrity sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw== - dependencies: - define-property "^1.0.0" - isobject "^3.0.0" - snapdragon-util "^3.0.1" - -snapdragon-util@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/snapdragon-util/-/snapdragon-util-3.0.1.tgz#f956479486f2acd79700693f6f7b805e45ab56e2" - integrity sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ== - dependencies: - kind-of "^3.2.0" - -snapdragon@^0.8.1: - version "0.8.2" - resolved "https://registry.yarnpkg.com/snapdragon/-/snapdragon-0.8.2.tgz#64922e7c565b0e14204ba1aa7d6964278d25182d" - integrity sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg== - dependencies: - base "^0.11.1" - debug "^2.2.0" - define-property "^0.2.5" - extend-shallow "^2.0.1" - map-cache "^0.2.2" - source-map "^0.5.6" - source-map-resolve "^0.5.0" - use "^3.1.0" - -sockjs-client@^1.5.0: - version "1.5.1" - resolved "https://registry.yarnpkg.com/sockjs-client/-/sockjs-client-1.5.1.tgz#256908f6d5adfb94dabbdbd02c66362cca0f9ea6" - integrity sha512-VnVAb663fosipI/m6pqRXakEOw7nvd7TUgdr3PlR/8V2I95QIdwT8L4nMxhyU8SmDBHYXU1TOElaKOmKLfYzeQ== - dependencies: - debug "^3.2.6" - eventsource "^1.0.7" - faye-websocket "^0.11.3" - inherits "^2.0.4" - json3 "^3.3.3" - url-parse "^1.5.1" - -sockjs@^0.3.21: - version "0.3.21" - resolved "https://registry.yarnpkg.com/sockjs/-/sockjs-0.3.21.tgz#b34ffb98e796930b60a0cfa11904d6a339a7d417" - integrity sha512-DhbPFGpxjc6Z3I+uX07Id5ZO2XwYsWOrYjaSeieES78cq+JaJvVe5q/m1uvjIQhXinhIeCFRH6JgXe+mvVMyXw== - dependencies: - faye-websocket "^0.11.3" - uuid "^3.4.0" - websocket-driver "^0.7.4" - -sort-keys@^1.0.0: - version "1.1.2" - resolved "https://registry.yarnpkg.com/sort-keys/-/sort-keys-1.1.2.tgz#441b6d4d346798f1b4e49e8920adfba0e543f9ad" - integrity sha1-RBttTTRnmPG05J6JIK37oOVD+a0= - dependencies: - is-plain-obj "^1.0.0" - -sortablejs@1.10.2: - version "1.10.2" - resolved "https://registry.yarnpkg.com/sortablejs/-/sortablejs-1.10.2.tgz#6e40364d913f98b85a14f6678f92b5c1221f5290" - integrity sha512-YkPGufevysvfwn5rfdlGyrGjt7/CRHwvRPogD/lC+TnvcN29jDpCifKP+rBqf+LRldfXSTh+0CGLcSg0VIxq3A== - -source-list-map@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/source-list-map/-/source-list-map-2.0.1.tgz#3993bd873bfc48479cca9ea3a547835c7c154b34" - integrity sha512-qnQ7gVMxGNxsiL4lEuJwe/To8UnK7fAnmbGEEH8RpLouuKbeEm0lhbQVFIrNSuB+G7tVrAlVsZgETT5nljf+Iw== - -source-map-js@^0.6.2: - version "0.6.2" - resolved "https://registry.yarnpkg.com/source-map-js/-/source-map-js-0.6.2.tgz#0bb5de631b41cfbda6cfba8bd05a80efdfd2385e" - integrity sha512-/3GptzWzu0+0MBQFrDKzw/DvvMTUORvgY6k6jd/VS6iCR4RDTKWH6v6WPwQoUO8667uQEf9Oe38DxAYWY5F/Ug== - -source-map-resolve@^0.5.0: - version "0.5.3" - resolved "https://registry.yarnpkg.com/source-map-resolve/-/source-map-resolve-0.5.3.tgz#190866bece7553e1f8f267a2ee82c606b5509a1a" - integrity sha512-Htz+RnsXWk5+P2slx5Jh3Q66vhQj1Cllm0zvnaY98+NFx+Dv2CF/f5O/t8x+KaNdrdIAsruNzoh/KpialbqAnw== - dependencies: - atob "^2.1.2" - decode-uri-component "^0.2.0" - resolve-url "^0.2.1" - source-map-url "^0.4.0" - urix "^0.1.0" - -source-map-support@~0.5.12, source-map-support@~0.5.19: - version "0.5.19" - resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.19.tgz#a98b62f86dcaf4f67399648c085291ab9e8fed61" - integrity sha512-Wonm7zOCIJzBGQdB+thsPar0kYuCIzYvxZwlBa87yi/Mdjv7Tip2cyVbLj5o0cFPN4EVkuTwb3GDDyUx2DGnGw== - dependencies: - buffer-from "^1.0.0" - source-map "^0.6.0" - -source-map-url@^0.4.0: - version "0.4.1" - resolved "https://registry.yarnpkg.com/source-map-url/-/source-map-url-0.4.1.tgz#0af66605a745a5a2f91cf1bbf8a7afbc283dec56" - integrity sha512-cPiFOTLUKvJFIg4SKVScy4ilPPW6rFgMgfuZJPNoDuMs3nC1HbMUycBoJw77xFIp6z1UJQJOfx6C9GMH80DiTw== - -source-map@^0.5.0, source-map@^0.5.6: - version "0.5.7" - resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc" - integrity sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w= - -source-map@^0.6.0, source-map@^0.6.1, source-map@~0.6.0, source-map@~0.6.1: - version "0.6.1" - resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" - integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== - -source-map@^0.7.3, source-map@~0.7.2: - version "0.7.3" - resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.7.3.tgz#5302f8169031735226544092e64981f751750383" - integrity sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ== - -source-map@^0.8.0-beta.0: - version "0.8.0-beta.0" - resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.8.0-beta.0.tgz#d4c1bb42c3f7ee925f005927ba10709e0d1d1f11" - integrity sha512-2ymg6oRBpebeZi9UUNsgQ89bhx01TcTkmNTGnNO88imTmbSgy4nfujrgVEFKWpMTEGA11EDkTt7mqObTPdigIA== - dependencies: - whatwg-url "^7.0.0" - -sourcemap-codec@^1.4.4: - version "1.4.8" - resolved "https://registry.yarnpkg.com/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz#ea804bd94857402e6992d05a38ef1ae35a9ab4c4" - integrity sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA== - -spdx-correct@^3.0.0: - version "3.1.1" - resolved "https://registry.yarnpkg.com/spdx-correct/-/spdx-correct-3.1.1.tgz#dece81ac9c1e6713e5f7d1b6f17d468fa53d89a9" - integrity sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w== - dependencies: - spdx-expression-parse "^3.0.0" - spdx-license-ids "^3.0.0" - -spdx-exceptions@^2.1.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz#3f28ce1a77a00372683eade4a433183527a2163d" - integrity sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A== - -spdx-expression-parse@^3.0.0: - version "3.0.1" - resolved "https://registry.yarnpkg.com/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz#cf70f50482eefdc98e3ce0a6833e4a53ceeba679" - integrity sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q== - dependencies: - spdx-exceptions "^2.1.0" - spdx-license-ids "^3.0.0" - -spdx-license-ids@^3.0.0: - version "3.0.9" - resolved "https://registry.yarnpkg.com/spdx-license-ids/-/spdx-license-ids-3.0.9.tgz#8a595135def9592bda69709474f1cbeea7c2467f" - integrity sha512-Ki212dKK4ogX+xDo4CtOZBVIwhsKBEfsEEcwmJfLQzirgc2jIWdzg40Unxz/HzEUqM1WFzVlQSMF9kZZ2HboLQ== - -spdy-transport@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/spdy-transport/-/spdy-transport-3.0.0.tgz#00d4863a6400ad75df93361a1608605e5dcdcf31" - integrity sha512-hsLVFE5SjA6TCisWeJXFKniGGOpBgMLmerfO2aCyCU5s7nJ/rpAepqmFifv/GCbSbueEeAJJnmSQ2rKC/g8Fcw== - dependencies: - debug "^4.1.0" - detect-node "^2.0.4" - hpack.js "^2.1.6" - obuf "^1.1.2" - readable-stream "^3.0.6" - wbuf "^1.7.3" - -spdy@^4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/spdy/-/spdy-4.0.2.tgz#b74f466203a3eda452c02492b91fb9e84a27677b" - integrity sha512-r46gZQZQV+Kl9oItvl1JZZqJKGr+oEkB08A6BzkiR7593/7IbtuncXHd2YoYeTsG4157ZssMu9KYvUHLcjcDoA== - dependencies: - debug "^4.1.0" - handle-thing "^2.0.0" - http-deceiver "^1.2.7" - select-hose "^2.0.0" - spdy-transport "^3.0.0" - -split-string@^3.0.1, split-string@^3.0.2: - version "3.1.0" - resolved "https://registry.yarnpkg.com/split-string/-/split-string-3.1.0.tgz#7cb09dda3a86585705c64b39a6466038682e8fe2" - integrity sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw== - dependencies: - extend-shallow "^3.0.0" - -sprintf-js@~1.0.2: - version "1.0.3" - resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c" - integrity sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw= - -sshpk@^1.7.0: - version "1.16.1" - resolved "https://registry.yarnpkg.com/sshpk/-/sshpk-1.16.1.tgz#fb661c0bef29b39db40769ee39fa70093d6f6877" - integrity sha512-HXXqVUq7+pcKeLqqZj6mHFUMvXtOJt1uoUx09pFW6011inTMxqI8BA8PM95myrIyyKwdnzjdFjLiE6KBPVtJIg== - dependencies: - asn1 "~0.2.3" - assert-plus "^1.0.0" - bcrypt-pbkdf "^1.0.0" - dashdash "^1.12.0" - ecc-jsbn "~0.1.1" - getpass "^0.1.1" - jsbn "~0.1.0" - safer-buffer "^2.0.2" - tweetnacl "~0.14.0" - -ssri@^6.0.1: - version "6.0.2" - resolved "https://registry.yarnpkg.com/ssri/-/ssri-6.0.2.tgz#157939134f20464e7301ddba3e90ffa8f7728ac5" - integrity sha512-cepbSq/neFK7xB6A50KHN0xHDotYzq58wWCa5LeWqnPrHG8GzfEjO/4O8kpmcGW+oaxkvhEJCWgbgNk4/ZV93Q== - dependencies: - figgy-pudding "^3.5.1" - -ssri@^8.0.1: - version "8.0.1" - resolved "https://registry.yarnpkg.com/ssri/-/ssri-8.0.1.tgz#638e4e439e2ffbd2cd289776d5ca457c4f51a2af" - integrity sha512-97qShzy1AiyxvPNIkLWoGua7xoQzzPjQ0HAH4B0rWKo7SZ6USuPcrUiAFrws0UH8RrbWmgq3LMTObhPIHbbBeQ== - dependencies: - minipass "^3.1.1" - -stable@^0.1.8: - version "0.1.8" - resolved "https://registry.yarnpkg.com/stable/-/stable-0.1.8.tgz#836eb3c8382fe2936feaf544631017ce7d47a3cf" - integrity sha512-ji9qxRnOVfcuLDySj9qzhGSEFVobyt1kIOSkj1qZzYLzq7Tos/oUUWvotUPQLlrsidqsK6tBH89Bc9kL5zHA6w== - -stackframe@^1.1.1: - version "1.2.0" - resolved "https://registry.yarnpkg.com/stackframe/-/stackframe-1.2.0.tgz#52429492d63c62eb989804c11552e3d22e779303" - integrity sha512-GrdeshiRmS1YLMYgzF16olf2jJ/IzxXY9lhKOskuVziubpTYcYqyOwYeJKzQkwy7uN0fYSsbsC4RQaXf9LCrYA== - -static-extend@^0.1.1: - version "0.1.2" - resolved "https://registry.yarnpkg.com/static-extend/-/static-extend-0.1.2.tgz#60809c39cbff55337226fd5e0b520f341f1fb5c6" - integrity sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY= - dependencies: - define-property "^0.2.5" - object-copy "^0.1.0" - -"statuses@>= 1.4.0 < 2", "statuses@>= 1.5.0 < 2", statuses@~1.5.0: - version "1.5.0" - resolved "https://registry.yarnpkg.com/statuses/-/statuses-1.5.0.tgz#161c7dac177659fd9811f43771fa99381478628c" - integrity sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow= - -stream-browserify@^2.0.1: - version "2.0.2" - resolved "https://registry.yarnpkg.com/stream-browserify/-/stream-browserify-2.0.2.tgz#87521d38a44aa7ee91ce1cd2a47df0cb49dd660b" - integrity sha512-nX6hmklHs/gr2FuxYDltq8fJA1GDlxKQCz8O/IM4atRqBH8OORmBNgfvW5gG10GT/qQ9u0CzIvr2X5Pkt6ntqg== - dependencies: - inherits "~2.0.1" - readable-stream "^2.0.2" - -stream-each@^1.1.0: - version "1.2.3" - resolved "https://registry.yarnpkg.com/stream-each/-/stream-each-1.2.3.tgz#ebe27a0c389b04fbcc233642952e10731afa9bae" - integrity sha512-vlMC2f8I2u/bZGqkdfLQW/13Zihpej/7PmSiMQsbYddxuTsJp8vRe2x2FvVExZg7FaOds43ROAuFJwPR4MTZLw== - dependencies: - end-of-stream "^1.1.0" - stream-shift "^1.0.0" - -stream-http@^2.7.2: - version "2.8.3" - resolved "https://registry.yarnpkg.com/stream-http/-/stream-http-2.8.3.tgz#b2d242469288a5a27ec4fe8933acf623de6514fc" - integrity sha512-+TSkfINHDo4J+ZobQLWiMouQYB+UVYFttRA94FpEzzJ7ZdqcL4uUUQ7WkdkI4DSozGmgBUE/a47L+38PenXhUw== - dependencies: - builtin-status-codes "^3.0.0" - inherits "^2.0.1" - readable-stream "^2.3.6" - to-arraybuffer "^1.0.0" - xtend "^4.0.0" - -stream-shift@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/stream-shift/-/stream-shift-1.0.1.tgz#d7088281559ab2778424279b0877da3c392d5a3d" - integrity sha512-AiisoFqQ0vbGcZgQPY1cdP2I76glaVA/RauYR4G4thNFgkTqr90yXTo4LYX60Jl+sIlPNHHdGSwo01AvbKUSVQ== - -strict-uri-encode@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/strict-uri-encode/-/strict-uri-encode-1.1.0.tgz#279b225df1d582b1f54e65addd4352e18faa0713" - integrity sha1-J5siXfHVgrH1TmWt3UNS4Y+qBxM= - -string-hash@^1.1.1: - version "1.1.3" - resolved "https://registry.yarnpkg.com/string-hash/-/string-hash-1.1.3.tgz#e8aafc0ac1855b4666929ed7dd1275df5d6c811b" - integrity sha1-6Kr8CsGFW0Zmkp7X3RJ1311sgRs= - -string-width@^2.0.0, string-width@^2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/string-width/-/string-width-2.1.1.tgz#ab93f27a8dc13d28cac815c462143a6d9012ae9e" - integrity sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw== - dependencies: - is-fullwidth-code-point "^2.0.0" - strip-ansi "^4.0.0" - -string-width@^3.0.0, string-width@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/string-width/-/string-width-3.1.0.tgz#22767be21b62af1081574306f69ac51b62203961" - integrity sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w== - dependencies: - emoji-regex "^7.0.1" - is-fullwidth-code-point "^2.0.0" - strip-ansi "^5.1.0" - -string-width@^4.1.0, string-width@^4.2.0: - version "4.2.2" - resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.2.tgz#dafd4f9559a7585cfba529c6a0a4f73488ebd4c5" - integrity sha512-XBJbT3N4JhVumXE0eoLU9DCjcaF92KLNqTmFCnG1pf8duUxFGwtP6AD6nkjw9a3IdiRtL3E2w3JDiE/xi3vOeA== - dependencies: - emoji-regex "^8.0.0" - is-fullwidth-code-point "^3.0.0" - strip-ansi "^6.0.0" - -string.prototype.trimend@^1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/string.prototype.trimend/-/string.prototype.trimend-1.0.4.tgz#e75ae90c2942c63504686c18b287b4a0b1a45f80" - integrity sha512-y9xCjw1P23Awk8EvTpcyL2NIr1j7wJ39f+k6lvRnSMz+mz9CGz9NYPelDk42kOz6+ql8xjfK8oYzy3jAP5QU5A== - dependencies: - call-bind "^1.0.2" - define-properties "^1.1.3" - -string.prototype.trimstart@^1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/string.prototype.trimstart/-/string.prototype.trimstart-1.0.4.tgz#b36399af4ab2999b4c9c648bd7a3fb2bb26feeed" - integrity sha512-jh6e984OBfvxS50tdY2nRZnoC5/mLFKOREQfw8t5yytkoUsJRNxvI/E39qu1sD0OtWI3OC0XgKSmcWwziwYuZw== - dependencies: - call-bind "^1.0.2" - define-properties "^1.1.3" - -string_decoder@^1.0.0, string_decoder@^1.1.1: - version "1.3.0" - resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.3.0.tgz#42f114594a46cf1a8e30b0a84f56c78c3edac21e" - integrity sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA== - dependencies: - safe-buffer "~5.2.0" - -string_decoder@~1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.1.1.tgz#9cf1611ba62685d7030ae9e4ba34149c3af03fc8" - integrity sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg== - dependencies: - safe-buffer "~5.1.0" - -stringify-object@^3.3.0: - version "3.3.0" - resolved "https://registry.yarnpkg.com/stringify-object/-/stringify-object-3.3.0.tgz#703065aefca19300d3ce88af4f5b3956d7556629" - integrity sha512-rHqiFh1elqCQ9WPLIC8I0Q/g/wj5J1eMkyoiD6eoQApWHP0FtlK7rqnhmabL5VUY9JQCcqwwvlOaSuutekgyrw== - dependencies: - get-own-enumerable-property-symbols "^3.0.0" - is-obj "^1.0.1" - is-regexp "^1.0.0" - -strip-ansi@^3.0.0, strip-ansi@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-3.0.1.tgz#6a385fb8853d952d5ff05d0e8aaf94278dc63dcf" - integrity sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8= - dependencies: - ansi-regex "^2.0.0" - -strip-ansi@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-4.0.0.tgz#a8479022eb1ac368a871389b635262c505ee368f" - integrity sha1-qEeQIusaw2iocTibY1JixQXuNo8= - dependencies: - ansi-regex "^3.0.0" - -strip-ansi@^5, strip-ansi@^5.0.0, strip-ansi@^5.1.0, strip-ansi@^5.2.0: - version "5.2.0" - resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-5.2.0.tgz#8c9a536feb6afc962bdfa5b104a5091c1ad9c0ae" - integrity sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA== - dependencies: - ansi-regex "^4.1.0" - -strip-ansi@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.0.tgz#0b1571dd7669ccd4f3e06e14ef1eed26225ae532" - integrity sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w== - dependencies: - ansi-regex "^5.0.0" - -strip-comments@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/strip-comments/-/strip-comments-1.0.2.tgz#82b9c45e7f05873bee53f37168af930aa368679d" - integrity sha512-kL97alc47hoyIQSV165tTt9rG5dn4w1dNnBhOQ3bOU1Nc1hel09jnXANaHJ7vzHLd4Ju8kseDGzlev96pghLFw== - dependencies: - babel-extract-comments "^1.0.0" - babel-plugin-transform-object-rest-spread "^6.26.0" - -strip-comments@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/strip-comments/-/strip-comments-2.0.1.tgz#4ad11c3fbcac177a67a40ac224ca339ca1c1ba9b" - integrity sha512-ZprKx+bBLXv067WTCALv8SSz5l2+XhpYCsVtSqlMnkAXMWDq+/ekVbl1ghqP9rUHTzv6sm/DwCOiYutU/yp1fw== - -strip-eof@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/strip-eof/-/strip-eof-1.0.0.tgz#bb43ff5598a6eb05d89b59fcd129c983313606bf" - integrity sha1-u0P/VZim6wXYm1n80SnJgzE2Br8= - -strip-final-newline@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/strip-final-newline/-/strip-final-newline-2.0.0.tgz#89b852fb2fcbe936f6f4b3187afb0a12c1ab58ad" - integrity sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA== - -strip-indent@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/strip-indent/-/strip-indent-2.0.0.tgz#5ef8db295d01e6ed6cbf7aab96998d7822527b68" - integrity sha1-XvjbKV0B5u1sv3qrlpmNeCJSe2g= - -strip-json-comments@^3.1.0, strip-json-comments@^3.1.1: - version "3.1.1" - resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-3.1.1.tgz#31f1281b3832630434831c310c01cccda8cbe006" - integrity sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig== - -stylehacks@^4.0.0: - version "4.0.3" - resolved "https://registry.yarnpkg.com/stylehacks/-/stylehacks-4.0.3.tgz#6718fcaf4d1e07d8a1318690881e8d96726a71d5" - integrity sha512-7GlLk9JwlElY4Y6a/rmbH2MhVlTyVmiJd1PfTCqFaIBEGMYNsrO/v3SeGTdhBThLg4Z+NbOk/qFMwCa+J+3p/g== - dependencies: - browserslist "^4.0.0" - postcss "^7.0.0" - postcss-selector-parser "^3.0.0" - -supports-color@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-2.0.0.tgz#535d045ce6b6363fa40117084629995e9df324c7" - integrity sha1-U10EXOa2Nj+kARcIRimZXp3zJMc= - -supports-color@^5.3.0: - version "5.5.0" - resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f" - integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow== - dependencies: - has-flag "^3.0.0" - -supports-color@^6.1.0: - version "6.1.0" - resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-6.1.0.tgz#0764abc69c63d5ac842dd4867e8d025e880df8f3" - integrity sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ== - dependencies: - has-flag "^3.0.0" - -supports-color@^7.0.0, supports-color@^7.1.0: - version "7.2.0" - resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-7.2.0.tgz#1b7dcdcb32b8138801b3e478ba6a51caa89648da" - integrity sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw== - dependencies: - has-flag "^4.0.0" - -svg-tags@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/svg-tags/-/svg-tags-1.0.0.tgz#58f71cee3bd519b59d4b2a843b6c7de64ac04764" - integrity sha1-WPcc7jvVGbWdSyqEO2x95krAR2Q= - -svgo@^1.0.0: - version "1.3.2" - resolved "https://registry.yarnpkg.com/svgo/-/svgo-1.3.2.tgz#b6dc511c063346c9e415b81e43401145b96d4167" - integrity sha512-yhy/sQYxR5BkC98CY7o31VGsg014AKLEPxdfhora76l36hD9Rdy5NZA/Ocn6yayNPgSamYdtX2rFJdcv07AYVw== - dependencies: - chalk "^2.4.1" - coa "^2.0.2" - css-select "^2.0.0" - css-select-base-adapter "^0.1.1" - css-tree "1.0.0-alpha.37" - csso "^4.0.2" - js-yaml "^3.13.1" - mkdirp "~0.5.1" - object.values "^1.1.0" - sax "~1.2.4" - stable "^0.1.8" - unquote "~1.1.1" - util.promisify "~1.0.0" - -table@^6.0.9: - version "6.7.1" - resolved "https://registry.yarnpkg.com/table/-/table-6.7.1.tgz#ee05592b7143831a8c94f3cee6aae4c1ccef33e2" - integrity sha512-ZGum47Yi6KOOFDE8m223td53ath2enHcYLgOCjGr5ngu8bdIARQk6mN/wRMv4yMRcHnCSnHbCEha4sobQx5yWg== - dependencies: - ajv "^8.0.1" - lodash.clonedeep "^4.5.0" - lodash.truncate "^4.4.2" - slice-ansi "^4.0.0" - string-width "^4.2.0" - strip-ansi "^6.0.0" - -tapable@^1.0.0, tapable@^1.1.3: - version "1.1.3" - resolved "https://registry.yarnpkg.com/tapable/-/tapable-1.1.3.tgz#a1fccc06b58db61fd7a45da2da44f5f3a3e67ba2" - integrity sha512-4WK/bYZmj8xLr+HUCODHGF1ZFzsYffasLUgEiMBY4fgtltdO6B4WJtlSbPaDTLpYTcGVwM2qLnFTICEcNxs3kA== - -temp-dir@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/temp-dir/-/temp-dir-1.0.0.tgz#0a7c0ea26d3a39afa7e0ebea9c1fc0bc4daa011d" - integrity sha1-CnwOom06Oa+n4OvqnB/AvE2qAR0= - -temp-dir@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/temp-dir/-/temp-dir-2.0.0.tgz#bde92b05bdfeb1516e804c9c00ad45177f31321e" - integrity sha512-aoBAniQmmwtcKp/7BzsH8Cxzv8OL736p7v1ihGb5e9DJ9kTwGWHrQrVB5+lfVDzfGrdRzXch+ig7LHaY1JTOrg== - -tempy@^0.3.0: - version "0.3.0" - resolved "https://registry.yarnpkg.com/tempy/-/tempy-0.3.0.tgz#6f6c5b295695a16130996ad5ab01a8bd726e8bf8" - integrity sha512-WrH/pui8YCwmeiAoxV+lpRH9HpRtgBhSR2ViBPgpGb/wnYDzp21R4MN45fsCGvLROvY67o3byhJRYRONJyImVQ== - dependencies: - temp-dir "^1.0.0" - type-fest "^0.3.1" - unique-string "^1.0.0" - -tempy@^0.6.0: - version "0.6.0" - resolved "https://registry.yarnpkg.com/tempy/-/tempy-0.6.0.tgz#65e2c35abc06f1124a97f387b08303442bde59f3" - integrity sha512-G13vtMYPT/J8A4X2SjdtBTphZlrp1gKv6hZiOjw14RCWg6GbHuQBGtjlx75xLbYV/wEc0D7G5K4rxKP/cXk8Bw== - dependencies: - is-stream "^2.0.0" - temp-dir "^2.0.0" - type-fest "^0.16.0" - unique-string "^2.0.0" - -terser-webpack-plugin@^1.4.3, terser-webpack-plugin@^1.4.4: - version "1.4.5" - resolved "https://registry.yarnpkg.com/terser-webpack-plugin/-/terser-webpack-plugin-1.4.5.tgz#a217aefaea330e734ffacb6120ec1fa312d6040b" - integrity sha512-04Rfe496lN8EYruwi6oPQkG0vo8C+HT49X687FZnpPF0qMAIHONI6HEXYPKDOE8e5HjXTyKfqRd/agHtH0kOtw== - dependencies: - cacache "^12.0.2" - find-cache-dir "^2.1.0" - is-wsl "^1.1.0" - schema-utils "^1.0.0" - serialize-javascript "^4.0.0" - source-map "^0.6.1" - terser "^4.1.2" - webpack-sources "^1.4.0" - worker-farm "^1.7.0" - -terser@^4.1.2, terser@^4.6.2: - version "4.8.0" - resolved "https://registry.yarnpkg.com/terser/-/terser-4.8.0.tgz#63056343d7c70bb29f3af665865a46fe03a0df17" - integrity sha512-EAPipTNeWsb/3wLPeup1tVPaXfIaU68xMnVdPafIL1TV05OhASArYyIfFvnvJCNrR2NIOvDVNNTFRa+Re2MWyw== - dependencies: - commander "^2.20.0" - source-map "~0.6.1" - source-map-support "~0.5.12" - -terser@^5.0.0: - version "5.7.0" - resolved "https://registry.yarnpkg.com/terser/-/terser-5.7.0.tgz#a761eeec206bc87b605ab13029876ead938ae693" - integrity sha512-HP5/9hp2UaZt5fYkuhNBR8YyRcT8juw8+uFbAme53iN9hblvKnLUTKkmwJG6ocWpIKf8UK4DoeWG4ty0J6S6/g== - dependencies: - commander "^2.20.0" - source-map "~0.7.2" - source-map-support "~0.5.19" - -text-table@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4" - integrity sha1-f17oI66AUgfACvLfSoTsP8+lcLQ= - -thenify-all@^1.0.0: - version "1.6.0" - resolved "https://registry.yarnpkg.com/thenify-all/-/thenify-all-1.6.0.tgz#1a1918d402d8fc3f98fbf234db0bcc8cc10e9726" - integrity sha1-GhkY1ALY/D+Y+/I02wvMjMEOlyY= - dependencies: - thenify ">= 3.1.0 < 4" - -"thenify@>= 3.1.0 < 4": - version "3.3.1" - resolved "https://registry.yarnpkg.com/thenify/-/thenify-3.3.1.tgz#8932e686a4066038a016dd9e2ca46add9838a95f" - integrity sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw== - dependencies: - any-promise "^1.0.0" - -thread-loader@^2.1.3: - version "2.1.3" - resolved "https://registry.yarnpkg.com/thread-loader/-/thread-loader-2.1.3.tgz#cbd2c139fc2b2de6e9d28f62286ab770c1acbdda" - integrity sha512-wNrVKH2Lcf8ZrWxDF/khdlLlsTMczdcwPA9VEK4c2exlEPynYWxi9op3nPTo5lAnDIkE0rQEB3VBP+4Zncc9Hg== - dependencies: - loader-runner "^2.3.1" - loader-utils "^1.1.0" - neo-async "^2.6.0" - -through2@^2.0.0: - version "2.0.5" - resolved "https://registry.yarnpkg.com/through2/-/through2-2.0.5.tgz#01c1e39eb31d07cb7d03a96a70823260b23132cd" - integrity sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ== - dependencies: - readable-stream "~2.3.6" - xtend "~4.0.1" - -through@^2.3.6: - version "2.3.8" - resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5" - integrity sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU= - -thunky@^1.0.2: - version "1.1.0" - resolved "https://registry.yarnpkg.com/thunky/-/thunky-1.1.0.tgz#5abaf714a9405db0504732bbccd2cedd9ef9537d" - integrity sha512-eHY7nBftgThBqOyHGVN+l8gF0BucP09fMo0oO/Lb0w1OF80dJv+lDVpXG60WMQvkcxAkNybKsrEIE3ZtKGmPrA== - -timers-browserify@^2.0.4: - version "2.0.12" - resolved "https://registry.yarnpkg.com/timers-browserify/-/timers-browserify-2.0.12.tgz#44a45c11fbf407f34f97bccd1577c652361b00ee" - integrity sha512-9phl76Cqm6FhSX9Xe1ZUAMLtm1BLkKj2Qd5ApyWkXzsMRaA7dgr81kf4wJmQf/hAvg8EEyJxDo3du/0KlhPiKQ== - dependencies: - setimmediate "^1.0.4" - -timsort@^0.3.0: - version "0.3.0" - resolved "https://registry.yarnpkg.com/timsort/-/timsort-0.3.0.tgz#405411a8e7e6339fe64db9a234de11dc31e02bd4" - integrity sha1-QFQRqOfmM5/mTbmiNN4R3DHgK9Q= - -tmp@^0.0.33: - version "0.0.33" - resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.0.33.tgz#6d34335889768d21b2bcda0aa277ced3b1bfadf9" - integrity sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw== - dependencies: - os-tmpdir "~1.0.2" - -to-arraybuffer@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz#7d229b1fcc637e466ca081180836a7aabff83f43" - integrity sha1-fSKbH8xjfkZsoIEYCDanqr/4P0M= - -to-fast-properties@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-2.0.0.tgz#dc5e698cbd079265bc73e0377681a4e4e83f616e" - integrity sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4= - -to-object-path@^0.3.0: - version "0.3.0" - resolved "https://registry.yarnpkg.com/to-object-path/-/to-object-path-0.3.0.tgz#297588b7b0e7e0ac08e04e672f85c1f4999e17af" - integrity sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68= - dependencies: - kind-of "^3.0.2" - -to-regex-range@^2.1.0: - version "2.1.1" - resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-2.1.1.tgz#7c80c17b9dfebe599e27367e0d4dd5590141db38" - integrity sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg= - dependencies: - is-number "^3.0.0" - repeat-string "^1.6.1" - -to-regex-range@^5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-5.0.1.tgz#1648c44aae7c8d988a326018ed72f5b4dd0392e4" - integrity sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ== - dependencies: - is-number "^7.0.0" - -to-regex@^3.0.1, to-regex@^3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/to-regex/-/to-regex-3.0.2.tgz#13cfdd9b336552f30b51f33a8ae1b42a7a7599ce" - integrity sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw== - dependencies: - define-property "^2.0.2" - extend-shallow "^3.0.2" - regex-not "^1.0.2" - safe-regex "^1.1.0" - -toidentifier@1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/toidentifier/-/toidentifier-1.0.0.tgz#7e1be3470f1e77948bc43d94a3c8f4d7752ba553" - integrity sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw== - -toposort@^1.0.0: - version "1.0.7" - resolved "https://registry.yarnpkg.com/toposort/-/toposort-1.0.7.tgz#2e68442d9f64ec720b8cc89e6443ac6caa950029" - integrity sha1-LmhELZ9k7HILjMieZEOsbKqVACk= - -tough-cookie@~2.5.0: - version "2.5.0" - resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-2.5.0.tgz#cd9fb2a0aa1d5a12b473bd9fb96fa3dcff65ade2" - integrity sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g== - dependencies: - psl "^1.1.28" - punycode "^2.1.1" - -tr46@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/tr46/-/tr46-1.0.1.tgz#a8b13fd6bfd2489519674ccde55ba3693b706d09" - integrity sha1-qLE/1r/SSJUZZ0zN5VujaTtwbQk= - dependencies: - punycode "^2.1.0" - -tryer@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/tryer/-/tryer-1.0.1.tgz#f2c85406800b9b0f74c9f7465b81eaad241252f8" - integrity sha512-c3zayb8/kWWpycWYg87P71E1S1ZL6b6IJxfb5fvsUgsf0S2MVGaDhDXXjDMpdCpfWXqptc+4mXwmiy1ypXqRAA== - -ts-loader@^6.2.2: - version "6.2.2" - resolved "https://registry.yarnpkg.com/ts-loader/-/ts-loader-6.2.2.tgz#dffa3879b01a1a1e0a4b85e2b8421dc0dfff1c58" - integrity sha512-HDo5kXZCBml3EUPcc7RlZOV/JGlLHwppTLEHb3SHnr5V7NXD4klMEkrhJe5wgRbaWsSXi+Y1SIBN/K9B6zWGWQ== - dependencies: - chalk "^2.3.0" - enhanced-resolve "^4.0.0" - loader-utils "^1.0.2" - micromatch "^4.0.0" - semver "^6.0.0" - -ts-pnp@^1.1.6: - version "1.2.0" - resolved "https://registry.yarnpkg.com/ts-pnp/-/ts-pnp-1.2.0.tgz#a500ad084b0798f1c3071af391e65912c86bca92" - integrity sha512-csd+vJOb/gkzvcCHgTGSChYpy5f1/XKNsmvBGO4JXS+z1v2HobugDz4s1IeFXM3wZB44uczs+eazB5Q/ccdhQw== - -tslib@^1.8.0, tslib@^1.8.1, tslib@^1.9.0: - version "1.14.1" - resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.14.1.tgz#cf2d38bdc34a134bcaf1091c41f6619e2f672d00" - integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg== - -tslint@^5.20.1: - version "5.20.1" - resolved "https://registry.yarnpkg.com/tslint/-/tslint-5.20.1.tgz#e401e8aeda0152bc44dd07e614034f3f80c67b7d" - integrity sha512-EcMxhzCFt8k+/UP5r8waCf/lzmeSyVlqxqMEDQE7rWYiQky8KpIBz1JAoYXfROHrPZ1XXd43q8yQnULOLiBRQg== - dependencies: - "@babel/code-frame" "^7.0.0" - builtin-modules "^1.1.1" - chalk "^2.3.0" - commander "^2.12.1" - diff "^4.0.1" - glob "^7.1.1" - js-yaml "^3.13.1" - minimatch "^3.0.4" - mkdirp "^0.5.1" - resolve "^1.3.2" - semver "^5.3.0" - tslib "^1.8.0" - tsutils "^2.29.0" - -tsutils@^2.29.0: - version "2.29.0" - resolved "https://registry.yarnpkg.com/tsutils/-/tsutils-2.29.0.tgz#32b488501467acbedd4b85498673a0812aca0b99" - integrity sha512-g5JVHCIJwzfISaXpXE1qvNalca5Jwob6FjI4AoPlqMusJ6ftFE7IkkFoMhVLRgK+4Kx3gkzb8UZK5t5yTTvEmA== - dependencies: - tslib "^1.8.1" - -tsutils@^3.21.0: - version "3.21.0" - resolved "https://registry.yarnpkg.com/tsutils/-/tsutils-3.21.0.tgz#b48717d394cea6c1e096983eed58e9d61715b623" - integrity sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA== - dependencies: - tslib "^1.8.1" - -tty-browserify@0.0.0: - version "0.0.0" - resolved "https://registry.yarnpkg.com/tty-browserify/-/tty-browserify-0.0.0.tgz#a157ba402da24e9bf957f9aa69d524eed42901a6" - integrity sha1-oVe6QC2iTpv5V/mqadUk7tQpAaY= - -tunnel-agent@^0.6.0: - version "0.6.0" - resolved "https://registry.yarnpkg.com/tunnel-agent/-/tunnel-agent-0.6.0.tgz#27a5dea06b36b04a0a9966774b290868f0fc40fd" - integrity sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0= - dependencies: - safe-buffer "^5.0.1" - -tweetnacl@^0.14.3, tweetnacl@~0.14.0: - version "0.14.5" - resolved "https://registry.yarnpkg.com/tweetnacl/-/tweetnacl-0.14.5.tgz#5ae68177f192d4456269d108afa93ff8743f4f64" - integrity sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q= - -type-check@^0.4.0, type-check@~0.4.0: - version "0.4.0" - resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.4.0.tgz#07b8203bfa7056c0657050e3ccd2c37730bab8f1" - integrity sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew== - dependencies: - prelude-ls "^1.2.1" - -type-fest@^0.16.0: - version "0.16.0" - resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.16.0.tgz#3240b891a78b0deae910dbeb86553e552a148860" - integrity sha512-eaBzG6MxNzEn9kiwvtre90cXaNLkmadMWa1zQMs3XORCXNbsH/OewwbxC5ia9dCxIxnTAsSxXJaa/p5y8DlvJg== - -type-fest@^0.20.2: - version "0.20.2" - resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.20.2.tgz#1bf207f4b28f91583666cb5fbd327887301cd5f4" - integrity sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ== - -type-fest@^0.21.3: - version "0.21.3" - resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.21.3.tgz#d260a24b0198436e133fa26a524a6d65fa3b2e37" - integrity sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w== - -type-fest@^0.3.1: - version "0.3.1" - resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.3.1.tgz#63d00d204e059474fe5e1b7c011112bbd1dc29e1" - integrity sha512-cUGJnCdr4STbePCgqNFbpVNCepa+kAVohJs1sLhxzdH+gnEoOd8VhbYa7pD3zZYGiURWM2xzEII3fQcRizDkYQ== - -type-fest@^0.6.0: - version "0.6.0" - resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.6.0.tgz#8d2a2370d3df886eb5c90ada1c5bf6188acf838b" - integrity sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg== - -type-is@~1.6.17, type-is@~1.6.18: - version "1.6.18" - resolved "https://registry.yarnpkg.com/type-is/-/type-is-1.6.18.tgz#4e552cd05df09467dcbc4ef739de89f2cf37c131" - integrity sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g== - dependencies: - media-typer "0.3.0" - mime-types "~2.1.24" - -typedarray@^0.0.6: - version "0.0.6" - resolved "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777" - integrity sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c= - -typescript@~4.3.2: - version "4.3.2" - resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.3.2.tgz#399ab18aac45802d6f2498de5054fcbbe716a805" - integrity sha512-zZ4hShnmnoVnAHpVHWpTcxdv7dWP60S2FsydQLV8V5PbS3FifjWFFRiHSWpDJahly88PRyV5teTSLoq4eG7mKw== - -uglify-js@3.4.x: - version "3.4.10" - resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-3.4.10.tgz#9ad9563d8eb3acdfb8d38597d2af1d815f6a755f" - integrity sha512-Y2VsbPVs0FIshJztycsO2SfPk7/KAF/T72qzv9u5EpQ4kB2hQoHlhNQTsNyy6ul7lQtqJN/AoWeS23OzEiEFxw== - dependencies: - commander "~2.19.0" - source-map "~0.6.1" - -unbox-primitive@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/unbox-primitive/-/unbox-primitive-1.0.1.tgz#085e215625ec3162574dc8859abee78a59b14471" - integrity sha512-tZU/3NqK3dA5gpE1KtyiJUrEB0lxnGkMFHptJ7q6ewdZ8s12QrODwNbhIJStmJkd1QDXa1NRA8aF2A1zk/Ypyw== - dependencies: - function-bind "^1.1.1" - has-bigints "^1.0.1" - has-symbols "^1.0.2" - which-boxed-primitive "^1.0.2" - -unicode-canonical-property-names-ecmascript@^1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-1.0.4.tgz#2619800c4c825800efdd8343af7dd9933cbe2818" - integrity sha512-jDrNnXWHd4oHiTZnx/ZG7gtUTVp+gCcTTKr8L0HjlwphROEW3+Him+IpvC+xcJEFegapiMZyZe02CyuOnRmbnQ== - -unicode-match-property-ecmascript@^1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-1.0.4.tgz#8ed2a32569961bce9227d09cd3ffbb8fed5f020c" - integrity sha512-L4Qoh15vTfntsn4P1zqnHulG0LdXgjSO035fEpdtp6YxXhMT51Q6vgM5lYdG/5X3MjS+k/Y9Xw4SFCY9IkR0rg== - dependencies: - unicode-canonical-property-names-ecmascript "^1.0.4" - unicode-property-aliases-ecmascript "^1.0.4" - -unicode-match-property-value-ecmascript@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-1.2.0.tgz#0d91f600eeeb3096aa962b1d6fc88876e64ea531" - integrity sha512-wjuQHGQVofmSJv1uVISKLE5zO2rNGzM/KCYZch/QQvez7C1hUhBIuZ701fYXExuufJFMPhv2SyL8CyoIfMLbIQ== - -unicode-property-aliases-ecmascript@^1.0.4: - version "1.1.0" - resolved "https://registry.yarnpkg.com/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-1.1.0.tgz#dd57a99f6207bedff4628abefb94c50db941c8f4" - integrity sha512-PqSoPh/pWetQ2phoj5RLiaqIk4kCNwoV3CI+LfGmWLKI3rE3kl1h59XpX2BjgDrmbxD9ARtQobPGU1SguCYuQg== - -union-value@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/union-value/-/union-value-1.0.1.tgz#0b6fe7b835aecda61c6ea4d4f02c14221e109847" - integrity sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg== - dependencies: - arr-union "^3.1.0" - get-value "^2.0.6" - is-extendable "^0.1.1" - set-value "^2.0.1" - -uniq@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/uniq/-/uniq-1.0.1.tgz#b31c5ae8254844a3a8281541ce2b04b865a734ff" - integrity sha1-sxxa6CVIRKOoKBVBzisEuGWnNP8= - -uniqs@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/uniqs/-/uniqs-2.0.0.tgz#ffede4b36b25290696e6e165d4a59edb998e6b02" - integrity sha1-/+3ks2slKQaW5uFl1KWe25mOawI= - -unique-filename@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/unique-filename/-/unique-filename-1.1.1.tgz#1d69769369ada0583103a1e6ae87681b56573230" - integrity sha512-Vmp0jIp2ln35UTXuryvjzkjGdRyf9b2lTXuSYUiPmzRcl3FDtYqAwOnTJkAngD9SWhnoJzDbTKwaOrZ+STtxNQ== - dependencies: - unique-slug "^2.0.0" - -unique-slug@^2.0.0: - version "2.0.2" - resolved "https://registry.yarnpkg.com/unique-slug/-/unique-slug-2.0.2.tgz#baabce91083fc64e945b0f3ad613e264f7cd4e6c" - integrity sha512-zoWr9ObaxALD3DOPfjPSqxt4fnZiWblxHIgeWqW8x7UqDzEtHEQLzji2cuJYQFCU6KmoJikOYAZlrTHHebjx2w== - dependencies: - imurmurhash "^0.1.4" - -unique-string@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/unique-string/-/unique-string-1.0.0.tgz#9e1057cca851abb93398f8b33ae187b99caec11a" - integrity sha1-nhBXzKhRq7kzmPizOuGHuZyuwRo= - dependencies: - crypto-random-string "^1.0.0" - -unique-string@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/unique-string/-/unique-string-2.0.0.tgz#39c6451f81afb2749de2b233e3f7c5e8843bd89d" - integrity sha512-uNaeirEPvpZWSgzwsPGtU2zVSTrn/8L5q/IexZmH0eH6SA73CmAA5U4GwORTxQAZs95TAXLNqeLoPPNO5gZfWg== - dependencies: - crypto-random-string "^2.0.0" - -universalify@^0.1.0: - version "0.1.2" - resolved "https://registry.yarnpkg.com/universalify/-/universalify-0.1.2.tgz#b646f69be3942dabcecc9d6639c80dc105efaa66" - integrity sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg== - -universalify@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/universalify/-/universalify-2.0.0.tgz#75a4984efedc4b08975c5aeb73f530d02df25717" - integrity sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ== - -unpipe@1.0.0, unpipe@~1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/unpipe/-/unpipe-1.0.0.tgz#b2bf4ee8514aae6165b4817829d21b2ef49904ec" - integrity sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw= - -unquote@~1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/unquote/-/unquote-1.1.1.tgz#8fded7324ec6e88a0ff8b905e7c098cdc086d544" - integrity sha1-j97XMk7G6IoP+LkF58CYzcCG1UQ= - -unset-value@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/unset-value/-/unset-value-1.0.0.tgz#8376873f7d2335179ffb1e6fc3a8ed0dfc8ab559" - integrity sha1-g3aHP30jNRef+x5vw6jtDfyKtVk= - dependencies: - has-value "^0.3.1" - isobject "^3.0.0" - -upath@^1.1.1, upath@^1.1.2, upath@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/upath/-/upath-1.2.0.tgz#8f66dbcd55a883acdae4408af8b035a5044c1894" - integrity sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg== - -upper-case@^1.1.1: - version "1.1.3" - resolved "https://registry.yarnpkg.com/upper-case/-/upper-case-1.1.3.tgz#f6b4501c2ec4cdd26ba78be7222961de77621598" - integrity sha1-9rRQHC7EzdJrp4vnIilh3ndiFZg= - -uri-js@^4.2.2: - version "4.4.1" - resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.4.1.tgz#9b1a52595225859e55f669d928f88c6c57f2a77e" - integrity sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg== - dependencies: - punycode "^2.1.0" - -urix@^0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/urix/-/urix-0.1.0.tgz#da937f7a62e21fec1fd18d49b35c2935067a6c72" - integrity sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI= - -url-loader@^2.2.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/url-loader/-/url-loader-2.3.0.tgz#e0e2ef658f003efb8ca41b0f3ffbf76bab88658b" - integrity sha512-goSdg8VY+7nPZKUEChZSEtW5gjbS66USIGCeSJ1OVOJ7Yfuh/36YxCwMi5HVEJh6mqUYOoy3NJ0vlOMrWsSHog== - dependencies: - loader-utils "^1.2.3" - mime "^2.4.4" - schema-utils "^2.5.0" - -url-parse@^1.4.3, url-parse@^1.5.1: - version "1.5.1" - resolved "https://registry.yarnpkg.com/url-parse/-/url-parse-1.5.1.tgz#d5fa9890af8a5e1f274a2c98376510f6425f6e3b" - integrity sha512-HOfCOUJt7iSYzEx/UqgtwKRMC6EU91NFhsCHMv9oM03VJcVo2Qrp8T8kI9D7amFf1cu+/3CEhgb3rF9zL7k85Q== - dependencies: - querystringify "^2.1.1" - requires-port "^1.0.0" - -url@^0.11.0: - version "0.11.0" - resolved "https://registry.yarnpkg.com/url/-/url-0.11.0.tgz#3838e97cfc60521eb73c525a8e55bfdd9e2e28f1" - integrity sha1-ODjpfPxgUh63PFJajlW/3Z4uKPE= - dependencies: - punycode "1.3.2" - querystring "0.2.0" - -use@^3.1.0: - version "3.1.1" - resolved "https://registry.yarnpkg.com/use/-/use-3.1.1.tgz#d50c8cac79a19fbc20f2911f56eb973f4e10070f" - integrity sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ== - -util-deprecate@^1.0.1, util-deprecate@^1.0.2, util-deprecate@~1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" - integrity sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8= - -util.promisify@1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/util.promisify/-/util.promisify-1.0.0.tgz#440f7165a459c9a16dc145eb8e72f35687097030" - integrity sha512-i+6qA2MPhvoKLuxnJNpXAGhg7HphQOSUq2LKMZD0m15EiskXUkMvKdF4Uui0WYeCUGea+o2cw/ZuwehtfsrNkA== - dependencies: - define-properties "^1.1.2" - object.getownpropertydescriptors "^2.0.3" - -util.promisify@~1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/util.promisify/-/util.promisify-1.0.1.tgz#6baf7774b80eeb0f7520d8b81d07982a59abbaee" - integrity sha512-g9JpC/3He3bm38zsLupWryXHoEcS22YHthuPQSJdMy6KNrzIRzWqcsHzD/WUnqe45whVou4VIsPew37DoXWNrA== - dependencies: - define-properties "^1.1.3" - es-abstract "^1.17.2" - has-symbols "^1.0.1" - object.getownpropertydescriptors "^2.1.0" - -util@0.10.3: - version "0.10.3" - resolved "https://registry.yarnpkg.com/util/-/util-0.10.3.tgz#7afb1afe50805246489e3db7fe0ed379336ac0f9" - integrity sha1-evsa/lCAUkZInj23/g7TeTNqwPk= - dependencies: - inherits "2.0.1" - -util@^0.11.0: - version "0.11.1" - resolved "https://registry.yarnpkg.com/util/-/util-0.11.1.tgz#3236733720ec64bb27f6e26f421aaa2e1b588d61" - integrity sha512-HShAsny+zS2TZfaXxD9tYj4HQGlBezXZMZuM/S5PKLLoZkShZiGk9o5CzukI1LVHZvjdvZ2Sj1aW/Ndn2NB/HQ== - dependencies: - inherits "2.0.3" - -utila@~0.4: - version "0.4.0" - resolved "https://registry.yarnpkg.com/utila/-/utila-0.4.0.tgz#8a16a05d445657a3aea5eecc5b12a4fa5379772c" - integrity sha1-ihagXURWV6Oupe7MWxKk+lN5dyw= - -utils-merge@1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/utils-merge/-/utils-merge-1.0.1.tgz#9f95710f50a267947b2ccc124741c1028427e713" - integrity sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM= - -uuid@^3.3.2, uuid@^3.4.0: - version "3.4.0" - resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.4.0.tgz#b23e4358afa8a202fe7a100af1f5f883f02007ee" - integrity sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A== - -v8-compile-cache@^2.0.3: - version "2.3.0" - resolved "https://registry.yarnpkg.com/v8-compile-cache/-/v8-compile-cache-2.3.0.tgz#2de19618c66dc247dcfb6f99338035d8245a2cee" - integrity sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA== - -validate-npm-package-license@^3.0.1: - version "3.0.4" - resolved "https://registry.yarnpkg.com/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz#fc91f6b9c7ba15c857f4cb2c5defeec39d4f410a" - integrity sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew== - dependencies: - spdx-correct "^3.0.0" - spdx-expression-parse "^3.0.0" - -vary@~1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/vary/-/vary-1.1.2.tgz#2299f02c6ded30d4a5961b0b9f74524a18f634fc" - integrity sha1-IpnwLG3tMNSllhsLn3RSShj2NPw= - -vendors@^1.0.0: - version "1.0.4" - resolved "https://registry.yarnpkg.com/vendors/-/vendors-1.0.4.tgz#e2b800a53e7a29b93506c3cf41100d16c4c4ad8e" - integrity sha512-/juG65kTL4Cy2su4P8HjtkTxk6VmJDiOPBufWniqQ6wknac6jNiXS9vU+hO3wgusiyqWlzTbVHi0dyJqRONg3w== - -verror@1.10.0: - version "1.10.0" - resolved "https://registry.yarnpkg.com/verror/-/verror-1.10.0.tgz#3a105ca17053af55d6e270c1f8288682e18da400" - integrity sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA= - dependencies: - assert-plus "^1.0.0" - core-util-is "1.0.2" - extsprintf "^1.2.0" - -vm-browserify@^1.0.1: - version "1.1.2" - resolved "https://registry.yarnpkg.com/vm-browserify/-/vm-browserify-1.1.2.tgz#78641c488b8e6ca91a75f511e7a3b32a86e5dda0" - integrity sha512-2ham8XPWTONajOR0ohOKOHXkm3+gaBmGut3SRuu75xLd/RRaY6vqgh8NBYYk7+RW3u5AtzPQZG8F10LHkl0lAQ== - -vue-class-component@^7.2.3: - version "7.2.6" - resolved "https://registry.yarnpkg.com/vue-class-component/-/vue-class-component-7.2.6.tgz#8471e037b8e4762f5a464686e19e5afc708502e4" - integrity sha512-+eaQXVrAm/LldalI272PpDe3+i4mPis0ORiMYxF6Ae4hyuCh15W8Idet7wPUEs4N4YptgFHGys4UrgNQOMyO6w== - -vue-cli-plugin-i18n@^2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/vue-cli-plugin-i18n/-/vue-cli-plugin-i18n-2.1.1.tgz#aa2579cae810ca641662aee33c13b28f11f12d31" - integrity sha512-78m6lpAJKygkrgP+Ubp7eU59ib62uy6i3seJ4VNXG5txraq21saGhfl3oacXMiFE9K4TbVQl0qCw3vAh8gSe9A== - dependencies: - debug "^4.3.0" - deepmerge "^4.2.0" - dotenv "^8.2.0" - flat "^5.0.0" - rimraf "^3.0.0" - vue "^2.6.11" - vue-i18n "^8.17.0" - vue-i18n-extract "1.0.2" - -vue-cookies@^1.7.4: - version "1.7.4" - resolved "https://registry.yarnpkg.com/vue-cookies/-/vue-cookies-1.7.4.tgz#d241d0a0431da0795837651d10b4d73e7c8d3e8d" - integrity sha512-mOS5Btr8V9zvAtkmQ7/TfqJIropOx7etDAgBywPCmHjvfJl2gFbH2XgoMghleLoyyMTi5eaJss0mPN7arMoslA== - -vue-eslint-parser@^7.0.0, vue-eslint-parser@^7.6.0: - version "7.6.0" - resolved "https://registry.yarnpkg.com/vue-eslint-parser/-/vue-eslint-parser-7.6.0.tgz#01ea1a2932f581ff244336565d712801f8f72561" - integrity sha512-QXxqH8ZevBrtiZMZK0LpwaMfevQi9UL7lY6Kcp+ogWHC88AuwUPwwCIzkOUc1LR4XsYAt/F9yHXAB/QoD17QXA== - dependencies: - debug "^4.1.1" - eslint-scope "^5.0.0" - eslint-visitor-keys "^1.1.0" - espree "^6.2.1" - esquery "^1.4.0" - lodash "^4.17.15" - -vue-functional-data-merge@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/vue-functional-data-merge/-/vue-functional-data-merge-3.1.0.tgz#08a7797583b7f35680587f8a1d51d729aa1dc657" - integrity sha512-leT4kdJVQyeZNY1kmnS1xiUlQ9z1B/kdBFCILIjYYQDqZgLqCLa0UhjSSeRX6c3mUe6U5qYeM8LrEqkHJ1B4LA== - -vue-hot-reload-api@^2.3.0: - version "2.3.4" - resolved "https://registry.yarnpkg.com/vue-hot-reload-api/-/vue-hot-reload-api-2.3.4.tgz#532955cc1eb208a3d990b3a9f9a70574657e08f2" - integrity sha512-BXq3jwIagosjgNVae6tkHzzIk6a8MHFtzAdwhnV5VlvPTFxDCvIttgSiHWjdGoTJvXtmRu5HacExfdarRcFhog== - -vue-i18n-extract@1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/vue-i18n-extract/-/vue-i18n-extract-1.0.2.tgz#0a136e12d1634d6799e187aad81a7003d02f67a5" - integrity sha512-+zwDKvle4KcfloXZnj5hF01ViKDiFr5RMx5507D7oyDXpSleRpekF5YHgZa/+Ra6Go68//z0Nya58J9tKFsCjw== - dependencies: - cli-table3 "^0.5.1" - dot-object "^1.7.1" - esm "^3.2.13" - glob "^7.1.3" - is-valid-glob "^1.0.0" - yargs "^13.2.2" - -vue-i18n@^8.17.0, vue-i18n@^8.24.4: - version "8.24.4" - resolved "https://registry.yarnpkg.com/vue-i18n/-/vue-i18n-8.24.4.tgz#b158614c1df7db183d9cadddbb73e1d540269492" - integrity sha512-RZE94WUAGxEiBAANxQ0pptbRwDkNKNSXl3fnJslpFOxVMF6UkUtMDSuYGuW2blDrVgweIXVpethOVkYoNNT9xw== - -"vue-loader-v16@npm:vue-loader@^16.1.0": - version "16.2.0" - resolved "https://registry.yarnpkg.com/vue-loader/-/vue-loader-16.2.0.tgz#046a53308dd47e58efe20ddec1edec027ce3b46e" - integrity sha512-TitGhqSQ61RJljMmhIGvfWzJ2zk9m1Qug049Ugml6QP3t0e95o0XJjk29roNEiPKJQBEi8Ord5hFuSuELzSp8Q== - dependencies: - chalk "^4.1.0" - hash-sum "^2.0.0" - loader-utils "^2.0.0" - -vue-loader@^15.9.2: - version "15.9.7" - resolved "https://registry.yarnpkg.com/vue-loader/-/vue-loader-15.9.7.tgz#15b05775c3e0c38407679393c2ce6df673b01044" - integrity sha512-qzlsbLV1HKEMf19IqCJqdNvFJRCI58WNbS6XbPqK13MrLz65es75w392MSQ5TsARAfIjUw+ATm3vlCXUJSOH9Q== - dependencies: - "@vue/component-compiler-utils" "^3.1.0" - hash-sum "^1.0.2" - loader-utils "^1.1.0" - vue-hot-reload-api "^2.3.0" - vue-style-loader "^4.1.0" - -vue-multiselect@^2.1.6: - version "2.1.6" - resolved "https://registry.yarnpkg.com/vue-multiselect/-/vue-multiselect-2.1.6.tgz#5be5d811a224804a15c43a4edbb7485028a89c7f" - integrity sha512-s7jmZPlm9FeueJg1RwJtnE9KNPtME/7C8uRWSfp9/yEN4M8XcS/d+bddoyVwVnvFyRh9msFo0HWeW0vTL8Qv+w== - -vue-property-decorator@^9.1.2: - version "9.1.2" - resolved "https://registry.yarnpkg.com/vue-property-decorator/-/vue-property-decorator-9.1.2.tgz#266a2eac61ba6527e2e68a6933cfb98fddab5457" - integrity sha512-xYA8MkZynPBGd/w5QFJ2d/NM0z/YeegMqYTphy7NJQXbZcuU6FC6AOdUAcy4SXP+YnkerC6AfH+ldg7PDk9ESQ== - -vue-style-loader@^4.1.0, vue-style-loader@^4.1.2: - version "4.1.3" - resolved "https://registry.yarnpkg.com/vue-style-loader/-/vue-style-loader-4.1.3.tgz#6d55863a51fa757ab24e89d9371465072aa7bc35" - integrity sha512-sFuh0xfbtpRlKfm39ss/ikqs9AbKCoXZBpHeVZ8Tx650o0k0q/YCM7FRvigtxpACezfq6af+a7JeqVTWvncqDg== - dependencies: - hash-sum "^1.0.2" - loader-utils "^1.0.2" - -vue-template-compiler@^2.6.14: - version "2.6.14" - resolved "https://registry.yarnpkg.com/vue-template-compiler/-/vue-template-compiler-2.6.14.tgz#a2f0e7d985670d42c9c9ee0d044fed7690f4f763" - integrity sha512-ODQS1SyMbjKoO1JBJZojSw6FE4qnh9rIpUZn2EUT86FKizx9uH5z6uXiIrm4/Nb/gwxTi/o17ZDEGWAXHvtC7g== - dependencies: - de-indent "^1.0.2" - he "^1.1.0" - -vue-template-es2015-compiler@^1.9.0: - version "1.9.1" - resolved "https://registry.yarnpkg.com/vue-template-es2015-compiler/-/vue-template-es2015-compiler-1.9.1.tgz#1ee3bc9a16ecbf5118be334bb15f9c46f82f5825" - integrity sha512-4gDntzrifFnCEvyoO8PqyJDmguXgVPxKiIxrBKjIowvL9l+N66196+72XVYR8BBf1Uv1Fgt3bGevJ+sEmxfZzw== - -vue@^2.6.11, vue@^2.6.14: - version "2.6.14" - resolved "https://registry.yarnpkg.com/vue/-/vue-2.6.14.tgz#e51aa5250250d569a3fbad3a8a5a687d6036e235" - integrity sha512-x2284lgYvjOMj3Za7kqzRcUSxBboHqtgRE2zlos1qWaOye5yUmHn42LB1250NJBLRwEcdrB0JRwyPTEPhfQjiQ== - -vuedraggable@^2.24.3: - version "2.24.3" - resolved "https://registry.yarnpkg.com/vuedraggable/-/vuedraggable-2.24.3.tgz#43c93849b746a24ce503e123d5b259c701ba0d19" - integrity sha512-6/HDXi92GzB+Hcs9fC6PAAozK1RLt1ewPTLjK0anTYguXLAeySDmcnqE8IC0xa7shvSzRjQXq3/+dsZ7ETGF3g== - dependencies: - sortablejs "1.10.2" - -vuex@^3.6.0: - version "3.6.2" - resolved "https://registry.yarnpkg.com/vuex/-/vuex-3.6.2.tgz#236bc086a870c3ae79946f107f16de59d5895e71" - integrity sha512-ETW44IqCgBpVomy520DT5jf8n0zoCac+sxWnn+hMe/CzaSejb/eVw2YToiXYX+Ex/AuHHia28vWTq4goAexFbw== - -watchpack-chokidar2@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/watchpack-chokidar2/-/watchpack-chokidar2-2.0.1.tgz#38500072ee6ece66f3769936950ea1771be1c957" - integrity sha512-nCFfBIPKr5Sh61s4LPpy1Wtfi0HE8isJ3d2Yb5/Ppw2P2B/3eVSEBjKfN0fmHJSK14+31KwMKmcrzs2GM4P0Ww== - dependencies: - chokidar "^2.1.8" - -watchpack@^1.7.4: - version "1.7.5" - resolved "https://registry.yarnpkg.com/watchpack/-/watchpack-1.7.5.tgz#1267e6c55e0b9b5be44c2023aed5437a2c26c453" - integrity sha512-9P3MWk6SrKjHsGkLT2KHXdQ/9SNkyoJbabxnKOoJepsvJjJG8uYTR3yTPxPQvNDI3w4Nz1xnE0TLHK4RIVe/MQ== - dependencies: - graceful-fs "^4.1.2" - neo-async "^2.5.0" - optionalDependencies: - chokidar "^3.4.1" - watchpack-chokidar2 "^2.0.1" - -wbuf@^1.1.0, wbuf@^1.7.3: - version "1.7.3" - resolved "https://registry.yarnpkg.com/wbuf/-/wbuf-1.7.3.tgz#c1d8d149316d3ea852848895cb6a0bfe887b87df" - integrity sha512-O84QOnr0icsbFGLS0O3bI5FswxzRr8/gHwWkDlQFskhSPryQXvrTMxjxGP4+iWYoauLoBvfDpkrOauZ+0iZpDA== - dependencies: - minimalistic-assert "^1.0.0" - -wcwidth@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/wcwidth/-/wcwidth-1.0.1.tgz#f0b0dcf915bc5ff1528afadb2c0e17b532da2fe8" - integrity sha1-8LDc+RW8X/FSivrbLA4XtTLaL+g= - dependencies: - defaults "^1.0.3" - -webidl-conversions@^4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-4.0.2.tgz#a855980b1f0b6b359ba1d5d9fb39ae941faa63ad" - integrity sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg== - -webpack-bundle-analyzer@^3.8.0: - version "3.9.0" - resolved "https://registry.yarnpkg.com/webpack-bundle-analyzer/-/webpack-bundle-analyzer-3.9.0.tgz#f6f94db108fb574e415ad313de41a2707d33ef3c" - integrity sha512-Ob8amZfCm3rMB1ScjQVlbYYUEJyEjdEtQ92jqiFUYt5VkEeO2v5UMbv49P/gnmCZm3A6yaFQzCBvpZqN4MUsdA== - dependencies: - acorn "^7.1.1" - acorn-walk "^7.1.1" - bfj "^6.1.1" - chalk "^2.4.1" - commander "^2.18.0" - ejs "^2.6.1" - express "^4.16.3" - filesize "^3.6.1" - gzip-size "^5.0.0" - lodash "^4.17.19" - mkdirp "^0.5.1" - opener "^1.5.1" - ws "^6.0.0" - -webpack-bundle-tracker@1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/webpack-bundle-tracker/-/webpack-bundle-tracker-1.1.0.tgz#87c6f2cc89f09337bcc19127a0976a1a8682c5d2" - integrity sha512-cw8HSS/Pgim3wWoaYDbxHlYJ78W/tKJCJWxrWhJ7UsSOQLavzGSUlG5VJsdkbREzwmZcC9F2Gran492kSdkTDQ== - dependencies: - lodash.assign "^4.2.0" - lodash.defaults "^4.2.0" - lodash.foreach "^4.5.0" - lodash.get "^4.4.2" - lodash.merge "^4.6.2" - strip-ansi "^6.0.0" - -webpack-chain@^6.4.0: - version "6.5.1" - resolved "https://registry.yarnpkg.com/webpack-chain/-/webpack-chain-6.5.1.tgz#4f27284cbbb637e3c8fbdef43eef588d4d861206" - integrity sha512-7doO/SRtLu8q5WM0s7vPKPWX580qhi0/yBHkOxNkv50f6qB76Zy9o2wRTrrPULqYTvQlVHuvbA8v+G5ayuUDsA== - dependencies: - deepmerge "^1.5.2" - javascript-stringify "^2.0.1" - -webpack-dev-middleware@^3.7.2: - version "3.7.3" - resolved "https://registry.yarnpkg.com/webpack-dev-middleware/-/webpack-dev-middleware-3.7.3.tgz#0639372b143262e2b84ab95d3b91a7597061c2c5" - integrity sha512-djelc/zGiz9nZj/U7PTBi2ViorGJXEWo/3ltkPbDyxCXhhEXkW0ce99falaok4TPj+AsxLiXJR0EBOb0zh9fKQ== - dependencies: - memory-fs "^0.4.1" - mime "^2.4.4" - mkdirp "^0.5.1" - range-parser "^1.2.1" - webpack-log "^2.0.0" - -webpack-dev-server@^3.11.0: - version "3.11.2" - resolved "https://registry.yarnpkg.com/webpack-dev-server/-/webpack-dev-server-3.11.2.tgz#695ebced76a4929f0d5de7fd73fafe185fe33708" - integrity sha512-A80BkuHRQfCiNtGBS1EMf2ChTUs0x+B3wGDFmOeT4rmJOHhHTCH2naNxIHhmkr0/UillP4U3yeIyv1pNp+QDLQ== - dependencies: - ansi-html "0.0.7" - bonjour "^3.5.0" - chokidar "^2.1.8" - compression "^1.7.4" - connect-history-api-fallback "^1.6.0" - debug "^4.1.1" - del "^4.1.1" - express "^4.17.1" - html-entities "^1.3.1" - http-proxy-middleware "0.19.1" - import-local "^2.0.0" - internal-ip "^4.3.0" - ip "^1.1.5" - is-absolute-url "^3.0.3" - killable "^1.0.1" - loglevel "^1.6.8" - opn "^5.5.0" - p-retry "^3.0.1" - portfinder "^1.0.26" - schema-utils "^1.0.0" - selfsigned "^1.10.8" - semver "^6.3.0" - serve-index "^1.9.1" - sockjs "^0.3.21" - sockjs-client "^1.5.0" - spdy "^4.0.2" - strip-ansi "^3.0.1" - supports-color "^6.1.0" - url "^0.11.0" - webpack-dev-middleware "^3.7.2" - webpack-log "^2.0.0" - ws "^6.2.1" - yargs "^13.3.2" - -webpack-log@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/webpack-log/-/webpack-log-2.0.0.tgz#5b7928e0637593f119d32f6227c1e0ac31e1b47f" - integrity sha512-cX8G2vR/85UYG59FgkoMamwHUIkSSlV3bBMRsbxVXVUk2j6NleCKjQ/WE9eYg9WY4w25O9w8wKP4rzNZFmUcUg== - dependencies: - ansi-colors "^3.0.0" - uuid "^3.3.2" - -webpack-merge@^4.2.2: - version "4.2.2" - resolved "https://registry.yarnpkg.com/webpack-merge/-/webpack-merge-4.2.2.tgz#a27c52ea783d1398afd2087f547d7b9d2f43634d" - integrity sha512-TUE1UGoTX2Cd42j3krGYqObZbOD+xF7u28WB7tfUordytSjbWTIjK/8V0amkBfTYN4/pB/GIDlJZZ657BGG19g== - dependencies: - lodash "^4.17.15" - -webpack-sources@^1.1.0, webpack-sources@^1.3.0, webpack-sources@^1.4.0, webpack-sources@^1.4.1, webpack-sources@^1.4.3: - version "1.4.3" - resolved "https://registry.yarnpkg.com/webpack-sources/-/webpack-sources-1.4.3.tgz#eedd8ec0b928fbf1cbfe994e22d2d890f330a933" - integrity sha512-lgTS3Xhv1lCOKo7SA5TjKXMjpSM4sBjNV5+q2bqesbSPs5FjGmU6jjtBSkX9b4qW87vDIsCIlUPOEhbZrMdjeQ== - dependencies: - source-list-map "^2.0.0" - source-map "~0.6.1" - -webpack@^4.0.0: - version "4.46.0" - resolved "https://registry.yarnpkg.com/webpack/-/webpack-4.46.0.tgz#bf9b4404ea20a073605e0a011d188d77cb6ad542" - integrity sha512-6jJuJjg8znb/xRItk7bkT0+Q7AHCYjjFnvKIWQPkNIOyRqoCGvkOs0ipeQzrqz4l5FtN5ZI/ukEHroeX/o1/5Q== - dependencies: - "@webassemblyjs/ast" "1.9.0" - "@webassemblyjs/helper-module-context" "1.9.0" - "@webassemblyjs/wasm-edit" "1.9.0" - "@webassemblyjs/wasm-parser" "1.9.0" - acorn "^6.4.1" - ajv "^6.10.2" - ajv-keywords "^3.4.1" - chrome-trace-event "^1.0.2" - enhanced-resolve "^4.5.0" - eslint-scope "^4.0.3" - json-parse-better-errors "^1.0.2" - loader-runner "^2.4.0" - loader-utils "^1.2.3" - memory-fs "^0.4.1" - micromatch "^3.1.10" - mkdirp "^0.5.3" - neo-async "^2.6.1" - node-libs-browser "^2.2.1" - schema-utils "^1.0.0" - tapable "^1.1.3" - terser-webpack-plugin "^1.4.3" - watchpack "^1.7.4" - webpack-sources "^1.4.1" - -websocket-driver@>=0.5.1, websocket-driver@^0.7.4: - version "0.7.4" - resolved "https://registry.yarnpkg.com/websocket-driver/-/websocket-driver-0.7.4.tgz#89ad5295bbf64b480abcba31e4953aca706f5760" - integrity sha512-b17KeDIQVjvb0ssuSDF2cYXSg2iztliJ4B9WdsuB6J952qCPKmnVq4DyW5motImXHDC1cBT/1UezrJVsKw5zjg== - dependencies: - http-parser-js ">=0.5.1" - safe-buffer ">=5.1.0" - websocket-extensions ">=0.1.1" - -websocket-extensions@>=0.1.1: - version "0.1.4" - resolved "https://registry.yarnpkg.com/websocket-extensions/-/websocket-extensions-0.1.4.tgz#7f8473bc839dfd87608adb95d7eb075211578a42" - integrity sha512-OqedPIGOfsDlo31UNwYbCFMSaO9m9G/0faIHj5/dZFDMFqPTcx6UwqyOy3COEaEOg/9VsGIpdqn62W5KhoKSpg== - -whatwg-url@^7.0.0: - version "7.1.0" - resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-7.1.0.tgz#c2c492f1eca612988efd3d2266be1b9fc6170d06" - integrity sha512-WUu7Rg1DroM7oQvGWfOiAK21n74Gg+T4elXEQYkOhtyLeWiJFoOGLXPKI/9gzIie9CtwVLm8wtw6YJdKyxSjeg== - dependencies: - lodash.sortby "^4.7.0" - tr46 "^1.0.1" - webidl-conversions "^4.0.2" - -which-boxed-primitive@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz#13757bc89b209b049fe5d86430e21cf40a89a8e6" - integrity sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg== - dependencies: - is-bigint "^1.0.1" - is-boolean-object "^1.1.0" - is-number-object "^1.0.4" - is-string "^1.0.5" - is-symbol "^1.0.3" - -which-module@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/which-module/-/which-module-2.0.0.tgz#d9ef07dce77b9902b8a3a8fa4b31c3e3f7e6e87a" - integrity sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho= - -which@^1.2.9: - version "1.3.1" - resolved "https://registry.yarnpkg.com/which/-/which-1.3.1.tgz#a45043d54f5805316da8d62f9f50918d3da70b0a" - integrity sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ== - dependencies: - isexe "^2.0.0" - -which@^2.0.1: - version "2.0.2" - resolved "https://registry.yarnpkg.com/which/-/which-2.0.2.tgz#7c6a8dd0a636a0327e10b59c9286eee93f3f51b1" - integrity sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA== - dependencies: - isexe "^2.0.0" - -word-wrap@^1.2.3: - version "1.2.3" - resolved "https://registry.yarnpkg.com/word-wrap/-/word-wrap-1.2.3.tgz#610636f6b1f703891bd34771ccb17fb93b47079c" - integrity sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ== - -workbox-background-sync@^5.1.4: - version "5.1.4" - resolved "https://registry.yarnpkg.com/workbox-background-sync/-/workbox-background-sync-5.1.4.tgz#5ae0bbd455f4e9c319e8d827c055bb86c894fd12" - integrity sha512-AH6x5pYq4vwQvfRDWH+vfOePfPIYQ00nCEB7dJRU1e0n9+9HMRyvI63FlDvtFT2AvXVRsXvUt7DNMEToyJLpSA== - dependencies: - workbox-core "^5.1.4" - -workbox-background-sync@^6.1.5: - version "6.1.5" - resolved "https://registry.yarnpkg.com/workbox-background-sync/-/workbox-background-sync-6.1.5.tgz#83904fc6487722db98ed9b19eaa39ab5f826c33e" - integrity sha512-VbUmPLsdz+sLzuNxHvMylzyRTiM4q+q7rwLBk3p2mtRL5NZozI8j/KgoGbno96vs84jx4b9zCZMEOIKEUTPf6w== - dependencies: - workbox-core "^6.1.5" - -workbox-broadcast-update@^5.1.4: - version "5.1.4" - resolved "https://registry.yarnpkg.com/workbox-broadcast-update/-/workbox-broadcast-update-5.1.4.tgz#0eeb89170ddca7f6914fa3523fb14462891f2cfc" - integrity sha512-HTyTWkqXvHRuqY73XrwvXPud/FN6x3ROzkfFPsRjtw/kGZuZkPzfeH531qdUGfhtwjmtO/ZzXcWErqVzJNdXaA== - dependencies: - workbox-core "^5.1.4" - -workbox-broadcast-update@^6.1.5: - version "6.1.5" - resolved "https://registry.yarnpkg.com/workbox-broadcast-update/-/workbox-broadcast-update-6.1.5.tgz#49a2a4cc50c7b1cfe86bed6d8f15edf1891d1e79" - integrity sha512-zGrTTs+n4wHpYtqYMqBg6kl/x5j1UrczGCQnODSHTxIDV8GXLb/GtA1BCZdysNxpMmdVSeLmTcgIYAAqWFamrA== - dependencies: - workbox-core "^6.1.5" - -workbox-build@^5.1.4: - version "5.1.4" - resolved "https://registry.yarnpkg.com/workbox-build/-/workbox-build-5.1.4.tgz#23d17ed5c32060c363030c8823b39d0eabf4c8c7" - integrity sha512-xUcZn6SYU8usjOlfLb9Y2/f86Gdo+fy1fXgH8tJHjxgpo53VVsqRX0lUDw8/JuyzNmXuo8vXX14pXX2oIm9Bow== - dependencies: - "@babel/core" "^7.8.4" - "@babel/preset-env" "^7.8.4" - "@babel/runtime" "^7.8.4" - "@hapi/joi" "^15.1.0" - "@rollup/plugin-node-resolve" "^7.1.1" - "@rollup/plugin-replace" "^2.3.1" - "@surma/rollup-plugin-off-main-thread" "^1.1.1" - common-tags "^1.8.0" - fast-json-stable-stringify "^2.1.0" - fs-extra "^8.1.0" - glob "^7.1.6" - lodash.template "^4.5.0" - pretty-bytes "^5.3.0" - rollup "^1.31.1" - rollup-plugin-babel "^4.3.3" - rollup-plugin-terser "^5.3.1" - source-map "^0.7.3" - source-map-url "^0.4.0" - stringify-object "^3.3.0" - strip-comments "^1.0.2" - tempy "^0.3.0" - upath "^1.2.0" - workbox-background-sync "^5.1.4" - workbox-broadcast-update "^5.1.4" - workbox-cacheable-response "^5.1.4" - workbox-core "^5.1.4" - workbox-expiration "^5.1.4" - workbox-google-analytics "^5.1.4" - workbox-navigation-preload "^5.1.4" - workbox-precaching "^5.1.4" - workbox-range-requests "^5.1.4" - workbox-routing "^5.1.4" - workbox-strategies "^5.1.4" - workbox-streams "^5.1.4" - workbox-sw "^5.1.4" - workbox-window "^5.1.4" - -workbox-build@^6.1.5: - version "6.1.5" - resolved "https://registry.yarnpkg.com/workbox-build/-/workbox-build-6.1.5.tgz#31c3034a38527f1f7697335c15af9c5593168841" - integrity sha512-P+fakR5QFVqJN9l9xHVXtmafga72gh9I+jM3A9HiB/6UNRmOAejXnDgD+RMegOHgQHPwnB44TalMToFaXKWIyA== - dependencies: - "@babel/core" "^7.11.1" - "@babel/preset-env" "^7.11.0" - "@babel/runtime" "^7.11.2" - "@hapi/joi" "^16.1.8" - "@rollup/plugin-babel" "^5.2.0" - "@rollup/plugin-node-resolve" "^11.2.1" - "@rollup/plugin-replace" "^2.4.1" - "@surma/rollup-plugin-off-main-thread" "^1.4.1" - common-tags "^1.8.0" - fast-json-stable-stringify "^2.1.0" - fs-extra "^9.0.1" - glob "^7.1.6" - lodash "^4.17.20" - pretty-bytes "^5.3.0" - rollup "^2.43.1" - rollup-plugin-terser "^7.0.0" - source-map "^0.8.0-beta.0" - source-map-url "^0.4.0" - stringify-object "^3.3.0" - strip-comments "^2.0.1" - tempy "^0.6.0" - upath "^1.2.0" - workbox-background-sync "^6.1.5" - workbox-broadcast-update "^6.1.5" - workbox-cacheable-response "^6.1.5" - workbox-core "^6.1.5" - workbox-expiration "^6.1.5" - workbox-google-analytics "^6.1.5" - workbox-navigation-preload "^6.1.5" - workbox-precaching "^6.1.5" - workbox-range-requests "^6.1.5" - workbox-recipes "^6.1.5" - workbox-routing "^6.1.5" - workbox-strategies "^6.1.5" - workbox-streams "^6.1.5" - workbox-sw "^6.1.5" - workbox-window "^6.1.5" - -workbox-cacheable-response@^5.1.4: - version "5.1.4" - resolved "https://registry.yarnpkg.com/workbox-cacheable-response/-/workbox-cacheable-response-5.1.4.tgz#9ff26e1366214bdd05cf5a43da9305b274078a54" - integrity sha512-0bfvMZs0Of1S5cdswfQK0BXt6ulU5kVD4lwer2CeI+03czHprXR3V4Y8lPTooamn7eHP8Iywi5QjyAMjw0qauA== - dependencies: - workbox-core "^5.1.4" - -workbox-cacheable-response@^6.1.5: - version "6.1.5" - resolved "https://registry.yarnpkg.com/workbox-cacheable-response/-/workbox-cacheable-response-6.1.5.tgz#2772e09a333cba47b0923ed91fd022416b69e75c" - integrity sha512-x8DC71lO/JCgiaJ194l9le8wc8lFPLgUpDkLhp2si7mXV6S/wZO+8Osvw1LLgYa8YYTWGbhbFhFTXIkEMknIIA== - dependencies: - workbox-core "^6.1.5" - -workbox-core@^5.1.4: - version "5.1.4" - resolved "https://registry.yarnpkg.com/workbox-core/-/workbox-core-5.1.4.tgz#8bbfb2362ecdff30e25d123c82c79ac65d9264f4" - integrity sha512-+4iRQan/1D8I81nR2L5vcbaaFskZC2CL17TLbvWVzQ4qiF/ytOGF6XeV54pVxAvKUtkLANhk8TyIUMtiMw2oDg== - -workbox-core@^6.1.5: - version "6.1.5" - resolved "https://registry.yarnpkg.com/workbox-core/-/workbox-core-6.1.5.tgz#424ff600e2c5448b14ebd58b2f5ac8ed91b73fb9" - integrity sha512-9SOEle7YcJzg3njC0xMSmrPIiFjfsFm9WjwGd5enXmI8Lwk8wLdy63B0nzu5LXoibEmS9k+aWF8EzaKtOWjNSA== - -workbox-expiration@^5.1.4: - version "5.1.4" - resolved "https://registry.yarnpkg.com/workbox-expiration/-/workbox-expiration-5.1.4.tgz#92b5df461e8126114943a3b15c55e4ecb920b163" - integrity sha512-oDO/5iC65h2Eq7jctAv858W2+CeRW5e0jZBMNRXpzp0ZPvuT6GblUiHnAsC5W5lANs1QS9atVOm4ifrBiYY7AQ== - dependencies: - workbox-core "^5.1.4" - -workbox-expiration@^6.0.2, workbox-expiration@^6.1.5: - version "6.1.5" - resolved "https://registry.yarnpkg.com/workbox-expiration/-/workbox-expiration-6.1.5.tgz#a62a4ac953bb654aa969ede13507ca5bd154adc2" - integrity sha512-6cN+FVbh8fNq56LFKPMchGNKCJeyboHsDuGBqmhDUPvD4uDjsegQpDQzn52VaE0cpywbSIsDF/BSq9E9Yjh5oQ== - dependencies: - workbox-core "^6.1.5" - -workbox-google-analytics@^5.1.4: - version "5.1.4" - resolved "https://registry.yarnpkg.com/workbox-google-analytics/-/workbox-google-analytics-5.1.4.tgz#b3376806b1ac7d7df8418304d379707195fa8517" - integrity sha512-0IFhKoEVrreHpKgcOoddV+oIaVXBFKXUzJVBI+nb0bxmcwYuZMdteBTp8AEDJacENtc9xbR0wa9RDCnYsCDLjA== - dependencies: - workbox-background-sync "^5.1.4" - workbox-core "^5.1.4" - workbox-routing "^5.1.4" - workbox-strategies "^5.1.4" - -workbox-google-analytics@^6.1.5: - version "6.1.5" - resolved "https://registry.yarnpkg.com/workbox-google-analytics/-/workbox-google-analytics-6.1.5.tgz#895fcc50e4976c176b5982e1a8fd08776f18d639" - integrity sha512-LYsJ/VxTkYVLxM1uJKXZLz4cJdemidY7kPyAYtKVZ6EiDG89noASqis75/5lhqM1m3HwQfp2DtoPrelKSpSDBA== - dependencies: - workbox-background-sync "^6.1.5" - workbox-core "^6.1.5" - workbox-routing "^6.1.5" - workbox-strategies "^6.1.5" - -workbox-navigation-preload@^5.1.4: - version "5.1.4" - resolved "https://registry.yarnpkg.com/workbox-navigation-preload/-/workbox-navigation-preload-5.1.4.tgz#30d1b720d26a05efc5fa11503e5cc1ed5a78902a" - integrity sha512-Wf03osvK0wTflAfKXba//QmWC5BIaIZARU03JIhAEO2wSB2BDROWI8Q/zmianf54kdV7e1eLaIEZhth4K4MyfQ== - dependencies: - workbox-core "^5.1.4" - -workbox-navigation-preload@^6.0.2, workbox-navigation-preload@^6.1.5: - version "6.1.5" - resolved "https://registry.yarnpkg.com/workbox-navigation-preload/-/workbox-navigation-preload-6.1.5.tgz#47a0d3a6d2e74bd3a52b58b72ca337cb5b654310" - integrity sha512-hDbNcWlffv0uvS21jCAC/mYk7NzaGRSWOQXv1p7bj2aONAX5l699D2ZK4D27G8TO0BaLHUmW/1A5CZcsvweQdg== - dependencies: - workbox-core "^6.1.5" - -workbox-precaching@^5.1.4: - version "5.1.4" - resolved "https://registry.yarnpkg.com/workbox-precaching/-/workbox-precaching-5.1.4.tgz#874f7ebdd750dd3e04249efae9a1b3f48285fe6b" - integrity sha512-gCIFrBXmVQLFwvAzuGLCmkUYGVhBb7D1k/IL7pUJUO5xacjLcFUaLnnsoVepBGAiKw34HU1y/YuqvTKim9qAZA== - dependencies: - workbox-core "^5.1.4" - -workbox-precaching@^6.0.2, workbox-precaching@^6.1.5: - version "6.1.5" - resolved "https://registry.yarnpkg.com/workbox-precaching/-/workbox-precaching-6.1.5.tgz#9e0fecb5c567192f46783323fccea10bffc9f79e" - integrity sha512-yhm1kb6wgi141JeM5X7z42XJxCry53tbMLB3NgrxktrZbwbrJF8JILzYy+RFKC9tHC6u2bPmL789GPLT2NCDzw== - dependencies: - workbox-core "^6.1.5" - workbox-routing "^6.1.5" - workbox-strategies "^6.1.5" - -workbox-range-requests@^5.1.4: - version "5.1.4" - resolved "https://registry.yarnpkg.com/workbox-range-requests/-/workbox-range-requests-5.1.4.tgz#7066a12c121df65bf76fdf2b0868016aa2bab859" - integrity sha512-1HSujLjgTeoxHrMR2muDW2dKdxqCGMc1KbeyGcmjZZAizJTFwu7CWLDmLv6O1ceWYrhfuLFJO+umYMddk2XMhw== - dependencies: - workbox-core "^5.1.4" - -workbox-range-requests@^6.1.5: - version "6.1.5" - resolved "https://registry.yarnpkg.com/workbox-range-requests/-/workbox-range-requests-6.1.5.tgz#047ccd12838bebe51a720256a4ca0cfa7197dfd3" - integrity sha512-iACChSapzB0yuIum3ascP/+cfBNuZi5DRrE+u4u5mCHigPlwfSWtlaY+y8p+a8EwcDTVTZVtnrGrRnF31SiLqQ== - dependencies: - workbox-core "^6.1.5" - -workbox-recipes@^6.1.5: - version "6.1.5" - resolved "https://registry.yarnpkg.com/workbox-recipes/-/workbox-recipes-6.1.5.tgz#bb1f8976bcdb202618d967596e9f248e6077e69a" - integrity sha512-MD1yabHca6O/oj1hrRdfj9cRwhKA5zqIE53rWOAg/dKMMzWQsf9nyRbXRgzK3a13iQvYKuQzURU4Cx58tdnR+Q== - dependencies: - workbox-cacheable-response "^6.1.5" - workbox-core "^6.1.5" - workbox-expiration "^6.1.5" - workbox-precaching "^6.1.5" - workbox-routing "^6.1.5" - workbox-strategies "^6.1.5" - -workbox-routing@^5.1.4: - version "5.1.4" - resolved "https://registry.yarnpkg.com/workbox-routing/-/workbox-routing-5.1.4.tgz#3e8cd86bd3b6573488d1a2ce7385e547b547e970" - integrity sha512-8ljknRfqE1vEQtnMtzfksL+UXO822jJlHTIR7+BtJuxQ17+WPZfsHqvk1ynR/v0EHik4x2+826Hkwpgh4GKDCw== - dependencies: - workbox-core "^5.1.4" - -workbox-routing@^6.0.2, workbox-routing@^6.1.5: - version "6.1.5" - resolved "https://registry.yarnpkg.com/workbox-routing/-/workbox-routing-6.1.5.tgz#15884d6152dba03faef83f0b23331846d8b6ef8e" - integrity sha512-uC/Ctz+4GXGL42h1WxUNKxqKRik/38uS0NZ6VY/EHqL2F1ObLFqMHUZ4ZYvyQsKdyI82cxusvhJZHOrY0a2fIQ== - dependencies: - workbox-core "^6.1.5" - -workbox-strategies@^5.1.4: - version "5.1.4" - resolved "https://registry.yarnpkg.com/workbox-strategies/-/workbox-strategies-5.1.4.tgz#96b1418ccdfde5354612914964074d466c52d08c" - integrity sha512-VVS57LpaJTdjW3RgZvPwX0NlhNmscR7OQ9bP+N/34cYMDzXLyA6kqWffP6QKXSkca1OFo/v6v7hW7zrrguo6EA== - dependencies: - workbox-core "^5.1.4" - workbox-routing "^5.1.4" - -workbox-strategies@^6.0.2, workbox-strategies@^6.1.5: - version "6.1.5" - resolved "https://registry.yarnpkg.com/workbox-strategies/-/workbox-strategies-6.1.5.tgz#2549a3e78f0eda371b760c4db21feb0d26143573" - integrity sha512-QhiOn9KT9YGBdbfWOmJT6pXZOIAxaVrs6J6AMYzRpkUegBTEcv36+ZhE/cfHoT0u2fxVtthHnskOQ/snEzaXQw== - dependencies: - workbox-core "^6.1.5" - -workbox-streams@^5.1.4: - version "5.1.4" - resolved "https://registry.yarnpkg.com/workbox-streams/-/workbox-streams-5.1.4.tgz#05754e5e3667bdc078df2c9315b3f41210d8cac0" - integrity sha512-xU8yuF1hI/XcVhJUAfbQLa1guQUhdLMPQJkdT0kn6HP5CwiPOGiXnSFq80rAG4b1kJUChQQIGPrq439FQUNVrw== - dependencies: - workbox-core "^5.1.4" - workbox-routing "^5.1.4" - -workbox-streams@^6.1.5: - version "6.1.5" - resolved "https://registry.yarnpkg.com/workbox-streams/-/workbox-streams-6.1.5.tgz#bb7678677275fc23c9627565a1f238e4ca350290" - integrity sha512-OI1kLvRHGFXV+soDvs6aEwfBwdAkvPB0mRryqdh3/K17qUj/1gRXc8QtpgU+83xqx/I/ar2bTCIj0KPzI/ChCQ== - dependencies: - workbox-core "^6.1.5" - workbox-routing "^6.1.5" - -workbox-sw@^5.1.4: - version "5.1.4" - resolved "https://registry.yarnpkg.com/workbox-sw/-/workbox-sw-5.1.4.tgz#2bb34c9f7381f90d84cef644816d45150011d3db" - integrity sha512-9xKnKw95aXwSNc8kk8gki4HU0g0W6KXu+xks7wFuC7h0sembFnTrKtckqZxbSod41TDaGh+gWUA5IRXrL0ECRA== - -workbox-sw@^6.1.5: - version "6.1.5" - resolved "https://registry.yarnpkg.com/workbox-sw/-/workbox-sw-6.1.5.tgz#06eb0c91f22e207422175b3f815cd2181c7074a0" - integrity sha512-IMDiqxYbKzPorZLGMUMacLB6r76iVQbdTzYthIZoPfy+uFURJFUtqiWQJKg1L+RMyuYXwKXTahCIGkgFs4jBeg== - -workbox-webpack-plugin@^4.3.1, workbox-webpack-plugin@^5.1.3: - version "5.1.4" - resolved "https://registry.yarnpkg.com/workbox-webpack-plugin/-/workbox-webpack-plugin-5.1.4.tgz#7bfe8c16e40fe9ed8937080ac7ae9c8bde01e79c" - integrity sha512-PZafF4HpugZndqISi3rZ4ZK4A4DxO8rAqt2FwRptgsDx7NF8TVKP86/huHquUsRjMGQllsNdn4FNl8CD/UvKmQ== - dependencies: - "@babel/runtime" "^7.5.5" - fast-json-stable-stringify "^2.0.0" - source-map-url "^0.4.0" - upath "^1.1.2" - webpack-sources "^1.3.0" - workbox-build "^5.1.4" - -workbox-webpack-plugin@^6.1.5: - version "6.1.5" - resolved "https://registry.yarnpkg.com/workbox-webpack-plugin/-/workbox-webpack-plugin-6.1.5.tgz#d573f959417c3dae49e112dae9c6b82cc1679229" - integrity sha512-tsgeNAYiFP4STNPDxBVT58eiU8nGUmcv7Lq9FFJkQf5MMu6tPw1OLp+KpszhbCWP+R/nEdu85Gjexs6fY647Kg== - dependencies: - fast-json-stable-stringify "^2.1.0" - pretty-bytes "^5.4.1" - source-map-url "^0.4.0" - upath "^1.2.0" - webpack-sources "^1.4.3" - workbox-build "^6.1.5" - -workbox-window@^5.1.4: - version "5.1.4" - resolved "https://registry.yarnpkg.com/workbox-window/-/workbox-window-5.1.4.tgz#2740f7dea7f93b99326179a62f1cc0ca2c93c863" - integrity sha512-vXQtgTeMCUq/4pBWMfQX8Ee7N2wVC4Q7XYFqLnfbXJ2hqew/cU1uMTD2KqGEgEpE4/30luxIxgE+LkIa8glBYw== - dependencies: - workbox-core "^5.1.4" - -workbox-window@^6.1.5: - version "6.1.5" - resolved "https://registry.yarnpkg.com/workbox-window/-/workbox-window-6.1.5.tgz#017b22342e10c6df6b9672326b575ec950b6cd80" - integrity sha512-akL0X6mAegai2yypnq78RgfazeqvKbsllRtEI4dnbhPcRINEY1NmecFmsQk8SD+zWLK1gw5OdwAOX+zHSRVmeA== - dependencies: - workbox-core "^6.1.5" - -worker-farm@^1.7.0: - version "1.7.0" - resolved "https://registry.yarnpkg.com/worker-farm/-/worker-farm-1.7.0.tgz#26a94c5391bbca926152002f69b84a4bf772e5a8" - integrity sha512-rvw3QTZc8lAxyVrqcSGVm5yP/IJ2UcB3U0graE3LCFoZ0Yn2x4EoVSqJKdB/T5M+FLcRPjz4TDacRf3OCfNUzw== - dependencies: - errno "~0.1.7" - -worker-rpc@^0.1.0: - version "0.1.1" - resolved "https://registry.yarnpkg.com/worker-rpc/-/worker-rpc-0.1.1.tgz#cb565bd6d7071a8f16660686051e969ad32f54d5" - integrity sha512-P1WjMrUB3qgJNI9jfmpZ/htmBEjFh//6l/5y8SD9hg1Ef5zTTVVoRjTrTEzPrNBQvmhMxkoTsjOXN10GWU7aCg== - dependencies: - microevent.ts "~0.1.1" - -wrap-ansi@^5.1.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-5.1.0.tgz#1fd1f67235d5b6d0fee781056001bfb694c03b09" - integrity sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q== - dependencies: - ansi-styles "^3.2.0" - string-width "^3.0.0" - strip-ansi "^5.0.0" - -wrap-ansi@^6.2.0: - version "6.2.0" - resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-6.2.0.tgz#e9393ba07102e6c91a3b221478f0257cd2856e53" - integrity sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA== - dependencies: - ansi-styles "^4.0.0" - string-width "^4.1.0" - strip-ansi "^6.0.0" - -wrap-ansi@^7.0.0: - version "7.0.0" - resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43" - integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q== - dependencies: - ansi-styles "^4.0.0" - string-width "^4.1.0" - strip-ansi "^6.0.0" - -wrappy@1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" - integrity sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8= - -ws@^6.0.0, ws@^6.2.1: - version "6.2.2" - resolved "https://registry.yarnpkg.com/ws/-/ws-6.2.2.tgz#dd5cdbd57a9979916097652d78f1cc5faea0c32e" - integrity sha512-zmhltoSR8u1cnDsD43TX59mzoMZsLKqUweyYBAIvTngR3shc0W6aOZylZmq/7hqyVxPdi+5Ud2QInblgyE72fw== - dependencies: - async-limiter "~1.0.0" - -xtend@^4.0.0, xtend@~4.0.1: - version "4.0.2" - resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.2.tgz#bb72779f5fa465186b1f438f674fa347fdb5db54" - integrity sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ== - -y18n@^4.0.0: - version "4.0.3" - resolved "https://registry.yarnpkg.com/y18n/-/y18n-4.0.3.tgz#b5f259c82cd6e336921efd7bfd8bf560de9eeedf" - integrity sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ== - -y18n@^5.0.5: - version "5.0.8" - resolved "https://registry.yarnpkg.com/y18n/-/y18n-5.0.8.tgz#7f4934d0f7ca8c56f95314939ddcd2dd91ce1d55" - integrity sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA== - -yallist@^2.1.2: - version "2.1.2" - resolved "https://registry.yarnpkg.com/yallist/-/yallist-2.1.2.tgz#1c11f9218f076089a47dd512f93c6699a6a81d52" - integrity sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI= - -yallist@^3.0.2: - version "3.1.1" - resolved "https://registry.yarnpkg.com/yallist/-/yallist-3.1.1.tgz#dbb7daf9bfd8bac9ab45ebf602b8cbad0d5d08fd" - integrity sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g== - -yallist@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/yallist/-/yallist-4.0.0.tgz#9bb92790d9c0effec63be73519e11a35019a3a72" - integrity sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A== - -yaml@^1.7.2: - version "1.10.2" - resolved "https://registry.yarnpkg.com/yaml/-/yaml-1.10.2.tgz#2301c5ffbf12b467de8da2333a459e29e7920e4b" - integrity sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg== - -yargs-parser@^13.1.2: - version "13.1.2" - resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-13.1.2.tgz#130f09702ebaeef2650d54ce6e3e5706f7a4fb38" - integrity sha512-3lbsNRf/j+A4QuSZfDRA7HRSfWrzO0YjqTJd5kjAq37Zep1CEgaYmrH9Q3GwPiB9cHyd1Y1UwggGhJGoxipbzg== - dependencies: - camelcase "^5.0.0" - decamelize "^1.2.0" - -yargs-parser@^20.2.2: - version "20.2.7" - resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-20.2.7.tgz#61df85c113edfb5a7a4e36eb8aa60ef423cbc90a" - integrity sha512-FiNkvbeHzB/syOjIUxFDCnhSfzAL8R5vs40MgLFBorXACCOAEaWu0gRZl14vG8MR9AOJIZbmkjhusqBYZ3HTHw== - -yargs@^13.2.2, yargs@^13.3.2: - version "13.3.2" - resolved "https://registry.yarnpkg.com/yargs/-/yargs-13.3.2.tgz#ad7ffefec1aa59565ac915f82dccb38a9c31a2dd" - integrity sha512-AX3Zw5iPruN5ie6xGRIDgqkT+ZhnRlZMLMHAs8tg7nRruy2Nb+i5o9bwghAogtM08q1dpr2LVoS8KSTMYpWXUw== - dependencies: - cliui "^5.0.0" - find-up "^3.0.0" - get-caller-file "^2.0.1" - require-directory "^2.1.1" - require-main-filename "^2.0.0" - set-blocking "^2.0.0" - string-width "^3.0.0" - which-module "^2.0.0" - y18n "^4.0.0" - yargs-parser "^13.1.2" - -yargs@^16.0.0: - version "16.2.0" - resolved "https://registry.yarnpkg.com/yargs/-/yargs-16.2.0.tgz#1c82bf0f6b6a66eafce7ef30e376f49a12477f66" - integrity sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw== - dependencies: - cliui "^7.0.2" - escalade "^3.1.1" - get-caller-file "^2.0.5" - require-directory "^2.1.1" - string-width "^4.2.0" - y18n "^5.0.5" - yargs-parser "^20.2.2" - -yorkie@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/yorkie/-/yorkie-2.0.0.tgz#92411912d435214e12c51c2ae1093e54b6bb83d9" - integrity sha512-jcKpkthap6x63MB4TxwCyuIGkV0oYP/YRyuQU5UO0Yz/E/ZAu+653/uov+phdmO54n6BcvFRyyt0RRrWdN2mpw== - dependencies: - execa "^0.8.0" - is-ci "^1.0.10" - normalize-path "^1.0.0" - strip-indent "^2.0.0" diff --git a/yarn.lock b/yarn.lock index 811e3f94..fb57ccd1 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2,7 +2,3 @@ # yarn lockfile v1 -vue-cookies@^1.7.4: - version "1.7.4" - resolved "https://registry.yarnpkg.com/vue-cookies/-/vue-cookies-1.7.4.tgz#d241d0a0431da0795837651d10b4d73e7c8d3e8d" - integrity sha512-mOS5Btr8V9zvAtkmQ7/TfqJIropOx7etDAgBywPCmHjvfJl2gFbH2XgoMghleLoyyMTi5eaJss0mPN7arMoslA==