From da01689df0a88a7717a96757075e1dd9bd770d60 Mon Sep 17 00:00:00 2001 From: Rafael JPD Date: Sun, 7 Apr 2024 22:22:17 -0300 Subject: [PATCH 01/40] =?UTF-8?q?Adiciona=20a=20.gitignore=20o=20diret?= =?UTF-8?q?=C3=B3rio=20de=20dados=20Solr?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitignore | 3 +++ 1 file changed, 3 insertions(+) diff --git a/.gitignore b/.gitignore index 68bc17f..1820b7b 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,6 @@ +# Solr +index/usage/data + # Byte-compiled / optimized / DLL files __pycache__/ *.py[cod] From 7ae17a34b3c6bcc4fd5f89a4337115ff15df0fdf Mon Sep 17 00:00:00 2001 From: Rafael JPD Date: Sun, 7 Apr 2024 22:24:08 -0300 Subject: [PATCH 02/40] Adiciona app tracker --- tracker/__init__.py | 0 tracker/choices.py | 30 ++++ tracker/migrations/0001_initial.py | 99 +++++++++++ tracker/migrations/__init__.py | 0 tracker/models.py | 271 +++++++++++++++++++++++++++++ tracker/tasks.py | 59 +++++++ tracker/wagtail_hooks.py | 82 +++++++++ 7 files changed, 541 insertions(+) create mode 100644 tracker/__init__.py create mode 100644 tracker/choices.py create mode 100644 tracker/migrations/0001_initial.py create mode 100644 tracker/migrations/__init__.py create mode 100644 tracker/models.py create mode 100644 tracker/tasks.py create mode 100644 tracker/wagtail_hooks.py diff --git a/tracker/__init__.py b/tracker/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/tracker/choices.py b/tracker/choices.py new file mode 100644 index 0000000..268789c --- /dev/null +++ b/tracker/choices.py @@ -0,0 +1,30 @@ +from django.utils.translation import gettext_lazy as _ + +ERROR = "ERROR" +EXCEPTION = "EXCEPTION" +INFO = "INFO" +WARNING = "WARNING" + +EVENT_MSG_TYPE = [ + (ERROR, _("error")), + (WARNING, _("warning")), + (INFO, _("info")), + (EXCEPTION, _("exception")), +] + + +PROGRESS_STATUS_IGNORED = "IGNORED" +PROGRESS_STATUS_REPROC = "REPROC" +PROGRESS_STATUS_TODO = "TODO" +PROGRESS_STATUS_DOING = "DOING" +PROGRESS_STATUS_DONE = "DONE" +PROGRESS_STATUS_PENDING = "PENDING" + +PROGRESS_STATUS = ( + (PROGRESS_STATUS_REPROC, _("To reprocess")), + (PROGRESS_STATUS_TODO, _("To do")), + (PROGRESS_STATUS_DONE, _("Done")), + (PROGRESS_STATUS_DOING, _("Doing")), + (PROGRESS_STATUS_PENDING, _("Pending")), + (PROGRESS_STATUS_IGNORED, _("ignored")), +) diff --git a/tracker/migrations/0001_initial.py b/tracker/migrations/0001_initial.py new file mode 100644 index 0000000..ce9cdb4 --- /dev/null +++ b/tracker/migrations/0001_initial.py @@ -0,0 +1,99 @@ +# Generated by Django 4.2.7 on 2024-04-08 00:21 + +from django.db import migrations, models +import uuid + + +class Migration(migrations.Migration): + initial = True + + dependencies = [] + + operations = [ + migrations.CreateModel( + name="UnexpectedEvent", + fields=[ + ( + "id", + models.UUIDField( + default=uuid.uuid4, + editable=False, + primary_key=True, + serialize=False, + ), + ), + ( + "created", + models.DateTimeField( + auto_now_add=True, verbose_name="Creation date" + ), + ), + ( + "exception_type", + models.TextField( + blank=True, null=True, verbose_name="Exception Type" + ), + ), + ( + "exception_msg", + models.TextField( + blank=True, null=True, verbose_name="Exception Msg" + ), + ), + ("traceback", models.JSONField(blank=True, null=True)), + ("detail", models.JSONField(blank=True, null=True)), + ], + options={ + "indexes": [ + models.Index( + fields=["exception_type"], name="tracker_une_excepti_47ede4_idx" + ) + ], + }, + ), + migrations.CreateModel( + name="Hello", + fields=[ + ( + "id", + models.UUIDField( + default=uuid.uuid4, + editable=False, + primary_key=True, + serialize=False, + ), + ), + ("status", models.BooleanField(blank=True, default=None, null=True)), + ( + "created", + models.DateTimeField( + auto_now_add=True, verbose_name="Creation date" + ), + ), + ( + "exception_type", + models.TextField( + blank=True, null=True, verbose_name="Exception Type" + ), + ), + ( + "exception_msg", + models.TextField( + blank=True, null=True, verbose_name="Exception Msg" + ), + ), + ("traceback", models.JSONField(blank=True, null=True)), + ("detail", models.JSONField(blank=True, null=True)), + ], + options={ + "indexes": [ + models.Index( + fields=["status"], name="tracker_hel_status_cfcbfa_idx" + ), + models.Index( + fields=["exception_type"], name="tracker_hel_excepti_a64469_idx" + ), + ], + }, + ), + ] diff --git a/tracker/migrations/__init__.py b/tracker/migrations/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/tracker/models.py b/tracker/models.py new file mode 100644 index 0000000..44673c5 --- /dev/null +++ b/tracker/models.py @@ -0,0 +1,271 @@ +import json +import logging +import traceback +import uuid + +from datetime import datetime + +from django.core.files.base import ContentFile +from django.db import models +from django.utils.translation import gettext_lazy as _ + +from core.models import CommonControlField +from tracker import choices + + +class ProcEventCreateError(Exception): + ... + + +class UnexpectedEventCreateError(Exception): + ... + + +class EventCreateError(Exception): + ... + + +class EventReportCreateError(Exception): + ... + + +class EventReportSaveFileError(Exception): + ... + + +class EventReportCreateError(Exception): + ... + + +class EventReportDeleteEventsError(Exception): + ... + + +class UnexpectedEvent(models.Model): + id = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=False) + created = models.DateTimeField(verbose_name=_("Creation date"), auto_now_add=True) + exception_type = models.TextField(_("Exception Type"), null=True, blank=True) + exception_msg = models.TextField(_("Exception Msg"), null=True, blank=True) + traceback = models.JSONField(null=True, blank=True) + detail = models.JSONField(null=True, blank=True) + + class Meta: + indexes = [ + models.Index(fields=["exception_type"]), + ] + + def __str__(self): + return f"{self.exception_msg}" + + @property + def data(self): + return dict( + created=self.created.isoformat(), + exception_type=self.exception_type, + exception_msg=self.exception_msg, + traceback=json.dumps(self.traceback), + detail=json.dumps(self.detail), + ) + + @classmethod + def create( + cls, + exception=None, + exc_traceback=None, + detail=None, + ): + try: + if exception: + logging.exception(exception) + + obj = cls() + obj.exception_msg = str(exception) + obj.exception_type = str(type(exception)) + try: + json.dumps(detail) + obj.detail = detail + except Exception as e: + obj.detail = str(detail) + + if exc_traceback: + obj.traceback = traceback.format_tb(exc_traceback) + obj.save() + return obj + except Exception as exc: + raise UnexpectedEventCreateError( + f"Unable to create unexpected event ({exception} {exc_traceback}). EXCEPTION {exc}" + ) + + +class Event(CommonControlField): + id = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=False) + message = models.TextField(_("Message"), null=True, blank=True) + message_type = models.CharField( + _("Message type"), + choices=choices.EVENT_MSG_TYPE, + max_length=16, + null=True, + blank=True, + ) + detail = models.JSONField(null=True, blank=True) + unexpected_event = models.ForeignKey( + UnexpectedEvent, on_delete=models.SET_NULL, null=True, blank=True + ) + + class Meta: + abstract = True + indexes = [ + models.Index(fields=["message_type"]), + ] + + @property + def data(self): + d = {} + d["created"] = self.created.isoformat() + d["user"] = self.user.username + d.update( + dict( + message=self.message, message_type=self.message_type, detail=self.detail + ) + ) + if self.unexpected_event: + d.update(self.unexpected_event.data) + return d + + @classmethod + def create( + cls, + user=None, + message_type=None, + message=None, + e=None, + exc_traceback=None, + detail=None, + ): + try: + obj = cls() + obj.creator = user + obj.message = message + obj.message_type = message_type + obj.detail = detail + obj.save() + + if e: + logging.exception(f"{message}: {e}") + obj.unexpected_event = UnexpectedEvent.create( + exception=e, + exc_traceback=exc_traceback, + ) + obj.save() + except Exception as exc: + raise EventCreateError( + f"Unable to create Event ({message} {e}). EXCEPTION: {exc}" + ) + return obj + + +def tracker_file_directory_path(instance, filename): + # file will be uploaded to MEDIA_ROOT/user_/ + + d = datetime.utcnow() + return f"tracker/{d.year}/{d.month}/{d.day}/{filename}" + + +class EventReport(CommonControlField): + file = models.FileField( + upload_to=tracker_file_directory_path, null=True, blank=True + ) + + class Meta: + abstract = True + + def save_file(self, events, ext=None): + if not events: + return + try: + ext = ".json" + content = json.dumps(list([item.data for item in events])) + name = datetime.utcnow().isoformat() + ext + self.file.save(name, ContentFile(content)) + self.delete_events(events) + except Exception as e: + raise EventReportSaveFileError( + f"Unable to save EventReport.file ({name}). Exception: {e}" + ) + + def delete_events(self, events): + for item in events: + try: + item.unexpected_event.delete() + except: + pass + try: + item.delete() + except: + pass + + @classmethod + def create(cls, user): + try: + obj = cls() + obj.creator = user + obj.save() + except Exception as e: + raise EventReportCreateError( + f"Unable to create EventReport. Exception: {e}" + ) + +class Hello(models.Model): + id = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=False) + status = models.BooleanField(null=True, blank=True, default=None) + created = models.DateTimeField(verbose_name=_("Creation date"), auto_now_add=True) + exception_type = models.TextField(_("Exception Type"), null=True, blank=True) + exception_msg = models.TextField(_("Exception Msg"), null=True, blank=True) + traceback = models.JSONField(null=True, blank=True) + detail = models.JSONField(null=True, blank=True) + + class Meta: + indexes = [ + models.Index(fields=["status"]), + models.Index(fields=["exception_type"]), + ] + + def __str__(self): + return f"{self.status or self.exception_type} {self.created.isoformat()}" + + @property + def data(self): + return dict( + status=self.status, + created=self.created.isoformat(), + exception_type=self.exception_type, + exception_msg=self.exception_msg, + traceback=json.dumps(self.traceback), + detail=json.dumps(self.detail), + ) + + @classmethod + def create( + cls, + exception=None, + exc_traceback=None, + detail=None, + status=None + ): + if exception: + logging.exception(exception) + + obj = cls() + obj.status = status or not exception and not exc_traceback + obj.exception_msg = str(exception) + obj.exception_type = str(type(exception)) + try: + json.dumps(detail) + obj.detail = detail + except Exception as e: + obj.detail = str(detail) + + if exc_traceback: + obj.traceback = traceback.format_tb(exc_traceback) + obj.save() + return obj diff --git a/tracker/tasks.py b/tracker/tasks.py new file mode 100644 index 0000000..7b9a222 --- /dev/null +++ b/tracker/tasks.py @@ -0,0 +1,59 @@ +# tasks.py +import logging +import sys +from datetime import datetime + +from django.contrib.auth import get_user_model + +from config import celery_app +from .models import UnexpectedEvent, Hello + + +User = get_user_model() + + +def _get_user(request, username=None, user_id=None): + try: + return User.objects.get(pk=request.user.id) + except AttributeError: + if user_id: + return User.objects.get(pk=user_id) + if username: + return User.objects.get(username=username) + + +@celery_app.task(bind=True, name="cleanup_unexpected_events") +def delete_unexpected_events(self, exception_type, start_date=None, end_date=None, user_id=None, username=None): + """ + Delete UnexpectedEvent records based on exception type and optional date range. + """ + + if exception_type == '__all__': + UnexpectedEvent.objects.all().delete() + return + + filters = {'exception_type__icontains': exception_type} + if start_date: + start_date = datetime.fromisoformat(start_date) + filters['created__gte'] = start_date + if end_date: + end_date = datetime.fromisoformat(end_date) + filters['created__lte'] = end_date + + UnexpectedEvent.objects.filter(**filters).delete() + + +@celery_app.task(bind=True) +def hello(self, user_id=None): + """ + Register Hello records + """ + try: + logging.info("Hello!") + Hello.create() + except Exception as e: + exc_type, exc_value, exc_traceback = sys.exc_info() + Hello.create( + exception=e, + exc_traceback=exc_traceback, + ) diff --git a/tracker/wagtail_hooks.py b/tracker/wagtail_hooks.py new file mode 100644 index 0000000..c9f75e2 --- /dev/null +++ b/tracker/wagtail_hooks.py @@ -0,0 +1,82 @@ +from django.utils.translation import gettext as _ +from wagtail.contrib.modeladmin.options import ( + ModelAdmin, + ModelAdminGroup, + modeladmin_register, +) +from wagtail.contrib.modeladmin.views import CreateView + +from config.menu import get_menu_order + +from .models import UnexpectedEvent, Hello + + +class UnexpectedEventModelAdmin(ModelAdmin): + model = UnexpectedEvent + inspect_view_enabled = True + menu_label = _("Unexpected Events") + menu_icon = "folder" + menu_order = 200 + add_to_settings_menu = False + exclude_from_explorer = False + + list_display = ( + "exception_type", + "exception_msg", + "traceback", + "created", + ) + list_filter = ("exception_type",) + search_fields = ( + "exception_msg", + "detail", + ) + inspect_view_fields = ( + "exception_type", + "exception_msg", + "traceback", + "detail", + "created", + ) + + +class HelloModelAdmin(ModelAdmin): + model = Hello + inspect_view_enabled = True + menu_label = _("Hello events") + menu_icon = "folder" + menu_order = 200 + add_to_settings_menu = False + exclude_from_explorer = False + + list_display = ( + "status", + "exception_type", + "exception_msg", + "traceback", + "created", + ) + list_filter = ("status", "exception_type",) + search_fields = ( + "exception_msg", + "detail", + ) + inspect_view_fields = ( + "exception_type", + "exception_msg", + "traceback", + "detail", + "created", + ) + + +class UnexpectedEventModelAdminGroup(ModelAdminGroup): + menu_icon = "folder" + menu_label = _("Unexpected errors") + # menu_order = get_menu_order("journal") + menu_order = 200 + items = (UnexpectedEventModelAdmin, HelloModelAdmin) + menu_order = get_menu_order("unexpected-error") + + +modeladmin_register(UnexpectedEventModelAdminGroup) From e43f61fd62f882b2a2432b9ae74d5bd1e181a529 Mon Sep 17 00:00:00 2001 From: Rafael JPD Date: Sun, 7 Apr 2024 22:24:34 -0300 Subject: [PATCH 03/40] =?UTF-8?q?Adiciona=20diret=C3=B3rio=20de=20requirem?= =?UTF-8?q?ents?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- requirements/base.txt | 92 +++++++++++++++++++++++++++++++++++++ requirements/local.txt | 40 ++++++++++++++++ requirements/production.txt | 18 ++++++++ 3 files changed, 150 insertions(+) create mode 100644 requirements/base.txt create mode 100644 requirements/local.txt create mode 100644 requirements/production.txt diff --git a/requirements/base.txt b/requirements/base.txt new file mode 100644 index 0000000..6b82587 --- /dev/null +++ b/requirements/base.txt @@ -0,0 +1,92 @@ +pytz==2023.3.post1 # https://github.com/stub42/pytz +python-slugify==8.0.1 # https://github.com/un33k/python-slugify +Pillow==10.1.0 # https://github.com/python-pillow/Pillow +rcssmin==1.1.1 # https://github.com/ndparker/rcssmin +argon2-cffi==23.1.0 # https://github.com/hynek/argon2_cffi +whitenoise==6.6.0 # https://github.com/evansd/whitenoise +redis==5.0.1 # https://github.com/redis/redis-py +hiredis==2.2.3 # https://github.com/redis/hiredis-py +celery==5.3.6 # pyup: < 6.0 # https://github.com/celery/celery +flower==2.0.1 # https://github.com/mher/flower +xmltodict==0.13.0 # https://github.com/martinblech/xmltodict.git + +# Django +# ------------------------------------------------------------------------------ +django==4.2.7 +django-environ==0.11.2 # https://github.com/joke2k/django-environ +django-model-utils==4.3.1 # https://github.com/jazzband/django-model-utils +django-allauth==0.59.0 # https://github.com/pennersr/django-allauth +django-crispy-forms==2.1 # https://github.com/django-crispy-forms/django-crispy-forms +crispy-bootstrap5==0.7 # https://github.com/django-crispy-forms/crispy-bootstrap5 +django-compressor==4.4 # https://github.com/django-compressor/django-compressor +django-redis==5.4.0 # https://github.com/jazzband/django-redis4 + +# Django REST +djangorestframework==3.14.0 +djangorestframework-simplejwt==5.3.0 # https://django-rest-framework-simplejwt.readthedocs.io/en/latest/ + +# Wagtail +# ------------------------------------------------------------------------------ +wagtail==5.2.2 # https://github.com/wagtail/wagtail + +# Wagtail Recaptcha +# ------------------------------------------------------------------------------ +django-recaptcha==3.0.0 +wagtail-django-recaptcha==1.0 + +# Wagtail Menu +# ------------------------------------------------------------------------------ +wagtailmenus==3.1.9 + +# Wagtail Localize +# ------------------------------------------------------------------------------ +wagtail-localize==1.7 + +#Wagtail Admin +# ------------------------------------------------------------------------------ +wagtail-modeladmin==1.0.0 + +# Django celery +# ------------------------------------------------------------------------------ +django-celery-beat==2.5.0 # https://github.com/celery/django-celery-beat +django_celery_results==2.5.1 + +# Wagtail-Autocomplete +# ------------------------------------------------------------------------------ +wagtail-autocomplete==0.11.0 # https://github.com/wagtail/wagtail-autocomplete + +# Minio +minio==7.2.5 + +# Reverse Geocode +# ------------------------------------------------------------------------------ +reverse-geocode==1.6 # https://pypi.org/project/reverse-geocode/ + +# SciELO Log Validator +-e git+https://github.com/scieloorg/scielo_log_validator#egg=scielo_log_validator + +# SciELO Usage COUNTER +device-detector==0.10 # https://github.com/thinkwelltwd/device_detector +-e git+https://github.com/scieloorg/scielo_usage_counter#egg=scielo_usage_counter + +# packtools +# ------------------------------------------------------------------------------ +lxml==4.9.4 # https://github.com/lxml/lxml +tornado>=6.3.3 # not directly required, pinned by Snyk to avoid a vulnerability +packtools@https://github.com/scieloorg/packtools/archive/refs/tags/3.3.3.zip + +# Sickle +# ------------------------------------------------------------------------------ +Sickle==0.7.0 + +# Solr +# ------------------------------------------------------------------------------ +django-haystack==3.2.1 + +# PySolr +# ------------------------------------------------------------------------------ +pysolr==3.9.0 + +# Tenacity +# ------------------------------------------------------------------------------ +tenacity==8.2.3 # https://pypi.org/project/tenacity/ \ No newline at end of file diff --git a/requirements/local.txt b/requirements/local.txt new file mode 100644 index 0000000..a789a79 --- /dev/null +++ b/requirements/local.txt @@ -0,0 +1,40 @@ +-r base.txt + +Werkzeug==3.0.1 # https://github.com/pallets/werkzeug +ipdb==0.13.13 # https://github.com/gotcha/ipdb +psycopg2-binary==2.9.9 # https://github.com/psycopg/psycopg2 +watchgod==0.8.2 # https://github.com/samuelcolvin/watchgod + +# Testing +# ------------------------------------------------------------------------------ +# mypy==1.3.0 # https://github.com/python/mypy +mypy==1.6.1 # https://github.com/python/mypy +# django-stubs==1.16.0 # https://github.com/typeddjango/django-stubs +django-stubs==4.2.6 # https://github.com/typeddjango/django-stubs +pytest==7.4.3 # https://github.com/pytest-dev/pytest +pytest-sugar==0.9.7 # https://github.com/Frozenball/pytest-sugar + +# Documentation +# ------------------------------------------------------------------------------ +sphinx==7.2.6 # https://github.com/sphinx-doc/sphinx +sphinx-autobuild==2021.3.14 # https://github.com/GaretJax/sphinx-autobuild + +# Code quality +# ------------------------------------------------------------------------------ +flake8==6.1.0 # https://github.com/PyCQA/flake8 +flake8-isort==6.1.0 # https://github.com/gforcada/flake8-isort +coverage==7.3.2 # https://github.com/nedbat/coveragepy +black==23.12.0 # https://github.com/psf/black +pylint-django==2.5.5 # https://github.com/PyCQA/pylint-django +pylint-celery==0.3 # https://github.com/PyCQA/pylint-celery +pre-commit==3.5.0 # https://github.com/pre-commit/pre-commit + +# Django +# ------------------------------------------------------------------------------ +factory-boy==3.3.0 # https://github.com/FactoryBoy/factory_boy + +django-debug-toolbar # https://github.com/jazzband/django-debug-toolbar +django-extensions==3.2.3 # https://github.com/django-extensions/django-extensions +django-coverage-plugin==3.1.0 # https://github.com/nedbat/django_coverage_plugin +pytest-django==4.7.0 # https://github.com/pytest-dev/pytest-django +tornado>=6.3.3 # not directly required, pinned by Snyk to avoid a vulnerability diff --git a/requirements/production.txt b/requirements/production.txt new file mode 100644 index 0000000..334e9f1 --- /dev/null +++ b/requirements/production.txt @@ -0,0 +1,18 @@ +# PRECAUTION: avoid production dependencies that aren't in development + +-r base.txt + +gevent==23.9.1 # http://www.gevent.org/ +gunicorn==21.2.0 # https://github.com/benoitc/gunicorn +psycopg2-binary==2.9.9 # https://github.com/psycopg/psycopg2 +sentry-sdk==1.39.1 # https://github.com/getsentry/sentry-python + +# Django +# ------------------------------------------------------------------------------ +django-anymail # https://github.com/anymail/django-anymail +setuptools>=68.2.2 # not directly required, pinned by Snyk to avoid a vulnerability + + +# Elastic-APM # https://pypi.org/project/elastic-apm/ +# ------------------------------------------------------------------------------ +elastic-apm==6.19.0 \ No newline at end of file From c2304493acc9ae22546ae10dc77eb9d783054897 Mon Sep 17 00:00:00 2001 From: Rafael JPD Date: Sun, 7 Apr 2024 22:25:00 -0300 Subject: [PATCH 04/40] =?UTF-8?q?Adiciona=20diret=C3=B3rio=20de=20tradu?= =?UTF-8?q?=C3=A7=C3=B5es?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- locale/README.rst | 6 + locale/en/LC_MESSAGES/django.po | 5292 ++++++++++++++++++++++++++++ locale/es/LC_MESSAGES/django.po | 5292 ++++++++++++++++++++++++++++ locale/pt_BR/LC_MESSAGES/django.po | 5292 ++++++++++++++++++++++++++++ 4 files changed, 15882 insertions(+) create mode 100644 locale/README.rst create mode 100644 locale/en/LC_MESSAGES/django.po create mode 100644 locale/es/LC_MESSAGES/django.po create mode 100644 locale/pt_BR/LC_MESSAGES/django.po diff --git a/locale/README.rst b/locale/README.rst new file mode 100644 index 0000000..c2f1dcd --- /dev/null +++ b/locale/README.rst @@ -0,0 +1,6 @@ +Translations +============ + +Translations will be placed in this folder when running:: + + python manage.py makemessages diff --git a/locale/en/LC_MESSAGES/django.po b/locale/en/LC_MESSAGES/django.po new file mode 100644 index 0000000..888a786 --- /dev/null +++ b/locale/en/LC_MESSAGES/django.po @@ -0,0 +1,5292 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# FIRST AUTHOR , YEAR. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2024-01-09 19:06+0000\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"Language: \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" + +#: altmetric/choices.py:4 article/wagtail_hooks.py:26 +msgid "Article" +msgstr "" + +#: altmetric/choices.py:5 article/models.py:36 issue/models.py:32 +#: journal/models.py:779 journal/models.py:1601 +msgid "Journal" +msgstr "" + +#: altmetric/models.py:10 journal/models.py:1608 +msgid "ISSN SciELO" +msgstr "" + +#: altmetric/models.py:13 +msgid "Extraction Date" +msgstr "" + +#: altmetric/models.py:16 +msgid "Resource Type" +msgstr "" + +#: altmetric/models.py:22 journal/models.py:2247 report/models.py:46 +msgid "JSON File" +msgstr "" + +#: altmetric/wagtail_hooks.py:13 +msgid "Altmetric" +msgstr "" + +#: article/models.py:32 +msgid "PID V2" +msgstr "" + +#: article/models.py:33 +msgid "PID V3" +msgstr "" + +#: article/models.py:43 +msgid "pub date day" +msgstr "" + +#: article/models.py:50 +msgid "pub date month" +msgstr "" + +#: article/models.py:60 +msgid "Fundings" +msgstr "" + +#: article/models.py:79 book/models.py:71 journal/models.py:591 +msgid "Publisher" +msgstr "" + +#: article/models.py:103 +msgid "Abstract" +msgstr "" + +#: article/models.py:117 book/models.py:139 +msgid "Identification" +msgstr "" + +#: article/models.py:118 +msgid "Data with language" +msgstr "" + +#: article/models.py:119 researcher/wagtail_hooks.py:101 +msgid "Researchers" +msgstr "" + +#: article/models.py:120 +msgid "Publisher and Sponsors" +msgstr "" + +#: article/models.py:220 +msgid "Award ID" +msgstr "" + +#: article/models.py:318 core/models.py:188 +msgid "Text" +msgstr "" + +#: article/models.py:399 article/models.py:475 collection/models.py:57 +#: core/models.py:29 +msgid "Code" +msgstr "" + +#: article/models.py:513 +msgid "Count" +msgstr "" + +#: article/models.py:517 book/models.py:57 book/models.py:225 +#: core/models.py:144 core/models.py:192 core/models.py:209 core/models.py:253 +#: core/models.py:525 doi/models.py:18 thematic_areas/models.py:19 +msgid "Language" +msgstr "" + +#: article/models.py:570 article/wagtail_hooks.py:45 +msgid "SubArticle" +msgstr "" + +#: article/models.py:571 +msgid "SubArticles" +msgstr "" + +#: article/tasks.py:36 +msgid "load_article" +msgstr "" + +#: article/tasks.py:65 +msgid "load_articles" +msgstr "" + +#: article/tasks.py:101 +msgid "load_preprints" +msgstr "" + +#: article/wagtail_hooks.py:69 +msgid "Article Funding" +msgstr "" + +#: article/wagtail_hooks.py:86 +msgid "Articles" +msgstr "" + +#: book/models.py:45 book/models.py:219 journal/models.py:2294 +#: report/models.py:34 +msgid "Title" +msgstr "" + +#: book/models.py:46 +msgid "Synopsis" +msgstr "" + +#: book/models.py:48 +msgid "Electronic ISBN" +msgstr "" + +#: book/models.py:50 core/models.py:270 +msgid "Year" +msgstr "" + +#: book/models.py:53 +msgid "Authors" +msgstr "" + +#: book/models.py:64 +msgid "Localization" +msgstr "" + +#: book/models.py:78 +msgid "SciELO Book" +msgstr "" + +#: book/models.py:79 +msgid "SciELO Books" +msgstr "" + +#: book/models.py:134 book/models.py:238 +msgid "Chapter" +msgstr "" + +#: book/models.py:140 book/models.py:239 +msgid "Chapters" +msgstr "" + +#: book/models.py:221 +msgid "Data de publicação" +msgstr "" + +#: book/wagtail_hooks.py:22 book/wagtail_hooks.py:45 collection/choices.py:14 +msgid "Books" +msgstr "" + +#: collection/choices.py:4 +msgid "Certified" +msgstr "" + +#: collection/choices.py:5 +msgid "Development" +msgstr "" + +#: collection/choices.py:6 +msgid "Diffusion" +msgstr "" + +#: collection/choices.py:7 +msgid "Independent" +msgstr "" + +#: collection/choices.py:11 journal/models.py:780 journal/wagtail_hooks.py:62 +#: journal/wagtail_hooks.py:124 +msgid "Journals" +msgstr "" + +#: collection/choices.py:12 +msgid "Preprints" +msgstr "" + +#: collection/choices.py:13 +msgid "Repositories" +msgstr "" + +#: collection/choices.py:15 +msgid "Data repository" +msgstr "" + +#: collection/models.py:52 +msgid "Acronym with 3 chars" +msgstr "" + +#: collection/models.py:55 +msgid "Acronym with 2 chars" +msgstr "" + +#: collection/models.py:58 +msgid "Domain" +msgstr "" + +#: collection/models.py:62 +msgid "Main name" +msgstr "" + +#: collection/models.py:64 doi/models.py:80 journal/models.py:1611 +msgid "Status" +msgstr "" + +#: collection/models.py:66 +msgid "Has analytics" +msgstr "" + +#: collection/models.py:69 +msgid "Collection Type" +msgstr "" + +#: collection/models.py:71 +msgid "Is active" +msgstr "" + +#: collection/models.py:72 +msgid "Foundation data" +msgstr "" + +#: collection/models.py:94 collection/wagtail_hooks.py:19 +#: journal/models.py:1593 journal/models.py:2234 +msgid "Collection" +msgstr "" + +#: collection/models.py:95 +msgid "Collections" +msgstr "" + +#: core/choices.py:192 +msgid "Editor-Chefe" +msgstr "" + +#: core/choices.py:193 +msgid "Editor(es) Executivo" +msgstr "" + +#: core/choices.py:194 +msgid "Editor(es) Associados ou de Seção" +msgstr "" + +#: core/choices.py:195 +msgid "Equipe Técnica" +msgstr "" + +#: core/choices.py:199 +msgid "January" +msgstr "" + +#: core/choices.py:200 +msgid "February" +msgstr "" + +#: core/choices.py:201 +msgid "March" +msgstr "" + +#: core/choices.py:202 +msgid "April" +msgstr "" + +#: core/choices.py:203 +msgid "May" +msgstr "" + +#: core/choices.py:204 +msgid "June" +msgstr "" + +#: core/choices.py:205 +msgid "July" +msgstr "" + +#: core/choices.py:206 +msgid "August" +msgstr "" + +#: core/choices.py:207 +msgid "September" +msgstr "" + +#: core/choices.py:208 +msgid "October" +msgstr "" + +#: core/choices.py:209 +msgid "November" +msgstr "" + +#: core/choices.py:210 +msgid "December" +msgstr "" + +#: core/choices.py:216 +msgid "by" +msgstr "" + +#: core/choices.py:217 +msgid "by-sa" +msgstr "" + +#: core/choices.py:218 +msgid "by-nc" +msgstr "" + +#: core/choices.py:219 +msgid "by-nc-sa" +msgstr "" + +#: core/choices.py:220 +msgid "by-nd" +msgstr "" + +#: core/choices.py:221 +msgid "by-nc-nd" +msgstr "" + +#: core/models.py:31 +msgid "Sex" +msgstr "" + +#: core/models.py:96 tracker/models.py:51 +msgid "Creation date" +msgstr "" + +#: core/models.py:99 +msgid "Last update date" +msgstr "" + +#: core/models.py:104 +msgid "Creator" +msgstr "" + +#: core/models.py:114 +msgid "Updater" +msgstr "" + +#: core/models.py:135 +msgid "Language Name" +msgstr "" + +#: core/models.py:136 +msgid "Language code 2" +msgstr "" + +#: core/models.py:145 +msgid "Languages" +msgstr "" + +#: core/models.py:204 core/models.py:249 journal/models.py:1445 +msgid "Rich Text" +msgstr "" + +#: core/models.py:205 +msgid "Plain Text" +msgstr "" + +#: core/models.py:271 +msgid "Month" +msgstr "" + +#: core/models.py:272 +msgid "Day" +msgstr "" + +#: core/models.py:303 core/models.py:384 issue/models.py:91 +msgid "License" +msgstr "" + +#: core/models.py:304 core/models.py:385 +msgid "Licenses" +msgstr "" + +#: core/models.py:517 journal/models.py:883 report/models.py:42 +#: src/packtools/packtools/webapp/forms.py:11 +msgid "File" +msgstr "" + +#: core/templates/account/account_inactive.html:5 +#: core/templates/account/account_inactive.html:8 +msgid "Account Inactive" +msgstr "" + +#: core/templates/account/account_inactive.html:10 +msgid "This account is inactive." +msgstr "" + +#: core/templates/account/email.html:7 +msgid "Account" +msgstr "" + +#: core/templates/account/email.html:10 +msgid "E-mail Addresses" +msgstr "" + +#: core/templates/account/email.html:13 +msgid "The following e-mail addresses are associated with your account:" +msgstr "" + +#: core/templates/account/email.html:27 +msgid "Verified" +msgstr "" + +#: core/templates/account/email.html:29 +msgid "Unverified" +msgstr "" + +#: core/templates/account/email.html:31 +msgid "Primary" +msgstr "" + +#: core/templates/account/email.html:37 +msgid "Make Primary" +msgstr "" + +#: core/templates/account/email.html:38 +msgid "Re-send Verification" +msgstr "" + +#: core/templates/account/email.html:39 +msgid "Remove" +msgstr "" + +#: core/templates/account/email.html:46 +msgid "Warning:" +msgstr "" + +#: core/templates/account/email.html:46 +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 "" + +#: core/templates/account/email.html:51 +msgid "Add E-mail Address" +msgstr "" + +#: core/templates/account/email.html:56 +msgid "Add E-mail" +msgstr "" + +#: core/templates/account/email.html:66 +msgid "Do you really want to remove the selected e-mail address?" +msgstr "" + +#: core/templates/account/email_confirm.html:6 +#: core/templates/account/email_confirm.html:10 +msgid "Confirm E-mail Address" +msgstr "" + +#: core/templates/account/email_confirm.html:16 +#, python-format +msgid "" +"Please confirm that %(email)s is an e-mail " +"address for user %(user_display)s." +msgstr "" + +#: core/templates/account/email_confirm.html:20 +msgid "Confirm" +msgstr "" + +#: core/templates/account/email_confirm.html:27 +#, python-format +msgid "" +"This e-mail confirmation link expired or is invalid. Please issue a new e-mail confirmation request." +msgstr "" + +#: core/templates/account/login.html:7 core/templates/account/login.html:11 +#: core/templates/account/login.html:56 +msgid "Sign In" +msgstr "" + +#: core/templates/account/login.html:17 +msgid "Please sign in with one of your existing third party accounts:" +msgstr "" + +#: core/templates/account/login.html:19 +#, python-format +msgid "" +"Or, sign up for a %(site_name)s account and " +"sign in below:" +msgstr "" + +#: core/templates/account/login.html:32 +msgid "or" +msgstr "" + +#: core/templates/account/login.html:41 +#, python-format +msgid "" +"If you have not created an account yet, then please sign up first." +msgstr "" + +#: core/templates/account/login.html:55 +msgid "Forgot Password?" +msgstr "" + +#: core/templates/account/logout.html:5 core/templates/account/logout.html:8 +#: core/templates/account/logout.html:17 +msgid "Sign Out" +msgstr "" + +#: core/templates/account/logout.html:10 +msgid "Are you sure you want to sign out?" +msgstr "" + +#: core/templates/account/password_change.html:6 +#: core/templates/account/password_change.html:9 +#: core/templates/account/password_change.html:14 +#: core/templates/account/password_reset_from_key.html:5 +#: core/templates/account/password_reset_from_key.html:8 +#: core/templates/account/password_reset_from_key_done.html:4 +#: core/templates/account/password_reset_from_key_done.html:7 +msgid "Change Password" +msgstr "" + +#: core/templates/account/password_reset.html:7 +#: core/templates/account/password_reset.html:11 +#: core/templates/account/password_reset_done.html:6 +#: core/templates/account/password_reset_done.html:9 +msgid "Password Reset" +msgstr "" + +#: core/templates/account/password_reset.html:16 +msgid "" +"Forgotten your password? Enter your e-mail address below, and we'll send you " +"an e-mail allowing you to reset it." +msgstr "" + +#: core/templates/account/password_reset.html:21 +msgid "Reset My Password" +msgstr "" + +#: core/templates/account/password_reset.html:24 +msgid "Please contact us if you have any trouble resetting your password." +msgstr "" + +#: core/templates/account/password_reset_done.html:15 +msgid "" +"We have sent you an e-mail. Please contact us if you do not receive it " +"within a few minutes." +msgstr "" + +#: core/templates/account/password_reset_from_key.html:8 +msgid "Bad Token" +msgstr "" + +#: core/templates/account/password_reset_from_key.html:12 +#, python-format +msgid "" +"The password reset link was invalid, possibly because it has already been " +"used. Please request a new password reset." +msgstr "" + +#: core/templates/account/password_reset_from_key.html:18 +msgid "change password" +msgstr "" + +#: core/templates/account/password_reset_from_key.html:21 +#: core/templates/account/password_reset_from_key_done.html:8 +msgid "Your password is now changed." +msgstr "" + +#: core/templates/account/password_set.html:6 +#: core/templates/account/password_set.html:9 +#: core/templates/account/password_set.html:14 +msgid "Set Password" +msgstr "" + +#: core/templates/account/signup.html:6 +msgid "Signup" +msgstr "" + +#: core/templates/account/signup.html:9 core/templates/account/signup.html:19 +msgid "Sign Up" +msgstr "" + +#: core/templates/account/signup.html:11 +#, python-format +msgid "" +"Already have an account? Then please sign in." +msgstr "" + +#: core/templates/account/signup_closed.html:5 +#: core/templates/account/signup_closed.html:8 +msgid "Sign Up Closed" +msgstr "" + +#: core/templates/account/signup_closed.html:10 +msgid "We are sorry, but the sign up is currently closed." +msgstr "" + +#: core/templates/account/verification_sent.html:5 +#: core/templates/account/verification_sent.html:8 +#: core/templates/account/verified_email_required.html:5 +#: core/templates/account/verified_email_required.html:8 +msgid "Verify Your E-mail Address" +msgstr "" + +#: core/templates/account/verification_sent.html:10 +msgid "" +"We have sent an e-mail to you for verification. Follow the link provided to " +"finalize the signup process. Please contact us if you do not receive it " +"within a few minutes." +msgstr "" + +#: core/templates/account/verified_email_required.html:12 +msgid "" +"This part of the site requires us to verify that\n" +"you are who you claim to be. For this purpose, we require that you\n" +"verify ownership of your e-mail address. " +msgstr "" + +#: core/templates/account/verified_email_required.html:16 +msgid "" +"We have sent an e-mail to you for\n" +"verification. Please click on the link inside this e-mail. Please\n" +"contact us if you do not receive it within a few minutes." +msgstr "" + +#: core/templates/account/verified_email_required.html:20 +#, python-format +msgid "" +"Note: you can still change your e-" +"mail address." +msgstr "" + +#: core/templates/home/welcome_page.html:53 +#: core/templates/home/welcome_page.html:56 +msgid "View the release notes" +msgstr "" + +#: core/templates/home/welcome_page.html:68 +msgid "Welcome to your SciELO Content Manager" +msgstr "" + +#: core/templates/home/welcome_page.html:69 +msgid "" +"Please feel free to join our community on Slack, or get started with one of the links " +"below." +msgstr "" + +#: core/templates/home/welcome_page.html:77 +msgid "Wagtail Documentation" +msgstr "" + +#: core/templates/home/welcome_page.html:78 +msgid "Topics, references, & how-tos" +msgstr "" + +#: core/templates/home/welcome_page.html:85 +msgid "Tutorial" +msgstr "" + +#: core/templates/home/welcome_page.html:86 +msgid "Build your first Wagtail site" +msgstr "" + +#: core/templates/home/welcome_page.html:93 +msgid "Admin Interface" +msgstr "" + +#: core/templates/home/welcome_page.html:94 +msgid "Create your superuser first!" +msgstr "" + +#: core/templates/wagtailadmin/home.html:7 +msgid "Welcome to the administrative area of " +msgstr "" + +#: core/templates/wagtailadmin/login.html:7 +msgid "Administrative area of " +msgstr "" + +#: core/templates/wagtailadmin/summary_items/article_summary_item.html:6 +#, python-format +msgid "" +"%(total_article)s Article created in %(site_name)s" +msgid_plural "" +"%(total_article)s Articles created in %(site_name)s" +msgstr[0] "" +msgstr[1] "" + +#: core/templates/wagtailadmin/summary_items/collection_summary_item.html:6 +#, python-format +msgid "" +"%(total_collection)s Collection created in %(site_name)s" +msgid_plural "" +"%(total_collection)s Collections created in %(site_name)s" +msgstr[0] "" +msgstr[1] "" + +#: core/templates/wagtailadmin/summary_items/journal_summary_item.html:6 +#, python-format +msgid "" +"%(total_journal)s Journal created in %(site_name)s" +msgid_plural "" +"%(total_journal)s Journals created in %(site_name)s" +msgstr[0] "" +msgstr[1] "" + +#: core/users/admin.py:17 +msgid "Personal info" +msgstr "" + +#: core/users/admin.py:19 +msgid "Permissions" +msgstr "" + +#: core/users/admin.py:30 +msgid "Important dates" +msgstr "" + +#: core/users/apps.py:7 +msgid "Users" +msgstr "" + +#: core/users/forms.py:25 core/users/tests/test_forms.py:39 +msgid "This username has already been taken." +msgstr "" + +#: core/users/models.py:15 +msgid "Name of User" +msgstr "" + +#: core/users/views.py:23 +msgid "Information successfully updated" +msgstr "" + +#: core/utils/scheduler.py:61 +msgid "Scheduled task: {}" +msgstr "" + +#: core_settings/models.py:18 core_settings/models.py:19 +msgid "Configuração do site" +msgstr "" + +#: core_settings/models.py:66 +msgid "Site settings" +msgstr "" + +#: core_settings/models.py:67 +msgid "Admin settings" +msgstr "" + +#: doi/choices.py:4 +msgid "DATA_CREATED" +msgstr "" + +#: doi/choices.py:5 +msgid "SUBMITTED" +msgstr "" + +#: doi/choices.py:6 +msgid "QUEUED" +msgstr "" + +#: doi/choices.py:7 +msgid "DEPOSITED" +msgstr "" + +#: doi/models.py:14 +msgid "Value" +msgstr "" + +#: doi/models.py:77 +msgid "Submission Date" +msgstr "" + +#: editorialboard/button_helper.py:19 institution/button_helpers.py:17 +#: journal/button_helper.py:19 location/button_helpers.py:17 +#: thematic_areas/button_helpers.py:19 thematic_areas/button_helpers.py:69 +msgid "Validate" +msgstr "" + +#: editorialboard/button_helper.py:31 institution/button_helpers.py:26 +#: journal/button_helper.py:31 location/button_helpers.py:29 +#: thematic_areas/button_helpers.py:30 thematic_areas/button_helpers.py:79 +msgid "Import" +msgstr "" + +#: editorialboard/choices.py:4 researcher/choices.py:4 +msgid "Declarado por el investigador" +msgstr "" + +#: editorialboard/choices.py:5 researcher/choices.py:5 +msgid "Identificado automáticamente por programa de computador" +msgstr "" + +#: editorialboard/choices.py:6 researcher/choices.py:6 +msgid "Identificado por algun usuario" +msgstr "" + +#: editorialboard/choices.py:14 +msgid "Editor-in-chief" +msgstr "" + +#: editorialboard/choices.py:15 +msgid "Editor" +msgstr "" + +#: editorialboard/choices.py:16 +msgid "Associate editor" +msgstr "" + +#: editorialboard/choices.py:17 +msgid "Technical team" +msgstr "" + +#: editorialboard/models.py:56 +msgid "Member" +msgstr "" + +#: editorialboard/models.py:432 institution/models.py:630 +#: journal/models.py:2023 location/models.py:662 thematic_areas/models.py:97 +#: thematic_areas/models.py:223 +msgid "Is valid?" +msgstr "" + +#: editorialboard/models.py:434 institution/models.py:632 +#: journal/models.py:2025 location/models.py:664 thematic_areas/models.py:103 +#: thematic_areas/models.py:225 +msgid "Number of lines" +msgstr "" + +#: editorialboard/models.py:445 +msgid "Role" +msgstr "" + +#: editorialboard/models.py:448 +msgid "Declared Role" +msgstr "" + +#: editorialboard/views.py:43 institution/views.py:36 journal/views.py:43 +#: location/views.py:36 thematic_areas/views.py:48 thematic_areas/views.py:148 +msgid "Validation error" +msgstr "" + +#: editorialboard/views.py:50 institution/views.py:43 journal/views.py:50 +#: location/views.py:43 thematic_areas/views.py:55 thematic_areas/views.py:155 +#, python-format +msgid "Validation error: %s" +msgstr "" + +#: editorialboard/views.py:52 institution/views.py:45 journal/views.py:52 +#: location/views.py:45 thematic_areas/views.py:57 thematic_areas/views.py:157 +msgid "File successfully validated!" +msgstr "" + +#: editorialboard/views.py:128 +#, python-format +msgid "Import error: %s, Line: %s" +msgstr "" + +#: editorialboard/views.py:130 institution/views.py:72 journal/views.py:86 +#: location/views.py:73 thematic_areas/views.py:98 thematic_areas/views.py:195 +msgid "File imported successfully!" +msgstr "" + +#: editorialboard/wagtail_hooks.py:31 +msgid "Editorial Board Member" +msgstr "" + +#: editorialboard/wagtail_hooks.py:77 +msgid "RoleModel" +msgstr "" + +#: editorialboard/wagtail_hooks.py:96 +msgid "EditorialBoard" +msgstr "" + +#: files_storage/controller.py:29 files_storage/controller.py:50 +msgid "Unable to get MinioStorage {} {} {}" +msgstr "" + +#: files_storage/controller.py:82 +msgid "Unable to push file {} {} {} {}" +msgstr "" + +#: files_storage/controller.py:114 +msgid "Unable to push xml content {} {} {} {}" +msgstr "" + +#: files_storage/models.py:14 institution/models.py:642 journal/models.py:274 +#: journal/models.py:1467 journal/models.py:1928 journal/models.py:2035 +msgid "Name" +msgstr "" + +#: files_storage/models.py:15 +msgid "Host" +msgstr "" + +#: files_storage/models.py:16 +msgid "Bucket root" +msgstr "" + +#: files_storage/models.py:17 +msgid "Bucket app subdir" +msgstr "" + +#: files_storage/models.py:18 +msgid "Access key" +msgstr "" + +#: files_storage/models.py:19 +msgid "Secret key" +msgstr "" + +#: files_storage/models.py:21 +msgid "Secure" +msgstr "" + +#: files_storage/models.py:77 +msgid "Basename" +msgstr "" + +#: files_storage/models.py:78 +msgid "URI" +msgstr "" + +#: files_storage/wagtail_hooks.py:18 +msgid "Minio Configuration" +msgstr "" + +#: institution/choices.py:5 +msgid "agência de apoio à pesquisa" +msgstr "" + +#: institution/choices.py:8 +msgid "universidade e instâncias ligadas à universidades" +msgstr "" + +#: institution/choices.py:12 +msgid "empresa ou instituto ligadas ao governo" +msgstr "" + +#: institution/choices.py:14 +msgid "organização privada" +msgstr "" + +#: institution/choices.py:15 +msgid "organização sem fins de lucros" +msgstr "" + +#: institution/choices.py:18 +msgid "sociedade científica, associação pós-graduação, associação profissional" +msgstr "" + +#: institution/choices.py:20 +msgid "outros" +msgstr "" + +#: institution/choices.py:24 +msgid "yes" +msgstr "" + +#: institution/choices.py:25 +msgid "no" +msgstr "" + +#: institution/choices.py:26 +msgid "unknow" +msgstr "" + +#: institution/models.py:27 +msgid "Institution Type" +msgstr "" + +#: institution/models.py:33 +msgid "Organization Level 1" +msgstr "" + +#: institution/models.py:34 +msgid "Organization Level 2" +msgstr "" + +#: institution/models.py:35 +msgid "Organization Level 3" +msgstr "" + +#: institution/models.py:38 journal/models.py:605 +msgid "Logo" +msgstr "" + +#: institution/models.py:355 institution/models.py:381 +msgid "Initial Date" +msgstr "" + +#: institution/models.py:356 institution/models.py:382 +msgid "Final Date" +msgstr "" + +#: institution/models.py:359 institution/models.py:551 +#: institution/wagtail_hooks.py:66 +msgid "Institution" +msgstr "" + +#: institution/models.py:559 location/models.py:365 location/models.py:505 +#: location/wagtail_hooks.py:94 +msgid "Country" +msgstr "" + +#: institution/models.py:643 +msgid "Institution Acronym" +msgstr "" + +#: institution/models.py:645 +msgid "Is official" +msgstr "" + +#: institution/models.py:651 +msgid "Official name" +msgstr "" + +#: institution/views.py:70 journal/views.py:84 location/views.py:71 +#: thematic_areas/views.py:96 thematic_areas/views.py:193 +#, python-format +msgid "Import error: %(exception)s, Line: %(line)s" +msgstr "" + +#: institution/wagtail_hooks.py:26 +msgid "InstitutionIdentification" +msgstr "" + +#: institution/wagtail_hooks.py:106 journal/models.py:592 +msgid "Sponsor" +msgstr "" + +#: institution/wagtail_hooks.py:141 +msgid "Scimago" +msgstr "" + +#: institution/wagtail_hooks.py:178 journal/models.py:764 +msgid "Institutions" +msgstr "" + +#: issue/models.py:40 +msgid "Issue number" +msgstr "" + +#: issue/models.py:41 +msgid "Issue volume" +msgstr "" + +#: issue/models.py:43 +msgid "Issue season" +msgstr "" + +#: issue/models.py:49 +msgid "Issue year" +msgstr "" + +#: issue/models.py:50 +msgid "Issue month" +msgstr "" + +#: issue/models.py:51 +msgid "Supplement" +msgstr "" + +#: issue/models.py:70 +msgid "Issue title" +msgstr "" + +#: issue/models.py:87 issue/models.py:96 +msgid "Issue" +msgstr "" + +#: issue/models.py:88 journal/models.py:135 journal/models.py:762 +msgid "Titles" +msgstr "" + +#: issue/models.py:89 journal/models.py:513 +msgid "Subtitle" +msgstr "" + +#: issue/models.py:90 +msgid "Summary" +msgstr "" + +#: issue/models.py:97 issue/wagtail_hooks.py:22 issue/wagtail_hooks.py:54 +msgid "Issues" +msgstr "" + +#: issue/models.py:223 +msgid "Issue Title" +msgstr "" + +#: issue/models.py:262 +msgid "TocSection" +msgstr "" + +#: issue/models.py:263 +msgid "TocSections" +msgstr "" + +#: journal/choices.py:19 +msgid "Unknow" +msgstr "" + +#: journal/choices.py:20 +msgid "Current" +msgstr "" + +#: journal/choices.py:21 +msgid "Ceased" +msgstr "" + +#: journal/choices.py:22 +msgid "Reports only" +msgstr "" + +#: journal/choices.py:23 +msgid "Suspended" +msgstr "" + +#: journal/choices.py:27 +msgid "Continuous" +msgstr "" + +#: journal/choices.py:28 +msgid "Undefined" +msgstr "" + +#: journal/choices.py:32 +msgid "Unknown" +msgstr "" + +#: journal/choices.py:33 +msgid "Annual" +msgstr "" + +#: journal/choices.py:34 +msgid "Bimonthly (every two months)" +msgstr "" + +#: journal/choices.py:35 +msgid "Semiweekly (twice a week)" +msgstr "" + +#: journal/choices.py:36 +msgid "Daily" +msgstr "" + +#: journal/choices.py:37 +msgid "Biweekly (every two weeks)" +msgstr "" + +#: journal/choices.py:38 +msgid "Semiannual (twice a year)" +msgstr "" + +#: journal/choices.py:39 +msgid "Biennial (every two years)" +msgstr "" + +#: journal/choices.py:40 +msgid "Triennial (every three years)" +msgstr "" + +#: journal/choices.py:41 +msgid "Three times a week" +msgstr "" + +#: journal/choices.py:42 +msgid "Three times a month" +msgstr "" + +#: journal/choices.py:43 +msgid "Irregular (known to be so)" +msgstr "" + +#: journal/choices.py:44 +msgid "Monthly" +msgstr "" + +#: journal/choices.py:45 +msgid "Quarterly" +msgstr "" + +#: journal/choices.py:46 +msgid "Semimonthly (twice a month)" +msgstr "" + +#: journal/choices.py:47 +msgid "Three times a year" +msgstr "" + +#: journal/choices.py:48 +msgid "Weekly" +msgstr "" + +#: journal/choices.py:49 +msgid "Other frequencies" +msgstr "" + +#: journal/choices.py:53 +msgid "Basic Roman" +msgstr "" + +#: journal/choices.py:54 +msgid "Extensive Roman" +msgstr "" + +#: journal/choices.py:55 +msgid "Cirillic" +msgstr "" + +#: journal/choices.py:56 +msgid "Japanese" +msgstr "" + +#: journal/choices.py:57 +msgid "Chinese" +msgstr "" + +#: journal/choices.py:58 +msgid "Korean" +msgstr "" + +#: journal/choices.py:59 +msgid "Another alphabet" +msgstr "" + +#: journal/choices.py:63 +msgid "American Psychological Association" +msgstr "" + +#: journal/choices.py:64 +msgid "iso 690/87 - international standard organization" +msgstr "" + +#: journal/choices.py:65 +msgid "nbr 6023/89 - associação nacional de normas técnicas" +msgstr "" + +#: journal/choices.py:66 +msgid "other standard" +msgstr "" + +#: journal/choices.py:70 +msgid "" +"the vancouver group - uniform requirements for manuscripts submitted to " +"biomedical journals" +msgstr "" + +#: journal/choices.py:76 +msgid "Conference" +msgstr "" + +#: journal/choices.py:77 +msgid "Monograph" +msgstr "" + +#: journal/choices.py:78 +msgid "Conference papers as Monograph" +msgstr "" + +#: journal/choices.py:79 +msgid "Project papers as Monograph" +msgstr "" + +#: journal/choices.py:80 +msgid "Project and Conference papers as monograph" +msgstr "" + +#: journal/choices.py:81 +msgid "Monograph Series" +msgstr "" + +#: journal/choices.py:82 +msgid "Conference papers as Monograph Series" +msgstr "" + +#: journal/choices.py:83 +msgid "Project papers as Monograph Series" +msgstr "" + +#: journal/choices.py:84 +msgid "Document in a non conventional form" +msgstr "" + +#: journal/choices.py:85 +msgid "Conference papers in a non conventional form" +msgstr "" + +#: journal/choices.py:86 +msgid "Project papers in a non conventional form" +msgstr "" + +#: journal/choices.py:87 +msgid "Project" +msgstr "" + +#: journal/choices.py:88 +msgid "Serial" +msgstr "" + +#: journal/choices.py:89 +msgid "Conference papers as Periodical Series" +msgstr "" + +#: journal/choices.py:90 +msgid "Conference and Project papers as periodical series" +msgstr "" + +#: journal/choices.py:91 +msgid "Project papers as Periodical Series" +msgstr "" + +#: journal/choices.py:92 +msgid "Thesis and Dissertation" +msgstr "" + +#: journal/choices.py:93 +msgid "Thesis Series" +msgstr "" + +#: journal/choices.py:97 +msgid "Scientific/technical" +msgstr "" + +#: journal/choices.py:98 +msgid "Divulgation" +msgstr "" + +#: journal/choices.py:103 +msgid "Analytical of a monograph" +msgstr "" + +#: journal/choices.py:104 +msgid "Analytical of a monograph in a collection" +msgstr "" + +#: journal/choices.py:105 +msgid "Analytical of a monograph in a serial" +msgstr "" + +#: journal/choices.py:106 +msgid "Analytical of a serial" +msgstr "" + +#: journal/choices.py:107 +msgid "Collective level" +msgstr "" + +#: journal/choices.py:108 +msgid "Monographic level" +msgstr "" + +#: journal/choices.py:109 +msgid "Monographic in a collection" +msgstr "" + +#: journal/choices.py:110 +msgid "Monographic series level" +msgstr "" + +#: journal/choices.py:114 +msgid "DATABASE" +msgstr "" + +#: journal/choices.py:115 +msgid "DIRECTORY" +msgstr "" + +#: journal/choices.py:116 +msgid "OTHER" +msgstr "" + +#: journal/choices.py:120 +msgid "Agricultural Sciences" +msgstr "" + +#: journal/choices.py:121 +msgid "Applied Social Sciences" +msgstr "" + +#: journal/choices.py:122 +msgid "Biological Sciences" +msgstr "" + +#: journal/choices.py:123 +msgid "Engineering" +msgstr "" + +#: journal/choices.py:124 +msgid "Exact and Earth Sciences" +msgstr "" + +#: journal/choices.py:125 +msgid "Health Sciences" +msgstr "" + +#: journal/choices.py:126 +msgid "Human Sciences" +msgstr "" + +#: journal/choices.py:127 +msgid "Linguistic, Literature and Arts" +msgstr "" + +#: journal/choices.py:128 +msgid "Psicanalise" +msgstr "" + +#: journal/choices.py:132 +msgid "Science Citation Index Expanded" +msgstr "" + +#: journal/choices.py:133 +msgid "Social Sciences Citation Index" +msgstr "" + +#: journal/choices.py:134 +msgid "Arts Humanities Citation Index" +msgstr "" + +#: journal/choices.py:143 +msgid "Admitted to the collection" +msgstr "" + +#: journal/choices.py:144 +msgid "Indexing interrupted" +msgstr "" + +#: journal/choices.py:153 +msgid "Ceased journal" +msgstr "" + +#: journal/choices.py:154 +msgid "Not open access" +msgstr "" + +#: journal/choices.py:155 +msgid "by the committee" +msgstr "" + +#: journal/choices.py:156 +msgid "by the editor" +msgstr "" + +#: journal/models.py:66 +msgid "ISSN Title" +msgstr "" + +#: journal/models.py:67 +msgid "ISO Short Title" +msgstr "" + +#: journal/models.py:70 +msgid "New Title" +msgstr "" + +#: journal/models.py:79 +msgid "Initial Year" +msgstr "" + +#: journal/models.py:82 +msgid "Month Year" +msgstr "" + +#: journal/models.py:85 +msgid "Initial Volume" +msgstr "" + +#: journal/models.py:88 +msgid "Initial Number" +msgstr "" + +#: journal/models.py:91 +msgid "Termination year" +msgstr "" + +#: journal/models.py:94 +msgid "Termination month" +msgstr "" + +#: journal/models.py:97 +msgid "Final Volume" +msgstr "" + +#: journal/models.py:100 +msgid "Final Number" +msgstr "" + +#: journal/models.py:102 +msgid "ISSN Print" +msgstr "" + +#: journal/models.py:104 +msgid "ISSN Eletronic" +msgstr "" + +#: journal/models.py:106 +msgid "ISSNL" +msgstr "" + +#: journal/models.py:111 +msgid "Parallel titles" +msgstr "" + +#: journal/models.py:136 +msgid "Dates" +msgstr "" + +#: journal/models.py:137 +msgid "Issns" +msgstr "" + +#: journal/models.py:144 journal/models.py:320 +msgid "ISSN Journal" +msgstr "" + +#: journal/models.py:145 journal/wagtail_hooks.py:26 +msgid "ISSN Journals" +msgstr "" + +#: journal/models.py:232 +msgid "Unable to create or update official journal {}" +msgstr "" + +#: journal/models.py:276 journal/models.py:1930 +msgid "URL" +msgstr "" + +#: journal/models.py:281 journal/models.py:610 +msgid "Social Network" +msgstr "" + +#: journal/models.py:282 +msgid "Social Networks" +msgstr "" + +#: journal/models.py:325 +msgid "Journal Title" +msgstr "" + +#: journal/models.py:326 +msgid "Short Title" +msgstr "" + +#: journal/models.py:328 +msgid "Other titles" +msgstr "" + +#: journal/models.py:338 +msgid "Submission online URL" +msgstr "" + +#: journal/models.py:342 +msgid "Address" +msgstr "" + +#: journal/models.py:348 +msgid "Open Access status" +msgstr "" + +#: journal/models.py:356 journal/models.py:621 +msgid "Open Science accordance form" +msgstr "" + +#: journal/models.py:361 journal/models.py:886 +msgid "" +"Suggested form: https://wp.scielo." +"org/wp-content/uploads/Formulario-de-Conformidade-Ciencia-Aberta.docx" +msgstr "" + +#: journal/models.py:367 +msgid "Main Collection" +msgstr "" + +#: journal/models.py:373 +msgid "Frequency" +msgstr "" + +#: journal/models.py:380 +msgid "Publishing Model" +msgstr "" + +#: journal/models.py:388 +msgid "Subject Descriptors" +msgstr "" + +#: journal/models.py:393 +msgid "Study Areas" +msgstr "" + +#: journal/models.py:398 +msgid "Web of Knowledge Databases" +msgstr "" + +#: journal/models.py:403 +msgid "Web of Knowledge Subject Categories" +msgstr "" + +#: journal/models.py:408 +msgid "Text Languages" +msgstr "" + +#: journal/models.py:414 +msgid "Abstract Languages" +msgstr "" + +#: journal/models.py:425 +msgid "Alphabet" +msgstr "" + +#: journal/models.py:432 +msgid "Type of Literature" +msgstr "" + +#: journal/models.py:439 +msgid "Treatment Level" +msgstr "" + +#: journal/models.py:446 +msgid "Level of Publication" +msgstr "" + +#: journal/models.py:453 +msgid "National Code" +msgstr "" + +#: journal/models.py:458 +msgid "Classification" +msgstr "" + +#: journal/models.py:470 journal/models.py:2289 +msgid "Indexed At" +msgstr "" + +#: journal/models.py:475 +msgid "Additional Index At" +msgstr "" + +#: journal/models.py:479 +msgid "Journal URL" +msgstr "" + +#: journal/models.py:490 +msgid "Center code" +msgstr "" + +#: journal/models.py:495 +msgid "Identification Number" +msgstr "" + +#: journal/models.py:501 +msgid "Ftp" +msgstr "" + +#: journal/models.py:507 +msgid "User Subscription" +msgstr "" + +#: journal/models.py:518 +msgid "Section" +msgstr "" + +#: journal/models.py:524 +msgid "Has Supplement" +msgstr "" + +#: journal/models.py:529 +msgid "Is supplement" +msgstr "" + +#: journal/models.py:535 +msgid "Acronym Letters" +msgstr "" + +#: journal/models.py:543 +msgid "Authors names" +msgstr "" + +#: journal/models.py:545 +msgid "" +"For compound surnames, create clear identification [uppercase, bold, and/or " +"hyphen]" +msgstr "" + +#: journal/models.py:551 +msgid "Manuscript Length" +msgstr "" + +#: journal/models.py:552 +msgid "Manuscript Length (consider spacing)" +msgstr "" + +#: journal/models.py:561 +msgid "DigitalPreservationAgency" +msgstr "" + +#: journal/models.py:581 thematic_areas/models.py:158 +#: thematic_areas/wagtail_hooks.py:196 +msgid "Thematic Areas" +msgstr "" + +#: journal/models.py:584 +msgid "Mission" +msgstr "" + +#: journal/models.py:585 +msgid "Brief History" +msgstr "" + +#: journal/models.py:586 +msgid "Focus and Scope" +msgstr "" + +#: journal/models.py:590 +msgid "Owner" +msgstr "" + +#: journal/models.py:595 +msgid "Copyright Holder" +msgstr "" + +#: journal/models.py:604 +msgid "Contact e-mail" +msgstr "" + +#: journal/models.py:624 +msgid "Open data" +msgstr "" + +#: journal/models.py:625 journalpage/templates/journalpage/about.html:227 +#: journalpage/templates/journalpage/about.html:421 +msgid "Preprint" +msgstr "" + +#: journal/models.py:626 +msgid "Peer review" +msgstr "" + +#: journal/models.py:632 +msgid "Ethics" +msgstr "" + +#: journal/models.py:637 +msgid "Ethics Committee" +msgstr "" + +#: journal/models.py:642 +msgid "Copyright" +msgstr "" + +#: journal/models.py:647 +msgid "Intellectual Property / Terms of use / Website responsibility" +msgstr "" + +#: journal/models.py:652 +msgid "Intellectual Property / Terms of use / Author responsibility" +msgstr "" + +#: journal/models.py:657 +msgid "Retraction Policy | Ethics and Misconduct Policy" +msgstr "" + +#: journal/models.py:663 +msgid "Digital Preservation" +msgstr "" + +#: journal/models.py:668 +msgid "Conflict of interest policy" +msgstr "" + +#: journal/models.py:673 +msgid "Similarity Verification Software Adoption" +msgstr "" + +#: journal/models.py:678 +msgid "Gender Issues" +msgstr "" + +#: journal/models.py:683 +msgid "Fee Charging" +msgstr "" + +#: journal/models.py:687 journal/models.py:768 journal/models.py:2050 +msgid "Notes" +msgstr "" + +#: journal/models.py:710 +msgid "Accepted Document Types" +msgstr "" + +#: journal/models.py:715 +msgid "Authors Contributions" +msgstr "" + +#: journal/models.py:720 +msgid "Preparing Manuscript" +msgstr "" + +#: journal/models.py:725 +msgid "Digital Assets" +msgstr "" + +#: journal/models.py:730 +msgid "Citations and References" +msgstr "" + +#: journal/models.py:735 +msgid "Supplementary Documents Required for Submission" +msgstr "" + +#: journal/models.py:740 +msgid "Financing Statement" +msgstr "" + +#: journal/models.py:745 +msgid "Acknowledgements" +msgstr "" + +#: journal/models.py:750 +msgid "Additional Information" +msgstr "" + +#: journal/models.py:763 +msgid "Scope and about" +msgstr "" + +#: journal/models.py:765 +msgid "Website" +msgstr "" + +#: journal/models.py:766 +msgid "Open Science" +msgstr "" + +#: journal/models.py:767 +msgid "Journal Policy" +msgstr "" + +#: journal/models.py:770 +msgid "Legacy Compatibility" +msgstr "" + +#: journal/models.py:773 +msgid "Instructions for Authors" +msgstr "" + +#: journal/models.py:850 journal/models.py:958 +msgid "Unable to create or update journal {}" +msgstr "" + +#: journal/models.py:1033 +msgid "" +"Refers to sharing data, codes, methods and other materials used and \n" +" resulting from research that are usually the basis of the texts " +"of articles published by journals. \n" +" Guide: https://wp.scielo.org/wp-content/uploads/" +"Guia_TOP_pt.pdf" +msgstr "" + +#: journal/models.py:1049 +msgid "" +"A preprint is defined as a manuscript ready for submission to a journal that " +"is deposited \n" +" with trusted preprint servers before or in parallel with " +"submission to a journal. \n" +" This practice joins that of continuous publication as mechanisms " +"to speed up research communication. \n" +" Preprints share with journals the originality in the publication " +"of articles and inhibit the use of \n" +" the double-blind procedure in the evaluation of manuscripts. \n" +" The use of preprints is an option and choice of the authors and " +"it is up to the journals to adapt \n" +" their policies to accept the submission of manuscripts " +"previously deposited in a preprints server \n" +" recognized by the journal." +msgstr "" + +#: journal/models.py:1069 +msgid "" +"Insert here a brief history with events and milestones in the trajectory of " +"the journal" +msgstr "" + +#: journal/models.py:1081 +msgid "Insert here the focus and scope of the journal" +msgstr "" + +#: journal/models.py:1090 +msgid "Brief description of the review flow" +msgstr "" + +#: journal/models.py:1102 +msgid "" +"Authors must attach a statement of approval from the ethics committee of \n" +" the institution responsible for approving the research" +msgstr "" + +#: journal/models.py:1116 +msgid "" +"Describe the policy used by the journal on copyright issues. \n" +" We recommend that this section be in accordance with the " +"recommendations of the SciELO criteria, \n" +" item 5.2.10.1.2. - Copyright" +msgstr "" + +#: journal/models.py:1131 +msgid "" +"EX. DOAJ: Copyright terms applied to posted content must be clearly stated " +"and separate \n" +" from copyright terms applied to the website" +msgstr "" + +#: journal/models.py:1148 +msgid "" +"The author's declaration of responsibility for the content published in \n" +" the journal that owns the copyright Ex. DOAJ: The terms of " +"copyright must not contradict \n" +" the terms of the license or the terms of the open access policy. " +"\"All rights reserved\" is \n" +" never appropriate for open access content" +msgstr "" + +#: journal/models.py:1168 +msgid "" +"Describe here how the journal will deal with ethical issues and/or \n" +" issues that may damage the journal's reputation. What is the " +"journal's position regarding \n" +" the retraction policy that the journal will adopt in cases of " +"misconduct. \n" +" Best practice guide: \n" +" https://wp.scielo.org/wp-content/uploads/Guia-de-Boas-Praticas-" +"para-o-Fortalecimento-da-Etica-na-Publicacao-Cientifica.pdf" +msgstr "" + +#: journal/models.py:1202 +msgid "" +"Please describe here if the journal uses any similarity verification " +"software. Describe the policy. What cases are checked?\n" +" At what stage in the workflow are manuscripts verified?" +msgstr "" + +#: journal/models.py:1205 +msgid "Similarity erification software" +msgstr "" + +#: journal/models.py:1211 +msgid "" +"Describe the policy. Which cases are verified? At what point in the workflow " +"are the manuscripts checked?" +msgstr "" + +#: journal/models.py:1215 +msgid "Write the name of the software used." +msgstr "" + +#: journal/models.py:1218 +msgid "Write the link of the software used." +msgstr "" + +#: journal/models.py:1238 +msgid "" +"Describe how your journal considers gender diversity in the group of " +"authors, editorial board, and reviewers." +msgstr "" + +#: journal/models.py:1260 +msgid "Concepts" +msgstr "" + +#: journal/models.py:1265 +msgid "" +"Please describe any charges to authors related to the submission or " +"publication of works.\n" +" For article publication: Clearly state when no fees are charged.\n" +" Under what circumstances are charges applicable? Are there any " +"discounts?\n" +" SciELO Statement on Financial Sustainability: \n" +" https://mailchi.mp/scielo/declaracao-sobre-sustentabilidade\n" +" " +msgstr "" + +#: journal/models.py:1294 +msgid "" +"Describe the types of documents that can be submitted to the journal.\n" +" Provide information regarding the positioning related to " +"preprint submissions.\n" +" Examples: Original Article, Review Article, Preprints " +"and etc." +msgstr "" + +#: journal/models.py:1313 +msgid "" +"Description of how authors contributions should be specified.\n" +" Does it use any taxonomy? If yes, which one?\n" +" Does the article text explicitly state the authors contributions?\n" +" Preferably, use the CREDiT taxonomy structure: https://casrai.org/credit/\n" +" " +msgstr "" + +#: journal/models.py:1335 +msgid "" +"Specify how authors should present their research and explain why the work " +"is suitable for publication in the journal." +msgstr "" + +#: journal/models.py:1348 +msgid "" +"Please describe how tables, charts, figures, illustrations, maps, diagrams, " +"and other digital assets in the documents should be presented for " +"publication in the journal. It is important to specify technical details " +"such as format, resolution, size, etc." +msgstr "" + +#: journal/models.py:1364 +msgid "" +"Describe the citation and referencing style used by the journal. Provide " +"examples of document types according to the style." +msgstr "" + +#: journal/models.py:1382 +msgid "" +"Describe any supplementary documents requested from authors during " +"manuscript submission. Examples may include Open Science Compliance Form, " +"authors' agreement statement, ethics committee approval form, etc." +msgstr "" + +#: journal/models.py:1399 +msgid "???" +msgstr "" + +#: journal/models.py:1408 +msgid "Describe the acknowledgments." +msgstr "" + +#: journal/models.py:1422 +msgid "Free field for entering additional information or data." +msgstr "" + +#: journal/models.py:1448 +msgid "Descreva o teim do check list" +msgstr "" + +#: journal/models.py:1475 journal/models.py:1929 +msgid "Acronym" +msgstr "" + +#: journal/models.py:1606 +msgid "Journal Acronym" +msgstr "" + +#: journal/models.py:1622 +msgid "SciELO Journal" +msgstr "" + +#: journal/models.py:1623 journal/wagtail_hooks.py:99 +msgid "SciELO Journals" +msgstr "" + +#: journal/models.py:1695 +msgid "Unable to create or update SciELO journal {}" +msgstr "" + +#: journal/models.py:1931 +msgid "Description" +msgstr "" + +#: journal/models.py:1933 +msgid "Type" +msgstr "" + +#: journal/models.py:2051 +msgid "Creation Date" +msgstr "" + +#: journal/models.py:2052 +msgid "Update Date" +msgstr "" + +#: journal/models.py:2105 +msgid "Event year" +msgstr "" + +#: journal/models.py:2107 +msgid "Event month" +msgstr "" + +#: journal/models.py:2113 +msgid "Event day" +msgstr "" + +#: journal/models.py:2116 +msgid "Event type" +msgstr "" + +#: journal/models.py:2123 +msgid "Indexing interruption reason" +msgstr "" + +#: journal/models.py:2141 +msgid "Event" +msgstr "" + +#: journal/models.py:2142 +msgid "Events" +msgstr "" + +#: journal/models.py:2241 +msgid "Scielo Issn" +msgstr "" + +#: journal/models.py:2300 +msgid "Identifier" +msgstr "" + +#: journal/models.py:2306 +msgid "Title in Database" +msgstr "" + +#: journal/models.py:2307 +msgid "Title in databases" +msgstr "" + +#: journal/models.py:2395 +msgid "Enter the URI of the data repository." +msgstr "" + +#: journal/wagtail_hooks.py:245 +msgid "Article Submission Format Check List" +msgstr "" + +#: journalpage/templates/journalpage/SciELO - Brasil.html:139 Brasil.html:181 +msgid "Lista alfabética de periódicos" +msgstr "" + +#: journalpage/templates/journalpage/SciELO - Brasil.html:144 +msgid "Lista temática de periódicos" +msgstr "" + +#: journalpage/templates/journalpage/SciELO - Brasil.html:149 Brasil.html:191 +msgid "Busca" +msgstr "" + +#: journalpage/templates/journalpage/SciELO - Brasil.html:154 Brasil.html:196 +#: Brasil.html:438 Brasil.html:469 +#: journalpage/templates/journalpage/includes/levelMenu.html:36 +#: journalpage/templates/journalpage/includes/levelMenu.html:67 +msgid "Métricas" +msgstr "" + +#: journalpage/templates/journalpage/SciELO - Brasil.html:159 +msgid "Sobre o SciELO Brasil" +msgstr "" + +#: journalpage/templates/journalpage/SciELO - Brasil.html:164 Brasil.html:211 +msgid "Contatos" +msgstr "" + +#: journalpage/templates/journalpage/SciELO - Brasil.html:169 +msgid "Reportar erro" +msgstr "" + +#: journalpage/templates/journalpage/SciELO - Brasil.html:176 +msgid "Coleções nacionais e temáticas" +msgstr "" + +#: journalpage/templates/journalpage/SciELO - Brasil.html:186 +msgid "Lista de periódicos por assunto" +msgstr "" + +#: journalpage/templates/journalpage/SciELO - Brasil.html:201 +msgid "Acesso OAI e RSS" +msgstr "" + +#: journalpage/templates/journalpage/SciELO - Brasil.html:206 +msgid "Sobre a Rede SciELO" +msgstr "" + +#: journalpage/templates/journalpage/SciELO - Brasil.html:220 +msgid "Blog SciELO em Perspectiva" +msgstr "" + +#: journalpage/templates/journalpage/SciELO - Brasil.html:250 Brasil.html:314 +#: Brasil.html:395 +msgid "Submissão de manuscritos" +msgstr "" + +#: journalpage/templates/journalpage/SciELO - Brasil.html:254 Brasil.html:318 +#: Brasil.html:397 Brasil.html:618 +#: journalpage/templates/journalpage/about.html:80 +#: journalpage/templates/journalpage/about.html:380 +#: journalpage/templates/journalpage/includes/journal_info.html:89 +msgid "Sobre o periódico" +msgstr "" + +#: journalpage/templates/journalpage/SciELO - Brasil.html:257 Brasil.html:321 +#: Brasil.html:398 +#: journalpage/templates/journalpage/includes/journal_info.html:90 +msgid "Corpo Editorial" +msgstr "" + +#: journalpage/templates/journalpage/SciELO - Brasil.html:260 Brasil.html:324 +#: Brasil.html:399 +#: journalpage/templates/journalpage/includes/journal_info.html:91 +msgid "Instruções aos autores" +msgstr "" + +#: journalpage/templates/journalpage/SciELO - Brasil.html:263 Brasil.html:327 +#: Brasil.html:400 journalpage/templates/journalpage/about.html:213 +#: journalpage/templates/journalpage/about.html:412 +#: journalpage/templates/journalpage/includes/journal_info.html:92 +msgid "Política editorial" +msgstr "" + +#: journalpage/templates/journalpage/SciELO - Brasil.html:266 Brasil.html:330 +#: Brasil.html:728 journalpage/templates/journalpage/about.html:160 +#: journalpage/templates/journalpage/about.html:395 +msgid "Contato" +msgstr "" + +#: journalpage/templates/journalpage/SciELO - Brasil.html:357 +#: journalpage/templates/journalpage/includes/journal_info.html:21 +msgid "Publicação de" +msgstr "" + +#: journalpage/templates/journalpage/SciELO - Brasil.html:362 +#: journalpage/templates/journalpage/includes/journal_info.html:26 +msgid "Área" +msgstr "" + +#: journalpage/templates/journalpage/SciELO - Brasil.html:370 +#: journalpage/templates/journalpage/includes/journal_info.html:37 +msgid "Versão impressa ISSN" +msgstr "" + +#: journalpage/templates/journalpage/SciELO - Brasil.html:377 +#: journalpage/templates/journalpage/includes/journal_info.html:44 +msgid "Versão on-line ISSN" +msgstr "" + +#: journalpage/templates/journalpage/SciELO - Brasil.html:419 +#: journalpage/templates/journalpage/includes/levelMenu.html:17 +msgid "Todos os números" +msgstr "" + +#: journalpage/templates/journalpage/SciELO - Brasil.html:421 +#: journalpage/templates/journalpage/includes/levelMenu.html:19 +#: journalpage/templates/journalpage/includes/levelMenu.html:105 +msgid "número anterior" +msgstr "" + +#: journalpage/templates/journalpage/SciELO - Brasil.html:422 +#: journalpage/templates/journalpage/includes/levelMenu.html:20 +msgid "Número anterior" +msgstr "" + +#: journalpage/templates/journalpage/SciELO - Brasil.html:424 +#: journalpage/templates/journalpage/includes/levelMenu.html:22 +#: journalpage/templates/journalpage/includes/levelMenu.html:108 +msgid "número atual" +msgstr "" + +#: journalpage/templates/journalpage/SciELO - Brasil.html:425 +#: journalpage/templates/journalpage/includes/levelMenu.html:23 +msgid "Número atual" +msgstr "" + +#: journalpage/templates/journalpage/SciELO - Brasil.html:427 +#: journalpage/templates/journalpage/includes/levelMenu.html:25 +msgid "número seguinte" +msgstr "" + +#: journalpage/templates/journalpage/SciELO - Brasil.html:428 +#: journalpage/templates/journalpage/includes/levelMenu.html:26 +msgid "Número seguinte" +msgstr "" + +#: journalpage/templates/journalpage/SciELO - Brasil.html:435 Brasil.html:466 +#: journalpage/templates/journalpage/includes/levelMenu.html:33 +#: journalpage/templates/journalpage/includes/levelMenu.html:64 +#: journalpage/templates/journalpage/includes/levelMenu.html:117 +#: search/templates/search.html:43 +msgid "Buscar" +msgstr "" + +#: journalpage/templates/journalpage/SciELO - Brasil.html:463 +#: journalpage/templates/journalpage/includes/levelMenu.html:61 +msgid "Todos" +msgstr "" + +#: journalpage/templates/journalpage/SciELO - Brasil.html:590 +msgid "Imprimir" +msgstr "" + +#: journalpage/templates/journalpage/SciELO - Brasil.html:616 +#: journalpage/templates/journalpage/about.html:78 +msgid "Periódicos" +msgstr "" + +#: journalpage/templates/journalpage/SciELO - Brasil.html:669 +#: journalpage/templates/journalpage/about.html:111 +msgid "Título do periódico conforme registro do ISSN:" +msgstr "" + +#: journalpage/templates/journalpage/SciELO - Brasil.html:673 +#: journalpage/templates/journalpage/about.html:115 +msgid "Título abreviado:" +msgstr "" + +#: journalpage/templates/journalpage/SciELO - Brasil.html:677 +#: journalpage/templates/journalpage/about.html:119 +msgid "Publicação de:" +msgstr "" + +#: journalpage/templates/journalpage/SciELO - Brasil.html:681 +#: journalpage/templates/journalpage/about.html:122 +msgid "Periodicidade:" +msgstr "" + +#: journalpage/templates/journalpage/SciELO - Brasil.html:685 +#: journalpage/templates/journalpage/about.html:126 +msgid "Modalidade de publicação:" +msgstr "" + +#: journalpage/templates/journalpage/SciELO - Brasil.html:689 +#: journalpage/templates/journalpage/about.html:130 +msgid "Ano de criação do periódico:" +msgstr "" + +#: journalpage/templates/journalpage/SciELO - Brasil.html:695 +#: journalpage/templates/journalpage/about.html:133 +msgid "Área:" +msgstr "" + +#: journalpage/templates/journalpage/SciELO - Brasil.html:701 +#: journalpage/templates/journalpage/about.html:137 +msgid "Versão impressa:" +msgstr "" + +#: journalpage/templates/journalpage/SciELO - Brasil.html:707 +#: journalpage/templates/journalpage/about.html:143 +msgid "Versão on-line ISSN:" +msgstr "" + +#: journalpage/templates/journalpage/SciELO - Brasil.html:713 +#: journalpage/templates/journalpage/about.html:148 +#: journalpage/templates/journalpage/about.html:386 +msgid "Missão" +msgstr "" + +#: journalpage/templates/journalpage/SciELO - Brasil.html:718 +#: journalpage/templates/journalpage/about.html:152 +#: journalpage/templates/journalpage/about.html:389 +msgid "Breve Histórico" +msgstr "" + +#: journalpage/templates/journalpage/SciELO - Brasil.html:723 +#: journalpage/templates/journalpage/about.html:156 +#: journalpage/templates/journalpage/about.html:392 +msgid "Foco e escopo" +msgstr "" + +#: journalpage/templates/journalpage/SciELO - Brasil.html:732 +#: journalpage/templates/journalpage/about.html:164 +msgid "Endereço completo da unidade / instituição responsável pelo periódico:" +msgstr "" + +#: journalpage/templates/journalpage/SciELO - Brasil.html:736 +#: journalpage/templates/journalpage/about.html:168 +msgid "Cidade:" +msgstr "" + +#: journalpage/templates/journalpage/SciELO - Brasil.html:737 +msgid "Inserir cidade aqui" +msgstr "" + +#: journalpage/templates/journalpage/SciELO - Brasil.html:740 +#: journalpage/templates/journalpage/about.html:172 +msgid "Estado:" +msgstr "" + +#: journalpage/templates/journalpage/SciELO - Brasil.html:741 +msgid "Inserir estado aqui" +msgstr "" + +#: journalpage/templates/journalpage/SciELO - Brasil.html:744 +#: journalpage/templates/journalpage/about.html:176 +msgid "País:" +msgstr "" + +#: journalpage/templates/journalpage/SciELO - Brasil.html:745 +msgid "Inserir país aqui" +msgstr "" + +#: journalpage/templates/journalpage/SciELO - Brasil.html:748 +#: journalpage/templates/journalpage/about.html:180 +msgid "E-mail:" +msgstr "" + +#: journalpage/templates/journalpage/SciELO - Brasil.html:752 +#: journalpage/templates/journalpage/about.html:184 +#: journalpage/templates/journalpage/about.html:398 +msgid "Websites e Mídias Sociais" +msgstr "" + +#: journalpage/templates/journalpage/SciELO - Brasil.html:760 +#: journalpage/templates/journalpage/about.html:192 +#: journalpage/templates/journalpage/about.html:401 +msgid "Fontes de indexação" +msgstr "" + +#: journalpage/templates/journalpage/SciELO - Brasil.html:766 +#: journalpage/templates/journalpage/about.html:198 +#: journalpage/templates/journalpage/about.html:404 +msgid "Patrocinadores e agências de Fomento" +msgstr "" + +#: journalpage/templates/journalpage/about.html:206 +#: journalpage/templates/journalpage/about.html:407 +msgid "Preservação digital" +msgstr "" + +#: journalpage/templates/journalpage/about.html:215 +#: journalpage/templates/journalpage/about.html:415 +msgid "Conformidade com a Ciência Aberta" +msgstr "" + +#: journalpage/templates/journalpage/about.html:221 +#: journalpage/templates/journalpage/about.html:418 +msgid "Dados abertos" +msgstr "" + +#: journalpage/templates/journalpage/about.html:233 +#: journalpage/templates/journalpage/about.html:424 +msgid "Peer review informado" +msgstr "" + +#: journalpage/templates/journalpage/about.html:242 +#: journalpage/templates/journalpage/about.html:427 +#: thematic_areas/choices.py:272 +msgid "Ética" +msgstr "" + +#: journalpage/templates/journalpage/about.html:248 +#: journalpage/templates/journalpage/about.html:429 +msgid "Comitê de Ética" +msgstr "" + +#: journalpage/templates/journalpage/about.html:252 +#: journalpage/templates/journalpage/about.html:432 +msgid "Direitos Autorais" +msgstr "" + +#: journalpage/templates/journalpage/about.html:256 +#: journalpage/templates/journalpage/about.html:435 +msgid "Propriedade Intelectual" +msgstr "" + +#: journalpage/templates/journalpage/about.html:260 +msgid "Responsabilidade do site:" +msgstr "" + +#: journalpage/templates/journalpage/about.html:265 +msgid "Responsabilidade do autor:" +msgstr "" + +#: journalpage/templates/journalpage/about.html:269 +#: journalpage/templates/journalpage/about.html:438 +msgid "Política de Ética e Más condutas" +msgstr "" + +#: journalpage/templates/journalpage/about.html:271 +msgid "Política de retratação:" +msgstr "" + +#: journalpage/templates/journalpage/about.html:278 +#: journalpage/templates/journalpage/about.html:441 +msgid "Política sobre Conflito de Interesses" +msgstr "" + +#: journalpage/templates/journalpage/about.html:284 +#: journalpage/templates/journalpage/about.html:444 +msgid "Questões de gênero" +msgstr "" + +#: journalpage/templates/journalpage/about.html:290 +msgid "Licença" +msgstr "" + +#: journalpage/templates/journalpage/about.html:294 +msgid "licença:" +msgstr "" + +#: journalpage/templates/journalpage/about.html:297 +msgid "Cobrança de taxas" +msgstr "" + +#: journalpage/templates/journalpage/about.html:301 +msgid "Moeda:" +msgstr "" + +#: journalpage/templates/journalpage/about.html:301 +msgid "Valor:" +msgstr "" + +#: journalpage/templates/journalpage/about.html:305 +msgid "CORPO EDITORIAL" +msgstr "" + +#: journalpage/templates/journalpage/about.html:324 +msgid "INSTRUÇÕES PARA OS AUTORES" +msgstr "" + +#: journalpage/templates/journalpage/about.html:326 +msgid "Tipos de documentos aceitos" +msgstr "" + +#: journalpage/templates/journalpage/about.html:333 +#: journalpage/templates/journalpage/about.html:472 +msgid "Contribuição dos Autores" +msgstr "" + +#: journalpage/templates/journalpage/about.html:338 +msgid "Formato de envio dos artigos" +msgstr "" + +#: journalpage/templates/journalpage/about.html:344 +msgid "Ativos digitais" +msgstr "" + +#: journalpage/templates/journalpage/about.html:348 +msgid "Citações e referências" +msgstr "" + +#: journalpage/templates/journalpage/about.html:352 +#: journalpage/templates/journalpage/about.html:484 +msgid "Documentos Suplementares Necessários para Submissão" +msgstr "" + +#: journalpage/templates/journalpage/about.html:356 +#: journalpage/templates/journalpage/about.html:487 +msgid "Declaração de Financiamento" +msgstr "" + +#: journalpage/templates/journalpage/about.html:360 +#: journalpage/templates/journalpage/about.html:490 +msgid "Agradecimentos" +msgstr "" + +#: journalpage/templates/journalpage/about.html:364 +msgid "Informações adicionais" +msgstr "" + +#: journalpage/templates/journalpage/about.html:369 +msgid "*dados precisam estar disponíveis em alfabeto romano" +msgstr "" + +#: journalpage/templates/journalpage/about.html:383 +msgid "Ficha Bibliográfica" +msgstr "" + +#: journalpage/templates/journalpage/about.html:449 +msgid "Corpo editorial" +msgstr "" + +#: journalpage/templates/journalpage/about.html:452 +msgid "Editor-chefe" +msgstr "" + +#: journalpage/templates/journalpage/about.html:455 +msgid "Editor-executivo" +msgstr "" + +#: journalpage/templates/journalpage/about.html:458 +msgid "Editor(es) Associados ou de Seção / Área" +msgstr "" + +#: journalpage/templates/journalpage/about.html:461 +msgid "Equipe técnica" +msgstr "" + +#: journalpage/templates/journalpage/about.html:466 +msgid "Instruções para os Autores" +msgstr "" + +#: journalpage/templates/journalpage/about.html:469 +msgid "Tipos de Documentos Aceitos" +msgstr "" + +#: journalpage/templates/journalpage/about.html:475 +msgid "Formato de Envio dos Artigos" +msgstr "" + +#: journalpage/templates/journalpage/about.html:478 +msgid "Ativos Digitais" +msgstr "" + +#: journalpage/templates/journalpage/about.html:481 +msgid "Citações e Referências" +msgstr "" + +#: journalpage/templates/journalpage/about.html:493 +msgid "Informações Adicionais" +msgstr "" + +#: journalpage/templates/journalpage/includes/levelMenu.html:11 +msgid "Home do periódico" +msgstr "" + +#: journalpage/templates/journalpage/includes/levelMenu.html:101 +msgid "todos" +msgstr "" + +#: location/models.py:28 +msgid "Name of the city" +msgstr "" + +#: location/models.py:38 location/models.py:491 location/wagtail_hooks.py:57 +msgid "City" +msgstr "" + +#: location/models.py:39 +msgid "Cities" +msgstr "" + +#: location/models.py:115 +msgid "State name" +msgstr "" + +#: location/models.py:116 +msgid "State Acronym" +msgstr "" + +#: location/models.py:131 location/models.py:498 location/wagtail_hooks.py:71 +msgid "State" +msgstr "" + +#: location/models.py:132 +msgid "States" +msgstr "" + +#: location/models.py:246 +msgid "Country name" +msgstr "" + +#: location/models.py:247 location/models.py:350 +msgid "Country names" +msgstr "" + +#: location/models.py:337 +msgid "Country Name" +msgstr "" + +#: location/models.py:339 +msgid "Country Acronym (2 char)" +msgstr "" + +#: location/models.py:342 +msgid "Country Acronym (3 char)" +msgstr "" + +#: location/models.py:366 +msgid "Countries" +msgstr "" + +#: location/models.py:532 location/wagtail_hooks.py:26 +#: location/wagtail_hooks.py:132 +msgid "Location" +msgstr "" + +#: location/models.py:533 +msgid "Locations" +msgstr "" + +#: pid_provider/models.py:40 +msgid "XML Post URI" +msgstr "" + +#: pid_provider/models.py:43 +msgid "Get Token URI" +msgstr "" + +#: pid_provider/models.py:45 +msgid "Timeout" +msgstr "" + +#: pid_provider/models.py:46 +msgid "API Username" +msgstr "" + +#: pid_provider/models.py:47 +msgid "API Password" +msgstr "" + +#: pid_provider/models.py:90 +msgid "Request origin" +msgstr "" + +#: pid_provider/models.py:92 +msgid "Result type" +msgstr "" + +#: pid_provider/models.py:93 +msgid "Result message" +msgstr "" + +#: pid_provider/models.py:97 +msgid "Detail" +msgstr "" + +#: pid_provider/models.py:99 pid_provider/models.py:348 +msgid "Origin date" +msgstr "" + +#: pid_provider/models.py:101 xmlsps/models.py:43 +msgid "PID v3" +msgstr "" + +#: pid_provider/models.py:247 pid_provider/models.py:322 +msgid "Package name" +msgstr "" + +#: pid_provider/models.py:248 +msgid "PID type" +msgstr "" + +#: pid_provider/models.py:250 +msgid "PID pid_in_xml" +msgstr "" + +#: pid_provider/models.py:253 +msgid "PID assigned" +msgstr "" + +#: pid_provider/models.py:310 +msgid "issn_epub" +msgstr "" + +#: pid_provider/models.py:312 +msgid "issn_ppub" +msgstr "" + +#: pid_provider/models.py:313 +msgid "pub_year" +msgstr "" + +#: pid_provider/models.py:314 +msgid "volume" +msgstr "" + +#: pid_provider/models.py:315 +msgid "number" +msgstr "" + +#: pid_provider/models.py:316 +msgid "suppl" +msgstr "" + +#: pid_provider/models.py:323 +msgid "v3" +msgstr "" + +#: pid_provider/models.py:324 +msgid "v2" +msgstr "" + +#: pid_provider/models.py:325 +msgid "AOP PID" +msgstr "" + +#: pid_provider/models.py:327 +msgid "elocation id" +msgstr "" + +#: pid_provider/models.py:328 +msgid "fpage" +msgstr "" + +#: pid_provider/models.py:329 +msgid "fpage_seq" +msgstr "" + +#: pid_provider/models.py:330 +msgid "lpage" +msgstr "" + +#: pid_provider/models.py:332 +msgid "Document Publication Year" +msgstr "" + +#: pid_provider/models.py:334 +msgid "main_toc_section" +msgstr "" + +#: pid_provider/models.py:335 +msgid "DOI" +msgstr "" + +#: pid_provider/models.py:338 +msgid "article_titles_texts" +msgstr "" + +#: pid_provider/models.py:340 +msgid "surnames" +msgstr "" + +#: pid_provider/models.py:341 +msgid "collab" +msgstr "" + +#: pid_provider/models.py:342 +msgid "links" +msgstr "" + +#: pid_provider/models.py:344 +msgid "partial_body" +msgstr "" + +#: pid_provider/models.py:353 +msgid "Website publication date" +msgstr "" + +#: pid_provider/models.py:557 +msgid "Found {} records for {}" +msgstr "" + +#: pid_provider/models.py:647 +msgid "" +"The XML content is an ahead of print version but the document {} is already " +"published in an issue" +msgstr "" + +#: pid_provider/models.py:1015 pid_provider/models.py:1027 +#: pid_provider/models.py:1050 +msgid "No attribute enough for disambiguations {}" +msgstr "" + +#: pid_provider/scripts/schedule_pid_provider_for_opac_xmls.py:10 +msgid "Registra XML do site www.scielo.br no pid provider" +msgstr "" + +#: pid_provider/scripts/schedule_pid_provider_for_opac_xmls.py:19 +msgid "" +"Executa diariamente às 23h UTC a carga de XML atualizados de 30 anteriores " +"até hoje" +msgstr "" + +#: pid_provider/wagtail_hooks.py:23 +msgid "Pid Requests" +msgstr "" + +#: pid_provider/wagtail_hooks.py:51 +msgid "Collection Pid Requests" +msgstr "" + +#: pid_provider/wagtail_hooks.py:81 +msgid "Pid Provider XMLs" +msgstr "" + +#: pid_provider/wagtail_hooks.py:120 +msgid "Pid Changes" +msgstr "" + +#: pid_provider/wagtail_hooks.py:143 +msgid "Pid Provider" +msgstr "" + +#: report/models.py:37 +msgid "Complete with the type of report" +msgstr "" + +#: report/models.py:51 +msgid "Publication Year" +msgstr "" + +#: report/wagtail_hooks.py:12 +msgid "Report CSV" +msgstr "" + +#: researcher/models.py:246 +msgid "Given names" +msgstr "" + +#: researcher/models.py:248 +msgid "Last name" +msgstr "" + +#: researcher/models.py:249 +msgid "Suffix" +msgstr "" + +#: researcher/models.py:250 +msgid "Full Name" +msgstr "" + +#: researcher/models.py:253 +msgid "Declared Name" +msgstr "" + +#: researcher/models.py:257 +msgid "Gender identification status" +msgstr "" + +#: researcher/models.py:428 +msgid "ID" +msgstr "" + +#: researcher/models.py:430 +msgid "Source name" +msgstr "" + +#: researcher/wagtail_hooks.py:18 +msgid "Researcher" +msgstr "" + +#: researcher/wagtail_hooks.py:46 +msgid "Researcher Identifier" +msgstr "" + +#: researcher/wagtail_hooks.py:63 +msgid "Affiliation" +msgstr "" + +#: researcher/wagtail_hooks.py:84 +msgid "PersonName" +msgstr "" + +#: search/choices.py:4 +msgid "Periódico" +msgstr "" + +#: search/choices.py:5 +msgid "Ano de publicação" +msgstr "" + +#: search/choices.py:6 +msgid "Tipo de Literatura" +msgstr "" + +#: search/choices.py:7 search/choices.py:10 +msgid "Coleções" +msgstr "" + +#: search/choices.py:8 +msgid "Ano" +msgstr "" + +#: search/choices.py:9 +msgid "Idioma" +msgstr "" + +#: search/choices.py:11 +msgid "Argentina" +msgstr "" + +#: search/choices.py:12 +msgid "Brasil" +msgstr "" + +#: search/choices.py:13 +msgid "Bolívia" +msgstr "" + +#: search/choices.py:14 +msgid "Chile" +msgstr "" + +#: search/choices.py:15 +msgid "Colômbia" +msgstr "" + +#: search/choices.py:16 +msgid "Costa Rica" +msgstr "" + +#: search/choices.py:17 +msgid "Cuba" +msgstr "" + +#: search/choices.py:18 +msgid "Espanha" +msgstr "" + +#: search/choices.py:19 +msgid "México" +msgstr "" + +#: search/choices.py:20 +msgid "Portugal" +msgstr "" + +#: search/choices.py:21 +msgid "Venezuela" +msgstr "" + +#: search/choices.py:22 thematic_areas/choices.py:510 +msgid "Saúde Pública" +msgstr "" + +#: search/choices.py:23 +msgid "Social Sciences" +msgstr "" + +#: search/choices.py:24 +msgid "África do Sul" +msgstr "" + +#: search/choices.py:25 +msgid "Peru" +msgstr "" + +#: search/choices.py:26 +msgid "Uruguai" +msgstr "" + +#: search/choices.py:27 +msgid "Ecuador" +msgstr "" + +#: search/choices.py:28 +msgid "Paraguai" +msgstr "" + +#: search/choices.py:29 +msgid "Índias Ocidentais" +msgstr "" + +#: search/choices.py:30 thematic_areas/choices.py:593 +msgid "Português" +msgstr "" + +#: search/choices.py:31 thematic_areas/choices.py:580 +msgid "Espanhol" +msgstr "" + +#: search/choices.py:32 thematic_areas/choices.py:588 +msgid "Inglês" +msgstr "" + +#: search/choices.py:33 +msgid "Africaner" +msgstr "" + +#: search/choices.py:34 thematic_areas/choices.py:582 +msgid "Francês" +msgstr "" + +#: search/choices.py:35 thematic_areas/choices.py:589 +msgid "Italiano" +msgstr "" + +#: search/choices.py:36 thematic_areas/choices.py:572 +msgid "Alemão" +msgstr "" + +#: search/choices.py:37 thematic_areas/choices.py:573 +msgid "Árabe" +msgstr "" + +#: search/choices.py:38 thematic_areas/choices.py:576 +msgid "Coreano" +msgstr "" + +#: search/choices.py:39 thematic_areas/choices.py:590 +msgid "Japonês" +msgstr "" + +#: search/choices.py:40 +msgid "Búlgaro" +msgstr "" + +#: search/choices.py:41 +msgid "Bósnio" +msgstr "" + +#: search/choices.py:42 search/choices.py:43 +msgid "Catalão" +msgstr "" + +#: search/choices.py:44 thematic_areas/choices.py:595 +msgid "Russo" +msgstr "" + +#: search/choices.py:45 thematic_areas/choices.py:594 +msgid "Romeno" +msgstr "" + +#: search/choices.py:46 +msgid "Ucraniano" +msgstr "" + +#: search/choices.py:47 thematic_areas/choices.py:600 +msgid "Turco" +msgstr "" + +#: search/choices.py:48 thematic_areas/choices.py:597 +msgid "Sueco" +msgstr "" + +#: search/choices.py:49 thematic_areas/choices.py:596 +msgid "Sérvio" +msgstr "" + +#: search/choices.py:50 thematic_areas/choices.py:578 +msgid "Eslovaco" +msgstr "" + +#: search/choices.py:51 thematic_areas/choices.py:579 +msgid "Esloveno" +msgstr "" + +#: search/choices.py:52 thematic_areas/choices.py:592 +msgid "Polonês" +msgstr "" + +#: search/choices.py:53 search/choices.py:54 thematic_areas/choices.py:584 +msgid "Holandês" +msgstr "" + +#: search/choices.py:55 +msgid "Letão" +msgstr "" + +#: search/choices.py:56 +msgid "Lituano" +msgstr "" + +#: search/choices.py:57 +msgid "Islandês" +msgstr "" + +#: search/choices.py:58 thematic_areas/choices.py:585 +msgid "Húngaro" +msgstr "" + +#: search/choices.py:59 +msgid "Croata" +msgstr "" + +#: search/choices.py:60 +msgid "Hebraico" +msgstr "" + +#: search/choices.py:61 thematic_areas/choices.py:581 +msgid "Finlandês" +msgstr "" + +#: search/choices.py:62 thematic_areas/choices.py:575 +msgid "Chinês" +msgstr "" + +#: search/choices.py:63 +msgid "Artigo" +msgstr "" + +#: search/choices.py:64 +msgid "Editorial" +msgstr "" + +#: search/choices.py:65 +msgid "Resenha de livro" +msgstr "" + +#: search/choices.py:66 +msgid "Relato de caso" +msgstr "" + +#: search/choices.py:67 +msgid "Comunicação rápida" +msgstr "" + +#: search/choices.py:68 +msgid "Artigo de revisão" +msgstr "" + +#: search/choices.py:69 +msgid "Relato breve" +msgstr "" + +#: search/choices.py:70 +msgid "Carta" +msgstr "" + +#: search/choices.py:71 +msgid "Artigo de comentário" +msgstr "" + +#: search/choices.py:72 search/choices.py:73 +msgid "Outros" +msgstr "" + +#: search/choices.py:74 search/templates/include/result_doc_actions.html:7 +msgid "Resumo" +msgstr "" + +#: search/choices.py:75 +msgid "Addendum" +msgstr "" + +#: search/choices.py:76 +msgid "Comunicado de imprensa" +msgstr "" + +#: search/choices.py:77 +msgid "Notícia" +msgstr "" + +#: search/choices.py:78 +msgid "Correção" +msgstr "" + +#: search/choices.py:79 +msgid "Discussão" +msgstr "" + +#: search/choices.py:80 +msgid "Obituário" +msgstr "" + +#: search/choices.py:81 +msgid "Em resumo" +msgstr "" + +#: search/templates/cluster.html:10 +msgid "Filtros" +msgstr "" + +#: search/templates/include/result_doc.html:34 +msgid "Volume" +msgstr "" + +#: search/templates/include/result_doc_actions.html:13 +msgid "Texto" +msgstr "" + +#: search/templates/include/search_pagination.html:8 +msgid "Página" +msgstr "" + +#: search/templates/search.html:9 +msgid "Pesquisa | SciELO" +msgstr "" + +#: search/templates/search.html:38 +msgid "Digite sua pesquisa..." +msgstr "" + +#: search/templates/search.html:45 +msgid "Help" +msgstr "" + +#: search/templates/search.html:65 +msgid "registros encontrados para o termo" +msgstr "" + +#: search/templates/search.html:69 +msgid "Tempo da pesquisa" +msgstr "" + +#: search/templates/search.html:69 +msgid "milisegundos" +msgstr "" + +#: search/templates/search.html:72 +msgid "0 registros encontrados para o termo" +msgstr "" + +#: search/templates/search.html:100 +msgid "Ordenar por" +msgstr "" + +#: search/templates/search.html:102 +msgid "Publicação - Mais novos primeiros" +msgstr "" + +#: search/templates/search.html:103 +msgid "Publicação - Mais antigos primeiros" +msgstr "" + +#: search/templates/search.html:104 +msgid "Ordem descrecente de criação" +msgstr "" + +#: search/templates/search.html:105 +msgid "Relevância" +msgstr "" + +#: search/templates/search.html:110 +msgid "Visualizar" +msgstr "" + +#: search/templates/search.html:118 +msgid "Itens por página" +msgstr "" + +#: search/templates/search.html:289 +msgid "" +"O valor do campo página não pode ser maior que a quantidade atual de páginas." +msgstr "" + +#: search/templates/search.html:297 +msgid "O valor do campo página deve ser maior que 0." +msgstr "" + +#: src/packtools/packtools/sps/pid_provider/xml_sps_lib.py:77 +msgid "{} must be xml file or zip file containing xml" +msgstr "" + +#: src/packtools/packtools/sps/pid_provider/xml_sps_lib.py:84 +msgid "Unable to get xml items from {}: {} {}" +msgstr "" + +#: src/packtools/packtools/sps/pid_provider/xml_sps_lib.py:121 +msgid "Unable to get xml items from zip file {}: {} {}" +msgstr "" + +#: src/packtools/packtools/sps/pid_provider/xml_sps_lib.py:186 +msgid "Unable to get xml from {}" +msgstr "" + +#: src/packtools/packtools/sps/pid_provider/xml_sps_lib.py:656 +msgid "Unable to get XMLWithPre.article_publication_date {} {} {}" +msgstr "" + +#: src/packtools/packtools/webapp/forms.py:10 +msgid "URL to statics files" +msgstr "" + +#: src/packtools/packtools/webapp/forms.py:18 +msgid "This type of file is not allowed! Please select another file." +msgstr "" + +#: thematic_areas/choices.py:5 thematic_areas/choices.py:21 +#: thematic_areas/choices.py:118 +msgid "ALL" +msgstr "" + +#: thematic_areas/choices.py:6 thematic_areas/choices.py:22 +#: thematic_areas/choices.py:119 thematic_areas/choices.py:571 +#: thematic_areas/choices.py:605 +msgid "UNDEFINED" +msgstr "" + +#: thematic_areas/choices.py:7 thematic_areas/choices.py:23 +#: thematic_areas/choices.py:120 +msgid "NOT APPLICABLE" +msgstr "" + +#: thematic_areas/choices.py:8 +msgid "Ciências Agrárias" +msgstr "" + +#: thematic_areas/choices.py:9 +msgid "Ciências Biológicas" +msgstr "" + +#: thematic_areas/choices.py:10 +msgid "Ciências da Saúde" +msgstr "" + +#: thematic_areas/choices.py:11 +msgid "Ciências Exatas e da Terra" +msgstr "" + +#: thematic_areas/choices.py:12 +msgid "Ciências Humanas" +msgstr "" + +#: thematic_areas/choices.py:13 +msgid "Ciências Sociais Aplicadas" +msgstr "" + +#: thematic_areas/choices.py:14 +msgid "Engenharias" +msgstr "" + +#: thematic_areas/choices.py:15 +msgid "Linguística, Letras e Artes" +msgstr "" + +#: thematic_areas/choices.py:16 +msgid "Multidisciplinar" +msgstr "" + +#: thematic_areas/choices.py:24 +msgid "Administração" +msgstr "" + +#: thematic_areas/choices.py:25 +msgid "Agronomia" +msgstr "" + +#: thematic_areas/choices.py:26 +msgid "Antropologia" +msgstr "" + +#: thematic_areas/choices.py:27 +msgid "Arqueologia" +msgstr "" + +#: thematic_areas/choices.py:28 +msgid "Arquitetura e urbanismo" +msgstr "" + +#: thematic_areas/choices.py:29 +msgid "Artes" +msgstr "" + +#: thematic_areas/choices.py:30 +msgid "Astronomia" +msgstr "" + +#: thematic_areas/choices.py:31 +msgid "Biofísica" +msgstr "" + +#: thematic_areas/choices.py:32 +msgid "Biologia geral" +msgstr "" + +#: thematic_areas/choices.py:33 +msgid "Bioquímica" +msgstr "" + +#: thematic_areas/choices.py:34 +msgid "Biotecnologia" +msgstr "" + +#: thematic_areas/choices.py:35 +msgid "Botânica" +msgstr "" + +#: thematic_areas/choices.py:36 +msgid "Ciência da computação" +msgstr "" + +#: thematic_areas/choices.py:37 +msgid "Ciência da informação" +msgstr "" + +#: thematic_areas/choices.py:38 +msgid "Ciência e tecnologia de alimentos" +msgstr "" + +#: thematic_areas/choices.py:39 +msgid "Ciência política" +msgstr "" + +#: thematic_areas/choices.py:40 +msgid "Ciências Ambientais" +msgstr "" + +#: thematic_areas/choices.py:41 +msgid "Comunicação" +msgstr "" + +#: thematic_areas/choices.py:42 +msgid "Demografia" +msgstr "" + +#: thematic_areas/choices.py:43 +msgid "Desenho industrial" +msgstr "" + +#: thematic_areas/choices.py:44 +msgid "Direito" +msgstr "" + +#: thematic_areas/choices.py:45 +msgid "Ecologia" +msgstr "" + +#: thematic_areas/choices.py:46 +msgid "Economia" +msgstr "" + +#: thematic_areas/choices.py:47 +msgid "Economia doméstica" +msgstr "" + +#: thematic_areas/choices.py:48 +msgid "Educação" +msgstr "" + +#: thematic_areas/choices.py:49 +msgid "Educação física" +msgstr "" + +#: thematic_areas/choices.py:50 +msgid "Enfermagem" +msgstr "" + +#: thematic_areas/choices.py:51 +msgid "Engenharia aeroespacial" +msgstr "" + +#: thematic_areas/choices.py:52 +msgid "Engenharia agrícola" +msgstr "" + +#: thematic_areas/choices.py:53 +msgid "Engenharia biomédica" +msgstr "" + +#: thematic_areas/choices.py:54 +msgid "Engenharia civil" +msgstr "" + +#: thematic_areas/choices.py:57 +msgid "Engenharia de materiais e metalúrgica" +msgstr "" + +#: thematic_areas/choices.py:59 +msgid "Engenharia de minas" +msgstr "" + +#: thematic_areas/choices.py:60 +msgid "Engenharia de produção" +msgstr "" + +#: thematic_areas/choices.py:61 +msgid "Engenharia de transportes" +msgstr "" + +#: thematic_areas/choices.py:62 +msgid "Engenharia elétrica" +msgstr "" + +#: thematic_areas/choices.py:63 +msgid "Engenharia mecânica" +msgstr "" + +#: thematic_areas/choices.py:64 +msgid "Engenharia naval e oceânica" +msgstr "" + +#: thematic_areas/choices.py:65 +msgid "Engenharia nuclear" +msgstr "" + +#: thematic_areas/choices.py:66 +msgid "Engenharia química" +msgstr "" + +#: thematic_areas/choices.py:67 +msgid "Engenharia sanitária" +msgstr "" + +#: thematic_areas/choices.py:68 +msgid "Ensino" +msgstr "" + +#: thematic_areas/choices.py:69 +msgid "Farmácia" +msgstr "" + +#: thematic_areas/choices.py:70 +msgid "Farmacologia" +msgstr "" + +#: thematic_areas/choices.py:71 +msgid "Filosofia" +msgstr "" + +#: thematic_areas/choices.py:72 +msgid "Física" +msgstr "" + +#: thematic_areas/choices.py:73 +msgid "Fisiologia" +msgstr "" + +#: thematic_areas/choices.py:74 +msgid "Fisioterapia e terapia ocupacional" +msgstr "" + +#: thematic_areas/choices.py:75 +msgid "Fonoaudiologia" +msgstr "" + +#: thematic_areas/choices.py:76 +msgid "Genética" +msgstr "" + +#: thematic_areas/choices.py:77 +msgid "Geociências" +msgstr "" + +#: thematic_areas/choices.py:78 +msgid "Geografia" +msgstr "" + +#: thematic_areas/choices.py:79 +msgid "História" +msgstr "" + +#: thematic_areas/choices.py:80 +msgid "Imunologia" +msgstr "" + +#: thematic_areas/choices.py:81 +msgid "Interdisciplinar" +msgstr "" + +#: thematic_areas/choices.py:82 +msgid "Letras" +msgstr "" + +#: thematic_areas/choices.py:83 +msgid "Linguística" +msgstr "" + +#: thematic_areas/choices.py:84 +msgid "Matemática" +msgstr "" + +#: thematic_areas/choices.py:85 +msgid "Materiais " +msgstr "" + +#: thematic_areas/choices.py:86 +msgid "Medicina" +msgstr "" + +#: thematic_areas/choices.py:87 +msgid "Medicina veterinária" +msgstr "" + +#: thematic_areas/choices.py:88 +msgid "Microbiologia" +msgstr "" + +#: thematic_areas/choices.py:89 +msgid "Morfologia" +msgstr "" + +#: thematic_areas/choices.py:90 +msgid "Museologia" +msgstr "" + +#: thematic_areas/choices.py:91 +msgid "Nutrição" +msgstr "" + +#: thematic_areas/choices.py:92 +msgid "Oceanografia" +msgstr "" + +#: thematic_areas/choices.py:93 +msgid "Odontologia" +msgstr "" + +#: thematic_areas/choices.py:94 +msgid "Parasitologia" +msgstr "" + +#: thematic_areas/choices.py:95 +msgid "Planejamento urbano e regional" +msgstr "" + +#: thematic_areas/choices.py:96 +msgid "Probabilidade e estatística" +msgstr "" + +#: thematic_areas/choices.py:97 +msgid "Psicologia" +msgstr "" + +#: thematic_areas/choices.py:98 +msgid "Química" +msgstr "" + +#: thematic_areas/choices.py:101 +msgid "Recursos florestais e engenharia florestal" +msgstr "" + +#: thematic_areas/choices.py:105 +msgid "Recursos pesqueiros e engenharia de pesca" +msgstr "" + +#: thematic_areas/choices.py:107 +msgid "Saúde coletiva" +msgstr "" + +#: thematic_areas/choices.py:108 +msgid "Serviço social" +msgstr "" + +#: thematic_areas/choices.py:109 +msgid "Sociologia" +msgstr "" + +#: thematic_areas/choices.py:110 +msgid "Teologia" +msgstr "" + +#: thematic_areas/choices.py:111 +msgid "Turismo" +msgstr "" + +#: thematic_areas/choices.py:112 +msgid "Zoologia" +msgstr "" + +#: thematic_areas/choices.py:113 +msgid "Zootecnia" +msgstr "" + +#: thematic_areas/choices.py:121 +msgid "Administraçao de Empresas" +msgstr "" + +#: thematic_areas/choices.py:122 +msgid "Administração de Setores Específicos" +msgstr "" + +#: thematic_areas/choices.py:123 +msgid "Administração Educacional" +msgstr "" + +#: thematic_areas/choices.py:124 +msgid "Administração Pública" +msgstr "" + +#: thematic_areas/choices.py:125 +msgid "Aerodinâmica" +msgstr "" + +#: thematic_areas/choices.py:126 +msgid "Agrometeorologia" +msgstr "" + +#: thematic_areas/choices.py:127 +msgid "Álgebra" +msgstr "" + +#: thematic_areas/choices.py:128 +msgid "Análise" +msgstr "" + +#: thematic_areas/choices.py:129 +msgid "Análise e Controle de Medicamentos" +msgstr "" + +#: thematic_areas/choices.py:130 +msgid "Análise Nutricional de População" +msgstr "" + +#: thematic_areas/choices.py:131 +msgid "Análise Toxicológica" +msgstr "" + +#: thematic_areas/choices.py:132 +msgid "Anatomia" +msgstr "" + +#: thematic_areas/choices.py:135 +msgid "Anatomia Patológica e Patologia Clínica" +msgstr "" + +#: thematic_areas/choices.py:139 +msgid "Antropologia das Populações Afro-Brasileiras" +msgstr "" + +#: thematic_areas/choices.py:141 +msgid "Antropologia Rural" +msgstr "" + +#: thematic_areas/choices.py:142 +msgid "Antropologia Urbana" +msgstr "" + +#: thematic_areas/choices.py:143 +msgid "Aplicações de Radioisótopos" +msgstr "" + +#: thematic_areas/choices.py:144 +msgid "Aquicultura" +msgstr "" + +#: thematic_areas/choices.py:147 +msgid "Áreas Clássicas de Fenomenologia e suas Aplicações" +msgstr "" + +#: thematic_areas/choices.py:149 +msgid "Arqueologia Histórica" +msgstr "" + +#: thematic_areas/choices.py:150 +msgid "Arqueologia Pré-Histórica" +msgstr "" + +#: thematic_areas/choices.py:151 +msgid "Arquivologia" +msgstr "" + +#: thematic_areas/choices.py:152 +msgid "Artes do Vídeo" +msgstr "" + +#: thematic_areas/choices.py:153 +msgid "Artes Plásticas" +msgstr "" + +#: thematic_areas/choices.py:154 +msgid "Astrofísica do Meio Interestelar" +msgstr "" + +#: thematic_areas/choices.py:155 +msgid "Astrofísica do Sistema Solar" +msgstr "" + +#: thematic_areas/choices.py:156 +msgid "Astrofísica Estelar" +msgstr "" + +#: thematic_areas/choices.py:157 +msgid "Astrofísica Extragaláctica" +msgstr "" + +#: thematic_areas/choices.py:160 +msgid "Astronomia de Posição e Mecânica Celeste" +msgstr "" + +#: thematic_areas/choices.py:162 +msgid "Biblioteconomia" +msgstr "" + +#: thematic_areas/choices.py:163 +msgid "Bioengenharia" +msgstr "" + +#: thematic_areas/choices.py:164 +msgid "Biofísica Celular" +msgstr "" + +#: thematic_areas/choices.py:165 +msgid "Biofísica de Processos e Sistemas" +msgstr "" + +#: thematic_areas/choices.py:166 +msgid "Biofísica Molecular" +msgstr "" + +#: thematic_areas/choices.py:169 +msgid "Biologia e Fisiologia dos Mircroorganismos" +msgstr "" + +#: thematic_areas/choices.py:171 +msgid "Biologia Molecular" +msgstr "" + +#: thematic_areas/choices.py:172 +msgid "Bioquímica da Nutrição" +msgstr "" + +#: thematic_areas/choices.py:173 +msgid "Bioquímica de Microorganismos" +msgstr "" + +#: thematic_areas/choices.py:174 +msgid "Botânica Aplicada" +msgstr "" + +#: thematic_areas/choices.py:175 +msgid "Bromatologia" +msgstr "" + +#: thematic_areas/choices.py:176 +msgid "Ciência de Alimentos" +msgstr "" + +#: thematic_areas/choices.py:177 +msgid "Ciência do Solo" +msgstr "" + +#: thematic_areas/choices.py:178 +msgid "Ciências Contábeis" +msgstr "" + +#: thematic_areas/choices.py:179 +msgid "Cinema" +msgstr "" + +#: thematic_areas/choices.py:182 +msgid "Circuitos Elétricos, Magnéticos e Eletrônicos" +msgstr "" + +#: thematic_areas/choices.py:184 +msgid "Cirurgia" +msgstr "" + +#: thematic_areas/choices.py:185 +msgid "Cirurgia Buco-Maxilo-Facial" +msgstr "" + +#: thematic_areas/choices.py:186 +msgid "Citologia e Biologia Celular" +msgstr "" + +#: thematic_areas/choices.py:187 +msgid "Clínica e Cirurgia Animal" +msgstr "" + +#: thematic_areas/choices.py:188 +msgid "Clínica Médica" +msgstr "" + +#: thematic_areas/choices.py:189 +msgid "Clínica Odontológica" +msgstr "" + +#: thematic_areas/choices.py:190 +msgid "Combustível Nuclear" +msgstr "" + +#: thematic_areas/choices.py:191 +msgid "Componentes da Dinâmica Demográfica" +msgstr "" + +#: thematic_areas/choices.py:192 +msgid "Comportamento Animal" +msgstr "" + +#: thematic_areas/choices.py:193 +msgid "Comportamento Político" +msgstr "" + +#: thematic_areas/choices.py:194 +msgid "Comunicação Visual" +msgstr "" + +#: thematic_areas/choices.py:195 +msgid "Conservação da Natureza" +msgstr "" + +#: thematic_areas/choices.py:196 +msgid "Construção Civil" +msgstr "" + +#: thematic_areas/choices.py:197 +msgid "Construções Rurais e Ambiência" +msgstr "" + +#: thematic_areas/choices.py:200 +msgid "Crescimento, Flutuações e Planejamento Econômico" +msgstr "" + +#: thematic_areas/choices.py:202 +msgid "Currículo" +msgstr "" + +#: thematic_areas/choices.py:203 +msgid "Dança" +msgstr "" + +#: thematic_areas/choices.py:204 +msgid "Demografia Histórica" +msgstr "" + +#: thematic_areas/choices.py:205 +msgid "Desenho de Produto" +msgstr "" + +#: thematic_areas/choices.py:208 +msgid "Desnutrição e Desenvolvimento Fisiológico" +msgstr "" + +#: thematic_areas/choices.py:210 +msgid "Dietética" +msgstr "" + +#: thematic_areas/choices.py:211 +msgid "Dinâmica de Vôo" +msgstr "" + +#: thematic_areas/choices.py:212 +msgid "Direito Privado" +msgstr "" + +#: thematic_areas/choices.py:213 +msgid "Direito Público" +msgstr "" + +#: thematic_areas/choices.py:214 +msgid "Direitos Especiais" +msgstr "" + +#: thematic_areas/choices.py:215 +msgid "Ecologia Aplicada" +msgstr "" + +#: thematic_areas/choices.py:216 +msgid "Ecologia de Ecossistemas" +msgstr "" + +#: thematic_areas/choices.py:219 +msgid "Ecologia dos Animais Domésticos e Etologia" +msgstr "" + +#: thematic_areas/choices.py:221 +msgid "Ecologia Teórica" +msgstr "" + +#: thematic_areas/choices.py:224 +msgid "Economia Agrária e dos Recursos Naturais" +msgstr "" + +#: thematic_areas/choices.py:226 +msgid "Economia de Recursos Humanos" +msgstr "" + +#: thematic_areas/choices.py:227 +msgid "Economia do Bem-Estar Social" +msgstr "" + +#: thematic_areas/choices.py:228 +msgid "Economia Industrial" +msgstr "" + +#: thematic_areas/choices.py:229 +msgid "Economia Internacional" +msgstr "" + +#: thematic_areas/choices.py:230 +msgid "Economia Monetária e Fiscal" +msgstr "" + +#: thematic_areas/choices.py:231 +msgid "Economia Regional e Urbana" +msgstr "" + +#: thematic_areas/choices.py:232 +msgid "Educação Artística" +msgstr "" + +#: thematic_areas/choices.py:235 +msgid "Eletrônica Industrial, Sistemas e Controles Eletrônicos" +msgstr "" + +#: thematic_areas/choices.py:237 +msgid "Embriologia" +msgstr "" + +#: thematic_areas/choices.py:238 +msgid "Endodontia" +msgstr "" + +#: thematic_areas/choices.py:239 +msgid "Energia de Biomassa Florestal" +msgstr "" + +#: thematic_areas/choices.py:240 +msgid "Energização Rural" +msgstr "" + +#: thematic_areas/choices.py:241 +msgid "Enfermagem de Doenças Contagiosas" +msgstr "" + +#: thematic_areas/choices.py:242 +msgid "Enfermagem de Saúde Pública" +msgstr "" + +#: thematic_areas/choices.py:243 +msgid "Enfermagem Médico-Cirúrgica" +msgstr "" + +#: thematic_areas/choices.py:244 +msgid "Enfermagem Obstétrica" +msgstr "" + +#: thematic_areas/choices.py:245 +msgid "Enfermagem Pediátrica" +msgstr "" + +#: thematic_areas/choices.py:246 +msgid "Enfermagem Psiquiátrica" +msgstr "" + +#: thematic_areas/choices.py:247 +msgid "Engenharia de Água e Solo" +msgstr "" + +#: thematic_areas/choices.py:248 +msgid "Engenharia de Alimentos" +msgstr "" + +#: thematic_areas/choices.py:249 +msgid "Engenharia de Pesca" +msgstr "" + +#: thematic_areas/choices.py:252 +msgid "Engenharia de Processamento de Produtos Agrícolas" +msgstr "" + +#: thematic_areas/choices.py:254 +msgid "Engenharia do Produto" +msgstr "" + +#: thematic_areas/choices.py:255 +msgid "Engenharia Econômica" +msgstr "" + +#: thematic_areas/choices.py:256 +msgid "Engenharia Hidráulica" +msgstr "" + +#: thematic_areas/choices.py:257 +msgid "Engenharia Médica" +msgstr "" + +#: thematic_areas/choices.py:258 +msgid "Engenharia Térmica" +msgstr "" + +#: thematic_areas/choices.py:259 +msgid "Ensino-Aprendizagem" +msgstr "" + +#: thematic_areas/choices.py:262 +msgid "Entomologia e Malacologia de Parasitos e Vetores" +msgstr "" + +#: thematic_areas/choices.py:264 +msgid "Enzimologia" +msgstr "" + +#: thematic_areas/choices.py:265 +msgid "Epidemiologia" +msgstr "" + +#: thematic_areas/choices.py:266 +msgid "Epistemologia" +msgstr "" + +#: thematic_areas/choices.py:267 +msgid "Estado e Governo" +msgstr "" + +#: thematic_areas/choices.py:268 +msgid "Estatística" +msgstr "" + +#: thematic_areas/choices.py:269 +msgid "Estruturas" +msgstr "" + +#: thematic_areas/choices.py:270 +msgid "Estruturas Aeroespaciais" +msgstr "" + +#: thematic_areas/choices.py:271 +msgid "Estruturas Navais e Oceânicas" +msgstr "" + +#: thematic_areas/choices.py:273 +msgid "Etnofarmacologia" +msgstr "" + +#: thematic_areas/choices.py:274 +msgid "Etnologia Indígena" +msgstr "" + +#: thematic_areas/choices.py:275 +msgid "Extensão Rural" +msgstr "" + +#: thematic_areas/choices.py:276 +msgid "Farmacognosia" +msgstr "" + +#: thematic_areas/choices.py:277 +msgid "Farmacologia Autonômica" +msgstr "" + +#: thematic_areas/choices.py:278 +msgid "Farmacologia Bioquímica e Molecular" +msgstr "" + +#: thematic_areas/choices.py:279 +msgid "Farmacologia Cardiorenal" +msgstr "" + +#: thematic_areas/choices.py:280 +msgid "Farmacologia Clínica" +msgstr "" + +#: thematic_areas/choices.py:281 +msgid "Farmacologia Geral" +msgstr "" + +#: thematic_areas/choices.py:282 +msgid "Farmacotecnia" +msgstr "" + +#: thematic_areas/choices.py:283 +msgid "Fenômenos de Transporte" +msgstr "" + +#: thematic_areas/choices.py:284 +msgid "Filosofia Brasileira" +msgstr "" + +#: thematic_areas/choices.py:285 +msgid "Filosofia da Linguagem" +msgstr "" + +#: thematic_areas/choices.py:286 +msgid "Física Atômica e Molecular" +msgstr "" + +#: thematic_areas/choices.py:287 +msgid "Física da Matéria Condensada" +msgstr "" + +#: thematic_areas/choices.py:290 +msgid "Física das Partículas Elementares e Campos" +msgstr "" + +#: thematic_areas/choices.py:294 +msgid "Física dos Fluídos, Física de Plasmas e Descargas Elétricas" +msgstr "" + +#: thematic_areas/choices.py:296 +msgid "Física Geral" +msgstr "" + +#: thematic_areas/choices.py:297 +msgid "Física Nuclear" +msgstr "" + +#: thematic_areas/choices.py:298 +msgid "Físico-Química" +msgstr "" + +#: thematic_areas/choices.py:299 +msgid "Fisiologia Comparada" +msgstr "" + +#: thematic_areas/choices.py:300 +msgid "Fisiologia de Orgãos e Sistemas" +msgstr "" + +#: thematic_areas/choices.py:301 +msgid "Fisiologia do Esforço" +msgstr "" + +#: thematic_areas/choices.py:302 +msgid "Fisiologia dos Grupos Recentes" +msgstr "" + +#: thematic_areas/choices.py:303 +msgid "Fisiologia Geral" +msgstr "" + +#: thematic_areas/choices.py:304 +msgid "Fisiologia Vegetal" +msgstr "" + +#: thematic_areas/choices.py:305 +msgid "Fitogeografia" +msgstr "" + +#: thematic_areas/choices.py:306 +msgid "Fitossanidade" +msgstr "" + +#: thematic_areas/choices.py:307 +msgid "Fitotecnia" +msgstr "" + +#: thematic_areas/choices.py:308 +msgid "Floricultura, Parques e Jardins" +msgstr "" + +#: thematic_areas/choices.py:309 +msgid "Fontes de Dados Demográficos" +msgstr "" + +#: thematic_areas/choices.py:310 +msgid "Fotografia" +msgstr "" + +#: thematic_areas/choices.py:311 +msgid "Fundamentos da Educação" +msgstr "" + +#: thematic_areas/choices.py:312 +msgid "Fundamentos da Sociologia" +msgstr "" + +#: thematic_areas/choices.py:315 +msgid "Fundamentos de Arquitetura e Urbanismo" +msgstr "" + +#: thematic_areas/choices.py:319 +msgid "Fundamentos do Planejamento Urbano e Regional" +msgstr "" + +#: thematic_areas/choices.py:321 +msgid "Fundamentos do Serviço Social" +msgstr "" + +#: thematic_areas/choices.py:322 +msgid "Fundamentos e Críticas das Artes" +msgstr "" + +#: thematic_areas/choices.py:323 +msgid "Fundamentos e Medidas da Psicologia" +msgstr "" + +#: thematic_areas/choices.py:324 +msgid "Fusão Controlada" +msgstr "" + +#: thematic_areas/choices.py:325 +msgid "Genética Animal" +msgstr "" + +#: thematic_areas/choices.py:328 +msgid "Genética e Melhoramento dos Animais Domésticos" +msgstr "" + +#: thematic_areas/choices.py:330 +msgid "Genética Humana e Médica" +msgstr "" + +#: thematic_areas/choices.py:333 +msgid "Genética Molecular e de Microorganismos" +msgstr "" + +#: thematic_areas/choices.py:335 +msgid "Genética Quantitativa" +msgstr "" + +#: thematic_areas/choices.py:336 +msgid "Genética Vegetal" +msgstr "" + +#: thematic_areas/choices.py:337 +msgid "Geodésia" +msgstr "" + +#: thematic_areas/choices.py:338 +msgid "Geofísica" +msgstr "" + +#: thematic_areas/choices.py:339 +msgid "Geografia Física" +msgstr "" + +#: thematic_areas/choices.py:340 +msgid "Geografia Humana" +msgstr "" + +#: thematic_areas/choices.py:341 +msgid "Geografia Regional" +msgstr "" + +#: thematic_areas/choices.py:342 +msgid "Geologia" +msgstr "" + +#: thematic_areas/choices.py:343 +msgid "Geometria e Topologia" +msgstr "" + +#: thematic_areas/choices.py:344 +msgid "Geotécnica" +msgstr "" + +#: thematic_areas/choices.py:345 +msgid "Gerência de Produção" +msgstr "" + +#: thematic_areas/choices.py:346 +msgid "Helmintologia de Parasitos" +msgstr "" + +#: thematic_areas/choices.py:349 +msgid "Hidrodinâmica de Navios e Sistemas Oceânicos" +msgstr "" + +#: thematic_areas/choices.py:351 +msgid "Histologia" +msgstr "" + +#: thematic_areas/choices.py:352 +msgid "História Antiga e Medieval" +msgstr "" + +#: thematic_areas/choices.py:353 +msgid "História da América" +msgstr "" + +#: thematic_areas/choices.py:354 +msgid "História da Filosofia" +msgstr "" + +#: thematic_areas/choices.py:355 +msgid "História da Teologia" +msgstr "" + +#: thematic_areas/choices.py:356 +msgid "História das Ciências" +msgstr "" + +#: thematic_areas/choices.py:357 +msgid "História do Brasil" +msgstr "" + +#: thematic_areas/choices.py:358 +msgid "História Moderna e Contemporânea" +msgstr "" + +#: thematic_areas/choices.py:359 +msgid "Imunogenética" +msgstr "" + +#: thematic_areas/choices.py:360 +msgid "Imunologia Aplicada" +msgstr "" + +#: thematic_areas/choices.py:361 +msgid "Imunologia Celular" +msgstr "" + +#: thematic_areas/choices.py:362 +msgid "Imunoquímica" +msgstr "" + +#: thematic_areas/choices.py:363 +msgid "Infra-Estrutura de Transportes" +msgstr "" + +#: thematic_areas/choices.py:366 +msgid "Inspeção de Produtos de Origem Animal" +msgstr "" + +#: thematic_areas/choices.py:370 +msgid "Instalações e Equipamentos Metalúrgicos" +msgstr "" + +#: thematic_areas/choices.py:372 +msgid "Instrumentação Astronômica" +msgstr "" + +#: thematic_areas/choices.py:373 +msgid "Jornalismo e Editoração" +msgstr "" + +#: thematic_areas/choices.py:374 +msgid "Lavra" +msgstr "" + +#: thematic_areas/choices.py:375 +msgid "Língua Portuguesa" +msgstr "" + +#: thematic_areas/choices.py:376 +msgid "Línguas Clássicas" +msgstr "" + +#: thematic_areas/choices.py:377 +msgid "Línguas Estrangeiras Modernas" +msgstr "" + +#: thematic_areas/choices.py:378 +msgid "Línguas Indígenas" +msgstr "" + +#: thematic_areas/choices.py:379 +msgid "Linguística Aplicada" +msgstr "" + +#: thematic_areas/choices.py:380 +msgid "Linguística Histórica" +msgstr "" + +#: thematic_areas/choices.py:381 +msgid "Literatura Brasileira" +msgstr "" + +#: thematic_areas/choices.py:382 +msgid "Literatura Comparada" +msgstr "" + +#: thematic_areas/choices.py:383 +msgid "Literaturas Clássicas" +msgstr "" + +#: thematic_areas/choices.py:384 +msgid "Literaturas Estrangeiras Modernas" +msgstr "" + +#: thematic_areas/choices.py:385 +msgid "Lógica" +msgstr "" + +#: thematic_areas/choices.py:386 +msgid "Manejo Florestal" +msgstr "" + +#: thematic_areas/choices.py:387 +msgid "Máquinas e Implementos Agrícolas" +msgstr "" + +#: thematic_areas/choices.py:388 +msgid "Máquinas Marítimas" +msgstr "" + +#: thematic_areas/choices.py:389 +msgid "Matemática Aplicada" +msgstr "" + +#: thematic_areas/choices.py:390 +msgid "Matemática da Computação" +msgstr "" + +#: thematic_areas/choices.py:393 +msgid "Materiais e Processos para Engenharia Aeronáutica e Aeroespacial" +msgstr "" + +#: thematic_areas/choices.py:395 +msgid "Materiais Elétricos" +msgstr "" + +#: thematic_areas/choices.py:396 +msgid "Materiais não-Metálicos" +msgstr "" + +#: thematic_areas/choices.py:397 +msgid "Materiais Odontológicos" +msgstr "" + +#: thematic_areas/choices.py:398 +msgid "Mecânica dos Sólidos" +msgstr "" + +#: thematic_areas/choices.py:399 +msgid "Medicina Legal e Deontologia" +msgstr "" + +#: thematic_areas/choices.py:400 +msgid "Medicina Preventiva" +msgstr "" + +#: thematic_areas/choices.py:401 +msgid "Medicina Veterinária Preventiva" +msgstr "" + +#: thematic_areas/choices.py:404 +msgid "Medidas Elétricas, Magnéticas e Eletrônicas; Instrumentação" +msgstr "" + +#: thematic_areas/choices.py:406 +msgid "Metabolismo e Bioenergética" +msgstr "" + +#: thematic_areas/choices.py:407 +msgid "Metafísica" +msgstr "" + +#: thematic_areas/choices.py:408 +msgid "Metalurgia de Transformação" +msgstr "" + +#: thematic_areas/choices.py:409 +msgid "Metalurgia Extrativa" +msgstr "" + +#: thematic_areas/choices.py:410 +msgid "Metalurgia Física" +msgstr "" + +#: thematic_areas/choices.py:411 +msgid "Meteorologia" +msgstr "" + +#: thematic_areas/choices.py:412 +msgid "Metodologia e Técnicas da Computação" +msgstr "" + +#: thematic_areas/choices.py:415 +msgid "Metodos e Técnicas do Planejamento Urbano e Regional" +msgstr "" + +#: thematic_areas/choices.py:417 +msgid "Métodos Quantitativos em Economia" +msgstr "" + +#: thematic_areas/choices.py:418 +msgid "Microbiologia Aplicada" +msgstr "" + +#: thematic_areas/choices.py:419 +msgid "Morfologia dos Grupos Recentes" +msgstr "" + +#: thematic_areas/choices.py:420 +msgid "Morfologia Vegetal" +msgstr "" + +#: thematic_areas/choices.py:421 +msgid "Música" +msgstr "" + +#: thematic_areas/choices.py:422 +msgid "Mutagênese" +msgstr "" + +#: thematic_areas/choices.py:423 +msgid "Neuropsicofarmacologia" +msgstr "" + +#: thematic_areas/choices.py:424 +msgid "Nupcialidade e Família" +msgstr "" + +#: thematic_areas/choices.py:425 +msgid "Nutrição e Alimentação Animal" +msgstr "" + +#: thematic_areas/choices.py:426 +msgid "Oceanografia Biológica" +msgstr "" + +#: thematic_areas/choices.py:427 +msgid "Oceanografia Física" +msgstr "" + +#: thematic_areas/choices.py:428 +msgid "Oceanografia Geológica" +msgstr "" + +#: thematic_areas/choices.py:429 +msgid "Oceanografia Química" +msgstr "" + +#: thematic_areas/choices.py:430 +msgid "Odontologia Social e Preventiva" +msgstr "" + +#: thematic_areas/choices.py:431 +msgid "Odontopediatria" +msgstr "" + +#: thematic_areas/choices.py:432 +msgid "Ópera" +msgstr "" + +#: thematic_areas/choices.py:433 +msgid "Operações de Transportes" +msgstr "" + +#: thematic_areas/choices.py:436 +msgid "Operações Industriais e Equipamentos para Engenharia Química" +msgstr "" + +#: thematic_areas/choices.py:438 +msgid "Orientação e Aconselhamento" +msgstr "" + +#: thematic_areas/choices.py:439 +msgid "Ortodontia" +msgstr "" + +#: thematic_areas/choices.py:440 +msgid "Outras Literaturas Vernáculas" +msgstr "" + +#: thematic_areas/choices.py:441 +msgid "Outras Sociologias Específicas" +msgstr "" + +#: thematic_areas/choices.py:442 +msgid "Paisagismo" +msgstr "" + +#: thematic_areas/choices.py:443 +msgid "Paleobotânica" +msgstr "" + +#: thematic_areas/choices.py:444 +msgid "Paleozoologia" +msgstr "" + +#: thematic_areas/choices.py:445 +msgid "Pastagem e Forragicultura" +msgstr "" + +#: thematic_areas/choices.py:446 +msgid "Patologia Animal" +msgstr "" + +#: thematic_areas/choices.py:447 +msgid "Periodontia" +msgstr "" + +#: thematic_areas/choices.py:448 +msgid "Pesquisa Mineral" +msgstr "" + +#: thematic_areas/choices.py:449 +msgid "Pesquisa Operacional" +msgstr "" + +#: thematic_areas/choices.py:450 +msgid "Planejamento de Transportes" +msgstr "" + +#: thematic_areas/choices.py:451 +msgid "Planejamento e Avaliação Educacional" +msgstr "" + +#: thematic_areas/choices.py:452 +msgid "Política Internacional" +msgstr "" + +#: thematic_areas/choices.py:453 +msgid "Política Pública e População" +msgstr "" + +#: thematic_areas/choices.py:454 +msgid "Políticas Públicas" +msgstr "" + +#: thematic_areas/choices.py:455 +msgid "Probabilidade" +msgstr "" + +#: thematic_areas/choices.py:458 +msgid "Probabilidade e Estatística Aplicadas" +msgstr "" + +#: thematic_areas/choices.py:460 +msgid "Processos de Fabricação" +msgstr "" + +#: thematic_areas/choices.py:463 +msgid "Processos Industriais de Engenharia Química" +msgstr "" + +#: thematic_areas/choices.py:465 +msgid "Produção Animal" +msgstr "" + +#: thematic_areas/choices.py:466 +msgid "Programação Visual" +msgstr "" + +#: thematic_areas/choices.py:467 +msgid "Projetos de Arquitetura e Urbanismo" +msgstr "" + +#: thematic_areas/choices.py:468 +msgid "Projetos de Máquinas" +msgstr "" + +#: thematic_areas/choices.py:471 +msgid "Projetos de Navios e de Sistemas Oceânicos" +msgstr "" + +#: thematic_areas/choices.py:473 +msgid "Propulsão Aeroespacial" +msgstr "" + +#: thematic_areas/choices.py:474 +msgid "Protozoologia de Parasitos" +msgstr "" + +#: thematic_areas/choices.py:475 +msgid "Psicolinguística" +msgstr "" + +#: thematic_areas/choices.py:476 +msgid "Psicologia Cognitiva" +msgstr "" + +#: thematic_areas/choices.py:477 +msgid "Psicologia Comparativa" +msgstr "" + +#: thematic_areas/choices.py:478 +msgid "Psicologia do Desenvolvimento Humano" +msgstr "" + +#: thematic_areas/choices.py:481 +msgid "Psicologia do Ensino e da Aprendizagem" +msgstr "" + +#: thematic_areas/choices.py:485 +msgid "Psicologia do Trabalho e Organizacional" +msgstr "" + +#: thematic_areas/choices.py:487 +msgid "Psicologia Experimental" +msgstr "" + +#: thematic_areas/choices.py:488 +msgid "Psicologia Fisiológica" +msgstr "" + +#: thematic_areas/choices.py:489 +msgid "Psicologia Social" +msgstr "" + +#: thematic_areas/choices.py:490 +msgid "Psiquiatria" +msgstr "" + +#: thematic_areas/choices.py:491 +msgid "Química Analítica" +msgstr "" + +#: thematic_areas/choices.py:492 +msgid "Química de Macromoléculas" +msgstr "" + +#: thematic_areas/choices.py:493 +msgid "Química Inorgânica" +msgstr "" + +#: thematic_areas/choices.py:494 +msgid "Química Orgânica" +msgstr "" + +#: thematic_areas/choices.py:495 +msgid "Rádio e Televisão" +msgstr "" + +#: thematic_areas/choices.py:496 +msgid "Radiologia e Fotobiologia" +msgstr "" + +#: thematic_areas/choices.py:497 +msgid "Radiologia Médica" +msgstr "" + +#: thematic_areas/choices.py:498 +msgid "Radiologia Odontológica" +msgstr "" + +#: thematic_areas/choices.py:499 +msgid "Recursos Hídricos" +msgstr "" + +#: thematic_areas/choices.py:502 +msgid "Recursos Pesqueiros de Águas Interiores" +msgstr "" + +#: thematic_areas/choices.py:504 +msgid "Recursos Pesqueiros Marinhos" +msgstr "" + +#: thematic_areas/choices.py:505 +msgid "Relações Públicas e Propaganda" +msgstr "" + +#: thematic_areas/choices.py:506 +msgid "Reprodução Animal" +msgstr "" + +#: thematic_areas/choices.py:507 +msgid "Saneamento Ambiental" +msgstr "" + +#: thematic_areas/choices.py:508 +msgid "Saneamento Básico" +msgstr "" + +#: thematic_areas/choices.py:509 +msgid "Saúde Materno-Infantil" +msgstr "" + +#: thematic_areas/choices.py:511 +msgid "Serviço Social Aplicado" +msgstr "" + +#: thematic_areas/choices.py:512 +msgid "Serviços Urbanos e Regionais" +msgstr "" + +#: thematic_areas/choices.py:513 +msgid "Silvicultura" +msgstr "" + +#: thematic_areas/choices.py:514 +msgid "Sistemas Aeroespaciais" +msgstr "" + +#: thematic_areas/choices.py:515 +msgid "Sistemas de Computação" +msgstr "" + +#: thematic_areas/choices.py:516 +msgid "Sistemas Elétricos de Potência" +msgstr "" + +#: thematic_areas/choices.py:517 +msgid "Sociolinguística e Dialetologia" +msgstr "" + +#: thematic_areas/choices.py:518 +msgid "Sociologia da Saúde" +msgstr "" + +#: thematic_areas/choices.py:519 +msgid "Sociologia do Conhecimento" +msgstr "" + +#: thematic_areas/choices.py:520 +msgid "Sociologia do Desenvolvimento" +msgstr "" + +#: thematic_areas/choices.py:521 +msgid "Sociologia Rural" +msgstr "" + +#: thematic_areas/choices.py:522 +msgid "Sociologia Urbana" +msgstr "" + +#: thematic_areas/choices.py:523 +msgid "Taxonomia dos Grupos Recentes" +msgstr "" + +#: thematic_areas/choices.py:524 +msgid "Taxonomia Vegetal" +msgstr "" + +#: thematic_areas/choices.py:525 +msgid "Teatro" +msgstr "" + +#: thematic_areas/choices.py:526 +msgid "Técnicas e Operações Florestais" +msgstr "" + +#: thematic_areas/choices.py:527 +msgid "Tecnologia de Alimentos" +msgstr "" + +#: thematic_areas/choices.py:530 +msgid "Tecnologia de Arquitetura e Urbanismo" +msgstr "" + +#: thematic_areas/choices.py:534 +msgid "Tecnologia de Construção Naval e de Sistemas Oceânicos" +msgstr "" + +#: thematic_areas/choices.py:536 +msgid "Tecnologia de Reatores" +msgstr "" + +#: thematic_areas/choices.py:539 +msgid "Tecnologia e Utilização de Produtos Florestais" +msgstr "" + +#: thematic_areas/choices.py:541 +msgid "Tecnologia Química" +msgstr "" + +#: thematic_areas/choices.py:542 +msgid "Telecomunicações" +msgstr "" + +#: thematic_areas/choices.py:543 +msgid "Teologia Moral" +msgstr "" + +#: thematic_areas/choices.py:544 +msgid "Teologia Pastoral" +msgstr "" + +#: thematic_areas/choices.py:545 +msgid "Teologia Sistemática" +msgstr "" + +#: thematic_areas/choices.py:546 +msgid "Teoria Antropológica" +msgstr "" + +#: thematic_areas/choices.py:547 +msgid "Teoria da Computação" +msgstr "" + +#: thematic_areas/choices.py:548 +msgid "Teoria da Comunicação" +msgstr "" + +#: thematic_areas/choices.py:549 +msgid "Teoria da Informação" +msgstr "" + +#: thematic_areas/choices.py:550 +msgid "Teoria do Direito" +msgstr "" + +#: thematic_areas/choices.py:551 +msgid "Teoria e Análise Linguística" +msgstr "" + +#: thematic_areas/choices.py:552 +msgid "Teoria e Filosofia da História" +msgstr "" + +#: thematic_areas/choices.py:553 +msgid "Teoria e Método em Arqueologia" +msgstr "" + +#: thematic_areas/choices.py:554 +msgid "Teoria Econômica" +msgstr "" + +#: thematic_areas/choices.py:555 +msgid "Teoria Literária" +msgstr "" + +#: thematic_areas/choices.py:556 +msgid "Teoria Política" +msgstr "" + +#: thematic_areas/choices.py:557 +msgid "Tópicos Específicos de Educação" +msgstr "" + +#: thematic_areas/choices.py:558 +msgid "Toxicologia" +msgstr "" + +#: thematic_areas/choices.py:561 +msgid "Tratamento de Águas de Abastecimento e Residuárias" +msgstr "" + +#: thematic_areas/choices.py:563 +msgid "Tratamento de Minérios" +msgstr "" + +#: thematic_areas/choices.py:564 +msgid "Tratamento e Prevenção Psicológica" +msgstr "" + +#: thematic_areas/choices.py:565 +msgid "Veículos e Equipamentos de Controle" +msgstr "" + +#: thematic_areas/choices.py:566 +msgid "Zoologia Aplicada" +msgstr "" + +#: thematic_areas/choices.py:574 +msgid "Bengali" +msgstr "" + +#: thematic_areas/choices.py:577 +msgid "Dinamarquês" +msgstr "" + +#: thematic_areas/choices.py:583 +msgid "Grego" +msgstr "" + +#: thematic_areas/choices.py:586 +msgid "Indiano" +msgstr "" + +#: thematic_areas/choices.py:587 +msgid "Indonésio" +msgstr "" + +#: thematic_areas/choices.py:591 +msgid "Norueguês" +msgstr "" + +#: thematic_areas/choices.py:598 +msgid "Tailandês" +msgstr "" + +#: thematic_areas/choices.py:599 +msgid "Tcheco" +msgstr "" + +#: thematic_areas/choices.py:606 thematic_areas/models.py:130 +msgid "Level 0" +msgstr "" + +#: thematic_areas/choices.py:607 thematic_areas/models.py:139 +msgid "Level 1" +msgstr "" + +#: thematic_areas/choices.py:608 thematic_areas/models.py:148 +msgid "Level 2" +msgstr "" + +#: thematic_areas/choices.py:609 +msgid "Level 3" +msgstr "" + +#: thematic_areas/models.py:15 thematic_areas/models.py:157 +#: thematic_areas/wagtail_hooks.py:142 +msgid "Thematic Area" +msgstr "" + +#: thematic_areas/models.py:23 +msgid "Origin Data Base" +msgstr "" + +#: thematic_areas/models.py:25 +msgid "Level" +msgstr "" + +#: thematic_areas/models.py:36 thematic_areas/wagtail_hooks.py:42 +msgid "Generic Thematic Area" +msgstr "" + +#: thematic_areas/models.py:37 thematic_areas/wagtail_hooks.py:99 +msgid "Generic Thematic Areas" +msgstr "" + +#: thematic_areas/models.py:90 thematic_areas/models.py:217 +msgid "Attachment" +msgstr "" + +#: thematic_areas/models.py:110 thematic_areas/wagtail_hooks.py:81 +msgid "Generic Thematic Areas Upload" +msgstr "" + +#: thematic_areas/models.py:134 thematic_areas/models.py:143 +#: thematic_areas/models.py:152 +msgid "" +"Here the thematic colleges of CAPES must be registered, more about these " +"areas access: https://www.gov.br/capes/pt-br/acesso-a-informacao/acoes-e-" +"programas/avaliacao/sobre-a-avaliacao/areas-avaliacao/sobre-as-areas-de-" +"avaliacao/sobre-as-areas-de-avaliacao" +msgstr "" + +#: thematic_areas/models.py:229 thematic_areas/wagtail_hooks.py:178 +msgid "Thematic Areas Upload" +msgstr "" + +#: thematic_areas/templates/modeladmin/generic_thematic_areas/generic_thematic_areas_file/index.html:6 +#: thematic_areas/templates/modeladmin/thematic_areas/thematic_areas_file/index.html:6 +msgid "Download CSV Example" +msgstr "" + +#: tracker/choices.py:9 +msgid "error" +msgstr "" + +#: tracker/choices.py:10 +msgid "warning" +msgstr "" + +#: tracker/choices.py:11 +msgid "info" +msgstr "" + +#: tracker/choices.py:12 +msgid "exception" +msgstr "" + +#: tracker/choices.py:24 +msgid "To reprocess" +msgstr "" + +#: tracker/choices.py:25 +msgid "To do" +msgstr "" + +#: tracker/choices.py:26 +msgid "Done" +msgstr "" + +#: tracker/choices.py:27 +msgid "Doing" +msgstr "" + +#: tracker/choices.py:28 +msgid "Pending" +msgstr "" + +#: tracker/choices.py:29 +msgid "ignored" +msgstr "" + +#: tracker/models.py:52 +msgid "Exception Type" +msgstr "" + +#: tracker/models.py:53 +msgid "Exception Msg" +msgstr "" + +#: tracker/models.py:102 +msgid "Message" +msgstr "" + +#: tracker/models.py:104 +msgid "Message type" +msgstr "" + +#: tracker/wagtail_hooks.py:18 +msgid "Unexpected Events" +msgstr "" + +#: tracker/wagtail_hooks.py:46 +msgid "Unexpected errors" +msgstr "" + +#: vocabulary/models.py:11 +msgid "Vocabulary name" +msgstr "" + +#: vocabulary/models.py:13 +msgid "Vocabulary acronym" +msgstr "" + +#: vocabulary/models.py:105 vocabulary/wagtail_hooks.py:22 +#: vocabulary/wagtail_hooks.py:68 +msgid "Vocabulary" +msgstr "" + +#: vocabulary/wagtail_hooks.py:48 +msgid "Keyword" +msgstr "" + +#: xmlsps/models.py:96 +msgid "Unable to get xml with pre (XMLVersion) {}: {} {}" +msgstr "" + +#: xmlsps/wagtail_hooks.py:19 +msgid "XMLVersion" +msgstr "" diff --git a/locale/es/LC_MESSAGES/django.po b/locale/es/LC_MESSAGES/django.po new file mode 100644 index 0000000..888a786 --- /dev/null +++ b/locale/es/LC_MESSAGES/django.po @@ -0,0 +1,5292 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# FIRST AUTHOR , YEAR. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2024-01-09 19:06+0000\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"Language: \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" + +#: altmetric/choices.py:4 article/wagtail_hooks.py:26 +msgid "Article" +msgstr "" + +#: altmetric/choices.py:5 article/models.py:36 issue/models.py:32 +#: journal/models.py:779 journal/models.py:1601 +msgid "Journal" +msgstr "" + +#: altmetric/models.py:10 journal/models.py:1608 +msgid "ISSN SciELO" +msgstr "" + +#: altmetric/models.py:13 +msgid "Extraction Date" +msgstr "" + +#: altmetric/models.py:16 +msgid "Resource Type" +msgstr "" + +#: altmetric/models.py:22 journal/models.py:2247 report/models.py:46 +msgid "JSON File" +msgstr "" + +#: altmetric/wagtail_hooks.py:13 +msgid "Altmetric" +msgstr "" + +#: article/models.py:32 +msgid "PID V2" +msgstr "" + +#: article/models.py:33 +msgid "PID V3" +msgstr "" + +#: article/models.py:43 +msgid "pub date day" +msgstr "" + +#: article/models.py:50 +msgid "pub date month" +msgstr "" + +#: article/models.py:60 +msgid "Fundings" +msgstr "" + +#: article/models.py:79 book/models.py:71 journal/models.py:591 +msgid "Publisher" +msgstr "" + +#: article/models.py:103 +msgid "Abstract" +msgstr "" + +#: article/models.py:117 book/models.py:139 +msgid "Identification" +msgstr "" + +#: article/models.py:118 +msgid "Data with language" +msgstr "" + +#: article/models.py:119 researcher/wagtail_hooks.py:101 +msgid "Researchers" +msgstr "" + +#: article/models.py:120 +msgid "Publisher and Sponsors" +msgstr "" + +#: article/models.py:220 +msgid "Award ID" +msgstr "" + +#: article/models.py:318 core/models.py:188 +msgid "Text" +msgstr "" + +#: article/models.py:399 article/models.py:475 collection/models.py:57 +#: core/models.py:29 +msgid "Code" +msgstr "" + +#: article/models.py:513 +msgid "Count" +msgstr "" + +#: article/models.py:517 book/models.py:57 book/models.py:225 +#: core/models.py:144 core/models.py:192 core/models.py:209 core/models.py:253 +#: core/models.py:525 doi/models.py:18 thematic_areas/models.py:19 +msgid "Language" +msgstr "" + +#: article/models.py:570 article/wagtail_hooks.py:45 +msgid "SubArticle" +msgstr "" + +#: article/models.py:571 +msgid "SubArticles" +msgstr "" + +#: article/tasks.py:36 +msgid "load_article" +msgstr "" + +#: article/tasks.py:65 +msgid "load_articles" +msgstr "" + +#: article/tasks.py:101 +msgid "load_preprints" +msgstr "" + +#: article/wagtail_hooks.py:69 +msgid "Article Funding" +msgstr "" + +#: article/wagtail_hooks.py:86 +msgid "Articles" +msgstr "" + +#: book/models.py:45 book/models.py:219 journal/models.py:2294 +#: report/models.py:34 +msgid "Title" +msgstr "" + +#: book/models.py:46 +msgid "Synopsis" +msgstr "" + +#: book/models.py:48 +msgid "Electronic ISBN" +msgstr "" + +#: book/models.py:50 core/models.py:270 +msgid "Year" +msgstr "" + +#: book/models.py:53 +msgid "Authors" +msgstr "" + +#: book/models.py:64 +msgid "Localization" +msgstr "" + +#: book/models.py:78 +msgid "SciELO Book" +msgstr "" + +#: book/models.py:79 +msgid "SciELO Books" +msgstr "" + +#: book/models.py:134 book/models.py:238 +msgid "Chapter" +msgstr "" + +#: book/models.py:140 book/models.py:239 +msgid "Chapters" +msgstr "" + +#: book/models.py:221 +msgid "Data de publicação" +msgstr "" + +#: book/wagtail_hooks.py:22 book/wagtail_hooks.py:45 collection/choices.py:14 +msgid "Books" +msgstr "" + +#: collection/choices.py:4 +msgid "Certified" +msgstr "" + +#: collection/choices.py:5 +msgid "Development" +msgstr "" + +#: collection/choices.py:6 +msgid "Diffusion" +msgstr "" + +#: collection/choices.py:7 +msgid "Independent" +msgstr "" + +#: collection/choices.py:11 journal/models.py:780 journal/wagtail_hooks.py:62 +#: journal/wagtail_hooks.py:124 +msgid "Journals" +msgstr "" + +#: collection/choices.py:12 +msgid "Preprints" +msgstr "" + +#: collection/choices.py:13 +msgid "Repositories" +msgstr "" + +#: collection/choices.py:15 +msgid "Data repository" +msgstr "" + +#: collection/models.py:52 +msgid "Acronym with 3 chars" +msgstr "" + +#: collection/models.py:55 +msgid "Acronym with 2 chars" +msgstr "" + +#: collection/models.py:58 +msgid "Domain" +msgstr "" + +#: collection/models.py:62 +msgid "Main name" +msgstr "" + +#: collection/models.py:64 doi/models.py:80 journal/models.py:1611 +msgid "Status" +msgstr "" + +#: collection/models.py:66 +msgid "Has analytics" +msgstr "" + +#: collection/models.py:69 +msgid "Collection Type" +msgstr "" + +#: collection/models.py:71 +msgid "Is active" +msgstr "" + +#: collection/models.py:72 +msgid "Foundation data" +msgstr "" + +#: collection/models.py:94 collection/wagtail_hooks.py:19 +#: journal/models.py:1593 journal/models.py:2234 +msgid "Collection" +msgstr "" + +#: collection/models.py:95 +msgid "Collections" +msgstr "" + +#: core/choices.py:192 +msgid "Editor-Chefe" +msgstr "" + +#: core/choices.py:193 +msgid "Editor(es) Executivo" +msgstr "" + +#: core/choices.py:194 +msgid "Editor(es) Associados ou de Seção" +msgstr "" + +#: core/choices.py:195 +msgid "Equipe Técnica" +msgstr "" + +#: core/choices.py:199 +msgid "January" +msgstr "" + +#: core/choices.py:200 +msgid "February" +msgstr "" + +#: core/choices.py:201 +msgid "March" +msgstr "" + +#: core/choices.py:202 +msgid "April" +msgstr "" + +#: core/choices.py:203 +msgid "May" +msgstr "" + +#: core/choices.py:204 +msgid "June" +msgstr "" + +#: core/choices.py:205 +msgid "July" +msgstr "" + +#: core/choices.py:206 +msgid "August" +msgstr "" + +#: core/choices.py:207 +msgid "September" +msgstr "" + +#: core/choices.py:208 +msgid "October" +msgstr "" + +#: core/choices.py:209 +msgid "November" +msgstr "" + +#: core/choices.py:210 +msgid "December" +msgstr "" + +#: core/choices.py:216 +msgid "by" +msgstr "" + +#: core/choices.py:217 +msgid "by-sa" +msgstr "" + +#: core/choices.py:218 +msgid "by-nc" +msgstr "" + +#: core/choices.py:219 +msgid "by-nc-sa" +msgstr "" + +#: core/choices.py:220 +msgid "by-nd" +msgstr "" + +#: core/choices.py:221 +msgid "by-nc-nd" +msgstr "" + +#: core/models.py:31 +msgid "Sex" +msgstr "" + +#: core/models.py:96 tracker/models.py:51 +msgid "Creation date" +msgstr "" + +#: core/models.py:99 +msgid "Last update date" +msgstr "" + +#: core/models.py:104 +msgid "Creator" +msgstr "" + +#: core/models.py:114 +msgid "Updater" +msgstr "" + +#: core/models.py:135 +msgid "Language Name" +msgstr "" + +#: core/models.py:136 +msgid "Language code 2" +msgstr "" + +#: core/models.py:145 +msgid "Languages" +msgstr "" + +#: core/models.py:204 core/models.py:249 journal/models.py:1445 +msgid "Rich Text" +msgstr "" + +#: core/models.py:205 +msgid "Plain Text" +msgstr "" + +#: core/models.py:271 +msgid "Month" +msgstr "" + +#: core/models.py:272 +msgid "Day" +msgstr "" + +#: core/models.py:303 core/models.py:384 issue/models.py:91 +msgid "License" +msgstr "" + +#: core/models.py:304 core/models.py:385 +msgid "Licenses" +msgstr "" + +#: core/models.py:517 journal/models.py:883 report/models.py:42 +#: src/packtools/packtools/webapp/forms.py:11 +msgid "File" +msgstr "" + +#: core/templates/account/account_inactive.html:5 +#: core/templates/account/account_inactive.html:8 +msgid "Account Inactive" +msgstr "" + +#: core/templates/account/account_inactive.html:10 +msgid "This account is inactive." +msgstr "" + +#: core/templates/account/email.html:7 +msgid "Account" +msgstr "" + +#: core/templates/account/email.html:10 +msgid "E-mail Addresses" +msgstr "" + +#: core/templates/account/email.html:13 +msgid "The following e-mail addresses are associated with your account:" +msgstr "" + +#: core/templates/account/email.html:27 +msgid "Verified" +msgstr "" + +#: core/templates/account/email.html:29 +msgid "Unverified" +msgstr "" + +#: core/templates/account/email.html:31 +msgid "Primary" +msgstr "" + +#: core/templates/account/email.html:37 +msgid "Make Primary" +msgstr "" + +#: core/templates/account/email.html:38 +msgid "Re-send Verification" +msgstr "" + +#: core/templates/account/email.html:39 +msgid "Remove" +msgstr "" + +#: core/templates/account/email.html:46 +msgid "Warning:" +msgstr "" + +#: core/templates/account/email.html:46 +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 "" + +#: core/templates/account/email.html:51 +msgid "Add E-mail Address" +msgstr "" + +#: core/templates/account/email.html:56 +msgid "Add E-mail" +msgstr "" + +#: core/templates/account/email.html:66 +msgid "Do you really want to remove the selected e-mail address?" +msgstr "" + +#: core/templates/account/email_confirm.html:6 +#: core/templates/account/email_confirm.html:10 +msgid "Confirm E-mail Address" +msgstr "" + +#: core/templates/account/email_confirm.html:16 +#, python-format +msgid "" +"Please confirm that %(email)s is an e-mail " +"address for user %(user_display)s." +msgstr "" + +#: core/templates/account/email_confirm.html:20 +msgid "Confirm" +msgstr "" + +#: core/templates/account/email_confirm.html:27 +#, python-format +msgid "" +"This e-mail confirmation link expired or is invalid. Please issue a new e-mail confirmation request." +msgstr "" + +#: core/templates/account/login.html:7 core/templates/account/login.html:11 +#: core/templates/account/login.html:56 +msgid "Sign In" +msgstr "" + +#: core/templates/account/login.html:17 +msgid "Please sign in with one of your existing third party accounts:" +msgstr "" + +#: core/templates/account/login.html:19 +#, python-format +msgid "" +"Or, sign up for a %(site_name)s account and " +"sign in below:" +msgstr "" + +#: core/templates/account/login.html:32 +msgid "or" +msgstr "" + +#: core/templates/account/login.html:41 +#, python-format +msgid "" +"If you have not created an account yet, then please sign up first." +msgstr "" + +#: core/templates/account/login.html:55 +msgid "Forgot Password?" +msgstr "" + +#: core/templates/account/logout.html:5 core/templates/account/logout.html:8 +#: core/templates/account/logout.html:17 +msgid "Sign Out" +msgstr "" + +#: core/templates/account/logout.html:10 +msgid "Are you sure you want to sign out?" +msgstr "" + +#: core/templates/account/password_change.html:6 +#: core/templates/account/password_change.html:9 +#: core/templates/account/password_change.html:14 +#: core/templates/account/password_reset_from_key.html:5 +#: core/templates/account/password_reset_from_key.html:8 +#: core/templates/account/password_reset_from_key_done.html:4 +#: core/templates/account/password_reset_from_key_done.html:7 +msgid "Change Password" +msgstr "" + +#: core/templates/account/password_reset.html:7 +#: core/templates/account/password_reset.html:11 +#: core/templates/account/password_reset_done.html:6 +#: core/templates/account/password_reset_done.html:9 +msgid "Password Reset" +msgstr "" + +#: core/templates/account/password_reset.html:16 +msgid "" +"Forgotten your password? Enter your e-mail address below, and we'll send you " +"an e-mail allowing you to reset it." +msgstr "" + +#: core/templates/account/password_reset.html:21 +msgid "Reset My Password" +msgstr "" + +#: core/templates/account/password_reset.html:24 +msgid "Please contact us if you have any trouble resetting your password." +msgstr "" + +#: core/templates/account/password_reset_done.html:15 +msgid "" +"We have sent you an e-mail. Please contact us if you do not receive it " +"within a few minutes." +msgstr "" + +#: core/templates/account/password_reset_from_key.html:8 +msgid "Bad Token" +msgstr "" + +#: core/templates/account/password_reset_from_key.html:12 +#, python-format +msgid "" +"The password reset link was invalid, possibly because it has already been " +"used. Please request a new password reset." +msgstr "" + +#: core/templates/account/password_reset_from_key.html:18 +msgid "change password" +msgstr "" + +#: core/templates/account/password_reset_from_key.html:21 +#: core/templates/account/password_reset_from_key_done.html:8 +msgid "Your password is now changed." +msgstr "" + +#: core/templates/account/password_set.html:6 +#: core/templates/account/password_set.html:9 +#: core/templates/account/password_set.html:14 +msgid "Set Password" +msgstr "" + +#: core/templates/account/signup.html:6 +msgid "Signup" +msgstr "" + +#: core/templates/account/signup.html:9 core/templates/account/signup.html:19 +msgid "Sign Up" +msgstr "" + +#: core/templates/account/signup.html:11 +#, python-format +msgid "" +"Already have an account? Then please sign in." +msgstr "" + +#: core/templates/account/signup_closed.html:5 +#: core/templates/account/signup_closed.html:8 +msgid "Sign Up Closed" +msgstr "" + +#: core/templates/account/signup_closed.html:10 +msgid "We are sorry, but the sign up is currently closed." +msgstr "" + +#: core/templates/account/verification_sent.html:5 +#: core/templates/account/verification_sent.html:8 +#: core/templates/account/verified_email_required.html:5 +#: core/templates/account/verified_email_required.html:8 +msgid "Verify Your E-mail Address" +msgstr "" + +#: core/templates/account/verification_sent.html:10 +msgid "" +"We have sent an e-mail to you for verification. Follow the link provided to " +"finalize the signup process. Please contact us if you do not receive it " +"within a few minutes." +msgstr "" + +#: core/templates/account/verified_email_required.html:12 +msgid "" +"This part of the site requires us to verify that\n" +"you are who you claim to be. For this purpose, we require that you\n" +"verify ownership of your e-mail address. " +msgstr "" + +#: core/templates/account/verified_email_required.html:16 +msgid "" +"We have sent an e-mail to you for\n" +"verification. Please click on the link inside this e-mail. Please\n" +"contact us if you do not receive it within a few minutes." +msgstr "" + +#: core/templates/account/verified_email_required.html:20 +#, python-format +msgid "" +"Note: you can still change your e-" +"mail address." +msgstr "" + +#: core/templates/home/welcome_page.html:53 +#: core/templates/home/welcome_page.html:56 +msgid "View the release notes" +msgstr "" + +#: core/templates/home/welcome_page.html:68 +msgid "Welcome to your SciELO Content Manager" +msgstr "" + +#: core/templates/home/welcome_page.html:69 +msgid "" +"Please feel free to join our community on Slack, or get started with one of the links " +"below." +msgstr "" + +#: core/templates/home/welcome_page.html:77 +msgid "Wagtail Documentation" +msgstr "" + +#: core/templates/home/welcome_page.html:78 +msgid "Topics, references, & how-tos" +msgstr "" + +#: core/templates/home/welcome_page.html:85 +msgid "Tutorial" +msgstr "" + +#: core/templates/home/welcome_page.html:86 +msgid "Build your first Wagtail site" +msgstr "" + +#: core/templates/home/welcome_page.html:93 +msgid "Admin Interface" +msgstr "" + +#: core/templates/home/welcome_page.html:94 +msgid "Create your superuser first!" +msgstr "" + +#: core/templates/wagtailadmin/home.html:7 +msgid "Welcome to the administrative area of " +msgstr "" + +#: core/templates/wagtailadmin/login.html:7 +msgid "Administrative area of " +msgstr "" + +#: core/templates/wagtailadmin/summary_items/article_summary_item.html:6 +#, python-format +msgid "" +"%(total_article)s Article created in %(site_name)s" +msgid_plural "" +"%(total_article)s Articles created in %(site_name)s" +msgstr[0] "" +msgstr[1] "" + +#: core/templates/wagtailadmin/summary_items/collection_summary_item.html:6 +#, python-format +msgid "" +"%(total_collection)s Collection created in %(site_name)s" +msgid_plural "" +"%(total_collection)s Collections created in %(site_name)s" +msgstr[0] "" +msgstr[1] "" + +#: core/templates/wagtailadmin/summary_items/journal_summary_item.html:6 +#, python-format +msgid "" +"%(total_journal)s Journal created in %(site_name)s" +msgid_plural "" +"%(total_journal)s Journals created in %(site_name)s" +msgstr[0] "" +msgstr[1] "" + +#: core/users/admin.py:17 +msgid "Personal info" +msgstr "" + +#: core/users/admin.py:19 +msgid "Permissions" +msgstr "" + +#: core/users/admin.py:30 +msgid "Important dates" +msgstr "" + +#: core/users/apps.py:7 +msgid "Users" +msgstr "" + +#: core/users/forms.py:25 core/users/tests/test_forms.py:39 +msgid "This username has already been taken." +msgstr "" + +#: core/users/models.py:15 +msgid "Name of User" +msgstr "" + +#: core/users/views.py:23 +msgid "Information successfully updated" +msgstr "" + +#: core/utils/scheduler.py:61 +msgid "Scheduled task: {}" +msgstr "" + +#: core_settings/models.py:18 core_settings/models.py:19 +msgid "Configuração do site" +msgstr "" + +#: core_settings/models.py:66 +msgid "Site settings" +msgstr "" + +#: core_settings/models.py:67 +msgid "Admin settings" +msgstr "" + +#: doi/choices.py:4 +msgid "DATA_CREATED" +msgstr "" + +#: doi/choices.py:5 +msgid "SUBMITTED" +msgstr "" + +#: doi/choices.py:6 +msgid "QUEUED" +msgstr "" + +#: doi/choices.py:7 +msgid "DEPOSITED" +msgstr "" + +#: doi/models.py:14 +msgid "Value" +msgstr "" + +#: doi/models.py:77 +msgid "Submission Date" +msgstr "" + +#: editorialboard/button_helper.py:19 institution/button_helpers.py:17 +#: journal/button_helper.py:19 location/button_helpers.py:17 +#: thematic_areas/button_helpers.py:19 thematic_areas/button_helpers.py:69 +msgid "Validate" +msgstr "" + +#: editorialboard/button_helper.py:31 institution/button_helpers.py:26 +#: journal/button_helper.py:31 location/button_helpers.py:29 +#: thematic_areas/button_helpers.py:30 thematic_areas/button_helpers.py:79 +msgid "Import" +msgstr "" + +#: editorialboard/choices.py:4 researcher/choices.py:4 +msgid "Declarado por el investigador" +msgstr "" + +#: editorialboard/choices.py:5 researcher/choices.py:5 +msgid "Identificado automáticamente por programa de computador" +msgstr "" + +#: editorialboard/choices.py:6 researcher/choices.py:6 +msgid "Identificado por algun usuario" +msgstr "" + +#: editorialboard/choices.py:14 +msgid "Editor-in-chief" +msgstr "" + +#: editorialboard/choices.py:15 +msgid "Editor" +msgstr "" + +#: editorialboard/choices.py:16 +msgid "Associate editor" +msgstr "" + +#: editorialboard/choices.py:17 +msgid "Technical team" +msgstr "" + +#: editorialboard/models.py:56 +msgid "Member" +msgstr "" + +#: editorialboard/models.py:432 institution/models.py:630 +#: journal/models.py:2023 location/models.py:662 thematic_areas/models.py:97 +#: thematic_areas/models.py:223 +msgid "Is valid?" +msgstr "" + +#: editorialboard/models.py:434 institution/models.py:632 +#: journal/models.py:2025 location/models.py:664 thematic_areas/models.py:103 +#: thematic_areas/models.py:225 +msgid "Number of lines" +msgstr "" + +#: editorialboard/models.py:445 +msgid "Role" +msgstr "" + +#: editorialboard/models.py:448 +msgid "Declared Role" +msgstr "" + +#: editorialboard/views.py:43 institution/views.py:36 journal/views.py:43 +#: location/views.py:36 thematic_areas/views.py:48 thematic_areas/views.py:148 +msgid "Validation error" +msgstr "" + +#: editorialboard/views.py:50 institution/views.py:43 journal/views.py:50 +#: location/views.py:43 thematic_areas/views.py:55 thematic_areas/views.py:155 +#, python-format +msgid "Validation error: %s" +msgstr "" + +#: editorialboard/views.py:52 institution/views.py:45 journal/views.py:52 +#: location/views.py:45 thematic_areas/views.py:57 thematic_areas/views.py:157 +msgid "File successfully validated!" +msgstr "" + +#: editorialboard/views.py:128 +#, python-format +msgid "Import error: %s, Line: %s" +msgstr "" + +#: editorialboard/views.py:130 institution/views.py:72 journal/views.py:86 +#: location/views.py:73 thematic_areas/views.py:98 thematic_areas/views.py:195 +msgid "File imported successfully!" +msgstr "" + +#: editorialboard/wagtail_hooks.py:31 +msgid "Editorial Board Member" +msgstr "" + +#: editorialboard/wagtail_hooks.py:77 +msgid "RoleModel" +msgstr "" + +#: editorialboard/wagtail_hooks.py:96 +msgid "EditorialBoard" +msgstr "" + +#: files_storage/controller.py:29 files_storage/controller.py:50 +msgid "Unable to get MinioStorage {} {} {}" +msgstr "" + +#: files_storage/controller.py:82 +msgid "Unable to push file {} {} {} {}" +msgstr "" + +#: files_storage/controller.py:114 +msgid "Unable to push xml content {} {} {} {}" +msgstr "" + +#: files_storage/models.py:14 institution/models.py:642 journal/models.py:274 +#: journal/models.py:1467 journal/models.py:1928 journal/models.py:2035 +msgid "Name" +msgstr "" + +#: files_storage/models.py:15 +msgid "Host" +msgstr "" + +#: files_storage/models.py:16 +msgid "Bucket root" +msgstr "" + +#: files_storage/models.py:17 +msgid "Bucket app subdir" +msgstr "" + +#: files_storage/models.py:18 +msgid "Access key" +msgstr "" + +#: files_storage/models.py:19 +msgid "Secret key" +msgstr "" + +#: files_storage/models.py:21 +msgid "Secure" +msgstr "" + +#: files_storage/models.py:77 +msgid "Basename" +msgstr "" + +#: files_storage/models.py:78 +msgid "URI" +msgstr "" + +#: files_storage/wagtail_hooks.py:18 +msgid "Minio Configuration" +msgstr "" + +#: institution/choices.py:5 +msgid "agência de apoio à pesquisa" +msgstr "" + +#: institution/choices.py:8 +msgid "universidade e instâncias ligadas à universidades" +msgstr "" + +#: institution/choices.py:12 +msgid "empresa ou instituto ligadas ao governo" +msgstr "" + +#: institution/choices.py:14 +msgid "organização privada" +msgstr "" + +#: institution/choices.py:15 +msgid "organização sem fins de lucros" +msgstr "" + +#: institution/choices.py:18 +msgid "sociedade científica, associação pós-graduação, associação profissional" +msgstr "" + +#: institution/choices.py:20 +msgid "outros" +msgstr "" + +#: institution/choices.py:24 +msgid "yes" +msgstr "" + +#: institution/choices.py:25 +msgid "no" +msgstr "" + +#: institution/choices.py:26 +msgid "unknow" +msgstr "" + +#: institution/models.py:27 +msgid "Institution Type" +msgstr "" + +#: institution/models.py:33 +msgid "Organization Level 1" +msgstr "" + +#: institution/models.py:34 +msgid "Organization Level 2" +msgstr "" + +#: institution/models.py:35 +msgid "Organization Level 3" +msgstr "" + +#: institution/models.py:38 journal/models.py:605 +msgid "Logo" +msgstr "" + +#: institution/models.py:355 institution/models.py:381 +msgid "Initial Date" +msgstr "" + +#: institution/models.py:356 institution/models.py:382 +msgid "Final Date" +msgstr "" + +#: institution/models.py:359 institution/models.py:551 +#: institution/wagtail_hooks.py:66 +msgid "Institution" +msgstr "" + +#: institution/models.py:559 location/models.py:365 location/models.py:505 +#: location/wagtail_hooks.py:94 +msgid "Country" +msgstr "" + +#: institution/models.py:643 +msgid "Institution Acronym" +msgstr "" + +#: institution/models.py:645 +msgid "Is official" +msgstr "" + +#: institution/models.py:651 +msgid "Official name" +msgstr "" + +#: institution/views.py:70 journal/views.py:84 location/views.py:71 +#: thematic_areas/views.py:96 thematic_areas/views.py:193 +#, python-format +msgid "Import error: %(exception)s, Line: %(line)s" +msgstr "" + +#: institution/wagtail_hooks.py:26 +msgid "InstitutionIdentification" +msgstr "" + +#: institution/wagtail_hooks.py:106 journal/models.py:592 +msgid "Sponsor" +msgstr "" + +#: institution/wagtail_hooks.py:141 +msgid "Scimago" +msgstr "" + +#: institution/wagtail_hooks.py:178 journal/models.py:764 +msgid "Institutions" +msgstr "" + +#: issue/models.py:40 +msgid "Issue number" +msgstr "" + +#: issue/models.py:41 +msgid "Issue volume" +msgstr "" + +#: issue/models.py:43 +msgid "Issue season" +msgstr "" + +#: issue/models.py:49 +msgid "Issue year" +msgstr "" + +#: issue/models.py:50 +msgid "Issue month" +msgstr "" + +#: issue/models.py:51 +msgid "Supplement" +msgstr "" + +#: issue/models.py:70 +msgid "Issue title" +msgstr "" + +#: issue/models.py:87 issue/models.py:96 +msgid "Issue" +msgstr "" + +#: issue/models.py:88 journal/models.py:135 journal/models.py:762 +msgid "Titles" +msgstr "" + +#: issue/models.py:89 journal/models.py:513 +msgid "Subtitle" +msgstr "" + +#: issue/models.py:90 +msgid "Summary" +msgstr "" + +#: issue/models.py:97 issue/wagtail_hooks.py:22 issue/wagtail_hooks.py:54 +msgid "Issues" +msgstr "" + +#: issue/models.py:223 +msgid "Issue Title" +msgstr "" + +#: issue/models.py:262 +msgid "TocSection" +msgstr "" + +#: issue/models.py:263 +msgid "TocSections" +msgstr "" + +#: journal/choices.py:19 +msgid "Unknow" +msgstr "" + +#: journal/choices.py:20 +msgid "Current" +msgstr "" + +#: journal/choices.py:21 +msgid "Ceased" +msgstr "" + +#: journal/choices.py:22 +msgid "Reports only" +msgstr "" + +#: journal/choices.py:23 +msgid "Suspended" +msgstr "" + +#: journal/choices.py:27 +msgid "Continuous" +msgstr "" + +#: journal/choices.py:28 +msgid "Undefined" +msgstr "" + +#: journal/choices.py:32 +msgid "Unknown" +msgstr "" + +#: journal/choices.py:33 +msgid "Annual" +msgstr "" + +#: journal/choices.py:34 +msgid "Bimonthly (every two months)" +msgstr "" + +#: journal/choices.py:35 +msgid "Semiweekly (twice a week)" +msgstr "" + +#: journal/choices.py:36 +msgid "Daily" +msgstr "" + +#: journal/choices.py:37 +msgid "Biweekly (every two weeks)" +msgstr "" + +#: journal/choices.py:38 +msgid "Semiannual (twice a year)" +msgstr "" + +#: journal/choices.py:39 +msgid "Biennial (every two years)" +msgstr "" + +#: journal/choices.py:40 +msgid "Triennial (every three years)" +msgstr "" + +#: journal/choices.py:41 +msgid "Three times a week" +msgstr "" + +#: journal/choices.py:42 +msgid "Three times a month" +msgstr "" + +#: journal/choices.py:43 +msgid "Irregular (known to be so)" +msgstr "" + +#: journal/choices.py:44 +msgid "Monthly" +msgstr "" + +#: journal/choices.py:45 +msgid "Quarterly" +msgstr "" + +#: journal/choices.py:46 +msgid "Semimonthly (twice a month)" +msgstr "" + +#: journal/choices.py:47 +msgid "Three times a year" +msgstr "" + +#: journal/choices.py:48 +msgid "Weekly" +msgstr "" + +#: journal/choices.py:49 +msgid "Other frequencies" +msgstr "" + +#: journal/choices.py:53 +msgid "Basic Roman" +msgstr "" + +#: journal/choices.py:54 +msgid "Extensive Roman" +msgstr "" + +#: journal/choices.py:55 +msgid "Cirillic" +msgstr "" + +#: journal/choices.py:56 +msgid "Japanese" +msgstr "" + +#: journal/choices.py:57 +msgid "Chinese" +msgstr "" + +#: journal/choices.py:58 +msgid "Korean" +msgstr "" + +#: journal/choices.py:59 +msgid "Another alphabet" +msgstr "" + +#: journal/choices.py:63 +msgid "American Psychological Association" +msgstr "" + +#: journal/choices.py:64 +msgid "iso 690/87 - international standard organization" +msgstr "" + +#: journal/choices.py:65 +msgid "nbr 6023/89 - associação nacional de normas técnicas" +msgstr "" + +#: journal/choices.py:66 +msgid "other standard" +msgstr "" + +#: journal/choices.py:70 +msgid "" +"the vancouver group - uniform requirements for manuscripts submitted to " +"biomedical journals" +msgstr "" + +#: journal/choices.py:76 +msgid "Conference" +msgstr "" + +#: journal/choices.py:77 +msgid "Monograph" +msgstr "" + +#: journal/choices.py:78 +msgid "Conference papers as Monograph" +msgstr "" + +#: journal/choices.py:79 +msgid "Project papers as Monograph" +msgstr "" + +#: journal/choices.py:80 +msgid "Project and Conference papers as monograph" +msgstr "" + +#: journal/choices.py:81 +msgid "Monograph Series" +msgstr "" + +#: journal/choices.py:82 +msgid "Conference papers as Monograph Series" +msgstr "" + +#: journal/choices.py:83 +msgid "Project papers as Monograph Series" +msgstr "" + +#: journal/choices.py:84 +msgid "Document in a non conventional form" +msgstr "" + +#: journal/choices.py:85 +msgid "Conference papers in a non conventional form" +msgstr "" + +#: journal/choices.py:86 +msgid "Project papers in a non conventional form" +msgstr "" + +#: journal/choices.py:87 +msgid "Project" +msgstr "" + +#: journal/choices.py:88 +msgid "Serial" +msgstr "" + +#: journal/choices.py:89 +msgid "Conference papers as Periodical Series" +msgstr "" + +#: journal/choices.py:90 +msgid "Conference and Project papers as periodical series" +msgstr "" + +#: journal/choices.py:91 +msgid "Project papers as Periodical Series" +msgstr "" + +#: journal/choices.py:92 +msgid "Thesis and Dissertation" +msgstr "" + +#: journal/choices.py:93 +msgid "Thesis Series" +msgstr "" + +#: journal/choices.py:97 +msgid "Scientific/technical" +msgstr "" + +#: journal/choices.py:98 +msgid "Divulgation" +msgstr "" + +#: journal/choices.py:103 +msgid "Analytical of a monograph" +msgstr "" + +#: journal/choices.py:104 +msgid "Analytical of a monograph in a collection" +msgstr "" + +#: journal/choices.py:105 +msgid "Analytical of a monograph in a serial" +msgstr "" + +#: journal/choices.py:106 +msgid "Analytical of a serial" +msgstr "" + +#: journal/choices.py:107 +msgid "Collective level" +msgstr "" + +#: journal/choices.py:108 +msgid "Monographic level" +msgstr "" + +#: journal/choices.py:109 +msgid "Monographic in a collection" +msgstr "" + +#: journal/choices.py:110 +msgid "Monographic series level" +msgstr "" + +#: journal/choices.py:114 +msgid "DATABASE" +msgstr "" + +#: journal/choices.py:115 +msgid "DIRECTORY" +msgstr "" + +#: journal/choices.py:116 +msgid "OTHER" +msgstr "" + +#: journal/choices.py:120 +msgid "Agricultural Sciences" +msgstr "" + +#: journal/choices.py:121 +msgid "Applied Social Sciences" +msgstr "" + +#: journal/choices.py:122 +msgid "Biological Sciences" +msgstr "" + +#: journal/choices.py:123 +msgid "Engineering" +msgstr "" + +#: journal/choices.py:124 +msgid "Exact and Earth Sciences" +msgstr "" + +#: journal/choices.py:125 +msgid "Health Sciences" +msgstr "" + +#: journal/choices.py:126 +msgid "Human Sciences" +msgstr "" + +#: journal/choices.py:127 +msgid "Linguistic, Literature and Arts" +msgstr "" + +#: journal/choices.py:128 +msgid "Psicanalise" +msgstr "" + +#: journal/choices.py:132 +msgid "Science Citation Index Expanded" +msgstr "" + +#: journal/choices.py:133 +msgid "Social Sciences Citation Index" +msgstr "" + +#: journal/choices.py:134 +msgid "Arts Humanities Citation Index" +msgstr "" + +#: journal/choices.py:143 +msgid "Admitted to the collection" +msgstr "" + +#: journal/choices.py:144 +msgid "Indexing interrupted" +msgstr "" + +#: journal/choices.py:153 +msgid "Ceased journal" +msgstr "" + +#: journal/choices.py:154 +msgid "Not open access" +msgstr "" + +#: journal/choices.py:155 +msgid "by the committee" +msgstr "" + +#: journal/choices.py:156 +msgid "by the editor" +msgstr "" + +#: journal/models.py:66 +msgid "ISSN Title" +msgstr "" + +#: journal/models.py:67 +msgid "ISO Short Title" +msgstr "" + +#: journal/models.py:70 +msgid "New Title" +msgstr "" + +#: journal/models.py:79 +msgid "Initial Year" +msgstr "" + +#: journal/models.py:82 +msgid "Month Year" +msgstr "" + +#: journal/models.py:85 +msgid "Initial Volume" +msgstr "" + +#: journal/models.py:88 +msgid "Initial Number" +msgstr "" + +#: journal/models.py:91 +msgid "Termination year" +msgstr "" + +#: journal/models.py:94 +msgid "Termination month" +msgstr "" + +#: journal/models.py:97 +msgid "Final Volume" +msgstr "" + +#: journal/models.py:100 +msgid "Final Number" +msgstr "" + +#: journal/models.py:102 +msgid "ISSN Print" +msgstr "" + +#: journal/models.py:104 +msgid "ISSN Eletronic" +msgstr "" + +#: journal/models.py:106 +msgid "ISSNL" +msgstr "" + +#: journal/models.py:111 +msgid "Parallel titles" +msgstr "" + +#: journal/models.py:136 +msgid "Dates" +msgstr "" + +#: journal/models.py:137 +msgid "Issns" +msgstr "" + +#: journal/models.py:144 journal/models.py:320 +msgid "ISSN Journal" +msgstr "" + +#: journal/models.py:145 journal/wagtail_hooks.py:26 +msgid "ISSN Journals" +msgstr "" + +#: journal/models.py:232 +msgid "Unable to create or update official journal {}" +msgstr "" + +#: journal/models.py:276 journal/models.py:1930 +msgid "URL" +msgstr "" + +#: journal/models.py:281 journal/models.py:610 +msgid "Social Network" +msgstr "" + +#: journal/models.py:282 +msgid "Social Networks" +msgstr "" + +#: journal/models.py:325 +msgid "Journal Title" +msgstr "" + +#: journal/models.py:326 +msgid "Short Title" +msgstr "" + +#: journal/models.py:328 +msgid "Other titles" +msgstr "" + +#: journal/models.py:338 +msgid "Submission online URL" +msgstr "" + +#: journal/models.py:342 +msgid "Address" +msgstr "" + +#: journal/models.py:348 +msgid "Open Access status" +msgstr "" + +#: journal/models.py:356 journal/models.py:621 +msgid "Open Science accordance form" +msgstr "" + +#: journal/models.py:361 journal/models.py:886 +msgid "" +"Suggested form: https://wp.scielo." +"org/wp-content/uploads/Formulario-de-Conformidade-Ciencia-Aberta.docx" +msgstr "" + +#: journal/models.py:367 +msgid "Main Collection" +msgstr "" + +#: journal/models.py:373 +msgid "Frequency" +msgstr "" + +#: journal/models.py:380 +msgid "Publishing Model" +msgstr "" + +#: journal/models.py:388 +msgid "Subject Descriptors" +msgstr "" + +#: journal/models.py:393 +msgid "Study Areas" +msgstr "" + +#: journal/models.py:398 +msgid "Web of Knowledge Databases" +msgstr "" + +#: journal/models.py:403 +msgid "Web of Knowledge Subject Categories" +msgstr "" + +#: journal/models.py:408 +msgid "Text Languages" +msgstr "" + +#: journal/models.py:414 +msgid "Abstract Languages" +msgstr "" + +#: journal/models.py:425 +msgid "Alphabet" +msgstr "" + +#: journal/models.py:432 +msgid "Type of Literature" +msgstr "" + +#: journal/models.py:439 +msgid "Treatment Level" +msgstr "" + +#: journal/models.py:446 +msgid "Level of Publication" +msgstr "" + +#: journal/models.py:453 +msgid "National Code" +msgstr "" + +#: journal/models.py:458 +msgid "Classification" +msgstr "" + +#: journal/models.py:470 journal/models.py:2289 +msgid "Indexed At" +msgstr "" + +#: journal/models.py:475 +msgid "Additional Index At" +msgstr "" + +#: journal/models.py:479 +msgid "Journal URL" +msgstr "" + +#: journal/models.py:490 +msgid "Center code" +msgstr "" + +#: journal/models.py:495 +msgid "Identification Number" +msgstr "" + +#: journal/models.py:501 +msgid "Ftp" +msgstr "" + +#: journal/models.py:507 +msgid "User Subscription" +msgstr "" + +#: journal/models.py:518 +msgid "Section" +msgstr "" + +#: journal/models.py:524 +msgid "Has Supplement" +msgstr "" + +#: journal/models.py:529 +msgid "Is supplement" +msgstr "" + +#: journal/models.py:535 +msgid "Acronym Letters" +msgstr "" + +#: journal/models.py:543 +msgid "Authors names" +msgstr "" + +#: journal/models.py:545 +msgid "" +"For compound surnames, create clear identification [uppercase, bold, and/or " +"hyphen]" +msgstr "" + +#: journal/models.py:551 +msgid "Manuscript Length" +msgstr "" + +#: journal/models.py:552 +msgid "Manuscript Length (consider spacing)" +msgstr "" + +#: journal/models.py:561 +msgid "DigitalPreservationAgency" +msgstr "" + +#: journal/models.py:581 thematic_areas/models.py:158 +#: thematic_areas/wagtail_hooks.py:196 +msgid "Thematic Areas" +msgstr "" + +#: journal/models.py:584 +msgid "Mission" +msgstr "" + +#: journal/models.py:585 +msgid "Brief History" +msgstr "" + +#: journal/models.py:586 +msgid "Focus and Scope" +msgstr "" + +#: journal/models.py:590 +msgid "Owner" +msgstr "" + +#: journal/models.py:595 +msgid "Copyright Holder" +msgstr "" + +#: journal/models.py:604 +msgid "Contact e-mail" +msgstr "" + +#: journal/models.py:624 +msgid "Open data" +msgstr "" + +#: journal/models.py:625 journalpage/templates/journalpage/about.html:227 +#: journalpage/templates/journalpage/about.html:421 +msgid "Preprint" +msgstr "" + +#: journal/models.py:626 +msgid "Peer review" +msgstr "" + +#: journal/models.py:632 +msgid "Ethics" +msgstr "" + +#: journal/models.py:637 +msgid "Ethics Committee" +msgstr "" + +#: journal/models.py:642 +msgid "Copyright" +msgstr "" + +#: journal/models.py:647 +msgid "Intellectual Property / Terms of use / Website responsibility" +msgstr "" + +#: journal/models.py:652 +msgid "Intellectual Property / Terms of use / Author responsibility" +msgstr "" + +#: journal/models.py:657 +msgid "Retraction Policy | Ethics and Misconduct Policy" +msgstr "" + +#: journal/models.py:663 +msgid "Digital Preservation" +msgstr "" + +#: journal/models.py:668 +msgid "Conflict of interest policy" +msgstr "" + +#: journal/models.py:673 +msgid "Similarity Verification Software Adoption" +msgstr "" + +#: journal/models.py:678 +msgid "Gender Issues" +msgstr "" + +#: journal/models.py:683 +msgid "Fee Charging" +msgstr "" + +#: journal/models.py:687 journal/models.py:768 journal/models.py:2050 +msgid "Notes" +msgstr "" + +#: journal/models.py:710 +msgid "Accepted Document Types" +msgstr "" + +#: journal/models.py:715 +msgid "Authors Contributions" +msgstr "" + +#: journal/models.py:720 +msgid "Preparing Manuscript" +msgstr "" + +#: journal/models.py:725 +msgid "Digital Assets" +msgstr "" + +#: journal/models.py:730 +msgid "Citations and References" +msgstr "" + +#: journal/models.py:735 +msgid "Supplementary Documents Required for Submission" +msgstr "" + +#: journal/models.py:740 +msgid "Financing Statement" +msgstr "" + +#: journal/models.py:745 +msgid "Acknowledgements" +msgstr "" + +#: journal/models.py:750 +msgid "Additional Information" +msgstr "" + +#: journal/models.py:763 +msgid "Scope and about" +msgstr "" + +#: journal/models.py:765 +msgid "Website" +msgstr "" + +#: journal/models.py:766 +msgid "Open Science" +msgstr "" + +#: journal/models.py:767 +msgid "Journal Policy" +msgstr "" + +#: journal/models.py:770 +msgid "Legacy Compatibility" +msgstr "" + +#: journal/models.py:773 +msgid "Instructions for Authors" +msgstr "" + +#: journal/models.py:850 journal/models.py:958 +msgid "Unable to create or update journal {}" +msgstr "" + +#: journal/models.py:1033 +msgid "" +"Refers to sharing data, codes, methods and other materials used and \n" +" resulting from research that are usually the basis of the texts " +"of articles published by journals. \n" +" Guide: https://wp.scielo.org/wp-content/uploads/" +"Guia_TOP_pt.pdf" +msgstr "" + +#: journal/models.py:1049 +msgid "" +"A preprint is defined as a manuscript ready for submission to a journal that " +"is deposited \n" +" with trusted preprint servers before or in parallel with " +"submission to a journal. \n" +" This practice joins that of continuous publication as mechanisms " +"to speed up research communication. \n" +" Preprints share with journals the originality in the publication " +"of articles and inhibit the use of \n" +" the double-blind procedure in the evaluation of manuscripts. \n" +" The use of preprints is an option and choice of the authors and " +"it is up to the journals to adapt \n" +" their policies to accept the submission of manuscripts " +"previously deposited in a preprints server \n" +" recognized by the journal." +msgstr "" + +#: journal/models.py:1069 +msgid "" +"Insert here a brief history with events and milestones in the trajectory of " +"the journal" +msgstr "" + +#: journal/models.py:1081 +msgid "Insert here the focus and scope of the journal" +msgstr "" + +#: journal/models.py:1090 +msgid "Brief description of the review flow" +msgstr "" + +#: journal/models.py:1102 +msgid "" +"Authors must attach a statement of approval from the ethics committee of \n" +" the institution responsible for approving the research" +msgstr "" + +#: journal/models.py:1116 +msgid "" +"Describe the policy used by the journal on copyright issues. \n" +" We recommend that this section be in accordance with the " +"recommendations of the SciELO criteria, \n" +" item 5.2.10.1.2. - Copyright" +msgstr "" + +#: journal/models.py:1131 +msgid "" +"EX. DOAJ: Copyright terms applied to posted content must be clearly stated " +"and separate \n" +" from copyright terms applied to the website" +msgstr "" + +#: journal/models.py:1148 +msgid "" +"The author's declaration of responsibility for the content published in \n" +" the journal that owns the copyright Ex. DOAJ: The terms of " +"copyright must not contradict \n" +" the terms of the license or the terms of the open access policy. " +"\"All rights reserved\" is \n" +" never appropriate for open access content" +msgstr "" + +#: journal/models.py:1168 +msgid "" +"Describe here how the journal will deal with ethical issues and/or \n" +" issues that may damage the journal's reputation. What is the " +"journal's position regarding \n" +" the retraction policy that the journal will adopt in cases of " +"misconduct. \n" +" Best practice guide: \n" +" https://wp.scielo.org/wp-content/uploads/Guia-de-Boas-Praticas-" +"para-o-Fortalecimento-da-Etica-na-Publicacao-Cientifica.pdf" +msgstr "" + +#: journal/models.py:1202 +msgid "" +"Please describe here if the journal uses any similarity verification " +"software. Describe the policy. What cases are checked?\n" +" At what stage in the workflow are manuscripts verified?" +msgstr "" + +#: journal/models.py:1205 +msgid "Similarity erification software" +msgstr "" + +#: journal/models.py:1211 +msgid "" +"Describe the policy. Which cases are verified? At what point in the workflow " +"are the manuscripts checked?" +msgstr "" + +#: journal/models.py:1215 +msgid "Write the name of the software used." +msgstr "" + +#: journal/models.py:1218 +msgid "Write the link of the software used." +msgstr "" + +#: journal/models.py:1238 +msgid "" +"Describe how your journal considers gender diversity in the group of " +"authors, editorial board, and reviewers." +msgstr "" + +#: journal/models.py:1260 +msgid "Concepts" +msgstr "" + +#: journal/models.py:1265 +msgid "" +"Please describe any charges to authors related to the submission or " +"publication of works.\n" +" For article publication: Clearly state when no fees are charged.\n" +" Under what circumstances are charges applicable? Are there any " +"discounts?\n" +" SciELO Statement on Financial Sustainability: \n" +" https://mailchi.mp/scielo/declaracao-sobre-sustentabilidade\n" +" " +msgstr "" + +#: journal/models.py:1294 +msgid "" +"Describe the types of documents that can be submitted to the journal.\n" +" Provide information regarding the positioning related to " +"preprint submissions.\n" +" Examples: Original Article, Review Article, Preprints " +"and etc." +msgstr "" + +#: journal/models.py:1313 +msgid "" +"Description of how authors contributions should be specified.\n" +" Does it use any taxonomy? If yes, which one?\n" +" Does the article text explicitly state the authors contributions?\n" +" Preferably, use the CREDiT taxonomy structure: https://casrai.org/credit/\n" +" " +msgstr "" + +#: journal/models.py:1335 +msgid "" +"Specify how authors should present their research and explain why the work " +"is suitable for publication in the journal." +msgstr "" + +#: journal/models.py:1348 +msgid "" +"Please describe how tables, charts, figures, illustrations, maps, diagrams, " +"and other digital assets in the documents should be presented for " +"publication in the journal. It is important to specify technical details " +"such as format, resolution, size, etc." +msgstr "" + +#: journal/models.py:1364 +msgid "" +"Describe the citation and referencing style used by the journal. Provide " +"examples of document types according to the style." +msgstr "" + +#: journal/models.py:1382 +msgid "" +"Describe any supplementary documents requested from authors during " +"manuscript submission. Examples may include Open Science Compliance Form, " +"authors' agreement statement, ethics committee approval form, etc." +msgstr "" + +#: journal/models.py:1399 +msgid "???" +msgstr "" + +#: journal/models.py:1408 +msgid "Describe the acknowledgments." +msgstr "" + +#: journal/models.py:1422 +msgid "Free field for entering additional information or data." +msgstr "" + +#: journal/models.py:1448 +msgid "Descreva o teim do check list" +msgstr "" + +#: journal/models.py:1475 journal/models.py:1929 +msgid "Acronym" +msgstr "" + +#: journal/models.py:1606 +msgid "Journal Acronym" +msgstr "" + +#: journal/models.py:1622 +msgid "SciELO Journal" +msgstr "" + +#: journal/models.py:1623 journal/wagtail_hooks.py:99 +msgid "SciELO Journals" +msgstr "" + +#: journal/models.py:1695 +msgid "Unable to create or update SciELO journal {}" +msgstr "" + +#: journal/models.py:1931 +msgid "Description" +msgstr "" + +#: journal/models.py:1933 +msgid "Type" +msgstr "" + +#: journal/models.py:2051 +msgid "Creation Date" +msgstr "" + +#: journal/models.py:2052 +msgid "Update Date" +msgstr "" + +#: journal/models.py:2105 +msgid "Event year" +msgstr "" + +#: journal/models.py:2107 +msgid "Event month" +msgstr "" + +#: journal/models.py:2113 +msgid "Event day" +msgstr "" + +#: journal/models.py:2116 +msgid "Event type" +msgstr "" + +#: journal/models.py:2123 +msgid "Indexing interruption reason" +msgstr "" + +#: journal/models.py:2141 +msgid "Event" +msgstr "" + +#: journal/models.py:2142 +msgid "Events" +msgstr "" + +#: journal/models.py:2241 +msgid "Scielo Issn" +msgstr "" + +#: journal/models.py:2300 +msgid "Identifier" +msgstr "" + +#: journal/models.py:2306 +msgid "Title in Database" +msgstr "" + +#: journal/models.py:2307 +msgid "Title in databases" +msgstr "" + +#: journal/models.py:2395 +msgid "Enter the URI of the data repository." +msgstr "" + +#: journal/wagtail_hooks.py:245 +msgid "Article Submission Format Check List" +msgstr "" + +#: journalpage/templates/journalpage/SciELO - Brasil.html:139 Brasil.html:181 +msgid "Lista alfabética de periódicos" +msgstr "" + +#: journalpage/templates/journalpage/SciELO - Brasil.html:144 +msgid "Lista temática de periódicos" +msgstr "" + +#: journalpage/templates/journalpage/SciELO - Brasil.html:149 Brasil.html:191 +msgid "Busca" +msgstr "" + +#: journalpage/templates/journalpage/SciELO - Brasil.html:154 Brasil.html:196 +#: Brasil.html:438 Brasil.html:469 +#: journalpage/templates/journalpage/includes/levelMenu.html:36 +#: journalpage/templates/journalpage/includes/levelMenu.html:67 +msgid "Métricas" +msgstr "" + +#: journalpage/templates/journalpage/SciELO - Brasil.html:159 +msgid "Sobre o SciELO Brasil" +msgstr "" + +#: journalpage/templates/journalpage/SciELO - Brasil.html:164 Brasil.html:211 +msgid "Contatos" +msgstr "" + +#: journalpage/templates/journalpage/SciELO - Brasil.html:169 +msgid "Reportar erro" +msgstr "" + +#: journalpage/templates/journalpage/SciELO - Brasil.html:176 +msgid "Coleções nacionais e temáticas" +msgstr "" + +#: journalpage/templates/journalpage/SciELO - Brasil.html:186 +msgid "Lista de periódicos por assunto" +msgstr "" + +#: journalpage/templates/journalpage/SciELO - Brasil.html:201 +msgid "Acesso OAI e RSS" +msgstr "" + +#: journalpage/templates/journalpage/SciELO - Brasil.html:206 +msgid "Sobre a Rede SciELO" +msgstr "" + +#: journalpage/templates/journalpage/SciELO - Brasil.html:220 +msgid "Blog SciELO em Perspectiva" +msgstr "" + +#: journalpage/templates/journalpage/SciELO - Brasil.html:250 Brasil.html:314 +#: Brasil.html:395 +msgid "Submissão de manuscritos" +msgstr "" + +#: journalpage/templates/journalpage/SciELO - Brasil.html:254 Brasil.html:318 +#: Brasil.html:397 Brasil.html:618 +#: journalpage/templates/journalpage/about.html:80 +#: journalpage/templates/journalpage/about.html:380 +#: journalpage/templates/journalpage/includes/journal_info.html:89 +msgid "Sobre o periódico" +msgstr "" + +#: journalpage/templates/journalpage/SciELO - Brasil.html:257 Brasil.html:321 +#: Brasil.html:398 +#: journalpage/templates/journalpage/includes/journal_info.html:90 +msgid "Corpo Editorial" +msgstr "" + +#: journalpage/templates/journalpage/SciELO - Brasil.html:260 Brasil.html:324 +#: Brasil.html:399 +#: journalpage/templates/journalpage/includes/journal_info.html:91 +msgid "Instruções aos autores" +msgstr "" + +#: journalpage/templates/journalpage/SciELO - Brasil.html:263 Brasil.html:327 +#: Brasil.html:400 journalpage/templates/journalpage/about.html:213 +#: journalpage/templates/journalpage/about.html:412 +#: journalpage/templates/journalpage/includes/journal_info.html:92 +msgid "Política editorial" +msgstr "" + +#: journalpage/templates/journalpage/SciELO - Brasil.html:266 Brasil.html:330 +#: Brasil.html:728 journalpage/templates/journalpage/about.html:160 +#: journalpage/templates/journalpage/about.html:395 +msgid "Contato" +msgstr "" + +#: journalpage/templates/journalpage/SciELO - Brasil.html:357 +#: journalpage/templates/journalpage/includes/journal_info.html:21 +msgid "Publicação de" +msgstr "" + +#: journalpage/templates/journalpage/SciELO - Brasil.html:362 +#: journalpage/templates/journalpage/includes/journal_info.html:26 +msgid "Área" +msgstr "" + +#: journalpage/templates/journalpage/SciELO - Brasil.html:370 +#: journalpage/templates/journalpage/includes/journal_info.html:37 +msgid "Versão impressa ISSN" +msgstr "" + +#: journalpage/templates/journalpage/SciELO - Brasil.html:377 +#: journalpage/templates/journalpage/includes/journal_info.html:44 +msgid "Versão on-line ISSN" +msgstr "" + +#: journalpage/templates/journalpage/SciELO - Brasil.html:419 +#: journalpage/templates/journalpage/includes/levelMenu.html:17 +msgid "Todos os números" +msgstr "" + +#: journalpage/templates/journalpage/SciELO - Brasil.html:421 +#: journalpage/templates/journalpage/includes/levelMenu.html:19 +#: journalpage/templates/journalpage/includes/levelMenu.html:105 +msgid "número anterior" +msgstr "" + +#: journalpage/templates/journalpage/SciELO - Brasil.html:422 +#: journalpage/templates/journalpage/includes/levelMenu.html:20 +msgid "Número anterior" +msgstr "" + +#: journalpage/templates/journalpage/SciELO - Brasil.html:424 +#: journalpage/templates/journalpage/includes/levelMenu.html:22 +#: journalpage/templates/journalpage/includes/levelMenu.html:108 +msgid "número atual" +msgstr "" + +#: journalpage/templates/journalpage/SciELO - Brasil.html:425 +#: journalpage/templates/journalpage/includes/levelMenu.html:23 +msgid "Número atual" +msgstr "" + +#: journalpage/templates/journalpage/SciELO - Brasil.html:427 +#: journalpage/templates/journalpage/includes/levelMenu.html:25 +msgid "número seguinte" +msgstr "" + +#: journalpage/templates/journalpage/SciELO - Brasil.html:428 +#: journalpage/templates/journalpage/includes/levelMenu.html:26 +msgid "Número seguinte" +msgstr "" + +#: journalpage/templates/journalpage/SciELO - Brasil.html:435 Brasil.html:466 +#: journalpage/templates/journalpage/includes/levelMenu.html:33 +#: journalpage/templates/journalpage/includes/levelMenu.html:64 +#: journalpage/templates/journalpage/includes/levelMenu.html:117 +#: search/templates/search.html:43 +msgid "Buscar" +msgstr "" + +#: journalpage/templates/journalpage/SciELO - Brasil.html:463 +#: journalpage/templates/journalpage/includes/levelMenu.html:61 +msgid "Todos" +msgstr "" + +#: journalpage/templates/journalpage/SciELO - Brasil.html:590 +msgid "Imprimir" +msgstr "" + +#: journalpage/templates/journalpage/SciELO - Brasil.html:616 +#: journalpage/templates/journalpage/about.html:78 +msgid "Periódicos" +msgstr "" + +#: journalpage/templates/journalpage/SciELO - Brasil.html:669 +#: journalpage/templates/journalpage/about.html:111 +msgid "Título do periódico conforme registro do ISSN:" +msgstr "" + +#: journalpage/templates/journalpage/SciELO - Brasil.html:673 +#: journalpage/templates/journalpage/about.html:115 +msgid "Título abreviado:" +msgstr "" + +#: journalpage/templates/journalpage/SciELO - Brasil.html:677 +#: journalpage/templates/journalpage/about.html:119 +msgid "Publicação de:" +msgstr "" + +#: journalpage/templates/journalpage/SciELO - Brasil.html:681 +#: journalpage/templates/journalpage/about.html:122 +msgid "Periodicidade:" +msgstr "" + +#: journalpage/templates/journalpage/SciELO - Brasil.html:685 +#: journalpage/templates/journalpage/about.html:126 +msgid "Modalidade de publicação:" +msgstr "" + +#: journalpage/templates/journalpage/SciELO - Brasil.html:689 +#: journalpage/templates/journalpage/about.html:130 +msgid "Ano de criação do periódico:" +msgstr "" + +#: journalpage/templates/journalpage/SciELO - Brasil.html:695 +#: journalpage/templates/journalpage/about.html:133 +msgid "Área:" +msgstr "" + +#: journalpage/templates/journalpage/SciELO - Brasil.html:701 +#: journalpage/templates/journalpage/about.html:137 +msgid "Versão impressa:" +msgstr "" + +#: journalpage/templates/journalpage/SciELO - Brasil.html:707 +#: journalpage/templates/journalpage/about.html:143 +msgid "Versão on-line ISSN:" +msgstr "" + +#: journalpage/templates/journalpage/SciELO - Brasil.html:713 +#: journalpage/templates/journalpage/about.html:148 +#: journalpage/templates/journalpage/about.html:386 +msgid "Missão" +msgstr "" + +#: journalpage/templates/journalpage/SciELO - Brasil.html:718 +#: journalpage/templates/journalpage/about.html:152 +#: journalpage/templates/journalpage/about.html:389 +msgid "Breve Histórico" +msgstr "" + +#: journalpage/templates/journalpage/SciELO - Brasil.html:723 +#: journalpage/templates/journalpage/about.html:156 +#: journalpage/templates/journalpage/about.html:392 +msgid "Foco e escopo" +msgstr "" + +#: journalpage/templates/journalpage/SciELO - Brasil.html:732 +#: journalpage/templates/journalpage/about.html:164 +msgid "Endereço completo da unidade / instituição responsável pelo periódico:" +msgstr "" + +#: journalpage/templates/journalpage/SciELO - Brasil.html:736 +#: journalpage/templates/journalpage/about.html:168 +msgid "Cidade:" +msgstr "" + +#: journalpage/templates/journalpage/SciELO - Brasil.html:737 +msgid "Inserir cidade aqui" +msgstr "" + +#: journalpage/templates/journalpage/SciELO - Brasil.html:740 +#: journalpage/templates/journalpage/about.html:172 +msgid "Estado:" +msgstr "" + +#: journalpage/templates/journalpage/SciELO - Brasil.html:741 +msgid "Inserir estado aqui" +msgstr "" + +#: journalpage/templates/journalpage/SciELO - Brasil.html:744 +#: journalpage/templates/journalpage/about.html:176 +msgid "País:" +msgstr "" + +#: journalpage/templates/journalpage/SciELO - Brasil.html:745 +msgid "Inserir país aqui" +msgstr "" + +#: journalpage/templates/journalpage/SciELO - Brasil.html:748 +#: journalpage/templates/journalpage/about.html:180 +msgid "E-mail:" +msgstr "" + +#: journalpage/templates/journalpage/SciELO - Brasil.html:752 +#: journalpage/templates/journalpage/about.html:184 +#: journalpage/templates/journalpage/about.html:398 +msgid "Websites e Mídias Sociais" +msgstr "" + +#: journalpage/templates/journalpage/SciELO - Brasil.html:760 +#: journalpage/templates/journalpage/about.html:192 +#: journalpage/templates/journalpage/about.html:401 +msgid "Fontes de indexação" +msgstr "" + +#: journalpage/templates/journalpage/SciELO - Brasil.html:766 +#: journalpage/templates/journalpage/about.html:198 +#: journalpage/templates/journalpage/about.html:404 +msgid "Patrocinadores e agências de Fomento" +msgstr "" + +#: journalpage/templates/journalpage/about.html:206 +#: journalpage/templates/journalpage/about.html:407 +msgid "Preservação digital" +msgstr "" + +#: journalpage/templates/journalpage/about.html:215 +#: journalpage/templates/journalpage/about.html:415 +msgid "Conformidade com a Ciência Aberta" +msgstr "" + +#: journalpage/templates/journalpage/about.html:221 +#: journalpage/templates/journalpage/about.html:418 +msgid "Dados abertos" +msgstr "" + +#: journalpage/templates/journalpage/about.html:233 +#: journalpage/templates/journalpage/about.html:424 +msgid "Peer review informado" +msgstr "" + +#: journalpage/templates/journalpage/about.html:242 +#: journalpage/templates/journalpage/about.html:427 +#: thematic_areas/choices.py:272 +msgid "Ética" +msgstr "" + +#: journalpage/templates/journalpage/about.html:248 +#: journalpage/templates/journalpage/about.html:429 +msgid "Comitê de Ética" +msgstr "" + +#: journalpage/templates/journalpage/about.html:252 +#: journalpage/templates/journalpage/about.html:432 +msgid "Direitos Autorais" +msgstr "" + +#: journalpage/templates/journalpage/about.html:256 +#: journalpage/templates/journalpage/about.html:435 +msgid "Propriedade Intelectual" +msgstr "" + +#: journalpage/templates/journalpage/about.html:260 +msgid "Responsabilidade do site:" +msgstr "" + +#: journalpage/templates/journalpage/about.html:265 +msgid "Responsabilidade do autor:" +msgstr "" + +#: journalpage/templates/journalpage/about.html:269 +#: journalpage/templates/journalpage/about.html:438 +msgid "Política de Ética e Más condutas" +msgstr "" + +#: journalpage/templates/journalpage/about.html:271 +msgid "Política de retratação:" +msgstr "" + +#: journalpage/templates/journalpage/about.html:278 +#: journalpage/templates/journalpage/about.html:441 +msgid "Política sobre Conflito de Interesses" +msgstr "" + +#: journalpage/templates/journalpage/about.html:284 +#: journalpage/templates/journalpage/about.html:444 +msgid "Questões de gênero" +msgstr "" + +#: journalpage/templates/journalpage/about.html:290 +msgid "Licença" +msgstr "" + +#: journalpage/templates/journalpage/about.html:294 +msgid "licença:" +msgstr "" + +#: journalpage/templates/journalpage/about.html:297 +msgid "Cobrança de taxas" +msgstr "" + +#: journalpage/templates/journalpage/about.html:301 +msgid "Moeda:" +msgstr "" + +#: journalpage/templates/journalpage/about.html:301 +msgid "Valor:" +msgstr "" + +#: journalpage/templates/journalpage/about.html:305 +msgid "CORPO EDITORIAL" +msgstr "" + +#: journalpage/templates/journalpage/about.html:324 +msgid "INSTRUÇÕES PARA OS AUTORES" +msgstr "" + +#: journalpage/templates/journalpage/about.html:326 +msgid "Tipos de documentos aceitos" +msgstr "" + +#: journalpage/templates/journalpage/about.html:333 +#: journalpage/templates/journalpage/about.html:472 +msgid "Contribuição dos Autores" +msgstr "" + +#: journalpage/templates/journalpage/about.html:338 +msgid "Formato de envio dos artigos" +msgstr "" + +#: journalpage/templates/journalpage/about.html:344 +msgid "Ativos digitais" +msgstr "" + +#: journalpage/templates/journalpage/about.html:348 +msgid "Citações e referências" +msgstr "" + +#: journalpage/templates/journalpage/about.html:352 +#: journalpage/templates/journalpage/about.html:484 +msgid "Documentos Suplementares Necessários para Submissão" +msgstr "" + +#: journalpage/templates/journalpage/about.html:356 +#: journalpage/templates/journalpage/about.html:487 +msgid "Declaração de Financiamento" +msgstr "" + +#: journalpage/templates/journalpage/about.html:360 +#: journalpage/templates/journalpage/about.html:490 +msgid "Agradecimentos" +msgstr "" + +#: journalpage/templates/journalpage/about.html:364 +msgid "Informações adicionais" +msgstr "" + +#: journalpage/templates/journalpage/about.html:369 +msgid "*dados precisam estar disponíveis em alfabeto romano" +msgstr "" + +#: journalpage/templates/journalpage/about.html:383 +msgid "Ficha Bibliográfica" +msgstr "" + +#: journalpage/templates/journalpage/about.html:449 +msgid "Corpo editorial" +msgstr "" + +#: journalpage/templates/journalpage/about.html:452 +msgid "Editor-chefe" +msgstr "" + +#: journalpage/templates/journalpage/about.html:455 +msgid "Editor-executivo" +msgstr "" + +#: journalpage/templates/journalpage/about.html:458 +msgid "Editor(es) Associados ou de Seção / Área" +msgstr "" + +#: journalpage/templates/journalpage/about.html:461 +msgid "Equipe técnica" +msgstr "" + +#: journalpage/templates/journalpage/about.html:466 +msgid "Instruções para os Autores" +msgstr "" + +#: journalpage/templates/journalpage/about.html:469 +msgid "Tipos de Documentos Aceitos" +msgstr "" + +#: journalpage/templates/journalpage/about.html:475 +msgid "Formato de Envio dos Artigos" +msgstr "" + +#: journalpage/templates/journalpage/about.html:478 +msgid "Ativos Digitais" +msgstr "" + +#: journalpage/templates/journalpage/about.html:481 +msgid "Citações e Referências" +msgstr "" + +#: journalpage/templates/journalpage/about.html:493 +msgid "Informações Adicionais" +msgstr "" + +#: journalpage/templates/journalpage/includes/levelMenu.html:11 +msgid "Home do periódico" +msgstr "" + +#: journalpage/templates/journalpage/includes/levelMenu.html:101 +msgid "todos" +msgstr "" + +#: location/models.py:28 +msgid "Name of the city" +msgstr "" + +#: location/models.py:38 location/models.py:491 location/wagtail_hooks.py:57 +msgid "City" +msgstr "" + +#: location/models.py:39 +msgid "Cities" +msgstr "" + +#: location/models.py:115 +msgid "State name" +msgstr "" + +#: location/models.py:116 +msgid "State Acronym" +msgstr "" + +#: location/models.py:131 location/models.py:498 location/wagtail_hooks.py:71 +msgid "State" +msgstr "" + +#: location/models.py:132 +msgid "States" +msgstr "" + +#: location/models.py:246 +msgid "Country name" +msgstr "" + +#: location/models.py:247 location/models.py:350 +msgid "Country names" +msgstr "" + +#: location/models.py:337 +msgid "Country Name" +msgstr "" + +#: location/models.py:339 +msgid "Country Acronym (2 char)" +msgstr "" + +#: location/models.py:342 +msgid "Country Acronym (3 char)" +msgstr "" + +#: location/models.py:366 +msgid "Countries" +msgstr "" + +#: location/models.py:532 location/wagtail_hooks.py:26 +#: location/wagtail_hooks.py:132 +msgid "Location" +msgstr "" + +#: location/models.py:533 +msgid "Locations" +msgstr "" + +#: pid_provider/models.py:40 +msgid "XML Post URI" +msgstr "" + +#: pid_provider/models.py:43 +msgid "Get Token URI" +msgstr "" + +#: pid_provider/models.py:45 +msgid "Timeout" +msgstr "" + +#: pid_provider/models.py:46 +msgid "API Username" +msgstr "" + +#: pid_provider/models.py:47 +msgid "API Password" +msgstr "" + +#: pid_provider/models.py:90 +msgid "Request origin" +msgstr "" + +#: pid_provider/models.py:92 +msgid "Result type" +msgstr "" + +#: pid_provider/models.py:93 +msgid "Result message" +msgstr "" + +#: pid_provider/models.py:97 +msgid "Detail" +msgstr "" + +#: pid_provider/models.py:99 pid_provider/models.py:348 +msgid "Origin date" +msgstr "" + +#: pid_provider/models.py:101 xmlsps/models.py:43 +msgid "PID v3" +msgstr "" + +#: pid_provider/models.py:247 pid_provider/models.py:322 +msgid "Package name" +msgstr "" + +#: pid_provider/models.py:248 +msgid "PID type" +msgstr "" + +#: pid_provider/models.py:250 +msgid "PID pid_in_xml" +msgstr "" + +#: pid_provider/models.py:253 +msgid "PID assigned" +msgstr "" + +#: pid_provider/models.py:310 +msgid "issn_epub" +msgstr "" + +#: pid_provider/models.py:312 +msgid "issn_ppub" +msgstr "" + +#: pid_provider/models.py:313 +msgid "pub_year" +msgstr "" + +#: pid_provider/models.py:314 +msgid "volume" +msgstr "" + +#: pid_provider/models.py:315 +msgid "number" +msgstr "" + +#: pid_provider/models.py:316 +msgid "suppl" +msgstr "" + +#: pid_provider/models.py:323 +msgid "v3" +msgstr "" + +#: pid_provider/models.py:324 +msgid "v2" +msgstr "" + +#: pid_provider/models.py:325 +msgid "AOP PID" +msgstr "" + +#: pid_provider/models.py:327 +msgid "elocation id" +msgstr "" + +#: pid_provider/models.py:328 +msgid "fpage" +msgstr "" + +#: pid_provider/models.py:329 +msgid "fpage_seq" +msgstr "" + +#: pid_provider/models.py:330 +msgid "lpage" +msgstr "" + +#: pid_provider/models.py:332 +msgid "Document Publication Year" +msgstr "" + +#: pid_provider/models.py:334 +msgid "main_toc_section" +msgstr "" + +#: pid_provider/models.py:335 +msgid "DOI" +msgstr "" + +#: pid_provider/models.py:338 +msgid "article_titles_texts" +msgstr "" + +#: pid_provider/models.py:340 +msgid "surnames" +msgstr "" + +#: pid_provider/models.py:341 +msgid "collab" +msgstr "" + +#: pid_provider/models.py:342 +msgid "links" +msgstr "" + +#: pid_provider/models.py:344 +msgid "partial_body" +msgstr "" + +#: pid_provider/models.py:353 +msgid "Website publication date" +msgstr "" + +#: pid_provider/models.py:557 +msgid "Found {} records for {}" +msgstr "" + +#: pid_provider/models.py:647 +msgid "" +"The XML content is an ahead of print version but the document {} is already " +"published in an issue" +msgstr "" + +#: pid_provider/models.py:1015 pid_provider/models.py:1027 +#: pid_provider/models.py:1050 +msgid "No attribute enough for disambiguations {}" +msgstr "" + +#: pid_provider/scripts/schedule_pid_provider_for_opac_xmls.py:10 +msgid "Registra XML do site www.scielo.br no pid provider" +msgstr "" + +#: pid_provider/scripts/schedule_pid_provider_for_opac_xmls.py:19 +msgid "" +"Executa diariamente às 23h UTC a carga de XML atualizados de 30 anteriores " +"até hoje" +msgstr "" + +#: pid_provider/wagtail_hooks.py:23 +msgid "Pid Requests" +msgstr "" + +#: pid_provider/wagtail_hooks.py:51 +msgid "Collection Pid Requests" +msgstr "" + +#: pid_provider/wagtail_hooks.py:81 +msgid "Pid Provider XMLs" +msgstr "" + +#: pid_provider/wagtail_hooks.py:120 +msgid "Pid Changes" +msgstr "" + +#: pid_provider/wagtail_hooks.py:143 +msgid "Pid Provider" +msgstr "" + +#: report/models.py:37 +msgid "Complete with the type of report" +msgstr "" + +#: report/models.py:51 +msgid "Publication Year" +msgstr "" + +#: report/wagtail_hooks.py:12 +msgid "Report CSV" +msgstr "" + +#: researcher/models.py:246 +msgid "Given names" +msgstr "" + +#: researcher/models.py:248 +msgid "Last name" +msgstr "" + +#: researcher/models.py:249 +msgid "Suffix" +msgstr "" + +#: researcher/models.py:250 +msgid "Full Name" +msgstr "" + +#: researcher/models.py:253 +msgid "Declared Name" +msgstr "" + +#: researcher/models.py:257 +msgid "Gender identification status" +msgstr "" + +#: researcher/models.py:428 +msgid "ID" +msgstr "" + +#: researcher/models.py:430 +msgid "Source name" +msgstr "" + +#: researcher/wagtail_hooks.py:18 +msgid "Researcher" +msgstr "" + +#: researcher/wagtail_hooks.py:46 +msgid "Researcher Identifier" +msgstr "" + +#: researcher/wagtail_hooks.py:63 +msgid "Affiliation" +msgstr "" + +#: researcher/wagtail_hooks.py:84 +msgid "PersonName" +msgstr "" + +#: search/choices.py:4 +msgid "Periódico" +msgstr "" + +#: search/choices.py:5 +msgid "Ano de publicação" +msgstr "" + +#: search/choices.py:6 +msgid "Tipo de Literatura" +msgstr "" + +#: search/choices.py:7 search/choices.py:10 +msgid "Coleções" +msgstr "" + +#: search/choices.py:8 +msgid "Ano" +msgstr "" + +#: search/choices.py:9 +msgid "Idioma" +msgstr "" + +#: search/choices.py:11 +msgid "Argentina" +msgstr "" + +#: search/choices.py:12 +msgid "Brasil" +msgstr "" + +#: search/choices.py:13 +msgid "Bolívia" +msgstr "" + +#: search/choices.py:14 +msgid "Chile" +msgstr "" + +#: search/choices.py:15 +msgid "Colômbia" +msgstr "" + +#: search/choices.py:16 +msgid "Costa Rica" +msgstr "" + +#: search/choices.py:17 +msgid "Cuba" +msgstr "" + +#: search/choices.py:18 +msgid "Espanha" +msgstr "" + +#: search/choices.py:19 +msgid "México" +msgstr "" + +#: search/choices.py:20 +msgid "Portugal" +msgstr "" + +#: search/choices.py:21 +msgid "Venezuela" +msgstr "" + +#: search/choices.py:22 thematic_areas/choices.py:510 +msgid "Saúde Pública" +msgstr "" + +#: search/choices.py:23 +msgid "Social Sciences" +msgstr "" + +#: search/choices.py:24 +msgid "África do Sul" +msgstr "" + +#: search/choices.py:25 +msgid "Peru" +msgstr "" + +#: search/choices.py:26 +msgid "Uruguai" +msgstr "" + +#: search/choices.py:27 +msgid "Ecuador" +msgstr "" + +#: search/choices.py:28 +msgid "Paraguai" +msgstr "" + +#: search/choices.py:29 +msgid "Índias Ocidentais" +msgstr "" + +#: search/choices.py:30 thematic_areas/choices.py:593 +msgid "Português" +msgstr "" + +#: search/choices.py:31 thematic_areas/choices.py:580 +msgid "Espanhol" +msgstr "" + +#: search/choices.py:32 thematic_areas/choices.py:588 +msgid "Inglês" +msgstr "" + +#: search/choices.py:33 +msgid "Africaner" +msgstr "" + +#: search/choices.py:34 thematic_areas/choices.py:582 +msgid "Francês" +msgstr "" + +#: search/choices.py:35 thematic_areas/choices.py:589 +msgid "Italiano" +msgstr "" + +#: search/choices.py:36 thematic_areas/choices.py:572 +msgid "Alemão" +msgstr "" + +#: search/choices.py:37 thematic_areas/choices.py:573 +msgid "Árabe" +msgstr "" + +#: search/choices.py:38 thematic_areas/choices.py:576 +msgid "Coreano" +msgstr "" + +#: search/choices.py:39 thematic_areas/choices.py:590 +msgid "Japonês" +msgstr "" + +#: search/choices.py:40 +msgid "Búlgaro" +msgstr "" + +#: search/choices.py:41 +msgid "Bósnio" +msgstr "" + +#: search/choices.py:42 search/choices.py:43 +msgid "Catalão" +msgstr "" + +#: search/choices.py:44 thematic_areas/choices.py:595 +msgid "Russo" +msgstr "" + +#: search/choices.py:45 thematic_areas/choices.py:594 +msgid "Romeno" +msgstr "" + +#: search/choices.py:46 +msgid "Ucraniano" +msgstr "" + +#: search/choices.py:47 thematic_areas/choices.py:600 +msgid "Turco" +msgstr "" + +#: search/choices.py:48 thematic_areas/choices.py:597 +msgid "Sueco" +msgstr "" + +#: search/choices.py:49 thematic_areas/choices.py:596 +msgid "Sérvio" +msgstr "" + +#: search/choices.py:50 thematic_areas/choices.py:578 +msgid "Eslovaco" +msgstr "" + +#: search/choices.py:51 thematic_areas/choices.py:579 +msgid "Esloveno" +msgstr "" + +#: search/choices.py:52 thematic_areas/choices.py:592 +msgid "Polonês" +msgstr "" + +#: search/choices.py:53 search/choices.py:54 thematic_areas/choices.py:584 +msgid "Holandês" +msgstr "" + +#: search/choices.py:55 +msgid "Letão" +msgstr "" + +#: search/choices.py:56 +msgid "Lituano" +msgstr "" + +#: search/choices.py:57 +msgid "Islandês" +msgstr "" + +#: search/choices.py:58 thematic_areas/choices.py:585 +msgid "Húngaro" +msgstr "" + +#: search/choices.py:59 +msgid "Croata" +msgstr "" + +#: search/choices.py:60 +msgid "Hebraico" +msgstr "" + +#: search/choices.py:61 thematic_areas/choices.py:581 +msgid "Finlandês" +msgstr "" + +#: search/choices.py:62 thematic_areas/choices.py:575 +msgid "Chinês" +msgstr "" + +#: search/choices.py:63 +msgid "Artigo" +msgstr "" + +#: search/choices.py:64 +msgid "Editorial" +msgstr "" + +#: search/choices.py:65 +msgid "Resenha de livro" +msgstr "" + +#: search/choices.py:66 +msgid "Relato de caso" +msgstr "" + +#: search/choices.py:67 +msgid "Comunicação rápida" +msgstr "" + +#: search/choices.py:68 +msgid "Artigo de revisão" +msgstr "" + +#: search/choices.py:69 +msgid "Relato breve" +msgstr "" + +#: search/choices.py:70 +msgid "Carta" +msgstr "" + +#: search/choices.py:71 +msgid "Artigo de comentário" +msgstr "" + +#: search/choices.py:72 search/choices.py:73 +msgid "Outros" +msgstr "" + +#: search/choices.py:74 search/templates/include/result_doc_actions.html:7 +msgid "Resumo" +msgstr "" + +#: search/choices.py:75 +msgid "Addendum" +msgstr "" + +#: search/choices.py:76 +msgid "Comunicado de imprensa" +msgstr "" + +#: search/choices.py:77 +msgid "Notícia" +msgstr "" + +#: search/choices.py:78 +msgid "Correção" +msgstr "" + +#: search/choices.py:79 +msgid "Discussão" +msgstr "" + +#: search/choices.py:80 +msgid "Obituário" +msgstr "" + +#: search/choices.py:81 +msgid "Em resumo" +msgstr "" + +#: search/templates/cluster.html:10 +msgid "Filtros" +msgstr "" + +#: search/templates/include/result_doc.html:34 +msgid "Volume" +msgstr "" + +#: search/templates/include/result_doc_actions.html:13 +msgid "Texto" +msgstr "" + +#: search/templates/include/search_pagination.html:8 +msgid "Página" +msgstr "" + +#: search/templates/search.html:9 +msgid "Pesquisa | SciELO" +msgstr "" + +#: search/templates/search.html:38 +msgid "Digite sua pesquisa..." +msgstr "" + +#: search/templates/search.html:45 +msgid "Help" +msgstr "" + +#: search/templates/search.html:65 +msgid "registros encontrados para o termo" +msgstr "" + +#: search/templates/search.html:69 +msgid "Tempo da pesquisa" +msgstr "" + +#: search/templates/search.html:69 +msgid "milisegundos" +msgstr "" + +#: search/templates/search.html:72 +msgid "0 registros encontrados para o termo" +msgstr "" + +#: search/templates/search.html:100 +msgid "Ordenar por" +msgstr "" + +#: search/templates/search.html:102 +msgid "Publicação - Mais novos primeiros" +msgstr "" + +#: search/templates/search.html:103 +msgid "Publicação - Mais antigos primeiros" +msgstr "" + +#: search/templates/search.html:104 +msgid "Ordem descrecente de criação" +msgstr "" + +#: search/templates/search.html:105 +msgid "Relevância" +msgstr "" + +#: search/templates/search.html:110 +msgid "Visualizar" +msgstr "" + +#: search/templates/search.html:118 +msgid "Itens por página" +msgstr "" + +#: search/templates/search.html:289 +msgid "" +"O valor do campo página não pode ser maior que a quantidade atual de páginas." +msgstr "" + +#: search/templates/search.html:297 +msgid "O valor do campo página deve ser maior que 0." +msgstr "" + +#: src/packtools/packtools/sps/pid_provider/xml_sps_lib.py:77 +msgid "{} must be xml file or zip file containing xml" +msgstr "" + +#: src/packtools/packtools/sps/pid_provider/xml_sps_lib.py:84 +msgid "Unable to get xml items from {}: {} {}" +msgstr "" + +#: src/packtools/packtools/sps/pid_provider/xml_sps_lib.py:121 +msgid "Unable to get xml items from zip file {}: {} {}" +msgstr "" + +#: src/packtools/packtools/sps/pid_provider/xml_sps_lib.py:186 +msgid "Unable to get xml from {}" +msgstr "" + +#: src/packtools/packtools/sps/pid_provider/xml_sps_lib.py:656 +msgid "Unable to get XMLWithPre.article_publication_date {} {} {}" +msgstr "" + +#: src/packtools/packtools/webapp/forms.py:10 +msgid "URL to statics files" +msgstr "" + +#: src/packtools/packtools/webapp/forms.py:18 +msgid "This type of file is not allowed! Please select another file." +msgstr "" + +#: thematic_areas/choices.py:5 thematic_areas/choices.py:21 +#: thematic_areas/choices.py:118 +msgid "ALL" +msgstr "" + +#: thematic_areas/choices.py:6 thematic_areas/choices.py:22 +#: thematic_areas/choices.py:119 thematic_areas/choices.py:571 +#: thematic_areas/choices.py:605 +msgid "UNDEFINED" +msgstr "" + +#: thematic_areas/choices.py:7 thematic_areas/choices.py:23 +#: thematic_areas/choices.py:120 +msgid "NOT APPLICABLE" +msgstr "" + +#: thematic_areas/choices.py:8 +msgid "Ciências Agrárias" +msgstr "" + +#: thematic_areas/choices.py:9 +msgid "Ciências Biológicas" +msgstr "" + +#: thematic_areas/choices.py:10 +msgid "Ciências da Saúde" +msgstr "" + +#: thematic_areas/choices.py:11 +msgid "Ciências Exatas e da Terra" +msgstr "" + +#: thematic_areas/choices.py:12 +msgid "Ciências Humanas" +msgstr "" + +#: thematic_areas/choices.py:13 +msgid "Ciências Sociais Aplicadas" +msgstr "" + +#: thematic_areas/choices.py:14 +msgid "Engenharias" +msgstr "" + +#: thematic_areas/choices.py:15 +msgid "Linguística, Letras e Artes" +msgstr "" + +#: thematic_areas/choices.py:16 +msgid "Multidisciplinar" +msgstr "" + +#: thematic_areas/choices.py:24 +msgid "Administração" +msgstr "" + +#: thematic_areas/choices.py:25 +msgid "Agronomia" +msgstr "" + +#: thematic_areas/choices.py:26 +msgid "Antropologia" +msgstr "" + +#: thematic_areas/choices.py:27 +msgid "Arqueologia" +msgstr "" + +#: thematic_areas/choices.py:28 +msgid "Arquitetura e urbanismo" +msgstr "" + +#: thematic_areas/choices.py:29 +msgid "Artes" +msgstr "" + +#: thematic_areas/choices.py:30 +msgid "Astronomia" +msgstr "" + +#: thematic_areas/choices.py:31 +msgid "Biofísica" +msgstr "" + +#: thematic_areas/choices.py:32 +msgid "Biologia geral" +msgstr "" + +#: thematic_areas/choices.py:33 +msgid "Bioquímica" +msgstr "" + +#: thematic_areas/choices.py:34 +msgid "Biotecnologia" +msgstr "" + +#: thematic_areas/choices.py:35 +msgid "Botânica" +msgstr "" + +#: thematic_areas/choices.py:36 +msgid "Ciência da computação" +msgstr "" + +#: thematic_areas/choices.py:37 +msgid "Ciência da informação" +msgstr "" + +#: thematic_areas/choices.py:38 +msgid "Ciência e tecnologia de alimentos" +msgstr "" + +#: thematic_areas/choices.py:39 +msgid "Ciência política" +msgstr "" + +#: thematic_areas/choices.py:40 +msgid "Ciências Ambientais" +msgstr "" + +#: thematic_areas/choices.py:41 +msgid "Comunicação" +msgstr "" + +#: thematic_areas/choices.py:42 +msgid "Demografia" +msgstr "" + +#: thematic_areas/choices.py:43 +msgid "Desenho industrial" +msgstr "" + +#: thematic_areas/choices.py:44 +msgid "Direito" +msgstr "" + +#: thematic_areas/choices.py:45 +msgid "Ecologia" +msgstr "" + +#: thematic_areas/choices.py:46 +msgid "Economia" +msgstr "" + +#: thematic_areas/choices.py:47 +msgid "Economia doméstica" +msgstr "" + +#: thematic_areas/choices.py:48 +msgid "Educação" +msgstr "" + +#: thematic_areas/choices.py:49 +msgid "Educação física" +msgstr "" + +#: thematic_areas/choices.py:50 +msgid "Enfermagem" +msgstr "" + +#: thematic_areas/choices.py:51 +msgid "Engenharia aeroespacial" +msgstr "" + +#: thematic_areas/choices.py:52 +msgid "Engenharia agrícola" +msgstr "" + +#: thematic_areas/choices.py:53 +msgid "Engenharia biomédica" +msgstr "" + +#: thematic_areas/choices.py:54 +msgid "Engenharia civil" +msgstr "" + +#: thematic_areas/choices.py:57 +msgid "Engenharia de materiais e metalúrgica" +msgstr "" + +#: thematic_areas/choices.py:59 +msgid "Engenharia de minas" +msgstr "" + +#: thematic_areas/choices.py:60 +msgid "Engenharia de produção" +msgstr "" + +#: thematic_areas/choices.py:61 +msgid "Engenharia de transportes" +msgstr "" + +#: thematic_areas/choices.py:62 +msgid "Engenharia elétrica" +msgstr "" + +#: thematic_areas/choices.py:63 +msgid "Engenharia mecânica" +msgstr "" + +#: thematic_areas/choices.py:64 +msgid "Engenharia naval e oceânica" +msgstr "" + +#: thematic_areas/choices.py:65 +msgid "Engenharia nuclear" +msgstr "" + +#: thematic_areas/choices.py:66 +msgid "Engenharia química" +msgstr "" + +#: thematic_areas/choices.py:67 +msgid "Engenharia sanitária" +msgstr "" + +#: thematic_areas/choices.py:68 +msgid "Ensino" +msgstr "" + +#: thematic_areas/choices.py:69 +msgid "Farmácia" +msgstr "" + +#: thematic_areas/choices.py:70 +msgid "Farmacologia" +msgstr "" + +#: thematic_areas/choices.py:71 +msgid "Filosofia" +msgstr "" + +#: thematic_areas/choices.py:72 +msgid "Física" +msgstr "" + +#: thematic_areas/choices.py:73 +msgid "Fisiologia" +msgstr "" + +#: thematic_areas/choices.py:74 +msgid "Fisioterapia e terapia ocupacional" +msgstr "" + +#: thematic_areas/choices.py:75 +msgid "Fonoaudiologia" +msgstr "" + +#: thematic_areas/choices.py:76 +msgid "Genética" +msgstr "" + +#: thematic_areas/choices.py:77 +msgid "Geociências" +msgstr "" + +#: thematic_areas/choices.py:78 +msgid "Geografia" +msgstr "" + +#: thematic_areas/choices.py:79 +msgid "História" +msgstr "" + +#: thematic_areas/choices.py:80 +msgid "Imunologia" +msgstr "" + +#: thematic_areas/choices.py:81 +msgid "Interdisciplinar" +msgstr "" + +#: thematic_areas/choices.py:82 +msgid "Letras" +msgstr "" + +#: thematic_areas/choices.py:83 +msgid "Linguística" +msgstr "" + +#: thematic_areas/choices.py:84 +msgid "Matemática" +msgstr "" + +#: thematic_areas/choices.py:85 +msgid "Materiais " +msgstr "" + +#: thematic_areas/choices.py:86 +msgid "Medicina" +msgstr "" + +#: thematic_areas/choices.py:87 +msgid "Medicina veterinária" +msgstr "" + +#: thematic_areas/choices.py:88 +msgid "Microbiologia" +msgstr "" + +#: thematic_areas/choices.py:89 +msgid "Morfologia" +msgstr "" + +#: thematic_areas/choices.py:90 +msgid "Museologia" +msgstr "" + +#: thematic_areas/choices.py:91 +msgid "Nutrição" +msgstr "" + +#: thematic_areas/choices.py:92 +msgid "Oceanografia" +msgstr "" + +#: thematic_areas/choices.py:93 +msgid "Odontologia" +msgstr "" + +#: thematic_areas/choices.py:94 +msgid "Parasitologia" +msgstr "" + +#: thematic_areas/choices.py:95 +msgid "Planejamento urbano e regional" +msgstr "" + +#: thematic_areas/choices.py:96 +msgid "Probabilidade e estatística" +msgstr "" + +#: thematic_areas/choices.py:97 +msgid "Psicologia" +msgstr "" + +#: thematic_areas/choices.py:98 +msgid "Química" +msgstr "" + +#: thematic_areas/choices.py:101 +msgid "Recursos florestais e engenharia florestal" +msgstr "" + +#: thematic_areas/choices.py:105 +msgid "Recursos pesqueiros e engenharia de pesca" +msgstr "" + +#: thematic_areas/choices.py:107 +msgid "Saúde coletiva" +msgstr "" + +#: thematic_areas/choices.py:108 +msgid "Serviço social" +msgstr "" + +#: thematic_areas/choices.py:109 +msgid "Sociologia" +msgstr "" + +#: thematic_areas/choices.py:110 +msgid "Teologia" +msgstr "" + +#: thematic_areas/choices.py:111 +msgid "Turismo" +msgstr "" + +#: thematic_areas/choices.py:112 +msgid "Zoologia" +msgstr "" + +#: thematic_areas/choices.py:113 +msgid "Zootecnia" +msgstr "" + +#: thematic_areas/choices.py:121 +msgid "Administraçao de Empresas" +msgstr "" + +#: thematic_areas/choices.py:122 +msgid "Administração de Setores Específicos" +msgstr "" + +#: thematic_areas/choices.py:123 +msgid "Administração Educacional" +msgstr "" + +#: thematic_areas/choices.py:124 +msgid "Administração Pública" +msgstr "" + +#: thematic_areas/choices.py:125 +msgid "Aerodinâmica" +msgstr "" + +#: thematic_areas/choices.py:126 +msgid "Agrometeorologia" +msgstr "" + +#: thematic_areas/choices.py:127 +msgid "Álgebra" +msgstr "" + +#: thematic_areas/choices.py:128 +msgid "Análise" +msgstr "" + +#: thematic_areas/choices.py:129 +msgid "Análise e Controle de Medicamentos" +msgstr "" + +#: thematic_areas/choices.py:130 +msgid "Análise Nutricional de População" +msgstr "" + +#: thematic_areas/choices.py:131 +msgid "Análise Toxicológica" +msgstr "" + +#: thematic_areas/choices.py:132 +msgid "Anatomia" +msgstr "" + +#: thematic_areas/choices.py:135 +msgid "Anatomia Patológica e Patologia Clínica" +msgstr "" + +#: thematic_areas/choices.py:139 +msgid "Antropologia das Populações Afro-Brasileiras" +msgstr "" + +#: thematic_areas/choices.py:141 +msgid "Antropologia Rural" +msgstr "" + +#: thematic_areas/choices.py:142 +msgid "Antropologia Urbana" +msgstr "" + +#: thematic_areas/choices.py:143 +msgid "Aplicações de Radioisótopos" +msgstr "" + +#: thematic_areas/choices.py:144 +msgid "Aquicultura" +msgstr "" + +#: thematic_areas/choices.py:147 +msgid "Áreas Clássicas de Fenomenologia e suas Aplicações" +msgstr "" + +#: thematic_areas/choices.py:149 +msgid "Arqueologia Histórica" +msgstr "" + +#: thematic_areas/choices.py:150 +msgid "Arqueologia Pré-Histórica" +msgstr "" + +#: thematic_areas/choices.py:151 +msgid "Arquivologia" +msgstr "" + +#: thematic_areas/choices.py:152 +msgid "Artes do Vídeo" +msgstr "" + +#: thematic_areas/choices.py:153 +msgid "Artes Plásticas" +msgstr "" + +#: thematic_areas/choices.py:154 +msgid "Astrofísica do Meio Interestelar" +msgstr "" + +#: thematic_areas/choices.py:155 +msgid "Astrofísica do Sistema Solar" +msgstr "" + +#: thematic_areas/choices.py:156 +msgid "Astrofísica Estelar" +msgstr "" + +#: thematic_areas/choices.py:157 +msgid "Astrofísica Extragaláctica" +msgstr "" + +#: thematic_areas/choices.py:160 +msgid "Astronomia de Posição e Mecânica Celeste" +msgstr "" + +#: thematic_areas/choices.py:162 +msgid "Biblioteconomia" +msgstr "" + +#: thematic_areas/choices.py:163 +msgid "Bioengenharia" +msgstr "" + +#: thematic_areas/choices.py:164 +msgid "Biofísica Celular" +msgstr "" + +#: thematic_areas/choices.py:165 +msgid "Biofísica de Processos e Sistemas" +msgstr "" + +#: thematic_areas/choices.py:166 +msgid "Biofísica Molecular" +msgstr "" + +#: thematic_areas/choices.py:169 +msgid "Biologia e Fisiologia dos Mircroorganismos" +msgstr "" + +#: thematic_areas/choices.py:171 +msgid "Biologia Molecular" +msgstr "" + +#: thematic_areas/choices.py:172 +msgid "Bioquímica da Nutrição" +msgstr "" + +#: thematic_areas/choices.py:173 +msgid "Bioquímica de Microorganismos" +msgstr "" + +#: thematic_areas/choices.py:174 +msgid "Botânica Aplicada" +msgstr "" + +#: thematic_areas/choices.py:175 +msgid "Bromatologia" +msgstr "" + +#: thematic_areas/choices.py:176 +msgid "Ciência de Alimentos" +msgstr "" + +#: thematic_areas/choices.py:177 +msgid "Ciência do Solo" +msgstr "" + +#: thematic_areas/choices.py:178 +msgid "Ciências Contábeis" +msgstr "" + +#: thematic_areas/choices.py:179 +msgid "Cinema" +msgstr "" + +#: thematic_areas/choices.py:182 +msgid "Circuitos Elétricos, Magnéticos e Eletrônicos" +msgstr "" + +#: thematic_areas/choices.py:184 +msgid "Cirurgia" +msgstr "" + +#: thematic_areas/choices.py:185 +msgid "Cirurgia Buco-Maxilo-Facial" +msgstr "" + +#: thematic_areas/choices.py:186 +msgid "Citologia e Biologia Celular" +msgstr "" + +#: thematic_areas/choices.py:187 +msgid "Clínica e Cirurgia Animal" +msgstr "" + +#: thematic_areas/choices.py:188 +msgid "Clínica Médica" +msgstr "" + +#: thematic_areas/choices.py:189 +msgid "Clínica Odontológica" +msgstr "" + +#: thematic_areas/choices.py:190 +msgid "Combustível Nuclear" +msgstr "" + +#: thematic_areas/choices.py:191 +msgid "Componentes da Dinâmica Demográfica" +msgstr "" + +#: thematic_areas/choices.py:192 +msgid "Comportamento Animal" +msgstr "" + +#: thematic_areas/choices.py:193 +msgid "Comportamento Político" +msgstr "" + +#: thematic_areas/choices.py:194 +msgid "Comunicação Visual" +msgstr "" + +#: thematic_areas/choices.py:195 +msgid "Conservação da Natureza" +msgstr "" + +#: thematic_areas/choices.py:196 +msgid "Construção Civil" +msgstr "" + +#: thematic_areas/choices.py:197 +msgid "Construções Rurais e Ambiência" +msgstr "" + +#: thematic_areas/choices.py:200 +msgid "Crescimento, Flutuações e Planejamento Econômico" +msgstr "" + +#: thematic_areas/choices.py:202 +msgid "Currículo" +msgstr "" + +#: thematic_areas/choices.py:203 +msgid "Dança" +msgstr "" + +#: thematic_areas/choices.py:204 +msgid "Demografia Histórica" +msgstr "" + +#: thematic_areas/choices.py:205 +msgid "Desenho de Produto" +msgstr "" + +#: thematic_areas/choices.py:208 +msgid "Desnutrição e Desenvolvimento Fisiológico" +msgstr "" + +#: thematic_areas/choices.py:210 +msgid "Dietética" +msgstr "" + +#: thematic_areas/choices.py:211 +msgid "Dinâmica de Vôo" +msgstr "" + +#: thematic_areas/choices.py:212 +msgid "Direito Privado" +msgstr "" + +#: thematic_areas/choices.py:213 +msgid "Direito Público" +msgstr "" + +#: thematic_areas/choices.py:214 +msgid "Direitos Especiais" +msgstr "" + +#: thematic_areas/choices.py:215 +msgid "Ecologia Aplicada" +msgstr "" + +#: thematic_areas/choices.py:216 +msgid "Ecologia de Ecossistemas" +msgstr "" + +#: thematic_areas/choices.py:219 +msgid "Ecologia dos Animais Domésticos e Etologia" +msgstr "" + +#: thematic_areas/choices.py:221 +msgid "Ecologia Teórica" +msgstr "" + +#: thematic_areas/choices.py:224 +msgid "Economia Agrária e dos Recursos Naturais" +msgstr "" + +#: thematic_areas/choices.py:226 +msgid "Economia de Recursos Humanos" +msgstr "" + +#: thematic_areas/choices.py:227 +msgid "Economia do Bem-Estar Social" +msgstr "" + +#: thematic_areas/choices.py:228 +msgid "Economia Industrial" +msgstr "" + +#: thematic_areas/choices.py:229 +msgid "Economia Internacional" +msgstr "" + +#: thematic_areas/choices.py:230 +msgid "Economia Monetária e Fiscal" +msgstr "" + +#: thematic_areas/choices.py:231 +msgid "Economia Regional e Urbana" +msgstr "" + +#: thematic_areas/choices.py:232 +msgid "Educação Artística" +msgstr "" + +#: thematic_areas/choices.py:235 +msgid "Eletrônica Industrial, Sistemas e Controles Eletrônicos" +msgstr "" + +#: thematic_areas/choices.py:237 +msgid "Embriologia" +msgstr "" + +#: thematic_areas/choices.py:238 +msgid "Endodontia" +msgstr "" + +#: thematic_areas/choices.py:239 +msgid "Energia de Biomassa Florestal" +msgstr "" + +#: thematic_areas/choices.py:240 +msgid "Energização Rural" +msgstr "" + +#: thematic_areas/choices.py:241 +msgid "Enfermagem de Doenças Contagiosas" +msgstr "" + +#: thematic_areas/choices.py:242 +msgid "Enfermagem de Saúde Pública" +msgstr "" + +#: thematic_areas/choices.py:243 +msgid "Enfermagem Médico-Cirúrgica" +msgstr "" + +#: thematic_areas/choices.py:244 +msgid "Enfermagem Obstétrica" +msgstr "" + +#: thematic_areas/choices.py:245 +msgid "Enfermagem Pediátrica" +msgstr "" + +#: thematic_areas/choices.py:246 +msgid "Enfermagem Psiquiátrica" +msgstr "" + +#: thematic_areas/choices.py:247 +msgid "Engenharia de Água e Solo" +msgstr "" + +#: thematic_areas/choices.py:248 +msgid "Engenharia de Alimentos" +msgstr "" + +#: thematic_areas/choices.py:249 +msgid "Engenharia de Pesca" +msgstr "" + +#: thematic_areas/choices.py:252 +msgid "Engenharia de Processamento de Produtos Agrícolas" +msgstr "" + +#: thematic_areas/choices.py:254 +msgid "Engenharia do Produto" +msgstr "" + +#: thematic_areas/choices.py:255 +msgid "Engenharia Econômica" +msgstr "" + +#: thematic_areas/choices.py:256 +msgid "Engenharia Hidráulica" +msgstr "" + +#: thematic_areas/choices.py:257 +msgid "Engenharia Médica" +msgstr "" + +#: thematic_areas/choices.py:258 +msgid "Engenharia Térmica" +msgstr "" + +#: thematic_areas/choices.py:259 +msgid "Ensino-Aprendizagem" +msgstr "" + +#: thematic_areas/choices.py:262 +msgid "Entomologia e Malacologia de Parasitos e Vetores" +msgstr "" + +#: thematic_areas/choices.py:264 +msgid "Enzimologia" +msgstr "" + +#: thematic_areas/choices.py:265 +msgid "Epidemiologia" +msgstr "" + +#: thematic_areas/choices.py:266 +msgid "Epistemologia" +msgstr "" + +#: thematic_areas/choices.py:267 +msgid "Estado e Governo" +msgstr "" + +#: thematic_areas/choices.py:268 +msgid "Estatística" +msgstr "" + +#: thematic_areas/choices.py:269 +msgid "Estruturas" +msgstr "" + +#: thematic_areas/choices.py:270 +msgid "Estruturas Aeroespaciais" +msgstr "" + +#: thematic_areas/choices.py:271 +msgid "Estruturas Navais e Oceânicas" +msgstr "" + +#: thematic_areas/choices.py:273 +msgid "Etnofarmacologia" +msgstr "" + +#: thematic_areas/choices.py:274 +msgid "Etnologia Indígena" +msgstr "" + +#: thematic_areas/choices.py:275 +msgid "Extensão Rural" +msgstr "" + +#: thematic_areas/choices.py:276 +msgid "Farmacognosia" +msgstr "" + +#: thematic_areas/choices.py:277 +msgid "Farmacologia Autonômica" +msgstr "" + +#: thematic_areas/choices.py:278 +msgid "Farmacologia Bioquímica e Molecular" +msgstr "" + +#: thematic_areas/choices.py:279 +msgid "Farmacologia Cardiorenal" +msgstr "" + +#: thematic_areas/choices.py:280 +msgid "Farmacologia Clínica" +msgstr "" + +#: thematic_areas/choices.py:281 +msgid "Farmacologia Geral" +msgstr "" + +#: thematic_areas/choices.py:282 +msgid "Farmacotecnia" +msgstr "" + +#: thematic_areas/choices.py:283 +msgid "Fenômenos de Transporte" +msgstr "" + +#: thematic_areas/choices.py:284 +msgid "Filosofia Brasileira" +msgstr "" + +#: thematic_areas/choices.py:285 +msgid "Filosofia da Linguagem" +msgstr "" + +#: thematic_areas/choices.py:286 +msgid "Física Atômica e Molecular" +msgstr "" + +#: thematic_areas/choices.py:287 +msgid "Física da Matéria Condensada" +msgstr "" + +#: thematic_areas/choices.py:290 +msgid "Física das Partículas Elementares e Campos" +msgstr "" + +#: thematic_areas/choices.py:294 +msgid "Física dos Fluídos, Física de Plasmas e Descargas Elétricas" +msgstr "" + +#: thematic_areas/choices.py:296 +msgid "Física Geral" +msgstr "" + +#: thematic_areas/choices.py:297 +msgid "Física Nuclear" +msgstr "" + +#: thematic_areas/choices.py:298 +msgid "Físico-Química" +msgstr "" + +#: thematic_areas/choices.py:299 +msgid "Fisiologia Comparada" +msgstr "" + +#: thematic_areas/choices.py:300 +msgid "Fisiologia de Orgãos e Sistemas" +msgstr "" + +#: thematic_areas/choices.py:301 +msgid "Fisiologia do Esforço" +msgstr "" + +#: thematic_areas/choices.py:302 +msgid "Fisiologia dos Grupos Recentes" +msgstr "" + +#: thematic_areas/choices.py:303 +msgid "Fisiologia Geral" +msgstr "" + +#: thematic_areas/choices.py:304 +msgid "Fisiologia Vegetal" +msgstr "" + +#: thematic_areas/choices.py:305 +msgid "Fitogeografia" +msgstr "" + +#: thematic_areas/choices.py:306 +msgid "Fitossanidade" +msgstr "" + +#: thematic_areas/choices.py:307 +msgid "Fitotecnia" +msgstr "" + +#: thematic_areas/choices.py:308 +msgid "Floricultura, Parques e Jardins" +msgstr "" + +#: thematic_areas/choices.py:309 +msgid "Fontes de Dados Demográficos" +msgstr "" + +#: thematic_areas/choices.py:310 +msgid "Fotografia" +msgstr "" + +#: thematic_areas/choices.py:311 +msgid "Fundamentos da Educação" +msgstr "" + +#: thematic_areas/choices.py:312 +msgid "Fundamentos da Sociologia" +msgstr "" + +#: thematic_areas/choices.py:315 +msgid "Fundamentos de Arquitetura e Urbanismo" +msgstr "" + +#: thematic_areas/choices.py:319 +msgid "Fundamentos do Planejamento Urbano e Regional" +msgstr "" + +#: thematic_areas/choices.py:321 +msgid "Fundamentos do Serviço Social" +msgstr "" + +#: thematic_areas/choices.py:322 +msgid "Fundamentos e Críticas das Artes" +msgstr "" + +#: thematic_areas/choices.py:323 +msgid "Fundamentos e Medidas da Psicologia" +msgstr "" + +#: thematic_areas/choices.py:324 +msgid "Fusão Controlada" +msgstr "" + +#: thematic_areas/choices.py:325 +msgid "Genética Animal" +msgstr "" + +#: thematic_areas/choices.py:328 +msgid "Genética e Melhoramento dos Animais Domésticos" +msgstr "" + +#: thematic_areas/choices.py:330 +msgid "Genética Humana e Médica" +msgstr "" + +#: thematic_areas/choices.py:333 +msgid "Genética Molecular e de Microorganismos" +msgstr "" + +#: thematic_areas/choices.py:335 +msgid "Genética Quantitativa" +msgstr "" + +#: thematic_areas/choices.py:336 +msgid "Genética Vegetal" +msgstr "" + +#: thematic_areas/choices.py:337 +msgid "Geodésia" +msgstr "" + +#: thematic_areas/choices.py:338 +msgid "Geofísica" +msgstr "" + +#: thematic_areas/choices.py:339 +msgid "Geografia Física" +msgstr "" + +#: thematic_areas/choices.py:340 +msgid "Geografia Humana" +msgstr "" + +#: thematic_areas/choices.py:341 +msgid "Geografia Regional" +msgstr "" + +#: thematic_areas/choices.py:342 +msgid "Geologia" +msgstr "" + +#: thematic_areas/choices.py:343 +msgid "Geometria e Topologia" +msgstr "" + +#: thematic_areas/choices.py:344 +msgid "Geotécnica" +msgstr "" + +#: thematic_areas/choices.py:345 +msgid "Gerência de Produção" +msgstr "" + +#: thematic_areas/choices.py:346 +msgid "Helmintologia de Parasitos" +msgstr "" + +#: thematic_areas/choices.py:349 +msgid "Hidrodinâmica de Navios e Sistemas Oceânicos" +msgstr "" + +#: thematic_areas/choices.py:351 +msgid "Histologia" +msgstr "" + +#: thematic_areas/choices.py:352 +msgid "História Antiga e Medieval" +msgstr "" + +#: thematic_areas/choices.py:353 +msgid "História da América" +msgstr "" + +#: thematic_areas/choices.py:354 +msgid "História da Filosofia" +msgstr "" + +#: thematic_areas/choices.py:355 +msgid "História da Teologia" +msgstr "" + +#: thematic_areas/choices.py:356 +msgid "História das Ciências" +msgstr "" + +#: thematic_areas/choices.py:357 +msgid "História do Brasil" +msgstr "" + +#: thematic_areas/choices.py:358 +msgid "História Moderna e Contemporânea" +msgstr "" + +#: thematic_areas/choices.py:359 +msgid "Imunogenética" +msgstr "" + +#: thematic_areas/choices.py:360 +msgid "Imunologia Aplicada" +msgstr "" + +#: thematic_areas/choices.py:361 +msgid "Imunologia Celular" +msgstr "" + +#: thematic_areas/choices.py:362 +msgid "Imunoquímica" +msgstr "" + +#: thematic_areas/choices.py:363 +msgid "Infra-Estrutura de Transportes" +msgstr "" + +#: thematic_areas/choices.py:366 +msgid "Inspeção de Produtos de Origem Animal" +msgstr "" + +#: thematic_areas/choices.py:370 +msgid "Instalações e Equipamentos Metalúrgicos" +msgstr "" + +#: thematic_areas/choices.py:372 +msgid "Instrumentação Astronômica" +msgstr "" + +#: thematic_areas/choices.py:373 +msgid "Jornalismo e Editoração" +msgstr "" + +#: thematic_areas/choices.py:374 +msgid "Lavra" +msgstr "" + +#: thematic_areas/choices.py:375 +msgid "Língua Portuguesa" +msgstr "" + +#: thematic_areas/choices.py:376 +msgid "Línguas Clássicas" +msgstr "" + +#: thematic_areas/choices.py:377 +msgid "Línguas Estrangeiras Modernas" +msgstr "" + +#: thematic_areas/choices.py:378 +msgid "Línguas Indígenas" +msgstr "" + +#: thematic_areas/choices.py:379 +msgid "Linguística Aplicada" +msgstr "" + +#: thematic_areas/choices.py:380 +msgid "Linguística Histórica" +msgstr "" + +#: thematic_areas/choices.py:381 +msgid "Literatura Brasileira" +msgstr "" + +#: thematic_areas/choices.py:382 +msgid "Literatura Comparada" +msgstr "" + +#: thematic_areas/choices.py:383 +msgid "Literaturas Clássicas" +msgstr "" + +#: thematic_areas/choices.py:384 +msgid "Literaturas Estrangeiras Modernas" +msgstr "" + +#: thematic_areas/choices.py:385 +msgid "Lógica" +msgstr "" + +#: thematic_areas/choices.py:386 +msgid "Manejo Florestal" +msgstr "" + +#: thematic_areas/choices.py:387 +msgid "Máquinas e Implementos Agrícolas" +msgstr "" + +#: thematic_areas/choices.py:388 +msgid "Máquinas Marítimas" +msgstr "" + +#: thematic_areas/choices.py:389 +msgid "Matemática Aplicada" +msgstr "" + +#: thematic_areas/choices.py:390 +msgid "Matemática da Computação" +msgstr "" + +#: thematic_areas/choices.py:393 +msgid "Materiais e Processos para Engenharia Aeronáutica e Aeroespacial" +msgstr "" + +#: thematic_areas/choices.py:395 +msgid "Materiais Elétricos" +msgstr "" + +#: thematic_areas/choices.py:396 +msgid "Materiais não-Metálicos" +msgstr "" + +#: thematic_areas/choices.py:397 +msgid "Materiais Odontológicos" +msgstr "" + +#: thematic_areas/choices.py:398 +msgid "Mecânica dos Sólidos" +msgstr "" + +#: thematic_areas/choices.py:399 +msgid "Medicina Legal e Deontologia" +msgstr "" + +#: thematic_areas/choices.py:400 +msgid "Medicina Preventiva" +msgstr "" + +#: thematic_areas/choices.py:401 +msgid "Medicina Veterinária Preventiva" +msgstr "" + +#: thematic_areas/choices.py:404 +msgid "Medidas Elétricas, Magnéticas e Eletrônicas; Instrumentação" +msgstr "" + +#: thematic_areas/choices.py:406 +msgid "Metabolismo e Bioenergética" +msgstr "" + +#: thematic_areas/choices.py:407 +msgid "Metafísica" +msgstr "" + +#: thematic_areas/choices.py:408 +msgid "Metalurgia de Transformação" +msgstr "" + +#: thematic_areas/choices.py:409 +msgid "Metalurgia Extrativa" +msgstr "" + +#: thematic_areas/choices.py:410 +msgid "Metalurgia Física" +msgstr "" + +#: thematic_areas/choices.py:411 +msgid "Meteorologia" +msgstr "" + +#: thematic_areas/choices.py:412 +msgid "Metodologia e Técnicas da Computação" +msgstr "" + +#: thematic_areas/choices.py:415 +msgid "Metodos e Técnicas do Planejamento Urbano e Regional" +msgstr "" + +#: thematic_areas/choices.py:417 +msgid "Métodos Quantitativos em Economia" +msgstr "" + +#: thematic_areas/choices.py:418 +msgid "Microbiologia Aplicada" +msgstr "" + +#: thematic_areas/choices.py:419 +msgid "Morfologia dos Grupos Recentes" +msgstr "" + +#: thematic_areas/choices.py:420 +msgid "Morfologia Vegetal" +msgstr "" + +#: thematic_areas/choices.py:421 +msgid "Música" +msgstr "" + +#: thematic_areas/choices.py:422 +msgid "Mutagênese" +msgstr "" + +#: thematic_areas/choices.py:423 +msgid "Neuropsicofarmacologia" +msgstr "" + +#: thematic_areas/choices.py:424 +msgid "Nupcialidade e Família" +msgstr "" + +#: thematic_areas/choices.py:425 +msgid "Nutrição e Alimentação Animal" +msgstr "" + +#: thematic_areas/choices.py:426 +msgid "Oceanografia Biológica" +msgstr "" + +#: thematic_areas/choices.py:427 +msgid "Oceanografia Física" +msgstr "" + +#: thematic_areas/choices.py:428 +msgid "Oceanografia Geológica" +msgstr "" + +#: thematic_areas/choices.py:429 +msgid "Oceanografia Química" +msgstr "" + +#: thematic_areas/choices.py:430 +msgid "Odontologia Social e Preventiva" +msgstr "" + +#: thematic_areas/choices.py:431 +msgid "Odontopediatria" +msgstr "" + +#: thematic_areas/choices.py:432 +msgid "Ópera" +msgstr "" + +#: thematic_areas/choices.py:433 +msgid "Operações de Transportes" +msgstr "" + +#: thematic_areas/choices.py:436 +msgid "Operações Industriais e Equipamentos para Engenharia Química" +msgstr "" + +#: thematic_areas/choices.py:438 +msgid "Orientação e Aconselhamento" +msgstr "" + +#: thematic_areas/choices.py:439 +msgid "Ortodontia" +msgstr "" + +#: thematic_areas/choices.py:440 +msgid "Outras Literaturas Vernáculas" +msgstr "" + +#: thematic_areas/choices.py:441 +msgid "Outras Sociologias Específicas" +msgstr "" + +#: thematic_areas/choices.py:442 +msgid "Paisagismo" +msgstr "" + +#: thematic_areas/choices.py:443 +msgid "Paleobotânica" +msgstr "" + +#: thematic_areas/choices.py:444 +msgid "Paleozoologia" +msgstr "" + +#: thematic_areas/choices.py:445 +msgid "Pastagem e Forragicultura" +msgstr "" + +#: thematic_areas/choices.py:446 +msgid "Patologia Animal" +msgstr "" + +#: thematic_areas/choices.py:447 +msgid "Periodontia" +msgstr "" + +#: thematic_areas/choices.py:448 +msgid "Pesquisa Mineral" +msgstr "" + +#: thematic_areas/choices.py:449 +msgid "Pesquisa Operacional" +msgstr "" + +#: thematic_areas/choices.py:450 +msgid "Planejamento de Transportes" +msgstr "" + +#: thematic_areas/choices.py:451 +msgid "Planejamento e Avaliação Educacional" +msgstr "" + +#: thematic_areas/choices.py:452 +msgid "Política Internacional" +msgstr "" + +#: thematic_areas/choices.py:453 +msgid "Política Pública e População" +msgstr "" + +#: thematic_areas/choices.py:454 +msgid "Políticas Públicas" +msgstr "" + +#: thematic_areas/choices.py:455 +msgid "Probabilidade" +msgstr "" + +#: thematic_areas/choices.py:458 +msgid "Probabilidade e Estatística Aplicadas" +msgstr "" + +#: thematic_areas/choices.py:460 +msgid "Processos de Fabricação" +msgstr "" + +#: thematic_areas/choices.py:463 +msgid "Processos Industriais de Engenharia Química" +msgstr "" + +#: thematic_areas/choices.py:465 +msgid "Produção Animal" +msgstr "" + +#: thematic_areas/choices.py:466 +msgid "Programação Visual" +msgstr "" + +#: thematic_areas/choices.py:467 +msgid "Projetos de Arquitetura e Urbanismo" +msgstr "" + +#: thematic_areas/choices.py:468 +msgid "Projetos de Máquinas" +msgstr "" + +#: thematic_areas/choices.py:471 +msgid "Projetos de Navios e de Sistemas Oceânicos" +msgstr "" + +#: thematic_areas/choices.py:473 +msgid "Propulsão Aeroespacial" +msgstr "" + +#: thematic_areas/choices.py:474 +msgid "Protozoologia de Parasitos" +msgstr "" + +#: thematic_areas/choices.py:475 +msgid "Psicolinguística" +msgstr "" + +#: thematic_areas/choices.py:476 +msgid "Psicologia Cognitiva" +msgstr "" + +#: thematic_areas/choices.py:477 +msgid "Psicologia Comparativa" +msgstr "" + +#: thematic_areas/choices.py:478 +msgid "Psicologia do Desenvolvimento Humano" +msgstr "" + +#: thematic_areas/choices.py:481 +msgid "Psicologia do Ensino e da Aprendizagem" +msgstr "" + +#: thematic_areas/choices.py:485 +msgid "Psicologia do Trabalho e Organizacional" +msgstr "" + +#: thematic_areas/choices.py:487 +msgid "Psicologia Experimental" +msgstr "" + +#: thematic_areas/choices.py:488 +msgid "Psicologia Fisiológica" +msgstr "" + +#: thematic_areas/choices.py:489 +msgid "Psicologia Social" +msgstr "" + +#: thematic_areas/choices.py:490 +msgid "Psiquiatria" +msgstr "" + +#: thematic_areas/choices.py:491 +msgid "Química Analítica" +msgstr "" + +#: thematic_areas/choices.py:492 +msgid "Química de Macromoléculas" +msgstr "" + +#: thematic_areas/choices.py:493 +msgid "Química Inorgânica" +msgstr "" + +#: thematic_areas/choices.py:494 +msgid "Química Orgânica" +msgstr "" + +#: thematic_areas/choices.py:495 +msgid "Rádio e Televisão" +msgstr "" + +#: thematic_areas/choices.py:496 +msgid "Radiologia e Fotobiologia" +msgstr "" + +#: thematic_areas/choices.py:497 +msgid "Radiologia Médica" +msgstr "" + +#: thematic_areas/choices.py:498 +msgid "Radiologia Odontológica" +msgstr "" + +#: thematic_areas/choices.py:499 +msgid "Recursos Hídricos" +msgstr "" + +#: thematic_areas/choices.py:502 +msgid "Recursos Pesqueiros de Águas Interiores" +msgstr "" + +#: thematic_areas/choices.py:504 +msgid "Recursos Pesqueiros Marinhos" +msgstr "" + +#: thematic_areas/choices.py:505 +msgid "Relações Públicas e Propaganda" +msgstr "" + +#: thematic_areas/choices.py:506 +msgid "Reprodução Animal" +msgstr "" + +#: thematic_areas/choices.py:507 +msgid "Saneamento Ambiental" +msgstr "" + +#: thematic_areas/choices.py:508 +msgid "Saneamento Básico" +msgstr "" + +#: thematic_areas/choices.py:509 +msgid "Saúde Materno-Infantil" +msgstr "" + +#: thematic_areas/choices.py:511 +msgid "Serviço Social Aplicado" +msgstr "" + +#: thematic_areas/choices.py:512 +msgid "Serviços Urbanos e Regionais" +msgstr "" + +#: thematic_areas/choices.py:513 +msgid "Silvicultura" +msgstr "" + +#: thematic_areas/choices.py:514 +msgid "Sistemas Aeroespaciais" +msgstr "" + +#: thematic_areas/choices.py:515 +msgid "Sistemas de Computação" +msgstr "" + +#: thematic_areas/choices.py:516 +msgid "Sistemas Elétricos de Potência" +msgstr "" + +#: thematic_areas/choices.py:517 +msgid "Sociolinguística e Dialetologia" +msgstr "" + +#: thematic_areas/choices.py:518 +msgid "Sociologia da Saúde" +msgstr "" + +#: thematic_areas/choices.py:519 +msgid "Sociologia do Conhecimento" +msgstr "" + +#: thematic_areas/choices.py:520 +msgid "Sociologia do Desenvolvimento" +msgstr "" + +#: thematic_areas/choices.py:521 +msgid "Sociologia Rural" +msgstr "" + +#: thematic_areas/choices.py:522 +msgid "Sociologia Urbana" +msgstr "" + +#: thematic_areas/choices.py:523 +msgid "Taxonomia dos Grupos Recentes" +msgstr "" + +#: thematic_areas/choices.py:524 +msgid "Taxonomia Vegetal" +msgstr "" + +#: thematic_areas/choices.py:525 +msgid "Teatro" +msgstr "" + +#: thematic_areas/choices.py:526 +msgid "Técnicas e Operações Florestais" +msgstr "" + +#: thematic_areas/choices.py:527 +msgid "Tecnologia de Alimentos" +msgstr "" + +#: thematic_areas/choices.py:530 +msgid "Tecnologia de Arquitetura e Urbanismo" +msgstr "" + +#: thematic_areas/choices.py:534 +msgid "Tecnologia de Construção Naval e de Sistemas Oceânicos" +msgstr "" + +#: thematic_areas/choices.py:536 +msgid "Tecnologia de Reatores" +msgstr "" + +#: thematic_areas/choices.py:539 +msgid "Tecnologia e Utilização de Produtos Florestais" +msgstr "" + +#: thematic_areas/choices.py:541 +msgid "Tecnologia Química" +msgstr "" + +#: thematic_areas/choices.py:542 +msgid "Telecomunicações" +msgstr "" + +#: thematic_areas/choices.py:543 +msgid "Teologia Moral" +msgstr "" + +#: thematic_areas/choices.py:544 +msgid "Teologia Pastoral" +msgstr "" + +#: thematic_areas/choices.py:545 +msgid "Teologia Sistemática" +msgstr "" + +#: thematic_areas/choices.py:546 +msgid "Teoria Antropológica" +msgstr "" + +#: thematic_areas/choices.py:547 +msgid "Teoria da Computação" +msgstr "" + +#: thematic_areas/choices.py:548 +msgid "Teoria da Comunicação" +msgstr "" + +#: thematic_areas/choices.py:549 +msgid "Teoria da Informação" +msgstr "" + +#: thematic_areas/choices.py:550 +msgid "Teoria do Direito" +msgstr "" + +#: thematic_areas/choices.py:551 +msgid "Teoria e Análise Linguística" +msgstr "" + +#: thematic_areas/choices.py:552 +msgid "Teoria e Filosofia da História" +msgstr "" + +#: thematic_areas/choices.py:553 +msgid "Teoria e Método em Arqueologia" +msgstr "" + +#: thematic_areas/choices.py:554 +msgid "Teoria Econômica" +msgstr "" + +#: thematic_areas/choices.py:555 +msgid "Teoria Literária" +msgstr "" + +#: thematic_areas/choices.py:556 +msgid "Teoria Política" +msgstr "" + +#: thematic_areas/choices.py:557 +msgid "Tópicos Específicos de Educação" +msgstr "" + +#: thematic_areas/choices.py:558 +msgid "Toxicologia" +msgstr "" + +#: thematic_areas/choices.py:561 +msgid "Tratamento de Águas de Abastecimento e Residuárias" +msgstr "" + +#: thematic_areas/choices.py:563 +msgid "Tratamento de Minérios" +msgstr "" + +#: thematic_areas/choices.py:564 +msgid "Tratamento e Prevenção Psicológica" +msgstr "" + +#: thematic_areas/choices.py:565 +msgid "Veículos e Equipamentos de Controle" +msgstr "" + +#: thematic_areas/choices.py:566 +msgid "Zoologia Aplicada" +msgstr "" + +#: thematic_areas/choices.py:574 +msgid "Bengali" +msgstr "" + +#: thematic_areas/choices.py:577 +msgid "Dinamarquês" +msgstr "" + +#: thematic_areas/choices.py:583 +msgid "Grego" +msgstr "" + +#: thematic_areas/choices.py:586 +msgid "Indiano" +msgstr "" + +#: thematic_areas/choices.py:587 +msgid "Indonésio" +msgstr "" + +#: thematic_areas/choices.py:591 +msgid "Norueguês" +msgstr "" + +#: thematic_areas/choices.py:598 +msgid "Tailandês" +msgstr "" + +#: thematic_areas/choices.py:599 +msgid "Tcheco" +msgstr "" + +#: thematic_areas/choices.py:606 thematic_areas/models.py:130 +msgid "Level 0" +msgstr "" + +#: thematic_areas/choices.py:607 thematic_areas/models.py:139 +msgid "Level 1" +msgstr "" + +#: thematic_areas/choices.py:608 thematic_areas/models.py:148 +msgid "Level 2" +msgstr "" + +#: thematic_areas/choices.py:609 +msgid "Level 3" +msgstr "" + +#: thematic_areas/models.py:15 thematic_areas/models.py:157 +#: thematic_areas/wagtail_hooks.py:142 +msgid "Thematic Area" +msgstr "" + +#: thematic_areas/models.py:23 +msgid "Origin Data Base" +msgstr "" + +#: thematic_areas/models.py:25 +msgid "Level" +msgstr "" + +#: thematic_areas/models.py:36 thematic_areas/wagtail_hooks.py:42 +msgid "Generic Thematic Area" +msgstr "" + +#: thematic_areas/models.py:37 thematic_areas/wagtail_hooks.py:99 +msgid "Generic Thematic Areas" +msgstr "" + +#: thematic_areas/models.py:90 thematic_areas/models.py:217 +msgid "Attachment" +msgstr "" + +#: thematic_areas/models.py:110 thematic_areas/wagtail_hooks.py:81 +msgid "Generic Thematic Areas Upload" +msgstr "" + +#: thematic_areas/models.py:134 thematic_areas/models.py:143 +#: thematic_areas/models.py:152 +msgid "" +"Here the thematic colleges of CAPES must be registered, more about these " +"areas access: https://www.gov.br/capes/pt-br/acesso-a-informacao/acoes-e-" +"programas/avaliacao/sobre-a-avaliacao/areas-avaliacao/sobre-as-areas-de-" +"avaliacao/sobre-as-areas-de-avaliacao" +msgstr "" + +#: thematic_areas/models.py:229 thematic_areas/wagtail_hooks.py:178 +msgid "Thematic Areas Upload" +msgstr "" + +#: thematic_areas/templates/modeladmin/generic_thematic_areas/generic_thematic_areas_file/index.html:6 +#: thematic_areas/templates/modeladmin/thematic_areas/thematic_areas_file/index.html:6 +msgid "Download CSV Example" +msgstr "" + +#: tracker/choices.py:9 +msgid "error" +msgstr "" + +#: tracker/choices.py:10 +msgid "warning" +msgstr "" + +#: tracker/choices.py:11 +msgid "info" +msgstr "" + +#: tracker/choices.py:12 +msgid "exception" +msgstr "" + +#: tracker/choices.py:24 +msgid "To reprocess" +msgstr "" + +#: tracker/choices.py:25 +msgid "To do" +msgstr "" + +#: tracker/choices.py:26 +msgid "Done" +msgstr "" + +#: tracker/choices.py:27 +msgid "Doing" +msgstr "" + +#: tracker/choices.py:28 +msgid "Pending" +msgstr "" + +#: tracker/choices.py:29 +msgid "ignored" +msgstr "" + +#: tracker/models.py:52 +msgid "Exception Type" +msgstr "" + +#: tracker/models.py:53 +msgid "Exception Msg" +msgstr "" + +#: tracker/models.py:102 +msgid "Message" +msgstr "" + +#: tracker/models.py:104 +msgid "Message type" +msgstr "" + +#: tracker/wagtail_hooks.py:18 +msgid "Unexpected Events" +msgstr "" + +#: tracker/wagtail_hooks.py:46 +msgid "Unexpected errors" +msgstr "" + +#: vocabulary/models.py:11 +msgid "Vocabulary name" +msgstr "" + +#: vocabulary/models.py:13 +msgid "Vocabulary acronym" +msgstr "" + +#: vocabulary/models.py:105 vocabulary/wagtail_hooks.py:22 +#: vocabulary/wagtail_hooks.py:68 +msgid "Vocabulary" +msgstr "" + +#: vocabulary/wagtail_hooks.py:48 +msgid "Keyword" +msgstr "" + +#: xmlsps/models.py:96 +msgid "Unable to get xml with pre (XMLVersion) {}: {} {}" +msgstr "" + +#: xmlsps/wagtail_hooks.py:19 +msgid "XMLVersion" +msgstr "" diff --git a/locale/pt_BR/LC_MESSAGES/django.po b/locale/pt_BR/LC_MESSAGES/django.po new file mode 100644 index 0000000..5776bf1 --- /dev/null +++ b/locale/pt_BR/LC_MESSAGES/django.po @@ -0,0 +1,5292 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# FIRST AUTHOR , YEAR. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2024-01-09 19:06+0000\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"Language: \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" + +#: altmetric/choices.py:4 article/wagtail_hooks.py:26 +msgid "Article" +msgstr "" + +#: altmetric/choices.py:5 article/models.py:36 issue/models.py:32 +#: journal/models.py:779 journal/models.py:1601 +msgid "Journal" +msgstr "" + +#: altmetric/models.py:10 journal/models.py:1608 +msgid "ISSN SciELO" +msgstr "" + +#: altmetric/models.py:13 +msgid "Extraction Date" +msgstr "" + +#: altmetric/models.py:16 +msgid "Resource Type" +msgstr "" + +#: altmetric/models.py:22 journal/models.py:2247 report/models.py:46 +msgid "JSON File" +msgstr "" + +#: altmetric/wagtail_hooks.py:13 +msgid "Altmetric" +msgstr "" + +#: article/models.py:32 +msgid "PID V2" +msgstr "" + +#: article/models.py:33 +msgid "PID V3" +msgstr "" + +#: article/models.py:43 +msgid "pub date day" +msgstr "" + +#: article/models.py:50 +msgid "pub date month" +msgstr "" + +#: article/models.py:60 +msgid "Fundings" +msgstr "" + +#: article/models.py:79 book/models.py:71 journal/models.py:591 +msgid "Publisher" +msgstr "" + +#: article/models.py:103 +msgid "Abstract" +msgstr "" + +#: article/models.py:117 book/models.py:139 +msgid "Identification" +msgstr "" + +#: article/models.py:118 +msgid "Data with language" +msgstr "" + +#: article/models.py:119 researcher/wagtail_hooks.py:101 +msgid "Researchers" +msgstr "" + +#: article/models.py:120 +msgid "Publisher and Sponsors" +msgstr "" + +#: article/models.py:220 +msgid "Award ID" +msgstr "" + +#: article/models.py:318 core/models.py:188 +msgid "Text" +msgstr "" + +#: article/models.py:399 article/models.py:475 collection/models.py:57 +#: core/models.py:29 +msgid "Code" +msgstr "" + +#: article/models.py:513 +msgid "Count" +msgstr "" + +#: article/models.py:517 book/models.py:57 book/models.py:225 +#: core/models.py:144 core/models.py:192 core/models.py:209 core/models.py:253 +#: core/models.py:525 doi/models.py:18 thematic_areas/models.py:19 +msgid "Language" +msgstr "" + +#: article/models.py:570 article/wagtail_hooks.py:45 +msgid "SubArticle" +msgstr "" + +#: article/models.py:571 +msgid "SubArticles" +msgstr "" + +#: article/tasks.py:36 +msgid "load_article" +msgstr "" + +#: article/tasks.py:65 +msgid "load_articles" +msgstr "" + +#: article/tasks.py:101 +msgid "load_preprints" +msgstr "" + +#: article/wagtail_hooks.py:69 +msgid "Article Funding" +msgstr "" + +#: article/wagtail_hooks.py:86 +msgid "Articles" +msgstr "" + +#: book/models.py:45 book/models.py:219 journal/models.py:2294 +#: report/models.py:34 +msgid "Title" +msgstr "" + +#: book/models.py:46 +msgid "Synopsis" +msgstr "" + +#: book/models.py:48 +msgid "Electronic ISBN" +msgstr "" + +#: book/models.py:50 core/models.py:270 +msgid "Year" +msgstr "" + +#: book/models.py:53 +msgid "Authors" +msgstr "" + +#: book/models.py:64 +msgid "Localization" +msgstr "" + +#: book/models.py:78 +msgid "SciELO Book" +msgstr "" + +#: book/models.py:79 +msgid "SciELO Books" +msgstr "" + +#: book/models.py:134 book/models.py:238 +msgid "Chapter" +msgstr "" + +#: book/models.py:140 book/models.py:239 +msgid "Chapters" +msgstr "" + +#: book/models.py:221 +msgid "Data de publicação" +msgstr "" + +#: book/wagtail_hooks.py:22 book/wagtail_hooks.py:45 collection/choices.py:14 +msgid "Books" +msgstr "" + +#: collection/choices.py:4 +msgid "Certified" +msgstr "" + +#: collection/choices.py:5 +msgid "Development" +msgstr "" + +#: collection/choices.py:6 +msgid "Diffusion" +msgstr "" + +#: collection/choices.py:7 +msgid "Independent" +msgstr "" + +#: collection/choices.py:11 journal/models.py:780 journal/wagtail_hooks.py:62 +#: journal/wagtail_hooks.py:124 +msgid "Journals" +msgstr "" + +#: collection/choices.py:12 +msgid "Preprints" +msgstr "" + +#: collection/choices.py:13 +msgid "Repositories" +msgstr "" + +#: collection/choices.py:15 +msgid "Data repository" +msgstr "" + +#: collection/models.py:52 +msgid "Acronym with 3 chars" +msgstr "" + +#: collection/models.py:55 +msgid "Acronym with 2 chars" +msgstr "" + +#: collection/models.py:58 +msgid "Domain" +msgstr "" + +#: collection/models.py:62 +msgid "Main name" +msgstr "" + +#: collection/models.py:64 doi/models.py:80 journal/models.py:1611 +msgid "Status" +msgstr "" + +#: collection/models.py:66 +msgid "Has analytics" +msgstr "" + +#: collection/models.py:69 +msgid "Collection Type" +msgstr "" + +#: collection/models.py:71 +msgid "Is active" +msgstr "" + +#: collection/models.py:72 +msgid "Foundation data" +msgstr "" + +#: collection/models.py:94 collection/wagtail_hooks.py:19 +#: journal/models.py:1593 journal/models.py:2234 +msgid "Collection" +msgstr "" + +#: collection/models.py:95 +msgid "Collections" +msgstr "" + +#: core/choices.py:192 +msgid "Editor-Chefe" +msgstr "" + +#: core/choices.py:193 +msgid "Editor(es) Executivo" +msgstr "" + +#: core/choices.py:194 +msgid "Editor(es) Associados ou de Seção" +msgstr "" + +#: core/choices.py:195 +msgid "Equipe Técnica" +msgstr "" + +#: core/choices.py:199 +msgid "January" +msgstr "" + +#: core/choices.py:200 +msgid "February" +msgstr "" + +#: core/choices.py:201 +msgid "March" +msgstr "" + +#: core/choices.py:202 +msgid "April" +msgstr "" + +#: core/choices.py:203 +msgid "May" +msgstr "" + +#: core/choices.py:204 +msgid "June" +msgstr "" + +#: core/choices.py:205 +msgid "July" +msgstr "" + +#: core/choices.py:206 +msgid "August" +msgstr "" + +#: core/choices.py:207 +msgid "September" +msgstr "" + +#: core/choices.py:208 +msgid "October" +msgstr "" + +#: core/choices.py:209 +msgid "November" +msgstr "" + +#: core/choices.py:210 +msgid "December" +msgstr "" + +#: core/choices.py:216 +msgid "by" +msgstr "" + +#: core/choices.py:217 +msgid "by-sa" +msgstr "" + +#: core/choices.py:218 +msgid "by-nc" +msgstr "" + +#: core/choices.py:219 +msgid "by-nc-sa" +msgstr "" + +#: core/choices.py:220 +msgid "by-nd" +msgstr "" + +#: core/choices.py:221 +msgid "by-nc-nd" +msgstr "" + +#: core/models.py:31 +msgid "Sex" +msgstr "" + +#: core/models.py:96 tracker/models.py:51 +msgid "Creation date" +msgstr "" + +#: core/models.py:99 +msgid "Last update date" +msgstr "" + +#: core/models.py:104 +msgid "Creator" +msgstr "" + +#: core/models.py:114 +msgid "Updater" +msgstr "" + +#: core/models.py:135 +msgid "Language Name" +msgstr "" + +#: core/models.py:136 +msgid "Language code 2" +msgstr "" + +#: core/models.py:145 +msgid "Languages" +msgstr "" + +#: core/models.py:204 core/models.py:249 journal/models.py:1445 +msgid "Rich Text" +msgstr "" + +#: core/models.py:205 +msgid "Plain Text" +msgstr "" + +#: core/models.py:271 +msgid "Month" +msgstr "" + +#: core/models.py:272 +msgid "Day" +msgstr "" + +#: core/models.py:303 core/models.py:384 issue/models.py:91 +msgid "License" +msgstr "" + +#: core/models.py:304 core/models.py:385 +msgid "Licenses" +msgstr "" + +#: core/models.py:517 journal/models.py:883 report/models.py:42 +#: src/packtools/packtools/webapp/forms.py:11 +msgid "File" +msgstr "" + +#: core/templates/account/account_inactive.html:5 +#: core/templates/account/account_inactive.html:8 +msgid "Account Inactive" +msgstr "" + +#: core/templates/account/account_inactive.html:10 +msgid "This account is inactive." +msgstr "" + +#: core/templates/account/email.html:7 +msgid "Account" +msgstr "" + +#: core/templates/account/email.html:10 +msgid "E-mail Addresses" +msgstr "" + +#: core/templates/account/email.html:13 +msgid "The following e-mail addresses are associated with your account:" +msgstr "" + +#: core/templates/account/email.html:27 +msgid "Verified" +msgstr "" + +#: core/templates/account/email.html:29 +msgid "Unverified" +msgstr "" + +#: core/templates/account/email.html:31 +msgid "Primary" +msgstr "" + +#: core/templates/account/email.html:37 +msgid "Make Primary" +msgstr "" + +#: core/templates/account/email.html:38 +msgid "Re-send Verification" +msgstr "" + +#: core/templates/account/email.html:39 +msgid "Remove" +msgstr "" + +#: core/templates/account/email.html:46 +msgid "Warning:" +msgstr "" + +#: core/templates/account/email.html:46 +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 "" + +#: core/templates/account/email.html:51 +msgid "Add E-mail Address" +msgstr "" + +#: core/templates/account/email.html:56 +msgid "Add E-mail" +msgstr "" + +#: core/templates/account/email.html:66 +msgid "Do you really want to remove the selected e-mail address?" +msgstr "" + +#: core/templates/account/email_confirm.html:6 +#: core/templates/account/email_confirm.html:10 +msgid "Confirm E-mail Address" +msgstr "" + +#: core/templates/account/email_confirm.html:16 +#, python-format +msgid "" +"Please confirm that %(email)s is an e-mail " +"address for user %(user_display)s." +msgstr "" + +#: core/templates/account/email_confirm.html:20 +msgid "Confirm" +msgstr "" + +#: core/templates/account/email_confirm.html:27 +#, python-format +msgid "" +"This e-mail confirmation link expired or is invalid. Please issue a new e-mail confirmation request." +msgstr "" + +#: core/templates/account/login.html:7 core/templates/account/login.html:11 +#: core/templates/account/login.html:56 +msgid "Sign In" +msgstr "" + +#: core/templates/account/login.html:17 +msgid "Please sign in with one of your existing third party accounts:" +msgstr "" + +#: core/templates/account/login.html:19 +#, python-format +msgid "" +"Or, sign up for a %(site_name)s account and " +"sign in below:" +msgstr "" + +#: core/templates/account/login.html:32 +msgid "or" +msgstr "" + +#: core/templates/account/login.html:41 +#, python-format +msgid "" +"If you have not created an account yet, then please sign up first." +msgstr "" + +#: core/templates/account/login.html:55 +msgid "Forgot Password?" +msgstr "" + +#: core/templates/account/logout.html:5 core/templates/account/logout.html:8 +#: core/templates/account/logout.html:17 +msgid "Sign Out" +msgstr "" + +#: core/templates/account/logout.html:10 +msgid "Are you sure you want to sign out?" +msgstr "" + +#: core/templates/account/password_change.html:6 +#: core/templates/account/password_change.html:9 +#: core/templates/account/password_change.html:14 +#: core/templates/account/password_reset_from_key.html:5 +#: core/templates/account/password_reset_from_key.html:8 +#: core/templates/account/password_reset_from_key_done.html:4 +#: core/templates/account/password_reset_from_key_done.html:7 +msgid "Change Password" +msgstr "" + +#: core/templates/account/password_reset.html:7 +#: core/templates/account/password_reset.html:11 +#: core/templates/account/password_reset_done.html:6 +#: core/templates/account/password_reset_done.html:9 +msgid "Password Reset" +msgstr "" + +#: core/templates/account/password_reset.html:16 +msgid "" +"Forgotten your password? Enter your e-mail address below, and we'll send you " +"an e-mail allowing you to reset it." +msgstr "" + +#: core/templates/account/password_reset.html:21 +msgid "Reset My Password" +msgstr "" + +#: core/templates/account/password_reset.html:24 +msgid "Please contact us if you have any trouble resetting your password." +msgstr "" + +#: core/templates/account/password_reset_done.html:15 +msgid "" +"We have sent you an e-mail. Please contact us if you do not receive it " +"within a few minutes." +msgstr "" + +#: core/templates/account/password_reset_from_key.html:8 +msgid "Bad Token" +msgstr "" + +#: core/templates/account/password_reset_from_key.html:12 +#, python-format +msgid "" +"The password reset link was invalid, possibly because it has already been " +"used. Please request a new password reset." +msgstr "" + +#: core/templates/account/password_reset_from_key.html:18 +msgid "change password" +msgstr "" + +#: core/templates/account/password_reset_from_key.html:21 +#: core/templates/account/password_reset_from_key_done.html:8 +msgid "Your password is now changed." +msgstr "" + +#: core/templates/account/password_set.html:6 +#: core/templates/account/password_set.html:9 +#: core/templates/account/password_set.html:14 +msgid "Set Password" +msgstr "" + +#: core/templates/account/signup.html:6 +msgid "Signup" +msgstr "" + +#: core/templates/account/signup.html:9 core/templates/account/signup.html:19 +msgid "Sign Up" +msgstr "" + +#: core/templates/account/signup.html:11 +#, python-format +msgid "" +"Already have an account? Then please sign in." +msgstr "" + +#: core/templates/account/signup_closed.html:5 +#: core/templates/account/signup_closed.html:8 +msgid "Sign Up Closed" +msgstr "" + +#: core/templates/account/signup_closed.html:10 +msgid "We are sorry, but the sign up is currently closed." +msgstr "" + +#: core/templates/account/verification_sent.html:5 +#: core/templates/account/verification_sent.html:8 +#: core/templates/account/verified_email_required.html:5 +#: core/templates/account/verified_email_required.html:8 +msgid "Verify Your E-mail Address" +msgstr "" + +#: core/templates/account/verification_sent.html:10 +msgid "" +"We have sent an e-mail to you for verification. Follow the link provided to " +"finalize the signup process. Please contact us if you do not receive it " +"within a few minutes." +msgstr "" + +#: core/templates/account/verified_email_required.html:12 +msgid "" +"This part of the site requires us to verify that\n" +"you are who you claim to be. For this purpose, we require that you\n" +"verify ownership of your e-mail address. " +msgstr "" + +#: core/templates/account/verified_email_required.html:16 +msgid "" +"We have sent an e-mail to you for\n" +"verification. Please click on the link inside this e-mail. Please\n" +"contact us if you do not receive it within a few minutes." +msgstr "" + +#: core/templates/account/verified_email_required.html:20 +#, python-format +msgid "" +"Note: you can still change your e-" +"mail address." +msgstr "" + +#: core/templates/home/welcome_page.html:53 +#: core/templates/home/welcome_page.html:56 +msgid "View the release notes" +msgstr "" + +#: core/templates/home/welcome_page.html:68 +msgid "Welcome to your SciELO Content Manager" +msgstr "" + +#: core/templates/home/welcome_page.html:69 +msgid "" +"Please feel free to join our community on Slack, or get started with one of the links " +"below." +msgstr "" + +#: core/templates/home/welcome_page.html:77 +msgid "Wagtail Documentation" +msgstr "" + +#: core/templates/home/welcome_page.html:78 +msgid "Topics, references, & how-tos" +msgstr "" + +#: core/templates/home/welcome_page.html:85 +msgid "Tutorial" +msgstr "" + +#: core/templates/home/welcome_page.html:86 +msgid "Build your first Wagtail site" +msgstr "" + +#: core/templates/home/welcome_page.html:93 +msgid "Admin Interface" +msgstr "" + +#: core/templates/home/welcome_page.html:94 +msgid "Create your superuser first!" +msgstr "" + +#: core/templates/wagtailadmin/home.html:7 +msgid "Welcome to the administrative area of " +msgstr "" + +#: core/templates/wagtailadmin/login.html:7 +msgid "Administrative area of " +msgstr "" + +#: core/templates/wagtailadmin/summary_items/article_summary_item.html:6 +#, python-format +msgid "" +"%(total_article)s Article created in %(site_name)s" +msgid_plural "" +"%(total_article)s Articles created in %(site_name)s" +msgstr[0] "" +msgstr[1] "" + +#: core/templates/wagtailadmin/summary_items/collection_summary_item.html:6 +#, python-format +msgid "" +"%(total_collection)s Collection created in %(site_name)s" +msgid_plural "" +"%(total_collection)s Collections created in %(site_name)s" +msgstr[0] "" +msgstr[1] "" + +#: core/templates/wagtailadmin/summary_items/journal_summary_item.html:6 +#, python-format +msgid "" +"%(total_journal)s Journal created in %(site_name)s" +msgid_plural "" +"%(total_journal)s Journals created in %(site_name)s" +msgstr[0] "" +msgstr[1] "" + +#: core/users/admin.py:17 +msgid "Personal info" +msgstr "" + +#: core/users/admin.py:19 +msgid "Permissions" +msgstr "" + +#: core/users/admin.py:30 +msgid "Important dates" +msgstr "" + +#: core/users/apps.py:7 +msgid "Users" +msgstr "" + +#: core/users/forms.py:25 core/users/tests/test_forms.py:39 +msgid "This username has already been taken." +msgstr "" + +#: core/users/models.py:15 +msgid "Name of User" +msgstr "" + +#: core/users/views.py:23 +msgid "Information successfully updated" +msgstr "" + +#: core/utils/scheduler.py:61 +msgid "Scheduled task: {}" +msgstr "" + +#: core_settings/models.py:18 core_settings/models.py:19 +msgid "Configuração do site" +msgstr "" + +#: core_settings/models.py:66 +msgid "Site settings" +msgstr "" + +#: core_settings/models.py:67 +msgid "Admin settings" +msgstr "" + +#: doi/choices.py:4 +msgid "DATA_CREATED" +msgstr "" + +#: doi/choices.py:5 +msgid "SUBMITTED" +msgstr "" + +#: doi/choices.py:6 +msgid "QUEUED" +msgstr "" + +#: doi/choices.py:7 +msgid "DEPOSITED" +msgstr "" + +#: doi/models.py:14 +msgid "Value" +msgstr "" + +#: doi/models.py:77 +msgid "Submission Date" +msgstr "" + +#: editorialboard/button_helper.py:19 institution/button_helpers.py:17 +#: journal/button_helper.py:19 location/button_helpers.py:17 +#: thematic_areas/button_helpers.py:19 thematic_areas/button_helpers.py:69 +msgid "Validate" +msgstr "" + +#: editorialboard/button_helper.py:31 institution/button_helpers.py:26 +#: journal/button_helper.py:31 location/button_helpers.py:29 +#: thematic_areas/button_helpers.py:30 thematic_areas/button_helpers.py:79 +msgid "Import" +msgstr "" + +#: editorialboard/choices.py:4 researcher/choices.py:4 +msgid "Declarado por el investigador" +msgstr "" + +#: editorialboard/choices.py:5 researcher/choices.py:5 +msgid "Identificado automáticamente por programa de computador" +msgstr "" + +#: editorialboard/choices.py:6 researcher/choices.py:6 +msgid "Identificado por algun usuario" +msgstr "" + +#: editorialboard/choices.py:14 +msgid "Editor-in-chief" +msgstr "" + +#: editorialboard/choices.py:15 +msgid "Editor" +msgstr "" + +#: editorialboard/choices.py:16 +msgid "Associate editor" +msgstr "" + +#: editorialboard/choices.py:17 +msgid "Technical team" +msgstr "" + +#: editorialboard/models.py:56 +msgid "Member" +msgstr "" + +#: editorialboard/models.py:432 institution/models.py:630 +#: journal/models.py:2023 location/models.py:662 thematic_areas/models.py:97 +#: thematic_areas/models.py:223 +msgid "Is valid?" +msgstr "" + +#: editorialboard/models.py:434 institution/models.py:632 +#: journal/models.py:2025 location/models.py:664 thematic_areas/models.py:103 +#: thematic_areas/models.py:225 +msgid "Number of lines" +msgstr "" + +#: editorialboard/models.py:445 +msgid "Role" +msgstr "" + +#: editorialboard/models.py:448 +msgid "Declared Role" +msgstr "" + +#: editorialboard/views.py:43 institution/views.py:36 journal/views.py:43 +#: location/views.py:36 thematic_areas/views.py:48 thematic_areas/views.py:148 +msgid "Validation error" +msgstr "" + +#: editorialboard/views.py:50 institution/views.py:43 journal/views.py:50 +#: location/views.py:43 thematic_areas/views.py:55 thematic_areas/views.py:155 +#, python-format +msgid "Validation error: %s" +msgstr "" + +#: editorialboard/views.py:52 institution/views.py:45 journal/views.py:52 +#: location/views.py:45 thematic_areas/views.py:57 thematic_areas/views.py:157 +msgid "File successfully validated!" +msgstr "" + +#: editorialboard/views.py:128 +#, python-format +msgid "Import error: %s, Line: %s" +msgstr "" + +#: editorialboard/views.py:130 institution/views.py:72 journal/views.py:86 +#: location/views.py:73 thematic_areas/views.py:98 thematic_areas/views.py:195 +msgid "File imported successfully!" +msgstr "" + +#: editorialboard/wagtail_hooks.py:31 +msgid "Editorial Board Member" +msgstr "" + +#: editorialboard/wagtail_hooks.py:77 +msgid "RoleModel" +msgstr "" + +#: editorialboard/wagtail_hooks.py:96 +msgid "EditorialBoard" +msgstr "" + +#: files_storage/controller.py:29 files_storage/controller.py:50 +msgid "Unable to get MinioStorage {} {} {}" +msgstr "" + +#: files_storage/controller.py:82 +msgid "Unable to push file {} {} {} {}" +msgstr "" + +#: files_storage/controller.py:114 +msgid "Unable to push xml content {} {} {} {}" +msgstr "" + +#: files_storage/models.py:14 institution/models.py:642 journal/models.py:274 +#: journal/models.py:1467 journal/models.py:1928 journal/models.py:2035 +msgid "Name" +msgstr "" + +#: files_storage/models.py:15 +msgid "Host" +msgstr "" + +#: files_storage/models.py:16 +msgid "Bucket root" +msgstr "" + +#: files_storage/models.py:17 +msgid "Bucket app subdir" +msgstr "" + +#: files_storage/models.py:18 +msgid "Access key" +msgstr "" + +#: files_storage/models.py:19 +msgid "Secret key" +msgstr "" + +#: files_storage/models.py:21 +msgid "Secure" +msgstr "" + +#: files_storage/models.py:77 +msgid "Basename" +msgstr "" + +#: files_storage/models.py:78 +msgid "URI" +msgstr "" + +#: files_storage/wagtail_hooks.py:18 +msgid "Minio Configuration" +msgstr "" + +#: institution/choices.py:5 +msgid "agência de apoio à pesquisa" +msgstr "" + +#: institution/choices.py:8 +msgid "universidade e instâncias ligadas à universidades" +msgstr "" + +#: institution/choices.py:12 +msgid "empresa ou instituto ligadas ao governo" +msgstr "" + +#: institution/choices.py:14 +msgid "organização privada" +msgstr "" + +#: institution/choices.py:15 +msgid "organização sem fins de lucros" +msgstr "" + +#: institution/choices.py:18 +msgid "sociedade científica, associação pós-graduação, associação profissional" +msgstr "" + +#: institution/choices.py:20 +msgid "outros" +msgstr "" + +#: institution/choices.py:24 +msgid "yes" +msgstr "" + +#: institution/choices.py:25 +msgid "no" +msgstr "" + +#: institution/choices.py:26 +msgid "unknow" +msgstr "" + +#: institution/models.py:27 +msgid "Institution Type" +msgstr "" + +#: institution/models.py:33 +msgid "Organization Level 1" +msgstr "" + +#: institution/models.py:34 +msgid "Organization Level 2" +msgstr "" + +#: institution/models.py:35 +msgid "Organization Level 3" +msgstr "" + +#: institution/models.py:38 journal/models.py:605 +msgid "Logo" +msgstr "" + +#: institution/models.py:355 institution/models.py:381 +msgid "Initial Date" +msgstr "" + +#: institution/models.py:356 institution/models.py:382 +msgid "Final Date" +msgstr "" + +#: institution/models.py:359 institution/models.py:551 +#: institution/wagtail_hooks.py:66 +msgid "Institution" +msgstr "" + +#: institution/models.py:559 location/models.py:365 location/models.py:505 +#: location/wagtail_hooks.py:94 +msgid "Country" +msgstr "" + +#: institution/models.py:643 +msgid "Institution Acronym" +msgstr "" + +#: institution/models.py:645 +msgid "Is official" +msgstr "" + +#: institution/models.py:651 +msgid "Official name" +msgstr "" + +#: institution/views.py:70 journal/views.py:84 location/views.py:71 +#: thematic_areas/views.py:96 thematic_areas/views.py:193 +#, python-format +msgid "Import error: %(exception)s, Line: %(line)s" +msgstr "" + +#: institution/wagtail_hooks.py:26 +msgid "InstitutionIdentification" +msgstr "" + +#: institution/wagtail_hooks.py:106 journal/models.py:592 +msgid "Sponsor" +msgstr "" + +#: institution/wagtail_hooks.py:141 +msgid "Scimago" +msgstr "" + +#: institution/wagtail_hooks.py:178 journal/models.py:764 +msgid "Institutions" +msgstr "" + +#: issue/models.py:40 +msgid "Issue number" +msgstr "" + +#: issue/models.py:41 +msgid "Issue volume" +msgstr "" + +#: issue/models.py:43 +msgid "Issue season" +msgstr "" + +#: issue/models.py:49 +msgid "Issue year" +msgstr "" + +#: issue/models.py:50 +msgid "Issue month" +msgstr "" + +#: issue/models.py:51 +msgid "Supplement" +msgstr "" + +#: issue/models.py:70 +msgid "Issue title" +msgstr "" + +#: issue/models.py:87 issue/models.py:96 +msgid "Issue" +msgstr "" + +#: issue/models.py:88 journal/models.py:135 journal/models.py:762 +msgid "Titles" +msgstr "" + +#: issue/models.py:89 journal/models.py:513 +msgid "Subtitle" +msgstr "" + +#: issue/models.py:90 +msgid "Summary" +msgstr "" + +#: issue/models.py:97 issue/wagtail_hooks.py:22 issue/wagtail_hooks.py:54 +msgid "Issues" +msgstr "" + +#: issue/models.py:223 +msgid "Issue Title" +msgstr "" + +#: issue/models.py:262 +msgid "TocSection" +msgstr "" + +#: issue/models.py:263 +msgid "TocSections" +msgstr "" + +#: journal/choices.py:19 +msgid "Unknow" +msgstr "" + +#: journal/choices.py:20 +msgid "Current" +msgstr "" + +#: journal/choices.py:21 +msgid "Ceased" +msgstr "" + +#: journal/choices.py:22 +msgid "Reports only" +msgstr "" + +#: journal/choices.py:23 +msgid "Suspended" +msgstr "" + +#: journal/choices.py:27 +msgid "Continuous" +msgstr "" + +#: journal/choices.py:28 +msgid "Undefined" +msgstr "" + +#: journal/choices.py:32 +msgid "Unknown" +msgstr "" + +#: journal/choices.py:33 +msgid "Annual" +msgstr "" + +#: journal/choices.py:34 +msgid "Bimonthly (every two months)" +msgstr "" + +#: journal/choices.py:35 +msgid "Semiweekly (twice a week)" +msgstr "" + +#: journal/choices.py:36 +msgid "Daily" +msgstr "" + +#: journal/choices.py:37 +msgid "Biweekly (every two weeks)" +msgstr "" + +#: journal/choices.py:38 +msgid "Semiannual (twice a year)" +msgstr "" + +#: journal/choices.py:39 +msgid "Biennial (every two years)" +msgstr "" + +#: journal/choices.py:40 +msgid "Triennial (every three years)" +msgstr "" + +#: journal/choices.py:41 +msgid "Three times a week" +msgstr "" + +#: journal/choices.py:42 +msgid "Three times a month" +msgstr "" + +#: journal/choices.py:43 +msgid "Irregular (known to be so)" +msgstr "" + +#: journal/choices.py:44 +msgid "Monthly" +msgstr "" + +#: journal/choices.py:45 +msgid "Quarterly" +msgstr "" + +#: journal/choices.py:46 +msgid "Semimonthly (twice a month)" +msgstr "" + +#: journal/choices.py:47 +msgid "Three times a year" +msgstr "" + +#: journal/choices.py:48 +msgid "Weekly" +msgstr "" + +#: journal/choices.py:49 +msgid "Other frequencies" +msgstr "" + +#: journal/choices.py:53 +msgid "Basic Roman" +msgstr "" + +#: journal/choices.py:54 +msgid "Extensive Roman" +msgstr "" + +#: journal/choices.py:55 +msgid "Cirillic" +msgstr "" + +#: journal/choices.py:56 +msgid "Japanese" +msgstr "" + +#: journal/choices.py:57 +msgid "Chinese" +msgstr "" + +#: journal/choices.py:58 +msgid "Korean" +msgstr "" + +#: journal/choices.py:59 +msgid "Another alphabet" +msgstr "" + +#: journal/choices.py:63 +msgid "American Psychological Association" +msgstr "" + +#: journal/choices.py:64 +msgid "iso 690/87 - international standard organization" +msgstr "" + +#: journal/choices.py:65 +msgid "nbr 6023/89 - associação nacional de normas técnicas" +msgstr "" + +#: journal/choices.py:66 +msgid "other standard" +msgstr "" + +#: journal/choices.py:70 +msgid "" +"the vancouver group - uniform requirements for manuscripts submitted to " +"biomedical journals" +msgstr "" + +#: journal/choices.py:76 +msgid "Conference" +msgstr "" + +#: journal/choices.py:77 +msgid "Monograph" +msgstr "" + +#: journal/choices.py:78 +msgid "Conference papers as Monograph" +msgstr "" + +#: journal/choices.py:79 +msgid "Project papers as Monograph" +msgstr "" + +#: journal/choices.py:80 +msgid "Project and Conference papers as monograph" +msgstr "" + +#: journal/choices.py:81 +msgid "Monograph Series" +msgstr "" + +#: journal/choices.py:82 +msgid "Conference papers as Monograph Series" +msgstr "" + +#: journal/choices.py:83 +msgid "Project papers as Monograph Series" +msgstr "" + +#: journal/choices.py:84 +msgid "Document in a non conventional form" +msgstr "" + +#: journal/choices.py:85 +msgid "Conference papers in a non conventional form" +msgstr "" + +#: journal/choices.py:86 +msgid "Project papers in a non conventional form" +msgstr "" + +#: journal/choices.py:87 +msgid "Project" +msgstr "" + +#: journal/choices.py:88 +msgid "Serial" +msgstr "" + +#: journal/choices.py:89 +msgid "Conference papers as Periodical Series" +msgstr "" + +#: journal/choices.py:90 +msgid "Conference and Project papers as periodical series" +msgstr "" + +#: journal/choices.py:91 +msgid "Project papers as Periodical Series" +msgstr "" + +#: journal/choices.py:92 +msgid "Thesis and Dissertation" +msgstr "" + +#: journal/choices.py:93 +msgid "Thesis Series" +msgstr "" + +#: journal/choices.py:97 +msgid "Scientific/technical" +msgstr "" + +#: journal/choices.py:98 +msgid "Divulgation" +msgstr "" + +#: journal/choices.py:103 +msgid "Analytical of a monograph" +msgstr "" + +#: journal/choices.py:104 +msgid "Analytical of a monograph in a collection" +msgstr "" + +#: journal/choices.py:105 +msgid "Analytical of a monograph in a serial" +msgstr "" + +#: journal/choices.py:106 +msgid "Analytical of a serial" +msgstr "" + +#: journal/choices.py:107 +msgid "Collective level" +msgstr "" + +#: journal/choices.py:108 +msgid "Monographic level" +msgstr "" + +#: journal/choices.py:109 +msgid "Monographic in a collection" +msgstr "" + +#: journal/choices.py:110 +msgid "Monographic series level" +msgstr "" + +#: journal/choices.py:114 +msgid "DATABASE" +msgstr "" + +#: journal/choices.py:115 +msgid "DIRECTORY" +msgstr "" + +#: journal/choices.py:116 +msgid "OTHER" +msgstr "" + +#: journal/choices.py:120 +msgid "Agricultural Sciences" +msgstr "" + +#: journal/choices.py:121 +msgid "Applied Social Sciences" +msgstr "" + +#: journal/choices.py:122 +msgid "Biological Sciences" +msgstr "" + +#: journal/choices.py:123 +msgid "Engineering" +msgstr "" + +#: journal/choices.py:124 +msgid "Exact and Earth Sciences" +msgstr "" + +#: journal/choices.py:125 +msgid "Health Sciences" +msgstr "" + +#: journal/choices.py:126 +msgid "Human Sciences" +msgstr "" + +#: journal/choices.py:127 +msgid "Linguistic, Literature and Arts" +msgstr "" + +#: journal/choices.py:128 +msgid "Psicanalise" +msgstr "" + +#: journal/choices.py:132 +msgid "Science Citation Index Expanded" +msgstr "" + +#: journal/choices.py:133 +msgid "Social Sciences Citation Index" +msgstr "" + +#: journal/choices.py:134 +msgid "Arts Humanities Citation Index" +msgstr "" + +#: journal/choices.py:143 +msgid "Admitted to the collection" +msgstr "" + +#: journal/choices.py:144 +msgid "Indexing interrupted" +msgstr "" + +#: journal/choices.py:153 +msgid "Ceased journal" +msgstr "" + +#: journal/choices.py:154 +msgid "Not open access" +msgstr "" + +#: journal/choices.py:155 +msgid "by the committee" +msgstr "" + +#: journal/choices.py:156 +msgid "by the editor" +msgstr "" + +#: journal/models.py:66 +msgid "ISSN Title" +msgstr "" + +#: journal/models.py:67 +msgid "ISO Short Title" +msgstr "" + +#: journal/models.py:70 +msgid "New Title" +msgstr "" + +#: journal/models.py:79 +msgid "Initial Year" +msgstr "" + +#: journal/models.py:82 +msgid "Month Year" +msgstr "" + +#: journal/models.py:85 +msgid "Initial Volume" +msgstr "" + +#: journal/models.py:88 +msgid "Initial Number" +msgstr "" + +#: journal/models.py:91 +msgid "Termination year" +msgstr "" + +#: journal/models.py:94 +msgid "Termination month" +msgstr "" + +#: journal/models.py:97 +msgid "Final Volume" +msgstr "" + +#: journal/models.py:100 +msgid "Final Number" +msgstr "" + +#: journal/models.py:102 +msgid "ISSN Print" +msgstr "" + +#: journal/models.py:104 +msgid "ISSN Eletronic" +msgstr "" + +#: journal/models.py:106 +msgid "ISSNL" +msgstr "" + +#: journal/models.py:111 +msgid "Parallel titles" +msgstr "" + +#: journal/models.py:136 +msgid "Dates" +msgstr "" + +#: journal/models.py:137 +msgid "Issns" +msgstr "" + +#: journal/models.py:144 journal/models.py:320 +msgid "ISSN Journal" +msgstr "" + +#: journal/models.py:145 journal/wagtail_hooks.py:26 +msgid "ISSN Journals" +msgstr "" + +#: journal/models.py:232 +msgid "Unable to create or update official journal {}" +msgstr "" + +#: journal/models.py:276 journal/models.py:1930 +msgid "URL" +msgstr "" + +#: journal/models.py:281 journal/models.py:610 +msgid "Social Network" +msgstr "" + +#: journal/models.py:282 +msgid "Social Networks" +msgstr "" + +#: journal/models.py:325 +msgid "Journal Title" +msgstr "" + +#: journal/models.py:326 +msgid "Short Title" +msgstr "" + +#: journal/models.py:328 +msgid "Other titles" +msgstr "" + +#: journal/models.py:338 +msgid "Submission online URL" +msgstr "" + +#: journal/models.py:342 +msgid "Address" +msgstr "" + +#: journal/models.py:348 +msgid "Open Access status" +msgstr "" + +#: journal/models.py:356 journal/models.py:621 +msgid "Open Science accordance form" +msgstr "" + +#: journal/models.py:361 journal/models.py:886 +msgid "" +"Suggested form: https://wp.scielo." +"org/wp-content/uploads/Formulario-de-Conformidade-Ciencia-Aberta.docx" +msgstr "" + +#: journal/models.py:367 +msgid "Main Collection" +msgstr "" + +#: journal/models.py:373 +msgid "Frequency" +msgstr "" + +#: journal/models.py:380 +msgid "Publishing Model" +msgstr "" + +#: journal/models.py:388 +msgid "Subject Descriptors" +msgstr "" + +#: journal/models.py:393 +msgid "Study Areas" +msgstr "" + +#: journal/models.py:398 +msgid "Web of Knowledge Databases" +msgstr "" + +#: journal/models.py:403 +msgid "Web of Knowledge Subject Categories" +msgstr "" + +#: journal/models.py:408 +msgid "Text Languages" +msgstr "" + +#: journal/models.py:414 +msgid "Abstract Languages" +msgstr "" + +#: journal/models.py:425 +msgid "Alphabet" +msgstr "" + +#: journal/models.py:432 +msgid "Type of Literature" +msgstr "" + +#: journal/models.py:439 +msgid "Treatment Level" +msgstr "" + +#: journal/models.py:446 +msgid "Level of Publication" +msgstr "" + +#: journal/models.py:453 +msgid "National Code" +msgstr "" + +#: journal/models.py:458 +msgid "Classification" +msgstr "" + +#: journal/models.py:470 journal/models.py:2289 +msgid "Indexed At" +msgstr "" + +#: journal/models.py:475 +msgid "Additional Index At" +msgstr "" + +#: journal/models.py:479 +msgid "Journal URL" +msgstr "" + +#: journal/models.py:490 +msgid "Center code" +msgstr "" + +#: journal/models.py:495 +msgid "Identification Number" +msgstr "" + +#: journal/models.py:501 +msgid "Ftp" +msgstr "" + +#: journal/models.py:507 +msgid "User Subscription" +msgstr "" + +#: journal/models.py:518 +msgid "Section" +msgstr "" + +#: journal/models.py:524 +msgid "Has Supplement" +msgstr "" + +#: journal/models.py:529 +msgid "Is supplement" +msgstr "" + +#: journal/models.py:535 +msgid "Acronym Letters" +msgstr "" + +#: journal/models.py:543 +msgid "Authors names" +msgstr "" + +#: journal/models.py:545 +msgid "" +"For compound surnames, create clear identification [uppercase, bold, and/or " +"hyphen]" +msgstr "" + +#: journal/models.py:551 +msgid "Manuscript Length" +msgstr "" + +#: journal/models.py:552 +msgid "Manuscript Length (consider spacing)" +msgstr "" + +#: journal/models.py:561 +msgid "DigitalPreservationAgency" +msgstr "" + +#: journal/models.py:581 thematic_areas/models.py:158 +#: thematic_areas/wagtail_hooks.py:196 +msgid "Thematic Areas" +msgstr "" + +#: journal/models.py:584 +msgid "Mission" +msgstr "" + +#: journal/models.py:585 +msgid "Brief History" +msgstr "" + +#: journal/models.py:586 +msgid "Focus and Scope" +msgstr "" + +#: journal/models.py:590 +msgid "Owner" +msgstr "" + +#: journal/models.py:595 +msgid "Copyright Holder" +msgstr "" + +#: journal/models.py:604 +msgid "Contact e-mail" +msgstr "" + +#: journal/models.py:624 +msgid "Open data" +msgstr "" + +#: journal/models.py:625 journalpage/templates/journalpage/about.html:227 +#: journalpage/templates/journalpage/about.html:421 +msgid "Preprint" +msgstr "" + +#: journal/models.py:626 +msgid "Peer review" +msgstr "" + +#: journal/models.py:632 +msgid "Ethics" +msgstr "" + +#: journal/models.py:637 +msgid "Ethics Committee" +msgstr "" + +#: journal/models.py:642 +msgid "Copyright" +msgstr "" + +#: journal/models.py:647 +msgid "Intellectual Property / Terms of use / Website responsibility" +msgstr "" + +#: journal/models.py:652 +msgid "Intellectual Property / Terms of use / Author responsibility" +msgstr "" + +#: journal/models.py:657 +msgid "Retraction Policy | Ethics and Misconduct Policy" +msgstr "" + +#: journal/models.py:663 +msgid "Digital Preservation" +msgstr "" + +#: journal/models.py:668 +msgid "Conflict of interest policy" +msgstr "" + +#: journal/models.py:673 +msgid "Similarity Verification Software Adoption" +msgstr "" + +#: journal/models.py:678 +msgid "Gender Issues" +msgstr "" + +#: journal/models.py:683 +msgid "Fee Charging" +msgstr "" + +#: journal/models.py:687 journal/models.py:768 journal/models.py:2050 +msgid "Notes" +msgstr "" + +#: journal/models.py:710 +msgid "Accepted Document Types" +msgstr "" + +#: journal/models.py:715 +msgid "Authors Contributions" +msgstr "" + +#: journal/models.py:720 +msgid "Preparing Manuscript" +msgstr "" + +#: journal/models.py:725 +msgid "Digital Assets" +msgstr "" + +#: journal/models.py:730 +msgid "Citations and References" +msgstr "" + +#: journal/models.py:735 +msgid "Supplementary Documents Required for Submission" +msgstr "" + +#: journal/models.py:740 +msgid "Financing Statement" +msgstr "" + +#: journal/models.py:745 +msgid "Acknowledgements" +msgstr "" + +#: journal/models.py:750 +msgid "Additional Information" +msgstr "" + +#: journal/models.py:763 +msgid "Scope and about" +msgstr "" + +#: journal/models.py:765 +msgid "Website" +msgstr "" + +#: journal/models.py:766 +msgid "Open Science" +msgstr "" + +#: journal/models.py:767 +msgid "Journal Policy" +msgstr "" + +#: journal/models.py:770 +msgid "Legacy Compatibility" +msgstr "" + +#: journal/models.py:773 +msgid "Instructions for Authors" +msgstr "" + +#: journal/models.py:850 journal/models.py:958 +msgid "Unable to create or update journal {}" +msgstr "" + +#: journal/models.py:1033 +msgid "" +"Refers to sharing data, codes, methods and other materials used and \n" +" resulting from research that are usually the basis of the texts " +"of articles published by journals. \n" +" Guide: https://wp.scielo.org/wp-content/uploads/" +"Guia_TOP_pt.pdf" +msgstr "" + +#: journal/models.py:1049 +msgid "" +"A preprint is defined as a manuscript ready for submission to a journal that " +"is deposited \n" +" with trusted preprint servers before or in parallel with " +"submission to a journal. \n" +" This practice joins that of continuous publication as mechanisms " +"to speed up research communication. \n" +" Preprints share with journals the originality in the publication " +"of articles and inhibit the use of \n" +" the double-blind procedure in the evaluation of manuscripts. \n" +" The use of preprints is an option and choice of the authors and " +"it is up to the journals to adapt \n" +" their policies to accept the submission of manuscripts " +"previously deposited in a preprints server \n" +" recognized by the journal." +msgstr "" + +#: journal/models.py:1069 +msgid "" +"Insert here a brief history with events and milestones in the trajectory of " +"the journal" +msgstr "" + +#: journal/models.py:1081 +msgid "Insert here the focus and scope of the journal" +msgstr "" + +#: journal/models.py:1090 +msgid "Brief description of the review flow" +msgstr "" + +#: journal/models.py:1102 +msgid "" +"Authors must attach a statement of approval from the ethics committee of \n" +" the institution responsible for approving the research" +msgstr "" + +#: journal/models.py:1116 +msgid "" +"Describe the policy used by the journal on copyright issues. \n" +" We recommend that this section be in accordance with the " +"recommendations of the SciELO criteria, \n" +" item 5.2.10.1.2. - Copyright" +msgstr "" + +#: journal/models.py:1131 +msgid "" +"EX. DOAJ: Copyright terms applied to posted content must be clearly stated " +"and separate \n" +" from copyright terms applied to the website" +msgstr "" + +#: journal/models.py:1148 +msgid "" +"The author's declaration of responsibility for the content published in \n" +" the journal that owns the copyright Ex. DOAJ: The terms of " +"copyright must not contradict \n" +" the terms of the license or the terms of the open access policy. " +"\"All rights reserved\" is \n" +" never appropriate for open access content" +msgstr "" + +#: journal/models.py:1168 +msgid "" +"Describe here how the journal will deal with ethical issues and/or \n" +" issues that may damage the journal's reputation. What is the " +"journal's position regarding \n" +" the retraction policy that the journal will adopt in cases of " +"misconduct. \n" +" Best practice guide: \n" +" https://wp.scielo.org/wp-content/uploads/Guia-de-Boas-Praticas-" +"para-o-Fortalecimento-da-Etica-na-Publicacao-Cientifica.pdf" +msgstr "" + +#: journal/models.py:1202 +msgid "" +"Please describe here if the journal uses any similarity verification " +"software. Describe the policy. What cases are checked?\n" +" At what stage in the workflow are manuscripts verified?" +msgstr "" + +#: journal/models.py:1205 +msgid "Similarity erification software" +msgstr "" + +#: journal/models.py:1211 +msgid "" +"Describe the policy. Which cases are verified? At what point in the workflow " +"are the manuscripts checked?" +msgstr "" + +#: journal/models.py:1215 +msgid "Write the name of the software used." +msgstr "" + +#: journal/models.py:1218 +msgid "Write the link of the software used." +msgstr "" + +#: journal/models.py:1238 +msgid "" +"Describe how your journal considers gender diversity in the group of " +"authors, editorial board, and reviewers." +msgstr "" + +#: journal/models.py:1260 +msgid "Concepts" +msgstr "" + +#: journal/models.py:1265 +msgid "" +"Please describe any charges to authors related to the submission or " +"publication of works.\n" +" For article publication: Clearly state when no fees are charged.\n" +" Under what circumstances are charges applicable? Are there any " +"discounts?\n" +" SciELO Statement on Financial Sustainability: \n" +" https://mailchi.mp/scielo/declaracao-sobre-sustentabilidade\n" +" " +msgstr "" + +#: journal/models.py:1294 +msgid "" +"Describe the types of documents that can be submitted to the journal.\n" +" Provide information regarding the positioning related to " +"preprint submissions.\n" +" Examples: Original Article, Review Article, Preprints " +"and etc." +msgstr "" + +#: journal/models.py:1313 +msgid "" +"Description of how authors contributions should be specified.\n" +" Does it use any taxonomy? If yes, which one?\n" +" Does the article text explicitly state the authors contributions?\n" +" Preferably, use the CREDiT taxonomy structure: https://casrai.org/credit/\n" +" " +msgstr "" + +#: journal/models.py:1335 +msgid "" +"Specify how authors should present their research and explain why the work " +"is suitable for publication in the journal." +msgstr "" + +#: journal/models.py:1348 +msgid "" +"Please describe how tables, charts, figures, illustrations, maps, diagrams, " +"and other digital assets in the documents should be presented for " +"publication in the journal. It is important to specify technical details " +"such as format, resolution, size, etc." +msgstr "" + +#: journal/models.py:1364 +msgid "" +"Describe the citation and referencing style used by the journal. Provide " +"examples of document types according to the style." +msgstr "" + +#: journal/models.py:1382 +msgid "" +"Describe any supplementary documents requested from authors during " +"manuscript submission. Examples may include Open Science Compliance Form, " +"authors' agreement statement, ethics committee approval form, etc." +msgstr "" + +#: journal/models.py:1399 +msgid "???" +msgstr "" + +#: journal/models.py:1408 +msgid "Describe the acknowledgments." +msgstr "" + +#: journal/models.py:1422 +msgid "Free field for entering additional information or data." +msgstr "" + +#: journal/models.py:1448 +msgid "Descreva o teim do check list" +msgstr "" + +#: journal/models.py:1475 journal/models.py:1929 +msgid "Acronym" +msgstr "" + +#: journal/models.py:1606 +msgid "Journal Acronym" +msgstr "" + +#: journal/models.py:1622 +msgid "SciELO Journal" +msgstr "" + +#: journal/models.py:1623 journal/wagtail_hooks.py:99 +msgid "SciELO Journals" +msgstr "" + +#: journal/models.py:1695 +msgid "Unable to create or update SciELO journal {}" +msgstr "" + +#: journal/models.py:1931 +msgid "Description" +msgstr "" + +#: journal/models.py:1933 +msgid "Type" +msgstr "" + +#: journal/models.py:2051 +msgid "Creation Date" +msgstr "" + +#: journal/models.py:2052 +msgid "Update Date" +msgstr "" + +#: journal/models.py:2105 +msgid "Event year" +msgstr "" + +#: journal/models.py:2107 +msgid "Event month" +msgstr "" + +#: journal/models.py:2113 +msgid "Event day" +msgstr "" + +#: journal/models.py:2116 +msgid "Event type" +msgstr "" + +#: journal/models.py:2123 +msgid "Indexing interruption reason" +msgstr "" + +#: journal/models.py:2141 +msgid "Event" +msgstr "" + +#: journal/models.py:2142 +msgid "Events" +msgstr "" + +#: journal/models.py:2241 +msgid "Scielo Issn" +msgstr "" + +#: journal/models.py:2300 +msgid "Identifier" +msgstr "" + +#: journal/models.py:2306 +msgid "Title in Database" +msgstr "" + +#: journal/models.py:2307 +msgid "Title in databases" +msgstr "" + +#: journal/models.py:2395 +msgid "Enter the URI of the data repository." +msgstr "" + +#: journal/wagtail_hooks.py:245 +msgid "Article Submission Format Check List" +msgstr "" + +#: journalpage/templates/journalpage/SciELO - Brasil.html:139 Brasil.html:181 +msgid "Lista alfabética de periódicos" +msgstr "" + +#: journalpage/templates/journalpage/SciELO - Brasil.html:144 +msgid "Lista temática de periódicos" +msgstr "" + +#: journalpage/templates/journalpage/SciELO - Brasil.html:149 Brasil.html:191 +msgid "Busca" +msgstr "" + +#: journalpage/templates/journalpage/SciELO - Brasil.html:154 Brasil.html:196 +#: Brasil.html:438 Brasil.html:469 +#: journalpage/templates/journalpage/includes/levelMenu.html:36 +#: journalpage/templates/journalpage/includes/levelMenu.html:67 +msgid "Métricas" +msgstr "" + +#: journalpage/templates/journalpage/SciELO - Brasil.html:159 +msgid "Sobre o SciELO Brasil" +msgstr "" + +#: journalpage/templates/journalpage/SciELO - Brasil.html:164 Brasil.html:211 +msgid "Contatos" +msgstr "" + +#: journalpage/templates/journalpage/SciELO - Brasil.html:169 +msgid "Reportar erro" +msgstr "" + +#: journalpage/templates/journalpage/SciELO - Brasil.html:176 +msgid "Coleções nacionais e temáticas" +msgstr "" + +#: journalpage/templates/journalpage/SciELO - Brasil.html:186 +msgid "Lista de periódicos por assunto" +msgstr "" + +#: journalpage/templates/journalpage/SciELO - Brasil.html:201 +msgid "Acesso OAI e RSS" +msgstr "" + +#: journalpage/templates/journalpage/SciELO - Brasil.html:206 +msgid "Sobre a Rede SciELO" +msgstr "" + +#: journalpage/templates/journalpage/SciELO - Brasil.html:220 +msgid "Blog SciELO em Perspectiva" +msgstr "" + +#: journalpage/templates/journalpage/SciELO - Brasil.html:250 Brasil.html:314 +#: Brasil.html:395 +msgid "Submissão de manuscritos" +msgstr "" + +#: journalpage/templates/journalpage/SciELO - Brasil.html:254 Brasil.html:318 +#: Brasil.html:397 Brasil.html:618 +#: journalpage/templates/journalpage/about.html:80 +#: journalpage/templates/journalpage/about.html:380 +#: journalpage/templates/journalpage/includes/journal_info.html:89 +msgid "Sobre o periódico" +msgstr "" + +#: journalpage/templates/journalpage/SciELO - Brasil.html:257 Brasil.html:321 +#: Brasil.html:398 +#: journalpage/templates/journalpage/includes/journal_info.html:90 +msgid "Corpo Editorial" +msgstr "" + +#: journalpage/templates/journalpage/SciELO - Brasil.html:260 Brasil.html:324 +#: Brasil.html:399 +#: journalpage/templates/journalpage/includes/journal_info.html:91 +msgid "Instruções aos autores" +msgstr "" + +#: journalpage/templates/journalpage/SciELO - Brasil.html:263 Brasil.html:327 +#: Brasil.html:400 journalpage/templates/journalpage/about.html:213 +#: journalpage/templates/journalpage/about.html:412 +#: journalpage/templates/journalpage/includes/journal_info.html:92 +msgid "Política editorial" +msgstr "" + +#: journalpage/templates/journalpage/SciELO - Brasil.html:266 Brasil.html:330 +#: Brasil.html:728 journalpage/templates/journalpage/about.html:160 +#: journalpage/templates/journalpage/about.html:395 +msgid "Contato" +msgstr "" + +#: journalpage/templates/journalpage/SciELO - Brasil.html:357 +#: journalpage/templates/journalpage/includes/journal_info.html:21 +msgid "Publicação de" +msgstr "" + +#: journalpage/templates/journalpage/SciELO - Brasil.html:362 +#: journalpage/templates/journalpage/includes/journal_info.html:26 +msgid "Área" +msgstr "" + +#: journalpage/templates/journalpage/SciELO - Brasil.html:370 +#: journalpage/templates/journalpage/includes/journal_info.html:37 +msgid "Versão impressa ISSN" +msgstr "" + +#: journalpage/templates/journalpage/SciELO - Brasil.html:377 +#: journalpage/templates/journalpage/includes/journal_info.html:44 +msgid "Versão on-line ISSN" +msgstr "" + +#: journalpage/templates/journalpage/SciELO - Brasil.html:419 +#: journalpage/templates/journalpage/includes/levelMenu.html:17 +msgid "Todos os números" +msgstr "" + +#: journalpage/templates/journalpage/SciELO - Brasil.html:421 +#: journalpage/templates/journalpage/includes/levelMenu.html:19 +#: journalpage/templates/journalpage/includes/levelMenu.html:105 +msgid "número anterior" +msgstr "" + +#: journalpage/templates/journalpage/SciELO - Brasil.html:422 +#: journalpage/templates/journalpage/includes/levelMenu.html:20 +msgid "Número anterior" +msgstr "" + +#: journalpage/templates/journalpage/SciELO - Brasil.html:424 +#: journalpage/templates/journalpage/includes/levelMenu.html:22 +#: journalpage/templates/journalpage/includes/levelMenu.html:108 +msgid "número atual" +msgstr "" + +#: journalpage/templates/journalpage/SciELO - Brasil.html:425 +#: journalpage/templates/journalpage/includes/levelMenu.html:23 +msgid "Número atual" +msgstr "" + +#: journalpage/templates/journalpage/SciELO - Brasil.html:427 +#: journalpage/templates/journalpage/includes/levelMenu.html:25 +msgid "número seguinte" +msgstr "" + +#: journalpage/templates/journalpage/SciELO - Brasil.html:428 +#: journalpage/templates/journalpage/includes/levelMenu.html:26 +msgid "Número seguinte" +msgstr "" + +#: journalpage/templates/journalpage/SciELO - Brasil.html:435 Brasil.html:466 +#: journalpage/templates/journalpage/includes/levelMenu.html:33 +#: journalpage/templates/journalpage/includes/levelMenu.html:64 +#: journalpage/templates/journalpage/includes/levelMenu.html:117 +#: search/templates/search.html:43 +msgid "Buscar" +msgstr "" + +#: journalpage/templates/journalpage/SciELO - Brasil.html:463 +#: journalpage/templates/journalpage/includes/levelMenu.html:61 +msgid "Todos" +msgstr "" + +#: journalpage/templates/journalpage/SciELO - Brasil.html:590 +msgid "Imprimir" +msgstr "" + +#: journalpage/templates/journalpage/SciELO - Brasil.html:616 +#: journalpage/templates/journalpage/about.html:78 +msgid "Periódicos" +msgstr "" + +#: journalpage/templates/journalpage/SciELO - Brasil.html:669 +#: journalpage/templates/journalpage/about.html:111 +msgid "Título do periódico conforme registro do ISSN:" +msgstr "" + +#: journalpage/templates/journalpage/SciELO - Brasil.html:673 +#: journalpage/templates/journalpage/about.html:115 +msgid "Título abreviado:" +msgstr "" + +#: journalpage/templates/journalpage/SciELO - Brasil.html:677 +#: journalpage/templates/journalpage/about.html:119 +msgid "Publicação de:" +msgstr "" + +#: journalpage/templates/journalpage/SciELO - Brasil.html:681 +#: journalpage/templates/journalpage/about.html:122 +msgid "Periodicidade:" +msgstr "" + +#: journalpage/templates/journalpage/SciELO - Brasil.html:685 +#: journalpage/templates/journalpage/about.html:126 +msgid "Modalidade de publicação:" +msgstr "" + +#: journalpage/templates/journalpage/SciELO - Brasil.html:689 +#: journalpage/templates/journalpage/about.html:130 +msgid "Ano de criação do periódico:" +msgstr "" + +#: journalpage/templates/journalpage/SciELO - Brasil.html:695 +#: journalpage/templates/journalpage/about.html:133 +msgid "Área:" +msgstr "" + +#: journalpage/templates/journalpage/SciELO - Brasil.html:701 +#: journalpage/templates/journalpage/about.html:137 +msgid "Versão impressa:" +msgstr "" + +#: journalpage/templates/journalpage/SciELO - Brasil.html:707 +#: journalpage/templates/journalpage/about.html:143 +msgid "Versão on-line ISSN:" +msgstr "" + +#: journalpage/templates/journalpage/SciELO - Brasil.html:713 +#: journalpage/templates/journalpage/about.html:148 +#: journalpage/templates/journalpage/about.html:386 +msgid "Missão" +msgstr "" + +#: journalpage/templates/journalpage/SciELO - Brasil.html:718 +#: journalpage/templates/journalpage/about.html:152 +#: journalpage/templates/journalpage/about.html:389 +msgid "Breve Histórico" +msgstr "" + +#: journalpage/templates/journalpage/SciELO - Brasil.html:723 +#: journalpage/templates/journalpage/about.html:156 +#: journalpage/templates/journalpage/about.html:392 +msgid "Foco e escopo" +msgstr "" + +#: journalpage/templates/journalpage/SciELO - Brasil.html:732 +#: journalpage/templates/journalpage/about.html:164 +msgid "Endereço completo da unidade / instituição responsável pelo periódico:" +msgstr "" + +#: journalpage/templates/journalpage/SciELO - Brasil.html:736 +#: journalpage/templates/journalpage/about.html:168 +msgid "Cidade:" +msgstr "" + +#: journalpage/templates/journalpage/SciELO - Brasil.html:737 +msgid "Inserir cidade aqui" +msgstr "" + +#: journalpage/templates/journalpage/SciELO - Brasil.html:740 +#: journalpage/templates/journalpage/about.html:172 +msgid "Estado:" +msgstr "" + +#: journalpage/templates/journalpage/SciELO - Brasil.html:741 +msgid "Inserir estado aqui" +msgstr "" + +#: journalpage/templates/journalpage/SciELO - Brasil.html:744 +#: journalpage/templates/journalpage/about.html:176 +msgid "País:" +msgstr "" + +#: journalpage/templates/journalpage/SciELO - Brasil.html:745 +msgid "Inserir país aqui" +msgstr "" + +#: journalpage/templates/journalpage/SciELO - Brasil.html:748 +#: journalpage/templates/journalpage/about.html:180 +msgid "E-mail:" +msgstr "" + +#: journalpage/templates/journalpage/SciELO - Brasil.html:752 +#: journalpage/templates/journalpage/about.html:184 +#: journalpage/templates/journalpage/about.html:398 +msgid "Websites e Mídias Sociais" +msgstr "" + +#: journalpage/templates/journalpage/SciELO - Brasil.html:760 +#: journalpage/templates/journalpage/about.html:192 +#: journalpage/templates/journalpage/about.html:401 +msgid "Fontes de indexação" +msgstr "" + +#: journalpage/templates/journalpage/SciELO - Brasil.html:766 +#: journalpage/templates/journalpage/about.html:198 +#: journalpage/templates/journalpage/about.html:404 +msgid "Patrocinadores e agências de Fomento" +msgstr "" + +#: journalpage/templates/journalpage/about.html:206 +#: journalpage/templates/journalpage/about.html:407 +msgid "Preservação digital" +msgstr "" + +#: journalpage/templates/journalpage/about.html:215 +#: journalpage/templates/journalpage/about.html:415 +msgid "Conformidade com a Ciência Aberta" +msgstr "" + +#: journalpage/templates/journalpage/about.html:221 +#: journalpage/templates/journalpage/about.html:418 +msgid "Dados abertos" +msgstr "" + +#: journalpage/templates/journalpage/about.html:233 +#: journalpage/templates/journalpage/about.html:424 +msgid "Peer review informado" +msgstr "" + +#: journalpage/templates/journalpage/about.html:242 +#: journalpage/templates/journalpage/about.html:427 +#: thematic_areas/choices.py:272 +msgid "Ética" +msgstr "" + +#: journalpage/templates/journalpage/about.html:248 +#: journalpage/templates/journalpage/about.html:429 +msgid "Comitê de Ética" +msgstr "" + +#: journalpage/templates/journalpage/about.html:252 +#: journalpage/templates/journalpage/about.html:432 +msgid "Direitos Autorais" +msgstr "" + +#: journalpage/templates/journalpage/about.html:256 +#: journalpage/templates/journalpage/about.html:435 +msgid "Propriedade Intelectual" +msgstr "" + +#: journalpage/templates/journalpage/about.html:260 +msgid "Responsabilidade do site:" +msgstr "" + +#: journalpage/templates/journalpage/about.html:265 +msgid "Responsabilidade do autor:" +msgstr "" + +#: journalpage/templates/journalpage/about.html:269 +#: journalpage/templates/journalpage/about.html:438 +msgid "Política de Ética e Más condutas" +msgstr "" + +#: journalpage/templates/journalpage/about.html:271 +msgid "Política de retratação:" +msgstr "" + +#: journalpage/templates/journalpage/about.html:278 +#: journalpage/templates/journalpage/about.html:441 +msgid "Política sobre Conflito de Interesses" +msgstr "" + +#: journalpage/templates/journalpage/about.html:284 +#: journalpage/templates/journalpage/about.html:444 +msgid "Questões de gênero" +msgstr "" + +#: journalpage/templates/journalpage/about.html:290 +msgid "Licença" +msgstr "" + +#: journalpage/templates/journalpage/about.html:294 +msgid "licença:" +msgstr "" + +#: journalpage/templates/journalpage/about.html:297 +msgid "Cobrança de taxas" +msgstr "" + +#: journalpage/templates/journalpage/about.html:301 +msgid "Moeda:" +msgstr "" + +#: journalpage/templates/journalpage/about.html:301 +msgid "Valor:" +msgstr "" + +#: journalpage/templates/journalpage/about.html:305 +msgid "CORPO EDITORIAL" +msgstr "" + +#: journalpage/templates/journalpage/about.html:324 +msgid "INSTRUÇÕES PARA OS AUTORES" +msgstr "" + +#: journalpage/templates/journalpage/about.html:326 +msgid "Tipos de documentos aceitos" +msgstr "" + +#: journalpage/templates/journalpage/about.html:333 +#: journalpage/templates/journalpage/about.html:472 +msgid "Contribuição dos Autores" +msgstr "" + +#: journalpage/templates/journalpage/about.html:338 +msgid "Formato de envio dos artigos" +msgstr "" + +#: journalpage/templates/journalpage/about.html:344 +msgid "Ativos digitais" +msgstr "" + +#: journalpage/templates/journalpage/about.html:348 +msgid "Citações e referências" +msgstr "" + +#: journalpage/templates/journalpage/about.html:352 +#: journalpage/templates/journalpage/about.html:484 +msgid "Documentos Suplementares Necessários para Submissão" +msgstr "" + +#: journalpage/templates/journalpage/about.html:356 +#: journalpage/templates/journalpage/about.html:487 +msgid "Declaração de Financiamento" +msgstr "" + +#: journalpage/templates/journalpage/about.html:360 +#: journalpage/templates/journalpage/about.html:490 +msgid "Agradecimentos" +msgstr "" + +#: journalpage/templates/journalpage/about.html:364 +msgid "Informações adicionais" +msgstr "" + +#: journalpage/templates/journalpage/about.html:369 +msgid "*dados precisam estar disponíveis em alfabeto romano" +msgstr "" + +#: journalpage/templates/journalpage/about.html:383 +msgid "Ficha Bibliográfica" +msgstr "" + +#: journalpage/templates/journalpage/about.html:449 +msgid "Corpo editorial" +msgstr "" + +#: journalpage/templates/journalpage/about.html:452 +msgid "Editor-chefe" +msgstr "" + +#: journalpage/templates/journalpage/about.html:455 +msgid "Editor-executivo" +msgstr "" + +#: journalpage/templates/journalpage/about.html:458 +msgid "Editor(es) Associados ou de Seção / Área" +msgstr "" + +#: journalpage/templates/journalpage/about.html:461 +msgid "Equipe técnica" +msgstr "" + +#: journalpage/templates/journalpage/about.html:466 +msgid "Instruções para os Autores" +msgstr "" + +#: journalpage/templates/journalpage/about.html:469 +msgid "Tipos de Documentos Aceitos" +msgstr "" + +#: journalpage/templates/journalpage/about.html:475 +msgid "Formato de Envio dos Artigos" +msgstr "" + +#: journalpage/templates/journalpage/about.html:478 +msgid "Ativos Digitais" +msgstr "" + +#: journalpage/templates/journalpage/about.html:481 +msgid "Citações e Referências" +msgstr "" + +#: journalpage/templates/journalpage/about.html:493 +msgid "Informações Adicionais" +msgstr "" + +#: journalpage/templates/journalpage/includes/levelMenu.html:11 +msgid "Home do periódico" +msgstr "" + +#: journalpage/templates/journalpage/includes/levelMenu.html:101 +msgid "todos" +msgstr "" + +#: location/models.py:28 +msgid "Name of the city" +msgstr "" + +#: location/models.py:38 location/models.py:491 location/wagtail_hooks.py:57 +msgid "City" +msgstr "" + +#: location/models.py:39 +msgid "Cities" +msgstr "" + +#: location/models.py:115 +msgid "State name" +msgstr "" + +#: location/models.py:116 +msgid "State Acronym" +msgstr "" + +#: location/models.py:131 location/models.py:498 location/wagtail_hooks.py:71 +msgid "State" +msgstr "" + +#: location/models.py:132 +msgid "States" +msgstr "" + +#: location/models.py:246 +msgid "Country name" +msgstr "" + +#: location/models.py:247 location/models.py:350 +msgid "Country names" +msgstr "" + +#: location/models.py:337 +msgid "Country Name" +msgstr "" + +#: location/models.py:339 +msgid "Country Acronym (2 char)" +msgstr "" + +#: location/models.py:342 +msgid "Country Acronym (3 char)" +msgstr "" + +#: location/models.py:366 +msgid "Countries" +msgstr "" + +#: location/models.py:532 location/wagtail_hooks.py:26 +#: location/wagtail_hooks.py:132 +msgid "Location" +msgstr "" + +#: location/models.py:533 +msgid "Locations" +msgstr "" + +#: pid_provider/models.py:40 +msgid "XML Post URI" +msgstr "" + +#: pid_provider/models.py:43 +msgid "Get Token URI" +msgstr "" + +#: pid_provider/models.py:45 +msgid "Timeout" +msgstr "" + +#: pid_provider/models.py:46 +msgid "API Username" +msgstr "" + +#: pid_provider/models.py:47 +msgid "API Password" +msgstr "" + +#: pid_provider/models.py:90 +msgid "Request origin" +msgstr "" + +#: pid_provider/models.py:92 +msgid "Result type" +msgstr "" + +#: pid_provider/models.py:93 +msgid "Result message" +msgstr "" + +#: pid_provider/models.py:97 +msgid "Detail" +msgstr "" + +#: pid_provider/models.py:99 pid_provider/models.py:348 +msgid "Origin date" +msgstr "" + +#: pid_provider/models.py:101 xmlsps/models.py:43 +msgid "PID v3" +msgstr "" + +#: pid_provider/models.py:247 pid_provider/models.py:322 +msgid "Package name" +msgstr "" + +#: pid_provider/models.py:248 +msgid "PID type" +msgstr "" + +#: pid_provider/models.py:250 +msgid "PID pid_in_xml" +msgstr "" + +#: pid_provider/models.py:253 +msgid "PID assigned" +msgstr "" + +#: pid_provider/models.py:310 +msgid "issn_epub" +msgstr "" + +#: pid_provider/models.py:312 +msgid "issn_ppub" +msgstr "" + +#: pid_provider/models.py:313 +msgid "pub_year" +msgstr "" + +#: pid_provider/models.py:314 +msgid "volume" +msgstr "" + +#: pid_provider/models.py:315 +msgid "number" +msgstr "" + +#: pid_provider/models.py:316 +msgid "suppl" +msgstr "" + +#: pid_provider/models.py:323 +msgid "v3" +msgstr "" + +#: pid_provider/models.py:324 +msgid "v2" +msgstr "" + +#: pid_provider/models.py:325 +msgid "AOP PID" +msgstr "" + +#: pid_provider/models.py:327 +msgid "elocation id" +msgstr "" + +#: pid_provider/models.py:328 +msgid "fpage" +msgstr "" + +#: pid_provider/models.py:329 +msgid "fpage_seq" +msgstr "" + +#: pid_provider/models.py:330 +msgid "lpage" +msgstr "" + +#: pid_provider/models.py:332 +msgid "Document Publication Year" +msgstr "" + +#: pid_provider/models.py:334 +msgid "main_toc_section" +msgstr "" + +#: pid_provider/models.py:335 +msgid "DOI" +msgstr "" + +#: pid_provider/models.py:338 +msgid "article_titles_texts" +msgstr "" + +#: pid_provider/models.py:340 +msgid "surnames" +msgstr "" + +#: pid_provider/models.py:341 +msgid "collab" +msgstr "" + +#: pid_provider/models.py:342 +msgid "links" +msgstr "" + +#: pid_provider/models.py:344 +msgid "partial_body" +msgstr "" + +#: pid_provider/models.py:353 +msgid "Website publication date" +msgstr "" + +#: pid_provider/models.py:557 +msgid "Found {} records for {}" +msgstr "" + +#: pid_provider/models.py:647 +msgid "" +"The XML content is an ahead of print version but the document {} is already " +"published in an issue" +msgstr "" + +#: pid_provider/models.py:1015 pid_provider/models.py:1027 +#: pid_provider/models.py:1050 +msgid "No attribute enough for disambiguations {}" +msgstr "" + +#: pid_provider/scripts/schedule_pid_provider_for_opac_xmls.py:10 +msgid "Registra XML do site www.scielo.br no pid provider" +msgstr "" + +#: pid_provider/scripts/schedule_pid_provider_for_opac_xmls.py:19 +msgid "" +"Executa diariamente às 23h UTC a carga de XML atualizados de 30 anteriores " +"até hoje" +msgstr "" + +#: pid_provider/wagtail_hooks.py:23 +msgid "Pid Requests" +msgstr "" + +#: pid_provider/wagtail_hooks.py:51 +msgid "Collection Pid Requests" +msgstr "" + +#: pid_provider/wagtail_hooks.py:81 +msgid "Pid Provider XMLs" +msgstr "" + +#: pid_provider/wagtail_hooks.py:120 +msgid "Pid Changes" +msgstr "" + +#: pid_provider/wagtail_hooks.py:143 +msgid "Pid Provider" +msgstr "" + +#: report/models.py:37 +msgid "Complete with the type of report" +msgstr "" + +#: report/models.py:51 +msgid "Publication Year" +msgstr "" + +#: report/wagtail_hooks.py:12 +msgid "Report CSV" +msgstr "" + +#: researcher/models.py:246 +msgid "Given names" +msgstr "" + +#: researcher/models.py:248 +msgid "Last name" +msgstr "" + +#: researcher/models.py:249 +msgid "Suffix" +msgstr "" + +#: researcher/models.py:250 +msgid "Full Name" +msgstr "" + +#: researcher/models.py:253 +msgid "Declared Name" +msgstr "" + +#: researcher/models.py:257 +msgid "Gender identification status" +msgstr "" + +#: researcher/models.py:428 +msgid "ID" +msgstr "" + +#: researcher/models.py:430 +msgid "Source name" +msgstr "" + +#: researcher/wagtail_hooks.py:18 +msgid "Researcher" +msgstr "" + +#: researcher/wagtail_hooks.py:46 +msgid "Researcher Identifier" +msgstr "" + +#: researcher/wagtail_hooks.py:63 +msgid "Affiliation" +msgstr "" + +#: researcher/wagtail_hooks.py:84 +msgid "PersonName" +msgstr "" + +#: search/choices.py:4 +msgid "Periódico" +msgstr "" + +#: search/choices.py:5 +msgid "Ano de publicação" +msgstr "" + +#: search/choices.py:6 +msgid "Tipo de Literatura" +msgstr "" + +#: search/choices.py:7 search/choices.py:10 +msgid "Coleções" +msgstr "" + +#: search/choices.py:8 +msgid "Ano" +msgstr "" + +#: search/choices.py:9 +msgid "Idioma" +msgstr "" + +#: search/choices.py:11 +msgid "Argentina" +msgstr "" + +#: search/choices.py:12 +msgid "Brasil" +msgstr "" + +#: search/choices.py:13 +msgid "Bolívia" +msgstr "" + +#: search/choices.py:14 +msgid "Chile" +msgstr "" + +#: search/choices.py:15 +msgid "Colômbia" +msgstr "" + +#: search/choices.py:16 +msgid "Costa Rica" +msgstr "" + +#: search/choices.py:17 +msgid "Cuba" +msgstr "" + +#: search/choices.py:18 +msgid "Espanha" +msgstr "" + +#: search/choices.py:19 +msgid "México" +msgstr "" + +#: search/choices.py:20 +msgid "Portugal" +msgstr "" + +#: search/choices.py:21 +msgid "Venezuela" +msgstr "" + +#: search/choices.py:22 thematic_areas/choices.py:510 +msgid "Saúde Pública" +msgstr "" + +#: search/choices.py:23 +msgid "Social Sciences" +msgstr "" + +#: search/choices.py:24 +msgid "África do Sul" +msgstr "" + +#: search/choices.py:25 +msgid "Peru" +msgstr "" + +#: search/choices.py:26 +msgid "Uruguai" +msgstr "" + +#: search/choices.py:27 +msgid "Ecuador" +msgstr "" + +#: search/choices.py:28 +msgid "Paraguai" +msgstr "" + +#: search/choices.py:29 +msgid "Índias Ocidentais" +msgstr "" + +#: search/choices.py:30 thematic_areas/choices.py:593 +msgid "Português" +msgstr "" + +#: search/choices.py:31 thematic_areas/choices.py:580 +msgid "Espanhol" +msgstr "" + +#: search/choices.py:32 thematic_areas/choices.py:588 +msgid "Inglês" +msgstr "" + +#: search/choices.py:33 +msgid "Africaner" +msgstr "" + +#: search/choices.py:34 thematic_areas/choices.py:582 +msgid "Francês" +msgstr "" + +#: search/choices.py:35 thematic_areas/choices.py:589 +msgid "Italiano" +msgstr "" + +#: search/choices.py:36 thematic_areas/choices.py:572 +msgid "Alemão" +msgstr "" + +#: search/choices.py:37 thematic_areas/choices.py:573 +msgid "Árabe" +msgstr "" + +#: search/choices.py:38 thematic_areas/choices.py:576 +msgid "Coreano" +msgstr "" + +#: search/choices.py:39 thematic_areas/choices.py:590 +msgid "Japonês" +msgstr "" + +#: search/choices.py:40 +msgid "Búlgaro" +msgstr "" + +#: search/choices.py:41 +msgid "Bósnio" +msgstr "" + +#: search/choices.py:42 search/choices.py:43 +msgid "Catalão" +msgstr "" + +#: search/choices.py:44 thematic_areas/choices.py:595 +msgid "Russo" +msgstr "" + +#: search/choices.py:45 thematic_areas/choices.py:594 +msgid "Romeno" +msgstr "" + +#: search/choices.py:46 +msgid "Ucraniano" +msgstr "" + +#: search/choices.py:47 thematic_areas/choices.py:600 +msgid "Turco" +msgstr "" + +#: search/choices.py:48 thematic_areas/choices.py:597 +msgid "Sueco" +msgstr "" + +#: search/choices.py:49 thematic_areas/choices.py:596 +msgid "Sérvio" +msgstr "" + +#: search/choices.py:50 thematic_areas/choices.py:578 +msgid "Eslovaco" +msgstr "" + +#: search/choices.py:51 thematic_areas/choices.py:579 +msgid "Esloveno" +msgstr "" + +#: search/choices.py:52 thematic_areas/choices.py:592 +msgid "Polonês" +msgstr "" + +#: search/choices.py:53 search/choices.py:54 thematic_areas/choices.py:584 +msgid "Holandês" +msgstr "" + +#: search/choices.py:55 +msgid "Letão" +msgstr "" + +#: search/choices.py:56 +msgid "Lituano" +msgstr "" + +#: search/choices.py:57 +msgid "Islandês" +msgstr "" + +#: search/choices.py:58 thematic_areas/choices.py:585 +msgid "Húngaro" +msgstr "" + +#: search/choices.py:59 +msgid "Croata" +msgstr "" + +#: search/choices.py:60 +msgid "Hebraico" +msgstr "" + +#: search/choices.py:61 thematic_areas/choices.py:581 +msgid "Finlandês" +msgstr "" + +#: search/choices.py:62 thematic_areas/choices.py:575 +msgid "Chinês" +msgstr "" + +#: search/choices.py:63 +msgid "Artigo" +msgstr "" + +#: search/choices.py:64 +msgid "Editorial" +msgstr "" + +#: search/choices.py:65 +msgid "Resenha de livro" +msgstr "" + +#: search/choices.py:66 +msgid "Relato de caso" +msgstr "" + +#: search/choices.py:67 +msgid "Comunicação rápida" +msgstr "" + +#: search/choices.py:68 +msgid "Artigo de revisão" +msgstr "" + +#: search/choices.py:69 +msgid "Relato breve" +msgstr "" + +#: search/choices.py:70 +msgid "Carta" +msgstr "" + +#: search/choices.py:71 +msgid "Artigo de comentário" +msgstr "" + +#: search/choices.py:72 search/choices.py:73 +msgid "Outros" +msgstr "" + +#: search/choices.py:74 search/templates/include/result_doc_actions.html:7 +msgid "Resumo" +msgstr "" + +#: search/choices.py:75 +msgid "Addendum" +msgstr "" + +#: search/choices.py:76 +msgid "Comunicado de imprensa" +msgstr "" + +#: search/choices.py:77 +msgid "Notícia" +msgstr "" + +#: search/choices.py:78 +msgid "Correção" +msgstr "" + +#: search/choices.py:79 +msgid "Discussão" +msgstr "" + +#: search/choices.py:80 +msgid "Obituário" +msgstr "" + +#: search/choices.py:81 +msgid "Em resumo" +msgstr "" + +#: search/templates/cluster.html:10 +msgid "Filtros" +msgstr "" + +#: search/templates/include/result_doc.html:34 +msgid "Volume" +msgstr "" + +#: search/templates/include/result_doc_actions.html:13 +msgid "Texto" +msgstr "" + +#: search/templates/include/search_pagination.html:8 +msgid "Página" +msgstr "" + +#: search/templates/search.html:9 +msgid "Pesquisa | SciELO" +msgstr "" + +#: search/templates/search.html:38 +msgid "Digite sua pesquisa..." +msgstr "" + +#: search/templates/search.html:45 +msgid "Help" +msgstr "" + +#: search/templates/search.html:65 +msgid "registros encontrados para o termo" +msgstr "" + +#: search/templates/search.html:69 +msgid "Tempo da pesquisa" +msgstr "" + +#: search/templates/search.html:69 +msgid "milisegundos" +msgstr "" + +#: search/templates/search.html:72 +msgid "0 registros encontrados para o termo" +msgstr "" + +#: search/templates/search.html:100 +msgid "Ordenar por" +msgstr "" + +#: search/templates/search.html:102 +msgid "Publicação - Mais novos primeiros" +msgstr "" + +#: search/templates/search.html:103 +msgid "Publicação - Mais antigos primeiros" +msgstr "" + +#: search/templates/search.html:104 +msgid "Ordem descrecente de criação" +msgstr "" + +#: search/templates/search.html:105 +msgid "Relevância" +msgstr "" + +#: search/templates/search.html:110 +msgid "Visualizar" +msgstr "" + +#: search/templates/search.html:118 +msgid "Itens por página" +msgstr "" + +#: search/templates/search.html:289 +msgid "" +"O valor do campo página não pode ser maior que a quantidade atual de páginas." +msgstr "" + +#: search/templates/search.html:297 +msgid "O valor do campo página deve ser maior que 0." +msgstr "" + +#: src/packtools/packtools/sps/pid_provider/xml_sps_lib.py:77 +msgid "{} must be xml file or zip file containing xml" +msgstr "" + +#: src/packtools/packtools/sps/pid_provider/xml_sps_lib.py:84 +msgid "Unable to get xml items from {}: {} {}" +msgstr "" + +#: src/packtools/packtools/sps/pid_provider/xml_sps_lib.py:121 +msgid "Unable to get xml items from zip file {}: {} {}" +msgstr "" + +#: src/packtools/packtools/sps/pid_provider/xml_sps_lib.py:186 +msgid "Unable to get xml from {}" +msgstr "" + +#: src/packtools/packtools/sps/pid_provider/xml_sps_lib.py:656 +msgid "Unable to get XMLWithPre.article_publication_date {} {} {}" +msgstr "" + +#: src/packtools/packtools/webapp/forms.py:10 +msgid "URL to statics files" +msgstr "" + +#: src/packtools/packtools/webapp/forms.py:18 +msgid "This type of file is not allowed! Please select another file." +msgstr "" + +#: thematic_areas/choices.py:5 thematic_areas/choices.py:21 +#: thematic_areas/choices.py:118 +msgid "ALL" +msgstr "" + +#: thematic_areas/choices.py:6 thematic_areas/choices.py:22 +#: thematic_areas/choices.py:119 thematic_areas/choices.py:571 +#: thematic_areas/choices.py:605 +msgid "UNDEFINED" +msgstr "" + +#: thematic_areas/choices.py:7 thematic_areas/choices.py:23 +#: thematic_areas/choices.py:120 +msgid "NOT APPLICABLE" +msgstr "" + +#: thematic_areas/choices.py:8 +msgid "Ciências Agrárias" +msgstr "" + +#: thematic_areas/choices.py:9 +msgid "Ciências Biológicas" +msgstr "" + +#: thematic_areas/choices.py:10 +msgid "Ciências da Saúde" +msgstr "" + +#: thematic_areas/choices.py:11 +msgid "Ciências Exatas e da Terra" +msgstr "" + +#: thematic_areas/choices.py:12 +msgid "Ciências Humanas" +msgstr "" + +#: thematic_areas/choices.py:13 +msgid "Ciências Sociais Aplicadas" +msgstr "" + +#: thematic_areas/choices.py:14 +msgid "Engenharias" +msgstr "" + +#: thematic_areas/choices.py:15 +msgid "Linguística, Letras e Artes" +msgstr "" + +#: thematic_areas/choices.py:16 +msgid "Multidisciplinar" +msgstr "" + +#: thematic_areas/choices.py:24 +msgid "Administração" +msgstr "" + +#: thematic_areas/choices.py:25 +msgid "Agronomia" +msgstr "" + +#: thematic_areas/choices.py:26 +msgid "Antropologia" +msgstr "" + +#: thematic_areas/choices.py:27 +msgid "Arqueologia" +msgstr "" + +#: thematic_areas/choices.py:28 +msgid "Arquitetura e urbanismo" +msgstr "" + +#: thematic_areas/choices.py:29 +msgid "Artes" +msgstr "" + +#: thematic_areas/choices.py:30 +msgid "Astronomia" +msgstr "" + +#: thematic_areas/choices.py:31 +msgid "Biofísica" +msgstr "" + +#: thematic_areas/choices.py:32 +msgid "Biologia geral" +msgstr "" + +#: thematic_areas/choices.py:33 +msgid "Bioquímica" +msgstr "" + +#: thematic_areas/choices.py:34 +msgid "Biotecnologia" +msgstr "" + +#: thematic_areas/choices.py:35 +msgid "Botânica" +msgstr "" + +#: thematic_areas/choices.py:36 +msgid "Ciência da computação" +msgstr "" + +#: thematic_areas/choices.py:37 +msgid "Ciência da informação" +msgstr "" + +#: thematic_areas/choices.py:38 +msgid "Ciência e tecnologia de alimentos" +msgstr "" + +#: thematic_areas/choices.py:39 +msgid "Ciência política" +msgstr "" + +#: thematic_areas/choices.py:40 +msgid "Ciências Ambientais" +msgstr "" + +#: thematic_areas/choices.py:41 +msgid "Comunicação" +msgstr "" + +#: thematic_areas/choices.py:42 +msgid "Demografia" +msgstr "" + +#: thematic_areas/choices.py:43 +msgid "Desenho industrial" +msgstr "" + +#: thematic_areas/choices.py:44 +msgid "Direito" +msgstr "" + +#: thematic_areas/choices.py:45 +msgid "Ecologia" +msgstr "" + +#: thematic_areas/choices.py:46 +msgid "Economia" +msgstr "" + +#: thematic_areas/choices.py:47 +msgid "Economia doméstica" +msgstr "" + +#: thematic_areas/choices.py:48 +msgid "Educação" +msgstr "" + +#: thematic_areas/choices.py:49 +msgid "Educação física" +msgstr "" + +#: thematic_areas/choices.py:50 +msgid "Enfermagem" +msgstr "" + +#: thematic_areas/choices.py:51 +msgid "Engenharia aeroespacial" +msgstr "" + +#: thematic_areas/choices.py:52 +msgid "Engenharia agrícola" +msgstr "" + +#: thematic_areas/choices.py:53 +msgid "Engenharia biomédica" +msgstr "" + +#: thematic_areas/choices.py:54 +msgid "Engenharia civil" +msgstr "" + +#: thematic_areas/choices.py:57 +msgid "Engenharia de materiais e metalúrgica" +msgstr "" + +#: thematic_areas/choices.py:59 +msgid "Engenharia de minas" +msgstr "" + +#: thematic_areas/choices.py:60 +msgid "Engenharia de produção" +msgstr "" + +#: thematic_areas/choices.py:61 +msgid "Engenharia de transportes" +msgstr "" + +#: thematic_areas/choices.py:62 +msgid "Engenharia elétrica" +msgstr "" + +#: thematic_areas/choices.py:63 +msgid "Engenharia mecânica" +msgstr "" + +#: thematic_areas/choices.py:64 +msgid "Engenharia naval e oceânica" +msgstr "" + +#: thematic_areas/choices.py:65 +msgid "Engenharia nuclear" +msgstr "" + +#: thematic_areas/choices.py:66 +msgid "Engenharia química" +msgstr "" + +#: thematic_areas/choices.py:67 +msgid "Engenharia sanitária" +msgstr "" + +#: thematic_areas/choices.py:68 +msgid "Ensino" +msgstr "" + +#: thematic_areas/choices.py:69 +msgid "Farmácia" +msgstr "" + +#: thematic_areas/choices.py:70 +msgid "Farmacologia" +msgstr "" + +#: thematic_areas/choices.py:71 +msgid "Filosofia" +msgstr "" + +#: thematic_areas/choices.py:72 +msgid "Física" +msgstr "" + +#: thematic_areas/choices.py:73 +msgid "Fisiologia" +msgstr "" + +#: thematic_areas/choices.py:74 +msgid "Fisioterapia e terapia ocupacional" +msgstr "" + +#: thematic_areas/choices.py:75 +msgid "Fonoaudiologia" +msgstr "" + +#: thematic_areas/choices.py:76 +msgid "Genética" +msgstr "" + +#: thematic_areas/choices.py:77 +msgid "Geociências" +msgstr "" + +#: thematic_areas/choices.py:78 +msgid "Geografia" +msgstr "" + +#: thematic_areas/choices.py:79 +msgid "História" +msgstr "" + +#: thematic_areas/choices.py:80 +msgid "Imunologia" +msgstr "" + +#: thematic_areas/choices.py:81 +msgid "Interdisciplinar" +msgstr "" + +#: thematic_areas/choices.py:82 +msgid "Letras" +msgstr "" + +#: thematic_areas/choices.py:83 +msgid "Linguística" +msgstr "" + +#: thematic_areas/choices.py:84 +msgid "Matemática" +msgstr "" + +#: thematic_areas/choices.py:85 +msgid "Materiais " +msgstr "" + +#: thematic_areas/choices.py:86 +msgid "Medicina" +msgstr "" + +#: thematic_areas/choices.py:87 +msgid "Medicina veterinária" +msgstr "" + +#: thematic_areas/choices.py:88 +msgid "Microbiologia" +msgstr "" + +#: thematic_areas/choices.py:89 +msgid "Morfologia" +msgstr "" + +#: thematic_areas/choices.py:90 +msgid "Museologia" +msgstr "" + +#: thematic_areas/choices.py:91 +msgid "Nutrição" +msgstr "" + +#: thematic_areas/choices.py:92 +msgid "Oceanografia" +msgstr "" + +#: thematic_areas/choices.py:93 +msgid "Odontologia" +msgstr "" + +#: thematic_areas/choices.py:94 +msgid "Parasitologia" +msgstr "" + +#: thematic_areas/choices.py:95 +msgid "Planejamento urbano e regional" +msgstr "" + +#: thematic_areas/choices.py:96 +msgid "Probabilidade e estatística" +msgstr "" + +#: thematic_areas/choices.py:97 +msgid "Psicologia" +msgstr "" + +#: thematic_areas/choices.py:98 +msgid "Química" +msgstr "" + +#: thematic_areas/choices.py:101 +msgid "Recursos florestais e engenharia florestal" +msgstr "" + +#: thematic_areas/choices.py:105 +msgid "Recursos pesqueiros e engenharia de pesca" +msgstr "" + +#: thematic_areas/choices.py:107 +msgid "Saúde coletiva" +msgstr "" + +#: thematic_areas/choices.py:108 +msgid "Serviço social" +msgstr "" + +#: thematic_areas/choices.py:109 +msgid "Sociologia" +msgstr "" + +#: thematic_areas/choices.py:110 +msgid "Teologia" +msgstr "" + +#: thematic_areas/choices.py:111 +msgid "Turismo" +msgstr "" + +#: thematic_areas/choices.py:112 +msgid "Zoologia" +msgstr "" + +#: thematic_areas/choices.py:113 +msgid "Zootecnia" +msgstr "" + +#: thematic_areas/choices.py:121 +msgid "Administraçao de Empresas" +msgstr "" + +#: thematic_areas/choices.py:122 +msgid "Administração de Setores Específicos" +msgstr "" + +#: thematic_areas/choices.py:123 +msgid "Administração Educacional" +msgstr "" + +#: thematic_areas/choices.py:124 +msgid "Administração Pública" +msgstr "" + +#: thematic_areas/choices.py:125 +msgid "Aerodinâmica" +msgstr "" + +#: thematic_areas/choices.py:126 +msgid "Agrometeorologia" +msgstr "" + +#: thematic_areas/choices.py:127 +msgid "Álgebra" +msgstr "" + +#: thematic_areas/choices.py:128 +msgid "Análise" +msgstr "" + +#: thematic_areas/choices.py:129 +msgid "Análise e Controle de Medicamentos" +msgstr "" + +#: thematic_areas/choices.py:130 +msgid "Análise Nutricional de População" +msgstr "" + +#: thematic_areas/choices.py:131 +msgid "Análise Toxicológica" +msgstr "" + +#: thematic_areas/choices.py:132 +msgid "Anatomia" +msgstr "" + +#: thematic_areas/choices.py:135 +msgid "Anatomia Patológica e Patologia Clínica" +msgstr "" + +#: thematic_areas/choices.py:139 +msgid "Antropologia das Populações Afro-Brasileiras" +msgstr "" + +#: thematic_areas/choices.py:141 +msgid "Antropologia Rural" +msgstr "" + +#: thematic_areas/choices.py:142 +msgid "Antropologia Urbana" +msgstr "" + +#: thematic_areas/choices.py:143 +msgid "Aplicações de Radioisótopos" +msgstr "" + +#: thematic_areas/choices.py:144 +msgid "Aquicultura" +msgstr "" + +#: thematic_areas/choices.py:147 +msgid "Áreas Clássicas de Fenomenologia e suas Aplicações" +msgstr "" + +#: thematic_areas/choices.py:149 +msgid "Arqueologia Histórica" +msgstr "" + +#: thematic_areas/choices.py:150 +msgid "Arqueologia Pré-Histórica" +msgstr "" + +#: thematic_areas/choices.py:151 +msgid "Arquivologia" +msgstr "" + +#: thematic_areas/choices.py:152 +msgid "Artes do Vídeo" +msgstr "" + +#: thematic_areas/choices.py:153 +msgid "Artes Plásticas" +msgstr "" + +#: thematic_areas/choices.py:154 +msgid "Astrofísica do Meio Interestelar" +msgstr "" + +#: thematic_areas/choices.py:155 +msgid "Astrofísica do Sistema Solar" +msgstr "" + +#: thematic_areas/choices.py:156 +msgid "Astrofísica Estelar" +msgstr "" + +#: thematic_areas/choices.py:157 +msgid "Astrofísica Extragaláctica" +msgstr "" + +#: thematic_areas/choices.py:160 +msgid "Astronomia de Posição e Mecânica Celeste" +msgstr "" + +#: thematic_areas/choices.py:162 +msgid "Biblioteconomia" +msgstr "" + +#: thematic_areas/choices.py:163 +msgid "Bioengenharia" +msgstr "" + +#: thematic_areas/choices.py:164 +msgid "Biofísica Celular" +msgstr "" + +#: thematic_areas/choices.py:165 +msgid "Biofísica de Processos e Sistemas" +msgstr "" + +#: thematic_areas/choices.py:166 +msgid "Biofísica Molecular" +msgstr "" + +#: thematic_areas/choices.py:169 +msgid "Biologia e Fisiologia dos Mircroorganismos" +msgstr "" + +#: thematic_areas/choices.py:171 +msgid "Biologia Molecular" +msgstr "" + +#: thematic_areas/choices.py:172 +msgid "Bioquímica da Nutrição" +msgstr "" + +#: thematic_areas/choices.py:173 +msgid "Bioquímica de Microorganismos" +msgstr "" + +#: thematic_areas/choices.py:174 +msgid "Botânica Aplicada" +msgstr "" + +#: thematic_areas/choices.py:175 +msgid "Bromatologia" +msgstr "" + +#: thematic_areas/choices.py:176 +msgid "Ciência de Alimentos" +msgstr "" + +#: thematic_areas/choices.py:177 +msgid "Ciência do Solo" +msgstr "" + +#: thematic_areas/choices.py:178 +msgid "Ciências Contábeis" +msgstr "" + +#: thematic_areas/choices.py:179 +msgid "Cinema" +msgstr "" + +#: thematic_areas/choices.py:182 +msgid "Circuitos Elétricos, Magnéticos e Eletrônicos" +msgstr "" + +#: thematic_areas/choices.py:184 +msgid "Cirurgia" +msgstr "" + +#: thematic_areas/choices.py:185 +msgid "Cirurgia Buco-Maxilo-Facial" +msgstr "" + +#: thematic_areas/choices.py:186 +msgid "Citologia e Biologia Celular" +msgstr "" + +#: thematic_areas/choices.py:187 +msgid "Clínica e Cirurgia Animal" +msgstr "" + +#: thematic_areas/choices.py:188 +msgid "Clínica Médica" +msgstr "" + +#: thematic_areas/choices.py:189 +msgid "Clínica Odontológica" +msgstr "" + +#: thematic_areas/choices.py:190 +msgid "Combustível Nuclear" +msgstr "" + +#: thematic_areas/choices.py:191 +msgid "Componentes da Dinâmica Demográfica" +msgstr "" + +#: thematic_areas/choices.py:192 +msgid "Comportamento Animal" +msgstr "" + +#: thematic_areas/choices.py:193 +msgid "Comportamento Político" +msgstr "" + +#: thematic_areas/choices.py:194 +msgid "Comunicação Visual" +msgstr "" + +#: thematic_areas/choices.py:195 +msgid "Conservação da Natureza" +msgstr "" + +#: thematic_areas/choices.py:196 +msgid "Construção Civil" +msgstr "" + +#: thematic_areas/choices.py:197 +msgid "Construções Rurais e Ambiência" +msgstr "" + +#: thematic_areas/choices.py:200 +msgid "Crescimento, Flutuações e Planejamento Econômico" +msgstr "" + +#: thematic_areas/choices.py:202 +msgid "Currículo" +msgstr "" + +#: thematic_areas/choices.py:203 +msgid "Dança" +msgstr "" + +#: thematic_areas/choices.py:204 +msgid "Demografia Histórica" +msgstr "" + +#: thematic_areas/choices.py:205 +msgid "Desenho de Produto" +msgstr "" + +#: thematic_areas/choices.py:208 +msgid "Desnutrição e Desenvolvimento Fisiológico" +msgstr "" + +#: thematic_areas/choices.py:210 +msgid "Dietética" +msgstr "" + +#: thematic_areas/choices.py:211 +msgid "Dinâmica de Vôo" +msgstr "" + +#: thematic_areas/choices.py:212 +msgid "Direito Privado" +msgstr "" + +#: thematic_areas/choices.py:213 +msgid "Direito Público" +msgstr "" + +#: thematic_areas/choices.py:214 +msgid "Direitos Especiais" +msgstr "" + +#: thematic_areas/choices.py:215 +msgid "Ecologia Aplicada" +msgstr "" + +#: thematic_areas/choices.py:216 +msgid "Ecologia de Ecossistemas" +msgstr "" + +#: thematic_areas/choices.py:219 +msgid "Ecologia dos Animais Domésticos e Etologia" +msgstr "" + +#: thematic_areas/choices.py:221 +msgid "Ecologia Teórica" +msgstr "" + +#: thematic_areas/choices.py:224 +msgid "Economia Agrária e dos Recursos Naturais" +msgstr "" + +#: thematic_areas/choices.py:226 +msgid "Economia de Recursos Humanos" +msgstr "" + +#: thematic_areas/choices.py:227 +msgid "Economia do Bem-Estar Social" +msgstr "" + +#: thematic_areas/choices.py:228 +msgid "Economia Industrial" +msgstr "" + +#: thematic_areas/choices.py:229 +msgid "Economia Internacional" +msgstr "" + +#: thematic_areas/choices.py:230 +msgid "Economia Monetária e Fiscal" +msgstr "" + +#: thematic_areas/choices.py:231 +msgid "Economia Regional e Urbana" +msgstr "" + +#: thematic_areas/choices.py:232 +msgid "Educação Artística" +msgstr "" + +#: thematic_areas/choices.py:235 +msgid "Eletrônica Industrial, Sistemas e Controles Eletrônicos" +msgstr "" + +#: thematic_areas/choices.py:237 +msgid "Embriologia" +msgstr "" + +#: thematic_areas/choices.py:238 +msgid "Endodontia" +msgstr "" + +#: thematic_areas/choices.py:239 +msgid "Energia de Biomassa Florestal" +msgstr "" + +#: thematic_areas/choices.py:240 +msgid "Energização Rural" +msgstr "" + +#: thematic_areas/choices.py:241 +msgid "Enfermagem de Doenças Contagiosas" +msgstr "" + +#: thematic_areas/choices.py:242 +msgid "Enfermagem de Saúde Pública" +msgstr "" + +#: thematic_areas/choices.py:243 +msgid "Enfermagem Médico-Cirúrgica" +msgstr "" + +#: thematic_areas/choices.py:244 +msgid "Enfermagem Obstétrica" +msgstr "" + +#: thematic_areas/choices.py:245 +msgid "Enfermagem Pediátrica" +msgstr "" + +#: thematic_areas/choices.py:246 +msgid "Enfermagem Psiquiátrica" +msgstr "" + +#: thematic_areas/choices.py:247 +msgid "Engenharia de Água e Solo" +msgstr "" + +#: thematic_areas/choices.py:248 +msgid "Engenharia de Alimentos" +msgstr "" + +#: thematic_areas/choices.py:249 +msgid "Engenharia de Pesca" +msgstr "" + +#: thematic_areas/choices.py:252 +msgid "Engenharia de Processamento de Produtos Agrícolas" +msgstr "" + +#: thematic_areas/choices.py:254 +msgid "Engenharia do Produto" +msgstr "" + +#: thematic_areas/choices.py:255 +msgid "Engenharia Econômica" +msgstr "" + +#: thematic_areas/choices.py:256 +msgid "Engenharia Hidráulica" +msgstr "" + +#: thematic_areas/choices.py:257 +msgid "Engenharia Médica" +msgstr "" + +#: thematic_areas/choices.py:258 +msgid "Engenharia Térmica" +msgstr "" + +#: thematic_areas/choices.py:259 +msgid "Ensino-Aprendizagem" +msgstr "" + +#: thematic_areas/choices.py:262 +msgid "Entomologia e Malacologia de Parasitos e Vetores" +msgstr "" + +#: thematic_areas/choices.py:264 +msgid "Enzimologia" +msgstr "" + +#: thematic_areas/choices.py:265 +msgid "Epidemiologia" +msgstr "" + +#: thematic_areas/choices.py:266 +msgid "Epistemologia" +msgstr "" + +#: thematic_areas/choices.py:267 +msgid "Estado e Governo" +msgstr "" + +#: thematic_areas/choices.py:268 +msgid "Estatística" +msgstr "" + +#: thematic_areas/choices.py:269 +msgid "Estruturas" +msgstr "" + +#: thematic_areas/choices.py:270 +msgid "Estruturas Aeroespaciais" +msgstr "" + +#: thematic_areas/choices.py:271 +msgid "Estruturas Navais e Oceânicas" +msgstr "" + +#: thematic_areas/choices.py:273 +msgid "Etnofarmacologia" +msgstr "" + +#: thematic_areas/choices.py:274 +msgid "Etnologia Indígena" +msgstr "" + +#: thematic_areas/choices.py:275 +msgid "Extensão Rural" +msgstr "" + +#: thematic_areas/choices.py:276 +msgid "Farmacognosia" +msgstr "" + +#: thematic_areas/choices.py:277 +msgid "Farmacologia Autonômica" +msgstr "" + +#: thematic_areas/choices.py:278 +msgid "Farmacologia Bioquímica e Molecular" +msgstr "" + +#: thematic_areas/choices.py:279 +msgid "Farmacologia Cardiorenal" +msgstr "" + +#: thematic_areas/choices.py:280 +msgid "Farmacologia Clínica" +msgstr "" + +#: thematic_areas/choices.py:281 +msgid "Farmacologia Geral" +msgstr "" + +#: thematic_areas/choices.py:282 +msgid "Farmacotecnia" +msgstr "" + +#: thematic_areas/choices.py:283 +msgid "Fenômenos de Transporte" +msgstr "" + +#: thematic_areas/choices.py:284 +msgid "Filosofia Brasileira" +msgstr "" + +#: thematic_areas/choices.py:285 +msgid "Filosofia da Linguagem" +msgstr "" + +#: thematic_areas/choices.py:286 +msgid "Física Atômica e Molecular" +msgstr "" + +#: thematic_areas/choices.py:287 +msgid "Física da Matéria Condensada" +msgstr "" + +#: thematic_areas/choices.py:290 +msgid "Física das Partículas Elementares e Campos" +msgstr "" + +#: thematic_areas/choices.py:294 +msgid "Física dos Fluídos, Física de Plasmas e Descargas Elétricas" +msgstr "" + +#: thematic_areas/choices.py:296 +msgid "Física Geral" +msgstr "" + +#: thematic_areas/choices.py:297 +msgid "Física Nuclear" +msgstr "" + +#: thematic_areas/choices.py:298 +msgid "Físico-Química" +msgstr "" + +#: thematic_areas/choices.py:299 +msgid "Fisiologia Comparada" +msgstr "" + +#: thematic_areas/choices.py:300 +msgid "Fisiologia de Orgãos e Sistemas" +msgstr "" + +#: thematic_areas/choices.py:301 +msgid "Fisiologia do Esforço" +msgstr "" + +#: thematic_areas/choices.py:302 +msgid "Fisiologia dos Grupos Recentes" +msgstr "" + +#: thematic_areas/choices.py:303 +msgid "Fisiologia Geral" +msgstr "" + +#: thematic_areas/choices.py:304 +msgid "Fisiologia Vegetal" +msgstr "" + +#: thematic_areas/choices.py:305 +msgid "Fitogeografia" +msgstr "" + +#: thematic_areas/choices.py:306 +msgid "Fitossanidade" +msgstr "" + +#: thematic_areas/choices.py:307 +msgid "Fitotecnia" +msgstr "" + +#: thematic_areas/choices.py:308 +msgid "Floricultura, Parques e Jardins" +msgstr "" + +#: thematic_areas/choices.py:309 +msgid "Fontes de Dados Demográficos" +msgstr "" + +#: thematic_areas/choices.py:310 +msgid "Fotografia" +msgstr "" + +#: thematic_areas/choices.py:311 +msgid "Fundamentos da Educação" +msgstr "" + +#: thematic_areas/choices.py:312 +msgid "Fundamentos da Sociologia" +msgstr "" + +#: thematic_areas/choices.py:315 +msgid "Fundamentos de Arquitetura e Urbanismo" +msgstr "" + +#: thematic_areas/choices.py:319 +msgid "Fundamentos do Planejamento Urbano e Regional" +msgstr "" + +#: thematic_areas/choices.py:321 +msgid "Fundamentos do Serviço Social" +msgstr "" + +#: thematic_areas/choices.py:322 +msgid "Fundamentos e Críticas das Artes" +msgstr "" + +#: thematic_areas/choices.py:323 +msgid "Fundamentos e Medidas da Psicologia" +msgstr "" + +#: thematic_areas/choices.py:324 +msgid "Fusão Controlada" +msgstr "" + +#: thematic_areas/choices.py:325 +msgid "Genética Animal" +msgstr "" + +#: thematic_areas/choices.py:328 +msgid "Genética e Melhoramento dos Animais Domésticos" +msgstr "" + +#: thematic_areas/choices.py:330 +msgid "Genética Humana e Médica" +msgstr "" + +#: thematic_areas/choices.py:333 +msgid "Genética Molecular e de Microorganismos" +msgstr "" + +#: thematic_areas/choices.py:335 +msgid "Genética Quantitativa" +msgstr "" + +#: thematic_areas/choices.py:336 +msgid "Genética Vegetal" +msgstr "" + +#: thematic_areas/choices.py:337 +msgid "Geodésia" +msgstr "" + +#: thematic_areas/choices.py:338 +msgid "Geofísica" +msgstr "" + +#: thematic_areas/choices.py:339 +msgid "Geografia Física" +msgstr "" + +#: thematic_areas/choices.py:340 +msgid "Geografia Humana" +msgstr "" + +#: thematic_areas/choices.py:341 +msgid "Geografia Regional" +msgstr "" + +#: thematic_areas/choices.py:342 +msgid "Geologia" +msgstr "" + +#: thematic_areas/choices.py:343 +msgid "Geometria e Topologia" +msgstr "" + +#: thematic_areas/choices.py:344 +msgid "Geotécnica" +msgstr "" + +#: thematic_areas/choices.py:345 +msgid "Gerência de Produção" +msgstr "" + +#: thematic_areas/choices.py:346 +msgid "Helmintologia de Parasitos" +msgstr "" + +#: thematic_areas/choices.py:349 +msgid "Hidrodinâmica de Navios e Sistemas Oceânicos" +msgstr "" + +#: thematic_areas/choices.py:351 +msgid "Histologia" +msgstr "" + +#: thematic_areas/choices.py:352 +msgid "História Antiga e Medieval" +msgstr "" + +#: thematic_areas/choices.py:353 +msgid "História da América" +msgstr "" + +#: thematic_areas/choices.py:354 +msgid "História da Filosofia" +msgstr "" + +#: thematic_areas/choices.py:355 +msgid "História da Teologia" +msgstr "" + +#: thematic_areas/choices.py:356 +msgid "História das Ciências" +msgstr "" + +#: thematic_areas/choices.py:357 +msgid "História do Brasil" +msgstr "" + +#: thematic_areas/choices.py:358 +msgid "História Moderna e Contemporânea" +msgstr "" + +#: thematic_areas/choices.py:359 +msgid "Imunogenética" +msgstr "" + +#: thematic_areas/choices.py:360 +msgid "Imunologia Aplicada" +msgstr "" + +#: thematic_areas/choices.py:361 +msgid "Imunologia Celular" +msgstr "" + +#: thematic_areas/choices.py:362 +msgid "Imunoquímica" +msgstr "" + +#: thematic_areas/choices.py:363 +msgid "Infra-Estrutura de Transportes" +msgstr "" + +#: thematic_areas/choices.py:366 +msgid "Inspeção de Produtos de Origem Animal" +msgstr "" + +#: thematic_areas/choices.py:370 +msgid "Instalações e Equipamentos Metalúrgicos" +msgstr "" + +#: thematic_areas/choices.py:372 +msgid "Instrumentação Astronômica" +msgstr "" + +#: thematic_areas/choices.py:373 +msgid "Jornalismo e Editoração" +msgstr "" + +#: thematic_areas/choices.py:374 +msgid "Lavra" +msgstr "" + +#: thematic_areas/choices.py:375 +msgid "Língua Portuguesa" +msgstr "" + +#: thematic_areas/choices.py:376 +msgid "Línguas Clássicas" +msgstr "" + +#: thematic_areas/choices.py:377 +msgid "Línguas Estrangeiras Modernas" +msgstr "" + +#: thematic_areas/choices.py:378 +msgid "Línguas Indígenas" +msgstr "" + +#: thematic_areas/choices.py:379 +msgid "Linguística Aplicada" +msgstr "" + +#: thematic_areas/choices.py:380 +msgid "Linguística Histórica" +msgstr "" + +#: thematic_areas/choices.py:381 +msgid "Literatura Brasileira" +msgstr "" + +#: thematic_areas/choices.py:382 +msgid "Literatura Comparada" +msgstr "" + +#: thematic_areas/choices.py:383 +msgid "Literaturas Clássicas" +msgstr "" + +#: thematic_areas/choices.py:384 +msgid "Literaturas Estrangeiras Modernas" +msgstr "" + +#: thematic_areas/choices.py:385 +msgid "Lógica" +msgstr "" + +#: thematic_areas/choices.py:386 +msgid "Manejo Florestal" +msgstr "" + +#: thematic_areas/choices.py:387 +msgid "Máquinas e Implementos Agrícolas" +msgstr "" + +#: thematic_areas/choices.py:388 +msgid "Máquinas Marítimas" +msgstr "" + +#: thematic_areas/choices.py:389 +msgid "Matemática Aplicada" +msgstr "" + +#: thematic_areas/choices.py:390 +msgid "Matemática da Computação" +msgstr "" + +#: thematic_areas/choices.py:393 +msgid "Materiais e Processos para Engenharia Aeronáutica e Aeroespacial" +msgstr "" + +#: thematic_areas/choices.py:395 +msgid "Materiais Elétricos" +msgstr "" + +#: thematic_areas/choices.py:396 +msgid "Materiais não-Metálicos" +msgstr "" + +#: thematic_areas/choices.py:397 +msgid "Materiais Odontológicos" +msgstr "" + +#: thematic_areas/choices.py:398 +msgid "Mecânica dos Sólidos" +msgstr "" + +#: thematic_areas/choices.py:399 +msgid "Medicina Legal e Deontologia" +msgstr "" + +#: thematic_areas/choices.py:400 +msgid "Medicina Preventiva" +msgstr "" + +#: thematic_areas/choices.py:401 +msgid "Medicina Veterinária Preventiva" +msgstr "" + +#: thematic_areas/choices.py:404 +msgid "Medidas Elétricas, Magnéticas e Eletrônicas; Instrumentação" +msgstr "" + +#: thematic_areas/choices.py:406 +msgid "Metabolismo e Bioenergética" +msgstr "" + +#: thematic_areas/choices.py:407 +msgid "Metafísica" +msgstr "" + +#: thematic_areas/choices.py:408 +msgid "Metalurgia de Transformação" +msgstr "" + +#: thematic_areas/choices.py:409 +msgid "Metalurgia Extrativa" +msgstr "" + +#: thematic_areas/choices.py:410 +msgid "Metalurgia Física" +msgstr "" + +#: thematic_areas/choices.py:411 +msgid "Meteorologia" +msgstr "" + +#: thematic_areas/choices.py:412 +msgid "Metodologia e Técnicas da Computação" +msgstr "" + +#: thematic_areas/choices.py:415 +msgid "Metodos e Técnicas do Planejamento Urbano e Regional" +msgstr "" + +#: thematic_areas/choices.py:417 +msgid "Métodos Quantitativos em Economia" +msgstr "" + +#: thematic_areas/choices.py:418 +msgid "Microbiologia Aplicada" +msgstr "" + +#: thematic_areas/choices.py:419 +msgid "Morfologia dos Grupos Recentes" +msgstr "" + +#: thematic_areas/choices.py:420 +msgid "Morfologia Vegetal" +msgstr "" + +#: thematic_areas/choices.py:421 +msgid "Música" +msgstr "" + +#: thematic_areas/choices.py:422 +msgid "Mutagênese" +msgstr "" + +#: thematic_areas/choices.py:423 +msgid "Neuropsicofarmacologia" +msgstr "" + +#: thematic_areas/choices.py:424 +msgid "Nupcialidade e Família" +msgstr "" + +#: thematic_areas/choices.py:425 +msgid "Nutrição e Alimentação Animal" +msgstr "" + +#: thematic_areas/choices.py:426 +msgid "Oceanografia Biológica" +msgstr "" + +#: thematic_areas/choices.py:427 +msgid "Oceanografia Física" +msgstr "" + +#: thematic_areas/choices.py:428 +msgid "Oceanografia Geológica" +msgstr "" + +#: thematic_areas/choices.py:429 +msgid "Oceanografia Química" +msgstr "" + +#: thematic_areas/choices.py:430 +msgid "Odontologia Social e Preventiva" +msgstr "" + +#: thematic_areas/choices.py:431 +msgid "Odontopediatria" +msgstr "" + +#: thematic_areas/choices.py:432 +msgid "Ópera" +msgstr "" + +#: thematic_areas/choices.py:433 +msgid "Operações de Transportes" +msgstr "" + +#: thematic_areas/choices.py:436 +msgid "Operações Industriais e Equipamentos para Engenharia Química" +msgstr "" + +#: thematic_areas/choices.py:438 +msgid "Orientação e Aconselhamento" +msgstr "" + +#: thematic_areas/choices.py:439 +msgid "Ortodontia" +msgstr "" + +#: thematic_areas/choices.py:440 +msgid "Outras Literaturas Vernáculas" +msgstr "" + +#: thematic_areas/choices.py:441 +msgid "Outras Sociologias Específicas" +msgstr "" + +#: thematic_areas/choices.py:442 +msgid "Paisagismo" +msgstr "" + +#: thematic_areas/choices.py:443 +msgid "Paleobotânica" +msgstr "" + +#: thematic_areas/choices.py:444 +msgid "Paleozoologia" +msgstr "" + +#: thematic_areas/choices.py:445 +msgid "Pastagem e Forragicultura" +msgstr "" + +#: thematic_areas/choices.py:446 +msgid "Patologia Animal" +msgstr "" + +#: thematic_areas/choices.py:447 +msgid "Periodontia" +msgstr "" + +#: thematic_areas/choices.py:448 +msgid "Pesquisa Mineral" +msgstr "" + +#: thematic_areas/choices.py:449 +msgid "Pesquisa Operacional" +msgstr "" + +#: thematic_areas/choices.py:450 +msgid "Planejamento de Transportes" +msgstr "" + +#: thematic_areas/choices.py:451 +msgid "Planejamento e Avaliação Educacional" +msgstr "" + +#: thematic_areas/choices.py:452 +msgid "Política Internacional" +msgstr "" + +#: thematic_areas/choices.py:453 +msgid "Política Pública e População" +msgstr "" + +#: thematic_areas/choices.py:454 +msgid "Políticas Públicas" +msgstr "" + +#: thematic_areas/choices.py:455 +msgid "Probabilidade" +msgstr "" + +#: thematic_areas/choices.py:458 +msgid "Probabilidade e Estatística Aplicadas" +msgstr "" + +#: thematic_areas/choices.py:460 +msgid "Processos de Fabricação" +msgstr "" + +#: thematic_areas/choices.py:463 +msgid "Processos Industriais de Engenharia Química" +msgstr "" + +#: thematic_areas/choices.py:465 +msgid "Produção Animal" +msgstr "" + +#: thematic_areas/choices.py:466 +msgid "Programação Visual" +msgstr "" + +#: thematic_areas/choices.py:467 +msgid "Projetos de Arquitetura e Urbanismo" +msgstr "" + +#: thematic_areas/choices.py:468 +msgid "Projetos de Máquinas" +msgstr "" + +#: thematic_areas/choices.py:471 +msgid "Projetos de Navios e de Sistemas Oceânicos" +msgstr "" + +#: thematic_areas/choices.py:473 +msgid "Propulsão Aeroespacial" +msgstr "" + +#: thematic_areas/choices.py:474 +msgid "Protozoologia de Parasitos" +msgstr "" + +#: thematic_areas/choices.py:475 +msgid "Psicolinguística" +msgstr "" + +#: thematic_areas/choices.py:476 +msgid "Psicologia Cognitiva" +msgstr "" + +#: thematic_areas/choices.py:477 +msgid "Psicologia Comparativa" +msgstr "" + +#: thematic_areas/choices.py:478 +msgid "Psicologia do Desenvolvimento Humano" +msgstr "" + +#: thematic_areas/choices.py:481 +msgid "Psicologia do Ensino e da Aprendizagem" +msgstr "" + +#: thematic_areas/choices.py:485 +msgid "Psicologia do Trabalho e Organizacional" +msgstr "" + +#: thematic_areas/choices.py:487 +msgid "Psicologia Experimental" +msgstr "" + +#: thematic_areas/choices.py:488 +msgid "Psicologia Fisiológica" +msgstr "" + +#: thematic_areas/choices.py:489 +msgid "Psicologia Social" +msgstr "" + +#: thematic_areas/choices.py:490 +msgid "Psiquiatria" +msgstr "" + +#: thematic_areas/choices.py:491 +msgid "Química Analítica" +msgstr "" + +#: thematic_areas/choices.py:492 +msgid "Química de Macromoléculas" +msgstr "" + +#: thematic_areas/choices.py:493 +msgid "Química Inorgânica" +msgstr "" + +#: thematic_areas/choices.py:494 +msgid "Química Orgânica" +msgstr "" + +#: thematic_areas/choices.py:495 +msgid "Rádio e Televisão" +msgstr "" + +#: thematic_areas/choices.py:496 +msgid "Radiologia e Fotobiologia" +msgstr "" + +#: thematic_areas/choices.py:497 +msgid "Radiologia Médica" +msgstr "" + +#: thematic_areas/choices.py:498 +msgid "Radiologia Odontológica" +msgstr "" + +#: thematic_areas/choices.py:499 +msgid "Recursos Hídricos" +msgstr "" + +#: thematic_areas/choices.py:502 +msgid "Recursos Pesqueiros de Águas Interiores" +msgstr "" + +#: thematic_areas/choices.py:504 +msgid "Recursos Pesqueiros Marinhos" +msgstr "" + +#: thematic_areas/choices.py:505 +msgid "Relações Públicas e Propaganda" +msgstr "" + +#: thematic_areas/choices.py:506 +msgid "Reprodução Animal" +msgstr "" + +#: thematic_areas/choices.py:507 +msgid "Saneamento Ambiental" +msgstr "" + +#: thematic_areas/choices.py:508 +msgid "Saneamento Básico" +msgstr "" + +#: thematic_areas/choices.py:509 +msgid "Saúde Materno-Infantil" +msgstr "" + +#: thematic_areas/choices.py:511 +msgid "Serviço Social Aplicado" +msgstr "" + +#: thematic_areas/choices.py:512 +msgid "Serviços Urbanos e Regionais" +msgstr "" + +#: thematic_areas/choices.py:513 +msgid "Silvicultura" +msgstr "" + +#: thematic_areas/choices.py:514 +msgid "Sistemas Aeroespaciais" +msgstr "" + +#: thematic_areas/choices.py:515 +msgid "Sistemas de Computação" +msgstr "" + +#: thematic_areas/choices.py:516 +msgid "Sistemas Elétricos de Potência" +msgstr "" + +#: thematic_areas/choices.py:517 +msgid "Sociolinguística e Dialetologia" +msgstr "" + +#: thematic_areas/choices.py:518 +msgid "Sociologia da Saúde" +msgstr "" + +#: thematic_areas/choices.py:519 +msgid "Sociologia do Conhecimento" +msgstr "" + +#: thematic_areas/choices.py:520 +msgid "Sociologia do Desenvolvimento" +msgstr "" + +#: thematic_areas/choices.py:521 +msgid "Sociologia Rural" +msgstr "" + +#: thematic_areas/choices.py:522 +msgid "Sociologia Urbana" +msgstr "" + +#: thematic_areas/choices.py:523 +msgid "Taxonomia dos Grupos Recentes" +msgstr "" + +#: thematic_areas/choices.py:524 +msgid "Taxonomia Vegetal" +msgstr "" + +#: thematic_areas/choices.py:525 +msgid "Teatro" +msgstr "" + +#: thematic_areas/choices.py:526 +msgid "Técnicas e Operações Florestais" +msgstr "" + +#: thematic_areas/choices.py:527 +msgid "Tecnologia de Alimentos" +msgstr "" + +#: thematic_areas/choices.py:530 +msgid "Tecnologia de Arquitetura e Urbanismo" +msgstr "" + +#: thematic_areas/choices.py:534 +msgid "Tecnologia de Construção Naval e de Sistemas Oceânicos" +msgstr "" + +#: thematic_areas/choices.py:536 +msgid "Tecnologia de Reatores" +msgstr "" + +#: thematic_areas/choices.py:539 +msgid "Tecnologia e Utilização de Produtos Florestais" +msgstr "" + +#: thematic_areas/choices.py:541 +msgid "Tecnologia Química" +msgstr "" + +#: thematic_areas/choices.py:542 +msgid "Telecomunicações" +msgstr "" + +#: thematic_areas/choices.py:543 +msgid "Teologia Moral" +msgstr "" + +#: thematic_areas/choices.py:544 +msgid "Teologia Pastoral" +msgstr "" + +#: thematic_areas/choices.py:545 +msgid "Teologia Sistemática" +msgstr "" + +#: thematic_areas/choices.py:546 +msgid "Teoria Antropológica" +msgstr "" + +#: thematic_areas/choices.py:547 +msgid "Teoria da Computação" +msgstr "" + +#: thematic_areas/choices.py:548 +msgid "Teoria da Comunicação" +msgstr "" + +#: thematic_areas/choices.py:549 +msgid "Teoria da Informação" +msgstr "" + +#: thematic_areas/choices.py:550 +msgid "Teoria do Direito" +msgstr "" + +#: thematic_areas/choices.py:551 +msgid "Teoria e Análise Linguística" +msgstr "" + +#: thematic_areas/choices.py:552 +msgid "Teoria e Filosofia da História" +msgstr "" + +#: thematic_areas/choices.py:553 +msgid "Teoria e Método em Arqueologia" +msgstr "" + +#: thematic_areas/choices.py:554 +msgid "Teoria Econômica" +msgstr "" + +#: thematic_areas/choices.py:555 +msgid "Teoria Literária" +msgstr "" + +#: thematic_areas/choices.py:556 +msgid "Teoria Política" +msgstr "" + +#: thematic_areas/choices.py:557 +msgid "Tópicos Específicos de Educação" +msgstr "" + +#: thematic_areas/choices.py:558 +msgid "Toxicologia" +msgstr "" + +#: thematic_areas/choices.py:561 +msgid "Tratamento de Águas de Abastecimento e Residuárias" +msgstr "" + +#: thematic_areas/choices.py:563 +msgid "Tratamento de Minérios" +msgstr "" + +#: thematic_areas/choices.py:564 +msgid "Tratamento e Prevenção Psicológica" +msgstr "" + +#: thematic_areas/choices.py:565 +msgid "Veículos e Equipamentos de Controle" +msgstr "" + +#: thematic_areas/choices.py:566 +msgid "Zoologia Aplicada" +msgstr "" + +#: thematic_areas/choices.py:574 +msgid "Bengali" +msgstr "" + +#: thematic_areas/choices.py:577 +msgid "Dinamarquês" +msgstr "" + +#: thematic_areas/choices.py:583 +msgid "Grego" +msgstr "" + +#: thematic_areas/choices.py:586 +msgid "Indiano" +msgstr "" + +#: thematic_areas/choices.py:587 +msgid "Indonésio" +msgstr "" + +#: thematic_areas/choices.py:591 +msgid "Norueguês" +msgstr "" + +#: thematic_areas/choices.py:598 +msgid "Tailandês" +msgstr "" + +#: thematic_areas/choices.py:599 +msgid "Tcheco" +msgstr "" + +#: thematic_areas/choices.py:606 thematic_areas/models.py:130 +msgid "Level 0" +msgstr "" + +#: thematic_areas/choices.py:607 thematic_areas/models.py:139 +msgid "Level 1" +msgstr "" + +#: thematic_areas/choices.py:608 thematic_areas/models.py:148 +msgid "Level 2" +msgstr "" + +#: thematic_areas/choices.py:609 +msgid "Level 3" +msgstr "" + +#: thematic_areas/models.py:15 thematic_areas/models.py:157 +#: thematic_areas/wagtail_hooks.py:142 +msgid "Thematic Area" +msgstr "" + +#: thematic_areas/models.py:23 +msgid "Origin Data Base" +msgstr "" + +#: thematic_areas/models.py:25 +msgid "Level" +msgstr "" + +#: thematic_areas/models.py:36 thematic_areas/wagtail_hooks.py:42 +msgid "Generic Thematic Area" +msgstr "" + +#: thematic_areas/models.py:37 thematic_areas/wagtail_hooks.py:99 +msgid "Generic Thematic Areas" +msgstr "" + +#: thematic_areas/models.py:90 thematic_areas/models.py:217 +msgid "Attachment" +msgstr "" + +#: thematic_areas/models.py:110 thematic_areas/wagtail_hooks.py:81 +msgid "Generic Thematic Areas Upload" +msgstr "" + +#: thematic_areas/models.py:134 thematic_areas/models.py:143 +#: thematic_areas/models.py:152 +msgid "" +"Here the thematic colleges of CAPES must be registered, more about these " +"areas access: https://www.gov.br/capes/pt-br/acesso-a-informacao/acoes-e-" +"programas/avaliacao/sobre-a-avaliacao/areas-avaliacao/sobre-as-areas-de-" +"avaliacao/sobre-as-areas-de-avaliacao" +msgstr "" + +#: thematic_areas/models.py:229 thematic_areas/wagtail_hooks.py:178 +msgid "Thematic Areas Upload" +msgstr "" + +#: thematic_areas/templates/modeladmin/generic_thematic_areas/generic_thematic_areas_file/index.html:6 +#: thematic_areas/templates/modeladmin/thematic_areas/thematic_areas_file/index.html:6 +msgid "Download CSV Example" +msgstr "" + +#: tracker/choices.py:9 +msgid "error" +msgstr "" + +#: tracker/choices.py:10 +msgid "warning" +msgstr "" + +#: tracker/choices.py:11 +msgid "info" +msgstr "" + +#: tracker/choices.py:12 +msgid "exception" +msgstr "" + +#: tracker/choices.py:24 +msgid "To reprocess" +msgstr "" + +#: tracker/choices.py:25 +msgid "To do" +msgstr "" + +#: tracker/choices.py:26 +msgid "Done" +msgstr "" + +#: tracker/choices.py:27 +msgid "Doing" +msgstr "" + +#: tracker/choices.py:28 +msgid "Pending" +msgstr "" + +#: tracker/choices.py:29 +msgid "ignored" +msgstr "" + +#: tracker/models.py:52 +msgid "Exception Type" +msgstr "" + +#: tracker/models.py:53 +msgid "Exception Msg" +msgstr "" + +#: tracker/models.py:102 +msgid "Message" +msgstr "" + +#: tracker/models.py:104 +msgid "Message type" +msgstr "" + +#: tracker/wagtail_hooks.py:18 +msgid "Unexpected Events" +msgstr "" + +#: tracker/wagtail_hooks.py:46 +msgid "Unexpected errors" +msgstr "" + +#: vocabulary/models.py:11 +msgid "Vocabulary name" +msgstr "" + +#: vocabulary/models.py:13 +msgid "Vocabulary acronym" +msgstr "" + +#: vocabulary/models.py:105 vocabulary/wagtail_hooks.py:22 +#: vocabulary/wagtail_hooks.py:68 +msgid "Vocabulary" +msgstr "" + +#: vocabulary/wagtail_hooks.py:48 +msgid "Keyword" +msgstr "" + +#: xmlsps/models.py:96 +msgid "Unable to get xml with pre (XMLVersion) {}: {} {}" +msgstr "" + +#: xmlsps/wagtail_hooks.py:19 +msgid "XMLVersion" +msgstr "" From ec9fc365d8332516d6f3355cf154e22618c0b8d7 Mon Sep 17 00:00:00 2001 From: Rafael JPD Date: Sun, 7 Apr 2024 22:25:22 -0300 Subject: [PATCH 05/40] =?UTF-8?q?Adiciona=20diret=C3=B3rio=20de=20document?= =?UTF-8?q?a=C3=A7=C3=B5es?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/Makefile | 29 ++++++++++++++++++++++ docs/__init__.py | 1 + docs/conf.py | 64 ++++++++++++++++++++++++++++++++++++++++++++++++ docs/howto.rst | 38 ++++++++++++++++++++++++++++ docs/index.rst | 23 +++++++++++++++++ docs/make.bat | 46 ++++++++++++++++++++++++++++++++++ docs/users.rst | 15 ++++++++++++ 7 files changed, 216 insertions(+) create mode 100644 docs/Makefile create mode 100644 docs/__init__.py create mode 100644 docs/conf.py create mode 100644 docs/howto.rst create mode 100644 docs/index.rst create mode 100644 docs/make.bat create mode 100644 docs/users.rst diff --git a/docs/Makefile b/docs/Makefile new file mode 100644 index 0000000..6957700 --- /dev/null +++ b/docs/Makefile @@ -0,0 +1,29 @@ +# Minimal makefile for Sphinx documentation +# + +# You can set these variables from the command line, and also +# from the environment for the first two. +SPHINXOPTS ?= +SPHINXBUILD ?= sphinx-build +SOURCEDIR = . +BUILDDIR = ./_build +APP = /app + +.PHONY: help livehtml apidocs Makefile + +# Put it first so that "make" without argument is like "make help". +help: + @$(SPHINXBUILD) -M help "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O) -c . + +# Build, watch and serve docs with live reload +livehtml: + sphinx-autobuild -b html --host 0.0.0.0 --port 9000 --watch $(APP) -c . $(SOURCEDIR) $(BUILDDIR)/html + +# Outputs rst files from django application code +apidocs: + sphinx-apidoc -o $(SOURCEDIR)/api $(APP) + +# Catch-all target: route all unknown targets to Sphinx using the new +# "make mode" option. $(O) is meant as a shortcut for $(SPHINXOPTS). +%: Makefile + @$(SPHINXBUILD) -M $@ "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O) -c . diff --git a/docs/__init__.py b/docs/__init__.py new file mode 100644 index 0000000..8772c82 --- /dev/null +++ b/docs/__init__.py @@ -0,0 +1 @@ +# Included so that Django's startproject comment runs against the docs directory diff --git a/docs/conf.py b/docs/conf.py new file mode 100644 index 0000000..51cd921 --- /dev/null +++ b/docs/conf.py @@ -0,0 +1,64 @@ +# Configuration file for the Sphinx documentation builder. +# +# This file only contains a selection of the most common options. For a full +# list see the documentation: +# https://www.sphinx-doc.org/en/master/usage/configuration.html + +# -- Path setup -------------------------------------------------------------- + +# If extensions (or modules to document with autodoc) are in another directory, +# add these directories to sys.path here. If the directory is relative to the +# documentation root, use os.path.abspath to make it absolute, like shown here. + +import os +import sys + +import django + +if os.getenv("READTHEDOCS", default=False) == "True": + sys.path.insert(0, os.path.abspath("..")) + os.environ["DJANGO_READ_DOT_ENV_FILE"] = "True" + os.environ["USE_DOCKER"] = "no" +else: + sys.path.insert(0, os.path.abspath("/app")) +os.environ["DATABASE_URL"] = "sqlite:///readthedocs.db" +os.environ["CELERY_BROKER_URL"] = os.getenv("REDIS_URL", "redis://redis:6379") +os.environ.setdefault("DJANGO_SETTINGS_MODULE", "config.settings.local") +django.setup() + +# -- Project information ----------------------------------------------------- + +project = "SciELO Core" +copyright = """2022, SciELO""" +author = "SciELO" + + +# -- General configuration --------------------------------------------------- + +# Add any Sphinx extension module names here, as strings. They can be +# extensions coming with Sphinx (named 'sphinx.ext.*') or your custom +# ones. +extensions = [ + "sphinx.ext.autodoc", + "sphinx.ext.napoleon", +] + +# Add any paths that contain templates here, relative to this directory. +# templates_path = ["_templates"] + +# List of patterns, relative to source directory, that match files and +# directories to ignore when looking for source files. +# This pattern also affects html_static_path and html_extra_path. +exclude_patterns = ["_build", "Thumbs.db", ".DS_Store"] + +# -- Options for HTML output ------------------------------------------------- + +# The theme to use for HTML and HTML Help pages. See the documentation for +# a list of builtin themes. +# +html_theme = "alabaster" + +# Add any paths that contain custom static files (such as style sheets) here, +# relative to this directory. They are copied after the builtin static files, +# so a file named "default.css" will overwrite the builtin "default.css". +# html_static_path = ["_static"] diff --git a/docs/howto.rst b/docs/howto.rst new file mode 100644 index 0000000..b9808eb --- /dev/null +++ b/docs/howto.rst @@ -0,0 +1,38 @@ +How To - Project Documentation +====================================================================== + +Get Started +---------------------------------------------------------------------- + +Documentation can be written as rst files in `core/docs`. + + +To build and serve docs, use the commands:: + + docker-compose -f local.yml up docs + + + +Changes to files in `docs/_source` will be picked up and reloaded automatically. + +`Sphinx `_ is the tool used to build documentation. + +Docstrings to Documentation +---------------------------------------------------------------------- + +The sphinx extension `apidoc `_ is used to automatically document code using signatures and docstrings. + +Numpy or Google style docstrings will be picked up from project files and availble for documentation. See the `Napoleon `_ extension for details. + +For an in-use example, see the `page source <_sources/users.rst.txt>`_ for :ref:`users`. + +To compile all docstrings automatically into documentation source files, use the command: + :: + + make apidocs + + +This can be done in the docker container: + :: + + docker run --rm docs make apidocs diff --git a/docs/index.rst b/docs/index.rst new file mode 100644 index 0000000..b6c6ded --- /dev/null +++ b/docs/index.rst @@ -0,0 +1,23 @@ +.. SciELO Content Manager documentation master file, created by + sphinx-quickstart. + You can adapt this file completely to your liking, but it should at least + contain the root `toctree` directive. + +Welcome to SciELO Core's documentation! +====================================================================== + +.. toctree:: + :maxdepth: 2 + :caption: Contents: + + howto + users + + + +Indices and tables +================== + +* :ref:`genindex` +* :ref:`modindex` +* :ref:`search` diff --git a/docs/make.bat b/docs/make.bat new file mode 100644 index 0000000..4f70eed --- /dev/null +++ b/docs/make.bat @@ -0,0 +1,46 @@ +@ECHO OFF + +pushd %~dp0 + +REM Command file for Sphinx documentation + + +if "%SPHINXBUILD%" == "" ( + set SPHINXBUILD=sphinx-build -c . +) +set SOURCEDIR=_source +set BUILDDIR=_build +set APP=..\core + +if "%1" == "" goto help + +%SPHINXBUILD% >NUL 2>NUL +if errorlevel 9009 ( + echo. + echo.The 'sphinx-build' command was not found. Make sure you have Sphinx + echo.installed, then set the SPHINXBUILD environment variable to point + echo.to the full path of the 'sphinx-build' executable. Alternatively you + echo.may add the Sphinx directory to PATH. + echo. + echo.Install sphinx-autobuild for live serving. + echo.If you don't have Sphinx installed, grab it from + echo.http://sphinx-doc.org/ + exit /b 1 +) + +%SPHINXBUILD% -b %1 %SOURCEDIR% %BUILDDIR% %SPHINXOPTS% %O% +goto end + +:livehtml +sphinx-autobuild -b html --open-browser -p 9000 --watch %APP% -c . %SOURCEDIR% %BUILDDIR%/html +GOTO :EOF + +:apidocs +sphinx-apidoc -o %SOURCEDIR%/api %APP% +GOTO :EOF + +:help +%SPHINXBUILD% -b help %SOURCEDIR% %BUILDDIR% %SPHINXOPTS% %O% + +:end +popd diff --git a/docs/users.rst b/docs/users.rst new file mode 100644 index 0000000..21e08aa --- /dev/null +++ b/docs/users.rst @@ -0,0 +1,15 @@ + .. _users: + +Users +====================================================================== + +Starting a new project, it’s highly recommended to set up a custom user model, +even if the default User model is sufficient for you. + +This model behaves identically to the default user model, +but you’ll be able to customize it in the future if the need arises. + +.. automodule:: core.users.models + :members: + :noindex: + From 317b58b226652f4462923260b403fc0b23f79099 Mon Sep 17 00:00:00 2001 From: Rafael JPD Date: Sun, 7 Apr 2024 22:25:46 -0300 Subject: [PATCH 06/40] =?UTF-8?q?Adiciona=20m=C3=B3dulo=20Celery?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- django_celery_beat/__init__.py | 41 + django_celery_beat/admin.py | 301 ++++++++ django_celery_beat/apps.py | 14 + django_celery_beat/button_helper.py | 36 + django_celery_beat/clockedschedule.py | 42 + django_celery_beat/forms.py | 99 +++ .../locale/es/LC_MESSAGES/django.po | 559 ++++++++++++++ .../locale/fr/LC_MESSAGES/django.po | 522 +++++++++++++ .../locale/ru/LC_MESSAGES/django.po | 451 +++++++++++ .../locale/zh_hans/LC_MESSAGES/django.po | 486 ++++++++++++ django_celery_beat/managers.py | 32 + django_celery_beat/migrations/0001_initial.py | 129 ++++ .../migrations/0002_auto_20161118_0346.py | 49 ++ .../migrations/0003_auto_20161209_0049.py | 23 + .../migrations/0004_auto_20170221_0000.py | 19 + .../0005_add_solarschedule_events_choices.py | 28 + .../migrations/0006_auto_20180210_1226.py | 30 + .../migrations/0006_auto_20180322_0932.py | 51 ++ .../migrations/0006_periodictask_priority.py | 28 + .../migrations/0007_auto_20180521_0826.py | 25 + .../migrations/0008_auto_20180914_1922.py | 57 ++ .../migrations/0009_periodictask_headers.py | 22 + .../migrations/0010_auto_20190429_0326.py | 174 +++++ .../migrations/0011_auto_20190508_0153.py | 32 + .../0012_periodictask_expire_seconds.py | 18 + .../migrations/0013_auto_20200609_0727.py | 20 + .../0014_remove_clockedschedule_enabled.py | 17 + .../0015_edit_solarschedule_events_choices.py | 18 + django_celery_beat/migrations/__init__.py | 0 django_celery_beat/models.py | 723 ++++++++++++++++++ django_celery_beat/schedulers.py | 382 +++++++++ .../templates/admin/djcelery/change_list.html | 20 + django_celery_beat/tzcrontab.py | 93 +++ django_celery_beat/urls.py | 8 + django_celery_beat/utils.py | 49 ++ django_celery_beat/validators.py | 106 +++ django_celery_beat/views.py | 36 + django_celery_beat/wagtail_hooks.py | 214 ++++++ 38 files changed, 4954 insertions(+) create mode 100644 django_celery_beat/__init__.py create mode 100644 django_celery_beat/admin.py create mode 100644 django_celery_beat/apps.py create mode 100644 django_celery_beat/button_helper.py create mode 100644 django_celery_beat/clockedschedule.py create mode 100644 django_celery_beat/forms.py create mode 100644 django_celery_beat/locale/es/LC_MESSAGES/django.po create mode 100644 django_celery_beat/locale/fr/LC_MESSAGES/django.po create mode 100644 django_celery_beat/locale/ru/LC_MESSAGES/django.po create mode 100644 django_celery_beat/locale/zh_hans/LC_MESSAGES/django.po create mode 100644 django_celery_beat/managers.py create mode 100644 django_celery_beat/migrations/0001_initial.py create mode 100644 django_celery_beat/migrations/0002_auto_20161118_0346.py create mode 100644 django_celery_beat/migrations/0003_auto_20161209_0049.py create mode 100644 django_celery_beat/migrations/0004_auto_20170221_0000.py create mode 100644 django_celery_beat/migrations/0005_add_solarschedule_events_choices.py create mode 100644 django_celery_beat/migrations/0006_auto_20180210_1226.py create mode 100644 django_celery_beat/migrations/0006_auto_20180322_0932.py create mode 100644 django_celery_beat/migrations/0006_periodictask_priority.py create mode 100644 django_celery_beat/migrations/0007_auto_20180521_0826.py create mode 100644 django_celery_beat/migrations/0008_auto_20180914_1922.py create mode 100644 django_celery_beat/migrations/0009_periodictask_headers.py create mode 100644 django_celery_beat/migrations/0010_auto_20190429_0326.py create mode 100644 django_celery_beat/migrations/0011_auto_20190508_0153.py create mode 100644 django_celery_beat/migrations/0012_periodictask_expire_seconds.py create mode 100644 django_celery_beat/migrations/0013_auto_20200609_0727.py create mode 100644 django_celery_beat/migrations/0014_remove_clockedschedule_enabled.py create mode 100644 django_celery_beat/migrations/0015_edit_solarschedule_events_choices.py create mode 100644 django_celery_beat/migrations/__init__.py create mode 100644 django_celery_beat/models.py create mode 100644 django_celery_beat/schedulers.py create mode 100644 django_celery_beat/templates/admin/djcelery/change_list.html create mode 100644 django_celery_beat/tzcrontab.py create mode 100644 django_celery_beat/urls.py create mode 100644 django_celery_beat/utils.py create mode 100644 django_celery_beat/validators.py create mode 100644 django_celery_beat/views.py create mode 100644 django_celery_beat/wagtail_hooks.py diff --git a/django_celery_beat/__init__.py b/django_celery_beat/__init__.py new file mode 100644 index 0000000..69aa916 --- /dev/null +++ b/django_celery_beat/__init__.py @@ -0,0 +1,41 @@ +"""Database-backed Periodic Tasks.""" +# :copyright: (c) 2016, Ask Solem. +# All rights reserved. +# :license: BSD (3 Clause), see LICENSE for more details. +import re +from collections import namedtuple + +import django + +__version__ = "2.2.1" +__author__ = "Asif Saif Uddin, Ask Solem" +__contact__ = "auvipy@gmail.com, ask@celeryproject.org" +__homepage__ = "https://github.com/celery/django-celery-beat" +__docformat__ = "restructuredtext" + +# -eof meta- + +version_info_t = namedtuple( + "version_info_t", + ( + "major", + "minor", + "micro", + "releaselevel", + "serial", + ), +) + +# bumpversion can only search for {current_version} +# so we have to parse the version here. +_temp = re.match(r"(\d+)\.(\d+).(\d+)(.+)?", __version__).groups() +VERSION = version_info = version_info_t( + int(_temp[0]), int(_temp[1]), int(_temp[2]), _temp[3] or "", "" +) +del _temp +del re + +__all__ = [] + +if django.VERSION < (3, 2): + default_app_config = "django_celery_beat.apps.BeatConfig" diff --git a/django_celery_beat/admin.py b/django_celery_beat/admin.py new file mode 100644 index 0000000..e848e2e --- /dev/null +++ b/django_celery_beat/admin.py @@ -0,0 +1,301 @@ +"""Periodic Task Admin interface.""" +from celery import current_app +from celery.utils import cached_property +from django import forms +from django.conf import settings +from django.contrib import admin, messages +from django.db.models import Case, Value, When +from django.forms.widgets import Select +from django.template.defaultfilters import pluralize +from django.utils.translation import gettext_lazy as _ +from kombu.utils.json import loads + +from .models import ( + ClockedSchedule, + CrontabSchedule, + IntervalSchedule, + PeriodicTask, + PeriodicTasks, + SolarSchedule, +) +from .utils import is_database_scheduler + + +class TaskSelectWidget(Select): + """Widget that lets you choose between task names.""" + + celery_app = current_app + _choices = None + + def tasks_as_choices(self): + _ = self._modules # noqa + tasks = list( + sorted( + name for name in self.celery_app.tasks if not name.startswith("celery.") + ) + ) + return (("", ""),) + tuple(zip(tasks, tasks)) + + @property + def choices(self): + if self._choices is None: + self._choices = self.tasks_as_choices() + return self._choices + + @choices.setter + def choices(self, _): + # ChoiceField.__init__ sets ``self.choices = choices`` + # which would override ours. + pass + + @cached_property + def _modules(self): + self.celery_app.loader.import_default_modules() + + +class TaskChoiceField(forms.ChoiceField): + """Field that lets you choose between task names.""" + + widget = TaskSelectWidget + + def valid_value(self, value): + return True + + +class PeriodicTaskForm(forms.ModelForm): + """Form that lets you create and modify periodic tasks.""" + + regtask = TaskChoiceField( + label=_("Task (registered)"), + required=False, + ) + task = forms.CharField( + label=_("Task (custom)"), + required=False, + max_length=200, + ) + + class Meta: + """Form metadata.""" + + model = PeriodicTask + exclude = () + + def clean(self): + data = super().clean() + regtask = data.get("regtask") + if regtask: + data["task"] = regtask + if not data["task"]: + exc = forms.ValidationError(_("Need name of task")) + self._errors["task"] = self.error_class(exc.messages) + raise exc + + if data.get("expire_seconds") is not None and data.get("expires"): + raise forms.ValidationError( + _("Only one can be set, in expires and expire_seconds") + ) + return data + + def _clean_json(self, field): + value = self.cleaned_data[field] + try: + loads(value) + except ValueError as exc: + raise forms.ValidationError( + _("Unable to parse JSON: %s") % exc, + ) + return value + + def clean_args(self): + return self._clean_json("args") + + def clean_kwargs(self): + return self._clean_json("kwargs") + + +class PeriodicTaskAdmin(admin.ModelAdmin): + """Admin-interface for periodic tasks.""" + + form = PeriodicTaskForm + model = PeriodicTask + celery_app = current_app + date_hierarchy = "start_time" + list_display = ( + "__str__", + "enabled", + "interval", + "start_time", + "last_run_at", + "one_off", + ) + list_filter = ["enabled", "one_off", "task", "start_time", "last_run_at"] + actions = ("enable_tasks", "disable_tasks", "toggle_tasks", "run_tasks") + search_fields = ("name",) + fieldsets = ( + ( + None, + { + "fields": ( + "name", + "regtask", + "task", + "enabled", + "description", + ), + "classes": ("extrapretty", "wide"), + }, + ), + ( + "Schedule", + { + "fields": ( + "interval", + "crontab", + "solar", + "clocked", + "start_time", + "last_run_at", + "one_off", + ), + "classes": ("extrapretty", "wide"), + }, + ), + ( + "Arguments", + { + "fields": ("args", "kwargs"), + "classes": ("extrapretty", "wide", "collapse", "in"), + }, + ), + ( + "Execution Options", + { + "fields": ( + "expires", + "expire_seconds", + "queue", + "exchange", + "routing_key", + "priority", + "headers", + ), + "classes": ("extrapretty", "wide", "collapse", "in"), + }, + ), + ) + readonly_fields = ("last_run_at",) + + def changelist_view(self, request, extra_context=None): + extra_context = extra_context or {} + scheduler = getattr(settings, "CELERY_BEAT_SCHEDULER", None) + extra_context["wrong_scheduler"] = not is_database_scheduler(scheduler) + return super(PeriodicTaskAdmin, self).changelist_view(request, extra_context) + + def get_queryset(self, request): + qs = super().get_queryset(request) + return qs.select_related("interval", "crontab", "solar", "clocked") + + def _message_user_about_update(self, request, rows_updated, verb): + """Send message about action to user. + + `verb` should shortly describe what have changed (e.g. 'enabled'). + + """ + self.message_user( + request, + _("{0} task{1} {2} successfully {3}").format( + rows_updated, + pluralize(rows_updated), + pluralize(rows_updated, _("was,were")), + verb, + ), + ) + + def enable_tasks(self, request, queryset): + rows_updated = queryset.update(enabled=True) + PeriodicTasks.update_changed() + self._message_user_about_update(request, rows_updated, "enabled") + + enable_tasks.short_description = _("Enable selected tasks") + + def disable_tasks(self, request, queryset): + rows_updated = queryset.update(enabled=False) + PeriodicTasks.update_changed() + self._message_user_about_update(request, rows_updated, "disabled") + + disable_tasks.short_description = _("Disable selected tasks") + + def _toggle_tasks_activity(self, queryset): + return queryset.update( + enabled=Case( + When(enabled=True, then=Value(False)), + default=Value(True), + ) + ) + + def toggle_tasks(self, request, queryset): + rows_updated = self._toggle_tasks_activity(queryset) + PeriodicTasks.update_changed() + self._message_user_about_update(request, rows_updated, "toggled") + + toggle_tasks.short_description = _("Toggle activity of selected tasks") + + def run_tasks(self, request, queryset): + self.celery_app.loader.import_default_modules() + tasks = [ + ( + self.celery_app.tasks.get(task.task), + loads(task.args), + loads(task.kwargs), + task.queue, + ) + for task in queryset + ] + + if any(t[0] is None for t in tasks): + for i, t in enumerate(tasks): + if t[0] is None: + break + + # variable "i" will be set because list "tasks" is not empty + not_found_task_name = queryset[i].task + + self.message_user( + request, + _('task "{0}" not found'.format(not_found_task_name)), + level=messages.ERROR, + ) + return + + task_ids = [ + task.apply_async(args=args, kwargs=kwargs, queue=queue) + if queue and len(queue) + else task.apply_async(args=args, kwargs=kwargs) + for task, args, kwargs, queue in tasks + ] + tasks_run = len(task_ids) + self.message_user( + request, + _("{0} task{1} {2} successfully run").format( + tasks_run, + pluralize(tasks_run), + pluralize(tasks_run, _("was,were")), + ), + ) + + run_tasks.short_description = _("Run selected tasks") + + +class ClockedScheduleAdmin(admin.ModelAdmin): + """Admin-interface for clocked schedules.""" + + fields = ("clocked_time",) + list_display = ("clocked_time",) + + +admin.site.register(IntervalSchedule) +admin.site.register(CrontabSchedule) +admin.site.register(SolarSchedule) +admin.site.register(ClockedSchedule, ClockedScheduleAdmin) +admin.site.register(PeriodicTask, PeriodicTaskAdmin) diff --git a/django_celery_beat/apps.py b/django_celery_beat/apps.py new file mode 100644 index 0000000..f04f5ae --- /dev/null +++ b/django_celery_beat/apps.py @@ -0,0 +1,14 @@ +"""Django Application configuration.""" +from django.apps import AppConfig +from django.utils.translation import gettext_lazy as _ + +__all__ = ["BeatConfig"] + + +class BeatConfig(AppConfig): + """Default configuration for django_celery_beat app.""" + + name = "django_celery_beat" + label = "django_celery_beat" + verbose_name = _("Periodic Tasks") + default_auto_field = "django.db.models.AutoField" diff --git a/django_celery_beat/button_helper.py b/django_celery_beat/button_helper.py new file mode 100644 index 0000000..f091c7a --- /dev/null +++ b/django_celery_beat/button_helper.py @@ -0,0 +1,36 @@ +from django.urls import reverse +from django.utils.translation import gettext as _ +from wagtail.contrib.modeladmin.helpers import ButtonHelper + + +class PeriodicTaskHelper(ButtonHelper): + # Define classes for our button, here we can set an icon for example + run_button_classnames = [ + "button-small", + "icon", + ] + + def run_button(self, obj): + # Define a label for our button + text = _("Run") + return { + "url": reverse("django_celery_beat:task_run") + "?task_id=%s" % str(obj.id), + "label": text, + "classname": self.finalise_classname(self.run_button_classnames), + "title": text, + } + + def get_buttons_for_obj( + self, obj, exclude=None, classnames_add=None, classnames_exclude=None + ): + """ + This function is used to gather all available buttons. + We append our custom button to the btns list. + """ + btns = super().get_buttons_for_obj( + obj, exclude, classnames_add, classnames_exclude + ) + if "run" not in (exclude or []): + btns.append(self.run_button(obj)) + + return btns diff --git a/django_celery_beat/clockedschedule.py b/django_celery_beat/clockedschedule.py new file mode 100644 index 0000000..4d63e9b --- /dev/null +++ b/django_celery_beat/clockedschedule.py @@ -0,0 +1,42 @@ +"""Clocked schedule Implementation.""" + +from celery import schedules +from celery.utils.time import maybe_make_aware + +from .utils import NEVER_CHECK_TIMEOUT + + +class clocked(schedules.BaseSchedule): + """clocked schedule. + + Depends on PeriodicTask one_off=True + """ + + def __init__(self, clocked_time, nowfun=None, app=None): + """Initialize clocked.""" + self.clocked_time = maybe_make_aware(clocked_time) + super().__init__(nowfun=nowfun, app=app) + + def remaining_estimate(self, last_run_at): + return self.clocked_time - self.now() + + def is_due(self, last_run_at): + rem_delta = self.remaining_estimate(None) + remaining_s = max(rem_delta.total_seconds(), 0) + if remaining_s == 0: + return schedules.schedstate(is_due=True, next=NEVER_CHECK_TIMEOUT) + return schedules.schedstate(is_due=False, next=remaining_s) + + def __repr__(self): + return "".format(self.clocked_time) + + def __eq__(self, other): + if isinstance(other, clocked): + return self.clocked_time == other.clocked_time + return False + + def __ne__(self, other): + return not self.__eq__(other) + + def __reduce__(self): + return self.__class__, (self.clocked_time, self.nowfun) diff --git a/django_celery_beat/forms.py b/django_celery_beat/forms.py new file mode 100644 index 0000000..d81836d --- /dev/null +++ b/django_celery_beat/forms.py @@ -0,0 +1,99 @@ +from celery import current_app +from celery.utils import cached_property +from django import forms +from django.forms.widgets import Select +from django.utils.translation import gettext_lazy as _ +from kombu.utils.json import loads +from wagtail.admin.forms import WagtailAdminModelForm + + +class TaskSelectWidget(Select): + """Widget that lets you choose between task names.""" + + celery_app = current_app + _choices = None + + def tasks_as_choices(self): + _ = self._modules # noqa + tasks = list( + sorted( + name for name in self.celery_app.tasks if not name.startswith("celery.") + ) + ) + return (("", ""),) + tuple(zip(tasks, tasks)) + + @property + def choices(self): + if self._choices is None: + self._choices = self.tasks_as_choices() + return self._choices + + @choices.setter + def choices(self, _): + # ChoiceField.__init__ sets ``self.choices = choices`` + # which would override ours. + pass + + @cached_property + def _modules(self): + self.celery_app.loader.import_default_modules() + + +class TaskChoiceField(forms.ChoiceField): + """Field that lets you choose between task names.""" + + widget = TaskSelectWidget + + def valid_value(self, value): + return True + + +class PeriodicTaskForm(WagtailAdminModelForm): + """Form that lets you create and modify periodic tasks.""" + + regtask = TaskChoiceField( + label=_("Task (registered)"), + required=False, + ) + task = forms.CharField( + label=_("Task (custom)"), + required=False, + max_length=200, + ) + + class Meta: + """Form metadata.""" + + exclude = () + + def clean(self): + data = super().clean() + regtask = data.get("regtask") + if regtask: + data["task"] = regtask + if not data["task"]: + exc = forms.ValidationError(_("Need name of task")) + self._errors["task"] = self.error_class(exc.messages) + raise exc + + if data.get("expire_seconds") is not None and data.get("expires"): + raise forms.ValidationError( + _("Only one can be set, in expires and expire_seconds") + ) + return data + + def _clean_json(self, field): + value = self.cleaned_data[field] + try: + loads(value) + except ValueError as exc: + raise forms.ValidationError( + _("Unable to parse JSON: %s") % exc, + ) + return value + + def clean_args(self): + return self._clean_json("args") + + def clean_kwargs(self): + return self._clean_json("kwargs") diff --git a/django_celery_beat/locale/es/LC_MESSAGES/django.po b/django_celery_beat/locale/es/LC_MESSAGES/django.po new file mode 100644 index 0000000..4cfd932 --- /dev/null +++ b/django_celery_beat/locale/es/LC_MESSAGES/django.po @@ -0,0 +1,559 @@ +# Spanish translation strings for django-celery-beat. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# , 2020. +# +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2024-01-09 19:02+0000\n" +"PO-Revision-Date: 2021-04-03 22:36-0300\n" +"Last-Translator: Luis Saavedra \n" +"Language-Team: \n" +"Language: es\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: Poedit 2.3\n" + +#: django_celery_beat/admin.py:69 django_celery_beat/forms.py:55 +msgid "Task (registered)" +msgstr "Tarea (registrada)" + +#: django_celery_beat/admin.py:73 django_celery_beat/forms.py:59 +msgid "Task (custom)" +msgstr "Tarea (personalizada)" + +#: django_celery_beat/admin.py:90 django_celery_beat/forms.py:75 +msgid "Need name of task" +msgstr "Nombre de tarea necesario" + +#: django_celery_beat/admin.py:96 django_celery_beat/forms.py:81 +#: django_celery_beat/models.py:683 +msgid "Only one can be set, in expires and expire_seconds" +msgstr "" +"Sólo uno de los campos puede ser definido, en expiración y segundos de " +"expiración" + +#: django_celery_beat/admin.py:106 django_celery_beat/forms.py:91 +#, python-format +msgid "Unable to parse JSON: %s" +msgstr "Incapaz de parsear el JSON: %s" + +#: django_celery_beat/admin.py:207 django_celery_beat/wagtail_hooks.py:69 +#, python-brace-format +msgid "{0} task{1} {2} successfully {3}" +msgstr "{0} tarea{1} {2} correctamente {3}" + +#: django_celery_beat/admin.py:210 django_celery_beat/admin.py:283 +#: django_celery_beat/wagtail_hooks.py:72 +#: django_celery_beat/wagtail_hooks.py:153 +msgid "was,were" +msgstr "fue,fueron" + +#: django_celery_beat/admin.py:220 django_celery_beat/wagtail_hooks.py:82 +msgid "Enable selected tasks" +msgstr "Habilitar tareas seleccionadas" + +#: django_celery_beat/admin.py:227 django_celery_beat/wagtail_hooks.py:89 +msgid "Disable selected tasks" +msgstr "Deshabilitar tareas seleccionadas" + +#: django_celery_beat/admin.py:242 django_celery_beat/wagtail_hooks.py:104 +msgid "Toggle activity of selected tasks" +msgstr "Conmutar actividad de las tareas seleccionadas" + +#: django_celery_beat/admin.py:266 django_celery_beat/wagtail_hooks.py:129 +#, python-brace-format +msgid "task \"{0}\" not found" +msgstr "tarea \"{0}\" no encontrada" + +#: django_celery_beat/admin.py:280 django_celery_beat/wagtail_hooks.py:150 +#, python-brace-format +msgid "{0} task{1} {2} successfully run" +msgstr "{0} tarea{1} {2} correctamente ejecutadas" + +#: django_celery_beat/admin.py:287 django_celery_beat/wagtail_hooks.py:157 +msgid "Run selected tasks" +msgstr "Ejecutar tareas seleccionadas" + +#: django_celery_beat/apps.py:13 +msgid "Periodic Tasks" +msgstr "Tareas Periódicas" + +#: django_celery_beat/button_helper.py:15 +msgid "Run" +msgstr "" + +#: django_celery_beat/models.py:34 +msgid "Days" +msgstr "Días" + +#: django_celery_beat/models.py:35 +msgid "Hours" +msgstr "Horas" + +#: django_celery_beat/models.py:36 +msgid "Minutes" +msgstr "Minutos" + +#: django_celery_beat/models.py:37 +msgid "Seconds" +msgstr "Segundos" + +#: django_celery_beat/models.py:38 +msgid "Microseconds" +msgstr "Microsegundos" + +#: django_celery_beat/models.py:42 +msgid "Day" +msgstr "Día" + +#: django_celery_beat/models.py:43 +msgid "Hour" +msgstr "Hora" + +#: django_celery_beat/models.py:44 +msgid "Minute" +msgstr "Minuto" + +#: django_celery_beat/models.py:45 +msgid "Second" +msgstr "Segundo" + +#: django_celery_beat/models.py:46 +msgid "Microsecond" +msgstr "Microsegundo" + +#: django_celery_beat/models.py:50 +msgid "Astronomical dawn" +msgstr "Amanecer astronómico" + +#: django_celery_beat/models.py:51 +msgid "Civil dawn" +msgstr "Amanecer civil" + +#: django_celery_beat/models.py:52 +msgid "Nautical dawn" +msgstr "Amanecer náutico" + +#: django_celery_beat/models.py:53 +msgid "Astronomical dusk" +msgstr "Anochecer astronómico" + +#: django_celery_beat/models.py:54 +msgid "Civil dusk" +msgstr "Anochecer civil" + +#: django_celery_beat/models.py:55 +msgid "Nautical dusk" +msgstr "Anochecer náutico" + +#: django_celery_beat/models.py:56 +msgid "Solar noon" +msgstr "Mediodía solar" + +#: django_celery_beat/models.py:57 +msgid "Sunrise" +msgstr "Amanecer" + +#: django_celery_beat/models.py:58 +msgid "Sunset" +msgstr "Puesta de sol" + +#: django_celery_beat/models.py:97 +msgid "Solar Event" +msgstr "Evento Solar" + +#: django_celery_beat/models.py:98 +msgid "The type of solar event when the job should run" +msgstr "El tipo de evento solar cuando el proceso debe ejecutarse" + +#: django_celery_beat/models.py:103 +msgid "Latitude" +msgstr "Latitud" + +#: django_celery_beat/models.py:104 +msgid "Run the task when the event happens at this latitude" +msgstr "Ejecutar la tarea cuando el evento ocurra a esta latitud" + +#: django_celery_beat/models.py:110 +msgid "Longitude" +msgstr "Longitud" + +#: django_celery_beat/models.py:111 +msgid "Run the task when the event happens at this longitude" +msgstr "Ejecutar la tarea cuando el evento ocurra a esta longitud" + +#: django_celery_beat/models.py:118 +msgid "solar event" +msgstr "evento solar" + +#: django_celery_beat/models.py:119 +msgid "solar events" +msgstr "eventos solares" + +#: django_celery_beat/models.py:167 +msgid "Number of Periods" +msgstr "Número de Períodos" + +#: django_celery_beat/models.py:169 +msgid "Number of interval periods to wait before running the task again" +msgstr "" +"Número de períodos de intervalo a esperar antes de ejecutar esta tarea de " +"nuevo" + +#: django_celery_beat/models.py:176 +msgid "Interval Period" +msgstr "Período de intervalo" + +#: django_celery_beat/models.py:177 +msgid "The type of period between task runs (Example: days)" +msgstr "El tipo de período entre ejecuciones de tarea (Ejemplo: días)" + +#: django_celery_beat/models.py:183 +msgid "interval" +msgstr "intervalo" + +#: django_celery_beat/models.py:184 +msgid "intervals" +msgstr "intervalos" + +#: django_celery_beat/models.py:210 +msgid "every {}" +msgstr "cada {}" + +#: django_celery_beat/models.py:215 +msgid "every {} {}" +msgstr "cada {} {}" + +#: django_celery_beat/models.py:226 +msgid "Clock Time" +msgstr "Hora y día" + +#: django_celery_beat/models.py:227 +msgid "Run the task at clocked time" +msgstr "Ejecuta la tarea en el momento indicado" + +#: django_celery_beat/models.py:233 django_celery_beat/models.py:234 +msgid "clocked" +msgstr "cronometrado" + +#: django_celery_beat/models.py:274 +msgid "Minute(s)" +msgstr "Minuto(s)" + +#: django_celery_beat/models.py:275 +msgid "Cron Minutes to Run. Use \"*\" for \"all\". (Example: \"0,30\")" +msgstr "" +"Minutos Cron cuando ejecutar. Usa \"*\" para \"todos\". (Ejemplo: \"0,30\")" + +#: django_celery_beat/models.py:281 +msgid "Hour(s)" +msgstr "Hora(s)" + +#: django_celery_beat/models.py:282 +msgid "Cron Hours to Run. Use \"*\" for \"all\". (Example: \"8,20\")" +msgstr "" +"Horas Cron cuando ejecutar. Usa \"*\" para \"todas\". (Ejemplo: \"8,20\")" + +#: django_celery_beat/models.py:288 +msgid "Day(s) Of The Week" +msgstr "Día(s) de la semana" + +#: django_celery_beat/models.py:290 +msgid "Cron Days Of The Week to Run. Use \"*\" for \"all\". (Example: \"0,5\")" +msgstr "" +"Días de la semana Cron cuando ejecutar. Usa \"*\" para \"todos\". (Ejemplo: " +"\"0,5\")" + +#: django_celery_beat/models.py:297 +msgid "Day(s) Of The Month" +msgstr "Día(s) del mes" + +#: django_celery_beat/models.py:299 +msgid "" +"Cron Days Of The Month to Run. Use \"*\" for \"all\". (Example: \"1,15\")" +msgstr "" +"Días del mes Cron cuando ejecutar. Usa \"*\" para \"todos\". (Ejemplo: " +"\"1,15\")" + +#: django_celery_beat/models.py:306 +msgid "Month(s) Of The Year" +msgstr "Mes(es) del año" + +#: django_celery_beat/models.py:308 +msgid "" +"Cron Months Of The Year to Run. Use \"*\" for \"all\". (Example: \"0,6\")" +msgstr "" +"Meses del año Cron cuando ejecutar. Usa \"*\" para \"todos\". (Ejemplo: " +"\"0,6\")" + +#: django_celery_beat/models.py:315 +msgid "Cron Timezone" +msgstr "Zona horaria Cron" + +#: django_celery_beat/models.py:316 +msgid "Timezone to Run the Cron Schedule on. Default is UTC." +msgstr "Zona horaria donde ejecutar la programación Cron. Por defecto UTC." + +#: django_celery_beat/models.py:322 +msgid "crontab" +msgstr "crontab" + +#: django_celery_beat/models.py:323 +msgid "crontabs" +msgstr "crontabs" + +#: django_celery_beat/models.py:420 +msgid "Name" +msgstr "Nombre" + +#: django_celery_beat/models.py:421 +msgid "Short Description For This Task" +msgstr "Descripción corta para esta tarea" + +#: django_celery_beat/models.py:427 +msgid "" +"The Name of the Celery Task that Should be Run. (Example: \"proj.tasks." +"import_contacts\")" +msgstr "" +"Nombre de la tarea Celery que debe ser ejecutada. (Ejemplo: \"proj.tasks." +"import_contacts\")" + +#: django_celery_beat/models.py:439 +msgid "Interval Schedule" +msgstr "Intervalo de programación" + +#: django_celery_beat/models.py:441 +msgid "" +"Interval Schedule to run the task on. Set only one schedule type, leave the " +"others null." +msgstr "" +"Intervalo de programación donde ejecutar la tarea. Establece sólo un tipo de " +"programación, deja el resto en blanco." + +#: django_celery_beat/models.py:450 +msgid "Crontab Schedule" +msgstr "Programación Crontab" + +#: django_celery_beat/models.py:452 +msgid "" +"Crontab Schedule to run the task on. Set only one schedule type, leave the " +"others null." +msgstr "" +"Programación Crontab con la cual ejecutar la tarea. Establece sólo un tipo " +"de programación, deja el resto en blanco." + +#: django_celery_beat/models.py:461 +msgid "Solar Schedule" +msgstr "Programación solar" + +#: django_celery_beat/models.py:463 +msgid "" +"Solar Schedule to run the task on. Set only one schedule type, leave the " +"others null." +msgstr "" +"Programación solar con la cual ejecutar la tarea. Establece sólo un tipo de " +"programación, deja el resto en blanco." + +#: django_celery_beat/models.py:472 +msgid "Clocked Schedule" +msgstr "Programación horaria" + +#: django_celery_beat/models.py:474 +msgid "" +"Clocked Schedule to run the task on. Set only one schedule type, leave the " +"others null." +msgstr "" +"Programación horaria con la cual ejecutar la tarea. Establece sólo un tipo " +"de programación, deja el resto en blanco." + +#: django_celery_beat/models.py:482 +msgid "Positional Arguments" +msgstr "Argumentos posicionales" + +#: django_celery_beat/models.py:483 +msgid "JSON encoded positional arguments (Example: [\"arg1\", \"arg2\"])" +msgstr "" +"Argumentos posicionales codificados en formato JSON. (Ejemplo: [\"arg1\", " +"\"arg2\"])" + +#: django_celery_beat/models.py:488 +msgid "Keyword Arguments" +msgstr "Agumentos opcionales" + +#: django_celery_beat/models.py:490 +msgid "JSON encoded keyword arguments (Example: {\"argument\": \"value\"})" +msgstr "" +"Argumentos opcionales codificados en formato JSON. (Ejemplo: {\"argument\": " +"\"value\"})" + +#: django_celery_beat/models.py:499 +msgid "Queue Override" +msgstr "Invalidación de cola" + +#: django_celery_beat/models.py:501 +msgid "Queue defined in CELERY_TASK_QUEUES. Leave None for default queuing." +msgstr "" +"Cola definida en CELERY_TASK_QUEUES. Dejala nula para la cola por defecto." + +#: django_celery_beat/models.py:513 +msgid "Exchange" +msgstr "Intercambio" + +#: django_celery_beat/models.py:514 +msgid "Override Exchange for low-level AMQP routing" +msgstr "Invalida intercambio para enrutamiento de bajo nivel de AMQP" + +#: django_celery_beat/models.py:521 +msgid "Routing Key" +msgstr "Clave de enrutamiento" + +#: django_celery_beat/models.py:522 +msgid "Override Routing Key for low-level AMQP routing" +msgstr "" +"Invalida la clave de enrutamiento para enrutamiento de bajo nivel de AMQP" + +#: django_celery_beat/models.py:527 +msgid "AMQP Message Headers" +msgstr "Cabeceras de mensaje de AMQP" + +#: django_celery_beat/models.py:528 +msgid "JSON encoded message headers for the AMQP message." +msgstr "Cacbeceras de mensaje de AMQP codificadas en formato JSON." + +#: django_celery_beat/models.py:536 +msgid "Priority" +msgstr "Prioridad" + +#: django_celery_beat/models.py:538 +msgid "" +"Priority Number between 0 and 255. Supported by: RabbitMQ, Redis (priority " +"reversed, 0 is highest)." +msgstr "" +"Número de prioridad entre 0 and 255. Soportado por: RabbitMQ, Redis " +"(prioridad invertida, 0 es la más alta)." + +#: django_celery_beat/models.py:545 +msgid "Expires Datetime" +msgstr "Fecha de caducidad" + +#: django_celery_beat/models.py:547 +msgid "" +"Datetime after which the schedule will no longer trigger the task to run" +msgstr "" +"Fecha después de la cual la programación no provocará que la tarea vuelva a " +"ejecutarse" + +#: django_celery_beat/models.py:554 +msgid "Expires timedelta with seconds" +msgstr "Delta de tiempo de expiración en segundos" + +#: django_celery_beat/models.py:556 +msgid "" +"Timedelta with seconds which the schedule will no longer trigger the task to " +"run" +msgstr "" +"Delta de Tiempo en segundos después de los cuales la programación no " +"provocará que la tarea vuelva a ejecutarse" + +#: django_celery_beat/models.py:562 +msgid "One-off Task" +msgstr "Tarea de ejecución única" + +#: django_celery_beat/models.py:563 +msgid "If True, the schedule will only run the task a single time" +msgstr "Si es verdadera, la programación sólo lanzará la tarea una vez" + +#: django_celery_beat/models.py:568 +msgid "Start Datetime" +msgstr "Fecha de comienzo" + +#: django_celery_beat/models.py:570 +msgid "Datetime when the schedule should begin triggering the task to run" +msgstr "" +"Fecha cuando la programación debe comenzar a provocar la ejecución de la " +"tarea" + +#: django_celery_beat/models.py:575 +msgid "Enabled" +msgstr "Habilitada" + +#: django_celery_beat/models.py:576 +msgid "Set to False to disable the schedule" +msgstr "Establece a Falso para deshabilitar la programación" + +#: django_celery_beat/models.py:584 +msgid "Last Run Datetime" +msgstr "Fecha de última ejecución" + +#: django_celery_beat/models.py:586 +msgid "" +"Datetime that the schedule last triggered the task to run. Reset to None if " +"enabled is set to False." +msgstr "" +"Fecha en la cual la programación ejecutó la tarea por última vez. " +"Reinicializa a None si enabled está establecido como falso." + +#: django_celery_beat/models.py:593 +msgid "Total Run Count" +msgstr "Contador de ejecuciones totales" + +#: django_celery_beat/models.py:595 +msgid "Running count of how many times the schedule has triggered the task" +msgstr "Contador de cuentas veces ha sido ejecutada la tarea" + +#: django_celery_beat/models.py:600 +msgid "Last Modified" +msgstr "Última modificación" + +#: django_celery_beat/models.py:601 +msgid "Datetime that this PeriodicTask was last modified" +msgstr "Fecha en la cual esta tarea periódica fue modificada por última vez" + +#: django_celery_beat/models.py:605 +msgid "Description" +msgstr "Descripción" + +#: django_celery_beat/models.py:606 +msgid "Detailed description about the details of this Periodic Task" +msgstr "Descripción detallada sobre los detalles de esta tarea periódica" + +#: django_celery_beat/models.py:611 +msgid "Essa é a área de configuração de execução de tarefas assíncronas." +msgstr "" + +#: django_celery_beat/models.py:632 +msgid "Content" +msgstr "" + +#: django_celery_beat/models.py:633 +#, fuzzy +#| msgid "Solar Schedule" +msgid "Scheduler" +msgstr "Programación solar" + +#: django_celery_beat/models.py:643 +msgid "periodic task" +msgstr "tarea periódica" + +#: django_celery_beat/models.py:644 +msgid "periodic tasks" +msgstr "tareas periódicas" + +#: django_celery_beat/templates/admin/djcelery/change_list.html:6 +msgid "Home" +msgstr "Inicio" + +#: django_celery_beat/views.py:34 +#, fuzzy, python-brace-format +#| msgid "{0} task{1} {2} successfully run" +msgid "Task {0} was successfully run" +msgstr "{0} tarea{1} {2} correctamente ejecutadas" + +#: django_celery_beat/wagtail_hooks.py:192 +msgid "Tasks" +msgstr "" diff --git a/django_celery_beat/locale/fr/LC_MESSAGES/django.po b/django_celery_beat/locale/fr/LC_MESSAGES/django.po new file mode 100644 index 0000000..01c5500 --- /dev/null +++ b/django_celery_beat/locale/fr/LC_MESSAGES/django.po @@ -0,0 +1,522 @@ +# French translation strings for django-celery-beat. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# , 2019. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2019-11-10 14:36+0000\n" +"PO-Revision-Date: 2020-06-09 10:30\n" +"Last-Translator: Álvaro Mondéjar \n" +"Language-Team: n" +"Language: fr\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" + +#: django_celery_beat/admin.py:69 +msgid "Task (registered)" +msgstr "Tâche (enregistrée)" + +#: django_celery_beat/admin.py:73 +msgid "Task (custom)" +msgstr "Tâche (personalisée)" + +#: django_celery_beat/admin.py:90 +msgid "Need name of task" +msgstr "Besoin du nom de la tâche" + +#: django_celery_beat/admin.py:96 django_celery_beat/models.py:595 +msgid "Only one can be set, in expires and expire_seconds" +msgstr "Seulement un peu être définie, soit expires ou expire_seconds" + +#: django_celery_beat/admin.py:106 +#, python-format +msgid "Unable to parse JSON: %s" +msgstr "Incapable d'analyser le JSON: %s" + +#: django_celery_beat/admin.py:172 +#, python-brace-format +msgid "{0} task{1} {2} successfully {3}" +msgstr "{0} tâche{1} {2} avec succès {3}" + +#: django_celery_beat/admin.py:175 django_celery_beat/admin.py:237 +msgid "was,were" +msgstr "a été,ont été" + +#: django_celery_beat/admin.py:184 +msgid "Enable selected tasks" +msgstr "Active les tâches sélectionnées" + +#: django_celery_beat/admin.py:190 +msgid "Disable selected tasks" +msgstr "Désactive les tâches sélectionnées" + +#: django_celery_beat/admin.py:202 +msgid "Toggle activity of selected tasks" +msgstr "Bascule l'activité des tâches sélectionnées" + +#: django_celery_beat/admin.py:222 +#, python-brace-format +msgid "task \"{0}\" not found" +msgstr "tâche \"{0}\" introuvable" + +#: django_celery_beat/admin.py:234 +#, python-brace-format +msgid "{0} task{1} {2} successfully run" +msgstr "{0} tâche{1} {2} a fonctionnée avec succès" + +#: django_celery_beat/admin.py:240 +msgid "Run selected tasks" +msgstr "Démarre les tâches sélectionnées" + +#: django_celery_beat/apps.py:13 +msgid "Periodic Tasks" +msgstr "Tâches Périodique" + +#: django_celery_beat/models.py:26 +msgid "Days" +msgstr "Jours" + +#: django_celery_beat/models.py:27 +msgid "Hours" +msgstr "Heures" + +#: django_celery_beat/models.py:28 +msgid "Minutes" +msgstr "Minutes" + +#: django_celery_beat/models.py:29 +msgid "Seconds" +msgstr "Secondes" + +#: django_celery_beat/models.py:30 +msgid "Microseconds" +msgstr "Microsecondes" + +#: django_celery_beat/models.py:34 +msgid "Day" +msgstr "Jour" + +#: django_celery_beat/models.py:35 +msgid "Hour" +msgstr "Heure" + +#: django_celery_beat/models.py:36 +msgid "Minute" +msgstr "Minute" + +#: django_celery_beat/models.py:37 +msgid "Second" +msgstr "Seconde" + +#: django_celery_beat/models.py:38 +msgid "Microsecond" +msgstr "Microseconde" + +#: django_celery_beat/models.py:42 +msgid "Astronomical dawn" +msgstr "Aube astronomique" + +#: django_celery_beat/models.py:43 +msgid "Civil dawn" +msgstr "Aube civile" + +#: django_celery_beat/models.py:44 +msgid "Nautical dawn" +msgstr "Aube nautique" + +#: django_celery_beat/models.py:45 +msgid "Astronomical dusk" +msgstr "Crépuscule astronomique" + +#: django_celery_beat/models.py:46 +msgid "Civil dusk" +msgstr "Crépuscule civil" + +#: django_celery_beat/models.py:47 +msgid "Nautical dusk" +msgstr "Crépuscule nautique" + +#: django_celery_beat/models.py:48 +msgid "Solar noon" +msgstr "Midi solaire" + +#: django_celery_beat/models.py:49 +msgid "Sunrise" +msgstr "Lever du soleil" + +#: django_celery_beat/models.py:50 +msgid "Sunset" +msgstr "Coucher du soleil" + +#: django_celery_beat/models.py:82 +msgid "Solar Event" +msgstr "Évènement Solaire" + +#: django_celery_beat/models.py:83 +msgid "The type of solar event when the job should run" +msgstr "Le type d'évènement solaire pour lequel la tâche devrait démarrer" + +#: django_celery_beat/models.py:87 +msgid "Latitude" +msgstr "Latitude" + +#: django_celery_beat/models.py:88 +msgid "Run the task when the event happens at this latitude" +msgstr "Démarre cette tâche lorsque l'évènement se produit à cette latitude" + +#: django_celery_beat/models.py:93 +msgid "Longitude" +msgstr "Longitude" + +#: django_celery_beat/models.py:94 +msgid "Run the task when the event happens at this longitude" +msgstr "" +"Démarre cette tâche lorsque cette évènement se produit à cette longitude" + +#: django_celery_beat/models.py:101 +msgid "solar event" +msgstr "évènement solaire" + +#: django_celery_beat/models.py:102 +msgid "solar events" +msgstr "évènements solaire" + +#: django_celery_beat/models.py:151 +msgid "Number of Periods" +msgstr "Nombre de Périodes" + +#: django_celery_beat/models.py:152 +msgid "Number of interval periods to wait before running the task again" +msgstr "" +"Nombre d'intervale de périodes à attendre avant de démarrer la tâche à " +"nouveau" + +#: django_celery_beat/models.py:158 +msgid "Interval Period" +msgstr "Période d'Intervale" + +#: django_celery_beat/models.py:159 +msgid "The type of period between task runs (Example: days)" +msgstr "Le type de période entre chaque démarrage de tâche (Exemple: jours)" + +#: django_celery_beat/models.py:165 +msgid "interval" +msgstr "intervale" + +#: django_celery_beat/models.py:166 +msgid "intervals" +msgstr "intervales" + +#: django_celery_beat/models.py:194 +msgid "every {}" +msgstr "chaque {}" + +#: django_celery_beat/models.py:199 +msgid "every {} {}" +msgstr "chaque {} {}" + +#: django_celery_beat/models.py:210 +msgid "Clock Time" +msgstr "Horaire" + +#: django_celery_beat/models.py:211 +msgid "Run the task at clocked time" +msgstr "Démarre la tâche à l'horaire définie" + +#: django_celery_beat/models.py:216 django_celery_beat/models.py:516 +msgid "Enabled" +msgstr "Activée" + +#: django_celery_beat/models.py:217 django_celery_beat/models.py:517 +msgid "Set to False to disable the schedule" +msgstr "Mettre à Faux pour désactiver la planification" + +#: django_celery_beat/models.py:223 django_celery_beat/models.py:224 +msgid "clocked" +msgstr "horaire" + +#: django_celery_beat/models.py:266 +msgid "Minute(s)" +msgstr "Minute⋅s" + +#: django_celery_beat/models.py:268 +msgid "Cron Minutes to Run. Use \"*\" for \"all\". (Example: \"0,30\")" +msgstr "" +"Minutes Cron pour Démarrer. Utilisez \"*\" pour \"toutes\". (Exemple: " +"\"0,30\")" + +#: django_celery_beat/models.py:273 +msgid "Hour(s)" +msgstr "Heure⋅s" + +#: django_celery_beat/models.py:275 +msgid "Cron Hours to Run. Use \"*\" for \"all\". (Example: \"8,20\")" +msgstr "" +"Heures Cron pour Démarrer. Utilisez \"*\" pour \"toutes\". (Exemple: " +"\"8,20\")" + +#: django_celery_beat/models.py:280 +msgid "Day(s) Of The Week" +msgstr "Jour⋅s De La Semaine" + +#: django_celery_beat/models.py:282 +msgid "Cron Days Of The Week to Run. Use \"*\" for \"all\". (Example: \"0,5\")" +msgstr "" +"Jours De La Semaine Cron pour Démarrer. Utilisez \"*\" pour \"tous\". " +"(Exemple: \"0,5\")" + +#: django_celery_beat/models.py:288 +msgid "Day(s) Of The Month" +msgstr "Jour⋅s Du Mois" + +#: django_celery_beat/models.py:290 +msgid "" +"Cron Days Of The Month to Run. Use \"*\" for \"all\". (Example: \"1,15\")" +msgstr "" +"Jours Du Mois Cron pour Démarrer. Utilisez \"*\" pour \"tous\". (Exemple: " +"\"1,15\")" + +#: django_celery_beat/models.py:296 +msgid "Month(s) Of The Year" +msgstr "Mois De L'Année" + +#: django_celery_beat/models.py:298 +msgid "" +"Cron Months Of The Year to Run. Use \"*\" for \"all\". (Example: \"0,6\")" +msgstr "" +"Mois De L'Année Cron pour Démarrer. Utilisez \"*\" pour \"tous\". (Exemple:" +" ,6\")" + +#: django_celery_beat/models.py:305 +msgid "Cron Timezone" +msgstr "Fuseau Horaire Cron" + +#: django_celery_beat/models.py:307 +msgid "Timezone to Run the Cron Schedule on. Default is UTC." +msgstr "" +"Fuseau Horaire pour lequel démarrer la planification Cron. UTC par défaut." + +#: django_celery_beat/models.py:313 +msgid "crontab" +msgstr "crontab" + +#: django_celery_beat/models.py:314 +msgid "crontabs" +msgstr "crontabs" + +#: django_celery_beat/models.py:399 +msgid "Name" +msgstr "Nom" + +#: django_celery_beat/models.py:400 +msgid "Short Description For This Task" +msgstr "Description Courte Pour Cette Tâche" + +#: django_celery_beat/models.py:405 +msgid "" +"The Name of the Celery Task that Should be Run. (Example: \"proj.tasks." +"import_contacts\")" +msgstr "" +"Le Nom de la Tâche Celery qui devrait être démarrée. (Exemple: \"proj.tasks." +"import_contacts\")" + +#: django_celery_beat/models.py:413 +msgid "Interval Schedule" +msgstr "Planification intervalée" + +#: django_celery_beat/models.py:414 +msgid "" +"Interval Schedule to run the task on. Set only one schedule type, leave the " +"others null." +msgstr "" +"Planification intervalée pour démarrer cette tâche. Ne mettez qu'un seul " +"type de planification, laissez les autres vides" + +#: django_celery_beat/models.py:419 +msgid "Crontab Schedule" +msgstr "Planification Crontab" + +#: django_celery_beat/models.py:420 +msgid "" +"Crontab Schedule to run the task on. Set only one schedule type, leave the " +"others null." +msgstr "" +"Planification Crontab pour démarrer cette tâche. Ne mettez qu'un seul type " +"de planification, laissez les autres vides" + +#: django_celery_beat/models.py:425 +msgid "Solar Schedule" +msgstr "Planification Solaire" + +#: django_celery_beat/models.py:426 +msgid "" +"Solar Schedule to run the task on. Set only one schedule type, leave the " +"others null." +msgstr "" +"Planification Solaire pour démarrer cette tâche. Ne mettez qu'un seul type " +"de planification, laissez les autres vides" + +#: django_celery_beat/models.py:431 +msgid "Clocked Schedule" +msgstr "Planification Horaire" + +#: django_celery_beat/models.py:432 +msgid "" +"Clocked Schedule to run the task on. Set only one schedule type, leave the " +"others null." +msgstr "" +"Planification Horaire pour démarrer cette tâche. Ne mettez qu'un seul type " +"de planification, laissez les autres vides" + +#: django_celery_beat/models.py:438 +msgid "Positional Arguments" +msgstr "Arguments Positionnels" + +#: django_celery_beat/models.py:440 +msgid "JSON encoded positional arguments (Example: [\"arg1\", \"arg2\"])" +msgstr "Arguments positionnels encodés en JSON (Exemple: [\"arg1\", \"arg2\"])" + +#: django_celery_beat/models.py:445 +msgid "Keyword Arguments" +msgstr "Arguments Nommés" + +#: django_celery_beat/models.py:447 +msgid "JSON encoded keyword arguments (Example: {\"argument\": \"value\"})" +msgstr "Arguments nommés encodés en JSON (Exemple: {\"argument\": \"valeur\"})" + +#: django_celery_beat/models.py:453 +msgid "Queue Override" +msgstr "Surcharge de file d'attente" + +#: django_celery_beat/models.py:455 +msgid "Queue defined in CELERY_TASK_QUEUES. Leave None for default queuing." +msgstr "" +"File d'attente définie dans CELERY_TASK_QEUEUS. Laissez Vide pour la mise en " +"file d'attente par défaut." + +#: django_celery_beat/models.py:464 +msgid "Exchange" +msgstr "Échange" + +#: django_celery_beat/models.py:465 +msgid "Override Exchange for low-level AMQP routing" +msgstr "Surcharge d'échange pour un routage AMQP bas-niveau" + +#: django_celery_beat/models.py:469 +msgid "Routing Key" +msgstr "Clé de routage" + +#: django_celery_beat/models.py:470 +msgid "Override Routing Key for low-level AMQP routing" +msgstr "Surcharge de clé de route pour un routage AMQP bas-niveau" + +#: django_celery_beat/models.py:474 +msgid "AMQP Message Headers" +msgstr "Message d'en-têtes AMQP" + +#: django_celery_beat/models.py:475 +msgid "JSON encoded message headers for the AMQP message." +msgstr "Message d'en-têtes encodés en JSON pour le message AMQP" + +#: django_celery_beat/models.py:481 +msgid "Priority" +msgstr "Priorité" + +#: django_celery_beat/models.py:483 +msgid "" +"Priority Number between 0 and 255. Supported by: RabbitMQ, Redis (priority " +"reversed, 0 is highest)." +msgstr "" +"Valeur de Priorité entre 0 et 255. Supporté par: RabbitMQ, Redis (priorité " +"inversé, 0 est plus élevé)." + +#: django_celery_beat/models.py:488 +msgid "Expires Datetime" +msgstr "Date et heure d'expiration" + +#: django_celery_beat/models.py:490 +msgid "" +"Datetime after which the schedule will no longer trigger the task to run" +msgstr "" +"Date et heure après laquelle la planification ne déclenchera plus la tâche à " +"démarrer" + +#: django_celery_beat/models.py:495 +msgid "Expires timedelta with seconds" +msgstr "Différence de temps en secondes d'expiration" + +#: django_celery_beat/models.py:497 +msgid "" +"Timedelta with seconds which the schedule will no longer trigger the task to " +"run" +msgstr "" +"Différence de temps en secondes à laquelle la planification ne déclenchera " +"plus la tâche à démarrer" + +#: django_celery_beat/models.py:503 +msgid "One-off Task" +msgstr "Tâche Ponctuelle" + +#: django_celery_beat/models.py:505 +msgid "If True, the schedule will only run the task a single time" +msgstr "Si Vrai, la planification ne démarrera la tâche qu'une seule fois" + +#: django_celery_beat/models.py:509 +msgid "Start Datetime" +msgstr "Date et heure de démarrage" + +#: django_celery_beat/models.py:511 +msgid "Datetime when the schedule should begin triggering the task to run" +msgstr "" +"Date et heure à laquelle la planification devrait commencer à déclencher la " +"tâche à démarrer" + +#: django_celery_beat/models.py:522 +msgid "Last Run Datetime" +msgstr "Date et heure du dernier démarrage" + +#: django_celery_beat/models.py:524 +msgid "" +"Datetime that the schedule last triggered the task to run. Reset to None if " +"enabled is set to False." +msgstr "" +"Date et heure à laquelle la planification à dernièrement déclenchée la tâche " +"à démarrer. Est remis à Vide si activé est mis à Faux" + +#: django_celery_beat/models.py:529 +msgid "Total Run Count" +msgstr "Nombre Total de Démarrage" + +#: django_celery_beat/models.py:531 +msgid "Running count of how many times the schedule has triggered the task" +msgstr "Compte combien de fois la planification a déclenchée la tâche" + +#: django_celery_beat/models.py:536 +msgid "Last Modified" +msgstr "Dernière modification" + +#: django_celery_beat/models.py:537 +msgid "Datetime that this PeriodicTask was last modified" +msgstr "Date et heure de la dernière modification de cette Tâche Périodique" + +#: django_celery_beat/models.py:541 +msgid "Description" +msgstr "Description" + +#: django_celery_beat/models.py:543 +msgid "Detailed description about the details of this Periodic Task" +msgstr "Description détaillée à propos des détails de cette Tâche Périodique" + +#: django_celery_beat/models.py:552 +msgid "periodic task" +msgstr "tâche périodiuqe" + +#: django_celery_beat/models.py:553 +msgid "periodic tasks" +msgstr "tâches périodique" diff --git a/django_celery_beat/locale/ru/LC_MESSAGES/django.po b/django_celery_beat/locale/ru/LC_MESSAGES/django.po new file mode 100644 index 0000000..130ab76 --- /dev/null +++ b/django_celery_beat/locale/ru/LC_MESSAGES/django.po @@ -0,0 +1,451 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# FIRST AUTHOR , YEAR. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: 1.5.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2019-06-14 17:06+1000\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: Daniil Kharkov \n" +"Language-Team: LANGUAGE \n" +"Language: ru\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=4; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n" +"%10<=4 && (n%100<12 || n%100>14) ? 1 : n%10==0 || (n%10>=5 && n%10<=9) || (n" +"%100>=11 && n%100<=14)? 2 : 3);\n" + +#: django_celery_beat/admin.py:71 +msgid "Task (registered)" +msgstr "Задача (зарегистрированные)" + +#: django_celery_beat/admin.py:75 +msgid "Task (custom)" +msgstr "Задача (пользовательская)" + +#: django_celery_beat/admin.py:92 +msgid "Need name of task" +msgstr "Укажите название задачи" + +#: django_celery_beat/admin.py:103 +#, python-format +msgid "Unable to parse JSON: %s" +msgstr "Невозможно проанализировать JSON: %s" + +#: django_celery_beat/admin.py:165 +#, python-brace-format +msgid "{0} task{1} {2} successfully {3}" +msgstr "{0} задача {1} {2} успешно {3}" + +#: django_celery_beat/admin.py:168 django_celery_beat/admin.py:230 +msgid "was,were" +msgstr "был, были" + +#: django_celery_beat/admin.py:177 +msgid "Enable selected tasks" +msgstr "Включить выбранные задачи" + +#: django_celery_beat/admin.py:183 +msgid "Disable selected tasks" +msgstr "Выключить выбранные задачи" + +#: django_celery_beat/admin.py:195 +msgid "Toggle activity of selected tasks" +msgstr "Переключить активность выбранных задач" + +#: django_celery_beat/admin.py:215 +#, python-brace-format +msgid "task \"{0}\" not found" +msgstr "задача \"{0}\" не найдена" + +#: django_celery_beat/admin.py:227 +#, python-brace-format +msgid "{0} task{1} {2} successfully run" +msgstr "{0} задача{1} {2} успешно выполнена" + +#: django_celery_beat/admin.py:233 +msgid "Run selected tasks" +msgstr "Запустить выбранные задачи" + +#: django_celery_beat/apps.py:15 +msgid "Periodic Tasks" +msgstr "Периодические Задачи" + +#: django_celery_beat/models.py:29 +msgid "Days" +msgstr "Дни" + +#: django_celery_beat/models.py:30 +msgid "Hours" +msgstr "Часы" + +#: django_celery_beat/models.py:31 +msgid "Minutes" +msgstr "Минуты" + +#: django_celery_beat/models.py:32 +msgid "Seconds" +msgstr "Секунды" + +#: django_celery_beat/models.py:33 +msgid "Microseconds" +msgstr "Микросекунды" + +#: django_celery_beat/models.py:38 +msgid "Day" +msgstr "день" + +#: django_celery_beat/models.py:39 +msgid "Hour" +msgstr "время" + +#: django_celery_beat/models.py:40 +msgid "Minute" +msgstr "минут" + +#: django_celery_beat/models.py:41 +msgid "Second" +msgstr "Секунды" + +#: django_celery_beat/models.py:42 +msgid "Microsecond" +msgstr "Микросекунды" + +#: django_celery_beat/models.py:54 +msgid "Solar Event" +msgstr "Астрономическое" + +#: django_celery_beat/models.py:55 +msgid "The type of solar event when the job should run" +msgstr "Тип астрономического события для запуска задачи" + +#: django_celery_beat/models.py:59 +msgid "Latitude" +msgstr "Широта" + +#: django_celery_beat/models.py:60 +msgid "Run the task when the event happens at this latitude" +msgstr "Запуск задачи, когда событие происходит на данной широте" + +#: django_celery_beat/models.py:65 +msgid "Longitude" +msgstr "Долгота" + +#: django_celery_beat/models.py:66 +msgid "Run the task when the event happens at this longitude" +msgstr "Запуск задачи, когда событие происходит на данной долготе" + +#: django_celery_beat/models.py:73 +msgid "solar event" +msgstr "астрономическое событие" + +#: django_celery_beat/models.py:74 +msgid "solar events" +msgstr "астрономические события" + +#: django_celery_beat/models.py:124 +msgid "Number of Periods" +msgstr "Число периодов" + +#: django_celery_beat/models.py:125 +msgid "Number of interval periods to wait before running the task again" +msgstr "Количество периодов интервала перед новым запуском задачи" + +#: django_celery_beat/models.py:131 +msgid "Interval Period" +msgstr "Интервальный период" + +#: django_celery_beat/models.py:132 +msgid "The type of period between task runs (Example: days)" +msgstr "Тип периода между запусками задачи (Например: дни)" + +#: django_celery_beat/models.py:138 +msgid "interval" +msgstr "интервал" + +#: django_celery_beat/models.py:139 +msgid "intervals" +msgstr "интервалы" + +#: django_celery_beat/models.py:162 +#, python-brace-format +msgid "every {}" +msgstr "каждые {}" + +#: django_celery_beat/models.py:163 +#, python-brace-format +msgid "every {} {}" +msgstr "каждые {} {}" + +#: django_celery_beat/models.py:175 +msgid "Clock Time" +msgstr "Время" + +#: django_celery_beat/models.py:176 +msgid "Run the task at clocked time" +msgstr "Запуск задачи в указанное время" + +#: django_celery_beat/models.py:181 django_celery_beat/models.py:475 +msgid "Enabled" +msgstr "Активна" + +#: django_celery_beat/models.py:182 django_celery_beat/models.py:476 +msgid "Set to False to disable the schedule" +msgstr "Выключите для отключения расписания" + +#: django_celery_beat/models.py:188 django_celery_beat/models.py:189 +msgid "clocked" +msgstr "время" + +#: django_celery_beat/models.py:232 +msgid "Minute(s)" +msgstr "Минуты" + +#: django_celery_beat/models.py:234 +msgid "Cron Minutes to Run. Use \"*\" for \"all\". (Example: \"0,30\")" +msgstr "Cron минуты. Используйте \"*\" для \"каждую\". (Например: \"0,30\")" + +#: django_celery_beat/models.py:239 +msgid "Hour(s)" +msgstr "Часы" + +#: django_celery_beat/models.py:241 +msgid "Cron Hours to Run. Use \"*\" for \"all\". (Example: \"8,20\")" +msgstr "Cron часы. Используйте \"*\" для \"каждый\". (Например: \"8,20\")" + +#: django_celery_beat/models.py:246 +msgid "Day(s) Of The Week" +msgstr "Дни недели" + +#: django_celery_beat/models.py:248 +msgid "Cron Days Of The Week to Run. Use \"*\" for \"all\". (Example: \"0,5\")" +msgstr "Cron дни недели. Используйте \"*\" для \"каждый\". (Например: \"0,5\")" + +#: django_celery_beat/models.py:254 +msgid "Day(s) Of The Month" +msgstr "Дни" + +#: django_celery_beat/models.py:256 +msgid "" +"Cron Days Of The Month to Run. Use \"*\" for \"all\". (Example: \"1,15\")" +msgstr "" +"Cron дни. Используйте \"*\" для \"каждый\". (Например: \"1,15\")" + +#: django_celery_beat/models.py:262 +msgid "Month(s) Of The Year" +msgstr "Месяцы" + +#: django_celery_beat/models.py:264 +msgid "" +"Cron Months Of The Year to Run. Use \"*\" for \"all\". (Example: \"0,6\")" +msgstr "" +"Cron месяцы. Используйте \"*\" для \"каждый\". (Например: \"0,6\")" + +#: django_celery_beat/models.py:271 +msgid "Cron Timezone" +msgstr "Временная зона для Cron" + +#: django_celery_beat/models.py:273 +msgid "Timezone to Run the Cron Schedule on. Default is UTC." +msgstr "Временная зона для Cron расписания. UTC по умолчанию." + +#: django_celery_beat/models.py:279 +msgid "crontab" +msgstr "crontab" + +#: django_celery_beat/models.py:280 +msgid "crontabs" +msgstr "crontab" + +#: django_celery_beat/models.py:366 +msgid "Name" +msgstr "Название" + +#: django_celery_beat/models.py:367 +msgid "Short Description For This Task" +msgstr "Краткое описание для этой задачи" + +#: django_celery_beat/models.py:372 +msgid "" +"The Name of the Celery Task that Should be Run. (Example: \"proj.tasks." +"import_contacts\")" +msgstr "" +"Имя запускаемой Celery задачи. (Например: \"proj.tasks." +"import_contacts\")" + +#: django_celery_beat/models.py:380 +msgid "Interval Schedule" +msgstr "Интервал" + +#: django_celery_beat/models.py:381 +msgid "" +"Interval Schedule to run the task on. Set only one schedule type, leave the " +"others null." +msgstr "Интервальное расписание для запуска задачи. Выберите только один тип " +"расписания, остальные оставьте пустыми." + +#: django_celery_beat/models.py:386 +msgid "Crontab Schedule" +msgstr "Crontab" + +#: django_celery_beat/models.py:387 +msgid "" +"Crontab Schedule to run the task on. Set only one schedule type, leave the " +"others null." +msgstr "Crontab расписание для запуска задачи. Выберите только один тип " +"расписания, остальные оставьте пустыми." + +#: django_celery_beat/models.py:392 +msgid "Solar Schedule" +msgstr "Астрономическое" + +#: django_celery_beat/models.py:393 +msgid "" +"Solar Schedule to run the task on. Set only one schedule type, leave the " +"others null." +msgstr "Астрономическое расписание для запуска задачи. Выберите только один " +"тип расписания, остальные оставьте пустыми." + +#: django_celery_beat/models.py:398 +msgid "Clocked Schedule" +msgstr "Хронометрическое" + +#: django_celery_beat/models.py:399 +msgid "" +"Clocked Schedule to run the task on. Set only one schedule type, leave the " +"others null." +msgstr "Хронометрическое расписание для запуска задачи. Выберите только один " +"тип расписания, остальные оставьте пустыми." + +#: django_celery_beat/models.py:405 +msgid "Positional Arguments" +msgstr "Позиционные аргументы" + +#: django_celery_beat/models.py:407 +msgid "JSON encoded positional arguments (Example: [\"arg1\", \"arg2\"])" +msgstr "Закодированные в JSON позиционные аргументы (Например: [\"arg1\", \"arg2\"])" + +#: django_celery_beat/models.py:412 +msgid "Keyword Arguments" +msgstr "Именованные аргументы" + +#: django_celery_beat/models.py:414 +msgid "JSON encoded keyword arguments (Example: {\"argument\": \"value\"})" +msgstr "Закодированные в JSON именованные аргументы (Например: {\"argument\": \"value\"})" + +#: django_celery_beat/models.py:420 +msgid "Queue Override" +msgstr "Переопределение очереди" + +#: django_celery_beat/models.py:422 +msgid "Queue defined in CELERY_TASK_QUEUES. Leave None for default queuing." +msgstr "Очередь задана в CELERY_TASK_QUEUES. Оставьте None для стандартного распределения." + +#: django_celery_beat/models.py:431 +msgid "Exchange" +msgstr "Exchange" + +#: django_celery_beat/models.py:432 +msgid "Override Exchange for low-level AMQP routing" +msgstr "Override Exchange for low-level AMQP routing" + +#: django_celery_beat/models.py:436 +msgid "Routing Key" +msgstr "Ключ маршрутизации" + +#: django_celery_beat/models.py:437 +msgid "Override Routing Key for low-level AMQP routing" +msgstr "Override Routing Key for low-level AMQP routing" + +#: django_celery_beat/models.py:441 +msgid "AMQP Message Headers" +msgstr "Заголовки сообщения AMQP" + +#: django_celery_beat/models.py:442 +msgid "JSON encoded message headers for the AMQP message." +msgstr "Закодированные в JSON заголовки для AMQP сообщения." + +#: django_celery_beat/models.py:448 +msgid "Priority" +msgstr "Приоритет" + +#: django_celery_beat/models.py:450 +msgid "" +"Priority Number between 0 and 255. Supported by: RabbitMQ, Redis (priority " +"reversed, 0 is highest)." +msgstr "" +"Число между 0 и 255. Поддерживается в: RabbitMQ, Redis (приоритет " +"по убыванию, 0 наивысший)." + +#: django_celery_beat/models.py:455 +msgid "Expires Datetime" +msgstr "Истекает" + +#: django_celery_beat/models.py:457 +msgid "" +"Datetime after which the schedule will no longer trigger the task to run" +msgstr "Время, после которого расписание больше не будет запускать задачу" + +#: django_celery_beat/models.py:462 +msgid "One-off Task" +msgstr "Одноразовая задача" + +#: django_celery_beat/models.py:464 +msgid "If True, the schedule will only run the task a single time" +msgstr "Если включено, то задача будет запущена только один раз" + +#: django_celery_beat/models.py:468 +msgid "Start Datetime" +msgstr "Время начала" + +#: django_celery_beat/models.py:470 +msgid "Datetime when the schedule should begin triggering the task to run" +msgstr "Время начала вызовов задачи расписанием" + +#: django_celery_beat/models.py:481 +msgid "Last Run Datetime" +msgstr "Последний запуск" + +#: django_celery_beat/models.py:483 +msgid "" +"Datetime that the schedule last triggered the task to run. Reset to None if " +"enabled is set to False." +msgstr "" +"Время последнего вызова задачи. None если задача выключена." + +#: django_celery_beat/models.py:488 +msgid "Total Run Count" +msgstr "Запусков всего" + +#: django_celery_beat/models.py:490 +msgid "Running count of how many times the schedule has triggered the task" +msgstr "Количество запусков задачи этим расписанием" + +#: django_celery_beat/models.py:495 +msgid "Last Modified" +msgstr "Последнее изменение" + +#: django_celery_beat/models.py:496 +msgid "Datetime that this PeriodicTask was last modified" +msgstr "Время последнего изменения этой задачи" + +#: django_celery_beat/models.py:500 +msgid "Description" +msgstr "Описание" + +#: django_celery_beat/models.py:502 +msgid "Detailed description about the details of this Periodic Task" +msgstr "Подробное описание того, что делает эта задача" + +#: django_celery_beat/models.py:511 +msgid "periodic task" +msgstr "периодическая задача" + +#: django_celery_beat/models.py:512 +msgid "periodic tasks" +msgstr "периодические задачи" diff --git a/django_celery_beat/locale/zh_hans/LC_MESSAGES/django.po b/django_celery_beat/locale/zh_hans/LC_MESSAGES/django.po new file mode 100644 index 0000000..367914d --- /dev/null +++ b/django_celery_beat/locale/zh_hans/LC_MESSAGES/django.po @@ -0,0 +1,486 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# FIRST AUTHOR , YEAR. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2021-02-19 00:36+0800\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: Rainshaw \n" +"Language-Team: x_zhuo \n" +"Language: zh-hans \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=1; plural=0;\n" + +#: .\django_celery_beat\admin.py:64 +msgid "Task (registered)" +msgstr "任务 (已注册的)" + +#: .\django_celery_beat\admin.py:68 +msgid "Task (custom)" +msgstr "任务 (自定义)" + +#: .\django_celery_beat\admin.py:85 +msgid "Need name of task" +msgstr "任务需要一个名称" + +#: .\django_celery_beat\admin.py:91 .\django_celery_beat\models.py:589 +msgid "Only one can be set, in expires and expire_seconds" +msgstr "" + +#: .\django_celery_beat\admin.py:101 +#, python-format +msgid "Unable to parse JSON: %s" +msgstr "无法解析 JSON: %s" + +#: .\django_celery_beat\admin.py:167 +#, python-brace-format +msgid "{0} task{1} {2} successfully {3}" +msgstr "{0} 任务{1} {2} 成功 {3}" + +#: .\django_celery_beat\admin.py:170 .\django_celery_beat\admin.py:232 +msgid "was,were" +msgstr "将" + +#: .\django_celery_beat\admin.py:179 +msgid "Enable selected tasks" +msgstr "启用选中的任务" + +#: .\django_celery_beat\admin.py:185 +msgid "Disable selected tasks" +msgstr "禁用选中的任务" + +#: .\django_celery_beat\admin.py:197 +msgid "Toggle activity of selected tasks" +msgstr "切换选中的任务" + +#: .\django_celery_beat\admin.py:217 +#, python-brace-format +msgid "task \"{0}\" not found" +msgstr "" + +#: .\django_celery_beat\admin.py:229 +#, python-brace-format +msgid "{0} task{1} {2} successfully run" +msgstr "{0} 任务{1} {2} 启动成功" + +#: .\django_celery_beat\admin.py:235 +msgid "Run selected tasks" +msgstr "运行选中的任务" + +#: .\django_celery_beat\apps.py:13 +msgid "Periodic Tasks" +msgstr "周期任务" + +#: .\django_celery_beat\models.py:26 +msgid "Days" +msgstr "天" + +#: .\django_celery_beat\models.py:27 +msgid "Hours" +msgstr "小时" + +#: .\django_celery_beat\models.py:28 +msgid "Minutes" +msgstr "分钟" + +#: .\django_celery_beat\models.py:29 +msgid "Seconds" +msgstr "秒" + +#: .\django_celery_beat\models.py:30 +msgid "Microseconds" +msgstr "毫秒" + +#: .\django_celery_beat\models.py:34 +msgid "Day" +msgstr "天" + +#: .\django_celery_beat\models.py:35 +msgid "Hour" +msgstr "小时" + +#: .\django_celery_beat\models.py:36 +msgid "Minute" +msgstr "分钟" + +#: .\django_celery_beat\models.py:37 +msgid "Second" +msgstr "秒" + +#: .\django_celery_beat\models.py:38 +msgid "Microsecond" +msgstr "毫秒" + +#: .\django_celery_beat\models.py:42 +msgid "Astronomical dawn" +msgstr "天文黎明" + +#: .\django_celery_beat\models.py:43 +msgid "Civil dawn" +msgstr "民事黎明" + +#: .\django_celery_beat\models.py:44 +msgid "Nautical dawn" +msgstr "航海黎明" + +#: .\django_celery_beat\models.py:45 +msgid "Astronomical dusk" +msgstr "天文黄昏" + +#: .\django_celery_beat\models.py:46 +msgid "Civil dusk" +msgstr "民事黄昏" + +#: .\django_celery_beat\models.py:47 +msgid "Nautical dusk" +msgstr "航海黄昏" + +#: .\django_celery_beat\models.py:48 +msgid "Solar noon" +msgstr "正午" + +#: .\django_celery_beat\models.py:49 +msgid "Sunrise" +msgstr "日出" + +#: .\django_celery_beat\models.py:50 +msgid "Sunset" +msgstr "日落" + +#: .\django_celery_beat\models.py:84 +msgid "Solar Event" +msgstr "日程事件" + +#: .\django_celery_beat\models.py:85 +msgid "The type of solar event when the job should run" +msgstr "当任务应该执行时的日程事件类型" + +#: .\django_celery_beat\models.py:89 +msgid "Latitude" +msgstr "纬度" + +#: .\django_celery_beat\models.py:90 +msgid "Run the task when the event happens at this latitude" +msgstr "当在此纬度发生事件时执行任务" + +#: .\django_celery_beat\models.py:95 +msgid "Longitude" +msgstr "经度" + +#: .\django_celery_beat\models.py:96 +msgid "Run the task when the event happens at this longitude" +msgstr "当在此经度发生事件时执行任务" + +#: .\django_celery_beat\models.py:103 +msgid "solar event" +msgstr "日程事件" + +#: .\django_celery_beat\models.py:104 +msgid "solar events" +msgstr "日程事件" + +#: .\django_celery_beat\models.py:153 +msgid "Number of Periods" +msgstr "周期数" + +#: .\django_celery_beat\models.py:154 +msgid "Number of interval periods to wait before running the task again" +msgstr "再次执行任务之前要等待的间隔周期数" + +#: .\django_celery_beat\models.py:160 +msgid "Interval Period" +msgstr "间隔周期" + +#: .\django_celery_beat\models.py:161 +msgid "The type of period between task runs (Example: days)" +msgstr "任务每次执行之间的时间间隔类型(例如:天)" + +#: .\django_celery_beat\models.py:167 +msgid "interval" +msgstr "间隔" + +#: .\django_celery_beat\models.py:168 +msgid "intervals" +msgstr "间隔" + +#: .\django_celery_beat\models.py:196 +msgid "every {}" +msgstr "每 {}" + +#: .\django_celery_beat\models.py:201 +msgid "every {} {}" +msgstr "每 {} {}" + +#: .\django_celery_beat\models.py:212 +msgid "Clock Time" +msgstr "定时时间" + +#: .\django_celery_beat\models.py:213 +msgid "Run the task at clocked time" +msgstr "在定时时间执行任务" + +#: .\django_celery_beat\models.py:219 .\django_celery_beat\models.py:220 +msgid "clocked" +msgstr "定时" + +#: .\django_celery_beat\models.py:260 +msgid "Minute(s)" +msgstr "分钟" + +#: .\django_celery_beat\models.py:262 +msgid "Cron Minutes to Run. Use \"*\" for \"all\". (Example: \"0,30\")" +msgstr "计划执行的分钟。 将\"*\"用作\"all\"。(例如:\"0,30\")" + +#: .\django_celery_beat\models.py:267 +msgid "Hour(s)" +msgstr "小时" + +#: .\django_celery_beat\models.py:269 +msgid "Cron Hours to Run. Use \"*\" for \"all\". (Example: \"8,20\")" +msgstr "计划执行的小时。 将\"*\"用作\"all\"。(例如:\"8,20\")" + +#: .\django_celery_beat\models.py:274 +msgid "Day(s) Of The Week" +msgstr "一个星期的第几天" + +#: .\django_celery_beat\models.py:276 +msgid "Cron Days Of The Week to Run. Use \"*\" for \"all\". (Example: \"0,5\")" +msgstr "计划执行的每周的第几天。将\"*\"用作\"all\"。(例如:\"0,5\")" + +#: .\django_celery_beat\models.py:282 +msgid "Day(s) Of The Month" +msgstr "一个月的第几天" + +#: .\django_celery_beat\models.py:284 +msgid "" +"Cron Days Of The Month to Run. Use \"*\" for \"all\". (Example: \"1,15\")" +msgstr "计划执行的每个月的第几天。将\"*\"用作\"all\"。(例如:\"0,5\")" + +#: .\django_celery_beat\models.py:290 +msgid "Month(s) Of The Year" +msgstr "一年的第几个月" + +#: .\django_celery_beat\models.py:292 +msgid "" +"Cron Months Of The Year to Run. Use \"*\" for \"all\". (Example: \"0,6\")" +msgstr "计划执行的每一年的第几个月。将\"*\"用作\"all\"。(例如:\"0,5\")" + +#: .\django_celery_beat\models.py:299 +msgid "Cron Timezone" +msgstr "计划任务的时区" + +#: .\django_celery_beat\models.py:301 +msgid "Timezone to Run the Cron Schedule on. Default is UTC." +msgstr "执行计划任务表的时区。 默认为UTC。" + +#: .\django_celery_beat\models.py:307 +msgid "crontab" +msgstr "计划任务" + +#: .\django_celery_beat\models.py:308 +msgid "crontabs" +msgstr "计划任务" + +#: .\django_celery_beat\models.py:393 +msgid "Name" +msgstr "任务名" + +#: .\django_celery_beat\models.py:394 +msgid "Short Description For This Task" +msgstr "该任务的简短说明" + +#: .\django_celery_beat\models.py:399 +msgid "" +"The Name of the Celery Task that Should be Run. (Example: \"proj.tasks." +"import_contacts\")" +msgstr "被执行的任务的名称。(例如:\"proj.tasks.import_contacts\")" + +#: .\django_celery_beat\models.py:407 +msgid "Interval Schedule" +msgstr "间隔时间表" + +#: .\django_celery_beat\models.py:408 +msgid "" +"Interval Schedule to run the task on. Set only one schedule type, leave the " +"others null." +msgstr "执行任务的间隔时间表。 仅设置一种时间表类型,将其他保留为空。" + +#: .\django_celery_beat\models.py:413 +msgid "Crontab Schedule" +msgstr "计划时间表" + +#: .\django_celery_beat\models.py:414 +msgid "" +"Crontab Schedule to run the task on. Set only one schedule type, leave the " +"others null." +msgstr "执行任务的计划时间表。 仅设置一种时间表类型,将其他保留为空。" + +#: .\django_celery_beat\models.py:419 +msgid "Solar Schedule" +msgstr "日程时间表" + +#: .\django_celery_beat\models.py:420 +msgid "" +"Solar Schedule to run the task on. Set only one schedule type, leave the " +"others null." +msgstr "执行任务的日程时间表。 仅设置一种时间表类型,将其他保留为空。" + +#: .\django_celery_beat\models.py:425 +msgid "Clocked Schedule" +msgstr "定时时间表" + +#: .\django_celery_beat\models.py:426 +msgid "" +"Clocked Schedule to run the task on. Set only one schedule type, leave the " +"others null." +msgstr "执行任务的定时时间表。 仅设置一种时间表类型,将其他保留为空。" + +#: .\django_celery_beat\models.py:432 +msgid "Positional Arguments" +msgstr "位置参数" + +#: .\django_celery_beat\models.py:434 +msgid "JSON encoded positional arguments (Example: [\"arg1\", \"arg2\"])" +msgstr "JSON编码的位置参数(例如: [\"arg1\", \"arg2\"])" + +#: .\django_celery_beat\models.py:439 +msgid "Keyword Arguments" +msgstr "关键字参数" + +#: .\django_celery_beat\models.py:441 +msgid "JSON encoded keyword arguments (Example: {\"argument\": \"value\"})" +msgstr "JSON编码的关键字参数(例如: {\"argument\": \"value\"})" + +#: .\django_celery_beat\models.py:447 +msgid "Queue Override" +msgstr "队列覆盖" + +#: .\django_celery_beat\models.py:449 +msgid "Queue defined in CELERY_TASK_QUEUES. Leave None for default queuing." +msgstr "在 CELERY_TASK_QUEUES 定义的队列。保留空以进行默认排队。" + +#: .\django_celery_beat\models.py:458 +msgid "Exchange" +msgstr "交换机" + +#: .\django_celery_beat\models.py:459 +msgid "Override Exchange for low-level AMQP routing" +msgstr "覆盖交换机以进行低层级AMQP路由" + +#: .\django_celery_beat\models.py:463 +msgid "Routing Key" +msgstr "路由键" + +#: .\django_celery_beat\models.py:464 +msgid "Override Routing Key for low-level AMQP routing" +msgstr "覆盖路由键以进行低层级AMQP路由" + +#: .\django_celery_beat\models.py:468 +msgid "AMQP Message Headers" +msgstr "AMQP消息头" + +#: .\django_celery_beat\models.py:469 +msgid "JSON encoded message headers for the AMQP message." +msgstr "AMQP消息的JSON编码消息头。" + +#: .\django_celery_beat\models.py:475 +msgid "Priority" +msgstr "优先级" + +#: .\django_celery_beat\models.py:477 +msgid "" +"Priority Number between 0 and 255. Supported by: RabbitMQ, Redis (priority " +"reversed, 0 is highest)." +msgstr "优先级数字,介于0和255之间。支持者:RabbitMQ,Redis(优先级颠倒,0是最高)。" + +#: .\django_celery_beat\models.py:482 +msgid "Expires Datetime" +msgstr "过期时刻" + +#: .\django_celery_beat\models.py:484 +msgid "" +"Datetime after which the schedule will no longer trigger the task to run" +msgstr "过期时刻,计划表将在此时刻后不再触发任务执行" + +#: .\django_celery_beat\models.py:489 +msgid "Expires timedelta with seconds" +msgstr "过期时间间隔,以秒为单位" + +#: .\django_celery_beat\models.py:491 +msgid "" +"Timedelta with seconds which the schedule will no longer trigger the task to " +"run" +msgstr "再过该秒后,不再触发任务执行" + +#: .\django_celery_beat\models.py:497 +msgid "One-off Task" +msgstr "一次任务" + +#: .\django_celery_beat\models.py:499 +msgid "If True, the schedule will only run the task a single time" +msgstr "如果为True,则计划将仅运行任务一次" + +#: .\django_celery_beat\models.py:503 +msgid "Start Datetime" +msgstr "开始时间" + +#: .\django_celery_beat\models.py:505 +msgid "Datetime when the schedule should begin triggering the task to run" +msgstr "时间表开始触发任务执行的时刻" + +#: .\django_celery_beat\models.py:510 +msgid "Enabled" +msgstr "已启用" + +#: .\django_celery_beat\models.py:511 +msgid "Set to False to disable the schedule" +msgstr "设置为False可禁用时间表" + +#: .\django_celery_beat\models.py:516 +msgid "Last Run Datetime" +msgstr "上次运行时刻" + +#: .\django_celery_beat\models.py:518 +msgid "" +"Datetime that the schedule last triggered the task to run. Reset to None if " +"enabled is set to False." +msgstr "最后一次触发任务执行的时刻。 如果enabled设置为False,则重置为None。" + +#: .\django_celery_beat\models.py:523 +msgid "Total Run Count" +msgstr "总运行次数" + +#: .\django_celery_beat\models.py:525 +msgid "Running count of how many times the schedule has triggered the task" +msgstr "任务执行多少次的运行计数" + +#: .\django_celery_beat\models.py:530 +msgid "Last Modified" +msgstr "最后修改" + +#: .\django_celery_beat\models.py:531 +msgid "Datetime that this PeriodicTask was last modified" +msgstr "该周期性任务的最后修改时刻" + +#: .\django_celery_beat\models.py:535 +msgid "Description" +msgstr "描述" + +#: .\django_celery_beat\models.py:537 +msgid "Detailed description about the details of this Periodic Task" +msgstr "有关此周期性任务的详细信息" + +#: .\django_celery_beat\models.py:546 +msgid "periodic task" +msgstr "周期性任务" + +#: .\django_celery_beat\models.py:547 +msgid "periodic tasks" +msgstr "周期性任务" diff --git a/django_celery_beat/managers.py b/django_celery_beat/managers.py new file mode 100644 index 0000000..8428b9a --- /dev/null +++ b/django_celery_beat/managers.py @@ -0,0 +1,32 @@ +"""Model managers.""" +from django.db import models +from django.db.models.query import QuerySet + + +class ExtendedQuerySet(QuerySet): + """Base class for query sets.""" + + def update_or_create(self, defaults=None, **kwargs): + obj, created = self.get_or_create(defaults=defaults, **kwargs) + if not created: + self._update_model_with_dict(obj, dict(defaults or {}, **kwargs)) + return obj + + def _update_model_with_dict(self, obj, fields): + [ + setattr(obj, attr_name, attr_value) + for attr_name, attr_value in fields.items() + ] + obj.save() + return obj + + +class ExtendedManager(models.Manager.from_queryset(ExtendedQuerySet)): + """Manager with common utilities.""" + + +class PeriodicTaskManager(ExtendedManager): + """Manager for PeriodicTask model.""" + + def enabled(self): + return self.filter(enabled=True) diff --git a/django_celery_beat/migrations/0001_initial.py b/django_celery_beat/migrations/0001_initial.py new file mode 100644 index 0000000..3c8ae4d --- /dev/null +++ b/django_celery_beat/migrations/0001_initial.py @@ -0,0 +1,129 @@ +# Generated by Django 1.9.5 on 2016-08-04 02:13 +from django.db import migrations, models +import django.db.models.deletion + + +class Migration(migrations.Migration): + + initial = True + + dependencies = [ + ] + + operations = [ + migrations.CreateModel( + name='CrontabSchedule', + fields=[ + ('id', models.AutoField( + auto_created=True, primary_key=True, + serialize=False, verbose_name='ID')), + ('minute', models.CharField( + default='*', max_length=64, verbose_name='minute')), + ('hour', models.CharField( + default='*', max_length=64, verbose_name='hour')), + ('day_of_week', models.CharField( + default='*', max_length=64, verbose_name='day of week')), + ('day_of_month', models.CharField( + default='*', max_length=64, verbose_name='day of month')), + ('month_of_year', models.CharField( + default='*', max_length=64, verbose_name='month of year')), + ], + options={ + 'ordering': [ + 'month_of_year', 'day_of_month', + 'day_of_week', 'hour', 'minute', + ], + 'verbose_name': 'crontab', + 'verbose_name_plural': 'crontabs', + }, + ), + migrations.CreateModel( + name='IntervalSchedule', + fields=[ + ('id', models.AutoField( + auto_created=True, primary_key=True, + serialize=False, verbose_name='ID')), + ('every', models.IntegerField(verbose_name='every')), + ('period', models.CharField( + choices=[ + ('days', 'Days'), + ('hours', 'Hours'), + ('minutes', 'Minutes'), + ('seconds', 'Seconds'), + ('microseconds', 'Microseconds'), + ], + max_length=24, + verbose_name='period')), + ], + options={ + 'ordering': ['period', 'every'], + 'verbose_name': 'interval', + 'verbose_name_plural': 'intervals', + }, + ), + migrations.CreateModel( + name='PeriodicTask', + fields=[ + ('id', models.AutoField( + auto_created=True, primary_key=True, + serialize=False, verbose_name='ID')), + ('name', models.CharField( + help_text='Useful description', max_length=200, + unique=True, verbose_name='name')), + ('task', models.CharField( + max_length=200, verbose_name='task name')), + ('args', models.TextField( + blank=True, default='[]', + help_text='JSON encoded positional arguments', + verbose_name='Arguments')), + ('kwargs', models.TextField( + blank=True, default='{}', + help_text='JSON encoded keyword arguments', + verbose_name='Keyword arguments')), + ('queue', models.CharField( + blank=True, default=None, + help_text='Queue defined in CELERY_TASK_QUEUES', + max_length=200, null=True, verbose_name='queue')), + ('exchange', models.CharField( + blank=True, default=None, max_length=200, + null=True, verbose_name='exchange')), + ('routing_key', models.CharField( + blank=True, default=None, + max_length=200, null=True, verbose_name='routing key')), + ('expires', models.DateTimeField( + blank=True, null=True, verbose_name='expires')), + ('enabled', models.BooleanField( + default=True, verbose_name='enabled')), + ('last_run_at', models.DateTimeField( + blank=True, editable=False, null=True)), + ('total_run_count', models.PositiveIntegerField( + default=0, editable=False)), + ('date_changed', models.DateTimeField(auto_now=True)), + ('description', models.TextField( + blank=True, verbose_name='description')), + ('crontab', models.ForeignKey( + blank=True, help_text='Use one of interval/crontab', + null=True, on_delete=django.db.models.deletion.CASCADE, + to='django_celery_beat.CrontabSchedule', + verbose_name='crontab')), + ('interval', models.ForeignKey( + blank=True, null=True, + on_delete=django.db.models.deletion.CASCADE, + to='django_celery_beat.IntervalSchedule', + verbose_name='interval')), + ], + options={ + 'verbose_name': 'periodic task', + 'verbose_name_plural': 'periodic tasks', + }, + ), + migrations.CreateModel( + name='PeriodicTasks', + fields=[ + ('ident', models.SmallIntegerField( + default=1, primary_key=True, + serialize=False, unique=True)), + ('last_update', models.DateTimeField()), + ], + ), + ] diff --git a/django_celery_beat/migrations/0002_auto_20161118_0346.py b/django_celery_beat/migrations/0002_auto_20161118_0346.py new file mode 100644 index 0000000..6f7fc3d --- /dev/null +++ b/django_celery_beat/migrations/0002_auto_20161118_0346.py @@ -0,0 +1,49 @@ +# Generated by Django 1.10.3 on 2016-11-18 03:46 +from django.db import migrations, models +import django.db.models.deletion + + +class Migration(migrations.Migration): + + dependencies = [ + ('django_celery_beat', '0001_initial'), + ] + + operations = [ + migrations.CreateModel( + name='SolarSchedule', + fields=[ + ('id', models.AutoField( + auto_created=True, primary_key=True, + serialize=False, verbose_name='ID')), + ('event', models.CharField( + choices=[('dusk_nautical', 'dusk_nautical'), + ('dawn_astronomical', 'dawn_astronomical'), + ('dawn_nautical', 'dawn_nautical'), + ('dawn_civil', 'dawn_civil'), + ('sunset', 'sunset'), + ('solar_noon', 'solar_noon'), + ('dusk_astronomical', 'dusk_astronomical'), + ('sunrise', 'sunrise'), + ('dusk_civil', 'dusk_civil')], + max_length=24, verbose_name='event')), + ('latitude', models.DecimalField( + decimal_places=6, max_digits=9, verbose_name='latitude')), + ('longitude', models.DecimalField( + decimal_places=6, max_digits=9, verbose_name='latitude')), + ], + options={ + 'ordering': ['event', 'latitude', 'longitude'], + 'verbose_name': 'solar', + 'verbose_name_plural': 'solars', + }, + ), + migrations.AddField( + model_name='periodictask', + name='solar', + field=models.ForeignKey( + blank=True, help_text='Use a solar schedule', + null=True, on_delete=django.db.models.deletion.CASCADE, + to='django_celery_beat.SolarSchedule', verbose_name='solar'), + ), + ] diff --git a/django_celery_beat/migrations/0003_auto_20161209_0049.py b/django_celery_beat/migrations/0003_auto_20161209_0049.py new file mode 100644 index 0000000..3688106 --- /dev/null +++ b/django_celery_beat/migrations/0003_auto_20161209_0049.py @@ -0,0 +1,23 @@ +# Generated by Django 1.9.11 on 2016-12-09 00:49 +from django.db import migrations + + +class Migration(migrations.Migration): + + dependencies = [ + ('django_celery_beat', '0002_auto_20161118_0346'), + ] + + operations = [ + migrations.AlterModelOptions( + name='solarschedule', + options={ + 'ordering': ('event', 'latitude', 'longitude'), + 'verbose_name': 'solar event', + 'verbose_name_plural': 'solar events'}, + ), + migrations.AlterUniqueTogether( + name='solarschedule', + unique_together=set([('event', 'latitude', 'longitude')]), + ), + ] diff --git a/django_celery_beat/migrations/0004_auto_20170221_0000.py b/django_celery_beat/migrations/0004_auto_20170221_0000.py new file mode 100644 index 0000000..409e9d8 --- /dev/null +++ b/django_celery_beat/migrations/0004_auto_20170221_0000.py @@ -0,0 +1,19 @@ +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('django_celery_beat', '0003_auto_20161209_0049'), + ] + + operations = [ + migrations.AlterField( + model_name='solarschedule', + name='longitude', + field=models.DecimalField( + verbose_name='longitude', + max_digits=9, + decimal_places=6), + ), + ] diff --git a/django_celery_beat/migrations/0005_add_solarschedule_events_choices.py b/django_celery_beat/migrations/0005_add_solarschedule_events_choices.py new file mode 100644 index 0000000..64897c1 --- /dev/null +++ b/django_celery_beat/migrations/0005_add_solarschedule_events_choices.py @@ -0,0 +1,28 @@ +# Generated by Django 1.9.1 on 2017-11-01 15:53 +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('django_celery_beat', '0004_auto_20170221_0000'), + ] + + operations = [ + migrations.AlterField( + model_name='solarschedule', + name='event', + field=models.CharField(choices=[ + ('dawn_astronomical', 'dawn_astronomical'), + ('dawn_civil', 'dawn_civil'), + ('dawn_nautical', 'dawn_nautical'), + ('dusk_astronomical', 'dusk_astronomical'), + ('dusk_civil', 'dusk_civil'), + ('dusk_nautical', 'dusk_nautical'), + ('solar_noon', 'solar_noon'), + ('sunrise', 'sunrise'), + ('sunset', 'sunset') + ], + max_length=24, verbose_name='event'), + ), + ] diff --git a/django_celery_beat/migrations/0006_auto_20180210_1226.py b/django_celery_beat/migrations/0006_auto_20180210_1226.py new file mode 100644 index 0000000..f7552e7 --- /dev/null +++ b/django_celery_beat/migrations/0006_auto_20180210_1226.py @@ -0,0 +1,30 @@ +# Generated by Django 2.0.1 on 2018-02-10 12:26 +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('django_celery_beat', '0005_add_solarschedule_events_choices'), + ] + + operations = [ + migrations.AlterField( + model_name='crontabschedule', + name='day_of_month', + field=models.CharField(default='*', max_length=124, + verbose_name='day of month'), + ), + migrations.AlterField( + model_name='crontabschedule', + name='hour', + field=models.CharField(default='*', max_length=96, + verbose_name='hour'), + ), + migrations.AlterField( + model_name='crontabschedule', + name='minute', + field=models.CharField(default='*', max_length=240, + verbose_name='minute'), + ), + ] diff --git a/django_celery_beat/migrations/0006_auto_20180322_0932.py b/django_celery_beat/migrations/0006_auto_20180322_0932.py new file mode 100644 index 0000000..9270b3d --- /dev/null +++ b/django_celery_beat/migrations/0006_auto_20180322_0932.py @@ -0,0 +1,51 @@ +# Generated by Django 1.11.7 on 2018-03-22 16:32 +from django.db import migrations, models +import timezone_field.fields + + +class Migration(migrations.Migration): + + dependencies = [ + ('django_celery_beat', '0005_add_solarschedule_events_choices'), + # ('django_celery_beat', '0006_auto_20180210_1226'), + ] + + operations = [ + migrations.AlterModelOptions( + name='crontabschedule', + options={ + 'ordering': [ + 'month_of_year', 'day_of_month', + 'day_of_week', 'hour', 'minute', 'timezone' + ], + 'verbose_name': 'crontab', + 'verbose_name_plural': 'crontabs' + }, + ), + migrations.AddField( + model_name='crontabschedule', + name='timezone', + field=timezone_field.fields.TimeZoneField(default='UTC'), + ), + migrations.AlterField( + model_name='crontabschedule', + name='day_of_month', + field=models.CharField( + default='*', max_length=124, verbose_name='day of month' + ), + ), + migrations.AlterField( + model_name='crontabschedule', + name='hour', + field=models.CharField( + default='*', max_length=96, verbose_name='hour' + ), + ), + migrations.AlterField( + model_name='crontabschedule', + name='minute', + field=models.CharField( + default='*', max_length=240, verbose_name='minute' + ), + ), + ] diff --git a/django_celery_beat/migrations/0006_periodictask_priority.py b/django_celery_beat/migrations/0006_periodictask_priority.py new file mode 100644 index 0000000..70c6ee8 --- /dev/null +++ b/django_celery_beat/migrations/0006_periodictask_priority.py @@ -0,0 +1,28 @@ +# Generated by Django 2.0.6 on 2018-10-22 05:20 +import django.core.validators +from django.db import migrations, models + + +class Migration(migrations.Migration): + dependencies = [ + # depends on higher numbers due to a squashed migration + # that was later removed due to migration issues it caused + ('django_celery_beat', '0005_add_solarschedule_events_choices'), + ('django_celery_beat', '0006_auto_20180210_1226'), + ('django_celery_beat', '0006_auto_20180322_0932'), + ('django_celery_beat', '0007_auto_20180521_0826'), + ('django_celery_beat', '0008_auto_20180914_1922'), + ] + + operations = [ + migrations.AddField( + model_name='periodictask', + name='priority', + field=models.PositiveIntegerField( + blank=True, + default=None, + null=True, + validators=[django.core.validators.MaxValueValidator(255)], + verbose_name='priority'), + ), + ] diff --git a/django_celery_beat/migrations/0007_auto_20180521_0826.py b/django_celery_beat/migrations/0007_auto_20180521_0826.py new file mode 100644 index 0000000..4e234c1 --- /dev/null +++ b/django_celery_beat/migrations/0007_auto_20180521_0826.py @@ -0,0 +1,25 @@ +# Generated by Django 1.10.7 on 2018-05-21 08:26 +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('django_celery_beat', '0006_auto_20180322_0932'), + ] + + operations = [ + migrations.AddField( + model_name='periodictask', + name='one_off', + field=models.BooleanField(default=False, + verbose_name='one-off task'), + ), + migrations.AddField( + model_name='periodictask', + name='start_time', + field=models.DateTimeField(blank=True, + null=True, + verbose_name='start_time'), + ), + ] diff --git a/django_celery_beat/migrations/0008_auto_20180914_1922.py b/django_celery_beat/migrations/0008_auto_20180914_1922.py new file mode 100644 index 0000000..0990f91 --- /dev/null +++ b/django_celery_beat/migrations/0008_auto_20180914_1922.py @@ -0,0 +1,57 @@ +# Generated by Django 2.0.3 on 2018-09-14 19:22 +from django.db import migrations, models +from django_celery_beat import validators + + +class Migration(migrations.Migration): + dependencies = [ + ('django_celery_beat', '0007_auto_20180521_0826'), + ] + + operations = [ + migrations.AlterField( + model_name='crontabschedule', + name='day_of_month', + field=models.CharField( + default='*', max_length=124, + validators=[validators.day_of_month_validator], + verbose_name='day of month' + ), + ), + migrations.AlterField( + model_name='crontabschedule', + name='day_of_week', + field=models.CharField( + default='*', max_length=64, + validators=[validators.day_of_week_validator], + verbose_name='day of week' + ), + ), + migrations.AlterField( + model_name='crontabschedule', + name='hour', + field=models.CharField( + default='*', max_length=96, + validators=[validators.hour_validator], + verbose_name='hour' + ), + ), + migrations.AlterField( + model_name='crontabschedule', + name='minute', + field=models.CharField( + default='*', max_length=240, + validators=[validators.minute_validator], + verbose_name='minute' + ), + ), + migrations.AlterField( + model_name='crontabschedule', + name='month_of_year', + field=models.CharField( + default='*', max_length=64, + validators=[validators.month_of_year_validator], + verbose_name='month of year' + ), + ), + ] diff --git a/django_celery_beat/migrations/0009_periodictask_headers.py b/django_celery_beat/migrations/0009_periodictask_headers.py new file mode 100644 index 0000000..4c7c664 --- /dev/null +++ b/django_celery_beat/migrations/0009_periodictask_headers.py @@ -0,0 +1,22 @@ +# Generated by Django 2.1.5 on 2019-02-09 19:33 +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('django_celery_beat', '0006_periodictask_priority'), + ] + + operations = [ + migrations.AddField( + model_name='periodictask', + name='headers', + field=models.TextField( + blank=True, + default='{}', + help_text='JSON encoded message headers', + verbose_name='Message headers' + ), + ), + ] diff --git a/django_celery_beat/migrations/0010_auto_20190429_0326.py b/django_celery_beat/migrations/0010_auto_20190429_0326.py new file mode 100644 index 0000000..ae948dd --- /dev/null +++ b/django_celery_beat/migrations/0010_auto_20190429_0326.py @@ -0,0 +1,174 @@ +# Generated by Django 1.11.20 on 2019-04-29 03:26 + +# this file is auto-generated so don't do flake8 on it +# flake8: noqa +import django.core.validators +from django.db import migrations, models +import django.db.models.deletion +import django_celery_beat.validators +import timezone_field.fields + + +class Migration(migrations.Migration): + + dependencies = [ + ('django_celery_beat', '0009_periodictask_headers'), + ] + + operations = [ + migrations.AlterField( + model_name='crontabschedule', + name='day_of_month', + field=models.CharField(default='*', help_text='Cron Days Of The Month to Run. Use "*" for "all". (Example: "1,15")', max_length=124, validators=[django_celery_beat.validators.day_of_month_validator], verbose_name='Day(s) Of The Month'), + ), + migrations.AlterField( + model_name='crontabschedule', + name='day_of_week', + field=models.CharField(default='*', help_text='Cron Days Of The Week to Run. Use "*" for "all". (Example: "0,5")', max_length=64, validators=[django_celery_beat.validators.day_of_week_validator], verbose_name='Day(s) Of The Week'), + ), + migrations.AlterField( + model_name='crontabschedule', + name='hour', + field=models.CharField(default='*', help_text='Cron Hours to Run. Use "*" for "all". (Example: "8,20")', max_length=96, validators=[django_celery_beat.validators.hour_validator], verbose_name='Hour(s)'), + ), + migrations.AlterField( + model_name='crontabschedule', + name='minute', + field=models.CharField(default='*', help_text='Cron Minutes to Run. Use "*" for "all". (Example: "0,30")', max_length=240, validators=[django_celery_beat.validators.minute_validator], verbose_name='Minute(s)'), + ), + migrations.AlterField( + model_name='crontabschedule', + name='month_of_year', + field=models.CharField(default='*', help_text='Cron Months Of The Year to Run. Use "*" for "all". (Example: "0,6")', max_length=64, validators=[django_celery_beat.validators.month_of_year_validator], verbose_name='Month(s) Of The Year'), + ), + migrations.AlterField( + model_name='crontabschedule', + name='timezone', + field=timezone_field.fields.TimeZoneField(default='UTC', help_text='Timezone to Run the Cron Schedule on. Default is UTC.', verbose_name='Cron Timezone'), + ), + migrations.AlterField( + model_name='intervalschedule', + name='every', + field=models.IntegerField(help_text='Number of interval periods to wait before running the task again', validators=[django.core.validators.MinValueValidator(1)], verbose_name='Number of Periods'), + ), + migrations.AlterField( + model_name='intervalschedule', + name='period', + field=models.CharField(choices=[('days', 'Days'), ('hours', 'Hours'), ('minutes', 'Minutes'), ('seconds', 'Seconds'), ('microseconds', 'Microseconds')], help_text='The type of period between task runs (Example: days)', max_length=24, verbose_name='Interval Period'), + ), + migrations.AlterField( + model_name='periodictask', + name='args', + field=models.TextField(blank=True, default='[]', help_text='JSON encoded positional arguments (Example: ["arg1", "arg2"])', verbose_name='Positional Arguments'), + ), + migrations.AlterField( + model_name='periodictask', + name='crontab', + field=models.ForeignKey(blank=True, help_text='Crontab Schedule to run the task on. Set only one schedule type, leave the others null.', null=True, on_delete=django.db.models.deletion.CASCADE, to='django_celery_beat.CrontabSchedule', verbose_name='Crontab Schedule'), + ), + migrations.AlterField( + model_name='periodictask', + name='date_changed', + field=models.DateTimeField(auto_now=True, help_text='Datetime that this PeriodicTask was last modified', verbose_name='Last Modified'), + ), + migrations.AlterField( + model_name='periodictask', + name='description', + field=models.TextField(blank=True, help_text='Detailed description about the details of this Periodic Task', verbose_name='Description'), + ), + migrations.AlterField( + model_name='periodictask', + name='enabled', + field=models.BooleanField(default=True, help_text='Set to False to disable the schedule', verbose_name='Enabled'), + ), + migrations.AlterField( + model_name='periodictask', + name='exchange', + field=models.CharField(blank=True, default=None, help_text='Override Exchange for low-level AMQP routing', max_length=200, null=True, verbose_name='Exchange'), + ), + migrations.AlterField( + model_name='periodictask', + name='expires', + field=models.DateTimeField(blank=True, help_text='Datetime after which the schedule will no longer trigger the task to run', null=True, verbose_name='Expires Datetime'), + ), + migrations.AlterField( + model_name='periodictask', + name='headers', + field=models.TextField(blank=True, default='{}', help_text='JSON encoded message headers for the AMQP message.', verbose_name='AMQP Message Headers'), + ), + migrations.AlterField( + model_name='periodictask', + name='interval', + field=models.ForeignKey(blank=True, help_text='Interval Schedule to run the task on. Set only one schedule type, leave the others null.', null=True, on_delete=django.db.models.deletion.CASCADE, to='django_celery_beat.IntervalSchedule', verbose_name='Interval Schedule'), + ), + migrations.AlterField( + model_name='periodictask', + name='kwargs', + field=models.TextField(blank=True, default='{}', help_text='JSON encoded keyword arguments (Example: {"argument": "value"})', verbose_name='Keyword Arguments'), + ), + migrations.AlterField( + model_name='periodictask', + name='last_run_at', + field=models.DateTimeField(blank=True, editable=False, help_text='Datetime that the schedule last triggered the task to run. Reset to None if enabled is set to False.', null=True, verbose_name='Last Run Datetime'), + ), + migrations.AlterField( + model_name='periodictask', + name='name', + field=models.CharField(help_text='Short Description For This Task', max_length=200, unique=True, verbose_name='Name'), + ), + migrations.AlterField( + model_name='periodictask', + name='one_off', + field=models.BooleanField(default=False, help_text='If True, the schedule will only run the task a single time', verbose_name='One-off Task'), + ), + migrations.AlterField( + model_name='periodictask', + name='priority', + field=models.PositiveIntegerField(blank=True, default=None, help_text='Priority Number between 0 and 255. Supported by: RabbitMQ, Redis (priority reversed, 0 is highest).', null=True, validators=[django.core.validators.MaxValueValidator(255)], verbose_name='Priority'), + ), + migrations.AlterField( + model_name='periodictask', + name='queue', + field=models.CharField(blank=True, default=None, help_text='Queue defined in CELERY_TASK_QUEUES. Leave None for default queuing.', max_length=200, null=True, verbose_name='Queue Override'), + ), + migrations.AlterField( + model_name='periodictask', + name='routing_key', + field=models.CharField(blank=True, default=None, help_text='Override Routing Key for low-level AMQP routing', max_length=200, null=True, verbose_name='Routing Key'), + ), + migrations.AlterField( + model_name='periodictask', + name='solar', + field=models.ForeignKey(blank=True, help_text='Solar Schedule to run the task on. Set only one schedule type, leave the others null.', null=True, on_delete=django.db.models.deletion.CASCADE, to='django_celery_beat.SolarSchedule', verbose_name='Solar Schedule'), + ), + migrations.AlterField( + model_name='periodictask', + name='start_time', + field=models.DateTimeField(blank=True, help_text='Datetime when the schedule should begin triggering the task to run', null=True, verbose_name='Start Datetime'), + ), + migrations.AlterField( + model_name='periodictask', + name='task', + field=models.CharField(help_text='The Name of the Celery Task that Should be Run. (Example: "proj.tasks.import_contacts")', max_length=200, verbose_name='Task Name'), + ), + migrations.AlterField( + model_name='periodictask', + name='total_run_count', + field=models.PositiveIntegerField(default=0, editable=False, help_text='Running count of how many times the schedule has triggered the task', verbose_name='Total Run Count'), + ), + migrations.AlterField( + model_name='solarschedule', + name='event', + field=models.CharField(choices=[('dawn_astronomical', 'dawn_astronomical'), ('dawn_civil', 'dawn_civil'), ('dawn_nautical', 'dawn_nautical'), ('dusk_astronomical', 'dusk_astronomical'), ('dusk_civil', 'dusk_civil'), ('dusk_nautical', 'dusk_nautical'), ('solar_noon', 'solar_noon'), ('sunrise', 'sunrise'), ('sunset', 'sunset')], help_text='The type of solar event when the job should run', max_length=24, verbose_name='Solar Event'), + ), + migrations.AlterField( + model_name='solarschedule', + name='latitude', + field=models.DecimalField(decimal_places=6, help_text='Run the task when the event happens at this latitude', max_digits=9, validators=[django.core.validators.MinValueValidator(-90), django.core.validators.MaxValueValidator(90)], verbose_name='Latitude'), + ), + migrations.AlterField( + model_name='solarschedule', + name='longitude', + field=models.DecimalField(decimal_places=6, help_text='Run the task when the event happens at this longitude', max_digits=9, validators=[django.core.validators.MinValueValidator(-180), django.core.validators.MaxValueValidator(180)], verbose_name='Longitude'), + ), + ] diff --git a/django_celery_beat/migrations/0011_auto_20190508_0153.py b/django_celery_beat/migrations/0011_auto_20190508_0153.py new file mode 100644 index 0000000..d77e7e7 --- /dev/null +++ b/django_celery_beat/migrations/0011_auto_20190508_0153.py @@ -0,0 +1,32 @@ +# Generated by Django 2.2 on 2019-05-08 01:53 +# flake8: noqa +from django.db import migrations, models +import django.db.models.deletion + + +class Migration(migrations.Migration): + + dependencies = [ + ('django_celery_beat', '0010_auto_20190429_0326'), + ] + + operations = [ + migrations.CreateModel( + name='ClockedSchedule', + fields=[ + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('clocked_time', models.DateTimeField(help_text='Run the task at clocked time', verbose_name='Clock Time')), + ('enabled', models.BooleanField(default=True, editable=False, help_text='Set to False to disable the schedule', verbose_name='Enabled')), + ], + options={ + 'verbose_name': 'clocked', + 'verbose_name_plural': 'clocked', + 'ordering': ['clocked_time'], + }, + ), + migrations.AddField( + model_name='periodictask', + name='clocked', + field=models.ForeignKey(blank=True, help_text='Clocked Schedule to run the task on. Set only one schedule type, leave the others null.', null=True, on_delete=django.db.models.deletion.CASCADE, to='django_celery_beat.ClockedSchedule', verbose_name='Clocked Schedule'), + ), + ] diff --git a/django_celery_beat/migrations/0012_periodictask_expire_seconds.py b/django_celery_beat/migrations/0012_periodictask_expire_seconds.py new file mode 100644 index 0000000..aab98bf --- /dev/null +++ b/django_celery_beat/migrations/0012_periodictask_expire_seconds.py @@ -0,0 +1,18 @@ +# Generated by Django 2.2.4 on 2019-08-30 00:46 +# flake8: noqa +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('django_celery_beat', '0011_auto_20190508_0153'), + ] + + operations = [ + migrations.AddField( + model_name='periodictask', + name='expire_seconds', + field=models.PositiveIntegerField(blank=True, help_text='Timedelta with seconds which the schedule will no longer trigger the task to run', null=True, verbose_name='Expires timedelta with seconds'), + ), + ] diff --git a/django_celery_beat/migrations/0013_auto_20200609_0727.py b/django_celery_beat/migrations/0013_auto_20200609_0727.py new file mode 100644 index 0000000..eb9040d --- /dev/null +++ b/django_celery_beat/migrations/0013_auto_20200609_0727.py @@ -0,0 +1,20 @@ +# Generated by Django 3.0.6 on 2020-06-09 07:27 +# flake8: noqa +from django.db import migrations +import django_celery_beat.models +import timezone_field.fields + + +class Migration(migrations.Migration): + + dependencies = [ + ('django_celery_beat', '0012_periodictask_expire_seconds'), + ] + + operations = [ + migrations.AlterField( + model_name='crontabschedule', + name='timezone', + field=timezone_field.fields.TimeZoneField(default=django_celery_beat.models.crontab_schedule_celery_timezone, help_text='Timezone to Run the Cron Schedule on. Default is UTC.', verbose_name='Cron Timezone'), + ), + ] diff --git a/django_celery_beat/migrations/0014_remove_clockedschedule_enabled.py b/django_celery_beat/migrations/0014_remove_clockedschedule_enabled.py new file mode 100644 index 0000000..0ee02dd --- /dev/null +++ b/django_celery_beat/migrations/0014_remove_clockedschedule_enabled.py @@ -0,0 +1,17 @@ +# Generated by Django 2.2.4 on 2019-08-30 00:46 +# flake8: noqa +from django.db import migrations + + +class Migration(migrations.Migration): + + dependencies = [ + ('django_celery_beat', '0013_auto_20200609_0727'), + ] + + operations = [ + migrations.RemoveField( + model_name='clockedschedule', + name='enabled', + ), + ] diff --git a/django_celery_beat/migrations/0015_edit_solarschedule_events_choices.py b/django_celery_beat/migrations/0015_edit_solarschedule_events_choices.py new file mode 100644 index 0000000..8ec6ae3 --- /dev/null +++ b/django_celery_beat/migrations/0015_edit_solarschedule_events_choices.py @@ -0,0 +1,18 @@ +# Generated by Django 3.0.6 on 2020-12-13 15:00 +# flake8: noqa +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('django_celery_beat', '0014_remove_clockedschedule_enabled'), + ] + + operations = [ + migrations.AlterField( + model_name='solarschedule', + name='event', + field=models.CharField(choices=[('dawn_astronomical', 'Astronomical dawn'), ('dawn_civil', 'Civil dawn'), ('dawn_nautical', 'Nautical dawn'), ('dusk_astronomical', 'Astronomical dusk'), ('dusk_civil', 'Civil dusk'), ('dusk_nautical', 'Nautical dusk'), ('solar_noon', 'Solar noon'), ('sunrise', 'Sunrise'), ('sunset', 'Sunset')], help_text='The type of solar event when the job should run', max_length=24, verbose_name='Solar Event'), + ), + ] diff --git a/django_celery_beat/migrations/__init__.py b/django_celery_beat/migrations/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/django_celery_beat/models.py b/django_celery_beat/models.py new file mode 100644 index 0000000..7bedaec --- /dev/null +++ b/django_celery_beat/models.py @@ -0,0 +1,723 @@ +"""Database models.""" +from datetime import timedelta + +import timezone_field +from celery import current_app, schedules +from django.conf import settings +from django.core.exceptions import MultipleObjectsReturned, ValidationError +from django.core.validators import MaxValueValidator, MinValueValidator +from django.db import models +from django.db.models import signals +from django.utils.translation import gettext_lazy as _ +from wagtail.admin.panels import ( + FieldPanel, + HelpPanel, + MultiFieldPanel, + ObjectList, + PageChooserPanel, + TabbedInterface, +) + +from . import managers, validators +from .clockedschedule import clocked +from .forms import PeriodicTaskForm +from .tzcrontab import TzAwareCrontab +from .utils import make_aware, now + +DAYS = "days" +HOURS = "hours" +MINUTES = "minutes" +SECONDS = "seconds" +MICROSECONDS = "microseconds" + +PERIOD_CHOICES = ( + (DAYS, _("Days")), + (HOURS, _("Hours")), + (MINUTES, _("Minutes")), + (SECONDS, _("Seconds")), + (MICROSECONDS, _("Microseconds")), +) + +SINGULAR_PERIODS = ( + (DAYS, _("Day")), + (HOURS, _("Hour")), + (MINUTES, _("Minute")), + (SECONDS, _("Second")), + (MICROSECONDS, _("Microsecond")), +) + +SOLAR_SCHEDULES = [ + ("dawn_astronomical", _("Astronomical dawn")), + ("dawn_civil", _("Civil dawn")), + ("dawn_nautical", _("Nautical dawn")), + ("dusk_astronomical", _("Astronomical dusk")), + ("dusk_civil", _("Civil dusk")), + ("dusk_nautical", _("Nautical dusk")), + ("solar_noon", _("Solar noon")), + ("sunrise", _("Sunrise")), + ("sunset", _("Sunset")), +] + + +def cronexp(field): + """Representation of cron expression.""" + return field and str(field).replace(" ", "") or "*" + + +def crontab_schedule_celery_timezone(): + """Return timezone string from Django settings `CELERY_TIMEZONE` variable. + + If is not defined or is not a valid timezone, return `"UTC"` instead. + """ + try: + CELERY_TIMEZONE = getattr(settings, "%s_TIMEZONE" % current_app.namespace) + except AttributeError: + return "UTC" + + # evita `AttributeError: type object 'TimeZoneField' has no attribute 'default_choices'` + return "UTC" + return ( + CELERY_TIMEZONE + if CELERY_TIMEZONE + in [choice[0].zone for choice in timezone_field.TimeZoneField.default_choices] + else "UTC" + ) + + +class SolarSchedule(models.Model): + """Schedule following astronomical patterns. + + Example: to run every sunrise in New York City: + event='sunrise', latitude=40.7128, longitude=74.0060 + """ + + event = models.CharField( + max_length=24, + choices=SOLAR_SCHEDULES, + verbose_name=_("Solar Event"), + help_text=_("The type of solar event when the job should run"), + ) + latitude = models.DecimalField( + max_digits=9, + decimal_places=6, + verbose_name=_("Latitude"), + help_text=_("Run the task when the event happens at this latitude"), + validators=[MinValueValidator(-90), MaxValueValidator(90)], + ) + longitude = models.DecimalField( + max_digits=9, + decimal_places=6, + verbose_name=_("Longitude"), + help_text=_("Run the task when the event happens at this longitude"), + validators=[MinValueValidator(-180), MaxValueValidator(180)], + ) + + class Meta: + """Table information.""" + + verbose_name = _("solar event") + verbose_name_plural = _("solar events") + ordering = ("event", "latitude", "longitude") + unique_together = ("event", "latitude", "longitude") + + @property + def schedule(self): + return schedules.solar( + self.event, self.latitude, self.longitude, nowfun=lambda: make_aware(now()) + ) + + @classmethod + def from_schedule(cls, schedule): + spec = { + "event": schedule.event, + "latitude": schedule.lat, + "longitude": schedule.lon, + } + + # we do not check for MultipleObjectsReturned exception here because + # the unique_together constraint safely prevents from duplicates + try: + return cls.objects.get(**spec) + except cls.DoesNotExist: + return cls(**spec) + + def __str__(self): + return "{0} ({1}, {2})".format( + self.get_event_display(), self.latitude, self.longitude + ) + + +class IntervalSchedule(models.Model): + """Schedule executing on a regular interval. + + Example: execute every 2 days + every=2, period=DAYS + """ + + DAYS = DAYS + HOURS = HOURS + MINUTES = MINUTES + SECONDS = SECONDS + MICROSECONDS = MICROSECONDS + + PERIOD_CHOICES = PERIOD_CHOICES + + every = models.IntegerField( + null=False, + verbose_name=_("Number of Periods"), + help_text=_( + "Number of interval periods to wait before " "running the task again" + ), + validators=[MinValueValidator(1)], + ) + period = models.CharField( + max_length=24, + choices=PERIOD_CHOICES, + verbose_name=_("Interval Period"), + help_text=_("The type of period between task runs (Example: days)"), + ) + + class Meta: + """Table information.""" + + verbose_name = _("interval") + verbose_name_plural = _("intervals") + ordering = ["period", "every"] + + @property + def schedule(self): + return schedules.schedule( + timedelta(**{self.period: self.every}), nowfun=lambda: make_aware(now()) + ) + + @classmethod + def from_schedule(cls, schedule, period=SECONDS): + every = max(schedule.run_every.total_seconds(), 0) + try: + return cls.objects.get(every=every, period=period) + except cls.DoesNotExist: + return cls(every=every, period=period) + except MultipleObjectsReturned: + return cls.objects.filter(every=every, period=period).first() + + def __str__(self): + readable_period = None + if self.every == 1: + for period, _readable_period in SINGULAR_PERIODS: + if period == self.period: + readable_period = _readable_period.lower() + break + return _("every {}").format(readable_period) + for period, _readable_period in PERIOD_CHOICES: + if period == self.period: + readable_period = _readable_period.lower() + break + return _("every {} {}").format(self.every, readable_period) + + @property + def period_singular(self): + return self.period[:-1] + + +class ClockedSchedule(models.Model): + """clocked schedule.""" + + clocked_time = models.DateTimeField( + verbose_name=_("Clock Time"), + help_text=_("Run the task at clocked time"), + ) + + class Meta: + """Table information.""" + + verbose_name = _("clocked") + verbose_name_plural = _("clocked") + ordering = ["clocked_time"] + + def __str__(self): + return "{}".format(self.clocked_time) + + @property + def schedule(self): + c = clocked(clocked_time=self.clocked_time) + return c + + @classmethod + def from_schedule(cls, schedule): + spec = {"clocked_time": schedule.clocked_time} + try: + return cls.objects.get(**spec) + except cls.DoesNotExist: + return cls(**spec) + except MultipleObjectsReturned: + return cls.objects.filter(**spec).first() + + +class CrontabSchedule(models.Model): + """Timezone Aware Crontab-like schedule. + + Example: Run every hour at 0 minutes for days of month 10-15 + minute="0", hour="*", day_of_week="*", + day_of_month="10-15", month_of_year="*" + """ + + # + # The worst case scenario for day of month is a list of all 31 day numbers + # '[1, 2, ..., 31]' which has a length of 115. Likewise, minute can be + # 0..59 and hour can be 0..23. Ensure we can accomodate these by allowing + # 4 chars for each value (what we save on 0-9 accomodates the []). + # We leave the other fields at their historical length. + # + minute = models.CharField( + max_length=60 * 4, + default="*", + verbose_name=_("Minute(s)"), + help_text=_('Cron Minutes to Run. Use "*" for "all". (Example: "0,30")'), + validators=[validators.minute_validator], + ) + hour = models.CharField( + max_length=24 * 4, + default="*", + verbose_name=_("Hour(s)"), + help_text=_('Cron Hours to Run. Use "*" for "all". (Example: "8,20")'), + validators=[validators.hour_validator], + ) + day_of_week = models.CharField( + max_length=64, + default="*", + verbose_name=_("Day(s) Of The Week"), + help_text=_( + 'Cron Days Of The Week to Run. Use "*" for "all". ' '(Example: "0,5")' + ), + validators=[validators.day_of_week_validator], + ) + day_of_month = models.CharField( + max_length=31 * 4, + default="*", + verbose_name=_("Day(s) Of The Month"), + help_text=_( + 'Cron Days Of The Month to Run. Use "*" for "all". ' '(Example: "1,15")' + ), + validators=[validators.day_of_month_validator], + ) + month_of_year = models.CharField( + max_length=64, + default="*", + verbose_name=_("Month(s) Of The Year"), + help_text=_( + 'Cron Months Of The Year to Run. Use "*" for "all". ' '(Example: "0,6")' + ), + validators=[validators.month_of_year_validator], + ) + + timezone = timezone_field.TimeZoneField( + default=crontab_schedule_celery_timezone, + verbose_name=_("Cron Timezone"), + help_text=_("Timezone to Run the Cron Schedule on. Default is UTC."), + ) + + class Meta: + """Table information.""" + + verbose_name = _("crontab") + verbose_name_plural = _("crontabs") + ordering = [ + "month_of_year", + "day_of_month", + "day_of_week", + "hour", + "minute", + "timezone", + ] + + def __str__(self): + return "{0} {1} {2} {3} {4} (m/h/dM/MY/d) {5}".format( + cronexp(self.minute), + cronexp(self.hour), + cronexp(self.day_of_month), + cronexp(self.month_of_year), + cronexp(self.day_of_week), + str(self.timezone), + ) + + @property + def schedule(self): + crontab = schedules.crontab( + minute=self.minute, + hour=self.hour, + day_of_week=self.day_of_week, + day_of_month=self.day_of_month, + month_of_year=self.month_of_year, + ) + if getattr(settings, "DJANGO_CELERY_BEAT_TZ_AWARE", True): + crontab = TzAwareCrontab( + minute=self.minute, + hour=self.hour, + day_of_week=self.day_of_week, + day_of_month=self.day_of_month, + month_of_year=self.month_of_year, + tz=self.timezone, + ) + return crontab + + @classmethod + def from_schedule(cls, schedule): + spec = { + "minute": schedule._orig_minute, + "hour": schedule._orig_hour, + "day_of_week": schedule._orig_day_of_week, + "day_of_month": schedule._orig_day_of_month, + "month_of_year": schedule._orig_month_of_year, + "timezone": schedule.tz, + } + try: + return cls.objects.get(**spec) + except cls.DoesNotExist: + return cls(**spec) + except MultipleObjectsReturned: + return cls.objects.filter(**spec).first() + + +class PeriodicTasks(models.Model): + """Helper table for tracking updates to periodic tasks. + + This stores a single row with ident=1. last_update is updated + via django signals whenever anything is changed in the PeriodicTask model. + Basically this acts like a DB data audit trigger. + Doing this so we also track deletions, and not just insert/update. + """ + + ident = models.SmallIntegerField(default=1, primary_key=True, unique=True) + last_update = models.DateTimeField(null=False) + + objects = managers.ExtendedManager() + + @classmethod + def changed(cls, instance, **kwargs): + if not instance.no_changes: + cls.update_changed() + + @classmethod + def update_changed(cls, **kwargs): + cls.objects.update_or_create(ident=1, defaults={"last_update": now()}) + + @classmethod + def last_change(cls): + try: + return cls.objects.get(ident=1).last_update + except cls.DoesNotExist: + pass + + +class PeriodicTask(models.Model): + """Model representing a periodic task.""" + + base_form_class = PeriodicTaskForm + + name = models.CharField( + max_length=200, + unique=True, + verbose_name=_("Name"), + help_text=_("Short Description For This Task"), + ) + task = models.CharField( + max_length=200, + verbose_name="Task Name", + help_text=_( + "The Name of the Celery Task that Should be Run. " + '(Example: "proj.tasks.import_contacts")' + ), + ) + + # You can only set ONE of the following schedule FK's + # TODO: Redo this as a GenericForeignKey + interval = models.ForeignKey( + IntervalSchedule, + on_delete=models.CASCADE, + null=True, + blank=True, + verbose_name=_("Interval Schedule"), + help_text=_( + "Interval Schedule to run the task on. " + "Set only one schedule type, leave the others null." + ), + ) + crontab = models.ForeignKey( + CrontabSchedule, + on_delete=models.CASCADE, + null=True, + blank=True, + verbose_name=_("Crontab Schedule"), + help_text=_( + "Crontab Schedule to run the task on. " + "Set only one schedule type, leave the others null." + ), + ) + solar = models.ForeignKey( + SolarSchedule, + on_delete=models.CASCADE, + null=True, + blank=True, + verbose_name=_("Solar Schedule"), + help_text=_( + "Solar Schedule to run the task on. " + "Set only one schedule type, leave the others null." + ), + ) + clocked = models.ForeignKey( + ClockedSchedule, + on_delete=models.CASCADE, + null=True, + blank=True, + verbose_name=_("Clocked Schedule"), + help_text=_( + "Clocked Schedule to run the task on. " + "Set only one schedule type, leave the others null." + ), + ) + # TODO: use django's JsonField + args = models.TextField( + blank=True, + default="[]", + verbose_name=_("Positional Arguments"), + help_text=_("JSON encoded positional arguments " '(Example: ["arg1", "arg2"])'), + ) + kwargs = models.TextField( + blank=True, + default="{}", + verbose_name=_("Keyword Arguments"), + help_text=_( + "JSON encoded keyword arguments " '(Example: {"argument": "value"})' + ), + ) + + queue = models.CharField( + max_length=200, + blank=True, + null=True, + default=None, + verbose_name=_("Queue Override"), + help_text=_( + "Queue defined in CELERY_TASK_QUEUES. " "Leave None for default queuing." + ), + ) + + # you can use low-level AMQP routing options here, + # but you almost certaily want to leave these as None + # http://docs.celeryproject.org/en/latest/userguide/routing.html#exchanges-queues-and-routing-keys + exchange = models.CharField( + max_length=200, + blank=True, + null=True, + default=None, + verbose_name=_("Exchange"), + help_text=_("Override Exchange for low-level AMQP routing"), + ) + routing_key = models.CharField( + max_length=200, + blank=True, + null=True, + default=None, + verbose_name=_("Routing Key"), + help_text=_("Override Routing Key for low-level AMQP routing"), + ) + headers = models.TextField( + blank=True, + default="{}", + verbose_name=_("AMQP Message Headers"), + help_text=_("JSON encoded message headers for the AMQP message."), + ) + + priority = models.PositiveIntegerField( + default=None, + validators=[MaxValueValidator(255)], + blank=True, + null=True, + verbose_name=_("Priority"), + help_text=_( + "Priority Number between 0 and 255. " + "Supported by: RabbitMQ, Redis (priority reversed, 0 is highest)." + ), + ) + expires = models.DateTimeField( + blank=True, + null=True, + verbose_name=_("Expires Datetime"), + help_text=_( + "Datetime after which the schedule will no longer " + "trigger the task to run" + ), + ) + expire_seconds = models.PositiveIntegerField( + blank=True, + null=True, + verbose_name=_("Expires timedelta with seconds"), + help_text=_( + "Timedelta with seconds which the schedule will no longer " + "trigger the task to run" + ), + ) + one_off = models.BooleanField( + default=False, + verbose_name=_("One-off Task"), + help_text=_("If True, the schedule will only run the task a single time"), + ) + start_time = models.DateTimeField( + blank=True, + null=True, + verbose_name=_("Start Datetime"), + help_text=_( + "Datetime when the schedule should begin " "triggering the task to run" + ), + ) + enabled = models.BooleanField( + default=True, + verbose_name=_("Enabled"), + help_text=_("Set to False to disable the schedule"), + ) + last_run_at = models.DateTimeField( + auto_now=False, + auto_now_add=False, + editable=False, + blank=True, + null=True, + verbose_name=_("Last Run Datetime"), + help_text=_( + "Datetime that the schedule last triggered the task to run. " + "Reset to None if enabled is set to False." + ), + ) + total_run_count = models.PositiveIntegerField( + default=0, + editable=False, + verbose_name=_("Total Run Count"), + help_text=_( + "Running count of how many times the schedule " "has triggered the task" + ), + ) + date_changed = models.DateTimeField( + auto_now=True, + verbose_name=_("Last Modified"), + help_text=_("Datetime that this PeriodicTask was last modified"), + ) + description = models.TextField( + blank=True, + verbose_name=_("Description"), + help_text=_("Detailed description about the details of this Periodic Task"), + ) + + content_panels = [ + HelpPanel( + _("Essa é a área de configuração de execução de tarefas assíncronas.") + ), + FieldPanel("name"), + FieldPanel("regtask"), + FieldPanel("task"), + FieldPanel("description"), + FieldPanel("args"), + FieldPanel("kwargs"), + FieldPanel("priority"), + FieldPanel("one_off"), + FieldPanel("enabled"), + ] + scheduler_panels = [ + FieldPanel("interval"), + FieldPanel("crontab"), + FieldPanel("solar"), + FieldPanel("clocked"), + ] + + edit_handler = TabbedInterface( + [ + ObjectList(content_panels, heading=_("Content")), + ObjectList(scheduler_panels, heading=_("Scheduler")), + ] + ) + + objects = managers.PeriodicTaskManager() + no_changes = False + + class Meta: + """Table information.""" + + verbose_name = _("periodic task") + verbose_name_plural = _("periodic tasks") + + def validate_unique(self, *args, **kwargs): + super().validate_unique(*args, **kwargs) + + schedule_types = ["interval", "crontab", "solar", "clocked"] + selected_schedule_types = [s for s in schedule_types if getattr(self, s)] + + if len(selected_schedule_types) == 0: + raise ValidationError( + "One of clocked, interval, crontab, or solar " "must be set." + ) + + err_msg = "Only one of clocked, interval, crontab, " "or solar must be set" + if len(selected_schedule_types) > 1: + error_info = {} + for selected_schedule_type in selected_schedule_types: + error_info[selected_schedule_type] = [err_msg] + raise ValidationError(error_info) + + # clocked must be one off task + if self.clocked and not self.one_off: + err_msg = "clocked must be one off, one_off must set True" + raise ValidationError(err_msg) + + def save(self, *args, **kwargs): + self.exchange = self.exchange or None + self.routing_key = self.routing_key or None + self.queue = self.queue or None + self.headers = self.headers or None + if not self.enabled: + self.last_run_at = None + self._clean_expires() + self.validate_unique() + super().save(*args, **kwargs) + + def _clean_expires(self): + if self.expire_seconds is not None and self.expires: + raise ValidationError( + _("Only one can be set, in expires and expire_seconds") + ) + + @property + def expires_(self): + return self.expires or self.expire_seconds + + def __str__(self): + fmt = "{0.name}: {{no schedule}}" + if self.interval: + fmt = "{0.name}: {0.interval}" + if self.crontab: + fmt = "{0.name}: {0.crontab}" + if self.solar: + fmt = "{0.name}: {0.solar}" + if self.clocked: + fmt = "{0.name}: {0.clocked}" + return fmt.format(self) + + @property + def schedule(self): + if self.interval: + return self.interval.schedule + if self.crontab: + return self.crontab.schedule + if self.solar: + return self.solar.schedule + if self.clocked: + return self.clocked.schedule + + +signals.pre_delete.connect(PeriodicTasks.changed, sender=PeriodicTask) +signals.pre_save.connect(PeriodicTasks.changed, sender=PeriodicTask) +signals.pre_delete.connect(PeriodicTasks.update_changed, sender=IntervalSchedule) +signals.post_save.connect(PeriodicTasks.update_changed, sender=IntervalSchedule) +signals.post_delete.connect(PeriodicTasks.update_changed, sender=CrontabSchedule) +signals.post_save.connect(PeriodicTasks.update_changed, sender=CrontabSchedule) +signals.post_delete.connect(PeriodicTasks.update_changed, sender=SolarSchedule) +signals.post_save.connect(PeriodicTasks.update_changed, sender=SolarSchedule) +signals.post_delete.connect(PeriodicTasks.update_changed, sender=ClockedSchedule) +signals.post_save.connect(PeriodicTasks.update_changed, sender=ClockedSchedule) diff --git a/django_celery_beat/schedulers.py b/django_celery_beat/schedulers.py new file mode 100644 index 0000000..ec2c581 --- /dev/null +++ b/django_celery_beat/schedulers.py @@ -0,0 +1,382 @@ +"""Beat Scheduler Implementation.""" +import datetime +import logging +import math +from multiprocessing.util import Finalize + +from celery import current_app, schedules +from celery.beat import ScheduleEntry, Scheduler +from celery.utils.log import get_logger +from celery.utils.time import maybe_make_aware +from django.conf import settings +from django.core.exceptions import ObjectDoesNotExist +from django.db import close_old_connections, transaction +from django.db.utils import DatabaseError, InterfaceError +from kombu.utils.encoding import safe_repr, safe_str +from kombu.utils.json import dumps, loads + +from .clockedschedule import clocked +from .models import ( + ClockedSchedule, + CrontabSchedule, + IntervalSchedule, + PeriodicTask, + PeriodicTasks, + SolarSchedule, +) +from .utils import NEVER_CHECK_TIMEOUT + +# This scheduler must wake up more frequently than the +# regular of 5 minutes because it needs to take external +# changes to the schedule into account. +DEFAULT_MAX_INTERVAL = 5 # seconds + +ADD_ENTRY_ERROR = """\ +Cannot add entry %r to database schedule: %r. Contents: %r +""" + +logger = get_logger(__name__) +debug, info, warning = logger.debug, logger.info, logger.warning + + +class ModelEntry(ScheduleEntry): + """Scheduler entry taken from database row.""" + + model_schedules = ( + (schedules.crontab, CrontabSchedule, "crontab"), + (schedules.schedule, IntervalSchedule, "interval"), + (schedules.solar, SolarSchedule, "solar"), + (clocked, ClockedSchedule, "clocked"), + ) + save_fields = ["last_run_at", "total_run_count", "no_changes"] + + def __init__(self, model, app=None): + """Initialize the model entry.""" + self.app = app or current_app._get_current_object() + self.name = model.name + self.task = model.task + try: + self.schedule = model.schedule + except model.DoesNotExist: + logger.error( + "Disabling schedule %s that was removed from database", + self.name, + ) + self._disable(model) + try: + self.args = loads(model.args or "[]") + self.kwargs = loads(model.kwargs or "{}") + except ValueError as exc: + logger.exception( + "Removing schedule %s for argument deseralization error: %r", + self.name, + exc, + ) + self._disable(model) + + self.options = {} + for option in ["queue", "exchange", "routing_key", "priority"]: + value = getattr(model, option) + if value is None: + continue + self.options[option] = value + + if getattr(model, "expires_", None): + self.options["expires"] = getattr(model, "expires_") + + self.options["headers"] = loads(model.headers or "{}") + + self.total_run_count = model.total_run_count + self.model = model + + if not model.last_run_at: + model.last_run_at = self._default_now() + + self.last_run_at = model.last_run_at + + def _disable(self, model): + model.no_changes = True + model.enabled = False + model.save() + + def is_due(self): + if not self.model.enabled: + # 5 second delay for re-enable. + return schedules.schedstate(False, 5.0) + + # START DATE: only run after the `start_time`, if one exists. + if self.model.start_time is not None: + now = self._default_now() + if getattr(settings, "DJANGO_CELERY_BEAT_TZ_AWARE", True): + now = maybe_make_aware(self._default_now()) + + if now < self.model.start_time: + # The datetime is before the start date - don't run. + # send a delay to retry on start_time + delay = math.ceil((self.model.start_time - now).total_seconds()) + return schedules.schedstate(False, delay) + + # ONE OFF TASK: Disable one off tasks after they've ran once + if self.model.one_off and self.model.enabled and self.model.total_run_count > 0: + self.model.enabled = False + self.model.total_run_count = 0 # Reset + self.model.no_changes = False # Mark the model entry as changed + self.model.save() + # Don't recheck + return schedules.schedstate(False, NEVER_CHECK_TIMEOUT) + + # CAUTION: make_aware assumes settings.TIME_ZONE for naive datetimes, + # while maybe_make_aware assumes utc for naive datetimes + tz = self.app.timezone + last_run_at_in_tz = maybe_make_aware(self.last_run_at).astimezone(tz) + return self.schedule.is_due(last_run_at_in_tz) + + def _default_now(self): + # The PyTZ datetime must be localised for the Django-Celery-Beat + # scheduler to work. Keep in mind that timezone arithmatic + # with a localized timezone may be inaccurate. + if getattr(settings, "DJANGO_CELERY_BEAT_TZ_AWARE", True): + now = self.app.now() + now = now.tzinfo.localize(now.replace(tzinfo=None)) + else: + # this ends up getting passed to maybe_make_aware, which expects + # all naive datetime objects to be in utc time. + now = datetime.datetime.utcnow() + return now + + def __next__(self): + self.model.last_run_at = self._default_now() + self.model.total_run_count += 1 + self.model.no_changes = True + return self.__class__(self.model) + + next = __next__ # for 2to3 + + def save(self): + # Object may not be synchronized, so only + # change the fields we care about. + obj = type(self.model)._default_manager.get(pk=self.model.pk) + for field in self.save_fields: + setattr(obj, field, getattr(self.model, field)) + + obj.save() + + @classmethod + def to_model_schedule(cls, schedule): + for schedule_type, model_type, model_field in cls.model_schedules: + schedule = schedules.maybe_schedule(schedule) + if isinstance(schedule, schedule_type): + model_schedule = model_type.from_schedule(schedule) + model_schedule.save() + return model_schedule, model_field + raise ValueError("Cannot convert schedule type {0!r} to model".format(schedule)) + + @classmethod + def from_entry(cls, name, app=None, **entry): + return cls( + PeriodicTask._default_manager.update_or_create( + name=name, + defaults=cls._unpack_fields(**entry), + ), + app=app, + ) + + @classmethod + def _unpack_fields( + cls, schedule, args=None, kwargs=None, relative=None, options=None, **entry + ): + model_schedule, model_field = cls.to_model_schedule(schedule) + entry.update( + {model_field: model_schedule}, + args=dumps(args or []), + kwargs=dumps(kwargs or {}), + **cls._unpack_options(**options or {}) + ) + return entry + + @classmethod + def _unpack_options( + cls, + queue=None, + exchange=None, + routing_key=None, + priority=None, + headers=None, + expire_seconds=None, + **kwargs + ): + return { + "queue": queue, + "exchange": exchange, + "routing_key": routing_key, + "priority": priority, + "headers": dumps(headers or {}), + "expire_seconds": expire_seconds, + } + + def __repr__(self): + return "".format( + safe_str(self.name), + self.task, + safe_repr(self.args), + safe_repr(self.kwargs), + self.schedule, + ) + + +class DatabaseScheduler(Scheduler): + """Database-backed Beat Scheduler.""" + + Entry = ModelEntry + Model = PeriodicTask + Changes = PeriodicTasks + + _schedule = None + _last_timestamp = None + _initial_read = True + _heap_invalidated = False + + def __init__(self, *args, **kwargs): + """Initialize the database scheduler.""" + self._dirty = set() + Scheduler.__init__(self, *args, **kwargs) + self._finalize = Finalize(self, self.sync, exitpriority=5) + self.max_interval = ( + kwargs.get("max_interval") + or self.app.conf.beat_max_loop_interval + or DEFAULT_MAX_INTERVAL + ) + + def setup_schedule(self): + self.install_default_entries(self.schedule) + self.update_from_dict(self.app.conf.beat_schedule) + + def all_as_schedule(self): + debug("DatabaseScheduler: Fetching database schedule") + s = {} + for model in self.Model.objects.enabled(): + try: + s[model.name] = self.Entry(model, app=self.app) + except ValueError: + pass + return s + + def schedule_changed(self): + try: + close_old_connections() + + # If MySQL is running with transaction isolation level + # REPEATABLE-READ (default), then we won't see changes done by + # other transactions until the current transaction is + # committed (Issue #41). + try: + transaction.commit() + except transaction.TransactionManagementError: + pass # not in transaction management. + + last, ts = self._last_timestamp, self.Changes.last_change() + except DatabaseError as exc: + logger.exception("Database gave error: %r", exc) + return False + except InterfaceError: + warning( + "DatabaseScheduler: InterfaceError in schedule_changed(), " + "waiting to retry in next call..." + ) + return False + + try: + if ts and ts > (last if last else ts): + return True + finally: + self._last_timestamp = ts + return False + + def reserve(self, entry): + new_entry = next(entry) + # Need to store entry by name, because the entry may change + # in the mean time. + self._dirty.add(new_entry.name) + return new_entry + + def sync(self): + if logger.isEnabledFor(logging.DEBUG): + debug("Writing entries...") + _tried = set() + _failed = set() + try: + close_old_connections() + + while self._dirty: + name = self._dirty.pop() + try: + self.schedule[name].save() + _tried.add(name) + except (KeyError, ObjectDoesNotExist): + _failed.add(name) + except DatabaseError as exc: + logger.exception("Database error while sync: %r", exc) + except InterfaceError: + warning( + "DatabaseScheduler: InterfaceError in sync(), " + "waiting to retry in next call..." + ) + finally: + # retry later, only for the failed ones + self._dirty |= _failed + + def update_from_dict(self, mapping): + s = {} + for name, entry_fields in mapping.items(): + try: + entry = self.Entry.from_entry(name, app=self.app, **entry_fields) + if entry.model.enabled: + s[name] = entry + + except Exception as exc: + logger.exception(ADD_ENTRY_ERROR, name, exc, entry_fields) + self.schedule.update(s) + + def install_default_entries(self, data): + entries = {} + if self.app.conf.result_expires: + entries.setdefault( + "celery.backend_cleanup", + { + "task": "celery.backend_cleanup", + "schedule": schedules.crontab("0", "4", "*"), + "options": {"expire_seconds": 12 * 3600}, + }, + ) + self.update_from_dict(entries) + + def schedules_equal(self, *args, **kwargs): + if self._heap_invalidated: + self._heap_invalidated = False + return False + return super().schedules_equal(*args, **kwargs) + + @property + def schedule(self): + initial = update = False + if self._initial_read: + debug("DatabaseScheduler: initial read") + initial = update = True + self._initial_read = False + elif self.schedule_changed(): + info("DatabaseScheduler: Schedule changed.") + update = True + + if update: + self.sync() + self._schedule = self.all_as_schedule() + # the schedule changed, invalidate the heap in Scheduler.tick + if not initial: + self._heap = [] + self._heap_invalidated = True + if logger.isEnabledFor(logging.DEBUG): + debug( + "Current schedule:\n%s", + "\n".join(repr(entry) for entry in self._schedule.values()), + ) + return self._schedule diff --git a/django_celery_beat/templates/admin/djcelery/change_list.html b/django_celery_beat/templates/admin/djcelery/change_list.html new file mode 100644 index 0000000..20b269f --- /dev/null +++ b/django_celery_beat/templates/admin/djcelery/change_list.html @@ -0,0 +1,20 @@ +{% extends "admin/change_list.html" %} +{% load i18n %} + +{% block breadcrumbs %} + + {% if wrong_scheduler %} +
    +
  • + Periodic tasks won't be dispatched unless you set the + CELERYBEAT_SCHEDULER setting to + djcelery.schedulers.DatabaseScheduler, + or specify it using the -S option to celerybeat +
  • +
+ {% endif %} +{% endblock %} diff --git a/django_celery_beat/tzcrontab.py b/django_celery_beat/tzcrontab.py new file mode 100644 index 0000000..25046cd --- /dev/null +++ b/django_celery_beat/tzcrontab.py @@ -0,0 +1,93 @@ +"""Timezone aware Cron schedule Implementation.""" +from collections import namedtuple +from datetime import datetime + +import pytz +from celery import schedules + +schedstate = namedtuple("schedstate", ("is_due", "next")) + + +class TzAwareCrontab(schedules.crontab): + """Timezone Aware Crontab.""" + + def __init__( + self, + minute="*", + hour="*", + day_of_week="*", + day_of_month="*", + month_of_year="*", + tz=pytz.utc, + app=None, + ): + """Overwrite Crontab constructor to include a timezone argument.""" + self.tz = tz + + nowfun = self.nowfunc + + super().__init__( + minute=minute, + hour=hour, + day_of_week=day_of_week, + day_of_month=day_of_month, + month_of_year=month_of_year, + nowfun=nowfun, + app=app, + ) + + def nowfunc(self): + return self.tz.normalize(pytz.utc.localize(datetime.utcnow())) + + def is_due(self, last_run_at): + """Calculate when the next run will take place. + + Return tuple of (is_due, next_time_to_check). + The last_run_at argument needs to be timezone aware. + + """ + # convert last_run_at to the schedule timezone + last_run_at = last_run_at.astimezone(self.tz) + + rem_delta = self.remaining_estimate(last_run_at) + rem = max(rem_delta.total_seconds(), 0) + due = rem == 0 + if due: + rem_delta = self.remaining_estimate(self.now()) + rem = max(rem_delta.total_seconds(), 0) + return schedstate(due, rem) + + # Needed to support pickling + def __repr__(self): + return """ + """.format( + self + ) + + def __reduce__(self): + return ( + self.__class__, + ( + self._orig_minute, + self._orig_hour, + self._orig_day_of_week, + self._orig_day_of_month, + self._orig_month_of_year, + self.tz, + ), + None, + ) + + def __eq__(self, other): + if isinstance(other, schedules.crontab): + return ( + other.month_of_year == self.month_of_year + and other.day_of_month == self.day_of_month + and other.day_of_week == self.day_of_week + and other.hour == self.hour + and other.minute == self.minute + and other.tz == self.tz + ) + return NotImplemented diff --git a/django_celery_beat/urls.py b/django_celery_beat/urls.py new file mode 100644 index 0000000..be85495 --- /dev/null +++ b/django_celery_beat/urls.py @@ -0,0 +1,8 @@ +from django.urls import path + +from .views import task_run + +app_name = "django_celery_beat" +urlpatterns = [ + path("", view=task_run, name="task_run"), +] diff --git a/django_celery_beat/utils.py b/django_celery_beat/utils.py new file mode 100644 index 0000000..3ca6ea0 --- /dev/null +++ b/django_celery_beat/utils.py @@ -0,0 +1,49 @@ +"""Utilities.""" +# -- XXX This module must not use translation as that causes +# -- a recursive loader import! +from django.conf import settings +from django.utils import timezone + +is_aware = timezone.is_aware +# celery schedstate return None will make it not work +NEVER_CHECK_TIMEOUT = 100000000 + +# see Issue #222 +now_localtime = getattr(timezone, "template_localtime", timezone.localtime) + + +def make_aware(value): + """Force datatime to have timezone information.""" + if getattr(settings, "USE_TZ", False): + # naive datetimes are assumed to be in UTC. + if timezone.is_naive(value): + value = timezone.make_aware(value, timezone.utc) + # then convert to the Django configured timezone. + default_tz = timezone.get_default_timezone() + value = timezone.localtime(value, default_tz) + else: + # naive datetimes are assumed to be in local timezone. + if timezone.is_naive(value): + value = timezone.make_aware(value, timezone.get_default_timezone()) + return value + + +def now(): + """Return the current date and time.""" + if getattr(settings, "USE_TZ", False): + return now_localtime(timezone.now()) + else: + return timezone.now() + + +def is_database_scheduler(scheduler): + """Return true if Celery is configured to use the db scheduler.""" + if not scheduler: + return False + from kombu.utils import symbol_by_name + + from .schedulers import DatabaseScheduler + + return scheduler == "django" or issubclass( + symbol_by_name(scheduler), DatabaseScheduler + ) diff --git a/django_celery_beat/validators.py b/django_celery_beat/validators.py new file mode 100644 index 0000000..6be25a1 --- /dev/null +++ b/django_celery_beat/validators.py @@ -0,0 +1,106 @@ +"""Validators.""" + +import crontab +from django.core.exceptions import ValidationError + + +class _CronSlices(crontab.CronSlices): + """Cron slices with customized validation.""" + + def __init__(self, *args): + super(crontab.CronSlices, self).__init__( + [_CronSlice(info) for info in crontab.S_INFO] + ) + self.special = None + self.setall(*args) + self.is_valid = self.is_self_valid + + @classmethod + def validate(cls, *args): + try: + cls(*args) + except Exception as e: + raise ValueError(e) + + +class _CronSlice(crontab.CronSlice): + """Cron slice with custom range parser.""" + + def get_range(self, *vrange): + ret = _CronRange(self, *vrange) + if ret.dangling is not None: + return [ret.dangling, ret] + return [ret] + + +class _CronRange(crontab.CronRange): + """Cron range parser class.""" + + # rewrite whole method to raise error on bad range + def parse(self, value): + if value.count("/") == 1: + value, seq = value.split("/") + try: + self.seq = self.slice.parse_value(seq) + except crontab.SundayError: + self.seq = 1 + value = "0-0" + if self.seq < 1 or self.seq > self.slice.max: + raise ValueError("Sequence can not be divided by zero or max") + if value.count("-") == 1: + vfrom, vto = value.split("-") + self.vfrom = self.slice.parse_value(vfrom, sunday=0) + try: + self.vto = self.slice.parse_value(vto) + except crontab.SundayError: + if self.vfrom == 1: + self.vfrom = 0 + else: + self.dangling = 0 + self.vto = self.slice.parse_value(vto, sunday=6) + if self.vto < self.vfrom: + raise ValueError("Bad range '{0.vfrom}-{0.vto}'".format(self)) + elif value == "*": + self.all() + else: + raise ValueError('Unknown cron range value "%s"' % value) + + +def crontab_validator(value): + """Validate crontab.""" + try: + _CronSlices.validate(value) + except ValueError as e: + raise ValidationError(e) + + +def minute_validator(value): + """Validate minutes crontab value.""" + _validate_crontab(value, 0) + + +def hour_validator(value): + """Validate hours crontab value.""" + _validate_crontab(value, 1) + + +def day_of_month_validator(value): + """Validate day of month crontab value.""" + _validate_crontab(value, 2) + + +def month_of_year_validator(value): + """Validate month crontab value.""" + _validate_crontab(value, 3) + + +def day_of_week_validator(value): + """Validate day of week crontab value.""" + _validate_crontab(value, 4) + + +def _validate_crontab(value, index): + tab = ["*"] * 5 + tab[index] = value + tab = " ".join(tab) + crontab_validator(tab) diff --git a/django_celery_beat/views.py b/django_celery_beat/views.py new file mode 100644 index 0000000..3a4ddb0 --- /dev/null +++ b/django_celery_beat/views.py @@ -0,0 +1,36 @@ +import json + +from celery import current_app +from django.shortcuts import get_object_or_404, redirect +from django.utils.translation import gettext as _ +from wagtail.admin import messages + +from django_celery_beat import models + + +def task_run(request): + """ + View funciton to run the task by PeriodicTask id. + """ + + task_id = int(request.GET.get("task_id", None)) + + p_task = get_object_or_404(models.PeriodicTask, pk=task_id) + + current_app.loader.import_default_modules() + + task = current_app.tasks.get(p_task.task) + + kwargs = json.loads(p_task.kwargs) + kwargs["user_id"] = request.user.id + + task.apply_async( + args=json.loads(p_task.args), + kwargs=kwargs, + queue=p_task.queue, + periodic_task_name=p_task.name, + ) + + messages.success(request, _("Task {0} was successfully run").format(p_task.name)) + + return redirect(request.META.get("HTTP_REFERER")) diff --git a/django_celery_beat/wagtail_hooks.py b/django_celery_beat/wagtail_hooks.py new file mode 100644 index 0000000..3541659 --- /dev/null +++ b/django_celery_beat/wagtail_hooks.py @@ -0,0 +1,214 @@ +from celery import current_app +from django.conf import settings +from django.contrib import messages +from django.db.models import Case, Value, When +from django.template.defaultfilters import pluralize +from django.urls import include, path +from django.utils.translation import gettext_lazy as _ +from kombu.utils.json import loads +from wagtail import hooks +from wagtail.contrib.modeladmin.options import ( + ModelAdmin, + ModelAdminGroup, + modeladmin_register, +) + +from django_celery_beat.models import ( + ClockedSchedule, + CrontabSchedule, + IntervalSchedule, + PeriodicTask, + PeriodicTasks, + SolarSchedule, +) +from django_celery_beat.utils import is_database_scheduler + +from .button_helper import PeriodicTaskHelper + + +class PeriodicTaskAdmin(ModelAdmin): + """Admin-interface for periodic tasks.""" + + button_helper_class = PeriodicTaskHelper + model = PeriodicTask + menu_icon = "cog" + celery_app = current_app + date_hierarchy = "start_time" + list_display = ( + "__str__", + "enabled", + "interval", + "start_time", + "last_run_at", + "one_off", + ) + list_filter = [ + "enabled", + "one_off", + "task", + ] + actions = ("enable_tasks", "disable_tasks", "toggle_tasks", "run_tasks") + search_fields = ("name",) + + def changelist_view(self, request, extra_context=None): + extra_context = extra_context or {} + scheduler = getattr(settings, "CELERYBEAT_SCHEDULER", None) + extra_context["wrong_scheduler"] = not is_database_scheduler(scheduler) + return super(PeriodicTaskAdmin, self).changelist_view(request, extra_context) + + def get_queryset(self, request): + qs = super().get_queryset(request) + return qs.select_related("interval", "crontab", "solar", "clocked") + + def _message_user_about_update(self, request, rows_updated, verb): + """Send message about action to user. + `verb` should shortly describe what have changed (e.g. 'enabled'). + """ + self.message_user( + request, + _("{0} task{1} {2} successfully {3}").format( + rows_updated, + pluralize(rows_updated), + pluralize(rows_updated, _("was,were")), + verb, + ), + ) + + def enable_tasks(self, request, queryset): + rows_updated = queryset.update(enabled=True) + PeriodicTasks.update_changed() + self._message_user_about_update(request, rows_updated, "enabled") + + enable_tasks.short_description = _("Enable selected tasks") + + def disable_tasks(self, request, queryset): + rows_updated = queryset.update(enabled=False, last_run_at=None) + PeriodicTasks.update_changed() + self._message_user_about_update(request, rows_updated, "disabled") + + disable_tasks.short_description = _("Disable selected tasks") + + def _toggle_tasks_activity(self, queryset): + return queryset.update( + enabled=Case( + When(enabled=True, then=Value(False)), + default=Value(True), + ) + ) + + def toggle_tasks(self, request, queryset): + rows_updated = self._toggle_tasks_activity(queryset) + PeriodicTasks.update_changed() + self._message_user_about_update(request, rows_updated, "toggled") + + toggle_tasks.short_description = _("Toggle activity of selected tasks") + + def run_tasks(self, request, queryset): + self.celery_app.loader.import_default_modules() + tasks = [ + ( + self.celery_app.tasks.get(task.task), + loads(task.args), + loads(task.kwargs), + task.queue, + task.name, + ) + for task in queryset + ] + + if any(t[0] is None for t in tasks): + for i, t in enumerate(tasks): + if t[0] is None: + break + + # variable "i" will be set because list "tasks" is not empty + not_found_task_name = queryset[i].task + + self.message_user( + request, + _('task "{0}" not found'.format(not_found_task_name)), + level=messages.ERROR, + ) + return + + task_ids = [ + task.apply_async( + args=args, + kwargs=kwargs, + queue=queue, + periodic_task_name=periodic_task_name, + ) + if queue and len(queue) + else task.apply_async( + args=args, kwargs=kwargs, periodic_task_name=periodic_task_name + ) + for task, args, kwargs, queue, periodic_task_name in tasks + ] + tasks_run = len(task_ids) + self.message_user( + request, + _("{0} task{1} {2} successfully run").format( + tasks_run, + pluralize(tasks_run), + pluralize(tasks_run, _("was,were")), + ), + ) + + run_tasks.short_description = _("Run selected tasks") + + +class ClockedScheduleAdmin(ModelAdmin): + """Admin-interface for clocked schedules.""" + + menu_icon = "time" + model = ClockedSchedule + + fields = ("clocked_time",) + list_display = ("clocked_time",) + + +class IntervalScheduleAdmin(ModelAdmin): + """Admin-interface for clocked schedules.""" + + menu_icon = "date" + model = IntervalSchedule + + +class CrontabScheduleAdmin(ModelAdmin): + """Admin-interface for clocked schedules.""" + + menu_icon = "date" + model = CrontabSchedule + + +class SolarScheduleAdmin(ModelAdmin): + """Admin-interface for clocked schedules.""" + + menu_icon = "date" + model = SolarSchedule + + +class TasksModelsAdminGroup(ModelAdminGroup): + menu_label = _("Tasks") + menu_icon = "cogs" + menu_order = 1000 + items = ( + PeriodicTaskAdmin, + CrontabScheduleAdmin, + IntervalScheduleAdmin, + ClockedScheduleAdmin, + SolarScheduleAdmin, + ) + + +modeladmin_register(TasksModelsAdminGroup) + + +@hooks.register("register_admin_urls") +def register_task_url(): + return [ + path( + "django_celery_beat/tasks/", + include("django_celery_beat.urls", namespace="django_celery_beat"), + ), + ] From 72afbcc2b3e5ef369746c813c1a1c9426e620297 Mon Sep 17 00:00:00 2001 From: Rafael JPD Date: Sun, 7 Apr 2024 22:26:04 -0300 Subject: [PATCH 07/40] Adiciona app core --- core/__init__.py | 7 + core/api/__init__.py | 0 core/api/v1/__init__.py | 0 core/api/v1/serializers.py | 24 + core/api/wagtail/api.py | 15 + core/choices.py | 222 + core/conftest.py | 14 + core/contrib/__init__.py | 5 + core/contrib/sites/__init__.py | 5 + core/contrib/sites/migrations/0001_initial.py | 41 + .../migrations/0002_alter_domain_unique.py | 19 + .../0003_set_site_domain_and_name.py | 62 + .../0004_alter_options_ordering_domain.py | 20 + core/contrib/sites/migrations/__init__.py | 5 + core/forms.py | 15 + core/home/__init__.py | 0 core/home/migrations/0001_initial.py | 194 + core/home/migrations/__init__.py | 0 core/home/models.py | 86 + core/home/static/css/welcome_page.css | 198 + core/libs/chkcsv.py | 749 + core/migrations/0001_initial.py | 280 + core/migrations/__init__.py | 0 core/models.py | 539 + core/routers.py | 6 + core/search_site/__init__.py | 0 core/search_site/views.py | 34 + core/static/admin/css/custom.css | 23 + core/static/admin/js/custom.js | 66 + core/static/css/bootstrap-grid.css | 7 + core/static/css/bootstrap-grid.css.map | 1 + core/static/css/bootstrap-reboot.css | 8 + core/static/css/bootstrap-reboot.css.map | 1 + core/static/css/bootstrap-utilities.css | 7 + core/static/css/bootstrap-utilities.css.map | 1 + core/static/css/bootstrap.css | 10299 ++++++++++ core/static/css/bootstrap.css.map | 1 + core/static/css/custom.css | 21 + core/static/css/font-icons.css | 7773 +++++++ .../css/fonts/Simple-Line-Icons.dev.svg | 1369 ++ core/static/css/fonts/Simple-Line-Icons.eot | Bin 0 -> 35514 bytes core/static/css/fonts/Simple-Line-Icons.svg | 1369 ++ core/static/css/fonts/Simple-Line-Icons.ttf | Bin 0 -> 35304 bytes core/static/css/fonts/Simple-Line-Icons.woff | Bin 0 -> 59324 bytes core/static/css/fonts/font-icons.eot | Bin 0 -> 559740 bytes core/static/css/fonts/font-icons.svg | 2046 ++ core/static/css/fonts/font-icons.ttf | Bin 0 -> 559584 bytes core/static/css/fonts/font-icons.woff | Bin 0 -> 559660 bytes core/static/css/fonts/lined-icons.eot | Bin 0 -> 86416 bytes core/static/css/fonts/lined-icons.svg | 312 + core/static/css/fonts/lined-icons.ttf | Bin 0 -> 86236 bytes core/static/css/fonts/lined-icons.woff | Bin 0 -> 86312 bytes core/static/css/project.css | 13 + core/static/css/style.css | 16927 ++++++++++++++++ core/static/fonts/.gitkeep | 0 .../favicons copy/android-chrome-192x192.png | Bin 0 -> 10505 bytes .../android-chrome-512x512 2.png | 0 .../favicons copy/android-chrome-512x512.png | Bin 0 -> 35959 bytes .../images/favicons copy/apple-touch-icon.png | Bin 0 -> 9457 bytes .../images/favicons copy/favicon-16x16.png | Bin 0 -> 524 bytes .../images/favicons copy/favicon-32x32.png | Bin 0 -> 1057 bytes core/static/images/favicons copy/favicon.ico | Bin 0 -> 15406 bytes .../favicons/android-chrome-192x192.png | Bin 0 -> 10505 bytes .../favicons/android-chrome-512x512 2.png | 0 .../favicons/android-chrome-512x512.png | Bin 0 -> 35959 bytes .../images/favicons/apple-touch-icon.png | Bin 0 -> 9457 bytes core/static/images/favicons/favicon-16x16.png | Bin 0 -> 524 bytes core/static/images/favicons/favicon-32x32.png | Bin 0 -> 1057 bytes core/static/images/favicons/favicon.ico | Bin 0 -> 15406 bytes core/static/images/favicons/site.webmanifest | 1 + core/static/images/grid copy.png | Bin 0 -> 79 bytes core/static/images/grid.png | Bin 0 -> 79 bytes core/static/images/icons copy/avatar.jpg | Bin 0 -> 1301 bytes core/static/images/icons copy/close.png | Bin 0 -> 290 bytes core/static/images/icons copy/dotted.png | Bin 0 -> 84 bytes .../images/icons copy/features/flag.png | Bin 0 -> 4862 bytes .../static/images/icons copy/features/map.png | Bin 0 -> 4925 bytes .../icons copy/features/performance.png | Bin 0 -> 4008 bytes .../images/icons copy/features/responsive.png | Bin 0 -> 1961 bytes .../images/icons copy/features/retina.png | Bin 0 -> 1682 bytes .../static/images/icons copy/features/seo.png | Bin 0 -> 1932 bytes .../images/icons copy/features/support.png | Bin 0 -> 2166 bytes .../images/icons copy/features/tick.png | Bin 0 -> 6046 bytes .../images/icons copy/features/tools.png | Bin 0 -> 5912 bytes .../static/images/icons copy/flags/french.png | Bin 0 -> 394 bytes .../static/images/icons copy/flags/german.png | Bin 0 -> 386 bytes .../images/icons copy/flags/italian.png | Bin 0 -> 309 bytes core/static/images/icons copy/iconalt.svg | 8 + core/static/images/icons copy/image.png | Bin 0 -> 570 bytes core/static/images/icons copy/macbook.png | Bin 0 -> 62276 bytes .../static/images/icons copy/map-icon-red.png | Bin 0 -> 1421 bytes core/static/images/icons copy/map-icon.png | Bin 0 -> 515 bytes core/static/images/icons copy/play.png | Bin 0 -> 733 bytes .../images/icons copy/restaurant/cup-dark.png | Bin 0 -> 1110 bytes .../images/icons copy/restaurant/cup.png | Bin 0 -> 1084 bytes .../icons copy/restaurant/fork-dark.png | Bin 0 -> 1259 bytes .../images/icons copy/restaurant/fork.png | Bin 0 -> 1223 bytes .../icons copy/restaurant/glass-dark.png | Bin 0 -> 1343 bytes .../images/icons copy/restaurant/glass.png | Bin 0 -> 1186 bytes .../images/icons copy/restaurant/tea-dark.png | Bin 0 -> 2025 bytes .../images/icons copy/restaurant/tea.png | Bin 0 -> 1922 bytes core/static/images/icons copy/video-play.png | Bin 0 -> 597 bytes core/static/images/icons/authorIcon-orcid.png | Bin 0 -> 1261 bytes core/static/images/icons/avatar.jpg | Bin 0 -> 1301 bytes core/static/images/icons/close.png | Bin 0 -> 290 bytes core/static/images/icons/dotted.png | Bin 0 -> 84 bytes core/static/images/icons/features/flag.png | Bin 0 -> 4862 bytes core/static/images/icons/features/map.png | Bin 0 -> 4925 bytes .../images/icons/features/performance.png | Bin 0 -> 4008 bytes .../images/icons/features/responsive.png | Bin 0 -> 1961 bytes core/static/images/icons/features/retina.png | Bin 0 -> 1682 bytes core/static/images/icons/features/seo.png | Bin 0 -> 1932 bytes core/static/images/icons/features/support.png | Bin 0 -> 2166 bytes core/static/images/icons/features/tick.png | Bin 0 -> 6046 bytes core/static/images/icons/features/tools.png | Bin 0 -> 5912 bytes core/static/images/icons/flag.png | Bin 0 -> 4862 bytes core/static/images/icons/flags/french.png | Bin 0 -> 394 bytes core/static/images/icons/flags/german.png | Bin 0 -> 386 bytes core/static/images/icons/flags/italian.png | Bin 0 -> 309 bytes core/static/images/icons/grid.png | Bin 0 -> 79 bytes core/static/images/icons/iconalt.svg | 8 + core/static/images/icons/image.png | Bin 0 -> 570 bytes .../images/icons/logos/logo_negative.png | Bin 0 -> 7502 bytes .../icons/logos/logo_negative100x100.png | Bin 0 -> 12630 bytes core/static/images/icons/macbook.png | Bin 0 -> 62276 bytes core/static/images/icons/map-icon-red.png | Bin 0 -> 1421 bytes core/static/images/icons/map-icon.png | Bin 0 -> 515 bytes core/static/images/icons/map.png | Bin 0 -> 4925 bytes core/static/images/icons/parallax/1.jpg | Bin 0 -> 262092 bytes core/static/images/icons/parallax/2.jpg | Bin 0 -> 144098 bytes core/static/images/icons/parallax/3.jpg | Bin 0 -> 108177 bytes core/static/images/icons/parallax/7.jpg | Bin 0 -> 32977 bytes core/static/images/icons/parallax/8.jpg | Bin 0 -> 350185 bytes core/static/images/icons/parallax/9.jpg | Bin 0 -> 277608 bytes .../images/icons/parallax/bgpattern.png | Bin 0 -> 46463 bytes core/static/images/icons/parallax/blur1.jpg | Bin 0 -> 38402 bytes core/static/images/icons/parallax/blur2.jpg | Bin 0 -> 55105 bytes .../static/images/icons/parallax/calendar.jpg | Bin 0 -> 71289 bytes core/static/images/icons/parallax/home/1.jpg | Bin 0 -> 257702 bytes core/static/images/icons/parallax/home/10.jpg | Bin 0 -> 245114 bytes core/static/images/icons/parallax/home/11.jpg | Bin 0 -> 117732 bytes core/static/images/icons/parallax/home/2.jpg | Bin 0 -> 431134 bytes core/static/images/icons/parallax/home/4.jpg | Bin 0 -> 400826 bytes core/static/images/icons/parallax/home/5.jpg | Bin 0 -> 125111 bytes core/static/images/icons/parallax/home/6.jpg | Bin 0 -> 259401 bytes core/static/images/icons/parallax/home/7.jpg | Bin 0 -> 254653 bytes core/static/images/icons/parallax/home/9.jpg | Bin 0 -> 70714 bytes .../images/icons/parallax/parallax-bg.jpg | Bin 0 -> 83012 bytes core/static/images/icons/pattern.png | Bin 0 -> 69754 bytes core/static/images/icons/performance.png | Bin 0 -> 4008 bytes core/static/images/icons/play.png | Bin 0 -> 733 bytes core/static/images/icons/responsive.png | Bin 0 -> 1961 bytes .../images/icons/restaurant/cup-dark.png | Bin 0 -> 1110 bytes core/static/images/icons/restaurant/cup.png | Bin 0 -> 1084 bytes .../images/icons/restaurant/fork-dark.png | Bin 0 -> 1259 bytes core/static/images/icons/restaurant/fork.png | Bin 0 -> 1223 bytes .../images/icons/restaurant/glass-dark.png | Bin 0 -> 1343 bytes core/static/images/icons/restaurant/glass.png | Bin 0 -> 1186 bytes .../images/icons/restaurant/tea-dark.png | Bin 0 -> 2025 bytes core/static/images/icons/restaurant/tea.png | Bin 0 -> 1922 bytes core/static/images/icons/retina.png | Bin 0 -> 1682 bytes core/static/images/icons/seo.png | Bin 0 -> 1932 bytes core/static/images/icons/support.png | Bin 0 -> 2166 bytes core/static/images/icons/tick.png | Bin 0 -> 6046 bytes core/static/images/icons/tools.png | Bin 0 -> 5912 bytes core/static/images/icons/video-play.png | Bin 0 -> 597 bytes .../images/logos copy/logo_negative.png | Bin 0 -> 7502 bytes .../logos copy/logo_negative100x100.png | Bin 0 -> 12630 bytes core/static/images/logos/logo_negative.png | Bin 0 -> 7502 bytes .../images/logos/logo_negative100x100.png | Bin 0 -> 12630 bytes .../images/logos/logo_scielo_negative.png | Bin 0 -> 7502 bytes .../logos/logo_scielo_negative100x100.png | Bin 0 -> 12630 bytes core/static/images/parallax/1.jpg | Bin 0 -> 262092 bytes core/static/images/parallax/2.jpg | Bin 0 -> 144098 bytes core/static/images/parallax/3.jpg | Bin 0 -> 108177 bytes core/static/images/parallax/7.jpg | Bin 0 -> 32977 bytes core/static/images/parallax/8.jpg | Bin 0 -> 350185 bytes core/static/images/parallax/9.jpg | Bin 0 -> 277608 bytes core/static/images/parallax/bgpattern.png | Bin 0 -> 46463 bytes core/static/images/parallax/blur1.jpg | Bin 0 -> 38402 bytes core/static/images/parallax/blur2.jpg | Bin 0 -> 55105 bytes core/static/images/parallax/calendar.jpg | Bin 0 -> 71289 bytes core/static/images/parallax/home/1.jpg | Bin 0 -> 257702 bytes core/static/images/parallax/home/10.jpg | Bin 0 -> 245114 bytes core/static/images/parallax/home/11.jpg | Bin 0 -> 117732 bytes core/static/images/parallax/home/2.jpg | Bin 0 -> 431134 bytes core/static/images/parallax/home/4.jpg | Bin 0 -> 400826 bytes core/static/images/parallax/home/5.jpg | Bin 0 -> 125111 bytes core/static/images/parallax/home/6.jpg | Bin 0 -> 259401 bytes core/static/images/parallax/home/7.jpg | Bin 0 -> 254653 bytes core/static/images/parallax/home/9.jpg | Bin 0 -> 70714 bytes core/static/images/parallax/parallax-bg.jpg | Bin 0 -> 83012 bytes core/static/images/pattern copy.png | Bin 0 -> 69754 bytes core/static/images/pattern.png | Bin 0 -> 69754 bytes core/static/img/logo-footer-bireme.svg | 81 + core/static/img/logo-footer-bvs.svg | 37 + core/static/img/logo-footer-capes.svg | 74 + core/static/img/logo-footer-cnpq.svg | 16 + core/static/img/logo-footer-fap.svg | 52 + core/static/img/logo-footer-fapesp.svg | 8 + core/static/img/logo-open-access.svg | 5 + .../img/logo-scielo-no-label-negative.svg | 5 + core/static/img/logo-scielo-no-label.svg | 38 + .../admin/notification/toastr/toastr-rtl.css | 448 + .../admin/notification/toastr/toastr.css.map | 14 + .../admin/notification/toastr/toastr.min.css | 7 + core/static/journal_about/css/article.css | 3 + core/static/journal_about/css/bootstrap.css | 10 + .../journal_about/css/bootstrap.css.map | 1 + .../journal_about/css/jquery.typeahead.css | 1 + .../static/journal_about/css/rq_dashboard.css | 51 + .../css/scielo-article-standalone.css | 2 + .../css/scielo-article-standalone.css.map | 1 + .../journal_about/css/scielo-article.css | 1 + .../journal_about/css/scielo-article.css.map | 1 + .../css/scielo-bundle-print-min.css | 1 + .../journal_about/css/scielo-bundle-print.css | 2 + .../css/scielo-bundle-print.css.map | 1 + .../journal_about/css/scielo-bundle.css | 7 + .../journal_about/css/scielo-bundle.css.map | 1 + core/static/journal_about/css/style.css | 1 + .../glyphicons-halflings-regular.eot | Bin 0 -> 20335 bytes .../glyphicons-halflings-regular.svg | 229 + .../glyphicons-halflings-regular.ttf | Bin 0 -> 41280 bytes .../glyphicons-halflings-regular.woff | Bin 0 -> 23320 bytes .../fonts-new/scielo-glyphs.json | 1138 ++ .../journal_about/fonts-new/scielo-glyphs.svg | 56 + .../journal_about/fonts-new/scielo-glyphs.ttf | Bin 0 -> 13660 bytes .../fonts-new/scielo-glyphs.woff | Bin 0 -> 14068 bytes .../fonts/glyphicons-halflings-regular.eot | Bin 0 -> 20335 bytes .../fonts/glyphicons-halflings-regular.svg | 229 + .../fonts/glyphicons-halflings-regular.ttf | Bin 0 -> 41280 bytes .../fonts/glyphicons-halflings-regular.woff | Bin 0 -> 23320 bytes core/static/journal_about/images/BIREME.png | Bin 0 -> 3401 bytes core/static/journal_about/images/BVS.png | Bin 0 -> 1528 bytes core/static/journal_about/images/CAPES.png | Bin 0 -> 6061 bytes core/static/journal_about/images/CNPq.png | Bin 0 -> 7767 bytes .../journal_about/images/FAP-UNIFESP.png | Bin 0 -> 4248 bytes core/static/journal_about/images/FAPESP.png | Bin 0 -> 7981 bytes .../journal_about/images/abcd_glogo.gif | Bin 0 -> 8774 bytes .../images/articleContent-arrow.png | Bin 0 -> 178 bytes .../images/authorIcon-lattes-matteWhite.png | Bin 0 -> 1221 bytes .../images/authorIcon-lattes.png | Bin 0 -> 1187 bytes .../journal_about/images/authorIcon-orcid.png | Bin 0 -> 1261 bytes .../images/authorIcon-researcherid.png | Bin 0 -> 1275 bytes .../images/authorIcon-scopus.png | Bin 0 -> 1556 bytes .../images/button.error.feedback.jpg | Bin 0 -> 7621 bytes .../journal_about/images/button.glyphs.png | Bin 0 -> 12177 bytes core/static/journal_about/images/dashline.png | Bin 0 -> 99 bytes .../journal_about/images/dashline.v.png | Bin 0 -> 101 bytes .../journal_about/images/dropdown-arrow.png | Bin 0 -> 169 bytes .../journal_about/images/fallback_image.png | Bin 0 -> 379 bytes core/static/journal_about/images/favicon.ico | Bin 0 -> 7886 bytes .../static/journal_about/images/fig-thumb.png | Bin 0 -> 756 bytes core/static/journal_about/images/flags.png | Bin 0 -> 1140 bytes .../images/full_text_scielo_img.gif | Bin 0 -> 1053 bytes .../images/img-post-blog-scielo-exemplo.jpg | Bin 0 -> 193126 bytes .../journal_about/images/input.glyphs.png | Bin 0 -> 944 bytes .../journal_about/images/list.loading.gif | Bin 0 -> 3501 bytes .../images/logo-dimensionsbadge-min.jpg | Bin 0 -> 3355 bytes .../images/logo-footer-bireme.svg | 81 + .../journal_about/images/logo-footer-bvs.svg | 37 + .../images/logo-footer-capes.svg | 74 + .../journal_about/images/logo-footer-cnpq.svg | 16 + .../journal_about/images/logo-footer-fap.svg | 52 + .../images/logo-footer-fapesp.svg | 8 + .../journal_about/images/logo-open-access.svg | 5 + .../journal_about/images/logo-plumx-min.jpg | Bin 0 -> 3511 bytes .../journal_about/images/logo-scielo-min.jpg | Bin 0 -> 2582 bytes .../images/logo-scielo-no-label-negative.svg | 5 + .../images/logo-scielo-no-label.svg | 38 + .../images/logo-scielo-signature.png | Bin 0 -> 3182 bytes .../journal_about/images/logo-scielo-svg.svg | 57 + .../journal_about/images/logo-scielo.svg | 2638 +++ .../journal_about/images/menu.glyphs.png | Bin 0 -> 238 bytes .../journal_about/images/mid.glyphs.png | Bin 0 -> 1318 bytes .../journal_about/images/oa_logo_32.png | Bin 0 -> 1111 bytes .../journal_about/images/placeholder.jpg | Bin 0 -> 195619 bytes core/static/journal_about/images/readcube.png | Bin 0 -> 5177 bytes core/static/journal_about/images/scimago.svg | 57 + .../images/searchForm.selectBox.png | Bin 0 -> 140 bytes .../journal_about/images/table-thumb.png | Bin 0 -> 506 bytes core/static/journal_about/img/abcd_globo.gif | Bin 0 -> 8774 bytes core/static/journal_about/img/abcd_glogo.gif | Bin 0 -> 8774 bytes .../img/articleContent-arrow.png | Bin 0 -> 178 bytes .../img/authorIcon-lattes-matteWhite.png | Bin 0 -> 1221 bytes .../journal_about/img/authorIcon-lattes.png | Bin 0 -> 1187 bytes .../journal_about/img/authorIcon-orcid.png | Bin 0 -> 1261 bytes .../img/authorIcon-researcherid.png | Bin 0 -> 1275 bytes .../journal_about/img/authorIcon-scopus.png | Bin 0 -> 1556 bytes .../img/button.error.feedback.jpg | Bin 0 -> 7621 bytes .../journal_about/img/button.glyphs.png | Bin 0 -> 12177 bytes core/static/journal_about/img/dashline.png | Bin 0 -> 99 bytes core/static/journal_about/img/dashline.v.png | Bin 0 -> 101 bytes .../journal_about/img/dropdown-arrow.png | Bin 0 -> 169 bytes .../journal_about/img/fallback_image.png | Bin 0 -> 379 bytes core/static/journal_about/img/favicon.ico | Bin 0 -> 7886 bytes core/static/journal_about/img/fig-thumb.png | Bin 0 -> 756 bytes core/static/journal_about/img/flags.png | Bin 0 -> 1140 bytes .../img/full_text_scielo_img.gif | Bin 0 -> 1053 bytes .../img/img-post-blog-scielo-exemplo.jpg | Bin 0 -> 193126 bytes .../static/journal_about/img/input.glyphs.png | Bin 0 -> 944 bytes .../static/journal_about/img/list.loading.gif | Bin 0 -> 3501 bytes .../img/logo-dimensionsbadge-min.jpg | Bin 0 -> 3355 bytes .../journal_about/img/logo-footer-bireme.svg | 81 + .../journal_about/img/logo-footer-bvs.svg | 37 + .../journal_about/img/logo-footer-capes.svg | 74 + .../journal_about/img/logo-footer-cnpq.svg | 16 + .../journal_about/img/logo-footer-fap.svg | 52 + .../journal_about/img/logo-footer-fapesp.svg | 8 + .../journal_about/img/logo-open-access.svg | 5 + core/static/journal_about/img/logo-orcid.svg | 17 + .../journal_about/img/logo-plumx-min.jpg | Bin 0 -> 3511 bytes .../journal_about/img/logo-scielo-min.jpg | Bin 0 -> 2582 bytes .../img/logo-scielo-no-label-negative.svg | 5 + .../img/logo-scielo-no-label.svg | 38 + .../img/logo-scielo-signature.png | Bin 0 -> 3182 bytes .../journal_about/img/logo-scielo-svg.svg | 57 + core/static/journal_about/img/logo-scielo.svg | 2638 +++ core/static/journal_about/img/menu.glyphs.png | Bin 0 -> 238 bytes core/static/journal_about/img/mid.glyphs.png | Bin 0 -> 1318 bytes core/static/journal_about/img/oa_logo_32.png | Bin 0 -> 1111 bytes core/static/journal_about/img/placeholder.jpg | Bin 0 -> 195619 bytes core/static/journal_about/img/readcube.png | Bin 0 -> 5177 bytes core/static/journal_about/img/scimago.svg | 57 + .../img/searchForm.selectBox.png | Bin 0 -> 140 bytes core/static/journal_about/img/table-thumb.png | Bin 0 -> 506 bytes .../static/journal_about/js/ZeroClipboard.swf | Bin 0 -> 6586 bytes core/static/journal_about/js/admin/common.js | 16 + core/static/journal_about/js/api.js | 1 + .../journal_about/js/bootstrap.bundle.js | 6713 ++++++ .../journal_about/js/bootstrap.bundle.min.js | 6 + .../journal_about/js/ckeditor/CHANGES.md | 1414 ++ .../journal_about/js/ckeditor/LICENSE.md | 1420 ++ .../journal_about/js/ckeditor/README.md | 39 + .../js/ckeditor/adapters/jquery.js | 10 + .../journal_about/js/ckeditor/build-config.js | 189 + .../journal_about/js/ckeditor/ckeditor.js | 1307 ++ .../journal_about/js/ckeditor/config.js | 40 + .../journal_about/js/ckeditor/contents.css | 208 + .../journal_about/js/ckeditor/lang/af.js | 5 + .../journal_about/js/ckeditor/lang/ar.js | 5 + .../journal_about/js/ckeditor/lang/az.js | 5 + .../journal_about/js/ckeditor/lang/bg.js | 5 + .../journal_about/js/ckeditor/lang/bn.js | 5 + .../journal_about/js/ckeditor/lang/bs.js | 5 + .../journal_about/js/ckeditor/lang/ca.js | 5 + .../journal_about/js/ckeditor/lang/cs.js | 5 + .../journal_about/js/ckeditor/lang/cy.js | 5 + .../journal_about/js/ckeditor/lang/da.js | 5 + .../journal_about/js/ckeditor/lang/de-ch.js | 5 + .../journal_about/js/ckeditor/lang/de.js | 5 + .../journal_about/js/ckeditor/lang/el.js | 5 + .../journal_about/js/ckeditor/lang/en-au.js | 5 + .../journal_about/js/ckeditor/lang/en-ca.js | 5 + .../journal_about/js/ckeditor/lang/en-gb.js | 5 + .../journal_about/js/ckeditor/lang/en.js | 5 + .../journal_about/js/ckeditor/lang/eo.js | 5 + .../journal_about/js/ckeditor/lang/es-mx.js | 5 + .../journal_about/js/ckeditor/lang/es.js | 5 + .../journal_about/js/ckeditor/lang/et.js | 5 + .../journal_about/js/ckeditor/lang/eu.js | 5 + .../journal_about/js/ckeditor/lang/fa.js | 5 + .../journal_about/js/ckeditor/lang/fi.js | 5 + .../journal_about/js/ckeditor/lang/fo.js | 5 + .../journal_about/js/ckeditor/lang/fr-ca.js | 5 + .../journal_about/js/ckeditor/lang/fr.js | 5 + .../journal_about/js/ckeditor/lang/gl.js | 5 + .../journal_about/js/ckeditor/lang/gu.js | 5 + .../journal_about/js/ckeditor/lang/he.js | 5 + .../journal_about/js/ckeditor/lang/hi.js | 5 + .../journal_about/js/ckeditor/lang/hr.js | 5 + .../journal_about/js/ckeditor/lang/hu.js | 5 + .../journal_about/js/ckeditor/lang/id.js | 5 + .../journal_about/js/ckeditor/lang/is.js | 5 + .../journal_about/js/ckeditor/lang/it.js | 5 + .../journal_about/js/ckeditor/lang/ja.js | 5 + .../journal_about/js/ckeditor/lang/ka.js | 5 + .../journal_about/js/ckeditor/lang/km.js | 5 + .../journal_about/js/ckeditor/lang/ko.js | 5 + .../journal_about/js/ckeditor/lang/ku.js | 5 + .../journal_about/js/ckeditor/lang/lt.js | 5 + .../journal_about/js/ckeditor/lang/lv.js | 5 + .../journal_about/js/ckeditor/lang/mk.js | 5 + .../journal_about/js/ckeditor/lang/mn.js | 5 + .../journal_about/js/ckeditor/lang/ms.js | 5 + .../journal_about/js/ckeditor/lang/nb.js | 5 + .../journal_about/js/ckeditor/lang/nl.js | 5 + .../journal_about/js/ckeditor/lang/no.js | 5 + .../journal_about/js/ckeditor/lang/oc.js | 5 + .../journal_about/js/ckeditor/lang/pl.js | 5 + .../journal_about/js/ckeditor/lang/pt-br.js | 5 + .../journal_about/js/ckeditor/lang/pt.js | 5 + .../journal_about/js/ckeditor/lang/ro.js | 5 + .../journal_about/js/ckeditor/lang/ru.js | 5 + .../journal_about/js/ckeditor/lang/si.js | 5 + .../journal_about/js/ckeditor/lang/sk.js | 5 + .../journal_about/js/ckeditor/lang/sl.js | 5 + .../journal_about/js/ckeditor/lang/sq.js | 5 + .../journal_about/js/ckeditor/lang/sr-latn.js | 5 + .../journal_about/js/ckeditor/lang/sr.js | 5 + .../journal_about/js/ckeditor/lang/sv.js | 5 + .../journal_about/js/ckeditor/lang/th.js | 5 + .../journal_about/js/ckeditor/lang/tr.js | 5 + .../journal_about/js/ckeditor/lang/tt.js | 5 + .../journal_about/js/ckeditor/lang/ug.js | 5 + .../journal_about/js/ckeditor/lang/uk.js | 5 + .../journal_about/js/ckeditor/lang/vi.js | 5 + .../journal_about/js/ckeditor/lang/zh-cn.js | 5 + .../journal_about/js/ckeditor/lang/zh.js | 5 + .../plugins/a11yhelp/dialogs/a11yhelp.js | 10 + .../dialogs/lang/_translationstatus.txt | 25 + .../plugins/a11yhelp/dialogs/lang/af.js | 11 + .../plugins/a11yhelp/dialogs/lang/ar.js | 11 + .../plugins/a11yhelp/dialogs/lang/az.js | 11 + .../plugins/a11yhelp/dialogs/lang/bg.js | 11 + .../plugins/a11yhelp/dialogs/lang/ca.js | 13 + .../plugins/a11yhelp/dialogs/lang/cs.js | 12 + .../plugins/a11yhelp/dialogs/lang/cy.js | 11 + .../plugins/a11yhelp/dialogs/lang/da.js | 11 + .../plugins/a11yhelp/dialogs/lang/de-ch.js | 12 + .../plugins/a11yhelp/dialogs/lang/de.js | 13 + .../plugins/a11yhelp/dialogs/lang/el.js | 13 + .../plugins/a11yhelp/dialogs/lang/en-au.js | 11 + .../plugins/a11yhelp/dialogs/lang/en-gb.js | 11 + .../plugins/a11yhelp/dialogs/lang/en.js | 11 + .../plugins/a11yhelp/dialogs/lang/eo.js | 12 + .../plugins/a11yhelp/dialogs/lang/es-mx.js | 13 + .../plugins/a11yhelp/dialogs/lang/es.js | 13 + .../plugins/a11yhelp/dialogs/lang/et.js | 11 + .../plugins/a11yhelp/dialogs/lang/eu.js | 12 + .../plugins/a11yhelp/dialogs/lang/fa.js | 11 + .../plugins/a11yhelp/dialogs/lang/fi.js | 11 + .../plugins/a11yhelp/dialogs/lang/fo.js | 11 + .../plugins/a11yhelp/dialogs/lang/fr-ca.js | 11 + .../plugins/a11yhelp/dialogs/lang/fr.js | 13 + .../plugins/a11yhelp/dialogs/lang/gl.js | 12 + .../plugins/a11yhelp/dialogs/lang/gu.js | 11 + .../plugins/a11yhelp/dialogs/lang/he.js | 11 + .../plugins/a11yhelp/dialogs/lang/hi.js | 11 + .../plugins/a11yhelp/dialogs/lang/hr.js | 11 + .../plugins/a11yhelp/dialogs/lang/hu.js | 12 + .../plugins/a11yhelp/dialogs/lang/id.js | 11 + .../plugins/a11yhelp/dialogs/lang/it.js | 13 + .../plugins/a11yhelp/dialogs/lang/ja.js | 9 + .../plugins/a11yhelp/dialogs/lang/km.js | 11 + .../plugins/a11yhelp/dialogs/lang/ko.js | 10 + .../plugins/a11yhelp/dialogs/lang/ku.js | 11 + .../plugins/a11yhelp/dialogs/lang/lt.js | 11 + .../plugins/a11yhelp/dialogs/lang/lv.js | 12 + .../plugins/a11yhelp/dialogs/lang/mk.js | 11 + .../plugins/a11yhelp/dialogs/lang/mn.js | 11 + .../plugins/a11yhelp/dialogs/lang/nb.js | 12 + .../plugins/a11yhelp/dialogs/lang/nl.js | 12 + .../plugins/a11yhelp/dialogs/lang/no.js | 11 + .../plugins/a11yhelp/dialogs/lang/oc.js | 12 + .../plugins/a11yhelp/dialogs/lang/pl.js | 13 + .../plugins/a11yhelp/dialogs/lang/pt-br.js | 13 + .../plugins/a11yhelp/dialogs/lang/pt.js | 12 + .../plugins/a11yhelp/dialogs/lang/ro.js | 12 + .../plugins/a11yhelp/dialogs/lang/ru.js | 11 + .../plugins/a11yhelp/dialogs/lang/si.js | 10 + .../plugins/a11yhelp/dialogs/lang/sk.js | 11 + .../plugins/a11yhelp/dialogs/lang/sl.js | 11 + .../plugins/a11yhelp/dialogs/lang/sq.js | 11 + .../plugins/a11yhelp/dialogs/lang/sr-latn.js | 11 + .../plugins/a11yhelp/dialogs/lang/sr.js | 11 + .../plugins/a11yhelp/dialogs/lang/sv.js | 11 + .../plugins/a11yhelp/dialogs/lang/th.js | 11 + .../plugins/a11yhelp/dialogs/lang/tr.js | 12 + .../plugins/a11yhelp/dialogs/lang/tt.js | 11 + .../plugins/a11yhelp/dialogs/lang/ug.js | 12 + .../plugins/a11yhelp/dialogs/lang/uk.js | 12 + .../plugins/a11yhelp/dialogs/lang/vi.js | 11 + .../plugins/a11yhelp/dialogs/lang/zh-cn.js | 9 + .../plugins/a11yhelp/dialogs/lang/zh.js | 9 + .../ckeditor/plugins/about/dialogs/about.js | 8 + .../about/dialogs/hidpi/logo_ckeditor.png | Bin 0 -> 12236 bytes .../plugins/about/dialogs/logo_ckeditor.png | Bin 0 -> 5650 bytes .../colordialog/dialogs/colordialog.css | 20 + .../colordialog/dialogs/colordialog.js | 14 + .../cursors/cursor-disabled.svg | 25 + .../plugins/copyformatting/cursors/cursor.svg | 14 + .../copyformatting/styles/copyformatting.css | 45 + .../plugins/dialog/dialogDefinition.js | 4 + .../js/ckeditor/plugins/div/dialogs/div.js | 9 + .../js/ckeditor/plugins/find/dialogs/find.js | 25 + .../ckeditor/plugins/flash/dialogs/flash.js | 24 + .../plugins/flash/images/placeholder.png | Bin 0 -> 256 bytes .../ckeditor/plugins/forms/dialogs/button.js | 8 + .../plugins/forms/dialogs/checkbox.js | 9 + .../js/ckeditor/plugins/forms/dialogs/form.js | 8 + .../plugins/forms/dialogs/hiddenfield.js | 7 + .../ckeditor/plugins/forms/dialogs/radio.js | 9 + .../ckeditor/plugins/forms/dialogs/select.js | 20 + .../plugins/forms/dialogs/textarea.js | 8 + .../plugins/forms/dialogs/textfield.js | 11 + .../plugins/forms/images/hiddenfield.gif | Bin 0 -> 178 bytes .../js/ckeditor/plugins/icons.png | Bin 0 -> 12421 bytes .../js/ckeditor/plugins/icons_hidpi.png | Bin 0 -> 40265 bytes .../ckeditor/plugins/iframe/dialogs/iframe.js | 10 + .../plugins/iframe/images/placeholder.png | Bin 0 -> 265 bytes .../ckeditor/plugins/image/dialogs/image.js | 44 + .../ckeditor/plugins/image/images/noimage.png | Bin 0 -> 1610 bytes .../ckeditor/plugins/link/dialogs/anchor.js | 8 + .../js/ckeditor/plugins/link/dialogs/link.js | 28 + .../ckeditor/plugins/link/images/anchor.png | Bin 0 -> 752 bytes .../plugins/link/images/hidpi/anchor.png | Bin 0 -> 1109 bytes .../plugins/liststyle/dialogs/liststyle.js | 10 + .../magicline/images/hidpi/icon-rtl.png | Bin 0 -> 176 bytes .../plugins/magicline/images/hidpi/icon.png | Bin 0 -> 199 bytes .../plugins/magicline/images/icon-rtl.png | Bin 0 -> 138 bytes .../plugins/magicline/images/icon.png | Bin 0 -> 133 bytes .../plugins/pagebreak/images/pagebreak.gif | Bin 0 -> 99 bytes .../plugins/pastefromword/filter/default.js | 55 + .../js/ckeditor/plugins/preview/preview.html | 13 + .../js/ckeditor/plugins/scayt/CHANGELOG.md | 20 + .../js/ckeditor/plugins/scayt/LICENSE.md | 28 + .../js/ckeditor/plugins/scayt/README.md | 25 + .../ckeditor/plugins/scayt/dialogs/dialog.css | 23 + .../ckeditor/plugins/scayt/dialogs/options.js | 33 + .../plugins/scayt/dialogs/toolbar.css | 71 + .../plugins/scayt/skins/moono-lisa/scayt.css | 25 + .../showblocks/images/block_address.png | Bin 0 -> 152 bytes .../showblocks/images/block_blockquote.png | Bin 0 -> 154 bytes .../plugins/showblocks/images/block_div.png | Bin 0 -> 127 bytes .../plugins/showblocks/images/block_h1.png | Bin 0 -> 120 bytes .../plugins/showblocks/images/block_h2.png | Bin 0 -> 127 bytes .../plugins/showblocks/images/block_h3.png | Bin 0 -> 123 bytes .../plugins/showblocks/images/block_h4.png | Bin 0 -> 123 bytes .../plugins/showblocks/images/block_h5.png | Bin 0 -> 126 bytes .../plugins/showblocks/images/block_h6.png | Bin 0 -> 123 bytes .../plugins/showblocks/images/block_p.png | Bin 0 -> 115 bytes .../plugins/showblocks/images/block_pre.png | Bin 0 -> 128 bytes .../ckeditor/plugins/smiley/dialogs/smiley.js | 11 + .../plugins/smiley/images/angel_smile.gif | Bin 0 -> 1245 bytes .../plugins/smiley/images/angel_smile.png | Bin 0 -> 1172 bytes .../plugins/smiley/images/angry_smile.gif | Bin 0 -> 1219 bytes .../plugins/smiley/images/angry_smile.png | Bin 0 -> 1220 bytes .../plugins/smiley/images/broken_heart.gif | Bin 0 -> 732 bytes .../plugins/smiley/images/broken_heart.png | Bin 0 -> 1139 bytes .../plugins/smiley/images/confused_smile.gif | Bin 0 -> 1202 bytes .../plugins/smiley/images/confused_smile.png | Bin 0 -> 1101 bytes .../plugins/smiley/images/cry_smile.gif | Bin 0 -> 795 bytes .../plugins/smiley/images/cry_smile.png | Bin 0 -> 1214 bytes .../plugins/smiley/images/devil_smile.gif | Bin 0 -> 1239 bytes .../plugins/smiley/images/devil_smile.png | Bin 0 -> 1220 bytes .../smiley/images/embaressed_smile.gif | Bin 0 -> 786 bytes .../smiley/images/embarrassed_smile.gif | Bin 0 -> 786 bytes .../smiley/images/embarrassed_smile.png | Bin 0 -> 1145 bytes .../plugins/smiley/images/envelope.gif | Bin 0 -> 506 bytes .../plugins/smiley/images/envelope.png | Bin 0 -> 760 bytes .../ckeditor/plugins/smiley/images/heart.gif | Bin 0 -> 692 bytes .../ckeditor/plugins/smiley/images/heart.png | Bin 0 -> 999 bytes .../ckeditor/plugins/smiley/images/kiss.gif | Bin 0 -> 683 bytes .../ckeditor/plugins/smiley/images/kiss.png | Bin 0 -> 1003 bytes .../plugins/smiley/images/lightbulb.gif | Bin 0 -> 660 bytes .../plugins/smiley/images/lightbulb.png | Bin 0 -> 919 bytes .../plugins/smiley/images/omg_smile.gif | Bin 0 -> 820 bytes .../plugins/smiley/images/omg_smile.png | Bin 0 -> 1122 bytes .../plugins/smiley/images/regular_smile.gif | Bin 0 -> 1209 bytes .../plugins/smiley/images/regular_smile.png | Bin 0 -> 1084 bytes .../plugins/smiley/images/sad_smile.gif | Bin 0 -> 782 bytes .../plugins/smiley/images/sad_smile.png | Bin 0 -> 1115 bytes .../plugins/smiley/images/shades_smile.gif | Bin 0 -> 1231 bytes .../plugins/smiley/images/shades_smile.png | Bin 0 -> 1204 bytes .../plugins/smiley/images/teeth_smile.gif | Bin 0 -> 1201 bytes .../plugins/smiley/images/teeth_smile.png | Bin 0 -> 1183 bytes .../plugins/smiley/images/thumbs_down.gif | Bin 0 -> 715 bytes .../plugins/smiley/images/thumbs_down.png | Bin 0 -> 985 bytes .../plugins/smiley/images/thumbs_up.gif | Bin 0 -> 714 bytes .../plugins/smiley/images/thumbs_up.png | Bin 0 -> 959 bytes .../plugins/smiley/images/tongue_smile.gif | Bin 0 -> 1210 bytes .../plugins/smiley/images/tongue_smile.png | Bin 0 -> 1132 bytes .../plugins/smiley/images/tounge_smile.gif | Bin 0 -> 1210 bytes .../images/whatchutalkingabout_smile.gif | Bin 0 -> 775 bytes .../images/whatchutalkingabout_smile.png | Bin 0 -> 1039 bytes .../plugins/smiley/images/wink_smile.gif | Bin 0 -> 1202 bytes .../plugins/smiley/images/wink_smile.png | Bin 0 -> 1114 bytes .../dialogs/lang/_translationstatus.txt | 20 + .../plugins/specialchar/dialogs/lang/af.js | 13 + .../plugins/specialchar/dialogs/lang/ar.js | 13 + .../plugins/specialchar/dialogs/lang/az.js | 10 + .../plugins/specialchar/dialogs/lang/bg.js | 13 + .../plugins/specialchar/dialogs/lang/ca.js | 14 + .../plugins/specialchar/dialogs/lang/cs.js | 13 + .../plugins/specialchar/dialogs/lang/cy.js | 14 + .../plugins/specialchar/dialogs/lang/da.js | 11 + .../plugins/specialchar/dialogs/lang/de-ch.js | 13 + .../plugins/specialchar/dialogs/lang/de.js | 13 + .../plugins/specialchar/dialogs/lang/el.js | 13 + .../plugins/specialchar/dialogs/lang/en-au.js | 13 + .../plugins/specialchar/dialogs/lang/en-ca.js | 13 + .../plugins/specialchar/dialogs/lang/en-gb.js | 13 + .../plugins/specialchar/dialogs/lang/en.js | 13 + .../plugins/specialchar/dialogs/lang/eo.js | 12 + .../plugins/specialchar/dialogs/lang/es-mx.js | 13 + .../plugins/specialchar/dialogs/lang/es.js | 13 + .../plugins/specialchar/dialogs/lang/et.js | 13 + .../plugins/specialchar/dialogs/lang/eu.js | 13 + .../plugins/specialchar/dialogs/lang/fa.js | 12 + .../plugins/specialchar/dialogs/lang/fi.js | 13 + .../plugins/specialchar/dialogs/lang/fr-ca.js | 10 + .../plugins/specialchar/dialogs/lang/fr.js | 12 + .../plugins/specialchar/dialogs/lang/gl.js | 13 + .../plugins/specialchar/dialogs/lang/he.js | 12 + .../plugins/specialchar/dialogs/lang/hr.js | 13 + .../plugins/specialchar/dialogs/lang/hu.js | 12 + .../plugins/specialchar/dialogs/lang/id.js | 13 + .../plugins/specialchar/dialogs/lang/it.js | 14 + .../plugins/specialchar/dialogs/lang/ja.js | 9 + .../plugins/specialchar/dialogs/lang/km.js | 13 + .../plugins/specialchar/dialogs/lang/ko.js | 10 + .../plugins/specialchar/dialogs/lang/ku.js | 13 + .../plugins/specialchar/dialogs/lang/lt.js | 13 + .../plugins/specialchar/dialogs/lang/lv.js | 13 + .../plugins/specialchar/dialogs/lang/nb.js | 11 + .../plugins/specialchar/dialogs/lang/nl.js | 13 + .../plugins/specialchar/dialogs/lang/no.js | 11 + .../plugins/specialchar/dialogs/lang/oc.js | 12 + .../plugins/specialchar/dialogs/lang/pl.js | 12 + .../plugins/specialchar/dialogs/lang/pt-br.js | 11 + .../plugins/specialchar/dialogs/lang/pt.js | 13 + .../plugins/specialchar/dialogs/lang/ro.js | 13 + .../plugins/specialchar/dialogs/lang/ru.js | 13 + .../plugins/specialchar/dialogs/lang/si.js | 13 + .../plugins/specialchar/dialogs/lang/sk.js | 13 + .../plugins/specialchar/dialogs/lang/sl.js | 12 + .../plugins/specialchar/dialogs/lang/sq.js | 13 + .../plugins/specialchar/dialogs/lang/sv.js | 11 + .../plugins/specialchar/dialogs/lang/th.js | 13 + .../plugins/specialchar/dialogs/lang/tr.js | 12 + .../plugins/specialchar/dialogs/lang/tt.js | 13 + .../plugins/specialchar/dialogs/lang/ug.js | 13 + .../plugins/specialchar/dialogs/lang/uk.js | 12 + .../plugins/specialchar/dialogs/lang/vi.js | 14 + .../plugins/specialchar/dialogs/lang/zh-cn.js | 9 + .../plugins/specialchar/dialogs/lang/zh.js | 9 + .../specialchar/dialogs/specialchar.js | 14 + .../ckeditor/plugins/table/dialogs/table.js | 21 + .../tableselection/styles/tableselection.css | 32 + .../plugins/tabletools/dialogs/tableCell.js | 18 + .../plugins/templates/dialogs/templates.css | 84 + .../plugins/templates/dialogs/templates.js | 10 + .../plugins/templates/templates/default.js | 7 + .../templates/templates/images/template1.gif | Bin 0 -> 539 bytes .../templates/templates/images/template2.gif | Bin 0 -> 497 bytes .../templates/templates/images/template3.gif | Bin 0 -> 557 bytes .../ckeditor/plugins/widget/images/handle.png | Bin 0 -> 220 bytes .../js/ckeditor/plugins/wsc/LICENSE.md | 28 + .../js/ckeditor/plugins/wsc/README.md | 25 + .../ckeditor/plugins/wsc/dialogs/ciframe.html | 66 + .../plugins/wsc/dialogs/tmpFrameset.html | 52 + .../js/ckeditor/plugins/wsc/dialogs/wsc.css | 82 + .../js/ckeditor/plugins/wsc/dialogs/wsc.js | 91 + .../js/ckeditor/plugins/wsc/dialogs/wsc_ie.js | 11 + .../plugins/wsc/skins/moono-lisa/wsc.css | 43 + .../js/ckeditor/skins/moono-lisa/dialog.css | 5 + .../ckeditor/skins/moono-lisa/dialog_ie.css | 5 + .../ckeditor/skins/moono-lisa/dialog_ie8.css | 5 + .../skins/moono-lisa/dialog_iequirks.css | 5 + .../js/ckeditor/skins/moono-lisa/editor.css | 5 + .../skins/moono-lisa/editor_gecko.css | 0 .../ckeditor/skins/moono-lisa/editor_ie.css | 5 + .../ckeditor/skins/moono-lisa/editor_ie8.css | 5 + .../skins/moono-lisa/editor_iequirks.css | 5 + .../js/ckeditor/skins/moono-lisa/icons.png | Bin 0 -> 12421 bytes .../ckeditor/skins/moono-lisa/icons_hidpi.png | Bin 0 -> 40265 bytes .../skins/moono-lisa/images/arrow.png | Bin 0 -> 191 bytes .../skins/moono-lisa/images/close.png | Bin 0 -> 615 bytes .../skins/moono-lisa/images/hidpi/close.png | Bin 0 -> 1238 bytes .../moono-lisa/images/hidpi/lock-open.png | Bin 0 -> 1071 bytes .../skins/moono-lisa/images/hidpi/lock.png | Bin 0 -> 1062 bytes .../skins/moono-lisa/images/hidpi/refresh.png | Bin 0 -> 1623 bytes .../skins/moono-lisa/images/lock-open.png | Bin 0 -> 511 bytes .../ckeditor/skins/moono-lisa/images/lock.png | Bin 0 -> 506 bytes .../skins/moono-lisa/images/refresh.png | Bin 0 -> 757 bytes .../skins/moono-lisa/images/spinner.gif | Bin 0 -> 2984 bytes .../js/ckeditor/skins/moono-lisa/readme.md | 46 + .../journal_about/js/ckeditor/styles.js | 137 + core/static/journal_about/js/common.js | 45 + core/static/journal_about/js/cookieMsg.js | 101 + .../journal_about/js/cookiePolicy.min.js | 1 + .../journal_about/js/copyLink.action.js | 14 + core/static/journal_about/js/journal_lists.js | 301 + core/static/journal_about/js/jquery.js | 16 + core/static/journal_about/js/jquery.min.js | 2 + .../journal_about/js/jquery.popupwindows.js | 62 + .../journal_about/js/jquery.tablesorter.js | 1031 + .../journal_about/js/jquery.typeahead.min.js | 10 + core/static/journal_about/js/main.js | 1301 ++ core/static/journal_about/js/modal_forms.js | 133 + .../journal_about/js/moment-with-locales.js | 13700 +++++++++++++ core/static/journal_about/js/moment.js | 4463 ++++ .../journal_about/js/moment_locale_es.js | 83 + .../journal_about/js/moment_locale_pt_br.js | 61 + core/static/journal_about/js/plugins.js | 3495 ++++ .../journal_about/js/recaptcha__pt_br.js | 970 + .../journal_about/js/scielo-article-min.js | 2 + .../js/scielo-article-standalone-min.js | 2 + .../static/journal_about/js/scielo-article.js | 640 + .../journal_about/js/scielo-bundle-min.js | 2 + core/static/journal_about/js/scielo-ds-min.js | 1 + core/static/journal_about/js/scienceopen.js | 27 + core/static/journal_about/js/slick.min.js | 1 + core/static/journal_about/js/toolbar.js | 192 + core/static/journal_about/js/underscore.js | 1548 ++ .../journal_about/js/vendor/chart.min.js | 10 + .../journal_about/js/vendor/excanvas.min.js | 1464 ++ .../js/vendor/html5-3.6-respond-1.1.0.min.js | 12 + .../journal_about/js/vendor/html5shiv.js | 5 + core/static/journal_about/less/article.less | 2658 +++ core/static/journal_about/less/bootstrap.less | 49 + .../static/journal_about/less/collection.less | 507 + .../static/journal_about/less/components.less | 118 + core/static/journal_about/less/global.less | 133 + .../journal_about/less/journal-menu.less | 244 + core/static/journal_about/less/journal.less | 877 + .../journal_about/less/jquery.typeahead.less | 534 + core/static/journal_about/less/oldie.less | 46 + core/static/journal_about/less/portal.less | 204 + .../journal_about/less/responsive-tablet.less | 43 + .../less/scielo-article-standalone.less | 16 + .../journal_about/less/scielo-article.less | 2 + .../less/scielo-bundle-print.less | 131 + .../journal_about/less/scielo-bundle.less | 7 + .../journal_about/less/scielo-glyphs.less | 166 + .../journal_about/less/scielo-portal.less | 1869 ++ .../journal_about/less/search-styles.less | 2 + core/static/journal_about/less/search.less | 965 + core/static/journal_about/less/style.less | 179 + .../maps/scielo-article-min.js.map | 1 + .../maps/scielo-article-standalone-min.js.map | 1 + .../maps/scielo-bundle-min.js.map | 1 + core/static/journal_about/robots.txt | 7 + core/static/journal_about/sass/article.scss | 2677 +++ core/static/journal_about/sass/bootstrap.scss | 71 + .../static/journal_about/sass/collection.scss | 332 + .../static/journal_about/sass/components.scss | 124 + core/static/journal_about/sass/global.scss | 142 + .../journal_about/sass/journal-menu.scss | 250 + core/static/journal_about/sass/journal.scss | 940 + .../journal_about/sass/jquery.typeahead.scss | 534 + core/static/journal_about/sass/portal.scss | 208 + .../journal_about/sass/scielo-article.scss | 2 + .../journal_about/sass/scielo-bundle.scss | 8 + .../journal_about/sass/scielo-glyphs.scss | 164 + .../journal_about/sass/scielo-portal.scss | 1927 ++ core/static/journal_about/sass/search.scss | 967 + core/static/journal_about/sass/style.scss | 181 + core/static/js/JSONStorage.js | 129 + core/static/js/bootstrap.bundle.js | 6713 ++++++ core/static/js/bootstrap.bundle.js.map | 1 + core/static/js/bootstrap.bundle.min.js | 6 + core/static/js/bootstrap.bundle.min.js.map | 1 + core/static/js/bootstrap.esm.js | 4944 +++++ core/static/js/bootstrap.esm.js.map | 1 + core/static/js/bootstrap.esm.min.js | 7 + core/static/js/bootstrap.esm.min.js.map | 1 + core/static/js/bootstrap.js | 4993 +++++ core/static/js/bootstrap.js.map | 1 + core/static/js/bootstrap.min.js | 7 + core/static/js/bootstrap.min.js.map | 1 + core/static/js/custom.js | 1 + core/static/js/functions.js | 2253 ++ core/static/js/jquery.js | 2 + core/static/js/jquery.marker.js | 13 + core/static/js/markerjs.js | 13 + core/static/js/plugins.min.js | 1 + core/static/js/plugins/Chart.min.js | 7 + .../js/plugins/jquery.dataTables.min.js | 168 + core/static/js/plugins/nouislider.min.js | 2 + core/static/js/plugins/picker.date.js | 5 + core/static/js/plugins/picker.js | 7 + core/static/js/plugins/wNumb.min.js | 1 + core/static/js/project.js | 29 + core/static/js/stopwords.js | 1 + core/static/sass/custom_bootstrap_vars.scss | 0 core/static/sass/project.scss | 37 + core/templates/403.html | 9 + core/templates/404.html | 9 + core/templates/500.html | 11 + core/templates/account/account_inactive.html | 11 + core/templates/account/base.html | 10 + core/templates/account/email.html | 78 + core/templates/account/email_confirm.html | 31 + core/templates/account/login.html | 59 + core/templates/account/logout.html | 19 + core/templates/account/password_change.html | 16 + core/templates/account/password_reset.html | 25 + .../account/password_reset_done.html | 16 + .../account/password_reset_from_key.html | 24 + .../account/password_reset_from_key_done.html | 9 + core/templates/account/password_set.html | 16 + core/templates/account/signup.html | 22 + core/templates/account/signup_closed.html | 11 + core/templates/account/verification_sent.html | 12 + .../account/verified_email_required.html | 21 + core/templates/base.html | 103 + core/templates/home/form.html | 7 + core/templates/home/form_page.html | 43 + core/templates/home/home_page.html | 139 + core/templates/home/scieloorg/base.html | 89 + core/templates/home/scieloorg/footer.html | 31 + core/templates/home/scieloorg/header.html | 17 + core/templates/home/scieloorg/modal.html | 0 core/templates/home/scieloorg/tabs.html | 2360 +++ core/templates/home/welcome_page.html | 96 + core/templates/search/search.html | 38 + core/templates/users/user_detail.html | 34 + core/templates/users/user_form.html | 17 + core/templates/wagtailadmin/admin_base.html | 17 + core/templates/wagtailadmin/base.html | 29 + core/templates/wagtailadmin/home.html | 19 + core/templates/wagtailadmin/login.html | 20 + core/tests_standardizer.py | 67 + core/users/__init__.py | 0 core/users/adapters.py | 16 + core/users/admin.py | 30 + core/users/apps.py | 13 + core/users/context_processors.py | 8 + core/users/forms.py | 43 + core/users/migrations/0001_initial.py | 137 + core/users/migrations/__init__.py | 0 core/users/models.py | 26 + core/users/tasks.py | 11 + .../templates/wagtailusers/users/create.html | 98 + .../templates/wagtailusers/users/edit.html | 111 + core/users/tests/__init__.py | 0 core/users/tests/factories.py | 31 + core/users/tests/test_admin.py | 40 + core/users/tests/test_forms.py | 39 + core/users/tests/test_models.py | 9 + core/users/tests/test_tasks.py | 16 + core/users/tests/test_urls.py | 24 + core/users/tests/test_views.py | 98 + core/users/urls.py | 10 + core/users/views.py | 46 + core/utils/__init__.py | 0 core/utils/rename_dictionary_keys.py | 16 + core/utils/scheduler.py | 61 + core/utils/standardizer.py | 91 + core/utils/utils.py | 95 + core/wagtail_hooks.py | 26 + 844 files changed, 137125 insertions(+) create mode 100644 core/__init__.py create mode 100644 core/api/__init__.py create mode 100644 core/api/v1/__init__.py create mode 100644 core/api/v1/serializers.py create mode 100644 core/api/wagtail/api.py create mode 100644 core/choices.py create mode 100644 core/conftest.py create mode 100644 core/contrib/__init__.py create mode 100644 core/contrib/sites/__init__.py create mode 100644 core/contrib/sites/migrations/0001_initial.py create mode 100644 core/contrib/sites/migrations/0002_alter_domain_unique.py create mode 100644 core/contrib/sites/migrations/0003_set_site_domain_and_name.py create mode 100644 core/contrib/sites/migrations/0004_alter_options_ordering_domain.py create mode 100644 core/contrib/sites/migrations/__init__.py create mode 100644 core/forms.py create mode 100644 core/home/__init__.py create mode 100644 core/home/migrations/0001_initial.py create mode 100644 core/home/migrations/__init__.py create mode 100644 core/home/models.py create mode 100644 core/home/static/css/welcome_page.css create mode 100644 core/libs/chkcsv.py create mode 100644 core/migrations/0001_initial.py create mode 100644 core/migrations/__init__.py create mode 100644 core/models.py create mode 100644 core/routers.py create mode 100644 core/search_site/__init__.py create mode 100644 core/search_site/views.py create mode 100644 core/static/admin/css/custom.css create mode 100644 core/static/admin/js/custom.js create mode 100644 core/static/css/bootstrap-grid.css create mode 100644 core/static/css/bootstrap-grid.css.map create mode 100644 core/static/css/bootstrap-reboot.css create mode 100644 core/static/css/bootstrap-reboot.css.map create mode 100644 core/static/css/bootstrap-utilities.css create mode 100644 core/static/css/bootstrap-utilities.css.map create mode 100644 core/static/css/bootstrap.css create mode 100644 core/static/css/bootstrap.css.map create mode 100644 core/static/css/custom.css create mode 100644 core/static/css/font-icons.css create mode 100644 core/static/css/fonts/Simple-Line-Icons.dev.svg create mode 100644 core/static/css/fonts/Simple-Line-Icons.eot create mode 100644 core/static/css/fonts/Simple-Line-Icons.svg create mode 100644 core/static/css/fonts/Simple-Line-Icons.ttf create mode 100644 core/static/css/fonts/Simple-Line-Icons.woff create mode 100644 core/static/css/fonts/font-icons.eot create mode 100644 core/static/css/fonts/font-icons.svg create mode 100644 core/static/css/fonts/font-icons.ttf create mode 100644 core/static/css/fonts/font-icons.woff create mode 100644 core/static/css/fonts/lined-icons.eot create mode 100644 core/static/css/fonts/lined-icons.svg create mode 100644 core/static/css/fonts/lined-icons.ttf create mode 100644 core/static/css/fonts/lined-icons.woff create mode 100644 core/static/css/project.css create mode 100644 core/static/css/style.css create mode 100644 core/static/fonts/.gitkeep create mode 100644 core/static/images/favicons copy/android-chrome-192x192.png create mode 100644 core/static/images/favicons copy/android-chrome-512x512 2.png create mode 100644 core/static/images/favicons copy/android-chrome-512x512.png create mode 100644 core/static/images/favicons copy/apple-touch-icon.png create mode 100644 core/static/images/favicons copy/favicon-16x16.png create mode 100644 core/static/images/favicons copy/favicon-32x32.png create mode 100644 core/static/images/favicons copy/favicon.ico create mode 100644 core/static/images/favicons/android-chrome-192x192.png create mode 100644 core/static/images/favicons/android-chrome-512x512 2.png create mode 100644 core/static/images/favicons/android-chrome-512x512.png create mode 100644 core/static/images/favicons/apple-touch-icon.png create mode 100644 core/static/images/favicons/favicon-16x16.png create mode 100644 core/static/images/favicons/favicon-32x32.png create mode 100644 core/static/images/favicons/favicon.ico create mode 100644 core/static/images/favicons/site.webmanifest create mode 100644 core/static/images/grid copy.png create mode 100644 core/static/images/grid.png create mode 100644 core/static/images/icons copy/avatar.jpg create mode 100644 core/static/images/icons copy/close.png create mode 100644 core/static/images/icons copy/dotted.png create mode 100644 core/static/images/icons copy/features/flag.png create mode 100644 core/static/images/icons copy/features/map.png create mode 100644 core/static/images/icons copy/features/performance.png create mode 100644 core/static/images/icons copy/features/responsive.png create mode 100644 core/static/images/icons copy/features/retina.png create mode 100644 core/static/images/icons copy/features/seo.png create mode 100644 core/static/images/icons copy/features/support.png create mode 100644 core/static/images/icons copy/features/tick.png create mode 100644 core/static/images/icons copy/features/tools.png create mode 100644 core/static/images/icons copy/flags/french.png create mode 100644 core/static/images/icons copy/flags/german.png create mode 100644 core/static/images/icons copy/flags/italian.png create mode 100644 core/static/images/icons copy/iconalt.svg create mode 100644 core/static/images/icons copy/image.png create mode 100644 core/static/images/icons copy/macbook.png create mode 100644 core/static/images/icons copy/map-icon-red.png create mode 100644 core/static/images/icons copy/map-icon.png create mode 100644 core/static/images/icons copy/play.png create mode 100644 core/static/images/icons copy/restaurant/cup-dark.png create mode 100644 core/static/images/icons copy/restaurant/cup.png create mode 100644 core/static/images/icons copy/restaurant/fork-dark.png create mode 100644 core/static/images/icons copy/restaurant/fork.png create mode 100644 core/static/images/icons copy/restaurant/glass-dark.png create mode 100644 core/static/images/icons copy/restaurant/glass.png create mode 100644 core/static/images/icons copy/restaurant/tea-dark.png create mode 100644 core/static/images/icons copy/restaurant/tea.png create mode 100644 core/static/images/icons copy/video-play.png create mode 100644 core/static/images/icons/authorIcon-orcid.png create mode 100644 core/static/images/icons/avatar.jpg create mode 100644 core/static/images/icons/close.png create mode 100644 core/static/images/icons/dotted.png create mode 100644 core/static/images/icons/features/flag.png create mode 100644 core/static/images/icons/features/map.png create mode 100644 core/static/images/icons/features/performance.png create mode 100644 core/static/images/icons/features/responsive.png create mode 100644 core/static/images/icons/features/retina.png create mode 100644 core/static/images/icons/features/seo.png create mode 100644 core/static/images/icons/features/support.png create mode 100644 core/static/images/icons/features/tick.png create mode 100644 core/static/images/icons/features/tools.png create mode 100644 core/static/images/icons/flag.png create mode 100644 core/static/images/icons/flags/french.png create mode 100644 core/static/images/icons/flags/german.png create mode 100644 core/static/images/icons/flags/italian.png create mode 100644 core/static/images/icons/grid.png create mode 100644 core/static/images/icons/iconalt.svg create mode 100644 core/static/images/icons/image.png create mode 100644 core/static/images/icons/logos/logo_negative.png create mode 100644 core/static/images/icons/logos/logo_negative100x100.png create mode 100644 core/static/images/icons/macbook.png create mode 100644 core/static/images/icons/map-icon-red.png create mode 100644 core/static/images/icons/map-icon.png create mode 100644 core/static/images/icons/map.png create mode 100644 core/static/images/icons/parallax/1.jpg create mode 100644 core/static/images/icons/parallax/2.jpg create mode 100644 core/static/images/icons/parallax/3.jpg create mode 100644 core/static/images/icons/parallax/7.jpg create mode 100644 core/static/images/icons/parallax/8.jpg create mode 100644 core/static/images/icons/parallax/9.jpg create mode 100644 core/static/images/icons/parallax/bgpattern.png create mode 100644 core/static/images/icons/parallax/blur1.jpg create mode 100644 core/static/images/icons/parallax/blur2.jpg create mode 100644 core/static/images/icons/parallax/calendar.jpg create mode 100644 core/static/images/icons/parallax/home/1.jpg create mode 100644 core/static/images/icons/parallax/home/10.jpg create mode 100644 core/static/images/icons/parallax/home/11.jpg create mode 100644 core/static/images/icons/parallax/home/2.jpg create mode 100644 core/static/images/icons/parallax/home/4.jpg create mode 100644 core/static/images/icons/parallax/home/5.jpg create mode 100644 core/static/images/icons/parallax/home/6.jpg create mode 100644 core/static/images/icons/parallax/home/7.jpg create mode 100644 core/static/images/icons/parallax/home/9.jpg create mode 100644 core/static/images/icons/parallax/parallax-bg.jpg create mode 100644 core/static/images/icons/pattern.png create mode 100644 core/static/images/icons/performance.png create mode 100644 core/static/images/icons/play.png create mode 100644 core/static/images/icons/responsive.png create mode 100644 core/static/images/icons/restaurant/cup-dark.png create mode 100644 core/static/images/icons/restaurant/cup.png create mode 100644 core/static/images/icons/restaurant/fork-dark.png create mode 100644 core/static/images/icons/restaurant/fork.png create mode 100644 core/static/images/icons/restaurant/glass-dark.png create mode 100644 core/static/images/icons/restaurant/glass.png create mode 100644 core/static/images/icons/restaurant/tea-dark.png create mode 100644 core/static/images/icons/restaurant/tea.png create mode 100644 core/static/images/icons/retina.png create mode 100644 core/static/images/icons/seo.png create mode 100644 core/static/images/icons/support.png create mode 100644 core/static/images/icons/tick.png create mode 100644 core/static/images/icons/tools.png create mode 100644 core/static/images/icons/video-play.png create mode 100644 core/static/images/logos copy/logo_negative.png create mode 100644 core/static/images/logos copy/logo_negative100x100.png create mode 100644 core/static/images/logos/logo_negative.png create mode 100644 core/static/images/logos/logo_negative100x100.png create mode 100644 core/static/images/logos/logo_scielo_negative.png create mode 100644 core/static/images/logos/logo_scielo_negative100x100.png create mode 100644 core/static/images/parallax/1.jpg create mode 100644 core/static/images/parallax/2.jpg create mode 100644 core/static/images/parallax/3.jpg create mode 100644 core/static/images/parallax/7.jpg create mode 100644 core/static/images/parallax/8.jpg create mode 100644 core/static/images/parallax/9.jpg create mode 100644 core/static/images/parallax/bgpattern.png create mode 100644 core/static/images/parallax/blur1.jpg create mode 100644 core/static/images/parallax/blur2.jpg create mode 100644 core/static/images/parallax/calendar.jpg create mode 100644 core/static/images/parallax/home/1.jpg create mode 100644 core/static/images/parallax/home/10.jpg create mode 100644 core/static/images/parallax/home/11.jpg create mode 100644 core/static/images/parallax/home/2.jpg create mode 100644 core/static/images/parallax/home/4.jpg create mode 100644 core/static/images/parallax/home/5.jpg create mode 100644 core/static/images/parallax/home/6.jpg create mode 100644 core/static/images/parallax/home/7.jpg create mode 100644 core/static/images/parallax/home/9.jpg create mode 100644 core/static/images/parallax/parallax-bg.jpg create mode 100644 core/static/images/pattern copy.png create mode 100644 core/static/images/pattern.png create mode 100644 core/static/img/logo-footer-bireme.svg create mode 100644 core/static/img/logo-footer-bvs.svg create mode 100644 core/static/img/logo-footer-capes.svg create mode 100644 core/static/img/logo-footer-cnpq.svg create mode 100644 core/static/img/logo-footer-fap.svg create mode 100644 core/static/img/logo-footer-fapesp.svg create mode 100644 core/static/img/logo-open-access.svg create mode 100644 core/static/img/logo-scielo-no-label-negative.svg create mode 100644 core/static/img/logo-scielo-no-label.svg create mode 100644 core/static/journal_about/css/admin/notification/toastr/toastr-rtl.css create mode 100644 core/static/journal_about/css/admin/notification/toastr/toastr.css.map create mode 100644 core/static/journal_about/css/admin/notification/toastr/toastr.min.css create mode 100644 core/static/journal_about/css/article.css create mode 100644 core/static/journal_about/css/bootstrap.css create mode 100644 core/static/journal_about/css/bootstrap.css.map create mode 100644 core/static/journal_about/css/jquery.typeahead.css create mode 100644 core/static/journal_about/css/rq_dashboard.css create mode 100644 core/static/journal_about/css/scielo-article-standalone.css create mode 100644 core/static/journal_about/css/scielo-article-standalone.css.map create mode 100644 core/static/journal_about/css/scielo-article.css create mode 100644 core/static/journal_about/css/scielo-article.css.map create mode 100644 core/static/journal_about/css/scielo-bundle-print-min.css create mode 100644 core/static/journal_about/css/scielo-bundle-print.css create mode 100644 core/static/journal_about/css/scielo-bundle-print.css.map create mode 100644 core/static/journal_about/css/scielo-bundle.css create mode 100644 core/static/journal_about/css/scielo-bundle.css.map create mode 100644 core/static/journal_about/css/style.css create mode 100644 core/static/journal_about/fonts-new/glyphicons-halflings-regular.eot create mode 100644 core/static/journal_about/fonts-new/glyphicons-halflings-regular.svg create mode 100644 core/static/journal_about/fonts-new/glyphicons-halflings-regular.ttf create mode 100644 core/static/journal_about/fonts-new/glyphicons-halflings-regular.woff create mode 100644 core/static/journal_about/fonts-new/scielo-glyphs.json create mode 100644 core/static/journal_about/fonts-new/scielo-glyphs.svg create mode 100644 core/static/journal_about/fonts-new/scielo-glyphs.ttf create mode 100644 core/static/journal_about/fonts-new/scielo-glyphs.woff create mode 100644 core/static/journal_about/fonts/glyphicons-halflings-regular.eot create mode 100644 core/static/journal_about/fonts/glyphicons-halflings-regular.svg create mode 100644 core/static/journal_about/fonts/glyphicons-halflings-regular.ttf create mode 100644 core/static/journal_about/fonts/glyphicons-halflings-regular.woff create mode 100644 core/static/journal_about/images/BIREME.png create mode 100644 core/static/journal_about/images/BVS.png create mode 100644 core/static/journal_about/images/CAPES.png create mode 100644 core/static/journal_about/images/CNPq.png create mode 100644 core/static/journal_about/images/FAP-UNIFESP.png create mode 100644 core/static/journal_about/images/FAPESP.png create mode 100644 core/static/journal_about/images/abcd_glogo.gif create mode 100644 core/static/journal_about/images/articleContent-arrow.png create mode 100644 core/static/journal_about/images/authorIcon-lattes-matteWhite.png create mode 100644 core/static/journal_about/images/authorIcon-lattes.png create mode 100644 core/static/journal_about/images/authorIcon-orcid.png create mode 100644 core/static/journal_about/images/authorIcon-researcherid.png create mode 100644 core/static/journal_about/images/authorIcon-scopus.png create mode 100644 core/static/journal_about/images/button.error.feedback.jpg create mode 100644 core/static/journal_about/images/button.glyphs.png create mode 100644 core/static/journal_about/images/dashline.png create mode 100644 core/static/journal_about/images/dashline.v.png create mode 100644 core/static/journal_about/images/dropdown-arrow.png create mode 100644 core/static/journal_about/images/fallback_image.png create mode 100644 core/static/journal_about/images/favicon.ico create mode 100644 core/static/journal_about/images/fig-thumb.png create mode 100644 core/static/journal_about/images/flags.png create mode 100644 core/static/journal_about/images/full_text_scielo_img.gif create mode 100644 core/static/journal_about/images/img-post-blog-scielo-exemplo.jpg create mode 100644 core/static/journal_about/images/input.glyphs.png create mode 100644 core/static/journal_about/images/list.loading.gif create mode 100644 core/static/journal_about/images/logo-dimensionsbadge-min.jpg create mode 100644 core/static/journal_about/images/logo-footer-bireme.svg create mode 100644 core/static/journal_about/images/logo-footer-bvs.svg create mode 100644 core/static/journal_about/images/logo-footer-capes.svg create mode 100644 core/static/journal_about/images/logo-footer-cnpq.svg create mode 100644 core/static/journal_about/images/logo-footer-fap.svg create mode 100644 core/static/journal_about/images/logo-footer-fapesp.svg create mode 100644 core/static/journal_about/images/logo-open-access.svg create mode 100644 core/static/journal_about/images/logo-plumx-min.jpg create mode 100644 core/static/journal_about/images/logo-scielo-min.jpg create mode 100644 core/static/journal_about/images/logo-scielo-no-label-negative.svg create mode 100644 core/static/journal_about/images/logo-scielo-no-label.svg create mode 100644 core/static/journal_about/images/logo-scielo-signature.png create mode 100644 core/static/journal_about/images/logo-scielo-svg.svg create mode 100644 core/static/journal_about/images/logo-scielo.svg create mode 100644 core/static/journal_about/images/menu.glyphs.png create mode 100644 core/static/journal_about/images/mid.glyphs.png create mode 100644 core/static/journal_about/images/oa_logo_32.png create mode 100644 core/static/journal_about/images/placeholder.jpg create mode 100644 core/static/journal_about/images/readcube.png create mode 100644 core/static/journal_about/images/scimago.svg create mode 100644 core/static/journal_about/images/searchForm.selectBox.png create mode 100644 core/static/journal_about/images/table-thumb.png create mode 100644 core/static/journal_about/img/abcd_globo.gif create mode 100644 core/static/journal_about/img/abcd_glogo.gif create mode 100644 core/static/journal_about/img/articleContent-arrow.png create mode 100644 core/static/journal_about/img/authorIcon-lattes-matteWhite.png create mode 100644 core/static/journal_about/img/authorIcon-lattes.png create mode 100644 core/static/journal_about/img/authorIcon-orcid.png create mode 100644 core/static/journal_about/img/authorIcon-researcherid.png create mode 100644 core/static/journal_about/img/authorIcon-scopus.png create mode 100644 core/static/journal_about/img/button.error.feedback.jpg create mode 100644 core/static/journal_about/img/button.glyphs.png create mode 100644 core/static/journal_about/img/dashline.png create mode 100644 core/static/journal_about/img/dashline.v.png create mode 100644 core/static/journal_about/img/dropdown-arrow.png create mode 100644 core/static/journal_about/img/fallback_image.png create mode 100644 core/static/journal_about/img/favicon.ico create mode 100644 core/static/journal_about/img/fig-thumb.png create mode 100644 core/static/journal_about/img/flags.png create mode 100644 core/static/journal_about/img/full_text_scielo_img.gif create mode 100644 core/static/journal_about/img/img-post-blog-scielo-exemplo.jpg create mode 100644 core/static/journal_about/img/input.glyphs.png create mode 100644 core/static/journal_about/img/list.loading.gif create mode 100644 core/static/journal_about/img/logo-dimensionsbadge-min.jpg create mode 100644 core/static/journal_about/img/logo-footer-bireme.svg create mode 100644 core/static/journal_about/img/logo-footer-bvs.svg create mode 100644 core/static/journal_about/img/logo-footer-capes.svg create mode 100644 core/static/journal_about/img/logo-footer-cnpq.svg create mode 100644 core/static/journal_about/img/logo-footer-fap.svg create mode 100644 core/static/journal_about/img/logo-footer-fapesp.svg create mode 100644 core/static/journal_about/img/logo-open-access.svg create mode 100644 core/static/journal_about/img/logo-orcid.svg create mode 100644 core/static/journal_about/img/logo-plumx-min.jpg create mode 100644 core/static/journal_about/img/logo-scielo-min.jpg create mode 100644 core/static/journal_about/img/logo-scielo-no-label-negative.svg create mode 100644 core/static/journal_about/img/logo-scielo-no-label.svg create mode 100644 core/static/journal_about/img/logo-scielo-signature.png create mode 100644 core/static/journal_about/img/logo-scielo-svg.svg create mode 100644 core/static/journal_about/img/logo-scielo.svg create mode 100644 core/static/journal_about/img/menu.glyphs.png create mode 100644 core/static/journal_about/img/mid.glyphs.png create mode 100644 core/static/journal_about/img/oa_logo_32.png create mode 100644 core/static/journal_about/img/placeholder.jpg create mode 100644 core/static/journal_about/img/readcube.png create mode 100644 core/static/journal_about/img/scimago.svg create mode 100644 core/static/journal_about/img/searchForm.selectBox.png create mode 100644 core/static/journal_about/img/table-thumb.png create mode 100644 core/static/journal_about/js/ZeroClipboard.swf create mode 100644 core/static/journal_about/js/admin/common.js create mode 100644 core/static/journal_about/js/api.js create mode 100644 core/static/journal_about/js/bootstrap.bundle.js create mode 100644 core/static/journal_about/js/bootstrap.bundle.min.js create mode 100644 core/static/journal_about/js/ckeditor/CHANGES.md create mode 100644 core/static/journal_about/js/ckeditor/LICENSE.md create mode 100644 core/static/journal_about/js/ckeditor/README.md create mode 100644 core/static/journal_about/js/ckeditor/adapters/jquery.js create mode 100644 core/static/journal_about/js/ckeditor/build-config.js create mode 100644 core/static/journal_about/js/ckeditor/ckeditor.js create mode 100644 core/static/journal_about/js/ckeditor/config.js create mode 100644 core/static/journal_about/js/ckeditor/contents.css create mode 100644 core/static/journal_about/js/ckeditor/lang/af.js create mode 100644 core/static/journal_about/js/ckeditor/lang/ar.js create mode 100644 core/static/journal_about/js/ckeditor/lang/az.js create mode 100644 core/static/journal_about/js/ckeditor/lang/bg.js create mode 100644 core/static/journal_about/js/ckeditor/lang/bn.js create mode 100644 core/static/journal_about/js/ckeditor/lang/bs.js create mode 100644 core/static/journal_about/js/ckeditor/lang/ca.js create mode 100644 core/static/journal_about/js/ckeditor/lang/cs.js create mode 100644 core/static/journal_about/js/ckeditor/lang/cy.js create mode 100644 core/static/journal_about/js/ckeditor/lang/da.js create mode 100644 core/static/journal_about/js/ckeditor/lang/de-ch.js create mode 100644 core/static/journal_about/js/ckeditor/lang/de.js create mode 100644 core/static/journal_about/js/ckeditor/lang/el.js create mode 100644 core/static/journal_about/js/ckeditor/lang/en-au.js create mode 100644 core/static/journal_about/js/ckeditor/lang/en-ca.js create mode 100644 core/static/journal_about/js/ckeditor/lang/en-gb.js create mode 100644 core/static/journal_about/js/ckeditor/lang/en.js create mode 100644 core/static/journal_about/js/ckeditor/lang/eo.js create mode 100644 core/static/journal_about/js/ckeditor/lang/es-mx.js create mode 100644 core/static/journal_about/js/ckeditor/lang/es.js create mode 100644 core/static/journal_about/js/ckeditor/lang/et.js create mode 100644 core/static/journal_about/js/ckeditor/lang/eu.js create mode 100644 core/static/journal_about/js/ckeditor/lang/fa.js create mode 100644 core/static/journal_about/js/ckeditor/lang/fi.js create mode 100644 core/static/journal_about/js/ckeditor/lang/fo.js create mode 100644 core/static/journal_about/js/ckeditor/lang/fr-ca.js create mode 100644 core/static/journal_about/js/ckeditor/lang/fr.js create mode 100644 core/static/journal_about/js/ckeditor/lang/gl.js create mode 100644 core/static/journal_about/js/ckeditor/lang/gu.js create mode 100644 core/static/journal_about/js/ckeditor/lang/he.js create mode 100644 core/static/journal_about/js/ckeditor/lang/hi.js create mode 100644 core/static/journal_about/js/ckeditor/lang/hr.js create mode 100644 core/static/journal_about/js/ckeditor/lang/hu.js create mode 100644 core/static/journal_about/js/ckeditor/lang/id.js create mode 100644 core/static/journal_about/js/ckeditor/lang/is.js create mode 100644 core/static/journal_about/js/ckeditor/lang/it.js create mode 100644 core/static/journal_about/js/ckeditor/lang/ja.js create mode 100644 core/static/journal_about/js/ckeditor/lang/ka.js create mode 100644 core/static/journal_about/js/ckeditor/lang/km.js create mode 100644 core/static/journal_about/js/ckeditor/lang/ko.js create mode 100644 core/static/journal_about/js/ckeditor/lang/ku.js create mode 100644 core/static/journal_about/js/ckeditor/lang/lt.js create mode 100644 core/static/journal_about/js/ckeditor/lang/lv.js create mode 100644 core/static/journal_about/js/ckeditor/lang/mk.js create mode 100644 core/static/journal_about/js/ckeditor/lang/mn.js create mode 100644 core/static/journal_about/js/ckeditor/lang/ms.js create mode 100644 core/static/journal_about/js/ckeditor/lang/nb.js create mode 100644 core/static/journal_about/js/ckeditor/lang/nl.js create mode 100644 core/static/journal_about/js/ckeditor/lang/no.js create mode 100644 core/static/journal_about/js/ckeditor/lang/oc.js create mode 100644 core/static/journal_about/js/ckeditor/lang/pl.js create mode 100644 core/static/journal_about/js/ckeditor/lang/pt-br.js create mode 100644 core/static/journal_about/js/ckeditor/lang/pt.js create mode 100644 core/static/journal_about/js/ckeditor/lang/ro.js create mode 100644 core/static/journal_about/js/ckeditor/lang/ru.js create mode 100644 core/static/journal_about/js/ckeditor/lang/si.js create mode 100644 core/static/journal_about/js/ckeditor/lang/sk.js create mode 100644 core/static/journal_about/js/ckeditor/lang/sl.js create mode 100644 core/static/journal_about/js/ckeditor/lang/sq.js create mode 100644 core/static/journal_about/js/ckeditor/lang/sr-latn.js create mode 100644 core/static/journal_about/js/ckeditor/lang/sr.js create mode 100644 core/static/journal_about/js/ckeditor/lang/sv.js create mode 100644 core/static/journal_about/js/ckeditor/lang/th.js create mode 100644 core/static/journal_about/js/ckeditor/lang/tr.js create mode 100644 core/static/journal_about/js/ckeditor/lang/tt.js create mode 100644 core/static/journal_about/js/ckeditor/lang/ug.js create mode 100644 core/static/journal_about/js/ckeditor/lang/uk.js create mode 100644 core/static/journal_about/js/ckeditor/lang/vi.js create mode 100644 core/static/journal_about/js/ckeditor/lang/zh-cn.js create mode 100644 core/static/journal_about/js/ckeditor/lang/zh.js create mode 100644 core/static/journal_about/js/ckeditor/plugins/a11yhelp/dialogs/a11yhelp.js create mode 100644 core/static/journal_about/js/ckeditor/plugins/a11yhelp/dialogs/lang/_translationstatus.txt create mode 100644 core/static/journal_about/js/ckeditor/plugins/a11yhelp/dialogs/lang/af.js create mode 100644 core/static/journal_about/js/ckeditor/plugins/a11yhelp/dialogs/lang/ar.js create mode 100644 core/static/journal_about/js/ckeditor/plugins/a11yhelp/dialogs/lang/az.js create mode 100644 core/static/journal_about/js/ckeditor/plugins/a11yhelp/dialogs/lang/bg.js create mode 100644 core/static/journal_about/js/ckeditor/plugins/a11yhelp/dialogs/lang/ca.js create mode 100644 core/static/journal_about/js/ckeditor/plugins/a11yhelp/dialogs/lang/cs.js create mode 100644 core/static/journal_about/js/ckeditor/plugins/a11yhelp/dialogs/lang/cy.js create mode 100644 core/static/journal_about/js/ckeditor/plugins/a11yhelp/dialogs/lang/da.js create mode 100644 core/static/journal_about/js/ckeditor/plugins/a11yhelp/dialogs/lang/de-ch.js create mode 100644 core/static/journal_about/js/ckeditor/plugins/a11yhelp/dialogs/lang/de.js create mode 100644 core/static/journal_about/js/ckeditor/plugins/a11yhelp/dialogs/lang/el.js create mode 100644 core/static/journal_about/js/ckeditor/plugins/a11yhelp/dialogs/lang/en-au.js create mode 100644 core/static/journal_about/js/ckeditor/plugins/a11yhelp/dialogs/lang/en-gb.js create mode 100644 core/static/journal_about/js/ckeditor/plugins/a11yhelp/dialogs/lang/en.js create mode 100644 core/static/journal_about/js/ckeditor/plugins/a11yhelp/dialogs/lang/eo.js create mode 100644 core/static/journal_about/js/ckeditor/plugins/a11yhelp/dialogs/lang/es-mx.js create mode 100644 core/static/journal_about/js/ckeditor/plugins/a11yhelp/dialogs/lang/es.js create mode 100644 core/static/journal_about/js/ckeditor/plugins/a11yhelp/dialogs/lang/et.js create mode 100644 core/static/journal_about/js/ckeditor/plugins/a11yhelp/dialogs/lang/eu.js create mode 100644 core/static/journal_about/js/ckeditor/plugins/a11yhelp/dialogs/lang/fa.js create mode 100644 core/static/journal_about/js/ckeditor/plugins/a11yhelp/dialogs/lang/fi.js create mode 100644 core/static/journal_about/js/ckeditor/plugins/a11yhelp/dialogs/lang/fo.js create mode 100644 core/static/journal_about/js/ckeditor/plugins/a11yhelp/dialogs/lang/fr-ca.js create mode 100644 core/static/journal_about/js/ckeditor/plugins/a11yhelp/dialogs/lang/fr.js create mode 100644 core/static/journal_about/js/ckeditor/plugins/a11yhelp/dialogs/lang/gl.js create mode 100644 core/static/journal_about/js/ckeditor/plugins/a11yhelp/dialogs/lang/gu.js create mode 100644 core/static/journal_about/js/ckeditor/plugins/a11yhelp/dialogs/lang/he.js create mode 100644 core/static/journal_about/js/ckeditor/plugins/a11yhelp/dialogs/lang/hi.js create mode 100644 core/static/journal_about/js/ckeditor/plugins/a11yhelp/dialogs/lang/hr.js create mode 100644 core/static/journal_about/js/ckeditor/plugins/a11yhelp/dialogs/lang/hu.js create mode 100644 core/static/journal_about/js/ckeditor/plugins/a11yhelp/dialogs/lang/id.js create mode 100644 core/static/journal_about/js/ckeditor/plugins/a11yhelp/dialogs/lang/it.js create mode 100644 core/static/journal_about/js/ckeditor/plugins/a11yhelp/dialogs/lang/ja.js create mode 100644 core/static/journal_about/js/ckeditor/plugins/a11yhelp/dialogs/lang/km.js create mode 100644 core/static/journal_about/js/ckeditor/plugins/a11yhelp/dialogs/lang/ko.js create mode 100644 core/static/journal_about/js/ckeditor/plugins/a11yhelp/dialogs/lang/ku.js create mode 100644 core/static/journal_about/js/ckeditor/plugins/a11yhelp/dialogs/lang/lt.js create mode 100644 core/static/journal_about/js/ckeditor/plugins/a11yhelp/dialogs/lang/lv.js create mode 100644 core/static/journal_about/js/ckeditor/plugins/a11yhelp/dialogs/lang/mk.js create mode 100644 core/static/journal_about/js/ckeditor/plugins/a11yhelp/dialogs/lang/mn.js create mode 100644 core/static/journal_about/js/ckeditor/plugins/a11yhelp/dialogs/lang/nb.js create mode 100644 core/static/journal_about/js/ckeditor/plugins/a11yhelp/dialogs/lang/nl.js create mode 100644 core/static/journal_about/js/ckeditor/plugins/a11yhelp/dialogs/lang/no.js create mode 100644 core/static/journal_about/js/ckeditor/plugins/a11yhelp/dialogs/lang/oc.js create mode 100644 core/static/journal_about/js/ckeditor/plugins/a11yhelp/dialogs/lang/pl.js create mode 100644 core/static/journal_about/js/ckeditor/plugins/a11yhelp/dialogs/lang/pt-br.js create mode 100644 core/static/journal_about/js/ckeditor/plugins/a11yhelp/dialogs/lang/pt.js create mode 100644 core/static/journal_about/js/ckeditor/plugins/a11yhelp/dialogs/lang/ro.js create mode 100644 core/static/journal_about/js/ckeditor/plugins/a11yhelp/dialogs/lang/ru.js create mode 100644 core/static/journal_about/js/ckeditor/plugins/a11yhelp/dialogs/lang/si.js create mode 100644 core/static/journal_about/js/ckeditor/plugins/a11yhelp/dialogs/lang/sk.js create mode 100644 core/static/journal_about/js/ckeditor/plugins/a11yhelp/dialogs/lang/sl.js create mode 100644 core/static/journal_about/js/ckeditor/plugins/a11yhelp/dialogs/lang/sq.js create mode 100644 core/static/journal_about/js/ckeditor/plugins/a11yhelp/dialogs/lang/sr-latn.js create mode 100644 core/static/journal_about/js/ckeditor/plugins/a11yhelp/dialogs/lang/sr.js create mode 100644 core/static/journal_about/js/ckeditor/plugins/a11yhelp/dialogs/lang/sv.js create mode 100644 core/static/journal_about/js/ckeditor/plugins/a11yhelp/dialogs/lang/th.js create mode 100644 core/static/journal_about/js/ckeditor/plugins/a11yhelp/dialogs/lang/tr.js create mode 100644 core/static/journal_about/js/ckeditor/plugins/a11yhelp/dialogs/lang/tt.js create mode 100644 core/static/journal_about/js/ckeditor/plugins/a11yhelp/dialogs/lang/ug.js create mode 100644 core/static/journal_about/js/ckeditor/plugins/a11yhelp/dialogs/lang/uk.js create mode 100644 core/static/journal_about/js/ckeditor/plugins/a11yhelp/dialogs/lang/vi.js create mode 100644 core/static/journal_about/js/ckeditor/plugins/a11yhelp/dialogs/lang/zh-cn.js create mode 100644 core/static/journal_about/js/ckeditor/plugins/a11yhelp/dialogs/lang/zh.js create mode 100644 core/static/journal_about/js/ckeditor/plugins/about/dialogs/about.js create mode 100644 core/static/journal_about/js/ckeditor/plugins/about/dialogs/hidpi/logo_ckeditor.png create mode 100644 core/static/journal_about/js/ckeditor/plugins/about/dialogs/logo_ckeditor.png create mode 100644 core/static/journal_about/js/ckeditor/plugins/colordialog/dialogs/colordialog.css create mode 100644 core/static/journal_about/js/ckeditor/plugins/colordialog/dialogs/colordialog.js create mode 100644 core/static/journal_about/js/ckeditor/plugins/copyformatting/cursors/cursor-disabled.svg create mode 100644 core/static/journal_about/js/ckeditor/plugins/copyformatting/cursors/cursor.svg create mode 100644 core/static/journal_about/js/ckeditor/plugins/copyformatting/styles/copyformatting.css create mode 100644 core/static/journal_about/js/ckeditor/plugins/dialog/dialogDefinition.js create mode 100644 core/static/journal_about/js/ckeditor/plugins/div/dialogs/div.js create mode 100644 core/static/journal_about/js/ckeditor/plugins/find/dialogs/find.js create mode 100644 core/static/journal_about/js/ckeditor/plugins/flash/dialogs/flash.js create mode 100644 core/static/journal_about/js/ckeditor/plugins/flash/images/placeholder.png create mode 100644 core/static/journal_about/js/ckeditor/plugins/forms/dialogs/button.js create mode 100644 core/static/journal_about/js/ckeditor/plugins/forms/dialogs/checkbox.js create mode 100644 core/static/journal_about/js/ckeditor/plugins/forms/dialogs/form.js create mode 100644 core/static/journal_about/js/ckeditor/plugins/forms/dialogs/hiddenfield.js create mode 100644 core/static/journal_about/js/ckeditor/plugins/forms/dialogs/radio.js create mode 100644 core/static/journal_about/js/ckeditor/plugins/forms/dialogs/select.js create mode 100644 core/static/journal_about/js/ckeditor/plugins/forms/dialogs/textarea.js create mode 100644 core/static/journal_about/js/ckeditor/plugins/forms/dialogs/textfield.js create mode 100644 core/static/journal_about/js/ckeditor/plugins/forms/images/hiddenfield.gif create mode 100644 core/static/journal_about/js/ckeditor/plugins/icons.png create mode 100644 core/static/journal_about/js/ckeditor/plugins/icons_hidpi.png create mode 100644 core/static/journal_about/js/ckeditor/plugins/iframe/dialogs/iframe.js create mode 100644 core/static/journal_about/js/ckeditor/plugins/iframe/images/placeholder.png create mode 100644 core/static/journal_about/js/ckeditor/plugins/image/dialogs/image.js create mode 100644 core/static/journal_about/js/ckeditor/plugins/image/images/noimage.png create mode 100644 core/static/journal_about/js/ckeditor/plugins/link/dialogs/anchor.js create mode 100644 core/static/journal_about/js/ckeditor/plugins/link/dialogs/link.js create mode 100644 core/static/journal_about/js/ckeditor/plugins/link/images/anchor.png create mode 100644 core/static/journal_about/js/ckeditor/plugins/link/images/hidpi/anchor.png create mode 100644 core/static/journal_about/js/ckeditor/plugins/liststyle/dialogs/liststyle.js create mode 100644 core/static/journal_about/js/ckeditor/plugins/magicline/images/hidpi/icon-rtl.png create mode 100644 core/static/journal_about/js/ckeditor/plugins/magicline/images/hidpi/icon.png create mode 100644 core/static/journal_about/js/ckeditor/plugins/magicline/images/icon-rtl.png create mode 100644 core/static/journal_about/js/ckeditor/plugins/magicline/images/icon.png create mode 100644 core/static/journal_about/js/ckeditor/plugins/pagebreak/images/pagebreak.gif create mode 100644 core/static/journal_about/js/ckeditor/plugins/pastefromword/filter/default.js create mode 100644 core/static/journal_about/js/ckeditor/plugins/preview/preview.html create mode 100644 core/static/journal_about/js/ckeditor/plugins/scayt/CHANGELOG.md create mode 100644 core/static/journal_about/js/ckeditor/plugins/scayt/LICENSE.md create mode 100644 core/static/journal_about/js/ckeditor/plugins/scayt/README.md create mode 100644 core/static/journal_about/js/ckeditor/plugins/scayt/dialogs/dialog.css create mode 100644 core/static/journal_about/js/ckeditor/plugins/scayt/dialogs/options.js create mode 100644 core/static/journal_about/js/ckeditor/plugins/scayt/dialogs/toolbar.css create mode 100644 core/static/journal_about/js/ckeditor/plugins/scayt/skins/moono-lisa/scayt.css create mode 100644 core/static/journal_about/js/ckeditor/plugins/showblocks/images/block_address.png create mode 100644 core/static/journal_about/js/ckeditor/plugins/showblocks/images/block_blockquote.png create mode 100644 core/static/journal_about/js/ckeditor/plugins/showblocks/images/block_div.png create mode 100644 core/static/journal_about/js/ckeditor/plugins/showblocks/images/block_h1.png create mode 100644 core/static/journal_about/js/ckeditor/plugins/showblocks/images/block_h2.png create mode 100644 core/static/journal_about/js/ckeditor/plugins/showblocks/images/block_h3.png create mode 100644 core/static/journal_about/js/ckeditor/plugins/showblocks/images/block_h4.png create mode 100644 core/static/journal_about/js/ckeditor/plugins/showblocks/images/block_h5.png create mode 100644 core/static/journal_about/js/ckeditor/plugins/showblocks/images/block_h6.png create mode 100644 core/static/journal_about/js/ckeditor/plugins/showblocks/images/block_p.png create mode 100644 core/static/journal_about/js/ckeditor/plugins/showblocks/images/block_pre.png create mode 100644 core/static/journal_about/js/ckeditor/plugins/smiley/dialogs/smiley.js create mode 100644 core/static/journal_about/js/ckeditor/plugins/smiley/images/angel_smile.gif create mode 100644 core/static/journal_about/js/ckeditor/plugins/smiley/images/angel_smile.png create mode 100644 core/static/journal_about/js/ckeditor/plugins/smiley/images/angry_smile.gif create mode 100644 core/static/journal_about/js/ckeditor/plugins/smiley/images/angry_smile.png create mode 100644 core/static/journal_about/js/ckeditor/plugins/smiley/images/broken_heart.gif create mode 100644 core/static/journal_about/js/ckeditor/plugins/smiley/images/broken_heart.png create mode 100644 core/static/journal_about/js/ckeditor/plugins/smiley/images/confused_smile.gif create mode 100644 core/static/journal_about/js/ckeditor/plugins/smiley/images/confused_smile.png create mode 100644 core/static/journal_about/js/ckeditor/plugins/smiley/images/cry_smile.gif create mode 100644 core/static/journal_about/js/ckeditor/plugins/smiley/images/cry_smile.png create mode 100644 core/static/journal_about/js/ckeditor/plugins/smiley/images/devil_smile.gif create mode 100644 core/static/journal_about/js/ckeditor/plugins/smiley/images/devil_smile.png create mode 100644 core/static/journal_about/js/ckeditor/plugins/smiley/images/embaressed_smile.gif create mode 100644 core/static/journal_about/js/ckeditor/plugins/smiley/images/embarrassed_smile.gif create mode 100644 core/static/journal_about/js/ckeditor/plugins/smiley/images/embarrassed_smile.png create mode 100644 core/static/journal_about/js/ckeditor/plugins/smiley/images/envelope.gif create mode 100644 core/static/journal_about/js/ckeditor/plugins/smiley/images/envelope.png create mode 100644 core/static/journal_about/js/ckeditor/plugins/smiley/images/heart.gif create mode 100644 core/static/journal_about/js/ckeditor/plugins/smiley/images/heart.png create mode 100644 core/static/journal_about/js/ckeditor/plugins/smiley/images/kiss.gif create mode 100644 core/static/journal_about/js/ckeditor/plugins/smiley/images/kiss.png create mode 100644 core/static/journal_about/js/ckeditor/plugins/smiley/images/lightbulb.gif create mode 100644 core/static/journal_about/js/ckeditor/plugins/smiley/images/lightbulb.png create mode 100644 core/static/journal_about/js/ckeditor/plugins/smiley/images/omg_smile.gif create mode 100644 core/static/journal_about/js/ckeditor/plugins/smiley/images/omg_smile.png create mode 100644 core/static/journal_about/js/ckeditor/plugins/smiley/images/regular_smile.gif create mode 100644 core/static/journal_about/js/ckeditor/plugins/smiley/images/regular_smile.png create mode 100644 core/static/journal_about/js/ckeditor/plugins/smiley/images/sad_smile.gif create mode 100644 core/static/journal_about/js/ckeditor/plugins/smiley/images/sad_smile.png create mode 100644 core/static/journal_about/js/ckeditor/plugins/smiley/images/shades_smile.gif create mode 100644 core/static/journal_about/js/ckeditor/plugins/smiley/images/shades_smile.png create mode 100644 core/static/journal_about/js/ckeditor/plugins/smiley/images/teeth_smile.gif create mode 100644 core/static/journal_about/js/ckeditor/plugins/smiley/images/teeth_smile.png create mode 100644 core/static/journal_about/js/ckeditor/plugins/smiley/images/thumbs_down.gif create mode 100644 core/static/journal_about/js/ckeditor/plugins/smiley/images/thumbs_down.png create mode 100644 core/static/journal_about/js/ckeditor/plugins/smiley/images/thumbs_up.gif create mode 100644 core/static/journal_about/js/ckeditor/plugins/smiley/images/thumbs_up.png create mode 100644 core/static/journal_about/js/ckeditor/plugins/smiley/images/tongue_smile.gif create mode 100644 core/static/journal_about/js/ckeditor/plugins/smiley/images/tongue_smile.png create mode 100644 core/static/journal_about/js/ckeditor/plugins/smiley/images/tounge_smile.gif create mode 100644 core/static/journal_about/js/ckeditor/plugins/smiley/images/whatchutalkingabout_smile.gif create mode 100644 core/static/journal_about/js/ckeditor/plugins/smiley/images/whatchutalkingabout_smile.png create mode 100644 core/static/journal_about/js/ckeditor/plugins/smiley/images/wink_smile.gif create mode 100644 core/static/journal_about/js/ckeditor/plugins/smiley/images/wink_smile.png create mode 100644 core/static/journal_about/js/ckeditor/plugins/specialchar/dialogs/lang/_translationstatus.txt create mode 100644 core/static/journal_about/js/ckeditor/plugins/specialchar/dialogs/lang/af.js create mode 100644 core/static/journal_about/js/ckeditor/plugins/specialchar/dialogs/lang/ar.js create mode 100644 core/static/journal_about/js/ckeditor/plugins/specialchar/dialogs/lang/az.js create mode 100644 core/static/journal_about/js/ckeditor/plugins/specialchar/dialogs/lang/bg.js create mode 100644 core/static/journal_about/js/ckeditor/plugins/specialchar/dialogs/lang/ca.js create mode 100644 core/static/journal_about/js/ckeditor/plugins/specialchar/dialogs/lang/cs.js create mode 100644 core/static/journal_about/js/ckeditor/plugins/specialchar/dialogs/lang/cy.js create mode 100644 core/static/journal_about/js/ckeditor/plugins/specialchar/dialogs/lang/da.js create mode 100644 core/static/journal_about/js/ckeditor/plugins/specialchar/dialogs/lang/de-ch.js create mode 100644 core/static/journal_about/js/ckeditor/plugins/specialchar/dialogs/lang/de.js create mode 100644 core/static/journal_about/js/ckeditor/plugins/specialchar/dialogs/lang/el.js create mode 100644 core/static/journal_about/js/ckeditor/plugins/specialchar/dialogs/lang/en-au.js create mode 100644 core/static/journal_about/js/ckeditor/plugins/specialchar/dialogs/lang/en-ca.js create mode 100644 core/static/journal_about/js/ckeditor/plugins/specialchar/dialogs/lang/en-gb.js create mode 100644 core/static/journal_about/js/ckeditor/plugins/specialchar/dialogs/lang/en.js create mode 100644 core/static/journal_about/js/ckeditor/plugins/specialchar/dialogs/lang/eo.js create mode 100644 core/static/journal_about/js/ckeditor/plugins/specialchar/dialogs/lang/es-mx.js create mode 100644 core/static/journal_about/js/ckeditor/plugins/specialchar/dialogs/lang/es.js create mode 100644 core/static/journal_about/js/ckeditor/plugins/specialchar/dialogs/lang/et.js create mode 100644 core/static/journal_about/js/ckeditor/plugins/specialchar/dialogs/lang/eu.js create mode 100644 core/static/journal_about/js/ckeditor/plugins/specialchar/dialogs/lang/fa.js create mode 100644 core/static/journal_about/js/ckeditor/plugins/specialchar/dialogs/lang/fi.js create mode 100644 core/static/journal_about/js/ckeditor/plugins/specialchar/dialogs/lang/fr-ca.js create mode 100644 core/static/journal_about/js/ckeditor/plugins/specialchar/dialogs/lang/fr.js create mode 100644 core/static/journal_about/js/ckeditor/plugins/specialchar/dialogs/lang/gl.js create mode 100644 core/static/journal_about/js/ckeditor/plugins/specialchar/dialogs/lang/he.js create mode 100644 core/static/journal_about/js/ckeditor/plugins/specialchar/dialogs/lang/hr.js create mode 100644 core/static/journal_about/js/ckeditor/plugins/specialchar/dialogs/lang/hu.js create mode 100644 core/static/journal_about/js/ckeditor/plugins/specialchar/dialogs/lang/id.js create mode 100644 core/static/journal_about/js/ckeditor/plugins/specialchar/dialogs/lang/it.js create mode 100644 core/static/journal_about/js/ckeditor/plugins/specialchar/dialogs/lang/ja.js create mode 100644 core/static/journal_about/js/ckeditor/plugins/specialchar/dialogs/lang/km.js create mode 100644 core/static/journal_about/js/ckeditor/plugins/specialchar/dialogs/lang/ko.js create mode 100644 core/static/journal_about/js/ckeditor/plugins/specialchar/dialogs/lang/ku.js create mode 100644 core/static/journal_about/js/ckeditor/plugins/specialchar/dialogs/lang/lt.js create mode 100644 core/static/journal_about/js/ckeditor/plugins/specialchar/dialogs/lang/lv.js create mode 100644 core/static/journal_about/js/ckeditor/plugins/specialchar/dialogs/lang/nb.js create mode 100644 core/static/journal_about/js/ckeditor/plugins/specialchar/dialogs/lang/nl.js create mode 100644 core/static/journal_about/js/ckeditor/plugins/specialchar/dialogs/lang/no.js create mode 100644 core/static/journal_about/js/ckeditor/plugins/specialchar/dialogs/lang/oc.js create mode 100644 core/static/journal_about/js/ckeditor/plugins/specialchar/dialogs/lang/pl.js create mode 100644 core/static/journal_about/js/ckeditor/plugins/specialchar/dialogs/lang/pt-br.js create mode 100644 core/static/journal_about/js/ckeditor/plugins/specialchar/dialogs/lang/pt.js create mode 100644 core/static/journal_about/js/ckeditor/plugins/specialchar/dialogs/lang/ro.js create mode 100644 core/static/journal_about/js/ckeditor/plugins/specialchar/dialogs/lang/ru.js create mode 100644 core/static/journal_about/js/ckeditor/plugins/specialchar/dialogs/lang/si.js create mode 100644 core/static/journal_about/js/ckeditor/plugins/specialchar/dialogs/lang/sk.js create mode 100644 core/static/journal_about/js/ckeditor/plugins/specialchar/dialogs/lang/sl.js create mode 100644 core/static/journal_about/js/ckeditor/plugins/specialchar/dialogs/lang/sq.js create mode 100644 core/static/journal_about/js/ckeditor/plugins/specialchar/dialogs/lang/sv.js create mode 100644 core/static/journal_about/js/ckeditor/plugins/specialchar/dialogs/lang/th.js create mode 100644 core/static/journal_about/js/ckeditor/plugins/specialchar/dialogs/lang/tr.js create mode 100644 core/static/journal_about/js/ckeditor/plugins/specialchar/dialogs/lang/tt.js create mode 100644 core/static/journal_about/js/ckeditor/plugins/specialchar/dialogs/lang/ug.js create mode 100644 core/static/journal_about/js/ckeditor/plugins/specialchar/dialogs/lang/uk.js create mode 100644 core/static/journal_about/js/ckeditor/plugins/specialchar/dialogs/lang/vi.js create mode 100644 core/static/journal_about/js/ckeditor/plugins/specialchar/dialogs/lang/zh-cn.js create mode 100644 core/static/journal_about/js/ckeditor/plugins/specialchar/dialogs/lang/zh.js create mode 100644 core/static/journal_about/js/ckeditor/plugins/specialchar/dialogs/specialchar.js create mode 100644 core/static/journal_about/js/ckeditor/plugins/table/dialogs/table.js create mode 100644 core/static/journal_about/js/ckeditor/plugins/tableselection/styles/tableselection.css create mode 100644 core/static/journal_about/js/ckeditor/plugins/tabletools/dialogs/tableCell.js create mode 100644 core/static/journal_about/js/ckeditor/plugins/templates/dialogs/templates.css create mode 100644 core/static/journal_about/js/ckeditor/plugins/templates/dialogs/templates.js create mode 100644 core/static/journal_about/js/ckeditor/plugins/templates/templates/default.js create mode 100644 core/static/journal_about/js/ckeditor/plugins/templates/templates/images/template1.gif create mode 100644 core/static/journal_about/js/ckeditor/plugins/templates/templates/images/template2.gif create mode 100644 core/static/journal_about/js/ckeditor/plugins/templates/templates/images/template3.gif create mode 100644 core/static/journal_about/js/ckeditor/plugins/widget/images/handle.png create mode 100644 core/static/journal_about/js/ckeditor/plugins/wsc/LICENSE.md create mode 100644 core/static/journal_about/js/ckeditor/plugins/wsc/README.md create mode 100644 core/static/journal_about/js/ckeditor/plugins/wsc/dialogs/ciframe.html create mode 100644 core/static/journal_about/js/ckeditor/plugins/wsc/dialogs/tmpFrameset.html create mode 100644 core/static/journal_about/js/ckeditor/plugins/wsc/dialogs/wsc.css create mode 100644 core/static/journal_about/js/ckeditor/plugins/wsc/dialogs/wsc.js create mode 100644 core/static/journal_about/js/ckeditor/plugins/wsc/dialogs/wsc_ie.js create mode 100644 core/static/journal_about/js/ckeditor/plugins/wsc/skins/moono-lisa/wsc.css create mode 100644 core/static/journal_about/js/ckeditor/skins/moono-lisa/dialog.css create mode 100644 core/static/journal_about/js/ckeditor/skins/moono-lisa/dialog_ie.css create mode 100644 core/static/journal_about/js/ckeditor/skins/moono-lisa/dialog_ie8.css create mode 100644 core/static/journal_about/js/ckeditor/skins/moono-lisa/dialog_iequirks.css create mode 100644 core/static/journal_about/js/ckeditor/skins/moono-lisa/editor.css create mode 100644 core/static/journal_about/js/ckeditor/skins/moono-lisa/editor_gecko.css create mode 100644 core/static/journal_about/js/ckeditor/skins/moono-lisa/editor_ie.css create mode 100644 core/static/journal_about/js/ckeditor/skins/moono-lisa/editor_ie8.css create mode 100644 core/static/journal_about/js/ckeditor/skins/moono-lisa/editor_iequirks.css create mode 100644 core/static/journal_about/js/ckeditor/skins/moono-lisa/icons.png create mode 100644 core/static/journal_about/js/ckeditor/skins/moono-lisa/icons_hidpi.png create mode 100644 core/static/journal_about/js/ckeditor/skins/moono-lisa/images/arrow.png create mode 100644 core/static/journal_about/js/ckeditor/skins/moono-lisa/images/close.png create mode 100644 core/static/journal_about/js/ckeditor/skins/moono-lisa/images/hidpi/close.png create mode 100644 core/static/journal_about/js/ckeditor/skins/moono-lisa/images/hidpi/lock-open.png create mode 100644 core/static/journal_about/js/ckeditor/skins/moono-lisa/images/hidpi/lock.png create mode 100644 core/static/journal_about/js/ckeditor/skins/moono-lisa/images/hidpi/refresh.png create mode 100644 core/static/journal_about/js/ckeditor/skins/moono-lisa/images/lock-open.png create mode 100644 core/static/journal_about/js/ckeditor/skins/moono-lisa/images/lock.png create mode 100644 core/static/journal_about/js/ckeditor/skins/moono-lisa/images/refresh.png create mode 100644 core/static/journal_about/js/ckeditor/skins/moono-lisa/images/spinner.gif create mode 100644 core/static/journal_about/js/ckeditor/skins/moono-lisa/readme.md create mode 100644 core/static/journal_about/js/ckeditor/styles.js create mode 100644 core/static/journal_about/js/common.js create mode 100644 core/static/journal_about/js/cookieMsg.js create mode 100644 core/static/journal_about/js/cookiePolicy.min.js create mode 100644 core/static/journal_about/js/copyLink.action.js create mode 100644 core/static/journal_about/js/journal_lists.js create mode 100644 core/static/journal_about/js/jquery.js create mode 100644 core/static/journal_about/js/jquery.min.js create mode 100644 core/static/journal_about/js/jquery.popupwindows.js create mode 100644 core/static/journal_about/js/jquery.tablesorter.js create mode 100644 core/static/journal_about/js/jquery.typeahead.min.js create mode 100644 core/static/journal_about/js/main.js create mode 100644 core/static/journal_about/js/modal_forms.js create mode 100644 core/static/journal_about/js/moment-with-locales.js create mode 100644 core/static/journal_about/js/moment.js create mode 100644 core/static/journal_about/js/moment_locale_es.js create mode 100644 core/static/journal_about/js/moment_locale_pt_br.js create mode 100644 core/static/journal_about/js/plugins.js create mode 100644 core/static/journal_about/js/recaptcha__pt_br.js create mode 100644 core/static/journal_about/js/scielo-article-min.js create mode 100644 core/static/journal_about/js/scielo-article-standalone-min.js create mode 100644 core/static/journal_about/js/scielo-article.js create mode 100644 core/static/journal_about/js/scielo-bundle-min.js create mode 100644 core/static/journal_about/js/scielo-ds-min.js create mode 100644 core/static/journal_about/js/scienceopen.js create mode 100644 core/static/journal_about/js/slick.min.js create mode 100644 core/static/journal_about/js/toolbar.js create mode 100644 core/static/journal_about/js/underscore.js create mode 100644 core/static/journal_about/js/vendor/chart.min.js create mode 100644 core/static/journal_about/js/vendor/excanvas.min.js create mode 100644 core/static/journal_about/js/vendor/html5-3.6-respond-1.1.0.min.js create mode 100644 core/static/journal_about/js/vendor/html5shiv.js create mode 100644 core/static/journal_about/less/article.less create mode 100644 core/static/journal_about/less/bootstrap.less create mode 100644 core/static/journal_about/less/collection.less create mode 100644 core/static/journal_about/less/components.less create mode 100644 core/static/journal_about/less/global.less create mode 100644 core/static/journal_about/less/journal-menu.less create mode 100644 core/static/journal_about/less/journal.less create mode 100644 core/static/journal_about/less/jquery.typeahead.less create mode 100644 core/static/journal_about/less/oldie.less create mode 100644 core/static/journal_about/less/portal.less create mode 100644 core/static/journal_about/less/responsive-tablet.less create mode 100644 core/static/journal_about/less/scielo-article-standalone.less create mode 100644 core/static/journal_about/less/scielo-article.less create mode 100644 core/static/journal_about/less/scielo-bundle-print.less create mode 100644 core/static/journal_about/less/scielo-bundle.less create mode 100644 core/static/journal_about/less/scielo-glyphs.less create mode 100644 core/static/journal_about/less/scielo-portal.less create mode 100644 core/static/journal_about/less/search-styles.less create mode 100644 core/static/journal_about/less/search.less create mode 100644 core/static/journal_about/less/style.less create mode 100644 core/static/journal_about/maps/scielo-article-min.js.map create mode 100644 core/static/journal_about/maps/scielo-article-standalone-min.js.map create mode 100644 core/static/journal_about/maps/scielo-bundle-min.js.map create mode 100644 core/static/journal_about/robots.txt create mode 100644 core/static/journal_about/sass/article.scss create mode 100644 core/static/journal_about/sass/bootstrap.scss create mode 100644 core/static/journal_about/sass/collection.scss create mode 100644 core/static/journal_about/sass/components.scss create mode 100644 core/static/journal_about/sass/global.scss create mode 100644 core/static/journal_about/sass/journal-menu.scss create mode 100644 core/static/journal_about/sass/journal.scss create mode 100644 core/static/journal_about/sass/jquery.typeahead.scss create mode 100644 core/static/journal_about/sass/portal.scss create mode 100644 core/static/journal_about/sass/scielo-article.scss create mode 100644 core/static/journal_about/sass/scielo-bundle.scss create mode 100644 core/static/journal_about/sass/scielo-glyphs.scss create mode 100644 core/static/journal_about/sass/scielo-portal.scss create mode 100644 core/static/journal_about/sass/search.scss create mode 100644 core/static/journal_about/sass/style.scss create mode 100644 core/static/js/JSONStorage.js create mode 100644 core/static/js/bootstrap.bundle.js create mode 100644 core/static/js/bootstrap.bundle.js.map create mode 100644 core/static/js/bootstrap.bundle.min.js create mode 100644 core/static/js/bootstrap.bundle.min.js.map create mode 100644 core/static/js/bootstrap.esm.js create mode 100644 core/static/js/bootstrap.esm.js.map create mode 100644 core/static/js/bootstrap.esm.min.js create mode 100644 core/static/js/bootstrap.esm.min.js.map create mode 100644 core/static/js/bootstrap.js create mode 100644 core/static/js/bootstrap.js.map create mode 100644 core/static/js/bootstrap.min.js create mode 100644 core/static/js/bootstrap.min.js.map create mode 100644 core/static/js/custom.js create mode 100644 core/static/js/functions.js create mode 100644 core/static/js/jquery.js create mode 100644 core/static/js/jquery.marker.js create mode 100644 core/static/js/markerjs.js create mode 100644 core/static/js/plugins.min.js create mode 100644 core/static/js/plugins/Chart.min.js create mode 100644 core/static/js/plugins/jquery.dataTables.min.js create mode 100644 core/static/js/plugins/nouislider.min.js create mode 100644 core/static/js/plugins/picker.date.js create mode 100644 core/static/js/plugins/picker.js create mode 100644 core/static/js/plugins/wNumb.min.js create mode 100644 core/static/js/project.js create mode 100644 core/static/js/stopwords.js create mode 100644 core/static/sass/custom_bootstrap_vars.scss create mode 100644 core/static/sass/project.scss create mode 100644 core/templates/403.html create mode 100644 core/templates/404.html create mode 100644 core/templates/500.html create mode 100644 core/templates/account/account_inactive.html create mode 100644 core/templates/account/base.html create mode 100644 core/templates/account/email.html create mode 100644 core/templates/account/email_confirm.html create mode 100644 core/templates/account/login.html create mode 100644 core/templates/account/logout.html create mode 100644 core/templates/account/password_change.html create mode 100644 core/templates/account/password_reset.html create mode 100644 core/templates/account/password_reset_done.html create mode 100644 core/templates/account/password_reset_from_key.html create mode 100644 core/templates/account/password_reset_from_key_done.html create mode 100644 core/templates/account/password_set.html create mode 100644 core/templates/account/signup.html create mode 100644 core/templates/account/signup_closed.html create mode 100644 core/templates/account/verification_sent.html create mode 100644 core/templates/account/verified_email_required.html create mode 100644 core/templates/base.html create mode 100644 core/templates/home/form.html create mode 100644 core/templates/home/form_page.html create mode 100644 core/templates/home/home_page.html create mode 100644 core/templates/home/scieloorg/base.html create mode 100644 core/templates/home/scieloorg/footer.html create mode 100644 core/templates/home/scieloorg/header.html create mode 100644 core/templates/home/scieloorg/modal.html create mode 100644 core/templates/home/scieloorg/tabs.html create mode 100644 core/templates/home/welcome_page.html create mode 100644 core/templates/search/search.html create mode 100644 core/templates/users/user_detail.html create mode 100644 core/templates/users/user_form.html create mode 100644 core/templates/wagtailadmin/admin_base.html create mode 100644 core/templates/wagtailadmin/base.html create mode 100644 core/templates/wagtailadmin/home.html create mode 100644 core/templates/wagtailadmin/login.html create mode 100644 core/tests_standardizer.py create mode 100644 core/users/__init__.py create mode 100644 core/users/adapters.py create mode 100644 core/users/admin.py create mode 100644 core/users/apps.py create mode 100644 core/users/context_processors.py create mode 100644 core/users/forms.py create mode 100644 core/users/migrations/0001_initial.py create mode 100644 core/users/migrations/__init__.py create mode 100644 core/users/models.py create mode 100644 core/users/tasks.py create mode 100644 core/users/templates/wagtailusers/users/create.html create mode 100644 core/users/templates/wagtailusers/users/edit.html create mode 100644 core/users/tests/__init__.py create mode 100644 core/users/tests/factories.py create mode 100644 core/users/tests/test_admin.py create mode 100644 core/users/tests/test_forms.py create mode 100644 core/users/tests/test_models.py create mode 100644 core/users/tests/test_tasks.py create mode 100644 core/users/tests/test_urls.py create mode 100644 core/users/tests/test_views.py create mode 100644 core/users/urls.py create mode 100644 core/users/views.py create mode 100644 core/utils/__init__.py create mode 100644 core/utils/rename_dictionary_keys.py create mode 100644 core/utils/scheduler.py create mode 100644 core/utils/standardizer.py create mode 100644 core/utils/utils.py create mode 100644 core/wagtail_hooks.py diff --git a/core/__init__.py b/core/__init__.py new file mode 100644 index 0000000..e1d8615 --- /dev/null +++ b/core/__init__.py @@ -0,0 +1,7 @@ +__version__ = "0.1.0" +__version_info__ = tuple( + [ + int(num) if num.isdigit() else num + for num in __version__.replace("-", ".", 1).split(".") + ] +) diff --git a/core/api/__init__.py b/core/api/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/core/api/v1/__init__.py b/core/api/v1/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/core/api/v1/serializers.py b/core/api/v1/serializers.py new file mode 100644 index 0000000..ccb2f26 --- /dev/null +++ b/core/api/v1/serializers.py @@ -0,0 +1,24 @@ +from rest_framework import serializers + +from core.models import Language, License + + +class LanguageSerializer(serializers.ModelSerializer): + class Meta: + model = Language + fields = [ + "code2", + ] + datatables_always_serialize = ("id",) + + +class LicenseSerializer(serializers.ModelSerializer): + language = LanguageSerializer(many=False, read_only=True) + + class Meta: + model = License + fields = [ + "url", + "license_p", + "language", + ] diff --git a/core/api/wagtail/api.py b/core/api/wagtail/api.py new file mode 100644 index 0000000..4e1ecfa --- /dev/null +++ b/core/api/wagtail/api.py @@ -0,0 +1,15 @@ +from wagtail.api.v2.router import WagtailAPIRouter +from wagtail.api.v2.views import PagesAPIViewSet +from wagtail.documents.api.v2.views import DocumentsAPIViewSet +from wagtail.images.api.v2.views import ImagesAPIViewSet + +# Create the router. "wagtailapi" is the URL namespace +api_router = WagtailAPIRouter("wagtailapi") + +# Add the three endpoints using the "register_endpoint" method. +# The first parameter is the name of the endpoint (eg. pages, images). This +# is used in the URL of the endpoint +# The second parameter is the endpoint class that handles the requests +api_router.register_endpoint("pages", PagesAPIViewSet) +api_router.register_endpoint("images", ImagesAPIViewSet) +api_router.register_endpoint("documents", DocumentsAPIViewSet) diff --git a/core/choices.py b/core/choices.py new file mode 100644 index 0000000..d09d4fb --- /dev/null +++ b/core/choices.py @@ -0,0 +1,222 @@ +from django.utils.translation import gettext_lazy as _ + +LANGUAGE = [ + ("aa", "Afar"), + ("af", "Afrikaans"), + ("ak", "Akan"), + ("sq", "Albanian"), + ("am", "Amharic"), + ("ar", "Arabic"), + ("an", "Aragonese"), + ("hy", "Armenian"), + ("as", "Assamese"), + ("av", "Avaric"), + ("ae", "Avestan"), + ("ay", "Aymara"), + ("az", "Azerbaijani"), + ("bm", "Bambara"), + ("ba", "Bashkir"), + ("eu", "Basque"), + ("be", "Belarusian"), + ("bn", "Bengali"), + ("bi", "Bislama"), + ("bs", "Bosnian"), + ("br", "Breton"), + ("bg", "Bulgarian"), + ("my", "Burmese"), + ("ca", "Catalan, Valencian"), + ("ch", "Chamorro"), + ("ce", "Chechen"), + ("ny", "Chichewa, Chewa, Nyanja"), + ("zh", "Chinese"), + ( + "cu", + "Church Slavic, Old Slavonic, Church Slavonic, Old Bulgarian, Old Church Slavonic", + ), + ("cv", "Chuvash"), + ("kw", "Cornish"), + ("co", "Corsican"), + ("cr", "Cree"), + ("hr", "Croatian"), + ("cs", "Czech"), + ("da", "Danish"), + ("dv", "Divehi, Dhivehi, Maldivian"), + ("nl", "Dutch, Flemish"), + ("dz", "Dzongkha"), + ("en", "English"), + ("eo", "Esperanto"), + ("et", "Estonian"), + ("ee", "Ewe"), + ("fo", "Faroese"), + ("fj", "Fijian"), + ("fi", "Finnish"), + ("fr", "French"), + ("fy", "Western Frisian"), + ("ff", "Fulah"), + ("gd", "Gaelic, Scottish Gaelic"), + ("gl", "Galician"), + ("lg", "Ganda"), + ("ka", "Georgian"), + ("de", "German"), + ("el", "Greek, Modern (1453–)"), + ("kl", "Kalaallisut, Greenlandic"), + ("gn", "Guarani"), + ("gu", "Gujarati"), + ("ht", "Haitian, Haitian Creole"), + ("ha", "Hausa"), + ("he", "Hebrew"), + ("hz", "Herero"), + ("hi", "Hindi"), + ("ho", "Hiri Motu"), + ("hu", "Hungarian"), + ("is", "Icelandic"), + ("io", "Ido"), + ("ig", "Igbo"), + ("id", "Indonesian"), + ("ia", "Interlingua (International Auxiliary Language Association)"), + ("ie", "Interlingue, Occidental"), + ("iu", "Inuktitut"), + ("ik", "Inupiaq"), + ("ga", "Irish"), + ("it", "Italian"), + ("ja", "Japanese"), + ("jv", "Javanese"), + ("kn", "Kannada"), + ("kr", "Kanuri"), + ("ks", "Kashmiri"), + ("kk", "Kazakh"), + ("km", "Central Khmer"), + ("ki", "Kikuyu, Gikuyu"), + ("rw", "Kinyarwanda"), + ("ky", "Kirghiz, Kyrgyz"), + ("kv", "Komi"), + ("kg", "Kongo"), + ("ko", "Korean"), + ("kj", "Kuanyama, Kwanyama"), + ("ku", "Kurdish"), + ("lo", "Lao"), + ("la", "Latin"), + ("lv", "Latvian"), + ("li", "Limburgan, Limburger, Limburgish"), + ("ln", "Lingala"), + ("lt", "Lithuanian"), + ("lu", "Luba-Katanga"), + ("lb", "Luxembourgish, Letzeburgesch"), + ("mk", "Macedonian"), + ("mg", "Malagasy"), + ("ms", "Malay"), + ("ml", "Malayalam"), + ("mt", "Maltese"), + ("gv", "Manx"), + ("mi", "Maori"), + ("mr", "Marathi"), + ("mh", "Marshallese"), + ("mn", "Mongolian"), + ("na", "Nauru"), + ("nv", "Navajo, Navaho"), + ("nd", "North Ndebele"), + ("nr", "South Ndebele"), + ("ng", "Ndonga"), + ("ne", "Nepali"), + ("no", "Norwegian"), + ("nb", "Norwegian Bokmål"), + ("nn", "Norwegian Nynorsk"), + ("ii", "Sichuan Yi, Nuosu"), + ("oc", "Occitan"), + ("oj", "Ojibwa"), + ("or", "Oriya"), + ("om", "Oromo"), + ("os", "Ossetian, Ossetic"), + ("pi", "Pali"), + ("ps", "Pashto, Pushto"), + ("fa", "Persian"), + ("pl", "Polish"), + ("pt", "Português"), + ("pa", "Punjabi, Panjabi"), + ("qu", "Quechua"), + ("ro", "Romanian, Moldavian, Moldovan"), + ("rm", "Romansh"), + ("rn", "Rundi"), + ("ru", "Russian"), + ("se", "Northern Sami"), + ("sm", "Samoan"), + ("sg", "Sango"), + ("sa", "Sanskrit"), + ("sc", "Sardinian"), + ("sr", "Serbian"), + ("sn", "Shona"), + ("sd", "Sindhi"), + ("si", "Sinhala, Sinhalese"), + ("sk", "Slovak"), + ("sl", "Slovenian"), + ("so", "Somali"), + ("st", "Southern Sotho"), + ("es", "Español"), + ("su", "Sundanese"), + ("sw", "Swahili"), + ("ss", "Swati"), + ("sv", "Swedish"), + ("tl", "Tagalog"), + ("ty", "Tahitian"), + ("tg", "Tajik"), + ("ta", "Tamil"), + ("tt", "Tatar"), + ("te", "Telugu"), + ("th", "Thai"), + ("bo", "Tibetan"), + ("ti", "Tigrinya"), + ("to", "Tonga (Tonga Islands)"), + ("ts", "Tsonga"), + ("tn", "Tswana"), + ("tr", "Turkish"), + ("tk", "Turkmen"), + ("tw", "Twi"), + ("ug", "Uighur, Uyghur"), + ("uk", "Ukrainian"), + ("ur", "Urdu"), + ("uz", "Uzbek"), + ("ve", "Venda"), + ("vi", "Vietnamese"), + ("vo", "Volapük"), + ("wa", "Walloon"), + ("cy", "Welsh"), + ("wo", "Wolof"), + ("xh", "Xhosa"), + ("yi", "Yiddish"), + ("yo", "Yoruba"), + ("za", "Zhuang, Chuang"), + ("zu", "Zulu"), +] + +ROLE = [ + ("Editor-Chefe", _("Editor-Chefe")), + ("Editor(es) Executivo", _("Editor(es) Executivo")), + ("Editor(es) Associados ou de Seção", _("Editor(es) Associados ou de Seção")), + ("Equipe Técnica", _("Equipe Técnica")), +] + +MONTHS = [ + ("01", _("January")), + ("02", _("February")), + ("03", _("March")), + ("04", _("April")), + ("05", _("May")), + ("06", _("June")), + ("07", _("July")), + ("08", _("August")), + ("09", _("September")), + ("10", _("October")), + ("11", _("November")), + ("12", _("December")), +] + +# https://creativecommons.org/share-your-work/cclicenses/ +# There are six different license types, listed from most to least permissive here: +LICENSE_TYPES = [ + ("by", _("by")), + ("by-sa", _("by-sa")), + ("by-nc", _("by-nc")), + ("by-nc-sa", _("by-nc-sa")), + ("by-nd", _("by-nd")), + ("by-nc-nd", _("by-nc-nd")), +] diff --git a/core/conftest.py b/core/conftest.py new file mode 100644 index 0000000..659762a --- /dev/null +++ b/core/conftest.py @@ -0,0 +1,14 @@ +import pytest + +from core.users.models import User +from core.users.tests.factories import UserFactory + + +@pytest.fixture(autouse=True) +def media_storage(settings, tmpdir): + settings.MEDIA_ROOT = tmpdir.strpath + + +@pytest.fixture +def user() -> User: + return UserFactory() diff --git a/core/contrib/__init__.py b/core/contrib/__init__.py new file mode 100644 index 0000000..1c7ecc8 --- /dev/null +++ b/core/contrib/__init__.py @@ -0,0 +1,5 @@ +""" +To understand why this file is here, please read: + +http://cookiecutter-django.readthedocs.io/en/latest/faq.html#why-is-there-a-django-contrib-sites-directory-in-cookiecutter-django +""" diff --git a/core/contrib/sites/__init__.py b/core/contrib/sites/__init__.py new file mode 100644 index 0000000..1c7ecc8 --- /dev/null +++ b/core/contrib/sites/__init__.py @@ -0,0 +1,5 @@ +""" +To understand why this file is here, please read: + +http://cookiecutter-django.readthedocs.io/en/latest/faq.html#why-is-there-a-django-contrib-sites-directory-in-cookiecutter-django +""" diff --git a/core/contrib/sites/migrations/0001_initial.py b/core/contrib/sites/migrations/0001_initial.py new file mode 100644 index 0000000..59647c8 --- /dev/null +++ b/core/contrib/sites/migrations/0001_initial.py @@ -0,0 +1,41 @@ +import django.contrib.sites.models +from django.contrib.sites.models import _simple_domain_name_validator +from django.db import migrations, models + + +class Migration(migrations.Migration): + dependencies = [] + + operations = [ + migrations.CreateModel( + name="Site", + fields=[ + ( + "id", + models.AutoField( + verbose_name="ID", + serialize=False, + auto_created=True, + primary_key=True, + ), + ), + ( + "domain", + models.CharField( + max_length=100, + verbose_name="domain name", + validators=[_simple_domain_name_validator], + ), + ), + ("name", models.CharField(max_length=50, verbose_name="display name")), + ], + options={ + "ordering": ("domain",), + "db_table": "django_site", + "verbose_name": "site", + "verbose_name_plural": "sites", + }, + bases=(models.Model,), + managers=[("objects", django.contrib.sites.models.SiteManager())], + ) + ] diff --git a/core/contrib/sites/migrations/0002_alter_domain_unique.py b/core/contrib/sites/migrations/0002_alter_domain_unique.py new file mode 100644 index 0000000..4359049 --- /dev/null +++ b/core/contrib/sites/migrations/0002_alter_domain_unique.py @@ -0,0 +1,19 @@ +import django.contrib.sites.models +from django.db import migrations, models + + +class Migration(migrations.Migration): + dependencies = [("sites", "0001_initial")] + + operations = [ + migrations.AlterField( + model_name="site", + name="domain", + field=models.CharField( + max_length=100, + unique=True, + validators=[django.contrib.sites.models._simple_domain_name_validator], + verbose_name="domain name", + ), + ) + ] diff --git a/core/contrib/sites/migrations/0003_set_site_domain_and_name.py b/core/contrib/sites/migrations/0003_set_site_domain_and_name.py new file mode 100644 index 0000000..4e8cf87 --- /dev/null +++ b/core/contrib/sites/migrations/0003_set_site_domain_and_name.py @@ -0,0 +1,62 @@ +""" +To understand why this file is here, please read: + +http://cookiecutter-django.readthedocs.io/en/latest/faq.html#why-is-there-a-django-contrib-sites-directory-in-cookiecutter-django +""" +from django.conf import settings +from django.db import migrations + + +def _update_or_create_site_with_sequence(site_model, connection, domain, name): + """Update or create the site with default ID and keep the DB sequence in sync.""" + site, created = site_model.objects.update_or_create( + id=settings.SITE_ID, + defaults={ + "domain": domain, + "name": name, + }, + ) + if created: + # We provided the ID explicitly when creating the Site entry, therefore the DB + # sequence to auto-generate them wasn't used and is now out of sync. If we + # don't do anything, we'll get a unique constraint violation the next time a + # site is created. + # To avoid this, we need to manually update DB sequence and make sure it's + # greater than the maximum value. + max_id = site_model.objects.order_by("-id").first().id + with connection.cursor() as cursor: + cursor.execute("SELECT last_value from django_site_id_seq") + (current_id,) = cursor.fetchone() + if current_id <= max_id: + cursor.execute( + "alter sequence django_site_id_seq restart with %s", + [max_id + 1], + ) + + +def update_site_forward(apps, schema_editor): + """Set site domain and name.""" + Site = apps.get_model("sites", "Site") + _update_or_create_site_with_sequence( + Site, + schema_editor.connection, + "example.com", + "SciELO Content Manager ", + ) + + +def update_site_backward(apps, schema_editor): + """Revert site domain and name to default.""" + Site = apps.get_model("sites", "Site") + _update_or_create_site_with_sequence( + Site, + schema_editor.connection, + "example.com", + "example.com", + ) + + +class Migration(migrations.Migration): + dependencies = [("sites", "0002_alter_domain_unique")] + + operations = [migrations.RunPython(update_site_forward, update_site_backward)] diff --git a/core/contrib/sites/migrations/0004_alter_options_ordering_domain.py b/core/contrib/sites/migrations/0004_alter_options_ordering_domain.py new file mode 100644 index 0000000..095ca00 --- /dev/null +++ b/core/contrib/sites/migrations/0004_alter_options_ordering_domain.py @@ -0,0 +1,20 @@ +# Generated by Django 3.1.7 on 2021-02-04 14:49 + +from django.db import migrations + + +class Migration(migrations.Migration): + dependencies = [ + ("sites", "0003_set_site_domain_and_name"), + ] + + operations = [ + migrations.AlterModelOptions( + name="site", + options={ + "ordering": ["domain"], + "verbose_name": "site", + "verbose_name_plural": "sites", + }, + ), + ] diff --git a/core/contrib/sites/migrations/__init__.py b/core/contrib/sites/migrations/__init__.py new file mode 100644 index 0000000..1c7ecc8 --- /dev/null +++ b/core/contrib/sites/migrations/__init__.py @@ -0,0 +1,5 @@ +""" +To understand why this file is here, please read: + +http://cookiecutter-django.readthedocs.io/en/latest/faq.html#why-is-there-a-django-contrib-sites-directory-in-cookiecutter-django +""" diff --git a/core/forms.py b/core/forms.py new file mode 100644 index 0000000..6f3cf64 --- /dev/null +++ b/core/forms.py @@ -0,0 +1,15 @@ +from wagtail.admin.forms import WagtailAdminModelForm + + +class CoreAdminModelForm(WagtailAdminModelForm): + def save_all(self, user): + model_with_creator = super().save(commit=False) + + if self.instance.pk is not None: + model_with_creator.updated_by = user + else: + model_with_creator.creator = user + + self.save() + + return model_with_creator diff --git a/core/home/__init__.py b/core/home/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/core/home/migrations/0001_initial.py b/core/home/migrations/0001_initial.py new file mode 100644 index 0000000..bcb5840 --- /dev/null +++ b/core/home/migrations/0001_initial.py @@ -0,0 +1,194 @@ +# Generated by Django 4.2.7 on 2024-04-08 00:21 + +from django.db import migrations, models +import django.db.models.deletion +import modelcluster.fields +import wagtail.contrib.forms.models +import wagtail.fields + + +class Migration(migrations.Migration): + initial = True + + dependencies = [ + ("wagtailcore", "0089_log_entry_data_json_null_to_object"), + ] + + operations = [ + migrations.CreateModel( + name="FormPage", + fields=[ + ( + "page_ptr", + models.OneToOneField( + auto_created=True, + on_delete=django.db.models.deletion.CASCADE, + parent_link=True, + primary_key=True, + serialize=False, + to="wagtailcore.page", + ), + ), + ( + "to_address", + models.CharField( + blank=True, + help_text="Optional - form submissions will be emailed to these addresses. Separate multiple addresses by comma.", + max_length=255, + validators=[wagtail.contrib.forms.models.validate_to_address], + verbose_name="to address", + ), + ), + ( + "from_address", + models.EmailField( + blank=True, max_length=255, verbose_name="from address" + ), + ), + ( + "subject", + models.CharField( + blank=True, max_length=255, verbose_name="subject" + ), + ), + ( + "intro", + wagtail.fields.RichTextField( + blank=True, help_text="Texto de introdução ao formulário." + ), + ), + ( + "thank_you_text", + wagtail.fields.RichTextField( + blank=True, + help_text="Adicione a mensagem que será exibido após o envio do formulário.", + ), + ), + ], + options={ + "verbose_name": "Página com formulário.", + "verbose_name_plural": "Páginas com formulários.", + }, + bases=( + wagtail.contrib.forms.models.FormMixin, + "wagtailcore.page", + models.Model, + ), + ), + migrations.CreateModel( + name="HomePage", + fields=[ + ( + "page_ptr", + models.OneToOneField( + auto_created=True, + on_delete=django.db.models.deletion.CASCADE, + parent_link=True, + primary_key=True, + serialize=False, + to="wagtailcore.page", + ), + ), + ], + options={ + "abstract": False, + }, + bases=("wagtailcore.page",), + ), + migrations.CreateModel( + name="FormField", + fields=[ + ( + "id", + models.BigAutoField( + auto_created=True, + primary_key=True, + serialize=False, + verbose_name="ID", + ), + ), + ( + "sort_order", + models.IntegerField(blank=True, editable=False, null=True), + ), + ( + "clean_name", + models.CharField( + blank=True, + default="", + help_text="Safe name of the form field, the label converted to ascii_snake_case", + max_length=255, + verbose_name="name", + ), + ), + ( + "label", + models.CharField( + help_text="The label of the form field", + max_length=255, + verbose_name="label", + ), + ), + ( + "field_type", + models.CharField( + choices=[ + ("singleline", "Single line text"), + ("multiline", "Multi-line text"), + ("email", "Email"), + ("number", "Number"), + ("url", "URL"), + ("checkbox", "Checkbox"), + ("checkboxes", "Checkboxes"), + ("dropdown", "Drop down"), + ("multiselect", "Multiple select"), + ("radio", "Radio buttons"), + ("date", "Date"), + ("datetime", "Date/time"), + ("hidden", "Hidden field"), + ], + max_length=16, + verbose_name="field type", + ), + ), + ( + "required", + models.BooleanField(default=True, verbose_name="required"), + ), + ( + "choices", + models.TextField( + blank=True, + help_text="Comma or new line separated list of choices. Only applicable in checkboxes, radio and dropdown.", + verbose_name="choices", + ), + ), + ( + "default_value", + models.TextField( + blank=True, + help_text="Default value. Comma or new line separated values supported for checkboxes.", + verbose_name="default value", + ), + ), + ( + "help_text", + models.CharField( + blank=True, max_length=255, verbose_name="help text" + ), + ), + ( + "page", + modelcluster.fields.ParentalKey( + on_delete=django.db.models.deletion.CASCADE, + related_name="form_fields", + to="home.formpage", + ), + ), + ], + options={ + "ordering": ["sort_order"], + "abstract": False, + }, + ), + ] diff --git a/core/home/migrations/__init__.py b/core/home/migrations/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/core/home/models.py b/core/home/models.py new file mode 100644 index 0000000..1734b90 --- /dev/null +++ b/core/home/models.py @@ -0,0 +1,86 @@ +from django.db import models +from django.http import JsonResponse +from django.template.response import TemplateResponse +from modelcluster.fields import ParentalKey +from wagtail.admin.panels import FieldPanel, FieldRowPanel, InlinePanel, MultiFieldPanel +from wagtail.contrib.forms.models import AbstractFormField +from wagtail.contrib.forms.panels import FormSubmissionsPanel +from wagtail.fields import RichTextField +from wagtail.models import Page +from wagtailcaptcha.models import WagtailCaptchaEmailForm + + +class HomePage(Page): + pass + +class FormField(AbstractFormField): + page = ParentalKey("FormPage", on_delete=models.CASCADE, related_name="form_fields") + + +class FormPage(WagtailCaptchaEmailForm): + intro = RichTextField(blank=True, help_text="Texto de introdução ao formulário.") + thank_you_text = RichTextField( + blank=True, + help_text="Adicione a mensagem que será exibido após o envio do formulário.", + ) + + def serve(self, request, *args, **kwargs): + if request.method == "POST": + form = self.get_form( + request.POST, request.FILES, page=self, user=request.user + ) + + if request.is_ajax(): + if form.is_valid(): + self.process_form_submission(form) + return JsonResponse( + { + "alert": "success", + "message": self.thank_you_text + if self.thank_you_text + else "Formulário enviado com sucesso!", + } + ) + else: + return JsonResponse( + { + "alert": "error", + "message": "Erro ao tentar enviar a formulário! Verifique os campos obrigatórios. Errors: %s" + % form.errors, + } + ) + else: + if form.is_valid(): + form_submission = self.process_form_submission(form) + return self.render_landing_page( + request, form_submission, *args, **kwargs + ) + else: + form = self.get_form(page=self, user=request.user) + + context = self.get_context(request) + context["form"] = form + return TemplateResponse(request, self.get_template(request), context) + + class Meta: + verbose_name = "Página com formulário." + verbose_name_plural = "Páginas com formulários." + + content_panels = WagtailCaptchaEmailForm.content_panels + [ + FormSubmissionsPanel(), + FieldPanel("intro", classname="full"), + InlinePanel("form_fields", label="Form fields"), + FieldPanel("thank_you_text", classname="full"), + MultiFieldPanel( + [ + FieldRowPanel( + [ + FieldPanel("from_address", classname="col6"), + FieldPanel("to_address", classname="col6"), + ] + ), + FieldPanel("subject"), + ], + "Email", + ), + ] diff --git a/core/home/static/css/welcome_page.css b/core/home/static/css/welcome_page.css new file mode 100644 index 0000000..fe49aac --- /dev/null +++ b/core/home/static/css/welcome_page.css @@ -0,0 +1,198 @@ +html { + box-sizing: border-box; +} + +*, +*:before, +*:after { + box-sizing: inherit; +} + +body { + max-width: 960px; + min-height: 100vh; + margin: 0 auto; + padding: 0 15px; + color: #231f20; + font-family: 'Helvetica Neue', 'Segoe UI', Arial, sans-serif; + line-height: 1.25; +} + +a { + background-color: transparent; + text-decoration: underline; +} + +h1, +h2, +h3, +h4, +h5, +p, +ul { + padding: 0; + margin: 0; + font-weight: 400; +} + +main { + display: block; /* For IE11 support */ +} + +svg:not(:root) { + overflow: hidden; +} + +.header { + display: flex; + justify-content: space-between; + align-items: center; + padding-top: 20px; + padding-bottom: 10px; + border-bottom: 1px solid #e6e6e6; +} + +.logo { + width: 150px; + margin-right: 20px; +} + +.logo a { + display: block; +} + +.figure-logo { + max-width: 150px; + max-height: 55.1px; +} + +.release-notes { + font-size: 14px; +} + +.main { + padding: 40px 0; + margin: 0 auto; + text-align: center; +} + +.figure-space { + max-width: 265px; +} + +@-webkit-keyframes pos { + 0%, 100% { + -webkit-transform: rotate(-6deg); + transform: rotate(-6deg); + } + 50% { + -webkit-transform: rotate(6deg); + transform: rotate(6deg); + } +} + +@keyframes pos { + 0%, 100% { + -webkit-transform: rotate(-6deg); + transform: rotate(-6deg); + } + 50% { + -webkit-transform: rotate(6deg); + transform: rotate(6deg); + } +} + +.egg { + -webkit-animation: pos 3s ease infinite; + animation: pos 3s ease infinite; + -webkit-transform: translateY(50px); + transform: translateY(50px); + -webkit-transform-origin: 50% 80%; + transform-origin: 50% 80%; +} + +.main-text { + max-width: 400px; + margin: 5px auto; +} + +.main-text h1 { + font-size: 22px; +} + +.main-text p { + margin: 15px auto 0; +} + +.footer { + display: flex; + flex-wrap: wrap; + justify-content: space-between; + border-top: 1px solid #e6e6e6; + padding: 10px; +} + +.option { + display: block; + padding: 10px 10px 10px 34px; + position: relative; + text-decoration: none; +} + +.option svg { + width: 24px; + height: 24px; + fill: gray; + border: 1px solid #d9d9d9; + padding: 5px; + border-radius: 100%; + top: 10px; + left: 0; + position: absolute; +} + +.option h4 { + font-size: 19px; + text-decoration: underline; +} + +.option p { + padding-top: 3px; + color: #231f20; + font-size: 15px; + font-weight: 300; +} + +@media (max-width: 996px) { + body { + max-width: 780px; + } +} + +@media (max-width: 767px) { + .option { + flex: 0 0 50%; + } +} + +@media (max-width: 599px) { + .main { + padding: 20px 0; + } + + .figure-space { + max-width: 200px; + } + + .footer { + display: block; + width: 300px; + margin: 0 auto; + } +} + +@media (max-width: 360px) { + .header-link { + max-width: 100px; + } +} diff --git a/core/libs/chkcsv.py b/core/libs/chkcsv.py new file mode 100644 index 0000000..15b6231 --- /dev/null +++ b/core/libs/chkcsv.py @@ -0,0 +1,749 @@ +#! /usr/bin/python +# chkcsv.py +# +# PURPOSE: +# Check the contents of a CSV file, specifically that columns match a +# specified format. +# +# NOTES: +# 1. Column format specifications are stored in a configuration file +# with an INI-file format, where bracketed sections correspond to +# columns and each section contains key-value pairs of format specifications. +# 2. Recognized column specifications are: +# column_required=1|Yes|True|On|0|No|False|Off +# data_required=1|Yes|True|On|0|No|False|Off +# minlen= +# maxlen= +# type=integer|float|string|date|datetime|bool +# pattern= +# 3. Global options in the format specification file are not yet implemented, +# though a section name for them is reserved. +# +# COPYRIGHT: +# Copyright (c) 2011,2018 R.Dreas Nielsen (RDN) +# +# LICENSE: +# GPL v.3 +# This program is free software: you can redistribute it and/or +# modify it under the terms of the GNU General Public License as published +# by the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. This program is distributed in the +# hope that it will be useful, but WITHOUT ANY WARRANTY; without even +# the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR +# PURPOSE. See the GNU General Public License for more details. The GNU +# General Public License is available at http://www.gnu.org/licenses/. +# +# HISTORY: +# Date Remarks +# ---------- -------------------------------------------------------------- +# 2011-09-25 First version. Version 0.8.0.0. RDN. +# 2018-10-27 Converted to run under both Python 2 and 3. Version 1.0.0. RDN. +# 2019-01-02 Corrected handling of next() for csv library. Version 1.0.1. RDN. +# 2018-01-04 Added check for data rows with more columns than column headers. +# Version 1.1.0. RDN. +# ============================================================================ + +_version = "1.1.0" +_vdate = "2019-01-04" + +import sys +from optparse import OptionParser + +try: + # Py2 + from ConfigParser import SafeConfigParser as ConfigParser +except: + # Py3 + from configparser import ConfigParser + +import codecs +import csv +import datetime +import os.path +import re +import traceback +import types + +FORMATSPECS = """Format specification options: + column_required=1|Yes|True|On|0|No|False|Off + type=integer|float|string|date|datetime|bool + data_required=1|Yes|True|On|0|No|False|Off + minlen= + maxlen= + pattern= +""" + + +class ChkCsvError(Exception): + """Base class for chkcsv errors.""" + + def __init__(self, errmsg, infile=None, line=None, column=None): + self.errmsg = errmsg + self.infile = infile + self.line = line + self.column = column + + +class CsvChecker: + """Create an object to check a specific column of a defined type. + + :param fmt_spec: A ConfigParser object. + :param colname: The name of the data column. + :param column_required_default: A Boolean indicating whether the column is required by default. + :param data_required_default: A Boolean indicating whether data values are required (non-null) by default. + + After initialization, the 'check()' + method will return a boolean indicating whether a data value is acceptable. + """ + + get_fn = { + "column_required": ConfigParser.getboolean, + "data_required": ConfigParser.getboolean, + "type": ConfigParser.get, + "minlen": ConfigParser.getint, + "maxlen": ConfigParser.getint, + "pattern": ConfigParser.get, + } + datetime_fmts = ( + "%x", + "%c", + "%x %X", + "%m/%d/%Y", + "%m/%d/%y", + "%m/%d/%Y %H%M", + "%m/%d/%Y %I:%M %p", + "%m/%d/%y %H%M", + "%m/%d/%y %I:%M %p", + "%Y-%m-%d %H%M", + "%Y-%m-%d %I:%M %p", + "%Y-%m-%d", + "%Y/%m/%d %H%M", + "%Y/%m/%d %I:%M %p", + "%Y/%m/%d %X", + "%Y/%m/%d", + "%b %d, %Y", + "%b %d, %Y %X", + "%b %d, %Y %I:%M %p", + "%b %d %Y", + "%b %d %Y %X", + "%b %d %Y %I:%M %p", + "%d %b, %Y", + "%d %b, %Y %X", + "%d %b, %Y %I:%M %p", + "%d %b %Y", + "%d %b %Y %X", + "%d %b %Y %I:%M %p", + "%b. %d, %Y", + "%b. %d, %Y %X", + "%b. %d, %Y %I:%M %p", + "%b. %d %Y", + "%b. %d %Y %X", + "%b. %d %Y %I:%M %p", + "%d %b., %Y", + "%d %b., %Y %X", + "%d %b., %Y %I:%M %p", + "%d %b. %Y", + "%d %b. %Y %X", + "%d %b. %Y %I:%M %p", + "%Y", + "%b %Y", + "%b, %Y", + "%b. %Y", + "%b., %Y", + "%b-%Y", + "%b.-%Y", + "%B %d, %Y", + "%B %d, %Y %X", + "%B %d, %Y %I:%M %p", + "%B %d %Y", + "%B %d %Y %X", + "%B %d %Y %I:%M %p", + "%d %B, %Y", + "%d %B, %Y %X", + "%d %B, %Y %I:%M %p", + "%d %B %Y", + "%d %B %Y %X", + "%d %B %Y %I:%M %p", + "%B %Y", + "%B, %Y", + "%B-%Y", + ) + date_fmts = ( + "%x", + "%c", + "%x %X", + "%m/%d/%Y", + "%m/%d/%y", + "%Y-%m-%d", + "%Y/%m/%d", + "%b %d, %Y", + "%b %d %Y", + "%d %b, %Y", + "%d %b %Y", + "%b. %d, %Y", + "%b. %d %Y", + "%d %b., %Y", + "%d %b. %Y", + "%Y", + "%b %Y", + "%b, %Y", + "%b. %Y", + "%b., %Y", + "%b-%Y", + "%b.-%Y", + "%B %d, %Y", + "%B %d %Y", + "%d %B, %Y", + "%d %B %Y", + "%B %Y", + "%B, %Y", + "%B-%Y", + ) + + # Basic format checking functions. These return None if the data are acceptable, + # a textual description of the problem otherwise. + def chk_req(self, data): + return "Dado faltando" if len(data) == 0 else None + + def chk_min(self, data): + return ( + None + if (not self.data_required and len(data) == 0) or len(data) >= self.minlen + else "data too short" + ) + + def chk_max(self, data): + return None if len(data) <= self.maxlen else "data too long" + + def chk_pat(self, data): + return None if len(data) == 0 or self.rx.match(data) else "Padrão incompatível" + + def chk_int(self, data): + if len(data) == 0: + return None + try: + x = int(data) + return None + except ValueError: + return "Não é um inteiro" + + def chk_float(self, data): + if len(data) == 0: + return None + try: + x = float(data) + return None + except ValueError: + return "Não é um número com separado de casa decimal" + + def chk_bool(self, data): + if len(data) == 0: + return None + return ( + None + if data + in ( + "True", + "true", + "TRUE", + "T", + "t", + "Yes", + "yes", + "YES", + "Y", + "y", + "False", + "false", + "FALSE", + "F", + "f", + "No", + "no", + "NO", + "N", + "n", + True, + False, + ) + else "Padrão incompatível, tente ['yes', 'no', 'true', 'false', 'y', 'n']" + ) + + def chk_datetime(self, data): + if len(data) == 0: + return None + if type(data) == type(datetime.datetime.now()): + return None + if type(data) == type(datetime.date.today()): + return None + if type(data) != type(""): + if data == None: + return "missing date/time" + try: + data = str(data) + except ValueError: + return "can't convert data to string for date/time test" + for f in self.datetime_fmts: + try: + dt = datetime.datetime.strptime(data, f) + except: + continue + break + else: + return "invalid date/time" + return None + + def chk_date(self, data): + if len(data) == 0: + return None + if type(data) == type(datetime.date.today()): + return None + if type(data) != type(""): + if data == None: + return "missing date" + try: + data = str(data) + except ValueError: + return "can't convert data to string for date test" + for f in self.date_fmts: + try: + dt = datetime.datetime.strptime(data, f) + except: + continue + break + else: + return "invalid date" + return None + + def dispatch(self, check_funcs, data): + errlist = [f(data) for f in check_funcs] + return [e for e in errlist if e] + + def __init__( + self, fmt_spec, colname, column_required_default, data_required_default + ): + self.name = colname + self.data_required = data_required_default + # By default, all columns are required unless there is a specification indicating that it is not. + self.column_required = column_required_default + specs = fmt_spec.options(colname) + # Get the value for each option, using an appropriate function for each expected value type. + for spec in specs: + try: + specval = self.get_fn[spec](fmt_spec, colname, spec) + except KeyError: + raise ChkCsvError( + "Unrecognized format specification (%s)" % spec, column=colname + ) + setattr(self, spec, specval) + # Convert any pattern attribute to an rx attribute + if hasattr(self, "pattern"): + try: + self.rx = re.compile(self.pattern) + except: + raise ChkCsvError( + "Invalid regular expression pattern: %s" % self.pattern, + column=colname, + ) + # Create the check method + errfuncs = [] + if self.data_required: + errfuncs.append(self.chk_req) + if hasattr(self, "type"): + if self.type == "string": + if hasattr(self, "minlen"): + errfuncs.append(self.chk_min) + if hasattr(self, "maxlen"): + errfuncs.append(self.chk_max) + if hasattr(self, "pattern"): + errfuncs.append(self.chk_pat) + elif self.type == "integer": + errfuncs.append(self.chk_int) + elif self.type == "float": + errfuncs.append(self.chk_float) + elif self.type == "date": + errfuncs.append(self.chk_date) + if hasattr(self, "pattern"): + errfuncs.append(self.chk_pat) + elif self.type == "datetime": + errfuncs.append(self.chk_datetime) + if hasattr(self, "pattern"): + errfuncs.append(self.chk_pat) + else: + if hasattr(self, "minlen"): + errfuncs.append(self.chk_min) + if hasattr(self, "maxlen"): + errfuncs.append(self.chk_max) + if hasattr(self, "pattern"): + errfuncs.append(self.chk_pat) + self.check = lambda data: self.dispatch(errfuncs, data) + + +def clparser(): + usage_msg = """Usage: %prog [options] +Arguments: + CSV file name The name of a comma-separated-values file to check.""" + vers_msg = "%prog " + "%s %s" % (_version, _vdate) + desc_msg = "Checks the content and format of a CSV file." + parser = OptionParser(usage=usage_msg, version=vers_msg, description=desc_msg) + parser.add_option( + "-s", + "--showspecs", + action="store_true", + dest="showspecs", + default=False, + help="Show the format specifications allowed in the configuration file, and exit.", + ) + parser.add_option( + "-f", + "--formatspec", + action="store", + dest="formatspec", + type="string", + help="Name of the file with the format specification. The default is the name of the CSV file with an extension of fmt.", + ) + parser.add_option( + "-r", + "--required", + action="store_true", + dest="data_required", + default=False, + help="A data value is required in data columns for which the format specification does not include an explicit specification of whether data is required for a column. The default is false (i.e., data are not required).", + ) + parser.add_option( + "-q", + "--columnsnotrequired", + action="store_false", + dest="column_required", + default=True, + help="Columns listed in the format configuration file are not required to be present unless the column_required specification is explicitly set in the configuration file. The default is true (i.e., all columns in the configuration file are required in the CSV file).", + ) + parser.add_option( + "-c", + "--columnexit", + action="store_true", + dest="columnexit", + default=False, + help="Exit immediately if there are more columns in the CSV file header than are specified in the format configuration file.", + ) + parser.add_option( + "-l", + "--linelength", + action="store_false", + dest="linelength", + default=True, + help="Allow rows of the CSV file to have fewer columns than in the column headers. The default is to report an error for short data rows. If short data rows are allowed, any row without enough columns to match the format specification will still be reported as an error.", + ) + parser.add_option( + "-i", + "--case-insensitive", + action="store_true", + dest="caseinsensitive", + default=False, + help="Case-insensitive matching of column names in the format configuration file and the CSV file. The default is case-sensitive (i.e., column names must match exactly).", + ) + parser.add_option( + "-e", + "--encoding", + action="store", + type="string", + dest="encoding", + default=None, + help="Character encoding of the CSV file. It should be one of the strings listed at http://docs.python.org/library/codecs.html#standard-encodings.", + ) + parser.add_option( + "-o", + "--optsection", + action="store", + dest="optsection", + type="string", + help="An alternate name for the chkcsv options section in the format specification configuration file.", + ) + parser.add_option( + "-x", + "--exitonerror", + action="store_true", + dest="haltonerror", + default=False, + help="Exit when the first error is found.", + ) + return parser + + +class UTF8Recoder: + """Iterator that reads an encoded stream and reencodes the input to UTF-8.""" + + def __init__(self, f, encoding): + self.reader = codecs.getreader(encoding)(f) + + def __iter__(self): + return self + + def __next__(self): + if sys.version_info < (3,): + return next(self.reader).encode("utf-8") + else: + return next(self.reader) + + def next(self): + return self.__next__() + + +class UnicodeReader: + """A CSV reader which will iterate over lines in the CSV file "f", + which is encoded in the given encoding. + """ + + def __init__(self, f, dialect=csv.excel, encoding="utf-8", **kwds): + uf = UTF8Recoder(f, encoding) + self.reader = csv.reader(uf, dialect=dialect, **kwds) + + def __iter__(self): + return self + + def next(self): + if sys.version_info < (3,): + row = self.reader.next() + else: + row = next(self.reader) + return [type("")(s, "utf-8") for s in row] + + def __next__(self): + if sys.version_info < (3,): + row = self.reader.next() + else: + row = next(self.reader) + return [type("")(s, "utf-8") for s in row] + + +def show_errors(errlist): + """Write a list of error messages to stderr. + + :param errlist: A tuple of a narrative message, the name of the file + in which the error occurred, the line number of the file, and the column + name of the file. All but the first may be null. + """ + for err in errlist: + sys.stderr.write( + "%s.\n" + % " ".join( + [ + "%s %s" % em + for em in [ + e + for e in zip(("Error:", "in file", "on line", "in column"), err) + if e[1] + ] + ] + ) + ) + + +def read_format_specs( + fmt_file, column_required, data_required, chkopts="chkcsvoptions" +): + """Read format specifications from a file. + + :param fmt_file: The name of the file containing format specifications. + :param column_required: Whether or not the column must be in the CSV file to be checked. + :param data_required: Whether or not a data value is required on every row of the CSV file. + :param chkopts: The name of a section in the format specification file containing additional options. + """ + fmtspecs = ConfigParser() + try: + files_read = fmtspecs.read([fmt_file]) + except configparser.Error: + raise ChkCsvError("Error reading format specification file.", fmt_file) + if len(files_read) == 0: + raise ChkCsvError("Error reading format specification file.", fmt_file) + # Convert ConfigParser object into a list of CsvChecker objects + speccols = [sect for sect in fmtspecs.sections() if sect != chkopts] + cols = {} + for col in speccols: + cols[col] = CsvChecker(fmtspecs, col, column_required, data_required) + return cols + + +def check_csv_file( + csv_fname, cols, halt_on_err, columnexit, linelength, caseinsensitive, encoding=None +): + """Check that all of the required columns and data are present in the CSV file, and that + the data conform to the appropriate type and other specifications. + + :param csv_fname: The name of the CSV file to check. + :param cols: A dictionary of specifications (CsvChecker objects) indexed by column name. + :param halt_on_err: Whether to exit on the first error. + :param columnexit: Whether to exit if the CSV file doesn't have exactly the same columns in the format specifications. + :param linelength: Whether to report an error if any data row has a different number of items than indicated by the column headers. + :param casesensitive: Whether column names in the specifications and CSV file should be compared case-insensitively. + :param encoding: The character encoding of the CSV file. + """ + errorlist = [] + dialect = csv.Sniffer().sniff(open(csv_fname, "rt").readline()) + encoding = "utf-8" if not encoding else encoding + if sys.version_info < (3,): + inf = UnicodeReader(open(csv_fname, "rt"), dialect, encoding) + else: + inf = csv.reader(open(csv_fname, mode="rt", encoding=encoding), dialect=dialect) + colnames = next(inf) + req_cols = [c for c in cols if cols[c].column_required] + # Exit if all required columns are not present + if caseinsensitive: + colnames_l = [c.lower() for c in colnames] + req_missing = [col for col in req_cols if not (col.lower() in colnames_l)] + else: + req_missing = [col for col in req_cols if not (col in colnames)] + if len(req_missing) > 0: + errorlist.append( + ( + "The following columns are required, but are not present in the CSV file: %s." + % ", ".join(req_missing), + csv_fname, + 1, + ) + ) + return errorlist + # Exit if there are extra columns and the option to exit is set. + if columnexit: + if caseinsensitive: + speccols_l = [c.lower() for c in cols] + extra = [col for col in colnames if not (col.lower() in speccols_l)] + else: + extra = [col for col in colnames if not (col in cols)] + if len(extra) > 0: + errorlist.append( + ( + "The following columns have no format specifications but are in the CSV file: %s." + % ", ".join(extra), + csv_fname, + 1, + ) + ) + return errorlist + # Column names common to specifications and data file. These will be used + # to index the cols dictionary to get the appropriate check method + # and to index the CSV column name list (colnames) to get the column position. + if caseinsensitive: + chkcols = {} + for x in cols: + for y in colnames: + if x.lower() == y.lower(): + chkcols[x] = y + else: + datacols = [col for col in cols if col in colnames] + chkcols = dict(zip(datacols, datacols)) + # Get maximum required column number (index) to check data rows + dataindex = [colnames.index(chkcols[col]) for col in chkcols] + maxindex = max(dataindex) if len(dataindex) > 0 else 0 # 0 if format file is empty + colloc = dict(zip([chkcols[c] for c in chkcols], dataindex)) + # Read and check the CSV file until done (or until an error). + row_no = 1 # Header is row 1. + for datarow in inf: + row_no += 1 + if (len(datarow) > 0) and (len(datarow) < len(colnames)) and linelength: + errorlist.append( + ("fewer data values than column headers", csv_fname, row_no) + ) + if halt_on_err: + return errorlist + if len(datarow) > len(colnames): + errorlist.append( + ("more data values than column headers", csv_fname, row_no) + ) + if halt_on_err: + return errorlist + if len(datarow) < maxindex + 1: + if len(datarow) > 0: + errorlist.append( + ( + "fewer data values than columns in the format specification", + csv_fname, + row_no, + ) + ) + if halt_on_err: + return errorlist + else: + for col in chkcols: + col_errs = cols[col].check(datarow[colloc[chkcols[col]]]) + if len(col_errs) > 0: + errorlist.extend( + [(e, csv_fname, row_no, cols[col].name) for e in col_errs] + ) + if halt_on_err: + return errorlist + return errorlist + + +def main(): + parser = clparser() + (opts, args) = parser.parse_args() + if opts.showspecs: + print(FORMATSPECS) + return 0 + if len(args) == 0: + parser.print_help() + return 0 + if len(args) != 1: + raise ChkCsvError( + "A single argument, the name of the CSV file to check, must be provided." + ) + csv_file = args[0] + if not os.path.exists(csv_file): + raise ChkCsvError("The specified CSV file does not exist.", csv_file) + if opts.formatspec: + fmt_file = opts.formatspec + else: + (fn, ext) = os.path.splitext(csv_file) + fmt_file = "%s.fmt" % fn + if not os.path.exists(fmt_file): + raise ChkCsvError("The format file does not exist.", fmt_file) + # Get format specifications as a list of ChkCsv objects from the configuration file. + if opts.optsection: + chkopts = opts.optsection + else: + chkopts = "chkcsvoptions" + cols = read_format_specs( + fmt_file, opts.column_required, opts.data_required, chkopts + ) + # Check the file + errorlist = check_csv_file( + csv_file, + cols, + opts.haltonerror, + opts.columnexit, + opts.linelength, + opts.caseinsensitive, + opts.encoding, + ) + if len(errorlist) > 0: + show_errors(errorlist) + return 1 + else: + return 0 + + +if __name__ == "__main__": + try: + status = main() + except ChkCsvError as msg: + show_errors([(msg.errmsg, msg.infile, msg.line, msg.column)]) + exit(1) + except SystemExit as x: + sys.exit(x) + except Exception: + strace = traceback.extract_tb(sys.exc_info()[2])[-1:] + lno = strace[0][1] + src = strace[0][3] + sys.stderr.write( + "%s: Uncaught exception %s (%s) on line %s (%s)." + % ( + os.path.basename(sys.argv[0]), + str(sys.exc_info()[0]), + sys.exc_info()[1], + lno, + src, + ) + ) + sys.exit(1) + sys.exit(status) diff --git a/core/migrations/0001_initial.py b/core/migrations/0001_initial.py new file mode 100644 index 0000000..3955a79 --- /dev/null +++ b/core/migrations/0001_initial.py @@ -0,0 +1,280 @@ +# Generated by Django 4.2.7 on 2024-04-08 00:21 + +from django.conf import settings +from django.db import migrations, models +import django.db.models.deletion +import wagtail.fields +import wagtail.search.index + + +class Migration(migrations.Migration): + initial = True + + dependencies = [ + migrations.swappable_dependency(settings.AUTH_USER_MODEL), + ] + + operations = [ + migrations.CreateModel( + name="FlexibleDate", + fields=[ + ( + "id", + models.BigAutoField( + auto_created=True, + primary_key=True, + serialize=False, + verbose_name="ID", + ), + ), + ( + "year", + models.IntegerField(blank=True, null=True, verbose_name="Year"), + ), + ( + "month", + models.IntegerField(blank=True, null=True, verbose_name="Month"), + ), + ("day", models.IntegerField(blank=True, null=True, verbose_name="Day")), + ], + ), + migrations.CreateModel( + name="Language", + fields=[ + ( + "id", + models.BigAutoField( + auto_created=True, + primary_key=True, + serialize=False, + verbose_name="ID", + ), + ), + ( + "created", + models.DateTimeField( + auto_now_add=True, verbose_name="Creation date" + ), + ), + ( + "updated", + models.DateTimeField( + auto_now=True, verbose_name="Last update date" + ), + ), + ( + "name", + models.TextField( + blank=True, null=True, verbose_name="Language Name" + ), + ), + ( + "code2", + models.TextField( + blank=True, null=True, verbose_name="Language code 2" + ), + ), + ( + "creator", + models.ForeignKey( + editable=False, + null=True, + on_delete=django.db.models.deletion.SET_NULL, + related_name="%(class)s_creator", + to=settings.AUTH_USER_MODEL, + verbose_name="Creator", + ), + ), + ( + "updated_by", + models.ForeignKey( + blank=True, + editable=False, + null=True, + on_delete=django.db.models.deletion.SET_NULL, + related_name="%(class)s_last_mod_user", + to=settings.AUTH_USER_MODEL, + verbose_name="Updater", + ), + ), + ], + options={ + "verbose_name": "Idioma", + "verbose_name_plural": "Languages", + }, + ), + migrations.CreateModel( + name="License", + fields=[ + ( + "id", + models.BigAutoField( + auto_created=True, + primary_key=True, + serialize=False, + verbose_name="ID", + ), + ), + ( + "created", + models.DateTimeField( + auto_now_add=True, verbose_name="Creation date" + ), + ), + ( + "updated", + models.DateTimeField( + auto_now=True, verbose_name="Last update date" + ), + ), + ( + "license_type", + models.CharField(blank=True, max_length=255, null=True), + ), + ( + "creator", + models.ForeignKey( + editable=False, + null=True, + on_delete=django.db.models.deletion.SET_NULL, + related_name="%(class)s_creator", + to=settings.AUTH_USER_MODEL, + verbose_name="Creator", + ), + ), + ( + "updated_by", + models.ForeignKey( + blank=True, + editable=False, + null=True, + on_delete=django.db.models.deletion.SET_NULL, + related_name="%(class)s_last_mod_user", + to=settings.AUTH_USER_MODEL, + verbose_name="Updater", + ), + ), + ], + options={ + "verbose_name": "License", + "verbose_name_plural": "Licenses", + }, + ), + migrations.CreateModel( + name="Gender", + fields=[ + ( + "id", + models.BigAutoField( + auto_created=True, + primary_key=True, + serialize=False, + verbose_name="ID", + ), + ), + ( + "code", + models.CharField( + blank=True, max_length=5, null=True, verbose_name="Código" + ), + ), + ( + "gender", + models.CharField( + blank=True, max_length=50, null=True, verbose_name="Sex" + ), + ), + ], + options={ + "unique_together": {("code", "gender")}, + }, + bases=(wagtail.search.index.Indexed, models.Model), + ), + migrations.CreateModel( + name="LicenseStatement", + fields=[ + ( + "id", + models.BigAutoField( + auto_created=True, + primary_key=True, + serialize=False, + verbose_name="ID", + ), + ), + ( + "created", + models.DateTimeField( + auto_now_add=True, verbose_name="Creation date" + ), + ), + ( + "updated", + models.DateTimeField( + auto_now=True, verbose_name="Last update date" + ), + ), + ("url", models.CharField(blank=True, max_length=255, null=True)), + ("license_p", wagtail.fields.RichTextField(blank=True, null=True)), + ( + "creator", + models.ForeignKey( + editable=False, + null=True, + on_delete=django.db.models.deletion.SET_NULL, + related_name="%(class)s_creator", + to=settings.AUTH_USER_MODEL, + verbose_name="Creator", + ), + ), + ( + "language", + models.ForeignKey( + blank=True, + null=True, + on_delete=django.db.models.deletion.SET_NULL, + to="core.language", + ), + ), + ( + "license", + models.ForeignKey( + blank=True, + null=True, + on_delete=django.db.models.deletion.SET_NULL, + to="core.license", + ), + ), + ( + "updated_by", + models.ForeignKey( + blank=True, + editable=False, + null=True, + on_delete=django.db.models.deletion.SET_NULL, + related_name="%(class)s_last_mod_user", + to=settings.AUTH_USER_MODEL, + verbose_name="Updater", + ), + ), + ], + options={ + "verbose_name": "License", + "verbose_name_plural": "Licenses", + "indexes": [ + models.Index(fields=["url"], name="core_licens_url_ec8078_idx") + ], + "unique_together": {("url", "license_p", "language")}, + }, + ), + migrations.AddIndex( + model_name="license", + index=models.Index( + fields=["license_type"], name="core_licens_license_5d1905_idx" + ), + ), + migrations.AlterUniqueTogether( + name="license", + unique_together={("license_type",)}, + ), + ] diff --git a/core/migrations/__init__.py b/core/migrations/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/core/models.py b/core/models.py new file mode 100644 index 0000000..1aeab73 --- /dev/null +++ b/core/models.py @@ -0,0 +1,539 @@ +import os + +from django.contrib.auth import get_user_model +from django.db import models, IntegrityError +from django.db.models import Case, When, Value, IntegerField +from django.utils.translation import gettext as _ +from wagtail.admin.panels import FieldPanel +from wagtail.fields import RichTextField +from wagtail.search import index +from wagtail.snippets.models import register_snippet +from wagtailautocomplete.edit_handlers import AutocompletePanel + +from . import choices +from .utils.utils import language_iso + +User = get_user_model() + + +@register_snippet +class Gender(index.Indexed, models.Model): + """ + Class of gender + + Fields: + sex: physical state of being either male, female, or intersex + """ + + code = models.CharField(_("Code"), max_length=5, null=True, blank=True) + + gender = models.CharField(_("Sex"), max_length=50, null=True, blank=True) + + autocomplete_search_filter = "code" + + def autocomplete_label(self): + return str(self) + + panels = [ + FieldPanel("code"), + FieldPanel("gender"), + ] + + search_fields = [ + index.SearchField("code", partial_match=True), + index.SearchField("gender", partial_match=True), + ] + + class Meta: + unique_together = [("code", "gender")] + + def __unicode__(self): + return self.gender or self.code + + def __str__(self): + return self.gender or self.code + + @classmethod + def _get(cls, code=None, gender=None): + try: + return cls.objects.get(code=code, gender=gender) + except cls.MultipleObjectsReturned: + return cls.objects.filter(code=code, gender=gender).first() + + @classmethod + def _create(cls, user, code=None, gender=None): + try: + obj = cls() + obj.gender = gender + obj.code = code + obj.creator = user + obj.save() + return obj + except IntegrityError: + return cls._get(code, gender) + + @classmethod + def create_or_update(cls, user, code, gender=None): + try: + return cls._get(code, gender) + except cls.DoesNotExist: + return cls._create(user, code, gender) + + +class CommonControlField(models.Model): + """ + Class with common control fields. + + Fields: + created: Date time when the record was created + updated: Date time with the last update date + creator: The creator of the record + updated_by: Store the last updator of the record + """ + + # Creation date + created = models.DateTimeField(verbose_name=_("Creation date"), auto_now_add=True) + + # Update date + updated = models.DateTimeField(verbose_name=_("Last update date"), auto_now=True) + + # Creator user + creator = models.ForeignKey( + User, + verbose_name=_("Creator"), + related_name="%(class)s_creator", + editable=False, + on_delete=models.SET_NULL, + null=True, + ) + + # Last modifier user + updated_by = models.ForeignKey( + User, + verbose_name=_("Updater"), + related_name="%(class)s_last_mod_user", + editable=False, + null=True, + blank=True, + on_delete=models.SET_NULL, + ) + + class Meta: + abstract = True + + +class Language(CommonControlField): + """ + Represent the list of states + + Fields: + name + code2 + """ + + name = models.TextField(_("Language Name"), blank=True, null=True) + code2 = models.TextField(_("Language code 2"), blank=True, null=True) + + autocomplete_search_field = "name" + + def autocomplete_label(self): + return str(self) + + class Meta: + verbose_name = _("Language") + verbose_name_plural = _("Languages") + + def __unicode__(self): + if self.name or self.code2: + return f"{self.name} | {self.code2}" + return "None" + + def __str__(self): + if self.name or self.code2: + return f"{self.name} | {self.code2}" + return "None" + + @classmethod + def load(cls, user): + if cls.objects.count() == 0: + for k, v in choices.LANGUAGE: + cls.get_or_create(name=v, code2=k, creator=user) + + @classmethod + def get_or_create(cls, name=None, code2=None, creator=None): + code2 = language_iso(code2) + if code2: + try: + return cls.objects.get(code2=code2) + except cls.DoesNotExist: + pass + + if name: + try: + return cls.objects.get(name=name) + except cls.DoesNotExist: + pass + + if name or code2: + obj = Language() + obj.name = name + obj.code2 = code2 or "" + obj.creator = creator + obj.save() + return obj + + +class TextWithLang(models.Model): + text = models.TextField(_("Text"), null=True, blank=True) + language = models.ForeignKey( + Language, + on_delete=models.SET_NULL, + verbose_name=_("Language"), + null=True, + blank=True, + ) + + panels = [FieldPanel("text"), AutocompletePanel("language")] + + class Meta: + abstract = True + + +class TextLanguageMixin(models.Model): + rich_text = RichTextField(_("Rich Text"), null=True, blank=True) + plain_text = models.TextField(_("Plain Text"), null=True, blank=True) + language = models.ForeignKey( + Language, + on_delete=models.SET_NULL, + verbose_name=_("Language"), + null=True, + blank=True, + ) + + panels = [ + AutocompletePanel("language"), + FieldPanel("rich_text"), + FieldPanel("plain_text"), + ] + + class Meta: + abstract = True + + +class LanguageFallbackManager(models.Manager): + def get_object_in_preferred_language(self, language): + mission = self.filter(language=language) + if mission: + return mission + + language_order = ['pt', 'es', 'en'] + langs = self.all().values_list("language", flat=True) + languages = Language.objects.filter(id__in=langs) + + # Define a ordem baseado na lista language_order + order = [When(code2=lang, then=Value(i)) for i, lang in enumerate(language_order)] + ordered_languages = languages.annotate( + language_order=Case(*order, default=Value(len(language_order)), output_field=IntegerField()) + ).order_by('language_order') + + + for lang in ordered_languages: + mission = self.filter(language=lang) + if mission: + return mission + return None + + +class RichTextWithLanguage(models.Model): + rich_text = RichTextField(_("Rich Text"), null=True, blank=True) + language = models.ForeignKey( + Language, + on_delete=models.SET_NULL, + verbose_name=_("Language"), + null=True, + blank=True, + ) + + panels = [ + AutocompletePanel("language"), + FieldPanel("rich_text"), + ] + + objects = LanguageFallbackManager() + + class Meta: + abstract = True + + +class FlexibleDate(models.Model): + year = models.IntegerField(_("Year"), null=True, blank=True) + month = models.IntegerField(_("Month"), null=True, blank=True) + day = models.IntegerField(_("Day"), null=True, blank=True) + + def __unicode__(self): + return "%s/%s/%s" % (self.year, self.month, self.day) + + def __str__(self): + return "%s/%s/%s" % (self.year, self.month, self.day) + + @property + def data(self): + return dict( + date__year=self.year, + date__month=self.month, + date__day=self.day, + ) + + +class License(CommonControlField): + license_type = models.CharField(max_length=255, null=True, blank=True) + + autocomplete_search_field = "license_type" + + def autocomplete_label(self): + return str(self) + + panels = [ + FieldPanel("license_type"), + ] + + class Meta: + unique_together = [("license_type", )] + verbose_name = _("License") + verbose_name_plural = _("Licenses") + indexes = [ + models.Index( + fields=[ + "license_type", + ] + ), + ] + + def __unicode__(self): + return self.license_type or "" + + def __str__(self): + return self.license_type or "" + + @classmethod + def load(cls, user): + for license_type, v in choices.LICENSE_TYPES: + cls.create_or_update(user, license_type) + + @classmethod + def get( + cls, + license_type, + ): + if not license_type: + raise ValueError("License.get requires license_type parameters") + filters = dict( + license_type__iexact=license_type + ) + try: + return cls.objects.get(**filters) + except cls.MultipleObjectsReturned: + return cls.objects.filter(**filters).first() + + @classmethod + def create( + cls, + user, + license_type=None, + ): + try: + obj = cls() + obj.creator = user + obj.license_type = license_type or obj.license_type + obj.save() + return obj + except IntegrityError: + return cls.get(license_type=license_type) + + @classmethod + def create_or_update( + cls, + user, + license_type=None, + ): + try: + return cls.get(license_type=license_type) + except cls.DoesNotExist: + return cls.create(user, license_type) + + +class LicenseStatement(CommonControlField): + url = models.CharField(max_length=255, null=True, blank=True) + license_p = RichTextField(null=True, blank=True) + language = models.ForeignKey( + Language, on_delete=models.SET_NULL, null=True, blank=True + ) + license = models.ForeignKey( + License, on_delete=models.SET_NULL, null=True, blank=True) + + panels = [ + FieldPanel("url"), + FieldPanel("license_p"), + AutocompletePanel("language"), + AutocompletePanel("license"), + ] + + class Meta: + unique_together = [("url", "license_p", "language")] + verbose_name = _("License") + verbose_name_plural = _("Licenses") + indexes = [ + models.Index( + fields=[ + "url", + ] + ), + ] + + def __unicode__(self): + return self.url or "" + + def __str__(self): + return self.url or "" + + @classmethod + def get( + cls, + url=None, + license_p=None, + language=None, + ): + if not url and not license_p: + raise ValueError("LicenseStatement.get requires url or license_p") + try: + return cls.objects.get( + url__iexact=url, license_p__iexact=license_p, language=language) + except cls.MultipleObjectsReturned: + return cls.objects.filter( + url__iexact=url, license_p__iexact=license_p, language=language + ).first() + + @classmethod + def create( + cls, + user, + url=None, + license_p=None, + language=None, + license=None, + ): + if not url and not license_p: + raise ValueError("LicenseStatement.create requires url or license_p") + try: + obj = cls() + obj.creator = user + obj.url = url or obj.url + obj.license_p = license_p or obj.license_p + obj.language = language or obj.language + # instance of License + obj.license = license or obj.license + obj.save() + return obj + except IntegrityError: + return cls.get(url, license_p, language) + + @classmethod + def create_or_update( + cls, + user, + url=None, + license_p=None, + language=None, + license=None, + ): + try: + data = dict( + url=url, + license_p=license_p, + language=language and language.code2 + ) + try: + obj = cls.get(url, license_p, language) + obj.updated_by = user + obj.url = url or obj.url + obj.license_p = license_p or obj.license_p + obj.language = language or obj.language + # instance of License + obj.license = license or obj.license + obj.save() + return obj + except cls.DoesNotExist: + return cls.create(user, url, license_p, language, license) + except Exception as e: + raise ValueError(f"Unable to create or update LicenseStatement for {data}: {type(e)} {e}") + + @staticmethod + def parse_url(url): + license_type = None + license_version = None + license_language = None + + url = url.lower() + url_parts = url.split("/") + if not url_parts: + return {} + + license_types = dict(choices.LICENSE_TYPES) + for lic_type in license_types.keys(): + if lic_type in url_parts: + license_type = lic_type + + try: + version = url.split(f"/{license_type}/") + version = version[-1].split("/")[0] + isdigit = False + for c in version.split("."): + if c.isdigit(): + isdigit = True + continue + else: + isdigit = False + break + if isdigit: + license_version = version + except (AttributeError, TypeError, ValueError): + pass + break + + return dict( + license_type=license_type, + license_version=license_version, + license_language=license_language, + ) + + +class FileWithLang(models.Model): + file = models.ForeignKey( + "wagtaildocs.Document", + null=True, + blank=True, + on_delete=models.SET_NULL, + verbose_name=_("File"), + help_text='', + related_name="+", + ) + + language = models.ForeignKey( + Language, + on_delete=models.SET_NULL, + verbose_name=_("Language"), + null=True, + blank=True, + ) + + panels = [ + AutocompletePanel("language"), + FieldPanel("file"), + ] + + @property + def filename(self): + return os.path.basename(self.file.name) + + class Meta: + abstract = True diff --git a/core/routers.py b/core/routers.py new file mode 100644 index 0000000..40ba678 --- /dev/null +++ b/core/routers.py @@ -0,0 +1,6 @@ +from haystack import routers + + +class UpdateEverythingRouter(routers.BaseRouter): + def for_write(self, **hints): + return ("default", "oai") diff --git a/core/search_site/__init__.py b/core/search_site/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/core/search_site/views.py b/core/search_site/views.py new file mode 100644 index 0000000..2ea83f5 --- /dev/null +++ b/core/search_site/views.py @@ -0,0 +1,34 @@ +from django.core.paginator import EmptyPage, PageNotAnInteger, Paginator +from django.shortcuts import render +from wagtail.models import Page +from wagtail.search.models import Query + + +def search(request): + search_query = request.GET.get("query", None) + page = request.GET.get("page", 1) + + # Search + if search_query: + search_results = Page.objects.live().search(search_query) + query = Query.get(search_query) + + # Record hit + query.add_hit() + else: + search_results = Page.objects.none() + + # Pagination + paginator = Paginator(search_results, 10) + try: + search_results = paginator.page(page) + except PageNotAnInteger: + search_results = paginator.page(1) + except EmptyPage: + search_results = paginator.page(paginator.num_pages) + + return render( + request, + "search/search.html", + {"search_query": search_query, "search_results": search_results}, + ) diff --git a/core/static/admin/css/custom.css b/core/static/admin/css/custom.css new file mode 100644 index 0000000..b779ff7 --- /dev/null +++ b/core/static/admin/css/custom.css @@ -0,0 +1,23 @@ +:root { + --color-primary: #6789d3; + --color-primary-darker: #4c77d5; + --color-primary-dark: #4c77d5; +} + +.myReadonlyInput input[type="text"]{ + background-color: rgb(239 239 239); + color: rgb(99 99 99); + pointer-events:none; + cursor:text; +} + +/* Classe para ocultar elementos relacionados ao campo de escolher arquivo (models.FileField)*/ +.hide-file-section input[type="checkbox"][name="file-clear"], +.hide-file-section label[for="file-clear_id"], +.hide-file-section input[type="file"][name="file"] { + display: none; +} + +.hide-file-section .w-field__input a { + font-weight: bold; +} diff --git a/core/static/admin/js/custom.js b/core/static/admin/js/custom.js new file mode 100644 index 0000000..865c0d3 --- /dev/null +++ b/core/static/admin/js/custom.js @@ -0,0 +1,66 @@ +/* your custom js go here */ +document.addEventListener('DOMContentLoaded', function() { + const collectionSelect = document.querySelector('select[name="collection"]'); + const journalSelect = document.querySelector('select[name="journal"]'); + const currentJournalId = journalSelect.value; // Armazena o valor atual do journal + + function updateJournals() { + const selectedCollections = Array.from(collectionSelect.options) + .filter(option => option.selected) + .map(option => option.value); + fetch(`/filter_journals/?collections[]=${selectedCollections.join('&collections[]=')}`) + .then(response => response.json()) + .then(data => { + journalSelect.innerHTML = ''; + const defaultOption = new Option("Selecione um Journal", ""); + journalSelect.add(defaultOption); + + data.forEach(function(journal) { + const option = new Option(journal.name, journal.id); + if (journal.id.toString() === currentJournalId) { + option.selected = true; + } + journalSelect.add(option); + }); + if (!journalSelect.querySelector(`option[value="${currentJournalId}"]`)) { + journalSelect.value = ""; + } + }) + .catch(error => console.error('Error:', error)); + } + + if (collectionSelect && journalSelect) { + collectionSelect.addEventListener('change', updateJournals); + updateJournals(); + } +}); + +// document.addEventListener('DOMContentLoaded', function() { +// const collectionSelect = document.querySelector('select[name="collection"]'); +// const journalSelect = document.querySelector('select[name="journal"]'); + +// function updateJournals() { +// const selectedCollections = Array.from(collectionSelect.options) +// .filter(option => option.selected) +// .map(option => option.value); +// fetch(`/filter_journals/?collections[]=${selectedCollections.join('&collections[]=')}`) +// .then(response => response.json()) +// .then(data => { +// journalSelect.innerHTML = ''; +// // Adicione uma opção vazia ou com texto de 'nenhuma seleção' +// const defaultOption = new Option("Selecione um Journal", ""); +// journalSelect.add(defaultOption); +// data.forEach(function(journal) { +// const option = new Option(journal.name, journal.id); +// journalSelect.add(option); +// }); +// }) +// .catch(error => console.error('Error:', error)); +// } + + +// if (collectionSelect && journalSelect) { +// collectionSelect.addEventListener('change', updateJournals); +// updateJournals(); +// } +// }); \ No newline at end of file diff --git a/core/static/css/bootstrap-grid.css b/core/static/css/bootstrap-grid.css new file mode 100644 index 0000000..133de21 --- /dev/null +++ b/core/static/css/bootstrap-grid.css @@ -0,0 +1,7 @@ +/*! + * Bootstrap Grid v5.0.0-beta1 (https://getbootstrap.com/) + * Copyright 2011-2020 The Bootstrap Authors + * Copyright 2011-2020 Twitter, Inc. + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) + */.container,.container-fluid,.container-lg,.container-md,.container-sm,.container-xl,.container-xxl{width:100%;padding-right:var(--scielo-gutter-x,.5rem);padding-left:var(--scielo-gutter-x,.5rem);margin-right:auto;margin-left:auto}@media (min-width:576px){.container,.container-sm{max-width:100%}}@media (min-width:768px){.container,.container-md,.container-sm{max-width:720px}}@media (min-width:992px){.container,.container-lg,.container-md,.container-sm{max-width:960px}}@media (min-width:1200px){.container,.container-lg,.container-md,.container-sm,.container-xl{max-width:1140px}}@media (min-width:1400px){.container,.container-lg,.container-md,.container-sm,.container-xl,.container-xxl{max-width:1320px}}.row{--scielo-gutter-x:1rem;--scielo-gutter-y:0;display:flex;flex-wrap:wrap;margin-top:calc(var(--scielo-gutter-y) * -1);margin-right:calc(var(--scielo-gutter-x)/ -2);margin-left:calc(var(--scielo-gutter-x)/ -2)}.row>*{box-sizing:border-box;flex-shrink:0;width:100%;max-width:100%;padding-right:calc(var(--scielo-gutter-x)/ 2);padding-left:calc(var(--scielo-gutter-x)/ 2);margin-top:var(--scielo-gutter-y)}.col{flex:1 0 0%}.row-cols-auto>*{flex:0 0 auto;width:auto}.row-cols-1>*{flex:0 0 auto;width:100%}.row-cols-2>*{flex:0 0 auto;width:50%}.row-cols-3>*{flex:0 0 auto;width:33.33333%}.row-cols-4>*{flex:0 0 auto;width:25%}.row-cols-5>*{flex:0 0 auto;width:20%}.row-cols-6>*{flex:0 0 auto;width:16.66667%}.col-auto{flex:0 0 auto;width:auto}.col-1{flex:0 0 auto;width:8.33333%}.col-2{flex:0 0 auto;width:16.66667%}.col-3{flex:0 0 auto;width:25%}.col-4{flex:0 0 auto;width:33.33333%}.col-5{flex:0 0 auto;width:41.66667%}.col-6{flex:0 0 auto;width:50%}.col-7{flex:0 0 auto;width:58.33333%}.col-8{flex:0 0 auto;width:66.66667%}.col-9{flex:0 0 auto;width:75%}.col-10{flex:0 0 auto;width:83.33333%}.col-11{flex:0 0 auto;width:91.66667%}.col-12{flex:0 0 auto;width:100%}.offset-1{margin-left:8.33333%}.offset-2{margin-left:16.66667%}.offset-3{margin-left:25%}.offset-4{margin-left:33.33333%}.offset-5{margin-left:41.66667%}.offset-6{margin-left:50%}.offset-7{margin-left:58.33333%}.offset-8{margin-left:66.66667%}.offset-9{margin-left:75%}.offset-10{margin-left:83.33333%}.offset-11{margin-left:91.66667%}.g-0,.gx-0{--scielo-gutter-x:0}.g-0,.gy-0{--scielo-gutter-y:0}.g-1,.gx-1{--scielo-gutter-x:0.25rem}.g-1,.gy-1{--scielo-gutter-y:0.25rem}.g-2,.gx-2{--scielo-gutter-x:0.5rem}.g-2,.gy-2{--scielo-gutter-y:0.5rem}.g-3,.gx-3{--scielo-gutter-x:1rem}.g-3,.gy-3{--scielo-gutter-y:1rem}.g-4,.gx-4{--scielo-gutter-x:1.5rem}.g-4,.gy-4{--scielo-gutter-y:1.5rem}.g-5,.gx-5{--scielo-gutter-x:3rem}.g-5,.gy-5{--scielo-gutter-y:3rem}@media (min-width:576px){.col-sm{flex:1 0 0%}.row-cols-sm-auto>*{flex:0 0 auto;width:auto}.row-cols-sm-1>*{flex:0 0 auto;width:100%}.row-cols-sm-2>*{flex:0 0 auto;width:50%}.row-cols-sm-3>*{flex:0 0 auto;width:33.33333%}.row-cols-sm-4>*{flex:0 0 auto;width:25%}.row-cols-sm-5>*{flex:0 0 auto;width:20%}.row-cols-sm-6>*{flex:0 0 auto;width:16.66667%}.col-sm-auto{flex:0 0 auto;width:auto}.col-sm-1{flex:0 0 auto;width:8.33333%}.col-sm-2{flex:0 0 auto;width:16.66667%}.col-sm-3{flex:0 0 auto;width:25%}.col-sm-4{flex:0 0 auto;width:33.33333%}.col-sm-5{flex:0 0 auto;width:41.66667%}.col-sm-6{flex:0 0 auto;width:50%}.col-sm-7{flex:0 0 auto;width:58.33333%}.col-sm-8{flex:0 0 auto;width:66.66667%}.col-sm-9{flex:0 0 auto;width:75%}.col-sm-10{flex:0 0 auto;width:83.33333%}.col-sm-11{flex:0 0 auto;width:91.66667%}.col-sm-12{flex:0 0 auto;width:100%}.offset-sm-0{margin-left:0}.offset-sm-1{margin-left:8.33333%}.offset-sm-2{margin-left:16.66667%}.offset-sm-3{margin-left:25%}.offset-sm-4{margin-left:33.33333%}.offset-sm-5{margin-left:41.66667%}.offset-sm-6{margin-left:50%}.offset-sm-7{margin-left:58.33333%}.offset-sm-8{margin-left:66.66667%}.offset-sm-9{margin-left:75%}.offset-sm-10{margin-left:83.33333%}.offset-sm-11{margin-left:91.66667%}.g-sm-0,.gx-sm-0{--scielo-gutter-x:0}.g-sm-0,.gy-sm-0{--scielo-gutter-y:0}.g-sm-1,.gx-sm-1{--scielo-gutter-x:0.25rem}.g-sm-1,.gy-sm-1{--scielo-gutter-y:0.25rem}.g-sm-2,.gx-sm-2{--scielo-gutter-x:0.5rem}.g-sm-2,.gy-sm-2{--scielo-gutter-y:0.5rem}.g-sm-3,.gx-sm-3{--scielo-gutter-x:1rem}.g-sm-3,.gy-sm-3{--scielo-gutter-y:1rem}.g-sm-4,.gx-sm-4{--scielo-gutter-x:1.5rem}.g-sm-4,.gy-sm-4{--scielo-gutter-y:1.5rem}.g-sm-5,.gx-sm-5{--scielo-gutter-x:3rem}.g-sm-5,.gy-sm-5{--scielo-gutter-y:3rem}}@media (min-width:768px){.col-md{flex:1 0 0%}.row-cols-md-auto>*{flex:0 0 auto;width:auto}.row-cols-md-1>*{flex:0 0 auto;width:100%}.row-cols-md-2>*{flex:0 0 auto;width:50%}.row-cols-md-3>*{flex:0 0 auto;width:33.33333%}.row-cols-md-4>*{flex:0 0 auto;width:25%}.row-cols-md-5>*{flex:0 0 auto;width:20%}.row-cols-md-6>*{flex:0 0 auto;width:16.66667%}.col-md-auto{flex:0 0 auto;width:auto}.col-md-1{flex:0 0 auto;width:8.33333%}.col-md-2{flex:0 0 auto;width:16.66667%}.col-md-3{flex:0 0 auto;width:25%}.col-md-4{flex:0 0 auto;width:33.33333%}.col-md-5{flex:0 0 auto;width:41.66667%}.col-md-6{flex:0 0 auto;width:50%}.col-md-7{flex:0 0 auto;width:58.33333%}.col-md-8{flex:0 0 auto;width:66.66667%}.col-md-9{flex:0 0 auto;width:75%}.col-md-10{flex:0 0 auto;width:83.33333%}.col-md-11{flex:0 0 auto;width:91.66667%}.col-md-12{flex:0 0 auto;width:100%}.offset-md-0{margin-left:0}.offset-md-1{margin-left:8.33333%}.offset-md-2{margin-left:16.66667%}.offset-md-3{margin-left:25%}.offset-md-4{margin-left:33.33333%}.offset-md-5{margin-left:41.66667%}.offset-md-6{margin-left:50%}.offset-md-7{margin-left:58.33333%}.offset-md-8{margin-left:66.66667%}.offset-md-9{margin-left:75%}.offset-md-10{margin-left:83.33333%}.offset-md-11{margin-left:91.66667%}.g-md-0,.gx-md-0{--scielo-gutter-x:0}.g-md-0,.gy-md-0{--scielo-gutter-y:0}.g-md-1,.gx-md-1{--scielo-gutter-x:0.25rem}.g-md-1,.gy-md-1{--scielo-gutter-y:0.25rem}.g-md-2,.gx-md-2{--scielo-gutter-x:0.5rem}.g-md-2,.gy-md-2{--scielo-gutter-y:0.5rem}.g-md-3,.gx-md-3{--scielo-gutter-x:1rem}.g-md-3,.gy-md-3{--scielo-gutter-y:1rem}.g-md-4,.gx-md-4{--scielo-gutter-x:1.5rem}.g-md-4,.gy-md-4{--scielo-gutter-y:1.5rem}.g-md-5,.gx-md-5{--scielo-gutter-x:3rem}.g-md-5,.gy-md-5{--scielo-gutter-y:3rem}}@media (min-width:992px){.col-lg{flex:1 0 0%}.row-cols-lg-auto>*{flex:0 0 auto;width:auto}.row-cols-lg-1>*{flex:0 0 auto;width:100%}.row-cols-lg-2>*{flex:0 0 auto;width:50%}.row-cols-lg-3>*{flex:0 0 auto;width:33.33333%}.row-cols-lg-4>*{flex:0 0 auto;width:25%}.row-cols-lg-5>*{flex:0 0 auto;width:20%}.row-cols-lg-6>*{flex:0 0 auto;width:16.66667%}.col-lg-auto{flex:0 0 auto;width:auto}.col-lg-1{flex:0 0 auto;width:8.33333%}.col-lg-2{flex:0 0 auto;width:16.66667%}.col-lg-3{flex:0 0 auto;width:25%}.col-lg-4{flex:0 0 auto;width:33.33333%}.col-lg-5{flex:0 0 auto;width:41.66667%}.col-lg-6{flex:0 0 auto;width:50%}.col-lg-7{flex:0 0 auto;width:58.33333%}.col-lg-8{flex:0 0 auto;width:66.66667%}.col-lg-9{flex:0 0 auto;width:75%}.col-lg-10{flex:0 0 auto;width:83.33333%}.col-lg-11{flex:0 0 auto;width:91.66667%}.col-lg-12{flex:0 0 auto;width:100%}.offset-lg-0{margin-left:0}.offset-lg-1{margin-left:8.33333%}.offset-lg-2{margin-left:16.66667%}.offset-lg-3{margin-left:25%}.offset-lg-4{margin-left:33.33333%}.offset-lg-5{margin-left:41.66667%}.offset-lg-6{margin-left:50%}.offset-lg-7{margin-left:58.33333%}.offset-lg-8{margin-left:66.66667%}.offset-lg-9{margin-left:75%}.offset-lg-10{margin-left:83.33333%}.offset-lg-11{margin-left:91.66667%}.g-lg-0,.gx-lg-0{--scielo-gutter-x:0}.g-lg-0,.gy-lg-0{--scielo-gutter-y:0}.g-lg-1,.gx-lg-1{--scielo-gutter-x:0.25rem}.g-lg-1,.gy-lg-1{--scielo-gutter-y:0.25rem}.g-lg-2,.gx-lg-2{--scielo-gutter-x:0.5rem}.g-lg-2,.gy-lg-2{--scielo-gutter-y:0.5rem}.g-lg-3,.gx-lg-3{--scielo-gutter-x:1rem}.g-lg-3,.gy-lg-3{--scielo-gutter-y:1rem}.g-lg-4,.gx-lg-4{--scielo-gutter-x:1.5rem}.g-lg-4,.gy-lg-4{--scielo-gutter-y:1.5rem}.g-lg-5,.gx-lg-5{--scielo-gutter-x:3rem}.g-lg-5,.gy-lg-5{--scielo-gutter-y:3rem}}@media (min-width:1200px){.col-xl{flex:1 0 0%}.row-cols-xl-auto>*{flex:0 0 auto;width:auto}.row-cols-xl-1>*{flex:0 0 auto;width:100%}.row-cols-xl-2>*{flex:0 0 auto;width:50%}.row-cols-xl-3>*{flex:0 0 auto;width:33.33333%}.row-cols-xl-4>*{flex:0 0 auto;width:25%}.row-cols-xl-5>*{flex:0 0 auto;width:20%}.row-cols-xl-6>*{flex:0 0 auto;width:16.66667%}.col-xl-auto{flex:0 0 auto;width:auto}.col-xl-1{flex:0 0 auto;width:8.33333%}.col-xl-2{flex:0 0 auto;width:16.66667%}.col-xl-3{flex:0 0 auto;width:25%}.col-xl-4{flex:0 0 auto;width:33.33333%}.col-xl-5{flex:0 0 auto;width:41.66667%}.col-xl-6{flex:0 0 auto;width:50%}.col-xl-7{flex:0 0 auto;width:58.33333%}.col-xl-8{flex:0 0 auto;width:66.66667%}.col-xl-9{flex:0 0 auto;width:75%}.col-xl-10{flex:0 0 auto;width:83.33333%}.col-xl-11{flex:0 0 auto;width:91.66667%}.col-xl-12{flex:0 0 auto;width:100%}.offset-xl-0{margin-left:0}.offset-xl-1{margin-left:8.33333%}.offset-xl-2{margin-left:16.66667%}.offset-xl-3{margin-left:25%}.offset-xl-4{margin-left:33.33333%}.offset-xl-5{margin-left:41.66667%}.offset-xl-6{margin-left:50%}.offset-xl-7{margin-left:58.33333%}.offset-xl-8{margin-left:66.66667%}.offset-xl-9{margin-left:75%}.offset-xl-10{margin-left:83.33333%}.offset-xl-11{margin-left:91.66667%}.g-xl-0,.gx-xl-0{--scielo-gutter-x:0}.g-xl-0,.gy-xl-0{--scielo-gutter-y:0}.g-xl-1,.gx-xl-1{--scielo-gutter-x:0.25rem}.g-xl-1,.gy-xl-1{--scielo-gutter-y:0.25rem}.g-xl-2,.gx-xl-2{--scielo-gutter-x:0.5rem}.g-xl-2,.gy-xl-2{--scielo-gutter-y:0.5rem}.g-xl-3,.gx-xl-3{--scielo-gutter-x:1rem}.g-xl-3,.gy-xl-3{--scielo-gutter-y:1rem}.g-xl-4,.gx-xl-4{--scielo-gutter-x:1.5rem}.g-xl-4,.gy-xl-4{--scielo-gutter-y:1.5rem}.g-xl-5,.gx-xl-5{--scielo-gutter-x:3rem}.g-xl-5,.gy-xl-5{--scielo-gutter-y:3rem}}@media (min-width:1400px){.col-xxl{flex:1 0 0%}.row-cols-xxl-auto>*{flex:0 0 auto;width:auto}.row-cols-xxl-1>*{flex:0 0 auto;width:100%}.row-cols-xxl-2>*{flex:0 0 auto;width:50%}.row-cols-xxl-3>*{flex:0 0 auto;width:33.33333%}.row-cols-xxl-4>*{flex:0 0 auto;width:25%}.row-cols-xxl-5>*{flex:0 0 auto;width:20%}.row-cols-xxl-6>*{flex:0 0 auto;width:16.66667%}.col-xxl-auto{flex:0 0 auto;width:auto}.col-xxl-1{flex:0 0 auto;width:8.33333%}.col-xxl-2{flex:0 0 auto;width:16.66667%}.col-xxl-3{flex:0 0 auto;width:25%}.col-xxl-4{flex:0 0 auto;width:33.33333%}.col-xxl-5{flex:0 0 auto;width:41.66667%}.col-xxl-6{flex:0 0 auto;width:50%}.col-xxl-7{flex:0 0 auto;width:58.33333%}.col-xxl-8{flex:0 0 auto;width:66.66667%}.col-xxl-9{flex:0 0 auto;width:75%}.col-xxl-10{flex:0 0 auto;width:83.33333%}.col-xxl-11{flex:0 0 auto;width:91.66667%}.col-xxl-12{flex:0 0 auto;width:100%}.offset-xxl-0{margin-left:0}.offset-xxl-1{margin-left:8.33333%}.offset-xxl-2{margin-left:16.66667%}.offset-xxl-3{margin-left:25%}.offset-xxl-4{margin-left:33.33333%}.offset-xxl-5{margin-left:41.66667%}.offset-xxl-6{margin-left:50%}.offset-xxl-7{margin-left:58.33333%}.offset-xxl-8{margin-left:66.66667%}.offset-xxl-9{margin-left:75%}.offset-xxl-10{margin-left:83.33333%}.offset-xxl-11{margin-left:91.66667%}.g-xxl-0,.gx-xxl-0{--scielo-gutter-x:0}.g-xxl-0,.gy-xxl-0{--scielo-gutter-y:0}.g-xxl-1,.gx-xxl-1{--scielo-gutter-x:0.25rem}.g-xxl-1,.gy-xxl-1{--scielo-gutter-y:0.25rem}.g-xxl-2,.gx-xxl-2{--scielo-gutter-x:0.5rem}.g-xxl-2,.gy-xxl-2{--scielo-gutter-y:0.5rem}.g-xxl-3,.gx-xxl-3{--scielo-gutter-x:1rem}.g-xxl-3,.gy-xxl-3{--scielo-gutter-y:1rem}.g-xxl-4,.gx-xxl-4{--scielo-gutter-x:1.5rem}.g-xxl-4,.gy-xxl-4{--scielo-gutter-y:1.5rem}.g-xxl-5,.gx-xxl-5{--scielo-gutter-x:3rem}.g-xxl-5,.gy-xxl-5{--scielo-gutter-y:3rem}}.d-inline{display:inline!important}.d-inline-block{display:inline-block!important}.d-block{display:block!important}.d-grid{display:grid!important}.d-table{display:table!important}.d-table-row{display:table-row!important}.d-table-cell{display:table-cell!important}.d-flex{display:flex!important}.d-inline-flex{display:inline-flex!important}.d-none{display:none!important}.flex-fill{flex:1 1 auto!important}.flex-row{flex-direction:row!important}.flex-column{flex-direction:column!important}.flex-row-reverse{flex-direction:row-reverse!important}.flex-column-reverse{flex-direction:column-reverse!important}.flex-grow-0{flex-grow:0!important}.flex-grow-1{flex-grow:1!important}.flex-shrink-0{flex-shrink:0!important}.flex-shrink-1{flex-shrink:1!important}.flex-wrap{flex-wrap:wrap!important}.flex-nowrap{flex-wrap:nowrap!important}.flex-wrap-reverse{flex-wrap:wrap-reverse!important}.justify-content-start{justify-content:flex-start!important}.justify-content-end{justify-content:flex-end!important}.justify-content-center{justify-content:center!important}.justify-content-between{justify-content:space-between!important}.justify-content-around{justify-content:space-around!important}.justify-content-evenly{justify-content:space-evenly!important}.align-items-start{align-items:flex-start!important}.align-items-end{align-items:flex-end!important}.align-items-center{align-items:center!important}.align-items-baseline{align-items:baseline!important}.align-items-stretch{align-items:stretch!important}.align-content-start{align-content:flex-start!important}.align-content-end{align-content:flex-end!important}.align-content-center{align-content:center!important}.align-content-between{align-content:space-between!important}.align-content-around{align-content:space-around!important}.align-content-stretch{align-content:stretch!important}.align-self-auto{align-self:auto!important}.align-self-start{align-self:flex-start!important}.align-self-end{align-self:flex-end!important}.align-self-center{align-self:center!important}.align-self-baseline{align-self:baseline!important}.align-self-stretch{align-self:stretch!important}.order-first{order:-1!important}.order-0{order:0!important}.order-1{order:1!important}.order-2{order:2!important}.order-3{order:3!important}.order-4{order:4!important}.order-5{order:5!important}.order-last{order:6!important}.m-0{margin:0!important}.m-1{margin:.25rem!important}.m-2{margin:.5rem!important}.m-3{margin:1rem!important}.m-4{margin:1.5rem!important}.m-5{margin:3rem!important}.m-auto{margin:auto!important}.mx-0{margin-right:0!important;margin-left:0!important}.mx-1{margin-right:.25rem!important;margin-left:.25rem!important}.mx-2{margin-right:.5rem!important;margin-left:.5rem!important}.mx-3{margin-right:1rem!important;margin-left:1rem!important}.mx-4{margin-right:1.5rem!important;margin-left:1.5rem!important}.mx-5{margin-right:3rem!important;margin-left:3rem!important}.mx-auto{margin-right:auto!important;margin-left:auto!important}.my-0{margin-top:0!important;margin-bottom:0!important}.my-1{margin-top:.25rem!important;margin-bottom:.25rem!important}.my-2{margin-top:.5rem!important;margin-bottom:.5rem!important}.my-3{margin-top:1rem!important;margin-bottom:1rem!important}.my-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}.my-5{margin-top:3rem!important;margin-bottom:3rem!important}.my-auto{margin-top:auto!important;margin-bottom:auto!important}.mt-0{margin-top:0!important}.mt-1{margin-top:.25rem!important}.mt-2{margin-top:.5rem!important}.mt-3{margin-top:1rem!important}.mt-4{margin-top:1.5rem!important}.mt-5{margin-top:3rem!important}.mt-auto{margin-top:auto!important}.me-0{margin-right:0!important}.me-1{margin-right:.25rem!important}.me-2{margin-right:.5rem!important}.me-3{margin-right:1rem!important}.me-4{margin-right:1.5rem!important}.me-5{margin-right:3rem!important}.me-auto{margin-right:auto!important}.mb-0{margin-bottom:0!important}.mb-1{margin-bottom:.25rem!important}.mb-2{margin-bottom:.5rem!important}.mb-3{margin-bottom:1rem!important}.mb-4{margin-bottom:1.5rem!important}.mb-5{margin-bottom:3rem!important}.mb-auto{margin-bottom:auto!important}.ms-0{margin-left:0!important}.ms-1{margin-left:.25rem!important}.ms-2{margin-left:.5rem!important}.ms-3{margin-left:1rem!important}.ms-4{margin-left:1.5rem!important}.ms-5{margin-left:3rem!important}.ms-auto{margin-left:auto!important}.p-0{padding:0!important}.p-1{padding:.25rem!important}.p-2{padding:.5rem!important}.p-3{padding:1rem!important}.p-4{padding:1.5rem!important}.p-5{padding:3rem!important}.px-0{padding-right:0!important;padding-left:0!important}.px-1{padding-right:.25rem!important;padding-left:.25rem!important}.px-2{padding-right:.5rem!important;padding-left:.5rem!important}.px-3{padding-right:1rem!important;padding-left:1rem!important}.px-4{padding-right:1.5rem!important;padding-left:1.5rem!important}.px-5{padding-right:3rem!important;padding-left:3rem!important}.py-0{padding-top:0!important;padding-bottom:0!important}.py-1{padding-top:.25rem!important;padding-bottom:.25rem!important}.py-2{padding-top:.5rem!important;padding-bottom:.5rem!important}.py-3{padding-top:1rem!important;padding-bottom:1rem!important}.py-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}.py-5{padding-top:3rem!important;padding-bottom:3rem!important}.pt-0{padding-top:0!important}.pt-1{padding-top:.25rem!important}.pt-2{padding-top:.5rem!important}.pt-3{padding-top:1rem!important}.pt-4{padding-top:1.5rem!important}.pt-5{padding-top:3rem!important}.pe-0{padding-right:0!important}.pe-1{padding-right:.25rem!important}.pe-2{padding-right:.5rem!important}.pe-3{padding-right:1rem!important}.pe-4{padding-right:1.5rem!important}.pe-5{padding-right:3rem!important}.pb-0{padding-bottom:0!important}.pb-1{padding-bottom:.25rem!important}.pb-2{padding-bottom:.5rem!important}.pb-3{padding-bottom:1rem!important}.pb-4{padding-bottom:1.5rem!important}.pb-5{padding-bottom:3rem!important}.ps-0{padding-left:0!important}.ps-1{padding-left:.25rem!important}.ps-2{padding-left:.5rem!important}.ps-3{padding-left:1rem!important}.ps-4{padding-left:1.5rem!important}.ps-5{padding-left:3rem!important}@media (min-width:576px){.d-sm-inline{display:inline!important}.d-sm-inline-block{display:inline-block!important}.d-sm-block{display:block!important}.d-sm-grid{display:grid!important}.d-sm-table{display:table!important}.d-sm-table-row{display:table-row!important}.d-sm-table-cell{display:table-cell!important}.d-sm-flex{display:flex!important}.d-sm-inline-flex{display:inline-flex!important}.d-sm-none{display:none!important}.flex-sm-fill{flex:1 1 auto!important}.flex-sm-row{flex-direction:row!important}.flex-sm-column{flex-direction:column!important}.flex-sm-row-reverse{flex-direction:row-reverse!important}.flex-sm-column-reverse{flex-direction:column-reverse!important}.flex-sm-grow-0{flex-grow:0!important}.flex-sm-grow-1{flex-grow:1!important}.flex-sm-shrink-0{flex-shrink:0!important}.flex-sm-shrink-1{flex-shrink:1!important}.flex-sm-wrap{flex-wrap:wrap!important}.flex-sm-nowrap{flex-wrap:nowrap!important}.flex-sm-wrap-reverse{flex-wrap:wrap-reverse!important}.justify-content-sm-start{justify-content:flex-start!important}.justify-content-sm-end{justify-content:flex-end!important}.justify-content-sm-center{justify-content:center!important}.justify-content-sm-between{justify-content:space-between!important}.justify-content-sm-around{justify-content:space-around!important}.justify-content-sm-evenly{justify-content:space-evenly!important}.align-items-sm-start{align-items:flex-start!important}.align-items-sm-end{align-items:flex-end!important}.align-items-sm-center{align-items:center!important}.align-items-sm-baseline{align-items:baseline!important}.align-items-sm-stretch{align-items:stretch!important}.align-content-sm-start{align-content:flex-start!important}.align-content-sm-end{align-content:flex-end!important}.align-content-sm-center{align-content:center!important}.align-content-sm-between{align-content:space-between!important}.align-content-sm-around{align-content:space-around!important}.align-content-sm-stretch{align-content:stretch!important}.align-self-sm-auto{align-self:auto!important}.align-self-sm-start{align-self:flex-start!important}.align-self-sm-end{align-self:flex-end!important}.align-self-sm-center{align-self:center!important}.align-self-sm-baseline{align-self:baseline!important}.align-self-sm-stretch{align-self:stretch!important}.order-sm-first{order:-1!important}.order-sm-0{order:0!important}.order-sm-1{order:1!important}.order-sm-2{order:2!important}.order-sm-3{order:3!important}.order-sm-4{order:4!important}.order-sm-5{order:5!important}.order-sm-last{order:6!important}.m-sm-0{margin:0!important}.m-sm-1{margin:.25rem!important}.m-sm-2{margin:.5rem!important}.m-sm-3{margin:1rem!important}.m-sm-4{margin:1.5rem!important}.m-sm-5{margin:3rem!important}.m-sm-auto{margin:auto!important}.mx-sm-0{margin-right:0!important;margin-left:0!important}.mx-sm-1{margin-right:.25rem!important;margin-left:.25rem!important}.mx-sm-2{margin-right:.5rem!important;margin-left:.5rem!important}.mx-sm-3{margin-right:1rem!important;margin-left:1rem!important}.mx-sm-4{margin-right:1.5rem!important;margin-left:1.5rem!important}.mx-sm-5{margin-right:3rem!important;margin-left:3rem!important}.mx-sm-auto{margin-right:auto!important;margin-left:auto!important}.my-sm-0{margin-top:0!important;margin-bottom:0!important}.my-sm-1{margin-top:.25rem!important;margin-bottom:.25rem!important}.my-sm-2{margin-top:.5rem!important;margin-bottom:.5rem!important}.my-sm-3{margin-top:1rem!important;margin-bottom:1rem!important}.my-sm-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}.my-sm-5{margin-top:3rem!important;margin-bottom:3rem!important}.my-sm-auto{margin-top:auto!important;margin-bottom:auto!important}.mt-sm-0{margin-top:0!important}.mt-sm-1{margin-top:.25rem!important}.mt-sm-2{margin-top:.5rem!important}.mt-sm-3{margin-top:1rem!important}.mt-sm-4{margin-top:1.5rem!important}.mt-sm-5{margin-top:3rem!important}.mt-sm-auto{margin-top:auto!important}.me-sm-0{margin-right:0!important}.me-sm-1{margin-right:.25rem!important}.me-sm-2{margin-right:.5rem!important}.me-sm-3{margin-right:1rem!important}.me-sm-4{margin-right:1.5rem!important}.me-sm-5{margin-right:3rem!important}.me-sm-auto{margin-right:auto!important}.mb-sm-0{margin-bottom:0!important}.mb-sm-1{margin-bottom:.25rem!important}.mb-sm-2{margin-bottom:.5rem!important}.mb-sm-3{margin-bottom:1rem!important}.mb-sm-4{margin-bottom:1.5rem!important}.mb-sm-5{margin-bottom:3rem!important}.mb-sm-auto{margin-bottom:auto!important}.ms-sm-0{margin-left:0!important}.ms-sm-1{margin-left:.25rem!important}.ms-sm-2{margin-left:.5rem!important}.ms-sm-3{margin-left:1rem!important}.ms-sm-4{margin-left:1.5rem!important}.ms-sm-5{margin-left:3rem!important}.ms-sm-auto{margin-left:auto!important}.p-sm-0{padding:0!important}.p-sm-1{padding:.25rem!important}.p-sm-2{padding:.5rem!important}.p-sm-3{padding:1rem!important}.p-sm-4{padding:1.5rem!important}.p-sm-5{padding:3rem!important}.px-sm-0{padding-right:0!important;padding-left:0!important}.px-sm-1{padding-right:.25rem!important;padding-left:.25rem!important}.px-sm-2{padding-right:.5rem!important;padding-left:.5rem!important}.px-sm-3{padding-right:1rem!important;padding-left:1rem!important}.px-sm-4{padding-right:1.5rem!important;padding-left:1.5rem!important}.px-sm-5{padding-right:3rem!important;padding-left:3rem!important}.py-sm-0{padding-top:0!important;padding-bottom:0!important}.py-sm-1{padding-top:.25rem!important;padding-bottom:.25rem!important}.py-sm-2{padding-top:.5rem!important;padding-bottom:.5rem!important}.py-sm-3{padding-top:1rem!important;padding-bottom:1rem!important}.py-sm-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}.py-sm-5{padding-top:3rem!important;padding-bottom:3rem!important}.pt-sm-0{padding-top:0!important}.pt-sm-1{padding-top:.25rem!important}.pt-sm-2{padding-top:.5rem!important}.pt-sm-3{padding-top:1rem!important}.pt-sm-4{padding-top:1.5rem!important}.pt-sm-5{padding-top:3rem!important}.pe-sm-0{padding-right:0!important}.pe-sm-1{padding-right:.25rem!important}.pe-sm-2{padding-right:.5rem!important}.pe-sm-3{padding-right:1rem!important}.pe-sm-4{padding-right:1.5rem!important}.pe-sm-5{padding-right:3rem!important}.pb-sm-0{padding-bottom:0!important}.pb-sm-1{padding-bottom:.25rem!important}.pb-sm-2{padding-bottom:.5rem!important}.pb-sm-3{padding-bottom:1rem!important}.pb-sm-4{padding-bottom:1.5rem!important}.pb-sm-5{padding-bottom:3rem!important}.ps-sm-0{padding-left:0!important}.ps-sm-1{padding-left:.25rem!important}.ps-sm-2{padding-left:.5rem!important}.ps-sm-3{padding-left:1rem!important}.ps-sm-4{padding-left:1.5rem!important}.ps-sm-5{padding-left:3rem!important}}@media (min-width:768px){.d-md-inline{display:inline!important}.d-md-inline-block{display:inline-block!important}.d-md-block{display:block!important}.d-md-grid{display:grid!important}.d-md-table{display:table!important}.d-md-table-row{display:table-row!important}.d-md-table-cell{display:table-cell!important}.d-md-flex{display:flex!important}.d-md-inline-flex{display:inline-flex!important}.d-md-none{display:none!important}.flex-md-fill{flex:1 1 auto!important}.flex-md-row{flex-direction:row!important}.flex-md-column{flex-direction:column!important}.flex-md-row-reverse{flex-direction:row-reverse!important}.flex-md-column-reverse{flex-direction:column-reverse!important}.flex-md-grow-0{flex-grow:0!important}.flex-md-grow-1{flex-grow:1!important}.flex-md-shrink-0{flex-shrink:0!important}.flex-md-shrink-1{flex-shrink:1!important}.flex-md-wrap{flex-wrap:wrap!important}.flex-md-nowrap{flex-wrap:nowrap!important}.flex-md-wrap-reverse{flex-wrap:wrap-reverse!important}.justify-content-md-start{justify-content:flex-start!important}.justify-content-md-end{justify-content:flex-end!important}.justify-content-md-center{justify-content:center!important}.justify-content-md-between{justify-content:space-between!important}.justify-content-md-around{justify-content:space-around!important}.justify-content-md-evenly{justify-content:space-evenly!important}.align-items-md-start{align-items:flex-start!important}.align-items-md-end{align-items:flex-end!important}.align-items-md-center{align-items:center!important}.align-items-md-baseline{align-items:baseline!important}.align-items-md-stretch{align-items:stretch!important}.align-content-md-start{align-content:flex-start!important}.align-content-md-end{align-content:flex-end!important}.align-content-md-center{align-content:center!important}.align-content-md-between{align-content:space-between!important}.align-content-md-around{align-content:space-around!important}.align-content-md-stretch{align-content:stretch!important}.align-self-md-auto{align-self:auto!important}.align-self-md-start{align-self:flex-start!important}.align-self-md-end{align-self:flex-end!important}.align-self-md-center{align-self:center!important}.align-self-md-baseline{align-self:baseline!important}.align-self-md-stretch{align-self:stretch!important}.order-md-first{order:-1!important}.order-md-0{order:0!important}.order-md-1{order:1!important}.order-md-2{order:2!important}.order-md-3{order:3!important}.order-md-4{order:4!important}.order-md-5{order:5!important}.order-md-last{order:6!important}.m-md-0{margin:0!important}.m-md-1{margin:.25rem!important}.m-md-2{margin:.5rem!important}.m-md-3{margin:1rem!important}.m-md-4{margin:1.5rem!important}.m-md-5{margin:3rem!important}.m-md-auto{margin:auto!important}.mx-md-0{margin-right:0!important;margin-left:0!important}.mx-md-1{margin-right:.25rem!important;margin-left:.25rem!important}.mx-md-2{margin-right:.5rem!important;margin-left:.5rem!important}.mx-md-3{margin-right:1rem!important;margin-left:1rem!important}.mx-md-4{margin-right:1.5rem!important;margin-left:1.5rem!important}.mx-md-5{margin-right:3rem!important;margin-left:3rem!important}.mx-md-auto{margin-right:auto!important;margin-left:auto!important}.my-md-0{margin-top:0!important;margin-bottom:0!important}.my-md-1{margin-top:.25rem!important;margin-bottom:.25rem!important}.my-md-2{margin-top:.5rem!important;margin-bottom:.5rem!important}.my-md-3{margin-top:1rem!important;margin-bottom:1rem!important}.my-md-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}.my-md-5{margin-top:3rem!important;margin-bottom:3rem!important}.my-md-auto{margin-top:auto!important;margin-bottom:auto!important}.mt-md-0{margin-top:0!important}.mt-md-1{margin-top:.25rem!important}.mt-md-2{margin-top:.5rem!important}.mt-md-3{margin-top:1rem!important}.mt-md-4{margin-top:1.5rem!important}.mt-md-5{margin-top:3rem!important}.mt-md-auto{margin-top:auto!important}.me-md-0{margin-right:0!important}.me-md-1{margin-right:.25rem!important}.me-md-2{margin-right:.5rem!important}.me-md-3{margin-right:1rem!important}.me-md-4{margin-right:1.5rem!important}.me-md-5{margin-right:3rem!important}.me-md-auto{margin-right:auto!important}.mb-md-0{margin-bottom:0!important}.mb-md-1{margin-bottom:.25rem!important}.mb-md-2{margin-bottom:.5rem!important}.mb-md-3{margin-bottom:1rem!important}.mb-md-4{margin-bottom:1.5rem!important}.mb-md-5{margin-bottom:3rem!important}.mb-md-auto{margin-bottom:auto!important}.ms-md-0{margin-left:0!important}.ms-md-1{margin-left:.25rem!important}.ms-md-2{margin-left:.5rem!important}.ms-md-3{margin-left:1rem!important}.ms-md-4{margin-left:1.5rem!important}.ms-md-5{margin-left:3rem!important}.ms-md-auto{margin-left:auto!important}.p-md-0{padding:0!important}.p-md-1{padding:.25rem!important}.p-md-2{padding:.5rem!important}.p-md-3{padding:1rem!important}.p-md-4{padding:1.5rem!important}.p-md-5{padding:3rem!important}.px-md-0{padding-right:0!important;padding-left:0!important}.px-md-1{padding-right:.25rem!important;padding-left:.25rem!important}.px-md-2{padding-right:.5rem!important;padding-left:.5rem!important}.px-md-3{padding-right:1rem!important;padding-left:1rem!important}.px-md-4{padding-right:1.5rem!important;padding-left:1.5rem!important}.px-md-5{padding-right:3rem!important;padding-left:3rem!important}.py-md-0{padding-top:0!important;padding-bottom:0!important}.py-md-1{padding-top:.25rem!important;padding-bottom:.25rem!important}.py-md-2{padding-top:.5rem!important;padding-bottom:.5rem!important}.py-md-3{padding-top:1rem!important;padding-bottom:1rem!important}.py-md-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}.py-md-5{padding-top:3rem!important;padding-bottom:3rem!important}.pt-md-0{padding-top:0!important}.pt-md-1{padding-top:.25rem!important}.pt-md-2{padding-top:.5rem!important}.pt-md-3{padding-top:1rem!important}.pt-md-4{padding-top:1.5rem!important}.pt-md-5{padding-top:3rem!important}.pe-md-0{padding-right:0!important}.pe-md-1{padding-right:.25rem!important}.pe-md-2{padding-right:.5rem!important}.pe-md-3{padding-right:1rem!important}.pe-md-4{padding-right:1.5rem!important}.pe-md-5{padding-right:3rem!important}.pb-md-0{padding-bottom:0!important}.pb-md-1{padding-bottom:.25rem!important}.pb-md-2{padding-bottom:.5rem!important}.pb-md-3{padding-bottom:1rem!important}.pb-md-4{padding-bottom:1.5rem!important}.pb-md-5{padding-bottom:3rem!important}.ps-md-0{padding-left:0!important}.ps-md-1{padding-left:.25rem!important}.ps-md-2{padding-left:.5rem!important}.ps-md-3{padding-left:1rem!important}.ps-md-4{padding-left:1.5rem!important}.ps-md-5{padding-left:3rem!important}}@media (min-width:992px){.d-lg-inline{display:inline!important}.d-lg-inline-block{display:inline-block!important}.d-lg-block{display:block!important}.d-lg-grid{display:grid!important}.d-lg-table{display:table!important}.d-lg-table-row{display:table-row!important}.d-lg-table-cell{display:table-cell!important}.d-lg-flex{display:flex!important}.d-lg-inline-flex{display:inline-flex!important}.d-lg-none{display:none!important}.flex-lg-fill{flex:1 1 auto!important}.flex-lg-row{flex-direction:row!important}.flex-lg-column{flex-direction:column!important}.flex-lg-row-reverse{flex-direction:row-reverse!important}.flex-lg-column-reverse{flex-direction:column-reverse!important}.flex-lg-grow-0{flex-grow:0!important}.flex-lg-grow-1{flex-grow:1!important}.flex-lg-shrink-0{flex-shrink:0!important}.flex-lg-shrink-1{flex-shrink:1!important}.flex-lg-wrap{flex-wrap:wrap!important}.flex-lg-nowrap{flex-wrap:nowrap!important}.flex-lg-wrap-reverse{flex-wrap:wrap-reverse!important}.justify-content-lg-start{justify-content:flex-start!important}.justify-content-lg-end{justify-content:flex-end!important}.justify-content-lg-center{justify-content:center!important}.justify-content-lg-between{justify-content:space-between!important}.justify-content-lg-around{justify-content:space-around!important}.justify-content-lg-evenly{justify-content:space-evenly!important}.align-items-lg-start{align-items:flex-start!important}.align-items-lg-end{align-items:flex-end!important}.align-items-lg-center{align-items:center!important}.align-items-lg-baseline{align-items:baseline!important}.align-items-lg-stretch{align-items:stretch!important}.align-content-lg-start{align-content:flex-start!important}.align-content-lg-end{align-content:flex-end!important}.align-content-lg-center{align-content:center!important}.align-content-lg-between{align-content:space-between!important}.align-content-lg-around{align-content:space-around!important}.align-content-lg-stretch{align-content:stretch!important}.align-self-lg-auto{align-self:auto!important}.align-self-lg-start{align-self:flex-start!important}.align-self-lg-end{align-self:flex-end!important}.align-self-lg-center{align-self:center!important}.align-self-lg-baseline{align-self:baseline!important}.align-self-lg-stretch{align-self:stretch!important}.order-lg-first{order:-1!important}.order-lg-0{order:0!important}.order-lg-1{order:1!important}.order-lg-2{order:2!important}.order-lg-3{order:3!important}.order-lg-4{order:4!important}.order-lg-5{order:5!important}.order-lg-last{order:6!important}.m-lg-0{margin:0!important}.m-lg-1{margin:.25rem!important}.m-lg-2{margin:.5rem!important}.m-lg-3{margin:1rem!important}.m-lg-4{margin:1.5rem!important}.m-lg-5{margin:3rem!important}.m-lg-auto{margin:auto!important}.mx-lg-0{margin-right:0!important;margin-left:0!important}.mx-lg-1{margin-right:.25rem!important;margin-left:.25rem!important}.mx-lg-2{margin-right:.5rem!important;margin-left:.5rem!important}.mx-lg-3{margin-right:1rem!important;margin-left:1rem!important}.mx-lg-4{margin-right:1.5rem!important;margin-left:1.5rem!important}.mx-lg-5{margin-right:3rem!important;margin-left:3rem!important}.mx-lg-auto{margin-right:auto!important;margin-left:auto!important}.my-lg-0{margin-top:0!important;margin-bottom:0!important}.my-lg-1{margin-top:.25rem!important;margin-bottom:.25rem!important}.my-lg-2{margin-top:.5rem!important;margin-bottom:.5rem!important}.my-lg-3{margin-top:1rem!important;margin-bottom:1rem!important}.my-lg-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}.my-lg-5{margin-top:3rem!important;margin-bottom:3rem!important}.my-lg-auto{margin-top:auto!important;margin-bottom:auto!important}.mt-lg-0{margin-top:0!important}.mt-lg-1{margin-top:.25rem!important}.mt-lg-2{margin-top:.5rem!important}.mt-lg-3{margin-top:1rem!important}.mt-lg-4{margin-top:1.5rem!important}.mt-lg-5{margin-top:3rem!important}.mt-lg-auto{margin-top:auto!important}.me-lg-0{margin-right:0!important}.me-lg-1{margin-right:.25rem!important}.me-lg-2{margin-right:.5rem!important}.me-lg-3{margin-right:1rem!important}.me-lg-4{margin-right:1.5rem!important}.me-lg-5{margin-right:3rem!important}.me-lg-auto{margin-right:auto!important}.mb-lg-0{margin-bottom:0!important}.mb-lg-1{margin-bottom:.25rem!important}.mb-lg-2{margin-bottom:.5rem!important}.mb-lg-3{margin-bottom:1rem!important}.mb-lg-4{margin-bottom:1.5rem!important}.mb-lg-5{margin-bottom:3rem!important}.mb-lg-auto{margin-bottom:auto!important}.ms-lg-0{margin-left:0!important}.ms-lg-1{margin-left:.25rem!important}.ms-lg-2{margin-left:.5rem!important}.ms-lg-3{margin-left:1rem!important}.ms-lg-4{margin-left:1.5rem!important}.ms-lg-5{margin-left:3rem!important}.ms-lg-auto{margin-left:auto!important}.p-lg-0{padding:0!important}.p-lg-1{padding:.25rem!important}.p-lg-2{padding:.5rem!important}.p-lg-3{padding:1rem!important}.p-lg-4{padding:1.5rem!important}.p-lg-5{padding:3rem!important}.px-lg-0{padding-right:0!important;padding-left:0!important}.px-lg-1{padding-right:.25rem!important;padding-left:.25rem!important}.px-lg-2{padding-right:.5rem!important;padding-left:.5rem!important}.px-lg-3{padding-right:1rem!important;padding-left:1rem!important}.px-lg-4{padding-right:1.5rem!important;padding-left:1.5rem!important}.px-lg-5{padding-right:3rem!important;padding-left:3rem!important}.py-lg-0{padding-top:0!important;padding-bottom:0!important}.py-lg-1{padding-top:.25rem!important;padding-bottom:.25rem!important}.py-lg-2{padding-top:.5rem!important;padding-bottom:.5rem!important}.py-lg-3{padding-top:1rem!important;padding-bottom:1rem!important}.py-lg-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}.py-lg-5{padding-top:3rem!important;padding-bottom:3rem!important}.pt-lg-0{padding-top:0!important}.pt-lg-1{padding-top:.25rem!important}.pt-lg-2{padding-top:.5rem!important}.pt-lg-3{padding-top:1rem!important}.pt-lg-4{padding-top:1.5rem!important}.pt-lg-5{padding-top:3rem!important}.pe-lg-0{padding-right:0!important}.pe-lg-1{padding-right:.25rem!important}.pe-lg-2{padding-right:.5rem!important}.pe-lg-3{padding-right:1rem!important}.pe-lg-4{padding-right:1.5rem!important}.pe-lg-5{padding-right:3rem!important}.pb-lg-0{padding-bottom:0!important}.pb-lg-1{padding-bottom:.25rem!important}.pb-lg-2{padding-bottom:.5rem!important}.pb-lg-3{padding-bottom:1rem!important}.pb-lg-4{padding-bottom:1.5rem!important}.pb-lg-5{padding-bottom:3rem!important}.ps-lg-0{padding-left:0!important}.ps-lg-1{padding-left:.25rem!important}.ps-lg-2{padding-left:.5rem!important}.ps-lg-3{padding-left:1rem!important}.ps-lg-4{padding-left:1.5rem!important}.ps-lg-5{padding-left:3rem!important}}@media (min-width:1200px){.d-xl-inline{display:inline!important}.d-xl-inline-block{display:inline-block!important}.d-xl-block{display:block!important}.d-xl-grid{display:grid!important}.d-xl-table{display:table!important}.d-xl-table-row{display:table-row!important}.d-xl-table-cell{display:table-cell!important}.d-xl-flex{display:flex!important}.d-xl-inline-flex{display:inline-flex!important}.d-xl-none{display:none!important}.flex-xl-fill{flex:1 1 auto!important}.flex-xl-row{flex-direction:row!important}.flex-xl-column{flex-direction:column!important}.flex-xl-row-reverse{flex-direction:row-reverse!important}.flex-xl-column-reverse{flex-direction:column-reverse!important}.flex-xl-grow-0{flex-grow:0!important}.flex-xl-grow-1{flex-grow:1!important}.flex-xl-shrink-0{flex-shrink:0!important}.flex-xl-shrink-1{flex-shrink:1!important}.flex-xl-wrap{flex-wrap:wrap!important}.flex-xl-nowrap{flex-wrap:nowrap!important}.flex-xl-wrap-reverse{flex-wrap:wrap-reverse!important}.justify-content-xl-start{justify-content:flex-start!important}.justify-content-xl-end{justify-content:flex-end!important}.justify-content-xl-center{justify-content:center!important}.justify-content-xl-between{justify-content:space-between!important}.justify-content-xl-around{justify-content:space-around!important}.justify-content-xl-evenly{justify-content:space-evenly!important}.align-items-xl-start{align-items:flex-start!important}.align-items-xl-end{align-items:flex-end!important}.align-items-xl-center{align-items:center!important}.align-items-xl-baseline{align-items:baseline!important}.align-items-xl-stretch{align-items:stretch!important}.align-content-xl-start{align-content:flex-start!important}.align-content-xl-end{align-content:flex-end!important}.align-content-xl-center{align-content:center!important}.align-content-xl-between{align-content:space-between!important}.align-content-xl-around{align-content:space-around!important}.align-content-xl-stretch{align-content:stretch!important}.align-self-xl-auto{align-self:auto!important}.align-self-xl-start{align-self:flex-start!important}.align-self-xl-end{align-self:flex-end!important}.align-self-xl-center{align-self:center!important}.align-self-xl-baseline{align-self:baseline!important}.align-self-xl-stretch{align-self:stretch!important}.order-xl-first{order:-1!important}.order-xl-0{order:0!important}.order-xl-1{order:1!important}.order-xl-2{order:2!important}.order-xl-3{order:3!important}.order-xl-4{order:4!important}.order-xl-5{order:5!important}.order-xl-last{order:6!important}.m-xl-0{margin:0!important}.m-xl-1{margin:.25rem!important}.m-xl-2{margin:.5rem!important}.m-xl-3{margin:1rem!important}.m-xl-4{margin:1.5rem!important}.m-xl-5{margin:3rem!important}.m-xl-auto{margin:auto!important}.mx-xl-0{margin-right:0!important;margin-left:0!important}.mx-xl-1{margin-right:.25rem!important;margin-left:.25rem!important}.mx-xl-2{margin-right:.5rem!important;margin-left:.5rem!important}.mx-xl-3{margin-right:1rem!important;margin-left:1rem!important}.mx-xl-4{margin-right:1.5rem!important;margin-left:1.5rem!important}.mx-xl-5{margin-right:3rem!important;margin-left:3rem!important}.mx-xl-auto{margin-right:auto!important;margin-left:auto!important}.my-xl-0{margin-top:0!important;margin-bottom:0!important}.my-xl-1{margin-top:.25rem!important;margin-bottom:.25rem!important}.my-xl-2{margin-top:.5rem!important;margin-bottom:.5rem!important}.my-xl-3{margin-top:1rem!important;margin-bottom:1rem!important}.my-xl-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}.my-xl-5{margin-top:3rem!important;margin-bottom:3rem!important}.my-xl-auto{margin-top:auto!important;margin-bottom:auto!important}.mt-xl-0{margin-top:0!important}.mt-xl-1{margin-top:.25rem!important}.mt-xl-2{margin-top:.5rem!important}.mt-xl-3{margin-top:1rem!important}.mt-xl-4{margin-top:1.5rem!important}.mt-xl-5{margin-top:3rem!important}.mt-xl-auto{margin-top:auto!important}.me-xl-0{margin-right:0!important}.me-xl-1{margin-right:.25rem!important}.me-xl-2{margin-right:.5rem!important}.me-xl-3{margin-right:1rem!important}.me-xl-4{margin-right:1.5rem!important}.me-xl-5{margin-right:3rem!important}.me-xl-auto{margin-right:auto!important}.mb-xl-0{margin-bottom:0!important}.mb-xl-1{margin-bottom:.25rem!important}.mb-xl-2{margin-bottom:.5rem!important}.mb-xl-3{margin-bottom:1rem!important}.mb-xl-4{margin-bottom:1.5rem!important}.mb-xl-5{margin-bottom:3rem!important}.mb-xl-auto{margin-bottom:auto!important}.ms-xl-0{margin-left:0!important}.ms-xl-1{margin-left:.25rem!important}.ms-xl-2{margin-left:.5rem!important}.ms-xl-3{margin-left:1rem!important}.ms-xl-4{margin-left:1.5rem!important}.ms-xl-5{margin-left:3rem!important}.ms-xl-auto{margin-left:auto!important}.p-xl-0{padding:0!important}.p-xl-1{padding:.25rem!important}.p-xl-2{padding:.5rem!important}.p-xl-3{padding:1rem!important}.p-xl-4{padding:1.5rem!important}.p-xl-5{padding:3rem!important}.px-xl-0{padding-right:0!important;padding-left:0!important}.px-xl-1{padding-right:.25rem!important;padding-left:.25rem!important}.px-xl-2{padding-right:.5rem!important;padding-left:.5rem!important}.px-xl-3{padding-right:1rem!important;padding-left:1rem!important}.px-xl-4{padding-right:1.5rem!important;padding-left:1.5rem!important}.px-xl-5{padding-right:3rem!important;padding-left:3rem!important}.py-xl-0{padding-top:0!important;padding-bottom:0!important}.py-xl-1{padding-top:.25rem!important;padding-bottom:.25rem!important}.py-xl-2{padding-top:.5rem!important;padding-bottom:.5rem!important}.py-xl-3{padding-top:1rem!important;padding-bottom:1rem!important}.py-xl-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}.py-xl-5{padding-top:3rem!important;padding-bottom:3rem!important}.pt-xl-0{padding-top:0!important}.pt-xl-1{padding-top:.25rem!important}.pt-xl-2{padding-top:.5rem!important}.pt-xl-3{padding-top:1rem!important}.pt-xl-4{padding-top:1.5rem!important}.pt-xl-5{padding-top:3rem!important}.pe-xl-0{padding-right:0!important}.pe-xl-1{padding-right:.25rem!important}.pe-xl-2{padding-right:.5rem!important}.pe-xl-3{padding-right:1rem!important}.pe-xl-4{padding-right:1.5rem!important}.pe-xl-5{padding-right:3rem!important}.pb-xl-0{padding-bottom:0!important}.pb-xl-1{padding-bottom:.25rem!important}.pb-xl-2{padding-bottom:.5rem!important}.pb-xl-3{padding-bottom:1rem!important}.pb-xl-4{padding-bottom:1.5rem!important}.pb-xl-5{padding-bottom:3rem!important}.ps-xl-0{padding-left:0!important}.ps-xl-1{padding-left:.25rem!important}.ps-xl-2{padding-left:.5rem!important}.ps-xl-3{padding-left:1rem!important}.ps-xl-4{padding-left:1.5rem!important}.ps-xl-5{padding-left:3rem!important}}@media (min-width:1400px){.d-xxl-inline{display:inline!important}.d-xxl-inline-block{display:inline-block!important}.d-xxl-block{display:block!important}.d-xxl-grid{display:grid!important}.d-xxl-table{display:table!important}.d-xxl-table-row{display:table-row!important}.d-xxl-table-cell{display:table-cell!important}.d-xxl-flex{display:flex!important}.d-xxl-inline-flex{display:inline-flex!important}.d-xxl-none{display:none!important}.flex-xxl-fill{flex:1 1 auto!important}.flex-xxl-row{flex-direction:row!important}.flex-xxl-column{flex-direction:column!important}.flex-xxl-row-reverse{flex-direction:row-reverse!important}.flex-xxl-column-reverse{flex-direction:column-reverse!important}.flex-xxl-grow-0{flex-grow:0!important}.flex-xxl-grow-1{flex-grow:1!important}.flex-xxl-shrink-0{flex-shrink:0!important}.flex-xxl-shrink-1{flex-shrink:1!important}.flex-xxl-wrap{flex-wrap:wrap!important}.flex-xxl-nowrap{flex-wrap:nowrap!important}.flex-xxl-wrap-reverse{flex-wrap:wrap-reverse!important}.justify-content-xxl-start{justify-content:flex-start!important}.justify-content-xxl-end{justify-content:flex-end!important}.justify-content-xxl-center{justify-content:center!important}.justify-content-xxl-between{justify-content:space-between!important}.justify-content-xxl-around{justify-content:space-around!important}.justify-content-xxl-evenly{justify-content:space-evenly!important}.align-items-xxl-start{align-items:flex-start!important}.align-items-xxl-end{align-items:flex-end!important}.align-items-xxl-center{align-items:center!important}.align-items-xxl-baseline{align-items:baseline!important}.align-items-xxl-stretch{align-items:stretch!important}.align-content-xxl-start{align-content:flex-start!important}.align-content-xxl-end{align-content:flex-end!important}.align-content-xxl-center{align-content:center!important}.align-content-xxl-between{align-content:space-between!important}.align-content-xxl-around{align-content:space-around!important}.align-content-xxl-stretch{align-content:stretch!important}.align-self-xxl-auto{align-self:auto!important}.align-self-xxl-start{align-self:flex-start!important}.align-self-xxl-end{align-self:flex-end!important}.align-self-xxl-center{align-self:center!important}.align-self-xxl-baseline{align-self:baseline!important}.align-self-xxl-stretch{align-self:stretch!important}.order-xxl-first{order:-1!important}.order-xxl-0{order:0!important}.order-xxl-1{order:1!important}.order-xxl-2{order:2!important}.order-xxl-3{order:3!important}.order-xxl-4{order:4!important}.order-xxl-5{order:5!important}.order-xxl-last{order:6!important}.m-xxl-0{margin:0!important}.m-xxl-1{margin:.25rem!important}.m-xxl-2{margin:.5rem!important}.m-xxl-3{margin:1rem!important}.m-xxl-4{margin:1.5rem!important}.m-xxl-5{margin:3rem!important}.m-xxl-auto{margin:auto!important}.mx-xxl-0{margin-right:0!important;margin-left:0!important}.mx-xxl-1{margin-right:.25rem!important;margin-left:.25rem!important}.mx-xxl-2{margin-right:.5rem!important;margin-left:.5rem!important}.mx-xxl-3{margin-right:1rem!important;margin-left:1rem!important}.mx-xxl-4{margin-right:1.5rem!important;margin-left:1.5rem!important}.mx-xxl-5{margin-right:3rem!important;margin-left:3rem!important}.mx-xxl-auto{margin-right:auto!important;margin-left:auto!important}.my-xxl-0{margin-top:0!important;margin-bottom:0!important}.my-xxl-1{margin-top:.25rem!important;margin-bottom:.25rem!important}.my-xxl-2{margin-top:.5rem!important;margin-bottom:.5rem!important}.my-xxl-3{margin-top:1rem!important;margin-bottom:1rem!important}.my-xxl-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}.my-xxl-5{margin-top:3rem!important;margin-bottom:3rem!important}.my-xxl-auto{margin-top:auto!important;margin-bottom:auto!important}.mt-xxl-0{margin-top:0!important}.mt-xxl-1{margin-top:.25rem!important}.mt-xxl-2{margin-top:.5rem!important}.mt-xxl-3{margin-top:1rem!important}.mt-xxl-4{margin-top:1.5rem!important}.mt-xxl-5{margin-top:3rem!important}.mt-xxl-auto{margin-top:auto!important}.me-xxl-0{margin-right:0!important}.me-xxl-1{margin-right:.25rem!important}.me-xxl-2{margin-right:.5rem!important}.me-xxl-3{margin-right:1rem!important}.me-xxl-4{margin-right:1.5rem!important}.me-xxl-5{margin-right:3rem!important}.me-xxl-auto{margin-right:auto!important}.mb-xxl-0{margin-bottom:0!important}.mb-xxl-1{margin-bottom:.25rem!important}.mb-xxl-2{margin-bottom:.5rem!important}.mb-xxl-3{margin-bottom:1rem!important}.mb-xxl-4{margin-bottom:1.5rem!important}.mb-xxl-5{margin-bottom:3rem!important}.mb-xxl-auto{margin-bottom:auto!important}.ms-xxl-0{margin-left:0!important}.ms-xxl-1{margin-left:.25rem!important}.ms-xxl-2{margin-left:.5rem!important}.ms-xxl-3{margin-left:1rem!important}.ms-xxl-4{margin-left:1.5rem!important}.ms-xxl-5{margin-left:3rem!important}.ms-xxl-auto{margin-left:auto!important}.p-xxl-0{padding:0!important}.p-xxl-1{padding:.25rem!important}.p-xxl-2{padding:.5rem!important}.p-xxl-3{padding:1rem!important}.p-xxl-4{padding:1.5rem!important}.p-xxl-5{padding:3rem!important}.px-xxl-0{padding-right:0!important;padding-left:0!important}.px-xxl-1{padding-right:.25rem!important;padding-left:.25rem!important}.px-xxl-2{padding-right:.5rem!important;padding-left:.5rem!important}.px-xxl-3{padding-right:1rem!important;padding-left:1rem!important}.px-xxl-4{padding-right:1.5rem!important;padding-left:1.5rem!important}.px-xxl-5{padding-right:3rem!important;padding-left:3rem!important}.py-xxl-0{padding-top:0!important;padding-bottom:0!important}.py-xxl-1{padding-top:.25rem!important;padding-bottom:.25rem!important}.py-xxl-2{padding-top:.5rem!important;padding-bottom:.5rem!important}.py-xxl-3{padding-top:1rem!important;padding-bottom:1rem!important}.py-xxl-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}.py-xxl-5{padding-top:3rem!important;padding-bottom:3rem!important}.pt-xxl-0{padding-top:0!important}.pt-xxl-1{padding-top:.25rem!important}.pt-xxl-2{padding-top:.5rem!important}.pt-xxl-3{padding-top:1rem!important}.pt-xxl-4{padding-top:1.5rem!important}.pt-xxl-5{padding-top:3rem!important}.pe-xxl-0{padding-right:0!important}.pe-xxl-1{padding-right:.25rem!important}.pe-xxl-2{padding-right:.5rem!important}.pe-xxl-3{padding-right:1rem!important}.pe-xxl-4{padding-right:1.5rem!important}.pe-xxl-5{padding-right:3rem!important}.pb-xxl-0{padding-bottom:0!important}.pb-xxl-1{padding-bottom:.25rem!important}.pb-xxl-2{padding-bottom:.5rem!important}.pb-xxl-3{padding-bottom:1rem!important}.pb-xxl-4{padding-bottom:1.5rem!important}.pb-xxl-5{padding-bottom:3rem!important}.ps-xxl-0{padding-left:0!important}.ps-xxl-1{padding-left:.25rem!important}.ps-xxl-2{padding-left:.5rem!important}.ps-xxl-3{padding-left:1rem!important}.ps-xxl-4{padding-left:1.5rem!important}.ps-xxl-5{padding-left:3rem!important}}@media print{.d-print-inline{display:inline!important}.d-print-inline-block{display:inline-block!important}.d-print-block{display:block!important}.d-print-grid{display:grid!important}.d-print-table{display:table!important}.d-print-table-row{display:table-row!important}.d-print-table-cell{display:table-cell!important}.d-print-flex{display:flex!important}.d-print-inline-flex{display:inline-flex!important}.d-print-none{display:none!important}} +/*# sourceMappingURL=bootstrap-grid.css.map */ diff --git a/core/static/css/bootstrap-grid.css.map b/core/static/css/bootstrap-grid.css.map new file mode 100644 index 0000000..6bd4aaa --- /dev/null +++ b/core/static/css/bootstrap-grid.css.map @@ -0,0 +1 @@ +{"version":3,"sources":["bootstrap-grid.scss","../../../node_modules/bootstrap/scss/_containers.scss","../../../node_modules/bootstrap/scss/mixins/_container.scss","../../../node_modules/bootstrap/scss/mixins/_breakpoints.scss","../../common/scss/_vars/_grid.scss","../../../node_modules/bootstrap/scss/_grid.scss","../../../node_modules/bootstrap/scss/mixins/_grid.scss","../../../node_modules/bootstrap/scss/mixins/_utilities.scss","../../../node_modules/bootstrap/scss/_utilities.scss","settings/_variables.scss","../../../node_modules/bootstrap/scss/utilities/_api.scss"],"names":[],"mappings":"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uKQ,YDzKZ,WAEI,UC8KI,eDhLR,aAEI,UC8KS,iBDhLb,mBAEI,UC8KgB,uBDhLpB,uBAEI,gBC0LK,qBD5LT,qBAEI,gBC2LG,mBD7LP,wBAEI,gBC4LM,iBD9LV,yBAEI,gBC6LO,wBD/LX,wBAEI,gBC8LM,uBDhMV,wBAEI,gBC+LM,uBDjMV,mBAEI,YCsMK,qBDxMT,iBAEI,YCuMG,mBDzMP,oBAEI,YCwMM,iBD1MV,sBAEI,YCyMQ,mBD3MZ,qBAEI,YC0MO,kBD5MX,qBAEI,cCiNK,qBDnNT,mBAEI,cCkNG,mBDpNP,sBAEI,cCmNM,iBDrNV,uBAEI,cCoNO,wBDtNX,sBAEI,cCqNM,uBDvNV,uBAEI,cCsNO,kBDxNX,iBAEI,WC6NI,eD/NR,kBAEI,WC8NK,qBDhOT,gBAEI,WC+NG,mBDjOP,mBAEI,WCgOM,iBDlOV,qBAEI,WCiOQ,mBDnOZ,oBAEI,WCkOO,kBDpOX,aAEI,MCyOM,aD3OV,SAEI,MC0OC,YD5OL,SAEI,MC2OC,YD7OL,SAEI,MC4OC,YD9OL,SAEI,MC6OC,YD/OL,SAEI,MC8OC,YDhPL,SAEI,MC+OC,YDjPL,YAEI,MCgPI,YDlPR,KAEI,OEyML,YF3MC,KAEI,OE0ML,iBF5MC,KAEI,OE2ML,gBF7MC,KAEI,OEuMD,eFzMH,KAEI,OE6ML,iBF/MC,KAEI,OE8ML,eFhNC,QAEI,OC0P+B,eD5PnC,MAEI,aEyML,YFzMK,YEyML,YF3MC,MAEI,aE0ML,iBF1MK,YE0ML,iBF5MC,MAEI,aE2ML,gBF3MK,YE2ML,gBF7MC,MAEI,aEuMD,eFvMC,YEuMD,eFzMH,MAEI,aE6ML,iBF7MK,YE6ML,iBF/MC,MAEI,aE8ML,eF9MK,YE8ML,eFhNC,SAEI,aCgQ+B,eDhQ/B,YCgQ+B,eDlQnC,MAEI,WEyML,YFzMK,cEyML,YF3MC,MAEI,WE0ML,iBF1MK,cE0ML,iBF5MC,MAEI,WE2ML,gBF3MK,cE2ML,gBF7MC,MAEI,WEuMD,eFvMC,cEuMD,eFzMH,MAEI,WE6ML,iBF7MK,cE6ML,iBF/MC,MAEI,WE8ML,eF9MK,cE8ML,eFhNC,SAEI,WCsQ+B,eDtQ/B,cCsQ+B,eDxQnC,MAEI,WEyML,YF3MC,MAEI,WE0ML,iBF5MC,MAEI,WE2ML,gBF7MC,MAEI,WEuMD,eFzMH,MAEI,WE6ML,iBF/MC,MAEI,WE8ML,eFhNC,SAEI,WC4Q+B,eD9QnC,MAEI,aEyML,YF3MC,MAEI,aE0ML,iBF5MC,MAEI,aE2ML,gBF7MC,MAEI,aEuMD,eFzMH,MAEI,aE6ML,iBF/MC,MAEI,aE8ML,eFhNC,SAEI,aCkR+B,eDpRnC,MAEI,cEyML,YF3MC,MAEI,cE0ML,iBF5MC,MAEI,cE2ML,gBF7MC,MAEI,cEuMD,eFzMH,MAEI,cE6ML,iBF/MC,MAEI,cE8ML,eFhNC,SAEI,cCwR+B,eD1RnC,MAEI,YEyML,YF3MC,MAEI,YE0ML,iBF5MC,MAEI,YE2ML,gBF7MC,MAEI,YEuMD,eFzMH,MAEI,YE6ML,iBF/MC,MAEI,YE8ML,eFhNC,SAEI,YC8R+B,eDhSnC,KAEI,QEyML,YF3MC,KAEI,QE0ML,iBF5MC,KAEI,QE2ML,gBF7MC,KAEI,QEuMD,eFzMH,KAEI,QE6ML,iBF/MC,KAEI,QE8ML,eFhNC,MAEI,cEyML,YFzMK,aEyML,YF3MC,MAEI,cE0ML,iBF1MK,aE0ML,iBF5MC,MAEI,cE2ML,gBF3MK,aE2ML,gBF7MC,MAEI,cEuMD,eFvMC,aEuMD,eFzMH,MAEI,cE6ML,iBF7MK,aE6ML,iBF/MC,MAEI,cE8ML,eF9MK,aE8ML,eFhNC,MAEI,YEyML,YFzMK,eEyML,YF3MC,MAEI,YE0ML,iBF1MK,eE0ML,iBF5MC,MAEI,YE2ML,gBF3MK,eE2ML,gBF7MC,MAEI,YEuMD,eFvMC,eEuMD,eFzMH,MAEI,YE6ML,iBF7MK,eE6ML,iBF/MC,MAEI,YE8ML,eF9MK,eE8ML,eFhNC,MAEI,YEyML,YF3MC,MAEI,YE0ML,iBF5MC,MAEI,YE2ML,gBF7MC,MAEI,YEuMD,eFzMH,MAEI,YE6ML,iBF/MC,MAEI,YE8ML,eFhNC,MAEI,cEyML,YF3MC,MAEI,cE0ML,iBF5MC,MAEI,cE2ML,gBF7MC,MAEI,cEuMD,eFzMH,MAEI,cE6ML,iBF/MC,MAEI,cE8ML,eFhNC,MAEI,eEyML,YF3MC,MAEI,eE0ML,iBF5MC,MAEI,eE2ML,gBF7MC,MAEI,eEuMD,eFzMH,MAEI,eE6ML,iBF/MC,MAEI,eE8ML,eFhNC,MAEI,aEyML,YF3MC,MAEI,aE0ML,iBF5MC,MAEI,aE2ML,gBF7MC,MAEI,aEuMD,eFzMH,MAEI,aE6ML,iBF/MC,MAEI,aE8ML,eNlMD,yBIdE,aAEI,QCbI,iBDWR,mBAEI,QCbW,uBDWf,YAEI,QCbwB,gBDW5B,WAEI,QCb8B,eDWlC,YAEI,QCbmC,gBDWvC,gBAEI,QCbyC,oBDW7C,iBAEI,QCbmD,qBDWvD,WAEI,QCb8D,eDWlE,kBAEI,QCbmE,sBDWvE,WAEI,QCb+E,eDWnF,cAEI,KCgJW,EAAE,EAAE,eDlJnB,aAEI,eCsJI,cDxJR,gBAEI,eCsJQ,iBDxJZ,qBAEI,eCsJe,sBDxJnB,wBAEI,eCsJ2B,yBDxJ/B,gBAEI,UC6JM,YD/JV,gBAEI,UC8JM,YDhKV,kBAEI,YCsKQ,YDxKZ,kBAEI,YCuKQ,YDzKZ,cAEI,UC8KI,eDhLR,gBAEI,UC8KS,iBDhLb,sBAEI,UC8KgB,uBDhLpB,0BAEI,gBC0LK,qBD5LT,wBAEI,gBC2LG,mBD7LP,2BAEI,gBC4LM,iBD9LV,4BAEI,gBC6LO,wBD/LX,2BAEI,gBC8LM,uBDhMV,2BAEI,gBC+LM,uBDjMV,sBAEI,YCsMK,qBDxMT,oBAEI,YCuMG,mBDzMP,uBAEI,YCwMM,iBD1MV,yBAEI,YCyMQ,mBD3MZ,wBAEI,YC0MO,kBD5MX,wBAEI,cCiNK,qBDnNT,sBAEI,cCkNG,mBDpNP,yBAEI,cCmNM,iBDrNV,0BAEI,cCoNO,wBDtNX,yBAEI,cCqNM,uBDvNV,0BAEI,cCsNO,kBDxNX,oBAEI,WC6NI,eD/NR,qBAEI,WC8NK,qBDhOT,mBAEI,WC+NG,mBDjOP,sBAEI,WCgOM,iBDlOV,wBAEI,WCiOQ,mBDnOZ,uBAEI,WCkOO,kBDpOX,gBAEI,MCyOM,aD3OV,YAEI,MC0OC,YD5OL,YAEI,MC2OC,YD7OL,YAEI,MC4OC,YD9OL,YAEI,MC6OC,YD/OL,YAEI,MC8OC,YDhPL,YAEI,MC+OC,YDjPL,eAEI,MCgPI,YDlPR,QAEI,OEyML,YF3MC,QAEI,OE0ML,iBF5MC,QAEI,OE2ML,gBF7MC,QAEI,OEuMD,eFzMH,QAEI,OE6ML,iBF/MC,QAEI,OE8ML,eFhNC,WAEI,OC0P+B,eD5PnC,SAEI,aEyML,YFzMK,YEyML,YF3MC,SAEI,aE0ML,iBF1MK,YE0ML,iBF5MC,SAEI,aE2ML,gBF3MK,YE2ML,gBF7MC,SAEI,aEuMD,eFvMC,YEuMD,eFzMH,SAEI,aE6ML,iBF7MK,YE6ML,iBF/MC,SAEI,aE8ML,eF9MK,YE8ML,eFhNC,YAEI,aCgQ+B,eDhQ/B,YCgQ+B,eDlQnC,SAEI,WEyML,YFzMK,cEyML,YF3MC,SAEI,WE0ML,iBF1MK,cE0ML,iBF5MC,SAEI,WE2ML,gBF3MK,cE2ML,gBF7MC,SAEI,WEuMD,eFvMC,cEuMD,eFzMH,SAEI,WE6ML,iBF7MK,cE6ML,iBF/MC,SAEI,WE8ML,eF9MK,cE8ML,eFhNC,YAEI,WCsQ+B,eDtQ/B,cCsQ+B,eDxQnC,SAEI,WEyML,YF3MC,SAEI,WE0ML,iBF5MC,SAEI,WE2ML,gBF7MC,SAEI,WEuMD,eFzMH,SAEI,WE6ML,iBF/MC,SAEI,WE8ML,eFhNC,YAEI,WC4Q+B,eD9QnC,SAEI,aEyML,YF3MC,SAEI,aE0ML,iBF5MC,SAEI,aE2ML,gBF7MC,SAEI,aEuMD,eFzMH,SAEI,aE6ML,iBF/MC,SAEI,aE8ML,eFhNC,YAEI,aCkR+B,eDpRnC,SAEI,cEyML,YF3MC,SAEI,cE0ML,iBF5MC,SAEI,cE2ML,gBF7MC,SAEI,cEuMD,eFzMH,SAEI,cE6ML,iBF/MC,SAEI,cE8ML,eFhNC,YAEI,cCwR+B,eD1RnC,SAEI,YEyML,YF3MC,SAEI,YE0ML,iBF5MC,SAEI,YE2ML,gBF7MC,SAEI,YEuMD,eFzMH,SAEI,YE6ML,iBF/MC,SAEI,YE8ML,eFhNC,YAEI,YC8R+B,eDhSnC,QAEI,QEyML,YF3MC,QAEI,QE0ML,iBF5MC,QAEI,QE2ML,gBF7MC,QAEI,QEuMD,eFzMH,QAEI,QE6ML,iBF/MC,QAEI,QE8ML,eFhNC,SAEI,cEyML,YFzMK,aEyML,YF3MC,SAEI,cE0ML,iBF1MK,aE0ML,iBF5MC,SAEI,cE2ML,gBF3MK,aE2ML,gBF7MC,SAEI,cEuMD,eFvMC,aEuMD,eFzMH,SAEI,cE6ML,iBF7MK,aE6ML,iBF/MC,SAEI,cE8ML,eF9MK,aE8ML,eFhNC,SAEI,YEyML,YFzMK,eEyML,YF3MC,SAEI,YE0ML,iBF1MK,eE0ML,iBF5MC,SAEI,YE2ML,gBF3MK,eE2ML,gBF7MC,SAEI,YEuMD,eFvMC,eEuMD,eFzMH,SAEI,YE6ML,iBF7MK,eE6ML,iBF/MC,SAEI,YE8ML,eF9MK,eE8ML,eFhNC,SAEI,YEyML,YF3MC,SAEI,YE0ML,iBF5MC,SAEI,YE2ML,gBF7MC,SAEI,YEuMD,eFzMH,SAEI,YE6ML,iBF/MC,SAEI,YE8ML,eFhNC,SAEI,cEyML,YF3MC,SAEI,cE0ML,iBF5MC,SAEI,cE2ML,gBF7MC,SAEI,cEuMD,eFzMH,SAEI,cE6ML,iBF/MC,SAEI,cE8ML,eFhNC,SAEI,eEyML,YF3MC,SAEI,eE0ML,iBF5MC,SAEI,eE2ML,gBF7MC,SAEI,eEuMD,eFzMH,SAEI,eE6ML,iBF/MC,SAEI,eE8ML,eFhNC,SAEI,aEyML,YF3MC,SAEI,aE0ML,iBF5MC,SAEI,aE2ML,gBF7MC,SAEI,aEuMD,eFzMH,SAEI,aE6ML,iBF/MC,SAEI,aE8ML,gBNlMD,yBIdE,aAEI,QCbI,iBDWR,mBAEI,QCbW,uBDWf,YAEI,QCbwB,gBDW5B,WAEI,QCb8B,eDWlC,YAEI,QCbmC,gBDWvC,gBAEI,QCbyC,oBDW7C,iBAEI,QCbmD,qBDWvD,WAEI,QCb8D,eDWlE,kBAEI,QCbmE,sBDWvE,WAEI,QCb+E,eDWnF,cAEI,KCgJW,EAAE,EAAE,eDlJnB,aAEI,eCsJI,cDxJR,gBAEI,eCsJQ,iBDxJZ,qBAEI,eCsJe,sBDxJnB,wBAEI,eCsJ2B,yBDxJ/B,gBAEI,UC6JM,YD/JV,gBAEI,UC8JM,YDhKV,kBAEI,YCsKQ,YDxKZ,kBAEI,YCuKQ,YDzKZ,cAEI,UC8KI,eDhLR,gBAEI,UC8KS,iBDhLb,sBAEI,UC8KgB,uBDhLpB,0BAEI,gBC0LK,qBD5LT,wBAEI,gBC2LG,mBD7LP,2BAEI,gBC4LM,iBD9LV,4BAEI,gBC6LO,wBD/LX,2BAEI,gBC8LM,uBDhMV,2BAEI,gBC+LM,uBDjMV,sBAEI,YCsMK,qBDxMT,oBAEI,YCuMG,mBDzMP,uBAEI,YCwMM,iBD1MV,yBAEI,YCyMQ,mBD3MZ,wBAEI,YC0MO,kBD5MX,wBAEI,cCiNK,qBDnNT,sBAEI,cCkNG,mBDpNP,yBAEI,cCmNM,iBDrNV,0BAEI,cCoNO,wBDtNX,yBAEI,cCqNM,uBDvNV,0BAEI,cCsNO,kBDxNX,oBAEI,WC6NI,eD/NR,qBAEI,WC8NK,qBDhOT,mBAEI,WC+NG,mBDjOP,sBAEI,WCgOM,iBDlOV,wBAEI,WCiOQ,mBDnOZ,uBAEI,WCkOO,kBDpOX,gBAEI,MCyOM,aD3OV,YAEI,MC0OC,YD5OL,YAEI,MC2OC,YD7OL,YAEI,MC4OC,YD9OL,YAEI,MC6OC,YD/OL,YAEI,MC8OC,YDhPL,YAEI,MC+OC,YDjPL,eAEI,MCgPI,YDlPR,QAEI,OEyML,YF3MC,QAEI,OE0ML,iBF5MC,QAEI,OE2ML,gBF7MC,QAEI,OEuMD,eFzMH,QAEI,OE6ML,iBF/MC,QAEI,OE8ML,eFhNC,WAEI,OC0P+B,eD5PnC,SAEI,aEyML,YFzMK,YEyML,YF3MC,SAEI,aE0ML,iBF1MK,YE0ML,iBF5MC,SAEI,aE2ML,gBF3MK,YE2ML,gBF7MC,SAEI,aEuMD,eFvMC,YEuMD,eFzMH,SAEI,aE6ML,iBF7MK,YE6ML,iBF/MC,SAEI,aE8ML,eF9MK,YE8ML,eFhNC,YAEI,aCgQ+B,eDhQ/B,YCgQ+B,eDlQnC,SAEI,WEyML,YFzMK,cEyML,YF3MC,SAEI,WE0ML,iBF1MK,cE0ML,iBF5MC,SAEI,WE2ML,gBF3MK,cE2ML,gBF7MC,SAEI,WEuMD,eFvMC,cEuMD,eFzMH,SAEI,WE6ML,iBF7MK,cE6ML,iBF/MC,SAEI,WE8ML,eF9MK,cE8ML,eFhNC,YAEI,WCsQ+B,eDtQ/B,cCsQ+B,eDxQnC,SAEI,WEyML,YF3MC,SAEI,WE0ML,iBF5MC,SAEI,WE2ML,gBF7MC,SAEI,WEuMD,eFzMH,SAEI,WE6ML,iBF/MC,SAEI,WE8ML,eFhNC,YAEI,WC4Q+B,eD9QnC,SAEI,aEyML,YF3MC,SAEI,aE0ML,iBF5MC,SAEI,aE2ML,gBF7MC,SAEI,aEuMD,eFzMH,SAEI,aE6ML,iBF/MC,SAEI,aE8ML,eFhNC,YAEI,aCkR+B,eDpRnC,SAEI,cEyML,YF3MC,SAEI,cE0ML,iBF5MC,SAEI,cE2ML,gBF7MC,SAEI,cEuMD,eFzMH,SAEI,cE6ML,iBF/MC,SAEI,cE8ML,eFhNC,YAEI,cCwR+B,eD1RnC,SAEI,YEyML,YF3MC,SAEI,YE0ML,iBF5MC,SAEI,YE2ML,gBF7MC,SAEI,YEuMD,eFzMH,SAEI,YE6ML,iBF/MC,SAEI,YE8ML,eFhNC,YAEI,YC8R+B,eDhSnC,QAEI,QEyML,YF3MC,QAEI,QE0ML,iBF5MC,QAEI,QE2ML,gBF7MC,QAEI,QEuMD,eFzMH,QAEI,QE6ML,iBF/MC,QAEI,QE8ML,eFhNC,SAEI,cEyML,YFzMK,aEyML,YF3MC,SAEI,cE0ML,iBF1MK,aE0ML,iBF5MC,SAEI,cE2ML,gBF3MK,aE2ML,gBF7MC,SAEI,cEuMD,eFvMC,aEuMD,eFzMH,SAEI,cE6ML,iBF7MK,aE6ML,iBF/MC,SAEI,cE8ML,eF9MK,aE8ML,eFhNC,SAEI,YEyML,YFzMK,eEyML,YF3MC,SAEI,YE0ML,iBF1MK,eE0ML,iBF5MC,SAEI,YE2ML,gBF3MK,eE2ML,gBF7MC,SAEI,YEuMD,eFvMC,eEuMD,eFzMH,SAEI,YE6ML,iBF7MK,eE6ML,iBF/MC,SAEI,YE8ML,eF9MK,eE8ML,eFhNC,SAEI,YEyML,YF3MC,SAEI,YE0ML,iBF5MC,SAEI,YE2ML,gBF7MC,SAEI,YEuMD,eFzMH,SAEI,YE6ML,iBF/MC,SAEI,YE8ML,eFhNC,SAEI,cEyML,YF3MC,SAEI,cE0ML,iBF5MC,SAEI,cE2ML,gBF7MC,SAEI,cEuMD,eFzMH,SAEI,cE6ML,iBF/MC,SAEI,cE8ML,eFhNC,SAEI,eEyML,YF3MC,SAEI,eE0ML,iBF5MC,SAEI,eE2ML,gBF7MC,SAEI,eEuMD,eFzMH,SAEI,eE6ML,iBF/MC,SAEI,eE8ML,eFhNC,SAEI,aEyML,YF3MC,SAEI,aE0ML,iBF5MC,SAEI,aE2ML,gBF7MC,SAEI,aEuMD,eFzMH,SAEI,aE6ML,iBF/MC,SAEI,aE8ML,gBNlMD,yBIdE,aAEI,QCbI,iBDWR,mBAEI,QCbW,uBDWf,YAEI,QCbwB,gBDW5B,WAEI,QCb8B,eDWlC,YAEI,QCbmC,gBDWvC,gBAEI,QCbyC,oBDW7C,iBAEI,QCbmD,qBDWvD,WAEI,QCb8D,eDWlE,kBAEI,QCbmE,sBDWvE,WAEI,QCb+E,eDWnF,cAEI,KCgJW,EAAE,EAAE,eDlJnB,aAEI,eCsJI,cDxJR,gBAEI,eCsJQ,iBDxJZ,qBAEI,eCsJe,sBDxJnB,wBAEI,eCsJ2B,yBDxJ/B,gBAEI,UC6JM,YD/JV,gBAEI,UC8JM,YDhKV,kBAEI,YCsKQ,YDxKZ,kBAEI,YCuKQ,YDzKZ,cAEI,UC8KI,eDhLR,gBAEI,UC8KS,iBDhLb,sBAEI,UC8KgB,uBDhLpB,0BAEI,gBC0LK,qBD5LT,wBAEI,gBC2LG,mBD7LP,2BAEI,gBC4LM,iBD9LV,4BAEI,gBC6LO,wBD/LX,2BAEI,gBC8LM,uBDhMV,2BAEI,gBC+LM,uBDjMV,sBAEI,YCsMK,qBDxMT,oBAEI,YCuMG,mBDzMP,uBAEI,YCwMM,iBD1MV,yBAEI,YCyMQ,mBD3MZ,wBAEI,YC0MO,kBD5MX,wBAEI,cCiNK,qBDnNT,sBAEI,cCkNG,mBDpNP,yBAEI,cCmNM,iBDrNV,0BAEI,cCoNO,wBDtNX,yBAEI,cCqNM,uBDvNV,0BAEI,cCsNO,kBDxNX,oBAEI,WC6NI,eD/NR,qBAEI,WC8NK,qBDhOT,mBAEI,WC+NG,mBDjOP,sBAEI,WCgOM,iBDlOV,wBAEI,WCiOQ,mBDnOZ,uBAEI,WCkOO,kBDpOX,gBAEI,MCyOM,aD3OV,YAEI,MC0OC,YD5OL,YAEI,MC2OC,YD7OL,YAEI,MC4OC,YD9OL,YAEI,MC6OC,YD/OL,YAEI,MC8OC,YDhPL,YAEI,MC+OC,YDjPL,eAEI,MCgPI,YDlPR,QAEI,OEyML,YF3MC,QAEI,OE0ML,iBF5MC,QAEI,OE2ML,gBF7MC,QAEI,OEuMD,eFzMH,QAEI,OE6ML,iBF/MC,QAEI,OE8ML,eFhNC,WAEI,OC0P+B,eD5PnC,SAEI,aEyML,YFzMK,YEyML,YF3MC,SAEI,aE0ML,iBF1MK,YE0ML,iBF5MC,SAEI,aE2ML,gBF3MK,YE2ML,gBF7MC,SAEI,aEuMD,eFvMC,YEuMD,eFzMH,SAEI,aE6ML,iBF7MK,YE6ML,iBF/MC,SAEI,aE8ML,eF9MK,YE8ML,eFhNC,YAEI,aCgQ+B,eDhQ/B,YCgQ+B,eDlQnC,SAEI,WEyML,YFzMK,cEyML,YF3MC,SAEI,WE0ML,iBF1MK,cE0ML,iBF5MC,SAEI,WE2ML,gBF3MK,cE2ML,gBF7MC,SAEI,WEuMD,eFvMC,cEuMD,eFzMH,SAEI,WE6ML,iBF7MK,cE6ML,iBF/MC,SAEI,WE8ML,eF9MK,cE8ML,eFhNC,YAEI,WCsQ+B,eDtQ/B,cCsQ+B,eDxQnC,SAEI,WEyML,YF3MC,SAEI,WE0ML,iBF5MC,SAEI,WE2ML,gBF7MC,SAEI,WEuMD,eFzMH,SAEI,WE6ML,iBF/MC,SAEI,WE8ML,eFhNC,YAEI,WC4Q+B,eD9QnC,SAEI,aEyML,YF3MC,SAEI,aE0ML,iBF5MC,SAEI,aE2ML,gBF7MC,SAEI,aEuMD,eFzMH,SAEI,aE6ML,iBF/MC,SAEI,aE8ML,eFhNC,YAEI,aCkR+B,eDpRnC,SAEI,cEyML,YF3MC,SAEI,cE0ML,iBF5MC,SAEI,cE2ML,gBF7MC,SAEI,cEuMD,eFzMH,SAEI,cE6ML,iBF/MC,SAEI,cE8ML,eFhNC,YAEI,cCwR+B,eD1RnC,SAEI,YEyML,YF3MC,SAEI,YE0ML,iBF5MC,SAEI,YE2ML,gBF7MC,SAEI,YEuMD,eFzMH,SAEI,YE6ML,iBF/MC,SAEI,YE8ML,eFhNC,YAEI,YC8R+B,eDhSnC,QAEI,QEyML,YF3MC,QAEI,QE0ML,iBF5MC,QAEI,QE2ML,gBF7MC,QAEI,QEuMD,eFzMH,QAEI,QE6ML,iBF/MC,QAEI,QE8ML,eFhNC,SAEI,cEyML,YFzMK,aEyML,YF3MC,SAEI,cE0ML,iBF1MK,aE0ML,iBF5MC,SAEI,cE2ML,gBF3MK,aE2ML,gBF7MC,SAEI,cEuMD,eFvMC,aEuMD,eFzMH,SAEI,cE6ML,iBF7MK,aE6ML,iBF/MC,SAEI,cE8ML,eF9MK,aE8ML,eFhNC,SAEI,YEyML,YFzMK,eEyML,YF3MC,SAEI,YE0ML,iBF1MK,eE0ML,iBF5MC,SAEI,YE2ML,gBF3MK,eE2ML,gBF7MC,SAEI,YEuMD,eFvMC,eEuMD,eFzMH,SAEI,YE6ML,iBF7MK,eE6ML,iBF/MC,SAEI,YE8ML,eF9MK,eE8ML,eFhNC,SAEI,YEyML,YF3MC,SAEI,YE0ML,iBF5MC,SAEI,YE2ML,gBF7MC,SAEI,YEuMD,eFzMH,SAEI,YE6ML,iBF/MC,SAEI,YE8ML,eFhNC,SAEI,cEyML,YF3MC,SAEI,cE0ML,iBF5MC,SAEI,cE2ML,gBF7MC,SAEI,cEuMD,eFzMH,SAEI,cE6ML,iBF/MC,SAEI,cE8ML,eFhNC,SAEI,eEyML,YF3MC,SAEI,eE0ML,iBF5MC,SAEI,eE2ML,gBF7MC,SAEI,eEuMD,eFzMH,SAEI,eE6ML,iBF/MC,SAEI,eE8ML,eFhNC,SAEI,aEyML,YF3MC,SAEI,aE0ML,iBF5MC,SAEI,aE2ML,gBF7MC,SAEI,aEuMD,eFzMH,SAEI,aE6ML,iBF/MC,SAEI,aE8ML,gBNlMD,0BIdE,aAEI,QCbI,iBDWR,mBAEI,QCbW,uBDWf,YAEI,QCbwB,gBDW5B,WAEI,QCb8B,eDWlC,YAEI,QCbmC,gBDWvC,gBAEI,QCbyC,oBDW7C,iBAEI,QCbmD,qBDWvD,WAEI,QCb8D,eDWlE,kBAEI,QCbmE,sBDWvE,WAEI,QCb+E,eDWnF,cAEI,KCgJW,EAAE,EAAE,eDlJnB,aAEI,eCsJI,cDxJR,gBAEI,eCsJQ,iBDxJZ,qBAEI,eCsJe,sBDxJnB,wBAEI,eCsJ2B,yBDxJ/B,gBAEI,UC6JM,YD/JV,gBAEI,UC8JM,YDhKV,kBAEI,YCsKQ,YDxKZ,kBAEI,YCuKQ,YDzKZ,cAEI,UC8KI,eDhLR,gBAEI,UC8KS,iBDhLb,sBAEI,UC8KgB,uBDhLpB,0BAEI,gBC0LK,qBD5LT,wBAEI,gBC2LG,mBD7LP,2BAEI,gBC4LM,iBD9LV,4BAEI,gBC6LO,wBD/LX,2BAEI,gBC8LM,uBDhMV,2BAEI,gBC+LM,uBDjMV,sBAEI,YCsMK,qBDxMT,oBAEI,YCuMG,mBDzMP,uBAEI,YCwMM,iBD1MV,yBAEI,YCyMQ,mBD3MZ,wBAEI,YC0MO,kBD5MX,wBAEI,cCiNK,qBDnNT,sBAEI,cCkNG,mBDpNP,yBAEI,cCmNM,iBDrNV,0BAEI,cCoNO,wBDtNX,yBAEI,cCqNM,uBDvNV,0BAEI,cCsNO,kBDxNX,oBAEI,WC6NI,eD/NR,qBAEI,WC8NK,qBDhOT,mBAEI,WC+NG,mBDjOP,sBAEI,WCgOM,iBDlOV,wBAEI,WCiOQ,mBDnOZ,uBAEI,WCkOO,kBDpOX,gBAEI,MCyOM,aD3OV,YAEI,MC0OC,YD5OL,YAEI,MC2OC,YD7OL,YAEI,MC4OC,YD9OL,YAEI,MC6OC,YD/OL,YAEI,MC8OC,YDhPL,YAEI,MC+OC,YDjPL,eAEI,MCgPI,YDlPR,QAEI,OEyML,YF3MC,QAEI,OE0ML,iBF5MC,QAEI,OE2ML,gBF7MC,QAEI,OEuMD,eFzMH,QAEI,OE6ML,iBF/MC,QAEI,OE8ML,eFhNC,WAEI,OC0P+B,eD5PnC,SAEI,aEyML,YFzMK,YEyML,YF3MC,SAEI,aE0ML,iBF1MK,YE0ML,iBF5MC,SAEI,aE2ML,gBF3MK,YE2ML,gBF7MC,SAEI,aEuMD,eFvMC,YEuMD,eFzMH,SAEI,aE6ML,iBF7MK,YE6ML,iBF/MC,SAEI,aE8ML,eF9MK,YE8ML,eFhNC,YAEI,aCgQ+B,eDhQ/B,YCgQ+B,eDlQnC,SAEI,WEyML,YFzMK,cEyML,YF3MC,SAEI,WE0ML,iBF1MK,cE0ML,iBF5MC,SAEI,WE2ML,gBF3MK,cE2ML,gBF7MC,SAEI,WEuMD,eFvMC,cEuMD,eFzMH,SAEI,WE6ML,iBF7MK,cE6ML,iBF/MC,SAEI,WE8ML,eF9MK,cE8ML,eFhNC,YAEI,WCsQ+B,eDtQ/B,cCsQ+B,eDxQnC,SAEI,WEyML,YF3MC,SAEI,WE0ML,iBF5MC,SAEI,WE2ML,gBF7MC,SAEI,WEuMD,eFzMH,SAEI,WE6ML,iBF/MC,SAEI,WE8ML,eFhNC,YAEI,WC4Q+B,eD9QnC,SAEI,aEyML,YF3MC,SAEI,aE0ML,iBF5MC,SAEI,aE2ML,gBF7MC,SAEI,aEuMD,eFzMH,SAEI,aE6ML,iBF/MC,SAEI,aE8ML,eFhNC,YAEI,aCkR+B,eDpRnC,SAEI,cEyML,YF3MC,SAEI,cE0ML,iBF5MC,SAEI,cE2ML,gBF7MC,SAEI,cEuMD,eFzMH,SAEI,cE6ML,iBF/MC,SAEI,cE8ML,eFhNC,YAEI,cCwR+B,eD1RnC,SAEI,YEyML,YF3MC,SAEI,YE0ML,iBF5MC,SAEI,YE2ML,gBF7MC,SAEI,YEuMD,eFzMH,SAEI,YE6ML,iBF/MC,SAEI,YE8ML,eFhNC,YAEI,YC8R+B,eDhSnC,QAEI,QEyML,YF3MC,QAEI,QE0ML,iBF5MC,QAEI,QE2ML,gBF7MC,QAEI,QEuMD,eFzMH,QAEI,QE6ML,iBF/MC,QAEI,QE8ML,eFhNC,SAEI,cEyML,YFzMK,aEyML,YF3MC,SAEI,cE0ML,iBF1MK,aE0ML,iBF5MC,SAEI,cE2ML,gBF3MK,aE2ML,gBF7MC,SAEI,cEuMD,eFvMC,aEuMD,eFzMH,SAEI,cE6ML,iBF7MK,aE6ML,iBF/MC,SAEI,cE8ML,eF9MK,aE8ML,eFhNC,SAEI,YEyML,YFzMK,eEyML,YF3MC,SAEI,YE0ML,iBF1MK,eE0ML,iBF5MC,SAEI,YE2ML,gBF3MK,eE2ML,gBF7MC,SAEI,YEuMD,eFvMC,eEuMD,eFzMH,SAEI,YE6ML,iBF7MK,eE6ML,iBF/MC,SAEI,YE8ML,eF9MK,eE8ML,eFhNC,SAEI,YEyML,YF3MC,SAEI,YE0ML,iBF5MC,SAEI,YE2ML,gBF7MC,SAEI,YEuMD,eFzMH,SAEI,YE6ML,iBF/MC,SAEI,YE8ML,eFhNC,SAEI,cEyML,YF3MC,SAEI,cE0ML,iBF5MC,SAEI,cE2ML,gBF7MC,SAEI,cEuMD,eFzMH,SAEI,cE6ML,iBF/MC,SAEI,cE8ML,eFhNC,SAEI,eEyML,YF3MC,SAEI,eE0ML,iBF5MC,SAEI,eE2ML,gBF7MC,SAEI,eEuMD,eFzMH,SAEI,eE6ML,iBF/MC,SAEI,eE8ML,eFhNC,SAEI,aEyML,YF3MC,SAEI,aE0ML,iBF5MC,SAEI,aE2ML,gBF7MC,SAEI,aEuMD,eFzMH,SAEI,aE6ML,iBF/MC,SAEI,aE8ML,gBNlMD,0BIdE,cAEI,QCbI,iBDWR,oBAEI,QCbW,uBDWf,aAEI,QCbwB,gBDW5B,YAEI,QCb8B,eDWlC,aAEI,QCbmC,gBDWvC,iBAEI,QCbyC,oBDW7C,kBAEI,QCbmD,qBDWvD,YAEI,QCb8D,eDWlE,mBAEI,QCbmE,sBDWvE,YAEI,QCb+E,eDWnF,eAEI,KCgJW,EAAE,EAAE,eDlJnB,cAEI,eCsJI,cDxJR,iBAEI,eCsJQ,iBDxJZ,sBAEI,eCsJe,sBDxJnB,yBAEI,eCsJ2B,yBDxJ/B,iBAEI,UC6JM,YD/JV,iBAEI,UC8JM,YDhKV,mBAEI,YCsKQ,YDxKZ,mBAEI,YCuKQ,YDzKZ,eAEI,UC8KI,eDhLR,iBAEI,UC8KS,iBDhLb,uBAEI,UC8KgB,uBDhLpB,2BAEI,gBC0LK,qBD5LT,yBAEI,gBC2LG,mBD7LP,4BAEI,gBC4LM,iBD9LV,6BAEI,gBC6LO,wBD/LX,4BAEI,gBC8LM,uBDhMV,4BAEI,gBC+LM,uBDjMV,uBAEI,YCsMK,qBDxMT,qBAEI,YCuMG,mBDzMP,wBAEI,YCwMM,iBD1MV,0BAEI,YCyMQ,mBD3MZ,yBAEI,YC0MO,kBD5MX,yBAEI,cCiNK,qBDnNT,uBAEI,cCkNG,mBDpNP,0BAEI,cCmNM,iBDrNV,2BAEI,cCoNO,wBDtNX,0BAEI,cCqNM,uBDvNV,2BAEI,cCsNO,kBDxNX,qBAEI,WC6NI,eD/NR,sBAEI,WC8NK,qBDhOT,oBAEI,WC+NG,mBDjOP,uBAEI,WCgOM,iBDlOV,yBAEI,WCiOQ,mBDnOZ,wBAEI,WCkOO,kBDpOX,iBAEI,MCyOM,aD3OV,aAEI,MC0OC,YD5OL,aAEI,MC2OC,YD7OL,aAEI,MC4OC,YD9OL,aAEI,MC6OC,YD/OL,aAEI,MC8OC,YDhPL,aAEI,MC+OC,YDjPL,gBAEI,MCgPI,YDlPR,SAEI,OEyML,YF3MC,SAEI,OE0ML,iBF5MC,SAEI,OE2ML,gBF7MC,SAEI,OEuMD,eFzMH,SAEI,OE6ML,iBF/MC,SAEI,OE8ML,eFhNC,YAEI,OC0P+B,eD5PnC,UAEI,aEyML,YFzMK,YEyML,YF3MC,UAEI,aE0ML,iBF1MK,YE0ML,iBF5MC,UAEI,aE2ML,gBF3MK,YE2ML,gBF7MC,UAEI,aEuMD,eFvMC,YEuMD,eFzMH,UAEI,aE6ML,iBF7MK,YE6ML,iBF/MC,UAEI,aE8ML,eF9MK,YE8ML,eFhNC,aAEI,aCgQ+B,eDhQ/B,YCgQ+B,eDlQnC,UAEI,WEyML,YFzMK,cEyML,YF3MC,UAEI,WE0ML,iBF1MK,cE0ML,iBF5MC,UAEI,WE2ML,gBF3MK,cE2ML,gBF7MC,UAEI,WEuMD,eFvMC,cEuMD,eFzMH,UAEI,WE6ML,iBF7MK,cE6ML,iBF/MC,UAEI,WE8ML,eF9MK,cE8ML,eFhNC,aAEI,WCsQ+B,eDtQ/B,cCsQ+B,eDxQnC,UAEI,WEyML,YF3MC,UAEI,WE0ML,iBF5MC,UAEI,WE2ML,gBF7MC,UAEI,WEuMD,eFzMH,UAEI,WE6ML,iBF/MC,UAEI,WE8ML,eFhNC,aAEI,WC4Q+B,eD9QnC,UAEI,aEyML,YF3MC,UAEI,aE0ML,iBF5MC,UAEI,aE2ML,gBF7MC,UAEI,aEuMD,eFzMH,UAEI,aE6ML,iBF/MC,UAEI,aE8ML,eFhNC,aAEI,aCkR+B,eDpRnC,UAEI,cEyML,YF3MC,UAEI,cE0ML,iBF5MC,UAEI,cE2ML,gBF7MC,UAEI,cEuMD,eFzMH,UAEI,cE6ML,iBF/MC,UAEI,cE8ML,eFhNC,aAEI,cCwR+B,eD1RnC,UAEI,YEyML,YF3MC,UAEI,YE0ML,iBF5MC,UAEI,YE2ML,gBF7MC,UAEI,YEuMD,eFzMH,UAEI,YE6ML,iBF/MC,UAEI,YE8ML,eFhNC,aAEI,YC8R+B,eDhSnC,SAEI,QEyML,YF3MC,SAEI,QE0ML,iBF5MC,SAEI,QE2ML,gBF7MC,SAEI,QEuMD,eFzMH,SAEI,QE6ML,iBF/MC,SAEI,QE8ML,eFhNC,UAEI,cEyML,YFzMK,aEyML,YF3MC,UAEI,cE0ML,iBF1MK,aE0ML,iBF5MC,UAEI,cE2ML,gBF3MK,aE2ML,gBF7MC,UAEI,cEuMD,eFvMC,aEuMD,eFzMH,UAEI,cE6ML,iBF7MK,aE6ML,iBF/MC,UAEI,cE8ML,eF9MK,aE8ML,eFhNC,UAEI,YEyML,YFzMK,eEyML,YF3MC,UAEI,YE0ML,iBF1MK,eE0ML,iBF5MC,UAEI,YE2ML,gBF3MK,eE2ML,gBF7MC,UAEI,YEuMD,eFvMC,eEuMD,eFzMH,UAEI,YE6ML,iBF7MK,eE6ML,iBF/MC,UAEI,YE8ML,eF9MK,eE8ML,eFhNC,UAEI,YEyML,YF3MC,UAEI,YE0ML,iBF5MC,UAEI,YE2ML,gBF7MC,UAEI,YEuMD,eFzMH,UAEI,YE6ML,iBF/MC,UAEI,YE8ML,eFhNC,UAEI,cEyML,YF3MC,UAEI,cE0ML,iBF5MC,UAEI,cE2ML,gBF7MC,UAEI,cEuMD,eFzMH,UAEI,cE6ML,iBF/MC,UAEI,cE8ML,eFhNC,UAEI,eEyML,YF3MC,UAEI,eE0ML,iBF5MC,UAEI,eE2ML,gBF7MC,UAEI,eEuMD,eFzMH,UAEI,eE6ML,iBF/MC,UAEI,eE8ML,eFhNC,UAEI,aEyML,YF3MC,UAEI,aE0ML,iBF5MC,UAEI,aE2ML,gBF7MC,UAEI,aEuMD,eFzMH,UAEI,aE6ML,iBF/MC,UAEI,aE8ML,gBC3NL,aHWM,gBAEI,QCbI,iBDWR,sBAEI,QCbW,uBDWf,eAEI,QCbwB,gBDW5B,cAEI,QCb8B,eDWlC,eAEI,QCbmC,gBDWvC,mBAEI,QCbyC,oBDW7C,oBAEI,QCbmD,qBDWvD,cAEI,QCb8D,eDWlE,qBAEI,QCbmE,sBDWvE,cAEI,QCb+E","file":"bootstrap-grid.css","sourcesContent":["/*!\n * Bootstrap Grid v5.0.0-beta1 (https://getbootstrap.com/)\n * Copyright 2011-2020 The Bootstrap Authors\n * Copyright 2011-2020 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n */\n\n $include-column-box-sizing: true !default;\n\n @import \"scss/functions\";\n\n @import \"../../common/scss/itcssImports/vars\";\n @import \"../../common/scss/itcssImports/mixins\";\n @import \"./settings/variables\";\n \n @import \"scss/mixins/lists\";\n @import \"scss/mixins/breakpoints\";\n @import \"scss/mixins/container\";\n @import \"scss/mixins/grid\";\n @import \"scss/mixins/utilities\";\n \n @import \"scss/vendor/rfs\";\n \n @import \"scss/containers\";\n @import \"scss/grid\";\n \n @import \"scss/utilities\";\n // Only use the utilities we need\n // stylelint-disable-next-line scss/dollar-variable-default\n $utilities: map-get-multiple(\n $utilities,\n (\n \"display\",\n \"order\",\n \"flex\",\n \"flex-direction\",\n \"flex-grow\",\n \"flex-shrink\",\n \"flex-wrap\",\n \"justify-content\",\n \"align-items\",\n \"align-content\",\n \"align-self\",\n \"margin\",\n \"margin-x\",\n \"margin-y\",\n \"margin-top\",\n \"margin-end\",\n \"margin-bottom\",\n \"margin-start\",\n \"negative-margin\",\n \"negative-margin-x\",\n \"negative-margin-y\",\n \"negative-margin-top\",\n \"negative-margin-end\",\n \"negative-margin-bottom\",\n \"negative-margin-start\",\n \"padding\",\n \"padding-x\",\n \"padding-y\",\n \"padding-top\",\n \"padding-end\",\n \"padding-bottom\",\n \"padding-start\",\n )\n );\n \n @import \"scss/utilities/api\";\n ","// Container widths\n//\n// Set the container width, and override it for fixed navbars in media queries.\n\n@if $enable-grid-classes {\n // Single container class with breakpoint max-widths\n .container,\n // 100% wide container at all breakpoints\n .container-fluid {\n @include make-container();\n }\n\n // Responsive containers that are 100% wide until a breakpoint\n @each $breakpoint, $container-max-width in $container-max-widths {\n .container-#{$breakpoint} {\n @extend .container-fluid;\n }\n\n @include media-breakpoint-up($breakpoint, $grid-breakpoints) {\n %responsive-container-#{$breakpoint} {\n max-width: $container-max-width;\n }\n\n // Extend each breakpoint which is smaller or equal to the current breakpoint\n $extend-breakpoint: true;\n\n @each $name, $width in $grid-breakpoints {\n @if ($extend-breakpoint) {\n .container#{breakpoint-infix($name, $grid-breakpoints)} {\n @extend %responsive-container-#{$breakpoint};\n }\n\n // Once the current breakpoint is reached, stop extending\n @if ($breakpoint == $name) {\n $extend-breakpoint: false;\n }\n }\n }\n }\n }\n}\n","// Container mixins\n\n@mixin make-container($gutter: $container-padding-x) {\n width: 100%;\n padding-right: var(--#{$variable-prefix}gutter-x, #{$gutter});\n padding-left: var(--#{$variable-prefix}gutter-x, #{$gutter});\n margin-right: auto;\n margin-left: auto;\n}\n","// Breakpoint viewport sizes and media queries.\n//\n// Breakpoints are defined as a map of (name: minimum width), order from small to large:\n//\n// (xs: 0, sm: 576px, md: 768px, lg: 992px, xl: 1200px)\n//\n// The map defined in the `$grid-breakpoints` global variable is used as the `$breakpoints` argument by default.\n\n// Name of the next breakpoint, or null for the last breakpoint.\n//\n// >> breakpoint-next(sm)\n// md\n// >> breakpoint-next(sm, (xs: 0, sm: 576px, md: 768px, lg: 992px, xl: 1200px))\n// md\n// >> breakpoint-next(sm, $breakpoint-names: (xs sm md lg xl))\n// md\n@function breakpoint-next($name, $breakpoints: $grid-breakpoints, $breakpoint-names: map-keys($breakpoints)) {\n $n: index($breakpoint-names, $name);\n @if not $n {\n @error \"breakpoint `#{$name}` not found in `#{$breakpoints}`\";\n }\n @return if($n < length($breakpoint-names), nth($breakpoint-names, $n + 1), null);\n}\n\n// Minimum breakpoint width. Null for the smallest (first) breakpoint.\n//\n// >> breakpoint-min(sm, (xs: 0, sm: 576px, md: 768px, lg: 992px, xl: 1200px))\n// 576px\n@function breakpoint-min($name, $breakpoints: $grid-breakpoints) {\n $min: map-get($breakpoints, $name);\n @return if($min != 0, $min, null);\n}\n\n// Maximum breakpoint width.\n// The maximum value is reduced by 0.02px to work around the limitations of\n// `min-` and `max-` prefixes and viewports with fractional widths.\n// See https://www.w3.org/TR/mediaqueries-4/#mq-min-max\n// Uses 0.02px rather than 0.01px to work around a current rounding bug in Safari.\n// See https://bugs.webkit.org/show_bug.cgi?id=178261\n//\n// >> breakpoint-max(md, (xs: 0, sm: 576px, md: 768px, lg: 992px, xl: 1200px))\n// 767.98px\n@function breakpoint-max($name, $breakpoints: $grid-breakpoints) {\n $max: map-get($breakpoints, $name);\n @return if($max and $max > 0, $max - .02, null);\n}\n\n// Returns a blank string if smallest breakpoint, otherwise returns the name with a dash in front.\n// Useful for making responsive utilities.\n//\n// >> breakpoint-infix(xs, (xs: 0, sm: 576px, md: 768px, lg: 992px, xl: 1200px))\n// \"\" (Returns a blank string)\n// >> breakpoint-infix(sm, (xs: 0, sm: 576px, md: 768px, lg: 992px, xl: 1200px))\n// \"-sm\"\n@function breakpoint-infix($name, $breakpoints: $grid-breakpoints) {\n @return if(breakpoint-min($name, $breakpoints) == null, \"\", \"-#{$name}\");\n}\n\n// Media of at least the minimum breakpoint width. No query for the smallest breakpoint.\n// Makes the @content apply to the given breakpoint and wider.\n@mixin media-breakpoint-up($name, $breakpoints: $grid-breakpoints) {\n $min: breakpoint-min($name, $breakpoints);\n @if $min {\n @media (min-width: $min) {\n @content;\n }\n } @else {\n @content;\n }\n}\n\n// Media of at most the maximum breakpoint width. No query for the largest breakpoint.\n// Makes the @content apply to the given breakpoint and narrower.\n@mixin media-breakpoint-down($name, $breakpoints: $grid-breakpoints) {\n $max: breakpoint-max($name, $breakpoints);\n @if $max {\n @media (max-width: $max) {\n @content;\n }\n } @else {\n @content;\n }\n}\n\n// Media that spans multiple breakpoint widths.\n// Makes the @content apply between the min and max breakpoints\n@mixin media-breakpoint-between($lower, $upper, $breakpoints: $grid-breakpoints) {\n $min: breakpoint-min($lower, $breakpoints);\n $max: breakpoint-max($upper, $breakpoints);\n\n @if $min != null and $max != null {\n @media (min-width: $min) and (max-width: $max) {\n @content;\n }\n } @else if $max == null {\n @include media-breakpoint-up($lower, $breakpoints) {\n @content;\n }\n } @else if $min == null {\n @include media-breakpoint-down($upper, $breakpoints) {\n @content;\n }\n }\n}\n\n// Media between the breakpoint's minimum and maximum widths.\n// No minimum for the smallest breakpoint, and no maximum for the largest one.\n// Makes the @content apply only to the given breakpoint, not viewports any wider or narrower.\n@mixin media-breakpoint-only($name, $breakpoints: $grid-breakpoints) {\n $min: breakpoint-min($name, $breakpoints);\n $next: breakpoint-next($name, $breakpoints);\n $max: breakpoint-max($next);\n\n @if $min != null and $max != null {\n @media (min-width: $min) and (max-width: $max) {\n @content;\n }\n } @else if $max == null {\n @include media-breakpoint-up($name, $breakpoints) {\n @content;\n }\n } @else if $min == null {\n @include media-breakpoint-down($next, $breakpoints) {\n @content;\n }\n }\n}\n","$__grid__columns: 12;\n\n$__grid__container--xsmall: ($__breakpoints--small - 1px);\n$__grid__container--small: 100%;\n$__grid__container--medium: 720px;\n$__grid__container--large: 960px;\n$__grid__container--xlarge: 1140px;\n$__grid__container--xxlarge: 1320px;\n\n$__module__xsmall: 16px;\n$__module__small: 20px;\n$__module__medium: 24px;\n$__module__large: 32px;\n$__module__xlarge: 40px;\n\n$__module__xsmall--half: $__module__xsmall / 2;\n$__module__small--half: $__module__small / 2;\n$__module__medium--half: $__module__medium / 2;\n$__module__large--half: $__module__large / 2;\n$__module__xlarge--half: $__module__xlarge / 2;\n\n$__module__xsmall--quarter: $__module__xsmall / 4;\n$__module__small--quarter: $__module__small / 4;\n$__module__medium--quarter: $__module__medium / 4;\n$__module__large--quarter: $__module__large / 4;\n$__module__xlarge--quarter: $__module__xlarge / 4;\n\n$__grid__gutter--xsmall: $__module__xsmall;\n$__grid__gutter--small: $__module__small;\n$__grid__gutter--medium: $__module__medium;\n$__grid__gutter--large: $__module__large;\n$__grid__gutter--xlarge: $__module__xlarge;\n\n$__module__space--small: 12;\n$__module__space--default: 24;\n$__module__space--large: 48;","// Row\n//\n// Rows contain your columns.\n\n@if $enable-grid-classes {\n .row {\n @include make-row();\n\n > * {\n @include make-col-ready();\n }\n }\n}\n\n\n// Columns\n//\n// Common styles for small and large grid columns\n\n@if $enable-grid-classes {\n @include make-grid-columns();\n}\n","/// Grid system\n//\n// Generate semantic grid columns with these mixins.\n\n@mixin make-row($gutter: $grid-gutter-width) {\n --#{$variable-prefix}gutter-x: #{$gutter};\n --#{$variable-prefix}gutter-y: 0;\n display: flex;\n flex-wrap: wrap;\n margin-top: calc(var(--#{$variable-prefix}gutter-y) * -1); // stylelint-disable-line function-disallowed-list\n margin-right: calc(var(--#{$variable-prefix}gutter-x) / -2); // stylelint-disable-line function-disallowed-list\n margin-left: calc(var(--#{$variable-prefix}gutter-x) / -2); // stylelint-disable-line function-disallowed-list\n}\n\n@mixin make-col-ready($gutter: $grid-gutter-width) {\n // Add box sizing if only the grid is loaded\n box-sizing: if(variable-exists(include-column-box-sizing) and $include-column-box-sizing, border-box, null);\n // Prevent columns from becoming too narrow when at smaller grid tiers by\n // always setting `width: 100%;`. This works because we set the width\n // later on to override this initial width.\n flex-shrink: 0;\n width: 100%;\n max-width: 100%; // Prevent `.col-auto`, `.col` (& responsive variants) from breaking out the grid\n padding-right: calc(var(--#{$variable-prefix}gutter-x) / 2); // stylelint-disable-line function-disallowed-list\n padding-left: calc(var(--#{$variable-prefix}gutter-x) / 2); // stylelint-disable-line function-disallowed-list\n margin-top: var(--#{$variable-prefix}gutter-y);\n}\n\n@mixin make-col($size, $columns: $grid-columns) {\n flex: 0 0 auto;\n width: percentage($size / $columns);\n}\n\n@mixin make-col-auto() {\n flex: 0 0 auto;\n width: auto;\n}\n\n@mixin make-col-offset($size, $columns: $grid-columns) {\n $num: $size / $columns;\n margin-left: if($num == 0, 0, percentage($num));\n}\n\n// Row columns\n//\n// Specify on a parent element(e.g., .row) to force immediate children into NN\n// numberof columns. Supports wrapping to new lines, but does not do a Masonry\n// style grid.\n@mixin row-cols($count) {\n > * {\n flex: 0 0 auto;\n width: 100% / $count;\n }\n}\n\n// Framework grid generation\n//\n// Used only by Bootstrap to generate the correct number of grid classes given\n// any value of `$grid-columns`.\n\n@mixin make-grid-columns($columns: $grid-columns, $gutter: $grid-gutter-width, $breakpoints: $grid-breakpoints) {\n @each $breakpoint in map-keys($breakpoints) {\n $infix: breakpoint-infix($breakpoint, $breakpoints);\n\n @include media-breakpoint-up($breakpoint, $breakpoints) {\n // Provide basic `.col-{bp}` classes for equal-width flexbox columns\n .col#{$infix} {\n flex: 1 0 0%; // Flexbugs #4: https://github.com/philipwalton/flexbugs#flexbug-4\n }\n\n .row-cols#{$infix}-auto > * {\n @include make-col-auto();\n }\n\n @if $grid-row-columns > 0 {\n @for $i from 1 through $grid-row-columns {\n .row-cols#{$infix}-#{$i} {\n @include row-cols($i);\n }\n }\n }\n\n .col#{$infix}-auto {\n @include make-col-auto();\n }\n\n @if $columns > 0 {\n @for $i from 1 through $columns {\n .col#{$infix}-#{$i} {\n @include make-col($i, $columns);\n }\n }\n\n // `$columns - 1` because offsetting by the width of an entire row isn't possible\n @for $i from 0 through ($columns - 1) {\n @if not ($infix == \"\" and $i == 0) { // Avoid emitting useless .offset-0\n .offset#{$infix}-#{$i} {\n @include make-col-offset($i, $columns);\n }\n }\n }\n }\n\n // Gutters\n //\n // Make use of `.g-*`, `.gx-*` or `.gy-*` utilities to change spacing between the columns.\n @each $key, $value in $gutters {\n .g#{$infix}-#{$key},\n .gx#{$infix}-#{$key} {\n --#{$variable-prefix}gutter-x: #{$value};\n }\n\n .g#{$infix}-#{$key},\n .gy#{$infix}-#{$key} {\n --#{$variable-prefix}gutter-y: #{$value};\n }\n }\n }\n }\n}\n","// Utility generator\n// Used to generate utilities & print utilities\n@mixin generate-utility($utility, $infix, $is-rfs-media-query: false) {\n $values: map-get($utility, values);\n\n // If the values are a list or string, convert it into a map\n @if type-of($values) == \"string\" or type-of(nth($values, 1)) != \"list\" {\n $values: zip($values, $values);\n }\n\n @each $key, $value in $values {\n $properties: map-get($utility, property);\n\n // Multiple properties are possible, for example with vertical or horizontal margins or paddings\n @if type-of($properties) == \"string\" {\n $properties: append((), $properties);\n }\n\n // Use custom class if present\n $property-class: if(map-has-key($utility, class), map-get($utility, class), nth($properties, 1));\n $property-class: if($property-class == null, \"\", $property-class);\n\n // State params to generate pseudo-classes\n $state: if(map-has-key($utility, state), map-get($utility, state), ());\n\n $infix: if($property-class == \"\" and str-slice($infix, 1, 1) == \"-\", str-slice($infix, 2), $infix);\n\n // Don't prefix if value key is null (eg. with shadow class)\n $property-class-modifier: if($key, if($property-class == \"\" and $infix == \"\", \"\", \"-\") + $key, \"\");\n\n @if map-get($utility, rfs) {\n // Inside the media query\n @if $is-rfs-media-query {\n $val: rfs-value($value);\n\n // Do not render anything if fluid and non fluid values are the same\n $value: if($val == rfs-fluid-value($value), null, $val);\n }\n @else {\n $value: rfs-fluid-value($value);\n }\n }\n\n $is-rtl: map-get($utility, rtl);\n\n @if $value != null {\n @if $is-rtl == false {\n /* rtl:begin:remove */\n }\n .#{$property-class + $infix + $property-class-modifier} {\n @each $property in $properties {\n #{$property}: $value if($enable-important-utilities, !important, null);\n }\n }\n\n @each $pseudo in $state {\n .#{$property-class + $infix + $property-class-modifier}-#{$pseudo}:#{$pseudo} {\n @each $property in $properties {\n #{$property}: $value if($enable-important-utilities, !important, null);\n }\n }\n }\n @if $is-rtl == false {\n /* rtl:end:remove */\n }\n }\n }\n}\n","// stylelint-disable indentation\n\n// Utilities\n\n$utilities: () !default;\n// stylelint-disable-next-line scss/dollar-variable-default\n$utilities: map-merge(\n (\n // scss-docs-start utils-vertical-align\n \"align\": (\n property: vertical-align,\n class: align,\n values: baseline top middle bottom text-bottom text-top\n ),\n // scss-docs-end utils-vertical-align\n // scss-docs-start utils-float\n \"float\": (\n responsive: true,\n property: float,\n values: (\n start: left,\n end: right,\n none: none,\n )\n ),\n // scss-docs-end utils-float\n // scss-docs-start utils-overflow\n \"overflow\": (\n property: overflow,\n values: auto hidden visible scroll,\n ),\n // scss-docs-end utils-overflow\n // scss-docs-start utils-display\n \"display\": (\n responsive: true,\n print: true,\n property: display,\n class: d,\n values: inline inline-block block grid table table-row table-cell flex inline-flex none\n ),\n // scss-docs-end utils-display\n // scss-docs-start utils-shadow\n \"shadow\": (\n property: box-shadow,\n class: shadow,\n values: (\n null: $box-shadow,\n sm: $box-shadow-sm,\n lg: $box-shadow-lg,\n none: none,\n )\n ),\n // scss-docs-end utils-shadow\n // scss-docs-start utils-position\n \"position\": (\n property: position,\n values: static relative absolute fixed sticky\n ),\n \"top\": (\n property: top,\n values: $position-values\n ),\n \"bottom\": (\n property: bottom,\n values: $position-values\n ),\n \"start\": (\n property: left,\n class: start,\n values: $position-values\n ),\n \"end\": (\n property: right,\n class: end,\n values: $position-values\n ),\n \"translate-middle\": (\n property: transform,\n class: translate-middle,\n values: (\n null: translate(-50%, -50%),\n x: translateX(-50%),\n y: translateY(-50%),\n )\n ),\n // scss-docs-end utils-position\n // scss-docs-start utils-borders\n \"border\": (\n property: border,\n values: (\n null: $border-width solid $border-color,\n 0: 0,\n )\n ),\n \"border-top\": (\n property: border-top,\n values: (\n null: $border-width solid $border-color,\n 0: 0,\n )\n ),\n \"border-end\": (\n property: border-right,\n class: border-end,\n values: (\n null: $border-width solid $border-color,\n 0: 0,\n )\n ),\n \"border-bottom\": (\n property: border-bottom,\n values: (\n null: $border-width solid $border-color,\n 0: 0,\n )\n ),\n \"border-start\": (\n property: border-left,\n class: border-start,\n values: (\n null: $border-width solid $border-color,\n 0: 0,\n )\n ),\n \"border-color\": (\n property: border-color,\n class: border,\n values: map-merge($theme-colors, (\"white\": $white))\n ),\n \"border-width\": (\n property: border-width,\n class: border,\n values: $border-widths\n ),\n // scss-docs-end utils-borders\n // Sizing utilities\n // scss-docs-start utils-sizing\n \"width\": (\n property: width,\n class: w,\n values: (\n 25: 25%,\n 50: 50%,\n 75: 75%,\n 100: 100%,\n auto: auto\n )\n ),\n \"max-width\": (\n property: max-width,\n class: mw,\n values: (100: 100%)\n ),\n \"viewport-width\": (\n property: width,\n class: vw,\n values: (100: 100vw)\n ),\n \"min-viewport-width\": (\n property: min-width,\n class: min-vw,\n values: (100: 100vw)\n ),\n \"height\": (\n property: height,\n class: h,\n values: (\n 25: 25%,\n 50: 50%,\n 75: 75%,\n 100: 100%,\n auto: auto\n )\n ),\n \"max-height\": (\n property: max-height,\n class: mh,\n values: (100: 100%)\n ),\n \"viewport-height\": (\n property: height,\n class: vh,\n values: (100: 100vh)\n ),\n \"min-viewport-height\": (\n property: min-height,\n class: min-vh,\n values: (100: 100vh)\n ),\n // scss-docs-end utils-sizing\n // Flex utilities\n // scss-docs-start utils-flex\n \"flex\": (\n responsive: true,\n property: flex,\n values: (fill: 1 1 auto)\n ),\n \"flex-direction\": (\n responsive: true,\n property: flex-direction,\n class: flex,\n values: row column row-reverse column-reverse\n ),\n \"flex-grow\": (\n responsive: true,\n property: flex-grow,\n class: flex,\n values: (\n grow-0: 0,\n grow-1: 1,\n )\n ),\n \"flex-shrink\": (\n responsive: true,\n property: flex-shrink,\n class: flex,\n values: (\n shrink-0: 0,\n shrink-1: 1,\n )\n ),\n \"flex-wrap\": (\n responsive: true,\n property: flex-wrap,\n class: flex,\n values: wrap nowrap wrap-reverse\n ),\n \"gap\": (\n responsive: true,\n property: gap,\n class: gap,\n values: $spacers\n ),\n \"justify-content\": (\n responsive: true,\n property: justify-content,\n values: (\n start: flex-start,\n end: flex-end,\n center: center,\n between: space-between,\n around: space-around,\n evenly: space-evenly,\n )\n ),\n \"align-items\": (\n responsive: true,\n property: align-items,\n values: (\n start: flex-start,\n end: flex-end,\n center: center,\n baseline: baseline,\n stretch: stretch,\n )\n ),\n \"align-content\": (\n responsive: true,\n property: align-content,\n values: (\n start: flex-start,\n end: flex-end,\n center: center,\n between: space-between,\n around: space-around,\n stretch: stretch,\n )\n ),\n \"align-self\": (\n responsive: true,\n property: align-self,\n values: (\n auto: auto,\n start: flex-start,\n end: flex-end,\n center: center,\n baseline: baseline,\n stretch: stretch,\n )\n ),\n \"order\": (\n responsive: true,\n property: order,\n values: (\n first: -1,\n 0: 0,\n 1: 1,\n 2: 2,\n 3: 3,\n 4: 4,\n 5: 5,\n last: 6,\n ),\n ),\n // scss-docs-end utils-flex\n // Margin utilities\n // scss-docs-start utils-spacing\n \"margin\": (\n responsive: true,\n property: margin,\n class: m,\n values: map-merge($spacers, (auto: auto))\n ),\n \"margin-x\": (\n responsive: true,\n property: margin-right margin-left,\n class: mx,\n values: map-merge($spacers, (auto: auto))\n ),\n \"margin-y\": (\n responsive: true,\n property: margin-top margin-bottom,\n class: my,\n values: map-merge($spacers, (auto: auto))\n ),\n \"margin-top\": (\n responsive: true,\n property: margin-top,\n class: mt,\n values: map-merge($spacers, (auto: auto))\n ),\n \"margin-end\": (\n responsive: true,\n property: margin-right,\n class: me,\n values: map-merge($spacers, (auto: auto))\n ),\n \"margin-bottom\": (\n responsive: true,\n property: margin-bottom,\n class: mb,\n values: map-merge($spacers, (auto: auto))\n ),\n \"margin-start\": (\n responsive: true,\n property: margin-left,\n class: ms,\n values: map-merge($spacers, (auto: auto))\n ),\n // Negative margin utilities\n \"negative-margin\": (\n responsive: true,\n property: margin,\n class: m,\n values: $negative-spacers\n ),\n \"negative-margin-x\": (\n responsive: true,\n property: margin-right margin-left,\n class: mx,\n values: $negative-spacers\n ),\n \"negative-margin-y\": (\n responsive: true,\n property: margin-top margin-bottom,\n class: my,\n values: $negative-spacers\n ),\n \"negative-margin-top\": (\n responsive: true,\n property: margin-top,\n class: mt,\n values: $negative-spacers\n ),\n \"negative-margin-end\": (\n responsive: true,\n property: margin-right,\n class: me,\n values: $negative-spacers\n ),\n \"negative-margin-bottom\": (\n responsive: true,\n property: margin-bottom,\n class: mb,\n values: $negative-spacers\n ),\n \"negative-margin-start\": (\n responsive: true,\n property: margin-left,\n class: ms,\n values: $negative-spacers\n ),\n // Padding utilities\n \"padding\": (\n responsive: true,\n property: padding,\n class: p,\n values: $spacers\n ),\n \"padding-x\": (\n responsive: true,\n property: padding-right padding-left,\n class: px,\n values: $spacers\n ),\n \"padding-y\": (\n responsive: true,\n property: padding-top padding-bottom,\n class: py,\n values: $spacers\n ),\n \"padding-top\": (\n responsive: true,\n property: padding-top,\n class: pt,\n values: $spacers\n ),\n \"padding-end\": (\n responsive: true,\n property: padding-right,\n class: pe,\n values: $spacers\n ),\n \"padding-bottom\": (\n responsive: true,\n property: padding-bottom,\n class: pb,\n values: $spacers\n ),\n \"padding-start\": (\n responsive: true,\n property: padding-left,\n class: ps,\n values: $spacers\n ),\n // scss-docs-end utils-spacing\n // Text\n // scss-docs-start utils-text\n \"font-family\": (\n property: font-family,\n class: font,\n values: (monospace: var(--#{$variable-prefix}font-monospace))\n ),\n \"font-size\": (\n rfs: true,\n property: font-size,\n class: fs,\n values: $font-sizes\n ),\n \"font-style\": (\n property: font-style,\n class: fst,\n values: italic normal\n ),\n \"font-weight\": (\n property: font-weight,\n class: fw,\n values: (\n light: $font-weight-light,\n lighter: $font-weight-lighter,\n normal: $font-weight-normal,\n bold: $font-weight-bold,\n bolder: $font-weight-bolder\n )\n ),\n \"line-height\": (\n property: line-height,\n class: lh,\n values: (\n 1: 1,\n sm: $line-height-sm,\n base: $line-height-base,\n lg: $line-height-lg,\n )\n ),\n \"text-align\": (\n responsive: true,\n property: text-align,\n class: text,\n values: (\n start: left,\n end: right,\n center: center,\n )\n ),\n \"text-decoration\": (\n property: text-decoration,\n values: none underline line-through\n ),\n \"text-transform\": (\n property: text-transform,\n class: text,\n values: lowercase uppercase capitalize\n ),\n \"white-space\": (\n property: white-space,\n class: text,\n values: (\n wrap: normal,\n nowrap: nowrap,\n )\n ),\n \"word-wrap\": (\n property: word-wrap word-break,\n class: text,\n values: (break: break-word),\n rtl: false\n ),\n // scss-docs-end utils-text\n // scss-docs-start utils-color\n \"color\": (\n property: color,\n class: text,\n values: map-merge(\n $theme-colors,\n (\n \"white\": $white,\n \"body\": $body-color,\n \"muted\": $text-muted,\n \"black-50\": rgba($black, .5),\n \"white-50\": rgba($white, .5),\n \"reset\": inherit,\n )\n )\n ),\n // scss-docs-end utils-color\n // scss-docs-start utils-bg-color\n \"background-color\": (\n property: background-color,\n class: bg,\n values: map-merge(\n $theme-colors,\n (\n \"body\": $body-bg,\n \"white\": $white,\n \"transparent\": transparent\n )\n )\n ),\n // scss-docs-end utils-bg-color\n \"gradient\": (\n property: background-image,\n class: bg,\n values: (gradient: var(--#{$variable-prefix}gradient))\n ),\n // scss-docs-start utils-interaction\n \"user-select\": (\n property: user-select,\n values: all auto none\n ),\n \"pointer-events\": (\n property: pointer-events,\n class: pe,\n values: none auto,\n ),\n // scss-docs-end utils-interaction\n // scss-docs-start utils-border-radius\n \"rounded\": (\n property: border-radius,\n class: rounded,\n values: (\n null: $border-radius,\n 0: 0,\n 1: $border-radius-sm,\n 2: $border-radius,\n 3: $border-radius-lg,\n circle: 50%,\n pill: $border-radius-pill\n )\n ),\n \"rounded-top\": (\n property: border-top-left-radius border-top-right-radius,\n class: rounded-top,\n values: (null: $border-radius)\n ),\n \"rounded-end\": (\n property: border-top-right-radius border-bottom-right-radius,\n class: rounded-end,\n values: (null: $border-radius)\n ),\n \"rounded-bottom\": (\n property: border-bottom-right-radius border-bottom-left-radius,\n class: rounded-bottom,\n values: (null: $border-radius)\n ),\n \"rounded-start\": (\n property: border-bottom-left-radius border-top-left-radius,\n class: rounded-start,\n values: (null: $border-radius)\n ),\n // scss-docs-end utils-border-radius\n // scss-docs-start utils-visibility\n \"visibility\": (\n property: visibility,\n class: null,\n values: (\n visible: visible,\n invisible: hidden,\n )\n )\n // scss-docs-end utils-visibility\n ),\n $utilities\n);\n","// Variables\n//\n// Variables should follow the `$component-state-property-size` formula for\n// consistent naming. Ex: $nav-link-disabled-color and $modal-content-box-shadow-xs.\n\n// Color system\n\n// scss-docs-start gray-color-variables\n$white: $__white !default;\n$gray-100: $__bg__gray--1 !default;\n$gray-200: $__bg__gray--2 !default;\n$gray-300: rgba($__black,.3) !default;\n$gray-400: rgba($__black,.4) !default;\n$gray-500: rgba($__black,.5) !default;\n$gray-600: rgba($__black,.6) !default;\n$gray-700: rgba($__black,.7) !default;\n$gray-800: $__bg__white--2 !default;\n$gray-900: $__bg__white--1 !default;\n$black: $__black !default;\n// scss-docs-end gray-color-variables\n\n// fusv-disable\n// scss-docs-start gray-colors-map\n$grays: (\n \"100\": $gray-100,\n \"200\": $gray-200,\n \"300\": $gray-300,\n \"400\": $gray-400,\n \"500\": $gray-500,\n \"600\": $gray-600,\n \"700\": $gray-700,\n \"800\": $gray-800,\n \"900\": $gray-900\n) !default;\n// scss-docs-end gray-colors-map\n// fusv-enable\n\n// scss-docs-start color-variables\n$blue: $__interaction--light !default;\n$indigo: $__support__purple--light !default;\n$purple: $__support__purple--dark !default;\n$pink: #C32AA3 !default;\n$red: $__negative--light !default;\n$orange: $__negative--dark !default;\n$yellow: $__warning--light !default;\n$green: $__positive--light !default;\n$teal: $__support__green--light !default;\n$cyan: $__info--light !default;\n// scss-docs-end color-variables\n\n// scss-docs-start colors-map\n$colors: (\n \"blue\": $blue,\n \"indigo\": $indigo,\n \"purple\": $purple,\n \"pink\": $pink,\n \"red\": $red,\n \"orange\": $orange,\n \"yellow\": $yellow,\n \"green\": $green,\n \"teal\": $teal,\n \"cyan\": $cyan,\n \"white\": $white,\n \"gray\": $__text--light,\n \"gray-dark\": $__text__emphasis--light\n) !default;\n// scss-docs-end colors-map\n\n// scss-docs-start theme-color-variables\n$primary: $blue !default;\n//$secondary: $gray-600 !default;\n$secondary: $white !default;\n$success: $green !default;\n$info: $cyan !default;\n$warning: $yellow !default;\n$danger: $red !default;\n$light: $gray-100 !default;\n$dark: $gray-900 !default;\n// scss-docs-end theme-color-variables\n\n// scss-docs-start theme-colors-map\n$theme-colors: (\n \"primary\": $primary,\n \"secondary\": $secondary,\n \"success\": $success,\n \"info\": $info,\n \"warning\": $warning,\n \"danger\": $danger,\n \"light\": $light,\n \"dark\": $dark\n) !default;\n// scss-docs-end theme-colors-map\n\n// The contrast ratio to reach against white, to determine if color changes from \"light\" to \"dark\". Acceptable values for WCAG 2.0 are 3, 4.5 and 7.\n// See https://www.w3.org/TR/WCAG20/#visual-audio-contrast-contrast\n$min-contrast-ratio: 4.5 !default;\n\n// Customize the light and dark text colors for use in our color contrast function.\n$color-contrast-dark: $black !default;\n$color-contrast-light: $white !default;\n\n// fusv-disable\n$blue-100: tint-color($blue, 80%) !default;\n$blue-200: tint-color($blue, 60%) !default;\n$blue-300: tint-color($blue, 40%) !default;\n$blue-400: tint-color($blue, 20%) !default;\n$blue-500: $blue !default;\n$blue-600: shade-color($blue, 20%) !default;\n$blue-700: shade-color($blue, 40%) !default;\n$blue-800: shade-color($blue, 60%) !default;\n$blue-900: shade-color($blue, 80%) !default;\n\n$indigo-100: tint-color($indigo, 80%) !default;\n$indigo-200: tint-color($indigo, 60%) !default;\n$indigo-300: tint-color($indigo, 40%) !default;\n$indigo-400: tint-color($indigo, 20%) !default;\n$indigo-500: $indigo !default;\n$indigo-600: shade-color($indigo, 20%) !default;\n$indigo-700: shade-color($indigo, 40%) !default;\n$indigo-800: shade-color($indigo, 60%) !default;\n$indigo-900: shade-color($indigo, 80%) !default;\n\n$purple-100: tint-color($purple, 80%) !default;\n$purple-200: tint-color($purple, 60%) !default;\n$purple-300: tint-color($purple, 40%) !default;\n$purple-400: tint-color($purple, 20%) !default;\n$purple-500: $purple !default;\n$purple-600: shade-color($purple, 20%) !default;\n$purple-700: shade-color($purple, 40%) !default;\n$purple-800: shade-color($purple, 60%) !default;\n$purple-900: shade-color($purple, 80%) !default;\n\n$pink-100: tint-color($pink, 80%) !default;\n$pink-200: tint-color($pink, 60%) !default;\n$pink-300: tint-color($pink, 40%) !default;\n$pink-400: tint-color($pink, 20%) !default;\n$pink-500: $pink !default;\n$pink-600: shade-color($pink, 20%) !default;\n$pink-700: shade-color($pink, 40%) !default;\n$pink-800: shade-color($pink, 60%) !default;\n$pink-900: shade-color($pink, 80%) !default;\n\n$red-100: tint-color($red, 80%) !default;\n$red-200: tint-color($red, 60%) !default;\n$red-300: tint-color($red, 40%) !default;\n$red-400: tint-color($red, 20%) !default;\n$red-500: $red !default;\n$red-600: shade-color($red, 20%) !default;\n$red-700: shade-color($red, 40%) !default;\n$red-800: shade-color($red, 60%) !default;\n$red-900: shade-color($red, 80%) !default;\n\n$orange-100: tint-color($orange, 80%) !default;\n$orange-200: tint-color($orange, 60%) !default;\n$orange-300: tint-color($orange, 40%) !default;\n$orange-400: tint-color($orange, 20%) !default;\n$orange-500: $orange !default;\n$orange-600: shade-color($orange, 20%) !default;\n$orange-700: shade-color($orange, 40%) !default;\n$orange-800: shade-color($orange, 60%) !default;\n$orange-900: shade-color($orange, 80%) !default;\n\n$yellow-100: tint-color($yellow, 80%) !default;\n$yellow-200: tint-color($yellow, 60%) !default;\n$yellow-300: tint-color($yellow, 40%) !default;\n$yellow-400: tint-color($yellow, 20%) !default;\n$yellow-500: $yellow !default;\n$yellow-600: shade-color($yellow, 20%) !default;\n$yellow-700: shade-color($yellow, 40%) !default;\n$yellow-800: shade-color($yellow, 60%) !default;\n$yellow-900: shade-color($yellow, 80%) !default;\n\n$green-100: tint-color($green, 80%) !default;\n$green-200: tint-color($green, 60%) !default;\n$green-300: tint-color($green, 40%) !default;\n$green-400: tint-color($green, 20%) !default;\n$green-500: $green !default;\n$green-600: shade-color($green, 20%) !default;\n$green-700: shade-color($green, 40%) !default;\n$green-800: shade-color($green, 60%) !default;\n$green-900: shade-color($green, 80%) !default;\n\n$teal-100: tint-color($teal, 80%) !default;\n$teal-200: tint-color($teal, 60%) !default;\n$teal-300: tint-color($teal, 40%) !default;\n$teal-400: tint-color($teal, 20%) !default;\n$teal-500: $teal !default;\n$teal-600: shade-color($teal, 20%) !default;\n$teal-700: shade-color($teal, 40%) !default;\n$teal-800: shade-color($teal, 60%) !default;\n$teal-900: shade-color($teal, 80%) !default;\n\n$cyan-100: tint-color($cyan, 80%) !default;\n$cyan-200: tint-color($cyan, 60%) !default;\n$cyan-300: tint-color($cyan, 40%) !default;\n$cyan-400: tint-color($cyan, 20%) !default;\n$cyan-500: $cyan !default;\n$cyan-600: shade-color($cyan, 20%) !default;\n$cyan-700: shade-color($cyan, 40%) !default;\n$cyan-800: shade-color($cyan, 60%) !default;\n$cyan-900: shade-color($cyan, 80%) !default;\n// fusv-enable\n\n// Characters which are escaped by the escape-svg function\n$escaped-characters: (\n (\"<\", \"%3c\"),\n (\">\", \"%3e\"),\n (\"#\", \"%23\"),\n (\"(\", \"%28\"),\n (\")\", \"%29\"),\n) !default;\n\n// Options\n//\n// Quickly modify global styling by enabling or disabling optional features.\n\n$enable-caret: true !default;\n$enable-rounded: true !default;\n$enable-shadows: false !default;\n$enable-gradients: false !default;\n$enable-transitions: true !default;\n$enable-reduced-motion: true !default;\n$enable-smooth-scroll: true !default;\n$enable-grid-classes: true !default;\n$enable-button-pointers: true !default;\n$enable-rfs: true !default;\n$enable-validation-icons: true !default;\n$enable-negative-margins: false !default;\n$enable-deprecation-messages: true !default;\n$enable-important-utilities: true !default;\n\n// Prefix for :root CSS variables\n\n$variable-prefix: #{$__classPrefix}- !default;\n\n// Gradient\n//\n// The gradient which is added to components if `$enable-gradients` is `true`\n// This gradient is also added to elements with `.bg-gradient` \n// scss-docs-start variable-gradient\n$gradient: linear-gradient(180deg, rgba($white, .15), rgba($white, 0)) !default;\n// scss-docs-end variable-gradient\n\n// Spacing \n//\n// Control the default styling of most Bootstrap elements by modifying these\n// variables. Mostly focused on spacing.\n// You can add more entries to the $spacers map, should you need more variation.\n\n// scss-docs-start spacer-variables-maps\n$spacer: 1rem !default;\n$spacers: (\n 0: 0,\n 1: $spacer / 4,\n 2: $spacer / 2,\n 3: $spacer,\n 4: $spacer * 1.5,\n 5: $spacer * 3,\n) !default;\n\n$negative-spacers: if($enable-negative-margins, negativify-map($spacers), null) !default;\n// scss-docs-end spacer-variables-maps\n\n// Position\n//\n// Define the edge positioning anchors of the position utilities.\n\n// scss-docs-start position-map\n$position-values: (\n 0: 0,\n 50: 50%,\n 100: 100%\n) !default;\n// scss-docs-end position-map\n\n// Body\n//\n// Settings for the `` element.\n\n$body-bg: $white !default;\n$body-color: $gray-900 !default;\n$body-text-align: null !default;\n\n\n// Links\n//\n// Style anchor elements.\n\n$link-color: $primary !default;\n$link-decoration: underline !default;\n$link-shade-percentage: 20% !default;\n$link-hover-color: shift-color($link-color, $link-shade-percentage) !default;\n$link-hover-decoration: null !default;\n\n$stretched-link-pseudo-element: after !default;\n$stretched-link-z-index: 1 !default;\n\n// Paragraphs\n//\n// Style p element.\n\n$paragraph-margin-bottom: 1rem !default;\n\n\n// Grid breakpoints\n//\n// Define the minimum dimensions at which your layout will change,\n// adapting to different screen sizes, for use in media queries.\n\n// scss-docs-start grid-breakpoints\n$grid-breakpoints: (\n xs: $__breakpoints--xsmall,\n sm: $__breakpoints--small,\n md: $__breakpoints--medium,\n lg: $__breakpoints--large,\n xl: $__breakpoints--xlarge,\n xxl: $__breakpoints--xxlarge\n) !default;\n// scss-docs-end grid-breakpoints\n\n@include _assert-ascending($grid-breakpoints, \"$grid-breakpoints\");\n@include _assert-starts-at-zero($grid-breakpoints, \"$grid-breakpoints\");\n\n\n// Grid containers\n//\n// Define the maximum width of `.container` for different screen sizes.\n\n// scss-docs-start container-max-widths\n$container-max-widths: (\n sm: $__grid__container--small,\n md: $__grid__container--medium,\n lg: $__grid__container--large,\n xl: $__grid__container--xlarge,\n xxl: $__grid__container--xxlarge\n) !default;\n// scss-docs-end container-max-widths\n\n@include _assert-ascending($container-max-widths, \"$container-max-widths\");\n\n\n// Grid columns\n//\n// Set the number of columns and specify the width of the gutters.\n\n$grid-columns: $__grid__columns !default;\n$grid-gutter-width: 1rem !default;\n$grid-row-columns: 6 !default;\n\n$gutters: $spacers !default;\n\n// Container padding\n\n$container-padding-x: $grid-gutter-width / 2 !default;\n\n\n// Components\n//\n// Define common padding and border radius sizes and more.\n\n// scss-docs-start border-variables\n$border-width: 1px !default;\n$border-widths: (\n 0: 0,\n 1: 1px,\n 2: 2px,\n 3: 3px,\n 4: 4px,\n 5: 5px\n) !default;\n\n$border-color: $gray-300 !default;\n\n$border-radius: .25rem !default;\n$border-radius-sm: .12.5rem !default;\n$border-radius-lg: .5rem !default;\n$border-radius-pill: 50rem !default;\n// scss-docs-end border-radius-variables\n\n// scss-docs-start box-shadow-variables\n$box-shadow: 0 .5rem 1rem rgba($black, .15) !default;\n$box-shadow-sm: 0 .125rem .25rem rgba($black, .075) !default;\n$box-shadow-lg: 0 1rem 3rem rgba($black, .175) !default;\n$box-shadow-inset: inset 0 1px 2px rgba($black, .075) !default;\n// scss-docs-end box-shadow-variables\n\n$component-active-color: $white !default;\n$component-active-bg: $primary !default;\n\n// scss-docs-start caret-variables\n$caret-width: .3em !default;\n$caret-vertical-align: $caret-width * .85 !default;\n$caret-spacing: $caret-width * .85 !default;\n// scss-docs-end caret-variables\n\n$transition-base: all .2s ease-in-out !default;\n$transition-fade: opacity .15s linear !default;\n$transition-collapse: height .35s ease !default;\n// scss-docs-end collapse-transition\n\n// stylelint-disable function-disallowed-list\n// scss-docs-start aspect-ratios\n$aspect-ratios: (\n \"1x1\": 100%,\n \"4x3\": calc(3 / 4 * 100%),\n \"16x9\": calc(9 / 16 * 100%),\n \"21x9\": calc(9 / 21 * 100%)\n) !default;\n// scss-docs-end aspect-ratios\n// stylelint-enable function-disallowed-list\n\n// Typography\n//\n// Font, line-height, and color for body text, headings, and more.\n\n// scss-docs-start font-variables\n// stylelint-disable value-keyword-case\n$font-family-sans-serif: $__font__family !default;\n$font-family-monospace: SFMono-Regular, Menlo, Monaco, Consolas, \"Liberation Mono\", \"Courier New\", monospace !default;\n// stylelint-enable value-keyword-case\n$font-family-base: var(--#{$variable-prefix}font-sans-serif) !default;\n$font-family-code: var(--#{$variable-prefix}font-monospace) !default;\n\n// $font-size-root effects the value of `rem`, which is used for as well font sizes, paddings and margins\n// $font-size-base effects the font size of the body text\n$font-size-root: null !default;\n$font-size-base: 1rem !default; // Assumes the browser default, typically `16px`\n$font-size-sm: $font-size-base * .875 !default;\n$font-size-lg: $font-size-base * 1.25 !default;\n\n$font-weight-lighter: lighter !default;\n$font-weight-light: 300 !default;\n$font-weight-normal: 400 !default;\n$font-weight-bold: 700 !default;\n$font-weight-bolder: bolder !default;\n\n$font-weight-base: $font-weight-normal !default;\n\n$line-height-base: 1.5 !default;\n$line-height-sm: 1.25 !default;\n$line-height-lg: 2 !default;\n\n$h1-font-size: $font-size-base * 2.5 !default;\n$h2-font-size: $font-size-base * 2 !default;\n$h3-font-size: $font-size-base * 1.75 !default;\n$h4-font-size: $font-size-base * 1.5 !default;\n$h5-font-size: $font-size-base * 1.25 !default;\n$h6-font-size: $font-size-base !default;\n// scss-docs-end font-variables\n\n// scss-docs-start font-sizes\n$font-sizes: (\n 1: $h1-font-size,\n 2: $h2-font-size,\n 3: $h3-font-size,\n 4: $h4-font-size,\n 5: $h5-font-size,\n 6: $h6-font-size\n) !default;\n// scss-docs-end font-sizes\n\n// scss-docs-start headings-variables\n$headings-margin-bottom: $spacer / 2 !default;\n$headings-font-family: null !default;\n$headings-font-style: null !default;\n$headings-font-weight: 500 !default;\n$headings-line-height: 1.2 !default;\n$headings-color: null !default;\n// scss-docs-end headings-variables\n\n// scss-docs-start display-headings\n$display-font-sizes: (\n 1: 5rem,\n 2: 4.5rem,\n 3: 4rem,\n 4: 3.5rem,\n 5: 3rem,\n 6: 2.5rem\n) !default;\n\n$display-font-weight: 300 !default;\n$display-line-height: $headings-line-height !default;\n// scss-docs-end display-headings\n\n// scss-docs-start type-variables\n$lead-font-size: $font-size-base * 1.25 !default;\n$lead-font-weight: 300 !default;\n\n$small-font-size: .875em !default;\n\n$sub-sup-font-size: .75em !default;\n\n$text-muted: $gray-600 !default;\n\n$initialism-font-size: $small-font-size !default;\n\n$blockquote-margin-y: $spacer !default;\n$blockquote-font-size: $font-size-base * 1.25 !default;\n$blockquote-footer-color: $gray-600 !default;\n$blockquote-footer-font-size: $small-font-size !default;\n\n$hr-margin-y: $spacer !default;\n$hr-color: inherit !default;\n$hr-height: $border-width !default;\n$hr-opacity: .25 !default;\n\n$legend-margin-bottom: .5rem !default;\n$legend-font-size: 1.5rem !default;\n$legend-font-weight: null !default;\n\n$mark-padding: .2em !default;\n\n$dt-font-weight: $font-weight-bold !default;\n\n$nested-kbd-font-weight: $font-weight-bold !default;\n\n$list-inline-padding: .5rem !default;\n\n$mark-bg: #fcf8e3 !default;\n// scss-docs-end type-variables\n\n\n// Tables\n//\n// Customizes the `.table` component with basic values, each used across all table variations.\n\n// scss-docs-start table-variables\n$table-cell-padding-y: .5rem !default;\n$table-cell-padding-x: .5rem !default;\n$table-cell-padding-y-sm: .25rem !default;\n$table-cell-padding-x-sm: .25rem !default;\n\n$table-cell-vertical-align: top !default;\n\n$table-color: $body-color !default;\n$table-bg: transparent !default;\n\n$table-th-font-weight: null !default;\n\n$table-striped-color: $table-color !default;\n$table-striped-bg-factor: .05 !default;\n$table-striped-bg: rgba($black, $table-striped-bg-factor) !default;\n\n$table-active-color: $table-color !default;\n$table-active-bg-factor: .1 !default;\n$table-active-bg: rgba($black, $table-active-bg-factor) !default;\n\n$table-hover-color: $table-color !default;\n$table-hover-bg-factor: .075 !default;\n$table-hover-bg: rgba($black, $table-hover-bg-factor) !default;\n\n$table-border-factor: .1 !default;\n$table-border-width: $border-width !default;\n$table-border-color: $border-color !default;\n\n$table-striped-order: odd !default;\n\n$table-group-separator-color: currentColor !default;\n\n$table-caption-color: $text-muted !default;\n\n$table-bg-scale: -80% !default;\n\n$table-variants: (\n \"primary\": shift-color($primary, $table-bg-scale),\n \"secondary\": shift-color($secondary, $table-bg-scale),\n \"success\": shift-color($success, $table-bg-scale),\n \"info\": shift-color($info, $table-bg-scale),\n \"warning\": shift-color($warning, $table-bg-scale),\n \"danger\": shift-color($danger, $table-bg-scale),\n \"light\": $light,\n \"dark\": $dark,\n) !default;\n\n\n $table-variants-scielo: (\n \"primary\": fade-out($__interaction--light, 0.3),\n \"secondary\": fade-out($secondary, 0.5),\n \"success\": fade-out($__positive--light, 0.3),\n \"info\": fade-out($__info--light, 0.3),\n \"warning\": fade-out($__warning--light, 0.3),\n \"danger\": fade-out($__negative--light, 0.3),\n \"light\": $light,\n \"dark\": $dark,\n ) !default;\n \n \n// scss-docs-end table-loop\n\n\n// Buttons + Forms\n//\n// Shared variables that are reassigned to `$input-` and `$btn-` specific variables.\n\n// scss-docs-start input-btn-variables\n$input-btn-padding-y: .375rem !default;\n$input-btn-padding-x: .75rem !default;\n$input-btn-font-family: null !default;\n$input-btn-font-size: $font-size-base !default;\n$input-btn-line-height: $line-height-base !default;\n\n$input-btn-focus-width: .25rem !default;\n$input-btn-focus-color-opacity: .25 !default;\n$input-btn-focus-color: rgba($component-active-bg, $input-btn-focus-color-opacity) !default;\n$input-btn-focus-blur: 0 !default;\n$input-btn-focus-box-shadow: 0 0 0 $input-btn-focus-width $input-btn-focus-color !default;\n\n$input-btn-padding-y-sm: .25rem !default;\n$input-btn-padding-x-sm: .5rem !default;\n$input-btn-font-size-sm: $font-size-sm !default;\n\n$input-btn-padding-y-lg: .5rem !default;\n$input-btn-padding-x-lg: 1rem !default;\n$input-btn-font-size-lg: $font-size-lg !default;\n\n$input-btn-border-width: $border-width !default;\n// scss-docs-end input-btn-variables\n\n\n// Buttons\n//\n// For each of Bootstrap's buttons, define text, background, and border color.\n\n// scss-docs-start btn-variables\n$btn-padding-y: $input-btn-padding-y !default;\n$btn-padding-x: $input-btn-padding-x !default;\n$btn-font-family: $input-btn-font-family !default;\n$btn-font-size: $input-btn-font-size !default;\n$btn-line-height: $input-btn-line-height !default;\n$btn-white-space: null !default; // Set to `nowrap` to prevent text wrapping\n\n$btn-padding-y-sm: $input-btn-padding-y-sm !default;\n$btn-padding-x-sm: $input-btn-padding-x-sm !default;\n$btn-font-size-sm: $input-btn-font-size-sm !default;\n\n$btn-padding-y-lg: $input-btn-padding-y-lg !default;\n$btn-padding-x-lg: $input-btn-padding-x-lg !default;\n$btn-font-size-lg: $input-btn-font-size-lg !default;\n\n$btn-border-width: $input-btn-border-width !default;\n\n$btn-font-weight: $font-weight-normal !default;\n$btn-box-shadow: inset 0 1px 0 rgba($white, .15), 0 1px 1px rgba($black, .075) !default;\n$btn-focus-width: $input-btn-focus-width !default;\n$btn-focus-box-shadow: $input-btn-focus-box-shadow !default;\n$btn-disabled-opacity: .65 !default;\n$btn-active-box-shadow: inset 0 3px 5px rgba($black, .125) !default;\n\n$btn-link-color: $link-color !default;\n$btn-link-hover-color: $link-hover-color !default;\n$btn-link-disabled-color: $gray-600 !default;\n\n// Allows for customizing button radius independently from global border radius\n$btn-border-radius: $border-radius !default;\n$btn-border-radius-sm: $border-radius-sm !default;\n$btn-border-radius-lg: $border-radius-lg !default;\n\n$btn-transition: color .15s ease-in-out, background-color .15s ease-in-out, border-color .15s ease-in-out, box-shadow .15s ease-in-out !default;\n\n$btn-hover-bg-shade-amount: 15% !default;\n$btn-hover-bg-tint-amount: 15% !default;\n$btn-hover-border-shade-amount: 20% !default;\n$btn-hover-border-tint-amount: 10% !default;\n$btn-active-bg-shade-amount: 20% !default;\n$btn-active-bg-tint-amount: 20% !default;\n$btn-active-border-shade-amount: 25% !default;\n$btn-active-border-tint-amount: 10% !default;\n// scss-docs-end btn-variables\n\n\n// Forms\n\n// scss-docs-start form-text-variables\n$form-text-margin-top: .25rem !default;\n$form-text-font-size: $small-font-size !default;\n$form-text-font-style: null !default;\n$form-text-font-weight: null !default;\n$form-text-color: $text-muted !default;\n// scss-docs-end form-text-variables\n\n// scss-docs-start form-label-variables\n$form-label-margin-bottom: .5rem !default;\n$form-label-font-size: null !default;\n$form-label-font-style: null !default;\n$form-label-font-weight: null !default;\n$form-label-color: null !default;\n// scss-docs-end form-label-variables\n\n// scss-docs-start form-input-variables\n$input-padding-y: $input-btn-padding-y !default;\n$input-padding-x: $input-btn-padding-x !default;\n$input-font-family: $input-btn-font-family !default;\n$input-font-size: $input-btn-font-size !default;\n$input-font-weight: $font-weight-base !default;\n$input-line-height: $input-btn-line-height !default;\n\n$input-padding-y-sm: $input-btn-padding-y-sm !default;\n$input-padding-x-sm: $input-btn-padding-x-sm !default;\n$input-font-size-sm: $input-btn-font-size-sm !default;\n\n$input-padding-y-lg: $input-btn-padding-y-lg !default;\n$input-padding-x-lg: $input-btn-padding-x-lg !default;\n$input-font-size-lg: $input-btn-font-size-lg !default;\n\n$input-bg: $white !default;\n$input-disabled-bg: $gray-200 !default;\n$input-disabled-border-color: null !default;\n\n$input-color: $body-color !default;\n$input-border-color: $gray-400 !default;\n$input-border-width: $input-btn-border-width !default;\n$input-box-shadow: $box-shadow-inset !default;\n\n$input-border-radius: $border-radius !default;\n$input-border-radius-sm: $border-radius-sm !default;\n$input-border-radius-lg: $border-radius-lg !default;\n\n$input-focus-bg: $input-bg !default;\n$input-focus-border-color: tint-color($component-active-bg, 50%) !default;\n$input-focus-color: $input-color !default;\n$input-focus-width: $input-btn-focus-width !default;\n$input-focus-box-shadow: $input-btn-focus-box-shadow !default;\n\n$input-placeholder-color: $gray-600 !default;\n$input-plaintext-color: $body-color !default;\n\n$input-height-border: $input-border-width * 2 !default;\n\n$input-height-inner: add($input-line-height * 1em, $input-padding-y * 2) !default;\n$input-height-inner-half: add($input-line-height * .5em, $input-padding-y) !default;\n$input-height-inner-quarter: add($input-line-height * .25em, $input-padding-y / 2) !default;\n\n$input-height: add($input-line-height * 1em, add($input-padding-y * 2, $input-height-border, false)) !default;\n$input-height-sm: add($input-line-height * 1em, add($input-padding-y-sm * 2, $input-height-border, false)) !default;\n$input-height-lg: add($input-line-height * 1em, add($input-padding-y-lg * 2, $input-height-border, false)) !default;\n\n$input-transition: border-color .15s ease-in-out, box-shadow .15s ease-in-out !default;\n// scss-docs-end form-input-variables\n\n// scss-docs-start form-check-variables\n$form-check-input-width: 1em !default;\n$form-check-min-height: $font-size-base * $line-height-base !default;\n$form-check-padding-start: $form-check-input-width + .5em !default;\n$form-check-margin-bottom: .125rem !default;\n$form-check-label-color: null !default;\n$form-check-label-cursor: null !default;\n$form-check-transition: background-color .15s ease-in-out, background-position .15s ease-in-out, border-color .15s ease-in-out, box-shadow .15s ease-in-out !default; \n\n$form-check-input-active-filter: brightness(90%) !default;\n\n$form-check-input-bg: $body-bg !default;\n$form-check-input-border: 1px solid rgba(0, 0, 0, .25) !default;\n$form-check-input-border-radius: .25em !default;\n$form-check-radio-border-radius: 50% !default;\n$form-check-input-focus-border: $input-focus-border-color !default;\n$form-check-input-focus-box-shadow: $input-btn-focus-box-shadow !default;\n\n$form-check-input-checked-color: $component-active-color !default;\n$form-check-input-checked-bg-color: $component-active-bg !default;\n$form-check-input-checked-border-color: $form-check-input-checked-bg-color !default;\n$form-check-input-checked-bg-image: url(\"data:image/svg+xml,\") !default;\n$form-check-radio-checked-bg-image: url(\"data:image/svg+xml,\") !default;\n\n$form-check-input-indeterminate-color: $component-active-color !default;\n$form-check-input-indeterminate-bg-color: $component-active-bg !default;\n$form-check-input-indeterminate-border-color: $form-check-input-indeterminate-bg-color !default;\n$form-check-input-indeterminate-bg-image: url(\"data:image/svg+xml,\") !default;\n\n$form-check-input-disabled-opacity: .5 !default;\n$form-check-label-disabled-opacity: $form-check-input-disabled-opacity !default;\n$form-check-btn-check-disabled-opacity: $btn-disabled-opacity !default;\n\n$form-check-inline-margin-end: 1rem !default;\n// scss-docs-end form-check-variables\n\n// scss-docs-start form-switch-variables\n$form-switch-color: rgba(0, 0, 0, .25) !default;\n$form-switch-width: 2em !default;\n$form-switch-padding-start: $form-switch-width + .5em !default;\n$form-switch-bg-image: url(\"data:image/svg+xml,\") !default;\n$form-switch-border-radius: $form-switch-width !default;\n$form-switch-transition: background-position .15s ease-in-out !default;\n\n$form-switch-focus-color: $input-focus-border-color !default;\n$form-switch-focus-bg-image: url(\"data:image/svg+xml,\") !default;\n\n$form-switch-checked-color: $component-active-color !default;\n$form-switch-checked-bg-image: url(\"data:image/svg+xml,\") !default;\n$form-switch-checked-bg-position: right center !default;\n\n$form-check-inline-margin-end: 1rem !default;\n// scss-docs-end form-switch-variables\n\n// scss-docs-start input-group-variables\n$input-group-addon-padding-y: $input-padding-y !default;\n$input-group-addon-padding-x: $input-padding-x !default;\n$input-group-addon-font-weight: $input-font-weight !default;\n$input-group-addon-color: $input-color !default;\n$input-group-addon-bg: $gray-200 !default;\n$input-group-addon-border-color: $input-border-color !default;\n// scss-docs-end input-group-variables\n\n// scss-docs-start form-select-variables\n$form-select-padding-y: $input-padding-y !default;\n$form-select-padding-x: $input-padding-x !default;\n$form-select-font-family: $input-font-family !default;\n$form-select-font-size: $input-font-size !default;\n$form-select-indicator-padding: 1rem !default; // Extra padding to account for the presence of the background-image based indicator\n$form-select-font-weight: $input-font-weight !default;\n$form-select-line-height: $input-line-height !default;\n$form-select-color: $input-color !default;\n$form-select-bg: $input-bg !default;\n$form-select-disabled-color: $gray-600 !default;\n$form-select-disabled-bg: $gray-200 !default;\n$form-select-disabled-border-color: $input-disabled-border-color !default;\n$form-select-bg-position: right $form-select-padding-x center !default;\n$form-select-bg-size: 16px 12px !default; // In pixels because image dimensions\n$form-select-indicator-color: $gray-800 !default;\n$form-select-indicator: url(\"data:image/svg+xml,\") !default;\n\n$form-select-feedback-icon-padding-end: add(1em * .75, (2 * $form-select-padding-y * .75) + $form-select-padding-x + $form-select-indicator-padding) !default;\n$form-select-feedback-icon-position: center right ($form-select-padding-x + $form-select-indicator-padding) !default;\n$form-select-feedback-icon-size: $input-height-inner-half $input-height-inner-half !default;\n\n$form-select-border-width: $input-border-width !default;\n$form-select-border-color: $input-border-color !default;\n$form-select-border-radius: $border-radius !default;\n$form-select-box-shadow: $box-shadow-inset !default;\n\n$form-select-focus-border-color: $input-focus-border-color !default;\n$form-select-focus-width: $input-focus-width !default;\n$form-select-focus-box-shadow: 0 0 0 $form-select-focus-width $input-btn-focus-color !default;\n\n$form-select-padding-y-sm: $input-padding-y-sm !default;\n$form-select-padding-x-sm: $input-padding-x-sm !default;\n$form-select-font-size-sm: $input-font-size-sm !default;\n\n$form-select-padding-y-lg: $input-padding-y-lg !default;\n$form-select-padding-x-lg: $input-padding-x-lg !default;\n$form-select-font-size-lg: $input-font-size-lg !default;\n// scss-docs-end form-select-variables\n\n// scss-docs-start form-range-variables\n$form-range-track-width: 100% !default;\n$form-range-track-height: .5rem !default;\n$form-range-track-cursor: pointer !default;\n$form-range-track-bg: $gray-300 !default;\n$form-range-track-border-radius: 1rem !default;\n$form-range-track-box-shadow: $box-shadow-inset !default;\n\n$form-range-thumb-width: 1rem !default;\n$form-range-thumb-height: $form-range-thumb-width !default;\n$form-range-thumb-bg: $component-active-bg !default;\n$form-range-thumb-border: 0 !default;\n$form-range-thumb-border-radius: 1rem !default;\n$form-range-thumb-box-shadow: 0 .1rem .25rem rgba($black, .1) !default;\n$form-range-thumb-focus-box-shadow: 0 0 0 1px $body-bg, $input-focus-box-shadow !default;\n$form-range-thumb-focus-box-shadow-width: $input-focus-width !default; // For focus box shadow issue in Edge\n$form-range-thumb-active-bg: tint-color($component-active-bg, 70%) !default;\n$form-range-thumb-disabled-bg: $gray-500 !default;\n$form-range-thumb-transition: background-color .15s ease-in-out, border-color .15s ease-in-out, box-shadow .15s ease-in-out !default;\n// scss-docs-end form-range-variables\n\n// scss-docs-start form-file-variables\n$form-file-button-color: $input-color !default;\n$form-file-button-bg: $input-group-addon-bg !default;\n$form-file-button-hover-bg: shade-color($form-file-button-bg, 5%) !default;\n// scss-docs-end form-file-variables\n\n// scss-docs-start form-floating-variables\n$form-floating-height: add(3.5rem, $input-height-border) !default;\n$form-floating-padding-x: $input-padding-x !default;\n$form-floating-padding-y: 1rem !default;\n$form-floating-input-padding-t: 1.625rem !default;\n$form-floating-input-padding-b: .625rem !default;\n$form-floating-label-opacity: .65 !default;\n$form-floating-label-transform: scale(.85) translateY(-.5rem) translateX(.15rem) !default;\n$form-floating-transition: opacity .1s ease-in-out, transform .1s ease-in-out !default;\n// scss-docs-end form-floating-variables\n\n// Form validation\n\n// scss-docs-start form-feedback-variables\n$form-feedback-margin-top: $form-text-margin-top !default;\n$form-feedback-font-size: $form-text-font-size !default;\n$form-feedback-font-style: $form-text-font-style !default;\n$form-feedback-valid-color: $success !default;\n$form-feedback-invalid-color: $danger !default;\n\n$form-feedback-icon-valid-color: $form-feedback-valid-color !default;\n$form-feedback-icon-valid: url(\"data:image/svg+xml,\") !default;\n$form-feedback-icon-invalid-color: $form-feedback-invalid-color !default;\n$form-feedback-icon-invalid: url(\"data:image/svg+xml,\") !default;\n// scss-docs-end form-feedback-variables\n\n// scss-docs-start form-validation-states\n$form-validation-states: (\n \"valid\": (\n \"color\": $form-feedback-valid-color,\n \"icon\": $form-feedback-icon-valid\n ),\n \"invalid\": (\n \"color\": $form-feedback-invalid-color,\n \"icon\": $form-feedback-icon-invalid\n )\n) !default;\n// scss-docs-end form-validation-states\n\n// Z-index master list\n//\n// Warning: Avoid customizing these values. They're used for a bird's eye view\n// of components dependent on the z-axis and are designed to all work together.\n\n// scss-docs-start zindex-stack\n$zindex-dropdown: 1000 !default;\n$zindex-sticky: 1020 !default;\n$zindex-fixed: 1030 !default;\n$zindex-offcanvas: 1040 !default;\n$zindex-modal-backdrop: 1050 !default;\n$zindex-modal: 1060 !default;\n$zindex-popover: 1070 !default;\n$zindex-tooltip: 1080 !default;\n// scss-docs-end zindex-stack\n\n\n// Navs\n\n// scss-docs-start nav-variables\n$nav-link-padding-y: .5rem !default;\n$nav-link-padding-x: 1rem !default;\n$nav-link-font-size: null !default;\n$nav-link-font-weight: null !default;\n$nav-link-color: null !default;\n$nav-link-hover-color: null !default;\n$nav-link-transition: color .15s ease-in-out, background-color .15s ease-in-out, border-color .15s ease-in-out !default;\n$nav-link-disabled-color: $gray-600 !default;\n\n$nav-tabs-border-color: $gray-300 !default;\n$nav-tabs-border-width: $border-width !default;\n$nav-tabs-border-radius: $border-radius !default;\n$nav-tabs-link-hover-border-color: $gray-200 $gray-200 $nav-tabs-border-color !default;\n$nav-tabs-link-active-color: $gray-700 !default;\n$nav-tabs-link-active-bg: $body-bg !default;\n$nav-tabs-link-active-border-color: $gray-300 $gray-300 $nav-tabs-link-active-bg !default;\n\n$nav-pills-border-radius: $border-radius !default;\n$nav-pills-link-active-color: $component-active-color !default;\n$nav-pills-link-active-bg: $component-active-bg !default;\n// scss-docs-end nav-variables\n\n\n// Navbar\n\n// scss-docs-start navbar-variables\n$navbar-padding-y: $spacer / 2 !default;\n$navbar-padding-x: null !default;\n\n$navbar-nav-link-padding-x: .5rem !default;\n\n$navbar-brand-font-size: $font-size-lg !default;\n// Compute the navbar-brand padding-y so the navbar-brand will have the same height as navbar-text and nav-link\n$nav-link-height: $font-size-base * $line-height-base + $nav-link-padding-y * 2 !default;\n$navbar-brand-height: $navbar-brand-font-size * $line-height-base !default;\n$navbar-brand-padding-y: ($nav-link-height - $navbar-brand-height) / 2 !default;\n$navbar-brand-margin-end: 1rem !default;\n\n$navbar-toggler-padding-y: .25rem !default;\n$navbar-toggler-padding-x: .75rem !default;\n$navbar-toggler-font-size: $font-size-lg !default;\n$navbar-toggler-border-radius: $btn-border-radius !default;\n$navbar-toggler-focus-width: $btn-focus-width !default;\n$navbar-toggler-transition: box-shadow .15s ease-in-out !default;\n// scss-docs-end navbar-variables\n\n// scss-docs-start navbar-theme-variables\n$navbar-dark-color: rgba($white, .55) !default;\n$navbar-dark-hover-color: rgba($white, .75) !default;\n$navbar-dark-active-color: $white !default;\n$navbar-dark-disabled-color: rgba($white, .25) !default;\n$navbar-dark-toggler-icon-bg: url(\"data:image/svg+xml,\") !default;\n$navbar-dark-toggler-border-color: rgba($white, .1) !default;\n\n$navbar-light-color: rgba($black, .55) !default;\n$navbar-light-hover-color: rgba($black, .7) !default;\n$navbar-light-active-color: rgba($black, .9) !default;\n$navbar-light-disabled-color: rgba($black, .3) !default;\n$navbar-light-toggler-icon-bg: url(\"data:image/svg+xml,\") !default;\n$navbar-light-toggler-border-color: rgba($black, .1) !default;\n\n$navbar-light-brand-color: $navbar-light-active-color !default;\n$navbar-light-brand-hover-color: $navbar-light-active-color !default;\n$navbar-dark-brand-color: $navbar-dark-active-color !default;\n$navbar-dark-brand-hover-color: $navbar-dark-active-color !default;\n// scss-docs-end navbar-theme-variables\n\n\n// Dropdowns\n//\n// Dropdown menu container and contents.\n\n// scss-docs-start dropdown-variables\n$dropdown-min-width: 10rem !default;\n$dropdown-padding-x: 0 !default;\n$dropdown-padding-y: .5rem !default;\n$dropdown-spacer: .125rem !default;\n$dropdown-font-size: $font-size-base !default;\n$dropdown-color: $body-color !default;\n$dropdown-bg: $white !default;\n$dropdown-border-color: rgba($black, .15) !default;\n$dropdown-border-radius: $border-radius !default;\n$dropdown-border-width: $border-width !default;\n$dropdown-inner-border-radius: subtract($dropdown-border-radius, $dropdown-border-width) !default;\n$dropdown-divider-bg: $dropdown-border-color !default;\n$dropdown-divider-margin-y: $spacer / 2 !default;\n$dropdown-box-shadow: $box-shadow !default;\n\n$dropdown-link-color: $gray-900 !default;\n$dropdown-link-hover-color: shade-color($gray-900, 10%) !default;\n$dropdown-link-hover-bg: $gray-100 !default;\n\n$dropdown-link-active-color: $component-active-color !default;\n$dropdown-link-active-bg: $component-active-bg !default;\n\n$dropdown-link-disabled-color: $gray-600 !default;\n\n$dropdown-item-padding-y: $spacer / 4 !default;\n$dropdown-item-padding-x: $spacer !default;\n\n$dropdown-header-color: $gray-600 !default;\n$dropdown-header-padding: $dropdown-padding-y $dropdown-item-padding-x !default;\n// scss-docs-end dropdown-variables\n\n// scss-docs-start dropdown-dark-variables\n$dropdown-dark-color: $gray-300 !default;\n$dropdown-dark-bg: $gray-800 !default;\n$dropdown-dark-border-color: $dropdown-border-color !default;\n$dropdown-dark-divider-bg: $dropdown-divider-bg !default;\n$dropdown-dark-box-shadow: null !default;\n$dropdown-dark-link-color: $dropdown-dark-color !default;\n$dropdown-dark-link-hover-color: $white !default;\n$dropdown-dark-link-hover-bg: rgba($white, .15) !default;\n$dropdown-dark-link-active-color: $dropdown-link-active-color !default;\n$dropdown-dark-link-active-bg: $dropdown-link-active-bg !default;\n$dropdown-dark-link-disabled-color: $gray-500 !default;\n$dropdown-dark-header-color: $gray-500 !default;\n// scss-docs-end dropdown-dark-variables\n\n\n// Pagination\n\n// scss-docs-start pagination-variables\n$pagination-padding-y: .375rem !default;\n$pagination-padding-x: .75rem !default;\n$pagination-padding-y-sm: .25rem !default;\n$pagination-padding-x-sm: .5rem !default;\n$pagination-padding-y-lg: .75rem !default;\n$pagination-padding-x-lg: 1.5rem !default;\n\n$pagination-color: $link-color !default;\n$pagination-bg: $white !default;\n$pagination-border-width: $border-width !default;\n$pagination-border-radius: $border-radius !default;\n$pagination-margin-start: -$pagination-border-width !default;\n$pagination-border-color: $gray-300 !default;\n\n$pagination-focus-color: $link-hover-color !default;\n$pagination-focus-bg: $gray-200 !default;\n$pagination-focus-box-shadow: $input-btn-focus-box-shadow !default;\n$pagination-focus-outline: 0 !default;\n\n$pagination-hover-color: $link-hover-color !default;\n$pagination-hover-bg: $gray-200 !default;\n$pagination-hover-border-color: $gray-300 !default;\n\n$pagination-active-color: $component-active-color !default;\n$pagination-active-bg: $component-active-bg !default;\n$pagination-active-border-color: $pagination-active-bg !default;\n\n$pagination-disabled-color: $gray-600 !default;\n$pagination-disabled-bg: $white !default;\n$pagination-disabled-border-color: $gray-300 !default;\n\n$pagination-transition: color .15s ease-in-out, background-color .15s ease-in-out, border-color .15s ease-in-out, box-shadow .15s ease-in-out !default;\n\n$pagination-border-radius-sm: $border-radius-sm !default;\n$pagination-border-radius-lg: $border-radius-lg !default;\n// scss-docs-end pagination-variables\n\n\n// Cards\n\n// scss-docs-start card-variables\n$card-spacer-y: $spacer !default;\n$card-spacer-x: $spacer !default;\n$card-title-spacer-y: $spacer / 2 !default;\n$card-border-width: $border-width !default;\n$card-border-radius: $border-radius !default;\n$card-border-color: rgba($black, .125) !default;\n$card-inner-border-radius: subtract($card-border-radius, $card-border-width) !default;\n$card-cap-padding-y: $card-spacer-y / 2 !default;\n$card-cap-padding-x: $card-spacer-x !default;\n$card-cap-bg: rgba($black, .03) !default;\n$card-cap-color: null !default;\n$card-height: null !default;\n$card-color: null !default;\n$card-bg: $white !default;\n$card-img-overlay-padding: $spacer !default;\n$card-group-margin: $grid-gutter-width / 2 !default;\n// scss-docs-end card-variables\n\n// Accordion\n\n// scss-docs-start accordion-variables\n$accordion-padding-y: 1rem !default;\n$accordion-padding-x: 1.25rem !default;\n$accordion-color: $body-color !default;\n$accordion-bg: transparent !default;\n$accordion-border-width: $border-width !default;\n$accordion-border-color: rgba($black, .125) !default;\n$accordion-border-radius: $border-radius !default;\n$accordion-inner-border-radius: subtract($accordion-border-radius, $accordion-border-width) !default;\n\n$accordion-body-padding-y: $accordion-padding-y !default;\n$accordion-body-padding-x: $accordion-padding-x !default;\n\n$accordion-button-padding-y: $accordion-padding-y !default;\n$accordion-button-padding-x: $accordion-padding-x !default;\n$accordion-button-color: $accordion-color !default;\n$accordion-button-bg: $accordion-bg !default;\n$accordion-transition: $btn-transition, border-radius .15s ease !default;\n$accordion-button-active-bg: tint-color($component-active-bg, 90%) !default;\n$accordion-button-active-color: shade-color($primary, 10%) !default;\n\n$accordion-button-focus-border-color: $input-focus-border-color !default;\n$accordion-button-focus-box-shadow: $btn-focus-box-shadow !default;\n\n$accordion-icon-width: 1.25rem !default;\n$accordion-icon-color: $accordion-color !default;\n$accordion-icon-active-color: $accordion-button-active-color !default;\n$accordion-icon-transition: transform .2s ease-in-out !default;\n$accordion-icon-transform: rotate(180deg) !default;\n\n$accordion-button-icon: url(\"data:image/svg+xml,\") !default;\n$accordion-button-active-icon: url(\"data:image/svg+xml,\") !default;\n// scss-docs-end accordion-variables\n\n// Tooltips\n\n// scss-docs-start tooltip-variables\n$tooltip-font-size: $font-size-sm !default;\n$tooltip-max-width: 200px !default;\n$tooltip-color: $white !default;\n$tooltip-bg: $black !default;\n$tooltip-border-radius: $border-radius !default;\n$tooltip-opacity: .9 !default;\n$tooltip-padding-y: $spacer / 4 !default;\n$tooltip-padding-x: $spacer / 2 !default;\n$tooltip-margin: 0 !default;\n\n$tooltip-arrow-width: .8rem !default;\n$tooltip-arrow-height: .4rem !default;\n$tooltip-arrow-color: $tooltip-bg !default;\n// scss-docs-end tooltip-variables\n\n// Form tooltips must come after regular tooltips\n// scss-docs-start tooltip-feedback-variables\n$form-feedback-tooltip-padding-y: $tooltip-padding-y !default;\n$form-feedback-tooltip-padding-x: $tooltip-padding-x !default;\n$form-feedback-tooltip-font-size: $tooltip-font-size !default;\n$form-feedback-tooltip-line-height: null !default;\n$form-feedback-tooltip-opacity: $tooltip-opacity !default;\n$form-feedback-tooltip-border-radius: $tooltip-border-radius !default;\n// scss-docs-start tooltip-feedback-variables\n\n\n// Popovers\n\n// scss-docs-start popover-variables\n$popover-font-size: $font-size-sm !default;\n$popover-bg: $white !default;\n$popover-max-width: 276px !default;\n$popover-border-width: $border-width !default;\n$popover-border-color: rgba($black, .2) !default;\n$popover-border-radius: $border-radius-lg !default;\n$popover-inner-border-radius: subtract($popover-border-radius, $popover-border-width) !default;\n$popover-box-shadow: $box-shadow !default;\n\n$popover-header-bg: shade-color($popover-bg, 6%) !default;\n$popover-header-color: $headings-color !default;\n$popover-header-padding-y: .5rem !default;\n$popover-header-padding-x: $spacer !default;\n\n$popover-body-color: $body-color !default;\n$popover-body-padding-y: $spacer !default;\n$popover-body-padding-x: $spacer !default;\n\n$popover-arrow-width: 1rem !default;\n$popover-arrow-height: .5rem !default;\n$popover-arrow-color: $popover-bg !default;\n\n$popover-arrow-outer-color: fade-in($popover-border-color, .05) !default;\n// scss-docs-end popover-variables\n\n\n// Toasts\n\n// scss-docs-start toast-variables\n$toast-max-width: 350px !default;\n$toast-padding-x: .75rem !default;\n$toast-padding-y: .5rem !default;\n$toast-font-size: .875rem !default;\n$toast-color: null !default;\n$toast-background-color: rgba($white, .85) !default;\n$toast-border-width: 1px !default;\n$toast-border-color: rgba(0, 0, 0, .1) !default;\n$toast-border-radius: $border-radius !default;\n$toast-box-shadow: $box-shadow !default;\n$toast-spacing: $container-padding-x !default;\n\n$toast-header-color: $gray-600 !default;\n$toast-header-background-color: rgba($white, .85) !default;\n$toast-header-border-color: rgba(0, 0, 0, .05) !default;\n// scss-docs-end toast-variables\n\n\n// Badges\n\n// scss-docs-start badge-variables\n$badge-font-size: .75em !default;\n$badge-font-weight: $font-weight-bold !default;\n$badge-color: $white !default;\n$badge-padding-y: .35em !default;\n$badge-padding-x: .65em !default;\n$badge-border-radius: $border-radius !default;\n// scss-docs-end badge-variables\n\n\n// Modals\n\n// scss-docs-start modal-variables\n$modal-inner-padding: $spacer !default;\n\n$modal-footer-margin-between: .5rem !default;\n\n$modal-dialog-margin: .5rem !default;\n$modal-dialog-margin-y-sm-up: 1.75rem !default;\n\n$modal-title-line-height: $line-height-base !default;\n\n$modal-content-color: null !default;\n$modal-content-bg: $white !default;\n$modal-content-border-color: rgba($black, .2) !default;\n$modal-content-border-width: $border-width !default;\n$modal-content-border-radius: $border-radius-lg !default;\n$modal-content-inner-border-radius: subtract($modal-content-border-radius, $modal-content-border-width) !default;\n$modal-content-box-shadow-xs: $box-shadow-sm !default;\n$modal-content-box-shadow-sm-up: $box-shadow !default;\n\n$modal-backdrop-bg: $black !default;\n$modal-backdrop-opacity: .5 !default;\n$modal-header-border-color: $border-color !default;\n$modal-footer-border-color: $modal-header-border-color !default;\n$modal-header-border-width: $modal-content-border-width !default;\n$modal-footer-border-width: $modal-header-border-width !default;\n$modal-header-padding-y: $modal-inner-padding !default;\n$modal-header-padding-x: $modal-inner-padding !default;\n$modal-header-padding: $modal-header-padding-y $modal-header-padding-x !default; // Keep this for backwards compatibility\n\n$modal-sm: 300px !default;\n$modal-md: 500px !default;\n$modal-lg: 800px !default;\n$modal-xl: 1140px !default;\n\n$modal-fade-transform: translate(0, -50px) !default;\n$modal-show-transform: none !default;\n$modal-transition: transform .3s ease-out !default;\n$modal-scale-transform: scale(1.02) !default;\n// scss-docs-end modal-variables\n\n\n// Alerts\n//\n// Define alert colors, border radius, and padding.\n\n// scss-docs-start alert-variables\n$alert-padding-y: $spacer !default;\n$alert-padding-x: $spacer !default;\n$alert-margin-bottom: 1rem !default;\n$alert-border-radius: $border-radius !default;\n$alert-link-font-weight: $font-weight-bold !default;\n$alert-border-width: $border-width !default;\n$alert-bg-scale: -80% !default;\n$alert-border-scale: -70% !default;\n$alert-color-scale: 40% !default;\n$alert-dismissible-padding-r: $alert-padding-x * 3 !default; // 3x covers width of x plus default padding on either side\n// scss-docs-end alert-variables\n\n\n// Progress bars\n\n// scss-docs-start progress-variables\n$progress-height: 1rem !default;\n$progress-font-size: $font-size-base * .75 !default;\n$progress-bg: $gray-200 !default;\n$progress-border-radius: $border-radius !default;\n$progress-box-shadow: $box-shadow-inset !default;\n$progress-bar-color: $white !default;\n$progress-bar-bg: $primary !default;\n$progress-bar-animation-timing: 1s linear infinite !default;\n$progress-bar-transition: width .6s ease !default;\n// scss-docs-end progress-variables\n\n\n// List group\n\n// scss-docs-start list-group-variables\n$list-group-color: null !default;\n$list-group-bg: $white !default;\n$list-group-border-color: rgba($black, .125) !default;\n$list-group-border-width: $border-width !default;\n$list-group-border-radius: $border-radius !default;\n\n$list-group-item-padding-y: $spacer / 2 !default;\n$list-group-item-padding-x: $spacer !default;\n$list-group-item-bg-scale: -80% !default;\n$list-group-item-color-scale: 40% !default;\n\n$list-group-hover-bg: $gray-100 !default;\n$list-group-active-color: $component-active-color !default;\n$list-group-active-bg: $component-active-bg !default;\n$list-group-active-border-color: $list-group-active-bg !default;\n\n$list-group-disabled-color: $gray-600 !default;\n$list-group-disabled-bg: $list-group-bg !default;\n\n$list-group-action-color: $gray-700 !default;\n$list-group-action-hover-color: $list-group-action-color !default;\n\n$list-group-action-active-color: $body-color !default;\n$list-group-action-active-bg: $gray-200 !default;\n// scss-docs-end list-group-variables\n\n\n// Image thumbnails\n\n// scss-docs-start thumbnail-variables\n$thumbnail-padding: .25rem !default;\n$thumbnail-bg: $body-bg !default;\n$thumbnail-border-width: $border-width !default;\n$thumbnail-border-color: $gray-300 !default;\n$thumbnail-border-radius: $border-radius !default;\n$thumbnail-box-shadow: $box-shadow-sm !default;\n// scss-docs-end thumbnail-variables\n\n\n// Figures\n\n// scss-docs-start figure-variables\n$figure-caption-font-size: $small-font-size !default;\n$figure-caption-color: $gray-600 !default;\n// scss-docs-end figure-variables\n\n\n// Breadcrumbs\n\n// scss-docs-start breadcrumb-variables\n$breadcrumb-font-size: null !default;\n$breadcrumb-padding-y: 0 !default;\n$breadcrumb-padding-x: 0 !default;\n$breadcrumb-item-padding-x: .5rem !default;\n$breadcrumb-margin-bottom: 1rem !default;\n$breadcrumb-bg: null !default;\n$breadcrumb-divider-color: $gray-600 !default;\n$breadcrumb-active-color: $gray-600 !default;\n$breadcrumb-divider: quote(\"/\") !default;\n$breadcrumb-divider-flipped: $breadcrumb-divider !default;\n$breadcrumb-border-radius: null !default;\n// scss-docs-end breadcrumb-variables\n\n// Carousel\n\n// scss-docs-start carousel-variables\n$carousel-control-color: $white !default;\n$carousel-control-width: 15% !default;\n$carousel-control-opacity: .5 !default;\n$carousel-control-hover-opacity: .9 !default;\n$carousel-control-transition: opacity .15s ease !default;\n\n$carousel-indicator-width: 30px !default;\n$carousel-indicator-height: 3px !default;\n$carousel-indicator-hit-area-height: 10px !default;\n$carousel-indicator-spacer: 3px !default;\n$carousel-indicator-opacity: .5 !default;\n$carousel-indicator-active-bg: $white !default;\n$carousel-indicator-active-opacity: 1 !default;\n$carousel-indicator-transition: opacity .6s ease !default;\n\n$carousel-caption-width: 70% !default;\n$carousel-caption-color: $white !default;\n$carousel-caption-padding-y: 1.25rem !default;\n$carousel-caption-spacer: 1.25rem !default;\n\n$carousel-control-icon-width: 2rem !default;\n\n$carousel-control-prev-icon-bg: url(\"data:image/svg+xml,\") !default;\n$carousel-control-next-icon-bg: url(\"data:image/svg+xml,\") !default;\n\n$carousel-transition-duration: .6s !default;\n$carousel-transition: transform $carousel-transition-duration ease-in-out !default; // Define transform transition first if using multiple transitions (e.g., `transform 2s ease, opacity .5s ease-out`)\n\n$carousel-dark-indicator-active-bg: $black !default;\n$carousel-dark-caption-color: $black !default;\n$carousel-dark-control-icon-filter: invert(1) grayscale(100) !default;\n// scss-docs-end carousel-variables\n\n\n// Spinners\n\n// scss-docs-start spinner-variables\n$spinner-width: 2rem !default;\n$spinner-height: $spinner-width !default;\n$spinner-border-width: .25em !default;\n$spinner-animation-speed: .75s !default;\n\n$spinner-width-sm: 1rem !default;\n$spinner-height-sm: $spinner-width-sm !default;\n$spinner-border-width-sm: .2em !default;\n// scss-docs-end spinner-variables\n\n\n// Close\n\n// scss-docs-start close-variables\n$btn-close-width: 1em !default;\n$btn-close-height: $btn-close-width !default;\n$btn-close-padding-x: .25em !default;\n$btn-close-padding-y: $btn-close-padding-x !default;\n$btn-close-color: $black !default;\n$btn-close-bg: url(\"data:image/svg+xml,\") !default;\n$btn-close-focus-shadow: $input-btn-focus-box-shadow !default;\n$btn-close-opacity: .5 !default;\n$btn-close-hover-opacity: .75 !default;\n$btn-close-focus-opacity: 1 !default;\n$btn-close-disabled-opacity: .25 !default;\n$btn-close-white-filter: invert(1) grayscale(100%) brightness(200%) !default;\n// scss-docs-end close-variables\n\n\n// Offcanvas\n\n// scss-docs-start offcanvas-variables\n$offcanvas-padding-y: $modal-inner-padding !default;\n$offcanvas-padding-x: $modal-inner-padding !default;\n$offcanvas-horizontal-width: 400px !default;\n$offcanvas-vertical-height: 30vh !default;\n$offcanvas-transition-duration: .3s !default;\n$offcanvas-border-color: $modal-content-border-color !default;\n$offcanvas-border-width: $modal-content-border-width !default;\n$offcanvas-title-line-height: $modal-title-line-height !default;\n$offcanvas-bg-color: $modal-content-bg !default;\n$offcanvas-color: $modal-content-color !default;\n$offcanvas-body-backdrop-color: rgba($modal-backdrop-bg, $modal-backdrop-opacity) !default;\n$offcanvas-box-shadow: $modal-content-box-shadow-xs !default;\n// scss-docs-end offcanvas-variables\n\n// Code\n\n$code-font-size: $small-font-size !default;\n$code-color: $pink !default;\n\n$kbd-padding-y: .2rem !default;\n$kbd-padding-x: .4rem !default;\n$kbd-font-size: $code-font-size !default;\n$kbd-color: $white !default;\n$kbd-bg: $gray-900 !default;\n\n$pre-color: null !default;\n","// Loop over each breakpoint\n@each $breakpoint in map-keys($grid-breakpoints) {\n\n // Generate media query if needed\n @include media-breakpoint-up($breakpoint) {\n $infix: breakpoint-infix($breakpoint, $grid-breakpoints);\n\n // Loop over each utility property\n @each $key, $utility in $utilities {\n // The utility can be disabled with `false`, thus check if the utility is a map first\n // Only proceed if responsive media queries are enabled or if it's the base media query\n @if type-of($utility) == \"map\" and (map-get($utility, responsive) or $infix == \"\") {\n @include generate-utility($utility, $infix);\n }\n }\n }\n}\n\n// RFS rescaling\n@media (min-width: $rfs-mq-value) {\n @each $breakpoint in map-keys($grid-breakpoints) {\n $infix: breakpoint-infix($breakpoint, $grid-breakpoints);\n\n @if (map-get($grid-breakpoints, $breakpoint) < $rfs-breakpoint) {\n // Loop over each utility property\n @each $key, $utility in $utilities {\n // The utility can be disabled with `false`, thus check if the utility is a map first\n // Only proceed if responsive media queries are enabled or if it's the base media query\n @if type-of($utility) == \"map\" and map-get($utility, rfs) and (map-get($utility, responsive) or $infix == \"\") {\n @include generate-utility($utility, $infix, true);\n }\n }\n }\n }\n}\n\n\n// Print utilities\n@media print {\n @each $key, $utility in $utilities {\n // The utility can be disabled with `false`, thus check if the utility is a map first\n // Then check if the utility needs print styles\n @if type-of($utility) == \"map\" and map-get($utility, print) == true {\n @include generate-utility($utility, \"-print\");\n }\n }\n}\n"]} \ No newline at end of file diff --git a/core/static/css/bootstrap-reboot.css b/core/static/css/bootstrap-reboot.css new file mode 100644 index 0000000..263a563 --- /dev/null +++ b/core/static/css/bootstrap-reboot.css @@ -0,0 +1,8 @@ +/*! + * Bootstrap Reboot v5.0.0-beta1 (https://getbootstrap.com/) + * Copyright 2011-2020 The Bootstrap Authors + * Copyright 2011-2020 Twitter, Inc. + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) + * Forked from Normalize.css, licensed MIT (https://github.com/necolas/normalize.css/blob/master/LICENSE.md) + */*,::after,::before{box-sizing:border-box}@media (prefers-reduced-motion:no-preference){:root{scroll-behavior:smooth}}body{margin:0;font-family:"Noto Sans",sans-serif;font-size:1rem;font-weight:400;line-height:1.5;color:#393939;background-color:#fff;-webkit-text-size-adjust:100%;-webkit-tap-highlight-color:transparent}hr{margin:1rem 0;color:inherit;background-color:currentColor;border:0;opacity:.25}hr:not([size]){height:1px}h1,h2,h3,h4,h5,h6{margin-top:0;margin-bottom:.5rem;font-weight:500;line-height:1.2}h1{font-size:calc(1.375rem + 1.5vw)}@media (min-width:1200px){h1{font-size:2.5rem}}h2{font-size:calc(1.325rem + .9vw)}@media (min-width:1200px){h2{font-size:2rem}}h3{font-size:calc(1.3rem + .6vw)}@media (min-width:1200px){h3{font-size:1.75rem}}h4{font-size:calc(1.275rem + .3vw)}@media (min-width:1200px){h4{font-size:1.5rem}}h5{font-size:1.25rem}h6{font-size:1rem}p{margin-top:0;margin-bottom:1rem}abbr[data-bs-original-title],abbr[title]{text-decoration:underline dotted;cursor:help;text-decoration-skip-ink:none}address{margin-bottom:1rem;font-style:normal;line-height:inherit}ol,ul{padding-left:2rem}dl,ol,ul{margin-top:0;margin-bottom:1rem}ol ol,ol ul,ul ol,ul ul{margin-bottom:0}dt{font-weight:700}dd{margin-bottom:.5rem;margin-left:0}blockquote{margin:0 0 1rem}b,strong{font-weight:bolder}small{font-size:.875em}mark{padding:.2em;background-color:#fcf8e3}sub,sup{position:relative;font-size:.75em;line-height:0;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}a{color:#3867ce;text-decoration:underline}a:hover{color:#2d52a5}a:not([href]):not([class]),a:not([href]):not([class]):hover{color:inherit;text-decoration:none}code,kbd,pre,samp{font-family:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;font-size:1em;direction:ltr;unicode-bidi:bidi-override}pre{display:block;margin-top:0;margin-bottom:1rem;overflow:auto;font-size:.875em}pre code{font-size:inherit;color:inherit;word-break:normal}code{font-size:.875em;color:#c32aa3;word-wrap:break-word}a>code{color:inherit}kbd{padding:.2rem .4rem;font-size:.875em;color:#fff;background-color:#393939;border-radius:.12 .5rem}kbd kbd{padding:0;font-size:1em;font-weight:700}figure{margin:0 0 1rem}img,svg{vertical-align:middle}table{caption-side:bottom;border-collapse:collapse}caption{padding-top:.5rem;padding-bottom:.5rem;color:rgba(0,0,0,.6);text-align:left}th{text-align:inherit;text-align:-webkit-match-parent}tbody,td,tfoot,th,thead,tr{border-color:inherit;border-style:solid;border-width:0}label{display:inline-block}button{border-radius:0}button:focus:not(:focus-visible){outline:0}button,input,optgroup,select,textarea{margin:0;font-family:inherit;font-size:inherit;line-height:inherit}button,select{text-transform:none}[role=button]{cursor:pointer}select{word-wrap:normal}select:disabled{opacity:1}[list]::-webkit-calendar-picker-indicator{display:none}[type=button],[type=reset],[type=submit],button{-webkit-appearance:button}[type=button]:not(:disabled),[type=reset]:not(:disabled),[type=submit]:not(:disabled),button:not(:disabled){cursor:pointer}::-moz-focus-inner{padding:0;border-style:none}textarea{resize:vertical}fieldset{min-width:0;padding:0;margin:0;border:0}legend{float:left;width:100%;padding:0;margin-bottom:.5rem;font-size:calc(1.275rem + .3vw);line-height:inherit}@media (min-width:1200px){legend{font-size:1.5rem}}legend+*{clear:left}::-webkit-datetime-edit-day-field,::-webkit-datetime-edit-fields-wrapper,::-webkit-datetime-edit-hour-field,::-webkit-datetime-edit-minute,::-webkit-datetime-edit-month-field,::-webkit-datetime-edit-text,::-webkit-datetime-edit-year-field{padding:0}::-webkit-inner-spin-button{height:auto}[type=search]{outline-offset:-2px;-webkit-appearance:textfield}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-color-swatch-wrapper{padding:0}::file-selector-button{font:inherit}::-webkit-file-upload-button{font:inherit;-webkit-appearance:button}output{display:inline-block}iframe{border:0}summary{display:list-item;cursor:pointer}progress{vertical-align:baseline}[hidden]{display:none!important} +/*# sourceMappingURL=bootstrap-reboot.css.map */ diff --git a/core/static/css/bootstrap-reboot.css.map b/core/static/css/bootstrap-reboot.css.map new file mode 100644 index 0000000..edd764a --- /dev/null +++ b/core/static/css/bootstrap-reboot.css.map @@ -0,0 +1 @@ +{"version":3,"sources":["bootstrap-reboot.scss","../../../node_modules/bootstrap/scss/_reboot.scss","../../common/scss/_vars/_font.scss","../../../node_modules/bootstrap/scss/vendor/_rfs.scss","settings/_variables.scss","../../common/scss/_vars/_colors.scss","../../../node_modules/bootstrap/scss/_functions.scss","../../../node_modules/bootstrap/scss/mixins/_border-radius.scss","bootstrap-reboot.css"],"names":[],"mappings":"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","file":"bootstrap-reboot.css","sourcesContent":["/*!\n * Bootstrap Reboot v5.0.0-beta1 (https://getbootstrap.com/)\n * Copyright 2011-2020 The Bootstrap Authors\n * Copyright 2011-2020 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * Forked from Normalize.css, licensed MIT (https://github.com/necolas/normalize.css/blob/master/LICENSE.md)\n */\n\n @import \"scss/functions\";\n\n @import \"../../common/scss/itcssImports/vars\";\n @import \"../../common/scss/itcssImports/mixins\";\n @import \"./settings/variables\";\n \n // Prevent the usage of custom properties since we don't add them to `:root` in reboot\n $font-family-base: $font-family-sans-serif; // stylelint-disable-line scss/dollar-variable-default\n $font-family-code: $font-family-monospace; // stylelint-disable-line scss/dollar-variable-default\n @import \"scss/mixins\";\n @import \"scss/reboot\";\n ","// stylelint-disable declaration-no-important, selector-no-qualifying-type, property-no-vendor-prefix\n\n\n// Reboot\n//\n// Normalization of HTML elements, manually forked from Normalize.css to remove\n// styles targeting irrelevant browsers while applying new styles.\n//\n// Normalize is licensed MIT. https://github.com/necolas/normalize.css\n\n\n// Document\n//\n// Change from `box-sizing: content-box` so that `width` is not affected by `padding` or `border`.\n\n*,\n*::before,\n*::after {\n box-sizing: border-box;\n}\n\n\n// Root\n//\n// Ability to the value of the root font sizes, affecting the value of `rem`.\n// null by default, thus nothing is generated.\n\n:root {\n font-size: $font-size-root;\n\n @if $enable-smooth-scroll {\n @media (prefers-reduced-motion: no-preference) {\n scroll-behavior: smooth;\n }\n }\n}\n\n\n// Body\n//\n// 1. Remove the margin in all browsers.\n// 2. As a best practice, apply a default `background-color`.\n// 3. Prevent adjustments of font size after orientation changes in iOS.\n// 4. Change the default tap highlight to be completely transparent in iOS.\n\nbody {\n margin: 0; // 1\n font-family: $font-family-base;\n @include font-size($font-size-base);\n font-weight: $font-weight-base;\n line-height: $line-height-base;\n color: $body-color;\n text-align: $body-text-align;\n background-color: $body-bg; // 2\n -webkit-text-size-adjust: 100%; // 3\n -webkit-tap-highlight-color: rgba($black, 0); // 4\n}\n\n\n// Content grouping\n//\n// 1. Reset Firefox's gray color\n// 2. Set correct height and prevent the `size` attribute to make the `hr` look like an input field\n\nhr {\n margin: $hr-margin-y 0;\n color: $hr-color; // 1\n background-color: currentColor;\n border: 0;\n opacity: $hr-opacity;\n}\n\nhr:not([size]) {\n height: $hr-height; // 2\n}\n\n\n// Typography\n//\n// 1. Remove top margins from headings\n// By default, `

`-`

` all receive top and bottom margins. We nuke the top\n// margin for easier control within type scales as it avoids margin collapsing.\n\n%heading {\n margin-top: 0; // 1\n margin-bottom: $headings-margin-bottom;\n font-family: $headings-font-family;\n font-style: $headings-font-style;\n font-weight: $headings-font-weight;\n line-height: $headings-line-height;\n color: $headings-color;\n}\n\nh1 {\n @extend %heading;\n @include font-size($h1-font-size);\n}\n\nh2 {\n @extend %heading;\n @include font-size($h2-font-size);\n}\n\nh3 {\n @extend %heading;\n @include font-size($h3-font-size);\n}\n\nh4 {\n @extend %heading;\n @include font-size($h4-font-size);\n}\n\nh5 {\n @extend %heading;\n @include font-size($h5-font-size);\n}\n\nh6 {\n @extend %heading;\n @include font-size($h6-font-size);\n}\n\n\n// Reset margins on paragraphs\n//\n// Similarly, the top margin on `

`s get reset. However, we also reset the\n// bottom margin to use `rem` units instead of `em`.\n\np {\n margin-top: 0;\n margin-bottom: $paragraph-margin-bottom;\n}\n\n\n// Abbreviations\n//\n// 1. Duplicate behavior to the data-bs-* attribute for our tooltip plugin\n// 2. Add the correct text decoration in Chrome, Edge, Opera, and Safari.\n// 3. Add explicit cursor to indicate changed behavior.\n// 4. Prevent the text-decoration to be skipped.\n\nabbr[title],\nabbr[data-bs-original-title] { // 1\n text-decoration: underline dotted; // 2\n cursor: help; // 3\n text-decoration-skip-ink: none; // 4\n}\n\n\n// Address\n\naddress {\n margin-bottom: 1rem;\n font-style: normal;\n line-height: inherit;\n}\n\n\n// Lists\n\nol,\nul {\n padding-left: 2rem;\n}\n\nol,\nul,\ndl {\n margin-top: 0;\n margin-bottom: 1rem;\n}\n\nol ol,\nul ul,\nol ul,\nul ol {\n margin-bottom: 0;\n}\n\ndt {\n font-weight: $dt-font-weight;\n}\n\n// 1. Undo browser default\n\ndd {\n margin-bottom: .5rem;\n margin-left: 0; // 1\n}\n\n\n// Blockquote\n\nblockquote {\n margin: 0 0 1rem;\n}\n\n\n// Strong\n//\n// Add the correct font weight in Chrome, Edge, and Safari\n\nb,\nstrong {\n font-weight: $font-weight-bolder;\n}\n\n\n// Small\n//\n// Add the correct font size in all browsers\n\nsmall {\n @include font-size($small-font-size);\n}\n\n\n// Mark\n\nmark {\n padding: $mark-padding;\n background-color: $mark-bg;\n}\n\n\n// Sub and Sup\n//\n// Prevent `sub` and `sup` elements from affecting the line height in\n// all browsers.\n\nsub,\nsup {\n position: relative;\n @include font-size($sub-sup-font-size);\n line-height: 0;\n vertical-align: baseline;\n}\n\nsub { bottom: -.25em; }\nsup { top: -.5em; }\n\n\n// Links\n\na {\n color: $link-color;\n text-decoration: $link-decoration;\n\n &:hover {\n color: $link-hover-color;\n text-decoration: $link-hover-decoration;\n }\n}\n\n// And undo these styles for placeholder links/named anchors (without href).\n// It would be more straightforward to just use a[href] in previous block, but that\n// causes specificity issues in many other styles that are too complex to fix.\n// See https://github.com/twbs/bootstrap/issues/19402\n\na:not([href]):not([class]) {\n &,\n &:hover {\n color: inherit;\n text-decoration: none;\n }\n}\n\n\n// Code\n\npre,\ncode,\nkbd,\nsamp {\n font-family: $font-family-code;\n @include font-size(1em); // Correct the odd `em` font sizing in all browsers.\n direction: ltr #{\"/* rtl:ignore */\"};\n unicode-bidi: bidi-override;\n}\n\n// 1. Remove browser default top margin\n// 2. Reset browser default of `1em` to use `rem`s\n// 3. Don't allow content to break outside\n\npre {\n display: block;\n margin-top: 0; // 1\n margin-bottom: 1rem; // 2\n overflow: auto; // 3\n @include font-size($code-font-size);\n color: $pre-color;\n\n // Account for some code outputs that place code tags in pre tags\n code {\n @include font-size(inherit);\n color: inherit;\n word-break: normal;\n }\n}\n\ncode {\n @include font-size($code-font-size);\n color: $code-color;\n word-wrap: break-word;\n\n // Streamline the style when inside anchors to avoid broken underline and more\n a > & {\n color: inherit;\n }\n}\n\nkbd {\n padding: $kbd-padding-y $kbd-padding-x;\n @include font-size($kbd-font-size);\n color: $kbd-color;\n background-color: $kbd-bg;\n @include border-radius($border-radius-sm);\n\n kbd {\n padding: 0;\n @include font-size(1em);\n font-weight: $nested-kbd-font-weight;\n }\n}\n\n\n// Figures\n//\n// Apply a consistent margin strategy (matches our type styles).\n\nfigure {\n margin: 0 0 1rem;\n}\n\n\n// Images and content\n\nimg,\nsvg {\n vertical-align: middle;\n}\n\n\n// Tables\n//\n// Prevent double borders\n\ntable {\n caption-side: bottom;\n border-collapse: collapse;\n}\n\ncaption {\n padding-top: $table-cell-padding-y;\n padding-bottom: $table-cell-padding-y;\n color: $table-caption-color;\n text-align: left;\n}\n\n// 1. Removes font-weight bold by inheriting\n// 2. Matches default `` alignment by inheriting `text-align`.\n// 3. Fix alignment for Safari\n\nth {\n font-weight: $table-th-font-weight; // 1\n text-align: inherit; // 2\n text-align: -webkit-match-parent; // 3\n}\n\nthead,\ntbody,\ntfoot,\ntr,\ntd,\nth {\n border-color: inherit;\n border-style: solid;\n border-width: 0;\n}\n\n\n// Forms\n//\n// 1. Allow labels to use `margin` for spacing.\n\nlabel {\n display: inline-block; // 1\n}\n\n// Remove the default `border-radius` that macOS Chrome adds.\n// See https://github.com/twbs/bootstrap/issues/24093\n\nbutton {\n // stylelint-disable-next-line property-disallowed-list\n border-radius: 0;\n}\n\n// Explicitly remove focus outline in Chromium when it shouldn't be\n// visible (e.g. as result of mouse click or touch tap). It already\n// should be doing this automatically, but seems to currently be\n// confused and applies its very visible two-tone outline anyway.\n\nbutton:focus:not(:focus-visible) {\n outline: 0;\n}\n\n// 1. Remove the margin in Firefox and Safari\n\ninput,\nbutton,\nselect,\noptgroup,\ntextarea {\n margin: 0; // 1\n font-family: inherit;\n @include font-size(inherit);\n line-height: inherit;\n}\n\n// Remove the inheritance of text transform in Firefox\nbutton,\nselect {\n text-transform: none;\n}\n// Set the cursor for non-`',closeClass:"toast-close-button",newestOnTop:!0,preventDuplicates:!1,progressBar:!1,progressClass:"toast-progress",rtl:!1}}function f(e){C&&C(e)}function g(t){function o(e){return null==e&&(e=""),e.replace(/&/g,"&").replace(/"/g,""").replace(/'/g,"'").replace(//g,">")}function s(){c(),u(),d(),p(),g(),C(),l(),i()}function i(){var e="";switch(t.iconClass){case"toast-success":case"toast-info":e="polite";break;default:e="assertive"}I.attr("aria-live",e)}function a(){E.closeOnHover&&I.hover(H,D),!E.onclick&&E.tapToDismiss&&I.click(b),E.closeButton&&j&&j.click(function(e){e.stopPropagation?e.stopPropagation():void 0!==e.cancelBubble&&e.cancelBubble!==!0&&(e.cancelBubble=!0),E.onCloseClick&&E.onCloseClick(e),b(!0)}),E.onclick&&I.click(function(e){E.onclick(e),b()})}function r(){I.hide(),I[E.showMethod]({duration:E.showDuration,easing:E.showEasing,complete:E.onShown}),E.timeOut>0&&(k=setTimeout(b,E.timeOut),F.maxHideTime=parseFloat(E.timeOut),F.hideEta=(new Date).getTime()+F.maxHideTime,E.progressBar&&(F.intervalId=setInterval(x,10)))}function c(){t.iconClass&&I.addClass(E.toastClass).addClass(y)}function l(){E.newestOnTop?v.prepend(I):v.append(I)}function u(){if(t.title){var e=t.title;E.escapeHtml&&(e=o(t.title)),M.append(e).addClass(E.titleClass),I.append(M)}}function d(){if(t.message){var e=t.message;E.escapeHtml&&(e=o(t.message)),B.append(e).addClass(E.messageClass),I.append(B)}}function p(){E.closeButton&&(j.addClass(E.closeClass).attr("role","button"),I.prepend(j))}function g(){E.progressBar&&(q.addClass(E.progressClass),I.prepend(q))}function C(){E.rtl&&I.addClass("rtl")}function O(e,t){if(e.preventDuplicates){if(t.message===w)return!0;w=t.message}return!1}function b(t){var n=t&&E.closeMethod!==!1?E.closeMethod:E.hideMethod,o=t&&E.closeDuration!==!1?E.closeDuration:E.hideDuration,s=t&&E.closeEasing!==!1?E.closeEasing:E.hideEasing;if(!e(":focus",I).length||t)return clearTimeout(F.intervalId),I[n]({duration:o,easing:s,complete:function(){h(I),clearTimeout(k),E.onHidden&&"hidden"!==P.state&&E.onHidden(),P.state="hidden",P.endTime=new Date,f(P)}})}function D(){(E.timeOut>0||E.extendedTimeOut>0)&&(k=setTimeout(b,E.extendedTimeOut),F.maxHideTime=parseFloat(E.extendedTimeOut),F.hideEta=(new Date).getTime()+F.maxHideTime)}function H(){clearTimeout(k),F.hideEta=0,I.stop(!0,!0)[E.showMethod]({duration:E.showDuration,easing:E.showEasing})}function x(){var e=(F.hideEta-(new Date).getTime())/F.maxHideTime*100;q.width(e+"%")}var E=m(),y=t.iconClass||E.iconClass;if("undefined"!=typeof t.optionsOverride&&(E=e.extend(E,t.optionsOverride),y=t.optionsOverride.iconClass||y),!O(E,t)){T++,v=n(E,!0);var k=null,I=e("

"),M=e("
"),B=e("
"),q=e("
"),j=e(E.closeHtml),F={intervalId:null,hideEta:null,maxHideTime:null},P={toastId:T,state:"visible",startTime:new Date,options:E,map:t};return s(),r(),a(),f(P),E.debug&&console&&console.log(P),I}}function m(){return e.extend({},p(),b.options)}function h(e){v||(v=n()),e.is(":visible")||(e.remove(),e=null,0===v.children().length&&(v.remove(),w=void 0))}var v,C,w,T=0,O={error:"error",info:"info",success:"success",warning:"warning"},b={clear:r,remove:c,error:t,getContainer:n,info:o,options:{},subscribe:s,success:i,version:"2.1.3",warning:a};return b}()})}("function"==typeof define&&define.amd?define:function(e,t){"undefined"!=typeof module&&module.exports?module.exports=t(require("jquery")):window.toastr=t(window.jQuery)}); +//# sourceMappingURL=toastr.js.map \ No newline at end of file diff --git a/core/static/journal_about/css/article.css b/core/static/journal_about/css/article.css new file mode 100644 index 0000000..64643c4 --- /dev/null +++ b/core/static/journal_about/css/article.css @@ -0,0 +1,3 @@ +@charset "UTF-8";/*! + * Article + */@-webkit-keyframes bounce{0%,100%,20%,50%,80%{-webkit-transform:translateY(0)}40%{-webkit-transform:translateY(30px)}60%{-webkit-transform:translateY(15px)}}@-moz-keyframes bounce{0%,100%,20%,50%,80%{-moz-transform:translateY(0)}40%{-moz-transform:translateY(30px)}60%{-moz-transform:translateY(15px)}}@-ms-keyframes bounce{0%,100%,20%,50%,80%{-ms-transform:translateY(0)}40%{-ms-transform:translateY(30px)}60%{-ms-transform:translateY(15px)}}@-o-keyframes bounce{0%,100%,20%,50%,80%{-o-transform:translateY(0)}40%{-o-transform:translateY(30px)}60%{-o-transform:translateY(15px)}}@keyframes bounce{0%,100%,20%,50%,80%{transform:translateY(0)}40%{transform:translateY(30px)}60%{transform:translateY(15px)}}@-webkit-keyframes slideInUp{from{-webkit-transform:translate3d(0,30%,0);transform:translate3d(0,30%,0);visibility:visible;opacity:0}to{-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0);opacity:1}}.scielo__shadow-1{box-shadow:0 1px 3px rgba(0,0,0,.12),0 1px 2px rgba(0,0,0,.24)}.scielo__shadow-2{box-shadow:0 3px 6px rgba(0,0,0,.16),0 3px 6px rgba(0,0,0,.23)}.scielo__shadow-3{box-shadow:0 10px 20px rgba(0,0,0,.19),0 6px 6px rgba(0,0,0,.23)}.scielo__shadow-4{box-shadow:0 14px 28px rgba(0,0,0,.25),0 10px 10px rgba(0,0,0,.22)}.scielo__shadow-5{box-shadow:0 19px 38px rgba(0,0,0,.3),0 15px 12px rgba(0,0,0,.22)}.article .zindexFix{z-index:98!important}.article a.goto{white-space:nowrap;text-decoration:none}.article a.goto .glyphBtn{margin-right:-5px}.article .levelMenu{padding:18px 0;margin:0;height:100px;background:#efeeec}.article .levelMenu a.selected:after{border-bottom-color:#fff;display:none}.article .levelMenu .downloadOptions li,.article .levelMenu .downloadOptions ul{display:inline;margin:0;padding:0}.article .levelMenu .downloadOptions li{list-style:none}.article .levelMenu .downloadOptions ul.dropdown-menu{display:none;min-width:inherit;width:100%;border-color:#dedddb;font-size:.9em;border-top-left-radius:0;border-top-right-radius:0;border-top:0}.article .levelMenu .downloadOptions .group:hover ul.dropdown-menu{display:block}.article .levelMenu .downloadOptions .group:hover a.btn{color:#fff}.article .levelMenu .downloadOptions .group:hover a.btn .glyphBtn.pdfDownload{background-position:center -2800px}.article .levelMenu .downloadOptions .group:hover a.btn .glyphBtn.xmlDownload{background-position:center -2845px}.article .levelMenu .downloadOptions .group:hover a.btn .glyphBtn.epubDownload{background-position:center -3700px}.article .levelMenu .downloadOptions .btn-group .group:not(:first-child):not(:last-child) .btn{border-radius:0}.article .levelMenu .downloadOptions .btn-group .group:first-child:not(:last-child) .btn{border-bottom-right-radius:0;border-top-right-radius:0}.article .levelMenu .downloadOptions .btn-group .group:first-child:not(:last-child) .btn{border-bottom-right-radius:0;border-top-right-radius:0}.article .levelMenu .downloadOptions .btn-group .group:last-child:not(:first-child) .btn{border-bottom-left-radius:0;border-top-left-radius:0}.article .levelMenu .downloadOptions .group{display:block;float:left;position:relative}.article .levelMenu .downloadOptions .group a.btn{width:100%}.article .levelMenu .downloadOptions .group+.group{margin-left:-1px}.article .levelMenu .downloadOptions .btn{text-align:left}.article .share{display:flex;justify-content:flex-end;align-items:center;height:36px}.article .share a{margin:0 3px}.article .share .sendViaMail{margin-left:4px}.article .journalMenu .language{top:10px}.article .alternativeHeader{top:0!important}.article .alternativeHeader .mainNav{height:55px}.article .mainNav{height:55px}.article .mainMenu{top:-7px}.article .xref{display:inline-block;font-weight:700;text-align:center;color:#3867ce;cursor:pointer}.article .xref.big{margin-top:0;vertical-align:middle;color:#b67f00}.article .xref a{text-decoration:none;color:#b67f00}.article sup.xref{padding:4px 0 3px}.article .ref{position:relative;display:inline}@media screen and (max-width:575px){.article .ref{position:static}}.article .ref .refCtt{-webkit-box-shadow:2px 2px 7px 0 rgba(0,0,0,.2);-moz-box-shadow:2px 2px 7px 0 rgba(0,0,0,.2);box-shadow:2px 2px 7px 0 rgba(0,0,0,.2)}.article .ref .closed{display:none}.article .ref .opened{margin-top:1.4em;padding:14px;position:absolute;width:350px;height:auto!important;overflow-y:inherit!important;overflow-x:hidden;text-overflow:ellipsis;border-radius:4px;z-index:99;background:#3867ce;color:#fff}@media screen and (max-width:575px){.article .ref .opened{width:90%}}.scielo__theme--dark .article .ref .opened{background:#86acff;color:#333;outline:2px solid red!important}.scielo__theme--light .article .ref .opened{background:#3867ce;color:#fff}.article .ref .opened:before{content:'';display:block;width:100%;position:absolute;height:.6em;margin-top:-1.6em;background:0 0;left:0}.article .ref .opened a{color:#fff!important}.article .ref .opened a:hover{text-decoration:underline}.article .ref .opened strong{display:block;margin:0 0 5px}.article .ref .opened .source{display:block;margin-top:5px}.article .ref .opened .refOverflow{overflow-x:hidden;text-overflow:ellipsis}.article .ref.footnote{letter-spacing:0}.article .ref.footnote .refCtt{padding:0}.article .ref.footnote .refCtt .refCttPadding{display:block;padding:14px}.article .ref.footnote .refCtt.opened{background:#fef5e8;border:1px solid #fce0b7;color:#333;padding:5px 10px}.article .ref.footnote .fn-title{display:block;text-transform:uppercase;color:#b67f00}.article .ref.footnote .footref{cursor:default}.article .ref.footnote .smallRef{font-size:1em;position:relative;display:block;padding:14px;width:100%;color:#fff;border:0;border-radius:0}.article .ref.footnote .smallRef .xref{position:absolute;top:12px;cursor:default}.article .ref.footnote .smallRef .xref:first-child{font-size:11px!important}.article .ref.footnote .smallRef .footrefCtt{display:block;padding-left:14px}.article .refList{margin:0;padding:0;width:100%}.article .refList *{line-height:130%}.article .refList [class*=" material-icons"],.article .refList [class^=material-icons]{line-height:1}.article .refList a{overflow-x:hidden;text-overflow:ellipsis}.article .refList.outer{padding-bottom:10px;overflow:hidden;-webkit-box-shadow:inset 0 -7px 7px -7px rgba(0,0,0,.2);box-shadow:inset 0 -7px 7px -7px rgba(0,0,0,.2)}.article .refList.full{position:absolute;height:auto!important;overflow:inherit!important;background:#fff;z-index:99;padding-bottom:0;-webkit-box-shadow:0 0 10px 0 rgba(0,0,0,.2);box-shadow:0 0 10px 0 rgba(0,0,0,.2)}.article .refList li{list-style:none;padding:16px 8px 16px 0;margin:0;width:100%;border-bottom:1px dotted #ccc}.scielo__theme--dark .article .refList li{border-bottom:1px dotted rgba(255,255,255,.3)}.scielo__theme--light .article .refList li{border-bottom:1px dotted #ccc}.article .refList li:last-child{background:0 0}.article .refList li:after{content:'';clear:both;display:block;height:1px;float:none;width:100%}.article .refList li.highlight{background-color:#f0f3fb}.article .refList li.highlight .closed{display:none}.article .refList li.highlight .opened{display:inline-block}.article .refList li strong{margin:0 0 10px}.article .refList sup{border-radius:30px}.article .refList .source{font-style:italic}.article .refList.footnote .xref.big{color:#b67f00}.article .ref-list .refList .xref{width:33px;padding:5px 10px;cursor:default;position:absolute;left:0;top:5px;margin-top:1%}.article .ref-list .refList .refCtt.opened{margin-top:1.4em}.article .ref-list .refList li{position:relative;padding-left:30px;text-overflow:ellipsis;z-index:1}.article .ref-list .refList div{display:block;overflow-wrap:break-word;word-wrap:break-word;-ms-word-break:break-all;word-break:break-all;word-break:break-word;-ms-hyphens:auto;-moz-hyphens:auto;-webkit-hyphens:auto}.article .ref-list .refList div strong{display:inline}.article .ref-list .refList.footnote li{padding:0 8px 8px 0}.article .ref-list .refList.footnote li .xref.big{position:static;width:auto}.articleCtt{background:#f7f6f4}.scielo__theme--dark .articleCtt{background:#393939}.scielo__theme--light .articleCtt{background:#f7f6f4}.articleCtt hr{border:0;background:url(../img/dashline.png) bottom left repeat-x;height:1px;margin:50px 0}.articleCtt .sci-ico-fileFigure:before,.articleCtt .sci-ico-fileFormula:before,.articleCtt .sci-ico-fileTable:before{margin-left:-2px;margin-right:-4px}.articleCtt .open-asset-modal{white-space:nowrap}.articleCtt .container{position:relative}.articleCtt .articleBlock h1{margin:0;font-size:1.9em}.articleCtt .articleBlock a:active,.articleCtt .articleBlock a:focus,.articleCtt .articleBlock a:visited{text-decoration:none}.articleCtt .articleMeta,.articleCtt .editionMeta{text-align:center;font-size:.85em}.articleCtt .articleMeta span,.articleCtt .editionMeta span{font-size:1em;margin:0;font-weight:400;color:#a7a49e}.articleCtt .articleMeta .atricleLink,.articleCtt .editionMeta .atricleLink{width:18px;background-position:center -2576px}.articleCtt .articleMeta{line-height:24px}.articleCtt .articleMeta .sci-ico-cr,.articleCtt .articleMeta .sci-ico-public-domain{font-size:21px}.articleCtt .articleMeta label{margin-left:8px;width:10%;border:1px solid #e0e0df;cursor:pointer}.articleCtt .articleMeta div{display:inline}.articleCtt .articleMeta div:first-child{margin-right:60px}.articleCtt .articleMeta .doi{color:#1b92e4}.articleCtt .license{letter-spacing:-16.28px;vertical-align:middle;line-height:44px;white-space:nowrap;display:inline-block;margin-bottom:5px;cursor:pointer}.articleCtt .license [class*=" sci-ico-"],.articleCtt .license [class^=sci-ico-]{cursor:pointer;font-size:44px}.articleCtt .license [class*=" sci-ico-"].sci-ico-cc,.articleCtt .license [class^=sci-ico-].sci-ico-cc{margin-right:4px}.articleCtt .contribGroup{color:#403d39;margin:15px 10%;font-size:1.1em;text-align:center}.articleCtt .contribGroup a.btn-fechar{display:inline-block;border-radius:100%;cursor:pointer;width:30px;height:30px;font-size:86%;padding:5px 0;text-align:center;margin-top:10px}.articleCtt .contribGroup a.btn-fechar:hover{color:#fff}.articleCtt .contribGroup .sci-ico-emailOutlined{font-size:20px;vertical-align:baseline}.articleCtt .contribGroup .dropdown{display:inline-block;padding:0 10px}.articleCtt .contribGroup .dropdown .dropdown-toggle{white-space:nowrap}.articleCtt .contribGroup .dropdown .dropdown-menu{padding:0 20px 10px 20px;color:#fff;text-align:left;box-shadow:none;border:none}.articleCtt .contribGroup .dropdown .dropdown-menu strong{display:block;margin:20px 0 8px 0;font-size:11px;color:#00314c;text-transform:uppercase}.articleCtt .contribGroup .dropdown a{cursor:pointer}.articleCtt .contribGroup .dropdown a span{display:inline-block;padding:5px 0}.articleCtt .contribGroup .dropdown.open a{color:#fff}.articleCtt .contribGroup.contribGroupAlignLeft{text-align:left;margin-left:0;margin-top:0}.articleCtt .contribGroup.contribGroupAlignLeft .dropdown:first-child{margin-left:-10px}.articleCtt .linkGroup{position:relative;font-size:.85em}.articleCtt .linkGroup a.selected{position:relative}.articleCtt .linkGroup a.selected:after{content:'';display:block;position:absolute;bottom:-16px;left:4px;width:16px;height:7px;background:url(../img/articleContent-arrow.png) bottom center no-repeat;z-index:999}.articleCtt .floatInformation{margin-top:9px;border:1px solid #ddd;padding:15px;position:absolute;display:none;z-index:99;width:100%;background:#f7f6f4}.scielo__theme--dark .articleCtt .floatInformation{background:#393939}.scielo__theme--light .articleCtt .floatInformation{background:#f7f6f4}.articleCtt .floatInformation .close{margin-top:-7px}.articleCtt .floatInformation ul{margin:0;padding:0}.articleCtt .floatInformation li{list-style:none;margin-bottom:7px;padding-left:20px}.articleCtt .floatInformation li .xref:first-child{margin-left:-22px}.articleCtt .floatInformation .rowBlock{padding:7px 15px;background:url(../img/dashline.png) bottom left repeat-x}.articleCtt .floatInformation .rowBlock:last-child{background:0 0}.articleCtt .floatInformation h3{margin:0 0 10px}.articleCtt .articleTxt{position:relative;padding:0 50px 100px;margin-bottom:60px;overflow-x:hidden;box-shadow:0 3px 6px rgba(0,0,0,.16),0 3px 6px rgba(0,0,0,.23);border-radius:4px;background:#fff}.scielo__theme--dark .articleCtt .articleTxt{background:#333}.scielo__theme--light .articleCtt .articleTxt{background:#fff}.articleCtt .articleTxt .article-title,.articleCtt .articleTxt .articleSectionTitle{margin:25px 0 12px}@media screen and (max-width:575px){.articleCtt .articleTxt .article-title,.articleCtt .articleTxt .articleSectionTitle{font-weight:700;font-size:1.75rem;line-height:1.2em;letter-spacing:-.14px}}.articleCtt .articleTxt .articleBadge-editionMeta-doi-copyLink{font-size:.85em;margin:0;font-weight:400;padding:10px 0 0;text-align:center;min-height:35px;line-height:110%;color:#6c6b6b}.scielo__theme--dark .articleCtt .articleTxt .articleBadge-editionMeta-doi-copyLink{color:#adadad}.scielo__theme--light .articleCtt .articleTxt .articleBadge-editionMeta-doi-copyLink{color:#6c6b6b}.articleCtt .articleTxt .articleBadge-editionMeta-doi-copyLink ._articleBadge{font-weight:700;opacity:.88}.articleCtt .articleTxt .articleBadge-editionMeta-doi-copyLink .group-doi{white-space:nowrap;display:inline-block}.articleCtt .articleTxt .articleBadge-editionMeta-doi-copyLink ._doi{color:#3867ce}@media screen and (max-width:575px){.articleCtt .articleTxt .articleBadge-editionMeta-doi-copyLink ._doi{display:table;white-space:pre-wrap;margin:12px 0}}.scielo__theme--dark .articleCtt .articleTxt .articleBadge-editionMeta-doi-copyLink ._doi{color:#86acff}.scielo__theme--light .articleCtt .articleTxt .articleBadge-editionMeta-doi-copyLink ._doi{color:#3867ce}.articleCtt .articleTxt .articleBadge-editionMeta-doi-copyLink .copyLink{white-space:nowrap;margin:0 0 8px 8px}.articleCtt .articleTxt .article-title{text-align:center}@media screen and (max-width:575px){.articleCtt .articleTxt .article-title{font-weight:700;font-size:1.75rem;line-height:1.2em;letter-spacing:-.14px}}.articleCtt .articleTxt .article-title .sci-ico-openAccess{margin-bottom:7px}.articleCtt .articleTxt .article-title .short-link{position:relative;visibility:hidden;cursor:pointer;text-decoration:none}.articleCtt .articleTxt .article-title .short-link [class^=sci-ico-]{vertical-align:baseline!important;margin-left:.5rem}.articleCtt .articleTxt .article-title .short-link:after{position:absolute;background:#34ad65;top:100%;left:0;right:0;bottom:0;z-index:2;text-align:center;font-family:scielo-glyphs!important;content:"\e924";color:#fff;font-size:20px;visibility:hidden;vertical-align:middle;display:flex;justify-content:center;align-items:center;border-radius:4px}.articleCtt .articleTxt .article-title .short-link.copyFeedback:after{top:0;visibility:visible}.articleCtt .articleTxt .article-title .ref .opened{margin-top:2.4em}.articleCtt .articleTxt .article-title .ref.footnote .xref:first-child{font-size:1.5rem}.articleCtt .articleTxt .article-title .ref.footnote .refCtt.opened{text-align:left;font-weight:400;font-size:18px;letter-spacing:inherit;background:#fef5e8;border:1px solid #fce0b7;color:#403d39}.articleCtt .articleTxt .article-title .ref.footnote .refCtt .refCttPadding{line-height:1.5rem}.articleCtt .articleTxt .article-title:hover .short-link{visibility:visible}.articleCtt .articleTxt h2.article-title{font-weight:400}.articleCtt .articleTxt .article-correction-title{margin:10px 15% 20px;border:2px solid #f5d431;padding:20px}.articleCtt .articleTxt .article-correction-title .panel-heading{font-size:13px;font-weight:700;text-align:left;padding:3px;padding:5px}.articleCtt .articleTxt .article-correction-title .panel-body{padding:0}.articleCtt .articleTxt .article-correction-title ul{margin:0;padding:0;text-align:left;font-size:14px}.articleCtt .articleTxt .article-correction-title li{list-style:none;padding-left:15px;position:relative}.articleCtt .articleTxt .article-correction-title li:before{content:'\00bb';font-weight:700;position:absolute;left:0}.articleCtt .articleTxt .article-correction-title a{font-weight:700}.articleCtt .articleTxt .article-correction-title a:hover{text-decoration:underline}.articleCtt .articleTxt .articleSection{padding:0 0 1px;background:url(../img/dashline.png) bottom left repeat-x}.articleCtt .articleTxt .articleSection .article-title{text-align:left}@media screen and (max-width:575px){.articleCtt .articleTxt .articleSection .article-title{font-weight:700;font-size:1.75rem;line-height:1.2em;letter-spacing:-.14px}}.articleCtt .articleTxt .articleSection:last-child{background:0 0}.articleCtt .articleTxt .articleSection .articleSignature{font-size:15px;font-style:italic}.articleCtt .articleTxt .articleSection .articleSignature small{display:block}.articleCtt .articleTxt .paragraph{position:relative;margin-bottom:25px;font-size:1em;line-height:1.7em}.articleCtt .articleTxt .btn.primary{background:#fff;font-size:1.1em;padding:10px 15px}.articleCtt .articleTxt .btn.primary:hover{color:#fff}.articleCtt .articleTxt span.formula{display:block;margin:20px 0;padding:7px;text-align:center;font-size:2em;border-radius:3px}.articleCtt .articleTxt span.formula img{max-width:95%}.articleCtt .articleTxt p{margin:0 0 15px;padding:0;overflow-wrap:break-word;word-wrap:break-word;-ms-word-break:break-all;word-break:break-all;word-break:break-word;-ms-hyphens:auto;-moz-hyphens:auto;-webkit-hyphens:auto}.articleCtt .articleTxt .articleReferral{display:flex;align-items:center;position:relative;margin-bottom:20px;padding:15px 50px 15px 140px;border:1px solid #f3f2e4;vertical-align:middle;min-height:168px}.articleCtt .articleTxt .articleReferral .arText{padding-left:25px}.articleCtt .articleTxt .articleReferral .arText h2{margin-top:0}.articleCtt .articleTxt .articleReferral .arText p{margin-bottom:0}.articleCtt .articleTxt .articleReferral .arPicture{position:relative;width:98px;margin-left:-120px}.articleCtt .articleTxt .articleReferral .arPicture small{font-size:62%;white-space:nowrap}.articleCtt .articleTxt .articleReferral .arPicture small span{display:block}.articleCtt .articleTxt .articleReferral.noPicture{padding:15px 40px;min-height:100%}.articleCtt .articleTxt .articleReferral.noPicture .arText{padding-left:0}.articleCtt .articleTxt .articleReferral.biography .arPicture{margin-top:-40px}.articleCtt .articleMenu{position:absolute;margin:25px 0 90px 0;padding:0 15px 0 0;font-size:.85em}.articleCtt .articleMenu.fixed{position:fixed;top:50px}.articleCtt .articleMenu.fixedBottom{position:absolute;top:initial;bottom:50px}.articleCtt .articleMenu li{list-style:none;padding-left:17px}.articleCtt .articleMenu li:before{content:'\00bb';display:inline-block;width:12px;text-align:center;margin-left:-17px;vertical-align:middle;margin-bottom:5px;color:#6c6b6b}.scielo__theme--dark .articleCtt .articleMenu li:before{color:#adadad}.scielo__theme--light .articleCtt .articleMenu li:before{color:#6c6b6b}.articleCtt .articleMenu li.link-to-top{margin-top:20px}.articleCtt .articleMenu li.link-to-top:before{content:'';display:inline;width:auto}.articleCtt .articleMenu li.link-to-top a .circle{width:20px;height:20px;display:inline-block;color:#fff;border-radius:100px;padding:0 0 0 3px;font-size:125%}.articleCtt .articleMenu a{display:inline-block;width:100%;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;vertical-align:middle;margin-bottom:5px;text-decoration:none;color:#6c6b6b}.scielo__theme--dark .articleCtt .articleMenu a{color:#adadad}.scielo__theme--light .articleCtt .articleMenu a{color:#6c6b6b}.articleCtt .articleMenu ul{margin:0;padding:0}.articleCtt .articleMenu li li{padding-left:7px}.articleCtt .articleMenu li li:before{display:none}.articleCtt .articleMenu li.selected:before,.articleCtt .articleMenu li.selected>a{font-weight:700;color:#00314c}.scielo__theme--dark .articleCtt .articleMenu li.selected:before,.scielo__theme--dark .articleCtt .articleMenu li.selected>a{color:#eee}.scielo__theme--light .articleCtt .articleMenu li.selected:before,.scielo__theme--light .articleCtt .articleMenu li.selected>a{color:#00314c}.articleCtt .articleMenu li.selected li a,.articleCtt .articleMenu li.selected li:before{color:#00314c}.scielo__theme--dark .articleCtt .articleMenu li.selected li a,.scielo__theme--dark .articleCtt .articleMenu li.selected li:before{color:#eee}.scielo__theme--light .articleCtt .articleMenu li.selected li a,.scielo__theme--light .articleCtt .articleMenu li.selected li:before{color:#00314c}.articleCtt .articleMenu a:active,.articleCtt .articleMenu a:focus,.articleCtt .articleMenu a:visited{text-decoration:none}.articleCtt .articleFigure{position:absolute;border:4px solid #efeeec}.articleCtt .table-notes a{display:block;padding:5px 0}.articleCtt .nav-tabs li:first-child{margin-left:15px}.articleCtt .nav-tabs a{border:1px solid #ddd;background:#fff}.articleCtt .nav-tabs a:hover{background:#f7f6f4}.scielo__theme--dark .articleCtt .nav-tabs a:hover{background:#393939}.scielo__theme--light .articleCtt .nav-tabs a:hover{background:#f7f6f4}.articleCtt .articleTimeline{margin:0 0 25px;padding:0;font-size:.9em}.articleCtt .articleTimeline li{display:inline-block;width:33%;height:40px;padding-left:25px;list-style:none}.articleCtt .articleTimeline li:before{content:'\00bb';margin-left:-25px;display:inline-block;width:22px;text-align:center}.articleCtt .documentLicense{margin:20px 0}.articleCtt .documentLicense .container-license{font-size:.8em;padding:25px;width:100%;background:#efeeec}.scielo__theme--dark .articleCtt .documentLicense .container-license{background:#414141}.scielo__theme--light .articleCtt .documentLicense .container-license{background:#efeeec}.articleCtt .documentLicense .container-license .row div:first-child{text-align:center}.articleCtt .documentLicense .container-license .row div:last-child{padding-left:0}.articleCtt .documentLicense .container-license a{cursor:pointer;display:inline-block}.articleCtt .documentLicense img{margin:0 auto;width:100%}.articleCtt .journalLicense .row{padding-bottom:25px;font-size:.9em}.articleCtt .share{text-align:center;margin-top:-3px;background:url(../img/dashline.png) bottom left repeat-x;padding-bottom:5px}.articleCtt .collapseBlock{font-size:.9em}.articleCtt .collapseBlock .collapseTitle{position:relative;display:block;background:url(../img/dashline.png) bottom left repeat-x;padding:7px 2px}.articleCtt .collapseBlock .collapseTitle .collapseIcon{position:absolute;right:0}.articleCtt .collapseBlock .collapseTitle:active,.articleCtt .collapseBlock .collapseTitle:focus{text-decoration:none}.articleCtt .collapseContent{background:#f7f6f5;font-size:.9em;padding:15px}.articleCtt .collapseContent ul{margin:0;padding:0}.articleCtt .collapseContent li{list-style:none;padding-left:15px;margin-bottom:5px}.articleCtt .collapseContent li:before{content:'\00bb';display:inline-block;width:13px;text-align:center;margin-left:-15px}.articleCtt .collapseContent .logos:before{width:22px;height:12px;display:inline-block;content:'';background:url(../img/button.glyphs.png) no-repeat}.articleCtt .collapseContent .logos.scielo:before{background-position:center -4556px}.articleCtt .collapseContent .logos.fapesp:before{background-position:center -4506px}.articleCtt .collapseContent .logos.google:before{background-position:center -4531px}.articleCtt .functionsBlock{position:absolute;right:0;z-index:99}.articleCtt .articleBadge{text-align:center}.articleCtt .articleBadge span{display:inline-block;padding:5px 10px;margin:0 0 15px 0;border-radius:4px;position:relative;font-size:20px}.articleCtt .articleBadge span:after{content:'';position:absolute;left:0;right:0;bottom:0}.articleCtt .articleCttLeft .article-title,.articleCtt .articleCttLeft .articleBadge,.articleCtt .articleCttLeft .articleMeta,.articleCtt .articleCttLeft .editionMeta{text-align:left!important}.articleCtt .articleCttLeft .contribGroup{margin-left:0;margin-right:0;text-align:left}.articleCtt .articleCttLeft .contribGroup .dropdown:first-child{margin-left:-10px}#translateArticleModal .modal-body{font-size:.9em;background:#f7f6f4}.scielo__theme--dark #translateArticleModal .modal-body{background:#393939}.scielo__theme--light #translateArticleModal .modal-body{background:#f7f6f4}#translateArticleModal .modal-footer{margin-top:0}#translateArticleModal .dashline{padding-bottom:5px;background:url(../img/dashline.png) bottom left repeat-x}#translateArticleModal th{padding:12px;border:1px solid #ddd;border-radius:4px;background:#fdfcf9}#translateArticleModal table{width:100%}#translateArticleModal td{padding:8px 10px;border-bottom:1px solid #dee5f5;text-align:center}#translateArticleModal th{vertical-align:top}.ModalDefault .tab-pane,.articleCtt .tab-pane{font-size:.9em}.ModalDefault .tab-pane p,.articleCtt .tab-pane p{margin:10px 0}.ModalDefault .tab-pane .center,.articleCtt .tab-pane .center{text-align:center}.ModalDefault .tab-pane label,.articleCtt .tab-pane label{font-weight:400;color:#888}.ModalDefault .tab-pane .big,.articleCtt .tab-pane .big{font-size:2em;font-weight:400}.ModalDefault .tab-pane table td,.ModalDefault .tab-pane table th,.articleCtt .tab-pane table td,.articleCtt .tab-pane table th{padding:7px 10px}.ModalDefault .tab-pane table th,.articleCtt .tab-pane table th{font-weight:400;color:#b7b7b7}.ModalDefault .tab-pane a.midGlyph,.articleCtt .tab-pane a.midGlyph{display:block;text-align:center}.ModalDefault .fig,.ModalDefault .table,.articleCtt .fig,.articleCtt .table{margin-top:10px;margin-bottom:40px;position:relative;width:initial}.ModalDefault .fig .col-md-8,.ModalDefault .table .col-md-8,.articleCtt .fig .col-md-8,.articleCtt .table .col-md-8{padding-top:10px}.ModalDefault .fig strong,.ModalDefault .table strong,.articleCtt .fig strong,.articleCtt .table strong{padding:0}.ModalDefault .fig .thumb,.ModalDefault .fig .thumbOff,.ModalDefault .table .thumb,.ModalDefault .table .thumbOff,.articleCtt .fig .thumb,.articleCtt .fig .thumbOff,.articleCtt .table .thumb,.articleCtt .table .thumbOff{height:160px;background-size:100% auto;text-indent:-5000px;background-color:#e5e4e3;cursor:pointer;border-radius:3px;position:relative;border:4px solid #ccc}.scielo__theme--dark .ModalDefault .fig .thumb,.scielo__theme--dark .ModalDefault .fig .thumbOff,.scielo__theme--dark .ModalDefault .table .thumb,.scielo__theme--dark .ModalDefault .table .thumbOff,.scielo__theme--dark .articleCtt .fig .thumb,.scielo__theme--dark .articleCtt .fig .thumbOff,.scielo__theme--dark .articleCtt .table .thumb,.scielo__theme--dark .articleCtt .table .thumbOff{border:4px solid rgba(255,255,255,.3)}.scielo__theme--light .ModalDefault .fig .thumb,.scielo__theme--light .ModalDefault .fig .thumbOff,.scielo__theme--light .ModalDefault .table .thumb,.scielo__theme--light .ModalDefault .table .thumbOff,.scielo__theme--light .articleCtt .fig .thumb,.scielo__theme--light .articleCtt .fig .thumbOff,.scielo__theme--light .articleCtt .table .thumb,.scielo__theme--light .articleCtt .table .thumbOff{border:4px solid #ccc}.ModalDefault .fig .thumb img,.ModalDefault .fig .thumbOff img,.ModalDefault .table .thumb img,.ModalDefault .table .thumbOff img,.articleCtt .fig .thumb img,.articleCtt .fig .thumbOff img,.articleCtt .table .thumb img,.articleCtt .table .thumbOff img{width:100%}.ModalDefault .fig .thumb .zoom,.ModalDefault .fig .thumbOff .zoom,.ModalDefault .table .thumb .zoom,.ModalDefault .table .thumbOff .zoom,.articleCtt .fig .thumb .zoom,.articleCtt .fig .thumbOff .zoom,.articleCtt .table .thumb .zoom,.articleCtt .table .thumbOff .zoom{position:absolute;bottom:10px;right:10px;border-radius:4px;font-size:24px;text-align:center;width:30px;height:30px;line-height:30px;text-indent:0;background-color:#3867ce;color:#fff}.scielo__theme--dark .ModalDefault .fig .thumb .zoom,.scielo__theme--dark .ModalDefault .fig .thumbOff .zoom,.scielo__theme--dark .ModalDefault .table .thumb .zoom,.scielo__theme--dark .ModalDefault .table .thumbOff .zoom,.scielo__theme--dark .articleCtt .fig .thumb .zoom,.scielo__theme--dark .articleCtt .fig .thumbOff .zoom,.scielo__theme--dark .articleCtt .table .thumb .zoom,.scielo__theme--dark .articleCtt .table .thumbOff .zoom{background-color:#86acff;color:#333}.scielo__theme--light .ModalDefault .fig .thumb .zoom,.scielo__theme--light .ModalDefault .fig .thumbOff .zoom,.scielo__theme--light .ModalDefault .table .thumb .zoom,.scielo__theme--light .ModalDefault .table .thumbOff .zoom,.scielo__theme--light .articleCtt .fig .thumb .zoom,.scielo__theme--light .articleCtt .fig .thumbOff .zoom,.scielo__theme--light .articleCtt .table .thumb .zoom,.scielo__theme--light .articleCtt .table .thumbOff .zoom{background-color:#3867ce;color:#fff}.ModalDefault .fig .thumbOff,.ModalDefault .table .thumbOff,.articleCtt .fig .thumbOff,.articleCtt .table .thumbOff{font-family:'Material Icons Outlined'!important;text-align:center;line-height:140px;font-size:100px;color:#b7b4af;text-indent:0;overflow:hidden;background:#fff}.scielo__theme--dark .ModalDefault .fig .thumbOff,.scielo__theme--dark .ModalDefault .table .thumbOff,.scielo__theme--dark .articleCtt .fig .thumbOff,.scielo__theme--dark .articleCtt .table .thumbOff{background:#333}.scielo__theme--light .ModalDefault .fig .thumbOff,.scielo__theme--light .ModalDefault .table .thumbOff,.scielo__theme--light .articleCtt .fig .thumbOff,.scielo__theme--light .articleCtt .table .thumbOff{background:#fff}.ModalDefault .fig .thumbOff:before,.ModalDefault .table .thumbOff:before,.articleCtt .fig .thumbOff:before,.articleCtt .table .thumbOff:before{content:"table_chart"}.ModalDefault .fig .thumbImg,.ModalDefault .table .thumbImg,.articleCtt .fig .thumbImg,.articleCtt .table .thumbImg{position:relative;overflow:hidden;box-sizing:border-box;height:140px;border:4px solid #e5e4e3;border-radius:3px;background-color:#e5e4e3;cursor:pointer}.ModalDefault .fig .thumbImg img,.ModalDefault .table .thumbImg img,.articleCtt .fig .thumbImg img,.articleCtt .table .thumbImg img{width:100%;height:auto;min-height:131px;display:block}.ModalDefault .fig .thumbImg .zoom,.ModalDefault .table .thumbImg .zoom,.articleCtt .fig .thumbImg .zoom,.articleCtt .table .thumbImg .zoom{position:absolute;bottom:10px;right:10px;width:30px;height:30px;border-radius:4px;padding:5px;display:inline-block;font-size:24px;line-height:50%;background-color:#3867ce;color:#fff}.scielo__theme--dark .ModalDefault .fig .thumbImg .zoom,.scielo__theme--dark .ModalDefault .table .thumbImg .zoom,.scielo__theme--dark .articleCtt .fig .thumbImg .zoom,.scielo__theme--dark .articleCtt .table .thumbImg .zoom{background-color:#86acff;color:#333}.scielo__theme--light .ModalDefault .fig .thumbImg .zoom,.scielo__theme--light .ModalDefault .table .thumbImg .zoom,.scielo__theme--light .articleCtt .fig .thumbImg .zoom,.scielo__theme--light .articleCtt .table .thumbImg .zoom{background-color:#3867ce;color:#fff}.ModalDefault .fig .preview,.ModalDefault .table .preview,.articleCtt .fig .preview,.articleCtt .table .preview{position:absolute;border-radius:3px;border:4px solid #e5e4e3;background-color:#fff;top:0;right:0;z-index:99;padding:10px}.ModalDefault .fig .preview img,.ModalDefault .table .preview img,.articleCtt .fig .preview img,.articleCtt .table .preview img{width:100%}.ModalDefault .fig .figInfo,.ModalDefault .table .figInfo,.articleCtt .fig .figInfo,.articleCtt .table .figInfo{padding:10px 10px 10px 45px;line-height:1.4em;color:#8a8987;position:relative}.ModalDefault .fig .figInfo .glyphBtn,.ModalDefault .table .figInfo .glyphBtn,.articleCtt .fig .figInfo .glyphBtn,.articleCtt .table .figInfo .glyphBtn{position:absolute;top:10px;margin-left:-34px}.ModalDefault .formula,.articleCtt .formula{text-align:center;font-family:"Times New Roman",Times,serif;margin-bottom:15px}.ModalDefault .formula span,.articleCtt .formula span{font-family:Arial;font-weight:700;font-size:16px;display:block;width:100%}.ModalDefault .formula .formula-container,.articleCtt .formula .formula-container{width:100%;display:flex;align-content:center;align-items:center;position:relative;flex-direction:column}.ModalDefault .formula .formula-container .MathJax_Display,.ModalDefault .formula .formula-container .MathJax_SVG,.ModalDefault .formula .formula-container .MathJax_SVG_Display,.ModalDefault .formula .formula-container .formula-body,.articleCtt .formula .formula-container .MathJax_Display,.articleCtt .formula .formula-container .MathJax_SVG,.articleCtt .formula .formula-container .MathJax_SVG_Display,.articleCtt .formula .formula-container .formula-body{flex:99;font-size:1.4rem!important}.ModalDefault .formula .formula-container>span,.articleCtt .formula .formula-container>span{flex:1}.ModalDefault .formula .formula-container .label,.articleCtt .formula .formula-container .label{flex:1;color:#000;font-size:1.4rem;display:block;width:auto}.ModalDefault .formula .formula-container .label:first-child,.articleCtt .formula .formula-container .label:first-child{left:0}.ModalDefault .formula .formula-container .label:last-child,.articleCtt .formula .formula-container .label:last-child{right:0}.ModalDefault .formula svg,.articleCtt .formula svg{display:block;width:100%}.ModalDefault .modal-center{text-align:center}.ModalDefault .md-list{margin:0;padding:0;list-style:none}.ModalDefault .md-list li{margin-bottom:4px}.ModalDefault .md-list li:last-child{margin-bottom:0}.ModalDefault .md-list li.colspan3{margin-bottom:10px}.ModalDefault .md-list li.colspan3 a{display:flex;vertical-align:middle;justify-content:center;align-items:center;height:63px;white-space:normal;overflow:hidden}.ModalDefault .md-list.inline li{float:left;min-width:18%;margin-right:10px}.ModalDefault .md-tabs{margin:0;padding:0}.ModalDefault .md-tabs>li{display:flex;align-items:center;justify-content:center;text-align:center;padding:0}.ModalDefault .md-tabs>li a{padding:5px;display:inline-block;margin:0;border:none;color:#7f7a71}.ModalDefault .md-tabs>li a:focus,.ModalDefault .md-tabs>li a:hover{background:0 0}.ModalDefault .md-tabs>li.active a:focus,.ModalDefault .md-tabs>li.active a:hover{border:none;background:0 0}.ModalDefault .md-tabs>li.active .figureIconGray{background-position:center -4414px}.ModalDefault .md-tabs>li.active .tableIconGray{background-position:center -4368px}.ModalDefault .md-tabs>li .glyphBtn{width:40px;height:40px}.ModalDefault .fig,.ModalDefault .table{margin-top:20px;margin-bottom:20px}.ModalTutors .info{padding:28px 0;border-bottom:1px dotted #ccc}.scielo__theme--dark .ModalTutors .info{border-bottom:1px dotted rgba(255,255,255,.3)}.scielo__theme--light .ModalTutors .info{border-bottom:1px dotted #ccc}.ModalTutors .info:last-child{border-bottom:0}.ModalTutors .info:first-child{padding-top:0}.ModalTutors .info h3{margin:0 0 15px;font-size:1.429em;font-weight:400}.ModalTutors .info .tutors{margin-bottom:25px}.ModalTutors .info .tutors strong:first-child{font-size:1.071em}.ModalTutors .info .tutors:last-child{margin-bottom:0}.ModalTutors ul li{margin-top:10px;border-color:#e0e0df}.ModalTutors ul li.inline li{display:inline}#ModalDownloads strong{display:inline-block;padding:15px 0}#ModalDownloads .glyphBtn{width:40px;height:40px}#ModalDownloads [class^=sci-ico-file]{line-height:40px!important;font-size:40px}#ModalArticles .md-tabs,#ModalMetrics .md-tabs{margin:0 0 25px}#ModalArticles .md-tabs>li,#ModalMetrics .md-tabs>li{min-height:50px}#ModalMetrics .outlineFadeLink{margin:0 0 20px;padding:12px;font-size:15px;display:block;text-align:center}#ModalArticles #how2cite-export{margin:20px 0 2px;background:url(../img/dashline.png) top left repeat-x}#ModalArticles #how2cite-export .col-md-2.col-sm-2{width:20%}#ModalArticles .outlineFadeLink{margin-left:0}#ModalArticles .download{display:block}#ModalArticles #citation-ctt{position:absolute;top:-5000px}#ModalArticles #citationCut{position:absolute;top:-5000px}.ModalFigs .modal-title .sci-ico-fileFigure,.ModalFigs .modal-title .sci-ico-fileTable,.ModalTables .modal-title .sci-ico-fileFigure,.ModalTables .modal-title .sci-ico-fileTable{font-size:24px}.ModalFigs .link-newWindow,.ModalTables .link-newWindow{text-decoration:none}.ModalFigs .link-newWindow:hover,.ModalTables .link-newWindow:hover{opacity:1}.ModalFigs .modal-footer,.ModalTables .modal-footer{margin-top:0;text-align:left;background:#f7f6f4}.scielo__theme--dark .ModalFigs .modal-footer,.scielo__theme--dark .ModalTables .modal-footer{background:#393939}.scielo__theme--light .ModalFigs .modal-footer,.scielo__theme--light .ModalTables .modal-footer{background:#f7f6f4}.ModalFigs .modal-title{width:calc(100% - 70px)}.ModalFigs img{float:left}.ModalFigs .modal-body{padding:3px}.ModalTables .modal-body{overflow:auto}.ModalTables .modal-body:after{content:'';position:absolute;top:0;bottom:0;left:0;right:0;background:#fff url(../img/list.loading.gif) center center no-repeat}.scielo__theme--dark .ModalTables .modal-body:after{background:#333 url(../img/list.loading.gif) center center no-repeat}.scielo__theme--light .ModalTables .modal-body:after{background:#fff url(../img/list.loading.gif) center center no-repeat}.ModalTables .modal-body.cached:after{display:none}.ModalTables .table{margin-top:0;font-size:14px;position:relative;z-index:1}.ModalTables .table .autoWidth{width:auto}.ModalTables .table .striped{background-color:#f8f8f8}.ModalTables .table .inline-graphic{width:100%}.ModalTables .table-hover .table>tbody>tr:hover>td,.ModalTables .table-hover .table>tbody>tr:hover>th{background-color:#f0f3fb}.ModalTables .table-hover .table>tbody>tr:hover>td.striped,.ModalTables .table-hover .table>tbody>tr:hover>th.striped{background-color:#e8eaf2}.ModalTables .ref-list h2{font-size:14px}.ModalTables .ref-list .refList .xref.big{padding:5px 10px}.ModalTables .refList li{padding-bottom:0}.ModalTables .xref{cursor:text}#ModalRelatedArticles .inline li{min-width:48%}#ModalRelatedArticles .inline li:nth-child(2),#ModalRelatedArticles .inline li:nth-child(4){margin-right:0}#ModalVersionsTranslations .modal-body .md-body-dashVertical{display:inline-block;min-height:150px;background:url(../img/dashline.v.png) top center repeat-y}#ModalVersionsTranslations strong{display:inline-block;padding:15px 0}.ModalDefault .md-list li a.lattes,.ModalDefault .md-list li a.researcherid,.ModalDefault .md-list li a.scopus,.articleCtt .contribGroup .btnContribLinks.lattes,.articleCtt .contribGroup .btnContribLinks.researcherid,.articleCtt .contribGroup .btnContribLinks.scopus{padding-left:30px}.ModalDefault .md-list li a.scopus,.articleCtt .contribGroup .btnContribLinks.scopus{background:url(../img/authorIcon-scopus.png) 10px center no-repeat}.ModalDefault .md-list li a.lattes,.articleCtt .contribGroup .btnContribLinks.lattes{background:url(../img/authorIcon-lattes.png) 10px center no-repeat}.ModalDefault .md-list li a.researcherid,.articleCtt .contribGroup .btnContribLinks.researcherid{background:url(../img/authorIcon-researcherid.png) 10px center no-repeat}.ModalDefault .md-list li a.lattes-matteWhite,.articleCtt .contribGroup .btnContribLinks.lattes-matteWhite{background:url(../img/authorIcon-lattes-matteWhite.png) 10px center no-repeat}.articleCtt .article-title.page-header-title,.articleCtt .only-renditions-available p{text-align:center}.articleCtt .only-renditions-available .jumbotron{background-color:#f6f8fa;margin-top:35px}.levelMenu .btn{min-height:38px}.levelMenu .btn.group{width:auto;padding-left:16px!important;padding-right:16px!important}.levelMenu .btn:hover{color:#fff}.levelMenu .btn:hover [class^=sci-ico-]{color:#fff}.levelMenu .dropdown-menu a.current{position:relative;width:100%;font-weight:700}.levelMenu .dropdown-menu a.current:after{content:"✓";display:inline-block;position:absolute;right:5px}.levelMenu-xs .btn-group.btn-group-nav-mobile{width:100%;display:table}.levelMenu-xs .btn-group.btn-group-nav-mobile>.btn{display:table-cell;width:60%}.levelMenu-xs .btn-group.btn-group-nav-mobile>.btn:first-of-type{width:20%}.levelMenu-xs .btn-group.btn-group-nav-mobile>.btn:last-of-type{width:20%}.levelMenu-xs .btn-group.btn-group-nav-mobile>.btn .sci-ico-socialOther{display:inline-block;width:70%}.levelMenu-xs .btn-group.btn-group-nav-mobile-content{width:100%;display:table;padding:5px 2px}.levelMenu-xs .btn-group.btn-group-nav-mobile-content>.dropdown{display:table-cell;width:33%;padding-right:4px}.levelMenu-xs .btn-group.btn-group-nav-mobile-content>.dropdown:last-child{padding-right:0}.levelMenu-xs .btn-group.btn-group-nav-mobile-content>.dropdown:last-child .btn span{width:auto}.levelMenu-xs .btn-group.btn-group-nav-mobile-content>.dropdown:last-child .btn span:nth-child(2){width:55%}.levelMenu-xs .btn-group.btn-group-nav-mobile-content>.dropdown .btn{width:100%;position:relative}.levelMenu-xs .btn-group.btn-group-nav-mobile-content>.dropdown .btn span{width:90%;display:inline-block}.levelMenu-xs .btn-group.btn-group-nav-mobile-content>.dropdown .btn span:last-child{width:auto}.levelMenu-xs .btn-group.btn-group-nav-mobile-content>.dropdown .btn span.caret{position:absolute;right:10px;top:17px}.ref .xref a{color:#b67f00;pointer-events:none}.scielo__theme--dark .ref .xref a{color:#b67f00}.scielo__theme--light .ref .xref a{color:#b67f00}.ref .xref.xrefblue a{color:#3867ce}.scielo__theme--dark .ref .xref.xrefblue a{color:#86acff}.scielo__theme--light .ref .xref.xrefblue a{color:#3867ce}@media screen and (max-width:575px){.ref{position:static}}.ref .opened{background:#3867ce;color:#fff}@media screen and (max-width:575px){.ref .opened{width:90%;margin-left:5%}}.scielo__theme--dark .ref .opened{background:#86acff;color:#333}.scielo__theme--light .ref .opened{background:#3867ce;color:#fff} diff --git a/core/static/journal_about/css/bootstrap.css b/core/static/journal_about/css/bootstrap.css new file mode 100644 index 0000000..e6f8e63 --- /dev/null +++ b/core/static/journal_about/css/bootstrap.css @@ -0,0 +1,10 @@ +@charset "UTF-8";/*! + * Bootstrap v5.0.0-beta1 (https://getbootstrap.com/) + * Copyright 2011-2020 The Bootstrap Authors + * Copyright 2011-2020 Twitter, Inc. + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) + */@import url(https://fonts.googleapis.com/css2?family=Arapey&family=Noto+Sans:ital,wght@0,400;0,700;1,400;1,700&display=swap);@import url(https://fonts.googleapis.com/icon?family=Material+Icons&display=swap);@import url(https://fonts.googleapis.com/icon?family=Material+Icons+Outlined);@-webkit-keyframes bounce{0%,100%,20%,50%,80%{-webkit-transform:translateY(0)}40%{-webkit-transform:translateY(30px)}60%{-webkit-transform:translateY(15px)}}@-moz-keyframes bounce{0%,100%,20%,50%,80%{-moz-transform:translateY(0)}40%{-moz-transform:translateY(30px)}60%{-moz-transform:translateY(15px)}}@-ms-keyframes bounce{0%,100%,20%,50%,80%{-ms-transform:translateY(0)}40%{-ms-transform:translateY(30px)}60%{-ms-transform:translateY(15px)}}@-o-keyframes bounce{0%,100%,20%,50%,80%{-o-transform:translateY(0)}40%{-o-transform:translateY(30px)}60%{-o-transform:translateY(15px)}}@keyframes bounce{0%,100%,20%,50%,80%{transform:translateY(0)}40%{transform:translateY(30px)}60%{transform:translateY(15px)}}@-webkit-keyframes slideInUp{from{-webkit-transform:translate3d(0,30%,0);transform:translate3d(0,30%,0);visibility:visible;opacity:0}to{-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0);opacity:1}}.scielo__shadow-1{box-shadow:0 1px 3px rgba(0,0,0,.12),0 1px 2px rgba(0,0,0,.24)}.scielo__shadow-2{box-shadow:0 3px 6px rgba(0,0,0,.16),0 3px 6px rgba(0,0,0,.23)}.scielo__shadow-3{box-shadow:0 10px 20px rgba(0,0,0,.19),0 6px 6px rgba(0,0,0,.23)}.scielo__shadow-4{box-shadow:0 14px 28px rgba(0,0,0,.25),0 10px 10px rgba(0,0,0,.22)}.scielo__shadow-5{box-shadow:0 19px 38px rgba(0,0,0,.3),0 15px 12px rgba(0,0,0,.22)}:root{--scielo-blue:#3867CE;--scielo-indigo:#6628EE;--scielo-purple:#8D5DF8;--scielo-pink:#C32AA3;--scielo-red:#C63800;--scielo-orange:#FF7E4A;--scielo-yellow:#B67F00;--scielo-green:#2C9D45;--scielo-teal:#30A47F;--scielo-cyan:#2195A9;--scielo-white:#fff;--scielo-gray:#333;--scielo-gray-dark:#00314C;--scielo-primary:#3867CE;--scielo-secondary:#fff;--scielo-success:#2C9D45;--scielo-info:#2195A9;--scielo-warning:#B67F00;--scielo-danger:#C63800;--scielo-light:#F7F6F4;--scielo-dark:#393939;--scielo-font-sans-serif:"Noto Sans",sans-serif;--scielo-font-monospace:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;--scielo-gradient:linear-gradient(180deg, rgba(255, 255, 255, 0.15), rgba(255, 255, 255, 0))}*,::after,::before{box-sizing:border-box}@media (prefers-reduced-motion:no-preference){:root{scroll-behavior:smooth}}body{margin:0;font-family:var(--scielo-font-sans-serif);font-size:1rem;font-weight:400;line-height:1.5;color:#393939;background-color:#fff;-webkit-text-size-adjust:100%;-webkit-tap-highlight-color:transparent}hr{margin:1rem 0;color:inherit;background-color:currentColor;border:0;opacity:.25}hr:not([size]){height:1px}.h1,.h2,.h3,.h4,.h5,.h6,h1,h2,h3,h4,h5,h6{margin-top:0;margin-bottom:.5rem;font-weight:500;line-height:1.2}.h1,h1{font-size:calc(1.375rem + 1.5vw)}@media (min-width:1200px){.h1,h1{font-size:2.5rem}}.h2,h2{font-size:calc(1.325rem + .9vw)}@media (min-width:1200px){.h2,h2{font-size:2rem}}.h3,h3{font-size:calc(1.3rem + .6vw)}@media (min-width:1200px){.h3,h3{font-size:1.75rem}}.h4,h4{font-size:calc(1.275rem + .3vw)}@media (min-width:1200px){.h4,h4{font-size:1.5rem}}.h5,h5{font-size:1.25rem}.h6,h6{font-size:1rem}p{margin-top:0;margin-bottom:1rem}abbr[data-bs-original-title],abbr[title]{text-decoration:underline dotted;cursor:help;text-decoration-skip-ink:none}address{margin-bottom:1rem;font-style:normal;line-height:inherit}ol,ul{padding-left:2rem}dl,ol,ul{margin-top:0;margin-bottom:1rem}ol ol,ol ul,ul ol,ul ul{margin-bottom:0}dt{font-weight:700}dd{margin-bottom:.5rem;margin-left:0}blockquote{margin:0 0 1rem}b,strong{font-weight:bolder}.small,small{font-size:.875em}.mark,mark{padding:.2em;background-color:#fcf8e3}sub,sup{position:relative;font-size:.75em;line-height:0;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}a{color:#3867ce;text-decoration:underline}a:hover{color:#2d52a5}a:not([href]):not([class]),a:not([href]):not([class]):hover{color:inherit;text-decoration:none}code,kbd,pre,samp{font-family:var(--scielo-font-monospace);font-size:1em;direction:ltr;unicode-bidi:bidi-override}pre{display:block;margin-top:0;margin-bottom:1rem;overflow:auto;font-size:.875em}pre code{font-size:inherit;color:inherit;word-break:normal}code{font-size:.875em;color:#c32aa3;word-wrap:break-word}a>code{color:inherit}kbd{padding:.2rem .4rem;font-size:.875em;color:#fff;background-color:#393939;border-radius:.12 .5rem}kbd kbd{padding:0;font-size:1em;font-weight:700}figure{margin:0 0 1rem}img,svg{vertical-align:middle}table{caption-side:bottom;border-collapse:collapse}caption{padding-top:.5rem;padding-bottom:.5rem;color:rgba(0,0,0,.6);text-align:left}th{text-align:inherit;text-align:-webkit-match-parent}tbody,td,tfoot,th,thead,tr{border-color:inherit;border-style:solid;border-width:0}label{display:inline-block}button{border-radius:0}button:focus:not(:focus-visible){outline:0}button,input,optgroup,select,textarea{margin:0;font-family:inherit;font-size:inherit;line-height:inherit}button,select{text-transform:none}[role=button]{cursor:pointer}select{word-wrap:normal}select:disabled{opacity:1}[list]::-webkit-calendar-picker-indicator{display:none}[type=button],[type=reset],[type=submit],button{-webkit-appearance:button}[type=button]:not(:disabled),[type=reset]:not(:disabled),[type=submit]:not(:disabled),button:not(:disabled){cursor:pointer}::-moz-focus-inner{padding:0;border-style:none}textarea{resize:vertical}fieldset{min-width:0;padding:0;margin:0;border:0}legend{float:left;width:100%;padding:0;margin-bottom:.5rem;font-size:calc(1.275rem + .3vw);line-height:inherit}@media (min-width:1200px){legend{font-size:1.5rem}}legend+*{clear:left}::-webkit-datetime-edit-day-field,::-webkit-datetime-edit-fields-wrapper,::-webkit-datetime-edit-hour-field,::-webkit-datetime-edit-minute,::-webkit-datetime-edit-month-field,::-webkit-datetime-edit-text,::-webkit-datetime-edit-year-field{padding:0}::-webkit-inner-spin-button{height:auto}[type=search]{outline-offset:-2px;-webkit-appearance:textfield}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-color-swatch-wrapper{padding:0}::file-selector-button{font:inherit}::-webkit-file-upload-button{font:inherit;-webkit-appearance:button}output{display:inline-block}iframe{border:0}summary{display:list-item;cursor:pointer}progress{vertical-align:baseline}[hidden]{display:none!important}.lead{font-size:1.25rem;font-weight:300}.display-1{font-size:calc(1.625rem + 4.5vw);font-weight:300;line-height:1.2}@media (min-width:1200px){.display-1{font-size:5rem}}.display-2{font-size:calc(1.575rem + 3.9vw);font-weight:300;line-height:1.2}@media (min-width:1200px){.display-2{font-size:4.5rem}}.display-3{font-size:calc(1.525rem + 3.3vw);font-weight:300;line-height:1.2}@media (min-width:1200px){.display-3{font-size:4rem}}.display-4{font-size:calc(1.475rem + 2.7vw);font-weight:300;line-height:1.2}@media (min-width:1200px){.display-4{font-size:3.5rem}}.display-5{font-size:calc(1.425rem + 2.1vw);font-weight:300;line-height:1.2}@media (min-width:1200px){.display-5{font-size:3rem}}.display-6{font-size:calc(1.375rem + 1.5vw);font-weight:300;line-height:1.2}@media (min-width:1200px){.display-6{font-size:2.5rem}}.list-unstyled{padding-left:0;list-style:none}.list-inline{padding-left:0;list-style:none}.list-inline-item{display:inline-block}.list-inline-item:not(:last-child){margin-right:.5rem}.initialism{font-size:.875em;text-transform:uppercase}.blockquote{margin-bottom:1rem;font-size:1.25rem}.blockquote>:last-child{margin-bottom:0}.blockquote-footer{margin-top:-1rem;margin-bottom:1rem;font-size:.875em;color:rgba(0,0,0,.6)}.blockquote-footer::before{content:"\2014\00A0"}.img-fluid{max-width:100%;height:auto}.img-thumbnail{padding:.25rem;background-color:#fff;border:1px solid rgba(0,0,0,.3);border-radius:.25rem;max-width:100%;height:auto}.figure{display:inline-block}.figure-img{margin-bottom:.5rem;line-height:1}.figure-caption{font-size:.875em;color:rgba(0,0,0,.6)}.container,.container-fluid,.container-lg,.container-md,.container-sm,.container-xl,.container-xxl{width:100%;padding-right:var(--scielo-gutter-x,.5rem);padding-left:var(--scielo-gutter-x,.5rem);margin-right:auto;margin-left:auto}@media (min-width:576px){.container,.container-sm{max-width:100%}}@media (min-width:768px){.container,.container-md,.container-sm{max-width:720px}}@media (min-width:992px){.container,.container-lg,.container-md,.container-sm{max-width:960px}}@media (min-width:1200px){.container,.container-lg,.container-md,.container-sm,.container-xl{max-width:1140px}}@media (min-width:1400px){.container,.container-lg,.container-md,.container-sm,.container-xl,.container-xxl{max-width:1320px}}.row{--scielo-gutter-x:1rem;--scielo-gutter-y:0;display:flex;flex-wrap:wrap;margin-top:calc(var(--scielo-gutter-y) * -1);margin-right:calc(var(--scielo-gutter-x)/ -2);margin-left:calc(var(--scielo-gutter-x)/ -2)}.row>*{flex-shrink:0;width:100%;max-width:100%;padding-right:calc(var(--scielo-gutter-x)/ 2);padding-left:calc(var(--scielo-gutter-x)/ 2);margin-top:var(--scielo-gutter-y)}.col{flex:1 0 0%}.row-cols-auto>*{flex:0 0 auto;width:auto}.row-cols-1>*{flex:0 0 auto;width:100%}.row-cols-2>*{flex:0 0 auto;width:50%}.row-cols-3>*{flex:0 0 auto;width:33.33333%}.row-cols-4>*{flex:0 0 auto;width:25%}.row-cols-5>*{flex:0 0 auto;width:20%}.row-cols-6>*{flex:0 0 auto;width:16.66667%}.col-auto{flex:0 0 auto;width:auto}.col-1{flex:0 0 auto;width:8.33333%}.col-2{flex:0 0 auto;width:16.66667%}.col-3{flex:0 0 auto;width:25%}.col-4{flex:0 0 auto;width:33.33333%}.col-5{flex:0 0 auto;width:41.66667%}.col-6{flex:0 0 auto;width:50%}.col-7{flex:0 0 auto;width:58.33333%}.col-8{flex:0 0 auto;width:66.66667%}.col-9{flex:0 0 auto;width:75%}.col-10{flex:0 0 auto;width:83.33333%}.col-11{flex:0 0 auto;width:91.66667%}.col-12{flex:0 0 auto;width:100%}.offset-1{margin-left:8.33333%}.offset-2{margin-left:16.66667%}.offset-3{margin-left:25%}.offset-4{margin-left:33.33333%}.offset-5{margin-left:41.66667%}.offset-6{margin-left:50%}.offset-7{margin-left:58.33333%}.offset-8{margin-left:66.66667%}.offset-9{margin-left:75%}.offset-10{margin-left:83.33333%}.offset-11{margin-left:91.66667%}.g-0,.gx-0{--scielo-gutter-x:0}.g-0,.gy-0{--scielo-gutter-y:0}.g-1,.gx-1{--scielo-gutter-x:0.25rem}.g-1,.gy-1{--scielo-gutter-y:0.25rem}.g-2,.gx-2{--scielo-gutter-x:0.5rem}.g-2,.gy-2{--scielo-gutter-y:0.5rem}.g-3,.gx-3{--scielo-gutter-x:1rem}.g-3,.gy-3{--scielo-gutter-y:1rem}.g-4,.gx-4{--scielo-gutter-x:1.5rem}.g-4,.gy-4{--scielo-gutter-y:1.5rem}.g-5,.gx-5{--scielo-gutter-x:3rem}.g-5,.gy-5{--scielo-gutter-y:3rem}@media (min-width:576px){.col-sm{flex:1 0 0%}.row-cols-sm-auto>*{flex:0 0 auto;width:auto}.row-cols-sm-1>*{flex:0 0 auto;width:100%}.row-cols-sm-2>*{flex:0 0 auto;width:50%}.row-cols-sm-3>*{flex:0 0 auto;width:33.33333%}.row-cols-sm-4>*{flex:0 0 auto;width:25%}.row-cols-sm-5>*{flex:0 0 auto;width:20%}.row-cols-sm-6>*{flex:0 0 auto;width:16.66667%}.col-sm-auto{flex:0 0 auto;width:auto}.col-sm-1{flex:0 0 auto;width:8.33333%}.col-sm-2{flex:0 0 auto;width:16.66667%}.col-sm-3{flex:0 0 auto;width:25%}.col-sm-4{flex:0 0 auto;width:33.33333%}.col-sm-5{flex:0 0 auto;width:41.66667%}.col-sm-6{flex:0 0 auto;width:50%}.col-sm-7{flex:0 0 auto;width:58.33333%}.col-sm-8{flex:0 0 auto;width:66.66667%}.col-sm-9{flex:0 0 auto;width:75%}.col-sm-10{flex:0 0 auto;width:83.33333%}.col-sm-11{flex:0 0 auto;width:91.66667%}.col-sm-12{flex:0 0 auto;width:100%}.offset-sm-0{margin-left:0}.offset-sm-1{margin-left:8.33333%}.offset-sm-2{margin-left:16.66667%}.offset-sm-3{margin-left:25%}.offset-sm-4{margin-left:33.33333%}.offset-sm-5{margin-left:41.66667%}.offset-sm-6{margin-left:50%}.offset-sm-7{margin-left:58.33333%}.offset-sm-8{margin-left:66.66667%}.offset-sm-9{margin-left:75%}.offset-sm-10{margin-left:83.33333%}.offset-sm-11{margin-left:91.66667%}.g-sm-0,.gx-sm-0{--scielo-gutter-x:0}.g-sm-0,.gy-sm-0{--scielo-gutter-y:0}.g-sm-1,.gx-sm-1{--scielo-gutter-x:0.25rem}.g-sm-1,.gy-sm-1{--scielo-gutter-y:0.25rem}.g-sm-2,.gx-sm-2{--scielo-gutter-x:0.5rem}.g-sm-2,.gy-sm-2{--scielo-gutter-y:0.5rem}.g-sm-3,.gx-sm-3{--scielo-gutter-x:1rem}.g-sm-3,.gy-sm-3{--scielo-gutter-y:1rem}.g-sm-4,.gx-sm-4{--scielo-gutter-x:1.5rem}.g-sm-4,.gy-sm-4{--scielo-gutter-y:1.5rem}.g-sm-5,.gx-sm-5{--scielo-gutter-x:3rem}.g-sm-5,.gy-sm-5{--scielo-gutter-y:3rem}}@media (min-width:768px){.col-md{flex:1 0 0%}.row-cols-md-auto>*{flex:0 0 auto;width:auto}.row-cols-md-1>*{flex:0 0 auto;width:100%}.row-cols-md-2>*{flex:0 0 auto;width:50%}.row-cols-md-3>*{flex:0 0 auto;width:33.33333%}.row-cols-md-4>*{flex:0 0 auto;width:25%}.row-cols-md-5>*{flex:0 0 auto;width:20%}.row-cols-md-6>*{flex:0 0 auto;width:16.66667%}.col-md-auto{flex:0 0 auto;width:auto}.col-md-1{flex:0 0 auto;width:8.33333%}.col-md-2{flex:0 0 auto;width:16.66667%}.col-md-3{flex:0 0 auto;width:25%}.col-md-4{flex:0 0 auto;width:33.33333%}.col-md-5{flex:0 0 auto;width:41.66667%}.col-md-6{flex:0 0 auto;width:50%}.col-md-7{flex:0 0 auto;width:58.33333%}.col-md-8{flex:0 0 auto;width:66.66667%}.col-md-9{flex:0 0 auto;width:75%}.col-md-10{flex:0 0 auto;width:83.33333%}.col-md-11{flex:0 0 auto;width:91.66667%}.col-md-12{flex:0 0 auto;width:100%}.offset-md-0{margin-left:0}.offset-md-1{margin-left:8.33333%}.offset-md-2{margin-left:16.66667%}.offset-md-3{margin-left:25%}.offset-md-4{margin-left:33.33333%}.offset-md-5{margin-left:41.66667%}.offset-md-6{margin-left:50%}.offset-md-7{margin-left:58.33333%}.offset-md-8{margin-left:66.66667%}.offset-md-9{margin-left:75%}.offset-md-10{margin-left:83.33333%}.offset-md-11{margin-left:91.66667%}.g-md-0,.gx-md-0{--scielo-gutter-x:0}.g-md-0,.gy-md-0{--scielo-gutter-y:0}.g-md-1,.gx-md-1{--scielo-gutter-x:0.25rem}.g-md-1,.gy-md-1{--scielo-gutter-y:0.25rem}.g-md-2,.gx-md-2{--scielo-gutter-x:0.5rem}.g-md-2,.gy-md-2{--scielo-gutter-y:0.5rem}.g-md-3,.gx-md-3{--scielo-gutter-x:1rem}.g-md-3,.gy-md-3{--scielo-gutter-y:1rem}.g-md-4,.gx-md-4{--scielo-gutter-x:1.5rem}.g-md-4,.gy-md-4{--scielo-gutter-y:1.5rem}.g-md-5,.gx-md-5{--scielo-gutter-x:3rem}.g-md-5,.gy-md-5{--scielo-gutter-y:3rem}}@media (min-width:992px){.col-lg{flex:1 0 0%}.row-cols-lg-auto>*{flex:0 0 auto;width:auto}.row-cols-lg-1>*{flex:0 0 auto;width:100%}.row-cols-lg-2>*{flex:0 0 auto;width:50%}.row-cols-lg-3>*{flex:0 0 auto;width:33.33333%}.row-cols-lg-4>*{flex:0 0 auto;width:25%}.row-cols-lg-5>*{flex:0 0 auto;width:20%}.row-cols-lg-6>*{flex:0 0 auto;width:16.66667%}.col-lg-auto{flex:0 0 auto;width:auto}.col-lg-1{flex:0 0 auto;width:8.33333%}.col-lg-2{flex:0 0 auto;width:16.66667%}.col-lg-3{flex:0 0 auto;width:25%}.col-lg-4{flex:0 0 auto;width:33.33333%}.col-lg-5{flex:0 0 auto;width:41.66667%}.col-lg-6{flex:0 0 auto;width:50%}.col-lg-7{flex:0 0 auto;width:58.33333%}.col-lg-8{flex:0 0 auto;width:66.66667%}.col-lg-9{flex:0 0 auto;width:75%}.col-lg-10{flex:0 0 auto;width:83.33333%}.col-lg-11{flex:0 0 auto;width:91.66667%}.col-lg-12{flex:0 0 auto;width:100%}.offset-lg-0{margin-left:0}.offset-lg-1{margin-left:8.33333%}.offset-lg-2{margin-left:16.66667%}.offset-lg-3{margin-left:25%}.offset-lg-4{margin-left:33.33333%}.offset-lg-5{margin-left:41.66667%}.offset-lg-6{margin-left:50%}.offset-lg-7{margin-left:58.33333%}.offset-lg-8{margin-left:66.66667%}.offset-lg-9{margin-left:75%}.offset-lg-10{margin-left:83.33333%}.offset-lg-11{margin-left:91.66667%}.g-lg-0,.gx-lg-0{--scielo-gutter-x:0}.g-lg-0,.gy-lg-0{--scielo-gutter-y:0}.g-lg-1,.gx-lg-1{--scielo-gutter-x:0.25rem}.g-lg-1,.gy-lg-1{--scielo-gutter-y:0.25rem}.g-lg-2,.gx-lg-2{--scielo-gutter-x:0.5rem}.g-lg-2,.gy-lg-2{--scielo-gutter-y:0.5rem}.g-lg-3,.gx-lg-3{--scielo-gutter-x:1rem}.g-lg-3,.gy-lg-3{--scielo-gutter-y:1rem}.g-lg-4,.gx-lg-4{--scielo-gutter-x:1.5rem}.g-lg-4,.gy-lg-4{--scielo-gutter-y:1.5rem}.g-lg-5,.gx-lg-5{--scielo-gutter-x:3rem}.g-lg-5,.gy-lg-5{--scielo-gutter-y:3rem}}@media (min-width:1200px){.col-xl{flex:1 0 0%}.row-cols-xl-auto>*{flex:0 0 auto;width:auto}.row-cols-xl-1>*{flex:0 0 auto;width:100%}.row-cols-xl-2>*{flex:0 0 auto;width:50%}.row-cols-xl-3>*{flex:0 0 auto;width:33.33333%}.row-cols-xl-4>*{flex:0 0 auto;width:25%}.row-cols-xl-5>*{flex:0 0 auto;width:20%}.row-cols-xl-6>*{flex:0 0 auto;width:16.66667%}.col-xl-auto{flex:0 0 auto;width:auto}.col-xl-1{flex:0 0 auto;width:8.33333%}.col-xl-2{flex:0 0 auto;width:16.66667%}.col-xl-3{flex:0 0 auto;width:25%}.col-xl-4{flex:0 0 auto;width:33.33333%}.col-xl-5{flex:0 0 auto;width:41.66667%}.col-xl-6{flex:0 0 auto;width:50%}.col-xl-7{flex:0 0 auto;width:58.33333%}.col-xl-8{flex:0 0 auto;width:66.66667%}.col-xl-9{flex:0 0 auto;width:75%}.col-xl-10{flex:0 0 auto;width:83.33333%}.col-xl-11{flex:0 0 auto;width:91.66667%}.col-xl-12{flex:0 0 auto;width:100%}.offset-xl-0{margin-left:0}.offset-xl-1{margin-left:8.33333%}.offset-xl-2{margin-left:16.66667%}.offset-xl-3{margin-left:25%}.offset-xl-4{margin-left:33.33333%}.offset-xl-5{margin-left:41.66667%}.offset-xl-6{margin-left:50%}.offset-xl-7{margin-left:58.33333%}.offset-xl-8{margin-left:66.66667%}.offset-xl-9{margin-left:75%}.offset-xl-10{margin-left:83.33333%}.offset-xl-11{margin-left:91.66667%}.g-xl-0,.gx-xl-0{--scielo-gutter-x:0}.g-xl-0,.gy-xl-0{--scielo-gutter-y:0}.g-xl-1,.gx-xl-1{--scielo-gutter-x:0.25rem}.g-xl-1,.gy-xl-1{--scielo-gutter-y:0.25rem}.g-xl-2,.gx-xl-2{--scielo-gutter-x:0.5rem}.g-xl-2,.gy-xl-2{--scielo-gutter-y:0.5rem}.g-xl-3,.gx-xl-3{--scielo-gutter-x:1rem}.g-xl-3,.gy-xl-3{--scielo-gutter-y:1rem}.g-xl-4,.gx-xl-4{--scielo-gutter-x:1.5rem}.g-xl-4,.gy-xl-4{--scielo-gutter-y:1.5rem}.g-xl-5,.gx-xl-5{--scielo-gutter-x:3rem}.g-xl-5,.gy-xl-5{--scielo-gutter-y:3rem}}@media (min-width:1400px){.col-xxl{flex:1 0 0%}.row-cols-xxl-auto>*{flex:0 0 auto;width:auto}.row-cols-xxl-1>*{flex:0 0 auto;width:100%}.row-cols-xxl-2>*{flex:0 0 auto;width:50%}.row-cols-xxl-3>*{flex:0 0 auto;width:33.33333%}.row-cols-xxl-4>*{flex:0 0 auto;width:25%}.row-cols-xxl-5>*{flex:0 0 auto;width:20%}.row-cols-xxl-6>*{flex:0 0 auto;width:16.66667%}.col-xxl-auto{flex:0 0 auto;width:auto}.col-xxl-1{flex:0 0 auto;width:8.33333%}.col-xxl-2{flex:0 0 auto;width:16.66667%}.col-xxl-3{flex:0 0 auto;width:25%}.col-xxl-4{flex:0 0 auto;width:33.33333%}.col-xxl-5{flex:0 0 auto;width:41.66667%}.col-xxl-6{flex:0 0 auto;width:50%}.col-xxl-7{flex:0 0 auto;width:58.33333%}.col-xxl-8{flex:0 0 auto;width:66.66667%}.col-xxl-9{flex:0 0 auto;width:75%}.col-xxl-10{flex:0 0 auto;width:83.33333%}.col-xxl-11{flex:0 0 auto;width:91.66667%}.col-xxl-12{flex:0 0 auto;width:100%}.offset-xxl-0{margin-left:0}.offset-xxl-1{margin-left:8.33333%}.offset-xxl-2{margin-left:16.66667%}.offset-xxl-3{margin-left:25%}.offset-xxl-4{margin-left:33.33333%}.offset-xxl-5{margin-left:41.66667%}.offset-xxl-6{margin-left:50%}.offset-xxl-7{margin-left:58.33333%}.offset-xxl-8{margin-left:66.66667%}.offset-xxl-9{margin-left:75%}.offset-xxl-10{margin-left:83.33333%}.offset-xxl-11{margin-left:91.66667%}.g-xxl-0,.gx-xxl-0{--scielo-gutter-x:0}.g-xxl-0,.gy-xxl-0{--scielo-gutter-y:0}.g-xxl-1,.gx-xxl-1{--scielo-gutter-x:0.25rem}.g-xxl-1,.gy-xxl-1{--scielo-gutter-y:0.25rem}.g-xxl-2,.gx-xxl-2{--scielo-gutter-x:0.5rem}.g-xxl-2,.gy-xxl-2{--scielo-gutter-y:0.5rem}.g-xxl-3,.gx-xxl-3{--scielo-gutter-x:1rem}.g-xxl-3,.gy-xxl-3{--scielo-gutter-y:1rem}.g-xxl-4,.gx-xxl-4{--scielo-gutter-x:1.5rem}.g-xxl-4,.gy-xxl-4{--scielo-gutter-y:1.5rem}.g-xxl-5,.gx-xxl-5{--scielo-gutter-x:3rem}.g-xxl-5,.gy-xxl-5{--scielo-gutter-y:3rem}}.table{--scielo-table-bg:transparent;--scielo-table-striped-color:#393939;--scielo-table-striped-bg:rgba(0, 0, 0, 0.05);--scielo-table-active-color:#393939;--scielo-table-active-bg:rgba(0, 0, 0, 0.1);--scielo-table-hover-color:#393939;--scielo-table-hover-bg:rgba(0, 0, 0, 0.075);width:100%;margin-bottom:1rem;color:#393939;vertical-align:top;border-color:rgba(0,0,0,.3)}.table>:not(caption)>*>*{padding:.5rem .5rem;background-color:var(--scielo-table-bg);border-bottom-width:1px;box-shadow:inset 0 0 0 9999px var(--scielo-table-accent-bg)}.table>tbody{vertical-align:inherit}.table>thead{vertical-align:bottom}.table>:not(:last-child)>:last-child>*{border-bottom-color:currentColor}.caption-top{caption-side:top}.table-sm>:not(caption)>*>*{padding:.25rem .25rem}.table-bordered>:not(caption)>*{border-width:1px 0}.table-bordered>:not(caption)>*>*{border-width:0 1px}.table-borderless>:not(caption)>*>*{border-bottom-width:0}.table-striped>tbody>tr:nth-of-type(odd){--scielo-table-accent-bg:var(--scielo-table-striped-bg);color:var(--scielo-table-striped-color)}.table-active{--scielo-table-accent-bg:var(--scielo-table-active-bg);color:var(--scielo-table-active-color)}.table-hover>tbody>tr:hover{--scielo-table-accent-bg:var(--scielo-table-hover-bg);color:var(--scielo-table-hover-color)}.table-primary{--scielo-table-bg:#d7e1f5;--scielo-table-striped-bg:#ccd6e9;--scielo-table-striped-color:#000;--scielo-table-active-bg:#c2cbdd;--scielo-table-active-color:#000;--scielo-table-hover-bg:#c7d0e3;--scielo-table-hover-color:#000;color:#000;border-color:#c2cbdd}.table-secondary{--scielo-table-bg:white;--scielo-table-striped-bg:#f2f2f2;--scielo-table-striped-color:#000;--scielo-table-active-bg:#e6e6e6;--scielo-table-active-color:#000;--scielo-table-hover-bg:#ececec;--scielo-table-hover-color:#000;color:#000;border-color:#e6e6e6}.table-success{--scielo-table-bg:#d5ebda;--scielo-table-striped-bg:#cadfcf;--scielo-table-striped-color:#000;--scielo-table-active-bg:#c0d4c4;--scielo-table-active-color:#000;--scielo-table-hover-bg:#c5d9ca;--scielo-table-hover-color:#000;color:#000;border-color:#c0d4c4}.table-info{--scielo-table-bg:#d3eaee;--scielo-table-striped-bg:#c8dee2;--scielo-table-striped-color:#000;--scielo-table-active-bg:#bed3d6;--scielo-table-active-color:#000;--scielo-table-hover-bg:#c3d8dc;--scielo-table-hover-color:#000;color:#000;border-color:#bed3d6}.table-warning{--scielo-table-bg:#f0e5cc;--scielo-table-striped-bg:#e4dac2;--scielo-table-striped-color:#000;--scielo-table-active-bg:#d8ceb8;--scielo-table-active-color:#000;--scielo-table-hover-bg:#ded4bd;--scielo-table-hover-color:#000;color:#000;border-color:#d8ceb8}.table-danger{--scielo-table-bg:#f4d7cc;--scielo-table-striped-bg:#e8ccc2;--scielo-table-striped-color:#000;--scielo-table-active-bg:#dcc2b8;--scielo-table-active-color:#000;--scielo-table-hover-bg:#e2c7bd;--scielo-table-hover-color:#000;color:#000;border-color:#dcc2b8}.table-light{--scielo-table-bg:#F7F6F4;--scielo-table-striped-bg:#ebeae8;--scielo-table-striped-color:#000;--scielo-table-active-bg:#dedddc;--scielo-table-active-color:#000;--scielo-table-hover-bg:#e4e4e2;--scielo-table-hover-color:#000;color:#000;border-color:#dedddc}.table-dark{--scielo-table-bg:#393939;--scielo-table-striped-bg:#434343;--scielo-table-striped-color:#fff;--scielo-table-active-bg:#4d4d4d;--scielo-table-active-color:#fff;--scielo-table-hover-bg:#484848;--scielo-table-hover-color:#fff;color:#fff;border-color:#4d4d4d}.table-responsive{overflow-x:auto;-webkit-overflow-scrolling:touch}@media (max-width:575.98px){.table-responsive-sm{overflow-x:auto;-webkit-overflow-scrolling:touch}}@media (max-width:767.98px){.table-responsive-md{overflow-x:auto;-webkit-overflow-scrolling:touch}}@media (max-width:991.98px){.table-responsive-lg{overflow-x:auto;-webkit-overflow-scrolling:touch}}@media (max-width:1199.98px){.table-responsive-xl{overflow-x:auto;-webkit-overflow-scrolling:touch}}@media (max-width:1399.98px){.table-responsive-xxl{overflow-x:auto;-webkit-overflow-scrolling:touch}}.form-label{margin-bottom:.5rem}.col-form-label{padding-top:calc(.375rem + 1px);padding-bottom:calc(.375rem + 1px);margin-bottom:0;font-size:inherit;line-height:1.5}.col-form-label-lg{padding-top:calc(.5rem + 1px);padding-bottom:calc(.5rem + 1px);font-size:1.25rem}.col-form-label-sm{padding-top:calc(.25rem + 1px);padding-bottom:calc(.25rem + 1px);font-size:.875rem}.form-text{margin-top:.25rem;font-size:.875em;color:rgba(0,0,0,.6)}.form-control{display:block;width:100%;padding:.375rem .75rem;font-size:1rem;font-weight:400;line-height:1.5;color:#393939;background-color:#fff;background-clip:padding-box;border:1px solid rgba(0,0,0,.4);appearance:none;border-radius:.25rem;transition:border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion:reduce){.form-control{transition:none}}.form-control[type=file]{overflow:hidden}.form-control[type=file]:not(:disabled):not([readonly]){cursor:pointer}.form-control:focus{color:#393939;background-color:#fff;border-color:#9cb3e7;outline:0;box-shadow:0 0 0 .25rem rgba(56,103,206,.25)}.form-control::-webkit-date-and-time-value{height:1.5em}.form-control::placeholder{color:rgba(0,0,0,.6);opacity:1}.form-control:disabled,.form-control[readonly]{background-color:#efeeec;opacity:1}.form-control::file-selector-button{padding:.375rem .75rem;margin:-.375rem -.75rem;margin-inline-end:.75rem;color:#393939;background-color:#efeeec;pointer-events:none;border-color:inherit;border-style:solid;border-width:0;border-inline-end-width:1px;border-radius:0;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion:reduce){.form-control::file-selector-button{transition:none}}.form-control:hover:not(:disabled):not([readonly])::file-selector-button{background-color:#e3e2e0}.form-control::-webkit-file-upload-button{padding:.375rem .75rem;margin:-.375rem -.75rem;margin-inline-end:.75rem;color:#393939;background-color:#efeeec;pointer-events:none;border-color:inherit;border-style:solid;border-width:0;border-inline-end-width:1px;border-radius:0;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion:reduce){.form-control::-webkit-file-upload-button{transition:none}}.form-control:hover:not(:disabled):not([readonly])::-webkit-file-upload-button{background-color:#e3e2e0}.form-control-plaintext{display:block;width:100%;padding:.375rem 0;margin-bottom:0;line-height:1.5;color:#393939;background-color:transparent;border:solid transparent;border-width:1px 0}.form-control-plaintext.form-control-lg,.form-control-plaintext.form-control-sm{padding-right:0;padding-left:0}.form-control-sm{min-height:calc(1.5em + .5rem + 2px);padding:.25rem .5rem;font-size:.875rem;border-radius:.12 .5rem}.form-control-sm::file-selector-button{padding:.25rem .5rem;margin:-.25rem -.5rem;margin-inline-end:.5rem}.form-control-sm::-webkit-file-upload-button{padding:.25rem .5rem;margin:-.25rem -.5rem;margin-inline-end:.5rem}.form-control-lg{min-height:calc(1.5em + 1rem + 2px);padding:.5rem 1rem;font-size:1.25rem;border-radius:.5rem}.form-control-lg::file-selector-button{padding:.5rem 1rem;margin:-.5rem -1rem;margin-inline-end:1rem}.form-control-lg::-webkit-file-upload-button{padding:.5rem 1rem;margin:-.5rem -1rem;margin-inline-end:1rem}textarea.form-control{min-height:calc(1.5em + .75rem + 2px)}textarea.form-control-sm{min-height:calc(1.5em + .5rem + 2px)}textarea.form-control-lg{min-height:calc(1.5em + 1rem + 2px)}.form-control-color{max-width:3rem;height:auto;padding:.375rem}.form-control-color:not(:disabled):not([readonly]){cursor:pointer}.form-control-color::-moz-color-swatch{height:1.5em;border-radius:.25rem}.form-control-color::-webkit-color-swatch{height:1.5em;border-radius:.25rem}.form-select{display:block;width:100%;padding:.375rem 1rem .375rem .75rem;font-size:1rem;font-weight:400;line-height:1.5;color:#393939;background-color:#fff;background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='%23414141' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M2 5l6 6 6-6'/%3e%3c/svg%3e");background-repeat:no-repeat;background-position:right .75rem center;background-size:16px 12px;border:1px solid rgba(0,0,0,.4);border-radius:.25rem;appearance:none}.form-select:focus{border-color:#9cb3e7;outline:0;box-shadow:0 0 0 .25rem rgba(56,103,206,.25)}.form-select[multiple],.form-select[size]:not([size="1"]){padding-right:.75rem;background-image:none}.form-select:disabled{color:rgba(0,0,0,.6);background-color:#efeeec}.form-select:-moz-focusring{color:transparent;text-shadow:0 0 0 #393939}.form-select-sm{padding-top:.25rem;padding-bottom:.25rem;padding-left:.5rem;font-size:.875rem}.form-select-lg{padding-top:.5rem;padding-bottom:.5rem;padding-left:1rem;font-size:1.25rem}.form-check{display:block;min-height:1.5rem;padding-left:1.5em;margin-bottom:.125rem}.form-check .form-check-input{float:left;margin-left:-1.5em}.form-check-input{width:1em;height:1em;margin-top:.25em;vertical-align:top;background-color:#fff;background-repeat:no-repeat;background-position:center;background-size:contain;border:1px solid rgba(0,0,0,.25);appearance:none;color-adjust:exact;transition:background-color .15s ease-in-out,background-position .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion:reduce){.form-check-input{transition:none}}.form-check-input[type=checkbox]{border-radius:.25em}.form-check-input[type=radio]{border-radius:50%}.form-check-input:active{filter:brightness(90%)}.form-check-input:focus{border-color:#9cb3e7;outline:0;box-shadow:0 0 0 .25rem rgba(56,103,206,.25)}.form-check-input:checked{background-color:#3867ce;border-color:#3867ce}.form-check-input:checked[type=checkbox]{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20'%3e%3cpath fill='none' stroke='%23fff' stroke-linecap='round' stroke-linejoin='round' stroke-width='3' d='M6 10l3 3l6-6'/%3e%3c/svg%3e")}.form-check-input:checked[type=radio]{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='2' fill='%23fff'/%3e%3c/svg%3e")}.form-check-input[type=checkbox]:indeterminate{background-color:#3867ce;border-color:#3867ce;background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20'%3e%3cpath fill='none' stroke='%23fff' stroke-linecap='round' stroke-linejoin='round' stroke-width='3' d='M6 10h8'/%3e%3c/svg%3e")}.form-check-input:disabled{pointer-events:none;filter:none;opacity:.5}.form-check-input:disabled~.form-check-label,.form-check-input[disabled]~.form-check-label{opacity:.5}.form-switch{padding-left:2.5em}.form-switch .form-check-input{width:2em;margin-left:-2.5em;background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='rgba%280, 0, 0, 0.25%29'/%3e%3c/svg%3e");background-position:left center;border-radius:2em;transition:background-position .15s ease-in-out}@media (prefers-reduced-motion:reduce){.form-switch .form-check-input{transition:none}}.form-switch .form-check-input:focus{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='%239cb3e7'/%3e%3c/svg%3e")}.form-switch .form-check-input:checked{background-position:right center;background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='%23fff'/%3e%3c/svg%3e")}.form-check-inline{display:inline-block;margin-right:1rem}.btn-check{position:absolute;clip:rect(0,0,0,0);pointer-events:none}.btn-check:disabled+.btn,.btn-check[disabled]+.btn{pointer-events:none;filter:none;opacity:.65}.form-range{width:100%;height:1.5rem;padding:0;background-color:transparent;appearance:none}.form-range:focus{outline:0}.form-range:focus::-webkit-slider-thumb{box-shadow:0 0 0 1px #fff,0 0 0 .25rem rgba(56,103,206,.25)}.form-range:focus::-moz-range-thumb{box-shadow:0 0 0 1px #fff,0 0 0 .25rem rgba(56,103,206,.25)}.form-range::-moz-focus-outer{border:0}.form-range::-webkit-slider-thumb{width:1rem;height:1rem;margin-top:-.25rem;background-color:#3867ce;border:0;border-radius:1rem;transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;appearance:none}@media (prefers-reduced-motion:reduce){.form-range::-webkit-slider-thumb{transition:none}}.form-range::-webkit-slider-thumb:active{background-color:#c3d1f0}.form-range::-webkit-slider-runnable-track{width:100%;height:.5rem;color:transparent;cursor:pointer;background-color:rgba(0,0,0,.3);border-color:transparent;border-radius:1rem}.form-range::-moz-range-thumb{width:1rem;height:1rem;background-color:#3867ce;border:0;border-radius:1rem;transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;appearance:none}@media (prefers-reduced-motion:reduce){.form-range::-moz-range-thumb{transition:none}}.form-range::-moz-range-thumb:active{background-color:#c3d1f0}.form-range::-moz-range-track{width:100%;height:.5rem;color:transparent;cursor:pointer;background-color:rgba(0,0,0,.3);border-color:transparent;border-radius:1rem}.form-range:disabled{pointer-events:none}.form-range:disabled::-webkit-slider-thumb{background-color:rgba(0,0,0,.5)}.form-range:disabled::-moz-range-thumb{background-color:rgba(0,0,0,.5)}.form-floating{position:relative}.form-floating>.form-control,.form-floating>.form-select{height:calc(3.5rem + 2px);padding:1rem .75rem}.form-floating>label{position:absolute;top:0;left:0;height:100%;padding:1rem .75rem;pointer-events:none;border:1px solid transparent;transform-origin:0 0;transition:opacity .1s ease-in-out,transform .1s ease-in-out}@media (prefers-reduced-motion:reduce){.form-floating>label{transition:none}}.form-floating>.form-control::placeholder{color:transparent}.form-floating>.form-control:focus,.form-floating>.form-control:not(:placeholder-shown){padding-top:1.625rem;padding-bottom:.625rem}.form-floating>.form-control:-webkit-autofill{padding-top:1.625rem;padding-bottom:.625rem}.form-floating>.form-select{padding-top:1.625rem;padding-bottom:.625rem}.form-floating>.form-control:focus~label,.form-floating>.form-control:not(:placeholder-shown)~label,.form-floating>.form-select~label{opacity:.65;transform:scale(.85) translateY(-.5rem) translateX(.15rem)}.form-floating>.form-control:-webkit-autofill~label{opacity:.65;transform:scale(.85) translateY(-.5rem) translateX(.15rem)}.input-group{position:relative;display:flex;flex-wrap:wrap;align-items:stretch;width:100%}.input-group>.form-control,.input-group>.form-select{position:relative;flex:1 1 auto;width:1%;min-width:0}.input-group>.form-control:focus,.input-group>.form-select:focus{z-index:3}.input-group .btn{position:relative;z-index:2}.input-group .btn:focus{z-index:3}.input-group-text{display:flex;align-items:center;padding:.375rem .75rem;font-size:1rem;font-weight:400;line-height:1.5;color:#393939;text-align:center;white-space:nowrap;background-color:#efeeec;border:1px solid rgba(0,0,0,.4);border-radius:.25rem}.input-group-lg>.btn,.input-group-lg>.form-control,.input-group-lg>.form-select,.input-group-lg>.input-group-text{padding:.5rem 1rem;font-size:1.25rem;border-radius:.5rem}.input-group-sm>.btn,.input-group-sm>.form-control,.input-group-sm>.form-select,.input-group-sm>.input-group-text{padding:.25rem .5rem;font-size:.875rem;border-radius:.12 .5rem}.input-group-lg>.form-select,.input-group-sm>.form-select{padding-right:1.75rem}.input-group:not(.has-validation)>.dropdown-toggle:nth-last-child(n+3),.input-group:not(.has-validation)>:not(:last-child):not(.dropdown-toggle):not(.dropdown-menu){border-top-right-radius:0;border-bottom-right-radius:0}.input-group.has-validation>.dropdown-toggle:nth-last-child(n+4),.input-group.has-validation>:nth-last-child(n+3):not(.dropdown-toggle):not(.dropdown-menu){border-top-right-radius:0;border-bottom-right-radius:0}.input-group>:not(:first-child):not(.dropdown-menu):not(.valid-tooltip):not(.valid-feedback):not(.invalid-tooltip):not(.invalid-feedback){margin-left:-1px;border-top-left-radius:0;border-bottom-left-radius:0}.valid-feedback{display:none;width:100%;margin-top:.25rem;font-size:.875em;color:#2c9d45}.valid-tooltip{position:absolute;top:100%;z-index:5;display:none;max-width:100%;padding:.25rem .5rem;margin-top:.1rem;font-size:.875rem;color:#000;background-color:rgba(44,157,69,.9);border-radius:.25rem}.is-valid~.valid-feedback,.is-valid~.valid-tooltip,.was-validated :valid~.valid-feedback,.was-validated :valid~.valid-tooltip{display:block}.form-control.is-valid,.was-validated .form-control:valid{border-color:#2c9d45;padding-right:calc(1.5em + .75rem);background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3e%3cpath fill='%232C9D45' d='M2.3 6.73L.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3e%3c/svg%3e");background-repeat:no-repeat;background-position:right calc(.375em + .1875rem) center;background-size:calc(.75em + .375rem) calc(.75em + .375rem)}.form-control.is-valid:focus,.was-validated .form-control:valid:focus{border-color:#2c9d45;box-shadow:0 0 0 .25rem rgba(44,157,69,.25)}.was-validated textarea.form-control:valid,textarea.form-control.is-valid{padding-right:calc(1.5em + .75rem);background-position:top calc(.375em + .1875rem) right calc(.375em + .1875rem)}.form-select.is-valid,.was-validated .form-select:valid{border-color:#2c9d45;padding-right:calc(.75em + 2.3125rem);background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='%23414141' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M2 5l6 6 6-6'/%3e%3c/svg%3e"),url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3e%3cpath fill='%232C9D45' d='M2.3 6.73L.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3e%3c/svg%3e");background-position:right .75rem center,center right 1.75rem;background-size:16px 12px,calc(.75em + .375rem) calc(.75em + .375rem)}.form-select.is-valid:focus,.was-validated .form-select:valid:focus{border-color:#2c9d45;box-shadow:0 0 0 .25rem rgba(44,157,69,.25)}.form-check-input.is-valid,.was-validated .form-check-input:valid{border-color:#2c9d45}.form-check-input.is-valid:checked,.was-validated .form-check-input:valid:checked{background-color:#2c9d45}.form-check-input.is-valid:focus,.was-validated .form-check-input:valid:focus{box-shadow:0 0 0 .25rem rgba(44,157,69,.25)}.form-check-input.is-valid~.form-check-label,.was-validated .form-check-input:valid~.form-check-label{color:#2c9d45}.form-check-inline .form-check-input~.valid-feedback{margin-left:.5em}.input-group .form-control.is-valid,.input-group .form-select.is-valid,.was-validated .input-group .form-control:valid,.was-validated .input-group .form-select:valid{z-index:3}.invalid-feedback{display:none;width:100%;margin-top:.25rem;font-size:.875em;color:#c63800}.invalid-tooltip{position:absolute;top:100%;z-index:5;display:none;max-width:100%;padding:.25rem .5rem;margin-top:.1rem;font-size:.875rem;color:#fff;background-color:rgba(198,56,0,.9);border-radius:.25rem}.is-invalid~.invalid-feedback,.is-invalid~.invalid-tooltip,.was-validated :invalid~.invalid-feedback,.was-validated :invalid~.invalid-tooltip{display:block}.form-control.is-invalid,.was-validated .form-control:invalid{border-color:#c63800;padding-right:calc(1.5em + .75rem);background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12' width='12' height='12' fill='none' stroke='%23C63800'%3e%3ccircle cx='6' cy='6' r='4.5'/%3e%3cpath stroke-linejoin='round' d='M5.8 3.6h.4L6 6.5z'/%3e%3ccircle cx='6' cy='8.2' r='.6' fill='%23C63800' stroke='none'/%3e%3c/svg%3e");background-repeat:no-repeat;background-position:right calc(.375em + .1875rem) center;background-size:calc(.75em + .375rem) calc(.75em + .375rem)}.form-control.is-invalid:focus,.was-validated .form-control:invalid:focus{border-color:#c63800;box-shadow:0 0 0 .25rem rgba(198,56,0,.25)}.was-validated textarea.form-control:invalid,textarea.form-control.is-invalid{padding-right:calc(1.5em + .75rem);background-position:top calc(.375em + .1875rem) right calc(.375em + .1875rem)}.form-select.is-invalid,.was-validated .form-select:invalid{border-color:#c63800;padding-right:calc(.75em + 2.3125rem);background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='%23414141' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M2 5l6 6 6-6'/%3e%3c/svg%3e"),url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12' width='12' height='12' fill='none' stroke='%23C63800'%3e%3ccircle cx='6' cy='6' r='4.5'/%3e%3cpath stroke-linejoin='round' d='M5.8 3.6h.4L6 6.5z'/%3e%3ccircle cx='6' cy='8.2' r='.6' fill='%23C63800' stroke='none'/%3e%3c/svg%3e");background-position:right .75rem center,center right 1.75rem;background-size:16px 12px,calc(.75em + .375rem) calc(.75em + .375rem)}.form-select.is-invalid:focus,.was-validated .form-select:invalid:focus{border-color:#c63800;box-shadow:0 0 0 .25rem rgba(198,56,0,.25)}.form-check-input.is-invalid,.was-validated .form-check-input:invalid{border-color:#c63800}.form-check-input.is-invalid:checked,.was-validated .form-check-input:invalid:checked{background-color:#c63800}.form-check-input.is-invalid:focus,.was-validated .form-check-input:invalid:focus{box-shadow:0 0 0 .25rem rgba(198,56,0,.25)}.form-check-input.is-invalid~.form-check-label,.was-validated .form-check-input:invalid~.form-check-label{color:#c63800}.form-check-inline .form-check-input~.invalid-feedback{margin-left:.5em}.input-group .form-control.is-invalid,.input-group .form-select.is-invalid,.was-validated .input-group .form-control:invalid,.was-validated .input-group .form-select:invalid{z-index:3}.btn{display:inline-block;font-weight:400;line-height:1.5;color:#393939;text-align:center;text-decoration:none;vertical-align:middle;cursor:pointer;user-select:none;background-color:transparent;border:1px solid transparent;padding:.375rem .75rem;font-size:1rem;border-radius:.25rem;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion:reduce){.btn{transition:none}}.btn:hover{color:#393939}.btn-check:focus+.btn,.btn:focus{outline:0;box-shadow:0 0 0 .25rem rgba(56,103,206,.25)}.btn.disabled,.btn:disabled,fieldset:disabled .btn{pointer-events:none;opacity:.65}.btn-primary{color:#fff;background-color:#3867ce;border-color:#3867ce}.btn-primary:hover{color:#fff;background-color:#3058af;border-color:#2d52a5}.btn-check:focus+.btn-primary,.btn-primary:focus{color:#fff;background-color:#3058af;border-color:#2d52a5;box-shadow:0 0 0 .25rem rgba(86,126,213,.5)}.btn-check:active+.btn-primary,.btn-check:checked+.btn-primary,.btn-primary.active,.btn-primary:active,.show>.btn-primary.dropdown-toggle{color:#fff;background-color:#2d52a5;border-color:#2a4d9b}.btn-check:active+.btn-primary:focus,.btn-check:checked+.btn-primary:focus,.btn-primary.active:focus,.btn-primary:active:focus,.show>.btn-primary.dropdown-toggle:focus{box-shadow:0 0 0 .25rem rgba(86,126,213,.5)}.btn-primary.disabled,.btn-primary:disabled{color:#fff;background-color:#3867ce;border-color:#3867ce}.btn-secondary{color:#000;background-color:#fff;border-color:#fff}.btn-secondary:hover{color:#000;background-color:#fff;border-color:#fff}.btn-check:focus+.btn-secondary,.btn-secondary:focus{color:#000;background-color:#fff;border-color:#fff;box-shadow:0 0 0 .25rem rgba(217,217,217,.5)}.btn-check:active+.btn-secondary,.btn-check:checked+.btn-secondary,.btn-secondary.active,.btn-secondary:active,.show>.btn-secondary.dropdown-toggle{color:#000;background-color:#fff;border-color:#fff}.btn-check:active+.btn-secondary:focus,.btn-check:checked+.btn-secondary:focus,.btn-secondary.active:focus,.btn-secondary:active:focus,.show>.btn-secondary.dropdown-toggle:focus{box-shadow:0 0 0 .25rem rgba(217,217,217,.5)}.btn-secondary.disabled,.btn-secondary:disabled{color:#000;background-color:#fff;border-color:#fff}.btn-success{color:#000;background-color:#2c9d45;border-color:#2c9d45}.btn-success:hover{color:#000;background-color:#4cac61;border-color:#41a758}.btn-check:focus+.btn-success,.btn-success:focus{color:#000;background-color:#4cac61;border-color:#41a758;box-shadow:0 0 0 .25rem rgba(37,133,59,.5)}.btn-check:active+.btn-success,.btn-check:checked+.btn-success,.btn-success.active,.btn-success:active,.show>.btn-success.dropdown-toggle{color:#000;background-color:#56b16a;border-color:#41a758}.btn-check:active+.btn-success:focus,.btn-check:checked+.btn-success:focus,.btn-success.active:focus,.btn-success:active:focus,.show>.btn-success.dropdown-toggle:focus{box-shadow:0 0 0 .25rem rgba(37,133,59,.5)}.btn-success.disabled,.btn-success:disabled{color:#000;background-color:#2c9d45;border-color:#2c9d45}.btn-info{color:#000;background-color:#2195a9;border-color:#2195a9}.btn-info:hover{color:#000;background-color:#42a5b6;border-color:#37a0b2}.btn-check:focus+.btn-info,.btn-info:focus{color:#000;background-color:#42a5b6;border-color:#37a0b2;box-shadow:0 0 0 .25rem rgba(28,127,144,.5)}.btn-check:active+.btn-info,.btn-check:checked+.btn-info,.btn-info.active,.btn-info:active,.show>.btn-info.dropdown-toggle{color:#000;background-color:#4daaba;border-color:#37a0b2}.btn-check:active+.btn-info:focus,.btn-check:checked+.btn-info:focus,.btn-info.active:focus,.btn-info:active:focus,.show>.btn-info.dropdown-toggle:focus{box-shadow:0 0 0 .25rem rgba(28,127,144,.5)}.btn-info.disabled,.btn-info:disabled{color:#000;background-color:#2195a9;border-color:#2195a9}.btn-warning{color:#000;background-color:#b67f00;border-color:#b67f00}.btn-warning:hover{color:#000;background-color:#c19226;border-color:#bd8c1a}.btn-check:focus+.btn-warning,.btn-warning:focus{color:#000;background-color:#c19226;border-color:#bd8c1a;box-shadow:0 0 0 .25rem rgba(155,108,0,.5)}.btn-check:active+.btn-warning,.btn-check:checked+.btn-warning,.btn-warning.active,.btn-warning:active,.show>.btn-warning.dropdown-toggle{color:#000;background-color:#c59933;border-color:#bd8c1a}.btn-check:active+.btn-warning:focus,.btn-check:checked+.btn-warning:focus,.btn-warning.active:focus,.btn-warning:active:focus,.show>.btn-warning.dropdown-toggle:focus{box-shadow:0 0 0 .25rem rgba(155,108,0,.5)}.btn-warning.disabled,.btn-warning:disabled{color:#000;background-color:#b67f00;border-color:#b67f00}.btn-danger{color:#fff;background-color:#c63800;border-color:#c63800}.btn-danger:hover{color:#fff;background-color:#a83000;border-color:#9e2d00}.btn-check:focus+.btn-danger,.btn-danger:focus{color:#fff;background-color:#a83000;border-color:#9e2d00;box-shadow:0 0 0 .25rem rgba(207,86,38,.5)}.btn-check:active+.btn-danger,.btn-check:checked+.btn-danger,.btn-danger.active,.btn-danger:active,.show>.btn-danger.dropdown-toggle{color:#fff;background-color:#9e2d00;border-color:#952a00}.btn-check:active+.btn-danger:focus,.btn-check:checked+.btn-danger:focus,.btn-danger.active:focus,.btn-danger:active:focus,.show>.btn-danger.dropdown-toggle:focus{box-shadow:0 0 0 .25rem rgba(207,86,38,.5)}.btn-danger.disabled,.btn-danger:disabled{color:#fff;background-color:#c63800;border-color:#c63800}.btn-light{color:#000;background-color:#f7f6f4;border-color:#f7f6f4}.btn-light:hover{color:#000;background-color:#f8f7f6;border-color:#f8f7f5}.btn-check:focus+.btn-light,.btn-light:focus{color:#000;background-color:#f8f7f6;border-color:#f8f7f5;box-shadow:0 0 0 .25rem rgba(210,209,207,.5)}.btn-check:active+.btn-light,.btn-check:checked+.btn-light,.btn-light.active,.btn-light:active,.show>.btn-light.dropdown-toggle{color:#000;background-color:#f9f8f6;border-color:#f8f7f5}.btn-check:active+.btn-light:focus,.btn-check:checked+.btn-light:focus,.btn-light.active:focus,.btn-light:active:focus,.show>.btn-light.dropdown-toggle:focus{box-shadow:0 0 0 .25rem rgba(210,209,207,.5)}.btn-light.disabled,.btn-light:disabled{color:#000;background-color:#f7f6f4;border-color:#f7f6f4}.btn-dark{color:#fff;background-color:#393939;border-color:#393939}.btn-dark:hover{color:#fff;background-color:#303030;border-color:#2e2e2e}.btn-check:focus+.btn-dark,.btn-dark:focus{color:#fff;background-color:#303030;border-color:#2e2e2e;box-shadow:0 0 0 .25rem rgba(87,87,87,.5)}.btn-check:active+.btn-dark,.btn-check:checked+.btn-dark,.btn-dark.active,.btn-dark:active,.show>.btn-dark.dropdown-toggle{color:#fff;background-color:#2e2e2e;border-color:#2b2b2b}.btn-check:active+.btn-dark:focus,.btn-check:checked+.btn-dark:focus,.btn-dark.active:focus,.btn-dark:active:focus,.show>.btn-dark.dropdown-toggle:focus{box-shadow:0 0 0 .25rem rgba(87,87,87,.5)}.btn-dark.disabled,.btn-dark:disabled{color:#fff;background-color:#393939;border-color:#393939}.btn-outline-primary{color:#3867ce;border-color:#3867ce}.btn-outline-primary:hover{color:#fff;background-color:#3867ce;border-color:#3867ce}.btn-check:focus+.btn-outline-primary,.btn-outline-primary:focus{box-shadow:0 0 0 .25rem rgba(56,103,206,.5)}.btn-check:active+.btn-outline-primary,.btn-check:checked+.btn-outline-primary,.btn-outline-primary.active,.btn-outline-primary.dropdown-toggle.show,.btn-outline-primary:active{color:#fff;background-color:#3867ce;border-color:#3867ce}.btn-check:active+.btn-outline-primary:focus,.btn-check:checked+.btn-outline-primary:focus,.btn-outline-primary.active:focus,.btn-outline-primary.dropdown-toggle.show:focus,.btn-outline-primary:active:focus{box-shadow:0 0 0 .25rem rgba(56,103,206,.5)}.btn-outline-primary.disabled,.btn-outline-primary:disabled{color:#3867ce;background-color:transparent}.btn-outline-secondary{color:#fff;border-color:#fff}.btn-outline-secondary:hover{color:#000;background-color:#fff;border-color:#fff}.btn-check:focus+.btn-outline-secondary,.btn-outline-secondary:focus{box-shadow:0 0 0 .25rem rgba(255,255,255,.5)}.btn-check:active+.btn-outline-secondary,.btn-check:checked+.btn-outline-secondary,.btn-outline-secondary.active,.btn-outline-secondary.dropdown-toggle.show,.btn-outline-secondary:active{color:#000;background-color:#fff;border-color:#fff}.btn-check:active+.btn-outline-secondary:focus,.btn-check:checked+.btn-outline-secondary:focus,.btn-outline-secondary.active:focus,.btn-outline-secondary.dropdown-toggle.show:focus,.btn-outline-secondary:active:focus{box-shadow:0 0 0 .25rem rgba(255,255,255,.5)}.btn-outline-secondary.disabled,.btn-outline-secondary:disabled{color:#fff;background-color:transparent}.btn-outline-success{color:#2c9d45;border-color:#2c9d45}.btn-outline-success:hover{color:#000;background-color:#2c9d45;border-color:#2c9d45}.btn-check:focus+.btn-outline-success,.btn-outline-success:focus{box-shadow:0 0 0 .25rem rgba(44,157,69,.5)}.btn-check:active+.btn-outline-success,.btn-check:checked+.btn-outline-success,.btn-outline-success.active,.btn-outline-success.dropdown-toggle.show,.btn-outline-success:active{color:#000;background-color:#2c9d45;border-color:#2c9d45}.btn-check:active+.btn-outline-success:focus,.btn-check:checked+.btn-outline-success:focus,.btn-outline-success.active:focus,.btn-outline-success.dropdown-toggle.show:focus,.btn-outline-success:active:focus{box-shadow:0 0 0 .25rem rgba(44,157,69,.5)}.btn-outline-success.disabled,.btn-outline-success:disabled{color:#2c9d45;background-color:transparent}.btn-outline-info{color:#2195a9;border-color:#2195a9}.btn-outline-info:hover{color:#000;background-color:#2195a9;border-color:#2195a9}.btn-check:focus+.btn-outline-info,.btn-outline-info:focus{box-shadow:0 0 0 .25rem rgba(33,149,169,.5)}.btn-check:active+.btn-outline-info,.btn-check:checked+.btn-outline-info,.btn-outline-info.active,.btn-outline-info.dropdown-toggle.show,.btn-outline-info:active{color:#000;background-color:#2195a9;border-color:#2195a9}.btn-check:active+.btn-outline-info:focus,.btn-check:checked+.btn-outline-info:focus,.btn-outline-info.active:focus,.btn-outline-info.dropdown-toggle.show:focus,.btn-outline-info:active:focus{box-shadow:0 0 0 .25rem rgba(33,149,169,.5)}.btn-outline-info.disabled,.btn-outline-info:disabled{color:#2195a9;background-color:transparent}.btn-outline-warning{color:#b67f00;border-color:#b67f00}.btn-outline-warning:hover{color:#000;background-color:#b67f00;border-color:#b67f00}.btn-check:focus+.btn-outline-warning,.btn-outline-warning:focus{box-shadow:0 0 0 .25rem rgba(182,127,0,.5)}.btn-check:active+.btn-outline-warning,.btn-check:checked+.btn-outline-warning,.btn-outline-warning.active,.btn-outline-warning.dropdown-toggle.show,.btn-outline-warning:active{color:#000;background-color:#b67f00;border-color:#b67f00}.btn-check:active+.btn-outline-warning:focus,.btn-check:checked+.btn-outline-warning:focus,.btn-outline-warning.active:focus,.btn-outline-warning.dropdown-toggle.show:focus,.btn-outline-warning:active:focus{box-shadow:0 0 0 .25rem rgba(182,127,0,.5)}.btn-outline-warning.disabled,.btn-outline-warning:disabled{color:#b67f00;background-color:transparent}.btn-outline-danger{color:#c63800;border-color:#c63800}.btn-outline-danger:hover{color:#fff;background-color:#c63800;border-color:#c63800}.btn-check:focus+.btn-outline-danger,.btn-outline-danger:focus{box-shadow:0 0 0 .25rem rgba(198,56,0,.5)}.btn-check:active+.btn-outline-danger,.btn-check:checked+.btn-outline-danger,.btn-outline-danger.active,.btn-outline-danger.dropdown-toggle.show,.btn-outline-danger:active{color:#fff;background-color:#c63800;border-color:#c63800}.btn-check:active+.btn-outline-danger:focus,.btn-check:checked+.btn-outline-danger:focus,.btn-outline-danger.active:focus,.btn-outline-danger.dropdown-toggle.show:focus,.btn-outline-danger:active:focus{box-shadow:0 0 0 .25rem rgba(198,56,0,.5)}.btn-outline-danger.disabled,.btn-outline-danger:disabled{color:#c63800;background-color:transparent}.btn-outline-light{color:#f7f6f4;border-color:#f7f6f4}.btn-outline-light:hover{color:#000;background-color:#f7f6f4;border-color:#f7f6f4}.btn-check:focus+.btn-outline-light,.btn-outline-light:focus{box-shadow:0 0 0 .25rem rgba(247,246,244,.5)}.btn-check:active+.btn-outline-light,.btn-check:checked+.btn-outline-light,.btn-outline-light.active,.btn-outline-light.dropdown-toggle.show,.btn-outline-light:active{color:#000;background-color:#f7f6f4;border-color:#f7f6f4}.btn-check:active+.btn-outline-light:focus,.btn-check:checked+.btn-outline-light:focus,.btn-outline-light.active:focus,.btn-outline-light.dropdown-toggle.show:focus,.btn-outline-light:active:focus{box-shadow:0 0 0 .25rem rgba(247,246,244,.5)}.btn-outline-light.disabled,.btn-outline-light:disabled{color:#f7f6f4;background-color:transparent}.btn-outline-dark{color:#393939;border-color:#393939}.btn-outline-dark:hover{color:#fff;background-color:#393939;border-color:#393939}.btn-check:focus+.btn-outline-dark,.btn-outline-dark:focus{box-shadow:0 0 0 .25rem rgba(57,57,57,.5)}.btn-check:active+.btn-outline-dark,.btn-check:checked+.btn-outline-dark,.btn-outline-dark.active,.btn-outline-dark.dropdown-toggle.show,.btn-outline-dark:active{color:#fff;background-color:#393939;border-color:#393939}.btn-check:active+.btn-outline-dark:focus,.btn-check:checked+.btn-outline-dark:focus,.btn-outline-dark.active:focus,.btn-outline-dark.dropdown-toggle.show:focus,.btn-outline-dark:active:focus{box-shadow:0 0 0 .25rem rgba(57,57,57,.5)}.btn-outline-dark.disabled,.btn-outline-dark:disabled{color:#393939;background-color:transparent}.btn-link{font-weight:400;color:#3867ce;text-decoration:underline}.btn-link:hover{color:#2d52a5}.btn-link.disabled,.btn-link:disabled{color:rgba(0,0,0,.6)}.btn-group-lg>.btn,.btn-group.btn-group-lg>.btn,.btn-lg{padding:.5rem 1rem;font-size:1.25rem;border-radius:.5rem}.btn-group-sm>.btn,.btn-group.btn-group-sm>.btn,.btn-sm{padding:.25rem .5rem;font-size:.875rem;border-radius:.12 .5rem}.fade{transition:opacity .15s linear}@media (prefers-reduced-motion:reduce){.fade{transition:none}}.fade:not(.show){opacity:0}.collapse:not(.show){display:none}.collapsing{height:0;overflow:hidden;transition:height .35s ease}@media (prefers-reduced-motion:reduce){.collapsing{transition:none}}.dropdown,.dropend,.dropstart,.dropup{position:relative}.dropdown-toggle{white-space:nowrap}.dropdown-toggle::after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:"";border-top:.3em solid;border-right:.3em solid transparent;border-bottom:0;border-left:.3em solid transparent}.dropdown-toggle:empty::after{margin-left:0}.dropdown-menu{position:absolute;top:100%;z-index:1000;display:none;min-width:10rem;padding:.5rem 0;margin:0;font-size:1rem;color:#393939;text-align:left;list-style:none;background-color:#fff;background-clip:padding-box;border:1px solid rgba(0,0,0,.15);border-radius:.25rem}.dropdown-menu[data-bs-popper]{left:0;margin-top:.125rem}.dropdown-menu-start{--bs-position:start}.dropdown-menu-start[data-bs-popper]{right:auto;left:0}.dropdown-menu-end{--bs-position:end}.dropdown-menu-end[data-bs-popper]{right:0;left:auto}@media (min-width:576px){.dropdown-menu-sm-start{--bs-position:start}.dropdown-menu-sm-start[data-bs-popper]{right:auto;left:0}.dropdown-menu-sm-end{--bs-position:end}.dropdown-menu-sm-end[data-bs-popper]{right:0;left:auto}}@media (min-width:768px){.dropdown-menu-md-start{--bs-position:start}.dropdown-menu-md-start[data-bs-popper]{right:auto;left:0}.dropdown-menu-md-end{--bs-position:end}.dropdown-menu-md-end[data-bs-popper]{right:0;left:auto}}@media (min-width:992px){.dropdown-menu-lg-start{--bs-position:start}.dropdown-menu-lg-start[data-bs-popper]{right:auto;left:0}.dropdown-menu-lg-end{--bs-position:end}.dropdown-menu-lg-end[data-bs-popper]{right:0;left:auto}}@media (min-width:1200px){.dropdown-menu-xl-start{--bs-position:start}.dropdown-menu-xl-start[data-bs-popper]{right:auto;left:0}.dropdown-menu-xl-end{--bs-position:end}.dropdown-menu-xl-end[data-bs-popper]{right:0;left:auto}}@media (min-width:1400px){.dropdown-menu-xxl-start{--bs-position:start}.dropdown-menu-xxl-start[data-bs-popper]{right:auto;left:0}.dropdown-menu-xxl-end{--bs-position:end}.dropdown-menu-xxl-end[data-bs-popper]{right:0;left:auto}}.dropup .dropdown-menu[data-bs-popper]{top:auto;bottom:100%;margin-top:0;margin-bottom:.125rem}.dropup .dropdown-toggle::after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:"";border-top:0;border-right:.3em solid transparent;border-bottom:.3em solid;border-left:.3em solid transparent}.dropup .dropdown-toggle:empty::after{margin-left:0}.dropend .dropdown-menu{top:0;right:auto;left:100%}.dropend .dropdown-menu[data-bs-popper]{margin-top:0;margin-left:.125rem}.dropend .dropdown-toggle::after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:"";border-top:.3em solid transparent;border-right:0;border-bottom:.3em solid transparent;border-left:.3em solid}.dropend .dropdown-toggle:empty::after{margin-left:0}.dropend .dropdown-toggle::after{vertical-align:0}.dropstart .dropdown-menu{top:0;right:100%;left:auto}.dropstart .dropdown-menu[data-bs-popper]{margin-top:0;margin-right:.125rem}.dropstart .dropdown-toggle::after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:""}.dropstart .dropdown-toggle::after{display:none}.dropstart .dropdown-toggle::before{display:inline-block;margin-right:.255em;vertical-align:.255em;content:"";border-top:.3em solid transparent;border-right:.3em solid;border-bottom:.3em solid transparent}.dropstart .dropdown-toggle:empty::after{margin-left:0}.dropstart .dropdown-toggle::before{vertical-align:0}.dropdown-divider{height:0;margin:.5rem 0;overflow:hidden;border-top:1px solid rgba(0,0,0,.15)}.dropdown-item{display:block;width:100%;padding:.25rem 1rem;clear:both;font-weight:400;color:#393939;text-align:inherit;text-decoration:none;white-space:nowrap;background-color:transparent;border:0}.dropdown-item:focus,.dropdown-item:hover{color:#333;background-color:#f7f6f4}.dropdown-item.active,.dropdown-item:active{color:#fff;text-decoration:none;background-color:#3867ce}.dropdown-item.disabled,.dropdown-item:disabled{color:rgba(0,0,0,.6);pointer-events:none;background-color:transparent}.dropdown-menu.show{display:block}.dropdown-header{display:block;padding:.5rem 1rem;margin-bottom:0;font-size:.875rem;color:rgba(0,0,0,.6);white-space:nowrap}.dropdown-item-text{display:block;padding:.25rem 1rem;color:#393939}.dropdown-menu-dark{color:rgba(0,0,0,.3);background-color:#414141;border-color:rgba(0,0,0,.15)}.dropdown-menu-dark .dropdown-item{color:rgba(0,0,0,.3)}.dropdown-menu-dark .dropdown-item:focus,.dropdown-menu-dark .dropdown-item:hover{color:#fff;background-color:rgba(255,255,255,.15)}.dropdown-menu-dark .dropdown-item.active,.dropdown-menu-dark .dropdown-item:active{color:#fff;background-color:#3867ce}.dropdown-menu-dark .dropdown-item.disabled,.dropdown-menu-dark .dropdown-item:disabled{color:rgba(0,0,0,.5)}.dropdown-menu-dark .dropdown-divider{border-color:rgba(0,0,0,.15)}.dropdown-menu-dark .dropdown-item-text{color:rgba(0,0,0,.3)}.dropdown-menu-dark .dropdown-header{color:rgba(0,0,0,.5)}.btn-group,.btn-group-vertical{position:relative;display:inline-flex;vertical-align:middle}.btn-group-vertical>.btn,.btn-group>.btn{position:relative;flex:1 1 auto}.btn-group-vertical>.btn-check:checked+.btn,.btn-group-vertical>.btn-check:focus+.btn,.btn-group-vertical>.btn.active,.btn-group-vertical>.btn:active,.btn-group-vertical>.btn:focus,.btn-group-vertical>.btn:hover,.btn-group>.btn-check:checked+.btn,.btn-group>.btn-check:focus+.btn,.btn-group>.btn.active,.btn-group>.btn:active,.btn-group>.btn:focus,.btn-group>.btn:hover{z-index:1}.btn-toolbar{display:flex;flex-wrap:wrap;justify-content:flex-start}.btn-toolbar .input-group{width:auto}.btn-group>.btn-group:not(:first-child),.btn-group>.btn:not(:first-child){margin-left:-1px}.btn-group>.btn-group:not(:last-child)>.btn,.btn-group>.btn:not(:last-child):not(.dropdown-toggle){border-top-right-radius:0;border-bottom-right-radius:0}.btn-group>.btn-group:not(:first-child)>.btn,.btn-group>.btn:nth-child(n+3),.btn-group>:not(.btn-check)+.btn{border-top-left-radius:0;border-bottom-left-radius:0}.dropdown-toggle-split{padding-right:.5625rem;padding-left:.5625rem}.dropdown-toggle-split::after,.dropend .dropdown-toggle-split::after,.dropup .dropdown-toggle-split::after{margin-left:0}.dropstart .dropdown-toggle-split::before{margin-right:0}.btn-group-sm>.btn+.dropdown-toggle-split,.btn-sm+.dropdown-toggle-split{padding-right:.375rem;padding-left:.375rem}.btn-group-lg>.btn+.dropdown-toggle-split,.btn-lg+.dropdown-toggle-split{padding-right:.75rem;padding-left:.75rem}.btn-group-vertical{flex-direction:column;align-items:flex-start;justify-content:center}.btn-group-vertical>.btn,.btn-group-vertical>.btn-group{width:100%}.btn-group-vertical>.btn-group:not(:first-child),.btn-group-vertical>.btn:not(:first-child){margin-top:-1px}.btn-group-vertical>.btn-group:not(:last-child)>.btn,.btn-group-vertical>.btn:not(:last-child):not(.dropdown-toggle){border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn-group:not(:first-child)>.btn,.btn-group-vertical>.btn~.btn{border-top-left-radius:0;border-top-right-radius:0}.nav{display:flex;flex-wrap:wrap;padding-left:0;margin-bottom:0;list-style:none}.nav-link{display:block;padding:.5rem 1rem;text-decoration:none;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out}@media (prefers-reduced-motion:reduce){.nav-link{transition:none}}.nav-link.disabled{color:rgba(0,0,0,.6);pointer-events:none;cursor:default}.nav-tabs{border-bottom:1px solid rgba(0,0,0,.3)}.nav-tabs .nav-link{margin-bottom:-1px;background:0 0;border:1px solid transparent;border-top-left-radius:.25rem;border-top-right-radius:.25rem}.nav-tabs .nav-link:focus,.nav-tabs .nav-link:hover{border-color:#efeeec #efeeec rgba(0,0,0,.3);isolation:isolate}.nav-tabs .nav-link.disabled{color:rgba(0,0,0,.6);background-color:transparent;border-color:transparent}.nav-tabs .nav-item.show .nav-link,.nav-tabs .nav-link.active{color:rgba(0,0,0,.7);background-color:#fff;border-color:rgba(0,0,0,.3) rgba(0,0,0,.3) #fff}.nav-tabs .dropdown-menu{margin-top:-1px;border-top-left-radius:0;border-top-right-radius:0}.nav-pills .nav-link{background:0 0;border:0;border-radius:.25rem}.nav-pills .nav-link.active,.nav-pills .show>.nav-link{color:#fff;background-color:#3867ce}.nav-fill .nav-item,.nav-fill>.nav-link{flex:1 1 auto;text-align:center}.nav-justified .nav-item,.nav-justified>.nav-link{flex-basis:0;flex-grow:1;text-align:center}.nav-fill .nav-item .nav-link,.nav-justified .nav-item .nav-link{width:100%}.tab-content>.tab-pane{display:none}.tab-content>.active{display:block}.navbar{position:relative;display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;padding-top:.5rem;padding-bottom:.5rem}.navbar>.container,.navbar>.container-fluid,.navbar>.container-lg,.navbar>.container-md,.navbar>.container-sm,.navbar>.container-xl,.navbar>.container-xxl{display:flex;flex-wrap:inherit;align-items:center;justify-content:space-between}.navbar-brand{padding-top:.3125rem;padding-bottom:.3125rem;margin-right:1rem;font-size:1.25rem;text-decoration:none;white-space:nowrap}.navbar-nav{display:flex;flex-direction:column;padding-left:0;margin-bottom:0;list-style:none}.navbar-nav .nav-link{padding-right:0;padding-left:0}.navbar-nav .dropdown-menu{position:static}.navbar-text{padding-top:.5rem;padding-bottom:.5rem}.navbar-collapse{flex-basis:100%;flex-grow:1;align-items:center}.navbar-toggler{padding:.25rem .75rem;font-size:1.25rem;line-height:1;background-color:transparent;border:1px solid transparent;border-radius:.25rem;transition:box-shadow .15s ease-in-out}@media (prefers-reduced-motion:reduce){.navbar-toggler{transition:none}}.navbar-toggler:hover{text-decoration:none}.navbar-toggler:focus{text-decoration:none;outline:0;box-shadow:0 0 0 .25rem}.navbar-toggler-icon{display:inline-block;width:1.5em;height:1.5em;vertical-align:middle;background-repeat:no-repeat;background-position:center;background-size:100%}.navbar-nav-scroll{max-height:var(--scielo-scroll-height,75vh);overflow-y:auto}@media (min-width:576px){.navbar-expand-sm{flex-wrap:nowrap;justify-content:flex-start}.navbar-expand-sm .navbar-nav{flex-direction:row}.navbar-expand-sm .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-sm .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand-sm .navbar-nav-scroll{overflow:visible}.navbar-expand-sm .navbar-collapse{display:flex!important;flex-basis:auto}.navbar-expand-sm .navbar-toggler{display:none}}@media (min-width:768px){.navbar-expand-md{flex-wrap:nowrap;justify-content:flex-start}.navbar-expand-md .navbar-nav{flex-direction:row}.navbar-expand-md .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-md .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand-md .navbar-nav-scroll{overflow:visible}.navbar-expand-md .navbar-collapse{display:flex!important;flex-basis:auto}.navbar-expand-md .navbar-toggler{display:none}}@media (min-width:992px){.navbar-expand-lg{flex-wrap:nowrap;justify-content:flex-start}.navbar-expand-lg .navbar-nav{flex-direction:row}.navbar-expand-lg .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-lg .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand-lg .navbar-nav-scroll{overflow:visible}.navbar-expand-lg .navbar-collapse{display:flex!important;flex-basis:auto}.navbar-expand-lg .navbar-toggler{display:none}}@media (min-width:1200px){.navbar-expand-xl{flex-wrap:nowrap;justify-content:flex-start}.navbar-expand-xl .navbar-nav{flex-direction:row}.navbar-expand-xl .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-xl .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand-xl .navbar-nav-scroll{overflow:visible}.navbar-expand-xl .navbar-collapse{display:flex!important;flex-basis:auto}.navbar-expand-xl .navbar-toggler{display:none}}@media (min-width:1400px){.navbar-expand-xxl{flex-wrap:nowrap;justify-content:flex-start}.navbar-expand-xxl .navbar-nav{flex-direction:row}.navbar-expand-xxl .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-xxl .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand-xxl .navbar-nav-scroll{overflow:visible}.navbar-expand-xxl .navbar-collapse{display:flex!important;flex-basis:auto}.navbar-expand-xxl .navbar-toggler{display:none}}.navbar-expand{flex-wrap:nowrap;justify-content:flex-start}.navbar-expand .navbar-nav{flex-direction:row}.navbar-expand .navbar-nav .dropdown-menu{position:absolute}.navbar-expand .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand .navbar-nav-scroll{overflow:visible}.navbar-expand .navbar-collapse{display:flex!important;flex-basis:auto}.navbar-expand .navbar-toggler{display:none}.navbar-light .navbar-brand{color:rgba(0,0,0,.9)}.navbar-light .navbar-brand:focus,.navbar-light .navbar-brand:hover{color:rgba(0,0,0,.9)}.navbar-light .navbar-nav .nav-link{color:rgba(0,0,0,.55)}.navbar-light .navbar-nav .nav-link:focus,.navbar-light .navbar-nav .nav-link:hover{color:rgba(0,0,0,.7)}.navbar-light .navbar-nav .nav-link.disabled{color:rgba(0,0,0,.3)}.navbar-light .navbar-nav .nav-link.active,.navbar-light .navbar-nav .show>.nav-link{color:rgba(0,0,0,.9)}.navbar-light .navbar-toggler{color:rgba(0,0,0,.55);border-color:rgba(0,0,0,.1)}.navbar-light .navbar-toggler-icon{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30'%3e%3cpath stroke='rgba%280, 0, 0, 0.55%29' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e")}.navbar-light .navbar-text{color:rgba(0,0,0,.55)}.navbar-light .navbar-text a,.navbar-light .navbar-text a:focus,.navbar-light .navbar-text a:hover{color:rgba(0,0,0,.9)}.navbar-dark .navbar-brand{color:#fff}.navbar-dark .navbar-brand:focus,.navbar-dark .navbar-brand:hover{color:#fff}.navbar-dark .navbar-nav .nav-link{color:rgba(255,255,255,.55)}.navbar-dark .navbar-nav .nav-link:focus,.navbar-dark .navbar-nav .nav-link:hover{color:rgba(255,255,255,.75)}.navbar-dark .navbar-nav .nav-link.disabled{color:rgba(255,255,255,.25)}.navbar-dark .navbar-nav .nav-link.active,.navbar-dark .navbar-nav .show>.nav-link{color:#fff}.navbar-dark .navbar-toggler{color:rgba(255,255,255,.55);border-color:rgba(255,255,255,.1)}.navbar-dark .navbar-toggler-icon{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30'%3e%3cpath stroke='rgba%28255, 255, 255, 0.55%29' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e")}.navbar-dark .navbar-text{color:rgba(255,255,255,.55)}.navbar-dark .navbar-text a,.navbar-dark .navbar-text a:focus,.navbar-dark .navbar-text a:hover{color:#fff}.card{position:relative;display:flex;flex-direction:column;min-width:0;word-wrap:break-word;background-color:#fff;background-clip:border-box;border:1px solid rgba(0,0,0,.125);border-radius:.25rem}.card>hr{margin-right:0;margin-left:0}.card>.list-group{border-top:inherit;border-bottom:inherit}.card>.list-group:first-child{border-top-width:0;border-top-left-radius:calc(.25rem - 1px);border-top-right-radius:calc(.25rem - 1px)}.card>.list-group:last-child{border-bottom-width:0;border-bottom-right-radius:calc(.25rem - 1px);border-bottom-left-radius:calc(.25rem - 1px)}.card>.card-header+.list-group,.card>.list-group+.card-footer{border-top:0}.card-body{flex:1 1 auto;padding:1rem 1rem}.card-title{margin-bottom:.5rem}.card-subtitle{margin-top:-.25rem;margin-bottom:0}.card-text:last-child{margin-bottom:0}.card-link:hover{text-decoration:none}.card-link+.card-link{margin-left:1rem}.card-header{padding:.5rem 1rem;margin-bottom:0;background-color:rgba(0,0,0,.03);border-bottom:1px solid rgba(0,0,0,.125)}.card-header:first-child{border-radius:calc(.25rem - 1px) calc(.25rem - 1px) 0 0}.card-footer{padding:.5rem 1rem;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.125)}.card-footer:last-child{border-radius:0 0 calc(.25rem - 1px) calc(.25rem - 1px)}.card-header-tabs{margin-right:-.5rem;margin-bottom:-.5rem;margin-left:-.5rem;border-bottom:0}.card-header-pills{margin-right:-.5rem;margin-left:-.5rem}.card-img-overlay{position:absolute;top:0;right:0;bottom:0;left:0;padding:1rem;border-radius:calc(.25rem - 1px)}.card-img,.card-img-bottom,.card-img-top{width:100%}.card-img,.card-img-top{border-top-left-radius:calc(.25rem - 1px);border-top-right-radius:calc(.25rem - 1px)}.card-img,.card-img-bottom{border-bottom-right-radius:calc(.25rem - 1px);border-bottom-left-radius:calc(.25rem - 1px)}.card-group>.card{margin-bottom:.5rem}@media (min-width:576px){.card-group{display:flex;flex-flow:row wrap}.card-group>.card{flex:1 0 0%;margin-bottom:0}.card-group>.card+.card{margin-left:0;border-left:0}.card-group>.card:not(:last-child){border-top-right-radius:0;border-bottom-right-radius:0}.card-group>.card:not(:last-child) .card-header,.card-group>.card:not(:last-child) .card-img-top{border-top-right-radius:0}.card-group>.card:not(:last-child) .card-footer,.card-group>.card:not(:last-child) .card-img-bottom{border-bottom-right-radius:0}.card-group>.card:not(:first-child){border-top-left-radius:0;border-bottom-left-radius:0}.card-group>.card:not(:first-child) .card-header,.card-group>.card:not(:first-child) .card-img-top{border-top-left-radius:0}.card-group>.card:not(:first-child) .card-footer,.card-group>.card:not(:first-child) .card-img-bottom{border-bottom-left-radius:0}}.accordion-button{position:relative;display:flex;align-items:center;width:100%;padding:1rem 1.25rem;font-size:1rem;color:#393939;text-align:left;background-color:transparent;border:0;border-radius:0;overflow-anchor:none;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out,border-radius .15s ease}@media (prefers-reduced-motion:reduce){.accordion-button{transition:none}}.accordion-button:not(.collapsed){color:#325db9;background-color:#ebf0fa;box-shadow:inset 0 -1px 0 rgba(0,0,0,.125)}.accordion-button:not(.collapsed)::after{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23325db9'%3e%3cpath fill-rule='evenodd' d='M1.646 4.646a.5.5 0 0 1 .708 0L8 10.293l5.646-5.647a.5.5 0 0 1 .708.708l-6 6a.5.5 0 0 1-.708 0l-6-6a.5.5 0 0 1 0-.708z'/%3e%3c/svg%3e");transform:rotate(180deg)}.accordion-button::after{flex-shrink:0;width:1.25rem;height:1.25rem;margin-left:auto;content:"";background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23393939'%3e%3cpath fill-rule='evenodd' d='M1.646 4.646a.5.5 0 0 1 .708 0L8 10.293l5.646-5.647a.5.5 0 0 1 .708.708l-6 6a.5.5 0 0 1-.708 0l-6-6a.5.5 0 0 1 0-.708z'/%3e%3c/svg%3e");background-repeat:no-repeat;background-size:1.25rem;transition:transform .2s ease-in-out}@media (prefers-reduced-motion:reduce){.accordion-button::after{transition:none}}.accordion-button:hover{z-index:2}.accordion-button:focus{z-index:3;border-color:#9cb3e7;outline:0;box-shadow:0 0 0 .25rem rgba(56,103,206,.25)}.accordion-header{margin-bottom:0}.accordion-item{margin-bottom:-1px;background-color:transparent;border:1px solid rgba(0,0,0,.125)}.accordion-item:first-of-type{border-top-left-radius:.25rem;border-top-right-radius:.25rem}.accordion-item:first-of-type .accordion-button{border-top-left-radius:calc(.25rem - 1px);border-top-right-radius:calc(.25rem - 1px)}.accordion-item:last-of-type{margin-bottom:0;border-bottom-right-radius:.25rem;border-bottom-left-radius:.25rem}.accordion-item:last-of-type .accordion-button.collapsed{border-bottom-right-radius:calc(.25rem - 1px);border-bottom-left-radius:calc(.25rem - 1px)}.accordion-item:last-of-type .accordion-collapse{border-bottom-right-radius:.25rem;border-bottom-left-radius:.25rem}.accordion-body{padding:1rem 1.25rem}.accordion-flush .accordion-collapse{border-width:0}.accordion-flush .accordion-item{border-right:0;border-left:0;border-radius:0}.accordion-flush .accordion-item:first-child{border-top:0}.accordion-flush .accordion-item:last-child{border-bottom:0}.accordion-flush .accordion-item .accordion-button{border-radius:0}.breadcrumb{display:flex;flex-wrap:wrap;padding:0 0;margin-bottom:1rem;list-style:none}.breadcrumb-item+.breadcrumb-item{padding-left:.5rem}.breadcrumb-item+.breadcrumb-item::before{float:left;padding-right:.5rem;color:rgba(0,0,0,.6);content:var(--scielo-breadcrumb-divider, "/")}.breadcrumb-item.active{color:rgba(0,0,0,.6)}.pagination{display:flex;padding-left:0;list-style:none}.page-link{position:relative;display:block;color:#3867ce;text-decoration:none;background-color:#fff;border:1px solid rgba(0,0,0,.3);transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion:reduce){.page-link{transition:none}}.page-link:hover{z-index:2;color:#2d52a5;background-color:#efeeec;border-color:rgba(0,0,0,.3)}.page-link:focus{z-index:3;color:#2d52a5;background-color:#efeeec;outline:0;box-shadow:0 0 0 .25rem rgba(56,103,206,.25)}.page-item:not(:first-child) .page-link{margin-left:-1px}.page-item.active .page-link{z-index:3;color:#fff;background-color:#3867ce;border-color:#3867ce}.page-item.disabled .page-link{color:rgba(0,0,0,.6);pointer-events:none;background-color:#fff;border-color:rgba(0,0,0,.3)}.page-link{padding:.375rem .75rem}.page-item:first-child .page-link{border-top-left-radius:.25rem;border-bottom-left-radius:.25rem}.page-item:last-child .page-link{border-top-right-radius:.25rem;border-bottom-right-radius:.25rem}.pagination-lg .page-link{padding:.75rem 1.5rem;font-size:1.25rem}.pagination-lg .page-item:first-child .page-link{border-top-left-radius:.5rem;border-bottom-left-radius:.5rem}.pagination-lg .page-item:last-child .page-link{border-top-right-radius:.5rem;border-bottom-right-radius:.5rem}.pagination-sm .page-link{padding:.25rem .5rem;font-size:.875rem}.pagination-sm .page-item:first-child .page-link{border-top-left-radius:.12 .5rem;border-bottom-left-radius:.12 .5rem}.pagination-sm .page-item:last-child .page-link{border-top-right-radius:.12 .5rem;border-bottom-right-radius:.12 .5rem}.badge{display:inline-block;padding:.35em .65em;font-size:.75em;font-weight:700;line-height:1;color:#fff;text-align:center;white-space:nowrap;vertical-align:baseline;border-radius:.25rem}.badge:empty{display:none}.btn .badge{position:relative;top:-1px}.alert{position:relative;padding:1rem 1rem;margin-bottom:1rem;border:1px solid transparent;border-radius:.25rem}.alert-heading{color:inherit}.alert-link{font-weight:700}.alert-dismissible{padding-right:3rem}.alert-dismissible .btn-close{position:absolute;top:0;right:0;z-index:2;padding:1.25rem 1rem}.alert-primary{color:#223e7c;background-color:#d7e1f5;border-color:#c3d1f0}.alert-primary .alert-link{color:#1b3263}.alert-secondary{color:#666;background-color:#fff;border-color:#fff}.alert-secondary .alert-link{color:#525252}.alert-success{color:#1a5e29;background-color:#d5ebda;border-color:#c0e2c7}.alert-success .alert-link{color:#154b21}.alert-info{color:#145965;background-color:#d3eaee;border-color:#bcdfe5}.alert-info .alert-link{color:#104751}.alert-warning{color:#6d4c00;background-color:#f0e5cc;border-color:#e9d9b3}.alert-warning .alert-link{color:#573d00}.alert-danger{color:#720;background-color:#f4d7cc;border-color:#eec3b3}.alert-danger .alert-link{color:#5f1b00}.alert-light{color:#636262;background-color:#fdfdfd;border-color:#fdfcfc}.alert-light .alert-link{color:#4f4e4e}.alert-dark{color:#222;background-color:#d7d7d7;border-color:#c4c4c4}.alert-dark .alert-link{color:#1b1b1b}@keyframes progress-bar-stripes{0%{background-position-x:1rem}}.progress{display:flex;height:1rem;overflow:hidden;font-size:.75rem;background-color:#efeeec;border-radius:.25rem}.progress-bar{display:flex;flex-direction:column;justify-content:center;overflow:hidden;color:#fff;text-align:center;white-space:nowrap;background-color:#3867ce;transition:width .6s ease}@media (prefers-reduced-motion:reduce){.progress-bar{transition:none}}.progress-bar-striped{background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-size:1rem 1rem}.progress-bar-animated{animation:1s linear infinite progress-bar-stripes}@media (prefers-reduced-motion:reduce){.progress-bar-animated{animation:none}}.list-group{display:flex;flex-direction:column;padding-left:0;margin-bottom:0;border-radius:.25rem}.list-group-numbered{list-style-type:none;counter-reset:section}.list-group-numbered>li::before{content:counters(section, ".") ". ";counter-increment:section}.list-group-item-action{width:100%;color:rgba(0,0,0,.7);text-align:inherit}.list-group-item-action:focus,.list-group-item-action:hover{z-index:1;color:rgba(0,0,0,.7);text-decoration:none;background-color:#f7f6f4}.list-group-item-action:active{color:#393939;background-color:#efeeec}.list-group-item{position:relative;display:block;padding:.5rem 1rem;text-decoration:none;background-color:#fff;border:1px solid rgba(0,0,0,.125)}.list-group-item:first-child{border-top-left-radius:inherit;border-top-right-radius:inherit}.list-group-item:last-child{border-bottom-right-radius:inherit;border-bottom-left-radius:inherit}.list-group-item.disabled,.list-group-item:disabled{color:rgba(0,0,0,.6);pointer-events:none;background-color:#fff}.list-group-item.active{z-index:2;color:#fff;background-color:#3867ce;border-color:#3867ce}.list-group-item+.list-group-item{border-top-width:0}.list-group-item+.list-group-item.active{margin-top:-1px;border-top-width:1px}.list-group-horizontal{flex-direction:row}.list-group-horizontal>.list-group-item:first-child{border-bottom-left-radius:.25rem;border-top-right-radius:0}.list-group-horizontal>.list-group-item:last-child{border-top-right-radius:.25rem;border-bottom-left-radius:0}.list-group-horizontal>.list-group-item.active{margin-top:0}.list-group-horizontal>.list-group-item+.list-group-item{border-top-width:1px;border-left-width:0}.list-group-horizontal>.list-group-item+.list-group-item.active{margin-left:-1px;border-left-width:1px}@media (min-width:576px){.list-group-horizontal-sm{flex-direction:row}.list-group-horizontal-sm>.list-group-item:first-child{border-bottom-left-radius:.25rem;border-top-right-radius:0}.list-group-horizontal-sm>.list-group-item:last-child{border-top-right-radius:.25rem;border-bottom-left-radius:0}.list-group-horizontal-sm>.list-group-item.active{margin-top:0}.list-group-horizontal-sm>.list-group-item+.list-group-item{border-top-width:1px;border-left-width:0}.list-group-horizontal-sm>.list-group-item+.list-group-item.active{margin-left:-1px;border-left-width:1px}}@media (min-width:768px){.list-group-horizontal-md{flex-direction:row}.list-group-horizontal-md>.list-group-item:first-child{border-bottom-left-radius:.25rem;border-top-right-radius:0}.list-group-horizontal-md>.list-group-item:last-child{border-top-right-radius:.25rem;border-bottom-left-radius:0}.list-group-horizontal-md>.list-group-item.active{margin-top:0}.list-group-horizontal-md>.list-group-item+.list-group-item{border-top-width:1px;border-left-width:0}.list-group-horizontal-md>.list-group-item+.list-group-item.active{margin-left:-1px;border-left-width:1px}}@media (min-width:992px){.list-group-horizontal-lg{flex-direction:row}.list-group-horizontal-lg>.list-group-item:first-child{border-bottom-left-radius:.25rem;border-top-right-radius:0}.list-group-horizontal-lg>.list-group-item:last-child{border-top-right-radius:.25rem;border-bottom-left-radius:0}.list-group-horizontal-lg>.list-group-item.active{margin-top:0}.list-group-horizontal-lg>.list-group-item+.list-group-item{border-top-width:1px;border-left-width:0}.list-group-horizontal-lg>.list-group-item+.list-group-item.active{margin-left:-1px;border-left-width:1px}}@media (min-width:1200px){.list-group-horizontal-xl{flex-direction:row}.list-group-horizontal-xl>.list-group-item:first-child{border-bottom-left-radius:.25rem;border-top-right-radius:0}.list-group-horizontal-xl>.list-group-item:last-child{border-top-right-radius:.25rem;border-bottom-left-radius:0}.list-group-horizontal-xl>.list-group-item.active{margin-top:0}.list-group-horizontal-xl>.list-group-item+.list-group-item{border-top-width:1px;border-left-width:0}.list-group-horizontal-xl>.list-group-item+.list-group-item.active{margin-left:-1px;border-left-width:1px}}@media (min-width:1400px){.list-group-horizontal-xxl{flex-direction:row}.list-group-horizontal-xxl>.list-group-item:first-child{border-bottom-left-radius:.25rem;border-top-right-radius:0}.list-group-horizontal-xxl>.list-group-item:last-child{border-top-right-radius:.25rem;border-bottom-left-radius:0}.list-group-horizontal-xxl>.list-group-item.active{margin-top:0}.list-group-horizontal-xxl>.list-group-item+.list-group-item{border-top-width:1px;border-left-width:0}.list-group-horizontal-xxl>.list-group-item+.list-group-item.active{margin-left:-1px;border-left-width:1px}}.list-group-flush{border-radius:0}.list-group-flush>.list-group-item{border-width:0 0 1px}.list-group-flush>.list-group-item:last-child{border-bottom-width:0}.list-group-item-primary{color:#223e7c;background-color:#d7e1f5}.list-group-item-primary.list-group-item-action:focus,.list-group-item-primary.list-group-item-action:hover{color:#223e7c;background-color:#c2cbdd}.list-group-item-primary.list-group-item-action.active{color:#fff;background-color:#223e7c;border-color:#223e7c}.list-group-item-secondary{color:#666;background-color:#fff}.list-group-item-secondary.list-group-item-action:focus,.list-group-item-secondary.list-group-item-action:hover{color:#666;background-color:#e6e6e6}.list-group-item-secondary.list-group-item-action.active{color:#fff;background-color:#666;border-color:#666}.list-group-item-success{color:#1a5e29;background-color:#d5ebda}.list-group-item-success.list-group-item-action:focus,.list-group-item-success.list-group-item-action:hover{color:#1a5e29;background-color:#c0d4c4}.list-group-item-success.list-group-item-action.active{color:#fff;background-color:#1a5e29;border-color:#1a5e29}.list-group-item-info{color:#145965;background-color:#d3eaee}.list-group-item-info.list-group-item-action:focus,.list-group-item-info.list-group-item-action:hover{color:#145965;background-color:#bed3d6}.list-group-item-info.list-group-item-action.active{color:#fff;background-color:#145965;border-color:#145965}.list-group-item-warning{color:#6d4c00;background-color:#f0e5cc}.list-group-item-warning.list-group-item-action:focus,.list-group-item-warning.list-group-item-action:hover{color:#6d4c00;background-color:#d8ceb8}.list-group-item-warning.list-group-item-action.active{color:#fff;background-color:#6d4c00;border-color:#6d4c00}.list-group-item-danger{color:#720;background-color:#f4d7cc}.list-group-item-danger.list-group-item-action:focus,.list-group-item-danger.list-group-item-action:hover{color:#720;background-color:#dcc2b8}.list-group-item-danger.list-group-item-action.active{color:#fff;background-color:#720;border-color:#720}.list-group-item-light{color:#636262;background-color:#fdfdfd}.list-group-item-light.list-group-item-action:focus,.list-group-item-light.list-group-item-action:hover{color:#636262;background-color:#e4e4e4}.list-group-item-light.list-group-item-action.active{color:#fff;background-color:#636262;border-color:#636262}.list-group-item-dark{color:#222;background-color:#d7d7d7}.list-group-item-dark.list-group-item-action:focus,.list-group-item-dark.list-group-item-action:hover{color:#222;background-color:#c2c2c2}.list-group-item-dark.list-group-item-action.active{color:#fff;background-color:#222;border-color:#222}.btn-close{box-sizing:content-box;width:1em;height:1em;padding:.25em .25em;color:#000;background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23000'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat;border:0;border-radius:.25rem;opacity:.5}.btn-close:hover{color:#000;text-decoration:none;opacity:.75}.btn-close:focus{outline:0;box-shadow:0 0 0 .25rem rgba(56,103,206,.25);opacity:1}.btn-close.disabled,.btn-close:disabled{pointer-events:none;user-select:none;opacity:.25}.btn-close-white{filter:invert(1) grayscale(100%) brightness(200%)}.toast{width:350px;max-width:100%;font-size:.875rem;pointer-events:auto;background-color:rgba(255,255,255,.85);background-clip:padding-box;border:1px solid rgba(0,0,0,.1);box-shadow:0 .5rem 1rem rgba(0,0,0,.15);border-radius:.25rem}.toast:not(.showing):not(.show){opacity:0}.toast.hide{display:none}.toast-container{width:max-content;max-width:100%;pointer-events:none}.toast-container>:not(:last-child){margin-bottom:.5rem}.toast-header{display:flex;align-items:center;padding:.5rem .75rem;color:rgba(0,0,0,.6);background-color:rgba(255,255,255,.85);background-clip:padding-box;border-bottom:1px solid rgba(0,0,0,.05);border-top-left-radius:calc(.25rem - 1px);border-top-right-radius:calc(.25rem - 1px)}.toast-header .btn-close{margin-right:-.375rem;margin-left:.75rem}.toast-body{padding:.75rem;word-wrap:break-word}.modal-open{overflow:hidden}.modal-open .modal{overflow-x:hidden;overflow-y:auto}.modal{position:fixed;top:0;left:0;z-index:1060;display:none;width:100%;height:100%;overflow:hidden;outline:0}.modal-dialog{position:relative;width:auto;margin:.5rem;pointer-events:none}.modal.fade .modal-dialog{transition:transform .3s ease-out;transform:translate(0,-50px)}@media (prefers-reduced-motion:reduce){.modal.fade .modal-dialog{transition:none}}.modal.show .modal-dialog{transform:none}.modal.modal-static .modal-dialog{transform:scale(1.02)}.modal-dialog-scrollable{height:calc(100% - 1rem)}.modal-dialog-scrollable .modal-content{max-height:100%;overflow:hidden}.modal-dialog-scrollable .modal-body{overflow-y:auto}.modal-dialog-centered{display:flex;align-items:center;min-height:calc(100% - 1rem)}.modal-content{position:relative;display:flex;flex-direction:column;width:100%;pointer-events:auto;background-color:#fff;background-clip:padding-box;border:1px solid rgba(0,0,0,.2);border-radius:.5rem;outline:0}.modal-backdrop{position:fixed;top:0;left:0;z-index:1050;width:100vw;height:100vh;background-color:#000}.modal-backdrop.fade{opacity:0}.modal-backdrop.show{opacity:.5}.modal-header{display:flex;flex-shrink:0;align-items:center;justify-content:space-between;padding:1rem 1rem;border-bottom:1px solid rgba(0,0,0,.3);border-top-left-radius:calc(.5rem - 1px);border-top-right-radius:calc(.5rem - 1px)}.modal-header .btn-close{padding:.5rem .5rem;margin:-.5rem -.5rem -.5rem auto}.modal-title{margin-bottom:0;line-height:1.5}.modal-body{position:relative;flex:1 1 auto;padding:1rem}.modal-footer{display:flex;flex-wrap:wrap;flex-shrink:0;align-items:center;justify-content:flex-end;padding:.75rem;border-top:1px solid rgba(0,0,0,.3);border-bottom-right-radius:calc(.5rem - 1px);border-bottom-left-radius:calc(.5rem - 1px)}.modal-footer>*{margin:.25rem}.modal-scrollbar-measure{position:absolute;top:-9999px;width:50px;height:50px;overflow:scroll}@media (min-width:576px){.modal-dialog{max-width:500px;margin:1.75rem auto}.modal-dialog-scrollable{height:calc(100% - 3.5rem)}.modal-dialog-centered{min-height:calc(100% - 3.5rem)}.modal-sm{max-width:300px}}@media (min-width:992px){.modal-lg,.modal-xl{max-width:800px}}@media (min-width:1200px){.modal-xl{max-width:1140px}}.modal-fullscreen{width:100vw;max-width:none;height:100%;margin:0}.modal-fullscreen .modal-content{height:100%;border:0;border-radius:0}.modal-fullscreen .modal-header{border-radius:0}.modal-fullscreen .modal-body{overflow-y:auto}.modal-fullscreen .modal-footer{border-radius:0}@media (max-width:575.98px){.modal-fullscreen-sm-down{width:100vw;max-width:none;height:100%;margin:0}.modal-fullscreen-sm-down .modal-content{height:100%;border:0;border-radius:0}.modal-fullscreen-sm-down .modal-header{border-radius:0}.modal-fullscreen-sm-down .modal-body{overflow-y:auto}.modal-fullscreen-sm-down .modal-footer{border-radius:0}}@media (max-width:767.98px){.modal-fullscreen-md-down{width:100vw;max-width:none;height:100%;margin:0}.modal-fullscreen-md-down .modal-content{height:100%;border:0;border-radius:0}.modal-fullscreen-md-down .modal-header{border-radius:0}.modal-fullscreen-md-down .modal-body{overflow-y:auto}.modal-fullscreen-md-down .modal-footer{border-radius:0}}@media (max-width:991.98px){.modal-fullscreen-lg-down{width:100vw;max-width:none;height:100%;margin:0}.modal-fullscreen-lg-down .modal-content{height:100%;border:0;border-radius:0}.modal-fullscreen-lg-down .modal-header{border-radius:0}.modal-fullscreen-lg-down .modal-body{overflow-y:auto}.modal-fullscreen-lg-down .modal-footer{border-radius:0}}@media (max-width:1199.98px){.modal-fullscreen-xl-down{width:100vw;max-width:none;height:100%;margin:0}.modal-fullscreen-xl-down .modal-content{height:100%;border:0;border-radius:0}.modal-fullscreen-xl-down .modal-header{border-radius:0}.modal-fullscreen-xl-down .modal-body{overflow-y:auto}.modal-fullscreen-xl-down .modal-footer{border-radius:0}}@media (max-width:1399.98px){.modal-fullscreen-xxl-down{width:100vw;max-width:none;height:100%;margin:0}.modal-fullscreen-xxl-down .modal-content{height:100%;border:0;border-radius:0}.modal-fullscreen-xxl-down .modal-header{border-radius:0}.modal-fullscreen-xxl-down .modal-body{overflow-y:auto}.modal-fullscreen-xxl-down .modal-footer{border-radius:0}}.tooltip{position:absolute;z-index:1080;display:block;margin:0;font-family:var(--scielo-font-sans-serif);font-style:normal;font-weight:400;line-height:1.5;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;word-break:normal;word-spacing:normal;white-space:normal;line-break:auto;font-size:.875rem;word-wrap:break-word;opacity:0}.tooltip.show{opacity:.9}.tooltip .tooltip-arrow{position:absolute;display:block;width:.8rem;height:.4rem}.tooltip .tooltip-arrow::before{position:absolute;content:"";border-color:transparent;border-style:solid}.bs-tooltip-auto[data-popper-placement^=top],.bs-tooltip-top{padding:.4rem 0}.bs-tooltip-auto[data-popper-placement^=top] .tooltip-arrow,.bs-tooltip-top .tooltip-arrow{bottom:0}.bs-tooltip-auto[data-popper-placement^=top] .tooltip-arrow::before,.bs-tooltip-top .tooltip-arrow::before{top:-1px;border-width:.4rem .4rem 0;border-top-color:#000}.bs-tooltip-auto[data-popper-placement^=right],.bs-tooltip-end{padding:0 .4rem}.bs-tooltip-auto[data-popper-placement^=right] .tooltip-arrow,.bs-tooltip-end .tooltip-arrow{left:0;width:.4rem;height:.8rem}.bs-tooltip-auto[data-popper-placement^=right] .tooltip-arrow::before,.bs-tooltip-end .tooltip-arrow::before{right:-1px;border-width:.4rem .4rem .4rem 0;border-right-color:#000}.bs-tooltip-auto[data-popper-placement^=bottom],.bs-tooltip-bottom{padding:.4rem 0}.bs-tooltip-auto[data-popper-placement^=bottom] .tooltip-arrow,.bs-tooltip-bottom .tooltip-arrow{top:0}.bs-tooltip-auto[data-popper-placement^=bottom] .tooltip-arrow::before,.bs-tooltip-bottom .tooltip-arrow::before{bottom:-1px;border-width:0 .4rem .4rem;border-bottom-color:#000}.bs-tooltip-auto[data-popper-placement^=left],.bs-tooltip-start{padding:0 .4rem}.bs-tooltip-auto[data-popper-placement^=left] .tooltip-arrow,.bs-tooltip-start .tooltip-arrow{right:0;width:.4rem;height:.8rem}.bs-tooltip-auto[data-popper-placement^=left] .tooltip-arrow::before,.bs-tooltip-start .tooltip-arrow::before{left:-1px;border-width:.4rem 0 .4rem .4rem;border-left-color:#000}.tooltip-inner{max-width:200px;padding:.25rem .5rem;color:#fff;text-align:center;background-color:#000;border-radius:.25rem}.popover{position:absolute;top:0;left:0;z-index:1070;display:block;max-width:276px;font-family:var(--scielo-font-sans-serif);font-style:normal;font-weight:400;line-height:1.5;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;word-break:normal;word-spacing:normal;white-space:normal;line-break:auto;font-size:.875rem;word-wrap:break-word;background-color:#fff;background-clip:padding-box;border:1px solid rgba(0,0,0,.2);border-radius:.5rem}.popover .popover-arrow{position:absolute;display:block;width:1rem;height:.5rem}.popover .popover-arrow::after,.popover .popover-arrow::before{position:absolute;display:block;content:"";border-color:transparent;border-style:solid}.bs-popover-auto[data-popper-placement^=top]>.popover-arrow,.bs-popover-top>.popover-arrow{bottom:calc(-.5rem - 1px)}.bs-popover-auto[data-popper-placement^=top]>.popover-arrow::before,.bs-popover-top>.popover-arrow::before{bottom:0;border-width:.5rem .5rem 0;border-top-color:rgba(0,0,0,.25)}.bs-popover-auto[data-popper-placement^=top]>.popover-arrow::after,.bs-popover-top>.popover-arrow::after{bottom:1px;border-width:.5rem .5rem 0;border-top-color:#fff}.bs-popover-auto[data-popper-placement^=right]>.popover-arrow,.bs-popover-end>.popover-arrow{left:calc(-.5rem - 1px);width:.5rem;height:1rem}.bs-popover-auto[data-popper-placement^=right]>.popover-arrow::before,.bs-popover-end>.popover-arrow::before{left:0;border-width:.5rem .5rem .5rem 0;border-right-color:rgba(0,0,0,.25)}.bs-popover-auto[data-popper-placement^=right]>.popover-arrow::after,.bs-popover-end>.popover-arrow::after{left:1px;border-width:.5rem .5rem .5rem 0;border-right-color:#fff}.bs-popover-auto[data-popper-placement^=bottom]>.popover-arrow,.bs-popover-bottom>.popover-arrow{top:calc(-.5rem - 1px)}.bs-popover-auto[data-popper-placement^=bottom]>.popover-arrow::before,.bs-popover-bottom>.popover-arrow::before{top:0;border-width:0 .5rem .5rem .5rem;border-bottom-color:rgba(0,0,0,.25)}.bs-popover-auto[data-popper-placement^=bottom]>.popover-arrow::after,.bs-popover-bottom>.popover-arrow::after{top:1px;border-width:0 .5rem .5rem .5rem;border-bottom-color:#fff}.bs-popover-auto[data-popper-placement^=bottom] .popover-header::before,.bs-popover-bottom .popover-header::before{position:absolute;top:0;left:50%;display:block;width:1rem;margin-left:-.5rem;content:"";border-bottom:1px solid #f0f0f0}.bs-popover-auto[data-popper-placement^=left]>.popover-arrow,.bs-popover-start>.popover-arrow{right:calc(-.5rem - 1px);width:.5rem;height:1rem}.bs-popover-auto[data-popper-placement^=left]>.popover-arrow::before,.bs-popover-start>.popover-arrow::before{right:0;border-width:.5rem 0 .5rem .5rem;border-left-color:rgba(0,0,0,.25)}.bs-popover-auto[data-popper-placement^=left]>.popover-arrow::after,.bs-popover-start>.popover-arrow::after{right:1px;border-width:.5rem 0 .5rem .5rem;border-left-color:#fff}.popover-header{padding:.5rem 1rem;margin-bottom:0;font-size:1rem;background-color:#f0f0f0;border-bottom:1px solid #d8d8d8;border-top-left-radius:calc(.5rem - 1px);border-top-right-radius:calc(.5rem - 1px)}.popover-header:empty{display:none}.popover-body{padding:1rem 1rem;color:#393939}.carousel{position:relative}.carousel.pointer-event{touch-action:pan-y}.carousel-inner{position:relative;width:100%;overflow:hidden}.carousel-inner::after{display:block;clear:both;content:""}.carousel-item{position:relative;display:none;float:left;width:100%;margin-right:-100%;backface-visibility:hidden;transition:transform .6s ease-in-out}@media (prefers-reduced-motion:reduce){.carousel-item{transition:none}}.carousel-item-next,.carousel-item-prev,.carousel-item.active{display:block}.active.carousel-item-end,.carousel-item-next:not(.carousel-item-start){transform:translateX(100%)}.active.carousel-item-start,.carousel-item-prev:not(.carousel-item-end){transform:translateX(-100%)}.carousel-fade .carousel-item{opacity:0;transition-property:opacity;transform:none}.carousel-fade .carousel-item-next.carousel-item-start,.carousel-fade .carousel-item-prev.carousel-item-end,.carousel-fade .carousel-item.active{z-index:1;opacity:1}.carousel-fade .active.carousel-item-end,.carousel-fade .active.carousel-item-start{z-index:0;opacity:0;transition:opacity 0s .6s}@media (prefers-reduced-motion:reduce){.carousel-fade .active.carousel-item-end,.carousel-fade .active.carousel-item-start{transition:none}}.carousel-control-next,.carousel-control-prev{position:absolute;top:0;bottom:0;z-index:1;display:flex;align-items:center;justify-content:center;width:15%;padding:0;color:#fff;text-align:center;background:0 0;border:0;opacity:.5;transition:opacity .15s ease}@media (prefers-reduced-motion:reduce){.carousel-control-next,.carousel-control-prev{transition:none}}.carousel-control-next:focus,.carousel-control-next:hover,.carousel-control-prev:focus,.carousel-control-prev:hover{color:#fff;text-decoration:none;outline:0;opacity:.9}.carousel-control-prev{left:0}.carousel-control-next{right:0}.carousel-control-next-icon,.carousel-control-prev-icon{display:inline-block;width:2rem;height:2rem;background-repeat:no-repeat;background-position:50%;background-size:100% 100%}.carousel-control-prev-icon{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23fff'%3e%3cpath d='M11.354 1.646a.5.5 0 0 1 0 .708L5.707 8l5.647 5.646a.5.5 0 0 1-.708.708l-6-6a.5.5 0 0 1 0-.708l6-6a.5.5 0 0 1 .708 0z'/%3e%3c/svg%3e")}.carousel-control-next-icon{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23fff'%3e%3cpath d='M4.646 1.646a.5.5 0 0 1 .708 0l6 6a.5.5 0 0 1 0 .708l-6 6a.5.5 0 0 1-.708-.708L10.293 8 4.646 2.354a.5.5 0 0 1 0-.708z'/%3e%3c/svg%3e")}.carousel-indicators{position:absolute;right:0;bottom:0;left:0;z-index:2;display:flex;justify-content:center;padding:0;margin-right:15%;margin-bottom:1rem;margin-left:15%;list-style:none}.carousel-indicators [data-bs-target]{box-sizing:content-box;flex:0 1 auto;width:30px;height:3px;padding:0;margin-right:3px;margin-left:3px;text-indent:-999px;cursor:pointer;background-color:#fff;background-clip:padding-box;border:0;border-top:10px solid transparent;border-bottom:10px solid transparent;opacity:.5;transition:opacity .6s ease}@media (prefers-reduced-motion:reduce){.carousel-indicators [data-bs-target]{transition:none}}.carousel-indicators .active{opacity:1}.carousel-caption{position:absolute;right:15%;bottom:1.25rem;left:15%;padding-top:1.25rem;padding-bottom:1.25rem;color:#fff;text-align:center}.carousel-dark .carousel-control-next-icon,.carousel-dark .carousel-control-prev-icon{filter:invert(1) grayscale(100)}.carousel-dark .carousel-indicators [data-bs-target]{background-color:#000}.carousel-dark .carousel-caption{color:#000}@keyframes spinner-border{to{transform:rotate(360deg)}}.spinner-border{display:inline-block;width:2rem;height:2rem;vertical-align:text-bottom;border:.25em solid currentColor;border-right-color:transparent;border-radius:50%;animation:.75s linear infinite spinner-border}.spinner-border-sm{width:1rem;height:1rem;border-width:.2em}@keyframes spinner-grow{0%{transform:scale(0)}50%{opacity:1;transform:none}}.spinner-grow{display:inline-block;width:2rem;height:2rem;vertical-align:text-bottom;background-color:currentColor;border-radius:50%;opacity:0;animation:.75s linear infinite spinner-grow}.spinner-grow-sm{width:1rem;height:1rem}@media (prefers-reduced-motion:reduce){.spinner-border,.spinner-grow{animation-duration:1.5s}}.clearfix::after{display:block;clear:both;content:""}.link-primary{color:#3867ce}.link-primary:focus,.link-primary:hover{color:#2d52a5}.link-secondary{color:#fff}.link-secondary:focus,.link-secondary:hover{color:#fff}.link-success{color:#2c9d45}.link-success:focus,.link-success:hover{color:#56b16a}.link-info{color:#2195a9}.link-info:focus,.link-info:hover{color:#4daaba}.link-warning{color:#b67f00}.link-warning:focus,.link-warning:hover{color:#c59933}.link-danger{color:#c63800}.link-danger:focus,.link-danger:hover{color:#9e2d00}.link-light{color:#f7f6f4}.link-light:focus,.link-light:hover{color:#f9f8f6}.link-dark{color:#393939}.link-dark:focus,.link-dark:hover{color:#2e2e2e}.ratio{position:relative;width:100%}.ratio::before{display:block;padding-top:var(--scielo-aspect-ratio);content:""}.ratio>*{position:absolute;top:0;left:0;width:100%;height:100%}.ratio-1x1{--scielo-aspect-ratio:100%}.ratio-4x3{--scielo-aspect-ratio:calc(3 / 4 * 100%)}.ratio-16x9{--scielo-aspect-ratio:calc(9 / 16 * 100%)}.ratio-21x9{--scielo-aspect-ratio:calc(9 / 21 * 100%)}.fixed-top{position:fixed;top:0;right:0;left:0;z-index:1030}.fixed-bottom{position:fixed;right:0;bottom:0;left:0;z-index:1030}.sticky-top{position:sticky;top:0;z-index:1020}@media (min-width:576px){.sticky-sm-top{position:sticky;top:0;z-index:1020}}@media (min-width:768px){.sticky-md-top{position:sticky;top:0;z-index:1020}}@media (min-width:992px){.sticky-lg-top{position:sticky;top:0;z-index:1020}}@media (min-width:1200px){.sticky-xl-top{position:sticky;top:0;z-index:1020}}@media (min-width:1400px){.sticky-xxl-top{position:sticky;top:0;z-index:1020}}.visually-hidden,.visually-hidden-focusable:not(:focus):not(:focus-within){position:absolute!important;width:1px!important;height:1px!important;padding:0!important;margin:-1px!important;overflow:hidden!important;clip:rect(0,0,0,0)!important;white-space:nowrap!important;border:0!important}.stretched-link::after{position:absolute;top:0;right:0;bottom:0;left:0;z-index:1;content:""}.text-truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.align-baseline{vertical-align:baseline!important}.align-top{vertical-align:top!important}.align-middle{vertical-align:middle!important}.align-bottom{vertical-align:bottom!important}.align-text-bottom{vertical-align:text-bottom!important}.align-text-top{vertical-align:text-top!important}.float-start{float:left!important}.float-end{float:right!important}.float-none{float:none!important}.overflow-auto{overflow:auto!important}.overflow-hidden{overflow:hidden!important}.overflow-visible{overflow:visible!important}.overflow-scroll{overflow:scroll!important}.d-inline{display:inline!important}.d-inline-block{display:inline-block!important}.d-block{display:block!important}.d-grid{display:grid!important}.d-table{display:table!important}.d-table-row{display:table-row!important}.d-table-cell{display:table-cell!important}.d-flex{display:flex!important}.d-inline-flex{display:inline-flex!important}.d-none{display:none!important}.shadow{box-shadow:0 .5rem 1rem rgba(0,0,0,.15)!important}.shadow-sm{box-shadow:0 .125rem .25rem rgba(0,0,0,.075)!important}.shadow-lg{box-shadow:0 1rem 3rem rgba(0,0,0,.175)!important}.shadow-none{box-shadow:none!important}.position-static{position:static!important}.position-relative{position:relative!important}.position-absolute{position:absolute!important}.position-fixed{position:fixed!important}.position-sticky{position:sticky!important}.top-0{top:0!important}.top-50{top:50%!important}.top-100{top:100%!important}.bottom-0{bottom:0!important}.bottom-50{bottom:50%!important}.bottom-100{bottom:100%!important}.start-0{left:0!important}.start-50{left:50%!important}.start-100{left:100%!important}.end-0{right:0!important}.end-50{right:50%!important}.end-100{right:100%!important}.translate-middle{transform:translate(-50%,-50%)!important}.translate-middle-x{transform:translateX(-50%)!important}.translate-middle-y{transform:translateY(-50%)!important}.border{border:1px solid rgba(0,0,0,.3)!important}.border-0{border:0!important}.border-top{border-top:1px solid rgba(0,0,0,.3)!important}.border-top-0{border-top:0!important}.border-end{border-right:1px solid rgba(0,0,0,.3)!important}.border-end-0{border-right:0!important}.border-bottom{border-bottom:1px solid rgba(0,0,0,.3)!important}.border-bottom-0{border-bottom:0!important}.border-start{border-left:1px solid rgba(0,0,0,.3)!important}.border-start-0{border-left:0!important}.border-primary{border-color:#3867ce!important}.border-secondary{border-color:#fff!important}.border-success{border-color:#2c9d45!important}.border-info{border-color:#2195a9!important}.border-warning{border-color:#b67f00!important}.border-danger{border-color:#c63800!important}.border-light{border-color:#f7f6f4!important}.border-dark{border-color:#393939!important}.border-white{border-color:#fff!important}.border-0{border-width:0!important}.border-1{border-width:1px!important}.border-2{border-width:2px!important}.border-3{border-width:3px!important}.border-4{border-width:4px!important}.border-5{border-width:5px!important}.w-25{width:25%!important}.w-50{width:50%!important}.w-75{width:75%!important}.w-100{width:100%!important}.w-auto{width:auto!important}.mw-100{max-width:100%!important}.vw-100{width:100vw!important}.min-vw-100{min-width:100vw!important}.h-25{height:25%!important}.h-50{height:50%!important}.h-75{height:75%!important}.h-100{height:100%!important}.h-auto{height:auto!important}.mh-100{max-height:100%!important}.vh-100{height:100vh!important}.min-vh-100{min-height:100vh!important}.flex-fill{flex:1 1 auto!important}.flex-row{flex-direction:row!important}.flex-column{flex-direction:column!important}.flex-row-reverse{flex-direction:row-reverse!important}.flex-column-reverse{flex-direction:column-reverse!important}.flex-grow-0{flex-grow:0!important}.flex-grow-1{flex-grow:1!important}.flex-shrink-0{flex-shrink:0!important}.flex-shrink-1{flex-shrink:1!important}.flex-wrap{flex-wrap:wrap!important}.flex-nowrap{flex-wrap:nowrap!important}.flex-wrap-reverse{flex-wrap:wrap-reverse!important}.gap-0{gap:0!important}.gap-1{gap:.25rem!important}.gap-2{gap:.5rem!important}.gap-3{gap:1rem!important}.gap-4{gap:1.5rem!important}.gap-5{gap:3rem!important}.justify-content-start{justify-content:flex-start!important}.justify-content-end{justify-content:flex-end!important}.justify-content-center{justify-content:center!important}.justify-content-between{justify-content:space-between!important}.justify-content-around{justify-content:space-around!important}.justify-content-evenly{justify-content:space-evenly!important}.align-items-start{align-items:flex-start!important}.align-items-end{align-items:flex-end!important}.align-items-center{align-items:center!important}.align-items-baseline{align-items:baseline!important}.align-items-stretch{align-items:stretch!important}.align-content-start{align-content:flex-start!important}.align-content-end{align-content:flex-end!important}.align-content-center{align-content:center!important}.align-content-between{align-content:space-between!important}.align-content-around{align-content:space-around!important}.align-content-stretch{align-content:stretch!important}.align-self-auto{align-self:auto!important}.align-self-start{align-self:flex-start!important}.align-self-end{align-self:flex-end!important}.align-self-center{align-self:center!important}.align-self-baseline{align-self:baseline!important}.align-self-stretch{align-self:stretch!important}.order-first{order:-1!important}.order-0{order:0!important}.order-1{order:1!important}.order-2{order:2!important}.order-3{order:3!important}.order-4{order:4!important}.order-5{order:5!important}.order-last{order:6!important}.m-0{margin:0!important}.m-1{margin:.25rem!important}.m-2{margin:.5rem!important}.m-3{margin:1rem!important}.m-4{margin:1.5rem!important}.m-5{margin:3rem!important}.m-auto{margin:auto!important}.mx-0{margin-right:0!important;margin-left:0!important}.mx-1{margin-right:.25rem!important;margin-left:.25rem!important}.mx-2{margin-right:.5rem!important;margin-left:.5rem!important}.mx-3{margin-right:1rem!important;margin-left:1rem!important}.mx-4{margin-right:1.5rem!important;margin-left:1.5rem!important}.mx-5{margin-right:3rem!important;margin-left:3rem!important}.mx-auto{margin-right:auto!important;margin-left:auto!important}.my-0{margin-top:0!important;margin-bottom:0!important}.my-1{margin-top:.25rem!important;margin-bottom:.25rem!important}.my-2{margin-top:.5rem!important;margin-bottom:.5rem!important}.my-3{margin-top:1rem!important;margin-bottom:1rem!important}.my-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}.my-5{margin-top:3rem!important;margin-bottom:3rem!important}.my-auto{margin-top:auto!important;margin-bottom:auto!important}.mt-0{margin-top:0!important}.mt-1{margin-top:.25rem!important}.mt-2{margin-top:.5rem!important}.mt-3{margin-top:1rem!important}.mt-4{margin-top:1.5rem!important}.mt-5{margin-top:3rem!important}.mt-auto{margin-top:auto!important}.me-0{margin-right:0!important}.me-1{margin-right:.25rem!important}.me-2{margin-right:.5rem!important}.me-3{margin-right:1rem!important}.me-4{margin-right:1.5rem!important}.me-5{margin-right:3rem!important}.me-auto{margin-right:auto!important}.mb-0{margin-bottom:0!important}.mb-1{margin-bottom:.25rem!important}.mb-2{margin-bottom:.5rem!important}.mb-3{margin-bottom:1rem!important}.mb-4{margin-bottom:1.5rem!important}.mb-5{margin-bottom:3rem!important}.mb-auto{margin-bottom:auto!important}.ms-0{margin-left:0!important}.ms-1{margin-left:.25rem!important}.ms-2{margin-left:.5rem!important}.ms-3{margin-left:1rem!important}.ms-4{margin-left:1.5rem!important}.ms-5{margin-left:3rem!important}.ms-auto{margin-left:auto!important}.p-0{padding:0!important}.p-1{padding:.25rem!important}.p-2{padding:.5rem!important}.p-3{padding:1rem!important}.p-4{padding:1.5rem!important}.p-5{padding:3rem!important}.px-0{padding-right:0!important;padding-left:0!important}.px-1{padding-right:.25rem!important;padding-left:.25rem!important}.px-2{padding-right:.5rem!important;padding-left:.5rem!important}.px-3{padding-right:1rem!important;padding-left:1rem!important}.px-4{padding-right:1.5rem!important;padding-left:1.5rem!important}.px-5{padding-right:3rem!important;padding-left:3rem!important}.py-0{padding-top:0!important;padding-bottom:0!important}.py-1{padding-top:.25rem!important;padding-bottom:.25rem!important}.py-2{padding-top:.5rem!important;padding-bottom:.5rem!important}.py-3{padding-top:1rem!important;padding-bottom:1rem!important}.py-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}.py-5{padding-top:3rem!important;padding-bottom:3rem!important}.pt-0{padding-top:0!important}.pt-1{padding-top:.25rem!important}.pt-2{padding-top:.5rem!important}.pt-3{padding-top:1rem!important}.pt-4{padding-top:1.5rem!important}.pt-5{padding-top:3rem!important}.pe-0{padding-right:0!important}.pe-1{padding-right:.25rem!important}.pe-2{padding-right:.5rem!important}.pe-3{padding-right:1rem!important}.pe-4{padding-right:1.5rem!important}.pe-5{padding-right:3rem!important}.pb-0{padding-bottom:0!important}.pb-1{padding-bottom:.25rem!important}.pb-2{padding-bottom:.5rem!important}.pb-3{padding-bottom:1rem!important}.pb-4{padding-bottom:1.5rem!important}.pb-5{padding-bottom:3rem!important}.ps-0{padding-left:0!important}.ps-1{padding-left:.25rem!important}.ps-2{padding-left:.5rem!important}.ps-3{padding-left:1rem!important}.ps-4{padding-left:1.5rem!important}.ps-5{padding-left:3rem!important}.font-monospace{font-family:var(--scielo-font-monospace)!important}.fs-1{font-size:calc(1.375rem + 1.5vw)!important}.fs-2{font-size:calc(1.325rem + .9vw)!important}.fs-3{font-size:calc(1.3rem + .6vw)!important}.fs-4{font-size:calc(1.275rem + .3vw)!important}.fs-5{font-size:1.25rem!important}.fs-6{font-size:1rem!important}.fst-italic{font-style:italic!important}.fst-normal{font-style:normal!important}.fw-light{font-weight:300!important}.fw-lighter{font-weight:lighter!important}.fw-normal{font-weight:400!important}.fw-bold{font-weight:700!important}.fw-bolder{font-weight:bolder!important}.lh-1{line-height:1!important}.lh-sm{line-height:1.25!important}.lh-base{line-height:1.5!important}.lh-lg{line-height:2!important}.text-start{text-align:left!important}.text-end{text-align:right!important}.text-center{text-align:center!important}.text-decoration-none{text-decoration:none!important}.text-decoration-underline{text-decoration:underline!important}.text-decoration-line-through{text-decoration:line-through!important}.text-lowercase{text-transform:lowercase!important}.text-uppercase{text-transform:uppercase!important}.text-capitalize{text-transform:capitalize!important}.text-wrap{white-space:normal!important}.text-nowrap{white-space:nowrap!important}.text-break{word-wrap:break-word!important;word-break:break-word!important}.text-primary{color:#3867ce!important}.text-secondary{color:#fff!important}.text-success{color:#2c9d45!important}.text-info{color:#2195a9!important}.text-warning{color:#b67f00!important}.text-danger{color:#c63800!important}.text-light{color:#f7f6f4!important}.text-dark{color:#393939!important}.text-white{color:#fff!important}.text-body{color:#393939!important}.text-muted{color:rgba(0,0,0,.6)!important}.text-black-50{color:rgba(0,0,0,.5)!important}.text-white-50{color:rgba(255,255,255,.5)!important}.text-reset{color:inherit!important}.bg-primary{background-color:#3867ce!important}.bg-secondary{background-color:#fff!important}.bg-success{background-color:#2c9d45!important}.bg-info{background-color:#2195a9!important}.bg-warning{background-color:#b67f00!important}.bg-danger{background-color:#c63800!important}.bg-light{background-color:#f7f6f4!important}.bg-dark{background-color:#393939!important}.bg-body{background-color:#fff!important}.bg-white{background-color:#fff!important}.bg-transparent{background-color:transparent!important}.bg-gradient{background-image:var(--scielo-gradient)!important}.user-select-all{user-select:all!important}.user-select-auto{user-select:auto!important}.user-select-none{user-select:none!important}.pe-none{pointer-events:none!important}.pe-auto{pointer-events:auto!important}.rounded{border-radius:.25rem!important}.rounded-0{border-radius:0!important}.rounded-1{border-radius:.12 .5rem!important}.rounded-2{border-radius:.25rem!important}.rounded-3{border-radius:.5rem!important}.rounded-circle{border-radius:50%!important}.rounded-pill{border-radius:50rem!important}.rounded-top{border-top-left-radius:.25rem!important;border-top-right-radius:.25rem!important}.rounded-end{border-top-right-radius:.25rem!important;border-bottom-right-radius:.25rem!important}.rounded-bottom{border-bottom-right-radius:.25rem!important;border-bottom-left-radius:.25rem!important}.rounded-start{border-bottom-left-radius:.25rem!important;border-top-left-radius:.25rem!important}.visible{visibility:visible!important}.invisible{visibility:hidden!important}@media (min-width:576px){.float-sm-start{float:left!important}.float-sm-end{float:right!important}.float-sm-none{float:none!important}.d-sm-inline{display:inline!important}.d-sm-inline-block{display:inline-block!important}.d-sm-block{display:block!important}.d-sm-grid{display:grid!important}.d-sm-table{display:table!important}.d-sm-table-row{display:table-row!important}.d-sm-table-cell{display:table-cell!important}.d-sm-flex{display:flex!important}.d-sm-inline-flex{display:inline-flex!important}.d-sm-none{display:none!important}.flex-sm-fill{flex:1 1 auto!important}.flex-sm-row{flex-direction:row!important}.flex-sm-column{flex-direction:column!important}.flex-sm-row-reverse{flex-direction:row-reverse!important}.flex-sm-column-reverse{flex-direction:column-reverse!important}.flex-sm-grow-0{flex-grow:0!important}.flex-sm-grow-1{flex-grow:1!important}.flex-sm-shrink-0{flex-shrink:0!important}.flex-sm-shrink-1{flex-shrink:1!important}.flex-sm-wrap{flex-wrap:wrap!important}.flex-sm-nowrap{flex-wrap:nowrap!important}.flex-sm-wrap-reverse{flex-wrap:wrap-reverse!important}.gap-sm-0{gap:0!important}.gap-sm-1{gap:.25rem!important}.gap-sm-2{gap:.5rem!important}.gap-sm-3{gap:1rem!important}.gap-sm-4{gap:1.5rem!important}.gap-sm-5{gap:3rem!important}.justify-content-sm-start{justify-content:flex-start!important}.justify-content-sm-end{justify-content:flex-end!important}.justify-content-sm-center{justify-content:center!important}.justify-content-sm-between{justify-content:space-between!important}.justify-content-sm-around{justify-content:space-around!important}.justify-content-sm-evenly{justify-content:space-evenly!important}.align-items-sm-start{align-items:flex-start!important}.align-items-sm-end{align-items:flex-end!important}.align-items-sm-center{align-items:center!important}.align-items-sm-baseline{align-items:baseline!important}.align-items-sm-stretch{align-items:stretch!important}.align-content-sm-start{align-content:flex-start!important}.align-content-sm-end{align-content:flex-end!important}.align-content-sm-center{align-content:center!important}.align-content-sm-between{align-content:space-between!important}.align-content-sm-around{align-content:space-around!important}.align-content-sm-stretch{align-content:stretch!important}.align-self-sm-auto{align-self:auto!important}.align-self-sm-start{align-self:flex-start!important}.align-self-sm-end{align-self:flex-end!important}.align-self-sm-center{align-self:center!important}.align-self-sm-baseline{align-self:baseline!important}.align-self-sm-stretch{align-self:stretch!important}.order-sm-first{order:-1!important}.order-sm-0{order:0!important}.order-sm-1{order:1!important}.order-sm-2{order:2!important}.order-sm-3{order:3!important}.order-sm-4{order:4!important}.order-sm-5{order:5!important}.order-sm-last{order:6!important}.m-sm-0{margin:0!important}.m-sm-1{margin:.25rem!important}.m-sm-2{margin:.5rem!important}.m-sm-3{margin:1rem!important}.m-sm-4{margin:1.5rem!important}.m-sm-5{margin:3rem!important}.m-sm-auto{margin:auto!important}.mx-sm-0{margin-right:0!important;margin-left:0!important}.mx-sm-1{margin-right:.25rem!important;margin-left:.25rem!important}.mx-sm-2{margin-right:.5rem!important;margin-left:.5rem!important}.mx-sm-3{margin-right:1rem!important;margin-left:1rem!important}.mx-sm-4{margin-right:1.5rem!important;margin-left:1.5rem!important}.mx-sm-5{margin-right:3rem!important;margin-left:3rem!important}.mx-sm-auto{margin-right:auto!important;margin-left:auto!important}.my-sm-0{margin-top:0!important;margin-bottom:0!important}.my-sm-1{margin-top:.25rem!important;margin-bottom:.25rem!important}.my-sm-2{margin-top:.5rem!important;margin-bottom:.5rem!important}.my-sm-3{margin-top:1rem!important;margin-bottom:1rem!important}.my-sm-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}.my-sm-5{margin-top:3rem!important;margin-bottom:3rem!important}.my-sm-auto{margin-top:auto!important;margin-bottom:auto!important}.mt-sm-0{margin-top:0!important}.mt-sm-1{margin-top:.25rem!important}.mt-sm-2{margin-top:.5rem!important}.mt-sm-3{margin-top:1rem!important}.mt-sm-4{margin-top:1.5rem!important}.mt-sm-5{margin-top:3rem!important}.mt-sm-auto{margin-top:auto!important}.me-sm-0{margin-right:0!important}.me-sm-1{margin-right:.25rem!important}.me-sm-2{margin-right:.5rem!important}.me-sm-3{margin-right:1rem!important}.me-sm-4{margin-right:1.5rem!important}.me-sm-5{margin-right:3rem!important}.me-sm-auto{margin-right:auto!important}.mb-sm-0{margin-bottom:0!important}.mb-sm-1{margin-bottom:.25rem!important}.mb-sm-2{margin-bottom:.5rem!important}.mb-sm-3{margin-bottom:1rem!important}.mb-sm-4{margin-bottom:1.5rem!important}.mb-sm-5{margin-bottom:3rem!important}.mb-sm-auto{margin-bottom:auto!important}.ms-sm-0{margin-left:0!important}.ms-sm-1{margin-left:.25rem!important}.ms-sm-2{margin-left:.5rem!important}.ms-sm-3{margin-left:1rem!important}.ms-sm-4{margin-left:1.5rem!important}.ms-sm-5{margin-left:3rem!important}.ms-sm-auto{margin-left:auto!important}.p-sm-0{padding:0!important}.p-sm-1{padding:.25rem!important}.p-sm-2{padding:.5rem!important}.p-sm-3{padding:1rem!important}.p-sm-4{padding:1.5rem!important}.p-sm-5{padding:3rem!important}.px-sm-0{padding-right:0!important;padding-left:0!important}.px-sm-1{padding-right:.25rem!important;padding-left:.25rem!important}.px-sm-2{padding-right:.5rem!important;padding-left:.5rem!important}.px-sm-3{padding-right:1rem!important;padding-left:1rem!important}.px-sm-4{padding-right:1.5rem!important;padding-left:1.5rem!important}.px-sm-5{padding-right:3rem!important;padding-left:3rem!important}.py-sm-0{padding-top:0!important;padding-bottom:0!important}.py-sm-1{padding-top:.25rem!important;padding-bottom:.25rem!important}.py-sm-2{padding-top:.5rem!important;padding-bottom:.5rem!important}.py-sm-3{padding-top:1rem!important;padding-bottom:1rem!important}.py-sm-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}.py-sm-5{padding-top:3rem!important;padding-bottom:3rem!important}.pt-sm-0{padding-top:0!important}.pt-sm-1{padding-top:.25rem!important}.pt-sm-2{padding-top:.5rem!important}.pt-sm-3{padding-top:1rem!important}.pt-sm-4{padding-top:1.5rem!important}.pt-sm-5{padding-top:3rem!important}.pe-sm-0{padding-right:0!important}.pe-sm-1{padding-right:.25rem!important}.pe-sm-2{padding-right:.5rem!important}.pe-sm-3{padding-right:1rem!important}.pe-sm-4{padding-right:1.5rem!important}.pe-sm-5{padding-right:3rem!important}.pb-sm-0{padding-bottom:0!important}.pb-sm-1{padding-bottom:.25rem!important}.pb-sm-2{padding-bottom:.5rem!important}.pb-sm-3{padding-bottom:1rem!important}.pb-sm-4{padding-bottom:1.5rem!important}.pb-sm-5{padding-bottom:3rem!important}.ps-sm-0{padding-left:0!important}.ps-sm-1{padding-left:.25rem!important}.ps-sm-2{padding-left:.5rem!important}.ps-sm-3{padding-left:1rem!important}.ps-sm-4{padding-left:1.5rem!important}.ps-sm-5{padding-left:3rem!important}.text-sm-start{text-align:left!important}.text-sm-end{text-align:right!important}.text-sm-center{text-align:center!important}}@media (min-width:768px){.float-md-start{float:left!important}.float-md-end{float:right!important}.float-md-none{float:none!important}.d-md-inline{display:inline!important}.d-md-inline-block{display:inline-block!important}.d-md-block{display:block!important}.d-md-grid{display:grid!important}.d-md-table{display:table!important}.d-md-table-row{display:table-row!important}.d-md-table-cell{display:table-cell!important}.d-md-flex{display:flex!important}.d-md-inline-flex{display:inline-flex!important}.d-md-none{display:none!important}.flex-md-fill{flex:1 1 auto!important}.flex-md-row{flex-direction:row!important}.flex-md-column{flex-direction:column!important}.flex-md-row-reverse{flex-direction:row-reverse!important}.flex-md-column-reverse{flex-direction:column-reverse!important}.flex-md-grow-0{flex-grow:0!important}.flex-md-grow-1{flex-grow:1!important}.flex-md-shrink-0{flex-shrink:0!important}.flex-md-shrink-1{flex-shrink:1!important}.flex-md-wrap{flex-wrap:wrap!important}.flex-md-nowrap{flex-wrap:nowrap!important}.flex-md-wrap-reverse{flex-wrap:wrap-reverse!important}.gap-md-0{gap:0!important}.gap-md-1{gap:.25rem!important}.gap-md-2{gap:.5rem!important}.gap-md-3{gap:1rem!important}.gap-md-4{gap:1.5rem!important}.gap-md-5{gap:3rem!important}.justify-content-md-start{justify-content:flex-start!important}.justify-content-md-end{justify-content:flex-end!important}.justify-content-md-center{justify-content:center!important}.justify-content-md-between{justify-content:space-between!important}.justify-content-md-around{justify-content:space-around!important}.justify-content-md-evenly{justify-content:space-evenly!important}.align-items-md-start{align-items:flex-start!important}.align-items-md-end{align-items:flex-end!important}.align-items-md-center{align-items:center!important}.align-items-md-baseline{align-items:baseline!important}.align-items-md-stretch{align-items:stretch!important}.align-content-md-start{align-content:flex-start!important}.align-content-md-end{align-content:flex-end!important}.align-content-md-center{align-content:center!important}.align-content-md-between{align-content:space-between!important}.align-content-md-around{align-content:space-around!important}.align-content-md-stretch{align-content:stretch!important}.align-self-md-auto{align-self:auto!important}.align-self-md-start{align-self:flex-start!important}.align-self-md-end{align-self:flex-end!important}.align-self-md-center{align-self:center!important}.align-self-md-baseline{align-self:baseline!important}.align-self-md-stretch{align-self:stretch!important}.order-md-first{order:-1!important}.order-md-0{order:0!important}.order-md-1{order:1!important}.order-md-2{order:2!important}.order-md-3{order:3!important}.order-md-4{order:4!important}.order-md-5{order:5!important}.order-md-last{order:6!important}.m-md-0{margin:0!important}.m-md-1{margin:.25rem!important}.m-md-2{margin:.5rem!important}.m-md-3{margin:1rem!important}.m-md-4{margin:1.5rem!important}.m-md-5{margin:3rem!important}.m-md-auto{margin:auto!important}.mx-md-0{margin-right:0!important;margin-left:0!important}.mx-md-1{margin-right:.25rem!important;margin-left:.25rem!important}.mx-md-2{margin-right:.5rem!important;margin-left:.5rem!important}.mx-md-3{margin-right:1rem!important;margin-left:1rem!important}.mx-md-4{margin-right:1.5rem!important;margin-left:1.5rem!important}.mx-md-5{margin-right:3rem!important;margin-left:3rem!important}.mx-md-auto{margin-right:auto!important;margin-left:auto!important}.my-md-0{margin-top:0!important;margin-bottom:0!important}.my-md-1{margin-top:.25rem!important;margin-bottom:.25rem!important}.my-md-2{margin-top:.5rem!important;margin-bottom:.5rem!important}.my-md-3{margin-top:1rem!important;margin-bottom:1rem!important}.my-md-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}.my-md-5{margin-top:3rem!important;margin-bottom:3rem!important}.my-md-auto{margin-top:auto!important;margin-bottom:auto!important}.mt-md-0{margin-top:0!important}.mt-md-1{margin-top:.25rem!important}.mt-md-2{margin-top:.5rem!important}.mt-md-3{margin-top:1rem!important}.mt-md-4{margin-top:1.5rem!important}.mt-md-5{margin-top:3rem!important}.mt-md-auto{margin-top:auto!important}.me-md-0{margin-right:0!important}.me-md-1{margin-right:.25rem!important}.me-md-2{margin-right:.5rem!important}.me-md-3{margin-right:1rem!important}.me-md-4{margin-right:1.5rem!important}.me-md-5{margin-right:3rem!important}.me-md-auto{margin-right:auto!important}.mb-md-0{margin-bottom:0!important}.mb-md-1{margin-bottom:.25rem!important}.mb-md-2{margin-bottom:.5rem!important}.mb-md-3{margin-bottom:1rem!important}.mb-md-4{margin-bottom:1.5rem!important}.mb-md-5{margin-bottom:3rem!important}.mb-md-auto{margin-bottom:auto!important}.ms-md-0{margin-left:0!important}.ms-md-1{margin-left:.25rem!important}.ms-md-2{margin-left:.5rem!important}.ms-md-3{margin-left:1rem!important}.ms-md-4{margin-left:1.5rem!important}.ms-md-5{margin-left:3rem!important}.ms-md-auto{margin-left:auto!important}.p-md-0{padding:0!important}.p-md-1{padding:.25rem!important}.p-md-2{padding:.5rem!important}.p-md-3{padding:1rem!important}.p-md-4{padding:1.5rem!important}.p-md-5{padding:3rem!important}.px-md-0{padding-right:0!important;padding-left:0!important}.px-md-1{padding-right:.25rem!important;padding-left:.25rem!important}.px-md-2{padding-right:.5rem!important;padding-left:.5rem!important}.px-md-3{padding-right:1rem!important;padding-left:1rem!important}.px-md-4{padding-right:1.5rem!important;padding-left:1.5rem!important}.px-md-5{padding-right:3rem!important;padding-left:3rem!important}.py-md-0{padding-top:0!important;padding-bottom:0!important}.py-md-1{padding-top:.25rem!important;padding-bottom:.25rem!important}.py-md-2{padding-top:.5rem!important;padding-bottom:.5rem!important}.py-md-3{padding-top:1rem!important;padding-bottom:1rem!important}.py-md-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}.py-md-5{padding-top:3rem!important;padding-bottom:3rem!important}.pt-md-0{padding-top:0!important}.pt-md-1{padding-top:.25rem!important}.pt-md-2{padding-top:.5rem!important}.pt-md-3{padding-top:1rem!important}.pt-md-4{padding-top:1.5rem!important}.pt-md-5{padding-top:3rem!important}.pe-md-0{padding-right:0!important}.pe-md-1{padding-right:.25rem!important}.pe-md-2{padding-right:.5rem!important}.pe-md-3{padding-right:1rem!important}.pe-md-4{padding-right:1.5rem!important}.pe-md-5{padding-right:3rem!important}.pb-md-0{padding-bottom:0!important}.pb-md-1{padding-bottom:.25rem!important}.pb-md-2{padding-bottom:.5rem!important}.pb-md-3{padding-bottom:1rem!important}.pb-md-4{padding-bottom:1.5rem!important}.pb-md-5{padding-bottom:3rem!important}.ps-md-0{padding-left:0!important}.ps-md-1{padding-left:.25rem!important}.ps-md-2{padding-left:.5rem!important}.ps-md-3{padding-left:1rem!important}.ps-md-4{padding-left:1.5rem!important}.ps-md-5{padding-left:3rem!important}.text-md-start{text-align:left!important}.text-md-end{text-align:right!important}.text-md-center{text-align:center!important}}@media (min-width:992px){.float-lg-start{float:left!important}.float-lg-end{float:right!important}.float-lg-none{float:none!important}.d-lg-inline{display:inline!important}.d-lg-inline-block{display:inline-block!important}.d-lg-block{display:block!important}.d-lg-grid{display:grid!important}.d-lg-table{display:table!important}.d-lg-table-row{display:table-row!important}.d-lg-table-cell{display:table-cell!important}.d-lg-flex{display:flex!important}.d-lg-inline-flex{display:inline-flex!important}.d-lg-none{display:none!important}.flex-lg-fill{flex:1 1 auto!important}.flex-lg-row{flex-direction:row!important}.flex-lg-column{flex-direction:column!important}.flex-lg-row-reverse{flex-direction:row-reverse!important}.flex-lg-column-reverse{flex-direction:column-reverse!important}.flex-lg-grow-0{flex-grow:0!important}.flex-lg-grow-1{flex-grow:1!important}.flex-lg-shrink-0{flex-shrink:0!important}.flex-lg-shrink-1{flex-shrink:1!important}.flex-lg-wrap{flex-wrap:wrap!important}.flex-lg-nowrap{flex-wrap:nowrap!important}.flex-lg-wrap-reverse{flex-wrap:wrap-reverse!important}.gap-lg-0{gap:0!important}.gap-lg-1{gap:.25rem!important}.gap-lg-2{gap:.5rem!important}.gap-lg-3{gap:1rem!important}.gap-lg-4{gap:1.5rem!important}.gap-lg-5{gap:3rem!important}.justify-content-lg-start{justify-content:flex-start!important}.justify-content-lg-end{justify-content:flex-end!important}.justify-content-lg-center{justify-content:center!important}.justify-content-lg-between{justify-content:space-between!important}.justify-content-lg-around{justify-content:space-around!important}.justify-content-lg-evenly{justify-content:space-evenly!important}.align-items-lg-start{align-items:flex-start!important}.align-items-lg-end{align-items:flex-end!important}.align-items-lg-center{align-items:center!important}.align-items-lg-baseline{align-items:baseline!important}.align-items-lg-stretch{align-items:stretch!important}.align-content-lg-start{align-content:flex-start!important}.align-content-lg-end{align-content:flex-end!important}.align-content-lg-center{align-content:center!important}.align-content-lg-between{align-content:space-between!important}.align-content-lg-around{align-content:space-around!important}.align-content-lg-stretch{align-content:stretch!important}.align-self-lg-auto{align-self:auto!important}.align-self-lg-start{align-self:flex-start!important}.align-self-lg-end{align-self:flex-end!important}.align-self-lg-center{align-self:center!important}.align-self-lg-baseline{align-self:baseline!important}.align-self-lg-stretch{align-self:stretch!important}.order-lg-first{order:-1!important}.order-lg-0{order:0!important}.order-lg-1{order:1!important}.order-lg-2{order:2!important}.order-lg-3{order:3!important}.order-lg-4{order:4!important}.order-lg-5{order:5!important}.order-lg-last{order:6!important}.m-lg-0{margin:0!important}.m-lg-1{margin:.25rem!important}.m-lg-2{margin:.5rem!important}.m-lg-3{margin:1rem!important}.m-lg-4{margin:1.5rem!important}.m-lg-5{margin:3rem!important}.m-lg-auto{margin:auto!important}.mx-lg-0{margin-right:0!important;margin-left:0!important}.mx-lg-1{margin-right:.25rem!important;margin-left:.25rem!important}.mx-lg-2{margin-right:.5rem!important;margin-left:.5rem!important}.mx-lg-3{margin-right:1rem!important;margin-left:1rem!important}.mx-lg-4{margin-right:1.5rem!important;margin-left:1.5rem!important}.mx-lg-5{margin-right:3rem!important;margin-left:3rem!important}.mx-lg-auto{margin-right:auto!important;margin-left:auto!important}.my-lg-0{margin-top:0!important;margin-bottom:0!important}.my-lg-1{margin-top:.25rem!important;margin-bottom:.25rem!important}.my-lg-2{margin-top:.5rem!important;margin-bottom:.5rem!important}.my-lg-3{margin-top:1rem!important;margin-bottom:1rem!important}.my-lg-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}.my-lg-5{margin-top:3rem!important;margin-bottom:3rem!important}.my-lg-auto{margin-top:auto!important;margin-bottom:auto!important}.mt-lg-0{margin-top:0!important}.mt-lg-1{margin-top:.25rem!important}.mt-lg-2{margin-top:.5rem!important}.mt-lg-3{margin-top:1rem!important}.mt-lg-4{margin-top:1.5rem!important}.mt-lg-5{margin-top:3rem!important}.mt-lg-auto{margin-top:auto!important}.me-lg-0{margin-right:0!important}.me-lg-1{margin-right:.25rem!important}.me-lg-2{margin-right:.5rem!important}.me-lg-3{margin-right:1rem!important}.me-lg-4{margin-right:1.5rem!important}.me-lg-5{margin-right:3rem!important}.me-lg-auto{margin-right:auto!important}.mb-lg-0{margin-bottom:0!important}.mb-lg-1{margin-bottom:.25rem!important}.mb-lg-2{margin-bottom:.5rem!important}.mb-lg-3{margin-bottom:1rem!important}.mb-lg-4{margin-bottom:1.5rem!important}.mb-lg-5{margin-bottom:3rem!important}.mb-lg-auto{margin-bottom:auto!important}.ms-lg-0{margin-left:0!important}.ms-lg-1{margin-left:.25rem!important}.ms-lg-2{margin-left:.5rem!important}.ms-lg-3{margin-left:1rem!important}.ms-lg-4{margin-left:1.5rem!important}.ms-lg-5{margin-left:3rem!important}.ms-lg-auto{margin-left:auto!important}.p-lg-0{padding:0!important}.p-lg-1{padding:.25rem!important}.p-lg-2{padding:.5rem!important}.p-lg-3{padding:1rem!important}.p-lg-4{padding:1.5rem!important}.p-lg-5{padding:3rem!important}.px-lg-0{padding-right:0!important;padding-left:0!important}.px-lg-1{padding-right:.25rem!important;padding-left:.25rem!important}.px-lg-2{padding-right:.5rem!important;padding-left:.5rem!important}.px-lg-3{padding-right:1rem!important;padding-left:1rem!important}.px-lg-4{padding-right:1.5rem!important;padding-left:1.5rem!important}.px-lg-5{padding-right:3rem!important;padding-left:3rem!important}.py-lg-0{padding-top:0!important;padding-bottom:0!important}.py-lg-1{padding-top:.25rem!important;padding-bottom:.25rem!important}.py-lg-2{padding-top:.5rem!important;padding-bottom:.5rem!important}.py-lg-3{padding-top:1rem!important;padding-bottom:1rem!important}.py-lg-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}.py-lg-5{padding-top:3rem!important;padding-bottom:3rem!important}.pt-lg-0{padding-top:0!important}.pt-lg-1{padding-top:.25rem!important}.pt-lg-2{padding-top:.5rem!important}.pt-lg-3{padding-top:1rem!important}.pt-lg-4{padding-top:1.5rem!important}.pt-lg-5{padding-top:3rem!important}.pe-lg-0{padding-right:0!important}.pe-lg-1{padding-right:.25rem!important}.pe-lg-2{padding-right:.5rem!important}.pe-lg-3{padding-right:1rem!important}.pe-lg-4{padding-right:1.5rem!important}.pe-lg-5{padding-right:3rem!important}.pb-lg-0{padding-bottom:0!important}.pb-lg-1{padding-bottom:.25rem!important}.pb-lg-2{padding-bottom:.5rem!important}.pb-lg-3{padding-bottom:1rem!important}.pb-lg-4{padding-bottom:1.5rem!important}.pb-lg-5{padding-bottom:3rem!important}.ps-lg-0{padding-left:0!important}.ps-lg-1{padding-left:.25rem!important}.ps-lg-2{padding-left:.5rem!important}.ps-lg-3{padding-left:1rem!important}.ps-lg-4{padding-left:1.5rem!important}.ps-lg-5{padding-left:3rem!important}.text-lg-start{text-align:left!important}.text-lg-end{text-align:right!important}.text-lg-center{text-align:center!important}}@media (min-width:1200px){.float-xl-start{float:left!important}.float-xl-end{float:right!important}.float-xl-none{float:none!important}.d-xl-inline{display:inline!important}.d-xl-inline-block{display:inline-block!important}.d-xl-block{display:block!important}.d-xl-grid{display:grid!important}.d-xl-table{display:table!important}.d-xl-table-row{display:table-row!important}.d-xl-table-cell{display:table-cell!important}.d-xl-flex{display:flex!important}.d-xl-inline-flex{display:inline-flex!important}.d-xl-none{display:none!important}.flex-xl-fill{flex:1 1 auto!important}.flex-xl-row{flex-direction:row!important}.flex-xl-column{flex-direction:column!important}.flex-xl-row-reverse{flex-direction:row-reverse!important}.flex-xl-column-reverse{flex-direction:column-reverse!important}.flex-xl-grow-0{flex-grow:0!important}.flex-xl-grow-1{flex-grow:1!important}.flex-xl-shrink-0{flex-shrink:0!important}.flex-xl-shrink-1{flex-shrink:1!important}.flex-xl-wrap{flex-wrap:wrap!important}.flex-xl-nowrap{flex-wrap:nowrap!important}.flex-xl-wrap-reverse{flex-wrap:wrap-reverse!important}.gap-xl-0{gap:0!important}.gap-xl-1{gap:.25rem!important}.gap-xl-2{gap:.5rem!important}.gap-xl-3{gap:1rem!important}.gap-xl-4{gap:1.5rem!important}.gap-xl-5{gap:3rem!important}.justify-content-xl-start{justify-content:flex-start!important}.justify-content-xl-end{justify-content:flex-end!important}.justify-content-xl-center{justify-content:center!important}.justify-content-xl-between{justify-content:space-between!important}.justify-content-xl-around{justify-content:space-around!important}.justify-content-xl-evenly{justify-content:space-evenly!important}.align-items-xl-start{align-items:flex-start!important}.align-items-xl-end{align-items:flex-end!important}.align-items-xl-center{align-items:center!important}.align-items-xl-baseline{align-items:baseline!important}.align-items-xl-stretch{align-items:stretch!important}.align-content-xl-start{align-content:flex-start!important}.align-content-xl-end{align-content:flex-end!important}.align-content-xl-center{align-content:center!important}.align-content-xl-between{align-content:space-between!important}.align-content-xl-around{align-content:space-around!important}.align-content-xl-stretch{align-content:stretch!important}.align-self-xl-auto{align-self:auto!important}.align-self-xl-start{align-self:flex-start!important}.align-self-xl-end{align-self:flex-end!important}.align-self-xl-center{align-self:center!important}.align-self-xl-baseline{align-self:baseline!important}.align-self-xl-stretch{align-self:stretch!important}.order-xl-first{order:-1!important}.order-xl-0{order:0!important}.order-xl-1{order:1!important}.order-xl-2{order:2!important}.order-xl-3{order:3!important}.order-xl-4{order:4!important}.order-xl-5{order:5!important}.order-xl-last{order:6!important}.m-xl-0{margin:0!important}.m-xl-1{margin:.25rem!important}.m-xl-2{margin:.5rem!important}.m-xl-3{margin:1rem!important}.m-xl-4{margin:1.5rem!important}.m-xl-5{margin:3rem!important}.m-xl-auto{margin:auto!important}.mx-xl-0{margin-right:0!important;margin-left:0!important}.mx-xl-1{margin-right:.25rem!important;margin-left:.25rem!important}.mx-xl-2{margin-right:.5rem!important;margin-left:.5rem!important}.mx-xl-3{margin-right:1rem!important;margin-left:1rem!important}.mx-xl-4{margin-right:1.5rem!important;margin-left:1.5rem!important}.mx-xl-5{margin-right:3rem!important;margin-left:3rem!important}.mx-xl-auto{margin-right:auto!important;margin-left:auto!important}.my-xl-0{margin-top:0!important;margin-bottom:0!important}.my-xl-1{margin-top:.25rem!important;margin-bottom:.25rem!important}.my-xl-2{margin-top:.5rem!important;margin-bottom:.5rem!important}.my-xl-3{margin-top:1rem!important;margin-bottom:1rem!important}.my-xl-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}.my-xl-5{margin-top:3rem!important;margin-bottom:3rem!important}.my-xl-auto{margin-top:auto!important;margin-bottom:auto!important}.mt-xl-0{margin-top:0!important}.mt-xl-1{margin-top:.25rem!important}.mt-xl-2{margin-top:.5rem!important}.mt-xl-3{margin-top:1rem!important}.mt-xl-4{margin-top:1.5rem!important}.mt-xl-5{margin-top:3rem!important}.mt-xl-auto{margin-top:auto!important}.me-xl-0{margin-right:0!important}.me-xl-1{margin-right:.25rem!important}.me-xl-2{margin-right:.5rem!important}.me-xl-3{margin-right:1rem!important}.me-xl-4{margin-right:1.5rem!important}.me-xl-5{margin-right:3rem!important}.me-xl-auto{margin-right:auto!important}.mb-xl-0{margin-bottom:0!important}.mb-xl-1{margin-bottom:.25rem!important}.mb-xl-2{margin-bottom:.5rem!important}.mb-xl-3{margin-bottom:1rem!important}.mb-xl-4{margin-bottom:1.5rem!important}.mb-xl-5{margin-bottom:3rem!important}.mb-xl-auto{margin-bottom:auto!important}.ms-xl-0{margin-left:0!important}.ms-xl-1{margin-left:.25rem!important}.ms-xl-2{margin-left:.5rem!important}.ms-xl-3{margin-left:1rem!important}.ms-xl-4{margin-left:1.5rem!important}.ms-xl-5{margin-left:3rem!important}.ms-xl-auto{margin-left:auto!important}.p-xl-0{padding:0!important}.p-xl-1{padding:.25rem!important}.p-xl-2{padding:.5rem!important}.p-xl-3{padding:1rem!important}.p-xl-4{padding:1.5rem!important}.p-xl-5{padding:3rem!important}.px-xl-0{padding-right:0!important;padding-left:0!important}.px-xl-1{padding-right:.25rem!important;padding-left:.25rem!important}.px-xl-2{padding-right:.5rem!important;padding-left:.5rem!important}.px-xl-3{padding-right:1rem!important;padding-left:1rem!important}.px-xl-4{padding-right:1.5rem!important;padding-left:1.5rem!important}.px-xl-5{padding-right:3rem!important;padding-left:3rem!important}.py-xl-0{padding-top:0!important;padding-bottom:0!important}.py-xl-1{padding-top:.25rem!important;padding-bottom:.25rem!important}.py-xl-2{padding-top:.5rem!important;padding-bottom:.5rem!important}.py-xl-3{padding-top:1rem!important;padding-bottom:1rem!important}.py-xl-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}.py-xl-5{padding-top:3rem!important;padding-bottom:3rem!important}.pt-xl-0{padding-top:0!important}.pt-xl-1{padding-top:.25rem!important}.pt-xl-2{padding-top:.5rem!important}.pt-xl-3{padding-top:1rem!important}.pt-xl-4{padding-top:1.5rem!important}.pt-xl-5{padding-top:3rem!important}.pe-xl-0{padding-right:0!important}.pe-xl-1{padding-right:.25rem!important}.pe-xl-2{padding-right:.5rem!important}.pe-xl-3{padding-right:1rem!important}.pe-xl-4{padding-right:1.5rem!important}.pe-xl-5{padding-right:3rem!important}.pb-xl-0{padding-bottom:0!important}.pb-xl-1{padding-bottom:.25rem!important}.pb-xl-2{padding-bottom:.5rem!important}.pb-xl-3{padding-bottom:1rem!important}.pb-xl-4{padding-bottom:1.5rem!important}.pb-xl-5{padding-bottom:3rem!important}.ps-xl-0{padding-left:0!important}.ps-xl-1{padding-left:.25rem!important}.ps-xl-2{padding-left:.5rem!important}.ps-xl-3{padding-left:1rem!important}.ps-xl-4{padding-left:1.5rem!important}.ps-xl-5{padding-left:3rem!important}.text-xl-start{text-align:left!important}.text-xl-end{text-align:right!important}.text-xl-center{text-align:center!important}}@media (min-width:1400px){.float-xxl-start{float:left!important}.float-xxl-end{float:right!important}.float-xxl-none{float:none!important}.d-xxl-inline{display:inline!important}.d-xxl-inline-block{display:inline-block!important}.d-xxl-block{display:block!important}.d-xxl-grid{display:grid!important}.d-xxl-table{display:table!important}.d-xxl-table-row{display:table-row!important}.d-xxl-table-cell{display:table-cell!important}.d-xxl-flex{display:flex!important}.d-xxl-inline-flex{display:inline-flex!important}.d-xxl-none{display:none!important}.flex-xxl-fill{flex:1 1 auto!important}.flex-xxl-row{flex-direction:row!important}.flex-xxl-column{flex-direction:column!important}.flex-xxl-row-reverse{flex-direction:row-reverse!important}.flex-xxl-column-reverse{flex-direction:column-reverse!important}.flex-xxl-grow-0{flex-grow:0!important}.flex-xxl-grow-1{flex-grow:1!important}.flex-xxl-shrink-0{flex-shrink:0!important}.flex-xxl-shrink-1{flex-shrink:1!important}.flex-xxl-wrap{flex-wrap:wrap!important}.flex-xxl-nowrap{flex-wrap:nowrap!important}.flex-xxl-wrap-reverse{flex-wrap:wrap-reverse!important}.gap-xxl-0{gap:0!important}.gap-xxl-1{gap:.25rem!important}.gap-xxl-2{gap:.5rem!important}.gap-xxl-3{gap:1rem!important}.gap-xxl-4{gap:1.5rem!important}.gap-xxl-5{gap:3rem!important}.justify-content-xxl-start{justify-content:flex-start!important}.justify-content-xxl-end{justify-content:flex-end!important}.justify-content-xxl-center{justify-content:center!important}.justify-content-xxl-between{justify-content:space-between!important}.justify-content-xxl-around{justify-content:space-around!important}.justify-content-xxl-evenly{justify-content:space-evenly!important}.align-items-xxl-start{align-items:flex-start!important}.align-items-xxl-end{align-items:flex-end!important}.align-items-xxl-center{align-items:center!important}.align-items-xxl-baseline{align-items:baseline!important}.align-items-xxl-stretch{align-items:stretch!important}.align-content-xxl-start{align-content:flex-start!important}.align-content-xxl-end{align-content:flex-end!important}.align-content-xxl-center{align-content:center!important}.align-content-xxl-between{align-content:space-between!important}.align-content-xxl-around{align-content:space-around!important}.align-content-xxl-stretch{align-content:stretch!important}.align-self-xxl-auto{align-self:auto!important}.align-self-xxl-start{align-self:flex-start!important}.align-self-xxl-end{align-self:flex-end!important}.align-self-xxl-center{align-self:center!important}.align-self-xxl-baseline{align-self:baseline!important}.align-self-xxl-stretch{align-self:stretch!important}.order-xxl-first{order:-1!important}.order-xxl-0{order:0!important}.order-xxl-1{order:1!important}.order-xxl-2{order:2!important}.order-xxl-3{order:3!important}.order-xxl-4{order:4!important}.order-xxl-5{order:5!important}.order-xxl-last{order:6!important}.m-xxl-0{margin:0!important}.m-xxl-1{margin:.25rem!important}.m-xxl-2{margin:.5rem!important}.m-xxl-3{margin:1rem!important}.m-xxl-4{margin:1.5rem!important}.m-xxl-5{margin:3rem!important}.m-xxl-auto{margin:auto!important}.mx-xxl-0{margin-right:0!important;margin-left:0!important}.mx-xxl-1{margin-right:.25rem!important;margin-left:.25rem!important}.mx-xxl-2{margin-right:.5rem!important;margin-left:.5rem!important}.mx-xxl-3{margin-right:1rem!important;margin-left:1rem!important}.mx-xxl-4{margin-right:1.5rem!important;margin-left:1.5rem!important}.mx-xxl-5{margin-right:3rem!important;margin-left:3rem!important}.mx-xxl-auto{margin-right:auto!important;margin-left:auto!important}.my-xxl-0{margin-top:0!important;margin-bottom:0!important}.my-xxl-1{margin-top:.25rem!important;margin-bottom:.25rem!important}.my-xxl-2{margin-top:.5rem!important;margin-bottom:.5rem!important}.my-xxl-3{margin-top:1rem!important;margin-bottom:1rem!important}.my-xxl-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}.my-xxl-5{margin-top:3rem!important;margin-bottom:3rem!important}.my-xxl-auto{margin-top:auto!important;margin-bottom:auto!important}.mt-xxl-0{margin-top:0!important}.mt-xxl-1{margin-top:.25rem!important}.mt-xxl-2{margin-top:.5rem!important}.mt-xxl-3{margin-top:1rem!important}.mt-xxl-4{margin-top:1.5rem!important}.mt-xxl-5{margin-top:3rem!important}.mt-xxl-auto{margin-top:auto!important}.me-xxl-0{margin-right:0!important}.me-xxl-1{margin-right:.25rem!important}.me-xxl-2{margin-right:.5rem!important}.me-xxl-3{margin-right:1rem!important}.me-xxl-4{margin-right:1.5rem!important}.me-xxl-5{margin-right:3rem!important}.me-xxl-auto{margin-right:auto!important}.mb-xxl-0{margin-bottom:0!important}.mb-xxl-1{margin-bottom:.25rem!important}.mb-xxl-2{margin-bottom:.5rem!important}.mb-xxl-3{margin-bottom:1rem!important}.mb-xxl-4{margin-bottom:1.5rem!important}.mb-xxl-5{margin-bottom:3rem!important}.mb-xxl-auto{margin-bottom:auto!important}.ms-xxl-0{margin-left:0!important}.ms-xxl-1{margin-left:.25rem!important}.ms-xxl-2{margin-left:.5rem!important}.ms-xxl-3{margin-left:1rem!important}.ms-xxl-4{margin-left:1.5rem!important}.ms-xxl-5{margin-left:3rem!important}.ms-xxl-auto{margin-left:auto!important}.p-xxl-0{padding:0!important}.p-xxl-1{padding:.25rem!important}.p-xxl-2{padding:.5rem!important}.p-xxl-3{padding:1rem!important}.p-xxl-4{padding:1.5rem!important}.p-xxl-5{padding:3rem!important}.px-xxl-0{padding-right:0!important;padding-left:0!important}.px-xxl-1{padding-right:.25rem!important;padding-left:.25rem!important}.px-xxl-2{padding-right:.5rem!important;padding-left:.5rem!important}.px-xxl-3{padding-right:1rem!important;padding-left:1rem!important}.px-xxl-4{padding-right:1.5rem!important;padding-left:1.5rem!important}.px-xxl-5{padding-right:3rem!important;padding-left:3rem!important}.py-xxl-0{padding-top:0!important;padding-bottom:0!important}.py-xxl-1{padding-top:.25rem!important;padding-bottom:.25rem!important}.py-xxl-2{padding-top:.5rem!important;padding-bottom:.5rem!important}.py-xxl-3{padding-top:1rem!important;padding-bottom:1rem!important}.py-xxl-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}.py-xxl-5{padding-top:3rem!important;padding-bottom:3rem!important}.pt-xxl-0{padding-top:0!important}.pt-xxl-1{padding-top:.25rem!important}.pt-xxl-2{padding-top:.5rem!important}.pt-xxl-3{padding-top:1rem!important}.pt-xxl-4{padding-top:1.5rem!important}.pt-xxl-5{padding-top:3rem!important}.pe-xxl-0{padding-right:0!important}.pe-xxl-1{padding-right:.25rem!important}.pe-xxl-2{padding-right:.5rem!important}.pe-xxl-3{padding-right:1rem!important}.pe-xxl-4{padding-right:1.5rem!important}.pe-xxl-5{padding-right:3rem!important}.pb-xxl-0{padding-bottom:0!important}.pb-xxl-1{padding-bottom:.25rem!important}.pb-xxl-2{padding-bottom:.5rem!important}.pb-xxl-3{padding-bottom:1rem!important}.pb-xxl-4{padding-bottom:1.5rem!important}.pb-xxl-5{padding-bottom:3rem!important}.ps-xxl-0{padding-left:0!important}.ps-xxl-1{padding-left:.25rem!important}.ps-xxl-2{padding-left:.5rem!important}.ps-xxl-3{padding-left:1rem!important}.ps-xxl-4{padding-left:1.5rem!important}.ps-xxl-5{padding-left:3rem!important}.text-xxl-start{text-align:left!important}.text-xxl-end{text-align:right!important}.text-xxl-center{text-align:center!important}}@media (min-width:1200px){.fs-1{font-size:2.5rem!important}.fs-2{font-size:2rem!important}.fs-3{font-size:1.75rem!important}.fs-4{font-size:1.5rem!important}}@media print{.d-print-inline{display:inline!important}.d-print-inline-block{display:inline-block!important}.d-print-block{display:block!important}.d-print-grid{display:grid!important}.d-print-table{display:table!important}.d-print-table-row{display:table-row!important}.d-print-table-cell{display:table-cell!important}.d-print-flex{display:flex!important}.d-print-inline-flex{display:inline-flex!important}.d-print-none{display:none!important}}.h1,.h2,.h3,.h4,.h5,.h6,body,h1,h2,h3,h4,h5,h6,input,p,textarea{text-rendering:optimizeLegibility}::-moz-selection{background:#f8f567}.scielo__theme--dark ::-moz-selection{background:#070a98}.scielo__theme--light ::-moz-selection{background:#f8f567}::selection{background:#f8f567}.scielo__theme--dark ::selection{background:#070a98}.scielo__theme--light ::selection{background:#f8f567}.scielo__theme--light{background:#fff;color:#333}.scielo__theme--dark{background:#333;color:#c4c4c4}.container{padding-left:16px;padding-right:16px}@media screen and (min-width:576px){.col,.container,[class*=col-]{padding-left:10px;padding-right:10px}.row{margin-left:-10px;margin-right:-10px}}@media screen and (min-width:768px){.col,.container,[class*=col-]{padding-left:12px;padding-right:12px}.row{margin-left:-12px;margin-right:-12px}}@media screen and (min-width:992px){.col,.container,[class*=col-]{padding-left:16px;padding-right:16px}.row{margin-left:-16px;margin-right:-16px}}@media screen and (min-width:1200px){.col,.container,[class*=col-]{padding-left:20px;padding-right:20px}.row{margin-left:-20px;margin-right:-20px}}a{color:#3867ce;text-decoration:none}a:hover{text-decoration:underline}a:hover{color:#254895}.scielo__theme--dark a{color:#86acff}.scielo__theme--dark a:hover{color:#d3e0ff}.scielo__theme--light a{color:#3867ce;text-decoration:none}.scielo__theme--light a:hover{text-decoration:underline}.scielo__theme--light a:hover{color:#254895}a .material-icons,a .material-icons-outlined{vertical-align:text-bottom}p{line-height:1.6;margin-bottom:1.5rem}p .material-icons,p .material-icons-outlined{vertical-align:text-bottom}.h1,.h2,.h3,.h4,.h5,.h6,h1,h2,h3,h4,h5,h6{color:#00314c;margin-bottom:1.5rem}.h1 .material-icons,.h1 .material-icons-outlined,.h2 .material-icons,.h2 .material-icons-outlined,.h3 .material-icons,.h3 .material-icons-outlined,.h4 .material-icons,.h4 .material-icons-outlined,.h5 .material-icons,.h5 .material-icons-outlined,.h6 .material-icons,.h6 .material-icons-outlined,h1 .material-icons,h1 .material-icons-outlined,h2 .material-icons,h2 .material-icons-outlined,h3 .material-icons,h3 .material-icons-outlined,h4 .material-icons,h4 .material-icons-outlined,h5 .material-icons,h5 .material-icons-outlined,h6 .material-icons,h6 .material-icons-outlined{vertical-align:text-bottom;font-size:inherit;line-height:inherit;display:inline-block}.h1 .small,.h1 small,.h2 .small,.h2 small,.h3 .small,.h3 small,.h4 .small,.h4 small,.h5 .small,.h5 small,.h6 .small,.h6 small,h1 .small,h1 small,h2 .small,h2 small,h3 .small,h3 small,h4 .small,h4 small,h5 .small,h5 small,h6 .small,h6 small{color:#333;font-weight:inherit}.scielo__theme--dark .h1,.scielo__theme--dark .h2,.scielo__theme--dark .h3,.scielo__theme--dark .h4,.scielo__theme--dark .h5,.scielo__theme--dark .h6,.scielo__theme--dark h1,.scielo__theme--dark h2,.scielo__theme--dark h3,.scielo__theme--dark h4,.scielo__theme--dark h5,.scielo__theme--dark h6{color:#eee}.scielo__theme--dark .h1 .small,.scielo__theme--dark .h1 small,.scielo__theme--dark .h2 .small,.scielo__theme--dark .h2 small,.scielo__theme--dark .h3 .small,.scielo__theme--dark .h3 small,.scielo__theme--dark .h4 .small,.scielo__theme--dark .h4 small,.scielo__theme--dark .h5 .small,.scielo__theme--dark .h5 small,.scielo__theme--dark .h6 .small,.scielo__theme--dark .h6 small,.scielo__theme--dark h1 .small,.scielo__theme--dark h1 small,.scielo__theme--dark h2 .small,.scielo__theme--dark h2 small,.scielo__theme--dark h3 .small,.scielo__theme--dark h3 small,.scielo__theme--dark h4 .small,.scielo__theme--dark h4 small,.scielo__theme--dark h5 .small,.scielo__theme--dark h5 small,.scielo__theme--dark h6 .small,.scielo__theme--dark h6 small{color:#c4c4c4}.scielo__theme--light .h1,.scielo__theme--light .h2,.scielo__theme--light .h3,.scielo__theme--light .h4,.scielo__theme--light .h5,.scielo__theme--light .h6,.scielo__theme--light h1,.scielo__theme--light h2,.scielo__theme--light h3,.scielo__theme--light h4,.scielo__theme--light h5,.scielo__theme--light h6{color:#00314c}.scielo__theme--light .h1 .small,.scielo__theme--light .h1 small,.scielo__theme--light .h2 .small,.scielo__theme--light .h2 small,.scielo__theme--light .h3 .small,.scielo__theme--light .h3 small,.scielo__theme--light .h4 .small,.scielo__theme--light .h4 small,.scielo__theme--light .h5 .small,.scielo__theme--light .h5 small,.scielo__theme--light .h6 .small,.scielo__theme--light .h6 small,.scielo__theme--light h1 .small,.scielo__theme--light h1 small,.scielo__theme--light h2 .small,.scielo__theme--light h2 small,.scielo__theme--light h3 .small,.scielo__theme--light h3 small,.scielo__theme--light h4 .small,.scielo__theme--light h4 small,.scielo__theme--light h5 .small,.scielo__theme--light h5 small,.scielo__theme--light h6 .small,.scielo__theme--light h6 small{color:#333;font-weight:inherit}.h1,.scielo__text-title--1,h1{font-weight:700;font-size:2.5rem;line-height:1.2em;letter-spacing:-.2px}.h1 .material-icons,.h1 .material-icons-outlined,.scielo__text-title--1 .material-icons,.scielo__text-title--1 .material-icons-outlined,h1 .material-icons,h1 .material-icons-outlined{vertical-align:text-bottom;font-size:inherit;line-height:inherit;display:inline-block}.h2,.scielo__text-title--2,h2{font-weight:700;font-size:2rem;line-height:1.2em;letter-spacing:-.16px}.h2 .material-icons,.h2 .material-icons-outlined,.scielo__text-title--2 .material-icons,.scielo__text-title--2 .material-icons-outlined,h2 .material-icons,h2 .material-icons-outlined{vertical-align:text-bottom;font-size:inherit;line-height:inherit;display:inline-block}.h3,.scielo__text-title--3,h3{font-weight:700;font-size:1.75rem;line-height:1.2em;letter-spacing:-.14px}.h3 .material-icons,.h3 .material-icons-outlined,.scielo__text-title--3 .material-icons,.scielo__text-title--3 .material-icons-outlined,h3 .material-icons,h3 .material-icons-outlined{vertical-align:text-bottom;font-size:inherit;line-height:inherit;display:inline-block}.h4,.scielo__text-title--4,h4{font-weight:700;font-size:1.5rem;line-height:1.2em;letter-spacing:-.12px}.h4 .material-icons,.h4 .material-icons-outlined,.scielo__text-title--4 .material-icons,.scielo__text-title--4 .material-icons-outlined,h4 .material-icons,h4 .material-icons-outlined{vertical-align:text-bottom;font-size:inherit;line-height:inherit;display:inline-block}.h5,.scielo__text-subtitle,h5{font-weight:700;font-size:1.3125rem;line-height:1.25em;letter-spacing:0}.h5 .material-icons,.h5 .material-icons-outlined,.scielo__text-subtitle .material-icons,.scielo__text-subtitle .material-icons-outlined,h5 .material-icons,h5 .material-icons-outlined{vertical-align:text-bottom;font-size:inherit;line-height:inherit;display:inline-block}.h6,.scielo__text-subtitle--small,h6{font-size:1.03125rem;letter-spacing:0}.h6 .material-icons,.h6 .material-icons-outlined,.scielo__text-subtitle--small .material-icons,.scielo__text-subtitle--small .material-icons-outlined,h6 .material-icons,h6 .material-icons-outlined{vertical-align:text-bottom;font-size:inherit;line-height:inherit;display:inline-block}.scielo__text-body{font-weight:400;font-size:1rem;line-height:1.6em;letter-spacing:.1px}.scielo__text-body--large{font-size:1.125rem}.scielo__text-body--small{font-size:.75rem;letter-spacing:.06}.scielo__text-body--micro{font-size:.75rem}.scielo__text-overline{font-weight:700;font-size:.75rem;line-height:1.2em;letter-spacing:.06px}.scielo__text-caption{font-weight:400;font-size:1rem;line-height:1.2em}.scielo__text-caption--large{font-weight:700;font-size:1;line-height:1.2em;letter-spacing:0}.scielo__text-button{font-weight:400!important;font-size:1rem;letter-spacing:.1px!important;white-space:nowrap}.scielo__text-button--large{font-size:1.25rem}.mark,mark{background:rgba(0,176,230,.2)}.scielo__theme--dark .mark,.scielo__theme--dark mark{color:#c4c4c4}.scielo__theme--light .mark,.scielo__theme--light mark{color:#333}code{font-size:1.125rem;color:#00314c;background:rgba(0,176,230,.2)}.scielo__theme--dark code{color:#eee}.scielo__theme--light code{color:#00314c}abbr[data-original-title],abbr[title]{text-decoration:none;border-bottom:1px dotted #333}.scielo__theme--dark abbr[data-original-title],.scielo__theme--dark abbr[title]{border-bottom-color:#c4c4c4}.scielo__theme--light abbr[data-original-title],.scielo__theme--light abbr[title]{border-bottom-color:#333}html{font-size:16px}.articleCtt{font-size:18px}.display-1,.display-2,.display-3,.display-4,.h1,.h2,.h3,.h4,.h5,.h6,.lead{color:#00314c}.display-1 .material-icons,.display-1 .material-icons-outlined,.display-2 .material-icons,.display-2 .material-icons-outlined,.display-3 .material-icons,.display-3 .material-icons-outlined,.display-4 .material-icons,.display-4 .material-icons-outlined,.h1 .material-icons,.h1 .material-icons-outlined,.h2 .material-icons,.h2 .material-icons-outlined,.h3 .material-icons,.h3 .material-icons-outlined,.h4 .material-icons,.h4 .material-icons-outlined,.h5 .material-icons,.h5 .material-icons-outlined,.h6 .material-icons,.h6 .material-icons-outlined,.lead .material-icons,.lead .material-icons-outlined{vertical-align:text-bottom;font-size:inherit;line-height:inherit;display:inline-block}.display-1 .small,.display-1 small,.display-2 .small,.display-2 small,.display-3 .small,.display-3 small,.display-4 .small,.display-4 small,.h1 .small,.h1 small,.h2 .small,.h2 small,.h3 .small,.h3 small,.h4 .small,.h4 small,.h5 .small,.h5 small,.h6 .small,.h6 small,.lead .small,.lead small{color:#333;font-weight:inherit}.scielo__theme--dark .display-1,.scielo__theme--dark .display-2,.scielo__theme--dark .display-3,.scielo__theme--dark .display-4,.scielo__theme--dark .h1,.scielo__theme--dark .h2,.scielo__theme--dark .h3,.scielo__theme--dark .h4,.scielo__theme--dark .h5,.scielo__theme--dark .h6,.scielo__theme--dark .lead{color:#eee}.scielo__theme--dark .display-1 .small,.scielo__theme--dark .display-1 small,.scielo__theme--dark .display-2 .small,.scielo__theme--dark .display-2 small,.scielo__theme--dark .display-3 .small,.scielo__theme--dark .display-3 small,.scielo__theme--dark .display-4 .small,.scielo__theme--dark .display-4 small,.scielo__theme--dark .h1 .small,.scielo__theme--dark .h1 small,.scielo__theme--dark .h2 .small,.scielo__theme--dark .h2 small,.scielo__theme--dark .h3 .small,.scielo__theme--dark .h3 small,.scielo__theme--dark .h4 .small,.scielo__theme--dark .h4 small,.scielo__theme--dark .h5 .small,.scielo__theme--dark .h5 small,.scielo__theme--dark .h6 .small,.scielo__theme--dark .h6 small,.scielo__theme--dark .lead .small,.scielo__theme--dark .lead small{color:#c4c4c4}.scielo__theme--light .display-1,.scielo__theme--light .display-2,.scielo__theme--light .display-3,.scielo__theme--light .display-4,.scielo__theme--light .h1,.scielo__theme--light .h2,.scielo__theme--light .h3,.scielo__theme--light .h4,.scielo__theme--light .h5,.scielo__theme--light .h6,.scielo__theme--light .lead{color:#00314c}.scielo__theme--light .display-1 .small,.scielo__theme--light .display-1 small,.scielo__theme--light .display-2 .small,.scielo__theme--light .display-2 small,.scielo__theme--light .display-3 .small,.scielo__theme--light .display-3 small,.scielo__theme--light .display-4 .small,.scielo__theme--light .display-4 small,.scielo__theme--light .h1 .small,.scielo__theme--light .h1 small,.scielo__theme--light .h2 .small,.scielo__theme--light .h2 small,.scielo__theme--light .h3 .small,.scielo__theme--light .h3 small,.scielo__theme--light .h4 .small,.scielo__theme--light .h4 small,.scielo__theme--light .h5 .small,.scielo__theme--light .h5 small,.scielo__theme--light .h6 .small,.scielo__theme--light .h6 small,.scielo__theme--light .lead .small,.scielo__theme--light .lead small{color:#333}.display-1,.h1{font-weight:700;font-size:2.5rem;line-height:1.2em;letter-spacing:-.2px}.display-1 .material-icons,.display-1 .material-icons-outlined,.h1 .material-icons,.h1 .material-icons-outlined{vertical-align:text-bottom;font-size:inherit;line-height:inherit;display:inline-block}.display-2,.h2{font-weight:700;font-size:2rem;line-height:1.2em;letter-spacing:-.16px}.display-2 .material-icons,.display-2 .material-icons-outlined,.h2 .material-icons,.h2 .material-icons-outlined{vertical-align:text-bottom;font-size:inherit;line-height:inherit;display:inline-block}.display-3,.h3{font-weight:700;font-size:1.75rem;line-height:1.2em;letter-spacing:-.14px}.display-3 .material-icons,.display-3 .material-icons-outlined,.h3 .material-icons,.h3 .material-icons-outlined{vertical-align:text-bottom;font-size:inherit;line-height:inherit;display:inline-block}.display-4,.h4{font-weight:700;font-size:1.5rem;line-height:1.2em;letter-spacing:-.12px}.display-4 .material-icons,.display-4 .material-icons-outlined,.h4 .material-icons,.h4 .material-icons-outlined{vertical-align:text-bottom;font-size:inherit;line-height:inherit;display:inline-block}.h5,.lead{font-weight:700;font-size:1.3125rem;line-height:1.25em;letter-spacing:0}.h5 .material-icons,.h5 .material-icons-outlined,.lead .material-icons,.lead .material-icons-outlined{vertical-align:text-bottom;font-size:inherit;line-height:inherit;display:inline-block}.h6{font-size:1.03125rem;letter-spacing:0}.h6 .material-icons,.h6 .material-icons-outlined{vertical-align:text-bottom;font-size:inherit;line-height:inherit;display:inline-block}.blockquote{margin:0 0 1rem;padding:.6rem 1.33333rem 0 1.26667rem;border-left:1px solid #efeeec;font-size:1rem}.scielo__theme--dark .blockquote{border-left-color:#414141}.scielo__theme--light .blockquote{border-left-color:#efeeec}cite{display:block;font-size:.86667rem}cite:before{content:"— "}.form-text,.text-muted{color:#6c6b6b!important}.scielo__theme--dark .form-text,.scielo__theme--dark .text-muted{color:#adadad!important}.scielo__theme--light .form-text,.scielo__theme--light .text-muted{color:#6c6b6b!important}.logo-open-access{height:2em;width:auto}.h1 .logo-open-access,.h2 .logo-open-access,.h3 .logo-open-access,.h4 .logo-open-access,.h5 .logo-open-access,.h6 .logo-open-access,h1 .logo-open-access,h2 .logo-open-access,h3 .logo-open-access,h4 .logo-open-access,h5 .logo-open-access,h6 .logo-open-access{height:.9em;width:auto}footer .logo-open-access{height:1.5em;width:auto}.scielo__logo-scielo{background-image:url(../img/logo-scielo-no-label.svg);background-size:contain;background-repeat:no-repeat;display:inline-block;width:4rem;height:4rem}.scielo__theme--dark .scielo__logo-scielo{background-image:url(../img/logo-scielo-no-label-negative.svg)}.scielo__theme--light .scielo__logo-scielo{background-image:url(../img/logo-scielo-no-label.svg)}.scielo__logo-scielo--large{background-image:url(../img/logo-scielo-no-label.svg);background-size:contain;background-repeat:no-repeat;display:inline-block;width:15.625rem;height:15.625rem}.scielo__theme--dark .scielo__logo-scielo--large{background-image:url(../img/logo-scielo-no-label-negative.svg)}.scielo__theme--light .scielo__logo-scielo--large{background-image:url(../img/logo-scielo-no-label.svg)}.scielo__logo-scielo--medium{background-image:url(../img/logo-scielo-no-label.svg);background-size:contain;background-repeat:no-repeat;display:inline-block;width:9.375rem;height:9.375rem}.scielo__theme--dark .scielo__logo-scielo--medium{background-image:url(../img/logo-scielo-no-label-negative.svg)}.scielo__theme--light .scielo__logo-scielo--medium{background-image:url(../img/logo-scielo-no-label.svg)}.scielo__logo-scielo--medium.scielo__logo-scielo--caption{margin-bottom:2rem}.scielo__logo-scielo--medium.scielo__logo-scielo--caption .small,.scielo__logo-scielo--medium.scielo__logo-scielo--caption small{position:relative;font-size:1.875rem;font-family:Arapey,serif;color:#333;font-style:italic;padding-left:60px;border-bottom:1px solid #ccc;padding-bottom:12px;padding-right:5px;top:80px;left:110px}.scielo__theme--dark .scielo__logo-scielo--medium.scielo__logo-scielo--caption .small,.scielo__theme--dark .scielo__logo-scielo--medium.scielo__logo-scielo--caption small{color:#c4c4c4;border-color:rgba(255,255,255,.3)}.scielo__theme--light .scielo__logo-scielo--medium.scielo__logo-scielo--caption .small,.scielo__theme--light .scielo__logo-scielo--medium.scielo__logo-scielo--caption small{color:#333;border-color:#ccc}.scielo__logo-scielo--medium.scielo__logo-scielo--caption span{position:relative;left:50%;transform:translateX(-7.1875rem);top:6.25rem;display:block;font-size:1.5rem;font-family:Arapey,serif;color:#333;white-space:nowrap;width:14.375rem}.scielo__theme--dark .scielo__logo-scielo--medium.scielo__logo-scielo--caption span{color:#c4c4c4}.scielo__theme--light .scielo__logo-scielo--medium.scielo__logo-scielo--caption span{color:#333}.scielo__logo-scielo--small{background-image:url(../img/logo-scielo-no-label.svg);background-size:contain;background-repeat:no-repeat;display:inline-block;width:4rem;height:4rem}.scielo__theme--dark .scielo__logo-scielo--small{background-image:url(../img/logo-scielo-no-label-negative.svg)}.scielo__theme--light .scielo__logo-scielo--small{background-image:url(../img/logo-scielo-no-label.svg)}.scielo__logo-scielo--small.scielo__logo-scielo--caption strong{position:relative;left:4.5rem;top:1.75rem;color:#333}.scielo__theme--dark .scielo__logo-scielo--small.scielo__logo-scielo--caption strong{color:#c4c4c4}.scielo__theme--light .scielo__logo-scielo--small.scielo__logo-scielo--caption strong{color:#333}.scielo__logo-scielo-caption{position:relative;width:16.875rem;height:6.25rem;background-image:url(../img/logo-scielo-no-label.svg);background-repeat:no-repeat;background-size:75px auto;background-position-x:calc(50% - 22px);display:inline-block}@media (min-width:576px){.scielo__logo-scielo-caption{width:21.875rem;height:11.375rem;background-size:150px auto;background-position-x:calc(50% - 55px)}}.scielo__theme--dark .scielo__logo-scielo-caption{background-image:url(../img/logo-scielo-no-label-negative.svg)}.scielo__theme--light .scielo__logo-scielo-caption{background-image:url(../img/logo-scielo-no-label.svg)}.scielo__logo-scielo-caption:after{content:"Scientific Electronic Library Online";position:absolute;top:4.375rem;display:block;font-size:1.2rem;font-family:Arapey,serif;color:#333;white-space:nowrap;width:100%;text-align:center}@media (min-width:576px){.scielo__logo-scielo-caption:after{top:9.375rem;font-size:1.5rem}}.scielo__theme--dark .scielo__logo-scielo-caption:after{color:#c4c4c4}.scielo__theme--light .scielo__logo-scielo-caption:after{color:#333}.scielo__logo-scielo-caption .small,.scielo__logo-scielo-caption small{position:absolute;font-size:1rem;font-family:Arapey,serif;color:#333;font-style:italic;border-bottom:1px solid #ccc;padding-bottom:2px;padding-left:24px;padding-right:0;top:40px;left:8.125rem}@media (min-width:576px){.scielo__logo-scielo-caption .small,.scielo__logo-scielo-caption small{font-size:1.875rem;padding-bottom:12px;padding-left:60px;padding-right:5px;top:80px;left:9.375rem}}.scielo__theme--dark .scielo__logo-scielo-caption .small,.scielo__theme--dark .scielo__logo-scielo-caption small{color:#c4c4c4;border-color:rgba(255,255,255,.3)}.scielo__theme--light .scielo__logo-scielo-caption .small,.scielo__theme--light .scielo__logo-scielo-caption small{color:#333;border-color:#ccc}.scielo__logo-scielo-collection{position:relative;background-image:url(../img/logo-scielo-no-label.svg);background-size:contain;background-repeat:no-repeat;display:inline-block;width:4rem;height:4rem}.scielo__theme--dark .scielo__logo-scielo-collection{background-image:url(../img/logo-scielo-no-label-negative.svg)}.scielo__theme--light .scielo__logo-scielo-collection{background-image:url(../img/logo-scielo-no-label.svg)}.scielo__logo-scielo-collection .small,.scielo__logo-scielo-collection small{position:absolute;left:4.5rem;top:1.75rem;color:#333;font-weight:bolder}.scielo__theme--dark .scielo__logo-scielo-collection .small,.scielo__theme--dark .scielo__logo-scielo-collection small{color:#c4c4c4}.scielo__theme--light .scielo__logo-scielo-collection .small,.scielo__theme--light .scielo__logo-scielo-collection small{color:#333}footer .scielo__logo-scielo,header .scielo__logo-scielo{width:64px;height:64px}.btn{position:relative;display:inline-block;padding:.625rem 1rem;border-radius:.25rem;line-height:1.25rem;height:2.5rem;font-weight:400!important;font-size:1rem;letter-spacing:.1px!important;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;background-position:center;transition:all .8s;margin:0 0 1rem;background-color:#fff;border:1px solid #ccc;color:#333}.btn:focus{box-shadow:0 0 0 .125rem rgba(56,103,206,.25);outline:0}.btn:focus:active{box-shadow:0 0 0 .25rem rgba(56,103,206,.25)}.btn:focus{box-shadow:0 0 0 .125rem rgba(204,204,204,.25);outline:0}.btn:focus:active{box-shadow:0 0 0 .25rem rgba(204,204,204,.25)}.btn:focus{background-color:#fff;color:#333}.btn.active:not(:disabled):not(.disabled){border:1px solid #d9d9d9;background-color:#d9d9d9;color:#333}.show>.btn.dropdown-toggle{background-color:#d9d9d9;color:#333}.btn:hover:not(:disabled):not(.disabled){border:1px solid #d9d9d9;background:#d9d9d9 radial-gradient(circle,transparent 1%,#d9d9d9 1%) center/15000%;color:#333;text-decoration:none}.btn:active:not(:disabled):not(.disabled){border:1px solid #d9d9d9;background-color:#1a1a1a;background-size:100%;transition:background 0s;color:#333}.btn:hover:not(:disabled):not(.disabled){border:1px solid #ccc;background:hoverBgColor radial-gradient(circle,transparent 1%,hoverBgColor 1%) center/15000%;color:#333}.btn:active:not(:disabled):not(.disabled){border:1px solid #ccc;background-color:gray;background-size:100%;transition:background 0s;color:#333}.btn:focus{border-color:#ccc}.scielo__theme--dark .btn{background-color:#c4c4c4;border:1px solid rgba(255,255,255,.3);color:#333}.scielo__theme--dark .btn:focus{background-color:#c4c4c4;color:#333}.scielo__theme--dark .btn.active:not(:disabled):not(.disabled){background-color:#a7a7a7;color:#333}.scielo__theme--dark .btn:hover:not(:disabled):not(.disabled){border:1px solid #dcdcdc;background:#dcdcdc radial-gradient(circle,transparent 1%,#dcdcdc 1%) center/15000%;color:#333;text-decoration:none}.scielo__theme--dark .btn:active:not(:disabled):not(.disabled){border:1px solid #dcdcdc;background-color:#f9f9f9;background-size:100%;transition:background 0s;color:#333}.scielo__theme--dark .btn:hover:not(:disabled):not(.disabled){border:1px solid rgba(255,255,255,.3);background:hoverBgColor radial-gradient(circle,transparent 1%,hoverBgColor 1%) center/15000%;color:#333}.scielo__theme--dark .btn:active:not(:disabled):not(.disabled){border:1px solid rgba(255,255,255,.3);background-color:#f9f9f9;background-size:100%;transition:background 0s;color:#333}.scielo__theme--dark .btn:focus{border-color:rgba(255,255,255,.3)}.scielo__theme--light .btn{background-color:#fff;border-color:1px solid #ccc;color:#333}.scielo__theme--light .btn:focus{background-color:#fff;color:#333}.scielo__theme--light .btn.active:not(:disabled):not(.disabled){background-color:#fff;color:#333}.scielo__theme--light .btn:hover:not(:disabled):not(.disabled){border:1px solid #d9d9d9;background:#d9d9d9 radial-gradient(circle,transparent 1%,#d9d9d9 1%) center/15000%;color:#333;text-decoration:none}.scielo__theme--light .btn:active:not(:disabled):not(.disabled){border:1px solid #d9d9d9;background-color:#1a1a1a;background-size:100%;transition:background 0s;color:#333}.scielo__theme--light .btn:hover:not(:disabled):not(.disabled){border:1px solid #ccc;background:hoverBgColor radial-gradient(circle,transparent 1%,hoverBgColor 1%) center/15000%;color:#333}.scielo__theme--light .btn:active:not(:disabled):not(.disabled){border:1px solid #ccc;background-color:gray;background-size:100%;transition:background 0s;color:#333}.scielo__theme--light .btn:focus{border-color:#ccc}.btn-light,.btn-primary{background-color:#3867ce;border:1px solid #3867ce;color:#fff}.btn-light:focus,.btn-primary:focus{box-shadow:0 0 0 .125rem rgba(56,103,206,.25);outline:0}.btn-light:focus:active,.btn-primary:focus:active{box-shadow:0 0 0 .25rem rgba(56,103,206,.25)}.btn-light:focus,.btn-primary:focus{background-color:#3867ce;color:#fff}.btn-light.active:not(:disabled):not(.disabled),.btn-primary.active:not(:disabled):not(.disabled){border:1px solid #3058af;background-color:#3058af;color:#fff}.show>.btn-light.dropdown-toggle,.show>.btn-primary.dropdown-toggle{background-color:#3058af;color:#fff}.btn-light:hover:not(:disabled):not(.disabled),.btn-primary:hover:not(:disabled):not(.disabled){border:1px solid #3058af;background:#3058af radial-gradient(circle,transparent 1%,#3058af 1%) center/15000%;color:#fff;text-decoration:none}.btn-light:active:not(:disabled):not(.disabled),.btn-primary:active:not(:disabled):not(.disabled){border:1px solid #3058af;background-color:#060a15;background-size:100%;transition:background 0s;color:#fff}.scielo__theme--dark .btn-light,.scielo__theme--dark .btn-primary{background-color:#86acff;border:1px solid #86acff;color:#333}.scielo__theme--dark .btn-light:focus,.scielo__theme--dark .btn-primary:focus{background-color:#86acff;color:#333}.scielo__theme--dark .btn-light.active:not(:disabled):not(.disabled),.scielo__theme--dark .btn-primary.active:not(:disabled):not(.disabled){background-color:#7292d9;color:#333}.scielo__theme--dark .btn-light:hover:not(:disabled):not(.disabled),.scielo__theme--dark .btn-primary:hover:not(:disabled):not(.disabled){border:1px solid #b6cdff;background:#b6cdff radial-gradient(circle,transparent 1%,#b6cdff 1%) center/15000%;color:#333;text-decoration:none}.scielo__theme--dark .btn-light:active:not(:disabled):not(.disabled),.scielo__theme--dark .btn-primary:active:not(:disabled):not(.disabled){border:1px solid #b6cdff;background-color:#f3f7ff;background-size:100%;transition:background 0s;color:#333}.scielo__theme--light .btn-light,.scielo__theme--light .btn-primary{background-color:#3867ce;border-color:1px solid #3867ce;color:#fff}.scielo__theme--light .btn-light:focus,.scielo__theme--light .btn-primary:focus{background-color:#3867ce;color:#fff}.scielo__theme--light .btn-light.active:not(:disabled):not(.disabled),.scielo__theme--light .btn-primary.active:not(:disabled):not(.disabled){background-color:#567ed5;color:#fff}.scielo__theme--light .btn-light:hover:not(:disabled):not(.disabled),.scielo__theme--light .btn-primary:hover:not(:disabled):not(.disabled){border:1px solid #3058af;background:#3058af radial-gradient(circle,transparent 1%,#3058af 1%) center/15000%;color:#fff;text-decoration:none}.scielo__theme--light .btn-light:active:not(:disabled):not(.disabled),.scielo__theme--light .btn-primary:active:not(:disabled):not(.disabled){border:1px solid #3058af;background-color:#060a15;background-size:100%;transition:background 0s;color:#fff}.btn-info{background-color:#2195a9;border:1px solid #2195a9;color:#fff}.btn-info:focus{box-shadow:0 0 0 .125rem rgba(33,149,169,.25);outline:0}.btn-info:focus:active{box-shadow:0 0 0 .25rem rgba(33,149,169,.25)}.btn-info:focus{background-color:#2195a9;color:#fff}.btn-info.active:not(:disabled):not(.disabled){border:1px solid #1c7f90;background-color:#1c7f90;color:#fff}.show>.btn-info.dropdown-toggle{background-color:#1c7f90;color:#fff}.btn-info:hover:not(:disabled):not(.disabled){border:1px solid #1c7f90;background:#1c7f90 radial-gradient(circle,transparent 1%,#1c7f90 1%) center/15000%;color:#fff;text-decoration:none}.btn-info:active:not(:disabled):not(.disabled){border:1px solid #1c7f90;background-color:#030f11;background-size:100%;transition:background 0s;color:#fff}.scielo__theme--dark .btn-info{background-color:#2299ad;border:1px solid #2299ad;color:#333}.scielo__theme--dark .btn-info:focus{background-color:#2299ad;color:#333}.scielo__theme--dark .btn-info.active:not(:disabled):not(.disabled){background-color:#1d8293;color:#333}.scielo__theme--dark .btn-info:hover:not(:disabled):not(.disabled){border:1px solid #7ac2ce;background:#7ac2ce radial-gradient(circle,transparent 1%,#7ac2ce 1%) center/15000%;color:#333;text-decoration:none}.scielo__theme--dark .btn-info:active:not(:disabled):not(.disabled){border:1px solid #7ac2ce;background-color:#e9f5f7;background-size:100%;transition:background 0s;color:#333}.scielo__theme--light .btn-info{background-color:#2195a9;border-color:1px solid #2195a9;color:#fff}.scielo__theme--light .btn-info:focus{background-color:#2195a9;color:#fff}.scielo__theme--light .btn-info.active:not(:disabled):not(.disabled){background-color:#42a5b6;color:#fff}.scielo__theme--light .btn-info:hover:not(:disabled):not(.disabled){border:1px solid #1c7f90;background:#1c7f90 radial-gradient(circle,transparent 1%,#1c7f90 1%) center/15000%;color:#fff;text-decoration:none}.scielo__theme--light .btn-info:active:not(:disabled):not(.disabled){border:1px solid #1c7f90;background-color:#030f11;background-size:100%;transition:background 0s;color:#fff}.btn-dark{background-color:#fff;border:1px solid #ccc;color:#333}.btn-dark:focus{box-shadow:0 0 0 .125rem rgba(204,204,204,.25);outline:0}.btn-dark:focus:active{box-shadow:0 0 0 .25rem rgba(204,204,204,.25)}.btn-dark:focus{background-color:#fff;color:#333}.btn-dark.active:not(:disabled):not(.disabled){border:1px solid #d9d9d9;background-color:#d9d9d9;color:#333}.show>.btn-dark.dropdown-toggle{background-color:#d9d9d9;color:#333}.btn-dark:hover:not(:disabled):not(.disabled){border:1px solid #d9d9d9;background:#d9d9d9 radial-gradient(circle,transparent 1%,#d9d9d9 1%) center/15000%;color:#333;text-decoration:none}.btn-dark:active:not(:disabled):not(.disabled){border:1px solid #d9d9d9;background-color:#1a1a1a;background-size:100%;transition:background 0s;color:#333}.btn-dark:hover:not(:disabled):not(.disabled){border:1px solid #ccc;background:hoverBgColor radial-gradient(circle,transparent 1%,hoverBgColor 1%) center/15000%;color:#333}.btn-dark:active:not(:disabled):not(.disabled){border:1px solid #ccc;background-color:gray;background-size:100%;transition:background 0s;color:#333}.btn-dark:focus{border-color:#ccc}.scielo__theme--dark .btn-dark{background-color:#c4c4c4;border:1px solid rgba(255,255,255,.3);color:#333}.scielo__theme--dark .btn-dark:focus{background-color:#c4c4c4;color:#333}.scielo__theme--dark .btn-dark.active:not(:disabled):not(.disabled){background-color:#a7a7a7;color:#333}.scielo__theme--dark .btn-dark:hover:not(:disabled):not(.disabled){border:1px solid #dcdcdc;background:#dcdcdc radial-gradient(circle,transparent 1%,#dcdcdc 1%) center/15000%;color:#333;text-decoration:none}.scielo__theme--dark .btn-dark:active:not(:disabled):not(.disabled){border:1px solid #dcdcdc;background-color:#f9f9f9;background-size:100%;transition:background 0s;color:#333}.scielo__theme--dark .btn-dark:hover:not(:disabled):not(.disabled){border:1px solid rgba(255,255,255,.3);background:hoverBgColor radial-gradient(circle,transparent 1%,hoverBgColor 1%) center/15000%;color:#333}.scielo__theme--dark .btn-dark:active:not(:disabled):not(.disabled){border:1px solid rgba(255,255,255,.3);background-color:#f9f9f9;background-size:100%;transition:background 0s;color:#333}.scielo__theme--dark .btn-dark:focus{border-color:rgba(255,255,255,.3)}.scielo__theme--light .btn-dark{background-color:#fff;border-color:1px solid #ccc;color:#333}.scielo__theme--light .btn-dark:focus{background-color:#fff;color:#333}.scielo__theme--light .btn-dark.active:not(:disabled):not(.disabled){background-color:#fff;color:#333}.scielo__theme--light .btn-dark:hover:not(:disabled):not(.disabled){border:1px solid #d9d9d9;background:#d9d9d9 radial-gradient(circle,transparent 1%,#d9d9d9 1%) center/15000%;color:#333;text-decoration:none}.scielo__theme--light .btn-dark:active:not(:disabled):not(.disabled){border:1px solid #d9d9d9;background-color:#1a1a1a;background-size:100%;transition:background 0s;color:#333}.scielo__theme--light .btn-dark:hover:not(:disabled):not(.disabled){border:1px solid #ccc;background:hoverBgColor radial-gradient(circle,transparent 1%,hoverBgColor 1%) center/15000%;color:#333}.scielo__theme--light .btn-dark:active:not(:disabled):not(.disabled){border:1px solid #ccc;background-color:gray;background-size:100%;transition:background 0s;color:#333}.scielo__theme--light .btn-dark:focus{border-color:#ccc}.btn-success{background-color:#2c9d45;border:1px solid #2c9d45;color:#fff}.btn-success:focus{box-shadow:0 0 0 .125rem rgba(44,157,69,.25);outline:0}.btn-success:focus:active{box-shadow:0 0 0 .25rem rgba(44,157,69,.25)}.btn-success:focus{background-color:#2c9d45;color:#fff}.btn-success.active:not(:disabled):not(.disabled){border:1px solid #25853b;background-color:#25853b;color:#fff}.show>.btn-success.dropdown-toggle{background-color:#25853b;color:#fff}.btn-success:hover:not(:disabled):not(.disabled){border:1px solid #25853b;background:#25853b radial-gradient(circle,transparent 1%,#25853b 1%) center/15000%;color:#fff;text-decoration:none}.btn-success:active:not(:disabled):not(.disabled){border:1px solid #25853b;background-color:#041007;background-size:100%;transition:background 0s;color:#fff}.scielo__theme--dark .btn-success{background-color:#2c9d45;border:1px solid #2c9d45;color:#333}.scielo__theme--dark .btn-success:focus{background-color:#2c9d45;color:#333}.scielo__theme--dark .btn-success.active:not(:disabled):not(.disabled){background-color:#25853b;color:#333}.scielo__theme--dark .btn-success:hover:not(:disabled):not(.disabled){border:1px solid #80c48f;background:#80c48f radial-gradient(circle,transparent 1%,#80c48f 1%) center/15000%;color:#333;text-decoration:none}.scielo__theme--dark .btn-success:active:not(:disabled):not(.disabled){border:1px solid #80c48f;background-color:#eaf5ec;background-size:100%;transition:background 0s;color:#333}.scielo__theme--light .btn-success{background-color:#2c9d45;border-color:1px solid #2c9d45;color:#fff}.scielo__theme--light .btn-success:focus{background-color:#2c9d45;color:#fff}.scielo__theme--light .btn-success.active:not(:disabled):not(.disabled){background-color:#4cac61;color:#fff}.scielo__theme--light .btn-success:hover:not(:disabled):not(.disabled){border:1px solid #25853b;background:#25853b radial-gradient(circle,transparent 1%,#25853b 1%) center/15000%;color:#fff;text-decoration:none}.scielo__theme--light .btn-success:active:not(:disabled):not(.disabled){border:1px solid #25853b;background-color:#041007;background-size:100%;transition:background 0s;color:#fff}.btn-danger{background-color:#c63800;border:1px solid #c63800;color:#fff}.btn-danger:focus{box-shadow:0 0 0 .125rem rgba(198,56,0,.25);outline:0}.btn-danger:focus:active{box-shadow:0 0 0 .25rem rgba(198,56,0,.25)}.btn-danger:focus{background-color:#c63800;color:#fff}.btn-danger.active:not(:disabled):not(.disabled){border:1px solid #a83000;background-color:#a83000;color:#fff}.show>.btn-danger.dropdown-toggle{background-color:#a83000;color:#fff}.btn-danger:hover:not(:disabled):not(.disabled){border:1px solid #a83000;background:#a83000 radial-gradient(circle,transparent 1%,#a83000 1%) center/15000%;color:#fff;text-decoration:none}.btn-danger:active:not(:disabled):not(.disabled){border:1px solid #a83000;background-color:#140600;background-size:100%;transition:background 0s;color:#fff}.scielo__theme--dark .btn-danger{background-color:#ff7e4a;border:1px solid #ff7e4a;color:#333}.scielo__theme--dark .btn-danger:focus{background-color:#ff7e4a;color:#333}.scielo__theme--dark .btn-danger.active:not(:disabled):not(.disabled){background-color:#d96b3f;color:#333}.scielo__theme--dark .btn-danger:hover:not(:disabled):not(.disabled){border:1px solid #ffb292;background:#ffb292 radial-gradient(circle,transparent 1%,#ffb292 1%) center/15000%;color:#333;text-decoration:none}.scielo__theme--dark .btn-danger:active:not(:disabled):not(.disabled){border:1px solid #ffb292;background-color:#fff2ed;background-size:100%;transition:background 0s;color:#333}.scielo__theme--light .btn-danger{background-color:#c63800;border-color:1px solid #c63800;color:#fff}.scielo__theme--light .btn-danger:focus{background-color:#c63800;color:#fff}.scielo__theme--light .btn-danger.active:not(:disabled):not(.disabled){background-color:#cf5626;color:#fff}.scielo__theme--light .btn-danger:hover:not(:disabled):not(.disabled){border:1px solid #a83000;background:#a83000 radial-gradient(circle,transparent 1%,#a83000 1%) center/15000%;color:#fff;text-decoration:none}.scielo__theme--light .btn-danger:active:not(:disabled):not(.disabled){border:1px solid #a83000;background-color:#140600;background-size:100%;transition:background 0s;color:#fff}.btn-warning{background-color:#b67f00;border:1px solid #b67f00;color:#fff}.btn-warning:focus{box-shadow:0 0 0 .125rem rgba(182,127,0,.25);outline:0}.btn-warning:focus:active{box-shadow:0 0 0 .25rem rgba(182,127,0,.25)}.btn-warning:focus{background-color:#b67f00;color:#fff}.btn-warning.active:not(:disabled):not(.disabled){border:1px solid #9b6c00;background-color:#9b6c00;color:#fff}.show>.btn-warning.dropdown-toggle{background-color:#9b6c00;color:#fff}.btn-warning:hover:not(:disabled):not(.disabled){border:1px solid #9b6c00;background:#9b6c00 radial-gradient(circle,transparent 1%,#9b6c00 1%) center/15000%;color:#fff;text-decoration:none}.btn-warning:active:not(:disabled):not(.disabled){border:1px solid #9b6c00;background-color:#120d00;background-size:100%;transition:background 0s;color:#fff}.scielo__theme--dark .btn-warning{background-color:#b67f00;border:1px solid #b67f00;color:#333}.scielo__theme--dark .btn-warning:focus{background-color:#b67f00;color:#333}.scielo__theme--dark .btn-warning.active:not(:disabled):not(.disabled){background-color:#9b6c00;color:#333}.scielo__theme--dark .btn-warning:hover:not(:disabled):not(.disabled){border:1px solid #d3b266;background:#d3b266 radial-gradient(circle,transparent 1%,#d3b266 1%) center/15000%;color:#333;text-decoration:none}.scielo__theme--dark .btn-warning:active:not(:disabled):not(.disabled){border:1px solid #d3b266;background-color:#f8f2e6;background-size:100%;transition:background 0s;color:#333}.scielo__theme--light .btn-warning{background-color:#b67f00;border-color:1px solid #b67f00;color:#fff}.scielo__theme--light .btn-warning:focus{background-color:#b67f00;color:#fff}.scielo__theme--light .btn-warning.active:not(:disabled):not(.disabled){background-color:#c19226;color:#fff}.scielo__theme--light .btn-warning:hover:not(:disabled):not(.disabled){border:1px solid #9b6c00;background:#9b6c00 radial-gradient(circle,transparent 1%,#9b6c00 1%) center/15000%;color:#fff;text-decoration:none}.scielo__theme--light .btn-warning:active:not(:disabled):not(.disabled){border:1px solid #9b6c00;background-color:#120d00;background-size:100%;transition:background 0s;color:#fff}.btn.disabled,.btn:disabled{pointer-events:auto;cursor:not-allowed;background-color:#f7f6f4;border:1px solid #ccc;color:rgba(0,0,0,.1);opacity:1}.btn.disabled:focus,.btn:disabled:focus{background-color:#f7f6f4;color:rgba(0,0,0,.1)}.btn.disabled.active:not(:disabled):not(.disabled),.btn:disabled.active:not(:disabled):not(.disabled){border:1px solid #d2d1cf;background-color:#d2d1cf;color:rgba(0,0,0,.1)}.show>.btn.disabled.dropdown-toggle,.show>.btn:disabled.dropdown-toggle{background-color:#d2d1cf;color:rgba(0,0,0,.1)}.btn.disabled:hover:not(:disabled):not(.disabled),.btn:disabled:hover:not(:disabled):not(.disabled){border:1px solid #d2d1cf;background:#d2d1cf radial-gradient(circle,transparent 1%,#d2d1cf 1%) center/15000%;color:rgba(0,0,0,.1);text-decoration:none}.btn.disabled:active:not(:disabled):not(.disabled),.btn:disabled:active:not(:disabled):not(.disabled){border:1px solid #d2d1cf;background-color:#191918;background-size:100%;transition:background 0s;color:rgba(0,0,0,.1)}.scielo__theme--dark .btn.disabled,.scielo__theme--dark .btn:disabled{background-color:rgba(255,255,255,.2);border:1px solid rgba(255,255,255,.3);color:#c4c4c4}.scielo__theme--dark .btn.disabled:focus,.scielo__theme--dark .btn:disabled:focus{background-color:rgba(255,255,255,.2);color:#c4c4c4}.scielo__theme--dark .btn.disabled.active:not(:disabled):not(.disabled),.scielo__theme--dark .btn:disabled.active:not(:disabled):not(.disabled){background-color:rgba(99,99,99,.32);color:#c4c4c4}.scielo__theme--dark .btn.disabled:hover:not(:disabled):not(.disabled),.scielo__theme--dark .btn:disabled:hover:not(:disabled):not(.disabled){border:1px solid rgba(255,255,255,.52);background:rgba(255,255,255,.52) radial-gradient(circle,transparent 1%,rgba(255,255,255,.52) 1%) center/15000%;color:#c4c4c4;text-decoration:none}.scielo__theme--dark .btn.disabled:active:not(:disabled):not(.disabled),.scielo__theme--dark .btn:disabled:active:not(:disabled):not(.disabled){border:1px solid rgba(255,255,255,.52);background-color:rgba(255,255,255,.92);background-size:100%;transition:background 0s;color:#c4c4c4}.scielo__theme--light .btn.disabled,.scielo__theme--light .btn:disabled{background-color:#f7f6f4;border-color:1px solid #ccc;color:rgba(0,0,0,.1)}.scielo__theme--light .btn.disabled:focus,.scielo__theme--light .btn:disabled:focus{background-color:#f7f6f4;color:rgba(0,0,0,.1)}.scielo__theme--light .btn.disabled.active:not(:disabled):not(.disabled),.scielo__theme--light .btn:disabled.active:not(:disabled):not(.disabled){background-color:#f8f7f6;color:rgba(0,0,0,.1)}.scielo__theme--light .btn.disabled:hover:not(:disabled):not(.disabled),.scielo__theme--light .btn:disabled:hover:not(:disabled):not(.disabled){border:1px solid #d2d1cf;background:#d2d1cf radial-gradient(circle,transparent 1%,#d2d1cf 1%) center/15000%;color:rgba(0,0,0,.1);text-decoration:none}.scielo__theme--light .btn.disabled:active:not(:disabled):not(.disabled),.scielo__theme--light .btn:disabled:active:not(:disabled):not(.disabled){border:1px solid #d2d1cf;background-color:#191918;background-size:100%;transition:background 0s;color:rgba(0,0,0,.1)}.btn-link{padding-left:1.5rem;padding-right:1.5rem;background-color:transparent;border:1px solid transparent;color:#3867ce;text-decoration:none}.btn-link:focus{box-shadow:0 0 0 .125rem rgba(56,103,206,.25);outline:0}.btn-link:focus:active{box-shadow:0 0 0 .25rem rgba(56,103,206,.25)}.btn-link:focus{background-color:transparent;border-color:transparent;color:#3867ce}.btn-link:hover:not(:disabled):not(.disabled){border:1px solid #fff;background:#fff radial-gradient(circle,transparent 1%,#fff 1%) center/15000%;color:#3867ce;text-decoration:none}.btn-link:active:not(:disabled):not(.disabled){border:1px solid #fff;background-color:rgba(56,103,206,.1);background-size:100%;transition:background 0s;color:#3867ce}.scielo__theme--dark .btn-link{background-color:transparent;border-color:transparent;color:#86acff}.scielo__theme--dark .btn-link:focus{color:#86acff;background-color:transparent;border-color:transparent}.scielo__theme--dark .btn-link:hover:not(:disabled):not(.disabled){border:1px solid #333;background:#333 radial-gradient(circle,transparent 1%,#333 1%) center/15000%;color:#fff;text-decoration:none}.scielo__theme--dark .btn-link:active:not(:disabled):not(.disabled){border:1px solid #333;background-color:rgba(239,238,236,.5);background-size:100%;transition:background 0s;color:#fff}.scielo__theme--light .btn-link{background-color:transparent;color:#3867ce}.scielo__theme--light .btn-link:focus{background-color:transparent;border-color:transparent;color:#3867ce}.scielo__theme--light .btn-link:hover:not(:disabled):not(.disabled){border:1px solid #fff;background:#fff radial-gradient(circle,transparent 1%,#fff 1%) center/15000%;color:#3867ce;text-decoration:none}.scielo__theme--light .btn-link:active:not(:disabled):not(.disabled){border:1px solid #fff;background-color:rgba(56,103,206,.1);background-size:100%;transition:background 0s;color:#3867ce}.btn-group-lg>.btn-link.btn,.btn-link.btn-lg{padding-left:1.875rem;padding-right:1.875rem}.btn-group-sm>.btn-link.btn,.btn-link.btn-sm{padding-left:1.125rem;padding-right:1.125rem}.btn-link.disabled,.btn-link:disabled{background-color:transparent;border:1px solid transparent;color:rgba(0,0,0,.1);opacity:1}.btn-link.disabled:focus,.btn-link:disabled:focus{background-color:transparent;border-color:transparent;color:rgba(0,0,0,.1)}.btn-link.disabled:hover:not(:disabled):not(.disabled),.btn-link:disabled:hover:not(:disabled):not(.disabled){border:1px solid #fff;background:#fff radial-gradient(circle,transparent 1%,#fff 1%) center/15000%;color:rgba(0,0,0,.1);text-decoration:none}.btn-link.disabled:active:not(:disabled):not(.disabled),.btn-link:disabled:active:not(:disabled):not(.disabled){border:1px solid #fff;background-color:rgba(56,103,206,.1);background-size:100%;transition:background 0s;color:rgba(0,0,0,.1)}.scielo__theme--dark .btn-link.disabled,.scielo__theme--dark .btn-link:disabled{background-color:transparent;border-color:transparent;color:rgba(255,255,255,.2)}.scielo__theme--dark .btn-link.disabled:focus,.scielo__theme--dark .btn-link:disabled:focus{color:rgba(255,255,255,.2);background-color:transparent;border-color:transparent}.scielo__theme--dark .btn-link.disabled:hover:not(:disabled):not(.disabled),.scielo__theme--dark .btn-link:disabled:hover:not(:disabled):not(.disabled){border:1px solid #333;background:#333 radial-gradient(circle,transparent 1%,#333 1%) center/15000%;color:#fff;text-decoration:none}.scielo__theme--dark .btn-link.disabled:active:not(:disabled):not(.disabled),.scielo__theme--dark .btn-link:disabled:active:not(:disabled):not(.disabled){border:1px solid #333;background-color:rgba(239,238,236,.5);background-size:100%;transition:background 0s;color:#fff}.scielo__theme--light .btn-link.disabled,.scielo__theme--light .btn-link:disabled{background-color:transparent;color:rgba(0,0,0,.1);opacity:1}.scielo__theme--light .btn-link.disabled:focus,.scielo__theme--light .btn-link:disabled:focus{background-color:transparent;border-color:transparent;color:rgba(0,0,0,.1)}.scielo__theme--light .btn-link.disabled:hover:not(:disabled):not(.disabled),.scielo__theme--light .btn-link:disabled:hover:not(:disabled):not(.disabled){border:1px solid #fff;background:#fff radial-gradient(circle,transparent 1%,#fff 1%) center/15000%;color:rgba(0,0,0,.1);text-decoration:none}.scielo__theme--light .btn-link.disabled:active:not(:disabled):not(.disabled),.scielo__theme--light .btn-link:disabled:active:not(:disabled):not(.disabled){border:1px solid #fff;background-color:rgba(56,103,206,.1);background-size:100%;transition:background 0s;color:rgba(0,0,0,.1)}.btn-link:hover{background:0 0!important;border-color:transparent!important;text-decoration:underline!important}.btn-outline-light,.btn-outline-primary{background-color:transparent;border:1px solid #3867ce;color:#3867ce}.btn-outline-light:focus,.btn-outline-primary:focus{box-shadow:0 0 0 .125rem rgba(56,103,206,.25);outline:0}.btn-outline-light:focus:active,.btn-outline-primary:focus:active{box-shadow:0 0 0 .25rem rgba(56,103,206,.25)}.btn-outline-light:focus,.btn-outline-primary:focus{background-color:transparent;color:#3867ce}.btn-outline-light:focus,.btn-outline-light:hover,.btn-outline-primary:focus,.btn-outline-primary:hover{border-color:#3867ce}.btn-outline-light:hover:not(:disabled):not(.disabled),.btn-outline-primary:hover:not(:disabled):not(.disabled){border:1px solid #3058af;background:#3058af radial-gradient(circle,transparent 1%,#3058af 1%) center/15000%;color:#fff;text-decoration:none}.btn-outline-light:active:not(:disabled):not(.disabled),.btn-outline-primary:active:not(:disabled):not(.disabled){border:1px solid #3058af;background-color:#ebf0fa;background-size:100%;transition:background 0s;color:#fff}.scielo__theme--dark .btn-outline-light,.scielo__theme--dark .btn-outline-primary{background-color:transparent;border-color:#86acff;color:#86acff}.scielo__theme--dark .btn-outline-light:focus,.scielo__theme--dark .btn-outline-primary:focus{background-color:transparent;color:#86acff}.scielo__theme--dark .btn-outline-light:focus,.scielo__theme--dark .btn-outline-light:hover,.scielo__theme--dark .btn-outline-primary:focus,.scielo__theme--dark .btn-outline-primary:hover{border-color:#86acff}.scielo__theme--dark .btn-outline-light:hover:not(:disabled):not(.disabled),.scielo__theme--dark .btn-outline-primary:hover:not(:disabled):not(.disabled){border:1px solid #b6cdff;background:#b6cdff radial-gradient(circle,transparent 1%,#b6cdff 1%) center/15000%;color:#333;text-decoration:none}.scielo__theme--dark .btn-outline-light:active:not(:disabled):not(.disabled),.scielo__theme--dark .btn-outline-primary:active:not(:disabled):not(.disabled){border:1px solid #b6cdff;background-color:#f3f7ff;background-size:100%;transition:background 0s;color:#333}.scielo__theme--light .btn-outline-light,.scielo__theme--light .btn-outline-primary{background-color:transparent;border:1px solid #3867ce;color:#3867ce}.scielo__theme--light .btn-outline-light:focus,.scielo__theme--light .btn-outline-primary:focus{background-color:transparent;color:#3867ce}.scielo__theme--light .btn-outline-light:focus,.scielo__theme--light .btn-outline-light:hover,.scielo__theme--light .btn-outline-primary:focus,.scielo__theme--light .btn-outline-primary:hover{border-color:#3867ce}.scielo__theme--light .btn-outline-light:hover:not(:disabled):not(.disabled),.scielo__theme--light .btn-outline-primary:hover:not(:disabled):not(.disabled){border:1px solid #3058af;background:#3058af radial-gradient(circle,transparent 1%,#3058af 1%) center/15000%;color:#fff;text-decoration:none}.scielo__theme--light .btn-outline-light:active:not(:disabled):not(.disabled),.scielo__theme--light .btn-outline-primary:active:not(:disabled):not(.disabled){border:1px solid #3058af;background-color:#ebf0fa;background-size:100%;transition:background 0s;color:#fff}.btn-outline-dark,.btn-outline-secondary{background-color:transparent;border:1px solid 1px solid #ccc;color:#333}.btn-outline-dark:focus,.btn-outline-secondary:focus{box-shadow:0 0 0 .125rem rgba(204,204,204,.25);outline:0}.btn-outline-dark:focus:active,.btn-outline-secondary:focus:active{box-shadow:0 0 0 .25rem rgba(204,204,204,.25)}.btn-outline-dark:focus,.btn-outline-secondary:focus{background-color:transparent;color:#333}.btn-outline-dark:focus,.btn-outline-dark:hover,.btn-outline-secondary:focus,.btn-outline-secondary:hover{border-color:1px solid #ccc}.btn-outline-dark:hover:not(:disabled):not(.disabled),.btn-outline-secondary:hover:not(:disabled):not(.disabled){border:1px solid #d9d9d9;background:#d9d9d9 radial-gradient(circle,transparent 1%,#d9d9d9 1%) center/15000%;color:#fff;text-decoration:none}.btn-outline-dark:active:not(:disabled):not(.disabled),.btn-outline-secondary:active:not(:disabled):not(.disabled){border:1px solid #d9d9d9;background-color:#fff;background-size:100%;transition:background 0s;color:#fff}.btn-outline-dark:hover:not(:disabled):not(.disabled),.btn-outline-secondary:hover:not(:disabled):not(.disabled){border:1px solid #ccc;background:hoverBgColor radial-gradient(circle,transparent 1%,hoverBgColor 1%) center/15000%;color:#333}.btn-outline-dark:active:not(:disabled):not(.disabled),.btn-outline-secondary:active:not(:disabled):not(.disabled){border:1px solid #ccc;background-color:gray;background-size:100%;transition:background 0s;color:#333}.btn-outline-dark:focus,.btn-outline-secondary:focus{border-color:#ccc}.btn-outline-dark.dropdown-toggle.show,.btn-outline-secondary.dropdown-toggle.show{border-color:#ccc}.scielo__theme--dark .btn-outline-dark,.scielo__theme--dark .btn-outline-secondary{background-color:transparent;border-color:1px solid rgba(255,255,255,.3);color:#c4c4c4}.scielo__theme--dark .btn-outline-dark:focus,.scielo__theme--dark .btn-outline-secondary:focus{background-color:transparent;color:#c4c4c4}.scielo__theme--dark .btn-outline-dark:focus,.scielo__theme--dark .btn-outline-dark:hover,.scielo__theme--dark .btn-outline-secondary:focus,.scielo__theme--dark .btn-outline-secondary:hover{border-color:1px solid rgba(255,255,255,.3)}.scielo__theme--dark .btn-outline-dark:hover:not(:disabled):not(.disabled),.scielo__theme--dark .btn-outline-secondary:hover:not(:disabled):not(.disabled){border:1px solid #dcdcdc;background:#dcdcdc radial-gradient(circle,transparent 1%,#dcdcdc 1%) center/15000%;color:#333;text-decoration:none}.scielo__theme--dark .btn-outline-dark:active:not(:disabled):not(.disabled),.scielo__theme--dark .btn-outline-secondary:active:not(:disabled):not(.disabled){border:1px solid #dcdcdc;background-color:#f9f9f9;background-size:100%;transition:background 0s;color:#333}.scielo__theme--dark .btn-outline-dark:hover:not(:disabled):not(.disabled),.scielo__theme--dark .btn-outline-secondary:hover:not(:disabled):not(.disabled){border:1px solid rgba(255,255,255,.3);background:hoverBgColor radial-gradient(circle,transparent 1%,hoverBgColor 1%) center/15000%;color:#333}.scielo__theme--dark .btn-outline-dark:active:not(:disabled):not(.disabled),.scielo__theme--dark .btn-outline-secondary:active:not(:disabled):not(.disabled){border:1px solid rgba(255,255,255,.3);background-color:#f9f9f9;background-size:100%;transition:background 0s;color:#333}.scielo__theme--dark .btn-outline-dark:focus,.scielo__theme--dark .btn-outline-secondary:focus{border-color:rgba(255,255,255,.3)}.scielo__theme--dark .btn-outline-dark.dropdown-toggle.show,.scielo__theme--dark .btn-outline-secondary.dropdown-toggle.show{background:0 0;color:#c4c4c4}.scielo__theme--dark .btn-outline-dark.dropdown-toggle.show:focus,.scielo__theme--dark .btn-outline-secondary.dropdown-toggle.show:focus{box-shadow:0 0 0 .125rem rgba(204,204,204,.25)}.scielo__theme--light .btn-outline-dark,.scielo__theme--light .btn-outline-secondary{background-color:transparent;border:1px solid 1px solid #ccc;color:#333}.scielo__theme--light .btn-outline-dark:focus,.scielo__theme--light .btn-outline-secondary:focus{background-color:transparent;color:#333}.scielo__theme--light .btn-outline-dark:focus,.scielo__theme--light .btn-outline-dark:hover,.scielo__theme--light .btn-outline-secondary:focus,.scielo__theme--light .btn-outline-secondary:hover{border-color:1px solid #ccc}.scielo__theme--light .btn-outline-dark:hover:not(:disabled):not(.disabled),.scielo__theme--light .btn-outline-secondary:hover:not(:disabled):not(.disabled){border:1px solid #d9d9d9;background:#d9d9d9 radial-gradient(circle,transparent 1%,#d9d9d9 1%) center/15000%;color:#fff;text-decoration:none}.scielo__theme--light .btn-outline-dark:active:not(:disabled):not(.disabled),.scielo__theme--light .btn-outline-secondary:active:not(:disabled):not(.disabled){border:1px solid #d9d9d9;background-color:#fff;background-size:100%;transition:background 0s;color:#fff}.scielo__theme--light .btn-outline-dark:hover:not(:disabled):not(.disabled),.scielo__theme--light .btn-outline-secondary:hover:not(:disabled):not(.disabled){border:1px solid #ccc;background:hoverBgColor radial-gradient(circle,transparent 1%,hoverBgColor 1%) center/15000%;color:#333}.scielo__theme--light .btn-outline-dark:active:not(:disabled):not(.disabled),.scielo__theme--light .btn-outline-secondary:active:not(:disabled):not(.disabled){border:1px solid #ccc;background-color:gray;background-size:100%;transition:background 0s;color:#333}.scielo__theme--light .btn-outline-dark:focus,.scielo__theme--light .btn-outline-secondary:focus{border-color:#ccc}.btn-outline-info{background-color:transparent;border:1px solid #2195a9;color:#2299ad}.btn-outline-info:focus{box-shadow:0 0 0 .125rem rgba(33,149,169,.25);outline:0}.btn-outline-info:focus:active{box-shadow:0 0 0 .25rem rgba(33,149,169,.25)}.btn-outline-info:focus{background-color:transparent;color:#2299ad}.btn-outline-info:focus,.btn-outline-info:hover{border-color:#2195a9}.btn-outline-info:hover:not(:disabled):not(.disabled){border:1px solid #1c7f90;background:#1c7f90 radial-gradient(circle,transparent 1%,#1c7f90 1%) center/15000%;color:#fff;text-decoration:none}.btn-outline-info:active:not(:disabled):not(.disabled){border:1px solid #1c7f90;background-color:#e9f4f6;background-size:100%;transition:background 0s;color:#fff}.scielo__theme--dark .btn-outline-info{background-color:transparent;border-color:#2299ad;color:#2299ad}.scielo__theme--dark .btn-outline-info:focus{background-color:transparent;color:#2299ad}.scielo__theme--dark .btn-outline-info:focus,.scielo__theme--dark .btn-outline-info:hover{border-color:#2299ad}.scielo__theme--dark .btn-outline-info:hover:not(:disabled):not(.disabled){border:1px solid #7ac2ce;background:#7ac2ce radial-gradient(circle,transparent 1%,#7ac2ce 1%) center/15000%;color:#333;text-decoration:none}.scielo__theme--dark .btn-outline-info:active:not(:disabled):not(.disabled){border:1px solid #7ac2ce;background-color:#e9f5f7;background-size:100%;transition:background 0s;color:#333}.scielo__theme--light .btn-outline-info{background-color:transparent;border:1px solid #2195a9;color:#2299ad}.scielo__theme--light .btn-outline-info:focus{background-color:transparent;color:#2299ad}.scielo__theme--light .btn-outline-info:focus,.scielo__theme--light .btn-outline-info:hover{border-color:#2195a9}.scielo__theme--light .btn-outline-info:hover:not(:disabled):not(.disabled){border:1px solid #1c7f90;background:#1c7f90 radial-gradient(circle,transparent 1%,#1c7f90 1%) center/15000%;color:#fff;text-decoration:none}.scielo__theme--light .btn-outline-info:active:not(:disabled):not(.disabled){border:1px solid #1c7f90;background-color:#e9f4f6;background-size:100%;transition:background 0s;color:#fff}.btn-outline-success{background-color:transparent;border:1px solid #2c9d45;color:#2c9d45}.btn-outline-success:focus{box-shadow:0 0 0 .125rem rgba(44,157,69,.25);outline:0}.btn-outline-success:focus:active{box-shadow:0 0 0 .25rem rgba(44,157,69,.25)}.btn-outline-success:focus{background-color:transparent;color:#2c9d45}.btn-outline-success:focus,.btn-outline-success:hover{border-color:#2c9d45}.btn-outline-success:hover:not(:disabled):not(.disabled){border:1px solid #25853b;background:#25853b radial-gradient(circle,transparent 1%,#25853b 1%) center/15000%;color:#fff;text-decoration:none}.btn-outline-success:active:not(:disabled):not(.disabled){border:1px solid #25853b;background-color:#eaf5ec;background-size:100%;transition:background 0s;color:#fff}.scielo__theme--dark .btn-outline-success{background-color:transparent;border-color:#2c9d45;color:#2c9d45}.scielo__theme--dark .btn-outline-success:focus{background-color:transparent;color:#2c9d45}.scielo__theme--dark .btn-outline-success:focus,.scielo__theme--dark .btn-outline-success:hover{border-color:#2c9d45}.scielo__theme--dark .btn-outline-success:hover:not(:disabled):not(.disabled){border:1px solid #80c48f;background:#80c48f radial-gradient(circle,transparent 1%,#80c48f 1%) center/15000%;color:#333;text-decoration:none}.scielo__theme--dark .btn-outline-success:active:not(:disabled):not(.disabled){border:1px solid #80c48f;background-color:#eaf5ec;background-size:100%;transition:background 0s;color:#333}.scielo__theme--light .btn-outline-success{background-color:transparent;border:1px solid #2c9d45;color:#2c9d45}.scielo__theme--light .btn-outline-success:focus{background-color:transparent;color:#2c9d45}.scielo__theme--light .btn-outline-success:focus,.scielo__theme--light .btn-outline-success:hover{border-color:#2c9d45}.scielo__theme--light .btn-outline-success:hover:not(:disabled):not(.disabled){border:1px solid #25853b;background:#25853b radial-gradient(circle,transparent 1%,#25853b 1%) center/15000%;color:#fff;text-decoration:none}.scielo__theme--light .btn-outline-success:active:not(:disabled):not(.disabled){border:1px solid #25853b;background-color:#eaf5ec;background-size:100%;transition:background 0s;color:#fff}.btn-outline-danger{background-color:transparent;border:1px solid #c63800;color:#c63800}.btn-outline-danger:focus{box-shadow:0 0 0 .125rem rgba(198,56,0,.25);outline:0}.btn-outline-danger:focus:active{box-shadow:0 0 0 .25rem rgba(198,56,0,.25)}.btn-outline-danger:focus{background-color:transparent;color:#c63800}.btn-outline-danger:focus,.btn-outline-danger:hover{border-color:#c63800}.btn-outline-danger:hover:not(:disabled):not(.disabled){border:1px solid #a83000;background:#a83000 radial-gradient(circle,transparent 1%,#a83000 1%) center/15000%;color:#fff;text-decoration:none}.btn-outline-danger:active:not(:disabled):not(.disabled){border:1px solid #a83000;background-color:#f9ebe6;background-size:100%;transition:background 0s;color:#fff}.scielo__theme--dark .btn-outline-danger{background-color:transparent;border-color:#ff7e4a;color:#ff7e4a}.scielo__theme--dark .btn-outline-danger:focus{background-color:transparent;color:#ff7e4a}.scielo__theme--dark .btn-outline-danger:focus,.scielo__theme--dark .btn-outline-danger:hover{border-color:#ff7e4a}.scielo__theme--dark .btn-outline-danger:hover:not(:disabled):not(.disabled){border:1px solid #ffb292;background:#ffb292 radial-gradient(circle,transparent 1%,#ffb292 1%) center/15000%;color:#333;text-decoration:none}.scielo__theme--dark .btn-outline-danger:active:not(:disabled):not(.disabled){border:1px solid #ffb292;background-color:#fff2ed;background-size:100%;transition:background 0s;color:#333}.scielo__theme--light .btn-outline-danger{background-color:transparent;border:1px solid #c63800;color:#c63800}.scielo__theme--light .btn-outline-danger:focus{background-color:transparent;color:#c63800}.scielo__theme--light .btn-outline-danger:focus,.scielo__theme--light .btn-outline-danger:hover{border-color:#c63800}.scielo__theme--light .btn-outline-danger:hover:not(:disabled):not(.disabled){border:1px solid #a83000;background:#a83000 radial-gradient(circle,transparent 1%,#a83000 1%) center/15000%;color:#fff;text-decoration:none}.scielo__theme--light .btn-outline-danger:active:not(:disabled):not(.disabled){border:1px solid #a83000;background-color:#f9ebe6;background-size:100%;transition:background 0s;color:#fff}.btn-outline-warning{background-color:transparent;border:1px solid #b67f00;color:#b67f00}.btn-outline-warning:focus{box-shadow:0 0 0 .125rem rgba(182,127,0,.25);outline:0}.btn-outline-warning:focus:active{box-shadow:0 0 0 .25rem rgba(182,127,0,.25)}.btn-outline-warning:focus{background-color:transparent;color:#b67f00}.btn-outline-warning:focus,.btn-outline-warning:hover{border-color:#b67f00}.btn-outline-warning:hover:not(:disabled):not(.disabled){border:1px solid #9b6c00;background:#9b6c00 radial-gradient(circle,transparent 1%,#9b6c00 1%) center/15000%;color:#fff;text-decoration:none}.btn-outline-warning:active:not(:disabled):not(.disabled){border:1px solid #9b6c00;background-color:#f8f2e6;background-size:100%;transition:background 0s;color:#fff}.scielo__theme--dark .btn-outline-warning{background-color:transparent;border-color:#b67f00;color:#b67f00}.scielo__theme--dark .btn-outline-warning:focus{background-color:transparent;color:#b67f00}.scielo__theme--dark .btn-outline-warning:focus,.scielo__theme--dark .btn-outline-warning:hover{border-color:#b67f00}.scielo__theme--dark .btn-outline-warning:hover:not(:disabled):not(.disabled){border:1px solid #d3b266;background:#d3b266 radial-gradient(circle,transparent 1%,#d3b266 1%) center/15000%;color:#333;text-decoration:none}.scielo__theme--dark .btn-outline-warning:active:not(:disabled):not(.disabled){border:1px solid #d3b266;background-color:#f8f2e6;background-size:100%;transition:background 0s;color:#333}.scielo__theme--light .btn-outline-warning{background-color:transparent;border:1px solid #b67f00;color:#b67f00}.scielo__theme--light .btn-outline-warning:focus{background-color:transparent;color:#b67f00}.scielo__theme--light .btn-outline-warning:focus,.scielo__theme--light .btn-outline-warning:hover{border-color:#b67f00}.scielo__theme--light .btn-outline-warning:hover:not(:disabled):not(.disabled){border:1px solid #9b6c00;background:#9b6c00 radial-gradient(circle,transparent 1%,#9b6c00 1%) center/15000%;color:#fff;text-decoration:none}.scielo__theme--light .btn-outline-warning:active:not(:disabled):not(.disabled){border:1px solid #9b6c00;background-color:#f8f2e6;background-size:100%;transition:background 0s;color:#fff}.btn-outline-danger.disabled,.btn-outline-danger:disabled,.btn-outline-dark.disabled,.btn-outline-dark:disabled,.btn-outline-info.disabled,.btn-outline-info:disabled,.btn-outline-light.disabled,.btn-outline-light:disabled,.btn-outline-primary.disabled,.btn-outline-primary:disabled,.btn-outline-secondary.disabled,.btn-outline-secondary:disabled,.btn-outline-success.disabled,.btn-outline-success:disabled,.btn-outline-warning.disabled,.btn-outline-warning:disabled{background-color:transparent;border:1px solid #f7f6f4;color:rgba(0,0,0,.1);opacity:1}.btn-outline-danger.disabled:focus,.btn-outline-danger:disabled:focus,.btn-outline-dark.disabled:focus,.btn-outline-dark:disabled:focus,.btn-outline-info.disabled:focus,.btn-outline-info:disabled:focus,.btn-outline-light.disabled:focus,.btn-outline-light:disabled:focus,.btn-outline-primary.disabled:focus,.btn-outline-primary:disabled:focus,.btn-outline-secondary.disabled:focus,.btn-outline-secondary:disabled:focus,.btn-outline-success.disabled:focus,.btn-outline-success:disabled:focus,.btn-outline-warning.disabled:focus,.btn-outline-warning:disabled:focus{background-color:transparent;color:rgba(0,0,0,.1)}.btn-outline-danger.disabled:focus,.btn-outline-danger.disabled:hover,.btn-outline-danger:disabled:focus,.btn-outline-danger:disabled:hover,.btn-outline-dark.disabled:focus,.btn-outline-dark.disabled:hover,.btn-outline-dark:disabled:focus,.btn-outline-dark:disabled:hover,.btn-outline-info.disabled:focus,.btn-outline-info.disabled:hover,.btn-outline-info:disabled:focus,.btn-outline-info:disabled:hover,.btn-outline-light.disabled:focus,.btn-outline-light.disabled:hover,.btn-outline-light:disabled:focus,.btn-outline-light:disabled:hover,.btn-outline-primary.disabled:focus,.btn-outline-primary.disabled:hover,.btn-outline-primary:disabled:focus,.btn-outline-primary:disabled:hover,.btn-outline-secondary.disabled:focus,.btn-outline-secondary.disabled:hover,.btn-outline-secondary:disabled:focus,.btn-outline-secondary:disabled:hover,.btn-outline-success.disabled:focus,.btn-outline-success.disabled:hover,.btn-outline-success:disabled:focus,.btn-outline-success:disabled:hover,.btn-outline-warning.disabled:focus,.btn-outline-warning.disabled:hover,.btn-outline-warning:disabled:focus,.btn-outline-warning:disabled:hover{border-color:#f7f6f4}.btn-outline-danger.disabled:hover:not(:disabled):not(.disabled),.btn-outline-danger:disabled:hover:not(:disabled):not(.disabled),.btn-outline-dark.disabled:hover:not(:disabled):not(.disabled),.btn-outline-dark:disabled:hover:not(:disabled):not(.disabled),.btn-outline-info.disabled:hover:not(:disabled):not(.disabled),.btn-outline-info:disabled:hover:not(:disabled):not(.disabled),.btn-outline-light.disabled:hover:not(:disabled):not(.disabled),.btn-outline-light:disabled:hover:not(:disabled):not(.disabled),.btn-outline-primary.disabled:hover:not(:disabled):not(.disabled),.btn-outline-primary:disabled:hover:not(:disabled):not(.disabled),.btn-outline-secondary.disabled:hover:not(:disabled):not(.disabled),.btn-outline-secondary:disabled:hover:not(:disabled):not(.disabled),.btn-outline-success.disabled:hover:not(:disabled):not(.disabled),.btn-outline-success:disabled:hover:not(:disabled):not(.disabled),.btn-outline-warning.disabled:hover:not(:disabled):not(.disabled),.btn-outline-warning:disabled:hover:not(:disabled):not(.disabled){border:1px solid #3058af;background:#3058af radial-gradient(circle,transparent 1%,#3058af 1%) center/15000%;color:#fff;text-decoration:none}.btn-outline-danger.disabled:active:not(:disabled):not(.disabled),.btn-outline-danger:disabled:active:not(:disabled):not(.disabled),.btn-outline-dark.disabled:active:not(:disabled):not(.disabled),.btn-outline-dark:disabled:active:not(:disabled):not(.disabled),.btn-outline-info.disabled:active:not(:disabled):not(.disabled),.btn-outline-info:disabled:active:not(:disabled):not(.disabled),.btn-outline-light.disabled:active:not(:disabled):not(.disabled),.btn-outline-light:disabled:active:not(:disabled):not(.disabled),.btn-outline-primary.disabled:active:not(:disabled):not(.disabled),.btn-outline-primary:disabled:active:not(:disabled):not(.disabled),.btn-outline-secondary.disabled:active:not(:disabled):not(.disabled),.btn-outline-secondary:disabled:active:not(:disabled):not(.disabled),.btn-outline-success.disabled:active:not(:disabled):not(.disabled),.btn-outline-success:disabled:active:not(:disabled):not(.disabled),.btn-outline-warning.disabled:active:not(:disabled):not(.disabled),.btn-outline-warning:disabled:active:not(:disabled):not(.disabled){border:1px solid #3058af;background-color:#ebf0fa;background-size:100%;transition:background 0s;color:#fff}.scielo__theme--dark .btn-outline-danger.disabled,.scielo__theme--dark .btn-outline-danger:disabled,.scielo__theme--dark .btn-outline-dark.disabled,.scielo__theme--dark .btn-outline-dark:disabled,.scielo__theme--dark .btn-outline-info.disabled,.scielo__theme--dark .btn-outline-info:disabled,.scielo__theme--dark .btn-outline-light.disabled,.scielo__theme--dark .btn-outline-light:disabled,.scielo__theme--dark .btn-outline-primary.disabled,.scielo__theme--dark .btn-outline-primary:disabled,.scielo__theme--dark .btn-outline-secondary.disabled,.scielo__theme--dark .btn-outline-secondary:disabled,.scielo__theme--dark .btn-outline-success.disabled,.scielo__theme--dark .btn-outline-success:disabled,.scielo__theme--dark .btn-outline-warning.disabled,.scielo__theme--dark .btn-outline-warning:disabled{background-color:transparent;border-color:rgba(255,255,255,.2);color:#c4c4c4}.scielo__theme--dark .btn-outline-danger.disabled:focus,.scielo__theme--dark .btn-outline-danger:disabled:focus,.scielo__theme--dark .btn-outline-dark.disabled:focus,.scielo__theme--dark .btn-outline-dark:disabled:focus,.scielo__theme--dark .btn-outline-info.disabled:focus,.scielo__theme--dark .btn-outline-info:disabled:focus,.scielo__theme--dark .btn-outline-light.disabled:focus,.scielo__theme--dark .btn-outline-light:disabled:focus,.scielo__theme--dark .btn-outline-primary.disabled:focus,.scielo__theme--dark .btn-outline-primary:disabled:focus,.scielo__theme--dark .btn-outline-secondary.disabled:focus,.scielo__theme--dark .btn-outline-secondary:disabled:focus,.scielo__theme--dark .btn-outline-success.disabled:focus,.scielo__theme--dark .btn-outline-success:disabled:focus,.scielo__theme--dark .btn-outline-warning.disabled:focus,.scielo__theme--dark .btn-outline-warning:disabled:focus{background-color:transparent;color:#c4c4c4}.scielo__theme--dark .btn-outline-danger.disabled:focus,.scielo__theme--dark .btn-outline-danger.disabled:hover,.scielo__theme--dark .btn-outline-danger:disabled:focus,.scielo__theme--dark .btn-outline-danger:disabled:hover,.scielo__theme--dark .btn-outline-dark.disabled:focus,.scielo__theme--dark .btn-outline-dark.disabled:hover,.scielo__theme--dark .btn-outline-dark:disabled:focus,.scielo__theme--dark .btn-outline-dark:disabled:hover,.scielo__theme--dark .btn-outline-info.disabled:focus,.scielo__theme--dark .btn-outline-info.disabled:hover,.scielo__theme--dark .btn-outline-info:disabled:focus,.scielo__theme--dark .btn-outline-info:disabled:hover,.scielo__theme--dark .btn-outline-light.disabled:focus,.scielo__theme--dark .btn-outline-light.disabled:hover,.scielo__theme--dark .btn-outline-light:disabled:focus,.scielo__theme--dark .btn-outline-light:disabled:hover,.scielo__theme--dark .btn-outline-primary.disabled:focus,.scielo__theme--dark .btn-outline-primary.disabled:hover,.scielo__theme--dark .btn-outline-primary:disabled:focus,.scielo__theme--dark .btn-outline-primary:disabled:hover,.scielo__theme--dark .btn-outline-secondary.disabled:focus,.scielo__theme--dark .btn-outline-secondary.disabled:hover,.scielo__theme--dark .btn-outline-secondary:disabled:focus,.scielo__theme--dark .btn-outline-secondary:disabled:hover,.scielo__theme--dark .btn-outline-success.disabled:focus,.scielo__theme--dark .btn-outline-success.disabled:hover,.scielo__theme--dark .btn-outline-success:disabled:focus,.scielo__theme--dark .btn-outline-success:disabled:hover,.scielo__theme--dark .btn-outline-warning.disabled:focus,.scielo__theme--dark .btn-outline-warning.disabled:hover,.scielo__theme--dark .btn-outline-warning:disabled:focus,.scielo__theme--dark .btn-outline-warning:disabled:hover{border-color:rgba(255,255,255,.2)}.scielo__theme--dark .btn-outline-danger.disabled:hover:not(:disabled):not(.disabled),.scielo__theme--dark .btn-outline-danger:disabled:hover:not(:disabled):not(.disabled),.scielo__theme--dark .btn-outline-dark.disabled:hover:not(:disabled):not(.disabled),.scielo__theme--dark .btn-outline-dark:disabled:hover:not(:disabled):not(.disabled),.scielo__theme--dark .btn-outline-info.disabled:hover:not(:disabled):not(.disabled),.scielo__theme--dark .btn-outline-info:disabled:hover:not(:disabled):not(.disabled),.scielo__theme--dark .btn-outline-light.disabled:hover:not(:disabled):not(.disabled),.scielo__theme--dark .btn-outline-light:disabled:hover:not(:disabled):not(.disabled),.scielo__theme--dark .btn-outline-primary.disabled:hover:not(:disabled):not(.disabled),.scielo__theme--dark .btn-outline-primary:disabled:hover:not(:disabled):not(.disabled),.scielo__theme--dark .btn-outline-secondary.disabled:hover:not(:disabled):not(.disabled),.scielo__theme--dark .btn-outline-secondary:disabled:hover:not(:disabled):not(.disabled),.scielo__theme--dark .btn-outline-success.disabled:hover:not(:disabled):not(.disabled),.scielo__theme--dark .btn-outline-success:disabled:hover:not(:disabled):not(.disabled),.scielo__theme--dark .btn-outline-warning.disabled:hover:not(:disabled):not(.disabled),.scielo__theme--dark .btn-outline-warning:disabled:hover:not(:disabled):not(.disabled){border:1px solid #b6cdff;background:#b6cdff radial-gradient(circle,transparent 1%,#b6cdff 1%) center/15000%;color:#333;text-decoration:none}.scielo__theme--dark .btn-outline-danger.disabled:active:not(:disabled):not(.disabled),.scielo__theme--dark .btn-outline-danger:disabled:active:not(:disabled):not(.disabled),.scielo__theme--dark .btn-outline-dark.disabled:active:not(:disabled):not(.disabled),.scielo__theme--dark .btn-outline-dark:disabled:active:not(:disabled):not(.disabled),.scielo__theme--dark .btn-outline-info.disabled:active:not(:disabled):not(.disabled),.scielo__theme--dark .btn-outline-info:disabled:active:not(:disabled):not(.disabled),.scielo__theme--dark .btn-outline-light.disabled:active:not(:disabled):not(.disabled),.scielo__theme--dark .btn-outline-light:disabled:active:not(:disabled):not(.disabled),.scielo__theme--dark .btn-outline-primary.disabled:active:not(:disabled):not(.disabled),.scielo__theme--dark .btn-outline-primary:disabled:active:not(:disabled):not(.disabled),.scielo__theme--dark .btn-outline-secondary.disabled:active:not(:disabled):not(.disabled),.scielo__theme--dark .btn-outline-secondary:disabled:active:not(:disabled):not(.disabled),.scielo__theme--dark .btn-outline-success.disabled:active:not(:disabled):not(.disabled),.scielo__theme--dark .btn-outline-success:disabled:active:not(:disabled):not(.disabled),.scielo__theme--dark .btn-outline-warning.disabled:active:not(:disabled):not(.disabled),.scielo__theme--dark .btn-outline-warning:disabled:active:not(:disabled):not(.disabled){border:1px solid #b6cdff;background-color:#f3f7ff;background-size:100%;transition:background 0s;color:#333}.scielo__theme--light .btn-outline-danger.disabled,.scielo__theme--light .btn-outline-danger:disabled,.scielo__theme--light .btn-outline-dark.disabled,.scielo__theme--light .btn-outline-dark:disabled,.scielo__theme--light .btn-outline-info.disabled,.scielo__theme--light .btn-outline-info:disabled,.scielo__theme--light .btn-outline-light.disabled,.scielo__theme--light .btn-outline-light:disabled,.scielo__theme--light .btn-outline-primary.disabled,.scielo__theme--light .btn-outline-primary:disabled,.scielo__theme--light .btn-outline-secondary.disabled,.scielo__theme--light .btn-outline-secondary:disabled,.scielo__theme--light .btn-outline-success.disabled,.scielo__theme--light .btn-outline-success:disabled,.scielo__theme--light .btn-outline-warning.disabled,.scielo__theme--light .btn-outline-warning:disabled{background-color:transparent;border:1px solid #f7f6f4;color:rgba(0,0,0,.1);opacity:1}.scielo__theme--light .btn-outline-danger.disabled:focus,.scielo__theme--light .btn-outline-danger:disabled:focus,.scielo__theme--light .btn-outline-dark.disabled:focus,.scielo__theme--light .btn-outline-dark:disabled:focus,.scielo__theme--light .btn-outline-info.disabled:focus,.scielo__theme--light .btn-outline-info:disabled:focus,.scielo__theme--light .btn-outline-light.disabled:focus,.scielo__theme--light .btn-outline-light:disabled:focus,.scielo__theme--light .btn-outline-primary.disabled:focus,.scielo__theme--light .btn-outline-primary:disabled:focus,.scielo__theme--light .btn-outline-secondary.disabled:focus,.scielo__theme--light .btn-outline-secondary:disabled:focus,.scielo__theme--light .btn-outline-success.disabled:focus,.scielo__theme--light .btn-outline-success:disabled:focus,.scielo__theme--light .btn-outline-warning.disabled:focus,.scielo__theme--light .btn-outline-warning:disabled:focus{background-color:transparent;color:rgba(0,0,0,.1)}.scielo__theme--light .btn-outline-danger.disabled:focus,.scielo__theme--light .btn-outline-danger.disabled:hover,.scielo__theme--light .btn-outline-danger:disabled:focus,.scielo__theme--light .btn-outline-danger:disabled:hover,.scielo__theme--light .btn-outline-dark.disabled:focus,.scielo__theme--light .btn-outline-dark.disabled:hover,.scielo__theme--light .btn-outline-dark:disabled:focus,.scielo__theme--light .btn-outline-dark:disabled:hover,.scielo__theme--light .btn-outline-info.disabled:focus,.scielo__theme--light .btn-outline-info.disabled:hover,.scielo__theme--light .btn-outline-info:disabled:focus,.scielo__theme--light .btn-outline-info:disabled:hover,.scielo__theme--light .btn-outline-light.disabled:focus,.scielo__theme--light .btn-outline-light.disabled:hover,.scielo__theme--light .btn-outline-light:disabled:focus,.scielo__theme--light .btn-outline-light:disabled:hover,.scielo__theme--light .btn-outline-primary.disabled:focus,.scielo__theme--light .btn-outline-primary.disabled:hover,.scielo__theme--light .btn-outline-primary:disabled:focus,.scielo__theme--light .btn-outline-primary:disabled:hover,.scielo__theme--light .btn-outline-secondary.disabled:focus,.scielo__theme--light .btn-outline-secondary.disabled:hover,.scielo__theme--light .btn-outline-secondary:disabled:focus,.scielo__theme--light .btn-outline-secondary:disabled:hover,.scielo__theme--light .btn-outline-success.disabled:focus,.scielo__theme--light .btn-outline-success.disabled:hover,.scielo__theme--light .btn-outline-success:disabled:focus,.scielo__theme--light .btn-outline-success:disabled:hover,.scielo__theme--light .btn-outline-warning.disabled:focus,.scielo__theme--light .btn-outline-warning.disabled:hover,.scielo__theme--light .btn-outline-warning:disabled:focus,.scielo__theme--light .btn-outline-warning:disabled:hover{border-color:#f7f6f4}.scielo__theme--light .btn-outline-danger.disabled:hover:not(:disabled):not(.disabled),.scielo__theme--light .btn-outline-danger:disabled:hover:not(:disabled):not(.disabled),.scielo__theme--light .btn-outline-dark.disabled:hover:not(:disabled):not(.disabled),.scielo__theme--light .btn-outline-dark:disabled:hover:not(:disabled):not(.disabled),.scielo__theme--light .btn-outline-info.disabled:hover:not(:disabled):not(.disabled),.scielo__theme--light .btn-outline-info:disabled:hover:not(:disabled):not(.disabled),.scielo__theme--light .btn-outline-light.disabled:hover:not(:disabled):not(.disabled),.scielo__theme--light .btn-outline-light:disabled:hover:not(:disabled):not(.disabled),.scielo__theme--light .btn-outline-primary.disabled:hover:not(:disabled):not(.disabled),.scielo__theme--light .btn-outline-primary:disabled:hover:not(:disabled):not(.disabled),.scielo__theme--light .btn-outline-secondary.disabled:hover:not(:disabled):not(.disabled),.scielo__theme--light .btn-outline-secondary:disabled:hover:not(:disabled):not(.disabled),.scielo__theme--light .btn-outline-success.disabled:hover:not(:disabled):not(.disabled),.scielo__theme--light .btn-outline-success:disabled:hover:not(:disabled):not(.disabled),.scielo__theme--light .btn-outline-warning.disabled:hover:not(:disabled):not(.disabled),.scielo__theme--light .btn-outline-warning:disabled:hover:not(:disabled):not(.disabled){border:1px solid #3058af;background:#3058af radial-gradient(circle,transparent 1%,#3058af 1%) center/15000%;color:#fff;text-decoration:none}.scielo__theme--light .btn-outline-danger.disabled:active:not(:disabled):not(.disabled),.scielo__theme--light .btn-outline-danger:disabled:active:not(:disabled):not(.disabled),.scielo__theme--light .btn-outline-dark.disabled:active:not(:disabled):not(.disabled),.scielo__theme--light .btn-outline-dark:disabled:active:not(:disabled):not(.disabled),.scielo__theme--light .btn-outline-info.disabled:active:not(:disabled):not(.disabled),.scielo__theme--light .btn-outline-info:disabled:active:not(:disabled):not(.disabled),.scielo__theme--light .btn-outline-light.disabled:active:not(:disabled):not(.disabled),.scielo__theme--light .btn-outline-light:disabled:active:not(:disabled):not(.disabled),.scielo__theme--light .btn-outline-primary.disabled:active:not(:disabled):not(.disabled),.scielo__theme--light .btn-outline-primary:disabled:active:not(:disabled):not(.disabled),.scielo__theme--light .btn-outline-secondary.disabled:active:not(:disabled):not(.disabled),.scielo__theme--light .btn-outline-secondary:disabled:active:not(:disabled):not(.disabled),.scielo__theme--light .btn-outline-success.disabled:active:not(:disabled):not(.disabled),.scielo__theme--light .btn-outline-success:disabled:active:not(:disabled):not(.disabled),.scielo__theme--light .btn-outline-warning.disabled:active:not(:disabled):not(.disabled),.scielo__theme--light .btn-outline-warning:disabled:active:not(:disabled):not(.disabled){border:1px solid #3058af;background-color:#ebf0fa;background-size:100%;transition:background 0s;color:#fff}.btn[class*=scielo__btn-with-icon--left]{padding-left:2rem}.btn[class*=scielo__btn-with-icon--left] [class^=material-icons]{position:absolute;top:50%;transform:translateY(-50%);width:1.25rem;height:1.25rem;font-size:1.25rem;line-height:1.25rem}.btn[class*=scielo__btn-with-icon--left] [class^=material-icons]:before{vertical-align:top}.btn[class*=scielo__btn-with-icon--left] [class^=material-icons]{left:.5rem}.btn[class*=scielo__btn-with-icon--right]{padding-right:2rem}.btn[class*=scielo__btn-with-icon--right] [class^=material-icons]{position:absolute;top:50%;transform:translateY(-50%);width:1.25rem;height:1.25rem;font-size:1.25rem;line-height:1.25rem}.btn[class*=scielo__btn-with-icon--right] [class^=material-icons]:before{vertical-align:top}.btn[class*=scielo__btn-with-icon--right] [class^=material-icons]{right:.5rem}.btn[class*=scielo__btn-with-icon--only]{padding:0;width:2.5rem}.btn[class*=scielo__btn-with-icon--only] [class^=material-icons]{position:absolute;top:50%;transform:translateY(-50%);width:1.25rem;height:1.25rem;font-size:1.25rem;line-height:1.25rem}.btn[class*=scielo__btn-with-icon--only] [class^=material-icons]:before{vertical-align:top}.btn[class*=scielo__btn-with-icon--only] [class^=material-icons]{top:50%;left:50%;transform:translate(-50%,-50%)}.btn.dropdown-toggle[class*=scielo__btn-with-icon--only]{width:3rem;display:flex;justify-content:center;align-items:center;padding-left:2rem;padding-right:1.5rem}.btn.dropdown-toggle[class*=scielo__btn-with-icon--only]:after{right:0;position:static;transform:none;margin:0}.btn.dropdown-toggle[class*=scielo__btn-with-icon--only] [class^=material-icons]{position:static;transform:none}.btn.dropdown-toggle:after{position:absolute;top:50%;transform:translateY(-50%);font-family:'Material Icons Outlined';content:"arrow_drop_down";color:inherit;border:0;line-height:1.5rem!important;text-align:center;right:1rem;width:1.25rem;height:1.25rem;font-size:1.25rem;line-height:1.25rem;transition:.3s all ease-out}.btn.dropdown-toggle[class*=scielo__btn-with-icon--left]{padding-right:1.5rem}.btn.dropdown-toggle[class*=scielo__btn-with-icon--left].btn-link{padding-left:2.625rem;padding-right:2.625rem}.btn.dropdown-toggle[class*=scielo__btn-with-icon--left]:after{right:.3rem}.btn-group-lg>.btn,.btn-group.btn-group-lg>.btn,.btn-lg{padding:.75rem 1.2rem;border-radius:.25rem;line-height:1.5rem;height:3rem;font-size:1.25rem}.btn-group-lg>.btn[class*=scielo__btn-with-icon--left],.btn-lg[class*=scielo__btn-with-icon--left]{padding-left:2.5rem}.btn-group-lg>.btn[class*=scielo__btn-with-icon--left] [class^=material-icons],.btn-lg[class*=scielo__btn-with-icon--left] [class^=material-icons]{position:absolute;top:50%;transform:translateY(-50%);width:1.5rem;height:1.5rem;font-size:1.5rem;line-height:1.5rem}.btn-group-lg>.btn[class*=scielo__btn-with-icon--left] [class^=material-icons]:before,.btn-lg[class*=scielo__btn-with-icon--left] [class^=material-icons]:before{vertical-align:top}.btn-group-lg>.btn[class*=scielo__btn-with-icon--left] [class^=material-icons],.btn-lg[class*=scielo__btn-with-icon--left] [class^=material-icons]{left:.625rem}.btn-group-lg>.btn[class*=scielo__btn-with-icon--right],.btn-lg[class*=scielo__btn-with-icon--right]{padding-right:2.5rem}.btn-group-lg>.btn[class*=scielo__btn-with-icon--right] [class^=material-icons],.btn-lg[class*=scielo__btn-with-icon--right] [class^=material-icons]{position:absolute;top:50%;transform:translateY(-50%);width:1.5rem;height:1.5rem;font-size:1.5rem;line-height:1.5rem}.btn-group-lg>.btn[class*=scielo__btn-with-icon--right] [class^=material-icons]:before,.btn-lg[class*=scielo__btn-with-icon--right] [class^=material-icons]:before{vertical-align:top}.btn-group-lg>.btn[class*=scielo__btn-with-icon--right] [class^=material-icons],.btn-lg[class*=scielo__btn-with-icon--right] [class^=material-icons]{right:.625rem}.btn-group-lg>.btn[class*=scielo__btn-with-icon--only],.btn-lg[class*=scielo__btn-with-icon--only]{padding:0;width:3rem}.btn-group-lg>.btn[class*=scielo__btn-with-icon--only] [class^=material-icons],.btn-lg[class*=scielo__btn-with-icon--only] [class^=material-icons]{position:absolute;top:50%;transform:translateY(-50%);width:1.5rem;height:1.5rem;font-size:1.5rem;line-height:1.5rem}.btn-group-lg>.btn[class*=scielo__btn-with-icon--only] [class^=material-icons]:before,.btn-lg[class*=scielo__btn-with-icon--only] [class^=material-icons]:before{vertical-align:top}.btn-group-lg>.btn[class*=scielo__btn-with-icon--only] [class^=material-icons],.btn-lg[class*=scielo__btn-with-icon--only] [class^=material-icons]{top:50%;left:50%;transform:translate(-50%,-50%)}.btn-group-lg>.dropdown-toggle.btn[class*=scielo__btn-with-icon--only],.btn-lg.dropdown-toggle[class*=scielo__btn-with-icon--only]{width:3rem;padding-left:2.5rem;padding-right:2.5rem;display:flex;justify-content:center;align-items:center}.btn-group-lg>.dropdown-toggle.btn:after,.btn-lg.dropdown-toggle:after{right:1.25rem;width:1.5rem;height:1.5rem;font-size:1.5rem;line-height:1.5rem}.btn-group-sm>.btn,.btn-group.btn-group-sm>.btn,.btn-sm{padding:.5rem .8rem;border-radius:.25rem;line-height:1rem;height:2rem}.dropdown>.btn{padding-right:2.5rem}.dropdown.show .btn{border-top-left-radius:1.5rem;border-top-right-radius:1.5rem;border-bottom-left-radius:.25rem;border-bottom-right-radius:.25rem}.dropdown.show .btn:after{transform:rotate(180deg) translateY(50%)}.dropdown .dropdown-menu{background:#fff;border-color:#ccc}.scielo__theme--dark .dropdown .dropdown-menu{background:#333;border-color:rgba(255,255,255,.3)}.scielo__theme--light .dropdown .dropdown-menu{background:#fff;border-color:#ccc}.dropdown .dropdown-menu>a{color:#333}.dropdown .dropdown-menu>a:hover{background:#f7f6f4}.scielo__theme--dark .dropdown .dropdown-menu>a{color:#c4c4c4}.scielo__theme--dark .dropdown .dropdown-menu>a:hover{background:#414141}.scielo__theme--light .dropdown .dropdown-menu>a{color:#333}.scielo__theme--light .dropdown .dropdown-menu>a:hover{background:#f7f6f4}.copyLink{position:relative;cursor:pointer}.copyLink:after{font-family:'Material Icons Outlined';content:"check";position:absolute;background:#2c9d45;top:100%;left:0;bottom:0;text-align:center;width:100%;color:#fff;font-size:20px;display:block;padding-top:.5rem;text-align:center;transition:all .3s ease-out,text-indent .3s ease-out}.scielo__theme--dark .copyLink:after{background:#2c9d45;color:#333}.scielo__theme--light .copyLink:after{background:#2c9d45;color:#fff}.copyLink.copyFeedback:after{top:0;visibility:visible}.btn-group>.btn{font-weight:400!important;font-size:1rem;letter-spacing:.1px!important;white-space:nowrap}.btn-group>.btn:not(:first-child){border-top-left-radius:0;border-bottom-left-radius:0;margin-left:0}.btn-group>.btn:not(:last-child){border-top-right-radius:0;border-bottom-right-radius:0;margin-right:-1px}.btn-group>.btn:not(:first-child):not(.scielo__btn-with-icon--left):not(.scielo__btn-with-icon--only):not(.arrow-only){padding-left:1.5rem}.btn-group>.btn:not(:last-child):not(.scielo__btn-with-icon--right):not(.scielo__btn-with-icon--only){padding-right:1.5rem}.btn-group>.btn-group>.btn{border-radius:0}.btn-group>.btn-group>.btn.dropdown-toggle{padding-right:3rem!important}.btn-group>.btn-group:first-child>.btn.dropdown-toggle{border-top-left-radius:.25rem;border-bottom-left-radius:.25rem}.btn-group>.btn-group:last-child>.btn.dropdown-toggle{border-top-right-radius:.25rem;border-bottom-right-radius:.25rem}.btn-group>.btn-group:not(:first-child)>.btn{border-top-left-radius:0;border-bottom-left-radius:0;margin-left:0;padding-left:1.5rem}.btn-group>.btn-group:not(:last-child)>.btn{border-top-right-radius:0;border-bottom-right-radius:0;margin-right:0;padding-right:1.5rem}.btn-group.btn-group-sm>.btn:not(:first-child):not(.scielo__btn-with-icon--left):not(.scielo__btn-with-icon--only):not(.arrow-only){padding-left:1.125rem}.btn-group.btn-group-sm>.btn:not(:last-child):not(.scielo__btn-with-icon--right):not(.scielo__btn-with-icon--only){padding-right:1.125rem}.btn-group.btn-group-lg>.btn:not(:first-child):not(.scielo__btn-with-icon--left):not(.scielo__btn-with-icon--only):not(.arrow-only){padding-left:1.875rem}.btn-group.btn-group-lg>.btn:not(:last-child):not(.scielo__btn-with-icon--right):not(.scielo__btn-with-icon--only){padding-right:1.875rem}.btn-group-vertical>.btn{margin-bottom:0}.btn-group-vertical>.btn:first-child{border-top-left-radius:.1875rem;border-top-right-radius:.1875rem}.btn-group-vertical>.btn:last-child{border-bottom-left-radius:.1875rem;border-bottom-right-radius:.1875rem}.btn-group-vertical>.btn-group>.btn{padding-left:3rem!important;padding-right:3rem!important}.btn-group-vertical>.btn-group:first-child>.btn{border-top-left-radius:.1875rem;border-top-right-radius:.1875rem}.btn-group-vertical>.btn-group:last-child>.btn{border-bottom-left-radius:.1875rem;border-bottom-right-radius:.1875rem}.scielo__floatingMenuCtt{position:fixed;bottom:30px;width:auto;height:auto;margin:0}.scielo__floatingMenuCtt .material-icons-outlined{vertical-align:baseline}.scielo__floatingMenuCtt>a{padding-top:6px}.scielo__floatingMenu{transition:all .5s;box-sizing:border-box;z-index:1001;padding-left:0;white-space:nowrap;list-style:none;opacity:1;bottom:auto;opacity:1;margin:0;display:inline-block}.scielo__floatingMenu .fm-wrap{padding:0;margin:0}@media (min-width:576px){.scielo__floatingMenu .fm-wrap{padding:25px 25px 25px 0;margin:-25px -25px -25px 0}}.scielo__floatingMenu .fm-button-child,.scielo__floatingMenu .fm-button-main{display:inline-block;position:relative;padding:0;color:#fff;cursor:pointer;outline:0;background-color:#3867ce;border:none;border-radius:50%;box-shadow:0 0 4px rgba(0,0,0,.14),0 4px 8px rgba(0,0,0,.28);-webkit-user-drag:none}.scielo__theme--dark .scielo__floatingMenu .fm-button-child,.scielo__theme--dark .scielo__floatingMenu .fm-button-main{background:#86acff;color:#333}.scielo__theme--light .scielo__floatingMenu .fm-button-child,.scielo__theme--light .scielo__floatingMenu .fm-button-main{background-color:#3867ce;color:#fff}.scielo__floatingMenu .fm-button-main{width:56px;height:56px;z-index:20;padding-top:17px;padding-left:16px}.scielo__floatingMenu .fm-button-main .glyphFloatMenu{position:absolute;width:53px;height:56px;font-size:32px;line-height:56px;text-align:center}.scielo__floatingMenu .fm-button-main .material-icons-outlined-menu-close,.scielo__floatingMenu .fm-button-main .sci-ico-floatingMenuClose{opacity:0}.scielo__floatingMenu .fm-button-child{width:40px;height:40px;line-height:40px;text-align:center;-webkit-animation-fill-mode:both;-moz-animation-fill-mode:both;-ms-animation-fill-mode:both;-o-animation-fill-mode:both;animation-fill-mode:both;-webkit-animation-duration:.3s;-moz-animation-duration:.3s;-ms-animation-duration:.3s;-o-animation-duration:.3s;animation-duration:.3s;-o-transition:all .3s ease-out,text-indent .3s ease-out;-ms-transition:all .3s ease-out,text-indent .3s ease-out;-moz-transition:all .3s ease-out,text-indent .3s ease-out;-webkit-transition:all .3s ease-out,text-indent .3s ease-out;transition:all .3s ease-out,text-indent .3s ease-out;margin-top:1px;padding-top:6px}.scielo__floatingMenu .fm-button-child .glyphFloatMenu{font-size:24px}.scielo__floatingMenu .fm-button-child:hover{background-color:#3058af}.scielo__theme--dark .scielo__floatingMenu .fm-button-child:hover{background-color:#b6cdff;color:#333}.scielo__theme--light .scielo__floatingMenu .fm-button-child:hover{background-color:#3058af;color:#fff}.scielo__floatingMenu .fm-list{position:absolute;bottom:42px;width:56px;min-height:56px;margin:0}@media (min-width:576px){.scielo__floatingMenu .fm-list{margin-left:8px}}.scielo__floatingMenu .fm-list li{box-sizing:border-box;position:absolute;top:30px;left:8px;display:block;padding:9px 0 2px 0;margin:0;width:50px;height:auto}@media (min-width:576px){.scielo__floatingMenu .fm-list li{top:41px;left:6px}}@media (max-width:575.98px){.scielo__floatingMenu .fm-list li a:after{content:attr(data-mobile-tooltip);color:#fff;background:#333;position:absolute;margin-left:16px;display:inline-block;width:auto;height:auto;text-align:left;padding:5px;line-height:100%;border-radius:4px;font-size:.75rem;margin-top:3px}.scielo__theme--dark .scielo__floatingMenu .fm-list li a:after{background:#fff;color:#333}.scielo__theme--light .scielo__floatingMenu .fm-list li a:after{background:#333;color:#fff}.scielo__floatingMenu .fm-list li a:before{content:'';border-right:4px solid #333;border-left:4px solid transparent;border-top:4px solid transparent;border-bottom:4px solid transparent;margin-left:13px;margin-top:10px;position:absolute;margin-left:32px}.scielo__theme--dark .scielo__floatingMenu .fm-list li a:before{border-right:4px solid #fff}.scielo__theme--light .scielo__floatingMenu .fm-list li a:before{border-right:4px solid #333}}.scielo__floatingMenu:hover .fm-button-main{background-color:#fff;padding-top:17px;padding-left:16px}.scielo__floatingMenu:hover .material-icons-outlined-menu-default,.scielo__floatingMenu:hover .sci-ico-floatingMenuDefault{opacity:0;display:none}.scielo__floatingMenu:hover .material-icons-outlined-menu-close,.scielo__floatingMenu:hover .sci-ico-floatingMenuClose{opacity:1;color:#3867ce}.scielo__floatingMenu.fm-slidein .fm-list li{display:block;opacity:0;transition:all .5s}.scielo__floatingMenu.fm-slidein[data-fm-toogle=hover]:hover .fm-list li{opacity:1}.scielo__floatingMenu.fm-slidein[data-fm-toogle=hover]:hover .fm-list li:nth-child(1){-webkit-transform:translateX(50px);transform:translateX(50px)}@media (max-width:575.98px){.scielo__floatingMenu.fm-slidein[data-fm-toogle=hover]:hover .fm-list li:nth-child(1){-webkit-transform:translateY(-50px);transform:translateY(-50px)}}.scielo__floatingMenu.fm-slidein[data-fm-toogle=hover]:hover .fm-list li:nth-child(2){-webkit-transform:translateX(100px);transform:translateX(100px)}@media (max-width:575.98px){.scielo__floatingMenu.fm-slidein[data-fm-toogle=hover]:hover .fm-list li:nth-child(2){-webkit-transform:translateY(-100px);transform:translateY(-100px)}}.scielo__floatingMenu.fm-slidein[data-fm-toogle=hover]:hover .fm-list li:nth-child(3){-webkit-transform:translateX(150px);transform:translateX(150px)}@media (max-width:575.98px){.scielo__floatingMenu.fm-slidein[data-fm-toogle=hover]:hover .fm-list li:nth-child(3){-webkit-transform:translateY(-150px);transform:translateY(-150px)}}.scielo__floatingMenu.fm-slidein[data-fm-toogle=hover]:hover .fm-list li:nth-child(4){-webkit-transform:translateX(200px);transform:translateX(200px)}@media (max-width:575.98px){.scielo__floatingMenu.fm-slidein[data-fm-toogle=hover]:hover .fm-list li:nth-child(4){-webkit-transform:translateY(-200px);transform:translateY(-200px)}}.scielo__floatingMenu.fm-slidein[data-fm-toogle=hover]:hover .fm-list li:nth-child(5){-webkit-transform:translateX(250px);transform:translateX(250px)}@media (max-width:575.98px){.scielo__floatingMenu.fm-slidein[data-fm-toogle=hover]:hover .fm-list li:nth-child(5){-webkit-transform:translateY(-250px);transform:translateY(-250px)}}.scielo__floatingMenu.fm-slidein[data-fm-toogle=hover]:hover .fm-list li:nth-child(6){-webkit-transform:translateX(300px);transform:translateX(300px)}@media (max-width:575.98px){.scielo__floatingMenu.fm-slidein[data-fm-toogle=hover]:hover .fm-list li:nth-child(6){-webkit-transform:translateY(-300px);transform:translateY(-300px)}}.scielo__floatingMenu.fm-slidein[data-fm-toogle=hover]:hover .fm-list li:nth-child(7){-webkit-transform:translateX(350px);transform:translateX(350px)}@media (max-width:575.98px){.scielo__floatingMenu.fm-slidein[data-fm-toogle=hover]:hover .fm-list li:nth-child(7){-webkit-transform:translateY(-350px);transform:translateY(-350px)}}.scielo__floatingMenuItem{opacity:1;color:#fff;background-color:#3867ce;border-radius:50%;display:inline-block;width:40px;height:40px;line-height:40px;text-align:center;-webkit-animation-fill-mode:both;-moz-animation-fill-mode:both;-ms-animation-fill-mode:both;-o-animation-fill-mode:both;animation-fill-mode:both;-webkit-animation-duration:.3s;-moz-animation-duration:.3s;-ms-animation-duration:.3s;-o-animation-duration:.3s;animation-duration:.3s;-o-transition:all .3s ease-out,text-indent .3s ease-out;-ms-transition:all .3s ease-out,text-indent .3s ease-out;-moz-transition:all .3s ease-out,text-indent .3s ease-out;-webkit-transition:all .3s ease-out,text-indent .3s ease-out;transition:all .3s ease-out,text-indent .3s ease-out;box-shadow:0 0 4px rgba(0,0,0,.14),0 4px 8px rgba(0,0,0,.28);margin-right:4px}.scielo__theme--dark .scielo__floatingMenuItem{background:#86acff;color:#333}.scielo__theme--light .scielo__floatingMenuItem{background:#3867ce;color:#fff}.scielo__floatingMenuItem .glyphFloatMenu{font-size:24px}.scielo__floatingMenuItem:hover{background-color:#3058af;color:#fff}.scielo__theme--dark .scielo__floatingMenuItem:hover{background-color:#b6cdff;color:#333}.scielo__theme--light .scielo__floatingMenuItem:hover{background-color:#3058af;color:#fff}/*! nouislider - 14.1.1 - 12/15/2019 */.noUi-target,.noUi-target *{-webkit-touch-callout:none;-webkit-tap-highlight-color:transparent;-webkit-user-select:none;-ms-touch-action:none;touch-action:none;-ms-user-select:none;-moz-user-select:none;user-select:none;-moz-box-sizing:border-box;box-sizing:border-box}.noUi-target{position:relative}.noUi-base,.noUi-connects{width:100%;height:100%;position:relative;z-index:1}.noUi-connects{overflow:hidden;z-index:0}.noUi-connect,.noUi-origin{will-change:transform;position:absolute;z-index:1;top:0;right:0;-ms-transform-origin:0 0;-webkit-transform-origin:0 0;-webkit-transform-style:preserve-3d;transform-origin:0 0;transform-style:flat}.noUi-connect{height:100%;width:100%}.noUi-origin{height:10%;width:10%}.noUi-txt-dir-rtl.noUi-horizontal .noUi-origin{left:0;right:auto}.noUi-vertical .noUi-origin{width:0}.noUi-horizontal .noUi-origin{height:0}.noUi-handle{-webkit-backface-visibility:hidden;backface-visibility:hidden;position:absolute}.noUi-touch-area{height:100%;width:100%}.noUi-state-tap .noUi-connect,.noUi-state-tap .noUi-origin{-webkit-transition:transform .3s;transition:transform .3s}.noUi-state-drag *{cursor:inherit!important}.noUi-horizontal{height:18px}.noUi-horizontal .noUi-handle{width:34px;height:28px;right:-17px;top:-6px}.noUi-vertical{width:18px}.noUi-vertical .noUi-handle{width:28px;height:34px;right:-6px;top:-17px}.noUi-txt-dir-rtl.noUi-horizontal .noUi-handle{left:-17px;right:auto}.noUi-target{background:#fafafa;border-radius:4px;border:1px solid #d3d3d3;box-shadow:inset 0 1px 1px #f0f0f0,0 3px 6px -5px #bbb}.noUi-connects{border-radius:3px}.noUi-connect{background:#3fb8af}.noUi-draggable{cursor:ew-resize}.noUi-vertical .noUi-draggable{cursor:ns-resize}.noUi-handle{border:1px solid #d9d9d9;border-radius:3px;background:#fff;cursor:default;box-shadow:inset 0 0 1px #fff,inset 0 1px 7px #ebebeb,0 3px 6px -3px #bbb}.noUi-active{box-shadow:inset 0 0 1px #fff,inset 0 1px 7px #ddd,0 3px 6px -3px #bbb}.noUi-handle:after,.noUi-handle:before{content:"";display:block;position:absolute;height:14px;width:1px;background:#e8e7e6;left:14px;top:6px}.noUi-handle:after{left:17px}.noUi-vertical .noUi-handle:after,.noUi-vertical .noUi-handle:before{width:14px;height:1px;left:6px;top:14px}.noUi-vertical .noUi-handle:after{top:17px}[disabled] .noUi-connect{background:#b8b8b8}[disabled] .noUi-handle,[disabled].noUi-handle,[disabled].noUi-target{cursor:not-allowed}.noUi-pips,.noUi-pips *{-moz-box-sizing:border-box;box-sizing:border-box}.noUi-pips{position:absolute;color:#999}.noUi-value{position:absolute;white-space:nowrap;text-align:center}.noUi-value-sub{color:#ccc;font-size:10px}.noUi-marker{position:absolute;background:#ccc}.noUi-marker-sub{background:#aaa}.noUi-marker-large{background:#aaa}.noUi-pips-horizontal{padding:10px 0;height:80px;top:100%;left:0;width:100%}.noUi-value-horizontal{-webkit-transform:translate(-50%,50%);transform:translate(-50%,50%)}.noUi-rtl .noUi-value-horizontal{-webkit-transform:translate(50%,50%);transform:translate(50%,50%)}.noUi-marker-horizontal.noUi-marker{margin-left:-1px;width:2px;height:5px}.noUi-marker-horizontal.noUi-marker-sub{height:10px}.noUi-marker-horizontal.noUi-marker-large{height:15px}.noUi-pips-vertical{padding:0 10px;height:100%;top:0;left:100%}.noUi-value-vertical{-webkit-transform:translate(0,-50%);transform:translate(0,-50%);padding-left:25px}.noUi-rtl .noUi-value-vertical{-webkit-transform:translate(0,50%);transform:translate(0,50%)}.noUi-marker-vertical.noUi-marker{width:5px;height:2px;margin-top:-1px}.noUi-marker-vertical.noUi-marker-sub{width:10px}.noUi-marker-vertical.noUi-marker-large{width:15px}.noUi-tooltip{display:block;position:absolute;border:1px solid #d9d9d9;border-radius:3px;background:#fff;color:#000;padding:5px;text-align:center;white-space:nowrap}.noUi-horizontal .noUi-tooltip{-webkit-transform:translate(-50%,0);transform:translate(-50%,0);left:50%;bottom:120%}.noUi-vertical .noUi-tooltip{-webkit-transform:translate(0,-50%);transform:translate(0,-50%);top:50%;right:120%}.form-range{width:100%;height:1.5rem;padding:0;background-color:transparent;appearance:none}.form-range:focus{outline:0}.form-range:focus::-webkit-slider-thumb{box-shadow:0 0 0 1px #fff,0 0 0 .25rem rgba(56,103,206,.25)}.form-range:focus::-moz-range-thumb{box-shadow:0 0 0 1px #fff,0 0 0 .25rem rgba(56,103,206,.25)}.form-range::-moz-focus-outer{border:0}.form-range::-webkit-slider-thumb{width:1rem;height:1rem;margin-top:-.25rem;border:0;border-radius:1rem;transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;appearance:none;background-color:#3867ce}@media (prefers-reduced-motion:reduce){.form-range::-webkit-slider-thumb{transition:none}}.scielo__theme--dark .form-range::-webkit-slider-thumb{background-color:#86acff}.scielo__theme--light .form-range::-webkit-slider-thumb{background-color:#3867ce}.form-range::-webkit-slider-thumb:active{background-color:#3867ce}.scielo__theme--dark .form-range::-webkit-slider-thumb:active{background-color:#86acff}.scielo__theme--light .form-range::-webkit-slider-thumb:active{background-color:#3867ce}.form-range::-webkit-slider-runnable-track{width:100%;height:.5rem;color:transparent;cursor:pointer;border-color:transparent;border-radius:1rem;background-color:#ccc}.scielo__theme--dark .form-range::-webkit-slider-runnable-track{background-color:rgba(255,255,255,.3)}.scielo__theme--light .form-range::-webkit-slider-runnable-track{background-color:#ccc}.form-range::-moz-range-thumb{width:1rem;height:1rem;border:0;border-radius:1rem;transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;appearance:none;background-color:#3867ce}@media (prefers-reduced-motion:reduce){.form-range::-moz-range-thumb{transition:none}}.scielo__theme--dark .form-range::-moz-range-thumb{background-color:#86acff}.scielo__theme--light .form-range::-moz-range-thumb{background-color:#3867ce}.form-range::-moz-range-thumb:active{background-color:#3867ce}.scielo__theme--dark .form-range::-moz-range-thumb:active{background-color:#86acff}.scielo__theme--light .form-range::-moz-range-thumb:active{background-color:#3867ce}.form-range::-moz-range-track{width:100%;height:.5rem;color:transparent;cursor:pointer;background-color:rgba(0,0,0,.3);border-color:transparent;border-radius:1rem}.form-range:disabled{pointer-events:none}.form-range:disabled::-webkit-slider-thumb{background-color:#ccc}.scielo__theme--dark .form-range:disabled::-webkit-slider-thumb{background-color:#717171}.scielo__theme--light .form-range:disabled::-webkit-slider-thumb{background-color:#ccc}.form-range:disabled::-moz-range-thumb{background-color:#ccc}.scielo__theme--dark .form-range:disabled::-moz-range-thumb{background-color:#717171}.scielo__theme--light .form-range:disabled::-moz-range-thumb{background-color:#ccc}.list-group{display:flex;flex-direction:column;padding-left:0;margin-bottom:0;border-radius:.25rem}.list-group-numbered{list-style-type:none;counter-reset:section}.list-group-numbered>li::before{content:counters(section, ".") ". ";counter-increment:section}.list-group-item-action{width:100%;color:rgba(0,0,0,.7);text-align:inherit}.list-group-item-action:focus,.list-group-item-action:hover{z-index:1;text-decoration:none;background-color:#f7f6f4}.scielo__theme--dark .list-group-item-action:focus,.scielo__theme--dark .list-group-item-action:hover{background-color:#414141}.scielo__theme--light .list-group-item-action:focus,.scielo__theme--light .list-group-item-action:hover{background-color:#f7f6f4}.list-group-item-action:active{color:#393939;background-color:#efeeec}.list-group-item{position:relative;display:block;padding:.5rem 1rem;background-color:#fff;border:1px solid rgba(0,0,0,.125)}.list-group-item:first-child{border-top-left-radius:inherit;border-top-right-radius:inherit}.list-group-item:last-child{border-bottom-right-radius:inherit;border-bottom-left-radius:inherit}.list-group-item.disabled,.list-group-item:disabled{color:rgba(0,0,0,.6);pointer-events:none;background-color:#fff}.list-group-item:hover{background-color:#f7f6f4;text-decoration:none}.scielo__theme--dark .list-group-item:hover{background-color:#414141}.scielo__theme--light .list-group-item:hover{background-color:#f7f6f4}.list-group-item.active{z-index:2;color:#fff;background-color:#3867ce;border-color:#3867ce}.list-group-item+.list-group-item{border-top-width:0}.list-group-item+.list-group-item.active{margin-top:-1px;border-top-width:1px}.list-group-horizontal{flex-direction:row}.list-group-horizontal>.list-group-item:first-child{border-bottom-left-radius:.25rem;border-top-right-radius:0}.list-group-horizontal>.list-group-item:last-child{border-top-right-radius:.25rem;border-bottom-left-radius:0}.list-group-horizontal>.list-group-item.active{margin-top:0}.list-group-horizontal>.list-group-item+.list-group-item{border-top-width:1px;border-left-width:0}.list-group-horizontal>.list-group-item+.list-group-item.active{margin-left:-1px;border-left-width:1px}@media (min-width:576px){.list-group-horizontal-sm{flex-direction:row}.list-group-horizontal-sm>.list-group-item:first-child{border-bottom-left-radius:.25rem;border-top-right-radius:0}.list-group-horizontal-sm>.list-group-item:last-child{border-top-right-radius:.25rem;border-bottom-left-radius:0}.list-group-horizontal-sm>.list-group-item.active{margin-top:0}.list-group-horizontal-sm>.list-group-item+.list-group-item{border-top-width:1px;border-left-width:0}.list-group-horizontal-sm>.list-group-item+.list-group-item.active{margin-left:-1px;border-left-width:1px}}@media (min-width:768px){.list-group-horizontal-md{flex-direction:row}.list-group-horizontal-md>.list-group-item:first-child{border-bottom-left-radius:.25rem;border-top-right-radius:0}.list-group-horizontal-md>.list-group-item:last-child{border-top-right-radius:.25rem;border-bottom-left-radius:0}.list-group-horizontal-md>.list-group-item.active{margin-top:0}.list-group-horizontal-md>.list-group-item+.list-group-item{border-top-width:1px;border-left-width:0}.list-group-horizontal-md>.list-group-item+.list-group-item.active{margin-left:-1px;border-left-width:1px}}@media (min-width:992px){.list-group-horizontal-lg{flex-direction:row}.list-group-horizontal-lg>.list-group-item:first-child{border-bottom-left-radius:.25rem;border-top-right-radius:0}.list-group-horizontal-lg>.list-group-item:last-child{border-top-right-radius:.25rem;border-bottom-left-radius:0}.list-group-horizontal-lg>.list-group-item.active{margin-top:0}.list-group-horizontal-lg>.list-group-item+.list-group-item{border-top-width:1px;border-left-width:0}.list-group-horizontal-lg>.list-group-item+.list-group-item.active{margin-left:-1px;border-left-width:1px}}@media (min-width:1200px){.list-group-horizontal-xl{flex-direction:row}.list-group-horizontal-xl>.list-group-item:first-child{border-bottom-left-radius:.25rem;border-top-right-radius:0}.list-group-horizontal-xl>.list-group-item:last-child{border-top-right-radius:.25rem;border-bottom-left-radius:0}.list-group-horizontal-xl>.list-group-item.active{margin-top:0}.list-group-horizontal-xl>.list-group-item+.list-group-item{border-top-width:1px;border-left-width:0}.list-group-horizontal-xl>.list-group-item+.list-group-item.active{margin-left:-1px;border-left-width:1px}}@media (min-width:1400px){.list-group-horizontal-xxl{flex-direction:row}.list-group-horizontal-xxl>.list-group-item:first-child{border-bottom-left-radius:.25rem;border-top-right-radius:0}.list-group-horizontal-xxl>.list-group-item:last-child{border-top-right-radius:.25rem;border-bottom-left-radius:0}.list-group-horizontal-xxl>.list-group-item.active{margin-top:0}.list-group-horizontal-xxl>.list-group-item+.list-group-item{border-top-width:1px;border-left-width:0}.list-group-horizontal-xxl>.list-group-item+.list-group-item.active{margin-left:-1px;border-left-width:1px}}.list-group-flush{border-radius:0}.list-group-flush>.list-group-item{border-width:0 0 1px}.list-group-flush>.list-group-item:last-child{border-bottom-width:0}.list-group-item-primary{color:#223e7c;background-color:#d7e1f5}.list-group-item-primary.list-group-item-action:focus,.list-group-item-primary.list-group-item-action:hover{color:#223e7c;background-color:#c2cbdd}.list-group-item-primary.list-group-item-action.active{color:#fff;background-color:#223e7c;border-color:#223e7c}.list-group-item-secondary{color:#666;background-color:#fff}.list-group-item-secondary.list-group-item-action:focus,.list-group-item-secondary.list-group-item-action:hover{color:#666;background-color:#e6e6e6}.list-group-item-secondary.list-group-item-action.active{color:#fff;background-color:#666;border-color:#666}.list-group-item-success{color:#1a5e29;background-color:#d5ebda}.list-group-item-success.list-group-item-action:focus,.list-group-item-success.list-group-item-action:hover{color:#1a5e29;background-color:#c0d4c4}.list-group-item-success.list-group-item-action.active{color:#fff;background-color:#1a5e29;border-color:#1a5e29}.list-group-item-info{color:#145965;background-color:#d3eaee}.list-group-item-info.list-group-item-action:focus,.list-group-item-info.list-group-item-action:hover{color:#145965;background-color:#bed3d6}.list-group-item-info.list-group-item-action.active{color:#fff;background-color:#145965;border-color:#145965}.list-group-item-warning{color:#6d4c00;background-color:#f0e5cc}.list-group-item-warning.list-group-item-action:focus,.list-group-item-warning.list-group-item-action:hover{color:#6d4c00;background-color:#d8ceb8}.list-group-item-warning.list-group-item-action.active{color:#fff;background-color:#6d4c00;border-color:#6d4c00}.list-group-item-danger{color:#720;background-color:#f4d7cc}.list-group-item-danger.list-group-item-action:focus,.list-group-item-danger.list-group-item-action:hover{color:#720;background-color:#dcc2b8}.list-group-item-danger.list-group-item-action.active{color:#fff;background-color:#720;border-color:#720}.list-group-item-light{color:#636262;background-color:#fdfdfd}.list-group-item-light.list-group-item-action:focus,.list-group-item-light.list-group-item-action:hover{color:#636262;background-color:#e4e4e4}.list-group-item-light.list-group-item-action.active{color:#fff;background-color:#636262;border-color:#636262}.list-group-item-dark{color:#222;background-color:#d7d7d7}.list-group-item-dark.list-group-item-action:focus,.list-group-item-dark.list-group-item-action:hover{color:#222;background-color:#c2c2c2}.list-group-item-dark.list-group-item-action.active{color:#fff;background-color:#222;border-color:#222}.form-control{display:block;width:100%;padding:.375rem .75rem;font-size:1rem;font-weight:400;line-height:1.5;background-clip:padding-box;border:1px solid rgba(0,0,0,.4);appearance:none;background-color:#fff;color:#393939;border-color:#ccc;border-radius:.25rem;transition:border-color .15s ease-in-out,box-shadow .15s ease-in-out}.scielo__theme--light .form-control{background-color:#fff;color:#333;border-color:#ccc}.scielo__theme--dark .form-control{background-color:#333;color:#c4c4c4;border-color:rgba(255,255,255,.3)}@media (prefers-reduced-motion:reduce){.form-control{transition:none}}.form-control[type=file]{overflow:hidden}.form-control[type=file]:not(:disabled):not([readonly]){cursor:pointer}.form-control:focus{outline:0;background-color:#fff;color:#393939;border-color:rgba(56,103,206,.6);box-shadow:0 0 0 .25rem rgba(56,103,206,.25)}.scielo__theme--light .form-control:focus{background-color:#fff;color:#333;border-color:rgba(56,103,206,.6)}.scielo__theme--dark .form-control:focus{background-color:#333;color:#c4c4c4;border-color:rgba(134,172,255,.6)}.form-control::-webkit-date-and-time-value{height:1.5em}.form-control::placeholder{color:rgba(0,0,0,.6);opacity:1}.scielo__theme--dark .form-control::placeholder{color:#adadad}.scielo__theme--light .form-control::placeholder{color:#6c6b6b}.form-control:disabled,.form-control[readonly]{opacity:1;pointer-events:auto;cursor:not-allowed;background-color:#efeeec;border-color:rgba(0,0,0,.1);color:rgba(0,0,0,.1)}.scielo__theme--dark .form-control:disabled,.scielo__theme--dark .form-control[readonly]{background-color:#414141;border-color:rgba(255,255,255,.2);color:rgba(255,255,255,.2)}.scielo__theme--light .form-control:disabled,.scielo__theme--light .form-control[readonly]{background-color:#efeeec;border-color:rgba(0,0,0,.1);color:rgba(0,0,0,.1)}.form-control:disabled::placeholder,.form-control[readonly]::placeholder{color:rgba(0,0,0,.1)}.scielo__theme--dark .form-control:disabled::placeholder,.scielo__theme--dark .form-control[readonly]::placeholder{color:rgba(255,255,255,.2)}.scielo__theme--light .form-control:disabled::placeholder,.scielo__theme--light .form-control[readonly]::placeholder{color:rgba(0,0,0,.1)}.form-control::file-selector-button{padding:.375rem .75rem;margin:-.375rem -.75rem;margin-inline-end:.75rem;color:#393939;background-color:#efeeec;pointer-events:none;border-color:inherit;border-style:solid;border-width:0;border-inline-end-width:1px;border-radius:0;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;height:48px;background-color:#efeeec;color:#333;border-color:#ccc}@media (prefers-reduced-motion:reduce){.form-control::file-selector-button{transition:none}}.scielo__theme--light .form-control::file-selector-button{background-color:#efeeec;color:#333;border-color:#ccc}.scielo__theme--dark .form-control::file-selector-button{background-color:#414141;color:#c4c4c4;border-color:rgba(255,255,255,.3)}.form-control:hover:not(:disabled):not([readonly])::file-selector-button{background-color:#e3e2e0}.scielo__theme--dark .form-control:hover:not(:disabled):not([readonly])::file-selector-button{background-color:#3b3b3b}.scielo__theme--light .form-control:hover:not(:disabled):not([readonly])::file-selector-button{background-color:#e3e2e0}.form-control::-webkit-file-upload-button{padding:.375rem .75rem;margin:-.375rem -.75rem;margin-inline-end:.75rem;color:#393939;background-color:#efeeec;pointer-events:none;border-color:inherit;border-style:solid;border-width:0;border-inline-end-width:1px;border-radius:0;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;transition:all .8s}@media (prefers-reduced-motion:reduce){.form-control::-webkit-file-upload-button{transition:none}}.form-control:hover:not(:disabled):not([readonly])::-webkit-file-upload-button{background-color:#d9d9d9}.scielo__theme--dark .form-control:hover:not(:disabled):not([readonly])::-webkit-file-upload-button{background-color:#dcdcdc;color:#333}.scielo__theme--light .form-control:hover:not(:disabled):not([readonly])::-webkit-file-upload-button{background-color:#d9d9d9;color:#333}.form-control-plaintext{display:block;width:100%;padding:.375rem 0;margin-bottom:0;line-height:1.5;background-color:transparent;border:solid transparent;border-width:1px 0;color:#6c6b6b;outline:0}.scielo__theme--dark .form-control-plaintext{color:#adadad}.scielo__theme--light .form-control-plaintext{color:#6c6b6b}.form-control-plaintext.form-control-lg,.form-control-plaintext.form-control-sm{padding-right:0;padding-left:0}.form-control-sm{min-height:calc(1.5em + .5rem + 2px);padding:.25rem .5rem;font-size:.875rem;border-radius:.12 .5rem}.form-control-sm::file-selector-button{padding:.25rem .5rem;margin:-.25rem -.5rem;margin-inline-end:.5rem}.form-control-sm::-webkit-file-upload-button{padding:.25rem .5rem;margin:-.25rem -.5rem;margin-inline-end:.5rem}.form-control-lg{min-height:calc(1.5em + 1rem + 2px);padding:.5rem 1rem;font-size:1.25rem;border-radius:.5rem}.form-control-lg::file-selector-button{padding:.5rem 1rem;margin:-.5rem -1rem;margin-inline-end:1rem}.form-control-lg::-webkit-file-upload-button{padding:.5rem 1rem;margin:-.5rem -1rem;margin-inline-end:1rem}textarea.form-control{min-height:calc(1.5em + .75rem + 2px);height:calc(1.5em + .75rem + 2px)}textarea.form-control-sm{min-height:calc(1.5em + .5rem + 2px)}textarea.form-control-lg{min-height:calc(1.5em + 1rem + 2px)}.form-control-color{max-width:3rem;height:auto;padding:.375rem}.form-control-color:not(:disabled):not([readonly]){cursor:pointer}.form-control-color::-moz-color-swatch{height:1.5em;border-radius:.25rem}.form-control-color::-webkit-color-swatch{height:1.5em;border-radius:.25rem}.form-select{display:block;width:100%;padding:.375rem 1rem .375rem .75rem;font-size:1rem;font-weight:400;line-height:1.5;background-repeat:no-repeat;background-position:right .75rem center;background-size:16px 12px;border:1px solid rgba(0,0,0,.4);border-radius:.25rem;appearance:none;background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='%23414141' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M2 5l6 6 6-6'/%3e%3c/svg%3e");background-color:#fff;color:#393939;border-color:#ccc}.scielo__theme--light .form-select{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='%23414141' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M2 5l6 6 6-6'/%3e%3c/svg%3e");background-color:#fff;color:#333;border-color:#ccc}.scielo__theme--dark .form-select{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='%23C4C4C4' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M2 5l6 6 6-6'/%3e%3c/svg%3e");background-color:#333;color:#c4c4c4;border-color:rgba(255,255,255,.3)}.form-select:focus{outline:0;box-shadow:0 0 0 .25rem rgba(56,103,206,.25);border-color:rgba(56,103,206,.6)}.scielo__theme--dark .form-select:focus{border-color:rgba(134,172,255,.6)}.scielo__theme--light .form-select:focus{border-color:rgba(56,103,206,.6)}.form-select[multiple],.form-select[size]:not([size="1"]){padding-right:.75rem;background-image:none}.form-select:disabled{pointer-events:auto;cursor:not-allowed;background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='rgba%280, 0, 0, 0.1%29' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M2 5l6 6 6-6'/%3e%3c/svg%3e");background-color:#efeeec;border-color:rgba(0,0,0,.1);color:rgba(0,0,0,.1)}.scielo__theme--dark .form-select:disabled{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='rgba%28255, 255, 255, 0.2%29' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M2 5l6 6 6-6'/%3e%3c/svg%3e");background-color:#414141;border-color:rgba(255,255,255,.2);color:rgba(255,255,255,.2)}.scielo__theme--light .form-select:disabled{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='rgba%280, 0, 0, 0.1%29' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M2 5l6 6 6-6'/%3e%3c/svg%3e");background-color:#efeeec;border-color:rgba(0,0,0,.1);color:rgba(0,0,0,.1)}.form-select:-moz-focusring{color:transparent;text-shadow:0 0 0 #393939}.form-select-sm{padding-top:.25rem;padding-bottom:.25rem;padding-left:.5rem;font-size:.875rem}.form-select-lg{padding-top:.5rem;padding-bottom:.5rem;padding-left:1rem;font-size:1.25rem}.form-check{display:block;min-height:1.5rem;padding-left:1.5em;margin-bottom:.125rem}.form-check .form-check-input{float:left;margin-left:-1.5em}.form-check-input{width:1em;height:1em;margin-top:.25em;vertical-align:top;background-repeat:no-repeat;background-position:center;background-size:contain;appearance:none;color-adjust:exact;transition:background-color .15s ease-in-out,background-position .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;border-color:#ccc;background-color:#fff}@media (prefers-reduced-motion:reduce){.form-check-input{transition:none}}.scielo__theme--dark .form-check-input{border-color:rgba(255,255,255,.3);background-color:#333}.scielo__theme--light .form-check-input{border-color:#ccc;background-color:#fff}.form-check-input[type=checkbox]{border-radius:.25em}.form-check-input[type=radio]{border-radius:50%}.form-check-input:active{filter:brightness(90%)}.form-check-input:focus{outline:0;box-shadow:0 0 0 .25rem rgba(56,103,206,.25);border-color:#ccc}.scielo__theme--dark .form-check-input:focus{border-color:rgba(255,255,255,.3)}.scielo__theme--light .form-check-input:focus{border-color:#ccc}.form-check-input:checked{background-color:#3867ce;border-color:#3867ce}.scielo__theme--dark .form-check-input:checked{background-color:#86acff;border-color:#86acff}.scielo__theme--light .form-check-input:checked{background-color:#3867ce;border-color:#3867ce}.form-check-input:checked[type=checkbox]{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20'%3e%3cpath fill='none' stroke='%23fff' stroke-linecap='round' stroke-linejoin='round' stroke-width='3' d='M6 10l3 3l6-6'/%3e%3c/svg%3e")}.scielo__theme--dark .form-check-input:checked[type=checkbox]{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20'%3e%3cpath fill='none' stroke='%23333' stroke-linecap='round' stroke-linejoin='round' stroke-width='3' d='M6 10l3 3l6-6'/%3e%3c/svg%3e")}.scielo__theme--light .form-check-input:checked[type=checkbox]{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20'%3e%3cpath fill='none' stroke='%23fff' stroke-linecap='round' stroke-linejoin='round' stroke-width='3' d='M6 10l3 3l6-6'/%3e%3c/svg%3e")}.form-check-input:checked[type=radio]{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='2' fill='%23fff'/%3e%3c/svg%3e")}.scielo__theme--dark .form-check-input:checked[type=radio]{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='2' fill='%23333'/%3e%3c/svg%3e")}.scielo__theme--light .form-check-input:checked[type=radio]{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='2' fill='%23fff'/%3e%3c/svg%3e")}.form-check-input[type=checkbox]:indeterminate{background-color:#3867ce;border-color:#3867ce;background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20'%3e%3cpath fill='none' stroke='%23fff' stroke-linecap='round' stroke-linejoin='round' stroke-width='3' d='M6 10h8'/%3e%3c/svg%3e")}.scielo__theme--dark .form-check-input[type=checkbox]:indeterminate{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20'%3e%3cpath fill='none' stroke='%23333' stroke-linecap='round' stroke-linejoin='round' stroke-width='3' d='M6 10h8'/%3e%3c/svg%3e")}.scielo__theme--light .form-check-input[type=checkbox]:indeterminate{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20'%3e%3cpath fill='none' stroke='%23fff' stroke-linecap='round' stroke-linejoin='round' stroke-width='3' d='M6 10h8'/%3e%3c/svg%3e")}.form-check-input:disabled{pointer-events:none;filter:none;opacity:.5}.form-check-input:disabled~.form-check-label,.form-check-input[disabled]~.form-check-label{opacity:.5}.form-check-inline{display:inline-block;margin-right:1rem}.btn-check{position:absolute;clip:rect(0,0,0,0);pointer-events:none}.btn-check:disabled+.btn,.btn-check[disabled]+.btn{pointer-events:none;filter:none;opacity:.65}.form-switch{padding-left:2.5em}.form-switch .form-check-input{width:2em;margin-left:-2.5em;background-position:left center;border-radius:2em;transition:background-position .15s ease-in-out;background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='%23ccc'/%3e%3c/svg%3e");background-color:#fff;border-color:#ccc}@media (prefers-reduced-motion:reduce){.form-switch .form-check-input{transition:none}}.scielo__theme--dark .form-switch .form-check-input{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='rgba%28255, 255, 255, 0.3%29'/%3e%3c/svg%3e");background-color:#333;border-color:rgba(255,255,255,.3)}.scielo__theme--light .form-switch .form-check-input{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='%23ccc'/%3e%3c/svg%3e");background-color:#fff;border-color:#ccc}.form-switch .form-check-input:focus{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='%23ccc'/%3e%3c/svg%3e")}.scielo__theme--dark .form-switch .form-check-input:focus{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='rgba%28255, 255, 255, 0.3%29'/%3e%3c/svg%3e")}.scielo__theme--light .form-switch .form-check-input:focus{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='%23ccc'/%3e%3c/svg%3e")}.form-switch .form-check-input:checked{background-position:right center;background-color:#3867ce;border-color:#3867ce;background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='%23fff'/%3e%3c/svg%3e")}.scielo__theme--dark .form-switch .form-check-input:checked{background-color:#86acff;border-color:#86acff}.scielo__theme--light .form-switch .form-check-input:checked{background-color:#3867ce;border-color:#3867ce}.scielo__theme--dark .form-switch .form-check-input:checked{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='%23333'/%3e%3c/svg%3e")}.scielo__theme--light .form-switch .form-check-input:checked{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='%23fff'/%3e%3c/svg%3e")}.scielo__form-file{position:relative;height:3rem;overflow:hidden}.scielo__form-file input{-webkit-appearance:none;appearance:none;position:absolute;transform:translateY(-500%);top:0;width:auto}.scielo__form-file:after{content:b3__ico--char(attach_file);position:absolute;top:50%;right:.75rem;transform:translateY(-50%);font-family:b3-icons;color:#fff;font-size:1.5rem;pointer-events:none}.scielo__theme--light .scielo__form-file:after{color:#fff}.scielo__theme--dark .scielo__form-file:after{color:#eee}.scielo__form-file label{height:3rem;left:0;width:100%;top:0;transform:translateY(0);padding:0 3rem 0 .75rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;cursor:pointer;border-bottom:1px solid rgba(56,103,206,.25);line-height:3rem;pointer-events:all}.scielo__form-file.has-placeholder:not(.small)>label,.scielo__form-file.has-value:not(.small)>label,.scielo__form-file.is-focused:not(.small)>label{font-weight:400;font-size:1rem;line-height:1.2em;line-height:3rem;top:0;color:#333}.scielo__theme--dark .scielo__form-file.has-placeholder:not(.small)>label,.scielo__theme--dark .scielo__form-file.has-value:not(.small)>label,.scielo__theme--dark .scielo__form-file.is-focused:not(.small)>label{color:#c4c4c4}.scielo__theme--light .scielo__form-file.has-placeholder:not(.small)>label,.scielo__theme--light .scielo__form-file.has-value:not(.small)>label,.scielo__theme--light .scielo__form-file.is-focused:not(.small)>label{color:#333}.input-group{border-radius:3px;flex-flow:row nowrap;height:3rem}.input-group.is-search{border-radius:3rem}.input-group-text{border-radius:3px;font-weight:400;font-size:1rem;line-height:1.2em;padding-top:0;padding-bottom:0;color:#333;background-color:#efeeec;border-color:#ccc;color:#333}.scielo__theme--dark .input-group-text{color:#c4c4c4}.scielo__theme--light .input-group-text{color:#333}.scielo__theme--dark .input-group-text{background-color:#414141;border-color:rgba(255,255,255,.3);color:#c4c4c4}.scielo__theme--light .input-group-text{background-color:#efeeec;border-color:#ccc;color:#333}.input-group-text span[class^=b3__ico--]{font-size:1.5rem}.input-group-text .scielo__form-checkbox~label,.input-group-text .scielo__form-radio~label{margin-left:0;margin-right:0}.input-group .scielo__form-control input,.input-group .scielo__form-control label,.input-group .scielo__form-control select,.input-group .scielo__form-control textarea,.input-group .scielo__form-file input,.input-group .scielo__form-file label,.input-group .scielo__form-file select,.input-group .scielo__form-file textarea,.input-group .scielo__form-select input,.input-group .scielo__form-select label,.input-group .scielo__form-select select,.input-group .scielo__form-select textarea{border-bottom:none}.input-group .scielo__form-control:first-child,.input-group .scielo__form-file:first-child,.input-group .scielo__form-select:first-child{border-top-right-radius:0;border-bottom-right-radius:0}.input-group .scielo__form-control:last-child,.input-group .scielo__form-file:last-child,.input-group .scielo__form-select:last-child{border-top-left-radius:0;border-bottom-left-radius:0}.input-group .scielo__form-control,.input-group .scielo__form-file,.input-group .scielo__form-select{flex:1 1 auto}.input-group .btn{margin-bottom:0;padding:.75rem 1.2rem;border-radius:.25rem;line-height:1.5rem;height:3rem;padding-left:1.5rem;padding-right:1.5rem}.input-group .btn.dropdown-toggle:not(.dropdown-toggle-split){padding-right:2.5rem}.input-group .btn.dropdown-toggle:after{right:.9375rem;width:1.25rem;height:1.25rem;font-size:1.25rem;line-height:1.25rem}.input-group-lg>.btn,.input-group-lg>.form-control,.input-group-lg>.form-select,.input-group-lg>.input-group-text{padding:.5rem 1rem;font-size:1.25rem;border-radius:.5rem}.input-group-sm>.btn,.input-group-sm>.form-control,.input-group-sm>.form-select,.input-group-sm>.input-group-text{padding:.25rem .5rem;font-size:.875rem;border-radius:.12 .5rem}.input-group-lg>.form-select,.input-group-sm>.form-select{padding-right:1.75rem}.picker{font-size:16px;text-align:left;line-height:1.2;color:#000;position:absolute;z-index:10000;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;outline:0}.picker__input{cursor:default}.picker__input.picker__input--active{border-color:#0089ec}.picker__holder{width:100%;overflow-y:auto;-webkit-overflow-scrolling:touch}/*! + * Default mobile-first, responsive styling for pickadate.js + * Demo: http://amsul.github.io/pickadate.js + */.picker__frame,.picker__holder{top:0;bottom:0;left:0;right:0;-ms-transform:translateY(100%);transform:translateY(100%)}.picker__holder{position:fixed;transition:background .15s ease-out,transform 0s .15s;-webkit-backface-visibility:hidden}.picker__frame{position:absolute;margin:0 auto;min-width:256px;max-width:666px;width:100%;-moz-opacity:0;opacity:0;transition:all .15s ease-out}@media (min-height:33.875em){.picker__frame{overflow:visible;top:auto;bottom:-100%;max-height:80%}}@media (min-height:40.125em){.picker__frame{margin-bottom:7.5%}}.picker__wrap{display:table;width:100%;height:100%}@media (min-height:33.875em){.picker__wrap{display:block}}.picker__box{background:#fff;display:table-cell;vertical-align:middle}@media (min-height:26.5em){.picker__box{font-size:1.25em}}@media (min-height:33.875em){.picker__box{display:block;font-size:1.33em;border:1px solid #777;border-top-color:#898989;border-bottom-width:0;border-radius:5px 5px 0 0;box-shadow:0 12px 36px 16px rgba(0,0,0,.24)}}@media (min-height:40.125em){.picker__box{font-size:1.5em;border-bottom-width:1px;border-radius:5px}}.picker--opened .picker__holder{-ms-transform:translateY(0);transform:translateY(0);background:0 0;zoom:1;background:rgba(0,0,0,.32);transition:background .15s ease-out}.picker--opened .picker__frame{-ms-transform:translateY(0);transform:translateY(0);-moz-opacity:1;opacity:1}@media (min-height:33.875em){.picker--opened .picker__frame{top:auto;bottom:0}}.picker__box{padding:0 1em}.picker__header{text-align:center;position:relative;margin-top:.75em}.picker__month,.picker__year{font-weight:500;display:inline-block;margin-left:.25em;margin-right:.25em}.picker__year{color:#999;font-size:.8em;font-style:italic}.picker__select--month,.picker__select--year{border:1px solid #b7b7b7;height:2em;padding:.5em;margin-left:.25em;margin-right:.25em}@media (min-width:24.5em){.picker__select--month,.picker__select--year{margin-top:-.5em}}.picker__select--month{width:35%}.picker__select--year{width:22.5%}.picker__select--month:focus,.picker__select--year:focus{border-color:#0089ec}.picker__nav--next,.picker__nav--prev{position:absolute;padding:.5em 1.25em;width:1em;height:1em;box-sizing:content-box;top:-.25em}@media (min-width:24.5em){.picker__nav--next,.picker__nav--prev{top:-.33em}}.picker__nav--prev{left:-1em;padding-right:1.25em}@media (min-width:24.5em){.picker__nav--prev{padding-right:1.5em}}.picker__nav--next{right:-1em;padding-left:1.25em}@media (min-width:24.5em){.picker__nav--next{padding-left:1.5em}}.picker__nav--next:before,.picker__nav--prev:before{content:" ";border-top:.5em solid transparent;border-bottom:.5em solid transparent;border-right:.75em solid #000;width:0;height:0;display:block;margin:0 auto}.picker__nav--next:before{border-right:0;border-left:.75em solid #000}.picker__nav--next:hover,.picker__nav--prev:hover{cursor:pointer;color:#000;background:#b1dcfb}.picker__nav--disabled,.picker__nav--disabled:before,.picker__nav--disabled:before:hover,.picker__nav--disabled:hover{cursor:default;background:0 0;border-right-color:#f5f5f5;border-left-color:#f5f5f5}.picker__table{text-align:center;border-collapse:collapse;border-spacing:0;table-layout:fixed;font-size:inherit;width:100%;margin-top:.75em;margin-bottom:.5em}@media (min-height:33.875em){.picker__table{margin-bottom:.75em}}.picker__table td{margin:0;padding:0}.picker__weekday{width:14.285714286%;font-size:.75em;padding-bottom:.25em;color:#999;font-weight:500}@media (min-height:33.875em){.picker__weekday{padding-bottom:.5em}}.picker__day{padding:.3125em 0;font-weight:200;border:1px solid transparent}.picker__day--today{position:relative}.picker__day--today:before{content:" ";position:absolute;top:2px;right:2px;width:0;height:0;border-top:.5em solid #0059bc;border-left:.5em solid transparent}.picker__day--disabled:before{border-top-color:#aaa}.picker__day--outfocus{color:#ddd}.picker__day--infocus:hover,.picker__day--outfocus:hover{cursor:pointer;color:#000;background:#b1dcfb}.picker__day--highlighted{border-color:#0089ec}.picker--focused .picker__day--highlighted,.picker__day--highlighted:hover{cursor:pointer;color:#000;background:#b1dcfb}.picker--focused .picker__day--selected,.picker__day--selected,.picker__day--selected:hover{background:#0089ec;color:#fff}.picker--focused .picker__day--disabled,.picker__day--disabled,.picker__day--disabled:hover{background:#f5f5f5;border-color:#f5f5f5;color:#ddd;cursor:default}.picker__day--highlighted.picker__day--disabled,.picker__day--highlighted.picker__day--disabled:hover{background:#bbb}.picker__footer{text-align:center}.picker__button--clear,.picker__button--close,.picker__button--today{border:1px solid #fff;background:#fff;font-size:.8em;padding:.66em 0;font-weight:700;width:33%;display:inline-block;vertical-align:bottom}.picker__button--clear:hover,.picker__button--close:hover,.picker__button--today:hover{cursor:pointer;color:#000;background:#b1dcfb;border-bottom-color:#b1dcfb}.picker__button--clear:focus,.picker__button--close:focus,.picker__button--today:focus{background:#b1dcfb;border-color:#0089ec;outline:0}.picker__button--clear:before,.picker__button--close:before,.picker__button--today:before{position:relative;display:inline-block;height:0}.picker__button--clear:before,.picker__button--today:before{content:" ";margin-right:.45em}.picker__button--today:before{top:-.05em;width:0;border-top:.66em solid #0059bc;border-left:.66em solid transparent}.picker__button--clear:before{top:-.25em;width:.66em;border-top:3px solid #e20}.picker__button--close:before{content:"\D7";top:-.1em;vertical-align:top;font-size:1.1em;margin-right:.35em;color:#777}.picker__button--today[disabled],.picker__button--today[disabled]:hover{background:#f5f5f5;border-color:#f5f5f5;color:#ddd;cursor:default}.picker__button--today[disabled]:before{border-top-color:#aaa}.picker--opened .picker__holder{background:rgba(0,0,0,.8)}.picker__box{padding:.625rem 1.0625rem;border:0;box-shadow:none;border-radius:6px}.picker__nav--next,.picker__nav--prev{color:#fff}.picker__nav--next:before,.picker__nav--prev:before{font-family:b3-icons;position:absolute;border:0;font-size:1.5rem}.picker__nav--next:hover,.picker__nav--prev:hover{background:0 0}.picker__nav--next:hover:before,.picker__nav--prev:hover:before{color:rgba(56,103,206,.25)}.picker__nav--prev:before{content:b3__ico--char(keyboard_arrow_left)}.picker__nav--next:before{content:b3__ico--char(keyboard_arrow_right)}.picker__weekday{width:auto;color:#333;font-weight:400;font-size:1rem;line-height:1.2em}.picker__header{margin-top:0;padding-top:.3125rem}.picker__header,.picker__year{font-size:1.03125rem;letter-spacing:0}.picker__year{color:#333;font-style:normal}.picker__day,.picker__day--infocus,.picker__day--outfocus,.picker__day--today{padding:0;margin:0 auto;border-radius:99px;width:1.875rem;height:1.875rem;text-align:center;line-height:1.75rem;font-size:.84375rem;color:#3867ce;font-weight:400;background:0 0;border:2px solid transparent}.picker__day--today:before{display:none}.picker__day--infocus:hover,.picker__day--outfocus:hover{color:#3867ce;background:rgba(0,176,230,.08);border-color:rgba(0,176,230,0)}.picker__day--outfocus{color:rgba(0,0,0,.1)}.picker--focused .picker__day--highlighted,.picker__day--highlighted:hover{color:#333;border-color:rgba(56,103,206,.25);background:0 0}.picker__button--clear,.picker__button--close,.picker__button--today{padding:0;text-transform:uppercase;border:0;font-weight:400!important;font-size:1rem;letter-spacing:.1px!important;white-space:nowrap}.picker__button--clear:before,.picker__button--close:before,.picker__button--today:before{display:none}.picker__button--clear:hover,.picker__button--close:hover,.picker__button--today:hover{background:0 0;border:none;font-weight:400!important;font-size:1rem;letter-spacing:.1px!important;white-space:nowrap}.picker__button--clear{color:#00314c}.picker__button--clear:hover{color:#333}.picker__button--close{color:#c63800}.picker__button--close:hover{color:#ff7e4a}.picker__button--today{color:#3867ce}.picker__button--today:hover{color:rgba(56,103,206,.25)}.scielo__menu{position:relative;display:inline-block;width:40px;height:20px;margin:5px 0;margin-left:8px;z-index:100;outline:0;-webkit-animation-fill-mode:both;-moz-animation-fill-mode:both;-ms-animation-fill-mode:both;-o-animation-fill-mode:both;animation-fill-mode:both;-webkit-animation-duration:.2s;-moz-animation-duration:.2s;-ms-animation-duration:.2s;-o-animation-duration:.2s;animation-duration:.2s;-o-transition:all .2s ease-out,text-indent .2s ease-out;-ms-transition:all .2s ease-out,text-indent .2s ease-out;-moz-transition:all .2s ease-out,text-indent .2s ease-out;-webkit-transition:all .2s ease-out,text-indent .2s ease-out;transition:all .2s ease-out,text-indent .2s ease-out}.scielo__menu:active,.scielo__menu:focus{outline:0}.scielo__menu .material-icons-outlined{color:#333}.scielo__theme--dark .scielo__menu .material-icons-outlined{color:#c4c4c4}.scielo__theme--light .scielo__menu .material-icons-outlined{color:#333}.scielo__menu.opened{margin-left:270px}.scielo__mainMenu{position:absolute;top:-1000px;z-index:99;width:300px;background:#fff;border:1px solid #ccc;border-top:0;border-radius:4px;border-top-left-radius:0;border-top-right-radius:0;padding:35px 20px 0 20px;padding:0;box-shadow:0 0 7px rgba(0,0,0,.1);font-size:.85em}.scielo__theme--dark .scielo__mainMenu{background:#333;border-color:rgba(255,255,255,.3)}.scielo__theme--light .scielo__mainMenu{background:#fff;border-color:#ccc}.scielo__mainMenu .logo-svg{background:url(../img/logo-scielo-no-label.svg);background-position:center center;background-repeat:no-repeat;display:block;width:100px;height:100px}.scielo__theme--dark .scielo__mainMenu .logo-svg{background-image:url(../img/logo-scielo-no-label-negative.svg)}.scielo__theme--light .scielo__mainMenu .logo-svg{background-image:url(../img/logo-scielo-no-label.svg)}.scielo__mainMenu ul{margin:0;padding:0}.scielo__mainMenu li{list-style:none;border-bottom:1px dotted #6c6b6b;padding-bottom:7px}.scielo__theme--dark .scielo__mainMenu li{border-color:rgba(255,255,255,.3)}.scielo__theme--light .scielo__mainMenu li{border-color:#ccc}.scielo__mainMenu li:last-child{border-bottom:0}.scielo__mainMenu li a,.scielo__mainMenu li strong{display:block;color:#00314c;text-decoration:none}.scielo__theme--dark .scielo__mainMenu li a,.scielo__theme--dark .scielo__mainMenu li strong{color:#eee}.scielo__theme--light .scielo__mainMenu li a,.scielo__theme--light .scielo__mainMenu li strong{color:#00314c}.scielo__mainMenu li a:hover,.scielo__mainMenu li strong:hover{color:#3867ce}.scielo__theme--dark .scielo__mainMenu li a:hover,.scielo__theme--dark .scielo__mainMenu li strong:hover{color:#86acff}.scielo__theme--light .scielo__mainMenu li a:hover,.scielo__theme--light .scielo__mainMenu li strong:hover{color:#3867ce}.scielo__mainMenu li a{padding:.4rem 1rem}.scielo__mainMenu li a:hover{background-color:#f7f6f4}.scielo__mainMenu li li{background:0 0;padding-bottom:0;border-bottom:0}.scielo-ico-menu{display:inline-block}.scielo-ico-menu-opened{display:none}.page-item{background:0 0;border-color:rgba(0,0,0,.3)}.page-item.active .page-link{background:0 0;border-color:#3867ce;background-color:#3867ce;color:#fff;font-weight:400}.scielo__theme--dark .page-item.active .page-link{background-color:#86acff;border-color:#86acff;color:#eee}.scielo__theme--light .page-item.active .page-link{border-color:#3867ce;background-color:#3867ce;color:#fff}.page-item.disabled .page-link{background:0 0;color:rgba(0,0,0,.1);border-color:rgba(0,0,0,.1);cursor:not-allowed}.scielo__theme--dark .page-item.disabled .page-link{color:rgba(255,255,255,.2);border-color:rgba(255,255,255,.2)}.scielo__theme--light .page-item.disabled .page-link{color:rgba(0,0,0,.1);border-color:rgba(0,0,0,.1)}.page-item .material-icons,.page-item .material-icons-outlined{font-size:1rem;line-height:1.2em}.page-link{background:0 0;font-weight:400;font-size:1rem;line-height:1.2em;height:2rem;text-align:center;border-color:#ccc;transition:all .2s;color:#3867ce;font-weight:400}.scielo__theme--dark .page-link{color:#86acff;border-color:rgba(255,255,255,.3);font-weight:400}.scielo__theme--light .page-link{color:#3867ce;border-color:#ccc;font-weight:400}.page-link:hover{background:#f7f6f4;color:#3867ce;border-color:#ccc}.scielo__theme--dark .page-link:hover{background:#414141;color:#86acff;border-color:rgba(255,255,255,.3)}.scielo__theme--light .page-link:hover{background:#f7f6f4;color:#3867ce;border-color:#ccc}.scielo__ico:before{content:'';position:absolute;font-size:1.5rem;line-height:1.5rem}.scielo__ico--first_page:before{font-family:'Material Icons Outlined';content:"first_page";color:inherit}.scielo__ico--last_page:before{font-family:'Material Icons Outlined';content:"last_page";color:inherit}.scielo__ico--navigate_before:before{font-family:'Material Icons Outlined';content:"navigate_before";color:inherit}.scielo__ico--navigate_next:before{font-family:'Material Icons Outlined';content:"navigate_next";color:inherit}.breadcrumb{background:#efeeec;padding:1.125rem;border-radius:.25rem}.scielo__theme--dark .breadcrumb{background:#414141}.scielo__theme--light .breadcrumb{background:#efeeec}.breadcrumb li a{font-weight:400!important}.breadcrumb li.breadcrumb-item+.breadcrumb-item:before{color:rgba(0,0,0,.1)}.scielo__theme--dark .breadcrumb li.breadcrumb-item+.breadcrumb-item:before{color:rgba(255,255,255,.2)}.scielo__theme--light .breadcrumb li.breadcrumb-item+.breadcrumb-item:before{color:rgba(0,0,0,.1)}.breadcrumb li.active{color:#6c6b6b}.scielo__theme--dark .breadcrumb li.active{color:#adadad}.scielo__theme--light .breadcrumb li.active{color:#6c6b6b}.dropdown-divider{border-color:#ccc}.scielo__theme--dark .dropdown-divider{border-color:rgba(255,255,255,.3)}.scielo__theme--light .dropdown-divider{border-color:#ccc}.dropdown-menu{background:#fff;border-color:#ccc}.scielo__theme--dark .dropdown-menu{background:#333;border-color:rgba(255,255,255,.3)}.scielo__theme--light .dropdown-menu{background:#fff;border-color:#ccc}.dropdown-item{white-space:normal;color:#333}.dropdown-item:hover{color:#333;background:#f7f6f4}.scielo__theme--dark .dropdown-item{white-space:normal;color:#c4c4c4}.scielo__theme--dark .dropdown-item:hover{color:#c4c4c4;background:#414141}.scielo__theme--light .dropdown-item{white-space:normal;color:#333}.scielo__theme--light .dropdown-item:hover{color:#333;background:#f7f6f4}footer{border-top:0!important;margin:0;padding-top:.75rem;padding-bottom:3rem}footer section{border-top:1px dashed #ccc}.scielo__theme--dark footer section{border-color:rgba(255,255,255,.3)}.scielo__theme--light footer section{border-color:#ccc}footer section:first-child{border-top:0}footer .col{padding:15px 0}footer p{margin:0}footer .address-scielo{background-color:#f7f6f4}.scielo__theme--dark footer .address-scielo{background-color:#393939}.scielo__theme--light footer .address-scielo{background-color:#f7f6f4}footer .address-scielo .col{border:0}@media (max-width:575.98px){footer .address-scielo .col{padding-left:8px;padding-right:8px}footer .address-scielo .col:first-child{padding-bottom:0}footer .address-scielo .col:last-child{padding-top:0}}footer .partners{padding:16px 0}footer .partners a{margin:10px}@media (max-width:575.98px){footer .partners img{margin:8px 0}}.accordion-button{position:relative;display:flex;align-items:center;width:100%;padding:1rem 1.25rem;font-size:1rem;color:#333;text-align:left;background-color:transparent;border:0;border-radius:0;overflow-anchor:none;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out,border-radius .15s ease}@media (prefers-reduced-motion:reduce){.accordion-button{transition:none}}.scielo__theme--dark .accordion-button{color:#c4c4c4}.scielo__theme--light .accordion-button{color:#333}.accordion-button:not(.collapsed){color:#333;background-color:transparent;box-shadow:none;border-bottom:3px solid #3867ce}.scielo__theme--dark .accordion-button:not(.collapsed){color:#c4c4c4;background-color:transparent;border-bottom:3px solid #86acff}.scielo__theme--light .accordion-button:not(.collapsed){color:#333;background-color:transparent;border-bottom:3px solid #3867ce}.accordion-button:not(.collapsed)::after{background-image:none;transform:rotate(90deg);color:#3867ce}.scielo__theme--dark .accordion-button:not(.collapsed)::after{color:#86acff}.scielo__theme--light .accordion-button:not(.collapsed)::after{color:#3867ce}.accordion-button::after{flex-shrink:0;width:1.25rem;height:1.25rem;margin-left:auto;font-family:'Material Icons Outlined';content:"arrow_forward_ios";background-image:none;background-repeat:no-repeat;background-size:1.25rem;transition:transform .2s ease-in-out;text-align:center;line-height:1.25rem}@media (prefers-reduced-motion:reduce){.accordion-button::after{transition:none}}.accordion-button:hover{z-index:2}.accordion-button:focus{z-index:3;border-color:#3867ce;outline:0;box-shadow:none}.accordion-header{margin-bottom:0}.accordion-item{margin-bottom:-1px;background-color:transparent;border:1px solid #ccc}.scielo__theme--dark .accordion-item{border:1px solid rgba(255,255,255,.3)}.scielo__theme--light .accordion-item{border:1px solid #ccc}.accordion-item:first-of-type{border-top-left-radius:.25rem;border-top-right-radius:.25rem}.accordion-item:first-of-type .accordion-button{border-top-left-radius:calc(.25rem - 1px);border-top-right-radius:calc(.25rem - 1px)}.accordion-item:last-of-type{margin-bottom:0;border-bottom-right-radius:.25rem;border-bottom-left-radius:.25rem}.accordion-item:last-of-type .accordion-button.collapsed{border-bottom-right-radius:calc(.25rem - 1px);border-bottom-left-radius:calc(.25rem - 1px)}.accordion-item:last-of-type .accordion-collapse{border-bottom-right-radius:.25rem;border-bottom-left-radius:.25rem}.accordion-body{padding:1rem 1.25rem;background:#f7f6f4;color:#333}.scielo__theme--dark .accordion-body{color:#c4c4c4;background:#414141}.scielo__theme--light .accordion-body{color:#333;background:#f7f6f4}.accordion-flush{border:1px solid #ccc;border-radius:.25rem}.scielo__theme--dark .accordion-flush{border:1px solid rgba(255,255,255,.3)}.scielo__theme--light .accordion-flush{border:1px solid #ccc}.accordion-flush .accordion-collapse{border-width:0}.accordion-flush .accordion-item{border-right:0;border-left:0;border-radius:0}.accordion-flush .accordion-item:first-child{border-top:0}.accordion-flush .accordion-item:last-child{border-bottom:0}.accordion-flush .accordion-item .accordion-button{border-radius:0}.alert{padding:.75rem 3.75rem .75rem 1.5rem;border-radius:.1875rem;border:2px solid #86acff;background:#fff;color:#00314c}.scielo__theme--dark .alert{background:#333;color:#eee}.scielo__theme--light .alert{background:#fff;color:#00314c}.alert hr{border-top-color:#efeeec}.scielo__theme--dark .alert hr{border-top-color:#414141}.scielo__theme--light .alert hr{border-top-color:#efeeec}.alert-danger,.alert-info,.alert-success,.alert-warning{padding-left:3.75rem;position:relative}.alert-danger:before,.alert-info:before,.alert-success:before,.alert-warning:before{content:'';position:absolute;top:.75rem;left:1.5rem;font-family:'Material Icons Outlined';font-size:1.5rem;line-height:1.5rem}.alert-primary{color:#fff;background:#3867ce;border-color:#3867ce}.alert-primary .alert-heading,.alert-primary .alert-link{color:#fff!important}.alert-primary a{color:#fff;text-decoration:underline}.scielo__theme--dark .alert-primary{color:#333;background:#86acff;border-color:#86acff}.scielo__theme--dark .alert-primary .alert-heading,.scielo__theme--dark .alert-primary .alert-link{color:#333!important}.scielo__theme--light .alert-primary{color:#fff;background:#3867ce;border-color:#3867ce}.scielo__theme--light .alert-primary .alert-heading,.scielo__theme--light .alert-primary .alert-link{color:#fff!important}.alert-secondary{color:#fff;background:#fff;border-color:#fff;color:#333;background:#fff;border-color:rgba(0,0,0,.3)}.alert-secondary .alert-heading,.alert-secondary .alert-link{color:#fff!important}.alert-secondary a{color:#fff;text-decoration:underline}.scielo__theme--dark .alert-secondary{color:#333;background:#c4c4c4;border-color:#c4c4c4}.scielo__theme--dark .alert-secondary .alert-heading,.scielo__theme--dark .alert-secondary .alert-link{color:#333!important}.scielo__theme--light .alert-secondary{color:#fff;background:#fff;border-color:#fff}.scielo__theme--light .alert-secondary .alert-heading,.scielo__theme--light .alert-secondary .alert-link{color:#fff!important}.alert-secondary .alert-heading,.alert-secondary .alert-link{color:#333!important}.scielo__theme--dark .alert-secondary{color:#c4c4c4;background:0 0;border-color:#c4c4c4}.scielo__theme--dark .alert-secondary .alert-heading,.scielo__theme--dark .alert-secondary .alert-link{color:#c4c4c4!important}.scielo__theme--light .alert-secondary{color:#333;background:#fff;border-color:rgba(0,0,0,.3)}.scielo__theme--light .alert-secondary .alert-heading,.scielo__theme--light .alert-secondary .alert-link{color:#333!important}.alert-info{color:#fff;background:#2195a9;border-color:#2195a9}.alert-info:before{content:"info";color:inherit}.alert-info .alert-heading,.alert-info .alert-link{color:#fff!important}.alert-info a{color:#fff;text-decoration:underline}.scielo__theme--dark .alert-info{color:#333;background:#2299ad;border-color:#2299ad}.scielo__theme--dark .alert-info .alert-heading,.scielo__theme--dark .alert-info .alert-link{color:#333!important}.scielo__theme--light .alert-info{color:#fff;background:#2195a9;border-color:#2195a9}.scielo__theme--light .alert-info .alert-heading,.scielo__theme--light .alert-info .alert-link{color:#fff!important}.alert-dark{color:#fff;background:#3867ce;border-color:#3867ce}.alert-dark .alert-heading,.alert-dark .alert-link{color:#fff!important}.alert-dark a{color:#fff;text-decoration:underline}.scielo__theme--dark .alert-dark{color:#333;background:#86acff;border-color:#86acff}.scielo__theme--dark .alert-dark .alert-heading,.scielo__theme--dark .alert-dark .alert-link{color:#333!important}.scielo__theme--light .alert-dark{color:#fff;background:#3867ce;border-color:#3867ce}.scielo__theme--light .alert-dark .alert-heading,.scielo__theme--light .alert-dark .alert-link{color:#fff!important}.alert-success{color:#fff;background:#2c9d45;border-color:#2c9d45}.alert-success:before{content:"check_circle";color:inherit}.alert-success .alert-heading,.alert-success .alert-link{color:#fff!important}.alert-success a{color:#fff;text-decoration:underline}.scielo__theme--dark .alert-success{color:#333;background:#2c9d45;border-color:#2c9d45}.scielo__theme--dark .alert-success .alert-heading,.scielo__theme--dark .alert-success .alert-link{color:#333!important}.scielo__theme--light .alert-success{color:#fff;background:#2c9d45;border-color:#2c9d45}.scielo__theme--light .alert-success .alert-heading,.scielo__theme--light .alert-success .alert-link{color:#fff!important}.alert-danger{color:#fff;background:#c63800;border-color:#c63800}.alert-danger:before{content:"report_problem";color:inherit}.alert-danger .alert-heading,.alert-danger .alert-link{color:#fff!important}.alert-danger a{color:#fff;text-decoration:underline}.scielo__theme--dark .alert-danger{color:#333;background:#ff7e4a;border-color:#ff7e4a}.scielo__theme--dark .alert-danger .alert-heading,.scielo__theme--dark .alert-danger .alert-link{color:#333!important}.scielo__theme--light .alert-danger{color:#fff;background:#c63800;border-color:#c63800}.scielo__theme--light .alert-danger .alert-heading,.scielo__theme--light .alert-danger .alert-link{color:#fff!important}.alert-warning{color:#fff;background:#b67f00;border-color:#b67f00}.alert-warning:before{content:"report_problem";color:inherit}.alert-warning .alert-heading,.alert-warning .alert-link{color:#fff!important}.alert-warning a{color:#fff;text-decoration:underline}.scielo__theme--dark .alert-warning{color:#333;background:#b67f00;border-color:#b67f00}.scielo__theme--dark .alert-warning .alert-heading,.scielo__theme--dark .alert-warning .alert-link{color:#333!important}.scielo__theme--light .alert-warning{color:#fff;background:#b67f00;border-color:#b67f00}.scielo__theme--light .alert-warning .alert-heading,.scielo__theme--light .alert-warning .alert-link{color:#fff!important}.alert-link{color:#3867ce!important}.scielo__theme--dark .alert-link{color:#86acff!important}.scielo__theme--light .alert-link{color:#3867ce!important}.alert-dismissible{padding-right:3.75rem}.alert-dismissible .close{padding:.5625rem .75rem;font-size:1.5rem;line-height:1.5rem;color:inherit;top:0;right:0;opacity:.5;position:absolute;right:0;border:0;background:0 0}.alert-dismissible .close:before{font-family:'Material Icons Outlined';content:"close";color:inherit}.alert-dismissible .close:hover{opacity:1}.alert.text-center{border-radius:0}.alert.text-center:before{position:static;display:block}@media (min-width:992px){.alert.text-center:before{display:inline-block;vertical-align:bottom}}.card{position:relative;display:flex;flex-direction:column;min-width:0;word-wrap:break-word;background-color:#fff;background-clip:border-box;border:1px solid #ccc;border-radius:.25rem}.scielo__theme--dark .card{border:1px solid rgba(255,255,255,.3);background-color:#333}.scielo__theme--light .card{border:1px solid #ccc;background-color:#fff}.card .list-group-item{background-color:#fff;border-color:#ccc}.scielo__theme--dark .card .list-group-item{border-color:rgba(255,255,255,.3);background-color:#333}.scielo__theme--light .card .list-group-item{border-color:#ccc;background-color:#fff}.card>hr{margin-right:0;margin-left:0}.card>.list-group{border-top:inherit;border-bottom:inherit}.card>.list-group:first-child{border-top-width:0;border-top-left-radius:calc(.25rem - 1px);border-top-right-radius:calc(.25rem - 1px)}.card>.list-group:last-child{border-bottom-width:0;border-bottom-right-radius:calc(.25rem - 1px);border-bottom-left-radius:calc(.25rem - 1px)}.card>.card-header+.list-group,.card>.list-group+.card-footer{border-top:0}.card-body{flex:1 1 auto;padding:1rem 1rem;color:#333}.scielo__theme--dark .card-body{color:#c4c4c4}.scielo__theme--light .card-body{color:#333}.card-title{margin-bottom:.5rem}.card-subtitle{margin-top:-.25rem;margin-bottom:0;font-weight:700;text-transform:uppercase;color:#6c6b6b;font-size:.75rem}.scielo__theme--dark .card-subtitle{color:#adadad}.scielo__theme--light .card-subtitle{color:#6c6b6b}.card-text:last-child{margin-bottom:0}.card-link:hover{text-decoration:none}.card-link+.card-link{margin-left:1rem}.card-header{padding:.5rem 1rem;margin-bottom:0;background-color:rgba(0,0,0,.03);border-bottom:1px solid rgba(0,0,0,.125)}.card-header:first-child{border-radius:calc(.25rem - 1px) calc(.25rem - 1px) 0 0}.card-footer{padding:.5rem 1rem;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.125)}.card-footer:last-child{border-radius:0 0 calc(.25rem - 1px) calc(.25rem - 1px)}.card-header-tabs{margin-right:-.5rem;margin-bottom:-.5rem;margin-left:-.5rem;border-bottom:0}.card-header-pills{margin-right:-.5rem;margin-left:-.5rem}.card-img-overlay{position:absolute;top:0;right:0;bottom:0;left:0;padding:1rem;border-radius:calc(.25rem - 1px)}.card-img,.card-img-bottom,.card-img-top{width:100%}.card-img,.card-img-top{border-top-left-radius:calc(.25rem - 1px);border-top-right-radius:calc(.25rem - 1px)}.card-img,.card-img-bottom{border-bottom-right-radius:calc(.25rem - 1px);border-bottom-left-radius:calc(.25rem - 1px)}.card-group>.card{margin-bottom:.5rem}@media (min-width:576px){.card-group{display:flex;flex-flow:row wrap}.card-group>.card{flex:1 0 0%;margin-bottom:0}.card-group>.card+.card{margin-left:0;border-left:0}.card-group>.card:not(:last-child){border-top-right-radius:0;border-bottom-right-radius:0}.card-group>.card:not(:last-child) .card-header,.card-group>.card:not(:last-child) .card-img-top{border-top-right-radius:0}.card-group>.card:not(:last-child) .card-footer,.card-group>.card:not(:last-child) .card-img-bottom{border-bottom-right-radius:0}.card-group>.card:not(:first-child){border-top-left-radius:0;border-bottom-left-radius:0}.card-group>.card:not(:first-child) .card-header,.card-group>.card:not(:first-child) .card-img-top{border-top-left-radius:0}.card-group>.card:not(:first-child) .card-footer,.card-group>.card:not(:first-child) .card-img-bottom{border-bottom-left-radius:0}}.modal-open{overflow:hidden}.modal-open .modal{overflow-x:hidden;overflow-y:auto}.modal{position:fixed;top:0;left:0;z-index:1060;display:none;width:100%;height:100%;overflow:hidden;outline:0}.modal-dialog{position:relative;width:auto;margin:.5rem;pointer-events:none}.modal.fade .modal-dialog{transition:transform .3s ease-out;transform:translate(0,-50px)}@media (prefers-reduced-motion:reduce){.modal.fade .modal-dialog{transition:none}}.modal.show .modal-dialog{transform:none}.modal.modal-static .modal-dialog{transform:scale(1.02)}.modal-dialog-scrollable{height:calc(100% - 1rem)}.modal-dialog-scrollable .modal-content{max-height:100%;overflow:hidden}.modal-dialog-scrollable .modal-body{overflow-y:auto}.modal-dialog-centered{display:flex;align-items:center;min-height:calc(100% - 1rem)}.modal-content{position:relative;display:flex;flex-direction:column;width:100%;pointer-events:auto;background-color:#fff;background-clip:padding-box;border:1px solid rgba(0,0,0,.2);border-radius:.5rem;outline:0}.scielo__theme--dark .modal-content{border:1px solid rgba(255,255,255,.3);background-color:#333}.scielo__theme--light .modal-content{border:1px solid #ccc;background-color:#fff}.modal-backdrop{position:fixed;top:0;left:0;z-index:1050;width:100vw;height:100vh;background-color:#000}.modal-backdrop.fade{opacity:0}.modal-backdrop.show{opacity:.5}.modal-header{display:flex;flex-shrink:0;align-items:flex-start;justify-content:space-between;padding:1rem 1rem;border-top-left-radius:calc(.5rem - 1px);border-top-right-radius:calc(.5rem - 1px);border-bottom:1px solid #ccc}.scielo__theme--dark .modal-header{border-bottom:1px solid rgba(255,255,255,.3)}.scielo__theme--light .modal-header{border-bottom:1px solid #ccc}.modal-header .btn-close{padding:.5rem .5rem;margin:-2px -.5rem -.5rem auto;background-image:none;font-weight:700;font-size:1.3125rem;line-height:1.25em;letter-spacing:0;text-align:center;position:relative}.modal-header .btn-close:before{font-family:'Material Icons Outlined';content:"close";color:#333;line-height:1.8;position:absolute;top:0;left:0;text-align:center;width:100%}.scielo__theme--dark .modal-header .btn-close:before{color:#c4c4c4}.scielo__theme--light .modal-header .btn-close:before{color:#333}.modal-title{margin-bottom:0;line-height:1.5}.modal-title [class*=" material-icons"],.modal-title [class^=material-icons]{vertical-align:bottom}.modal-body{position:relative;flex:1 1 auto;padding:1rem}.modal-footer{display:flex;flex-wrap:wrap;flex-shrink:0;align-items:center;justify-content:flex-end;padding:.75rem;border-bottom-right-radius:calc(.5rem - 1px);border-bottom-left-radius:calc(.5rem - 1px);border-top:1px solid #ccc}.scielo__theme--dark .modal-footer{border-top:1px solid rgba(255,255,255,.3)}.scielo__theme--light .modal-footer{border-top:1px solid #ccc}.modal-footer>*{margin:.25rem}.modal-scrollbar-measure{position:absolute;top:-9999px;width:50px;height:50px;overflow:scroll}@media (min-width:576px){.modal-dialog{max-width:500px;margin:1.75rem auto}.modal-dialog-scrollable{height:calc(100% - 3.5rem)}.modal-dialog-centered{min-height:calc(100% - 3.5rem)}.modal-sm{max-width:300px}}@media (min-width:992px){.modal-lg,.modal-xl{max-width:800px}}@media (min-width:1200px){.modal-xl{max-width:1140px}}.modal-fullscreen{width:100vw;max-width:none;height:100%;margin:0}.modal-fullscreen .modal-content{height:100%;border:0;border-radius:0}.modal-fullscreen .modal-header{border-radius:0}.modal-fullscreen .modal-body{overflow-y:auto}.modal-fullscreen .modal-footer{border-radius:0}@media (max-width:575.98px){.modal-fullscreen-sm-down{width:100vw;max-width:none;height:100%;margin:0}.modal-fullscreen-sm-down .modal-content{height:100%;border:0;border-radius:0}.modal-fullscreen-sm-down .modal-header{border-radius:0}.modal-fullscreen-sm-down .modal-body{overflow-y:auto}.modal-fullscreen-sm-down .modal-footer{border-radius:0}}@media (max-width:767.98px){.modal-fullscreen-md-down{width:100vw;max-width:none;height:100%;margin:0}.modal-fullscreen-md-down .modal-content{height:100%;border:0;border-radius:0}.modal-fullscreen-md-down .modal-header{border-radius:0}.modal-fullscreen-md-down .modal-body{overflow-y:auto}.modal-fullscreen-md-down .modal-footer{border-radius:0}}@media (max-width:991.98px){.modal-fullscreen-lg-down{width:100vw;max-width:none;height:100%;margin:0}.modal-fullscreen-lg-down .modal-content{height:100%;border:0;border-radius:0}.modal-fullscreen-lg-down .modal-header{border-radius:0}.modal-fullscreen-lg-down .modal-body{overflow-y:auto}.modal-fullscreen-lg-down .modal-footer{border-radius:0}}@media (max-width:1199.98px){.modal-fullscreen-xl-down{width:100vw;max-width:none;height:100%;margin:0}.modal-fullscreen-xl-down .modal-content{height:100%;border:0;border-radius:0}.modal-fullscreen-xl-down .modal-header{border-radius:0}.modal-fullscreen-xl-down .modal-body{overflow-y:auto}.modal-fullscreen-xl-down .modal-footer{border-radius:0}}@media (max-width:1399.98px){.modal-fullscreen-xxl-down{width:100vw;max-width:none;height:100%;margin:0}.modal-fullscreen-xxl-down .modal-content{height:100%;border:0;border-radius:0}.modal-fullscreen-xxl-down .modal-header{border-radius:0}.modal-fullscreen-xxl-down .modal-body{overflow-y:auto}.modal-fullscreen-xxl-down .modal-footer{border-radius:0}}.table{--scielo-table-bg:transparent;--scielo-table-striped-color:#393939;--scielo-table-striped-bg:rgba(0, 0, 0, 0.05);--scielo-table-active-color:#393939;--scielo-table-active-bg:rgba(0, 0, 0, 0.1);--scielo-table-hover-color:#393939;--scielo-table-hover-bg:rgba(0, 0, 0, 0.075);width:100%;margin-bottom:1rem;color:#333;vertical-align:top;border-color:#ccc}.scielo__theme--dark .table{color:#c4c4c4;border-color:rgba(255,255,255,.3)}.scielo__theme--light .table{color:#333;border-color:#ccc}.table>:not(caption)>*>*{padding:.5rem .5rem;background-color:var(--scielo-table-bg);border-bottom-width:1px;box-shadow:inset 0 0 0 9999px var(--scielo-table-accent-bg)}.table>tbody{vertical-align:inherit}.table>thead{vertical-align:bottom}.table>thead th{border-bottom:2px solid #ccc}.scielo__theme--dark .table>thead th{border-bottom:2px solid rgba(255,255,255,.3)}.scielo__theme--light .table>thead th{border-bottom:2px solid #ccc}.table>:not(:last-child)>:last-child>*{border-bottom-color:#ccc}.scielo__theme--dark .table>:not(:last-child)>:last-child>*{border-bottom-color:rgba(255,255,255,.3)}.scielo__theme--light .table>:not(:last-child)>:last-child>*{border-bottom-color:#ccc}.caption-top{caption-side:top}.table-sm>:not(caption)>*>*{padding:.25rem .25rem}.table-bordered>:not(caption)>*{border-width:1px 0}.table-bordered>:not(caption)>*>*{border-width:0 1px}.table-borderless>:not(caption)>*>*{border-bottom-width:0}.table-striped>tbody>tr:nth-of-type(odd){--scielo-table-accent-bg:var(--scielo-table-striped-bg);color:#333}.scielo__theme--dark .table-striped>tbody>tr:nth-of-type(odd){color:#c4c4c4}.scielo__theme--light .table-striped>tbody>tr:nth-of-type(odd){color:#333}.table-active{--scielo-table-accent-bg:var(--scielo-table-active-bg);color:#333}.scielo__theme--dark .table-active{color:#c4c4c4}.scielo__theme--light .table-active{color:#333}.table-hover>tbody>tr:hover{--scielo-table-accent-bg:var(--scielo-table-hover-bg);color:#333}.scielo__theme--dark .table-hover>tbody>tr:hover{color:#c4c4c4}.scielo__theme--light .table-hover>tbody>tr:hover{color:#333}.table-primary{--scielo-table-bg:rgba(56, 103, 206, 0.7);--scielo-table-striped-bg:rgba(51, 94, 188, 0.715);--scielo-table-striped-color:#fff;--scielo-table-active-bg:rgba(46, 85, 171, 0.73);--scielo-table-active-color:#fff;--scielo-table-hover-bg:rgba(49, 90, 179, 0.7225);--scielo-table-hover-color:#fff;color:#000}.table-secondary{--scielo-table-bg:rgba(255, 255, 255, 0.5);--scielo-table-striped-bg:rgba(220, 220, 220, 0.525);--scielo-table-striped-color:#000;--scielo-table-active-bg:rgba(191, 191, 191, 0.55);--scielo-table-active-color:#000;--scielo-table-hover-bg:rgba(205, 205, 205, 0.5375);--scielo-table-hover-color:#000;color:#000}.table-success{--scielo-table-bg:rgba(44, 157, 69, 0.7);--scielo-table-striped-bg:rgba(40, 143, 63, 0.715);--scielo-table-striped-color:#000;--scielo-table-active-bg:rgba(36, 130, 57, 0.73);--scielo-table-active-color:#fff;--scielo-table-hover-bg:rgba(38, 136, 60, 0.7225);--scielo-table-hover-color:#000;color:#000}.table-info{--scielo-table-bg:rgba(33, 149, 169, 0.7);--scielo-table-striped-bg:rgba(30, 136, 154, 0.715);--scielo-table-striped-color:#000;--scielo-table-active-bg:rgba(27, 124, 140, 0.73);--scielo-table-active-color:#fff;--scielo-table-hover-bg:rgba(29, 130, 147, 0.7225);--scielo-table-hover-color:#fff;color:#000}.table-warning{--scielo-table-bg:rgba(182, 127, 0, 0.7);--scielo-table-striped-bg:rgba(166, 116, 0, 0.715);--scielo-table-striped-color:#000;--scielo-table-active-bg:rgba(151, 105, 0, 0.73);--scielo-table-active-color:#fff;--scielo-table-hover-bg:rgba(158, 110, 0, 0.7225);--scielo-table-hover-color:#000;color:#000}.table-danger{--scielo-table-bg:rgba(198, 56, 0, 0.7);--scielo-table-striped-bg:rgba(180, 51, 0, 0.715);--scielo-table-striped-color:#fff;--scielo-table-active-bg:rgba(164, 46, 0, 0.73);--scielo-table-active-color:#fff;--scielo-table-hover-bg:rgba(172, 49, 0, 0.7225);--scielo-table-hover-color:#fff;color:#000}.table-light{--scielo-table-bg:#F7F6F4;--scielo-table-striped-bg:#ebeae8;--scielo-table-striped-color:#000;--scielo-table-active-bg:#dedddc;--scielo-table-active-color:#000;--scielo-table-hover-bg:#e4e4e2;--scielo-table-hover-color:#000;color:#000}.table-dark{--scielo-table-bg:#393939;--scielo-table-striped-bg:#434343;--scielo-table-striped-color:#fff;--scielo-table-active-bg:#4d4d4d;--scielo-table-active-color:#fff;--scielo-table-hover-bg:#484848;--scielo-table-hover-color:#fff;color:#fff}.table-responsive{overflow-x:auto;-webkit-overflow-scrolling:touch}@media (max-width:575.98px){.table-responsive-sm{overflow-x:auto;-webkit-overflow-scrolling:touch}}@media (max-width:767.98px){.table-responsive-md{overflow-x:auto;-webkit-overflow-scrolling:touch}}@media (max-width:991.98px){.table-responsive-lg{overflow-x:auto;-webkit-overflow-scrolling:touch}}@media (max-width:1199.98px){.table-responsive-xl{overflow-x:auto;-webkit-overflow-scrolling:touch}}@media (max-width:1399.98px){.table-responsive-xxl{overflow-x:auto;-webkit-overflow-scrolling:touch}}.table table{min-width:100%}.nav:not(.flex-column).nav-tabs{border:none;background:0 0;margin-bottom:.75rem;border-bottom:1px solid #ccc}.scielo__theme--dark .nav:not(.flex-column).nav-tabs{border-color:rgba(255,255,255,.3)}.scielo__theme--light .nav:not(.flex-column).nav-tabs{border-color:#ccc}@media screen and (max-width:575px){.nav:not(.flex-column).nav-tabs{display:block;white-space:nowrap;overflow-x:auto;overflow-y:hidden}.nav:not(.flex-column).nav-tabs>li{float:none;display:inline-block}}.nav:not(.flex-column).nav-tabs .nav-link{font-weight:400!important;font-size:1rem;letter-spacing:.1px!important;white-space:nowrap;line-height:1.875rem;color:#333;border-radius:0;border-top-left-radius:.1875rem;border-top-right-radius:.1875rem;border-width:0;padding:.5625rem 1.5rem;position:relative;transition:.2s all}.nav:not(.flex-column).nav-tabs .nav-link:before{content:'';position:absolute;bottom:0;left:50%;transform:translateX(-50%);width:0;border-bottom:3px solid rgba(56,103,206,.25);transition:.2s all}.scielo__theme--dark .nav:not(.flex-column).nav-tabs .nav-link{color:#c4c4c4}.scielo__theme--light .nav:not(.flex-column).nav-tabs .nav-link{color:#333}.nav:not(.flex-column).nav-tabs .nav-link.active{border:none;background:0 0;color:#00314c}.scielo__theme--dark .nav:not(.flex-column).nav-tabs .nav-link.active{color:#eee}.scielo__theme--light .nav:not(.flex-column).nav-tabs .nav-link.active{color:#00314c}.nav:not(.flex-column).nav-tabs .nav-link.active:before{left:50%;width:100%;border-color:#3867ce}.scielo__theme--dark .nav:not(.flex-column).nav-tabs .nav-link.active:before{border-color:#86acff}.scielo__theme--light .nav:not(.flex-column).nav-tabs .nav-link.active:before{border-color:#3867ce}.nav:not(.flex-column).nav-tabs .nav-link.disabled{color:rgba(0,0,0,.1);cursor:not-allowed}.scielo__theme--dark .nav:not(.flex-column).nav-tabs .nav-link.disabled{color:rgba(255,255,255,.2)}.scielo__theme--light .nav:not(.flex-column).nav-tabs .nav-link.disabled{color:rgba(0,0,0,.1)}.nav:not(.flex-column).nav-tabs .nav-link.dropdown-toggle{position:relative;padding-right:2.25rem!important}.nav:not(.flex-column).nav-tabs .nav-link.dropdown-toggle:after{position:absolute;top:50%;transform:translateY(-50%);font-family:'Material Icons Outlined';content:"arrow_drop_down";color:inherit;border:0;line-height:1.5rem!important;text-align:center;right:1rem;width:1.25rem;height:1.25rem;font-size:1.25rem;line-height:1.25rem;border:none!important;margin-top:0!important;width:1.5rem!important;height:1.5rem!important;transform:translateY(-50%)}.nav:not(.flex-column).nav-tabs .nav-link:not(.disabled):focus,.nav:not(.flex-column).nav-tabs .nav-link:not(.disabled):hover{background:#f7f6f4;color:#00314c}.scielo__theme--dark .nav:not(.flex-column).nav-tabs .nav-link:not(.disabled):focus,.scielo__theme--dark .nav:not(.flex-column).nav-tabs .nav-link:not(.disabled):hover{background:#414141;color:#eee}.scielo__theme--light .nav:not(.flex-column).nav-tabs .nav-link:not(.disabled):focus,.scielo__theme--light .nav:not(.flex-column).nav-tabs .nav-link:not(.disabled):hover{background:#f7f6f4;color:#00314c}.nav:not(.flex-column).nav-tabs .dropdown-menu{background:#fff;border:1px solid #ccc;border-radius:3px}.nav:not(.flex-column).nav-tabs .dropdown-menu>a{position:relative;font-weight:700;font-size:1;line-height:1.2em;letter-spacing:0;padding:.75rem 1.5rem .75rem;line-height:1.5rem;transition:all .5s;border-radius:.1875rem;background:0 0;color:#fff;font-weight:400;font-size:1rem;line-height:1.2em;color:#333!important}.scielo__theme--dark .nav:not(.flex-column).nav-tabs .dropdown-menu>a{color:#eee}.scielo__theme--light .nav:not(.flex-column).nav-tabs .dropdown-menu>a{color:#fff}.nav:not(.flex-column).nav-tabs .dropdown-menu>a:hover:hover{background:#f7f6f4;color:#333}.scielo__theme--dark .nav:not(.flex-column).nav-tabs .dropdown-menu>a:hover:hover{background:#414141;color:#c4c4c4}.scielo__theme--light .nav:not(.flex-column).nav-tabs .dropdown-menu>a:hover:hover{background:#f7f6f4;color:#333}.scielo__theme--dark .nav:not(.flex-column).nav-tabs .dropdown-menu>a{color:#c4c4c4!important}.scielo__theme--light .nav:not(.flex-column).nav-tabs .dropdown-menu>a{color:#333!important}.scielo__theme--dark .nav:not(.flex-column).nav-tabs .dropdown-menu{background:#333;border:1px solid rgba(255,255,255,.3)}.scielo__theme--light .nav:not(.flex-column).nav-tabs .dropdown-menu{background:#fff;border:1px solid #ccc}.nav:not(.flex-column).nav-tabs .dropdown-menu .dropdown-divider{border-color:#ccc}.scielo__theme--dark .nav:not(.flex-column).nav-tabs .dropdown-menu .dropdown-divider{border-color:rgba(255,255,255,.3)}.scielo__theme--light .nav:not(.flex-column).nav-tabs .dropdown-menu .dropdown-divider{border-color:#ccc}.nav.nav-pills .nav-link{font-weight:400!important;font-size:1rem;letter-spacing:.1px!important;white-space:nowrap;line-height:1.875rem;color:#333;border-radius:.1875rem;border-width:0;padding:.5625rem 1.5rem;position:relative;transition:.2s all}.scielo__theme--dark .nav.nav-pills .nav-link{color:#c4c4c4}.scielo__theme--light .nav.nav-pills .nav-link{color:#333}.nav.nav-pills .nav-link.active{border:none;background:#3867ce;color:#fff}.scielo__theme--dark .nav.nav-pills .nav-link.active{background:#86acff;color:#333}.scielo__theme--light .nav.nav-pills .nav-link.active{background:#3867ce;color:#fff}.nav.nav-pills .nav-link.disabled{color:rgba(0,0,0,.1);cursor:not-allowed}.scielo__theme--dark .nav.nav-pills .nav-link.disabled{color:rgba(255,255,255,.2)}.scielo__theme--light .nav.nav-pills .nav-link.disabled{color:rgba(0,0,0,.1)}.nav.nav-pills .nav-link:not(.disabled):focus:not(.active),.nav.nav-pills .nav-link:not(.disabled):hover:not(.active){background:#f7f6f4;color:#00314c}.scielo__theme--dark .nav.nav-pills .nav-link:not(.disabled):focus:not(.active),.scielo__theme--dark .nav.nav-pills .nav-link:not(.disabled):hover:not(.active){background:#414141;color:#eee}.scielo__theme--light .nav.nav-pills .nav-link:not(.disabled):focus:not(.active),.scielo__theme--light .nav.nav-pills .nav-link:not(.disabled):hover:not(.active){background:#f7f6f4;color:#00314c}.nav.flex-column.nav-pills .nav-link{font-weight:400!important;font-size:1rem;letter-spacing:.1px!important;white-space:nowrap;background:0 0;line-height:1.875rem;color:#333;border-radius:.1875rem;border-left:3px solid transparent;border-top-left-radius:0;border-bottom-left-radius:0;padding:.5625rem 1.5rem}.scielo__theme--dark .nav.flex-column.nav-pills .nav-link{color:#c4c4c4}.scielo__theme--light .nav.flex-column.nav-pills .nav-link{color:#333}.nav.flex-column.nav-pills .nav-link.active{background:0 0;border-color:#3867ce;color:#00314c}.scielo__theme--dark .nav.flex-column.nav-pills .nav-link.active{border-color:#86acff;color:#eee}.scielo__theme--light .nav.flex-column.nav-pills .nav-link.active{border-color:#3867ce;color:#00314c}.nav.flex-column.nav-pills .nav-link.disabled{color:rgba(0,0,0,.1);cursor:not-allowed}.scielo__theme--dark .nav.flex-column.nav-pills .nav-link.disabled{color:rgba(255,255,255,.2)}.scielo__theme--light .nav.flex-column.nav-pills .nav-link.disabled{color:rgba(0,0,0,.1)}.nav.flex-column.nav-pills .nav-link:not(.disabled):focus,.nav.flex-column.nav-pills .nav-link:not(.disabled):hover{background:#f7f6f4;color:#00314c}.scielo__theme--dark .nav.flex-column.nav-pills .nav-link:not(.disabled):focus,.scielo__theme--dark .nav.flex-column.nav-pills .nav-link:not(.disabled):hover{background:#414141;color:#eee}.scielo__theme--light .nav.flex-column.nav-pills .nav-link:not(.disabled):focus,.scielo__theme--light .nav.flex-column.nav-pills .nav-link:not(.disabled):hover{background:#f7f6f4;color:#00314c}.tab-pane{padding:.75rem 0}.slick-slider{position:relative;display:block;box-sizing:border-box;-webkit-touch-callout:none;-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;-ms-touch-action:pan-y;touch-action:pan-y;-webkit-tap-highlight-color:transparent}.slick-list{position:relative;overflow:hidden;display:block;margin:0;padding:0}.slick-list:focus{outline:0}.slick-list.dragging{cursor:pointer;cursor:hand}.slick-slider .slick-list,.slick-slider .slick-track{-webkit-transform:translate3d(0,0,0);-moz-transform:translate3d(0,0,0);-ms-transform:translate3d(0,0,0);-o-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}.slick-track{position:relative;left:0;top:0;display:flex;margin-left:auto;margin-right:auto}.slick-track:after,.slick-track:before{content:"";display:table}.slick-track:after{clear:both}.slick-loading .slick-track{visibility:hidden}.slick-slide{float:left;height:100%;min-height:1px;margin:0 10px;display:none}[dir=rtl] .slick-slide{float:right}.slick-slide img{display:block}.slick-slide.slick-loading img{display:none}.slick-slide.dragging img{pointer-events:none}.slick-initialized .slick-slide{display:block}.slick-loading .slick-slide{visibility:hidden}.slick-vertical .slick-slide{display:block;height:auto;border:1px solid transparent}.slick-arrow.slick-hidden{display:none}.slick-next,.slick-prev{position:relative;display:inline-block;padding:.625rem 1rem;border-radius:.25rem;line-height:1.25rem;height:2.5rem;font-weight:400!important;font-size:1rem;letter-spacing:.1px!important;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;background-position:center;transition:all .8s;margin:0 0 1rem;background-color:#fff;border:1px solid #ccc;color:#333;position:absolute;display:block;height:40px;width:30px;line-height:0;font-size:0;cursor:pointer;top:50%;-webkit-transform:translate(0,-50%);-ms-transform:translate(0,-50%);transform:translate(0,-50%);padding:0}.slick-next:focus,.slick-prev:focus{box-shadow:0 0 0 .125rem rgba(56,103,206,.25);outline:0}.slick-next:focus:active,.slick-prev:focus:active{box-shadow:0 0 0 .25rem rgba(56,103,206,.25)}.slick-next:focus,.slick-prev:focus{box-shadow:0 0 0 .125rem rgba(204,204,204,.25);outline:0}.slick-next:focus:active,.slick-prev:focus:active{box-shadow:0 0 0 .25rem rgba(204,204,204,.25)}.slick-next:focus,.slick-prev:focus{background-color:#fff;color:#333}.slick-next.active:not(:disabled):not(.disabled),.slick-prev.active:not(:disabled):not(.disabled){border:1px solid #d9d9d9;background-color:#d9d9d9;color:#333}.show>.slick-next.dropdown-toggle,.show>.slick-prev.dropdown-toggle{background-color:#d9d9d9;color:#333}.slick-next:hover:not(:disabled):not(.disabled),.slick-prev:hover:not(:disabled):not(.disabled){border:1px solid #d9d9d9;background:#d9d9d9 radial-gradient(circle,transparent 1%,#d9d9d9 1%) center/15000%;color:#333;text-decoration:none}.slick-next:active:not(:disabled):not(.disabled),.slick-prev:active:not(:disabled):not(.disabled){border:1px solid #d9d9d9;background-color:#1a1a1a;background-size:100%;transition:background 0s;color:#333}.slick-next:hover:not(:disabled):not(.disabled),.slick-prev:hover:not(:disabled):not(.disabled){border:1px solid #ccc;background:hoverBgColor radial-gradient(circle,transparent 1%,hoverBgColor 1%) center/15000%;color:#333}.slick-next:active:not(:disabled):not(.disabled),.slick-prev:active:not(:disabled):not(.disabled){border:1px solid #ccc;background-color:gray;background-size:100%;transition:background 0s;color:#333}.slick-next:focus,.slick-prev:focus{border-color:#ccc}.scielo__theme--dark .slick-next,.scielo__theme--dark .slick-prev{background-color:#c4c4c4;border:1px solid rgba(255,255,255,.3);color:#333}.scielo__theme--dark .slick-next:focus,.scielo__theme--dark .slick-prev:focus{background-color:#c4c4c4;color:#333}.scielo__theme--dark .slick-next.active:not(:disabled):not(.disabled),.scielo__theme--dark .slick-prev.active:not(:disabled):not(.disabled){background-color:#a7a7a7;color:#333}.scielo__theme--dark .slick-next:hover:not(:disabled):not(.disabled),.scielo__theme--dark .slick-prev:hover:not(:disabled):not(.disabled){border:1px solid #dcdcdc;background:#dcdcdc radial-gradient(circle,transparent 1%,#dcdcdc 1%) center/15000%;color:#333;text-decoration:none}.scielo__theme--dark .slick-next:active:not(:disabled):not(.disabled),.scielo__theme--dark .slick-prev:active:not(:disabled):not(.disabled){border:1px solid #dcdcdc;background-color:#f9f9f9;background-size:100%;transition:background 0s;color:#333}.scielo__theme--dark .slick-next:hover:not(:disabled):not(.disabled),.scielo__theme--dark .slick-prev:hover:not(:disabled):not(.disabled){border:1px solid rgba(255,255,255,.3);background:hoverBgColor radial-gradient(circle,transparent 1%,hoverBgColor 1%) center/15000%;color:#333}.scielo__theme--dark .slick-next:active:not(:disabled):not(.disabled),.scielo__theme--dark .slick-prev:active:not(:disabled):not(.disabled){border:1px solid rgba(255,255,255,.3);background-color:#f9f9f9;background-size:100%;transition:background 0s;color:#333}.scielo__theme--dark .slick-next:focus,.scielo__theme--dark .slick-prev:focus{border-color:rgba(255,255,255,.3)}.scielo__theme--light .slick-next,.scielo__theme--light .slick-prev{background-color:#fff;border-color:1px solid #ccc;color:#333}.scielo__theme--light .slick-next:focus,.scielo__theme--light .slick-prev:focus{background-color:#fff;color:#333}.scielo__theme--light .slick-next.active:not(:disabled):not(.disabled),.scielo__theme--light .slick-prev.active:not(:disabled):not(.disabled){background-color:#fff;color:#333}.scielo__theme--light .slick-next:hover:not(:disabled):not(.disabled),.scielo__theme--light .slick-prev:hover:not(:disabled):not(.disabled){border:1px solid #d9d9d9;background:#d9d9d9 radial-gradient(circle,transparent 1%,#d9d9d9 1%) center/15000%;color:#333;text-decoration:none}.scielo__theme--light .slick-next:active:not(:disabled):not(.disabled),.scielo__theme--light .slick-prev:active:not(:disabled):not(.disabled){border:1px solid #d9d9d9;background-color:#1a1a1a;background-size:100%;transition:background 0s;color:#333}.scielo__theme--light .slick-next:hover:not(:disabled):not(.disabled),.scielo__theme--light .slick-prev:hover:not(:disabled):not(.disabled){border:1px solid #ccc;background:hoverBgColor radial-gradient(circle,transparent 1%,hoverBgColor 1%) center/15000%;color:#333}.scielo__theme--light .slick-next:active:not(:disabled):not(.disabled),.scielo__theme--light .slick-prev:active:not(:disabled):not(.disabled){border:1px solid #ccc;background-color:gray;background-size:100%;transition:background 0s;color:#333}.scielo__theme--light .slick-next:focus,.scielo__theme--light .slick-prev:focus{border-color:#ccc}.slick-next:focus,.slick-next:hover,.slick-prev:focus,.slick-prev:hover{outline:0}.slick-next:focus:before,.slick-next:hover:before,.slick-prev:focus:before,.slick-prev:hover:before{opacity:1}.slick-next.slick-disabled:before,.slick-prev.slick-disabled:before{opacity:.25}.slick-next:before,.slick-prev:before{font-family:"Material Icons Outlined";font-size:20px;line-height:1;opacity:.75;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.slick-prev{left:-25px}@media (max-width:575.98px){.slick-prev{left:0;z-index:1}}[dir=rtl] .slick-prev{left:auto;right:-25px}.slick-prev:before{content:"navigate_before"}[dir=rtl] .slick-prev:before{content:"navigate_next"}.slick-next{right:-25px}@media (max-width:575.98px){.slick-next{right:0;z-index:1}}[dir=rtl] .slick-next{left:-25px;right:auto}.slick-next:before{content:"navigate_next"}[dir=rtl] .slick-next:before{content:"navigate_before"}.slick-dotted.slick-slider{margin-bottom:30px}.slick-dots{position:absolute;bottom:-32px;list-style:none;display:block;text-align:center;padding:0;margin:0;width:100%}@media (max-width:575.98px){.slick-dots{display:flex}}.slick-dots li{position:relative;display:inline-block;height:16px;width:16px;margin:0 5px;padding:0;cursor:pointer}@media (max-width:575.98px){.slick-dots li{flex:1;height:4px}}.slick-dots li button{background:0 0;border:2px solid #6c6b6b;border-radius:100px;display:block;height:16px;width:16px;outline:0;line-height:0;font-size:0;color:transparent;padding:0;cursor:pointer}@media (max-width:575.98px){.slick-dots li button{background:rgba(108,107,107,.2);border:0;width:100%;height:4px;border-radius:0}}.scielo__theme--dark .slick-dots li button{background:rgba(173,173,173,.2)}.scielo__theme--light .slick-dots li button{background:rgba(108,107,107,.2)}.slick-dots li button:focus,.slick-dots li button:hover{outline:0}.slick-dots li button:focus:before,.slick-dots li button:hover:before{opacity:1}.slick-dots li.slick-active button{background:#6c6b6b}.scielo__theme--dark .slick-dots li.slick-active button{background:#adadad}.scielo__theme--light .slick-dots li.slick-active button{background:#6c6b6b}.scielo__language{text-align:right}@media (min-width:576px){.scielo__language{position:static;display:inline-block;float:right}}.scielo__levelMenu{background:#f7f6f4;padding:1.125rem}.scielo__theme--dark .scielo__levelMenu{background:#393939}.scielo__theme--light .scielo__levelMenu{background:#f7f6f4}.scielo__levelMenu>.container{margin:0!important}.scielo__levelMenu>.container [class^=col]{text-align:center;border-right:1px dashed #ccc;line-height:3.75rem}.scielo__theme--dark .scielo__levelMenu>.container [class^=col]{border-color:rgba(255,255,255,.3)}.scielo__theme--light .scielo__levelMenu>.container [class^=col]{border-color:#ccc}.scielo__levelMenu>.container [class^=col]:last-of-type{border:0}@media (max-width:575.98px){.scielo__levelMenu>.container [class^=col]{border:0}.scielo__levelMenu>.container [class^=col]:first-of-type{border-right:1px dashed #ccc}.scielo__theme--dark .scielo__levelMenu>.container [class^=col]:first-of-type{border-color:rgba(255,255,255,.3)}.scielo__theme--light .scielo__levelMenu>.container [class^=col]:first-of-type{border-color:#ccc}.scielo__levelMenu>.container [class^=col]:last-of-type{margin-top:1rem}}.scielo__levelMenu a{text-decoration:none;font-weight:700}section.scielo__search-articles{background:#f7f6f4;padding:1.125rem}.scielo__theme--dark section.scielo__search-articles{background:#393939}.scielo__theme--light section.scielo__search-articles{background:#f7f6f4}@media (max-width:991.98px){section.scielo__search-articles .input-group{flex-flow:column;height:auto;background:0 0}section.scielo__search-articles .input-group .form-control,section.scielo__search-articles .input-group .form-select{width:100%;margin:0 0 .5rem!important;border-radius:.25rem!important}section.scielo__search-articles .input-group .form-control:last-child,section.scielo__search-articles .input-group .form-select:last-child{margin:0}}section.scielo__search-articles .input-group .input-group-append .form-select{min-width:180px}section.scielo__search-articles .input-group .input-group-preppend .form-select{min-width:120px}.scielo__contribGroup{color:#403d39;margin:15px 10%;font-size:1.1em;text-align:center;opacity:1}.scielo__contribGroup a.btn-fechar{display:inline-block;border-radius:100%;cursor:pointer;width:30px;height:30px;font-size:86%;padding:5px 0;text-align:center;margin-top:10px;font-family:'Material Icons Outlined';content:"close"}.scielo__contribGroup a.btn-fechar:hover{background:#3867ce;color:#fff}.scielo__contribGroup .sci-ico-emailOutlined{font-size:20px;vertical-align:baseline}.scielo__contribGroup .dropdown{display:inline-block;padding:0}.scielo__contribGroup .dropdown .dropdown-toggle{background:0 0;border:1px solid transparent;padding:.625rem;height:auto;outline:0;margin-bottom:0;color:#3867ce}.scielo__contribGroup .dropdown .dropdown-toggle:hover{border:1px solid transparent;color:#254895;background:0 0!important}.scielo__theme--dark .scielo__contribGroup .dropdown .dropdown-toggle{border:1px solid transparent;color:#86acff}.scielo__theme--dark .scielo__contribGroup .dropdown .dropdown-toggle:hover{border:1px solid transparent;color:#d3e0ff}.scielo__theme--light .scielo__contribGroup .dropdown .dropdown-toggle{border:1px solid transparent;color:#3867ce}.scielo__theme--light .scielo__contribGroup .dropdown .dropdown-toggle:hover{border:1px solid transparent;color:#254895}.scielo__contribGroup .dropdown .dropdown-toggle:focus{box-shadow:none;background:0 0;border:1px solid #ccc}.scielo__theme--dark .scielo__contribGroup .dropdown .dropdown-toggle:focus{box-shadow:none;background:0 0;border:1px solid rgba(255,255,255,.3)}.scielo__theme--light .scielo__contribGroup .dropdown .dropdown-toggle:focus{box-shadow:none;background:0 0;border:1px solid #ccc}@media (max-width:575.98px){.scielo__contribGroup .dropdown .dropdown-toggle{max-width:300px!important;white-space:inherit;height:auto}}.scielo__contribGroup .dropdown .dropdown-toggle:after{display:none}.scielo__contribGroup .dropdown .dropdown-menu{padding:10px 20px;text-align:left;border-radius:4px}.scielo__contribGroup .dropdown .dropdown-menu.show{color:#333;padding-left:.75rem}.scielo__theme--dark .scielo__contribGroup .dropdown .dropdown-menu.show{color:#c4c4c4}.scielo__theme--light .scielo__contribGroup .dropdown .dropdown-menu.show{color:#333}.scielo__contribGroup .dropdown .dropdown-menu strong{display:inline-block;margin:20px 0 8px 0;font-size:11px;color:#00314c;text-transform:uppercase}.scielo__contribGroup .dropdown a{cursor:pointer}.scielo__contribGroup .dropdown a span{display:inline-block;padding:5px 0}.scielo__contribGroup .dropdown.open{background:#3867ce;border-radius:4px}.scielo__contribGroup .dropdown.open a{color:#fff}.scielo__contribGroup .outlineFadeLink{background-color:#fff;border:1px solid #ccc;color:#333;margin:0 0 0 .625rem}.scielo__contribGroup .outlineFadeLink:focus{box-shadow:0 0 0 .125rem rgba(204,204,204,.25);outline:0}.scielo__contribGroup .outlineFadeLink:focus:active{box-shadow:0 0 0 .25rem rgba(204,204,204,.25)}.scielo__contribGroup .outlineFadeLink:focus{background-color:#fff;color:#333}.scielo__contribGroup .outlineFadeLink.active:not(:disabled):not(.disabled){border:1px solid #d9d9d9;background-color:#d9d9d9;color:#333}.show>.scielo__contribGroup .outlineFadeLink.dropdown-toggle{background-color:#d9d9d9;color:#333}.scielo__contribGroup .outlineFadeLink:hover:not(:disabled):not(.disabled){border:1px solid #d9d9d9;background:#d9d9d9 radial-gradient(circle,transparent 1%,#d9d9d9 1%) center/15000%;color:#333;text-decoration:none}.scielo__contribGroup .outlineFadeLink:active:not(:disabled):not(.disabled){border:1px solid #d9d9d9;background-color:#1a1a1a;background-size:100%;transition:background 0s;color:#333}.scielo__contribGroup .outlineFadeLink:hover:not(:disabled):not(.disabled){border:1px solid #ccc;background:hoverBgColor radial-gradient(circle,transparent 1%,hoverBgColor 1%) center/15000%;color:#333}.scielo__contribGroup .outlineFadeLink:active:not(:disabled):not(.disabled){border:1px solid #ccc;background-color:gray;background-size:100%;transition:background 0s;color:#333}.scielo__contribGroup .outlineFadeLink:focus{border-color:#ccc}.scielo__theme--dark .scielo__contribGroup .outlineFadeLink{background-color:#c4c4c4;border:1px solid rgba(255,255,255,.3);color:#333}.scielo__theme--dark .scielo__contribGroup .outlineFadeLink:focus{background-color:#c4c4c4;color:#333}.scielo__theme--dark .scielo__contribGroup .outlineFadeLink.active:not(:disabled):not(.disabled){background-color:#a7a7a7;color:#333}.scielo__theme--dark .scielo__contribGroup .outlineFadeLink:hover:not(:disabled):not(.disabled){border:1px solid #dcdcdc;background:#dcdcdc radial-gradient(circle,transparent 1%,#dcdcdc 1%) center/15000%;color:#333;text-decoration:none}.scielo__theme--dark .scielo__contribGroup .outlineFadeLink:active:not(:disabled):not(.disabled){border:1px solid #dcdcdc;background-color:#f9f9f9;background-size:100%;transition:background 0s;color:#333}.scielo__theme--dark .scielo__contribGroup .outlineFadeLink:hover:not(:disabled):not(.disabled){border:1px solid rgba(255,255,255,.3);background:hoverBgColor radial-gradient(circle,transparent 1%,hoverBgColor 1%) center/15000%;color:#333}.scielo__theme--dark .scielo__contribGroup .outlineFadeLink:active:not(:disabled):not(.disabled){border:1px solid rgba(255,255,255,.3);background-color:#f9f9f9;background-size:100%;transition:background 0s;color:#333}.scielo__theme--dark .scielo__contribGroup .outlineFadeLink:focus{border-color:rgba(255,255,255,.3)}.scielo__theme--light .scielo__contribGroup .outlineFadeLink{background-color:#fff;border-color:1px solid #ccc;color:#333}.scielo__theme--light .scielo__contribGroup .outlineFadeLink:focus{background-color:#fff;color:#333}.scielo__theme--light .scielo__contribGroup .outlineFadeLink.active:not(:disabled):not(.disabled){background-color:#fff;color:#333}.scielo__theme--light .scielo__contribGroup .outlineFadeLink:hover:not(:disabled):not(.disabled){border:1px solid #d9d9d9;background:#d9d9d9 radial-gradient(circle,transparent 1%,#d9d9d9 1%) center/15000%;color:#333;text-decoration:none}.scielo__theme--light .scielo__contribGroup .outlineFadeLink:active:not(:disabled):not(.disabled){border:1px solid #d9d9d9;background-color:#1a1a1a;background-size:100%;transition:background 0s;color:#333}.scielo__theme--light .scielo__contribGroup .outlineFadeLink:hover:not(:disabled):not(.disabled){border:1px solid #ccc;background:hoverBgColor radial-gradient(circle,transparent 1%,hoverBgColor 1%) center/15000%;color:#333}.scielo__theme--light .scielo__contribGroup .outlineFadeLink:active:not(:disabled):not(.disabled){border:1px solid #ccc;background-color:gray;background-size:100%;transition:background 0s;color:#333}.scielo__theme--light .scielo__contribGroup .outlineFadeLink:focus{border-color:#ccc}@media (max-width:575.98px){.scielo__contribGroup .outlineFadeLink{margin:.5rem 0}}.btnContribLinks{display:inline-block;margin-top:4px;background-image:url(../img/logo-orcid.svg);background-repeat:no-repeat;background-size:1.5em auto;background-position:.5em center;padding:.5em .5em .5em 2.5em;border-radius:4px;border:1px solid #3867ce}.scielo__theme--dark .btnContribLinks{border:1px solid #86acff}.scielo__theme--light .btnContribLinks{border:1px solid #3867ce}.ModalDefault .btnContribLinks{padding:.5em .5em .5em 2.5em!important}.btnContribLinks:hover{border-color:#254895}.scielo__theme--dark .btnContribLinks:hover{border-color:#d3e0ff}.scielo__theme--light .btnContribLinks:hover{border-color:#254895}.linkGroup{position:relative;font-size:.85em}.linkGroup a.selected{position:relative}.linkGroup a.selected:after{content:'';display:block;position:absolute;bottom:-16px;left:4px;width:16px;height:7px;background:url(../img/articleContent-arrow.png) bottom center no-repeat;z-index:999}.btn-open{display:inline-block;margin:0 .625rem;transition:all .4s}@media (max-width:575.98px){.btn-open{display:block;margin:.25rem auto}}.badge{border-radius:1.5rem;font-size:.625rem;line-height:1.375rem;padding:0 .4375rem;height:1.625rem;min-width:1.625rem;letter-spacing:.5px;display:inline-block;vertical-align:text-top;border:2px solid #fff;text-align:center;text-transform:uppercase;color:#fff;background:#fff;color:#333}.scielo__theme--dark .badge{border-color:#333}.scielo__theme--light .badge{border-color:#fff}.scielo__theme--dark .badge{background-color:#c4c4c4;color:#eee}.scielo__theme--light .badge{background-color:#fff;color:#333}.badge-light,.badge-primary{background:#3867ce;color:#fff}.scielo__theme--dark .badge-light,.scielo__theme--dark .badge-primary{background-color:#86acff;color:#eee}.scielo__theme--light .badge-light,.scielo__theme--light .badge-primary{background-color:#3867ce;color:#fff}.badge-secondary{background:#fff;color:#333}.scielo__theme--dark .badge-secondary{background-color:#c4c4c4;color:#eee}.scielo__theme--light .badge-secondary{background-color:#fff;color:#333}.badge-info{background:#2195a9;color:#fff}.scielo__theme--dark .badge-info{background-color:#2299ad;color:#eee}.scielo__theme--light .badge-info{background-color:#2195a9;color:#fff}.badge-dark{background:#fff;color:#333}.scielo__theme--dark .badge-dark{background-color:#c4c4c4;color:#eee}.scielo__theme--light .badge-dark{background-color:#fff;color:#333}.badge-success{background:#2c9d45;color:#fff}.scielo__theme--dark .badge-success{background-color:#2c9d45;color:#eee}.scielo__theme--light .badge-success{background-color:#2c9d45;color:#fff}.badge-danger{background:#c63800;color:#fff}.scielo__theme--dark .badge-danger{background-color:#ff7e4a;color:#eee}.scielo__theme--light .badge-danger{background-color:#c63800;color:#fff}.badge-warning{background:#b67f00;color:#fff}.scielo__theme--dark .badge-warning{background-color:#b67f00;color:#eee}.scielo__theme--light .badge-warning{background-color:#b67f00;color:#fff}.display-1 .badge,.display-2 .badge,.display-3 .badge,.display-4 .badge,.h1 .badge,.h1 .badge .h2 .badge,.h2 .badge,.h3 .badge,.h4 .badge,.h5 .badge,.h6 .badge,.lead,h1 .badge,h2 .badge,h3 .badge,h4 .badge,h5 .badge,h6 .badge{margin-left:-.6em}.btn+.badge{vertical-align:text-bottom;margin:0 0 1.5rem -1.3125rem;position:relative;z-index:2}.carousel{position:relative}.carousel.pointer-event{touch-action:pan-y}.carousel-inner{position:relative;width:100%;overflow:hidden}.carousel-inner::after{display:block;clear:both;content:""}.carousel-item{position:relative;display:none;float:left;width:100%;margin-right:-100%;backface-visibility:hidden;transition:transform .6s ease-in-out}@media (prefers-reduced-motion:reduce){.carousel-item{transition:none}}.carousel-item-next,.carousel-item-prev,.carousel-item.active{display:block}.active.carousel-item-end,.carousel-item-next:not(.carousel-item-start){transform:translateX(100%)}.active.carousel-item-start,.carousel-item-prev:not(.carousel-item-end){transform:translateX(-100%)}.carousel-fade .carousel-item{opacity:0;transition-property:opacity;transform:none}.carousel-fade .carousel-item-next.carousel-item-start,.carousel-fade .carousel-item-prev.carousel-item-end,.carousel-fade .carousel-item.active{z-index:1;opacity:1}.carousel-fade .active.carousel-item-end,.carousel-fade .active.carousel-item-start{z-index:0;opacity:0;transition:opacity 0s .6s}@media (prefers-reduced-motion:reduce){.carousel-fade .active.carousel-item-end,.carousel-fade .active.carousel-item-start{transition:none}}.carousel-control-next,.carousel-control-prev{position:absolute;top:0;bottom:0;z-index:1;display:flex;align-items:center;justify-content:center;width:15%;padding:0;color:#fff;text-align:center;background:0 0;border:0;opacity:.5;transition:opacity .15s ease}@media (prefers-reduced-motion:reduce){.carousel-control-next,.carousel-control-prev{transition:none}}.carousel-control-next:focus,.carousel-control-next:hover,.carousel-control-prev:focus,.carousel-control-prev:hover{color:#fff;text-decoration:none;outline:0;opacity:.9}.carousel-control-prev{left:0}.carousel-control-next{right:0}.carousel-control-next-icon,.carousel-control-prev-icon{display:inline-block;width:2rem;height:2rem;background-repeat:no-repeat;background-position:50%;background-size:100% 100%}.carousel-control-prev-icon{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23fff'%3e%3cpath d='M11.354 1.646a.5.5 0 0 1 0 .708L5.707 8l5.647 5.646a.5.5 0 0 1-.708.708l-6-6a.5.5 0 0 1 0-.708l6-6a.5.5 0 0 1 .708 0z'/%3e%3c/svg%3e")}.carousel-control-next-icon{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23fff'%3e%3cpath d='M4.646 1.646a.5.5 0 0 1 .708 0l6 6a.5.5 0 0 1 0 .708l-6 6a.5.5 0 0 1-.708-.708L10.293 8 4.646 2.354a.5.5 0 0 1 0-.708z'/%3e%3c/svg%3e")}.carousel-indicators{position:absolute;right:0;bottom:0;left:0;z-index:2;display:flex;justify-content:center;padding:0;margin-right:15%;margin-bottom:1rem;margin-left:15%;list-style:none}.carousel-indicators [data-bs-target]{box-sizing:content-box;flex:0 1 auto;width:30px;height:3px;padding:0;margin-right:3px;margin-left:3px;text-indent:-999px;cursor:pointer;background-color:#fff;background-clip:padding-box;border:0;border-top:10px solid transparent;border-bottom:10px solid transparent;opacity:.5;transition:opacity .6s ease}@media (prefers-reduced-motion:reduce){.carousel-indicators [data-bs-target]{transition:none}}.carousel-indicators .active{opacity:1}.carousel-caption{position:absolute;right:15%;bottom:1.25rem;left:15%;padding-top:1.25rem;padding-bottom:1.25rem;color:#fff;text-align:center}.carousel-dark .carousel-control-next-icon,.carousel-dark .carousel-control-prev-icon{filter:invert(1) grayscale(100)}.carousel-dark .carousel-indicators [data-bs-target]{background-color:#000}.carousel-dark .carousel-caption{color:#000}.progress{height:.1875rem;border-radius:.25rem;font-weight:700;font-size:.75rem;line-height:1.2em;letter-spacing:.06px;color:rgba(0,0,0,.1);overflow:visible;height:1.75rem;position:relative;background-color:#efeeec}.scielo__theme--dark .progress{background-color:#414141}.scielo__theme--light .progress{background-color:#efeeec}.progress-bar{position:relative;height:1.75rem;border-radius:.25rem;color:#fff}.progress-bar~.progress-bar{border-top-left-radius:0;border-bottom-left-radius:0;margin-left:-.4375rem}.scielo__theme--dark .progress-bar{background-color:#86acff!important}.scielo__theme--light .progress-bar{background-color:#3867ce!important}.scielo__theme--dark .progress-bar.bg-primary{background-color:#86acff!important}.scielo__theme--light .progress-bar.bg-primary{background-color:#3867ce!important}.scielo__theme--dark .progress-bar.bg-info{background-color:#2299ad!important}.scielo__theme--light .progress-bar.bg-info{background-color:#2195a9!important}.scielo__theme--dark .progress-bar.bg-success{background-color:#2c9d45!important}.scielo__theme--light .progress-bar.bg-success{background-color:#2c9d45!important}.scielo__theme--dark .progress-bar.bg-warning{background-color:#b67f00!important}.scielo__theme--light .progress-bar.bg-warning{background-color:#b67f00!important}.scielo__theme--dark .progress-bar.bg-danger{background-color:#ff7e4a!important}.scielo__theme--light .progress-bar.bg-danger{background-color:#c63800!important}.img-thumbnail{display:inline-block;background:0 0;border:none;border-radius:.1875rem;padding:0;overflow:hidden}.tooltip-inner{font-size:.75rem;border-radius:.1875rem;padding:.375rem .75rem;background:#333;color:#fff}.scielo__theme--dark .tooltip-inner{background:#fff;color:#333}.scielo__theme--light .tooltip-inner{background:#333;color:#fff}.tooltip.show{opacity:1}.bs-tooltip-auto[data-popper-placement^=top] .tooltip-arrow::before,.bs-tooltip-top .tooltip-arrow::before{border-top-color:#333}.scielo__theme--dark .bs-tooltip-auto[data-popper-placement^=top] .tooltip-arrow::before,.scielo__theme--dark .bs-tooltip-top .tooltip-arrow::before{border-top-color:#fff}.scielo__theme--light .bs-tooltip-auto[data-popper-placement^=top] .tooltip-arrow::before,.scielo__theme--light .bs-tooltip-top .tooltip-arrow::before{border-top-color:#333}.bs-tooltip-auto[data-popper-placement^=right] .tooltip-arrow::before,.bs-tooltip-end .tooltip-arrow::before{border-right-color:#333}.scielo__theme--dark .bs-tooltip-auto[data-popper-placement^=right] .tooltip-arrow::before,.scielo__theme--dark .bs-tooltip-end .tooltip-arrow::before{border-right-color:#fff}.scielo__theme--light .bs-tooltip-auto[data-popper-placement^=right] .tooltip-arrow::before,.scielo__theme--light .bs-tooltip-end .tooltip-arrow::before{border-right-color:#333}.bs-tooltip-auto[data-popper-placement^=bottom] .tooltip-arrow::before,.bs-tooltip-bottom .tooltip-arrow::before{border-bottom-color:#333}.scielo__theme--dark .bs-tooltip-auto[data-popper-placement^=bottom] .tooltip-arrow::before,.scielo__theme--dark .bs-tooltip-bottom .tooltip-arrow::before{border-bottom-color:#fff}.scielo__theme--light .bs-tooltip-auto[data-popper-placement^=bottom] .tooltip-arrow::before,.scielo__theme--light .bs-tooltip-bottom .tooltip-arrow::before{border-bottom-color:#333}.bs-tooltip-auto[data-popper-placement^=left] .tooltip-arrow::before,.bs-tooltip-start .tooltip-arrow::before{border-left-color:#333}.scielo__theme--dark .bs-tooltip-auto[data-popper-placement^=left] .tooltip-arrow::before,.scielo__theme--dark .bs-tooltip-start .tooltip-arrow::before{border-left-color:#fff}.scielo__theme--light .bs-tooltip-auto[data-popper-placement^=left] .tooltip-arrow::before,.scielo__theme--light .bs-tooltip-start .tooltip-arrow::before{border-left-color:#333}.scielo__loading-block{display:block;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);width:6.25rem;height:6.25rem;opacity:0;transition:opacity .5s linear;transition-delay:.5s;z-index:1050}.scielo__loading-backdrop{transition:opacity .5s linear;opacity:0;position:fixed;top:0;left:0;width:100vw;height:100vh;z-index:1040}.scielo__loading-backdrop--dark{background:#da202c}.scielo__loading-backdrop--light{background:#fff}.scielo__loading-visible .scielo__loading-backdrop,.scielo__loading-visible .scielo__loading-block{opacity:1}.scielo__loading-hide .scielo__loading-backdrop{transition-delay:.7s}.scielo__loading-hide .scielo__loading-block{transition-delay:0}.scielo__loading-inline{position:relative;display:inline-block;width:1.25rem;height:1.25rem}.scielo__loading-inline:before{content:'';box-sizing:border-box;position:absolute;top:50%;left:50%;border-radius:50%;border:2px solid rgba(0,176,230,.2);border-top-color:#fff;animation:spinner .8s linear infinite;width:1.25rem;height:1.25rem;margin-top:-.625rem;margin-left:-.625rem}.scielo__theme--dark .scielo__loading-inline:before{border-color:rgba(0,176,230,.6);border-top-color:#eee}.scielo__theme--light .scielo__loading-inline:before{border-color:rgba(0,176,230,.2);border-top-color:#fff}[class*=b3__btn-with-icon] .scielo__loading-inline:before{border-color:#414141;border-top-color:#fff}.scielo__theme--dark [class*=b3__btn-with-icon] .scielo__loading-inline:before{border-color:#414141;border-top-color:#fff}[class*=b3__btn-with-icon--left] .scielo__loading-inline:before{padding-left:2rem}[class*=b3__btn-with-icon--left] .scielo__loading-inline:before [class^=material-icons]{position:absolute;top:50%;transform:translateY(-50%);width:1.25rem;height:1.25rem;font-size:1.25rem;line-height:1.25rem}[class*=b3__btn-with-icon--left] .scielo__loading-inline:before [class^=material-icons]:before{vertical-align:top}[class*=b3__btn-with-icon--left] .scielo__loading-inline:before [class^=material-icons]{left:.5rem}[class*=b3__btn-with-icon--right] .scielo__loading-inline:before{padding-right:2rem}[class*=b3__btn-with-icon--right] .scielo__loading-inline:before [class^=material-icons]{position:absolute;top:50%;transform:translateY(-50%);width:1.25rem;height:1.25rem;font-size:1.25rem;line-height:1.25rem}[class*=b3__btn-with-icon--right] .scielo__loading-inline:before [class^=material-icons]:before{vertical-align:top}[class*=b3__btn-with-icon--right] .scielo__loading-inline:before [class^=material-icons]{right:.5rem}.btn-group-lg>.btn .scielo__loading-inline,.btn-lg .scielo__loading-inline{width:1.5rem;height:1.5rem}.btn-group-lg>.btn .scielo__loading-inline:before,.btn-lg .scielo__loading-inline:before{width:1.5rem;height:1.5rem;margin-top:-.75rem;margin-left:-.75rem}@keyframes spinner{to{transform:rotate(360deg)}}@keyframes spinner-border{to{transform:rotate(360deg)}}.spinner-border{display:inline-block;width:2rem;height:2rem;vertical-align:top;border:.25em solid currentColor;border-right-color:transparent;border-radius:50%;animation:.75s linear infinite spinner-border}.spinner-border-sm{width:1.2em;height:1.2em;border-width:.13em}@keyframes spinner-grow{0%{transform:scale(0)}50%{opacity:1;transform:none}}.spinner-grow{display:inline-block;width:2rem;height:2rem;vertical-align:text-bottom;background-color:currentColor;border-radius:50%;opacity:0;animation:.75s linear infinite spinner-grow}.spinner-grow-sm{width:1.2em;height:1.2em}@media (prefers-reduced-motion:reduce){.spinner-border,.spinner-grow{animation-duration:1.5s}}[class*=" sci-ico-"],[class^=sci-ico-]{display:inline-block;font-size:24px;height:24px;line-height:1}.article-title [class*=" sci-ico-"],.article-title [class^=sci-ico-]{float:none}.article [class*=" sci-ico-"],.article [class^=sci-ico-]{vertical-align:text-bottom;margin-right:3px}.modal-body [class*=" sci-ico-"],.modal-body [class^=sci-ico-]{margin-right:0}[class*=" sci-ico-"]:before,[class^=sci-ico-]:before{font-family:'Material Icons Outlined';color:inherit}.sci-ico-top:before{content:"vertical_align_top"}.sci-ico-home:before{content:"home"}.sci-ico-zoom:before{content:"zoom_in"}.sci-ico-translation:before{content:"translate"}.sci-ico-socialEmail:before,.sci-ico-socialFacebook:before,.sci-ico-socialGooglePlus:before,.sci-ico-socialOther:before,.sci-ico-socialTwitter:before,.sci-ico-socialTwitterSingle:before{content:"share"}.sci-ico-similar:before{content:"playlist_add"}.sci-ico-newWindow:before{content:"open_in_new"}.sci-ico-metrics:before{content:"show_chart"}.sci-ico-citation:before,.sci-ico-link:before{content:"link"}.sci-ico-home:before{content:"home"}.sci-ico-floatingMenuDefault:before{content:"more_horiz"}.sci-ico-floatingMenuClose:before{content:"close"}.sci-ico-download:before,.sci-ico-fileCSV:before,.sci-ico-fileEPUB:before,.sci-ico-filePDF:before,.sci-ico-fileXML:before{content:"file_download"}.sci-ico-fileTable:before{content:"table_chart"}.sci-ico-fileFormula:before{content:"functions"}.sci-ico-figures:before,.sci-ico-fileFigure:before{content:"image"}.sci-ico-email:before,.sci-ico-emailOutlined:before{content:"email"}.sci-ico-arrowUp:before{content:"keyboard_arrow_up"}.sci-ico-arrowRight:before{content:"keyboard_arrow_right"}.sci-ico-arrowLeft:before{content:"keyboard_arrow_left"}.sci-ico-arrowDown:before{content:"keyboard_arrow_down"}.sci-ico-socialRSS:before{content:"rss_feed"}.sci-ico-pin:before{content:"location_on"}.sci-ico-copy:before{content:"content_copy"}.sci-ico-authorInstruction:before{content:"help_outline"}.sci-ico-about:before{content:"info"}.sci-ico-check:before{content:"check"}.sci-ico-top:before{content:"vertical_align_top"}.sci-ico-cc,.sci-ico-cc-by,.sci-ico-cc-nc,.sci-ico-cc-nd,.sci-ico-cc-sa,.sci-ico-cr,.sci-ico-public-domain{display:none}.scielo__sidenav__bottom-menu{display:none}@media screen and (min-width:768px){.scielo__sidenav__bottom-menu{display:block;position:fixed;transition:.5s all;left:0;bottom:0;width:16.875rem}.scielo__theme--dark .scielo__sidenav__bottom-menu{background:#414141}.scielo__sidenav__bottom-menu ul{width:16.875rem}.scielo__sidenav__bottom-menu .scielo__ico--double_arrow_left:before{transition:.25s all}}@media screen and (min-width:768px){.scielo__sidenav__header{display:grid;grid-template-columns:16.875rem auto;transition:.5s all}}.scielo__sidenav__header .scielo__sidenav__toggle{position:absolute;right:16px;top:50%;transform:translateY(-50%);padding-left:1rem;padding-right:1rem}.scielo__sidenav__header-brand,.scielo__sidenav__header-site{position:relative;padding:.75rem 1rem}.scielo__sidenav__header-brand{line-height:2.25rem;padding-left:1.3125rem}.scielo__sidenav__header-brand .scielo__logo--small{vertical-align:middle}@media screen and (min-width:768px){.scielo__sidenav__header-brand{position:fixed;top:0;z-index:2;transition:.5s all;grid-column:1;width:16.875rem;line-height:3rem}}@media screen and (min-width:768px){.scielo__sidenav__header-site{transition:.5s all;grid-column:2;display:grid;grid-template-columns:35% auto;grid-template-rows:3rem;border-bottom:1px solid #efeeec;padding-left:1.5rem;padding-right:1.5rem}}@media screen and (min-width:992px){.scielo__sidenav__header-site{grid-template-columns:45% auto;padding-left:2rem;padding-right:2rem}}@media screen and (min-width:1200px){.scielo__sidenav__header-site{padding-left:2.5rem;padding-right:2.5rem}}.scielo__sidenav__header-functions{display:grid;grid-template-columns:80% 20%;grid-template-areas:"a b" "c c"}.scielo__sidenav__header-functions .btn{margin-bottom:0}.scielo__sidenav__header-functions .btn+.badge{margin-bottom:.2rem;margin-left:-1.8rem;pointer-events:none}.scielo__sidenav__header-functions .input-group.is-search input{max-width:10.625rem}@media screen and (min-width:768px){.scielo__sidenav__header-functions .input-group.is-search input{max-width:100%}}@media screen and (min-width:768px){.scielo__sidenav__header-functions{grid-column:2;grid-template-columns:repeat(auto-fit,minmax(100px,1fr));grid-gap:.75rem;grid-template-areas:"c b a"}}.scielo__sidenav__header-functions__item{grid-area:a;white-space:nowrap}.scielo__sidenav__header-functions__item--small{grid-area:b;text-align:right;white-space:nowrap}.scielo__sidenav__header-functions__item--large{grid-area:c;white-space:nowrap}.scielo__sidenav__header-title{font-size:1.125rem;color:#c4c4c4;border-bottom:1px solid #414141;padding-bottom:.75rem;margin-bottom:1.5rem;margin-left:-1rem;margin-right:-1rem;padding-left:1rem;padding-right:1rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}@media screen and (min-width:768px){.scielo__sidenav__header-title{grid-column:1;margin:0;padding:0;color:#333;font-weight:700;font-size:1.3125rem;line-height:1.25em;letter-spacing:0;font-weight:400;line-height:3rem;border-bottom:none}}@media screen and (min-width:768px){.scielo__sidenav__menu{position:fixed;left:0;top:4.5rem;bottom:3rem;transition:.5s all;overflow-y:auto;overflow-x:hidden;width:16.875rem}.scielo__sidenav__menu ul{width:16.875rem}.scielo__sidenav__menu-item{transition:.25s all;transition-delay:.5s;opacity:1;display:inline-block}}@media screen and (max-width:767px){.scielo__theme--dark .scielo__sidenav{border-bottom:1px solid #393939}}@media screen and (min-width:768px){.scielo__theme--dark .scielo__sidenav__bottom-menu,.scielo__theme--dark .scielo__sidenav__menu{border-right:1px solid #393939}}@media screen and (min-width:768px){.scielo__theme--dark .scielo__sidenav__header-brand,.scielo__theme--dark .scielo__sidenav__header-site{border-bottom:1px solid #393939}}@media screen and (max-width:767px){.scielo__theme--dark .scielo__sidenav__header-title{background:#333;color:#c4c4c4;border-bottom:1px solid #414141;margin-top:-.8rem;padding-top:.8rem}}@media screen and (max-width:767px){.scielo__sidenav+.container{padding-top:5.25rem}}@media screen and (min-width:768px){.scielo__sidenav+.container{transition:.5s all;padding-left:18.375rem;padding-right:1.5rem;max-width:100%!important}}@media screen and (min-width:992px){.scielo__sidenav+.container{padding-left:18.875rem;padding-right:2rem}}@media screen and (min-width:1200px){.scielo__sidenav+.container{padding-left:19.375rem;padding-right:2.5rem}}@media screen and (max-width:767px){.scielo__sidenav{position:fixed;top:0;width:100%;height:3.75rem;overflow:hidden;transition:.5s;z-index:9}.scielo__sidenav--opened{height:100vh;overflow:auto}.scielo__sidenav--opened .scielo__sidenav__toggle-text--closed{display:none}.scielo__sidenav--opened .scielo__sidenav__header .scielo__sidenav__toggle{padding:0;width:2rem}.scielo__sidenav--opened .scielo__sidenav__header .scielo__sidenav__toggle [class^=material-icons]{position:absolute;top:50%;transform:translateY(-50%);width:1.25rem;height:1.25rem;font-size:1.25rem;line-height:1.25rem}.scielo__sidenav--opened .scielo__sidenav__header .scielo__sidenav__toggle [class^=material-icons]:before{vertical-align:top}.scielo__sidenav--opened .scielo__sidenav__header .scielo__sidenav__toggle [class^=material-icons]{top:50%;left:50%;transform:translate(-50%,-50%)}}@media screen and (min-width:768px){.scielo__sidenav--minimized .scielo__sidenav__bottom-menu,.scielo__sidenav--minimized .scielo__sidenav__header-brand,.scielo__sidenav--minimized .scielo__sidenav__menu{overflow-x:hidden;width:4.5rem}.scielo__sidenav--minimized .scielo__sidenav__header{grid-template-columns:4.5rem auto}.scielo__sidenav--minimized .scielo__sidenav__bottom-menu .scielo__ico--double_arrow_left:before{transform:rotate(180deg)}.scielo__sidenav--minimized .scielo__sidenav__menu-item{opacity:0}}@media screen and (min-width:768px) and (min-width:768px){.scielo__sidenav--minimized+.container{padding-left:6rem}}@media screen and (min-width:768px) and (min-width:992px){.scielo__sidenav--minimized+.container{padding-left:6.5rem}}@media screen and (min-width:768px) and (min-width:1200px){.scielo__sidenav--minimized+.container{padding-left:7rem}}.scielo__text-color--light{color:#333!important}.scielo__text-color--dark{color:#c4c4c4!important}.scielo__text-color__emphasis--light{color:#00314c!important}.scielo__text-color__emphasis--dark{color:#eee!important}.scielo__text-color__menu--light{color:#fff!important}.scielo__text-color__menu--dark{color:#eee!important}.scielo__text-color__interaction--light{color:#3867ce!important}.scielo__text-color__interaction--dark{color:#86acff!important}.scielo__text-color__positive--light{color:#2c9d45!important}.scielo__text-color__positive--dark{color:#2c9d45!important}.scielo__text-color__negative--light{color:#c63800!important}.scielo__text-color__negative--dark{color:#ff7e4a!important}.scielo__bg__gray--1{background-color:#f7f6f4!important}.scielo__bg__gray--2{background-color:#efeeec!important}.scielo__bg__white--1{background-color:#393939!important}.scielo__bg__white--2{background-color:#414141!important}.scielo__border-top{border-top:2px solid #fff!important}.scielo__theme--dark .scielo__border-top{border-top-color:#eee!important}.scielo__theme--light .scielo__border-top{border-top-color:#fff!important}.scielo__border-bottom{border-bottom:2px solid #fff!important}.scielo__theme--dark .scielo__border-bottom{border-bottom-color:#eee!important}.scielo__theme--light .scielo__border-bottom{border-bottom-color:#fff!important}.scielo__padding-top{padding-top:1.5rem}.scielo__padding-top--small{padding-top:.75rem}.scielo__padding-top--large{padding-top:3rem}.scielo__padding-top--none{padding-top:0}.scielo__padding-bottom{padding-bottom:1.5rem}.scielo__padding-bottom--small{padding-bottom:.75rem}.scielo__padding-bottom--large{padding-bottom:3rem}.scielo__padding-bottom--none{padding-bottom:0}.scielo__padding-top-bottom{padding-top:1.5rem;padding-bottom:1.5rem}.scielo__padding-top-bottom--small{padding-top:.75rem;padding-bottom:.75rem}.scielo__padding-top-bottom--large{padding-top:3rem;padding-bottom:3rem}.scielo__padding-top-bottom--none{padding-top:0;padding-bottom:0}.scielo__padding-left{padding-left:1.5rem}.scielo__padding-left--small{padding-left:.75rem}.scielo__padding-left--large{padding-left:3rem}.scielo__padding-left--none{padding-left:0}.scielo__padding-right{padding-right:1.5rem}.scielo__padding-right--small{padding-right:.75rem}.scielo__padding-right--large{padding-right:3rem}.scielo__padding-right--none{padding-right:0}.scielo__padding-left-right{padding-left:1.5rem;padding-right:1.5rem}.scielo__padding-left-right--small{padding-left:.75rem;padding-right:.75rem}.scielo__padding-left-right--large{padding-left:3rem;padding-right:3rem}.scielo__padding-left-right--none{padding-left:0;padding-right:0}.scielo__margin-top{margin-top:1.5rem!important}.scielo__margin-top--small{margin-top:.75rem!important}.scielo__margin-top--large{margin-top:3rem!important}.scielo__margin-top--none{margin-top:0}.scielo__margin-bottom{margin-bottom:1.5rem!important}.scielo__margin-bottom--small{margin-bottom:.75rem!important}.scielo__margin-bottom--large{margin-bottom:3rem!important}.scielo__margin-bottom--none{margin-bottom:0}.scielo__margin-top-bottom{margin-top:1.5rem!important;margin-bottom:1.5rem!important}.scielo__margin-top-bottom--small{margin-top:.75rem!important;margin-bottom:.75rem!important}.scielo__margin-top-bottom--large{margin-top:3rem!important;margin-bottom:3rem!important}.scielo__margin-top-bottom--none{margin-top:0!important;margin-bottom:0!important}.scielo__margin-left{margin-left:1.5rem!important}.scielo__margin-left--small{margin-left:.75rem!important}.scielo__margin-left--large{margin-left:3rem!important}.scielo__margin-left--none{margin-left:0!important}.scielo__margin-right{margin-right:1.5rem!important}.scielo__margin-right--small{margin-right:.75rem!important}.scielo__margin-right--large{margin-right:3rem!important}.scielo__margin-right--none{margin-right:0!important}.scielo__margin-left-right{margin-left:1.5rem!important;margin-right:1.5rem!important}.scielo__margin-left-right--small{margin-left:.75rem!important;margin-right:.75rem!important}.scielo__margin-left-right--large{margin-left:3rem!important;margin-right:3rem!important}.scielo__margin-left-right--none{margin-left:0!important;margin-right:0!important} +/*# sourceMappingURL=bootstrap.css.map */ diff --git a/core/static/journal_about/css/bootstrap.css.map b/core/static/journal_about/css/bootstrap.css.map new file mode 100644 index 0000000..320ac52 --- /dev/null +++ b/core/static/journal_about/css/bootstrap.css.map @@ -0,0 +1 @@ +{"version":3,"sources":["bootstrap.scss","../../common/scss/_base/_typography.scss","../../common/scss/_objects/_icons.scss","../../common/scss/_mixins/_themeSet.scss","bootstrap.css","../../common/scss/_mixins/_shadow.scss","../../../node_modules/bootstrap/scss/_root.scss","../../../node_modules/bootstrap/scss/_reboot.scss","../../../node_modules/bootstrap/scss/_type.scss","../../../node_modules/bootstrap/scss/_images.scss","../../../node_modules/bootstrap/scss/_containers.scss","../../../node_modules/bootstrap/scss/mixins/_breakpoints.scss","../../../node_modules/bootstrap/scss/_grid.scss","../../../node_modules/bootstrap/scss/mixins/_grid.scss","../../../node_modules/bootstrap/scss/_tables.scss","../../../node_modules/bootstrap/scss/mixins/_table-variants.scss","../../../node_modules/bootstrap/scss/forms/_labels.scss","../../../node_modules/bootstrap/scss/forms/_form-text.scss","../../../node_modules/bootstrap/scss/forms/_form-control.scss","../../../node_modules/bootstrap/scss/forms/_form-select.scss","../../../node_modules/bootstrap/scss/forms/_form-check.scss","../../../node_modules/bootstrap/scss/forms/_form-range.scss","../../../node_modules/bootstrap/scss/forms/_floating-labels.scss","../../../node_modules/bootstrap/scss/forms/_input-group.scss","../../../node_modules/bootstrap/scss/mixins/_forms.scss","../../../node_modules/bootstrap/scss/_buttons.scss","../../../node_modules/bootstrap/scss/_transitions.scss","../../../node_modules/bootstrap/scss/_dropdown.scss","../../../node_modules/bootstrap/scss/mixins/_caret.scss","../../../node_modules/bootstrap/scss/_button-group.scss","../../../node_modules/bootstrap/scss/_nav.scss","../../../node_modules/bootstrap/scss/_navbar.scss","../../../node_modules/bootstrap/scss/_card.scss","../../../node_modules/bootstrap/scss/_accordion.scss","../../../node_modules/bootstrap/scss/_breadcrumb.scss","../../../node_modules/bootstrap/scss/_pagination.scss","../../../node_modules/bootstrap/scss/mixins/_pagination.scss","../../../node_modules/bootstrap/scss/_badge.scss","../../../node_modules/bootstrap/scss/_alert.scss","../../../node_modules/bootstrap/scss/_progress.scss","../../../node_modules/bootstrap/scss/_list-group.scss","../../../node_modules/bootstrap/scss/mixins/_list-group.scss","../../../node_modules/bootstrap/scss/_close.scss","../../../node_modules/bootstrap/scss/_toasts.scss","../../../node_modules/bootstrap/scss/_modal.scss","../../../node_modules/bootstrap/scss/_tooltip.scss","../../../node_modules/bootstrap/scss/_popover.scss","../../../node_modules/bootstrap/scss/_carousel.scss","../../../node_modules/bootstrap/scss/_spinners.scss","../../../node_modules/bootstrap/scss/mixins/_clearfix.scss","../../../node_modules/bootstrap/scss/helpers/_colored-links.scss","../../../node_modules/bootstrap/scss/helpers/_ratio.scss","../../../node_modules/bootstrap/scss/helpers/_position.scss","../../../node_modules/bootstrap/scss/helpers/_visually-hidden.scss","../../../node_modules/bootstrap/scss/helpers/_stretched-link.scss","../../../node_modules/bootstrap/scss/helpers/_text-truncation.scss","../../../node_modules/bootstrap/scss/mixins/_utilities.scss","../../../node_modules/bootstrap/scss/utilities/_api.scss","../../common/scss/_generic/_font.scss","../../common/scss/_base/_selection.scss","../../common/scss/_objects/_themes.scss","../../common/scss/_objects/_grid-fixes.scss","../../common/scss/_mixins/_breakpoints.scss","../../common/scss/_objects/_font-fixes.scss","../../common/scss/_objects/_logos.scss","../../common/scss/_components/_logo.scss","../../common/scss/_components/_buttons.scss","../../common/scss/_components/_button-group.scss","../../common/scss/_components/_float-button.scss","../../../node_modules/nouislider/distribute/nouislider.css","../../common/scss/_components/_form-file.scss","../../../node_modules/pickadate/lib/themes/default.css","../../../node_modules/pickadate/lib/themes/default.date.css","../../common/scss/_components/_form-datepicker.scss","../../common/scss/_components/_nav-menu.scss","../../common/scss/_components/_nav-pagination.scss","../../common/scss/_components/_nav-footer.scss","../../common/scss/_components/_container-accordion.scss","../../common/scss/_components/_container-table.scss","../../common/scss/_components/_container-tabs.scss","../../common/scss/_components/_container-slick.scss","../../common/scss/_components/_container-language.scss","../../common/scss/_components/_container-level-menu.scss","../../common/scss/_components/_container-search-article.scss","../../common/scss/_components/_container-author-article.scss","../../common/scss/_components/_media-loading.scss","../../common/scss/_components/_media-spinners.scss","../../common/scss/_components/_media-old-icons.scss","../../common/scss/_components/_sidebar.scss","../../common/scss/_utils/_colorUtils.scss","../../common/scss/_utils/_spaceUtils.scss"],"names":[],"mappings":"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F,KAAA,EAAA,EAAA,KACA,MAAA,IS3iBE,cT8iBF,KAAA,EAAA,EAAA,KACA,MAAA,US/iBE,cTkjBF,KAAA,EAAA,EAAA,KACA,MAAA,ISnjBE,cTsjBF,KAAA,EAAA,EAAA,KACA,MAAA,ISvjBE,cT0jBF,KAAA,EAAA,EAAA,KACA,MAAA,US1hBM,UT6hBN,KAAA,EAAA,EAAA,KACA,MAAA,KSxhBU,OT2hBV,KAAA,EAAA,EAAA,KACA,MAAA,SS5hBU,OT+hBV,KAAA,EAAA,EAAA,KACA,MAAA,UShiBU,OTmiBV,KAAA,EAAA,EAAA,KACA,MAAA,ISpiBU,OTuiBV,KAAA,EAAA,EAAA,KACA,MAAA,USxiBU,OT2iBV,KAAA,EAAA,EAAA,KACA,MAAA,US5iBU,OT+iBV,KAAA,EAAA,EAAA,KACA,MAAA,IShjBU,OTmjBV,KAAA,EAAA,EAAA,KACA,MAAA,USpjBU,OTujBV,KAAA,EAAA,EAAA,KACA,MAAA,USxjBU,OT2jBV,KAAA,EAAA,EAAA,KACA,MAAA,IS5jBU,QT+jBV,KAAA,EAAA,EAAA,KACA,MAAA,UShkBU,QTmkBV,KAAA,EAAA,EAAA,KACA,MAAA,USpkBU,QTukBV,KAAA,EAAA,EAAA,KACA,MAAA,KShkBY,UTmkBZ,YAAA,SSnkBY,UTskBZ,YAAA,UStkBY,UTykBZ,YAAA,ISzkBY,UT4kBZ,YAAA,US5kBY,UT+kBZ,YAAA,US/kBY,UTklBZ,YAAA,ISllBY,UTqlBZ,YAAA,USrlBY,UTwlBZ,YAAA,USxlBY,UT2lBZ,YAAA,IS3lBY,WT8lBZ,YAAA,US9lBY,WTimBZ,YAAA,UStlBQ,KACA,MTylBR,kBAAA,ESrlBQ,KACA,MTwlBR,kBAAA,ES9lBQ,KACA,MTimBR,kBAAA,QS7lBQ,KACA,MTgmBR,kBAAA,QStmBQ,KACA,MTymBR,kBAAA,OSrmBQ,KACA,MTwmBR,kBAAA,OS9mBQ,KACA,MTinBR,kBAAA,KS7mBQ,KACA,MTgnBR,kBAAA,KStnBQ,KACA,MTynBR,kBAAA,OSrnBQ,KACA,MTwnBR,kBAAA,OS9nBQ,KACA,MTioBR,kBAAA,KS7nBQ,KACA,MTgoBR,kBAAA,KOlrBI,yBPqrBJ,QACA,KAAA,EAAA,EAAA,GACA,oBACA,KAAA,EAAA,EAAA,KACA,MAAA,KACA,iBACA,KAAA,EAAA,EAAA,KACA,MAAA,KACA,iBACA,KAAA,EAAA,EAAA,KACA,MAAA,IACA,iBACA,KAAA,EAAA,EAAA,KACA,MAAA,UACA,iBACA,KAAA,EAAA,EAAA,KACA,MAAA,IACA,iBACA,KAAA,EAAA,EAAA,KACA,MAAA,IACA,iBACA,KAAA,EAAA,EAAA,KACA,MAAA,UACA,aACA,KAAA,EAAA,EAAA,KACA,MAAA,KACA,UACA,KAAA,EAAA,EAAA,KACA,MAAA,SACA,UACA,KAAA,EAAA,EAAA,KACA,MAAA,UACA,UACA,KAAA,EAAA,EAAA,KACA,MAAA,IACA,UACA,KAAA,EAAA,EAAA,KACA,MAAA,UACA,UACA,KAAA,EAAA,EAAA,KACA,MAAA,UACA,UACA,KAAA,EAAA,EAAA,KACA,MAAA,IACA,UACA,KAAA,EAAA,EAAA,KACA,MAAA,UACA,UACA,KAAA,EAAA,EAAA,KACA,MAAA,UACA,UACA,KAAA,EAAA,EAAA,KACA,MAAA,IACA,WACA,KAAA,EAAA,EAAA,KACA,MAAA,UACA,WACA,KAAA,EAAA,EAAA,KACA,MAAA,UACA,WACA,KAAA,EAAA,EAAA,KACA,MAAA,KACA,aACA,YAAA,EACA,aACA,YAAA,SACA,aACA,YAAA,UACA,aACA,YAAA,IACA,aACA,YAAA,UACA,aACA,YAAA,UACA,aACA,YAAA,IACA,aACA,YAAA,UACA,aACA,YAAA,UACA,aACA,YAAA,IACA,cACA,YAAA,UACA,cACA,YAAA,UACA,QACA,SACA,kBAAA,EACA,QACA,SACA,kBAAA,EACA,QACA,SACA,kBAAA,QACA,QACA,SACA,kBAAA,QACA,QACA,SACA,kBAAA,OACA,QACA,SACA,kBAAA,OACA,QACA,SACA,kBAAA,KACA,QACA,SACA,kBAAA,KACA,QACA,SACA,kBAAA,OACA,QACA,SACA,kBAAA,OACA,QACA,SACA,kBAAA,KACA,QACA,SACA,kBAAA,MO9yBI,yBPizBJ,QACA,KAAA,EAAA,EAAA,GACA,oBACA,KAAA,EAAA,EAAA,KACA,MAAA,KACA,iBACA,KAAA,EAAA,EAAA,KACA,MAAA,KACA,iBACA,KAAA,EAAA,EAAA,KACA,MAAA,IACA,iBACA,KAAA,EAAA,EAAA,KACA,MAAA,UACA,iBACA,KAAA,EAAA,EAAA,KACA,MAAA,IACA,iBACA,KAAA,EAAA,EAAA,KACA,MAAA,IACA,iBACA,KAAA,EAAA,EAAA,KACA,MAAA,UACA,aACA,KAAA,EAAA,EAAA,KACA,MAAA,KACA,UACA,KAAA,EAAA,EAAA,KACA,MAAA,SACA,UACA,KAAA,EAAA,EAAA,KACA,MAAA,UACA,UACA,KAAA,EAAA,EAAA,KACA,MAAA,IACA,UACA,KAAA,EAAA,EAAA,KACA,MAAA,UACA,UACA,KAAA,EAAA,EAAA,KACA,MAAA,UACA,UACA,KAAA,EAAA,EAAA,KACA,MAAA,IACA,UACA,KAAA,EAAA,EAAA,KACA,MAAA,UACA,UACA,KAAA,EAAA,EAAA,KACA,MAAA,UACA,UACA,KAAA,EAAA,EAAA,KACA,MAAA,IACA,WACA,KAAA,EAAA,EAAA,KACA,MAAA,UACA,WACA,KAAA,EAAA,EAAA,KACA,MAAA,UACA,WACA,KAAA,EAAA,EAAA,KACA,MAAA,KACA,aACA,YAAA,EACA,aACA,YAAA,SACA,aACA,YAAA,UACA,aACA,YAAA,IACA,aACA,YAAA,UACA,aACA,YAAA,UACA,aACA,YAAA,IACA,aACA,YAAA,UACA,aACA,YAAA,UACA,aACA,YAAA,IACA,cACA,YAAA,UACA,cACA,YAAA,UACA,QACA,SACA,kBAAA,EACA,QACA,SACA,kBAAA,EACA,QACA,SACA,kBAAA,QACA,QACA,SACA,kBAAA,QACA,QACA,SACA,kBAAA,OACA,QACA,SACA,kBAAA,OACA,QACA,SACA,kBAAA,KACA,QACA,SACA,kBAAA,KACA,QACA,SACA,kBAAA,OACA,QACA,SACA,kBAAA,OACA,QACA,SACA,kBAAA,KACA,QACA,SACA,kBAAA,MO16BI,yBP66BJ,QACA,KAAA,EAAA,EAAA,GACA,oBACA,KAAA,EAAA,EAAA,KACA,MAAA,KACA,iBACA,KAAA,EAAA,EAAA,KACA,MAAA,KACA,iBACA,KAAA,EAAA,EAAA,KACA,MAAA,IACA,iBACA,KAAA,EAAA,EAAA,KACA,MAAA,UACA,iBACA,KAAA,EAAA,EAAA,KACA,MAAA,IACA,iBACA,KAAA,EAAA,EAAA,KACA,MAAA,IACA,iBACA,KAAA,EAAA,EAAA,KACA,MAAA,UACA,aACA,KAAA,EAAA,EAAA,KACA,MAAA,KACA,UACA,KAAA,EAAA,EAAA,KACA,MAAA,SACA,UACA,KAAA,EAAA,EAAA,KACA,MAAA,UACA,UACA,KAAA,EAAA,EAAA,KACA,MAAA,IACA,UACA,KAAA,EAAA,EAAA,KACA,MAAA,UACA,UACA,KAAA,EAAA,EAAA,KACA,MAAA,UACA,UACA,KAAA,EAAA,EAAA,KACA,MAAA,IACA,UACA,KAAA,EAAA,EAAA,KACA,MAAA,UACA,UACA,KAAA,EAAA,EAAA,KACA,MAAA,UACA,UACA,KAAA,EAAA,EAAA,KACA,MAAA,IACA,WACA,KAAA,EAAA,EAAA,KACA,MAAA,UACA,WACA,KAAA,EAAA,EAAA,KACA,MAAA,UACA,WACA,KAAA,EAAA,EAAA,KACA,MAAA,KACA,aACA,YAAA,EACA,aACA,YAAA,SACA,aACA,YAAA,UACA,aACA,YAAA,IACA,aACA,YAAA,UACA,aACA,YAAA,UACA,aACA,YAAA,IACA,aACA,YAAA,UACA,aACA,YAAA,UACA,aACA,YAAA,IACA,cACA,YAAA,UACA,cACA,YAAA,UACA,QACA,SACA,kBAAA,EACA,QACA,SACA,kBAAA,EACA,QACA,SACA,kBAAA,QACA,QACA,SACA,kBAAA,QACA,QACA,SACA,kBAAA,OACA,QACA,SACA,kBAAA,OACA,QACA,SACA,kBAAA,KACA,QACA,SACA,kBAAA,KACA,QACA,SACA,kBAAA,OACA,QACA,SACA,kBAAA,OACA,QACA,SACA,kBAAA,KACA,QACA,SACA,kBAAA,MOtiCI,0BPyiCJ,QACA,KAAA,EAAA,EAAA,GACA,oBACA,KAAA,EAAA,EAAA,KACA,MAAA,KACA,iBACA,KAAA,EAAA,EAAA,KACA,MAAA,KACA,iBACA,KAAA,EAAA,EAAA,KACA,MAAA,IACA,iBACA,KAAA,EAAA,EAAA,KACA,MAAA,UACA,iBACA,KAAA,EAAA,EAAA,KACA,MAAA,IACA,iBACA,KAAA,EAAA,EAAA,KACA,MAAA,IACA,iBACA,KAAA,EAAA,EAAA,KACA,MAAA,UACA,aACA,KAAA,EAAA,EAAA,KACA,MAAA,KACA,UACA,KAAA,EAAA,EAAA,KACA,MAAA,SACA,UACA,KAAA,EAAA,EAAA,KACA,MAAA,UACA,UACA,KAAA,EAAA,EAAA,KACA,MAAA,IACA,UACA,KAAA,EAAA,EAAA,KACA,MAAA,UACA,UACA,KAAA,EAAA,EAAA,KACA,MAAA,UACA,UACA,KAAA,EAAA,EAAA,KACA,MAAA,IACA,UACA,KAAA,EAAA,EAAA,KACA,MAAA,UACA,UACA,KAAA,EAAA,EAAA,KACA,MAAA,UACA,UACA,KAAA,EAAA,EAAA,KACA,MAAA,IACA,WACA,KAAA,EAAA,EAAA,KACA,MAAA,UACA,WACA,KAAA,EAAA,EAAA,KACA,MAAA,UACA,WACA,KAAA,EAAA,EAAA,KACA,MAAA,KACA,aACA,YAAA,EACA,aACA,YAAA,SACA,aACA,YAAA,UACA,aACA,YAAA,IACA,aACA,YAAA,UACA,aACA,YAAA,UACA,aACA,YAAA,IACA,aACA,YAAA,UACA,aACA,YAAA,UACA,aACA,YAAA,IACA,cACA,YAAA,UACA,cACA,YAAA,UACA,QACA,SACA,kBAAA,EACA,QACA,SACA,kBAAA,EACA,QACA,SACA,kBAAA,QACA,QACA,SACA,kBAAA,QACA,QACA,SACA,kBAAA,OACA,QACA,SACA,kBAAA,OACA,QACA,SACA,kBAAA,KACA,QACA,SACA,kBAAA,KACA,QACA,SACA,kBAAA,OACA,QACA,SACA,kBAAA,OACA,QACA,SACA,kBAAA,KACA,QACA,SACA,kBAAA,MOlqCI,0BPqqCJ,SACA,KAAA,EAAA,EAAA,GACA,qBACA,KAAA,EAAA,EAAA,KACA,MAAA,KACA,kBACA,KAAA,EAAA,EAAA,KACA,MAAA,KACA,kBACA,KAAA,EAAA,EAAA,KACA,MAAA,IACA,kBACA,KAAA,EAAA,EAAA,KACA,MAAA,UACA,kBACA,KAAA,EAAA,EAAA,KACA,MAAA,IACA,kBACA,KAAA,EAAA,EAAA,KACA,MAAA,IACA,kBACA,KAAA,EAAA,EAAA,KACA,MAAA,UACA,cACA,KAAA,EAAA,EAAA,KACA,MAAA,KACA,WACA,KAAA,EAAA,EAAA,KACA,MAAA,SACA,WACA,KAAA,EAAA,EAAA,KACA,MAAA,UACA,WACA,KAAA,EAAA,EAAA,KACA,MAAA,IACA,WACA,KAAA,EAAA,EAAA,KACA,MAAA,UACA,WACA,KAAA,EAAA,EAAA,KACA,MAAA,UACA,WACA,KAAA,EAAA,EAAA,KACA,MAAA,IACA,WACA,KAAA,EAAA,EAAA,KACA,MAAA,UACA,WACA,KAAA,EAAA,EAAA,KACA,MAAA,UACA,WACA,KAAA,EAAA,EAAA,KACA,MAAA,IACA,YACA,KAAA,EAAA,EAAA,KACA,MAAA,UACA,YACA,KAAA,EAAA,EAAA,KACA,MAAA,UACA,YACA,KAAA,EAAA,EAAA,KACA,MAAA,KACA,cACA,YAAA,EACA,cACA,YAAA,SACA,cACA,YAAA,UACA,cACA,YAAA,IACA,cACA,YAAA,UACA,cACA,YAAA,UACA,cACA,YAAA,IACA,cACA,YAAA,UACA,cACA,YAAA,UACA,cACA,YAAA,IACA,eACA,YAAA,UACA,eACA,YAAA,UACA,SACA,UACA,kBAAA,EACA,SACA,UACA,kBAAA,EACA,SACA,UACA,kBAAA,QACA,SACA,UACA,kBAAA,QACA,SACA,UACA,kBAAA,OACA,SACA,UACA,kBAAA,OACA,SACA,UACA,kBAAA,KACA,SACA,UACA,kBAAA,KACA,SACA,UACA,kBAAA,OACA,SACA,UACA,kBAAA,OACA,SACA,UACA,kBAAA,KACA,SACA,UACA,kBAAA,MUz1CA,OV41CA,kBAAA,YACA,6BAAA,QACA,0BAAA,oBACA,4BAAA,QACA,yBAAA,mBACA,2BAAA,QACA,wBAAA,qBACA,MAAA,KACA,cAAA,KACA,MAAA,QACA,eAAA,IA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,oBACA,UACA,UAAA,OOn/HI,yBPs/HJ,UACA,UACA,UAAA,OOx/HI,0BP2/HJ,UACA,UAAA,QwCz2HI,kBxC42HJ,MAAA,MACA,UAAA,KACA,OAAA,KACA,OAAA,EACA,iCACA,OAAA,KACA,OAAA,EACA,cAAA,EACA,gCACA,cAAA,EACA,8BACA,WAAA,KACA,gCACA,cAAA,EO//HI,4BPkgIJ,0BACA,MAAA,MACA,UAAA,KACA,OAAA,KACA,OAAA,EACA,yCACA,OAAA,KACA,OAAA,EACA,cAAA,EACA,wCACA,cAAA,EACA,sCACA,WAAA,KACA,wCACA,cAAA,GOhhII,4BPmhIJ,0BACA,MAAA,MACA,UAAA,KACA,OAAA,KACA,OAAA,EACA,yCACA,OAAA,KACA,OAAA,EACA,cAAA,EACA,wCACA,cAAA,EACA,sCACA,WAAA,KACA,wCACA,cAAA,GOjiII,4BPoiIJ,0BACA,MAAA,MACA,UAAA,KACA,OAAA,KACA,OAAA,EACA,yCACA,OAAA,KACA,OAAA,EACA,cAAA,EACA,wCACA,cAAA,EACA,sCACA,WAAA,KACA,wCACA,cAAA,GOljII,6BPqjIJ,0BACA,MAAA,MACA,UAAA,KACA,OAAA,KACA,OAAA,EACA,yCACA,OAAA,KACA,OAAA,EACA,cAAA,EACA,wCACA,cAAA,EACA,sCACA,WAAA,KACA,wCACA,cAAA,GOnkII,6BPskIJ,2BACA,MAAA,MACA,UAAA,KACA,OAAA,KACA,OAAA,EACA,0CACA,OAAA,KACA,OAAA,EACA,cAAA,EACA,yCACA,cAAA,EACA,uCACA,WAAA,KACA,yCACA,cAAA,GyC/pIA,SzCkqIA,SAAA,SACA,QAAA,KACA,QAAA,MACA,OAAA,EACA,YAAA,8BACA,WAAA,OACA,YAAA,IACA,YAAA,IACA,WAAA,KACA,WAAA,MACA,gBAAA,KACA,YAAA,KACA,eAAA,KACA,eAAA,OACA,WAAA,OACA,aAAA,OACA,YAAA,OACA,WAAA,KACA,UAAA,QACA,UAAA,WACA,QAAA,EACA,cACA,QAAA,GACA,wBACA,SAAA,SACA,QAAA,MACA,MAAA,MACA,OAAA,MACA,gCA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MAAA,cACA,OAAA,cACA,QAAA,YACA,OAAA,eACA,SAAA,iBACA,KAAA,wBACA,YAAA,iBACA,OAAA,YkDjsJA,uBlDosJA,SAAA,SACA,IAAA,EACA,MAAA,EACA,OAAA,EACA,KAAA,EACA,QAAA,EACA,QAAA,GmD1sJA,enD6sJA,SAAA,OACA,cAAA,SACA,YAAA,OoDlqJM,gBpDqqJN,eAAA,mBoDrqJM,WpDwqJN,eAAA,coDxqJM,cpD2qJN,eAAA,iBoD3qJM,cpD8qJN,eAAA,iBoD9qJM,mBpDirJN,eAAA,sBoDjrJM,gBpDorJN,eAAA,mBoDprJM,apDurJN,MAAA,eoDvrJM,WpD0rJN,MAAA,gBoD1rJM,YpD6rJN,MAAA,eoD7rJM,epDgsJN,SAAA,eoDhsJM,iBpDmsJN,SAAA,iBoDnsJM,kBpDssJN,SAAA,kBoDtsJM,iBpDysJN,SAAA,iBoDzsJM,UpD4sJN,QAAA,iBoD5sJM,gBpD+sJN,QAAA,uBoD/sJM,SpDktJN,QAAA,gBoDltJM,QpDqtJN,QAAA,eoDrtJM,SpDwtJN,QAAA,gBoDxtJM,apD2tJN,QAAA,oBoD3tJM,cpD8tJN,QAAA,qBoD9tJM,QpDiuJN,QAAA,eoDjuJM,epDouJN,QAAA,sBoDpuJM,QpDuuJN,QAAA,eoDvuJM,QpD0uJN,WAAA,EAAA,MAAA,KAAA,0BoD1uJM,WpD6uJN,WAAA,EAAA,QAAA,OAAA,2BoD7uJM,WpDgvJN,WAAA,EAAA,KAAA,KAAA,2BoDhvJM,apDmvJN,WAAA,eoDnvJM,iBpDsvJN,SAAA,iBoDtvJM,mBpDyvJN,SAAA,mBoDzvJM,mBpD4vJN,SAAA,mBoD5vJM,gBpD+vJN,SAAA,gBoD/vJM,iBpDkwJN,SAAA,iBoDlwJM,OpDqwJN,IAAA,YoDrwJM,QpDwwJN,IAAA,coDxwJM,SpD2wJN,IAAA,eoD3wJM,UpD8wJN,OAAA,YoD9wJM,WpDixJN,OAAA,coDjxJM,YpDoxJN,OAAA,eoDpxJM,SpDuxJN,KAAA,YoDvxJM,UpD0xJN,KAAA,coD1xJM,WpD6xJN,KAAA,eoD7xJM,OpDgyJN,MAAA,YoDhyJM,QpDmyJN,MAAA,coDnyJM,SpDsyJN,MAAA,eoDtyJM,kBpDyyJN,UAAA,+BoDzyJM,oBpD4yJN,UAAA,2BoD5yJM,oBpD+yJN,UAAA,2BoD/yJM,QpDkzJN,OAAA,IAAA,MAAA,yBoDlzJM,UpDqzJN,OAAA,YoDrzJM,YpDwzJN,WAAA,IAAA,MAAA,yBoDxzJM,cpD2zJN,WAAA,YoD3zJM,YpD8zJN,aAAA,IAAA,MAAA,yBoD9zJM,cpDi0JN,aAAA,YoDj0JM,epDo0JN,cAAA,IAAA,MAAA,yBoDp0JM,iBpDu0JN,cAAA,YoDv0JM,cpD00JN,YAAA,IAAA,MAAA,yBoD10JM,gBpD60JN,YAAA,YoD70JM,gBpDg1JN,aAAA,kBoDh1JM,kBpDm1JN,aAAA,eoDn1JM,gBpDs1JN,aAAA,kBoDt1JM,apDy1JN,aAAA,kBoDz1JM,gBpD41JN,aAAA,kBoD51JM,epD+1JN,aAAA,kBoD/1JM,cpDk2JN,aAAA,kBoDl2JM,apDq2JN,aAAA,kBoDr2JM,cpDw2JN,aAAA,eoDx2JM,UpD22JN,aAAA,YoD32JM,UpD82JN,aAAA,coD92JM,UpDi3JN,aAAA,coDj3JM,UpDo3JN,aAAA,coDp3JM,UpDu3JN,aAAA,coDv3JM,UpD03JN,aAAA,coD13JM,MpD63JN,MAAA,coD73JM,MpDg4JN,MAAA,coDh4JM,MpDm4JN,MAAA,coDn4JM,OpDs4JN,MAAA,eoDt4JM,QpDy4JN,MAAA,eoDz4JM,QpD44JN,UAAA,eoD54JM,QpD+4JN,MAAA,gBoD/4JM,YpDk5JN,UAAA,gBoDl5JM,MpDq5JN,OAAA,coDr5JM,MpDw5JN,OAAA,coDx5JM,MpD25JN,OAAA,coD35JM,OpD85JN,OAAA,eoD95JM,QpDi6JN,OAAA,eoDj6JM,QpDo6JN,WAAA,eoDp6JM,QpDu6JN,OAAA,gBoDv6JM,YpD06JN,WAAA,gBoD16JM,WpD66JN,KAAA,EAAA,EAAA,eoD76JM,UpDg7JN,eAAA,coDh7JM,apDm7JN,eAAA,iBoDn7JM,kBpDs7JN,eAAA,sBoDt7JM,qBpDy7JN,eAAA,yBoDz7JM,apD47JN,UAAA,YoD57JM,apD+7JN,UAAA,YoD/7JM,epDk8JN,YAAA,YoDl8JM,epDq8JN,YAAA,YoDr8JM,WpDw8JN,UAAA,eoDx8JM,apD28JN,UAAA,iBoD38JM,mBpD88JN,UAAA,uBoD98JM,OpDi9JN,IAAA,YoDj9JM,OpDo9JN,IAAA,iBoDp9JM,OpDu9JN,IAAA,gBoDv9JM,OpD09JN,IAAA,eoD19JM,OpD69JN,IAAA,iBoD79JM,OpDg+JN,IAAA,eoDh+JM,uBpDm+JN,gBAAA,qBoDn+JM,qBpDs+JN,gBAAA,mBoDt+JM,wBpDy+JN,gBAAA,iBoDz+JM,yBpD4+JN,gBAAA,wBoD5+JM,wBpD++JN,gBAAA,uBoD/+JM,wBpDk/JN,gBAAA,uBoDl/JM,mBpDq/JN,YAAA,qBoDr/JM,iBpDw/JN,YAAA,mBoDx/JM,oBpD2/JN,YAAA,iBoD3/JM,sBpD8/JN,YAAA,mBoD9/JM,qBpDigKN,YAAA,kBoDjgKM,qBpDogKN,cAAA,qBoDpgKM,mBpDugKN,cAAA,mBoDvgKM,sBpD0gKN,cAAA,iBoD1gKM,uBpD6gKN,cAAA,wBoD7gKM,sBpDghKN,cAAA,uBoDhhKM,uBpDmhKN,cAAA,kBoDnhKM,iBpDshKN,WAAA,eoDthKM,kBpDyhKN,WAAA,qBoDzhKM,gBpD4hKN,WAAA,mBoD5hKM,mBpD+hKN,WAAA,iBoD/hKM,qBpDkiKN,WAAA,mBoDliKM,oBpDqiKN,WAAA,kBoDriKM,apDwiKN,MAAA,aoDxiKM,SpD2iKN,MAAA,YoD3iKM,SpD8iKN,MAAA,YoD9iKM,SpDijKN,MAAA,YoDjjKM,SpDojKN,MAAA,YoDpjKM,SpDujKN,MAAA,YoDvjKM,SpD0jKN,MAAA,YoD1jKM,YpD6jKN,MAAA,YoD7jKM,KpDgkKN,OAAA,YoDhkKM,KpDmkKN,OAAA,iBoDnkKM,KpDskKN,OAAA,gBoDtkKM,KpDykKN,OAAA,eoDzkKM,KpD4kKN,OAAA,iBoD5kKM,KpD+kKN,OAAA,eoD/kKM,QpDklKN,OAAA,eoDllKM,MpDqlKN,aAAA,YACA,YAAA,YoDtlKM,MpDylKN,aAAA,iBACA,YAAA,iBoD1lKM,MpD6lKN,aAAA,gBACA,YAAA,gBoD9lKM,MpDimKN,aAAA,eACA,YAAA,eoDlmKM,MpDqmKN,aAAA,iBACA,YAAA,iBoDtmKM,MpDymKN,aAAA,eACA,YAAA,eoD1mKM,SpD6mKN,aAAA,eACA,YAAA,eoD9mKM,MpDinKN,WAAA,YACA,cAAA,YoDlnKM,MpDqnKN,WAAA,iBACA,cAAA,iBoDtnKM,MpDynKN,WAAA,gBACA,cAAA,gBoD1nKM,MpD6nKN,WAAA,eACA,cAAA,eoD9nKM,MpDioKN,WAAA,iBACA,cAAA,iBoDloKM,MpDqoKN,WAAA,eACA,cAAA,eoDtoKM,SpDyoKN,WAAA,eACA,cAAA,eoD1oKM,MpD6oKN,WAAA,YoD7oKM,MpDgpKN,WAAA,iBoDhpKM,MpDmpKN,WAAA,gBoDnpKM,MpDspKN,WAAA,eoDtpKM,MpDypKN,WAAA,iBoDzpKM,MpD4pKN,WAAA,eoD5pKM,SpD+pKN,WAAA,eoD/pKM,MpDkqKN,aAAA,YoDlqKM,MpDqqKN,aAAA,iBoDrqKM,MpDwqKN,aAAA,gBoDxqKM,MpD2qKN,aAAA,eoD3qKM,MpD8qKN,aAAA,iBoD9qKM,MpDirKN,aAAA,eoDjrKM,SpDorKN,aAAA,eoDprKM,MpDurKN,cAAA,YoDvrKM,MpD0rKN,cAAA,iBoD1rKM,MpD6rKN,cAAA,gBoD7rKM,MpDgsKN,cAAA,eoDhsKM,MpDmsKN,cAAA,iBoDnsKM,MpDssKN,cAAA,eoDtsKM,SpDysKN,cAAA,eoDzsKM,MpD4sKN,YAAA,YoD5sKM,MpD+sKN,YAAA,iBoD/sKM,MpDktKN,YAAA,gBoDltKM,MpDqtKN,YAAA,eoDrtKM,MpDwtKN,YAAA,iBoDxtKM,MpD2tKN,YAAA,eoD3tKM,SpD8tKN,YAAA,eoD9tKM,KpDiuKN,QAAA,YoDjuKM,KpDouKN,QAAA,iBoDpuKM,KpDuuKN,QAAA,gBoDvuKM,KpD0uKN,QAAA,eoD1uKM,KpD6uKN,QAAA,iBoD7uKM,KpDgvKN,QAAA,eoDhvKM,MpDmvKN,cAAA,YACA,aAAA,YoDpvKM,MpDuvKN,cAAA,iBACA,aAAA,iBoDxvKM,MpD2vKN,cAAA,gBACA,aAAA,gBoD5vKM,MpD+vKN,cAAA,eACA,aAAA,eoDhwKM,MpDmwKN,cAAA,iBACA,aAAA,iBoDpwKM,MpDuwKN,cAAA,eACA,aAAA,eoDxwKM,MpD2wKN,YAAA,YACA,eAAA,YoD5wKM,MpD+wKN,YAAA,iBACA,eAAA,iBoDhxKM,MpDmxKN,YAAA,gBACA,eAAA,gBoDpxKM,MpDuxKN,YAAA,eACA,eAAA,eoDxxKM,MpD2xKN,YAAA,iBACA,eAAA,iBoD5xKM,MpD+xKN,YAAA,eACA,eAAA,eoDhyKM,MpDmyKN,YAAA,YoDnyKM,MpDsyKN,YAAA,iBoDtyKM,MpDyyKN,YAAA,gBoDzyKM,MpD4yKN,YAAA,eoD5yKM,MpD+yKN,YAAA,iBoD/yKM,MpDkzKN,YAAA,eoDlzKM,MpDqzKN,cAAA,YoDrzKM,MpDwzKN,cAAA,iBoDxzKM,MpD2zKN,cAAA,gBoD3zKM,MpD8zKN,cAAA,eoD9zKM,MpDi0KN,cAAA,iBoDj0KM,MpDo0KN,cAAA,eoDp0KM,MpDu0KN,eAAA,YoDv0KM,MpD00KN,eAAA,iBoD10KM,MpD60KN,eAAA,gBoD70KM,MpDg1KN,eAAA,eoDh1KM,MpDm1KN,eAAA,iBoDn1KM,MpDs1KN,eAAA,eoDt1KM,MpDy1KN,aAAA,YoDz1KM,MpD41KN,aAAA,iBoD51KM,MpD+1KN,aAAA,gBoD/1KM,MpDk2KN,aAAA,eoDl2KM,MpDq2KN,aAAA,iBoDr2KM,MpDw2KN,aAAA,eoDx2KM,gBpD22KN,YAAA,uCoD32KM,MpD82KN,UAAA,iCoD92KM,MpDi3KN,UAAA,gCoDj3KM,MpDo3KN,UAAA,8BoDp3KM,MpDu3KN,UAAA,gCoDv3KM,MpD03KN,UAAA,kBoD13KM,MpD63KN,UAAA,eoD73KM,YpDg4KN,WAAA,iBoDh4KM,YpDm4KN,WAAA,iBoDn4KM,UpDs4KN,YAAA,coDt4KM,YpDy4KN,YAAA,kBoDz4KM,WpD44KN,YAAA,coD54KM,SpD+4KN,YAAA,coD/4KM,WpDk5KN,YAAA,iBoDl5KM,MpDq5KN,YAAA,YoDr5KM,OpDw5KN,YAAA,eoDx5KM,SpD25KN,YAAA,coD35KM,OpD85KN,YAAA,YoD95KM,YpDi6KN,WAAA,eoDj6KM,UpDo6KN,WAAA,gBoDp6KM,apDu6KN,WAAA,iBoDv6KM,sBpD06KN,gBAAA,eoD16KM,2BpD66KN,gBAAA,oBoD76KM,8BpDg7KN,gBAAA,uBoDh7KM,gBpDm7KN,eAAA,oBoDn7KM,gBpDs7KN,eAAA,oBoDt7KM,iBpDy7KN,eAAA,qBoDz7KM,WpD47KN,YAAA,iBoD57KM,apD+7KN,YAAA,iBoD/7KM,YpDm8KN,UAAA,qBACA,WAAA,qBoDp8KM,cpDw8KN,MAAA,kBoDx8KM,gBpD28KN,MAAA,eoD38KM,cpD88KN,MAAA,kBoD98KM,WpDi9KN,MAAA,kBoDj9KM,cpDo9KN,MAAA,kBoDp9KM,apDu9KN,MAAA,kBoDv9KM,YpD09KN,MAAA,kBoD19KM,WpD69KN,MAAA,kBoD79KM,YpDg+KN,MAAA,eoDh+KM,WpDm+KN,MAAA,kBoDn+KM,YpDs+KN,MAAA,yBoDt+KM,epDy+KN,MAAA,yBoDz+KM,epD4+KN,MAAA,+BoD5+KM,YpD++KN,MAAA,kBoD/+KM,YpDk/KN,iBAAA,kBoDl/KM,cpDq/KN,iBAAA,eoDr/KM,YpDw/KN,iBAAA,kBoDx/KM,SpD2/KN,iBAAA,kBoD3/KM,YpD8/KN,iBAAA,kBoD9/KM,WpDigLN,iBAAA,kBoDjgLM,UpDogLN,iBAAA,kBoDpgLM,SpDugLN,iBAAA,kBoDvgLM,SpD0gLN,iBAAA,eoD1gLM,UpD6gLN,iBAAA,eoD7gLM,gBpDghLN,iBAAA,sBoDhhLM,apDmhLN,iBAAA,iCoDnhLM,iBpDshLN,YAAA,coDthLM,kBpDyhLN,YAAA,eoDzhLM,kBpD4hLN,YAAA,eoD5hLM,SpD+hLN,eAAA,eoD/hLM,SpDkiLN,eAAA,eoDliLM,SpDqiLN,cAAA,iBoDriLM,WpDwiLN,cAAA,YoDxiLM,WpD2iLN,cAAA,IAAA,gBoD3iLM,WpD8iLN,cAAA,iBoD9iLM,WpDijLN,cAAA,gBoDjjLM,gBpDojLN,cAAA,coDpjLM,cpDujLN,cAAA,gBoDvjLM,apD0jLN,uBAAA,iBACA,wBAAA,iBoD3jLM,apD8jLN,wBAAA,iBACA,2BAAA,iBoD/jLM,gBpDkkLN,2BAAA,iBACA,0BAAA,iBoDnkLM,epDskLN,0BAAA,iBACA,uBAAA,iBoDvkLM,SpD0kLN,WAAA,kBoD1kLM,WpD6kLN,WAAA,iBO/jLI,yBPkkLJ,gBACA,MAAA,eACA,cACA,MAAA,gBACA,eACA,MAAA,eACA,aACA,QAAA,iBACA,mBACA,QAAA,uBACA,YACA,QAAA,gBACA,WACA,QAAA,eACA,YACA,QAAA,gBACA,gBACA,QAAA,oBACA,iBACA,QAAA,qBACA,WACA,QAAA,eACA,kBACA,QAAA,sBACA,WACA,QAAA,eACA,cACA,KAAA,EAAA,EAAA,eACA,aACA,eAAA,cACA,gBACA,eAAA,iBACA,qBACA,eAAA,sBACA,wBACA,eAAA,yBACA,gBACA,UAAA,YACA,gBACA,UAAA,YACA,kBACA,YAAA,YACA,kBACA,YAAA,YACA,cACA,UAAA,eACA,gBACA,UAAA,iBACA,sBACA,UAAA,uBACA,UACA,IAAA,YACA,UACA,IAAA,iBACA,UACA,IAAA,gBACA,UACA,IAAA,eACA,UACA,IAAA,iBACA,UACA,IAAA,eACA,0BACA,gBAAA,qBACA,wBACA,gBAAA,mBACA,2BACA,gBAAA,iBACA,4BACA,gBAAA,wBACA,2BACA,gBAAA,uBACA,2BACA,gBAAA,uBACA,sBACA,YAAA,qBACA,oBACA,YAAA,mBACA,uBACA,YAAA,iBACA,yBACA,YAAA,mBACA,wBACA,YAAA,kBACA,wBACA,cAAA,qBACA,sBACA,cAAA,mBACA,yBACA,cAAA,iBACA,0BACA,cAAA,wBACA,yBACA,cAAA,uBACA,0BACA,cAAA,kBACA,oBACA,WAAA,eACA,qBACA,WAAA,qBACA,mBACA,WAAA,mBACA,sBACA,WAAA,iBACA,wBACA,WAAA,mBACA,uBACA,WAAA,kBACA,gBACA,MAAA,aACA,YACA,MAAA,YACA,YACA,MAAA,YACA,YACA,MAAA,YACA,YACA,MAAA,YACA,YACA,MAAA,YACA,YACA,MAAA,YACA,eACA,MAAA,YACA,QACA,OAAA,YACA,QACA,OAAA,iBACA,QACA,OAAA,gBACA,QACA,OAAA,eACA,QACA,OAAA,iBACA,QACA,OAAA,eACA,WACA,OAAA,eACA,SACA,aAAA,YACA,YAAA,YACA,SACA,aAAA,iBACA,YAAA,iBACA,SACA,aAAA,gBACA,YAAA,gBACA,SACA,aAAA,eACA,YAAA,eACA,SACA,aAAA,iBACA,YAAA,iBACA,SACA,aAAA,eACA,YAAA,eACA,YACA,aAAA,eACA,YAAA,eACA,SACA,WAAA,YACA,cAAA,YACA,SACA,WAAA,iBACA,cAAA,iBACA,SACA,WAAA,gBACA,cAAA,gBACA,SACA,WAAA,eACA,cAAA,eACA,SACA,WAAA,iBACA,cAAA,iBACA,SACA,WAAA,eACA,cAAA,eACA,YACA,WAAA,eACA,cAAA,eACA,SACA,WAAA,YACA,SACA,WAAA,iBACA,SACA,WAAA,gBACA,SACA,WAAA,eACA,SACA,WAAA,iBACA,SACA,WAAA,eACA,YACA,WAAA,eACA,SACA,aAAA,YACA,SACA,aAAA,iBACA,SACA,aAAA,gBACA,SACA,aAAA,eACA,SACA,aAAA,iBACA,SACA,aAAA,eACA,YACA,aAAA,eACA,SACA,cAAA,YACA,SACA,cAAA,iBACA,SACA,cAAA,gBACA,SACA,cAAA,eACA,SACA,cAAA,iBACA,SACA,cAAA,eACA,YACA,cAAA,eACA,SACA,YAAA,YACA,SACA,YAAA,iBACA,SACA,YAAA,gBACA,SACA,YAAA,eACA,SACA,YAAA,iBACA,SACA,YAAA,eACA,YACA,YAAA,eACA,QACA,QAAA,YACA,QACA,QAAA,iBACA,QACA,QAAA,gBACA,QACA,QAAA,eACA,QACA,QAAA,iBACA,QACA,QAAA,eACA,SACA,cAAA,YACA,aAAA,YACA,SACA,cAAA,iBACA,aAAA,iBACA,SACA,cAAA,gBACA,aAAA,gBACA,SACA,cAAA,eACA,aAAA,eACA,SACA,cAAA,iBACA,aAAA,iBACA,SACA,cAAA,eACA,aAAA,eACA,SACA,YAAA,YACA,eAAA,YACA,SACA,YAAA,iBACA,eAAA,iBACA,SACA,YAAA,gBACA,eAAA,gBACA,SACA,YAAA,eACA,eAAA,eACA,SACA,YAAA,iBACA,eAAA,iBACA,SACA,YAAA,eACA,eAAA,eACA,SACA,YAAA,YACA,SACA,YAAA,iBACA,SACA,YAAA,gBACA,SACA,YAAA,eACA,SACA,YAAA,iBACA,SACA,YAAA,eACA,SACA,cAAA,YACA,SACA,cAAA,iBACA,SACA,cAAA,gBACA,SACA,cAAA,eACA,SACA,cAAA,iBACA,SACA,cAAA,eACA,SACA,eAAA,YACA,SACA,eAAA,iBACA,SACA,eAAA,gBACA,SACA,eAAA,eACA,SACA,eAAA,iBACA,SACA,eAAA,eACA,SACA,aAAA,YACA,SACA,aAAA,iBACA,SACA,aAAA,gBACA,SACA,aAAA,eACA,SACA,aAAA,iBACA,SACA,aAAA,eACA,eACA,WAAA,eACA,aACA,WAAA,gBACA,gBACA,WAAA,kBOn5LI,yBPs5LJ,gBACA,MAAA,eACA,cACA,MAAA,gBACA,eACA,MAAA,eACA,aACA,QAAA,iBACA,mBACA,QAAA,uBACA,YACA,QAAA,gBACA,WACA,QAAA,eACA,YACA,QAAA,gBACA,gBACA,QAAA,oBACA,iBACA,QAAA,qBACA,WACA,QAAA,eACA,kBACA,QAAA,sBACA,WACA,QAAA,eACA,cACA,KAAA,EAAA,EAAA,eACA,aACA,eAAA,cACA,gBACA,eAAA,iBACA,qBACA,eAAA,sBACA,wBACA,eAAA,yBACA,gBACA,UAAA,YACA,gBACA,UAAA,YACA,kBACA,YAAA,YACA,kBACA,YAAA,YACA,cACA,UAAA,eACA,gBACA,UAAA,iBACA,sBACA,UAAA,uBACA,UACA,IAAA,YACA,UACA,IAAA,iBACA,UACA,IAAA,gBACA,UACA,IAAA,eACA,UACA,IAAA,iBACA,UACA,IAAA,eACA,0BACA,gBAAA,qBACA,wBACA,gBAAA,mBACA,2BACA,gBAAA,iBACA,4BACA,gBAAA,wBACA,2BACA,gBAAA,uBACA,2BACA,gBAAA,uBACA,sBACA,YAAA,qBACA,oBACA,YAAA,mBACA,uBACA,YAAA,iBACA,yBACA,YAAA,mBACA,wBACA,YAAA,kBACA,wBACA,cAAA,qBACA,sBACA,cAAA,mBACA,yBACA,cAAA,iBACA,0BACA,cAAA,wBACA,yBACA,cAAA,uBACA,0BACA,cAAA,kBACA,oBACA,WAAA,eACA,qBACA,WAAA,qBACA,mBACA,WAAA,mBACA,sBACA,WAAA,iBACA,wBACA,WAAA,mBACA,uBACA,WAAA,kBACA,gBACA,MAAA,aACA,YACA,MAAA,YACA,YACA,MAAA,YACA,YACA,MAAA,YACA,YACA,MAAA,YACA,YACA,MAAA,YACA,YACA,MAAA,YACA,eACA,MAAA,YACA,QACA,OAAA,YACA,QACA,OAAA,iBACA,QACA,OAAA,gBACA,QACA,OAAA,eACA,QACA,OAAA,iBACA,QACA,OAAA,eACA,WACA,OAAA,eACA,SACA,aAAA,YACA,YAAA,YACA,SACA,aAAA,iBACA,YAAA,iBACA,SACA,aAAA,gBACA,YAAA,gBACA,SACA,aAAA,eACA,YAAA,eACA,SACA,aAAA,iBACA,YAAA,iBACA,SACA,aAAA,eACA,YAAA,eACA,YACA,aAAA,eACA,YAAA,eACA,SACA,WAAA,YACA,cAAA,YACA,SACA,WAAA,iBACA,cAAA,iBACA,SACA,WAAA,gBACA,cAAA,gBACA,SACA,WAAA,eACA,cAAA,eACA,SACA,WAAA,iBACA,cAAA,iBACA,SACA,WAAA,eACA,cAAA,eACA,YACA,WAAA,eACA,cAAA,eACA,SACA,WAAA,YACA,SACA,WAAA,iBACA,SACA,WAAA,gBACA,SACA,WAAA,eACA,SACA,WAAA,iBACA,SACA,WAAA,eACA,YACA,WAAA,eACA,SACA,aAAA,YACA,SACA,aAAA,iBACA,SACA,aAAA,gBACA,SACA,aAAA,eACA,SACA,aAAA,iBACA,SACA,aAAA,eACA,YACA,aAAA,eACA,SACA,cAAA,YACA,SACA,cAAA,iBACA,SACA,cAAA,gBACA,SACA,cAAA,eACA,SACA,cAAA,iBACA,SACA,cAAA,eACA,YACA,cAAA,eACA,SACA,YAAA,YACA,SACA,YAAA,iBACA,SACA,YAAA,gBACA,SACA,YAAA,eACA,SACA,YAAA,iBACA,SACA,YAAA,eACA,YACA,YAAA,eACA,QACA,QAAA,YACA,QACA,QAAA,iBACA,QACA,QAAA,gBACA,QACA,QAAA,eACA,QACA,QAAA,iBACA,QACA,QAAA,eACA,SACA,cAAA,YACA,aAAA,YACA,SACA,cAAA,iBACA,aAAA,iBACA,SACA,cAAA,gBACA,aAAA,gBACA,SACA,cAAA,eACA,aAAA,eACA,SACA,cAAA,iBACA,aAAA,iBACA,SACA,cAAA,eACA,aAAA,eACA,SACA,YAAA,YACA,eAAA,YACA,SACA,YAAA,iBACA,eAAA,iBACA,SACA,YAAA,gBACA,eAAA,gBACA,SACA,YAAA,eACA,eAAA,eACA,SACA,YAAA,iBACA,eAAA,iBACA,SACA,YAAA,eACA,eAAA,eACA,SACA,YAAA,YACA,SACA,YAAA,iBACA,SACA,YAAA,gBACA,SACA,YAAA,eACA,SACA,YAAA,iBACA,SACA,YAAA,eACA,SACA,cAAA,YACA,SACA,cAAA,iBACA,SACA,cAAA,gBACA,SACA,cAAA,eACA,SACA,cAAA,iBACA,SACA,cAAA,eACA,SACA,eAAA,YACA,SACA,eAAA,iBACA,SACA,eAAA,gBACA,SACA,eAAA,eACA,SACA,eAAA,iBACA,SACA,eAAA,eACA,SACA,aAAA,YACA,SACA,aAAA,iBACA,SACA,aAAA,gBACA,SACA,aAAA,eACA,SACA,aAAA,iBACA,SACA,aAAA,eACA,eACA,WAAA,eACA,aACA,WAAA,gBACA,gBACA,WAAA,kBOvuMI,yBP0uMJ,gBACA,MAAA,eACA,cACA,MAAA,gBACA,eACA,MAAA,eACA,aACA,QAAA,iBACA,mBACA,QAAA,uBACA,YACA,QAAA,gBACA,WACA,QAAA,eACA,YACA,QAAA,gBACA,gBACA,QAAA,oBACA,iBACA,QAAA,qBACA,WACA,QAAA,eACA,kBACA,QAAA,sBACA,WACA,QAAA,eACA,cACA,KAAA,EAAA,EAAA,eACA,aACA,eAAA,cACA,gBACA,eAAA,iBACA,qBACA,eAAA,sBACA,wBACA,eAAA,yBACA,gBACA,UAAA,YACA,gBACA,UAAA,YACA,kBACA,YAAA,YACA,kBACA,YAAA,YACA,cACA,UAAA,eACA,gBACA,UAAA,iBACA,sBACA,UAAA,uBACA,UACA,IAAA,YACA,UACA,IAAA,iBACA,UACA,IAAA,gBACA,UACA,IAAA,eACA,UACA,IAAA,iBACA,UACA,IAAA,eACA,0BACA,gBAAA,qBACA,wBACA,gBAAA,mBACA,2BACA,gBAAA,iBACA,4BACA,gBAAA,wBACA,2BACA,gBAAA,uBACA,2BACA,gBAAA,uBACA,sBACA,YAAA,qBACA,oBACA,YAAA,mBACA,uBACA,YAAA,iBACA,yBACA,YAAA,mBACA,wBACA,YAAA,kBACA,wBACA,cAAA,qBACA,sBACA,cAAA,mBACA,yBACA,cAAA,iBACA,0BACA,cAAA,wBACA,yBACA,cAAA,uBACA,0BACA,cAAA,kBACA,oBACA,WAAA,eACA,qBACA,WAAA,qBACA,mBACA,WAAA,mBACA,sBACA,WAAA,iBACA,wBACA,WAAA,mBACA,uBACA,WAAA,kBACA,gBACA,MAAA,aACA,YACA,MAAA,YACA,YACA,MAAA,YACA,YACA,MAAA,YACA,YACA,MAAA,YACA,YACA,MAAA,YACA,YACA,MAAA,YACA,eACA,MAAA,YACA,QACA,OAAA,YACA,QACA,OAAA,iBACA,QACA,OAAA,gBACA,QACA,OAAA,eACA,QACA,OAAA,iBACA,QACA,OAAA,eACA,WACA,OAAA,eACA,SACA,aAAA,YACA,YAAA,YACA,SACA,aAAA,iBACA,YAAA,iBACA,SACA,aAAA,gBACA,YAAA,gBACA,SACA,aAAA,eACA,YAAA,eACA,SACA,aAAA,iBACA,YAAA,iBACA,SACA,aAAA,eACA,YAAA,eACA,YACA,aAAA,eACA,YAAA,eACA,SACA,WAAA,YACA,cAAA,YACA,SACA,WAAA,iBACA,cAAA,iBACA,SACA,WAAA,gBACA,cAAA,gBACA,SACA,WAAA,eACA,cAAA,eACA,SACA,WAAA,iBACA,cAAA,iBACA,SACA,WAAA,eACA,cAAA,eACA,YACA,WAAA,eACA,cAAA,eACA,SACA,WAAA,YACA,SACA,WAAA,iBACA,SACA,WAAA,gBACA,SACA,WAAA,eACA,SACA,WAAA,iBACA,SACA,WAAA,eACA,YACA,WAAA,eACA,SACA,aAAA,YACA,SACA,aAAA,iBACA,SACA,aAAA,gBACA,SACA,aAAA,eACA,SACA,aAAA,iBACA,SACA,aAAA,eACA,YACA,aAAA,eACA,SACA,cAAA,YACA,SACA,cAAA,iBACA,SACA,cAAA,gBACA,SACA,cAAA,eACA,SACA,cAAA,iBACA,SACA,cAAA,eACA,YACA,cAAA,eACA,SACA,YAAA,YACA,SACA,YAAA,iBACA,SACA,YAAA,gBACA,SACA,YAAA,eACA,SACA,YAAA,iBACA,SACA,YAAA,eACA,YACA,YAAA,eACA,QACA,QAAA,YACA,QACA,QAAA,iBACA,QACA,QAAA,gBACA,QACA,QAAA,eACA,QACA,QAAA,iBACA,QACA,QAAA,eACA,SACA,cAAA,YACA,aAAA,YACA,SACA,cAAA,iBACA,aAAA,iBACA,SACA,cAAA,gBACA,aAAA,gBACA,SACA,cAAA,eACA,aAAA,eACA,SACA,cAAA,iBACA,aAAA,iBACA,SACA,cAAA,eACA,aAAA,eACA,SACA,YAAA,YACA,eAAA,YACA,SACA,YAAA,iBACA,eAAA,iBACA,SACA,YAAA,gBACA,eAAA,gBACA,SACA,YAAA,eACA,eAAA,eACA,SACA,YAAA,iBACA,eAAA,iBACA,SACA,YAAA,eACA,eAAA,eACA,SACA,YAAA,YACA,SACA,YAAA,iBACA,SACA,YAAA,gBACA,SACA,YAAA,eACA,SACA,YAAA,iBACA,SACA,YAAA,eACA,SACA,cAAA,YACA,SACA,cAAA,iBACA,SACA,cAAA,gBACA,SACA,cAAA,eACA,SACA,cAAA,iBACA,SACA,cAAA,eACA,SACA,eAAA,YACA,SACA,eAAA,iBACA,SACA,eAAA,gBACA,SACA,eAAA,eACA,SACA,eAAA,iBACA,SACA,eAAA,eACA,SACA,aAAA,YACA,SACA,aAAA,iBACA,SACA,aAAA,gBACA,SACA,aAAA,eACA,SACA,aAAA,iBACA,SACA,aAAA,eACA,eACA,WAAA,eACA,aACA,WAAA,gBACA,gBACA,WAAA,kBO3jNI,0BP8jNJ,gBACA,MAAA,eACA,cACA,MAAA,gBACA,eACA,MAAA,eACA,aACA,QAAA,iBACA,mBACA,QAAA,uBACA,YACA,QAAA,gBACA,WACA,QAAA,eACA,YACA,QAAA,gBACA,gBACA,QAAA,oBACA,iBACA,QAAA,qBACA,WACA,QAAA,eACA,kBACA,QAAA,sBACA,WACA,QAAA,eACA,cACA,KAAA,EAAA,EAAA,eACA,aACA,eAAA,cACA,gBACA,eAAA,iBACA,qBACA,eAAA,sBACA,wBACA,eAAA,yBACA,gBACA,UAAA,YACA,gBACA,UAAA,YACA,kBACA,YAAA,YACA,kBACA,YAAA,YACA,cACA,UAAA,eACA,gBACA,UAAA,iBACA,sBACA,UAAA,uBACA,UACA,IAAA,YACA,UACA,IAAA,iBACA,UACA,IAAA,gBACA,UACA,IAAA,eACA,UACA,IAAA,iBACA,UACA,IAAA,eACA,0BACA,gBAAA,qBACA,wBACA,gBAAA,mBACA,2BACA,gBAAA,iBACA,4BACA,gBAAA,wBACA,2BACA,gBAAA,uBACA,2BACA,gBAAA,uBACA,sBACA,YAAA,qBACA,oBACA,YAAA,mBACA,uBACA,YAAA,iBACA,yBACA,YAAA,mBACA,wBACA,YAAA,kBACA,wBACA,cAAA,qBACA,sBACA,cAAA,mBACA,yBACA,cAAA,iBACA,0BACA,cAAA,wBACA,yBACA,cAAA,uBACA,0BACA,cAAA,kBACA,oBACA,WAAA,eACA,qBACA,WAAA,qBACA,mBACA,WAAA,mBACA,sBACA,WAAA,iBACA,wBACA,WAAA,mBACA,uBACA,WAAA,kBACA,gBACA,MAAA,aACA,YACA,MAAA,YACA,YACA,MAAA,YACA,YACA,MAAA,YACA,YACA,MAAA,YACA,YACA,MAAA,YACA,YACA,MAAA,YACA,eACA,MAAA,YACA,QACA,OAAA,YACA,QACA,OAAA,iBACA,QACA,OAAA,gBACA,QACA,OAAA,eACA,QACA,OAAA,iBACA,QACA,OAAA,eACA,WACA,OAAA,eACA,SACA,aAAA,YACA,YAAA,YACA,SACA,aAAA,iBACA,YAAA,iBACA,SACA,aAAA,gBACA,YAAA,gBACA,SACA,aAAA,eACA,YAAA,eACA,SACA,aAAA,iBACA,YAAA,iBACA,SACA,aAAA,eACA,YAAA,eACA,YACA,aAAA,eACA,YAAA,eACA,SACA,WAAA,YACA,cAAA,YACA,SACA,WAAA,iBACA,cAAA,iBACA,SACA,WAAA,gBACA,cAAA,gBACA,SACA,WAAA,eACA,cAAA,eACA,SACA,WAAA,iBACA,cAAA,iBACA,SACA,WAAA,eACA,cAAA,eACA,YACA,WAAA,eACA,cAAA,eACA,SACA,WAAA,YACA,SACA,WAAA,iBACA,SACA,WAAA,gBACA,SACA,WAAA,eACA,SACA,WAAA,iBACA,SACA,WAAA,eACA,YACA,WAAA,eACA,SACA,aAAA,YACA,SACA,aAAA,iBACA,SACA,aAAA,gBACA,SACA,aAAA,eACA,SACA,aAAA,iBACA,SACA,aAAA,eACA,YACA,aAAA,eACA,SACA,cAAA,YACA,SACA,cAAA,iBACA,SACA,cAAA,gBACA,SACA,cAAA,eACA,SACA,cAAA,iBACA,SACA,cAAA,eACA,YACA,cAAA,eACA,SACA,YAAA,YACA,SACA,YAAA,iBACA,SACA,YAAA,gBACA,SACA,YAAA,eACA,SACA,YAAA,iBACA,SACA,YAAA,eACA,YACA,YAAA,eACA,QACA,QAAA,YACA,QACA,QAAA,iBACA,QACA,QAAA,gBACA,QACA,QAAA,eACA,QACA,QAAA,iBACA,QACA,QAAA,eACA,SACA,cAAA,YACA,aAAA,YACA,SACA,cAAA,iBACA,aAAA,iBACA,SACA,cAAA,gBACA,aAAA,gBACA,SACA,cAAA,eACA,aAAA,eACA,SACA,cAAA,iBACA,aAAA,iBACA,SACA,cAAA,eACA,aAAA,eACA,SACA,YAAA,YACA,eAAA,YACA,SACA,YAAA,iBACA,eAAA,iBACA,SACA,YAAA,gBACA,eAAA,gBACA,SACA,YAAA,eACA,eAAA,eACA,SACA,YAAA,iBACA,eAAA,iBACA,SACA,YAAA,eACA,eAAA,eACA,SACA,YAAA,YACA,SACA,YAAA,iBACA,SACA,YAAA,gBACA,SACA,YAAA,eACA,SACA,YAAA,iBACA,SACA,YAAA,eACA,SACA,cAAA,YACA,SACA,cAAA,iBACA,SACA,cAAA,gBACA,SACA,cAAA,eACA,SACA,cAAA,iBACA,SACA,cAAA,eACA,SACA,eAAA,YACA,SACA,eAAA,iBACA,SACA,eAAA,gBACA,SACA,eAAA,eACA,SACA,eAAA,iBACA,SACA,eAAA,eACA,SACA,aAAA,YACA,SACA,aAAA,iBACA,SACA,aAAA,gBACA,SACA,aAAA,eACA,SACA,aAAA,iBACA,SACA,aAAA,eACA,eACA,WAAA,eACA,aACA,WAAA,gBACA,gBACA,WAAA,kBO/4NI,0BPk5NJ,iBACA,MAAA,eACA,eACA,MAAA,gBACA,gBACA,MAAA,eACA,cACA,QAAA,iBACA,oBACA,QAAA,uBACA,aACA,QAAA,gBACA,YACA,QAAA,eACA,aACA,QAAA,gBACA,iBACA,QAAA,oBACA,kBACA,QAAA,qBACA,YACA,QAAA,eACA,mBACA,QAAA,sBACA,YACA,QAAA,eACA,eACA,KAAA,EAAA,EAAA,eACA,cACA,eAAA,cACA,iBACA,eAAA,iBACA,sBACA,eAAA,sBACA,yBACA,eAAA,yBACA,iBACA,UAAA,YACA,iBACA,UAAA,YACA,mBACA,YAAA,YACA,mBACA,YAAA,YACA,eACA,UAAA,eACA,iBACA,UAAA,iBACA,uBACA,UAAA,uBACA,WACA,IAAA,YACA,WACA,IAAA,iBACA,WACA,IAAA,gBACA,WACA,IAAA,eACA,WACA,IAAA,iBACA,WACA,IAAA,eACA,2BACA,gBAAA,qBACA,yBACA,gBAAA,mBACA,4BACA,gBAAA,iBACA,6BACA,gBAAA,wBACA,4BACA,gBAAA,uBACA,4BACA,gBAAA,uBACA,uBACA,YAAA,qBACA,qBACA,YAAA,mBACA,wBACA,YAAA,iBACA,0BACA,YAAA,mBACA,yBACA,YAAA,kBACA,yBACA,cAAA,qBACA,uBACA,cAAA,mBACA,0BACA,cAAA,iBACA,2BACA,cAAA,wBACA,0BACA,cAAA,uBACA,2BACA,cAAA,kBACA,qBACA,WAAA,eACA,sBACA,WAAA,qBACA,oBACA,WAAA,mBACA,uBACA,WAAA,iBACA,yBACA,WAAA,mBACA,wBACA,WAAA,kBACA,iBACA,MAAA,aACA,aACA,MAAA,YACA,aACA,MAAA,YACA,aACA,MAAA,YACA,aACA,MAAA,YACA,aACA,MAAA,YACA,aACA,MAAA,YACA,gBACA,MAAA,YACA,SACA,OAAA,YACA,SACA,OAAA,iBACA,SACA,OAAA,gBACA,SACA,OAAA,eACA,SACA,OAAA,iBACA,SACA,OAAA,eACA,YACA,OAAA,eACA,UACA,aAAA,YACA,YAAA,YACA,UACA,aAAA,iBACA,YAAA,iBACA,UACA,aAAA,gBACA,YAAA,gBACA,UACA,aAAA,eACA,YAAA,eACA,UACA,aAAA,iBACA,YAAA,iBACA,UACA,aAAA,eACA,YAAA,eACA,aACA,aAAA,eACA,YAAA,eACA,UACA,WAAA,YACA,cAAA,YACA,UACA,WAAA,iBACA,cAAA,iBACA,UACA,WAAA,gBACA,cAAA,gBACA,UACA,WAAA,eACA,cAAA,eACA,UACA,WAAA,iBACA,cAAA,iBACA,UACA,WAAA,eACA,cAAA,eACA,aACA,WAAA,eACA,cAAA,eACA,UACA,WAAA,YACA,UACA,WAAA,iBACA,UACA,WAAA,gBACA,UACA,WAAA,eACA,UACA,WAAA,iBACA,UACA,WAAA,eACA,aACA,WAAA,eACA,UACA,aAAA,YACA,UACA,aAAA,iBACA,UACA,aAAA,gBACA,UACA,aAAA,eACA,UACA,aAAA,iBACA,UACA,aAAA,eACA,aACA,aAAA,eACA,UACA,cAAA,YACA,UACA,cAAA,iBACA,UACA,cAAA,gBACA,UACA,cAAA,eACA,UACA,cAAA,iBACA,UACA,cAAA,eACA,aACA,cAAA,eACA,UACA,YAAA,YACA,UACA,YAAA,iBACA,UACA,YAAA,gBACA,UACA,YAAA,eACA,UACA,YAAA,iBACA,UACA,YAAA,eACA,aACA,YAAA,eACA,SACA,QAAA,YACA,SACA,QAAA,iBACA,SACA,QAAA,gBACA,SACA,QAAA,eACA,SACA,QAAA,iBACA,SACA,QAAA,eACA,UACA,cAAA,YACA,aAAA,YACA,UACA,cAAA,iBACA,aAAA,iBACA,UACA,cAAA,gBACA,aAAA,gBACA,UACA,cAAA,eACA,aAAA,eACA,UACA,cAAA,iBACA,aAAA,iBACA,UACA,cAAA,eACA,aAAA,eACA,UACA,YAAA,YACA,eAAA,YACA,UACA,YAAA,iBACA,eAAA,iBACA,UACA,YAAA,gBACA,eAAA,gBACA,UACA,YAAA,eACA,eAAA,eACA,UACA,YAAA,iBACA,eAAA,iBACA,UACA,YAAA,eACA,eAAA,eACA,UACA,YAAA,YACA,UACA,YAAA,iBACA,UACA,YAAA,gBACA,UACA,YAAA,eACA,UACA,YAAA,iBACA,UACA,YAAA,eACA,UACA,cAAA,YACA,UACA,cAAA,iBACA,UACA,cAAA,gBACA,UACA,cAAA,eACA,UACA,cAAA,iBACA,UACA,cAAA,eACA,UACA,eAAA,YACA,UACA,eAAA,iBACA,UACA,eAAA,gBACA,UACA,eAAA,eACA,UACA,eAAA,iBACA,UACA,eAAA,eACA,UACA,aAAA,YACA,UACA,aAAA,iBACA,UACA,aAAA,gBACA,UACA,aAAA,eACA,UACA,aAAA,iBACA,UACA,aAAA,eACA,gBACA,WAAA,eACA,cACA,WAAA,gBACA,iBACA,WAAA,kBqD/wOA,0BrDkxOA,MACA,UAAA,iBACA,MACA,UAAA,eACA,MACA,UAAA,kBACA,MACA,UAAA,kBqDtwOA,arDywOA,gBACA,QAAA,iBACA,sBACA,QAAA,uBACA,eACA,QAAA,gBACA,cACA,QAAA,eACA,eACA,QAAA,gBACA,mBACA,QAAA,oBACA,oBACA,QAAA,qBACA,cACA,QAAA,eACA,qBACA,QAAA,sBACA,cACA,QAAA,gBsDl0OA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,KAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,MAAA,EAAA,StDq0OA,eAAA,mBuDr0OA,iBvDw0OA,WAAA,QACA,sCACA,WAAA,QACA,uCACA,WAAA,QuDj0OA,YvDo0OA,WAAA,QACA,iCACA,WAAA,QACA,kCACA,WAAA,QwDl1OI,sBxDq1OJ,WAAA,KACA,MAAA,KwDl1OI,qBxDq1OJ,WAAA,KACA,MAAA,QyD31OA,WzD81OA,aAAA,KACA,cAAA,K0Dl1OI,oC1Ds1OJ,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,iBAAA,qCACA,4BACA,iBAAA,qCACA,gBAAA,QACA,kBAAA,UACA,QAAA,aACA,MAAA,UACA,OAAA,UACA,iDACA,iBAAA,8CACA,kDACA,iBAAA,qCACA,6BACA,iBAAA,qCACA,gBAAA,QACA,kBAAA,UACA,QAAA,aACA,MAAA,SACA,OAAA,SACA,kDACA,iBAAA,8CACA,mDACA,iBAAA,qCACA,0DACA,cAAA,KACA,iEAAA,gEACA,SAAA,SACA,UAAA,SACA,YAAA,MAAA,CAAA,MACA,MAAA,KACA,WAAA,OACA,aAAA,KACA,cAAA,IAAA,MAAA,KACA,eAAA,KACA,cAAA,IACA,IAAA,KACA,KAAA,MACA,sFAAA,qFACA,MAAA,QACA,aAAA,qBACA,uFAAA,sFACA,MAAA,KACA,aAAA,KACA,+DACA,SAAA,SACA,KAAA,IACA,UAAA,uBACA,IAAA,QACA,QAAA,MACA,UAAA,OACA,YAAA,MAAA,CAAA,MACA,MAAA,KACA,YAAA,OACA,MAAA,UACA,oFACA,MAAA,QACA,qFACA,MAAA,KACA,4BACA,iBAAA,qCACA,gBAAA,QACA,kBAAA,UACA,QAAA,aACA,MAAA,KACA,OAAA,KAIA,iDACA,iBAAA,8CACA,kDACA,iBAAA,qCACA,gEACA,SAAA,SACA,KAAA,OACA,IAAA,QACA,MAAA,KACA,qFACA,MAAA,QACA,sFACA,MAAA,KACA,6BACA,SAAA,SACA,MAAA,UACA,OAAA,QACA,iBAAA,qCACA,kBAAA,UACA,gBAAA,KAAA,KACA,sBAAA,iBACA,QAAA,aACA,yBACA,6BACA,MAAA,UACA,OAAA,UACA,gBAAA,MAAA,KACA,sBAAA,kBACA,kDACA,iBAAA,8CACA,mDACA,iBAAA,qCACA,mCACA,QAAA,uCACA,SAAA,SACA,IAAA,SACA,QAAA,MACA,UAAA,OACA,YAAA,MAAA,CAAA,MACA,MAAA,KACA,YAAA,OACA,MAAA,KACA,WAAA,OACA,yBACA,mCACA,IAAA,SACA,UAAA,QACA,wDACA,MAAA,QACA,yDACA,MAAA,KACA,oCAAA,mCACA,SAAA,SACA,UAAA,KACA,YAAA,MAAA,CAA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DACA,MAAA,KACA,QAAA,KACA,gBAAA,OACA,YAAA,OACA,aAAA,KACA,cAAA,OACA,+DACA,MAAA,EACA,SAAA,OACA,UAAA,KACA,OAAA,EACA,iFACA,SAAA,OACA,UAAA,KACA,2BACA,SAAA,SACA,IAAA,IACA,UAAA,iBACA,YAAA,0BACA,QAAA,kBACA,MAAA,QACA,OAAA,EACA,YAAA,iBACA,WAAA,OACA,MAAA,KACA,MAAA,QACA,OAAA,QACA,UAAA,QACA,YAAA,QACA,WAAA,IAAA,IAAA,SACA,yDACA,cAAA,OACA,kEACA,aAAA,SACA,cAAA,SACA,+DACA,MAAA,MACA,mBAAA,6BAAA,QACA,QAAA,OAAA,OACA,cAAA,OACA,YAAA,OACA,OAAA,KACA,UAAA,QACA,uDAAA,4CACA,aAAA,OACA,+EAAA,oEACA,SAAA,SACA,IAAA,IACA,UAAA,iBACA,MAAA,OACA,OAAA,OACA,UAAA,OACA,YAAA,OACA,sFAAA,2EACA,eAAA,IACA,+EAAA,oEACA,KAAA,QACA,wDAAA,6CACA,cAAA,OACA,gFAAA,qEACA,SAAA,SACA,IAAA,IACA,UAAA,iBACA,MAAA,OACA,OAAA,OACA,UAAA,OACA,YAAA,OACA,uFAAA,4EACA,eAAA,IACA,gFAAA,qEACA,MAAA,QACA,uDAAA,4CACA,QAAA,EACA,MAAA,KACA,+EAAA,oEACA,SAAA,SACA,IAAA,IACA,UAAA,iBACA,MAAA,OACA,OAAA,OACA,UAAA,OACA,YAAA,OACA,sFAAA,2EACA,eAAA,IACA,+EAAA,oEACA,IAAA,IACA,KAAA,IACA,UAAA,qBACA,uEAAA,4DACA,MAAA,KACA,aAAA,OACA,cAAA,OACA,QAAA,KACA,gBAAA,OACA,YAAA,OACA,yCAAA,8BACA,MAAA,QACA,MAAA,OACA,OAAA,OACA,UAAA,OACA,YAAA,OACA,mBAAA,6BAAA,QACA,QAAA,MAAA,MACA,cAAA,OACA,YAAA,KACA,OAAA,K8D/jRA,e9D0lRA,cAAA,O8D1lRA,oB9D6lRA,uBAAA,OACA,wBAAA,OACA,0BAAA,OACA,2BAAA,OACA,0BACA,UAAA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,QAAA,MACA,QAAA,IAAA,EAAA,IAAA,EACA,OAAA,EACA,MAAA,KACA,OAAA,KACA,yBACA,kCACA,IAAA,KACA,KAAA,KACA,4BACA,0CACA,QAAA,0BACA,MAAA,KACA,WAAA,KACA,SAAA,SACA,YAAA,KACA,QAAA,aACA,MAAA,KACA,OAAA,KACA,WAAA,KACA,QAAA,IACA,YAAA,KACA,cAAA,IACA,UAAA,OACA,WAAA,IACA,+DACA,WAAA,KACA,MAAA,KACA,gEACA,WAAA,KACA,MAAA,KACA,2CACA,QAAA,GACA,aAAA,IAAA,MAAA,KACA,YAAA,IAAA,MAAA,YACA,WAAA,IAAA,MAAA,YACA,cAAA,IAAA,MAAA,YACA,YAAA,KACA,WAAA,KACA,SAAA,SACA,YAAA,KACA,gEACA,aAAA,IAAA,MAAA,KACA,iEACA,aAAA,IAAA,MAAA,MACA,4CACA,iBAAA,KACA,YAAA,KACA,aAAA,KAEA,kEADA,yDAEA,QAAA,EACA,QAAA,KAEA,gEADA,uDAEA,QAAA,EACA,MAAA,QASA,6CACA,QAAA,MACA,QAAA,EACA,WAAA,IAAA,IACA,yEACA,QAAA,EACA,sFACA,kBAAA,iBACA,UAAA,iBACA,4BACA,sFACA,kBAAA,kBACA,UAAA,mBACA,sFACA,kBAAA,kBACA,UAAA,kBACA,4BACA,sFACA,kBAAA,mBACA,UAAA,oBACA,sFACA,kBAAA,kBACA,UAAA,kBACA,4BACA,sFACA,kBAAA,mBACA,UAAA,oBACA,sFACA,kBAAA,kBACA,UAAA,kBACA,4BACA,sFACA,kBAAA,mBACA,UAAA,oBACA,sFACA,kBAAA,kBACA,UAAA,kBACA,4BACA,sFACA,kBAAA,mBACA,UAAA,oBACA,sFACA,kBAAA,kBACA,UAAA,kBACA,4BACA,sFACA,kBAAA,mBACA,UAAA,oBACA,sFACA,kBAAA,kBACA,UAAA,kBACA,4BACA,sFACA,kBAAA,mBACA,UAAA,oBgElrTA,0BhEqrTA,QAAA,EACA,MAAA,KACA,iBAAA,QACA,cAAA,IACA,QAAA,aACA,MAAA,KACA,OAAA,KACA,YAAA,KACA,WAAA,OACA,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,KACA,4DACA,iBAAA,QACA,6DACA,iBAAA,KoC97UA,YpCi8UA,QAAA,KACA,eAAA,OACA,aAAA,EACA,cAAA,EACA,cAAA,OoC37UA,qBpC87UA,gBAAA,KACA,cAAA,QACA,gCACA,QAAA,uBAAA,KACA,kBAAA,QoCj7UA,wBpCo7UA,MAAA,KACA,MAAA,eACA,WAAA,QACA,8BAAA,8BACA,QAAA,EACA,gBAAA,KACA,iBAAA,QACA,mDAAA,mDACA,iBAAA,QACA,oDAAA,oDACA,iBAAA,QACA,+BACA,MAAA,QACA,iBAAA,QoCx6UA,iBpC26UA,SAAA,SACA,QAAA,MACA,QAAA,MAAA,KACA,iBAAA,KACA,OAAA,IAAA,MAAA,iBACA,6BACA,uBAAA,QACA,wBAAA,QACA,4BACA,2BAAA,QACA,0BAAA,QACA,0BAAA,0BACA,MAAA,eACA,eAAA,KACA,iBAAA,KACA,uBACA,iBAAA,QACA,gBAAA,KACA,4CACA,iBAAA,QACA,6CACA,iBAAA,QACA,wBACA,QAAA,EACA,MAAA,KACA,iBAAA,QACA,aAAA,QACA,kCACA,iBAAA,EACA,yCACA,WAAA,KACA,iBAAA,IoCv5UI,uBpC05UJ,eAAA,IACA,oDACA,0BAAA,OACA,wBAAA,EACA,mDACA,wBAAA,OACA,0BAAA,EACA,+CACA,WAAA,EACA,yDACA,iBAAA,IACA,kBAAA,EACA,gEACA,YAAA,KACA,kBAAA,IOp9UI,yBPu9UJ,0BACA,eAAA,IACA,uDACA,0BAAA,OACA,wBAAA,EACA,sDACA,wBAAA,OACA,0BAAA,EACA,kDACA,WAAA,EACA,4DACA,iBAAA,IACA,kBAAA,EACA,mEACA,YAAA,KACA,kBAAA,KOt+UI,yBPy+UJ,0BACA,eAAA,IACA,uDACA,0BAAA,OACA,wBAAA,EACA,sDACA,wBAAA,OACA,0BAAA,EACA,kDACA,WAAA,EACA,4DACA,iBAAA,IACA,kBAAA,EACA,mEACA,YAAA,KACA,kBAAA,KOx/UI,yBP2/UJ,0BACA,eAAA,IACA,uDACA,0BAAA,OACA,wBAAA,EACA,sDACA,wBAAA,OACA,0BAAA,EACA,kDACA,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A,+DACA,iBAAA,8NACA,sCACA,iBAAA,sIACA,2DACA,iBAAA,sIACA,4DACA,iBAAA,sIACA,+CACA,iBAAA,QACA,aAAA,QACA,iBAAA,wNACA,oEACA,iBAAA,wNACA,qEACA,iBAAA,wNACA,2BACA,eAAA,KACA,OAAA,KACA,QAAA,GACA,6CAAA,8CACA,QAAA,GgB7oWA,mBhBgpWA,QAAA,aACA,aAAA,KgB5oWA,WhB+oWA,SAAA,SACA,KAAA,cACA,eAAA,KACA,yBAAA,0BACA,eAAA,KACA,OAAA,KACA,QAAA,IgBrrWA,ahBwrWA,aAAA,MACA,+BACA,MAAA,IACA,YAAA,OACA,oBAAA,KAAA,OACA,cAAA,IACA,WAAA,oBAAA,KAAA,YACA,iBAAA,sIACA,iBAAA,KACA,aAAA,KACA,uCACA,+BACA,WAAA,MACA,oDACA,iBAAA,4JACA,iBAAA,KACA,aAAA,qBACA,qDACA,iBAAA,sIACA,iBAAA,KACA,aAAA,KACA,qCACA,iBAAA,sIACA,0DACA,iBAAA,4JACA,2DACA,iBAAA,sIACA,uCACA,oBAAA,MAAA,OACA,iBAAA,QACA,aAAA,QACA,iBAAA,sIACA,4DACA,iBAAA,QACA,aAAA,QACA,6DACA,iBAAA,QACA,aAAA,QACA,4DACA,iBAAA,sIACA,6DACA,iBAAA,sIkE10WI,mBlEq5WJ,SAAA,SACA,OAAA,KACA,SAAA,OACA,yBACA,mBAAA,KACA,WAAA,KACA,SAAA,SACA,UAAA,kBACA,IAAA,EACA,MAAA,KACA,yBACA,QAAA,2BACA,SAAA,SACA,IAAA,IACA,MAAA,OACA,UAAA,iBACA,YAAA,SACA,MAAA,KACA,UAAA,OACA,eAAA,KACA,+CACA,MAAA,KACA,8CACA,MAAA,KACA,yBACA,OAAA,KACA,KAAA,EACA,MAAA,KACA,IAAA,EACA,UAAA,cACA,QAAA,EAAA,KAAA,EAAA,OACA,YAAA,OACA,SAAA,OACA,cAAA,SACA,OAAA,QACA,cAAA,IAAA,MAAA,qBACA,YAAA,KACA,eAAA,IAGA,qDADA,+CADA,gDAGA,YAAA,IACA,UAAA,KACA,YAAA,MACA,Y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CA,oCACA,WAAA,KACA,aAAA,qBACA,qCACA,WAAA,KACA,aAAA,KuB5tYA,evB+tYA,YAAA,OACA,MAAA,KACA,qBACA,MAAA,KACA,WAAA,QACA,oCACA,YAAA,OACA,MAAA,QACA,0CACA,MAAA,QACA,WAAA,QACA,qCACA,YAAA,OACA,MAAA,KACA,2CACA,MAAA,KACA,WAAA,QwEv3YA,OxE03YA,WAAA,YACA,OAAA,EACA,YAAA,OACA,eAAA,KACA,eACA,WAAA,IAAA,OAAA,KACA,oCACA,aAAA,qBACA,qCACA,aAAA,KACA,2BACA,WAAA,EACA,YACA,QAAA,KAAA,EACA,SACA,OAAA,EACA,uBACA,iBAAA,QACA,4CACA,iBAAA,QACA,6CACA,iBAAA,QACA,4BACA,OAAA,EACA,4BACA,4BACA,aAAA,IACA,cAAA,IACA,wCACA,eAAA,EACA,uCACA,YAAA,GACA,iBACA,QAAA,KAAA,EACA,mBACA,OAAA,KACA,4BACA,qBACA,OAAA,IAAA,G6B55YA,kB7B8lZA,SAAA,SACA,QAAA,KACA,YAAA,OACA,MAAA,KACA,QAAA,KAAA,QACA,UAAA,KACA,MAAA,KACA,WAAA,KACA,iBAAA,YACA,OAAA,EACA,cAAA,EACA,gBAAA,KACA,WAAA,MAAA,KAAA,WAAA,CAAA,iBAAA,KAAA,WAAA,CAAA,aAAA,KAAA,WAAA,CAAA,WAAA,KAAA,WAAA,CAAA,cAAA,KAAA,KACA,uCACA,kBACA,WAAA,MACA,uCACA,MAAA,QACA,wCACA,MAAA,KACA,kCACA,MAAA,KACA,iBAAA,YACA,WAAA,KACA,cAAA,IAAA,MAAA,QACA,uDACA,MAAA,QACA,iBAAA,YACA,cAAA,IAAA,MAAA,QACA,wDACA,MAAA,KACA,iBAAA,YACA,cAAA,IAAA,MAAA,QACA,yCACA,iBAAA,KACA,UAAA,cACA,MAAA,QACA,8DACA,MAAA,QACA,+DACA,MAAA,QACA,yBACA,YAAA,EACA,MAAA,QACA,OAAA,QACA,YAAA,KACA,YAAA,0BACA,QAAA,oBACA,iBAAA,KACA,kBAAA,UACA,gBAAA,QACA,WAAA,UAAA,IAAA,YACA,WAAA,OACA,YAAA,QACA,uCACA,yBACA,WAAA,MACA,wBACA,QAAA,EACA,wBACA,QAAA,EACA,aAAA,QACA,QAAA,EACA,WAAA,K6B1mZA,kB7B6mZA,cAAA,E6BzmZA,gB7B4mZA,cAAA,KACA,iBAAA,YACA,OAAA,IAAA,MAAA,KACA,qCACA,OAAA,IAAA,MAAA,qBACA,sCACA,OAAA,IAAA,MAAA,KACA,8BACA,uBAAA,OACA,wBAAA,OACA,gDACA,uBAAA,mBACA,wBAAA,mBACA,6BACA,cAAA,EACA,2BAAA,OACA,0BAAA,OACA,yDACA,2BAAA,mBACA,0BAAA,mBACA,iDACA,2BAAA,OACA,0BAAA,O6BpmZA,gB7BumZA,QAAA,KAAA,QACA,WAAA,QACA,MAAA,KACA,qCACA,MAAA,QACA,WAAA,QACA,sCACA,MAAA,KACA,WAAA,QyEj2YE,iBzEo2YF,OAAA,IAAA,MAAA,KACA,cAAA,OACA,sCACA,OAAA,IAAA,MAAA,qBACA,uCACA,OAAA,IAAA,MAAA,KACA,qCACA,aAAA,EACA,iCACA,aAAA,EACA,YAAA,EACA,cAAA,EACA,6CACA,WAAA,EACA,4CACA,cAAA,EACA,mDACA,cAAA,EkCxtZA,OlC2tZA,QAAA,OAAA,QAAA,OAAA,OACA,cAAA,SACA,OAAA,IAAA,MAAA,QACA,WAAA,KACA,MAAA,QACA,4BACA,WAAA,KACA,MAAA,KACA,6BACA,WAAA,KACA,MAAA,QACA,UACA,iBAAA,QACA,+BACA,iBAAA,QACA,gCACA,iBAAA,QACA,cAAA,YAAA,eAAA,eACA,aAAA,QACA,SAAA,SACA,qBAAA,mBAAA,sBAAA,sBACA,QAAA,GACA,SAAA,SACA,IAAA,OACA,KAAA,OACA,YAAA,0BACA,UAAA,OACA,YAAA,OACA,eACA,MAAA,KACA,WAAA,QACA,aAAA,QACA,8BACA,2BACA,MAAA,eACA,iBACA,MAAA,KACA,gBAAA,UACA,oCACA,MAAA,KACA,WAAA,QACA,aAAA,QACA,mDACA,gDACA,MAAA,eACA,qCACA,MAAA,KACA,WAAA,QACA,aAAA,QACA,oDACA,iDACA,MAAA,eACA,iBACA,MAAA,KACA,WAAA,KACA,aAAA,KACA,MAAA,KACA,WAAA,KACA,aAAA,eACA,gCACA,6BACA,MAAA,eACA,mBACA,MAAA,KACA,gBAAA,UACA,sCACA,MAAA,KACA,WAAA,QACA,aAAA,QACA,qDACA,kDACA,MAAA,eACA,uCACA,MAAA,KACA,WAAA,KACA,aAAA,KACA,sDACA,mDACA,MAAA,eACA,gCACA,6BACA,MAAA,eACA,sCACA,MAAA,QACA,WAAA,IACA,aAAA,QACA,qDACA,kDACA,MAAA,kBACA,uCACA,MAAA,KACA,WAAA,KACA,aAAA,eACA,sDACA,mDACA,MAAA,eACA,YACA,MAAA,KACA,WAAA,QACA,aAAA,QACA,mBACA,QAAA,OACA,MAAA,QACA,2BACA,wBACA,MAAA,eACA,cACA,MAAA,KACA,gBAAA,UACA,iCACA,MAAA,KACA,WAAA,QACA,aAAA,QACA,gDACA,6CACA,MAAA,eACA,kCACA,MAAA,KACA,WAAA,QACA,aAAA,QACA,iDACA,8CACA,MAAA,eACA,YACA,MAAA,KACA,WAAA,QACA,aAAA,QACA,2BACA,wBACA,MAAA,eACA,cACA,MAAA,KACA,gBAAA,UACA,iCACA,MAAA,KACA,WAAA,QACA,aAAA,QACA,gDACA,6CACA,MAAA,eACA,kCACA,MAAA,KACA,WAAA,QACA,aAAA,QACA,iDACA,8CACA,MAAA,eACA,eACA,MAAA,KACA,WAAA,QACA,aAAA,QACA,sBACA,QAAA,eACA,MAAA,QACA,8BACA,2BACA,MAAA,eACA,iBACA,MAAA,KACA,gBAAA,UACA,oCACA,MAAA,KACA,WAAA,QACA,aAAA,QACA,mDACA,gDACA,MAAA,eACA,qCACA,MAAA,KACA,WAAA,QACA,aAAA,QACA,oDACA,iDACA,MAAA,eACA,cACA,MAAA,KACA,WAAA,QACA,aAAA,QACA,qBACA,QAAA,iBACA,MAAA,QACA,6BACA,0BACA,MAAA,eACA,gBACA,MAAA,KACA,gBAAA,UACA,mCACA,MAAA,KACA,WAAA,QACA,aAAA,QACA,kDACA,+CACA,MAAA,eACA,oCACA,MAAA,KACA,WAAA,QACA,aAAA,QACA,mDACA,gDACA,MAAA,eACA,eACA,MAAA,KACA,WAAA,QACA,aAAA,QACA,sBACA,QAAA,iBACA,MAAA,QACA,8BACA,2BACA,MAAA,eACA,iBACA,MAAA,KACA,gBAAA,UACA,oCACA,MAAA,KACA,WAAA,QACA,aAAA,QACA,mDACA,gDACA,MAAA,eACA,qCACA,MAAA,KACA,WAAA,QACA,aAAA,QACA,oDACA,iDACA,MAAA,eACA,YACA,MAAA,kBACA,iCACA,MAAA,kBACA,kCACA,MAAA,kBACA,mBACA,cAAA,QACA,0BACA,QAAA,SAAA,OACA,UAAA,OACA,YAAA,OACA,MAAA,QACA,IAAA,EACA,MAAA,EACA,QAAA,GACA,SAAA,SACA,MAAA,EACA,OAAA,EACA,WAAA,IACA,iCACA,YAAA,0BACA,QAAA,QACA,MAAA,QACA,gCACA,QAAA,EACA,mBACA,cAAA,EACA,0BACA,SAAA,OACA,QAAA,MACA,yBACA,0BACA,QAAA,aACA,eAAA,Q4Bj+ZA,M5B0paA,SAAA,SACA,QAAA,KACA,eAAA,OACA,UAAA,EACA,UAAA,WACA,iBAAA,KACA,gBAAA,WACA,OAAA,IAAA,MAAA,KACA,cAAA,OACA,2BACA,OAAA,IAAA,MAAA,qBACA,iBAAA,KACA,4BACA,OAAA,IAAA,MAAA,KACA,iBAAA,KACA,uBACA,iBAAA,KACA,aAAA,KACA,4CACA,aAAA,qBACA,iBAAA,KACA,6CACA,aAAA,KACA,iBAAA,KACA,SACA,aAAA,EACA,YAAA,EACA,kBACA,WAAA,QACA,cAAA,QACA,8BACA,iBAAA,EACA,uBAAA,mBACA,wBAAA,mBACA,6BACA,oBAAA,EACA,2BAAA,mBACA,0BAAA,mBACA,+BACA,+BACA,WAAA,E4B1paA,W5B6paA,KAAA,EAAA,EAAA,KACA,QAAA,KAAA,KACA,MAAA,KACA,gCACA,MAAA,QACA,iCACA,MAAA,K4B3paA,Y5B8paA,cAAA,M4B1paA,e5B6paA,WAAA,QACA,cAAA,EACA,YAAA,IACA,eAAA,UACA,MAAA,QACA,UAAA,OA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,MAAA,KACA,qFAAA,qFACA,WAAA,QACA,MAAA,QACA,+CACA,WAAA,KACA,OAAA,IAAA,MAAA,KACA,cAAA,IACA,iDACA,SAAA,SACA,YAAA,IACA,UAAA,EACA,YAAA,MACA,eAAA,EACA,QAAA,OAAA,OAAA,OACA,YAAA,OACA,WAAA,IAAA,IACA,cAAA,SACA,WAAA,IACA,MAAA,KASA,YAAA,IACA,UAAA,KACA,YAAA,MACA,MAAA,eACA,sEACA,MAAA,KACA,uEACA,MAAA,KACA,6DACA,WAAA,QACA,MAAA,KACA,kFACA,WAAA,QACA,MAAA,QACA,mFACA,WAAA,QACA,MAAA,KACA,sEACA,MAAA,kBACA,uEACA,MAAA,eACA,oEACA,WAAA,KACA,OAAA,IAAA,MAAA,qBACA,qEACA,WAAA,KACA,OAAA,IAAA,MAAA,KACA,iEACA,aAAA,KACA,sFACA,aAAA,qBACA,uFACA,aAAA,K2EtvcI,yB3EyvcJ,YAAA,cACA,UAAA,KACA,eAAA,eACA,YAAA,OACA,YAAA,SACA,MAAA,KACA,cAAA,SACA,aAAA,EACA,QAAA,SAAA,OACA,SAAA,SACA,WAAA,IAAA,IACA,8CACA,MAAA,QACA,+CACA,MAAA,KACA,gCACA,OAAA,KACA,WAAA,QACA,MAAA,KACA,qDACA,WAAA,QACA,MAAA,KACA,sDACA,WAAA,QACA,MAAA,KACA,kCACA,MAAA,eACA,OAAA,YACA,uDACA,MAAA,qBACA,wDACA,MAAA,eACA,2DAAA,2DACA,WAAA,QACA,MAAA,QACA,gFAAA,gFACA,WAAA,QACA,MAAA,KACA,iFAAA,iFACA,WAAA,QACA,MAAA,Q2EjycI,qC3EoycJ,YAAA,cACA,UAAA,KACA,eAAA,eACA,YAAA,OACA,WAAA,IACA,YAAA,SACA,MAAA,KACA,cAAA,SACA,YAAA,IAAA,MAAA,YACA,uBAAA,EACA,0BAAA,EACA,QAAA,SAAA,OASA,0DACA,MAAA,QACA,2DACA,MAAA,KACA,4CACA,WAAA,IACA,aAAA,QACA,MAAA,QACA,iEACA,aAAA,QACA,MAAA,KACA,kEACA,aAAA,QACA,MAAA,QACA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,cAAA,GACA,2CACA,WAAA,qBACA,4CACA,WAAA,qBACA,4BAAA,4BACA,QAAA,EACA,mCAAA,mCACA,QAAA,EACA,mCACA,WAAA,QACA,wDACA,WAAA,QACA,yDACA,WAAA,Q6EzyeA,kB7EizeA,WAAA,MACA,yBACA,kBACA,SAAA,OACA,QAAA,aACA,MAAA,O8ExyeA,mB9E0zeA,WAAA,QACA,QAAA,SACA,wCACA,WAAA,QACA,yCACA,WAAA,QACA,8BACA,OAAA,YACA,2CACA,WAAA,OACA,aAAA,IAAA,OAAA,KACA,YAAA,QACA,gEACA,aAAA,qBACA,iEACA,aAAA,KACA,wDACA,OAAA,EACA,4BACA,2CACA,OAAA,EACA,yDACA,aAAA,IAAA,OAAA,KACA,8EACA,aAAA,qBACA,+EACA,aAAA,KACA,wDACA,WAAA,MACA,qBACA,gBAAA,KACA,YAAA,I+Ev2eA,gC/E02eA,WAAA,QACA,QAAA,SACA,qDACA,WAAA,QACA,sDACA,WAAA,QACA,4BACA,6CACA,UAAA,OACA,OAAA,KACA,WAAA,IACA,2DACA,0DACA,MAAA,KACA,OAAA,EAAA,EAAA,gBACA,cAAA,iBACA,sEACA,qEACA,OAAA,GACA,8EACA,UAAA,MACA,gFACA,UAAA,MgFh4eA,sBhFm4eA,MAAA,QACA,OAAA,KAAA,IACA,UAAA,MACA,WAAA,OACA,QAAA,EACA,mCACA,QAAA,aACA,cAAA,KACA,OAAA,QACA,MAAA,KACA,OAAA,KACA,UAAA,IACA,QAAA,IAAA,EACA,WAAA,OACA,WAAA,KACA,YAAA,0BACA,QAAA,QACA,yCACA,WAAA,QACA,MAAA,KACA,6CACA,UAAA,KACA,eAAA,SACA,gCACA,QAAA,aACA,QAAA,EACA,iDACA,WAAA,IACA,OAAA,IAAA,MAAA,YACA,QAAA,QACA,OAAA,KACA,QAAA,EACA,cAAA,EACA,MAAA,QACA,uDACA,OAAA,IAAA,MAAA,YACA,MAAA,QACA,WAAA,cACA,sEACA,OAAA,IAAA,MAAA,YACA,MAAA,QACA,4EACA,OAAA,IAAA,MAAA,YACA,MAAA,QACA,uEACA,OAAA,IAAA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AAA,IACA,4BACA,UACA,QAAA,MACA,OAAA,OAAA,MiC9nfA,OjCiofA,cAAA,OACA,UAAA,QACA,YAAA,SACA,QAAA,EAAA,SACA,OAAA,SACA,UAAA,SACA,eAAA,KACA,QAAA,aACA,eAAA,SACA,OAAA,IAAA,MAAA,KACA,WAAA,OACA,eAAA,UACA,MAAA,KACA,WAAA,KACA,MAAA,KACA,4BACA,aAAA,KACA,6BACA,aAAA,KACA,4BACA,iBAAA,QACA,MAAA,KACA,6BACA,iBAAA,KACA,MAAA,KACA,aAAA,eACA,WAAA,QACA,MAAA,KACA,kCAAA,oCACA,iBAAA,QACA,MAAA,KACA,mCAAA,qCACA,iBAAA,QACA,MAAA,KACA,iBACA,WAAA,KACA,MAAA,KACA,sCACA,iBAAA,QACA,MAAA,KACA,uCACA,iBAAA,KACA,MAAA,KACA,YACA,WAAA,QACA,MAAA,KACA,iCACA,iBAAA,QACA,MAAA,KACA,kCACA,iBAAA,QACA,MAAA,KACA,YACA,WAAA,KACA,MAAA,KACA,iCACA,iBAAA,QACA,MAAA,KACA,kCACA,iBAAA,KACA,MAAA,KACA,eACA,WAAA,QACA,MAAA,KACA,oCACA,iBAAA,QACA,MAAA,KACA,qCACA,iBAAA,QACA,MAAA,KACA,cACA,WAAA,QACA,MAAA,KACA,mCACA,iBAAA,QACA,MAAA,KACA,oCACA,iBAAA,QACA,MAAA,KACA,eACA,WAAA,QACA,MAAA,KACA,oCACA,iBAAA,QACA,MAAA,KACA,qCACA,iBAAA,QACA,MAAA,KAiBA,kBACA,kBACA,kBACA,kBAnBA,WAWA,sBATA,WAEA,WAEA,WAEA,WAEA,WAUA,MApBA,UACA,UAEA,UAEA,UAEA,UAEA,UAYA,YAAA,MACA,YACA,eAAA,YACA,OAAA,EAAA,EAAA,OAAA,WACA,SAAA,SACA,QAAA,E2C3ufA,U3C8+fA,SAAA,S2C1+fA,wB3C6+fA,aAAA,M2Cz+fA,gB3C4+fA,SAAA,SACA,MAAA,KACA,SAAA,OACA,uBACA,QAAA,MACA,MAAA,KACA,QAAA,G2C3+fA,e3C8+fA,SAAA,SACA,QAAA,KACA,MA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","file":"bootstrap.css","sourcesContent":["/*!\n * Bootstrap v5.0.0-beta1 (https://getbootstrap.com/)\n * Copyright 2011-2020 The Bootstrap Authors\n * Copyright 2011-2020 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n */\n\n// scss-docs-start import-stack\n// Configuration\n@import \"scss/functions\";\n\n@import \"../../common/scss/itcssImports/vars\";\n@import \"../../common/scss/itcssImports/mixins\";\n@import \"./settings/variables\";\n\n@import \"scss/mixins\";\n@import \"scss/utilities\";\n\n// Layout & components\n@import \"scss/root\";\n@import \"scss/reboot\";\n@import \"scss/type\";\n@import \"scss/images\";\n@import \"scss/containers\";\n@import \"scss/grid\";\n@import \"scss/tables\";\n@import \"scss/forms\";\n@import \"scss/buttons\";\n@import \"scss/transitions\";\n@import \"scss/dropdown\";\n@import \"scss/button-group\";\n@import \"scss/nav\";\n@import \"scss/navbar\";\n@import \"scss/card\";\n@import \"scss/accordion\";\n@import \"scss/breadcrumb\";\n@import \"scss/pagination\";\n@import \"scss/badge\";\n@import \"scss/alert\";\n@import \"scss/progress\";\n@import \"scss/list-group\";\n@import \"scss/close\";\n@import \"scss/toasts\";\n@import \"scss/modal\";\n@import \"scss/tooltip\";\n@import \"scss/popover\";\n@import \"scss/carousel\";\n@import \"scss/spinners\";\n\n// Helpers\n@import \"scss/helpers\";\n\n// Utilities\n@import \"scss/utilities/api\";\n// scss-docs-end import-stack \n\n$bootstrap: true;\n$foundation: false;\n@import \"../../common/scss/itcssImports/generic\";\n@import \"../../common/scss/itcssImports/base\";\n@import \"../../common/scss/itcssImports/objects\";\n@import \"../../common/scss/itcssImports/components\";\n@import \"../../common/scss/itcssImports/utils\";\n","@import url('https://fonts.googleapis.com/css2?family=Arapey&family=Noto+Sans:ital,wght@0,400;0,700;1,400;1,700&display=swap');\n@import url('https://fonts.googleapis.com/icon?family=Material+Icons&display=swap');","// @import \"../../assets/font/icon\"\n@import url('https://fonts.googleapis.com/icon?family=Material+Icons+Outlined');","@mixin __on-theme--dark {\n @at-root .#{$__classPrefix}__theme--dark & {\n @content;\n }\n}\n\n@mixin __on-theme--light {\n @at-root .#{$__classPrefix}__theme--light & {\n @content;\n }\n}\n\n\n@mixin animated($time: .5s, $prop: background, $prop2: text-indent){\n -webkit-animation-fill-mode: both;\n -moz-animation-fill-mode: both;\n -ms-animation-fill-mode: both;\n -o-animation-fill-mode: both;\n animation-fill-mode: both;\n -webkit-animation-duration: $time;\n -moz-animation-duration: $time;\n -ms-animation-duration: $time;\n -o-animation-duration: $time;\n animation-duration: $time;\n\n -o-transition: $prop $time ease-out, $prop2 $time ease-out;\n -ms-transition: $prop $time ease-out, $prop2 $time ease-out;\n -moz-transition: $prop $time ease-out, $prop2 $time ease-out;\n -webkit-transition: $prop $time ease-out, $prop2 $time ease-out;\n transition: $prop $time ease-out, $prop2 $time ease-out;\n}\n\n@-webkit-keyframes bounce {\n 0%, 20%, 50%, 80%, 100% {-webkit-transform: translateY(0);}\n 40% {-webkit-transform: translateY(30px);}\n 60% {-webkit-transform: translateY(15px);}\n}\n\n@-moz-keyframes bounce {\n 0%, 20%, 50%, 80%, 100% {-moz-transform: translateY(0);}\n 40% {-moz-transform: translateY(30px);}\n 60% {-moz-transform: translateY(15px);}\n}\n\n@-ms-keyframes bounce {\n 0%, 20%, 50%, 80%, 100% {-ms-transform: translateY(0);}\n 40% {-ms-transform: translateY(30px);}\n 60% {-ms-transform: translateY(15px);}\n}\n\n@-o-keyframes bounce {\n 0%, 20%, 50%, 80%, 100% {-o-transform: translateY(0);}\n 40% {-o-transform: translateY(30px);}\n 60% {-o-transform: translateY(15px);}\n}\n@keyframes bounce {\n 0%, 20%, 50%, 80%, 100% {transform: translateY(0);}\n 40% {transform: translateY(30px);}\n 60% {transform: translateY(15px);}\n}\n\n@mixin bounce($time: .5s){\n -webkit-animation-name: bounce;\n -moz-animation-name: bounce;\n -ms-animation-name: bounce;\n -o-animation-name: bounce;\n animation-name: bounce;\n\n -webkit-animation-duration: $time;\n -moz-animation-duration: $time;\n -ms-animation-duration: $time;\n -o-animation-duration: $time;\n animation-duration: $time; \n}\n\n@mixin slideInUp($time: .5s){\n -webkit-animation-name: slideInUp;\n animation-name: slideInUp;\n\n -webkit-animation-duration: $time;\n -moz-animation-duration: $time;\n -ms-animation-duration: $time;\n -o-animation-duration: $time;\n animation-duration: $time;\n}\n\n@-webkit-keyframes slideInUp {\n from {\n -webkit-transform: translate3d(0, 30%, 0);\n transform: translate3d(0, 30%, 0);\n visibility: visible;\n opacity: 0;\n }\n\n to {\n -webkit-transform: translate3d(0, 0, 0);\n transform: translate3d(0, 0, 0);\n opacity: 1;\n }\n}\n",null,"@mixin __shadow($distance: 3) {\n //box-shadow: 0px __remcalc($distance) __remcalc($distance) rgba(102, 110, 122, 0.1);\n}\n\n@mixin __shadow--level1 {\n @include __shadow(3);\n}\n\n@mixin __shadow--level2 {\n @include __shadow(6);\n}\n\n@mixin __shadow--level3 {\n @include __shadow(9);\n}\n\n@mixin __shadow--level4 {\n @include __shadow(12);\n}\n\n@mixin __shadow--level5 {\n @include __shadow(15);\n}\n\n\n.scielo__shadow-1{\n box-shadow: 0 1px 3px rgba(0,0,0,0.12), 0 1px 2px rgba(0,0,0,0.24);\n}\n\n.scielo__shadow-2{\n box-shadow: 0 3px 6px rgba(0,0,0,0.16), 0 3px 6px rgba(0,0,0,0.23);\n}\n\n.scielo__shadow-3{\n box-shadow: 0 10px 20px rgba(0,0,0,0.19), 0 6px 6px rgba(0,0,0,0.23);\n}\n\n.scielo__shadow-4{\n box-shadow: 0 14px 28px rgba(0,0,0,0.25), 0 10px 10px rgba(0,0,0,0.22);\n}\n\n.scielo__shadow-5{\n box-shadow: 0 19px 38px rgba(0,0,0,0.30), 0 15px 12px rgba(0,0,0,0.22);\n}",":root {\n // Custom variable values only support SassScript inside `#{}`.\n @each $color, $value in $colors {\n --#{$variable-prefix}#{$color}: #{$value};\n }\n\n @each $color, $value in $theme-colors {\n --#{$variable-prefix}#{$color}: #{$value};\n }\n\n // Use `inspect` for lists so that quoted items keep the quotes.\n // See https://github.com/sass/sass/issues/2383#issuecomment-336349172\n --#{$variable-prefix}font-sans-serif: #{inspect($font-family-sans-serif)};\n --#{$variable-prefix}font-monospace: #{inspect($font-family-monospace)};\n --#{$variable-prefix}gradient: #{$gradient};\n}\n","// stylelint-disable declaration-no-important, selector-no-qualifying-type, property-no-vendor-prefix\n\n\n// Reboot\n//\n// Normalization of HTML elements, manually forked from Normalize.css to remove\n// styles targeting irrelevant browsers while applying new styles.\n//\n// Normalize is licensed MIT. https://github.com/necolas/normalize.css\n\n\n// Document\n//\n// Change from `box-sizing: content-box` so that `width` is not affected by `padding` or `border`.\n\n*,\n*::before,\n*::after {\n box-sizing: border-box;\n}\n\n\n// Root\n//\n// Ability to the value of the root font sizes, affecting the value of `rem`.\n// null by default, thus nothing is generated.\n\n:root {\n font-size: $font-size-root;\n\n @if $enable-smooth-scroll {\n @media (prefers-reduced-motion: no-preference) {\n scroll-behavior: smooth;\n }\n }\n}\n\n\n// Body\n//\n// 1. Remove the margin in all browsers.\n// 2. As a best practice, apply a default `background-color`.\n// 3. Prevent adjustments of font size after orientation changes in iOS.\n// 4. Change the default tap highlight to be completely transparent in iOS.\n\nbody {\n margin: 0; // 1\n font-family: $font-family-base;\n @include font-size($font-size-base);\n font-weight: $font-weight-base;\n line-height: $line-height-base;\n color: $body-color;\n text-align: $body-text-align;\n background-color: $body-bg; // 2\n -webkit-text-size-adjust: 100%; // 3\n -webkit-tap-highlight-color: rgba($black, 0); // 4\n}\n\n\n// Content grouping\n//\n// 1. Reset Firefox's gray color\n// 2. Set correct height and prevent the `size` attribute to make the `hr` look like an input field\n\nhr {\n margin: $hr-margin-y 0;\n color: $hr-color; // 1\n background-color: currentColor;\n border: 0;\n opacity: $hr-opacity;\n}\n\nhr:not([size]) {\n height: $hr-height; // 2\n}\n\n\n// Typography\n//\n// 1. Remove top margins from headings\n// By default, `

`-`

` all receive top and bottom margins. We nuke the top\n// margin for easier control within type scales as it avoids margin collapsing.\n\n%heading {\n margin-top: 0; // 1\n margin-bottom: $headings-margin-bottom;\n font-family: $headings-font-family;\n font-style: $headings-font-style;\n font-weight: $headings-font-weight;\n line-height: $headings-line-height;\n color: $headings-color;\n}\n\nh1 {\n @extend %heading;\n @include font-size($h1-font-size);\n}\n\nh2 {\n @extend %heading;\n @include font-size($h2-font-size);\n}\n\nh3 {\n @extend %heading;\n @include font-size($h3-font-size);\n}\n\nh4 {\n @extend %heading;\n @include font-size($h4-font-size);\n}\n\nh5 {\n @extend %heading;\n @include font-size($h5-font-size);\n}\n\nh6 {\n @extend %heading;\n @include font-size($h6-font-size);\n}\n\n\n// Reset margins on paragraphs\n//\n// Similarly, the top margin on `

`s get reset. However, we also reset the\n// bottom margin to use `rem` units instead of `em`.\n\np {\n margin-top: 0;\n margin-bottom: $paragraph-margin-bottom;\n}\n\n\n// Abbreviations\n//\n// 1. Duplicate behavior to the data-bs-* attribute for our tooltip plugin\n// 2. Add the correct text decoration in Chrome, Edge, Opera, and Safari.\n// 3. Add explicit cursor to indicate changed behavior.\n// 4. Prevent the text-decoration to be skipped.\n\nabbr[title],\nabbr[data-bs-original-title] { // 1\n text-decoration: underline dotted; // 2\n cursor: help; // 3\n text-decoration-skip-ink: none; // 4\n}\n\n\n// Address\n\naddress {\n margin-bottom: 1rem;\n font-style: normal;\n line-height: inherit;\n}\n\n\n// Lists\n\nol,\nul {\n padding-left: 2rem;\n}\n\nol,\nul,\ndl {\n margin-top: 0;\n margin-bottom: 1rem;\n}\n\nol ol,\nul ul,\nol ul,\nul ol {\n margin-bottom: 0;\n}\n\ndt {\n font-weight: $dt-font-weight;\n}\n\n// 1. Undo browser default\n\ndd {\n margin-bottom: .5rem;\n margin-left: 0; // 1\n}\n\n\n// Blockquote\n\nblockquote {\n margin: 0 0 1rem;\n}\n\n\n// Strong\n//\n// Add the correct font weight in Chrome, Edge, and Safari\n\nb,\nstrong {\n font-weight: $font-weight-bolder;\n}\n\n\n// Small\n//\n// Add the correct font size in all browsers\n\nsmall {\n @include font-size($small-font-size);\n}\n\n\n// Mark\n\nmark {\n padding: $mark-padding;\n background-color: $mark-bg;\n}\n\n\n// Sub and Sup\n//\n// Prevent `sub` and `sup` elements from affecting the line height in\n// all browsers.\n\nsub,\nsup {\n position: relative;\n @include font-size($sub-sup-font-size);\n line-height: 0;\n vertical-align: baseline;\n}\n\nsub { bottom: -.25em; }\nsup { top: -.5em; }\n\n\n// Links\n\na {\n color: $link-color;\n text-decoration: $link-decoration;\n\n &:hover {\n color: $link-hover-color;\n text-decoration: $link-hover-decoration;\n }\n}\n\n// And undo these styles for placeholder links/named anchors (without href).\n// It would be more straightforward to just use a[href] in previous block, but that\n// causes specificity issues in many other styles that are too complex to fix.\n// See https://github.com/twbs/bootstrap/issues/19402\n\na:not([href]):not([class]) {\n &,\n &:hover {\n color: inherit;\n text-decoration: none;\n }\n}\n\n\n// Code\n\npre,\ncode,\nkbd,\nsamp {\n font-family: $font-family-code;\n @include font-size(1em); // Correct the odd `em` font sizing in all browsers.\n direction: ltr #{\"/* rtl:ignore */\"};\n unicode-bidi: bidi-override;\n}\n\n// 1. Remove browser default top margin\n// 2. Reset browser default of `1em` to use `rem`s\n// 3. Don't allow content to break outside\n\npre {\n display: block;\n margin-top: 0; // 1\n margin-bottom: 1rem; // 2\n overflow: auto; // 3\n @include font-size($code-font-size);\n color: $pre-color;\n\n // Account for some code outputs that place code tags in pre tags\n code {\n @include font-size(inherit);\n color: inherit;\n word-break: normal;\n }\n}\n\ncode {\n @include font-size($code-font-size);\n color: $code-color;\n word-wrap: break-word;\n\n // Streamline the style when inside anchors to avoid broken underline and more\n a > & {\n color: inherit;\n }\n}\n\nkbd {\n padding: $kbd-padding-y $kbd-padding-x;\n @include font-size($kbd-font-size);\n color: $kbd-color;\n background-color: $kbd-bg;\n @include border-radius($border-radius-sm);\n\n kbd {\n padding: 0;\n @include font-size(1em);\n font-weight: $nested-kbd-font-weight;\n }\n}\n\n\n// Figures\n//\n// Apply a consistent margin strategy (matches our type styles).\n\nfigure {\n margin: 0 0 1rem;\n}\n\n\n// Images and content\n\nimg,\nsvg {\n vertical-align: middle;\n}\n\n\n// Tables\n//\n// Prevent double borders\n\ntable {\n caption-side: bottom;\n border-collapse: collapse;\n}\n\ncaption {\n padding-top: $table-cell-padding-y;\n padding-bottom: $table-cell-padding-y;\n color: $table-caption-color;\n text-align: left;\n}\n\n// 1. Removes font-weight bold by inheriting\n// 2. Matches default `` alignment by inheriting `text-align`.\n// 3. Fix alignment for Safari\n\nth {\n font-weight: $table-th-font-weight; // 1\n text-align: inherit; // 2\n text-align: -webkit-match-parent; // 3\n}\n\nthead,\ntbody,\ntfoot,\ntr,\ntd,\nth {\n border-color: inherit;\n border-style: solid;\n border-width: 0;\n}\n\n\n// Forms\n//\n// 1. Allow labels to use `margin` for spacing.\n\nlabel {\n display: inline-block; // 1\n}\n\n// Remove the default `border-radius` that macOS Chrome adds.\n// See https://github.com/twbs/bootstrap/issues/24093\n\nbutton {\n // stylelint-disable-next-line property-disallowed-list\n border-radius: 0;\n}\n\n// Explicitly remove focus outline in Chromium when it shouldn't be\n// visible (e.g. as result of mouse click or touch tap). It already\n// should be doing this automatically, but seems to currently be\n// confused and applies its very visible two-tone outline anyway.\n\nbutton:focus:not(:focus-visible) {\n outline: 0;\n}\n\n// 1. Remove the margin in Firefox and Safari\n\ninput,\nbutton,\nselect,\noptgroup,\ntextarea {\n margin: 0; // 1\n font-family: inherit;\n @include font-size(inherit);\n line-height: inherit;\n}\n\n// Remove the inheritance of text transform in Firefox\nbutton,\nselect {\n text-transform: none;\n}\n// Set the cursor for non-`

'; + } + + ctt += ' \ + '; + + return ctt; + }, + CollectionListFill: function(data,labels,id) { + var ctt = ' \ + '; + + for(var i=0,l=data.collectionList.length;i '+data.collectionList[i].name+' ('+data.collectionList[i].Total+') \ +
'; + } + + ctt += ' \ + '; + + return ctt; + + }, + ScrollEvents: function(container,loading,labels) { + var currentPage = $(".collectionCurrentPage",container), + totalPages = $(".collectionTotalPages",container), + query = $(".collectionSearch",container), + rp = $(container).data("perpage"), + method = $(container).data("method"), + param = "method=alphabetic&rp="+rp+(query.val() != "" ? "&query="+query.val() : ""); + + $(window).off("scroll").on("scroll",function() { + if(currentPage.val() < totalPages.val()) { + $("footer").hide(); + if($(window).scrollTop() + $(window).height() == $(document).height()) { + var page = parseInt(currentPage.val()); + page++; + currentPage.val(page); + param += "&page="+page; + + Collection.JournalListFinder(param,loading,container,labels,false,false); + } + } else { + $("footer").show(); + } + }); + }, + CollapseEvents: function(container,labels) { + var method = $(container).data("method"), + query = $(".collectionSearch",container), + param = "method=alphabetic"+(query.val() != "" ? "&query="+query.val() : ""), + collapseTitle = $(".collapseTitle,.collapseTitleBlock",container); + + collapseTitle.on("click",function() { + var t = $(this), + p = t.parent(), + loading = p.find(".collectionListLoading"), + content = t.next(".collapseContent"), + cached = content.find("table tbody tr").length; + + if(content.is(":visible")) { + content.slideUp("fast"); + $(this).addClass("closed"); + } else { + if(t.is(".collapseTitleBlock")) { + content.slideDown("fast"); + loading.hide(); + $(this).removeClass("closed"); + } else { + if(cached == 0) { + var str = typeof t.data("id") != "undefined" ? t.data("id") : $("strong",this).text(); + param += "&"+method+"="+str; + Collection.JournalListFinder(param,loading,container,labels,true,false,"Collection.CollapseOpen('#"+content.attr("id")+"','#"+t.attr("id")+"')",content); + } else { + content.slideDown("fast"); + loading.hide(); + $(this).removeClass("closed"); + } + } + + } + }); + }, + CollapseOpen: function(content,title) { + $(content).slideDown("fast"); + $(title).removeClass("closed"); + } + } + Journal = { + Init: function() { + + $("#sortBy").change(function(){ + $("#sortBy option:selected" ).each(function() { + Journal.publicationSort($(this).val()); + }); + }) + + $(".scroll").on("click",function(e) { + + var d = $(this).attr("href"); + var g = d.split("#")[1]; + + if($("a[name="+g+"]").length>0){ + + var p = $("a[name="+g+"]").offset(); + $("html,body").animate({ + scrollTop: (p.top+1) + },500); + + } + }); + + }, + Bindings: function(ctn) { + if(typeof ctn == "undefined") ctn = ".journal"; + }, + publicationSort: function(valor) { + + var listas = $(".issueIndent>ul.articles"); + var qtdlista = listas.length; + + for(var t=0; t<=qtdlista; t++){ + + var ul = listas[t]; + var li = $(ul).children(); + + if(valor === 'YEAR_DESC'){ + + $(li).sort(function(a,b) { + + var dateA = parseInt($(a).data("date")), + dateB = parseInt($(b).data("date")); + + return (dateA > dateB) ? 1 : -1; + + }).each(function(){ + $(ul).append(this); + }); + + }else { + + $(li).sort(function(a,b) { + + var dateA = parseInt($(a).data("date")), + dateB = parseInt($(b).data("date")); + + return (dateA < dateB) ? 1 : -1; + + }).each(function(){ + $(ul).append(this); + }); + } + } + }, + publicatorName: function(){ + var nome = $(".namePlublisher").text(); + var qtdname = nome.length; + + if (qtdname >= 56){ + $(".namePlublisher").attr( "data-toggle", "tooltip" ); + $(".namePlublisher").attr( "title", nome ); + } + } + }; + +var Validator = { + MultipleEmails: function(val,delimiter) { + var delimiter = delimiter || ';'; + var filter = /^(([^<>()[\]\\.,;:\s@\"]+(\.[^<>()[\]\\.,;:\s@\"]+)*)|(\".+\"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/; + var error = true; + + var aEmails = val.split(delimiter); + + for(var i = 0; i < aEmails.length; i++) { + aEmails[i] = aEmails[i].trim(); + if(aEmails[i] == '' || filter.test(aEmails[i]) == false) + error = false; + } + + return error; + } +}; + +var Cookie = { + Get: function(cookieName,path) { + if(typeof path === "undefined") path = ""; + else path = path+"/"; + cookieName = path+cookieName; + if (document.cookie.length > 0) { + c_start = document.cookie.indexOf(cookieName + "="); + if (c_start != -1) { + c_start = c_start + cookieName.length + 1; + c_end = document.cookie.indexOf(";", c_start); + if (c_end == -1) { + c_end = document.cookie.length; + } + return unescape(document.cookie.substring(c_start, c_end)); + } + } + return ""; + }, + Set: function(cookieName, value, days, path) { + var expires; + if(typeof days !== "undefined") { + var date = new Date(); + date.setTime(date.getTime() + (days * 24 * 60 * 60 * 1000)); + expires = "; expires=" + date.toGMTString(); + } else + expires = ""; + if(typeof path === "undefined") path = ""; + else path = path + "/"; + + if(Cookie.Get(cookieName) != "") { + document.cookie = path+cookieName + "=" + value + "expires=Thu, 01 Jan 1970 00:00:01 GMT" + "; path=/"; + } + document.cookie = path+cookieName + "=" + value + expires + "; path=/"; + } +}; + +$(function() { + + Portal.Init(); + + if($(".searchForm").length) + SearchForm.Init(); + + if($("body.journal").length) + Journal.Init(); + + if($("body.collection, body.portal").length) + Collection.Init(); + + if($("body.portal.home").length) + $('.portal .twitter').twittie({ + dateFormat: '%b. %d, %Y', + template: '{{date}}
{{tweet}}
', + count: 3, + loadingText: 'Carregando...', + dateFormat: '%d de %B', + }); + + if($(".portal .collectionList").length) + var hash = window.location.hash; + $('.portal .collection .nav-tabs a[href="' + hash + '"]').tab('show'); + + if($(".namePlublisher").length) + Journal.publicatorName(); + +}); diff --git a/core/static/journal_about/js/modal_forms.js b/core/static/journal_about/js/modal_forms.js new file mode 100644 index 0000000..348dd8b --- /dev/null +++ b/core/static/journal_about/js/modal_forms.js @@ -0,0 +1,133 @@ +'use strict'; + +var ModalForms = { + modal_id: null, + form_id: null, + url: "/", + method: "POST", + submit_btn_id: null, + has_captcha: false, + captcha_key: null, + captcha_theme: "light", + captcha_id: null, + email_confirm_modal_id: "#modal_confirm", + success_message: null, + error_message: null, + rcaptcha: null, + + submit:function(){ + var self = this; + + $.ajax({ + type: self.method, + url: self.url, + data: $(self.form_id).serialize(), + success: function(data) + { + // Clean error message + $.each(data.fields, function(_, name){ + var field = $('#' + name); + + field.parent().removeClass("has-error"); + $('#' + name + '_error').html(''); + }); + + if (data.sent === false){ + + if (self.has_captcha === true){ + $(self.submit_btn_id).attr('disabled', 'disabled'); + self.render_captcha(); + } + + // Set error message + $.each(data.message, function(key, val){ + $('#' + key).parent().addClass("has-error"); + $('#' + key + '_error').html(val); + }); + + }else{ + $(self.modal_id).modal('toggle'); + $('.midGlyph').addClass('success'); + $('.midGlyph').html(self.success_message); + $(self.email_confirm_modal_id).modal('show'); + } + }, + error: function (data) { + $(self.modal_id).modal('toggle'); + $('.midGlyph').removeClass('success').toggleClass('unsuccess'); + $('.midGlyph').html(self.error_message); + $(self.email_confirm_modal_id).modal('show'); + } + }); + + }, + + recaptcha_callback: function() { + $(this.submit_btn_id).removeAttr('disabled'); + }, + + registry_recaptcha_modal: function(){ + var self = this; + + $(this.modal_id).on('show.bs.modal', function () { + + setTimeout(function() { + self.render_captcha(self.captcha_id, self.captcha_key, + self.captcha_theme); + }, 100); + + }); + + }, + + render_captcha: function(captcha_id, captcha_key, captcha_theme){ + + if(this.render_captcha){ + $(this.submit_btn_id).attr('disabled', 'disabled'); + } + + if (this.rcaptcha === null){ + this.rcaptcha = grecaptcha.render(captcha_id, { + sitekey: captcha_key, + theme: captcha_theme, + callback: this.recaptcha_callback.bind(this) + }); + }else{ + grecaptcha.reset(this.rcaptcha); + } + }, + + init: function(modal_id, form_id, url, method, submit_btn_id, has_captcha, + captcha_key, captcha_id, captcha_theme, email_confirm_modal_id, + success_message, error_message){ + + this.modal_id = modal_id; + this.form_id = form_id; + this.url = url; + this.method= method; + this.submit_btn_id = submit_btn_id; + this.has_captcha= has_captcha; + this.captcha_key = captcha_key; + this.captcha_theme = captcha_theme; + this.captcha_id = captcha_id; + this.email_confirm_modal_id = email_confirm_modal_id; + this.success_message = success_message; + this.error_message = error_message; + this.rcaptcha = null; + + if (this.has_captcha === true){ + this.registry_recaptcha_modal(); + } + + var self = this; + $(this.form_id).submit(function(e) { + + e.preventDefault(); + + self.submit(); + }); + + return this; + }, + +}; diff --git a/core/static/journal_about/js/moment-with-locales.js b/core/static/journal_about/js/moment-with-locales.js new file mode 100644 index 0000000..aebfa54 --- /dev/null +++ b/core/static/journal_about/js/moment-with-locales.js @@ -0,0 +1,13700 @@ +;(function (global, factory) { + typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() : + typeof define === 'function' && define.amd ? define(factory) : + global.moment = factory() +}(this, (function () { 'use strict'; + +var hookCallback; + +function hooks () { + return hookCallback.apply(null, arguments); +} + +// This is done to register the method called with moment() +// without creating circular dependencies. +function setHookCallback (callback) { + hookCallback = callback; +} + +function isArray(input) { + return input instanceof Array || Object.prototype.toString.call(input) === '[object Array]'; +} + +function isObject(input) { + // IE8 will treat undefined and null as object if it wasn't for + // input != null + return input != null && Object.prototype.toString.call(input) === '[object Object]'; +} + +function isObjectEmpty(obj) { + var k; + for (k in obj) { + // even if its not own property I'd still call it non-empty + return false; + } + return true; +} + +function isUndefined(input) { + return input === void 0; +} + +function isNumber(input) { + return typeof input === 'number' || Object.prototype.toString.call(input) === '[object Number]'; +} + +function isDate(input) { + return input instanceof Date || Object.prototype.toString.call(input) === '[object Date]'; +} + +function map(arr, fn) { + var res = [], i; + for (i = 0; i < arr.length; ++i) { + res.push(fn(arr[i], i)); + } + return res; +} + +function hasOwnProp(a, b) { + return Object.prototype.hasOwnProperty.call(a, b); +} + +function extend(a, b) { + for (var i in b) { + if (hasOwnProp(b, i)) { + a[i] = b[i]; + } + } + + if (hasOwnProp(b, 'toString')) { + a.toString = b.toString; + } + + if (hasOwnProp(b, 'valueOf')) { + a.valueOf = b.valueOf; + } + + return a; +} + +function createUTC (input, format, locale, strict) { + return createLocalOrUTC(input, format, locale, strict, true).utc(); +} + +function defaultParsingFlags() { + // We need to deep clone this object. + return { + empty : false, + unusedTokens : [], + unusedInput : [], + overflow : -2, + charsLeftOver : 0, + nullInput : false, + invalidMonth : null, + invalidFormat : false, + userInvalidated : false, + iso : false, + parsedDateParts : [], + meridiem : null, + rfc2822 : false, + weekdayMismatch : false + }; +} + +function getParsingFlags(m) { + if (m._pf == null) { + m._pf = defaultParsingFlags(); + } + return m._pf; +} + +var some; +if (Array.prototype.some) { + some = Array.prototype.some; +} else { + some = function (fun) { + var t = Object(this); + var len = t.length >>> 0; + + for (var i = 0; i < len; i++) { + if (i in t && fun.call(this, t[i], i, t)) { + return true; + } + } + + return false; + }; +} + +var some$1 = some; + +function isValid(m) { + if (m._isValid == null) { + var flags = getParsingFlags(m); + var parsedParts = some$1.call(flags.parsedDateParts, function (i) { + return i != null; + }); + var isNowValid = !isNaN(m._d.getTime()) && + flags.overflow < 0 && + !flags.empty && + !flags.invalidMonth && + !flags.invalidWeekday && + !flags.nullInput && + !flags.invalidFormat && + !flags.userInvalidated && + (!flags.meridiem || (flags.meridiem && parsedParts)); + + if (m._strict) { + isNowValid = isNowValid && + flags.charsLeftOver === 0 && + flags.unusedTokens.length === 0 && + flags.bigHour === undefined; + } + + if (Object.isFrozen == null || !Object.isFrozen(m)) { + m._isValid = isNowValid; + } + else { + return isNowValid; + } + } + return m._isValid; +} + +function createInvalid (flags) { + var m = createUTC(NaN); + if (flags != null) { + extend(getParsingFlags(m), flags); + } + else { + getParsingFlags(m).userInvalidated = true; + } + + return m; +} + +// Plugins that add properties should also add the key here (null value), +// so we can properly clone ourselves. +var momentProperties = hooks.momentProperties = []; + +function copyConfig(to, from) { + var i, prop, val; + + if (!isUndefined(from._isAMomentObject)) { + to._isAMomentObject = from._isAMomentObject; + } + if (!isUndefined(from._i)) { + to._i = from._i; + } + if (!isUndefined(from._f)) { + to._f = from._f; + } + if (!isUndefined(from._l)) { + to._l = from._l; + } + if (!isUndefined(from._strict)) { + to._strict = from._strict; + } + if (!isUndefined(from._tzm)) { + to._tzm = from._tzm; + } + if (!isUndefined(from._isUTC)) { + to._isUTC = from._isUTC; + } + if (!isUndefined(from._offset)) { + to._offset = from._offset; + } + if (!isUndefined(from._pf)) { + to._pf = getParsingFlags(from); + } + if (!isUndefined(from._locale)) { + to._locale = from._locale; + } + + if (momentProperties.length > 0) { + for (i = 0; i < momentProperties.length; i++) { + prop = momentProperties[i]; + val = from[prop]; + if (!isUndefined(val)) { + to[prop] = val; + } + } + } + + return to; +} + +var updateInProgress = false; + +// Moment prototype object +function Moment(config) { + copyConfig(this, config); + this._d = new Date(config._d != null ? config._d.getTime() : NaN); + if (!this.isValid()) { + this._d = new Date(NaN); + } + // Prevent infinite loop in case updateOffset creates new moment + // objects. + if (updateInProgress === false) { + updateInProgress = true; + hooks.updateOffset(this); + updateInProgress = false; + } +} + +function isMoment (obj) { + return obj instanceof Moment || (obj != null && obj._isAMomentObject != null); +} + +function absFloor (number) { + if (number < 0) { + // -0 -> 0 + return Math.ceil(number) || 0; + } else { + return Math.floor(number); + } +} + +function toInt(argumentForCoercion) { + var coercedNumber = +argumentForCoercion, + value = 0; + + if (coercedNumber !== 0 && isFinite(coercedNumber)) { + value = absFloor(coercedNumber); + } + + return value; +} + +// compare two arrays, return the number of differences +function compareArrays(array1, array2, dontConvert) { + var len = Math.min(array1.length, array2.length), + lengthDiff = Math.abs(array1.length - array2.length), + diffs = 0, + i; + for (i = 0; i < len; i++) { + if ((dontConvert && array1[i] !== array2[i]) || + (!dontConvert && toInt(array1[i]) !== toInt(array2[i]))) { + diffs++; + } + } + return diffs + lengthDiff; +} + +function warn(msg) { + if (hooks.suppressDeprecationWarnings === false && + (typeof console !== 'undefined') && console.warn) { + console.warn('Deprecation warning: ' + msg); + } +} + +function deprecate(msg, fn) { + var firstTime = true; + + return extend(function () { + if (hooks.deprecationHandler != null) { + hooks.deprecationHandler(null, msg); + } + if (firstTime) { + var args = []; + var arg; + for (var i = 0; i < arguments.length; i++) { + arg = ''; + if (typeof arguments[i] === 'object') { + arg += '\n[' + i + '] '; + for (var key in arguments[0]) { + arg += key + ': ' + arguments[0][key] + ', '; + } + arg = arg.slice(0, -2); // Remove trailing comma and space + } else { + arg = arguments[i]; + } + args.push(arg); + } + warn(msg + '\nArguments: ' + Array.prototype.slice.call(args).join('') + '\n' + (new Error()).stack); + firstTime = false; + } + return fn.apply(this, arguments); + }, fn); +} + +var deprecations = {}; + +function deprecateSimple(name, msg) { + if (hooks.deprecationHandler != null) { + hooks.deprecationHandler(name, msg); + } + if (!deprecations[name]) { + warn(msg); + deprecations[name] = true; + } +} + +hooks.suppressDeprecationWarnings = false; +hooks.deprecationHandler = null; + +function isFunction(input) { + return input instanceof Function || Object.prototype.toString.call(input) === '[object Function]'; +} + +function set (config) { + var prop, i; + for (i in config) { + prop = config[i]; + if (isFunction(prop)) { + this[i] = prop; + } else { + this['_' + i] = prop; + } + } + this._config = config; + // Lenient ordinal parsing accepts just a number in addition to + // number + (possibly) stuff coming from _dayOfMonthOrdinalParse. + // TODO: Remove "ordinalParse" fallback in next major release. + this._dayOfMonthOrdinalParseLenient = new RegExp( + (this._dayOfMonthOrdinalParse.source || this._ordinalParse.source) + + '|' + (/\d{1,2}/).source); +} + +function mergeConfigs(parentConfig, childConfig) { + var res = extend({}, parentConfig), prop; + for (prop in childConfig) { + if (hasOwnProp(childConfig, prop)) { + if (isObject(parentConfig[prop]) && isObject(childConfig[prop])) { + res[prop] = {}; + extend(res[prop], parentConfig[prop]); + extend(res[prop], childConfig[prop]); + } else if (childConfig[prop] != null) { + res[prop] = childConfig[prop]; + } else { + delete res[prop]; + } + } + } + for (prop in parentConfig) { + if (hasOwnProp(parentConfig, prop) && + !hasOwnProp(childConfig, prop) && + isObject(parentConfig[prop])) { + // make sure changes to properties don't modify parent config + res[prop] = extend({}, res[prop]); + } + } + return res; +} + +function Locale(config) { + if (config != null) { + this.set(config); + } +} + +var keys; + +if (Object.keys) { + keys = Object.keys; +} else { + keys = function (obj) { + var i, res = []; + for (i in obj) { + if (hasOwnProp(obj, i)) { + res.push(i); + } + } + return res; + }; +} + +var keys$1 = keys; + +var defaultCalendar = { + sameDay : '[Today at] LT', + nextDay : '[Tomorrow at] LT', + nextWeek : 'dddd [at] LT', + lastDay : '[Yesterday at] LT', + lastWeek : '[Last] dddd [at] LT', + sameElse : 'L' +}; + +function calendar (key, mom, now) { + var output = this._calendar[key] || this._calendar['sameElse']; + return isFunction(output) ? output.call(mom, now) : output; +} + +var defaultLongDateFormat = { + LTS : 'h:mm:ss A', + LT : 'h:mm A', + L : 'MM/DD/YYYY', + LL : 'MMMM D, YYYY', + LLL : 'MMMM D, YYYY h:mm A', + LLLL : 'dddd, MMMM D, YYYY h:mm A' +}; + +function longDateFormat (key) { + var format = this._longDateFormat[key], + formatUpper = this._longDateFormat[key.toUpperCase()]; + + if (format || !formatUpper) { + return format; + } + + this._longDateFormat[key] = formatUpper.replace(/MMMM|MM|DD|dddd/g, function (val) { + return val.slice(1); + }); + + return this._longDateFormat[key]; +} + +var defaultInvalidDate = 'Invalid date'; + +function invalidDate () { + return this._invalidDate; +} + +var defaultOrdinal = '%d'; +var defaultDayOfMonthOrdinalParse = /\d{1,2}/; + +function ordinal (number) { + return this._ordinal.replace('%d', number); +} + +var defaultRelativeTime = { + 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' +}; + +function relativeTime (number, withoutSuffix, string, isFuture) { + var output = this._relativeTime[string]; + return (isFunction(output)) ? + output(number, withoutSuffix, string, isFuture) : + output.replace(/%d/i, number); +} + +function pastFuture (diff, output) { + var format = this._relativeTime[diff > 0 ? 'future' : 'past']; + return isFunction(format) ? format(output) : format.replace(/%s/i, output); +} + +var aliases = {}; + +function addUnitAlias (unit, shorthand) { + var lowerCase = unit.toLowerCase(); + aliases[lowerCase] = aliases[lowerCase + 's'] = aliases[shorthand] = unit; +} + +function normalizeUnits(units) { + return typeof units === 'string' ? aliases[units] || aliases[units.toLowerCase()] : undefined; +} + +function normalizeObjectUnits(inputObject) { + var normalizedInput = {}, + normalizedProp, + prop; + + for (prop in inputObject) { + if (hasOwnProp(inputObject, prop)) { + normalizedProp = normalizeUnits(prop); + if (normalizedProp) { + normalizedInput[normalizedProp] = inputObject[prop]; + } + } + } + + return normalizedInput; +} + +var priorities = {}; + +function addUnitPriority(unit, priority) { + priorities[unit] = priority; +} + +function getPrioritizedUnits(unitsObj) { + var units = []; + for (var u in unitsObj) { + units.push({unit: u, priority: priorities[u]}); + } + units.sort(function (a, b) { + return a.priority - b.priority; + }); + return units; +} + +function makeGetSet (unit, keepTime) { + return function (value) { + if (value != null) { + set$1(this, unit, value); + hooks.updateOffset(this, keepTime); + return this; + } else { + return get(this, unit); + } + }; +} + +function get (mom, unit) { + return mom.isValid() ? + mom._d['get' + (mom._isUTC ? 'UTC' : '') + unit]() : NaN; +} + +function set$1 (mom, unit, value) { + if (mom.isValid()) { + mom._d['set' + (mom._isUTC ? 'UTC' : '') + unit](value); + } +} + +// MOMENTS + +function stringGet (units) { + units = normalizeUnits(units); + if (isFunction(this[units])) { + return this[units](); + } + return this; +} + + +function stringSet (units, value) { + if (typeof units === 'object') { + units = normalizeObjectUnits(units); + var prioritized = getPrioritizedUnits(units); + for (var i = 0; i < prioritized.length; i++) { + this[prioritized[i].unit](units[prioritized[i].unit]); + } + } else { + units = normalizeUnits(units); + if (isFunction(this[units])) { + return this[units](value); + } + } + return this; +} + +function zeroFill(number, targetLength, forceSign) { + var absNumber = '' + Math.abs(number), + zerosToFill = targetLength - absNumber.length, + sign = number >= 0; + return (sign ? (forceSign ? '+' : '') : '-') + + Math.pow(10, Math.max(0, zerosToFill)).toString().substr(1) + absNumber; +} + +var formattingTokens = /(\[[^\[]*\])|(\\)?([Hh]mm(ss)?|Mo|MM?M?M?|Do|DDDo|DD?D?D?|ddd?d?|do?|w[o|w]?|W[o|W]?|Qo?|YYYYYY|YYYYY|YYYY|YY|gg(ggg?)?|GG(GGG?)?|e|E|a|A|hh?|HH?|kk?|mm?|ss?|S{1,9}|x|X|zz?|ZZ?|.)/g; + +var localFormattingTokens = /(\[[^\[]*\])|(\\)?(LTS|LT|LL?L?L?|l{1,4})/g; + +var formatFunctions = {}; + +var formatTokenFunctions = {}; + +// token: 'M' +// padded: ['MM', 2] +// ordinal: 'Mo' +// callback: function () { this.month() + 1 } +function addFormatToken (token, padded, ordinal, callback) { + var func = callback; + if (typeof callback === 'string') { + func = function () { + return this[callback](); + }; + } + if (token) { + formatTokenFunctions[token] = func; + } + if (padded) { + formatTokenFunctions[padded[0]] = function () { + return zeroFill(func.apply(this, arguments), padded[1], padded[2]); + }; + } + if (ordinal) { + formatTokenFunctions[ordinal] = function () { + return this.localeData().ordinal(func.apply(this, arguments), token); + }; + } +} + +function removeFormattingTokens(input) { + if (input.match(/\[[\s\S]/)) { + return input.replace(/^\[|\]$/g, ''); + } + return input.replace(/\\/g, ''); +} + +function makeFormatFunction(format) { + var array = format.match(formattingTokens), i, length; + + for (i = 0, length = array.length; i < length; i++) { + if (formatTokenFunctions[array[i]]) { + array[i] = formatTokenFunctions[array[i]]; + } else { + array[i] = removeFormattingTokens(array[i]); + } + } + + return function (mom) { + var output = '', i; + for (i = 0; i < length; i++) { + output += isFunction(array[i]) ? array[i].call(mom, format) : array[i]; + } + return output; + }; +} + +// format date using native date object +function formatMoment(m, format) { + if (!m.isValid()) { + return m.localeData().invalidDate(); + } + + format = expandFormat(format, m.localeData()); + formatFunctions[format] = formatFunctions[format] || makeFormatFunction(format); + + return formatFunctions[format](m); +} + +function expandFormat(format, locale) { + var i = 5; + + function replaceLongDateFormatTokens(input) { + return locale.longDateFormat(input) || input; + } + + localFormattingTokens.lastIndex = 0; + while (i >= 0 && localFormattingTokens.test(format)) { + format = format.replace(localFormattingTokens, replaceLongDateFormatTokens); + localFormattingTokens.lastIndex = 0; + i -= 1; + } + + return format; +} + +var match1 = /\d/; // 0 - 9 +var match2 = /\d\d/; // 00 - 99 +var match3 = /\d{3}/; // 000 - 999 +var match4 = /\d{4}/; // 0000 - 9999 +var match6 = /[+-]?\d{6}/; // -999999 - 999999 +var match1to2 = /\d\d?/; // 0 - 99 +var match3to4 = /\d\d\d\d?/; // 999 - 9999 +var match5to6 = /\d\d\d\d\d\d?/; // 99999 - 999999 +var match1to3 = /\d{1,3}/; // 0 - 999 +var match1to4 = /\d{1,4}/; // 0 - 9999 +var match1to6 = /[+-]?\d{1,6}/; // -999999 - 999999 + +var matchUnsigned = /\d+/; // 0 - inf +var matchSigned = /[+-]?\d+/; // -inf - inf + +var matchOffset = /Z|[+-]\d\d:?\d\d/gi; // +00:00 -00:00 +0000 -0000 or Z +var matchShortOffset = /Z|[+-]\d\d(?::?\d\d)?/gi; // +00 -00 +00:00 -00:00 +0000 -0000 or Z + +var matchTimestamp = /[+-]?\d+(\.\d{1,3})?/; // 123456789 123456789.123 + +// any word (or two) characters or numbers including two/three word month in arabic. +// includes scottish gaelic two word and hyphenated months +var matchWord = /[0-9]*['a-z\u00A0-\u05FF\u0700-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]+|[\u0600-\u06FF\/]+(\s*?[\u0600-\u06FF]+){1,2}/i; + + +var regexes = {}; + +function addRegexToken (token, regex, strictRegex) { + regexes[token] = isFunction(regex) ? regex : function (isStrict, localeData) { + return (isStrict && strictRegex) ? strictRegex : regex; + }; +} + +function getParseRegexForToken (token, config) { + if (!hasOwnProp(regexes, token)) { + return new RegExp(unescapeFormat(token)); + } + + return regexes[token](config._strict, config._locale); +} + +// Code from http://stackoverflow.com/questions/3561493/is-there-a-regexp-escape-function-in-javascript +function unescapeFormat(s) { + return regexEscape(s.replace('\\', '').replace(/\\(\[)|\\(\])|\[([^\]\[]*)\]|\\(.)/g, function (matched, p1, p2, p3, p4) { + return p1 || p2 || p3 || p4; + })); +} + +function regexEscape(s) { + return s.replace(/[-\/\\^$*+?.()|[\]{}]/g, '\\$&'); +} + +var tokens = {}; + +function addParseToken (token, callback) { + var i, func = callback; + if (typeof token === 'string') { + token = [token]; + } + if (isNumber(callback)) { + func = function (input, array) { + array[callback] = toInt(input); + }; + } + for (i = 0; i < token.length; i++) { + tokens[token[i]] = func; + } +} + +function addWeekParseToken (token, callback) { + addParseToken(token, function (input, array, config, token) { + config._w = config._w || {}; + callback(input, config._w, config, token); + }); +} + +function addTimeToArrayFromToken(token, input, config) { + if (input != null && hasOwnProp(tokens, token)) { + tokens[token](input, config._a, config, token); + } +} + +var YEAR = 0; +var MONTH = 1; +var DATE = 2; +var HOUR = 3; +var MINUTE = 4; +var SECOND = 5; +var MILLISECOND = 6; +var WEEK = 7; +var WEEKDAY = 8; + +var indexOf; + +if (Array.prototype.indexOf) { + indexOf = Array.prototype.indexOf; +} else { + indexOf = function (o) { + // I know + var i; + for (i = 0; i < this.length; ++i) { + if (this[i] === o) { + return i; + } + } + return -1; + }; +} + +var indexOf$1 = indexOf; + +function daysInMonth(year, month) { + return new Date(Date.UTC(year, month + 1, 0)).getUTCDate(); +} + +// FORMATTING + +addFormatToken('M', ['MM', 2], 'Mo', function () { + return this.month() + 1; +}); + +addFormatToken('MMM', 0, 0, function (format) { + return this.localeData().monthsShort(this, format); +}); + +addFormatToken('MMMM', 0, 0, function (format) { + return this.localeData().months(this, format); +}); + +// ALIASES + +addUnitAlias('month', 'M'); + +// PRIORITY + +addUnitPriority('month', 8); + +// PARSING + +addRegexToken('M', match1to2); +addRegexToken('MM', match1to2, match2); +addRegexToken('MMM', function (isStrict, locale) { + return locale.monthsShortRegex(isStrict); +}); +addRegexToken('MMMM', function (isStrict, locale) { + return locale.monthsRegex(isStrict); +}); + +addParseToken(['M', 'MM'], function (input, array) { + array[MONTH] = toInt(input) - 1; +}); + +addParseToken(['MMM', 'MMMM'], function (input, array, config, token) { + var month = config._locale.monthsParse(input, token, config._strict); + // if we didn't find a month name, mark the date as invalid. + if (month != null) { + array[MONTH] = month; + } else { + getParsingFlags(config).invalidMonth = input; + } +}); + +// LOCALES + +var MONTHS_IN_FORMAT = /D[oD]?(\[[^\[\]]*\]|\s)+MMMM?/; +var defaultLocaleMonths = 'January_February_March_April_May_June_July_August_September_October_November_December'.split('_'); +function localeMonths (m, format) { + if (!m) { + return isArray(this._months) ? this._months : + this._months['standalone']; + } + return isArray(this._months) ? this._months[m.month()] : + this._months[(this._months.isFormat || MONTHS_IN_FORMAT).test(format) ? 'format' : 'standalone'][m.month()]; +} + +var defaultLocaleMonthsShort = 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'); +function localeMonthsShort (m, format) { + if (!m) { + return isArray(this._monthsShort) ? this._monthsShort : + this._monthsShort['standalone']; + } + return isArray(this._monthsShort) ? this._monthsShort[m.month()] : + this._monthsShort[MONTHS_IN_FORMAT.test(format) ? 'format' : 'standalone'][m.month()]; +} + +function handleStrictParse(monthName, format, strict) { + var i, ii, mom, llc = monthName.toLocaleLowerCase(); + if (!this._monthsParse) { + // this is not used + this._monthsParse = []; + this._longMonthsParse = []; + this._shortMonthsParse = []; + for (i = 0; i < 12; ++i) { + mom = createUTC([2000, i]); + this._shortMonthsParse[i] = this.monthsShort(mom, '').toLocaleLowerCase(); + this._longMonthsParse[i] = this.months(mom, '').toLocaleLowerCase(); + } + } + + if (strict) { + if (format === 'MMM') { + ii = indexOf$1.call(this._shortMonthsParse, llc); + return ii !== -1 ? ii : null; + } else { + ii = indexOf$1.call(this._longMonthsParse, llc); + return ii !== -1 ? ii : null; + } + } else { + if (format === 'MMM') { + ii = indexOf$1.call(this._shortMonthsParse, llc); + if (ii !== -1) { + return ii; + } + ii = indexOf$1.call(this._longMonthsParse, llc); + return ii !== -1 ? ii : null; + } else { + ii = indexOf$1.call(this._longMonthsParse, llc); + if (ii !== -1) { + return ii; + } + ii = indexOf$1.call(this._shortMonthsParse, llc); + return ii !== -1 ? ii : null; + } + } +} + +function localeMonthsParse (monthName, format, strict) { + var i, mom, regex; + + if (this._monthsParseExact) { + return handleStrictParse.call(this, monthName, format, strict); + } + + if (!this._monthsParse) { + this._monthsParse = []; + this._longMonthsParse = []; + this._shortMonthsParse = []; + } + + // TODO: add sorting + // Sorting makes sure if one month (or abbr) is a prefix of another + // see sorting in computeMonthsParse + for (i = 0; i < 12; i++) { + // make the regex if we don't have it already + mom = createUTC([2000, i]); + if (strict && !this._longMonthsParse[i]) { + this._longMonthsParse[i] = new RegExp('^' + this.months(mom, '').replace('.', '') + '$', 'i'); + this._shortMonthsParse[i] = new RegExp('^' + this.monthsShort(mom, '').replace('.', '') + '$', 'i'); + } + if (!strict && !this._monthsParse[i]) { + regex = '^' + this.months(mom, '') + '|^' + this.monthsShort(mom, ''); + this._monthsParse[i] = new RegExp(regex.replace('.', ''), 'i'); + } + // test the regex + if (strict && format === 'MMMM' && this._longMonthsParse[i].test(monthName)) { + return i; + } else if (strict && format === 'MMM' && this._shortMonthsParse[i].test(monthName)) { + return i; + } else if (!strict && this._monthsParse[i].test(monthName)) { + return i; + } + } +} + +// MOMENTS + +function setMonth (mom, value) { + var dayOfMonth; + + if (!mom.isValid()) { + // No op + return mom; + } + + if (typeof value === 'string') { + if (/^\d+$/.test(value)) { + value = toInt(value); + } else { + value = mom.localeData().monthsParse(value); + // TODO: Another silent failure? + if (!isNumber(value)) { + return mom; + } + } + } + + dayOfMonth = Math.min(mom.date(), daysInMonth(mom.year(), value)); + mom._d['set' + (mom._isUTC ? 'UTC' : '') + 'Month'](value, dayOfMonth); + return mom; +} + +function getSetMonth (value) { + if (value != null) { + setMonth(this, value); + hooks.updateOffset(this, true); + return this; + } else { + return get(this, 'Month'); + } +} + +function getDaysInMonth () { + return daysInMonth(this.year(), this.month()); +} + +var defaultMonthsShortRegex = matchWord; +function monthsShortRegex (isStrict) { + if (this._monthsParseExact) { + if (!hasOwnProp(this, '_monthsRegex')) { + computeMonthsParse.call(this); + } + if (isStrict) { + return this._monthsShortStrictRegex; + } else { + return this._monthsShortRegex; + } + } else { + if (!hasOwnProp(this, '_monthsShortRegex')) { + this._monthsShortRegex = defaultMonthsShortRegex; + } + return this._monthsShortStrictRegex && isStrict ? + this._monthsShortStrictRegex : this._monthsShortRegex; + } +} + +var defaultMonthsRegex = matchWord; +function monthsRegex (isStrict) { + if (this._monthsParseExact) { + if (!hasOwnProp(this, '_monthsRegex')) { + computeMonthsParse.call(this); + } + if (isStrict) { + return this._monthsStrictRegex; + } else { + return this._monthsRegex; + } + } else { + if (!hasOwnProp(this, '_monthsRegex')) { + this._monthsRegex = defaultMonthsRegex; + } + return this._monthsStrictRegex && isStrict ? + this._monthsStrictRegex : this._monthsRegex; + } +} + +function computeMonthsParse () { + function cmpLenRev(a, b) { + return b.length - a.length; + } + + var shortPieces = [], longPieces = [], mixedPieces = [], + i, mom; + for (i = 0; i < 12; i++) { + // make the regex if we don't have it already + mom = createUTC([2000, i]); + shortPieces.push(this.monthsShort(mom, '')); + longPieces.push(this.months(mom, '')); + mixedPieces.push(this.months(mom, '')); + mixedPieces.push(this.monthsShort(mom, '')); + } + // Sorting makes sure if one month (or abbr) is a prefix of another it + // will match the longer piece. + shortPieces.sort(cmpLenRev); + longPieces.sort(cmpLenRev); + mixedPieces.sort(cmpLenRev); + for (i = 0; i < 12; i++) { + shortPieces[i] = regexEscape(shortPieces[i]); + longPieces[i] = regexEscape(longPieces[i]); + } + for (i = 0; i < 24; i++) { + mixedPieces[i] = regexEscape(mixedPieces[i]); + } + + this._monthsRegex = new RegExp('^(' + mixedPieces.join('|') + ')', 'i'); + this._monthsShortRegex = this._monthsRegex; + this._monthsStrictRegex = new RegExp('^(' + longPieces.join('|') + ')', 'i'); + this._monthsShortStrictRegex = new RegExp('^(' + shortPieces.join('|') + ')', 'i'); +} + +// FORMATTING + +addFormatToken('Y', 0, 0, function () { + var y = this.year(); + return y <= 9999 ? '' + y : '+' + y; +}); + +addFormatToken(0, ['YY', 2], 0, function () { + return this.year() % 100; +}); + +addFormatToken(0, ['YYYY', 4], 0, 'year'); +addFormatToken(0, ['YYYYY', 5], 0, 'year'); +addFormatToken(0, ['YYYYYY', 6, true], 0, 'year'); + +// ALIASES + +addUnitAlias('year', 'y'); + +// PRIORITIES + +addUnitPriority('year', 1); + +// PARSING + +addRegexToken('Y', matchSigned); +addRegexToken('YY', match1to2, match2); +addRegexToken('YYYY', match1to4, match4); +addRegexToken('YYYYY', match1to6, match6); +addRegexToken('YYYYYY', match1to6, match6); + +addParseToken(['YYYYY', 'YYYYYY'], YEAR); +addParseToken('YYYY', function (input, array) { + array[YEAR] = input.length === 2 ? hooks.parseTwoDigitYear(input) : toInt(input); +}); +addParseToken('YY', function (input, array) { + array[YEAR] = hooks.parseTwoDigitYear(input); +}); +addParseToken('Y', function (input, array) { + array[YEAR] = parseInt(input, 10); +}); + +// HELPERS + +function daysInYear(year) { + return isLeapYear(year) ? 366 : 365; +} + +function isLeapYear(year) { + return (year % 4 === 0 && year % 100 !== 0) || year % 400 === 0; +} + +// HOOKS + +hooks.parseTwoDigitYear = function (input) { + return toInt(input) + (toInt(input) > 68 ? 1900 : 2000); +}; + +// MOMENTS + +var getSetYear = makeGetSet('FullYear', true); + +function getIsLeapYear () { + return isLeapYear(this.year()); +} + +function createDate (y, m, d, h, M, s, ms) { + // can't just apply() to create a date: + // https://stackoverflow.com/q/181348 + var date = new Date(y, m, d, h, M, s, ms); + + // the date constructor remaps years 0-99 to 1900-1999 + if (y < 100 && y >= 0 && isFinite(date.getFullYear())) { + date.setFullYear(y); + } + return date; +} + +function createUTCDate (y) { + var date = new Date(Date.UTC.apply(null, arguments)); + + // the Date.UTC function remaps years 0-99 to 1900-1999 + if (y < 100 && y >= 0 && isFinite(date.getUTCFullYear())) { + date.setUTCFullYear(y); + } + return date; +} + +// start-of-first-week - start-of-year +function firstWeekOffset(year, dow, doy) { + var // first-week day -- which january is always in the first week (4 for iso, 1 for other) + fwd = 7 + dow - doy, + // first-week day local weekday -- which local weekday is fwd + fwdlw = (7 + createUTCDate(year, 0, fwd).getUTCDay() - dow) % 7; + + return -fwdlw + fwd - 1; +} + +// https://en.wikipedia.org/wiki/ISO_week_date#Calculating_a_date_given_the_year.2C_week_number_and_weekday +function dayOfYearFromWeeks(year, week, weekday, dow, doy) { + var localWeekday = (7 + weekday - dow) % 7, + weekOffset = firstWeekOffset(year, dow, doy), + dayOfYear = 1 + 7 * (week - 1) + localWeekday + weekOffset, + resYear, resDayOfYear; + + if (dayOfYear <= 0) { + resYear = year - 1; + resDayOfYear = daysInYear(resYear) + dayOfYear; + } else if (dayOfYear > daysInYear(year)) { + resYear = year + 1; + resDayOfYear = dayOfYear - daysInYear(year); + } else { + resYear = year; + resDayOfYear = dayOfYear; + } + + return { + year: resYear, + dayOfYear: resDayOfYear + }; +} + +function weekOfYear(mom, dow, doy) { + var weekOffset = firstWeekOffset(mom.year(), dow, doy), + week = Math.floor((mom.dayOfYear() - weekOffset - 1) / 7) + 1, + resWeek, resYear; + + if (week < 1) { + resYear = mom.year() - 1; + resWeek = week + weeksInYear(resYear, dow, doy); + } else if (week > weeksInYear(mom.year(), dow, doy)) { + resWeek = week - weeksInYear(mom.year(), dow, doy); + resYear = mom.year() + 1; + } else { + resYear = mom.year(); + resWeek = week; + } + + return { + week: resWeek, + year: resYear + }; +} + +function weeksInYear(year, dow, doy) { + var weekOffset = firstWeekOffset(year, dow, doy), + weekOffsetNext = firstWeekOffset(year + 1, dow, doy); + return (daysInYear(year) - weekOffset + weekOffsetNext) / 7; +} + +// FORMATTING + +addFormatToken('w', ['ww', 2], 'wo', 'week'); +addFormatToken('W', ['WW', 2], 'Wo', 'isoWeek'); + +// ALIASES + +addUnitAlias('week', 'w'); +addUnitAlias('isoWeek', 'W'); + +// PRIORITIES + +addUnitPriority('week', 5); +addUnitPriority('isoWeek', 5); + +// PARSING + +addRegexToken('w', match1to2); +addRegexToken('ww', match1to2, match2); +addRegexToken('W', match1to2); +addRegexToken('WW', match1to2, match2); + +addWeekParseToken(['w', 'ww', 'W', 'WW'], function (input, week, config, token) { + week[token.substr(0, 1)] = toInt(input); +}); + +// HELPERS + +// LOCALES + +function localeWeek (mom) { + return weekOfYear(mom, this._week.dow, this._week.doy).week; +} + +var defaultLocaleWeek = { + dow : 0, // Sunday is the first day of the week. + doy : 6 // The week that contains Jan 1st is the first week of the year. +}; + +function localeFirstDayOfWeek () { + return this._week.dow; +} + +function localeFirstDayOfYear () { + return this._week.doy; +} + +// MOMENTS + +function getSetWeek (input) { + var week = this.localeData().week(this); + return input == null ? week : this.add((input - week) * 7, 'd'); +} + +function getSetISOWeek (input) { + var week = weekOfYear(this, 1, 4).week; + return input == null ? week : this.add((input - week) * 7, 'd'); +} + +// FORMATTING + +addFormatToken('d', 0, 'do', 'day'); + +addFormatToken('dd', 0, 0, function (format) { + return this.localeData().weekdaysMin(this, format); +}); + +addFormatToken('ddd', 0, 0, function (format) { + return this.localeData().weekdaysShort(this, format); +}); + +addFormatToken('dddd', 0, 0, function (format) { + return this.localeData().weekdays(this, format); +}); + +addFormatToken('e', 0, 0, 'weekday'); +addFormatToken('E', 0, 0, 'isoWeekday'); + +// ALIASES + +addUnitAlias('day', 'd'); +addUnitAlias('weekday', 'e'); +addUnitAlias('isoWeekday', 'E'); + +// PRIORITY +addUnitPriority('day', 11); +addUnitPriority('weekday', 11); +addUnitPriority('isoWeekday', 11); + +// PARSING + +addRegexToken('d', match1to2); +addRegexToken('e', match1to2); +addRegexToken('E', match1to2); +addRegexToken('dd', function (isStrict, locale) { + return locale.weekdaysMinRegex(isStrict); +}); +addRegexToken('ddd', function (isStrict, locale) { + return locale.weekdaysShortRegex(isStrict); +}); +addRegexToken('dddd', function (isStrict, locale) { + return locale.weekdaysRegex(isStrict); +}); + +addWeekParseToken(['dd', 'ddd', 'dddd'], function (input, week, config, token) { + var weekday = config._locale.weekdaysParse(input, token, config._strict); + // if we didn't get a weekday name, mark the date as invalid + if (weekday != null) { + week.d = weekday; + } else { + getParsingFlags(config).invalidWeekday = input; + } +}); + +addWeekParseToken(['d', 'e', 'E'], function (input, week, config, token) { + week[token] = toInt(input); +}); + +// HELPERS + +function parseWeekday(input, locale) { + if (typeof input !== 'string') { + return input; + } + + if (!isNaN(input)) { + return parseInt(input, 10); + } + + input = locale.weekdaysParse(input); + if (typeof input === 'number') { + return input; + } + + return null; +} + +function parseIsoWeekday(input, locale) { + if (typeof input === 'string') { + return locale.weekdaysParse(input) % 7 || 7; + } + return isNaN(input) ? null : input; +} + +// LOCALES + +var defaultLocaleWeekdays = 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split('_'); +function localeWeekdays (m, format) { + if (!m) { + return isArray(this._weekdays) ? this._weekdays : + this._weekdays['standalone']; + } + return isArray(this._weekdays) ? this._weekdays[m.day()] : + this._weekdays[this._weekdays.isFormat.test(format) ? 'format' : 'standalone'][m.day()]; +} + +var defaultLocaleWeekdaysShort = 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'); +function localeWeekdaysShort (m) { + return (m) ? this._weekdaysShort[m.day()] : this._weekdaysShort; +} + +var defaultLocaleWeekdaysMin = 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'); +function localeWeekdaysMin (m) { + return (m) ? this._weekdaysMin[m.day()] : this._weekdaysMin; +} + +function handleStrictParse$1(weekdayName, format, strict) { + var i, ii, mom, llc = weekdayName.toLocaleLowerCase(); + if (!this._weekdaysParse) { + this._weekdaysParse = []; + this._shortWeekdaysParse = []; + this._minWeekdaysParse = []; + + for (i = 0; i < 7; ++i) { + mom = createUTC([2000, 1]).day(i); + this._minWeekdaysParse[i] = this.weekdaysMin(mom, '').toLocaleLowerCase(); + this._shortWeekdaysParse[i] = this.weekdaysShort(mom, '').toLocaleLowerCase(); + this._weekdaysParse[i] = this.weekdays(mom, '').toLocaleLowerCase(); + } + } + + if (strict) { + if (format === 'dddd') { + ii = indexOf$1.call(this._weekdaysParse, llc); + return ii !== -1 ? ii : null; + } else if (format === 'ddd') { + ii = indexOf$1.call(this._shortWeekdaysParse, llc); + return ii !== -1 ? ii : null; + } else { + ii = indexOf$1.call(this._minWeekdaysParse, llc); + return ii !== -1 ? ii : null; + } + } else { + if (format === 'dddd') { + ii = indexOf$1.call(this._weekdaysParse, llc); + if (ii !== -1) { + return ii; + } + ii = indexOf$1.call(this._shortWeekdaysParse, llc); + if (ii !== -1) { + return ii; + } + ii = indexOf$1.call(this._minWeekdaysParse, llc); + return ii !== -1 ? ii : null; + } else if (format === 'ddd') { + ii = indexOf$1.call(this._shortWeekdaysParse, llc); + if (ii !== -1) { + return ii; + } + ii = indexOf$1.call(this._weekdaysParse, llc); + if (ii !== -1) { + return ii; + } + ii = indexOf$1.call(this._minWeekdaysParse, llc); + return ii !== -1 ? ii : null; + } else { + ii = indexOf$1.call(this._minWeekdaysParse, llc); + if (ii !== -1) { + return ii; + } + ii = indexOf$1.call(this._weekdaysParse, llc); + if (ii !== -1) { + return ii; + } + ii = indexOf$1.call(this._shortWeekdaysParse, llc); + return ii !== -1 ? ii : null; + } + } +} + +function localeWeekdaysParse (weekdayName, format, strict) { + var i, mom, regex; + + if (this._weekdaysParseExact) { + return handleStrictParse$1.call(this, weekdayName, format, strict); + } + + if (!this._weekdaysParse) { + this._weekdaysParse = []; + this._minWeekdaysParse = []; + this._shortWeekdaysParse = []; + this._fullWeekdaysParse = []; + } + + for (i = 0; i < 7; i++) { + // make the regex if we don't have it already + + mom = createUTC([2000, 1]).day(i); + if (strict && !this._fullWeekdaysParse[i]) { + this._fullWeekdaysParse[i] = new RegExp('^' + this.weekdays(mom, '').replace('.', '\.?') + '$', 'i'); + this._shortWeekdaysParse[i] = new RegExp('^' + this.weekdaysShort(mom, '').replace('.', '\.?') + '$', 'i'); + this._minWeekdaysParse[i] = new RegExp('^' + this.weekdaysMin(mom, '').replace('.', '\.?') + '$', 'i'); + } + if (!this._weekdaysParse[i]) { + regex = '^' + this.weekdays(mom, '') + '|^' + this.weekdaysShort(mom, '') + '|^' + this.weekdaysMin(mom, ''); + this._weekdaysParse[i] = new RegExp(regex.replace('.', ''), 'i'); + } + // test the regex + if (strict && format === 'dddd' && this._fullWeekdaysParse[i].test(weekdayName)) { + return i; + } else if (strict && format === 'ddd' && this._shortWeekdaysParse[i].test(weekdayName)) { + return i; + } else if (strict && format === 'dd' && this._minWeekdaysParse[i].test(weekdayName)) { + return i; + } else if (!strict && this._weekdaysParse[i].test(weekdayName)) { + return i; + } + } +} + +// MOMENTS + +function getSetDayOfWeek (input) { + if (!this.isValid()) { + return input != null ? this : NaN; + } + var day = this._isUTC ? this._d.getUTCDay() : this._d.getDay(); + if (input != null) { + input = parseWeekday(input, this.localeData()); + return this.add(input - day, 'd'); + } else { + return day; + } +} + +function getSetLocaleDayOfWeek (input) { + if (!this.isValid()) { + return input != null ? this : NaN; + } + var weekday = (this.day() + 7 - this.localeData()._week.dow) % 7; + return input == null ? weekday : this.add(input - weekday, 'd'); +} + +function getSetISODayOfWeek (input) { + if (!this.isValid()) { + return input != null ? this : NaN; + } + + // behaves the same as moment#day except + // as a getter, returns 7 instead of 0 (1-7 range instead of 0-6) + // as a setter, sunday should belong to the previous week. + + if (input != null) { + var weekday = parseIsoWeekday(input, this.localeData()); + return this.day(this.day() % 7 ? weekday : weekday - 7); + } else { + return this.day() || 7; + } +} + +var defaultWeekdaysRegex = matchWord; +function weekdaysRegex (isStrict) { + if (this._weekdaysParseExact) { + if (!hasOwnProp(this, '_weekdaysRegex')) { + computeWeekdaysParse.call(this); + } + if (isStrict) { + return this._weekdaysStrictRegex; + } else { + return this._weekdaysRegex; + } + } else { + if (!hasOwnProp(this, '_weekdaysRegex')) { + this._weekdaysRegex = defaultWeekdaysRegex; + } + return this._weekdaysStrictRegex && isStrict ? + this._weekdaysStrictRegex : this._weekdaysRegex; + } +} + +var defaultWeekdaysShortRegex = matchWord; +function weekdaysShortRegex (isStrict) { + if (this._weekdaysParseExact) { + if (!hasOwnProp(this, '_weekdaysRegex')) { + computeWeekdaysParse.call(this); + } + if (isStrict) { + return this._weekdaysShortStrictRegex; + } else { + return this._weekdaysShortRegex; + } + } else { + if (!hasOwnProp(this, '_weekdaysShortRegex')) { + this._weekdaysShortRegex = defaultWeekdaysShortRegex; + } + return this._weekdaysShortStrictRegex && isStrict ? + this._weekdaysShortStrictRegex : this._weekdaysShortRegex; + } +} + +var defaultWeekdaysMinRegex = matchWord; +function weekdaysMinRegex (isStrict) { + if (this._weekdaysParseExact) { + if (!hasOwnProp(this, '_weekdaysRegex')) { + computeWeekdaysParse.call(this); + } + if (isStrict) { + return this._weekdaysMinStrictRegex; + } else { + return this._weekdaysMinRegex; + } + } else { + if (!hasOwnProp(this, '_weekdaysMinRegex')) { + this._weekdaysMinRegex = defaultWeekdaysMinRegex; + } + return this._weekdaysMinStrictRegex && isStrict ? + this._weekdaysMinStrictRegex : this._weekdaysMinRegex; + } +} + + +function computeWeekdaysParse () { + function cmpLenRev(a, b) { + return b.length - a.length; + } + + var minPieces = [], shortPieces = [], longPieces = [], mixedPieces = [], + i, mom, minp, shortp, longp; + for (i = 0; i < 7; i++) { + // make the regex if we don't have it already + mom = createUTC([2000, 1]).day(i); + minp = this.weekdaysMin(mom, ''); + shortp = this.weekdaysShort(mom, ''); + longp = this.weekdays(mom, ''); + minPieces.push(minp); + shortPieces.push(shortp); + longPieces.push(longp); + mixedPieces.push(minp); + mixedPieces.push(shortp); + mixedPieces.push(longp); + } + // Sorting makes sure if one weekday (or abbr) is a prefix of another it + // will match the longer piece. + minPieces.sort(cmpLenRev); + shortPieces.sort(cmpLenRev); + longPieces.sort(cmpLenRev); + mixedPieces.sort(cmpLenRev); + for (i = 0; i < 7; i++) { + shortPieces[i] = regexEscape(shortPieces[i]); + longPieces[i] = regexEscape(longPieces[i]); + mixedPieces[i] = regexEscape(mixedPieces[i]); + } + + this._weekdaysRegex = new RegExp('^(' + mixedPieces.join('|') + ')', 'i'); + this._weekdaysShortRegex = this._weekdaysRegex; + this._weekdaysMinRegex = this._weekdaysRegex; + + this._weekdaysStrictRegex = new RegExp('^(' + longPieces.join('|') + ')', 'i'); + this._weekdaysShortStrictRegex = new RegExp('^(' + shortPieces.join('|') + ')', 'i'); + this._weekdaysMinStrictRegex = new RegExp('^(' + minPieces.join('|') + ')', 'i'); +} + +// FORMATTING + +function hFormat() { + return this.hours() % 12 || 12; +} + +function kFormat() { + return this.hours() || 24; +} + +addFormatToken('H', ['HH', 2], 0, 'hour'); +addFormatToken('h', ['hh', 2], 0, hFormat); +addFormatToken('k', ['kk', 2], 0, kFormat); + +addFormatToken('hmm', 0, 0, function () { + return '' + hFormat.apply(this) + zeroFill(this.minutes(), 2); +}); + +addFormatToken('hmmss', 0, 0, function () { + return '' + hFormat.apply(this) + zeroFill(this.minutes(), 2) + + zeroFill(this.seconds(), 2); +}); + +addFormatToken('Hmm', 0, 0, function () { + return '' + this.hours() + zeroFill(this.minutes(), 2); +}); + +addFormatToken('Hmmss', 0, 0, function () { + return '' + this.hours() + zeroFill(this.minutes(), 2) + + zeroFill(this.seconds(), 2); +}); + +function meridiem (token, lowercase) { + addFormatToken(token, 0, 0, function () { + return this.localeData().meridiem(this.hours(), this.minutes(), lowercase); + }); +} + +meridiem('a', true); +meridiem('A', false); + +// ALIASES + +addUnitAlias('hour', 'h'); + +// PRIORITY +addUnitPriority('hour', 13); + +// PARSING + +function matchMeridiem (isStrict, locale) { + return locale._meridiemParse; +} + +addRegexToken('a', matchMeridiem); +addRegexToken('A', matchMeridiem); +addRegexToken('H', match1to2); +addRegexToken('h', match1to2); +addRegexToken('k', match1to2); +addRegexToken('HH', match1to2, match2); +addRegexToken('hh', match1to2, match2); +addRegexToken('kk', match1to2, match2); + +addRegexToken('hmm', match3to4); +addRegexToken('hmmss', match5to6); +addRegexToken('Hmm', match3to4); +addRegexToken('Hmmss', match5to6); + +addParseToken(['H', 'HH'], HOUR); +addParseToken(['k', 'kk'], function (input, array, config) { + var kInput = toInt(input); + array[HOUR] = kInput === 24 ? 0 : kInput; +}); +addParseToken(['a', 'A'], function (input, array, config) { + config._isPm = config._locale.isPM(input); + config._meridiem = input; +}); +addParseToken(['h', 'hh'], function (input, array, config) { + array[HOUR] = toInt(input); + getParsingFlags(config).bigHour = true; +}); +addParseToken('hmm', function (input, array, config) { + var pos = input.length - 2; + array[HOUR] = toInt(input.substr(0, pos)); + array[MINUTE] = toInt(input.substr(pos)); + getParsingFlags(config).bigHour = true; +}); +addParseToken('hmmss', function (input, array, config) { + var pos1 = input.length - 4; + var pos2 = input.length - 2; + array[HOUR] = toInt(input.substr(0, pos1)); + array[MINUTE] = toInt(input.substr(pos1, 2)); + array[SECOND] = toInt(input.substr(pos2)); + getParsingFlags(config).bigHour = true; +}); +addParseToken('Hmm', function (input, array, config) { + var pos = input.length - 2; + array[HOUR] = toInt(input.substr(0, pos)); + array[MINUTE] = toInt(input.substr(pos)); +}); +addParseToken('Hmmss', function (input, array, config) { + var pos1 = input.length - 4; + var pos2 = input.length - 2; + array[HOUR] = toInt(input.substr(0, pos1)); + array[MINUTE] = toInt(input.substr(pos1, 2)); + array[SECOND] = toInt(input.substr(pos2)); +}); + +// LOCALES + +function localeIsPM (input) { + // IE8 Quirks Mode & IE7 Standards Mode do not allow accessing strings like arrays + // Using charAt should be more compatible. + return ((input + '').toLowerCase().charAt(0) === 'p'); +} + +var defaultLocaleMeridiemParse = /[ap]\.?m?\.?/i; +function localeMeridiem (hours, minutes, isLower) { + if (hours > 11) { + return isLower ? 'pm' : 'PM'; + } else { + return isLower ? 'am' : 'AM'; + } +} + + +// MOMENTS + +// Setting the hour should keep the time, because the user explicitly +// specified which hour he wants. So trying to maintain the same hour (in +// a new timezone) makes sense. Adding/subtracting hours does not follow +// this rule. +var getSetHour = makeGetSet('Hours', true); + +// months +// week +// weekdays +// meridiem +var baseConfig = { + calendar: defaultCalendar, + longDateFormat: defaultLongDateFormat, + invalidDate: defaultInvalidDate, + ordinal: defaultOrdinal, + dayOfMonthOrdinalParse: defaultDayOfMonthOrdinalParse, + relativeTime: defaultRelativeTime, + + months: defaultLocaleMonths, + monthsShort: defaultLocaleMonthsShort, + + week: defaultLocaleWeek, + + weekdays: defaultLocaleWeekdays, + weekdaysMin: defaultLocaleWeekdaysMin, + weekdaysShort: defaultLocaleWeekdaysShort, + + meridiemParse: defaultLocaleMeridiemParse +}; + +// internal storage for locale config files +var locales = {}; +var localeFamilies = {}; +var globalLocale; + +function normalizeLocale(key) { + return key ? key.toLowerCase().replace('_', '-') : key; +} + +// pick the locale from the array +// try ['en-au', 'en-gb'] as 'en-au', 'en-gb', 'en', as in move through the list trying each +// substring from most specific to least, but move to the next array item if it's a more specific variant than the current root +function chooseLocale(names) { + var i = 0, j, next, locale, split; + + while (i < names.length) { + split = normalizeLocale(names[i]).split('-'); + j = split.length; + next = normalizeLocale(names[i + 1]); + next = next ? next.split('-') : null; + while (j > 0) { + locale = loadLocale(split.slice(0, j).join('-')); + if (locale) { + return locale; + } + if (next && next.length >= j && compareArrays(split, next, true) >= j - 1) { + //the next array item is better than a shallower substring of this one + break; + } + j--; + } + i++; + } + return null; +} + +function loadLocale(name) { + var oldLocale = null; + // TODO: Find a better way to register and load all the locales in Node + if (!locales[name] && (typeof module !== 'undefined') && + module && module.exports) { + try { + oldLocale = globalLocale._abbr; + require('./locale/' + name); + // because defineLocale currently also sets the global locale, we + // want to undo that for lazy loaded locales + getSetGlobalLocale(oldLocale); + } catch (e) { } + } + return locales[name]; +} + +// This function will load locale and then set the global locale. If +// no arguments are passed in, it will simply return the current global +// locale key. +function getSetGlobalLocale (key, values) { + var data; + if (key) { + if (isUndefined(values)) { + data = getLocale(key); + } + else { + data = defineLocale(key, values); + } + + if (data) { + // moment.duration._locale = moment._locale = data; + globalLocale = data; + } + } + + return globalLocale._abbr; +} + +function defineLocale (name, config) { + if (config !== null) { + var parentConfig = baseConfig; + config.abbr = name; + if (locales[name] != null) { + deprecateSimple('defineLocaleOverride', + 'use moment.updateLocale(localeName, config) to change ' + + 'an existing locale. moment.defineLocale(localeName, ' + + 'config) should only be used for creating a new locale ' + + 'See http://momentjs.com/guides/#/warnings/define-locale/ for more info.'); + parentConfig = locales[name]._config; + } else if (config.parentLocale != null) { + if (locales[config.parentLocale] != null) { + parentConfig = locales[config.parentLocale]._config; + } else { + if (!localeFamilies[config.parentLocale]) { + localeFamilies[config.parentLocale] = []; + } + localeFamilies[config.parentLocale].push({ + name: name, + config: config + }); + return null; + } + } + locales[name] = new Locale(mergeConfigs(parentConfig, config)); + + if (localeFamilies[name]) { + localeFamilies[name].forEach(function (x) { + defineLocale(x.name, x.config); + }); + } + + // backwards compat for now: also set the locale + // make sure we set the locale AFTER all child locales have been + // created, so we won't end up with the child locale set. + getSetGlobalLocale(name); + + + return locales[name]; + } else { + // useful for testing + delete locales[name]; + return null; + } +} + +function updateLocale(name, config) { + if (config != null) { + var locale, parentConfig = baseConfig; + // MERGE + if (locales[name] != null) { + parentConfig = locales[name]._config; + } + config = mergeConfigs(parentConfig, config); + locale = new Locale(config); + locale.parentLocale = locales[name]; + locales[name] = locale; + + // backwards compat for now: also set the locale + getSetGlobalLocale(name); + } else { + // pass null for config to unupdate, useful for tests + if (locales[name] != null) { + if (locales[name].parentLocale != null) { + locales[name] = locales[name].parentLocale; + } else if (locales[name] != null) { + delete locales[name]; + } + } + } + return locales[name]; +} + +// returns locale data +function getLocale (key) { + var locale; + + if (key && key._locale && key._locale._abbr) { + key = key._locale._abbr; + } + + if (!key) { + return globalLocale; + } + + if (!isArray(key)) { + //short-circuit everything else + locale = loadLocale(key); + if (locale) { + return locale; + } + key = [key]; + } + + return chooseLocale(key); +} + +function listLocales() { + return keys$1(locales); +} + +function checkOverflow (m) { + var overflow; + var a = m._a; + + if (a && getParsingFlags(m).overflow === -2) { + overflow = + a[MONTH] < 0 || a[MONTH] > 11 ? MONTH : + a[DATE] < 1 || a[DATE] > daysInMonth(a[YEAR], a[MONTH]) ? DATE : + a[HOUR] < 0 || a[HOUR] > 24 || (a[HOUR] === 24 && (a[MINUTE] !== 0 || a[SECOND] !== 0 || a[MILLISECOND] !== 0)) ? HOUR : + a[MINUTE] < 0 || a[MINUTE] > 59 ? MINUTE : + a[SECOND] < 0 || a[SECOND] > 59 ? SECOND : + a[MILLISECOND] < 0 || a[MILLISECOND] > 999 ? MILLISECOND : + -1; + + if (getParsingFlags(m)._overflowDayOfYear && (overflow < YEAR || overflow > DATE)) { + overflow = DATE; + } + if (getParsingFlags(m)._overflowWeeks && overflow === -1) { + overflow = WEEK; + } + if (getParsingFlags(m)._overflowWeekday && overflow === -1) { + overflow = WEEKDAY; + } + + getParsingFlags(m).overflow = overflow; + } + + return m; +} + +// iso 8601 regex +// 0000-00-00 0000-W00 or 0000-W00-0 + T + 00 or 00:00 or 00:00:00 or 00:00:00.000 + +00:00 or +0000 or +00) +var extendedIsoRegex = /^\s*((?:[+-]\d{6}|\d{4})-(?:\d\d-\d\d|W\d\d-\d|W\d\d|\d\d\d|\d\d))(?:(T| )(\d\d(?::\d\d(?::\d\d(?:[.,]\d+)?)?)?)([\+\-]\d\d(?::?\d\d)?|\s*Z)?)?$/; +var basicIsoRegex = /^\s*((?:[+-]\d{6}|\d{4})(?:\d\d\d\d|W\d\d\d|W\d\d|\d\d\d|\d\d))(?:(T| )(\d\d(?:\d\d(?:\d\d(?:[.,]\d+)?)?)?)([\+\-]\d\d(?::?\d\d)?|\s*Z)?)?$/; + +var tzRegex = /Z|[+-]\d\d(?::?\d\d)?/; + +var isoDates = [ + ['YYYYYY-MM-DD', /[+-]\d{6}-\d\d-\d\d/], + ['YYYY-MM-DD', /\d{4}-\d\d-\d\d/], + ['GGGG-[W]WW-E', /\d{4}-W\d\d-\d/], + ['GGGG-[W]WW', /\d{4}-W\d\d/, false], + ['YYYY-DDD', /\d{4}-\d{3}/], + ['YYYY-MM', /\d{4}-\d\d/, false], + ['YYYYYYMMDD', /[+-]\d{10}/], + ['YYYYMMDD', /\d{8}/], + // YYYYMM is NOT allowed by the standard + ['GGGG[W]WWE', /\d{4}W\d{3}/], + ['GGGG[W]WW', /\d{4}W\d{2}/, false], + ['YYYYDDD', /\d{7}/] +]; + +// iso time formats and regexes +var isoTimes = [ + ['HH:mm:ss.SSSS', /\d\d:\d\d:\d\d\.\d+/], + ['HH:mm:ss,SSSS', /\d\d:\d\d:\d\d,\d+/], + ['HH:mm:ss', /\d\d:\d\d:\d\d/], + ['HH:mm', /\d\d:\d\d/], + ['HHmmss.SSSS', /\d\d\d\d\d\d\.\d+/], + ['HHmmss,SSSS', /\d\d\d\d\d\d,\d+/], + ['HHmmss', /\d\d\d\d\d\d/], + ['HHmm', /\d\d\d\d/], + ['HH', /\d\d/] +]; + +var aspNetJsonRegex = /^\/?Date\((\-?\d+)/i; + +// date from iso format +function configFromISO(config) { + var i, l, + string = config._i, + match = extendedIsoRegex.exec(string) || basicIsoRegex.exec(string), + allowTime, dateFormat, timeFormat, tzFormat; + + if (match) { + getParsingFlags(config).iso = true; + + for (i = 0, l = isoDates.length; i < l; i++) { + if (isoDates[i][1].exec(match[1])) { + dateFormat = isoDates[i][0]; + allowTime = isoDates[i][2] !== false; + break; + } + } + if (dateFormat == null) { + config._isValid = false; + return; + } + if (match[3]) { + for (i = 0, l = isoTimes.length; i < l; i++) { + if (isoTimes[i][1].exec(match[3])) { + // match[2] should be 'T' or space + timeFormat = (match[2] || ' ') + isoTimes[i][0]; + break; + } + } + if (timeFormat == null) { + config._isValid = false; + return; + } + } + if (!allowTime && timeFormat != null) { + config._isValid = false; + return; + } + if (match[4]) { + if (tzRegex.exec(match[4])) { + tzFormat = 'Z'; + } else { + config._isValid = false; + return; + } + } + config._f = dateFormat + (timeFormat || '') + (tzFormat || ''); + configFromStringAndFormat(config); + } else { + config._isValid = false; + } +} + +// RFC 2822 regex: For details see https://tools.ietf.org/html/rfc2822#section-3.3 +var basicRfcRegex = /^((?:Mon|Tue|Wed|Thu|Fri|Sat|Sun),?\s)?(\d?\d\s(?:Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)\s(?:\d\d)?\d\d\s)(\d\d:\d\d)(\:\d\d)?(\s(?:UT|GMT|[ECMP][SD]T|[A-IK-Za-ik-z]|[+-]\d{4}))$/; + +// date and time from ref 2822 format +function configFromRFC2822(config) { + var string, match, dayFormat, + dateFormat, timeFormat, tzFormat; + var timezones = { + ' GMT': ' +0000', + ' EDT': ' -0400', + ' EST': ' -0500', + ' CDT': ' -0500', + ' CST': ' -0600', + ' MDT': ' -0600', + ' MST': ' -0700', + ' PDT': ' -0700', + ' PST': ' -0800' + }; + var military = 'YXWVUTSRQPONZABCDEFGHIKLM'; + var timezone, timezoneIndex; + + string = config._i + .replace(/\([^\)]*\)|[\n\t]/g, ' ') // Remove comments and folding whitespace + .replace(/(\s\s+)/g, ' ') // Replace multiple-spaces with a single space + .replace(/^\s|\s$/g, ''); // Remove leading and trailing spaces + match = basicRfcRegex.exec(string); + + if (match) { + dayFormat = match[1] ? 'ddd' + ((match[1].length === 5) ? ', ' : ' ') : ''; + dateFormat = 'D MMM ' + ((match[2].length > 10) ? 'YYYY ' : 'YY '); + timeFormat = 'HH:mm' + (match[4] ? ':ss' : ''); + + // TODO: Replace the vanilla JS Date object with an indepentent day-of-week check. + if (match[1]) { // day of week given + var momentDate = new Date(match[2]); + var momentDay = ['Sun','Mon','Tue','Wed','Thu','Fri','Sat'][momentDate.getDay()]; + + if (match[1].substr(0,3) !== momentDay) { + getParsingFlags(config).weekdayMismatch = true; + config._isValid = false; + return; + } + } + + switch (match[5].length) { + case 2: // military + if (timezoneIndex === 0) { + timezone = ' +0000'; + } else { + timezoneIndex = military.indexOf(match[5][1].toUpperCase()) - 12; + timezone = ((timezoneIndex < 0) ? ' -' : ' +') + + (('' + timezoneIndex).replace(/^-?/, '0')).match(/..$/)[0] + '00'; + } + break; + case 4: // Zone + timezone = timezones[match[5]]; + break; + default: // UT or +/-9999 + timezone = timezones[' GMT']; + } + match[5] = timezone; + config._i = match.splice(1).join(''); + tzFormat = ' ZZ'; + config._f = dayFormat + dateFormat + timeFormat + tzFormat; + configFromStringAndFormat(config); + getParsingFlags(config).rfc2822 = true; + } else { + config._isValid = false; + } +} + +// date from iso format or fallback +function configFromString(config) { + var matched = aspNetJsonRegex.exec(config._i); + + if (matched !== null) { + config._d = new Date(+matched[1]); + return; + } + + configFromISO(config); + if (config._isValid === false) { + delete config._isValid; + } else { + return; + } + + configFromRFC2822(config); + if (config._isValid === false) { + delete config._isValid; + } else { + return; + } + + // Final attempt, use Input Fallback + hooks.createFromInputFallback(config); +} + +hooks.createFromInputFallback = deprecate( + 'value provided is not in a recognized RFC2822 or ISO format. moment construction falls back to js Date(), ' + + 'which is not reliable across all browsers and versions. Non RFC2822/ISO date formats are ' + + 'discouraged and will be removed in an upcoming major release. Please refer to ' + + 'http://momentjs.com/guides/#/warnings/js-date/ for more info.', + function (config) { + config._d = new Date(config._i + (config._useUTC ? ' UTC' : '')); + } +); + +// Pick the first defined of two or three arguments. +function defaults(a, b, c) { + if (a != null) { + return a; + } + if (b != null) { + return b; + } + return c; +} + +function currentDateArray(config) { + // hooks is actually the exported moment object + var nowValue = new Date(hooks.now()); + if (config._useUTC) { + return [nowValue.getUTCFullYear(), nowValue.getUTCMonth(), nowValue.getUTCDate()]; + } + return [nowValue.getFullYear(), nowValue.getMonth(), nowValue.getDate()]; +} + +// convert an array to a date. +// the array should mirror the parameters below +// note: all values past the year are optional and will default to the lowest possible value. +// [year, month, day , hour, minute, second, millisecond] +function configFromArray (config) { + var i, date, input = [], currentDate, yearToUse; + + if (config._d) { + return; + } + + currentDate = currentDateArray(config); + + //compute day of the year from weeks and weekdays + if (config._w && config._a[DATE] == null && config._a[MONTH] == null) { + dayOfYearFromWeekInfo(config); + } + + //if the day of the year is set, figure out what it is + if (config._dayOfYear != null) { + yearToUse = defaults(config._a[YEAR], currentDate[YEAR]); + + if (config._dayOfYear > daysInYear(yearToUse) || config._dayOfYear === 0) { + getParsingFlags(config)._overflowDayOfYear = true; + } + + date = createUTCDate(yearToUse, 0, config._dayOfYear); + config._a[MONTH] = date.getUTCMonth(); + config._a[DATE] = date.getUTCDate(); + } + + // Default to current date. + // * if no year, month, day of month are given, default to today + // * if day of month is given, default month and year + // * if month is given, default only year + // * if year is given, don't default anything + for (i = 0; i < 3 && config._a[i] == null; ++i) { + config._a[i] = input[i] = currentDate[i]; + } + + // Zero out whatever was not defaulted, including time + for (; i < 7; i++) { + config._a[i] = input[i] = (config._a[i] == null) ? (i === 2 ? 1 : 0) : config._a[i]; + } + + // Check for 24:00:00.000 + if (config._a[HOUR] === 24 && + config._a[MINUTE] === 0 && + config._a[SECOND] === 0 && + config._a[MILLISECOND] === 0) { + config._nextDay = true; + config._a[HOUR] = 0; + } + + config._d = (config._useUTC ? createUTCDate : createDate).apply(null, input); + // Apply timezone offset from input. The actual utcOffset can be changed + // with parseZone. + if (config._tzm != null) { + config._d.setUTCMinutes(config._d.getUTCMinutes() - config._tzm); + } + + if (config._nextDay) { + config._a[HOUR] = 24; + } +} + +function dayOfYearFromWeekInfo(config) { + var w, weekYear, week, weekday, dow, doy, temp, weekdayOverflow; + + w = config._w; + if (w.GG != null || w.W != null || w.E != null) { + dow = 1; + doy = 4; + + // TODO: We need to take the current isoWeekYear, but that depends on + // how we interpret now (local, utc, fixed offset). So create + // a now version of current config (take local/utc/offset flags, and + // create now). + weekYear = defaults(w.GG, config._a[YEAR], weekOfYear(createLocal(), 1, 4).year); + week = defaults(w.W, 1); + weekday = defaults(w.E, 1); + if (weekday < 1 || weekday > 7) { + weekdayOverflow = true; + } + } else { + dow = config._locale._week.dow; + doy = config._locale._week.doy; + + var curWeek = weekOfYear(createLocal(), dow, doy); + + weekYear = defaults(w.gg, config._a[YEAR], curWeek.year); + + // Default to current week. + week = defaults(w.w, curWeek.week); + + if (w.d != null) { + // weekday -- low day numbers are considered next week + weekday = w.d; + if (weekday < 0 || weekday > 6) { + weekdayOverflow = true; + } + } else if (w.e != null) { + // local weekday -- counting starts from begining of week + weekday = w.e + dow; + if (w.e < 0 || w.e > 6) { + weekdayOverflow = true; + } + } else { + // default to begining of week + weekday = dow; + } + } + if (week < 1 || week > weeksInYear(weekYear, dow, doy)) { + getParsingFlags(config)._overflowWeeks = true; + } else if (weekdayOverflow != null) { + getParsingFlags(config)._overflowWeekday = true; + } else { + temp = dayOfYearFromWeeks(weekYear, week, weekday, dow, doy); + config._a[YEAR] = temp.year; + config._dayOfYear = temp.dayOfYear; + } +} + +// constant that refers to the ISO standard +hooks.ISO_8601 = function () {}; + +// constant that refers to the RFC 2822 form +hooks.RFC_2822 = function () {}; + +// date from string and format string +function configFromStringAndFormat(config) { + // TODO: Move this to another part of the creation flow to prevent circular deps + if (config._f === hooks.ISO_8601) { + configFromISO(config); + return; + } + if (config._f === hooks.RFC_2822) { + configFromRFC2822(config); + return; + } + config._a = []; + getParsingFlags(config).empty = true; + + // This array is used to make a Date, either with `new Date` or `Date.UTC` + var string = '' + config._i, + i, parsedInput, tokens, token, skipped, + stringLength = string.length, + totalParsedInputLength = 0; + + tokens = expandFormat(config._f, config._locale).match(formattingTokens) || []; + + for (i = 0; i < tokens.length; i++) { + token = tokens[i]; + parsedInput = (string.match(getParseRegexForToken(token, config)) || [])[0]; + // console.log('token', token, 'parsedInput', parsedInput, + // 'regex', getParseRegexForToken(token, config)); + if (parsedInput) { + skipped = string.substr(0, string.indexOf(parsedInput)); + if (skipped.length > 0) { + getParsingFlags(config).unusedInput.push(skipped); + } + string = string.slice(string.indexOf(parsedInput) + parsedInput.length); + totalParsedInputLength += parsedInput.length; + } + // don't parse if it's not a known token + if (formatTokenFunctions[token]) { + if (parsedInput) { + getParsingFlags(config).empty = false; + } + else { + getParsingFlags(config).unusedTokens.push(token); + } + addTimeToArrayFromToken(token, parsedInput, config); + } + else if (config._strict && !parsedInput) { + getParsingFlags(config).unusedTokens.push(token); + } + } + + // add remaining unparsed input length to the string + getParsingFlags(config).charsLeftOver = stringLength - totalParsedInputLength; + if (string.length > 0) { + getParsingFlags(config).unusedInput.push(string); + } + + // clear _12h flag if hour is <= 12 + if (config._a[HOUR] <= 12 && + getParsingFlags(config).bigHour === true && + config._a[HOUR] > 0) { + getParsingFlags(config).bigHour = undefined; + } + + getParsingFlags(config).parsedDateParts = config._a.slice(0); + getParsingFlags(config).meridiem = config._meridiem; + // handle meridiem + config._a[HOUR] = meridiemFixWrap(config._locale, config._a[HOUR], config._meridiem); + + configFromArray(config); + checkOverflow(config); +} + + +function meridiemFixWrap (locale, hour, meridiem) { + var isPm; + + if (meridiem == null) { + // nothing to do + return hour; + } + if (locale.meridiemHour != null) { + return locale.meridiemHour(hour, meridiem); + } else if (locale.isPM != null) { + // Fallback + isPm = locale.isPM(meridiem); + if (isPm && hour < 12) { + hour += 12; + } + if (!isPm && hour === 12) { + hour = 0; + } + return hour; + } else { + // this is not supposed to happen + return hour; + } +} + +// date from string and array of format strings +function configFromStringAndArray(config) { + var tempConfig, + bestMoment, + + scoreToBeat, + i, + currentScore; + + if (config._f.length === 0) { + getParsingFlags(config).invalidFormat = true; + config._d = new Date(NaN); + return; + } + + for (i = 0; i < config._f.length; i++) { + currentScore = 0; + tempConfig = copyConfig({}, config); + if (config._useUTC != null) { + tempConfig._useUTC = config._useUTC; + } + tempConfig._f = config._f[i]; + configFromStringAndFormat(tempConfig); + + if (!isValid(tempConfig)) { + continue; + } + + // if there is any input that was not parsed add a penalty for that format + currentScore += getParsingFlags(tempConfig).charsLeftOver; + + //or tokens + currentScore += getParsingFlags(tempConfig).unusedTokens.length * 10; + + getParsingFlags(tempConfig).score = currentScore; + + if (scoreToBeat == null || currentScore < scoreToBeat) { + scoreToBeat = currentScore; + bestMoment = tempConfig; + } + } + + extend(config, bestMoment || tempConfig); +} + +function configFromObject(config) { + if (config._d) { + return; + } + + var i = normalizeObjectUnits(config._i); + config._a = map([i.year, i.month, i.day || i.date, i.hour, i.minute, i.second, i.millisecond], function (obj) { + return obj && parseInt(obj, 10); + }); + + configFromArray(config); +} + +function createFromConfig (config) { + var res = new Moment(checkOverflow(prepareConfig(config))); + if (res._nextDay) { + // Adding is smart enough around DST + res.add(1, 'd'); + res._nextDay = undefined; + } + + return res; +} + +function prepareConfig (config) { + var input = config._i, + format = config._f; + + config._locale = config._locale || getLocale(config._l); + + if (input === null || (format === undefined && input === '')) { + return createInvalid({nullInput: true}); + } + + if (typeof input === 'string') { + config._i = input = config._locale.preparse(input); + } + + if (isMoment(input)) { + return new Moment(checkOverflow(input)); + } else if (isDate(input)) { + config._d = input; + } else if (isArray(format)) { + configFromStringAndArray(config); + } else if (format) { + configFromStringAndFormat(config); + } else { + configFromInput(config); + } + + if (!isValid(config)) { + config._d = null; + } + + return config; +} + +function configFromInput(config) { + var input = config._i; + if (isUndefined(input)) { + config._d = new Date(hooks.now()); + } else if (isDate(input)) { + config._d = new Date(input.valueOf()); + } else if (typeof input === 'string') { + configFromString(config); + } else if (isArray(input)) { + config._a = map(input.slice(0), function (obj) { + return parseInt(obj, 10); + }); + configFromArray(config); + } else if (isObject(input)) { + configFromObject(config); + } else if (isNumber(input)) { + // from milliseconds + config._d = new Date(input); + } else { + hooks.createFromInputFallback(config); + } +} + +function createLocalOrUTC (input, format, locale, strict, isUTC) { + var c = {}; + + if (locale === true || locale === false) { + strict = locale; + locale = undefined; + } + + if ((isObject(input) && isObjectEmpty(input)) || + (isArray(input) && input.length === 0)) { + input = undefined; + } + // object construction must be done this way. + // https://github.com/moment/moment/issues/1423 + c._isAMomentObject = true; + c._useUTC = c._isUTC = isUTC; + c._l = locale; + c._i = input; + c._f = format; + c._strict = strict; + + return createFromConfig(c); +} + +function createLocal (input, format, locale, strict) { + return createLocalOrUTC(input, format, locale, strict, false); +} + +var prototypeMin = deprecate( + 'moment().min is deprecated, use moment.max instead. http://momentjs.com/guides/#/warnings/min-max/', + function () { + var other = createLocal.apply(null, arguments); + if (this.isValid() && other.isValid()) { + return other < this ? this : other; + } else { + return createInvalid(); + } + } +); + +var prototypeMax = deprecate( + 'moment().max is deprecated, use moment.min instead. http://momentjs.com/guides/#/warnings/min-max/', + function () { + var other = createLocal.apply(null, arguments); + if (this.isValid() && other.isValid()) { + return other > this ? this : other; + } else { + return createInvalid(); + } + } +); + +// Pick a moment m from moments so that m[fn](other) is true for all +// other. This relies on the function fn to be transitive. +// +// moments should either be an array of moment objects or an array, whose +// first element is an array of moment objects. +function pickBy(fn, moments) { + var res, i; + if (moments.length === 1 && isArray(moments[0])) { + moments = moments[0]; + } + if (!moments.length) { + return createLocal(); + } + res = moments[0]; + for (i = 1; i < moments.length; ++i) { + if (!moments[i].isValid() || moments[i][fn](res)) { + res = moments[i]; + } + } + return res; +} + +// TODO: Use [].sort instead? +function min () { + var args = [].slice.call(arguments, 0); + + return pickBy('isBefore', args); +} + +function max () { + var args = [].slice.call(arguments, 0); + + return pickBy('isAfter', args); +} + +var now = function () { + return Date.now ? Date.now() : +(new Date()); +}; + +var ordering = ['year', 'quarter', 'month', 'week', 'day', 'hour', 'minute', 'second', 'millisecond']; + +function isDurationValid(m) { + for (var key in m) { + if (!(ordering.indexOf(key) !== -1 && (m[key] == null || !isNaN(m[key])))) { + return false; + } + } + + var unitHasDecimal = false; + for (var i = 0; i < ordering.length; ++i) { + if (m[ordering[i]]) { + if (unitHasDecimal) { + return false; // only allow non-integers for smallest unit + } + if (parseFloat(m[ordering[i]]) !== toInt(m[ordering[i]])) { + unitHasDecimal = true; + } + } + } + + return true; +} + +function isValid$1() { + return this._isValid; +} + +function createInvalid$1() { + return createDuration(NaN); +} + +function Duration (duration) { + var normalizedInput = normalizeObjectUnits(duration), + years = normalizedInput.year || 0, + quarters = normalizedInput.quarter || 0, + months = normalizedInput.month || 0, + weeks = normalizedInput.week || 0, + days = normalizedInput.day || 0, + hours = normalizedInput.hour || 0, + minutes = normalizedInput.minute || 0, + seconds = normalizedInput.second || 0, + milliseconds = normalizedInput.millisecond || 0; + + this._isValid = isDurationValid(normalizedInput); + + // representation for dateAddRemove + this._milliseconds = +milliseconds + + seconds * 1e3 + // 1000 + minutes * 6e4 + // 1000 * 60 + hours * 1000 * 60 * 60; //using 1000 * 60 * 60 instead of 36e5 to avoid floating point rounding errors https://github.com/moment/moment/issues/2978 + // Because of dateAddRemove treats 24 hours as different from a + // day when working around DST, we need to store them separately + this._days = +days + + weeks * 7; + // It is impossible translate months into days without knowing + // which months you are are talking about, so we have to store + // it separately. + this._months = +months + + quarters * 3 + + years * 12; + + this._data = {}; + + this._locale = getLocale(); + + this._bubble(); +} + +function isDuration (obj) { + return obj instanceof Duration; +} + +function absRound (number) { + if (number < 0) { + return Math.round(-1 * number) * -1; + } else { + return Math.round(number); + } +} + +// FORMATTING + +function offset (token, separator) { + addFormatToken(token, 0, 0, function () { + var offset = this.utcOffset(); + var sign = '+'; + if (offset < 0) { + offset = -offset; + sign = '-'; + } + return sign + zeroFill(~~(offset / 60), 2) + separator + zeroFill(~~(offset) % 60, 2); + }); +} + +offset('Z', ':'); +offset('ZZ', ''); + +// PARSING + +addRegexToken('Z', matchShortOffset); +addRegexToken('ZZ', matchShortOffset); +addParseToken(['Z', 'ZZ'], function (input, array, config) { + config._useUTC = true; + config._tzm = offsetFromString(matchShortOffset, input); +}); + +// HELPERS + +// timezone chunker +// '+10:00' > ['10', '00'] +// '-1530' > ['-15', '30'] +var chunkOffset = /([\+\-]|\d\d)/gi; + +function offsetFromString(matcher, string) { + var matches = (string || '').match(matcher); + + if (matches === null) { + return null; + } + + var chunk = matches[matches.length - 1] || []; + var parts = (chunk + '').match(chunkOffset) || ['-', 0, 0]; + var minutes = +(parts[1] * 60) + toInt(parts[2]); + + return minutes === 0 ? + 0 : + parts[0] === '+' ? minutes : -minutes; +} + +// Return a moment from input, that is local/utc/zone equivalent to model. +function cloneWithOffset(input, model) { + var res, diff; + if (model._isUTC) { + res = model.clone(); + diff = (isMoment(input) || isDate(input) ? input.valueOf() : createLocal(input).valueOf()) - res.valueOf(); + // Use low-level api, because this fn is low-level api. + res._d.setTime(res._d.valueOf() + diff); + hooks.updateOffset(res, false); + return res; + } else { + return createLocal(input).local(); + } +} + +function getDateOffset (m) { + // On Firefox.24 Date#getTimezoneOffset returns a floating point. + // https://github.com/moment/moment/pull/1871 + return -Math.round(m._d.getTimezoneOffset() / 15) * 15; +} + +// HOOKS + +// This function will be called whenever a moment is mutated. +// It is intended to keep the offset in sync with the timezone. +hooks.updateOffset = function () {}; + +// MOMENTS + +// keepLocalTime = true means only change the timezone, without +// affecting the local hour. So 5:31:26 +0300 --[utcOffset(2, true)]--> +// 5:31:26 +0200 It is possible that 5:31:26 doesn't exist with offset +// +0200, so we adjust the time as needed, to be valid. +// +// Keeping the time actually adds/subtracts (one hour) +// from the actual represented time. That is why we call updateOffset +// a second time. In case it wants us to change the offset again +// _changeInProgress == true case, then we have to adjust, because +// there is no such time in the given timezone. +function getSetOffset (input, keepLocalTime, keepMinutes) { + var offset = this._offset || 0, + localAdjust; + if (!this.isValid()) { + return input != null ? this : NaN; + } + if (input != null) { + if (typeof input === 'string') { + input = offsetFromString(matchShortOffset, input); + if (input === null) { + return this; + } + } else if (Math.abs(input) < 16 && !keepMinutes) { + input = input * 60; + } + if (!this._isUTC && keepLocalTime) { + localAdjust = getDateOffset(this); + } + this._offset = input; + this._isUTC = true; + if (localAdjust != null) { + this.add(localAdjust, 'm'); + } + if (offset !== input) { + if (!keepLocalTime || this._changeInProgress) { + addSubtract(this, createDuration(input - offset, 'm'), 1, false); + } else if (!this._changeInProgress) { + this._changeInProgress = true; + hooks.updateOffset(this, true); + this._changeInProgress = null; + } + } + return this; + } else { + return this._isUTC ? offset : getDateOffset(this); + } +} + +function getSetZone (input, keepLocalTime) { + if (input != null) { + if (typeof input !== 'string') { + input = -input; + } + + this.utcOffset(input, keepLocalTime); + + return this; + } else { + return -this.utcOffset(); + } +} + +function setOffsetToUTC (keepLocalTime) { + return this.utcOffset(0, keepLocalTime); +} + +function setOffsetToLocal (keepLocalTime) { + if (this._isUTC) { + this.utcOffset(0, keepLocalTime); + this._isUTC = false; + + if (keepLocalTime) { + this.subtract(getDateOffset(this), 'm'); + } + } + return this; +} + +function setOffsetToParsedOffset () { + if (this._tzm != null) { + this.utcOffset(this._tzm, false, true); + } else if (typeof this._i === 'string') { + var tZone = offsetFromString(matchOffset, this._i); + if (tZone != null) { + this.utcOffset(tZone); + } + else { + this.utcOffset(0, true); + } + } + return this; +} + +function hasAlignedHourOffset (input) { + if (!this.isValid()) { + return false; + } + input = input ? createLocal(input).utcOffset() : 0; + + return (this.utcOffset() - input) % 60 === 0; +} + +function isDaylightSavingTime () { + return ( + this.utcOffset() > this.clone().month(0).utcOffset() || + this.utcOffset() > this.clone().month(5).utcOffset() + ); +} + +function isDaylightSavingTimeShifted () { + if (!isUndefined(this._isDSTShifted)) { + return this._isDSTShifted; + } + + var c = {}; + + copyConfig(c, this); + c = prepareConfig(c); + + if (c._a) { + var other = c._isUTC ? createUTC(c._a) : createLocal(c._a); + this._isDSTShifted = this.isValid() && + compareArrays(c._a, other.toArray()) > 0; + } else { + this._isDSTShifted = false; + } + + return this._isDSTShifted; +} + +function isLocal () { + return this.isValid() ? !this._isUTC : false; +} + +function isUtcOffset () { + return this.isValid() ? this._isUTC : false; +} + +function isUtc () { + return this.isValid() ? this._isUTC && this._offset === 0 : false; +} + +// ASP.NET json date format regex +var aspNetRegex = /^(\-)?(?:(\d*)[. ])?(\d+)\:(\d+)(?:\:(\d+)(\.\d*)?)?$/; + +// from http://docs.closure-library.googlecode.com/git/closure_goog_date_date.js.source.html +// somewhat more in line with 4.4.3.2 2004 spec, but allows decimal anywhere +// and further modified to allow for strings containing both week and day +var isoRegex = /^(-)?P(?:(-?[0-9,.]*)Y)?(?:(-?[0-9,.]*)M)?(?:(-?[0-9,.]*)W)?(?:(-?[0-9,.]*)D)?(?:T(?:(-?[0-9,.]*)H)?(?:(-?[0-9,.]*)M)?(?:(-?[0-9,.]*)S)?)?$/; + +function createDuration (input, key) { + var duration = input, + // matching against regexp is expensive, do it on demand + match = null, + sign, + ret, + diffRes; + + if (isDuration(input)) { + duration = { + ms : input._milliseconds, + d : input._days, + M : input._months + }; + } else if (isNumber(input)) { + duration = {}; + if (key) { + duration[key] = input; + } else { + duration.milliseconds = input; + } + } else if (!!(match = aspNetRegex.exec(input))) { + sign = (match[1] === '-') ? -1 : 1; + duration = { + y : 0, + d : toInt(match[DATE]) * sign, + h : toInt(match[HOUR]) * sign, + m : toInt(match[MINUTE]) * sign, + s : toInt(match[SECOND]) * sign, + ms : toInt(absRound(match[MILLISECOND] * 1000)) * sign // the millisecond decimal point is included in the match + }; + } else if (!!(match = isoRegex.exec(input))) { + sign = (match[1] === '-') ? -1 : 1; + duration = { + y : parseIso(match[2], sign), + M : parseIso(match[3], sign), + w : parseIso(match[4], sign), + d : parseIso(match[5], sign), + h : parseIso(match[6], sign), + m : parseIso(match[7], sign), + s : parseIso(match[8], sign) + }; + } else if (duration == null) {// checks for null or undefined + duration = {}; + } else if (typeof duration === 'object' && ('from' in duration || 'to' in duration)) { + diffRes = momentsDifference(createLocal(duration.from), createLocal(duration.to)); + + duration = {}; + duration.ms = diffRes.milliseconds; + duration.M = diffRes.months; + } + + ret = new Duration(duration); + + if (isDuration(input) && hasOwnProp(input, '_locale')) { + ret._locale = input._locale; + } + + return ret; +} + +createDuration.fn = Duration.prototype; +createDuration.invalid = createInvalid$1; + +function parseIso (inp, sign) { + // We'd normally use ~~inp for this, but unfortunately it also + // converts floats to ints. + // inp may be undefined, so careful calling replace on it. + var res = inp && parseFloat(inp.replace(',', '.')); + // apply sign while we're at it + return (isNaN(res) ? 0 : res) * sign; +} + +function positiveMomentsDifference(base, other) { + var res = {milliseconds: 0, months: 0}; + + res.months = other.month() - base.month() + + (other.year() - base.year()) * 12; + if (base.clone().add(res.months, 'M').isAfter(other)) { + --res.months; + } + + res.milliseconds = +other - +(base.clone().add(res.months, 'M')); + + return res; +} + +function momentsDifference(base, other) { + var res; + if (!(base.isValid() && other.isValid())) { + return {milliseconds: 0, months: 0}; + } + + other = cloneWithOffset(other, base); + if (base.isBefore(other)) { + res = positiveMomentsDifference(base, other); + } else { + res = positiveMomentsDifference(other, base); + res.milliseconds = -res.milliseconds; + res.months = -res.months; + } + + return res; +} + +// TODO: remove 'name' arg after deprecation is removed +function createAdder(direction, name) { + return function (val, period) { + var dur, tmp; + //invert the arguments, but complain about it + if (period !== null && !isNaN(+period)) { + deprecateSimple(name, 'moment().' + name + '(period, number) is deprecated. Please use moment().' + name + '(number, period). ' + + 'See http://momentjs.com/guides/#/warnings/add-inverted-param/ for more info.'); + tmp = val; val = period; period = tmp; + } + + val = typeof val === 'string' ? +val : val; + dur = createDuration(val, period); + addSubtract(this, dur, direction); + return this; + }; +} + +function addSubtract (mom, duration, isAdding, updateOffset) { + var milliseconds = duration._milliseconds, + days = absRound(duration._days), + months = absRound(duration._months); + + if (!mom.isValid()) { + // No op + return; + } + + updateOffset = updateOffset == null ? true : updateOffset; + + if (milliseconds) { + mom._d.setTime(mom._d.valueOf() + milliseconds * isAdding); + } + if (days) { + set$1(mom, 'Date', get(mom, 'Date') + days * isAdding); + } + if (months) { + setMonth(mom, get(mom, 'Month') + months * isAdding); + } + if (updateOffset) { + hooks.updateOffset(mom, days || months); + } +} + +var add = createAdder(1, 'add'); +var subtract = createAdder(-1, 'subtract'); + +function getCalendarFormat(myMoment, now) { + var diff = myMoment.diff(now, 'days', true); + return diff < -6 ? 'sameElse' : + diff < -1 ? 'lastWeek' : + diff < 0 ? 'lastDay' : + diff < 1 ? 'sameDay' : + diff < 2 ? 'nextDay' : + diff < 7 ? 'nextWeek' : 'sameElse'; +} + +function calendar$1 (time, formats) { + // We want to compare the start of today, vs this. + // Getting start-of-today depends on whether we're local/utc/offset or not. + var now = time || createLocal(), + sod = cloneWithOffset(now, this).startOf('day'), + format = hooks.calendarFormat(this, sod) || 'sameElse'; + + var output = formats && (isFunction(formats[format]) ? formats[format].call(this, now) : formats[format]); + + return this.format(output || this.localeData().calendar(format, this, createLocal(now))); +} + +function clone () { + return new Moment(this); +} + +function isAfter (input, units) { + var localInput = isMoment(input) ? input : createLocal(input); + if (!(this.isValid() && localInput.isValid())) { + return false; + } + units = normalizeUnits(!isUndefined(units) ? units : 'millisecond'); + if (units === 'millisecond') { + return this.valueOf() > localInput.valueOf(); + } else { + return localInput.valueOf() < this.clone().startOf(units).valueOf(); + } +} + +function isBefore (input, units) { + var localInput = isMoment(input) ? input : createLocal(input); + if (!(this.isValid() && localInput.isValid())) { + return false; + } + units = normalizeUnits(!isUndefined(units) ? units : 'millisecond'); + if (units === 'millisecond') { + return this.valueOf() < localInput.valueOf(); + } else { + return this.clone().endOf(units).valueOf() < localInput.valueOf(); + } +} + +function isBetween (from, to, units, inclusivity) { + inclusivity = inclusivity || '()'; + return (inclusivity[0] === '(' ? this.isAfter(from, units) : !this.isBefore(from, units)) && + (inclusivity[1] === ')' ? this.isBefore(to, units) : !this.isAfter(to, units)); +} + +function isSame (input, units) { + var localInput = isMoment(input) ? input : createLocal(input), + inputMs; + if (!(this.isValid() && localInput.isValid())) { + return false; + } + units = normalizeUnits(units || 'millisecond'); + if (units === 'millisecond') { + return this.valueOf() === localInput.valueOf(); + } else { + inputMs = localInput.valueOf(); + return this.clone().startOf(units).valueOf() <= inputMs && inputMs <= this.clone().endOf(units).valueOf(); + } +} + +function isSameOrAfter (input, units) { + return this.isSame(input, units) || this.isAfter(input,units); +} + +function isSameOrBefore (input, units) { + return this.isSame(input, units) || this.isBefore(input,units); +} + +function diff (input, units, asFloat) { + var that, + zoneDelta, + delta, output; + + if (!this.isValid()) { + return NaN; + } + + that = cloneWithOffset(input, this); + + if (!that.isValid()) { + return NaN; + } + + zoneDelta = (that.utcOffset() - this.utcOffset()) * 6e4; + + units = normalizeUnits(units); + + if (units === 'year' || units === 'month' || units === 'quarter') { + output = monthDiff(this, that); + if (units === 'quarter') { + output = output / 3; + } else if (units === 'year') { + output = output / 12; + } + } else { + delta = this - that; + output = units === 'second' ? delta / 1e3 : // 1000 + units === 'minute' ? delta / 6e4 : // 1000 * 60 + units === 'hour' ? delta / 36e5 : // 1000 * 60 * 60 + units === 'day' ? (delta - zoneDelta) / 864e5 : // 1000 * 60 * 60 * 24, negate dst + units === 'week' ? (delta - zoneDelta) / 6048e5 : // 1000 * 60 * 60 * 24 * 7, negate dst + delta; + } + return asFloat ? output : absFloor(output); +} + +function monthDiff (a, b) { + // difference in months + var wholeMonthDiff = ((b.year() - a.year()) * 12) + (b.month() - a.month()), + // b is in (anchor - 1 month, anchor + 1 month) + anchor = a.clone().add(wholeMonthDiff, 'months'), + anchor2, adjust; + + if (b - anchor < 0) { + anchor2 = a.clone().add(wholeMonthDiff - 1, 'months'); + // linear across the month + adjust = (b - anchor) / (anchor - anchor2); + } else { + anchor2 = a.clone().add(wholeMonthDiff + 1, 'months'); + // linear across the month + adjust = (b - anchor) / (anchor2 - anchor); + } + + //check for negative zero, return zero if negative zero + return -(wholeMonthDiff + adjust) || 0; +} + +hooks.defaultFormat = 'YYYY-MM-DDTHH:mm:ssZ'; +hooks.defaultFormatUtc = 'YYYY-MM-DDTHH:mm:ss[Z]'; + +function toString () { + return this.clone().locale('en').format('ddd MMM DD YYYY HH:mm:ss [GMT]ZZ'); +} + +function toISOString() { + if (!this.isValid()) { + return null; + } + var m = this.clone().utc(); + if (m.year() < 0 || m.year() > 9999) { + return formatMoment(m, 'YYYYYY-MM-DD[T]HH:mm:ss.SSS[Z]'); + } + if (isFunction(Date.prototype.toISOString)) { + // native implementation is ~50x faster, use it when we can + return this.toDate().toISOString(); + } + return formatMoment(m, 'YYYY-MM-DD[T]HH:mm:ss.SSS[Z]'); +} + +/** + * Return a human readable representation of a moment that can + * also be evaluated to get a new moment which is the same + * + * @link https://nodejs.org/dist/latest/docs/api/util.html#util_custom_inspect_function_on_objects + */ +function inspect () { + if (!this.isValid()) { + return 'moment.invalid(/* ' + this._i + ' */)'; + } + var func = 'moment'; + var zone = ''; + if (!this.isLocal()) { + func = this.utcOffset() === 0 ? 'moment.utc' : 'moment.parseZone'; + zone = 'Z'; + } + var prefix = '[' + func + '("]'; + var year = (0 <= this.year() && this.year() <= 9999) ? 'YYYY' : 'YYYYYY'; + var datetime = '-MM-DD[T]HH:mm:ss.SSS'; + var suffix = zone + '[")]'; + + return this.format(prefix + year + datetime + suffix); +} + +function format (inputString) { + if (!inputString) { + inputString = this.isUtc() ? hooks.defaultFormatUtc : hooks.defaultFormat; + } + var output = formatMoment(this, inputString); + return this.localeData().postformat(output); +} + +function from (time, withoutSuffix) { + if (this.isValid() && + ((isMoment(time) && time.isValid()) || + createLocal(time).isValid())) { + return createDuration({to: this, from: time}).locale(this.locale()).humanize(!withoutSuffix); + } else { + return this.localeData().invalidDate(); + } +} + +function fromNow (withoutSuffix) { + return this.from(createLocal(), withoutSuffix); +} + +function to (time, withoutSuffix) { + if (this.isValid() && + ((isMoment(time) && time.isValid()) || + createLocal(time).isValid())) { + return createDuration({from: this, to: time}).locale(this.locale()).humanize(!withoutSuffix); + } else { + return this.localeData().invalidDate(); + } +} + +function toNow (withoutSuffix) { + return this.to(createLocal(), withoutSuffix); +} + +// If passed a locale key, it will set the locale for this +// instance. Otherwise, it will return the locale configuration +// variables for this instance. +function locale (key) { + var newLocaleData; + + if (key === undefined) { + return this._locale._abbr; + } else { + newLocaleData = getLocale(key); + if (newLocaleData != null) { + this._locale = newLocaleData; + } + return this; + } +} + +var lang = deprecate( + 'moment().lang() is deprecated. Instead, use moment().localeData() to get the language configuration. Use moment().locale() to change languages.', + function (key) { + if (key === undefined) { + return this.localeData(); + } else { + return this.locale(key); + } + } +); + +function localeData () { + return this._locale; +} + +function startOf (units) { + units = normalizeUnits(units); + // the following switch intentionally omits break keywords + // to utilize falling through the cases. + switch (units) { + case 'year': + this.month(0); + /* falls through */ + case 'quarter': + case 'month': + this.date(1); + /* falls through */ + case 'week': + case 'isoWeek': + case 'day': + case 'date': + this.hours(0); + /* falls through */ + case 'hour': + this.minutes(0); + /* falls through */ + case 'minute': + this.seconds(0); + /* falls through */ + case 'second': + this.milliseconds(0); + } + + // weeks are a special case + if (units === 'week') { + this.weekday(0); + } + if (units === 'isoWeek') { + this.isoWeekday(1); + } + + // quarters are also special + if (units === 'quarter') { + this.month(Math.floor(this.month() / 3) * 3); + } + + return this; +} + +function endOf (units) { + units = normalizeUnits(units); + if (units === undefined || units === 'millisecond') { + return this; + } + + // 'date' is an alias for 'day', so it should be considered as such. + if (units === 'date') { + units = 'day'; + } + + return this.startOf(units).add(1, (units === 'isoWeek' ? 'week' : units)).subtract(1, 'ms'); +} + +function valueOf () { + return this._d.valueOf() - ((this._offset || 0) * 60000); +} + +function unix () { + return Math.floor(this.valueOf() / 1000); +} + +function toDate () { + return new Date(this.valueOf()); +} + +function toArray () { + var m = this; + return [m.year(), m.month(), m.date(), m.hour(), m.minute(), m.second(), m.millisecond()]; +} + +function toObject () { + var m = this; + return { + years: m.year(), + months: m.month(), + date: m.date(), + hours: m.hours(), + minutes: m.minutes(), + seconds: m.seconds(), + milliseconds: m.milliseconds() + }; +} + +function toJSON () { + // new Date(NaN).toJSON() === null + return this.isValid() ? this.toISOString() : null; +} + +function isValid$2 () { + return isValid(this); +} + +function parsingFlags () { + return extend({}, getParsingFlags(this)); +} + +function invalidAt () { + return getParsingFlags(this).overflow; +} + +function creationData() { + return { + input: this._i, + format: this._f, + locale: this._locale, + isUTC: this._isUTC, + strict: this._strict + }; +} + +// FORMATTING + +addFormatToken(0, ['gg', 2], 0, function () { + return this.weekYear() % 100; +}); + +addFormatToken(0, ['GG', 2], 0, function () { + return this.isoWeekYear() % 100; +}); + +function addWeekYearFormatToken (token, getter) { + addFormatToken(0, [token, token.length], 0, getter); +} + +addWeekYearFormatToken('gggg', 'weekYear'); +addWeekYearFormatToken('ggggg', 'weekYear'); +addWeekYearFormatToken('GGGG', 'isoWeekYear'); +addWeekYearFormatToken('GGGGG', 'isoWeekYear'); + +// ALIASES + +addUnitAlias('weekYear', 'gg'); +addUnitAlias('isoWeekYear', 'GG'); + +// PRIORITY + +addUnitPriority('weekYear', 1); +addUnitPriority('isoWeekYear', 1); + + +// PARSING + +addRegexToken('G', matchSigned); +addRegexToken('g', matchSigned); +addRegexToken('GG', match1to2, match2); +addRegexToken('gg', match1to2, match2); +addRegexToken('GGGG', match1to4, match4); +addRegexToken('gggg', match1to4, match4); +addRegexToken('GGGGG', match1to6, match6); +addRegexToken('ggggg', match1to6, match6); + +addWeekParseToken(['gggg', 'ggggg', 'GGGG', 'GGGGG'], function (input, week, config, token) { + week[token.substr(0, 2)] = toInt(input); +}); + +addWeekParseToken(['gg', 'GG'], function (input, week, config, token) { + week[token] = hooks.parseTwoDigitYear(input); +}); + +// MOMENTS + +function getSetWeekYear (input) { + return getSetWeekYearHelper.call(this, + input, + this.week(), + this.weekday(), + this.localeData()._week.dow, + this.localeData()._week.doy); +} + +function getSetISOWeekYear (input) { + return getSetWeekYearHelper.call(this, + input, this.isoWeek(), this.isoWeekday(), 1, 4); +} + +function getISOWeeksInYear () { + return weeksInYear(this.year(), 1, 4); +} + +function getWeeksInYear () { + var weekInfo = this.localeData()._week; + return weeksInYear(this.year(), weekInfo.dow, weekInfo.doy); +} + +function getSetWeekYearHelper(input, week, weekday, dow, doy) { + var weeksTarget; + if (input == null) { + return weekOfYear(this, dow, doy).year; + } else { + weeksTarget = weeksInYear(input, dow, doy); + if (week > weeksTarget) { + week = weeksTarget; + } + return setWeekAll.call(this, input, week, weekday, dow, doy); + } +} + +function setWeekAll(weekYear, week, weekday, dow, doy) { + var dayOfYearData = dayOfYearFromWeeks(weekYear, week, weekday, dow, doy), + date = createUTCDate(dayOfYearData.year, 0, dayOfYearData.dayOfYear); + + this.year(date.getUTCFullYear()); + this.month(date.getUTCMonth()); + this.date(date.getUTCDate()); + return this; +} + +// FORMATTING + +addFormatToken('Q', 0, 'Qo', 'quarter'); + +// ALIASES + +addUnitAlias('quarter', 'Q'); + +// PRIORITY + +addUnitPriority('quarter', 7); + +// PARSING + +addRegexToken('Q', match1); +addParseToken('Q', function (input, array) { + array[MONTH] = (toInt(input) - 1) * 3; +}); + +// MOMENTS + +function getSetQuarter (input) { + return input == null ? Math.ceil((this.month() + 1) / 3) : this.month((input - 1) * 3 + this.month() % 3); +} + +// FORMATTING + +addFormatToken('D', ['DD', 2], 'Do', 'date'); + +// ALIASES + +addUnitAlias('date', 'D'); + +// PRIOROITY +addUnitPriority('date', 9); + +// PARSING + +addRegexToken('D', match1to2); +addRegexToken('DD', match1to2, match2); +addRegexToken('Do', function (isStrict, locale) { + // TODO: Remove "ordinalParse" fallback in next major release. + return isStrict ? + (locale._dayOfMonthOrdinalParse || locale._ordinalParse) : + locale._dayOfMonthOrdinalParseLenient; +}); + +addParseToken(['D', 'DD'], DATE); +addParseToken('Do', function (input, array) { + array[DATE] = toInt(input.match(match1to2)[0], 10); +}); + +// MOMENTS + +var getSetDayOfMonth = makeGetSet('Date', true); + +// FORMATTING + +addFormatToken('DDD', ['DDDD', 3], 'DDDo', 'dayOfYear'); + +// ALIASES + +addUnitAlias('dayOfYear', 'DDD'); + +// PRIORITY +addUnitPriority('dayOfYear', 4); + +// PARSING + +addRegexToken('DDD', match1to3); +addRegexToken('DDDD', match3); +addParseToken(['DDD', 'DDDD'], function (input, array, config) { + config._dayOfYear = toInt(input); +}); + +// HELPERS + +// MOMENTS + +function getSetDayOfYear (input) { + var dayOfYear = Math.round((this.clone().startOf('day') - this.clone().startOf('year')) / 864e5) + 1; + return input == null ? dayOfYear : this.add((input - dayOfYear), 'd'); +} + +// FORMATTING + +addFormatToken('m', ['mm', 2], 0, 'minute'); + +// ALIASES + +addUnitAlias('minute', 'm'); + +// PRIORITY + +addUnitPriority('minute', 14); + +// PARSING + +addRegexToken('m', match1to2); +addRegexToken('mm', match1to2, match2); +addParseToken(['m', 'mm'], MINUTE); + +// MOMENTS + +var getSetMinute = makeGetSet('Minutes', false); + +// FORMATTING + +addFormatToken('s', ['ss', 2], 0, 'second'); + +// ALIASES + +addUnitAlias('second', 's'); + +// PRIORITY + +addUnitPriority('second', 15); + +// PARSING + +addRegexToken('s', match1to2); +addRegexToken('ss', match1to2, match2); +addParseToken(['s', 'ss'], SECOND); + +// MOMENTS + +var getSetSecond = makeGetSet('Seconds', false); + +// FORMATTING + +addFormatToken('S', 0, 0, function () { + return ~~(this.millisecond() / 100); +}); + +addFormatToken(0, ['SS', 2], 0, function () { + return ~~(this.millisecond() / 10); +}); + +addFormatToken(0, ['SSS', 3], 0, 'millisecond'); +addFormatToken(0, ['SSSS', 4], 0, function () { + return this.millisecond() * 10; +}); +addFormatToken(0, ['SSSSS', 5], 0, function () { + return this.millisecond() * 100; +}); +addFormatToken(0, ['SSSSSS', 6], 0, function () { + return this.millisecond() * 1000; +}); +addFormatToken(0, ['SSSSSSS', 7], 0, function () { + return this.millisecond() * 10000; +}); +addFormatToken(0, ['SSSSSSSS', 8], 0, function () { + return this.millisecond() * 100000; +}); +addFormatToken(0, ['SSSSSSSSS', 9], 0, function () { + return this.millisecond() * 1000000; +}); + + +// ALIASES + +addUnitAlias('millisecond', 'ms'); + +// PRIORITY + +addUnitPriority('millisecond', 16); + +// PARSING + +addRegexToken('S', match1to3, match1); +addRegexToken('SS', match1to3, match2); +addRegexToken('SSS', match1to3, match3); + +var token; +for (token = 'SSSS'; token.length <= 9; token += 'S') { + addRegexToken(token, matchUnsigned); +} + +function parseMs(input, array) { + array[MILLISECOND] = toInt(('0.' + input) * 1000); +} + +for (token = 'S'; token.length <= 9; token += 'S') { + addParseToken(token, parseMs); +} +// MOMENTS + +var getSetMillisecond = makeGetSet('Milliseconds', false); + +// FORMATTING + +addFormatToken('z', 0, 0, 'zoneAbbr'); +addFormatToken('zz', 0, 0, 'zoneName'); + +// MOMENTS + +function getZoneAbbr () { + return this._isUTC ? 'UTC' : ''; +} + +function getZoneName () { + return this._isUTC ? 'Coordinated Universal Time' : ''; +} + +var proto = Moment.prototype; + +proto.add = add; +proto.calendar = calendar$1; +proto.clone = clone; +proto.diff = diff; +proto.endOf = endOf; +proto.format = format; +proto.from = from; +proto.fromNow = fromNow; +proto.to = to; +proto.toNow = toNow; +proto.get = stringGet; +proto.invalidAt = invalidAt; +proto.isAfter = isAfter; +proto.isBefore = isBefore; +proto.isBetween = isBetween; +proto.isSame = isSame; +proto.isSameOrAfter = isSameOrAfter; +proto.isSameOrBefore = isSameOrBefore; +proto.isValid = isValid$2; +proto.lang = lang; +proto.locale = locale; +proto.localeData = localeData; +proto.max = prototypeMax; +proto.min = prototypeMin; +proto.parsingFlags = parsingFlags; +proto.set = stringSet; +proto.startOf = startOf; +proto.subtract = subtract; +proto.toArray = toArray; +proto.toObject = toObject; +proto.toDate = toDate; +proto.toISOString = toISOString; +proto.inspect = inspect; +proto.toJSON = toJSON; +proto.toString = toString; +proto.unix = unix; +proto.valueOf = valueOf; +proto.creationData = creationData; + +// Year +proto.year = getSetYear; +proto.isLeapYear = getIsLeapYear; + +// Week Year +proto.weekYear = getSetWeekYear; +proto.isoWeekYear = getSetISOWeekYear; + +// Quarter +proto.quarter = proto.quarters = getSetQuarter; + +// Month +proto.month = getSetMonth; +proto.daysInMonth = getDaysInMonth; + +// Week +proto.week = proto.weeks = getSetWeek; +proto.isoWeek = proto.isoWeeks = getSetISOWeek; +proto.weeksInYear = getWeeksInYear; +proto.isoWeeksInYear = getISOWeeksInYear; + +// Day +proto.date = getSetDayOfMonth; +proto.day = proto.days = getSetDayOfWeek; +proto.weekday = getSetLocaleDayOfWeek; +proto.isoWeekday = getSetISODayOfWeek; +proto.dayOfYear = getSetDayOfYear; + +// Hour +proto.hour = proto.hours = getSetHour; + +// Minute +proto.minute = proto.minutes = getSetMinute; + +// Second +proto.second = proto.seconds = getSetSecond; + +// Millisecond +proto.millisecond = proto.milliseconds = getSetMillisecond; + +// Offset +proto.utcOffset = getSetOffset; +proto.utc = setOffsetToUTC; +proto.local = setOffsetToLocal; +proto.parseZone = setOffsetToParsedOffset; +proto.hasAlignedHourOffset = hasAlignedHourOffset; +proto.isDST = isDaylightSavingTime; +proto.isLocal = isLocal; +proto.isUtcOffset = isUtcOffset; +proto.isUtc = isUtc; +proto.isUTC = isUtc; + +// Timezone +proto.zoneAbbr = getZoneAbbr; +proto.zoneName = getZoneName; + +// Deprecations +proto.dates = deprecate('dates accessor is deprecated. Use date instead.', getSetDayOfMonth); +proto.months = deprecate('months accessor is deprecated. Use month instead', getSetMonth); +proto.years = deprecate('years accessor is deprecated. Use year instead', getSetYear); +proto.zone = deprecate('moment().zone is deprecated, use moment().utcOffset instead. http://momentjs.com/guides/#/warnings/zone/', getSetZone); +proto.isDSTShifted = deprecate('isDSTShifted is deprecated. See http://momentjs.com/guides/#/warnings/dst-shifted/ for more information', isDaylightSavingTimeShifted); + +function createUnix (input) { + return createLocal(input * 1000); +} + +function createInZone () { + return createLocal.apply(null, arguments).parseZone(); +} + +function preParsePostFormat (string) { + return string; +} + +var proto$1 = Locale.prototype; + +proto$1.calendar = calendar; +proto$1.longDateFormat = longDateFormat; +proto$1.invalidDate = invalidDate; +proto$1.ordinal = ordinal; +proto$1.preparse = preParsePostFormat; +proto$1.postformat = preParsePostFormat; +proto$1.relativeTime = relativeTime; +proto$1.pastFuture = pastFuture; +proto$1.set = set; + +// Month +proto$1.months = localeMonths; +proto$1.monthsShort = localeMonthsShort; +proto$1.monthsParse = localeMonthsParse; +proto$1.monthsRegex = monthsRegex; +proto$1.monthsShortRegex = monthsShortRegex; + +// Week +proto$1.week = localeWeek; +proto$1.firstDayOfYear = localeFirstDayOfYear; +proto$1.firstDayOfWeek = localeFirstDayOfWeek; + +// Day of Week +proto$1.weekdays = localeWeekdays; +proto$1.weekdaysMin = localeWeekdaysMin; +proto$1.weekdaysShort = localeWeekdaysShort; +proto$1.weekdaysParse = localeWeekdaysParse; + +proto$1.weekdaysRegex = weekdaysRegex; +proto$1.weekdaysShortRegex = weekdaysShortRegex; +proto$1.weekdaysMinRegex = weekdaysMinRegex; + +// Hours +proto$1.isPM = localeIsPM; +proto$1.meridiem = localeMeridiem; + +function get$1 (format, index, field, setter) { + var locale = getLocale(); + var utc = createUTC().set(setter, index); + return locale[field](utc, format); +} + +function listMonthsImpl (format, index, field) { + if (isNumber(format)) { + index = format; + format = undefined; + } + + format = format || ''; + + if (index != null) { + return get$1(format, index, field, 'month'); + } + + var i; + var out = []; + for (i = 0; i < 12; i++) { + out[i] = get$1(format, i, field, 'month'); + } + return out; +} + +// () +// (5) +// (fmt, 5) +// (fmt) +// (true) +// (true, 5) +// (true, fmt, 5) +// (true, fmt) +function listWeekdaysImpl (localeSorted, format, index, field) { + if (typeof localeSorted === 'boolean') { + if (isNumber(format)) { + index = format; + format = undefined; + } + + format = format || ''; + } else { + format = localeSorted; + index = format; + localeSorted = false; + + if (isNumber(format)) { + index = format; + format = undefined; + } + + format = format || ''; + } + + var locale = getLocale(), + shift = localeSorted ? locale._week.dow : 0; + + if (index != null) { + return get$1(format, (index + shift) % 7, field, 'day'); + } + + var i; + var out = []; + for (i = 0; i < 7; i++) { + out[i] = get$1(format, (i + shift) % 7, field, 'day'); + } + return out; +} + +function listMonths (format, index) { + return listMonthsImpl(format, index, 'months'); +} + +function listMonthsShort (format, index) { + return listMonthsImpl(format, index, 'monthsShort'); +} + +function listWeekdays (localeSorted, format, index) { + return listWeekdaysImpl(localeSorted, format, index, 'weekdays'); +} + +function listWeekdaysShort (localeSorted, format, index) { + return listWeekdaysImpl(localeSorted, format, index, 'weekdaysShort'); +} + +function listWeekdaysMin (localeSorted, format, index) { + return listWeekdaysImpl(localeSorted, format, index, 'weekdaysMin'); +} + +getSetGlobalLocale('en', { + dayOfMonthOrdinalParse: /\d{1,2}(th|st|nd|rd)/, + ordinal : function (number) { + var b = number % 10, + output = (toInt(number % 100 / 10) === 1) ? 'th' : + (b === 1) ? 'st' : + (b === 2) ? 'nd' : + (b === 3) ? 'rd' : 'th'; + return number + output; + } +}); + +// Side effect imports +hooks.lang = deprecate('moment.lang is deprecated. Use moment.locale instead.', getSetGlobalLocale); +hooks.langData = deprecate('moment.langData is deprecated. Use moment.localeData instead.', getLocale); + +var mathAbs = Math.abs; + +function abs () { + var data = this._data; + + this._milliseconds = mathAbs(this._milliseconds); + this._days = mathAbs(this._days); + this._months = mathAbs(this._months); + + data.milliseconds = mathAbs(data.milliseconds); + data.seconds = mathAbs(data.seconds); + data.minutes = mathAbs(data.minutes); + data.hours = mathAbs(data.hours); + data.months = mathAbs(data.months); + data.years = mathAbs(data.years); + + return this; +} + +function addSubtract$1 (duration, input, value, direction) { + var other = createDuration(input, value); + + duration._milliseconds += direction * other._milliseconds; + duration._days += direction * other._days; + duration._months += direction * other._months; + + return duration._bubble(); +} + +// supports only 2.0-style add(1, 's') or add(duration) +function add$1 (input, value) { + return addSubtract$1(this, input, value, 1); +} + +// supports only 2.0-style subtract(1, 's') or subtract(duration) +function subtract$1 (input, value) { + return addSubtract$1(this, input, value, -1); +} + +function absCeil (number) { + if (number < 0) { + return Math.floor(number); + } else { + return Math.ceil(number); + } +} + +function bubble () { + var milliseconds = this._milliseconds; + var days = this._days; + var months = this._months; + var data = this._data; + var seconds, minutes, hours, years, monthsFromDays; + + // if we have a mix of positive and negative values, bubble down first + // check: https://github.com/moment/moment/issues/2166 + if (!((milliseconds >= 0 && days >= 0 && months >= 0) || + (milliseconds <= 0 && days <= 0 && months <= 0))) { + milliseconds += absCeil(monthsToDays(months) + days) * 864e5; + days = 0; + months = 0; + } + + // The following code bubbles up values, see the tests for + // examples of what that means. + data.milliseconds = milliseconds % 1000; + + seconds = absFloor(milliseconds / 1000); + data.seconds = seconds % 60; + + minutes = absFloor(seconds / 60); + data.minutes = minutes % 60; + + hours = absFloor(minutes / 60); + data.hours = hours % 24; + + days += absFloor(hours / 24); + + // convert days to months + monthsFromDays = absFloor(daysToMonths(days)); + months += monthsFromDays; + days -= absCeil(monthsToDays(monthsFromDays)); + + // 12 months -> 1 year + years = absFloor(months / 12); + months %= 12; + + data.days = days; + data.months = months; + data.years = years; + + return this; +} + +function daysToMonths (days) { + // 400 years have 146097 days (taking into account leap year rules) + // 400 years have 12 months === 4800 + return days * 4800 / 146097; +} + +function monthsToDays (months) { + // the reverse of daysToMonths + return months * 146097 / 4800; +} + +function as (units) { + if (!this.isValid()) { + return NaN; + } + var days; + var months; + var milliseconds = this._milliseconds; + + units = normalizeUnits(units); + + if (units === 'month' || units === 'year') { + days = this._days + milliseconds / 864e5; + months = this._months + daysToMonths(days); + return units === 'month' ? months : months / 12; + } else { + // handle milliseconds separately because of floating point math errors (issue #1867) + days = this._days + Math.round(monthsToDays(this._months)); + switch (units) { + case 'week' : return days / 7 + milliseconds / 6048e5; + case 'day' : return days + milliseconds / 864e5; + case 'hour' : return days * 24 + milliseconds / 36e5; + case 'minute' : return days * 1440 + milliseconds / 6e4; + case 'second' : return days * 86400 + milliseconds / 1000; + // Math.floor prevents floating point math errors here + case 'millisecond': return Math.floor(days * 864e5) + milliseconds; + default: throw new Error('Unknown unit ' + units); + } + } +} + +// TODO: Use this.as('ms')? +function valueOf$1 () { + if (!this.isValid()) { + return NaN; + } + return ( + this._milliseconds + + this._days * 864e5 + + (this._months % 12) * 2592e6 + + toInt(this._months / 12) * 31536e6 + ); +} + +function makeAs (alias) { + return function () { + return this.as(alias); + }; +} + +var asMilliseconds = makeAs('ms'); +var asSeconds = makeAs('s'); +var asMinutes = makeAs('m'); +var asHours = makeAs('h'); +var asDays = makeAs('d'); +var asWeeks = makeAs('w'); +var asMonths = makeAs('M'); +var asYears = makeAs('y'); + +function get$2 (units) { + units = normalizeUnits(units); + return this.isValid() ? this[units + 's']() : NaN; +} + +function makeGetter(name) { + return function () { + return this.isValid() ? this._data[name] : NaN; + }; +} + +var milliseconds = makeGetter('milliseconds'); +var seconds = makeGetter('seconds'); +var minutes = makeGetter('minutes'); +var hours = makeGetter('hours'); +var days = makeGetter('days'); +var months = makeGetter('months'); +var years = makeGetter('years'); + +function weeks () { + return absFloor(this.days() / 7); +} + +var round = Math.round; +var thresholds = { + ss: 44, // a few seconds to seconds + s : 45, // seconds to minute + m : 45, // minutes to hour + h : 22, // hours to day + d : 26, // days to month + M : 11 // months to year +}; + +// helper function for moment.fn.from, moment.fn.fromNow, and moment.duration.fn.humanize +function substituteTimeAgo(string, number, withoutSuffix, isFuture, locale) { + return locale.relativeTime(number || 1, !!withoutSuffix, string, isFuture); +} + +function relativeTime$1 (posNegDuration, withoutSuffix, locale) { + var duration = createDuration(posNegDuration).abs(); + var seconds = round(duration.as('s')); + var minutes = round(duration.as('m')); + var hours = round(duration.as('h')); + var days = round(duration.as('d')); + var months = round(duration.as('M')); + var years = round(duration.as('y')); + + var a = seconds <= thresholds.ss && ['s', seconds] || + seconds < thresholds.s && ['ss', seconds] || + minutes <= 1 && ['m'] || + minutes < thresholds.m && ['mm', minutes] || + hours <= 1 && ['h'] || + hours < thresholds.h && ['hh', hours] || + days <= 1 && ['d'] || + days < thresholds.d && ['dd', days] || + months <= 1 && ['M'] || + months < thresholds.M && ['MM', months] || + years <= 1 && ['y'] || ['yy', years]; + + a[2] = withoutSuffix; + a[3] = +posNegDuration > 0; + a[4] = locale; + return substituteTimeAgo.apply(null, a); +} + +// This function allows you to set the rounding function for relative time strings +function getSetRelativeTimeRounding (roundingFunction) { + if (roundingFunction === undefined) { + return round; + } + if (typeof(roundingFunction) === 'function') { + round = roundingFunction; + return true; + } + return false; +} + +// This function allows you to set a threshold for relative time strings +function getSetRelativeTimeThreshold (threshold, limit) { + if (thresholds[threshold] === undefined) { + return false; + } + if (limit === undefined) { + return thresholds[threshold]; + } + thresholds[threshold] = limit; + if (threshold === 's') { + thresholds.ss = limit - 1; + } + return true; +} + +function humanize (withSuffix) { + if (!this.isValid()) { + return this.localeData().invalidDate(); + } + + var locale = this.localeData(); + var output = relativeTime$1(this, !withSuffix, locale); + + if (withSuffix) { + output = locale.pastFuture(+this, output); + } + + return locale.postformat(output); +} + +var abs$1 = Math.abs; + +function toISOString$1() { + // for ISO strings we do not use the normal bubbling rules: + // * milliseconds bubble up until they become hours + // * days do not bubble at all + // * months bubble up until they become years + // This is because there is no context-free conversion between hours and days + // (think of clock changes) + // and also not between days and months (28-31 days per month) + if (!this.isValid()) { + return this.localeData().invalidDate(); + } + + var seconds = abs$1(this._milliseconds) / 1000; + var days = abs$1(this._days); + var months = abs$1(this._months); + var minutes, hours, years; + + // 3600 seconds -> 60 minutes -> 1 hour + minutes = absFloor(seconds / 60); + hours = absFloor(minutes / 60); + seconds %= 60; + minutes %= 60; + + // 12 months -> 1 year + years = absFloor(months / 12); + months %= 12; + + + // inspired by https://github.com/dordille/moment-isoduration/blob/master/moment.isoduration.js + var Y = years; + var M = months; + var D = days; + var h = hours; + var m = minutes; + var s = seconds; + var total = this.asSeconds(); + + if (!total) { + // this is the same as C#'s (Noda) and python (isodate)... + // but not other JS (goog.date) + return 'P0D'; + } + + return (total < 0 ? '-' : '') + + 'P' + + (Y ? Y + 'Y' : '') + + (M ? M + 'M' : '') + + (D ? D + 'D' : '') + + ((h || m || s) ? 'T' : '') + + (h ? h + 'H' : '') + + (m ? m + 'M' : '') + + (s ? s + 'S' : ''); +} + +var proto$2 = Duration.prototype; + +proto$2.isValid = isValid$1; +proto$2.abs = abs; +proto$2.add = add$1; +proto$2.subtract = subtract$1; +proto$2.as = as; +proto$2.asMilliseconds = asMilliseconds; +proto$2.asSeconds = asSeconds; +proto$2.asMinutes = asMinutes; +proto$2.asHours = asHours; +proto$2.asDays = asDays; +proto$2.asWeeks = asWeeks; +proto$2.asMonths = asMonths; +proto$2.asYears = asYears; +proto$2.valueOf = valueOf$1; +proto$2._bubble = bubble; +proto$2.get = get$2; +proto$2.milliseconds = milliseconds; +proto$2.seconds = seconds; +proto$2.minutes = minutes; +proto$2.hours = hours; +proto$2.days = days; +proto$2.weeks = weeks; +proto$2.months = months; +proto$2.years = years; +proto$2.humanize = humanize; +proto$2.toISOString = toISOString$1; +proto$2.toString = toISOString$1; +proto$2.toJSON = toISOString$1; +proto$2.locale = locale; +proto$2.localeData = localeData; + +// Deprecations +proto$2.toIsoString = deprecate('toIsoString() is deprecated. Please use toISOString() instead (notice the capitals)', toISOString$1); +proto$2.lang = lang; + +// Side effect imports + +// FORMATTING + +addFormatToken('X', 0, 0, 'unix'); +addFormatToken('x', 0, 0, 'valueOf'); + +// PARSING + +addRegexToken('x', matchSigned); +addRegexToken('X', matchTimestamp); +addParseToken('X', function (input, array, config) { + config._d = new Date(parseFloat(input, 10) * 1000); +}); +addParseToken('x', function (input, array, config) { + config._d = new Date(toInt(input)); +}); + +// Side effect imports + +//! moment.js +//! version : 2.18.1 +//! authors : Tim Wood, Iskren Chernev, Moment.js contributors +//! license : MIT +//! momentjs.com + +hooks.version = '2.18.1'; + +setHookCallback(createLocal); + +hooks.fn = proto; +hooks.min = min; +hooks.max = max; +hooks.now = now; +hooks.utc = createUTC; +hooks.unix = createUnix; +hooks.months = listMonths; +hooks.isDate = isDate; +hooks.locale = getSetGlobalLocale; +hooks.invalid = createInvalid; +hooks.duration = createDuration; +hooks.isMoment = isMoment; +hooks.weekdays = listWeekdays; +hooks.parseZone = createInZone; +hooks.localeData = getLocale; +hooks.isDuration = isDuration; +hooks.monthsShort = listMonthsShort; +hooks.weekdaysMin = listWeekdaysMin; +hooks.defineLocale = defineLocale; +hooks.updateLocale = updateLocale; +hooks.locales = listLocales; +hooks.weekdaysShort = listWeekdaysShort; +hooks.normalizeUnits = normalizeUnits; +hooks.relativeTimeRounding = getSetRelativeTimeRounding; +hooks.relativeTimeThreshold = getSetRelativeTimeThreshold; +hooks.calendarFormat = getCalendarFormat; +hooks.prototype = proto; + +//! moment.js locale configuration +//! locale : Afrikaans [af] +//! author : Werner Mollentze : https://github.com/wernerm + +hooks.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 (input) { + return /^nm$/i.test(input); + }, + meridiem : function (hours, minutes, isLower) { + if (hours < 12) { + return isLower ? 'vm' : 'VM'; + } else { + return isLower ? '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', + 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 (number) { + return number + ((number === 1 || number === 8 || number >= 20) ? 'ste' : 'de'); // Thanks to Joris Röling : https://github.com/jjupiter + }, + week : { + dow : 1, // Maandag is die eerste dag van die week. + doy : 4 // Die week wat die 4de Januarie bevat is die eerste week van die jaar. + } +}); + +//! moment.js locale configuration +//! locale : Arabic (Algeria) [ar-dz] +//! author : Noureddine LOUAHEDJ : https://github.com/noureddineme + +hooks.defineLocale('ar-dz', { + months : 'جانفي_فيفري_مارس_أفريل_ماي_جوان_جويلية_أوت_سبتمبر_أكتوبر_نوفمبر_ديسمبر'.split('_'), + monthsShort : 'جانفي_فيفري_مارس_أفريل_ماي_جوان_جويلية_أوت_سبتمبر_أكتوبر_نوفمبر_ديسمبر'.split('_'), + weekdays : 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'), + weekdaysShort : 'احد_اثنين_ثلاثاء_اربعاء_خميس_جمعة_سبت'.split('_'), + weekdaysMin : 'أح_إث_ثلا_أر_خم_جم_سب'.split('_'), + weekdaysParseExact : true, + 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 : 'ثوان', + m : 'دقيقة', + mm : '%d دقائق', + h : 'ساعة', + hh : '%d ساعات', + d : 'يوم', + dd : '%d أيام', + M : 'شهر', + MM : '%d أشهر', + y : 'سنة', + yy : '%d سنوات' + }, + week : { + dow : 0, // Sunday is the first day of the week. + doy : 4 // The week that contains Jan 1st is the first week of the year. + } +}); + +//! moment.js locale configuration +//! locale : Arabic (Kuwait) [ar-kw] +//! author : Nusret Parlak: https://github.com/nusretparlak + +hooks.defineLocale('ar-kw', { + months : 'يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر'.split('_'), + monthsShort : 'يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر'.split('_'), + weekdays : 'الأحد_الإتنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'), + weekdaysShort : 'احد_اتنين_ثلاثاء_اربعاء_خميس_جمعة_سبت'.split('_'), + weekdaysMin : 'ح_ن_ث_ر_خ_ج_س'.split('_'), + weekdaysParseExact : true, + 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 : 'ثوان', + m : 'دقيقة', + mm : '%d دقائق', + h : 'ساعة', + hh : '%d ساعات', + d : 'يوم', + dd : '%d أيام', + M : 'شهر', + MM : '%d أشهر', + y : 'سنة', + yy : '%d سنوات' + }, + week : { + dow : 0, // Sunday is the first day of the week. + doy : 12 // The week that contains Jan 1st is the first week of the year. + } +}); + +//! moment.js locale configuration +//! locale : Arabic (Lybia) [ar-ly] +//! author : Ali Hmer: https://github.com/kikoanis + +var symbolMap = { + '1': '1', + '2': '2', + '3': '3', + '4': '4', + '5': '5', + '6': '6', + '7': '7', + '8': '8', + '9': '9', + '0': '0' +}; +var pluralForm = function (n) { + return n === 0 ? 0 : n === 1 ? 1 : n === 2 ? 2 : n % 100 >= 3 && n % 100 <= 10 ? 3 : n % 100 >= 11 ? 4 : 5; +}; +var plurals = { + s : ['أقل من ثانية', 'ثانية واحدة', ['ثانيتان', 'ثانيتين'], '%d ثوان', '%d ثانية', '%d ثانية'], + m : ['أقل من دقيقة', 'دقيقة واحدة', ['دقيقتان', 'دقيقتين'], '%d دقائق', '%d دقيقة', '%d دقيقة'], + h : ['أقل من ساعة', 'ساعة واحدة', ['ساعتان', 'ساعتين'], '%d ساعات', '%d ساعة', '%d ساعة'], + d : ['أقل من يوم', 'يوم واحد', ['يومان', 'يومين'], '%d أيام', '%d يومًا', '%d يوم'], + M : ['أقل من شهر', 'شهر واحد', ['شهران', 'شهرين'], '%d أشهر', '%d شهرا', '%d شهر'], + y : ['أقل من عام', 'عام واحد', ['عامان', 'عامين'], '%d أعوام', '%d عامًا', '%d عام'] +}; +var pluralize = function (u) { + return function (number, withoutSuffix, string, isFuture) { + var f = pluralForm(number), + str = plurals[u][pluralForm(number)]; + if (f === 2) { + str = str[withoutSuffix ? 0 : 1]; + } + return str.replace(/%d/i, number); + }; +}; +var months$1 = [ + 'يناير', + 'فبراير', + 'مارس', + 'أبريل', + 'مايو', + 'يونيو', + 'يوليو', + 'أغسطس', + 'سبتمبر', + 'أكتوبر', + 'نوفمبر', + 'ديسمبر' +]; + +hooks.defineLocale('ar-ly', { + months : months$1, + monthsShort : months$1, + weekdays : 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'), + weekdaysShort : 'أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت'.split('_'), + weekdaysMin : 'ح_ن_ث_ر_خ_ج_س'.split('_'), + weekdaysParseExact : true, + longDateFormat : { + LT : 'HH:mm', + LTS : 'HH:mm:ss', + L : 'D/\u200FM/\u200FYYYY', + LL : 'D MMMM YYYY', + LLL : 'D MMMM YYYY HH:mm', + LLLL : 'dddd D MMMM YYYY HH:mm' + }, + meridiemParse: /ص|م/, + isPM : function (input) { + return 'م' === input; + }, + meridiem : function (hour, minute, isLower) { + if (hour < 12) { + return 'ص'; + } else { + return 'م'; + } + }, + calendar : { + sameDay: '[اليوم عند الساعة] LT', + nextDay: '[غدًا عند الساعة] LT', + nextWeek: 'dddd [عند الساعة] LT', + lastDay: '[أمس عند الساعة] LT', + lastWeek: 'dddd [عند الساعة] LT', + sameElse: 'L' + }, + relativeTime : { + future : 'بعد %s', + past : 'منذ %s', + s : pluralize('s'), + m : pluralize('m'), + mm : pluralize('m'), + h : pluralize('h'), + hh : pluralize('h'), + d : pluralize('d'), + dd : pluralize('d'), + M : pluralize('M'), + MM : pluralize('M'), + y : pluralize('y'), + yy : pluralize('y') + }, + preparse: function (string) { + return string.replace(/\u200f/g, '').replace(/،/g, ','); + }, + postformat: function (string) { + return string.replace(/\d/g, function (match) { + return symbolMap[match]; + }).replace(/,/g, '،'); + }, + week : { + dow : 6, // Saturday is the first day of the week. + doy : 12 // The week that contains Jan 1st is the first week of the year. + } +}); + +//! moment.js locale configuration +//! locale : Arabic (Morocco) [ar-ma] +//! author : ElFadili Yassine : https://github.com/ElFadiliY +//! author : Abdel Said : https://github.com/abdelsaid + +hooks.defineLocale('ar-ma', { + months : 'يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر'.split('_'), + monthsShort : 'يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر'.split('_'), + weekdays : 'الأحد_الإتنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'), + weekdaysShort : 'احد_اتنين_ثلاثاء_اربعاء_خميس_جمعة_سبت'.split('_'), + weekdaysMin : 'ح_ن_ث_ر_خ_ج_س'.split('_'), + weekdaysParseExact : true, + 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 : 'ثوان', + m : 'دقيقة', + mm : '%d دقائق', + h : 'ساعة', + hh : '%d ساعات', + d : 'يوم', + dd : '%d أيام', + M : 'شهر', + MM : '%d أشهر', + y : 'سنة', + yy : '%d سنوات' + }, + week : { + dow : 6, // Saturday is the first day of the week. + doy : 12 // The week that contains Jan 1st is the first week of the year. + } +}); + +//! moment.js locale configuration +//! locale : Arabic (Saudi Arabia) [ar-sa] +//! author : Suhail Alkowaileet : https://github.com/xsoh + +var symbolMap$1 = { + '1': '١', + '2': '٢', + '3': '٣', + '4': '٤', + '5': '٥', + '6': '٦', + '7': '٧', + '8': '٨', + '9': '٩', + '0': '٠' +}; +var numberMap = { + '١': '1', + '٢': '2', + '٣': '3', + '٤': '4', + '٥': '5', + '٦': '6', + '٧': '7', + '٨': '8', + '٩': '9', + '٠': '0' +}; + +hooks.defineLocale('ar-sa', { + months : 'يناير_فبراير_مارس_أبريل_مايو_يونيو_يوليو_أغسطس_سبتمبر_أكتوبر_نوفمبر_ديسمبر'.split('_'), + monthsShort : 'يناير_فبراير_مارس_أبريل_مايو_يونيو_يوليو_أغسطس_سبتمبر_أكتوبر_نوفمبر_ديسمبر'.split('_'), + weekdays : 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'), + weekdaysShort : 'أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت'.split('_'), + weekdaysMin : 'ح_ن_ث_ر_خ_ج_س'.split('_'), + weekdaysParseExact : true, + 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 (input) { + return 'م' === input; + }, + meridiem : function (hour, minute, isLower) { + if (hour < 12) { + return 'ص'; + } else { + return 'م'; + } + }, + calendar : { + sameDay: '[اليوم على الساعة] LT', + nextDay: '[غدا على الساعة] LT', + nextWeek: 'dddd [على الساعة] LT', + lastDay: '[أمس على الساعة] 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 سنوات' + }, + preparse: function (string) { + return string.replace(/[١٢٣٤٥٦٧٨٩٠]/g, function (match) { + return numberMap[match]; + }).replace(/،/g, ','); + }, + postformat: function (string) { + return string.replace(/\d/g, function (match) { + return symbolMap$1[match]; + }).replace(/,/g, '،'); + }, + week : { + dow : 0, // Sunday is the first day of the week. + doy : 6 // The week that contains Jan 1st is the first week of the year. + } +}); + +//! moment.js locale configuration +//! locale : Arabic (Tunisia) [ar-tn] +//! author : Nader Toukabri : https://github.com/naderio + +hooks.defineLocale('ar-tn', { + months: 'جانفي_فيفري_مارس_أفريل_ماي_جوان_جويلية_أوت_سبتمبر_أكتوبر_نوفمبر_ديسمبر'.split('_'), + monthsShort: 'جانفي_فيفري_مارس_أفريل_ماي_جوان_جويلية_أوت_سبتمبر_أكتوبر_نوفمبر_ديسمبر'.split('_'), + weekdays: 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'), + weekdaysShort: 'أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت'.split('_'), + weekdaysMin: 'ح_ن_ث_ر_خ_ج_س'.split('_'), + weekdaysParseExact : true, + 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: 'ثوان', + m: 'دقيقة', + mm: '%d دقائق', + h: 'ساعة', + hh: '%d ساعات', + d: 'يوم', + dd: '%d أيام', + M: 'شهر', + MM: '%d أشهر', + y: 'سنة', + yy: '%d سنوات' + }, + week: { + dow: 1, // Monday is the first day of the week. + doy: 4 // The week that contains Jan 4th is the first week of the year. + } +}); + +//! moment.js locale configuration +//! locale : Arabic [ar] +//! author : Abdel Said: https://github.com/abdelsaid +//! author : Ahmed Elkhatib +//! author : forabi https://github.com/forabi + +var symbolMap$2 = { + '1': '١', + '2': '٢', + '3': '٣', + '4': '٤', + '5': '٥', + '6': '٦', + '7': '٧', + '8': '٨', + '9': '٩', + '0': '٠' +}; +var numberMap$1 = { + '١': '1', + '٢': '2', + '٣': '3', + '٤': '4', + '٥': '5', + '٦': '6', + '٧': '7', + '٨': '8', + '٩': '9', + '٠': '0' +}; +var pluralForm$1 = function (n) { + return n === 0 ? 0 : n === 1 ? 1 : n === 2 ? 2 : n % 100 >= 3 && n % 100 <= 10 ? 3 : n % 100 >= 11 ? 4 : 5; +}; +var plurals$1 = { + s : ['أقل من ثانية', 'ثانية واحدة', ['ثانيتان', 'ثانيتين'], '%d ثوان', '%d ثانية', '%d ثانية'], + m : ['أقل من دقيقة', 'دقيقة واحدة', ['دقيقتان', 'دقيقتين'], '%d دقائق', '%d دقيقة', '%d دقيقة'], + h : ['أقل من ساعة', 'ساعة واحدة', ['ساعتان', 'ساعتين'], '%d ساعات', '%d ساعة', '%d ساعة'], + d : ['أقل من يوم', 'يوم واحد', ['يومان', 'يومين'], '%d أيام', '%d يومًا', '%d يوم'], + M : ['أقل من شهر', 'شهر واحد', ['شهران', 'شهرين'], '%d أشهر', '%d شهرا', '%d شهر'], + y : ['أقل من عام', 'عام واحد', ['عامان', 'عامين'], '%d أعوام', '%d عامًا', '%d عام'] +}; +var pluralize$1 = function (u) { + return function (number, withoutSuffix, string, isFuture) { + var f = pluralForm$1(number), + str = plurals$1[u][pluralForm$1(number)]; + if (f === 2) { + str = str[withoutSuffix ? 0 : 1]; + } + return str.replace(/%d/i, number); + }; +}; +var months$2 = [ + 'كانون الثاني يناير', + 'شباط فبراير', + 'آذار مارس', + 'نيسان أبريل', + 'أيار مايو', + 'حزيران يونيو', + 'تموز يوليو', + 'آب أغسطس', + 'أيلول سبتمبر', + 'تشرين الأول أكتوبر', + 'تشرين الثاني نوفمبر', + 'كانون الأول ديسمبر' +]; + +hooks.defineLocale('ar', { + months : months$2, + monthsShort : months$2, + weekdays : 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'), + weekdaysShort : 'أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت'.split('_'), + weekdaysMin : 'ح_ن_ث_ر_خ_ج_س'.split('_'), + weekdaysParseExact : true, + longDateFormat : { + LT : 'HH:mm', + LTS : 'HH:mm:ss', + L : 'D/\u200FM/\u200FYYYY', + LL : 'D MMMM YYYY', + LLL : 'D MMMM YYYY HH:mm', + LLLL : 'dddd D MMMM YYYY HH:mm' + }, + meridiemParse: /ص|م/, + isPM : function (input) { + return 'م' === input; + }, + meridiem : function (hour, minute, isLower) { + if (hour < 12) { + return 'ص'; + } else { + return 'م'; + } + }, + calendar : { + sameDay: '[اليوم عند الساعة] LT', + nextDay: '[غدًا عند الساعة] LT', + nextWeek: 'dddd [عند الساعة] LT', + lastDay: '[أمس عند الساعة] LT', + lastWeek: 'dddd [عند الساعة] LT', + sameElse: 'L' + }, + relativeTime : { + future : 'بعد %s', + past : 'منذ %s', + s : pluralize$1('s'), + m : pluralize$1('m'), + mm : pluralize$1('m'), + h : pluralize$1('h'), + hh : pluralize$1('h'), + d : pluralize$1('d'), + dd : pluralize$1('d'), + M : pluralize$1('M'), + MM : pluralize$1('M'), + y : pluralize$1('y'), + yy : pluralize$1('y') + }, + preparse: function (string) { + return string.replace(/\u200f/g, '').replace(/[١٢٣٤٥٦٧٨٩٠]/g, function (match) { + return numberMap$1[match]; + }).replace(/،/g, ','); + }, + postformat: function (string) { + return string.replace(/\d/g, function (match) { + return symbolMap$2[match]; + }).replace(/,/g, '،'); + }, + week : { + dow : 6, // Saturday is the first day of the week. + doy : 12 // The week that contains Jan 1st is the first week of the year. + } +}); + +//! moment.js locale configuration +//! locale : Azerbaijani [az] +//! author : topchiyev : https://github.com/topchiyev + +var suffixes = { + 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ı' +}; + +hooks.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 : true, + 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 : 'birneçə saniyyə', + 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 (input) { + return /^(gündüz|axşam)$/.test(input); + }, + meridiem : function (hour, minute, isLower) { + if (hour < 4) { + return 'gecə'; + } else if (hour < 12) { + return 'səhər'; + } else if (hour < 17) { + return 'gündüz'; + } else { + return 'axşam'; + } + }, + dayOfMonthOrdinalParse: /\d{1,2}-(ıncı|inci|nci|üncü|ncı|uncu)/, + ordinal : function (number) { + if (number === 0) { // special case for zero + return number + '-ıncı'; + } + var a = number % 10, + b = number % 100 - a, + c = number >= 100 ? 100 : null; + return number + (suffixes[a] || suffixes[b] || suffixes[c]); + }, + week : { + dow : 1, // Monday is the first day of the week. + doy : 7 // The week that contains Jan 1st is the first week of the year. + } +}); + +//! moment.js locale configuration +//! locale : Belarusian [be] +//! author : Dmitry Demidov : https://github.com/demidov91 +//! author: Praleska: http://praleska.pro/ +//! Author : Menelion Elensúle : https://github.com/Oire + +function plural(word, num) { + var forms = word.split('_'); + return num % 10 === 1 && num % 100 !== 11 ? forms[0] : (num % 10 >= 2 && num % 10 <= 4 && (num % 100 < 10 || num % 100 >= 20) ? forms[1] : forms[2]); +} +function relativeTimeWithPlural(number, withoutSuffix, key) { + var format = { + 'mm': withoutSuffix ? 'хвіліна_хвіліны_хвілін' : 'хвіліну_хвіліны_хвілін', + 'hh': withoutSuffix ? 'гадзіна_гадзіны_гадзін' : 'гадзіну_гадзіны_гадзін', + 'dd': 'дзень_дні_дзён', + 'MM': 'месяц_месяцы_месяцаў', + 'yy': 'год_гады_гадоў' + }; + if (key === 'm') { + return withoutSuffix ? 'хвіліна' : 'хвіліну'; + } + else if (key === 'h') { + return withoutSuffix ? 'гадзіна' : 'гадзіну'; + } + else { + return number + ' ' + plural(format[key], +number); + } +} + +hooks.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 : relativeTimeWithPlural, + mm : relativeTimeWithPlural, + h : relativeTimeWithPlural, + hh : relativeTimeWithPlural, + d : 'дзень', + dd : relativeTimeWithPlural, + M : 'месяц', + MM : relativeTimeWithPlural, + y : 'год', + yy : relativeTimeWithPlural + }, + meridiemParse: /ночы|раніцы|дня|вечара/, + isPM : function (input) { + return /^(дня|вечара)$/.test(input); + }, + meridiem : function (hour, minute, isLower) { + if (hour < 4) { + return 'ночы'; + } else if (hour < 12) { + return 'раніцы'; + } else if (hour < 17) { + return 'дня'; + } else { + return 'вечара'; + } + }, + dayOfMonthOrdinalParse: /\d{1,2}-(і|ы|га)/, + ordinal: function (number, period) { + switch (period) { + case 'M': + case 'd': + case 'DDD': + case 'w': + case 'W': + return (number % 10 === 2 || number % 10 === 3) && (number % 100 !== 12 && number % 100 !== 13) ? number + '-і' : number + '-ы'; + case 'D': + return number + '-га'; + default: + return number; + } + }, + week : { + dow : 1, // Monday is the first day of the week. + doy : 7 // The week that contains Jan 1st is the first week of the year. + } +}); + +//! moment.js locale configuration +//! locale : Bulgarian [bg] +//! author : Krasen Borisov : https://github.com/kraz + +hooks.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 : 'няколко секунди', + m : 'минута', + mm : '%d минути', + h : 'час', + hh : '%d часа', + d : 'ден', + dd : '%d дни', + M : 'месец', + MM : '%d месеца', + y : 'година', + yy : '%d години' + }, + dayOfMonthOrdinalParse: /\d{1,2}-(ев|ен|ти|ви|ри|ми)/, + ordinal : function (number) { + var lastDigit = number % 10, + last2Digits = number % 100; + if (number === 0) { + return number + '-ев'; + } else if (last2Digits === 0) { + return number + '-ен'; + } else if (last2Digits > 10 && last2Digits < 20) { + return number + '-ти'; + } else if (lastDigit === 1) { + return number + '-ви'; + } else if (lastDigit === 2) { + return number + '-ри'; + } else if (lastDigit === 7 || lastDigit === 8) { + return number + '-ми'; + } else { + return number + '-ти'; + } + }, + week : { + dow : 1, // Monday is the first day of the week. + doy : 7 // The week that contains Jan 1st is the first week of the year. + } +}); + +//! moment.js locale configuration +//! locale : Bengali [bn] +//! author : Kaushik Gandhi : https://github.com/kaushikgandhi + +var symbolMap$3 = { + '1': '১', + '2': '২', + '3': '৩', + '4': '৪', + '5': '৫', + '6': '৬', + '7': '৭', + '8': '৮', + '9': '৯', + '0': '০' +}; +var numberMap$2 = { + '১': '1', + '২': '2', + '৩': '3', + '৪': '4', + '৫': '5', + '৬': '6', + '৭': '7', + '৮': '8', + '৯': '9', + '০': '0' +}; + +hooks.defineLocale('bn', { + months : 'জানুয়ারী_ফেব্রুয়ারি_মার্চ_এপ্রিল_মে_জুন_জুলাই_আগস্ট_সেপ্টেম্বর_অক্টোবর_নভেম্বর_ডিসেম্বর'.split('_'), + monthsShort : 'জানু_ফেব_মার্চ_এপ্র_মে_জুন_জুল_আগ_সেপ্ট_অক্টো_নভে_ডিসে'.split('_'), + 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 : 'কয়েক সেকেন্ড', + m : 'এক মিনিট', + mm : '%d মিনিট', + h : 'এক ঘন্টা', + hh : '%d ঘন্টা', + d : 'এক দিন', + dd : '%d দিন', + M : 'এক মাস', + MM : '%d মাস', + y : 'এক বছর', + yy : '%d বছর' + }, + preparse: function (string) { + return string.replace(/[১২৩৪৫৬৭৮৯০]/g, function (match) { + return numberMap$2[match]; + }); + }, + postformat: function (string) { + return string.replace(/\d/g, function (match) { + return symbolMap$3[match]; + }); + }, + meridiemParse: /রাত|সকাল|দুপুর|বিকাল|রাত/, + meridiemHour : function (hour, meridiem) { + if (hour === 12) { + hour = 0; + } + if ((meridiem === 'রাত' && hour >= 4) || + (meridiem === 'দুপুর' && hour < 5) || + meridiem === 'বিকাল') { + return hour + 12; + } else { + return hour; + } + }, + meridiem : function (hour, minute, isLower) { + if (hour < 4) { + return 'রাত'; + } else if (hour < 10) { + return 'সকাল'; + } else if (hour < 17) { + return 'দুপুর'; + } else if (hour < 20) { + return 'বিকাল'; + } else { + return 'রাত'; + } + }, + week : { + dow : 0, // Sunday is the first day of the week. + doy : 6 // The week that contains Jan 1st is the first week of the year. + } +}); + +//! moment.js locale configuration +//! locale : Tibetan [bo] +//! author : Thupten N. Chakrishar : https://github.com/vajradog + +var symbolMap$4 = { + '1': '༡', + '2': '༢', + '3': '༣', + '4': '༤', + '5': '༥', + '6': '༦', + '7': '༧', + '8': '༨', + '9': '༩', + '0': '༠' +}; +var numberMap$3 = { + '༡': '1', + '༢': '2', + '༣': '3', + '༤': '4', + '༥': '5', + '༦': '6', + '༧': '7', + '༨': '8', + '༩': '9', + '༠': '0' +}; + +hooks.defineLocale('bo', { + months : 'ཟླ་བ་དང་པོ_ཟླ་བ་གཉིས་པ_ཟླ་བ་གསུམ་པ_ཟླ་བ་བཞི་པ_ཟླ་བ་ལྔ་པ_ཟླ་བ་དྲུག་པ_ཟླ་བ་བདུན་པ_ཟླ་བ་བརྒྱད་པ_ཟླ་བ་དགུ་པ_ཟླ་བ་བཅུ་པ_ཟླ་བ་བཅུ་གཅིག་པ_ཟླ་བ་བཅུ་གཉིས་པ'.split('_'), + monthsShort : 'ཟླ་བ་དང་པོ_ཟླ་བ་གཉིས་པ_ཟླ་བ་གསུམ་པ_ཟླ་བ་བཞི་པ_ཟླ་བ་ལྔ་པ_ཟླ་བ་དྲུག་པ_ཟླ་བ་བདུན་པ_ཟླ་བ་བརྒྱད་པ_ཟླ་བ་དགུ་པ_ཟླ་བ་བཅུ་པ_ཟླ་བ་བཅུ་གཅིག་པ_ཟླ་བ་བཅུ་གཉིས་པ'.split('_'), + 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 : '[བདུན་ཕྲག་རྗེས་མ], LT', + lastDay : '[ཁ་སང] 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 ལོ' + }, + preparse: function (string) { + return string.replace(/[༡༢༣༤༥༦༧༨༩༠]/g, function (match) { + return numberMap$3[match]; + }); + }, + postformat: function (string) { + return string.replace(/\d/g, function (match) { + return symbolMap$4[match]; + }); + }, + meridiemParse: /མཚན་མོ|ཞོགས་ཀས|ཉིན་གུང|དགོང་དག|མཚན་མོ/, + meridiemHour : function (hour, meridiem) { + if (hour === 12) { + hour = 0; + } + if ((meridiem === 'མཚན་མོ' && hour >= 4) || + (meridiem === 'ཉིན་གུང' && hour < 5) || + meridiem === 'དགོང་དག') { + return hour + 12; + } else { + return hour; + } + }, + meridiem : function (hour, minute, isLower) { + if (hour < 4) { + return 'མཚན་མོ'; + } else if (hour < 10) { + return 'ཞོགས་ཀས'; + } else if (hour < 17) { + return 'ཉིན་གུང'; + } else if (hour < 20) { + return 'དགོང་དག'; + } else { + return 'མཚན་མོ'; + } + }, + week : { + dow : 0, // Sunday is the first day of the week. + doy : 6 // The week that contains Jan 1st is the first week of the year. + } +}); + +//! moment.js locale configuration +//! locale : Breton [br] +//! author : Jean-Baptiste Le Duigou : https://github.com/jbleduigou + +function relativeTimeWithMutation(number, withoutSuffix, key) { + var format = { + 'mm': 'munutenn', + 'MM': 'miz', + 'dd': 'devezh' + }; + return number + ' ' + mutation(format[key], number); +} +function specialMutationForYears(number) { + switch (lastNumber(number)) { + case 1: + case 3: + case 4: + case 5: + case 9: + return number + ' bloaz'; + default: + return number + ' vloaz'; + } +} +function lastNumber(number) { + if (number > 9) { + return lastNumber(number % 10); + } + return number; +} +function mutation(text, number) { + if (number === 2) { + return softMutation(text); + } + return text; +} +function softMutation(text) { + var mutationTable = { + 'm': 'v', + 'b': 'v', + 'd': 'z' + }; + if (mutationTable[text.charAt(0)] === undefined) { + return text; + } + return mutationTable[text.charAt(0)] + text.substring(1); +} + +hooks.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('_'), + weekdaysParseExact : true, + longDateFormat : { + LT : 'h[e]mm A', + LTS : 'h[e]mm:ss A', + L : 'DD/MM/YYYY', + LL : 'D [a viz] MMMM YYYY', + LLL : 'D [a viz] MMMM YYYY h[e]mm A', + LLLL : 'dddd, D [a viz] MMMM YYYY h[e]mm A' + }, + 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ù', + m : 'ur vunutenn', + mm : relativeTimeWithMutation, + h : 'un eur', + hh : '%d eur', + d : 'un devezh', + dd : relativeTimeWithMutation, + M : 'ur miz', + MM : relativeTimeWithMutation, + y : 'ur bloaz', + yy : specialMutationForYears + }, + dayOfMonthOrdinalParse: /\d{1,2}(añ|vet)/, + ordinal : function (number) { + var output = (number === 1) ? 'añ' : 'vet'; + return number + output; + }, + week : { + dow : 1, // Monday is the first day of the week. + doy : 4 // The week that contains Jan 4th is the first week of the year. + } +}); + +//! moment.js locale configuration +//! locale : Bosnian [bs] +//! author : Nedim Cholich : https://github.com/frontyard +//! based on (hr) translation by Bojan Marković + +function translate(number, withoutSuffix, key) { + var result = number + ' '; + switch (key) { + case 'm': + return withoutSuffix ? 'jedna minuta' : 'jedne minute'; + case 'mm': + if (number === 1) { + result += 'minuta'; + } else if (number === 2 || number === 3 || number === 4) { + result += 'minute'; + } else { + result += 'minuta'; + } + return result; + case 'h': + return withoutSuffix ? 'jedan sat' : 'jednog sata'; + case 'hh': + if (number === 1) { + result += 'sat'; + } else if (number === 2 || number === 3 || number === 4) { + result += 'sata'; + } else { + result += 'sati'; + } + return result; + case 'dd': + if (number === 1) { + result += 'dan'; + } else { + result += 'dana'; + } + return result; + case 'MM': + if (number === 1) { + result += 'mjesec'; + } else if (number === 2 || number === 3 || number === 4) { + result += 'mjeseca'; + } else { + result += 'mjeseci'; + } + return result; + case 'yy': + if (number === 1) { + result += 'godina'; + } else if (number === 2 || number === 3 || number === 4) { + result += 'godine'; + } else { + result += 'godina'; + } + return result; + } +} + +hooks.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: true, + 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 : true, + 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', + m : translate, + mm : translate, + h : translate, + hh : translate, + d : 'dan', + dd : translate, + M : 'mjesec', + MM : translate, + y : 'godinu', + yy : translate + }, + dayOfMonthOrdinalParse: /\d{1,2}\./, + ordinal : '%d.', + week : { + dow : 1, // Monday is the first day of the week. + doy : 7 // The week that contains Jan 1st is the first week of the year. + } +}); + +//! moment.js locale configuration +//! locale : Catalan [ca] +//! author : Juan G. Hurtado : https://github.com/juanghurtado + +hooks.defineLocale('ca', { + months : { + standalone: 'gener_febrer_març_abril_maig_juny_juliol_agost_setembre_octubre_novembre_desembre'.split('_'), + format: 'de gener_de febrer_de març_d\'abril_de maig_de juny_de juliol_d\'agost_de setembre_d\'octubre_de novembre_de desembre'.split('_'), + isFormat: /D[oD]?(\s)+MMMM/ + }, + monthsShort : 'gen._febr._març_abr._maig_juny_jul._ag._set._oct._nov._des.'.split('_'), + monthsParseExact : true, + weekdays : 'diumenge_dilluns_dimarts_dimecres_dijous_divendres_dissabte'.split('_'), + weekdaysShort : 'dg._dl._dt._dc._dj._dv._ds.'.split('_'), + weekdaysMin : 'Dg_Dl_Dt_Dc_Dj_Dv_Ds'.split('_'), + weekdaysParseExact : true, + longDateFormat : { + LT : 'H:mm', + LTS : 'H:mm:ss', + L : 'DD/MM/YYYY', + LL : '[el] D MMMM [de] YYYY', + ll : 'D MMM YYYY', + LLL : '[el] D MMMM [de] YYYY [a les] H:mm', + lll : 'D MMM YYYY, H:mm', + LLLL : '[el] dddd D MMMM [de] YYYY [a les] H:mm', + llll : 'ddd D MMM YYYY, H:mm' + }, + calendar : { + sameDay : function () { + return '[avui a ' + ((this.hours() !== 1) ? 'les' : 'la') + '] LT'; + }, + nextDay : function () { + return '[demà a ' + ((this.hours() !== 1) ? 'les' : 'la') + '] LT'; + }, + nextWeek : function () { + return 'dddd [a ' + ((this.hours() !== 1) ? 'les' : 'la') + '] LT'; + }, + lastDay : function () { + return '[ahir a ' + ((this.hours() !== 1) ? 'les' : 'la') + '] LT'; + }, + lastWeek : function () { + return '[el] dddd [passat a ' + ((this.hours() !== 1) ? 'les' : 'la') + '] LT'; + }, + sameElse : 'L' + }, + relativeTime : { + future : 'd\'aquí %s', + past : 'fa %s', + s : 'uns segons', + m : 'un minut', + mm : '%d minuts', + h : 'una hora', + hh : '%d hores', + d : 'un dia', + dd : '%d dies', + M : 'un mes', + MM : '%d mesos', + y : 'un any', + yy : '%d anys' + }, + dayOfMonthOrdinalParse: /\d{1,2}(r|n|t|è|a)/, + ordinal : function (number, period) { + var output = (number === 1) ? 'r' : + (number === 2) ? 'n' : + (number === 3) ? 'r' : + (number === 4) ? 't' : 'è'; + if (period === 'w' || period === 'W') { + output = 'a'; + } + return number + output; + }, + week : { + dow : 1, // Monday is the first day of the week. + doy : 4 // The week that contains Jan 4th is the first week of the year. + } +}); + +//! moment.js locale configuration +//! locale : Czech [cs] +//! author : petrbela : https://github.com/petrbela + +var months$3 = 'leden_únor_březen_duben_květen_červen_červenec_srpen_září_říjen_listopad_prosinec'.split('_'); +var monthsShort = 'led_úno_bře_dub_kvě_čvn_čvc_srp_zář_říj_lis_pro'.split('_'); +function plural$1(n) { + return (n > 1) && (n < 5) && (~~(n / 10) !== 1); +} +function translate$1(number, withoutSuffix, key, isFuture) { + var result = number + ' '; + switch (key) { + case 's': // a few seconds / in a few seconds / a few seconds ago + return (withoutSuffix || isFuture) ? 'pár sekund' : 'pár sekundami'; + case 'm': // a minute / in a minute / a minute ago + return withoutSuffix ? 'minuta' : (isFuture ? 'minutu' : 'minutou'); + case 'mm': // 9 minutes / in 9 minutes / 9 minutes ago + if (withoutSuffix || isFuture) { + return result + (plural$1(number) ? 'minuty' : 'minut'); + } else { + return result + 'minutami'; + } + break; + case 'h': // an hour / in an hour / an hour ago + return withoutSuffix ? 'hodina' : (isFuture ? 'hodinu' : 'hodinou'); + case 'hh': // 9 hours / in 9 hours / 9 hours ago + if (withoutSuffix || isFuture) { + return result + (plural$1(number) ? 'hodiny' : 'hodin'); + } else { + return result + 'hodinami'; + } + break; + case 'd': // a day / in a day / a day ago + return (withoutSuffix || isFuture) ? 'den' : 'dnem'; + case 'dd': // 9 days / in 9 days / 9 days ago + if (withoutSuffix || isFuture) { + return result + (plural$1(number) ? 'dny' : 'dní'); + } else { + return result + 'dny'; + } + break; + case 'M': // a month / in a month / a month ago + return (withoutSuffix || isFuture) ? 'měsíc' : 'měsícem'; + case 'MM': // 9 months / in 9 months / 9 months ago + if (withoutSuffix || isFuture) { + return result + (plural$1(number) ? 'měsíce' : 'měsíců'); + } else { + return result + 'měsíci'; + } + break; + case 'y': // a year / in a year / a year ago + return (withoutSuffix || isFuture) ? 'rok' : 'rokem'; + case 'yy': // 9 years / in 9 years / 9 years ago + if (withoutSuffix || isFuture) { + return result + (plural$1(number) ? 'roky' : 'let'); + } else { + return result + 'lety'; + } + break; + } +} + +hooks.defineLocale('cs', { + months : months$3, + monthsShort : monthsShort, + monthsParse : (function (months, monthsShort) { + var i, _monthsParse = []; + for (i = 0; i < 12; i++) { + // use custom parser to solve problem with July (červenec) + _monthsParse[i] = new RegExp('^' + months[i] + '$|^' + monthsShort[i] + '$', 'i'); + } + return _monthsParse; + }(months$3, monthsShort)), + shortMonthsParse : (function (monthsShort) { + var i, _shortMonthsParse = []; + for (i = 0; i < 12; i++) { + _shortMonthsParse[i] = new RegExp('^' + monthsShort[i] + '$', 'i'); + } + return _shortMonthsParse; + }(monthsShort)), + longMonthsParse : (function (months) { + var i, _longMonthsParse = []; + for (i = 0; i < 12; i++) { + _longMonthsParse[i] = new RegExp('^' + months[i] + '$', 'i'); + } + return _longMonthsParse; + }(months$3)), + 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 : translate$1, + m : translate$1, + mm : translate$1, + h : translate$1, + hh : translate$1, + d : translate$1, + dd : translate$1, + M : translate$1, + MM : translate$1, + y : translate$1, + yy : translate$1 + }, + dayOfMonthOrdinalParse : /\d{1,2}\./, + ordinal : '%d.', + week : { + dow : 1, // Monday is the first day of the week. + doy : 4 // The week that contains Jan 4th is the first week of the year. + } +}); + +//! moment.js locale configuration +//! locale : Chuvash [cv] +//! author : Anatoly Mironov : https://github.com/mirontoli + +hooks.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 (output) { + var affix = /сехет$/i.exec(output) ? 'рен' : /ҫул$/i.exec(output) ? 'тан' : 'ран'; + return output + affix; + }, + past : '%s каялла', + s : 'пӗр-ик ҫеккунт', + m : 'пӗр минут', + mm : '%d минут', + h : 'пӗр сехет', + hh : '%d сехет', + d : 'пӗр кун', + dd : '%d кун', + M : 'пӗр уйӑх', + MM : '%d уйӑх', + y : 'пӗр ҫул', + yy : '%d ҫул' + }, + dayOfMonthOrdinalParse: /\d{1,2}-мӗш/, + ordinal : '%d-мӗш', + week : { + dow : 1, // Monday is the first day of the week. + doy : 7 // The week that contains Jan 1st is the first week of the year. + } +}); + +//! moment.js locale configuration +//! locale : Welsh [cy] +//! author : Robert Allen : https://github.com/robgallen +//! author : https://github.com/ryangreaves + +hooks.defineLocale('cy', { + months: 'Ionawr_Chwefror_Mawrth_Ebrill_Mai_Mehefin_Gorffennaf_Awst_Medi_Hydref_Tachwedd_Rhagfyr'.split('_'), + monthsShort: 'Ion_Chwe_Maw_Ebr_Mai_Meh_Gor_Aws_Med_Hyd_Tach_Rhag'.split('_'), + weekdays: 'Dydd Sul_Dydd Llun_Dydd Mawrth_Dydd Mercher_Dydd Iau_Dydd Gwener_Dydd Sadwrn'.split('_'), + weekdaysShort: 'Sul_Llun_Maw_Mer_Iau_Gwe_Sad'.split('_'), + weekdaysMin: 'Su_Ll_Ma_Me_Ia_Gw_Sa'.split('_'), + weekdaysParseExact : true, + // time formats are the same as en-gb + 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: '[Heddiw am] LT', + nextDay: '[Yfory am] LT', + nextWeek: 'dddd [am] LT', + lastDay: '[Ddoe am] LT', + lastWeek: 'dddd [diwethaf am] LT', + sameElse: 'L' + }, + relativeTime: { + future: 'mewn %s', + past: '%s yn ôl', + s: 'ychydig eiliadau', + m: 'munud', + mm: '%d munud', + h: 'awr', + hh: '%d awr', + d: 'diwrnod', + dd: '%d diwrnod', + M: 'mis', + MM: '%d mis', + y: 'blwyddyn', + yy: '%d flynedd' + }, + dayOfMonthOrdinalParse: /\d{1,2}(fed|ain|af|il|ydd|ed|eg)/, + // traditional ordinal numbers above 31 are not commonly used in colloquial Welsh + ordinal: function (number) { + var b = number, + output = '', + lookup = [ + '', 'af', 'il', 'ydd', 'ydd', 'ed', 'ed', 'ed', 'fed', 'fed', 'fed', // 1af to 10fed + 'eg', 'fed', 'eg', 'eg', 'fed', 'eg', 'eg', 'fed', 'eg', 'fed' // 11eg to 20fed + ]; + if (b > 20) { + if (b === 40 || b === 50 || b === 60 || b === 80 || b === 100) { + output = 'fed'; // not 30ain, 70ain or 90ain + } else { + output = 'ain'; + } + } else if (b > 0) { + output = lookup[b]; + } + return number + output; + }, + week : { + dow : 1, // Monday is the first day of the week. + doy : 4 // The week that contains Jan 4th is the first week of the year. + } +}); + +//! moment.js locale configuration +//! locale : Danish [da] +//! author : Ulrik Nielsen : https://github.com/mrbase + +hooks.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', + 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, // Monday is the first day of the week. + doy : 4 // The week that contains Jan 4th is the first week of the year. + } +}); + +//! moment.js locale configuration +//! locale : German (Austria) [de-at] +//! author : lluchs : https://github.com/lluchs +//! author: Menelion Elensúle: https://github.com/Oire +//! author : Martin Groller : https://github.com/MadMG +//! author : Mikolaj Dadela : https://github.com/mik01aj + +function processRelativeTime(number, withoutSuffix, key, isFuture) { + var format = { + 'm': ['eine Minute', 'einer Minute'], + 'h': ['eine Stunde', 'einer Stunde'], + 'd': ['ein Tag', 'einem Tag'], + 'dd': [number + ' Tage', number + ' Tagen'], + 'M': ['ein Monat', 'einem Monat'], + 'MM': [number + ' Monate', number + ' Monaten'], + 'y': ['ein Jahr', 'einem Jahr'], + 'yy': [number + ' Jahre', number + ' Jahren'] + }; + return withoutSuffix ? format[key][0] : format[key][1]; +} + +hooks.defineLocale('de-at', { + months : 'Jänner_Februar_März_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember'.split('_'), + monthsShort : 'Jän._Febr._Mrz._Apr._Mai_Jun._Jul._Aug._Sept._Okt._Nov._Dez.'.split('_'), + monthsParseExact : true, + weekdays : 'Sonntag_Montag_Dienstag_Mittwoch_Donnerstag_Freitag_Samstag'.split('_'), + weekdaysShort : 'So._Mo._Di._Mi._Do._Fr._Sa.'.split('_'), + weekdaysMin : 'So_Mo_Di_Mi_Do_Fr_Sa'.split('_'), + weekdaysParseExact : true, + 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: '[heute um] LT [Uhr]', + sameElse: 'L', + nextDay: '[morgen um] LT [Uhr]', + nextWeek: 'dddd [um] LT [Uhr]', + lastDay: '[gestern um] LT [Uhr]', + lastWeek: '[letzten] dddd [um] LT [Uhr]' + }, + relativeTime : { + future : 'in %s', + past : 'vor %s', + s : 'ein paar Sekunden', + m : processRelativeTime, + mm : '%d Minuten', + h : processRelativeTime, + hh : '%d Stunden', + d : processRelativeTime, + dd : processRelativeTime, + M : processRelativeTime, + MM : processRelativeTime, + y : processRelativeTime, + yy : processRelativeTime + }, + dayOfMonthOrdinalParse: /\d{1,2}\./, + ordinal : '%d.', + week : { + dow : 1, // Monday is the first day of the week. + doy : 4 // The week that contains Jan 4th is the first week of the year. + } +}); + +//! moment.js locale configuration +//! locale : German (Switzerland) [de-ch] +//! author : sschueller : https://github.com/sschueller + +// based on: https://www.bk.admin.ch/dokumentation/sprachen/04915/05016/index.html?lang=de# + +function processRelativeTime$1(number, withoutSuffix, key, isFuture) { + var format = { + 'm': ['eine Minute', 'einer Minute'], + 'h': ['eine Stunde', 'einer Stunde'], + 'd': ['ein Tag', 'einem Tag'], + 'dd': [number + ' Tage', number + ' Tagen'], + 'M': ['ein Monat', 'einem Monat'], + 'MM': [number + ' Monate', number + ' Monaten'], + 'y': ['ein Jahr', 'einem Jahr'], + 'yy': [number + ' Jahre', number + ' Jahren'] + }; + return withoutSuffix ? format[key][0] : format[key][1]; +} + +hooks.defineLocale('de-ch', { + months : 'Januar_Februar_März_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember'.split('_'), + monthsShort : 'Jan._Febr._März_April_Mai_Juni_Juli_Aug._Sept._Okt._Nov._Dez.'.split('_'), + monthsParseExact : true, + weekdays : 'Sonntag_Montag_Dienstag_Mittwoch_Donnerstag_Freitag_Samstag'.split('_'), + weekdaysShort : 'So_Mo_Di_Mi_Do_Fr_Sa'.split('_'), + weekdaysMin : 'So_Mo_Di_Mi_Do_Fr_Sa'.split('_'), + weekdaysParseExact : true, + 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: '[heute um] LT [Uhr]', + sameElse: 'L', + nextDay: '[morgen um] LT [Uhr]', + nextWeek: 'dddd [um] LT [Uhr]', + lastDay: '[gestern um] LT [Uhr]', + lastWeek: '[letzten] dddd [um] LT [Uhr]' + }, + relativeTime : { + future : 'in %s', + past : 'vor %s', + s : 'ein paar Sekunden', + m : processRelativeTime$1, + mm : '%d Minuten', + h : processRelativeTime$1, + hh : '%d Stunden', + d : processRelativeTime$1, + dd : processRelativeTime$1, + M : processRelativeTime$1, + MM : processRelativeTime$1, + y : processRelativeTime$1, + yy : processRelativeTime$1 + }, + dayOfMonthOrdinalParse: /\d{1,2}\./, + ordinal : '%d.', + week : { + dow : 1, // Monday is the first day of the week. + doy : 4 // The week that contains Jan 4th is the first week of the year. + } +}); + +//! moment.js locale configuration +//! locale : German [de] +//! author : lluchs : https://github.com/lluchs +//! author: Menelion Elensúle: https://github.com/Oire +//! author : Mikolaj Dadela : https://github.com/mik01aj + +function processRelativeTime$2(number, withoutSuffix, key, isFuture) { + var format = { + 'm': ['eine Minute', 'einer Minute'], + 'h': ['eine Stunde', 'einer Stunde'], + 'd': ['ein Tag', 'einem Tag'], + 'dd': [number + ' Tage', number + ' Tagen'], + 'M': ['ein Monat', 'einem Monat'], + 'MM': [number + ' Monate', number + ' Monaten'], + 'y': ['ein Jahr', 'einem Jahr'], + 'yy': [number + ' Jahre', number + ' Jahren'] + }; + return withoutSuffix ? format[key][0] : format[key][1]; +} + +hooks.defineLocale('de', { + months : 'Januar_Februar_März_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember'.split('_'), + monthsShort : 'Jan._Febr._Mrz._Apr._Mai_Jun._Jul._Aug._Sept._Okt._Nov._Dez.'.split('_'), + monthsParseExact : true, + weekdays : 'Sonntag_Montag_Dienstag_Mittwoch_Donnerstag_Freitag_Samstag'.split('_'), + weekdaysShort : 'So._Mo._Di._Mi._Do._Fr._Sa.'.split('_'), + weekdaysMin : 'So_Mo_Di_Mi_Do_Fr_Sa'.split('_'), + weekdaysParseExact : true, + 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: '[heute um] LT [Uhr]', + sameElse: 'L', + nextDay: '[morgen um] LT [Uhr]', + nextWeek: 'dddd [um] LT [Uhr]', + lastDay: '[gestern um] LT [Uhr]', + lastWeek: '[letzten] dddd [um] LT [Uhr]' + }, + relativeTime : { + future : 'in %s', + past : 'vor %s', + s : 'ein paar Sekunden', + m : processRelativeTime$2, + mm : '%d Minuten', + h : processRelativeTime$2, + hh : '%d Stunden', + d : processRelativeTime$2, + dd : processRelativeTime$2, + M : processRelativeTime$2, + MM : processRelativeTime$2, + y : processRelativeTime$2, + yy : processRelativeTime$2 + }, + dayOfMonthOrdinalParse: /\d{1,2}\./, + ordinal : '%d.', + week : { + dow : 1, // Monday is the first day of the week. + doy : 4 // The week that contains Jan 4th is the first week of the year. + } +}); + +//! moment.js locale configuration +//! locale : Maldivian [dv] +//! author : Jawish Hameed : https://github.com/jawish + +var months$4 = [ + 'ޖެނުއަރީ', + 'ފެބްރުއަރީ', + 'މާރިޗު', + 'އޭޕްރީލު', + 'މޭ', + 'ޖޫން', + 'ޖުލައި', + 'އޯގަސްޓު', + 'ސެޕްޓެމްބަރު', + 'އޮކްޓޯބަރު', + 'ނޮވެމްބަރު', + 'ޑިސެމްބަރު' +]; +var weekdays = [ + 'އާދިއްތަ', + 'ހޯމަ', + 'އަންގާރަ', + 'ބުދަ', + 'ބުރާސްފަތި', + 'ހުކުރު', + 'ހޮނިހިރު' +]; + +hooks.defineLocale('dv', { + months : months$4, + monthsShort : months$4, + weekdays : weekdays, + weekdaysShort : weekdays, + 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 (input) { + return 'މފ' === input; + }, + meridiem : function (hour, minute, isLower) { + if (hour < 12) { + return 'މކ'; + } else { + return 'މފ'; + } + }, + calendar : { + sameDay : '[މިއަދު] LT', + nextDay : '[މާދަމާ] LT', + nextWeek : 'dddd LT', + lastDay : '[އިއްޔެ] 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' + }, + preparse: function (string) { + return string.replace(/،/g, ','); + }, + postformat: function (string) { + return string.replace(/,/g, '،'); + }, + week : { + dow : 7, // Sunday is the first day of the week. + doy : 12 // The week that contains Jan 1st is the first week of the year. + } +}); + +//! moment.js locale configuration +//! locale : Greek [el] +//! author : Aggelos Karalias : https://github.com/mehiel + +hooks.defineLocale('el', { + monthsNominativeEl : 'Ιανουάριος_Φεβρουάριος_Μάρτιος_Απρίλιος_Μάιος_Ιούνιος_Ιούλιος_Αύγουστος_Σεπτέμβριος_Οκτώβριος_Νοέμβριος_Δεκέμβριος'.split('_'), + monthsGenitiveEl : 'Ιανουαρίου_Φεβρουαρίου_Μαρτίου_Απριλίου_Μαΐου_Ιουνίου_Ιουλίου_Αυγούστου_Σεπτεμβρίου_Οκτωβρίου_Νοεμβρίου_Δεκεμβρίου'.split('_'), + months : function (momentToFormat, format) { + if (!momentToFormat) { + return this._monthsNominativeEl; + } else if (/D/.test(format.substring(0, format.indexOf('MMMM')))) { // if there is a day number before 'MMMM' + return this._monthsGenitiveEl[momentToFormat.month()]; + } else { + return this._monthsNominativeEl[momentToFormat.month()]; + } + }, + monthsShort : 'Ιαν_Φεβ_Μαρ_Απρ_Μαϊ_Ιουν_Ιουλ_Αυγ_Σεπ_Οκτ_Νοε_Δεκ'.split('_'), + weekdays : 'Κυριακή_Δευτέρα_Τρίτη_Τετάρτη_Πέμπτη_Παρασκευή_Σάββατο'.split('_'), + weekdaysShort : 'Κυρ_Δευ_Τρι_Τετ_Πεμ_Παρ_Σαβ'.split('_'), + weekdaysMin : 'Κυ_Δε_Τρ_Τε_Πε_Πα_Σα'.split('_'), + meridiem : function (hours, minutes, isLower) { + if (hours > 11) { + return isLower ? 'μμ' : 'ΜΜ'; + } else { + return isLower ? 'πμ' : 'ΠΜ'; + } + }, + isPM : function (input) { + return ((input + '').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 (key, mom) { + var output = this._calendarEl[key], + hours = mom && mom.hours(); + if (isFunction(output)) { + output = output.apply(mom); + } + return output.replace('{}', (hours % 12 === 1 ? 'στη' : 'στις')); + }, + relativeTime : { + future : 'σε %s', + past : '%s πριν', + s : 'λίγα δευτερόλεπτα', + m : 'ένα λεπτό', + mm : '%d λεπτά', + h : 'μία ώρα', + hh : '%d ώρες', + d : 'μία μέρα', + dd : '%d μέρες', + M : 'ένας μήνας', + MM : '%d μήνες', + y : 'ένας χρόνος', + yy : '%d χρόνια' + }, + dayOfMonthOrdinalParse: /\d{1,2}η/, + ordinal: '%dη', + week : { + dow : 1, // Monday is the first day of the week. + doy : 4 // The week that contains Jan 4st is the first week of the year. + } +}); + +//! moment.js locale configuration +//! locale : English (Australia) [en-au] +//! author : Jared Morse : https://github.com/jarcoal + +hooks.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', + 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 (number) { + var b = number % 10, + output = (~~(number % 100 / 10) === 1) ? 'th' : + (b === 1) ? 'st' : + (b === 2) ? 'nd' : + (b === 3) ? 'rd' : 'th'; + return number + output; + }, + week : { + dow : 1, // Monday is the first day of the week. + doy : 4 // The week that contains Jan 4th is the first week of the year. + } +}); + +//! moment.js locale configuration +//! locale : English (Canada) [en-ca] +//! author : Jonathan Abourbih : https://github.com/jonbca + +hooks.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', + 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 (number) { + var b = number % 10, + output = (~~(number % 100 / 10) === 1) ? 'th' : + (b === 1) ? 'st' : + (b === 2) ? 'nd' : + (b === 3) ? 'rd' : 'th'; + return number + output; + } +}); + +//! moment.js locale configuration +//! locale : English (United Kingdom) [en-gb] +//! author : Chris Gedrim : https://github.com/chrisgedrim + +hooks.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', + 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 (number) { + var b = number % 10, + output = (~~(number % 100 / 10) === 1) ? 'th' : + (b === 1) ? 'st' : + (b === 2) ? 'nd' : + (b === 3) ? 'rd' : 'th'; + return number + output; + }, + week : { + dow : 1, // Monday is the first day of the week. + doy : 4 // The week that contains Jan 4th is the first week of the year. + } +}); + +//! moment.js locale configuration +//! locale : English (Ireland) [en-ie] +//! author : Chris Cartlidge : https://github.com/chriscartlidge + +hooks.defineLocale('en-ie', { + 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', + 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 (number) { + var b = number % 10, + output = (~~(number % 100 / 10) === 1) ? 'th' : + (b === 1) ? 'st' : + (b === 2) ? 'nd' : + (b === 3) ? 'rd' : 'th'; + return number + output; + }, + week : { + dow : 1, // Monday is the first day of the week. + doy : 4 // The week that contains Jan 4th is the first week of the year. + } +}); + +//! moment.js locale configuration +//! locale : English (New Zealand) [en-nz] +//! author : Luke McGregor : https://github.com/lukemcgregor + +hooks.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', + 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 (number) { + var b = number % 10, + output = (~~(number % 100 / 10) === 1) ? 'th' : + (b === 1) ? 'st' : + (b === 2) ? 'nd' : + (b === 3) ? 'rd' : 'th'; + return number + output; + }, + week : { + dow : 1, // Monday is the first day of the week. + doy : 4 // The week that contains Jan 4th is the first week of the year. + } +}); + +//! moment.js locale configuration +//! locale : Esperanto [eo] +//! author : Colin Dean : https://github.com/colindean +//! author : Mia Nordentoft Imperatori : https://github.com/miestasmia +//! comment : miestasmia corrected the translation by colindean + +hooks.defineLocale('eo', { + months : 'januaro_februaro_marto_aprilo_majo_junio_julio_aŭgusto_septembro_oktobro_novembro_decembro'.split('_'), + monthsShort : 'jan_feb_mar_apr_maj_jun_jul_aŭg_sep_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 : 'D[-a de] MMMM, YYYY', + LLL : 'D[-a de] MMMM, YYYY HH:mm', + LLLL : 'dddd, [la] D[-a de] MMMM, YYYY HH:mm' + }, + meridiemParse: /[ap]\.t\.m/i, + isPM: function (input) { + return input.charAt(0).toLowerCase() === 'p'; + }, + meridiem : function (hours, minutes, isLower) { + if (hours > 11) { + return isLower ? 'p.t.m.' : 'P.T.M.'; + } else { + return isLower ? 'a.t.m.' : 'A.T.M.'; + } + }, + calendar : { + sameDay : '[Hodiaŭ je] LT', + nextDay : '[Morgaŭ je] LT', + nextWeek : 'dddd [je] LT', + lastDay : '[Hieraŭ je] LT', + lastWeek : '[pasinta] dddd [je] LT', + sameElse : 'L' + }, + relativeTime : { + future : 'post %s', + past : 'antaŭ %s', + s : 'sekundoj', + m : 'minuto', + mm : '%d minutoj', + h : 'horo', + hh : '%d horoj', + d : 'tago',//ne 'diurno', ĉar estas uzita por proksimumo + dd : '%d tagoj', + M : 'monato', + MM : '%d monatoj', + y : 'jaro', + yy : '%d jaroj' + }, + dayOfMonthOrdinalParse: /\d{1,2}a/, + ordinal : '%da', + week : { + dow : 1, // Monday is the first day of the week. + doy : 7 // The week that contains Jan 1st is the first week of the year. + } +}); + +//! moment.js locale configuration +//! locale : Spanish (Dominican Republic) [es-do] + +var monthsShortDot = 'ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.'.split('_'); +var monthsShort$1 = 'ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic'.split('_'); + +hooks.defineLocale('es-do', { + months : 'enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre'.split('_'), + monthsShort : function (m, format) { + if (!m) { + return monthsShortDot; + } else if (/-MMM-/.test(format)) { + return monthsShort$1[m.month()]; + } else { + return monthsShortDot[m.month()]; + } + }, + monthsParseExact : true, + 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 : true, + 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' + ((this.hours() !== 1) ? 's' : '') + '] LT'; + }, + nextDay : function () { + return '[mañana a la' + ((this.hours() !== 1) ? 's' : '') + '] LT'; + }, + nextWeek : function () { + return 'dddd [a la' + ((this.hours() !== 1) ? 's' : '') + '] LT'; + }, + lastDay : function () { + return '[ayer a la' + ((this.hours() !== 1) ? 's' : '') + '] LT'; + }, + lastWeek : function () { + return '[el] dddd [pasado a la' + ((this.hours() !== 1) ? 's' : '') + '] LT'; + }, + sameElse : 'L' + }, + relativeTime : { + future : 'en %s', + past : 'hace %s', + s : 'unos segundos', + m : 'un minuto', + mm : '%d minutos', + h : 'una hora', + hh : '%d horas', + d : 'un día', + dd : '%d días', + M : 'un mes', + MM : '%d meses', + y : 'un año', + yy : '%d años' + }, + dayOfMonthOrdinalParse : /\d{1,2}º/, + ordinal : '%dº', + week : { + dow : 1, // Monday is the first day of the week. + doy : 4 // The week that contains Jan 4th is the first week of the year. + } +}); + +//! moment.js locale configuration +//! locale : Spanish [es] +//! author : Julio Napurí : https://github.com/julionc + +var monthsShortDot$1 = 'ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.'.split('_'); +var monthsShort$2 = 'ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic'.split('_'); + +hooks.defineLocale('es', { + months : 'enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre'.split('_'), + monthsShort : function (m, format) { + if (!m) { + return monthsShortDot$1; + } else if (/-MMM-/.test(format)) { + return monthsShort$2[m.month()]; + } else { + return monthsShortDot$1[m.month()]; + } + }, + monthsParseExact : true, + 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 : true, + 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' + ((this.hours() !== 1) ? 's' : '') + '] LT'; + }, + nextDay : function () { + return '[mañana a la' + ((this.hours() !== 1) ? 's' : '') + '] LT'; + }, + nextWeek : function () { + return 'dddd [a la' + ((this.hours() !== 1) ? 's' : '') + '] LT'; + }, + lastDay : function () { + return '[ayer a la' + ((this.hours() !== 1) ? 's' : '') + '] LT'; + }, + lastWeek : function () { + return '[el] dddd [pasado a la' + ((this.hours() !== 1) ? 's' : '') + '] LT'; + }, + sameElse : 'L' + }, + relativeTime : { + future : 'en %s', + past : 'hace %s', + s : 'unos segundos', + m : 'un minuto', + mm : '%d minutos', + h : 'una hora', + hh : '%d horas', + d : 'un día', + dd : '%d días', + M : 'un mes', + MM : '%d meses', + y : 'un año', + yy : '%d años' + }, + dayOfMonthOrdinalParse : /\d{1,2}º/, + ordinal : '%dº', + week : { + dow : 1, // Monday is the first day of the week. + doy : 4 // The week that contains Jan 4th is the first week of the year. + } +}); + +//! moment.js locale configuration +//! locale : Estonian [et] +//! author : Henry Kehlmann : https://github.com/madhenry +//! improvements : Illimar Tambek : https://github.com/ragulka + +function processRelativeTime$3(number, withoutSuffix, key, isFuture) { + var format = { + 's' : ['mõne sekundi', 'mõni sekund', 'paar sekundit'], + 'm' : ['ühe minuti', 'üks minut'], + 'mm': [number + ' minuti', number + ' minutit'], + 'h' : ['ühe tunni', 'tund aega', 'üks tund'], + 'hh': [number + ' tunni', number + ' tundi'], + 'd' : ['ühe päeva', 'üks päev'], + 'M' : ['kuu aja', 'kuu aega', 'üks kuu'], + 'MM': [number + ' kuu', number + ' kuud'], + 'y' : ['ühe aasta', 'aasta', 'üks aasta'], + 'yy': [number + ' aasta', number + ' aastat'] + }; + if (withoutSuffix) { + return format[key][2] ? format[key][2] : format[key][1]; + } + return isFuture ? format[key][0] : format[key][1]; +} + +hooks.defineLocale('et', { + months : 'jaanuar_veebruar_märts_aprill_mai_juuni_juuli_august_september_oktoober_november_detsember'.split('_'), + monthsShort : 'jaan_veebr_märts_apr_mai_juuni_juuli_aug_sept_okt_nov_dets'.split('_'), + weekdays : 'pühapäev_esmaspäev_teisipäev_kolmapäev_neljapäev_reede_laupäev'.split('_'), + weekdaysShort : 'P_E_T_K_N_R_L'.split('_'), + weekdaysMin : 'P_E_T_K_N_R_L'.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 : '[Täna,] LT', + nextDay : '[Homme,] LT', + nextWeek : '[Järgmine] dddd LT', + lastDay : '[Eile,] LT', + lastWeek : '[Eelmine] dddd LT', + sameElse : 'L' + }, + relativeTime : { + future : '%s pärast', + past : '%s tagasi', + s : processRelativeTime$3, + m : processRelativeTime$3, + mm : processRelativeTime$3, + h : processRelativeTime$3, + hh : processRelativeTime$3, + d : processRelativeTime$3, + dd : '%d päeva', + M : processRelativeTime$3, + MM : processRelativeTime$3, + y : processRelativeTime$3, + yy : processRelativeTime$3 + }, + dayOfMonthOrdinalParse: /\d{1,2}\./, + ordinal : '%d.', + week : { + dow : 1, // Monday is the first day of the week. + doy : 4 // The week that contains Jan 4th is the first week of the year. + } +}); + +//! moment.js locale configuration +//! locale : Basque [eu] +//! author : Eneko Illarramendi : https://github.com/eillarra + +hooks.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 : true, + 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 : true, + 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', + 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, // Monday is the first day of the week. + doy : 7 // The week that contains Jan 1st is the first week of the year. + } +}); + +//! moment.js locale configuration +//! locale : Persian [fa] +//! author : Ebrahim Byagowi : https://github.com/ebraminio + +var symbolMap$5 = { + '1': '۱', + '2': '۲', + '3': '۳', + '4': '۴', + '5': '۵', + '6': '۶', + '7': '۷', + '8': '۸', + '9': '۹', + '0': '۰' +}; +var numberMap$4 = { + '۱': '1', + '۲': '2', + '۳': '3', + '۴': '4', + '۵': '5', + '۶': '6', + '۷': '7', + '۸': '8', + '۹': '9', + '۰': '0' +}; + +hooks.defineLocale('fa', { + months : 'ژانویه_فوریه_مارس_آوریل_مه_ژوئن_ژوئیه_اوت_سپتامبر_اکتبر_نوامبر_دسامبر'.split('_'), + monthsShort : 'ژانویه_فوریه_مارس_آوریل_مه_ژوئن_ژوئیه_اوت_سپتامبر_اکتبر_نوامبر_دسامبر'.split('_'), + weekdays : 'یک\u200cشنبه_دوشنبه_سه\u200cشنبه_چهارشنبه_پنج\u200cشنبه_جمعه_شنبه'.split('_'), + weekdaysShort : 'یک\u200cشنبه_دوشنبه_سه\u200cشنبه_چهارشنبه_پنج\u200cشنبه_جمعه_شنبه'.split('_'), + weekdaysMin : 'ی_د_س_چ_پ_ج_ش'.split('_'), + weekdaysParseExact : true, + 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 (input) { + return /بعد از ظهر/.test(input); + }, + meridiem : function (hour, minute, isLower) { + if (hour < 12) { + return 'قبل از ظهر'; + } else { + return 'بعد از ظهر'; + } + }, + calendar : { + sameDay : '[امروز ساعت] LT', + nextDay : '[فردا ساعت] LT', + nextWeek : 'dddd [ساعت] LT', + lastDay : '[دیروز ساعت] 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 سال' + }, + preparse: function (string) { + return string.replace(/[۰-۹]/g, function (match) { + return numberMap$4[match]; + }).replace(/،/g, ','); + }, + postformat: function (string) { + return string.replace(/\d/g, function (match) { + return symbolMap$5[match]; + }).replace(/,/g, '،'); + }, + dayOfMonthOrdinalParse: /\d{1,2}م/, + ordinal : '%dم', + week : { + dow : 6, // Saturday is the first day of the week. + doy : 12 // The week that contains Jan 1st is the first week of the year. + } +}); + +//! moment.js locale configuration +//! locale : Finnish [fi] +//! author : Tarmo Aidantausta : https://github.com/bleadof + +var numbersPast = 'nolla yksi kaksi kolme neljä viisi kuusi seitsemän kahdeksan yhdeksän'.split(' '); +var numbersFuture = [ + 'nolla', 'yhden', 'kahden', 'kolmen', 'neljän', 'viiden', 'kuuden', + numbersPast[7], numbersPast[8], numbersPast[9] + ]; +function translate$2(number, withoutSuffix, key, isFuture) { + var result = ''; + switch (key) { + case 's': + return isFuture ? 'muutaman sekunnin' : 'muutama sekunti'; + case 'm': + return isFuture ? 'minuutin' : 'minuutti'; + case 'mm': + result = isFuture ? 'minuutin' : 'minuuttia'; + break; + case 'h': + return isFuture ? 'tunnin' : 'tunti'; + case 'hh': + result = isFuture ? 'tunnin' : 'tuntia'; + break; + case 'd': + return isFuture ? 'päivän' : 'päivä'; + case 'dd': + result = isFuture ? 'päivän' : 'päivää'; + break; + case 'M': + return isFuture ? 'kuukauden' : 'kuukausi'; + case 'MM': + result = isFuture ? 'kuukauden' : 'kuukautta'; + break; + case 'y': + return isFuture ? 'vuoden' : 'vuosi'; + case 'yy': + result = isFuture ? 'vuoden' : 'vuotta'; + break; + } + result = verbalNumber(number, isFuture) + ' ' + result; + return result; +} +function verbalNumber(number, isFuture) { + return number < 10 ? (isFuture ? numbersFuture[number] : numbersPast[number]) : number; +} + +hooks.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 : translate$2, + m : translate$2, + mm : translate$2, + h : translate$2, + hh : translate$2, + d : translate$2, + dd : translate$2, + M : translate$2, + MM : translate$2, + y : translate$2, + yy : translate$2 + }, + dayOfMonthOrdinalParse: /\d{1,2}\./, + ordinal : '%d.', + week : { + dow : 1, // Monday is the first day of the week. + doy : 4 // The week that contains Jan 4th is the first week of the year. + } +}); + +//! moment.js locale configuration +//! locale : Faroese [fo] +//! author : Ragnar Johannesen : https://github.com/ragnar123 + +hooks.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', + m : 'ein minutt', + mm : '%d minuttir', + h : 'ein tími', + hh : '%d tímar', + d : 'ein dagur', + dd : '%d dagar', + M : 'ein mánaði', + MM : '%d mánaðir', + y : 'eitt ár', + yy : '%d ár' + }, + dayOfMonthOrdinalParse: /\d{1,2}\./, + ordinal : '%d.', + week : { + dow : 1, // Monday is the first day of the week. + doy : 4 // The week that contains Jan 4th is the first week of the year. + } +}); + +//! moment.js locale configuration +//! locale : French (Canada) [fr-ca] +//! author : Jonathan Abourbih : https://github.com/jonbca + +hooks.defineLocale('fr-ca', { + 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 : true, + 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 : true, + longDateFormat : { + LT : 'HH:mm', + LTS : 'HH:mm:ss', + L : 'YYYY-MM-DD', + 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', + 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 (number, period) { + switch (period) { + // Words with masculine grammatical gender: mois, trimestre, jour + default: + case 'M': + case 'Q': + case 'D': + case 'DDD': + case 'd': + return number + (number === 1 ? 'er' : 'e'); + + // Words with feminine grammatical gender: semaine + case 'w': + case 'W': + return number + (number === 1 ? 're' : 'e'); + } + } +}); + +//! moment.js locale configuration +//! locale : French (Switzerland) [fr-ch] +//! author : Gaspard Bucher : https://github.com/gaspard + +hooks.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 : true, + 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 : true, + 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', + 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 (number, period) { + switch (period) { + // Words with masculine grammatical gender: mois, trimestre, jour + default: + case 'M': + case 'Q': + case 'D': + case 'DDD': + case 'd': + return number + (number === 1 ? 'er' : 'e'); + + // Words with feminine grammatical gender: semaine + case 'w': + case 'W': + return number + (number === 1 ? 're' : 'e'); + } + }, + week : { + dow : 1, // Monday is the first day of the week. + doy : 4 // The week that contains Jan 4th is the first week of the year. + } +}); + +//! moment.js locale configuration +//! locale : French [fr] +//! author : John Fischer : https://github.com/jfroffice + +hooks.defineLocale('fr', { + 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 : true, + 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 : true, + 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', + 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|)/, + ordinal : function (number, period) { + switch (period) { + // TODO: Return 'e' when day of month > 1. Move this case inside + // block for masculine words below. + // See https://github.com/moment/moment/issues/3375 + case 'D': + return number + (number === 1 ? 'er' : ''); + + // Words with masculine grammatical gender: mois, trimestre, jour + default: + case 'M': + case 'Q': + case 'DDD': + case 'd': + return number + (number === 1 ? 'er' : 'e'); + + // Words with feminine grammatical gender: semaine + case 'w': + case 'W': + return number + (number === 1 ? 're' : 'e'); + } + }, + week : { + dow : 1, // Monday is the first day of the week. + doy : 4 // The week that contains Jan 4th is the first week of the year. + } +}); + +//! moment.js locale configuration +//! locale : Frisian [fy] +//! author : Robin van der Vliet : https://github.com/robin0van0der0v + +var monthsShortWithDots = 'jan._feb._mrt._apr._mai_jun._jul._aug._sep._okt._nov._des.'.split('_'); +var monthsShortWithoutDots = 'jan_feb_mrt_apr_mai_jun_jul_aug_sep_okt_nov_des'.split('_'); + +hooks.defineLocale('fy', { + months : 'jannewaris_febrewaris_maart_april_maaie_juny_july_augustus_septimber_oktober_novimber_desimber'.split('_'), + monthsShort : function (m, format) { + if (!m) { + return monthsShortWithDots; + } else if (/-MMM-/.test(format)) { + return monthsShortWithoutDots[m.month()]; + } else { + return monthsShortWithDots[m.month()]; + } + }, + monthsParseExact : true, + 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 : true, + 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', + 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 (number) { + return number + ((number === 1 || number === 8 || number >= 20) ? 'ste' : 'de'); + }, + week : { + dow : 1, // Monday is the first day of the week. + doy : 4 // The week that contains Jan 4th is the first week of the year. + } +}); + +//! moment.js locale configuration +//! locale : Scottish Gaelic [gd] +//! author : Jon Ashdown : https://github.com/jonashdown + +var months$5 = [ + 'Am Faoilleach', 'An Gearran', 'Am Màrt', 'An Giblean', 'An Cèitean', 'An t-Ògmhios', 'An t-Iuchar', 'An Lùnastal', 'An t-Sultain', 'An Dàmhair', 'An t-Samhain', 'An Dùbhlachd' +]; + +var monthsShort$3 = ['Faoi', 'Gear', 'Màrt', 'Gibl', 'Cèit', 'Ògmh', 'Iuch', 'Lùn', 'Sult', 'Dàmh', 'Samh', 'Dùbh']; + +var weekdays$1 = ['Didòmhnaich', 'Diluain', 'Dimàirt', 'Diciadain', 'Diardaoin', 'Dihaoine', 'Disathairne']; + +var weekdaysShort = ['Did', 'Dil', 'Dim', 'Dic', 'Dia', 'Dih', 'Dis']; + +var weekdaysMin = ['Dò', 'Lu', 'Mà', 'Ci', 'Ar', 'Ha', 'Sa']; + +hooks.defineLocale('gd', { + months : months$5, + monthsShort : monthsShort$3, + monthsParseExact : true, + weekdays : weekdays$1, + weekdaysShort : weekdaysShort, + weekdaysMin : weekdaysMin, + 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 : '[An-diugh aig] LT', + nextDay : '[A-màireach aig] LT', + nextWeek : 'dddd [aig] LT', + lastDay : '[An-dè aig] LT', + lastWeek : 'dddd [seo chaidh] [aig] LT', + sameElse : 'L' + }, + relativeTime : { + future : 'ann an %s', + past : 'bho chionn %s', + s : 'beagan diogan', + m : 'mionaid', + mm : '%d mionaidean', + h : 'uair', + hh : '%d uairean', + d : 'latha', + dd : '%d latha', + M : 'mìos', + MM : '%d mìosan', + y : 'bliadhna', + yy : '%d bliadhna' + }, + dayOfMonthOrdinalParse : /\d{1,2}(d|na|mh)/, + ordinal : function (number) { + var output = number === 1 ? 'd' : number % 10 === 2 ? 'na' : 'mh'; + return number + output; + }, + week : { + dow : 1, // Monday is the first day of the week. + doy : 4 // The week that contains Jan 4th is the first week of the year. + } +}); + +//! moment.js locale configuration +//! locale : Galician [gl] +//! author : Juan G. Hurtado : https://github.com/juanghurtado + +hooks.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: true, + 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 : true, + 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 ' + ((this.hours() !== 1) ? 'ás' : 'á') + '] LT'; + }, + nextDay : function () { + return '[mañá ' + ((this.hours() !== 1) ? 'ás' : 'á') + '] LT'; + }, + nextWeek : function () { + return 'dddd [' + ((this.hours() !== 1) ? 'ás' : 'a') + '] LT'; + }, + lastDay : function () { + return '[onte ' + ((this.hours() !== 1) ? 'á' : 'a') + '] LT'; + }, + lastWeek : function () { + return '[o] dddd [pasado ' + ((this.hours() !== 1) ? 'ás' : 'a') + '] LT'; + }, + sameElse : 'L' + }, + relativeTime : { + future : function (str) { + if (str.indexOf('un') === 0) { + return 'n' + str; + } + return 'en ' + str; + }, + past : 'hai %s', + s : 'uns 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, // Monday is the first day of the week. + doy : 4 // The week that contains Jan 4th is the first week of the year. + } +}); + +//! moment.js locale configuration +//! locale : Konkani Latin script [gom-latn] +//! author : The Discoverer : https://github.com/WikiDiscoverer + +function processRelativeTime$4(number, withoutSuffix, key, isFuture) { + var format = { + 's': ['thodde secondanim', 'thodde second'], + 'm': ['eka mintan', 'ek minute'], + 'mm': [number + ' mintanim', number + ' mintam'], + 'h': ['eka horan', 'ek hor'], + 'hh': [number + ' horanim', number + ' hor'], + 'd': ['eka disan', 'ek dis'], + 'dd': [number + ' disanim', number + ' dis'], + 'M': ['eka mhoinean', 'ek mhoino'], + 'MM': [number + ' mhoineanim', number + ' mhoine'], + 'y': ['eka vorsan', 'ek voros'], + 'yy': [number + ' vorsanim', number + ' vorsam'] + }; + return withoutSuffix ? format[key][0] : format[key][1]; +} + +hooks.defineLocale('gom-latn', { + months : 'Janer_Febrer_Mars_Abril_Mai_Jun_Julai_Agost_Setembr_Otubr_Novembr_Dezembr'.split('_'), + monthsShort : 'Jan._Feb._Mars_Abr._Mai_Jun_Jul._Ago._Set._Otu._Nov._Dez.'.split('_'), + monthsParseExact : true, + weekdays : 'Aitar_Somar_Mongllar_Budvar_Brestar_Sukrar_Son\'var'.split('_'), + weekdaysShort : 'Ait._Som._Mon._Bud._Bre._Suk._Son.'.split('_'), + weekdaysMin : 'Ai_Sm_Mo_Bu_Br_Su_Sn'.split('_'), + weekdaysParseExact : true, + 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[achea] Do, YYYY, A h:mm [vazta]', + llll: 'ddd, D MMM YYYY, A h:mm [vazta]' + }, + calendar : { + sameDay: '[Aiz] LT', + nextDay: '[Faleam] LT', + nextWeek: '[Ieta to] dddd[,] LT', + lastDay: '[Kal] LT', + lastWeek: '[Fatlo] dddd[,] LT', + sameElse: 'L' + }, + relativeTime : { + future : '%s', + past : '%s adim', + s : processRelativeTime$4, + m : processRelativeTime$4, + mm : processRelativeTime$4, + h : processRelativeTime$4, + hh : processRelativeTime$4, + d : processRelativeTime$4, + dd : processRelativeTime$4, + M : processRelativeTime$4, + MM : processRelativeTime$4, + y : processRelativeTime$4, + yy : processRelativeTime$4 + }, + dayOfMonthOrdinalParse : /\d{1,2}(er)/, + ordinal : function (number, period) { + switch (period) { + // the ordinal 'er' only applies to day of the month + case 'D': + return number + 'er'; + default: + case 'M': + case 'Q': + case 'DDD': + case 'd': + case 'w': + case 'W': + return number; + } + }, + week : { + dow : 1, // Monday is the first day of the week. + doy : 4 // The week that contains Jan 4th is the first week of the year. + }, + meridiemParse: /rati|sokalli|donparam|sanje/, + meridiemHour : function (hour, meridiem) { + if (hour === 12) { + hour = 0; + } + if (meridiem === 'rati') { + return hour < 4 ? hour : hour + 12; + } else if (meridiem === 'sokalli') { + return hour; + } else if (meridiem === 'donparam') { + return hour > 12 ? hour : hour + 12; + } else if (meridiem === 'sanje') { + return hour + 12; + } + }, + meridiem : function (hour, minute, isLower) { + if (hour < 4) { + return 'rati'; + } else if (hour < 12) { + return 'sokalli'; + } else if (hour < 16) { + return 'donparam'; + } else if (hour < 20) { + return 'sanje'; + } else { + return 'rati'; + } + } +}); + +//! moment.js locale configuration +//! locale : Hebrew [he] +//! author : Tomer Cohen : https://github.com/tomer +//! author : Moshe Simantov : https://github.com/DevelopmentIL +//! author : Tal Ater : https://github.com/TalAter + +hooks.defineLocale('he', { + 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', + l : 'D/M/YYYY', + ll : 'D MMM YYYY', + lll : 'D MMM YYYY HH:mm', + llll : 'ddd, D MMM YYYY HH:mm' + }, + calendar : { + sameDay : '[היום ב־]LT', + nextDay : '[מחר ב־]LT', + nextWeek : 'dddd [בשעה] LT', + lastDay : '[אתמול ב־]LT', + lastWeek : '[ביום] dddd [האחרון בשעה] LT', + sameElse : 'L' + }, + relativeTime : { + future : 'בעוד %s', + past : 'לפני %s', + s : 'מספר שניות', + m : 'דקה', + mm : '%d דקות', + h : 'שעה', + hh : function (number) { + if (number === 2) { + return 'שעתיים'; + } + return number + ' שעות'; + }, + d : 'יום', + dd : function (number) { + if (number === 2) { + return 'יומיים'; + } + return number + ' ימים'; + }, + M : 'חודש', + MM : function (number) { + if (number === 2) { + return 'חודשיים'; + } + return number + ' חודשים'; + }, + y : 'שנה', + yy : function (number) { + if (number === 2) { + return 'שנתיים'; + } else if (number % 10 === 0 && number !== 10) { + return number + ' שנה'; + } + return number + ' שנים'; + } + }, + meridiemParse: /אחה"צ|לפנה"צ|אחרי הצהריים|לפני הצהריים|לפנות בוקר|בבוקר|בערב/i, + isPM : function (input) { + return /^(אחה"צ|אחרי הצהריים|בערב)$/.test(input); + }, + meridiem : function (hour, minute, isLower) { + if (hour < 5) { + return 'לפנות בוקר'; + } else if (hour < 10) { + return 'בבוקר'; + } else if (hour < 12) { + return isLower ? 'לפנה"צ' : 'לפני הצהריים'; + } else if (hour < 18) { + return isLower ? 'אחה"צ' : 'אחרי הצהריים'; + } else { + return 'בערב'; + } + } +}); + +//! moment.js locale configuration +//! locale : Hindi [hi] +//! author : Mayank Singhal : https://github.com/mayanksinghal + +var symbolMap$6 = { + '1': '१', + '2': '२', + '3': '३', + '4': '४', + '5': '५', + '6': '६', + '7': '७', + '8': '८', + '9': '९', + '0': '०' +}; +var numberMap$5 = { + '१': '1', + '२': '2', + '३': '3', + '४': '4', + '५': '5', + '६': '6', + '७': '7', + '८': '8', + '९': '9', + '०': '0' +}; + +hooks.defineLocale('hi', { + months : 'जनवरी_फ़रवरी_मार्च_अप्रैल_मई_जून_जुलाई_अगस्त_सितम्बर_अक्टूबर_नवम्बर_दिसम्बर'.split('_'), + monthsShort : 'जन._फ़र._मार्च_अप्रै._मई_जून_जुल._अग._सित._अक्टू._नव._दिस.'.split('_'), + monthsParseExact: true, + 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 : 'कुछ ही क्षण', + m : 'एक मिनट', + mm : '%d मिनट', + h : 'एक घंटा', + hh : '%d घंटे', + d : 'एक दिन', + dd : '%d दिन', + M : 'एक महीने', + MM : '%d महीने', + y : 'एक वर्ष', + yy : '%d वर्ष' + }, + preparse: function (string) { + return string.replace(/[१२३४५६७८९०]/g, function (match) { + return numberMap$5[match]; + }); + }, + postformat: function (string) { + return string.replace(/\d/g, function (match) { + return symbolMap$6[match]; + }); + }, + // Hindi notation for meridiems are quite fuzzy in practice. While there exists + // a rigid notion of a 'Pahar' it is not used as rigidly in modern Hindi. + meridiemParse: /रात|सुबह|दोपहर|शाम/, + meridiemHour : function (hour, meridiem) { + if (hour === 12) { + hour = 0; + } + if (meridiem === 'रात') { + return hour < 4 ? hour : hour + 12; + } else if (meridiem === 'सुबह') { + return hour; + } else if (meridiem === 'दोपहर') { + return hour >= 10 ? hour : hour + 12; + } else if (meridiem === 'शाम') { + return hour + 12; + } + }, + meridiem : function (hour, minute, isLower) { + if (hour < 4) { + return 'रात'; + } else if (hour < 10) { + return 'सुबह'; + } else if (hour < 17) { + return 'दोपहर'; + } else if (hour < 20) { + return 'शाम'; + } else { + return 'रात'; + } + }, + week : { + dow : 0, // Sunday is the first day of the week. + doy : 6 // The week that contains Jan 1st is the first week of the year. + } +}); + +//! moment.js locale configuration +//! locale : Croatian [hr] +//! author : Bojan Marković : https://github.com/bmarkovic + +function translate$3(number, withoutSuffix, key) { + var result = number + ' '; + switch (key) { + case 'm': + return withoutSuffix ? 'jedna minuta' : 'jedne minute'; + case 'mm': + if (number === 1) { + result += 'minuta'; + } else if (number === 2 || number === 3 || number === 4) { + result += 'minute'; + } else { + result += 'minuta'; + } + return result; + case 'h': + return withoutSuffix ? 'jedan sat' : 'jednog sata'; + case 'hh': + if (number === 1) { + result += 'sat'; + } else if (number === 2 || number === 3 || number === 4) { + result += 'sata'; + } else { + result += 'sati'; + } + return result; + case 'dd': + if (number === 1) { + result += 'dan'; + } else { + result += 'dana'; + } + return result; + case 'MM': + if (number === 1) { + result += 'mjesec'; + } else if (number === 2 || number === 3 || number === 4) { + result += 'mjeseca'; + } else { + result += 'mjeseci'; + } + return result; + case 'yy': + if (number === 1) { + result += 'godina'; + } else if (number === 2 || number === 3 || number === 4) { + result += 'godine'; + } else { + result += 'godina'; + } + return result; + } +} + +hooks.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: true, + 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 : true, + 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', + m : translate$3, + mm : translate$3, + h : translate$3, + hh : translate$3, + d : 'dan', + dd : translate$3, + M : 'mjesec', + MM : translate$3, + y : 'godinu', + yy : translate$3 + }, + dayOfMonthOrdinalParse: /\d{1,2}\./, + ordinal : '%d.', + week : { + dow : 1, // Monday is the first day of the week. + doy : 7 // The week that contains Jan 1st is the first week of the year. + } +}); + +//! moment.js locale configuration +//! locale : Hungarian [hu] +//! author : Adam Brunner : https://github.com/adambrunner + +var weekEndings = 'vasárnap hétfőn kedden szerdán csütörtökön pénteken szombaton'.split(' '); +function translate$4(number, withoutSuffix, key, isFuture) { + var num = number, + suffix; + switch (key) { + case 's': + return (isFuture || withoutSuffix) ? 'néhány másodperc' : 'néhány másodperce'; + case 'm': + return 'egy' + (isFuture || withoutSuffix ? ' perc' : ' perce'); + case 'mm': + return num + (isFuture || withoutSuffix ? ' perc' : ' perce'); + case 'h': + return 'egy' + (isFuture || withoutSuffix ? ' óra' : ' órája'); + case 'hh': + return num + (isFuture || withoutSuffix ? ' óra' : ' órája'); + case 'd': + return 'egy' + (isFuture || withoutSuffix ? ' nap' : ' napja'); + case 'dd': + return num + (isFuture || withoutSuffix ? ' nap' : ' napja'); + case 'M': + return 'egy' + (isFuture || withoutSuffix ? ' hónap' : ' hónapja'); + case 'MM': + return num + (isFuture || withoutSuffix ? ' hónap' : ' hónapja'); + case 'y': + return 'egy' + (isFuture || withoutSuffix ? ' év' : ' éve'); + case 'yy': + return num + (isFuture || withoutSuffix ? ' év' : ' éve'); + } + return ''; +} +function week(isFuture) { + return (isFuture ? '' : '[múlt] ') + '[' + weekEndings[this.day()] + '] LT[-kor]'; +} + +hooks.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('_'), + 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 (input) { + return input.charAt(1).toLowerCase() === 'u'; + }, + meridiem : function (hours, minutes, isLower) { + if (hours < 12) { + return isLower === true ? 'de' : 'DE'; + } else { + return isLower === true ? 'du' : 'DU'; + } + }, + calendar : { + sameDay : '[ma] LT[-kor]', + nextDay : '[holnap] LT[-kor]', + nextWeek : function () { + return week.call(this, true); + }, + lastDay : '[tegnap] LT[-kor]', + lastWeek : function () { + return week.call(this, false); + }, + sameElse : 'L' + }, + relativeTime : { + future : '%s múlva', + past : '%s', + s : translate$4, + m : translate$4, + mm : translate$4, + h : translate$4, + hh : translate$4, + d : translate$4, + dd : translate$4, + M : translate$4, + MM : translate$4, + y : translate$4, + yy : translate$4 + }, + dayOfMonthOrdinalParse: /\d{1,2}\./, + ordinal : '%d.', + week : { + dow : 1, // Monday is the first day of the week. + doy : 4 // The week that contains Jan 4th is the first week of the year. + } +}); + +//! moment.js locale configuration +//! locale : Armenian [hy-am] +//! author : Armendarabyan : https://github.com/armendarabyan + +hooks.defineLocale('hy-am', { + 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: function () { + return 'dddd [օրը ժամը] LT'; + }, + lastWeek: function () { + return '[անցած] 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: /գիշերվա|առավոտվա|ցերեկվա|երեկոյան/, + isPM: function (input) { + return /^(ցերեկվա|երեկոյան)$/.test(input); + }, + meridiem : function (hour) { + if (hour < 4) { + return 'գիշերվա'; + } else if (hour < 12) { + return 'առավոտվա'; + } else if (hour < 17) { + return 'ցերեկվա'; + } else { + return 'երեկոյան'; + } + }, + dayOfMonthOrdinalParse: /\d{1,2}|\d{1,2}-(ին|րդ)/, + ordinal: function (number, period) { + switch (period) { + case 'DDD': + case 'w': + case 'W': + case 'DDDo': + if (number === 1) { + return number + '-ին'; + } + return number + '-րդ'; + default: + return number; + } + }, + week : { + dow : 1, // Monday is the first day of the week. + doy : 7 // The week that contains Jan 1st is the first week of the year. + } +}); + +//! moment.js locale configuration +//! locale : Indonesian [id] +//! author : Mohammad Satrio Utomo : https://github.com/tyok +//! reference: http://id.wikisource.org/wiki/Pedoman_Umum_Ejaan_Bahasa_Indonesia_yang_Disempurnakan + +hooks.defineLocale('id', { + months : 'Januari_Februari_Maret_April_Mei_Juni_Juli_Agustus_September_Oktober_November_Desember'.split('_'), + monthsShort : 'Jan_Feb_Mar_Apr_Mei_Jun_Jul_Ags_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 (hour, meridiem) { + if (hour === 12) { + hour = 0; + } + if (meridiem === 'pagi') { + return hour; + } else if (meridiem === 'siang') { + return hour >= 11 ? hour : hour + 12; + } else if (meridiem === 'sore' || meridiem === 'malam') { + return hour + 12; + } + }, + meridiem : function (hours, minutes, isLower) { + if (hours < 11) { + return 'pagi'; + } else if (hours < 15) { + return 'siang'; + } else if (hours < 19) { + return 'sore'; + } else { + return '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', + 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 : 1, // Monday is the first day of the week. + doy : 7 // The week that contains Jan 1st is the first week of the year. + } +}); + +//! moment.js locale configuration +//! locale : Icelandic [is] +//! author : Hinrik Örn Sigurðsson : https://github.com/hinrik + +function plural$2(n) { + if (n % 100 === 11) { + return true; + } else if (n % 10 === 1) { + return false; + } + return true; +} +function translate$5(number, withoutSuffix, key, isFuture) { + var result = number + ' '; + switch (key) { + case 's': + return withoutSuffix || isFuture ? 'nokkrar sekúndur' : 'nokkrum sekúndum'; + case 'm': + return withoutSuffix ? 'mínúta' : 'mínútu'; + case 'mm': + if (plural$2(number)) { + return result + (withoutSuffix || isFuture ? 'mínútur' : 'mínútum'); + } else if (withoutSuffix) { + return result + 'mínúta'; + } + return result + 'mínútu'; + case 'hh': + if (plural$2(number)) { + return result + (withoutSuffix || isFuture ? 'klukkustundir' : 'klukkustundum'); + } + return result + 'klukkustund'; + case 'd': + if (withoutSuffix) { + return 'dagur'; + } + return isFuture ? 'dag' : 'degi'; + case 'dd': + if (plural$2(number)) { + if (withoutSuffix) { + return result + 'dagar'; + } + return result + (isFuture ? 'daga' : 'dögum'); + } else if (withoutSuffix) { + return result + 'dagur'; + } + return result + (isFuture ? 'dag' : 'degi'); + case 'M': + if (withoutSuffix) { + return 'mánuður'; + } + return isFuture ? 'mánuð' : 'mánuði'; + case 'MM': + if (plural$2(number)) { + if (withoutSuffix) { + return result + 'mánuðir'; + } + return result + (isFuture ? 'mánuði' : 'mánuðum'); + } else if (withoutSuffix) { + return result + 'mánuður'; + } + return result + (isFuture ? 'mánuð' : 'mánuði'); + case 'y': + return withoutSuffix || isFuture ? 'ár' : 'ári'; + case 'yy': + if (plural$2(number)) { + return result + (withoutSuffix || isFuture ? 'ár' : 'árum'); + } + return result + (withoutSuffix || isFuture ? 'ár' : 'ári'); + } +} + +hooks.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 : translate$5, + m : translate$5, + mm : translate$5, + h : 'klukkustund', + hh : translate$5, + d : translate$5, + dd : translate$5, + M : translate$5, + MM : translate$5, + y : translate$5, + yy : translate$5 + }, + dayOfMonthOrdinalParse: /\d{1,2}\./, + ordinal : '%d.', + week : { + dow : 1, // Monday is the first day of the week. + doy : 4 // The week that contains Jan 4th is the first week of the year. + } +}); + +//! moment.js locale configuration +//! locale : Italian [it] +//! author : Lorenzo : https://github.com/aliem +//! author: Mattia Larentis: https://github.com/nostalgiaz + +hooks.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: '[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 (s) { + return ((/^[0-9].+$/).test(s) ? 'tra' : 'in') + ' ' + s; + }, + past : '%s fa', + s : 'alcuni 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, // Monday is the first day of the week. + doy : 4 // The week that contains Jan 4th is the first week of the year. + } +}); + +//! moment.js locale configuration +//! locale : Japanese [ja] +//! author : LI Long : https://github.com/baryon + +hooks.defineLocale('ja', { + 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日 HH:mm dddd', + l : 'YYYY/MM/DD', + ll : 'YYYY年M月D日', + lll : 'YYYY年M月D日 HH:mm', + llll : 'YYYY年M月D日 HH:mm dddd' + }, + meridiemParse: /午前|午後/i, + isPM : function (input) { + return input === '午後'; + }, + meridiem : function (hour, minute, isLower) { + if (hour < 12) { + return '午前'; + } else { + return '午後'; + } + }, + calendar : { + sameDay : '[今日] LT', + nextDay : '[明日] LT', + nextWeek : '[来週]dddd LT', + lastDay : '[昨日] LT', + lastWeek : '[前週]dddd LT', + sameElse : 'L' + }, + dayOfMonthOrdinalParse : /\d{1,2}日/, + ordinal : function (number, period) { + switch (period) { + case 'd': + case 'D': + case 'DDD': + return number + '日'; + default: + return number; + } + }, + relativeTime : { + future : '%s後', + past : '%s前', + s : '数秒', + m : '1分', + mm : '%d分', + h : '1時間', + hh : '%d時間', + d : '1日', + dd : '%d日', + M : '1ヶ月', + MM : '%dヶ月', + y : '1年', + yy : '%d年' + } +}); + +//! moment.js locale configuration +//! locale : Javanese [jv] +//! author : Rony Lantip : https://github.com/lantip +//! reference: http://jv.wikipedia.org/wiki/Basa_Jawa + +hooks.defineLocale('jv', { + months : 'Januari_Februari_Maret_April_Mei_Juni_Juli_Agustus_September_Oktober_Nopember_Desember'.split('_'), + monthsShort : 'Jan_Feb_Mar_Apr_Mei_Jun_Jul_Ags_Sep_Okt_Nop_Des'.split('_'), + weekdays : 'Minggu_Senen_Seloso_Rebu_Kemis_Jemuwah_Septu'.split('_'), + weekdaysShort : 'Min_Sen_Sel_Reb_Kem_Jem_Sep'.split('_'), + weekdaysMin : 'Mg_Sn_Sl_Rb_Km_Jm_Sp'.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: /enjing|siyang|sonten|ndalu/, + meridiemHour : function (hour, meridiem) { + if (hour === 12) { + hour = 0; + } + if (meridiem === 'enjing') { + return hour; + } else if (meridiem === 'siyang') { + return hour >= 11 ? hour : hour + 12; + } else if (meridiem === 'sonten' || meridiem === 'ndalu') { + return hour + 12; + } + }, + meridiem : function (hours, minutes, isLower) { + if (hours < 11) { + return 'enjing'; + } else if (hours < 15) { + return 'siyang'; + } else if (hours < 19) { + return 'sonten'; + } else { + return 'ndalu'; + } + }, + calendar : { + sameDay : '[Dinten puniko pukul] LT', + nextDay : '[Mbenjang pukul] LT', + nextWeek : 'dddd [pukul] LT', + lastDay : '[Kala wingi pukul] LT', + lastWeek : 'dddd [kepengker pukul] LT', + sameElse : 'L' + }, + relativeTime : { + future : 'wonten ing %s', + past : '%s ingkang kepengker', + s : 'sawetawis detik', + m : 'setunggal menit', + mm : '%d menit', + h : 'setunggal jam', + hh : '%d jam', + d : 'sedinten', + dd : '%d dinten', + M : 'sewulan', + MM : '%d wulan', + y : 'setaun', + yy : '%d taun' + }, + week : { + dow : 1, // Monday is the first day of the week. + doy : 7 // The week that contains Jan 1st is the first week of the year. + } +}); + +//! moment.js locale configuration +//! locale : Georgian [ka] +//! author : Irakli Janiashvili : https://github.com/irakli-janiashvili + +hooks.defineLocale('ka', { + months : { + standalone: 'იანვარი_თებერვალი_მარტი_აპრილი_მაისი_ივნისი_ივლისი_აგვისტო_სექტემბერი_ოქტომბერი_ნოემბერი_დეკემბერი'.split('_'), + format: 'იანვარს_თებერვალს_მარტს_აპრილის_მაისს_ივნისს_ივლისს_აგვისტს_სექტემბერს_ოქტომბერს_ნოემბერს_დეკემბერს'.split('_') + }, + monthsShort : 'იან_თებ_მარ_აპრ_მაი_ივნ_ივლ_აგვ_სექ_ოქტ_ნოე_დეკ'.split('_'), + weekdays : { + standalone: 'კვირა_ორშაბათი_სამშაბათი_ოთხშაბათი_ხუთშაბათი_პარასკევი_შაბათი'.split('_'), + format: 'კვირას_ორშაბათს_სამშაბათს_ოთხშაბათს_ხუთშაბათს_პარასკევს_შაბათს'.split('_'), + isFormat: /(წინა|შემდეგ)/ + }, + weekdaysShort : 'კვი_ორშ_სამ_ოთხ_ხუთ_პარ_შაბ'.split('_'), + weekdaysMin : 'კვ_ორ_სა_ოთ_ხუ_პა_შა'.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 : '[დღეს] LT[-ზე]', + nextDay : '[ხვალ] LT[-ზე]', + lastDay : '[გუშინ] LT[-ზე]', + nextWeek : '[შემდეგ] dddd LT[-ზე]', + lastWeek : '[წინა] dddd LT-ზე', + sameElse : 'L' + }, + relativeTime : { + future : function (s) { + return (/(წამი|წუთი|საათი|წელი)/).test(s) ? + s.replace(/ი$/, 'ში') : + s + 'ში'; + }, + past : function (s) { + if ((/(წამი|წუთი|საათი|დღე|თვე)/).test(s)) { + return s.replace(/(ი|ე)$/, 'ის უკან'); + } + if ((/წელი/).test(s)) { + return s.replace(/წელი$/, 'წლის უკან'); + } + }, + s : 'რამდენიმე წამი', + 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 (number) { + if (number === 0) { + return number; + } + if (number === 1) { + return number + '-ლი'; + } + if ((number < 20) || (number <= 100 && (number % 20 === 0)) || (number % 100 === 0)) { + return 'მე-' + number; + } + return number + '-ე'; + }, + week : { + dow : 1, + doy : 7 + } +}); + +//! moment.js locale configuration +//! locale : Kazakh [kk] +//! authors : Nurlan Rakhimzhanov : https://github.com/nurlan + +var suffixes$1 = { + 0: '-ші', + 1: '-ші', + 2: '-ші', + 3: '-ші', + 4: '-ші', + 5: '-ші', + 6: '-шы', + 7: '-ші', + 8: '-ші', + 9: '-шы', + 10: '-шы', + 20: '-шы', + 30: '-шы', + 40: '-шы', + 50: '-ші', + 60: '-шы', + 70: '-ші', + 80: '-ші', + 90: '-шы', + 100: '-ші' +}; + +hooks.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 : 'бірнеше секунд', + m : 'бір минут', + mm : '%d минут', + h : 'бір сағат', + hh : '%d сағат', + d : 'бір күн', + dd : '%d күн', + M : 'бір ай', + MM : '%d ай', + y : 'бір жыл', + yy : '%d жыл' + }, + dayOfMonthOrdinalParse: /\d{1,2}-(ші|шы)/, + ordinal : function (number) { + var a = number % 10, + b = number >= 100 ? 100 : null; + return number + (suffixes$1[number] || suffixes$1[a] || suffixes$1[b]); + }, + week : { + dow : 1, // Monday is the first day of the week. + doy : 7 // The week that contains Jan 1st is the first week of the year. + } +}); + +//! moment.js locale configuration +//! locale : Cambodian [km] +//! author : Kruy Vanna : https://github.com/kruyvanna + +hooks.defineLocale('km', { + 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: 'ប៉ុន្មានវិនាទី', + m: 'មួយនាទី', + mm: '%d នាទី', + h: 'មួយម៉ោង', + hh: '%d ម៉ោង', + d: 'មួយថ្ងៃ', + dd: '%d ថ្ងៃ', + M: 'មួយខែ', + MM: '%d ខែ', + y: 'មួយឆ្នាំ', + yy: '%d ឆ្នាំ' + }, + week: { + dow: 1, // Monday is the first day of the week. + doy: 4 // The week that contains Jan 4th is the first week of the year. + } +}); + +//! moment.js locale configuration +//! locale : Kannada [kn] +//! author : Rajeev Naik : https://github.com/rajeevnaikte + +var symbolMap$7 = { + '1': '೧', + '2': '೨', + '3': '೩', + '4': '೪', + '5': '೫', + '6': '೬', + '7': '೭', + '8': '೮', + '9': '೯', + '0': '೦' +}; +var numberMap$6 = { + '೧': '1', + '೨': '2', + '೩': '3', + '೪': '4', + '೫': '5', + '೬': '6', + '೭': '7', + '೮': '8', + '೯': '9', + '೦': '0' +}; + +hooks.defineLocale('kn', { + months : 'ಜನವರಿ_ಫೆಬ್ರವರಿ_ಮಾರ್ಚ್_ಏಪ್ರಿಲ್_ಮೇ_ಜೂನ್_ಜುಲೈ_ಆಗಸ್ಟ್_ಸೆಪ್ಟೆಂಬರ್_ಅಕ್ಟೋಬರ್_ನವೆಂಬರ್_ಡಿಸೆಂಬರ್'.split('_'), + monthsShort : 'ಜನ_ಫೆಬ್ರ_ಮಾರ್ಚ್_ಏಪ್ರಿಲ್_ಮೇ_ಜೂನ್_ಜುಲೈ_ಆಗಸ್ಟ್_ಸೆಪ್ಟೆಂಬ_ಅಕ್ಟೋಬ_ನವೆಂಬ_ಡಿಸೆಂಬ'.split('_'), + monthsParseExact: true, + 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 : 'ಕೆಲವು ಕ್ಷಣಗಳು', + m : 'ಒಂದು ನಿಮಿಷ', + mm : '%d ನಿಮಿಷ', + h : 'ಒಂದು ಗಂಟೆ', + hh : '%d ಗಂಟೆ', + d : 'ಒಂದು ದಿನ', + dd : '%d ದಿನ', + M : 'ಒಂದು ತಿಂಗಳು', + MM : '%d ತಿಂಗಳು', + y : 'ಒಂದು ವರ್ಷ', + yy : '%d ವರ್ಷ' + }, + preparse: function (string) { + return string.replace(/[೧೨೩೪೫೬೭೮೯೦]/g, function (match) { + return numberMap$6[match]; + }); + }, + postformat: function (string) { + return string.replace(/\d/g, function (match) { + return symbolMap$7[match]; + }); + }, + meridiemParse: /ರಾತ್ರಿ|ಬೆಳಿಗ್ಗೆ|ಮಧ್ಯಾಹ್ನ|ಸಂಜೆ/, + meridiemHour : function (hour, meridiem) { + if (hour === 12) { + hour = 0; + } + if (meridiem === 'ರಾತ್ರಿ') { + return hour < 4 ? hour : hour + 12; + } else if (meridiem === 'ಬೆಳಿಗ್ಗೆ') { + return hour; + } else if (meridiem === 'ಮಧ್ಯಾಹ್ನ') { + return hour >= 10 ? hour : hour + 12; + } else if (meridiem === 'ಸಂಜೆ') { + return hour + 12; + } + }, + meridiem : function (hour, minute, isLower) { + if (hour < 4) { + return 'ರಾತ್ರಿ'; + } else if (hour < 10) { + return 'ಬೆಳಿಗ್ಗೆ'; + } else if (hour < 17) { + return 'ಮಧ್ಯಾಹ್ನ'; + } else if (hour < 20) { + return 'ಸಂಜೆ'; + } else { + return 'ರಾತ್ರಿ'; + } + }, + dayOfMonthOrdinalParse: /\d{1,2}(ನೇ)/, + ordinal : function (number) { + return number + 'ನೇ'; + }, + week : { + dow : 0, // Sunday is the first day of the week. + doy : 6 // The week that contains Jan 1st is the first week of the year. + } +}); + +//! moment.js locale configuration +//! locale : Korean [ko] +//! author : Kyungwook, Park : https://github.com/kyungw00k +//! author : Jeeeyul Lee + +hooks.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 : '%d일', + meridiemParse : /오전|오후/, + isPM : function (token) { + return token === '오후'; + }, + meridiem : function (hour, minute, isUpper) { + return hour < 12 ? '오전' : '오후'; + } +}); + +//! moment.js locale configuration +//! locale : Kyrgyz [ky] +//! author : Chyngyz Arystan uulu : https://github.com/chyngyz + + +var suffixes$2 = { + 0: '-чү', + 1: '-чи', + 2: '-чи', + 3: '-чү', + 4: '-чү', + 5: '-чи', + 6: '-чы', + 7: '-чи', + 8: '-чи', + 9: '-чу', + 10: '-чу', + 20: '-чы', + 30: '-чу', + 40: '-чы', + 50: '-чү', + 60: '-чы', + 70: '-чи', + 80: '-чи', + 90: '-чу', + 100: '-чү' +}; + +hooks.defineLocale('ky', { + 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 : 'бирнече секунд', + m : 'бир мүнөт', + mm : '%d мүнөт', + h : 'бир саат', + hh : '%d саат', + d : 'бир күн', + dd : '%d күн', + M : 'бир ай', + MM : '%d ай', + y : 'бир жыл', + yy : '%d жыл' + }, + dayOfMonthOrdinalParse: /\d{1,2}-(чи|чы|чү|чу)/, + ordinal : function (number) { + var a = number % 10, + b = number >= 100 ? 100 : null; + return number + (suffixes$2[number] || suffixes$2[a] || suffixes$2[b]); + }, + week : { + dow : 1, // Monday is the first day of the week. + doy : 7 // The week that contains Jan 1st is the first week of the year. + } +}); + +//! moment.js locale configuration +//! locale : Luxembourgish [lb] +//! author : mweimerskirch : https://github.com/mweimerskirch +//! author : David Raison : https://github.com/kwisatz + +function processRelativeTime$5(number, withoutSuffix, key, isFuture) { + var format = { + '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 withoutSuffix ? format[key][0] : format[key][1]; +} +function processFutureTime(string) { + var number = string.substr(0, string.indexOf(' ')); + if (eifelerRegelAppliesToNumber(number)) { + return 'a ' + string; + } + return 'an ' + string; +} +function processPastTime(string) { + var number = string.substr(0, string.indexOf(' ')); + if (eifelerRegelAppliesToNumber(number)) { + return 'viru ' + string; + } + return 'virun ' + string; +} +/** + * Returns true if the word before the given number loses the '-n' ending. + * e.g. 'an 10 Deeg' but 'a 5 Deeg' + * + * @param number {integer} + * @returns {boolean} + */ +function eifelerRegelAppliesToNumber(number) { + number = parseInt(number, 10); + if (isNaN(number)) { + return false; + } + if (number < 0) { + // Negative Number --> always true + return true; + } else if (number < 10) { + // Only 1 digit + if (4 <= number && number <= 7) { + return true; + } + return false; + } else if (number < 100) { + // 2 digits + var lastDigit = number % 10, firstDigit = number / 10; + if (lastDigit === 0) { + return eifelerRegelAppliesToNumber(firstDigit); + } + return eifelerRegelAppliesToNumber(lastDigit); + } else if (number < 10000) { + // 3 or 4 digits --> recursively check first digit + while (number >= 10) { + number = number / 10; + } + return eifelerRegelAppliesToNumber(number); + } else { + // Anything larger than 4 digits: recursively check first n-3 digits + number = number / 1000; + return eifelerRegelAppliesToNumber(number); + } +} + +hooks.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 : true, + 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 : true, + 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 () { + // Different date string for 'Dënschdeg' (Tuesday) and 'Donneschdeg' (Thursday) due to phonological rule + switch (this.day()) { + case 2: + case 4: + return '[Leschten] dddd [um] LT'; + default: + return '[Leschte] dddd [um] LT'; + } + } + }, + relativeTime : { + future : processFutureTime, + past : processPastTime, + s : 'e puer Sekonnen', + m : processRelativeTime$5, + mm : '%d Minutten', + h : processRelativeTime$5, + hh : '%d Stonnen', + d : processRelativeTime$5, + dd : '%d Deeg', + M : processRelativeTime$5, + MM : '%d Méint', + y : processRelativeTime$5, + yy : '%d Joer' + }, + dayOfMonthOrdinalParse: /\d{1,2}\./, + ordinal: '%d.', + week: { + dow: 1, // Monday is the first day of the week. + doy: 4 // The week that contains Jan 4th is the first week of the year. + } +}); + +//! moment.js locale configuration +//! locale : Lao [lo] +//! author : Ryan Hart : https://github.com/ryanhart2 + +hooks.defineLocale('lo', { + months : 'ມັງກອນ_ກຸມພາ_ມີນາ_ເມສາ_ພຶດສະພາ_ມິຖຸນາ_ກໍລະກົດ_ສິງຫາ_ກັນຍາ_ຕຸລາ_ພະຈິກ_ທັນວາ'.split('_'), + monthsShort : 'ມັງກອນ_ກຸມພາ_ມີນາ_ເມສາ_ພຶດສະພາ_ມິຖຸນາ_ກໍລະກົດ_ສິງຫາ_ກັນຍາ_ຕຸລາ_ພະຈິກ_ທັນວາ'.split('_'), + weekdays : 'ອາທິດ_ຈັນ_ອັງຄານ_ພຸດ_ພະຫັດ_ສຸກ_ເສົາ'.split('_'), + weekdaysShort : 'ທິດ_ຈັນ_ອັງຄານ_ພຸດ_ພະຫັດ_ສຸກ_ເສົາ'.split('_'), + weekdaysMin : 'ທ_ຈ_ອຄ_ພ_ພຫ_ສກ_ສ'.split('_'), + weekdaysParseExact : true, + 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 (input) { + return input === 'ຕອນແລງ'; + }, + meridiem : function (hour, minute, isLower) { + if (hour < 12) { + return 'ຕອນເຊົ້າ'; + } else { + return 'ຕອນແລງ'; + } + }, + calendar : { + sameDay : '[ມື້ນີ້ເວລາ] LT', + nextDay : '[ມື້ອື່ນເວລາ] LT', + nextWeek : '[ວັນ]dddd[ໜ້າເວລາ] LT', + lastDay : '[ມື້ວານນີ້ເວລາ] LT', + lastWeek : '[ວັນ]dddd[ແລ້ວນີ້ເວລາ] LT', + sameElse : 'L' + }, + relativeTime : { + future : 'ອີກ %s', + past : '%sຜ່ານມາ', + s : 'ບໍ່ເທົ່າໃດວິນາທີ', + m : '1 ນາທີ', + mm : '%d ນາທີ', + h : '1 ຊົ່ວໂມງ', + hh : '%d ຊົ່ວໂມງ', + d : '1 ມື້', + dd : '%d ມື້', + M : '1 ເດືອນ', + MM : '%d ເດືອນ', + y : '1 ປີ', + yy : '%d ປີ' + }, + dayOfMonthOrdinalParse: /(ທີ່)\d{1,2}/, + ordinal : function (number) { + return 'ທີ່' + number; + } +}); + +//! moment.js locale configuration +//! locale : Lithuanian [lt] +//! author : Mindaugas Mozūras : https://github.com/mmozuras + +var units = { + '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 translateSeconds(number, withoutSuffix, key, isFuture) { + if (withoutSuffix) { + return 'kelios sekundės'; + } else { + return isFuture ? 'kelių sekundžių' : 'kelias sekundes'; + } +} +function translateSingular(number, withoutSuffix, key, isFuture) { + return withoutSuffix ? forms(key)[0] : (isFuture ? forms(key)[1] : forms(key)[2]); +} +function special(number) { + return number % 10 === 0 || (number > 10 && number < 20); +} +function forms(key) { + return units[key].split('_'); +} +function translate$6(number, withoutSuffix, key, isFuture) { + var result = number + ' '; + if (number === 1) { + return result + translateSingular(number, withoutSuffix, key[0], isFuture); + } else if (withoutSuffix) { + return result + (special(number) ? forms(key)[1] : forms(key)[0]); + } else { + if (isFuture) { + return result + forms(key)[1]; + } else { + return result + (special(number) ? forms(key)[1] : forms(key)[2]); + } + } +} +hooks.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 : true, + 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 : translateSeconds, + m : translateSingular, + mm : translate$6, + h : translateSingular, + hh : translate$6, + d : translateSingular, + dd : translate$6, + M : translateSingular, + MM : translate$6, + y : translateSingular, + yy : translate$6 + }, + dayOfMonthOrdinalParse: /\d{1,2}-oji/, + ordinal : function (number) { + return number + '-oji'; + }, + week : { + dow : 1, // Monday is the first day of the week. + doy : 4 // The week that contains Jan 4th is the first week of the year. + } +}); + +//! moment.js locale configuration +//! locale : Latvian [lv] +//! author : Kristaps Karlsons : https://github.com/skakri +//! author : Jānis Elmeris : https://github.com/JanisE + +var units$1 = { + 'm': 'minūtes_minūtēm_minūte_minūtes'.split('_'), + 'mm': 'minūtes_minūtēm_minūte_minūtes'.split('_'), + 'h': 'stundas_stundām_stunda_stundas'.split('_'), + 'hh': 'stundas_stundām_stunda_stundas'.split('_'), + 'd': 'dienas_dienām_diena_dienas'.split('_'), + 'dd': 'dienas_dienām_diena_dienas'.split('_'), + 'M': 'mēneša_mēnešiem_mēnesis_mēneši'.split('_'), + 'MM': 'mēneša_mēnešiem_mēnesis_mēneši'.split('_'), + 'y': 'gada_gadiem_gads_gadi'.split('_'), + 'yy': 'gada_gadiem_gads_gadi'.split('_') +}; +/** + * @param withoutSuffix boolean true = a length of time; false = before/after a period of time. + */ +function format$1(forms, number, withoutSuffix) { + if (withoutSuffix) { + // E.g. "21 minūte", "3 minūtes". + return number % 10 === 1 && number % 100 !== 11 ? forms[2] : forms[3]; + } else { + // E.g. "21 minūtes" as in "pēc 21 minūtes". + // E.g. "3 minūtēm" as in "pēc 3 minūtēm". + return number % 10 === 1 && number % 100 !== 11 ? forms[0] : forms[1]; + } +} +function relativeTimeWithPlural$1(number, withoutSuffix, key) { + return number + ' ' + format$1(units$1[key], number, withoutSuffix); +} +function relativeTimeWithSingular(number, withoutSuffix, key) { + return format$1(units$1[key], number, withoutSuffix); +} +function relativeSeconds(number, withoutSuffix) { + return withoutSuffix ? 'dažas sekundes' : 'dažām sekundēm'; +} + +hooks.defineLocale('lv', { + months : 'janvāris_februāris_marts_aprīlis_maijs_jūnijs_jūlijs_augusts_septembris_oktobris_novembris_decembris'.split('_'), + monthsShort : 'jan_feb_mar_apr_mai_jūn_jūl_aug_sep_okt_nov_dec'.split('_'), + weekdays : 'svētdiena_pirmdiena_otrdiena_trešdiena_ceturtdiena_piektdiena_sestdiena'.split('_'), + weekdaysShort : 'Sv_P_O_T_C_Pk_S'.split('_'), + weekdaysMin : 'Sv_P_O_T_C_Pk_S'.split('_'), + weekdaysParseExact : true, + longDateFormat : { + LT : 'HH:mm', + LTS : 'HH:mm:ss', + L : 'DD.MM.YYYY.', + LL : 'YYYY. [gada] D. MMMM', + LLL : 'YYYY. [gada] D. MMMM, HH:mm', + LLLL : 'YYYY. [gada] D. MMMM, dddd, HH:mm' + }, + calendar : { + sameDay : '[Šodien pulksten] LT', + nextDay : '[Rīt pulksten] LT', + nextWeek : 'dddd [pulksten] LT', + lastDay : '[Vakar pulksten] LT', + lastWeek : '[Pagājušā] dddd [pulksten] LT', + sameElse : 'L' + }, + relativeTime : { + future : 'pēc %s', + past : 'pirms %s', + s : relativeSeconds, + m : relativeTimeWithSingular, + mm : relativeTimeWithPlural$1, + h : relativeTimeWithSingular, + hh : relativeTimeWithPlural$1, + d : relativeTimeWithSingular, + dd : relativeTimeWithPlural$1, + M : relativeTimeWithSingular, + MM : relativeTimeWithPlural$1, + y : relativeTimeWithSingular, + yy : relativeTimeWithPlural$1 + }, + dayOfMonthOrdinalParse: /\d{1,2}\./, + ordinal : '%d.', + week : { + dow : 1, // Monday is the first day of the week. + doy : 4 // The week that contains Jan 4th is the first week of the year. + } +}); + +//! moment.js locale configuration +//! locale : Montenegrin [me] +//! author : Miodrag Nikač : https://github.com/miodragnikac + +var translator = { + words: { //Different grammatical cases + 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 (number, wordKey) { + return number === 1 ? wordKey[0] : (number >= 2 && number <= 4 ? wordKey[1] : wordKey[2]); + }, + translate: function (number, withoutSuffix, key) { + var wordKey = translator.words[key]; + if (key.length === 1) { + return withoutSuffix ? wordKey[0] : wordKey[1]; + } else { + return number + ' ' + translator.correctGrammaticalCase(number, wordKey); + } + } +}; + +hooks.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 : true, + 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 : true, + 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 lastWeekDays = [ + '[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 lastWeekDays[this.day()]; + }, + sameElse : 'L' + }, + relativeTime : { + future : 'za %s', + past : 'prije %s', + s : 'nekoliko sekundi', + m : translator.translate, + mm : translator.translate, + h : translator.translate, + hh : translator.translate, + d : 'dan', + dd : translator.translate, + M : 'mjesec', + MM : translator.translate, + y : 'godinu', + yy : translator.translate + }, + dayOfMonthOrdinalParse: /\d{1,2}\./, + ordinal : '%d.', + week : { + dow : 1, // Monday is the first day of the week. + doy : 7 // The week that contains Jan 1st is the first week of the year. + } +}); + +//! moment.js locale configuration +//! locale : Maori [mi] +//! author : John Corrigan : https://github.com/johnideal + +hooks.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', + 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, // Monday is the first day of the week. + doy : 4 // The week that contains Jan 4th is the first week of the year. + } +}); + +//! moment.js locale configuration +//! locale : Macedonian [mk] +//! author : Borislav Mickov : https://github.com/B0k0 + +hooks.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 : 'неколку секунди', + m : 'минута', + mm : '%d минути', + h : 'час', + hh : '%d часа', + d : 'ден', + dd : '%d дена', + M : 'месец', + MM : '%d месеци', + y : 'година', + yy : '%d години' + }, + dayOfMonthOrdinalParse: /\d{1,2}-(ев|ен|ти|ви|ри|ми)/, + ordinal : function (number) { + var lastDigit = number % 10, + last2Digits = number % 100; + if (number === 0) { + return number + '-ев'; + } else if (last2Digits === 0) { + return number + '-ен'; + } else if (last2Digits > 10 && last2Digits < 20) { + return number + '-ти'; + } else if (lastDigit === 1) { + return number + '-ви'; + } else if (lastDigit === 2) { + return number + '-ри'; + } else if (lastDigit === 7 || lastDigit === 8) { + return number + '-ми'; + } else { + return number + '-ти'; + } + }, + week : { + dow : 1, // Monday is the first day of the week. + doy : 7 // The week that contains Jan 1st is the first week of the year. + } +}); + +//! moment.js locale configuration +//! locale : Malayalam [ml] +//! author : Floyd Pink : https://github.com/floydpink + +hooks.defineLocale('ml', { + months : 'ജനുവരി_ഫെബ്രുവരി_മാർച്ച്_ഏപ്രിൽ_മേയ്_ജൂൺ_ജൂലൈ_ഓഗസ്റ്റ്_സെപ്റ്റംബർ_ഒക്ടോബർ_നവംബർ_ഡിസംബർ'.split('_'), + monthsShort : 'ജനു._ഫെബ്രു._മാർ._ഏപ്രി._മേയ്_ജൂൺ_ജൂലൈ._ഓഗ._സെപ്റ്റ._ഒക്ടോ._നവം._ഡിസം.'.split('_'), + monthsParseExact : true, + 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 : 'അൽപ നിമിഷങ്ങൾ', + m : 'ഒരു മിനിറ്റ്', + mm : '%d മിനിറ്റ്', + h : 'ഒരു മണിക്കൂർ', + hh : '%d മണിക്കൂർ', + d : 'ഒരു ദിവസം', + dd : '%d ദിവസം', + M : 'ഒരു മാസം', + MM : '%d മാസം', + y : 'ഒരു വർഷം', + yy : '%d വർഷം' + }, + meridiemParse: /രാത്രി|രാവിലെ|ഉച്ച കഴിഞ്ഞ്|വൈകുന്നേരം|രാത്രി/i, + meridiemHour : function (hour, meridiem) { + if (hour === 12) { + hour = 0; + } + if ((meridiem === 'രാത്രി' && hour >= 4) || + meridiem === 'ഉച്ച കഴിഞ്ഞ്' || + meridiem === 'വൈകുന്നേരം') { + return hour + 12; + } else { + return hour; + } + }, + meridiem : function (hour, minute, isLower) { + if (hour < 4) { + return 'രാത്രി'; + } else if (hour < 12) { + return 'രാവിലെ'; + } else if (hour < 17) { + return 'ഉച്ച കഴിഞ്ഞ്'; + } else if (hour < 20) { + return 'വൈകുന്നേരം'; + } else { + return 'രാത്രി'; + } + } +}); + +//! moment.js locale configuration +//! locale : Marathi [mr] +//! author : Harshad Kale : https://github.com/kalehv +//! author : Vivek Athalye : https://github.com/vnathalye + +var symbolMap$8 = { + '1': '१', + '2': '२', + '3': '३', + '4': '४', + '5': '५', + '6': '६', + '7': '७', + '8': '८', + '9': '९', + '0': '०' +}; +var numberMap$7 = { + '१': '1', + '२': '2', + '३': '3', + '४': '4', + '५': '5', + '६': '6', + '७': '7', + '८': '8', + '९': '9', + '०': '0' +}; + +function relativeTimeMr(number, withoutSuffix, string, isFuture) +{ + var output = ''; + if (withoutSuffix) { + switch (string) { + case 's': output = 'काही सेकंद'; break; + case 'm': output = 'एक मिनिट'; break; + case 'mm': output = '%d मिनिटे'; break; + case 'h': output = 'एक तास'; break; + case 'hh': output = '%d तास'; break; + case 'd': output = 'एक दिवस'; break; + case 'dd': output = '%d दिवस'; break; + case 'M': output = 'एक महिना'; break; + case 'MM': output = '%d महिने'; break; + case 'y': output = 'एक वर्ष'; break; + case 'yy': output = '%d वर्षे'; break; + } + } + else { + switch (string) { + case 's': output = 'काही सेकंदां'; break; + case 'm': output = 'एका मिनिटा'; break; + case 'mm': output = '%d मिनिटां'; break; + case 'h': output = 'एका तासा'; break; + case 'hh': output = '%d तासां'; break; + case 'd': output = 'एका दिवसा'; break; + case 'dd': output = '%d दिवसां'; break; + case 'M': output = 'एका महिन्या'; break; + case 'MM': output = '%d महिन्यां'; break; + case 'y': output = 'एका वर्षा'; break; + case 'yy': output = '%d वर्षां'; break; + } + } + return output.replace(/%d/i, number); +} + +hooks.defineLocale('mr', { + months : 'जानेवारी_फेब्रुवारी_मार्च_एप्रिल_मे_जून_जुलै_ऑगस्ट_सप्टेंबर_ऑक्टोबर_नोव्हेंबर_डिसेंबर'.split('_'), + monthsShort: 'जाने._फेब्रु._मार्च._एप्रि._मे._जून._जुलै._ऑग._सप्टें._ऑक्टो._नोव्हें._डिसें.'.split('_'), + monthsParseExact : true, + 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: relativeTimeMr, + m: relativeTimeMr, + mm: relativeTimeMr, + h: relativeTimeMr, + hh: relativeTimeMr, + d: relativeTimeMr, + dd: relativeTimeMr, + M: relativeTimeMr, + MM: relativeTimeMr, + y: relativeTimeMr, + yy: relativeTimeMr + }, + preparse: function (string) { + return string.replace(/[१२३४५६७८९०]/g, function (match) { + return numberMap$7[match]; + }); + }, + postformat: function (string) { + return string.replace(/\d/g, function (match) { + return symbolMap$8[match]; + }); + }, + meridiemParse: /रात्री|सकाळी|दुपारी|सायंकाळी/, + meridiemHour : function (hour, meridiem) { + if (hour === 12) { + hour = 0; + } + if (meridiem === 'रात्री') { + return hour < 4 ? hour : hour + 12; + } else if (meridiem === 'सकाळी') { + return hour; + } else if (meridiem === 'दुपारी') { + return hour >= 10 ? hour : hour + 12; + } else if (meridiem === 'सायंकाळी') { + return hour + 12; + } + }, + meridiem: function (hour, minute, isLower) { + if (hour < 4) { + return 'रात्री'; + } else if (hour < 10) { + return 'सकाळी'; + } else if (hour < 17) { + return 'दुपारी'; + } else if (hour < 20) { + return 'सायंकाळी'; + } else { + return 'रात्री'; + } + }, + week : { + dow : 0, // Sunday is the first day of the week. + doy : 6 // The week that contains Jan 1st is the first week of the year. + } +}); + +//! moment.js locale configuration +//! locale : Malay [ms-my] +//! note : DEPRECATED, the correct one is [ms] +//! author : Weldan Jamili : https://github.com/weldan + +hooks.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 (hour, meridiem) { + if (hour === 12) { + hour = 0; + } + if (meridiem === 'pagi') { + return hour; + } else if (meridiem === 'tengahari') { + return hour >= 11 ? hour : hour + 12; + } else if (meridiem === 'petang' || meridiem === 'malam') { + return hour + 12; + } + }, + meridiem : function (hours, minutes, isLower) { + if (hours < 11) { + return 'pagi'; + } else if (hours < 15) { + return 'tengahari'; + } else if (hours < 19) { + return 'petang'; + } else { + return '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', + 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, // Monday is the first day of the week. + doy : 7 // The week that contains Jan 1st is the first week of the year. + } +}); + +//! moment.js locale configuration +//! locale : Malay [ms] +//! author : Weldan Jamili : https://github.com/weldan + +hooks.defineLocale('ms', { + 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 (hour, meridiem) { + if (hour === 12) { + hour = 0; + } + if (meridiem === 'pagi') { + return hour; + } else if (meridiem === 'tengahari') { + return hour >= 11 ? hour : hour + 12; + } else if (meridiem === 'petang' || meridiem === 'malam') { + return hour + 12; + } + }, + meridiem : function (hours, minutes, isLower) { + if (hours < 11) { + return 'pagi'; + } else if (hours < 15) { + return 'tengahari'; + } else if (hours < 19) { + return 'petang'; + } else { + return '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', + 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, // Monday is the first day of the week. + doy : 7 // The week that contains Jan 1st is the first week of the year. + } +}); + +//! moment.js locale configuration +//! locale : Burmese [my] +//! author : Squar team, mysquar.com +//! author : David Rossellat : https://github.com/gholadr +//! author : Tin Aung Lin : https://github.com/thanyawzinmin + +var symbolMap$9 = { + '1': '၁', + '2': '၂', + '3': '၃', + '4': '၄', + '5': '၅', + '6': '၆', + '7': '၇', + '8': '၈', + '9': '၉', + '0': '၀' +}; +var numberMap$8 = { + '၁': '1', + '၂': '2', + '၃': '3', + '၄': '4', + '၅': '5', + '၆': '6', + '၇': '7', + '၈': '8', + '၉': '9', + '၀': '0' +}; + +hooks.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: 'စက္ကန်.အနည်းငယ်', + m: 'တစ်မိနစ်', + mm: '%d မိနစ်', + h: 'တစ်နာရီ', + hh: '%d နာရီ', + d: 'တစ်ရက်', + dd: '%d ရက်', + M: 'တစ်လ', + MM: '%d လ', + y: 'တစ်နှစ်', + yy: '%d နှစ်' + }, + preparse: function (string) { + return string.replace(/[၁၂၃၄၅၆၇၈၉၀]/g, function (match) { + return numberMap$8[match]; + }); + }, + postformat: function (string) { + return string.replace(/\d/g, function (match) { + return symbolMap$9[match]; + }); + }, + week: { + dow: 1, // Monday is the first day of the week. + doy: 4 // The week that contains Jan 1st is the first week of the year. + } +}); + +//! moment.js locale configuration +//! locale : Norwegian Bokmål [nb] +//! authors : Espen Hovlandsdal : https://github.com/rexxars +//! Sigurd Gartmann : https://github.com/sigurdga + +hooks.defineLocale('nb', { + months : 'januar_februar_mars_april_mai_juni_juli_august_september_oktober_november_desember'.split('_'), + monthsShort : 'jan._feb._mars_april_mai_juni_juli_aug._sep._okt._nov._des.'.split('_'), + monthsParseExact : true, + 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 : true, + 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', + m : 'ett minutt', + mm : '%d minutter', + h : 'en time', + hh : '%d timer', + d : 'en dag', + dd : '%d dager', + M : 'en måned', + MM : '%d måneder', + y : 'ett år', + yy : '%d år' + }, + dayOfMonthOrdinalParse: /\d{1,2}\./, + ordinal : '%d.', + week : { + dow : 1, // Monday is the first day of the week. + doy : 4 // The week that contains Jan 4th is the first week of the year. + } +}); + +//! moment.js locale configuration +//! locale : Nepalese [ne] +//! author : suvash : https://github.com/suvash + +var symbolMap$10 = { + '1': '१', + '2': '२', + '3': '३', + '4': '४', + '5': '५', + '6': '६', + '7': '७', + '8': '८', + '9': '९', + '0': '०' +}; +var numberMap$9 = { + '१': '1', + '२': '2', + '३': '3', + '४': '4', + '५': '5', + '६': '6', + '७': '7', + '८': '8', + '९': '9', + '०': '0' +}; + +hooks.defineLocale('ne', { + months : 'जनवरी_फेब्रुवरी_मार्च_अप्रिल_मई_जुन_जुलाई_अगष्ट_सेप्टेम्बर_अक्टोबर_नोभेम्बर_डिसेम्बर'.split('_'), + monthsShort : 'जन._फेब्रु._मार्च_अप्रि._मई_जुन_जुलाई._अग._सेप्ट._अक्टो._नोभे._डिसे.'.split('_'), + monthsParseExact : true, + weekdays : 'आइतबार_सोमबार_मङ्गलबार_बुधबार_बिहिबार_शुक्रबार_शनिबार'.split('_'), + weekdaysShort : 'आइत._सोम._मङ्गल._बुध._बिहि._शुक्र._शनि.'.split('_'), + weekdaysMin : 'आ._सो._मं._बु._बि._शु._श.'.split('_'), + weekdaysParseExact : true, + 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 (string) { + return string.replace(/[१२३४५६७८९०]/g, function (match) { + return numberMap$9[match]; + }); + }, + postformat: function (string) { + return string.replace(/\d/g, function (match) { + return symbolMap$10[match]; + }); + }, + meridiemParse: /राति|बिहान|दिउँसो|साँझ/, + meridiemHour : function (hour, meridiem) { + if (hour === 12) { + hour = 0; + } + if (meridiem === 'राति') { + return hour < 4 ? hour : hour + 12; + } else if (meridiem === 'बिहान') { + return hour; + } else if (meridiem === 'दिउँसो') { + return hour >= 10 ? hour : hour + 12; + } else if (meridiem === 'साँझ') { + return hour + 12; + } + }, + meridiem : function (hour, minute, isLower) { + if (hour < 3) { + return 'राति'; + } else if (hour < 12) { + return 'बिहान'; + } else if (hour < 16) { + return 'दिउँसो'; + } else if (hour < 20) { + return 'साँझ'; + } else { + return 'राति'; + } + }, + calendar : { + sameDay : '[आज] LT', + nextDay : '[भोलि] LT', + nextWeek : '[आउँदो] dddd[,] LT', + lastDay : '[हिजो] 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 बर्ष' + }, + week : { + dow : 0, // Sunday is the first day of the week. + doy : 6 // The week that contains Jan 1st is the first week of the year. + } +}); + +//! moment.js locale configuration +//! locale : Dutch (Belgium) [nl-be] +//! author : Joris Röling : https://github.com/jorisroling +//! author : Jacob Middag : https://github.com/middagj + +var monthsShortWithDots$1 = 'jan._feb._mrt._apr._mei_jun._jul._aug._sep._okt._nov._dec.'.split('_'); +var monthsShortWithoutDots$1 = 'jan_feb_mrt_apr_mei_jun_jul_aug_sep_okt_nov_dec'.split('_'); + +var monthsParse = [/^jan/i, /^feb/i, /^maart|mrt.?$/i, /^apr/i, /^mei$/i, /^jun[i.]?$/i, /^jul[i.]?$/i, /^aug/i, /^sep/i, /^okt/i, /^nov/i, /^dec/i]; +var monthsRegex$1 = /^(januari|februari|maart|april|mei|april|ju[nl]i|augustus|september|oktober|november|december|jan\.?|feb\.?|mrt\.?|apr\.?|ju[nl]\.?|aug\.?|sep\.?|okt\.?|nov\.?|dec\.?)/i; + +hooks.defineLocale('nl-be', { + months : 'januari_februari_maart_april_mei_juni_juli_augustus_september_oktober_november_december'.split('_'), + monthsShort : function (m, format) { + if (!m) { + return monthsShortWithDots$1; + } else if (/-MMM-/.test(format)) { + return monthsShortWithoutDots$1[m.month()]; + } else { + return monthsShortWithDots$1[m.month()]; + } + }, + + monthsRegex: monthsRegex$1, + monthsShortRegex: monthsRegex$1, + monthsStrictRegex: /^(januari|februari|maart|mei|ju[nl]i|april|augustus|september|oktober|november|december)/i, + monthsShortStrictRegex: /^(jan\.?|feb\.?|mrt\.?|apr\.?|mei|ju[nl]\.?|aug\.?|sep\.?|okt\.?|nov\.?|dec\.?)/i, + + monthsParse : monthsParse, + longMonthsParse : monthsParse, + shortMonthsParse : monthsParse, + + weekdays : 'zondag_maandag_dinsdag_woensdag_donderdag_vrijdag_zaterdag'.split('_'), + weekdaysShort : 'zo._ma._di._wo._do._vr._za.'.split('_'), + weekdaysMin : 'Zo_Ma_Di_Wo_Do_Vr_Za'.split('_'), + weekdaysParseExact : true, + 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: '[vandaag om] LT', + nextDay: '[morgen om] LT', + nextWeek: 'dddd [om] LT', + lastDay: '[gisteren om] LT', + lastWeek: '[afgelopen] dddd [om] LT', + sameElse: 'L' + }, + relativeTime : { + future : 'over %s', + past : '%s geleden', + s : 'een paar seconden', + m : 'één minuut', + mm : '%d minuten', + h : 'één uur', + hh : '%d uur', + d : 'één dag', + dd : '%d dagen', + M : 'één maand', + MM : '%d maanden', + y : 'één jaar', + yy : '%d jaar' + }, + dayOfMonthOrdinalParse: /\d{1,2}(ste|de)/, + ordinal : function (number) { + return number + ((number === 1 || number === 8 || number >= 20) ? 'ste' : 'de'); + }, + week : { + dow : 1, // Monday is the first day of the week. + doy : 4 // The week that contains Jan 4th is the first week of the year. + } +}); + +//! moment.js locale configuration +//! locale : Dutch [nl] +//! author : Joris Röling : https://github.com/jorisroling +//! author : Jacob Middag : https://github.com/middagj + +var monthsShortWithDots$2 = 'jan._feb._mrt._apr._mei_jun._jul._aug._sep._okt._nov._dec.'.split('_'); +var monthsShortWithoutDots$2 = 'jan_feb_mrt_apr_mei_jun_jul_aug_sep_okt_nov_dec'.split('_'); + +var monthsParse$1 = [/^jan/i, /^feb/i, /^maart|mrt.?$/i, /^apr/i, /^mei$/i, /^jun[i.]?$/i, /^jul[i.]?$/i, /^aug/i, /^sep/i, /^okt/i, /^nov/i, /^dec/i]; +var monthsRegex$2 = /^(januari|februari|maart|april|mei|april|ju[nl]i|augustus|september|oktober|november|december|jan\.?|feb\.?|mrt\.?|apr\.?|ju[nl]\.?|aug\.?|sep\.?|okt\.?|nov\.?|dec\.?)/i; + +hooks.defineLocale('nl', { + months : 'januari_februari_maart_april_mei_juni_juli_augustus_september_oktober_november_december'.split('_'), + monthsShort : function (m, format) { + if (!m) { + return monthsShortWithDots$2; + } else if (/-MMM-/.test(format)) { + return monthsShortWithoutDots$2[m.month()]; + } else { + return monthsShortWithDots$2[m.month()]; + } + }, + + monthsRegex: monthsRegex$2, + monthsShortRegex: monthsRegex$2, + monthsStrictRegex: /^(januari|februari|maart|mei|ju[nl]i|april|augustus|september|oktober|november|december)/i, + monthsShortStrictRegex: /^(jan\.?|feb\.?|mrt\.?|apr\.?|mei|ju[nl]\.?|aug\.?|sep\.?|okt\.?|nov\.?|dec\.?)/i, + + monthsParse : monthsParse$1, + longMonthsParse : monthsParse$1, + shortMonthsParse : monthsParse$1, + + weekdays : 'zondag_maandag_dinsdag_woensdag_donderdag_vrijdag_zaterdag'.split('_'), + weekdaysShort : 'zo._ma._di._wo._do._vr._za.'.split('_'), + weekdaysMin : 'Zo_Ma_Di_Wo_Do_Vr_Za'.split('_'), + weekdaysParseExact : true, + 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: '[vandaag om] LT', + nextDay: '[morgen om] LT', + nextWeek: 'dddd [om] LT', + lastDay: '[gisteren om] LT', + lastWeek: '[afgelopen] dddd [om] LT', + sameElse: 'L' + }, + relativeTime : { + future : 'over %s', + past : '%s geleden', + s : 'een paar seconden', + m : 'één minuut', + mm : '%d minuten', + h : 'één uur', + hh : '%d uur', + d : 'één dag', + dd : '%d dagen', + M : 'één maand', + MM : '%d maanden', + y : 'één jaar', + yy : '%d jaar' + }, + dayOfMonthOrdinalParse: /\d{1,2}(ste|de)/, + ordinal : function (number) { + return number + ((number === 1 || number === 8 || number >= 20) ? 'ste' : 'de'); + }, + week : { + dow : 1, // Monday is the first day of the week. + doy : 4 // The week that contains Jan 4th is the first week of the year. + } +}); + +//! moment.js locale configuration +//! locale : Nynorsk [nn] +//! author : https://github.com/mechuwind + +hooks.defineLocale('nn', { + months : 'januar_februar_mars_april_mai_juni_juli_august_september_oktober_november_desember'.split('_'), + monthsShort : 'jan_feb_mar_apr_mai_jun_jul_aug_sep_okt_nov_des'.split('_'), + weekdays : 'sundag_måndag_tysdag_onsdag_torsdag_fredag_laurdag'.split('_'), + weekdaysShort : 'sun_mån_tys_ons_tor_fre_lau'.split('_'), + weekdaysMin : 'su_må_ty_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 [kl.] H:mm', + LLLL : 'dddd D. MMMM YYYY [kl.] HH:mm' + }, + calendar : { + sameDay: '[I dag klokka] LT', + nextDay: '[I morgon klokka] LT', + nextWeek: 'dddd [klokka] LT', + lastDay: '[I går klokka] LT', + lastWeek: '[Føregåande] dddd [klokka] LT', + sameElse: 'L' + }, + relativeTime : { + future : 'om %s', + past : '%s sidan', + s : 'nokre sekund', + m : 'eit minutt', + mm : '%d minutt', + h : 'ein time', + hh : '%d timar', + d : 'ein dag', + dd : '%d dagar', + M : 'ein månad', + MM : '%d månader', + y : 'eit år', + yy : '%d år' + }, + dayOfMonthOrdinalParse: /\d{1,2}\./, + ordinal : '%d.', + week : { + dow : 1, // Monday is the first day of the week. + doy : 4 // The week that contains Jan 4th is the first week of the year. + } +}); + +//! moment.js locale configuration +//! locale : Punjabi (India) [pa-in] +//! author : Harpreet Singh : https://github.com/harpreetkhalsagtbit + +var symbolMap$11 = { + '1': '੧', + '2': '੨', + '3': '੩', + '4': '੪', + '5': '੫', + '6': '੬', + '7': '੭', + '8': '੮', + '9': '੯', + '0': '੦' +}; +var numberMap$10 = { + '੧': '1', + '੨': '2', + '੩': '3', + '੪': '4', + '੫': '5', + '੬': '6', + '੭': '7', + '੮': '8', + '੯': '9', + '੦': '0' +}; + +hooks.defineLocale('pa-in', { + // There are months name as per Nanakshahi Calender but they are not used as rigidly in modern Punjabi. + months : 'ਜਨਵਰੀ_ਫ਼ਰਵਰੀ_ਮਾਰਚ_ਅਪ੍ਰੈਲ_ਮਈ_ਜੂਨ_ਜੁਲਾਈ_ਅਗਸਤ_ਸਤੰਬਰ_ਅਕਤੂਬਰ_ਨਵੰਬਰ_ਦਸੰਬਰ'.split('_'), + monthsShort : 'ਜਨਵਰੀ_ਫ਼ਰਵਰੀ_ਮਾਰਚ_ਅਪ੍ਰੈਲ_ਮਈ_ਜੂਨ_ਜੁਲਾਈ_ਅਗਸਤ_ਸਤੰਬਰ_ਅਕਤੂਬਰ_ਨਵੰਬਰ_ਦਸੰਬਰ'.split('_'), + 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 : 'ਕੁਝ ਸਕਿੰਟ', + m : 'ਇਕ ਮਿੰਟ', + mm : '%d ਮਿੰਟ', + h : 'ਇੱਕ ਘੰਟਾ', + hh : '%d ਘੰਟੇ', + d : 'ਇੱਕ ਦਿਨ', + dd : '%d ਦਿਨ', + M : 'ਇੱਕ ਮਹੀਨਾ', + MM : '%d ਮਹੀਨੇ', + y : 'ਇੱਕ ਸਾਲ', + yy : '%d ਸਾਲ' + }, + preparse: function (string) { + return string.replace(/[੧੨੩੪੫੬੭੮੯੦]/g, function (match) { + return numberMap$10[match]; + }); + }, + postformat: function (string) { + return string.replace(/\d/g, function (match) { + return symbolMap$11[match]; + }); + }, + // Punjabi notation for meridiems are quite fuzzy in practice. While there exists + // a rigid notion of a 'Pahar' it is not used as rigidly in modern Punjabi. + meridiemParse: /ਰਾਤ|ਸਵੇਰ|ਦੁਪਹਿਰ|ਸ਼ਾਮ/, + meridiemHour : function (hour, meridiem) { + if (hour === 12) { + hour = 0; + } + if (meridiem === 'ਰਾਤ') { + return hour < 4 ? hour : hour + 12; + } else if (meridiem === 'ਸਵੇਰ') { + return hour; + } else if (meridiem === 'ਦੁਪਹਿਰ') { + return hour >= 10 ? hour : hour + 12; + } else if (meridiem === 'ਸ਼ਾਮ') { + return hour + 12; + } + }, + meridiem : function (hour, minute, isLower) { + if (hour < 4) { + return 'ਰਾਤ'; + } else if (hour < 10) { + return 'ਸਵੇਰ'; + } else if (hour < 17) { + return 'ਦੁਪਹਿਰ'; + } else if (hour < 20) { + return 'ਸ਼ਾਮ'; + } else { + return 'ਰਾਤ'; + } + }, + week : { + dow : 0, // Sunday is the first day of the week. + doy : 6 // The week that contains Jan 1st is the first week of the year. + } +}); + +//! moment.js locale configuration +//! locale : Polish [pl] +//! author : Rafal Hirsz : https://github.com/evoL + +var monthsNominative = 'styczeń_luty_marzec_kwiecień_maj_czerwiec_lipiec_sierpień_wrzesień_październik_listopad_grudzień'.split('_'); +var monthsSubjective = 'stycznia_lutego_marca_kwietnia_maja_czerwca_lipca_sierpnia_września_października_listopada_grudnia'.split('_'); +function plural$3(n) { + return (n % 10 < 5) && (n % 10 > 1) && ((~~(n / 10) % 10) !== 1); +} +function translate$7(number, withoutSuffix, key) { + var result = number + ' '; + switch (key) { + case 'm': + return withoutSuffix ? 'minuta' : 'minutę'; + case 'mm': + return result + (plural$3(number) ? 'minuty' : 'minut'); + case 'h': + return withoutSuffix ? 'godzina' : 'godzinę'; + case 'hh': + return result + (plural$3(number) ? 'godziny' : 'godzin'); + case 'MM': + return result + (plural$3(number) ? 'miesiące' : 'miesięcy'); + case 'yy': + return result + (plural$3(number) ? 'lata' : 'lat'); + } +} + +hooks.defineLocale('pl', { + months : function (momentToFormat, format) { + if (!momentToFormat) { + return monthsNominative; + } else if (format === '') { + // Hack: if format empty we know this is used to generate + // RegExp by moment. Give then back both valid forms of months + // in RegExp ready format. + return '(' + monthsSubjective[momentToFormat.month()] + '|' + monthsNominative[momentToFormat.month()] + ')'; + } else if (/D MMMM/.test(format)) { + return monthsSubjective[momentToFormat.month()]; + } else { + return monthsNominative[momentToFormat.month()]; + } + }, + monthsShort : 'sty_lut_mar_kwi_maj_cze_lip_sie_wrz_paź_lis_gru'.split('_'), + 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: '[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', + m : translate$7, + mm : translate$7, + h : translate$7, + hh : translate$7, + d : '1 dzień', + dd : '%d dni', + M : 'miesiąc', + MM : translate$7, + y : 'rok', + yy : translate$7 + }, + dayOfMonthOrdinalParse: /\d{1,2}\./, + ordinal : '%d.', + week : { + dow : 1, // Monday is the first day of the week. + doy : 4 // The week that contains Jan 4th is the first week of the year. + } +}); + +//! moment.js locale configuration +//! locale : Portuguese (Brazil) [pt-br] +//! author : Caio Ribeiro Pereira : https://github.com/caio-ribeiro-pereira + +hooks.defineLocale('pt-br', { + months : 'Janeiro_Fevereiro_Março_Abril_Maio_Junho_Julho_Agosto_Setembro_Outubro_Novembro_Dezembro'.split('_'), + monthsShort : 'Jan_Fev_Mar_Abr_Mai_Jun_Jul_Ago_Set_Out_Nov_Dez'.split('_'), + weekdays : 'Domingo_Segunda-feira_Terça-feira_Quarta-feira_Quinta-feira_Sexta-feira_Sábado'.split('_'), + weekdaysShort : 'Dom_Seg_Ter_Qua_Qui_Sex_Sáb'.split('_'), + weekdaysMin : 'Do_2ª_3ª_4ª_5ª_6ª_Sá'.split('_'), + weekdaysParseExact : true, + longDateFormat : { + LT : 'HH:mm', + LTS : 'HH:mm:ss', + L : 'DD/MM/YYYY', + LL : 'D [de] MMMM [de] YYYY', + LLL : 'D [de] MMMM [de] YYYY [às] HH:mm', + LLLL : 'dddd, D [de] MMMM [de] YYYY [às] HH:mm' + }, + calendar : { + sameDay: '[Hoje às] LT', + nextDay: '[Amanhã às] LT', + nextWeek: 'dddd [às] LT', + lastDay: '[Ontem às] LT', + lastWeek: function () { + return (this.day() === 0 || this.day() === 6) ? + '[Último] dddd [às] LT' : // Saturday + Sunday + '[Última] dddd [às] LT'; // Monday - Friday + }, + sameElse: 'L' + }, + relativeTime : { + future : 'em %s', + past : '%s atrás', + s : 'poucos segundos', + m : 'um minuto', + mm : '%d minutos', + h : 'uma hora', + hh : '%d horas', + d : 'um dia', + dd : '%d dias', + M : 'um mês', + MM : '%d meses', + y : 'um ano', + yy : '%d anos' + }, + dayOfMonthOrdinalParse: /\d{1,2}º/, + ordinal : '%dº' +}); + +//! moment.js locale configuration +//! locale : Portuguese [pt] +//! author : Jefferson : https://github.com/jalex79 + +hooks.defineLocale('pt', { + months : 'Janeiro_Fevereiro_Março_Abril_Maio_Junho_Julho_Agosto_Setembro_Outubro_Novembro_Dezembro'.split('_'), + monthsShort : 'Jan_Fev_Mar_Abr_Mai_Jun_Jul_Ago_Set_Out_Nov_Dez'.split('_'), + weekdays : 'Domingo_Segunda-Feira_Terça-Feira_Quarta-Feira_Quinta-Feira_Sexta-Feira_Sábado'.split('_'), + weekdaysShort : 'Dom_Seg_Ter_Qua_Qui_Sex_Sáb'.split('_'), + weekdaysMin : 'Do_2ª_3ª_4ª_5ª_6ª_Sá'.split('_'), + weekdaysParseExact : true, + longDateFormat : { + LT : 'HH:mm', + LTS : 'HH:mm:ss', + L : 'DD/MM/YYYY', + LL : 'D [de] MMMM [de] YYYY', + LLL : 'D [de] MMMM [de] YYYY HH:mm', + LLLL : 'dddd, D [de] MMMM [de] YYYY HH:mm' + }, + calendar : { + sameDay: '[Hoje às] LT', + nextDay: '[Amanhã às] LT', + nextWeek: 'dddd [às] LT', + lastDay: '[Ontem às] LT', + lastWeek: function () { + return (this.day() === 0 || this.day() === 6) ? + '[Último] dddd [às] LT' : // Saturday + Sunday + '[Última] dddd [às] LT'; // Monday - Friday + }, + sameElse: 'L' + }, + relativeTime : { + future : 'em %s', + past : 'há %s', + s : 'segundos', + m : 'um minuto', + mm : '%d minutos', + h : 'uma hora', + hh : '%d horas', + d : 'um dia', + dd : '%d dias', + M : 'um mês', + MM : '%d meses', + y : 'um ano', + yy : '%d anos' + }, + dayOfMonthOrdinalParse: /\d{1,2}º/, + ordinal : '%dº', + week : { + dow : 1, // Monday is the first day of the week. + doy : 4 // The week that contains Jan 4th is the first week of the year. + } +}); + +//! moment.js locale configuration +//! locale : Romanian [ro] +//! author : Vlad Gurdiga : https://github.com/gurdiga +//! author : Valentin Agachi : https://github.com/avaly + +function relativeTimeWithPlural$2(number, withoutSuffix, key) { + var format = { + 'mm': 'minute', + 'hh': 'ore', + 'dd': 'zile', + 'MM': 'luni', + 'yy': 'ani' + }, + separator = ' '; + if (number % 100 >= 20 || (number >= 100 && number % 100 === 0)) { + separator = ' de '; + } + return number + separator + format[key]; +} + +hooks.defineLocale('ro', { + months : 'ianuarie_februarie_martie_aprilie_mai_iunie_iulie_august_septembrie_octombrie_noiembrie_decembrie'.split('_'), + monthsShort : 'ian._febr._mart._apr._mai_iun._iul._aug._sept._oct._nov._dec.'.split('_'), + monthsParseExact: true, + weekdays : 'duminică_luni_marți_miercuri_joi_vineri_sâmbătă'.split('_'), + weekdaysShort : 'Dum_Lun_Mar_Mie_Joi_Vin_Sâm'.split('_'), + weekdaysMin : 'Du_Lu_Ma_Mi_Jo_Vi_Sâ'.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: '[azi la] LT', + nextDay: '[mâine la] LT', + nextWeek: 'dddd [la] LT', + lastDay: '[ieri la] LT', + lastWeek: '[fosta] dddd [la] LT', + sameElse: 'L' + }, + relativeTime : { + future : 'peste %s', + past : '%s în urmă', + s : 'câteva secunde', + m : 'un minut', + mm : relativeTimeWithPlural$2, + h : 'o oră', + hh : relativeTimeWithPlural$2, + d : 'o zi', + dd : relativeTimeWithPlural$2, + M : 'o lună', + MM : relativeTimeWithPlural$2, + y : 'un an', + yy : relativeTimeWithPlural$2 + }, + week : { + dow : 1, // Monday is the first day of the week. + doy : 7 // The week that contains Jan 1st is the first week of the year. + } +}); + +//! moment.js locale configuration +//! locale : Russian [ru] +//! author : Viktorminator : https://github.com/Viktorminator +//! Author : Menelion Elensúle : https://github.com/Oire +//! author : Коренберг Марк : https://github.com/socketpair + +function plural$4(word, num) { + var forms = word.split('_'); + return num % 10 === 1 && num % 100 !== 11 ? forms[0] : (num % 10 >= 2 && num % 10 <= 4 && (num % 100 < 10 || num % 100 >= 20) ? forms[1] : forms[2]); +} +function relativeTimeWithPlural$3(number, withoutSuffix, key) { + var format = { + 'mm': withoutSuffix ? 'минута_минуты_минут' : 'минуту_минуты_минут', + 'hh': 'час_часа_часов', + 'dd': 'день_дня_дней', + 'MM': 'месяц_месяца_месяцев', + 'yy': 'год_года_лет' + }; + if (key === 'm') { + return withoutSuffix ? 'минута' : 'минуту'; + } + else { + return number + ' ' + plural$4(format[key], +number); + } +} +var monthsParse$2 = [/^янв/i, /^фев/i, /^мар/i, /^апр/i, /^ма[йя]/i, /^июн/i, /^июл/i, /^авг/i, /^сен/i, /^окт/i, /^ноя/i, /^дек/i]; + +// http://new.gramota.ru/spravka/rules/139-prop : § 103 +// Сокращения месяцев: http://new.gramota.ru/spravka/buro/search-answer?s=242637 +// CLDR data: http://www.unicode.org/cldr/charts/28/summary/ru.html#1753 +hooks.defineLocale('ru', { + months : { + format: 'января_февраля_марта_апреля_мая_июня_июля_августа_сентября_октября_ноября_декабря'.split('_'), + standalone: 'январь_февраль_март_апрель_май_июнь_июль_август_сентябрь_октябрь_ноябрь_декабрь'.split('_') + }, + monthsShort : { + // по CLDR именно "июл." и "июн.", но какой смысл менять букву на точку ? + format: 'янв._февр._мар._апр._мая_июня_июля_авг._сент._окт._нояб._дек.'.split('_'), + standalone: 'янв._февр._март_апр._май_июнь_июль_авг._сент._окт._нояб._дек.'.split('_') + }, + weekdays : { + standalone: 'воскресенье_понедельник_вторник_среда_четверг_пятница_суббота'.split('_'), + format: 'воскресенье_понедельник_вторник_среду_четверг_пятницу_субботу'.split('_'), + isFormat: /\[ ?[Вв] ?(?:прошлую|следующую|эту)? ?\] ?dddd/ + }, + weekdaysShort : 'вс_пн_вт_ср_чт_пт_сб'.split('_'), + weekdaysMin : 'вс_пн_вт_ср_чт_пт_сб'.split('_'), + monthsParse : monthsParse$2, + longMonthsParse : monthsParse$2, + shortMonthsParse : monthsParse$2, + + // полные названия с падежами, по три буквы, для некоторых, по 4 буквы, сокращения с точкой и без точки + monthsRegex: /^(январ[ья]|янв\.?|феврал[ья]|февр?\.?|марта?|мар\.?|апрел[ья]|апр\.?|ма[йя]|июн[ья]|июн\.?|июл[ья]|июл\.?|августа?|авг\.?|сентябр[ья]|сент?\.?|октябр[ья]|окт\.?|ноябр[ья]|нояб?\.?|декабр[ья]|дек\.?)/i, + + // копия предыдущего + monthsShortRegex: /^(январ[ья]|янв\.?|феврал[ья]|февр?\.?|марта?|мар\.?|апрел[ья]|апр\.?|ма[йя]|июн[ья]|июн\.?|июл[ья]|июл\.?|августа?|авг\.?|сентябр[ья]|сент?\.?|октябр[ья]|окт\.?|ноябр[ья]|нояб?\.?|декабр[ья]|дек\.?)/i, + + // полные названия с падежами + monthsStrictRegex: /^(январ[яь]|феврал[яь]|марта?|апрел[яь]|ма[яй]|июн[яь]|июл[яь]|августа?|сентябр[яь]|октябр[яь]|ноябр[яь]|декабр[яь])/i, + + // Выражение, которое соотвествует только сокращённым формам + monthsShortStrictRegex: /^(янв\.|февр?\.|мар[т.]|апр\.|ма[яй]|июн[ья.]|июл[ья.]|авг\.|сент?\.|окт\.|нояб?\.|дек\.)/i, + 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 (now) { + if (now.week() !== this.week()) { + switch (this.day()) { + case 0: + return '[В следующее] dddd [в] LT'; + case 1: + case 2: + case 4: + return '[В следующий] dddd [в] LT'; + case 3: + case 5: + case 6: + return '[В следующую] dddd [в] LT'; + } + } else { + if (this.day() === 2) { + return '[Во] dddd [в] LT'; + } else { + return '[В] dddd [в] LT'; + } + } + }, + lastWeek: function (now) { + if (now.week() !== this.week()) { + switch (this.day()) { + case 0: + return '[В прошлое] dddd [в] LT'; + case 1: + case 2: + case 4: + return '[В прошлый] dddd [в] LT'; + case 3: + case 5: + case 6: + return '[В прошлую] dddd [в] LT'; + } + } else { + if (this.day() === 2) { + return '[Во] dddd [в] LT'; + } else { + return '[В] dddd [в] LT'; + } + } + }, + sameElse: 'L' + }, + relativeTime : { + future : 'через %s', + past : '%s назад', + s : 'несколько секунд', + m : relativeTimeWithPlural$3, + mm : relativeTimeWithPlural$3, + h : 'час', + hh : relativeTimeWithPlural$3, + d : 'день', + dd : relativeTimeWithPlural$3, + M : 'месяц', + MM : relativeTimeWithPlural$3, + y : 'год', + yy : relativeTimeWithPlural$3 + }, + meridiemParse: /ночи|утра|дня|вечера/i, + isPM : function (input) { + return /^(дня|вечера)$/.test(input); + }, + meridiem : function (hour, minute, isLower) { + if (hour < 4) { + return 'ночи'; + } else if (hour < 12) { + return 'утра'; + } else if (hour < 17) { + return 'дня'; + } else { + return 'вечера'; + } + }, + dayOfMonthOrdinalParse: /\d{1,2}-(й|го|я)/, + ordinal: function (number, period) { + switch (period) { + case 'M': + case 'd': + case 'DDD': + return number + '-й'; + case 'D': + return number + '-го'; + case 'w': + case 'W': + return number + '-я'; + default: + return number; + } + }, + week : { + dow : 1, // Monday is the first day of the week. + doy : 7 // The week that contains Jan 1st is the first week of the year. + } +}); + +//! moment.js locale configuration +//! locale : Sindhi [sd] +//! author : Narain Sagar : https://github.com/narainsagar + +var months$6 = [ + 'جنوري', + 'فيبروري', + 'مارچ', + 'اپريل', + 'مئي', + 'جون', + 'جولاءِ', + 'آگسٽ', + 'سيپٽمبر', + 'آڪٽوبر', + 'نومبر', + 'ڊسمبر' +]; +var days$1 = [ + 'آچر', + 'سومر', + 'اڱارو', + 'اربع', + 'خميس', + 'جمع', + 'ڇنڇر' +]; + +hooks.defineLocale('sd', { + months : months$6, + monthsShort : months$6, + weekdays : days$1, + weekdaysShort : days$1, + weekdaysMin : days$1, + 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 (input) { + return 'شام' === input; + }, + meridiem : function (hour, minute, isLower) { + if (hour < 12) { + return 'صبح'; + } + return 'شام'; + }, + calendar : { + sameDay : '[اڄ] LT', + nextDay : '[سڀاڻي] LT', + nextWeek : 'dddd [اڳين هفتي تي] LT', + lastDay : '[ڪالهه] 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 سال' + }, + preparse: function (string) { + return string.replace(/،/g, ','); + }, + postformat: function (string) { + return string.replace(/,/g, '،'); + }, + week : { + dow : 1, // Monday is the first day of the week. + doy : 4 // The week that contains Jan 4th is the first week of the year. + } +}); + +//! moment.js locale configuration +//! locale : Northern Sami [se] +//! authors : Bård Rolstad Henriksen : https://github.com/karamell + + +hooks.defineLocale('se', { + months : 'ođđajagemánnu_guovvamánnu_njukčamánnu_cuoŋománnu_miessemánnu_geassemánnu_suoidnemánnu_borgemánnu_čakčamánnu_golggotmánnu_skábmamánnu_juovlamánnu'.split('_'), + monthsShort : 'ođđj_guov_njuk_cuo_mies_geas_suoi_borg_čakč_golg_skáb_juov'.split('_'), + weekdays : 'sotnabeaivi_vuossárga_maŋŋebárga_gaskavahkku_duorastat_bearjadat_lávvardat'.split('_'), + weekdaysShort : 'sotn_vuos_maŋ_gask_duor_bear_láv'.split('_'), + weekdaysMin : 's_v_m_g_d_b_L'.split('_'), + longDateFormat : { + LT : 'HH:mm', + LTS : 'HH:mm:ss', + L : 'DD.MM.YYYY', + LL : 'MMMM D. [b.] YYYY', + LLL : 'MMMM D. [b.] YYYY [ti.] HH:mm', + LLLL : 'dddd, MMMM D. [b.] YYYY [ti.] HH:mm' + }, + calendar : { + sameDay: '[otne ti] LT', + nextDay: '[ihttin ti] LT', + nextWeek: 'dddd [ti] LT', + lastDay: '[ikte ti] LT', + lastWeek: '[ovddit] dddd [ti] LT', + sameElse: 'L' + }, + relativeTime : { + future : '%s geažes', + past : 'maŋit %s', + s : 'moadde sekunddat', + m : 'okta minuhta', + mm : '%d minuhtat', + h : 'okta diimmu', + hh : '%d diimmut', + d : 'okta beaivi', + dd : '%d beaivvit', + M : 'okta mánnu', + MM : '%d mánut', + y : 'okta jahki', + yy : '%d jagit' + }, + dayOfMonthOrdinalParse: /\d{1,2}\./, + ordinal : '%d.', + week : { + dow : 1, // Monday is the first day of the week. + doy : 4 // The week that contains Jan 4th is the first week of the year. + } +}); + +//! moment.js locale configuration +//! locale : Sinhalese [si] +//! author : Sampath Sitinamaluwa : https://github.com/sampathsris + +/*jshint -W100*/ +hooks.defineLocale('si', { + months : 'ජනවාරි_පෙබරවාරි_මාර්තු_අප්‍රේල්_මැයි_ජූනි_ජූලි_අගෝස්තු_සැප්තැම්බර්_ඔක්තෝබර්_නොවැම්බර්_දෙසැම්බර්'.split('_'), + monthsShort : 'ජන_පෙබ_මාර්_අප්_මැයි_ජූනි_ජූලි_අගෝ_සැප්_ඔක්_නොවැ_දෙසැ'.split('_'), + weekdays : 'ඉරිදා_සඳුදා_අඟහරුවාදා_බදාදා_බ්‍රහස්පතින්දා_සිකුරාදා_සෙනසුරාදා'.split('_'), + weekdaysShort : 'ඉරි_සඳු_අඟ_බදා_බ්‍රහ_සිකු_සෙන'.split('_'), + weekdaysMin : 'ඉ_ස_අ_බ_බ්‍ර_සි_සෙ'.split('_'), + weekdaysParseExact : true, + 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:ss' + }, + calendar : { + sameDay : '[අද] LT[ට]', + nextDay : '[හෙට] LT[ට]', + nextWeek : 'dddd LT[ට]', + lastDay : '[ඊයේ] 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' + }, + dayOfMonthOrdinalParse: /\d{1,2} වැනි/, + ordinal : function (number) { + return number + ' වැනි'; + }, + meridiemParse : /පෙර වරු|පස් වරු|පෙ.ව|ප.ව./, + isPM : function (input) { + return input === 'ප.ව.' || input === 'පස් වරු'; + }, + meridiem : function (hours, minutes, isLower) { + if (hours > 11) { + return isLower ? 'ප.ව.' : 'පස් වරු'; + } else { + return isLower ? 'පෙ.ව.' : 'පෙර වරු'; + } + } +}); + +//! moment.js locale configuration +//! locale : Slovak [sk] +//! author : Martin Minka : https://github.com/k2s +//! based on work of petrbela : https://github.com/petrbela + +var months$7 = 'január_február_marec_apríl_máj_jún_júl_august_september_október_november_december'.split('_'); +var monthsShort$4 = 'jan_feb_mar_apr_máj_jún_júl_aug_sep_okt_nov_dec'.split('_'); +function plural$5(n) { + return (n > 1) && (n < 5); +} +function translate$8(number, withoutSuffix, key, isFuture) { + var result = number + ' '; + switch (key) { + case 's': // a few seconds / in a few seconds / a few seconds ago + return (withoutSuffix || isFuture) ? 'pár sekúnd' : 'pár sekundami'; + case 'm': // a minute / in a minute / a minute ago + return withoutSuffix ? 'minúta' : (isFuture ? 'minútu' : 'minútou'); + case 'mm': // 9 minutes / in 9 minutes / 9 minutes ago + if (withoutSuffix || isFuture) { + return result + (plural$5(number) ? 'minúty' : 'minút'); + } else { + return result + 'minútami'; + } + break; + case 'h': // an hour / in an hour / an hour ago + return withoutSuffix ? 'hodina' : (isFuture ? 'hodinu' : 'hodinou'); + case 'hh': // 9 hours / in 9 hours / 9 hours ago + if (withoutSuffix || isFuture) { + return result + (plural$5(number) ? 'hodiny' : 'hodín'); + } else { + return result + 'hodinami'; + } + break; + case 'd': // a day / in a day / a day ago + return (withoutSuffix || isFuture) ? 'deň' : 'dňom'; + case 'dd': // 9 days / in 9 days / 9 days ago + if (withoutSuffix || isFuture) { + return result + (plural$5(number) ? 'dni' : 'dní'); + } else { + return result + 'dňami'; + } + break; + case 'M': // a month / in a month / a month ago + return (withoutSuffix || isFuture) ? 'mesiac' : 'mesiacom'; + case 'MM': // 9 months / in 9 months / 9 months ago + if (withoutSuffix || isFuture) { + return result + (plural$5(number) ? 'mesiace' : 'mesiacov'); + } else { + return result + 'mesiacmi'; + } + break; + case 'y': // a year / in a year / a year ago + return (withoutSuffix || isFuture) ? 'rok' : 'rokom'; + case 'yy': // 9 years / in 9 years / 9 years ago + if (withoutSuffix || isFuture) { + return result + (plural$5(number) ? 'roky' : 'rokov'); + } else { + return result + 'rokmi'; + } + break; + } +} + +hooks.defineLocale('sk', { + months : months$7, + monthsShort : monthsShort$4, + 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 : translate$8, + m : translate$8, + mm : translate$8, + h : translate$8, + hh : translate$8, + d : translate$8, + dd : translate$8, + M : translate$8, + MM : translate$8, + y : translate$8, + yy : translate$8 + }, + dayOfMonthOrdinalParse: /\d{1,2}\./, + ordinal : '%d.', + week : { + dow : 1, // Monday is the first day of the week. + doy : 4 // The week that contains Jan 4th is the first week of the year. + } +}); + +//! moment.js locale configuration +//! locale : Slovenian [sl] +//! author : Robert Sedovšek : https://github.com/sedovsek + +function processRelativeTime$6(number, withoutSuffix, key, isFuture) { + var result = number + ' '; + switch (key) { + case 's': + return withoutSuffix || isFuture ? 'nekaj sekund' : 'nekaj sekundami'; + case 'm': + return withoutSuffix ? 'ena minuta' : 'eno minuto'; + case 'mm': + if (number === 1) { + result += withoutSuffix ? 'minuta' : 'minuto'; + } else if (number === 2) { + result += withoutSuffix || isFuture ? 'minuti' : 'minutama'; + } else if (number < 5) { + result += withoutSuffix || isFuture ? 'minute' : 'minutami'; + } else { + result += withoutSuffix || isFuture ? 'minut' : 'minutami'; + } + return result; + case 'h': + return withoutSuffix ? 'ena ura' : 'eno uro'; + case 'hh': + if (number === 1) { + result += withoutSuffix ? 'ura' : 'uro'; + } else if (number === 2) { + result += withoutSuffix || isFuture ? 'uri' : 'urama'; + } else if (number < 5) { + result += withoutSuffix || isFuture ? 'ure' : 'urami'; + } else { + result += withoutSuffix || isFuture ? 'ur' : 'urami'; + } + return result; + case 'd': + return withoutSuffix || isFuture ? 'en dan' : 'enim dnem'; + case 'dd': + if (number === 1) { + result += withoutSuffix || isFuture ? 'dan' : 'dnem'; + } else if (number === 2) { + result += withoutSuffix || isFuture ? 'dni' : 'dnevoma'; + } else { + result += withoutSuffix || isFuture ? 'dni' : 'dnevi'; + } + return result; + case 'M': + return withoutSuffix || isFuture ? 'en mesec' : 'enim mesecem'; + case 'MM': + if (number === 1) { + result += withoutSuffix || isFuture ? 'mesec' : 'mesecem'; + } else if (number === 2) { + result += withoutSuffix || isFuture ? 'meseca' : 'mesecema'; + } else if (number < 5) { + result += withoutSuffix || isFuture ? 'mesece' : 'meseci'; + } else { + result += withoutSuffix || isFuture ? 'mesecev' : 'meseci'; + } + return result; + case 'y': + return withoutSuffix || isFuture ? 'eno leto' : 'enim letom'; + case 'yy': + if (number === 1) { + result += withoutSuffix || isFuture ? 'leto' : 'letom'; + } else if (number === 2) { + result += withoutSuffix || isFuture ? 'leti' : 'letoma'; + } else if (number < 5) { + result += withoutSuffix || isFuture ? 'leta' : 'leti'; + } else { + result += withoutSuffix || isFuture ? 'let' : 'leti'; + } + return result; + } +} + +hooks.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: true, + 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 : true, + 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 : processRelativeTime$6, + m : processRelativeTime$6, + mm : processRelativeTime$6, + h : processRelativeTime$6, + hh : processRelativeTime$6, + d : processRelativeTime$6, + dd : processRelativeTime$6, + M : processRelativeTime$6, + MM : processRelativeTime$6, + y : processRelativeTime$6, + yy : processRelativeTime$6 + }, + dayOfMonthOrdinalParse: /\d{1,2}\./, + ordinal : '%d.', + week : { + dow : 1, // Monday is the first day of the week. + doy : 7 // The week that contains Jan 1st is the first week of the year. + } +}); + +//! moment.js locale configuration +//! locale : Albanian [sq] +//! author : Flakërim Ismani : https://github.com/flakerimi +//! author : Menelion Elensúle : https://github.com/Oire +//! author : Oerd Cukalla : https://github.com/oerd + +hooks.defineLocale('sq', { + months : 'Janar_Shkurt_Mars_Prill_Maj_Qershor_Korrik_Gusht_Shtator_Tetor_Nëntor_Dhjetor'.split('_'), + monthsShort : 'Jan_Shk_Mar_Pri_Maj_Qer_Kor_Gus_Sht_Tet_Nën_Dhj'.split('_'), + weekdays : 'E Diel_E Hënë_E Martë_E Mërkurë_E Enjte_E Premte_E Shtunë'.split('_'), + weekdaysShort : 'Die_Hën_Mar_Mër_Enj_Pre_Sht'.split('_'), + weekdaysMin : 'D_H_Ma_Më_E_P_Sh'.split('_'), + weekdaysParseExact : true, + meridiemParse: /PD|MD/, + isPM: function (input) { + return input.charAt(0) === 'M'; + }, + meridiem : function (hours, minutes, isLower) { + return hours < 12 ? 'PD' : 'MD'; + }, + 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 : '[Sot në] LT', + nextDay : '[Nesër në] LT', + nextWeek : 'dddd [në] LT', + lastDay : '[Dje në] LT', + lastWeek : 'dddd [e kaluar në] LT', + sameElse : 'L' + }, + relativeTime : { + future : 'në %s', + past : '%s më parë', + s : 'disa sekonda', + m : 'një minutë', + mm : '%d minuta', + h : 'një orë', + hh : '%d orë', + d : 'një ditë', + dd : '%d ditë', + M : 'një muaj', + MM : '%d muaj', + y : 'një vit', + yy : '%d vite' + }, + dayOfMonthOrdinalParse: /\d{1,2}\./, + ordinal : '%d.', + week : { + dow : 1, // Monday is the first day of the week. + doy : 4 // The week that contains Jan 4th is the first week of the year. + } +}); + +//! moment.js locale configuration +//! locale : Serbian Cyrillic [sr-cyrl] +//! author : Milan Janačković : https://github.com/milan-j + +var translator$1 = { + words: { //Different grammatical cases + m: ['један минут', 'једне минуте'], + mm: ['минут', 'минуте', 'минута'], + h: ['један сат', 'једног сата'], + hh: ['сат', 'сата', 'сати'], + dd: ['дан', 'дана', 'дана'], + MM: ['месец', 'месеца', 'месеци'], + yy: ['година', 'године', 'година'] + }, + correctGrammaticalCase: function (number, wordKey) { + return number === 1 ? wordKey[0] : (number >= 2 && number <= 4 ? wordKey[1] : wordKey[2]); + }, + translate: function (number, withoutSuffix, key) { + var wordKey = translator$1.words[key]; + if (key.length === 1) { + return withoutSuffix ? wordKey[0] : wordKey[1]; + } else { + return number + ' ' + translator$1.correctGrammaticalCase(number, wordKey); + } + } +}; + +hooks.defineLocale('sr-cyrl', { + months: 'јануар_фебруар_март_април_мај_јун_јул_август_септембар_октобар_новембар_децембар'.split('_'), + monthsShort: 'јан._феб._мар._апр._мај_јун_јул_авг._сеп._окт._нов._дец.'.split('_'), + monthsParseExact: true, + weekdays: 'недеља_понедељак_уторак_среда_четвртак_петак_субота'.split('_'), + weekdaysShort: 'нед._пон._уто._сре._чет._пет._суб.'.split('_'), + weekdaysMin: 'не_по_ут_ср_че_пе_су'.split('_'), + weekdaysParseExact : true, + 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: '[данас у] 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 lastWeekDays = [ + '[прошле] [недеље] [у] LT', + '[прошлог] [понедељка] [у] LT', + '[прошлог] [уторка] [у] LT', + '[прошле] [среде] [у] LT', + '[прошлог] [четвртка] [у] LT', + '[прошлог] [петка] [у] LT', + '[прошле] [суботе] [у] LT' + ]; + return lastWeekDays[this.day()]; + }, + sameElse : 'L' + }, + relativeTime : { + future : 'за %s', + past : 'пре %s', + s : 'неколико секунди', + m : translator$1.translate, + mm : translator$1.translate, + h : translator$1.translate, + hh : translator$1.translate, + d : 'дан', + dd : translator$1.translate, + M : 'месец', + MM : translator$1.translate, + y : 'годину', + yy : translator$1.translate + }, + dayOfMonthOrdinalParse: /\d{1,2}\./, + ordinal : '%d.', + week : { + dow : 1, // Monday is the first day of the week. + doy : 7 // The week that contains Jan 1st is the first week of the year. + } +}); + +//! moment.js locale configuration +//! locale : Serbian [sr] +//! author : Milan Janačković : https://github.com/milan-j + +var translator$2 = { + words: { //Different grammatical cases + m: ['jedan minut', 'jedne minute'], + mm: ['minut', 'minute', 'minuta'], + h: ['jedan sat', 'jednog sata'], + hh: ['sat', 'sata', 'sati'], + dd: ['dan', 'dana', 'dana'], + MM: ['mesec', 'meseca', 'meseci'], + yy: ['godina', 'godine', 'godina'] + }, + correctGrammaticalCase: function (number, wordKey) { + return number === 1 ? wordKey[0] : (number >= 2 && number <= 4 ? wordKey[1] : wordKey[2]); + }, + translate: function (number, withoutSuffix, key) { + var wordKey = translator$2.words[key]; + if (key.length === 1) { + return withoutSuffix ? wordKey[0] : wordKey[1]; + } else { + return number + ' ' + translator$2.correctGrammaticalCase(number, wordKey); + } + } +}; + +hooks.defineLocale('sr', { + 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: true, + weekdays: 'nedelja_ponedeljak_utorak_sreda_četvrtak_petak_subota'.split('_'), + weekdaysShort: 'ned._pon._uto._sre._čet._pet._sub.'.split('_'), + weekdaysMin: 'ne_po_ut_sr_če_pe_su'.split('_'), + weekdaysParseExact : true, + 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] [nedelju] [u] LT'; + case 3: + return '[u] [sredu] [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 lastWeekDays = [ + '[prošle] [nedelje] [u] LT', + '[prošlog] [ponedeljka] [u] LT', + '[prošlog] [utorka] [u] LT', + '[prošle] [srede] [u] LT', + '[prošlog] [četvrtka] [u] LT', + '[prošlog] [petka] [u] LT', + '[prošle] [subote] [u] LT' + ]; + return lastWeekDays[this.day()]; + }, + sameElse : 'L' + }, + relativeTime : { + future : 'za %s', + past : 'pre %s', + s : 'nekoliko sekundi', + m : translator$2.translate, + mm : translator$2.translate, + h : translator$2.translate, + hh : translator$2.translate, + d : 'dan', + dd : translator$2.translate, + M : 'mesec', + MM : translator$2.translate, + y : 'godinu', + yy : translator$2.translate + }, + dayOfMonthOrdinalParse: /\d{1,2}\./, + ordinal : '%d.', + week : { + dow : 1, // Monday is the first day of the week. + doy : 7 // The week that contains Jan 1st is the first week of the year. + } +}); + +//! moment.js locale configuration +//! locale : siSwati [ss] +//! author : Nicolai Davies : https://github.com/nicolaidavies + + +hooks.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 : true, + 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', + 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 (hours, minutes, isLower) { + if (hours < 11) { + return 'ekuseni'; + } else if (hours < 15) { + return 'emini'; + } else if (hours < 19) { + return 'entsambama'; + } else { + return 'ebusuku'; + } + }, + meridiemHour : function (hour, meridiem) { + if (hour === 12) { + hour = 0; + } + if (meridiem === 'ekuseni') { + return hour; + } else if (meridiem === 'emini') { + return hour >= 11 ? hour : hour + 12; + } else if (meridiem === 'entsambama' || meridiem === 'ebusuku') { + if (hour === 0) { + return 0; + } + return hour + 12; + } + }, + dayOfMonthOrdinalParse: /\d{1,2}/, + ordinal : '%d', + week : { + dow : 1, // Monday is the first day of the week. + doy : 4 // The week that contains Jan 4th is the first week of the year. + } +}); + +//! moment.js locale configuration +//! locale : Swedish [sv] +//! author : Jens Alm : https://github.com/ulmus + +hooks.defineLocale('sv', { + months : 'januari_februari_mars_april_maj_juni_juli_augusti_september_oktober_november_december'.split('_'), + monthsShort : 'jan_feb_mar_apr_maj_jun_jul_aug_sep_okt_nov_dec'.split('_'), + weekdays : 'söndag_måndag_tisdag_onsdag_torsdag_fredag_lördag'.split('_'), + weekdaysShort : 'sön_mån_tis_ons_tor_fre_lör'.split('_'), + weekdaysMin : 'sö_må_ti_on_to_fr_lö'.split('_'), + longDateFormat : { + LT : 'HH:mm', + LTS : 'HH:mm:ss', + L : 'YYYY-MM-DD', + LL : 'D MMMM YYYY', + LLL : 'D MMMM YYYY [kl.] HH:mm', + LLLL : 'dddd D MMMM YYYY [kl.] HH:mm', + lll : 'D MMM YYYY HH:mm', + llll : 'ddd D MMM YYYY HH:mm' + }, + calendar : { + sameDay: '[Idag] LT', + nextDay: '[Imorgon] LT', + lastDay: '[Igår] LT', + nextWeek: '[På] dddd LT', + lastWeek: '[I] dddd[s] LT', + sameElse: 'L' + }, + relativeTime : { + future : 'om %s', + past : 'för %s sedan', + s : 'några sekunder', + m : 'en minut', + mm : '%d minuter', + h : 'en timme', + hh : '%d timmar', + d : 'en dag', + dd : '%d dagar', + M : 'en månad', + MM : '%d månader', + y : 'ett år', + yy : '%d år' + }, + dayOfMonthOrdinalParse: /\d{1,2}(e|a)/, + ordinal : function (number) { + var b = number % 10, + output = (~~(number % 100 / 10) === 1) ? 'e' : + (b === 1) ? 'a' : + (b === 2) ? 'a' : + (b === 3) ? 'e' : 'e'; + return number + output; + }, + week : { + dow : 1, // Monday is the first day of the week. + doy : 4 // The week that contains Jan 4th is the first week of the year. + } +}); + +//! moment.js locale configuration +//! locale : Swahili [sw] +//! author : Fahad Kassim : https://github.com/fadsel + +hooks.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 : true, + 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 : '[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', + m : 'dakika moja', + mm : 'dakika %d', + h : 'saa limoja', + hh : 'masaa %d', + d : 'siku moja', + dd : 'masiku %d', + M : 'mwezi mmoja', + MM : 'miezi %d', + y : 'mwaka mmoja', + yy : 'miaka %d' + }, + week : { + dow : 1, // Monday is the first day of the week. + doy : 7 // The week that contains Jan 1st is the first week of the year. + } +}); + +//! moment.js locale configuration +//! locale : Tamil [ta] +//! author : Arjunkumar Krishnamoorthy : https://github.com/tk120404 + +var symbolMap$12 = { + '1': '௧', + '2': '௨', + '3': '௩', + '4': '௪', + '5': '௫', + '6': '௬', + '7': '௭', + '8': '௮', + '9': '௯', + '0': '௦' +}; +var numberMap$11 = { + '௧': '1', + '௨': '2', + '௩': '3', + '௪': '4', + '௫': '5', + '௬': '6', + '௭': '7', + '௮': '8', + '௯': '9', + '௦': '0' +}; + +hooks.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 : 'ஒரு சில விநாடிகள்', + m : 'ஒரு நிமிடம்', + mm : '%d நிமிடங்கள்', + h : 'ஒரு மணி நேரம்', + hh : '%d மணி நேரம்', + d : 'ஒரு நாள்', + dd : '%d நாட்கள்', + M : 'ஒரு மாதம்', + MM : '%d மாதங்கள்', + y : 'ஒரு வருடம்', + yy : '%d ஆண்டுகள்' + }, + dayOfMonthOrdinalParse: /\d{1,2}வது/, + ordinal : function (number) { + return number + 'வது'; + }, + preparse: function (string) { + return string.replace(/[௧௨௩௪௫௬௭௮௯௦]/g, function (match) { + return numberMap$11[match]; + }); + }, + postformat: function (string) { + return string.replace(/\d/g, function (match) { + return symbolMap$12[match]; + }); + }, + // refer http://ta.wikipedia.org/s/1er1 + meridiemParse: /யாமம்|வைகறை|காலை|நண்பகல்|எற்பாடு|மாலை/, + meridiem : function (hour, minute, isLower) { + if (hour < 2) { + return ' யாமம்'; + } else if (hour < 6) { + return ' வைகறை'; // வைகறை + } else if (hour < 10) { + return ' காலை'; // காலை + } else if (hour < 14) { + return ' நண்பகல்'; // நண்பகல் + } else if (hour < 18) { + return ' எற்பாடு'; // எற்பாடு + } else if (hour < 22) { + return ' மாலை'; // மாலை + } else { + return ' யாமம்'; + } + }, + meridiemHour : function (hour, meridiem) { + if (hour === 12) { + hour = 0; + } + if (meridiem === 'யாமம்') { + return hour < 2 ? hour : hour + 12; + } else if (meridiem === 'வைகறை' || meridiem === 'காலை') { + return hour; + } else if (meridiem === 'நண்பகல்') { + return hour >= 10 ? hour : hour + 12; + } else { + return hour + 12; + } + }, + week : { + dow : 0, // Sunday is the first day of the week. + doy : 6 // The week that contains Jan 1st is the first week of the year. + } +}); + +//! moment.js locale configuration +//! locale : Telugu [te] +//! author : Krishna Chaitanya Thota : https://github.com/kcthota + +hooks.defineLocale('te', { + months : 'జనవరి_ఫిబ్రవరి_మార్చి_ఏప్రిల్_మే_జూన్_జూలై_ఆగస్టు_సెప్టెంబర్_అక్టోబర్_నవంబర్_డిసెంబర్'.split('_'), + monthsShort : 'జన._ఫిబ్ర._మార్చి_ఏప్రి._మే_జూన్_జూలై_ఆగ._సెప్._అక్టో._నవ._డిసె.'.split('_'), + monthsParseExact : true, + 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 : 'కొన్ని క్షణాలు', + m : 'ఒక నిమిషం', + mm : '%d నిమిషాలు', + h : 'ఒక గంట', + hh : '%d గంటలు', + d : 'ఒక రోజు', + dd : '%d రోజులు', + M : 'ఒక నెల', + MM : '%d నెలలు', + y : 'ఒక సంవత్సరం', + yy : '%d సంవత్సరాలు' + }, + dayOfMonthOrdinalParse : /\d{1,2}వ/, + ordinal : '%dవ', + meridiemParse: /రాత్రి|ఉదయం|మధ్యాహ్నం|సాయంత్రం/, + meridiemHour : function (hour, meridiem) { + if (hour === 12) { + hour = 0; + } + if (meridiem === 'రాత్రి') { + return hour < 4 ? hour : hour + 12; + } else if (meridiem === 'ఉదయం') { + return hour; + } else if (meridiem === 'మధ్యాహ్నం') { + return hour >= 10 ? hour : hour + 12; + } else if (meridiem === 'సాయంత్రం') { + return hour + 12; + } + }, + meridiem : function (hour, minute, isLower) { + if (hour < 4) { + return 'రాత్రి'; + } else if (hour < 10) { + return 'ఉదయం'; + } else if (hour < 17) { + return 'మధ్యాహ్నం'; + } else if (hour < 20) { + return 'సాయంత్రం'; + } else { + return 'రాత్రి'; + } + }, + week : { + dow : 0, // Sunday is the first day of the week. + doy : 6 // The week that contains Jan 1st is the first week of the year. + } +}); + +//! moment.js locale configuration +//! locale : Tetun Dili (East Timor) [tet] +//! author : Joshua Brooks : https://github.com/joshbrooks +//! author : Onorio De J. Afonso : https://github.com/marobo + +hooks.defineLocale('tet', { + months : 'Janeiru_Fevereiru_Marsu_Abril_Maiu_Juniu_Juliu_Augustu_Setembru_Outubru_Novembru_Dezembru'.split('_'), + monthsShort : 'Jan_Fev_Mar_Abr_Mai_Jun_Jul_Aug_Set_Out_Nov_Dez'.split('_'), + weekdays : 'Domingu_Segunda_Tersa_Kuarta_Kinta_Sexta_Sabadu'.split('_'), + weekdaysShort : 'Dom_Seg_Ters_Kua_Kint_Sext_Sab'.split('_'), + weekdaysMin : 'Do_Seg_Te_Ku_Ki_Sex_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 : 'minutu balun', + m : 'minutu ida', + mm : 'minutus %d', + h : 'horas ida', + hh : 'horas %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 (number) { + var b = number % 10, + output = (~~(number % 100 / 10) === 1) ? 'th' : + (b === 1) ? 'st' : + (b === 2) ? 'nd' : + (b === 3) ? 'rd' : 'th'; + return number + output; + }, + week : { + dow : 1, // Monday is the first day of the week. + doy : 4 // The week that contains Jan 4th is the first week of the year. + } +}); + +//! moment.js locale configuration +//! locale : Thai [th] +//! author : Kridsada Thanabulpong : https://github.com/sirn + +hooks.defineLocale('th', { + months : 'มกราคม_กุมภาพันธ์_มีนาคม_เมษายน_พฤษภาคม_มิถุนายน_กรกฎาคม_สิงหาคม_กันยายน_ตุลาคม_พฤศจิกายน_ธันวาคม'.split('_'), + monthsShort : 'ม.ค._ก.พ._มี.ค._เม.ย._พ.ค._มิ.ย._ก.ค._ส.ค._ก.ย._ต.ค._พ.ย._ธ.ค.'.split('_'), + monthsParseExact: true, + weekdays : 'อาทิตย์_จันทร์_อังคาร_พุธ_พฤหัสบดี_ศุกร์_เสาร์'.split('_'), + weekdaysShort : 'อาทิตย์_จันทร์_อังคาร_พุธ_พฤหัส_ศุกร์_เสาร์'.split('_'), // yes, three characters difference + weekdaysMin : 'อา._จ._อ._พ._พฤ._ศ._ส.'.split('_'), + weekdaysParseExact : true, + 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 (input) { + return input === 'หลังเที่ยง'; + }, + meridiem : function (hour, minute, isLower) { + if (hour < 12) { + return 'ก่อนเที่ยง'; + } else { + return 'หลังเที่ยง'; + } + }, + calendar : { + sameDay : '[วันนี้ เวลา] LT', + nextDay : '[พรุ่งนี้ เวลา] LT', + nextWeek : 'dddd[หน้า เวลา] LT', + lastDay : '[เมื่อวานนี้ เวลา] LT', + lastWeek : '[วัน]dddd[ที่แล้ว เวลา] LT', + sameElse : 'L' + }, + relativeTime : { + future : 'อีก %s', + past : '%sที่แล้ว', + s : 'ไม่กี่วินาที', + m : '1 นาที', + mm : '%d นาที', + h : '1 ชั่วโมง', + hh : '%d ชั่วโมง', + d : '1 วัน', + dd : '%d วัน', + M : '1 เดือน', + MM : '%d เดือน', + y : '1 ปี', + yy : '%d ปี' + } +}); + +//! moment.js locale configuration +//! locale : Tagalog (Philippines) [tl-ph] +//! author : Dan Hagman : https://github.com/hagmandan + +hooks.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', + 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 (number) { + return number; + }, + week : { + dow : 1, // Monday is the first day of the week. + doy : 4 // The week that contains Jan 4th is the first week of the year. + } +}); + +//! moment.js locale configuration +//! locale : Klingon [tlh] +//! author : Dominika Kruk : https://github.com/amaranthrose + +var numbersNouns = 'pagh_wa’_cha’_wej_loS_vagh_jav_Soch_chorgh_Hut'.split('_'); + +function translateFuture(output) { + var time = output; + time = (output.indexOf('jaj') !== -1) ? + time.slice(0, -3) + 'leS' : + (output.indexOf('jar') !== -1) ? + time.slice(0, -3) + 'waQ' : + (output.indexOf('DIS') !== -1) ? + time.slice(0, -3) + 'nem' : + time + ' pIq'; + return time; +} + +function translatePast(output) { + var time = output; + time = (output.indexOf('jaj') !== -1) ? + time.slice(0, -3) + 'Hu’' : + (output.indexOf('jar') !== -1) ? + time.slice(0, -3) + 'wen' : + (output.indexOf('DIS') !== -1) ? + time.slice(0, -3) + 'ben' : + time + ' ret'; + return time; +} + +function translate$9(number, withoutSuffix, string, isFuture) { + var numberNoun = numberAsNoun(number); + switch (string) { + case 'mm': + return numberNoun + ' tup'; + case 'hh': + return numberNoun + ' rep'; + case 'dd': + return numberNoun + ' jaj'; + case 'MM': + return numberNoun + ' jar'; + case 'yy': + return numberNoun + ' DIS'; + } +} + +function numberAsNoun(number) { + var hundred = Math.floor((number % 1000) / 100), + ten = Math.floor((number % 100) / 10), + one = number % 10, + word = ''; + if (hundred > 0) { + word += numbersNouns[hundred] + 'vatlh'; + } + if (ten > 0) { + word += ((word !== '') ? ' ' : '') + numbersNouns[ten] + 'maH'; + } + if (one > 0) { + word += ((word !== '') ? ' ' : '') + numbersNouns[one]; + } + return (word === '') ? 'pagh' : word; +} + +hooks.defineLocale('tlh', { + months : 'tera’ jar wa’_tera’ jar cha’_tera’ jar wej_tera’ jar loS_tera’ jar vagh_tera’ jar jav_tera’ jar Soch_tera’ jar chorgh_tera’ jar Hut_tera’ jar wa’maH_tera’ jar wa’maH wa’_tera’ jar wa’maH cha’'.split('_'), + monthsShort : 'jar wa’_jar cha’_jar wej_jar loS_jar vagh_jar jav_jar Soch_jar chorgh_jar Hut_jar wa’maH_jar wa’maH wa’_jar wa’maH cha’'.split('_'), + monthsParseExact : true, + weekdays : 'lojmItjaj_DaSjaj_povjaj_ghItlhjaj_loghjaj_buqjaj_ghInjaj'.split('_'), + weekdaysShort : 'lojmItjaj_DaSjaj_povjaj_ghItlhjaj_loghjaj_buqjaj_ghInjaj'.split('_'), + weekdaysMin : 'lojmItjaj_DaSjaj_povjaj_ghItlhjaj_loghjaj_buqjaj_ghInjaj'.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: '[DaHjaj] LT', + nextDay: '[wa’leS] LT', + nextWeek: 'LLL', + lastDay: '[wa’Hu’] LT', + lastWeek: 'LLL', + sameElse: 'L' + }, + relativeTime : { + future : translateFuture, + past : translatePast, + s : 'puS lup', + m : 'wa’ tup', + mm : translate$9, + h : 'wa’ rep', + hh : translate$9, + d : 'wa’ jaj', + dd : translate$9, + M : 'wa’ jar', + MM : translate$9, + y : 'wa’ DIS', + yy : translate$9 + }, + dayOfMonthOrdinalParse: /\d{1,2}\./, + ordinal : '%d.', + week : { + dow : 1, // Monday is the first day of the week. + doy : 4 // The week that contains Jan 4th is the first week of the year. + } +}); + +//! moment.js locale configuration +//! locale : Turkish [tr] +//! authors : Erhan Gundogan : https://github.com/erhangundogan, +//! Burak Yiğit Kaya: https://github.com/BYK + +var suffixes$3 = { + 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ı' +}; + +hooks.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('_'), + 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 : '[haftaya] dddd [saat] LT', + lastDay : '[dün] LT', + lastWeek : '[geçen hafta] dddd [saat] LT', + sameElse : 'L' + }, + relativeTime : { + future : '%s sonra', + past : '%s önce', + s : 'birkaç saniye', + m : 'bir dakika', + mm : '%d dakika', + h : 'bir saat', + hh : '%d saat', + d : 'bir gün', + dd : '%d gün', + M : 'bir ay', + MM : '%d ay', + y : 'bir yıl', + yy : '%d yıl' + }, + dayOfMonthOrdinalParse: /\d{1,2}'(inci|nci|üncü|ncı|uncu|ıncı)/, + ordinal : function (number) { + if (number === 0) { // special case for zero + return number + '\'ıncı'; + } + var a = number % 10, + b = number % 100 - a, + c = number >= 100 ? 100 : null; + return number + (suffixes$3[a] || suffixes$3[b] || suffixes$3[c]); + }, + week : { + dow : 1, // Monday is the first day of the week. + doy : 7 // The week that contains Jan 1st is the first week of the year. + } +}); + +//! moment.js locale configuration +//! locale : Talossan [tzl] +//! author : Robin van der Vliet : https://github.com/robin0van0der0v +//! author : Iustì Canun + +// After the year there should be a slash and the amount of years since December 26, 1979 in Roman numerals. +// This is currently too difficult (maybe even impossible) to add. +hooks.defineLocale('tzl', { + months : 'Januar_Fevraglh_Març_Avrïu_Mai_Gün_Julia_Guscht_Setemvar_Listopäts_Noemvar_Zecemvar'.split('_'), + monthsShort : 'Jan_Fev_Mar_Avr_Mai_Gün_Jul_Gus_Set_Lis_Noe_Zec'.split('_'), + weekdays : 'Súladi_Lúneçi_Maitzi_Márcuri_Xhúadi_Viénerçi_Sáturi'.split('_'), + weekdaysShort : 'Súl_Lún_Mai_Már_Xhú_Vié_Sát'.split('_'), + weekdaysMin : 'Sú_Lú_Ma_Má_Xh_Vi_Sá'.split('_'), + longDateFormat : { + LT : 'HH.mm', + LTS : 'HH.mm.ss', + L : 'DD.MM.YYYY', + LL : 'D. MMMM [dallas] YYYY', + LLL : 'D. MMMM [dallas] YYYY HH.mm', + LLLL : 'dddd, [li] D. MMMM [dallas] YYYY HH.mm' + }, + meridiemParse: /d\'o|d\'a/i, + isPM : function (input) { + return 'd\'o' === input.toLowerCase(); + }, + meridiem : function (hours, minutes, isLower) { + if (hours > 11) { + return isLower ? 'd\'o' : 'D\'O'; + } else { + return isLower ? 'd\'a' : 'D\'A'; + } + }, + calendar : { + sameDay : '[oxhi à] LT', + nextDay : '[demà à] LT', + nextWeek : 'dddd [à] LT', + lastDay : '[ieiri à] LT', + lastWeek : '[sür el] dddd [lasteu à] LT', + sameElse : 'L' + }, + relativeTime : { + future : 'osprei %s', + past : 'ja%s', + s : processRelativeTime$7, + m : processRelativeTime$7, + mm : processRelativeTime$7, + h : processRelativeTime$7, + hh : processRelativeTime$7, + d : processRelativeTime$7, + dd : processRelativeTime$7, + M : processRelativeTime$7, + MM : processRelativeTime$7, + y : processRelativeTime$7, + yy : processRelativeTime$7 + }, + dayOfMonthOrdinalParse: /\d{1,2}\./, + ordinal : '%d.', + week : { + dow : 1, // Monday is the first day of the week. + doy : 4 // The week that contains Jan 4th is the first week of the year. + } +}); + +function processRelativeTime$7(number, withoutSuffix, key, isFuture) { + var format = { + 's': ['viensas secunds', '\'iensas secunds'], + 'm': ['\'n míut', '\'iens míut'], + 'mm': [number + ' míuts', '' + number + ' míuts'], + 'h': ['\'n þora', '\'iensa þora'], + 'hh': [number + ' þoras', '' + number + ' þoras'], + 'd': ['\'n ziua', '\'iensa ziua'], + 'dd': [number + ' ziuas', '' + number + ' ziuas'], + 'M': ['\'n mes', '\'iens mes'], + 'MM': [number + ' mesen', '' + number + ' mesen'], + 'y': ['\'n ar', '\'iens ar'], + 'yy': [number + ' ars', '' + number + ' ars'] + }; + return isFuture ? format[key][0] : (withoutSuffix ? format[key][0] : format[key][1]); +} + +//! moment.js locale configuration +//! locale : Central Atlas Tamazight Latin [tzm-latn] +//! author : Abdel Said : https://github.com/abdelsaid + +hooks.defineLocale('tzm-latn', { + months : 'innayr_brˤayrˤ_marˤsˤ_ibrir_mayyw_ywnyw_ywlywz_ɣwšt_šwtanbir_ktˤwbrˤ_nwwanbir_dwjnbir'.split('_'), + monthsShort : 'innayr_brˤayrˤ_marˤsˤ_ibrir_mayyw_ywnyw_ywlywz_ɣwšt_šwtanbir_ktˤwbrˤ_nwwanbir_dwjnbir'.split('_'), + weekdays : 'asamas_aynas_asinas_akras_akwas_asimwas_asiḍyas'.split('_'), + weekdaysShort : 'asamas_aynas_asinas_akras_akwas_asimwas_asiḍyas'.split('_'), + weekdaysMin : 'asamas_aynas_asinas_akras_akwas_asimwas_asiḍyas'.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: '[asdkh g] LT', + nextDay: '[aska g] LT', + nextWeek: 'dddd [g] LT', + lastDay: '[assant g] LT', + lastWeek: 'dddd [g] LT', + sameElse: 'L' + }, + relativeTime : { + future : 'dadkh s yan %s', + past : 'yan %s', + s : 'imik', + m : 'minuḍ', + mm : '%d minuḍ', + h : 'saɛa', + hh : '%d tassaɛin', + d : 'ass', + dd : '%d ossan', + M : 'ayowr', + MM : '%d iyyirn', + y : 'asgas', + yy : '%d isgasn' + }, + week : { + dow : 6, // Saturday is the first day of the week. + doy : 12 // The week that contains Jan 1st is the first week of the year. + } +}); + +//! moment.js locale configuration +//! locale : Central Atlas Tamazight [tzm] +//! author : Abdel Said : https://github.com/abdelsaid + +hooks.defineLocale('tzm', { + 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 : 'ⵉⵎⵉⴽ', + m : 'ⵎⵉⵏⵓⴺ', + mm : '%d ⵎⵉⵏⵓⴺ', + h : 'ⵙⴰⵄⴰ', + hh : '%d ⵜⴰⵙⵙⴰⵄⵉⵏ', + d : 'ⴰⵙⵙ', + dd : '%d oⵙⵙⴰⵏ', + M : 'ⴰⵢoⵓⵔ', + MM : '%d ⵉⵢⵢⵉⵔⵏ', + y : 'ⴰⵙⴳⴰⵙ', + yy : '%d ⵉⵙⴳⴰⵙⵏ' + }, + week : { + dow : 6, // Saturday is the first day of the week. + doy : 12 // The week that contains Jan 1st is the first week of the year. + } +}); + +//! moment.js locale configuration +//! locale : Ukrainian [uk] +//! author : zemlanin : https://github.com/zemlanin +//! Author : Menelion Elensúle : https://github.com/Oire + +function plural$6(word, num) { + var forms = word.split('_'); + return num % 10 === 1 && num % 100 !== 11 ? forms[0] : (num % 10 >= 2 && num % 10 <= 4 && (num % 100 < 10 || num % 100 >= 20) ? forms[1] : forms[2]); +} +function relativeTimeWithPlural$4(number, withoutSuffix, key) { + var format = { + 'mm': withoutSuffix ? 'хвилина_хвилини_хвилин' : 'хвилину_хвилини_хвилин', + 'hh': withoutSuffix ? 'година_години_годин' : 'годину_години_годин', + 'dd': 'день_дні_днів', + 'MM': 'місяць_місяці_місяців', + 'yy': 'рік_роки_років' + }; + if (key === 'm') { + return withoutSuffix ? 'хвилина' : 'хвилину'; + } + else if (key === 'h') { + return withoutSuffix ? 'година' : 'годину'; + } + else { + return number + ' ' + plural$6(format[key], +number); + } +} +function weekdaysCaseReplace(m, format) { + var weekdays = { + 'nominative': 'неділя_понеділок_вівторок_середа_четвер_п’ятниця_субота'.split('_'), + 'accusative': 'неділю_понеділок_вівторок_середу_четвер_п’ятницю_суботу'.split('_'), + 'genitive': 'неділі_понеділка_вівторка_середи_четверга_п’ятниці_суботи'.split('_') + }; + + if (!m) { + return weekdays['nominative']; + } + + var nounCase = (/(\[[ВвУу]\]) ?dddd/).test(format) ? + 'accusative' : + ((/\[?(?:минулої|наступної)? ?\] ?dddd/).test(format) ? + 'genitive' : + 'nominative'); + return weekdays[nounCase][m.day()]; +} +function processHoursFunction(str) { + return function () { + return str + 'о' + (this.hours() === 11 ? 'б' : '') + '] LT'; + }; +} + +hooks.defineLocale('uk', { + months : { + 'format': 'січня_лютого_березня_квітня_травня_червня_липня_серпня_вересня_жовтня_листопада_грудня'.split('_'), + 'standalone': 'січень_лютий_березень_квітень_травень_червень_липень_серпень_вересень_жовтень_листопад_грудень'.split('_') + }, + monthsShort : 'січ_лют_бер_квіт_трав_черв_лип_серп_вер_жовт_лист_груд'.split('_'), + weekdays : weekdaysCaseReplace, + 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: processHoursFunction('[Сьогодні '), + nextDay: processHoursFunction('[Завтра '), + lastDay: processHoursFunction('[Вчора '), + nextWeek: processHoursFunction('[У] dddd ['), + lastWeek: function () { + switch (this.day()) { + case 0: + case 3: + case 5: + case 6: + return processHoursFunction('[Минулої] dddd [').call(this); + case 1: + case 2: + case 4: + return processHoursFunction('[Минулого] dddd [').call(this); + } + }, + sameElse: 'L' + }, + relativeTime : { + future : 'за %s', + past : '%s тому', + s : 'декілька секунд', + m : relativeTimeWithPlural$4, + mm : relativeTimeWithPlural$4, + h : 'годину', + hh : relativeTimeWithPlural$4, + d : 'день', + dd : relativeTimeWithPlural$4, + M : 'місяць', + MM : relativeTimeWithPlural$4, + y : 'рік', + yy : relativeTimeWithPlural$4 + }, + // M. E.: those two are virtually unused but a user might want to implement them for his/her website for some reason + meridiemParse: /ночі|ранку|дня|вечора/, + isPM: function (input) { + return /^(дня|вечора)$/.test(input); + }, + meridiem : function (hour, minute, isLower) { + if (hour < 4) { + return 'ночі'; + } else if (hour < 12) { + return 'ранку'; + } else if (hour < 17) { + return 'дня'; + } else { + return 'вечора'; + } + }, + dayOfMonthOrdinalParse: /\d{1,2}-(й|го)/, + ordinal: function (number, period) { + switch (period) { + case 'M': + case 'd': + case 'DDD': + case 'w': + case 'W': + return number + '-й'; + case 'D': + return number + '-го'; + default: + return number; + } + }, + week : { + dow : 1, // Monday is the first day of the week. + doy : 7 // The week that contains Jan 1st is the first week of the year. + } +}); + +//! moment.js locale configuration +//! locale : Urdu [ur] +//! author : Sawood Alam : https://github.com/ibnesayeed +//! author : Zack : https://github.com/ZackVision + +var months$8 = [ + 'جنوری', + 'فروری', + 'مارچ', + 'اپریل', + 'مئی', + 'جون', + 'جولائی', + 'اگست', + 'ستمبر', + 'اکتوبر', + 'نومبر', + 'دسمبر' +]; +var days$2 = [ + 'اتوار', + 'پیر', + 'منگل', + 'بدھ', + 'جمعرات', + 'جمعہ', + 'ہفتہ' +]; + +hooks.defineLocale('ur', { + months : months$8, + monthsShort : months$8, + weekdays : days$2, + weekdaysShort : days$2, + weekdaysMin : days$2, + 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 (input) { + return 'شام' === input; + }, + meridiem : function (hour, minute, isLower) { + if (hour < 12) { + return 'صبح'; + } + return 'شام'; + }, + calendar : { + sameDay : '[آج بوقت] LT', + nextDay : '[کل بوقت] LT', + nextWeek : 'dddd [بوقت] LT', + lastDay : '[گذشتہ روز بوقت] 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 سال' + }, + preparse: function (string) { + return string.replace(/،/g, ','); + }, + postformat: function (string) { + return string.replace(/,/g, '،'); + }, + week : { + dow : 1, // Monday is the first day of the week. + doy : 4 // The week that contains Jan 4th is the first week of the year. + } +}); + +//! moment.js locale configuration +//! locale : Uzbek Latin [uz-latn] +//! author : Rasulbek Mirzayev : github.com/Rasulbeeek + +hooks.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', + 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, // Monday is the first day of the week. + doy : 7 // The week that contains Jan 1st is the first week of the year. + } +}); + +//! moment.js locale configuration +//! locale : Uzbek [uz] +//! author : Sardor Muminov : https://github.com/muminoff + +hooks.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 : 'фурсат', + m : 'бир дакика', + mm : '%d дакика', + h : 'бир соат', + hh : '%d соат', + d : 'бир кун', + dd : '%d кун', + M : 'бир ой', + MM : '%d ой', + y : 'бир йил', + yy : '%d йил' + }, + week : { + dow : 1, // Monday is the first day of the week. + doy : 7 // The week that contains Jan 4th is the first week of the year. + } +}); + +//! moment.js locale configuration +//! locale : Vietnamese [vi] +//! author : Bang Nguyen : https://github.com/bangnk + +hooks.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 : 'Th01_Th02_Th03_Th04_Th05_Th06_Th07_Th08_Th09_Th10_Th11_Th12'.split('_'), + monthsParseExact : true, + 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 : true, + meridiemParse: /sa|ch/i, + isPM : function (input) { + return /^ch$/i.test(input); + }, + meridiem : function (hours, minutes, isLower) { + if (hours < 12) { + return isLower ? 'sa' : 'SA'; + } else { + return isLower ? '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 rồi lúc] LT', + sameElse: 'L' + }, + relativeTime : { + future : '%s tới', + past : '%s trước', + s : 'vài 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', + M : 'một tháng', + MM : '%d tháng', + y : 'một năm', + yy : '%d năm' + }, + dayOfMonthOrdinalParse: /\d{1,2}/, + ordinal : function (number) { + return number; + }, + week : { + dow : 1, // Monday is the first day of the week. + doy : 4 // The week that contains Jan 4th is the first week of the year. + } +}); + +//! moment.js locale configuration +//! locale : Pseudo [x-pseudo] +//! author : Andrew Hood : https://github.com/andrewhood125 + +hooks.defineLocale('x-pseudo', { + months : 'J~áñúá~rý_F~ébrú~árý_~Márc~h_Áp~ríl_~Máý_~Júñé~_Júl~ý_Áú~gúst~_Sép~témb~ér_Ó~ctób~ér_Ñ~óvém~bér_~Décé~mbér'.split('_'), + monthsShort : 'J~áñ_~Féb_~Már_~Ápr_~Máý_~Júñ_~Júl_~Áúg_~Sép_~Óct_~Ñóv_~Déc'.split('_'), + monthsParseExact : true, + weekdays : 'S~úñdá~ý_Mó~ñdáý~_Túé~sdáý~_Wéd~ñésd~áý_T~húrs~dáý_~Fríd~áý_S~átúr~dáý'.split('_'), + weekdaysShort : 'S~úñ_~Móñ_~Túé_~Wéd_~Thú_~Frí_~Sát'.split('_'), + weekdaysMin : 'S~ú_Mó~_Tú_~Wé_T~h_Fr~_Sá'.split('_'), + weekdaysParseExact : true, + longDateFormat : { + LT : 'HH:mm', + L : 'DD/MM/YYYY', + LL : 'D MMMM YYYY', + LLL : 'D MMMM YYYY HH:mm', + LLLL : 'dddd, D MMMM YYYY HH:mm' + }, + calendar : { + sameDay : '[T~ódá~ý át] LT', + nextDay : '[T~ómó~rró~w át] LT', + nextWeek : 'dddd [át] LT', + lastDay : '[Ý~ést~érdá~ý át] LT', + lastWeek : '[L~ást] dddd [át] LT', + sameElse : 'L' + }, + relativeTime : { + future : 'í~ñ %s', + past : '%s á~gó', + s : 'á ~féw ~sécó~ñds', + m : 'á ~míñ~úté', + mm : '%d m~íñú~tés', + h : 'á~ñ hó~úr', + hh : '%d h~óúrs', + d : 'á ~dáý', + dd : '%d d~áýs', + M : 'á ~móñ~th', + MM : '%d m~óñt~hs', + y : 'á ~ýéár', + yy : '%d ý~éárs' + }, + dayOfMonthOrdinalParse: /\d{1,2}(th|st|nd|rd)/, + ordinal : function (number) { + var b = number % 10, + output = (~~(number % 100 / 10) === 1) ? 'th' : + (b === 1) ? 'st' : + (b === 2) ? 'nd' : + (b === 3) ? 'rd' : 'th'; + return number + output; + }, + week : { + dow : 1, // Monday is the first day of the week. + doy : 4 // The week that contains Jan 4th is the first week of the year. + } +}); + +//! moment.js locale configuration +//! locale : Yoruba Nigeria [yo] +//! author : Atolagbe Abisoye : https://github.com/andela-batolagbe + +hooks.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', + 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, // Monday is the first day of the week. + doy : 4 // The week that contains Jan 4th is the first week of the year. + } +}); + +//! moment.js locale configuration +//! locale : Chinese (China) [zh-cn] +//! author : suupic : https://github.com/suupic +//! author : Zeno Zeng : https://github.com/zenozeng + +hooks.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年MMMD日', + LL : 'YYYY年MMMD日', + LLL : 'YYYY年MMMD日Ah点mm分', + LLLL : 'YYYY年MMMD日ddddAh点mm分', + l : 'YYYY年MMMD日', + ll : 'YYYY年MMMD日', + lll : 'YYYY年MMMD日 HH:mm', + llll : 'YYYY年MMMD日dddd HH:mm' + }, + meridiemParse: /凌晨|早上|上午|中午|下午|晚上/, + meridiemHour: function (hour, meridiem) { + if (hour === 12) { + hour = 0; + } + if (meridiem === '凌晨' || meridiem === '早上' || + meridiem === '上午') { + return hour; + } else if (meridiem === '下午' || meridiem === '晚上') { + return hour + 12; + } else { + // '中午' + return hour >= 11 ? hour : hour + 12; + } + }, + meridiem : function (hour, minute, isLower) { + var hm = hour * 100 + minute; + if (hm < 600) { + return '凌晨'; + } else if (hm < 900) { + return '早上'; + } else if (hm < 1130) { + return '上午'; + } else if (hm < 1230) { + return '中午'; + } else if (hm < 1800) { + return '下午'; + } else { + return '晚上'; + } + }, + calendar : { + sameDay : '[今天]LT', + nextDay : '[明天]LT', + nextWeek : '[下]ddddLT', + lastDay : '[昨天]LT', + lastWeek : '[上]ddddLT', + sameElse : 'L' + }, + dayOfMonthOrdinalParse: /\d{1,2}(日|月|周)/, + ordinal : function (number, period) { + switch (period) { + case 'd': + case 'D': + case 'DDD': + return number + '日'; + case 'M': + return number + '月'; + case 'w': + case 'W': + return number + '周'; + default: + return number; + } + }, + relativeTime : { + future : '%s内', + past : '%s前', + s : '几秒', + m : '1 分钟', + mm : '%d 分钟', + h : '1 小时', + hh : '%d 小时', + d : '1 天', + dd : '%d 天', + M : '1 个月', + MM : '%d 个月', + y : '1 年', + yy : '%d 年' + }, + week : { + // GB/T 7408-1994《数据元和交换格式·信息交换·日期和时间表示法》与ISO 8601:1988等效 + dow : 1, // Monday is the first day of the week. + doy : 4 // The week that contains Jan 4th is the first week of the year. + } +}); + +//! moment.js locale configuration +//! locale : Chinese (Hong Kong) [zh-hk] +//! author : Ben : https://github.com/ben-lin +//! author : Chris Lam : https://github.com/hehachris +//! author : Konstantin : https://github.com/skfd + +hooks.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年MMMD日', + LL : 'YYYY年MMMD日', + LLL : 'YYYY年MMMD日 HH:mm', + LLLL : 'YYYY年MMMD日dddd HH:mm', + l : 'YYYY年MMMD日', + ll : 'YYYY年MMMD日', + lll : 'YYYY年MMMD日 HH:mm', + llll : 'YYYY年MMMD日dddd HH:mm' + }, + meridiemParse: /凌晨|早上|上午|中午|下午|晚上/, + meridiemHour : function (hour, meridiem) { + if (hour === 12) { + hour = 0; + } + if (meridiem === '凌晨' || meridiem === '早上' || meridiem === '上午') { + return hour; + } else if (meridiem === '中午') { + return hour >= 11 ? hour : hour + 12; + } else if (meridiem === '下午' || meridiem === '晚上') { + return hour + 12; + } + }, + meridiem : function (hour, minute, isLower) { + var hm = hour * 100 + minute; + if (hm < 600) { + return '凌晨'; + } else if (hm < 900) { + return '早上'; + } else if (hm < 1130) { + return '上午'; + } else if (hm < 1230) { + return '中午'; + } else if (hm < 1800) { + return '下午'; + } else { + return '晚上'; + } + }, + calendar : { + sameDay : '[今天]LT', + nextDay : '[明天]LT', + nextWeek : '[下]ddddLT', + lastDay : '[昨天]LT', + lastWeek : '[上]ddddLT', + sameElse : 'L' + }, + dayOfMonthOrdinalParse: /\d{1,2}(日|月|週)/, + ordinal : function (number, period) { + switch (period) { + case 'd' : + case 'D' : + case 'DDD' : + return number + '日'; + case 'M' : + return number + '月'; + case 'w' : + case 'W' : + return number + '週'; + default : + return number; + } + }, + relativeTime : { + future : '%s內', + past : '%s前', + s : '幾秒', + m : '1 分鐘', + mm : '%d 分鐘', + h : '1 小時', + hh : '%d 小時', + d : '1 天', + dd : '%d 天', + M : '1 個月', + MM : '%d 個月', + y : '1 年', + yy : '%d 年' + } +}); + +//! moment.js locale configuration +//! locale : Chinese (Taiwan) [zh-tw] +//! author : Ben : https://github.com/ben-lin +//! author : Chris Lam : https://github.com/hehachris + +hooks.defineLocale('zh-tw', { + 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年MMMD日', + LL : 'YYYY年MMMD日', + LLL : 'YYYY年MMMD日 HH:mm', + LLLL : 'YYYY年MMMD日dddd HH:mm', + l : 'YYYY年MMMD日', + ll : 'YYYY年MMMD日', + lll : 'YYYY年MMMD日 HH:mm', + llll : 'YYYY年MMMD日dddd HH:mm' + }, + meridiemParse: /凌晨|早上|上午|中午|下午|晚上/, + meridiemHour : function (hour, meridiem) { + if (hour === 12) { + hour = 0; + } + if (meridiem === '凌晨' || meridiem === '早上' || meridiem === '上午') { + return hour; + } else if (meridiem === '中午') { + return hour >= 11 ? hour : hour + 12; + } else if (meridiem === '下午' || meridiem === '晚上') { + return hour + 12; + } + }, + meridiem : function (hour, minute, isLower) { + var hm = hour * 100 + minute; + if (hm < 600) { + return '凌晨'; + } else if (hm < 900) { + return '早上'; + } else if (hm < 1130) { + return '上午'; + } else if (hm < 1230) { + return '中午'; + } else if (hm < 1800) { + return '下午'; + } else { + return '晚上'; + } + }, + calendar : { + sameDay : '[今天]LT', + nextDay : '[明天]LT', + nextWeek : '[下]ddddLT', + lastDay : '[昨天]LT', + lastWeek : '[上]ddddLT', + sameElse : 'L' + }, + dayOfMonthOrdinalParse: /\d{1,2}(日|月|週)/, + ordinal : function (number, period) { + switch (period) { + case 'd' : + case 'D' : + case 'DDD' : + return number + '日'; + case 'M' : + return number + '月'; + case 'w' : + case 'W' : + return number + '週'; + default : + return number; + } + }, + relativeTime : { + future : '%s內', + past : '%s前', + s : '幾秒', + m : '1 分鐘', + mm : '%d 分鐘', + h : '1 小時', + hh : '%d 小時', + d : '1 天', + dd : '%d 天', + M : '1 個月', + MM : '%d 個月', + y : '1 年', + yy : '%d 年' + } +}); + +hooks.locale('en'); + +return hooks; + +}))); \ No newline at end of file diff --git a/core/static/journal_about/js/moment.js b/core/static/journal_about/js/moment.js new file mode 100644 index 0000000..9fe0066 --- /dev/null +++ b/core/static/journal_about/js/moment.js @@ -0,0 +1,4463 @@ +//! moment.js +//! version : 2.18.1 +//! authors : Tim Wood, Iskren Chernev, Moment.js contributors +//! license : MIT +//! momentjs.com + +;(function (global, factory) { + typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() : + typeof define === 'function' && define.amd ? define(factory) : + global.moment = factory() +}(this, (function () { 'use strict'; + +var hookCallback; + +function hooks () { + return hookCallback.apply(null, arguments); +} + +// This is done to register the method called with moment() +// without creating circular dependencies. +function setHookCallback (callback) { + hookCallback = callback; +} + +function isArray(input) { + return input instanceof Array || Object.prototype.toString.call(input) === '[object Array]'; +} + +function isObject(input) { + // IE8 will treat undefined and null as object if it wasn't for + // input != null + return input != null && Object.prototype.toString.call(input) === '[object Object]'; +} + +function isObjectEmpty(obj) { + var k; + for (k in obj) { + // even if its not own property I'd still call it non-empty + return false; + } + return true; +} + +function isUndefined(input) { + return input === void 0; +} + +function isNumber(input) { + return typeof input === 'number' || Object.prototype.toString.call(input) === '[object Number]'; +} + +function isDate(input) { + return input instanceof Date || Object.prototype.toString.call(input) === '[object Date]'; +} + +function map(arr, fn) { + var res = [], i; + for (i = 0; i < arr.length; ++i) { + res.push(fn(arr[i], i)); + } + return res; +} + +function hasOwnProp(a, b) { + return Object.prototype.hasOwnProperty.call(a, b); +} + +function extend(a, b) { + for (var i in b) { + if (hasOwnProp(b, i)) { + a[i] = b[i]; + } + } + + if (hasOwnProp(b, 'toString')) { + a.toString = b.toString; + } + + if (hasOwnProp(b, 'valueOf')) { + a.valueOf = b.valueOf; + } + + return a; +} + +function createUTC (input, format, locale, strict) { + return createLocalOrUTC(input, format, locale, strict, true).utc(); +} + +function defaultParsingFlags() { + // We need to deep clone this object. + return { + empty : false, + unusedTokens : [], + unusedInput : [], + overflow : -2, + charsLeftOver : 0, + nullInput : false, + invalidMonth : null, + invalidFormat : false, + userInvalidated : false, + iso : false, + parsedDateParts : [], + meridiem : null, + rfc2822 : false, + weekdayMismatch : false + }; +} + +function getParsingFlags(m) { + if (m._pf == null) { + m._pf = defaultParsingFlags(); + } + return m._pf; +} + +var some; +if (Array.prototype.some) { + some = Array.prototype.some; +} else { + some = function (fun) { + var t = Object(this); + var len = t.length >>> 0; + + for (var i = 0; i < len; i++) { + if (i in t && fun.call(this, t[i], i, t)) { + return true; + } + } + + return false; + }; +} + +var some$1 = some; + +function isValid(m) { + if (m._isValid == null) { + var flags = getParsingFlags(m); + var parsedParts = some$1.call(flags.parsedDateParts, function (i) { + return i != null; + }); + var isNowValid = !isNaN(m._d.getTime()) && + flags.overflow < 0 && + !flags.empty && + !flags.invalidMonth && + !flags.invalidWeekday && + !flags.nullInput && + !flags.invalidFormat && + !flags.userInvalidated && + (!flags.meridiem || (flags.meridiem && parsedParts)); + + if (m._strict) { + isNowValid = isNowValid && + flags.charsLeftOver === 0 && + flags.unusedTokens.length === 0 && + flags.bigHour === undefined; + } + + if (Object.isFrozen == null || !Object.isFrozen(m)) { + m._isValid = isNowValid; + } + else { + return isNowValid; + } + } + return m._isValid; +} + +function createInvalid (flags) { + var m = createUTC(NaN); + if (flags != null) { + extend(getParsingFlags(m), flags); + } + else { + getParsingFlags(m).userInvalidated = true; + } + + return m; +} + +// Plugins that add properties should also add the key here (null value), +// so we can properly clone ourselves. +var momentProperties = hooks.momentProperties = []; + +function copyConfig(to, from) { + var i, prop, val; + + if (!isUndefined(from._isAMomentObject)) { + to._isAMomentObject = from._isAMomentObject; + } + if (!isUndefined(from._i)) { + to._i = from._i; + } + if (!isUndefined(from._f)) { + to._f = from._f; + } + if (!isUndefined(from._l)) { + to._l = from._l; + } + if (!isUndefined(from._strict)) { + to._strict = from._strict; + } + if (!isUndefined(from._tzm)) { + to._tzm = from._tzm; + } + if (!isUndefined(from._isUTC)) { + to._isUTC = from._isUTC; + } + if (!isUndefined(from._offset)) { + to._offset = from._offset; + } + if (!isUndefined(from._pf)) { + to._pf = getParsingFlags(from); + } + if (!isUndefined(from._locale)) { + to._locale = from._locale; + } + + if (momentProperties.length > 0) { + for (i = 0; i < momentProperties.length; i++) { + prop = momentProperties[i]; + val = from[prop]; + if (!isUndefined(val)) { + to[prop] = val; + } + } + } + + return to; +} + +var updateInProgress = false; + +// Moment prototype object +function Moment(config) { + copyConfig(this, config); + this._d = new Date(config._d != null ? config._d.getTime() : NaN); + if (!this.isValid()) { + this._d = new Date(NaN); + } + // Prevent infinite loop in case updateOffset creates new moment + // objects. + if (updateInProgress === false) { + updateInProgress = true; + hooks.updateOffset(this); + updateInProgress = false; + } +} + +function isMoment (obj) { + return obj instanceof Moment || (obj != null && obj._isAMomentObject != null); +} + +function absFloor (number) { + if (number < 0) { + // -0 -> 0 + return Math.ceil(number) || 0; + } else { + return Math.floor(number); + } +} + +function toInt(argumentForCoercion) { + var coercedNumber = +argumentForCoercion, + value = 0; + + if (coercedNumber !== 0 && isFinite(coercedNumber)) { + value = absFloor(coercedNumber); + } + + return value; +} + +// compare two arrays, return the number of differences +function compareArrays(array1, array2, dontConvert) { + var len = Math.min(array1.length, array2.length), + lengthDiff = Math.abs(array1.length - array2.length), + diffs = 0, + i; + for (i = 0; i < len; i++) { + if ((dontConvert && array1[i] !== array2[i]) || + (!dontConvert && toInt(array1[i]) !== toInt(array2[i]))) { + diffs++; + } + } + return diffs + lengthDiff; +} + +function warn(msg) { + if (hooks.suppressDeprecationWarnings === false && + (typeof console !== 'undefined') && console.warn) { + console.warn('Deprecation warning: ' + msg); + } +} + +function deprecate(msg, fn) { + var firstTime = true; + + return extend(function () { + if (hooks.deprecationHandler != null) { + hooks.deprecationHandler(null, msg); + } + if (firstTime) { + var args = []; + var arg; + for (var i = 0; i < arguments.length; i++) { + arg = ''; + if (typeof arguments[i] === 'object') { + arg += '\n[' + i + '] '; + for (var key in arguments[0]) { + arg += key + ': ' + arguments[0][key] + ', '; + } + arg = arg.slice(0, -2); // Remove trailing comma and space + } else { + arg = arguments[i]; + } + args.push(arg); + } + warn(msg + '\nArguments: ' + Array.prototype.slice.call(args).join('') + '\n' + (new Error()).stack); + firstTime = false; + } + return fn.apply(this, arguments); + }, fn); +} + +var deprecations = {}; + +function deprecateSimple(name, msg) { + if (hooks.deprecationHandler != null) { + hooks.deprecationHandler(name, msg); + } + if (!deprecations[name]) { + warn(msg); + deprecations[name] = true; + } +} + +hooks.suppressDeprecationWarnings = false; +hooks.deprecationHandler = null; + +function isFunction(input) { + return input instanceof Function || Object.prototype.toString.call(input) === '[object Function]'; +} + +function set (config) { + var prop, i; + for (i in config) { + prop = config[i]; + if (isFunction(prop)) { + this[i] = prop; + } else { + this['_' + i] = prop; + } + } + this._config = config; + // Lenient ordinal parsing accepts just a number in addition to + // number + (possibly) stuff coming from _dayOfMonthOrdinalParse. + // TODO: Remove "ordinalParse" fallback in next major release. + this._dayOfMonthOrdinalParseLenient = new RegExp( + (this._dayOfMonthOrdinalParse.source || this._ordinalParse.source) + + '|' + (/\d{1,2}/).source); +} + +function mergeConfigs(parentConfig, childConfig) { + var res = extend({}, parentConfig), prop; + for (prop in childConfig) { + if (hasOwnProp(childConfig, prop)) { + if (isObject(parentConfig[prop]) && isObject(childConfig[prop])) { + res[prop] = {}; + extend(res[prop], parentConfig[prop]); + extend(res[prop], childConfig[prop]); + } else if (childConfig[prop] != null) { + res[prop] = childConfig[prop]; + } else { + delete res[prop]; + } + } + } + for (prop in parentConfig) { + if (hasOwnProp(parentConfig, prop) && + !hasOwnProp(childConfig, prop) && + isObject(parentConfig[prop])) { + // make sure changes to properties don't modify parent config + res[prop] = extend({}, res[prop]); + } + } + return res; +} + +function Locale(config) { + if (config != null) { + this.set(config); + } +} + +var keys; + +if (Object.keys) { + keys = Object.keys; +} else { + keys = function (obj) { + var i, res = []; + for (i in obj) { + if (hasOwnProp(obj, i)) { + res.push(i); + } + } + return res; + }; +} + +var keys$1 = keys; + +var defaultCalendar = { + sameDay : '[Today at] LT', + nextDay : '[Tomorrow at] LT', + nextWeek : 'dddd [at] LT', + lastDay : '[Yesterday at] LT', + lastWeek : '[Last] dddd [at] LT', + sameElse : 'L' +}; + +function calendar (key, mom, now) { + var output = this._calendar[key] || this._calendar['sameElse']; + return isFunction(output) ? output.call(mom, now) : output; +} + +var defaultLongDateFormat = { + LTS : 'h:mm:ss A', + LT : 'h:mm A', + L : 'MM/DD/YYYY', + LL : 'MMMM D, YYYY', + LLL : 'MMMM D, YYYY h:mm A', + LLLL : 'dddd, MMMM D, YYYY h:mm A' +}; + +function longDateFormat (key) { + var format = this._longDateFormat[key], + formatUpper = this._longDateFormat[key.toUpperCase()]; + + if (format || !formatUpper) { + return format; + } + + this._longDateFormat[key] = formatUpper.replace(/MMMM|MM|DD|dddd/g, function (val) { + return val.slice(1); + }); + + return this._longDateFormat[key]; +} + +var defaultInvalidDate = 'Invalid date'; + +function invalidDate () { + return this._invalidDate; +} + +var defaultOrdinal = '%d'; +var defaultDayOfMonthOrdinalParse = /\d{1,2}/; + +function ordinal (number) { + return this._ordinal.replace('%d', number); +} + +var defaultRelativeTime = { + 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' +}; + +function relativeTime (number, withoutSuffix, string, isFuture) { + var output = this._relativeTime[string]; + return (isFunction(output)) ? + output(number, withoutSuffix, string, isFuture) : + output.replace(/%d/i, number); +} + +function pastFuture (diff, output) { + var format = this._relativeTime[diff > 0 ? 'future' : 'past']; + return isFunction(format) ? format(output) : format.replace(/%s/i, output); +} + +var aliases = {}; + +function addUnitAlias (unit, shorthand) { + var lowerCase = unit.toLowerCase(); + aliases[lowerCase] = aliases[lowerCase + 's'] = aliases[shorthand] = unit; +} + +function normalizeUnits(units) { + return typeof units === 'string' ? aliases[units] || aliases[units.toLowerCase()] : undefined; +} + +function normalizeObjectUnits(inputObject) { + var normalizedInput = {}, + normalizedProp, + prop; + + for (prop in inputObject) { + if (hasOwnProp(inputObject, prop)) { + normalizedProp = normalizeUnits(prop); + if (normalizedProp) { + normalizedInput[normalizedProp] = inputObject[prop]; + } + } + } + + return normalizedInput; +} + +var priorities = {}; + +function addUnitPriority(unit, priority) { + priorities[unit] = priority; +} + +function getPrioritizedUnits(unitsObj) { + var units = []; + for (var u in unitsObj) { + units.push({unit: u, priority: priorities[u]}); + } + units.sort(function (a, b) { + return a.priority - b.priority; + }); + return units; +} + +function makeGetSet (unit, keepTime) { + return function (value) { + if (value != null) { + set$1(this, unit, value); + hooks.updateOffset(this, keepTime); + return this; + } else { + return get(this, unit); + } + }; +} + +function get (mom, unit) { + return mom.isValid() ? + mom._d['get' + (mom._isUTC ? 'UTC' : '') + unit]() : NaN; +} + +function set$1 (mom, unit, value) { + if (mom.isValid()) { + mom._d['set' + (mom._isUTC ? 'UTC' : '') + unit](value); + } +} + +// MOMENTS + +function stringGet (units) { + units = normalizeUnits(units); + if (isFunction(this[units])) { + return this[units](); + } + return this; +} + + +function stringSet (units, value) { + if (typeof units === 'object') { + units = normalizeObjectUnits(units); + var prioritized = getPrioritizedUnits(units); + for (var i = 0; i < prioritized.length; i++) { + this[prioritized[i].unit](units[prioritized[i].unit]); + } + } else { + units = normalizeUnits(units); + if (isFunction(this[units])) { + return this[units](value); + } + } + return this; +} + +function zeroFill(number, targetLength, forceSign) { + var absNumber = '' + Math.abs(number), + zerosToFill = targetLength - absNumber.length, + sign = number >= 0; + return (sign ? (forceSign ? '+' : '') : '-') + + Math.pow(10, Math.max(0, zerosToFill)).toString().substr(1) + absNumber; +} + +var formattingTokens = /(\[[^\[]*\])|(\\)?([Hh]mm(ss)?|Mo|MM?M?M?|Do|DDDo|DD?D?D?|ddd?d?|do?|w[o|w]?|W[o|W]?|Qo?|YYYYYY|YYYYY|YYYY|YY|gg(ggg?)?|GG(GGG?)?|e|E|a|A|hh?|HH?|kk?|mm?|ss?|S{1,9}|x|X|zz?|ZZ?|.)/g; + +var localFormattingTokens = /(\[[^\[]*\])|(\\)?(LTS|LT|LL?L?L?|l{1,4})/g; + +var formatFunctions = {}; + +var formatTokenFunctions = {}; + +// token: 'M' +// padded: ['MM', 2] +// ordinal: 'Mo' +// callback: function () { this.month() + 1 } +function addFormatToken (token, padded, ordinal, callback) { + var func = callback; + if (typeof callback === 'string') { + func = function () { + return this[callback](); + }; + } + if (token) { + formatTokenFunctions[token] = func; + } + if (padded) { + formatTokenFunctions[padded[0]] = function () { + return zeroFill(func.apply(this, arguments), padded[1], padded[2]); + }; + } + if (ordinal) { + formatTokenFunctions[ordinal] = function () { + return this.localeData().ordinal(func.apply(this, arguments), token); + }; + } +} + +function removeFormattingTokens(input) { + if (input.match(/\[[\s\S]/)) { + return input.replace(/^\[|\]$/g, ''); + } + return input.replace(/\\/g, ''); +} + +function makeFormatFunction(format) { + var array = format.match(formattingTokens), i, length; + + for (i = 0, length = array.length; i < length; i++) { + if (formatTokenFunctions[array[i]]) { + array[i] = formatTokenFunctions[array[i]]; + } else { + array[i] = removeFormattingTokens(array[i]); + } + } + + return function (mom) { + var output = '', i; + for (i = 0; i < length; i++) { + output += isFunction(array[i]) ? array[i].call(mom, format) : array[i]; + } + return output; + }; +} + +// format date using native date object +function formatMoment(m, format) { + if (!m.isValid()) { + return m.localeData().invalidDate(); + } + + format = expandFormat(format, m.localeData()); + formatFunctions[format] = formatFunctions[format] || makeFormatFunction(format); + + return formatFunctions[format](m); +} + +function expandFormat(format, locale) { + var i = 5; + + function replaceLongDateFormatTokens(input) { + return locale.longDateFormat(input) || input; + } + + localFormattingTokens.lastIndex = 0; + while (i >= 0 && localFormattingTokens.test(format)) { + format = format.replace(localFormattingTokens, replaceLongDateFormatTokens); + localFormattingTokens.lastIndex = 0; + i -= 1; + } + + return format; +} + +var match1 = /\d/; // 0 - 9 +var match2 = /\d\d/; // 00 - 99 +var match3 = /\d{3}/; // 000 - 999 +var match4 = /\d{4}/; // 0000 - 9999 +var match6 = /[+-]?\d{6}/; // -999999 - 999999 +var match1to2 = /\d\d?/; // 0 - 99 +var match3to4 = /\d\d\d\d?/; // 999 - 9999 +var match5to6 = /\d\d\d\d\d\d?/; // 99999 - 999999 +var match1to3 = /\d{1,3}/; // 0 - 999 +var match1to4 = /\d{1,4}/; // 0 - 9999 +var match1to6 = /[+-]?\d{1,6}/; // -999999 - 999999 + +var matchUnsigned = /\d+/; // 0 - inf +var matchSigned = /[+-]?\d+/; // -inf - inf + +var matchOffset = /Z|[+-]\d\d:?\d\d/gi; // +00:00 -00:00 +0000 -0000 or Z +var matchShortOffset = /Z|[+-]\d\d(?::?\d\d)?/gi; // +00 -00 +00:00 -00:00 +0000 -0000 or Z + +var matchTimestamp = /[+-]?\d+(\.\d{1,3})?/; // 123456789 123456789.123 + +// any word (or two) characters or numbers including two/three word month in arabic. +// includes scottish gaelic two word and hyphenated months +var matchWord = /[0-9]*['a-z\u00A0-\u05FF\u0700-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]+|[\u0600-\u06FF\/]+(\s*?[\u0600-\u06FF]+){1,2}/i; + + +var regexes = {}; + +function addRegexToken (token, regex, strictRegex) { + regexes[token] = isFunction(regex) ? regex : function (isStrict, localeData) { + return (isStrict && strictRegex) ? strictRegex : regex; + }; +} + +function getParseRegexForToken (token, config) { + if (!hasOwnProp(regexes, token)) { + return new RegExp(unescapeFormat(token)); + } + + return regexes[token](config._strict, config._locale); +} + +// Code from http://stackoverflow.com/questions/3561493/is-there-a-regexp-escape-function-in-javascript +function unescapeFormat(s) { + return regexEscape(s.replace('\\', '').replace(/\\(\[)|\\(\])|\[([^\]\[]*)\]|\\(.)/g, function (matched, p1, p2, p3, p4) { + return p1 || p2 || p3 || p4; + })); +} + +function regexEscape(s) { + return s.replace(/[-\/\\^$*+?.()|[\]{}]/g, '\\$&'); +} + +var tokens = {}; + +function addParseToken (token, callback) { + var i, func = callback; + if (typeof token === 'string') { + token = [token]; + } + if (isNumber(callback)) { + func = function (input, array) { + array[callback] = toInt(input); + }; + } + for (i = 0; i < token.length; i++) { + tokens[token[i]] = func; + } +} + +function addWeekParseToken (token, callback) { + addParseToken(token, function (input, array, config, token) { + config._w = config._w || {}; + callback(input, config._w, config, token); + }); +} + +function addTimeToArrayFromToken(token, input, config) { + if (input != null && hasOwnProp(tokens, token)) { + tokens[token](input, config._a, config, token); + } +} + +var YEAR = 0; +var MONTH = 1; +var DATE = 2; +var HOUR = 3; +var MINUTE = 4; +var SECOND = 5; +var MILLISECOND = 6; +var WEEK = 7; +var WEEKDAY = 8; + +var indexOf; + +if (Array.prototype.indexOf) { + indexOf = Array.prototype.indexOf; +} else { + indexOf = function (o) { + // I know + var i; + for (i = 0; i < this.length; ++i) { + if (this[i] === o) { + return i; + } + } + return -1; + }; +} + +var indexOf$1 = indexOf; + +function daysInMonth(year, month) { + return new Date(Date.UTC(year, month + 1, 0)).getUTCDate(); +} + +// FORMATTING + +addFormatToken('M', ['MM', 2], 'Mo', function () { + return this.month() + 1; +}); + +addFormatToken('MMM', 0, 0, function (format) { + return this.localeData().monthsShort(this, format); +}); + +addFormatToken('MMMM', 0, 0, function (format) { + return this.localeData().months(this, format); +}); + +// ALIASES + +addUnitAlias('month', 'M'); + +// PRIORITY + +addUnitPriority('month', 8); + +// PARSING + +addRegexToken('M', match1to2); +addRegexToken('MM', match1to2, match2); +addRegexToken('MMM', function (isStrict, locale) { + return locale.monthsShortRegex(isStrict); +}); +addRegexToken('MMMM', function (isStrict, locale) { + return locale.monthsRegex(isStrict); +}); + +addParseToken(['M', 'MM'], function (input, array) { + array[MONTH] = toInt(input) - 1; +}); + +addParseToken(['MMM', 'MMMM'], function (input, array, config, token) { + var month = config._locale.monthsParse(input, token, config._strict); + // if we didn't find a month name, mark the date as invalid. + if (month != null) { + array[MONTH] = month; + } else { + getParsingFlags(config).invalidMonth = input; + } +}); + +// LOCALES + +var MONTHS_IN_FORMAT = /D[oD]?(\[[^\[\]]*\]|\s)+MMMM?/; +var defaultLocaleMonths = 'January_February_March_April_May_June_July_August_September_October_November_December'.split('_'); +function localeMonths (m, format) { + if (!m) { + return isArray(this._months) ? this._months : + this._months['standalone']; + } + return isArray(this._months) ? this._months[m.month()] : + this._months[(this._months.isFormat || MONTHS_IN_FORMAT).test(format) ? 'format' : 'standalone'][m.month()]; +} + +var defaultLocaleMonthsShort = 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'); +function localeMonthsShort (m, format) { + if (!m) { + return isArray(this._monthsShort) ? this._monthsShort : + this._monthsShort['standalone']; + } + return isArray(this._monthsShort) ? this._monthsShort[m.month()] : + this._monthsShort[MONTHS_IN_FORMAT.test(format) ? 'format' : 'standalone'][m.month()]; +} + +function handleStrictParse(monthName, format, strict) { + var i, ii, mom, llc = monthName.toLocaleLowerCase(); + if (!this._monthsParse) { + // this is not used + this._monthsParse = []; + this._longMonthsParse = []; + this._shortMonthsParse = []; + for (i = 0; i < 12; ++i) { + mom = createUTC([2000, i]); + this._shortMonthsParse[i] = this.monthsShort(mom, '').toLocaleLowerCase(); + this._longMonthsParse[i] = this.months(mom, '').toLocaleLowerCase(); + } + } + + if (strict) { + if (format === 'MMM') { + ii = indexOf$1.call(this._shortMonthsParse, llc); + return ii !== -1 ? ii : null; + } else { + ii = indexOf$1.call(this._longMonthsParse, llc); + return ii !== -1 ? ii : null; + } + } else { + if (format === 'MMM') { + ii = indexOf$1.call(this._shortMonthsParse, llc); + if (ii !== -1) { + return ii; + } + ii = indexOf$1.call(this._longMonthsParse, llc); + return ii !== -1 ? ii : null; + } else { + ii = indexOf$1.call(this._longMonthsParse, llc); + if (ii !== -1) { + return ii; + } + ii = indexOf$1.call(this._shortMonthsParse, llc); + return ii !== -1 ? ii : null; + } + } +} + +function localeMonthsParse (monthName, format, strict) { + var i, mom, regex; + + if (this._monthsParseExact) { + return handleStrictParse.call(this, monthName, format, strict); + } + + if (!this._monthsParse) { + this._monthsParse = []; + this._longMonthsParse = []; + this._shortMonthsParse = []; + } + + // TODO: add sorting + // Sorting makes sure if one month (or abbr) is a prefix of another + // see sorting in computeMonthsParse + for (i = 0; i < 12; i++) { + // make the regex if we don't have it already + mom = createUTC([2000, i]); + if (strict && !this._longMonthsParse[i]) { + this._longMonthsParse[i] = new RegExp('^' + this.months(mom, '').replace('.', '') + '$', 'i'); + this._shortMonthsParse[i] = new RegExp('^' + this.monthsShort(mom, '').replace('.', '') + '$', 'i'); + } + if (!strict && !this._monthsParse[i]) { + regex = '^' + this.months(mom, '') + '|^' + this.monthsShort(mom, ''); + this._monthsParse[i] = new RegExp(regex.replace('.', ''), 'i'); + } + // test the regex + if (strict && format === 'MMMM' && this._longMonthsParse[i].test(monthName)) { + return i; + } else if (strict && format === 'MMM' && this._shortMonthsParse[i].test(monthName)) { + return i; + } else if (!strict && this._monthsParse[i].test(monthName)) { + return i; + } + } +} + +// MOMENTS + +function setMonth (mom, value) { + var dayOfMonth; + + if (!mom.isValid()) { + // No op + return mom; + } + + if (typeof value === 'string') { + if (/^\d+$/.test(value)) { + value = toInt(value); + } else { + value = mom.localeData().monthsParse(value); + // TODO: Another silent failure? + if (!isNumber(value)) { + return mom; + } + } + } + + dayOfMonth = Math.min(mom.date(), daysInMonth(mom.year(), value)); + mom._d['set' + (mom._isUTC ? 'UTC' : '') + 'Month'](value, dayOfMonth); + return mom; +} + +function getSetMonth (value) { + if (value != null) { + setMonth(this, value); + hooks.updateOffset(this, true); + return this; + } else { + return get(this, 'Month'); + } +} + +function getDaysInMonth () { + return daysInMonth(this.year(), this.month()); +} + +var defaultMonthsShortRegex = matchWord; +function monthsShortRegex (isStrict) { + if (this._monthsParseExact) { + if (!hasOwnProp(this, '_monthsRegex')) { + computeMonthsParse.call(this); + } + if (isStrict) { + return this._monthsShortStrictRegex; + } else { + return this._monthsShortRegex; + } + } else { + if (!hasOwnProp(this, '_monthsShortRegex')) { + this._monthsShortRegex = defaultMonthsShortRegex; + } + return this._monthsShortStrictRegex && isStrict ? + this._monthsShortStrictRegex : this._monthsShortRegex; + } +} + +var defaultMonthsRegex = matchWord; +function monthsRegex (isStrict) { + if (this._monthsParseExact) { + if (!hasOwnProp(this, '_monthsRegex')) { + computeMonthsParse.call(this); + } + if (isStrict) { + return this._monthsStrictRegex; + } else { + return this._monthsRegex; + } + } else { + if (!hasOwnProp(this, '_monthsRegex')) { + this._monthsRegex = defaultMonthsRegex; + } + return this._monthsStrictRegex && isStrict ? + this._monthsStrictRegex : this._monthsRegex; + } +} + +function computeMonthsParse () { + function cmpLenRev(a, b) { + return b.length - a.length; + } + + var shortPieces = [], longPieces = [], mixedPieces = [], + i, mom; + for (i = 0; i < 12; i++) { + // make the regex if we don't have it already + mom = createUTC([2000, i]); + shortPieces.push(this.monthsShort(mom, '')); + longPieces.push(this.months(mom, '')); + mixedPieces.push(this.months(mom, '')); + mixedPieces.push(this.monthsShort(mom, '')); + } + // Sorting makes sure if one month (or abbr) is a prefix of another it + // will match the longer piece. + shortPieces.sort(cmpLenRev); + longPieces.sort(cmpLenRev); + mixedPieces.sort(cmpLenRev); + for (i = 0; i < 12; i++) { + shortPieces[i] = regexEscape(shortPieces[i]); + longPieces[i] = regexEscape(longPieces[i]); + } + for (i = 0; i < 24; i++) { + mixedPieces[i] = regexEscape(mixedPieces[i]); + } + + this._monthsRegex = new RegExp('^(' + mixedPieces.join('|') + ')', 'i'); + this._monthsShortRegex = this._monthsRegex; + this._monthsStrictRegex = new RegExp('^(' + longPieces.join('|') + ')', 'i'); + this._monthsShortStrictRegex = new RegExp('^(' + shortPieces.join('|') + ')', 'i'); +} + +// FORMATTING + +addFormatToken('Y', 0, 0, function () { + var y = this.year(); + return y <= 9999 ? '' + y : '+' + y; +}); + +addFormatToken(0, ['YY', 2], 0, function () { + return this.year() % 100; +}); + +addFormatToken(0, ['YYYY', 4], 0, 'year'); +addFormatToken(0, ['YYYYY', 5], 0, 'year'); +addFormatToken(0, ['YYYYYY', 6, true], 0, 'year'); + +// ALIASES + +addUnitAlias('year', 'y'); + +// PRIORITIES + +addUnitPriority('year', 1); + +// PARSING + +addRegexToken('Y', matchSigned); +addRegexToken('YY', match1to2, match2); +addRegexToken('YYYY', match1to4, match4); +addRegexToken('YYYYY', match1to6, match6); +addRegexToken('YYYYYY', match1to6, match6); + +addParseToken(['YYYYY', 'YYYYYY'], YEAR); +addParseToken('YYYY', function (input, array) { + array[YEAR] = input.length === 2 ? hooks.parseTwoDigitYear(input) : toInt(input); +}); +addParseToken('YY', function (input, array) { + array[YEAR] = hooks.parseTwoDigitYear(input); +}); +addParseToken('Y', function (input, array) { + array[YEAR] = parseInt(input, 10); +}); + +// HELPERS + +function daysInYear(year) { + return isLeapYear(year) ? 366 : 365; +} + +function isLeapYear(year) { + return (year % 4 === 0 && year % 100 !== 0) || year % 400 === 0; +} + +// HOOKS + +hooks.parseTwoDigitYear = function (input) { + return toInt(input) + (toInt(input) > 68 ? 1900 : 2000); +}; + +// MOMENTS + +var getSetYear = makeGetSet('FullYear', true); + +function getIsLeapYear () { + return isLeapYear(this.year()); +} + +function createDate (y, m, d, h, M, s, ms) { + // can't just apply() to create a date: + // https://stackoverflow.com/q/181348 + var date = new Date(y, m, d, h, M, s, ms); + + // the date constructor remaps years 0-99 to 1900-1999 + if (y < 100 && y >= 0 && isFinite(date.getFullYear())) { + date.setFullYear(y); + } + return date; +} + +function createUTCDate (y) { + var date = new Date(Date.UTC.apply(null, arguments)); + + // the Date.UTC function remaps years 0-99 to 1900-1999 + if (y < 100 && y >= 0 && isFinite(date.getUTCFullYear())) { + date.setUTCFullYear(y); + } + return date; +} + +// start-of-first-week - start-of-year +function firstWeekOffset(year, dow, doy) { + var // first-week day -- which january is always in the first week (4 for iso, 1 for other) + fwd = 7 + dow - doy, + // first-week day local weekday -- which local weekday is fwd + fwdlw = (7 + createUTCDate(year, 0, fwd).getUTCDay() - dow) % 7; + + return -fwdlw + fwd - 1; +} + +// https://en.wikipedia.org/wiki/ISO_week_date#Calculating_a_date_given_the_year.2C_week_number_and_weekday +function dayOfYearFromWeeks(year, week, weekday, dow, doy) { + var localWeekday = (7 + weekday - dow) % 7, + weekOffset = firstWeekOffset(year, dow, doy), + dayOfYear = 1 + 7 * (week - 1) + localWeekday + weekOffset, + resYear, resDayOfYear; + + if (dayOfYear <= 0) { + resYear = year - 1; + resDayOfYear = daysInYear(resYear) + dayOfYear; + } else if (dayOfYear > daysInYear(year)) { + resYear = year + 1; + resDayOfYear = dayOfYear - daysInYear(year); + } else { + resYear = year; + resDayOfYear = dayOfYear; + } + + return { + year: resYear, + dayOfYear: resDayOfYear + }; +} + +function weekOfYear(mom, dow, doy) { + var weekOffset = firstWeekOffset(mom.year(), dow, doy), + week = Math.floor((mom.dayOfYear() - weekOffset - 1) / 7) + 1, + resWeek, resYear; + + if (week < 1) { + resYear = mom.year() - 1; + resWeek = week + weeksInYear(resYear, dow, doy); + } else if (week > weeksInYear(mom.year(), dow, doy)) { + resWeek = week - weeksInYear(mom.year(), dow, doy); + resYear = mom.year() + 1; + } else { + resYear = mom.year(); + resWeek = week; + } + + return { + week: resWeek, + year: resYear + }; +} + +function weeksInYear(year, dow, doy) { + var weekOffset = firstWeekOffset(year, dow, doy), + weekOffsetNext = firstWeekOffset(year + 1, dow, doy); + return (daysInYear(year) - weekOffset + weekOffsetNext) / 7; +} + +// FORMATTING + +addFormatToken('w', ['ww', 2], 'wo', 'week'); +addFormatToken('W', ['WW', 2], 'Wo', 'isoWeek'); + +// ALIASES + +addUnitAlias('week', 'w'); +addUnitAlias('isoWeek', 'W'); + +// PRIORITIES + +addUnitPriority('week', 5); +addUnitPriority('isoWeek', 5); + +// PARSING + +addRegexToken('w', match1to2); +addRegexToken('ww', match1to2, match2); +addRegexToken('W', match1to2); +addRegexToken('WW', match1to2, match2); + +addWeekParseToken(['w', 'ww', 'W', 'WW'], function (input, week, config, token) { + week[token.substr(0, 1)] = toInt(input); +}); + +// HELPERS + +// LOCALES + +function localeWeek (mom) { + return weekOfYear(mom, this._week.dow, this._week.doy).week; +} + +var defaultLocaleWeek = { + dow : 0, // Sunday is the first day of the week. + doy : 6 // The week that contains Jan 1st is the first week of the year. +}; + +function localeFirstDayOfWeek () { + return this._week.dow; +} + +function localeFirstDayOfYear () { + return this._week.doy; +} + +// MOMENTS + +function getSetWeek (input) { + var week = this.localeData().week(this); + return input == null ? week : this.add((input - week) * 7, 'd'); +} + +function getSetISOWeek (input) { + var week = weekOfYear(this, 1, 4).week; + return input == null ? week : this.add((input - week) * 7, 'd'); +} + +// FORMATTING + +addFormatToken('d', 0, 'do', 'day'); + +addFormatToken('dd', 0, 0, function (format) { + return this.localeData().weekdaysMin(this, format); +}); + +addFormatToken('ddd', 0, 0, function (format) { + return this.localeData().weekdaysShort(this, format); +}); + +addFormatToken('dddd', 0, 0, function (format) { + return this.localeData().weekdays(this, format); +}); + +addFormatToken('e', 0, 0, 'weekday'); +addFormatToken('E', 0, 0, 'isoWeekday'); + +// ALIASES + +addUnitAlias('day', 'd'); +addUnitAlias('weekday', 'e'); +addUnitAlias('isoWeekday', 'E'); + +// PRIORITY +addUnitPriority('day', 11); +addUnitPriority('weekday', 11); +addUnitPriority('isoWeekday', 11); + +// PARSING + +addRegexToken('d', match1to2); +addRegexToken('e', match1to2); +addRegexToken('E', match1to2); +addRegexToken('dd', function (isStrict, locale) { + return locale.weekdaysMinRegex(isStrict); +}); +addRegexToken('ddd', function (isStrict, locale) { + return locale.weekdaysShortRegex(isStrict); +}); +addRegexToken('dddd', function (isStrict, locale) { + return locale.weekdaysRegex(isStrict); +}); + +addWeekParseToken(['dd', 'ddd', 'dddd'], function (input, week, config, token) { + var weekday = config._locale.weekdaysParse(input, token, config._strict); + // if we didn't get a weekday name, mark the date as invalid + if (weekday != null) { + week.d = weekday; + } else { + getParsingFlags(config).invalidWeekday = input; + } +}); + +addWeekParseToken(['d', 'e', 'E'], function (input, week, config, token) { + week[token] = toInt(input); +}); + +// HELPERS + +function parseWeekday(input, locale) { + if (typeof input !== 'string') { + return input; + } + + if (!isNaN(input)) { + return parseInt(input, 10); + } + + input = locale.weekdaysParse(input); + if (typeof input === 'number') { + return input; + } + + return null; +} + +function parseIsoWeekday(input, locale) { + if (typeof input === 'string') { + return locale.weekdaysParse(input) % 7 || 7; + } + return isNaN(input) ? null : input; +} + +// LOCALES + +var defaultLocaleWeekdays = 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split('_'); +function localeWeekdays (m, format) { + if (!m) { + return isArray(this._weekdays) ? this._weekdays : + this._weekdays['standalone']; + } + return isArray(this._weekdays) ? this._weekdays[m.day()] : + this._weekdays[this._weekdays.isFormat.test(format) ? 'format' : 'standalone'][m.day()]; +} + +var defaultLocaleWeekdaysShort = 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'); +function localeWeekdaysShort (m) { + return (m) ? this._weekdaysShort[m.day()] : this._weekdaysShort; +} + +var defaultLocaleWeekdaysMin = 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'); +function localeWeekdaysMin (m) { + return (m) ? this._weekdaysMin[m.day()] : this._weekdaysMin; +} + +function handleStrictParse$1(weekdayName, format, strict) { + var i, ii, mom, llc = weekdayName.toLocaleLowerCase(); + if (!this._weekdaysParse) { + this._weekdaysParse = []; + this._shortWeekdaysParse = []; + this._minWeekdaysParse = []; + + for (i = 0; i < 7; ++i) { + mom = createUTC([2000, 1]).day(i); + this._minWeekdaysParse[i] = this.weekdaysMin(mom, '').toLocaleLowerCase(); + this._shortWeekdaysParse[i] = this.weekdaysShort(mom, '').toLocaleLowerCase(); + this._weekdaysParse[i] = this.weekdays(mom, '').toLocaleLowerCase(); + } + } + + if (strict) { + if (format === 'dddd') { + ii = indexOf$1.call(this._weekdaysParse, llc); + return ii !== -1 ? ii : null; + } else if (format === 'ddd') { + ii = indexOf$1.call(this._shortWeekdaysParse, llc); + return ii !== -1 ? ii : null; + } else { + ii = indexOf$1.call(this._minWeekdaysParse, llc); + return ii !== -1 ? ii : null; + } + } else { + if (format === 'dddd') { + ii = indexOf$1.call(this._weekdaysParse, llc); + if (ii !== -1) { + return ii; + } + ii = indexOf$1.call(this._shortWeekdaysParse, llc); + if (ii !== -1) { + return ii; + } + ii = indexOf$1.call(this._minWeekdaysParse, llc); + return ii !== -1 ? ii : null; + } else if (format === 'ddd') { + ii = indexOf$1.call(this._shortWeekdaysParse, llc); + if (ii !== -1) { + return ii; + } + ii = indexOf$1.call(this._weekdaysParse, llc); + if (ii !== -1) { + return ii; + } + ii = indexOf$1.call(this._minWeekdaysParse, llc); + return ii !== -1 ? ii : null; + } else { + ii = indexOf$1.call(this._minWeekdaysParse, llc); + if (ii !== -1) { + return ii; + } + ii = indexOf$1.call(this._weekdaysParse, llc); + if (ii !== -1) { + return ii; + } + ii = indexOf$1.call(this._shortWeekdaysParse, llc); + return ii !== -1 ? ii : null; + } + } +} + +function localeWeekdaysParse (weekdayName, format, strict) { + var i, mom, regex; + + if (this._weekdaysParseExact) { + return handleStrictParse$1.call(this, weekdayName, format, strict); + } + + if (!this._weekdaysParse) { + this._weekdaysParse = []; + this._minWeekdaysParse = []; + this._shortWeekdaysParse = []; + this._fullWeekdaysParse = []; + } + + for (i = 0; i < 7; i++) { + // make the regex if we don't have it already + + mom = createUTC([2000, 1]).day(i); + if (strict && !this._fullWeekdaysParse[i]) { + this._fullWeekdaysParse[i] = new RegExp('^' + this.weekdays(mom, '').replace('.', '\.?') + '$', 'i'); + this._shortWeekdaysParse[i] = new RegExp('^' + this.weekdaysShort(mom, '').replace('.', '\.?') + '$', 'i'); + this._minWeekdaysParse[i] = new RegExp('^' + this.weekdaysMin(mom, '').replace('.', '\.?') + '$', 'i'); + } + if (!this._weekdaysParse[i]) { + regex = '^' + this.weekdays(mom, '') + '|^' + this.weekdaysShort(mom, '') + '|^' + this.weekdaysMin(mom, ''); + this._weekdaysParse[i] = new RegExp(regex.replace('.', ''), 'i'); + } + // test the regex + if (strict && format === 'dddd' && this._fullWeekdaysParse[i].test(weekdayName)) { + return i; + } else if (strict && format === 'ddd' && this._shortWeekdaysParse[i].test(weekdayName)) { + return i; + } else if (strict && format === 'dd' && this._minWeekdaysParse[i].test(weekdayName)) { + return i; + } else if (!strict && this._weekdaysParse[i].test(weekdayName)) { + return i; + } + } +} + +// MOMENTS + +function getSetDayOfWeek (input) { + if (!this.isValid()) { + return input != null ? this : NaN; + } + var day = this._isUTC ? this._d.getUTCDay() : this._d.getDay(); + if (input != null) { + input = parseWeekday(input, this.localeData()); + return this.add(input - day, 'd'); + } else { + return day; + } +} + +function getSetLocaleDayOfWeek (input) { + if (!this.isValid()) { + return input != null ? this : NaN; + } + var weekday = (this.day() + 7 - this.localeData()._week.dow) % 7; + return input == null ? weekday : this.add(input - weekday, 'd'); +} + +function getSetISODayOfWeek (input) { + if (!this.isValid()) { + return input != null ? this : NaN; + } + + // behaves the same as moment#day except + // as a getter, returns 7 instead of 0 (1-7 range instead of 0-6) + // as a setter, sunday should belong to the previous week. + + if (input != null) { + var weekday = parseIsoWeekday(input, this.localeData()); + return this.day(this.day() % 7 ? weekday : weekday - 7); + } else { + return this.day() || 7; + } +} + +var defaultWeekdaysRegex = matchWord; +function weekdaysRegex (isStrict) { + if (this._weekdaysParseExact) { + if (!hasOwnProp(this, '_weekdaysRegex')) { + computeWeekdaysParse.call(this); + } + if (isStrict) { + return this._weekdaysStrictRegex; + } else { + return this._weekdaysRegex; + } + } else { + if (!hasOwnProp(this, '_weekdaysRegex')) { + this._weekdaysRegex = defaultWeekdaysRegex; + } + return this._weekdaysStrictRegex && isStrict ? + this._weekdaysStrictRegex : this._weekdaysRegex; + } +} + +var defaultWeekdaysShortRegex = matchWord; +function weekdaysShortRegex (isStrict) { + if (this._weekdaysParseExact) { + if (!hasOwnProp(this, '_weekdaysRegex')) { + computeWeekdaysParse.call(this); + } + if (isStrict) { + return this._weekdaysShortStrictRegex; + } else { + return this._weekdaysShortRegex; + } + } else { + if (!hasOwnProp(this, '_weekdaysShortRegex')) { + this._weekdaysShortRegex = defaultWeekdaysShortRegex; + } + return this._weekdaysShortStrictRegex && isStrict ? + this._weekdaysShortStrictRegex : this._weekdaysShortRegex; + } +} + +var defaultWeekdaysMinRegex = matchWord; +function weekdaysMinRegex (isStrict) { + if (this._weekdaysParseExact) { + if (!hasOwnProp(this, '_weekdaysRegex')) { + computeWeekdaysParse.call(this); + } + if (isStrict) { + return this._weekdaysMinStrictRegex; + } else { + return this._weekdaysMinRegex; + } + } else { + if (!hasOwnProp(this, '_weekdaysMinRegex')) { + this._weekdaysMinRegex = defaultWeekdaysMinRegex; + } + return this._weekdaysMinStrictRegex && isStrict ? + this._weekdaysMinStrictRegex : this._weekdaysMinRegex; + } +} + + +function computeWeekdaysParse () { + function cmpLenRev(a, b) { + return b.length - a.length; + } + + var minPieces = [], shortPieces = [], longPieces = [], mixedPieces = [], + i, mom, minp, shortp, longp; + for (i = 0; i < 7; i++) { + // make the regex if we don't have it already + mom = createUTC([2000, 1]).day(i); + minp = this.weekdaysMin(mom, ''); + shortp = this.weekdaysShort(mom, ''); + longp = this.weekdays(mom, ''); + minPieces.push(minp); + shortPieces.push(shortp); + longPieces.push(longp); + mixedPieces.push(minp); + mixedPieces.push(shortp); + mixedPieces.push(longp); + } + // Sorting makes sure if one weekday (or abbr) is a prefix of another it + // will match the longer piece. + minPieces.sort(cmpLenRev); + shortPieces.sort(cmpLenRev); + longPieces.sort(cmpLenRev); + mixedPieces.sort(cmpLenRev); + for (i = 0; i < 7; i++) { + shortPieces[i] = regexEscape(shortPieces[i]); + longPieces[i] = regexEscape(longPieces[i]); + mixedPieces[i] = regexEscape(mixedPieces[i]); + } + + this._weekdaysRegex = new RegExp('^(' + mixedPieces.join('|') + ')', 'i'); + this._weekdaysShortRegex = this._weekdaysRegex; + this._weekdaysMinRegex = this._weekdaysRegex; + + this._weekdaysStrictRegex = new RegExp('^(' + longPieces.join('|') + ')', 'i'); + this._weekdaysShortStrictRegex = new RegExp('^(' + shortPieces.join('|') + ')', 'i'); + this._weekdaysMinStrictRegex = new RegExp('^(' + minPieces.join('|') + ')', 'i'); +} + +// FORMATTING + +function hFormat() { + return this.hours() % 12 || 12; +} + +function kFormat() { + return this.hours() || 24; +} + +addFormatToken('H', ['HH', 2], 0, 'hour'); +addFormatToken('h', ['hh', 2], 0, hFormat); +addFormatToken('k', ['kk', 2], 0, kFormat); + +addFormatToken('hmm', 0, 0, function () { + return '' + hFormat.apply(this) + zeroFill(this.minutes(), 2); +}); + +addFormatToken('hmmss', 0, 0, function () { + return '' + hFormat.apply(this) + zeroFill(this.minutes(), 2) + + zeroFill(this.seconds(), 2); +}); + +addFormatToken('Hmm', 0, 0, function () { + return '' + this.hours() + zeroFill(this.minutes(), 2); +}); + +addFormatToken('Hmmss', 0, 0, function () { + return '' + this.hours() + zeroFill(this.minutes(), 2) + + zeroFill(this.seconds(), 2); +}); + +function meridiem (token, lowercase) { + addFormatToken(token, 0, 0, function () { + return this.localeData().meridiem(this.hours(), this.minutes(), lowercase); + }); +} + +meridiem('a', true); +meridiem('A', false); + +// ALIASES + +addUnitAlias('hour', 'h'); + +// PRIORITY +addUnitPriority('hour', 13); + +// PARSING + +function matchMeridiem (isStrict, locale) { + return locale._meridiemParse; +} + +addRegexToken('a', matchMeridiem); +addRegexToken('A', matchMeridiem); +addRegexToken('H', match1to2); +addRegexToken('h', match1to2); +addRegexToken('k', match1to2); +addRegexToken('HH', match1to2, match2); +addRegexToken('hh', match1to2, match2); +addRegexToken('kk', match1to2, match2); + +addRegexToken('hmm', match3to4); +addRegexToken('hmmss', match5to6); +addRegexToken('Hmm', match3to4); +addRegexToken('Hmmss', match5to6); + +addParseToken(['H', 'HH'], HOUR); +addParseToken(['k', 'kk'], function (input, array, config) { + var kInput = toInt(input); + array[HOUR] = kInput === 24 ? 0 : kInput; +}); +addParseToken(['a', 'A'], function (input, array, config) { + config._isPm = config._locale.isPM(input); + config._meridiem = input; +}); +addParseToken(['h', 'hh'], function (input, array, config) { + array[HOUR] = toInt(input); + getParsingFlags(config).bigHour = true; +}); +addParseToken('hmm', function (input, array, config) { + var pos = input.length - 2; + array[HOUR] = toInt(input.substr(0, pos)); + array[MINUTE] = toInt(input.substr(pos)); + getParsingFlags(config).bigHour = true; +}); +addParseToken('hmmss', function (input, array, config) { + var pos1 = input.length - 4; + var pos2 = input.length - 2; + array[HOUR] = toInt(input.substr(0, pos1)); + array[MINUTE] = toInt(input.substr(pos1, 2)); + array[SECOND] = toInt(input.substr(pos2)); + getParsingFlags(config).bigHour = true; +}); +addParseToken('Hmm', function (input, array, config) { + var pos = input.length - 2; + array[HOUR] = toInt(input.substr(0, pos)); + array[MINUTE] = toInt(input.substr(pos)); +}); +addParseToken('Hmmss', function (input, array, config) { + var pos1 = input.length - 4; + var pos2 = input.length - 2; + array[HOUR] = toInt(input.substr(0, pos1)); + array[MINUTE] = toInt(input.substr(pos1, 2)); + array[SECOND] = toInt(input.substr(pos2)); +}); + +// LOCALES + +function localeIsPM (input) { + // IE8 Quirks Mode & IE7 Standards Mode do not allow accessing strings like arrays + // Using charAt should be more compatible. + return ((input + '').toLowerCase().charAt(0) === 'p'); +} + +var defaultLocaleMeridiemParse = /[ap]\.?m?\.?/i; +function localeMeridiem (hours, minutes, isLower) { + if (hours > 11) { + return isLower ? 'pm' : 'PM'; + } else { + return isLower ? 'am' : 'AM'; + } +} + + +// MOMENTS + +// Setting the hour should keep the time, because the user explicitly +// specified which hour he wants. So trying to maintain the same hour (in +// a new timezone) makes sense. Adding/subtracting hours does not follow +// this rule. +var getSetHour = makeGetSet('Hours', true); + +// months +// week +// weekdays +// meridiem +var baseConfig = { + calendar: defaultCalendar, + longDateFormat: defaultLongDateFormat, + invalidDate: defaultInvalidDate, + ordinal: defaultOrdinal, + dayOfMonthOrdinalParse: defaultDayOfMonthOrdinalParse, + relativeTime: defaultRelativeTime, + + months: defaultLocaleMonths, + monthsShort: defaultLocaleMonthsShort, + + week: defaultLocaleWeek, + + weekdays: defaultLocaleWeekdays, + weekdaysMin: defaultLocaleWeekdaysMin, + weekdaysShort: defaultLocaleWeekdaysShort, + + meridiemParse: defaultLocaleMeridiemParse +}; + +// internal storage for locale config files +var locales = {}; +var localeFamilies = {}; +var globalLocale; + +function normalizeLocale(key) { + return key ? key.toLowerCase().replace('_', '-') : key; +} + +// pick the locale from the array +// try ['en-au', 'en-gb'] as 'en-au', 'en-gb', 'en', as in move through the list trying each +// substring from most specific to least, but move to the next array item if it's a more specific variant than the current root +function chooseLocale(names) { + var i = 0, j, next, locale, split; + + while (i < names.length) { + split = normalizeLocale(names[i]).split('-'); + j = split.length; + next = normalizeLocale(names[i + 1]); + next = next ? next.split('-') : null; + while (j > 0) { + locale = loadLocale(split.slice(0, j).join('-')); + if (locale) { + return locale; + } + if (next && next.length >= j && compareArrays(split, next, true) >= j - 1) { + //the next array item is better than a shallower substring of this one + break; + } + j--; + } + i++; + } + return null; +} + +function loadLocale(name) { + var oldLocale = null; + // TODO: Find a better way to register and load all the locales in Node + if (!locales[name] && (typeof module !== 'undefined') && + module && module.exports) { + try { + oldLocale = globalLocale._abbr; + require('./locale/' + name); + // because defineLocale currently also sets the global locale, we + // want to undo that for lazy loaded locales + getSetGlobalLocale(oldLocale); + } catch (e) { } + } + return locales[name]; +} + +// This function will load locale and then set the global locale. If +// no arguments are passed in, it will simply return the current global +// locale key. +function getSetGlobalLocale (key, values) { + var data; + if (key) { + if (isUndefined(values)) { + data = getLocale(key); + } + else { + data = defineLocale(key, values); + } + + if (data) { + // moment.duration._locale = moment._locale = data; + globalLocale = data; + } + } + + return globalLocale._abbr; +} + +function defineLocale (name, config) { + if (config !== null) { + var parentConfig = baseConfig; + config.abbr = name; + if (locales[name] != null) { + deprecateSimple('defineLocaleOverride', + 'use moment.updateLocale(localeName, config) to change ' + + 'an existing locale. moment.defineLocale(localeName, ' + + 'config) should only be used for creating a new locale ' + + 'See http://momentjs.com/guides/#/warnings/define-locale/ for more info.'); + parentConfig = locales[name]._config; + } else if (config.parentLocale != null) { + if (locales[config.parentLocale] != null) { + parentConfig = locales[config.parentLocale]._config; + } else { + if (!localeFamilies[config.parentLocale]) { + localeFamilies[config.parentLocale] = []; + } + localeFamilies[config.parentLocale].push({ + name: name, + config: config + }); + return null; + } + } + locales[name] = new Locale(mergeConfigs(parentConfig, config)); + + if (localeFamilies[name]) { + localeFamilies[name].forEach(function (x) { + defineLocale(x.name, x.config); + }); + } + + // backwards compat for now: also set the locale + // make sure we set the locale AFTER all child locales have been + // created, so we won't end up with the child locale set. + getSetGlobalLocale(name); + + + return locales[name]; + } else { + // useful for testing + delete locales[name]; + return null; + } +} + +function updateLocale(name, config) { + if (config != null) { + var locale, parentConfig = baseConfig; + // MERGE + if (locales[name] != null) { + parentConfig = locales[name]._config; + } + config = mergeConfigs(parentConfig, config); + locale = new Locale(config); + locale.parentLocale = locales[name]; + locales[name] = locale; + + // backwards compat for now: also set the locale + getSetGlobalLocale(name); + } else { + // pass null for config to unupdate, useful for tests + if (locales[name] != null) { + if (locales[name].parentLocale != null) { + locales[name] = locales[name].parentLocale; + } else if (locales[name] != null) { + delete locales[name]; + } + } + } + return locales[name]; +} + +// returns locale data +function getLocale (key) { + var locale; + + if (key && key._locale && key._locale._abbr) { + key = key._locale._abbr; + } + + if (!key) { + return globalLocale; + } + + if (!isArray(key)) { + //short-circuit everything else + locale = loadLocale(key); + if (locale) { + return locale; + } + key = [key]; + } + + return chooseLocale(key); +} + +function listLocales() { + return keys$1(locales); +} + +function checkOverflow (m) { + var overflow; + var a = m._a; + + if (a && getParsingFlags(m).overflow === -2) { + overflow = + a[MONTH] < 0 || a[MONTH] > 11 ? MONTH : + a[DATE] < 1 || a[DATE] > daysInMonth(a[YEAR], a[MONTH]) ? DATE : + a[HOUR] < 0 || a[HOUR] > 24 || (a[HOUR] === 24 && (a[MINUTE] !== 0 || a[SECOND] !== 0 || a[MILLISECOND] !== 0)) ? HOUR : + a[MINUTE] < 0 || a[MINUTE] > 59 ? MINUTE : + a[SECOND] < 0 || a[SECOND] > 59 ? SECOND : + a[MILLISECOND] < 0 || a[MILLISECOND] > 999 ? MILLISECOND : + -1; + + if (getParsingFlags(m)._overflowDayOfYear && (overflow < YEAR || overflow > DATE)) { + overflow = DATE; + } + if (getParsingFlags(m)._overflowWeeks && overflow === -1) { + overflow = WEEK; + } + if (getParsingFlags(m)._overflowWeekday && overflow === -1) { + overflow = WEEKDAY; + } + + getParsingFlags(m).overflow = overflow; + } + + return m; +} + +// iso 8601 regex +// 0000-00-00 0000-W00 or 0000-W00-0 + T + 00 or 00:00 or 00:00:00 or 00:00:00.000 + +00:00 or +0000 or +00) +var extendedIsoRegex = /^\s*((?:[+-]\d{6}|\d{4})-(?:\d\d-\d\d|W\d\d-\d|W\d\d|\d\d\d|\d\d))(?:(T| )(\d\d(?::\d\d(?::\d\d(?:[.,]\d+)?)?)?)([\+\-]\d\d(?::?\d\d)?|\s*Z)?)?$/; +var basicIsoRegex = /^\s*((?:[+-]\d{6}|\d{4})(?:\d\d\d\d|W\d\d\d|W\d\d|\d\d\d|\d\d))(?:(T| )(\d\d(?:\d\d(?:\d\d(?:[.,]\d+)?)?)?)([\+\-]\d\d(?::?\d\d)?|\s*Z)?)?$/; + +var tzRegex = /Z|[+-]\d\d(?::?\d\d)?/; + +var isoDates = [ + ['YYYYYY-MM-DD', /[+-]\d{6}-\d\d-\d\d/], + ['YYYY-MM-DD', /\d{4}-\d\d-\d\d/], + ['GGGG-[W]WW-E', /\d{4}-W\d\d-\d/], + ['GGGG-[W]WW', /\d{4}-W\d\d/, false], + ['YYYY-DDD', /\d{4}-\d{3}/], + ['YYYY-MM', /\d{4}-\d\d/, false], + ['YYYYYYMMDD', /[+-]\d{10}/], + ['YYYYMMDD', /\d{8}/], + // YYYYMM is NOT allowed by the standard + ['GGGG[W]WWE', /\d{4}W\d{3}/], + ['GGGG[W]WW', /\d{4}W\d{2}/, false], + ['YYYYDDD', /\d{7}/] +]; + +// iso time formats and regexes +var isoTimes = [ + ['HH:mm:ss.SSSS', /\d\d:\d\d:\d\d\.\d+/], + ['HH:mm:ss,SSSS', /\d\d:\d\d:\d\d,\d+/], + ['HH:mm:ss', /\d\d:\d\d:\d\d/], + ['HH:mm', /\d\d:\d\d/], + ['HHmmss.SSSS', /\d\d\d\d\d\d\.\d+/], + ['HHmmss,SSSS', /\d\d\d\d\d\d,\d+/], + ['HHmmss', /\d\d\d\d\d\d/], + ['HHmm', /\d\d\d\d/], + ['HH', /\d\d/] +]; + +var aspNetJsonRegex = /^\/?Date\((\-?\d+)/i; + +// date from iso format +function configFromISO(config) { + var i, l, + string = config._i, + match = extendedIsoRegex.exec(string) || basicIsoRegex.exec(string), + allowTime, dateFormat, timeFormat, tzFormat; + + if (match) { + getParsingFlags(config).iso = true; + + for (i = 0, l = isoDates.length; i < l; i++) { + if (isoDates[i][1].exec(match[1])) { + dateFormat = isoDates[i][0]; + allowTime = isoDates[i][2] !== false; + break; + } + } + if (dateFormat == null) { + config._isValid = false; + return; + } + if (match[3]) { + for (i = 0, l = isoTimes.length; i < l; i++) { + if (isoTimes[i][1].exec(match[3])) { + // match[2] should be 'T' or space + timeFormat = (match[2] || ' ') + isoTimes[i][0]; + break; + } + } + if (timeFormat == null) { + config._isValid = false; + return; + } + } + if (!allowTime && timeFormat != null) { + config._isValid = false; + return; + } + if (match[4]) { + if (tzRegex.exec(match[4])) { + tzFormat = 'Z'; + } else { + config._isValid = false; + return; + } + } + config._f = dateFormat + (timeFormat || '') + (tzFormat || ''); + configFromStringAndFormat(config); + } else { + config._isValid = false; + } +} + +// RFC 2822 regex: For details see https://tools.ietf.org/html/rfc2822#section-3.3 +var basicRfcRegex = /^((?:Mon|Tue|Wed|Thu|Fri|Sat|Sun),?\s)?(\d?\d\s(?:Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)\s(?:\d\d)?\d\d\s)(\d\d:\d\d)(\:\d\d)?(\s(?:UT|GMT|[ECMP][SD]T|[A-IK-Za-ik-z]|[+-]\d{4}))$/; + +// date and time from ref 2822 format +function configFromRFC2822(config) { + var string, match, dayFormat, + dateFormat, timeFormat, tzFormat; + var timezones = { + ' GMT': ' +0000', + ' EDT': ' -0400', + ' EST': ' -0500', + ' CDT': ' -0500', + ' CST': ' -0600', + ' MDT': ' -0600', + ' MST': ' -0700', + ' PDT': ' -0700', + ' PST': ' -0800' + }; + var military = 'YXWVUTSRQPONZABCDEFGHIKLM'; + var timezone, timezoneIndex; + + string = config._i + .replace(/\([^\)]*\)|[\n\t]/g, ' ') // Remove comments and folding whitespace + .replace(/(\s\s+)/g, ' ') // Replace multiple-spaces with a single space + .replace(/^\s|\s$/g, ''); // Remove leading and trailing spaces + match = basicRfcRegex.exec(string); + + if (match) { + dayFormat = match[1] ? 'ddd' + ((match[1].length === 5) ? ', ' : ' ') : ''; + dateFormat = 'D MMM ' + ((match[2].length > 10) ? 'YYYY ' : 'YY '); + timeFormat = 'HH:mm' + (match[4] ? ':ss' : ''); + + // TODO: Replace the vanilla JS Date object with an indepentent day-of-week check. + if (match[1]) { // day of week given + var momentDate = new Date(match[2]); + var momentDay = ['Sun','Mon','Tue','Wed','Thu','Fri','Sat'][momentDate.getDay()]; + + if (match[1].substr(0,3) !== momentDay) { + getParsingFlags(config).weekdayMismatch = true; + config._isValid = false; + return; + } + } + + switch (match[5].length) { + case 2: // military + if (timezoneIndex === 0) { + timezone = ' +0000'; + } else { + timezoneIndex = military.indexOf(match[5][1].toUpperCase()) - 12; + timezone = ((timezoneIndex < 0) ? ' -' : ' +') + + (('' + timezoneIndex).replace(/^-?/, '0')).match(/..$/)[0] + '00'; + } + break; + case 4: // Zone + timezone = timezones[match[5]]; + break; + default: // UT or +/-9999 + timezone = timezones[' GMT']; + } + match[5] = timezone; + config._i = match.splice(1).join(''); + tzFormat = ' ZZ'; + config._f = dayFormat + dateFormat + timeFormat + tzFormat; + configFromStringAndFormat(config); + getParsingFlags(config).rfc2822 = true; + } else { + config._isValid = false; + } +} + +// date from iso format or fallback +function configFromString(config) { + var matched = aspNetJsonRegex.exec(config._i); + + if (matched !== null) { + config._d = new Date(+matched[1]); + return; + } + + configFromISO(config); + if (config._isValid === false) { + delete config._isValid; + } else { + return; + } + + configFromRFC2822(config); + if (config._isValid === false) { + delete config._isValid; + } else { + return; + } + + // Final attempt, use Input Fallback + hooks.createFromInputFallback(config); +} + +hooks.createFromInputFallback = deprecate( + 'value provided is not in a recognized RFC2822 or ISO format. moment construction falls back to js Date(), ' + + 'which is not reliable across all browsers and versions. Non RFC2822/ISO date formats are ' + + 'discouraged and will be removed in an upcoming major release. Please refer to ' + + 'http://momentjs.com/guides/#/warnings/js-date/ for more info.', + function (config) { + config._d = new Date(config._i + (config._useUTC ? ' UTC' : '')); + } +); + +// Pick the first defined of two or three arguments. +function defaults(a, b, c) { + if (a != null) { + return a; + } + if (b != null) { + return b; + } + return c; +} + +function currentDateArray(config) { + // hooks is actually the exported moment object + var nowValue = new Date(hooks.now()); + if (config._useUTC) { + return [nowValue.getUTCFullYear(), nowValue.getUTCMonth(), nowValue.getUTCDate()]; + } + return [nowValue.getFullYear(), nowValue.getMonth(), nowValue.getDate()]; +} + +// convert an array to a date. +// the array should mirror the parameters below +// note: all values past the year are optional and will default to the lowest possible value. +// [year, month, day , hour, minute, second, millisecond] +function configFromArray (config) { + var i, date, input = [], currentDate, yearToUse; + + if (config._d) { + return; + } + + currentDate = currentDateArray(config); + + //compute day of the year from weeks and weekdays + if (config._w && config._a[DATE] == null && config._a[MONTH] == null) { + dayOfYearFromWeekInfo(config); + } + + //if the day of the year is set, figure out what it is + if (config._dayOfYear != null) { + yearToUse = defaults(config._a[YEAR], currentDate[YEAR]); + + if (config._dayOfYear > daysInYear(yearToUse) || config._dayOfYear === 0) { + getParsingFlags(config)._overflowDayOfYear = true; + } + + date = createUTCDate(yearToUse, 0, config._dayOfYear); + config._a[MONTH] = date.getUTCMonth(); + config._a[DATE] = date.getUTCDate(); + } + + // Default to current date. + // * if no year, month, day of month are given, default to today + // * if day of month is given, default month and year + // * if month is given, default only year + // * if year is given, don't default anything + for (i = 0; i < 3 && config._a[i] == null; ++i) { + config._a[i] = input[i] = currentDate[i]; + } + + // Zero out whatever was not defaulted, including time + for (; i < 7; i++) { + config._a[i] = input[i] = (config._a[i] == null) ? (i === 2 ? 1 : 0) : config._a[i]; + } + + // Check for 24:00:00.000 + if (config._a[HOUR] === 24 && + config._a[MINUTE] === 0 && + config._a[SECOND] === 0 && + config._a[MILLISECOND] === 0) { + config._nextDay = true; + config._a[HOUR] = 0; + } + + config._d = (config._useUTC ? createUTCDate : createDate).apply(null, input); + // Apply timezone offset from input. The actual utcOffset can be changed + // with parseZone. + if (config._tzm != null) { + config._d.setUTCMinutes(config._d.getUTCMinutes() - config._tzm); + } + + if (config._nextDay) { + config._a[HOUR] = 24; + } +} + +function dayOfYearFromWeekInfo(config) { + var w, weekYear, week, weekday, dow, doy, temp, weekdayOverflow; + + w = config._w; + if (w.GG != null || w.W != null || w.E != null) { + dow = 1; + doy = 4; + + // TODO: We need to take the current isoWeekYear, but that depends on + // how we interpret now (local, utc, fixed offset). So create + // a now version of current config (take local/utc/offset flags, and + // create now). + weekYear = defaults(w.GG, config._a[YEAR], weekOfYear(createLocal(), 1, 4).year); + week = defaults(w.W, 1); + weekday = defaults(w.E, 1); + if (weekday < 1 || weekday > 7) { + weekdayOverflow = true; + } + } else { + dow = config._locale._week.dow; + doy = config._locale._week.doy; + + var curWeek = weekOfYear(createLocal(), dow, doy); + + weekYear = defaults(w.gg, config._a[YEAR], curWeek.year); + + // Default to current week. + week = defaults(w.w, curWeek.week); + + if (w.d != null) { + // weekday -- low day numbers are considered next week + weekday = w.d; + if (weekday < 0 || weekday > 6) { + weekdayOverflow = true; + } + } else if (w.e != null) { + // local weekday -- counting starts from begining of week + weekday = w.e + dow; + if (w.e < 0 || w.e > 6) { + weekdayOverflow = true; + } + } else { + // default to begining of week + weekday = dow; + } + } + if (week < 1 || week > weeksInYear(weekYear, dow, doy)) { + getParsingFlags(config)._overflowWeeks = true; + } else if (weekdayOverflow != null) { + getParsingFlags(config)._overflowWeekday = true; + } else { + temp = dayOfYearFromWeeks(weekYear, week, weekday, dow, doy); + config._a[YEAR] = temp.year; + config._dayOfYear = temp.dayOfYear; + } +} + +// constant that refers to the ISO standard +hooks.ISO_8601 = function () {}; + +// constant that refers to the RFC 2822 form +hooks.RFC_2822 = function () {}; + +// date from string and format string +function configFromStringAndFormat(config) { + // TODO: Move this to another part of the creation flow to prevent circular deps + if (config._f === hooks.ISO_8601) { + configFromISO(config); + return; + } + if (config._f === hooks.RFC_2822) { + configFromRFC2822(config); + return; + } + config._a = []; + getParsingFlags(config).empty = true; + + // This array is used to make a Date, either with `new Date` or `Date.UTC` + var string = '' + config._i, + i, parsedInput, tokens, token, skipped, + stringLength = string.length, + totalParsedInputLength = 0; + + tokens = expandFormat(config._f, config._locale).match(formattingTokens) || []; + + for (i = 0; i < tokens.length; i++) { + token = tokens[i]; + parsedInput = (string.match(getParseRegexForToken(token, config)) || [])[0]; + // console.log('token', token, 'parsedInput', parsedInput, + // 'regex', getParseRegexForToken(token, config)); + if (parsedInput) { + skipped = string.substr(0, string.indexOf(parsedInput)); + if (skipped.length > 0) { + getParsingFlags(config).unusedInput.push(skipped); + } + string = string.slice(string.indexOf(parsedInput) + parsedInput.length); + totalParsedInputLength += parsedInput.length; + } + // don't parse if it's not a known token + if (formatTokenFunctions[token]) { + if (parsedInput) { + getParsingFlags(config).empty = false; + } + else { + getParsingFlags(config).unusedTokens.push(token); + } + addTimeToArrayFromToken(token, parsedInput, config); + } + else if (config._strict && !parsedInput) { + getParsingFlags(config).unusedTokens.push(token); + } + } + + // add remaining unparsed input length to the string + getParsingFlags(config).charsLeftOver = stringLength - totalParsedInputLength; + if (string.length > 0) { + getParsingFlags(config).unusedInput.push(string); + } + + // clear _12h flag if hour is <= 12 + if (config._a[HOUR] <= 12 && + getParsingFlags(config).bigHour === true && + config._a[HOUR] > 0) { + getParsingFlags(config).bigHour = undefined; + } + + getParsingFlags(config).parsedDateParts = config._a.slice(0); + getParsingFlags(config).meridiem = config._meridiem; + // handle meridiem + config._a[HOUR] = meridiemFixWrap(config._locale, config._a[HOUR], config._meridiem); + + configFromArray(config); + checkOverflow(config); +} + + +function meridiemFixWrap (locale, hour, meridiem) { + var isPm; + + if (meridiem == null) { + // nothing to do + return hour; + } + if (locale.meridiemHour != null) { + return locale.meridiemHour(hour, meridiem); + } else if (locale.isPM != null) { + // Fallback + isPm = locale.isPM(meridiem); + if (isPm && hour < 12) { + hour += 12; + } + if (!isPm && hour === 12) { + hour = 0; + } + return hour; + } else { + // this is not supposed to happen + return hour; + } +} + +// date from string and array of format strings +function configFromStringAndArray(config) { + var tempConfig, + bestMoment, + + scoreToBeat, + i, + currentScore; + + if (config._f.length === 0) { + getParsingFlags(config).invalidFormat = true; + config._d = new Date(NaN); + return; + } + + for (i = 0; i < config._f.length; i++) { + currentScore = 0; + tempConfig = copyConfig({}, config); + if (config._useUTC != null) { + tempConfig._useUTC = config._useUTC; + } + tempConfig._f = config._f[i]; + configFromStringAndFormat(tempConfig); + + if (!isValid(tempConfig)) { + continue; + } + + // if there is any input that was not parsed add a penalty for that format + currentScore += getParsingFlags(tempConfig).charsLeftOver; + + //or tokens + currentScore += getParsingFlags(tempConfig).unusedTokens.length * 10; + + getParsingFlags(tempConfig).score = currentScore; + + if (scoreToBeat == null || currentScore < scoreToBeat) { + scoreToBeat = currentScore; + bestMoment = tempConfig; + } + } + + extend(config, bestMoment || tempConfig); +} + +function configFromObject(config) { + if (config._d) { + return; + } + + var i = normalizeObjectUnits(config._i); + config._a = map([i.year, i.month, i.day || i.date, i.hour, i.minute, i.second, i.millisecond], function (obj) { + return obj && parseInt(obj, 10); + }); + + configFromArray(config); +} + +function createFromConfig (config) { + var res = new Moment(checkOverflow(prepareConfig(config))); + if (res._nextDay) { + // Adding is smart enough around DST + res.add(1, 'd'); + res._nextDay = undefined; + } + + return res; +} + +function prepareConfig (config) { + var input = config._i, + format = config._f; + + config._locale = config._locale || getLocale(config._l); + + if (input === null || (format === undefined && input === '')) { + return createInvalid({nullInput: true}); + } + + if (typeof input === 'string') { + config._i = input = config._locale.preparse(input); + } + + if (isMoment(input)) { + return new Moment(checkOverflow(input)); + } else if (isDate(input)) { + config._d = input; + } else if (isArray(format)) { + configFromStringAndArray(config); + } else if (format) { + configFromStringAndFormat(config); + } else { + configFromInput(config); + } + + if (!isValid(config)) { + config._d = null; + } + + return config; +} + +function configFromInput(config) { + var input = config._i; + if (isUndefined(input)) { + config._d = new Date(hooks.now()); + } else if (isDate(input)) { + config._d = new Date(input.valueOf()); + } else if (typeof input === 'string') { + configFromString(config); + } else if (isArray(input)) { + config._a = map(input.slice(0), function (obj) { + return parseInt(obj, 10); + }); + configFromArray(config); + } else if (isObject(input)) { + configFromObject(config); + } else if (isNumber(input)) { + // from milliseconds + config._d = new Date(input); + } else { + hooks.createFromInputFallback(config); + } +} + +function createLocalOrUTC (input, format, locale, strict, isUTC) { + var c = {}; + + if (locale === true || locale === false) { + strict = locale; + locale = undefined; + } + + if ((isObject(input) && isObjectEmpty(input)) || + (isArray(input) && input.length === 0)) { + input = undefined; + } + // object construction must be done this way. + // https://github.com/moment/moment/issues/1423 + c._isAMomentObject = true; + c._useUTC = c._isUTC = isUTC; + c._l = locale; + c._i = input; + c._f = format; + c._strict = strict; + + return createFromConfig(c); +} + +function createLocal (input, format, locale, strict) { + return createLocalOrUTC(input, format, locale, strict, false); +} + +var prototypeMin = deprecate( + 'moment().min is deprecated, use moment.max instead. http://momentjs.com/guides/#/warnings/min-max/', + function () { + var other = createLocal.apply(null, arguments); + if (this.isValid() && other.isValid()) { + return other < this ? this : other; + } else { + return createInvalid(); + } + } +); + +var prototypeMax = deprecate( + 'moment().max is deprecated, use moment.min instead. http://momentjs.com/guides/#/warnings/min-max/', + function () { + var other = createLocal.apply(null, arguments); + if (this.isValid() && other.isValid()) { + return other > this ? this : other; + } else { + return createInvalid(); + } + } +); + +// Pick a moment m from moments so that m[fn](other) is true for all +// other. This relies on the function fn to be transitive. +// +// moments should either be an array of moment objects or an array, whose +// first element is an array of moment objects. +function pickBy(fn, moments) { + var res, i; + if (moments.length === 1 && isArray(moments[0])) { + moments = moments[0]; + } + if (!moments.length) { + return createLocal(); + } + res = moments[0]; + for (i = 1; i < moments.length; ++i) { + if (!moments[i].isValid() || moments[i][fn](res)) { + res = moments[i]; + } + } + return res; +} + +// TODO: Use [].sort instead? +function min () { + var args = [].slice.call(arguments, 0); + + return pickBy('isBefore', args); +} + +function max () { + var args = [].slice.call(arguments, 0); + + return pickBy('isAfter', args); +} + +var now = function () { + return Date.now ? Date.now() : +(new Date()); +}; + +var ordering = ['year', 'quarter', 'month', 'week', 'day', 'hour', 'minute', 'second', 'millisecond']; + +function isDurationValid(m) { + for (var key in m) { + if (!(ordering.indexOf(key) !== -1 && (m[key] == null || !isNaN(m[key])))) { + return false; + } + } + + var unitHasDecimal = false; + for (var i = 0; i < ordering.length; ++i) { + if (m[ordering[i]]) { + if (unitHasDecimal) { + return false; // only allow non-integers for smallest unit + } + if (parseFloat(m[ordering[i]]) !== toInt(m[ordering[i]])) { + unitHasDecimal = true; + } + } + } + + return true; +} + +function isValid$1() { + return this._isValid; +} + +function createInvalid$1() { + return createDuration(NaN); +} + +function Duration (duration) { + var normalizedInput = normalizeObjectUnits(duration), + years = normalizedInput.year || 0, + quarters = normalizedInput.quarter || 0, + months = normalizedInput.month || 0, + weeks = normalizedInput.week || 0, + days = normalizedInput.day || 0, + hours = normalizedInput.hour || 0, + minutes = normalizedInput.minute || 0, + seconds = normalizedInput.second || 0, + milliseconds = normalizedInput.millisecond || 0; + + this._isValid = isDurationValid(normalizedInput); + + // representation for dateAddRemove + this._milliseconds = +milliseconds + + seconds * 1e3 + // 1000 + minutes * 6e4 + // 1000 * 60 + hours * 1000 * 60 * 60; //using 1000 * 60 * 60 instead of 36e5 to avoid floating point rounding errors https://github.com/moment/moment/issues/2978 + // Because of dateAddRemove treats 24 hours as different from a + // day when working around DST, we need to store them separately + this._days = +days + + weeks * 7; + // It is impossible translate months into days without knowing + // which months you are are talking about, so we have to store + // it separately. + this._months = +months + + quarters * 3 + + years * 12; + + this._data = {}; + + this._locale = getLocale(); + + this._bubble(); +} + +function isDuration (obj) { + return obj instanceof Duration; +} + +function absRound (number) { + if (number < 0) { + return Math.round(-1 * number) * -1; + } else { + return Math.round(number); + } +} + +// FORMATTING + +function offset (token, separator) { + addFormatToken(token, 0, 0, function () { + var offset = this.utcOffset(); + var sign = '+'; + if (offset < 0) { + offset = -offset; + sign = '-'; + } + return sign + zeroFill(~~(offset / 60), 2) + separator + zeroFill(~~(offset) % 60, 2); + }); +} + +offset('Z', ':'); +offset('ZZ', ''); + +// PARSING + +addRegexToken('Z', matchShortOffset); +addRegexToken('ZZ', matchShortOffset); +addParseToken(['Z', 'ZZ'], function (input, array, config) { + config._useUTC = true; + config._tzm = offsetFromString(matchShortOffset, input); +}); + +// HELPERS + +// timezone chunker +// '+10:00' > ['10', '00'] +// '-1530' > ['-15', '30'] +var chunkOffset = /([\+\-]|\d\d)/gi; + +function offsetFromString(matcher, string) { + var matches = (string || '').match(matcher); + + if (matches === null) { + return null; + } + + var chunk = matches[matches.length - 1] || []; + var parts = (chunk + '').match(chunkOffset) || ['-', 0, 0]; + var minutes = +(parts[1] * 60) + toInt(parts[2]); + + return minutes === 0 ? + 0 : + parts[0] === '+' ? minutes : -minutes; +} + +// Return a moment from input, that is local/utc/zone equivalent to model. +function cloneWithOffset(input, model) { + var res, diff; + if (model._isUTC) { + res = model.clone(); + diff = (isMoment(input) || isDate(input) ? input.valueOf() : createLocal(input).valueOf()) - res.valueOf(); + // Use low-level api, because this fn is low-level api. + res._d.setTime(res._d.valueOf() + diff); + hooks.updateOffset(res, false); + return res; + } else { + return createLocal(input).local(); + } +} + +function getDateOffset (m) { + // On Firefox.24 Date#getTimezoneOffset returns a floating point. + // https://github.com/moment/moment/pull/1871 + return -Math.round(m._d.getTimezoneOffset() / 15) * 15; +} + +// HOOKS + +// This function will be called whenever a moment is mutated. +// It is intended to keep the offset in sync with the timezone. +hooks.updateOffset = function () {}; + +// MOMENTS + +// keepLocalTime = true means only change the timezone, without +// affecting the local hour. So 5:31:26 +0300 --[utcOffset(2, true)]--> +// 5:31:26 +0200 It is possible that 5:31:26 doesn't exist with offset +// +0200, so we adjust the time as needed, to be valid. +// +// Keeping the time actually adds/subtracts (one hour) +// from the actual represented time. That is why we call updateOffset +// a second time. In case it wants us to change the offset again +// _changeInProgress == true case, then we have to adjust, because +// there is no such time in the given timezone. +function getSetOffset (input, keepLocalTime, keepMinutes) { + var offset = this._offset || 0, + localAdjust; + if (!this.isValid()) { + return input != null ? this : NaN; + } + if (input != null) { + if (typeof input === 'string') { + input = offsetFromString(matchShortOffset, input); + if (input === null) { + return this; + } + } else if (Math.abs(input) < 16 && !keepMinutes) { + input = input * 60; + } + if (!this._isUTC && keepLocalTime) { + localAdjust = getDateOffset(this); + } + this._offset = input; + this._isUTC = true; + if (localAdjust != null) { + this.add(localAdjust, 'm'); + } + if (offset !== input) { + if (!keepLocalTime || this._changeInProgress) { + addSubtract(this, createDuration(input - offset, 'm'), 1, false); + } else if (!this._changeInProgress) { + this._changeInProgress = true; + hooks.updateOffset(this, true); + this._changeInProgress = null; + } + } + return this; + } else { + return this._isUTC ? offset : getDateOffset(this); + } +} + +function getSetZone (input, keepLocalTime) { + if (input != null) { + if (typeof input !== 'string') { + input = -input; + } + + this.utcOffset(input, keepLocalTime); + + return this; + } else { + return -this.utcOffset(); + } +} + +function setOffsetToUTC (keepLocalTime) { + return this.utcOffset(0, keepLocalTime); +} + +function setOffsetToLocal (keepLocalTime) { + if (this._isUTC) { + this.utcOffset(0, keepLocalTime); + this._isUTC = false; + + if (keepLocalTime) { + this.subtract(getDateOffset(this), 'm'); + } + } + return this; +} + +function setOffsetToParsedOffset () { + if (this._tzm != null) { + this.utcOffset(this._tzm, false, true); + } else if (typeof this._i === 'string') { + var tZone = offsetFromString(matchOffset, this._i); + if (tZone != null) { + this.utcOffset(tZone); + } + else { + this.utcOffset(0, true); + } + } + return this; +} + +function hasAlignedHourOffset (input) { + if (!this.isValid()) { + return false; + } + input = input ? createLocal(input).utcOffset() : 0; + + return (this.utcOffset() - input) % 60 === 0; +} + +function isDaylightSavingTime () { + return ( + this.utcOffset() > this.clone().month(0).utcOffset() || + this.utcOffset() > this.clone().month(5).utcOffset() + ); +} + +function isDaylightSavingTimeShifted () { + if (!isUndefined(this._isDSTShifted)) { + return this._isDSTShifted; + } + + var c = {}; + + copyConfig(c, this); + c = prepareConfig(c); + + if (c._a) { + var other = c._isUTC ? createUTC(c._a) : createLocal(c._a); + this._isDSTShifted = this.isValid() && + compareArrays(c._a, other.toArray()) > 0; + } else { + this._isDSTShifted = false; + } + + return this._isDSTShifted; +} + +function isLocal () { + return this.isValid() ? !this._isUTC : false; +} + +function isUtcOffset () { + return this.isValid() ? this._isUTC : false; +} + +function isUtc () { + return this.isValid() ? this._isUTC && this._offset === 0 : false; +} + +// ASP.NET json date format regex +var aspNetRegex = /^(\-)?(?:(\d*)[. ])?(\d+)\:(\d+)(?:\:(\d+)(\.\d*)?)?$/; + +// from http://docs.closure-library.googlecode.com/git/closure_goog_date_date.js.source.html +// somewhat more in line with 4.4.3.2 2004 spec, but allows decimal anywhere +// and further modified to allow for strings containing both week and day +var isoRegex = /^(-)?P(?:(-?[0-9,.]*)Y)?(?:(-?[0-9,.]*)M)?(?:(-?[0-9,.]*)W)?(?:(-?[0-9,.]*)D)?(?:T(?:(-?[0-9,.]*)H)?(?:(-?[0-9,.]*)M)?(?:(-?[0-9,.]*)S)?)?$/; + +function createDuration (input, key) { + var duration = input, + // matching against regexp is expensive, do it on demand + match = null, + sign, + ret, + diffRes; + + if (isDuration(input)) { + duration = { + ms : input._milliseconds, + d : input._days, + M : input._months + }; + } else if (isNumber(input)) { + duration = {}; + if (key) { + duration[key] = input; + } else { + duration.milliseconds = input; + } + } else if (!!(match = aspNetRegex.exec(input))) { + sign = (match[1] === '-') ? -1 : 1; + duration = { + y : 0, + d : toInt(match[DATE]) * sign, + h : toInt(match[HOUR]) * sign, + m : toInt(match[MINUTE]) * sign, + s : toInt(match[SECOND]) * sign, + ms : toInt(absRound(match[MILLISECOND] * 1000)) * sign // the millisecond decimal point is included in the match + }; + } else if (!!(match = isoRegex.exec(input))) { + sign = (match[1] === '-') ? -1 : 1; + duration = { + y : parseIso(match[2], sign), + M : parseIso(match[3], sign), + w : parseIso(match[4], sign), + d : parseIso(match[5], sign), + h : parseIso(match[6], sign), + m : parseIso(match[7], sign), + s : parseIso(match[8], sign) + }; + } else if (duration == null) {// checks for null or undefined + duration = {}; + } else if (typeof duration === 'object' && ('from' in duration || 'to' in duration)) { + diffRes = momentsDifference(createLocal(duration.from), createLocal(duration.to)); + + duration = {}; + duration.ms = diffRes.milliseconds; + duration.M = diffRes.months; + } + + ret = new Duration(duration); + + if (isDuration(input) && hasOwnProp(input, '_locale')) { + ret._locale = input._locale; + } + + return ret; +} + +createDuration.fn = Duration.prototype; +createDuration.invalid = createInvalid$1; + +function parseIso (inp, sign) { + // We'd normally use ~~inp for this, but unfortunately it also + // converts floats to ints. + // inp may be undefined, so careful calling replace on it. + var res = inp && parseFloat(inp.replace(',', '.')); + // apply sign while we're at it + return (isNaN(res) ? 0 : res) * sign; +} + +function positiveMomentsDifference(base, other) { + var res = {milliseconds: 0, months: 0}; + + res.months = other.month() - base.month() + + (other.year() - base.year()) * 12; + if (base.clone().add(res.months, 'M').isAfter(other)) { + --res.months; + } + + res.milliseconds = +other - +(base.clone().add(res.months, 'M')); + + return res; +} + +function momentsDifference(base, other) { + var res; + if (!(base.isValid() && other.isValid())) { + return {milliseconds: 0, months: 0}; + } + + other = cloneWithOffset(other, base); + if (base.isBefore(other)) { + res = positiveMomentsDifference(base, other); + } else { + res = positiveMomentsDifference(other, base); + res.milliseconds = -res.milliseconds; + res.months = -res.months; + } + + return res; +} + +// TODO: remove 'name' arg after deprecation is removed +function createAdder(direction, name) { + return function (val, period) { + var dur, tmp; + //invert the arguments, but complain about it + if (period !== null && !isNaN(+period)) { + deprecateSimple(name, 'moment().' + name + '(period, number) is deprecated. Please use moment().' + name + '(number, period). ' + + 'See http://momentjs.com/guides/#/warnings/add-inverted-param/ for more info.'); + tmp = val; val = period; period = tmp; + } + + val = typeof val === 'string' ? +val : val; + dur = createDuration(val, period); + addSubtract(this, dur, direction); + return this; + }; +} + +function addSubtract (mom, duration, isAdding, updateOffset) { + var milliseconds = duration._milliseconds, + days = absRound(duration._days), + months = absRound(duration._months); + + if (!mom.isValid()) { + // No op + return; + } + + updateOffset = updateOffset == null ? true : updateOffset; + + if (milliseconds) { + mom._d.setTime(mom._d.valueOf() + milliseconds * isAdding); + } + if (days) { + set$1(mom, 'Date', get(mom, 'Date') + days * isAdding); + } + if (months) { + setMonth(mom, get(mom, 'Month') + months * isAdding); + } + if (updateOffset) { + hooks.updateOffset(mom, days || months); + } +} + +var add = createAdder(1, 'add'); +var subtract = createAdder(-1, 'subtract'); + +function getCalendarFormat(myMoment, now) { + var diff = myMoment.diff(now, 'days', true); + return diff < -6 ? 'sameElse' : + diff < -1 ? 'lastWeek' : + diff < 0 ? 'lastDay' : + diff < 1 ? 'sameDay' : + diff < 2 ? 'nextDay' : + diff < 7 ? 'nextWeek' : 'sameElse'; +} + +function calendar$1 (time, formats) { + // We want to compare the start of today, vs this. + // Getting start-of-today depends on whether we're local/utc/offset or not. + var now = time || createLocal(), + sod = cloneWithOffset(now, this).startOf('day'), + format = hooks.calendarFormat(this, sod) || 'sameElse'; + + var output = formats && (isFunction(formats[format]) ? formats[format].call(this, now) : formats[format]); + + return this.format(output || this.localeData().calendar(format, this, createLocal(now))); +} + +function clone () { + return new Moment(this); +} + +function isAfter (input, units) { + var localInput = isMoment(input) ? input : createLocal(input); + if (!(this.isValid() && localInput.isValid())) { + return false; + } + units = normalizeUnits(!isUndefined(units) ? units : 'millisecond'); + if (units === 'millisecond') { + return this.valueOf() > localInput.valueOf(); + } else { + return localInput.valueOf() < this.clone().startOf(units).valueOf(); + } +} + +function isBefore (input, units) { + var localInput = isMoment(input) ? input : createLocal(input); + if (!(this.isValid() && localInput.isValid())) { + return false; + } + units = normalizeUnits(!isUndefined(units) ? units : 'millisecond'); + if (units === 'millisecond') { + return this.valueOf() < localInput.valueOf(); + } else { + return this.clone().endOf(units).valueOf() < localInput.valueOf(); + } +} + +function isBetween (from, to, units, inclusivity) { + inclusivity = inclusivity || '()'; + return (inclusivity[0] === '(' ? this.isAfter(from, units) : !this.isBefore(from, units)) && + (inclusivity[1] === ')' ? this.isBefore(to, units) : !this.isAfter(to, units)); +} + +function isSame (input, units) { + var localInput = isMoment(input) ? input : createLocal(input), + inputMs; + if (!(this.isValid() && localInput.isValid())) { + return false; + } + units = normalizeUnits(units || 'millisecond'); + if (units === 'millisecond') { + return this.valueOf() === localInput.valueOf(); + } else { + inputMs = localInput.valueOf(); + return this.clone().startOf(units).valueOf() <= inputMs && inputMs <= this.clone().endOf(units).valueOf(); + } +} + +function isSameOrAfter (input, units) { + return this.isSame(input, units) || this.isAfter(input,units); +} + +function isSameOrBefore (input, units) { + return this.isSame(input, units) || this.isBefore(input,units); +} + +function diff (input, units, asFloat) { + var that, + zoneDelta, + delta, output; + + if (!this.isValid()) { + return NaN; + } + + that = cloneWithOffset(input, this); + + if (!that.isValid()) { + return NaN; + } + + zoneDelta = (that.utcOffset() - this.utcOffset()) * 6e4; + + units = normalizeUnits(units); + + if (units === 'year' || units === 'month' || units === 'quarter') { + output = monthDiff(this, that); + if (units === 'quarter') { + output = output / 3; + } else if (units === 'year') { + output = output / 12; + } + } else { + delta = this - that; + output = units === 'second' ? delta / 1e3 : // 1000 + units === 'minute' ? delta / 6e4 : // 1000 * 60 + units === 'hour' ? delta / 36e5 : // 1000 * 60 * 60 + units === 'day' ? (delta - zoneDelta) / 864e5 : // 1000 * 60 * 60 * 24, negate dst + units === 'week' ? (delta - zoneDelta) / 6048e5 : // 1000 * 60 * 60 * 24 * 7, negate dst + delta; + } + return asFloat ? output : absFloor(output); +} + +function monthDiff (a, b) { + // difference in months + var wholeMonthDiff = ((b.year() - a.year()) * 12) + (b.month() - a.month()), + // b is in (anchor - 1 month, anchor + 1 month) + anchor = a.clone().add(wholeMonthDiff, 'months'), + anchor2, adjust; + + if (b - anchor < 0) { + anchor2 = a.clone().add(wholeMonthDiff - 1, 'months'); + // linear across the month + adjust = (b - anchor) / (anchor - anchor2); + } else { + anchor2 = a.clone().add(wholeMonthDiff + 1, 'months'); + // linear across the month + adjust = (b - anchor) / (anchor2 - anchor); + } + + //check for negative zero, return zero if negative zero + return -(wholeMonthDiff + adjust) || 0; +} + +hooks.defaultFormat = 'YYYY-MM-DDTHH:mm:ssZ'; +hooks.defaultFormatUtc = 'YYYY-MM-DDTHH:mm:ss[Z]'; + +function toString () { + return this.clone().locale('en').format('ddd MMM DD YYYY HH:mm:ss [GMT]ZZ'); +} + +function toISOString() { + if (!this.isValid()) { + return null; + } + var m = this.clone().utc(); + if (m.year() < 0 || m.year() > 9999) { + return formatMoment(m, 'YYYYYY-MM-DD[T]HH:mm:ss.SSS[Z]'); + } + if (isFunction(Date.prototype.toISOString)) { + // native implementation is ~50x faster, use it when we can + return this.toDate().toISOString(); + } + return formatMoment(m, 'YYYY-MM-DD[T]HH:mm:ss.SSS[Z]'); +} + +/** + * Return a human readable representation of a moment that can + * also be evaluated to get a new moment which is the same + * + * @link https://nodejs.org/dist/latest/docs/api/util.html#util_custom_inspect_function_on_objects + */ +function inspect () { + if (!this.isValid()) { + return 'moment.invalid(/* ' + this._i + ' */)'; + } + var func = 'moment'; + var zone = ''; + if (!this.isLocal()) { + func = this.utcOffset() === 0 ? 'moment.utc' : 'moment.parseZone'; + zone = 'Z'; + } + var prefix = '[' + func + '("]'; + var year = (0 <= this.year() && this.year() <= 9999) ? 'YYYY' : 'YYYYYY'; + var datetime = '-MM-DD[T]HH:mm:ss.SSS'; + var suffix = zone + '[")]'; + + return this.format(prefix + year + datetime + suffix); +} + +function format (inputString) { + if (!inputString) { + inputString = this.isUtc() ? hooks.defaultFormatUtc : hooks.defaultFormat; + } + var output = formatMoment(this, inputString); + return this.localeData().postformat(output); +} + +function from (time, withoutSuffix) { + if (this.isValid() && + ((isMoment(time) && time.isValid()) || + createLocal(time).isValid())) { + return createDuration({to: this, from: time}).locale(this.locale()).humanize(!withoutSuffix); + } else { + return this.localeData().invalidDate(); + } +} + +function fromNow (withoutSuffix) { + return this.from(createLocal(), withoutSuffix); +} + +function to (time, withoutSuffix) { + if (this.isValid() && + ((isMoment(time) && time.isValid()) || + createLocal(time).isValid())) { + return createDuration({from: this, to: time}).locale(this.locale()).humanize(!withoutSuffix); + } else { + return this.localeData().invalidDate(); + } +} + +function toNow (withoutSuffix) { + return this.to(createLocal(), withoutSuffix); +} + +// If passed a locale key, it will set the locale for this +// instance. Otherwise, it will return the locale configuration +// variables for this instance. +function locale (key) { + var newLocaleData; + + if (key === undefined) { + return this._locale._abbr; + } else { + newLocaleData = getLocale(key); + if (newLocaleData != null) { + this._locale = newLocaleData; + } + return this; + } +} + +var lang = deprecate( + 'moment().lang() is deprecated. Instead, use moment().localeData() to get the language configuration. Use moment().locale() to change languages.', + function (key) { + if (key === undefined) { + return this.localeData(); + } else { + return this.locale(key); + } + } +); + +function localeData () { + return this._locale; +} + +function startOf (units) { + units = normalizeUnits(units); + // the following switch intentionally omits break keywords + // to utilize falling through the cases. + switch (units) { + case 'year': + this.month(0); + /* falls through */ + case 'quarter': + case 'month': + this.date(1); + /* falls through */ + case 'week': + case 'isoWeek': + case 'day': + case 'date': + this.hours(0); + /* falls through */ + case 'hour': + this.minutes(0); + /* falls through */ + case 'minute': + this.seconds(0); + /* falls through */ + case 'second': + this.milliseconds(0); + } + + // weeks are a special case + if (units === 'week') { + this.weekday(0); + } + if (units === 'isoWeek') { + this.isoWeekday(1); + } + + // quarters are also special + if (units === 'quarter') { + this.month(Math.floor(this.month() / 3) * 3); + } + + return this; +} + +function endOf (units) { + units = normalizeUnits(units); + if (units === undefined || units === 'millisecond') { + return this; + } + + // 'date' is an alias for 'day', so it should be considered as such. + if (units === 'date') { + units = 'day'; + } + + return this.startOf(units).add(1, (units === 'isoWeek' ? 'week' : units)).subtract(1, 'ms'); +} + +function valueOf () { + return this._d.valueOf() - ((this._offset || 0) * 60000); +} + +function unix () { + return Math.floor(this.valueOf() / 1000); +} + +function toDate () { + return new Date(this.valueOf()); +} + +function toArray () { + var m = this; + return [m.year(), m.month(), m.date(), m.hour(), m.minute(), m.second(), m.millisecond()]; +} + +function toObject () { + var m = this; + return { + years: m.year(), + months: m.month(), + date: m.date(), + hours: m.hours(), + minutes: m.minutes(), + seconds: m.seconds(), + milliseconds: m.milliseconds() + }; +} + +function toJSON () { + // new Date(NaN).toJSON() === null + return this.isValid() ? this.toISOString() : null; +} + +function isValid$2 () { + return isValid(this); +} + +function parsingFlags () { + return extend({}, getParsingFlags(this)); +} + +function invalidAt () { + return getParsingFlags(this).overflow; +} + +function creationData() { + return { + input: this._i, + format: this._f, + locale: this._locale, + isUTC: this._isUTC, + strict: this._strict + }; +} + +// FORMATTING + +addFormatToken(0, ['gg', 2], 0, function () { + return this.weekYear() % 100; +}); + +addFormatToken(0, ['GG', 2], 0, function () { + return this.isoWeekYear() % 100; +}); + +function addWeekYearFormatToken (token, getter) { + addFormatToken(0, [token, token.length], 0, getter); +} + +addWeekYearFormatToken('gggg', 'weekYear'); +addWeekYearFormatToken('ggggg', 'weekYear'); +addWeekYearFormatToken('GGGG', 'isoWeekYear'); +addWeekYearFormatToken('GGGGG', 'isoWeekYear'); + +// ALIASES + +addUnitAlias('weekYear', 'gg'); +addUnitAlias('isoWeekYear', 'GG'); + +// PRIORITY + +addUnitPriority('weekYear', 1); +addUnitPriority('isoWeekYear', 1); + + +// PARSING + +addRegexToken('G', matchSigned); +addRegexToken('g', matchSigned); +addRegexToken('GG', match1to2, match2); +addRegexToken('gg', match1to2, match2); +addRegexToken('GGGG', match1to4, match4); +addRegexToken('gggg', match1to4, match4); +addRegexToken('GGGGG', match1to6, match6); +addRegexToken('ggggg', match1to6, match6); + +addWeekParseToken(['gggg', 'ggggg', 'GGGG', 'GGGGG'], function (input, week, config, token) { + week[token.substr(0, 2)] = toInt(input); +}); + +addWeekParseToken(['gg', 'GG'], function (input, week, config, token) { + week[token] = hooks.parseTwoDigitYear(input); +}); + +// MOMENTS + +function getSetWeekYear (input) { + return getSetWeekYearHelper.call(this, + input, + this.week(), + this.weekday(), + this.localeData()._week.dow, + this.localeData()._week.doy); +} + +function getSetISOWeekYear (input) { + return getSetWeekYearHelper.call(this, + input, this.isoWeek(), this.isoWeekday(), 1, 4); +} + +function getISOWeeksInYear () { + return weeksInYear(this.year(), 1, 4); +} + +function getWeeksInYear () { + var weekInfo = this.localeData()._week; + return weeksInYear(this.year(), weekInfo.dow, weekInfo.doy); +} + +function getSetWeekYearHelper(input, week, weekday, dow, doy) { + var weeksTarget; + if (input == null) { + return weekOfYear(this, dow, doy).year; + } else { + weeksTarget = weeksInYear(input, dow, doy); + if (week > weeksTarget) { + week = weeksTarget; + } + return setWeekAll.call(this, input, week, weekday, dow, doy); + } +} + +function setWeekAll(weekYear, week, weekday, dow, doy) { + var dayOfYearData = dayOfYearFromWeeks(weekYear, week, weekday, dow, doy), + date = createUTCDate(dayOfYearData.year, 0, dayOfYearData.dayOfYear); + + this.year(date.getUTCFullYear()); + this.month(date.getUTCMonth()); + this.date(date.getUTCDate()); + return this; +} + +// FORMATTING + +addFormatToken('Q', 0, 'Qo', 'quarter'); + +// ALIASES + +addUnitAlias('quarter', 'Q'); + +// PRIORITY + +addUnitPriority('quarter', 7); + +// PARSING + +addRegexToken('Q', match1); +addParseToken('Q', function (input, array) { + array[MONTH] = (toInt(input) - 1) * 3; +}); + +// MOMENTS + +function getSetQuarter (input) { + return input == null ? Math.ceil((this.month() + 1) / 3) : this.month((input - 1) * 3 + this.month() % 3); +} + +// FORMATTING + +addFormatToken('D', ['DD', 2], 'Do', 'date'); + +// ALIASES + +addUnitAlias('date', 'D'); + +// PRIOROITY +addUnitPriority('date', 9); + +// PARSING + +addRegexToken('D', match1to2); +addRegexToken('DD', match1to2, match2); +addRegexToken('Do', function (isStrict, locale) { + // TODO: Remove "ordinalParse" fallback in next major release. + return isStrict ? + (locale._dayOfMonthOrdinalParse || locale._ordinalParse) : + locale._dayOfMonthOrdinalParseLenient; +}); + +addParseToken(['D', 'DD'], DATE); +addParseToken('Do', function (input, array) { + array[DATE] = toInt(input.match(match1to2)[0], 10); +}); + +// MOMENTS + +var getSetDayOfMonth = makeGetSet('Date', true); + +// FORMATTING + +addFormatToken('DDD', ['DDDD', 3], 'DDDo', 'dayOfYear'); + +// ALIASES + +addUnitAlias('dayOfYear', 'DDD'); + +// PRIORITY +addUnitPriority('dayOfYear', 4); + +// PARSING + +addRegexToken('DDD', match1to3); +addRegexToken('DDDD', match3); +addParseToken(['DDD', 'DDDD'], function (input, array, config) { + config._dayOfYear = toInt(input); +}); + +// HELPERS + +// MOMENTS + +function getSetDayOfYear (input) { + var dayOfYear = Math.round((this.clone().startOf('day') - this.clone().startOf('year')) / 864e5) + 1; + return input == null ? dayOfYear : this.add((input - dayOfYear), 'd'); +} + +// FORMATTING + +addFormatToken('m', ['mm', 2], 0, 'minute'); + +// ALIASES + +addUnitAlias('minute', 'm'); + +// PRIORITY + +addUnitPriority('minute', 14); + +// PARSING + +addRegexToken('m', match1to2); +addRegexToken('mm', match1to2, match2); +addParseToken(['m', 'mm'], MINUTE); + +// MOMENTS + +var getSetMinute = makeGetSet('Minutes', false); + +// FORMATTING + +addFormatToken('s', ['ss', 2], 0, 'second'); + +// ALIASES + +addUnitAlias('second', 's'); + +// PRIORITY + +addUnitPriority('second', 15); + +// PARSING + +addRegexToken('s', match1to2); +addRegexToken('ss', match1to2, match2); +addParseToken(['s', 'ss'], SECOND); + +// MOMENTS + +var getSetSecond = makeGetSet('Seconds', false); + +// FORMATTING + +addFormatToken('S', 0, 0, function () { + return ~~(this.millisecond() / 100); +}); + +addFormatToken(0, ['SS', 2], 0, function () { + return ~~(this.millisecond() / 10); +}); + +addFormatToken(0, ['SSS', 3], 0, 'millisecond'); +addFormatToken(0, ['SSSS', 4], 0, function () { + return this.millisecond() * 10; +}); +addFormatToken(0, ['SSSSS', 5], 0, function () { + return this.millisecond() * 100; +}); +addFormatToken(0, ['SSSSSS', 6], 0, function () { + return this.millisecond() * 1000; +}); +addFormatToken(0, ['SSSSSSS', 7], 0, function () { + return this.millisecond() * 10000; +}); +addFormatToken(0, ['SSSSSSSS', 8], 0, function () { + return this.millisecond() * 100000; +}); +addFormatToken(0, ['SSSSSSSSS', 9], 0, function () { + return this.millisecond() * 1000000; +}); + + +// ALIASES + +addUnitAlias('millisecond', 'ms'); + +// PRIORITY + +addUnitPriority('millisecond', 16); + +// PARSING + +addRegexToken('S', match1to3, match1); +addRegexToken('SS', match1to3, match2); +addRegexToken('SSS', match1to3, match3); + +var token; +for (token = 'SSSS'; token.length <= 9; token += 'S') { + addRegexToken(token, matchUnsigned); +} + +function parseMs(input, array) { + array[MILLISECOND] = toInt(('0.' + input) * 1000); +} + +for (token = 'S'; token.length <= 9; token += 'S') { + addParseToken(token, parseMs); +} +// MOMENTS + +var getSetMillisecond = makeGetSet('Milliseconds', false); + +// FORMATTING + +addFormatToken('z', 0, 0, 'zoneAbbr'); +addFormatToken('zz', 0, 0, 'zoneName'); + +// MOMENTS + +function getZoneAbbr () { + return this._isUTC ? 'UTC' : ''; +} + +function getZoneName () { + return this._isUTC ? 'Coordinated Universal Time' : ''; +} + +var proto = Moment.prototype; + +proto.add = add; +proto.calendar = calendar$1; +proto.clone = clone; +proto.diff = diff; +proto.endOf = endOf; +proto.format = format; +proto.from = from; +proto.fromNow = fromNow; +proto.to = to; +proto.toNow = toNow; +proto.get = stringGet; +proto.invalidAt = invalidAt; +proto.isAfter = isAfter; +proto.isBefore = isBefore; +proto.isBetween = isBetween; +proto.isSame = isSame; +proto.isSameOrAfter = isSameOrAfter; +proto.isSameOrBefore = isSameOrBefore; +proto.isValid = isValid$2; +proto.lang = lang; +proto.locale = locale; +proto.localeData = localeData; +proto.max = prototypeMax; +proto.min = prototypeMin; +proto.parsingFlags = parsingFlags; +proto.set = stringSet; +proto.startOf = startOf; +proto.subtract = subtract; +proto.toArray = toArray; +proto.toObject = toObject; +proto.toDate = toDate; +proto.toISOString = toISOString; +proto.inspect = inspect; +proto.toJSON = toJSON; +proto.toString = toString; +proto.unix = unix; +proto.valueOf = valueOf; +proto.creationData = creationData; + +// Year +proto.year = getSetYear; +proto.isLeapYear = getIsLeapYear; + +// Week Year +proto.weekYear = getSetWeekYear; +proto.isoWeekYear = getSetISOWeekYear; + +// Quarter +proto.quarter = proto.quarters = getSetQuarter; + +// Month +proto.month = getSetMonth; +proto.daysInMonth = getDaysInMonth; + +// Week +proto.week = proto.weeks = getSetWeek; +proto.isoWeek = proto.isoWeeks = getSetISOWeek; +proto.weeksInYear = getWeeksInYear; +proto.isoWeeksInYear = getISOWeeksInYear; + +// Day +proto.date = getSetDayOfMonth; +proto.day = proto.days = getSetDayOfWeek; +proto.weekday = getSetLocaleDayOfWeek; +proto.isoWeekday = getSetISODayOfWeek; +proto.dayOfYear = getSetDayOfYear; + +// Hour +proto.hour = proto.hours = getSetHour; + +// Minute +proto.minute = proto.minutes = getSetMinute; + +// Second +proto.second = proto.seconds = getSetSecond; + +// Millisecond +proto.millisecond = proto.milliseconds = getSetMillisecond; + +// Offset +proto.utcOffset = getSetOffset; +proto.utc = setOffsetToUTC; +proto.local = setOffsetToLocal; +proto.parseZone = setOffsetToParsedOffset; +proto.hasAlignedHourOffset = hasAlignedHourOffset; +proto.isDST = isDaylightSavingTime; +proto.isLocal = isLocal; +proto.isUtcOffset = isUtcOffset; +proto.isUtc = isUtc; +proto.isUTC = isUtc; + +// Timezone +proto.zoneAbbr = getZoneAbbr; +proto.zoneName = getZoneName; + +// Deprecations +proto.dates = deprecate('dates accessor is deprecated. Use date instead.', getSetDayOfMonth); +proto.months = deprecate('months accessor is deprecated. Use month instead', getSetMonth); +proto.years = deprecate('years accessor is deprecated. Use year instead', getSetYear); +proto.zone = deprecate('moment().zone is deprecated, use moment().utcOffset instead. http://momentjs.com/guides/#/warnings/zone/', getSetZone); +proto.isDSTShifted = deprecate('isDSTShifted is deprecated. See http://momentjs.com/guides/#/warnings/dst-shifted/ for more information', isDaylightSavingTimeShifted); + +function createUnix (input) { + return createLocal(input * 1000); +} + +function createInZone () { + return createLocal.apply(null, arguments).parseZone(); +} + +function preParsePostFormat (string) { + return string; +} + +var proto$1 = Locale.prototype; + +proto$1.calendar = calendar; +proto$1.longDateFormat = longDateFormat; +proto$1.invalidDate = invalidDate; +proto$1.ordinal = ordinal; +proto$1.preparse = preParsePostFormat; +proto$1.postformat = preParsePostFormat; +proto$1.relativeTime = relativeTime; +proto$1.pastFuture = pastFuture; +proto$1.set = set; + +// Month +proto$1.months = localeMonths; +proto$1.monthsShort = localeMonthsShort; +proto$1.monthsParse = localeMonthsParse; +proto$1.monthsRegex = monthsRegex; +proto$1.monthsShortRegex = monthsShortRegex; + +// Week +proto$1.week = localeWeek; +proto$1.firstDayOfYear = localeFirstDayOfYear; +proto$1.firstDayOfWeek = localeFirstDayOfWeek; + +// Day of Week +proto$1.weekdays = localeWeekdays; +proto$1.weekdaysMin = localeWeekdaysMin; +proto$1.weekdaysShort = localeWeekdaysShort; +proto$1.weekdaysParse = localeWeekdaysParse; + +proto$1.weekdaysRegex = weekdaysRegex; +proto$1.weekdaysShortRegex = weekdaysShortRegex; +proto$1.weekdaysMinRegex = weekdaysMinRegex; + +// Hours +proto$1.isPM = localeIsPM; +proto$1.meridiem = localeMeridiem; + +function get$1 (format, index, field, setter) { + var locale = getLocale(); + var utc = createUTC().set(setter, index); + return locale[field](utc, format); +} + +function listMonthsImpl (format, index, field) { + if (isNumber(format)) { + index = format; + format = undefined; + } + + format = format || ''; + + if (index != null) { + return get$1(format, index, field, 'month'); + } + + var i; + var out = []; + for (i = 0; i < 12; i++) { + out[i] = get$1(format, i, field, 'month'); + } + return out; +} + +// () +// (5) +// (fmt, 5) +// (fmt) +// (true) +// (true, 5) +// (true, fmt, 5) +// (true, fmt) +function listWeekdaysImpl (localeSorted, format, index, field) { + if (typeof localeSorted === 'boolean') { + if (isNumber(format)) { + index = format; + format = undefined; + } + + format = format || ''; + } else { + format = localeSorted; + index = format; + localeSorted = false; + + if (isNumber(format)) { + index = format; + format = undefined; + } + + format = format || ''; + } + + var locale = getLocale(), + shift = localeSorted ? locale._week.dow : 0; + + if (index != null) { + return get$1(format, (index + shift) % 7, field, 'day'); + } + + var i; + var out = []; + for (i = 0; i < 7; i++) { + out[i] = get$1(format, (i + shift) % 7, field, 'day'); + } + return out; +} + +function listMonths (format, index) { + return listMonthsImpl(format, index, 'months'); +} + +function listMonthsShort (format, index) { + return listMonthsImpl(format, index, 'monthsShort'); +} + +function listWeekdays (localeSorted, format, index) { + return listWeekdaysImpl(localeSorted, format, index, 'weekdays'); +} + +function listWeekdaysShort (localeSorted, format, index) { + return listWeekdaysImpl(localeSorted, format, index, 'weekdaysShort'); +} + +function listWeekdaysMin (localeSorted, format, index) { + return listWeekdaysImpl(localeSorted, format, index, 'weekdaysMin'); +} + +getSetGlobalLocale('en', { + dayOfMonthOrdinalParse: /\d{1,2}(th|st|nd|rd)/, + ordinal : function (number) { + var b = number % 10, + output = (toInt(number % 100 / 10) === 1) ? 'th' : + (b === 1) ? 'st' : + (b === 2) ? 'nd' : + (b === 3) ? 'rd' : 'th'; + return number + output; + } +}); + +// Side effect imports +hooks.lang = deprecate('moment.lang is deprecated. Use moment.locale instead.', getSetGlobalLocale); +hooks.langData = deprecate('moment.langData is deprecated. Use moment.localeData instead.', getLocale); + +var mathAbs = Math.abs; + +function abs () { + var data = this._data; + + this._milliseconds = mathAbs(this._milliseconds); + this._days = mathAbs(this._days); + this._months = mathAbs(this._months); + + data.milliseconds = mathAbs(data.milliseconds); + data.seconds = mathAbs(data.seconds); + data.minutes = mathAbs(data.minutes); + data.hours = mathAbs(data.hours); + data.months = mathAbs(data.months); + data.years = mathAbs(data.years); + + return this; +} + +function addSubtract$1 (duration, input, value, direction) { + var other = createDuration(input, value); + + duration._milliseconds += direction * other._milliseconds; + duration._days += direction * other._days; + duration._months += direction * other._months; + + return duration._bubble(); +} + +// supports only 2.0-style add(1, 's') or add(duration) +function add$1 (input, value) { + return addSubtract$1(this, input, value, 1); +} + +// supports only 2.0-style subtract(1, 's') or subtract(duration) +function subtract$1 (input, value) { + return addSubtract$1(this, input, value, -1); +} + +function absCeil (number) { + if (number < 0) { + return Math.floor(number); + } else { + return Math.ceil(number); + } +} + +function bubble () { + var milliseconds = this._milliseconds; + var days = this._days; + var months = this._months; + var data = this._data; + var seconds, minutes, hours, years, monthsFromDays; + + // if we have a mix of positive and negative values, bubble down first + // check: https://github.com/moment/moment/issues/2166 + if (!((milliseconds >= 0 && days >= 0 && months >= 0) || + (milliseconds <= 0 && days <= 0 && months <= 0))) { + milliseconds += absCeil(monthsToDays(months) + days) * 864e5; + days = 0; + months = 0; + } + + // The following code bubbles up values, see the tests for + // examples of what that means. + data.milliseconds = milliseconds % 1000; + + seconds = absFloor(milliseconds / 1000); + data.seconds = seconds % 60; + + minutes = absFloor(seconds / 60); + data.minutes = minutes % 60; + + hours = absFloor(minutes / 60); + data.hours = hours % 24; + + days += absFloor(hours / 24); + + // convert days to months + monthsFromDays = absFloor(daysToMonths(days)); + months += monthsFromDays; + days -= absCeil(monthsToDays(monthsFromDays)); + + // 12 months -> 1 year + years = absFloor(months / 12); + months %= 12; + + data.days = days; + data.months = months; + data.years = years; + + return this; +} + +function daysToMonths (days) { + // 400 years have 146097 days (taking into account leap year rules) + // 400 years have 12 months === 4800 + return days * 4800 / 146097; +} + +function monthsToDays (months) { + // the reverse of daysToMonths + return months * 146097 / 4800; +} + +function as (units) { + if (!this.isValid()) { + return NaN; + } + var days; + var months; + var milliseconds = this._milliseconds; + + units = normalizeUnits(units); + + if (units === 'month' || units === 'year') { + days = this._days + milliseconds / 864e5; + months = this._months + daysToMonths(days); + return units === 'month' ? months : months / 12; + } else { + // handle milliseconds separately because of floating point math errors (issue #1867) + days = this._days + Math.round(monthsToDays(this._months)); + switch (units) { + case 'week' : return days / 7 + milliseconds / 6048e5; + case 'day' : return days + milliseconds / 864e5; + case 'hour' : return days * 24 + milliseconds / 36e5; + case 'minute' : return days * 1440 + milliseconds / 6e4; + case 'second' : return days * 86400 + milliseconds / 1000; + // Math.floor prevents floating point math errors here + case 'millisecond': return Math.floor(days * 864e5) + milliseconds; + default: throw new Error('Unknown unit ' + units); + } + } +} + +// TODO: Use this.as('ms')? +function valueOf$1 () { + if (!this.isValid()) { + return NaN; + } + return ( + this._milliseconds + + this._days * 864e5 + + (this._months % 12) * 2592e6 + + toInt(this._months / 12) * 31536e6 + ); +} + +function makeAs (alias) { + return function () { + return this.as(alias); + }; +} + +var asMilliseconds = makeAs('ms'); +var asSeconds = makeAs('s'); +var asMinutes = makeAs('m'); +var asHours = makeAs('h'); +var asDays = makeAs('d'); +var asWeeks = makeAs('w'); +var asMonths = makeAs('M'); +var asYears = makeAs('y'); + +function get$2 (units) { + units = normalizeUnits(units); + return this.isValid() ? this[units + 's']() : NaN; +} + +function makeGetter(name) { + return function () { + return this.isValid() ? this._data[name] : NaN; + }; +} + +var milliseconds = makeGetter('milliseconds'); +var seconds = makeGetter('seconds'); +var minutes = makeGetter('minutes'); +var hours = makeGetter('hours'); +var days = makeGetter('days'); +var months = makeGetter('months'); +var years = makeGetter('years'); + +function weeks () { + return absFloor(this.days() / 7); +} + +var round = Math.round; +var thresholds = { + ss: 44, // a few seconds to seconds + s : 45, // seconds to minute + m : 45, // minutes to hour + h : 22, // hours to day + d : 26, // days to month + M : 11 // months to year +}; + +// helper function for moment.fn.from, moment.fn.fromNow, and moment.duration.fn.humanize +function substituteTimeAgo(string, number, withoutSuffix, isFuture, locale) { + return locale.relativeTime(number || 1, !!withoutSuffix, string, isFuture); +} + +function relativeTime$1 (posNegDuration, withoutSuffix, locale) { + var duration = createDuration(posNegDuration).abs(); + var seconds = round(duration.as('s')); + var minutes = round(duration.as('m')); + var hours = round(duration.as('h')); + var days = round(duration.as('d')); + var months = round(duration.as('M')); + var years = round(duration.as('y')); + + var a = seconds <= thresholds.ss && ['s', seconds] || + seconds < thresholds.s && ['ss', seconds] || + minutes <= 1 && ['m'] || + minutes < thresholds.m && ['mm', minutes] || + hours <= 1 && ['h'] || + hours < thresholds.h && ['hh', hours] || + days <= 1 && ['d'] || + days < thresholds.d && ['dd', days] || + months <= 1 && ['M'] || + months < thresholds.M && ['MM', months] || + years <= 1 && ['y'] || ['yy', years]; + + a[2] = withoutSuffix; + a[3] = +posNegDuration > 0; + a[4] = locale; + return substituteTimeAgo.apply(null, a); +} + +// This function allows you to set the rounding function for relative time strings +function getSetRelativeTimeRounding (roundingFunction) { + if (roundingFunction === undefined) { + return round; + } + if (typeof(roundingFunction) === 'function') { + round = roundingFunction; + return true; + } + return false; +} + +// This function allows you to set a threshold for relative time strings +function getSetRelativeTimeThreshold (threshold, limit) { + if (thresholds[threshold] === undefined) { + return false; + } + if (limit === undefined) { + return thresholds[threshold]; + } + thresholds[threshold] = limit; + if (threshold === 's') { + thresholds.ss = limit - 1; + } + return true; +} + +function humanize (withSuffix) { + if (!this.isValid()) { + return this.localeData().invalidDate(); + } + + var locale = this.localeData(); + var output = relativeTime$1(this, !withSuffix, locale); + + if (withSuffix) { + output = locale.pastFuture(+this, output); + } + + return locale.postformat(output); +} + +var abs$1 = Math.abs; + +function toISOString$1() { + // for ISO strings we do not use the normal bubbling rules: + // * milliseconds bubble up until they become hours + // * days do not bubble at all + // * months bubble up until they become years + // This is because there is no context-free conversion between hours and days + // (think of clock changes) + // and also not between days and months (28-31 days per month) + if (!this.isValid()) { + return this.localeData().invalidDate(); + } + + var seconds = abs$1(this._milliseconds) / 1000; + var days = abs$1(this._days); + var months = abs$1(this._months); + var minutes, hours, years; + + // 3600 seconds -> 60 minutes -> 1 hour + minutes = absFloor(seconds / 60); + hours = absFloor(minutes / 60); + seconds %= 60; + minutes %= 60; + + // 12 months -> 1 year + years = absFloor(months / 12); + months %= 12; + + + // inspired by https://github.com/dordille/moment-isoduration/blob/master/moment.isoduration.js + var Y = years; + var M = months; + var D = days; + var h = hours; + var m = minutes; + var s = seconds; + var total = this.asSeconds(); + + if (!total) { + // this is the same as C#'s (Noda) and python (isodate)... + // but not other JS (goog.date) + return 'P0D'; + } + + return (total < 0 ? '-' : '') + + 'P' + + (Y ? Y + 'Y' : '') + + (M ? M + 'M' : '') + + (D ? D + 'D' : '') + + ((h || m || s) ? 'T' : '') + + (h ? h + 'H' : '') + + (m ? m + 'M' : '') + + (s ? s + 'S' : ''); +} + +var proto$2 = Duration.prototype; + +proto$2.isValid = isValid$1; +proto$2.abs = abs; +proto$2.add = add$1; +proto$2.subtract = subtract$1; +proto$2.as = as; +proto$2.asMilliseconds = asMilliseconds; +proto$2.asSeconds = asSeconds; +proto$2.asMinutes = asMinutes; +proto$2.asHours = asHours; +proto$2.asDays = asDays; +proto$2.asWeeks = asWeeks; +proto$2.asMonths = asMonths; +proto$2.asYears = asYears; +proto$2.valueOf = valueOf$1; +proto$2._bubble = bubble; +proto$2.get = get$2; +proto$2.milliseconds = milliseconds; +proto$2.seconds = seconds; +proto$2.minutes = minutes; +proto$2.hours = hours; +proto$2.days = days; +proto$2.weeks = weeks; +proto$2.months = months; +proto$2.years = years; +proto$2.humanize = humanize; +proto$2.toISOString = toISOString$1; +proto$2.toString = toISOString$1; +proto$2.toJSON = toISOString$1; +proto$2.locale = locale; +proto$2.localeData = localeData; + +// Deprecations +proto$2.toIsoString = deprecate('toIsoString() is deprecated. Please use toISOString() instead (notice the capitals)', toISOString$1); +proto$2.lang = lang; + +// Side effect imports + +// FORMATTING + +addFormatToken('X', 0, 0, 'unix'); +addFormatToken('x', 0, 0, 'valueOf'); + +// PARSING + +addRegexToken('x', matchSigned); +addRegexToken('X', matchTimestamp); +addParseToken('X', function (input, array, config) { + config._d = new Date(parseFloat(input, 10) * 1000); +}); +addParseToken('x', function (input, array, config) { + config._d = new Date(toInt(input)); +}); + +// Side effect imports + + +hooks.version = '2.18.1'; + +setHookCallback(createLocal); + +hooks.fn = proto; +hooks.min = min; +hooks.max = max; +hooks.now = now; +hooks.utc = createUTC; +hooks.unix = createUnix; +hooks.months = listMonths; +hooks.isDate = isDate; +hooks.locale = getSetGlobalLocale; +hooks.invalid = createInvalid; +hooks.duration = createDuration; +hooks.isMoment = isMoment; +hooks.weekdays = listWeekdays; +hooks.parseZone = createInZone; +hooks.localeData = getLocale; +hooks.isDuration = isDuration; +hooks.monthsShort = listMonthsShort; +hooks.weekdaysMin = listWeekdaysMin; +hooks.defineLocale = defineLocale; +hooks.updateLocale = updateLocale; +hooks.locales = listLocales; +hooks.weekdaysShort = listWeekdaysShort; +hooks.normalizeUnits = normalizeUnits; +hooks.relativeTimeRounding = getSetRelativeTimeRounding; +hooks.relativeTimeThreshold = getSetRelativeTimeThreshold; +hooks.calendarFormat = getCalendarFormat; +hooks.prototype = proto; + +return hooks; + +}))); \ No newline at end of file diff --git a/core/static/journal_about/js/moment_locale_es.js b/core/static/journal_about/js/moment_locale_es.js new file mode 100644 index 0000000..f10cd4a --- /dev/null +++ b/core/static/journal_about/js/moment_locale_es.js @@ -0,0 +1,83 @@ +//! moment.js locale configuration +//! locale : Spanish [es] +//! author : Julio Napurí : https://github.com/julionc + +;(function (global, factory) { + typeof exports === 'object' && typeof module !== 'undefined' + && typeof require === 'function' ? factory(require('../moment')) : + typeof define === 'function' && define.amd ? define(['../moment'], factory) : + factory(global.moment) +}(this, (function (moment) { 'use strict'; + + +var monthsShortDot = 'ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.'.split('_'); +var monthsShort = 'ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic'.split('_'); + +var es = moment.defineLocale('es', { + months : 'enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre'.split('_'), + monthsShort : function (m, format) { + if (!m) { + return monthsShortDot; + } else if (/-MMM-/.test(format)) { + return monthsShort[m.month()]; + } else { + return monthsShortDot[m.month()]; + } + }, + monthsParseExact : true, + 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 : true, + 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' + ((this.hours() !== 1) ? 's' : '') + '] LT'; + }, + nextDay : function () { + return '[mañana a la' + ((this.hours() !== 1) ? 's' : '') + '] LT'; + }, + nextWeek : function () { + return 'dddd [a la' + ((this.hours() !== 1) ? 's' : '') + '] LT'; + }, + lastDay : function () { + return '[ayer a la' + ((this.hours() !== 1) ? 's' : '') + '] LT'; + }, + lastWeek : function () { + return '[el] dddd [pasado a la' + ((this.hours() !== 1) ? 's' : '') + '] LT'; + }, + sameElse : 'L' + }, + relativeTime : { + future : 'en %s', + past : 'hace %s', + s : 'unos segundos', + m : 'un minuto', + mm : '%d minutos', + h : 'una hora', + hh : '%d horas', + d : 'un día', + dd : '%d días', + M : 'un mes', + MM : '%d meses', + y : 'un año', + yy : '%d años' + }, + dayOfMonthOrdinalParse : /\d{1,2}º/, + ordinal : '%dº', + week : { + dow : 1, // Monday is the first day of the week. + doy : 4 // The week that contains Jan 4th is the first week of the year. + } +}); + +return es; + +}))); \ No newline at end of file diff --git a/core/static/journal_about/js/moment_locale_pt_br.js b/core/static/journal_about/js/moment_locale_pt_br.js new file mode 100644 index 0000000..364685a --- /dev/null +++ b/core/static/journal_about/js/moment_locale_pt_br.js @@ -0,0 +1,61 @@ +//! moment.js locale configuration +//! locale : Portuguese (Brazil) [pt-br] +//! author : Caio Ribeiro Pereira : https://github.com/caio-ribeiro-pereira + +;(function (global, factory) { + typeof exports === 'object' && typeof module !== 'undefined' + && typeof require === 'function' ? factory(require('../moment')) : + typeof define === 'function' && define.amd ? define(['../moment'], factory) : + factory(global.moment) +}(this, (function (moment) { 'use strict'; + + +var ptBr = moment.defineLocale('pt-br', { + months : 'Janeiro_Fevereiro_Março_Abril_Maio_Junho_Julho_Agosto_Setembro_Outubro_Novembro_Dezembro'.split('_'), + monthsShort : 'Jan_Fev_Mar_Abr_Mai_Jun_Jul_Ago_Set_Out_Nov_Dez'.split('_'), + weekdays : 'Domingo_Segunda-feira_Terça-feira_Quarta-feira_Quinta-feira_Sexta-feira_Sábado'.split('_'), + weekdaysShort : 'Dom_Seg_Ter_Qua_Qui_Sex_Sáb'.split('_'), + weekdaysMin : 'Do_2ª_3ª_4ª_5ª_6ª_Sá'.split('_'), + weekdaysParseExact : true, + longDateFormat : { + LT : 'HH:mm', + LTS : 'HH:mm:ss', + L : 'DD/MM/YYYY', + LL : 'D [de] MMMM [de] YYYY', + LLL : 'D [de] MMMM [de] YYYY [às] HH:mm', + LLLL : 'dddd, D [de] MMMM [de] YYYY [às] HH:mm' + }, + calendar : { + sameDay: '[Hoje às] LT', + nextDay: '[Amanhã às] LT', + nextWeek: 'dddd [às] LT', + lastDay: '[Ontem às] LT', + lastWeek: function () { + return (this.day() === 0 || this.day() === 6) ? + '[Último] dddd [às] LT' : // Saturday + Sunday + '[Última] dddd [às] LT'; // Monday - Friday + }, + sameElse: 'L' + }, + relativeTime : { + future : 'em %s', + past : '%s atrás', + s : 'poucos segundos', + m : 'um minuto', + mm : '%d minutos', + h : 'uma hora', + hh : '%d horas', + d : 'um dia', + dd : '%d dias', + M : 'um mês', + MM : '%d meses', + y : 'um ano', + yy : '%d anos' + }, + dayOfMonthOrdinalParse: /\d{1,2}º/, + ordinal : '%dº' +}); + +return ptBr; + +}))); \ No newline at end of file diff --git a/core/static/journal_about/js/plugins.js b/core/static/journal_about/js/plugins.js new file mode 100644 index 0000000..45da331 --- /dev/null +++ b/core/static/journal_about/js/plugins.js @@ -0,0 +1,3495 @@ +/*! + * ZeroClipboard + * The ZeroClipboard library provides an easy way to copy text to the clipboard using an invisible Adobe Flash movie and a JavaScript interface + * Copyright (c) 2009-2016 Jon Rohan, James M. Greene + * Licensed MIT + * http://zeroclipboard.org/ + * v2.4.0-beta.1 + */ +(function(window, undefined) { + //"use strict"; + /** + * Store references to critically important global functions that may be + * overridden on certain web pages. + */ + var _window = window, _document = _window.document, _navigator = _window.navigator, _setTimeout = _window.setTimeout, _clearTimeout = _window.clearTimeout, _setInterval = _window.setInterval, _clearInterval = _window.clearInterval, _getComputedStyle = _window.getComputedStyle, _encodeURIComponent = _window.encodeURIComponent, _ActiveXObject = _window.ActiveXObject, _Error = _window.Error, _parseInt = _window.Number.parseInt || _window.parseInt, _parseFloat = _window.Number.parseFloat || _window.parseFloat, _isNaN = _window.Number.isNaN || _window.isNaN, _now = _window.Date.now, _keys = _window.Object.keys, _hasOwn = _window.Object.prototype.hasOwnProperty, _slice = _window.Array.prototype.slice, _unwrap = function() { + var unwrapper = function(el) { + return el; + }; + if (typeof _window.wrap === "function" && typeof _window.unwrap === "function") { + try { + var div = _document.createElement("div"); + var unwrappedDiv = _window.unwrap(div); + if (div.nodeType === 1 && unwrappedDiv && unwrappedDiv.nodeType === 1) { + unwrapper = _window.unwrap; + } + } catch (e) {} + } + return unwrapper; + }(); + /** + * Convert an `arguments` object into an Array. + * + * @returns The arguments as an Array + * @private + */ + var _args = function(argumentsObj) { + return _slice.call(argumentsObj, 0); + }; + /** + * Shallow-copy the owned, enumerable properties of one object over to another, similar to jQuery's `$.extend`. + * + * @returns The target object, augmented + * @private + */ + var _extend = function() { + var i, len, arg, prop, src, copy, args = _args(arguments), target = args[0] || {}; + for (i = 1, len = args.length; i < len; i++) { + if ((arg = args[i]) != null) { + for (prop in arg) { + if (_hasOwn.call(arg, prop)) { + src = target[prop]; + copy = arg[prop]; + if (target !== copy && copy !== undefined) { + target[prop] = copy; + } + } + } + } + } + return target; + }; + /** + * Return a deep copy of the source object or array. + * + * @returns Object or Array + * @private + */ + var _deepCopy = function(source) { + var copy, i, len, prop; + if (typeof source !== "object" || source == null || typeof source.nodeType === "number") { + copy = source; + } else if (typeof source.length === "number") { + copy = []; + for (i = 0, len = source.length; i < len; i++) { + if (_hasOwn.call(source, i)) { + copy[i] = _deepCopy(source[i]); + } + } + } else { + copy = {}; + for (prop in source) { + if (_hasOwn.call(source, prop)) { + copy[prop] = _deepCopy(source[prop]); + } + } + } + return copy; + }; + /** + * Makes a shallow copy of `obj` (like `_extend`) but filters its properties based on a list of `keys` to keep. + * The inverse of `_omit`, mostly. The big difference is that these properties do NOT need to be enumerable to + * be kept. + * + * @returns A new filtered object. + * @private + */ + var _pick = function(obj, keys) { + var newObj = {}; + for (var i = 0, len = keys.length; i < len; i++) { + if (keys[i] in obj) { + newObj[keys[i]] = obj[keys[i]]; + } + } + return newObj; + }; + /** + * Makes a shallow copy of `obj` (like `_extend`) but filters its properties based on a list of `keys` to omit. + * The inverse of `_pick`. + * + * @returns A new filtered object. + * @private + */ + var _omit = function(obj, keys) { + var newObj = {}; + for (var prop in obj) { + if (keys.indexOf(prop) === -1) { + newObj[prop] = obj[prop]; + } + } + return newObj; + }; + /** + * Remove all owned, enumerable properties from an object. + * + * @returns The original object without its owned, enumerable properties. + * @private + */ + var _deleteOwnProperties = function(obj) { + if (obj) { + for (var prop in obj) { + if (_hasOwn.call(obj, prop)) { + delete obj[prop]; + } + } + } + return obj; + }; + /** + * Determine if an element is contained within another element. + * + * @returns Boolean + * @private + */ + var _containedBy = function(el, ancestorEl) { + if (el && el.nodeType === 1 && el.ownerDocument && ancestorEl && (ancestorEl.nodeType === 1 && ancestorEl.ownerDocument && ancestorEl.ownerDocument === el.ownerDocument || ancestorEl.nodeType === 9 && !ancestorEl.ownerDocument && ancestorEl === el.ownerDocument)) { + do { + if (el === ancestorEl) { + return true; + } + el = el.parentNode; + } while (el); + } + return false; + }; + /** + * Get the URL path's parent directory. + * + * @returns String or `undefined` + * @private + */ + var _getDirPathOfUrl = function(url) { + var dir; + if (typeof url === "string" && url) { + dir = url.split("#")[0].split("?")[0]; + dir = url.slice(0, url.lastIndexOf("/") + 1); + } + return dir; + }; + /** + * Get the current script's URL by throwing an `Error` and analyzing it. + * + * @returns String or `undefined` + * @private + */ + var _getCurrentScriptUrlFromErrorStack = function(stack) { + var url, matches; + if (typeof stack === "string" && stack) { + matches = stack.match(/^(?:|[^:@]*@|.+\)@(?=http[s]?|file)|.+?\s+(?: at |@)(?:[^:\(]+ )*[\(]?)((?:http[s]?|file):\/\/[\/]?.+?\/[^:\)]*?)(?::\d+)(?::\d+)?/); + if (matches && matches[1]) { + url = matches[1]; + } else { + matches = stack.match(/\)@((?:http[s]?|file):\/\/[\/]?.+?\/[^:\)]*?)(?::\d+)(?::\d+)?/); + if (matches && matches[1]) { + url = matches[1]; + } + } + } + return url; + }; + /** + * Get the current script's URL by throwing an `Error` and analyzing it. + * + * @returns String or `undefined` + * @private + */ + var _getCurrentScriptUrlFromError = function() { + var url, err; + try { + throw new _Error(); + } catch (e) { + err = e; + } + if (err) { + url = err.sourceURL || err.fileName || _getCurrentScriptUrlFromErrorStack(err.stack); + } + return url; + }; + /** + * Get the current script's URL. + * + * @returns String or `undefined` + * @private + */ + var _getCurrentScriptUrl = function() { + var jsPath, scripts, i; + if (_document.currentScript && (jsPath = _document.currentScript.src)) { + return jsPath; + } + scripts = _document.getElementsByTagName("script"); + if (scripts.length === 1) { + return scripts[0].src || undefined; + } + if ("readyState" in (scripts[0] || document.createElement("script"))) { + for (i = scripts.length; i--; ) { + if (scripts[i].readyState === "interactive" && (jsPath = scripts[i].src)) { + return jsPath; + } + } + } + if (_document.readyState === "loading" && (jsPath = scripts[scripts.length - 1].src)) { + return jsPath; + } + if (jsPath = _getCurrentScriptUrlFromError()) { + return jsPath; + } + return undefined; + }; + /** + * Get the unanimous parent directory of ALL script tags. + * If any script tags are either (a) inline or (b) from differing parent + * directories, this method must return `undefined`. + * + * @returns String or `undefined` + * @private + */ + var _getUnanimousScriptParentDir = function() { + var i, jsDir, jsPath, scripts = _document.getElementsByTagName("script"); + for (i = scripts.length; i--; ) { + if (!(jsPath = scripts[i].src)) { + jsDir = null; + break; + } + jsPath = _getDirPathOfUrl(jsPath); + if (jsDir == null) { + jsDir = jsPath; + } else if (jsDir !== jsPath) { + jsDir = null; + break; + } + } + return jsDir || undefined; + }; + /** + * Get the presumed location of the "ZeroClipboard.swf" file, based on the location + * of the executing JavaScript file (e.g. "ZeroClipboard.js", etc.). + * + * @returns String + * @private + */ + var _getDefaultSwfPath = function() { + var jsDir = _getDirPathOfUrl(_getCurrentScriptUrl()) || _getUnanimousScriptParentDir() || ""; + return jsDir + "ZeroClipboard.swf"; + }; + /** + * Is the client's operating system some version of Windows? + * + * @returns Boolean + * @private + */ + var _isWindows = function() { + var isWindowsRegex = /win(dows|[\s]?(nt|me|ce|xp|vista|[\d]+))/i; + return !!_navigator && (isWindowsRegex.test(_navigator.appVersion || "") || isWindowsRegex.test(_navigator.platform || "") || (_navigator.userAgent || "").indexOf("Windows") !== -1); + }; + /** + * Keep track of if the page is framed (in an `iframe`). This can never change. + * @private + */ + var _pageIsFramed = function() { + return _window.opener == null && (!!_window.top && _window != _window.top || !!_window.parent && _window != _window.parent); + }(); + /** + * Keep track of if the page is XHTML (vs. HTML), which requires that everything + * be rendering in XML mode. + * @private + */ + var _pageIsXhtml = _document.documentElement.nodeName === "html"; + /** + * Keep track of the state of the Flash object. + * @private + */ + var _flashState = { + bridge: null, + version: "0.0.0", + pluginType: "unknown", + sandboxed: null, + disabled: null, + outdated: null, + insecure: null, + unavailable: null, + degraded: null, + deactivated: null, + overdue: null, + ready: null + }; + /** + * The minimum Flash Player version required to use ZeroClipboard completely. + * @readonly + * @private + */ + var _minimumFlashVersion = "11.0.0"; + /** + * The ZeroClipboard library version number, as reported by Flash, at the time the SWF was compiled. + */ + var _zcSwfVersion; + /** + * Keep track of all event listener registrations. + * @private + */ + var _handlers = {}; + /** + * Keep track of the currently activated element. + * @private + */ + var _currentElement; + /** + * Keep track of the element that was activated when a `copy` process started. + * @private + */ + var _copyTarget; + /** + * Keep track of data for the pending clipboard transaction. + * @private + */ + var _clipData = {}; + /** + * Keep track of data formats for the pending clipboard transaction. + * @private + */ + var _clipDataFormatMap = null; + /** + * Keep track of the Flash availability check timeout. + * @private + */ + var _flashCheckTimeout = 0; + /** + * Keep track of SWF network errors interval polling. + * @private + */ + var _swfFallbackCheckInterval = 0; + /** + * The `message` store for events + * @private + */ + var _eventMessages = { + ready: "Flash communication is established", + error: { + "flash-sandboxed": "Attempting to run Flash in a sandboxed iframe, which is impossible", + "flash-disabled": "Flash is disabled or not installed. May also be attempting to run Flash in a sandboxed iframe, which is impossible.", + "flash-outdated": "Flash is too outdated to support ZeroClipboard", + "flash-insecure": "Flash will be unable to communicate due to a protocol mismatch between your `swfPath` configuration and the page", + "flash-unavailable": "Flash is unable to communicate bidirectionally with JavaScript", + "flash-degraded": "Flash is unable to preserve data fidelity when communicating with JavaScript", + "flash-deactivated": "Flash is too outdated for your browser and/or is configured as click-to-activate.\nThis may also mean that the ZeroClipboard SWF object could not be loaded, so please check your `swfPath` configuration and/or network connectivity.\nMay also be attempting to run Flash in a sandboxed iframe, which is impossible.", + "flash-overdue": "Flash communication was established but NOT within the acceptable time limit", + "version-mismatch": "ZeroClipboard JS version number does not match ZeroClipboard SWF version number", + "clipboard-error": "At least one error was thrown while ZeroClipboard was attempting to inject your data into the clipboard", + "config-mismatch": "ZeroClipboard configuration does not match Flash's reality", + "swf-not-found": "The ZeroClipboard SWF object could not be loaded, so please check your `swfPath` configuration and/or network connectivity", + "browser-unsupported": "The browser does not support the required HTML DOM and JavaScript features" + } + }; + /** + * The `name`s of `error` events that can only occur is Flash has at least + * been able to load the SWF successfully. + * @private + */ + var _errorsThatOnlyOccurAfterFlashLoads = [ "flash-unavailable", "flash-degraded", "flash-overdue", "version-mismatch", "config-mismatch", "clipboard-error" ]; + /** + * The `name`s of `error` events that should likely result in the `_flashState` + * variable's property values being updated. + * @private + */ + var _flashStateErrorNames = [ "flash-sandboxed", "flash-disabled", "flash-outdated", "flash-insecure", "flash-unavailable", "flash-degraded", "flash-deactivated", "flash-overdue" ]; + /** + * A RegExp to match the `name` property of `error` events related to Flash. + * @private + */ + var _flashStateErrorNameMatchingRegex = new RegExp("^flash-(" + _flashStateErrorNames.map(function(errorName) { + return errorName.replace(/^flash-/, ""); + }).join("|") + ")$"); + /** + * A RegExp to match the `name` property of `error` events related to Flash, + * which is enabled. + * @private + */ + var _flashStateEnabledErrorNameMatchingRegex = new RegExp("^flash-(" + _flashStateErrorNames.filter(function(errorName) { + return errorName !== "flash-disabled"; + }).map(function(errorName) { + return errorName.replace(/^flash-/, ""); + }).join("|") + ")$"); + /** + * ZeroClipboard configuration defaults for the Core module. + * @private + */ + var _globalConfig = { + swfPath: _getDefaultSwfPath(), + trustedDomains: _window.location.host ? [ _window.location.host ] : [], + cacheBust: true, + forceEnhancedClipboard: false, + flashLoadTimeout: 3e4, + autoActivate: true, + bubbleEvents: true, + fixLineEndings: true, + containerId: "global-zeroclipboard-html-bridge", + containerClass: "global-zeroclipboard-container", + swfObjectId: "global-zeroclipboard-flash-bridge", + hoverClass: false, + activeClass: false, + forceHandCursor: false, + title: null, + zIndex: 999999999 + }; + /** + * The underlying implementation of `ZeroClipboard.config`. + * @private + */ + var _config = function(options) { + if (typeof options === "object" && options && !("length" in options)) { + _keys(options).forEach(function(prop) { + if (/^(?:forceHandCursor|title|zIndex|bubbleEvents|fixLineEndings)$/.test(prop)) { + _globalConfig[prop] = options[prop]; + } else if (_flashState.bridge == null) { + if (prop === "containerId" || prop === "swfObjectId") { + if (_isValidHtml4Id(options[prop])) { + _globalConfig[prop] = options[prop]; + } else { + throw new Error("The specified `" + prop + "` value is not valid as an HTML4 Element ID"); + } + } else { + _globalConfig[prop] = options[prop]; + } + } + }); + } + if (typeof options === "string" && options) { + if (_hasOwn.call(_globalConfig, options)) { + return _globalConfig[options]; + } + return; + } + return _deepCopy(_globalConfig); + }; + /** + * The underlying implementation of `ZeroClipboard.state`. + * @private + */ + var _state = function() { + _detectSandbox(); + return { + browser: _extend(_pick(_navigator, [ "userAgent", "platform", "appName", "appVersion" ]), { + isSupported: _isBrowserSupported() + }), + flash: _omit(_flashState, [ "bridge" ]), + zeroclipboard: { + version: ZeroClipboard.version, + config: ZeroClipboard.config() + } + }; + }; + /** + * Does this browser support all of the necessary DOM and JS features necessary? + * @private + */ + var _isBrowserSupported = function() { + return !!(_document.addEventListener && _window.Object.keys && _window.Array.prototype.map); + }; + /** + * The underlying implementation of `ZeroClipboard.isFlashUnusable`. + * @private + */ + var _isFlashUnusable = function() { + return !!(_flashState.sandboxed || _flashState.disabled || _flashState.outdated || _flashState.unavailable || _flashState.degraded || _flashState.deactivated); + }; + /** + * The underlying implementation of `ZeroClipboard.on`. + * @private + */ + var _on = function(eventType, listener) { + var i, len, events, added = {}; + if (typeof eventType === "string" && eventType) { + events = eventType.toLowerCase().split(/\s+/); + } else if (typeof eventType === "object" && eventType && !("length" in eventType) && typeof listener === "undefined") { + _keys(eventType).forEach(function(key) { + var listener = eventType[key]; + if (typeof listener === "function") { + ZeroClipboard.on(key, listener); + } + }); + } + if (events && events.length && listener) { + for (i = 0, len = events.length; i < len; i++) { + eventType = events[i].replace(/^on/, ""); + added[eventType] = true; + if (!_handlers[eventType]) { + _handlers[eventType] = []; + } + _handlers[eventType].push(listener); + } + if (added.ready && _flashState.ready) { + ZeroClipboard.emit({ + type: "ready" + }); + } + if (added.error) { + if (!_isBrowserSupported()) { + ZeroClipboard.emit({ + type: "error", + name: "browser-unsupported" + }); + } + for (i = 0, len = _flashStateErrorNames.length; i < len; i++) { + if (_flashState[_flashStateErrorNames[i].replace(/^flash-/, "")] === true) { + ZeroClipboard.emit({ + type: "error", + name: _flashStateErrorNames[i] + }); + break; + } + } + if (_zcSwfVersion !== undefined && ZeroClipboard.version !== _zcSwfVersion) { + ZeroClipboard.emit({ + type: "error", + name: "version-mismatch", + jsVersion: ZeroClipboard.version, + swfVersion: _zcSwfVersion + }); + } + } + } + return ZeroClipboard; + }; + /** + * The underlying implementation of `ZeroClipboard.off`. + * @private + */ + var _off = function(eventType, listener) { + var i, len, foundIndex, events, perEventHandlers; + if (arguments.length === 0) { + events = _keys(_handlers); + } else if (typeof eventType === "string" && eventType) { + events = eventType.toLowerCase().split(/\s+/); + } else if (typeof eventType === "object" && eventType && !("length" in eventType) && typeof listener === "undefined") { + _keys(eventType).forEach(function(key) { + var listener = eventType[key]; + if (typeof listener === "function") { + ZeroClipboard.off(key, listener); + } + }); + } + if (events && events.length) { + for (i = 0, len = events.length; i < len; i++) { + eventType = events[i].replace(/^on/, ""); + perEventHandlers = _handlers[eventType]; + if (perEventHandlers && perEventHandlers.length) { + if (listener) { + foundIndex = perEventHandlers.indexOf(listener); + while (foundIndex !== -1) { + perEventHandlers.splice(foundIndex, 1); + foundIndex = perEventHandlers.indexOf(listener, foundIndex); + } + } else { + perEventHandlers.length = 0; + } + } + } + } + return ZeroClipboard; + }; + /** + * The underlying implementation of `ZeroClipboard.handlers`. + * @private + */ + var _listeners = function(eventType) { + var copy; + if (typeof eventType === "string" && eventType) { + copy = _deepCopy(_handlers[eventType]) || null; + } else { + copy = _deepCopy(_handlers); + } + return copy; + }; + /** + * The underlying implementation of `ZeroClipboard.emit`. + * @private + */ + var _emit = function(event) { + var eventCopy, returnVal, tmp; + event = _createEvent(event); + if (!event) { + return; + } + if (_preprocessEvent(event)) { + return; + } + if (event.type === "ready" && _flashState.overdue === true) { + return ZeroClipboard.emit({ + type: "error", + name: "flash-overdue" + }); + } + eventCopy = _extend({}, event); + _dispatchCallbacks.call(this, eventCopy); + if (event.type === "copy") { + tmp = _mapClipDataToFlash(_clipData); + returnVal = tmp.data; + _clipDataFormatMap = tmp.formatMap; + } + return returnVal; + }; + /** + * Get the protocol of the configured SWF path. + * @private + */ + var _getSwfPathProtocol = function() { + var swfPath = _globalConfig.swfPath || "", swfPathFirstTwoChars = swfPath.slice(0, 2), swfProtocol = swfPath.slice(0, swfPath.indexOf("://") + 1); + return swfPathFirstTwoChars === "\\\\" ? "file:" : swfPathFirstTwoChars === "//" || swfProtocol === "" ? _window.location.protocol : swfProtocol; + }; + /** + * The underlying implementation of `ZeroClipboard.create`. + * @private + */ + var _create = function() { + var maxWait, swfProtocol, previousState = _flashState.sandboxed; + if (!_isBrowserSupported()) { + _flashState.ready = false; + ZeroClipboard.emit({ + type: "error", + name: "browser-unsupported" + }); + return; + } + _detectSandbox(); + if (typeof _flashState.ready !== "boolean") { + _flashState.ready = false; + } + if (_flashState.sandboxed !== previousState && _flashState.sandboxed === true) { + _flashState.ready = false; + ZeroClipboard.emit({ + type: "error", + name: "flash-sandboxed" + }); + } else if (!ZeroClipboard.isFlashUnusable() && _flashState.bridge === null) { + swfProtocol = _getSwfPathProtocol(); + if (swfProtocol && swfProtocol !== _window.location.protocol) { + ZeroClipboard.emit({ + type: "error", + name: "flash-insecure" + }); + } else { + maxWait = _globalConfig.flashLoadTimeout; + if (typeof maxWait === "number" && maxWait >= 0) { + _flashCheckTimeout = _setTimeout(function() { + if (typeof _flashState.deactivated !== "boolean") { + _flashState.deactivated = true; + } + if (_flashState.deactivated === true) { + ZeroClipboard.emit({ + type: "error", + name: "flash-deactivated" + }); + } + }, maxWait); + } + _flashState.overdue = false; + _embedSwf(); + } + } + }; + /** + * The underlying implementation of `ZeroClipboard.destroy`. + * @private + */ + var _destroy = function() { + ZeroClipboard.clearData(); + ZeroClipboard.blur(); + ZeroClipboard.emit("destroy"); + _unembedSwf(); + ZeroClipboard.off(); + }; + /** + * The underlying implementation of `ZeroClipboard.setData`. + * @private + */ + var _setData = function(format, data) { + var dataObj; + if (typeof format === "object" && format && typeof data === "undefined") { + dataObj = format; + ZeroClipboard.clearData(); + } else if (typeof format === "string" && format) { + dataObj = {}; + dataObj[format] = data; + } else { + return; + } + for (var dataFormat in dataObj) { + if (typeof dataFormat === "string" && dataFormat && _hasOwn.call(dataObj, dataFormat) && typeof dataObj[dataFormat] === "string" && dataObj[dataFormat]) { + _clipData[dataFormat] = _fixLineEndings(dataObj[dataFormat]); + } + } + }; + /** + * The underlying implementation of `ZeroClipboard.clearData`. + * @private + */ + var _clearData = function(format) { + if (typeof format === "undefined") { + _deleteOwnProperties(_clipData); + _clipDataFormatMap = null; + } else if (typeof format === "string" && _hasOwn.call(_clipData, format)) { + delete _clipData[format]; + } + }; + /** + * The underlying implementation of `ZeroClipboard.getData`. + * @private + */ + var _getData = function(format) { + if (typeof format === "undefined") { + return _deepCopy(_clipData); + } else if (typeof format === "string" && _hasOwn.call(_clipData, format)) { + return _clipData[format]; + } + }; + /** + * The underlying implementation of `ZeroClipboard.focus`/`ZeroClipboard.activate`. + * @private + */ + var _focus = function(element) { + if (!(element && element.nodeType === 1)) { + return; + } + if (_currentElement) { + _removeClass(_currentElement, _globalConfig.activeClass); + if (_currentElement !== element) { + _removeClass(_currentElement, _globalConfig.hoverClass); + } + } + _currentElement = element; + _addClass(element, _globalConfig.hoverClass); + var newTitle = element.getAttribute("title") || _globalConfig.title; + if (typeof newTitle === "string" && newTitle) { + var htmlBridge = _getHtmlBridge(_flashState.bridge); + if (htmlBridge) { + htmlBridge.setAttribute("title", newTitle); + } + } + var useHandCursor = _globalConfig.forceHandCursor === true || _getStyle(element, "cursor") === "pointer"; + _setHandCursor(useHandCursor); + _reposition(); + }; + /** + * The underlying implementation of `ZeroClipboard.blur`/`ZeroClipboard.deactivate`. + * @private + */ + var _blur = function() { + var htmlBridge = _getHtmlBridge(_flashState.bridge); + if (htmlBridge) { + htmlBridge.removeAttribute("title"); + htmlBridge.style.left = "0px"; + htmlBridge.style.top = "-9999px"; + htmlBridge.style.width = "1px"; + htmlBridge.style.height = "1px"; + } + if (_currentElement) { + _removeClass(_currentElement, _globalConfig.hoverClass); + _removeClass(_currentElement, _globalConfig.activeClass); + _currentElement = null; + } + }; + /** + * The underlying implementation of `ZeroClipboard.activeElement`. + * @private + */ + var _activeElement = function() { + return _currentElement || null; + }; + /** + * Check if a value is a valid HTML4 `ID` or `Name` token. + * @private + */ + var _isValidHtml4Id = function(id) { + return typeof id === "string" && id && /^[A-Za-z][A-Za-z0-9_:\-\.]*$/.test(id); + }; + /** + * Create or update an `event` object, based on the `eventType`. + * @private + */ + var _createEvent = function(event) { + var eventType; + if (typeof event === "string" && event) { + eventType = event; + event = {}; + } else if (typeof event === "object" && event && typeof event.type === "string" && event.type) { + eventType = event.type; + } + if (!eventType) { + return; + } + eventType = eventType.toLowerCase(); + if (!event.target && (/^(copy|aftercopy|_click)$/.test(eventType) || eventType === "error" && event.name === "clipboard-error")) { + event.target = _copyTarget; + } + _extend(event, { + type: eventType, + target: event.target || _currentElement || null, + relatedTarget: event.relatedTarget || null, + currentTarget: _flashState && _flashState.bridge || null, + timeStamp: event.timeStamp || _now() || null + }); + var msg = _eventMessages[event.type]; + if (event.type === "error" && event.name && msg) { + msg = msg[event.name]; + } + if (msg) { + event.message = msg; + } + if (event.type === "ready") { + _extend(event, { + target: null, + version: _flashState.version + }); + } + if (event.type === "error") { + if (_flashStateErrorNameMatchingRegex.test(event.name)) { + _extend(event, { + target: null, + minimumVersion: _minimumFlashVersion + }); + } + if (_flashStateEnabledErrorNameMatchingRegex.test(event.name)) { + _extend(event, { + version: _flashState.version + }); + } + if (event.name === "flash-insecure") { + _extend(event, { + pageProtocol: _window.location.protocol, + swfProtocol: _getSwfPathProtocol() + }); + } + } + if (event.type === "copy") { + event.clipboardData = { + setData: ZeroClipboard.setData, + clearData: ZeroClipboard.clearData + }; + } + if (event.type === "aftercopy") { + event = _mapClipResultsFromFlash(event, _clipDataFormatMap); + } + if (event.target && !event.relatedTarget) { + event.relatedTarget = _getRelatedTarget(event.target); + } + return _addMouseData(event); + }; + /** + * Get a relatedTarget from the target's `data-clipboard-target` attribute + * @private + */ + var _getRelatedTarget = function(targetEl) { + var relatedTargetId = targetEl && targetEl.getAttribute && targetEl.getAttribute("data-clipboard-target"); + return relatedTargetId ? _document.getElementById(relatedTargetId) : null; + }; + /** + * Add element and position data to `MouseEvent` instances + * @private + */ + var _addMouseData = function(event) { + if (event && /^_(?:click|mouse(?:over|out|down|up|move))$/.test(event.type)) { + var srcElement = event.target; + var fromElement = event.type === "_mouseover" && event.relatedTarget ? event.relatedTarget : undefined; + var toElement = event.type === "_mouseout" && event.relatedTarget ? event.relatedTarget : undefined; + var pos = _getElementPosition(srcElement); + var screenLeft = _window.screenLeft || _window.screenX || 0; + var screenTop = _window.screenTop || _window.screenY || 0; + var scrollLeft = _document.body.scrollLeft + _document.documentElement.scrollLeft; + var scrollTop = _document.body.scrollTop + _document.documentElement.scrollTop; + var pageX = pos.left + (typeof event._stageX === "number" ? event._stageX : 0); + var pageY = pos.top + (typeof event._stageY === "number" ? event._stageY : 0); + var clientX = pageX - scrollLeft; + var clientY = pageY - scrollTop; + var screenX = screenLeft + clientX; + var screenY = screenTop + clientY; + var moveX = typeof event.movementX === "number" ? event.movementX : 0; + var moveY = typeof event.movementY === "number" ? event.movementY : 0; + delete event._stageX; + delete event._stageY; + _extend(event, { + srcElement: srcElement, + fromElement: fromElement, + toElement: toElement, + screenX: screenX, + screenY: screenY, + pageX: pageX, + pageY: pageY, + clientX: clientX, + clientY: clientY, + x: clientX, + y: clientY, + movementX: moveX, + movementY: moveY, + offsetX: 0, + offsetY: 0, + layerX: 0, + layerY: 0 + }); + } + return event; + }; + /** + * Determine if an event's registered handlers should be execute synchronously or asynchronously. + * + * @returns {boolean} + * @private + */ + var _shouldPerformAsync = function(event) { + var eventType = event && typeof event.type === "string" && event.type || ""; + return !/^(?:(?:before)?copy|destroy)$/.test(eventType); + }; + /** + * Control if a callback should be executed asynchronously or not. + * + * @returns `undefined` + * @private + */ + var _dispatchCallback = function(func, context, args, async) { + if (async) { + _setTimeout(function() { + func.apply(context, args); + }, 0); + } else { + func.apply(context, args); + } + }; + /** + * Handle the actual dispatching of events to client instances. + * + * @returns `undefined` + * @private + */ + var _dispatchCallbacks = function(event) { + if (!(typeof event === "object" && event && event.type)) { + return; + } + var async = _shouldPerformAsync(event); + var wildcardTypeHandlers = _handlers["*"] || []; + var specificTypeHandlers = _handlers[event.type] || []; + var handlers = wildcardTypeHandlers.concat(specificTypeHandlers); + if (handlers && handlers.length) { + var i, len, func, context, eventCopy, originalContext = this; + for (i = 0, len = handlers.length; i < len; i++) { + func = handlers[i]; + context = originalContext; + if (typeof func === "string" && typeof _window[func] === "function") { + func = _window[func]; + } + if (typeof func === "object" && func && typeof func.handleEvent === "function") { + context = func; + func = func.handleEvent; + } + if (typeof func === "function") { + eventCopy = _extend({}, event); + _dispatchCallback(func, context, [ eventCopy ], async); + } + } + } + return this; + }; + /** + * Check an `error` event's `name` property to see if Flash has + * already loaded, which rules out possible `iframe` sandboxing. + * @private + */ + var _getSandboxStatusFromErrorEvent = function(event) { + var isSandboxed = null; + if (_pageIsFramed === false || event && event.type === "error" && event.name && _errorsThatOnlyOccurAfterFlashLoads.indexOf(event.name) !== -1) { + isSandboxed = false; + } + return isSandboxed; + }; + /** + * Preprocess any special behaviors, reactions, or state changes after receiving this event. + * Executes only once per event emitted, NOT once per client. + * @private + */ + var _preprocessEvent = function(event) { + var element = event.target || _currentElement || null; + var sourceIsSwf = event._source === "swf"; + delete event._source; + switch (event.type) { + case "error": + var isSandboxed = event.name === "flash-sandboxed" || _getSandboxStatusFromErrorEvent(event); + if (typeof isSandboxed === "boolean") { + _flashState.sandboxed = isSandboxed; + } + if (event.name === "browser-unsupported") { + _extend(_flashState, { + disabled: false, + outdated: false, + unavailable: false, + degraded: false, + deactivated: false, + overdue: false, + ready: false + }); + } else if (_flashStateErrorNames.indexOf(event.name) !== -1) { + _extend(_flashState, { + disabled: event.name === "flash-disabled", + outdated: event.name === "flash-outdated", + insecure: event.name === "flash-insecure", + unavailable: event.name === "flash-unavailable", + degraded: event.name === "flash-degraded", + deactivated: event.name === "flash-deactivated", + overdue: event.name === "flash-overdue", + ready: false + }); + } else if (event.name === "version-mismatch") { + _zcSwfVersion = event.swfVersion; + _extend(_flashState, { + disabled: false, + outdated: false, + insecure: false, + unavailable: false, + degraded: false, + deactivated: false, + overdue: false, + ready: false + }); + } + _clearTimeoutsAndPolling(); + break; + + case "ready": + _zcSwfVersion = event.swfVersion; + var wasDeactivated = _flashState.deactivated === true; + _extend(_flashState, { + sandboxed: false, + disabled: false, + outdated: false, + insecure: false, + unavailable: false, + degraded: false, + deactivated: false, + overdue: wasDeactivated, + ready: !wasDeactivated + }); + _clearTimeoutsAndPolling(); + break; + + case "beforecopy": + _copyTarget = element; + break; + + case "copy": + var textContent, htmlContent, targetEl = event.relatedTarget; + if (!(_clipData["text/html"] || _clipData["text/plain"]) && targetEl && (htmlContent = targetEl.value || targetEl.outerHTML || targetEl.innerHTML) && (textContent = targetEl.value || targetEl.textContent || targetEl.innerText)) { + event.clipboardData.clearData(); + event.clipboardData.setData("text/plain", textContent); + if (htmlContent !== textContent) { + event.clipboardData.setData("text/html", htmlContent); + } + } else if (!_clipData["text/plain"] && event.target && (textContent = event.target.getAttribute("data-clipboard-text"))) { + event.clipboardData.clearData(); + event.clipboardData.setData("text/plain", textContent); + } + break; + + case "aftercopy": + _queueEmitClipboardErrors(event); + ZeroClipboard.clearData(); + if (element && element !== _safeActiveElement() && element.focus) { + element.focus(); + } + break; + + case "_mouseover": + ZeroClipboard.focus(element); + if (_globalConfig.bubbleEvents === true && sourceIsSwf) { + if (element && element !== event.relatedTarget && !_containedBy(event.relatedTarget, element)) { + _fireMouseEvent(_extend({}, event, { + type: "mouseenter", + bubbles: false, + cancelable: false + })); + } + _fireMouseEvent(_extend({}, event, { + type: "mouseover" + })); + } + break; + + case "_mouseout": + ZeroClipboard.blur(); + if (_globalConfig.bubbleEvents === true && sourceIsSwf) { + if (element && element !== event.relatedTarget && !_containedBy(event.relatedTarget, element)) { + _fireMouseEvent(_extend({}, event, { + type: "mouseleave", + bubbles: false, + cancelable: false + })); + } + _fireMouseEvent(_extend({}, event, { + type: "mouseout" + })); + } + break; + + case "_mousedown": + _addClass(element, _globalConfig.activeClass); + if (_globalConfig.bubbleEvents === true && sourceIsSwf) { + _fireMouseEvent(_extend({}, event, { + type: event.type.slice(1) + })); + } + break; + + case "_mouseup": + _removeClass(element, _globalConfig.activeClass); + if (_globalConfig.bubbleEvents === true && sourceIsSwf) { + _fireMouseEvent(_extend({}, event, { + type: event.type.slice(1) + })); + } + break; + + case "_click": + _copyTarget = null; + if (_globalConfig.bubbleEvents === true && sourceIsSwf) { + _fireMouseEvent(_extend({}, event, { + type: event.type.slice(1) + })); + } + break; + + case "_mousemove": + if (_globalConfig.bubbleEvents === true && sourceIsSwf) { + _fireMouseEvent(_extend({}, event, { + type: event.type.slice(1) + })); + } + break; + } + if (/^_(?:click|mouse(?:over|out|down|up|move))$/.test(event.type)) { + return true; + } + }; + /** + * Check an "aftercopy" event for clipboard errors and emit a corresponding "error" event. + * @private + */ + var _queueEmitClipboardErrors = function(aftercopyEvent) { + if (aftercopyEvent.errors && aftercopyEvent.errors.length > 0) { + var errorEvent = _deepCopy(aftercopyEvent); + _extend(errorEvent, { + type: "error", + name: "clipboard-error" + }); + delete errorEvent.success; + _setTimeout(function() { + ZeroClipboard.emit(errorEvent); + }, 0); + } + }; + /** + * Dispatch a synthetic MouseEvent. + * + * @returns `undefined` + * @private + */ + var _fireMouseEvent = function(event) { + if (!(event && typeof event.type === "string" && event)) { + return; + } + var e, target = event.target || null, doc = target && target.ownerDocument || _document, defaults = { + view: doc.defaultView || _window, + canBubble: true, + cancelable: true, + detail: event.type === "click" ? 1 : 0, + button: typeof event.which === "number" ? event.which - 1 : typeof event.button === "number" ? event.button : doc.createEvent ? 0 : 1 + }, args = _extend(defaults, event); + if (!target) { + return; + } + if (doc.createEvent && target.dispatchEvent) { + args = [ args.type, args.canBubble, args.cancelable, args.view, args.detail, args.screenX, args.screenY, args.clientX, args.clientY, args.ctrlKey, args.altKey, args.shiftKey, args.metaKey, args.button, args.relatedTarget ]; + e = doc.createEvent("MouseEvents"); + if (e.initMouseEvent) { + e.initMouseEvent.apply(e, args); + e._source = "js"; + target.dispatchEvent(e); + } + } + }; + /** + * Continuously poll the DOM until either: + * (a) the fallback content becomes visible, or + * (b) we receive an event from SWF (handled elsewhere) + * + * IMPORTANT: + * This is NOT a necessary check but it can result in significantly faster + * detection of bad `swfPath` configuration and/or network/server issues [in + * supported browsers] than waiting for the entire `flashLoadTimeout` duration + * to elapse before detecting that the SWF cannot be loaded. The detection + * duration can be anywhere from 10-30 times faster [in supported browsers] by + * using this approach. + * + * @returns `undefined` + * @private + */ + var _watchForSwfFallbackContent = function() { + var maxWait = _globalConfig.flashLoadTimeout; + if (typeof maxWait === "number" && maxWait >= 0) { + var pollWait = Math.min(1e3, maxWait / 10); + var fallbackContentId = _globalConfig.swfObjectId + "_fallbackContent"; + _swfFallbackCheckInterval = _setInterval(function() { + var el = _document.getElementById(fallbackContentId); + if (_isElementVisible(el)) { + _clearTimeoutsAndPolling(); + _flashState.deactivated = null; + ZeroClipboard.emit({ + type: "error", + name: "swf-not-found" + }); + } + }, pollWait); + } + }; + /** + * Create the HTML bridge element to embed the Flash object into. + * @private + */ + var _createHtmlBridge = function() { + var container = _document.createElement("div"); + container.id = _globalConfig.containerId; + container.className = _globalConfig.containerClass; + container.style.position = "absolute"; + container.style.left = "0px"; + container.style.top = "-9999px"; + container.style.width = "1px"; + container.style.height = "1px"; + container.style.zIndex = "" + _getSafeZIndex(_globalConfig.zIndex); + return container; + }; + /** + * Get the HTML element container that wraps the Flash bridge object/element. + * @private + */ + var _getHtmlBridge = function(flashBridge) { + var htmlBridge = flashBridge && flashBridge.parentNode; + while (htmlBridge && htmlBridge.nodeName === "OBJECT" && htmlBridge.parentNode) { + htmlBridge = htmlBridge.parentNode; + } + return htmlBridge || null; + }; + /** + * + * @private + */ + var _escapeXmlValue = function(val) { + if (typeof val !== "string" || !val) { + return val; + } + return val.replace(/["&'<>]/g, function(chr) { + switch (chr) { + case '"': + return """; + + case "&": + return "&"; + + case "'": + return "'"; + + case "<": + return "<"; + + case ">": + return ">"; + + default: + return chr; + } + }); + }; + /** + * Create the SWF object. + * + * @returns The SWF object reference. + * @private + */ + var _embedSwf = function() { + var len, flashBridge = _flashState.bridge, container = _getHtmlBridge(flashBridge); + if (!flashBridge) { + var allowScriptAccess = _determineScriptAccess(_window.location.host, _globalConfig); + var allowNetworking = allowScriptAccess === "never" ? "none" : "all"; + var flashvars = _vars(_extend({ + jsVersion: ZeroClipboard.version + }, _globalConfig)); + var swfUrl = _globalConfig.swfPath + _cacheBust(_globalConfig.swfPath, _globalConfig); + if (_pageIsXhtml) { + swfUrl = _escapeXmlValue(swfUrl); + } + container = _createHtmlBridge(); + var divToBeReplaced = _document.createElement("div"); + container.appendChild(divToBeReplaced); + _document.body.appendChild(container); + var tmpDiv = _document.createElement("div"); + var usingActiveX = _flashState.pluginType === "activex"; + tmpDiv.innerHTML = '" + (usingActiveX ? '' : "") + '' + '' + '' + '' + '' + '
 
' + "
"; + flashBridge = tmpDiv.firstChild; + tmpDiv = null; + _unwrap(flashBridge).ZeroClipboard = ZeroClipboard; + container.replaceChild(flashBridge, divToBeReplaced); + _watchForSwfFallbackContent(); + } + if (!flashBridge) { + flashBridge = _document[_globalConfig.swfObjectId]; + if (flashBridge && (len = flashBridge.length)) { + flashBridge = flashBridge[len - 1]; + } + if (!flashBridge && container) { + flashBridge = container.firstChild; + } + } + _flashState.bridge = flashBridge || null; + return flashBridge; + }; + /** + * Destroy the SWF object. + * @private + */ + var _unembedSwf = function() { + var flashBridge = _flashState.bridge; + if (flashBridge) { + var htmlBridge = _getHtmlBridge(flashBridge); + if (htmlBridge) { + if (_flashState.pluginType === "activex" && "readyState" in flashBridge) { + flashBridge.style.display = "none"; + (function removeSwfFromIE() { + if (flashBridge.readyState === 4) { + for (var prop in flashBridge) { + if (typeof flashBridge[prop] === "function") { + flashBridge[prop] = null; + } + } + if (flashBridge.parentNode) { + flashBridge.parentNode.removeChild(flashBridge); + } + if (htmlBridge.parentNode) { + htmlBridge.parentNode.removeChild(htmlBridge); + } + } else { + _setTimeout(removeSwfFromIE, 10); + } + })(); + } else { + if (flashBridge.parentNode) { + flashBridge.parentNode.removeChild(flashBridge); + } + if (htmlBridge.parentNode) { + htmlBridge.parentNode.removeChild(htmlBridge); + } + } + } + _clearTimeoutsAndPolling(); + _flashState.ready = null; + _flashState.bridge = null; + _flashState.deactivated = null; + _flashState.insecure = null; + _zcSwfVersion = undefined; + } + }; + /** + * Map the data format names of the "clipData" to Flash-friendly names. + * + * @returns A new transformed object. + * @private + */ + var _mapClipDataToFlash = function(clipData) { + var newClipData = {}, formatMap = {}; + if (!(typeof clipData === "object" && clipData)) { + return; + } + for (var dataFormat in clipData) { + if (dataFormat && _hasOwn.call(clipData, dataFormat) && typeof clipData[dataFormat] === "string" && clipData[dataFormat]) { + switch (dataFormat.toLowerCase()) { + case "text/plain": + case "text": + case "air:text": + case "flash:text": + newClipData.text = clipData[dataFormat]; + formatMap.text = dataFormat; + break; + + case "text/html": + case "html": + case "air:html": + case "flash:html": + newClipData.html = clipData[dataFormat]; + formatMap.html = dataFormat; + break; + + case "application/rtf": + case "text/rtf": + case "rtf": + case "richtext": + case "air:rtf": + case "flash:rtf": + newClipData.rtf = clipData[dataFormat]; + formatMap.rtf = dataFormat; + break; + + default: + break; + } + } + } + return { + data: newClipData, + formatMap: formatMap + }; + }; + /** + * Map the data format names from Flash-friendly names back to their original "clipData" names (via a format mapping). + * + * @returns A new transformed object. + * @private + */ + var _mapClipResultsFromFlash = function(clipResults, formatMap) { + if (!(typeof clipResults === "object" && clipResults && typeof formatMap === "object" && formatMap)) { + return clipResults; + } + var newResults = {}; + for (var prop in clipResults) { + if (_hasOwn.call(clipResults, prop)) { + if (prop === "errors") { + newResults[prop] = clipResults[prop] ? clipResults[prop].slice() : []; + for (var i = 0, len = newResults[prop].length; i < len; i++) { + newResults[prop][i].format = formatMap[newResults[prop][i].format]; + } + } else if (prop !== "success" && prop !== "data") { + newResults[prop] = clipResults[prop]; + } else { + newResults[prop] = {}; + var tmpHash = clipResults[prop]; + for (var dataFormat in tmpHash) { + if (dataFormat && _hasOwn.call(tmpHash, dataFormat) && _hasOwn.call(formatMap, dataFormat)) { + newResults[prop][formatMap[dataFormat]] = tmpHash[dataFormat]; + } + } + } + } + } + return newResults; + }; + /** + * Will look at a path, and will create a "?noCache={time}" or "&noCache={time}" + * query param string to return. Does NOT append that string to the original path. + * This is useful because ExternalInterface often breaks when a Flash SWF is cached. + * + * @returns The `noCache` query param with necessary "?"/"&" prefix. + * @private + */ + var _cacheBust = function(path, options) { + var cacheBust = options == null || options && options.cacheBust === true; + if (cacheBust) { + return (path.indexOf("?") === -1 ? "?" : "&") + "noCache=" + _now(); + } else { + return ""; + } + }; + /** + * Creates a query string for the FlashVars param. + * Does NOT include the cache-busting query param. + * + * @returns FlashVars query string + * @private + */ + var _vars = function(options) { + var i, len, domain, domains, str = "", trustedOriginsExpanded = []; + if (options.trustedDomains) { + if (typeof options.trustedDomains === "string") { + domains = [ options.trustedDomains ]; + } else if (typeof options.trustedDomains === "object" && "length" in options.trustedDomains) { + domains = options.trustedDomains; + } + } + if (domains && domains.length) { + for (i = 0, len = domains.length; i < len; i++) { + if (_hasOwn.call(domains, i) && domains[i] && typeof domains[i] === "string") { + domain = _extractDomain(domains[i]); + if (!domain) { + continue; + } + if (domain === "*") { + trustedOriginsExpanded.length = 0; + trustedOriginsExpanded.push(domain); + break; + } + trustedOriginsExpanded.push.apply(trustedOriginsExpanded, [ domain, "//" + domain, _window.location.protocol + "//" + domain ]); + } + } + } + if (trustedOriginsExpanded.length) { + str += "trustedOrigins=" + _encodeURIComponent(trustedOriginsExpanded.join(",")); + } + if (options.forceEnhancedClipboard === true) { + str += (str ? "&" : "") + "forceEnhancedClipboard=true"; + } + if (typeof options.swfObjectId === "string" && options.swfObjectId) { + str += (str ? "&" : "") + "swfObjectId=" + _encodeURIComponent(options.swfObjectId); + } + if (typeof options.jsVersion === "string" && options.jsVersion) { + str += (str ? "&" : "") + "jsVersion=" + _encodeURIComponent(options.jsVersion); + } + return str; + }; + /** + * Extract the domain (e.g. "github.com") from an origin (e.g. "https://github.com") or + * URL (e.g. "https://github.com/zeroclipboard/zeroclipboard/"). + * + * @returns the domain + * @private + */ + var _extractDomain = function(originOrUrl) { + if (originOrUrl == null || originOrUrl === "") { + return null; + } + originOrUrl = originOrUrl.replace(/^\s+|\s+$/g, ""); + if (originOrUrl === "") { + return null; + } + var protocolIndex = originOrUrl.indexOf("//"); + originOrUrl = protocolIndex === -1 ? originOrUrl : originOrUrl.slice(protocolIndex + 2); + var pathIndex = originOrUrl.indexOf("/"); + originOrUrl = pathIndex === -1 ? originOrUrl : protocolIndex === -1 || pathIndex === 0 ? null : originOrUrl.slice(0, pathIndex); + if (originOrUrl && originOrUrl.slice(-4).toLowerCase() === ".swf") { + return null; + } + return originOrUrl || null; + }; + /** + * Set `allowScriptAccess` based on `trustedDomains` and `window.location.host` vs. `swfPath`. + * + * @returns The appropriate script access level. + * @private + */ + var _determineScriptAccess = function() { + var _extractAllDomains = function(origins) { + var i, len, tmp, resultsArray = []; + if (typeof origins === "string") { + origins = [ origins ]; + } + if (!(typeof origins === "object" && origins && typeof origins.length === "number")) { + return resultsArray; + } + for (i = 0, len = origins.length; i < len; i++) { + if (_hasOwn.call(origins, i) && (tmp = _extractDomain(origins[i]))) { + if (tmp === "*") { + resultsArray.length = 0; + resultsArray.push("*"); + break; + } + if (resultsArray.indexOf(tmp) === -1) { + resultsArray.push(tmp); + } + } + } + return resultsArray; + }; + return function(currentDomain, configOptions) { + var swfDomain = _extractDomain(configOptions.swfPath); + if (swfDomain === null) { + swfDomain = currentDomain; + } + var trustedDomains = _extractAllDomains(configOptions.trustedDomains); + var len = trustedDomains.length; + if (len > 0) { + if (len === 1 && trustedDomains[0] === "*") { + return "always"; + } + if (trustedDomains.indexOf(currentDomain) !== -1) { + if (len === 1 && currentDomain === swfDomain) { + return "sameDomain"; + } + return "always"; + } + } + return "never"; + }; + }(); + /** + * Get the currently active/focused DOM element. + * + * @returns the currently active/focused element, or `null` + * @private + */ + var _safeActiveElement = function() { + try { + return _document.activeElement; + } catch (err) { + return null; + } + }; + /** + * Add a class to an element, if it doesn't already have it. + * + * @returns The element, with its new class added. + * @private + */ + var _addClass = function(element, value) { + var c, cl, className, classNames = []; + if (typeof value === "string" && value) { + classNames = value.split(/\s+/); + } + if (element && element.nodeType === 1 && classNames.length > 0) { + className = (" " + (element.className || "") + " ").replace(/[\t\r\n\f]/g, " "); + for (c = 0, cl = classNames.length; c < cl; c++) { + if (className.indexOf(" " + classNames[c] + " ") === -1) { + className += classNames[c] + " "; + } + } + className = className.replace(/^\s+|\s+$/g, ""); + if (className !== element.className) { + element.className = className; + } + } + return element; + }; + /** + * Remove a class from an element, if it has it. + * + * @returns The element, with its class removed. + * @private + */ + var _removeClass = function(element, value) { + var c, cl, className, classNames = []; + if (typeof value === "string" && value) { + classNames = value.split(/\s+/); + } + if (element && element.nodeType === 1 && classNames.length > 0) { + if (element.className) { + className = (" " + element.className + " ").replace(/[\t\r\n\f]/g, " "); + for (c = 0, cl = classNames.length; c < cl; c++) { + className = className.replace(" " + classNames[c] + " ", " "); + } + className = className.replace(/^\s+|\s+$/g, ""); + if (className !== element.className) { + element.className = className; + } + } + } + return element; + }; + /** + * Attempt to interpret the element's CSS styling. If `prop` is `"cursor"`, + * then we assume that it should be a hand ("pointer") cursor if the element + * is an anchor element ("a" tag). + * + * @returns The computed style property. + * @private + */ + var _getStyle = function(el, prop) { + var value = _getComputedStyle(el, null).getPropertyValue(prop); + if (prop === "cursor") { + if (!value || value === "auto") { + if (el.nodeName === "A") { + return "pointer"; + } + } + } + return value; + }; + /** + * Get the absolutely positioned coordinates of a DOM element. + * + * @returns Object containing the element's position, width, and height. + * @private + */ + var _getElementPosition = function(el) { + var pos = { + left: 0, + top: 0, + width: 0, + height: 0 + }; + if (el.getBoundingClientRect) { + var elRect = el.getBoundingClientRect(); + var pageXOffset = _window.pageXOffset; + var pageYOffset = _window.pageYOffset; + var leftBorderWidth = _document.documentElement.clientLeft || 0; + var topBorderWidth = _document.documentElement.clientTop || 0; + var leftBodyOffset = 0; + var topBodyOffset = 0; + if (_getStyle(_document.body, "position") === "relative") { + var bodyRect = _document.body.getBoundingClientRect(); + var htmlRect = _document.documentElement.getBoundingClientRect(); + leftBodyOffset = bodyRect.left - htmlRect.left || 0; + topBodyOffset = bodyRect.top - htmlRect.top || 0; + } + pos.left = elRect.left + pageXOffset - leftBorderWidth - leftBodyOffset; + pos.top = elRect.top + pageYOffset - topBorderWidth - topBodyOffset; + pos.width = "width" in elRect ? elRect.width : elRect.right - elRect.left; + pos.height = "height" in elRect ? elRect.height : elRect.bottom - elRect.top; + } + return pos; + }; + /** + * Determine is an element is visible somewhere within the document (page). + * + * @returns Boolean + * @private + */ + var _isElementVisible = function(el) { + if (!el) { + return false; + } + var styles = _getComputedStyle(el, null); + if (!styles) { + return false; + } + var hasCssHeight = _parseFloat(styles.height) > 0; + var hasCssWidth = _parseFloat(styles.width) > 0; + var hasCssTop = _parseFloat(styles.top) >= 0; + var hasCssLeft = _parseFloat(styles.left) >= 0; + var cssKnows = hasCssHeight && hasCssWidth && hasCssTop && hasCssLeft; + var rect = cssKnows ? null : _getElementPosition(el); + var isVisible = styles.display !== "none" && styles.visibility !== "collapse" && (cssKnows || !!rect && (hasCssHeight || rect.height > 0) && (hasCssWidth || rect.width > 0) && (hasCssTop || rect.top >= 0) && (hasCssLeft || rect.left >= 0)); + return isVisible; + }; + /** + * Clear all existing timeouts and interval polling delegates. + * + * @returns `undefined` + * @private + */ + var _clearTimeoutsAndPolling = function() { + _clearTimeout(_flashCheckTimeout); + _flashCheckTimeout = 0; + _clearInterval(_swfFallbackCheckInterval); + _swfFallbackCheckInterval = 0; + }; + /** + * Reposition the Flash object to cover the currently activated element. + * + * @returns `undefined` + * @private + */ + var _reposition = function() { + var htmlBridge; + if (_currentElement && (htmlBridge = _getHtmlBridge(_flashState.bridge))) { + var pos = _getElementPosition(_currentElement); + _extend(htmlBridge.style, { + width: pos.width + "px", + height: pos.height + "px", + top: pos.top + "px", + left: pos.left + "px", + zIndex: "" + _getSafeZIndex(_globalConfig.zIndex) + }); + } + }; + /** + * Sends a signal to the Flash object to display the hand cursor if `true`. + * + * @returns `undefined` + * @private + */ + var _setHandCursor = function(enabled) { + if (_flashState.ready === true) { + if (_flashState.bridge && typeof _flashState.bridge.setHandCursor === "function") { + _flashState.bridge.setHandCursor(enabled); + } else { + _flashState.ready = false; + } + } + }; + /** + * Get a safe value for `zIndex` + * + * @returns an integer, or "auto" + * @private + */ + var _getSafeZIndex = function(val) { + if (/^(?:auto|inherit)$/.test(val)) { + return val; + } + var zIndex; + if (typeof val === "number" && !_isNaN(val)) { + zIndex = val; + } else if (typeof val === "string") { + zIndex = _getSafeZIndex(_parseInt(val, 10)); + } + return typeof zIndex === "number" ? zIndex : "auto"; + }; + /** + * Ensure OS-compliant line endings, i.e. "\r\n" on Windows, "\n" elsewhere + * + * @returns string + * @private + */ + var _fixLineEndings = function(content) { + var replaceRegex = /(\r\n|\r|\n)/g; + if (typeof content === "string" && _globalConfig.fixLineEndings === true) { + if (_isWindows()) { + if (/((^|[^\r])\n|\r([^\n]|$))/.test(content)) { + content = content.replace(replaceRegex, "\r\n"); + } + } else if (/\r/.test(content)) { + content = content.replace(replaceRegex, "\n"); + } + } + return content; + }; + /** + * Attempt to detect if ZeroClipboard is executing inside of a sandboxed iframe. + * If it is, Flash Player cannot be used, so ZeroClipboard is dead in the water. + * + * @see {@link http://lists.w3.org/Archives/Public/public-whatwg-archive/2014Dec/0002.html} + * @see {@link https://github.com/zeroclipboard/zeroclipboard/issues/511} + * @see {@link http://zeroclipboard.org/test-iframes.html} + * + * @returns `true` (is sandboxed), `false` (is not sandboxed), or `null` (uncertain) + * @private + */ + var _detectSandbox = function(doNotReassessFlashSupport) { + var effectiveScriptOrigin, frame, frameError, previousState = _flashState.sandboxed, isSandboxed = null; + doNotReassessFlashSupport = doNotReassessFlashSupport === true; + if (_pageIsFramed === false) { + isSandboxed = false; + } else { + try { + frame = window.frameElement || null; + } catch (e) { + frameError = { + name: e.name, + message: e.message + }; + } + if (frame && frame.nodeType === 1 && frame.nodeName === "IFRAME") { + try { + isSandboxed = frame.hasAttribute("sandbox"); + } catch (e) { + isSandboxed = null; + } + } else { + try { + effectiveScriptOrigin = document.domain || null; + } catch (e) { + effectiveScriptOrigin = null; + } + if (effectiveScriptOrigin === null || frameError && frameError.name === "SecurityError" && /(^|[\s\(\[@])sandbox(es|ed|ing|[\s\.,!\)\]@]|$)/.test(frameError.message.toLowerCase())) { + isSandboxed = true; + } + } + } + _flashState.sandboxed = isSandboxed; + if (previousState !== isSandboxed && !doNotReassessFlashSupport) { + _detectFlashSupport(_ActiveXObject); + } + return isSandboxed; + }; + /** + * Detect the Flash Player status, version, and plugin type. + * + * @see {@link https://code.google.com/p/doctype-mirror/wiki/ArticleDetectFlash#The_code} + * @see {@link http://stackoverflow.com/questions/12866060/detecting-pepper-ppapi-flash-with-javascript} + * + * @returns `undefined` + * @private + */ + var _detectFlashSupport = function(ActiveXObject) { + var plugin, ax, mimeType, hasFlash = false, isActiveX = false, isPPAPI = false, flashVersion = ""; + /** + * Derived from Apple's suggested sniffer. + * @param {String} desc e.g. "Shockwave Flash 7.0 r61" + * @returns {String} "7.0.61" + * @private + */ + function parseFlashVersion(desc) { + var matches = desc.match(/[\d]+/g); + matches.length = 3; + return matches.join("."); + } + function isPepperFlash(flashPlayerFileName) { + return !!flashPlayerFileName && (flashPlayerFileName = flashPlayerFileName.toLowerCase()) && (/^(pepflashplayer\.dll|libpepflashplayer\.so|pepperflashplayer\.plugin)$/.test(flashPlayerFileName) || flashPlayerFileName.slice(-13) === "chrome.plugin"); + } + function inspectPlugin(plugin) { + if (plugin) { + hasFlash = true; + if (plugin.version) { + flashVersion = parseFlashVersion(plugin.version); + } + if (!flashVersion && plugin.description) { + flashVersion = parseFlashVersion(plugin.description); + } + if (plugin.filename) { + isPPAPI = isPepperFlash(plugin.filename); + } + } + } + if (_navigator.plugins && _navigator.plugins.length) { + plugin = _navigator.plugins["Shockwave Flash"]; + inspectPlugin(plugin); + if (_navigator.plugins["Shockwave Flash 2.0"]) { + hasFlash = true; + flashVersion = "2.0.0.11"; + } + } else if (_navigator.mimeTypes && _navigator.mimeTypes.length) { + mimeType = _navigator.mimeTypes["application/x-shockwave-flash"]; + plugin = mimeType && mimeType.enabledPlugin; + inspectPlugin(plugin); + } else if (typeof ActiveXObject !== "undefined") { + isActiveX = true; + try { + ax = new ActiveXObject("ShockwaveFlash.ShockwaveFlash.7"); + hasFlash = true; + flashVersion = parseFlashVersion(ax.GetVariable("$version")); + } catch (e1) { + try { + ax = new ActiveXObject("ShockwaveFlash.ShockwaveFlash.6"); + hasFlash = true; + flashVersion = "6.0.21"; + } catch (e2) { + try { + ax = new ActiveXObject("ShockwaveFlash.ShockwaveFlash"); + hasFlash = true; + flashVersion = parseFlashVersion(ax.GetVariable("$version")); + } catch (e3) { + isActiveX = false; + } + } + } + } + _flashState.disabled = hasFlash !== true; + _flashState.outdated = flashVersion && _parseFloat(flashVersion) < _parseFloat(_minimumFlashVersion); + _flashState.version = flashVersion || "0.0.0"; + _flashState.pluginType = isPPAPI ? "pepper" : isActiveX ? "activex" : hasFlash ? "netscape" : "unknown"; + }; + /** + * Invoke the Flash detection algorithms immediately upon inclusion so we're not waiting later. + */ + _detectFlashSupport(_ActiveXObject); + /** + * Always assess the `sandboxed` state of the page at important Flash-related moments. + */ + _detectSandbox(true); + /** + * A shell constructor for `ZeroClipboard` client instances. + * + * @constructor + */ + var ZeroClipboard = function() { + if (!(this instanceof ZeroClipboard)) { + return new ZeroClipboard(); + } + if (typeof ZeroClipboard._createClient === "function") { + ZeroClipboard._createClient.apply(this, _args(arguments)); + } + }; + /** + * The ZeroClipboard library's version number. + * + * @static + * @readonly + * @property {string} + */ + ZeroClipboard.version = "2.4.0-beta.1"; + /** + * Update or get a copy of the ZeroClipboard global configuration. + * Returns a copy of the current/updated configuration. + * + * @returns Object + * @static + */ + ZeroClipboard.config = function() { + return _config.apply(this, _args(arguments)); + }; + /** + * Diagnostic method that describes the state of the browser, Flash Player, and ZeroClipboard. + * + * @returns Object + * @static + */ + ZeroClipboard.state = function() { + return _state.apply(this, _args(arguments)); + }; + /** + * Check if Flash is unusable for any reason: disabled, outdated, deactivated, etc. + * + * @returns Boolean + * @static + */ + ZeroClipboard.isFlashUnusable = function() { + return _isFlashUnusable.apply(this, _args(arguments)); + }; + /** + * Register an event listener. + * + * @returns `ZeroClipboard` + * @static + */ + ZeroClipboard.on = function() { + return _on.apply(this, _args(arguments)); + }; + /** + * Unregister an event listener. + * If no `listener` function/object is provided, it will unregister all listeners for the provided `eventType`. + * If no `eventType` is provided, it will unregister all listeners for every event type. + * + * @returns `ZeroClipboard` + * @static + */ + ZeroClipboard.off = function() { + return _off.apply(this, _args(arguments)); + }; + /** + * Retrieve event listeners for an `eventType`. + * If no `eventType` is provided, it will retrieve all listeners for every event type. + * + * @returns array of listeners for the `eventType`; if no `eventType`, then a map/hash object of listeners for all event types; or `null` + */ + ZeroClipboard.handlers = function() { + return _listeners.apply(this, _args(arguments)); + }; + /** + * Event emission receiver from the Flash object, forwarding to any registered JavaScript event listeners. + * + * @returns For the "copy" event, returns the Flash-friendly "clipData" object; otherwise `undefined`. + * @static + */ + ZeroClipboard.emit = function() { + return _emit.apply(this, _args(arguments)); + }; + /** + * Create and embed the Flash object. + * + * @returns The Flash object + * @static + */ + ZeroClipboard.create = function() { + return _create.apply(this, _args(arguments)); + }; + /** + * Self-destruct and clean up everything, including the embedded Flash object. + * + * @returns `undefined` + * @static + */ + ZeroClipboard.destroy = function() { + return _destroy.apply(this, _args(arguments)); + }; + /** + * Set the pending data for clipboard injection. + * + * @returns `undefined` + * @static + */ + ZeroClipboard.setData = function() { + return _setData.apply(this, _args(arguments)); + }; + /** + * Clear the pending data for clipboard injection. + * If no `format` is provided, all pending data formats will be cleared. + * + * @returns `undefined` + * @static + */ + ZeroClipboard.clearData = function() { + return _clearData.apply(this, _args(arguments)); + }; + /** + * Get a copy of the pending data for clipboard injection. + * If no `format` is provided, a copy of ALL pending data formats will be returned. + * + * @returns `String` or `Object` + * @static + */ + ZeroClipboard.getData = function() { + return _getData.apply(this, _args(arguments)); + }; + /** + * Sets the current HTML object that the Flash object should overlay. This will put the global + * Flash object on top of the current element; depending on the setup, this may also set the + * pending clipboard text data as well as the Flash object's wrapping element's title attribute + * based on the underlying HTML element and ZeroClipboard configuration. + * + * @returns `undefined` + * @static + */ + ZeroClipboard.focus = ZeroClipboard.activate = function() { + return _focus.apply(this, _args(arguments)); + }; + /** + * Un-overlays the Flash object. This will put the global Flash object off-screen; depending on + * the setup, this may also unset the Flash object's wrapping element's title attribute based on + * the underlying HTML element and ZeroClipboard configuration. + * + * @returns `undefined` + * @static + */ + ZeroClipboard.blur = ZeroClipboard.deactivate = function() { + return _blur.apply(this, _args(arguments)); + }; + /** + * Returns the currently focused/"activated" HTML element that the Flash object is wrapping. + * + * @returns `HTMLElement` or `null` + * @static + */ + ZeroClipboard.activeElement = function() { + return _activeElement.apply(this, _args(arguments)); + }; + /** + * Keep track of the ZeroClipboard client instance counter. + */ + var _clientIdCounter = 0; + /** + * Keep track of the state of the client instances. + * + * Entry structure: + * _clientMeta[client.id] = { + * instance: client, + * elements: [], + * handlers: {}, + * coreWildcardHandler: function(event) { return client.emit(event); } + * }; + */ + var _clientMeta = {}; + /** + * Keep track of the ZeroClipboard clipped elements counter. + */ + var _elementIdCounter = 0; + /** + * Keep track of the state of the clipped element relationships to clients. + * + * Entry structure: + * _elementMeta[element.zcClippingId] = [client1.id, client2.id]; + */ + var _elementMeta = {}; + /** + * Keep track of the state of the mouse event handlers for clipped elements. + * + * Entry structure: + * _mouseHandlers[element.zcClippingId] = { + * mouseover: function(event) {}, + * mouseout: function(event) {}, + * mouseenter: function(event) {}, + * mouseleave: function(event) {}, + * mousemove: function(event) {} + * }; + */ + var _mouseHandlers = {}; + /** + * Extending the ZeroClipboard configuration defaults for the Client module. + */ + _extend(_globalConfig, { + autoActivate: true + }); + /** + * The real constructor for `ZeroClipboard` client instances. + * @private + */ + var _clientConstructor = function(elements) { + var meta, client = this; + client.id = "" + _clientIdCounter++; + meta = { + instance: client, + elements: [], + handlers: {}, + coreWildcardHandler: function(event) { + return client.emit(event); + } + }; + _clientMeta[client.id] = meta; + if (elements) { + client.clip(elements); + } + ZeroClipboard.on("*", meta.coreWildcardHandler); + ZeroClipboard.on("destroy", function() { + client.destroy(); + }); + ZeroClipboard.create(); + }; + /** + * The underlying implementation of `ZeroClipboard.Client.prototype.on`. + * @private + */ + var _clientOn = function(eventType, listener) { + var i, len, events, added = {}, client = this, meta = _clientMeta[client.id], handlers = meta && meta.handlers; + if (!meta) { + throw new Error("Attempted to add new listener(s) to a destroyed ZeroClipboard client instance"); + } + if (typeof eventType === "string" && eventType) { + events = eventType.toLowerCase().split(/\s+/); + } else if (typeof eventType === "object" && eventType && !("length" in eventType) && typeof listener === "undefined") { + _keys(eventType).forEach(function(key) { + var listener = eventType[key]; + if (typeof listener === "function") { + client.on(key, listener); + } + }); + } + if (events && events.length && listener) { + for (i = 0, len = events.length; i < len; i++) { + eventType = events[i].replace(/^on/, ""); + added[eventType] = true; + if (!handlers[eventType]) { + handlers[eventType] = []; + } + handlers[eventType].push(listener); + } + if (added.ready && _flashState.ready) { + this.emit({ + type: "ready", + client: this + }); + } + if (added.error) { + for (i = 0, len = _flashStateErrorNames.length; i < len; i++) { + if (_flashState[_flashStateErrorNames[i].replace(/^flash-/, "")]) { + this.emit({ + type: "error", + name: _flashStateErrorNames[i], + client: this + }); + break; + } + } + if (_zcSwfVersion !== undefined && ZeroClipboard.version !== _zcSwfVersion) { + this.emit({ + type: "error", + name: "version-mismatch", + jsVersion: ZeroClipboard.version, + swfVersion: _zcSwfVersion + }); + } + } + } + return client; + }; + /** + * The underlying implementation of `ZeroClipboard.Client.prototype.off`. + * @private + */ + var _clientOff = function(eventType, listener) { + var i, len, foundIndex, events, perEventHandlers, client = this, meta = _clientMeta[client.id], handlers = meta && meta.handlers; + if (!handlers) { + return client; + } + if (arguments.length === 0) { + events = _keys(handlers); + } else if (typeof eventType === "string" && eventType) { + events = eventType.split(/\s+/); + } else if (typeof eventType === "object" && eventType && !("length" in eventType) && typeof listener === "undefined") { + _keys(eventType).forEach(function(key) { + var listener = eventType[key]; + if (typeof listener === "function") { + client.off(key, listener); + } + }); + } + if (events && events.length) { + for (i = 0, len = events.length; i < len; i++) { + eventType = events[i].toLowerCase().replace(/^on/, ""); + perEventHandlers = handlers[eventType]; + if (perEventHandlers && perEventHandlers.length) { + if (listener) { + foundIndex = perEventHandlers.indexOf(listener); + while (foundIndex !== -1) { + perEventHandlers.splice(foundIndex, 1); + foundIndex = perEventHandlers.indexOf(listener, foundIndex); + } + } else { + perEventHandlers.length = 0; + } + } + } + } + return client; + }; + /** + * The underlying implementation of `ZeroClipboard.Client.prototype.handlers`. + * @private + */ + var _clientListeners = function(eventType) { + var copy = null, handlers = _clientMeta[this.id] && _clientMeta[this.id].handlers; + if (handlers) { + if (typeof eventType === "string" && eventType) { + copy = handlers[eventType] ? handlers[eventType].slice(0) : []; + } else { + copy = _deepCopy(handlers); + } + } + return copy; + }; + /** + * The underlying implementation of `ZeroClipboard.Client.prototype.emit`. + * @private + */ + var _clientEmit = function(event) { + var eventCopy, client = this; + if (_clientShouldEmit.call(client, event)) { + if (typeof event === "object" && event && typeof event.type === "string" && event.type) { + event = _extend({}, event); + } + eventCopy = _extend({}, _createEvent(event), { + client: client + }); + _clientDispatchCallbacks.call(client, eventCopy); + } + return client; + }; + /** + * The underlying implementation of `ZeroClipboard.Client.prototype.clip`. + * @private + */ + var _clientClip = function(elements) { + if (!_clientMeta[this.id]) { + throw new Error("Attempted to clip element(s) to a destroyed ZeroClipboard client instance"); + } + elements = _prepClip(elements); + for (var i = 0; i < elements.length; i++) { + if (_hasOwn.call(elements, i) && elements[i] && elements[i].nodeType === 1) { + if (!elements[i].zcClippingId) { + elements[i].zcClippingId = "zcClippingId_" + _elementIdCounter++; + _elementMeta[elements[i].zcClippingId] = [ this.id ]; + if (_globalConfig.autoActivate === true) { + _addMouseHandlers(elements[i]); + } + } else if (_elementMeta[elements[i].zcClippingId].indexOf(this.id) === -1) { + _elementMeta[elements[i].zcClippingId].push(this.id); + } + var clippedElements = _clientMeta[this.id] && _clientMeta[this.id].elements; + if (clippedElements.indexOf(elements[i]) === -1) { + clippedElements.push(elements[i]); + } + } + } + return this; + }; + /** + * The underlying implementation of `ZeroClipboard.Client.prototype.unclip`. + * @private + */ + var _clientUnclip = function(elements) { + var meta = _clientMeta[this.id]; + if (!meta) { + return this; + } + var clippedElements = meta.elements; + var arrayIndex; + if (typeof elements === "undefined") { + elements = clippedElements.slice(0); + } else { + elements = _prepClip(elements); + } + for (var i = elements.length; i--; ) { + if (_hasOwn.call(elements, i) && elements[i] && elements[i].nodeType === 1) { + arrayIndex = 0; + while ((arrayIndex = clippedElements.indexOf(elements[i], arrayIndex)) !== -1) { + clippedElements.splice(arrayIndex, 1); + } + var clientIds = _elementMeta[elements[i].zcClippingId]; + if (clientIds) { + arrayIndex = 0; + while ((arrayIndex = clientIds.indexOf(this.id, arrayIndex)) !== -1) { + clientIds.splice(arrayIndex, 1); + } + if (clientIds.length === 0) { + if (_globalConfig.autoActivate === true) { + _removeMouseHandlers(elements[i]); + } + delete elements[i].zcClippingId; + } + } + } + } + return this; + }; + /** + * The underlying implementation of `ZeroClipboard.Client.prototype.elements`. + * @private + */ + var _clientElements = function() { + var meta = _clientMeta[this.id]; + return meta && meta.elements ? meta.elements.slice(0) : []; + }; + /** + * The underlying implementation of `ZeroClipboard.Client.prototype.destroy`. + * @private + */ + var _clientDestroy = function() { + var meta = _clientMeta[this.id]; + if (!meta) { + return; + } + this.unclip(); + this.off(); + ZeroClipboard.off("*", meta.coreWildcardHandler); + delete _clientMeta[this.id]; + }; + /** + * Inspect an Event to see if the Client (`this`) should honor it for emission. + * @private + */ + var _clientShouldEmit = function(event) { + if (!(event && event.type)) { + return false; + } + if (event.client && event.client !== this) { + return false; + } + var meta = _clientMeta[this.id]; + var clippedEls = meta && meta.elements; + var hasClippedEls = !!clippedEls && clippedEls.length > 0; + var goodTarget = !event.target || hasClippedEls && clippedEls.indexOf(event.target) !== -1; + var goodRelTarget = event.relatedTarget && hasClippedEls && clippedEls.indexOf(event.relatedTarget) !== -1; + var goodClient = event.client && event.client === this; + if (!meta || !(goodTarget || goodRelTarget || goodClient)) { + return false; + } + return true; + }; + /** + * Handle the actual dispatching of events to a client instance. + * + * @returns `undefined` + * @private + */ + var _clientDispatchCallbacks = function(event) { + var meta = _clientMeta[this.id]; + if (!(typeof event === "object" && event && event.type && meta)) { + return; + } + var async = _shouldPerformAsync(event); + var wildcardTypeHandlers = meta && meta.handlers["*"] || []; + var specificTypeHandlers = meta && meta.handlers[event.type] || []; + var handlers = wildcardTypeHandlers.concat(specificTypeHandlers); + if (handlers && handlers.length) { + var i, len, func, context, eventCopy, originalContext = this; + for (i = 0, len = handlers.length; i < len; i++) { + func = handlers[i]; + context = originalContext; + if (typeof func === "string" && typeof _window[func] === "function") { + func = _window[func]; + } + if (typeof func === "object" && func && typeof func.handleEvent === "function") { + context = func; + func = func.handleEvent; + } + if (typeof func === "function") { + eventCopy = _extend({}, event); + _dispatchCallback(func, context, [ eventCopy ], async); + } + } + } + }; + /** + * Prepares the elements for clipping/unclipping. + * + * @returns An Array of elements. + * @private + */ + var _prepClip = function(elements) { + if (typeof elements === "string") { + elements = []; + } + return typeof elements.length !== "number" ? [ elements ] : elements; + }; + /** + * Add a `mouseover` handler function for a clipped element. + * + * @returns `undefined` + * @private + */ + var _addMouseHandlers = function(element) { + if (!(element && element.nodeType === 1)) { + return; + } + var _suppressMouseEvents = function(event) { + if (!(event || (event = _window.event))) { + return; + } + if (event._source !== "js") { + event.stopImmediatePropagation(); + event.preventDefault(); + } + delete event._source; + }; + var _elementMouseOver = function(event) { + if (!(event || (event = _window.event))) { + return; + } + _suppressMouseEvents(event); + ZeroClipboard.focus(element); + }; + element.addEventListener("mouseover", _elementMouseOver, false); + element.addEventListener("mouseout", _suppressMouseEvents, false); + element.addEventListener("mouseenter", _suppressMouseEvents, false); + element.addEventListener("mouseleave", _suppressMouseEvents, false); + element.addEventListener("mousemove", _suppressMouseEvents, false); + _mouseHandlers[element.zcClippingId] = { + mouseover: _elementMouseOver, + mouseout: _suppressMouseEvents, + mouseenter: _suppressMouseEvents, + mouseleave: _suppressMouseEvents, + mousemove: _suppressMouseEvents + }; + }; + /** + * Remove a `mouseover` handler function for a clipped element. + * + * @returns `undefined` + * @private + */ + var _removeMouseHandlers = function(element) { + if (!(element && element.nodeType === 1)) { + return; + } + var mouseHandlers = _mouseHandlers[element.zcClippingId]; + if (!(typeof mouseHandlers === "object" && mouseHandlers)) { + return; + } + var key, val, mouseEvents = [ "move", "leave", "enter", "out", "over" ]; + for (var i = 0, len = mouseEvents.length; i < len; i++) { + key = "mouse" + mouseEvents[i]; + val = mouseHandlers[key]; + if (typeof val === "function") { + element.removeEventListener(key, val, false); + } + } + delete _mouseHandlers[element.zcClippingId]; + }; + /** + * Creates a new ZeroClipboard client instance. + * Optionally, auto-`clip` an element or collection of elements. + * + * @constructor + */ + ZeroClipboard._createClient = function() { + _clientConstructor.apply(this, _args(arguments)); + }; + /** + * Register an event listener to the client. + * + * @returns `this` + */ + ZeroClipboard.prototype.on = function() { + return _clientOn.apply(this, _args(arguments)); + }; + /** + * Unregister an event handler from the client. + * If no `listener` function/object is provided, it will unregister all handlers for the provided `eventType`. + * If no `eventType` is provided, it will unregister all handlers for every event type. + * + * @returns `this` + */ + ZeroClipboard.prototype.off = function() { + return _clientOff.apply(this, _args(arguments)); + }; + /** + * Retrieve event listeners for an `eventType` from the client. + * If no `eventType` is provided, it will retrieve all listeners for every event type. + * + * @returns array of listeners for the `eventType`; if no `eventType`, then a map/hash object of listeners for all event types; or `null` + */ + ZeroClipboard.prototype.handlers = function() { + return _clientListeners.apply(this, _args(arguments)); + }; + /** + * Event emission receiver from the Flash object for this client's registered JavaScript event listeners. + * + * @returns For the "copy" event, returns the Flash-friendly "clipData" object; otherwise `undefined`. + */ + ZeroClipboard.prototype.emit = function() { + return _clientEmit.apply(this, _args(arguments)); + }; + /** + * Register clipboard actions for new element(s) to the client. + * + * @returns `this` + */ + ZeroClipboard.prototype.clip = function() { + return _clientClip.apply(this, _args(arguments)); + }; + /** + * Unregister the clipboard actions of previously registered element(s) on the page. + * If no elements are provided, ALL registered elements will be unregistered. + * + * @returns `this` + */ + ZeroClipboard.prototype.unclip = function() { + return _clientUnclip.apply(this, _args(arguments)); + }; + /** + * Get all of the elements to which this client is clipped. + * + * @returns array of clipped elements + */ + ZeroClipboard.prototype.elements = function() { + return _clientElements.apply(this, _args(arguments)); + }; + /** + * Self-destruct and clean up everything for a single client. + * This will NOT destroy the embedded Flash object. + * + * @returns `undefined` + */ + ZeroClipboard.prototype.destroy = function() { + return _clientDestroy.apply(this, _args(arguments)); + }; + /** + * Stores the pending plain text to inject into the clipboard. + * + * @returns `this` + */ + ZeroClipboard.prototype.setText = function(text) { + if (!_clientMeta[this.id]) { + throw new Error("Attempted to set pending clipboard data from a destroyed ZeroClipboard client instance"); + } + ZeroClipboard.setData("text/plain", text); + return this; + }; + /** + * Stores the pending HTML text to inject into the clipboard. + * + * @returns `this` + */ + ZeroClipboard.prototype.setHtml = function(html) { + if (!_clientMeta[this.id]) { + throw new Error("Attempted to set pending clipboard data from a destroyed ZeroClipboard client instance"); + } + ZeroClipboard.setData("text/html", html); + return this; + }; + /** + * Stores the pending rich text (RTF) to inject into the clipboard. + * + * @returns `this` + */ + ZeroClipboard.prototype.setRichText = function(richText) { + if (!_clientMeta[this.id]) { + throw new Error("Attempted to set pending clipboard data from a destroyed ZeroClipboard client instance"); + } + ZeroClipboard.setData("application/rtf", richText); + return this; + }; + /** + * Stores the pending data to inject into the clipboard. + * + * @returns `this` + */ + ZeroClipboard.prototype.setData = function() { + if (!_clientMeta[this.id]) { + throw new Error("Attempted to set pending clipboard data from a destroyed ZeroClipboard client instance"); + } + ZeroClipboard.setData.apply(this, _args(arguments)); + return this; + }; + /** + * Clears the pending data to inject into the clipboard. + * If no `format` is provided, all pending data formats will be cleared. + * + * @returns `this` + */ + ZeroClipboard.prototype.clearData = function() { + if (!_clientMeta[this.id]) { + throw new Error("Attempted to clear pending clipboard data from a destroyed ZeroClipboard client instance"); + } + ZeroClipboard.clearData.apply(this, _args(arguments)); + return this; + }; + /** + * Gets a copy of the pending data to inject into the clipboard. + * If no `format` is provided, a copy of ALL pending data formats will be returned. + * + * @returns `String` or `Object` + */ + ZeroClipboard.prototype.getData = function() { + if (!_clientMeta[this.id]) { + throw new Error("Attempted to get pending clipboard data from a destroyed ZeroClipboard client instance"); + } + return ZeroClipboard.getData.apply(this, _args(arguments)); + }; + if (typeof define === "function" && define.amd) { + define(function() { + return ZeroClipboard; + }); + } else if (typeof module === "object" && module && typeof module.exports === "object" && module.exports) { + module.exports = ZeroClipboard; + } else { + window.ZeroClipboard = ZeroClipboard; + } +})(function() { + return this || window; +}()); + +/*! + * clipboard.js v1.6.1 + * https://zenorocha.github.io/clipboard.js + * + * Licensed MIT © Zeno Rocha + */ +(function(f){if(typeof exports==="object"&&typeof module!=="undefined"){module.exports=f()}else if(typeof define==="function"&&define.amd){define([],f)}else{var g;if(typeof window!=="undefined"){g=window}else if(typeof global!=="undefined"){g=global}else if(typeof self!=="undefined"){g=self}else{g=this}g.Clipboard = f()}})(function(){var define,module,exports;return (function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o 0 && arguments[0] !== undefined ? arguments[0] : {}; + + this.action = options.action; + this.emitter = options.emitter; + this.target = options.target; + this.text = options.text; + this.trigger = options.trigger; + + this.selectedText = ''; + } + }, { + key: 'initSelection', + value: function initSelection() { + if (this.text) { + this.selectFake(); + } else if (this.target) { + this.selectTarget(); + } + } + }, { + key: 'selectFake', + value: function selectFake() { + var _this = this; + + var isRTL = document.documentElement.getAttribute('dir') == 'rtl'; + + this.removeFake(); + + this.fakeHandlerCallback = function () { + return _this.removeFake(); + }; + this.fakeHandler = document.body.addEventListener('click', this.fakeHandlerCallback) || true; + + this.fakeElem = document.createElement('textarea'); + // Prevent zooming on iOS + this.fakeElem.style.fontSize = '12pt'; + // Reset box model + this.fakeElem.style.border = '0'; + this.fakeElem.style.padding = '0'; + this.fakeElem.style.margin = '0'; + // Move element out of screen horizontally + this.fakeElem.style.position = 'absolute'; + this.fakeElem.style[isRTL ? 'right' : 'left'] = '-9999px'; + // Move element to the same position vertically + var yPosition = window.pageYOffset || document.documentElement.scrollTop; + this.fakeElem.style.top = yPosition + 'px'; + + this.fakeElem.setAttribute('readonly', ''); + this.fakeElem.value = this.text; + + document.body.appendChild(this.fakeElem); + + this.selectedText = (0, _select2.default)(this.fakeElem); + this.copyText(); + } + }, { + key: 'removeFake', + value: function removeFake() { + if (this.fakeHandler) { + document.body.removeEventListener('click', this.fakeHandlerCallback); + this.fakeHandler = null; + this.fakeHandlerCallback = null; + } + + if (this.fakeElem) { + document.body.removeChild(this.fakeElem); + this.fakeElem = null; + } + } + }, { + key: 'selectTarget', + value: function selectTarget() { + this.selectedText = (0, _select2.default)(this.target); + this.copyText(); + } + }, { + key: 'copyText', + value: function copyText() { + var succeeded = void 0; + + try { + succeeded = document.execCommand(this.action); + } catch (err) { + succeeded = false; + } + + this.handleResult(succeeded); + } + }, { + key: 'handleResult', + value: function handleResult(succeeded) { + this.emitter.emit(succeeded ? 'success' : 'error', { + action: this.action, + text: this.selectedText, + trigger: this.trigger, + clearSelection: this.clearSelection.bind(this) + }); + } + }, { + key: 'clearSelection', + value: function clearSelection() { + if (this.target) { + this.target.blur(); + } + + window.getSelection().removeAllRanges(); + } + }, { + key: 'destroy', + value: function destroy() { + this.removeFake(); + } + }, { + key: 'action', + set: function set() { + var action = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 'copy'; + + this._action = action; + + if (this._action !== 'copy' && this._action !== 'cut') { + throw new Error('Invalid "action" value, use either "copy" or "cut"'); + } + }, + get: function get() { + return this._action; + } + }, { + key: 'target', + set: function set(target) { + if (target !== undefined) { + if (target && (typeof target === 'undefined' ? 'undefined' : _typeof(target)) === 'object' && target.nodeType === 1) { + if (this.action === 'copy' && target.hasAttribute('disabled')) { + throw new Error('Invalid "target" attribute. Please use "readonly" instead of "disabled" attribute'); + } + + if (this.action === 'cut' && (target.hasAttribute('readonly') || target.hasAttribute('disabled'))) { + throw new Error('Invalid "target" attribute. You can\'t cut text from elements with "readonly" or "disabled" attributes'); + } + + this._target = target; + } else { + throw new Error('Invalid "target" value, use a valid Element'); + } + } + }, + get: function get() { + return this._target; + } + }]); + + return ClipboardAction; + }(); + + module.exports = ClipboardAction; +}); + +},{"select":5}],8:[function(require,module,exports){ +(function (global, factory) { + if (typeof define === "function" && define.amd) { + define(['module', './clipboard-action', 'tiny-emitter', 'good-listener'], factory); + } else if (typeof exports !== "undefined") { + factory(module, require('./clipboard-action'), require('tiny-emitter'), require('good-listener')); + } else { + var mod = { + exports: {} + }; + factory(mod, global.clipboardAction, global.tinyEmitter, global.goodListener); + global.clipboard = mod.exports; + } +})(this, function (module, _clipboardAction, _tinyEmitter, _goodListener) { + //'use strict'; + + var _clipboardAction2 = _interopRequireDefault(_clipboardAction); + + var _tinyEmitter2 = _interopRequireDefault(_tinyEmitter); + + var _goodListener2 = _interopRequireDefault(_goodListener); + + function _interopRequireDefault(obj) { + return obj && obj.__esModule ? obj : { + default: obj + }; + } + + function _classCallCheck(instance, Constructor) { + if (!(instance instanceof Constructor)) { + throw new TypeError("Cannot call a class as a function"); + } + } + + var _createClass = function () { + function defineProperties(target, props) { + for (var i = 0; i < props.length; i++) { + var descriptor = props[i]; + descriptor.enumerable = descriptor.enumerable || false; + descriptor.configurable = true; + if ("value" in descriptor) descriptor.writable = true; + Object.defineProperty(target, descriptor.key, descriptor); + } + } + + return function (Constructor, protoProps, staticProps) { + if (protoProps) defineProperties(Constructor.prototype, protoProps); + if (staticProps) defineProperties(Constructor, staticProps); + return Constructor; + }; + }(); + + function _possibleConstructorReturn(self, call) { + if (!self) { + throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); + } + + return call && (typeof call === "object" || typeof call === "function") ? call : self; + } + + function _inherits(subClass, superClass) { + if (typeof superClass !== "function" && superClass !== null) { + throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); + } + + subClass.prototype = Object.create(superClass && superClass.prototype, { + constructor: { + value: subClass, + enumerable: false, + writable: true, + configurable: true + } + }); + if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; + } + + var Clipboard = function (_Emitter) { + _inherits(Clipboard, _Emitter); + + /** + * @param {String|HTMLElement|HTMLCollection|NodeList} trigger + * @param {Object} options + */ + function Clipboard(trigger, options) { + _classCallCheck(this, Clipboard); + + var _this = _possibleConstructorReturn(this, (Clipboard.__proto__ || Object.getPrototypeOf(Clipboard)).call(this)); + + _this.resolveOptions(options); + _this.listenClick(trigger); + return _this; + } + + /** + * Defines if attributes would be resolved using internal setter functions + * or custom functions that were passed in the constructor. + * @param {Object} options + */ + + + _createClass(Clipboard, [{ + key: 'resolveOptions', + value: function resolveOptions() { + var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; + + this.action = typeof options.action === 'function' ? options.action : this.defaultAction; + this.target = typeof options.target === 'function' ? options.target : this.defaultTarget; + this.text = typeof options.text === 'function' ? options.text : this.defaultText; + } + }, { + key: 'listenClick', + value: function listenClick(trigger) { + var _this2 = this; + + this.listener = (0, _goodListener2.default)(trigger, 'click', function (e) { + return _this2.onClick(e); + }); + } + }, { + key: 'onClick', + value: function onClick(e) { + var trigger = e.delegateTarget || e.currentTarget; + + if (this.clipboardAction) { + this.clipboardAction = null; + } + + this.clipboardAction = new _clipboardAction2.default({ + action: this.action(trigger), + target: this.target(trigger), + text: this.text(trigger), + trigger: trigger, + emitter: this + }); + } + }, { + key: 'defaultAction', + value: function defaultAction(trigger) { + return getAttributeValue('action', trigger); + } + }, { + key: 'defaultTarget', + value: function defaultTarget(trigger) { + var selector = getAttributeValue('target', trigger); + + if (selector) { + return document.querySelector(selector); + } + } + }, { + key: 'defaultText', + value: function defaultText(trigger) { + return getAttributeValue('text', trigger); + } + }, { + key: 'destroy', + value: function destroy() { + this.listener.destroy(); + + if (this.clipboardAction) { + this.clipboardAction.destroy(); + this.clipboardAction = null; + } + } + }], [{ + key: 'isSupported', + value: function isSupported() { + var action = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : ['copy', 'cut']; + + var actions = typeof action === 'string' ? [action] : action; + var support = !!document.queryCommandSupported; + + actions.forEach(function (action) { + support = support && !!document.queryCommandSupported(action); + }); + + return support; + } + }]); + + return Clipboard; + }(_tinyEmitter2.default); + + /** + * Helper function to retrieve attribute value. + * @param {String} suffix + * @param {Element} element + */ + function getAttributeValue(suffix, element) { + var attribute = 'data-clipboard-' + suffix; + + if (!element.hasAttribute(attribute)) { + return; + } + + return element.getAttribute(attribute); + } + + module.exports = Clipboard; +}); + +},{"./clipboard-action":7,"good-listener":4,"tiny-emitter":6}]},{},[8])(8) +}); \ No newline at end of file diff --git a/core/static/journal_about/js/recaptcha__pt_br.js b/core/static/journal_about/js/recaptcha__pt_br.js new file mode 100644 index 0000000..e87e921 --- /dev/null +++ b/core/static/journal_about/js/recaptcha__pt_br.js @@ -0,0 +1,970 @@ +(function(){/* + + Copyright The Closure Library Authors. + SPDX-License-Identifier: Apache-2.0 +*/ +/* + + Copyright 2005, 2007 Bob Ippolito. All Rights Reserved. + Copyright The Closure Library Authors. + SPDX-License-Identifier: MIT +*/ +/* + Copyright The Closure Library Authors. + SPDX-License-Identifier: Apache-2.0 +*/ +/* + + SPDX-License-Identifier: Apache-2.0 +*/ +var e=function(){return[function(Q,B,b,k){if(!(Q-5>>(0<=(b=[8,14,"call"],(Q^b[1])>>3)&&(Q|6)>3&&(B=kC,m=b=function(r){return B.call(b.src,b.listener,r)}),16777215)],Q|H[0])>>3||(k=Gu(t[18].bind(null,10),B),b.B?k():(b.kU||(b.kU=[]),b.kU.push(k))),12>((Q^17)&16)&&-61<=Q>>H[0])&&(G=[24,"",6710656],b>>>=0,k>>>=0,b<=H[1]?l=G[1]+(4294967296*b+k):(O[15](4)? +y=G[1]+(BigInt(b)<>16&65535,N=(k>>>G[0]|b<((n=[5,26,"ReCAPTCHA couldn't find user-provided function: "],Q)|n[0])&&0<=(Q<<2&11))a:switch(d=[187,189,0],y){case 61:G=d[0];break a;case B:G=k;break a;case b:G=d[1];break a;case 224:G=l;break a;case d[2]:G=224;break a; +default:G=y}if(1>(Q+4&((Q&115)==Q&&(b==B||"boolean"===typeof b?G=b:"number"===typeof b&&(G=!!b)),4))&&Q-1>=n[1])a:{if(l=(k=void 0===k?!1:k,B.get(b))){if("function"===typeof l){G=l;break a}if("function"===typeof window[l]){G=window[l];break a}k&&console.log(n[2]+l)}G=function(){}}return 1==(Q+9&13)&&(b.M=l?W[29](35,"%2525",k,!0):k,b.M&&(b.M=b.M.replace(/:$/,B)),G=b),G},function(Q,B,b,k,l,y,d,G){if((12<=Q<<(d=[31,0,30],1)&&2>Q+4>>4&&(y=["running","animation-play-state","display"],l.vQ(k),O[47](22,l.N, +y[2],b),O[47](d[2],l.N,y[1],y[d[1]]),O[47](d[0],l.N,"opacity",B),O[47](19,l.RB,y[1],y[d[1]])),26)<=Q-3&&Q-4(Q^(Q-6<<2=Q&&!k.N&&k.M&&k.O().form&&(e[37](88,k.M,k.O().form,B,k.WC),k.N=b),67))&&2<=(Q<<1&3)&&(B=["rc-2fa-tabloop-begin","rc-2fa-payload",'" tabIndex="0">
'], +G=NI('
=Q&&(Q-5^d[0])Q<<2&&(this[d[1]]=B),y},function(Q,B,b,k,l,y,d){return((Q^28)&(0<=(Q^14)>>(d=[86,56,41],4)&&19>Q<<1&&(this.BC=Array.from(b.entries()),this.Lj=Array.from(B)),5)||(y=B.classList? +B.classList.contains(b):E[43](77,b,e[6](1,B))),10<=Q-8&&16>(Q^d[1]))&&(k=K[d[2]](d[0],2,!!(2&b),k),k=K[d[2]](22,32,!!(32&b)&&l,k),y=k=K[d[2]](d[0],2048,B,k)),y},function(Q,B,b,k){return((k=[22,3,4],Q)+7&k[1]||(b=B.classList?B.classList:W[32](k[2],"class","string",B).match(/\S+/g)||[]),Q^k[0])>>k[2]||L.call(this,B),b},function(Q,B,b,k,l,y,d,G,n){if(!((Q^96)&((G=[36,"",67],1)==(Q+2&15)&&(k=[5559,0,6580],n=a[30](50,G[1],224,H9().slice(W[G[0]](65,7510)[b],W[G[0]](G[2],k[0])[b+B]),W[G[0]](33,k[2])+a[17](41, +k[1],function(){return H9().slice(0,W[36](33,3099)[b])},t6))),15)))a:if(k=[96,173,188],48<=b&&57>=b||b>=k[0]&&106>=b||65<=b&&90>=b||(m$||W9)&&0==b)n=!0;else switch(b){case 32:case 43:case 63:case 64:case 107:case 109:case 110:case 111:case 186:case 59:case 189:case 187:case 61:case k[2]:case 190:case 191:case 192:case 222:case 219:case B:case 221:case 163:case 58:n=!0;break a;case k[1]:case 171:n=ac;break a;default:n=!1}if(((Q|80)==Q&&(b.get(k),b.set(k,B,{df:0,path:void 0,domain:void 0})),(Q+1&57)< +Q&&Q+8>>1>=Q)&&(n=K[13](9,E[23](24,e[32](30,B),b),[E[43](58,k),E[43](58,l)])),1==(Q^57)>>3&&l&&(e[39](34,l),y))if("string"===typeof y)E[4](1,y,l);else d=function(S,T){S&&(T=K[11](28,b,l),l.appendChild("string"===typeof S?T.createTextNode(S):S))},Array.isArray(y)?y.forEach(d):!W[23](12,k,y)||"nodeType"in y?d(y):O[38](48,B,y).forEach(d);return n},function(Q,B,b,k,l,y,d,G,n){if((Q|6)>=(n=[1,7,29],(Q+5^24)>=Q&&(Q-5|21)Q>>n[0]){if(d=(b=[127,128,(k=B.M,28)],B).I,y=d[k++], +l=y&b[0],y&b[n[0]]&&(y=d[k++],l|=(y&b[0])<(Q+5&8)&&2<=(Q>>2&n[1])&&!W[36](26,"",this)&&(this.O().value=this.l),G},function(Q,B,b,k,l,y){if(!(Q<<(l=["fallback",1,3],l[1])&l[2]))E[15](23,b,rS,B,k);return(Q|8)==Q&&(y=!!window.___grecaptcha_cfg[l[0]]),y}, +function(Q,B,b,k,l,y,d,G,n,S,T,N){if(1<=(T=[!0,2,3],Q^14)&&(Q^32)>>4> +T[2]&&4>(Q>>1&4))try{N=X[8](66,b).filter(function(H){return!H.startsWith(t[30](25,B))}).length}catch(H){N=-1}return N},function(Q,B,b,k,l,y,d,G,n,S,T,N,H,m){if(((Q&(m=["addEventListener","src",24],77))==Q&&(this.M=B),Q|m[2])==Q){if(!k)throw Error("Invalid event type");if(n=((S=W[2](28,(N=K[18](81,b)?!!b.capture:!!b,y)))||(y[eH]=S=new Za(y)),S).add(k,l,G,N,d),n.proxy)H=n;else{if(y[m[((n.proxy=(T=e[1](8),T),T)[m[1]]=y,T).listener=n,0]])C1||(b=N),void 0===b&&(b=B),y[m[0]](k.toString(),T,b);else if(y.attachEvent)y.attachEvent(E[45](2, +"on",k.toString()),T);else if(y.addListener&&y.removeListener)y.addListener(T);else throw Error("addEventListener and attachEvent are unavailable.");H=(wS++,n)}}return H},function(Q,B,b,k,l,y,d,G,n,S,T,N,H){if((12>(N=["test",1,"://"],Q-N[1])&&3<=((Q|9)&25)&&(this.I=new Set),Q|24)==Q&&(B.M=b,b>B.l))throw X[5](11," > ",B.l,b);if(2==(Q|5)>>3)if(l=["",0,":"],k)if(/^about:(?:blank|srcdoc)$/[N[0]](k))H=window.origin||l[0];else{if(!(d=(-1!=(S=(y=((k=(k=(k.startsWith(B)&&(k=k.substring(5)),k.split("#")[l[N[1]]]).split("?")[l[N[1]]], +k.toLowerCase()),k).indexOf(b)==l[N[1]]&&(k=window.location.protocol+k),/^[\w\-]*:\/\//[N[0]](k)||(k=window.location.href),k.substring(k.indexOf(N[2])+3)),y.indexOf("/")),S)&&(y=y.substring(l[N[1]],S)),k.substring(l[N[1]],k.indexOf(N[2]))),d))throw Error("URI is missing protocol: "+k);if("http"!==d&&"https"!==d&&"chrome-extension"!==d&&"moz-extension"!==d&&"file"!==d&&"android-app"!==d&&"chrome-search"!==d&&"chrome-untrusted"!==d&&"chrome"!==d&&"app"!==d&&"devtools"!==d)throw Error("Invalid URI scheme in origin: "+ +d);H=(-1!=(T=l[n=y.indexOf(l[2]),0],n)&&(G=y.substring(n+N[1]),y=y.substring(l[N[1]],n),"http"===d&&"80"!==G||"https"===d&&"443"!==G)&&(T=l[2]+G),d+N[2]+y+T)}else H=l[0];if(14>((Q|((Q|48)==Q&&(K1.call(this),this.C=y,this.M=l,this.N=A6[b]||A6[N[1]],this.S=B,this.l=k),N[1]))&16)&&12<=(Q<<2&15))a:if(G=(l||P).document,G.querySelector){if((y=G.querySelector(k))&&(d=y[B]||y.getAttribute(B))&&zu[N[0]](d)){H=d;break a}H=b}else H=b;return H},function(Q,B,b,k,l,y,d,G,n,S,T){if(!((S=["C",6,2],Q<<1)&7)&&b.l){if(!b.X)throw new Ic(b); +b.X=B}return 1==(Q>>S[2]&3)&&(G=[1,null,256],this[S[0]]&&(n=this[S[0]],l=xC.K().get(),B=l.L,y=G[0],y=void 0===y?0:y,b=Xq(B),k=a[49](80,G[S[2]],b,S[1],B),d=e[27](11,G[1],k),d!=G[1]&&d!==k&&X[9](1,d,B,S[1],b),n.playbackRate=K[12](68,G[1],d,y),this[S[0]].load(),this[S[0]].play())),T},function(Q,B,b,k,l,y,d,G,n,S){if(S=[null,31,2],(Q+8&S[1])>=Q&&Q-6<(Q^1)&&18<=Q<=Q&&L.call(this,B),n},function(Q,B,b,k,l,y,d,G,n,S,T,N,H,m){if((Q|40)==(2==((((H=[24,1,14],(Q|H[0])==Q)&&(k.M.has(qI)?(l=Math,y=l.max,G=k.M.get(qI),d=y.call(l,B,parseInt(G,b))):d=B,m=d),Q)^H[1])&H[2])&&(b.N||(b.N=b.AG()>G[0]>G[1]&7)=G[1]&&(n=K[13](6,E[23](40,e[32](28,B),b),[E[43](31,k),E[43](26,l)])),n},function(Q,B,b,k,l,y,d,G,n,S,T,N){if(27<=Q+(N=[35,1,"M"],7)&&47>Q+6)if(y=["-undetermined","Invalid checkbox state: ","-checked"],l=k.KS(),1==b)T=l+y[2];else if(b==B)T=l+"-unchecked";else if(null==b)T=l+y[0];else throw Error(y[N[1]]+b);if((Q|((((((Q|3)>>3||(G=[0,"rc-button-default", +"goog-inline-block"],d=K[33](43,B||G[N[1]],Rc),f1.call(this,b,d,l),this[N[2]]=k||G[0],this.S=B||G[N[1]],this.N=y||null,e[36](10,!0,this,G[2])),Q)+6^16)=Q&&(uk?null==B?T=B:t[6](41,!1,B)&&("string"===typeof B?T=v9?X[N[0]](19,".",!1,B):B:"number"===typeof B&&(T=O[26](2,!1,B))):T=B),Q+4)&58)>=Q&&(Q+7^29)=l.LZ||(1===l.LZ?(y=1E9,l.Xk&&(y=l.Xk-d),k.R=N[1],k.FC(y)):(k.R=b,k.O$()))),40))==Q)O[46](10,function(H,m,r,g,D){if(H.M==(D=["I",8, +32],B))return H.l=b,G=y.l.l.value,g=new BM,r=W[D[1]](D[2],3,G,g),n=new bw(r),O[28](58,H,l,y.M[D[0]].send(n));if(H.M!=b){if(d=H[(S=y.l.l.value,D)[0]],""==d.Kx()||G!=S)return H.return();return((m=d.Kx(),y.l.l).value=m,t)[33](22,k,H,k)}(t[43](1,H),H).M=k});return T},function(Q,B,b,k,l,y){return 3==((((Q>>(y=[null,"call","M"],2)&15||(k="Jsloader error (code #"+B+")",b&&(k+=": "+b),kb[y[1]](this,k),this.code=B),Q)&25)==Q&&(l=B.U?B.U.readyState:0),Q)+5&7)&&(l=new yH(function(d,G,n,S,T,N,H,m){if(m=(N=[], +k.length))for(H=function(r){G(r)},T=function(r,g){N[r]=(m--,g),m==B&&d(N)},S=B;S(Q^(G=[3,2038,"C1"],15))&&1<=(Q|7)>>G[0]&&(this.M=k,this.ik=l,this[G[2]]=B,this.RI=b),56))==Q&&(n=W[33](25)?!1:t[31](13,B)),30))>=Q&&(Q-5|41)>G[0]==G[0]&&(n=[].concat(b,B,k||[],k+l/5||[],k+y/1||[],k+d/G[0]||[])),n},function(Q, +B,b,k,l){if((Q|(l=[1,17,3],8))==Q&&dL)try{dL(B)}catch(y){throw y.cause=B,y;}return((Q|l[0])=l[2]&&K[l[1]](65,this,32)&&this.xX(!0),Q-2^21)=Q&&(b=['" aria-hidden="true">',"recaptcha-accessible-status",'" class="'],k=NI('
")),k},function(Q,B,b,k,l,y,d,G,n,S,T){return(Q^23)>>((T=["H",35,"send"],Q^39)=Q&&(Q-4^12)=Q&&Q+8>>S[1]>(4==(Q<<1&((Q+(n=[0,"recaptcha-setup", +51],9)&13||(NE.call(this,"/recaptcha/api3/accountchallenge",t[24](n[2],5,L5),"POST"),O[18](21,B,this),this.l=!0),4)==((Q^60)&15)&&(l=void 0===l?new Map:l,y=void 0===y?null:y,X[13](35),d=new MessageChannel,b.postMessage(n[1],K[1](5,B,k),[d.port2]),G=new HM(d.port1,l,y,k,d)),Q-3>>4||L.call(this,B),23))&&(this.message=B,this.messageType=b,this.M=k),3)&&(k=[null],tO.call(this),this.S=k[n[0]],this.A=k[n[0]],this.l=k[n[0]],this.M=k[n[0]],this.R=B,this.o=b,this.X=k[n[0]],this.F=k[n[0]],this.Y=Date.now(), +this.AG=k[n[0]],this.N=k[n[0]],this.yR=k[n[0]]),G},function(Q,B,b,k,l,y,d,G){return 39>Q<<(2==Q-(Q+8>>((Q^64)>>((d=[4,1,"L"],Q+8)>>d[0]||(k=[],Oy(d[0],b,function(n){k.push(n)},B),G=k),d)[0]||b.S.width==k.width&&b.S.height==k.height||(b.S=k,l&&a[23](54,K[48].bind(null,15),b),b.dispatchEvent(B)),d[0])==d[0]&&(this.kU=this.kU,this.B=this.B),d[0])>>3&&(G=X[2](25,b,$b,X[48](2,b,l),B,k)),d[1])&&24<=Q<<2&&(l=B[d[2]],y=Xq(l),a[49](67,y),X[9](2,k,l,b,y),G=B),G},function(Q,B,b,k,l,y,d,G,n,S,T,N,H,m,r,g){if((((r= +["o","F",0],3)<=Q-5>>4&&3>Q+6>>5&&(k==b?l=k:(y=k.U8||B,l="string"===typeof y?y:new Uint8Array(y)),g=l),3>Q+9>>4&&11<=(Q-6&15)&&(l[r[1]]=t[19](2,"IFRAME",B,K[42](38,"error",d),{title:"reCAPTCHA",tabindex:k,width:String(G.width),height:String(G.height),role:"presentation",name:b+l[r[0]]}),y.appendChild(l[r[1]])),Q)&91)==Q){for(G=r[y=r[2],2];yQ>>1&&2<=(Q<<1&5)){for(N=(H=(n=(m=W[32]((T=l&B?1:0,98),d),m.length), +l&k)?m[n-b]:void 0,n)+(H?-1:0);T>3&&16>Q>>1)if(b==B)l=b;else if("number"===typeof b||"NaN"===b||"Infinity"===b||"-Infinity"===b)l=Number(b);return((Q&106)==Q&&(b='',b+=k[2].replace(mB,a[k[1]].bind(null,28)),l=NI(b+'')),4>Q-4>>5&&6<=(Q<<1&k[0]))&&(this.M=B,this.no=!0),(Q&55)==Q&&(l=!!gL.FPA_SAMESITE_PHASE2_MOD|| +!(void 0===B||!B)),l},function(Q,B,b,k,l,y){return(Q|32)==(7>(y=[3,"S","I"],Q>>2)&&5<=((Q^35)&6)&&(this.M=B,this.U8=b),Q)&&(k=[null,!1,"h"],tO.call(this),this[y[2]]=B,e[1](4,this[y[2]],this),this.M=b,e[1](y[0],this.M,this),this.F=k[0],this[y[1]]=k[1],this.A=k[0],X[4](12,5,k[2],"f","m",this)),l},function(Q,B,b,k,l){return((l=["hasTrustToken",2,8],(Q|32)==Q&&O[l[1]](3,l[2],38,xC.K())&&document[l[0]]&&"https://recaptcha.net"===window.origin&&(b.km=B),Q)|24)==Q&&(k=!(!B||!B[je])),k},function(Q,B,b,k, +l,y,d,G){if(24<=(d=[8,"call",34],Q>>1)&&(Q+2&16)=Q&&(ac&&DG?(k=document.createElement(B),k.style.backgroundColor="rgb(255, 255, 255)",document.body.appendChild(k),l=W[31](2,k,"backgroundColor"),document.body.removeChild(k),G="rgb(255, 255, 255)"!==l):G=b),Q)&108)==Q&&(b=B.Ub,G=NI('
')),90))== +Q){for(y in l=[],k)X[37](3,B,k[y],l,y);G=l.join(b)}return G},function(Q,B,b,k,l,y,d,G,n,S,T,N,H,m,r){if(((((r=["setTimeout",!0,5],1<=(Q|8)>>3&&20>Q+6)&&(m=O[17](9,r[1],!1,B)?b(XH):e[3](31,null,function(g,D,J,Z){D=Object[(Z=["prototype","toJSON","JSON"],J=Array[Z[0]][Z[1]],Z)[0]][Z[1]];try{return delete Array[Z[0]][Z[1]],delete Object[Z[0]][Z[1]],b(g[Z[2]])}finally{J&&(Array[Z[0]][Z[1]]=J),D&&(Object[Z[0]][Z[1]]=D)}})),Q)|24)==Q&&L.call(this,B),1>(Q>>2&4))&&16<=(Q|4)&&(N=[2,"window","globalThis"], +ee.call(this),this.F=B,this.l=b||null,this.S=a[19].bind(null,40),this.I={},!k)){for(G=(H=(y=((T=["requestAnimationFrame","mozRequestAnimationFrame","webkitAnimationFrame",((this.M=new (this.M=null,Ey)(C5(this.A,this)),O)[13](21,N[0],r[0],this.M),"msRequestAnimationFrame")],O)[13](20,N[0],"setInterval",this.M),P)[N[1]]||P[N[2]],0),this.M);H>((d=[11,10,17],26>Q>>1&&(Q<<1&d[0])>=d[1])&&(l=e[d[2]](12,b),null!=l&&("string"===typeof l&&K[d[1]](4,32,l),K[30](4,null,25,l,k,B))),3)&&(b=new AO,y=t[14](20,B,b,1)),(Q|4)>>4)||PM.call(this,ME.width,ME.height,"doscaptcha"),64))==Q)a:{for(k=(l=Object.getOwnPropertyNames(Date),0);k>((Q+(d=[4,10,160],8)&17)=Q&&(k=e[37](20,b.M),y=O[44](26,B,d[2], +k,b.M,!0)),d)[0]||sy.call(this,417,1),(Q|24)==Q)&&(y=new VH(b,B,!1,!1)),Q+2)&7)&&(y=(l=X[d[1]](d[1],B,k))&&0!==l.length?l[b]:k.documentElement),Q-3)>>d[0]==d[0]&&(FH.call(this),this.l=0),y},function(Q,B,b,k,l,y,d,G,n,S,T,N,H,m,r,g,D,J,Z,w,C){return(Q-(((w=["delete","indexOf",32],Q&89)==Q&&(y=[42,4,16],J=b(),r=new Yb,N=k(J,11),l=W[15](77,r,N,5),m=k(J,26),Z=W[15](13,l,m,y[1]),n=k(J,w[2]),G=W[15](45,Z,n,6),d=k(J,5,20),g=W[15](45,G,d,2),H=k(J,5,y[0]),T=W[15](13,g,H,1),S=k(J,5,y[2]),D=W[15](29,T,S,3), +C=a[39](11,D)),18<=(Q^25)&&Q+9l.Jl?(l&&(K[30](52,k.l,b,cM,l.Ik),k.M[w[0]](B)),y=k.I,y.I[w[0]](b)&&y.Q4(b)):(l.Lx++,b.send(l.px(),l.yu(),l.pS(),l.lk))),Q>>2&14)||(C=B.hasAttribute("tabindex")),3)^13)>=Q&&(Q+4^19)")&&(k=k.replace(f5,">")),-1!=k[w[1]]('"')&&(k=k.replace(uw, +""")),-1!=k[w[1]]("'")&&(k=k.replace(vM,y[2])),-1!=k[w[1]]("\x00")&&(k=k.replace(Q2,y[1]))),l=K[27](4,"error",k)),C=l),C},function(Q,B,b,k,l,y,d,G,n,S,T,N){return((T=[34,8,2],6>(Q+9&T[1])&&-76<=Q+5)&&(d=a[43](T[0],k,l),S=d[k].C1,(G=d[b])?(y=K[12](10,B,G),n=O[1](58,k,G).MW,N=function(H,m,r){return S(H,m,r,n,y)}):N=S),1>(Q+3&T[1]))&&Q-4>>3>=T[2]&&(this.M=new B$,this.I=B),(Q|16)==Q&&L.call(this,B),N},function(Q,B,b,k,l,y,d,G,n,S,T){return 3>((Q>>1&((Q>>((T=[42,"C",14],Q-6>>4)||!k||(b[T[1]]?E[43](73, +k,b[T[1]])||b[T[1]].push(k):b[T[1]]=[k],K[T[0]](2,k,B,b)),1)&6||(S=b.replace(/<\//g,B).replace(/\]\]>/g,"]]\\>")),(Q|88)==Q)&&(b instanceof b0?(y=b.y,b=b.x):y=k,G=B.M-B.l,d=B.I-B.A,l=B.l,n=B.A,S=((Number(b)-l)*(B.M-l)+(Number(y)-n)*(B.I-n))/(G*G+d*d)),25)||(0,eval)(B),Q)^54)>>4&&9<=(Q<<2&T[2])&&(S=!!l.relatedTarget&&E[21](40,b,B,!1,l.relatedTarget,k)),S},function(Q,B,b,k,l,y,d,G){return Q-(((Q^55)>>(Q-(1==(d=[4,3,"displayName"],Q+d[1]>>d[1])&&(G=k.kX()||b.l&&k.QR()==B),d[0])&15||(G=e[8](38,B)>>>0), +d[1])||(G=B[d[2]]||B.name||"unknown type name"),Q)>>1&15||(k=new kl,G=W[15](13,k,b,B)),8)&15||(G=W[39](d[1],k,y,l,b,B)),G},function(Q,B,b,k,l,y,d,G,n,S){if(3==(Q-6&(n=[0,"P",1],15)))a:{for(G=[(d=B,k)==typeof globalThis&&globalThis,l,k==typeof window&&window,k==typeof self&&self,k==typeof global&&global];d=Q&&((l=b(k||l0,void 0))&&l.I&&B?l.I(B):(y=a[n[0]](37,"zSoyz",l),K[3](20, +B,y))),Q)&106)==Q&&(b=[null,!1],ee.call(this),this.X=B||a[3](52),this[n[1]]=b[n[0]],this.mt=y2,this.Y=b[n[0]],this.A=b[n[0]],this.I=b[n[0]],this.H=void 0,this.uC=b[n[2]],this.F=b[n[0]]),14)||L.call(this,B),S},function(Q,B,b,k,l,y){if(((y=[4,1,3],Q+5>>y[2]==y[1])&&(k=B.rf,b=B.CZ,l=NI('
'+X[11](y[0],k,b)+"
")),24<=Q+y[1])&&(Q>>y[1]&y[0])=Q&&(Q-7^13)>2&15)&&(l=e[37](4,k.M),n=E[29](30,b,B,k.M,l)),n},function(Q, +B,b,k,l,y,d,G,n,S,T,N,H,m){return((Q|56)==((Q&105)==((Q|((Q&(m=[80,2,1],15))==Q&&(G=y.M[d.toString()],n=-1,G&&(n=E[24](33,B,b,G,k,l)),H=-1>3==m[1]&&(H=X[15](56,B,"raw",0,m[2],k,b).catch(function(){return a[0](26,b,k)})),H},function(Q,B,b,k,l,y,d,G,n,S,T,N,H){return 3==(((Q>>((N=["rc-anchor",0,19],36>(Q^48)&&28<=(Q^46))&& +(S=QH()-y.Iz,n=new tM,T=K[18](2,k,b,S,y.B),G=E[15](73,n,Om,B,T),d=K[18](3,k,b,S,y.kU),H=E[15](9,G,Om,l,d)),2)&7||(l=t[11](97,11,b),k=W[14](43,l,$l,B),k||(k=new $l,e[25](16,k,2,K[34](27,null,!1)),E[15](71,l,$l,B,k)),H=k),(Q+1^14)=Q&&(b=B.p6,k=[" ","
",1],l=B.O_,y=B.Jw,H=NI('
'+e[20](20,B.Zk)+ +O[7](74)+(l==k[2]!=b?t[27](16,k[1],k[N[1]],B)+t[N[2]](38,k[1],k[N[1]],B):t[N[2]](37,k[1],k[N[1]],B)+t[27](17,k[1],k[N[1]],B))+k[1])),Q)|1)>>3&&(d=y.L,G=Xq(d),a[49](38,G),(n=e[26](24,B,G,d,b))&&n!==l&&k!=B&&(G=X[9](3,void 0,d,n,G)),X[9](13,k,d,l,G),H=y),H},function(Q,B,b,k,l,y,d,G,n,S,T){return(Q-5|79)>=((S=[13,2,"rc-anchor-over-quota-pt"],(Q^70)>>4||(T=k(B(),S[0])),(Q|16)==Q&&(l=this.XL[this.I][b]))&&(T=l.call(this,null==B?void 0:B,k)),Q)&&(Q+6^10)', +'Privacidade
")),T},function(Q,B,b,k,l,y,d,G,n){if(3==((Q|9)&(8>((Q&116)==((G=[0,49,2],(Q&73)==Q)&&(k=W[31](24,O[20](3,mC),W$),n=K[45](G[1],B,function(){return k.match(/[^,]*,([\w\d\+\/]*)/)[b]})),Q)&&(n=(k=b.get(B))?k.toString():null),Q>>G[2])&&5<=(Q- +G[2]&10)&&(d=["e","g","l"],e[37](88,y,y.I,"c",function(){return O[6](27,!0,y)}),e[37](56,y,y.I,"d",function(S){(S=["M",27,"wM"],y[S[0]])[S[0]][S[2]](a[22](S[1],y.I))}),e[37](56,y,y.I,d[G[0]],function(){return O[6](19,!1,y)}),e[37](88,y,y.I,d[1],function(){return E[18](28,null,"r",y)}),e[37](72,y,y.I,b,function(S){((S=["sr",6,"M"],O)[S[1]](11,!1,y),y[S[2]])[S[2]][S[0]]()}),e[37](40,y,y.I,"j",function(){return E[18](26,null,"i",y)}),e[37](24,y,y.I,"i",function(){return E[18](30,null,"a",y)}),e[37](24, +y,y.I,k,function(S){return a[S=[8,"I","M"],11](S[0],y,new aU(y[S[2]].ZO(),t[5](2,y[S[1]][S[2]])),function(T,N,H,m,r,g,D,J,Z){if(null!=(J=[4,(Z=[2,1,"push"],1),2],O)[19](41,T,3))y.l();else{for(D=(g=((N=((r=E[3](12,T,(m=[],J[Z[1]])),r)&&t[34](32,y,r),y.I.M),N).z_=!1,W)[39](13,T,J[Z[0]],K[39].bind(null,8)),H=K[Z[1]](72,g),H.next());!D.done;D=H.next())m[Z[2]](N.KZ(E[3](15,T,B),D.value));(N.wn(m,W[48](54,J[Z[0]],T,J[0],r2)),O)[7](24,!0,N)}})}),W[39](4,d[G[2]],void 0,y.R,y.I,y),W[39](G[2],"n",void 0,y.Y, +y.I,y),W[39](3,l,void 0,y.X,y.I,y)),7))){if(k=(l=[1,0,2147483648],b)&l[G[2]])B=~B+l[G[0]]>>>l[1],b=~b>>>l[1],B==l[1]&&(b=b+l[G[0]]>>>l[1]);n=(y=E[35](30,B,b),k?-y:y)}return(Q|24)==Q&&(l.F.push([k,y,d]),l.l&&W[44](4,B,b,l)),n},function(Q,B,b,k,l,y,d,G,n,S,T,N,H){if(2==(Q<<1&(((3==(Q>>1&(N=["M","scrollLeft","scrollTop"],11))&&(H=O[46](8,function(m,r,g,D,J,Z){r=["b",(Z=["I",20,"M"],1),5];switch(m[Z[2]]){case r[1]:return O[28](58,m,B,y[Z[2]][Z[0]].send(new g2(G)));case B:if((n=m[Z[0]],n).gU())return g= +m.return,D=n.gU(),g.call(m,new jG("",0,sm[D]||sm[l]));if(!((J=(E[34](2,r[0],n.ay()),n.Mp()))&&a[2](34,t[30](21,b),J,l),y.sd(),T=n.ZO(),d)||!E[15](13,n,k)){m[Z[2]]=4;break}return O[28](53,m,r[2],X[1](17,3,a[39](10,G),d));case r[2]:S=m[Z[0]],T=DK+t[7](13,a[39](15,K[15](39,B,e[25](Z[1],r[1],null,new XQ,n.ZO()),S)),4);case 4:return m.return(new jG(T,n.kB(),null,n.qP(),n.NL(),n.ZQ()?a[39](15,n.ZQ()):null))}})),Q)|56)==Q&&(b=B.scrollingElement?B.scrollingElement:!m$&&E[48](8,B)?B.documentElement:B.body|| +B.documentElement,k=B.parentWindow||B.defaultView,H=Se&&k.pageYOffset!=b[N[2]]?new b0(b[N[1]],b[N[2]]):new b0(k.pageXOffset||b[N[1]],k.pageYOffset||b[N[2]])),31)))a:switch(y=["tileselect","multiselect","imageselect"],l){case "default":H=new eG;break a;case "nocaptcha":H=new Em;break a;case "doscaptcha":H=new JM;break a;case y[2]:H=new ZK;break a;case y[0]:H=new ZK("tileselect");break a;case "dynamic":H=new xl;break a;case B:H=new qk;break a;case "multicaptcha":H=new P$;break a;case k:H=new Mk;break a; +case y[1]:H=new V2;break a;case "prepositional":H=new FQ;break a;case b:H=new Yl}return(Q&30)==((Q+1^9)=Q&&(H=Error("Tried to read past the end of the data "+k+B+b)),Q)&&(d[N[0]]?(G=new Promise(function(m,r){c$(r,(d.M.onmessage=function(g,D){(D=g.data,D.type)==k&&m(D.data)},b))}),d[N[0]].postMessage(e[21](17,new Um(y),l)),H=G):H=B),H},function(Q,B,b,k,l,y,d,G,n,S){return(((Q&97)==(3==((Q-(S=[6,16,44],S[0])|37)>=Q&&(Q+8^S[1])>3)&&(ee.call(this),this.M=0,this.endTime=this.startTime=null),Q)&&(n=Array.prototype.filter.call(a[8](17,B,"grecaptcha-badge"),function(T){return E[43](74,T.getAttribute("data-style"),RU)}).length>b),Q)|40)==Q&&(E[42](14,xC.K(),W[14](43, +B,oU,2)),O[4](2),l=new hM,l.render(X[S[2]](13)),b=new fx,k=new u0(b,B,new v$,new Q5),this.M=new B5(l,k)),n},function(Q,B,b,k,l,y,d){return(Q+1^11)<((y=["slice",4,27],(Q&41)==Q)&&(b=O[22](7,b),d=K[y[2]](3,B,b)),Q)&&(Q-2|y[1])>=Q&&(b=void 0===b?8:b,k=new bP,k.update(B),l=k.digest(),d=K[8](1,"",l)[y[0]](0,b)),d},function(Q,B,b,k,l,y,d,G,n,S,T,N){if(!((Q+2^(T=[13,11,"M"],T)[1])>=Q&&(Q-2^22)>4)){for(n=(G=[0,"",1],G[0]),d=G[1];n<=k.length/b-G[2];n++){for(l=(y=(n+G[2])*b-(S=G[0], +G)[2],G[0]);y>=n*b;y--)l+=k[y]<>>G[0]).toString(36)}N=d}if(!(Q>>2&T[0]))try{N=Object.keys(a[6](2,1,B)||{})}catch(H){N=[]}return(Q-9|32)=Q&&(k[T[2]].close(),k[T[2]]=l,e[37](40,k,k[T[2]],"message",function(H){return a[46](48,b,B,H,k)}),k[T[2]].start()),N},function(Q,B,b,k,l,y,d,G,n,S,T,N,H){if(1<=(H=["push",66,null],(Q^25)>>3)&&20>(Q|8))a:if(G=[512,1,256],d=W[25](2,14,l),k>=d||y){if(l&G[T=l,2])n=b[b.length-G[1]];else{if(B==H[2]){N=T;break a}T|=(n=b[d+(+!!(l&G[0])-G[1])]={}, +G[2])}N=((n[k]=B,T!==l)&&so(b,T),T)}else b[k+(+!!(l&G[0])-G[1])]=B,l&G[2]&&(S=b[b.length-G[1]],k in S&&delete S[k]),N=l;return Q+3>>1<(2==(Q>>1&6)&&(n=[5944,46,0],G=k(b(),4),l(G,10)&&(y=l(G,10)(e[7](15,1,17)))&&y[n[2]]&&(d=k(y[n[2]],n[1])||""),N=W[36](H[1],n[0])(d)),Q)&&(Q+3^25)>=Q&&(y=kf,S=k.L,d=Xq(S),a[49](4,d),G=W[28](1,B,2,y,S,b,void 0,d),n=l!=H[2]?W[11](52,y,l):new y,G[H[0]](n),jH(n.L)&2?lP(G,B):lP(G,16),N=n),N},function(Q,B,b,k,l,y,d,G,n){return(((n=[1,"M",90],Q)&n[2])==Q&&(G=(b||document).getElementsByTagName(String(B))), +Q-5<<2>=Q)&&(Q-3^30)>(d=[63,1,3],2)&7||(P.Promise&&P.Promise.resolve?(B=P.Promise.resolve(void 0),Nv=function(){B.then(K[24].bind(null,1))}):Nv=function(G){E[16]((G=[5,!1,1],G[2]),null,G[1],K[24].bind(null,G[0]))}),2>(Q^53)>>4)&&Q+d[1]>>d[2]>=d[1]&&(y=e[25](15,k,B,K[34](28,b,l))),(Q|16)==Q)&&(l=k.style[t[13](32,"visibility")],y="undefined"!==typeof l?l:k.style[K[37](11,b,k,"visibility")]||B),Q)&&(y=NI('')),y},function(Q,B,b,k,l,y,d,G,n){return((Q^22)&(((Q-(G=[1,null,21],9)<<2=Q&&((y=k.M)||(l={},E[37](8,B,k)&&(l[B]=!0,l[b]=!0),y=k.M=l),n=y),Q)+2^G[2])=Q&&(this.errorCode=B),7)||(L8.call(this,[k.left,k.top],[k.right,k.bottom],l,y),this.l=b,this.F=B,this.X=!!d),4)<=(Q>>G[0]&7)&&19>(Q^15)&&(this.M=G[1],this.I=G[1]),n},function(Q,B,b,k,l,y,d,G,n,S,T){if((Q&((Q^38)>>(S=[3,"captureStackTrace",2], +S[0])||H5||(a[11](13,function(N){return N.nS.origin},function(N){return tj.add(N)}),H5=new tO,e[37](56,H5,W[47](4),"message",function(N,H,m,r,g){for(m=(H=K[1](40,OP.values()),H.next());!m.done;m=H.next())g=m.value,(r=g.filter(N))&&g.yN(r)})),78))==Q){if(Error[S[1]])Error[S[1]](this,kb);else if(k=Error().stack)this.stack=k;B&&(this.message=String(B)),void 0!==b&&(this.cause=b),this.M=!0}if((Q-S[0]|82)=Q)O[46](42,function(N,H){if(H=["from","o",53],N.M==l)return(n=y[H[1]])!=b&&n.size?O[28](H[2], +N,2,y.PQ.send(k,new $f(y[H[1]]))):N.return();y.z_=(((G=(d=N.I,new Map(d.BC)),Array)[H[0]](G.keys()).forEach(function(m){return y.o["delete"](m)}),y).X=y.X.concat(Array[H[0]](G.values()).map(function(m){return new mT(m)})),N.M=B,d).Lj});return(Q+((Q&121)==Q&&(T=W5?!!aR&&!!aR.platform:!1),9)^22)=Q&&(T=B^b^k),T},function(Q,B,b,k,l,y){return((Q&42)==(y=[6,1,375],Q)&&(l=Error("Invalid wire type: "+b+" (at position "+k+B)),14<=(Q|5)&&(Q<>(3==(Q^((22>(n=[49,58,9],Q+n[2])&&10<=((Q|2)&15)&&(k instanceof rd?(b.l=k,X[15](1,null,b.l,b.P)):(l||(k=E[36](11,B,gd,k)),b.l=new rd(k,b.P)),S=b),Q-6<<2=Q&&(k&&!b.A&&(t[39](n[1],b),b.l=B,b.M.forEach(function(T,N,H,m){N!=(m=[2,null,(H=N.toLowerCase(),0)],H)&&(a[17](23,m[1],this,N),E[8](m[0],m[1],m[2],H,this,T))},b)),b.A=k),11))>>3&&(l=a[13].bind(null,1),"none"!=K[n[0]](26,B,"display")?S=l(B):(y=B.style,G=y.position,b=y.display,k=y.visibility,y.visibility= +"hidden",y.position="absolute",y.display="inline",d=l(B),y.display=b,y.position=G,y.visibility=k,S=d)),3)&&(S=W[44](64,null,function(T,N,H,m,r,g,D,J){return O[46](42,function(Z,w,C,p,z,I){if(Z.M==(I=[4,(C=[1023,!1,"A"],59),"set"],l)){if(!T)throw 1;return(z=(p=((r=(J=E[12](19,C[0],d),new Uint8Array(12)),N.getRandomValues(r),w=new bP,w).update(y),new Uint8Array(w.digest())),T.importKey(b,p,{name:"AES-GCM",length:p.length},C[1],["encrypt","decrypt"])),O)[28](54,Z,2,z)}if(Z.M!=B)return D=Z.I,O[28](I[1], +Z,B,T.encrypt({name:"AES-GCM",iv:r,additionalData:new Uint8Array(0),tagLength:128},D,new Uint8Array(J)));return(H=(g=(m=Z.I,new Uint8Array(m)),new Uint8Array(12+g.length)),H)[I[2]](r,k),H[I[2]](g,12),Z.return(O[39](8,I[0],H,C[2]))})})),S},function(Q,B,b,k){return Q-(Q<<1&(b=["l",!1,null],7)||(this.U8=b[2],this.M=new j$,this[b[0]]=b[1],this.A=b[1],this.I=O[21].bind(b[2],39)),5)&2||(k=B.Object.getOwnPropertyNames),k},function(Q,B,b,k,l,y,d){if((Q&118)==(2==(Q^((y=["test","(",30],(Q-3^y[2])>=Q&&(Q-8^ +17)>3&&(Dc.call(this),this.pZ=B,this.Y7=b,this.lm=new XP),Q))a:{k=["parse",")","Invalid JSON string: "];try{d=P.JSON[k[0]](B);break a}catch(G){}if((b=String(B),/^\s*$/[y[0]](b))?0:/^[\],:{}\s\u2028\u2029]*$/[y[0]](b.replace(/\\["\\\/bfnrtu]/g,"@").replace(/(?:"[^"\\\n\r\u2028\u2029\x00-\x08\x0a-\x1f]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?)[\s\u2028\u2029]*(?=:|,|]|}|$)/g,"]").replace(/(?:^|:|,)(?:[\s\u2028\u2029]*\[)+/g, +"")))try{d=eval(y[1]+b+k[1]);break a}catch(G){}throw Error(k[2]+b);}if(!(Q+((Q-2^32)=Q&&(B=E[12](7,this),b=O[37](4,this),this.I[B]=b),1)>>4))a:{if(l!=B)switch(l.nR){case k:d=k;break a;case -1:d=-1;break a;case b:d=b;break a}d=B}return d},function(Q,B,b,k,l,y,d,G,n){return(Q-4^(((Q-(G=[40,17,"%2525"],9)>>4||(k.A=l?W[29](34,G[2],b,B):b,n=k),Q)|56)==Q&&(b.style.display=B?"":"none"),3==((Q|9)&7)&&(n=B instanceof e$&&B.constructor===e$?B.M:"type_error:SafeUrl"),G[1]))=Q&&(d=K[G[0]](25, +1,k),b.F=d.mg,b.I=d.buffer,b.A=l||B,b.l=void 0!==y?b.A+y:b.I.length,b.M=b.A),n},function(Q,B,b,k){return(Q&((Q|(b=[0,28,4],b[2]))>>3||L.call(this,B,b[0],"setoken"),b[1]))==Q&&L.call(this,B,b[0],"rresp"),k},function(Q,B,b,k,l,y,d){return 17>(Q^(1==(Q-((Q&(d=["M",45,"push"],107))==Q&&(100<=k[d[0]].length&&(k[d[0]]=[O[37](72,B,E[d[1]](19,"]",k[d[0]])).toString()]),k[d[0]][d[2]](b)),4)&7)&&(y=e[3](29,B,function(G){return X[16](2,G)(document)})),32))&&7<=Q-6&&(l=K[27](93,B,k)[B]||b,!l&&P.self&&P.self.location&& +(l=P.self.location.protocol.slice(0,-1)),y=l?l.toLowerCase():""),y},function(Q,B,b,k,l){return((Q-(k=[3,25,5],4)>>k[2]=k[0]&&(l=b.length==B?X[48](20):new EP(b,Jj)),Q)&110)==Q&&(l=X[k[1]](k[0],9999,"number",b)),l},function(Q,B,b,k,l,y,d,G,n,S){return(((((Q>>(n=[5,2,8],n[1])&n[0]||(G=a[41](n[2],k,d,y),d.A=d.A.then(G,G).then(function(T,N,H){return O[46](14,function(m,r,g){r=[2,null,(g=[2,"M",14],1)];switch(m[g[1]]){case r[g[0]]:if(!(H=d[N=l,g[1]].X,H)){m[g[1]]=r[0];break}return O[28](52, +m,b,X[1](16,b,a[39](g[2],T),H));case b:N=m.I;case r[0]:return O[28](52,m,B,E[40](4,r[g[0]],r[1],d,41,T));case B:return m.return({wf:m.I,K6:N})}})}),S=d.A),(Q<=n[2]&&26>(Q^27))&&(this.I=this.M=this.l=0),Q)|40)==Q&&(l=void 0===l?t[n[2]].bind(null,4):l,k=void 0===k?!0:k,S=function(T,N,H){var m=[43,"apply",46],r=Zc[m[1]](3,arguments);T=void 0===T?O[m[0]](38):T;var g,D=this,J,Z,w,C,p,z;return O[m[2]](m[2],function(I,x,A){if(I[A=["I",15,(x=[1,3,0],"M")],A[2]]==x[0])return C8=C8||H,t6=N||t6,J= +Math.abs(O[37](10,5,T)),g=e[37](1,2,J),k&&K[45](51,x[2],function(F){return r[(F=[9510,36,"unshift"],F)[2]](W[F[1]](67,8014)(),W[F[1]](67,2990)(),W[F[1]](33,F[0]),W[F[1]](33,5109))}),C=K[46](40,4,5,"\\",!0,function(){return B.apply(D,r)},l),O[28](52,I,2,C[A[0]](J));return((w=(z=I[A[0]],Z=z.H6,z.Se),W[8](48,x[0],w,g),W[A[1]](61,g,t6.fo(),x[1]),void 0)!=H&&C8==H&&(p=new wd,a[2](13,g,x[1])==x[2]||C[A[2]].fo()==x[2]?t[14](8,2,p,x[0]):C.l?t[14](4,x[1],p,x[0]):C.A?t[14](20,4,p,x[0]):t[14](28,x[0],p,x[0]), +W[8](32,2,Z,p),K8.push(p),C8=void 0),I).return(new p8(g,Z,b))})}),Q)-n[1]^6)>=Q&&(Q-9^32)(((d=["I",7,"M"],((Q^55)&15)>=d[1]&&1>(Q^25)>>4)&&(this.A=B,this[d[0]]=k,this.l=b),18<=Q-6&&2>(Q<<1&4))&&(k[d[0]]||k[d[2]]!=B&&3!=k[d[2]]||t[17](40,b,k),k.A?k.A.next=l:k[d[0]]=l,k.A=l),Q-1&8)&&0<=Q-4>>3&&(y=NI(K[47](30," "))),y},function(Q,B,b,k,l,y,d,G,n,S,T,N){if(!(Q-(T=[6,3,43],(Q^T[1])&30|| +(Aj.call(this,B,b),this.D=!1,this.RB=this.N=null),7)>>4)&&b)a:{for(G=(k=(S=zL,B.split(".")),0);G>T[1]||(l=K[T[2]].bind(null,13),qv=b,P5=B,Mv=k,V5=l),(Q|T[0])>>T[1]==T[1])&&(N=(l=k(B(),35))?W[36](33,136)(l)+","+W[36](65,7943)(l):""),N},function(Q,B,b,k,l,y,d,G){if(!((G=[2,23,"U8"], +Q|8)>>4))a:{l=["boolean",null,0];switch(typeof k){case b:d=isFinite(k)?k:String(k);break a;case l[0]:d=k?1:0;break a;case "object":if(k){if(Array.isArray(k)){d=FP||!t[1](G[1],!1,B,void 0,k)?k:void 0;break a}if(O[13](67,l[1],k)){d=a[49](11,l[1],l[G[0]],k);break a}if(k instanceof EP){d=(y=k[G[2]],y==l[1]?"":"string"===typeof y?y:k[G[2]]=a[49](27,l[1],l[G[0]],y));break a}}}d=k}return(Q&30)==Q&&L.call(this,B),d},function(Q,B,b,k,l,y){return 1==(Q>>2&((Q&28)==((Q-2|18)>=(4<=(y=["max",5,31],Q<<2&11)&&12> +((Q|6)&16)&&(Yf||(c5?Yf=new UP(function(d){O[31](50,d)},c5):Yf=new RR(function(){O[31](48,K[9](1))},20)),B=Yf,B.isActive()||B.start()),Q)&&(Q+1^28)=Q&&Q-8<<1=Q&&(Q-3^11)=Q)&&L.call(this,B),5)>>3&&(ee.call(this),this.M=B,K[5](29,y[2],B,this.l,y[1],this),K[5](31,"click",B,this.I,y[1],this)),d},function(Q,B,b,k,l,y,d,G,n,S,T,N){if(!((Q^6)&((Q>>1&((Q|(T=[46,15,34],80))==Q&&((G=P[k])||"undefined"===typeof document||(G=(new hj(document)).get(l)),N=G?X[41](3,B,b,y,d,G):null),T[1])||(this.M=B,this.no=!0),6)<=(Q+9&T[1])&&17>(Q|7)&&(B=[null,!1,0],this.I=void 0,this.R=B[2],this.l=B[2],this.S=B[1],this.M=1,this.A=B[0], +this.F=B[0]),3)))for(G=b||["rc-challenge-help"],S=[1,"none",null],k=0;k>((Q^57)&(D=[2,"href","__Secure-3PAPISID"],11)||(null!=l&&"object"===typeof l&&l.OM===Da?J=l:Array.isArray(l)?(G=S=jH(l),0===G&&(G|=y&32),G|=y&D[0],G!==S&&so(l,G),J=new b(l)):(k?(y&D[0]?(n=b[f8])?d=n:(N=new b,uP(N.L,B),d=b[f8]=N):d=new b,T=d):T=void 0,J=T)),4)||(b=void 0===b?!1:b,y=["moz-extension:",1E3,"__OVERRIDE_SID"],r=e[12](16,"blob:","//", +String(P.location[D[1]])),k=[],g=b,g=void 0===g?!1:g,H=P.__SAPISID||P.__APISID||P.__3PSAPISID||P[y[D[0]]],e[27](18,g)&&(H=H||P.__1PSAPISID),H?G=!0:("undefined"!==typeof document&&(S=new hj(document),H=S.get("SAPISID")||S.get("APISID")||S.get(D[2])||S.get("SID")||S.get("OSID"),e[27](16,g)&&(H=H||S.get("__Secure-1PAPISID"))),G=!!H),G&&(m=(d=0==r.indexOf("https:")||0==r.indexOf("chrome-extension:")||0==r.indexOf(y[0]))?P.__SAPISID:P.__APISID,m||"undefined"===typeof document||(N=new hj(document),m=N.get(d? +"SAPISID":"APISID")||N.get(D[2])),(n=m?X[41](D[0],y[1],"",B,d?"SAPISIDHASH":"APISIDHASH",m):null)&&k.push(n),d&&e[27](17,b)&&((l=X[28](81,y[1],"","__1PSAPISID","__Secure-1PAPISID",B,"SAPISID1PHASH"))&&k.push(l),(T=X[28](80,y[1],"","__3PSAPISID",D[2],B,"SAPISID3PHASH"))&&k.push(T))),J=0==k.length?null:k.join(" ")),Q<=Q&&(Q-3^19) +Q-(y=[30,"D",2],9)&&(Q^y[0])>>3>=y[2]&&(k=a[21](5,2048,b),B[y[1]].push.apply(B[y[1]],a[36](18,k)),l=k),Q-8>>4||L.call(this,B),l},function(Q,B,b,k,l,y,d,G,n,S,T,N){return(Q+9&14)<((Q|32)==(Q<<(Q>>(N=[0,"div","oB"],1)&13||(d=["Verificar",!1,"Receber um desafio visual"],K1.call(this),this.XL=k,this.S=this.yl=new QQ(b,B),this.N=null,this.H_=l||d[1],this.response={},this[N[2]]=[],y=e[30](48,N[1],d[1]),this.fS=K[44](21,1,this,"rc-button",l?void 0:3,y?"rc-button-reload-on-dark":"rc-button-reload","Receber outro desafio", +void 0,"recaptcha-reload-button"),this.AG=K[44](18,1,this,"rc-button",l?void 0:1,y?"rc-button-audio-on-dark":"rc-button-audio","Receber um desafio de \u00e1udio",void 0,"recaptcha-audio-button"),this.jK=K[44](19,1,this,"rc-button",void 0,y?"rc-button-image-on-dark":"rc-button-image",d[2],void 0,"recaptcha-image-button"),this.eK=K[44](23,1,this,"rc-button",l?void 0:2,y?"rc-button-help-on-dark":"rc-button-help","Ajuda",void 0,"recaptcha-help-button",!0),this.hG=K[44](18,1,this,"rc-button",void 0,y? +"rc-button-undo-on-dark":"rc-button-undo","Desfazer",void 0,"recaptcha-undo-button",!0),this.RB=E[35](1,1,d[N[0]],this,void 0,"recaptcha-verify-button"),this.YU=new BS),2)&22||L.call(this,B,7),Q)&&(K1.call(this,B),this.M=null,this.l=W[7](26,document,"recaptcha-token")),(Q|80)==Q&&(S=[null,"dg","t"],NE.call(this,t[N[0]](3,"userverify"),t[24](54,5,bO),"POST"),X[40](26,this,"c",B),X[40](18,this,"response",b),k!=S[N[0]]&&X[40](19,this,S[2],k),l!=S[N[0]]&&X[40](22,this,"ct",l),y!=S[N[0]]&&X[40](27,this, +"bg",y),d!=S[N[0]]&&X[40](24,this,S[1],d),G!=S[N[0]]&&X[40](25,this,"mp",G),n!=S[N[0]]&&X[40](23,this,"srr",n)),Q)&&(Q+6&18)>=Q&&(T=K[13](7,E[23](26,e[32](32,B),k),[E[43](60,b),E[43](59,l)])),T},function(Q,B,b,k,l,y,d,G){if((d=[48,1,"Toque no centro das placas"],Q)+3>>d[1]=Q&&(l=new kL(B),b.dispatchEvent(l))){k=new lO(B);try{b.dispatchEvent(k)}finally{B.M()}}if((Q-5^12)=Q){y=(l=["/m/04w67_",'
((Z=[15,"indexOf","M"],(Q|1)&14||(l=k||yQ.K(),Ni.call(this,null,l,b),this.u=void 0!==B?B:!1),Q)-9&Z[0])&&2<=(Q|3)>>3&&(H=[0,.01,"&"],0!==d.I.length)){for(D=(N=(g=e[Z[0]](2,H[1],d),G=g.search(L$), +[]),H[0]);(S=O[38](4,l,"format",7,35,G,D,g))>=H[0];)N.push(g.substring(D,S)),D=Math.min(g[Z[1]](H[2],S)+1||G,G);for(m=(T=(T=(N.push(g.slice(D)),N.join("").replace(HS,b)),t$(T,"auth",d.VN(),"authuser",d.Y7||"0")),H[0]);m(Q|1)&&(l=void 0===l?{}:l,J=O[46](10,function(w,C,p){if((p= +["S",28,1],C=[1,"e",2],w.M)==C[0]){if(y=(k.l.P_(!1),k).I,k.I==C[p[2]]){w.M=C[2];return}return O[p[1]](54,w,(k.I=B,C[2]),k.l.n1())}(y==b?K[23](12,C[0],k,l):"c"!=y&&k[p[0]].then(function(z){return z.send("e")},E[10].bind(null,8)),w).M=0})),Z[0]))&&(this.l=this.I=this[Z[2]]=B),J},function(Q,B,b,k,l){return Q-(((l=[2,4,9],Q-l[1])^5)>=Q&&(Q-3^1)=Q&&(this.x=void 0!==B?B:0,this.y=void 0!==b?b:0),k},function(Q,B,b,k,l,y,d,G,n){if((Q>>((G=[7,1,4],Q-5<=Q&&(Q-8|G[1])< +Q)&&(t[6](40,b,k),b||v9?b||$L?(l=Math.trunc(Number(k)),Number.isSafeInteger(l)?n=String(l):(y=k.indexOf(B),-1!==y&&(k=k.substring(0,y)),b||mE?(t[44](79,32,k),d=X[48](83,WS,aM)):d=k,n=d)):n=E[38](15,".","0",k):n=k),G[1])&8)=Q&&(Q+5&41)>k[1]=Q&&(b.M||O[28](8,k[0]," ", +b),l=b.M[B]),l},function(Q,B,b,k,l,y,d,G,n,S,T,N,H,m,r){if(((Q-3<<(m=[46,2,0],m[1])>=Q&&(Q-m[1]|38)>1>=Q)if(Array.isArray(b))for(y=B;y>>m[2]:void 0:B)}return(Q^9)&11||(r=O[m[0]](9,function(g,D,J){J=[(D=[4,"could not contact reCAPTCHA.",5],43),"l",!1];switch(g.M){case 1:if(!y[J[1]])throw Error(D[1]);if(!y.I)return g.return(t[41](49,k));return O[g[J[1]]=k,28](53,g,D[0],y[J[1]]);case D[0]:t[G=g.I,33](24,0,g,3);break;case k:throw t[J[0]](17,g),Error(D[1]);case 3:return N={},T=(N[B]=y.M,N),g[J[1]]=D[2],O[28](56,g,l,G.send("r", +T,1E4));case l:return S=g.I,n=new L5(S),H=n.gU(),d=n.Cx(),y.M=W[11](17,n,k),y.M&&H!=k&&H!=b&&10!=H&&d?y.A=new jS(d):y.I=J[2],g.return(t[41](51,H,n.Ra()));case D[2]:throw t[J[0]](16,g),Error("challengeAccount request failed.");}})),r},function(Q,B,b,k,l,y,d,G){return(((Q^(d=["I",28,3],36))>>4>1=Q&&(y=l!=B?"="+encodeURIComponent(String(l)):"",G=a[36](d[1],"?",k+y,b)),2)>(Q^2)>>4&&1<=(Q|7)>>d[2]&&(sj.length?(l=sj.pop(),O[23](d[1],B,l,b),k=l): +k=new DM(B,void 0,void 0,b),this.M=k,this[d[0]]=-1,this.l=this.M.M,this.A=-1,a[13](16,b,this)),G},function(Q,B,b,k,l,y,d,G,n,S,T,N,H,m,r,g,D,J){return(Q&89)==((Q+8&61)<((((J=[26,1,34],Q-4)&13)==J[1]&&(this.M=B||P.document||document),(Q&78)==Q)&&(N=[0,"data-","HEAD"],m={timeout:1E4},T=m.document||document,H=t[44](16,y).toString(),g=t[33](J[2],"SCRIPT",new Xx(T)),d={x$:g,WL:void 0},S=new eS(Ej,d),r=B,G=m.timeout!=B?m.timeout:5E3,G>N[0]&&(r=window.setTimeout(function(Z,w){(e[Z=((w=["Timeout reached for loading script ", +!1,0],X)[w[2]](40,B,g,!0),new J$(1,w[0]+H)),13](16,w[1],S),t)[1](2,!0,w[1],Z,S)},G),d.WL=r),g.onload=g.onreadystatechange=function(Z){g[Z=[!1,"WT","readyState"],Z[2]]&&g[Z[2]]!=b&&"complete"!=g[Z[2]]||(X[0](41,B,g,m[Z[1]]||Z[0],r),S.yN(B))},g.onerror=function(Z,w){e[X[w=[13,12,43],0](w[2],B,g,!0,r),Z=new J$(0,"Error while loading script "+H),w[0]](w[1],!1,S),t[1](8,!0,!1,Z,S)},n=m.attributes||{},ZM(n,{type:"text/javascript",charset:"UTF-8"}),E[16](24,N[J[1]],"object",g,n),E[J[1]](J[1],l,k,g,y),e[33](9, +N[2],N[0],T).appendChild(g),D=S),Q)&&Q-5<=Q&&(this.M=B),Q)&&(b=new C$,B=a[J[0]](37,5,J[1],wd,b,K8),k=W[8](8,2,"05",B),D=a[39](14,k)),D},function(Q,B,b,k,l,y,d,G){if(G=["item",2,"elements"],!((Q|1)>>4))if(k.tagName==B)for(y=0,l=k[G[2]];k=l[G[0]](y);y++)X[40](G[1],"FORM",b,k);else 1==b&&k.blur(),k.disabled=b;if((Q-G[1]^30)>=Q&&(Q+G[1]&44)>1&((Q+4&63)=Q&&kb.call(this),11))&&25>Q-3&&(B.A.M["delete"](b),B.A.add(b,k)),d},function(Q, +B,b,k,l,y,d,G,n,S){if(((((Q<<1&15)==(S=["D",16,2],S[2])&&((k=wu.K()).M.apply(k,a[36](18,b[S[0]])),b[S[0]].length=B),Q+S[2]>>4)||(d=["blob:"," ",null],n=(G=String(P.location.href))&&y&&l?[l,K[7](S[2],S[1],B,b,20,e[12](17,d[0],"//",G),k||d[S[2]],y)].join(d[1]):null),Q-8)^8)>=Q&&(Q+6^28)>1)>=Q&&Q+7>>2>4&&5>(Q-8&14)){if(y=(T=[0,128,57343],!1),y=void 0===y?!1:y,zb){if(y&&/(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])/.test(k))throw Error("Found an unpaired surrogate");l=(IM||(IM=new TextEncoder)).encode(k)}else{for(n= +(G=new (S=y,d=T[0],Uint8Array)(3*k.length),T[0]);nm)G[d++]=m>>b|192;else{if(55296<=m&&m<=T[2]){if(56319>=m&&n>18|B,G[d++]=N>>g[2]&63|T[1],d++]=N>>b&63|T[1],G[d++]=N&63|T[1];continue}else n--;if(S)throw Error("Found an unpaired surrogate");m=65533}G[d++]=m>>g[2]|224,G[d++]=m>>b&63|T[1]}G[d++]=m&63|T[1]}l=d===G.length?G:G.subarray(T[0],d)}r= +l}return r},function(Q,B,b,k,l,y,d,G,n,S,T){if(S=[4,3,"addEventListener"],(Q&108)==Q){if(l==S[1]&&k.I&&!k.F)for(G=y;G&&G.F;G=G.l)G.F=b;if(k.M)k.M.l=B,K[S[0]](23,2,l,d,k);else try{k.F?k.A.call(k.l):K[S[0]](27,2,l,d,k)}catch(N){xL.call(B,N)}W[22](17,100,qi,k)}return(Q-(1==((Q|24)==Q&&(n=new Map,G=W[11](1,"anchor"),d=W[11](2,k),y="recaptcha/"+(G.includes("enterprise")?"enterprise.js":"api.js"),n.set(y,B),n.set("recaptcha/releases/-QbJqHfGOUB8nuVRLvzFLVed",1),n.set(G,l),n.set(d,b),T=n),(Q^74)>>S[1])&& +(n=P.MessageChannel,"undefined"===typeof n&&"undefined"!==typeof window&&window.postMessage&&window[S[2]]&&!t[31](2,"Presto")&&(n=function(N,H,m,r,g,D,J,Z){this[((J=(D=(H=(m=((N=O[1](25,(r=[(Z=["port2","protocol","appendChild"],"IFRAME"),"callImmediate","port1"],r[0]),document),N.style.display="none",document.documentElement)[Z[2]](N),g=N.contentWindow,g.document),m.open(),m.close(),r[1]+Math.random()),g).location[Z[1]]==k?"*":g.location[Z[1]]+"//"+g.location.host,C5)(function(w){if((D==b||w.origin== +D)&&w.data==H)this.port1.onmessage()},this),g).addEventListener("message",J,l),this)[r[2]]={},Z[0]]={postMessage:function(){g.postMessage(H,D)}}}),"undefined"===typeof n||a[10](53,"MSIE")?T=function(N){P.setTimeout(N,0)}:(G=new n,y=d={},G.port1.onmessage=function(N){void 0!==d.next&&(d=d.next,N=d.E_,d.E_=B,N())},T=function(N){(y=(y.next={E_:N},y.next),G.port2).postMessage(0)})),5)|11)=Q&&(B.D4=b),T},function(Q,B,b,k,l,y){return((((y=[3,4,"b1"],Q)^53)>>y[1]||(B.didTimeout?this[y[2]](null): +this[y[2]](B)),Q+8)&38)=Q&&(l=document.body),2==Q-6>>y[0]&&(l=K[13](6,E[23](42,e[32](32,11),B),[E[43](31,b),E[43](61,k)])),l},function(Q,B,b,k,l,y,d,G,n,S,T,N,H){if(Q-7<<(0<=(N=[30,1,77],Q-8>>4)&&10>(Q^19)&&(this.width=B,this.height=b),N)[1]=Q)W[15](N[2],b,k,B);if((Q|40)==((Q+(Q<<2&31||(d=new Date(k,l,y),0<=k&&k=Q&&Q+4>>2>4)||(l=void 0===l?0:l,d=K[12](5,null,O[40](20,B,b,k),l)),28<=(Q|6)&&11>(Q>>y[0]&12))&&(this[y[2]]=B[P.Symbol.iterator](), +this.I=b),(Q-y[0]^11)=Q&&(l=[18,45,10],d=l[y[1]]*k(b(),l[y[0]],l[0],21)+k(b(),l[y[0]],l[0],36)),d},function(Q,B,b,k,l,y,d,G,n,S,T){if(1>(S=[2,"I","getAttribute"],(Q|6)>>4)&&0<=Q-3>>3)W[15](77,b,k,B);return((Q-(23>Q-7&&11<=((Q^10)&15)&&(n=K[11](52,B,b),k=new b0(0,0),G=n?K[11](40,B,n):document,d=!Se||Number(Mi)>=B||E[48](27,a[3](32,G).M)?G.documentElement:G.body,b==d?T=k:(y=K[14](8,b),l=X[5](56,a[3](36,n).M),k.x=y.left+l.x,k.y=y.top+l.y,T=k)),8)|58)=Q&&(b.l&&E[S[0]](S[0], +null,b),b.B9=k,b[S[1]]=K[5](32,"keypress",b.B9,b,l),b.ey=K[5](29,"keydown",b.B9,b.kx,l,b),b.l=K[5](30,B,b.B9,b.ZE,l,b)),(Q|48)==Q)&&(d=k.Tk())&&(y=l[S[2]](b)||B,d!=y&&(d?l.setAttribute(b,d):l.removeAttribute(b))),T},function(Q,B,b,k,l,y,d,G,n,S,T){if(((Q|24)==(S=[1,5,2],Q)&&(B=[0,!0,"prepositional"],PM.call(this,VQ.width,VQ.height,B[S[2]],B[S[0]]),this.u=null,this.W=B[0],this.C=null,this.M=[],this.l=null),24>Q<>((((Q| +80)==Q&&(k=[0,8,"-"],b&2147483648?(O[15](3)?n=""+(BigInt(b|k[0])<>>k[0])):(d=K[S[0]](24,E[39](32,S[0],b,B)),G=d.next().value,l=d.next().value,n=k[S[2]]+e[S[0]](20,k[S[0]],l,G)),y=n):y=e[S[0]](19,k[S[0]],b,B),T=y),Q)+3^S[1])=Q&&(T=YL||(YL=new EP(null,Jj))),S)[2]&7)&&(T=new yH(function(N,H,m){0==(H=E[m=[5,22,33],m[0]](m[1],"img",document,b,B),H.length)?N():K[m[0]](m[2],"load",H[0],function(){N()})})),T},function(Q,B,b,k,l,y,d,G,n,S,T){if(23<=(T=[2,58,"M"],Q+1)&& +24>Q>>T[0]&&!cS)for(n=["+/=","+/","-_=","-_.","-_"],l=b,cS={},k="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789".split("");5>l;l++)for(y=k.concat(n[l].split(B)),Uj[l]=y,G=b;G>((Q|(1==(q=["getAttribute",2,18],Q>>1&7)&&(PM.call(this,RM.width,RM.height,B||"imageselect"),this.ig=this.C=null,this.P9=1,this.l={Se:{je:null,element:null}},this.D=null,this.s8=void 0),40))==Q&&(this.M=null),q)[1]&15)&&(M=a[26](39,B,b,oM,k,l)),58))==Q){if(I=(K[q[2]](65,(l=["___grecaptcha_cfg",(k=void 0===(b=void 0===b?{}:b,k)?!0: +k,"data-callback"),0],B))&&1==B.nodeType||!K[q[2]](48,B)||(b=B,B=O[1](8,"DIV",document),X[44](9).appendChild(B),b[h$.MU()]="invisible"),a[29](59,1,B)),!I)throw Error("reCAPTCHA placeholder element must be an element or id");if((!b[n8.MU()]&&window[l[0]].badge&&window[l[0]].badge.length>l[q[1]]&&(b[n8.MU()]=window[l[0]].badge[l[q[1]]]),k)?(m=I,S=m[q[0]]("data-sitekey"),y=m[q[0]]("data-type"),r=m[q[0]]("data-theme"),z=m[q[0]]("data-size"),T=m[q[0]]("data-tabindex"),Z=m[q[0]]("data-bind"),n=m[q[0]]("data-preload"), +F=m[q[0]]("data-badge"),G=m[q[0]]("data-s"),J=m[q[0]]("data-pool"),g=m[q[0]]("data-content-binding"),x=m[q[0]]("data-action"),H={sitekey:S,type:y,theme:r,size:z,tabindex:T,bind:Z,preload:n,badge:F,s:G,pool:J,"content-binding":g,action:x},(w=m[q[0]](l[1]))&&(H.callback=w),(N=m[q[0]]("data-expired-callback"))&&(H["expired-callback"]=N),(A=m[q[0]]("data-error-callback"))&&(H["error-callback"]=A),(C=m[q[0]]("data-fast"))&&(H.fast="false"===C.toLowerCase()?!1:!!C),d=H,b&&ZM(d,b)):d=b,a[20](40,I))throw Error("reCAPTCHA has already been rendered in this element"); +if("BUTTON"==I.tagName||"INPUT"==I.tagName&&("submit"==I.type||"button"==I.type))d[f$.MU()]=I,D=O[1](27,"DIV",document),I.parentNode.insertBefore(D,I),I=D;if(0!==W[0](24,1,I).length)throw Error("reCAPTCHA placeholder element must be empty");if(!d||!K[q[2]](97,d))throw Error("Widget parameters should be an object");M=((p=new uO(d,I),window)[l[0]].clients[p.id]=p,p.id)}return M},function(Q,B,b,k,l,y,d,G,n){if(4==((4==(n=[15,27,13],(Q^n[1])&n[0])&&(G=O[46](n[2],function(S){return S.return(E[7](1,B,224, +k,b))})),Q+4)>>4||(l=["http","",443],"*"==b?G="*":(d=X[18](n[2],!0,l[1],new vS(b)),k=X[n[0]](10,null,d,l[1]),y=e[2](24,l[1],O[22](73,k,l[1]),X[20](36,1,B,b)),y.F!=B||("https"==y.M?W[n[1]](3,null,l[2],y):y.M==l[0]&&W[n[1]](5,null,80,y)),G=y.toString())),(Q^44)&n[0]))if(b="undefined"!=typeof Symbol&&Symbol.iterator&&B[Symbol.iterator])G=b.call(B);else if("number"==typeof B.length)G={next:W[1](3,0,B)};else throw Error(String(B)+" is not an iterable or ArrayLike");if(!((Q|4)&25)){if(b==B)k=b;else{if("number"!== +typeof b)throw Error("Value of float/double field must be a number, found "+typeof b+": "+b);k=b}G=k}return 23<=((Q^75)&29)&&2>(Q<<2&4)&&(this.I=[],this.M=[]),G},function(Q,B,b,k,l,y,d,G,n,S,T){return 2==((3==(Q+((S=[4294967296,1,40],Q+8)>>4||(this.M=0,this.A=null,this.l=new Qo,this.I=new Qo),2)&7)&&(k=b>>B,n=Math.floor((b-G)/S[0]),k&&(y=K[S[1]](S[2],E[39](2,S[1],n,G)),l=y.next().value,n=d=y.next().value,G=l),WS=G>>>B,aM=n>>>B),Q+7)&15)&&(T=null!==B&&b in B?B[b]:void 0),3==(Q>> +S[1]&7)&&B.getDate()!=b&&B.M.setUTCHours(B.M.getUTCHours()+(B.getDate()B;)if(n=T-b>>b,d[n][H[2]]>G[H[2]])d[T]=d[n],T=n;else break;d[T]=G}if(Q<<2>=H[1]&&5>Q-4)if(y=[!1,!0,")"],W[19](13,k[H[2]]))N=y[0];else{if(!(G=(l=(k[H[0]]=k[H[2]][H[2]],e[37](84,k[H[2]])),l)>>>b,d=l&7,0<=d&&5>=d))throw X[14](8,y[2],d,k[H[0]]);if(G=Q){if(bm())for(;B.lastChild;)B.removeChild(B.lastChild);B.innerHTML=t[41](2,b)}if(3==(Q|H[1])>>3)a:{if(W[33](24)&&"Silk"!==k){if(d=aR.brands.find(function(m){return m.brand===k}),!d||!d.version){N=NaN;break a}l=d.version.split(B)}else{if((y=E[32](25,"Silk",b,"9.0","Edg/",k),"")===y){N=NaN;break a}l=y.split(B)}N=0===l.length?NaN:Number(l[0])}return 10<=((Q|7)&15)&&18>(Q|H[1])&&(k=["-QbJqHfGOUB8nuVRLvzFLVed","pat", +1],NE.call(this,t[0](32,k[H[1]]),t[24](50,5,k5),"POST"),e[29](32,!0,this),W[8](16,2,k[0],B),b=a[36](25,2),W[8](24,k[2],b,B),this[H[2]]=B.J()),N},function(Q,B,b,k,l,y,d,G,n,S){if(((6>((n=["l","call",61],Q-4)&8)&&1<=Q+1>>4&&(b==B?l.A[n[1]](l[n[0]],k):l.I&&l.I[n[1]](l[n[0]],k)),Q+6)&3||13==B.keyCode&&a[45](69,!1,this),(Q&n[2])==Q)&&(l&&(d="string"===typeof l?l:O[35](55,k,l),l=y.F&&d?K[2](11,y.F,d)||B:null,d&&l&&(G=y.F,d in G&&delete G[d],W[5](16,b,l,y.P),l.ug(),l.I&&W[45](6,l.I),E[35](37,B,B,l))),!l))throw Error("Child is not in parent component"); +return S},function(Q,B,b,k,l,y,d,G,n,S){if((Q-6^2)<(Q>>(n=[!0,0,"error"],2)&11||(S=NI('Toque no centro dos objetos da imagem seguindo as instru\u00e7\u00f5es acima. Se n\u00e3o estiver claro ou se voc\u00ea preferir outro desafio, atualize a p\u00e1gina para ger\u00e1-lo. Saiba mais.')),Q)&&(Q-6^15)>=Q&&(l.M=!1,l.U&&(l.I=b,l.U.abort(),l.I=!1),l.A=k,l.l=B,t[45](51,n[0],n[2],l),K[46](2,null,l)),32>Q-5&&14<=Q>>1)if(G=[!1,null,0],l&&l.once)S= +t[33](9,G[2],b,B,k,l,y);else if(Array.isArray(B)){for(d=G[2];d=Q&&(b.M+=B,b.l+=k,k>b.I&&(b.I=k)),S},function(Q,B,b,k,l){return(Q+9^((l=["M","I",25],Q)<<1&3||(this[l[0]]=b,this[l[1]]=B),l[2]))>=Q&&Q+9>>1>2&6||(g=[],m=[],T=[1,"_"," "],r=[],(Array.isArray(d)?2:1)==T[0]?(g=[G,y],dF(m,function(Z){g.push(Z)}),J=E[41](D[2],l,B,g[D[1]](T[2]))):(H=[],dF(d,function(Z){r.push(Z.key),H.push(Z.value)}),S=Math.floor((new Date).getTime()/b),g=0==H.length?[S,G,y]:[H[D[1]](D[0]),S,G,y],dF(m,function(Z){g.push(Z)}),n=E[41](12,l,B,g[D[1]](T[2])),N=[S,n],0==r.length||N.push(r[D[1]](k)), +J=N[D[1]](T[1]))),J},function(Q,B,b,k,l,y,d,G,n,S){if(5>((((Q|1)>>(27>Q>>(n=[2,"getDate","placeholder"],1)&&8<=((Q|6)&13)&&(t[20](n[0],Gy,b)?G=e[36](32,B,b.pS()):(null==b?k="":(b instanceof im?y=e[36](3,B,b instanceof im&&b.constructor===im?b.M:"type_error:SafeStyle"):(b instanceof Hd?d=e[36](n[0],B,W[20](6,b)):(l=String(b),d=tq.test(l)?l:"zSoyz"),y=d),k=y),G=k),S=G),3)||(S=Array.prototype.map.call(b,function(T,N){return 1<(N=T.toString(16),N.length)?N:"0"+N}).join(B)),Q&60)==Q&&(y=[0,100,1],"number"=== +typeof B?(this.M=X[45](72,y[1],1900,B,b||y[0],k||y[n[0]]),K[n[0]](23,this,k||y[n[0]])):K[18](33,B)?(this.M=X[45](64,y[1],1900,B.getFullYear(),B.getMonth(),B[n[1]]()),K[n[0]](38,this,B[n[1]]())):(this.M=new Date(K[9](n[0])),l=this.M[n[1]](),this.M.setHours(y[0]),this.M.setMinutes(y[0]),this.M.setSeconds(y[0]),this.M.setMilliseconds(y[0]),K[n[0]](22,this,l))),Q<>1&11)){if((y=(k=["label-input-label",!0,""],b.O()),K)[17](27,null))b.O()[n[2]]!=b.l&&(b.O()[n[2]]=b.l);else e[3](n[0],"submit", +k[1],b);a[49](16,"label",y,b.l),W[36](38,k[n[0]],b)?(l=b.O(),K[33](49,k[0],l)):(b.S||b.jD||(l=b.O(),t[46](4,k[0],l)),K[17](26,null)||c$(b.u,B,b))}return S},function(Q,B,b,k,l,y,d,G,n){return 2==(Q+((Q<<((G=[0,5,"AG"],Q-6|39)>=Q&&(Q-2^8)=G[1]&&8>(Q-G[1]&16)&&(d=[500,"bubble",0],l&&y&&y.width==d[2]&&y.height==d[2]||(K[32](28,B,b,d[G[0]],"",k,l,y),t[12](28,k[G[2]]),l?(W[33](8,.9,d[1],k),k.S.focus(),k.l==d[1]&&(k[G[2]]=K[G[1]](30,"scroll",W[47](7),function(){return k.qU()}, +{passive:!0}))):k.F.focus(),k.Y=Date.now())),2)>>4||(n=Date.now()),Q)-4>>3&&(l.set(b,W[47](48)),n=X[15](12,null,new vS(W[11](2,k)),l.toString(),B).toString()),n},function(Q,B,b,k,l,y,d,G,n){if((Q&((Q+(G=["test",13,"pixelLeft"],8)&79)>=Q&&(Q-7|87)=Q&&(Q+2^12)>2=Q&&(n=K[G[1]](7,E[23](32,e[32](26,B),b),[E[43](29,k)])),n},function(Q,B,b,k,l,y,d,G,n,S,T){if(2==(Q+(3==(Q>>(((Q^87)>>(T=["rc-imageselect-target","I","clients"],4)||(l=[!0,"rc-imageselect-carousel-instructions",!1],t[46](5,"rc-imageselect-carousel-leaving-left", +a[20](1,B,l[2],O[12](87,T[0],k))),k.W>=k.M.length||(y=k.yR(k.M[k.W]),k.W+=B,d=k.HQ[k.W],a[16](32,600,l[0],null,B,y,k).then(function(N,H){((N=O[H=[3,44,8],20](6,"rc-imageselect-desc-wrapper"),e)[39](38,N),e[38](17,N,E[0].bind(null,24),{label:E[H[0]](6,d,B),Ob:"multicaptcha",bm:E[H[0]](H[2],d,7)}),a)[9](9,b,N,X[7](H[2],"error",N.innerHTML.replace(".",b))),E[H[1]](H[2],0,k)}),t[37](47,k,"Pular"),K[33](1,"rc-imageselect-carousel-instructions-hidden",O[20](3,l[1])))),Q<<1&6||(S=b.nodeType==B?b:b.ownerDocument|| +b.document),Q&91)==Q&&(this.M=new Map,this[T[1]]=B||null),2)&7)&&(S=O[46](45,function(N,H,m){m=(H=[null,1,4],[0,59,"M"]);switch(N[m[2]]){case H[1]:d=H[m[0]],G=m[0];case k:if(!(Gm[0])){N[m[2]]=5;break}return O[28](53,N,5,a[44](1,1E3,H[m[0]]));case 5:return N.l=7,O[28](m[1],N,9,X[39](2,H[m[0]],l,"",B,y));case 9:return N.return(N.I);case 7:d=n=t[43](16,N);case b:N[m[2]]=k,G++;break;case H[2]:throw d;}})),3)&11))a:{for(b=B;b>(m=[19,16,47],2)&15)&&(r=b!=B?b:k),Q))W[15](45,b,k,B);return((Q|(Q<<1&15||(G=k[b],d=[0,"number","data-"],y=O[1](11,String(k[d[0]]),l),G&&("string"===typeof G?y.className=G:Array.isArray(G)?y.className=G.join(" "):E[m[1]](25,d[2],"object",y,G)),k.length>B&&mp(y,d[0],d[1],l,"string",k,!1),r=y),24))==Q&&(l=[2,3,28],n=k(b(),4,43),H=new Wd,T=k(n,8),G=K[m[2]](48,T,H,1),d=k(n,l[2]), +y=K[m[2]](58,d,G,l[0]),N=k(n,m[0]),S=K[m[2]](52,N,y,l[1]),r=a[39](12,S)),2==(Q>>2&14))&&(l=b[aN],l||(y=a[48](1,!0,0,b),d=O[1](60,0,b),l=(k=d.M)?function(g,D){return k(g,D,d)}:function(g,D,J,Z,w,C,p,z,I,x,A,F,q,M,c,R){for(c=[0,1,(R=[2,"M","push"],3)];K[3](1,c[1],c[R[0]],D)&&D.I!=B;)if(J=D.A,x=d[J],x||(w=d.pR)&&(C=w[J])&&(x=d[J]=e[35](7,4,c[1],c[0],C)),!x||!x(D,g,J))if(F=D,M=F.l,E[21](5,c[1],F),z=F,z.Hq?q=void 0:(I=z[R[1]][R[1]]-M,z[R[1]][R[1]]=M,q=E[29](38," > ",c[0],z[R[1]],I)),Z=g,p=q)rF||(rF=Symbol()), +(A=Z[rF])?A[R[2]](p):Z[rF]=[p];y===gF||y===js||y.sD||(g[Uo||(Uo=Symbol())]=y)},b[aN]=l),r=l),r},function(Q,B,b,k,l){if(((4<=(l=[11,9,5],Q<<2&12)&&Q>>1=Q&&(Q-6|53)Q-l[1]&&(k=new sf(B,b)),k},function(Q,B,b,k){if((Q&107)==(Q+(k=[9,3,"getBoundingClientRect"],k)[0]&k[1]||(b=Se&&"number"===typeof B.timeout&&void 0!==B.ontimeout),Q))try{b=B[k[2]]()}catch(l){b={left:0,top:0,right:0,bottom:0}}return b}, +function(Q,B,b,k,l,y,d,G,n,S){return(Q&(Q-((Q^38)&((n=["g-recaptcha-bubble-arrow",4,63],(Q-3|5)>=Q&&(Q-3^28)>n[1]||(l=b.A,k=b.l,S=new b0(k+ +B*(b.M-k),l+B*(b.I-l))),91))==Q&&(S=K[13](13,E[23](32,e[32](27,22),B),[E[43](60,b),E[43](n[2],k)])),S},function(Q,B,b,k,l,y,d,G){return Q<<((Q|((Q+4&(d=["fill",(Q+6>>4||(this.blockSize=-1),1),"canvas"],12)||Dm.call(this,d[2]),Q>>d[1]&7)==d[1]&&(this.M=[]),24))==Q&&(b=1200,b=void 0===b?20:b,B=void 0===B?"A":B,this.M=(new Uint8Array(2100))[d[0]](0),this.l=B,this.I=b),d[1])&23||(k%=1E6,y=Math.ceil(Math.random()*B),G=[y].concat(a[36](81,l.map(function(n,S){return(n+l.length+(k+y)*(S+y))%b})))),G},function(Q, +B,b,k,l,y,d,G,n,S,T,N,H,m,r,g,D,J,Z,w,C,p,z,I,x,A,F,q,M,c,R,u,B9,yi,dS,Tu,Eo,v,Oo,lk,$C,U){if(((((U=[1,0,"NU"],2)==(Q>>U[0]&30)&&($C=W[8](32,B,k,b)),2)==(Q<=G){Object.assign(b[b.length-U[0]]={},N);break}w=!0}for(Oo=(p=(z=W[25](3,(F=(m=(d=b,!l),Xq(k.L)), +A[U[1]]),F),+!!(F&512)-U[0]),B);OoB;Tu--){if(!(v=b[dS=Tu-U[0],dS],v==A[2]||!es&&t[U[0]](15,A[U[0]],dS-C,n,v)||!Ef&&X[36](14,v)&&0===v.size))break;B9=!0}q||B9?(w?c=b:c=Array.prototype.slice.call(b,B,Tu),g=c,w&&(g.length=Tu),x&&g.push(x),$C=g):$C=b}else $C=b}return(((Q^27)>>3||(Jq==B&&(Jq="placeholder"in O[U[0]](9,"INPUT",document)),$C=Jq),Q)&13)==Q&&(k=[0,64,"Int32Array"],this.blockSize=-1,this.blockSize=k[U[0]],this.l=P.Uint8Array?new Uint8Array(this.blockSize): +Array(this.blockSize),this.S=B,this.F=b,this.M=[],this.A=k[U[1]],this.I=k[U[1]],this.P=P[k[2]]?new Int32Array(64):Array(k[U[0]]),void 0===Zm&&(P[k[2]]?Zm=new Int32Array(CU):Zm=CU),this.reset()),$C},function(Q,B,b,k,l,y,d,G,n){if(2==(((Q&((8>((n=[10,"M",1],Q<<2)&24)&&-68<=Q-4&&(b=typeof B,G="object"==b&&null!=B||"function"==b),11>(Q^45)&&8<=(Q+9&23))&&27==B.keyCode&&("keydown"==B.type?this.JY=this.O().value:"keypress"==B.type?this.O().value=this.JY:"keyup"==B.type&&(this.JY=null),B.preventDefault()), +27))==Q&&(d=new Om,y=W[15](13,d,l[n[1]],n[2]),l[n[1]]>B&&e[25](14,y,b,K[n[2]](36,null,l.l/l[n[1]])),k>B&&e[25](13,y,3,K[n[2]](68,null,l.l/k)),l.I>B&&W[15](61,y,Math.ceil(l.I),4),G=y),(Q|88)==Q)&&(G=(k=E[37](n[0],B,b))?new ActiveXObject(k):new XMLHttpRequest),Q>>n[2]&15))a[13](75,null,0,a[36](38,b),k,B);return G},function(Q,B,b,k,l,y,d,G,n){if(n=[7,"M",93],!(Q<<1&n[0])){if(ac)l=e[2](4,59,173,B,91,b);else{if(wF&&m$)a:switch(b){case n[2]:k=91;break a;default:k=b}else k=b;l=k}G=l}if(!((Q^2)&3))a:{for(k= +(y=B[l=(b=0,B).I,n[1]],y+10);y=Q&&Q+N[0]>>N[0]>4||(l=[2,3,"i"],G=new KU,S=W[36](65,4614)(27,7,12,37,1),n=W[14](43,Mv.get(),pU,9),W[38](19,X[38](40,"INPUT"),function(H,m,r,g,D,J,Z,w,C,p,z){return W[C=[(z=["",31,36],2),null,"i"],z[2]](35,455)(H.name+(H.getAttribute(S[4]())||z[0]),S[0](),C[2])&&(D=W[z[2]](35, +8335)(W[z[2]](65,3631)(H).replace(/\s/g,z[0])),D())?(r=D().length,O[z[1]](16,O[9].bind(null,16),G,r,C[0]),n&&a[2](13,n,C[0])&&(Z=a[2](16,n,C[0]),J=D().substr(0,Aq[1])+D().substr(D().length-Aq[0]),p=O[46](22).call(parseFloat(Z+J)+Z,30),W[8](32,5,p,G),w=((m=H.parentElement)==C[1]?0:(g=m.lastChild)==C[1]?0:g.src)?H.parentElement.lastChild.className:"",W[8](24,7,w,G)),!0):!1}),y=W[36](35,8325)(k(X[44](19),44).slice(0,5E4)),d=W[36](66,2742)(W[36](67,6820)(y(),S[l[1]](),l[N[0]]).replace(/\D/g,"").slice(-4)), +d()&&n&&a[N[0]](18,n,l[0])&&E[39](4,6,G,W[43](1,0,35,d,a[N[0]](14,n,l[0]))),T=a[39](13,O[37](48,4,K[17](6,l[1],G,W[36](35,6154)(y(),S[l[0]]()+S[1](),l[N[0]],10)),W[36](35,4362)(y(),S[1]())))),T},function(Q,B,b,k,l,y,d,G){return(Q|((Q|88)==((Q-((Q+((G=["W","M",2],(Q|G[2])&14)==G[2]&&(uk?y==k?d=y:t[6](10,B,y)&&("string"===typeof y?d=v9?O[16](9,".",b,y,B):y:"number"===typeof y&&(d=W[0](65,B,l,y))):d=y),G[2])^16)>=Q&&(Q+4^15)=Q&&(Q+4^23)>2&3)==((T=[1,38,"L"],2>((Q|5)&3)&&-69<=Q+5)&&(n=[0,128,1],d=b instanceof Pd?b[T[2]]:Array.isArray(b)?e[15](70, +96,l[n[0]],b,l[n[2]]):void 0,null!=d&&(G=e[4](T[0],2,B,k),y(d,B),K[T[1]](23,n[T[0]],G,B))),T[0])&&(d=!!(l&32),y=b||l&B?K[T[1]].bind(null,74):X[T[0]].bind(null,32),G=e[26](6,512,T[0],256,l,function(N){return e[10](9,N,d,y)},k),uP(G,32|(b?2:0)),S=G),S},function(Q,B,b,k,l,y,d,G){if((Q-8^16)>=(G=[34,46,4],Q)&&(Q+1&42)>G[2]))O[25](5,B,function(n,S){this.add(S,n)},b);return d},function(Q,B,b,k,l,y,d){if((Q-(d=[4,10,100],d[0])^d[0])=Q){for(l=(b=new Qo,O)[49](1,!1,B(),function(G,n){return("INPUT"==(n=["TEXTAREA","",224],G.tagName)||G.tagName==n[0])&&W[36](66,n[2])(G)!=n[1]}),k=0;k(Q^40)>>5){for(;B=O[15](d[1],null);){try{B.I.call(B.M)}catch(G){E[d[1]](16,G)}W[22](16,d[2],Vo, +B)}FZ=!1}if(1==(Q>>1&5))W[15](13,b,k,B);return y},function(Q,B,b,k,l){return(Q>>(l=[70,1,"N"],Q+3>>3==l[1]&&(t[39](26,B),b=W[49](18,B,b),k=B.M.has(b)),l[1])&5||(b.S&&(W[45](21,b.S),b.S=B),b.M&&(b.l=B,P.clearTimeout(b[l[2]]),b[l[2]]=B,K[10](47,b),W[45](23,b.M),b.M=B)),Q+3)&13||!(null==B||"string"===typeof B||O[13](l[0],null,B)||B instanceof EP)||(k=B),k},function(Q,B,b,k,l,y,d,G){return Q-9<<2<((Q|(G=[10,!0,"R"],32))==Q&&(y=[0,null,3],l.M==y[0]&&(l===k&&(b=y[2],k=new TypeError("Promise cannot resolve to itself")), +l.M=1,W[21](25,y[1],G[1],l,l.C,l.B,k)||(l.l=y[1],l[G[2]]=k,l.M=b,t[17](G[0],G[1],l),b!=y[2]||k instanceof Y5||t[G[0]](72,B,y[1],k,l)))),Q)&&(Q+3^15)>=Q&&L.call(this,B),d},function(Q,B,b,k,l,y,d,G){return((1==(d=[62,45,34],2==(Q^51)>>3&&(b=["rc-anchor-checkbox-holder",'">
")),Q+6>>3)&&(k=b,y=(l=cd(8,B))?l.createHTML(k):k,G=new Uy(y,Uf)),Q)|88)==Q&&(k=b.match(oN),hq&&0<=["http","https","ws","wss","ftp"].indexOf(k[B])&&hq(b),G=k), +2==((Q^d[0])&15)&&sy.call(this,150,7),(Q+6^31)=Q&&L.call(this,B),G},function(Q,B,b,k,l,y){return((Q|((((Q-5|76)<(y=["Chromium","Silk",33],Q)&&(Q+2^14)>=Q&&(k=typeof b,l="object"==k&&b||"function"==k?B+O[y[2]](7,b):k.slice(0,1)+b),1==((Q^55)&15)&&(this.M=B),Q)|72)==Q&&(l=W[y[2]](30)?E[10](47,y[0]):(t[31](7,B)||t[31](9,"CriOS"))&&!e[19](58,"Edge")||t[31](12,y[1])),24))==Q&&L.call(this,B),Q&57)==Q&&L.call(this,B),l},function(Q,B,b,k,l,y,d,G,n,S){if((Q&105)==(((Q+(S=[5,46,'" title="'], +1)&58)>=Q&&(Q-9|25)')),14<=(Q<<1&15)&&(Q>>2&12)=Q&&(k=B.C1,n=b?function(T,N,H){return k(T,N,H,b)}:k),Q))a:{for(y in k)if(l.call(void 0,k[y],y,k)){n=b;break a}n=B}return(Q^89)>>4||(n=X[S[0]](57,document).y),n},function(Q,B,b,k,l,y,d,G,n,S,T,N,H,m,r,g){if(1==((g=[31,7,11],Q|40)==Q&&(tO.call(this),W[39](1,"click",!1,b,B,this),W[39](5,"submit",!1,b,B,this)),Q^56)>>3){if(Array.isArray(k))for(T=0;T>4)||(this.I=B>>>0,this.M=b>>>0),Q)&&k!=B&&(X[35](5,l,0,y),"number"===typeof k?(d=y.M,K[2](25,0,k),E[g[2]](13,b, +WS,aM,d)):(G=K[10](1,32,k),E[g[2]](12,b,G.I,G.M,y.M))),r},function(Q,B,b,k,l,y,d,G,n,S,T,N,H,m,r,g,D,J,Z){if(3==((Q|(20>(Z=[7,4,64],Q)+9&&2<=(Q>>1&15)&&(B=void 0===B?{id:null,timeout:null}:B,n=this,J=O[46](40,function(w,C,p){p=[5E3,(C=[10,2,""],8),28];switch(w.M){case 1:return O[p[2]](56,w,C[1],E[18](57,"b","c"));case C[1]:return T=!1,S=w.I,l=!1,N=xC.K(),g=!O[2](67,p[1],36,N),k=[],g&&(k=[um,vd,Ql]),O[p[2]](59,w,3,n.PQ.send("o",new Bx(a[2](17,W[14](75,N.get(),pU,9),1),E[23](57,C[0],0,X[4](p[1],C[2], +1)),k,n.M.W,n.qU)));case 3:if((H=w.I,B.id)&&(!S||E[3](9,S,7)!=B.id))return w.return();return(r=(w.l=((null==(S||(S=new bq,l=!0),B.id)&&(B.id=O[43](25),W[p[1]](48,7,B.id,S),1!=a[2](15,S,4)&&(W[48](32,5,S,(a[2](15,S,5)||0)+1),T=!0),X[47](3,4,S,0)),t)[39](63,1,S,(a[2](19,S,1)||0)+1),K[12](81,C[1],S,Math.floor((a[2](14,S,C[1])||0)+(B.timeout||0))),X[47](p[1],4,S,(a[2](17,S,4)||0)+1),4),new kl(H.q9)),O)[p[2]](54,w,6,K[1](79,C[2],E[3](7,r,1),a[2](12,r,C[1])));case 6:return y=w.I,y=y.replace(/"/g,C[2]), +W[39](12,S,6,K[39].bind(null,p[1])).includes(y)||O[31](16,t[25].bind(null,25),S,y,6),m=new kl(H.Aw),O[p[2]](58,w,7,K[1](15,C[2],E[3](p[1],m,1),a[2](15,m,C[1])));case 7:if(!(X[45](1,(G=w.I,p[1]),S,+G+(a[2](13,S,p[1])||0)),g)||!H.hr){w.M=p[1];break}return D=new kl(H.hr),O[p[2]](54,w,9,K[1](47,C[2],E[3](4,D,1),a[2](12,D,C[1])));case 9:b=w.I,b=b.replace(/"/g,C[2]),e[9](2,C[0],S,e[14](1,1,0,W[14](27,S,rS,C[0]),kX(b),l,T));case p[1]:t[33](21,0,w,5);break;case 4:t[43](64,w);case 5:return O[p[2]](56,w,C[0], +E[p[2]](24,"b","c",0,1,S));case C[0]:B.timeout=(1+Math.random())*p[0]*a[2](19,S,4),d=t[35](89,B.timeout+500),c$(function(){return n.Co(B,a[17](40,0,function(){return"ee"},d))},B.timeout),w.M=0}})),Z)[2])==Q&&(k=jH(b),1!==(k&B)&&(Object.isFrozen(b)&&(b=W[32](34,b)),so(b,k|B))),(Q|Z[0])>>3))t[5](Z[1],b.O(),B,"rc-response-input-field-error");return 2==(Q|2)>>3&&(this.M=b,this.I=B),J},function(Q,B,b,k,l,y,d,G,n,S,T,N,H){return 0<=(Q|((Q&(((H=["N","M",30],Q)&39)==Q&&(this.A=l,this.F=B,this.l=y,this[H[1]]= +b,this.I=k),(Q&92)==Q&&(S=["top",1,"0px"],T="visible"==X[11](17,l,b,y[H[1]]),O[47](19,y[H[1]],{visibility:d?"visible":"hidden",opacity:d?"1":"0",transition:d?"visibility 0s linear 0s, opacity 0.3s linear":"visibility 0s linear 0.3s, opacity 0.3s linear"}),T&&!d?y.yR=c$(function(){O[47](22,this.M,"top","-10000px")},k,y):d&&(P.clearTimeout(y.yR),O[47](26,y[H[1]],S[0],S[2])),G&&(n=W[47](9).innerHeight,E[H[2]](4,B,E[39](14,S[1],y),Math.min(G.width,W[47](8).innerWidth),Math.min(G.height,n)),E[H[2]](64, +B,W[43](34,S[1],E[39](15,S[1],y)),G.width,G.height),G.height>n&&d&&O[47](24,E[39](22,S[1],y),{"overflow-y":"auto"}))),58))==Q&&(b.U&&b.D&&(b.U.ontimeout=B),b[H[0]]&&(P.clearTimeout(b[H[0]]),b[H[0]]=B)),6))>>3&&17>Q-5&&(this[H[1]]=B),N},function(Q,B,b,k,l,y){return(Q<<1&(1==(Q>>2&(l=[11,3,13],l)[0])&&(y=B instanceof lq?!!B.pS():!!B),l)[2]||(b.classList?b.classList.remove(B):e[5](14,b,B)&&X[29](36,"class",Array.prototype.filter.call(e[6](l[2],b),function(d){return d!=B}).join(" "),b)),(Q^41)>>l[1])|| +(k=new b,k.KS=function(){return B},y=k),y},function(Q,B,b,k,l,y,d,G,n){if((n=[48,1,4],Q+5&49)>=Q&&Q+7>>n[1]>((Q|n[0])==Q&&(G=B+Math.random()*(b-B)),n[1])&7||(G=O[46](44,function(S,T,N,H,m,r,g,D,J){return(N=(H=(r=(J=[16,0,(m=(T=S.return,["","HF",3]),48)],new yl),K[47](49,y.F,r,l)),D=W[8](8,k,"-QbJqHfGOUB8nuVRLvzFLVed",H),W[8](J[0],B,m[J[1]]+d,D)),g=W[8](J[2],m[2],t[11](7), +N),T).call(S,t[27](49,m[1],m[J[1]],b,m[2],a[39](14,g),X[4](36,d6,y.M)||W[47](J[2])))})),Q-n[1]>>n[2]||(G=K[45](55,B,function(S,T,N){return(T=(N=function(H,m){return(-1!=(m=["indexOf","slice","replace"],H)[m[0]](l)&&(H=H[m[1]](H[m[0]](l))),H)[m[2]](/\s+/g,b)[m[2]](/\n/g,k).trim()},S=N(k+y),N)(k+d),S)==T})),G},function(Q,B,b,k,l,y,d,G,n,S,T,N){if(1==((N=[6,"KS","JG"],Q-9)&3)){for(y=(d=(k=[(l=b[N[1]](),l)],n=b[N[1]](),n!=l&&k.push(n),[]),B)[N[2]];y;)S=y&-y,d.push(X[36](3,S,b)),y&=~S;T=((G=(k.push.apply(k, +d),B.C))&&k.push.apply(k,G),k)}return 14>(Q|N[0])&&8<=(Q^38)&&(this.L=e[15](68,96,b,B,k)),T},function(Q,B,b,k,l,y,d,G,n,S,T,N,H,m){if(2==((Q&121)==(1==(Q|(m=["add",14,49],7))>>3&&(this.I=B,this.tw=b,this.M=k),Q)&&(H=W[8](24,B,"-QbJqHfGOUB8nuVRLvzFLVed",b)),Q-5&m[1])){for(T=(N=W[32](98,(n=(S=d||y?jH(b):0,d)?!!(S&32):void 0,b)),B);T>1&(T=["call",4,"keyCode"],7))&&B.A.push(t[14](37,function(N,H){return!!N||!!H},B),B.ig,B.mt,B.j8,B.H_),1<=(Q^27)>>T[1])&&8>((Q^11)&8)&&(d=Gl[k],d||(d=l=t[13](33,k),void 0===b.style[l]&&(y=(m$?"Webkit":ac?"Moz":Se?"ms":null)+K[38](24,B,l),void 0!==b.style[y]&&(d=y)),Gl[k]=d),S=d),60))==Q)a:if(n=[40,0,39],y[T[2]]==B||y[T[2]]==n[2]||y[T[2]]==b||y[T[2]]==n[0]||9==y[T[2]])if(d=[],9!=y[T[2]]){if((G=(Array.prototype.forEach[T[0]](X[10](2,"TABLE"),function(N, +H){"none"!==W[31]((H=[2,"display","."],H[0]),N,H[1])&&dF(a[8](H[0],H[2],"rc-imageselect-tile",N),function(m){d.push(m)})}),d.length-1),k.s8>=n[1])&&d[k.s8]==t[21](26,null,document))switch(G=k.s8,y[T[2]]){case B:G--;break;case b:G-=l;break;case n[2]:G++;break;case n[0]:G+=l;break;default:S=void 0;break a}G>=n[1]&&G=d.length&&W[7](23,document,"recaptcha-verify-button").focus(),y.preventDefault(),y.M()}return S},function(Q,B,b,k,l,y,d,G){if(4==((Q|((d=[15,"push",1],(Q&70)==Q)&& +(b.__closure__error__context__984382||(b.__closure__error__context__984382={}),b.__closure__error__context__984382.severity=B),24))==Q&&(G=b.replace(RegExp("(^|[\\s]+)([a-z])",B),function(n,S,T){return S+T.toUpperCase()})),Q-3&d[0])){for(l=(y=b.pop(),k.I+k.M.length()-y);127>>=7,k.I++;b[d[1]](l),k.I++}return(17>Q-5&&3<=(Q|d[2])&&(G=new QQ(B.height,B.width)),Q|72)==Q&&so(b,(B|34)&-14557),G},function(Q,B,b,k,l,y){return(y=((Q&105)==Q&&(l=Fx?null==B||"string"===typeof B?B:void 0: +B),[18,2,25]),28>Q-1&&17<=Q+7)&&(l=O[y[2]](3,B,k,y[1],O[9].bind(null,y[0]),b)),l},function(Q,B,b,k,l,y,d,G){if((((Q-(d=["byteLength","constructor",2],4)|9)=Q&&(B.M(),this.isEnabled()&&3!=this.M&&!B.target.href&&(b=!this.X8(),this.dispatchEvent(b?"before_checked":"before_unchecked")&&(B.preventDefault(),this.lg(b)))),(Q^76)>>4=Q&&(Q-5^15)l?6E4:174E4,y)),S)[1]]=0})),G},function(Q,B,b,k,l,y,d,G,n,S,T){if((Q&((Q-8^25)>=(4==Q+5>>(S=[3,2,"M"],4)&&(k=B.L,T=1===e[26](16,null,Xq(k),k,b)?1:-1),Q)&&(Q-5|74)>4||(l=k.O?k.O():k)&&(b?K[42].bind(null,16):E[36].bind(null,12))(l,[B]),52))=Q&&(y=b=O[22](G[1],b),l=(k=cd(8,B))?k.createScriptURL(y):y,d=new n9(l,S3)),Q)<<2&15))if(B.classList)Array[G[0]].forEach.call(b,function(n){t[46](4,n,B)});else{for(y in Array[G[0]].forEach.call(e[G[1]](33,(l={},B)),function(n){l[n]=!0}),Array[G[0]].forEach.call(b,function(n){l[n]=!0}),k="",l)k+=0>(2==((N=[33,"Verifique seu n\u00famero de telefone",3],18<=(Q+5&30)&&32>Q+9)&&(H=""+Array.from(tj.keys())),Q<<1&31)&&(d=B.identifier,l=B.V6,k=["rc-2fa-header-override","rc-2fa-container",'">'],G=B.MV,n=B.uv,S='
Para confirmar sua identidade, enviamos um c\u00f3digo de verifica\u00e7\u00e3o para o n\u00famero "+W[13](8,d)+".

Insira o c\u00f3digo abaixo. Ele tem validade de "+W[13](9,l)+" minutos.

",S+=b):(y="

Para confirmar sua identidade, enviamos um c\u00f3digo de verifica\u00e7\u00e3o para o e-mail "+ +W[13](9,d)+".

Insira o c\u00f3digo abaixo. Ele tem validade de "+W[13](11,l)+" minutos.

",W[13](8,d),W[13](N[2],l),S+=y),S+='
',H=NI(S)),2==Q-5>>N[2]&&b.O()&&t[5](9,b.O(),B,k),N[2]))){a:{if(G=(T=B(b||l0,k),l||a[N[2]](32)),T&&T.M?n=T.M():(n=t[N[0]](32,"DIV",G),S=a[0](21,"zSoyz",T),K[N[2]](17,n,S)),1==n.childNodes.length&&(d=n.firstChild,1==d.nodeType)){y=d;break a}y=n}H=y}return 2==((Q^64)&7)&&X[29](31, +b,t[26](38,1,k))&&(y=X[2](1,10,k),t[14](4,l,y,B)),H},function(Q,B,b,k,l,y,d,G,n,S,T,N,H){return 1==Q-9>>((2==(Q<<1&(N=[0,15,16],N)[1])&&(H=(l=k(b(),31))?l.length+","+k(l,N[1]).length:"-1,-1"),(Q&28)==Q)&&(k=W[36](67,B),l=new Tl(new Nu(b)),L9&&k.prototype&&L9(l,k.prototype),H=l),3)&&(T=new Hx(k,G,l,b.X,function(m){return X[9](29,8,B,b.YU,m)}),n&&E[5](1,n,T),d&&T.vq(d),y&&e[36](7,!0,T,y),S&&E[38](12,!1,!0,N[2],T),t[46](47,N[0],b,T),H=T),H},function(Q,B,b,k,l,y,d,G,n){if((Q+(15>Q>>(n=["isArray",1,6], +n[1])&&12<=(Q+n[2]&15)&&(y=[29,40,4],l=k(b(),y[2],y[0],y[n[1]]),G=0=Q&&(Q-7|39)(Q^54))try{G=b()}catch(S){G=B}if((Q|40)==Q)if(k==B||""==k)G=new l;else{if(!(y=JSON.parse(k),Array[n[0]](y)))throw Error(void 0);G=(uP(y,b), +X)[26](28,l,y)}return 4==(Q|n[1])>>4&&(t[34](n[2],B.M),K[19](18,B.M),t[34](18,B.M),G=B.u()),G},function(Q,B,b,k,l,y,d,G,n,S,T,N){if(((N=[59,1,"U"],(Q|40)==Q)&&(S=t6,n=function(H,m){return O[46](46,function(r,g){return 1==(g=[2,45,"M"],r)[g[2]]?O[28](56,r,g[0],d(m,H)):r.return({Se:r.I,H6:O[g[0]](g[1],B,1,m)})})},G=new td,G.I=function(H,m){return O[46](8,function(r,g,D){g=[2,"number",'"'],D=[null,3,"A"];switch(r.M){case 1:if(0==(m=(r.l=g[0],D[0]),G.M).fo()){r.M=B;break}return O[28](57,r,b,a[17](22, +0,y,S));case b:if(m=r.I,m!=D[0])return"string"!=typeof m||m.includes(g[2])||m.includes(k)?typeof m==g[1]?m=""+m:m instanceof Oq?(m=m.M,G[D[2]]=l):m=e[31](D[1],0,function(J){return J.stringify(m)}):m=g[2]+m+g[2],r.return(n(H,m));case B:t[33](19,0,r,D[1]);break;case g[0]:t[43](65,r),G.l=l;case D[1]:return r.return(O[21](42,H))}})},G.M=t[35](91,200),T=G),Q&74)==Q&&b[N[2]]){(b.u=(b[(y=b[(K[32](40,B,b),l=b.u[0]?function(){}:null,N)[2]],N)[2]]=B,B),k)||b.dispatchEvent("ready");try{y.onreadystatechange= +l}catch(H){}}return(((Q>>2&15)==N[1]&&(T=K[13](6,E[23](40,e[32](25,B),b),[E[43](N[0],k),E[43](27,l)])),Q)|48)==Q&&(T=function(H,m,r,g,D,J,Z,w,C){C=[11,"A",17];a:{D=($X.length?(Z=$X.pop(),a[13](C[2],m,Z),O[23](27,H,Z.M,m),w=Z):w=new mu(m,H),w);try{g=(J=new l,J).L,K[12](C[0],b,k)(g,D),Uo&&delete g[Uo],r=J;break a}finally{D.M.clear(),D.I=-1,D[C[1]]=-1,$X.length>(Q-5>>(d=[34,63,15],3)||(K[17](31,null)||(K[30](50,this.M, +this.O(),"click",this.xB),this.JY=null),this.jD=!1,K[8](17,10,this)),3)||(Dc.call(this),this.I=k,this.M=B,this.A=b||0,this.l=C5(this.gP,this)),Q^d[2])&&2>(Q+5&24)&&(this.l=B,this.F=l,this.M=k,this.I=y,this.A=b),4==((Q^18)&6))&&(b=['">
')),Q)|48)==Q&&(G=e[25](10,b,k,t[29](1,".",B))),G},function(Q,B,b,k,l,y,d,G,n,S){return(Q| +((((n=[0,9582,13],5)<=Q+9&&(Q|8)(Q^76))&&12<=(Q|3)&&(S=t[11](73,n[0],function(){return W[47](7).frames})),(Q+1^2)>=Q)&&(Q+7&43)>d[2])&&(Q>>d[0]&16)=Q&&(G=NI('Digite seu melhor palpite a respeito do texto exibido. Para receber um novo desafio, clique no \u00edcone "Atualizar". Saiba mais.')),Q)){for(y=(l=K[d[0]](88,k.F),l.next());!y.done;y=l.next())E[10](24,B,y.value,k);E[10](26,B,(k.F.length=B,{um:0,o_:b,LZ:2,Xk:0,BL:null}),k)}return G}]}(),t=function(){return[function(Q, +B,b,k,l,y,d,G,n,S,T,N,H,m){if(!(Q+(Q>>2&(H=[11,"M",3],7)||(m=(new vS(W[H[0]](H[2],B))).A),H)[2]&15))if(S=l.R[H[1]][String(k)]){for(d=(S=(N=!0,S.concat()),B);d>1&H[0])==H[2]&&(G=d.L,T=Xq(G),n=a[49](87,b,T,l,G,k),S=X[29](41,B,y,!1,n,T),S!==n&&null!=S&&X[9](14,S,G,l,T,k),m=S),Q-9&7)){for(;127>>=B;k[H[1]].push(b)}return m}, +function(Q,B,b,k,l,y,d,G){return(Q&(((2==((d=["A","hasOwnProperty",!0],Q)+7&3)&&(!Array.isArray(l)||l.length?G=B:(y=jH(l),y&1?G=d[2]:k&&(Array.isArray(k)?k.includes(b):k.has(b))?(so(l,y|1),G=d[2]):G=B)),Q)|48)==Q&&(G=Object.prototype[d[1]].call(B,b)),91))==Q&&(l.I=k,l[d[0]]=!b,l.l=B,W[44](2,2,1,l)),G},function(Q,B,b,k,l,y,d,G,n,S){if(2<=Q+8>>(S=[15,9,"push"],4)&&Q>>1>3&&1>((Q^27)&16))O[46](S[1],function(T,N){if(T[N=[58,"I","M"],N[2]]==l)return O[28](N[0],T,b,y.l);T[(d=T[N[1]],d).send(k,new Wx),N[2]]=B});return 2==(Q^25)>>3&&L.call(this,B),n},function(Q,B,b,k,l){return(((Q&82)==((Q|(k=[9,24,49],k[1]))==Q&&L.call(this,B),Q)&&(l=Object.prototype.hasOwnProperty.call(B,b)),6>(Q+k[0]&11)&&3<=Q-k[0]>>4&&(this.promise=new Promise(function(y,d){B=(b=y,d)}),this.resolve=b,this.reject=B),Q)^k[2])&7||L.call(this,B),l},function(Q,B,b,k,l,y,d,G,n,S,T){if((((T= +[1,21,16],(Q&114)==Q&&(y=[2,4503599627370496,1],n=W[34](T[1],T[2],b),l=W[34](20,T[2],b),G=4294967296*(l&1048575)+n,k=l>>>20&2047,d=(l>>31)*y[0]+y[2],S=2047==k?G?NaN:Infinity*d:k==B?d*Math.pow(y[0],-1074)*G:d*Math.pow(y[0],k-1075)*(G+y[T[0]])),8<=(Q-9&11)&&8>((Q|4)&T[2]))&&(S=O[46](11,function(N,H){if((H=[63,31,28],N).M==b)return G=e[H[1]](8,l,function(m){return O[21](59,m.parse(y))}),O[H[2]](53,N,k,K[1](H[0],B,G[l],G[b]+G[k]));return N.return(new az(e[H[1]](2,(d=N.I,l),function(m){return O[21](61, +m.parse(d))}),G[b],G[k]))})),Q)|24)==Q)if(y.vQ(b),d)O[47](29,y.N,"opacity",l),O[47](28,y.N,"transform","scale(0)"),c$(C5(function(){O[47](29,this.N,"display",k)},y),B);else O[47](23,y.N,"display",k);return 10<=(Q^62)&&19>Q-4&&(this.hw=B=void 0===B?!1:B,this.I=this.locale=null,this.M=new r6,Number.isInteger(b)&&this.M.c_(b),B||(this.locale=document.documentElement.getAttribute("lang")),E[48](17,9,this,new g6)),S},function(Q,B,b,k,l,y,d){return 1>((Q&(Q<<(y=[8,null,19],1)>=y[0]&&6>(Q-2&y[0])&&(b?t[46](y[0], +k,B):K[33](y[0],k,B)),90))==Q&&(b=B.V,B.V=[],d=b),Q<<2&16)&&10<=Q>>2&&(l=B,l=void 0===l?0:l,d=K[12](6,y[1],O[y[2]](9,k,b),l)),d},function(Q,B,b,k,l,y,d,G,n,S,T,N){if(13<=(T=[8,"forEach","toString"],Q-5&14)&&28>Q-9){for(S=[0,"=",(d=[],"")],k=(b.M.cookie||S[2]).split(B),n=[],l=S[0];l>2&23)&&(N=B||$L?W[17](5,b):"number"===typeof b&& +Number.isFinite(b)||!!b&&"string"===typeof b&&isFinite(b)),88))==Q&&(l=e[34](21,"object",sq),b=[],k=function(H,m,r){Array.isArray((r=[41,34,"toString"],H))?H.forEach(k):(m=e[r[1]](20,"object",H),b.push(t[r[0]](3,m)[r[2]]()))},B[T[1]](k),N=K[27](5,"error",b.join(t[41](T[0],l)[T[2]]()))),30))=Q&&(k=b.M,d=[4,16,1],G=b.I,n=G[k+0],S=G[k+d[2]],l=G[k+3],y=G[k+2],a[0](15,d[0],b),N=n<<0|S<=Q&&(l=E[18](12,b,B,D3()),N=Array.from({length:void 0===k?1:k}, +function(){return b+l()})),N},function(Q,B,b,k,l,y,d,G){if((G=[65533,40,3],Q|G[1])==Q){if(b)throw Error("Invalid UTF8");B.push(G[0])}return(Q-5^((Q&59)==(24>(Q|9)&&5<=(Q-1&14)&&(d=X7&&!b?P.btoa(B):O[2](92,0,a[28](8,8,255,B),b)),Q)&&L.call(this,B),24))=Q&&(a[G[2]](18,Jj),l=k.U8,y=null==l||O[13](72,null,l)?l:"string"===typeof l?a[46](12,B,b,l):null,d=null==y?y:k.U8=y),d},function(Q,B,b,k,l){return(3==(Q-((((Q&45)==(k=[2,"dresp",11],Q)&&(l=Promise.resolve(a[32](24,0,19,b,B))),Q-8)&15)== +k[0]&&(b=O[29](8),dL?P.setTimeout(function(){e[20](14,b)},B):E[10](15,b)),4)&k[2])&&L.call(this,B,0,k[1]),(Q<<1&k[2])==k[0])&&L.call(this,B,0,"ctask"),l},function(Q,B,b,k,l,y){if(!(Q<<((Q-(y=[5,2,"call"],y[0])&8)=y[0]&&(l=new e3(B,b,k,19)),y)[1]&y[0]))lq[y[2]](this);return l},function(Q,B,b,k,l,y,d,G,n,S){return Q>>((Q|(n=["F",9,40],(Q&60)==Q&&((k=b[Eq])?S=k:(k=O[27](n[1],B,t[15].bind(null,1),b[Eq]={},b,K[n[2]].bind(null,64)),Jd in b&&Eq in b&&(b.length=B),S=k)),32))==Q&&(Dc.call(this), +this.M=window.Worker&&B?new Worker(t[44](5,K[42](37,"error",B)),void 0):null),(Q^72)>>3||(l[n[0]]=B,a[14](58,B,function(){l.F&&xL.call(b,k)})),2)&15||(G=function(){return l.rU(k,d,y)},l.response={},l.tG(b),K[38](12,l.S).width!=l.SM().width||K[38](14,l.S).height!=l.SM().height?(a[23](39,G,l),e[25](72,B,l,l.SM())):G()),S},function(Q,B,b,k,l,y,d,G,n,S,T,N,H,m,r,g,D,J,Z,w,C,p){if((Q>>(Q+1&((Q+(p=[3,2,"push"],p[0])&47)>=Q&&Q-6<<1= +Q&&(C=function(){var z=arguments,I=this;return K[45](49,null,function(){return a[17](6,B,function(){return b.apply(I,z)},t6)})}),C},function(Q,B,b,k,l,y,d,G,n){if((Q&(G=[30,8,"src"],77))==Q&&(this.Wq=B.altKey,this.Ea=this.M=-1),(Q+G[1]&G[0])=Q&&(b=[0,null,"on"],"number"!==typeof B&&B&&!B.r4))if(k=B[G[2]],e[29](27,k))E[14](1,b[0],k.R,B);else if(l=B.type,d=B.proxy,k.removeEventListener?k.removeEventListener(l,d,B.capture):k.detachEvent?k.detachEvent(E[45](1,b[2],l),d):k.addListener&&k.removeListener&& +k.removeListener(d),wS--,y=W[2](15,k))E[14](3,b[0],y,B),y.I==b[0]&&(y[G[2]]=b[1],k[eH]=b[1]);else W[12](G[1],b[1],B);return n},function(Q,B,b,k,l,y){return 2<=((Q|(((((y=[13,5,"I"],Q+9)^8)>=Q&&Q-y[1]<<2(Q^33)&&(l=String(B).replace(/\-([a-z])/g,function(d,G){return G.toUpperCase()})),l},function(Q,B,b,k,l,y,d){return(Q&((Q|48)==((d=[4,"attachEvent",28],Q+d[0]>=d[2]&&(Q<<2&16)(Q-d[0]&16))&&18<=Q+7&&(y=function(G,n,S,T){b[G=(n=(T=[3,"I","map"],E[12](T[0],b)),t[17](25,b)),S=t[17](21,b),T[1]][n]=(null==G?0:G[T[2]])?G[T[2]](function(N){return B(N,S)}):B(G,S)}),Q)&&(y=function(G){return K[45](40,B,32,G,b)}),d[2]))==Q&&(y=e[25](11,b,k,null==B?B:X[42](6,B))),y},function(Q,B,b,k,l,y,d){if((Q+((Q&121)==((Q&92)==(y=[0,57,"A"],(Q|80)==Q&&(d=Math.floor(Math.random()*B)),Q)&&(d=B?B:Array.prototype.fill), +Q)&&(d=B.RI),1==(Q+9&13)&&(B=['