diff --git a/.coveragerc b/.coveragerc index 71f136aa3b..e7d2a5a87f 100644 --- a/.coveragerc +++ b/.coveragerc @@ -4,4 +4,7 @@ source= omit= mayan/bin/mayan-edms.py mayan/wsgi.py + mayan/settings/* tests.py + mayan/apps/*/tests/* + *migrations* diff --git a/.dockerignore b/.dockerignore new file mode 100644 index 0000000000..94515f8807 --- /dev/null +++ b/.dockerignore @@ -0,0 +1,2 @@ +* +!docker diff --git a/.gitignore b/.gitignore index dad5458e19..f049c86ec2 100644 --- a/.gitignore +++ b/.gitignore @@ -7,7 +7,7 @@ settings_local.py /celerybeat-schedule document_storage/ /misc/mayan.geany -image_cache/ +mayan/media/document_cache/ build/ _build/ gpg_home/ @@ -22,3 +22,7 @@ static_collected/ *egg-info* mayan/settings/local.py .vagrant +.tox/ +coverage.xml +.coverage.tox* +htmlcov/ diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml new file mode 100644 index 0000000000..c7ed5587b6 --- /dev/null +++ b/.gitlab-ci.yml @@ -0,0 +1,35 @@ +image: python:2.7 +services: + - mysql + - postgres +before_script: + - apt-get update -qq + - apt-get install -qq python-dev gcc tesseract-ocr tesseract-ocr-deu unpaper ghostscript libjpeg-dev libpng-dev libtiff-dev poppler-utils libreoffice +variables: + POSTGRES_DB: "mayan_edms" + POSTGRES_PASSWORD: "postgres" + MYSQL_ALLOW_EMPTY_PASSWORD: "yes" + MYSQL_DATABASE: "mayan_edms" +test:mysql: + script: + - pip install -r requirements/testing.txt + - pip install -q mysql-python + - apt-get install -qq mysql-client + - mysql -h"$MYSQL_PORT_3306_TCP_ADDR" -P"$MYSQL_PORT_3306_TCP_PORT" -uroot -p"$MYSQL_ENV_MYSQL_ROOT_PASSWORD" -e "ALTER DATABASE $MYSQL_DATABASE CHARACTER SET utf8 COLLATE utf8_unicode_ci;" + - coverage run manage.py runtests --settings=mayan.settings.testing.gitlab-ci.db_mysql --nomigrations + - bash <(curl https://raw.githubusercontent.com/codecov/codecov-bash/master/codecov) -t $CODECOV_TOKEN + tags: + - mysql +test:postgres: + script: + - pip install -r requirements/testing.txt + - pip install -q psycopg2 + - coverage run manage.py runtests --settings=mayan.settings.testing.gitlab-ci.db_postgres --nomigrations + - bash <(curl https://raw.githubusercontent.com/codecov/codecov-bash/master/codecov) -t $CODECOV_TOKEN + tags: + - postgres +test:sqlite: + script: + - pip install -r requirements/testing.txt + - coverage run manage.py runtests --settings=mayan.settings.testing.gitlab-ci --nomigrations + - bash <(curl https://raw.githubusercontent.com/codecov/codecov-bash/master/codecov) -t $CODECOV_TOKEN diff --git a/.magnum.yml b/.magnum.yml new file mode 100644 index 0000000000..f2b2d82c27 --- /dev/null +++ b/.magnum.yml @@ -0,0 +1,21 @@ +language: python +before_install: + - sudo apt-get update -qq + - sudo apt-get install -qq python-dev gcc tesseract-ocr tesseract-ocr-deu unpaper ghostscript libjpeg-dev libpng-dev poppler-utils +install: + - pip install -r requirements/testing.txt + - pip install -q mysql-python + - pip install -q psycopg2 +before_script: + - mysql -u root -e 'create database mayan_edms;' + - psql -c 'create database mayan_edms;' -U postgres +script: + - export TEST_APPS="acls authentication django_gpg document_indexing document_signatures documents dynamic_search folders lock_manager ocr permissions sources tags" + - coverage run manage.py test $TEST_APPS --settings=mayan.settings.testing.base + - coverage run manage.py test $TEST_APPS --settings=mayan.settings.magnum.db_mysql + - coverage run manage.py test $TEST_APPS --settings=mayan.settings.magnum.db_postgres +after_script: + - coveralls +services: + - mysql + - postgresql diff --git a/.travis.yml b/.travis.yml index 7eedcc2af3..fbe358ff14 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,17 +1,14 @@ language: python python: - - 2.6 - 2.7 env: - global: - - TEST_APPS="document_indexing documents dynamic_search lock_manager document_signatures folders ocr sources tags" matrix: - DB=mysql - DB=postgres - DB=sqlite before_install: - sudo apt-get update -qq - - sudo apt-get install -qq python-dev gcc tesseract-ocr unpaper ghostscript libjpeg-dev libpng-dev poppler-utils + - sudo apt-get install -qq python-dev gcc tesseract-ocr tesseract-ocr-deu unpaper ghostscript libjpeg-dev libpng-dev poppler-utils libreoffice install: - "pip install -r requirements/testing.txt" - if [[ $DB == mysql ]]; then pip install -q mysql-python; fi @@ -20,9 +17,9 @@ before_script: - mysql -e 'create database mayan_edms;' - psql -c 'create database mayan_edms;' -U postgres script: - - if [[ $DB == mysql ]]; then coverage run manage.py test $TEST_APPS --settings=mayan.settings.travis.db_mysql; fi - - if [[ $DB == postgres ]]; then coverage run manage.py test $TEST_APPS --settings=mayan.settings.travis.db_postgres; fi - - if [[ $DB == sqlite ]]; then coverage run manage.py test $TEST_APPS --settings=mayan.settings.travis.base; fi + - if [[ $DB == mysql ]]; then coverage run manage.py runtests --settings=mayan.settings.testing.travis.db_mysql --nomigrations; fi + - if [[ $DB == postgres ]]; then coverage run manage.py runtests --settings=mayan.settings.testing.travis.db_postgres --nomigrations; fi + - if [[ $DB == sqlite ]]; then coverage run manage.py runtests --settings=mayan.settings.testing.base --nomigrations; fi after_success: - coveralls branches: diff --git a/.tx/config b/.tx/config index fe4c20a461..68db5b450d 100644 --- a/.tx/config +++ b/.tx/config @@ -1,178 +1,188 @@ [main] host = https://www.transifex.com -[mayan-edms.apps-acls] +[mayan-edms.acls-2-0] file_filter = mayan/apps/acls/locale//LC_MESSAGES/django.po source_lang = en source_file = mayan/apps/acls/locale/en/LC_MESSAGES/django.po type = PO -[mayan-edms.apps-checkouts] +[mayan-edms.appearance-2-0] +file_filter = mayan/apps/appearance/locale//LC_MESSAGES/django.po +source_lang = en +source_file = mayan/apps/appearance/locale/en/LC_MESSAGES/django.po +type = PO + +[mayan-edms.authentication-2-0] +file_filter = mayan/apps/authentication/locale//LC_MESSAGES/django.po +source_lang = en +source_file = mayan/apps/authentication/locale/en/LC_MESSAGES/django.po +type = PO + +[mayan-edms.checkouts-2-0] file_filter = mayan/apps/checkouts/locale//LC_MESSAGES/django.po source_lang = en source_file = mayan/apps/checkouts/locale/en/LC_MESSAGES/django.po type = PO -[mayan-edms.apps-common] +[mayan-edms.common-2-0] file_filter = mayan/apps/common/locale//LC_MESSAGES/django.po source_lang = en source_file = mayan/apps/common/locale/en/LC_MESSAGES/django.po type = PO -[mayan-edms.apps-converter] +[mayan-edms.converter-2-0] file_filter = mayan/apps/converter/locale//LC_MESSAGES/django.po source_lang = en source_file = mayan/apps/converter/locale/en/LC_MESSAGES/django.po type = PO -[mayan-edms.apps-django_gpg] +[mayan-edms.django_gpg-2-0] file_filter = mayan/apps/django_gpg/locale//LC_MESSAGES/django.po source_lang = en source_file = mayan/apps/django_gpg/locale/en/LC_MESSAGES/django.po type = PO -[mayan-edms.apps-documents] +[mayan-edms.documents-2-0] file_filter = mayan/apps/documents/locale//LC_MESSAGES/django.po source_lang = en source_file = mayan/apps/documents/locale/en/LC_MESSAGES/django.po type = PO -[mayan-edms.apps-document_comments] +[mayan-edms.document_comments-2-0] file_filter = mayan/apps/document_comments/locale//LC_MESSAGES/django.po source_lang = en source_file = mayan/apps/document_comments/locale/en/LC_MESSAGES/django.po type = PO -[mayan-edms.apps-document_indexing] +[mayan-edms.document_indexing-2-0] file_filter = mayan/apps/document_indexing/locale//LC_MESSAGES/django.po source_lang = en source_file = mayan/apps/document_indexing/locale/en/LC_MESSAGES/django.po type = PO -[mayan-edms.apps-document_signatures] +[mayan-edms.document_signatures-2-0] file_filter = mayan/apps/document_signatures/locale//LC_MESSAGES/django.po source_lang = en source_file = mayan/apps/document_signatures/locale/en/LC_MESSAGES/django.po type = PO -[mayan-edms.apps-document_states] +[mayan-edms.document_states-2-0] file_filter = mayan/apps/document_states/locale//LC_MESSAGES/django.po source_lang = en source_file = mayan/apps/document_states/locale/en/LC_MESSAGES/django.po type = PO -[mayan-edms.apps-dynamic_search] +[mayan-edms.dynamic_search-2-0] file_filter = mayan/apps/dynamic_search/locale//LC_MESSAGES/django.po source_lang = en source_file = mayan/apps/dynamic_search/locale/en/LC_MESSAGES/django.po type = PO -[mayan-edms.apps-events] +[mayan-edms.events-2-0] file_filter = mayan/apps/events/locale//LC_MESSAGES/django.po source_lang = en source_file = mayan/apps/events/locale/en/LC_MESSAGES/django.po type = PO -[mayan-edms.apps-folders] +[mayan-edms.folders-2-0] file_filter = mayan/apps/folders/locale//LC_MESSAGES/django.po source_lang = en source_file = mayan/apps/folders/locale/en/LC_MESSAGES/django.po type = PO -[mayan-edms.apps-installation] +[mayan-edms.installation-2-0] file_filter = mayan/apps/installation/locale//LC_MESSAGES/django.po source_lang = en source_file = mayan/apps/installation/locale/en/LC_MESSAGES/django.po type = PO -[mayan-edms.apps-linking] +[mayan-edms.linking-2-0] file_filter = mayan/apps/linking/locale//LC_MESSAGES/django.po source_lang = en source_file = mayan/apps/linking/locale/en/LC_MESSAGES/django.po type = PO -[mayan-edms.apps-mailer] +[mayan-edms.lock_manager-2-0] +file_filter = mayan/apps/lock_manager/locale//LC_MESSAGES/django.po +source_lang = en +source_file = mayan/apps/lock_manager/locale/en/LC_MESSAGES/django.po +type = PO + +[mayan-edms.mailer-2-0] file_filter = mayan/apps/mailer/locale//LC_MESSAGES/django.po source_lang = en source_file = mayan/apps/mailer/locale/en/LC_MESSAGES/django.po type = PO -[mayan-edms.apps-main] -file_filter = mayan/apps/main/locale//LC_MESSAGES/django.po -source_lang = en -source_file = mayan/apps/main/locale/en/LC_MESSAGES/django.po -type = PO - -[mayan-edms.apps-metadata] +[mayan-edms.metadata-2-0] file_filter = mayan/apps/metadata/locale//LC_MESSAGES/django.po source_lang = en source_file = mayan/apps/metadata/locale/en/LC_MESSAGES/django.po type = PO -[mayan-edms.apps-navigation] +[mayan-edms.mirroring-2-0] +file_filter = mayan/apps/mirroring/locale//LC_MESSAGES/django.po +source_lang = en +source_file = mayan/apps/mirroring/locale/en/LC_MESSAGES/django.po +type = PO + +[mayan-edms.navigation-2-0] file_filter = mayan/apps/navigation/locale//LC_MESSAGES/django.po source_lang = en source_file = mayan/apps/navigation/locale/en/LC_MESSAGES/django.po type = PO -[mayan-edms.apps-ocr] +[mayan-edms.ocr-2-0] file_filter = mayan/apps/ocr/locale//LC_MESSAGES/django.po source_lang = en source_file = mayan/apps/ocr/locale/en/LC_MESSAGES/django.po type = PO -[mayan-edms.apps-permissions] +[mayan-edms.permissions-2-0] file_filter = mayan/apps/permissions/locale//LC_MESSAGES/django.po source_lang = en source_file = mayan/apps/permissions/locale/en/LC_MESSAGES/django.po type = PO -[mayan-edms.apps-project_setup] -file_filter = mayan/apps/project_setup/locale//LC_MESSAGES/django.po -source_lang = en -source_file = mayan/apps/project_setup/locale/en/LC_MESSAGES/django.po -type = PO - -[mayan-edms.apps-project_tools] -file_filter = mayan/apps/project_tools/locale//LC_MESSAGES/django.po -source_lang = en -source_file = mayan/apps/project_tools/locale/en/LC_MESSAGES/django.po -type = PO - -[mayan-edms.apps-rest_api] +[mayan-edms.rest_api-2-0] file_filter = mayan/apps/rest_api/locale//LC_MESSAGES/django.po source_lang = en source_file = mayan/apps/rest_api/locale/en/LC_MESSAGES/django.po type = PO -[mayan-edms.apps-smart_settings] +[mayan-edms.smart_settings-2-0] file_filter = mayan/apps/smart_settings/locale//LC_MESSAGES/django.po source_lang = en source_file = mayan/apps/smart_settings/locale/en/LC_MESSAGES/django.po type = PO -[mayan-edms.apps-statistics] -file_filter = mayan/apps/statistics/locale//LC_MESSAGES/django.po -source_lang = en -source_file = mayan/apps/statistics/locale/en/LC_MESSAGES/django.po -type = PO - -[mayan-edms.apps-sources] +[mayan-edms.sources-2-0] file_filter = mayan/apps/sources/locale//LC_MESSAGES/django.po source_lang = en source_file = mayan/apps/sources/locale/en/LC_MESSAGES/django.po type = PO -[mayan-edms.apps-tags] +[mayan-edms.statistics-2-0] +file_filter = mayan/apps/statistics/locale//LC_MESSAGES/django.po +source_lang = en +source_file = mayan/apps/statistics/locale/en/LC_MESSAGES/django.po +type = PO + +[mayan-edms.storage-2-0] +file_filter = mayan/apps/storage/locale//LC_MESSAGES/django.po +source_lang = en +source_file = mayan/apps/storage/locale/en/LC_MESSAGES/django.po +type = PO + +[mayan-edms.tags-2-0] file_filter = mayan/apps/tags/locale//LC_MESSAGES/django.po source_lang = en source_file = mayan/apps/tags/locale/en/LC_MESSAGES/django.po type = PO -[mayan-edms.apps-user_management] +[mayan-edms.user_management-2-0] file_filter = mayan/apps/user_management/locale//LC_MESSAGES/django.po source_lang = en source_file = mayan/apps/user_management/locale/en/LC_MESSAGES/django.po type = PO - - diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000000..587fe9f65f --- /dev/null +++ b/Dockerfile @@ -0,0 +1,40 @@ +FROM ubuntu:15.04 + +MAINTAINER Roberto Rosario "roberto.rosario@mayan-edms.com" + +# Install base Ubuntu libraries +RUN apt-get update && apt-get install -y netcat-openbsd python-dev python-pip gpgv nginx libpq-dev git-core libjpeg-dev libmagic1 libpng-dev libreoffice libtiff-dev gcc ghostscript gpgv tesseract-ocr unpaper poppler-utils && apt-get clean && rm -rf /var/lib/apt/lists/* && rm -f /var/cache/apt/archives/*.deb + +ENV MAYAN_INSTALL_DIR=/usr/local/lib/python2.7/dist-packages/mayan + +# Install Mayan EDMS, latest production release +RUN pip install mayan-edms==2.0.0 + +# Install Python clients for PostgreSQL, REDIS, and uWSGI +RUN pip install psycopg2 redis uwsgi + +# Create Mayan EDMS basic settings/local.py file +RUN mayan-edms.py createsettings + +# Install Mayan EDMS static media files +RUN mayan-edms.py collectstatic --noinput + +ADD docker /docker + +# Setup Mayan EDMS settings file overrides +RUN cat /docker/conf/mayan/settings.py >> $MAYAN_INSTALL_DIR/settings/local.py + +# Setup NGINX +RUN rm /etc/nginx/sites-enabled/default +RUN ln -s /docker/conf/nginx/mayan-edms /etc/nginx/sites-enabled/mayan-edms + +# Setup UWSGI +RUN mkdir /var/log/uwsgi + +# Persistent Mayan EDMS files +VOLUME $MAYAN_INSTALL_DIR/media + +ENTRYPOINT ["/docker/entrypoint.sh"] + +EXPOSE 80 +CMD ["/docker/bin/run.sh"] diff --git a/HISTORY.rst b/HISTORY.rst index 21a4998ec9..caa15e5ced 100644 --- a/HISTORY.rst +++ b/HISTORY.rst @@ -1,3 +1,58 @@ +2.0 (2015-10-xx) +================ + +- New source homepage: https://gitlab.com/mayan-edms/mayan-edms +- Update to Django 1.7 +- New Bootstrap Frontend UI +- Easier theming and rebranding +- Improved page navigation interface +- Menu reorganization +- Removal of famfam icon set +- Improved document preview generation +- Document submission for OCR changed to POST +- New YAML based settings system +- Removal of auto admin creation as separate app +- Removal of dependencies +- ACL system refactor +- Object access control inheritance +- Removal of anonymous user support +- Metadata validators refactor +- Trash can support +- Retention policies +- Support for sharing indexes as FUSE filesystems +- Clickable preview images titles +- Removal of eval +- Smarter OCR, per page parsing or OCR fallback +- Improve failure tolerance (not all Operational Errors are critical now) +- RGB tags +- Default document type and default document source +- Link unbinding +- Statistics refactor +- Apps merge +- New signals +- Test improvements +- Indexes recalculation after document creation too +- Upgrade command +- OCR data moved to ocr app from documents app +- New internal document creation workflow return a document stub +- Auto console debug logging during development and info during production +- New class based and menu based navigation system +- New class based transformations +- Usage of Font Awesome icons set +- Management command to remove obsolete permissions: `purgepermissions` +- Normalization of 'title' and 'name' fields to 'label' +- Improved API, now at version 1 +- Invert page title/project name order in browser title +- Django's class based views pagination +- Reduction of text strings +- Removal of the CombinedSource class +- Removal of default class ACLs +- Removal of the ImageMagick and GraphicsMagick converter backends +- Remove support for applying roles to new users automatically +- Removal of the DOCUMENT_RESTRICTIONS_OVERRIDE permission +- Removed the page_label field + + 1.1.1 (2015-05-21) ================== @@ -41,9 +96,6 @@ - More technical documentation -For a full changelog and release notes go to: http://mayan.readthedocs.org/en/latest/releases/1.1.html - - 1.0 (2014-08-27) ================ @@ -63,5 +115,3 @@ For a full changelog and release notes go to: http://mayan.readthedocs.org/en/la - License change, Mayan EDMS in now licensed under the Apache 2.0 License - PyPI package, Mayan EDMS in now available on PyPI: https://pypi.python.org/pypi/mayan-edms/ - New REST API - -For a full changelog and release notes go to: http://mayan.readthedocs.org/en/latest/releases/1.0.html diff --git a/MANIFEST.in b/MANIFEST.in index c3acded2b5..4c59f9ed98 100644 --- a/MANIFEST.in +++ b/MANIFEST.in @@ -1,3 +1,3 @@ include README.rst LICENSE HISTORY.rst -recursive-include mayan README *.txt *.html *.css *.ico *.png *.jpg *.js *.po *.mo *.ttf -global-exclude mayan/settings/local.py mayan/settings/travis/* settings_local.* mayan.sqlite* db.sqlite* mayan/media gpg_home document_storage image_cache +recursive-include mayan *.txt *.html *.css *.ico *.png *.jpg *.js *.po *.mo *.ttf *.woff *.woff2 LICENSE +global-exclude mayan/settings/local.py mayan/settings/travis/* mayan/media/* diff --git a/README.rst b/README.rst index 9834627f19..f8156ca01d 100644 --- a/README.rst +++ b/README.rst @@ -1,15 +1,7 @@ -|Build Status| |Coverage Status| |PyPI badge| |Installs badge| |License badge| |Wheel badge| +|Build Status| |Coverage badge| |PyPI badge| |Installs badge| |License badge| |Logo| - -Notice: This project is being migrated to GitLab: https://gitlab.com/mayan-edms/mayan-edms. This repository will be removed once all tickets are closed. - -.. image:: https://badges.gitter.im/Join%20Chat.svg - :alt: Join the chat at https://gitter.im/mayan-edms/mayan-edms - :target: https://gitter.im/mayan-edms/mayan-edms?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge - - Description ----------- @@ -59,7 +51,7 @@ Contribute - Fork `the repository`_ on GitHub to start making your changes to the **development** branch (or branch off of it). - Write a test which shows that the bug was fixed or that the feature works as expected. - Add yourself to the `contributors file`_. -- Send a pull request +- Send a merge request. .. _Website: http://www.mayan-edms.com @@ -69,20 +61,19 @@ Contribute .. _Mailing list (via Google Groups): http://groups.google.com/group/mayan-edms .. _Apache 2.0 License: https://www.apache.org/licenses/LICENSE-2.0.txt .. _`the repository`: http://github.com/mayan-edms/mayan-edms -.. _`contributors file`: https://github.com/mayan-edms/mayan-edms/blob/master/docs/topics/contributors.rst +.. _`contributors file`: https://github.com/mayan-edms/mayan-edms/blob/development/docs/topics/contributors.rst -.. |Build Status| image:: http://img.shields.io/travis/mayan-edms/mayan-edms/master.svg?style=flat - :target: https://travis-ci.org/mayan-edms/mayan-edms -.. |Coverage Status| image:: http://img.shields.io/coveralls/mayan-edms/mayan-edms/master.svg?style=flat - :target: https://coveralls.io/r/mayan-edms/mayan-edms?branch=master -.. |Logo| image:: https://github.com/mayan-edms/mayan-edms/raw/master/docs/_static/mayan_logo.png -.. |Animation| image:: https://github.com/mayan-edms/mayan-edms/raw/master/docs/_static/overview.gif +.. |Build Status| image:: https://gitlab.com/ci/projects/6169/status.png?ref=development + :target: https://gitlab.com/ci/projects/6169?ref=development +.. |Logo| image:: https://github.com/mayan-edms/mayan-edms/raw/development/docs/_static/mayan_logo.png +.. |Animation| image:: https://github.com/mayan-edms/mayan-edms/raw/development/docs/_static/overview.gif .. |Installs badge| image:: http://img.shields.io/pypi/dm/mayan-edms.svg?style=flat :target: https://crate.io/packages/mayan-edms/ .. |PyPI badge| image:: http://img.shields.io/pypi/v/mayan-edms.svg?style=flat :target: http://badge.fury.io/py/mayan-edms -.. |Wheel badge| image:: http://img.shields.io/badge/wheel-yes-green.svg?style=flat .. |License badge| image:: http://img.shields.io/badge/license-Apache%202.0-green.svg?style=flat .. |Analytics| image:: https://ga-beacon.appspot.com/UA-52965619-2/mayan-edms/readme?pixel +.. |Coverage badge| image:: https://codecov.io/gitlab/mayan-edms/mayan-edms/coverage.svg?branch=development + :target: https://codecov.io/gitlab/mayan-edms/mayan-edms?branch=development |Analytics| diff --git a/contrib/apache/mayan b/contrib/apache/mayan deleted file mode 100644 index 4c880f586e..0000000000 --- a/contrib/apache/mayan +++ /dev/null @@ -1,19 +0,0 @@ - - # Uncomment if libapache2-mod-xsendfile is installed - # XSendFile On - # XSendFileAllowAbove On - ServerName mayan.yoursite.com - ServerAdmin admin@yoursite.com - DocumentRoot /var/www/mayan-edms - WSGIScriptAlias / /var/www/mayan-edms/mayan/mayan-edms.wsgi - - - Order allow,deny - Allow from all - - - Alias /static /var/www/mayan-edms/media/static - - SetHandler None - - diff --git a/contrib/apache/mayan-edms.wsgi b/contrib/apache/mayan-edms.wsgi deleted file mode 100644 index c917f319df..0000000000 --- a/contrib/apache/mayan-edms.wsgi +++ /dev/null @@ -1,14 +0,0 @@ -# sample wsgi file for usage with apache webserver -# mayan installation in a virtualenv /opt/mayan/venv -# apache deployment in /var/www/mayan-edms -import os -import sys -import site -# set up python path to virtual environment -site.addsitedir(‘/opt/mayan/venv/lib/python2.7/site-packages’) -sys.path.append(‘/var/www/mayan-edms’) -os.environ[‘PYTHON_EGG_CACHE’]=’/var/www/django/cache’ -#django WSGI specifics -From django.core.handlers.wsgi import WSGIHandler -os.environ[‘DJANGO_SETTING_MODULE’] = ‘mayan.settings.production’ -application = WSGIHandler() diff --git a/contrib/gunicorn/gunicorn.conf.py b/contrib/gunicorn/gunicorn.conf.py deleted file mode 100644 index 7e3916f474..0000000000 --- a/contrib/gunicorn/gunicorn.conf.py +++ /dev/null @@ -1,31 +0,0 @@ -# invoke gunicorn using -# 'gunicorn -c .wsgi:application -import os -import multiprocessing - -from django.conf import settings - -bind = settings.GUNICORN_BIND -workers = multiprocessing.cpu_count() * 2 + 1 - -preload_app = True - -chdir = settings.BASE_DIR - -user = settings.PROCESS_USER -group = user - -log_dir = os.path.join( - os.path.dirname(settings.BASE_DIR), 'gunicorn_logs', settings.PROCESS_NAME) -if not os.path.isdir(log_dir): - os.makedirs(log_dir) - import pwd - import grp - os.chown(log_dir, - pwd.getpwnam(user).pw_uid, - grp.getgrnam(group).gr_gid) - -accesslog = os.path.join(log_dir, 'access.log') -errorlog = os.path.join(log_dir, 'error.log') - -proc_name = settings.PROCESS_NAME \ No newline at end of file diff --git a/contrib/misc/mayan_edms_worker.sh b/contrib/misc/mayan_edms_worker.sh index 43b30c6343..59e1c4055b 100755 --- a/contrib/misc/mayan_edms_worker.sh +++ b/contrib/misc/mayan_edms_worker.sh @@ -1,3 +1,3 @@ #!/bin/sh -DJANGO_SETTINGS_MODULE='mayan.settings.celery_redis' celery -A mayan worker -l DEBUG -Q checkouts,mailing,uploads,converter,ocr,tools,indexing,metadata -Ofair -B +DJANGO_SETTINGS_MODULE='mayan.settings.celery_redis' celery -A mayan worker -l DEBUG -Ofair -B diff --git a/contrib/nginx/mayan b/contrib/nginx/mayan new file mode 100644 index 0000000000..1d8f6ec95f --- /dev/null +++ b/contrib/nginx/mayan @@ -0,0 +1,22 @@ +server { + listen 80; + server_name localhost; + + location / { + include uwsgi_params; + uwsgi_pass unix:/usr/share/mayan-edms/uwsgi.sock; + + client_max_body_size 30M; # Increse if your plan to upload bigger documents + proxy_read_timeout 30s; # Increase if your document uploads take more than 30 seconds + } + + location /static { + alias /usr/share/mayan-edms/mayan/media/static; + expires 1h; + } + + location /favicon.ico { + alias /usr/share/mayan-edms/mayan/media/static/appearance/images/favicon.ico; + expires 1h; + } +} diff --git a/contrib/nginx/mayan_uwsgi.conf b/contrib/nginx/mayan_uwsgi.conf deleted file mode 100644 index 9d272c9729..0000000000 --- a/contrib/nginx/mayan_uwsgi.conf +++ /dev/null @@ -1,19 +0,0 @@ -server { - listen 80; - listen [::]:80 ipv6only=on; - server_name mayan; - access_log /var/log/nginx/access_mayan.log; - error_log /var/log/nginx/error_mayan.log; - - location / { - uwsgi_pass unix:///run/uwsgi/app/mayan/socket; - include uwsgi_params; - uwsgi_param UWSGI_SCHEME $scheme; - uwsgi_param SERVER_SOFTWARE nginx/$nginx_version; - } - - location /static/ { - root /srv/mayan/projects/mayan/mayan-edms/mayan/media/; - } - -} diff --git a/contrib/nginx/nginx-fs-socket.conf b/contrib/nginx/nginx-fs-socket.conf deleted file mode 100644 index c29c812575..0000000000 --- a/contrib/nginx/nginx-fs-socket.conf +++ /dev/null @@ -1,46 +0,0 @@ -upstream app_server { - server unix:/var/tmp/filesystem.sock fail_timeout=0; -} - -server { - listen 80; - - access_log off; - error_log /var/log/nginx/mayan-edms_error.log; - - gzip on; - gzip_http_version 1.0; - gzip_comp_level 2; - gzip_proxied any; - gzip_min_length 1100; - gzip_buffers 16 8k; - gzip_types text/plain text/css application/x-javascript text/xml -application/xml application/xml+rss text/javascript; - - # Some version of IE 6 don't handle compression well on some mime-types, so just disable for them - gzip_disable "MSIE [1-6].(?!.*SV1)"; - - # Set a vary header so downstream proxies don't send cached gzipped content to IE6 - gzip_vary on; - - location / { - client_max_body_size 2M; - proxy_read_timeout 600s; - proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; - proxy_set_header Host $http_host; - proxy_redirect off; - if (!-f $request_filename) { - proxy_pass http://app_server; - break; - } - } - - location /static { - expires 1h; - alias /usr/share/mayan-edms/lib/python2.7/site-packages/mayan/media/static; - } - - location /favicon.ico { - alias /usr/share/mayan-edms/lib/python2.7/site-packages/mayan/media/static/core/images/favicon.ico; - } -} diff --git a/contrib/nginx/nginx.conf b/contrib/nginx/nginx.conf deleted file mode 100644 index dfc719ae8c..0000000000 --- a/contrib/nginx/nginx.conf +++ /dev/null @@ -1,34 +0,0 @@ -server { - listen 80; - server_name mayan.crossculturalconsult.com www.mayan.crossculturalconsult.com; - - access_log /var/log/nginx/mayan.crossculturalconsult.com.access.log; - error_log /var/log/nginx/mayan.crossculturalconsult.com.error.log; - root /home/mayan/production/; - - location /static/ { - alias /home/mayan/production/static_collected/; - } - - location /media/ { - alias /home/mayan/production/media/; - } - - location = /favicon.ico { - alias /home/mayan/production/media/favicon.ico; - } - - location = /robots.txt { - alias /home/mayan/production/media/robots.txt; - } - - location / { - proxy_pass http://127.0.0.1:8731; - proxy_redirect off; - proxy_set_header Host $host; - proxy_set_header X-Real-IP $remote_addr; - proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; - client_max_body_size 10m; - } - allow all; -} \ No newline at end of file diff --git a/contrib/sample_documents/I18N_title_áéíóúüñÑ.png.zip b/contrib/sample_documents/I18N_title_áéíóúüñÑ.png.zip new file mode 100644 index 0000000000..71dd22e25d Binary files /dev/null and b/contrib/sample_documents/I18N_title_áéíóúüñÑ.png.zip differ diff --git a/contrib/sample_documents/compressed_documents.zip b/contrib/sample_documents/compressed_documents.zip new file mode 100644 index 0000000000..9d02d8e314 Binary files /dev/null and b/contrib/sample_documents/compressed_documents.zip differ diff --git a/contrib/sample_documents/deu_website.png b/contrib/sample_documents/deu_website.png new file mode 100644 index 0000000000..94aa57f2e1 Binary files /dev/null and b/contrib/sample_documents/deu_website.png differ diff --git a/contrib/sample_documents/hybrid_text_and_image.pdf b/contrib/sample_documents/hybrid_text_and_image.pdf new file mode 100644 index 0000000000..cad612ae81 Binary files /dev/null and b/contrib/sample_documents/hybrid_text_and_image.pdf differ diff --git a/contrib/sample_documents/multi_page.tiff b/contrib/sample_documents/multi_page.tiff new file mode 100644 index 0000000000..b4d69c181e Binary files /dev/null and b/contrib/sample_documents/multi_page.tiff differ diff --git a/contrib/sample_documents/simple_2_page_document.doc b/contrib/sample_documents/simple_2_page_document.doc new file mode 100644 index 0000000000..041f9a1502 Binary files /dev/null and b/contrib/sample_documents/simple_2_page_document.doc differ diff --git a/contrib/scripts/process_messages.py b/contrib/scripts/process_messages.py index 5e8938a26a..b0069300ee 100755 --- a/contrib/scripts/process_messages.py +++ b/contrib/scripts/process_messages.py @@ -1,16 +1,26 @@ #!/usr/bin/env python -import sys import os import optparse import sh -APP_LIST = ('acls', 'checkouts', 'common', 'converter', 'django_gpg', 'documents', - 'document_comments', 'document_indexing', 'document_signatures', 'document_states', 'dynamic_search', - 'events', 'folders', 'installation', 'linking', 'mailer', 'main', 'metadata', 'navigation', - 'ocr', 'permissions', 'project_setup', 'project_tools', 'rest_api', - 'smart_settings', 'sources', 'statistics', 'tags', 'user_management') -LANGUAGE_LIST = ('ar', 'bg', 'bs_BA', 'da', 'de_CH', 'de_DE', 'en', 'es', 'fa', 'fr', 'hu', 'hr_HR', 'id', 'it', 'lv', 'nb', 'nl_NL', 'pl', 'pt', 'pt_BR', 'ro_RO', 'ru', 'sl_SI', 'sq', 'tr_TR', 'vi_VN', 'zh_CN', 'zh_TW') +APP_LIST = ( + 'acls', 'appearance', 'authentication', 'checkouts', 'common', + 'converter', 'django_gpg', 'document_comments', 'document_indexing', + 'document_signatures', 'document_states', 'documents', 'dynamic_search', + 'events', 'folders', 'installation', 'linking', 'lock_manager', 'mailer', + 'metadata', 'mirroring', 'navigation', 'ocr', 'permissions', 'rest_api', + 'smart_settings', 'sources', 'statistics', 'storage', 'tags', + 'user_management' +) +LANGUAGE_LIST = ( + 'ar', 'bg', 'bs_BA', 'da', 'de_DE', 'en', 'es', 'fa', 'fr', 'hu', 'id', + 'it', 'nl_NL', 'pl', 'pt', 'pt_BR', 'ro_RO', 'ru', 'sl_SI', 'vi_VN', + 'zh_CN', +) + +# Inactive translations +# 'de_CH', 'hr_HR', 'lv', 'nb', 'sq', 'tr_TR', 'zh_TW' makemessages = sh.Command('django-admin.py') makemessages = makemessages.bake('makemessages') @@ -22,7 +32,9 @@ transifex_client = sh.Command('tx') pull_translations = transifex_client.bake('pull') push_translations = transifex_client.bake('push') -BASE_DIR = os.path.abspath(os.path.join(os.path.dirname(__file__), '..', '..', 'mayan')) +BASE_DIR = os.path.abspath( + os.path.join(os.path.dirname(__file__), '..', '..', 'mayan') +) def process(command, app_list, language_list): @@ -55,12 +67,30 @@ def process(command, app_list, language_list): if __name__ == '__main__': parser = optparse.OptionParser() - parser.add_option('-m', '--make', help='create message sources file', dest='make', default=False, action='store_true') - parser.add_option('-c', '--compile', help='compile message files', dest='compile', default=False, action='store_true') - parser.add_option('-p', '--pull', help='pull translation files', dest='pull', default=False, action='store_true') - parser.add_option('-u', '--push', help='push translation files', dest='push', default=False, action='store_true') - parser.add_option('-a', '--app', help='specify which app to process', dest='app', action='store', metavar='appname') - parser.add_option('-l', '--lang', help='specify which language to process', dest='lang', action='store', metavar='language') + parser.add_option( + '-m', '--make', help='create message sources file', dest='make', + default=False, action='store_true' + ) + parser.add_option( + '-c', '--compile', help='compile message files', dest='compile', + default=False, action='store_true' + ) + parser.add_option( + '-p', '--pull', help='pull translation files', dest='pull', + default=False, action='store_true' + ) + parser.add_option( + '-u', '--push', help='push translation files', dest='push', + default=False, action='store_true' + ) + parser.add_option( + '-a', '--app', help='specify which app to process', dest='app', + action='store', metavar='appname' + ) + parser.add_option( + '-l', '--lang', help='specify which language to process', dest='lang', + action='store', metavar='language' + ) (opts, args) = parser.parse_args() if not opts.make and not opts.compile: diff --git a/contrib/supervisor/libreoffice-headless.conf b/contrib/supervisor/libreoffice-headless.conf deleted file mode 100644 index c70edbaea0..0000000000 --- a/contrib/supervisor/libreoffice-headless.conf +++ /dev/null @@ -1,5 +0,0 @@ -[program:openoffice] -command = /usr/lib/libreoffice/program/soffice.bin "-accept=socket,host=127.0.0.1,port=2002,tcpNoDelay=1;urp;" -headless -nodefault -nofirststartwizard -nolockcheck -nologo -norestore -stdout_logfile= /var/log/libreoffice-headless.log -redirect_stderr = true -autostart = true diff --git a/contrib/supervisor/mayan-celery.conf b/contrib/supervisor/mayan-celery.conf new file mode 100644 index 0000000000..ab7f24b279 --- /dev/null +++ b/contrib/supervisor/mayan-celery.conf @@ -0,0 +1,26 @@ +[program:mayan-worker] +command = /usr/share/mayan-edms/bin/python /usr/share/mayan-edms/bin/mayan-edms.py celery --settings=mayan.settings.production worker -Ofair -l ERROR +directory = /usr/share/mayan-edms +user = www-data +stdout_logfile = /var/log/mayan/worker-stdout.log +stderr_logfile = /var/log/mayan/worker-stderr.log +autostart = true +autorestart = true +startsecs = 10 +stopwaitsecs = 10 +killasgroup = true +priority = 998 + +[program:mayan-beat] +command = /usr/share/mayan-edms/bin/python /usr/share/mayan-edms/bin/mayan-edms.py celery --settings=mayan.settings.production beat -l ERROR +directory = /usr/share/mayan-edms +user = www-data +numprocs = 1 +stdout_logfile = /var/log/mayan/beat-stdout.log +stderr_logfile = /var/log/mayan/beat-stderr.log +autostart = true +autorestart = true +startsecs = 10 +stopwaitsecs = 1 +killasgroup = true +priority = 998 diff --git a/contrib/supervisor/mayan-edms.conf b/contrib/supervisor/mayan-edms.conf deleted file mode 100644 index 0dc16df199..0000000000 --- a/contrib/supervisor/mayan-edms.conf +++ /dev/null @@ -1,7 +0,0 @@ -[program:mayan-edms] -command = /usr/share/mayan-edms/contrib/scripts/gunicorn_start.sh -user = www-data -autostart = true -autorestart = true -redirect_stderr = true - diff --git a/contrib/supervisor/mayan-uwsgi.conf b/contrib/supervisor/mayan-uwsgi.conf new file mode 100644 index 0000000000..89f0e77f14 --- /dev/null +++ b/contrib/supervisor/mayan-uwsgi.conf @@ -0,0 +1,6 @@ +[program:mayan-uwsgi] +command = /usr/share/mayan-edms/bin/uwsgi --ini /usr/share/mayan-edms/uwsgi.ini +user = root +autostart = true +autorestart = true +redirect_stderr = true diff --git a/contrib/upstart/service_demon.sh b/contrib/upstart/service_demon.sh deleted file mode 100755 index 8d591edc3d..0000000000 --- a/contrib/upstart/service_demon.sh +++ /dev/null @@ -1,10 +0,0 @@ -#!/bin/bash -# Run the gunicorn service - -# Make sure we're in the right virtual env and location -source /home/mayan/.virtualenvs/production/bin/activate -source /home/mayan/.virtualenvs/production/bin/postactivate - -cd /home/mayan/production - -exec gunicorn -c /home/mayan/production/deploy/gunicorn.conf.py mayan.wsgi:application \ No newline at end of file diff --git a/contrib/upstart/upstart.conf b/contrib/upstart/upstart.conf deleted file mode 100644 index 261d408b83..0000000000 --- a/contrib/upstart/upstart.conf +++ /dev/null @@ -1,10 +0,0 @@ -start on started rc -stop on stopped rc - -respawn -respawn limit 3 5 - -setuid mayan -setgid mayan - -exec /home/mayan/production/deploy/production/service_demon.sh \ No newline at end of file diff --git a/contrib/uwsgi/mayan.ini b/contrib/uwsgi/mayan.ini deleted file mode 100644 index fc641f1f84..0000000000 --- a/contrib/uwsgi/mayan.ini +++ /dev/null @@ -1,14 +0,0 @@ -# Sample file for uswgi with mayan installed in a virtualenv mayan -# with project directory mayan e.g. for use with nginx connecting via -# local unix socket -[uwsgi] -#socket = 127.0.0.1:3031 -plugin = python -chdir = /srv/mayan/projects/mayan/mayan-edms -virtualenv = /srv/mayan/.virtualenvs/mayan -env = DJANGO_SETTINGS_MODULE=mayan.settings.production -module = django.core.handlers.wsgi:WSGIHandler() -processes = 4 -threads = 2 -stats = :9191 -buffer-size=32768 \ No newline at end of file diff --git a/docker-compose.yml b/docker-compose.yml new file mode 100644 index 0000000000..371f567166 --- /dev/null +++ b/docker-compose.yml @@ -0,0 +1,21 @@ +postgres: + env_file: + - ./environment + image: postgres + volumes: + - /var/lib/postgresql/data + +redis: + image: redis + +mayan-edms: + env_file: + - ./environment + image: mayanedms/monolithic + links: + - postgres + - redis + ports: + - "80:80" + volumes: + - /usr/local/lib/python2.7/dist-packages/mayan/media diff --git a/docker/bin/run.sh b/docker/bin/run.sh new file mode 100755 index 0000000000..ad74092f90 --- /dev/null +++ b/docker/bin/run.sh @@ -0,0 +1,10 @@ +#!/bin/bash + +# Launch NGINX daemon +nginx + +# Launch the workers +mayan-edms.py celery worker --settings=mayan.settings.production -Ofair -l ERROR -B & + +# Launch uWSGI in foreground +/usr/local/bin/uwsgi --ini /docker/conf/uwsgi/uwsgi.ini diff --git a/docker/conf/mayan/settings.py b/docker/conf/mayan/settings.py new file mode 100644 index 0000000000..50b90ae9bc --- /dev/null +++ b/docker/conf/mayan/settings.py @@ -0,0 +1,15 @@ +import os + +DATABASES = { + 'default': { + 'ENGINE': 'django.db.backends.postgresql_psycopg2', + 'NAME': os.environ.get('POSTGRES_DB'), + 'USER': os.environ.get('POSTGRES_USER'), + 'PASSWORD': os.environ.get('POSTGRES_PASSWORD'), + 'HOST': os.environ.get('POSTGRES_PORT_5432_TCP_ADDR'), + 'PORT': os.environ.get('POSTGRES_PORT_5432_TCP_PORT'), + } +} + +BROKER_URL = 'redis://{}:{}/0'.format(os.environ.get('REDIS_PORT_6379_TCP_ADDR'), os.environ.get('REDIS_PORT_6379_TCP_PORT')) +CELERY_RESULT_BACKEND = 'redis://{}:{}/0'.format(os.environ.get('REDIS_PORT_6379_TCP_ADDR'), os.environ.get('REDIS_PORT_6379_TCP_PORT')) diff --git a/docker/conf/nginx/mayan-edms b/docker/conf/nginx/mayan-edms new file mode 100644 index 0000000000..3522f55517 --- /dev/null +++ b/docker/conf/nginx/mayan-edms @@ -0,0 +1,22 @@ +server { + listen 80; + server_name localhost; + + location / { + include uwsgi_params; + uwsgi_pass unix:/run/mayan.sock; + + client_max_body_size 30M; # Increse if your plan to upload bigger documents + proxy_read_timeout 30s; # Increase if your document uploads take more than 30 seconds + } + + location /static { + alias /usr/local/lib/python2.7/dist-packages/mayan/media/static; + expires 1h; + } + + location /favicon.ico { + alias /usr/local/lib/python2.7/dist-packages/mayan/media/static/appearance/images/favicon.ico; + expires 1h; + } +} diff --git a/docker/conf/uwsgi/uwsgi.ini b/docker/conf/uwsgi/uwsgi.ini new file mode 100644 index 0000000000..6e2e1ff95f --- /dev/null +++ b/docker/conf/uwsgi/uwsgi.ini @@ -0,0 +1,14 @@ +[uwsgi] +chdir = $(MAYAN_INSTALL_DIR) +chmod-socket = 664 +chown-socket = www-data:www-data +env = DJANGO_SETTINGS_MODULE=mayan.settings.production +gid = root +logto = /var/log/uwsgi/%n.log +pythonpath = /usr/local/lib/python2.7/dist-packages +master = True +max-requests = 5000 +socket = /run/mayan.sock +uid = root +vacuum = True +wsgi-file = $(MAYAN_INSTALL_DIR)/wsgi.py diff --git a/docker/entrypoint.sh b/docker/entrypoint.sh new file mode 100755 index 0000000000..13fe1f395a --- /dev/null +++ b/docker/entrypoint.sh @@ -0,0 +1,17 @@ +#!/bin/bash +set -e + +if [[ -z $POSTGRES_PORT_5432_TCP_ADDR ]]; then + echo "** ERROR: You need to link the Postgres container." + exit 1 +fi + +until nc -z $POSTGRES_PORT_5432_TCP_ADDR $POSTGRES_PORT_5432_TCP_PORT; do + echo "$(date) - waiting for Postgres..." + sleep 1 +done + +# Migrate database, create initial admin user +mayan-edms.py initialsetup + +exec "$@" diff --git a/docs/Makefile b/docs/Makefile index 0271d87880..f8558b7265 100644 --- a/docs/Makefile +++ b/docs/Makefile @@ -128,3 +128,6 @@ doctest: $(SPHINXBUILD) -b doctest $(ALLSPHINXOPTS) $(BUILDDIR)/doctest @echo "Testing of doctests in the sources finished, look at the " \ "results in $(BUILDDIR)/doctest/output.txt." + +livehtml: + sphinx-autobuild -b html $(ALLSPHINXOPTS) $(BUILDDIR)/html diff --git a/docs/_static/api.png b/docs/_static/api.png new file mode 100644 index 0000000000..058b1115ea Binary files /dev/null and b/docs/_static/api.png differ diff --git a/docs/_static/document_view.png b/docs/_static/document_view.png new file mode 100644 index 0000000000..8c7953f27a Binary files /dev/null and b/docs/_static/document_view.png differ diff --git a/docs/_static/main.png b/docs/_static/main.png new file mode 100644 index 0000000000..0b2eb38ba6 Binary files /dev/null and b/docs/_static/main.png differ diff --git a/docs/_static/overview.gif b/docs/_static/overview.gif index de076555f6..416fe297fc 100644 Binary files a/docs/_static/overview.gif and b/docs/_static/overview.gif differ diff --git a/docs/_static/page_view.png b/docs/_static/page_view.png new file mode 100644 index 0000000000..7c9c91e028 Binary files /dev/null and b/docs/_static/page_view.png differ diff --git a/docs/_static/setup.png b/docs/_static/setup.png new file mode 100644 index 0000000000..5eb2916bb0 Binary files /dev/null and b/docs/_static/setup.png differ diff --git a/docs/_static/statistics.png b/docs/_static/statistics.png new file mode 100644 index 0000000000..3dac670691 Binary files /dev/null and b/docs/_static/statistics.png differ diff --git a/docs/_static/tools.png b/docs/_static/tools.png new file mode 100644 index 0000000000..a2272b5603 Binary files /dev/null and b/docs/_static/tools.png differ diff --git a/docs/_templates/donate.html b/docs/_templates/donate.html index 79a151fb76..8a08d336a8 100644 --- a/docs/_templates/donate.html +++ b/docs/_templates/donate.html @@ -1,3 +1,5 @@ + +Buy Mayan EDMS

Donate

Help support further improvements and development by donating on: Patreon diff --git a/docs/conf.py b/docs/conf.py index 920bb4785f..dfe3065dfb 100644 --- a/docs/conf.py +++ b/docs/conf.py @@ -33,7 +33,12 @@ sys.path.append(os.path.abspath(os.path.join(os.path.dirname(__file__), "_ext")) # coming with Sphinx (named 'sphinx.ext.*') or your custom ones. #extensions = ['sphinx.ext.autodoc', 'sphinx.ext.viewcode'] #extensions = ["djangodocs", "sphinx.ext.intersphinx"] -extensions = ['djangodocs'] +extensions = ['djangodocs', 'sphinxcontrib.blockdiag'] + +blockdiag_antialias = True +blockdiag_html_image_format = "SVG" +blockdiag_latex_image_format = "PDF" +blockdiag_tex_image_format = "PDF" # Add any paths that contain templates here, relative to this directory. templates_path = ['_templates'] @@ -229,20 +234,19 @@ man_pages = [ import alabaster html_theme_path = [alabaster.get_path()] -extensions = ['alabaster'] +extensions.append('alabaster') html_theme = 'alabaster' html_sidebars = { '**': [ - 'about.html', 'navigation.html', 'searchbox.html', 'donate.html', + 'about.html', 'donate.html', 'navigation.html', 'searchbox.html', ] } html_theme_options = { - 'description': 'Free Open Source Electronic Document Management System', - 'github_user': 'mayan-edms', - 'github_repo': 'mayan-edms', - 'travis_button': True, + 'description': mayan.__description__, + 'github_button': False, + 'travis_button': False, 'gratipay_user': 'rosarior', - 'github_banner': True, + 'github_banner': False, } html_logo = '_static/logo_pyramid_only.png' diff --git a/docs/index.rst b/docs/index.rst index a505830c88..17cee38e60 100644 --- a/docs/index.rst +++ b/docs/index.rst @@ -10,31 +10,36 @@ and installing it from PyPI with the following commands: .. code-block:: bash - $ sudo apt-get install libjpeg-dev libmagic1 libpng-dev libreoffice libtiff-dev gcc ghostscript gpgv python-dev python-virtualenv tesseract-ocr unpaper poppler-utils -y - $ virtualenv venv - $ source venv/bin/activate - $ pip install mayan-edms - $ mayan-edms.py initialsetup - $ mayan-edms.py runserver + sudo apt-get install libjpeg-dev libmagic1 libpng-dev libreoffice libtiff-dev gcc ghostscript gpgv python-dev python-virtualenv tesseract-ocr unpaper poppler-utils -y + virtualenv venv + source venv/bin/activate + pip install mayan-edms + mayan-edms.py initialsetup + mayan-edms.py runserver Point your browser to 127.0.0.1:8000 and use the automatically created admin account. +.. image:: /_static/overview.gif + :alt: Overview + .. toctree:: :hidden: Features Installation - Getting started + Deploying Release notes and upgrading Concepts Development + App creation + Translations Contributors + Screenshots Licensing FAQ Contact - .. _Django: http://www.djangoproject.com/ .. _Free Open Source: http://en.wikipedia.org/wiki/Open_source .. _Electronic Document Management System: https://en.wikipedia.org/wiki/Document_management_system diff --git a/docs/releases/0.12.1.rst b/docs/releases/0.12.1.rst index 75379ea8d7..cce015965f 100644 --- a/docs/releases/0.12.1.rst +++ b/docs/releases/0.12.1.rst @@ -13,7 +13,7 @@ While bug fixes and minor feature were the focus for this release, some bigger changes were included because of their importance. The parsing of documents saw a complete rewrite being now class based and allows for more than one parser per mimetype with sequencial fallback. This provides the -best text extraction on deployments where users have control over the +best text extraction on deployments where users have control over the installation and basic extraction when deploying on the cloud or other environments where users don't have the ability to install OS level binaries. @@ -24,7 +24,7 @@ What's new in Mayan EDMS v0.12.1 Fabric file (fabfile) ~~~~~~~~~~~~~~~~~~~~~ -A Fabric file is included to help users not very familiar with Ubuntu, +A Fabric file is included to help users not very familiar with Ubuntu, Python and Django install **Mayan EDMS**, or for system administrators looking to automate the install whether in local or remote systems. At the moment the fabfile will install **Mayan EDMS** in the same configurations @@ -36,10 +36,10 @@ the fabfile as more are tested. Documentation update ~~~~~~~~~~~~~~~~~~~~ The installation instructions were updated to include the installation of -the libpng-dev and libjpeg-dev libraries as well as the installation of +the libpng-dev and libjpeg-dev libraries as well as the installation of the poppler-utils package. An additional step to help users test their new installation of **Mayan EDMS** was also added. - + Translations ~~~~~~~~~~~~ The Italian translation has been synchronized with the source files at @@ -50,30 +50,30 @@ Usability improvements The index instance view now feature the same multi document action buttons (Submit to OCR, delete, download, etc) as the mail and recent document views. - + Better office document conversion ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ A new method of converting office documents has been implemented, this new method doesn't require the use of the command line utility ``UNOCONV``. If this new method proves to work better than previous solutions the use of ``UNOCONV`` may be deprecated in the future. The conversion method -adds just one new configuration option: :setting:`CONVERTER_LIBREOFFICE_PATH` +adds just one new configuration option: `CONVERTER_LIBREOFFICE_PATH` which defaults to '/usr/bin/libreoffice'. Better PDF text parsing ~~~~~~~~~~~~~~~~~~~~~~~ Brian E. submitted a patch to use the Poppler package pdftotext utility to extract text from PDF files. This is now the default method Mayan EDMS -will execute to try to extract text from a PDF and failing that will +will execute to try to extract text from a PDF and failing that will fallback to the previous method. This change add a new configuration -option: :setting:`OCR_PDFTOTEXT_PATH` to specify the location of the ``pdftotext`` +option: `OCR_PDFTOTEXT_PATH` to specify the location of the ``pdftotext`` executable, it defaults to '/usr/bin/pdftotext'. Be sure to install the ``poppler-utils`` os package to take advantage of this new parser. Changed defaults ~~~~~~~~~~~~~~~~ -The OCR queue is now active by default when first created during the -``syncdb`` phase and the :setting:`OCR_AUTOMATIC_OCR` option now defaults +The OCR queue is now active by default when first created during the +``syncdb`` phase and the `OCR_AUTOMATIC_OCR` option now defaults to ``True``. These two changes are made to reduce the steps required for new users to start enjoying the benefits of automatic text extraction from uploaded documents without having to read the documentation and have a more @@ -95,7 +95,7 @@ Install the ``poppler-utils`` package: * Ubuntu, Debian:: $ apt-get install -y poppler-utils - + * Fedora:: $ yum install -y poppler-utils @@ -112,5 +112,5 @@ Bugs fixed * Issue #25 "Office document conversion error" Stuff removed -============= +============= * None diff --git a/docs/releases/0.12.2.rst b/docs/releases/0.12.2.rst index e8e4c83f35..b0bcc4aa45 100644 --- a/docs/releases/0.12.2.rst +++ b/docs/releases/0.12.2.rst @@ -27,10 +27,10 @@ Smarter auto admin creation **Mayan EDMS** creates a administrator user during the database creation phase to reduce the amount of steps required for a functional install. The creation of this account is controlled by the configuration -option :setting:`COMMON_AUTO_CREATE_ADMIN`, the username of the account is -specified with the configuration option :setting:`COMMON_AUTO_ADMIN_USERNAME` -and the password of this account by the option :setting:`COMMON_AUTO_ADMIN_PASSWORD`. -Previously the :setting:`COMMON_AUTO_ADMIN_PASSWORD` defaulted to 'admin' which +option `COMMON_AUTO_CREATE_ADMIN`, the username of the account is +specified with the configuration option `COMMON_AUTO_ADMIN_USERNAME` +and the password of this account by the option `COMMON_AUTO_ADMIN_PASSWORD`. +Previously the `COMMON_AUTO_ADMIN_PASSWORD` defaulted to 'admin' which created an administrator account of username 'admin' with a password of 'admin'. The new default is to randomize an initial password and show this password at the login screen until the administrator password is changed. diff --git a/docs/releases/0.12.rst b/docs/releases/0.12.rst index 67f4f20f1e..d46b3cb0a4 100644 --- a/docs/releases/0.12.rst +++ b/docs/releases/0.12.rst @@ -60,7 +60,7 @@ ACL support Anonymous user support ~~~~~~~~~~~~~~~~~~~~~~ Anonymous user support is a two tier function, first is the addition of -the :setting:`COMMON_ALLOW_ANONYMOUS_ACCESS` configuration option that +the `COMMON_ALLOW_ANONYMOUS_ACCESS` configuration option that allows non authenticated user to browse all the pages of a **Mayan EDMS** installation. The second part of this support is the ability to assign permissions or individual access to objects to anonymous users. @@ -88,7 +88,7 @@ the download of several documents in a single compressed file. Customizable GPG home directory ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -Addition of the :setting:`SIGNATURES_GPG_HOME` configuration option to let +Addition of the `SIGNATURES_GPG_HOME` configuration option to let administrators set **Mayan EDMS**'s GPG instance home directory, used to store keyrings and other GPG configuration files. @@ -116,7 +116,7 @@ These populated trees can also be mirrored on the physical filesystem and shared using Samba or another filesharing server giving users a structured view of the documents contained within **Mayan EDMS** from the ``Indexes`` tab or from a mirrored index shared via the network. A new configuration option -has been added, :setting:`DOCUMENT_INDEXING_FILESYSTEM_SERVING`, which maps +has been added, `DOCUMENT_INDEXING_FILESYSTEM_SERVING`, which maps the index internal name with the physical directory where such index will be mirrored on disk. @@ -226,6 +226,6 @@ Stuff removed * Configuration options removed: * OCR_CACHE_URI - * DOCUMENT_INDEXING_FILESYSTEM_FILESERVING_PATH - Use the newest :setting:`DOCUMENT_INDEXING_FILESYSTEM_SERVING` - * DOCUMENT_INDEXING_FILESYSTEM_FILESERVING_ENABLE - Use the newest :setting:`DOCUMENT_INDEXING_FILESYSTEM_SERVING` + * DOCUMENT_INDEXING_FILESYSTEM_FILESERVING_PATH - Use the newest `DOCUMENT_INDEXING_FILESYSTEM_SERVING` + * DOCUMENT_INDEXING_FILESYSTEM_FILESERVING_ENABLE - Use the newest `DOCUMENT_INDEXING_FILESYSTEM_SERVING` diff --git a/docs/releases/2.0.rst b/docs/releases/2.0.rst new file mode 100644 index 0000000000..d8fd7806cb --- /dev/null +++ b/docs/releases/2.0.rst @@ -0,0 +1,508 @@ +============================= +Mayan EDMS v2.0 release notes +============================= + +Released: December 2015 + +Welcome to Mayan EDMS v2.0 + + +What's new in Mayan EDMS v2.0 +============================= + +Update to Django 1.7 +-------------------- +The biggest change of this release comes in the form of support for Django 1.7. +**Mayan EDMS** makes use of several new features of Django 1.7 like: migrations, +app config and transaction handling. The version of Django supported in this +version is 1.7.10. With the move to Django 1.7, support for South migrations +and Python 2.6 is removed. The switch to Django 1.7's app config means that +the startup order of app should not longer have any relevance, cause any import +or startup problems. + +Frontend UI +----------- +The frontend UI HTML has been re-factored to use Bootstrap. Along with this +update a lot of legacy HTML and CSS was removed, greatly simplifying the +existing template and allowing the removal of some. + +Theming and re-branding +---------------------- +All the presentation logic and markup has been moved into it's own app, the +'appearance' app. All modifications required to customize the entire look of +the **Mayan EDMS** can now be done in a single app. Very little markup remains +in the other apps, and it's usually because of necessity, namely the widgets.py +modules. + +Improved page navigation interface +---------------------------------- +Previously the document page interface used a fancybox windows leaving the +current document in the background. This UI workflow as been improved and the +document page navigation behaves like the rest of the document views. + +Menu reorganization +------------------- +To improve user experience, the main menu has been restructured based on +function usage, moving seldom used buttons inside other views. + +Removal of famfam icon set +-------------------------- +The previously used icon set and icon display code was removed and a new +system that favor font icon was added. + +Document preview generation +--------------------------- +The image conversion system was re-factored from the ground up and uses a much +smarted caching system. The document image cache has it's own Django file +storage driver and no longer default to the system /tmp directory. By moving +the document image cache to a Django file storage, the cache doesn't need to +reside in the same filesystem or even computer serving the document images. +This change also allows nodes in a clustered install to share the document +image cache. + +Document submission for OCR changed to POST +------------------------------------------- +Previously submitting a document for OCR could be done with a GET request to +the corresponding URL. This design decision allowed for fast user experience +but caused massive document submissions when sites were scanned by web spiders. +The new workflow is to submit documents to the OCR queue only on POST request. + +New YAML based settings system +------------------------------ +The first phase of the new distributed settings system has landed in this +version. This first change causes settings to be serialized to YAML. This also +means that it is not possible to pass functions or custom classes as values to +settings. Setting that related to a class or function, now specify the path to +those classes or functions and they are imported dynamically at runtime. +Example:: + + DOCUMENTS_STORAGE_BACKEND = 'storage.backends.filebasedstorage.FileBasedStorage' + +Removal of auto admin creation +------------------------------ +The auto admin user creation code used during new installs has been removed and +it is its own reusable Django app. The app is available at +https://pypi.python.org/pypi/django-autoadmin + +Removal of dependencies +----------------------- +Through optimizations and code reduction several Python libraries and Django +app are no longer required. These are: + +* South +* GitPython +* django-pagination +* psutil +* python-hkp +* sendfile +* slate + +ACL system re-factor +------------------- +The Access Control System has been greatly simplified and optimized. The +logistics to grant and revoke permissions are now as follows: Only Roles can +hold permissions, groups and user can no longer on their own be granted a +permission. Groups are now only organizational units that hold users and Roles +are collections of groups. User are just a profile and authentication +information object. So to grant a permission or access to a document to a user, +grant those permissions to a new or existing role, add the desired user to a +group and add that group to the role to which you granted the permission. When +thinking about granting permissions think of it this way: + +**Permissions -> Roles -> Groups -> User** + +**Permissions for a document -> Roles -> Groups -> User** + +**Permissions for a type of document -> Roles -> Groups -> User** + + +Object access control inheritance +--------------------------------- +A frequently asked feature is the ability to change the access control of a +group of documents. This feature has been implemented in the form of object +access control inheritance. This means that if you grant a permission to a role +for a document type, that role will inherit that permission for all document +that are later created of that type. If you revoke a permission from a role for +a document type, that role loses that permission for all documents of that type. +With this new system changing the access control of individual documents +should be an edge case. This new ability of modifying the access control of +document types is the new recommended method. + +Removal of anonymous user support +--------------------------------- +Allowing anonymous users access to your document repository is no longer +support. Administrators wanting to make a group of documents public are +encouraged to create an user, group and role for that purpose. + +Metadata validators re-factor +---------------------------- +The metadata validators have been split into: Validators and Parsers. +Validators will just check that the input value conforms to certain +specification, raising a validation error is not and blocking the user from +submitting data. The Parsers will transform user input and store the result as +the metadata value. + +Trash can support +----------------- +To avoid accidental data loss, documents are not deleted but moved to a virtual +trash can. From that trash can documents can them be deleted permanently. The +deletion document documents and the moving of documents to the trash can are +governed by two different permissions. + +Retention policies +------------------ +Support for retention policies was added and is control on a document type basis. +Two aspects can be controlled: the time at which documents will be +automatically moved to the trash can and the time after which documents in the +trash can will be automatically deleted. By default all new document types +created will have a retention policy that doesn't move documents to the trash +can and that permanently deletes documents in the trash can after 30 days. + +Support to share an index as a FUSE filesystem +---------------------------------------------- +Index mirror has been added after being removed several version ago. This time +mirroring works by creating a FUSE filesystem that is then mounted anywhere in +the filesystem. The previous implementation used symbolic links that while +fast, required constant modification to keep in sync with the indexes structure +and only worked when the document storage and the index mirror resided in the +same physical computer or node. This new implementation allowing mirroring of +indexes even across a network or if the document storage is not a traditional +filesystem but a remote object store. Since this new FUSE mirroring uses direct +read access to the database caching is provided and is controlled by the +**MIRRORING_DOCUMENT_CACHE_LOOKUP_TIMEOUT** and **MIRRORING_NODE_CACHE_LOOKUP_TIMEOUT** +setting options. Both setting have a default of 10 seconds. + +Clickable preview images titles +------------------------------- +To reduce the amount of clicks required to access a document, document previews +titles are now clickable and will take the user straight to the document view. + +Removal of eval +--------------- +Use of Python's eval statement has been completely removed. Metadata type +defaults, lookup fields, smart links and indexes templates now use Django's +own template language. + +Smarter OCR +----------- +Document OCR workflow has been improved to try to parse text for each document +page and in failing to parse text will only perform OCR on that specific page, +returning to the parsing behavior for the next page. This allowing proper text +extraction of documents containing both, embedded text and images. + +Failure tolerance +----------------- +Previous versions made use of transactions to prevent data loss in the event of +an unexpected error. This release improves on that approach by also reacting +to infrastructure failures. **Mayan EDMS** can now recover without any or +minimal data loss from critical events such as loss of connectivity to the +database manager. This changes allow installation of using database managers +that do not provide guaranteed concurrency such as SQLite, to scale to thousand +of documents. While this configuration is still not recommended, **Mayan EDMS** +will now work and scale much better in environments where parts of the +infrastructure cannot be changed (such as the database manager). + +For more information about this change read the blog post: +http://blog.robertorosario.com/testing-django-project-infrastructure-failure-tolerance/ + +As a result of this work a new Django app called Django-sabot was created that +gives Django projects the ability to create unit tests for infrastructure +failure tolerance: https://pypi.python.org/pypi/django-sabot + +RGB tags +-------- +Previously tags could only choose from a predetermined number of color. This +release changes that and tags be of any color. Tags now store the color +selected in HTML RGB format. Existing tags are automatically converted to this +new scheme. + +Default document type and default document source +------------------------------------------------- +After installation a default document type and document source are created, +this means that users can start uploading documents as soon as **Mayan EDMS** +is installed without having to do any configuration setting changes. The +default document type and default document source are both called 'Default'. + +Link unbinding +-------------- +Support for allowing 3rd party apps to unbind links binded by the core apps +was added to further improve re-branding and customization. + +Statistics re-factor +------------------- +Statistics gathering and generation has been overhauled to allow for the +creation of scheduled statistics. This allows statistics computation to be +scheduled during low load times. A new management command was added to +purge stale or orphan schedules left behind by the editing of statistics +scheduled. The command is `purgestatistics` and has no parameters. + +Apps merge +---------- +Several app were merge to reduce complexity of the code based on function. +These are: the `home`, `common`, `project_tools` and `project_setup` apps, +as well as the `documents` and `document_acls` apps. + +New signals +----------- +Two new signals are provided to better trigger processing documents at the +correct moment, these are: + +* common/perform_upgrade - Launched on the `performupgrade` management command + to allow 3rd party apps to execute custom upgrade procedures in an unified + manner. +* common/post_initial_setup - Launched on the `initialsetup` management command + to allow for post install initialization or setup. +* common/post_upgrade - Launched after the `performupgrade` management command + finishes. +* documents/post_version_upload = Launched after a new document version is + uploaded. +* document/post_document_type_change = Launched after the document type of a + document is changed. +* documents/post_document_created = Launched after a document is finally ready + to be accessed, not when it is created. +* ocr/post_document_version_ocr - Launched when the OCR of a document version + has finished. + +Test improvements +----------------- +Instead of a flat tests.py file, each app now has a tests/ directory containing +tests modules for each particular aspect of an apps, ie: test_models.py, +test_views.py, test_classes.py. The total number and coverage of tests has been +greatly increased. + +Indexes recalculation +--------------------- +Indexes are now recalculated on when a new document is ready as well as the +when the metadata of a document changes. This allows indexing documents not +only based on their metadata but also based on their properties. + +Upgrade command +--------------- +To reduce the steps and complexity of upgrades, the new `performupgrade` +management command was been added. All the upgrade steps will be performed +by this command. + +Admin changes +------------- +Installation admins are no longer required to have the `superusers` or `staff` +Django account flags. All setup tasks are now governed by a permission which +can be assigned to a role. + +OCR functions split +------------------- +The textual content of a document as interpreted by the OCR now resides as data +in the `ocr` app and not in the `documents` app as before. OCR content might +not be available for all documents after the upgrade and might need to be +queued again. To help with this situation there is new tool called `OCR all +documents` for this exact situation. + +New internal document creation workflow +--------------------------------------- +The new document upload code now returns a document stub while content is +processing. This allows API users to have the document id of the document +just uploaded and perform other actions on it while it becomes ready +for access. + +Auto logging +------------ +App logging to the console is now automatically enabled. If Django's DEBUG +flag is `True` the default level for auto logging is `DEBUG`. If Django's +DEBUG flag is `False` (as in production), the default level changes to `INFO`. +This should make it easier to add relevant messages to issue tickets as +well as a adecuate logging during production. + +Other changes +------------- + +* Merge of document_print and document_hard_copy views. +* New class based and menu based navigation system. +* Re-purpose the installation app. +* New class based transformations. +* Usage of Font Awesome icons set. +* Move document text content display code to the OCR app. +* Add new permissions PERMISSION_OCR_CONTENT_VIEW. +* Document type OCR settings move to the OCR app. +* New dependencies: + + * PyYAML + * django-autoadmin + * django-pure-pagination + * djangorestframework-recursive + +* Management command to remove obsolete permissions: `purgepermissions`. +* Normalization of 'title' and 'name' fields to 'label'. +* Improved API, now at version 1. +* Invert page title/project name order in browser title. +* Use Django's class based views pagination. +* Reduction of text strings. +* OCR all documents. +* Add tool to OCR all documents of a type. +* Fix rendering of text files with Unicode characters. +* Capture body of emails as a text document. +* All app APIs are top level URLs. +* CI using gitlab-ci. +* Coverage report with codecov.io. +* Thumbnails for documents in trash. +* Production deployment documentation chapter. +* Command line to create an initial settings file: `createsettings`. +* Initialsetup now continues even is a settings/local.py exists. +* default_app_config for each app. +* Natural key support for many models allowing database migrations using dumped data. +* Separate documentation requirements file to allow for contributor who only want to work on documentation. +* Centralized testing with a new management command, `runtests`. +* Addition of a tox testing configuration. +* Email test body capture. +* Email subject and from values storage. +* Gitlab CI support. +* Codecov support. +* Improve text file rendering. +* Show other packages licenses. +* Task delay to allow DB replication. +* Automatic debug logging and info logging during production. + +Removals +-------- +* Removal of the CombinedSource class. +* Removal of default class ACLs. +* Removal of the ImageMagick and GraphicsMagick converter backends. +* Remove support for applying roles to new users automatically. +* Removal of the DOCUMENT_RESTRICTIONS_OVERRIDE permission. +* Removed the page_label field. +* Removal of custom HTTP 505 error view. + +Upgrading from a previous version +--------------------------------- + +Using PIP +~~~~~~~~~ + +Type in the console:: + + $ pip install -U mayan-edms + +the requirements will also be updated automatically. + +Using Git +~~~~~~~~~ + +If you installed Mayan EDMS by cloning the Git repository issue the commands:: + + $ git reset --hard HEAD + $ git pull + +otherwise download the compressed archived and uncompress it overriding the +existing installation. + +Next upgrade/add the new requirements:: + + $ pip install --upgrade -r requirements.txt + +Common steps +~~~~~~~~~~~~ + +Migrate existing database schema with:: + + $ mayan-edms.py performupgrade + +During the migration several messages of stale content types can occur: + +.. code-block:: bash + + The following content types are stale and need to be deleted: + + XX | XX + + Any objects related to these content types by a foreign key will also + be deleted. Are you sure you want to delete these content types? + If you're unsure, answer 'no'. + + Type 'yes' to continue, or 'no' to cancel: + + +You can safely answer "yes" to all. + +Add new static media:: + + $ mayan-edms.py collectstatic --noinput + +Remove unused dependencies:: + + $ pip uninstall South + $ pip uninstall GitPython + $ pip uninstall psutil + $ pip uninstall python-hkp + $ pip uninstall django-sendfile + $ pip uninstall django-pagination + $ pip uninstall slate + +The upgrade procedure is now complete. + + +Backward incompatible changes +============================= + +* Current document and document sources transformations will be lost during upgrade. +* Permissions and Access Controls granted to users and/or groups will be lost during upgrade. + +Bugs fixed or issues closed +=========================== + +* `GitHub issue #33 `_ Update to Django 1.7 +* `GitHub issue #59 `_ New bootstrap based UI +* `GitHub issue #60 `_ Backport class based navigation code from the unstable branch +* `GitHub issue #62 `_ Simplify and reduce code in templates +* `GitHub issue #67 `_ Python 3 compatibility: Update models __unicode__ methdo to __str__ methods (using Django's six library) +* `GitHub issue #121 `_ Twitter Bootstrap theme for Mayan EDMS +* `GitHub issue #155 `_ Header does not fit list on documents/list on small screens (laptop) +* `GitHub issue #170 `_ Remove use of python-hkp +* `GitHub issue #182 `_ Reorganize signal processors +* `GitLab issue #131 `_ error on initialsetup: GPG initialization error +* `GitLab issue #135 `_ Add document indexing filesystem mirroring +* `GitLab issue #141 `_ Merge common and main app +* `GitLab issue #142 `_ New authentication app +* `GitLab issue #145 `_ Convert document tags to user RGB value for code instead of predetermined choices +* `GitLab issue #150 `_ Add 'trash can' support +* `GitLab issue #151 `_ Add support for data retention policies +* `GitLab issue #152 `_ JSON API 500 error +* `GitLab issue #154 `_ /documents API endpoint should return document pk +* `GitLab issue #155 `_ Remove unused document page label field +* `GitLab issue #156 `_ Remove post OCR language cleanup +* `GitLab issue #158 `_ Django REST Swagger not working +* `GitLab issue #159 `_ Error during template rendering on /document/folder/add with non-admin user +* `GitLab issue #160 `_ Add audit logging +* `GitLab issue #163 `_ Removal of the compressed file support +* `GitLab issue #164 `_ Keep fancybox prev & next buttons enabled all the time +* `GitLab issue #167 `_ Add workflow completion number to states +* `GitLab issue #168 `_ Add field to store last error of source during execution +* `GitLab issue #171 `_ tesseract fails with german language (wrong abbreviation) +* `GitLab issue #173 `_ Add post_document_upload signal +* `GitLab issue #174 `_ Bootstrap UI with master branch +* `GitLab issue #176 `_ Replace default email domain +* `GitLab issue #177 `_ Multi page tiff preview is not working +* `GitLab issue #178 `_ Add separate missing optional metadata and missing required metadata tools +* `GitLab issue #181 `_ Move task <-> queue assignment to apps.py +* `GitLab issue #182 `_ Document tags widget is not permissions aware +* `GitLab issue #183 `_ Separate metadata validators into: validators and parsers +* `GitLab issue #184 `_ Move literals in checkouts apps.py and tasks.py to literals.py +* `GitLab issue #186 `_ Scheduled task to delete all document stubs of more than X age. +* `GitLab issue #187 `_ Add tests for multi page tiff files +* `GitLab issue #189 `_ Use transient queues +* `GitLab issue #190 `_ Bump API version number +* `GitLab issue #192 `_ Use local model for document comments +* `GitLab issue #197 `_ Add continuous integration that is compatible with Gitlab +* `GitLab issue #201 `_ Untranslated items +* `GitLab issue #202 `_ AutoAdminSingleton matching query does not exist. +* `GitLab issue #203 `_ KeyError at /sources/upload/document/new/interactive/ +* `GitLab issue #204 `_ Problems to add required metadata after changin the document type +* `GitLab issue #216 `_ Add default_app_config value to each app +* `GitLab issue #223 `_ [Documents] Trigger event_document_type_change on the model not on the view +* `GitLab issue #227 `_ decoder zip not available +* `GitLab issue #228 `_ Attribute error when trying to attach a tag for a user with inadequate permissions +* `GitLab issue #229 `_ Attribute error when a user tries to download a document - version 2.0.0b2 +* `GitLab issue #230 `_ No option to create new document version even though user given permission in document ACL +* `GitLab issue #231 `_ User shown option to upload new version of a document even though it is blocked by checkout - v2.0.0b2 +* `GitLab issue #233 `_ Available users instead of available groups +* `GitLab issue #237 `_ Forcefully checking in a document by a user without adequate permissions throws out an error + + +.. _PyPI: https://pypi.python.org/pypi/mayan-edms/ diff --git a/docs/releases/index.rst b/docs/releases/index.rst index c51bfdcecb..ba35ac60e1 100644 --- a/docs/releases/index.rst +++ b/docs/releases/index.rst @@ -17,8 +17,15 @@ Final releases Below are release notes through **Mayan EDMS** |version| and its minor releases. Newer versions of the documentation contain the release notes for any later releases. +2.0 series +---------- +.. toctree:: + :maxdepth: 1 + + 2.0 + 1.0 series ------------ +---------- .. toctree:: :maxdepth: 1 diff --git a/docs/topics/acls.rst b/docs/topics/acls.rst new file mode 100644 index 0000000000..2ca9d758e9 --- /dev/null +++ b/docs/topics/acls.rst @@ -0,0 +1,73 @@ +==================== +Access control lists +==================== + +Besides the permissions system explained in :doc:`permissions`, **Mayan EDMS** +provides per object permission granting. This feature is used to grant a +permission to a role, but this permission can only be executed for a limited +number of objects (documents, folders, tags) instead of being effective +system-wide. + +.. blockdiag:: + + blockdiag { + document [ label = 'Document' ]; + role [ label = 'Role' ]; + permission [ label = 'Permission' ]; + + role -> document <- permission; + } + +Example: + +.. blockdiag:: + + blockdiag { + document [ label = '2015 Payroll report.txt', width=200 ]; + role [ label = 'Accountants' ]; + permission [ label = 'View document' ]; + + role -> document <- permission; + } + +In this scenario only users in groups belonging to the ``Accountants`` role +would be able to view the ``2015 Payroll report.txt`` document. + +Inherited access control +======================== + +It is also possible to grant a permission to a role for a specific document type (:doc:`document_types`). +Under this scheme all users in groups belonging to that role will inherit that +permission for all documents of that type. + +.. blockdiag:: + + blockdiag { + document_type [ label = 'Document type' ]; + role [ label = 'Role' ]; + permission [ label = 'Permission' ]; + + role -> document_type <- permission; + } + +Example: + +.. blockdiag:: + + blockdiag { + document_type [ label = 'Payroll reports', width=200 ]; + role [ label = 'Accountants' ]; + permission [ label = 'View document' ]; + + role -> document_type <- permission; + } + +The role ``Accountants`` is given the permission ``document view`` for the +document type ``Payroll reports``. Now all users in groups belonging to the +``Accountants`` role can view all documents of the type ``Payroll reports`` +without needing to have that permissions granted for each particular +``Payroll reports`` type document. + +If access control for the ``Payroll reports`` documents needs to be updated it +only needs to be done for the document type and not for each document of the type +``Payroll reports``. diff --git a/docs/topics/app_creation.rst b/docs/topics/app_creation.rst new file mode 100644 index 0000000000..09399b1e73 --- /dev/null +++ b/docs/topics/app_creation.rst @@ -0,0 +1,143 @@ +============ +App creation +============ + +**Mayan EDMS** apps are essentially Django app with some extra code to register +navigation, permissions and other relationships. + + +App modules +=========== + +- __init__.py + + Should be empty if possible. No initialization code should be here, use the + ready() method of the MayanAppConfig class in the apps.py module. + +- admin.py + + Standard Django app module to define how models are to be presented in the + admin interface. + +- api_views.py + + REST API views go here. **Mayan EDMS** uses Django REST Framework API view + classes. + +- apps.py + + Contains the MayanAppConfig subclass as required by Django 1.7 and up. This + is a place to define the app name and translatable verbose name as well as + code to be execute when the modules of the app are ready. + +- classes.py + + Hold python classes to be used internally or externally. Any class defined by + the app that is not a model. + +- events.py + + Define event class instances that are later committed to a log by custom + code. + +- exceptions.py + + Custom exceptions defined by the app. + +- fields.py + + Place any custom form field classed you define here. + +- forms.py + + Standard Django app module that hold custom form classes. + +- handlers.py + + Contains the signal handlers, functions that will process a given signal + emitted from this or other apps. Connect the handler functions to the + corresponding signal in the ready() method of the MayanAppConfig subclass in + apps.py + +- links.py + + Defines the links to be used by the app. Import only from the navigation app + and the local permissions.py file. + +- literals.py + + Stores magic numbers, module choices (if static), settings defaults, and + constants. Should contain all capital case variables. Must not import from + any other module. + +- managers.py + + Standard Django app module that hold custom model managers. These act as + model class method to performs actions in a series of model instances or + utilitarian actions on external models instances. + +- models.py + + Standard Django app module that defines ORM persistent data schema. + +- permissions.py + + Defines the permissions to be used to validate user access by links and views. + Imports only from the permissions app. Link or view conditions such as + testing for is_staff or is_super_user flag are defined in this same module. + +- runtime.py + + Use this module when you need the same instance of a class for the entire app. + This module acts as a shared memory space for the other modules of the app or + other apps. + +- serializers.py + + Hold Django REST Framework serializers used by the api_views.py module. + +- settings.py + + Define the configuration settings instances that the app will use. + +- signals.py + + Any custom defined signal goes here. + +- statistics.py + + Provides functions that will compute any sort of statistical information on + the app’s data. + +- tasks.py + + Code to be execute in the background or as an out-of-process action. + +- tests/ directory + + Hold test modules. There should be one test_*.py module for each aspect being + tested, examples: test_api.py, test_views.py, test_parsers.py, test_permissions.py + Any shared constant data used by the tests should be added to tests/literals.py + +- utils.py + + Holds utilitarian code that doesn't fit on any other app module or that is + used by several modules in the app. Anything used internally by the app that + is not a class or a literal (should be as little as possible) + +- widgets.py + + HTML widgets go here. This should be the only place with presentation + directives in the app (aside the templates). + + +Views +===== + +The module common.generics provides custom generic class based views to be used. +The basic views used to create, edit, view and delete objects in **Mayan EDMS** +are: SingleObjectCreateView, SingleObjectDetailView, SingleObjectEditView, +and SingleObjectListView + +These views handle aspects relating to view permissions, object permissions, +post action redirection and template context generation. diff --git a/docs/topics/checkouts.rst b/docs/topics/checkouts.rst new file mode 100644 index 0000000000..360a09a4fd --- /dev/null +++ b/docs/topics/checkouts.rst @@ -0,0 +1,14 @@ +========= +Checkouts +========= + +Checkouts are a way to block certain accesses or actions of a document for a +period of time. + +An user can choose to checkout a document to work on an update and block new +versions of that document to be uploaded by other users. Document are checked +out for a certain amount of time and if not manually checked in by the original +user, will be checked in automatically by the system. + +To be able to check in documents that were checked out by other users, the +permission 'Forcefully check in documents' is required. diff --git a/docs/topics/contact.rst b/docs/topics/contact.rst index 79c277d06d..ee27f3057d 100644 --- a/docs/topics/contact.rst +++ b/docs/topics/contact.rst @@ -12,11 +12,12 @@ Mailing list ------------ Search for information in the `archives of the mayan-edms mailing list`_, or -`post a question`_. If you prefer news servers, use the gateway provided by Gmane_. +`post a question`_. If you prefer news servers, use the gateway provided by +Gmane_. **Mayan EDMS** community developers do their best to reply to basic questions. -Be sure to check the list archives as it may already containt the answers to your -questions. +Be sure to check the list archives as it may already containt the answers to +your questions. Twitter ------- @@ -34,5 +35,5 @@ Report bugs with **Mayan EDMS** or search existing ones using Github's `ticket t .. _archives of the mayan-edms mailing list: http://groups.google.com/group/mayan-edms/ .. _post a question: http://groups.google.com/group/mayan-edms -.. _ticket tracker: https://github.com/mayan-edms/mayan-edms/issues +.. _ticket tracker: https://gitlab.com/mayan-edms/mayan-edms/issues .. _Gmane: http://news.gmane.org/gmane.comp.python.django.mayan-edms diff --git a/docs/topics/contributors.rst b/docs/topics/contributors.rst index 4dccce5123..e9baed1e35 100644 --- a/docs/topics/contributors.rst +++ b/docs/topics/contributors.rst @@ -8,7 +8,8 @@ Contributors How to contribute? ------------------ -You can help further the development of **Mayan EDMS** by testing, reporting bugs, submitting documentation or code patches. +You can help further the development of **Mayan EDMS** by testing, reporting +bugs, submitting documentation or code patches. Lead developer -------------- @@ -20,8 +21,10 @@ Contributors (in alphabetical order) * Bertrand Bordage (https://github.com/BertrandBordage) * Brian E (brian@realize.org) * David Herring (https://github.com/abadger1406) +* Emlyn Clay (https://github.com/EmlynC) * Jens Kadenbach (https://github.com/audax) * Kolmar Kafran +* Helga Carrero * IHLeanne (https://github.com/IHLeanne) * Iliya Georgiev (ikgeorgiev@gmail.com) * Lars Kruse (devel@sumpfralle.de) diff --git a/docs/topics/deploying.rst b/docs/topics/deploying.rst new file mode 100644 index 0000000000..3745741511 --- /dev/null +++ b/docs/topics/deploying.rst @@ -0,0 +1,191 @@ +========= +Deploying +========= + +OS "bare metal" +=============== + +Like other Django based projects **Mayan EDMS** can be deployed in a wide variety +of ways. The method provided below is only a bare minimum example. +These instructions are independent of the instructions mentioned in the +:doc:`installation` chapter but assume you have already made a test install to +test the compatibility of your operating system. These instruction are for +Ubuntu 15.04. + +Switch to superuser:: + + sudo -i + +Install all system dependencies:: + + apt-get install nginx supervisor redis-server postgresql \ + libpq-dev libjpeg-dev libmagic1 libpng-dev libreoffice \ + libtiff-dev gcc ghostscript gpgv python-dev python-virtualenv \ + tesseract-ocr unpaper poppler-utils -y + +Change the directory to where the project will be deployed:: + + cd /usr/share + +Create the Python virtual environment for the installation:: + + virtualenv mayan-edms + +Activate virtual env:: + + source mayan-edms/bin/activate + +Install Mayan EDMS:: + + pip install mayan-edms + +Install the Python client for PostgreSQL, Redis, and uWSGI:: + + pip install psycopg2 redis uwsgi + +Create the database for installation:: + + sudo -u postgres createuser -P mayan (provide password) + sudo -u postgres createdb -O mayan mayan + +Create the directories for the logs:: + + mkdir /var/log/mayan + +Change the current directory to be the one of the installation:: + + cd mayan-edms + +Make a convenience symlink:: + + ln -s lib/python2.7/site-packages/mayan . + +Create an initial settings file:: + + mayan-edms.py createsettings + +Update the ``mayan/settings/local.py`` file:: + + DATABASES = { + 'default': { + 'ENGINE': 'django.db.backends.postgresql_psycopg2', + 'NAME': 'mayan', + 'USER': 'mayan', + 'PASSWORD': '', + 'HOST': 'localhost', + 'PORT': '5432', + } + } + + BROKER_URL = 'redis://127.0.0.1:6379/0' + CELERY_RESULT_BACKEND = 'redis://127.0.0.1:6379/0' + +Migrate the database or initialize the project:: + + mayan-edms.py initialsetup + +Disable the default NGINX site:: + + rm /etc/nginx/sites-enabled/default + +Create the NGINX site file for Mayan EDMS, ``/etc/nginx/site-available/mayan``:: + + server { + listen 80; + server_name localhost; + + location / { + include uwsgi_params; + uwsgi_pass unix:/usr/share/mayan-edms/uwsgi.sock; + + client_max_body_size 30M; # Increse if your plan to upload bigger documents + proxy_read_timeout 30s; # Increase if your document uploads take more than 30 seconds + } + + location /static { + alias /usr/share/mayan-edms/mayan/media/static; + expires 1h; + } + + location /favicon.ico { + alias /usr/share/mayan-edms/mayan/media/static/appearance/images/favicon.ico; + expires 1h; + } + } + +Enable the NGINX site for Mayan EDMS:: + + ln -s /etc/nginx/sites-available/mayan /etc/nginx/sites-enabled/ + +Create the supervisor file for the uWSGI process, ``/etc/supervisor/conf.d/mayan-uwsgi.conf``:: + + [program:mayan-uwsgi] + command = /usr/share/mayan-edms/bin/uwsgi --ini /usr/share/mayan-edms/uwsgi.ini + user = root + autostart = true + autorestart = true + redirect_stderr = true + +Create the supervisor file for the Celery worker, ``/etc/supervisor/conf.d/mayan-celery.conf``:: + + [program:mayan-worker] + command = /usr/share/mayan-edms/bin/python /usr/share/mayan-edms/bin/mayan-edms.py celery --settings=mayan.settings.production worker -Ofair -l ERROR + directory = /usr/share/mayan-edms + user = www-data + stdout_logfile = /var/log/mayan/worker-stdout.log + stderr_logfile = /var/log/mayan/worker-stderr.log + autostart = true + autorestart = true + startsecs = 10 + stopwaitsecs = 10 + killasgroup = true + priority = 998 + + [program:mayan-beat] + command = /usr/share/mayan-edms/bin/python /usr/share/mayan-edms/bin/mayan-edms.py celery --settings=mayan.settings.production beat -l ERROR + directory = /usr/share/mayan-edms + user = www-data + numprocs = 1 + stdout_logfile = /var/log/mayan/beat-stdout.log + stderr_logfile = /var/log/mayan/beat-stderr.log + autostart = true + autorestart = true + startsecs = 10 + stopwaitsecs = 1 + killasgroup = true + priority = 998 + +Collect the static files:: + + mayan-edms.py collectstatic --noinput + +Make the installation directory readable and writable by the webserver user:: + + chown www-data:www-data /usr/share/mayan-edms -R + +Restart the services:: + + /etc/init.d/nginx restart + /etc/init.d/supervisor restart + +Docker +====== + +Deploy the Mayan EDMS Docker image:: + + docker run --name postgres -e POSTGRES_DB=mayan -e POSTGRES_USER=mayan -e POSTGRES_PASSWORD=mysecretpassword -v /var/lib/postgresql/data -d postgres + docker run --name redis -d redis + docker run --name mayan-edms -p 80:80 --link postgres:postgres --link redis:redis -e POSTGRES_DB=mayan -e POSTGRES_USER=mayan -e POSTGRES_PASSWORD=mysecretpassword -v /usr/local/lib/python2.7/dist-packages/mayan/media -d mayanedms/monolithic + +After the **Mayan EDMS** container finishes initializing (about 5 minutes), it will +be available by browsing to http://127.0.0.1 + +Docker Compose +============== + +Launch the entire stack using:: + + docker-compose -f docker-compose.yaml up -d + +After the **Mayan EDMS** container finishes initializing (about 5 minutes), it will +be available by browsing to http://127.0.0.1 diff --git a/docs/topics/development.rst b/docs/topics/development.rst index 3e4213db71..977a4b2358 100644 --- a/docs/topics/development.rst +++ b/docs/topics/development.rst @@ -6,31 +6,41 @@ Development **Mayan EDMS** is under active development, and contributions are welcome. If you have a feature request, suggestion or bug report, please open a new -issue on the `GitHub issue tracker`_. To submit patches, please send a pull -request on GitHub_. Make sure to add yourself to the :ref:`contributors` file. +issue on the `GitLab issue tracker`_. To submit patches, please send a pull +request on GitLab_. Make sure to add yourself to the :ref:`contributors` file. -.. _GitHub: https://github.com/mayan-edms/mayan-edms/ -.. _`GitHub issue tracker`: https://github.com/mayan-edms/mayan-edms/issues +.. _GitLab: https://gitlab.com/mayan-edms/mayan-edms/ +.. _`GitLab issue tracker`: https://gitlab.com/mayan-edms/mayan-edms/issues Project philosophies -------------------- -How to think about **Mayan EDMS** when doing changes or adding new features, why things are the way they are in **Mayan EDMS**. +How to think about **Mayan EDMS** when doing changes or adding new features, +why things are the way they are in **Mayan EDMS**. -- Functionality must be as market/sector independent as possible, code for the 95% of use cases. -- Each user must be able to configure and customize it to their needs after install. -- Abstract as much as possible, each app must be an expert in just one thing, for other things they should use the API/classes/functions of other apps. -- Assume as little as possible about anything outside the project (hardware, OS, storage). -- Provide Python based abstraction so that a default install runs with a single step. +- Functionality must be as market/sector independent as possible, code for the + 95% of use cases. +- Each user must be able to configure and customize it to their needs after + install. +- Abstract as much as possible, each app must be an expert in just one thing, + for other things they should use the API/classes/functions of other apps. +- Assume as little as possible about anything outside the project + (hardware, OS, storage). +- Provide Python based abstraction so that a default install runs with a single + step. - No hard dependencies on binaries unless there is no other choice. -- Provide “drivers” or switchable backends to allow users to fine tune the installation. -- Call to binaries only when there is no other choice or the Python choices are not viable/mature/efficient. -- Each app is as independent and self contained as possible. Exceptions, the basic requirements: navigation, permissions, common, main. -- If an app is meant to be used by more than one other app it should be as generic as possible in regard to the project and another app will bridge the functionality. +- Provide “drivers” or switchable backends to allow users to fine tune the + installation. +- Call to binaries only when there is no other choice or the Python choices are + not viable/mature/efficient. +- Each app is as independent and self contained as possible. Exceptions, the + basic requirements: navigation, permissions, common, main. +- If an app is meant to be used by more than one other app it should be as + generic as possible in regard to the project and another app will bridge the functionality. - - Example: the acls app is app agnostic, document_acls connects the acls app with the documents app. - - Example: since indexing (document_indexing) only applies to documents, the app is specialized and dependant on the documents app. + - Example: since indexing (document_indexing) only applies to documents, the + app is specialized and depends on the documents app. Coding conventions @@ -93,7 +103,9 @@ Example: ) from .models import Index, IndexInstanceNode, DocumentRenameCount -All local app module imports are in relative form, local app module name is to be referenced as little as possible, unless required by a specific feature, trick, restriction, ie: Runtime modification of the module's attributes. +All local app module imports are in relative form, local app module name is to +be referenced as little as possible, unless required by a specific feature, +trick, restriction, ie: Runtime modification of the module's attributes. Incorrect: @@ -113,12 +125,18 @@ Correct: Dependencies ~~~~~~~~~~~~ -**Mayan EDMS** apps follow a hierarchical model of dependency. Apps import from their parents or siblings, never from their children. Think plugins. A parent app must never assume anything about a possible existing child app. The documents app and the Document model are the basic entities they must never import anything else. The common and main apps are the base apps. +**Mayan EDMS** apps follow a hierarchical model of dependency. Apps import from +their parents or siblings, never from their children. Think plugins. A parent +app must never assume anything about a possible existing child app. The +documents app and the Document model are the basic entities they must never +import anything else. The common and main apps are the base apps. Variables ~~~~~~~~~ -Naming of variables should follow a Major to Minor convention, usually including the purpose of the variable as the first piece of the name, using underscores as spaces. camelCase is not used in **Mayan EDMS**. +Naming of variables should follow a Major to Minor convention, usually +including the purpose of the variable as the first piece of the name, using +underscores as spaces. camelCase is not used in **Mayan EDMS**. Examples: @@ -153,125 +171,46 @@ Classes: Strings ~~~~~~~ -Quotation character used in **Mayan EDMS** for strings is the single quote. Double quote is used for multiline comments or HTML markup. +Quotation character used in **Mayan EDMS** for strings is the single quote. +Double quote is used for multiple line comments or HTML markup. +Migrations +~~~~~~~~~~ +Migrations should do only one thing (eg: either create a table, move data to a +new table or remove an old table) to aid retrying on failure. General ~~~~~~~ - -Code should appear in their modules in alphabetic order or in their order of importance if it makes more sense for the specific application. -This makes visual scanning easier on modules with a large number of imports, views or classes. -Class methods that return a value should be prepended with a ``get_`` to differentiate from an object’s properties. -When a variable refers to a file it should be named as follows: +Code should appear in their modules in alphabetic order or in their order of +importance if it makes more sense for the specific application. This makes +visual scanning easier on modules with a large number of imports, views or +classes. Class methods that return a value should be pretended with a +``get_`` to differentiate from an object’s properties. When a variable refers +to a file it should be named as follows: - filename: The file’s name and extension only. - filepath: The entire path to the file including the filename. - path: A path to a directory. Flash messages should end with a period as applicable for the language. -Only exception is when the tail of the message contains an exceptions message as passed directly from the exception object. - -App anatomy -~~~~~~~~~~~ - -- __init__.py - - - Generic initialization code (should be empty if possible) - -- api.py - - - File to hold functions that are meant to be used by external apps. - - Interfaces meant to be used by other apps that are not models or classes. - -- classes.py - - - Hold python classes to be used internally or externally. - - Any class defined by the app that is not a model. - -- diagnostics.py - - - Define functions that will return the state of the data of an app. - - Does not fixes the problems only finds them. - -- events.py - - - Define history type events - -- exceptions.py - - - Exceptions defined by the app - -- icons.py - - - Defines the icons to be used by the links and views of the app. - - Imports from the icons app only. - -- links.py - - - Defines the links to be used by the app. - - Import only from the navigation app and the local icons.py file. - -- literals.py - - - Stores magic numbers, module choices (if static), settings defaults, and constants. - - Should contain all capital case variables. - - Must not import from any other module. - -- maintenance.py - - - Hold functions that the user may run periodically to fix errors in the app’s data. - -- permissions.py - - - Defines the permissions to be used by links and views to validate access. - - Imports only from permissions app. - - Link or view conditions such as testing for staff or super admin status are defined in the same file. - -- statistics.py - - - Provides functions that will computer any sort of statistical information on the app’s data. - -- tasks.py - - - Code to be execute as in the background or a as an process-of-process action. - -- utils.py - - - Hold utilitarian code that doesn't fit on any other app file or that is used by several files in the app. - - Anything used internally by the app that is not a class or a literal (should be as little as possible) - -Views behavior -~~~~~~~~~~~~~~ - -- Delete views: - - - Redirect to object list view if one object is deleted. - - Redirect to previous view if many are deleted. - - Previous view equals: - - - previous variable in POST or - - previous variable in GET or - - request.META.HTTP_REFERER or - - object list view or - - 'home' view - - fallback to ‘/’ - - if previous equal same view then previous should equal object list view or ‘/’ - +Only exception is when the tail of the message contains an exceptions message +as passed directly from the exception object. Source Control -------------- **Mayan EDMS** source is controlled with Git_. -The project is publicly accessible, hosted and can be cloned from **GitHub** using:: +The project is publicly accessible, hosted and can be cloned from **GitLab** using:: - $ git clone git://github.com/mayan-edms/mayan-edms.git + git clone https://gitlab.com/mayan-edms/mayan-edms.git Git branch structure -------------------- -**Mayan EDMS** follows the model layout by Vincent Driessen in his `Successful Git Branching Model`_ blog post. Git-flow_ is a great tool for managing the repository in this way. +**Mayan EDMS** follows a simplified model layout based on Vincent Driessen's +`Successful Git Branching Model`_ blog post. ``develop`` The "next release" branch, likely unstable. @@ -283,46 +222,46 @@ Git branch structure Released versions. -Each release is tagged and available for download on the Downloads_ section of the **Mayan EDMS** repository on GitHub_. +Each release is tagged separately. -When submitting patches, please place your code in its own ``feature/`` branch prior to opening a pull request on GitHub_. +When submitting patches, please place your code in its own ``feature/`` branch +prior to opening a Merge Request on GitLab_. .. _Git: http://git-scm.org .. _`Successful Git Branching Model`: http://nvie.com/posts/a-successful-git-branching-model/ -.. _git-flow: https://github.com/nvie/gitflow -.. _Downloads: https://github.com/mayan-edms/mayan-edms/archives/master Steps to deploy a development version ------------------------------------- .. code-block:: bash - $ git clone https://github.com/mayan-edms/mayan-edms.git - $ cd mayan-edms - $ git checkout development - $ virtualenv venv - $ source venv/bin/activate - $ pip install -r requirements.txt - $ ./manage.py initialsetup - $ ./manage.py runserver + git clone https://gitlab.com/mayan-edms/mayan-edms.git + cd mayan-edms + git checkout development + virtualenv venv + source venv/bin/activate + pip install -r requirements.txt + ./manage.py initialsetup + ./manage.py runserver Setting up a development version using Vagrant ---------------------------------------------- -Make sure you have Vagrant and a provider properly installed as per https://docs.vagrantup.com/v2/installation/index.html +Make sure you have Vagrant and a provider properly installed as per +https://docs.vagrantup.com/v2/installation/index.html Start and provision a machine using: .. code-block:: bash - $ vagrant up + vagrant up To launch a standalone development server ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .. code-block:: bash - $ vagrant ssh + vagrant ssh vagrant@vagrant-ubuntu-trusty-32:~$ cd ~/mayan-edms/ vagrant@vagrant-ubuntu-trusty-32:~$ source venv/bin/activate vagrant@vagrant-ubuntu-trusty-32:~$ ./manage.py runserver 0.0.0.0:8000 @@ -332,7 +271,7 @@ To launch a development server with a celery worker and Redis as broker .. code-block:: bash - $ vagrant ssh + vagrant ssh vagrant@vagrant-ubuntu-trusty-32:~$ cd ~/mayan-edms/ vagrant@vagrant-ubuntu-trusty-32:~$ source venv/bin/activate vagrant@vagrant-ubuntu-trusty-32:~$ ./manage.py runserver 0.0.0.0:8000 --settings=mayan.settings.celery_redis @@ -341,7 +280,7 @@ Then on a separate console launch a celery worker from the same provisioned Vagr .. code-block:: bash - $ vagrant ssh + vagrant ssh vagrant@vagrant-ubuntu-trusty-32:~$ cd ~/mayan-edms/ vagrant@vagrant-ubuntu-trusty-32:~$ source venv/bin/activate vagrant@vagrant-ubuntu-trusty-32:~$ DJANGO_SETTINGS_MODULE='mayan.settings.celery_redis' celery -A mayan worker -l DEBUG -Q checkouts,mailing,uploads,converter,ocr,tools,indexing,metadata -Ofair -B @@ -349,22 +288,22 @@ Then on a separate console launch a celery worker from the same provisioned Vagr Contributing changes -------------------- -Once your have created and committed some new code or feature, submit a Pull Request. -Be sure to merge with mayan-edms/development before doing a pull request so that patches -apply as cleanly as possible. If there are no conflicts, Pull Requests can be merged -directly from Github otherwise a manual command line merge has to be done and -your patches might take longer to get merged. - -For more information on how to create Pull Request read: https://help.github.com/articles/using-pull-requests -or the quick version: https://help.github.com/articles/creating-a-pull-request +Once your have created and committed some new code or feature, submit a Pull +Request. Be sure to merge with the development branch before doing a Pull +Request so that patches apply as cleanly as possible. If there are no conflicts, +Merge Requests can be merged directly from the website UI otherwise a manual +command line merge has to be done and your patches might take longer to get +merged. Debugging --------- **Mayan EDMS** makes extensive use of Django's new `logging capabilities`_. -To enable debug logging for the ``documents`` app for example add the following -lines to your ``settings_local.py`` file:: +By default debug logging for all apps is turned on. If you wish to customize +how logging is managed turn off automatic logging by setting +`COMMON_AUTO_LOGGING` to ``False`` and add the following lines to your +``settings/local.py`` file:: LOGGING = { 'version': 1, @@ -418,76 +357,69 @@ Likewise, to see the debug output of the ``tags`` app, just add the following in Documentation ------------- -**Mayan EDMS**'s documentation is written in `reStructured Text`_ format. +The documentation is written in `reStructured Text`_ format, processed with +Sphinx_, and resides in the ``docs`` directory. In order to build it, you will +first need to install the documentation editing dependencies with:: -The documentation lives in the ``docs`` directory. In order to build it, you will first need to install Sphinx_. :: + pip install -r requirements/documentation.txt - $ pip install sphinx +Then, to build an HTML version of the documentation, run the following command +from the **docs** directory:: + make livehtml -Then, to build an HTML version of the documentation, simply run the following from the **docs** directory:: +The generated documentation can be viewed by browsing to http://127.0.0.1:8000 +or by browsing to the ``docs/_build/html`` directory. - $ make html - -Your ``docs/_build/html`` directory will then contain an HTML version of the documentation, ready for publication on most web servers. - -You can also generate the documentation in formats other than HTML. +You can also generate the documentation in formats other than HTML. Consult the +Sphinx_ documentation for more details. .. _`reStructured Text`: http://docutils.sourceforge.net/rst.html .. _Sphinx: http://sphinx.pocoo.org -Translations ------------- - -Translations are handled online via the **Transifex** website: https://www.transifex.com/projects/p/mayan-edms/. -To create a translation team for a new language or contribute to an already -existing language translation, create a **Transifex** account and contact -the team coordinator of the respective language in which you are interested. - - Installable package ------------------- Source file package ~~~~~~~~~~~~~~~~~~~ -This is the sequence of step I use to produce an installable package: +This is the sequence of step used to produce an installable package: 1. Make sure there are no lingering packages from previous attempts:: - $ rm dist -R + rm dist -R -2. Generate the packaged version (will produce dist/mayan-edms-1.1.1.tar.gz):: +2. Generate the packaged version (will produce dist/mayan-edms-x.y.z.tar.gz):: - $ python setup.py sdist + python setup.py sdist 3. Do a test install:: - $ cd /tmp - $ virtualenv venv - $ source venv/bin/activate - $ pip install /dist/mayan-edms-1.1.1.tar.gz - $ mayan-edms.py initialsetup - $ mayan-edms.py runserver + cd /tmp + virtualenv venv + source venv/bin/activate + pip install /dist/mayan-edms-x.y.z.tar.gz + mayan-edms.py initialsetup + mayan-edms.py runserver Wheel package ~~~~~~~~~~~~~ -1. Install wheel:: +1. Install the development requirements:: - $ pip install wheel + $ pip install -r requirements/development.txt 2. Create wheel package using the source file package (Until issue #99 of wheel is fixed: https://bitbucket.org/pypa/wheel/issue/99/cannot-exclude-directory):: - $ pip wheel --no-index --no-deps --wheel-dir dist dist/mayan-edms-1.1.1.tar.gz + $ pip wheel --no-index --no-deps --wheel-dir dist dist/mayan-edms-x.y.z.tar.gz 3. Do a test install:: $ cd /tmp $ virtualenv venv $ source venv/bin/activate - $ pip install /dist/mayan_edms-1.1.1-py2-none-any.whl + $ pip install /dist/mayan_edms-x.y.z-py2-none-any.whl $ mayan-edms.py initialsetup $ mayan-edms.py runserver diff --git a/docs/topics/document_types.rst b/docs/topics/document_types.rst new file mode 100644 index 0000000000..694b343153 --- /dev/null +++ b/docs/topics/document_types.rst @@ -0,0 +1,17 @@ +============== +Document types +============== + +The basic unit of data in **Mayan EDMS** is the ``document type``. A document +type can be interpreted also as a document category, a document class, or a +document template. Document types need to be created before documents can be +uploaded. It is not possible to upload documents without assigning them a +document type. Examples of document type: **invoices**, **blueprints**, +**receipts**. + +Settings and attributes are applied to document types and documents will +inherit those settings and attributes based on the document type they were +assigned when uploaded into **Mayan EDMS**. A document can only be of one +type at a given moment, but if needed, the type of a document can be changed. +Upon changing its type, the document will lose its previous settings and +attributes, and will inherit the settings and attributes of its new type. diff --git a/docs/topics/features.rst b/docs/topics/features.rst index fd459ce21f..1e79b2c88f 100644 --- a/docs/topics/features.rst +++ b/docs/topics/features.rst @@ -4,7 +4,8 @@ Features * :doc:`Document versioning <../topics/versioning>`. - * Store many versions of the same document, download or revert to a previous version. + * Store many versions of the same document, download or revert to a previous + version. * :doc:`Electronic signature verification <../topics/signatures>`. @@ -18,39 +19,48 @@ Features * Office document format support. - * **Mayan EDMS** can detect the presence of Libre Office and use it to support word processing files, spreadsheets and presentations. + * **Mayan EDMS** can detect the presence of Libre Office and use it to support + word processing files, spreadsheets and presentations. * User defined metadata fields. - * Several metadata fields can be matched to a document type as per technical, legal or structural requirements such as the `Dublin core`_. + * Several metadata fields can be matched to a document type as per technical, + legal or structural requirements such as the `Dublin core`_. * Dynamic default values for metadata. - * Metadata fields can have an initial value, which can be static or determined by an user provided Python code snippet. + * Metadata fields can have an initial value, which can be static or determined + by an user provided template code snippet. * Documents can be uploaded from different sources. - * Local file or server side file uploads, multifunctional copier, or even via email. + * Local file or server side file uploads, multifunctional copier, or even via + email. * Batch upload many documents with the same metadata. - * Clone a document's metadata for speedier uploads and eliminate repetitive data entry. + * Clone a document's metadata for speedier uploads and eliminate repetitive + data entry. -* Previews for a great deal of image formats. +* Previews for many file formats. - * **Mayan EDMS** provides different file conversion backends with different levels of functionality and requirements to adapt to different deployment environments. + * **Mayan EDMS** provides image preview generation for many popular file + formats. * Full text searching. - * Documents can be searched by their text content, their metadata or any other file attribute such as name, extension, etc. + * Documents can be searched by their text content, their metadata or any other + file attribute such as name, extension, etc. * Configurable document grouping. - * Automatic linking of documents based on metadata values or document properties. + * Automatic linking of documents based on metadata values or document + properties. * :doc:`Roles support <../topics/permissions>`. - * It is possible to create an unlimited amount of different roles not being restricted to the traditional admin, operator, guest paradigm. + * It is possible to create an unlimited amount of different roles not being + restricted to the traditional admin, operator, guest paradigm. * :doc:`Fine grained permissions system <../topics/permissions>`. @@ -62,20 +72,25 @@ Features * Automatic OCR processing. - * The task of transcribing text from documents via OCR can be distributed among several physical or virtual computers to decrease load and increase availability. + * The task of transcribing text from documents via OCR can be distributed + among several physical or virtual computers to decrease load and increase + availability. * Multilingual user interface. - * **Mayan EDMS** being written using the Django_ framework, can be translated to practically any language spoken in the world. - For a list of translated languages have a look at Transifex_. + * **Mayan EDMS** being written using the Django_ framework, can be translated + to practically any language spoken in the world. For a list of translated + languages have a look at the Transifex_ project location. * Multilingual OCR support. - * Current language of the document is passed to the corresponding OCR engine to increase the rate of data vs. recognition errors. + * The current language of the document is passed to the corresponding OCR + engine to increase the text recognition rate. * :doc:`Plugable storage backends <../topics/file_storage>`. - * Very easy to use 3rd party plugins such as the ones available for Amazon EC2. + * It is very easy to use 3rd party plugins such as the ones available for + Amazon EC2. * Color coded tagging. @@ -83,7 +98,8 @@ Features * Workflows. - * Keep track of the state a document, along with the log of the previous state changes. + * Keep track of the state of documents, along with the log of the previous + state changes. .. _`Dublin core`: http://dublincore.org/metadata-basics/ diff --git a/docs/topics/file_storage.rst b/docs/topics/file_storage.rst index 514aef7141..955a79a66e 100644 --- a/docs/topics/file_storage.rst +++ b/docs/topics/file_storage.rst @@ -3,15 +3,26 @@ File storage ============ The files are stored and placed under **Mayan EDMS** "control" to avoid -filename clashes (each file gets renamed to its UUID and without extension) -and stored in a simple flat arrangement in a directory. This doesn't -stop access to the files but it is not recommended because moving, -renaming or updating the files directly would throw the database out +filename clashes each file gets renamed to its ``UUID`` (Universally Unique ID), +without extension, and stored in a simple flat arrangement in a directory. + +.. blockdiag:: + + blockdiag { + file [ label = 'mayan_1-1.pdf', width=120]; + document [ label = 'mayan/media/document_storage/ab6c1cfe-8a8f-4a30-96c9-f54f606b9248', width=450]; + file -> document [label = "upload"]; + + file -> document; + } + +This doesn't stop access to the files but renaming, moving or updating +directly them is not recommended because it would throw the database out of sync. -**Mayan EDMS** components are as decoupled from each other as possible, -storage in this case is very decoupled and its behavior is controlled -not by the project but by the Storage progamming class. Why this design? -All the other parts don't make any assumptions about the actual file -storage, files can be saved locally, over the network or even across the -internet and everything will still operate exactly the same. +Because **Mayan EDMS** components are as decoupled from each other as possible, +storage in this case is decoupled and its behavior is controlled +not by the project but by the ``Storage`` module class. All the other +modules don't make any assumptions about how the actual document files are +stored. This way files can be saved locally, over the network or even across +the Internet and everything will still operate exactly the same. diff --git a/docs/topics/getting_started.rst b/docs/topics/getting_started.rst deleted file mode 100644 index 5f59ffc136..0000000000 --- a/docs/topics/getting_started.rst +++ /dev/null @@ -1,85 +0,0 @@ -=============== -Getting started -=============== - -Before starting to use **Mayan EDMS**, two things need to be configured: - -- At least one document source -- At least one document type - -Document sources ----------------- - -Document sources define from where documents will be uploaded or gathered. -To add a document source go to the ``Setup`` section, then to the ``Sources`` section. -To obtain the fastest working setup, create a new source of type ``Web form``. -``Web forms`` are just HTML forms with a ``Browse`` button that will open the file upload -dialog when clicked. Name it something simple like ``Local documents`` and select whether or not -compressed files uploaded from this source will be automatically decompressed and -their content treated as individual documents. - -Document types --------------- - -Examples of document types are: ``Legal documents``, ``Internal documents``, ``Medical records``, ``Designing specifications``, ``Permits``. -A document type represent a class of documents which share some common property. -A good indicator that can help you determine your document types is what kind of -information or ``metadata`` is attached to those documents. - -Once a document source and a document type have been created you have all the minimal -elements required to start uploading documents. - -Defining metadata ------------------ - -With your document types defined it should be much easier now to define the required -``metadata`` for each of these document types. When creating ``metadata`` types, -the first thing that will be needed is the internal name with which this metadata -type will be referenced in other areas of **Mayan EDMS**. The internal name must not -contain spaces or uppercase characters. After the internal name, enter the name that -will be visible to you and your users, which usually will be similar or the same as the -internal name, but with proper capitalization and spacing. The ``metadata types`` -can have default values to speed up data entry. They can be single number or a -words enclosed in quotes, ie:: - - "Building A" - -or:: - - "Storage room 1" - -Default values can also be defined as ``Python`` statements or functions such as:: - - current_date() - -If you want to restrict or standardize the values for a metadata type, use the ``Lookup`` field to -define the list of options that are allowed. Define the lookup list using a ``Python`` -list of quoted values, for example:: - - ["2000", "2001", "2002", "2003", "2004"]. - -Instead of a free entry text field, your users will get a dropdown list of years, -this will ensure an unified data entry formatting. You can also use a -``Python`` expression to generate the lookup list. - -Metadata types can be assigned in two ways to a document type, by making it an -optional or a required metadata type for a specific document. This method -allows metadata very important for some types of documents (like Invoice -numbers to Invoices) to be required for an Invoice to be able to be uploaded. -Accordingly optional metadata types will be presented, but users are not required to -enter a value to be able to upload a document. - -Indexes -------- - -After defining all your metadata types you can also define indexes to -let **Mayan EDMS** automatically categorize your documents based on their metadata values. -To create an index to organize invoices by a year metadata field do the following: - -- Create a year metadata type with the name ``year`` and the label ``Year``. -- Create an invoice document type and assign it the ``year`` metadata type as a required metadata type. -- Create a new index, give it the name ``invoices_per_year`` and the label ``Invoices per year``. -- Edit the index's ``Tree template``, add a ``New child node``, and enter ``document.metadata_value_of.year`` as the ``Indexing expression``, check the ``Link documents`` checkbox and save. -- Link this new index to the invoice document type using the ``Document types`` button of the index. - -Now every time a new invoice upload or an existing invoice's ``year`` metadata value is changed, a new folder will be created in the ``Invoices`` index with the corresponding invoices for that year. diff --git a/docs/topics/index.rst b/docs/topics/index.rst index 8ec133f1e9..9cf7bcf04d 100644 --- a/docs/topics/index.rst +++ b/docs/topics/index.rst @@ -1,16 +1,22 @@ Concepts ======== -Introductions to all the key parts of Mayan EDMS you'll need to know: +Introductions to all the key parts of **Mayan EDMS** you'll need to know: .. toctree:: :maxdepth: 1 - file_storage + document_types + metadata permissions + sources + acls transformations + checkouts versioning signatures indexes smart_links tags + file_storage + screenshots diff --git a/docs/topics/indexes.rst b/docs/topics/indexes.rst index 8690190722..665af61a05 100644 --- a/docs/topics/indexes.rst +++ b/docs/topics/indexes.rst @@ -2,21 +2,92 @@ Indexes ======= -Indexes are an automatic method to hierarchically organize documents in relation to their properties. +Indexes are an automatic method to hierarchically organize documents in +relation to their properties (:doc:`metadata`, label, MIME type, etc). To use +indexes you need to first create an index template. Once created, associate +the index to one or more :doc:`document_types`. -Index templates -=============== +Index are hierarchical models so a tree template needs to be specified for them. +This tree template will contain references to document metadata or properties +that will be replaced with the actual value for those metadata or properties. -Since multiple indexes can be defined, the first step is to create an empty index. -Administrators then define the tree template showing how the index will be structured. -Each branch can be a pseudo folder, which can hold other child 'folders' or -a document container which will have all the links to the documents that -matched the criteria of the document container. +Example: -Index instances -=============== +- Document type: ``Product sheet`` +- Metadata type: ``Product year``, associated as a required metadata for the document type ``Product sheet``. -The template is the skeleton from which an instance of the index is then -auto-populated with links to the documents depending on the rules of each -branch of the index evaluated against the metadata and properties of the documents. +- Index: ``Product sheets per year``, and associated to the document type ``Product sheet``. +- Index slug: ``product-sheets-per-year``. Slugs are internal unique identifiers that can be used by other **Mayan EDMS** modules to reference each index. +- Index tree template as follows: +.. blockdiag:: + + blockdiag { + index [ label = 'Product sheets per year', width=180 ]; + root [ label = 'Root (Has document links? No)', width=450]; + level_2 [ label = '{{ document.metadata_value_of.product_year }} (Has document links? Yes)', width=450]; + + group { + label = "Tree template"; + color = "#dddddd"; + style = dashed; + root; level_2; + } + + index -> root + root -> level_2 [folded]; + } + +Now every time a new ``Product sheet`` is uploaded a hierarchical unit with the value +of the metadata type ``Product year`` is created and a link to the uploaded ``Product sheet`` added to it. + +Example: + +Suppose three ``Product sheets`` are uploaded with the following values as their +``Product year`` metadata: 2001, 2002, 2001 respectively. The result index +that will be generate based on the tree template would be as follows: + +.. blockdiag:: + + blockdiag { + index [ label = 'Product sheets per year', width=180 ]; + year_1 [ label = '2001', width = 60 ]; + year_2 [ label = '2002', width = 60 ]; + document_1 [ label = 'Product A data sheet (2001)', width = 200 ]; + document_2 [ label = 'Product B data sheet (2002)', width = 200 ]; + document_3 [ label = 'Product C data sheet (2001)', width = 200 ]; + + group { + label = "Index content"; + color = "#dddddd"; + style = dashed; + year_1, year_2, document_1, document_2, document_3; + } + + index -> year_1; + index -> year_2; + year_1 -> document_1; + year_2 -> document_2; + year_1 -> document_3; + + } + +Mirroring +========= + +Indexes can be exported as `FUSE `_ +filesystems. Using the management command ``mountindex`` we could export the +previous example index as follows:: + + mkdir -p ~/indexes/products + mayan-edms.py mountindex product-sheets-per-year ~/indexes/products + +The ``~/indexes/products`` directory will now have a directory and files structure +identical to that of the index. Once indexes are mounted with this command, they +behave like any other filesystem directory and can even be further shared +via the network with network file system software like +`Samba `_ or +`NFS `_. + +Indexes and mirrored indexes are Read Only as they are generated as a result of +prior activities like document uploads, metadata changes. diff --git a/docs/topics/installation.rst b/docs/topics/installation.rst index da025e1f0e..94a6a86869 100644 --- a/docs/topics/installation.rst +++ b/docs/topics/installation.rst @@ -2,45 +2,33 @@ Installation ============ -**Mayan EDMS** should be deployed like any other Django_ project and preferably using virtualenv_. +**Mayan EDMS** should be deployed like any other Django_ project and +preferably using virtualenv_. -Being a Django_ and a Python_ project familiarity with these technologies is -required to understand why **Mayan EDMS** does some of the things it does the way -it does them. +Being a Django_ and a Python_ project, familiarity with these technologies is +recommended to better understand why **Mayan EDMS** does some of the things it +does. -Before installing **Mayan EDMS**, the binary requirements must be installed first. +Bellow are the step needed for a test install. + +Binary dependencies +=================== Ubuntu ------ -If using a Debian_ or Ubuntu_ based Linux distribution getting the executable requirements is as easy as:: +If using a Debian_ or Ubuntu_ based Linux distribution, get the executable +requirements using:: - $ sudo apt-get install libjpeg-dev libmagic1 libpng-dev libreoffice libtiff-dev gcc ghostscript gpgv python-dev python-virtualenv tesseract-ocr unpaper poppler-utils -y + sudo apt-get install libjpeg-dev libmagic1 libpng-dev libreoffice libtiff-dev gcc ghostscript gpgv python-dev python-virtualenv tesseract-ocr unpaper poppler-utils -y -Initialize a ``virtualenv`` to deploy the project: - -.. code-block:: bash - - $ virtualenv venv - $ source venv/bin/activate - $ pip install mayan-edms - -By default **Mayan EDMS** will create a single file SQLite_ database, which makes -it very easy to start using **Mayan EDMS**. Populate the database with the project's schema doing: - -.. code-block:: bash - - $ mayan-edms.py initialsetup - $ mayan-edms.py runserver - -Point your browser to http://127.0.0.1:8000. If everything was installed -correctly you should see the login screen and panel showing a randomly generated admin password. Mac OSX ------- -**Mayan EDMS** is dependant on a number of binary packages and the recommended way is -to use a package manager such as `MacPorts `_ or `Homebrew `. +**Mayan EDMS** is dependent on a number of binary packages and the recommended +way is to use a package manager such as `MacPorts `_ +or `Homebrew `_. Use MacPorts to install binary dependencies @@ -50,14 +38,9 @@ With MacPorts installed run the command: .. code-block:: bash - sudo port install python-dev gcc tesseract-ocr unpaper python-virtualenv ghostscript libjpeg-dev libpng-dev poppler-utils - -**Mayan EDMS** can use either Pillow, ImageMagick or GraphicsMagick as the backend to -convert images so in addition you can install GraphicsMagick ... - -.. code-block:: bash - - sudo port install graphicsmagick + sudo port install python-dev gcc tesseract-ocr unpaper \ + python-virtualenv ghostscript libjpeg-dev libpng-dev \ + poppler-utils Set the Binary paths ******************** @@ -68,19 +51,12 @@ to /usr/bin/ with ... .. code-block:: bash - sudo ln -s /opt/local/bin/tesseract /usr/bin/tesseract && \ - sudo ln -s /opt/local/bin/identify /usr/bin/identify && \ - sudo ln -s /opt/local/bin/gs /usr/bin/gs + sudo ln -s /opt/local/bin/tesseract /usr/bin/tesseract ... alternatively set the paths in the ``settings/locals.py`` .. code-block:: python - # document converters - CONVERTER_IM_CONVERT_PATH = '/opt/local/bin/convert' - IM_IDENTIFY_PATH = '/opt/local/bin/identify' - GRAPHICS_BACKEND = 'converter.backends.graphicsmagick.GraphicsMagick' - GM_PATH = '/opt/local/bin/gm' LIBREOFFICE_PATH = '/Applications/LibreOffice.app/Contents/MacOS/soffice' Or Use Homebrew @@ -90,7 +66,7 @@ With Homebrew installed run the command: .. code-block:: bash - brew install python gcc tesseract unpaper poppler libpng graphicsmagick postgresql + brew install python gcc tesseract unpaper poppler libpng postgresql Set the Binary paths ******************** @@ -102,57 +78,52 @@ to /usr/bin/ with ... .. code-block:: bash sudo ln -s /usr/local/bin/tesseract /usr/bin/tesseract && \ - sudo ln -s /usr/local/bin/identify /usr/bin/identify && \ sudo ln -s /usr/local/bin/unpaper /usr/bin/unpaper && \ sudo ln -s /usr/local/bin/pdftotext /usr/bin/pdftotext && \ - sudo ln -s /usr/local/bin/gs /usr/bin/gs && \ + sudo ln -s /usr/local/bin/gs /usr/bin/gs ... alternatively set the paths in the ``settings/locals.py`` .. code-block:: python - # document converters - CONVERTER_IM_CONVERT_PATH = '/usr/local/bin/convert' - IM_IDENTIFY_PATH = '/usr/local/bin/identify' - GRAPHICS_BACKEND = 'converter.backends.graphicsmagick.GraphicsMagick' - GM_PATH = '/usr/local/bin/gm' LIBREOFFICE_PATH = '/Applications/LibreOffice.app/Contents/MacOS/soffice' -Testing the install -------------------- +Actual project installation +=========================== -To create a custom settings file for **Mayan EDMS**, create a Python (.py) file -in the directory: venv/lib/python2.7/site-packages/mayan/settings/ with the following basic content:: +Initialize a ``virtualenv`` to deploy the project: - # venv/lib/python2.7/site-packages/mayan/settings/my_settings.py +.. code-block:: bash - from __future__ import unicode_literals + virtualenv venv + source venv/bin/activate + pip install mayan-edms - from .local import * +By default **Mayan EDMS** will create a single file SQLite_ database, which makes +it very easy to start using **Mayan EDMS**. Populate the database with the +project's schema doing: - +.. code-block:: bash -To test your settings launch **Mayan EDMS** using:: + mayan-edms.py initialsetup + mayan-edms.py runserver - $ mayan-edms.py runserver --settings=mayan.settings.my_settings +Point your browser to http://127.0.0.1:8000. If everything was installed +correctly you should see the login screen and panel showing a randomly generated +admin password. Note: Background tasks and scheduled tasks will not run when using the test server. + Production use --------------- +============== After making sure everything is running correctly, stop the `runserver` command. Deploy **Mayan EDMS** using the webserver of your preference. For more information on deployment instructions and examples, checkout Django's official documentation -on the topic https://docs.djangoproject.com/en/1.6/howto/deployment/ - - -Other database managers ------------------------ - -If you want to use a database manager other than SQLite_ install any -corresponding python database drivers and add the corresponding database settings -to your settings file (see above) as shown here: https://docs.djangoproject.com/en/1.6/ref/settings/#std:setting-DATABASES +on the topic https://docs.djangoproject.com/en/1.7/howto/deployment/ +For a simple production deployment setup follow the instructions in the +:doc:`deploying` chapter. .. _Debian: http://www.debian.org/ diff --git a/docs/topics/metadata.rst b/docs/topics/metadata.rst new file mode 100644 index 0000000000..69e26e3e4d --- /dev/null +++ b/docs/topics/metadata.rst @@ -0,0 +1,28 @@ +======== +Metadata +======== + +Metadata is the name of the attribute of a document. The concept of metadata is +divided in two: **metadata types** (size, color, distance) and **metadata values** for +those types. Metadata types are defined in the setup menu and associated with +document types. Then when a document is uploaded, a value for that metadata +can be entered. There are two kinds of metadata type to document type relations: +optional and required. When a metadata type is optional for a document type, +it can be left blank for a document being uploaded and the upload will still +be successful. On the other hand required metadata type must be given a value +or it will not be possible to upload the document at hand. + +Examples of metadata type: Invoice number, color, employee id. + +The data entry of metadata types can be set to allow any value to be provided +(the default) or a list of possible values can be entered in the ``Lookup`` +configuration option and users will be presented with a drop down list of options +instead of the default text entry box. + +If metadata types are setup to allow any value to be entered a ``validation`` +option can be chosen to block the entry of invalid data. Metadata types also +provide ``parsers`` which will not block the entry of data but are able to +interpret and modify the value provided by the user to a conform to a specific +format. An example of a provided parser is the date parser which will interpret +and correct dates provided by users regardless of the format in which they are +entered. diff --git a/docs/topics/permissions.rst b/docs/topics/permissions.rst index 869718f484..3cff8df004 100644 --- a/docs/topics/permissions.rst +++ b/docs/topics/permissions.rst @@ -2,46 +2,24 @@ Permissions =========== -**Mayan EDMS** provides finegrained control over which activities users can -perform. This control is divided into two levels of operation: +**Mayan EDMS** provides very fine control over which actions users can +perform. Action control works by allowing ``roles``, that are composed of +``groups`` of ``users`` to be granted a ``permission`` such that the holder of +that permission can exercise it throughout the entire system. -2 tier permissions assignement -============================== +.. blockdiag:: -This level of activity control works by allowing roles that are composed -of users or groups, to be granted a permission such that the holder of that -permission can exercise it throughout the entire collection of objects -(document, folders, tags, etc). This method could be thought out as a global -permission. + blockdiag { + user [ label = 'Users' ]; + group [ label = 'Groups' ]; + role [ label = 'Roles' ]; + permission [ label = 'Permissions' ]; -3 tier access control -===================== -When more control is desired over which objects actors -(user, groups and roles) can exercise an action, this method should be -used. Under this method, actors are granted a permission but only in relation -to a selected object. Example: Granting user -``Joe`` the ``Document view`` access control for document ``Payroll``, would -allow him to view this document only. + user -> group -> role <- permission; + } -The permission system enforces inheritance by first checking, if the user -has a global permission, is a member of a group or a role that has a global -permission and if not, then checks to see if that user, a group or role to -which he belongs, has been granted access to the specific object to which -he is desiring to perform a given action. - -Only when these checks fail the user is forbidden to perform the action and -a generic message is displayed to avoid providing any information -that could be used to sidetrack the permission system or obtain any kind of -information about the object to which the user was not allowed access. - -Default Access Control Lists (Default ACLs) -------------------------------------------- - -Default Access Control Lists allow assigment of an access control list to a -type of object (Document, Tags, Folders) before it is created. It is the default -permissions an object will have when it is created. With Default Access Control Lists -specific permissions can be granted to the creator of a document for example. - -Changes to the Default Access Control Lists (Default ACLs) only affect objects -created after the change, they will not affect documents previously uploaded. +In other words, users themselves can't hold a permission, permissions are +granted only to roles. Users can't directly belong to a role, they can only +belong to a group. Groups can be members of roles. Roles are system permission +units and groups are business organizational units. diff --git a/docs/topics/screenshots.rst b/docs/topics/screenshots.rst new file mode 100644 index 0000000000..8d9d1275f5 --- /dev/null +++ b/docs/topics/screenshots.rst @@ -0,0 +1,64 @@ +=========== +Screenshots +=========== + +.. figure:: /_static/main.png + :figwidth: 40% + :scale: 30 % + :alt: Home screen + :align: left + + Home screen + +.. figure:: /_static/page_view.png + :figwidth: 40% + :scale: 30 % + :alt: Page view + :align: right + + Page view + + +.. figure:: /_static/document_view.png + :figwidth: 40% + :scale: 30 % + :alt: Document view + :align: left + + Document view + + +.. figure:: /_static/api.png + :figwidth: 40% + :scale: 30 % + :alt: REST API + :align: right + + REST API + + +.. figure:: /_static/tools.png + :figwidth: 40% + :scale: 30 % + :alt: Tools + :align: left + + Tools + + +.. figure:: /_static/setup.png + :figwidth: 40% + :scale: 30 % + :alt: Setup + :align: right + + Setup + + +.. figure:: /_static/statistics.png + :figwidth: 40% + :scale: 30 % + :alt: Statistics + :align: left + + Statistics diff --git a/docs/topics/smart_links.rst b/docs/topics/smart_links.rst index 9fafa0c146..fa9f5a9e29 100644 --- a/docs/topics/smart_links.rst +++ b/docs/topics/smart_links.rst @@ -2,13 +2,31 @@ Smart links =========== +Smart links are a way to link documents without changing how they are organized +in their respective indexes. Smart links are useful when two documents are +related somehow but are of different type or different hierarchical units. -Smart links are usefull for navigation between documents. They are rule -based, but don't create any organizational structure. They just show the documents -that match the rules as evaluated against the metadata of the currently -displayed document. +Example: A patient record can be related to a prescription drug information +document, but they each belong to their own :doc:`indexes`. -Smart links are usefull when a patient file in a patients index needs to be linked -to the medical documentation of a prescription the patient is using, but that medical -documentation is in it's own prescription index. Smart links can provide a reference -between documents of different indexes without any change in the indexes' structures. +Smart links are rule based, but don't create any organizational structure. +Smart links just show the documents that match the rules as evaluated against +the metadata or properties of the currently displayed document. + +Indexes are automatic hierarchical units used to group documents, smart links +are automatic references between documents. + +Example: + +- Document type: ``Patient records`` +- Metadata type: ``Prescription``, associated as an optional metadata for the document type ``Patient records``. + +- Document type: ``Prescription information sheets`` + +A smart link with the following condition, will automatically links patient +records to the prescription information sheets based on the value of the +metadata type of the patient record. + +.. code-block:: bash + + foreign label is equal to {{ document.metadata_value_of.prescription }} diff --git a/docs/topics/sources.rst b/docs/topics/sources.rst new file mode 100644 index 0000000000..597a5d8a6a --- /dev/null +++ b/docs/topics/sources.rst @@ -0,0 +1,27 @@ +======= +Sources +======= + +Document sources define places from which documents can be uploaded or gathered. + +The current document sources supported are: + +- Web - ``HTML`` forms with a ``Browse`` button that will open the file dialog + when clicked to allow selection of files in the user's computer to be + uploaded as documents. +- Staging folder - Folder where networked attached scanned can save image + files. The files in these staging folders are scanned and a preview is + generated to help the process of upload. +- POP3 email - Provide the email, server and credential of a ``POP3`` based + email to be scanned periodically for email. The body of the email is uploaded + as a document and the attachments of the email are uploaded as separate + documents. +- IMAP email - Same as the ``POP3`` email source but for email accounts using + the ``IMAP`` protocol. +- Watch folder - A filesystem folder that is scanned periodically for files. + Any file in the watch folder is automatically uploaded. + +Document source can be configure to allow document bundles to uploaded as +compressed files which are decompressed and their content uploaded as separate +documents. This feature is useful when migrating from another document +manager system. diff --git a/docs/topics/tags.rst b/docs/topics/tags.rst index f3ef92e827..cbda6e8107 100644 --- a/docs/topics/tags.rst +++ b/docs/topics/tags.rst @@ -2,8 +2,8 @@ Tags ==== -Tags allow giving documents a toggable property. Documents can also be tagged -with more than one tag. Once tagged, documents can be searched also by their tags -and from the tags main menu a list of all the documents with a particular tag -can be obtained easily. Aside from their texts, tags can be assigned a particular -color. +Tags allow giving documents a binary property. Documents can also be tagged +with more than one tag. Once tagged, documents can be searched also by their +tags and from the tags main menu a list of all the documents with a particular +tag can be obtained easily. Aside from their texts, tags can be assigned a +particular color. diff --git a/docs/topics/transformations.rst b/docs/topics/transformations.rst index 8f39d90de4..ddd26c7ef9 100644 --- a/docs/topics/transformations.rst +++ b/docs/topics/transformations.rst @@ -1,12 +1,11 @@ -========================= -What are transformations? -========================= +=============== +Transformations +=============== -Transformation are useful to manipulate the preview of the stored documents -in a persistent manner, for example some scanning equipment only produce -landscape PDFs, in this case a default transformation for that document -source would be "rotation: 270 degress". This way whenever a document is -uploaded from that scanner it appears in portrait orientation. -The transformation remains attached to the document, the file being -preserved in it's original state (a requirement in legal environments) and -only the representation being transformed. +Transformation are persistent manipulations to the previews of the stored +documents. For example: a scanning equipment may only produce landscape PDFs. +In this case an useful transformation for that document source would be to +rotate all documents scanned by 270 degrees after being uploaded, this way +whenever a document is uploaded from that scanner it will appear in portrait +orientation. Transformations do not physically modify the document file but +are just associated with the document's temporary graphical representation. diff --git a/docs/topics/translations.rst b/docs/topics/translations.rst new file mode 100644 index 0000000000..b9f20d3dde --- /dev/null +++ b/docs/topics/translations.rst @@ -0,0 +1,17 @@ +============ +Translations +============ + +Translations are handled online via the **Transifex** website: +https://www.transifex.com/projects/p/mayan-edms/. To create a translation team +for a new language or contribute to an already existing language translation, +create a **Transifex** account and contact the team coordinator of the +respective language in which you are interested. + +Feel free to open translation issues inside **Transifex** itself if you have a +question about the usage or meaning of a source text string. If you open a +translation issue, it will be your responsibility to close it after you get an +answers that satisfies your question. Administrator will not close new issues +as they have no way to determine if your question has been properly answered. +However to avoid clutter, answered questions will be scanned periodically and +closed if no activity is observed from the original poster in a period of time. diff --git a/docs/topics/versioning.rst b/docs/topics/versioning.rst index b7abb2b275..e96d06ea97 100644 --- a/docs/topics/versioning.rst +++ b/docs/topics/versioning.rst @@ -5,10 +5,8 @@ Document versioning **Mayan EDMS** has the ability to store different versions of the same document. A comment field is provided to allow users to summarize the new version changes in comparison with the previous one. If a new version was -uploded by mistake or such new version is no longer necessary the option to +uploaded by mistake or such new version is no longer necessary the option to revert to a previous version of the document is provided. -To upload a new document version, select an existing document, click on the -version tab of the document, and click on the 'upload new version' on the -side bar. A new view very similar to the new document upload view will -appear, showing the same interactive document sources that have been defined. +Only the interactive document sources (:doc:`sources`) (``Web`` and ``Staging folders``) are +available to upload new document versions. diff --git a/environment b/environment new file mode 100644 index 0000000000..2ef2c9d6c2 --- /dev/null +++ b/environment @@ -0,0 +1,3 @@ +POSTGRES_DB=mayan +POSTGRES_PASSWORD=mayanpassword +POSTGRES_USER=mayan diff --git a/manage.py b/manage.py index 47a0084392..c8d9c5d18b 100755 --- a/manage.py +++ b/manage.py @@ -8,4 +8,3 @@ if __name__ == "__main__": from django.core.management import execute_from_command_line execute_from_command_line(sys.argv) - diff --git a/mayan/LICENSE b/mayan/LICENSE new file mode 100644 index 0000000000..fca7bf4730 --- /dev/null +++ b/mayan/LICENSE @@ -0,0 +1,13 @@ + Copyright 2011-2015 Roberto Rosario + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. diff --git a/mayan/__init__.py b/mayan/__init__.py index 4ba68a4e72..c93d3fac43 100644 --- a/mayan/__init__.py +++ b/mayan/__init__.py @@ -1,8 +1,10 @@ from __future__ import unicode_literals __title__ = 'Mayan EDMS' -__version__ = '1.1.1' -__build__ = 0x010101 +__version__ = '2.0.0' +__build__ = 0x020000 __author__ = 'Roberto Rosario' +__author_email__ = 'roberto.rosario@mayan-edms.com' +__description__ = 'Free Open Source Electronic Document Management System' __license__ = 'Apache 2.0' __copyright__ = 'Copyright 2011-2015 Roberto Rosario' diff --git a/mayan/apps/acls/__init__.py b/mayan/apps/acls/__init__.py index 75944619b7..67159f8380 100644 --- a/mayan/apps/acls/__init__.py +++ b/mayan/apps/acls/__init__.py @@ -1,33 +1,5 @@ from __future__ import unicode_literals -from django.dispatch import receiver +from .classes import ModelPermission # NOQA -from south.signals import post_migrate - -from navigation.api import register_links -from project_setup.api import register_setup - -from .classes import ( - AccessHolder, AccessObject, AccessObjectClass, ClassAccessHolder -) -from .links import ( - acl_class_acl_detail, acl_class_acl_list, acl_class_grant, acl_class_list, - acl_class_new_holder_for, acl_class_revoke, acl_detail, acl_grant, - acl_holder_new, acl_revoke, acl_setup_valid_classes -) -from .models import CreatorSingleton - -register_links([AccessObject], [acl_holder_new], menu_name='sidebar') -register_links(AccessObjectClass, [acl_class_acl_list, acl_class_new_holder_for]) -register_links(AccessHolder, [acl_detail]) -register_links(['acls:acl_setup_valid_classes', 'acls:acl_class_acl_list', 'acls:acl_class_new_holder_for', 'acls:acl_class_acl_detail', 'acls:acl_class_multiple_grant', 'acls:acl_class_multiple_revoke'], [acl_class_list], menu_name='secondary_menu') -register_links(ClassAccessHolder, [acl_class_acl_detail]) -register_links(['acls:acl_detail'], [acl_grant, acl_revoke], menu_name='multi_item_links') -register_links(['acls:acl_class_acl_detail'], [acl_class_grant, acl_class_revoke], menu_name='multi_item_links') -register_setup(acl_setup_valid_classes) - - -@receiver(post_migrate, dispatch_uid='create_creator_user') -def create_creator_user(sender, **kwargs): - if kwargs['app'] == 'acls': - CreatorSingleton.objects.get_or_create() +default_app_config = 'acls.apps.ACLsApp' diff --git a/mayan/apps/acls/admin.py b/mayan/apps/acls/admin.py index 998c3e4c05..dd0054460f 100644 --- a/mayan/apps/acls/admin.py +++ b/mayan/apps/acls/admin.py @@ -2,15 +2,15 @@ from __future__ import unicode_literals from django.contrib import admin -from .models import AccessEntry +from .models import AccessControlList -class AccessEntryAdmin(admin.ModelAdmin): - model = AccessEntry - list_display = ('pk', 'holder_object', 'permission', 'content_object') +@admin.register(AccessControlList) +class AccessControlListAdmin(admin.ModelAdmin): + filter_horizontal = ('permissions',) + list_display = ('pk', 'role', 'content_type', 'content_object') list_display_links = ('pk',) + list_filter = ('content_type',) related_lookup_fields = { - 'generic': [['holder_type', 'holder_id'], ['content_type', 'object_id']], + 'generic': (('content_type', 'object_id'),), } - -admin.site.register(AccessEntry, AccessEntryAdmin) diff --git a/mayan/apps/acls/api.py b/mayan/apps/acls/api.py deleted file mode 100644 index 314eaad0c2..0000000000 --- a/mayan/apps/acls/api.py +++ /dev/null @@ -1,28 +0,0 @@ -from __future__ import unicode_literals - -from django.contrib.contenttypes.models import ContentType - -_class_permissions = {} - - -def class_permissions(cls, permission_list): - """ - Associate a permissions list to a class - """ - stored_permissions = _class_permissions.setdefault(cls, []) - stored_permissions.extend(permission_list) - - -def get_class_permissions_for(obj): - """ - Return a list of permissions associated with a content type - """ - content_type = ContentType.objects.get_for_model(obj) - return _class_permissions.get(content_type.model_class(), []) - - -def get_classes(): - """ - Return a list of encapsulated classes that have been registered - """ - return _class_permissions.keys() diff --git a/mayan/apps/acls/apps.py b/mayan/apps/acls/apps.py new file mode 100644 index 0000000000..5f79f0fc0e --- /dev/null +++ b/mayan/apps/acls/apps.py @@ -0,0 +1,34 @@ +from __future__ import unicode_literals + +from django.utils.translation import ugettext_lazy as _ + +from common import MayanAppConfig, menu_object, menu_sidebar +from navigation import SourceColumn + +from .links import link_acl_new, link_acl_delete, link_acl_permissions +from .models import AccessControlList + + +class ACLsApp(MayanAppConfig): + name = 'acls' + test = True + verbose_name = _('ACLs') + + def ready(self): + super(ACLsApp, self).ready() + + SourceColumn( + source=AccessControlList, label=_('Permissions'), + attribute='get_permission_titles' + ) + SourceColumn( + source=AccessControlList, label=_('Role'), attribute='role' + ) + + menu_object.bind_links( + links=(link_acl_permissions, link_acl_delete), + sources=(AccessControlList,) + ) + menu_sidebar.bind_links( + links=(link_acl_new,), sources=('acls:acl_list',) + ) diff --git a/mayan/apps/acls/classes.py b/mayan/apps/acls/classes.py index edab6e6fa9..1cd9ef2d0f 100644 --- a/mayan/apps/acls/classes.py +++ b/mayan/apps/acls/classes.py @@ -1,153 +1,44 @@ -from __future__ import unicode_literals +from __future__ import unicode_literals, absolute_import import logging -import sys -import types -from django.contrib.contenttypes.models import ContentType -from django.core.exceptions import ObjectDoesNotExist -from django.db.models.base import ModelBase - -from common.models import AnonymousUserSingleton +from permissions.models import StoredPermission logger = logging.getLogger(__name__) -_cache = {} - -def get_source_object(obj): - if isinstance(obj, EncapsulatedObject): - return obj.source_object - else: - return obj - - -class EncapsulatedObject(object): - source_object_name = 'source_object' +class ModelPermission(object): + _registry = {} + _proxies = {} + _inheritances = {} @classmethod - def object_key(cls, app_label=None, model=None, pk=None): - if pk: - return '%s.%s.%s.%s' % (cls.__name__, app_label, model, pk) - else: - return '%s.%s.%s' % (cls.__name__, app_label, model) + def register(cls, model, permissions): + cls._registry.setdefault(model, []) + for permission in permissions: + cls._registry[model].append(permission) @classmethod - def add_to_class(cls, name, value): - if hasattr(value, 'contribute_to_class'): - value.contribute_to_class(cls, name) - else: - setattr(cls, name, value) - - @classmethod - def set_source_object_name(cls, new_name): - cls.source_object_name = new_name - - # @classmethod - # def encapsulate_list(cls, source_object=None, app_label=None, model=None, pk=None): - - @classmethod - def encapsulate(cls, source_object): - source_object = AnonymousUserSingleton.objects.passthru_check(source_object) - content_type = ContentType.objects.get_for_model(source_object) - - if hasattr(source_object, 'pk'): - # Object - object_key = cls.object_key(content_type.app_label, content_type.model, source_object.pk) - else: - # Class - object_key = cls.object_key(content_type.app_label, content_type.model) - + def get_for_instance(cls, instance): try: - return _cache[object_key] - except KeyError: - encapsulated_object = cls(source_object) - _cache[object_key] = encapsulated_object - return encapsulated_object - - @classmethod - def get(cls, gid): - elements = gid.split('.') - if len(elements) == 3: - app_label, model, pk = elements[0], elements[1], elements[2] - elif len(elements) == 2: - app_label, model = elements[0], elements[1] - pk = None - - object_key = cls.object_key(*elements) - - try: - return _cache[object_key] + permissions = cls._registry[type(instance)] except KeyError: try: - content_type = ContentType.objects.get(app_label=app_label, model=model) - except ContentType.DoesNotExist: - raise ObjectDoesNotExist('%s matching query does not exist.' % ContentType._meta.object_name) - else: - source_object_model_class = content_type.model_class() - if pk: - try: - source_object = content_type.get_object_for_this_type(pk=pk) - except source_object_model_class.DoesNotExist: - raise ObjectDoesNotExist('%s matching query does not exist.' % source_object_model_class._meta.object_name) - else: - source_object = source_object_model_class + permissions = cls._registry[cls._proxies[type(instance)]] + except KeyError: + permissions = () - return cls.encapsulate(source_object) + pks = [permission.stored_permission.pk for permission in permissions] + return StoredPermission.objects.filter(pk__in=pks) - def __init__(self, source_object): - self.content_type = ContentType.objects.get_for_model(source_object) - self.ct_fullname = '%s.%s' % (self.content_type.app_label, self.content_type.model) + @classmethod + def register_proxy(cls, source, model): + cls._proxies[model] = source - if isinstance(source_object, ModelBase): - # Class - self.gid = '%s.%s' % (self.content_type.app_label, self.content_type.model) - else: - # Object - self.gid = '%s.%s.%s' % (self.content_type.app_label, self.content_type.model, source_object.pk) + @classmethod + def register_inheritance(cls, model, related): + cls._inheritances[model] = related - setattr(self, self.__class__.source_object_name, source_object) - - def __unicode__(self): - if isinstance(self.source_object, ModelBase): - return unicode(self.source_object._meta.verbose_name_plural) - elif self.ct_fullname == 'auth.user': - return '%s %s' % (self.source_object._meta.verbose_name, self.source_object.get_full_name()) - elif self.ct_fullname == 'common.anonymoususersingleton': - return unicode(self.source_object) - elif self.ct_fullname == 'acls.creatorsingleton': - return unicode(self.source_object) - else: - return '%s %s' % (self.source_object._meta.verbose_name, self.source_object) - - def __repr__(self): - return self.__unicode__() - - @property - def source_object(self): - return getattr(self, self.__class__.source_object_name, None) - - -class AccessHolder(EncapsulatedObject): - source_object_name = 'holder_object' - - -class AccessObject(EncapsulatedObject): - source_object_name = 'obj' - - -class AccessObjectClass(EncapsulatedObject): - source_object_name = 'cls' - - -class ClassAccessHolder(EncapsulatedObject): - source_object_name = 'class_holder' - - -if sys.version_info < (2, 5): - # Prior to Python 2.5, Exception was an old-style class - def subclass_exception(name, parents, unused): - return types.ClassType(name, parents, {}) -else: - def subclass_exception(name, parents, module): - return type(name, parents, {'__module__': module}) + @classmethod + def get_inheritance(cls, model): + return cls._inheritances[model] diff --git a/mayan/apps/acls/forms.py b/mayan/apps/acls/forms.py deleted file mode 100644 index 0f65fefbc7..0000000000 --- a/mayan/apps/acls/forms.py +++ /dev/null @@ -1,62 +0,0 @@ -from __future__ import absolute_import, unicode_literals - -from django import forms -from django.contrib.auth.models import User, Group -from django.utils.translation import ugettext_lazy as _ -from django.utils.functional import SimpleLazyObject - -from common.models import AnonymousUserSingleton -from common.utils import get_object_name -from permissions.models import Role - -from .classes import AccessHolder -from .models import CreatorSingleton - -anonymous_singleton = SimpleLazyObject(lambda: AnonymousUserSingleton.objects.get()) -creator_singleton = SimpleLazyObject(lambda: CreatorSingleton.objects.get()) - - -def _as_choice_list(holders): - return sorted([(AccessHolder.encapsulate(holder).gid, get_object_name(holder, display_object_type=False)) for holder in holders], key=lambda x: x[1]) - - -class BaseHolderSelectionForm(forms.Form): - holder_gid = forms.ChoiceField( - label=_('New holder') - ) - - def __init__(self, *args, **kwargs): - current_holders = kwargs.pop('current_holders', []) - if current_holders: - current_holders = [holder.source_object for holder in current_holders] - - staff_users = User.objects.filter(is_staff=True) - super_users = User.objects.filter(is_superuser=True) - users = set(User.objects.filter(is_active=True)) - set(staff_users) - set(super_users) - set(current_holders) - roles = set(Role.objects.all()) - set(current_holders) - groups = set(Group.objects.all()) - set(current_holders) - special = set(self.special_holders) - set(current_holders) - - non_holder_list = [] - if users: - non_holder_list.append((_('Users'), _as_choice_list(list(users)))) - - if groups: - non_holder_list.append((_('Groups'), _as_choice_list(list(groups)))) - - if roles: - non_holder_list.append((_('Roles'), _as_choice_list(list(roles)))) - - if special: - non_holder_list.append((_('Special'), _as_choice_list(list(special)))) - - super(BaseHolderSelectionForm, self).__init__(*args, **kwargs) - self.fields['holder_gid'].choices = non_holder_list - - -class HolderSelectionForm(BaseHolderSelectionForm): - special_holders = [anonymous_singleton] - - -class ClassHolderSelectionForm(BaseHolderSelectionForm): - special_holders = [anonymous_singleton, creator_singleton] diff --git a/mayan/apps/acls/links.py b/mayan/apps/acls/links.py index dffca74234..76c22cbf83 100644 --- a/mayan/apps/acls/links.py +++ b/mayan/apps/acls/links.py @@ -1,21 +1,40 @@ from __future__ import unicode_literals +from django.contrib.contenttypes.models import ContentType from django.utils.translation import ugettext_lazy as _ -from .permissions import ( - ACLS_CLASS_EDIT_ACL, ACLS_CLASS_VIEW_ACL, ACLS_EDIT_ACL, ACLS_VIEW_ACL +from navigation import Link + +from .permissions import permission_acl_view, permission_acl_edit + + +def get_kwargs_factory(variable_name): + def get_kwargs(context): + content_type = ContentType.objects.get_for_model( + context[variable_name] + ) + return { + 'app_label': '"{}"'.format(content_type.app_label), + 'model': '"{}"'.format(content_type.model), + 'object_id': '{}.pk'.format(variable_name) + } + + return get_kwargs + + +link_acl_delete = Link( + permissions=(permission_acl_edit,), tags='dangerous', text=_('Delete'), + view='acls:acl_delete', args='resolved_object.pk' +) +link_acl_list = Link( + permissions=(permission_acl_view,), text=_('ACLs'), view='acls:acl_list', + kwargs=get_kwargs_factory('resolved_object') +) +link_acl_new = Link( + permissions=(permission_acl_edit,), text=_('New ACL'), + view='acls:acl_new', kwargs=get_kwargs_factory('resolved_object') +) +link_acl_permissions = Link( + permissions=(permission_acl_edit,), text=_('Permissions'), + view='acls:acl_permissions', args='resolved_object.pk' ) - -acl_list = {'text': _('ACLs'), 'view': 'acls:acl_list', 'famfam': 'lock', 'permissions': [ACLS_VIEW_ACL]} -acl_detail = {'text': _('Details'), 'view': 'acls:acl_detail', 'args': ['access_object.gid', 'object.gid'], 'famfam': 'key_go', 'permissions': [ACLS_VIEW_ACL]} -acl_grant = {'text': _('Grant'), 'view': 'acls:acl_multiple_grant', 'famfam': 'key_add', 'permissions': [ACLS_EDIT_ACL]} -acl_revoke = {'text': _('Revoke'), 'view': 'acls:acl_multiple_revoke', 'famfam': 'key_delete', 'permissions': [ACLS_EDIT_ACL]} -acl_holder_new = {'text': _('New holder'), 'view': 'acls:acl_holder_new', 'args': 'access_object.gid', 'famfam': 'user', 'permissions': [ACLS_EDIT_ACL]} - -acl_setup_valid_classes = {'text': _('Default ACLs'), 'view': 'acls:acl_setup_valid_classes', 'icon': 'main/icons/lock.png', 'permissions': [ACLS_CLASS_VIEW_ACL]} -acl_class_list = {'text': _('Classes'), 'view': 'acls:acl_setup_valid_classes', 'famfam': 'package', 'permissions': [ACLS_CLASS_VIEW_ACL]} -acl_class_acl_list = {'text': _('ACLs for class'), 'view': 'acls:acl_class_acl_list', 'args': 'object.gid', 'famfam': 'lock_go', 'permissions': [ACLS_CLASS_VIEW_ACL]} -acl_class_acl_detail = {'text': _('Details'), 'view': 'acls:acl_class_acl_detail', 'args': ['access_object_class.gid', 'object.gid'], 'famfam': 'key_go', 'permissions': [ACLS_CLASS_VIEW_ACL]} -acl_class_new_holder_for = {'text': _('New holder'), 'view': 'acls:acl_class_new_holder_for', 'args': 'object.gid', 'famfam': 'user', 'permissions': [ACLS_CLASS_EDIT_ACL]} -acl_class_grant = {'text': _('Grant'), 'view': 'acls:acl_class_multiple_grant', 'famfam': 'key_add', 'permissions': [ACLS_CLASS_EDIT_ACL]} -acl_class_revoke = {'text': _('Revoke'), 'view': 'acls:acl_class_multiple_revoke', 'famfam': 'key_delete', 'permissions': [ACLS_CLASS_EDIT_ACL]} diff --git a/mayan/apps/acls/literals.py b/mayan/apps/acls/literals.py deleted file mode 100644 index 232128672a..0000000000 --- a/mayan/apps/acls/literals.py +++ /dev/null @@ -1,14 +0,0 @@ -from __future__ import unicode_literals - -# Content type <-> fam fam icon mapping -CONTENT_TYPE_ICON_MAP = { - 'auth.user': 'user', - 'auth.group': 'group', - 'documents.document': 'page', - 'permissions.role': 'medal_gold_1', - 'folders.folder': 'folder', - 'tags.tag': 'tag_blue', - 'linking.smartlink': 'page_link', - 'common.anonymoususersingleton': 'user', - 'acls.creatorsingleton': 'user', -} diff --git a/mayan/apps/acls/locale/ar/LC_MESSAGES/django.mo b/mayan/apps/acls/locale/ar/LC_MESSAGES/django.mo index faa930ab94..d96ebef3d7 100644 Binary files a/mayan/apps/acls/locale/ar/LC_MESSAGES/django.mo and b/mayan/apps/acls/locale/ar/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/acls/locale/ar/LC_MESSAGES/django.po b/mayan/apps/acls/locale/ar/LC_MESSAGES/django.po index 6bcd780f1d..dfa19b88ea 100644 --- a/mayan/apps/acls/locale/ar/LC_MESSAGES/django.po +++ b/mayan/apps/acls/locale/ar/LC_MESSAGES/django.po @@ -4,235 +4,217 @@ # # Translators: # Translators: -# Mohammed ALDOUB , 2013 msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2015-05-15 18:59-0400\n" -"PO-Revision-Date: 2014-10-25 06:47+0000\n" +"POT-Creation-Date: 2015-09-24 16:24-0400\n" +"PO-Revision-Date: 2015-09-24 05:15+0000\n" "Last-Translator: Roberto Rosario\n" -"Language-Team: Arabic (http://www.transifex.com/projects/p/mayan-edms/language/ar/)\n" +"Language-Team: Arabic (http://www.transifex.com/rosarior/mayan-edms/language/ar/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: ar\n" "Plural-Forms: nplurals=6; plural=n==0 ? 0 : n==1 ? 1 : n==2 ? 2 : n%100>=3 && n%100<=10 ? 3 : n%100>=11 && n%100<=99 ? 4 : 5;\n" -#: forms.py:25 links.py:13 links.py:19 -msgid "New holder" -msgstr "New holder" - -#: forms.py:42 -msgid "Users" -msgstr "Users" - -#: forms.py:45 -msgid "Groups" -msgstr "Groups" - -#: forms.py:48 -msgid "Roles" -msgstr "Roles" - -#: forms.py:51 -msgid "Special" -msgstr "Special" - -#: links.py:9 +#: apps.py:14 links.py:30 msgid "ACLs" -msgstr "ACLs" - -#: links.py:10 links.py:18 -msgid "Details" msgstr "" -#: links.py:11 links.py:20 -msgid "Grant" +#: apps.py:20 links.py:38 models.py:36 +msgid "Permissions" msgstr "" -#: links.py:12 links.py:21 -msgid "Revoke" +#: apps.py:24 models.py:38 +#| msgid "Roles" +msgid "Role" msgstr "" -#: links.py:15 -msgid "Default ACLs" -msgstr "Default ACLs" - -#: links.py:16 views.py:379 -msgid "Classes" +#: links.py:26 +msgid "Delete" msgstr "" -#: links.py:17 -msgid "ACLs for class" -msgstr "ACLs for class" +#: links.py:34 +#| msgid "View ACLs" +msgid "New ACL" +msgstr "" -#: managers.py:118 managers.py:130 +#: managers.py:72 msgid "Insufficient access." -msgstr "Insufficient access." - -#: models.py:25 models.py:67 -msgid "Permission" msgstr "" -#: models.py:51 +#: models.py:44 msgid "Access entry" msgstr "" -#: models.py:52 +#: models.py:45 msgid "Access entries" msgstr "" -#: models.py:88 -msgid "Default access entry" +#: models.py:60 +msgid "None" msgstr "" -#: models.py:89 -msgid "Default access entries" -msgstr "" - -#: models.py:108 models.py:111 models.py:112 -msgid "Creator" -msgstr "Creator" - -#: permissions.py:7 permissions.py:8 +#: permissions.py:7 msgid "Access control lists" -msgstr "Access control lists" +msgstr "" #: permissions.py:10 msgid "Edit ACLs" -msgstr "Edit ACLs" - -#: permissions.py:11 -msgid "View ACLs" -msgstr "View ACLs" +msgstr "" #: permissions.py:13 -msgid "Edit class default ACLs" -msgstr "Edit class default ACLs" +msgid "View ACLs" +msgstr "" -#: permissions.py:14 -msgid "View class default ACLs" -msgstr "View class default ACLs" - -#: views.py:48 +#: views.py:61 #, python-format msgid "Access control lists for: %s" msgstr "" -#: views.py:50 views.py:402 -msgid "Holder" +#: views.py:107 +#, python-format +msgid "New access control lists for: %s" msgstr "" -#: views.py:51 views.py:403 -msgid "Permissions" +#: views.py:132 +#, python-format +#| msgid "Default ACLs" +msgid "Delete ACL: %s" msgstr "" -#: views.py:98 -#, python-format -msgid "Permissions available to: %(actor)s for %(obj)s" +#: views.py:147 +msgid "Available permissions" msgstr "" -#: views.py:105 views.py:434 -msgid "Namespace" +#: views.py:148 +msgid "Granted permissions" msgstr "" -#: views.py:106 views.py:435 -msgid "Label" +#: views.py:187 +msgid "Disabled permissions are inherited from a parent object." msgstr "" -#: views.py:108 views.py:437 -msgid "Has permission" +#: views.py:218 +#, python-format +msgid "Role \"%(role)s\" permission's for \"%(object)s\"" msgstr "" -#: views.py:181 views.py:272 views.py:516 views.py:593 -msgid ", " -msgstr ", " +#~ msgid "New holder" +#~ msgstr "New holder" -#: views.py:182 views.py:273 views.py:517 views.py:594 -#, python-format -msgid " for %s" -msgstr " for %s" +#~ msgid "Users" +#~ msgstr "Users" -#: views.py:183 views.py:518 -#, python-format -msgid " to %s" -msgstr " to %s" +#~ msgid "Groups" +#~ msgstr "Groups" -#: views.py:186 views.py:521 -#, python-format -msgid "Are you sure you wish to grant the permission %(title_suffix)s?" -msgstr "Are you sure you wish to grant the permission %(title_suffix)s?" +#~ msgid "Special" +#~ msgstr "Special" -#: views.py:188 views.py:523 -#, python-format -msgid "Are you sure you wish to grant the permissions %(title_suffix)s?" -msgstr "Are you sure you wish to grant the permissions %(title_suffix)s?" +#~ msgid "Details" +#~ msgstr "details" -#: views.py:195 views.py:530 -#, python-format -msgid "Permission \"%(permission)s\" granted to %(actor)s for %(object)s." -msgstr "Permission \"%(permission)s\" granted to %(actor)s for %(object)s." +#~ msgid "Grant" +#~ msgstr "grant" -#: views.py:201 views.py:536 -#, python-format -msgid "" -"%(actor)s, already had the permission \"%(permission)s\" granted for " -"%(object)s." -msgstr "%(actor)s, already had the permission \"%(permission)s\" granted for %(object)s." +#~ msgid "Revoke" +#~ msgstr "revoke" -#: views.py:274 views.py:595 -#, python-format -msgid " from %s" -msgstr " from %s" +#~ msgid "Classes" +#~ msgstr "classes" -#: views.py:277 views.py:598 -#, python-format -msgid "Are you sure you wish to revoke the permission %(title_suffix)s?" -msgstr "Are you sure you wish to revoke the permission %(title_suffix)s?" +#~ msgid "ACLs for class" +#~ msgstr "ACLs for class" -#: views.py:279 views.py:600 -#, python-format -msgid "Are you sure you wish to revoke the permissions %(title_suffix)s?" -msgstr "Are you sure you wish to revoke the permissions %(title_suffix)s?" +#~ msgid "Permission" +#~ msgstr "permissions" -#: views.py:286 views.py:607 -#, python-format -msgid "Permission \"%(permission)s\" revoked of %(actor)s for %(object)s." -msgstr "Permission \"%(permission)s\" revoked of %(actor)s for %(object)s." +#~ msgid "Default access entry" +#~ msgstr "default access entry" -#: views.py:292 views.py:613 -#, python-format -msgid "%(actor)s, didn't had the permission \"%(permission)s\" for %(object)s." -msgstr "%(actor)s, didn't had the permission \"%(permission)s\" for %(object)s." +#~ msgid "Default access entries" +#~ msgstr "default access entries" -#: views.py:346 -#, python-format -msgid "Add new holder for: %s" -msgstr "" +#~ msgid "Creator" +#~ msgstr "Creator" -#: views.py:347 views.py:477 -msgid "Select" -msgstr "Select" +#~ msgid "Edit class default ACLs" +#~ msgstr "Edit class default ACLs" -#: views.py:381 -msgid "Class" -msgstr "" +#~ msgid "View class default ACLs" +#~ msgstr "View class default ACLs" -#: views.py:400 -#, python-format -msgid "Default access control lists for class: %s" -msgstr "" +#~ msgid "Holder" +#~ msgstr "holder" -#: views.py:428 -#, python-format -msgid "Permissions available to: %(actor)s for class %(class)s" -msgstr "" +#~ msgid "Permissions available to: %(actor)s for %(obj)s" +#~ msgstr "permissions available to: %(actor)s for %(obj)s" -#: views.py:475 -#, python-format -msgid "Add new holder for class: %s" -msgstr "" +#~ msgid "Namespace" +#~ msgstr "namespace" + +#~ msgid "Label" +#~ msgstr "label" + +#~ msgid ", " +#~ msgstr ", " + +#~ msgid " for %s" +#~ msgstr " for %s" + +#~ msgid " to %s" +#~ msgstr " to %s" + +#~ msgid "Are you sure you wish to grant the permission %(title_suffix)s?" +#~ msgstr "Are you sure you wish to grant the permission %(title_suffix)s?" + +#~ msgid "Are you sure you wish to grant the permissions %(title_suffix)s?" +#~ msgstr "Are you sure you wish to grant the permissions %(title_suffix)s?" + +#~ msgid "Permission \"%(permission)s\" granted to %(actor)s for %(object)s." +#~ msgstr "Permission \"%(permission)s\" granted to %(actor)s for %(object)s." + +#~ msgid "" +#~ "%(actor)s, already had the permission \"%(permission)s\" granted for " +#~ "%(object)s." +#~ msgstr "" +#~ "%(actor)s, already had the permission \"%(permission)s\" granted for " +#~ "%(object)s." + +#~ msgid " from %s" +#~ msgstr " from %s" + +#~ msgid "Are you sure you wish to revoke the permission %(title_suffix)s?" +#~ msgstr "Are you sure you wish to revoke the permission %(title_suffix)s?" + +#~ msgid "Are you sure you wish to revoke the permissions %(title_suffix)s?" +#~ msgstr "Are you sure you wish to revoke the permissions %(title_suffix)s?" + +#~ msgid "Permission \"%(permission)s\" revoked of %(actor)s for %(object)s." +#~ msgstr "Permission \"%(permission)s\" revoked of %(actor)s for %(object)s." + +#~ msgid "%(actor)s, didn't had the permission \"%(permission)s\" for %(object)s." +#~ msgstr "%(actor)s, didn't had the permission \"%(permission)s\" for %(object)s." + +#~ msgid "Add new holder for: %s" +#~ msgstr "add new holder for: %s" + +#~ msgid "Select" +#~ msgstr "Select" + +#~ msgid "Class" +#~ msgstr "class" + +#~ msgid "Default access control lists for class: %s" +#~ msgstr "default access control lists for class: %s" + +#~ msgid "Permissions available to: %(actor)s for class %(class)s" +#~ msgstr "permissions available to: %(actor)s for class %(class)s" + +#~ msgid "Add new holder for class: %s" +#~ msgstr "add new holder for class: %s" #~ msgid "List of classes" #~ msgstr "List of classes" diff --git a/mayan/apps/acls/locale/bg/LC_MESSAGES/django.mo b/mayan/apps/acls/locale/bg/LC_MESSAGES/django.mo index a84fb759bd..129665cdde 100644 Binary files a/mayan/apps/acls/locale/bg/LC_MESSAGES/django.mo and b/mayan/apps/acls/locale/bg/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/acls/locale/bg/LC_MESSAGES/django.po b/mayan/apps/acls/locale/bg/LC_MESSAGES/django.po index ec3a2161f9..16ea9f058a 100644 --- a/mayan/apps/acls/locale/bg/LC_MESSAGES/django.po +++ b/mayan/apps/acls/locale/bg/LC_MESSAGES/django.po @@ -4,237 +4,217 @@ # # Translators: # Translators: -# Iliya Georgiev , 2012 -# Pavlin Koldamov , 2012 -# Pavlin Koldamov , 2012 msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2015-05-15 18:59-0400\n" -"PO-Revision-Date: 2014-10-25 06:47+0000\n" +"POT-Creation-Date: 2015-09-24 16:24-0400\n" +"PO-Revision-Date: 2015-09-24 05:15+0000\n" "Last-Translator: Roberto Rosario\n" -"Language-Team: Bulgarian (http://www.transifex.com/projects/p/mayan-edms/language/bg/)\n" +"Language-Team: Bulgarian (http://www.transifex.com/rosarior/mayan-edms/language/bg/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: bg\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: forms.py:25 links.py:13 links.py:19 -msgid "New holder" -msgstr "Нов притежател" - -#: forms.py:42 -msgid "Users" -msgstr "Потребители" - -#: forms.py:45 -msgid "Groups" -msgstr "Групи" - -#: forms.py:48 -msgid "Roles" -msgstr "Роли" - -#: forms.py:51 -msgid "Special" -msgstr "" - -#: links.py:9 +#: apps.py:14 links.py:30 msgid "ACLs" -msgstr "Контролни списъци за достъп" - -#: links.py:10 links.py:18 -msgid "Details" msgstr "" -#: links.py:11 links.py:20 -msgid "Grant" +#: apps.py:20 links.py:38 models.py:36 +msgid "Permissions" msgstr "" -#: links.py:12 links.py:21 -msgid "Revoke" +#: apps.py:24 models.py:38 +#| msgid "Roles" +msgid "Role" msgstr "" -#: links.py:15 -msgid "Default ACLs" -msgstr "Контролни списъци за достъп по подразбиране" - -#: links.py:16 views.py:379 -msgid "Classes" +#: links.py:26 +msgid "Delete" msgstr "" -#: links.py:17 -msgid "ACLs for class" -msgstr "Контролни списъци за клас" +#: links.py:34 +#| msgid "View ACLs" +msgid "New ACL" +msgstr "" -#: managers.py:118 managers.py:130 +#: managers.py:72 msgid "Insufficient access." -msgstr "Недостатъчен достъп." - -#: models.py:25 models.py:67 -msgid "Permission" msgstr "" -#: models.py:51 +#: models.py:44 msgid "Access entry" msgstr "" -#: models.py:52 +#: models.py:45 msgid "Access entries" msgstr "" -#: models.py:88 -msgid "Default access entry" +#: models.py:60 +msgid "None" msgstr "" -#: models.py:89 -msgid "Default access entries" -msgstr "" - -#: models.py:108 models.py:111 models.py:112 -msgid "Creator" -msgstr "" - -#: permissions.py:7 permissions.py:8 +#: permissions.py:7 msgid "Access control lists" -msgstr "Контролни списъци за достъп" +msgstr "" #: permissions.py:10 msgid "Edit ACLs" msgstr "" -#: permissions.py:11 +#: permissions.py:13 msgid "View ACLs" msgstr "" -#: permissions.py:13 -msgid "Edit class default ACLs" -msgstr "" - -#: permissions.py:14 -msgid "View class default ACLs" -msgstr "" - -#: views.py:48 +#: views.py:61 #, python-format msgid "Access control lists for: %s" msgstr "" -#: views.py:50 views.py:402 -msgid "Holder" -msgstr "" - -#: views.py:51 views.py:403 -msgid "Permissions" -msgstr "" - -#: views.py:98 +#: views.py:107 #, python-format -msgid "Permissions available to: %(actor)s for %(obj)s" +msgid "New access control lists for: %s" msgstr "" -#: views.py:105 views.py:434 -msgid "Namespace" +#: views.py:132 +#, python-format +#| msgid "Default ACLs" +msgid "Delete ACL: %s" msgstr "" -#: views.py:106 views.py:435 -msgid "Label" +#: views.py:147 +msgid "Available permissions" msgstr "" -#: views.py:108 views.py:437 -msgid "Has permission" +#: views.py:148 +msgid "Granted permissions" msgstr "" -#: views.py:181 views.py:272 views.py:516 views.py:593 -msgid ", " +#: views.py:187 +msgid "Disabled permissions are inherited from a parent object." msgstr "" -#: views.py:182 views.py:273 views.py:517 views.py:594 +#: views.py:218 #, python-format -msgid " for %s" -msgstr " за %s" - -#: views.py:183 views.py:518 -#, python-format -msgid " to %s" -msgstr " към %s" - -#: views.py:186 views.py:521 -#, python-format -msgid "Are you sure you wish to grant the permission %(title_suffix)s?" -msgstr "Сигурни ли сте, че искате да дадете разрешение за %(title_suffix)s?" - -#: views.py:188 views.py:523 -#, python-format -msgid "Are you sure you wish to grant the permissions %(title_suffix)s?" -msgstr "Сигурни ли сте, че искате да дадете разрешения за %(title_suffix)s?" - -#: views.py:195 views.py:530 -#, python-format -msgid "Permission \"%(permission)s\" granted to %(actor)s for %(object)s." +msgid "Role \"%(role)s\" permission's for \"%(object)s\"" msgstr "" -#: views.py:201 views.py:536 -#, python-format -msgid "" -"%(actor)s, already had the permission \"%(permission)s\" granted for " -"%(object)s." -msgstr "" +#~ msgid "New holder" +#~ msgstr "New holder" -#: views.py:274 views.py:595 -#, python-format -msgid " from %s" -msgstr " от %s" +#~ msgid "Users" +#~ msgstr "Users" -#: views.py:277 views.py:598 -#, python-format -msgid "Are you sure you wish to revoke the permission %(title_suffix)s?" -msgstr "Сигурни ли сте, че искате да отнемете разрешението за %(title_suffix)s?" +#~ msgid "Groups" +#~ msgstr "Groups" -#: views.py:279 views.py:600 -#, python-format -msgid "Are you sure you wish to revoke the permissions %(title_suffix)s?" -msgstr "Сигурни ли сте, че искате да отнемете разрешенията за %(title_suffix)s?" +#~ msgid "Special" +#~ msgstr "Special" -#: views.py:286 views.py:607 -#, python-format -msgid "Permission \"%(permission)s\" revoked of %(actor)s for %(object)s." -msgstr "" +#~ msgid "Details" +#~ msgstr "details" -#: views.py:292 views.py:613 -#, python-format -msgid "%(actor)s, didn't had the permission \"%(permission)s\" for %(object)s." -msgstr "" +#~ msgid "Grant" +#~ msgstr "grant" -#: views.py:346 -#, python-format -msgid "Add new holder for: %s" -msgstr "" +#~ msgid "Revoke" +#~ msgstr "revoke" -#: views.py:347 views.py:477 -msgid "Select" -msgstr "" +#~ msgid "Classes" +#~ msgstr "classes" -#: views.py:381 -msgid "Class" -msgstr "" +#~ msgid "ACLs for class" +#~ msgstr "ACLs for class" -#: views.py:400 -#, python-format -msgid "Default access control lists for class: %s" -msgstr "" +#~ msgid "Permission" +#~ msgstr "permissions" -#: views.py:428 -#, python-format -msgid "Permissions available to: %(actor)s for class %(class)s" -msgstr "" +#~ msgid "Default access entry" +#~ msgstr "default access entry" -#: views.py:475 -#, python-format -msgid "Add new holder for class: %s" -msgstr "" +#~ msgid "Default access entries" +#~ msgstr "default access entries" + +#~ msgid "Creator" +#~ msgstr "Creator" + +#~ msgid "Edit class default ACLs" +#~ msgstr "Edit class default ACLs" + +#~ msgid "View class default ACLs" +#~ msgstr "View class default ACLs" + +#~ msgid "Holder" +#~ msgstr "holder" + +#~ msgid "Permissions available to: %(actor)s for %(obj)s" +#~ msgstr "permissions available to: %(actor)s for %(obj)s" + +#~ msgid "Namespace" +#~ msgstr "namespace" + +#~ msgid "Label" +#~ msgstr "label" + +#~ msgid ", " +#~ msgstr ", " + +#~ msgid " for %s" +#~ msgstr " for %s" + +#~ msgid " to %s" +#~ msgstr " to %s" + +#~ msgid "Are you sure you wish to grant the permission %(title_suffix)s?" +#~ msgstr "Are you sure you wish to grant the permission %(title_suffix)s?" + +#~ msgid "Are you sure you wish to grant the permissions %(title_suffix)s?" +#~ msgstr "Are you sure you wish to grant the permissions %(title_suffix)s?" + +#~ msgid "Permission \"%(permission)s\" granted to %(actor)s for %(object)s." +#~ msgstr "Permission \"%(permission)s\" granted to %(actor)s for %(object)s." + +#~ msgid "" +#~ "%(actor)s, already had the permission \"%(permission)s\" granted for " +#~ "%(object)s." +#~ msgstr "" +#~ "%(actor)s, already had the permission \"%(permission)s\" granted for " +#~ "%(object)s." + +#~ msgid " from %s" +#~ msgstr " from %s" + +#~ msgid "Are you sure you wish to revoke the permission %(title_suffix)s?" +#~ msgstr "Are you sure you wish to revoke the permission %(title_suffix)s?" + +#~ msgid "Are you sure you wish to revoke the permissions %(title_suffix)s?" +#~ msgstr "Are you sure you wish to revoke the permissions %(title_suffix)s?" + +#~ msgid "Permission \"%(permission)s\" revoked of %(actor)s for %(object)s." +#~ msgstr "Permission \"%(permission)s\" revoked of %(actor)s for %(object)s." + +#~ msgid "%(actor)s, didn't had the permission \"%(permission)s\" for %(object)s." +#~ msgstr "%(actor)s, didn't had the permission \"%(permission)s\" for %(object)s." + +#~ msgid "Add new holder for: %s" +#~ msgstr "add new holder for: %s" + +#~ msgid "Select" +#~ msgstr "Select" + +#~ msgid "Class" +#~ msgstr "class" + +#~ msgid "Default access control lists for class: %s" +#~ msgstr "default access control lists for class: %s" + +#~ msgid "Permissions available to: %(actor)s for class %(class)s" +#~ msgstr "permissions available to: %(actor)s for class %(class)s" + +#~ msgid "Add new holder for class: %s" +#~ msgstr "add new holder for class: %s" #~ msgid "List of classes" #~ msgstr "List of classes" diff --git a/mayan/apps/acls/locale/bs_BA/LC_MESSAGES/django.mo b/mayan/apps/acls/locale/bs_BA/LC_MESSAGES/django.mo index a76efbb3ba..9d6ab1f897 100644 Binary files a/mayan/apps/acls/locale/bs_BA/LC_MESSAGES/django.mo and b/mayan/apps/acls/locale/bs_BA/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/acls/locale/bs_BA/LC_MESSAGES/django.po b/mayan/apps/acls/locale/bs_BA/LC_MESSAGES/django.po index 339db6d97b..9acd289255 100644 --- a/mayan/apps/acls/locale/bs_BA/LC_MESSAGES/django.po +++ b/mayan/apps/acls/locale/bs_BA/LC_MESSAGES/django.po @@ -4,235 +4,217 @@ # # Translators: # Translators: -# www.ping.ba , 2013 msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2015-05-15 18:59-0400\n" -"PO-Revision-Date: 2014-10-25 06:47+0000\n" +"POT-Creation-Date: 2015-09-24 16:24-0400\n" +"PO-Revision-Date: 2015-09-24 05:15+0000\n" "Last-Translator: Roberto Rosario\n" -"Language-Team: Bosnian (Bosnia and Herzegovina) (http://www.transifex.com/projects/p/mayan-edms/language/bs_BA/)\n" +"Language-Team: Bosnian (Bosnia and Herzegovina) (http://www.transifex.com/rosarior/mayan-edms/language/bs_BA/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: bs_BA\n" "Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" -#: forms.py:25 links.py:13 links.py:19 -msgid "New holder" -msgstr "Novi posjednik" - -#: forms.py:42 -msgid "Users" -msgstr "Korisnici" - -#: forms.py:45 -msgid "Groups" -msgstr "Grupe" - -#: forms.py:48 -msgid "Roles" -msgstr "Role" - -#: forms.py:51 -msgid "Special" -msgstr "Posebno" - -#: links.py:9 +#: apps.py:14 links.py:30 msgid "ACLs" -msgstr "ACLs" - -#: links.py:10 links.py:18 -msgid "Details" msgstr "" -#: links.py:11 links.py:20 -msgid "Grant" +#: apps.py:20 links.py:38 models.py:36 +msgid "Permissions" msgstr "" -#: links.py:12 links.py:21 -msgid "Revoke" +#: apps.py:24 models.py:38 +#| msgid "Roles" +msgid "Role" msgstr "" -#: links.py:15 -msgid "Default ACLs" -msgstr "Difoltne ACLs" - -#: links.py:16 views.py:379 -msgid "Classes" +#: links.py:26 +msgid "Delete" msgstr "" -#: links.py:17 -msgid "ACLs for class" -msgstr "ACLs za klasu" +#: links.py:34 +#| msgid "View ACLs" +msgid "New ACL" +msgstr "" -#: managers.py:118 managers.py:130 +#: managers.py:72 msgid "Insufficient access." -msgstr "Nedovoljne dozvole." - -#: models.py:25 models.py:67 -msgid "Permission" msgstr "" -#: models.py:51 +#: models.py:44 msgid "Access entry" msgstr "" -#: models.py:52 +#: models.py:45 msgid "Access entries" msgstr "" -#: models.py:88 -msgid "Default access entry" +#: models.py:60 +msgid "None" msgstr "" -#: models.py:89 -msgid "Default access entries" -msgstr "" - -#: models.py:108 models.py:111 models.py:112 -msgid "Creator" -msgstr "Kreator" - -#: permissions.py:7 permissions.py:8 +#: permissions.py:7 msgid "Access control lists" -msgstr "Liste kontrole pristupa (ACLs)" +msgstr "" #: permissions.py:10 msgid "Edit ACLs" -msgstr "Izmjeniti ACLs" - -#: permissions.py:11 -msgid "View ACLs" -msgstr "Pregledati ACLs" +msgstr "" #: permissions.py:13 -msgid "Edit class default ACLs" -msgstr "Izmjeniti difoltne ACLs klase" +msgid "View ACLs" +msgstr "" -#: permissions.py:14 -msgid "View class default ACLs" -msgstr "Pregledati difoltne ACLs klase" - -#: views.py:48 +#: views.py:61 #, python-format msgid "Access control lists for: %s" msgstr "" -#: views.py:50 views.py:402 -msgid "Holder" +#: views.py:107 +#, python-format +msgid "New access control lists for: %s" msgstr "" -#: views.py:51 views.py:403 -msgid "Permissions" +#: views.py:132 +#, python-format +#| msgid "Default ACLs" +msgid "Delete ACL: %s" msgstr "" -#: views.py:98 -#, python-format -msgid "Permissions available to: %(actor)s for %(obj)s" +#: views.py:147 +msgid "Available permissions" msgstr "" -#: views.py:105 views.py:434 -msgid "Namespace" +#: views.py:148 +msgid "Granted permissions" msgstr "" -#: views.py:106 views.py:435 -msgid "Label" +#: views.py:187 +msgid "Disabled permissions are inherited from a parent object." msgstr "" -#: views.py:108 views.py:437 -msgid "Has permission" +#: views.py:218 +#, python-format +msgid "Role \"%(role)s\" permission's for \"%(object)s\"" msgstr "" -#: views.py:181 views.py:272 views.py:516 views.py:593 -msgid ", " -msgstr ", " +#~ msgid "New holder" +#~ msgstr "New holder" -#: views.py:182 views.py:273 views.py:517 views.py:594 -#, python-format -msgid " for %s" -msgstr " za %s" +#~ msgid "Users" +#~ msgstr "Users" -#: views.py:183 views.py:518 -#, python-format -msgid " to %s" -msgstr " prema %s" +#~ msgid "Groups" +#~ msgstr "Groups" -#: views.py:186 views.py:521 -#, python-format -msgid "Are you sure you wish to grant the permission %(title_suffix)s?" -msgstr "Jeste li sigurni da želite odobriti dozvolu %(title_suffix)s?" +#~ msgid "Special" +#~ msgstr "Special" -#: views.py:188 views.py:523 -#, python-format -msgid "Are you sure you wish to grant the permissions %(title_suffix)s?" -msgstr "Jeste li sigurni da želite odobriti dozvole %(title_suffix)s?" +#~ msgid "Details" +#~ msgstr "details" -#: views.py:195 views.py:530 -#, python-format -msgid "Permission \"%(permission)s\" granted to %(actor)s for %(object)s." -msgstr "Dozvola \"%(permission)s\" odobrena za %(actor)s prema %(object)s." +#~ msgid "Grant" +#~ msgstr "grant" -#: views.py:201 views.py:536 -#, python-format -msgid "" -"%(actor)s, already had the permission \"%(permission)s\" granted for " -"%(object)s." -msgstr "%(actor)s, već ima dozvolu \"%(permission)s\" prema %(object)s." +#~ msgid "Revoke" +#~ msgstr "revoke" -#: views.py:274 views.py:595 -#, python-format -msgid " from %s" -msgstr " od %s" +#~ msgid "Classes" +#~ msgstr "classes" -#: views.py:277 views.py:598 -#, python-format -msgid "Are you sure you wish to revoke the permission %(title_suffix)s?" -msgstr "Jeste li sigurni da želite ukinuti dozvolu %(title_suffix)s?" +#~ msgid "ACLs for class" +#~ msgstr "ACLs for class" -#: views.py:279 views.py:600 -#, python-format -msgid "Are you sure you wish to revoke the permissions %(title_suffix)s?" -msgstr "Jeste li sigurni da želite ukinuti dozvole %(title_suffix)s?" +#~ msgid "Permission" +#~ msgstr "permissions" -#: views.py:286 views.py:607 -#, python-format -msgid "Permission \"%(permission)s\" revoked of %(actor)s for %(object)s." -msgstr "Dozvola \"%(permission)s\" povučena za %(actor)s prema %(object)s." +#~ msgid "Default access entry" +#~ msgstr "default access entry" -#: views.py:292 views.py:613 -#, python-format -msgid "%(actor)s, didn't had the permission \"%(permission)s\" for %(object)s." -msgstr "%(actor)s, nije imao/la dozvolu \"%(permission)s\" prema %(object)s." +#~ msgid "Default access entries" +#~ msgstr "default access entries" -#: views.py:346 -#, python-format -msgid "Add new holder for: %s" -msgstr "" +#~ msgid "Creator" +#~ msgstr "Creator" -#: views.py:347 views.py:477 -msgid "Select" -msgstr "Odabrati" +#~ msgid "Edit class default ACLs" +#~ msgstr "Edit class default ACLs" -#: views.py:381 -msgid "Class" -msgstr "" +#~ msgid "View class default ACLs" +#~ msgstr "View class default ACLs" -#: views.py:400 -#, python-format -msgid "Default access control lists for class: %s" -msgstr "" +#~ msgid "Holder" +#~ msgstr "holder" -#: views.py:428 -#, python-format -msgid "Permissions available to: %(actor)s for class %(class)s" -msgstr "" +#~ msgid "Permissions available to: %(actor)s for %(obj)s" +#~ msgstr "permissions available to: %(actor)s for %(obj)s" -#: views.py:475 -#, python-format -msgid "Add new holder for class: %s" -msgstr "" +#~ msgid "Namespace" +#~ msgstr "namespace" + +#~ msgid "Label" +#~ msgstr "label" + +#~ msgid ", " +#~ msgstr ", " + +#~ msgid " for %s" +#~ msgstr " for %s" + +#~ msgid " to %s" +#~ msgstr " to %s" + +#~ msgid "Are you sure you wish to grant the permission %(title_suffix)s?" +#~ msgstr "Are you sure you wish to grant the permission %(title_suffix)s?" + +#~ msgid "Are you sure you wish to grant the permissions %(title_suffix)s?" +#~ msgstr "Are you sure you wish to grant the permissions %(title_suffix)s?" + +#~ msgid "Permission \"%(permission)s\" granted to %(actor)s for %(object)s." +#~ msgstr "Permission \"%(permission)s\" granted to %(actor)s for %(object)s." + +#~ msgid "" +#~ "%(actor)s, already had the permission \"%(permission)s\" granted for " +#~ "%(object)s." +#~ msgstr "" +#~ "%(actor)s, already had the permission \"%(permission)s\" granted for " +#~ "%(object)s." + +#~ msgid " from %s" +#~ msgstr " from %s" + +#~ msgid "Are you sure you wish to revoke the permission %(title_suffix)s?" +#~ msgstr "Are you sure you wish to revoke the permission %(title_suffix)s?" + +#~ msgid "Are you sure you wish to revoke the permissions %(title_suffix)s?" +#~ msgstr "Are you sure you wish to revoke the permissions %(title_suffix)s?" + +#~ msgid "Permission \"%(permission)s\" revoked of %(actor)s for %(object)s." +#~ msgstr "Permission \"%(permission)s\" revoked of %(actor)s for %(object)s." + +#~ msgid "%(actor)s, didn't had the permission \"%(permission)s\" for %(object)s." +#~ msgstr "%(actor)s, didn't had the permission \"%(permission)s\" for %(object)s." + +#~ msgid "Add new holder for: %s" +#~ msgstr "add new holder for: %s" + +#~ msgid "Select" +#~ msgstr "Select" + +#~ msgid "Class" +#~ msgstr "class" + +#~ msgid "Default access control lists for class: %s" +#~ msgstr "default access control lists for class: %s" + +#~ msgid "Permissions available to: %(actor)s for class %(class)s" +#~ msgstr "permissions available to: %(actor)s for class %(class)s" + +#~ msgid "Add new holder for class: %s" +#~ msgstr "add new holder for class: %s" #~ msgid "List of classes" #~ msgstr "List of classes" diff --git a/mayan/apps/acls/locale/da/LC_MESSAGES/django.mo b/mayan/apps/acls/locale/da/LC_MESSAGES/django.mo index 718d9eecef..9c315bdfda 100644 Binary files a/mayan/apps/acls/locale/da/LC_MESSAGES/django.mo and b/mayan/apps/acls/locale/da/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/acls/locale/da/LC_MESSAGES/django.po b/mayan/apps/acls/locale/da/LC_MESSAGES/django.po index c6c86477ee..f9917a6839 100644 --- a/mayan/apps/acls/locale/da/LC_MESSAGES/django.po +++ b/mayan/apps/acls/locale/da/LC_MESSAGES/django.po @@ -8,93 +8,55 @@ msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2015-05-15 18:59-0400\n" -"PO-Revision-Date: 2014-10-25 06:47+0000\n" +"POT-Creation-Date: 2015-09-24 16:24-0400\n" +"PO-Revision-Date: 2015-09-24 05:15+0000\n" "Last-Translator: Roberto Rosario\n" -"Language-Team: Danish (http://www.transifex.com/projects/p/mayan-edms/language/da/)\n" +"Language-Team: Danish (http://www.transifex.com/rosarior/mayan-edms/language/da/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: da\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: forms.py:25 links.py:13 links.py:19 -msgid "New holder" -msgstr "" - -#: forms.py:42 -msgid "Users" -msgstr "" - -#: forms.py:45 -msgid "Groups" -msgstr "" - -#: forms.py:48 -msgid "Roles" -msgstr "" - -#: forms.py:51 -msgid "Special" -msgstr "" - -#: links.py:9 +#: apps.py:14 links.py:30 msgid "ACLs" msgstr "" -#: links.py:10 links.py:18 -msgid "Details" +#: apps.py:20 links.py:38 models.py:36 +msgid "Permissions" msgstr "" -#: links.py:11 links.py:20 -msgid "Grant" +#: apps.py:24 models.py:38 +#| msgid "Roles" +msgid "Role" msgstr "" -#: links.py:12 links.py:21 -msgid "Revoke" +#: links.py:26 +msgid "Delete" msgstr "" -#: links.py:15 -msgid "Default ACLs" +#: links.py:34 +#| msgid "View ACLs" +msgid "New ACL" msgstr "" -#: links.py:16 views.py:379 -msgid "Classes" -msgstr "" - -#: links.py:17 -msgid "ACLs for class" -msgstr "" - -#: managers.py:118 managers.py:130 +#: managers.py:72 msgid "Insufficient access." msgstr "" -#: models.py:25 models.py:67 -msgid "Permission" -msgstr "" - -#: models.py:51 +#: models.py:44 msgid "Access entry" msgstr "" -#: models.py:52 +#: models.py:45 msgid "Access entries" msgstr "" -#: models.py:88 -msgid "Default access entry" +#: models.py:60 +msgid "None" msgstr "" -#: models.py:89 -msgid "Default access entries" -msgstr "" - -#: models.py:108 models.py:111 models.py:112 -msgid "Creator" -msgstr "" - -#: permissions.py:7 permissions.py:8 +#: permissions.py:7 msgid "Access control lists" msgstr "" @@ -102,136 +64,157 @@ msgstr "" msgid "Edit ACLs" msgstr "" -#: permissions.py:11 +#: permissions.py:13 msgid "View ACLs" msgstr "" -#: permissions.py:13 -msgid "Edit class default ACLs" -msgstr "" - -#: permissions.py:14 -msgid "View class default ACLs" -msgstr "" - -#: views.py:48 +#: views.py:61 #, python-format msgid "Access control lists for: %s" msgstr "" -#: views.py:50 views.py:402 -msgid "Holder" -msgstr "" - -#: views.py:51 views.py:403 -msgid "Permissions" -msgstr "" - -#: views.py:98 +#: views.py:107 #, python-format -msgid "Permissions available to: %(actor)s for %(obj)s" +msgid "New access control lists for: %s" msgstr "" -#: views.py:105 views.py:434 -msgid "Namespace" -msgstr "" - -#: views.py:106 views.py:435 -msgid "Label" -msgstr "" - -#: views.py:108 views.py:437 -msgid "Has permission" -msgstr "" - -#: views.py:181 views.py:272 views.py:516 views.py:593 -msgid ", " -msgstr "" - -#: views.py:182 views.py:273 views.py:517 views.py:594 +#: views.py:132 #, python-format -msgid " for %s" +#| msgid "Default ACLs" +msgid "Delete ACL: %s" msgstr "" -#: views.py:183 views.py:518 +#: views.py:147 +msgid "Available permissions" +msgstr "" + +#: views.py:148 +msgid "Granted permissions" +msgstr "" + +#: views.py:187 +msgid "Disabled permissions are inherited from a parent object." +msgstr "" + +#: views.py:218 #, python-format -msgid " to %s" +msgid "Role \"%(role)s\" permission's for \"%(object)s\"" msgstr "" -#: views.py:186 views.py:521 -#, python-format -msgid "Are you sure you wish to grant the permission %(title_suffix)s?" -msgstr "" +#~ msgid "New holder" +#~ msgstr "New holder" -#: views.py:188 views.py:523 -#, python-format -msgid "Are you sure you wish to grant the permissions %(title_suffix)s?" -msgstr "" +#~ msgid "Users" +#~ msgstr "Users" -#: views.py:195 views.py:530 -#, python-format -msgid "Permission \"%(permission)s\" granted to %(actor)s for %(object)s." -msgstr "" +#~ msgid "Groups" +#~ msgstr "Groups" -#: views.py:201 views.py:536 -#, python-format -msgid "" -"%(actor)s, already had the permission \"%(permission)s\" granted for " -"%(object)s." -msgstr "" +#~ msgid "Special" +#~ msgstr "Special" -#: views.py:274 views.py:595 -#, python-format -msgid " from %s" -msgstr "" +#~ msgid "Details" +#~ msgstr "details" -#: views.py:277 views.py:598 -#, python-format -msgid "Are you sure you wish to revoke the permission %(title_suffix)s?" -msgstr "" +#~ msgid "Grant" +#~ msgstr "grant" -#: views.py:279 views.py:600 -#, python-format -msgid "Are you sure you wish to revoke the permissions %(title_suffix)s?" -msgstr "" +#~ msgid "Revoke" +#~ msgstr "revoke" -#: views.py:286 views.py:607 -#, python-format -msgid "Permission \"%(permission)s\" revoked of %(actor)s for %(object)s." -msgstr "" +#~ msgid "Classes" +#~ msgstr "classes" -#: views.py:292 views.py:613 -#, python-format -msgid "%(actor)s, didn't had the permission \"%(permission)s\" for %(object)s." -msgstr "" +#~ msgid "ACLs for class" +#~ msgstr "ACLs for class" -#: views.py:346 -#, python-format -msgid "Add new holder for: %s" -msgstr "" +#~ msgid "Permission" +#~ msgstr "permissions" -#: views.py:347 views.py:477 -msgid "Select" -msgstr "" +#~ msgid "Default access entry" +#~ msgstr "default access entry" -#: views.py:381 -msgid "Class" -msgstr "" +#~ msgid "Default access entries" +#~ msgstr "default access entries" -#: views.py:400 -#, python-format -msgid "Default access control lists for class: %s" -msgstr "" +#~ msgid "Creator" +#~ msgstr "Creator" -#: views.py:428 -#, python-format -msgid "Permissions available to: %(actor)s for class %(class)s" -msgstr "" +#~ msgid "Edit class default ACLs" +#~ msgstr "Edit class default ACLs" -#: views.py:475 -#, python-format -msgid "Add new holder for class: %s" -msgstr "" +#~ msgid "View class default ACLs" +#~ msgstr "View class default ACLs" + +#~ msgid "Holder" +#~ msgstr "holder" + +#~ msgid "Permissions available to: %(actor)s for %(obj)s" +#~ msgstr "permissions available to: %(actor)s for %(obj)s" + +#~ msgid "Namespace" +#~ msgstr "namespace" + +#~ msgid "Label" +#~ msgstr "label" + +#~ msgid ", " +#~ msgstr ", " + +#~ msgid " for %s" +#~ msgstr " for %s" + +#~ msgid " to %s" +#~ msgstr " to %s" + +#~ msgid "Are you sure you wish to grant the permission %(title_suffix)s?" +#~ msgstr "Are you sure you wish to grant the permission %(title_suffix)s?" + +#~ msgid "Are you sure you wish to grant the permissions %(title_suffix)s?" +#~ msgstr "Are you sure you wish to grant the permissions %(title_suffix)s?" + +#~ msgid "Permission \"%(permission)s\" granted to %(actor)s for %(object)s." +#~ msgstr "Permission \"%(permission)s\" granted to %(actor)s for %(object)s." + +#~ msgid "" +#~ "%(actor)s, already had the permission \"%(permission)s\" granted for " +#~ "%(object)s." +#~ msgstr "" +#~ "%(actor)s, already had the permission \"%(permission)s\" granted for " +#~ "%(object)s." + +#~ msgid " from %s" +#~ msgstr " from %s" + +#~ msgid "Are you sure you wish to revoke the permission %(title_suffix)s?" +#~ msgstr "Are you sure you wish to revoke the permission %(title_suffix)s?" + +#~ msgid "Are you sure you wish to revoke the permissions %(title_suffix)s?" +#~ msgstr "Are you sure you wish to revoke the permissions %(title_suffix)s?" + +#~ msgid "Permission \"%(permission)s\" revoked of %(actor)s for %(object)s." +#~ msgstr "Permission \"%(permission)s\" revoked of %(actor)s for %(object)s." + +#~ msgid "%(actor)s, didn't had the permission \"%(permission)s\" for %(object)s." +#~ msgstr "%(actor)s, didn't had the permission \"%(permission)s\" for %(object)s." + +#~ msgid "Add new holder for: %s" +#~ msgstr "add new holder for: %s" + +#~ msgid "Select" +#~ msgstr "Select" + +#~ msgid "Class" +#~ msgstr "class" + +#~ msgid "Default access control lists for class: %s" +#~ msgstr "default access control lists for class: %s" + +#~ msgid "Permissions available to: %(actor)s for class %(class)s" +#~ msgstr "permissions available to: %(actor)s for class %(class)s" + +#~ msgid "Add new holder for class: %s" +#~ msgstr "add new holder for class: %s" #~ msgid "List of classes" #~ msgstr "List of classes" diff --git a/mayan/apps/acls/locale/de_CH/LC_MESSAGES/django.mo b/mayan/apps/acls/locale/de_CH/LC_MESSAGES/django.mo deleted file mode 100644 index 93892d918f..0000000000 Binary files a/mayan/apps/acls/locale/de_CH/LC_MESSAGES/django.mo and /dev/null differ diff --git a/mayan/apps/acls/locale/de_CH/LC_MESSAGES/django.po b/mayan/apps/acls/locale/de_CH/LC_MESSAGES/django.po deleted file mode 100644 index 610bef10a3..0000000000 --- a/mayan/apps/acls/locale/de_CH/LC_MESSAGES/django.po +++ /dev/null @@ -1,244 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -# Translators: -msgid "" -msgstr "" -"Project-Id-Version: Mayan EDMS\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2015-05-15 18:59-0400\n" -"PO-Revision-Date: 2014-10-25 06:47+0000\n" -"Last-Translator: Roberto Rosario\n" -"Language-Team: German (Switzerland) (http://www.transifex.com/projects/p/" -"mayan-edms/language/de_CH/)\n" -"Language: de_CH\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" - -#: forms.py:25 links.py:13 links.py:19 -msgid "New holder" -msgstr "" - -#: forms.py:42 -msgid "Users" -msgstr "" - -#: forms.py:45 -msgid "Groups" -msgstr "" - -#: forms.py:48 -msgid "Roles" -msgstr "" - -#: forms.py:51 -msgid "Special" -msgstr "" - -#: links.py:9 -msgid "ACLs" -msgstr "" - -#: links.py:10 links.py:18 -msgid "Details" -msgstr "" - -#: links.py:11 links.py:20 -msgid "Grant" -msgstr "" - -#: links.py:12 links.py:21 -msgid "Revoke" -msgstr "" - -#: links.py:15 -msgid "Default ACLs" -msgstr "" - -#: links.py:16 views.py:379 -msgid "Classes" -msgstr "" - -#: links.py:17 -msgid "ACLs for class" -msgstr "" - -#: managers.py:118 managers.py:130 -msgid "Insufficient access." -msgstr "" - -#: models.py:25 models.py:67 -msgid "Permission" -msgstr "" - -#: models.py:51 -msgid "Access entry" -msgstr "" - -#: models.py:52 -msgid "Access entries" -msgstr "" - -#: models.py:88 -msgid "Default access entry" -msgstr "" - -#: models.py:89 -msgid "Default access entries" -msgstr "" - -#: models.py:108 models.py:111 models.py:112 -msgid "Creator" -msgstr "" - -#: permissions.py:7 permissions.py:8 -msgid "Access control lists" -msgstr "" - -#: permissions.py:10 -msgid "Edit ACLs" -msgstr "" - -#: permissions.py:11 -msgid "View ACLs" -msgstr "" - -#: permissions.py:13 -msgid "Edit class default ACLs" -msgstr "" - -#: permissions.py:14 -msgid "View class default ACLs" -msgstr "" - -#: views.py:48 -#, python-format -msgid "Access control lists for: %s" -msgstr "" - -#: views.py:50 views.py:402 -msgid "Holder" -msgstr "" - -#: views.py:51 views.py:403 -msgid "Permissions" -msgstr "" - -#: views.py:98 -#, python-format -msgid "Permissions available to: %(actor)s for %(obj)s" -msgstr "" - -#: views.py:105 views.py:434 -msgid "Namespace" -msgstr "" - -#: views.py:106 views.py:435 -msgid "Label" -msgstr "" - -#: views.py:108 views.py:437 -msgid "Has permission" -msgstr "" - -#: views.py:181 views.py:272 views.py:516 views.py:593 -msgid ", " -msgstr "" - -#: views.py:182 views.py:273 views.py:517 views.py:594 -#, python-format -msgid " for %s" -msgstr "" - -#: views.py:183 views.py:518 -#, python-format -msgid " to %s" -msgstr "" - -#: views.py:186 views.py:521 -#, python-format -msgid "Are you sure you wish to grant the permission %(title_suffix)s?" -msgstr "" - -#: views.py:188 views.py:523 -#, python-format -msgid "Are you sure you wish to grant the permissions %(title_suffix)s?" -msgstr "" - -#: views.py:195 views.py:530 -#, python-format -msgid "Permission \"%(permission)s\" granted to %(actor)s for %(object)s." -msgstr "" - -#: views.py:201 views.py:536 -#, python-format -msgid "" -"%(actor)s, already had the permission \"%(permission)s\" granted for " -"%(object)s." -msgstr "" - -#: views.py:274 views.py:595 -#, python-format -msgid " from %s" -msgstr "" - -#: views.py:277 views.py:598 -#, python-format -msgid "Are you sure you wish to revoke the permission %(title_suffix)s?" -msgstr "" - -#: views.py:279 views.py:600 -#, python-format -msgid "Are you sure you wish to revoke the permissions %(title_suffix)s?" -msgstr "" - -#: views.py:286 views.py:607 -#, python-format -msgid "Permission \"%(permission)s\" revoked of %(actor)s for %(object)s." -msgstr "" - -#: views.py:292 views.py:613 -#, python-format -msgid "%(actor)s, didn't had the permission \"%(permission)s\" for %(object)s." -msgstr "" - -#: views.py:346 -#, python-format -msgid "Add new holder for: %s" -msgstr "" - -#: views.py:347 views.py:477 -msgid "Select" -msgstr "" - -#: views.py:381 -msgid "Class" -msgstr "" - -#: views.py:400 -#, python-format -msgid "Default access control lists for class: %s" -msgstr "" - -#: views.py:428 -#, python-format -msgid "Permissions available to: %(actor)s for class %(class)s" -msgstr "" - -#: views.py:475 -#, python-format -msgid "Add new holder for class: %s" -msgstr "" - -#~ msgid "List of classes" -#~ msgstr "List of classes" - -#~ msgid "permission" -#~ msgstr "permission" - -#~ msgid "creator" -#~ msgstr "creator" diff --git a/mayan/apps/acls/locale/de_DE/LC_MESSAGES/django.mo b/mayan/apps/acls/locale/de_DE/LC_MESSAGES/django.mo index 9e2e031d7a..0d0b1d44a4 100644 Binary files a/mayan/apps/acls/locale/de_DE/LC_MESSAGES/django.mo and b/mayan/apps/acls/locale/de_DE/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/acls/locale/de_DE/LC_MESSAGES/django.po b/mayan/apps/acls/locale/de_DE/LC_MESSAGES/django.po index 150f1b1a9e..97730fedf3 100644 --- a/mayan/apps/acls/locale/de_DE/LC_MESSAGES/django.po +++ b/mayan/apps/acls/locale/de_DE/LC_MESSAGES/django.po @@ -4,104 +4,60 @@ # # Translators: # Translators: -# Stefan Lodders , 2012 -# Mathias Behrle , 2014 -# Stefan Lodders , 2012 -# Stefan Lodders , 2012 -# tilmannsittig , 2012 -# tilmannsittig , 2012 -# Tobias Paepke , 2014 +# Berny , 2015 msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2015-05-15 18:59-0400\n" -"PO-Revision-Date: 2015-02-06 23:55+0000\n" -"Last-Translator: Mathias Behrle \n" -"Language-Team: German (Germany) (http://www.transifex.com/projects/p/mayan-edms/language/de_DE/)\n" +"POT-Creation-Date: 2015-09-24 16:24-0400\n" +"PO-Revision-Date: 2015-09-24 17:20+0000\n" +"Last-Translator: Berny \n" +"Language-Team: German (Germany) (http://www.transifex.com/rosarior/mayan-edms/language/de_DE/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: de_DE\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: forms.py:25 links.py:13 links.py:19 -msgid "New holder" -msgstr "Neue Berechtigung" - -#: forms.py:42 -msgid "Users" -msgstr "Benutzer" - -#: forms.py:45 -msgid "Groups" -msgstr "Gruppen" - -#: forms.py:48 -msgid "Roles" -msgstr "Rollen" - -#: forms.py:51 -msgid "Special" -msgstr "Spezial" - -#: links.py:9 +#: apps.py:14 links.py:30 msgid "ACLs" msgstr "Zugriffsberechtigungen" -#: links.py:10 links.py:18 -msgid "Details" -msgstr "Details" +#: apps.py:20 links.py:38 models.py:36 +msgid "Permissions" +msgstr "Berechtigungen" -#: links.py:11 links.py:20 -msgid "Grant" -msgstr "Erteilen" +#: apps.py:24 models.py:38 +#| msgid "Roles" +msgid "Role" +msgstr "Rolle" -#: links.py:12 links.py:21 -msgid "Revoke" -msgstr "Widerrufen" +#: links.py:26 +msgid "Delete" +msgstr "Löschen" -#: links.py:15 -msgid "Default ACLs" -msgstr "Standardzugriffsberechtigungen" +#: links.py:34 +#| msgid "View ACLs" +msgid "New ACL" +msgstr "Neue Berechtigung" -#: links.py:16 views.py:379 -msgid "Classes" -msgstr "Klassen" - -#: links.py:17 -msgid "ACLs for class" -msgstr "Zugriffsberechtigungen für Klasse" - -#: managers.py:118 managers.py:130 +#: managers.py:72 msgid "Insufficient access." -msgstr "Keine Zugriffsberechtigung" +msgstr "Fehlende Berechtigung" -#: models.py:25 models.py:67 -msgid "Permission" -msgstr "Berechtigung" - -#: models.py:51 +#: models.py:44 msgid "Access entry" -msgstr "Zugriffsberechtigung" +msgstr "Berechtigungseintrag" -#: models.py:52 +#: models.py:45 msgid "Access entries" -msgstr "Zugriffsberechtigungen" +msgstr "Berechtigungseinträge" -#: models.py:88 -msgid "Default access entry" -msgstr "Standardzugriffsberechtigung" +#: models.py:60 +msgid "None" +msgstr "Keine" -#: models.py:89 -msgid "Default access entries" -msgstr "Standardzugriffsberechtigungen" - -#: models.py:108 models.py:111 models.py:112 -msgid "Creator" -msgstr "Ersteller" - -#: permissions.py:7 permissions.py:8 +#: permissions.py:7 msgid "Access control lists" msgstr "Zugriffsberechtigungen" @@ -109,136 +65,157 @@ msgstr "Zugriffsberechtigungen" msgid "Edit ACLs" msgstr "Zugriffsberechtigungen bearbeiten" -#: permissions.py:11 +#: permissions.py:13 msgid "View ACLs" msgstr "Zugriffsberechtigungen anzeigen" -#: permissions.py:13 -msgid "Edit class default ACLs" -msgstr "Zugriffsberechtigungen der Klasse bearbeiten" - -#: permissions.py:14 -msgid "View class default ACLs" -msgstr "Zugriffsberechtigungen der Klasse anzeigen" - -#: views.py:48 +#: views.py:61 #, python-format msgid "Access control lists for: %s" -msgstr "Zugriffsberechtigungen für: %s" +msgstr "Zugriffsberechtigungen für %s" -#: views.py:50 views.py:402 -msgid "Holder" -msgstr "Berechtigter" - -#: views.py:51 views.py:403 -msgid "Permissions" -msgstr "Berechtigungen" - -#: views.py:98 +#: views.py:107 #, python-format -msgid "Permissions available to: %(actor)s for %(obj)s" -msgstr "Berechtigungen von %(actor)s für %(obj)s" +msgid "New access control lists for: %s" +msgstr "Neue Zugriffsberechtigung für %s" -#: views.py:105 views.py:434 -msgid "Namespace" -msgstr "Namensraum" - -#: views.py:106 views.py:435 -msgid "Label" -msgstr "Bezeichnung" - -#: views.py:108 views.py:437 -msgid "Has permission" -msgstr "Berechtigt" - -#: views.py:181 views.py:272 views.py:516 views.py:593 -msgid ", " -msgstr "," - -#: views.py:182 views.py:273 views.py:517 views.py:594 +#: views.py:132 #, python-format -msgid " for %s" -msgstr "für %s" +#| msgid "Default ACLs" +msgid "Delete ACL: %s" +msgstr "ACL \"%s\" löschen" -#: views.py:183 views.py:518 +#: views.py:147 +msgid "Available permissions" +msgstr "Verfügbare Berechtigungen" + +#: views.py:148 +msgid "Granted permissions" +msgstr "Erteilte Berechtigungen" + +#: views.py:187 +msgid "Disabled permissions are inherited from a parent object." +msgstr "Deaktivierte Berechtigungen sind von einem übergeordneten Objekt vererbt." + +#: views.py:218 #, python-format -msgid " to %s" -msgstr "an %s" +msgid "Role \"%(role)s\" permission's for \"%(object)s\"" +msgstr "Berechtigungen von Rolle \"%(role)s\" für \"%(object)s\"" -#: views.py:186 views.py:521 -#, python-format -msgid "Are you sure you wish to grant the permission %(title_suffix)s?" -msgstr "Sind Sie sicher, dass Sie die Berechtigung %(title_suffix)s erteilen möchten?" +#~ msgid "New holder" +#~ msgstr "New holder" -#: views.py:188 views.py:523 -#, python-format -msgid "Are you sure you wish to grant the permissions %(title_suffix)s?" -msgstr "Sind Sie sicher, dass Sie die Berechtigungen %(title_suffix)s erteilen möchten?" +#~ msgid "Users" +#~ msgstr "Users" -#: views.py:195 views.py:530 -#, python-format -msgid "Permission \"%(permission)s\" granted to %(actor)s for %(object)s." -msgstr "Berechtigung \"%(permission)s\" erteilt an %(actor)s für %(object)s." +#~ msgid "Groups" +#~ msgstr "Groups" -#: views.py:201 views.py:536 -#, python-format -msgid "" -"%(actor)s, already had the permission \"%(permission)s\" granted for " -"%(object)s." -msgstr "%(actor)s verfügt bereits über die Berechtigung \"%(permission)s an %(object)s." +#~ msgid "Special" +#~ msgstr "Special" -#: views.py:274 views.py:595 -#, python-format -msgid " from %s" -msgstr "von %s" +#~ msgid "Details" +#~ msgstr "details" -#: views.py:277 views.py:598 -#, python-format -msgid "Are you sure you wish to revoke the permission %(title_suffix)s?" -msgstr "Sind Sie sicher, dass Sie die Berechtigung %(title_suffix)s widerrufen möchten?" +#~ msgid "Grant" +#~ msgstr "grant" -#: views.py:279 views.py:600 -#, python-format -msgid "Are you sure you wish to revoke the permissions %(title_suffix)s?" -msgstr "Sind Sie sicher, dass Sie die Berechtigungen %(title_suffix)s widerrufen möchten?" +#~ msgid "Revoke" +#~ msgstr "revoke" -#: views.py:286 views.py:607 -#, python-format -msgid "Permission \"%(permission)s\" revoked of %(actor)s for %(object)s." -msgstr "Berechtigung \"%(permission)s\" von %(actor)s für %(object)s widerrufen." +#~ msgid "Classes" +#~ msgstr "classes" -#: views.py:292 views.py:613 -#, python-format -msgid "%(actor)s, didn't had the permission \"%(permission)s\" for %(object)s." -msgstr "%(actor)s verfügte nicht über Berechtigung \"%(permission)s\" für %(object)s." +#~ msgid "ACLs for class" +#~ msgstr "ACLs for class" -#: views.py:346 -#, python-format -msgid "Add new holder for: %s" -msgstr "Neue Berechtigung für %s erstellen" +#~ msgid "Permission" +#~ msgstr "permissions" -#: views.py:347 views.py:477 -msgid "Select" -msgstr "Auswählen" +#~ msgid "Default access entry" +#~ msgstr "default access entry" -#: views.py:381 -msgid "Class" -msgstr "Klasse" +#~ msgid "Default access entries" +#~ msgstr "default access entries" -#: views.py:400 -#, python-format -msgid "Default access control lists for class: %s" -msgstr "Standardberechtigungen für Klasse %s" +#~ msgid "Creator" +#~ msgstr "Creator" -#: views.py:428 -#, python-format -msgid "Permissions available to: %(actor)s for class %(class)s" -msgstr "Berechtigungen von %(actor)s für Klasse %(class)s" +#~ msgid "Edit class default ACLs" +#~ msgstr "Edit class default ACLs" -#: views.py:475 -#, python-format -msgid "Add new holder for class: %s" -msgstr "Neue Berechtigung für Klasse %s erstellen" +#~ msgid "View class default ACLs" +#~ msgstr "View class default ACLs" + +#~ msgid "Holder" +#~ msgstr "holder" + +#~ msgid "Permissions available to: %(actor)s for %(obj)s" +#~ msgstr "permissions available to: %(actor)s for %(obj)s" + +#~ msgid "Namespace" +#~ msgstr "namespace" + +#~ msgid "Label" +#~ msgstr "label" + +#~ msgid ", " +#~ msgstr ", " + +#~ msgid " for %s" +#~ msgstr " for %s" + +#~ msgid " to %s" +#~ msgstr " to %s" + +#~ msgid "Are you sure you wish to grant the permission %(title_suffix)s?" +#~ msgstr "Are you sure you wish to grant the permission %(title_suffix)s?" + +#~ msgid "Are you sure you wish to grant the permissions %(title_suffix)s?" +#~ msgstr "Are you sure you wish to grant the permissions %(title_suffix)s?" + +#~ msgid "Permission \"%(permission)s\" granted to %(actor)s for %(object)s." +#~ msgstr "Permission \"%(permission)s\" granted to %(actor)s for %(object)s." + +#~ msgid "" +#~ "%(actor)s, already had the permission \"%(permission)s\" granted for " +#~ "%(object)s." +#~ msgstr "" +#~ "%(actor)s, already had the permission \"%(permission)s\" granted for " +#~ "%(object)s." + +#~ msgid " from %s" +#~ msgstr " from %s" + +#~ msgid "Are you sure you wish to revoke the permission %(title_suffix)s?" +#~ msgstr "Are you sure you wish to revoke the permission %(title_suffix)s?" + +#~ msgid "Are you sure you wish to revoke the permissions %(title_suffix)s?" +#~ msgstr "Are you sure you wish to revoke the permissions %(title_suffix)s?" + +#~ msgid "Permission \"%(permission)s\" revoked of %(actor)s for %(object)s." +#~ msgstr "Permission \"%(permission)s\" revoked of %(actor)s for %(object)s." + +#~ msgid "%(actor)s, didn't had the permission \"%(permission)s\" for %(object)s." +#~ msgstr "%(actor)s, didn't had the permission \"%(permission)s\" for %(object)s." + +#~ msgid "Add new holder for: %s" +#~ msgstr "add new holder for: %s" + +#~ msgid "Select" +#~ msgstr "Select" + +#~ msgid "Class" +#~ msgstr "class" + +#~ msgid "Default access control lists for class: %s" +#~ msgstr "default access control lists for class: %s" + +#~ msgid "Permissions available to: %(actor)s for class %(class)s" +#~ msgstr "permissions available to: %(actor)s for class %(class)s" + +#~ msgid "Add new holder for class: %s" +#~ msgstr "add new holder for class: %s" #~ msgid "List of classes" #~ msgstr "List of classes" diff --git a/mayan/apps/acls/locale/en/LC_MESSAGES/django.mo b/mayan/apps/acls/locale/en/LC_MESSAGES/django.mo index edc0b7b62c..6bb7f2dd67 100644 Binary files a/mayan/apps/acls/locale/en/LC_MESSAGES/django.mo and b/mayan/apps/acls/locale/en/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/acls/locale/en/LC_MESSAGES/django.po b/mayan/apps/acls/locale/en/LC_MESSAGES/django.po index 9ea3b705c9..92eb6b9f24 100644 --- a/mayan/apps/acls/locale/en/LC_MESSAGES/django.po +++ b/mayan/apps/acls/locale/en/LC_MESSAGES/django.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2015-05-15 18:59-0400\n" +"POT-Creation-Date: 2015-09-24 16:24-0400\n" "PO-Revision-Date: 2012-02-02 18:20+0000\n" "Last-Translator: Roberto Rosario\n" "Language-Team: English (http://www.transifex.com/projects/p/mayan-edms/" @@ -18,92 +18,50 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: forms.py:25 links.py:13 links.py:19 -msgid "New holder" -msgstr "New holder" - -#: forms.py:42 -msgid "Users" -msgstr "Users" - -#: forms.py:45 -msgid "Groups" -msgstr "Groups" - -#: forms.py:48 -msgid "Roles" -msgstr "Roles" - -#: forms.py:51 -msgid "Special" -msgstr "Special" - -#: links.py:9 +#: apps.py:14 links.py:30 msgid "ACLs" msgstr "ACLs" -#: links.py:10 links.py:18 +#: apps.py:20 links.py:38 models.py:36 #, fuzzy -msgid "Details" -msgstr "details" +msgid "Permissions" +msgstr "permissions" -#: links.py:11 links.py:20 +#: apps.py:24 models.py:38 #, fuzzy -msgid "Grant" -msgstr "grant" +#| msgid "Roles" +msgid "Role" +msgstr "Roles" -#: links.py:12 links.py:21 +#: links.py:26 +msgid "Delete" +msgstr "" + +#: links.py:34 #, fuzzy -msgid "Revoke" -msgstr "revoke" +#| msgid "View ACLs" +msgid "New ACL" +msgstr "View ACLs" -#: links.py:15 -msgid "Default ACLs" -msgstr "Default ACLs" - -#: links.py:16 views.py:379 -#, fuzzy -msgid "Classes" -msgstr "classes" - -#: links.py:17 -msgid "ACLs for class" -msgstr "ACLs for class" - -#: managers.py:118 managers.py:130 +#: managers.py:72 msgid "Insufficient access." msgstr "Insufficient access." -#: models.py:25 models.py:67 -#, fuzzy -msgid "Permission" -msgstr "permissions" - -#: models.py:51 +#: models.py:44 #, fuzzy msgid "Access entry" msgstr "access entry" -#: models.py:52 +#: models.py:45 #, fuzzy msgid "Access entries" msgstr "access entries" -#: models.py:88 -#, fuzzy -msgid "Default access entry" -msgstr "default access entry" +#: models.py:60 +msgid "None" +msgstr "" -#: models.py:89 -#, fuzzy -msgid "Default access entries" -msgstr "default access entries" - -#: models.py:108 models.py:111 models.py:112 -msgid "Creator" -msgstr "Creator" - -#: permissions.py:7 permissions.py:8 +#: permissions.py:7 msgid "Access control lists" msgstr "Access control lists" @@ -111,145 +69,177 @@ msgstr "Access control lists" msgid "Edit ACLs" msgstr "Edit ACLs" -#: permissions.py:11 +#: permissions.py:13 msgid "View ACLs" msgstr "View ACLs" -#: permissions.py:13 -msgid "Edit class default ACLs" -msgstr "Edit class default ACLs" - -#: permissions.py:14 -msgid "View class default ACLs" -msgstr "View class default ACLs" - -#: views.py:48 +#: views.py:61 #, fuzzy, python-format msgid "Access control lists for: %s" msgstr "access control lists for: %s" -#: views.py:50 views.py:402 -#, fuzzy -msgid "Holder" -msgstr "holder" - -#: views.py:51 views.py:403 -#, fuzzy -msgid "Permissions" -msgstr "permissions" - -#: views.py:98 +#: views.py:107 #, fuzzy, python-format -msgid "Permissions available to: %(actor)s for %(obj)s" -msgstr "permissions available to: %(actor)s for %(obj)s" +msgid "New access control lists for: %s" +msgstr "access control lists for: %s" -#: views.py:105 views.py:434 -#, fuzzy -msgid "Namespace" -msgstr "namespace" +#: views.py:132 +#, fuzzy, python-format +#| msgid "Default ACLs" +msgid "Delete ACL: %s" +msgstr "Default ACLs" -#: views.py:106 views.py:435 +#: views.py:147 #, fuzzy -msgid "Label" -msgstr "label" - -#: views.py:108 views.py:437 -#, fuzzy -msgid "Has permission" +msgid "Available permissions" msgstr "has permission" -#: views.py:181 views.py:272 views.py:516 views.py:593 -msgid ", " -msgstr ", " - -#: views.py:182 views.py:273 views.py:517 views.py:594 -#, python-format -msgid " for %s" -msgstr " for %s" - -#: views.py:183 views.py:518 -#, python-format -msgid " to %s" -msgstr " to %s" - -#: views.py:186 views.py:521 -#, python-format -msgid "Are you sure you wish to grant the permission %(title_suffix)s?" -msgstr "Are you sure you wish to grant the permission %(title_suffix)s?" - -#: views.py:188 views.py:523 -#, python-format -msgid "Are you sure you wish to grant the permissions %(title_suffix)s?" -msgstr "Are you sure you wish to grant the permissions %(title_suffix)s?" - -#: views.py:195 views.py:530 -#, python-format -msgid "Permission \"%(permission)s\" granted to %(actor)s for %(object)s." -msgstr "Permission \"%(permission)s\" granted to %(actor)s for %(object)s." - -#: views.py:201 views.py:536 -#, python-format -msgid "" -"%(actor)s, already had the permission \"%(permission)s\" granted for " -"%(object)s." -msgstr "" -"%(actor)s, already had the permission \"%(permission)s\" granted for " -"%(object)s." - -#: views.py:274 views.py:595 -#, python-format -msgid " from %s" -msgstr " from %s" - -#: views.py:277 views.py:598 -#, python-format -msgid "Are you sure you wish to revoke the permission %(title_suffix)s?" -msgstr "Are you sure you wish to revoke the permission %(title_suffix)s?" - -#: views.py:279 views.py:600 -#, python-format -msgid "Are you sure you wish to revoke the permissions %(title_suffix)s?" -msgstr "Are you sure you wish to revoke the permissions %(title_suffix)s?" - -#: views.py:286 views.py:607 -#, python-format -msgid "Permission \"%(permission)s\" revoked of %(actor)s for %(object)s." -msgstr "Permission \"%(permission)s\" revoked of %(actor)s for %(object)s." - -#: views.py:292 views.py:613 -#, python-format -msgid "%(actor)s, didn't had the permission \"%(permission)s\" for %(object)s." -msgstr "" -"%(actor)s, didn't had the permission \"%(permission)s\" for %(object)s." - -#: views.py:346 -#, fuzzy, python-format -msgid "Add new holder for: %s" -msgstr "add new holder for: %s" - -#: views.py:347 views.py:477 -msgid "Select" -msgstr "Select" - -#: views.py:381 +#: views.py:148 #, fuzzy -msgid "Class" -msgstr "class" +msgid "Granted permissions" +msgstr "has permission" -#: views.py:400 -#, fuzzy, python-format -msgid "Default access control lists for class: %s" -msgstr "default access control lists for class: %s" +#: views.py:187 +msgid "Disabled permissions are inherited from a parent object." +msgstr "" -#: views.py:428 -#, fuzzy, python-format -msgid "Permissions available to: %(actor)s for class %(class)s" -msgstr "permissions available to: %(actor)s for class %(class)s" +#: views.py:218 +#, python-format +msgid "Role \"%(role)s\" permission's for \"%(object)s\"" +msgstr "" -#: views.py:475 -#, fuzzy, python-format -msgid "Add new holder for class: %s" -msgstr "add new holder for class: %s" +#~ msgid "New holder" +#~ msgstr "New holder" + +#~ msgid "Users" +#~ msgstr "Users" + +#~ msgid "Groups" +#~ msgstr "Groups" + +#~ msgid "Special" +#~ msgstr "Special" + +#, fuzzy +#~ msgid "Details" +#~ msgstr "details" + +#, fuzzy +#~ msgid "Grant" +#~ msgstr "grant" + +#, fuzzy +#~ msgid "Revoke" +#~ msgstr "revoke" + +#, fuzzy +#~ msgid "Classes" +#~ msgstr "classes" + +#~ msgid "ACLs for class" +#~ msgstr "ACLs for class" + +#, fuzzy +#~ msgid "Permission" +#~ msgstr "permissions" + +#, fuzzy +#~ msgid "Default access entry" +#~ msgstr "default access entry" + +#, fuzzy +#~ msgid "Default access entries" +#~ msgstr "default access entries" + +#~ msgid "Creator" +#~ msgstr "Creator" + +#~ msgid "Edit class default ACLs" +#~ msgstr "Edit class default ACLs" + +#~ msgid "View class default ACLs" +#~ msgstr "View class default ACLs" + +#, fuzzy +#~ msgid "Holder" +#~ msgstr "holder" + +#, fuzzy +#~ msgid "Permissions available to: %(actor)s for %(obj)s" +#~ msgstr "permissions available to: %(actor)s for %(obj)s" + +#, fuzzy +#~ msgid "Namespace" +#~ msgstr "namespace" + +#, fuzzy +#~ msgid "Label" +#~ msgstr "label" + +#~ msgid ", " +#~ msgstr ", " + +#~ msgid " for %s" +#~ msgstr " for %s" + +#~ msgid " to %s" +#~ msgstr " to %s" + +#~ msgid "Are you sure you wish to grant the permission %(title_suffix)s?" +#~ msgstr "Are you sure you wish to grant the permission %(title_suffix)s?" + +#~ msgid "Are you sure you wish to grant the permissions %(title_suffix)s?" +#~ msgstr "Are you sure you wish to grant the permissions %(title_suffix)s?" + +#~ msgid "Permission \"%(permission)s\" granted to %(actor)s for %(object)s." +#~ msgstr "Permission \"%(permission)s\" granted to %(actor)s for %(object)s." + +#~ msgid "" +#~ "%(actor)s, already had the permission \"%(permission)s\" granted for " +#~ "%(object)s." +#~ msgstr "" +#~ "%(actor)s, already had the permission \"%(permission)s\" granted for " +#~ "%(object)s." + +#~ msgid " from %s" +#~ msgstr " from %s" + +#~ msgid "Are you sure you wish to revoke the permission %(title_suffix)s?" +#~ msgstr "Are you sure you wish to revoke the permission %(title_suffix)s?" + +#~ msgid "Are you sure you wish to revoke the permissions %(title_suffix)s?" +#~ msgstr "Are you sure you wish to revoke the permissions %(title_suffix)s?" + +#~ msgid "Permission \"%(permission)s\" revoked of %(actor)s for %(object)s." +#~ msgstr "Permission \"%(permission)s\" revoked of %(actor)s for %(object)s." + +#~ msgid "" +#~ "%(actor)s, didn't had the permission \"%(permission)s\" for %(object)s." +#~ msgstr "" +#~ "%(actor)s, didn't had the permission \"%(permission)s\" for %(object)s." + +#, fuzzy +#~ msgid "Add new holder for: %s" +#~ msgstr "add new holder for: %s" + +#~ msgid "Select" +#~ msgstr "Select" + +#, fuzzy +#~ msgid "Class" +#~ msgstr "class" + +#, fuzzy +#~ msgid "Default access control lists for class: %s" +#~ msgstr "default access control lists for class: %s" + +#, fuzzy +#~ msgid "Permissions available to: %(actor)s for class %(class)s" +#~ msgstr "permissions available to: %(actor)s for class %(class)s" + +#, fuzzy +#~ msgid "Add new holder for class: %s" +#~ msgstr "add new holder for class: %s" #~ msgid "List of classes" #~ msgstr "List of classes" diff --git a/mayan/apps/acls/locale/es/LC_MESSAGES/django.mo b/mayan/apps/acls/locale/es/LC_MESSAGES/django.mo index f06e84314d..62e633e7bf 100644 Binary files a/mayan/apps/acls/locale/es/LC_MESSAGES/django.mo and b/mayan/apps/acls/locale/es/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/acls/locale/es/LC_MESSAGES/django.po b/mayan/apps/acls/locale/es/LC_MESSAGES/django.po index 2ec67a6b3d..1ca862fd55 100644 --- a/mayan/apps/acls/locale/es/LC_MESSAGES/django.po +++ b/mayan/apps/acls/locale/es/LC_MESSAGES/django.po @@ -4,237 +4,220 @@ # # Translators: # Translators: -# jmcainzos , 2014 -# Lory977 , 2015 -# Roberto Rosario, 2012 +# jmcainzos , 2015 +# Roberto Rosario, 2015 +# Roberto Rosario, 2015 msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2015-05-15 18:59-0400\n" -"PO-Revision-Date: 2015-01-14 20:07+0000\n" -"Last-Translator: Lory977 \n" -"Language-Team: Spanish (http://www.transifex.com/projects/p/mayan-edms/language/es/)\n" +"POT-Creation-Date: 2015-09-24 16:24-0400\n" +"PO-Revision-Date: 2015-09-24 05:15+0000\n" +"Last-Translator: Roberto Rosario\n" +"Language-Team: Spanish (http://www.transifex.com/rosarior/mayan-edms/language/es/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: es\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: forms.py:25 links.py:13 links.py:19 -msgid "New holder" -msgstr "Nuevo titular" - -#: forms.py:42 -msgid "Users" -msgstr "Usuarios" - -#: forms.py:45 -msgid "Groups" -msgstr "Grupos" - -#: forms.py:48 -msgid "Roles" -msgstr "Roles" - -#: forms.py:51 -msgid "Special" -msgstr "Especial" - -#: links.py:9 +#: apps.py:14 links.py:30 msgid "ACLs" -msgstr "LCA" +msgstr "LCAs" -#: links.py:10 links.py:18 -msgid "Details" -msgstr "Detalles" +#: apps.py:20 links.py:38 models.py:36 +msgid "Permissions" +msgstr "Permisos" -#: links.py:11 links.py:20 -msgid "Grant" -msgstr "Otorgar" +#: apps.py:24 models.py:38 +#| msgid "Roles" +msgid "Role" +msgstr "Rol" -#: links.py:12 links.py:21 -msgid "Revoke" -msgstr "Revocar" +#: links.py:26 +msgid "Delete" +msgstr "Borrar" -#: links.py:15 -msgid "Default ACLs" -msgstr "LCA por defecto" +#: links.py:34 +#| msgid "View ACLs" +msgid "New ACL" +msgstr "Nueva LCA" -#: links.py:16 views.py:379 -msgid "Classes" -msgstr "Clases" - -#: links.py:17 -msgid "ACLs for class" -msgstr "LCA para la clase" - -#: managers.py:118 managers.py:130 +#: managers.py:72 msgid "Insufficient access." msgstr "Acceso insuficiente." -#: models.py:25 models.py:67 -msgid "Permission" -msgstr "Autorización" - -#: models.py:51 +#: models.py:44 msgid "Access entry" -msgstr "Acceso autorizado" +msgstr "Entrada de acceso" -#: models.py:52 +#: models.py:45 msgid "Access entries" -msgstr "las entradas de acceso" +msgstr "Entradas de acceso" -#: models.py:88 -msgid "Default access entry" -msgstr "por defecto el acceso de entrada" +#: models.py:60 +msgid "None" +msgstr "Ninguno" -#: models.py:89 -msgid "Default access entries" -msgstr "entradas de acceso por defecto" - -#: models.py:108 models.py:111 models.py:112 -msgid "Creator" -msgstr "Creador" - -#: permissions.py:7 permissions.py:8 +#: permissions.py:7 msgid "Access control lists" msgstr "Listas de control de acceso" #: permissions.py:10 msgid "Edit ACLs" -msgstr "Editar LCA" - -#: permissions.py:11 -msgid "View ACLs" -msgstr "Ver LCA" +msgstr "Editar LCAs" #: permissions.py:13 -msgid "Edit class default ACLs" -msgstr "Editar LCA por defecto de la clase" +msgid "View ACLs" +msgstr "Ver LCAs" -#: permissions.py:14 -msgid "View class default ACLs" -msgstr "Ver LCA por defecto de la clase" - -#: views.py:48 +#: views.py:61 #, python-format msgid "Access control lists for: %s" -msgstr "listas de control de acceso para: %s" +msgstr "Listas de control de acceso para: %s" -#: views.py:50 views.py:402 -msgid "Holder" -msgstr "titular" - -#: views.py:51 views.py:403 -msgid "Permissions" -msgstr "Autorizaciones" - -#: views.py:98 +#: views.py:107 #, python-format -msgid "Permissions available to: %(actor)s for %(obj)s" -msgstr "Autorizaciones disponibles para: %(actor)s para %(obj)s" +msgid "New access control lists for: %s" +msgstr "Nueva lista de control de acceso para: %s" -#: views.py:105 views.py:434 -msgid "Namespace" -msgstr "Espacios nombrados" - -#: views.py:106 views.py:435 -msgid "Label" -msgstr "Etiqueta" - -#: views.py:108 views.py:437 -msgid "Has permission" -msgstr "Tiene permiso" - -#: views.py:181 views.py:272 views.py:516 views.py:593 -msgid ", " -msgstr ", " - -#: views.py:182 views.py:273 views.py:517 views.py:594 +#: views.py:132 #, python-format -msgid " for %s" -msgstr " para %s" +#| msgid "Default ACLs" +msgid "Delete ACL: %s" +msgstr "" -#: views.py:183 views.py:518 +#: views.py:147 +msgid "Available permissions" +msgstr "Permisos disponibles" + +#: views.py:148 +msgid "Granted permissions" +msgstr "Permisos otorgados" + +#: views.py:187 +msgid "Disabled permissions are inherited from a parent object." +msgstr "Los permisos inactivos se heredan de un objeto precedente." + +#: views.py:218 #, python-format -msgid " to %s" -msgstr " a %s" +msgid "Role \"%(role)s\" permission's for \"%(object)s\"" +msgstr "Permisos del rol \"%(role)s\" para \"%(object)s\"" -#: views.py:186 views.py:521 -#, python-format -msgid "Are you sure you wish to grant the permission %(title_suffix)s?" -msgstr "¿Está seguro que desea conceder el permiso %(title_suffix)s?" +#~ msgid "New holder" +#~ msgstr "New holder" -#: views.py:188 views.py:523 -#, python-format -msgid "Are you sure you wish to grant the permissions %(title_suffix)s?" -msgstr "¿Está seguro que desea conceder los permisos de %(title_suffix)s?" +#~ msgid "Users" +#~ msgstr "Users" -#: views.py:195 views.py:530 -#, python-format -msgid "Permission \"%(permission)s\" granted to %(actor)s for %(object)s." -msgstr "Permiso \"%(permission)s\" otorgado a %(actor)s para %(object)s." +#~ msgid "Groups" +#~ msgstr "Groups" -#: views.py:201 views.py:536 -#, python-format -msgid "" -"%(actor)s, already had the permission \"%(permission)s\" granted for " -"%(object)s." -msgstr "%(actor)s, ya tenía el permiso \"%(permission)s\", otorgado para %(object)s." +#~ msgid "Special" +#~ msgstr "Special" -#: views.py:274 views.py:595 -#, python-format -msgid " from %s" -msgstr " de %s" +#~ msgid "Details" +#~ msgstr "details" -#: views.py:277 views.py:598 -#, python-format -msgid "Are you sure you wish to revoke the permission %(title_suffix)s?" -msgstr "¿Está seguro que desea revocar el permiso %(title_suffix)s?" +#~ msgid "Grant" +#~ msgstr "grant" -#: views.py:279 views.py:600 -#, python-format -msgid "Are you sure you wish to revoke the permissions %(title_suffix)s?" -msgstr "¿Está seguro de querer revocar los permisos %(title_suffix)s?" +#~ msgid "Revoke" +#~ msgstr "revoke" -#: views.py:286 views.py:607 -#, python-format -msgid "Permission \"%(permission)s\" revoked of %(actor)s for %(object)s." -msgstr "Permiso \"%(permission)s\" revocado del %(actor)s para %(object)s." +#~ msgid "Classes" +#~ msgstr "classes" -#: views.py:292 views.py:613 -#, python-format -msgid "%(actor)s, didn't had the permission \"%(permission)s\" for %(object)s." -msgstr "%(actor)s, no tenía el permiso \"%(permission)s\" para %(object)s." +#~ msgid "ACLs for class" +#~ msgstr "ACLs for class" -#: views.py:346 -#, python-format -msgid "Add new holder for: %s" -msgstr "añadir nuevo titular para: %s" +#~ msgid "Permission" +#~ msgstr "permissions" -#: views.py:347 views.py:477 -msgid "Select" -msgstr "Seleccionar" +#~ msgid "Default access entry" +#~ msgstr "default access entry" -#: views.py:381 -msgid "Class" -msgstr "Clase" +#~ msgid "Default access entries" +#~ msgstr "default access entries" -#: views.py:400 -#, python-format -msgid "Default access control lists for class: %s" -msgstr "listas de control de acceso por defecto para la clase: %s" +#~ msgid "Creator" +#~ msgstr "Creator" -#: views.py:428 -#, python-format -msgid "Permissions available to: %(actor)s for class %(class)s" -msgstr "permisos disponibles para: %(actor)s para la clase %(class)s " +#~ msgid "Edit class default ACLs" +#~ msgstr "Edit class default ACLs" -#: views.py:475 -#, python-format -msgid "Add new holder for class: %s" -msgstr "añadir nuevo titular para la clase: %s" +#~ msgid "View class default ACLs" +#~ msgstr "View class default ACLs" + +#~ msgid "Holder" +#~ msgstr "holder" + +#~ msgid "Permissions available to: %(actor)s for %(obj)s" +#~ msgstr "permissions available to: %(actor)s for %(obj)s" + +#~ msgid "Namespace" +#~ msgstr "namespace" + +#~ msgid "Label" +#~ msgstr "label" + +#~ msgid ", " +#~ msgstr ", " + +#~ msgid " for %s" +#~ msgstr " for %s" + +#~ msgid " to %s" +#~ msgstr " to %s" + +#~ msgid "Are you sure you wish to grant the permission %(title_suffix)s?" +#~ msgstr "Are you sure you wish to grant the permission %(title_suffix)s?" + +#~ msgid "Are you sure you wish to grant the permissions %(title_suffix)s?" +#~ msgstr "Are you sure you wish to grant the permissions %(title_suffix)s?" + +#~ msgid "Permission \"%(permission)s\" granted to %(actor)s for %(object)s." +#~ msgstr "Permission \"%(permission)s\" granted to %(actor)s for %(object)s." + +#~ msgid "" +#~ "%(actor)s, already had the permission \"%(permission)s\" granted for " +#~ "%(object)s." +#~ msgstr "" +#~ "%(actor)s, already had the permission \"%(permission)s\" granted for " +#~ "%(object)s." + +#~ msgid " from %s" +#~ msgstr " from %s" + +#~ msgid "Are you sure you wish to revoke the permission %(title_suffix)s?" +#~ msgstr "Are you sure you wish to revoke the permission %(title_suffix)s?" + +#~ msgid "Are you sure you wish to revoke the permissions %(title_suffix)s?" +#~ msgstr "Are you sure you wish to revoke the permissions %(title_suffix)s?" + +#~ msgid "Permission \"%(permission)s\" revoked of %(actor)s for %(object)s." +#~ msgstr "Permission \"%(permission)s\" revoked of %(actor)s for %(object)s." + +#~ msgid "%(actor)s, didn't had the permission \"%(permission)s\" for %(object)s." +#~ msgstr "%(actor)s, didn't had the permission \"%(permission)s\" for %(object)s." + +#~ msgid "Add new holder for: %s" +#~ msgstr "add new holder for: %s" + +#~ msgid "Select" +#~ msgstr "Select" + +#~ msgid "Class" +#~ msgstr "class" + +#~ msgid "Default access control lists for class: %s" +#~ msgstr "default access control lists for class: %s" + +#~ msgid "Permissions available to: %(actor)s for class %(class)s" +#~ msgstr "permissions available to: %(actor)s for class %(class)s" + +#~ msgid "Add new holder for class: %s" +#~ msgstr "add new holder for class: %s" #~ msgid "List of classes" #~ msgstr "List of classes" diff --git a/mayan/apps/acls/locale/fa/LC_MESSAGES/django.mo b/mayan/apps/acls/locale/fa/LC_MESSAGES/django.mo index 67808f91c5..7323bd7d25 100644 Binary files a/mayan/apps/acls/locale/fa/LC_MESSAGES/django.mo and b/mayan/apps/acls/locale/fa/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/acls/locale/fa/LC_MESSAGES/django.po b/mayan/apps/acls/locale/fa/LC_MESSAGES/django.po index ce95e683fe..88055fa603 100644 --- a/mayan/apps/acls/locale/fa/LC_MESSAGES/django.po +++ b/mayan/apps/acls/locale/fa/LC_MESSAGES/django.po @@ -4,235 +4,217 @@ # # Translators: # Translators: -# Mehdi Amani , 2014 msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2015-05-15 18:59-0400\n" -"PO-Revision-Date: 2014-10-30 13:05+0000\n" -"Last-Translator: Mehdi Amani \n" -"Language-Team: Persian (http://www.transifex.com/projects/p/mayan-edms/language/fa/)\n" +"POT-Creation-Date: 2015-09-24 16:24-0400\n" +"PO-Revision-Date: 2015-09-24 05:15+0000\n" +"Last-Translator: Roberto Rosario\n" +"Language-Team: Persian (http://www.transifex.com/rosarior/mayan-edms/language/fa/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: fa\n" "Plural-Forms: nplurals=1; plural=0;\n" -#: forms.py:25 links.py:13 links.py:19 -msgid "New holder" -msgstr "دارنده مجوز جدید" - -#: forms.py:42 -msgid "Users" -msgstr "کاربران" - -#: forms.py:45 -msgid "Groups" -msgstr "گروه ها" - -#: forms.py:48 -msgid "Roles" -msgstr "رل ها" - -#: forms.py:51 -msgid "Special" -msgstr "ویژه" - -#: links.py:9 +#: apps.py:14 links.py:30 msgid "ACLs" -msgstr "لیست دسترسی ها (ACLs)" +msgstr "" -#: links.py:10 links.py:18 -msgid "Details" -msgstr "جزئیات" +#: apps.py:20 links.py:38 models.py:36 +msgid "Permissions" +msgstr "" -#: links.py:11 links.py:20 -msgid "Grant" -msgstr "دادن اجازه" +#: apps.py:24 models.py:38 +#| msgid "Roles" +msgid "Role" +msgstr "" -#: links.py:12 links.py:21 -msgid "Revoke" -msgstr "پس گرفتن" +#: links.py:26 +msgid "Delete" +msgstr "" -#: links.py:15 -msgid "Default ACLs" -msgstr "لیست دسترسی های پیش فرض" +#: links.py:34 +#| msgid "View ACLs" +msgid "New ACL" +msgstr "" -#: links.py:16 views.py:379 -msgid "Classes" -msgstr "کلاس ها" - -#: links.py:17 -msgid "ACLs for class" -msgstr "لیست دسترسیها برای کلاس" - -#: managers.py:118 managers.py:130 +#: managers.py:72 msgid "Insufficient access." -msgstr "دسترسی ناکافی" +msgstr "" -#: models.py:25 models.py:67 -msgid "Permission" -msgstr "مجوز" - -#: models.py:51 +#: models.py:44 msgid "Access entry" -msgstr "ورودی دسترسی" +msgstr "" -#: models.py:52 +#: models.py:45 msgid "Access entries" -msgstr "ورودیهای دسترسی" +msgstr "" -#: models.py:88 -msgid "Default access entry" -msgstr "ورودی دسترسی پیش فرض" +#: models.py:60 +msgid "None" +msgstr "" -#: models.py:89 -msgid "Default access entries" -msgstr "ورودیهای دسترسی پیش فرض" - -#: models.py:108 models.py:111 models.py:112 -msgid "Creator" -msgstr "خالق" - -#: permissions.py:7 permissions.py:8 +#: permissions.py:7 msgid "Access control lists" -msgstr "لیست کنترل دسترسی ها" +msgstr "" #: permissions.py:10 msgid "Edit ACLs" -msgstr "ویرایش دسترسی ها" - -#: permissions.py:11 -msgid "View ACLs" -msgstr "دیدن دسترسی ها" +msgstr "" #: permissions.py:13 -msgid "Edit class default ACLs" -msgstr "ویرایش دسترسی های پیش فرض کلاس" +msgid "View ACLs" +msgstr "" -#: permissions.py:14 -msgid "View class default ACLs" -msgstr "دیدن دسترسی های پیش فرض کلاس" - -#: views.py:48 +#: views.py:61 #, python-format msgid "Access control lists for: %s" -msgstr "لیست کنترل دسترسی ها برای : %s" +msgstr "" -#: views.py:50 views.py:402 -msgid "Holder" -msgstr "دارنده" - -#: views.py:51 views.py:403 -msgid "Permissions" -msgstr "مجوزها" - -#: views.py:98 +#: views.py:107 #, python-format -msgid "Permissions available to: %(actor)s for %(obj)s" -msgstr "مجوزها : %(actor)sبرای %(obj)s" +msgid "New access control lists for: %s" +msgstr "" -#: views.py:105 views.py:434 -msgid "Namespace" -msgstr "فضای نام" - -#: views.py:106 views.py:435 -msgid "Label" -msgstr "برچسب" - -#: views.py:108 views.py:437 -msgid "Has permission" -msgstr "دارای مجوز" - -#: views.py:181 views.py:272 views.py:516 views.py:593 -msgid ", " -msgstr "," - -#: views.py:182 views.py:273 views.py:517 views.py:594 +#: views.py:132 #, python-format -msgid " for %s" -msgstr "برای %s" +#| msgid "Default ACLs" +msgid "Delete ACL: %s" +msgstr "" -#: views.py:183 views.py:518 +#: views.py:147 +msgid "Available permissions" +msgstr "" + +#: views.py:148 +msgid "Granted permissions" +msgstr "" + +#: views.py:187 +msgid "Disabled permissions are inherited from a parent object." +msgstr "" + +#: views.py:218 #, python-format -msgid " to %s" -msgstr "به %s" +msgid "Role \"%(role)s\" permission's for \"%(object)s\"" +msgstr "" -#: views.py:186 views.py:521 -#, python-format -msgid "Are you sure you wish to grant the permission %(title_suffix)s?" -msgstr "آیا از دادن مجوز به %(title_suffix)s مطمئن هستید؟" +#~ msgid "New holder" +#~ msgstr "New holder" -#: views.py:188 views.py:523 -#, python-format -msgid "Are you sure you wish to grant the permissions %(title_suffix)s?" -msgstr "آیا از دادن مجوز به %(title_suffix)s مطمئن هستید؟" +#~ msgid "Users" +#~ msgstr "Users" -#: views.py:195 views.py:530 -#, python-format -msgid "Permission \"%(permission)s\" granted to %(actor)s for %(object)s." -msgstr "مجوز \"%(permission)s\" داده شده به %(actor)s برای %(object)s." +#~ msgid "Groups" +#~ msgstr "Groups" -#: views.py:201 views.py:536 -#, python-format -msgid "" -"%(actor)s, already had the permission \"%(permission)s\" granted for " -"%(object)s." -msgstr "%(actor)s دارای مجوز %(permission)s برروی %(object)s میباشد." +#~ msgid "Special" +#~ msgstr "Special" -#: views.py:274 views.py:595 -#, python-format -msgid " from %s" -msgstr "از %s" +#~ msgid "Details" +#~ msgstr "details" -#: views.py:277 views.py:598 -#, python-format -msgid "Are you sure you wish to revoke the permission %(title_suffix)s?" -msgstr "آیا مطمئن هستید که میخواهید مجوز %(title_suffix)s را لغو کنید؟" +#~ msgid "Grant" +#~ msgstr "grant" -#: views.py:279 views.py:600 -#, python-format -msgid "Are you sure you wish to revoke the permissions %(title_suffix)s?" -msgstr "آیا مطمئن هستید که میخواهید مجوز %(title_suffix)s را لغو کنید؟" +#~ msgid "Revoke" +#~ msgstr "revoke" -#: views.py:286 views.py:607 -#, python-format -msgid "Permission \"%(permission)s\" revoked of %(actor)s for %(object)s." -msgstr "مجوز \"%(permission)s از %(actor)s برای %(object)s گرفته شد." +#~ msgid "Classes" +#~ msgstr "classes" -#: views.py:292 views.py:613 -#, python-format -msgid "%(actor)s, didn't had the permission \"%(permission)s\" for %(object)s." -msgstr "%(actor)s مجوز %(permission)s را برای %(object)s نداشت." +#~ msgid "ACLs for class" +#~ msgstr "ACLs for class" -#: views.py:346 -#, python-format -msgid "Add new holder for: %s" -msgstr "ایجاد دارنده برای: %s" +#~ msgid "Permission" +#~ msgstr "permissions" -#: views.py:347 views.py:477 -msgid "Select" -msgstr "انتخاب" +#~ msgid "Default access entry" +#~ msgstr "default access entry" -#: views.py:381 -msgid "Class" -msgstr "کلاس" +#~ msgid "Default access entries" +#~ msgstr "default access entries" -#: views.py:400 -#, python-format -msgid "Default access control lists for class: %s" -msgstr "لیست کنترل دسترسی پیش فرض برای کلاس : %s" +#~ msgid "Creator" +#~ msgstr "Creator" -#: views.py:428 -#, python-format -msgid "Permissions available to: %(actor)s for class %(class)s" -msgstr "مجوزها : %(actor)s برای کلاس %(class)s" +#~ msgid "Edit class default ACLs" +#~ msgstr "Edit class default ACLs" -#: views.py:475 -#, python-format -msgid "Add new holder for class: %s" -msgstr "دارنده جدید برای کلاس : %s" +#~ msgid "View class default ACLs" +#~ msgstr "View class default ACLs" + +#~ msgid "Holder" +#~ msgstr "holder" + +#~ msgid "Permissions available to: %(actor)s for %(obj)s" +#~ msgstr "permissions available to: %(actor)s for %(obj)s" + +#~ msgid "Namespace" +#~ msgstr "namespace" + +#~ msgid "Label" +#~ msgstr "label" + +#~ msgid ", " +#~ msgstr ", " + +#~ msgid " for %s" +#~ msgstr " for %s" + +#~ msgid " to %s" +#~ msgstr " to %s" + +#~ msgid "Are you sure you wish to grant the permission %(title_suffix)s?" +#~ msgstr "Are you sure you wish to grant the permission %(title_suffix)s?" + +#~ msgid "Are you sure you wish to grant the permissions %(title_suffix)s?" +#~ msgstr "Are you sure you wish to grant the permissions %(title_suffix)s?" + +#~ msgid "Permission \"%(permission)s\" granted to %(actor)s for %(object)s." +#~ msgstr "Permission \"%(permission)s\" granted to %(actor)s for %(object)s." + +#~ msgid "" +#~ "%(actor)s, already had the permission \"%(permission)s\" granted for " +#~ "%(object)s." +#~ msgstr "" +#~ "%(actor)s, already had the permission \"%(permission)s\" granted for " +#~ "%(object)s." + +#~ msgid " from %s" +#~ msgstr " from %s" + +#~ msgid "Are you sure you wish to revoke the permission %(title_suffix)s?" +#~ msgstr "Are you sure you wish to revoke the permission %(title_suffix)s?" + +#~ msgid "Are you sure you wish to revoke the permissions %(title_suffix)s?" +#~ msgstr "Are you sure you wish to revoke the permissions %(title_suffix)s?" + +#~ msgid "Permission \"%(permission)s\" revoked of %(actor)s for %(object)s." +#~ msgstr "Permission \"%(permission)s\" revoked of %(actor)s for %(object)s." + +#~ msgid "%(actor)s, didn't had the permission \"%(permission)s\" for %(object)s." +#~ msgstr "%(actor)s, didn't had the permission \"%(permission)s\" for %(object)s." + +#~ msgid "Add new holder for: %s" +#~ msgstr "add new holder for: %s" + +#~ msgid "Select" +#~ msgstr "Select" + +#~ msgid "Class" +#~ msgstr "class" + +#~ msgid "Default access control lists for class: %s" +#~ msgstr "default access control lists for class: %s" + +#~ msgid "Permissions available to: %(actor)s for class %(class)s" +#~ msgstr "permissions available to: %(actor)s for class %(class)s" + +#~ msgid "Add new holder for class: %s" +#~ msgstr "add new holder for class: %s" #~ msgid "List of classes" #~ msgstr "List of classes" diff --git a/mayan/apps/acls/locale/fr/LC_MESSAGES/django.mo b/mayan/apps/acls/locale/fr/LC_MESSAGES/django.mo index f94370e293..8f4728e77e 100644 Binary files a/mayan/apps/acls/locale/fr/LC_MESSAGES/django.mo and b/mayan/apps/acls/locale/fr/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/acls/locale/fr/LC_MESSAGES/django.po b/mayan/apps/acls/locale/fr/LC_MESSAGES/django.po index 1af7f52dbf..b7a37ff96d 100644 --- a/mayan/apps/acls/locale/fr/LC_MESSAGES/django.po +++ b/mayan/apps/acls/locale/fr/LC_MESSAGES/django.po @@ -4,236 +4,217 @@ # # Translators: # Translators: -# Christophe kryskool , 2014 -# Pierre Lhoste , 2012 msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2015-05-15 18:59-0400\n" -"PO-Revision-Date: 2014-11-02 08:22+0000\n" -"Last-Translator: Christophe kryskool \n" -"Language-Team: French (http://www.transifex.com/projects/p/mayan-edms/language/fr/)\n" +"POT-Creation-Date: 2015-09-24 16:24-0400\n" +"PO-Revision-Date: 2015-09-24 05:15+0000\n" +"Last-Translator: Roberto Rosario\n" +"Language-Team: French (http://www.transifex.com/rosarior/mayan-edms/language/fr/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: fr\n" "Plural-Forms: nplurals=2; plural=(n > 1);\n" -#: forms.py:25 links.py:13 links.py:19 -msgid "New holder" -msgstr "Nouveau détenteur" - -#: forms.py:42 -msgid "Users" -msgstr "Utilisateurs" - -#: forms.py:45 -msgid "Groups" -msgstr "Groupes" - -#: forms.py:48 -msgid "Roles" -msgstr "Rôles" - -#: forms.py:51 -msgid "Special" -msgstr "Spécial" - -#: links.py:9 +#: apps.py:14 links.py:30 msgid "ACLs" -msgstr "ACLs" +msgstr "" -#: links.py:10 links.py:18 -msgid "Details" -msgstr "Détails" +#: apps.py:20 links.py:38 models.py:36 +msgid "Permissions" +msgstr "" -#: links.py:11 links.py:20 -msgid "Grant" -msgstr "Attribuer" +#: apps.py:24 models.py:38 +#| msgid "Roles" +msgid "Role" +msgstr "" -#: links.py:12 links.py:21 -msgid "Revoke" -msgstr "Retirer" +#: links.py:26 +msgid "Delete" +msgstr "" -#: links.py:15 -msgid "Default ACLs" -msgstr "ACLs par défaut" +#: links.py:34 +#| msgid "View ACLs" +msgid "New ACL" +msgstr "" -#: links.py:16 views.py:379 -msgid "Classes" -msgstr "Classes" - -#: links.py:17 -msgid "ACLs for class" -msgstr "ACLs pour la classe" - -#: managers.py:118 managers.py:130 +#: managers.py:72 msgid "Insufficient access." -msgstr "Autorisations insuffisantes." +msgstr "" -#: models.py:25 models.py:67 -msgid "Permission" -msgstr "Droit" - -#: models.py:51 +#: models.py:44 msgid "Access entry" -msgstr "Autorisation d'accès" +msgstr "" -#: models.py:52 +#: models.py:45 msgid "Access entries" -msgstr "Autorisations d'accès" +msgstr "" -#: models.py:88 -msgid "Default access entry" -msgstr "Autorisation d'accès par défaut" +#: models.py:60 +msgid "None" +msgstr "" -#: models.py:89 -msgid "Default access entries" -msgstr "Autorisations d'accès par défaut" - -#: models.py:108 models.py:111 models.py:112 -msgid "Creator" -msgstr "Créateur" - -#: permissions.py:7 permissions.py:8 +#: permissions.py:7 msgid "Access control lists" -msgstr "Listes de contrôle d'accès (ACL)" +msgstr "" #: permissions.py:10 msgid "Edit ACLs" -msgstr "Modifier ACLs" - -#: permissions.py:11 -msgid "View ACLs" -msgstr "Afficher ACLs" +msgstr "" #: permissions.py:13 -msgid "Edit class default ACLs" -msgstr "Modifier ACLs par défaut" +msgid "View ACLs" +msgstr "" -#: permissions.py:14 -msgid "View class default ACLs" -msgstr "Afficher ACLs par défaut pour la classe" - -#: views.py:48 +#: views.py:61 #, python-format msgid "Access control lists for: %s" -msgstr "Liste de contrôle d'accès (ACL) pour: %s" +msgstr "" -#: views.py:50 views.py:402 -msgid "Holder" -msgstr "Détenteur" - -#: views.py:51 views.py:403 -msgid "Permissions" -msgstr "Droits" - -#: views.py:98 +#: views.py:107 #, python-format -msgid "Permissions available to: %(actor)s for %(obj)s" -msgstr "Autorisations pour: %(actor)s for %(obj)s" +msgid "New access control lists for: %s" +msgstr "" -#: views.py:105 views.py:434 -msgid "Namespace" -msgstr "Espace de nommage" - -#: views.py:106 views.py:435 -msgid "Label" -msgstr "Étiquette" - -#: views.py:108 views.py:437 -msgid "Has permission" -msgstr "Autorisation accordée " - -#: views.py:181 views.py:272 views.py:516 views.py:593 -msgid ", " -msgstr "," - -#: views.py:182 views.py:273 views.py:517 views.py:594 +#: views.py:132 #, python-format -msgid " for %s" -msgstr "à %s" +#| msgid "Default ACLs" +msgid "Delete ACL: %s" +msgstr "" -#: views.py:183 views.py:518 +#: views.py:147 +msgid "Available permissions" +msgstr "" + +#: views.py:148 +msgid "Granted permissions" +msgstr "" + +#: views.py:187 +msgid "Disabled permissions are inherited from a parent object." +msgstr "" + +#: views.py:218 #, python-format -msgid " to %s" -msgstr "sur %s" +msgid "Role \"%(role)s\" permission's for \"%(object)s\"" +msgstr "" -#: views.py:186 views.py:521 -#, python-format -msgid "Are you sure you wish to grant the permission %(title_suffix)s?" -msgstr "Êtes vous certain de vouloir attribuer l'autorisation %(title_suffix)s?" +#~ msgid "New holder" +#~ msgstr "New holder" -#: views.py:188 views.py:523 -#, python-format -msgid "Are you sure you wish to grant the permissions %(title_suffix)s?" -msgstr "Êtes vous certain de vouloir attribuer les autorisations %(title_suffix)s?" +#~ msgid "Users" +#~ msgstr "Users" -#: views.py:195 views.py:530 -#, python-format -msgid "Permission \"%(permission)s\" granted to %(actor)s for %(object)s." -msgstr "Autorisation \"%(permission)s\" accordée à %(actor)s sur %(object)s." +#~ msgid "Groups" +#~ msgstr "Groups" -#: views.py:201 views.py:536 -#, python-format -msgid "" -"%(actor)s, already had the permission \"%(permission)s\" granted for " -"%(object)s." -msgstr "%(actor)s, dispose déjà de l'autorisation \"%(permission)s\" accordée sur %(object)s." +#~ msgid "Special" +#~ msgstr "Special" -#: views.py:274 views.py:595 -#, python-format -msgid " from %s" -msgstr "de %s" +#~ msgid "Details" +#~ msgstr "details" -#: views.py:277 views.py:598 -#, python-format -msgid "Are you sure you wish to revoke the permission %(title_suffix)s?" -msgstr "Êtes vous certain de vouloir révoquer l'autorisation %(title_suffix)s?" +#~ msgid "Grant" +#~ msgstr "grant" -#: views.py:279 views.py:600 -#, python-format -msgid "Are you sure you wish to revoke the permissions %(title_suffix)s?" -msgstr "Êtes vous certain de vouloir révoquer les autorisations %(title_suffix)s?" +#~ msgid "Revoke" +#~ msgstr "revoke" -#: views.py:286 views.py:607 -#, python-format -msgid "Permission \"%(permission)s\" revoked of %(actor)s for %(object)s." -msgstr "Autorisation \"%(permission)s\" révoquée pour %(actor)s sur %(object)s." +#~ msgid "Classes" +#~ msgstr "classes" -#: views.py:292 views.py:613 -#, python-format -msgid "%(actor)s, didn't had the permission \"%(permission)s\" for %(object)s." -msgstr "%(actor)s, n'a pas l'autorisation \"%(permission)s\" sur %(object)s." +#~ msgid "ACLs for class" +#~ msgstr "ACLs for class" -#: views.py:346 -#, python-format -msgid "Add new holder for: %s" -msgstr "Ajouter un nouveau détenteur pour: %s" +#~ msgid "Permission" +#~ msgstr "permissions" -#: views.py:347 views.py:477 -msgid "Select" -msgstr "Sélectionner" +#~ msgid "Default access entry" +#~ msgstr "default access entry" -#: views.py:381 -msgid "Class" -msgstr "Classe" +#~ msgid "Default access entries" +#~ msgstr "default access entries" -#: views.py:400 -#, python-format -msgid "Default access control lists for class: %s" -msgstr "Liste de contrôle d'accès (ACL) par défaut pour: %s" +#~ msgid "Creator" +#~ msgstr "Creator" -#: views.py:428 -#, python-format -msgid "Permissions available to: %(actor)s for class %(class)s" -msgstr "Autorisations attribuées à: %(actor)s sur la classe %(class)s" +#~ msgid "Edit class default ACLs" +#~ msgstr "Edit class default ACLs" -#: views.py:475 -#, python-format -msgid "Add new holder for class: %s" -msgstr "Ajouter un nouveau détenteur sur la classe: %s" +#~ msgid "View class default ACLs" +#~ msgstr "View class default ACLs" + +#~ msgid "Holder" +#~ msgstr "holder" + +#~ msgid "Permissions available to: %(actor)s for %(obj)s" +#~ msgstr "permissions available to: %(actor)s for %(obj)s" + +#~ msgid "Namespace" +#~ msgstr "namespace" + +#~ msgid "Label" +#~ msgstr "label" + +#~ msgid ", " +#~ msgstr ", " + +#~ msgid " for %s" +#~ msgstr " for %s" + +#~ msgid " to %s" +#~ msgstr " to %s" + +#~ msgid "Are you sure you wish to grant the permission %(title_suffix)s?" +#~ msgstr "Are you sure you wish to grant the permission %(title_suffix)s?" + +#~ msgid "Are you sure you wish to grant the permissions %(title_suffix)s?" +#~ msgstr "Are you sure you wish to grant the permissions %(title_suffix)s?" + +#~ msgid "Permission \"%(permission)s\" granted to %(actor)s for %(object)s." +#~ msgstr "Permission \"%(permission)s\" granted to %(actor)s for %(object)s." + +#~ msgid "" +#~ "%(actor)s, already had the permission \"%(permission)s\" granted for " +#~ "%(object)s." +#~ msgstr "" +#~ "%(actor)s, already had the permission \"%(permission)s\" granted for " +#~ "%(object)s." + +#~ msgid " from %s" +#~ msgstr " from %s" + +#~ msgid "Are you sure you wish to revoke the permission %(title_suffix)s?" +#~ msgstr "Are you sure you wish to revoke the permission %(title_suffix)s?" + +#~ msgid "Are you sure you wish to revoke the permissions %(title_suffix)s?" +#~ msgstr "Are you sure you wish to revoke the permissions %(title_suffix)s?" + +#~ msgid "Permission \"%(permission)s\" revoked of %(actor)s for %(object)s." +#~ msgstr "Permission \"%(permission)s\" revoked of %(actor)s for %(object)s." + +#~ msgid "%(actor)s, didn't had the permission \"%(permission)s\" for %(object)s." +#~ msgstr "%(actor)s, didn't had the permission \"%(permission)s\" for %(object)s." + +#~ msgid "Add new holder for: %s" +#~ msgstr "add new holder for: %s" + +#~ msgid "Select" +#~ msgstr "Select" + +#~ msgid "Class" +#~ msgstr "class" + +#~ msgid "Default access control lists for class: %s" +#~ msgstr "default access control lists for class: %s" + +#~ msgid "Permissions available to: %(actor)s for class %(class)s" +#~ msgstr "permissions available to: %(actor)s for class %(class)s" + +#~ msgid "Add new holder for class: %s" +#~ msgstr "add new holder for class: %s" #~ msgid "List of classes" #~ msgstr "List of classes" diff --git a/mayan/apps/acls/locale/hr_HR/LC_MESSAGES/django.mo b/mayan/apps/acls/locale/hr_HR/LC_MESSAGES/django.mo deleted file mode 100644 index 0a47aaadaf..0000000000 Binary files a/mayan/apps/acls/locale/hr_HR/LC_MESSAGES/django.mo and /dev/null differ diff --git a/mayan/apps/acls/locale/hr_HR/LC_MESSAGES/django.po b/mayan/apps/acls/locale/hr_HR/LC_MESSAGES/django.po deleted file mode 100644 index c0142d9b1f..0000000000 --- a/mayan/apps/acls/locale/hr_HR/LC_MESSAGES/django.po +++ /dev/null @@ -1,243 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -# Translators: -msgid "" -msgstr "" -"Project-Id-Version: Mayan EDMS\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2015-05-15 18:59-0400\n" -"PO-Revision-Date: 2014-10-25 06:47+0000\n" -"Last-Translator: Roberto Rosario\n" -"Language-Team: Croatian (Croatia) (http://www.transifex.com/projects/p/mayan-edms/language/hr_HR/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: hr_HR\n" -"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n" - -#: forms.py:25 links.py:13 links.py:19 -msgid "New holder" -msgstr "" - -#: forms.py:42 -msgid "Users" -msgstr "" - -#: forms.py:45 -msgid "Groups" -msgstr "" - -#: forms.py:48 -msgid "Roles" -msgstr "" - -#: forms.py:51 -msgid "Special" -msgstr "" - -#: links.py:9 -msgid "ACLs" -msgstr "" - -#: links.py:10 links.py:18 -msgid "Details" -msgstr "" - -#: links.py:11 links.py:20 -msgid "Grant" -msgstr "" - -#: links.py:12 links.py:21 -msgid "Revoke" -msgstr "" - -#: links.py:15 -msgid "Default ACLs" -msgstr "" - -#: links.py:16 views.py:379 -msgid "Classes" -msgstr "" - -#: links.py:17 -msgid "ACLs for class" -msgstr "" - -#: managers.py:118 managers.py:130 -msgid "Insufficient access." -msgstr "" - -#: models.py:25 models.py:67 -msgid "Permission" -msgstr "" - -#: models.py:51 -msgid "Access entry" -msgstr "" - -#: models.py:52 -msgid "Access entries" -msgstr "" - -#: models.py:88 -msgid "Default access entry" -msgstr "" - -#: models.py:89 -msgid "Default access entries" -msgstr "" - -#: models.py:108 models.py:111 models.py:112 -msgid "Creator" -msgstr "" - -#: permissions.py:7 permissions.py:8 -msgid "Access control lists" -msgstr "" - -#: permissions.py:10 -msgid "Edit ACLs" -msgstr "" - -#: permissions.py:11 -msgid "View ACLs" -msgstr "" - -#: permissions.py:13 -msgid "Edit class default ACLs" -msgstr "" - -#: permissions.py:14 -msgid "View class default ACLs" -msgstr "" - -#: views.py:48 -#, python-format -msgid "Access control lists for: %s" -msgstr "" - -#: views.py:50 views.py:402 -msgid "Holder" -msgstr "" - -#: views.py:51 views.py:403 -msgid "Permissions" -msgstr "" - -#: views.py:98 -#, python-format -msgid "Permissions available to: %(actor)s for %(obj)s" -msgstr "" - -#: views.py:105 views.py:434 -msgid "Namespace" -msgstr "" - -#: views.py:106 views.py:435 -msgid "Label" -msgstr "" - -#: views.py:108 views.py:437 -msgid "Has permission" -msgstr "" - -#: views.py:181 views.py:272 views.py:516 views.py:593 -msgid ", " -msgstr "" - -#: views.py:182 views.py:273 views.py:517 views.py:594 -#, python-format -msgid " for %s" -msgstr "" - -#: views.py:183 views.py:518 -#, python-format -msgid " to %s" -msgstr "" - -#: views.py:186 views.py:521 -#, python-format -msgid "Are you sure you wish to grant the permission %(title_suffix)s?" -msgstr "" - -#: views.py:188 views.py:523 -#, python-format -msgid "Are you sure you wish to grant the permissions %(title_suffix)s?" -msgstr "" - -#: views.py:195 views.py:530 -#, python-format -msgid "Permission \"%(permission)s\" granted to %(actor)s for %(object)s." -msgstr "" - -#: views.py:201 views.py:536 -#, python-format -msgid "" -"%(actor)s, already had the permission \"%(permission)s\" granted for " -"%(object)s." -msgstr "" - -#: views.py:274 views.py:595 -#, python-format -msgid " from %s" -msgstr "" - -#: views.py:277 views.py:598 -#, python-format -msgid "Are you sure you wish to revoke the permission %(title_suffix)s?" -msgstr "" - -#: views.py:279 views.py:600 -#, python-format -msgid "Are you sure you wish to revoke the permissions %(title_suffix)s?" -msgstr "" - -#: views.py:286 views.py:607 -#, python-format -msgid "Permission \"%(permission)s\" revoked of %(actor)s for %(object)s." -msgstr "" - -#: views.py:292 views.py:613 -#, python-format -msgid "%(actor)s, didn't had the permission \"%(permission)s\" for %(object)s." -msgstr "" - -#: views.py:346 -#, python-format -msgid "Add new holder for: %s" -msgstr "" - -#: views.py:347 views.py:477 -msgid "Select" -msgstr "" - -#: views.py:381 -msgid "Class" -msgstr "" - -#: views.py:400 -#, python-format -msgid "Default access control lists for class: %s" -msgstr "" - -#: views.py:428 -#, python-format -msgid "Permissions available to: %(actor)s for class %(class)s" -msgstr "" - -#: views.py:475 -#, python-format -msgid "Add new holder for class: %s" -msgstr "" - -#~ msgid "List of classes" -#~ msgstr "List of classes" - -#~ msgid "permission" -#~ msgstr "permission" - -#~ msgid "creator" -#~ msgstr "creator" diff --git a/mayan/apps/acls/locale/hu/LC_MESSAGES/django.mo b/mayan/apps/acls/locale/hu/LC_MESSAGES/django.mo index d0a8785993..1337d1962e 100644 Binary files a/mayan/apps/acls/locale/hu/LC_MESSAGES/django.mo and b/mayan/apps/acls/locale/hu/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/acls/locale/hu/LC_MESSAGES/django.po b/mayan/apps/acls/locale/hu/LC_MESSAGES/django.po index 87d4c46776..5968acc26c 100644 --- a/mayan/apps/acls/locale/hu/LC_MESSAGES/django.po +++ b/mayan/apps/acls/locale/hu/LC_MESSAGES/django.po @@ -4,98 +4,59 @@ # # Translators: # Translators: -# Dezső József , 2014 msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2015-05-15 18:59-0400\n" -"PO-Revision-Date: 2014-10-25 06:47+0000\n" +"POT-Creation-Date: 2015-09-24 16:24-0400\n" +"PO-Revision-Date: 2015-09-24 05:15+0000\n" "Last-Translator: Roberto Rosario\n" -"Language-Team: Hungarian (http://www.transifex.com/projects/p/mayan-edms/language/hu/)\n" +"Language-Team: Hungarian (http://www.transifex.com/rosarior/mayan-edms/language/hu/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: hu\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: forms.py:25 links.py:13 links.py:19 -msgid "New holder" -msgstr "" - -#: forms.py:42 -msgid "Users" -msgstr "" - -#: forms.py:45 -msgid "Groups" -msgstr "" - -#: forms.py:48 -msgid "Roles" -msgstr "" - -#: forms.py:51 -msgid "Special" -msgstr "" - -#: links.py:9 +#: apps.py:14 links.py:30 msgid "ACLs" -msgstr "ACL-ek" - -#: links.py:10 links.py:18 -msgid "Details" msgstr "" -#: links.py:11 links.py:20 -msgid "Grant" +#: apps.py:20 links.py:38 models.py:36 +msgid "Permissions" msgstr "" -#: links.py:12 links.py:21 -msgid "Revoke" +#: apps.py:24 models.py:38 +#| msgid "Roles" +msgid "Role" msgstr "" -#: links.py:15 -msgid "Default ACLs" +#: links.py:26 +msgid "Delete" msgstr "" -#: links.py:16 views.py:379 -msgid "Classes" +#: links.py:34 +#| msgid "View ACLs" +msgid "New ACL" msgstr "" -#: links.py:17 -msgid "ACLs for class" -msgstr "" - -#: managers.py:118 managers.py:130 +#: managers.py:72 msgid "Insufficient access." msgstr "" -#: models.py:25 models.py:67 -msgid "Permission" -msgstr "" - -#: models.py:51 +#: models.py:44 msgid "Access entry" msgstr "" -#: models.py:52 +#: models.py:45 msgid "Access entries" msgstr "" -#: models.py:88 -msgid "Default access entry" +#: models.py:60 +msgid "None" msgstr "" -#: models.py:89 -msgid "Default access entries" -msgstr "" - -#: models.py:108 models.py:111 models.py:112 -msgid "Creator" -msgstr "" - -#: permissions.py:7 permissions.py:8 +#: permissions.py:7 msgid "Access control lists" msgstr "" @@ -103,136 +64,157 @@ msgstr "" msgid "Edit ACLs" msgstr "" -#: permissions.py:11 +#: permissions.py:13 msgid "View ACLs" msgstr "" -#: permissions.py:13 -msgid "Edit class default ACLs" -msgstr "" - -#: permissions.py:14 -msgid "View class default ACLs" -msgstr "" - -#: views.py:48 +#: views.py:61 #, python-format msgid "Access control lists for: %s" msgstr "" -#: views.py:50 views.py:402 -msgid "Holder" -msgstr "" - -#: views.py:51 views.py:403 -msgid "Permissions" -msgstr "" - -#: views.py:98 +#: views.py:107 #, python-format -msgid "Permissions available to: %(actor)s for %(obj)s" +msgid "New access control lists for: %s" msgstr "" -#: views.py:105 views.py:434 -msgid "Namespace" -msgstr "" - -#: views.py:106 views.py:435 -msgid "Label" -msgstr "" - -#: views.py:108 views.py:437 -msgid "Has permission" -msgstr "" - -#: views.py:181 views.py:272 views.py:516 views.py:593 -msgid ", " -msgstr "" - -#: views.py:182 views.py:273 views.py:517 views.py:594 +#: views.py:132 #, python-format -msgid " for %s" +#| msgid "Default ACLs" +msgid "Delete ACL: %s" msgstr "" -#: views.py:183 views.py:518 +#: views.py:147 +msgid "Available permissions" +msgstr "" + +#: views.py:148 +msgid "Granted permissions" +msgstr "" + +#: views.py:187 +msgid "Disabled permissions are inherited from a parent object." +msgstr "" + +#: views.py:218 #, python-format -msgid " to %s" +msgid "Role \"%(role)s\" permission's for \"%(object)s\"" msgstr "" -#: views.py:186 views.py:521 -#, python-format -msgid "Are you sure you wish to grant the permission %(title_suffix)s?" -msgstr "" +#~ msgid "New holder" +#~ msgstr "New holder" -#: views.py:188 views.py:523 -#, python-format -msgid "Are you sure you wish to grant the permissions %(title_suffix)s?" -msgstr "" +#~ msgid "Users" +#~ msgstr "Users" -#: views.py:195 views.py:530 -#, python-format -msgid "Permission \"%(permission)s\" granted to %(actor)s for %(object)s." -msgstr "" +#~ msgid "Groups" +#~ msgstr "Groups" -#: views.py:201 views.py:536 -#, python-format -msgid "" -"%(actor)s, already had the permission \"%(permission)s\" granted for " -"%(object)s." -msgstr "" +#~ msgid "Special" +#~ msgstr "Special" -#: views.py:274 views.py:595 -#, python-format -msgid " from %s" -msgstr "" +#~ msgid "Details" +#~ msgstr "details" -#: views.py:277 views.py:598 -#, python-format -msgid "Are you sure you wish to revoke the permission %(title_suffix)s?" -msgstr "" +#~ msgid "Grant" +#~ msgstr "grant" -#: views.py:279 views.py:600 -#, python-format -msgid "Are you sure you wish to revoke the permissions %(title_suffix)s?" -msgstr "" +#~ msgid "Revoke" +#~ msgstr "revoke" -#: views.py:286 views.py:607 -#, python-format -msgid "Permission \"%(permission)s\" revoked of %(actor)s for %(object)s." -msgstr "" +#~ msgid "Classes" +#~ msgstr "classes" -#: views.py:292 views.py:613 -#, python-format -msgid "%(actor)s, didn't had the permission \"%(permission)s\" for %(object)s." -msgstr "" +#~ msgid "ACLs for class" +#~ msgstr "ACLs for class" -#: views.py:346 -#, python-format -msgid "Add new holder for: %s" -msgstr "" +#~ msgid "Permission" +#~ msgstr "permissions" -#: views.py:347 views.py:477 -msgid "Select" -msgstr "" +#~ msgid "Default access entry" +#~ msgstr "default access entry" -#: views.py:381 -msgid "Class" -msgstr "" +#~ msgid "Default access entries" +#~ msgstr "default access entries" -#: views.py:400 -#, python-format -msgid "Default access control lists for class: %s" -msgstr "" +#~ msgid "Creator" +#~ msgstr "Creator" -#: views.py:428 -#, python-format -msgid "Permissions available to: %(actor)s for class %(class)s" -msgstr "" +#~ msgid "Edit class default ACLs" +#~ msgstr "Edit class default ACLs" -#: views.py:475 -#, python-format -msgid "Add new holder for class: %s" -msgstr "" +#~ msgid "View class default ACLs" +#~ msgstr "View class default ACLs" + +#~ msgid "Holder" +#~ msgstr "holder" + +#~ msgid "Permissions available to: %(actor)s for %(obj)s" +#~ msgstr "permissions available to: %(actor)s for %(obj)s" + +#~ msgid "Namespace" +#~ msgstr "namespace" + +#~ msgid "Label" +#~ msgstr "label" + +#~ msgid ", " +#~ msgstr ", " + +#~ msgid " for %s" +#~ msgstr " for %s" + +#~ msgid " to %s" +#~ msgstr " to %s" + +#~ msgid "Are you sure you wish to grant the permission %(title_suffix)s?" +#~ msgstr "Are you sure you wish to grant the permission %(title_suffix)s?" + +#~ msgid "Are you sure you wish to grant the permissions %(title_suffix)s?" +#~ msgstr "Are you sure you wish to grant the permissions %(title_suffix)s?" + +#~ msgid "Permission \"%(permission)s\" granted to %(actor)s for %(object)s." +#~ msgstr "Permission \"%(permission)s\" granted to %(actor)s for %(object)s." + +#~ msgid "" +#~ "%(actor)s, already had the permission \"%(permission)s\" granted for " +#~ "%(object)s." +#~ msgstr "" +#~ "%(actor)s, already had the permission \"%(permission)s\" granted for " +#~ "%(object)s." + +#~ msgid " from %s" +#~ msgstr " from %s" + +#~ msgid "Are you sure you wish to revoke the permission %(title_suffix)s?" +#~ msgstr "Are you sure you wish to revoke the permission %(title_suffix)s?" + +#~ msgid "Are you sure you wish to revoke the permissions %(title_suffix)s?" +#~ msgstr "Are you sure you wish to revoke the permissions %(title_suffix)s?" + +#~ msgid "Permission \"%(permission)s\" revoked of %(actor)s for %(object)s." +#~ msgstr "Permission \"%(permission)s\" revoked of %(actor)s for %(object)s." + +#~ msgid "%(actor)s, didn't had the permission \"%(permission)s\" for %(object)s." +#~ msgstr "%(actor)s, didn't had the permission \"%(permission)s\" for %(object)s." + +#~ msgid "Add new holder for: %s" +#~ msgstr "add new holder for: %s" + +#~ msgid "Select" +#~ msgstr "Select" + +#~ msgid "Class" +#~ msgstr "class" + +#~ msgid "Default access control lists for class: %s" +#~ msgstr "default access control lists for class: %s" + +#~ msgid "Permissions available to: %(actor)s for class %(class)s" +#~ msgstr "permissions available to: %(actor)s for class %(class)s" + +#~ msgid "Add new holder for class: %s" +#~ msgstr "add new holder for class: %s" #~ msgid "List of classes" #~ msgstr "List of classes" diff --git a/mayan/apps/acls/locale/id/LC_MESSAGES/django.mo b/mayan/apps/acls/locale/id/LC_MESSAGES/django.mo index ccfcf30cd7..bb45405812 100644 Binary files a/mayan/apps/acls/locale/id/LC_MESSAGES/django.mo and b/mayan/apps/acls/locale/id/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/acls/locale/id/LC_MESSAGES/django.po b/mayan/apps/acls/locale/id/LC_MESSAGES/django.po index b60d386aee..f47f3e3017 100644 --- a/mayan/apps/acls/locale/id/LC_MESSAGES/django.po +++ b/mayan/apps/acls/locale/id/LC_MESSAGES/django.po @@ -8,93 +8,55 @@ msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2015-05-15 18:59-0400\n" -"PO-Revision-Date: 2014-10-25 06:47+0000\n" +"POT-Creation-Date: 2015-09-24 16:24-0400\n" +"PO-Revision-Date: 2015-09-24 05:15+0000\n" "Last-Translator: Roberto Rosario\n" -"Language-Team: Indonesian (http://www.transifex.com/projects/p/mayan-edms/language/id/)\n" +"Language-Team: Indonesian (http://www.transifex.com/rosarior/mayan-edms/language/id/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: id\n" "Plural-Forms: nplurals=1; plural=0;\n" -#: forms.py:25 links.py:13 links.py:19 -msgid "New holder" -msgstr "" - -#: forms.py:42 -msgid "Users" -msgstr "" - -#: forms.py:45 -msgid "Groups" -msgstr "" - -#: forms.py:48 -msgid "Roles" -msgstr "" - -#: forms.py:51 -msgid "Special" -msgstr "" - -#: links.py:9 +#: apps.py:14 links.py:30 msgid "ACLs" msgstr "" -#: links.py:10 links.py:18 -msgid "Details" +#: apps.py:20 links.py:38 models.py:36 +msgid "Permissions" msgstr "" -#: links.py:11 links.py:20 -msgid "Grant" +#: apps.py:24 models.py:38 +#| msgid "Roles" +msgid "Role" msgstr "" -#: links.py:12 links.py:21 -msgid "Revoke" +#: links.py:26 +msgid "Delete" msgstr "" -#: links.py:15 -msgid "Default ACLs" +#: links.py:34 +#| msgid "View ACLs" +msgid "New ACL" msgstr "" -#: links.py:16 views.py:379 -msgid "Classes" -msgstr "" - -#: links.py:17 -msgid "ACLs for class" -msgstr "" - -#: managers.py:118 managers.py:130 +#: managers.py:72 msgid "Insufficient access." msgstr "" -#: models.py:25 models.py:67 -msgid "Permission" -msgstr "" - -#: models.py:51 +#: models.py:44 msgid "Access entry" msgstr "" -#: models.py:52 +#: models.py:45 msgid "Access entries" msgstr "" -#: models.py:88 -msgid "Default access entry" +#: models.py:60 +msgid "None" msgstr "" -#: models.py:89 -msgid "Default access entries" -msgstr "" - -#: models.py:108 models.py:111 models.py:112 -msgid "Creator" -msgstr "" - -#: permissions.py:7 permissions.py:8 +#: permissions.py:7 msgid "Access control lists" msgstr "" @@ -102,136 +64,157 @@ msgstr "" msgid "Edit ACLs" msgstr "" -#: permissions.py:11 +#: permissions.py:13 msgid "View ACLs" msgstr "" -#: permissions.py:13 -msgid "Edit class default ACLs" -msgstr "" - -#: permissions.py:14 -msgid "View class default ACLs" -msgstr "" - -#: views.py:48 +#: views.py:61 #, python-format msgid "Access control lists for: %s" msgstr "" -#: views.py:50 views.py:402 -msgid "Holder" -msgstr "" - -#: views.py:51 views.py:403 -msgid "Permissions" -msgstr "" - -#: views.py:98 +#: views.py:107 #, python-format -msgid "Permissions available to: %(actor)s for %(obj)s" +msgid "New access control lists for: %s" msgstr "" -#: views.py:105 views.py:434 -msgid "Namespace" -msgstr "" - -#: views.py:106 views.py:435 -msgid "Label" -msgstr "" - -#: views.py:108 views.py:437 -msgid "Has permission" -msgstr "" - -#: views.py:181 views.py:272 views.py:516 views.py:593 -msgid ", " -msgstr "" - -#: views.py:182 views.py:273 views.py:517 views.py:594 +#: views.py:132 #, python-format -msgid " for %s" +#| msgid "Default ACLs" +msgid "Delete ACL: %s" msgstr "" -#: views.py:183 views.py:518 +#: views.py:147 +msgid "Available permissions" +msgstr "" + +#: views.py:148 +msgid "Granted permissions" +msgstr "" + +#: views.py:187 +msgid "Disabled permissions are inherited from a parent object." +msgstr "" + +#: views.py:218 #, python-format -msgid " to %s" +msgid "Role \"%(role)s\" permission's for \"%(object)s\"" msgstr "" -#: views.py:186 views.py:521 -#, python-format -msgid "Are you sure you wish to grant the permission %(title_suffix)s?" -msgstr "" +#~ msgid "New holder" +#~ msgstr "New holder" -#: views.py:188 views.py:523 -#, python-format -msgid "Are you sure you wish to grant the permissions %(title_suffix)s?" -msgstr "" +#~ msgid "Users" +#~ msgstr "Users" -#: views.py:195 views.py:530 -#, python-format -msgid "Permission \"%(permission)s\" granted to %(actor)s for %(object)s." -msgstr "" +#~ msgid "Groups" +#~ msgstr "Groups" -#: views.py:201 views.py:536 -#, python-format -msgid "" -"%(actor)s, already had the permission \"%(permission)s\" granted for " -"%(object)s." -msgstr "" +#~ msgid "Special" +#~ msgstr "Special" -#: views.py:274 views.py:595 -#, python-format -msgid " from %s" -msgstr "" +#~ msgid "Details" +#~ msgstr "details" -#: views.py:277 views.py:598 -#, python-format -msgid "Are you sure you wish to revoke the permission %(title_suffix)s?" -msgstr "" +#~ msgid "Grant" +#~ msgstr "grant" -#: views.py:279 views.py:600 -#, python-format -msgid "Are you sure you wish to revoke the permissions %(title_suffix)s?" -msgstr "" +#~ msgid "Revoke" +#~ msgstr "revoke" -#: views.py:286 views.py:607 -#, python-format -msgid "Permission \"%(permission)s\" revoked of %(actor)s for %(object)s." -msgstr "" +#~ msgid "Classes" +#~ msgstr "classes" -#: views.py:292 views.py:613 -#, python-format -msgid "%(actor)s, didn't had the permission \"%(permission)s\" for %(object)s." -msgstr "" +#~ msgid "ACLs for class" +#~ msgstr "ACLs for class" -#: views.py:346 -#, python-format -msgid "Add new holder for: %s" -msgstr "" +#~ msgid "Permission" +#~ msgstr "permissions" -#: views.py:347 views.py:477 -msgid "Select" -msgstr "" +#~ msgid "Default access entry" +#~ msgstr "default access entry" -#: views.py:381 -msgid "Class" -msgstr "" +#~ msgid "Default access entries" +#~ msgstr "default access entries" -#: views.py:400 -#, python-format -msgid "Default access control lists for class: %s" -msgstr "" +#~ msgid "Creator" +#~ msgstr "Creator" -#: views.py:428 -#, python-format -msgid "Permissions available to: %(actor)s for class %(class)s" -msgstr "" +#~ msgid "Edit class default ACLs" +#~ msgstr "Edit class default ACLs" -#: views.py:475 -#, python-format -msgid "Add new holder for class: %s" -msgstr "" +#~ msgid "View class default ACLs" +#~ msgstr "View class default ACLs" + +#~ msgid "Holder" +#~ msgstr "holder" + +#~ msgid "Permissions available to: %(actor)s for %(obj)s" +#~ msgstr "permissions available to: %(actor)s for %(obj)s" + +#~ msgid "Namespace" +#~ msgstr "namespace" + +#~ msgid "Label" +#~ msgstr "label" + +#~ msgid ", " +#~ msgstr ", " + +#~ msgid " for %s" +#~ msgstr " for %s" + +#~ msgid " to %s" +#~ msgstr " to %s" + +#~ msgid "Are you sure you wish to grant the permission %(title_suffix)s?" +#~ msgstr "Are you sure you wish to grant the permission %(title_suffix)s?" + +#~ msgid "Are you sure you wish to grant the permissions %(title_suffix)s?" +#~ msgstr "Are you sure you wish to grant the permissions %(title_suffix)s?" + +#~ msgid "Permission \"%(permission)s\" granted to %(actor)s for %(object)s." +#~ msgstr "Permission \"%(permission)s\" granted to %(actor)s for %(object)s." + +#~ msgid "" +#~ "%(actor)s, already had the permission \"%(permission)s\" granted for " +#~ "%(object)s." +#~ msgstr "" +#~ "%(actor)s, already had the permission \"%(permission)s\" granted for " +#~ "%(object)s." + +#~ msgid " from %s" +#~ msgstr " from %s" + +#~ msgid "Are you sure you wish to revoke the permission %(title_suffix)s?" +#~ msgstr "Are you sure you wish to revoke the permission %(title_suffix)s?" + +#~ msgid "Are you sure you wish to revoke the permissions %(title_suffix)s?" +#~ msgstr "Are you sure you wish to revoke the permissions %(title_suffix)s?" + +#~ msgid "Permission \"%(permission)s\" revoked of %(actor)s for %(object)s." +#~ msgstr "Permission \"%(permission)s\" revoked of %(actor)s for %(object)s." + +#~ msgid "%(actor)s, didn't had the permission \"%(permission)s\" for %(object)s." +#~ msgstr "%(actor)s, didn't had the permission \"%(permission)s\" for %(object)s." + +#~ msgid "Add new holder for: %s" +#~ msgstr "add new holder for: %s" + +#~ msgid "Select" +#~ msgstr "Select" + +#~ msgid "Class" +#~ msgstr "class" + +#~ msgid "Default access control lists for class: %s" +#~ msgstr "default access control lists for class: %s" + +#~ msgid "Permissions available to: %(actor)s for class %(class)s" +#~ msgstr "permissions available to: %(actor)s for class %(class)s" + +#~ msgid "Add new holder for class: %s" +#~ msgstr "add new holder for class: %s" #~ msgid "List of classes" #~ msgstr "List of classes" diff --git a/mayan/apps/acls/locale/it/LC_MESSAGES/django.mo b/mayan/apps/acls/locale/it/LC_MESSAGES/django.mo index 0fe9169554..8f08ef0474 100644 Binary files a/mayan/apps/acls/locale/it/LC_MESSAGES/django.mo and b/mayan/apps/acls/locale/it/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/acls/locale/it/LC_MESSAGES/django.po b/mayan/apps/acls/locale/it/LC_MESSAGES/django.po index 07b557e620..d4b95dc20d 100644 --- a/mayan/apps/acls/locale/it/LC_MESSAGES/django.po +++ b/mayan/apps/acls/locale/it/LC_MESSAGES/django.po @@ -4,238 +4,217 @@ # # Translators: # Translators: -# Carlo Zanatto <>, 2012 -# Pierpaolo Baldan , 2012,2015 -# Roberto Rosario, 2012 -# Roberto Rosario, 2012 msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2015-05-15 18:59-0400\n" -"PO-Revision-Date: 2015-01-29 07:17+0000\n" -"Last-Translator: Pierpaolo Baldan \n" -"Language-Team: Italian (http://www.transifex.com/projects/p/mayan-edms/language/it/)\n" +"POT-Creation-Date: 2015-09-24 16:24-0400\n" +"PO-Revision-Date: 2015-09-24 05:15+0000\n" +"Last-Translator: Roberto Rosario\n" +"Language-Team: Italian (http://www.transifex.com/rosarior/mayan-edms/language/it/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: it\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: forms.py:25 links.py:13 links.py:19 -msgid "New holder" -msgstr "Nuovo titolare" - -#: forms.py:42 -msgid "Users" -msgstr "Utenti" - -#: forms.py:45 -msgid "Groups" -msgstr "Gruppi" - -#: forms.py:48 -msgid "Roles" -msgstr "Ruoli" - -#: forms.py:51 -msgid "Special" -msgstr "Speciale" - -#: links.py:9 +#: apps.py:14 links.py:30 msgid "ACLs" -msgstr "ACL" +msgstr "" -#: links.py:10 links.py:18 -msgid "Details" -msgstr "Dettagli" +#: apps.py:20 links.py:38 models.py:36 +msgid "Permissions" +msgstr "" -#: links.py:11 links.py:20 -msgid "Grant" -msgstr "Permessi" +#: apps.py:24 models.py:38 +#| msgid "Roles" +msgid "Role" +msgstr "" -#: links.py:12 links.py:21 -msgid "Revoke" -msgstr "Revoca" +#: links.py:26 +msgid "Delete" +msgstr "" -#: links.py:15 -msgid "Default ACLs" -msgstr "Default ACL" +#: links.py:34 +#| msgid "View ACLs" +msgid "New ACL" +msgstr "" -#: links.py:16 views.py:379 -msgid "Classes" -msgstr "Classi" - -#: links.py:17 -msgid "ACLs for class" -msgstr "ACL per la classe" - -#: managers.py:118 managers.py:130 +#: managers.py:72 msgid "Insufficient access." -msgstr "Accesso insufficiente." +msgstr "" -#: models.py:25 models.py:67 -msgid "Permission" -msgstr "Permessi" - -#: models.py:51 +#: models.py:44 msgid "Access entry" -msgstr "Voce di accesso" +msgstr "" -#: models.py:52 +#: models.py:45 msgid "Access entries" -msgstr "Voci di accesso" +msgstr "" -#: models.py:88 -msgid "Default access entry" -msgstr "Voce di accesso di default" +#: models.py:60 +msgid "None" +msgstr "" -#: models.py:89 -msgid "Default access entries" -msgstr "Voci di accesso di default" - -#: models.py:108 models.py:111 models.py:112 -msgid "Creator" -msgstr "Creatore" - -#: permissions.py:7 permissions.py:8 +#: permissions.py:7 msgid "Access control lists" -msgstr "Liste di controllo accessi" +msgstr "" #: permissions.py:10 msgid "Edit ACLs" -msgstr "Modifica ACL" - -#: permissions.py:11 -msgid "View ACLs" -msgstr "Visualizza ACL" +msgstr "" #: permissions.py:13 -msgid "Edit class default ACLs" -msgstr "Modifica ACL predefiniti di classe" +msgid "View ACLs" +msgstr "" -#: permissions.py:14 -msgid "View class default ACLs" -msgstr "Visualizza classi ACL predefinite" - -#: views.py:48 +#: views.py:61 #, python-format msgid "Access control lists for: %s" -msgstr "Lista dei permessi d'accesso per: %s" +msgstr "" -#: views.py:50 views.py:402 -msgid "Holder" -msgstr "Titolare" - -#: views.py:51 views.py:403 -msgid "Permissions" -msgstr "Permessi" - -#: views.py:98 +#: views.py:107 #, python-format -msgid "Permissions available to: %(actor)s for %(obj)s" -msgstr "Permessi disponibili per: %(actor)s per %(obj)s" +msgid "New access control lists for: %s" +msgstr "" -#: views.py:105 views.py:434 -msgid "Namespace" -msgstr "Namespace" - -#: views.py:106 views.py:435 -msgid "Label" -msgstr "Etichetta" - -#: views.py:108 views.py:437 -msgid "Has permission" -msgstr "Ha il permesso" - -#: views.py:181 views.py:272 views.py:516 views.py:593 -msgid ", " -msgstr ", " - -#: views.py:182 views.py:273 views.py:517 views.py:594 +#: views.py:132 #, python-format -msgid " for %s" -msgstr "per %s" +#| msgid "Default ACLs" +msgid "Delete ACL: %s" +msgstr "" -#: views.py:183 views.py:518 +#: views.py:147 +msgid "Available permissions" +msgstr "" + +#: views.py:148 +msgid "Granted permissions" +msgstr "" + +#: views.py:187 +msgid "Disabled permissions are inherited from a parent object." +msgstr "" + +#: views.py:218 #, python-format -msgid " to %s" -msgstr "a %s" +msgid "Role \"%(role)s\" permission's for \"%(object)s\"" +msgstr "" -#: views.py:186 views.py:521 -#, python-format -msgid "Are you sure you wish to grant the permission %(title_suffix)s?" -msgstr "Sei sicuro di voler concedere l'autorizzazione %(title_suffix)s?" +#~ msgid "New holder" +#~ msgstr "New holder" -#: views.py:188 views.py:523 -#, python-format -msgid "Are you sure you wish to grant the permissions %(title_suffix)s?" -msgstr "Sei sicuro di voler concedere permessi %(title_suffix)s?" +#~ msgid "Users" +#~ msgstr "Users" -#: views.py:195 views.py:530 -#, python-format -msgid "Permission \"%(permission)s\" granted to %(actor)s for %(object)s." -msgstr "Permesso \"%(permission)s\" concesso%(actor)s per %(object)s." +#~ msgid "Groups" +#~ msgstr "Groups" -#: views.py:201 views.py:536 -#, python-format -msgid "" -"%(actor)s, already had the permission \"%(permission)s\" granted for " -"%(object)s." -msgstr "%(actor)s, ha già i permessi\"%(permission)s\" concessi per%(object)s." +#~ msgid "Special" +#~ msgstr "Special" -#: views.py:274 views.py:595 -#, python-format -msgid " from %s" -msgstr "da %s" +#~ msgid "Details" +#~ msgstr "details" -#: views.py:277 views.py:598 -#, python-format -msgid "Are you sure you wish to revoke the permission %(title_suffix)s?" -msgstr "Sei sicuro di voler revocare l'autorizzazione %(title_suffix)s?" +#~ msgid "Grant" +#~ msgstr "grant" -#: views.py:279 views.py:600 -#, python-format -msgid "Are you sure you wish to revoke the permissions %(title_suffix)s?" -msgstr "Sei sicuro di voler revocare permessi %(title_suffix)s?" +#~ msgid "Revoke" +#~ msgstr "revoke" -#: views.py:286 views.py:607 -#, python-format -msgid "Permission \"%(permission)s\" revoked of %(actor)s for %(object)s." -msgstr "Permessi \"%(permission)s\" revocati al %(actor)s per %(object)s." +#~ msgid "Classes" +#~ msgstr "classes" -#: views.py:292 views.py:613 -#, python-format -msgid "%(actor)s, didn't had the permission \"%(permission)s\" for %(object)s." -msgstr "%(actor)s, non ha i permessi\"%(permission)s\" per %(object)s." +#~ msgid "ACLs for class" +#~ msgstr "ACLs for class" -#: views.py:346 -#, python-format -msgid "Add new holder for: %s" -msgstr "Aggiungi un nuovo proprietario per: %s" +#~ msgid "Permission" +#~ msgstr "permissions" -#: views.py:347 views.py:477 -msgid "Select" -msgstr "Selezionare" +#~ msgid "Default access entry" +#~ msgstr "default access entry" -#: views.py:381 -msgid "Class" -msgstr "Classe" +#~ msgid "Default access entries" +#~ msgstr "default access entries" -#: views.py:400 -#, python-format -msgid "Default access control lists for class: %s" -msgstr "Lista di default per il controlli d'accesso alla classe: %s" +#~ msgid "Creator" +#~ msgstr "Creator" -#: views.py:428 -#, python-format -msgid "Permissions available to: %(actor)s for class %(class)s" -msgstr "Permessi disponibili per: %(actor)s per la classe %(class)s" +#~ msgid "Edit class default ACLs" +#~ msgstr "Edit class default ACLs" -#: views.py:475 -#, python-format -msgid "Add new holder for class: %s" -msgstr "Aggiungi un nuovo proprietario per la classe: %s" +#~ msgid "View class default ACLs" +#~ msgstr "View class default ACLs" + +#~ msgid "Holder" +#~ msgstr "holder" + +#~ msgid "Permissions available to: %(actor)s for %(obj)s" +#~ msgstr "permissions available to: %(actor)s for %(obj)s" + +#~ msgid "Namespace" +#~ msgstr "namespace" + +#~ msgid "Label" +#~ msgstr "label" + +#~ msgid ", " +#~ msgstr ", " + +#~ msgid " for %s" +#~ msgstr " for %s" + +#~ msgid " to %s" +#~ msgstr " to %s" + +#~ msgid "Are you sure you wish to grant the permission %(title_suffix)s?" +#~ msgstr "Are you sure you wish to grant the permission %(title_suffix)s?" + +#~ msgid "Are you sure you wish to grant the permissions %(title_suffix)s?" +#~ msgstr "Are you sure you wish to grant the permissions %(title_suffix)s?" + +#~ msgid "Permission \"%(permission)s\" granted to %(actor)s for %(object)s." +#~ msgstr "Permission \"%(permission)s\" granted to %(actor)s for %(object)s." + +#~ msgid "" +#~ "%(actor)s, already had the permission \"%(permission)s\" granted for " +#~ "%(object)s." +#~ msgstr "" +#~ "%(actor)s, already had the permission \"%(permission)s\" granted for " +#~ "%(object)s." + +#~ msgid " from %s" +#~ msgstr " from %s" + +#~ msgid "Are you sure you wish to revoke the permission %(title_suffix)s?" +#~ msgstr "Are you sure you wish to revoke the permission %(title_suffix)s?" + +#~ msgid "Are you sure you wish to revoke the permissions %(title_suffix)s?" +#~ msgstr "Are you sure you wish to revoke the permissions %(title_suffix)s?" + +#~ msgid "Permission \"%(permission)s\" revoked of %(actor)s for %(object)s." +#~ msgstr "Permission \"%(permission)s\" revoked of %(actor)s for %(object)s." + +#~ msgid "%(actor)s, didn't had the permission \"%(permission)s\" for %(object)s." +#~ msgstr "%(actor)s, didn't had the permission \"%(permission)s\" for %(object)s." + +#~ msgid "Add new holder for: %s" +#~ msgstr "add new holder for: %s" + +#~ msgid "Select" +#~ msgstr "Select" + +#~ msgid "Class" +#~ msgstr "class" + +#~ msgid "Default access control lists for class: %s" +#~ msgstr "default access control lists for class: %s" + +#~ msgid "Permissions available to: %(actor)s for class %(class)s" +#~ msgstr "permissions available to: %(actor)s for class %(class)s" + +#~ msgid "Add new holder for class: %s" +#~ msgstr "add new holder for class: %s" #~ msgid "List of classes" #~ msgstr "List of classes" diff --git a/mayan/apps/acls/locale/lv/LC_MESSAGES/django.mo b/mayan/apps/acls/locale/lv/LC_MESSAGES/django.mo deleted file mode 100644 index 738d066103..0000000000 Binary files a/mayan/apps/acls/locale/lv/LC_MESSAGES/django.mo and /dev/null differ diff --git a/mayan/apps/acls/locale/lv/LC_MESSAGES/django.po b/mayan/apps/acls/locale/lv/LC_MESSAGES/django.po deleted file mode 100644 index be4cd66869..0000000000 --- a/mayan/apps/acls/locale/lv/LC_MESSAGES/django.po +++ /dev/null @@ -1,245 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -# Translators: -msgid "" -msgstr "" -"Project-Id-Version: Mayan EDMS\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2015-05-15 18:59-0400\n" -"PO-Revision-Date: 2014-10-25 06:47+0000\n" -"Last-Translator: Roberto Rosario\n" -"Language-Team: Latvian (http://www.transifex.com/projects/p/mayan-edms/" -"language/lv/)\n" -"Language: lv\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n != 0 ? 1 : " -"2);\n" - -#: forms.py:25 links.py:13 links.py:19 -msgid "New holder" -msgstr "" - -#: forms.py:42 -msgid "Users" -msgstr "" - -#: forms.py:45 -msgid "Groups" -msgstr "" - -#: forms.py:48 -msgid "Roles" -msgstr "" - -#: forms.py:51 -msgid "Special" -msgstr "" - -#: links.py:9 -msgid "ACLs" -msgstr "" - -#: links.py:10 links.py:18 -msgid "Details" -msgstr "" - -#: links.py:11 links.py:20 -msgid "Grant" -msgstr "" - -#: links.py:12 links.py:21 -msgid "Revoke" -msgstr "" - -#: links.py:15 -msgid "Default ACLs" -msgstr "" - -#: links.py:16 views.py:379 -msgid "Classes" -msgstr "" - -#: links.py:17 -msgid "ACLs for class" -msgstr "" - -#: managers.py:118 managers.py:130 -msgid "Insufficient access." -msgstr "" - -#: models.py:25 models.py:67 -msgid "Permission" -msgstr "" - -#: models.py:51 -msgid "Access entry" -msgstr "" - -#: models.py:52 -msgid "Access entries" -msgstr "" - -#: models.py:88 -msgid "Default access entry" -msgstr "" - -#: models.py:89 -msgid "Default access entries" -msgstr "" - -#: models.py:108 models.py:111 models.py:112 -msgid "Creator" -msgstr "" - -#: permissions.py:7 permissions.py:8 -msgid "Access control lists" -msgstr "" - -#: permissions.py:10 -msgid "Edit ACLs" -msgstr "" - -#: permissions.py:11 -msgid "View ACLs" -msgstr "" - -#: permissions.py:13 -msgid "Edit class default ACLs" -msgstr "" - -#: permissions.py:14 -msgid "View class default ACLs" -msgstr "" - -#: views.py:48 -#, python-format -msgid "Access control lists for: %s" -msgstr "" - -#: views.py:50 views.py:402 -msgid "Holder" -msgstr "" - -#: views.py:51 views.py:403 -msgid "Permissions" -msgstr "" - -#: views.py:98 -#, python-format -msgid "Permissions available to: %(actor)s for %(obj)s" -msgstr "" - -#: views.py:105 views.py:434 -msgid "Namespace" -msgstr "" - -#: views.py:106 views.py:435 -msgid "Label" -msgstr "" - -#: views.py:108 views.py:437 -msgid "Has permission" -msgstr "" - -#: views.py:181 views.py:272 views.py:516 views.py:593 -msgid ", " -msgstr "" - -#: views.py:182 views.py:273 views.py:517 views.py:594 -#, python-format -msgid " for %s" -msgstr "" - -#: views.py:183 views.py:518 -#, python-format -msgid " to %s" -msgstr "" - -#: views.py:186 views.py:521 -#, python-format -msgid "Are you sure you wish to grant the permission %(title_suffix)s?" -msgstr "" - -#: views.py:188 views.py:523 -#, python-format -msgid "Are you sure you wish to grant the permissions %(title_suffix)s?" -msgstr "" - -#: views.py:195 views.py:530 -#, python-format -msgid "Permission \"%(permission)s\" granted to %(actor)s for %(object)s." -msgstr "" - -#: views.py:201 views.py:536 -#, python-format -msgid "" -"%(actor)s, already had the permission \"%(permission)s\" granted for " -"%(object)s." -msgstr "" - -#: views.py:274 views.py:595 -#, python-format -msgid " from %s" -msgstr "" - -#: views.py:277 views.py:598 -#, python-format -msgid "Are you sure you wish to revoke the permission %(title_suffix)s?" -msgstr "" - -#: views.py:279 views.py:600 -#, python-format -msgid "Are you sure you wish to revoke the permissions %(title_suffix)s?" -msgstr "" - -#: views.py:286 views.py:607 -#, python-format -msgid "Permission \"%(permission)s\" revoked of %(actor)s for %(object)s." -msgstr "" - -#: views.py:292 views.py:613 -#, python-format -msgid "%(actor)s, didn't had the permission \"%(permission)s\" for %(object)s." -msgstr "" - -#: views.py:346 -#, python-format -msgid "Add new holder for: %s" -msgstr "" - -#: views.py:347 views.py:477 -msgid "Select" -msgstr "" - -#: views.py:381 -msgid "Class" -msgstr "" - -#: views.py:400 -#, python-format -msgid "Default access control lists for class: %s" -msgstr "" - -#: views.py:428 -#, python-format -msgid "Permissions available to: %(actor)s for class %(class)s" -msgstr "" - -#: views.py:475 -#, python-format -msgid "Add new holder for class: %s" -msgstr "" - -#~ msgid "List of classes" -#~ msgstr "List of classes" - -#~ msgid "permission" -#~ msgstr "permission" - -#~ msgid "creator" -#~ msgstr "creator" diff --git a/mayan/apps/acls/locale/nb/LC_MESSAGES/django.po b/mayan/apps/acls/locale/nb/LC_MESSAGES/django.po deleted file mode 100644 index 4f9cd484f3..0000000000 --- a/mayan/apps/acls/locale/nb/LC_MESSAGES/django.po +++ /dev/null @@ -1,244 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -# Translators: -msgid "" -msgstr "" -"Project-Id-Version: Mayan EDMS\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2015-05-15 18:59-0400\n" -"PO-Revision-Date: 2014-10-25 06:47+0000\n" -"Last-Translator: Roberto Rosario\n" -"Language-Team: Norwegian Bokmål (http://www.transifex.com/projects/p/mayan-" -"edms/language/nb/)\n" -"Language: nb\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" - -#: forms.py:25 links.py:13 links.py:19 -msgid "New holder" -msgstr "" - -#: forms.py:42 -msgid "Users" -msgstr "" - -#: forms.py:45 -msgid "Groups" -msgstr "" - -#: forms.py:48 -msgid "Roles" -msgstr "" - -#: forms.py:51 -msgid "Special" -msgstr "" - -#: links.py:9 -msgid "ACLs" -msgstr "" - -#: links.py:10 links.py:18 -msgid "Details" -msgstr "" - -#: links.py:11 links.py:20 -msgid "Grant" -msgstr "" - -#: links.py:12 links.py:21 -msgid "Revoke" -msgstr "" - -#: links.py:15 -msgid "Default ACLs" -msgstr "" - -#: links.py:16 views.py:379 -msgid "Classes" -msgstr "" - -#: links.py:17 -msgid "ACLs for class" -msgstr "" - -#: managers.py:118 managers.py:130 -msgid "Insufficient access." -msgstr "" - -#: models.py:25 models.py:67 -msgid "Permission" -msgstr "" - -#: models.py:51 -msgid "Access entry" -msgstr "" - -#: models.py:52 -msgid "Access entries" -msgstr "" - -#: models.py:88 -msgid "Default access entry" -msgstr "" - -#: models.py:89 -msgid "Default access entries" -msgstr "" - -#: models.py:108 models.py:111 models.py:112 -msgid "Creator" -msgstr "" - -#: permissions.py:7 permissions.py:8 -msgid "Access control lists" -msgstr "" - -#: permissions.py:10 -msgid "Edit ACLs" -msgstr "" - -#: permissions.py:11 -msgid "View ACLs" -msgstr "" - -#: permissions.py:13 -msgid "Edit class default ACLs" -msgstr "" - -#: permissions.py:14 -msgid "View class default ACLs" -msgstr "" - -#: views.py:48 -#, python-format -msgid "Access control lists for: %s" -msgstr "" - -#: views.py:50 views.py:402 -msgid "Holder" -msgstr "" - -#: views.py:51 views.py:403 -msgid "Permissions" -msgstr "" - -#: views.py:98 -#, python-format -msgid "Permissions available to: %(actor)s for %(obj)s" -msgstr "" - -#: views.py:105 views.py:434 -msgid "Namespace" -msgstr "" - -#: views.py:106 views.py:435 -msgid "Label" -msgstr "" - -#: views.py:108 views.py:437 -msgid "Has permission" -msgstr "" - -#: views.py:181 views.py:272 views.py:516 views.py:593 -msgid ", " -msgstr "" - -#: views.py:182 views.py:273 views.py:517 views.py:594 -#, python-format -msgid " for %s" -msgstr "" - -#: views.py:183 views.py:518 -#, python-format -msgid " to %s" -msgstr "" - -#: views.py:186 views.py:521 -#, python-format -msgid "Are you sure you wish to grant the permission %(title_suffix)s?" -msgstr "" - -#: views.py:188 views.py:523 -#, python-format -msgid "Are you sure you wish to grant the permissions %(title_suffix)s?" -msgstr "" - -#: views.py:195 views.py:530 -#, python-format -msgid "Permission \"%(permission)s\" granted to %(actor)s for %(object)s." -msgstr "" - -#: views.py:201 views.py:536 -#, python-format -msgid "" -"%(actor)s, already had the permission \"%(permission)s\" granted for " -"%(object)s." -msgstr "" - -#: views.py:274 views.py:595 -#, python-format -msgid " from %s" -msgstr "" - -#: views.py:277 views.py:598 -#, python-format -msgid "Are you sure you wish to revoke the permission %(title_suffix)s?" -msgstr "" - -#: views.py:279 views.py:600 -#, python-format -msgid "Are you sure you wish to revoke the permissions %(title_suffix)s?" -msgstr "" - -#: views.py:286 views.py:607 -#, python-format -msgid "Permission \"%(permission)s\" revoked of %(actor)s for %(object)s." -msgstr "" - -#: views.py:292 views.py:613 -#, python-format -msgid "%(actor)s, didn't had the permission \"%(permission)s\" for %(object)s." -msgstr "" - -#: views.py:346 -#, python-format -msgid "Add new holder for: %s" -msgstr "" - -#: views.py:347 views.py:477 -msgid "Select" -msgstr "" - -#: views.py:381 -msgid "Class" -msgstr "" - -#: views.py:400 -#, python-format -msgid "Default access control lists for class: %s" -msgstr "" - -#: views.py:428 -#, python-format -msgid "Permissions available to: %(actor)s for class %(class)s" -msgstr "" - -#: views.py:475 -#, python-format -msgid "Add new holder for class: %s" -msgstr "" - -#~ msgid "List of classes" -#~ msgstr "List of classes" - -#~ msgid "permission" -#~ msgstr "permission" - -#~ msgid "creator" -#~ msgstr "creator" diff --git a/mayan/apps/acls/locale/nl_NL/LC_MESSAGES/django.mo b/mayan/apps/acls/locale/nl_NL/LC_MESSAGES/django.mo index 6a71e6047f..92622140fd 100644 Binary files a/mayan/apps/acls/locale/nl_NL/LC_MESSAGES/django.mo and b/mayan/apps/acls/locale/nl_NL/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/acls/locale/nl_NL/LC_MESSAGES/django.po b/mayan/apps/acls/locale/nl_NL/LC_MESSAGES/django.po index 475f6e3d50..3179dc48c5 100644 --- a/mayan/apps/acls/locale/nl_NL/LC_MESSAGES/django.po +++ b/mayan/apps/acls/locale/nl_NL/LC_MESSAGES/django.po @@ -4,236 +4,217 @@ # # Translators: # Translators: -# Lucas Weel , 2013 -# woei , 2014 msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2015-05-15 18:59-0400\n" -"PO-Revision-Date: 2014-10-25 06:47+0000\n" +"POT-Creation-Date: 2015-09-24 16:24-0400\n" +"PO-Revision-Date: 2015-09-24 05:15+0000\n" "Last-Translator: Roberto Rosario\n" -"Language-Team: Dutch (Netherlands) (http://www.transifex.com/projects/p/mayan-edms/language/nl_NL/)\n" +"Language-Team: Dutch (Netherlands) (http://www.transifex.com/rosarior/mayan-edms/language/nl_NL/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: nl_NL\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: forms.py:25 links.py:13 links.py:19 -msgid "New holder" -msgstr "Nieuwe houder" - -#: forms.py:42 -msgid "Users" -msgstr "Gebruikers" - -#: forms.py:45 -msgid "Groups" -msgstr "Groepen" - -#: forms.py:48 -msgid "Roles" -msgstr "gebruikersrollen" - -#: forms.py:51 -msgid "Special" -msgstr "Speciaal" - -#: links.py:9 +#: apps.py:14 links.py:30 msgid "ACLs" -msgstr "Authorisatielijsten" - -#: links.py:10 links.py:18 -msgid "Details" msgstr "" -#: links.py:11 links.py:20 -msgid "Grant" +#: apps.py:20 links.py:38 models.py:36 +msgid "Permissions" msgstr "" -#: links.py:12 links.py:21 -msgid "Revoke" +#: apps.py:24 models.py:38 +#| msgid "Roles" +msgid "Role" msgstr "" -#: links.py:15 -msgid "Default ACLs" -msgstr "Authorisatielijst verstekwaarden" - -#: links.py:16 views.py:379 -msgid "Classes" +#: links.py:26 +msgid "Delete" msgstr "" -#: links.py:17 -msgid "ACLs for class" -msgstr "Authorisatielijst voor authorisatieklasse" +#: links.py:34 +#| msgid "View ACLs" +msgid "New ACL" +msgstr "" -#: managers.py:118 managers.py:130 +#: managers.py:72 msgid "Insufficient access." -msgstr "Permissies zijn ontoereikend" - -#: models.py:25 models.py:67 -msgid "Permission" msgstr "" -#: models.py:51 +#: models.py:44 msgid "Access entry" msgstr "" -#: models.py:52 +#: models.py:45 msgid "Access entries" msgstr "" -#: models.py:88 -msgid "Default access entry" +#: models.py:60 +msgid "None" msgstr "" -#: models.py:89 -msgid "Default access entries" -msgstr "" - -#: models.py:108 models.py:111 models.py:112 -msgid "Creator" -msgstr "Maker" - -#: permissions.py:7 permissions.py:8 +#: permissions.py:7 msgid "Access control lists" -msgstr "Authorisatielijst" +msgstr "" #: permissions.py:10 msgid "Edit ACLs" -msgstr "Bewerken Authorisatielijst" - -#: permissions.py:11 -msgid "View ACLs" -msgstr "Bekijken Authorisatielijst" +msgstr "" #: permissions.py:13 -msgid "Edit class default ACLs" -msgstr "Bewerk verstekwaarden authorisatieklasse" +msgid "View ACLs" +msgstr "" -#: permissions.py:14 -msgid "View class default ACLs" -msgstr "Bekijken verstekwaarden authorisatieklassen" - -#: views.py:48 +#: views.py:61 #, python-format msgid "Access control lists for: %s" msgstr "" -#: views.py:50 views.py:402 -msgid "Holder" +#: views.py:107 +#, python-format +msgid "New access control lists for: %s" msgstr "" -#: views.py:51 views.py:403 -msgid "Permissions" +#: views.py:132 +#, python-format +#| msgid "Default ACLs" +msgid "Delete ACL: %s" msgstr "" -#: views.py:98 -#, python-format -msgid "Permissions available to: %(actor)s for %(obj)s" +#: views.py:147 +msgid "Available permissions" msgstr "" -#: views.py:105 views.py:434 -msgid "Namespace" +#: views.py:148 +msgid "Granted permissions" msgstr "" -#: views.py:106 views.py:435 -msgid "Label" +#: views.py:187 +msgid "Disabled permissions are inherited from a parent object." msgstr "" -#: views.py:108 views.py:437 -msgid "Has permission" +#: views.py:218 +#, python-format +msgid "Role \"%(role)s\" permission's for \"%(object)s\"" msgstr "" -#: views.py:181 views.py:272 views.py:516 views.py:593 -msgid ", " -msgstr "," +#~ msgid "New holder" +#~ msgstr "New holder" -#: views.py:182 views.py:273 views.py:517 views.py:594 -#, python-format -msgid " for %s" -msgstr "voor %s" +#~ msgid "Users" +#~ msgstr "Users" -#: views.py:183 views.py:518 -#, python-format -msgid " to %s" -msgstr "aan %s" +#~ msgid "Groups" +#~ msgstr "Groups" -#: views.py:186 views.py:521 -#, python-format -msgid "Are you sure you wish to grant the permission %(title_suffix)s?" -msgstr "Bent u er zeker van permissies: %(title_suffix)s, toe te staan?" +#~ msgid "Special" +#~ msgstr "Special" -#: views.py:188 views.py:523 -#, python-format -msgid "Are you sure you wish to grant the permissions %(title_suffix)s?" -msgstr "Bent u er zeker van permissies: %(title_suffix)s, toe te staan?" +#~ msgid "Details" +#~ msgstr "details" -#: views.py:195 views.py:530 -#, python-format -msgid "Permission \"%(permission)s\" granted to %(actor)s for %(object)s." -msgstr "Permissie \"%(permission)s\" gegeven aan %(actor)s voor %(object)s." +#~ msgid "Grant" +#~ msgstr "grant" -#: views.py:201 views.py:536 -#, python-format -msgid "" -"%(actor)s, already had the permission \"%(permission)s\" granted for " -"%(object)s." -msgstr "%(actor)s, had reeds de permissie \"%(permission)s\" voor %(object)s." +#~ msgid "Revoke" +#~ msgstr "revoke" -#: views.py:274 views.py:595 -#, python-format -msgid " from %s" -msgstr "van %s" +#~ msgid "Classes" +#~ msgstr "classes" -#: views.py:277 views.py:598 -#, python-format -msgid "Are you sure you wish to revoke the permission %(title_suffix)s?" -msgstr "Weet u zeker dat u de permissie %(title_suffix)s wilt intrekken?" +#~ msgid "ACLs for class" +#~ msgstr "ACLs for class" -#: views.py:279 views.py:600 -#, python-format -msgid "Are you sure you wish to revoke the permissions %(title_suffix)s?" -msgstr "Weet u zeker dat u de permissie %(title_suffix)s wilt intrekken?" +#~ msgid "Permission" +#~ msgstr "permissions" -#: views.py:286 views.py:607 -#, python-format -msgid "Permission \"%(permission)s\" revoked of %(actor)s for %(object)s." -msgstr "Permissie \"%(permission)s\" van %(actor)s voor %(object)s ingetrokken." +#~ msgid "Default access entry" +#~ msgstr "default access entry" -#: views.py:292 views.py:613 -#, python-format -msgid "%(actor)s, didn't had the permission \"%(permission)s\" for %(object)s." -msgstr "%(actor)s, had geen permissie \"%(permission)s\" voor %(object)s." +#~ msgid "Default access entries" +#~ msgstr "default access entries" -#: views.py:346 -#, python-format -msgid "Add new holder for: %s" -msgstr "" +#~ msgid "Creator" +#~ msgstr "Creator" -#: views.py:347 views.py:477 -msgid "Select" -msgstr "Selecteer" +#~ msgid "Edit class default ACLs" +#~ msgstr "Edit class default ACLs" -#: views.py:381 -msgid "Class" -msgstr "" +#~ msgid "View class default ACLs" +#~ msgstr "View class default ACLs" -#: views.py:400 -#, python-format -msgid "Default access control lists for class: %s" -msgstr "" +#~ msgid "Holder" +#~ msgstr "holder" -#: views.py:428 -#, python-format -msgid "Permissions available to: %(actor)s for class %(class)s" -msgstr "" +#~ msgid "Permissions available to: %(actor)s for %(obj)s" +#~ msgstr "permissions available to: %(actor)s for %(obj)s" -#: views.py:475 -#, python-format -msgid "Add new holder for class: %s" -msgstr "" +#~ msgid "Namespace" +#~ msgstr "namespace" + +#~ msgid "Label" +#~ msgstr "label" + +#~ msgid ", " +#~ msgstr ", " + +#~ msgid " for %s" +#~ msgstr " for %s" + +#~ msgid " to %s" +#~ msgstr " to %s" + +#~ msgid "Are you sure you wish to grant the permission %(title_suffix)s?" +#~ msgstr "Are you sure you wish to grant the permission %(title_suffix)s?" + +#~ msgid "Are you sure you wish to grant the permissions %(title_suffix)s?" +#~ msgstr "Are you sure you wish to grant the permissions %(title_suffix)s?" + +#~ msgid "Permission \"%(permission)s\" granted to %(actor)s for %(object)s." +#~ msgstr "Permission \"%(permission)s\" granted to %(actor)s for %(object)s." + +#~ msgid "" +#~ "%(actor)s, already had the permission \"%(permission)s\" granted for " +#~ "%(object)s." +#~ msgstr "" +#~ "%(actor)s, already had the permission \"%(permission)s\" granted for " +#~ "%(object)s." + +#~ msgid " from %s" +#~ msgstr " from %s" + +#~ msgid "Are you sure you wish to revoke the permission %(title_suffix)s?" +#~ msgstr "Are you sure you wish to revoke the permission %(title_suffix)s?" + +#~ msgid "Are you sure you wish to revoke the permissions %(title_suffix)s?" +#~ msgstr "Are you sure you wish to revoke the permissions %(title_suffix)s?" + +#~ msgid "Permission \"%(permission)s\" revoked of %(actor)s for %(object)s." +#~ msgstr "Permission \"%(permission)s\" revoked of %(actor)s for %(object)s." + +#~ msgid "%(actor)s, didn't had the permission \"%(permission)s\" for %(object)s." +#~ msgstr "%(actor)s, didn't had the permission \"%(permission)s\" for %(object)s." + +#~ msgid "Add new holder for: %s" +#~ msgstr "add new holder for: %s" + +#~ msgid "Select" +#~ msgstr "Select" + +#~ msgid "Class" +#~ msgstr "class" + +#~ msgid "Default access control lists for class: %s" +#~ msgstr "default access control lists for class: %s" + +#~ msgid "Permissions available to: %(actor)s for class %(class)s" +#~ msgstr "permissions available to: %(actor)s for class %(class)s" + +#~ msgid "Add new holder for class: %s" +#~ msgstr "add new holder for class: %s" #~ msgid "List of classes" #~ msgstr "List of classes" diff --git a/mayan/apps/acls/locale/pl/LC_MESSAGES/django.mo b/mayan/apps/acls/locale/pl/LC_MESSAGES/django.mo index 7b0d20fc85..5434e6d47c 100644 Binary files a/mayan/apps/acls/locale/pl/LC_MESSAGES/django.mo and b/mayan/apps/acls/locale/pl/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/acls/locale/pl/LC_MESSAGES/django.po b/mayan/apps/acls/locale/pl/LC_MESSAGES/django.po index 117f7942ce..23edef1b2b 100644 --- a/mayan/apps/acls/locale/pl/LC_MESSAGES/django.po +++ b/mayan/apps/acls/locale/pl/LC_MESSAGES/django.po @@ -4,235 +4,217 @@ # # Translators: # Translators: -# mic , 2013,2015 msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2015-05-15 18:59-0400\n" -"PO-Revision-Date: 2015-02-28 19:42+0000\n" -"Last-Translator: mic \n" -"Language-Team: Polish (http://www.transifex.com/projects/p/mayan-edms/language/pl/)\n" +"POT-Creation-Date: 2015-09-24 16:24-0400\n" +"PO-Revision-Date: 2015-09-24 05:15+0000\n" +"Last-Translator: Roberto Rosario\n" +"Language-Team: Polish (http://www.transifex.com/rosarior/mayan-edms/language/pl/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: pl\n" "Plural-Forms: nplurals=3; plural=(n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" -#: forms.py:25 links.py:13 links.py:19 -msgid "New holder" -msgstr "" - -#: forms.py:42 -msgid "Users" -msgstr "Użytkownicy" - -#: forms.py:45 -msgid "Groups" -msgstr "Grupy" - -#: forms.py:48 -msgid "Roles" -msgstr "" - -#: forms.py:51 -msgid "Special" -msgstr "" - -#: links.py:9 +#: apps.py:14 links.py:30 msgid "ACLs" -msgstr "ACLs" - -#: links.py:10 links.py:18 -msgid "Details" -msgstr "Szczegóły" - -#: links.py:11 links.py:20 -msgid "Grant" -msgstr "Przyznać" - -#: links.py:12 links.py:21 -msgid "Revoke" -msgstr "Odwołać" - -#: links.py:15 -msgid "Default ACLs" -msgstr "Domyślne ACLs" - -#: links.py:16 views.py:379 -msgid "Classes" msgstr "" -#: links.py:17 -msgid "ACLs for class" +#: apps.py:20 links.py:38 models.py:36 +msgid "Permissions" msgstr "" -#: managers.py:118 managers.py:130 +#: apps.py:24 models.py:38 +#| msgid "Roles" +msgid "Role" +msgstr "" + +#: links.py:26 +msgid "Delete" +msgstr "" + +#: links.py:34 +#| msgid "View ACLs" +msgid "New ACL" +msgstr "" + +#: managers.py:72 msgid "Insufficient access." -msgstr "Niewystarczające uprawnienia." +msgstr "" -#: models.py:25 models.py:67 -msgid "Permission" -msgstr "Uprawnienia" - -#: models.py:51 +#: models.py:44 msgid "Access entry" msgstr "" -#: models.py:52 +#: models.py:45 msgid "Access entries" msgstr "" -#: models.py:88 -msgid "Default access entry" +#: models.py:60 +msgid "None" msgstr "" -#: models.py:89 -msgid "Default access entries" -msgstr "" - -#: models.py:108 models.py:111 models.py:112 -msgid "Creator" -msgstr "" - -#: permissions.py:7 permissions.py:8 +#: permissions.py:7 msgid "Access control lists" msgstr "" #: permissions.py:10 msgid "Edit ACLs" -msgstr "Edytuj ACLs" - -#: permissions.py:11 -msgid "View ACLs" -msgstr "Podgląd ACLs" +msgstr "" #: permissions.py:13 -msgid "Edit class default ACLs" +msgid "View ACLs" msgstr "" -#: permissions.py:14 -msgid "View class default ACLs" -msgstr "" - -#: views.py:48 +#: views.py:61 #, python-format msgid "Access control lists for: %s" msgstr "" -#: views.py:50 views.py:402 -msgid "Holder" +#: views.py:107 +#, python-format +msgid "New access control lists for: %s" msgstr "" -#: views.py:51 views.py:403 -msgid "Permissions" -msgstr "Uprawnienia" - -#: views.py:98 +#: views.py:132 #, python-format -msgid "Permissions available to: %(actor)s for %(obj)s" +#| msgid "Default ACLs" +msgid "Delete ACL: %s" msgstr "" -#: views.py:105 views.py:434 -msgid "Namespace" +#: views.py:147 +msgid "Available permissions" msgstr "" -#: views.py:106 views.py:435 -msgid "Label" -msgstr "Etykieta" - -#: views.py:108 views.py:437 -msgid "Has permission" -msgstr "Ma uprawnienie" - -#: views.py:181 views.py:272 views.py:516 views.py:593 -msgid ", " -msgstr ", " - -#: views.py:182 views.py:273 views.py:517 views.py:594 -#, python-format -msgid " for %s" +#: views.py:148 +msgid "Granted permissions" msgstr "" -#: views.py:183 views.py:518 -#, python-format -msgid " to %s" +#: views.py:187 +msgid "Disabled permissions are inherited from a parent object." msgstr "" -#: views.py:186 views.py:521 +#: views.py:218 #, python-format -msgid "Are you sure you wish to grant the permission %(title_suffix)s?" -msgstr "Czy na pewno chcesz przyznać uprawnienie %(title_suffix)s?" - -#: views.py:188 views.py:523 -#, python-format -msgid "Are you sure you wish to grant the permissions %(title_suffix)s?" -msgstr "Czy na pewno chcesz przyznać uprawnienia %(title_suffix)s?" - -#: views.py:195 views.py:530 -#, python-format -msgid "Permission \"%(permission)s\" granted to %(actor)s for %(object)s." -msgstr "Uprawnienie \"%(permission)s\" przyznane %(actor)s dla %(object)s." - -#: views.py:201 views.py:536 -#, python-format -msgid "" -"%(actor)s, already had the permission \"%(permission)s\" granted for " -"%(object)s." -msgstr "%(actor)s, posiada uprawnienie \"%(permission)s\" przyznane dla %(object)s." - -#: views.py:274 views.py:595 -#, python-format -msgid " from %s" +msgid "Role \"%(role)s\" permission's for \"%(object)s\"" msgstr "" -#: views.py:277 views.py:598 -#, python-format -msgid "Are you sure you wish to revoke the permission %(title_suffix)s?" -msgstr "Czy na pewno chcesz odwołać uprawnienie %(title_suffix)s?" +#~ msgid "New holder" +#~ msgstr "New holder" -#: views.py:279 views.py:600 -#, python-format -msgid "Are you sure you wish to revoke the permissions %(title_suffix)s?" -msgstr "Czy na pewno chcesz odwołać uprawnienia %(title_suffix)s?" +#~ msgid "Users" +#~ msgstr "Users" -#: views.py:286 views.py:607 -#, python-format -msgid "Permission \"%(permission)s\" revoked of %(actor)s for %(object)s." -msgstr "" +#~ msgid "Groups" +#~ msgstr "Groups" -#: views.py:292 views.py:613 -#, python-format -msgid "%(actor)s, didn't had the permission \"%(permission)s\" for %(object)s." -msgstr "" +#~ msgid "Special" +#~ msgstr "Special" -#: views.py:346 -#, python-format -msgid "Add new holder for: %s" -msgstr "" +#~ msgid "Details" +#~ msgstr "details" -#: views.py:347 views.py:477 -msgid "Select" -msgstr "Wybierz" +#~ msgid "Grant" +#~ msgstr "grant" -#: views.py:381 -msgid "Class" -msgstr "" +#~ msgid "Revoke" +#~ msgstr "revoke" -#: views.py:400 -#, python-format -msgid "Default access control lists for class: %s" -msgstr "" +#~ msgid "Classes" +#~ msgstr "classes" -#: views.py:428 -#, python-format -msgid "Permissions available to: %(actor)s for class %(class)s" -msgstr "" +#~ msgid "ACLs for class" +#~ msgstr "ACLs for class" -#: views.py:475 -#, python-format -msgid "Add new holder for class: %s" -msgstr "" +#~ msgid "Permission" +#~ msgstr "permissions" + +#~ msgid "Default access entry" +#~ msgstr "default access entry" + +#~ msgid "Default access entries" +#~ msgstr "default access entries" + +#~ msgid "Creator" +#~ msgstr "Creator" + +#~ msgid "Edit class default ACLs" +#~ msgstr "Edit class default ACLs" + +#~ msgid "View class default ACLs" +#~ msgstr "View class default ACLs" + +#~ msgid "Holder" +#~ msgstr "holder" + +#~ msgid "Permissions available to: %(actor)s for %(obj)s" +#~ msgstr "permissions available to: %(actor)s for %(obj)s" + +#~ msgid "Namespace" +#~ msgstr "namespace" + +#~ msgid "Label" +#~ msgstr "label" + +#~ msgid ", " +#~ msgstr ", " + +#~ msgid " for %s" +#~ msgstr " for %s" + +#~ msgid " to %s" +#~ msgstr " to %s" + +#~ msgid "Are you sure you wish to grant the permission %(title_suffix)s?" +#~ msgstr "Are you sure you wish to grant the permission %(title_suffix)s?" + +#~ msgid "Are you sure you wish to grant the permissions %(title_suffix)s?" +#~ msgstr "Are you sure you wish to grant the permissions %(title_suffix)s?" + +#~ msgid "Permission \"%(permission)s\" granted to %(actor)s for %(object)s." +#~ msgstr "Permission \"%(permission)s\" granted to %(actor)s for %(object)s." + +#~ msgid "" +#~ "%(actor)s, already had the permission \"%(permission)s\" granted for " +#~ "%(object)s." +#~ msgstr "" +#~ "%(actor)s, already had the permission \"%(permission)s\" granted for " +#~ "%(object)s." + +#~ msgid " from %s" +#~ msgstr " from %s" + +#~ msgid "Are you sure you wish to revoke the permission %(title_suffix)s?" +#~ msgstr "Are you sure you wish to revoke the permission %(title_suffix)s?" + +#~ msgid "Are you sure you wish to revoke the permissions %(title_suffix)s?" +#~ msgstr "Are you sure you wish to revoke the permissions %(title_suffix)s?" + +#~ msgid "Permission \"%(permission)s\" revoked of %(actor)s for %(object)s." +#~ msgstr "Permission \"%(permission)s\" revoked of %(actor)s for %(object)s." + +#~ msgid "%(actor)s, didn't had the permission \"%(permission)s\" for %(object)s." +#~ msgstr "%(actor)s, didn't had the permission \"%(permission)s\" for %(object)s." + +#~ msgid "Add new holder for: %s" +#~ msgstr "add new holder for: %s" + +#~ msgid "Select" +#~ msgstr "Select" + +#~ msgid "Class" +#~ msgstr "class" + +#~ msgid "Default access control lists for class: %s" +#~ msgstr "default access control lists for class: %s" + +#~ msgid "Permissions available to: %(actor)s for class %(class)s" +#~ msgstr "permissions available to: %(actor)s for class %(class)s" + +#~ msgid "Add new holder for class: %s" +#~ msgstr "add new holder for class: %s" #~ msgid "List of classes" #~ msgstr "List of classes" diff --git a/mayan/apps/acls/locale/pt/LC_MESSAGES/django.mo b/mayan/apps/acls/locale/pt/LC_MESSAGES/django.mo index 5f705d9dae..d5899be204 100644 Binary files a/mayan/apps/acls/locale/pt/LC_MESSAGES/django.mo and b/mayan/apps/acls/locale/pt/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/acls/locale/pt/LC_MESSAGES/django.po b/mayan/apps/acls/locale/pt/LC_MESSAGES/django.po index 74a611e782..0e2398601b 100644 --- a/mayan/apps/acls/locale/pt/LC_MESSAGES/django.po +++ b/mayan/apps/acls/locale/pt/LC_MESSAGES/django.po @@ -4,235 +4,217 @@ # # Translators: # Translators: -# Vítor Figueiró , 2012 msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2015-05-15 18:59-0400\n" -"PO-Revision-Date: 2014-10-25 06:47+0000\n" +"POT-Creation-Date: 2015-09-24 16:24-0400\n" +"PO-Revision-Date: 2015-09-24 05:15+0000\n" "Last-Translator: Roberto Rosario\n" -"Language-Team: Portuguese (http://www.transifex.com/projects/p/mayan-edms/language/pt/)\n" +"Language-Team: Portuguese (http://www.transifex.com/rosarior/mayan-edms/language/pt/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: pt\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: forms.py:25 links.py:13 links.py:19 -msgid "New holder" -msgstr "Novo detentor" - -#: forms.py:42 -msgid "Users" -msgstr "Utilizadores" - -#: forms.py:45 -msgid "Groups" -msgstr "Grupos" - -#: forms.py:48 -msgid "Roles" -msgstr "Funções" - -#: forms.py:51 -msgid "Special" -msgstr "Especial" - -#: links.py:9 +#: apps.py:14 links.py:30 msgid "ACLs" -msgstr "ACL's" - -#: links.py:10 links.py:18 -msgid "Details" msgstr "" -#: links.py:11 links.py:20 -msgid "Grant" +#: apps.py:20 links.py:38 models.py:36 +msgid "Permissions" msgstr "" -#: links.py:12 links.py:21 -msgid "Revoke" +#: apps.py:24 models.py:38 +#| msgid "Roles" +msgid "Role" msgstr "" -#: links.py:15 -msgid "Default ACLs" -msgstr "ACL's padrão" - -#: links.py:16 views.py:379 -msgid "Classes" +#: links.py:26 +msgid "Delete" msgstr "" -#: links.py:17 -msgid "ACLs for class" -msgstr "ACL's para a classe" +#: links.py:34 +#| msgid "View ACLs" +msgid "New ACL" +msgstr "" -#: managers.py:118 managers.py:130 +#: managers.py:72 msgid "Insufficient access." -msgstr "Acesso insuficiente." - -#: models.py:25 models.py:67 -msgid "Permission" msgstr "" -#: models.py:51 +#: models.py:44 msgid "Access entry" msgstr "" -#: models.py:52 +#: models.py:45 msgid "Access entries" msgstr "" -#: models.py:88 -msgid "Default access entry" +#: models.py:60 +msgid "None" msgstr "" -#: models.py:89 -msgid "Default access entries" -msgstr "" - -#: models.py:108 models.py:111 models.py:112 -msgid "Creator" -msgstr "Criador" - -#: permissions.py:7 permissions.py:8 +#: permissions.py:7 msgid "Access control lists" -msgstr "Listas de controlo de acesso" +msgstr "" #: permissions.py:10 msgid "Edit ACLs" -msgstr "Editar ACL's" - -#: permissions.py:11 -msgid "View ACLs" -msgstr "Ver ACL's" +msgstr "" #: permissions.py:13 -msgid "Edit class default ACLs" -msgstr "Editar os ACL's padrão da classe" +msgid "View ACLs" +msgstr "" -#: permissions.py:14 -msgid "View class default ACLs" -msgstr "Ver os ACL's padrão da classe" - -#: views.py:48 +#: views.py:61 #, python-format msgid "Access control lists for: %s" msgstr "" -#: views.py:50 views.py:402 -msgid "Holder" +#: views.py:107 +#, python-format +msgid "New access control lists for: %s" msgstr "" -#: views.py:51 views.py:403 -msgid "Permissions" +#: views.py:132 +#, python-format +#| msgid "Default ACLs" +msgid "Delete ACL: %s" msgstr "" -#: views.py:98 -#, python-format -msgid "Permissions available to: %(actor)s for %(obj)s" +#: views.py:147 +msgid "Available permissions" msgstr "" -#: views.py:105 views.py:434 -msgid "Namespace" +#: views.py:148 +msgid "Granted permissions" msgstr "" -#: views.py:106 views.py:435 -msgid "Label" +#: views.py:187 +msgid "Disabled permissions are inherited from a parent object." msgstr "" -#: views.py:108 views.py:437 -msgid "Has permission" +#: views.py:218 +#, python-format +msgid "Role \"%(role)s\" permission's for \"%(object)s\"" msgstr "" -#: views.py:181 views.py:272 views.py:516 views.py:593 -msgid ", " -msgstr ", " +#~ msgid "New holder" +#~ msgstr "New holder" -#: views.py:182 views.py:273 views.py:517 views.py:594 -#, python-format -msgid " for %s" -msgstr " para %s" +#~ msgid "Users" +#~ msgstr "Users" -#: views.py:183 views.py:518 -#, python-format -msgid " to %s" -msgstr " a %s" +#~ msgid "Groups" +#~ msgstr "Groups" -#: views.py:186 views.py:521 -#, python-format -msgid "Are you sure you wish to grant the permission %(title_suffix)s?" -msgstr "Tem a certeza de que pretende conceder a permissão %(title_suffix)s?" +#~ msgid "Special" +#~ msgstr "Special" -#: views.py:188 views.py:523 -#, python-format -msgid "Are you sure you wish to grant the permissions %(title_suffix)s?" -msgstr "Tem a certeza de que pretende conceder as permissões %(title_suffix)s?" +#~ msgid "Details" +#~ msgstr "details" -#: views.py:195 views.py:530 -#, python-format -msgid "Permission \"%(permission)s\" granted to %(actor)s for %(object)s." -msgstr "Permissão \"%(permission)s\" concedida a %(actor)s para %(object)s." +#~ msgid "Grant" +#~ msgstr "grant" -#: views.py:201 views.py:536 -#, python-format -msgid "" -"%(actor)s, already had the permission \"%(permission)s\" granted for " -"%(object)s." -msgstr "%(actor)s, já possuia a permissão \"%(permission)s\" para %(object)s." +#~ msgid "Revoke" +#~ msgstr "revoke" -#: views.py:274 views.py:595 -#, python-format -msgid " from %s" -msgstr " de %s" +#~ msgid "Classes" +#~ msgstr "classes" -#: views.py:277 views.py:598 -#, python-format -msgid "Are you sure you wish to revoke the permission %(title_suffix)s?" -msgstr "Tem a certeza de que pretende revogar a permissão %(title_suffix)s?" +#~ msgid "ACLs for class" +#~ msgstr "ACLs for class" -#: views.py:279 views.py:600 -#, python-format -msgid "Are you sure you wish to revoke the permissions %(title_suffix)s?" -msgstr "Tem a certeza de que pretende revogar as permissões %(title_suffix)s?" +#~ msgid "Permission" +#~ msgstr "permissions" -#: views.py:286 views.py:607 -#, python-format -msgid "Permission \"%(permission)s\" revoked of %(actor)s for %(object)s." -msgstr "Permissão \"%(permission)s\" revogada para %(actor)s para %(object)s." +#~ msgid "Default access entry" +#~ msgstr "default access entry" -#: views.py:292 views.py:613 -#, python-format -msgid "%(actor)s, didn't had the permission \"%(permission)s\" for %(object)s." -msgstr "%(actor)s, não tinha a permissão \"%(permission)s\" para %(object)s." +#~ msgid "Default access entries" +#~ msgstr "default access entries" -#: views.py:346 -#, python-format -msgid "Add new holder for: %s" -msgstr "" +#~ msgid "Creator" +#~ msgstr "Creator" -#: views.py:347 views.py:477 -msgid "Select" -msgstr "Selecionar" +#~ msgid "Edit class default ACLs" +#~ msgstr "Edit class default ACLs" -#: views.py:381 -msgid "Class" -msgstr "" +#~ msgid "View class default ACLs" +#~ msgstr "View class default ACLs" -#: views.py:400 -#, python-format -msgid "Default access control lists for class: %s" -msgstr "" +#~ msgid "Holder" +#~ msgstr "holder" -#: views.py:428 -#, python-format -msgid "Permissions available to: %(actor)s for class %(class)s" -msgstr "" +#~ msgid "Permissions available to: %(actor)s for %(obj)s" +#~ msgstr "permissions available to: %(actor)s for %(obj)s" -#: views.py:475 -#, python-format -msgid "Add new holder for class: %s" -msgstr "" +#~ msgid "Namespace" +#~ msgstr "namespace" + +#~ msgid "Label" +#~ msgstr "label" + +#~ msgid ", " +#~ msgstr ", " + +#~ msgid " for %s" +#~ msgstr " for %s" + +#~ msgid " to %s" +#~ msgstr " to %s" + +#~ msgid "Are you sure you wish to grant the permission %(title_suffix)s?" +#~ msgstr "Are you sure you wish to grant the permission %(title_suffix)s?" + +#~ msgid "Are you sure you wish to grant the permissions %(title_suffix)s?" +#~ msgstr "Are you sure you wish to grant the permissions %(title_suffix)s?" + +#~ msgid "Permission \"%(permission)s\" granted to %(actor)s for %(object)s." +#~ msgstr "Permission \"%(permission)s\" granted to %(actor)s for %(object)s." + +#~ msgid "" +#~ "%(actor)s, already had the permission \"%(permission)s\" granted for " +#~ "%(object)s." +#~ msgstr "" +#~ "%(actor)s, already had the permission \"%(permission)s\" granted for " +#~ "%(object)s." + +#~ msgid " from %s" +#~ msgstr " from %s" + +#~ msgid "Are you sure you wish to revoke the permission %(title_suffix)s?" +#~ msgstr "Are you sure you wish to revoke the permission %(title_suffix)s?" + +#~ msgid "Are you sure you wish to revoke the permissions %(title_suffix)s?" +#~ msgstr "Are you sure you wish to revoke the permissions %(title_suffix)s?" + +#~ msgid "Permission \"%(permission)s\" revoked of %(actor)s for %(object)s." +#~ msgstr "Permission \"%(permission)s\" revoked of %(actor)s for %(object)s." + +#~ msgid "%(actor)s, didn't had the permission \"%(permission)s\" for %(object)s." +#~ msgstr "%(actor)s, didn't had the permission \"%(permission)s\" for %(object)s." + +#~ msgid "Add new holder for: %s" +#~ msgstr "add new holder for: %s" + +#~ msgid "Select" +#~ msgstr "Select" + +#~ msgid "Class" +#~ msgstr "class" + +#~ msgid "Default access control lists for class: %s" +#~ msgstr "default access control lists for class: %s" + +#~ msgid "Permissions available to: %(actor)s for class %(class)s" +#~ msgstr "permissions available to: %(actor)s for class %(class)s" + +#~ msgid "Add new holder for class: %s" +#~ msgstr "add new holder for class: %s" #~ msgid "List of classes" #~ msgstr "List of classes" diff --git a/mayan/apps/acls/locale/pt_BR/LC_MESSAGES/django.mo b/mayan/apps/acls/locale/pt_BR/LC_MESSAGES/django.mo index b6cf7d5cfd..8df31dd87b 100644 Binary files a/mayan/apps/acls/locale/pt_BR/LC_MESSAGES/django.mo and b/mayan/apps/acls/locale/pt_BR/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/acls/locale/pt_BR/LC_MESSAGES/django.po b/mayan/apps/acls/locale/pt_BR/LC_MESSAGES/django.po index 8df88ad6bd..07061edc4d 100644 --- a/mayan/apps/acls/locale/pt_BR/LC_MESSAGES/django.po +++ b/mayan/apps/acls/locale/pt_BR/LC_MESSAGES/django.po @@ -4,237 +4,217 @@ # # Translators: # Translators: -# wolvsky , 2014 -# Rogerio Falcone , 2015 -# wolvsky , 2014 msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2015-05-15 18:59-0400\n" -"PO-Revision-Date: 2015-05-07 13:57+0000\n" -"Last-Translator: Rogerio Falcone \n" -"Language-Team: Portuguese (Brazil) (http://www.transifex.com/projects/p/mayan-edms/language/pt_BR/)\n" +"POT-Creation-Date: 2015-09-24 16:24-0400\n" +"PO-Revision-Date: 2015-09-24 05:15+0000\n" +"Last-Translator: Roberto Rosario\n" +"Language-Team: Portuguese (Brazil) (http://www.transifex.com/rosarior/mayan-edms/language/pt_BR/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: pt_BR\n" "Plural-Forms: nplurals=2; plural=(n > 1);\n" -#: forms.py:25 links.py:13 links.py:19 -msgid "New holder" -msgstr "Novo titular" - -#: forms.py:42 -msgid "Users" -msgstr "Usuários" - -#: forms.py:45 -msgid "Groups" -msgstr "Grupos" - -#: forms.py:48 -msgid "Roles" -msgstr "Regras" - -#: forms.py:51 -msgid "Special" -msgstr "Especial" - -#: links.py:9 +#: apps.py:14 links.py:30 msgid "ACLs" -msgstr "ACLs" +msgstr "" -#: links.py:10 links.py:18 -msgid "Details" -msgstr "Detalhes" +#: apps.py:20 links.py:38 models.py:36 +msgid "Permissions" +msgstr "" -#: links.py:11 links.py:20 -msgid "Grant" -msgstr "Conceder" +#: apps.py:24 models.py:38 +#| msgid "Roles" +msgid "Role" +msgstr "" -#: links.py:12 links.py:21 -msgid "Revoke" -msgstr "Revogar" +#: links.py:26 +msgid "Delete" +msgstr "" -#: links.py:15 -msgid "Default ACLs" -msgstr "ACLs padrões" +#: links.py:34 +#| msgid "View ACLs" +msgid "New ACL" +msgstr "" -#: links.py:16 views.py:379 -msgid "Classes" -msgstr "classes" - -#: links.py:17 -msgid "ACLs for class" -msgstr "ACLs para classes" - -#: managers.py:118 managers.py:130 +#: managers.py:72 msgid "Insufficient access." -msgstr "Acesso insuficiente." +msgstr "" -#: models.py:25 models.py:67 -msgid "Permission" -msgstr "Permissões" - -#: models.py:51 +#: models.py:44 msgid "Access entry" -msgstr "Acesso entrada" +msgstr "" -#: models.py:52 +#: models.py:45 msgid "Access entries" -msgstr "Entradas de acesso" +msgstr "" -#: models.py:88 -msgid "Default access entry" -msgstr "Entrada de acesso padrão" +#: models.py:60 +msgid "None" +msgstr "" -#: models.py:89 -msgid "Default access entries" -msgstr "Entradas de acesso padrão" - -#: models.py:108 models.py:111 models.py:112 -msgid "Creator" -msgstr "Criador" - -#: permissions.py:7 permissions.py:8 +#: permissions.py:7 msgid "Access control lists" -msgstr "Listas de controle de acesso" +msgstr "" #: permissions.py:10 msgid "Edit ACLs" -msgstr "Editar ACLs" - -#: permissions.py:11 -msgid "View ACLs" -msgstr "Visualizar ACLs" +msgstr "" #: permissions.py:13 -msgid "Edit class default ACLs" -msgstr "Editar classe de ACLs padrões" +msgid "View ACLs" +msgstr "" -#: permissions.py:14 -msgid "View class default ACLs" -msgstr "Visualizar classe de ACLs padrões" - -#: views.py:48 +#: views.py:61 #, python-format msgid "Access control lists for: %s" -msgstr "listas de controle de acesso para: %s" +msgstr "" -#: views.py:50 views.py:402 -msgid "Holder" -msgstr "Titular" - -#: views.py:51 views.py:403 -msgid "Permissions" -msgstr "Permissões" - -#: views.py:98 +#: views.py:107 #, python-format -msgid "Permissions available to: %(actor)s for %(obj)s" -msgstr "permissões disponíveis para: %(actor)s para %(obj)s" +msgid "New access control lists for: %s" +msgstr "" -#: views.py:105 views.py:434 -msgid "Namespace" -msgstr "Namespace" - -#: views.py:106 views.py:435 -msgid "Label" -msgstr "Label" - -#: views.py:108 views.py:437 -msgid "Has permission" -msgstr "tem permissão" - -#: views.py:181 views.py:272 views.py:516 views.py:593 -msgid ", " -msgstr "," - -#: views.py:182 views.py:273 views.py:517 views.py:594 +#: views.py:132 #, python-format -msgid " for %s" -msgstr "para %s" +#| msgid "Default ACLs" +msgid "Delete ACL: %s" +msgstr "" -#: views.py:183 views.py:518 +#: views.py:147 +msgid "Available permissions" +msgstr "" + +#: views.py:148 +msgid "Granted permissions" +msgstr "" + +#: views.py:187 +msgid "Disabled permissions are inherited from a parent object." +msgstr "" + +#: views.py:218 #, python-format -msgid " to %s" -msgstr "até %s" +msgid "Role \"%(role)s\" permission's for \"%(object)s\"" +msgstr "" -#: views.py:186 views.py:521 -#, python-format -msgid "Are you sure you wish to grant the permission %(title_suffix)s?" -msgstr "Você tem certeza que deseja conceder a permissão %(title_suffix)s?" +#~ msgid "New holder" +#~ msgstr "New holder" -#: views.py:188 views.py:523 -#, python-format -msgid "Are you sure you wish to grant the permissions %(title_suffix)s?" -msgstr "Você tem certeza que deseja conceder a permissões %(title_suffix)s?" +#~ msgid "Users" +#~ msgstr "Users" -#: views.py:195 views.py:530 -#, python-format -msgid "Permission \"%(permission)s\" granted to %(actor)s for %(object)s." -msgstr "Permissão \"%(permission)s\" concedida %(actor)s para %(object)s." +#~ msgid "Groups" +#~ msgstr "Groups" -#: views.py:201 views.py:536 -#, python-format -msgid "" -"%(actor)s, already had the permission \"%(permission)s\" granted for " -"%(object)s." -msgstr "%(actor)s, já tem a permissão \"%(permission)s\" concedida para %(object)s." +#~ msgid "Special" +#~ msgstr "Special" -#: views.py:274 views.py:595 -#, python-format -msgid " from %s" -msgstr "de %s" +#~ msgid "Details" +#~ msgstr "details" -#: views.py:277 views.py:598 -#, python-format -msgid "Are you sure you wish to revoke the permission %(title_suffix)s?" -msgstr "Você tem certeza que deseja revogar a permissão %(title_suffix)s?" +#~ msgid "Grant" +#~ msgstr "grant" -#: views.py:279 views.py:600 -#, python-format -msgid "Are you sure you wish to revoke the permissions %(title_suffix)s?" -msgstr "Você tem certeza que deseja revogar as permissões %(title_suffix)s?" +#~ msgid "Revoke" +#~ msgstr "revoke" -#: views.py:286 views.py:607 -#, python-format -msgid "Permission \"%(permission)s\" revoked of %(actor)s for %(object)s." -msgstr "Permissão \"%(permission)s\" revogada de %(actor)s para %(object)s." +#~ msgid "Classes" +#~ msgstr "classes" -#: views.py:292 views.py:613 -#, python-format -msgid "%(actor)s, didn't had the permission \"%(permission)s\" for %(object)s." -msgstr "%(actor)s, não tinha a permissão \"%(permission)s\" para %(object)s." +#~ msgid "ACLs for class" +#~ msgstr "ACLs for class" -#: views.py:346 -#, python-format -msgid "Add new holder for: %s" -msgstr "adicionar um novo titular para: %s" +#~ msgid "Permission" +#~ msgstr "permissions" -#: views.py:347 views.py:477 -msgid "Select" -msgstr "Selecionar" +#~ msgid "Default access entry" +#~ msgstr "default access entry" -#: views.py:381 -msgid "Class" -msgstr "classe" +#~ msgid "Default access entries" +#~ msgstr "default access entries" -#: views.py:400 -#, python-format -msgid "Default access control lists for class: %s" -msgstr "listas de controle de acesso padrão para classe: %s" +#~ msgid "Creator" +#~ msgstr "Creator" -#: views.py:428 -#, python-format -msgid "Permissions available to: %(actor)s for class %(class)s" -msgstr "permissões disponíveis para: %(actor)s para a classe %(class)s" +#~ msgid "Edit class default ACLs" +#~ msgstr "Edit class default ACLs" -#: views.py:475 -#, python-format -msgid "Add new holder for class: %s" -msgstr "adicionar um novo titular para a classe: %s" +#~ msgid "View class default ACLs" +#~ msgstr "View class default ACLs" + +#~ msgid "Holder" +#~ msgstr "holder" + +#~ msgid "Permissions available to: %(actor)s for %(obj)s" +#~ msgstr "permissions available to: %(actor)s for %(obj)s" + +#~ msgid "Namespace" +#~ msgstr "namespace" + +#~ msgid "Label" +#~ msgstr "label" + +#~ msgid ", " +#~ msgstr ", " + +#~ msgid " for %s" +#~ msgstr " for %s" + +#~ msgid " to %s" +#~ msgstr " to %s" + +#~ msgid "Are you sure you wish to grant the permission %(title_suffix)s?" +#~ msgstr "Are you sure you wish to grant the permission %(title_suffix)s?" + +#~ msgid "Are you sure you wish to grant the permissions %(title_suffix)s?" +#~ msgstr "Are you sure you wish to grant the permissions %(title_suffix)s?" + +#~ msgid "Permission \"%(permission)s\" granted to %(actor)s for %(object)s." +#~ msgstr "Permission \"%(permission)s\" granted to %(actor)s for %(object)s." + +#~ msgid "" +#~ "%(actor)s, already had the permission \"%(permission)s\" granted for " +#~ "%(object)s." +#~ msgstr "" +#~ "%(actor)s, already had the permission \"%(permission)s\" granted for " +#~ "%(object)s." + +#~ msgid " from %s" +#~ msgstr " from %s" + +#~ msgid "Are you sure you wish to revoke the permission %(title_suffix)s?" +#~ msgstr "Are you sure you wish to revoke the permission %(title_suffix)s?" + +#~ msgid "Are you sure you wish to revoke the permissions %(title_suffix)s?" +#~ msgstr "Are you sure you wish to revoke the permissions %(title_suffix)s?" + +#~ msgid "Permission \"%(permission)s\" revoked of %(actor)s for %(object)s." +#~ msgstr "Permission \"%(permission)s\" revoked of %(actor)s for %(object)s." + +#~ msgid "%(actor)s, didn't had the permission \"%(permission)s\" for %(object)s." +#~ msgstr "%(actor)s, didn't had the permission \"%(permission)s\" for %(object)s." + +#~ msgid "Add new holder for: %s" +#~ msgstr "add new holder for: %s" + +#~ msgid "Select" +#~ msgstr "Select" + +#~ msgid "Class" +#~ msgstr "class" + +#~ msgid "Default access control lists for class: %s" +#~ msgstr "default access control lists for class: %s" + +#~ msgid "Permissions available to: %(actor)s for class %(class)s" +#~ msgstr "permissions available to: %(actor)s for class %(class)s" + +#~ msgid "Add new holder for class: %s" +#~ msgstr "add new holder for class: %s" #~ msgid "List of classes" #~ msgstr "List of classes" diff --git a/mayan/apps/acls/locale/ro_RO/LC_MESSAGES/django.mo b/mayan/apps/acls/locale/ro_RO/LC_MESSAGES/django.mo index 1f5da61938..1ecb6b2f8b 100644 Binary files a/mayan/apps/acls/locale/ro_RO/LC_MESSAGES/django.mo and b/mayan/apps/acls/locale/ro_RO/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/acls/locale/ro_RO/LC_MESSAGES/django.po b/mayan/apps/acls/locale/ro_RO/LC_MESSAGES/django.po index 9368c86e2d..6e05646c63 100644 --- a/mayan/apps/acls/locale/ro_RO/LC_MESSAGES/django.po +++ b/mayan/apps/acls/locale/ro_RO/LC_MESSAGES/django.po @@ -4,235 +4,217 @@ # # Translators: # Translators: -# Badea Gabriel , 2013 msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2015-05-15 18:59-0400\n" -"PO-Revision-Date: 2014-10-25 06:47+0000\n" +"POT-Creation-Date: 2015-09-24 16:24-0400\n" +"PO-Revision-Date: 2015-09-24 05:15+0000\n" "Last-Translator: Roberto Rosario\n" -"Language-Team: Romanian (Romania) (http://www.transifex.com/projects/p/mayan-edms/language/ro_RO/)\n" +"Language-Team: Romanian (Romania) (http://www.transifex.com/rosarior/mayan-edms/language/ro_RO/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: ro_RO\n" "Plural-Forms: nplurals=3; plural=(n==1?0:(((n%100>19)||((n%100==0)&&(n!=0)))?2:1));\n" -#: forms.py:25 links.py:13 links.py:19 -msgid "New holder" -msgstr "Noul titular" - -#: forms.py:42 -msgid "Users" -msgstr "Utilizatorii" - -#: forms.py:45 -msgid "Groups" -msgstr "Grupuri" - -#: forms.py:48 -msgid "Roles" -msgstr "Roluri" - -#: forms.py:51 -msgid "Special" -msgstr "Special" - -#: links.py:9 +#: apps.py:14 links.py:30 msgid "ACLs" -msgstr "ACL-uri" - -#: links.py:10 links.py:18 -msgid "Details" msgstr "" -#: links.py:11 links.py:20 -msgid "Grant" +#: apps.py:20 links.py:38 models.py:36 +msgid "Permissions" msgstr "" -#: links.py:12 links.py:21 -msgid "Revoke" +#: apps.py:24 models.py:38 +#| msgid "Roles" +msgid "Role" msgstr "" -#: links.py:15 -msgid "Default ACLs" -msgstr "ACL-uri iniţial" - -#: links.py:16 views.py:379 -msgid "Classes" +#: links.py:26 +msgid "Delete" msgstr "" -#: links.py:17 -msgid "ACLs for class" -msgstr "ACL-uri pentru clasa" +#: links.py:34 +#| msgid "View ACLs" +msgid "New ACL" +msgstr "" -#: managers.py:118 managers.py:130 +#: managers.py:72 msgid "Insufficient access." -msgstr "Accesul insuficient." - -#: models.py:25 models.py:67 -msgid "Permission" msgstr "" -#: models.py:51 +#: models.py:44 msgid "Access entry" msgstr "" -#: models.py:52 +#: models.py:45 msgid "Access entries" msgstr "" -#: models.py:88 -msgid "Default access entry" +#: models.py:60 +msgid "None" msgstr "" -#: models.py:89 -msgid "Default access entries" -msgstr "" - -#: models.py:108 models.py:111 models.py:112 -msgid "Creator" -msgstr "Creator" - -#: permissions.py:7 permissions.py:8 +#: permissions.py:7 msgid "Access control lists" -msgstr "Lista de control acces" +msgstr "" #: permissions.py:10 msgid "Edit ACLs" -msgstr "Editați ACL-uri" - -#: permissions.py:11 -msgid "View ACLs" -msgstr "Vezi ACL-uri" +msgstr "" #: permissions.py:13 -msgid "Edit class default ACLs" -msgstr "Editați ACL-uri de clasă implicite" +msgid "View ACLs" +msgstr "" -#: permissions.py:14 -msgid "View class default ACLs" -msgstr "Vezi ACL-uri de clasă implicite" - -#: views.py:48 +#: views.py:61 #, python-format msgid "Access control lists for: %s" msgstr "" -#: views.py:50 views.py:402 -msgid "Holder" +#: views.py:107 +#, python-format +msgid "New access control lists for: %s" msgstr "" -#: views.py:51 views.py:403 -msgid "Permissions" +#: views.py:132 +#, python-format +#| msgid "Default ACLs" +msgid "Delete ACL: %s" msgstr "" -#: views.py:98 -#, python-format -msgid "Permissions available to: %(actor)s for %(obj)s" +#: views.py:147 +msgid "Available permissions" msgstr "" -#: views.py:105 views.py:434 -msgid "Namespace" +#: views.py:148 +msgid "Granted permissions" msgstr "" -#: views.py:106 views.py:435 -msgid "Label" +#: views.py:187 +msgid "Disabled permissions are inherited from a parent object." msgstr "" -#: views.py:108 views.py:437 -msgid "Has permission" +#: views.py:218 +#, python-format +msgid "Role \"%(role)s\" permission's for \"%(object)s\"" msgstr "" -#: views.py:181 views.py:272 views.py:516 views.py:593 -msgid ", " -msgstr "," +#~ msgid "New holder" +#~ msgstr "New holder" -#: views.py:182 views.py:273 views.py:517 views.py:594 -#, python-format -msgid " for %s" -msgstr "pentru% s" +#~ msgid "Users" +#~ msgstr "Users" -#: views.py:183 views.py:518 -#, python-format -msgid " to %s" -msgstr "la% s" +#~ msgid "Groups" +#~ msgstr "Groups" -#: views.py:186 views.py:521 -#, python-format -msgid "Are you sure you wish to grant the permission %(title_suffix)s?" -msgstr "Sunteți sigur că doriți să acorde permisiunea %(title_suffix)s ?" +#~ msgid "Special" +#~ msgstr "Special" -#: views.py:188 views.py:523 -#, python-format -msgid "Are you sure you wish to grant the permissions %(title_suffix)s?" -msgstr "Sunteți sigur că doriți să acorde permisiuni %(title_suffix)s ?" +#~ msgid "Details" +#~ msgstr "details" -#: views.py:195 views.py:530 -#, python-format -msgid "Permission \"%(permission)s\" granted to %(actor)s for %(object)s." -msgstr "Permisiune \"%(permission)s\" acordată %(actor)s pentru %(object)s." +#~ msgid "Grant" +#~ msgstr "grant" -#: views.py:201 views.py:536 -#, python-format -msgid "" -"%(actor)s, already had the permission \"%(permission)s\" granted for " -"%(object)s." -msgstr "%(actor)s , a avut deja permisiunea \"%(permission)s\" acordată pentru %(object)s." +#~ msgid "Revoke" +#~ msgstr "revoke" -#: views.py:274 views.py:595 -#, python-format -msgid " from %s" -msgstr "de la% s" +#~ msgid "Classes" +#~ msgstr "classes" -#: views.py:277 views.py:598 -#, python-format -msgid "Are you sure you wish to revoke the permission %(title_suffix)s?" -msgstr "Sunteți sigur că doriți să revocați permisiunea %(title_suffix)s?" +#~ msgid "ACLs for class" +#~ msgstr "ACLs for class" -#: views.py:279 views.py:600 -#, python-format -msgid "Are you sure you wish to revoke the permissions %(title_suffix)s?" -msgstr "Sunteți sigur că doriți să revocați permisiunile %(title_suffix)s?" +#~ msgid "Permission" +#~ msgstr "permissions" -#: views.py:286 views.py:607 -#, python-format -msgid "Permission \"%(permission)s\" revoked of %(actor)s for %(object)s." -msgstr "Permisiune\"%(permission)s\" revocată pentru %(actor)s pentru %(object)s." +#~ msgid "Default access entry" +#~ msgstr "default access entry" -#: views.py:292 views.py:613 -#, python-format -msgid "%(actor)s, didn't had the permission \"%(permission)s\" for %(object)s." -msgstr "%(actor)s, nu a avut permisiunea%(permission)s\" pentru %(object)s." +#~ msgid "Default access entries" +#~ msgstr "default access entries" -#: views.py:346 -#, python-format -msgid "Add new holder for: %s" -msgstr "" +#~ msgid "Creator" +#~ msgstr "Creator" -#: views.py:347 views.py:477 -msgid "Select" -msgstr "Selecta" +#~ msgid "Edit class default ACLs" +#~ msgstr "Edit class default ACLs" -#: views.py:381 -msgid "Class" -msgstr "" +#~ msgid "View class default ACLs" +#~ msgstr "View class default ACLs" -#: views.py:400 -#, python-format -msgid "Default access control lists for class: %s" -msgstr "" +#~ msgid "Holder" +#~ msgstr "holder" -#: views.py:428 -#, python-format -msgid "Permissions available to: %(actor)s for class %(class)s" -msgstr "" +#~ msgid "Permissions available to: %(actor)s for %(obj)s" +#~ msgstr "permissions available to: %(actor)s for %(obj)s" -#: views.py:475 -#, python-format -msgid "Add new holder for class: %s" -msgstr "" +#~ msgid "Namespace" +#~ msgstr "namespace" + +#~ msgid "Label" +#~ msgstr "label" + +#~ msgid ", " +#~ msgstr ", " + +#~ msgid " for %s" +#~ msgstr " for %s" + +#~ msgid " to %s" +#~ msgstr " to %s" + +#~ msgid "Are you sure you wish to grant the permission %(title_suffix)s?" +#~ msgstr "Are you sure you wish to grant the permission %(title_suffix)s?" + +#~ msgid "Are you sure you wish to grant the permissions %(title_suffix)s?" +#~ msgstr "Are you sure you wish to grant the permissions %(title_suffix)s?" + +#~ msgid "Permission \"%(permission)s\" granted to %(actor)s for %(object)s." +#~ msgstr "Permission \"%(permission)s\" granted to %(actor)s for %(object)s." + +#~ msgid "" +#~ "%(actor)s, already had the permission \"%(permission)s\" granted for " +#~ "%(object)s." +#~ msgstr "" +#~ "%(actor)s, already had the permission \"%(permission)s\" granted for " +#~ "%(object)s." + +#~ msgid " from %s" +#~ msgstr " from %s" + +#~ msgid "Are you sure you wish to revoke the permission %(title_suffix)s?" +#~ msgstr "Are you sure you wish to revoke the permission %(title_suffix)s?" + +#~ msgid "Are you sure you wish to revoke the permissions %(title_suffix)s?" +#~ msgstr "Are you sure you wish to revoke the permissions %(title_suffix)s?" + +#~ msgid "Permission \"%(permission)s\" revoked of %(actor)s for %(object)s." +#~ msgstr "Permission \"%(permission)s\" revoked of %(actor)s for %(object)s." + +#~ msgid "%(actor)s, didn't had the permission \"%(permission)s\" for %(object)s." +#~ msgstr "%(actor)s, didn't had the permission \"%(permission)s\" for %(object)s." + +#~ msgid "Add new holder for: %s" +#~ msgstr "add new holder for: %s" + +#~ msgid "Select" +#~ msgstr "Select" + +#~ msgid "Class" +#~ msgstr "class" + +#~ msgid "Default access control lists for class: %s" +#~ msgstr "default access control lists for class: %s" + +#~ msgid "Permissions available to: %(actor)s for class %(class)s" +#~ msgstr "permissions available to: %(actor)s for class %(class)s" + +#~ msgid "Add new holder for class: %s" +#~ msgstr "add new holder for class: %s" #~ msgid "List of classes" #~ msgstr "List of classes" diff --git a/mayan/apps/acls/locale/ru/LC_MESSAGES/django.mo b/mayan/apps/acls/locale/ru/LC_MESSAGES/django.mo index 2d63ac68e2..d06538a77b 100644 Binary files a/mayan/apps/acls/locale/ru/LC_MESSAGES/django.mo and b/mayan/apps/acls/locale/ru/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/acls/locale/ru/LC_MESSAGES/django.po b/mayan/apps/acls/locale/ru/LC_MESSAGES/django.po index c6570cd84b..498e842a37 100644 --- a/mayan/apps/acls/locale/ru/LC_MESSAGES/django.po +++ b/mayan/apps/acls/locale/ru/LC_MESSAGES/django.po @@ -4,235 +4,217 @@ # # Translators: # Translators: -# Sergey Glita , 2012 msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2015-05-15 18:59-0400\n" -"PO-Revision-Date: 2014-10-25 06:47+0000\n" +"POT-Creation-Date: 2015-09-24 16:24-0400\n" +"PO-Revision-Date: 2015-09-24 05:15+0000\n" "Last-Translator: Roberto Rosario\n" -"Language-Team: Russian (http://www.transifex.com/projects/p/mayan-edms/language/ru/)\n" +"Language-Team: Russian (http://www.transifex.com/rosarior/mayan-edms/language/ru/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: ru\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" -#: forms.py:25 links.py:13 links.py:19 -msgid "New holder" -msgstr "Новый владелец" - -#: forms.py:42 -msgid "Users" -msgstr "Пользователи" - -#: forms.py:45 -msgid "Groups" -msgstr "Группы" - -#: forms.py:48 -msgid "Roles" -msgstr "Роли" - -#: forms.py:51 -msgid "Special" -msgstr "Специальный" - -#: links.py:9 +#: apps.py:14 links.py:30 msgid "ACLs" -msgstr "Списки ACL" - -#: links.py:10 links.py:18 -msgid "Details" msgstr "" -#: links.py:11 links.py:20 -msgid "Grant" +#: apps.py:20 links.py:38 models.py:36 +msgid "Permissions" msgstr "" -#: links.py:12 links.py:21 -msgid "Revoke" +#: apps.py:24 models.py:38 +#| msgid "Roles" +msgid "Role" msgstr "" -#: links.py:15 -msgid "Default ACLs" -msgstr "ACL по умолчанию" - -#: links.py:16 views.py:379 -msgid "Classes" +#: links.py:26 +msgid "Delete" msgstr "" -#: links.py:17 -msgid "ACLs for class" -msgstr "ACL для класса" +#: links.py:34 +#| msgid "View ACLs" +msgid "New ACL" +msgstr "" -#: managers.py:118 managers.py:130 +#: managers.py:72 msgid "Insufficient access." -msgstr "Недостаточный доступ." - -#: models.py:25 models.py:67 -msgid "Permission" msgstr "" -#: models.py:51 +#: models.py:44 msgid "Access entry" msgstr "" -#: models.py:52 +#: models.py:45 msgid "Access entries" msgstr "" -#: models.py:88 -msgid "Default access entry" +#: models.py:60 +msgid "None" msgstr "" -#: models.py:89 -msgid "Default access entries" -msgstr "" - -#: models.py:108 models.py:111 models.py:112 -msgid "Creator" -msgstr "Создатель" - -#: permissions.py:7 permissions.py:8 +#: permissions.py:7 msgid "Access control lists" -msgstr "Списки контроля доступа" +msgstr "" #: permissions.py:10 msgid "Edit ACLs" -msgstr "Редактировать списки ACL" - -#: permissions.py:11 -msgid "View ACLs" -msgstr "Просмотр списков ACL" +msgstr "" #: permissions.py:13 -msgid "Edit class default ACLs" -msgstr "Редактировать списки ACL класса по умолчанию" +msgid "View ACLs" +msgstr "" -#: permissions.py:14 -msgid "View class default ACLs" -msgstr "Просмотр списков ACL класса по умолчанию" - -#: views.py:48 +#: views.py:61 #, python-format msgid "Access control lists for: %s" msgstr "" -#: views.py:50 views.py:402 -msgid "Holder" +#: views.py:107 +#, python-format +msgid "New access control lists for: %s" msgstr "" -#: views.py:51 views.py:403 -msgid "Permissions" +#: views.py:132 +#, python-format +#| msgid "Default ACLs" +msgid "Delete ACL: %s" msgstr "" -#: views.py:98 -#, python-format -msgid "Permissions available to: %(actor)s for %(obj)s" +#: views.py:147 +msgid "Available permissions" msgstr "" -#: views.py:105 views.py:434 -msgid "Namespace" +#: views.py:148 +msgid "Granted permissions" msgstr "" -#: views.py:106 views.py:435 -msgid "Label" +#: views.py:187 +msgid "Disabled permissions are inherited from a parent object." msgstr "" -#: views.py:108 views.py:437 -msgid "Has permission" +#: views.py:218 +#, python-format +msgid "Role \"%(role)s\" permission's for \"%(object)s\"" msgstr "" -#: views.py:181 views.py:272 views.py:516 views.py:593 -msgid ", " -msgstr "," +#~ msgid "New holder" +#~ msgstr "New holder" -#: views.py:182 views.py:273 views.py:517 views.py:594 -#, python-format -msgid " for %s" -msgstr "для %s" +#~ msgid "Users" +#~ msgstr "Users" -#: views.py:183 views.py:518 -#, python-format -msgid " to %s" -msgstr "до %s" +#~ msgid "Groups" +#~ msgstr "Groups" -#: views.py:186 views.py:521 -#, python-format -msgid "Are you sure you wish to grant the permission %(title_suffix)s?" -msgstr "Вы действительно хотите предоставить разрешение %(title_suffix)s?" +#~ msgid "Special" +#~ msgstr "Special" -#: views.py:188 views.py:523 -#, python-format -msgid "Are you sure you wish to grant the permissions %(title_suffix)s?" -msgstr "Вы уверены, что хотите предоставить разрешения %(title_suffix)s?" +#~ msgid "Details" +#~ msgstr "details" -#: views.py:195 views.py:530 -#, python-format -msgid "Permission \"%(permission)s\" granted to %(actor)s for %(object)s." -msgstr "Право \"%(permission)s\" проедоставлено %(actor)s для %(object)s." +#~ msgid "Grant" +#~ msgstr "grant" -#: views.py:201 views.py:536 -#, python-format -msgid "" -"%(actor)s, already had the permission \"%(permission)s\" granted for " -"%(object)s." -msgstr "%(actor)s, уже имеет право \"%(permission)s\" для %(object)s." +#~ msgid "Revoke" +#~ msgstr "revoke" -#: views.py:274 views.py:595 -#, python-format -msgid " from %s" -msgstr "от%s" +#~ msgid "Classes" +#~ msgstr "classes" -#: views.py:277 views.py:598 -#, python-format -msgid "Are you sure you wish to revoke the permission %(title_suffix)s?" -msgstr "Вы уверены, что хотите отменить разрешение %(title_suffix)s?" +#~ msgid "ACLs for class" +#~ msgstr "ACLs for class" -#: views.py:279 views.py:600 -#, python-format -msgid "Are you sure you wish to revoke the permissions %(title_suffix)s?" -msgstr "Вы уверены, что хотите отменить разрешение %(title_suffix)s?" +#~ msgid "Permission" +#~ msgstr "permissions" -#: views.py:286 views.py:607 -#, python-format -msgid "Permission \"%(permission)s\" revoked of %(actor)s for %(object)s." -msgstr "Право \"%(permission)s\" для %(object)s отозвано у %(actor)s." +#~ msgid "Default access entry" +#~ msgstr "default access entry" -#: views.py:292 views.py:613 -#, python-format -msgid "%(actor)s, didn't had the permission \"%(permission)s\" for %(object)s." -msgstr "%(actor)s не имеет права \"%(permission)s\" для %(object)s." +#~ msgid "Default access entries" +#~ msgstr "default access entries" -#: views.py:346 -#, python-format -msgid "Add new holder for: %s" -msgstr "" +#~ msgid "Creator" +#~ msgstr "Creator" -#: views.py:347 views.py:477 -msgid "Select" -msgstr "Выбор" +#~ msgid "Edit class default ACLs" +#~ msgstr "Edit class default ACLs" -#: views.py:381 -msgid "Class" -msgstr "" +#~ msgid "View class default ACLs" +#~ msgstr "View class default ACLs" -#: views.py:400 -#, python-format -msgid "Default access control lists for class: %s" -msgstr "" +#~ msgid "Holder" +#~ msgstr "holder" -#: views.py:428 -#, python-format -msgid "Permissions available to: %(actor)s for class %(class)s" -msgstr "" +#~ msgid "Permissions available to: %(actor)s for %(obj)s" +#~ msgstr "permissions available to: %(actor)s for %(obj)s" -#: views.py:475 -#, python-format -msgid "Add new holder for class: %s" -msgstr "" +#~ msgid "Namespace" +#~ msgstr "namespace" + +#~ msgid "Label" +#~ msgstr "label" + +#~ msgid ", " +#~ msgstr ", " + +#~ msgid " for %s" +#~ msgstr " for %s" + +#~ msgid " to %s" +#~ msgstr " to %s" + +#~ msgid "Are you sure you wish to grant the permission %(title_suffix)s?" +#~ msgstr "Are you sure you wish to grant the permission %(title_suffix)s?" + +#~ msgid "Are you sure you wish to grant the permissions %(title_suffix)s?" +#~ msgstr "Are you sure you wish to grant the permissions %(title_suffix)s?" + +#~ msgid "Permission \"%(permission)s\" granted to %(actor)s for %(object)s." +#~ msgstr "Permission \"%(permission)s\" granted to %(actor)s for %(object)s." + +#~ msgid "" +#~ "%(actor)s, already had the permission \"%(permission)s\" granted for " +#~ "%(object)s." +#~ msgstr "" +#~ "%(actor)s, already had the permission \"%(permission)s\" granted for " +#~ "%(object)s." + +#~ msgid " from %s" +#~ msgstr " from %s" + +#~ msgid "Are you sure you wish to revoke the permission %(title_suffix)s?" +#~ msgstr "Are you sure you wish to revoke the permission %(title_suffix)s?" + +#~ msgid "Are you sure you wish to revoke the permissions %(title_suffix)s?" +#~ msgstr "Are you sure you wish to revoke the permissions %(title_suffix)s?" + +#~ msgid "Permission \"%(permission)s\" revoked of %(actor)s for %(object)s." +#~ msgstr "Permission \"%(permission)s\" revoked of %(actor)s for %(object)s." + +#~ msgid "%(actor)s, didn't had the permission \"%(permission)s\" for %(object)s." +#~ msgstr "%(actor)s, didn't had the permission \"%(permission)s\" for %(object)s." + +#~ msgid "Add new holder for: %s" +#~ msgstr "add new holder for: %s" + +#~ msgid "Select" +#~ msgstr "Select" + +#~ msgid "Class" +#~ msgstr "class" + +#~ msgid "Default access control lists for class: %s" +#~ msgstr "default access control lists for class: %s" + +#~ msgid "Permissions available to: %(actor)s for class %(class)s" +#~ msgstr "permissions available to: %(actor)s for class %(class)s" + +#~ msgid "Add new holder for class: %s" +#~ msgstr "add new holder for class: %s" #~ msgid "List of classes" #~ msgstr "List of classes" diff --git a/mayan/apps/acls/locale/sl_SI/LC_MESSAGES/django.mo b/mayan/apps/acls/locale/sl_SI/LC_MESSAGES/django.mo index 2f6b08987d..cb220d520b 100644 Binary files a/mayan/apps/acls/locale/sl_SI/LC_MESSAGES/django.mo and b/mayan/apps/acls/locale/sl_SI/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/acls/locale/sl_SI/LC_MESSAGES/django.po b/mayan/apps/acls/locale/sl_SI/LC_MESSAGES/django.po index 2436ff9e55..ac28e37ded 100644 --- a/mayan/apps/acls/locale/sl_SI/LC_MESSAGES/django.po +++ b/mayan/apps/acls/locale/sl_SI/LC_MESSAGES/django.po @@ -8,93 +8,55 @@ msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2015-05-15 18:59-0400\n" -"PO-Revision-Date: 2014-10-25 06:47+0000\n" +"POT-Creation-Date: 2015-09-24 16:24-0400\n" +"PO-Revision-Date: 2015-09-24 05:15+0000\n" "Last-Translator: Roberto Rosario\n" -"Language-Team: Slovenian (Slovenia) (http://www.transifex.com/projects/p/mayan-edms/language/sl_SI/)\n" +"Language-Team: Slovenian (Slovenia) (http://www.transifex.com/rosarior/mayan-edms/language/sl_SI/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: sl_SI\n" "Plural-Forms: nplurals=4; plural=(n%100==1 ? 0 : n%100==2 ? 1 : n%100==3 || n%100==4 ? 2 : 3);\n" -#: forms.py:25 links.py:13 links.py:19 -msgid "New holder" -msgstr "" - -#: forms.py:42 -msgid "Users" -msgstr "" - -#: forms.py:45 -msgid "Groups" -msgstr "" - -#: forms.py:48 -msgid "Roles" -msgstr "" - -#: forms.py:51 -msgid "Special" -msgstr "" - -#: links.py:9 +#: apps.py:14 links.py:30 msgid "ACLs" msgstr "" -#: links.py:10 links.py:18 -msgid "Details" +#: apps.py:20 links.py:38 models.py:36 +msgid "Permissions" msgstr "" -#: links.py:11 links.py:20 -msgid "Grant" +#: apps.py:24 models.py:38 +#| msgid "Roles" +msgid "Role" msgstr "" -#: links.py:12 links.py:21 -msgid "Revoke" +#: links.py:26 +msgid "Delete" msgstr "" -#: links.py:15 -msgid "Default ACLs" +#: links.py:34 +#| msgid "View ACLs" +msgid "New ACL" msgstr "" -#: links.py:16 views.py:379 -msgid "Classes" -msgstr "" - -#: links.py:17 -msgid "ACLs for class" -msgstr "" - -#: managers.py:118 managers.py:130 +#: managers.py:72 msgid "Insufficient access." msgstr "" -#: models.py:25 models.py:67 -msgid "Permission" -msgstr "" - -#: models.py:51 +#: models.py:44 msgid "Access entry" msgstr "" -#: models.py:52 +#: models.py:45 msgid "Access entries" msgstr "" -#: models.py:88 -msgid "Default access entry" +#: models.py:60 +msgid "None" msgstr "" -#: models.py:89 -msgid "Default access entries" -msgstr "" - -#: models.py:108 models.py:111 models.py:112 -msgid "Creator" -msgstr "" - -#: permissions.py:7 permissions.py:8 +#: permissions.py:7 msgid "Access control lists" msgstr "" @@ -102,136 +64,157 @@ msgstr "" msgid "Edit ACLs" msgstr "" -#: permissions.py:11 +#: permissions.py:13 msgid "View ACLs" msgstr "" -#: permissions.py:13 -msgid "Edit class default ACLs" -msgstr "" - -#: permissions.py:14 -msgid "View class default ACLs" -msgstr "" - -#: views.py:48 +#: views.py:61 #, python-format msgid "Access control lists for: %s" msgstr "" -#: views.py:50 views.py:402 -msgid "Holder" -msgstr "" - -#: views.py:51 views.py:403 -msgid "Permissions" -msgstr "" - -#: views.py:98 +#: views.py:107 #, python-format -msgid "Permissions available to: %(actor)s for %(obj)s" +msgid "New access control lists for: %s" msgstr "" -#: views.py:105 views.py:434 -msgid "Namespace" -msgstr "" - -#: views.py:106 views.py:435 -msgid "Label" -msgstr "" - -#: views.py:108 views.py:437 -msgid "Has permission" -msgstr "" - -#: views.py:181 views.py:272 views.py:516 views.py:593 -msgid ", " -msgstr "" - -#: views.py:182 views.py:273 views.py:517 views.py:594 +#: views.py:132 #, python-format -msgid " for %s" +#| msgid "Default ACLs" +msgid "Delete ACL: %s" msgstr "" -#: views.py:183 views.py:518 +#: views.py:147 +msgid "Available permissions" +msgstr "" + +#: views.py:148 +msgid "Granted permissions" +msgstr "" + +#: views.py:187 +msgid "Disabled permissions are inherited from a parent object." +msgstr "" + +#: views.py:218 #, python-format -msgid " to %s" +msgid "Role \"%(role)s\" permission's for \"%(object)s\"" msgstr "" -#: views.py:186 views.py:521 -#, python-format -msgid "Are you sure you wish to grant the permission %(title_suffix)s?" -msgstr "" +#~ msgid "New holder" +#~ msgstr "New holder" -#: views.py:188 views.py:523 -#, python-format -msgid "Are you sure you wish to grant the permissions %(title_suffix)s?" -msgstr "" +#~ msgid "Users" +#~ msgstr "Users" -#: views.py:195 views.py:530 -#, python-format -msgid "Permission \"%(permission)s\" granted to %(actor)s for %(object)s." -msgstr "" +#~ msgid "Groups" +#~ msgstr "Groups" -#: views.py:201 views.py:536 -#, python-format -msgid "" -"%(actor)s, already had the permission \"%(permission)s\" granted for " -"%(object)s." -msgstr "" +#~ msgid "Special" +#~ msgstr "Special" -#: views.py:274 views.py:595 -#, python-format -msgid " from %s" -msgstr "" +#~ msgid "Details" +#~ msgstr "details" -#: views.py:277 views.py:598 -#, python-format -msgid "Are you sure you wish to revoke the permission %(title_suffix)s?" -msgstr "" +#~ msgid "Grant" +#~ msgstr "grant" -#: views.py:279 views.py:600 -#, python-format -msgid "Are you sure you wish to revoke the permissions %(title_suffix)s?" -msgstr "" +#~ msgid "Revoke" +#~ msgstr "revoke" -#: views.py:286 views.py:607 -#, python-format -msgid "Permission \"%(permission)s\" revoked of %(actor)s for %(object)s." -msgstr "" +#~ msgid "Classes" +#~ msgstr "classes" -#: views.py:292 views.py:613 -#, python-format -msgid "%(actor)s, didn't had the permission \"%(permission)s\" for %(object)s." -msgstr "" +#~ msgid "ACLs for class" +#~ msgstr "ACLs for class" -#: views.py:346 -#, python-format -msgid "Add new holder for: %s" -msgstr "" +#~ msgid "Permission" +#~ msgstr "permissions" -#: views.py:347 views.py:477 -msgid "Select" -msgstr "" +#~ msgid "Default access entry" +#~ msgstr "default access entry" -#: views.py:381 -msgid "Class" -msgstr "" +#~ msgid "Default access entries" +#~ msgstr "default access entries" -#: views.py:400 -#, python-format -msgid "Default access control lists for class: %s" -msgstr "" +#~ msgid "Creator" +#~ msgstr "Creator" -#: views.py:428 -#, python-format -msgid "Permissions available to: %(actor)s for class %(class)s" -msgstr "" +#~ msgid "Edit class default ACLs" +#~ msgstr "Edit class default ACLs" -#: views.py:475 -#, python-format -msgid "Add new holder for class: %s" -msgstr "" +#~ msgid "View class default ACLs" +#~ msgstr "View class default ACLs" + +#~ msgid "Holder" +#~ msgstr "holder" + +#~ msgid "Permissions available to: %(actor)s for %(obj)s" +#~ msgstr "permissions available to: %(actor)s for %(obj)s" + +#~ msgid "Namespace" +#~ msgstr "namespace" + +#~ msgid "Label" +#~ msgstr "label" + +#~ msgid ", " +#~ msgstr ", " + +#~ msgid " for %s" +#~ msgstr " for %s" + +#~ msgid " to %s" +#~ msgstr " to %s" + +#~ msgid "Are you sure you wish to grant the permission %(title_suffix)s?" +#~ msgstr "Are you sure you wish to grant the permission %(title_suffix)s?" + +#~ msgid "Are you sure you wish to grant the permissions %(title_suffix)s?" +#~ msgstr "Are you sure you wish to grant the permissions %(title_suffix)s?" + +#~ msgid "Permission \"%(permission)s\" granted to %(actor)s for %(object)s." +#~ msgstr "Permission \"%(permission)s\" granted to %(actor)s for %(object)s." + +#~ msgid "" +#~ "%(actor)s, already had the permission \"%(permission)s\" granted for " +#~ "%(object)s." +#~ msgstr "" +#~ "%(actor)s, already had the permission \"%(permission)s\" granted for " +#~ "%(object)s." + +#~ msgid " from %s" +#~ msgstr " from %s" + +#~ msgid "Are you sure you wish to revoke the permission %(title_suffix)s?" +#~ msgstr "Are you sure you wish to revoke the permission %(title_suffix)s?" + +#~ msgid "Are you sure you wish to revoke the permissions %(title_suffix)s?" +#~ msgstr "Are you sure you wish to revoke the permissions %(title_suffix)s?" + +#~ msgid "Permission \"%(permission)s\" revoked of %(actor)s for %(object)s." +#~ msgstr "Permission \"%(permission)s\" revoked of %(actor)s for %(object)s." + +#~ msgid "%(actor)s, didn't had the permission \"%(permission)s\" for %(object)s." +#~ msgstr "%(actor)s, didn't had the permission \"%(permission)s\" for %(object)s." + +#~ msgid "Add new holder for: %s" +#~ msgstr "add new holder for: %s" + +#~ msgid "Select" +#~ msgstr "Select" + +#~ msgid "Class" +#~ msgstr "class" + +#~ msgid "Default access control lists for class: %s" +#~ msgstr "default access control lists for class: %s" + +#~ msgid "Permissions available to: %(actor)s for class %(class)s" +#~ msgstr "permissions available to: %(actor)s for class %(class)s" + +#~ msgid "Add new holder for class: %s" +#~ msgstr "add new holder for class: %s" #~ msgid "List of classes" #~ msgstr "List of classes" diff --git a/mayan/apps/acls/locale/sq/LC_MESSAGES/django.mo b/mayan/apps/acls/locale/sq/LC_MESSAGES/django.mo deleted file mode 100644 index b7f735411c..0000000000 Binary files a/mayan/apps/acls/locale/sq/LC_MESSAGES/django.mo and /dev/null differ diff --git a/mayan/apps/acls/locale/sq/LC_MESSAGES/django.po b/mayan/apps/acls/locale/sq/LC_MESSAGES/django.po deleted file mode 100644 index f360cbd1a0..0000000000 --- a/mayan/apps/acls/locale/sq/LC_MESSAGES/django.po +++ /dev/null @@ -1,245 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -# Translators: -# Enri Mullai , 2014 -msgid "" -msgstr "" -"Project-Id-Version: Mayan EDMS\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2015-05-15 18:59-0400\n" -"PO-Revision-Date: 2014-10-25 06:47+0000\n" -"Last-Translator: Roberto Rosario\n" -"Language-Team: Albanian (http://www.transifex.com/projects/p/mayan-edms/" -"language/sq/)\n" -"Language: sq\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" - -#: forms.py:25 links.py:13 links.py:19 -msgid "New holder" -msgstr "Mbajtës i ri" - -#: forms.py:42 -msgid "Users" -msgstr "Përdorues" - -#: forms.py:45 -msgid "Groups" -msgstr "Grupe" - -#: forms.py:48 -msgid "Roles" -msgstr "Role" - -#: forms.py:51 -msgid "Special" -msgstr "" - -#: links.py:9 -msgid "ACLs" -msgstr "ACLs" - -#: links.py:10 links.py:18 -msgid "Details" -msgstr "" - -#: links.py:11 links.py:20 -msgid "Grant" -msgstr "" - -#: links.py:12 links.py:21 -msgid "Revoke" -msgstr "" - -#: links.py:15 -msgid "Default ACLs" -msgstr "ACL e paracaktuara" - -#: links.py:16 views.py:379 -msgid "Classes" -msgstr "" - -#: links.py:17 -msgid "ACLs for class" -msgstr "ACL-të per klasën" - -#: managers.py:118 managers.py:130 -msgid "Insufficient access." -msgstr "e drejtë e pa mjaftueshme" - -#: models.py:25 models.py:67 -msgid "Permission" -msgstr "" - -#: models.py:51 -msgid "Access entry" -msgstr "" - -#: models.py:52 -msgid "Access entries" -msgstr "" - -#: models.py:88 -msgid "Default access entry" -msgstr "" - -#: models.py:89 -msgid "Default access entries" -msgstr "" - -#: models.py:108 models.py:111 models.py:112 -msgid "Creator" -msgstr "" - -#: permissions.py:7 permissions.py:8 -msgid "Access control lists" -msgstr "" - -#: permissions.py:10 -msgid "Edit ACLs" -msgstr "" - -#: permissions.py:11 -msgid "View ACLs" -msgstr "" - -#: permissions.py:13 -msgid "Edit class default ACLs" -msgstr "" - -#: permissions.py:14 -msgid "View class default ACLs" -msgstr "" - -#: views.py:48 -#, python-format -msgid "Access control lists for: %s" -msgstr "" - -#: views.py:50 views.py:402 -msgid "Holder" -msgstr "" - -#: views.py:51 views.py:403 -msgid "Permissions" -msgstr "" - -#: views.py:98 -#, python-format -msgid "Permissions available to: %(actor)s for %(obj)s" -msgstr "" - -#: views.py:105 views.py:434 -msgid "Namespace" -msgstr "" - -#: views.py:106 views.py:435 -msgid "Label" -msgstr "" - -#: views.py:108 views.py:437 -msgid "Has permission" -msgstr "" - -#: views.py:181 views.py:272 views.py:516 views.py:593 -msgid ", " -msgstr "" - -#: views.py:182 views.py:273 views.py:517 views.py:594 -#, python-format -msgid " for %s" -msgstr "" - -#: views.py:183 views.py:518 -#, python-format -msgid " to %s" -msgstr "" - -#: views.py:186 views.py:521 -#, python-format -msgid "Are you sure you wish to grant the permission %(title_suffix)s?" -msgstr "" - -#: views.py:188 views.py:523 -#, python-format -msgid "Are you sure you wish to grant the permissions %(title_suffix)s?" -msgstr "" - -#: views.py:195 views.py:530 -#, python-format -msgid "Permission \"%(permission)s\" granted to %(actor)s for %(object)s." -msgstr "" - -#: views.py:201 views.py:536 -#, python-format -msgid "" -"%(actor)s, already had the permission \"%(permission)s\" granted for " -"%(object)s." -msgstr "" - -#: views.py:274 views.py:595 -#, python-format -msgid " from %s" -msgstr "" - -#: views.py:277 views.py:598 -#, python-format -msgid "Are you sure you wish to revoke the permission %(title_suffix)s?" -msgstr "" - -#: views.py:279 views.py:600 -#, python-format -msgid "Are you sure you wish to revoke the permissions %(title_suffix)s?" -msgstr "" - -#: views.py:286 views.py:607 -#, python-format -msgid "Permission \"%(permission)s\" revoked of %(actor)s for %(object)s." -msgstr "" - -#: views.py:292 views.py:613 -#, python-format -msgid "%(actor)s, didn't had the permission \"%(permission)s\" for %(object)s." -msgstr "" - -#: views.py:346 -#, python-format -msgid "Add new holder for: %s" -msgstr "" - -#: views.py:347 views.py:477 -msgid "Select" -msgstr "" - -#: views.py:381 -msgid "Class" -msgstr "" - -#: views.py:400 -#, python-format -msgid "Default access control lists for class: %s" -msgstr "" - -#: views.py:428 -#, python-format -msgid "Permissions available to: %(actor)s for class %(class)s" -msgstr "" - -#: views.py:475 -#, python-format -msgid "Add new holder for class: %s" -msgstr "" - -#~ msgid "List of classes" -#~ msgstr "List of classes" - -#~ msgid "permission" -#~ msgstr "permission" - -#~ msgid "creator" -#~ msgstr "creator" diff --git a/mayan/apps/acls/locale/tr_TR/LC_MESSAGES/django.mo b/mayan/apps/acls/locale/tr_TR/LC_MESSAGES/django.mo deleted file mode 100644 index c38b35c414..0000000000 Binary files a/mayan/apps/acls/locale/tr_TR/LC_MESSAGES/django.mo and /dev/null differ diff --git a/mayan/apps/acls/locale/tr_TR/LC_MESSAGES/django.po b/mayan/apps/acls/locale/tr_TR/LC_MESSAGES/django.po deleted file mode 100644 index 1699311320..0000000000 --- a/mayan/apps/acls/locale/tr_TR/LC_MESSAGES/django.po +++ /dev/null @@ -1,243 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -# Translators: -msgid "" -msgstr "" -"Project-Id-Version: Mayan EDMS\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2015-05-15 18:59-0400\n" -"PO-Revision-Date: 2014-10-25 06:47+0000\n" -"Last-Translator: Roberto Rosario\n" -"Language-Team: Turkish (Turkey) (http://www.transifex.com/projects/p/mayan-edms/language/tr_TR/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: tr_TR\n" -"Plural-Forms: nplurals=1; plural=0;\n" - -#: forms.py:25 links.py:13 links.py:19 -msgid "New holder" -msgstr "" - -#: forms.py:42 -msgid "Users" -msgstr "" - -#: forms.py:45 -msgid "Groups" -msgstr "" - -#: forms.py:48 -msgid "Roles" -msgstr "" - -#: forms.py:51 -msgid "Special" -msgstr "" - -#: links.py:9 -msgid "ACLs" -msgstr "" - -#: links.py:10 links.py:18 -msgid "Details" -msgstr "" - -#: links.py:11 links.py:20 -msgid "Grant" -msgstr "" - -#: links.py:12 links.py:21 -msgid "Revoke" -msgstr "" - -#: links.py:15 -msgid "Default ACLs" -msgstr "" - -#: links.py:16 views.py:379 -msgid "Classes" -msgstr "" - -#: links.py:17 -msgid "ACLs for class" -msgstr "" - -#: managers.py:118 managers.py:130 -msgid "Insufficient access." -msgstr "" - -#: models.py:25 models.py:67 -msgid "Permission" -msgstr "" - -#: models.py:51 -msgid "Access entry" -msgstr "" - -#: models.py:52 -msgid "Access entries" -msgstr "" - -#: models.py:88 -msgid "Default access entry" -msgstr "" - -#: models.py:89 -msgid "Default access entries" -msgstr "" - -#: models.py:108 models.py:111 models.py:112 -msgid "Creator" -msgstr "" - -#: permissions.py:7 permissions.py:8 -msgid "Access control lists" -msgstr "" - -#: permissions.py:10 -msgid "Edit ACLs" -msgstr "" - -#: permissions.py:11 -msgid "View ACLs" -msgstr "" - -#: permissions.py:13 -msgid "Edit class default ACLs" -msgstr "" - -#: permissions.py:14 -msgid "View class default ACLs" -msgstr "" - -#: views.py:48 -#, python-format -msgid "Access control lists for: %s" -msgstr "" - -#: views.py:50 views.py:402 -msgid "Holder" -msgstr "" - -#: views.py:51 views.py:403 -msgid "Permissions" -msgstr "" - -#: views.py:98 -#, python-format -msgid "Permissions available to: %(actor)s for %(obj)s" -msgstr "" - -#: views.py:105 views.py:434 -msgid "Namespace" -msgstr "" - -#: views.py:106 views.py:435 -msgid "Label" -msgstr "" - -#: views.py:108 views.py:437 -msgid "Has permission" -msgstr "" - -#: views.py:181 views.py:272 views.py:516 views.py:593 -msgid ", " -msgstr "" - -#: views.py:182 views.py:273 views.py:517 views.py:594 -#, python-format -msgid " for %s" -msgstr "" - -#: views.py:183 views.py:518 -#, python-format -msgid " to %s" -msgstr "" - -#: views.py:186 views.py:521 -#, python-format -msgid "Are you sure you wish to grant the permission %(title_suffix)s?" -msgstr "" - -#: views.py:188 views.py:523 -#, python-format -msgid "Are you sure you wish to grant the permissions %(title_suffix)s?" -msgstr "" - -#: views.py:195 views.py:530 -#, python-format -msgid "Permission \"%(permission)s\" granted to %(actor)s for %(object)s." -msgstr "" - -#: views.py:201 views.py:536 -#, python-format -msgid "" -"%(actor)s, already had the permission \"%(permission)s\" granted for " -"%(object)s." -msgstr "" - -#: views.py:274 views.py:595 -#, python-format -msgid " from %s" -msgstr "" - -#: views.py:277 views.py:598 -#, python-format -msgid "Are you sure you wish to revoke the permission %(title_suffix)s?" -msgstr "" - -#: views.py:279 views.py:600 -#, python-format -msgid "Are you sure you wish to revoke the permissions %(title_suffix)s?" -msgstr "" - -#: views.py:286 views.py:607 -#, python-format -msgid "Permission \"%(permission)s\" revoked of %(actor)s for %(object)s." -msgstr "" - -#: views.py:292 views.py:613 -#, python-format -msgid "%(actor)s, didn't had the permission \"%(permission)s\" for %(object)s." -msgstr "" - -#: views.py:346 -#, python-format -msgid "Add new holder for: %s" -msgstr "" - -#: views.py:347 views.py:477 -msgid "Select" -msgstr "" - -#: views.py:381 -msgid "Class" -msgstr "" - -#: views.py:400 -#, python-format -msgid "Default access control lists for class: %s" -msgstr "" - -#: views.py:428 -#, python-format -msgid "Permissions available to: %(actor)s for class %(class)s" -msgstr "" - -#: views.py:475 -#, python-format -msgid "Add new holder for class: %s" -msgstr "" - -#~ msgid "List of classes" -#~ msgstr "List of classes" - -#~ msgid "permission" -#~ msgstr "permission" - -#~ msgid "creator" -#~ msgstr "creator" diff --git a/mayan/apps/acls/locale/vi_VN/LC_MESSAGES/django.mo b/mayan/apps/acls/locale/vi_VN/LC_MESSAGES/django.mo index b40e8a29db..7936cd788b 100644 Binary files a/mayan/apps/acls/locale/vi_VN/LC_MESSAGES/django.mo and b/mayan/apps/acls/locale/vi_VN/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/acls/locale/vi_VN/LC_MESSAGES/django.po b/mayan/apps/acls/locale/vi_VN/LC_MESSAGES/django.po index ca928f59a3..9b9e8e78d8 100644 --- a/mayan/apps/acls/locale/vi_VN/LC_MESSAGES/django.po +++ b/mayan/apps/acls/locale/vi_VN/LC_MESSAGES/django.po @@ -8,93 +8,55 @@ msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2015-05-15 18:59-0400\n" -"PO-Revision-Date: 2014-10-25 06:47+0000\n" +"POT-Creation-Date: 2015-09-24 16:24-0400\n" +"PO-Revision-Date: 2015-09-24 05:15+0000\n" "Last-Translator: Roberto Rosario\n" -"Language-Team: Vietnamese (Viet Nam) (http://www.transifex.com/projects/p/mayan-edms/language/vi_VN/)\n" +"Language-Team: Vietnamese (Viet Nam) (http://www.transifex.com/rosarior/mayan-edms/language/vi_VN/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: vi_VN\n" "Plural-Forms: nplurals=1; plural=0;\n" -#: forms.py:25 links.py:13 links.py:19 -msgid "New holder" -msgstr "" - -#: forms.py:42 -msgid "Users" -msgstr "" - -#: forms.py:45 -msgid "Groups" -msgstr "" - -#: forms.py:48 -msgid "Roles" -msgstr "" - -#: forms.py:51 -msgid "Special" -msgstr "" - -#: links.py:9 +#: apps.py:14 links.py:30 msgid "ACLs" msgstr "" -#: links.py:10 links.py:18 -msgid "Details" +#: apps.py:20 links.py:38 models.py:36 +msgid "Permissions" msgstr "" -#: links.py:11 links.py:20 -msgid "Grant" +#: apps.py:24 models.py:38 +#| msgid "Roles" +msgid "Role" msgstr "" -#: links.py:12 links.py:21 -msgid "Revoke" +#: links.py:26 +msgid "Delete" msgstr "" -#: links.py:15 -msgid "Default ACLs" +#: links.py:34 +#| msgid "View ACLs" +msgid "New ACL" msgstr "" -#: links.py:16 views.py:379 -msgid "Classes" -msgstr "" - -#: links.py:17 -msgid "ACLs for class" -msgstr "" - -#: managers.py:118 managers.py:130 +#: managers.py:72 msgid "Insufficient access." msgstr "" -#: models.py:25 models.py:67 -msgid "Permission" -msgstr "" - -#: models.py:51 +#: models.py:44 msgid "Access entry" msgstr "" -#: models.py:52 +#: models.py:45 msgid "Access entries" msgstr "" -#: models.py:88 -msgid "Default access entry" +#: models.py:60 +msgid "None" msgstr "" -#: models.py:89 -msgid "Default access entries" -msgstr "" - -#: models.py:108 models.py:111 models.py:112 -msgid "Creator" -msgstr "" - -#: permissions.py:7 permissions.py:8 +#: permissions.py:7 msgid "Access control lists" msgstr "" @@ -102,136 +64,157 @@ msgstr "" msgid "Edit ACLs" msgstr "" -#: permissions.py:11 +#: permissions.py:13 msgid "View ACLs" msgstr "" -#: permissions.py:13 -msgid "Edit class default ACLs" -msgstr "" - -#: permissions.py:14 -msgid "View class default ACLs" -msgstr "" - -#: views.py:48 +#: views.py:61 #, python-format msgid "Access control lists for: %s" msgstr "" -#: views.py:50 views.py:402 -msgid "Holder" -msgstr "" - -#: views.py:51 views.py:403 -msgid "Permissions" -msgstr "" - -#: views.py:98 +#: views.py:107 #, python-format -msgid "Permissions available to: %(actor)s for %(obj)s" +msgid "New access control lists for: %s" msgstr "" -#: views.py:105 views.py:434 -msgid "Namespace" -msgstr "" - -#: views.py:106 views.py:435 -msgid "Label" -msgstr "" - -#: views.py:108 views.py:437 -msgid "Has permission" -msgstr "" - -#: views.py:181 views.py:272 views.py:516 views.py:593 -msgid ", " -msgstr "" - -#: views.py:182 views.py:273 views.py:517 views.py:594 +#: views.py:132 #, python-format -msgid " for %s" +#| msgid "Default ACLs" +msgid "Delete ACL: %s" msgstr "" -#: views.py:183 views.py:518 +#: views.py:147 +msgid "Available permissions" +msgstr "" + +#: views.py:148 +msgid "Granted permissions" +msgstr "" + +#: views.py:187 +msgid "Disabled permissions are inherited from a parent object." +msgstr "" + +#: views.py:218 #, python-format -msgid " to %s" +msgid "Role \"%(role)s\" permission's for \"%(object)s\"" msgstr "" -#: views.py:186 views.py:521 -#, python-format -msgid "Are you sure you wish to grant the permission %(title_suffix)s?" -msgstr "" +#~ msgid "New holder" +#~ msgstr "New holder" -#: views.py:188 views.py:523 -#, python-format -msgid "Are you sure you wish to grant the permissions %(title_suffix)s?" -msgstr "" +#~ msgid "Users" +#~ msgstr "Users" -#: views.py:195 views.py:530 -#, python-format -msgid "Permission \"%(permission)s\" granted to %(actor)s for %(object)s." -msgstr "" +#~ msgid "Groups" +#~ msgstr "Groups" -#: views.py:201 views.py:536 -#, python-format -msgid "" -"%(actor)s, already had the permission \"%(permission)s\" granted for " -"%(object)s." -msgstr "" +#~ msgid "Special" +#~ msgstr "Special" -#: views.py:274 views.py:595 -#, python-format -msgid " from %s" -msgstr "" +#~ msgid "Details" +#~ msgstr "details" -#: views.py:277 views.py:598 -#, python-format -msgid "Are you sure you wish to revoke the permission %(title_suffix)s?" -msgstr "" +#~ msgid "Grant" +#~ msgstr "grant" -#: views.py:279 views.py:600 -#, python-format -msgid "Are you sure you wish to revoke the permissions %(title_suffix)s?" -msgstr "" +#~ msgid "Revoke" +#~ msgstr "revoke" -#: views.py:286 views.py:607 -#, python-format -msgid "Permission \"%(permission)s\" revoked of %(actor)s for %(object)s." -msgstr "" +#~ msgid "Classes" +#~ msgstr "classes" -#: views.py:292 views.py:613 -#, python-format -msgid "%(actor)s, didn't had the permission \"%(permission)s\" for %(object)s." -msgstr "" +#~ msgid "ACLs for class" +#~ msgstr "ACLs for class" -#: views.py:346 -#, python-format -msgid "Add new holder for: %s" -msgstr "" +#~ msgid "Permission" +#~ msgstr "permissions" -#: views.py:347 views.py:477 -msgid "Select" -msgstr "" +#~ msgid "Default access entry" +#~ msgstr "default access entry" -#: views.py:381 -msgid "Class" -msgstr "" +#~ msgid "Default access entries" +#~ msgstr "default access entries" -#: views.py:400 -#, python-format -msgid "Default access control lists for class: %s" -msgstr "" +#~ msgid "Creator" +#~ msgstr "Creator" -#: views.py:428 -#, python-format -msgid "Permissions available to: %(actor)s for class %(class)s" -msgstr "" +#~ msgid "Edit class default ACLs" +#~ msgstr "Edit class default ACLs" -#: views.py:475 -#, python-format -msgid "Add new holder for class: %s" -msgstr "" +#~ msgid "View class default ACLs" +#~ msgstr "View class default ACLs" + +#~ msgid "Holder" +#~ msgstr "holder" + +#~ msgid "Permissions available to: %(actor)s for %(obj)s" +#~ msgstr "permissions available to: %(actor)s for %(obj)s" + +#~ msgid "Namespace" +#~ msgstr "namespace" + +#~ msgid "Label" +#~ msgstr "label" + +#~ msgid ", " +#~ msgstr ", " + +#~ msgid " for %s" +#~ msgstr " for %s" + +#~ msgid " to %s" +#~ msgstr " to %s" + +#~ msgid "Are you sure you wish to grant the permission %(title_suffix)s?" +#~ msgstr "Are you sure you wish to grant the permission %(title_suffix)s?" + +#~ msgid "Are you sure you wish to grant the permissions %(title_suffix)s?" +#~ msgstr "Are you sure you wish to grant the permissions %(title_suffix)s?" + +#~ msgid "Permission \"%(permission)s\" granted to %(actor)s for %(object)s." +#~ msgstr "Permission \"%(permission)s\" granted to %(actor)s for %(object)s." + +#~ msgid "" +#~ "%(actor)s, already had the permission \"%(permission)s\" granted for " +#~ "%(object)s." +#~ msgstr "" +#~ "%(actor)s, already had the permission \"%(permission)s\" granted for " +#~ "%(object)s." + +#~ msgid " from %s" +#~ msgstr " from %s" + +#~ msgid "Are you sure you wish to revoke the permission %(title_suffix)s?" +#~ msgstr "Are you sure you wish to revoke the permission %(title_suffix)s?" + +#~ msgid "Are you sure you wish to revoke the permissions %(title_suffix)s?" +#~ msgstr "Are you sure you wish to revoke the permissions %(title_suffix)s?" + +#~ msgid "Permission \"%(permission)s\" revoked of %(actor)s for %(object)s." +#~ msgstr "Permission \"%(permission)s\" revoked of %(actor)s for %(object)s." + +#~ msgid "%(actor)s, didn't had the permission \"%(permission)s\" for %(object)s." +#~ msgstr "%(actor)s, didn't had the permission \"%(permission)s\" for %(object)s." + +#~ msgid "Add new holder for: %s" +#~ msgstr "add new holder for: %s" + +#~ msgid "Select" +#~ msgstr "Select" + +#~ msgid "Class" +#~ msgstr "class" + +#~ msgid "Default access control lists for class: %s" +#~ msgstr "default access control lists for class: %s" + +#~ msgid "Permissions available to: %(actor)s for class %(class)s" +#~ msgstr "permissions available to: %(actor)s for class %(class)s" + +#~ msgid "Add new holder for class: %s" +#~ msgstr "add new holder for class: %s" #~ msgid "List of classes" #~ msgstr "List of classes" diff --git a/mayan/apps/acls/locale/zh_CN/LC_MESSAGES/django.mo b/mayan/apps/acls/locale/zh_CN/LC_MESSAGES/django.mo index 5fc8f454cd..2bdc156fc8 100644 Binary files a/mayan/apps/acls/locale/zh_CN/LC_MESSAGES/django.mo and b/mayan/apps/acls/locale/zh_CN/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/acls/locale/zh_CN/LC_MESSAGES/django.po b/mayan/apps/acls/locale/zh_CN/LC_MESSAGES/django.po index d08fb76a7b..665c62fcac 100644 --- a/mayan/apps/acls/locale/zh_CN/LC_MESSAGES/django.po +++ b/mayan/apps/acls/locale/zh_CN/LC_MESSAGES/django.po @@ -4,236 +4,217 @@ # # Translators: # Translators: -# Ford Guo , 2014 -# Genlin Jiao , 2015 msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2015-05-15 18:59-0400\n" -"PO-Revision-Date: 2015-01-07 02:01+0000\n" -"Last-Translator: Genlin Jiao \n" -"Language-Team: Chinese (China) (http://www.transifex.com/projects/p/mayan-edms/language/zh_CN/)\n" +"POT-Creation-Date: 2015-09-24 16:24-0400\n" +"PO-Revision-Date: 2015-09-24 05:15+0000\n" +"Last-Translator: Roberto Rosario\n" +"Language-Team: Chinese (China) (http://www.transifex.com/rosarior/mayan-edms/language/zh_CN/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: zh_CN\n" "Plural-Forms: nplurals=1; plural=0;\n" -#: forms.py:25 links.py:13 links.py:19 -msgid "New holder" -msgstr "新建权限" - -#: forms.py:42 -msgid "Users" -msgstr "用户" - -#: forms.py:45 -msgid "Groups" -msgstr "用户组" - -#: forms.py:48 -msgid "Roles" -msgstr "角色" - -#: forms.py:51 -msgid "Special" -msgstr "特例" - -#: links.py:9 +#: apps.py:14 links.py:30 msgid "ACLs" -msgstr "访问控制列表" +msgstr "" -#: links.py:10 links.py:18 -msgid "Details" -msgstr "细节" +#: apps.py:20 links.py:38 models.py:36 +msgid "Permissions" +msgstr "" -#: links.py:11 links.py:20 -msgid "Grant" -msgstr " 授予" +#: apps.py:24 models.py:38 +#| msgid "Roles" +msgid "Role" +msgstr "" -#: links.py:12 links.py:21 -msgid "Revoke" -msgstr "撤回" +#: links.py:26 +msgid "Delete" +msgstr "" -#: links.py:15 -msgid "Default ACLs" -msgstr "默认访问控制" +#: links.py:34 +#| msgid "View ACLs" +msgid "New ACL" +msgstr "" -#: links.py:16 views.py:379 -msgid "Classes" -msgstr "类" - -#: links.py:17 -msgid "ACLs for class" -msgstr "类访问控制列表" - -#: managers.py:118 managers.py:130 +#: managers.py:72 msgid "Insufficient access." -msgstr "权限不足" +msgstr "" -#: models.py:25 models.py:67 -msgid "Permission" -msgstr "许可" - -#: models.py:51 +#: models.py:44 msgid "Access entry" -msgstr "访问入口" +msgstr "" -#: models.py:52 +#: models.py:45 msgid "Access entries" -msgstr "多个访问入口" +msgstr "" -#: models.py:88 -msgid "Default access entry" -msgstr "默认访问入口" +#: models.py:60 +msgid "None" +msgstr "" -#: models.py:89 -msgid "Default access entries" -msgstr "默认多个访问入口" - -#: models.py:108 models.py:111 models.py:112 -msgid "Creator" -msgstr "创建者" - -#: permissions.py:7 permissions.py:8 +#: permissions.py:7 msgid "Access control lists" -msgstr "访问控制列表" +msgstr "" #: permissions.py:10 msgid "Edit ACLs" -msgstr "编辑访问控制列表" - -#: permissions.py:11 -msgid "View ACLs" -msgstr "查看访问控制列表" +msgstr "" #: permissions.py:13 -msgid "Edit class default ACLs" -msgstr "编辑缺省的ACL类" +msgid "View ACLs" +msgstr "" -#: permissions.py:14 -msgid "View class default ACLs" -msgstr "查看缺省的ACL类" - -#: views.py:48 +#: views.py:61 #, python-format msgid "Access control lists for: %s" msgstr "" -#: views.py:50 views.py:402 -msgid "Holder" +#: views.py:107 +#, python-format +msgid "New access control lists for: %s" msgstr "" -#: views.py:51 views.py:403 -msgid "Permissions" +#: views.py:132 +#, python-format +#| msgid "Default ACLs" +msgid "Delete ACL: %s" msgstr "" -#: views.py:98 -#, python-format -msgid "Permissions available to: %(actor)s for %(obj)s" +#: views.py:147 +msgid "Available permissions" msgstr "" -#: views.py:105 views.py:434 -msgid "Namespace" +#: views.py:148 +msgid "Granted permissions" msgstr "" -#: views.py:106 views.py:435 -msgid "Label" +#: views.py:187 +msgid "Disabled permissions are inherited from a parent object." msgstr "" -#: views.py:108 views.py:437 -msgid "Has permission" +#: views.py:218 +#, python-format +msgid "Role \"%(role)s\" permission's for \"%(object)s\"" msgstr "" -#: views.py:181 views.py:272 views.py:516 views.py:593 -msgid ", " -msgstr "," +#~ msgid "New holder" +#~ msgstr "New holder" -#: views.py:182 views.py:273 views.py:517 views.py:594 -#, python-format -msgid " for %s" -msgstr "对 %s" +#~ msgid "Users" +#~ msgstr "Users" -#: views.py:183 views.py:518 -#, python-format -msgid " to %s" -msgstr "到 %s" +#~ msgid "Groups" +#~ msgstr "Groups" -#: views.py:186 views.py:521 -#, python-format -msgid "Are you sure you wish to grant the permission %(title_suffix)s?" -msgstr "确定要赋予权限 %(title_suffix)s么?" +#~ msgid "Special" +#~ msgstr "Special" -#: views.py:188 views.py:523 -#, python-format -msgid "Are you sure you wish to grant the permissions %(title_suffix)s?" -msgstr "确定要赋予权限%(title_suffix)s么?" +#~ msgid "Details" +#~ msgstr "details" -#: views.py:195 views.py:530 -#, python-format -msgid "Permission \"%(permission)s\" granted to %(actor)s for %(object)s." -msgstr "权限\"%(permission)s\"被赋给%(object)s的%(actor)s" +#~ msgid "Grant" +#~ msgstr "grant" -#: views.py:201 views.py:536 -#, python-format -msgid "" -"%(actor)s, already had the permission \"%(permission)s\" granted for " -"%(object)s." -msgstr "%(object)s的%(actor)s已经被赋予\"%(permission)s\"的权限" +#~ msgid "Revoke" +#~ msgstr "revoke" -#: views.py:274 views.py:595 -#, python-format -msgid " from %s" -msgstr "从 %s" +#~ msgid "Classes" +#~ msgstr "classes" -#: views.py:277 views.py:598 -#, python-format -msgid "Are you sure you wish to revoke the permission %(title_suffix)s?" -msgstr "确定要撤销权限%(title_suffix)s么?" +#~ msgid "ACLs for class" +#~ msgstr "ACLs for class" -#: views.py:279 views.py:600 -#, python-format -msgid "Are you sure you wish to revoke the permissions %(title_suffix)s?" -msgstr "确定要撤销权限%(title_suffix)s么?" +#~ msgid "Permission" +#~ msgstr "permissions" -#: views.py:286 views.py:607 -#, python-format -msgid "Permission \"%(permission)s\" revoked of %(actor)s for %(object)s." -msgstr " %(object)s的%(actor)s权限\"%(permission)s\"已经被撤销" +#~ msgid "Default access entry" +#~ msgstr "default access entry" -#: views.py:292 views.py:613 -#, python-format -msgid "%(actor)s, didn't had the permission \"%(permission)s\" for %(object)s." -msgstr "%(object)s的%(actor)s没有权限\"%(permission)s\"" +#~ msgid "Default access entries" +#~ msgstr "default access entries" -#: views.py:346 -#, python-format -msgid "Add new holder for: %s" -msgstr "" +#~ msgid "Creator" +#~ msgstr "Creator" -#: views.py:347 views.py:477 -msgid "Select" -msgstr "选择" +#~ msgid "Edit class default ACLs" +#~ msgstr "Edit class default ACLs" -#: views.py:381 -msgid "Class" -msgstr "" +#~ msgid "View class default ACLs" +#~ msgstr "View class default ACLs" -#: views.py:400 -#, python-format -msgid "Default access control lists for class: %s" -msgstr "" +#~ msgid "Holder" +#~ msgstr "holder" -#: views.py:428 -#, python-format -msgid "Permissions available to: %(actor)s for class %(class)s" -msgstr "" +#~ msgid "Permissions available to: %(actor)s for %(obj)s" +#~ msgstr "permissions available to: %(actor)s for %(obj)s" -#: views.py:475 -#, python-format -msgid "Add new holder for class: %s" -msgstr "" +#~ msgid "Namespace" +#~ msgstr "namespace" + +#~ msgid "Label" +#~ msgstr "label" + +#~ msgid ", " +#~ msgstr ", " + +#~ msgid " for %s" +#~ msgstr " for %s" + +#~ msgid " to %s" +#~ msgstr " to %s" + +#~ msgid "Are you sure you wish to grant the permission %(title_suffix)s?" +#~ msgstr "Are you sure you wish to grant the permission %(title_suffix)s?" + +#~ msgid "Are you sure you wish to grant the permissions %(title_suffix)s?" +#~ msgstr "Are you sure you wish to grant the permissions %(title_suffix)s?" + +#~ msgid "Permission \"%(permission)s\" granted to %(actor)s for %(object)s." +#~ msgstr "Permission \"%(permission)s\" granted to %(actor)s for %(object)s." + +#~ msgid "" +#~ "%(actor)s, already had the permission \"%(permission)s\" granted for " +#~ "%(object)s." +#~ msgstr "" +#~ "%(actor)s, already had the permission \"%(permission)s\" granted for " +#~ "%(object)s." + +#~ msgid " from %s" +#~ msgstr " from %s" + +#~ msgid "Are you sure you wish to revoke the permission %(title_suffix)s?" +#~ msgstr "Are you sure you wish to revoke the permission %(title_suffix)s?" + +#~ msgid "Are you sure you wish to revoke the permissions %(title_suffix)s?" +#~ msgstr "Are you sure you wish to revoke the permissions %(title_suffix)s?" + +#~ msgid "Permission \"%(permission)s\" revoked of %(actor)s for %(object)s." +#~ msgstr "Permission \"%(permission)s\" revoked of %(actor)s for %(object)s." + +#~ msgid "%(actor)s, didn't had the permission \"%(permission)s\" for %(object)s." +#~ msgstr "%(actor)s, didn't had the permission \"%(permission)s\" for %(object)s." + +#~ msgid "Add new holder for: %s" +#~ msgstr "add new holder for: %s" + +#~ msgid "Select" +#~ msgstr "Select" + +#~ msgid "Class" +#~ msgstr "class" + +#~ msgid "Default access control lists for class: %s" +#~ msgstr "default access control lists for class: %s" + +#~ msgid "Permissions available to: %(actor)s for class %(class)s" +#~ msgstr "permissions available to: %(actor)s for class %(class)s" + +#~ msgid "Add new holder for class: %s" +#~ msgstr "add new holder for class: %s" #~ msgid "List of classes" #~ msgstr "List of classes" diff --git a/mayan/apps/acls/locale/zh_TW/LC_MESSAGES/django.mo b/mayan/apps/acls/locale/zh_TW/LC_MESSAGES/django.mo deleted file mode 100644 index 22751335e9..0000000000 Binary files a/mayan/apps/acls/locale/zh_TW/LC_MESSAGES/django.mo and /dev/null differ diff --git a/mayan/apps/acls/locale/zh_TW/LC_MESSAGES/django.po b/mayan/apps/acls/locale/zh_TW/LC_MESSAGES/django.po deleted file mode 100644 index 943db3197c..0000000000 --- a/mayan/apps/acls/locale/zh_TW/LC_MESSAGES/django.po +++ /dev/null @@ -1,244 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -# Translators: -msgid "" -msgstr "" -"Project-Id-Version: Mayan EDMS\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2015-05-15 18:59-0400\n" -"PO-Revision-Date: 2014-10-25 06:47+0000\n" -"Last-Translator: Roberto Rosario\n" -"Language-Team: Chinese (Taiwan) (http://www.transifex.com/projects/p/mayan-" -"edms/language/zh_TW/)\n" -"Language: zh_TW\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" - -#: forms.py:25 links.py:13 links.py:19 -msgid "New holder" -msgstr "" - -#: forms.py:42 -msgid "Users" -msgstr "" - -#: forms.py:45 -msgid "Groups" -msgstr "" - -#: forms.py:48 -msgid "Roles" -msgstr "" - -#: forms.py:51 -msgid "Special" -msgstr "" - -#: links.py:9 -msgid "ACLs" -msgstr "" - -#: links.py:10 links.py:18 -msgid "Details" -msgstr "" - -#: links.py:11 links.py:20 -msgid "Grant" -msgstr "" - -#: links.py:12 links.py:21 -msgid "Revoke" -msgstr "" - -#: links.py:15 -msgid "Default ACLs" -msgstr "" - -#: links.py:16 views.py:379 -msgid "Classes" -msgstr "" - -#: links.py:17 -msgid "ACLs for class" -msgstr "" - -#: managers.py:118 managers.py:130 -msgid "Insufficient access." -msgstr "" - -#: models.py:25 models.py:67 -msgid "Permission" -msgstr "" - -#: models.py:51 -msgid "Access entry" -msgstr "" - -#: models.py:52 -msgid "Access entries" -msgstr "" - -#: models.py:88 -msgid "Default access entry" -msgstr "" - -#: models.py:89 -msgid "Default access entries" -msgstr "" - -#: models.py:108 models.py:111 models.py:112 -msgid "Creator" -msgstr "" - -#: permissions.py:7 permissions.py:8 -msgid "Access control lists" -msgstr "" - -#: permissions.py:10 -msgid "Edit ACLs" -msgstr "" - -#: permissions.py:11 -msgid "View ACLs" -msgstr "" - -#: permissions.py:13 -msgid "Edit class default ACLs" -msgstr "" - -#: permissions.py:14 -msgid "View class default ACLs" -msgstr "" - -#: views.py:48 -#, python-format -msgid "Access control lists for: %s" -msgstr "" - -#: views.py:50 views.py:402 -msgid "Holder" -msgstr "" - -#: views.py:51 views.py:403 -msgid "Permissions" -msgstr "" - -#: views.py:98 -#, python-format -msgid "Permissions available to: %(actor)s for %(obj)s" -msgstr "" - -#: views.py:105 views.py:434 -msgid "Namespace" -msgstr "" - -#: views.py:106 views.py:435 -msgid "Label" -msgstr "" - -#: views.py:108 views.py:437 -msgid "Has permission" -msgstr "" - -#: views.py:181 views.py:272 views.py:516 views.py:593 -msgid ", " -msgstr "" - -#: views.py:182 views.py:273 views.py:517 views.py:594 -#, python-format -msgid " for %s" -msgstr "" - -#: views.py:183 views.py:518 -#, python-format -msgid " to %s" -msgstr "" - -#: views.py:186 views.py:521 -#, python-format -msgid "Are you sure you wish to grant the permission %(title_suffix)s?" -msgstr "" - -#: views.py:188 views.py:523 -#, python-format -msgid "Are you sure you wish to grant the permissions %(title_suffix)s?" -msgstr "" - -#: views.py:195 views.py:530 -#, python-format -msgid "Permission \"%(permission)s\" granted to %(actor)s for %(object)s." -msgstr "" - -#: views.py:201 views.py:536 -#, python-format -msgid "" -"%(actor)s, already had the permission \"%(permission)s\" granted for " -"%(object)s." -msgstr "" - -#: views.py:274 views.py:595 -#, python-format -msgid " from %s" -msgstr "" - -#: views.py:277 views.py:598 -#, python-format -msgid "Are you sure you wish to revoke the permission %(title_suffix)s?" -msgstr "" - -#: views.py:279 views.py:600 -#, python-format -msgid "Are you sure you wish to revoke the permissions %(title_suffix)s?" -msgstr "" - -#: views.py:286 views.py:607 -#, python-format -msgid "Permission \"%(permission)s\" revoked of %(actor)s for %(object)s." -msgstr "" - -#: views.py:292 views.py:613 -#, python-format -msgid "%(actor)s, didn't had the permission \"%(permission)s\" for %(object)s." -msgstr "" - -#: views.py:346 -#, python-format -msgid "Add new holder for: %s" -msgstr "" - -#: views.py:347 views.py:477 -msgid "Select" -msgstr "" - -#: views.py:381 -msgid "Class" -msgstr "" - -#: views.py:400 -#, python-format -msgid "Default access control lists for class: %s" -msgstr "" - -#: views.py:428 -#, python-format -msgid "Permissions available to: %(actor)s for class %(class)s" -msgstr "" - -#: views.py:475 -#, python-format -msgid "Add new holder for class: %s" -msgstr "" - -#~ msgid "List of classes" -#~ msgstr "List of classes" - -#~ msgid "permission" -#~ msgstr "permission" - -#~ msgid "creator" -#~ msgstr "creator" diff --git a/mayan/apps/acls/managers.py b/mayan/apps/acls/managers.py index bb04f301b8..e4b3acadd1 100644 --- a/mayan/apps/acls/managers.py +++ b/mayan/apps/acls/managers.py @@ -2,329 +2,126 @@ from __future__ import absolute_import, unicode_literals import logging -from django.contrib.auth.models import User from django.contrib.contenttypes.models import ContentType from django.core.exceptions import PermissionDenied -from django.core.urlresolvers import reverse from django.db import models from django.db.models import Q from django.utils.translation import ugettext -from common.models import AnonymousUserSingleton -from permissions.models import Permission, RoleMember +from permissions.models import StoredPermission -from .classes import AccessHolder, ClassAccessHolder, get_source_object +from .classes import ModelPermission logger = logging.getLogger(__name__) -class AccessEntryManager(models.Manager): +class AccessControlListManager(models.Manager): """ Implement a 3 tier permission system, involving a permissions, an actor and an object """ - def grant(self, permission, actor, obj): - """ - Grant a permission (what), (to) an actor, (on) a specific object - """ - obj = get_source_object(obj) - actor = get_source_object(actor) - - access_entry, created = self.model.objects.get_or_create( - permission=permission, - holder_type=ContentType.objects.get_for_model(actor), - holder_id=actor.pk, - content_type=ContentType.objects.get_for_model(obj), - object_id=obj.pk - ) - return created - - def revoke(self, permission, actor, obj): - """ - Revoke a permission (what), (from) an actor, (on) a specific object - """ - obj = get_source_object(obj) - actor = get_source_object(actor) + def get_inherited_permissions(self, role, obj): try: - access_entry = self.model.objects.get( - permission=permission, - holder_type=ContentType.objects.get_for_model(actor), - holder_id=actor.pk, - content_type=ContentType.objects.get_for_model(obj), - object_id=obj.pk - ) - except self.model.DoesNotExist: - return False - else: - access_entry.delete() - return True - - def has_access(self, permission, actor, obj, db_only=False): - """ - Returns whether an actor has a specific permission for an object - """ - obj = get_source_object(obj) - actor = get_source_object(actor) - - if isinstance(actor, User) and not db_only: - # db_only causes the return of only the stored permissions - # and not the perceived permissions for an actor - if actor.is_superuser or actor.is_staff: - return True - - actor = AnonymousUserSingleton.objects.passthru_check(actor) - try: - content_type = ContentType.objects.get_for_model(obj) + instance = obj.first() except AttributeError: - # Object doesn't have a content type, therefore allow access + instance = obj + else: + if not instance: + return StoredPermission.objects.none() + + try: + parent_accessor = ModelPermission.get_inheritance(type(instance)) + except KeyError: + return StoredPermission.objects.none() + else: + parent_object = getattr(instance, parent_accessor) + content_type = ContentType.objects.get_for_model(parent_object) + try: + return self.get( + role=role, content_type=content_type, + object_id=parent_object.pk + ).permissions.all() + except self.model.DoesNotExist: + return StoredPermission.objects.none() + + def check_access(self, permissions, user, obj, related=None): + if user.is_superuser or user.is_staff: return True try: - self.model.objects.get( - permission=permission.get_stored_permission(), - holder_type=ContentType.objects.get_for_model(actor), - holder_id=actor.pk, - content_type=content_type, - object_id=obj.pk - ) - except self.model.DoesNotExist: - # If not check if the actor's memberships is one of - # the access's holder? - roles = RoleMember.objects.get_roles_for_member(actor) - - if isinstance(actor, User): - groups = actor.groups.all() - else: - groups = [] - - for membership in list(set(roles) | set(groups)): - if self.has_access(permission, membership, obj, db_only): - return True - - logger.debug('Fallthru') - return False - else: - return True - - def check_access(self, permission, actor, obj): - # TODO: Merge with has_access - obj = get_source_object(obj) - actor = get_source_object(actor) - - if self.has_access(permission, actor, obj): - return True - else: - raise PermissionDenied(ugettext('Insufficient access.')) - - def check_accesses(self, permission_list, actor, obj): - """ - Returns whether an actor has at least one of a list of permissions for an object - """ - obj = get_source_object(obj) - actor = get_source_object(actor) - for permission in permission_list: - if self.has_access(permission, actor, obj): - return True - - raise PermissionDenied(ugettext('Insufficient access.')) - - def get_allowed_class_objects(self, permission, actor, cls, related=None): - logger.debug('related: %s', related) - - actor = AnonymousUserSingleton.objects.passthru_check(actor) - actor_type = ContentType.objects.get_for_model(actor) - content_type = ContentType.objects.get_for_model(cls) - - # Calculate actor role membership ACL query - total_queries = Q() - for role in RoleMember.objects.get_roles_for_member(actor): - role_type = ContentType.objects.get_for_model(role) - if related: - query = Q(holder_type=role_type, holder_id=role.pk, permission=permission.get_stored_permission) - else: - query = Q(holder_type=role_type, holder_id=role.pk, content_type=content_type, permission=permission.get_stored_permission) - if not total_queries: - total_queries = query - else: - total_queries = total_queries | query - - # Calculate actor group membership ACL query - if isinstance(actor, User): - groups = actor.groups.all() - else: - groups = [] - - for group in groups: - group_type = ContentType.objects.get_for_model(group) - if related: - query = Q(holder_type=group_type, holder_id=group.pk, permission=permission.get_stored_permission) - else: - query = Q(holder_type=group_type, holder_id=group.pk, content_type=content_type, permission=permission.get_stored_permission) - if not total_queries: - total_queries = query - else: - total_queries = total_queries | query + stored_permissions = [ + permission.stored_permission for permission in permissions + ] + except TypeError: + stored_permissions = [permissions.stored_permission] if related: - actor_query = Q(holder_type=actor_type, holder_id=actor.pk, permission=permission.get_stored_permission) - master_list = [obj.content_object for obj in self.model.objects.select_related().filter(actor_query | total_queries)] - logger.debug('master_list: %s', master_list) - # TODO: update to use Q objects and check performance diff - # kwargs = {'%s__in' % related: master_list} - # Q(**kwargs) - return (obj for obj in cls.objects.all() if getattr(obj, related) in master_list) + obj = getattr(obj, related) + + try: + parent_accessor = ModelPermission.get_inheritance(obj._meta.model) + except KeyError: + pass else: - actor_query = Q(holder_type=actor_type, holder_id=actor.pk, content_type=content_type, permission=permission.get_stored_permission) - return (obj.content_object for obj in self.model.objects.filter(actor_query | total_queries)) + try: + return self.check_access( + permissions, user, getattr(obj, parent_accessor) + ) + except PermissionDenied: + pass - def get_acl_url(self, obj): - content_type = ContentType.objects.get_for_model(obj) - return reverse('acl_list', args=[content_type.app_label, content_type.model, obj.pk]) + user_roles = [] + for group in user.groups.all(): + for role in group.roles.all(): + if set(stored_permissions).intersection(set(self.get_inherited_permissions(role=role, obj=obj))): + return True - def get_new_holder_url(self, obj): - content_type = ContentType.objects.get_for_model(obj) - return reverse('acl_new_holder_for', args=[content_type.app_label, content_type.model, obj.pk]) + user_roles.append(role) - def get_holders_for(self, obj): - content_type = ContentType.objects.get_for_model(obj) - holder_list = [] - for access_entry in self.model.objects.filter(content_type=content_type, object_id=obj.pk): - if access_entry.holder_object: - # Don't add references to non existant content type objects - entry = AccessHolder.encapsulate(access_entry.holder_object) + # TODO: possible .exists() optimization + if not self.filter(content_type=ContentType.objects.get_for_model(obj), object_id=obj.pk, permissions__in=stored_permissions, role__in=user_roles): + raise PermissionDenied(ugettext('Insufficient access.')) - if entry not in holder_list: - holder_list.append(entry) + def filter_by_access(self, permission, user, queryset): + if user.is_superuser or user.is_staff: + return queryset - return holder_list - - def get_holder_permissions_for(self, obj, actor, db_only=False): - """ - Returns a list of actors that hold at least one permission for - a specific object - """ - logger.debug('obj: %s', obj) - logger.debug('actor: %s', actor) - - if isinstance(actor, User) and not db_only: - if actor.is_superuser or actor.is_staff: - return Permission.objects.all() - - actor_type = ContentType.objects.get_for_model(actor) - content_type = ContentType.objects.get_for_model(obj) - return (access.permission for access in self.model.objects.filter(content_type=content_type, object_id=obj.pk, holder_type=actor_type, holder_id=actor.pk)) - - def filter_objects_by_access(self, permission, actor, object_list, exception_on_empty=False, related=None): - """ - Filter a list of objects or a QuerySet elements depending on - whether the actor holds the specified permission - """ - logger.debug('exception_on_empty: %s', exception_on_empty) - logger.debug('object_list: %s', object_list) - - if isinstance(actor, User): - if actor.is_superuser or actor.is_staff: - return object_list + user_roles = [] + for group in user.groups.all(): + for role in group.roles.all(): + user_roles.append(role) try: - if object_list.count() == 0: - return object_list - except TypeError: - # object_list is not a queryset - if len(object_list) == 0: - return object_list - - try: - # Try to process as a QuerySet - qs = object_list.filter(pk__in=[obj.pk for obj in self.get_allowed_class_objects(permission, actor, object_list[0].__class__, related)]) - logger.debug('qs: %s', qs) - - if qs.count() == 0 and exception_on_empty: - raise PermissionDenied - - return qs - except AttributeError: - # Fallback to a filtered list - object_list = list(set(object_list) & set(self.get_allowed_class_objects(permission, actor, object_list[0].__class__, related))) - logger.debug('object_list: %s', object_list) - if len(object_list) == 0 and exception_on_empty: - raise PermissionDenied - - return object_list - - -class DefaultAccessEntryManager(models.Manager): - """ - Implement a 3 tier permission system, involving a permission, an actor - and a class or content type. This model keeps track of the access - control lists that will be added when an instance of the recorded - content type is created. - """ - def get_holders_for(self, cls): - cls = get_source_object(cls) - content_type = ContentType.objects.get_for_model(cls) - holder_list = [] - for access_entry in self.model.objects.filter(content_type=content_type): - if access_entry.holder_object: - # Don't add references to non existant content type objects - entry = ClassAccessHolder.encapsulate(access_entry.holder_object) - - if entry not in holder_list: - holder_list.append(entry) - - return holder_list - - def has_access(self, permission, actor, cls): - if isinstance(actor, User): - if actor.is_superuser or actor.is_staff: - return True - - try: - self.model.objects.get( - permission=permission.get_stored_permission(), - holder_type=ContentType.objects.get_for_model(actor), - holder_id=actor.pk, - content_type=ContentType.objects.get_for_model(cls), - ) - except self.model.DoesNotExist: - return False + parent_accessor = ModelPermission.get_inheritance(queryset.model) + except KeyError: + parent_acl_query = Q() else: - return True + instance = queryset.first() + if instance: + parent_object = getattr(instance, parent_accessor) + parent_content_type = ContentType.objects.get_for_model( + parent_object + ) + parent_queryset = self.filter( + content_type=parent_content_type, role__in=user_roles, + permissions=permission.stored_permission + ) + parent_acl_query = Q( + **{ + '{}__pk__in'.format( + parent_accessor + ): parent_queryset.values_list('object_id', flat=True) + } + ) + else: + parent_acl_query = Q() - def grant(self, permission, actor, cls): - """ - Grant a permission (what), (to) an actor, (on) a specific class - """ - access_entry, created = self.model.objects.get_or_create( - permission=permission, - holder_type=ContentType.objects.get_for_model(actor), - holder_id=actor.pk, - content_type=ContentType.objects.get_for_model(cls), - ) - return created + # Directly granted access + content_type = ContentType.objects.get_for_model(queryset.model) + acl_query = Q(pk__in=self.filter( + content_type=content_type, role__in=user_roles, + permissions=permission.stored_permission + ).values_list('object_id', flat=True)) - def revoke(self, permission, actor, cls): - """ - Revoke a permission (what), (from) an actor, (on) a specific class - """ - try: - access_entry = self.model.objects.get( - permission=permission, - holder_type=ContentType.objects.get_for_model(actor), - holder_id=actor.pk, - content_type=ContentType.objects.get_for_model(cls), - ) - access_entry.delete() - return True - except self.model.DoesNotExist: - return False - - def get_holder_permissions_for(self, cls, actor): - if isinstance(actor, User): - if actor.is_superuser or actor.is_staff: - return Permission.objects.all() - - actor_type = ContentType.objects.get_for_model(actor) - content_type = ContentType.objects.get_for_model(cls) - return [access.permission for access in self.model.objects.filter(content_type=content_type, holder_type=actor_type, holder_id=actor.pk)] + return queryset.filter(parent_acl_query | acl_query) diff --git a/mayan/apps/acls/migrations/0001_initial.py b/mayan/apps/acls/migrations/0001_initial.py new file mode 100644 index 0000000000..48932b6683 --- /dev/null +++ b/mayan/apps/acls/migrations/0001_initial.py @@ -0,0 +1,104 @@ +# -*- coding: utf-8 -*- +from __future__ import unicode_literals + +from django.db import models, migrations + + +class Migration(migrations.Migration): + + dependencies = [ + ('contenttypes', '0001_initial'), + ('permissions', '__first__'), + ] + + operations = [ + migrations.CreateModel( + name='AccessEntry', + fields=[ + ( + 'id', models.AutoField( + verbose_name='ID', serialize=False, + auto_created=True, primary_key=True + ) + ), + ( + 'holder_id', models.PositiveIntegerField() + ), + ('object_id', models.PositiveIntegerField()), + ( + 'content_type', models.ForeignKey( + related_name='object_content_type', + to='contenttypes.ContentType' + ) + ), + ( + 'holder_type', models.ForeignKey( + related_name='access_holder', + to='contenttypes.ContentType' + ) + ), + ( + 'permission', models.ForeignKey( + verbose_name='Permission', + to='permissions.StoredPermission' + ) + ), + ], + options={ + 'verbose_name': 'Access entry', + 'verbose_name_plural': 'Access entries', + }, + bases=(models.Model,), + ), + migrations.CreateModel( + name='CreatorSingleton', + fields=[ + ( + 'id', models.AutoField( + verbose_name='ID', serialize=False, + auto_created=True, primary_key=True + ) + ), + ], + options={ + 'verbose_name': 'Creator', + 'verbose_name_plural': 'Creator', + }, + bases=(models.Model,), + ), + migrations.CreateModel( + name='DefaultAccessEntry', + fields=[ + ( + 'id', models.AutoField( + verbose_name='ID', serialize=False, + auto_created=True, primary_key=True + ) + ), + ('holder_id', models.PositiveIntegerField()), + ( + 'content_type', models.ForeignKey( + related_name='default_access_entry_class', + to='contenttypes.ContentType' + ) + ), + ( + 'holder_type', models.ForeignKey( + related_name='default_access_entry_holder', + to='contenttypes.ContentType' + ) + ), + ( + 'permission', models.ForeignKey( + verbose_name='Permission', + to='permissions.StoredPermission' + ) + ), + ], + options={ + 'verbose_name': 'Default access entry', + 'verbose_name_plural': 'Default access entries', + }, + bases=(models.Model,), + ), + ] diff --git a/mayan/apps/acls/migrations/0002_auto_20150703_0513.py b/mayan/apps/acls/migrations/0002_auto_20150703_0513.py new file mode 100644 index 0000000000..6ff7c6def5 --- /dev/null +++ b/mayan/apps/acls/migrations/0002_auto_20150703_0513.py @@ -0,0 +1,88 @@ +# -*- coding: utf-8 -*- +from __future__ import unicode_literals + +from django.db import models, migrations + + +class Migration(migrations.Migration): + + dependencies = [ + ('contenttypes', '0001_initial'), + ('permissions', '0002_auto_20150628_0533'), + ('acls', '0001_initial'), + ] + + operations = [ + migrations.CreateModel( + name='AccessControlList', + fields=[ + ( + 'id', models.AutoField( + verbose_name='ID', serialize=False, auto_created=True, + primary_key=True + ) + ), + ('object_id', models.PositiveIntegerField()), + ( + 'content_type', models.ForeignKey( + related_name='object_content_type', + to='contenttypes.ContentType' + ) + ), + ( + 'permissions', models.ManyToManyField( + related_name='acls', verbose_name='Permissions', + to='permissions.StoredPermission', blank=True + ) + ), + ( + 'role', models.ForeignKey( + related_name='acls', verbose_name='Role', + to='permissions.Role' + ) + ), + ], + options={ + 'verbose_name': 'Access entry', + 'verbose_name_plural': 'Access entries', + }, + bases=(models.Model,), + ), + migrations.RemoveField( + model_name='accessentry', + name='content_type', + ), + migrations.RemoveField( + model_name='accessentry', + name='holder_type', + ), + migrations.RemoveField( + model_name='accessentry', + name='permission', + ), + migrations.DeleteModel( + name='AccessEntry', + ), + migrations.DeleteModel( + name='CreatorSingleton', + ), + migrations.RemoveField( + model_name='defaultaccessentry', + name='content_type', + ), + migrations.RemoveField( + model_name='defaultaccessentry', + name='holder_type', + ), + migrations.RemoveField( + model_name='defaultaccessentry', + name='permission', + ), + migrations.DeleteModel( + name='DefaultAccessEntry', + ), + migrations.AlterUniqueTogether( + name='accesscontrollist', + unique_together=set([('content_type', 'object_id', 'role')]), + ), + ] diff --git a/mayan/apps/acls/south_migrations/__init__.py b/mayan/apps/acls/migrations/__init__.py similarity index 100% rename from mayan/apps/acls/south_migrations/__init__.py rename to mayan/apps/acls/migrations/__init__.py diff --git a/mayan/apps/acls/models.py b/mayan/apps/acls/models.py index 34e63dbb34..daea547249 100644 --- a/mayan/apps/acls/models.py +++ b/mayan/apps/acls/models.py @@ -5,35 +5,21 @@ import logging from django.contrib.contenttypes import generic from django.contrib.contenttypes.models import ContentType from django.db import models -from django.utils.translation import ugettext_lazy as _, ugettext +from django.utils.encoding import python_2_unicode_compatible +from django.utils.translation import ugettext_lazy as _ -from solo.models import SingletonModel +from permissions.models import Role, StoredPermission -from permissions.models import StoredPermission - -from .api import get_classes -from .classes import AccessObjectClass -from .managers import AccessEntryManager, DefaultAccessEntryManager +from .managers import AccessControlListManager logger = logging.getLogger(__name__) -class AccessEntry(models.Model): +@python_2_unicode_compatible +class AccessControlList(models.Model): """ Model that hold the permission, object, actor relationship """ - permission = models.ForeignKey(StoredPermission, verbose_name=_('Permission')) - - holder_type = models.ForeignKey( - ContentType, - related_name='access_holder', - limit_choices_to={'model__in': ('user', 'group', 'role')} - ) - holder_id = models.PositiveIntegerField() - holder_object = generic.GenericForeignKey( - ct_field='holder_type', - fk_field='holder_id' - ) content_type = models.ForeignKey( ContentType, @@ -42,71 +28,33 @@ class AccessEntry(models.Model): object_id = models.PositiveIntegerField() content_object = generic.GenericForeignKey( ct_field='content_type', - fk_field='object_id' + fk_field='object_id', ) + # TODO: limit choices to the permissions valid for the content_object + permissions = models.ManyToManyField( + StoredPermission, blank=True, related_name='acls', + verbose_name=_('Permissions') + ) + role = models.ForeignKey(Role, related_name='acls', verbose_name=_('Role')) - objects = AccessEntryManager() + objects = AccessControlListManager() class Meta: + unique_together = ('content_type', 'object_id', 'role') verbose_name = _('Access entry') verbose_name_plural = _('Access entries') - def __unicode__(self): - return '%s: %s' % (self.content_type, self.content_object) + def __str__(self): + return '{} <=> {}'.format(self.content_object, self.role) + def get_inherited_permissions(self): + return AccessControlList.objects.get_inherited_permissions( + role=self.role, obj=self.content_object + ) -class DefaultAccessEntry(models.Model): - """ - Model that holds the permission, class, actor relationship, that will - be added upon the creation of an instance of said class - """ - @classmethod - def get_classes(cls): - return [AccessObjectClass.encapsulate(cls) for cls in get_classes()] + def get_permission_titles(self): + result = ', '.join( + [unicode(permission) for permission in self.permissions.all()] + ) - permission = models.ForeignKey(StoredPermission, verbose_name=_('Permission')) - - holder_type = models.ForeignKey( - ContentType, - limit_choices_to={'model__in': ('user', 'group', 'role')}, - related_name='default_access_entry_holder' - ) - holder_id = models.PositiveIntegerField() - holder_object = generic.GenericForeignKey( - ct_field='holder_type', - fk_field='holder_id' - ) - - content_type = models.ForeignKey( - ContentType, - related_name='default_access_entry_class' - ) - - objects = DefaultAccessEntryManager() - - class Meta: - verbose_name = _('Default access entry') - verbose_name_plural = _('Default access entries') - - def __unicode__(self): - return '%s: %s' % (self.content_type, self.content_object) - - -class CreatorSingletonManager(models.Manager): - def passthru_check(self, holder, creator=None): - if isinstance(holder, self.model): - # TODO: raise explicit error if is instance and creator=None - return creator - else: - return holder - - -class CreatorSingleton(SingletonModel): - objects = CreatorSingletonManager() - - def __unicode__(self): - return ugettext('Creator') - - class Meta: - verbose_name = _('Creator') - verbose_name_plural = _('Creator') + return result or _('None') diff --git a/mayan/apps/acls/permissions.py b/mayan/apps/acls/permissions.py index f0dc2116e3..da7a5ddce9 100644 --- a/mayan/apps/acls/permissions.py +++ b/mayan/apps/acls/permissions.py @@ -2,13 +2,13 @@ from __future__ import absolute_import, unicode_literals from django.utils.translation import ugettext_lazy as _ -from permissions.models import PermissionNamespace, Permission +from permissions import PermissionNamespace -acls_namespace = PermissionNamespace('acls', _('Access control lists')) -acls_setup_namespace = PermissionNamespace('acls_setup', _('Access control lists')) +namespace = PermissionNamespace('acls', _('Access control lists')) -ACLS_EDIT_ACL = Permission.objects.register(acls_namespace, 'acl_edit', _('Edit ACLs')) -ACLS_VIEW_ACL = Permission.objects.register(acls_namespace, 'acl_view', _('View ACLs')) - -ACLS_CLASS_EDIT_ACL = Permission.objects.register(acls_setup_namespace, 'acl_class_edit', _('Edit class default ACLs')) -ACLS_CLASS_VIEW_ACL = Permission.objects.register(acls_setup_namespace, 'acl_class_view', _('View class default ACLs')) +permission_acl_edit = namespace.add_permission( + name='acl_edit', label=_('Edit ACLs') +) +permission_acl_view = namespace.add_permission( + name='acl_view', label=_('View ACLs') +) diff --git a/mayan/apps/acls/south_migrations/0001_initial.py b/mayan/apps/acls/south_migrations/0001_initial.py deleted file mode 100644 index 00cb7651e9..0000000000 --- a/mayan/apps/acls/south_migrations/0001_initial.py +++ /dev/null @@ -1,88 +0,0 @@ -# -*- coding: utf-8 -*- -from south.db import db -from south.v2 import SchemaMigration - - -class Migration(SchemaMigration): - depends_on = ( - ('permissions', '0002_auto__add_storedpermission__add_unique_storedpermission_namespace_name'), - ) - - def forwards(self, orm): - # Adding model 'AccessEntry' - db.create_table('acls_accessentry', ( - ('id', self.gf('django.db.models.fields.AutoField')(primary_key=True)), - ('permission', self.gf('django.db.models.fields.related.ForeignKey')(to=orm['permissions.StoredPermission'])), - ('holder_type', self.gf('django.db.models.fields.related.ForeignKey')(related_name='access_holder', to=orm['contenttypes.ContentType'])), - ('holder_id', self.gf('django.db.models.fields.PositiveIntegerField')()), - ('content_type', self.gf('django.db.models.fields.related.ForeignKey')(related_name='object_content_type', to=orm['contenttypes.ContentType'])), - ('object_id', self.gf('django.db.models.fields.PositiveIntegerField')()), - )) - db.send_create_signal(u'acls', ['AccessEntry']) - - # Adding model 'DefaultAccessEntry' - db.create_table('acls_defaultaccessentry', ( - ('id', self.gf('django.db.models.fields.AutoField')(primary_key=True)), - ('permission', self.gf('django.db.models.fields.related.ForeignKey')(to=orm['permissions.StoredPermission'])), - ('holder_type', self.gf('django.db.models.fields.related.ForeignKey')(related_name='default_access_entry_holder', to=orm['contenttypes.ContentType'])), - ('holder_id', self.gf('django.db.models.fields.PositiveIntegerField')()), - ('content_type', self.gf('django.db.models.fields.related.ForeignKey')(related_name='default_access_entry_class', to=orm['contenttypes.ContentType'])), - )) - db.send_create_signal(u'acls', ['DefaultAccessEntry']) - - # Adding model 'CreatorSingleton' - db.create_table('acls_creatorsingleton', ( - ('id', self.gf('django.db.models.fields.AutoField')(primary_key=True)), - ('lock_id', self.gf('django.db.models.fields.CharField')(default='1', unique=True, max_length=1)), - )) - db.send_create_signal('acls', ['CreatorSingleton']) - - def backwards(self, orm): - # Deleting model 'AccessEntry' - db.delete_table('acls_accessentry') - - # Deleting model 'DefaultAccessEntry' - db.delete_table('acls_defaultaccessentry') - - # Deleting model 'CreatorSingleton' - db.delete_table('acls_creatorsingleton') - - models = { - 'acls.accessentry': { - 'Meta': {'object_name': 'AccessEntry'}, - 'content_type': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'object_content_type'", 'to': u"orm['contenttypes.ContentType']"}), - 'holder_id': ('django.db.models.fields.PositiveIntegerField', [], {}), - 'holder_type': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'access_holder'", 'to': u"orm['contenttypes.ContentType']"}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'object_id': ('django.db.models.fields.PositiveIntegerField', [], {}), - 'permission': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['permissions.StoredPermission']"}) - }, - 'acls.creatorsingleton': { - 'Meta': {'object_name': 'CreatorSingleton'}, - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'lock_id': ('django.db.models.fields.CharField', [], {'default': "'1'", 'unique': 'True', 'max_length': '1'}) - }, - 'acls.defaultaccessentry': { - 'Meta': {'object_name': 'DefaultAccessEntry'}, - 'content_type': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'default_access_entry_class'", 'to': u"orm['contenttypes.ContentType']"}), - 'holder_id': ('django.db.models.fields.PositiveIntegerField', [], {}), - 'holder_type': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'default_access_entry_holder'", 'to': u"orm['contenttypes.ContentType']"}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'permission': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['permissions.StoredPermission']"}) - }, - 'contenttypes.contenttype': { - 'Meta': {'ordering': "('name',)", 'unique_together': "(('app_label', 'model'),)", 'object_name': 'ContentType', 'db_table': "'django_content_type'"}, - 'app_label': ('django.db.models.fields.CharField', [], {'max_length': '100'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'model': ('django.db.models.fields.CharField', [], {'max_length': '100'}), - 'name': ('django.db.models.fields.CharField', [], {'max_length': '100'}) - }, - 'permissions.storedpermission': { - 'Meta': {'ordering': "('namespace',)", 'unique_together': "(('namespace', 'name'),)", 'object_name': 'StoredPermission'}, - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'name': ('django.db.models.fields.CharField', [], {'max_length': '64'}), - 'namespace': ('django.db.models.fields.CharField', [], {'max_length': '64'}) - } - } - - complete_apps = ['acls'] diff --git a/mayan/apps/acls/south_migrations/0002_auto__del_field_creatorsingleton_lock_id.py b/mayan/apps/acls/south_migrations/0002_auto__del_field_creatorsingleton_lock_id.py deleted file mode 100644 index 2027ad68d4..0000000000 --- a/mayan/apps/acls/south_migrations/0002_auto__del_field_creatorsingleton_lock_id.py +++ /dev/null @@ -1,55 +0,0 @@ -# -*- coding: utf-8 -*- -from south.db import db -from south.v2 import SchemaMigration - - -class Migration(SchemaMigration): - - def forwards(self, orm): - # Deleting field 'CreatorSingleton.lock_id' - db.delete_column('acls_creatorsingleton', 'lock_id') - - def backwards(self, orm): - # Adding field 'CreatorSingleton.lock_id' - db.add_column('acls_creatorsingleton', 'lock_id', - self.gf('django.db.models.fields.CharField')(default='1', max_length=1, unique=True), - keep_default=False) - - models = { - 'acls.accessentry': { - 'Meta': {'object_name': 'AccessEntry'}, - 'content_type': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'object_content_type'", 'to': u"orm['contenttypes.ContentType']"}), - 'holder_id': ('django.db.models.fields.PositiveIntegerField', [], {}), - 'holder_type': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'access_holder'", 'to': u"orm['contenttypes.ContentType']"}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'object_id': ('django.db.models.fields.PositiveIntegerField', [], {}), - 'permission': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['permissions.StoredPermission']"}) - }, - 'acls.creatorsingleton': { - 'Meta': {'object_name': 'CreatorSingleton'}, - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}) - }, - 'acls.defaultaccessentry': { - 'Meta': {'object_name': 'DefaultAccessEntry'}, - 'content_type': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'default_access_entry_class'", 'to': u"orm['contenttypes.ContentType']"}), - 'holder_id': ('django.db.models.fields.PositiveIntegerField', [], {}), - 'holder_type': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'default_access_entry_holder'", 'to': u"orm['contenttypes.ContentType']"}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'permission': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['permissions.StoredPermission']"}) - }, - 'contenttypes.contenttype': { - 'Meta': {'ordering': "('name',)", 'unique_together': "(('app_label', 'model'),)", 'object_name': 'ContentType', 'db_table': "'django_content_type'"}, - 'app_label': ('django.db.models.fields.CharField', [], {'max_length': '100'}), - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'model': ('django.db.models.fields.CharField', [], {'max_length': '100'}), - 'name': ('django.db.models.fields.CharField', [], {'max_length': '100'}) - }, - 'permissions.storedpermission': { - 'Meta': {'ordering': "('namespace',)", 'unique_together': "(('namespace', 'name'),)", 'object_name': 'StoredPermission'}, - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'name': ('django.db.models.fields.CharField', [], {'max_length': '64'}), - 'namespace': ('django.db.models.fields.CharField', [], {'max_length': '64'}) - } - } - - complete_apps = ['acls'] diff --git a/mayan/apps/acls/templatetags/acl_tags.py b/mayan/apps/acls/templatetags/acl_tags.py deleted file mode 100644 index f8f8471912..0000000000 --- a/mayan/apps/acls/templatetags/acl_tags.py +++ /dev/null @@ -1,73 +0,0 @@ -from __future__ import unicode_literals - -import logging - -from django.core.exceptions import PermissionDenied -from django.template import ( - Library, Node, TemplateSyntaxError, Variable, VariableDoesNotExist -) - -from acls.models import AccessEntry - -logger = logging.getLogger(__name__) -register = Library() - - -class CheckAccessNode(Node): - def __init__(self, permission_list=None, requester=None, obj=None, *args, **kwargs): - self.requester = requester - self.permission_list = permission_list - self.obj = obj - - def render(self, context): - permission_list = Variable(self.permission_list).resolve(context) - logger.debug('permission_list: %s', ','.join([unicode(p) for p in permission_list])) - - try: - # Check access_object, useful for document_page views - obj = Variable('access_object').resolve(context) - logger.debug('access_object: %s', obj) - except VariableDoesNotExist: - try: - obj = Variable(self.obj).resolve(context) - logger.debug('obj: %s', obj) - except VariableDoesNotExist: - context['access'] = False - logger.debug('no obj, access False') - return '' - - if not permission_list: - # There is no permissions list to check against which means - # this link is available for all - context['access'] = True - return '' - - requester = Variable(self.requester).resolve(context) - logger.debug('requester: %s', requester) - - if obj: - try: - AccessEntry.objects.check_accesses(permission_list, requester, obj) - except PermissionDenied: - context['access'] = False - logger.debug('access: False') - return '' - else: - context['access'] = True - logger.debug('access: True') - return '' - else: - context['access'] = False - logger.debug('No object, access: False') - return '' - - -@register.tag -def check_access(parser, token): - try: - # Splitting by None == splitting by spaces. - tag_name, args = token.contents.split(None, 1) - except ValueError: - raise TemplateSyntaxError('%r tag requires arguments' % token.contents.split()[0]) - - return CheckAccessNode(*args.split()) diff --git a/mayan/apps/acls/templatetags/__init__.py b/mayan/apps/acls/tests/__init__.py similarity index 100% rename from mayan/apps/acls/templatetags/__init__.py rename to mayan/apps/acls/tests/__init__.py diff --git a/mayan/apps/acls/tests/test_models.py b/mayan/apps/acls/tests/test_models.py new file mode 100644 index 0000000000..0a9e399ec1 --- /dev/null +++ b/mayan/apps/acls/tests/test_models.py @@ -0,0 +1,175 @@ +from __future__ import absolute_import, unicode_literals + +from django.contrib.auth import get_user_model +from django.contrib.auth.models import Group +from django.core.exceptions import PermissionDenied +from django.core.files import File +from django.test import TestCase, override_settings + +from documents.models import Document, DocumentType +from documents.permissions import permission_document_view +from documents.tests import TEST_SMALL_DOCUMENT_PATH, TEST_DOCUMENT_TYPE +from permissions.classes import Permission +from permissions.models import Role +from permissions.tests.literals import TEST_ROLE_LABEL +from user_management.tests.literals import TEST_USER_USERNAME, TEST_GROUP + +from ..models import AccessControlList + +TEST_DOCUMENT_TYPE_2 = 'test document type 2' + + +@override_settings(OCR_AUTO_OCR=False) +class PermissionTestCase(TestCase): + def setUp(self): + self.document_type_1 = DocumentType.objects.create( + label=TEST_DOCUMENT_TYPE + ) + + self.document_type_2 = DocumentType.objects.create( + label=TEST_DOCUMENT_TYPE_2 + ) + + with open(TEST_SMALL_DOCUMENT_PATH) as file_object: + self.document_1 = self.document_type_1.new_document( + file_object=File(file_object) + ) + + with open(TEST_SMALL_DOCUMENT_PATH) as file_object: + self.document_2 = self.document_type_1.new_document( + file_object=File(file_object) + ) + + with open(TEST_SMALL_DOCUMENT_PATH) as file_object: + self.document_3 = self.document_type_2.new_document( + file_object=File(file_object) + ) + + self.user = get_user_model().objects.create( + username=TEST_USER_USERNAME + ) + self.group = Group.objects.create(name=TEST_GROUP) + self.role = Role.objects.create(label=TEST_ROLE_LABEL) + + self.group.user_set.add(self.user) + self.role.groups.add(self.group) + + Permission.invalidate_cache() + + def tearDown(self): + for document_type in DocumentType.objects.all(): + document_type.delete() + + def test_check_access_without_permissions(self): + with self.assertRaises(PermissionDenied): + AccessControlList.objects.check_access( + permissions=(permission_document_view,), + user=self.user, obj=self.document_1 + ) + + def test_filtering_without_permissions(self): + self.assertQuerysetEqual( + AccessControlList.objects.filter_by_access( + permission=permission_document_view, user=self.user, + queryset=Document.objects.all() + ), [] + ) + + def test_check_access_with_acl(self): + acl = AccessControlList.objects.create( + content_object=self.document_1, role=self.role + ) + acl.permissions.add(permission_document_view.stored_permission) + + try: + AccessControlList.objects.check_access( + permissions=(permission_document_view,), user=self.user, + obj=self.document_1 + ) + except PermissionDenied: + self.fail('PermissionDenied exception was not expected.') + + def test_filtering_with_permissions(self): + self.role.permissions.add(permission_document_view.stored_permission) + + acl = AccessControlList.objects.create( + content_object=self.document_1, role=self.role + ) + acl.permissions.add(permission_document_view.stored_permission) + + self.assertQuerysetEqual( + AccessControlList.objects.filter_by_access( + permission=permission_document_view, user=self.user, + queryset=Document.objects.all() + ), (repr(self.document_1),) + ) + + def test_check_access_with_inherited_acl(self): + acl = AccessControlList.objects.create( + content_object=self.document_type_1, role=self.role + ) + acl.permissions.add(permission_document_view.stored_permission) + + try: + AccessControlList.objects.check_access( + permissions=(permission_document_view,), user=self.user, + obj=self.document_1 + ) + except PermissionDenied: + self.fail('PermissionDenied exception was not expected.') + + def test_check_access_with_inherited_acl_and_local_acl(self): + acl = AccessControlList.objects.create( + content_object=self.document_type_1, role=self.role + ) + acl.permissions.add(permission_document_view.stored_permission) + + acl = AccessControlList.objects.create( + content_object=self.document_3, role=self.role + ) + acl.permissions.add(permission_document_view.stored_permission) + + try: + AccessControlList.objects.check_access( + permissions=(permission_document_view,), user=self.user, + obj=self.document_3 + ) + except PermissionDenied: + self.fail('PermissionDenied exception was not expected.') + + def test_filtering_with_inherited_permissions(self): + self.role.permissions.add(permission_document_view.stored_permission) + + acl = AccessControlList.objects.create( + content_object=self.document_type_1, role=self.role + ) + acl.permissions.add(permission_document_view.stored_permission) + + result = AccessControlList.objects.filter_by_access( + permission=permission_document_view, user=self.user, + queryset=Document.objects.all() + ) + self.assertTrue(self.document_1 in result) + self.assertTrue(self.document_2 in result) + self.assertTrue(self.document_3 not in result) + + def test_filtering_with_inherited_permissions_and_local_acl(self): + self.role.permissions.add(permission_document_view.stored_permission) + + acl = AccessControlList.objects.create( + content_object=self.document_type_1, role=self.role + ) + acl.permissions.add(permission_document_view.stored_permission) + + acl = AccessControlList.objects.create( + content_object=self.document_3, role=self.role + ) + acl.permissions.add(permission_document_view.stored_permission) + + result = AccessControlList.objects.filter_by_access( + permission=permission_document_view, user=self.user, + queryset=Document.objects.all() + ) + self.assertTrue(self.document_1 in result) + self.assertTrue(self.document_2 in result) + self.assertTrue(self.document_3 in result) diff --git a/mayan/apps/acls/urls.py b/mayan/apps/acls/urls.py index ba0652ae13..3f587169ac 100644 --- a/mayan/apps/acls/urls.py +++ b/mayan/apps/acls/urls.py @@ -2,21 +2,23 @@ from __future__ import unicode_literals from django.conf.urls import patterns, url +from .views import ( + ACLCreateView, ACLDeleteView, ACLListView, ACLPermissionsView +) + urlpatterns = patterns( 'acls.views', - url(r'^new_holder_for/(?P[-\w]+)/(?P[-\w]+)/(?P\d+)/$', 'acl_new_holder_for', (), 'acl_new_holder_for'), - url(r'^list_for/(?P[-\w]+)/(?P[-\w]+)/(?P\d+)/$', 'acl_list', (), 'acl_list'), - url(r'^details/(?P[.\w]+)/holder/(?P[.\w]+)/$', 'acl_detail', (), 'acl_detail'), - url(r'^holder/new/(?P[.\w]+)/$', 'acl_holder_new', (), 'acl_holder_new'), - - url(r'^multiple/grant/$', 'acl_grant', (), 'acl_multiple_grant'), - url(r'^multiple/revoke/$', 'acl_revoke', (), 'acl_multiple_revoke'), - - url(r'^class/$', 'acl_setup_valid_classes', (), 'acl_setup_valid_classes'), - url(r'^class/details/(?P[.\w]+)/holder/(?P[.\w]+)/$', 'acl_class_acl_detail', (), 'acl_class_acl_detail'), - url(r'^class/list_for/(?P[.\w]+)/$', 'acl_class_acl_list', (), 'acl_class_acl_list'), - url(r'^class/holder/new/(?P[.\w]+)/$', 'acl_class_new_holder_for', (), 'acl_class_new_holder_for'), - - url(r'^class/multiple/grant/$', 'acl_class_multiple_grant', (), 'acl_class_multiple_grant'), - url(r'^class/multiple/revoke/$', 'acl_class_multiple_revoke', (), 'acl_class_multiple_revoke'), + url( + r'^(?P[-\w]+)/(?P[-\w]+)/(?P\d+)/new/$', + ACLCreateView.as_view(), name='acl_new' + ), + url( + r'^(?P[-\w]+)/(?P[-\w]+)/(?P\d+)/list/$', + ACLListView.as_view(), name='acl_list' + ), + url(r'^(?P\d+)/delete/$', ACLDeleteView.as_view(), name='acl_delete'), + url( + r'^(?P\d+)/permissions/$', ACLPermissionsView.as_view(), + name='acl_permissions' + ), ) diff --git a/mayan/apps/acls/utils.py b/mayan/apps/acls/utils.py deleted file mode 100644 index 2e66429e30..0000000000 --- a/mayan/apps/acls/utils.py +++ /dev/null @@ -1,34 +0,0 @@ -from __future__ import unicode_literals - -import logging - -from django.contrib.contenttypes.models import ContentType - -from common.models import AnonymousUserSingleton - -from .classes import get_source_object -from .models import AccessEntry, CreatorSingleton, DefaultAccessEntry - -logger = logging.getLogger(__name__) - - -def apply_default_acls(obj, actor=None): - logger.debug('actor, init: %s', actor) - obj = get_source_object(obj) - - if actor: - actor = AnonymousUserSingleton.objects.passthru_check(actor) - - content_type = ContentType.objects.get_for_model(obj) - - for default_acl in DefaultAccessEntry.objects.filter(content_type=content_type): - holder = CreatorSingleton.objects.passthru_check(default_acl.holder_object, actor) - - if holder: - # When the creator is admin - access_entry = AccessEntry( - permission=default_acl.permission, - holder_object=holder, - content_object=obj, - ) - access_entry.save() diff --git a/mayan/apps/acls/views.py b/mayan/apps/acls/views.py index 66ca796d86..ec9953f0e9 100644 --- a/mayan/apps/acls/views.py +++ b/mayan/apps/acls/views.py @@ -1,636 +1,240 @@ from __future__ import absolute_import, unicode_literals +import itertools import logging -from json import loads -from django.contrib import messages from django.contrib.contenttypes.models import ContentType -from django.core.exceptions import ObjectDoesNotExist, PermissionDenied +from django.core.exceptions import PermissionDenied from django.core.urlresolvers import reverse -from django.http import Http404, HttpResponseRedirect -from django.shortcuts import get_object_or_404, render_to_response -from django.template import RequestContext -from django.utils.http import urlencode +from django.http import Http404 +from django.shortcuts import get_object_or_404 from django.utils.translation import ugettext_lazy as _ -from common.utils import encapsulate -from common.widgets import two_state_template -from permissions.models import Permission +from common.views import ( + AssignRemoveView, SingleObjectCreateView, SingleObjectDeleteView, + SingleObjectListView +) +from permissions import Permission, PermissionNamespace +from permissions.models import StoredPermission -from .api import get_class_permissions_for -from .classes import ( - AccessHolder, AccessObject, AccessObjectClass, ClassAccessHolder -) -from .forms import ClassHolderSelectionForm, HolderSelectionForm -from .models import AccessEntry, DefaultAccessEntry -from .permissions import ( - ACLS_EDIT_ACL, ACLS_CLASS_EDIT_ACL, ACLS_CLASS_VIEW_ACL, ACLS_VIEW_ACL -) -from .widgets import object_w_content_type_icon +from .classes import ModelPermission +from .models import AccessControlList +from .permissions import permission_acl_edit, permission_acl_view logger = logging.getLogger(__name__) -def _permission_titles(permission_list): - return ', '.join([unicode(permission) for permission in permission_list]) +class ACLListView(SingleObjectListView): + def dispatch(self, request, *args, **kwargs): + self.content_type = get_object_or_404( + ContentType, app_label=self.kwargs['app_label'], + model=self.kwargs['model'] + ) - -def acl_list_for(request, obj, extra_context=None): - try: - Permission.objects.check_permissions(request.user, [ACLS_VIEW_ACL]) - except PermissionDenied: - AccessEntry.objects.check_access(ACLS_VIEW_ACL, request.user, obj) - - logger.debug('obj: %s', obj) - - context = { - 'object_list': AccessEntry.objects.get_holders_for(obj), - 'title': _('Access control lists for: %s' % obj), - 'extra_columns': [ - {'name': _('Holder'), 'attribute': encapsulate(lambda x: object_w_content_type_icon(x.source_object))}, - {'name': _('Permissions'), 'attribute': encapsulate(lambda x: _permission_titles(AccessEntry.objects.get_holder_permissions_for(obj, x.source_object, db_only=True)))}, - ], - 'hide_object': True, - 'access_object': AccessObject.encapsulate(obj), - 'object': obj, - 'navigation_object_list': [ - {'object': 'object'}, - {'object': 'access_object'} - ], - } - - if extra_context: - context.update(extra_context) - - return render_to_response('main/generic_list.html', context, - context_instance=RequestContext(request)) - - -def acl_list(request, app_label, model_name, object_id): - ct = get_object_or_404(ContentType, app_label=app_label, model=model_name) - obj = get_object_or_404(ct.get_object_for_this_type, pk=object_id) - return acl_list_for(request, obj) - - -def acl_detail(request, access_object_gid, holder_object_gid): - try: - holder = AccessHolder.get(gid=holder_object_gid) - access_object = AccessObject.get(gid=access_object_gid) - except ObjectDoesNotExist: - raise Http404 - - # return acl_detail_for(request, holder.source_object, access_object.source_object) - return acl_detail_for(request, holder, access_object) - - -def acl_detail_for(request, actor, obj): - try: - Permission.objects.check_permissions(request.user, [ACLS_VIEW_ACL]) - except PermissionDenied: - AccessEntry.objects.check_accesses([ACLS_VIEW_ACL], actor, obj) - - permission_list = get_class_permissions_for(obj.source_object) - # TODO : get all globally assigned permission, new function get_permissions_for_holder (roles aware) - subtemplates_list = [ - { - 'name': 'main/generic_list_subtemplate.html', - 'context': { - 'title': _('Permissions available to: %(actor)s for %(obj)s' % { - 'actor': actor, - 'obj': obj - } - ), - 'object_list': permission_list, - 'extra_columns': [ - {'name': _('Namespace'), 'attribute': 'namespace'}, - {'name': _('Label'), 'attribute': 'label'}, - { - 'name': _('Has permission'), - 'attribute': encapsulate(lambda permission: two_state_template(AccessEntry.objects.has_access(permission, actor, obj, db_only=True))) - }, - ], - 'hide_object': True, - } - }, - ] - - context = { - 'object': obj.source_object, - 'subtemplates_list': subtemplates_list, - 'multi_select_item_properties': { - 'permission_pk': lambda x: x.pk, - 'holder_gid': lambda x: actor.gid, - 'object_gid': lambda x: obj.gid, - }, - 'access_object': obj, - 'navigation_object_list': [ - {'object': 'object'}, - {'object': 'access_object'} - ], - } - - return render_to_response('main/generic_detail.html', context, - context_instance=RequestContext(request)) - - -def acl_grant(request): - items_property_list = loads(request.GET.get('items_property_list', [])) - - next = request.POST.get('next', request.GET.get('next', request.META.get('HTTP_REFERER', reverse('main:home')))) - previous = request.POST.get('previous', request.GET.get('previous', request.META.get('HTTP_REFERER', reverse('main:home')))) - - items = {} - title_suffix = [] - navigation_object = None - navigation_object_count = 0 - - for item_properties in items_property_list: try: - permission = Permission.objects.get({'pk': item_properties['permission_pk']}) - except Permission.DoesNotExist: + self.content_object = self.content_type.get_object_for_this_type( + pk=self.kwargs['object_id'] + ) + except self.content_type.model_class().DoesNotExist: raise Http404 try: - requester = AccessHolder.get(gid=item_properties['holder_gid']) - access_object = AccessObject.get(gid=item_properties['object_gid']) - except ObjectDoesNotExist: - raise Http404 - - try: - Permission.objects.check_permissions(request.user, [ACLS_EDIT_ACL]) + Permission.check_permissions( + request.user, permissions=(permission_acl_view,) + ) except PermissionDenied: - try: - AccessEntry.objects.check_access(ACLS_EDIT_ACL, request.user, access_object) - except PermissionDenied: - raise - else: - items.setdefault(requester, {}) - items[requester].setdefault(access_object, []) - items[requester][access_object].append(permission) - navigation_object = access_object - navigation_object_count += 1 - else: - items.setdefault(requester, {}) - items[requester].setdefault(access_object, []) - items[requester][access_object].append(permission) - navigation_object = access_object - navigation_object_count += 1 + AccessControlList.objects.check_access( + permission_acl_view, request.user, self.content_object + ) - for requester, obj_ps in items.items(): - for obj, ps in obj_ps.items(): - title_suffix.append(_(', ').join(['"%s"' % unicode(p) for p in ps])) - title_suffix.append(_(' for %s') % obj) - title_suffix.append(_(' to %s') % requester) + return super(ACLListView, self).dispatch(request, *args, **kwargs) - if len(items_property_list) == 1: - title_prefix = _('Are you sure you wish to grant the permission %(title_suffix)s?') - else: - title_prefix = _('Are you sure you wish to grant the permissions %(title_suffix)s?') + def get_queryset(self): + return AccessControlList.objects.filter( + content_type=self.content_type, object_id=self.content_object.pk + ) - if request.method == 'POST': - for requester, object_permissions in items.items(): - for obj, permissions in object_permissions.items(): - for permission in permissions: - if AccessEntry.objects.grant(permission, requester.source_object, obj.source_object): - messages.success(request, _('Permission "%(permission)s" granted to %(actor)s for %(object)s.') % { - 'permission': permission, - 'actor': requester, - 'object': obj - }) - else: - messages.warning(request, _('%(actor)s, already had the permission "%(permission)s" granted for %(object)s.') % { - 'actor': requester, - 'permission': permission, - 'object': obj, - }) - - return HttpResponseRedirect(next) - - context = { - 'previous': previous, - 'next': next, - } - - context['title'] = title_prefix % { - 'title_suffix': ''.join(title_suffix), - } - - logger.debug('navigation_object_count: %d', navigation_object_count) - logger.debug('navigation_object: %s', navigation_object) - if navigation_object_count == 1: - context['object'] = navigation_object.source_object - - return render_to_response('main/generic_confirm.html', context, - context_instance=RequestContext(request)) + def get_extra_context(self): + return { + 'hide_object': True, + 'object': self.content_object, + 'title': _('Access control lists for: %s' % self.content_object), + } -def acl_revoke(request): - items_property_list = loads(request.GET.get('items_property_list', [])) +class ACLCreateView(SingleObjectCreateView): + fields = ('role',) + model = AccessControlList - next = request.POST.get('next', request.GET.get('next', request.META.get('HTTP_REFERER', reverse('main:home')))) - previous = request.POST.get('previous', request.GET.get('previous', request.META.get('HTTP_REFERER', reverse('main:home')))) + def dispatch(self, request, *args, **kwargs): + content_type = get_object_or_404( + ContentType, app_label=self.kwargs['app_label'], + model=self.kwargs['model'] + ) - items = {} - title_suffix = [] - navigation_object = None - navigation_object_count = 0 - - for item_properties in items_property_list: try: - permission = Permission.objects.get({'pk': item_properties['permission_pk']}) - except Permission.DoesNotExist: + self.content_object = content_type.get_object_for_this_type( + pk=self.kwargs['object_id'] + ) + except content_type.model_class().DoesNotExist: raise Http404 try: - requester = AccessHolder.get(gid=item_properties['holder_gid']) - access_object = AccessObject.get(gid=item_properties['object_gid']) - except ObjectDoesNotExist: - raise Http404 - - try: - Permission.objects.check_permissions(request.user, [ACLS_EDIT_ACL]) + Permission.check_permissions( + request.user, permissions=(permission_acl_edit,) + ) except PermissionDenied: - try: - AccessEntry.objects.check_access(ACLS_EDIT_ACL, request.user, access_object) - except PermissionDenied: - raise - else: - items.setdefault(requester, {}) - items[requester].setdefault(access_object, []) - items[requester][access_object].append(permission) - navigation_object = access_object - navigation_object_count += 1 - else: - items.setdefault(requester, {}) - items[requester].setdefault(access_object, []) - items[requester][access_object].append(permission) - navigation_object = access_object - navigation_object_count += 1 + AccessControlList.objects.check_access( + permission_acl_edit, request.user, self.content_object + ) - for requester, obj_ps in items.items(): - for obj, ps in obj_ps.items(): - title_suffix.append(_(', ').join(['"%s"' % unicode(p) for p in ps])) - title_suffix.append(_(' for %s') % obj) - title_suffix.append(_(' from %s') % requester) + return super(ACLCreateView, self).dispatch(request, *args, **kwargs) - if len(items_property_list) == 1: - title_prefix = _('Are you sure you wish to revoke the permission %(title_suffix)s?') - else: - title_prefix = _('Are you sure you wish to revoke the permissions %(title_suffix)s?') + def form_valid(self, form): + self.instance = form.save(commit=False) + self.instance.content_object = self.content_object + self.instance.save() - if request.method == 'POST': - for requester, object_permissions in items.items(): - for obj, permissions in object_permissions.items(): - for permission in permissions: - if AccessEntry.objects.revoke(permission, requester.source_object, obj.source_object): - messages.success(request, _('Permission "%(permission)s" revoked of %(actor)s for %(object)s.') % { - 'permission': permission, - 'actor': requester, - 'object': obj - }) - else: - messages.warning(request, _('%(actor)s, didn\'t had the permission "%(permission)s" for %(object)s.') % { - 'actor': requester, - 'permission': permission, - 'object': obj, - }) + return super(ACLCreateView, self).form_valid(form) - return HttpResponseRedirect(next) + def get_success_url(self): + return reverse('acls:acl_permissions', args=(self.instance.pk,)) - context = { - 'previous': previous, - 'next': next, - } - - context['title'] = title_prefix % { - 'title_suffix': ''.join(title_suffix), - } - - logger.debug('navigation_object_count: %d', navigation_object_count) - logger.debug('navigation_object: %s', navigation_object) - if navigation_object_count == 1: - context['object'] = navigation_object.source_object - - return render_to_response('main/generic_confirm.html', context, - context_instance=RequestContext(request)) + def get_extra_context(self): + return { + 'object': self.content_object, + 'title': _( + 'New access control lists for: %s' + ) % self.content_object + } -def acl_new_holder_for(request, obj, extra_context=None, navigation_object=None): - try: - Permission.objects.check_permissions(request.user, [ACLS_EDIT_ACL]) - except PermissionDenied: - AccessEntry.objects.check_access(ACLS_EDIT_ACL, request.user, obj) +class ACLDeleteView(SingleObjectDeleteView): + model = AccessControlList - if request.method == 'POST': - form = HolderSelectionForm(request.POST) - if form.is_valid(): - try: - access_object = AccessObject.encapsulate(obj) - access_holder = AccessHolder.get(form.cleaned_data['holder_gid']) + def dispatch(self, request, *args, **kwargs): + acl = get_object_or_404(AccessControlList, pk=self.kwargs['pk']) - query_string = {'navigation_object': navigation_object} + try: + Permission.check_permissions( + request.user, permissions=(permission_acl_edit,) + ) + except PermissionDenied: + AccessControlList.objects.check_access( + permission_acl_edit, request.user, acl.content_object + ) - return HttpResponseRedirect( - '%s?%s' % ( - reverse('acls:acl_detail', args=[access_object.gid, access_holder.gid]), - urlencode(query_string) - ) + return super(ACLDeleteView, self).dispatch(request, *args, **kwargs) + + def get_extra_context(self): + return { + 'object': self.get_object().content_object, + 'title': _('Delete ACL: %s') % self.get_object(), + } + + def get_post_action_redirect(self): + instance = self.get_object() + return reverse( + 'acls:acl_list', args=( + instance.content_type.app_label, + instance.content_type.model, instance.object_id + ) + ) + + +class ACLPermissionsView(AssignRemoveView): + grouped = True + left_list_title = _('Available permissions') + right_list_title = _('Granted permissions') + + @staticmethod + def generate_choices(entries): + results = [] + + for namespace, permissions in itertools.groupby(entries, lambda entry: entry.namespace): + permission_options = [ + (unicode(permission.pk), permission) for permission in permissions + ] + results.append( + (PermissionNamespace.get(namespace), permission_options) + ) + + return results + + def add(self, item): + permission = get_object_or_404(StoredPermission, pk=item) + self.get_object().permissions.add(permission) + + def dispatch(self, request, *args, **kwargs): + acl = get_object_or_404(AccessControlList, pk=self.kwargs['pk']) + + try: + Permission.check_permissions( + request.user, permissions=(permission_acl_edit,) + ) + except PermissionDenied: + AccessControlList.objects.check_access( + permission_acl_edit, request.user, acl.content_object + ) + + return super( + ACLPermissionsView, self + ).dispatch(request, *args, **kwargs) + + def get_right_list_help_text(self): + if self.get_object().get_inherited_permissions(): + return _( + 'Disabled permissions are inherited from a parent object.' + ) + + return None + + def get_object(self): + return get_object_or_404(AccessControlList, pk=self.kwargs['pk']) + + def get_available_list(self): + return ModelPermission.get_for_instance( + instance=self.get_object().content_object + ).exclude(id__in=self.get_granted_list().values_list('pk', flat=True)) + + def get_disabled_choices(self): + """ + Get permissions from a parent's acls but remove the permissions we + already hold for this object + """ + return map( + str, set( + self.get_object().get_inherited_permissions().values_list( + 'pk', flat=True ) - except ObjectDoesNotExist: - raise Http404 - else: - form = HolderSelectionForm() + ).difference( + self.get_object().permissions.values_list('pk', flat=True) + ) + ) - context = { - 'form': form, - 'title': _('Add new holder for: %s') % obj, - 'submit_label': _('Select'), - 'submit_icon_famfam': 'tick', - 'object': obj, - 'access_object': AccessObject.encapsulate(obj), - 'navigation_object_list': [ - {'object': 'object'}, - {'object': 'access_object'}, - ], - } + def get_extra_context(self): + return { + 'object': self.get_object().content_object, + 'title': _('Role "%(role)s" permission\'s for "%(object)s"') % { + 'role': self.get_object().role, + 'object': self.get_object().content_object, + }, + } - if extra_context: - context.update(extra_context) + def get_granted_list(self): + """ + Merge or permissions we hold for this object and the permissions we + hold for this object's parent via another ACL + """ + merged_pks = self.get_object().permissions.values_list('pk', flat=True) | self.get_object().get_inherited_permissions().values_list('pk', flat=True) + return StoredPermission.objects.filter(pk__in=merged_pks) - return render_to_response('main/generic_form.html', context, - context_instance=RequestContext(request)) + def left_list(self): + return ACLPermissionsView.generate_choices(self.get_available_list()) + def right_list(self): + return ACLPermissionsView.generate_choices(self.get_granted_list()) -def acl_holder_new(request, access_object_gid): - try: - access_object = AccessObject.get(gid=access_object_gid) - except ObjectDoesNotExist: - raise Http404 - - return acl_new_holder_for(request, access_object.source_object) # , extra_context={'access_object': access_object}) - - -# Setup views -def acl_setup_valid_classes(request): - Permission.objects.check_permissions(request.user, [ACLS_CLASS_VIEW_ACL]) - - context = { - 'object_list': DefaultAccessEntry.get_classes(), - 'title': _('Classes'), - 'extra_columns': [ - {'name': _('Class'), 'attribute': encapsulate(lambda x: object_w_content_type_icon(x.source_object))}, - ], - 'hide_object': True, - } - - return render_to_response('main/generic_list.html', context, - context_instance=RequestContext(request)) - - -def acl_class_acl_list(request, access_object_class_gid): - logger.debug('access_object_class_gid: %s', access_object_class_gid) - - Permission.objects.check_permissions(request.user, [ACLS_CLASS_VIEW_ACL]) - - access_object_class = AccessObjectClass.get(gid=access_object_class_gid) - logger.debug('access_object_class: %s', access_object_class) - - context = { - 'object_list': DefaultAccessEntry.objects.get_holders_for(access_object_class.source_object), - 'title': _('Default access control lists for class: %s') % access_object_class, - 'extra_columns': [ - {'name': _('Holder'), 'attribute': encapsulate(lambda x: object_w_content_type_icon(x.source_object))}, - {'name': _('Permissions'), 'attribute': encapsulate(lambda x: _permission_titles(DefaultAccessEntry.objects.get_holder_permissions_for(access_object_class.source_object, x.source_object)))}, - ], - 'hide_object': True, - 'access_object_class': access_object_class, - 'object': access_object_class, - } - - return render_to_response('main/generic_list.html', context, - context_instance=RequestContext(request)) - - -def acl_class_acl_detail(request, access_object_class_gid, holder_object_gid): - Permission.objects.check_permissions(request.user, [ACLS_CLASS_VIEW_ACL]) - try: - actor = AccessHolder.get(gid=holder_object_gid) - access_object_class = AccessObjectClass.get(gid=access_object_class_gid) - except ObjectDoesNotExist: - raise Http404 - - permission_list = get_class_permissions_for(access_object_class.content_type.model_class()) - # TODO : get all globally assigned permission, new function get_permissions_for_holder (roles aware) - subtemplates_list = [ - { - 'name': 'main/generic_list_subtemplate.html', - 'context': { - 'title': _('Permissions available to: %(actor)s for class %(class)s' % { - 'actor': actor, - 'class': access_object_class - }), - 'object_list': permission_list, - 'extra_columns': [ - {'name': _('Namespace'), 'attribute': 'namespace'}, - {'name': _('Label'), 'attribute': 'label'}, - { - 'name': _('Has permission'), - 'attribute': encapsulate(lambda x: two_state_template(DefaultAccessEntry.objects.has_access(x, actor.source_object, access_object_class.source_object))) - }, - ], - 'hide_object': True, - } - }, - ] - - return render_to_response('main/generic_detail.html', { - 'object': access_object_class, - 'subtemplates_list': subtemplates_list, - 'multi_select_item_properties': { - 'permission_pk': lambda x: x.pk, - 'holder_gid': lambda x: actor.gid, - 'access_object_class_gid': lambda x: access_object_class.gid, - }, - }, context_instance=RequestContext(request)) - - -def acl_class_new_holder_for(request, access_object_class_gid): - Permission.objects.check_permissions(request.user, [ACLS_CLASS_EDIT_ACL]) - access_object_class = AccessObjectClass.get(gid=access_object_class_gid) - - if request.method == 'POST': - form = ClassHolderSelectionForm(request.POST) - if form.is_valid(): - try: - access_holder = ClassAccessHolder.get(form.cleaned_data['holder_gid']) - - return HttpResponseRedirect(reverse('acls:acl_class_acl_detail', args=[access_object_class.gid, access_holder.gid])) - except ObjectDoesNotExist: - raise Http404 - else: - form = ClassHolderSelectionForm(current_holders=DefaultAccessEntry.objects.get_holders_for(access_object_class)) - - context = { - 'form': form, - 'title': _('Add new holder for class: %s') % unicode(access_object_class), - 'object': access_object_class, - 'submit_label': _('Select'), - 'submit_icon_famfam': 'tick' - } - - return render_to_response('main/generic_form.html', context, - context_instance=RequestContext(request)) - - -def acl_class_multiple_grant(request): - Permission.objects.check_permissions(request.user, [ACLS_CLASS_EDIT_ACL]) - items_property_list = loads(request.GET.get('items_property_list', [])) - - next = request.POST.get('next', request.GET.get('next', request.META.get('HTTP_REFERER', reverse('main:home')))) - previous = request.POST.get('previous', request.GET.get('previous', request.META.get('HTTP_REFERER', reverse('main:home')))) - - items = {} - title_suffix = [] - navigation_object = None - navigation_object_count = 0 - - for item_properties in items_property_list: - try: - permission = Permission.objects.get({'pk': item_properties['permission_pk']}) - except Permission.DoesNotExist: - raise Http404 - try: - requester = AccessHolder.get(gid=item_properties['holder_gid']) - access_object_class = AccessObjectClass.get(gid=item_properties['access_object_class_gid']) - except ObjectDoesNotExist: - raise Http404 - - items.setdefault(requester, {}) - items[requester].setdefault(access_object_class, []) - items[requester][access_object_class].append(permission) - navigation_object = access_object_class - navigation_object_count += 1 - - for requester, obj_ps in items.items(): - for obj, ps in obj_ps.items(): - title_suffix.append(_(', ').join(['"%s"' % unicode(p) for p in ps])) - title_suffix.append(_(' for %s') % obj) - title_suffix.append(_(' to %s') % requester) - - if len(items_property_list) == 1: - title_prefix = _('Are you sure you wish to grant the permission %(title_suffix)s?') - else: - title_prefix = _('Are you sure you wish to grant the permissions %(title_suffix)s?') - - if request.method == 'POST': - for requester, object_permissions in items.items(): - for obj, permissions in object_permissions.items(): - for permission in permissions: - if DefaultAccessEntry.objects.grant(permission, requester.source_object, obj.source_object): - messages.success(request, _('Permission "%(permission)s" granted to %(actor)s for %(object)s.') % { - 'permission': permission, - 'actor': requester, - 'object': obj - }) - else: - messages.warning(request, _('%(actor)s, already had the permission "%(permission)s" granted for %(object)s.') % { - 'actor': requester, - 'permission': permission, - 'object': obj, - }) - - return HttpResponseRedirect(next) - - context = { - 'previous': previous, - 'next': next, - } - - context['title'] = title_prefix % { - 'title_suffix': ''.join(title_suffix), - } - - logger.debug('navigation_object_count: %d', navigation_object_count) - logger.debug('navigation_object: %s', navigation_object) - if navigation_object_count == 1: - context['object'] = navigation_object - - return render_to_response('main/generic_confirm.html', context, - context_instance=RequestContext(request)) - - -def acl_class_multiple_revoke(request): - Permission.objects.check_permissions(request.user, [ACLS_CLASS_EDIT_ACL]) - items_property_list = loads(request.GET.get('items_property_list', [])) - - next = request.POST.get('next', request.GET.get('next', request.META.get('HTTP_REFERER', reverse('main:home')))) - previous = request.POST.get('previous', request.GET.get('previous', request.META.get('HTTP_REFERER', reverse('main:home')))) - - items = {} - title_suffix = [] - navigation_object = None - navigation_object_count = 0 - - for item_properties in items_property_list: - try: - permission = Permission.objects.get({'pk': item_properties['permission_pk']}) - except Permission.DoesNotExist: - raise Http404 - try: - requester = AccessHolder.get(gid=item_properties['holder_gid']) - access_object_class = AccessObjectClass.get(gid=item_properties['access_object_class_gid']) - except ObjectDoesNotExist: - raise Http404 - - items.setdefault(requester, {}) - items[requester].setdefault(access_object_class, []) - items[requester][access_object_class].append(permission) - navigation_object = access_object_class - navigation_object_count += 1 - - for requester, obj_ps in items.items(): - for obj, ps in obj_ps.items(): - title_suffix.append(_(', ').join(['"%s"' % unicode(p) for p in ps])) - title_suffix.append(_(' for %s') % obj) - title_suffix.append(_(' from %s') % requester) - - if len(items_property_list) == 1: - title_prefix = _('Are you sure you wish to revoke the permission %(title_suffix)s?') - else: - title_prefix = _('Are you sure you wish to revoke the permissions %(title_suffix)s?') - - if request.method == 'POST': - for requester, object_permissions in items.items(): - for obj, permissions in object_permissions.items(): - for permission in permissions: - if DefaultAccessEntry.objects.revoke(permission, requester.source_object, obj.source_object): - messages.success(request, _('Permission "%(permission)s" revoked of %(actor)s for %(object)s.') % { - 'permission': permission, - 'actor': requester, - 'object': obj - }) - else: - messages.warning(request, _('%(actor)s, didn\'t had the permission "%(permission)s" for %(object)s.') % { - 'actor': requester, - 'permission': permission, - 'object': obj, - }) - - return HttpResponseRedirect(next) - - context = { - 'previous': previous, - 'next': next, - } - - context['title'] = title_prefix % { - 'title_suffix': ''.join(title_suffix), - } - - logger.debug('navigation_object_count: %d', navigation_object_count) - logger.debug('navigation_object: %s', navigation_object) - if navigation_object_count == 1: - context['object'] = navigation_object - - return render_to_response('main/generic_confirm.html', context, - context_instance=RequestContext(request)) + def remove(self, item): + permission = get_object_or_404(StoredPermission, pk=item) + self.get_object().permissions.remove(permission) diff --git a/mayan/apps/acls/widgets.py b/mayan/apps/acls/widgets.py deleted file mode 100644 index d6c866bca0..0000000000 --- a/mayan/apps/acls/widgets.py +++ /dev/null @@ -1,26 +0,0 @@ -from __future__ import unicode_literals - -from django.utils.safestring import mark_safe -from django.contrib.contenttypes.models import ContentType -from django.db.models.base import ModelBase - -from .literals import CONTENT_TYPE_ICON_MAP - - -def content_type_icon(content_type): - return mark_safe('' % CONTENT_TYPE_ICON_MAP.get('%s.%s' % (content_type.app_label, content_type.model), 'help')) - - -def object_w_content_type_icon(obj): - content_type = ContentType.objects.get_for_model(obj) - - ct_fullname = '%s.%s' % (content_type.app_label, content_type.name) - if isinstance(obj, ModelBase): - label = getattr(obj._meta, 'verbose_name_plural', unicode(content_type)) - else: - if ct_fullname == 'auth.user': - label = obj.get_full_name() - else: - label = unicode(obj) - - return mark_safe('%s%s' % (content_type_icon(content_type), label)) diff --git a/mayan/apps/appearance/__init__.py b/mayan/apps/appearance/__init__.py new file mode 100644 index 0000000000..627f641acf --- /dev/null +++ b/mayan/apps/appearance/__init__.py @@ -0,0 +1,3 @@ +from __future__ import unicode_literals + +default_app_config = 'appearance.apps.AppearanceApp' diff --git a/mayan/apps/appearance/apps.py b/mayan/apps/appearance/apps.py new file mode 100644 index 0000000000..8a6c0608a7 --- /dev/null +++ b/mayan/apps/appearance/apps.py @@ -0,0 +1,155 @@ +from __future__ import unicode_literals + +from django.utils.translation import ugettext_lazy as _ + +from common import MayanAppConfig +from common.classes import Package + + +class AppearanceApp(MayanAppConfig): + name = 'appearance' + verbose_name = _('Appearance') + + def ready(self): + super(AppearanceApp, self).ready() + + Package(label='Bootstrap', license_text=''' +The MIT License (MIT) + +Copyright (c) 2011-2015 Twitter, Inc + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. + ''') + + Package(label='Animate.css', license_text=''' +Animate.css is licensed under the MIT license. (http://opensource.org/licenses/MIT) + ''') + + Package(label='Bootswatch', license_text=''' +The MIT License (MIT) + +Copyright (c) 2013 Thomas Park + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. + ''') + + Package(label='fancyBox', license_text=''' +fancyBox licensed under Creative Commons Attribution-NonCommercial 3.0 license. + ''') + + Package(label='jquery_lazyload', license_text=''' +All code licensed under the MIT License. All images licensed under Creative Commons Attribution 3.0 Unported License. In other words you are basically free to do whatever you want. Just don't remove my name from the source. + ''') + + Package(label='ScrollView', license_text=''' +Copyright (c) 2009 Toshimitsu Takahashi +Released under the MIT license. + ''') + + Package(label='Font Awesome', license_text=''' +Font License + + Applies to all desktop and webfont files in the following directory: font-awesome/fonts/. + License: SIL OFL 1.1 + URL: http://scripts.sil.org/OFL + +Code License + + Applies to all CSS and LESS files in the following directories: font-awesome/css/, font-awesome/less/, and font-awesome/scss/. + License: MIT License + URL: http://opensource.org/licenses/mit-license.html + + ''') + + Package(label='jQuery', license_text=''' +Copyright jQuery Foundation and other contributors, https://jquery.org/ + +This software consists of voluntary contributions made by many +individuals. For exact contribution history, see the revision history +available at https://github.com/jquery/jquery + +The following license applies to all parts of this software except as +documented below: + +==== + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +"Software"), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE +LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION +OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION +WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +==== + +All files located in the node_modules and external directories are +externally maintained libraries used by this software which have their +own licenses; we recommend you read them, as their terms may differ from +the terms above. + ''') + + Package(label='django-widget-tweaks', license_text=''' +Copyright (c) 2011-2015 Mikhail Korobov + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. + ''') diff --git a/mayan/apps/project_setup/locale/ar/LC_MESSAGES/django.mo b/mayan/apps/appearance/locale/ar/LC_MESSAGES/django.mo similarity index 57% rename from mayan/apps/project_setup/locale/ar/LC_MESSAGES/django.mo rename to mayan/apps/appearance/locale/ar/LC_MESSAGES/django.mo index fd38c63bcb..f579864fdd 100644 Binary files a/mayan/apps/project_setup/locale/ar/LC_MESSAGES/django.mo and b/mayan/apps/appearance/locale/ar/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/appearance/locale/ar/LC_MESSAGES/django.po b/mayan/apps/appearance/locale/ar/LC_MESSAGES/django.po new file mode 100644 index 0000000000..665ac37151 --- /dev/null +++ b/mayan/apps/appearance/locale/ar/LC_MESSAGES/django.po @@ -0,0 +1,262 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# +# Translators: +msgid "" +msgstr "" +"Project-Id-Version: Mayan EDMS\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2015-09-24 16:24-0400\n" +"PO-Revision-Date: 2015-08-27 05:24+0000\n" +"Last-Translator: Roberto Rosario\n" +"Language-Team: Arabic (http://www.transifex.com/rosarior/mayan-edms/language/ar/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: ar\n" +"Plural-Forms: nplurals=6; plural=n==0 ? 0 : n==1 ? 1 : n==2 ? 2 : n%100>=3 && n%100<=10 ? 3 : n%100>=11 && n%100<=99 ? 4 : 5;\n" + +#: apps.py:12 +msgid "Appearance" +msgstr "" + +#: templates/403.html:5 templates/403.html.py:9 +msgid "Insufficient permissions" +msgstr "" + +#: templates/403.html:11 +msgid "You don't have enough permissions for this operation." +msgstr "" + +#: templates/404.html:5 templates/404.html.py:9 +msgid "Page not found" +msgstr "" + +#: templates/404.html:11 +msgid "Sorry, but the requested page could not be found." +msgstr "" + +#: templates/500.html:5 templates/500.html.py:9 +msgid "Server error" +msgstr "" + +#: templates/500.html:11 +msgid "" +"There's been an error. It's been reported to the site administrators via " +"e-mail and should be fixed shortly. Thanks for your patience." +msgstr "" + +#: templates/500.html:14 +msgid "" +"If you need assistance, you may reference this error via the following " +"identifier:" +msgstr "" + +#: templates/appearance/about.html:8 templates/appearance/about.html.py:57 +msgid "About" +msgstr "" + +#: templates/appearance/about.html:62 +msgid "Version" +msgstr "" + +#: templates/appearance/about.html:64 +#, python-format +msgid "Build number: %(build_number)s" +msgstr "" + +#: templates/appearance/about.html:88 +msgid "Released under the Apache 2.0 License" +msgstr "" + +#: templates/appearance/about.html:100 +msgid "Copyright © 2011-2015 Roberto Rosario." +msgstr "" + +#: templates/appearance/base.html:42 +msgid "Toggle navigation" +msgstr "" + +#: templates/appearance/base.html:71 +msgid "Anonymous" +msgstr "" + +#: templates/appearance/base.html:73 +msgid "User details" +msgstr "" + +#: templates/appearance/base.html:86 +msgid "Success" +msgstr "" + +#: templates/appearance/base.html:86 +msgid "Information" +msgstr "" + +#: templates/appearance/base.html:86 +msgid "Warning" +msgstr "" + +#: templates/appearance/base.html:86 +msgid "Error" +msgstr "" + +#: templates/appearance/base.html:115 +msgid "Actions" +msgstr "" + +#: templates/appearance/base.html:116 +msgid "Toggle Dropdown" +msgstr "" + +#: templates/appearance/calculate_form_title.html:7 +#, python-format +msgid "Details for: %(object)s" +msgstr "" + +#: templates/appearance/calculate_form_title.html:10 +#, python-format +msgid "Edit: %(object)s" +msgstr "" + +#: templates/appearance/calculate_form_title.html:12 +msgid "Create" +msgstr "" + +#: templates/appearance/generic_confirm.html:6 +#: templates/appearance/generic_confirm.html:13 +msgid "Confirm" +msgstr "" + +#: templates/appearance/generic_confirm.html:11 +msgid "Confirm delete" +msgstr "" + +#: templates/appearance/generic_confirm.html:27 +#, python-format +msgid "Delete: %(object)s?" +msgstr "" + +#: templates/appearance/generic_confirm.html:47 +msgid "Yes" +msgstr "" + +#: templates/appearance/generic_confirm.html:49 +msgid "No" +msgstr "" + +#: templates/appearance/generic_form_instance.html:39 +#: templates/appearance/generic_form_instance.html:46 +#: templates/appearance/generic_form_subtemplate.html:51 +#: templates/appearance/generic_multiform_subtemplate.html:43 +msgid "required" +msgstr "" + +#: templates/appearance/generic_form_subtemplate.html:71 +#: templates/appearance/generic_multiform_subtemplate.html:64 +msgid "Save" +msgstr "" + +#: templates/appearance/generic_form_subtemplate.html:71 +#: templates/appearance/generic_list_subtemplate.html:31 +#: templates/appearance/generic_multiform_subtemplate.html:64 +msgid "Submit" +msgstr "" + +#: templates/appearance/generic_form_subtemplate.html:74 +#: templates/appearance/generic_multiform_subtemplate.html:67 +msgid "Cancel" +msgstr "" + +#: templates/appearance/generic_list_subtemplate.html:12 +#, python-format +msgid "" +"Total (%(start)s - %(end)s out of %(total)s) (Page %(page_number)s of " +"%(total_pages)s)" +msgstr "" + +#: templates/appearance/generic_list_subtemplate.html:14 +#: templates/appearance/generic_list_subtemplate.html:17 +#, python-format +msgid "Total: %(total)s" +msgstr "" + +#: templates/appearance/generic_list_subtemplate.html:51 +msgid "Identifier" +msgstr "" + +#: templates/appearance/generic_list_subtemplate.html:108 +msgid "No results" +msgstr "" + +#: templates/appearance/home.html:8 templates/appearance/home.html.py:12 +msgid "Home" +msgstr "" + +#: templates/appearance/home.html:21 +msgid "Getting started" +msgstr "" + +#: templates/appearance/home.html:24 +msgid "Before you can fully use Mayan EDMS you need the following:" +msgstr "" + +#: templates/appearance/home.html:57 +msgid "Space separated terms" +msgstr "" + +#: templates/appearance/home.html:59 +msgid "Search" +msgstr "" + +#: templates/appearance/home.html:60 +msgid "Advanced" +msgstr "" + +#: templates/appearance/login.html:9 +msgid "Login" +msgstr "" + +#: templates/appearance/login.html:20 +msgid "First time login" +msgstr "" + +#: templates/appearance/login.html:23 +msgid "" +"You have just finished installing Mayan EDMS, " +"congratulations!" +msgstr "" + +#: templates/appearance/login.html:24 +msgid "Login using the following credentials:" +msgstr "" + +#: templates/appearance/login.html:25 +#, python-format +msgid "Username: %(account)s" +msgstr "" + +#: templates/appearance/login.html:26 +#, python-format +msgid "Email: %(email)s" +msgstr "" + +#: templates/appearance/login.html:27 +#, python-format +msgid "Password: %(password)s" +msgstr "" + +#: templates/appearance/login.html:28 +msgid "" +"Be sure to change the password to increase security and to disable this " +"message." +msgstr "" + +#: templates/appearance/login.html:37 templates/appearance/login.html.py:46 +msgid "Sign in" +msgstr "" + +#: templatetags/appearance_tags.py:16 +msgid "None" +msgstr "" diff --git a/mayan/apps/project_tools/locale/en/LC_MESSAGES/django.mo b/mayan/apps/appearance/locale/bg/LC_MESSAGES/django.mo similarity index 60% rename from mayan/apps/project_tools/locale/en/LC_MESSAGES/django.mo rename to mayan/apps/appearance/locale/bg/LC_MESSAGES/django.mo index b7bab58f38..a97fde86c6 100644 Binary files a/mayan/apps/project_tools/locale/en/LC_MESSAGES/django.mo and b/mayan/apps/appearance/locale/bg/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/appearance/locale/bg/LC_MESSAGES/django.po b/mayan/apps/appearance/locale/bg/LC_MESSAGES/django.po new file mode 100644 index 0000000000..670acef608 --- /dev/null +++ b/mayan/apps/appearance/locale/bg/LC_MESSAGES/django.po @@ -0,0 +1,262 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# +# Translators: +msgid "" +msgstr "" +"Project-Id-Version: Mayan EDMS\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2015-09-24 16:24-0400\n" +"PO-Revision-Date: 2015-08-27 05:24+0000\n" +"Last-Translator: Roberto Rosario\n" +"Language-Team: Bulgarian (http://www.transifex.com/rosarior/mayan-edms/language/bg/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: bg\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#: apps.py:12 +msgid "Appearance" +msgstr "" + +#: templates/403.html:5 templates/403.html.py:9 +msgid "Insufficient permissions" +msgstr "" + +#: templates/403.html:11 +msgid "You don't have enough permissions for this operation." +msgstr "" + +#: templates/404.html:5 templates/404.html.py:9 +msgid "Page not found" +msgstr "" + +#: templates/404.html:11 +msgid "Sorry, but the requested page could not be found." +msgstr "" + +#: templates/500.html:5 templates/500.html.py:9 +msgid "Server error" +msgstr "" + +#: templates/500.html:11 +msgid "" +"There's been an error. It's been reported to the site administrators via " +"e-mail and should be fixed shortly. Thanks for your patience." +msgstr "" + +#: templates/500.html:14 +msgid "" +"If you need assistance, you may reference this error via the following " +"identifier:" +msgstr "" + +#: templates/appearance/about.html:8 templates/appearance/about.html.py:57 +msgid "About" +msgstr "" + +#: templates/appearance/about.html:62 +msgid "Version" +msgstr "" + +#: templates/appearance/about.html:64 +#, python-format +msgid "Build number: %(build_number)s" +msgstr "" + +#: templates/appearance/about.html:88 +msgid "Released under the Apache 2.0 License" +msgstr "" + +#: templates/appearance/about.html:100 +msgid "Copyright © 2011-2015 Roberto Rosario." +msgstr "" + +#: templates/appearance/base.html:42 +msgid "Toggle navigation" +msgstr "" + +#: templates/appearance/base.html:71 +msgid "Anonymous" +msgstr "" + +#: templates/appearance/base.html:73 +msgid "User details" +msgstr "" + +#: templates/appearance/base.html:86 +msgid "Success" +msgstr "" + +#: templates/appearance/base.html:86 +msgid "Information" +msgstr "" + +#: templates/appearance/base.html:86 +msgid "Warning" +msgstr "" + +#: templates/appearance/base.html:86 +msgid "Error" +msgstr "" + +#: templates/appearance/base.html:115 +msgid "Actions" +msgstr "" + +#: templates/appearance/base.html:116 +msgid "Toggle Dropdown" +msgstr "" + +#: templates/appearance/calculate_form_title.html:7 +#, python-format +msgid "Details for: %(object)s" +msgstr "" + +#: templates/appearance/calculate_form_title.html:10 +#, python-format +msgid "Edit: %(object)s" +msgstr "" + +#: templates/appearance/calculate_form_title.html:12 +msgid "Create" +msgstr "" + +#: templates/appearance/generic_confirm.html:6 +#: templates/appearance/generic_confirm.html:13 +msgid "Confirm" +msgstr "" + +#: templates/appearance/generic_confirm.html:11 +msgid "Confirm delete" +msgstr "" + +#: templates/appearance/generic_confirm.html:27 +#, python-format +msgid "Delete: %(object)s?" +msgstr "" + +#: templates/appearance/generic_confirm.html:47 +msgid "Yes" +msgstr "" + +#: templates/appearance/generic_confirm.html:49 +msgid "No" +msgstr "" + +#: templates/appearance/generic_form_instance.html:39 +#: templates/appearance/generic_form_instance.html:46 +#: templates/appearance/generic_form_subtemplate.html:51 +#: templates/appearance/generic_multiform_subtemplate.html:43 +msgid "required" +msgstr "" + +#: templates/appearance/generic_form_subtemplate.html:71 +#: templates/appearance/generic_multiform_subtemplate.html:64 +msgid "Save" +msgstr "" + +#: templates/appearance/generic_form_subtemplate.html:71 +#: templates/appearance/generic_list_subtemplate.html:31 +#: templates/appearance/generic_multiform_subtemplate.html:64 +msgid "Submit" +msgstr "" + +#: templates/appearance/generic_form_subtemplate.html:74 +#: templates/appearance/generic_multiform_subtemplate.html:67 +msgid "Cancel" +msgstr "" + +#: templates/appearance/generic_list_subtemplate.html:12 +#, python-format +msgid "" +"Total (%(start)s - %(end)s out of %(total)s) (Page %(page_number)s of " +"%(total_pages)s)" +msgstr "" + +#: templates/appearance/generic_list_subtemplate.html:14 +#: templates/appearance/generic_list_subtemplate.html:17 +#, python-format +msgid "Total: %(total)s" +msgstr "" + +#: templates/appearance/generic_list_subtemplate.html:51 +msgid "Identifier" +msgstr "" + +#: templates/appearance/generic_list_subtemplate.html:108 +msgid "No results" +msgstr "" + +#: templates/appearance/home.html:8 templates/appearance/home.html.py:12 +msgid "Home" +msgstr "" + +#: templates/appearance/home.html:21 +msgid "Getting started" +msgstr "" + +#: templates/appearance/home.html:24 +msgid "Before you can fully use Mayan EDMS you need the following:" +msgstr "" + +#: templates/appearance/home.html:57 +msgid "Space separated terms" +msgstr "" + +#: templates/appearance/home.html:59 +msgid "Search" +msgstr "" + +#: templates/appearance/home.html:60 +msgid "Advanced" +msgstr "" + +#: templates/appearance/login.html:9 +msgid "Login" +msgstr "" + +#: templates/appearance/login.html:20 +msgid "First time login" +msgstr "" + +#: templates/appearance/login.html:23 +msgid "" +"You have just finished installing Mayan EDMS, " +"congratulations!" +msgstr "" + +#: templates/appearance/login.html:24 +msgid "Login using the following credentials:" +msgstr "" + +#: templates/appearance/login.html:25 +#, python-format +msgid "Username: %(account)s" +msgstr "" + +#: templates/appearance/login.html:26 +#, python-format +msgid "Email: %(email)s" +msgstr "" + +#: templates/appearance/login.html:27 +#, python-format +msgid "Password: %(password)s" +msgstr "" + +#: templates/appearance/login.html:28 +msgid "" +"Be sure to change the password to increase security and to disable this " +"message." +msgstr "" + +#: templates/appearance/login.html:37 templates/appearance/login.html.py:46 +msgid "Sign in" +msgstr "" + +#: templatetags/appearance_tags.py:16 +msgid "None" +msgstr "" diff --git a/mayan/apps/project_setup/locale/bs_BA/LC_MESSAGES/django.mo b/mayan/apps/appearance/locale/bs_BA/LC_MESSAGES/django.mo similarity index 65% rename from mayan/apps/project_setup/locale/bs_BA/LC_MESSAGES/django.mo rename to mayan/apps/appearance/locale/bs_BA/LC_MESSAGES/django.mo index 78a9dee774..b45c5fd366 100644 Binary files a/mayan/apps/project_setup/locale/bs_BA/LC_MESSAGES/django.mo and b/mayan/apps/appearance/locale/bs_BA/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/appearance/locale/bs_BA/LC_MESSAGES/django.po b/mayan/apps/appearance/locale/bs_BA/LC_MESSAGES/django.po new file mode 100644 index 0000000000..1f08d38ac9 --- /dev/null +++ b/mayan/apps/appearance/locale/bs_BA/LC_MESSAGES/django.po @@ -0,0 +1,262 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# +# Translators: +msgid "" +msgstr "" +"Project-Id-Version: Mayan EDMS\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2015-09-24 16:24-0400\n" +"PO-Revision-Date: 2015-08-27 05:24+0000\n" +"Last-Translator: Roberto Rosario\n" +"Language-Team: Bosnian (Bosnia and Herzegovina) (http://www.transifex.com/rosarior/mayan-edms/language/bs_BA/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: bs_BA\n" +"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" + +#: apps.py:12 +msgid "Appearance" +msgstr "" + +#: templates/403.html:5 templates/403.html.py:9 +msgid "Insufficient permissions" +msgstr "" + +#: templates/403.html:11 +msgid "You don't have enough permissions for this operation." +msgstr "" + +#: templates/404.html:5 templates/404.html.py:9 +msgid "Page not found" +msgstr "" + +#: templates/404.html:11 +msgid "Sorry, but the requested page could not be found." +msgstr "" + +#: templates/500.html:5 templates/500.html.py:9 +msgid "Server error" +msgstr "" + +#: templates/500.html:11 +msgid "" +"There's been an error. It's been reported to the site administrators via " +"e-mail and should be fixed shortly. Thanks for your patience." +msgstr "" + +#: templates/500.html:14 +msgid "" +"If you need assistance, you may reference this error via the following " +"identifier:" +msgstr "" + +#: templates/appearance/about.html:8 templates/appearance/about.html.py:57 +msgid "About" +msgstr "" + +#: templates/appearance/about.html:62 +msgid "Version" +msgstr "" + +#: templates/appearance/about.html:64 +#, python-format +msgid "Build number: %(build_number)s" +msgstr "" + +#: templates/appearance/about.html:88 +msgid "Released under the Apache 2.0 License" +msgstr "" + +#: templates/appearance/about.html:100 +msgid "Copyright © 2011-2015 Roberto Rosario." +msgstr "" + +#: templates/appearance/base.html:42 +msgid "Toggle navigation" +msgstr "" + +#: templates/appearance/base.html:71 +msgid "Anonymous" +msgstr "" + +#: templates/appearance/base.html:73 +msgid "User details" +msgstr "" + +#: templates/appearance/base.html:86 +msgid "Success" +msgstr "" + +#: templates/appearance/base.html:86 +msgid "Information" +msgstr "" + +#: templates/appearance/base.html:86 +msgid "Warning" +msgstr "" + +#: templates/appearance/base.html:86 +msgid "Error" +msgstr "" + +#: templates/appearance/base.html:115 +msgid "Actions" +msgstr "" + +#: templates/appearance/base.html:116 +msgid "Toggle Dropdown" +msgstr "" + +#: templates/appearance/calculate_form_title.html:7 +#, python-format +msgid "Details for: %(object)s" +msgstr "" + +#: templates/appearance/calculate_form_title.html:10 +#, python-format +msgid "Edit: %(object)s" +msgstr "" + +#: templates/appearance/calculate_form_title.html:12 +msgid "Create" +msgstr "" + +#: templates/appearance/generic_confirm.html:6 +#: templates/appearance/generic_confirm.html:13 +msgid "Confirm" +msgstr "" + +#: templates/appearance/generic_confirm.html:11 +msgid "Confirm delete" +msgstr "" + +#: templates/appearance/generic_confirm.html:27 +#, python-format +msgid "Delete: %(object)s?" +msgstr "" + +#: templates/appearance/generic_confirm.html:47 +msgid "Yes" +msgstr "" + +#: templates/appearance/generic_confirm.html:49 +msgid "No" +msgstr "" + +#: templates/appearance/generic_form_instance.html:39 +#: templates/appearance/generic_form_instance.html:46 +#: templates/appearance/generic_form_subtemplate.html:51 +#: templates/appearance/generic_multiform_subtemplate.html:43 +msgid "required" +msgstr "" + +#: templates/appearance/generic_form_subtemplate.html:71 +#: templates/appearance/generic_multiform_subtemplate.html:64 +msgid "Save" +msgstr "" + +#: templates/appearance/generic_form_subtemplate.html:71 +#: templates/appearance/generic_list_subtemplate.html:31 +#: templates/appearance/generic_multiform_subtemplate.html:64 +msgid "Submit" +msgstr "" + +#: templates/appearance/generic_form_subtemplate.html:74 +#: templates/appearance/generic_multiform_subtemplate.html:67 +msgid "Cancel" +msgstr "" + +#: templates/appearance/generic_list_subtemplate.html:12 +#, python-format +msgid "" +"Total (%(start)s - %(end)s out of %(total)s) (Page %(page_number)s of " +"%(total_pages)s)" +msgstr "" + +#: templates/appearance/generic_list_subtemplate.html:14 +#: templates/appearance/generic_list_subtemplate.html:17 +#, python-format +msgid "Total: %(total)s" +msgstr "" + +#: templates/appearance/generic_list_subtemplate.html:51 +msgid "Identifier" +msgstr "" + +#: templates/appearance/generic_list_subtemplate.html:108 +msgid "No results" +msgstr "" + +#: templates/appearance/home.html:8 templates/appearance/home.html.py:12 +msgid "Home" +msgstr "" + +#: templates/appearance/home.html:21 +msgid "Getting started" +msgstr "" + +#: templates/appearance/home.html:24 +msgid "Before you can fully use Mayan EDMS you need the following:" +msgstr "" + +#: templates/appearance/home.html:57 +msgid "Space separated terms" +msgstr "" + +#: templates/appearance/home.html:59 +msgid "Search" +msgstr "" + +#: templates/appearance/home.html:60 +msgid "Advanced" +msgstr "" + +#: templates/appearance/login.html:9 +msgid "Login" +msgstr "" + +#: templates/appearance/login.html:20 +msgid "First time login" +msgstr "" + +#: templates/appearance/login.html:23 +msgid "" +"You have just finished installing Mayan EDMS, " +"congratulations!" +msgstr "" + +#: templates/appearance/login.html:24 +msgid "Login using the following credentials:" +msgstr "" + +#: templates/appearance/login.html:25 +#, python-format +msgid "Username: %(account)s" +msgstr "" + +#: templates/appearance/login.html:26 +#, python-format +msgid "Email: %(email)s" +msgstr "" + +#: templates/appearance/login.html:27 +#, python-format +msgid "Password: %(password)s" +msgstr "" + +#: templates/appearance/login.html:28 +msgid "" +"Be sure to change the password to increase security and to disable this " +"message." +msgstr "" + +#: templates/appearance/login.html:37 templates/appearance/login.html.py:46 +msgid "Sign in" +msgstr "" + +#: templatetags/appearance_tags.py:16 +msgid "None" +msgstr "" diff --git a/mayan/apps/appearance/locale/da/LC_MESSAGES/django.mo b/mayan/apps/appearance/locale/da/LC_MESSAGES/django.mo new file mode 100644 index 0000000000..a55a1d6d38 Binary files /dev/null and b/mayan/apps/appearance/locale/da/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/appearance/locale/da/LC_MESSAGES/django.po b/mayan/apps/appearance/locale/da/LC_MESSAGES/django.po new file mode 100644 index 0000000000..16d8bf3917 --- /dev/null +++ b/mayan/apps/appearance/locale/da/LC_MESSAGES/django.po @@ -0,0 +1,262 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# +# Translators: +msgid "" +msgstr "" +"Project-Id-Version: Mayan EDMS\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2015-09-24 16:24-0400\n" +"PO-Revision-Date: 2015-08-27 05:24+0000\n" +"Last-Translator: Roberto Rosario\n" +"Language-Team: Danish (http://www.transifex.com/rosarior/mayan-edms/language/da/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: da\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#: apps.py:12 +msgid "Appearance" +msgstr "" + +#: templates/403.html:5 templates/403.html.py:9 +msgid "Insufficient permissions" +msgstr "" + +#: templates/403.html:11 +msgid "You don't have enough permissions for this operation." +msgstr "" + +#: templates/404.html:5 templates/404.html.py:9 +msgid "Page not found" +msgstr "" + +#: templates/404.html:11 +msgid "Sorry, but the requested page could not be found." +msgstr "" + +#: templates/500.html:5 templates/500.html.py:9 +msgid "Server error" +msgstr "" + +#: templates/500.html:11 +msgid "" +"There's been an error. It's been reported to the site administrators via " +"e-mail and should be fixed shortly. Thanks for your patience." +msgstr "" + +#: templates/500.html:14 +msgid "" +"If you need assistance, you may reference this error via the following " +"identifier:" +msgstr "" + +#: templates/appearance/about.html:8 templates/appearance/about.html.py:57 +msgid "About" +msgstr "" + +#: templates/appearance/about.html:62 +msgid "Version" +msgstr "" + +#: templates/appearance/about.html:64 +#, python-format +msgid "Build number: %(build_number)s" +msgstr "" + +#: templates/appearance/about.html:88 +msgid "Released under the Apache 2.0 License" +msgstr "" + +#: templates/appearance/about.html:100 +msgid "Copyright © 2011-2015 Roberto Rosario." +msgstr "" + +#: templates/appearance/base.html:42 +msgid "Toggle navigation" +msgstr "" + +#: templates/appearance/base.html:71 +msgid "Anonymous" +msgstr "" + +#: templates/appearance/base.html:73 +msgid "User details" +msgstr "" + +#: templates/appearance/base.html:86 +msgid "Success" +msgstr "" + +#: templates/appearance/base.html:86 +msgid "Information" +msgstr "" + +#: templates/appearance/base.html:86 +msgid "Warning" +msgstr "" + +#: templates/appearance/base.html:86 +msgid "Error" +msgstr "" + +#: templates/appearance/base.html:115 +msgid "Actions" +msgstr "" + +#: templates/appearance/base.html:116 +msgid "Toggle Dropdown" +msgstr "" + +#: templates/appearance/calculate_form_title.html:7 +#, python-format +msgid "Details for: %(object)s" +msgstr "" + +#: templates/appearance/calculate_form_title.html:10 +#, python-format +msgid "Edit: %(object)s" +msgstr "" + +#: templates/appearance/calculate_form_title.html:12 +msgid "Create" +msgstr "" + +#: templates/appearance/generic_confirm.html:6 +#: templates/appearance/generic_confirm.html:13 +msgid "Confirm" +msgstr "" + +#: templates/appearance/generic_confirm.html:11 +msgid "Confirm delete" +msgstr "" + +#: templates/appearance/generic_confirm.html:27 +#, python-format +msgid "Delete: %(object)s?" +msgstr "" + +#: templates/appearance/generic_confirm.html:47 +msgid "Yes" +msgstr "" + +#: templates/appearance/generic_confirm.html:49 +msgid "No" +msgstr "" + +#: templates/appearance/generic_form_instance.html:39 +#: templates/appearance/generic_form_instance.html:46 +#: templates/appearance/generic_form_subtemplate.html:51 +#: templates/appearance/generic_multiform_subtemplate.html:43 +msgid "required" +msgstr "" + +#: templates/appearance/generic_form_subtemplate.html:71 +#: templates/appearance/generic_multiform_subtemplate.html:64 +msgid "Save" +msgstr "" + +#: templates/appearance/generic_form_subtemplate.html:71 +#: templates/appearance/generic_list_subtemplate.html:31 +#: templates/appearance/generic_multiform_subtemplate.html:64 +msgid "Submit" +msgstr "" + +#: templates/appearance/generic_form_subtemplate.html:74 +#: templates/appearance/generic_multiform_subtemplate.html:67 +msgid "Cancel" +msgstr "" + +#: templates/appearance/generic_list_subtemplate.html:12 +#, python-format +msgid "" +"Total (%(start)s - %(end)s out of %(total)s) (Page %(page_number)s of " +"%(total_pages)s)" +msgstr "" + +#: templates/appearance/generic_list_subtemplate.html:14 +#: templates/appearance/generic_list_subtemplate.html:17 +#, python-format +msgid "Total: %(total)s" +msgstr "" + +#: templates/appearance/generic_list_subtemplate.html:51 +msgid "Identifier" +msgstr "" + +#: templates/appearance/generic_list_subtemplate.html:108 +msgid "No results" +msgstr "" + +#: templates/appearance/home.html:8 templates/appearance/home.html.py:12 +msgid "Home" +msgstr "" + +#: templates/appearance/home.html:21 +msgid "Getting started" +msgstr "" + +#: templates/appearance/home.html:24 +msgid "Before you can fully use Mayan EDMS you need the following:" +msgstr "" + +#: templates/appearance/home.html:57 +msgid "Space separated terms" +msgstr "" + +#: templates/appearance/home.html:59 +msgid "Search" +msgstr "" + +#: templates/appearance/home.html:60 +msgid "Advanced" +msgstr "" + +#: templates/appearance/login.html:9 +msgid "Login" +msgstr "" + +#: templates/appearance/login.html:20 +msgid "First time login" +msgstr "" + +#: templates/appearance/login.html:23 +msgid "" +"You have just finished installing Mayan EDMS, " +"congratulations!" +msgstr "" + +#: templates/appearance/login.html:24 +msgid "Login using the following credentials:" +msgstr "" + +#: templates/appearance/login.html:25 +#, python-format +msgid "Username: %(account)s" +msgstr "" + +#: templates/appearance/login.html:26 +#, python-format +msgid "Email: %(email)s" +msgstr "" + +#: templates/appearance/login.html:27 +#, python-format +msgid "Password: %(password)s" +msgstr "" + +#: templates/appearance/login.html:28 +msgid "" +"Be sure to change the password to increase security and to disable this " +"message." +msgstr "" + +#: templates/appearance/login.html:37 templates/appearance/login.html.py:46 +msgid "Sign in" +msgstr "" + +#: templatetags/appearance_tags.py:16 +msgid "None" +msgstr "" diff --git a/mayan/apps/appearance/locale/de_DE/LC_MESSAGES/django.mo b/mayan/apps/appearance/locale/de_DE/LC_MESSAGES/django.mo new file mode 100644 index 0000000000..c915ed3310 Binary files /dev/null and b/mayan/apps/appearance/locale/de_DE/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/appearance/locale/de_DE/LC_MESSAGES/django.po b/mayan/apps/appearance/locale/de_DE/LC_MESSAGES/django.po new file mode 100644 index 0000000000..8b740debfa --- /dev/null +++ b/mayan/apps/appearance/locale/de_DE/LC_MESSAGES/django.po @@ -0,0 +1,263 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# +# Translators: +# Berny , 2015 +msgid "" +msgstr "" +"Project-Id-Version: Mayan EDMS\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2015-09-24 16:24-0400\n" +"PO-Revision-Date: 2015-09-08 23:04+0000\n" +"Last-Translator: Mathias Behrle \n" +"Language-Team: German (Germany) (http://www.transifex.com/rosarior/mayan-edms/language/de_DE/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: de_DE\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#: apps.py:12 +msgid "Appearance" +msgstr "Erscheinungsbild" + +#: templates/403.html:5 templates/403.html.py:9 +msgid "Insufficient permissions" +msgstr "Unzureichende Berechtigungen" + +#: templates/403.html:11 +msgid "You don't have enough permissions for this operation." +msgstr "Sie haben unzureichende Berechtigungen für diesen Vorgang." + +#: templates/404.html:5 templates/404.html.py:9 +msgid "Page not found" +msgstr "Seite nicht gefunden" + +#: templates/404.html:11 +msgid "Sorry, but the requested page could not be found." +msgstr "Die angeforderte Seite konnte leider nicht gefunden werden" + +#: templates/500.html:5 templates/500.html.py:9 +msgid "Server error" +msgstr "Serverfehler" + +#: templates/500.html:11 +msgid "" +"There's been an error. It's been reported to the site administrators via " +"e-mail and should be fixed shortly. Thanks for your patience." +msgstr "Es kam zu einem Fehler. Der Fehler wurde per E-Mail and die Administratoren gemeldet und sollte bald behoben werden. Vielen Dank für Ihre Geduld." + +#: templates/500.html:14 +msgid "" +"If you need assistance, you may reference this error via the following " +"identifier:" +msgstr "Wenn Sie Hilfe brauchen, können Sie den Fehler über folgende Kennung referenzieren: " + +#: templates/appearance/about.html:8 templates/appearance/about.html.py:57 +msgid "About" +msgstr "Über" + +#: templates/appearance/about.html:62 +msgid "Version" +msgstr "Version" + +#: templates/appearance/about.html:64 +#, python-format +msgid "Build number: %(build_number)s" +msgstr "Build Nummer: %(build_number)s" + +#: templates/appearance/about.html:88 +msgid "Released under the Apache 2.0 License" +msgstr "Veröffentlicht unter der Apache 2.0 Lizenz" + +#: templates/appearance/about.html:100 +msgid "Copyright © 2011-2015 Roberto Rosario." +msgstr "Copyright © 2011-2015 Roberto Rosario." + +#: templates/appearance/base.html:42 +msgid "Toggle navigation" +msgstr "Navigation ein-/ausschalten" + +#: templates/appearance/base.html:71 +msgid "Anonymous" +msgstr "Anonymer Benutzer" + +#: templates/appearance/base.html:73 +msgid "User details" +msgstr "Benutzerdetails" + +#: templates/appearance/base.html:86 +msgid "Success" +msgstr "Erfolg" + +#: templates/appearance/base.html:86 +msgid "Information" +msgstr "Information" + +#: templates/appearance/base.html:86 +msgid "Warning" +msgstr "Warnung" + +#: templates/appearance/base.html:86 +msgid "Error" +msgstr "Fehler" + +#: templates/appearance/base.html:115 +msgid "Actions" +msgstr "Aktionen" + +#: templates/appearance/base.html:116 +msgid "Toggle Dropdown" +msgstr "Ausklappmenü ein-/ausschalten" + +#: templates/appearance/calculate_form_title.html:7 +#, python-format +msgid "Details for: %(object)s" +msgstr "Details für: %(object)s" + +#: templates/appearance/calculate_form_title.html:10 +#, python-format +msgid "Edit: %(object)s" +msgstr "%(object)s bearbeiten" + +#: templates/appearance/calculate_form_title.html:12 +msgid "Create" +msgstr "Erstellen" + +#: templates/appearance/generic_confirm.html:6 +#: templates/appearance/generic_confirm.html:13 +msgid "Confirm" +msgstr "Bestätigen" + +#: templates/appearance/generic_confirm.html:11 +msgid "Confirm delete" +msgstr "Löschen bestätigen" + +#: templates/appearance/generic_confirm.html:27 +#, python-format +msgid "Delete: %(object)s?" +msgstr "%(object)s löschen?" + +#: templates/appearance/generic_confirm.html:47 +msgid "Yes" +msgstr "Ja" + +#: templates/appearance/generic_confirm.html:49 +msgid "No" +msgstr "Nein" + +#: templates/appearance/generic_form_instance.html:39 +#: templates/appearance/generic_form_instance.html:46 +#: templates/appearance/generic_form_subtemplate.html:51 +#: templates/appearance/generic_multiform_subtemplate.html:43 +msgid "required" +msgstr "erforderlich" + +#: templates/appearance/generic_form_subtemplate.html:71 +#: templates/appearance/generic_multiform_subtemplate.html:64 +msgid "Save" +msgstr "Speichern" + +#: templates/appearance/generic_form_subtemplate.html:71 +#: templates/appearance/generic_list_subtemplate.html:31 +#: templates/appearance/generic_multiform_subtemplate.html:64 +msgid "Submit" +msgstr "Absenden" + +#: templates/appearance/generic_form_subtemplate.html:74 +#: templates/appearance/generic_multiform_subtemplate.html:67 +msgid "Cancel" +msgstr "Abbrechen" + +#: templates/appearance/generic_list_subtemplate.html:12 +#, python-format +msgid "" +"Total (%(start)s - %(end)s out of %(total)s) (Page %(page_number)s of " +"%(total_pages)s)" +msgstr "Gesamt (%(start)s - %(end)s von %(total)s) (Seite %(page_number)s von %(total_pages)s)" + +#: templates/appearance/generic_list_subtemplate.html:14 +#: templates/appearance/generic_list_subtemplate.html:17 +#, python-format +msgid "Total: %(total)s" +msgstr "Gesamt: %(total)s" + +#: templates/appearance/generic_list_subtemplate.html:51 +msgid "Identifier" +msgstr "Bezeichner" + +#: templates/appearance/generic_list_subtemplate.html:108 +msgid "No results" +msgstr "Kein Ergebnis" + +#: templates/appearance/home.html:8 templates/appearance/home.html.py:12 +msgid "Home" +msgstr "Start" + +#: templates/appearance/home.html:21 +msgid "Getting started" +msgstr "Erste Schritte" + +#: templates/appearance/home.html:24 +msgid "Before you can fully use Mayan EDMS you need the following:" +msgstr "Bevor Mayan EDMS voll genutzt werden kann, muss folgendes passieren:" + +#: templates/appearance/home.html:57 +msgid "Space separated terms" +msgstr "Begriffe durch Leerzeichen getrennt" + +#: templates/appearance/home.html:59 +msgid "Search" +msgstr "Suche" + +#: templates/appearance/home.html:60 +msgid "Advanced" +msgstr "Erweitert" + +#: templates/appearance/login.html:9 +msgid "Login" +msgstr "Login" + +#: templates/appearance/login.html:20 +msgid "First time login" +msgstr "Erstanmeldung" + +#: templates/appearance/login.html:23 +msgid "" +"You have just finished installing Mayan EDMS, " +"congratulations!" +msgstr "Herzlichen Glückwunsch! Sie haben die Installation von Mayan EDMS erfolgreich abgeschlossen. " + +#: templates/appearance/login.html:24 +msgid "Login using the following credentials:" +msgstr "Einloggen mit folgenden Zugangsdaten:" + +#: templates/appearance/login.html:25 +#, python-format +msgid "Username: %(account)s" +msgstr "Benutzername: %(account)s" + +#: templates/appearance/login.html:26 +#, python-format +msgid "Email: %(email)s" +msgstr "E-Mail: %(email)s" + +#: templates/appearance/login.html:27 +#, python-format +msgid "Password: %(password)s" +msgstr "Passwort: %(password)s" + +#: templates/appearance/login.html:28 +msgid "" +"Be sure to change the password to increase security and to disable this " +"message." +msgstr "Bitte ändern Sie das Passwort, um die Sicherheit zu erhöhen und diese Nachricht zu deaktivieren." + +#: templates/appearance/login.html:37 templates/appearance/login.html.py:46 +msgid "Sign in" +msgstr "Anmelden" + +#: templatetags/appearance_tags.py:16 +msgid "None" +msgstr "Keine" diff --git a/mayan/apps/events/locale/de_CH/LC_MESSAGES/django.mo b/mayan/apps/appearance/locale/en/LC_MESSAGES/django.mo similarity index 89% rename from mayan/apps/events/locale/de_CH/LC_MESSAGES/django.mo rename to mayan/apps/appearance/locale/en/LC_MESSAGES/django.mo index 5323b3ffd8..62428f8d50 100644 Binary files a/mayan/apps/events/locale/de_CH/LC_MESSAGES/django.mo and b/mayan/apps/appearance/locale/en/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/appearance/locale/en/LC_MESSAGES/django.po b/mayan/apps/appearance/locale/en/LC_MESSAGES/django.po new file mode 100644 index 0000000000..16238203a6 --- /dev/null +++ b/mayan/apps/appearance/locale/en/LC_MESSAGES/django.po @@ -0,0 +1,262 @@ +# 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: 2015-09-24 16:24-0400\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" + +#: apps.py:12 +msgid "Appearance" +msgstr "" + +#: templates/403.html:5 templates/403.html.py:9 +msgid "Insufficient permissions" +msgstr "" + +#: templates/403.html:11 +msgid "You don't have enough permissions for this operation." +msgstr "" + +#: templates/404.html:5 templates/404.html.py:9 +msgid "Page not found" +msgstr "" + +#: templates/404.html:11 +msgid "Sorry, but the requested page could not be found." +msgstr "" + +#: templates/500.html:5 templates/500.html.py:9 +msgid "Server error" +msgstr "" + +#: templates/500.html:11 +msgid "" +"There's been an error. It's been reported to the site administrators via e-" +"mail and should be fixed shortly. Thanks for your patience." +msgstr "" + +#: templates/500.html:14 +msgid "" +"If you need assistance, you may reference this error via the following " +"identifier:" +msgstr "" + +#: templates/appearance/about.html:8 templates/appearance/about.html.py:57 +msgid "About" +msgstr "" + +#: templates/appearance/about.html:62 +msgid "Version" +msgstr "" + +#: templates/appearance/about.html:64 +#, python-format +msgid "Build number: %(build_number)s" +msgstr "" + +#: templates/appearance/about.html:88 +msgid "Released under the Apache 2.0 License" +msgstr "" + +#: templates/appearance/about.html:100 +msgid "Copyright © 2011-2015 Roberto Rosario." +msgstr "" + +#: templates/appearance/base.html:42 +msgid "Toggle navigation" +msgstr "" + +#: templates/appearance/base.html:71 +msgid "Anonymous" +msgstr "" + +#: templates/appearance/base.html:73 +msgid "User details" +msgstr "" + +#: templates/appearance/base.html:86 +msgid "Success" +msgstr "" + +#: templates/appearance/base.html:86 +msgid "Information" +msgstr "" + +#: templates/appearance/base.html:86 +msgid "Warning" +msgstr "" + +#: templates/appearance/base.html:86 +msgid "Error" +msgstr "" + +#: templates/appearance/base.html:115 +msgid "Actions" +msgstr "" + +#: templates/appearance/base.html:116 +msgid "Toggle Dropdown" +msgstr "" + +#: templates/appearance/calculate_form_title.html:7 +#, python-format +msgid "Details for: %(object)s" +msgstr "" + +#: templates/appearance/calculate_form_title.html:10 +#, python-format +msgid "Edit: %(object)s" +msgstr "" + +#: templates/appearance/calculate_form_title.html:12 +msgid "Create" +msgstr "" + +#: templates/appearance/generic_confirm.html:6 +#: templates/appearance/generic_confirm.html:13 +msgid "Confirm" +msgstr "" + +#: templates/appearance/generic_confirm.html:11 +msgid "Confirm delete" +msgstr "" + +#: templates/appearance/generic_confirm.html:27 +#, python-format +msgid "Delete: %(object)s?" +msgstr "" + +#: templates/appearance/generic_confirm.html:47 +msgid "Yes" +msgstr "" + +#: templates/appearance/generic_confirm.html:49 +msgid "No" +msgstr "" + +#: templates/appearance/generic_form_instance.html:39 +#: templates/appearance/generic_form_instance.html:46 +#: templates/appearance/generic_form_subtemplate.html:51 +#: templates/appearance/generic_multiform_subtemplate.html:43 +msgid "required" +msgstr "" + +#: templates/appearance/generic_form_subtemplate.html:71 +#: templates/appearance/generic_multiform_subtemplate.html:64 +msgid "Save" +msgstr "" + +#: templates/appearance/generic_form_subtemplate.html:71 +#: templates/appearance/generic_list_subtemplate.html:31 +#: templates/appearance/generic_multiform_subtemplate.html:64 +msgid "Submit" +msgstr "" + +#: templates/appearance/generic_form_subtemplate.html:74 +#: templates/appearance/generic_multiform_subtemplate.html:67 +msgid "Cancel" +msgstr "" + +#: templates/appearance/generic_list_subtemplate.html:12 +#, python-format +msgid "" +"Total (%(start)s - %(end)s out of %(total)s) (Page %(page_number)s of " +"%(total_pages)s)" +msgstr "" + +#: templates/appearance/generic_list_subtemplate.html:14 +#: templates/appearance/generic_list_subtemplate.html:17 +#, python-format +msgid "Total: %(total)s" +msgstr "" + +#: templates/appearance/generic_list_subtemplate.html:51 +msgid "Identifier" +msgstr "" + +#: templates/appearance/generic_list_subtemplate.html:108 +msgid "No results" +msgstr "" + +#: templates/appearance/home.html:8 templates/appearance/home.html.py:12 +msgid "Home" +msgstr "" + +#: templates/appearance/home.html:21 +msgid "Getting started" +msgstr "" + +#: templates/appearance/home.html:24 +msgid "Before you can fully use Mayan EDMS you need the following:" +msgstr "" + +#: templates/appearance/home.html:57 +msgid "Space separated terms" +msgstr "" + +#: templates/appearance/home.html:59 +msgid "Search" +msgstr "" + +#: templates/appearance/home.html:60 +msgid "Advanced" +msgstr "" + +#: templates/appearance/login.html:9 +msgid "Login" +msgstr "" + +#: templates/appearance/login.html:20 +msgid "First time login" +msgstr "" + +#: templates/appearance/login.html:23 +msgid "" +"You have just finished installing Mayan EDMS, " +"congratulations!" +msgstr "" + +#: templates/appearance/login.html:24 +msgid "Login using the following credentials:" +msgstr "" + +#: templates/appearance/login.html:25 +#, python-format +msgid "Username: %(account)s" +msgstr "" + +#: templates/appearance/login.html:26 +#, python-format +msgid "Email: %(email)s" +msgstr "" + +#: templates/appearance/login.html:27 +#, python-format +msgid "Password: %(password)s" +msgstr "" + +#: templates/appearance/login.html:28 +msgid "" +"Be sure to change the password to increase security and to disable this " +"message." +msgstr "" + +#: templates/appearance/login.html:37 templates/appearance/login.html.py:46 +msgid "Sign in" +msgstr "" + +#: templatetags/appearance_tags.py:16 +msgid "None" +msgstr "" diff --git a/mayan/apps/appearance/locale/es/LC_MESSAGES/django.mo b/mayan/apps/appearance/locale/es/LC_MESSAGES/django.mo new file mode 100644 index 0000000000..96dc26af9f Binary files /dev/null and b/mayan/apps/appearance/locale/es/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/appearance/locale/es/LC_MESSAGES/django.po b/mayan/apps/appearance/locale/es/LC_MESSAGES/django.po new file mode 100644 index 0000000000..bbed44297e --- /dev/null +++ b/mayan/apps/appearance/locale/es/LC_MESSAGES/django.po @@ -0,0 +1,263 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# +# Translators: +# Roberto Rosario, 2015 +msgid "" +msgstr "" +"Project-Id-Version: Mayan EDMS\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2015-09-24 16:24-0400\n" +"PO-Revision-Date: 2015-08-27 05:24+0000\n" +"Last-Translator: Roberto Rosario\n" +"Language-Team: Spanish (http://www.transifex.com/rosarior/mayan-edms/language/es/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: es\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#: apps.py:12 +msgid "Appearance" +msgstr "Apariencia" + +#: templates/403.html:5 templates/403.html.py:9 +msgid "Insufficient permissions" +msgstr "Permisos insuficientes" + +#: templates/403.html:11 +msgid "You don't have enough permissions for this operation." +msgstr "No tienes suficientes permisos para esta operación" + +#: templates/404.html:5 templates/404.html.py:9 +msgid "Page not found" +msgstr "Página no encontrada" + +#: templates/404.html:11 +msgid "Sorry, but the requested page could not be found." +msgstr "Lo sentimos, la página solicitada no pudo ser encontrada" + +#: templates/500.html:5 templates/500.html.py:9 +msgid "Server error" +msgstr "Error de servidor" + +#: templates/500.html:11 +msgid "" +"There's been an error. It's been reported to the site administrators via " +"e-mail and should be fixed shortly. Thanks for your patience." +msgstr "" + +#: templates/500.html:14 +msgid "" +"If you need assistance, you may reference this error via the following " +"identifier:" +msgstr "" + +#: templates/appearance/about.html:8 templates/appearance/about.html.py:57 +msgid "About" +msgstr "Sobre" + +#: templates/appearance/about.html:62 +msgid "Version" +msgstr "Versión" + +#: templates/appearance/about.html:64 +#, python-format +msgid "Build number: %(build_number)s" +msgstr "Número de compilación: %(build_number)s" + +#: templates/appearance/about.html:88 +msgid "Released under the Apache 2.0 License" +msgstr "Liberado bajo la licencia Apache 2.0 License" + +#: templates/appearance/about.html:100 +msgid "Copyright © 2011-2015 Roberto Rosario." +msgstr "Todos los derechos reservados © 2011-2015 Roberto Rosario." + +#: templates/appearance/base.html:42 +msgid "Toggle navigation" +msgstr "Activar/Desactivar navegación" + +#: templates/appearance/base.html:71 +msgid "Anonymous" +msgstr "Anónimo" + +#: templates/appearance/base.html:73 +msgid "User details" +msgstr "Detalles del usuario" + +#: templates/appearance/base.html:86 +msgid "Success" +msgstr "Exitoso" + +#: templates/appearance/base.html:86 +msgid "Information" +msgstr "Información" + +#: templates/appearance/base.html:86 +msgid "Warning" +msgstr "Advertencia" + +#: templates/appearance/base.html:86 +msgid "Error" +msgstr "Error" + +#: templates/appearance/base.html:115 +msgid "Actions" +msgstr "Acciones" + +#: templates/appearance/base.html:116 +msgid "Toggle Dropdown" +msgstr "" + +#: templates/appearance/calculate_form_title.html:7 +#, python-format +msgid "Details for: %(object)s" +msgstr "Detalles para: %(object)s " + +#: templates/appearance/calculate_form_title.html:10 +#, python-format +msgid "Edit: %(object)s" +msgstr "Editar: %(object)s" + +#: templates/appearance/calculate_form_title.html:12 +msgid "Create" +msgstr "Crear" + +#: templates/appearance/generic_confirm.html:6 +#: templates/appearance/generic_confirm.html:13 +msgid "Confirm" +msgstr "Confirmar" + +#: templates/appearance/generic_confirm.html:11 +msgid "Confirm delete" +msgstr "Confirmar eliminación" + +#: templates/appearance/generic_confirm.html:27 +#, python-format +msgid "Delete: %(object)s?" +msgstr "" + +#: templates/appearance/generic_confirm.html:47 +msgid "Yes" +msgstr "Sí" + +#: templates/appearance/generic_confirm.html:49 +msgid "No" +msgstr "No" + +#: templates/appearance/generic_form_instance.html:39 +#: templates/appearance/generic_form_instance.html:46 +#: templates/appearance/generic_form_subtemplate.html:51 +#: templates/appearance/generic_multiform_subtemplate.html:43 +msgid "required" +msgstr "requerido" + +#: templates/appearance/generic_form_subtemplate.html:71 +#: templates/appearance/generic_multiform_subtemplate.html:64 +msgid "Save" +msgstr "Guardar" + +#: templates/appearance/generic_form_subtemplate.html:71 +#: templates/appearance/generic_list_subtemplate.html:31 +#: templates/appearance/generic_multiform_subtemplate.html:64 +msgid "Submit" +msgstr "Enviar" + +#: templates/appearance/generic_form_subtemplate.html:74 +#: templates/appearance/generic_multiform_subtemplate.html:67 +msgid "Cancel" +msgstr "Cancelar" + +#: templates/appearance/generic_list_subtemplate.html:12 +#, python-format +msgid "" +"Total (%(start)s - %(end)s out of %(total)s) (Page %(page_number)s of " +"%(total_pages)s)" +msgstr "Total (%(start)s - %(end)s de %(total)s) (Página %(page_number)s de %(total_pages)s)" + +#: templates/appearance/generic_list_subtemplate.html:14 +#: templates/appearance/generic_list_subtemplate.html:17 +#, python-format +msgid "Total: %(total)s" +msgstr "Total: %(total)s" + +#: templates/appearance/generic_list_subtemplate.html:51 +msgid "Identifier" +msgstr "Identificador" + +#: templates/appearance/generic_list_subtemplate.html:108 +msgid "No results" +msgstr "Ningún resultado" + +#: templates/appearance/home.html:8 templates/appearance/home.html.py:12 +msgid "Home" +msgstr "inicio" + +#: templates/appearance/home.html:21 +msgid "Getting started" +msgstr "Iniciando" + +#: templates/appearance/home.html:24 +msgid "Before you can fully use Mayan EDMS you need the following:" +msgstr "Antes de comenzar a utilizar Mayan EDMS usted necesita lo siguiente:" + +#: templates/appearance/home.html:57 +msgid "Space separated terms" +msgstr "Términos separados por espacios" + +#: templates/appearance/home.html:59 +msgid "Search" +msgstr "Búsqueda" + +#: templates/appearance/home.html:60 +msgid "Advanced" +msgstr "Avanzada" + +#: templates/appearance/login.html:9 +msgid "Login" +msgstr "Iniciar sesión" + +#: templates/appearance/login.html:20 +msgid "First time login" +msgstr "Primer inicio de sesión" + +#: templates/appearance/login.html:23 +msgid "" +"You have just finished installing Mayan EDMS, " +"congratulations!" +msgstr "!Felicitaciones! Acaba de terminar de instalar Mayan EDMS" + +#: templates/appearance/login.html:24 +msgid "Login using the following credentials:" +msgstr "Inicie sesión con las siguientes credenciales:" + +#: templates/appearance/login.html:25 +#, python-format +msgid "Username: %(account)s" +msgstr "Usuario: %(account)s" + +#: templates/appearance/login.html:26 +#, python-format +msgid "Email: %(email)s" +msgstr "Correo electrónico: %(email)s" + +#: templates/appearance/login.html:27 +#, python-format +msgid "Password: %(password)s" +msgstr "Contraseña: %(password)s" + +#: templates/appearance/login.html:28 +msgid "" +"Be sure to change the password to increase security and to disable this " +"message." +msgstr "Asegúrese de cambiar su contraseña para aumentar la seguridad y para desactivar este mensaje" + +#: templates/appearance/login.html:37 templates/appearance/login.html.py:46 +msgid "Sign in" +msgstr "Entrar" + +#: templatetags/appearance_tags.py:16 +msgid "None" +msgstr "Ninguno" diff --git a/mayan/apps/appearance/locale/fa/LC_MESSAGES/django.mo b/mayan/apps/appearance/locale/fa/LC_MESSAGES/django.mo new file mode 100644 index 0000000000..fc2475b0fc Binary files /dev/null and b/mayan/apps/appearance/locale/fa/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/appearance/locale/fa/LC_MESSAGES/django.po b/mayan/apps/appearance/locale/fa/LC_MESSAGES/django.po new file mode 100644 index 0000000000..e5b69fc301 --- /dev/null +++ b/mayan/apps/appearance/locale/fa/LC_MESSAGES/django.po @@ -0,0 +1,262 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# +# Translators: +msgid "" +msgstr "" +"Project-Id-Version: Mayan EDMS\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2015-09-24 16:24-0400\n" +"PO-Revision-Date: 2015-08-27 05:24+0000\n" +"Last-Translator: Roberto Rosario\n" +"Language-Team: Persian (http://www.transifex.com/rosarior/mayan-edms/language/fa/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: fa\n" +"Plural-Forms: nplurals=1; plural=0;\n" + +#: apps.py:12 +msgid "Appearance" +msgstr "" + +#: templates/403.html:5 templates/403.html.py:9 +msgid "Insufficient permissions" +msgstr "" + +#: templates/403.html:11 +msgid "You don't have enough permissions for this operation." +msgstr "" + +#: templates/404.html:5 templates/404.html.py:9 +msgid "Page not found" +msgstr "" + +#: templates/404.html:11 +msgid "Sorry, but the requested page could not be found." +msgstr "" + +#: templates/500.html:5 templates/500.html.py:9 +msgid "Server error" +msgstr "" + +#: templates/500.html:11 +msgid "" +"There's been an error. It's been reported to the site administrators via " +"e-mail and should be fixed shortly. Thanks for your patience." +msgstr "" + +#: templates/500.html:14 +msgid "" +"If you need assistance, you may reference this error via the following " +"identifier:" +msgstr "" + +#: templates/appearance/about.html:8 templates/appearance/about.html.py:57 +msgid "About" +msgstr "" + +#: templates/appearance/about.html:62 +msgid "Version" +msgstr "" + +#: templates/appearance/about.html:64 +#, python-format +msgid "Build number: %(build_number)s" +msgstr "" + +#: templates/appearance/about.html:88 +msgid "Released under the Apache 2.0 License" +msgstr "" + +#: templates/appearance/about.html:100 +msgid "Copyright © 2011-2015 Roberto Rosario." +msgstr "" + +#: templates/appearance/base.html:42 +msgid "Toggle navigation" +msgstr "" + +#: templates/appearance/base.html:71 +msgid "Anonymous" +msgstr "" + +#: templates/appearance/base.html:73 +msgid "User details" +msgstr "" + +#: templates/appearance/base.html:86 +msgid "Success" +msgstr "" + +#: templates/appearance/base.html:86 +msgid "Information" +msgstr "" + +#: templates/appearance/base.html:86 +msgid "Warning" +msgstr "" + +#: templates/appearance/base.html:86 +msgid "Error" +msgstr "" + +#: templates/appearance/base.html:115 +msgid "Actions" +msgstr "" + +#: templates/appearance/base.html:116 +msgid "Toggle Dropdown" +msgstr "" + +#: templates/appearance/calculate_form_title.html:7 +#, python-format +msgid "Details for: %(object)s" +msgstr "" + +#: templates/appearance/calculate_form_title.html:10 +#, python-format +msgid "Edit: %(object)s" +msgstr "" + +#: templates/appearance/calculate_form_title.html:12 +msgid "Create" +msgstr "" + +#: templates/appearance/generic_confirm.html:6 +#: templates/appearance/generic_confirm.html:13 +msgid "Confirm" +msgstr "" + +#: templates/appearance/generic_confirm.html:11 +msgid "Confirm delete" +msgstr "" + +#: templates/appearance/generic_confirm.html:27 +#, python-format +msgid "Delete: %(object)s?" +msgstr "" + +#: templates/appearance/generic_confirm.html:47 +msgid "Yes" +msgstr "" + +#: templates/appearance/generic_confirm.html:49 +msgid "No" +msgstr "" + +#: templates/appearance/generic_form_instance.html:39 +#: templates/appearance/generic_form_instance.html:46 +#: templates/appearance/generic_form_subtemplate.html:51 +#: templates/appearance/generic_multiform_subtemplate.html:43 +msgid "required" +msgstr "" + +#: templates/appearance/generic_form_subtemplate.html:71 +#: templates/appearance/generic_multiform_subtemplate.html:64 +msgid "Save" +msgstr "" + +#: templates/appearance/generic_form_subtemplate.html:71 +#: templates/appearance/generic_list_subtemplate.html:31 +#: templates/appearance/generic_multiform_subtemplate.html:64 +msgid "Submit" +msgstr "" + +#: templates/appearance/generic_form_subtemplate.html:74 +#: templates/appearance/generic_multiform_subtemplate.html:67 +msgid "Cancel" +msgstr "" + +#: templates/appearance/generic_list_subtemplate.html:12 +#, python-format +msgid "" +"Total (%(start)s - %(end)s out of %(total)s) (Page %(page_number)s of " +"%(total_pages)s)" +msgstr "" + +#: templates/appearance/generic_list_subtemplate.html:14 +#: templates/appearance/generic_list_subtemplate.html:17 +#, python-format +msgid "Total: %(total)s" +msgstr "" + +#: templates/appearance/generic_list_subtemplate.html:51 +msgid "Identifier" +msgstr "" + +#: templates/appearance/generic_list_subtemplate.html:108 +msgid "No results" +msgstr "" + +#: templates/appearance/home.html:8 templates/appearance/home.html.py:12 +msgid "Home" +msgstr "" + +#: templates/appearance/home.html:21 +msgid "Getting started" +msgstr "" + +#: templates/appearance/home.html:24 +msgid "Before you can fully use Mayan EDMS you need the following:" +msgstr "" + +#: templates/appearance/home.html:57 +msgid "Space separated terms" +msgstr "" + +#: templates/appearance/home.html:59 +msgid "Search" +msgstr "" + +#: templates/appearance/home.html:60 +msgid "Advanced" +msgstr "" + +#: templates/appearance/login.html:9 +msgid "Login" +msgstr "" + +#: templates/appearance/login.html:20 +msgid "First time login" +msgstr "" + +#: templates/appearance/login.html:23 +msgid "" +"You have just finished installing Mayan EDMS, " +"congratulations!" +msgstr "" + +#: templates/appearance/login.html:24 +msgid "Login using the following credentials:" +msgstr "" + +#: templates/appearance/login.html:25 +#, python-format +msgid "Username: %(account)s" +msgstr "" + +#: templates/appearance/login.html:26 +#, python-format +msgid "Email: %(email)s" +msgstr "" + +#: templates/appearance/login.html:27 +#, python-format +msgid "Password: %(password)s" +msgstr "" + +#: templates/appearance/login.html:28 +msgid "" +"Be sure to change the password to increase security and to disable this " +"message." +msgstr "" + +#: templates/appearance/login.html:37 templates/appearance/login.html.py:46 +msgid "Sign in" +msgstr "" + +#: templatetags/appearance_tags.py:16 +msgid "None" +msgstr "" diff --git a/mayan/apps/main/locale/id/LC_MESSAGES/django.mo b/mayan/apps/appearance/locale/fr/LC_MESSAGES/django.mo similarity index 51% rename from mayan/apps/main/locale/id/LC_MESSAGES/django.mo rename to mayan/apps/appearance/locale/fr/LC_MESSAGES/django.mo index 882ad1e6ab..396658b91c 100644 Binary files a/mayan/apps/main/locale/id/LC_MESSAGES/django.mo and b/mayan/apps/appearance/locale/fr/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/appearance/locale/fr/LC_MESSAGES/django.po b/mayan/apps/appearance/locale/fr/LC_MESSAGES/django.po new file mode 100644 index 0000000000..4e8a114965 --- /dev/null +++ b/mayan/apps/appearance/locale/fr/LC_MESSAGES/django.po @@ -0,0 +1,262 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# +# Translators: +msgid "" +msgstr "" +"Project-Id-Version: Mayan EDMS\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2015-09-24 16:24-0400\n" +"PO-Revision-Date: 2015-08-27 05:24+0000\n" +"Last-Translator: Roberto Rosario\n" +"Language-Team: French (http://www.transifex.com/rosarior/mayan-edms/language/fr/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: fr\n" +"Plural-Forms: nplurals=2; plural=(n > 1);\n" + +#: apps.py:12 +msgid "Appearance" +msgstr "" + +#: templates/403.html:5 templates/403.html.py:9 +msgid "Insufficient permissions" +msgstr "" + +#: templates/403.html:11 +msgid "You don't have enough permissions for this operation." +msgstr "" + +#: templates/404.html:5 templates/404.html.py:9 +msgid "Page not found" +msgstr "" + +#: templates/404.html:11 +msgid "Sorry, but the requested page could not be found." +msgstr "" + +#: templates/500.html:5 templates/500.html.py:9 +msgid "Server error" +msgstr "" + +#: templates/500.html:11 +msgid "" +"There's been an error. It's been reported to the site administrators via " +"e-mail and should be fixed shortly. Thanks for your patience." +msgstr "" + +#: templates/500.html:14 +msgid "" +"If you need assistance, you may reference this error via the following " +"identifier:" +msgstr "" + +#: templates/appearance/about.html:8 templates/appearance/about.html.py:57 +msgid "About" +msgstr "" + +#: templates/appearance/about.html:62 +msgid "Version" +msgstr "" + +#: templates/appearance/about.html:64 +#, python-format +msgid "Build number: %(build_number)s" +msgstr "" + +#: templates/appearance/about.html:88 +msgid "Released under the Apache 2.0 License" +msgstr "" + +#: templates/appearance/about.html:100 +msgid "Copyright © 2011-2015 Roberto Rosario." +msgstr "" + +#: templates/appearance/base.html:42 +msgid "Toggle navigation" +msgstr "" + +#: templates/appearance/base.html:71 +msgid "Anonymous" +msgstr "" + +#: templates/appearance/base.html:73 +msgid "User details" +msgstr "" + +#: templates/appearance/base.html:86 +msgid "Success" +msgstr "" + +#: templates/appearance/base.html:86 +msgid "Information" +msgstr "" + +#: templates/appearance/base.html:86 +msgid "Warning" +msgstr "" + +#: templates/appearance/base.html:86 +msgid "Error" +msgstr "" + +#: templates/appearance/base.html:115 +msgid "Actions" +msgstr "" + +#: templates/appearance/base.html:116 +msgid "Toggle Dropdown" +msgstr "" + +#: templates/appearance/calculate_form_title.html:7 +#, python-format +msgid "Details for: %(object)s" +msgstr "" + +#: templates/appearance/calculate_form_title.html:10 +#, python-format +msgid "Edit: %(object)s" +msgstr "" + +#: templates/appearance/calculate_form_title.html:12 +msgid "Create" +msgstr "" + +#: templates/appearance/generic_confirm.html:6 +#: templates/appearance/generic_confirm.html:13 +msgid "Confirm" +msgstr "" + +#: templates/appearance/generic_confirm.html:11 +msgid "Confirm delete" +msgstr "" + +#: templates/appearance/generic_confirm.html:27 +#, python-format +msgid "Delete: %(object)s?" +msgstr "" + +#: templates/appearance/generic_confirm.html:47 +msgid "Yes" +msgstr "" + +#: templates/appearance/generic_confirm.html:49 +msgid "No" +msgstr "" + +#: templates/appearance/generic_form_instance.html:39 +#: templates/appearance/generic_form_instance.html:46 +#: templates/appearance/generic_form_subtemplate.html:51 +#: templates/appearance/generic_multiform_subtemplate.html:43 +msgid "required" +msgstr "" + +#: templates/appearance/generic_form_subtemplate.html:71 +#: templates/appearance/generic_multiform_subtemplate.html:64 +msgid "Save" +msgstr "" + +#: templates/appearance/generic_form_subtemplate.html:71 +#: templates/appearance/generic_list_subtemplate.html:31 +#: templates/appearance/generic_multiform_subtemplate.html:64 +msgid "Submit" +msgstr "" + +#: templates/appearance/generic_form_subtemplate.html:74 +#: templates/appearance/generic_multiform_subtemplate.html:67 +msgid "Cancel" +msgstr "" + +#: templates/appearance/generic_list_subtemplate.html:12 +#, python-format +msgid "" +"Total (%(start)s - %(end)s out of %(total)s) (Page %(page_number)s of " +"%(total_pages)s)" +msgstr "" + +#: templates/appearance/generic_list_subtemplate.html:14 +#: templates/appearance/generic_list_subtemplate.html:17 +#, python-format +msgid "Total: %(total)s" +msgstr "" + +#: templates/appearance/generic_list_subtemplate.html:51 +msgid "Identifier" +msgstr "" + +#: templates/appearance/generic_list_subtemplate.html:108 +msgid "No results" +msgstr "" + +#: templates/appearance/home.html:8 templates/appearance/home.html.py:12 +msgid "Home" +msgstr "" + +#: templates/appearance/home.html:21 +msgid "Getting started" +msgstr "" + +#: templates/appearance/home.html:24 +msgid "Before you can fully use Mayan EDMS you need the following:" +msgstr "" + +#: templates/appearance/home.html:57 +msgid "Space separated terms" +msgstr "" + +#: templates/appearance/home.html:59 +msgid "Search" +msgstr "" + +#: templates/appearance/home.html:60 +msgid "Advanced" +msgstr "" + +#: templates/appearance/login.html:9 +msgid "Login" +msgstr "" + +#: templates/appearance/login.html:20 +msgid "First time login" +msgstr "" + +#: templates/appearance/login.html:23 +msgid "" +"You have just finished installing Mayan EDMS, " +"congratulations!" +msgstr "" + +#: templates/appearance/login.html:24 +msgid "Login using the following credentials:" +msgstr "" + +#: templates/appearance/login.html:25 +#, python-format +msgid "Username: %(account)s" +msgstr "" + +#: templates/appearance/login.html:26 +#, python-format +msgid "Email: %(email)s" +msgstr "" + +#: templates/appearance/login.html:27 +#, python-format +msgid "Password: %(password)s" +msgstr "" + +#: templates/appearance/login.html:28 +msgid "" +"Be sure to change the password to increase security and to disable this " +"message." +msgstr "" + +#: templates/appearance/login.html:37 templates/appearance/login.html.py:46 +msgid "Sign in" +msgstr "" + +#: templatetags/appearance_tags.py:16 +msgid "None" +msgstr "" diff --git a/mayan/apps/project_setup/locale/en/LC_MESSAGES/django.mo b/mayan/apps/appearance/locale/hu/LC_MESSAGES/django.mo similarity index 60% rename from mayan/apps/project_setup/locale/en/LC_MESSAGES/django.mo rename to mayan/apps/appearance/locale/hu/LC_MESSAGES/django.mo index 27c5ba31bf..7e67eec047 100644 Binary files a/mayan/apps/project_setup/locale/en/LC_MESSAGES/django.mo and b/mayan/apps/appearance/locale/hu/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/appearance/locale/hu/LC_MESSAGES/django.po b/mayan/apps/appearance/locale/hu/LC_MESSAGES/django.po new file mode 100644 index 0000000000..e2f24b89f8 --- /dev/null +++ b/mayan/apps/appearance/locale/hu/LC_MESSAGES/django.po @@ -0,0 +1,262 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# +# Translators: +msgid "" +msgstr "" +"Project-Id-Version: Mayan EDMS\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2015-09-24 16:24-0400\n" +"PO-Revision-Date: 2015-08-27 05:24+0000\n" +"Last-Translator: Roberto Rosario\n" +"Language-Team: Hungarian (http://www.transifex.com/rosarior/mayan-edms/language/hu/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: hu\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#: apps.py:12 +msgid "Appearance" +msgstr "" + +#: templates/403.html:5 templates/403.html.py:9 +msgid "Insufficient permissions" +msgstr "" + +#: templates/403.html:11 +msgid "You don't have enough permissions for this operation." +msgstr "" + +#: templates/404.html:5 templates/404.html.py:9 +msgid "Page not found" +msgstr "" + +#: templates/404.html:11 +msgid "Sorry, but the requested page could not be found." +msgstr "" + +#: templates/500.html:5 templates/500.html.py:9 +msgid "Server error" +msgstr "" + +#: templates/500.html:11 +msgid "" +"There's been an error. It's been reported to the site administrators via " +"e-mail and should be fixed shortly. Thanks for your patience." +msgstr "" + +#: templates/500.html:14 +msgid "" +"If you need assistance, you may reference this error via the following " +"identifier:" +msgstr "" + +#: templates/appearance/about.html:8 templates/appearance/about.html.py:57 +msgid "About" +msgstr "" + +#: templates/appearance/about.html:62 +msgid "Version" +msgstr "" + +#: templates/appearance/about.html:64 +#, python-format +msgid "Build number: %(build_number)s" +msgstr "" + +#: templates/appearance/about.html:88 +msgid "Released under the Apache 2.0 License" +msgstr "" + +#: templates/appearance/about.html:100 +msgid "Copyright © 2011-2015 Roberto Rosario." +msgstr "" + +#: templates/appearance/base.html:42 +msgid "Toggle navigation" +msgstr "" + +#: templates/appearance/base.html:71 +msgid "Anonymous" +msgstr "" + +#: templates/appearance/base.html:73 +msgid "User details" +msgstr "" + +#: templates/appearance/base.html:86 +msgid "Success" +msgstr "" + +#: templates/appearance/base.html:86 +msgid "Information" +msgstr "" + +#: templates/appearance/base.html:86 +msgid "Warning" +msgstr "" + +#: templates/appearance/base.html:86 +msgid "Error" +msgstr "" + +#: templates/appearance/base.html:115 +msgid "Actions" +msgstr "" + +#: templates/appearance/base.html:116 +msgid "Toggle Dropdown" +msgstr "" + +#: templates/appearance/calculate_form_title.html:7 +#, python-format +msgid "Details for: %(object)s" +msgstr "" + +#: templates/appearance/calculate_form_title.html:10 +#, python-format +msgid "Edit: %(object)s" +msgstr "" + +#: templates/appearance/calculate_form_title.html:12 +msgid "Create" +msgstr "" + +#: templates/appearance/generic_confirm.html:6 +#: templates/appearance/generic_confirm.html:13 +msgid "Confirm" +msgstr "" + +#: templates/appearance/generic_confirm.html:11 +msgid "Confirm delete" +msgstr "" + +#: templates/appearance/generic_confirm.html:27 +#, python-format +msgid "Delete: %(object)s?" +msgstr "" + +#: templates/appearance/generic_confirm.html:47 +msgid "Yes" +msgstr "" + +#: templates/appearance/generic_confirm.html:49 +msgid "No" +msgstr "" + +#: templates/appearance/generic_form_instance.html:39 +#: templates/appearance/generic_form_instance.html:46 +#: templates/appearance/generic_form_subtemplate.html:51 +#: templates/appearance/generic_multiform_subtemplate.html:43 +msgid "required" +msgstr "" + +#: templates/appearance/generic_form_subtemplate.html:71 +#: templates/appearance/generic_multiform_subtemplate.html:64 +msgid "Save" +msgstr "" + +#: templates/appearance/generic_form_subtemplate.html:71 +#: templates/appearance/generic_list_subtemplate.html:31 +#: templates/appearance/generic_multiform_subtemplate.html:64 +msgid "Submit" +msgstr "" + +#: templates/appearance/generic_form_subtemplate.html:74 +#: templates/appearance/generic_multiform_subtemplate.html:67 +msgid "Cancel" +msgstr "" + +#: templates/appearance/generic_list_subtemplate.html:12 +#, python-format +msgid "" +"Total (%(start)s - %(end)s out of %(total)s) (Page %(page_number)s of " +"%(total_pages)s)" +msgstr "" + +#: templates/appearance/generic_list_subtemplate.html:14 +#: templates/appearance/generic_list_subtemplate.html:17 +#, python-format +msgid "Total: %(total)s" +msgstr "" + +#: templates/appearance/generic_list_subtemplate.html:51 +msgid "Identifier" +msgstr "" + +#: templates/appearance/generic_list_subtemplate.html:108 +msgid "No results" +msgstr "" + +#: templates/appearance/home.html:8 templates/appearance/home.html.py:12 +msgid "Home" +msgstr "" + +#: templates/appearance/home.html:21 +msgid "Getting started" +msgstr "" + +#: templates/appearance/home.html:24 +msgid "Before you can fully use Mayan EDMS you need the following:" +msgstr "" + +#: templates/appearance/home.html:57 +msgid "Space separated terms" +msgstr "" + +#: templates/appearance/home.html:59 +msgid "Search" +msgstr "" + +#: templates/appearance/home.html:60 +msgid "Advanced" +msgstr "" + +#: templates/appearance/login.html:9 +msgid "Login" +msgstr "" + +#: templates/appearance/login.html:20 +msgid "First time login" +msgstr "" + +#: templates/appearance/login.html:23 +msgid "" +"You have just finished installing Mayan EDMS, " +"congratulations!" +msgstr "" + +#: templates/appearance/login.html:24 +msgid "Login using the following credentials:" +msgstr "" + +#: templates/appearance/login.html:25 +#, python-format +msgid "Username: %(account)s" +msgstr "" + +#: templates/appearance/login.html:26 +#, python-format +msgid "Email: %(email)s" +msgstr "" + +#: templates/appearance/login.html:27 +#, python-format +msgid "Password: %(password)s" +msgstr "" + +#: templates/appearance/login.html:28 +msgid "" +"Be sure to change the password to increase security and to disable this " +"message." +msgstr "" + +#: templates/appearance/login.html:37 templates/appearance/login.html.py:46 +msgid "Sign in" +msgstr "" + +#: templatetags/appearance_tags.py:16 +msgid "None" +msgstr "" diff --git a/mayan/apps/appearance/locale/id/LC_MESSAGES/django.mo b/mayan/apps/appearance/locale/id/LC_MESSAGES/django.mo new file mode 100644 index 0000000000..7979361ffe Binary files /dev/null and b/mayan/apps/appearance/locale/id/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/appearance/locale/id/LC_MESSAGES/django.po b/mayan/apps/appearance/locale/id/LC_MESSAGES/django.po new file mode 100644 index 0000000000..3db862a527 --- /dev/null +++ b/mayan/apps/appearance/locale/id/LC_MESSAGES/django.po @@ -0,0 +1,262 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# +# Translators: +msgid "" +msgstr "" +"Project-Id-Version: Mayan EDMS\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2015-09-24 16:24-0400\n" +"PO-Revision-Date: 2015-08-27 05:24+0000\n" +"Last-Translator: Roberto Rosario\n" +"Language-Team: Indonesian (http://www.transifex.com/rosarior/mayan-edms/language/id/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: id\n" +"Plural-Forms: nplurals=1; plural=0;\n" + +#: apps.py:12 +msgid "Appearance" +msgstr "" + +#: templates/403.html:5 templates/403.html.py:9 +msgid "Insufficient permissions" +msgstr "" + +#: templates/403.html:11 +msgid "You don't have enough permissions for this operation." +msgstr "" + +#: templates/404.html:5 templates/404.html.py:9 +msgid "Page not found" +msgstr "" + +#: templates/404.html:11 +msgid "Sorry, but the requested page could not be found." +msgstr "" + +#: templates/500.html:5 templates/500.html.py:9 +msgid "Server error" +msgstr "" + +#: templates/500.html:11 +msgid "" +"There's been an error. It's been reported to the site administrators via " +"e-mail and should be fixed shortly. Thanks for your patience." +msgstr "" + +#: templates/500.html:14 +msgid "" +"If you need assistance, you may reference this error via the following " +"identifier:" +msgstr "" + +#: templates/appearance/about.html:8 templates/appearance/about.html.py:57 +msgid "About" +msgstr "" + +#: templates/appearance/about.html:62 +msgid "Version" +msgstr "" + +#: templates/appearance/about.html:64 +#, python-format +msgid "Build number: %(build_number)s" +msgstr "" + +#: templates/appearance/about.html:88 +msgid "Released under the Apache 2.0 License" +msgstr "" + +#: templates/appearance/about.html:100 +msgid "Copyright © 2011-2015 Roberto Rosario." +msgstr "" + +#: templates/appearance/base.html:42 +msgid "Toggle navigation" +msgstr "" + +#: templates/appearance/base.html:71 +msgid "Anonymous" +msgstr "" + +#: templates/appearance/base.html:73 +msgid "User details" +msgstr "" + +#: templates/appearance/base.html:86 +msgid "Success" +msgstr "" + +#: templates/appearance/base.html:86 +msgid "Information" +msgstr "" + +#: templates/appearance/base.html:86 +msgid "Warning" +msgstr "" + +#: templates/appearance/base.html:86 +msgid "Error" +msgstr "" + +#: templates/appearance/base.html:115 +msgid "Actions" +msgstr "" + +#: templates/appearance/base.html:116 +msgid "Toggle Dropdown" +msgstr "" + +#: templates/appearance/calculate_form_title.html:7 +#, python-format +msgid "Details for: %(object)s" +msgstr "" + +#: templates/appearance/calculate_form_title.html:10 +#, python-format +msgid "Edit: %(object)s" +msgstr "" + +#: templates/appearance/calculate_form_title.html:12 +msgid "Create" +msgstr "" + +#: templates/appearance/generic_confirm.html:6 +#: templates/appearance/generic_confirm.html:13 +msgid "Confirm" +msgstr "" + +#: templates/appearance/generic_confirm.html:11 +msgid "Confirm delete" +msgstr "" + +#: templates/appearance/generic_confirm.html:27 +#, python-format +msgid "Delete: %(object)s?" +msgstr "" + +#: templates/appearance/generic_confirm.html:47 +msgid "Yes" +msgstr "" + +#: templates/appearance/generic_confirm.html:49 +msgid "No" +msgstr "" + +#: templates/appearance/generic_form_instance.html:39 +#: templates/appearance/generic_form_instance.html:46 +#: templates/appearance/generic_form_subtemplate.html:51 +#: templates/appearance/generic_multiform_subtemplate.html:43 +msgid "required" +msgstr "" + +#: templates/appearance/generic_form_subtemplate.html:71 +#: templates/appearance/generic_multiform_subtemplate.html:64 +msgid "Save" +msgstr "" + +#: templates/appearance/generic_form_subtemplate.html:71 +#: templates/appearance/generic_list_subtemplate.html:31 +#: templates/appearance/generic_multiform_subtemplate.html:64 +msgid "Submit" +msgstr "" + +#: templates/appearance/generic_form_subtemplate.html:74 +#: templates/appearance/generic_multiform_subtemplate.html:67 +msgid "Cancel" +msgstr "" + +#: templates/appearance/generic_list_subtemplate.html:12 +#, python-format +msgid "" +"Total (%(start)s - %(end)s out of %(total)s) (Page %(page_number)s of " +"%(total_pages)s)" +msgstr "" + +#: templates/appearance/generic_list_subtemplate.html:14 +#: templates/appearance/generic_list_subtemplate.html:17 +#, python-format +msgid "Total: %(total)s" +msgstr "" + +#: templates/appearance/generic_list_subtemplate.html:51 +msgid "Identifier" +msgstr "" + +#: templates/appearance/generic_list_subtemplate.html:108 +msgid "No results" +msgstr "" + +#: templates/appearance/home.html:8 templates/appearance/home.html.py:12 +msgid "Home" +msgstr "" + +#: templates/appearance/home.html:21 +msgid "Getting started" +msgstr "" + +#: templates/appearance/home.html:24 +msgid "Before you can fully use Mayan EDMS you need the following:" +msgstr "" + +#: templates/appearance/home.html:57 +msgid "Space separated terms" +msgstr "" + +#: templates/appearance/home.html:59 +msgid "Search" +msgstr "" + +#: templates/appearance/home.html:60 +msgid "Advanced" +msgstr "" + +#: templates/appearance/login.html:9 +msgid "Login" +msgstr "" + +#: templates/appearance/login.html:20 +msgid "First time login" +msgstr "" + +#: templates/appearance/login.html:23 +msgid "" +"You have just finished installing Mayan EDMS, " +"congratulations!" +msgstr "" + +#: templates/appearance/login.html:24 +msgid "Login using the following credentials:" +msgstr "" + +#: templates/appearance/login.html:25 +#, python-format +msgid "Username: %(account)s" +msgstr "" + +#: templates/appearance/login.html:26 +#, python-format +msgid "Email: %(email)s" +msgstr "" + +#: templates/appearance/login.html:27 +#, python-format +msgid "Password: %(password)s" +msgstr "" + +#: templates/appearance/login.html:28 +msgid "" +"Be sure to change the password to increase security and to disable this " +"message." +msgstr "" + +#: templates/appearance/login.html:37 templates/appearance/login.html.py:46 +msgid "Sign in" +msgstr "" + +#: templatetags/appearance_tags.py:16 +msgid "None" +msgstr "" diff --git a/mayan/apps/appearance/locale/it/LC_MESSAGES/django.mo b/mayan/apps/appearance/locale/it/LC_MESSAGES/django.mo new file mode 100644 index 0000000000..941ec96a7e Binary files /dev/null and b/mayan/apps/appearance/locale/it/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/appearance/locale/it/LC_MESSAGES/django.po b/mayan/apps/appearance/locale/it/LC_MESSAGES/django.po new file mode 100644 index 0000000000..e5f8e8f89b --- /dev/null +++ b/mayan/apps/appearance/locale/it/LC_MESSAGES/django.po @@ -0,0 +1,262 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# +# Translators: +msgid "" +msgstr "" +"Project-Id-Version: Mayan EDMS\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2015-09-24 16:24-0400\n" +"PO-Revision-Date: 2015-08-27 05:24+0000\n" +"Last-Translator: Roberto Rosario\n" +"Language-Team: Italian (http://www.transifex.com/rosarior/mayan-edms/language/it/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: it\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#: apps.py:12 +msgid "Appearance" +msgstr "" + +#: templates/403.html:5 templates/403.html.py:9 +msgid "Insufficient permissions" +msgstr "" + +#: templates/403.html:11 +msgid "You don't have enough permissions for this operation." +msgstr "" + +#: templates/404.html:5 templates/404.html.py:9 +msgid "Page not found" +msgstr "" + +#: templates/404.html:11 +msgid "Sorry, but the requested page could not be found." +msgstr "" + +#: templates/500.html:5 templates/500.html.py:9 +msgid "Server error" +msgstr "" + +#: templates/500.html:11 +msgid "" +"There's been an error. It's been reported to the site administrators via " +"e-mail and should be fixed shortly. Thanks for your patience." +msgstr "" + +#: templates/500.html:14 +msgid "" +"If you need assistance, you may reference this error via the following " +"identifier:" +msgstr "" + +#: templates/appearance/about.html:8 templates/appearance/about.html.py:57 +msgid "About" +msgstr "" + +#: templates/appearance/about.html:62 +msgid "Version" +msgstr "" + +#: templates/appearance/about.html:64 +#, python-format +msgid "Build number: %(build_number)s" +msgstr "" + +#: templates/appearance/about.html:88 +msgid "Released under the Apache 2.0 License" +msgstr "" + +#: templates/appearance/about.html:100 +msgid "Copyright © 2011-2015 Roberto Rosario." +msgstr "" + +#: templates/appearance/base.html:42 +msgid "Toggle navigation" +msgstr "" + +#: templates/appearance/base.html:71 +msgid "Anonymous" +msgstr "" + +#: templates/appearance/base.html:73 +msgid "User details" +msgstr "" + +#: templates/appearance/base.html:86 +msgid "Success" +msgstr "" + +#: templates/appearance/base.html:86 +msgid "Information" +msgstr "" + +#: templates/appearance/base.html:86 +msgid "Warning" +msgstr "" + +#: templates/appearance/base.html:86 +msgid "Error" +msgstr "" + +#: templates/appearance/base.html:115 +msgid "Actions" +msgstr "" + +#: templates/appearance/base.html:116 +msgid "Toggle Dropdown" +msgstr "" + +#: templates/appearance/calculate_form_title.html:7 +#, python-format +msgid "Details for: %(object)s" +msgstr "" + +#: templates/appearance/calculate_form_title.html:10 +#, python-format +msgid "Edit: %(object)s" +msgstr "" + +#: templates/appearance/calculate_form_title.html:12 +msgid "Create" +msgstr "" + +#: templates/appearance/generic_confirm.html:6 +#: templates/appearance/generic_confirm.html:13 +msgid "Confirm" +msgstr "" + +#: templates/appearance/generic_confirm.html:11 +msgid "Confirm delete" +msgstr "" + +#: templates/appearance/generic_confirm.html:27 +#, python-format +msgid "Delete: %(object)s?" +msgstr "" + +#: templates/appearance/generic_confirm.html:47 +msgid "Yes" +msgstr "" + +#: templates/appearance/generic_confirm.html:49 +msgid "No" +msgstr "" + +#: templates/appearance/generic_form_instance.html:39 +#: templates/appearance/generic_form_instance.html:46 +#: templates/appearance/generic_form_subtemplate.html:51 +#: templates/appearance/generic_multiform_subtemplate.html:43 +msgid "required" +msgstr "" + +#: templates/appearance/generic_form_subtemplate.html:71 +#: templates/appearance/generic_multiform_subtemplate.html:64 +msgid "Save" +msgstr "" + +#: templates/appearance/generic_form_subtemplate.html:71 +#: templates/appearance/generic_list_subtemplate.html:31 +#: templates/appearance/generic_multiform_subtemplate.html:64 +msgid "Submit" +msgstr "" + +#: templates/appearance/generic_form_subtemplate.html:74 +#: templates/appearance/generic_multiform_subtemplate.html:67 +msgid "Cancel" +msgstr "" + +#: templates/appearance/generic_list_subtemplate.html:12 +#, python-format +msgid "" +"Total (%(start)s - %(end)s out of %(total)s) (Page %(page_number)s of " +"%(total_pages)s)" +msgstr "" + +#: templates/appearance/generic_list_subtemplate.html:14 +#: templates/appearance/generic_list_subtemplate.html:17 +#, python-format +msgid "Total: %(total)s" +msgstr "" + +#: templates/appearance/generic_list_subtemplate.html:51 +msgid "Identifier" +msgstr "" + +#: templates/appearance/generic_list_subtemplate.html:108 +msgid "No results" +msgstr "" + +#: templates/appearance/home.html:8 templates/appearance/home.html.py:12 +msgid "Home" +msgstr "" + +#: templates/appearance/home.html:21 +msgid "Getting started" +msgstr "" + +#: templates/appearance/home.html:24 +msgid "Before you can fully use Mayan EDMS you need the following:" +msgstr "" + +#: templates/appearance/home.html:57 +msgid "Space separated terms" +msgstr "" + +#: templates/appearance/home.html:59 +msgid "Search" +msgstr "" + +#: templates/appearance/home.html:60 +msgid "Advanced" +msgstr "" + +#: templates/appearance/login.html:9 +msgid "Login" +msgstr "" + +#: templates/appearance/login.html:20 +msgid "First time login" +msgstr "" + +#: templates/appearance/login.html:23 +msgid "" +"You have just finished installing Mayan EDMS, " +"congratulations!" +msgstr "" + +#: templates/appearance/login.html:24 +msgid "Login using the following credentials:" +msgstr "" + +#: templates/appearance/login.html:25 +#, python-format +msgid "Username: %(account)s" +msgstr "" + +#: templates/appearance/login.html:26 +#, python-format +msgid "Email: %(email)s" +msgstr "" + +#: templates/appearance/login.html:27 +#, python-format +msgid "Password: %(password)s" +msgstr "" + +#: templates/appearance/login.html:28 +msgid "" +"Be sure to change the password to increase security and to disable this " +"message." +msgstr "" + +#: templates/appearance/login.html:37 templates/appearance/login.html.py:46 +msgid "Sign in" +msgstr "" + +#: templatetags/appearance_tags.py:16 +msgid "None" +msgstr "" diff --git a/mayan/apps/appearance/locale/nl_NL/LC_MESSAGES/django.mo b/mayan/apps/appearance/locale/nl_NL/LC_MESSAGES/django.mo new file mode 100644 index 0000000000..80bce6197b Binary files /dev/null and b/mayan/apps/appearance/locale/nl_NL/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/appearance/locale/nl_NL/LC_MESSAGES/django.po b/mayan/apps/appearance/locale/nl_NL/LC_MESSAGES/django.po new file mode 100644 index 0000000000..6ae74203b5 --- /dev/null +++ b/mayan/apps/appearance/locale/nl_NL/LC_MESSAGES/django.po @@ -0,0 +1,262 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# +# Translators: +msgid "" +msgstr "" +"Project-Id-Version: Mayan EDMS\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2015-09-24 16:24-0400\n" +"PO-Revision-Date: 2015-08-27 05:24+0000\n" +"Last-Translator: Roberto Rosario\n" +"Language-Team: Dutch (Netherlands) (http://www.transifex.com/rosarior/mayan-edms/language/nl_NL/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: nl_NL\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#: apps.py:12 +msgid "Appearance" +msgstr "" + +#: templates/403.html:5 templates/403.html.py:9 +msgid "Insufficient permissions" +msgstr "" + +#: templates/403.html:11 +msgid "You don't have enough permissions for this operation." +msgstr "" + +#: templates/404.html:5 templates/404.html.py:9 +msgid "Page not found" +msgstr "" + +#: templates/404.html:11 +msgid "Sorry, but the requested page could not be found." +msgstr "" + +#: templates/500.html:5 templates/500.html.py:9 +msgid "Server error" +msgstr "" + +#: templates/500.html:11 +msgid "" +"There's been an error. It's been reported to the site administrators via " +"e-mail and should be fixed shortly. Thanks for your patience." +msgstr "" + +#: templates/500.html:14 +msgid "" +"If you need assistance, you may reference this error via the following " +"identifier:" +msgstr "" + +#: templates/appearance/about.html:8 templates/appearance/about.html.py:57 +msgid "About" +msgstr "" + +#: templates/appearance/about.html:62 +msgid "Version" +msgstr "" + +#: templates/appearance/about.html:64 +#, python-format +msgid "Build number: %(build_number)s" +msgstr "" + +#: templates/appearance/about.html:88 +msgid "Released under the Apache 2.0 License" +msgstr "" + +#: templates/appearance/about.html:100 +msgid "Copyright © 2011-2015 Roberto Rosario." +msgstr "" + +#: templates/appearance/base.html:42 +msgid "Toggle navigation" +msgstr "" + +#: templates/appearance/base.html:71 +msgid "Anonymous" +msgstr "" + +#: templates/appearance/base.html:73 +msgid "User details" +msgstr "" + +#: templates/appearance/base.html:86 +msgid "Success" +msgstr "" + +#: templates/appearance/base.html:86 +msgid "Information" +msgstr "" + +#: templates/appearance/base.html:86 +msgid "Warning" +msgstr "" + +#: templates/appearance/base.html:86 +msgid "Error" +msgstr "" + +#: templates/appearance/base.html:115 +msgid "Actions" +msgstr "" + +#: templates/appearance/base.html:116 +msgid "Toggle Dropdown" +msgstr "" + +#: templates/appearance/calculate_form_title.html:7 +#, python-format +msgid "Details for: %(object)s" +msgstr "" + +#: templates/appearance/calculate_form_title.html:10 +#, python-format +msgid "Edit: %(object)s" +msgstr "" + +#: templates/appearance/calculate_form_title.html:12 +msgid "Create" +msgstr "" + +#: templates/appearance/generic_confirm.html:6 +#: templates/appearance/generic_confirm.html:13 +msgid "Confirm" +msgstr "" + +#: templates/appearance/generic_confirm.html:11 +msgid "Confirm delete" +msgstr "" + +#: templates/appearance/generic_confirm.html:27 +#, python-format +msgid "Delete: %(object)s?" +msgstr "" + +#: templates/appearance/generic_confirm.html:47 +msgid "Yes" +msgstr "" + +#: templates/appearance/generic_confirm.html:49 +msgid "No" +msgstr "" + +#: templates/appearance/generic_form_instance.html:39 +#: templates/appearance/generic_form_instance.html:46 +#: templates/appearance/generic_form_subtemplate.html:51 +#: templates/appearance/generic_multiform_subtemplate.html:43 +msgid "required" +msgstr "" + +#: templates/appearance/generic_form_subtemplate.html:71 +#: templates/appearance/generic_multiform_subtemplate.html:64 +msgid "Save" +msgstr "" + +#: templates/appearance/generic_form_subtemplate.html:71 +#: templates/appearance/generic_list_subtemplate.html:31 +#: templates/appearance/generic_multiform_subtemplate.html:64 +msgid "Submit" +msgstr "" + +#: templates/appearance/generic_form_subtemplate.html:74 +#: templates/appearance/generic_multiform_subtemplate.html:67 +msgid "Cancel" +msgstr "" + +#: templates/appearance/generic_list_subtemplate.html:12 +#, python-format +msgid "" +"Total (%(start)s - %(end)s out of %(total)s) (Page %(page_number)s of " +"%(total_pages)s)" +msgstr "" + +#: templates/appearance/generic_list_subtemplate.html:14 +#: templates/appearance/generic_list_subtemplate.html:17 +#, python-format +msgid "Total: %(total)s" +msgstr "" + +#: templates/appearance/generic_list_subtemplate.html:51 +msgid "Identifier" +msgstr "" + +#: templates/appearance/generic_list_subtemplate.html:108 +msgid "No results" +msgstr "" + +#: templates/appearance/home.html:8 templates/appearance/home.html.py:12 +msgid "Home" +msgstr "" + +#: templates/appearance/home.html:21 +msgid "Getting started" +msgstr "" + +#: templates/appearance/home.html:24 +msgid "Before you can fully use Mayan EDMS you need the following:" +msgstr "" + +#: templates/appearance/home.html:57 +msgid "Space separated terms" +msgstr "" + +#: templates/appearance/home.html:59 +msgid "Search" +msgstr "" + +#: templates/appearance/home.html:60 +msgid "Advanced" +msgstr "" + +#: templates/appearance/login.html:9 +msgid "Login" +msgstr "" + +#: templates/appearance/login.html:20 +msgid "First time login" +msgstr "" + +#: templates/appearance/login.html:23 +msgid "" +"You have just finished installing Mayan EDMS, " +"congratulations!" +msgstr "" + +#: templates/appearance/login.html:24 +msgid "Login using the following credentials:" +msgstr "" + +#: templates/appearance/login.html:25 +#, python-format +msgid "Username: %(account)s" +msgstr "" + +#: templates/appearance/login.html:26 +#, python-format +msgid "Email: %(email)s" +msgstr "" + +#: templates/appearance/login.html:27 +#, python-format +msgid "Password: %(password)s" +msgstr "" + +#: templates/appearance/login.html:28 +msgid "" +"Be sure to change the password to increase security and to disable this " +"message." +msgstr "" + +#: templates/appearance/login.html:37 templates/appearance/login.html.py:46 +msgid "Sign in" +msgstr "" + +#: templatetags/appearance_tags.py:16 +msgid "None" +msgstr "" diff --git a/mayan/apps/project_setup/locale/pl/LC_MESSAGES/django.mo b/mayan/apps/appearance/locale/pl/LC_MESSAGES/django.mo similarity index 55% rename from mayan/apps/project_setup/locale/pl/LC_MESSAGES/django.mo rename to mayan/apps/appearance/locale/pl/LC_MESSAGES/django.mo index 03b604e533..ec8489608a 100644 Binary files a/mayan/apps/project_setup/locale/pl/LC_MESSAGES/django.mo and b/mayan/apps/appearance/locale/pl/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/appearance/locale/pl/LC_MESSAGES/django.po b/mayan/apps/appearance/locale/pl/LC_MESSAGES/django.po new file mode 100644 index 0000000000..2d9334739f --- /dev/null +++ b/mayan/apps/appearance/locale/pl/LC_MESSAGES/django.po @@ -0,0 +1,262 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# +# Translators: +msgid "" +msgstr "" +"Project-Id-Version: Mayan EDMS\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2015-09-24 16:24-0400\n" +"PO-Revision-Date: 2015-08-27 05:24+0000\n" +"Last-Translator: Roberto Rosario\n" +"Language-Team: Polish (http://www.transifex.com/rosarior/mayan-edms/language/pl/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: pl\n" +"Plural-Forms: nplurals=3; plural=(n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" + +#: apps.py:12 +msgid "Appearance" +msgstr "" + +#: templates/403.html:5 templates/403.html.py:9 +msgid "Insufficient permissions" +msgstr "" + +#: templates/403.html:11 +msgid "You don't have enough permissions for this operation." +msgstr "" + +#: templates/404.html:5 templates/404.html.py:9 +msgid "Page not found" +msgstr "" + +#: templates/404.html:11 +msgid "Sorry, but the requested page could not be found." +msgstr "" + +#: templates/500.html:5 templates/500.html.py:9 +msgid "Server error" +msgstr "" + +#: templates/500.html:11 +msgid "" +"There's been an error. It's been reported to the site administrators via " +"e-mail and should be fixed shortly. Thanks for your patience." +msgstr "" + +#: templates/500.html:14 +msgid "" +"If you need assistance, you may reference this error via the following " +"identifier:" +msgstr "" + +#: templates/appearance/about.html:8 templates/appearance/about.html.py:57 +msgid "About" +msgstr "" + +#: templates/appearance/about.html:62 +msgid "Version" +msgstr "" + +#: templates/appearance/about.html:64 +#, python-format +msgid "Build number: %(build_number)s" +msgstr "" + +#: templates/appearance/about.html:88 +msgid "Released under the Apache 2.0 License" +msgstr "" + +#: templates/appearance/about.html:100 +msgid "Copyright © 2011-2015 Roberto Rosario." +msgstr "" + +#: templates/appearance/base.html:42 +msgid "Toggle navigation" +msgstr "" + +#: templates/appearance/base.html:71 +msgid "Anonymous" +msgstr "" + +#: templates/appearance/base.html:73 +msgid "User details" +msgstr "" + +#: templates/appearance/base.html:86 +msgid "Success" +msgstr "" + +#: templates/appearance/base.html:86 +msgid "Information" +msgstr "" + +#: templates/appearance/base.html:86 +msgid "Warning" +msgstr "" + +#: templates/appearance/base.html:86 +msgid "Error" +msgstr "" + +#: templates/appearance/base.html:115 +msgid "Actions" +msgstr "" + +#: templates/appearance/base.html:116 +msgid "Toggle Dropdown" +msgstr "" + +#: templates/appearance/calculate_form_title.html:7 +#, python-format +msgid "Details for: %(object)s" +msgstr "" + +#: templates/appearance/calculate_form_title.html:10 +#, python-format +msgid "Edit: %(object)s" +msgstr "" + +#: templates/appearance/calculate_form_title.html:12 +msgid "Create" +msgstr "" + +#: templates/appearance/generic_confirm.html:6 +#: templates/appearance/generic_confirm.html:13 +msgid "Confirm" +msgstr "" + +#: templates/appearance/generic_confirm.html:11 +msgid "Confirm delete" +msgstr "" + +#: templates/appearance/generic_confirm.html:27 +#, python-format +msgid "Delete: %(object)s?" +msgstr "" + +#: templates/appearance/generic_confirm.html:47 +msgid "Yes" +msgstr "" + +#: templates/appearance/generic_confirm.html:49 +msgid "No" +msgstr "" + +#: templates/appearance/generic_form_instance.html:39 +#: templates/appearance/generic_form_instance.html:46 +#: templates/appearance/generic_form_subtemplate.html:51 +#: templates/appearance/generic_multiform_subtemplate.html:43 +msgid "required" +msgstr "" + +#: templates/appearance/generic_form_subtemplate.html:71 +#: templates/appearance/generic_multiform_subtemplate.html:64 +msgid "Save" +msgstr "" + +#: templates/appearance/generic_form_subtemplate.html:71 +#: templates/appearance/generic_list_subtemplate.html:31 +#: templates/appearance/generic_multiform_subtemplate.html:64 +msgid "Submit" +msgstr "" + +#: templates/appearance/generic_form_subtemplate.html:74 +#: templates/appearance/generic_multiform_subtemplate.html:67 +msgid "Cancel" +msgstr "" + +#: templates/appearance/generic_list_subtemplate.html:12 +#, python-format +msgid "" +"Total (%(start)s - %(end)s out of %(total)s) (Page %(page_number)s of " +"%(total_pages)s)" +msgstr "" + +#: templates/appearance/generic_list_subtemplate.html:14 +#: templates/appearance/generic_list_subtemplate.html:17 +#, python-format +msgid "Total: %(total)s" +msgstr "" + +#: templates/appearance/generic_list_subtemplate.html:51 +msgid "Identifier" +msgstr "" + +#: templates/appearance/generic_list_subtemplate.html:108 +msgid "No results" +msgstr "" + +#: templates/appearance/home.html:8 templates/appearance/home.html.py:12 +msgid "Home" +msgstr "" + +#: templates/appearance/home.html:21 +msgid "Getting started" +msgstr "" + +#: templates/appearance/home.html:24 +msgid "Before you can fully use Mayan EDMS you need the following:" +msgstr "" + +#: templates/appearance/home.html:57 +msgid "Space separated terms" +msgstr "" + +#: templates/appearance/home.html:59 +msgid "Search" +msgstr "" + +#: templates/appearance/home.html:60 +msgid "Advanced" +msgstr "" + +#: templates/appearance/login.html:9 +msgid "Login" +msgstr "" + +#: templates/appearance/login.html:20 +msgid "First time login" +msgstr "" + +#: templates/appearance/login.html:23 +msgid "" +"You have just finished installing Mayan EDMS, " +"congratulations!" +msgstr "" + +#: templates/appearance/login.html:24 +msgid "Login using the following credentials:" +msgstr "" + +#: templates/appearance/login.html:25 +#, python-format +msgid "Username: %(account)s" +msgstr "" + +#: templates/appearance/login.html:26 +#, python-format +msgid "Email: %(email)s" +msgstr "" + +#: templates/appearance/login.html:27 +#, python-format +msgid "Password: %(password)s" +msgstr "" + +#: templates/appearance/login.html:28 +msgid "" +"Be sure to change the password to increase security and to disable this " +"message." +msgstr "" + +#: templates/appearance/login.html:37 templates/appearance/login.html.py:46 +msgid "Sign in" +msgstr "" + +#: templatetags/appearance_tags.py:16 +msgid "None" +msgstr "" diff --git a/mayan/apps/checkouts/locale/sq/LC_MESSAGES/django.mo b/mayan/apps/appearance/locale/pt/LC_MESSAGES/django.mo similarity index 60% rename from mayan/apps/checkouts/locale/sq/LC_MESSAGES/django.mo rename to mayan/apps/appearance/locale/pt/LC_MESSAGES/django.mo index 7c8c4a3890..749ba8734a 100644 Binary files a/mayan/apps/checkouts/locale/sq/LC_MESSAGES/django.mo and b/mayan/apps/appearance/locale/pt/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/appearance/locale/pt/LC_MESSAGES/django.po b/mayan/apps/appearance/locale/pt/LC_MESSAGES/django.po new file mode 100644 index 0000000000..c9c815e335 --- /dev/null +++ b/mayan/apps/appearance/locale/pt/LC_MESSAGES/django.po @@ -0,0 +1,262 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# +# Translators: +msgid "" +msgstr "" +"Project-Id-Version: Mayan EDMS\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2015-09-24 16:24-0400\n" +"PO-Revision-Date: 2015-08-27 05:24+0000\n" +"Last-Translator: Roberto Rosario\n" +"Language-Team: Portuguese (http://www.transifex.com/rosarior/mayan-edms/language/pt/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: pt\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#: apps.py:12 +msgid "Appearance" +msgstr "" + +#: templates/403.html:5 templates/403.html.py:9 +msgid "Insufficient permissions" +msgstr "" + +#: templates/403.html:11 +msgid "You don't have enough permissions for this operation." +msgstr "" + +#: templates/404.html:5 templates/404.html.py:9 +msgid "Page not found" +msgstr "" + +#: templates/404.html:11 +msgid "Sorry, but the requested page could not be found." +msgstr "" + +#: templates/500.html:5 templates/500.html.py:9 +msgid "Server error" +msgstr "" + +#: templates/500.html:11 +msgid "" +"There's been an error. It's been reported to the site administrators via " +"e-mail and should be fixed shortly. Thanks for your patience." +msgstr "" + +#: templates/500.html:14 +msgid "" +"If you need assistance, you may reference this error via the following " +"identifier:" +msgstr "" + +#: templates/appearance/about.html:8 templates/appearance/about.html.py:57 +msgid "About" +msgstr "" + +#: templates/appearance/about.html:62 +msgid "Version" +msgstr "" + +#: templates/appearance/about.html:64 +#, python-format +msgid "Build number: %(build_number)s" +msgstr "" + +#: templates/appearance/about.html:88 +msgid "Released under the Apache 2.0 License" +msgstr "" + +#: templates/appearance/about.html:100 +msgid "Copyright © 2011-2015 Roberto Rosario." +msgstr "" + +#: templates/appearance/base.html:42 +msgid "Toggle navigation" +msgstr "" + +#: templates/appearance/base.html:71 +msgid "Anonymous" +msgstr "" + +#: templates/appearance/base.html:73 +msgid "User details" +msgstr "" + +#: templates/appearance/base.html:86 +msgid "Success" +msgstr "" + +#: templates/appearance/base.html:86 +msgid "Information" +msgstr "" + +#: templates/appearance/base.html:86 +msgid "Warning" +msgstr "" + +#: templates/appearance/base.html:86 +msgid "Error" +msgstr "" + +#: templates/appearance/base.html:115 +msgid "Actions" +msgstr "" + +#: templates/appearance/base.html:116 +msgid "Toggle Dropdown" +msgstr "" + +#: templates/appearance/calculate_form_title.html:7 +#, python-format +msgid "Details for: %(object)s" +msgstr "" + +#: templates/appearance/calculate_form_title.html:10 +#, python-format +msgid "Edit: %(object)s" +msgstr "" + +#: templates/appearance/calculate_form_title.html:12 +msgid "Create" +msgstr "" + +#: templates/appearance/generic_confirm.html:6 +#: templates/appearance/generic_confirm.html:13 +msgid "Confirm" +msgstr "" + +#: templates/appearance/generic_confirm.html:11 +msgid "Confirm delete" +msgstr "" + +#: templates/appearance/generic_confirm.html:27 +#, python-format +msgid "Delete: %(object)s?" +msgstr "" + +#: templates/appearance/generic_confirm.html:47 +msgid "Yes" +msgstr "" + +#: templates/appearance/generic_confirm.html:49 +msgid "No" +msgstr "" + +#: templates/appearance/generic_form_instance.html:39 +#: templates/appearance/generic_form_instance.html:46 +#: templates/appearance/generic_form_subtemplate.html:51 +#: templates/appearance/generic_multiform_subtemplate.html:43 +msgid "required" +msgstr "" + +#: templates/appearance/generic_form_subtemplate.html:71 +#: templates/appearance/generic_multiform_subtemplate.html:64 +msgid "Save" +msgstr "" + +#: templates/appearance/generic_form_subtemplate.html:71 +#: templates/appearance/generic_list_subtemplate.html:31 +#: templates/appearance/generic_multiform_subtemplate.html:64 +msgid "Submit" +msgstr "" + +#: templates/appearance/generic_form_subtemplate.html:74 +#: templates/appearance/generic_multiform_subtemplate.html:67 +msgid "Cancel" +msgstr "" + +#: templates/appearance/generic_list_subtemplate.html:12 +#, python-format +msgid "" +"Total (%(start)s - %(end)s out of %(total)s) (Page %(page_number)s of " +"%(total_pages)s)" +msgstr "" + +#: templates/appearance/generic_list_subtemplate.html:14 +#: templates/appearance/generic_list_subtemplate.html:17 +#, python-format +msgid "Total: %(total)s" +msgstr "" + +#: templates/appearance/generic_list_subtemplate.html:51 +msgid "Identifier" +msgstr "" + +#: templates/appearance/generic_list_subtemplate.html:108 +msgid "No results" +msgstr "" + +#: templates/appearance/home.html:8 templates/appearance/home.html.py:12 +msgid "Home" +msgstr "" + +#: templates/appearance/home.html:21 +msgid "Getting started" +msgstr "" + +#: templates/appearance/home.html:24 +msgid "Before you can fully use Mayan EDMS you need the following:" +msgstr "" + +#: templates/appearance/home.html:57 +msgid "Space separated terms" +msgstr "" + +#: templates/appearance/home.html:59 +msgid "Search" +msgstr "" + +#: templates/appearance/home.html:60 +msgid "Advanced" +msgstr "" + +#: templates/appearance/login.html:9 +msgid "Login" +msgstr "" + +#: templates/appearance/login.html:20 +msgid "First time login" +msgstr "" + +#: templates/appearance/login.html:23 +msgid "" +"You have just finished installing Mayan EDMS, " +"congratulations!" +msgstr "" + +#: templates/appearance/login.html:24 +msgid "Login using the following credentials:" +msgstr "" + +#: templates/appearance/login.html:25 +#, python-format +msgid "Username: %(account)s" +msgstr "" + +#: templates/appearance/login.html:26 +#, python-format +msgid "Email: %(email)s" +msgstr "" + +#: templates/appearance/login.html:27 +#, python-format +msgid "Password: %(password)s" +msgstr "" + +#: templates/appearance/login.html:28 +msgid "" +"Be sure to change the password to increase security and to disable this " +"message." +msgstr "" + +#: templates/appearance/login.html:37 templates/appearance/login.html.py:46 +msgid "Sign in" +msgstr "" + +#: templatetags/appearance_tags.py:16 +msgid "None" +msgstr "" diff --git a/mayan/apps/appearance/locale/pt_BR/LC_MESSAGES/django.mo b/mayan/apps/appearance/locale/pt_BR/LC_MESSAGES/django.mo new file mode 100644 index 0000000000..4617e29619 Binary files /dev/null and b/mayan/apps/appearance/locale/pt_BR/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/appearance/locale/pt_BR/LC_MESSAGES/django.po b/mayan/apps/appearance/locale/pt_BR/LC_MESSAGES/django.po new file mode 100644 index 0000000000..adbe4a0cff --- /dev/null +++ b/mayan/apps/appearance/locale/pt_BR/LC_MESSAGES/django.po @@ -0,0 +1,262 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# +# Translators: +msgid "" +msgstr "" +"Project-Id-Version: Mayan EDMS\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2015-09-24 16:24-0400\n" +"PO-Revision-Date: 2015-08-27 05:24+0000\n" +"Last-Translator: Roberto Rosario\n" +"Language-Team: Portuguese (Brazil) (http://www.transifex.com/rosarior/mayan-edms/language/pt_BR/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: pt_BR\n" +"Plural-Forms: nplurals=2; plural=(n > 1);\n" + +#: apps.py:12 +msgid "Appearance" +msgstr "" + +#: templates/403.html:5 templates/403.html.py:9 +msgid "Insufficient permissions" +msgstr "" + +#: templates/403.html:11 +msgid "You don't have enough permissions for this operation." +msgstr "" + +#: templates/404.html:5 templates/404.html.py:9 +msgid "Page not found" +msgstr "" + +#: templates/404.html:11 +msgid "Sorry, but the requested page could not be found." +msgstr "" + +#: templates/500.html:5 templates/500.html.py:9 +msgid "Server error" +msgstr "" + +#: templates/500.html:11 +msgid "" +"There's been an error. It's been reported to the site administrators via " +"e-mail and should be fixed shortly. Thanks for your patience." +msgstr "" + +#: templates/500.html:14 +msgid "" +"If you need assistance, you may reference this error via the following " +"identifier:" +msgstr "" + +#: templates/appearance/about.html:8 templates/appearance/about.html.py:57 +msgid "About" +msgstr "" + +#: templates/appearance/about.html:62 +msgid "Version" +msgstr "" + +#: templates/appearance/about.html:64 +#, python-format +msgid "Build number: %(build_number)s" +msgstr "" + +#: templates/appearance/about.html:88 +msgid "Released under the Apache 2.0 License" +msgstr "" + +#: templates/appearance/about.html:100 +msgid "Copyright © 2011-2015 Roberto Rosario." +msgstr "" + +#: templates/appearance/base.html:42 +msgid "Toggle navigation" +msgstr "" + +#: templates/appearance/base.html:71 +msgid "Anonymous" +msgstr "" + +#: templates/appearance/base.html:73 +msgid "User details" +msgstr "" + +#: templates/appearance/base.html:86 +msgid "Success" +msgstr "" + +#: templates/appearance/base.html:86 +msgid "Information" +msgstr "" + +#: templates/appearance/base.html:86 +msgid "Warning" +msgstr "" + +#: templates/appearance/base.html:86 +msgid "Error" +msgstr "" + +#: templates/appearance/base.html:115 +msgid "Actions" +msgstr "" + +#: templates/appearance/base.html:116 +msgid "Toggle Dropdown" +msgstr "" + +#: templates/appearance/calculate_form_title.html:7 +#, python-format +msgid "Details for: %(object)s" +msgstr "" + +#: templates/appearance/calculate_form_title.html:10 +#, python-format +msgid "Edit: %(object)s" +msgstr "" + +#: templates/appearance/calculate_form_title.html:12 +msgid "Create" +msgstr "" + +#: templates/appearance/generic_confirm.html:6 +#: templates/appearance/generic_confirm.html:13 +msgid "Confirm" +msgstr "" + +#: templates/appearance/generic_confirm.html:11 +msgid "Confirm delete" +msgstr "" + +#: templates/appearance/generic_confirm.html:27 +#, python-format +msgid "Delete: %(object)s?" +msgstr "" + +#: templates/appearance/generic_confirm.html:47 +msgid "Yes" +msgstr "" + +#: templates/appearance/generic_confirm.html:49 +msgid "No" +msgstr "" + +#: templates/appearance/generic_form_instance.html:39 +#: templates/appearance/generic_form_instance.html:46 +#: templates/appearance/generic_form_subtemplate.html:51 +#: templates/appearance/generic_multiform_subtemplate.html:43 +msgid "required" +msgstr "" + +#: templates/appearance/generic_form_subtemplate.html:71 +#: templates/appearance/generic_multiform_subtemplate.html:64 +msgid "Save" +msgstr "" + +#: templates/appearance/generic_form_subtemplate.html:71 +#: templates/appearance/generic_list_subtemplate.html:31 +#: templates/appearance/generic_multiform_subtemplate.html:64 +msgid "Submit" +msgstr "" + +#: templates/appearance/generic_form_subtemplate.html:74 +#: templates/appearance/generic_multiform_subtemplate.html:67 +msgid "Cancel" +msgstr "" + +#: templates/appearance/generic_list_subtemplate.html:12 +#, python-format +msgid "" +"Total (%(start)s - %(end)s out of %(total)s) (Page %(page_number)s of " +"%(total_pages)s)" +msgstr "" + +#: templates/appearance/generic_list_subtemplate.html:14 +#: templates/appearance/generic_list_subtemplate.html:17 +#, python-format +msgid "Total: %(total)s" +msgstr "" + +#: templates/appearance/generic_list_subtemplate.html:51 +msgid "Identifier" +msgstr "" + +#: templates/appearance/generic_list_subtemplate.html:108 +msgid "No results" +msgstr "" + +#: templates/appearance/home.html:8 templates/appearance/home.html.py:12 +msgid "Home" +msgstr "" + +#: templates/appearance/home.html:21 +msgid "Getting started" +msgstr "" + +#: templates/appearance/home.html:24 +msgid "Before you can fully use Mayan EDMS you need the following:" +msgstr "" + +#: templates/appearance/home.html:57 +msgid "Space separated terms" +msgstr "" + +#: templates/appearance/home.html:59 +msgid "Search" +msgstr "" + +#: templates/appearance/home.html:60 +msgid "Advanced" +msgstr "" + +#: templates/appearance/login.html:9 +msgid "Login" +msgstr "" + +#: templates/appearance/login.html:20 +msgid "First time login" +msgstr "" + +#: templates/appearance/login.html:23 +msgid "" +"You have just finished installing Mayan EDMS, " +"congratulations!" +msgstr "" + +#: templates/appearance/login.html:24 +msgid "Login using the following credentials:" +msgstr "" + +#: templates/appearance/login.html:25 +#, python-format +msgid "Username: %(account)s" +msgstr "" + +#: templates/appearance/login.html:26 +#, python-format +msgid "Email: %(email)s" +msgstr "" + +#: templates/appearance/login.html:27 +#, python-format +msgid "Password: %(password)s" +msgstr "" + +#: templates/appearance/login.html:28 +msgid "" +"Be sure to change the password to increase security and to disable this " +"message." +msgstr "" + +#: templates/appearance/login.html:37 templates/appearance/login.html.py:46 +msgid "Sign in" +msgstr "" + +#: templatetags/appearance_tags.py:16 +msgid "None" +msgstr "" diff --git a/mayan/apps/project_setup/locale/ro_RO/LC_MESSAGES/django.mo b/mayan/apps/appearance/locale/ro_RO/LC_MESSAGES/django.mo similarity index 52% rename from mayan/apps/project_setup/locale/ro_RO/LC_MESSAGES/django.mo rename to mayan/apps/appearance/locale/ro_RO/LC_MESSAGES/django.mo index fb471888bf..a39c0053ca 100644 Binary files a/mayan/apps/project_setup/locale/ro_RO/LC_MESSAGES/django.mo and b/mayan/apps/appearance/locale/ro_RO/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/appearance/locale/ro_RO/LC_MESSAGES/django.po b/mayan/apps/appearance/locale/ro_RO/LC_MESSAGES/django.po new file mode 100644 index 0000000000..72572f1754 --- /dev/null +++ b/mayan/apps/appearance/locale/ro_RO/LC_MESSAGES/django.po @@ -0,0 +1,262 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# +# Translators: +msgid "" +msgstr "" +"Project-Id-Version: Mayan EDMS\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2015-09-24 16:24-0400\n" +"PO-Revision-Date: 2015-08-27 05:24+0000\n" +"Last-Translator: Roberto Rosario\n" +"Language-Team: Romanian (Romania) (http://www.transifex.com/rosarior/mayan-edms/language/ro_RO/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: ro_RO\n" +"Plural-Forms: nplurals=3; plural=(n==1?0:(((n%100>19)||((n%100==0)&&(n!=0)))?2:1));\n" + +#: apps.py:12 +msgid "Appearance" +msgstr "" + +#: templates/403.html:5 templates/403.html.py:9 +msgid "Insufficient permissions" +msgstr "" + +#: templates/403.html:11 +msgid "You don't have enough permissions for this operation." +msgstr "" + +#: templates/404.html:5 templates/404.html.py:9 +msgid "Page not found" +msgstr "" + +#: templates/404.html:11 +msgid "Sorry, but the requested page could not be found." +msgstr "" + +#: templates/500.html:5 templates/500.html.py:9 +msgid "Server error" +msgstr "" + +#: templates/500.html:11 +msgid "" +"There's been an error. It's been reported to the site administrators via " +"e-mail and should be fixed shortly. Thanks for your patience." +msgstr "" + +#: templates/500.html:14 +msgid "" +"If you need assistance, you may reference this error via the following " +"identifier:" +msgstr "" + +#: templates/appearance/about.html:8 templates/appearance/about.html.py:57 +msgid "About" +msgstr "" + +#: templates/appearance/about.html:62 +msgid "Version" +msgstr "" + +#: templates/appearance/about.html:64 +#, python-format +msgid "Build number: %(build_number)s" +msgstr "" + +#: templates/appearance/about.html:88 +msgid "Released under the Apache 2.0 License" +msgstr "" + +#: templates/appearance/about.html:100 +msgid "Copyright © 2011-2015 Roberto Rosario." +msgstr "" + +#: templates/appearance/base.html:42 +msgid "Toggle navigation" +msgstr "" + +#: templates/appearance/base.html:71 +msgid "Anonymous" +msgstr "" + +#: templates/appearance/base.html:73 +msgid "User details" +msgstr "" + +#: templates/appearance/base.html:86 +msgid "Success" +msgstr "" + +#: templates/appearance/base.html:86 +msgid "Information" +msgstr "" + +#: templates/appearance/base.html:86 +msgid "Warning" +msgstr "" + +#: templates/appearance/base.html:86 +msgid "Error" +msgstr "" + +#: templates/appearance/base.html:115 +msgid "Actions" +msgstr "" + +#: templates/appearance/base.html:116 +msgid "Toggle Dropdown" +msgstr "" + +#: templates/appearance/calculate_form_title.html:7 +#, python-format +msgid "Details for: %(object)s" +msgstr "" + +#: templates/appearance/calculate_form_title.html:10 +#, python-format +msgid "Edit: %(object)s" +msgstr "" + +#: templates/appearance/calculate_form_title.html:12 +msgid "Create" +msgstr "" + +#: templates/appearance/generic_confirm.html:6 +#: templates/appearance/generic_confirm.html:13 +msgid "Confirm" +msgstr "" + +#: templates/appearance/generic_confirm.html:11 +msgid "Confirm delete" +msgstr "" + +#: templates/appearance/generic_confirm.html:27 +#, python-format +msgid "Delete: %(object)s?" +msgstr "" + +#: templates/appearance/generic_confirm.html:47 +msgid "Yes" +msgstr "" + +#: templates/appearance/generic_confirm.html:49 +msgid "No" +msgstr "" + +#: templates/appearance/generic_form_instance.html:39 +#: templates/appearance/generic_form_instance.html:46 +#: templates/appearance/generic_form_subtemplate.html:51 +#: templates/appearance/generic_multiform_subtemplate.html:43 +msgid "required" +msgstr "" + +#: templates/appearance/generic_form_subtemplate.html:71 +#: templates/appearance/generic_multiform_subtemplate.html:64 +msgid "Save" +msgstr "" + +#: templates/appearance/generic_form_subtemplate.html:71 +#: templates/appearance/generic_list_subtemplate.html:31 +#: templates/appearance/generic_multiform_subtemplate.html:64 +msgid "Submit" +msgstr "" + +#: templates/appearance/generic_form_subtemplate.html:74 +#: templates/appearance/generic_multiform_subtemplate.html:67 +msgid "Cancel" +msgstr "" + +#: templates/appearance/generic_list_subtemplate.html:12 +#, python-format +msgid "" +"Total (%(start)s - %(end)s out of %(total)s) (Page %(page_number)s of " +"%(total_pages)s)" +msgstr "" + +#: templates/appearance/generic_list_subtemplate.html:14 +#: templates/appearance/generic_list_subtemplate.html:17 +#, python-format +msgid "Total: %(total)s" +msgstr "" + +#: templates/appearance/generic_list_subtemplate.html:51 +msgid "Identifier" +msgstr "" + +#: templates/appearance/generic_list_subtemplate.html:108 +msgid "No results" +msgstr "" + +#: templates/appearance/home.html:8 templates/appearance/home.html.py:12 +msgid "Home" +msgstr "" + +#: templates/appearance/home.html:21 +msgid "Getting started" +msgstr "" + +#: templates/appearance/home.html:24 +msgid "Before you can fully use Mayan EDMS you need the following:" +msgstr "" + +#: templates/appearance/home.html:57 +msgid "Space separated terms" +msgstr "" + +#: templates/appearance/home.html:59 +msgid "Search" +msgstr "" + +#: templates/appearance/home.html:60 +msgid "Advanced" +msgstr "" + +#: templates/appearance/login.html:9 +msgid "Login" +msgstr "" + +#: templates/appearance/login.html:20 +msgid "First time login" +msgstr "" + +#: templates/appearance/login.html:23 +msgid "" +"You have just finished installing Mayan EDMS, " +"congratulations!" +msgstr "" + +#: templates/appearance/login.html:24 +msgid "Login using the following credentials:" +msgstr "" + +#: templates/appearance/login.html:25 +#, python-format +msgid "Username: %(account)s" +msgstr "" + +#: templates/appearance/login.html:26 +#, python-format +msgid "Email: %(email)s" +msgstr "" + +#: templates/appearance/login.html:27 +#, python-format +msgid "Password: %(password)s" +msgstr "" + +#: templates/appearance/login.html:28 +msgid "" +"Be sure to change the password to increase security and to disable this " +"message." +msgstr "" + +#: templates/appearance/login.html:37 templates/appearance/login.html.py:46 +msgid "Sign in" +msgstr "" + +#: templatetags/appearance_tags.py:16 +msgid "None" +msgstr "" diff --git a/mayan/apps/appearance/locale/ru/LC_MESSAGES/django.mo b/mayan/apps/appearance/locale/ru/LC_MESSAGES/django.mo new file mode 100644 index 0000000000..11959fe3bc Binary files /dev/null and b/mayan/apps/appearance/locale/ru/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/appearance/locale/ru/LC_MESSAGES/django.po b/mayan/apps/appearance/locale/ru/LC_MESSAGES/django.po new file mode 100644 index 0000000000..fa39d3ff39 --- /dev/null +++ b/mayan/apps/appearance/locale/ru/LC_MESSAGES/django.po @@ -0,0 +1,262 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# +# Translators: +msgid "" +msgstr "" +"Project-Id-Version: Mayan EDMS\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2015-09-24 16:24-0400\n" +"PO-Revision-Date: 2015-08-27 05:24+0000\n" +"Last-Translator: Roberto Rosario\n" +"Language-Team: Russian (http://www.transifex.com/rosarior/mayan-edms/language/ru/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: ru\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" + +#: apps.py:12 +msgid "Appearance" +msgstr "" + +#: templates/403.html:5 templates/403.html.py:9 +msgid "Insufficient permissions" +msgstr "" + +#: templates/403.html:11 +msgid "You don't have enough permissions for this operation." +msgstr "" + +#: templates/404.html:5 templates/404.html.py:9 +msgid "Page not found" +msgstr "" + +#: templates/404.html:11 +msgid "Sorry, but the requested page could not be found." +msgstr "" + +#: templates/500.html:5 templates/500.html.py:9 +msgid "Server error" +msgstr "" + +#: templates/500.html:11 +msgid "" +"There's been an error. It's been reported to the site administrators via " +"e-mail and should be fixed shortly. Thanks for your patience." +msgstr "" + +#: templates/500.html:14 +msgid "" +"If you need assistance, you may reference this error via the following " +"identifier:" +msgstr "" + +#: templates/appearance/about.html:8 templates/appearance/about.html.py:57 +msgid "About" +msgstr "" + +#: templates/appearance/about.html:62 +msgid "Version" +msgstr "" + +#: templates/appearance/about.html:64 +#, python-format +msgid "Build number: %(build_number)s" +msgstr "" + +#: templates/appearance/about.html:88 +msgid "Released under the Apache 2.0 License" +msgstr "" + +#: templates/appearance/about.html:100 +msgid "Copyright © 2011-2015 Roberto Rosario." +msgstr "" + +#: templates/appearance/base.html:42 +msgid "Toggle navigation" +msgstr "" + +#: templates/appearance/base.html:71 +msgid "Anonymous" +msgstr "" + +#: templates/appearance/base.html:73 +msgid "User details" +msgstr "" + +#: templates/appearance/base.html:86 +msgid "Success" +msgstr "" + +#: templates/appearance/base.html:86 +msgid "Information" +msgstr "" + +#: templates/appearance/base.html:86 +msgid "Warning" +msgstr "" + +#: templates/appearance/base.html:86 +msgid "Error" +msgstr "" + +#: templates/appearance/base.html:115 +msgid "Actions" +msgstr "" + +#: templates/appearance/base.html:116 +msgid "Toggle Dropdown" +msgstr "" + +#: templates/appearance/calculate_form_title.html:7 +#, python-format +msgid "Details for: %(object)s" +msgstr "" + +#: templates/appearance/calculate_form_title.html:10 +#, python-format +msgid "Edit: %(object)s" +msgstr "" + +#: templates/appearance/calculate_form_title.html:12 +msgid "Create" +msgstr "" + +#: templates/appearance/generic_confirm.html:6 +#: templates/appearance/generic_confirm.html:13 +msgid "Confirm" +msgstr "" + +#: templates/appearance/generic_confirm.html:11 +msgid "Confirm delete" +msgstr "" + +#: templates/appearance/generic_confirm.html:27 +#, python-format +msgid "Delete: %(object)s?" +msgstr "" + +#: templates/appearance/generic_confirm.html:47 +msgid "Yes" +msgstr "" + +#: templates/appearance/generic_confirm.html:49 +msgid "No" +msgstr "" + +#: templates/appearance/generic_form_instance.html:39 +#: templates/appearance/generic_form_instance.html:46 +#: templates/appearance/generic_form_subtemplate.html:51 +#: templates/appearance/generic_multiform_subtemplate.html:43 +msgid "required" +msgstr "" + +#: templates/appearance/generic_form_subtemplate.html:71 +#: templates/appearance/generic_multiform_subtemplate.html:64 +msgid "Save" +msgstr "" + +#: templates/appearance/generic_form_subtemplate.html:71 +#: templates/appearance/generic_list_subtemplate.html:31 +#: templates/appearance/generic_multiform_subtemplate.html:64 +msgid "Submit" +msgstr "" + +#: templates/appearance/generic_form_subtemplate.html:74 +#: templates/appearance/generic_multiform_subtemplate.html:67 +msgid "Cancel" +msgstr "" + +#: templates/appearance/generic_list_subtemplate.html:12 +#, python-format +msgid "" +"Total (%(start)s - %(end)s out of %(total)s) (Page %(page_number)s of " +"%(total_pages)s)" +msgstr "" + +#: templates/appearance/generic_list_subtemplate.html:14 +#: templates/appearance/generic_list_subtemplate.html:17 +#, python-format +msgid "Total: %(total)s" +msgstr "" + +#: templates/appearance/generic_list_subtemplate.html:51 +msgid "Identifier" +msgstr "" + +#: templates/appearance/generic_list_subtemplate.html:108 +msgid "No results" +msgstr "" + +#: templates/appearance/home.html:8 templates/appearance/home.html.py:12 +msgid "Home" +msgstr "" + +#: templates/appearance/home.html:21 +msgid "Getting started" +msgstr "" + +#: templates/appearance/home.html:24 +msgid "Before you can fully use Mayan EDMS you need the following:" +msgstr "" + +#: templates/appearance/home.html:57 +msgid "Space separated terms" +msgstr "" + +#: templates/appearance/home.html:59 +msgid "Search" +msgstr "" + +#: templates/appearance/home.html:60 +msgid "Advanced" +msgstr "" + +#: templates/appearance/login.html:9 +msgid "Login" +msgstr "" + +#: templates/appearance/login.html:20 +msgid "First time login" +msgstr "" + +#: templates/appearance/login.html:23 +msgid "" +"You have just finished installing Mayan EDMS, " +"congratulations!" +msgstr "" + +#: templates/appearance/login.html:24 +msgid "Login using the following credentials:" +msgstr "" + +#: templates/appearance/login.html:25 +#, python-format +msgid "Username: %(account)s" +msgstr "" + +#: templates/appearance/login.html:26 +#, python-format +msgid "Email: %(email)s" +msgstr "" + +#: templates/appearance/login.html:27 +#, python-format +msgid "Password: %(password)s" +msgstr "" + +#: templates/appearance/login.html:28 +msgid "" +"Be sure to change the password to increase security and to disable this " +"message." +msgstr "" + +#: templates/appearance/login.html:37 templates/appearance/login.html.py:46 +msgid "Sign in" +msgstr "" + +#: templatetags/appearance_tags.py:16 +msgid "None" +msgstr "" diff --git a/mayan/apps/main/locale/sl_SI/LC_MESSAGES/django.mo b/mayan/apps/appearance/locale/sl_SI/LC_MESSAGES/django.mo similarity index 53% rename from mayan/apps/main/locale/sl_SI/LC_MESSAGES/django.mo rename to mayan/apps/appearance/locale/sl_SI/LC_MESSAGES/django.mo index 8855e54e31..c406208a91 100644 Binary files a/mayan/apps/main/locale/sl_SI/LC_MESSAGES/django.mo and b/mayan/apps/appearance/locale/sl_SI/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/appearance/locale/sl_SI/LC_MESSAGES/django.po b/mayan/apps/appearance/locale/sl_SI/LC_MESSAGES/django.po new file mode 100644 index 0000000000..f026c3e090 --- /dev/null +++ b/mayan/apps/appearance/locale/sl_SI/LC_MESSAGES/django.po @@ -0,0 +1,262 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# +# Translators: +msgid "" +msgstr "" +"Project-Id-Version: Mayan EDMS\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2015-09-24 16:24-0400\n" +"PO-Revision-Date: 2015-08-27 05:24+0000\n" +"Last-Translator: Roberto Rosario\n" +"Language-Team: Slovenian (Slovenia) (http://www.transifex.com/rosarior/mayan-edms/language/sl_SI/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: sl_SI\n" +"Plural-Forms: nplurals=4; plural=(n%100==1 ? 0 : n%100==2 ? 1 : n%100==3 || n%100==4 ? 2 : 3);\n" + +#: apps.py:12 +msgid "Appearance" +msgstr "" + +#: templates/403.html:5 templates/403.html.py:9 +msgid "Insufficient permissions" +msgstr "" + +#: templates/403.html:11 +msgid "You don't have enough permissions for this operation." +msgstr "" + +#: templates/404.html:5 templates/404.html.py:9 +msgid "Page not found" +msgstr "" + +#: templates/404.html:11 +msgid "Sorry, but the requested page could not be found." +msgstr "" + +#: templates/500.html:5 templates/500.html.py:9 +msgid "Server error" +msgstr "" + +#: templates/500.html:11 +msgid "" +"There's been an error. It's been reported to the site administrators via " +"e-mail and should be fixed shortly. Thanks for your patience." +msgstr "" + +#: templates/500.html:14 +msgid "" +"If you need assistance, you may reference this error via the following " +"identifier:" +msgstr "" + +#: templates/appearance/about.html:8 templates/appearance/about.html.py:57 +msgid "About" +msgstr "" + +#: templates/appearance/about.html:62 +msgid "Version" +msgstr "" + +#: templates/appearance/about.html:64 +#, python-format +msgid "Build number: %(build_number)s" +msgstr "" + +#: templates/appearance/about.html:88 +msgid "Released under the Apache 2.0 License" +msgstr "" + +#: templates/appearance/about.html:100 +msgid "Copyright © 2011-2015 Roberto Rosario." +msgstr "" + +#: templates/appearance/base.html:42 +msgid "Toggle navigation" +msgstr "" + +#: templates/appearance/base.html:71 +msgid "Anonymous" +msgstr "" + +#: templates/appearance/base.html:73 +msgid "User details" +msgstr "" + +#: templates/appearance/base.html:86 +msgid "Success" +msgstr "" + +#: templates/appearance/base.html:86 +msgid "Information" +msgstr "" + +#: templates/appearance/base.html:86 +msgid "Warning" +msgstr "" + +#: templates/appearance/base.html:86 +msgid "Error" +msgstr "" + +#: templates/appearance/base.html:115 +msgid "Actions" +msgstr "" + +#: templates/appearance/base.html:116 +msgid "Toggle Dropdown" +msgstr "" + +#: templates/appearance/calculate_form_title.html:7 +#, python-format +msgid "Details for: %(object)s" +msgstr "" + +#: templates/appearance/calculate_form_title.html:10 +#, python-format +msgid "Edit: %(object)s" +msgstr "" + +#: templates/appearance/calculate_form_title.html:12 +msgid "Create" +msgstr "" + +#: templates/appearance/generic_confirm.html:6 +#: templates/appearance/generic_confirm.html:13 +msgid "Confirm" +msgstr "" + +#: templates/appearance/generic_confirm.html:11 +msgid "Confirm delete" +msgstr "" + +#: templates/appearance/generic_confirm.html:27 +#, python-format +msgid "Delete: %(object)s?" +msgstr "" + +#: templates/appearance/generic_confirm.html:47 +msgid "Yes" +msgstr "" + +#: templates/appearance/generic_confirm.html:49 +msgid "No" +msgstr "" + +#: templates/appearance/generic_form_instance.html:39 +#: templates/appearance/generic_form_instance.html:46 +#: templates/appearance/generic_form_subtemplate.html:51 +#: templates/appearance/generic_multiform_subtemplate.html:43 +msgid "required" +msgstr "" + +#: templates/appearance/generic_form_subtemplate.html:71 +#: templates/appearance/generic_multiform_subtemplate.html:64 +msgid "Save" +msgstr "" + +#: templates/appearance/generic_form_subtemplate.html:71 +#: templates/appearance/generic_list_subtemplate.html:31 +#: templates/appearance/generic_multiform_subtemplate.html:64 +msgid "Submit" +msgstr "" + +#: templates/appearance/generic_form_subtemplate.html:74 +#: templates/appearance/generic_multiform_subtemplate.html:67 +msgid "Cancel" +msgstr "" + +#: templates/appearance/generic_list_subtemplate.html:12 +#, python-format +msgid "" +"Total (%(start)s - %(end)s out of %(total)s) (Page %(page_number)s of " +"%(total_pages)s)" +msgstr "" + +#: templates/appearance/generic_list_subtemplate.html:14 +#: templates/appearance/generic_list_subtemplate.html:17 +#, python-format +msgid "Total: %(total)s" +msgstr "" + +#: templates/appearance/generic_list_subtemplate.html:51 +msgid "Identifier" +msgstr "" + +#: templates/appearance/generic_list_subtemplate.html:108 +msgid "No results" +msgstr "" + +#: templates/appearance/home.html:8 templates/appearance/home.html.py:12 +msgid "Home" +msgstr "" + +#: templates/appearance/home.html:21 +msgid "Getting started" +msgstr "" + +#: templates/appearance/home.html:24 +msgid "Before you can fully use Mayan EDMS you need the following:" +msgstr "" + +#: templates/appearance/home.html:57 +msgid "Space separated terms" +msgstr "" + +#: templates/appearance/home.html:59 +msgid "Search" +msgstr "" + +#: templates/appearance/home.html:60 +msgid "Advanced" +msgstr "" + +#: templates/appearance/login.html:9 +msgid "Login" +msgstr "" + +#: templates/appearance/login.html:20 +msgid "First time login" +msgstr "" + +#: templates/appearance/login.html:23 +msgid "" +"You have just finished installing Mayan EDMS, " +"congratulations!" +msgstr "" + +#: templates/appearance/login.html:24 +msgid "Login using the following credentials:" +msgstr "" + +#: templates/appearance/login.html:25 +#, python-format +msgid "Username: %(account)s" +msgstr "" + +#: templates/appearance/login.html:26 +#, python-format +msgid "Email: %(email)s" +msgstr "" + +#: templates/appearance/login.html:27 +#, python-format +msgid "Password: %(password)s" +msgstr "" + +#: templates/appearance/login.html:28 +msgid "" +"Be sure to change the password to increase security and to disable this " +"message." +msgstr "" + +#: templates/appearance/login.html:37 templates/appearance/login.html.py:46 +msgid "Sign in" +msgstr "" + +#: templatetags/appearance_tags.py:16 +msgid "None" +msgstr "" diff --git a/mayan/apps/appearance/locale/vi_VN/LC_MESSAGES/django.mo b/mayan/apps/appearance/locale/vi_VN/LC_MESSAGES/django.mo new file mode 100644 index 0000000000..ca915f8579 Binary files /dev/null and b/mayan/apps/appearance/locale/vi_VN/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/appearance/locale/vi_VN/LC_MESSAGES/django.po b/mayan/apps/appearance/locale/vi_VN/LC_MESSAGES/django.po new file mode 100644 index 0000000000..4a06bef3cd --- /dev/null +++ b/mayan/apps/appearance/locale/vi_VN/LC_MESSAGES/django.po @@ -0,0 +1,262 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# +# Translators: +msgid "" +msgstr "" +"Project-Id-Version: Mayan EDMS\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2015-09-24 16:24-0400\n" +"PO-Revision-Date: 2015-08-27 05:24+0000\n" +"Last-Translator: Roberto Rosario\n" +"Language-Team: Vietnamese (Viet Nam) (http://www.transifex.com/rosarior/mayan-edms/language/vi_VN/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: vi_VN\n" +"Plural-Forms: nplurals=1; plural=0;\n" + +#: apps.py:12 +msgid "Appearance" +msgstr "" + +#: templates/403.html:5 templates/403.html.py:9 +msgid "Insufficient permissions" +msgstr "" + +#: templates/403.html:11 +msgid "You don't have enough permissions for this operation." +msgstr "" + +#: templates/404.html:5 templates/404.html.py:9 +msgid "Page not found" +msgstr "" + +#: templates/404.html:11 +msgid "Sorry, but the requested page could not be found." +msgstr "" + +#: templates/500.html:5 templates/500.html.py:9 +msgid "Server error" +msgstr "" + +#: templates/500.html:11 +msgid "" +"There's been an error. It's been reported to the site administrators via " +"e-mail and should be fixed shortly. Thanks for your patience." +msgstr "" + +#: templates/500.html:14 +msgid "" +"If you need assistance, you may reference this error via the following " +"identifier:" +msgstr "" + +#: templates/appearance/about.html:8 templates/appearance/about.html.py:57 +msgid "About" +msgstr "" + +#: templates/appearance/about.html:62 +msgid "Version" +msgstr "" + +#: templates/appearance/about.html:64 +#, python-format +msgid "Build number: %(build_number)s" +msgstr "" + +#: templates/appearance/about.html:88 +msgid "Released under the Apache 2.0 License" +msgstr "" + +#: templates/appearance/about.html:100 +msgid "Copyright © 2011-2015 Roberto Rosario." +msgstr "" + +#: templates/appearance/base.html:42 +msgid "Toggle navigation" +msgstr "" + +#: templates/appearance/base.html:71 +msgid "Anonymous" +msgstr "" + +#: templates/appearance/base.html:73 +msgid "User details" +msgstr "" + +#: templates/appearance/base.html:86 +msgid "Success" +msgstr "" + +#: templates/appearance/base.html:86 +msgid "Information" +msgstr "" + +#: templates/appearance/base.html:86 +msgid "Warning" +msgstr "" + +#: templates/appearance/base.html:86 +msgid "Error" +msgstr "" + +#: templates/appearance/base.html:115 +msgid "Actions" +msgstr "" + +#: templates/appearance/base.html:116 +msgid "Toggle Dropdown" +msgstr "" + +#: templates/appearance/calculate_form_title.html:7 +#, python-format +msgid "Details for: %(object)s" +msgstr "" + +#: templates/appearance/calculate_form_title.html:10 +#, python-format +msgid "Edit: %(object)s" +msgstr "" + +#: templates/appearance/calculate_form_title.html:12 +msgid "Create" +msgstr "" + +#: templates/appearance/generic_confirm.html:6 +#: templates/appearance/generic_confirm.html:13 +msgid "Confirm" +msgstr "" + +#: templates/appearance/generic_confirm.html:11 +msgid "Confirm delete" +msgstr "" + +#: templates/appearance/generic_confirm.html:27 +#, python-format +msgid "Delete: %(object)s?" +msgstr "" + +#: templates/appearance/generic_confirm.html:47 +msgid "Yes" +msgstr "" + +#: templates/appearance/generic_confirm.html:49 +msgid "No" +msgstr "" + +#: templates/appearance/generic_form_instance.html:39 +#: templates/appearance/generic_form_instance.html:46 +#: templates/appearance/generic_form_subtemplate.html:51 +#: templates/appearance/generic_multiform_subtemplate.html:43 +msgid "required" +msgstr "" + +#: templates/appearance/generic_form_subtemplate.html:71 +#: templates/appearance/generic_multiform_subtemplate.html:64 +msgid "Save" +msgstr "" + +#: templates/appearance/generic_form_subtemplate.html:71 +#: templates/appearance/generic_list_subtemplate.html:31 +#: templates/appearance/generic_multiform_subtemplate.html:64 +msgid "Submit" +msgstr "" + +#: templates/appearance/generic_form_subtemplate.html:74 +#: templates/appearance/generic_multiform_subtemplate.html:67 +msgid "Cancel" +msgstr "" + +#: templates/appearance/generic_list_subtemplate.html:12 +#, python-format +msgid "" +"Total (%(start)s - %(end)s out of %(total)s) (Page %(page_number)s of " +"%(total_pages)s)" +msgstr "" + +#: templates/appearance/generic_list_subtemplate.html:14 +#: templates/appearance/generic_list_subtemplate.html:17 +#, python-format +msgid "Total: %(total)s" +msgstr "" + +#: templates/appearance/generic_list_subtemplate.html:51 +msgid "Identifier" +msgstr "" + +#: templates/appearance/generic_list_subtemplate.html:108 +msgid "No results" +msgstr "" + +#: templates/appearance/home.html:8 templates/appearance/home.html.py:12 +msgid "Home" +msgstr "" + +#: templates/appearance/home.html:21 +msgid "Getting started" +msgstr "" + +#: templates/appearance/home.html:24 +msgid "Before you can fully use Mayan EDMS you need the following:" +msgstr "" + +#: templates/appearance/home.html:57 +msgid "Space separated terms" +msgstr "" + +#: templates/appearance/home.html:59 +msgid "Search" +msgstr "" + +#: templates/appearance/home.html:60 +msgid "Advanced" +msgstr "" + +#: templates/appearance/login.html:9 +msgid "Login" +msgstr "" + +#: templates/appearance/login.html:20 +msgid "First time login" +msgstr "" + +#: templates/appearance/login.html:23 +msgid "" +"You have just finished installing Mayan EDMS, " +"congratulations!" +msgstr "" + +#: templates/appearance/login.html:24 +msgid "Login using the following credentials:" +msgstr "" + +#: templates/appearance/login.html:25 +#, python-format +msgid "Username: %(account)s" +msgstr "" + +#: templates/appearance/login.html:26 +#, python-format +msgid "Email: %(email)s" +msgstr "" + +#: templates/appearance/login.html:27 +#, python-format +msgid "Password: %(password)s" +msgstr "" + +#: templates/appearance/login.html:28 +msgid "" +"Be sure to change the password to increase security and to disable this " +"message." +msgstr "" + +#: templates/appearance/login.html:37 templates/appearance/login.html.py:46 +msgid "Sign in" +msgstr "" + +#: templatetags/appearance_tags.py:16 +msgid "None" +msgstr "" diff --git a/mayan/apps/appearance/locale/zh_CN/LC_MESSAGES/django.mo b/mayan/apps/appearance/locale/zh_CN/LC_MESSAGES/django.mo new file mode 100644 index 0000000000..ab44ac3f95 Binary files /dev/null and b/mayan/apps/appearance/locale/zh_CN/LC_MESSAGES/django.mo differ diff --git a/mayan/apps/appearance/locale/zh_CN/LC_MESSAGES/django.po b/mayan/apps/appearance/locale/zh_CN/LC_MESSAGES/django.po new file mode 100644 index 0000000000..4f0633e247 --- /dev/null +++ b/mayan/apps/appearance/locale/zh_CN/LC_MESSAGES/django.po @@ -0,0 +1,262 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# +# Translators: +msgid "" +msgstr "" +"Project-Id-Version: Mayan EDMS\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2015-09-24 16:24-0400\n" +"PO-Revision-Date: 2015-08-27 05:24+0000\n" +"Last-Translator: Roberto Rosario\n" +"Language-Team: Chinese (China) (http://www.transifex.com/rosarior/mayan-edms/language/zh_CN/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: zh_CN\n" +"Plural-Forms: nplurals=1; plural=0;\n" + +#: apps.py:12 +msgid "Appearance" +msgstr "" + +#: templates/403.html:5 templates/403.html.py:9 +msgid "Insufficient permissions" +msgstr "" + +#: templates/403.html:11 +msgid "You don't have enough permissions for this operation." +msgstr "" + +#: templates/404.html:5 templates/404.html.py:9 +msgid "Page not found" +msgstr "" + +#: templates/404.html:11 +msgid "Sorry, but the requested page could not be found." +msgstr "" + +#: templates/500.html:5 templates/500.html.py:9 +msgid "Server error" +msgstr "" + +#: templates/500.html:11 +msgid "" +"There's been an error. It's been reported to the site administrators via " +"e-mail and should be fixed shortly. Thanks for your patience." +msgstr "" + +#: templates/500.html:14 +msgid "" +"If you need assistance, you may reference this error via the following " +"identifier:" +msgstr "" + +#: templates/appearance/about.html:8 templates/appearance/about.html.py:57 +msgid "About" +msgstr "" + +#: templates/appearance/about.html:62 +msgid "Version" +msgstr "" + +#: templates/appearance/about.html:64 +#, python-format +msgid "Build number: %(build_number)s" +msgstr "" + +#: templates/appearance/about.html:88 +msgid "Released under the Apache 2.0 License" +msgstr "" + +#: templates/appearance/about.html:100 +msgid "Copyright © 2011-2015 Roberto Rosario." +msgstr "" + +#: templates/appearance/base.html:42 +msgid "Toggle navigation" +msgstr "" + +#: templates/appearance/base.html:71 +msgid "Anonymous" +msgstr "" + +#: templates/appearance/base.html:73 +msgid "User details" +msgstr "" + +#: templates/appearance/base.html:86 +msgid "Success" +msgstr "" + +#: templates/appearance/base.html:86 +msgid "Information" +msgstr "" + +#: templates/appearance/base.html:86 +msgid "Warning" +msgstr "" + +#: templates/appearance/base.html:86 +msgid "Error" +msgstr "" + +#: templates/appearance/base.html:115 +msgid "Actions" +msgstr "" + +#: templates/appearance/base.html:116 +msgid "Toggle Dropdown" +msgstr "" + +#: templates/appearance/calculate_form_title.html:7 +#, python-format +msgid "Details for: %(object)s" +msgstr "" + +#: templates/appearance/calculate_form_title.html:10 +#, python-format +msgid "Edit: %(object)s" +msgstr "" + +#: templates/appearance/calculate_form_title.html:12 +msgid "Create" +msgstr "" + +#: templates/appearance/generic_confirm.html:6 +#: templates/appearance/generic_confirm.html:13 +msgid "Confirm" +msgstr "" + +#: templates/appearance/generic_confirm.html:11 +msgid "Confirm delete" +msgstr "" + +#: templates/appearance/generic_confirm.html:27 +#, python-format +msgid "Delete: %(object)s?" +msgstr "" + +#: templates/appearance/generic_confirm.html:47 +msgid "Yes" +msgstr "" + +#: templates/appearance/generic_confirm.html:49 +msgid "No" +msgstr "" + +#: templates/appearance/generic_form_instance.html:39 +#: templates/appearance/generic_form_instance.html:46 +#: templates/appearance/generic_form_subtemplate.html:51 +#: templates/appearance/generic_multiform_subtemplate.html:43 +msgid "required" +msgstr "" + +#: templates/appearance/generic_form_subtemplate.html:71 +#: templates/appearance/generic_multiform_subtemplate.html:64 +msgid "Save" +msgstr "" + +#: templates/appearance/generic_form_subtemplate.html:71 +#: templates/appearance/generic_list_subtemplate.html:31 +#: templates/appearance/generic_multiform_subtemplate.html:64 +msgid "Submit" +msgstr "" + +#: templates/appearance/generic_form_subtemplate.html:74 +#: templates/appearance/generic_multiform_subtemplate.html:67 +msgid "Cancel" +msgstr "" + +#: templates/appearance/generic_list_subtemplate.html:12 +#, python-format +msgid "" +"Total (%(start)s - %(end)s out of %(total)s) (Page %(page_number)s of " +"%(total_pages)s)" +msgstr "" + +#: templates/appearance/generic_list_subtemplate.html:14 +#: templates/appearance/generic_list_subtemplate.html:17 +#, python-format +msgid "Total: %(total)s" +msgstr "" + +#: templates/appearance/generic_list_subtemplate.html:51 +msgid "Identifier" +msgstr "" + +#: templates/appearance/generic_list_subtemplate.html:108 +msgid "No results" +msgstr "" + +#: templates/appearance/home.html:8 templates/appearance/home.html.py:12 +msgid "Home" +msgstr "" + +#: templates/appearance/home.html:21 +msgid "Getting started" +msgstr "" + +#: templates/appearance/home.html:24 +msgid "Before you can fully use Mayan EDMS you need the following:" +msgstr "" + +#: templates/appearance/home.html:57 +msgid "Space separated terms" +msgstr "" + +#: templates/appearance/home.html:59 +msgid "Search" +msgstr "" + +#: templates/appearance/home.html:60 +msgid "Advanced" +msgstr "" + +#: templates/appearance/login.html:9 +msgid "Login" +msgstr "" + +#: templates/appearance/login.html:20 +msgid "First time login" +msgstr "" + +#: templates/appearance/login.html:23 +msgid "" +"You have just finished installing Mayan EDMS, " +"congratulations!" +msgstr "" + +#: templates/appearance/login.html:24 +msgid "Login using the following credentials:" +msgstr "" + +#: templates/appearance/login.html:25 +#, python-format +msgid "Username: %(account)s" +msgstr "" + +#: templates/appearance/login.html:26 +#, python-format +msgid "Email: %(email)s" +msgstr "" + +#: templates/appearance/login.html:27 +#, python-format +msgid "Password: %(password)s" +msgstr "" + +#: templates/appearance/login.html:28 +msgid "" +"Be sure to change the password to increase security and to disable this " +"message." +msgstr "" + +#: templates/appearance/login.html:37 templates/appearance/login.html.py:46 +msgid "Sign in" +msgstr "" + +#: templatetags/appearance_tags.py:16 +msgid "None" +msgstr "" diff --git a/mayan/apps/appearance/static/appearance/css/base.css b/mayan/apps/appearance/static/appearance/css/base.css new file mode 100644 index 0000000000..75bc2456fd --- /dev/null +++ b/mayan/apps/appearance/static/appearance/css/base.css @@ -0,0 +1,136 @@ +@font-face { + font-family: 'IM Fell English SC'; + font-style: normal; + font-weight: normal; + src: + local('IM FELL English SC'), + local('IM_FELL_English_SC'), + url('../fonts/IM_Fell_English_SC.eot?#iefix') format('embedded-opentype'), + url('../fonts/IM_Fell_English_SC.woff') format('woff'), + url('../fonts/IM_Fell_English_SC.svg#IMFellEnglishSC') format('svg'), + url('../fonts/IM_Fell_English_SC.ttf') format('truetype'); +} + +/* Flatly fonts */ +@font-face { + font-family: 'Lato'; + font-style: normal; + font-weight: 400; + src: + local('Lato Regular'), + local('Lato-Regular'), + url('../fonts/Lato_400.eot?#iefix') format('embedded-opentype'), + url('../fonts/Lato_400.woff') format('woff'), + url('../fonts/Lato_400.svg#Lato') format('svg'), + url('../fonts/Lato_400.ttf') format('truetype'); +} +@font-face { + font-family: 'Lato'; + font-style: normal; + font-weight: 700; + src: + local('Lato Bold'), + local('Lato-Bold'), + url('../fonts/Lato_700.eot?#iefix') format('embedded-opentype'), + url('../fonts/Lato_700.woff') format('woff'), + url('../fonts/Lato_700.svg#Lato') format('svg'), + url('../fonts/Lato_700.ttf') format('truetype'); +} +@font-face { + font-family: 'Lato'; + font-style: italic; + font-weight: 400; + src: + local('Lato Italic'), + local('Lato-Italic'), + url('../fonts/Lato_400italic.eot?#iefix') format('embedded-opentype'), + url('../fonts/Lato_400italic.woff') format('woff'), + url('../fonts/Lato_400italic.svg#Lato') format('svg'), + url('../fonts/Lato_400italic.ttf') format('truetype'); +} + +body { + padding-top: 70px; +} + +.navbar-brand { + font-family: "IM Fell English SC", serif; +} + +#fancybox-left-ico { + left: 20px; +} + +#fancybox-right-ico { + right: 20px; + left: auto; +} + +.thin_border { + border: 1px solid black; +} + +.lazy-load-carousel-loaded { + width: 100%; +} + +.mayan-page-wrapper-interactive { + overflow: auto; +} + +#carousel-container { + overflow-x: scroll; height: 500px; +} + +.carousel-item { + margin: 5px 10px 10px 10px +} + +.carousel-item-page-number { + text-align: center; +} + +.img-nolazyload { + border: 1px solid black; +} + +.document-page-content-divider { + text-align: center; +} + +.label-tag { + text-shadow: 0px 0px 2px #000 +} + +.fancybox-nav span { + visibility: visible; +} + +hr { + margin-top: 5px; + margin-bottom: 11px; +} + +.btn-block { + margin-bottom: 15px; + white-space: normal; + min-height: 120px; + padding-top: 20px; + padding-bottom: 1px; +} + +.btn-block .fa { + text-shadow: 1px 1px 1px rgba(0, 0, 0, 0.3); +} + +.btn-block { + text-shadow: 1px 1px 1px rgba(0, 0, 0, 0.3); +} + +.a-caption { + color: white; +} + +.radio ul li { + list-style-type:none; +} diff --git a/mayan/apps/appearance/static/appearance/fonts/IM_Fell_English_SC.eot b/mayan/apps/appearance/static/appearance/fonts/IM_Fell_English_SC.eot new file mode 100644 index 0000000000..744d8f7811 Binary files /dev/null and b/mayan/apps/appearance/static/appearance/fonts/IM_Fell_English_SC.eot differ diff --git a/mayan/apps/appearance/static/appearance/fonts/IM_Fell_English_SC.svg b/mayan/apps/appearance/static/appearance/fonts/IM_Fell_English_SC.svg new file mode 100644 index 0000000000..23eecdaca6 --- /dev/null +++ b/mayan/apps/appearance/static/appearance/fonts/IM_Fell_English_SC.svg @@ -0,0 +1,4855 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/mayan/apps/appearance/static/appearance/fonts/IM_Fell_English_SC.ttf b/mayan/apps/appearance/static/appearance/fonts/IM_Fell_English_SC.ttf new file mode 100644 index 0000000000..7e64df2018 Binary files /dev/null and b/mayan/apps/appearance/static/appearance/fonts/IM_Fell_English_SC.ttf differ diff --git a/mayan/apps/appearance/static/appearance/fonts/IM_Fell_English_SC.woff b/mayan/apps/appearance/static/appearance/fonts/IM_Fell_English_SC.woff new file mode 100644 index 0000000000..513bd0386e Binary files /dev/null and b/mayan/apps/appearance/static/appearance/fonts/IM_Fell_English_SC.woff differ diff --git a/mayan/apps/appearance/static/appearance/fonts/Lato_400.eot b/mayan/apps/appearance/static/appearance/fonts/Lato_400.eot new file mode 100644 index 0000000000..28343da023 Binary files /dev/null and b/mayan/apps/appearance/static/appearance/fonts/Lato_400.eot differ diff --git a/mayan/apps/appearance/static/appearance/fonts/Lato_400.svg b/mayan/apps/appearance/static/appearance/fonts/Lato_400.svg new file mode 100644 index 0000000000..f7678d37c0 --- /dev/null +++ b/mayan/apps/appearance/static/appearance/fonts/Lato_400.svg @@ -0,0 +1,4148 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/mayan/apps/appearance/static/appearance/fonts/Lato_400.ttf b/mayan/apps/appearance/static/appearance/fonts/Lato_400.ttf new file mode 100644 index 0000000000..7608bc3e0f Binary files /dev/null and b/mayan/apps/appearance/static/appearance/fonts/Lato_400.ttf differ diff --git a/mayan/apps/appearance/static/appearance/fonts/Lato_400.woff b/mayan/apps/appearance/static/appearance/fonts/Lato_400.woff new file mode 100644 index 0000000000..49e604471f Binary files /dev/null and b/mayan/apps/appearance/static/appearance/fonts/Lato_400.woff differ diff --git a/mayan/apps/appearance/static/appearance/fonts/Lato_400italic.eot b/mayan/apps/appearance/static/appearance/fonts/Lato_400italic.eot new file mode 100644 index 0000000000..bf955cccc8 Binary files /dev/null and b/mayan/apps/appearance/static/appearance/fonts/Lato_400italic.eot differ diff --git a/mayan/apps/appearance/static/appearance/fonts/Lato_400italic.svg b/mayan/apps/appearance/static/appearance/fonts/Lato_400italic.svg new file mode 100644 index 0000000000..84ace3a55b --- /dev/null +++ b/mayan/apps/appearance/static/appearance/fonts/Lato_400italic.svg @@ -0,0 +1,3985 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/mayan/apps/appearance/static/appearance/fonts/Lato_400italic.ttf b/mayan/apps/appearance/static/appearance/fonts/Lato_400italic.ttf new file mode 100644 index 0000000000..7c83198525 Binary files /dev/null and b/mayan/apps/appearance/static/appearance/fonts/Lato_400italic.ttf differ diff --git a/mayan/apps/appearance/static/appearance/fonts/Lato_400italic.woff b/mayan/apps/appearance/static/appearance/fonts/Lato_400italic.woff new file mode 100644 index 0000000000..13d15bc0d3 Binary files /dev/null and b/mayan/apps/appearance/static/appearance/fonts/Lato_400italic.woff differ diff --git a/mayan/apps/appearance/static/appearance/fonts/Lato_700.eot b/mayan/apps/appearance/static/appearance/fonts/Lato_700.eot new file mode 100644 index 0000000000..30b5dffec4 Binary files /dev/null and b/mayan/apps/appearance/static/appearance/fonts/Lato_700.eot differ diff --git a/mayan/apps/appearance/static/appearance/fonts/Lato_700.svg b/mayan/apps/appearance/static/appearance/fonts/Lato_700.svg new file mode 100644 index 0000000000..bac8d6da6c --- /dev/null +++ b/mayan/apps/appearance/static/appearance/fonts/Lato_700.svg @@ -0,0 +1,4457 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/mayan/apps/appearance/static/appearance/fonts/Lato_700.ttf b/mayan/apps/appearance/static/appearance/fonts/Lato_700.ttf new file mode 100644 index 0000000000..e8b9bf6a20 Binary files /dev/null and b/mayan/apps/appearance/static/appearance/fonts/Lato_700.ttf differ diff --git a/mayan/apps/appearance/static/appearance/fonts/Lato_700.woff b/mayan/apps/appearance/static/appearance/fonts/Lato_700.woff new file mode 100644 index 0000000000..1f11110d80 Binary files /dev/null and b/mayan/apps/appearance/static/appearance/fonts/Lato_700.woff differ diff --git a/mayan/apps/appearance/static/appearance/fonts/mayan-edms.ttf b/mayan/apps/appearance/static/appearance/fonts/mayan-edms.ttf new file mode 100644 index 0000000000..a1a39d3f5c Binary files /dev/null and b/mayan/apps/appearance/static/appearance/fonts/mayan-edms.ttf differ diff --git a/mayan/apps/main/static/main/images/favicon.ico b/mayan/apps/appearance/static/appearance/images/favicon.ico similarity index 100% rename from mayan/apps/main/static/main/images/favicon.ico rename to mayan/apps/appearance/static/appearance/images/favicon.ico diff --git a/mayan/apps/appearance/static/appearance/images/loading.png b/mayan/apps/appearance/static/appearance/images/loading.png new file mode 100644 index 0000000000..4146727b17 Binary files /dev/null and b/mayan/apps/appearance/static/appearance/images/loading.png differ diff --git a/mayan/apps/appearance/static/appearance/js/base.js b/mayan/apps/appearance/static/appearance/js/base.js new file mode 100644 index 0000000000..c049f84e2d --- /dev/null +++ b/mayan/apps/appearance/static/appearance/js/base.js @@ -0,0 +1,117 @@ +'use strict'; + +function resizeFullHeight() { + $('.full-height').height($(window).height() - $('.full-height').data('height-difference')); +} + +function set_image_noninteractive(image) { + // Remove border to indicate non interactive image + image.removeClass('thin_border'); + container = image.parent().parent(); + // Save img HTML + html = image.parent().html(); + // Remove anchor + image.parent().remove(); + // Place again img + container.html(html); +} + +function load_document_image(image) { + $.get( image.attr('data-src'), function(result) { + image.attr('src', result.data); + image.addClass(image.attr('data-post-load-class')); + }) + .fail(function() { + image.parent().parent().html(''); + set_image_noninteractive(image); + }) +} + +function dismissAlert(element) { + element.addClass('fadeOutUp').fadeOut('slow'); +} + +jQuery(document).ready(function() { + resizeFullHeight(); + + $(window).resize(function() { + resizeFullHeight(); + }); + + $('.scrollable').scrollview(); + + $('a.fancybox').fancybox({ + beforeShow : function(){ + this.title = $(this.element).data('caption'); + }, + openEffect : 'elastic', + closeEffect : 'elastic', + prevEffect : 'none', + nextEffect : 'none', + titleShow : true, + type : 'image', + autoResize : true, + }); + + $('a.fancybox-staging').click(function(e) { + var $this = $(this); + + $.get($this.attr('href'), function( result ) { + if (result.status == 'success') { + $.fancybox.open([ + { + href : result.data, + title : $this.attr('title'), + openEffect : 'elastic', + closeEffect : 'elastic', + prevEffect : 'none', + nextEffect : 'none', + titleShow : true, + type : 'image', + autoResize : true, + }, + ]); + } + }) + e.preventDefault(); + }) + + $('img.lazy-load').lazyload({ + appear: function(elements_left, settings) { + load_document_image($(this)); + }, + }); + + $('img.lazy-load-carousel').lazyload({ + threshold : 400, + container: $("#carousel-container"), + appear: function(elements_left, settings) { + var $this = $(this); + $this.removeClass('lazy-load-carousel'); + load_document_image($this); + }, + }); + + $('th input:checkbox').click(function(e) { + var table = $(e.target).closest('table'); + var checked = $(e.target).prop('checked'); + $('td input:checkbox', table).prop('checked', checked); + }); + + $('a.new_window').click(function(event) { + event.preventDefault(); + var newWindow = window.open($(this).attr('href'), '_blank'); + newWindow.focus(); + }); + + $('.alert button.close').click(function() { + dismissAlert($(this).parent()); + }); + + setTimeout(function() { + $('.alert-success').each(function() { + dismissAlert($(this)); + }); + + }, 3000); +}); diff --git a/mayan/apps/appearance/static/appearance/packages/animate/animate.css b/mayan/apps/appearance/static/appearance/packages/animate/animate.css new file mode 100644 index 0000000000..635a02b50e --- /dev/null +++ b/mayan/apps/appearance/static/appearance/packages/animate/animate.css @@ -0,0 +1,3272 @@ +@charset "UTF-8"; + +/*! +Animate.css - http://daneden.me/animate +Licensed under the MIT license - http://opensource.org/licenses/MIT + +Copyright (c) 2015 Daniel Eden +*/ + +.animated { + -webkit-animation-duration: 1s; + animation-duration: 1s; + -webkit-animation-fill-mode: both; + animation-fill-mode: both; +} + +.animated.infinite { + -webkit-animation-iteration-count: infinite; + animation-iteration-count: infinite; +} + +.animated.hinge { + -webkit-animation-duration: 2s; + animation-duration: 2s; +} + +.animated.bounceIn, +.animated.bounceOut { + -webkit-animation-duration: .75s; + animation-duration: .75s; +} + +.animated.flipOutX, +.animated.flipOutY { + -webkit-animation-duration: .75s; + animation-duration: .75s; +} + +@-webkit-keyframes bounce { + 0%, 20%, 53%, 80%, 100% { + -webkit-animation-timing-function: cubic-bezier(0.215, 0.610, 0.355, 1.000); + animation-timing-function: cubic-bezier(0.215, 0.610, 0.355, 1.000); + -webkit-transform: translate3d(0,0,0); + transform: translate3d(0,0,0); + } + + 40%, 43% { + -webkit-animation-timing-function: cubic-bezier(0.755, 0.050, 0.855, 0.060); + animation-timing-function: cubic-bezier(0.755, 0.050, 0.855, 0.060); + -webkit-transform: translate3d(0, -30px, 0); + transform: translate3d(0, -30px, 0); + } + + 70% { + -webkit-animation-timing-function: cubic-bezier(0.755, 0.050, 0.855, 0.060); + animation-timing-function: cubic-bezier(0.755, 0.050, 0.855, 0.060); + -webkit-transform: translate3d(0, -15px, 0); + transform: translate3d(0, -15px, 0); + } + + 90% { + -webkit-transform: translate3d(0,-4px,0); + transform: translate3d(0,-4px,0); + } +} + +@keyframes bounce { + 0%, 20%, 53%, 80%, 100% { + -webkit-animation-timing-function: cubic-bezier(0.215, 0.610, 0.355, 1.000); + animation-timing-function: cubic-bezier(0.215, 0.610, 0.355, 1.000); + -webkit-transform: translate3d(0,0,0); + transform: translate3d(0,0,0); + } + + 40%, 43% { + -webkit-animation-timing-function: cubic-bezier(0.755, 0.050, 0.855, 0.060); + animation-timing-function: cubic-bezier(0.755, 0.050, 0.855, 0.060); + -webkit-transform: translate3d(0, -30px, 0); + transform: translate3d(0, -30px, 0); + } + + 70% { + -webkit-animation-timing-function: cubic-bezier(0.755, 0.050, 0.855, 0.060); + animation-timing-function: cubic-bezier(0.755, 0.050, 0.855, 0.060); + -webkit-transform: translate3d(0, -15px, 0); + transform: translate3d(0, -15px, 0); + } + + 90% { + -webkit-transform: translate3d(0,-4px,0); + transform: translate3d(0,-4px,0); + } +} + +.bounce { + -webkit-animation-name: bounce; + animation-name: bounce; + -webkit-transform-origin: center bottom; + transform-origin: center bottom; +} + +@-webkit-keyframes flash { + 0%, 50%, 100% { + opacity: 1; + } + + 25%, 75% { + opacity: 0; + } +} + +@keyframes flash { + 0%, 50%, 100% { + opacity: 1; + } + + 25%, 75% { + opacity: 0; + } +} + +.flash { + -webkit-animation-name: flash; + animation-name: flash; +} + +/* originally authored by Nick Pettit - https://github.com/nickpettit/glide */ + +@-webkit-keyframes pulse { + 0% { + -webkit-transform: scale3d(1, 1, 1); + transform: scale3d(1, 1, 1); + } + + 50% { + -webkit-transform: scale3d(1.05, 1.05, 1.05); + transform: scale3d(1.05, 1.05, 1.05); + } + + 100% { + -webkit-transform: scale3d(1, 1, 1); + transform: scale3d(1, 1, 1); + } +} + +@keyframes pulse { + 0% { + -webkit-transform: scale3d(1, 1, 1); + transform: scale3d(1, 1, 1); + } + + 50% { + -webkit-transform: scale3d(1.05, 1.05, 1.05); + transform: scale3d(1.05, 1.05, 1.05); + } + + 100% { + -webkit-transform: scale3d(1, 1, 1); + transform: scale3d(1, 1, 1); + } +} + +.pulse { + -webkit-animation-name: pulse; + animation-name: pulse; +} + +@-webkit-keyframes rubberBand { + 0% { + -webkit-transform: scale3d(1, 1, 1); + transform: scale3d(1, 1, 1); + } + + 30% { + -webkit-transform: scale3d(1.25, 0.75, 1); + transform: scale3d(1.25, 0.75, 1); + } + + 40% { + -webkit-transform: scale3d(0.75, 1.25, 1); + transform: scale3d(0.75, 1.25, 1); + } + + 50% { + -webkit-transform: scale3d(1.15, 0.85, 1); + transform: scale3d(1.15, 0.85, 1); + } + + 65% { + -webkit-transform: scale3d(.95, 1.05, 1); + transform: scale3d(.95, 1.05, 1); + } + + 75% { + -webkit-transform: scale3d(1.05, .95, 1); + transform: scale3d(1.05, .95, 1); + } + + 100% { + -webkit-transform: scale3d(1, 1, 1); + transform: scale3d(1, 1, 1); + } +} + +@keyframes rubberBand { + 0% { + -webkit-transform: scale3d(1, 1, 1); + transform: scale3d(1, 1, 1); + } + + 30% { + -webkit-transform: scale3d(1.25, 0.75, 1); + transform: scale3d(1.25, 0.75, 1); + } + + 40% { + -webkit-transform: scale3d(0.75, 1.25, 1); + transform: scale3d(0.75, 1.25, 1); + } + + 50% { + -webkit-transform: scale3d(1.15, 0.85, 1); + transform: scale3d(1.15, 0.85, 1); + } + + 65% { + -webkit-transform: scale3d(.95, 1.05, 1); + transform: scale3d(.95, 1.05, 1); + } + + 75% { + -webkit-transform: scale3d(1.05, .95, 1); + transform: scale3d(1.05, .95, 1); + } + + 100% { + -webkit-transform: scale3d(1, 1, 1); + transform: scale3d(1, 1, 1); + } +} + +.rubberBand { + -webkit-animation-name: rubberBand; + animation-name: rubberBand; +} + +@-webkit-keyframes shake { + 0%, 100% { + -webkit-transform: translate3d(0, 0, 0); + transform: translate3d(0, 0, 0); + } + + 10%, 30%, 50%, 70%, 90% { + -webkit-transform: translate3d(-10px, 0, 0); + transform: translate3d(-10px, 0, 0); + } + + 20%, 40%, 60%, 80% { + -webkit-transform: translate3d(10px, 0, 0); + transform: translate3d(10px, 0, 0); + } +} + +@keyframes shake { + 0%, 100% { + -webkit-transform: translate3d(0, 0, 0); + transform: translate3d(0, 0, 0); + } + + 10%, 30%, 50%, 70%, 90% { + -webkit-transform: translate3d(-10px, 0, 0); + transform: translate3d(-10px, 0, 0); + } + + 20%, 40%, 60%, 80% { + -webkit-transform: translate3d(10px, 0, 0); + transform: translate3d(10px, 0, 0); + } +} + +.shake { + -webkit-animation-name: shake; + animation-name: shake; +} + +@-webkit-keyframes swing { + 20% { + -webkit-transform: rotate3d(0, 0, 1, 15deg); + transform: rotate3d(0, 0, 1, 15deg); + } + + 40% { + -webkit-transform: rotate3d(0, 0, 1, -10deg); + transform: rotate3d(0, 0, 1, -10deg); + } + + 60% { + -webkit-transform: rotate3d(0, 0, 1, 5deg); + transform: rotate3d(0, 0, 1, 5deg); + } + + 80% { + -webkit-transform: rotate3d(0, 0, 1, -5deg); + transform: rotate3d(0, 0, 1, -5deg); + } + + 100% { + -webkit-transform: rotate3d(0, 0, 1, 0deg); + transform: rotate3d(0, 0, 1, 0deg); + } +} + +@keyframes swing { + 20% { + -webkit-transform: rotate3d(0, 0, 1, 15deg); + transform: rotate3d(0, 0, 1, 15deg); + } + + 40% { + -webkit-transform: rotate3d(0, 0, 1, -10deg); + transform: rotate3d(0, 0, 1, -10deg); + } + + 60% { + -webkit-transform: rotate3d(0, 0, 1, 5deg); + transform: rotate3d(0, 0, 1, 5deg); + } + + 80% { + -webkit-transform: rotate3d(0, 0, 1, -5deg); + transform: rotate3d(0, 0, 1, -5deg); + } + + 100% { + -webkit-transform: rotate3d(0, 0, 1, 0deg); + transform: rotate3d(0, 0, 1, 0deg); + } +} + +.swing { + -webkit-transform-origin: top center; + transform-origin: top center; + -webkit-animation-name: swing; + animation-name: swing; +} + +@-webkit-keyframes tada { + 0% { + -webkit-transform: scale3d(1, 1, 1); + transform: scale3d(1, 1, 1); + } + + 10%, 20% { + -webkit-transform: scale3d(.9, .9, .9) rotate3d(0, 0, 1, -3deg); + transform: scale3d(.9, .9, .9) rotate3d(0, 0, 1, -3deg); + } + + 30%, 50%, 70%, 90% { + -webkit-transform: scale3d(1.1, 1.1, 1.1) rotate3d(0, 0, 1, 3deg); + transform: scale3d(1.1, 1.1, 1.1) rotate3d(0, 0, 1, 3deg); + } + + 40%, 60%, 80% { + -webkit-transform: scale3d(1.1, 1.1, 1.1) rotate3d(0, 0, 1, -3deg); + transform: scale3d(1.1, 1.1, 1.1) rotate3d(0, 0, 1, -3deg); + } + + 100% { + -webkit-transform: scale3d(1, 1, 1); + transform: scale3d(1, 1, 1); + } +} + +@keyframes tada { + 0% { + -webkit-transform: scale3d(1, 1, 1); + transform: scale3d(1, 1, 1); + } + + 10%, 20% { + -webkit-transform: scale3d(.9, .9, .9) rotate3d(0, 0, 1, -3deg); + transform: scale3d(.9, .9, .9) rotate3d(0, 0, 1, -3deg); + } + + 30%, 50%, 70%, 90% { + -webkit-transform: scale3d(1.1, 1.1, 1.1) rotate3d(0, 0, 1, 3deg); + transform: scale3d(1.1, 1.1, 1.1) rotate3d(0, 0, 1, 3deg); + } + + 40%, 60%, 80% { + -webkit-transform: scale3d(1.1, 1.1, 1.1) rotate3d(0, 0, 1, -3deg); + transform: scale3d(1.1, 1.1, 1.1) rotate3d(0, 0, 1, -3deg); + } + + 100% { + -webkit-transform: scale3d(1, 1, 1); + transform: scale3d(1, 1, 1); + } +} + +.tada { + -webkit-animation-name: tada; + animation-name: tada; +} + +/* originally authored by Nick Pettit - https://github.com/nickpettit/glide */ + +@-webkit-keyframes wobble { + 0% { + -webkit-transform: none; + transform: none; + } + + 15% { + -webkit-transform: translate3d(-25%, 0, 0) rotate3d(0, 0, 1, -5deg); + transform: translate3d(-25%, 0, 0) rotate3d(0, 0, 1, -5deg); + } + + 30% { + -webkit-transform: translate3d(20%, 0, 0) rotate3d(0, 0, 1, 3deg); + transform: translate3d(20%, 0, 0) rotate3d(0, 0, 1, 3deg); + } + + 45% { + -webkit-transform: translate3d(-15%, 0, 0) rotate3d(0, 0, 1, -3deg); + transform: translate3d(-15%, 0, 0) rotate3d(0, 0, 1, -3deg); + } + + 60% { + -webkit-transform: translate3d(10%, 0, 0) rotate3d(0, 0, 1, 2deg); + transform: translate3d(10%, 0, 0) rotate3d(0, 0, 1, 2deg); + } + + 75% { + -webkit-transform: translate3d(-5%, 0, 0) rotate3d(0, 0, 1, -1deg); + transform: translate3d(-5%, 0, 0) rotate3d(0, 0, 1, -1deg); + } + + 100% { + -webkit-transform: none; + transform: none; + } +} + +@keyframes wobble { + 0% { + -webkit-transform: none; + transform: none; + } + + 15% { + -webkit-transform: translate3d(-25%, 0, 0) rotate3d(0, 0, 1, -5deg); + transform: translate3d(-25%, 0, 0) rotate3d(0, 0, 1, -5deg); + } + + 30% { + -webkit-transform: translate3d(20%, 0, 0) rotate3d(0, 0, 1, 3deg); + transform: translate3d(20%, 0, 0) rotate3d(0, 0, 1, 3deg); + } + + 45% { + -webkit-transform: translate3d(-15%, 0, 0) rotate3d(0, 0, 1, -3deg); + transform: translate3d(-15%, 0, 0) rotate3d(0, 0, 1, -3deg); + } + + 60% { + -webkit-transform: translate3d(10%, 0, 0) rotate3d(0, 0, 1, 2deg); + transform: translate3d(10%, 0, 0) rotate3d(0, 0, 1, 2deg); + } + + 75% { + -webkit-transform: translate3d(-5%, 0, 0) rotate3d(0, 0, 1, -1deg); + transform: translate3d(-5%, 0, 0) rotate3d(0, 0, 1, -1deg); + } + + 100% { + -webkit-transform: none; + transform: none; + } +} + +.wobble { + -webkit-animation-name: wobble; + animation-name: wobble; +} + +@-webkit-keyframes jello { + 11.1% { + -webkit-transform: none; + transform: none + } + + 22.2% { + -webkit-transform: skewX(-12.5deg) skewY(-12.5deg); + transform: skewX(-12.5deg) skewY(-12.5deg) + } + 33.3% { + -webkit-transform: skewX(6.25deg) skewY(6.25deg); + transform: skewX(6.25deg) skewY(6.25deg) + } + 44.4% { + -webkit-transform: skewX(-3.125deg) skewY(-3.125deg); + transform: skewX(-3.125deg) skewY(-3.125deg) + } + 55.5% { + -webkit-transform: skewX(1.5625deg) skewY(1.5625deg); + transform: skewX(1.5625deg) skewY(1.5625deg) + } + 66.6% { + -webkit-transform: skewX(-0.78125deg) skewY(-0.78125deg); + transform: skewX(-0.78125deg) skewY(-0.78125deg) + } + 77.7% { + -webkit-transform: skewX(0.390625deg) skewY(0.390625deg); + transform: skewX(0.390625deg) skewY(0.390625deg) + } + 88.8% { + -webkit-transform: skewX(-0.1953125deg) skewY(-0.1953125deg); + transform: skewX(-0.1953125deg) skewY(-0.1953125deg) + } + 100% { + -webkit-transform: none; + transform: none + } +} + +@keyframes jello { + 11.1% { + -webkit-transform: none; + transform: none + } + + 22.2% { + + -webkit-transform: skewX(-12.5deg) skewY(-12.5deg); + transform: skewX(-12.5deg) skewY(-12.5deg) + } + 33.3% { + -webkit-transform: skewX(6.25deg) skewY(6.25deg); + transform: skewX(6.25deg) skewY(6.25deg) + } + 44.4% { + -webkit-transform: skewX(-3.125deg) skewY(-3.125deg); + transform: skewX(-3.125deg) skewY(-3.125deg) + } + 55.5% { + -webkit-transform: skewX(1.5625deg) skewY(1.5625deg); + transform: skewX(1.5625deg) skewY(1.5625deg) + } + 66.6% { + -webkit-transform: skewX(-0.78125deg) skewY(-0.78125deg); + transform: skewX(-0.78125deg) skewY(-0.78125deg) + } + 77.7% { + -webkit-transform: skewX(0.390625deg) skewY(0.390625deg); + transform: skewX(0.390625deg) skewY(0.390625deg) + } + 88.8% { + -webkit-transform: skewX(-0.1953125deg) skewY(-0.1953125deg); + transform: skewX(-0.1953125deg) skewY(-0.1953125deg) + } + 100% { + -webkit-transform: none; + transform: none + } +} + + + +.jello{ + -webkit-animation-name:jello; + animation-name:jello; + -webkit-transform-origin: center; + + transform-origin: center +} + +@-webkit-keyframes bounceIn { + 0%, 20%, 40%, 60%, 80%, 100% { + -webkit-animation-timing-function: cubic-bezier(0.215, 0.610, 0.355, 1.000); + animation-timing-function: cubic-bezier(0.215, 0.610, 0.355, 1.000); + } + + 0% { + opacity: 0; + -webkit-transform: scale3d(.3, .3, .3); + transform: scale3d(.3, .3, .3); + } + + 20% { + -webkit-transform: scale3d(1.1, 1.1, 1.1); + transform: scale3d(1.1, 1.1, 1.1); + } + + 40% { + -webkit-transform: scale3d(.9, .9, .9); + transform: scale3d(.9, .9, .9); + } + + 60% { + opacity: 1; + -webkit-transform: scale3d(1.03, 1.03, 1.03); + transform: scale3d(1.03, 1.03, 1.03); + } + + 80% { + -webkit-transform: scale3d(.97, .97, .97); + transform: scale3d(.97, .97, .97); + } + + 100% { + opacity: 1; + -webkit-transform: scale3d(1, 1, 1); + transform: scale3d(1, 1, 1); + } +} + +@keyframes bounceIn { + 0%, 20%, 40%, 60%, 80%, 100% { + -webkit-animation-timing-function: cubic-bezier(0.215, 0.610, 0.355, 1.000); + animation-timing-function: cubic-bezier(0.215, 0.610, 0.355, 1.000); + } + + 0% { + opacity: 0; + -webkit-transform: scale3d(.3, .3, .3); + transform: scale3d(.3, .3, .3); + } + + 20% { + -webkit-transform: scale3d(1.1, 1.1, 1.1); + transform: scale3d(1.1, 1.1, 1.1); + } + + 40% { + -webkit-transform: scale3d(.9, .9, .9); + transform: scale3d(.9, .9, .9); + } + + 60% { + opacity: 1; + -webkit-transform: scale3d(1.03, 1.03, 1.03); + transform: scale3d(1.03, 1.03, 1.03); + } + + 80% { + -webkit-transform: scale3d(.97, .97, .97); + transform: scale3d(.97, .97, .97); + } + + 100% { + opacity: 1; + -webkit-transform: scale3d(1, 1, 1); + transform: scale3d(1, 1, 1); + } +} + +.bounceIn { + -webkit-animation-name: bounceIn; + animation-name: bounceIn; +} + +@-webkit-keyframes bounceInDown { + 0%, 60%, 75%, 90%, 100% { + -webkit-animation-timing-function: cubic-bezier(0.215, 0.610, 0.355, 1.000); + animation-timing-function: cubic-bezier(0.215, 0.610, 0.355, 1.000); + } + + 0% { + opacity: 0; + -webkit-transform: translate3d(0, -3000px, 0); + transform: translate3d(0, -3000px, 0); + } + + 60% { + opacity: 1; + -webkit-transform: translate3d(0, 25px, 0); + transform: translate3d(0, 25px, 0); + } + + 75% { + -webkit-transform: translate3d(0, -10px, 0); + transform: translate3d(0, -10px, 0); + } + + 90% { + -webkit-transform: translate3d(0, 5px, 0); + transform: translate3d(0, 5px, 0); + } + + 100% { + -webkit-transform: none; + transform: none; + } +} + +@keyframes bounceInDown { + 0%, 60%, 75%, 90%, 100% { + -webkit-animation-timing-function: cubic-bezier(0.215, 0.610, 0.355, 1.000); + animation-timing-function: cubic-bezier(0.215, 0.610, 0.355, 1.000); + } + + 0% { + opacity: 0; + -webkit-transform: translate3d(0, -3000px, 0); + transform: translate3d(0, -3000px, 0); + } + + 60% { + opacity: 1; + -webkit-transform: translate3d(0, 25px, 0); + transform: translate3d(0, 25px, 0); + } + + 75% { + -webkit-transform: translate3d(0, -10px, 0); + transform: translate3d(0, -10px, 0); + } + + 90% { + -webkit-transform: translate3d(0, 5px, 0); + transform: translate3d(0, 5px, 0); + } + + 100% { + -webkit-transform: none; + transform: none; + } +} + +.bounceInDown { + -webkit-animation-name: bounceInDown; + animation-name: bounceInDown; +} + +@-webkit-keyframes bounceInLeft { + 0%, 60%, 75%, 90%, 100% { + -webkit-animation-timing-function: cubic-bezier(0.215, 0.610, 0.355, 1.000); + animation-timing-function: cubic-bezier(0.215, 0.610, 0.355, 1.000); + } + + 0% { + opacity: 0; + -webkit-transform: translate3d(-3000px, 0, 0); + transform: translate3d(-3000px, 0, 0); + } + + 60% { + opacity: 1; + -webkit-transform: translate3d(25px, 0, 0); + transform: translate3d(25px, 0, 0); + } + + 75% { + -webkit-transform: translate3d(-10px, 0, 0); + transform: translate3d(-10px, 0, 0); + } + + 90% { + -webkit-transform: translate3d(5px, 0, 0); + transform: translate3d(5px, 0, 0); + } + + 100% { + -webkit-transform: none; + transform: none; + } +} + +@keyframes bounceInLeft { + 0%, 60%, 75%, 90%, 100% { + -webkit-animation-timing-function: cubic-bezier(0.215, 0.610, 0.355, 1.000); + animation-timing-function: cubic-bezier(0.215, 0.610, 0.355, 1.000); + } + + 0% { + opacity: 0; + -webkit-transform: translate3d(-3000px, 0, 0); + transform: translate3d(-3000px, 0, 0); + } + + 60% { + opacity: 1; + -webkit-transform: translate3d(25px, 0, 0); + transform: translate3d(25px, 0, 0); + } + + 75% { + -webkit-transform: translate3d(-10px, 0, 0); + transform: translate3d(-10px, 0, 0); + } + + 90% { + -webkit-transform: translate3d(5px, 0, 0); + transform: translate3d(5px, 0, 0); + } + + 100% { + -webkit-transform: none; + transform: none; + } +} + +.bounceInLeft { + -webkit-animation-name: bounceInLeft; + animation-name: bounceInLeft; +} + +@-webkit-keyframes bounceInRight { + 0%, 60%, 75%, 90%, 100% { + -webkit-animation-timing-function: cubic-bezier(0.215, 0.610, 0.355, 1.000); + animation-timing-function: cubic-bezier(0.215, 0.610, 0.355, 1.000); + } + + 0% { + opacity: 0; + -webkit-transform: translate3d(3000px, 0, 0); + transform: translate3d(3000px, 0, 0); + } + + 60% { + opacity: 1; + -webkit-transform: translate3d(-25px, 0, 0); + transform: translate3d(-25px, 0, 0); + } + + 75% { + -webkit-transform: translate3d(10px, 0, 0); + transform: translate3d(10px, 0, 0); + } + + 90% { + -webkit-transform: translate3d(-5px, 0, 0); + transform: translate3d(-5px, 0, 0); + } + + 100% { + -webkit-transform: none; + transform: none; + } +} + +@keyframes bounceInRight { + 0%, 60%, 75%, 90%, 100% { + -webkit-animation-timing-function: cubic-bezier(0.215, 0.610, 0.355, 1.000); + animation-timing-function: cubic-bezier(0.215, 0.610, 0.355, 1.000); + } + + 0% { + opacity: 0; + -webkit-transform: translate3d(3000px, 0, 0); + transform: translate3d(3000px, 0, 0); + } + + 60% { + opacity: 1; + -webkit-transform: translate3d(-25px, 0, 0); + transform: translate3d(-25px, 0, 0); + } + + 75% { + -webkit-transform: translate3d(10px, 0, 0); + transform: translate3d(10px, 0, 0); + } + + 90% { + -webkit-transform: translate3d(-5px, 0, 0); + transform: translate3d(-5px, 0, 0); + } + + 100% { + -webkit-transform: none; + transform: none; + } +} + +.bounceInRight { + -webkit-animation-name: bounceInRight; + animation-name: bounceInRight; +} + +@-webkit-keyframes bounceInUp { + 0%, 60%, 75%, 90%, 100% { + -webkit-animation-timing-function: cubic-bezier(0.215, 0.610, 0.355, 1.000); + animation-timing-function: cubic-bezier(0.215, 0.610, 0.355, 1.000); + } + + 0% { + opacity: 0; + -webkit-transform: translate3d(0, 3000px, 0); + transform: translate3d(0, 3000px, 0); + } + + 60% { + opacity: 1; + -webkit-transform: translate3d(0, -20px, 0); + transform: translate3d(0, -20px, 0); + } + + 75% { + -webkit-transform: translate3d(0, 10px, 0); + transform: translate3d(0, 10px, 0); + } + + 90% { + -webkit-transform: translate3d(0, -5px, 0); + transform: translate3d(0, -5px, 0); + } + + 100% { + -webkit-transform: translate3d(0, 0, 0); + transform: translate3d(0, 0, 0); + } +} + +@keyframes bounceInUp { + 0%, 60%, 75%, 90%, 100% { + -webkit-animation-timing-function: cubic-bezier(0.215, 0.610, 0.355, 1.000); + animation-timing-function: cubic-bezier(0.215, 0.610, 0.355, 1.000); + } + + 0% { + opacity: 0; + -webkit-transform: translate3d(0, 3000px, 0); + transform: translate3d(0, 3000px, 0); + } + + 60% { + opacity: 1; + -webkit-transform: translate3d(0, -20px, 0); + transform: translate3d(0, -20px, 0); + } + + 75% { + -webkit-transform: translate3d(0, 10px, 0); + transform: translate3d(0, 10px, 0); + } + + 90% { + -webkit-transform: translate3d(0, -5px, 0); + transform: translate3d(0, -5px, 0); + } + + 100% { + -webkit-transform: translate3d(0, 0, 0); + transform: translate3d(0, 0, 0); + } +} + +.bounceInUp { + -webkit-animation-name: bounceInUp; + animation-name: bounceInUp; +} + +@-webkit-keyframes bounceOut { + 20% { + -webkit-transform: scale3d(.9, .9, .9); + transform: scale3d(.9, .9, .9); + } + + 50%, 55% { + opacity: 1; + -webkit-transform: scale3d(1.1, 1.1, 1.1); + transform: scale3d(1.1, 1.1, 1.1); + } + + 100% { + opacity: 0; + -webkit-transform: scale3d(.3, .3, .3); + transform: scale3d(.3, .3, .3); + } +} + +@keyframes bounceOut { + 20% { + -webkit-transform: scale3d(.9, .9, .9); + transform: scale3d(.9, .9, .9); + } + + 50%, 55% { + opacity: 1; + -webkit-transform: scale3d(1.1, 1.1, 1.1); + transform: scale3d(1.1, 1.1, 1.1); + } + + 100% { + opacity: 0; + -webkit-transform: scale3d(.3, .3, .3); + transform: scale3d(.3, .3, .3); + } +} + +.bounceOut { + -webkit-animation-name: bounceOut; + animation-name: bounceOut; +} + +@-webkit-keyframes bounceOutDown { + 20% { + -webkit-transform: translate3d(0, 10px, 0); + transform: translate3d(0, 10px, 0); + } + + 40%, 45% { + opacity: 1; + -webkit-transform: translate3d(0, -20px, 0); + transform: translate3d(0, -20px, 0); + } + + 100% { + opacity: 0; + -webkit-transform: translate3d(0, 2000px, 0); + transform: translate3d(0, 2000px, 0); + } +} + +@keyframes bounceOutDown { + 20% { + -webkit-transform: translate3d(0, 10px, 0); + transform: translate3d(0, 10px, 0); + } + + 40%, 45% { + opacity: 1; + -webkit-transform: translate3d(0, -20px, 0); + transform: translate3d(0, -20px, 0); + } + + 100% { + opacity: 0; + -webkit-transform: translate3d(0, 2000px, 0); + transform: translate3d(0, 2000px, 0); + } +} + +.bounceOutDown { + -webkit-animation-name: bounceOutDown; + animation-name: bounceOutDown; +} + +@-webkit-keyframes bounceOutLeft { + 20% { + opacity: 1; + -webkit-transform: translate3d(20px, 0, 0); + transform: translate3d(20px, 0, 0); + } + + 100% { + opacity: 0; + -webkit-transform: translate3d(-2000px, 0, 0); + transform: translate3d(-2000px, 0, 0); + } +} + +@keyframes bounceOutLeft { + 20% { + opacity: 1; + -webkit-transform: translate3d(20px, 0, 0); + transform: translate3d(20px, 0, 0); + } + + 100% { + opacity: 0; + -webkit-transform: translate3d(-2000px, 0, 0); + transform: translate3d(-2000px, 0, 0); + } +} + +.bounceOutLeft { + -webkit-animation-name: bounceOutLeft; + animation-name: bounceOutLeft; +} + +@-webkit-keyframes bounceOutRight { + 20% { + opacity: 1; + -webkit-transform: translate3d(-20px, 0, 0); + transform: translate3d(-20px, 0, 0); + } + + 100% { + opacity: 0; + -webkit-transform: translate3d(2000px, 0, 0); + transform: translate3d(2000px, 0, 0); + } +} + +@keyframes bounceOutRight { + 20% { + opacity: 1; + -webkit-transform: translate3d(-20px, 0, 0); + transform: translate3d(-20px, 0, 0); + } + + 100% { + opacity: 0; + -webkit-transform: translate3d(2000px, 0, 0); + transform: translate3d(2000px, 0, 0); + } +} + +.bounceOutRight { + -webkit-animation-name: bounceOutRight; + animation-name: bounceOutRight; +} + +@-webkit-keyframes bounceOutUp { + 20% { + -webkit-transform: translate3d(0, -10px, 0); + transform: translate3d(0, -10px, 0); + } + + 40%, 45% { + opacity: 1; + -webkit-transform: translate3d(0, 20px, 0); + transform: translate3d(0, 20px, 0); + } + + 100% { + opacity: 0; + -webkit-transform: translate3d(0, -2000px, 0); + transform: translate3d(0, -2000px, 0); + } +} + +@keyframes bounceOutUp { + 20% { + -webkit-transform: translate3d(0, -10px, 0); + transform: translate3d(0, -10px, 0); + } + + 40%, 45% { + opacity: 1; + -webkit-transform: translate3d(0, 20px, 0); + transform: translate3d(0, 20px, 0); + } + + 100% { + opacity: 0; + -webkit-transform: translate3d(0, -2000px, 0); + transform: translate3d(0, -2000px, 0); + } +} + +.bounceOutUp { + -webkit-animation-name: bounceOutUp; + animation-name: bounceOutUp; +} + +@-webkit-keyframes fadeIn { + 0% { + opacity: 0; + } + + 100% { + opacity: 1; + } +} + +@keyframes fadeIn { + 0% { + opacity: 0; + } + + 100% { + opacity: 1; + } +} + +.fadeIn { + -webkit-animation-name: fadeIn; + animation-name: fadeIn; +} + +@-webkit-keyframes fadeInDown { + 0% { + opacity: 0; + -webkit-transform: translate3d(0, -100%, 0); + transform: translate3d(0, -100%, 0); + } + + 100% { + opacity: 1; + -webkit-transform: none; + transform: none; + } +} + +@keyframes fadeInDown { + 0% { + opacity: 0; + -webkit-transform: translate3d(0, -100%, 0); + transform: translate3d(0, -100%, 0); + } + + 100% { + opacity: 1; + -webkit-transform: none; + transform: none; + } +} + +.fadeInDown { + -webkit-animation-name: fadeInDown; + animation-name: fadeInDown; +} + +@-webkit-keyframes fadeInDownBig { + 0% { + opacity: 0; + -webkit-transform: translate3d(0, -2000px, 0); + transform: translate3d(0, -2000px, 0); + } + + 100% { + opacity: 1; + -webkit-transform: none; + transform: none; + } +} + +@keyframes fadeInDownBig { + 0% { + opacity: 0; + -webkit-transform: translate3d(0, -2000px, 0); + transform: translate3d(0, -2000px, 0); + } + + 100% { + opacity: 1; + -webkit-transform: none; + transform: none; + } +} + +.fadeInDownBig { + -webkit-animation-name: fadeInDownBig; + animation-name: fadeInDownBig; +} + +@-webkit-keyframes fadeInLeft { + 0% { + opacity: 0; + -webkit-transform: translate3d(-100%, 0, 0); + transform: translate3d(-100%, 0, 0); + } + + 100% { + opacity: 1; + -webkit-transform: none; + transform: none; + } +} + +@keyframes fadeInLeft { + 0% { + opacity: 0; + -webkit-transform: translate3d(-100%, 0, 0); + transform: translate3d(-100%, 0, 0); + } + + 100% { + opacity: 1; + -webkit-transform: none; + transform: none; + } +} + +.fadeInLeft { + -webkit-animation-name: fadeInLeft; + animation-name: fadeInLeft; +} + +@-webkit-keyframes fadeInLeftBig { + 0% { + opacity: 0; + -webkit-transform: translate3d(-2000px, 0, 0); + transform: translate3d(-2000px, 0, 0); + } + + 100% { + opacity: 1; + -webkit-transform: none; + transform: none; + } +} + +@keyframes fadeInLeftBig { + 0% { + opacity: 0; + -webkit-transform: translate3d(-2000px, 0, 0); + transform: translate3d(-2000px, 0, 0); + } + + 100% { + opacity: 1; + -webkit-transform: none; + transform: none; + } +} + +.fadeInLeftBig { + -webkit-animation-name: fadeInLeftBig; + animation-name: fadeInLeftBig; +} + +@-webkit-keyframes fadeInRight { + 0% { + opacity: 0; + -webkit-transform: translate3d(100%, 0, 0); + transform: translate3d(100%, 0, 0); + } + + 100% { + opacity: 1; + -webkit-transform: none; + transform: none; + } +} + +@keyframes fadeInRight { + 0% { + opacity: 0; + -webkit-transform: translate3d(100%, 0, 0); + transform: translate3d(100%, 0, 0); + } + + 100% { + opacity: 1; + -webkit-transform: none; + transform: none; + } +} + +.fadeInRight { + -webkit-animation-name: fadeInRight; + animation-name: fadeInRight; +} + +@-webkit-keyframes fadeInRightBig { + 0% { + opacity: 0; + -webkit-transform: translate3d(2000px, 0, 0); + transform: translate3d(2000px, 0, 0); + } + + 100% { + opacity: 1; + -webkit-transform: none; + transform: none; + } +} + +@keyframes fadeInRightBig { + 0% { + opacity: 0; + -webkit-transform: translate3d(2000px, 0, 0); + transform: translate3d(2000px, 0, 0); + } + + 100% { + opacity: 1; + -webkit-transform: none; + transform: none; + } +} + +.fadeInRightBig { + -webkit-animation-name: fadeInRightBig; + animation-name: fadeInRightBig; +} + +@-webkit-keyframes fadeInUp { + 0% { + opacity: 0; + -webkit-transform: translate3d(0, 100%, 0); + transform: translate3d(0, 100%, 0); + } + + 100% { + opacity: 1; + -webkit-transform: none; + transform: none; + } +} + +@keyframes fadeInUp { + 0% { + opacity: 0; + -webkit-transform: translate3d(0, 100%, 0); + transform: translate3d(0, 100%, 0); + } + + 100% { + opacity: 1; + -webkit-transform: none; + transform: none; + } +} + +.fadeInUp { + -webkit-animation-name: fadeInUp; + animation-name: fadeInUp; +} + +@-webkit-keyframes fadeInUpBig { + 0% { + opacity: 0; + -webkit-transform: translate3d(0, 2000px, 0); + transform: translate3d(0, 2000px, 0); + } + + 100% { + opacity: 1; + -webkit-transform: none; + transform: none; + } +} + +@keyframes fadeInUpBig { + 0% { + opacity: 0; + -webkit-transform: translate3d(0, 2000px, 0); + transform: translate3d(0, 2000px, 0); + } + + 100% { + opacity: 1; + -webkit-transform: none; + transform: none; + } +} + +.fadeInUpBig { + -webkit-animation-name: fadeInUpBig; + animation-name: fadeInUpBig; +} + +@-webkit-keyframes fadeOut { + 0% { + opacity: 1; + } + + 100% { + opacity: 0; + } +} + +@keyframes fadeOut { + 0% { + opacity: 1; + } + + 100% { + opacity: 0; + } +} + +.fadeOut { + -webkit-animation-name: fadeOut; + animation-name: fadeOut; +} + +@-webkit-keyframes fadeOutDown { + 0% { + opacity: 1; + } + + 100% { + opacity: 0; + -webkit-transform: translate3d(0, 100%, 0); + transform: translate3d(0, 100%, 0); + } +} + +@keyframes fadeOutDown { + 0% { + opacity: 1; + } + + 100% { + opacity: 0; + -webkit-transform: translate3d(0, 100%, 0); + transform: translate3d(0, 100%, 0); + } +} + +.fadeOutDown { + -webkit-animation-name: fadeOutDown; + animation-name: fadeOutDown; +} + +@-webkit-keyframes fadeOutDownBig { + 0% { + opacity: 1; + } + + 100% { + opacity: 0; + -webkit-transform: translate3d(0, 2000px, 0); + transform: translate3d(0, 2000px, 0); + } +} + +@keyframes fadeOutDownBig { + 0% { + opacity: 1; + } + + 100% { + opacity: 0; + -webkit-transform: translate3d(0, 2000px, 0); + transform: translate3d(0, 2000px, 0); + } +} + +.fadeOutDownBig { + -webkit-animation-name: fadeOutDownBig; + animation-name: fadeOutDownBig; +} + +@-webkit-keyframes fadeOutLeft { + 0% { + opacity: 1; + } + + 100% { + opacity: 0; + -webkit-transform: translate3d(-100%, 0, 0); + transform: translate3d(-100%, 0, 0); + } +} + +@keyframes fadeOutLeft { + 0% { + opacity: 1; + } + + 100% { + opacity: 0; + -webkit-transform: translate3d(-100%, 0, 0); + transform: translate3d(-100%, 0, 0); + } +} + +.fadeOutLeft { + -webkit-animation-name: fadeOutLeft; + animation-name: fadeOutLeft; +} + +@-webkit-keyframes fadeOutLeftBig { + 0% { + opacity: 1; + } + + 100% { + opacity: 0; + -webkit-transform: translate3d(-2000px, 0, 0); + transform: translate3d(-2000px, 0, 0); + } +} + +@keyframes fadeOutLeftBig { + 0% { + opacity: 1; + } + + 100% { + opacity: 0; + -webkit-transform: translate3d(-2000px, 0, 0); + transform: translate3d(-2000px, 0, 0); + } +} + +.fadeOutLeftBig { + -webkit-animation-name: fadeOutLeftBig; + animation-name: fadeOutLeftBig; +} + +@-webkit-keyframes fadeOutRight { + 0% { + opacity: 1; + } + + 100% { + opacity: 0; + -webkit-transform: translate3d(100%, 0, 0); + transform: translate3d(100%, 0, 0); + } +} + +@keyframes fadeOutRight { + 0% { + opacity: 1; + } + + 100% { + opacity: 0; + -webkit-transform: translate3d(100%, 0, 0); + transform: translate3d(100%, 0, 0); + } +} + +.fadeOutRight { + -webkit-animation-name: fadeOutRight; + animation-name: fadeOutRight; +} + +@-webkit-keyframes fadeOutRightBig { + 0% { + opacity: 1; + } + + 100% { + opacity: 0; + -webkit-transform: translate3d(2000px, 0, 0); + transform: translate3d(2000px, 0, 0); + } +} + +@keyframes fadeOutRightBig { + 0% { + opacity: 1; + } + + 100% { + opacity: 0; + -webkit-transform: translate3d(2000px, 0, 0); + transform: translate3d(2000px, 0, 0); + } +} + +.fadeOutRightBig { + -webkit-animation-name: fadeOutRightBig; + animation-name: fadeOutRightBig; +} + +@-webkit-keyframes fadeOutUp { + 0% { + opacity: 1; + } + + 100% { + opacity: 0; + -webkit-transform: translate3d(0, -100%, 0); + transform: translate3d(0, -100%, 0); + } +} + +@keyframes fadeOutUp { + 0% { + opacity: 1; + } + + 100% { + opacity: 0; + -webkit-transform: translate3d(0, -100%, 0); + transform: translate3d(0, -100%, 0); + } +} + +.fadeOutUp { + -webkit-animation-name: fadeOutUp; + animation-name: fadeOutUp; +} + +@-webkit-keyframes fadeOutUpBig { + 0% { + opacity: 1; + } + + 100% { + opacity: 0; + -webkit-transform: translate3d(0, -2000px, 0); + transform: translate3d(0, -2000px, 0); + } +} + +@keyframes fadeOutUpBig { + 0% { + opacity: 1; + } + + 100% { + opacity: 0; + -webkit-transform: translate3d(0, -2000px, 0); + transform: translate3d(0, -2000px, 0); + } +} + +.fadeOutUpBig { + -webkit-animation-name: fadeOutUpBig; + animation-name: fadeOutUpBig; +} + +@-webkit-keyframes flip { + 0% { + -webkit-transform: perspective(400px) rotate3d(0, 1, 0, -360deg); + transform: perspective(400px) rotate3d(0, 1, 0, -360deg); + -webkit-animation-timing-function: ease-out; + animation-timing-function: ease-out; + } + + 40% { + -webkit-transform: perspective(400px) translate3d(0, 0, 150px) rotate3d(0, 1, 0, -190deg); + transform: perspective(400px) translate3d(0, 0, 150px) rotate3d(0, 1, 0, -190deg); + -webkit-animation-timing-function: ease-out; + animation-timing-function: ease-out; + } + + 50% { + -webkit-transform: perspective(400px) translate3d(0, 0, 150px) rotate3d(0, 1, 0, -170deg); + transform: perspective(400px) translate3d(0, 0, 150px) rotate3d(0, 1, 0, -170deg); + -webkit-animation-timing-function: ease-in; + animation-timing-function: ease-in; + } + + 80% { + -webkit-transform: perspective(400px) scale3d(.95, .95, .95); + transform: perspective(400px) scale3d(.95, .95, .95); + -webkit-animation-timing-function: ease-in; + animation-timing-function: ease-in; + } + + 100% { + -webkit-transform: perspective(400px); + transform: perspective(400px); + -webkit-animation-timing-function: ease-in; + animation-timing-function: ease-in; + } +} + +@keyframes flip { + 0% { + -webkit-transform: perspective(400px) rotate3d(0, 1, 0, -360deg); + transform: perspective(400px) rotate3d(0, 1, 0, -360deg); + -webkit-animation-timing-function: ease-out; + animation-timing-function: ease-out; + } + + 40% { + -webkit-transform: perspective(400px) translate3d(0, 0, 150px) rotate3d(0, 1, 0, -190deg); + transform: perspective(400px) translate3d(0, 0, 150px) rotate3d(0, 1, 0, -190deg); + -webkit-animation-timing-function: ease-out; + animation-timing-function: ease-out; + } + + 50% { + -webkit-transform: perspective(400px) translate3d(0, 0, 150px) rotate3d(0, 1, 0, -170deg); + transform: perspective(400px) translate3d(0, 0, 150px) rotate3d(0, 1, 0, -170deg); + -webkit-animation-timing-function: ease-in; + animation-timing-function: ease-in; + } + + 80% { + -webkit-transform: perspective(400px) scale3d(.95, .95, .95); + transform: perspective(400px) scale3d(.95, .95, .95); + -webkit-animation-timing-function: ease-in; + animation-timing-function: ease-in; + } + + 100% { + -webkit-transform: perspective(400px); + transform: perspective(400px); + -webkit-animation-timing-function: ease-in; + animation-timing-function: ease-in; + } +} + +.animated.flip { + -webkit-backface-visibility: visible; + backface-visibility: visible; + -webkit-animation-name: flip; + animation-name: flip; +} + +@-webkit-keyframes flipInX { + 0% { + -webkit-transform: perspective(400px) rotate3d(1, 0, 0, 90deg); + transform: perspective(400px) rotate3d(1, 0, 0, 90deg); + -webkit-animation-timing-function: ease-in; + animation-timing-function: ease-in; + opacity: 0; + } + + 40% { + -webkit-transform: perspective(400px) rotate3d(1, 0, 0, -20deg); + transform: perspective(400px) rotate3d(1, 0, 0, -20deg); + -webkit-animation-timing-function: ease-in; + animation-timing-function: ease-in; + } + + 60% { + -webkit-transform: perspective(400px) rotate3d(1, 0, 0, 10deg); + transform: perspective(400px) rotate3d(1, 0, 0, 10deg); + opacity: 1; + } + + 80% { + -webkit-transform: perspective(400px) rotate3d(1, 0, 0, -5deg); + transform: perspective(400px) rotate3d(1, 0, 0, -5deg); + } + + 100% { + -webkit-transform: perspective(400px); + transform: perspective(400px); + } +} + +@keyframes flipInX { + 0% { + -webkit-transform: perspective(400px) rotate3d(1, 0, 0, 90deg); + transform: perspective(400px) rotate3d(1, 0, 0, 90deg); + -webkit-animation-timing-function: ease-in; + animation-timing-function: ease-in; + opacity: 0; + } + + 40% { + -webkit-transform: perspective(400px) rotate3d(1, 0, 0, -20deg); + transform: perspective(400px) rotate3d(1, 0, 0, -20deg); + -webkit-animation-timing-function: ease-in; + animation-timing-function: ease-in; + } + + 60% { + -webkit-transform: perspective(400px) rotate3d(1, 0, 0, 10deg); + transform: perspective(400px) rotate3d(1, 0, 0, 10deg); + opacity: 1; + } + + 80% { + -webkit-transform: perspective(400px) rotate3d(1, 0, 0, -5deg); + transform: perspective(400px) rotate3d(1, 0, 0, -5deg); + } + + 100% { + -webkit-transform: perspective(400px); + transform: perspective(400px); + } +} + +.flipInX { + -webkit-backface-visibility: visible !important; + backface-visibility: visible !important; + -webkit-animation-name: flipInX; + animation-name: flipInX; +} + +@-webkit-keyframes flipInY { + 0% { + -webkit-transform: perspective(400px) rotate3d(0, 1, 0, 90deg); + transform: perspective(400px) rotate3d(0, 1, 0, 90deg); + -webkit-animation-timing-function: ease-in; + animation-timing-function: ease-in; + opacity: 0; + } + + 40% { + -webkit-transform: perspective(400px) rotate3d(0, 1, 0, -20deg); + transform: perspective(400px) rotate3d(0, 1, 0, -20deg); + -webkit-animation-timing-function: ease-in; + animation-timing-function: ease-in; + } + + 60% { + -webkit-transform: perspective(400px) rotate3d(0, 1, 0, 10deg); + transform: perspective(400px) rotate3d(0, 1, 0, 10deg); + opacity: 1; + } + + 80% { + -webkit-transform: perspective(400px) rotate3d(0, 1, 0, -5deg); + transform: perspective(400px) rotate3d(0, 1, 0, -5deg); + } + + 100% { + -webkit-transform: perspective(400px); + transform: perspective(400px); + } +} + +@keyframes flipInY { + 0% { + -webkit-transform: perspective(400px) rotate3d(0, 1, 0, 90deg); + transform: perspective(400px) rotate3d(0, 1, 0, 90deg); + -webkit-animation-timing-function: ease-in; + animation-timing-function: ease-in; + opacity: 0; + } + + 40% { + -webkit-transform: perspective(400px) rotate3d(0, 1, 0, -20deg); + transform: perspective(400px) rotate3d(0, 1, 0, -20deg); + -webkit-animation-timing-function: ease-in; + animation-timing-function: ease-in; + } + + 60% { + -webkit-transform: perspective(400px) rotate3d(0, 1, 0, 10deg); + transform: perspective(400px) rotate3d(0, 1, 0, 10deg); + opacity: 1; + } + + 80% { + -webkit-transform: perspective(400px) rotate3d(0, 1, 0, -5deg); + transform: perspective(400px) rotate3d(0, 1, 0, -5deg); + } + + 100% { + -webkit-transform: perspective(400px); + transform: perspective(400px); + } +} + +.flipInY { + -webkit-backface-visibility: visible !important; + backface-visibility: visible !important; + -webkit-animation-name: flipInY; + animation-name: flipInY; +} + +@-webkit-keyframes flipOutX { + 0% { + -webkit-transform: perspective(400px); + transform: perspective(400px); + } + + 30% { + -webkit-transform: perspective(400px) rotate3d(1, 0, 0, -20deg); + transform: perspective(400px) rotate3d(1, 0, 0, -20deg); + opacity: 1; + } + + 100% { + -webkit-transform: perspective(400px) rotate3d(1, 0, 0, 90deg); + transform: perspective(400px) rotate3d(1, 0, 0, 90deg); + opacity: 0; + } +} + +@keyframes flipOutX { + 0% { + -webkit-transform: perspective(400px); + transform: perspective(400px); + } + + 30% { + -webkit-transform: perspective(400px) rotate3d(1, 0, 0, -20deg); + transform: perspective(400px) rotate3d(1, 0, 0, -20deg); + opacity: 1; + } + + 100% { + -webkit-transform: perspective(400px) rotate3d(1, 0, 0, 90deg); + transform: perspective(400px) rotate3d(1, 0, 0, 90deg); + opacity: 0; + } +} + +.flipOutX { + -webkit-animation-name: flipOutX; + animation-name: flipOutX; + -webkit-backface-visibility: visible !important; + backface-visibility: visible !important; +} + +@-webkit-keyframes flipOutY { + 0% { + -webkit-transform: perspective(400px); + transform: perspective(400px); + } + + 30% { + -webkit-transform: perspective(400px) rotate3d(0, 1, 0, -15deg); + transform: perspective(400px) rotate3d(0, 1, 0, -15deg); + opacity: 1; + } + + 100% { + -webkit-transform: perspective(400px) rotate3d(0, 1, 0, 90deg); + transform: perspective(400px) rotate3d(0, 1, 0, 90deg); + opacity: 0; + } +} + +@keyframes flipOutY { + 0% { + -webkit-transform: perspective(400px); + transform: perspective(400px); + } + + 30% { + -webkit-transform: perspective(400px) rotate3d(0, 1, 0, -15deg); + transform: perspective(400px) rotate3d(0, 1, 0, -15deg); + opacity: 1; + } + + 100% { + -webkit-transform: perspective(400px) rotate3d(0, 1, 0, 90deg); + transform: perspective(400px) rotate3d(0, 1, 0, 90deg); + opacity: 0; + } +} + +.flipOutY { + -webkit-backface-visibility: visible !important; + backface-visibility: visible !important; + -webkit-animation-name: flipOutY; + animation-name: flipOutY; +} + +@-webkit-keyframes lightSpeedIn { + 0% { + -webkit-transform: translate3d(100%, 0, 0) skewX(-30deg); + transform: translate3d(100%, 0, 0) skewX(-30deg); + opacity: 0; + } + + 60% { + -webkit-transform: skewX(20deg); + transform: skewX(20deg); + opacity: 1; + } + + 80% { + -webkit-transform: skewX(-5deg); + transform: skewX(-5deg); + opacity: 1; + } + + 100% { + -webkit-transform: none; + transform: none; + opacity: 1; + } +} + +@keyframes lightSpeedIn { + 0% { + -webkit-transform: translate3d(100%, 0, 0) skewX(-30deg); + transform: translate3d(100%, 0, 0) skewX(-30deg); + opacity: 0; + } + + 60% { + -webkit-transform: skewX(20deg); + transform: skewX(20deg); + opacity: 1; + } + + 80% { + -webkit-transform: skewX(-5deg); + transform: skewX(-5deg); + opacity: 1; + } + + 100% { + -webkit-transform: none; + transform: none; + opacity: 1; + } +} + +.lightSpeedIn { + -webkit-animation-name: lightSpeedIn; + animation-name: lightSpeedIn; + -webkit-animation-timing-function: ease-out; + animation-timing-function: ease-out; +} + +@-webkit-keyframes lightSpeedOut { + 0% { + opacity: 1; + } + + 100% { + -webkit-transform: translate3d(100%, 0, 0) skewX(30deg); + transform: translate3d(100%, 0, 0) skewX(30deg); + opacity: 0; + } +} + +@keyframes lightSpeedOut { + 0% { + opacity: 1; + } + + 100% { + -webkit-transform: translate3d(100%, 0, 0) skewX(30deg); + transform: translate3d(100%, 0, 0) skewX(30deg); + opacity: 0; + } +} + +.lightSpeedOut { + -webkit-animation-name: lightSpeedOut; + animation-name: lightSpeedOut; + -webkit-animation-timing-function: ease-in; + animation-timing-function: ease-in; +} + +@-webkit-keyframes rotateIn { + 0% { + -webkit-transform-origin: center; + transform-origin: center; + -webkit-transform: rotate3d(0, 0, 1, -200deg); + transform: rotate3d(0, 0, 1, -200deg); + opacity: 0; + } + + 100% { + -webkit-transform-origin: center; + transform-origin: center; + -webkit-transform: none; + transform: none; + opacity: 1; + } +} + +@keyframes rotateIn { + 0% { + -webkit-transform-origin: center; + transform-origin: center; + -webkit-transform: rotate3d(0, 0, 1, -200deg); + transform: rotate3d(0, 0, 1, -200deg); + opacity: 0; + } + + 100% { + -webkit-transform-origin: center; + transform-origin: center; + -webkit-transform: none; + transform: none; + opacity: 1; + } +} + +.rotateIn { + -webkit-animation-name: rotateIn; + animation-name: rotateIn; +} + +@-webkit-keyframes rotateInDownLeft { + 0% { + -webkit-transform-origin: left bottom; + transform-origin: left bottom; + -webkit-transform: rotate3d(0, 0, 1, -45deg); + transform: rotate3d(0, 0, 1, -45deg); + opacity: 0; + } + + 100% { + -webkit-transform-origin: left bottom; + transform-origin: left bottom; + -webkit-transform: none; + transform: none; + opacity: 1; + } +} + +@keyframes rotateInDownLeft { + 0% { + -webkit-transform-origin: left bottom; + transform-origin: left bottom; + -webkit-transform: rotate3d(0, 0, 1, -45deg); + transform: rotate3d(0, 0, 1, -45deg); + opacity: 0; + } + + 100% { + -webkit-transform-origin: left bottom; + transform-origin: left bottom; + -webkit-transform: none; + transform: none; + opacity: 1; + } +} + +.rotateInDownLeft { + -webkit-animation-name: rotateInDownLeft; + animation-name: rotateInDownLeft; +} + +@-webkit-keyframes rotateInDownRight { + 0% { + -webkit-transform-origin: right bottom; + transform-origin: right bottom; + -webkit-transform: rotate3d(0, 0, 1, 45deg); + transform: rotate3d(0, 0, 1, 45deg); + opacity: 0; + } + + 100% { + -webkit-transform-origin: right bottom; + transform-origin: right bottom; + -webkit-transform: none; + transform: none; + opacity: 1; + } +} + +@keyframes rotateInDownRight { + 0% { + -webkit-transform-origin: right bottom; + transform-origin: right bottom; + -webkit-transform: rotate3d(0, 0, 1, 45deg); + transform: rotate3d(0, 0, 1, 45deg); + opacity: 0; + } + + 100% { + -webkit-transform-origin: right bottom; + transform-origin: right bottom; + -webkit-transform: none; + transform: none; + opacity: 1; + } +} + +.rotateInDownRight { + -webkit-animation-name: rotateInDownRight; + animation-name: rotateInDownRight; +} + +@-webkit-keyframes rotateInUpLeft { + 0% { + -webkit-transform-origin: left bottom; + transform-origin: left bottom; + -webkit-transform: rotate3d(0, 0, 1, 45deg); + transform: rotate3d(0, 0, 1, 45deg); + opacity: 0; + } + + 100% { + -webkit-transform-origin: left bottom; + transform-origin: left bottom; + -webkit-transform: none; + transform: none; + opacity: 1; + } +} + +@keyframes rotateInUpLeft { + 0% { + -webkit-transform-origin: left bottom; + transform-origin: left bottom; + -webkit-transform: rotate3d(0, 0, 1, 45deg); + transform: rotate3d(0, 0, 1, 45deg); + opacity: 0; + } + + 100% { + -webkit-transform-origin: left bottom; + transform-origin: left bottom; + -webkit-transform: none; + transform: none; + opacity: 1; + } +} + +.rotateInUpLeft { + -webkit-animation-name: rotateInUpLeft; + animation-name: rotateInUpLeft; +} + +@-webkit-keyframes rotateInUpRight { + 0% { + -webkit-transform-origin: right bottom; + transform-origin: right bottom; + -webkit-transform: rotate3d(0, 0, 1, -90deg); + transform: rotate3d(0, 0, 1, -90deg); + opacity: 0; + } + + 100% { + -webkit-transform-origin: right bottom; + transform-origin: right bottom; + -webkit-transform: none; + transform: none; + opacity: 1; + } +} + +@keyframes rotateInUpRight { + 0% { + -webkit-transform-origin: right bottom; + transform-origin: right bottom; + -webkit-transform: rotate3d(0, 0, 1, -90deg); + transform: rotate3d(0, 0, 1, -90deg); + opacity: 0; + } + + 100% { + -webkit-transform-origin: right bottom; + transform-origin: right bottom; + -webkit-transform: none; + transform: none; + opacity: 1; + } +} + +.rotateInUpRight { + -webkit-animation-name: rotateInUpRight; + animation-name: rotateInUpRight; +} + +@-webkit-keyframes rotateOut { + 0% { + -webkit-transform-origin: center; + transform-origin: center; + opacity: 1; + } + + 100% { + -webkit-transform-origin: center; + transform-origin: center; + -webkit-transform: rotate3d(0, 0, 1, 200deg); + transform: rotate3d(0, 0, 1, 200deg); + opacity: 0; + } +} + +@keyframes rotateOut { + 0% { + -webkit-transform-origin: center; + transform-origin: center; + opacity: 1; + } + + 100% { + -webkit-transform-origin: center; + transform-origin: center; + -webkit-transform: rotate3d(0, 0, 1, 200deg); + transform: rotate3d(0, 0, 1, 200deg); + opacity: 0; + } +} + +.rotateOut { + -webkit-animation-name: rotateOut; + animation-name: rotateOut; +} + +@-webkit-keyframes rotateOutDownLeft { + 0% { + -webkit-transform-origin: left bottom; + transform-origin: left bottom; + opacity: 1; + } + + 100% { + -webkit-transform-origin: left bottom; + transform-origin: left bottom; + -webkit-transform: rotate3d(0, 0, 1, 45deg); + transform: rotate3d(0, 0, 1, 45deg); + opacity: 0; + } +} + +@keyframes rotateOutDownLeft { + 0% { + -webkit-transform-origin: left bottom; + transform-origin: left bottom; + opacity: 1; + } + + 100% { + -webkit-transform-origin: left bottom; + transform-origin: left bottom; + -webkit-transform: rotate3d(0, 0, 1, 45deg); + transform: rotate3d(0, 0, 1, 45deg); + opacity: 0; + } +} + +.rotateOutDownLeft { + -webkit-animation-name: rotateOutDownLeft; + animation-name: rotateOutDownLeft; +} + +@-webkit-keyframes rotateOutDownRight { + 0% { + -webkit-transform-origin: right bottom; + transform-origin: right bottom; + opacity: 1; + } + + 100% { + -webkit-transform-origin: right bottom; + transform-origin: right bottom; + -webkit-transform: rotate3d(0, 0, 1, -45deg); + transform: rotate3d(0, 0, 1, -45deg); + opacity: 0; + } +} + +@keyframes rotateOutDownRight { + 0% { + -webkit-transform-origin: right bottom; + transform-origin: right bottom; + opacity: 1; + } + + 100% { + -webkit-transform-origin: right bottom; + transform-origin: right bottom; + -webkit-transform: rotate3d(0, 0, 1, -45deg); + transform: rotate3d(0, 0, 1, -45deg); + opacity: 0; + } +} + +.rotateOutDownRight { + -webkit-animation-name: rotateOutDownRight; + animation-name: rotateOutDownRight; +} + +@-webkit-keyframes rotateOutUpLeft { + 0% { + -webkit-transform-origin: left bottom; + transform-origin: left bottom; + opacity: 1; + } + + 100% { + -webkit-transform-origin: left bottom; + transform-origin: left bottom; + -webkit-transform: rotate3d(0, 0, 1, -45deg); + transform: rotate3d(0, 0, 1, -45deg); + opacity: 0; + } +} + +@keyframes rotateOutUpLeft { + 0% { + -webkit-transform-origin: left bottom; + transform-origin: left bottom; + opacity: 1; + } + + 100% { + -webkit-transform-origin: left bottom; + transform-origin: left bottom; + -webkit-transform: rotate3d(0, 0, 1, -45deg); + transform: rotate3d(0, 0, 1, -45deg); + opacity: 0; + } +} + +.rotateOutUpLeft { + -webkit-animation-name: rotateOutUpLeft; + animation-name: rotateOutUpLeft; +} + +@-webkit-keyframes rotateOutUpRight { + 0% { + -webkit-transform-origin: right bottom; + transform-origin: right bottom; + opacity: 1; + } + + 100% { + -webkit-transform-origin: right bottom; + transform-origin: right bottom; + -webkit-transform: rotate3d(0, 0, 1, 90deg); + transform: rotate3d(0, 0, 1, 90deg); + opacity: 0; + } +} + +@keyframes rotateOutUpRight { + 0% { + -webkit-transform-origin: right bottom; + transform-origin: right bottom; + opacity: 1; + } + + 100% { + -webkit-transform-origin: right bottom; + transform-origin: right bottom; + -webkit-transform: rotate3d(0, 0, 1, 90deg); + transform: rotate3d(0, 0, 1, 90deg); + opacity: 0; + } +} + +.rotateOutUpRight { + -webkit-animation-name: rotateOutUpRight; + animation-name: rotateOutUpRight; +} + +@-webkit-keyframes hinge { + 0% { + -webkit-transform-origin: top left; + transform-origin: top left; + -webkit-animation-timing-function: ease-in-out; + animation-timing-function: ease-in-out; + } + + 20%, 60% { + -webkit-transform: rotate3d(0, 0, 1, 80deg); + transform: rotate3d(0, 0, 1, 80deg); + -webkit-transform-origin: top left; + transform-origin: top left; + -webkit-animation-timing-function: ease-in-out; + animation-timing-function: ease-in-out; + } + + 40%, 80% { + -webkit-transform: rotate3d(0, 0, 1, 60deg); + transform: rotate3d(0, 0, 1, 60deg); + -webkit-transform-origin: top left; + transform-origin: top left; + -webkit-animation-timing-function: ease-in-out; + animation-timing-function: ease-in-out; + opacity: 1; + } + + 100% { + -webkit-transform: translate3d(0, 700px, 0); + transform: translate3d(0, 700px, 0); + opacity: 0; + } +} + +@keyframes hinge { + 0% { + -webkit-transform-origin: top left; + transform-origin: top left; + -webkit-animation-timing-function: ease-in-out; + animation-timing-function: ease-in-out; + } + + 20%, 60% { + -webkit-transform: rotate3d(0, 0, 1, 80deg); + transform: rotate3d(0, 0, 1, 80deg); + -webkit-transform-origin: top left; + transform-origin: top left; + -webkit-animation-timing-function: ease-in-out; + animation-timing-function: ease-in-out; + } + + 40%, 80% { + -webkit-transform: rotate3d(0, 0, 1, 60deg); + transform: rotate3d(0, 0, 1, 60deg); + -webkit-transform-origin: top left; + transform-origin: top left; + -webkit-animation-timing-function: ease-in-out; + animation-timing-function: ease-in-out; + opacity: 1; + } + + 100% { + -webkit-transform: translate3d(0, 700px, 0); + transform: translate3d(0, 700px, 0); + opacity: 0; + } +} + +.hinge { + -webkit-animation-name: hinge; + animation-name: hinge; +} + +/* originally authored by Nick Pettit - https://github.com/nickpettit/glide */ + +@-webkit-keyframes rollIn { + 0% { + opacity: 0; + -webkit-transform: translate3d(-100%, 0, 0) rotate3d(0, 0, 1, -120deg); + transform: translate3d(-100%, 0, 0) rotate3d(0, 0, 1, -120deg); + } + + 100% { + opacity: 1; + -webkit-transform: none; + transform: none; + } +} + +@keyframes rollIn { + 0% { + opacity: 0; + -webkit-transform: translate3d(-100%, 0, 0) rotate3d(0, 0, 1, -120deg); + transform: translate3d(-100%, 0, 0) rotate3d(0, 0, 1, -120deg); + } + + 100% { + opacity: 1; + -webkit-transform: none; + transform: none; + } +} + +.rollIn { + -webkit-animation-name: rollIn; + animation-name: rollIn; +} + +/* originally authored by Nick Pettit - https://github.com/nickpettit/glide */ + +@-webkit-keyframes rollOut { + 0% { + opacity: 1; + } + + 100% { + opacity: 0; + -webkit-transform: translate3d(100%, 0, 0) rotate3d(0, 0, 1, 120deg); + transform: translate3d(100%, 0, 0) rotate3d(0, 0, 1, 120deg); + } +} + +@keyframes rollOut { + 0% { + opacity: 1; + } + + 100% { + opacity: 0; + -webkit-transform: translate3d(100%, 0, 0) rotate3d(0, 0, 1, 120deg); + transform: translate3d(100%, 0, 0) rotate3d(0, 0, 1, 120deg); + } +} + +.rollOut { + -webkit-animation-name: rollOut; + animation-name: rollOut; +} + +@-webkit-keyframes zoomIn { + 0% { + opacity: 0; + -webkit-transform: scale3d(.3, .3, .3); + transform: scale3d(.3, .3, .3); + } + + 50% { + opacity: 1; + } +} + +@keyframes zoomIn { + 0% { + opacity: 0; + -webkit-transform: scale3d(.3, .3, .3); + transform: scale3d(.3, .3, .3); + } + + 50% { + opacity: 1; + } +} + +.zoomIn { + -webkit-animation-name: zoomIn; + animation-name: zoomIn; +} + +@-webkit-keyframes zoomInDown { + 0% { + opacity: 0; + -webkit-transform: scale3d(.1, .1, .1) translate3d(0, -1000px, 0); + transform: scale3d(.1, .1, .1) translate3d(0, -1000px, 0); + -webkit-animation-timing-function: cubic-bezier(0.550, 0.055, 0.675, 0.190); + animation-timing-function: cubic-bezier(0.550, 0.055, 0.675, 0.190); + } + + 60% { + opacity: 1; + -webkit-transform: scale3d(.475, .475, .475) translate3d(0, 60px, 0); + transform: scale3d(.475, .475, .475) translate3d(0, 60px, 0); + -webkit-animation-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1); + animation-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1); + } +} + +@keyframes zoomInDown { + 0% { + opacity: 0; + -webkit-transform: scale3d(.1, .1, .1) translate3d(0, -1000px, 0); + transform: scale3d(.1, .1, .1) translate3d(0, -1000px, 0); + -webkit-animation-timing-function: cubic-bezier(0.550, 0.055, 0.675, 0.190); + animation-timing-function: cubic-bezier(0.550, 0.055, 0.675, 0.190); + } + + 60% { + opacity: 1; + -webkit-transform: scale3d(.475, .475, .475) translate3d(0, 60px, 0); + transform: scale3d(.475, .475, .475) translate3d(0, 60px, 0); + -webkit-animation-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1); + animation-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1); + } +} + +.zoomInDown { + -webkit-animation-name: zoomInDown; + animation-name: zoomInDown; +} + +@-webkit-keyframes zoomInLeft { + 0% { + opacity: 0; + -webkit-transform: scale3d(.1, .1, .1) translate3d(-1000px, 0, 0); + transform: scale3d(.1, .1, .1) translate3d(-1000px, 0, 0); + -webkit-animation-timing-function: cubic-bezier(0.550, 0.055, 0.675, 0.190); + animation-timing-function: cubic-bezier(0.550, 0.055, 0.675, 0.190); + } + + 60% { + opacity: 1; + -webkit-transform: scale3d(.475, .475, .475) translate3d(10px, 0, 0); + transform: scale3d(.475, .475, .475) translate3d(10px, 0, 0); + -webkit-animation-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1); + animation-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1); + } +} + +@keyframes zoomInLeft { + 0% { + opacity: 0; + -webkit-transform: scale3d(.1, .1, .1) translate3d(-1000px, 0, 0); + transform: scale3d(.1, .1, .1) translate3d(-1000px, 0, 0); + -webkit-animation-timing-function: cubic-bezier(0.550, 0.055, 0.675, 0.190); + animation-timing-function: cubic-bezier(0.550, 0.055, 0.675, 0.190); + } + + 60% { + opacity: 1; + -webkit-transform: scale3d(.475, .475, .475) translate3d(10px, 0, 0); + transform: scale3d(.475, .475, .475) translate3d(10px, 0, 0); + -webkit-animation-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1); + animation-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1); + } +} + +.zoomInLeft { + -webkit-animation-name: zoomInLeft; + animation-name: zoomInLeft; +} + +@-webkit-keyframes zoomInRight { + 0% { + opacity: 0; + -webkit-transform: scale3d(.1, .1, .1) translate3d(1000px, 0, 0); + transform: scale3d(.1, .1, .1) translate3d(1000px, 0, 0); + -webkit-animation-timing-function: cubic-bezier(0.550, 0.055, 0.675, 0.190); + animation-timing-function: cubic-bezier(0.550, 0.055, 0.675, 0.190); + } + + 60% { + opacity: 1; + -webkit-transform: scale3d(.475, .475, .475) translate3d(-10px, 0, 0); + transform: scale3d(.475, .475, .475) translate3d(-10px, 0, 0); + -webkit-animation-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1); + animation-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1); + } +} + +@keyframes zoomInRight { + 0% { + opacity: 0; + -webkit-transform: scale3d(.1, .1, .1) translate3d(1000px, 0, 0); + transform: scale3d(.1, .1, .1) translate3d(1000px, 0, 0); + -webkit-animation-timing-function: cubic-bezier(0.550, 0.055, 0.675, 0.190); + animation-timing-function: cubic-bezier(0.550, 0.055, 0.675, 0.190); + } + + 60% { + opacity: 1; + -webkit-transform: scale3d(.475, .475, .475) translate3d(-10px, 0, 0); + transform: scale3d(.475, .475, .475) translate3d(-10px, 0, 0); + -webkit-animation-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1); + animation-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1); + } +} + +.zoomInRight { + -webkit-animation-name: zoomInRight; + animation-name: zoomInRight; +} + +@-webkit-keyframes zoomInUp { + 0% { + opacity: 0; + -webkit-transform: scale3d(.1, .1, .1) translate3d(0, 1000px, 0); + transform: scale3d(.1, .1, .1) translate3d(0, 1000px, 0); + -webkit-animation-timing-function: cubic-bezier(0.550, 0.055, 0.675, 0.190); + animation-timing-function: cubic-bezier(0.550, 0.055, 0.675, 0.190); + } + + 60% { + opacity: 1; + -webkit-transform: scale3d(.475, .475, .475) translate3d(0, -60px, 0); + transform: scale3d(.475, .475, .475) translate3d(0, -60px, 0); + -webkit-animation-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1); + animation-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1); + } +} + +@keyframes zoomInUp { + 0% { + opacity: 0; + -webkit-transform: scale3d(.1, .1, .1) translate3d(0, 1000px, 0); + transform: scale3d(.1, .1, .1) translate3d(0, 1000px, 0); + -webkit-animation-timing-function: cubic-bezier(0.550, 0.055, 0.675, 0.190); + animation-timing-function: cubic-bezier(0.550, 0.055, 0.675, 0.190); + } + + 60% { + opacity: 1; + -webkit-transform: scale3d(.475, .475, .475) translate3d(0, -60px, 0); + transform: scale3d(.475, .475, .475) translate3d(0, -60px, 0); + -webkit-animation-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1); + animation-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1); + } +} + +.zoomInUp { + -webkit-animation-name: zoomInUp; + animation-name: zoomInUp; +} + +@-webkit-keyframes zoomOut { + 0% { + opacity: 1; + } + + 50% { + opacity: 0; + -webkit-transform: scale3d(.3, .3, .3); + transform: scale3d(.3, .3, .3); + } + + 100% { + opacity: 0; + } +} + +@keyframes zoomOut { + 0% { + opacity: 1; + } + + 50% { + opacity: 0; + -webkit-transform: scale3d(.3, .3, .3); + transform: scale3d(.3, .3, .3); + } + + 100% { + opacity: 0; + } +} + +.zoomOut { + -webkit-animation-name: zoomOut; + animation-name: zoomOut; +} + +@-webkit-keyframes zoomOutDown { + 40% { + opacity: 1; + -webkit-transform: scale3d(.475, .475, .475) translate3d(0, -60px, 0); + transform: scale3d(.475, .475, .475) translate3d(0, -60px, 0); + -webkit-animation-timing-function: cubic-bezier(0.550, 0.055, 0.675, 0.190); + animation-timing-function: cubic-bezier(0.550, 0.055, 0.675, 0.190); + } + + 100% { + opacity: 0; + -webkit-transform: scale3d(.1, .1, .1) translate3d(0, 2000px, 0); + transform: scale3d(.1, .1, .1) translate3d(0, 2000px, 0); + -webkit-transform-origin: center bottom; + transform-origin: center bottom; + -webkit-animation-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1); + animation-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1); + } +} + +@keyframes zoomOutDown { + 40% { + opacity: 1; + -webkit-transform: scale3d(.475, .475, .475) translate3d(0, -60px, 0); + transform: scale3d(.475, .475, .475) translate3d(0, -60px, 0); + -webkit-animation-timing-function: cubic-bezier(0.550, 0.055, 0.675, 0.190); + animation-timing-function: cubic-bezier(0.550, 0.055, 0.675, 0.190); + } + + 100% { + opacity: 0; + -webkit-transform: scale3d(.1, .1, .1) translate3d(0, 2000px, 0); + transform: scale3d(.1, .1, .1) translate3d(0, 2000px, 0); + -webkit-transform-origin: center bottom; + transform-origin: center bottom; + -webkit-animation-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1); + animation-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1); + } +} + +.zoomOutDown { + -webkit-animation-name: zoomOutDown; + animation-name: zoomOutDown; +} + +@-webkit-keyframes zoomOutLeft { + 40% { + opacity: 1; + -webkit-transform: scale3d(.475, .475, .475) translate3d(42px, 0, 0); + transform: scale3d(.475, .475, .475) translate3d(42px, 0, 0); + } + + 100% { + opacity: 0; + -webkit-transform: scale(.1) translate3d(-2000px, 0, 0); + transform: scale(.1) translate3d(-2000px, 0, 0); + -webkit-transform-origin: left center; + transform-origin: left center; + } +} + +@keyframes zoomOutLeft { + 40% { + opacity: 1; + -webkit-transform: scale3d(.475, .475, .475) translate3d(42px, 0, 0); + transform: scale3d(.475, .475, .475) translate3d(42px, 0, 0); + } + + 100% { + opacity: 0; + -webkit-transform: scale(.1) translate3d(-2000px, 0, 0); + transform: scale(.1) translate3d(-2000px, 0, 0); + -webkit-transform-origin: left center; + transform-origin: left center; + } +} + +.zoomOutLeft { + -webkit-animation-name: zoomOutLeft; + animation-name: zoomOutLeft; +} + +@-webkit-keyframes zoomOutRight { + 40% { + opacity: 1; + -webkit-transform: scale3d(.475, .475, .475) translate3d(-42px, 0, 0); + transform: scale3d(.475, .475, .475) translate3d(-42px, 0, 0); + } + + 100% { + opacity: 0; + -webkit-transform: scale(.1) translate3d(2000px, 0, 0); + transform: scale(.1) translate3d(2000px, 0, 0); + -webkit-transform-origin: right center; + transform-origin: right center; + } +} + +@keyframes zoomOutRight { + 40% { + opacity: 1; + -webkit-transform: scale3d(.475, .475, .475) translate3d(-42px, 0, 0); + transform: scale3d(.475, .475, .475) translate3d(-42px, 0, 0); + } + + 100% { + opacity: 0; + -webkit-transform: scale(.1) translate3d(2000px, 0, 0); + transform: scale(.1) translate3d(2000px, 0, 0); + -webkit-transform-origin: right center; + transform-origin: right center; + } +} + +.zoomOutRight { + -webkit-animation-name: zoomOutRight; + animation-name: zoomOutRight; +} + +@-webkit-keyframes zoomOutUp { + 40% { + opacity: 1; + -webkit-transform: scale3d(.475, .475, .475) translate3d(0, 60px, 0); + transform: scale3d(.475, .475, .475) translate3d(0, 60px, 0); + -webkit-animation-timing-function: cubic-bezier(0.550, 0.055, 0.675, 0.190); + animation-timing-function: cubic-bezier(0.550, 0.055, 0.675, 0.190); + } + + 100% { + opacity: 0; + -webkit-transform: scale3d(.1, .1, .1) translate3d(0, -2000px, 0); + transform: scale3d(.1, .1, .1) translate3d(0, -2000px, 0); + -webkit-transform-origin: center bottom; + transform-origin: center bottom; + -webkit-animation-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1); + animation-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1); + } +} + +@keyframes zoomOutUp { + 40% { + opacity: 1; + -webkit-transform: scale3d(.475, .475, .475) translate3d(0, 60px, 0); + transform: scale3d(.475, .475, .475) translate3d(0, 60px, 0); + -webkit-animation-timing-function: cubic-bezier(0.550, 0.055, 0.675, 0.190); + animation-timing-function: cubic-bezier(0.550, 0.055, 0.675, 0.190); + } + + 100% { + opacity: 0; + -webkit-transform: scale3d(.1, .1, .1) translate3d(0, -2000px, 0); + transform: scale3d(.1, .1, .1) translate3d(0, -2000px, 0); + -webkit-transform-origin: center bottom; + transform-origin: center bottom; + -webkit-animation-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1); + animation-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1); + } +} + +.zoomOutUp { + -webkit-animation-name: zoomOutUp; + animation-name: zoomOutUp; +} + +@-webkit-keyframes slideInDown { + 0% { + -webkit-transform: translate3d(0, -100%, 0); + transform: translate3d(0, -100%, 0); + visibility: visible; + } + + 100% { + -webkit-transform: translate3d(0, 0, 0); + transform: translate3d(0, 0, 0); + } +} + +@keyframes slideInDown { + 0% { + -webkit-transform: translate3d(0, -100%, 0); + transform: translate3d(0, -100%, 0); + visibility: visible; + } + + 100% { + -webkit-transform: translate3d(0, 0, 0); + transform: translate3d(0, 0, 0); + } +} + +.slideInDown { + -webkit-animation-name: slideInDown; + animation-name: slideInDown; +} + +@-webkit-keyframes slideInLeft { + 0% { + -webkit-transform: translate3d(-100%, 0, 0); + transform: translate3d(-100%, 0, 0); + visibility: visible; + } + + 100% { + -webkit-transform: translate3d(0, 0, 0); + transform: translate3d(0, 0, 0); + } +} + +@keyframes slideInLeft { + 0% { + -webkit-transform: translate3d(-100%, 0, 0); + transform: translate3d(-100%, 0, 0); + visibility: visible; + } + + 100% { + -webkit-transform: translate3d(0, 0, 0); + transform: translate3d(0, 0, 0); + } +} + +.slideInLeft { + -webkit-animation-name: slideInLeft; + animation-name: slideInLeft; +} + +@-webkit-keyframes slideInRight { + 0% { + -webkit-transform: translate3d(100%, 0, 0); + transform: translate3d(100%, 0, 0); + visibility: visible; + } + + 100% { + -webkit-transform: translate3d(0, 0, 0); + transform: translate3d(0, 0, 0); + } +} + +@keyframes slideInRight { + 0% { + -webkit-transform: translate3d(100%, 0, 0); + transform: translate3d(100%, 0, 0); + visibility: visible; + } + + 100% { + -webkit-transform: translate3d(0, 0, 0); + transform: translate3d(0, 0, 0); + } +} + +.slideInRight { + -webkit-animation-name: slideInRight; + animation-name: slideInRight; +} + +@-webkit-keyframes slideInUp { + 0% { + -webkit-transform: translate3d(0, 100%, 0); + transform: translate3d(0, 100%, 0); + visibility: visible; + } + + 100% { + -webkit-transform: translate3d(0, 0, 0); + transform: translate3d(0, 0, 0); + } +} + +@keyframes slideInUp { + 0% { + -webkit-transform: translate3d(0, 100%, 0); + transform: translate3d(0, 100%, 0); + visibility: visible; + } + + 100% { + -webkit-transform: translate3d(0, 0, 0); + transform: translate3d(0, 0, 0); + } +} + +.slideInUp { + -webkit-animation-name: slideInUp; + animation-name: slideInUp; +} + +@-webkit-keyframes slideOutDown { + 0% { + -webkit-transform: translate3d(0, 0, 0); + transform: translate3d(0, 0, 0); + } + + 100% { + visibility: hidden; + -webkit-transform: translate3d(0, 100%, 0); + transform: translate3d(0, 100%, 0); + } +} + +@keyframes slideOutDown { + 0% { + -webkit-transform: translate3d(0, 0, 0); + transform: translate3d(0, 0, 0); + } + + 100% { + visibility: hidden; + -webkit-transform: translate3d(0, 100%, 0); + transform: translate3d(0, 100%, 0); + } +} + +.slideOutDown { + -webkit-animation-name: slideOutDown; + animation-name: slideOutDown; +} + +@-webkit-keyframes slideOutLeft { + 0% { + -webkit-transform: translate3d(0, 0, 0); + transform: translate3d(0, 0, 0); + } + + 100% { + visibility: hidden; + -webkit-transform: translate3d(-100%, 0, 0); + transform: translate3d(-100%, 0, 0); + } +} + +@keyframes slideOutLeft { + 0% { + -webkit-transform: translate3d(0, 0, 0); + transform: translate3d(0, 0, 0); + } + + 100% { + visibility: hidden; + -webkit-transform: translate3d(-100%, 0, 0); + transform: translate3d(-100%, 0, 0); + } +} + +.slideOutLeft { + -webkit-animation-name: slideOutLeft; + animation-name: slideOutLeft; +} + +@-webkit-keyframes slideOutRight { + 0% { + -webkit-transform: translate3d(0, 0, 0); + transform: translate3d(0, 0, 0); + } + + 100% { + visibility: hidden; + -webkit-transform: translate3d(100%, 0, 0); + transform: translate3d(100%, 0, 0); + } +} + +@keyframes slideOutRight { + 0% { + -webkit-transform: translate3d(0, 0, 0); + transform: translate3d(0, 0, 0); + } + + 100% { + visibility: hidden; + -webkit-transform: translate3d(100%, 0, 0); + transform: translate3d(100%, 0, 0); + } +} + +.slideOutRight { + -webkit-animation-name: slideOutRight; + animation-name: slideOutRight; +} + +@-webkit-keyframes slideOutUp { + 0% { + -webkit-transform: translate3d(0, 0, 0); + transform: translate3d(0, 0, 0); + } + + 100% { + visibility: hidden; + -webkit-transform: translate3d(0, -100%, 0); + transform: translate3d(0, -100%, 0); + } +} + +@keyframes slideOutUp { + 0% { + -webkit-transform: translate3d(0, 0, 0); + transform: translate3d(0, 0, 0); + } + + 100% { + visibility: hidden; + -webkit-transform: translate3d(0, -100%, 0); + transform: translate3d(0, -100%, 0); + } +} + +.slideOutUp { + -webkit-animation-name: slideOutUp; + animation-name: slideOutUp; +} diff --git a/mayan/apps/appearance/static/appearance/packages/bootstrap-3.3.4-dist/css/bootstrap-theme.css b/mayan/apps/appearance/static/appearance/packages/bootstrap-3.3.4-dist/css/bootstrap-theme.css new file mode 100644 index 0000000000..b0fdfcbf9b --- /dev/null +++ b/mayan/apps/appearance/static/appearance/packages/bootstrap-3.3.4-dist/css/bootstrap-theme.css @@ -0,0 +1,476 @@ +/*! + * Bootstrap v3.3.4 (http://getbootstrap.com) + * Copyright 2011-2015 Twitter, Inc. + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + */ + +.btn-default, +.btn-primary, +.btn-success, +.btn-info, +.btn-warning, +.btn-danger { + text-shadow: 0 -1px 0 rgba(0, 0, 0, .2); + -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, .15), 0 1px 1px rgba(0, 0, 0, .075); + box-shadow: inset 0 1px 0 rgba(255, 255, 255, .15), 0 1px 1px rgba(0, 0, 0, .075); +} +.btn-default:active, +.btn-primary:active, +.btn-success:active, +.btn-info:active, +.btn-warning:active, +.btn-danger:active, +.btn-default.active, +.btn-primary.active, +.btn-success.active, +.btn-info.active, +.btn-warning.active, +.btn-danger.active { + -webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, .125); + box-shadow: inset 0 3px 5px rgba(0, 0, 0, .125); +} +.btn-default .badge, +.btn-primary .badge, +.btn-success .badge, +.btn-info .badge, +.btn-warning .badge, +.btn-danger .badge { + text-shadow: none; +} +.btn:active, +.btn.active { + background-image: none; +} +.btn-default { + text-shadow: 0 1px 0 #fff; + background-image: -webkit-linear-gradient(top, #fff 0%, #e0e0e0 100%); + background-image: -o-linear-gradient(top, #fff 0%, #e0e0e0 100%); + background-image: -webkit-gradient(linear, left top, left bottom, from(#fff), to(#e0e0e0)); + background-image: linear-gradient(to bottom, #fff 0%, #e0e0e0 100%); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff', endColorstr='#ffe0e0e0', GradientType=0); + filter: progid:DXImageTransform.Microsoft.gradient(enabled = false); + background-repeat: repeat-x; + border-color: #dbdbdb; + border-color: #ccc; +} +.btn-default:hover, +.btn-default:focus { + background-color: #e0e0e0; + background-position: 0 -15px; +} +.btn-default:active, +.btn-default.active { + background-color: #e0e0e0; + border-color: #dbdbdb; +} +.btn-default.disabled, +.btn-default:disabled, +.btn-default[disabled] { + background-color: #e0e0e0; + background-image: none; +} +.btn-primary { + background-image: -webkit-linear-gradient(top, #337ab7 0%, #265a88 100%); + background-image: -o-linear-gradient(top, #337ab7 0%, #265a88 100%); + background-image: -webkit-gradient(linear, left top, left bottom, from(#337ab7), to(#265a88)); + background-image: linear-gradient(to bottom, #337ab7 0%, #265a88 100%); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff265a88', GradientType=0); + filter: progid:DXImageTransform.Microsoft.gradient(enabled = false); + background-repeat: repeat-x; + border-color: #245580; +} +.btn-primary:hover, +.btn-primary:focus { + background-color: #265a88; + background-position: 0 -15px; +} +.btn-primary:active, +.btn-primary.active { + background-color: #265a88; + border-color: #245580; +} +.btn-primary.disabled, +.btn-primary:disabled, +.btn-primary[disabled] { + background-color: #265a88; + background-image: none; +} +.btn-success { + background-image: -webkit-linear-gradient(top, #5cb85c 0%, #419641 100%); + background-image: -o-linear-gradient(top, #5cb85c 0%, #419641 100%); + background-image: -webkit-gradient(linear, left top, left bottom, from(#5cb85c), to(#419641)); + background-image: linear-gradient(to bottom, #5cb85c 0%, #419641 100%); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5cb85c', endColorstr='#ff419641', GradientType=0); + filter: progid:DXImageTransform.Microsoft.gradient(enabled = false); + background-repeat: repeat-x; + border-color: #3e8f3e; +} +.btn-success:hover, +.btn-success:focus { + background-color: #419641; + background-position: 0 -15px; +} +.btn-success:active, +.btn-success.active { + background-color: #419641; + border-color: #3e8f3e; +} +.btn-success.disabled, +.btn-success:disabled, +.btn-success[disabled] { + background-color: #419641; + background-image: none; +} +.btn-info { + background-image: -webkit-linear-gradient(top, #5bc0de 0%, #2aabd2 100%); + background-image: -o-linear-gradient(top, #5bc0de 0%, #2aabd2 100%); + background-image: -webkit-gradient(linear, left top, left bottom, from(#5bc0de), to(#2aabd2)); + background-image: linear-gradient(to bottom, #5bc0de 0%, #2aabd2 100%); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5bc0de', endColorstr='#ff2aabd2', GradientType=0); + filter: progid:DXImageTransform.Microsoft.gradient(enabled = false); + background-repeat: repeat-x; + border-color: #28a4c9; +} +.btn-info:hover, +.btn-info:focus { + background-color: #2aabd2; + background-position: 0 -15px; +} +.btn-info:active, +.btn-info.active { + background-color: #2aabd2; + border-color: #28a4c9; +} +.btn-info.disabled, +.btn-info:disabled, +.btn-info[disabled] { + background-color: #2aabd2; + background-image: none; +} +.btn-warning { + background-image: -webkit-linear-gradient(top, #f0ad4e 0%, #eb9316 100%); + background-image: -o-linear-gradient(top, #f0ad4e 0%, #eb9316 100%); + background-image: -webkit-gradient(linear, left top, left bottom, from(#f0ad4e), to(#eb9316)); + background-image: linear-gradient(to bottom, #f0ad4e 0%, #eb9316 100%); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff0ad4e', endColorstr='#ffeb9316', GradientType=0); + filter: progid:DXImageTransform.Microsoft.gradient(enabled = false); + background-repeat: repeat-x; + border-color: #e38d13; +} +.btn-warning:hover, +.btn-warning:focus { + background-color: #eb9316; + background-position: 0 -15px; +} +.btn-warning:active, +.btn-warning.active { + background-color: #eb9316; + border-color: #e38d13; +} +.btn-warning.disabled, +.btn-warning:disabled, +.btn-warning[disabled] { + background-color: #eb9316; + background-image: none; +} +.btn-danger { + background-image: -webkit-linear-gradient(top, #d9534f 0%, #c12e2a 100%); + background-image: -o-linear-gradient(top, #d9534f 0%, #c12e2a 100%); + background-image: -webkit-gradient(linear, left top, left bottom, from(#d9534f), to(#c12e2a)); + background-image: linear-gradient(to bottom, #d9534f 0%, #c12e2a 100%); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9534f', endColorstr='#ffc12e2a', GradientType=0); + filter: progid:DXImageTransform.Microsoft.gradient(enabled = false); + background-repeat: repeat-x; + border-color: #b92c28; +} +.btn-danger:hover, +.btn-danger:focus { + background-color: #c12e2a; + background-position: 0 -15px; +} +.btn-danger:active, +.btn-danger.active { + background-color: #c12e2a; + border-color: #b92c28; +} +.btn-danger.disabled, +.btn-danger:disabled, +.btn-danger[disabled] { + background-color: #c12e2a; + background-image: none; +} +.thumbnail, +.img-thumbnail { + -webkit-box-shadow: 0 1px 2px rgba(0, 0, 0, .075); + box-shadow: 0 1px 2px rgba(0, 0, 0, .075); +} +.dropdown-menu > li > a:hover, +.dropdown-menu > li > a:focus { + background-color: #e8e8e8; + background-image: -webkit-linear-gradient(top, #f5f5f5 0%, #e8e8e8 100%); + background-image: -o-linear-gradient(top, #f5f5f5 0%, #e8e8e8 100%); + background-image: -webkit-gradient(linear, left top, left bottom, from(#f5f5f5), to(#e8e8e8)); + background-image: linear-gradient(to bottom, #f5f5f5 0%, #e8e8e8 100%); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff5f5f5', endColorstr='#ffe8e8e8', GradientType=0); + background-repeat: repeat-x; +} +.dropdown-menu > .active > a, +.dropdown-menu > .active > a:hover, +.dropdown-menu > .active > a:focus { + background-color: #2e6da4; + background-image: -webkit-linear-gradient(top, #337ab7 0%, #2e6da4 100%); + background-image: -o-linear-gradient(top, #337ab7 0%, #2e6da4 100%); + background-image: -webkit-gradient(linear, left top, left bottom, from(#337ab7), to(#2e6da4)); + background-image: linear-gradient(to bottom, #337ab7 0%, #2e6da4 100%); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff2e6da4', GradientType=0); + background-repeat: repeat-x; +} +.navbar-default { + background-image: -webkit-linear-gradient(top, #fff 0%, #f8f8f8 100%); + background-image: -o-linear-gradient(top, #fff 0%, #f8f8f8 100%); + background-image: -webkit-gradient(linear, left top, left bottom, from(#fff), to(#f8f8f8)); + background-image: linear-gradient(to bottom, #fff 0%, #f8f8f8 100%); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff', endColorstr='#fff8f8f8', GradientType=0); + filter: progid:DXImageTransform.Microsoft.gradient(enabled = false); + background-repeat: repeat-x; + border-radius: 4px; + -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, .15), 0 1px 5px rgba(0, 0, 0, .075); + box-shadow: inset 0 1px 0 rgba(255, 255, 255, .15), 0 1px 5px rgba(0, 0, 0, .075); +} +.navbar-default .navbar-nav > .open > a, +.navbar-default .navbar-nav > .active > a { + background-image: -webkit-linear-gradient(top, #dbdbdb 0%, #e2e2e2 100%); + background-image: -o-linear-gradient(top, #dbdbdb 0%, #e2e2e2 100%); + background-image: -webkit-gradient(linear, left top, left bottom, from(#dbdbdb), to(#e2e2e2)); + background-image: linear-gradient(to bottom, #dbdbdb 0%, #e2e2e2 100%); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffdbdbdb', endColorstr='#ffe2e2e2', GradientType=0); + background-repeat: repeat-x; + -webkit-box-shadow: inset 0 3px 9px rgba(0, 0, 0, .075); + box-shadow: inset 0 3px 9px rgba(0, 0, 0, .075); +} +.navbar-brand, +.navbar-nav > li > a { + text-shadow: 0 1px 0 rgba(255, 255, 255, .25); +} +.navbar-inverse { + background-image: -webkit-linear-gradient(top, #3c3c3c 0%, #222 100%); + background-image: -o-linear-gradient(top, #3c3c3c 0%, #222 100%); + background-image: -webkit-gradient(linear, left top, left bottom, from(#3c3c3c), to(#222)); + background-image: linear-gradient(to bottom, #3c3c3c 0%, #222 100%); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff3c3c3c', endColorstr='#ff222222', GradientType=0); + filter: progid:DXImageTransform.Microsoft.gradient(enabled = false); + background-repeat: repeat-x; +} +.navbar-inverse .navbar-nav > .open > a, +.navbar-inverse .navbar-nav > .active > a { + background-image: -webkit-linear-gradient(top, #080808 0%, #0f0f0f 100%); + background-image: -o-linear-gradient(top, #080808 0%, #0f0f0f 100%); + background-image: -webkit-gradient(linear, left top, left bottom, from(#080808), to(#0f0f0f)); + background-image: linear-gradient(to bottom, #080808 0%, #0f0f0f 100%); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff080808', endColorstr='#ff0f0f0f', GradientType=0); + background-repeat: repeat-x; + -webkit-box-shadow: inset 0 3px 9px rgba(0, 0, 0, .25); + box-shadow: inset 0 3px 9px rgba(0, 0, 0, .25); +} +.navbar-inverse .navbar-brand, +.navbar-inverse .navbar-nav > li > a { + text-shadow: 0 -1px 0 rgba(0, 0, 0, .25); +} +.navbar-static-top, +.navbar-fixed-top, +.navbar-fixed-bottom { + border-radius: 0; +} +@media (max-width: 767px) { + .navbar .navbar-nav .open .dropdown-menu > .active > a, + .navbar .navbar-nav .open .dropdown-menu > .active > a:hover, + .navbar .navbar-nav .open .dropdown-menu > .active > a:focus { + color: #fff; + background-image: -webkit-linear-gradient(top, #337ab7 0%, #2e6da4 100%); + background-image: -o-linear-gradient(top, #337ab7 0%, #2e6da4 100%); + background-image: -webkit-gradient(linear, left top, left bottom, from(#337ab7), to(#2e6da4)); + background-image: linear-gradient(to bottom, #337ab7 0%, #2e6da4 100%); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff2e6da4', GradientType=0); + background-repeat: repeat-x; + } +} +.alert { + text-shadow: 0 1px 0 rgba(255, 255, 255, .2); + -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, .25), 0 1px 2px rgba(0, 0, 0, .05); + box-shadow: inset 0 1px 0 rgba(255, 255, 255, .25), 0 1px 2px rgba(0, 0, 0, .05); +} +.alert-success { + background-image: -webkit-linear-gradient(top, #dff0d8 0%, #c8e5bc 100%); + background-image: -o-linear-gradient(top, #dff0d8 0%, #c8e5bc 100%); + background-image: -webkit-gradient(linear, left top, left bottom, from(#dff0d8), to(#c8e5bc)); + background-image: linear-gradient(to bottom, #dff0d8 0%, #c8e5bc 100%); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffdff0d8', endColorstr='#ffc8e5bc', GradientType=0); + background-repeat: repeat-x; + border-color: #b2dba1; +} +.alert-info { + background-image: -webkit-linear-gradient(top, #d9edf7 0%, #b9def0 100%); + background-image: -o-linear-gradient(top, #d9edf7 0%, #b9def0 100%); + background-image: -webkit-gradient(linear, left top, left bottom, from(#d9edf7), to(#b9def0)); + background-image: linear-gradient(to bottom, #d9edf7 0%, #b9def0 100%); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9edf7', endColorstr='#ffb9def0', GradientType=0); + background-repeat: repeat-x; + border-color: #9acfea; +} +.alert-warning { + background-image: -webkit-linear-gradient(top, #fcf8e3 0%, #f8efc0 100%); + background-image: -o-linear-gradient(top, #fcf8e3 0%, #f8efc0 100%); + background-image: -webkit-gradient(linear, left top, left bottom, from(#fcf8e3), to(#f8efc0)); + background-image: linear-gradient(to bottom, #fcf8e3 0%, #f8efc0 100%); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffcf8e3', endColorstr='#fff8efc0', GradientType=0); + background-repeat: repeat-x; + border-color: #f5e79e; +} +.alert-danger { + background-image: -webkit-linear-gradient(top, #f2dede 0%, #e7c3c3 100%); + background-image: -o-linear-gradient(top, #f2dede 0%, #e7c3c3 100%); + background-image: -webkit-gradient(linear, left top, left bottom, from(#f2dede), to(#e7c3c3)); + background-image: linear-gradient(to bottom, #f2dede 0%, #e7c3c3 100%); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff2dede', endColorstr='#ffe7c3c3', GradientType=0); + background-repeat: repeat-x; + border-color: #dca7a7; +} +.progress { + background-image: -webkit-linear-gradient(top, #ebebeb 0%, #f5f5f5 100%); + background-image: -o-linear-gradient(top, #ebebeb 0%, #f5f5f5 100%); + background-image: -webkit-gradient(linear, left top, left bottom, from(#ebebeb), to(#f5f5f5)); + background-image: linear-gradient(to bottom, #ebebeb 0%, #f5f5f5 100%); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffebebeb', endColorstr='#fff5f5f5', GradientType=0); + background-repeat: repeat-x; +} +.progress-bar { + background-image: -webkit-linear-gradient(top, #337ab7 0%, #286090 100%); + background-image: -o-linear-gradient(top, #337ab7 0%, #286090 100%); + background-image: -webkit-gradient(linear, left top, left bottom, from(#337ab7), to(#286090)); + background-image: linear-gradient(to bottom, #337ab7 0%, #286090 100%); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff286090', GradientType=0); + background-repeat: repeat-x; +} +.progress-bar-success { + background-image: -webkit-linear-gradient(top, #5cb85c 0%, #449d44 100%); + background-image: -o-linear-gradient(top, #5cb85c 0%, #449d44 100%); + background-image: -webkit-gradient(linear, left top, left bottom, from(#5cb85c), to(#449d44)); + background-image: linear-gradient(to bottom, #5cb85c 0%, #449d44 100%); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5cb85c', endColorstr='#ff449d44', GradientType=0); + background-repeat: repeat-x; +} +.progress-bar-info { + background-image: -webkit-linear-gradient(top, #5bc0de 0%, #31b0d5 100%); + background-image: -o-linear-gradient(top, #5bc0de 0%, #31b0d5 100%); + background-image: -webkit-gradient(linear, left top, left bottom, from(#5bc0de), to(#31b0d5)); + background-image: linear-gradient(to bottom, #5bc0de 0%, #31b0d5 100%); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5bc0de', endColorstr='#ff31b0d5', GradientType=0); + background-repeat: repeat-x; +} +.progress-bar-warning { + background-image: -webkit-linear-gradient(top, #f0ad4e 0%, #ec971f 100%); + background-image: -o-linear-gradient(top, #f0ad4e 0%, #ec971f 100%); + background-image: -webkit-gradient(linear, left top, left bottom, from(#f0ad4e), to(#ec971f)); + background-image: linear-gradient(to bottom, #f0ad4e 0%, #ec971f 100%); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff0ad4e', endColorstr='#ffec971f', GradientType=0); + background-repeat: repeat-x; +} +.progress-bar-danger { + background-image: -webkit-linear-gradient(top, #d9534f 0%, #c9302c 100%); + background-image: -o-linear-gradient(top, #d9534f 0%, #c9302c 100%); + background-image: -webkit-gradient(linear, left top, left bottom, from(#d9534f), to(#c9302c)); + background-image: linear-gradient(to bottom, #d9534f 0%, #c9302c 100%); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9534f', endColorstr='#ffc9302c', GradientType=0); + background-repeat: repeat-x; +} +.progress-bar-striped { + background-image: -webkit-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-image: -o-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-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); +} +.list-group { + border-radius: 4px; + -webkit-box-shadow: 0 1px 2px rgba(0, 0, 0, .075); + box-shadow: 0 1px 2px rgba(0, 0, 0, .075); +} +.list-group-item.active, +.list-group-item.active:hover, +.list-group-item.active:focus { + text-shadow: 0 -1px 0 #286090; + background-image: -webkit-linear-gradient(top, #337ab7 0%, #2b669a 100%); + background-image: -o-linear-gradient(top, #337ab7 0%, #2b669a 100%); + background-image: -webkit-gradient(linear, left top, left bottom, from(#337ab7), to(#2b669a)); + background-image: linear-gradient(to bottom, #337ab7 0%, #2b669a 100%); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff2b669a', GradientType=0); + background-repeat: repeat-x; + border-color: #2b669a; +} +.list-group-item.active .badge, +.list-group-item.active:hover .badge, +.list-group-item.active:focus .badge { + text-shadow: none; +} +.panel { + -webkit-box-shadow: 0 1px 2px rgba(0, 0, 0, .05); + box-shadow: 0 1px 2px rgba(0, 0, 0, .05); +} +.panel-default > .panel-heading { + background-image: -webkit-linear-gradient(top, #f5f5f5 0%, #e8e8e8 100%); + background-image: -o-linear-gradient(top, #f5f5f5 0%, #e8e8e8 100%); + background-image: -webkit-gradient(linear, left top, left bottom, from(#f5f5f5), to(#e8e8e8)); + background-image: linear-gradient(to bottom, #f5f5f5 0%, #e8e8e8 100%); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff5f5f5', endColorstr='#ffe8e8e8', GradientType=0); + background-repeat: repeat-x; +} +.panel-primary > .panel-heading { + background-image: -webkit-linear-gradient(top, #337ab7 0%, #2e6da4 100%); + background-image: -o-linear-gradient(top, #337ab7 0%, #2e6da4 100%); + background-image: -webkit-gradient(linear, left top, left bottom, from(#337ab7), to(#2e6da4)); + background-image: linear-gradient(to bottom, #337ab7 0%, #2e6da4 100%); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff2e6da4', GradientType=0); + background-repeat: repeat-x; +} +.panel-success > .panel-heading { + background-image: -webkit-linear-gradient(top, #dff0d8 0%, #d0e9c6 100%); + background-image: -o-linear-gradient(top, #dff0d8 0%, #d0e9c6 100%); + background-image: -webkit-gradient(linear, left top, left bottom, from(#dff0d8), to(#d0e9c6)); + background-image: linear-gradient(to bottom, #dff0d8 0%, #d0e9c6 100%); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffdff0d8', endColorstr='#ffd0e9c6', GradientType=0); + background-repeat: repeat-x; +} +.panel-info > .panel-heading { + background-image: -webkit-linear-gradient(top, #d9edf7 0%, #c4e3f3 100%); + background-image: -o-linear-gradient(top, #d9edf7 0%, #c4e3f3 100%); + background-image: -webkit-gradient(linear, left top, left bottom, from(#d9edf7), to(#c4e3f3)); + background-image: linear-gradient(to bottom, #d9edf7 0%, #c4e3f3 100%); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9edf7', endColorstr='#ffc4e3f3', GradientType=0); + background-repeat: repeat-x; +} +.panel-warning > .panel-heading { + background-image: -webkit-linear-gradient(top, #fcf8e3 0%, #faf2cc 100%); + background-image: -o-linear-gradient(top, #fcf8e3 0%, #faf2cc 100%); + background-image: -webkit-gradient(linear, left top, left bottom, from(#fcf8e3), to(#faf2cc)); + background-image: linear-gradient(to bottom, #fcf8e3 0%, #faf2cc 100%); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffcf8e3', endColorstr='#fffaf2cc', GradientType=0); + background-repeat: repeat-x; +} +.panel-danger > .panel-heading { + background-image: -webkit-linear-gradient(top, #f2dede 0%, #ebcccc 100%); + background-image: -o-linear-gradient(top, #f2dede 0%, #ebcccc 100%); + background-image: -webkit-gradient(linear, left top, left bottom, from(#f2dede), to(#ebcccc)); + background-image: linear-gradient(to bottom, #f2dede 0%, #ebcccc 100%); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff2dede', endColorstr='#ffebcccc', GradientType=0); + background-repeat: repeat-x; +} +.well { + background-image: -webkit-linear-gradient(top, #e8e8e8 0%, #f5f5f5 100%); + background-image: -o-linear-gradient(top, #e8e8e8 0%, #f5f5f5 100%); + background-image: -webkit-gradient(linear, left top, left bottom, from(#e8e8e8), to(#f5f5f5)); + background-image: linear-gradient(to bottom, #e8e8e8 0%, #f5f5f5 100%); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffe8e8e8', endColorstr='#fff5f5f5', GradientType=0); + background-repeat: repeat-x; + border-color: #dcdcdc; + -webkit-box-shadow: inset 0 1px 3px rgba(0, 0, 0, .05), 0 1px 0 rgba(255, 255, 255, .1); + box-shadow: inset 0 1px 3px rgba(0, 0, 0, .05), 0 1px 0 rgba(255, 255, 255, .1); +} +/*# sourceMappingURL=bootstrap-theme.css.map */ diff --git a/mayan/apps/appearance/static/appearance/packages/bootstrap-3.3.4-dist/css/bootstrap-theme.css.map b/mayan/apps/appearance/static/appearance/packages/bootstrap-3.3.4-dist/css/bootstrap-theme.css.map new file mode 100644 index 0000000000..5a12d63173 --- /dev/null +++ b/mayan/apps/appearance/static/appearance/packages/bootstrap-3.3.4-dist/css/bootstrap-theme.css.map @@ -0,0 +1 @@ +{"version":3,"sources":["less/theme.less","less/mixins/vendor-prefixes.less","bootstrap-theme.css","less/mixins/gradients.less","less/mixins/reset-filter.less"],"names":[],"mappings":"AAcA;;;;;;EAME,0CAAA;ECgDA,6FAAA;EACQ,qFAAA;EC5DT;AFgBC;;;;;;;;;;;;EC2CA,0DAAA;EACQ,kDAAA;EC7CT;AFVD;;;;;;EAiBI,mBAAA;EECH;AFiCC;;EAEE,wBAAA;EE/BH;AFoCD;EGnDI,0EAAA;EACA,qEAAA;EACA,+FAAA;EAAA,wEAAA;EAEA,wHAAA;ECnBF,qEAAA;EJiCA,6BAAA;EACA,uBAAA;EAgC2C,2BAAA;EAA2B,oBAAA;EEzBvE;AFLC;;EAEE,2BAAA;EACA,8BAAA;EEOH;AFJC;;EAEE,2BAAA;EACA,uBAAA;EEMH;AFHC;;;EAGE,2BAAA;EACA,wBAAA;EEKH;AFUD;EGpDI,0EAAA;EACA,qEAAA;EACA,+FAAA;EAAA,wEAAA;EAEA,wHAAA;ECnBF,qEAAA;EJiCA,6BAAA;EACA,uBAAA;EEgCD;AF9BC;;EAEE,2BAAA;EACA,8BAAA;EEgCH;AF7BC;;EAEE,2BAAA;EACA,uBAAA;EE+BH;AF5BC;;;EAGE,2BAAA;EACA,wBAAA;EE8BH;AFdD;EGrDI,0EAAA;EACA,qEAAA;EACA,+FAAA;EAAA,wEAAA;EAEA,wHAAA;ECnBF,qEAAA;EJiCA,6BAAA;EACA,uBAAA;EEyDD;AFvDC;;EAEE,2BAAA;EACA,8BAAA;EEyDH;AFtDC;;EAEE,2BAAA;EACA,uBAAA;EEwDH;AFrDC;;;EAGE,2BAAA;EACA,wBAAA;EEuDH;AFtCD;EGtDI,0EAAA;EACA,qEAAA;EACA,+FAAA;EAAA,wEAAA;EAEA,wHAAA;ECnBF,qEAAA;EJiCA,6BAAA;EACA,uBAAA;EEkFD;AFhFC;;EAEE,2BAAA;EACA,8BAAA;EEkFH;AF/EC;;EAEE,2BAAA;EACA,uBAAA;EEiFH;AF9EC;;;EAGE,2BAAA;EACA,wBAAA;EEgFH;AF9DD;EGvDI,0EAAA;EACA,qEAAA;EACA,+FAAA;EAAA,wEAAA;EAEA,wHAAA;ECnBF,qEAAA;EJiCA,6BAAA;EACA,uBAAA;EE2GD;AFzGC;;EAEE,2BAAA;EACA,8BAAA;EE2GH;AFxGC;;EAEE,2BAAA;EACA,uBAAA;EE0GH;AFvGC;;;EAGE,2BAAA;EACA,wBAAA;EEyGH;AFtFD;EGxDI,0EAAA;EACA,qEAAA;EACA,+FAAA;EAAA,wEAAA;EAEA,wHAAA;ECnBF,qEAAA;EJiCA,6BAAA;EACA,uBAAA;EEoID;AFlIC;;EAEE,2BAAA;EACA,8BAAA;EEoIH;AFjIC;;EAEE,2BAAA;EACA,uBAAA;EEmIH;AFhIC;;;EAGE,2BAAA;EACA,wBAAA;EEkIH;AFxGD;;EChBE,oDAAA;EACQ,4CAAA;EC4HT;AFnGD;;EGzEI,0EAAA;EACA,qEAAA;EACA,+FAAA;EAAA,wEAAA;EACA,6BAAA;EACA,wHAAA;EHwEF,2BAAA;EEyGD;AFvGD;;;EG9EI,0EAAA;EACA,qEAAA;EACA,+FAAA;EAAA,wEAAA;EACA,6BAAA;EACA,wHAAA;EH8EF,2BAAA;EE6GD;AFpGD;EG3FI,0EAAA;EACA,qEAAA;EACA,+FAAA;EAAA,wEAAA;EACA,6BAAA;EACA,wHAAA;ECnBF,qEAAA;EJ6GA,oBAAA;EC/CA,6FAAA;EACQ,qFAAA;EC0JT;AF/GD;;EG3FI,0EAAA;EACA,qEAAA;EACA,+FAAA;EAAA,wEAAA;EACA,6BAAA;EACA,wHAAA;EF2CF,0DAAA;EACQ,kDAAA;ECoKT;AF5GD;;EAEE,gDAAA;EE8GD;AF1GD;EG9GI,0EAAA;EACA,qEAAA;EACA,+FAAA;EAAA,wEAAA;EACA,6BAAA;EACA,wHAAA;ECnBF,qEAAA;EF+OD;AFlHD;;EG9GI,0EAAA;EACA,qEAAA;EACA,+FAAA;EAAA,wEAAA;EACA,6BAAA;EACA,wHAAA;EF2CF,yDAAA;EACQ,iDAAA;EC0LT;AF5HD;;EAYI,2CAAA;EEoHH;AF/GD;;;EAGE,kBAAA;EEiHD;AF5FD;EAfI;;;IAGE,aAAA;IG3IF,0EAAA;IACA,qEAAA;IACA,+FAAA;IAAA,wEAAA;IACA,6BAAA;IACA,wHAAA;ID0PD;EACF;AFxGD;EACE,+CAAA;ECzGA,4FAAA;EACQ,oFAAA;ECoNT;AFhGD;EGpKI,0EAAA;EACA,qEAAA;EACA,+FAAA;EAAA,wEAAA;EACA,6BAAA;EACA,wHAAA;EH4JF,uBAAA;EE4GD;AFvGD;EGrKI,0EAAA;EACA,qEAAA;EACA,+FAAA;EAAA,wEAAA;EACA,6BAAA;EACA,wHAAA;EH4JF,uBAAA;EEoHD;AF9GD;EGtKI,0EAAA;EACA,qEAAA;EACA,+FAAA;EAAA,wEAAA;EACA,6BAAA;EACA,wHAAA;EH4JF,uBAAA;EE4HD;AFrHD;EGvKI,0EAAA;EACA,qEAAA;EACA,+FAAA;EAAA,wEAAA;EACA,6BAAA;EACA,wHAAA;EH4JF,uBAAA;EEoID;AFrHD;EG/KI,0EAAA;EACA,qEAAA;EACA,+FAAA;EAAA,wEAAA;EACA,6BAAA;EACA,wHAAA;EDuSH;AFlHD;EGzLI,0EAAA;EACA,qEAAA;EACA,+FAAA;EAAA,wEAAA;EACA,6BAAA;EACA,wHAAA;ED8SH;AFxHD;EG1LI,0EAAA;EACA,qEAAA;EACA,+FAAA;EAAA,wEAAA;EACA,6BAAA;EACA,wHAAA;EDqTH;AF9HD;EG3LI,0EAAA;EACA,qEAAA;EACA,+FAAA;EAAA,wEAAA;EACA,6BAAA;EACA,wHAAA;ED4TH;AFpID;EG5LI,0EAAA;EACA,qEAAA;EACA,+FAAA;EAAA,wEAAA;EACA,6BAAA;EACA,wHAAA;EDmUH;AF1ID;EG7LI,0EAAA;EACA,qEAAA;EACA,+FAAA;EAAA,wEAAA;EACA,6BAAA;EACA,wHAAA;ED0UH;AF7ID;EGhKI,+MAAA;EACA,0MAAA;EACA,uMAAA;EDgTH;AFzID;EACE,oBAAA;EC5JA,oDAAA;EACQ,4CAAA;ECwST;AF1ID;;;EAGE,+BAAA;EGjNE,0EAAA;EACA,qEAAA;EACA,+FAAA;EAAA,wEAAA;EACA,6BAAA;EACA,wHAAA;EH+MF,uBAAA;EEgJD;AFrJD;;;EAQI,mBAAA;EEkJH;AFxID;ECjLE,mDAAA;EACQ,2CAAA;EC4TT;AFlID;EG1OI,0EAAA;EACA,qEAAA;EACA,+FAAA;EAAA,wEAAA;EACA,6BAAA;EACA,wHAAA;ED+WH;AFxID;EG3OI,0EAAA;EACA,qEAAA;EACA,+FAAA;EAAA,wEAAA;EACA,6BAAA;EACA,wHAAA;EDsXH;AF9ID;EG5OI,0EAAA;EACA,qEAAA;EACA,+FAAA;EAAA,wEAAA;EACA,6BAAA;EACA,wHAAA;ED6XH;AFpJD;EG7OI,0EAAA;EACA,qEAAA;EACA,+FAAA;EAAA,wEAAA;EACA,6BAAA;EACA,wHAAA;EDoYH;AF1JD;EG9OI,0EAAA;EACA,qEAAA;EACA,+FAAA;EAAA,wEAAA;EACA,6BAAA;EACA,wHAAA;ED2YH;AFhKD;EG/OI,0EAAA;EACA,qEAAA;EACA,+FAAA;EAAA,wEAAA;EACA,6BAAA;EACA,wHAAA;EDkZH;AFhKD;EGtPI,0EAAA;EACA,qEAAA;EACA,+FAAA;EAAA,wEAAA;EACA,6BAAA;EACA,wHAAA;EHoPF,uBAAA;ECzMA,2FAAA;EACQ,mFAAA;ECgXT","file":"bootstrap-theme.css","sourcesContent":["\n//\n// Load core variables and mixins\n// --------------------------------------------------\n\n@import \"variables.less\";\n@import \"mixins.less\";\n\n\n//\n// Buttons\n// --------------------------------------------------\n\n// Common styles\n.btn-default,\n.btn-primary,\n.btn-success,\n.btn-info,\n.btn-warning,\n.btn-danger {\n text-shadow: 0 -1px 0 rgba(0,0,0,.2);\n @shadow: inset 0 1px 0 rgba(255,255,255,.15), 0 1px 1px rgba(0,0,0,.075);\n .box-shadow(@shadow);\n\n // Reset the shadow\n &:active,\n &.active {\n .box-shadow(inset 0 3px 5px rgba(0,0,0,.125));\n }\n\n .badge {\n text-shadow: none;\n }\n}\n\n// Mixin for generating new styles\n.btn-styles(@btn-color: #555) {\n #gradient > .vertical(@start-color: @btn-color; @end-color: darken(@btn-color, 12%));\n .reset-filter(); // Disable gradients for IE9 because filter bleeds through rounded corners; see https://github.com/twbs/bootstrap/issues/10620\n background-repeat: repeat-x;\n border-color: darken(@btn-color, 14%);\n\n &:hover,\n &:focus {\n background-color: darken(@btn-color, 12%);\n background-position: 0 -15px;\n }\n\n &:active,\n &.active {\n background-color: darken(@btn-color, 12%);\n border-color: darken(@btn-color, 14%);\n }\n\n &.disabled,\n &:disabled,\n &[disabled] {\n background-color: darken(@btn-color, 12%);\n background-image: none;\n }\n}\n\n// Common styles\n.btn {\n // Remove the gradient for the pressed/active state\n &:active,\n &.active {\n background-image: none;\n }\n}\n\n// Apply the mixin to the buttons\n.btn-default { .btn-styles(@btn-default-bg); text-shadow: 0 1px 0 #fff; border-color: #ccc; }\n.btn-primary { .btn-styles(@btn-primary-bg); }\n.btn-success { .btn-styles(@btn-success-bg); }\n.btn-info { .btn-styles(@btn-info-bg); }\n.btn-warning { .btn-styles(@btn-warning-bg); }\n.btn-danger { .btn-styles(@btn-danger-bg); }\n\n\n//\n// Images\n// --------------------------------------------------\n\n.thumbnail,\n.img-thumbnail {\n .box-shadow(0 1px 2px rgba(0,0,0,.075));\n}\n\n\n//\n// Dropdowns\n// --------------------------------------------------\n\n.dropdown-menu > li > a:hover,\n.dropdown-menu > li > a:focus {\n #gradient > .vertical(@start-color: @dropdown-link-hover-bg; @end-color: darken(@dropdown-link-hover-bg, 5%));\n background-color: darken(@dropdown-link-hover-bg, 5%);\n}\n.dropdown-menu > .active > a,\n.dropdown-menu > .active > a:hover,\n.dropdown-menu > .active > a:focus {\n #gradient > .vertical(@start-color: @dropdown-link-active-bg; @end-color: darken(@dropdown-link-active-bg, 5%));\n background-color: darken(@dropdown-link-active-bg, 5%);\n}\n\n\n//\n// Navbar\n// --------------------------------------------------\n\n// Default navbar\n.navbar-default {\n #gradient > .vertical(@start-color: lighten(@navbar-default-bg, 10%); @end-color: @navbar-default-bg);\n .reset-filter(); // Remove gradient in IE<10 to fix bug where dropdowns don't get triggered\n border-radius: @navbar-border-radius;\n @shadow: inset 0 1px 0 rgba(255,255,255,.15), 0 1px 5px rgba(0,0,0,.075);\n .box-shadow(@shadow);\n\n .navbar-nav > .open > a,\n .navbar-nav > .active > a {\n #gradient > .vertical(@start-color: darken(@navbar-default-link-active-bg, 5%); @end-color: darken(@navbar-default-link-active-bg, 2%));\n .box-shadow(inset 0 3px 9px rgba(0,0,0,.075));\n }\n}\n.navbar-brand,\n.navbar-nav > li > a {\n text-shadow: 0 1px 0 rgba(255,255,255,.25);\n}\n\n// Inverted navbar\n.navbar-inverse {\n #gradient > .vertical(@start-color: lighten(@navbar-inverse-bg, 10%); @end-color: @navbar-inverse-bg);\n .reset-filter(); // Remove gradient in IE<10 to fix bug where dropdowns don't get triggered; see https://github.com/twbs/bootstrap/issues/10257\n\n .navbar-nav > .open > a,\n .navbar-nav > .active > a {\n #gradient > .vertical(@start-color: @navbar-inverse-link-active-bg; @end-color: lighten(@navbar-inverse-link-active-bg, 2.5%));\n .box-shadow(inset 0 3px 9px rgba(0,0,0,.25));\n }\n\n .navbar-brand,\n .navbar-nav > li > a {\n text-shadow: 0 -1px 0 rgba(0,0,0,.25);\n }\n}\n\n// Undo rounded corners in static and fixed navbars\n.navbar-static-top,\n.navbar-fixed-top,\n.navbar-fixed-bottom {\n border-radius: 0;\n}\n\n// Fix active state of dropdown items in collapsed mode\n@media (max-width: @grid-float-breakpoint-max) {\n .navbar .navbar-nav .open .dropdown-menu > .active > a {\n &,\n &:hover,\n &:focus {\n color: #fff;\n #gradient > .vertical(@start-color: @dropdown-link-active-bg; @end-color: darken(@dropdown-link-active-bg, 5%));\n }\n }\n}\n\n\n//\n// Alerts\n// --------------------------------------------------\n\n// Common styles\n.alert {\n text-shadow: 0 1px 0 rgba(255,255,255,.2);\n @shadow: inset 0 1px 0 rgba(255,255,255,.25), 0 1px 2px rgba(0,0,0,.05);\n .box-shadow(@shadow);\n}\n\n// Mixin for generating new styles\n.alert-styles(@color) {\n #gradient > .vertical(@start-color: @color; @end-color: darken(@color, 7.5%));\n border-color: darken(@color, 15%);\n}\n\n// Apply the mixin to the alerts\n.alert-success { .alert-styles(@alert-success-bg); }\n.alert-info { .alert-styles(@alert-info-bg); }\n.alert-warning { .alert-styles(@alert-warning-bg); }\n.alert-danger { .alert-styles(@alert-danger-bg); }\n\n\n//\n// Progress bars\n// --------------------------------------------------\n\n// Give the progress background some depth\n.progress {\n #gradient > .vertical(@start-color: darken(@progress-bg, 4%); @end-color: @progress-bg)\n}\n\n// Mixin for generating new styles\n.progress-bar-styles(@color) {\n #gradient > .vertical(@start-color: @color; @end-color: darken(@color, 10%));\n}\n\n// Apply the mixin to the progress bars\n.progress-bar { .progress-bar-styles(@progress-bar-bg); }\n.progress-bar-success { .progress-bar-styles(@progress-bar-success-bg); }\n.progress-bar-info { .progress-bar-styles(@progress-bar-info-bg); }\n.progress-bar-warning { .progress-bar-styles(@progress-bar-warning-bg); }\n.progress-bar-danger { .progress-bar-styles(@progress-bar-danger-bg); }\n\n// Reset the striped class because our mixins don't do multiple gradients and\n// the above custom styles override the new `.progress-bar-striped` in v3.2.0.\n.progress-bar-striped {\n #gradient > .striped();\n}\n\n\n//\n// List groups\n// --------------------------------------------------\n\n.list-group {\n border-radius: @border-radius-base;\n .box-shadow(0 1px 2px rgba(0,0,0,.075));\n}\n.list-group-item.active,\n.list-group-item.active:hover,\n.list-group-item.active:focus {\n text-shadow: 0 -1px 0 darken(@list-group-active-bg, 10%);\n #gradient > .vertical(@start-color: @list-group-active-bg; @end-color: darken(@list-group-active-bg, 7.5%));\n border-color: darken(@list-group-active-border, 7.5%);\n\n .badge {\n text-shadow: none;\n }\n}\n\n\n//\n// Panels\n// --------------------------------------------------\n\n// Common styles\n.panel {\n .box-shadow(0 1px 2px rgba(0,0,0,.05));\n}\n\n// Mixin for generating new styles\n.panel-heading-styles(@color) {\n #gradient > .vertical(@start-color: @color; @end-color: darken(@color, 5%));\n}\n\n// Apply the mixin to the panel headings only\n.panel-default > .panel-heading { .panel-heading-styles(@panel-default-heading-bg); }\n.panel-primary > .panel-heading { .panel-heading-styles(@panel-primary-heading-bg); }\n.panel-success > .panel-heading { .panel-heading-styles(@panel-success-heading-bg); }\n.panel-info > .panel-heading { .panel-heading-styles(@panel-info-heading-bg); }\n.panel-warning > .panel-heading { .panel-heading-styles(@panel-warning-heading-bg); }\n.panel-danger > .panel-heading { .panel-heading-styles(@panel-danger-heading-bg); }\n\n\n//\n// Wells\n// --------------------------------------------------\n\n.well {\n #gradient > .vertical(@start-color: darken(@well-bg, 5%); @end-color: @well-bg);\n border-color: darken(@well-bg, 10%);\n @shadow: inset 0 1px 3px rgba(0,0,0,.05), 0 1px 0 rgba(255,255,255,.1);\n .box-shadow(@shadow);\n}\n","// Vendor Prefixes\n//\n// All vendor mixins are deprecated as of v3.2.0 due to the introduction of\n// Autoprefixer in our Gruntfile. They will be removed in v4.\n\n// - Animations\n// - Backface visibility\n// - Box shadow\n// - Box sizing\n// - Content columns\n// - Hyphens\n// - Placeholder text\n// - Transformations\n// - Transitions\n// - User Select\n\n\n// Animations\n.animation(@animation) {\n -webkit-animation: @animation;\n -o-animation: @animation;\n animation: @animation;\n}\n.animation-name(@name) {\n -webkit-animation-name: @name;\n animation-name: @name;\n}\n.animation-duration(@duration) {\n -webkit-animation-duration: @duration;\n animation-duration: @duration;\n}\n.animation-timing-function(@timing-function) {\n -webkit-animation-timing-function: @timing-function;\n animation-timing-function: @timing-function;\n}\n.animation-delay(@delay) {\n -webkit-animation-delay: @delay;\n animation-delay: @delay;\n}\n.animation-iteration-count(@iteration-count) {\n -webkit-animation-iteration-count: @iteration-count;\n animation-iteration-count: @iteration-count;\n}\n.animation-direction(@direction) {\n -webkit-animation-direction: @direction;\n animation-direction: @direction;\n}\n.animation-fill-mode(@fill-mode) {\n -webkit-animation-fill-mode: @fill-mode;\n animation-fill-mode: @fill-mode;\n}\n\n// Backface visibility\n// Prevent browsers from flickering when using CSS 3D transforms.\n// Default value is `visible`, but can be changed to `hidden`\n\n.backface-visibility(@visibility){\n -webkit-backface-visibility: @visibility;\n -moz-backface-visibility: @visibility;\n backface-visibility: @visibility;\n}\n\n// Drop shadows\n//\n// Note: Deprecated `.box-shadow()` as of v3.1.0 since all of Bootstrap's\n// supported browsers that have box shadow capabilities now support it.\n\n.box-shadow(@shadow) {\n -webkit-box-shadow: @shadow; // iOS <4.3 & Android <4.1\n box-shadow: @shadow;\n}\n\n// Box sizing\n.box-sizing(@boxmodel) {\n -webkit-box-sizing: @boxmodel;\n -moz-box-sizing: @boxmodel;\n box-sizing: @boxmodel;\n}\n\n// CSS3 Content Columns\n.content-columns(@column-count; @column-gap: @grid-gutter-width) {\n -webkit-column-count: @column-count;\n -moz-column-count: @column-count;\n column-count: @column-count;\n -webkit-column-gap: @column-gap;\n -moz-column-gap: @column-gap;\n column-gap: @column-gap;\n}\n\n// Optional hyphenation\n.hyphens(@mode: auto) {\n word-wrap: break-word;\n -webkit-hyphens: @mode;\n -moz-hyphens: @mode;\n -ms-hyphens: @mode; // IE10+\n -o-hyphens: @mode;\n hyphens: @mode;\n}\n\n// Placeholder text\n.placeholder(@color: @input-color-placeholder) {\n // Firefox\n &::-moz-placeholder {\n color: @color;\n opacity: 1; // Override Firefox's unusual default opacity; see https://github.com/twbs/bootstrap/pull/11526\n }\n &:-ms-input-placeholder { color: @color; } // Internet Explorer 10+\n &::-webkit-input-placeholder { color: @color; } // Safari and Chrome\n}\n\n// Transformations\n.scale(@ratio) {\n -webkit-transform: scale(@ratio);\n -ms-transform: scale(@ratio); // IE9 only\n -o-transform: scale(@ratio);\n transform: scale(@ratio);\n}\n.scale(@ratioX; @ratioY) {\n -webkit-transform: scale(@ratioX, @ratioY);\n -ms-transform: scale(@ratioX, @ratioY); // IE9 only\n -o-transform: scale(@ratioX, @ratioY);\n transform: scale(@ratioX, @ratioY);\n}\n.scaleX(@ratio) {\n -webkit-transform: scaleX(@ratio);\n -ms-transform: scaleX(@ratio); // IE9 only\n -o-transform: scaleX(@ratio);\n transform: scaleX(@ratio);\n}\n.scaleY(@ratio) {\n -webkit-transform: scaleY(@ratio);\n -ms-transform: scaleY(@ratio); // IE9 only\n -o-transform: scaleY(@ratio);\n transform: scaleY(@ratio);\n}\n.skew(@x; @y) {\n -webkit-transform: skewX(@x) skewY(@y);\n -ms-transform: skewX(@x) skewY(@y); // See https://github.com/twbs/bootstrap/issues/4885; IE9+\n -o-transform: skewX(@x) skewY(@y);\n transform: skewX(@x) skewY(@y);\n}\n.translate(@x; @y) {\n -webkit-transform: translate(@x, @y);\n -ms-transform: translate(@x, @y); // IE9 only\n -o-transform: translate(@x, @y);\n transform: translate(@x, @y);\n}\n.translate3d(@x; @y; @z) {\n -webkit-transform: translate3d(@x, @y, @z);\n transform: translate3d(@x, @y, @z);\n}\n.rotate(@degrees) {\n -webkit-transform: rotate(@degrees);\n -ms-transform: rotate(@degrees); // IE9 only\n -o-transform: rotate(@degrees);\n transform: rotate(@degrees);\n}\n.rotateX(@degrees) {\n -webkit-transform: rotateX(@degrees);\n -ms-transform: rotateX(@degrees); // IE9 only\n -o-transform: rotateX(@degrees);\n transform: rotateX(@degrees);\n}\n.rotateY(@degrees) {\n -webkit-transform: rotateY(@degrees);\n -ms-transform: rotateY(@degrees); // IE9 only\n -o-transform: rotateY(@degrees);\n transform: rotateY(@degrees);\n}\n.perspective(@perspective) {\n -webkit-perspective: @perspective;\n -moz-perspective: @perspective;\n perspective: @perspective;\n}\n.perspective-origin(@perspective) {\n -webkit-perspective-origin: @perspective;\n -moz-perspective-origin: @perspective;\n perspective-origin: @perspective;\n}\n.transform-origin(@origin) {\n -webkit-transform-origin: @origin;\n -moz-transform-origin: @origin;\n -ms-transform-origin: @origin; // IE9 only\n transform-origin: @origin;\n}\n\n\n// Transitions\n\n.transition(@transition) {\n -webkit-transition: @transition;\n -o-transition: @transition;\n transition: @transition;\n}\n.transition-property(@transition-property) {\n -webkit-transition-property: @transition-property;\n transition-property: @transition-property;\n}\n.transition-delay(@transition-delay) {\n -webkit-transition-delay: @transition-delay;\n transition-delay: @transition-delay;\n}\n.transition-duration(@transition-duration) {\n -webkit-transition-duration: @transition-duration;\n transition-duration: @transition-duration;\n}\n.transition-timing-function(@timing-function) {\n -webkit-transition-timing-function: @timing-function;\n transition-timing-function: @timing-function;\n}\n.transition-transform(@transition) {\n -webkit-transition: -webkit-transform @transition;\n -moz-transition: -moz-transform @transition;\n -o-transition: -o-transform @transition;\n transition: transform @transition;\n}\n\n\n// User select\n// For selecting text on the page\n\n.user-select(@select) {\n -webkit-user-select: @select;\n -moz-user-select: @select;\n -ms-user-select: @select; // IE10+\n user-select: @select;\n}\n",".btn-default,\n.btn-primary,\n.btn-success,\n.btn-info,\n.btn-warning,\n.btn-danger {\n text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.2);\n -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.15), 0 1px 1px rgba(0, 0, 0, 0.075);\n box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.15), 0 1px 1px rgba(0, 0, 0, 0.075);\n}\n.btn-default:active,\n.btn-primary:active,\n.btn-success:active,\n.btn-info:active,\n.btn-warning:active,\n.btn-danger:active,\n.btn-default.active,\n.btn-primary.active,\n.btn-success.active,\n.btn-info.active,\n.btn-warning.active,\n.btn-danger.active {\n -webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);\n box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);\n}\n.btn-default .badge,\n.btn-primary .badge,\n.btn-success .badge,\n.btn-info .badge,\n.btn-warning .badge,\n.btn-danger .badge {\n text-shadow: none;\n}\n.btn:active,\n.btn.active {\n background-image: none;\n}\n.btn-default {\n background-image: -webkit-linear-gradient(top, #ffffff 0%, #e0e0e0 100%);\n background-image: -o-linear-gradient(top, #ffffff 0%, #e0e0e0 100%);\n background-image: linear-gradient(to bottom, #ffffff 0%, #e0e0e0 100%);\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff', endColorstr='#ffe0e0e0', GradientType=0);\n filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);\n background-repeat: repeat-x;\n border-color: #dbdbdb;\n text-shadow: 0 1px 0 #fff;\n border-color: #ccc;\n}\n.btn-default:hover,\n.btn-default:focus {\n background-color: #e0e0e0;\n background-position: 0 -15px;\n}\n.btn-default:active,\n.btn-default.active {\n background-color: #e0e0e0;\n border-color: #dbdbdb;\n}\n.btn-default.disabled,\n.btn-default:disabled,\n.btn-default[disabled] {\n background-color: #e0e0e0;\n background-image: none;\n}\n.btn-primary {\n background-image: -webkit-linear-gradient(top, #337ab7 0%, #265a88 100%);\n background-image: -o-linear-gradient(top, #337ab7 0%, #265a88 100%);\n background-image: linear-gradient(to bottom, #337ab7 0%, #265a88 100%);\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff265a88', GradientType=0);\n filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);\n background-repeat: repeat-x;\n border-color: #245580;\n}\n.btn-primary:hover,\n.btn-primary:focus {\n background-color: #265a88;\n background-position: 0 -15px;\n}\n.btn-primary:active,\n.btn-primary.active {\n background-color: #265a88;\n border-color: #245580;\n}\n.btn-primary.disabled,\n.btn-primary:disabled,\n.btn-primary[disabled] {\n background-color: #265a88;\n background-image: none;\n}\n.btn-success {\n background-image: -webkit-linear-gradient(top, #5cb85c 0%, #419641 100%);\n background-image: -o-linear-gradient(top, #5cb85c 0%, #419641 100%);\n background-image: linear-gradient(to bottom, #5cb85c 0%, #419641 100%);\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5cb85c', endColorstr='#ff419641', GradientType=0);\n filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);\n background-repeat: repeat-x;\n border-color: #3e8f3e;\n}\n.btn-success:hover,\n.btn-success:focus {\n background-color: #419641;\n background-position: 0 -15px;\n}\n.btn-success:active,\n.btn-success.active {\n background-color: #419641;\n border-color: #3e8f3e;\n}\n.btn-success.disabled,\n.btn-success:disabled,\n.btn-success[disabled] {\n background-color: #419641;\n background-image: none;\n}\n.btn-info {\n background-image: -webkit-linear-gradient(top, #5bc0de 0%, #2aabd2 100%);\n background-image: -o-linear-gradient(top, #5bc0de 0%, #2aabd2 100%);\n background-image: linear-gradient(to bottom, #5bc0de 0%, #2aabd2 100%);\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5bc0de', endColorstr='#ff2aabd2', GradientType=0);\n filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);\n background-repeat: repeat-x;\n border-color: #28a4c9;\n}\n.btn-info:hover,\n.btn-info:focus {\n background-color: #2aabd2;\n background-position: 0 -15px;\n}\n.btn-info:active,\n.btn-info.active {\n background-color: #2aabd2;\n border-color: #28a4c9;\n}\n.btn-info.disabled,\n.btn-info:disabled,\n.btn-info[disabled] {\n background-color: #2aabd2;\n background-image: none;\n}\n.btn-warning {\n background-image: -webkit-linear-gradient(top, #f0ad4e 0%, #eb9316 100%);\n background-image: -o-linear-gradient(top, #f0ad4e 0%, #eb9316 100%);\n background-image: linear-gradient(to bottom, #f0ad4e 0%, #eb9316 100%);\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff0ad4e', endColorstr='#ffeb9316', GradientType=0);\n filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);\n background-repeat: repeat-x;\n border-color: #e38d13;\n}\n.btn-warning:hover,\n.btn-warning:focus {\n background-color: #eb9316;\n background-position: 0 -15px;\n}\n.btn-warning:active,\n.btn-warning.active {\n background-color: #eb9316;\n border-color: #e38d13;\n}\n.btn-warning.disabled,\n.btn-warning:disabled,\n.btn-warning[disabled] {\n background-color: #eb9316;\n background-image: none;\n}\n.btn-danger {\n background-image: -webkit-linear-gradient(top, #d9534f 0%, #c12e2a 100%);\n background-image: -o-linear-gradient(top, #d9534f 0%, #c12e2a 100%);\n background-image: linear-gradient(to bottom, #d9534f 0%, #c12e2a 100%);\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9534f', endColorstr='#ffc12e2a', GradientType=0);\n filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);\n background-repeat: repeat-x;\n border-color: #b92c28;\n}\n.btn-danger:hover,\n.btn-danger:focus {\n background-color: #c12e2a;\n background-position: 0 -15px;\n}\n.btn-danger:active,\n.btn-danger.active {\n background-color: #c12e2a;\n border-color: #b92c28;\n}\n.btn-danger.disabled,\n.btn-danger:disabled,\n.btn-danger[disabled] {\n background-color: #c12e2a;\n background-image: none;\n}\n.thumbnail,\n.img-thumbnail {\n -webkit-box-shadow: 0 1px 2px rgba(0, 0, 0, 0.075);\n box-shadow: 0 1px 2px rgba(0, 0, 0, 0.075);\n}\n.dropdown-menu > li > a:hover,\n.dropdown-menu > li > a:focus {\n background-image: -webkit-linear-gradient(top, #f5f5f5 0%, #e8e8e8 100%);\n background-image: -o-linear-gradient(top, #f5f5f5 0%, #e8e8e8 100%);\n background-image: linear-gradient(to bottom, #f5f5f5 0%, #e8e8e8 100%);\n background-repeat: repeat-x;\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff5f5f5', endColorstr='#ffe8e8e8', GradientType=0);\n background-color: #e8e8e8;\n}\n.dropdown-menu > .active > a,\n.dropdown-menu > .active > a:hover,\n.dropdown-menu > .active > a:focus {\n background-image: -webkit-linear-gradient(top, #337ab7 0%, #2e6da4 100%);\n background-image: -o-linear-gradient(top, #337ab7 0%, #2e6da4 100%);\n background-image: linear-gradient(to bottom, #337ab7 0%, #2e6da4 100%);\n background-repeat: repeat-x;\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff2e6da4', GradientType=0);\n background-color: #2e6da4;\n}\n.navbar-default {\n background-image: -webkit-linear-gradient(top, #ffffff 0%, #f8f8f8 100%);\n background-image: -o-linear-gradient(top, #ffffff 0%, #f8f8f8 100%);\n background-image: linear-gradient(to bottom, #ffffff 0%, #f8f8f8 100%);\n background-repeat: repeat-x;\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff', endColorstr='#fff8f8f8', GradientType=0);\n filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);\n border-radius: 4px;\n -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.15), 0 1px 5px rgba(0, 0, 0, 0.075);\n box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.15), 0 1px 5px rgba(0, 0, 0, 0.075);\n}\n.navbar-default .navbar-nav > .open > a,\n.navbar-default .navbar-nav > .active > a {\n background-image: -webkit-linear-gradient(top, #dbdbdb 0%, #e2e2e2 100%);\n background-image: -o-linear-gradient(top, #dbdbdb 0%, #e2e2e2 100%);\n background-image: linear-gradient(to bottom, #dbdbdb 0%, #e2e2e2 100%);\n background-repeat: repeat-x;\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffdbdbdb', endColorstr='#ffe2e2e2', GradientType=0);\n -webkit-box-shadow: inset 0 3px 9px rgba(0, 0, 0, 0.075);\n box-shadow: inset 0 3px 9px rgba(0, 0, 0, 0.075);\n}\n.navbar-brand,\n.navbar-nav > li > a {\n text-shadow: 0 1px 0 rgba(255, 255, 255, 0.25);\n}\n.navbar-inverse {\n background-image: -webkit-linear-gradient(top, #3c3c3c 0%, #222222 100%);\n background-image: -o-linear-gradient(top, #3c3c3c 0%, #222222 100%);\n background-image: linear-gradient(to bottom, #3c3c3c 0%, #222222 100%);\n background-repeat: repeat-x;\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff3c3c3c', endColorstr='#ff222222', GradientType=0);\n filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);\n}\n.navbar-inverse .navbar-nav > .open > a,\n.navbar-inverse .navbar-nav > .active > a {\n background-image: -webkit-linear-gradient(top, #080808 0%, #0f0f0f 100%);\n background-image: -o-linear-gradient(top, #080808 0%, #0f0f0f 100%);\n background-image: linear-gradient(to bottom, #080808 0%, #0f0f0f 100%);\n background-repeat: repeat-x;\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff080808', endColorstr='#ff0f0f0f', GradientType=0);\n -webkit-box-shadow: inset 0 3px 9px rgba(0, 0, 0, 0.25);\n box-shadow: inset 0 3px 9px rgba(0, 0, 0, 0.25);\n}\n.navbar-inverse .navbar-brand,\n.navbar-inverse .navbar-nav > li > a {\n text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);\n}\n.navbar-static-top,\n.navbar-fixed-top,\n.navbar-fixed-bottom {\n border-radius: 0;\n}\n@media (max-width: 767px) {\n .navbar .navbar-nav .open .dropdown-menu > .active > a,\n .navbar .navbar-nav .open .dropdown-menu > .active > a:hover,\n .navbar .navbar-nav .open .dropdown-menu > .active > a:focus {\n color: #fff;\n background-image: -webkit-linear-gradient(top, #337ab7 0%, #2e6da4 100%);\n background-image: -o-linear-gradient(top, #337ab7 0%, #2e6da4 100%);\n background-image: linear-gradient(to bottom, #337ab7 0%, #2e6da4 100%);\n background-repeat: repeat-x;\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff2e6da4', GradientType=0);\n }\n}\n.alert {\n text-shadow: 0 1px 0 rgba(255, 255, 255, 0.2);\n -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.25), 0 1px 2px rgba(0, 0, 0, 0.05);\n box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.25), 0 1px 2px rgba(0, 0, 0, 0.05);\n}\n.alert-success {\n background-image: -webkit-linear-gradient(top, #dff0d8 0%, #c8e5bc 100%);\n background-image: -o-linear-gradient(top, #dff0d8 0%, #c8e5bc 100%);\n background-image: linear-gradient(to bottom, #dff0d8 0%, #c8e5bc 100%);\n background-repeat: repeat-x;\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffdff0d8', endColorstr='#ffc8e5bc', GradientType=0);\n border-color: #b2dba1;\n}\n.alert-info {\n background-image: -webkit-linear-gradient(top, #d9edf7 0%, #b9def0 100%);\n background-image: -o-linear-gradient(top, #d9edf7 0%, #b9def0 100%);\n background-image: linear-gradient(to bottom, #d9edf7 0%, #b9def0 100%);\n background-repeat: repeat-x;\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9edf7', endColorstr='#ffb9def0', GradientType=0);\n border-color: #9acfea;\n}\n.alert-warning {\n background-image: -webkit-linear-gradient(top, #fcf8e3 0%, #f8efc0 100%);\n background-image: -o-linear-gradient(top, #fcf8e3 0%, #f8efc0 100%);\n background-image: linear-gradient(to bottom, #fcf8e3 0%, #f8efc0 100%);\n background-repeat: repeat-x;\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffcf8e3', endColorstr='#fff8efc0', GradientType=0);\n border-color: #f5e79e;\n}\n.alert-danger {\n background-image: -webkit-linear-gradient(top, #f2dede 0%, #e7c3c3 100%);\n background-image: -o-linear-gradient(top, #f2dede 0%, #e7c3c3 100%);\n background-image: linear-gradient(to bottom, #f2dede 0%, #e7c3c3 100%);\n background-repeat: repeat-x;\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff2dede', endColorstr='#ffe7c3c3', GradientType=0);\n border-color: #dca7a7;\n}\n.progress {\n background-image: -webkit-linear-gradient(top, #ebebeb 0%, #f5f5f5 100%);\n background-image: -o-linear-gradient(top, #ebebeb 0%, #f5f5f5 100%);\n background-image: linear-gradient(to bottom, #ebebeb 0%, #f5f5f5 100%);\n background-repeat: repeat-x;\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffebebeb', endColorstr='#fff5f5f5', GradientType=0);\n}\n.progress-bar {\n background-image: -webkit-linear-gradient(top, #337ab7 0%, #286090 100%);\n background-image: -o-linear-gradient(top, #337ab7 0%, #286090 100%);\n background-image: linear-gradient(to bottom, #337ab7 0%, #286090 100%);\n background-repeat: repeat-x;\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff286090', GradientType=0);\n}\n.progress-bar-success {\n background-image: -webkit-linear-gradient(top, #5cb85c 0%, #449d44 100%);\n background-image: -o-linear-gradient(top, #5cb85c 0%, #449d44 100%);\n background-image: linear-gradient(to bottom, #5cb85c 0%, #449d44 100%);\n background-repeat: repeat-x;\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5cb85c', endColorstr='#ff449d44', GradientType=0);\n}\n.progress-bar-info {\n background-image: -webkit-linear-gradient(top, #5bc0de 0%, #31b0d5 100%);\n background-image: -o-linear-gradient(top, #5bc0de 0%, #31b0d5 100%);\n background-image: linear-gradient(to bottom, #5bc0de 0%, #31b0d5 100%);\n background-repeat: repeat-x;\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5bc0de', endColorstr='#ff31b0d5', GradientType=0);\n}\n.progress-bar-warning {\n background-image: -webkit-linear-gradient(top, #f0ad4e 0%, #ec971f 100%);\n background-image: -o-linear-gradient(top, #f0ad4e 0%, #ec971f 100%);\n background-image: linear-gradient(to bottom, #f0ad4e 0%, #ec971f 100%);\n background-repeat: repeat-x;\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff0ad4e', endColorstr='#ffec971f', GradientType=0);\n}\n.progress-bar-danger {\n background-image: -webkit-linear-gradient(top, #d9534f 0%, #c9302c 100%);\n background-image: -o-linear-gradient(top, #d9534f 0%, #c9302c 100%);\n background-image: linear-gradient(to bottom, #d9534f 0%, #c9302c 100%);\n background-repeat: repeat-x;\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9534f', endColorstr='#ffc9302c', GradientType=0);\n}\n.progress-bar-striped {\n background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n}\n.list-group {\n border-radius: 4px;\n -webkit-box-shadow: 0 1px 2px rgba(0, 0, 0, 0.075);\n box-shadow: 0 1px 2px rgba(0, 0, 0, 0.075);\n}\n.list-group-item.active,\n.list-group-item.active:hover,\n.list-group-item.active:focus {\n text-shadow: 0 -1px 0 #286090;\n background-image: -webkit-linear-gradient(top, #337ab7 0%, #2b669a 100%);\n background-image: -o-linear-gradient(top, #337ab7 0%, #2b669a 100%);\n background-image: linear-gradient(to bottom, #337ab7 0%, #2b669a 100%);\n background-repeat: repeat-x;\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff2b669a', GradientType=0);\n border-color: #2b669a;\n}\n.list-group-item.active .badge,\n.list-group-item.active:hover .badge,\n.list-group-item.active:focus .badge {\n text-shadow: none;\n}\n.panel {\n -webkit-box-shadow: 0 1px 2px rgba(0, 0, 0, 0.05);\n box-shadow: 0 1px 2px rgba(0, 0, 0, 0.05);\n}\n.panel-default > .panel-heading {\n background-image: -webkit-linear-gradient(top, #f5f5f5 0%, #e8e8e8 100%);\n background-image: -o-linear-gradient(top, #f5f5f5 0%, #e8e8e8 100%);\n background-image: linear-gradient(to bottom, #f5f5f5 0%, #e8e8e8 100%);\n background-repeat: repeat-x;\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff5f5f5', endColorstr='#ffe8e8e8', GradientType=0);\n}\n.panel-primary > .panel-heading {\n background-image: -webkit-linear-gradient(top, #337ab7 0%, #2e6da4 100%);\n background-image: -o-linear-gradient(top, #337ab7 0%, #2e6da4 100%);\n background-image: linear-gradient(to bottom, #337ab7 0%, #2e6da4 100%);\n background-repeat: repeat-x;\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff2e6da4', GradientType=0);\n}\n.panel-success > .panel-heading {\n background-image: -webkit-linear-gradient(top, #dff0d8 0%, #d0e9c6 100%);\n background-image: -o-linear-gradient(top, #dff0d8 0%, #d0e9c6 100%);\n background-image: linear-gradient(to bottom, #dff0d8 0%, #d0e9c6 100%);\n background-repeat: repeat-x;\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffdff0d8', endColorstr='#ffd0e9c6', GradientType=0);\n}\n.panel-info > .panel-heading {\n background-image: -webkit-linear-gradient(top, #d9edf7 0%, #c4e3f3 100%);\n background-image: -o-linear-gradient(top, #d9edf7 0%, #c4e3f3 100%);\n background-image: linear-gradient(to bottom, #d9edf7 0%, #c4e3f3 100%);\n background-repeat: repeat-x;\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9edf7', endColorstr='#ffc4e3f3', GradientType=0);\n}\n.panel-warning > .panel-heading {\n background-image: -webkit-linear-gradient(top, #fcf8e3 0%, #faf2cc 100%);\n background-image: -o-linear-gradient(top, #fcf8e3 0%, #faf2cc 100%);\n background-image: linear-gradient(to bottom, #fcf8e3 0%, #faf2cc 100%);\n background-repeat: repeat-x;\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffcf8e3', endColorstr='#fffaf2cc', GradientType=0);\n}\n.panel-danger > .panel-heading {\n background-image: -webkit-linear-gradient(top, #f2dede 0%, #ebcccc 100%);\n background-image: -o-linear-gradient(top, #f2dede 0%, #ebcccc 100%);\n background-image: linear-gradient(to bottom, #f2dede 0%, #ebcccc 100%);\n background-repeat: repeat-x;\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff2dede', endColorstr='#ffebcccc', GradientType=0);\n}\n.well {\n background-image: -webkit-linear-gradient(top, #e8e8e8 0%, #f5f5f5 100%);\n background-image: -o-linear-gradient(top, #e8e8e8 0%, #f5f5f5 100%);\n background-image: linear-gradient(to bottom, #e8e8e8 0%, #f5f5f5 100%);\n background-repeat: repeat-x;\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffe8e8e8', endColorstr='#fff5f5f5', GradientType=0);\n border-color: #dcdcdc;\n -webkit-box-shadow: inset 0 1px 3px rgba(0, 0, 0, 0.05), 0 1px 0 rgba(255, 255, 255, 0.1);\n box-shadow: inset 0 1px 3px rgba(0, 0, 0, 0.05), 0 1px 0 rgba(255, 255, 255, 0.1);\n}\n/*# sourceMappingURL=bootstrap-theme.css.map */","// Gradients\n\n#gradient {\n\n // Horizontal gradient, from left to right\n //\n // Creates two color stops, start and end, by specifying a color and position for each color stop.\n // Color stops are not available in IE9 and below.\n .horizontal(@start-color: #555; @end-color: #333; @start-percent: 0%; @end-percent: 100%) {\n background-image: -webkit-linear-gradient(left, @start-color @start-percent, @end-color @end-percent); // Safari 5.1-6, Chrome 10+\n background-image: -o-linear-gradient(left, @start-color @start-percent, @end-color @end-percent); // Opera 12\n background-image: linear-gradient(to right, @start-color @start-percent, @end-color @end-percent); // Standard, IE10, Firefox 16+, Opera 12.10+, Safari 7+, Chrome 26+\n background-repeat: repeat-x;\n filter: e(%(\"progid:DXImageTransform.Microsoft.gradient(startColorstr='%d', endColorstr='%d', GradientType=1)\",argb(@start-color),argb(@end-color))); // IE9 and down\n }\n\n // Vertical gradient, from top to bottom\n //\n // Creates two color stops, start and end, by specifying a color and position for each color stop.\n // Color stops are not available in IE9 and below.\n .vertical(@start-color: #555; @end-color: #333; @start-percent: 0%; @end-percent: 100%) {\n background-image: -webkit-linear-gradient(top, @start-color @start-percent, @end-color @end-percent); // Safari 5.1-6, Chrome 10+\n background-image: -o-linear-gradient(top, @start-color @start-percent, @end-color @end-percent); // Opera 12\n background-image: linear-gradient(to bottom, @start-color @start-percent, @end-color @end-percent); // Standard, IE10, Firefox 16+, Opera 12.10+, Safari 7+, Chrome 26+\n background-repeat: repeat-x;\n filter: e(%(\"progid:DXImageTransform.Microsoft.gradient(startColorstr='%d', endColorstr='%d', GradientType=0)\",argb(@start-color),argb(@end-color))); // IE9 and down\n }\n\n .directional(@start-color: #555; @end-color: #333; @deg: 45deg) {\n background-repeat: repeat-x;\n background-image: -webkit-linear-gradient(@deg, @start-color, @end-color); // Safari 5.1-6, Chrome 10+\n background-image: -o-linear-gradient(@deg, @start-color, @end-color); // Opera 12\n background-image: linear-gradient(@deg, @start-color, @end-color); // Standard, IE10, Firefox 16+, Opera 12.10+, Safari 7+, Chrome 26+\n }\n .horizontal-three-colors(@start-color: #00b3ee; @mid-color: #7a43b6; @color-stop: 50%; @end-color: #c3325f) {\n background-image: -webkit-linear-gradient(left, @start-color, @mid-color @color-stop, @end-color);\n background-image: -o-linear-gradient(left, @start-color, @mid-color @color-stop, @end-color);\n background-image: linear-gradient(to right, @start-color, @mid-color @color-stop, @end-color);\n background-repeat: no-repeat;\n filter: e(%(\"progid:DXImageTransform.Microsoft.gradient(startColorstr='%d', endColorstr='%d', GradientType=1)\",argb(@start-color),argb(@end-color))); // IE9 and down, gets no color-stop at all for proper fallback\n }\n .vertical-three-colors(@start-color: #00b3ee; @mid-color: #7a43b6; @color-stop: 50%; @end-color: #c3325f) {\n background-image: -webkit-linear-gradient(@start-color, @mid-color @color-stop, @end-color);\n background-image: -o-linear-gradient(@start-color, @mid-color @color-stop, @end-color);\n background-image: linear-gradient(@start-color, @mid-color @color-stop, @end-color);\n background-repeat: no-repeat;\n filter: e(%(\"progid:DXImageTransform.Microsoft.gradient(startColorstr='%d', endColorstr='%d', GradientType=0)\",argb(@start-color),argb(@end-color))); // IE9 and down, gets no color-stop at all for proper fallback\n }\n .radial(@inner-color: #555; @outer-color: #333) {\n background-image: -webkit-radial-gradient(circle, @inner-color, @outer-color);\n background-image: radial-gradient(circle, @inner-color, @outer-color);\n background-repeat: no-repeat;\n }\n .striped(@color: rgba(255,255,255,.15); @angle: 45deg) {\n background-image: -webkit-linear-gradient(@angle, @color 25%, transparent 25%, transparent 50%, @color 50%, @color 75%, transparent 75%, transparent);\n background-image: -o-linear-gradient(@angle, @color 25%, transparent 25%, transparent 50%, @color 50%, @color 75%, transparent 75%, transparent);\n background-image: linear-gradient(@angle, @color 25%, transparent 25%, transparent 50%, @color 50%, @color 75%, transparent 75%, transparent);\n }\n}\n","// Reset filters for IE\n//\n// When you need to remove a gradient background, do not forget to use this to reset\n// the IE filter for IE9 and below.\n\n.reset-filter() {\n filter: e(%(\"progid:DXImageTransform.Microsoft.gradient(enabled = false)\"));\n}\n"]} \ No newline at end of file diff --git a/mayan/apps/appearance/static/appearance/packages/bootstrap-3.3.4-dist/css/bootstrap-theme.min.css b/mayan/apps/appearance/static/appearance/packages/bootstrap-3.3.4-dist/css/bootstrap-theme.min.css new file mode 100644 index 0000000000..cefa3d1ae3 --- /dev/null +++ b/mayan/apps/appearance/static/appearance/packages/bootstrap-3.3.4-dist/css/bootstrap-theme.min.css @@ -0,0 +1,5 @@ +/*! + * Bootstrap v3.3.4 (http://getbootstrap.com) + * Copyright 2011-2015 Twitter, Inc. + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + */.btn-danger,.btn-default,.btn-info,.btn-primary,.btn-success,.btn-warning{text-shadow:0 -1px 0 rgba(0,0,0,.2);-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.15),0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 0 rgba(255,255,255,.15),0 1px 1px rgba(0,0,0,.075)}.btn-danger.active,.btn-danger:active,.btn-default.active,.btn-default:active,.btn-info.active,.btn-info:active,.btn-primary.active,.btn-primary:active,.btn-success.active,.btn-success:active,.btn-warning.active,.btn-warning:active{-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,.125);box-shadow:inset 0 3px 5px rgba(0,0,0,.125)}.btn-danger .badge,.btn-default .badge,.btn-info .badge,.btn-primary .badge,.btn-success .badge,.btn-warning .badge{text-shadow:none}.btn.active,.btn:active{background-image:none}.btn-default{text-shadow:0 1px 0 #fff;background-image:-webkit-linear-gradient(top,#fff 0,#e0e0e0 100%);background-image:-o-linear-gradient(top,#fff 0,#e0e0e0 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#fff),to(#e0e0e0));background-image:linear-gradient(to bottom,#fff 0,#e0e0e0 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff', endColorstr='#ffe0e0e0', GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false);background-repeat:repeat-x;border-color:#dbdbdb;border-color:#ccc}.btn-default:focus,.btn-default:hover{background-color:#e0e0e0;background-position:0 -15px}.btn-default.active,.btn-default:active{background-color:#e0e0e0;border-color:#dbdbdb}.btn-default.disabled,.btn-default:disabled,.btn-default[disabled]{background-color:#e0e0e0;background-image:none}.btn-primary{background-image:-webkit-linear-gradient(top,#337ab7 0,#265a88 100%);background-image:-o-linear-gradient(top,#337ab7 0,#265a88 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#337ab7),to(#265a88));background-image:linear-gradient(to bottom,#337ab7 0,#265a88 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff265a88', GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false);background-repeat:repeat-x;border-color:#245580}.btn-primary:focus,.btn-primary:hover{background-color:#265a88;background-position:0 -15px}.btn-primary.active,.btn-primary:active{background-color:#265a88;border-color:#245580}.btn-primary.disabled,.btn-primary:disabled,.btn-primary[disabled]{background-color:#265a88;background-image:none}.btn-success{background-image:-webkit-linear-gradient(top,#5cb85c 0,#419641 100%);background-image:-o-linear-gradient(top,#5cb85c 0,#419641 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#5cb85c),to(#419641));background-image:linear-gradient(to bottom,#5cb85c 0,#419641 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5cb85c', endColorstr='#ff419641', GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false);background-repeat:repeat-x;border-color:#3e8f3e}.btn-success:focus,.btn-success:hover{background-color:#419641;background-position:0 -15px}.btn-success.active,.btn-success:active{background-color:#419641;border-color:#3e8f3e}.btn-success.disabled,.btn-success:disabled,.btn-success[disabled]{background-color:#419641;background-image:none}.btn-info{background-image:-webkit-linear-gradient(top,#5bc0de 0,#2aabd2 100%);background-image:-o-linear-gradient(top,#5bc0de 0,#2aabd2 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#5bc0de),to(#2aabd2));background-image:linear-gradient(to bottom,#5bc0de 0,#2aabd2 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5bc0de', endColorstr='#ff2aabd2', GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false);background-repeat:repeat-x;border-color:#28a4c9}.btn-info:focus,.btn-info:hover{background-color:#2aabd2;background-position:0 -15px}.btn-info.active,.btn-info:active{background-color:#2aabd2;border-color:#28a4c9}.btn-info.disabled,.btn-info:disabled,.btn-info[disabled]{background-color:#2aabd2;background-image:none}.btn-warning{background-image:-webkit-linear-gradient(top,#f0ad4e 0,#eb9316 100%);background-image:-o-linear-gradient(top,#f0ad4e 0,#eb9316 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#f0ad4e),to(#eb9316));background-image:linear-gradient(to bottom,#f0ad4e 0,#eb9316 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff0ad4e', endColorstr='#ffeb9316', GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false);background-repeat:repeat-x;border-color:#e38d13}.btn-warning:focus,.btn-warning:hover{background-color:#eb9316;background-position:0 -15px}.btn-warning.active,.btn-warning:active{background-color:#eb9316;border-color:#e38d13}.btn-warning.disabled,.btn-warning:disabled,.btn-warning[disabled]{background-color:#eb9316;background-image:none}.btn-danger{background-image:-webkit-linear-gradient(top,#d9534f 0,#c12e2a 100%);background-image:-o-linear-gradient(top,#d9534f 0,#c12e2a 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#d9534f),to(#c12e2a));background-image:linear-gradient(to bottom,#d9534f 0,#c12e2a 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9534f', endColorstr='#ffc12e2a', GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false);background-repeat:repeat-x;border-color:#b92c28}.btn-danger:focus,.btn-danger:hover{background-color:#c12e2a;background-position:0 -15px}.btn-danger.active,.btn-danger:active{background-color:#c12e2a;border-color:#b92c28}.btn-danger.disabled,.btn-danger:disabled,.btn-danger[disabled]{background-color:#c12e2a;background-image:none}.img-thumbnail,.thumbnail{-webkit-box-shadow:0 1px 2px rgba(0,0,0,.075);box-shadow:0 1px 2px rgba(0,0,0,.075)}.dropdown-menu>li>a:focus,.dropdown-menu>li>a:hover{background-color:#e8e8e8;background-image:-webkit-linear-gradient(top,#f5f5f5 0,#e8e8e8 100%);background-image:-o-linear-gradient(top,#f5f5f5 0,#e8e8e8 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#f5f5f5),to(#e8e8e8));background-image:linear-gradient(to bottom,#f5f5f5 0,#e8e8e8 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff5f5f5', endColorstr='#ffe8e8e8', GradientType=0);background-repeat:repeat-x}.dropdown-menu>.active>a,.dropdown-menu>.active>a:focus,.dropdown-menu>.active>a:hover{background-color:#2e6da4;background-image:-webkit-linear-gradient(top,#337ab7 0,#2e6da4 100%);background-image:-o-linear-gradient(top,#337ab7 0,#2e6da4 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#337ab7),to(#2e6da4));background-image:linear-gradient(to bottom,#337ab7 0,#2e6da4 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff2e6da4', GradientType=0);background-repeat:repeat-x}.navbar-default{background-image:-webkit-linear-gradient(top,#fff 0,#f8f8f8 100%);background-image:-o-linear-gradient(top,#fff 0,#f8f8f8 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#fff),to(#f8f8f8));background-image:linear-gradient(to bottom,#fff 0,#f8f8f8 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff', endColorstr='#fff8f8f8', GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false);background-repeat:repeat-x;border-radius:4px;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.15),0 1px 5px rgba(0,0,0,.075);box-shadow:inset 0 1px 0 rgba(255,255,255,.15),0 1px 5px rgba(0,0,0,.075)}.navbar-default .navbar-nav>.active>a,.navbar-default .navbar-nav>.open>a{background-image:-webkit-linear-gradient(top,#dbdbdb 0,#e2e2e2 100%);background-image:-o-linear-gradient(top,#dbdbdb 0,#e2e2e2 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#dbdbdb),to(#e2e2e2));background-image:linear-gradient(to bottom,#dbdbdb 0,#e2e2e2 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffdbdbdb', endColorstr='#ffe2e2e2', GradientType=0);background-repeat:repeat-x;-webkit-box-shadow:inset 0 3px 9px rgba(0,0,0,.075);box-shadow:inset 0 3px 9px rgba(0,0,0,.075)}.navbar-brand,.navbar-nav>li>a{text-shadow:0 1px 0 rgba(255,255,255,.25)}.navbar-inverse{background-image:-webkit-linear-gradient(top,#3c3c3c 0,#222 100%);background-image:-o-linear-gradient(top,#3c3c3c 0,#222 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#3c3c3c),to(#222));background-image:linear-gradient(to bottom,#3c3c3c 0,#222 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff3c3c3c', endColorstr='#ff222222', GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false);background-repeat:repeat-x}.navbar-inverse .navbar-nav>.active>a,.navbar-inverse .navbar-nav>.open>a{background-image:-webkit-linear-gradient(top,#080808 0,#0f0f0f 100%);background-image:-o-linear-gradient(top,#080808 0,#0f0f0f 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#080808),to(#0f0f0f));background-image:linear-gradient(to bottom,#080808 0,#0f0f0f 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff080808', endColorstr='#ff0f0f0f', GradientType=0);background-repeat:repeat-x;-webkit-box-shadow:inset 0 3px 9px rgba(0,0,0,.25);box-shadow:inset 0 3px 9px rgba(0,0,0,.25)}.navbar-inverse .navbar-brand,.navbar-inverse .navbar-nav>li>a{text-shadow:0 -1px 0 rgba(0,0,0,.25)}.navbar-fixed-bottom,.navbar-fixed-top,.navbar-static-top{border-radius:0}@media (max-width:767px){.navbar .navbar-nav .open .dropdown-menu>.active>a,.navbar .navbar-nav .open .dropdown-menu>.active>a:focus,.navbar .navbar-nav .open .dropdown-menu>.active>a:hover{color:#fff;background-image:-webkit-linear-gradient(top,#337ab7 0,#2e6da4 100%);background-image:-o-linear-gradient(top,#337ab7 0,#2e6da4 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#337ab7),to(#2e6da4));background-image:linear-gradient(to bottom,#337ab7 0,#2e6da4 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff2e6da4', GradientType=0);background-repeat:repeat-x}}.alert{text-shadow:0 1px 0 rgba(255,255,255,.2);-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.25),0 1px 2px rgba(0,0,0,.05);box-shadow:inset 0 1px 0 rgba(255,255,255,.25),0 1px 2px rgba(0,0,0,.05)}.alert-success{background-image:-webkit-linear-gradient(top,#dff0d8 0,#c8e5bc 100%);background-image:-o-linear-gradient(top,#dff0d8 0,#c8e5bc 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#dff0d8),to(#c8e5bc));background-image:linear-gradient(to bottom,#dff0d8 0,#c8e5bc 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffdff0d8', endColorstr='#ffc8e5bc', GradientType=0);background-repeat:repeat-x;border-color:#b2dba1}.alert-info{background-image:-webkit-linear-gradient(top,#d9edf7 0,#b9def0 100%);background-image:-o-linear-gradient(top,#d9edf7 0,#b9def0 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#d9edf7),to(#b9def0));background-image:linear-gradient(to bottom,#d9edf7 0,#b9def0 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9edf7', endColorstr='#ffb9def0', GradientType=0);background-repeat:repeat-x;border-color:#9acfea}.alert-warning{background-image:-webkit-linear-gradient(top,#fcf8e3 0,#f8efc0 100%);background-image:-o-linear-gradient(top,#fcf8e3 0,#f8efc0 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#fcf8e3),to(#f8efc0));background-image:linear-gradient(to bottom,#fcf8e3 0,#f8efc0 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffcf8e3', endColorstr='#fff8efc0', GradientType=0);background-repeat:repeat-x;border-color:#f5e79e}.alert-danger{background-image:-webkit-linear-gradient(top,#f2dede 0,#e7c3c3 100%);background-image:-o-linear-gradient(top,#f2dede 0,#e7c3c3 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#f2dede),to(#e7c3c3));background-image:linear-gradient(to bottom,#f2dede 0,#e7c3c3 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff2dede', endColorstr='#ffe7c3c3', GradientType=0);background-repeat:repeat-x;border-color:#dca7a7}.progress{background-image:-webkit-linear-gradient(top,#ebebeb 0,#f5f5f5 100%);background-image:-o-linear-gradient(top,#ebebeb 0,#f5f5f5 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#ebebeb),to(#f5f5f5));background-image:linear-gradient(to bottom,#ebebeb 0,#f5f5f5 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffebebeb', endColorstr='#fff5f5f5', GradientType=0);background-repeat:repeat-x}.progress-bar{background-image:-webkit-linear-gradient(top,#337ab7 0,#286090 100%);background-image:-o-linear-gradient(top,#337ab7 0,#286090 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#337ab7),to(#286090));background-image:linear-gradient(to bottom,#337ab7 0,#286090 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff286090', GradientType=0);background-repeat:repeat-x}.progress-bar-success{background-image:-webkit-linear-gradient(top,#5cb85c 0,#449d44 100%);background-image:-o-linear-gradient(top,#5cb85c 0,#449d44 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#5cb85c),to(#449d44));background-image:linear-gradient(to bottom,#5cb85c 0,#449d44 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5cb85c', endColorstr='#ff449d44', GradientType=0);background-repeat:repeat-x}.progress-bar-info{background-image:-webkit-linear-gradient(top,#5bc0de 0,#31b0d5 100%);background-image:-o-linear-gradient(top,#5bc0de 0,#31b0d5 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#5bc0de),to(#31b0d5));background-image:linear-gradient(to bottom,#5bc0de 0,#31b0d5 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5bc0de', endColorstr='#ff31b0d5', GradientType=0);background-repeat:repeat-x}.progress-bar-warning{background-image:-webkit-linear-gradient(top,#f0ad4e 0,#ec971f 100%);background-image:-o-linear-gradient(top,#f0ad4e 0,#ec971f 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#f0ad4e),to(#ec971f));background-image:linear-gradient(to bottom,#f0ad4e 0,#ec971f 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff0ad4e', endColorstr='#ffec971f', GradientType=0);background-repeat:repeat-x}.progress-bar-danger{background-image:-webkit-linear-gradient(top,#d9534f 0,#c9302c 100%);background-image:-o-linear-gradient(top,#d9534f 0,#c9302c 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#d9534f),to(#c9302c));background-image:linear-gradient(to bottom,#d9534f 0,#c9302c 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9534f', endColorstr='#ffc9302c', GradientType=0);background-repeat:repeat-x}.progress-bar-striped{background-image:-webkit-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-image:-o-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-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)}.list-group{border-radius:4px;-webkit-box-shadow:0 1px 2px rgba(0,0,0,.075);box-shadow:0 1px 2px rgba(0,0,0,.075)}.list-group-item.active,.list-group-item.active:focus,.list-group-item.active:hover{text-shadow:0 -1px 0 #286090;background-image:-webkit-linear-gradient(top,#337ab7 0,#2b669a 100%);background-image:-o-linear-gradient(top,#337ab7 0,#2b669a 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#337ab7),to(#2b669a));background-image:linear-gradient(to bottom,#337ab7 0,#2b669a 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff2b669a', GradientType=0);background-repeat:repeat-x;border-color:#2b669a}.list-group-item.active .badge,.list-group-item.active:focus .badge,.list-group-item.active:hover .badge{text-shadow:none}.panel{-webkit-box-shadow:0 1px 2px rgba(0,0,0,.05);box-shadow:0 1px 2px rgba(0,0,0,.05)}.panel-default>.panel-heading{background-image:-webkit-linear-gradient(top,#f5f5f5 0,#e8e8e8 100%);background-image:-o-linear-gradient(top,#f5f5f5 0,#e8e8e8 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#f5f5f5),to(#e8e8e8));background-image:linear-gradient(to bottom,#f5f5f5 0,#e8e8e8 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff5f5f5', endColorstr='#ffe8e8e8', GradientType=0);background-repeat:repeat-x}.panel-primary>.panel-heading{background-image:-webkit-linear-gradient(top,#337ab7 0,#2e6da4 100%);background-image:-o-linear-gradient(top,#337ab7 0,#2e6da4 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#337ab7),to(#2e6da4));background-image:linear-gradient(to bottom,#337ab7 0,#2e6da4 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff2e6da4', GradientType=0);background-repeat:repeat-x}.panel-success>.panel-heading{background-image:-webkit-linear-gradient(top,#dff0d8 0,#d0e9c6 100%);background-image:-o-linear-gradient(top,#dff0d8 0,#d0e9c6 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#dff0d8),to(#d0e9c6));background-image:linear-gradient(to bottom,#dff0d8 0,#d0e9c6 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffdff0d8', endColorstr='#ffd0e9c6', GradientType=0);background-repeat:repeat-x}.panel-info>.panel-heading{background-image:-webkit-linear-gradient(top,#d9edf7 0,#c4e3f3 100%);background-image:-o-linear-gradient(top,#d9edf7 0,#c4e3f3 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#d9edf7),to(#c4e3f3));background-image:linear-gradient(to bottom,#d9edf7 0,#c4e3f3 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9edf7', endColorstr='#ffc4e3f3', GradientType=0);background-repeat:repeat-x}.panel-warning>.panel-heading{background-image:-webkit-linear-gradient(top,#fcf8e3 0,#faf2cc 100%);background-image:-o-linear-gradient(top,#fcf8e3 0,#faf2cc 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#fcf8e3),to(#faf2cc));background-image:linear-gradient(to bottom,#fcf8e3 0,#faf2cc 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffcf8e3', endColorstr='#fffaf2cc', GradientType=0);background-repeat:repeat-x}.panel-danger>.panel-heading{background-image:-webkit-linear-gradient(top,#f2dede 0,#ebcccc 100%);background-image:-o-linear-gradient(top,#f2dede 0,#ebcccc 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#f2dede),to(#ebcccc));background-image:linear-gradient(to bottom,#f2dede 0,#ebcccc 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff2dede', endColorstr='#ffebcccc', GradientType=0);background-repeat:repeat-x}.well{background-image:-webkit-linear-gradient(top,#e8e8e8 0,#f5f5f5 100%);background-image:-o-linear-gradient(top,#e8e8e8 0,#f5f5f5 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#e8e8e8),to(#f5f5f5));background-image:linear-gradient(to bottom,#e8e8e8 0,#f5f5f5 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffe8e8e8', endColorstr='#fff5f5f5', GradientType=0);background-repeat:repeat-x;border-color:#dcdcdc;-webkit-box-shadow:inset 0 1px 3px rgba(0,0,0,.05),0 1px 0 rgba(255,255,255,.1);box-shadow:inset 0 1px 3px rgba(0,0,0,.05),0 1px 0 rgba(255,255,255,.1)} \ No newline at end of file diff --git a/mayan/apps/appearance/static/appearance/packages/bootstrap-3.3.4-dist/css/bootstrap.css b/mayan/apps/appearance/static/appearance/packages/bootstrap-3.3.4-dist/css/bootstrap.css new file mode 100644 index 0000000000..fb15e3d69c --- /dev/null +++ b/mayan/apps/appearance/static/appearance/packages/bootstrap-3.3.4-dist/css/bootstrap.css @@ -0,0 +1,6584 @@ +/*! + * Bootstrap v3.3.4 (http://getbootstrap.com) + * Copyright 2011-2015 Twitter, Inc. + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + */ + +/*! normalize.css v3.0.2 | MIT License | git.io/normalize */ +html { + font-family: sans-serif; + -webkit-text-size-adjust: 100%; + -ms-text-size-adjust: 100%; +} +body { + margin: 0; +} +article, +aside, +details, +figcaption, +figure, +footer, +header, +hgroup, +main, +menu, +nav, +section, +summary { + display: block; +} +audio, +canvas, +progress, +video { + display: inline-block; + vertical-align: baseline; +} +audio:not([controls]) { + display: none; + height: 0; +} +[hidden], +template { + display: none; +} +a { + background-color: transparent; +} +a:active, +a:hover { + outline: 0; +} +abbr[title] { + border-bottom: 1px dotted; +} +b, +strong { + font-weight: bold; +} +dfn { + font-style: italic; +} +h1 { + margin: .67em 0; + font-size: 2em; +} +mark { + color: #000; + background: #ff0; +} +small { + font-size: 80%; +} +sub, +sup { + position: relative; + font-size: 75%; + line-height: 0; + vertical-align: baseline; +} +sup { + top: -.5em; +} +sub { + bottom: -.25em; +} +img { + border: 0; +} +svg:not(:root) { + overflow: hidden; +} +figure { + margin: 1em 40px; +} +hr { + height: 0; + -webkit-box-sizing: content-box; + -moz-box-sizing: content-box; + box-sizing: content-box; +} +pre { + overflow: auto; +} +code, +kbd, +pre, +samp { + font-family: monospace, monospace; + font-size: 1em; +} +button, +input, +optgroup, +select, +textarea { + margin: 0; + font: inherit; + color: inherit; +} +button { + overflow: visible; +} +button, +select { + text-transform: none; +} +button, +html input[type="button"], +input[type="reset"], +input[type="submit"] { + -webkit-appearance: button; + cursor: pointer; +} +button[disabled], +html input[disabled] { + cursor: default; +} +button::-moz-focus-inner, +input::-moz-focus-inner { + padding: 0; + border: 0; +} +input { + line-height: normal; +} +input[type="checkbox"], +input[type="radio"] { + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; + padding: 0; +} +input[type="number"]::-webkit-inner-spin-button, +input[type="number"]::-webkit-outer-spin-button { + height: auto; +} +input[type="search"] { + -webkit-box-sizing: content-box; + -moz-box-sizing: content-box; + box-sizing: content-box; + -webkit-appearance: textfield; +} +input[type="search"]::-webkit-search-cancel-button, +input[type="search"]::-webkit-search-decoration { + -webkit-appearance: none; +} +fieldset { + padding: .35em .625em .75em; + margin: 0 2px; + border: 1px solid #c0c0c0; +} +legend { + padding: 0; + border: 0; +} +textarea { + overflow: auto; +} +optgroup { + font-weight: bold; +} +table { + border-spacing: 0; + border-collapse: collapse; +} +td, +th { + padding: 0; +} +/*! Source: https://github.com/h5bp/html5-boilerplate/blob/master/src/css/main.css */ +@media print { + *, + *:before, + *:after { + color: #000 !important; + text-shadow: none !important; + background: transparent !important; + -webkit-box-shadow: none !important; + box-shadow: none !important; + } + a, + a:visited { + text-decoration: underline; + } + a[href]:after { + content: " (" attr(href) ")"; + } + abbr[title]:after { + content: " (" attr(title) ")"; + } + a[href^="#"]:after, + a[href^="javascript:"]:after { + content: ""; + } + pre, + blockquote { + border: 1px solid #999; + + page-break-inside: avoid; + } + thead { + display: table-header-group; + } + tr, + img { + page-break-inside: avoid; + } + img { + max-width: 100% !important; + } + p, + h2, + h3 { + orphans: 3; + widows: 3; + } + h2, + h3 { + page-break-after: avoid; + } + select { + background: #fff !important; + } + .navbar { + display: none; + } + .btn > .caret, + .dropup > .btn > .caret { + border-top-color: #000 !important; + } + .label { + border: 1px solid #000; + } + .table { + border-collapse: collapse !important; + } + .table td, + .table th { + background-color: #fff !important; + } + .table-bordered th, + .table-bordered td { + border: 1px solid #ddd !important; + } +} +@font-face { + font-family: 'Glyphicons Halflings'; + + src: url('../fonts/glyphicons-halflings-regular.eot'); + src: url('../fonts/glyphicons-halflings-regular.eot?#iefix') format('embedded-opentype'), url('../fonts/glyphicons-halflings-regular.woff2') format('woff2'), url('../fonts/glyphicons-halflings-regular.woff') format('woff'), url('../fonts/glyphicons-halflings-regular.ttf') format('truetype'), url('../fonts/glyphicons-halflings-regular.svg#glyphicons_halflingsregular') format('svg'); +} +.glyphicon { + position: relative; + top: 1px; + display: inline-block; + font-family: 'Glyphicons Halflings'; + font-style: normal; + font-weight: normal; + line-height: 1; + + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; +} +.glyphicon-asterisk:before { + content: "\2a"; +} +.glyphicon-plus:before { + content: "\2b"; +} +.glyphicon-euro:before, +.glyphicon-eur:before { + content: "\20ac"; +} +.glyphicon-minus:before { + content: "\2212"; +} +.glyphicon-cloud:before { + content: "\2601"; +} +.glyphicon-envelope:before { + content: "\2709"; +} +.glyphicon-pencil:before { + content: "\270f"; +} +.glyphicon-glass:before { + content: "\e001"; +} +.glyphicon-music:before { + content: "\e002"; +} +.glyphicon-search:before { + content: "\e003"; +} +.glyphicon-heart:before { + content: "\e005"; +} +.glyphicon-star:before { + content: "\e006"; +} +.glyphicon-star-empty:before { + content: "\e007"; +} +.glyphicon-user:before { + content: "\e008"; +} +.glyphicon-film:before { + content: "\e009"; +} +.glyphicon-th-large:before { + content: "\e010"; +} +.glyphicon-th:before { + content: "\e011"; +} +.glyphicon-th-list:before { + content: "\e012"; +} +.glyphicon-ok:before { + content: "\e013"; +} +.glyphicon-remove:before { + content: "\e014"; +} +.glyphicon-zoom-in:before { + content: "\e015"; +} +.glyphicon-zoom-out:before { + content: "\e016"; +} +.glyphicon-off:before { + content: "\e017"; +} +.glyphicon-signal:before { + content: "\e018"; +} +.glyphicon-cog:before { + content: "\e019"; +} +.glyphicon-trash:before { + content: "\e020"; +} +.glyphicon-home:before { + content: "\e021"; +} +.glyphicon-file:before { + content: "\e022"; +} +.glyphicon-time:before { + content: "\e023"; +} +.glyphicon-road:before { + content: "\e024"; +} +.glyphicon-download-alt:before { + content: "\e025"; +} +.glyphicon-download:before { + content: "\e026"; +} +.glyphicon-upload:before { + content: "\e027"; +} +.glyphicon-inbox:before { + content: "\e028"; +} +.glyphicon-play-circle:before { + content: "\e029"; +} +.glyphicon-repeat:before { + content: "\e030"; +} +.glyphicon-refresh:before { + content: "\e031"; +} +.glyphicon-list-alt:before { + content: "\e032"; +} +.glyphicon-lock:before { + content: "\e033"; +} +.glyphicon-flag:before { + content: "\e034"; +} +.glyphicon-headphones:before { + content: "\e035"; +} +.glyphicon-volume-off:before { + content: "\e036"; +} +.glyphicon-volume-down:before { + content: "\e037"; +} +.glyphicon-volume-up:before { + content: "\e038"; +} +.glyphicon-qrcode:before { + content: "\e039"; +} +.glyphicon-barcode:before { + content: "\e040"; +} +.glyphicon-tag:before { + content: "\e041"; +} +.glyphicon-tags:before { + content: "\e042"; +} +.glyphicon-book:before { + content: "\e043"; +} +.glyphicon-bookmark:before { + content: "\e044"; +} +.glyphicon-print:before { + content: "\e045"; +} +.glyphicon-camera:before { + content: "\e046"; +} +.glyphicon-font:before { + content: "\e047"; +} +.glyphicon-bold:before { + content: "\e048"; +} +.glyphicon-italic:before { + content: "\e049"; +} +.glyphicon-text-height:before { + content: "\e050"; +} +.glyphicon-text-width:before { + content: "\e051"; +} +.glyphicon-align-left:before { + content: "\e052"; +} +.glyphicon-align-center:before { + content: "\e053"; +} +.glyphicon-align-right:before { + content: "\e054"; +} +.glyphicon-align-justify:before { + content: "\e055"; +} +.glyphicon-list:before { + content: "\e056"; +} +.glyphicon-indent-left:before { + content: "\e057"; +} +.glyphicon-indent-right:before { + content: "\e058"; +} +.glyphicon-facetime-video:before { + content: "\e059"; +} +.glyphicon-picture:before { + content: "\e060"; +} +.glyphicon-map-marker:before { + content: "\e062"; +} +.glyphicon-adjust:before { + content: "\e063"; +} +.glyphicon-tint:before { + content: "\e064"; +} +.glyphicon-edit:before { + content: "\e065"; +} +.glyphicon-share:before { + content: "\e066"; +} +.glyphicon-check:before { + content: "\e067"; +} +.glyphicon-move:before { + content: "\e068"; +} +.glyphicon-step-backward:before { + content: "\e069"; +} +.glyphicon-fast-backward:before { + content: "\e070"; +} +.glyphicon-backward:before { + content: "\e071"; +} +.glyphicon-play:before { + content: "\e072"; +} +.glyphicon-pause:before { + content: "\e073"; +} +.glyphicon-stop:before { + content: "\e074"; +} +.glyphicon-forward:before { + content: "\e075"; +} +.glyphicon-fast-forward:before { + content: "\e076"; +} +.glyphicon-step-forward:before { + content: "\e077"; +} +.glyphicon-eject:before { + content: "\e078"; +} +.glyphicon-chevron-left:before { + content: "\e079"; +} +.glyphicon-chevron-right:before { + content: "\e080"; +} +.glyphicon-plus-sign:before { + content: "\e081"; +} +.glyphicon-minus-sign:before { + content: "\e082"; +} +.glyphicon-remove-sign:before { + content: "\e083"; +} +.glyphicon-ok-sign:before { + content: "\e084"; +} +.glyphicon-question-sign:before { + content: "\e085"; +} +.glyphicon-info-sign:before { + content: "\e086"; +} +.glyphicon-screenshot:before { + content: "\e087"; +} +.glyphicon-remove-circle:before { + content: "\e088"; +} +.glyphicon-ok-circle:before { + content: "\e089"; +} +.glyphicon-ban-circle:before { + content: "\e090"; +} +.glyphicon-arrow-left:before { + content: "\e091"; +} +.glyphicon-arrow-right:before { + content: "\e092"; +} +.glyphicon-arrow-up:before { + content: "\e093"; +} +.glyphicon-arrow-down:before { + content: "\e094"; +} +.glyphicon-share-alt:before { + content: "\e095"; +} +.glyphicon-resize-full:before { + content: "\e096"; +} +.glyphicon-resize-small:before { + content: "\e097"; +} +.glyphicon-exclamation-sign:before { + content: "\e101"; +} +.glyphicon-gift:before { + content: "\e102"; +} +.glyphicon-leaf:before { + content: "\e103"; +} +.glyphicon-fire:before { + content: "\e104"; +} +.glyphicon-eye-open:before { + content: "\e105"; +} +.glyphicon-eye-close:before { + content: "\e106"; +} +.glyphicon-warning-sign:before { + content: "\e107"; +} +.glyphicon-plane:before { + content: "\e108"; +} +.glyphicon-calendar:before { + content: "\e109"; +} +.glyphicon-random:before { + content: "\e110"; +} +.glyphicon-comment:before { + content: "\e111"; +} +.glyphicon-magnet:before { + content: "\e112"; +} +.glyphicon-chevron-up:before { + content: "\e113"; +} +.glyphicon-chevron-down:before { + content: "\e114"; +} +.glyphicon-retweet:before { + content: "\e115"; +} +.glyphicon-shopping-cart:before { + content: "\e116"; +} +.glyphicon-folder-close:before { + content: "\e117"; +} +.glyphicon-folder-open:before { + content: "\e118"; +} +.glyphicon-resize-vertical:before { + content: "\e119"; +} +.glyphicon-resize-horizontal:before { + content: "\e120"; +} +.glyphicon-hdd:before { + content: "\e121"; +} +.glyphicon-bullhorn:before { + content: "\e122"; +} +.glyphicon-bell:before { + content: "\e123"; +} +.glyphicon-certificate:before { + content: "\e124"; +} +.glyphicon-thumbs-up:before { + content: "\e125"; +} +.glyphicon-thumbs-down:before { + content: "\e126"; +} +.glyphicon-hand-right:before { + content: "\e127"; +} +.glyphicon-hand-left:before { + content: "\e128"; +} +.glyphicon-hand-up:before { + content: "\e129"; +} +.glyphicon-hand-down:before { + content: "\e130"; +} +.glyphicon-circle-arrow-right:before { + content: "\e131"; +} +.glyphicon-circle-arrow-left:before { + content: "\e132"; +} +.glyphicon-circle-arrow-up:before { + content: "\e133"; +} +.glyphicon-circle-arrow-down:before { + content: "\e134"; +} +.glyphicon-globe:before { + content: "\e135"; +} +.glyphicon-wrench:before { + content: "\e136"; +} +.glyphicon-tasks:before { + content: "\e137"; +} +.glyphicon-filter:before { + content: "\e138"; +} +.glyphicon-briefcase:before { + content: "\e139"; +} +.glyphicon-fullscreen:before { + content: "\e140"; +} +.glyphicon-dashboard:before { + content: "\e141"; +} +.glyphicon-paperclip:before { + content: "\e142"; +} +.glyphicon-heart-empty:before { + content: "\e143"; +} +.glyphicon-link:before { + content: "\e144"; +} +.glyphicon-phone:before { + content: "\e145"; +} +.glyphicon-pushpin:before { + content: "\e146"; +} +.glyphicon-usd:before { + content: "\e148"; +} +.glyphicon-gbp:before { + content: "\e149"; +} +.glyphicon-sort:before { + content: "\e150"; +} +.glyphicon-sort-by-alphabet:before { + content: "\e151"; +} +.glyphicon-sort-by-alphabet-alt:before { + content: "\e152"; +} +.glyphicon-sort-by-order:before { + content: "\e153"; +} +.glyphicon-sort-by-order-alt:before { + content: "\e154"; +} +.glyphicon-sort-by-attributes:before { + content: "\e155"; +} +.glyphicon-sort-by-attributes-alt:before { + content: "\e156"; +} +.glyphicon-unchecked:before { + content: "\e157"; +} +.glyphicon-expand:before { + content: "\e158"; +} +.glyphicon-collapse-down:before { + content: "\e159"; +} +.glyphicon-collapse-up:before { + content: "\e160"; +} +.glyphicon-log-in:before { + content: "\e161"; +} +.glyphicon-flash:before { + content: "\e162"; +} +.glyphicon-log-out:before { + content: "\e163"; +} +.glyphicon-new-window:before { + content: "\e164"; +} +.glyphicon-record:before { + content: "\e165"; +} +.glyphicon-save:before { + content: "\e166"; +} +.glyphicon-open:before { + content: "\e167"; +} +.glyphicon-saved:before { + content: "\e168"; +} +.glyphicon-import:before { + content: "\e169"; +} +.glyphicon-export:before { + content: "\e170"; +} +.glyphicon-send:before { + content: "\e171"; +} +.glyphicon-floppy-disk:before { + content: "\e172"; +} +.glyphicon-floppy-saved:before { + content: "\e173"; +} +.glyphicon-floppy-remove:before { + content: "\e174"; +} +.glyphicon-floppy-save:before { + content: "\e175"; +} +.glyphicon-floppy-open:before { + content: "\e176"; +} +.glyphicon-credit-card:before { + content: "\e177"; +} +.glyphicon-transfer:before { + content: "\e178"; +} +.glyphicon-cutlery:before { + content: "\e179"; +} +.glyphicon-header:before { + content: "\e180"; +} +.glyphicon-compressed:before { + content: "\e181"; +} +.glyphicon-earphone:before { + content: "\e182"; +} +.glyphicon-phone-alt:before { + content: "\e183"; +} +.glyphicon-tower:before { + content: "\e184"; +} +.glyphicon-stats:before { + content: "\e185"; +} +.glyphicon-sd-video:before { + content: "\e186"; +} +.glyphicon-hd-video:before { + content: "\e187"; +} +.glyphicon-subtitles:before { + content: "\e188"; +} +.glyphicon-sound-stereo:before { + content: "\e189"; +} +.glyphicon-sound-dolby:before { + content: "\e190"; +} +.glyphicon-sound-5-1:before { + content: "\e191"; +} +.glyphicon-sound-6-1:before { + content: "\e192"; +} +.glyphicon-sound-7-1:before { + content: "\e193"; +} +.glyphicon-copyright-mark:before { + content: "\e194"; +} +.glyphicon-registration-mark:before { + content: "\e195"; +} +.glyphicon-cloud-download:before { + content: "\e197"; +} +.glyphicon-cloud-upload:before { + content: "\e198"; +} +.glyphicon-tree-conifer:before { + content: "\e199"; +} +.glyphicon-tree-deciduous:before { + content: "\e200"; +} +.glyphicon-cd:before { + content: "\e201"; +} +.glyphicon-save-file:before { + content: "\e202"; +} +.glyphicon-open-file:before { + content: "\e203"; +} +.glyphicon-level-up:before { + content: "\e204"; +} +.glyphicon-copy:before { + content: "\e205"; +} +.glyphicon-paste:before { + content: "\e206"; +} +.glyphicon-alert:before { + content: "\e209"; +} +.glyphicon-equalizer:before { + content: "\e210"; +} +.glyphicon-king:before { + content: "\e211"; +} +.glyphicon-queen:before { + content: "\e212"; +} +.glyphicon-pawn:before { + content: "\e213"; +} +.glyphicon-bishop:before { + content: "\e214"; +} +.glyphicon-knight:before { + content: "\e215"; +} +.glyphicon-baby-formula:before { + content: "\e216"; +} +.glyphicon-tent:before { + content: "\26fa"; +} +.glyphicon-blackboard:before { + content: "\e218"; +} +.glyphicon-bed:before { + content: "\e219"; +} +.glyphicon-apple:before { + content: "\f8ff"; +} +.glyphicon-erase:before { + content: "\e221"; +} +.glyphicon-hourglass:before { + content: "\231b"; +} +.glyphicon-lamp:before { + content: "\e223"; +} +.glyphicon-duplicate:before { + content: "\e224"; +} +.glyphicon-piggy-bank:before { + content: "\e225"; +} +.glyphicon-scissors:before { + content: "\e226"; +} +.glyphicon-bitcoin:before { + content: "\e227"; +} +.glyphicon-btc:before { + content: "\e227"; +} +.glyphicon-xbt:before { + content: "\e227"; +} +.glyphicon-yen:before { + content: "\00a5"; +} +.glyphicon-jpy:before { + content: "\00a5"; +} +.glyphicon-ruble:before { + content: "\20bd"; +} +.glyphicon-rub:before { + content: "\20bd"; +} +.glyphicon-scale:before { + content: "\e230"; +} +.glyphicon-ice-lolly:before { + content: "\e231"; +} +.glyphicon-ice-lolly-tasted:before { + content: "\e232"; +} +.glyphicon-education:before { + content: "\e233"; +} +.glyphicon-option-horizontal:before { + content: "\e234"; +} +.glyphicon-option-vertical:before { + content: "\e235"; +} +.glyphicon-menu-hamburger:before { + content: "\e236"; +} +.glyphicon-modal-window:before { + content: "\e237"; +} +.glyphicon-oil:before { + content: "\e238"; +} +.glyphicon-grain:before { + content: "\e239"; +} +.glyphicon-sunglasses:before { + content: "\e240"; +} +.glyphicon-text-size:before { + content: "\e241"; +} +.glyphicon-text-color:before { + content: "\e242"; +} +.glyphicon-text-background:before { + content: "\e243"; +} +.glyphicon-object-align-top:before { + content: "\e244"; +} +.glyphicon-object-align-bottom:before { + content: "\e245"; +} +.glyphicon-object-align-horizontal:before { + content: "\e246"; +} +.glyphicon-object-align-left:before { + content: "\e247"; +} +.glyphicon-object-align-vertical:before { + content: "\e248"; +} +.glyphicon-object-align-right:before { + content: "\e249"; +} +.glyphicon-triangle-right:before { + content: "\e250"; +} +.glyphicon-triangle-left:before { + content: "\e251"; +} +.glyphicon-triangle-bottom:before { + content: "\e252"; +} +.glyphicon-triangle-top:before { + content: "\e253"; +} +.glyphicon-console:before { + content: "\e254"; +} +.glyphicon-superscript:before { + content: "\e255"; +} +.glyphicon-subscript:before { + content: "\e256"; +} +.glyphicon-menu-left:before { + content: "\e257"; +} +.glyphicon-menu-right:before { + content: "\e258"; +} +.glyphicon-menu-down:before { + content: "\e259"; +} +.glyphicon-menu-up:before { + content: "\e260"; +} +* { + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; +} +*:before, +*:after { + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; +} +html { + font-size: 10px; + + -webkit-tap-highlight-color: rgba(0, 0, 0, 0); +} +body { + font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; + font-size: 14px; + line-height: 1.42857143; + color: #333; + background-color: #fff; +} +input, +button, +select, +textarea { + font-family: inherit; + font-size: inherit; + line-height: inherit; +} +a { + color: #337ab7; + text-decoration: none; +} +a:hover, +a:focus { + color: #23527c; + text-decoration: underline; +} +a:focus { + outline: thin dotted; + outline: 5px auto -webkit-focus-ring-color; + outline-offset: -2px; +} +figure { + margin: 0; +} +img { + vertical-align: middle; +} +.img-responsive, +.thumbnail > img, +.thumbnail a > img, +.carousel-inner > .item > img, +.carousel-inner > .item > a > img { + display: block; + max-width: 100%; + height: auto; +} +.img-rounded { + border-radius: 6px; +} +.img-thumbnail { + display: inline-block; + max-width: 100%; + height: auto; + padding: 4px; + line-height: 1.42857143; + background-color: #fff; + border: 1px solid #ddd; + border-radius: 4px; + -webkit-transition: all .2s ease-in-out; + -o-transition: all .2s ease-in-out; + transition: all .2s ease-in-out; +} +.img-circle { + border-radius: 50%; +} +hr { + margin-top: 20px; + margin-bottom: 20px; + border: 0; + border-top: 1px solid #eee; +} +.sr-only { + position: absolute; + width: 1px; + height: 1px; + padding: 0; + margin: -1px; + overflow: hidden; + clip: rect(0, 0, 0, 0); + border: 0; +} +.sr-only-focusable:active, +.sr-only-focusable:focus { + position: static; + width: auto; + height: auto; + margin: 0; + overflow: visible; + clip: auto; +} +[role="button"] { + cursor: pointer; +} +h1, +h2, +h3, +h4, +h5, +h6, +.h1, +.h2, +.h3, +.h4, +.h5, +.h6 { + font-family: inherit; + font-weight: 500; + line-height: 1.1; + color: inherit; +} +h1 small, +h2 small, +h3 small, +h4 small, +h5 small, +h6 small, +.h1 small, +.h2 small, +.h3 small, +.h4 small, +.h5 small, +.h6 small, +h1 .small, +h2 .small, +h3 .small, +h4 .small, +h5 .small, +h6 .small, +.h1 .small, +.h2 .small, +.h3 .small, +.h4 .small, +.h5 .small, +.h6 .small { + font-weight: normal; + line-height: 1; + color: #777; +} +h1, +.h1, +h2, +.h2, +h3, +.h3 { + margin-top: 20px; + margin-bottom: 10px; +} +h1 small, +.h1 small, +h2 small, +.h2 small, +h3 small, +.h3 small, +h1 .small, +.h1 .small, +h2 .small, +.h2 .small, +h3 .small, +.h3 .small { + font-size: 65%; +} +h4, +.h4, +h5, +.h5, +h6, +.h6 { + margin-top: 10px; + margin-bottom: 10px; +} +h4 small, +.h4 small, +h5 small, +.h5 small, +h6 small, +.h6 small, +h4 .small, +.h4 .small, +h5 .small, +.h5 .small, +h6 .small, +.h6 .small { + font-size: 75%; +} +h1, +.h1 { + font-size: 36px; +} +h2, +.h2 { + font-size: 30px; +} +h3, +.h3 { + font-size: 24px; +} +h4, +.h4 { + font-size: 18px; +} +h5, +.h5 { + font-size: 14px; +} +h6, +.h6 { + font-size: 12px; +} +p { + margin: 0 0 10px; +} +.lead { + margin-bottom: 20px; + font-size: 16px; + font-weight: 300; + line-height: 1.4; +} +@media (min-width: 768px) { + .lead { + font-size: 21px; + } +} +small, +.small { + font-size: 85%; +} +mark, +.mark { + padding: .2em; + background-color: #fcf8e3; +} +.text-left { + text-align: left; +} +.text-right { + text-align: right; +} +.text-center { + text-align: center; +} +.text-justify { + text-align: justify; +} +.text-nowrap { + white-space: nowrap; +} +.text-lowercase { + text-transform: lowercase; +} +.text-uppercase { + text-transform: uppercase; +} +.text-capitalize { + text-transform: capitalize; +} +.text-muted { + color: #777; +} +.text-primary { + color: #337ab7; +} +a.text-primary:hover { + color: #286090; +} +.text-success { + color: #3c763d; +} +a.text-success:hover { + color: #2b542c; +} +.text-info { + color: #31708f; +} +a.text-info:hover { + color: #245269; +} +.text-warning { + color: #8a6d3b; +} +a.text-warning:hover { + color: #66512c; +} +.text-danger { + color: #a94442; +} +a.text-danger:hover { + color: #843534; +} +.bg-primary { + color: #fff; + background-color: #337ab7; +} +a.bg-primary:hover { + background-color: #286090; +} +.bg-success { + background-color: #dff0d8; +} +a.bg-success:hover { + background-color: #c1e2b3; +} +.bg-info { + background-color: #d9edf7; +} +a.bg-info:hover { + background-color: #afd9ee; +} +.bg-warning { + background-color: #fcf8e3; +} +a.bg-warning:hover { + background-color: #f7ecb5; +} +.bg-danger { + background-color: #f2dede; +} +a.bg-danger:hover { + background-color: #e4b9b9; +} +.page-header { + padding-bottom: 9px; + margin: 40px 0 20px; + border-bottom: 1px solid #eee; +} +ul, +ol { + margin-top: 0; + margin-bottom: 10px; +} +ul ul, +ol ul, +ul ol, +ol ol { + margin-bottom: 0; +} +.list-unstyled { + padding-left: 0; + list-style: none; +} +.list-inline { + padding-left: 0; + margin-left: -5px; + list-style: none; +} +.list-inline > li { + display: inline-block; + padding-right: 5px; + padding-left: 5px; +} +dl { + margin-top: 0; + margin-bottom: 20px; +} +dt, +dd { + line-height: 1.42857143; +} +dt { + font-weight: bold; +} +dd { + margin-left: 0; +} +@media (min-width: 768px) { + .dl-horizontal dt { + float: left; + width: 160px; + overflow: hidden; + clear: left; + text-align: right; + text-overflow: ellipsis; + white-space: nowrap; + } + .dl-horizontal dd { + margin-left: 180px; + } +} +abbr[title], +abbr[data-original-title] { + cursor: help; + border-bottom: 1px dotted #777; +} +.initialism { + font-size: 90%; + text-transform: uppercase; +} +blockquote { + padding: 10px 20px; + margin: 0 0 20px; + font-size: 17.5px; + border-left: 5px solid #eee; +} +blockquote p:last-child, +blockquote ul:last-child, +blockquote ol:last-child { + margin-bottom: 0; +} +blockquote footer, +blockquote small, +blockquote .small { + display: block; + font-size: 80%; + line-height: 1.42857143; + color: #777; +} +blockquote footer:before, +blockquote small:before, +blockquote .small:before { + content: '\2014 \00A0'; +} +.blockquote-reverse, +blockquote.pull-right { + padding-right: 15px; + padding-left: 0; + text-align: right; + border-right: 5px solid #eee; + border-left: 0; +} +.blockquote-reverse footer:before, +blockquote.pull-right footer:before, +.blockquote-reverse small:before, +blockquote.pull-right small:before, +.blockquote-reverse .small:before, +blockquote.pull-right .small:before { + content: ''; +} +.blockquote-reverse footer:after, +blockquote.pull-right footer:after, +.blockquote-reverse small:after, +blockquote.pull-right small:after, +.blockquote-reverse .small:after, +blockquote.pull-right .small:after { + content: '\00A0 \2014'; +} +address { + margin-bottom: 20px; + font-style: normal; + line-height: 1.42857143; +} +code, +kbd, +pre, +samp { + font-family: Menlo, Monaco, Consolas, "Courier New", monospace; +} +code { + padding: 2px 4px; + font-size: 90%; + color: #c7254e; + background-color: #f9f2f4; + border-radius: 4px; +} +kbd { + padding: 2px 4px; + font-size: 90%; + color: #fff; + background-color: #333; + border-radius: 3px; + -webkit-box-shadow: inset 0 -1px 0 rgba(0, 0, 0, .25); + box-shadow: inset 0 -1px 0 rgba(0, 0, 0, .25); +} +kbd kbd { + padding: 0; + font-size: 100%; + font-weight: bold; + -webkit-box-shadow: none; + box-shadow: none; +} +pre { + display: block; + padding: 9.5px; + margin: 0 0 10px; + font-size: 13px; + line-height: 1.42857143; + color: #333; + word-break: break-all; + word-wrap: break-word; + background-color: #f5f5f5; + border: 1px solid #ccc; + border-radius: 4px; +} +pre code { + padding: 0; + font-size: inherit; + color: inherit; + white-space: pre-wrap; + background-color: transparent; + border-radius: 0; +} +.pre-scrollable { + max-height: 340px; + overflow-y: scroll; +} +.container { + padding-right: 15px; + padding-left: 15px; + margin-right: auto; + margin-left: auto; +} +@media (min-width: 768px) { + .container { + width: 750px; + } +} +@media (min-width: 992px) { + .container { + width: 970px; + } +} +@media (min-width: 1200px) { + .container { + width: 1170px; + } +} +.container-fluid { + padding-right: 15px; + padding-left: 15px; + margin-right: auto; + margin-left: auto; +} +.row { + margin-right: -15px; + margin-left: -15px; +} +.col-xs-1, .col-sm-1, .col-md-1, .col-lg-1, .col-xs-2, .col-sm-2, .col-md-2, .col-lg-2, .col-xs-3, .col-sm-3, .col-md-3, .col-lg-3, .col-xs-4, .col-sm-4, .col-md-4, .col-lg-4, .col-xs-5, .col-sm-5, .col-md-5, .col-lg-5, .col-xs-6, .col-sm-6, .col-md-6, .col-lg-6, .col-xs-7, .col-sm-7, .col-md-7, .col-lg-7, .col-xs-8, .col-sm-8, .col-md-8, .col-lg-8, .col-xs-9, .col-sm-9, .col-md-9, .col-lg-9, .col-xs-10, .col-sm-10, .col-md-10, .col-lg-10, .col-xs-11, .col-sm-11, .col-md-11, .col-lg-11, .col-xs-12, .col-sm-12, .col-md-12, .col-lg-12 { + position: relative; + min-height: 1px; + padding-right: 15px; + padding-left: 15px; +} +.col-xs-1, .col-xs-2, .col-xs-3, .col-xs-4, .col-xs-5, .col-xs-6, .col-xs-7, .col-xs-8, .col-xs-9, .col-xs-10, .col-xs-11, .col-xs-12 { + float: left; +} +.col-xs-12 { + width: 100%; +} +.col-xs-11 { + width: 91.66666667%; +} +.col-xs-10 { + width: 83.33333333%; +} +.col-xs-9 { + width: 75%; +} +.col-xs-8 { + width: 66.66666667%; +} +.col-xs-7 { + width: 58.33333333%; +} +.col-xs-6 { + width: 50%; +} +.col-xs-5 { + width: 41.66666667%; +} +.col-xs-4 { + width: 33.33333333%; +} +.col-xs-3 { + width: 25%; +} +.col-xs-2 { + width: 16.66666667%; +} +.col-xs-1 { + width: 8.33333333%; +} +.col-xs-pull-12 { + right: 100%; +} +.col-xs-pull-11 { + right: 91.66666667%; +} +.col-xs-pull-10 { + right: 83.33333333%; +} +.col-xs-pull-9 { + right: 75%; +} +.col-xs-pull-8 { + right: 66.66666667%; +} +.col-xs-pull-7 { + right: 58.33333333%; +} +.col-xs-pull-6 { + right: 50%; +} +.col-xs-pull-5 { + right: 41.66666667%; +} +.col-xs-pull-4 { + right: 33.33333333%; +} +.col-xs-pull-3 { + right: 25%; +} +.col-xs-pull-2 { + right: 16.66666667%; +} +.col-xs-pull-1 { + right: 8.33333333%; +} +.col-xs-pull-0 { + right: auto; +} +.col-xs-push-12 { + left: 100%; +} +.col-xs-push-11 { + left: 91.66666667%; +} +.col-xs-push-10 { + left: 83.33333333%; +} +.col-xs-push-9 { + left: 75%; +} +.col-xs-push-8 { + left: 66.66666667%; +} +.col-xs-push-7 { + left: 58.33333333%; +} +.col-xs-push-6 { + left: 50%; +} +.col-xs-push-5 { + left: 41.66666667%; +} +.col-xs-push-4 { + left: 33.33333333%; +} +.col-xs-push-3 { + left: 25%; +} +.col-xs-push-2 { + left: 16.66666667%; +} +.col-xs-push-1 { + left: 8.33333333%; +} +.col-xs-push-0 { + left: auto; +} +.col-xs-offset-12 { + margin-left: 100%; +} +.col-xs-offset-11 { + margin-left: 91.66666667%; +} +.col-xs-offset-10 { + margin-left: 83.33333333%; +} +.col-xs-offset-9 { + margin-left: 75%; +} +.col-xs-offset-8 { + margin-left: 66.66666667%; +} +.col-xs-offset-7 { + margin-left: 58.33333333%; +} +.col-xs-offset-6 { + margin-left: 50%; +} +.col-xs-offset-5 { + margin-left: 41.66666667%; +} +.col-xs-offset-4 { + margin-left: 33.33333333%; +} +.col-xs-offset-3 { + margin-left: 25%; +} +.col-xs-offset-2 { + margin-left: 16.66666667%; +} +.col-xs-offset-1 { + margin-left: 8.33333333%; +} +.col-xs-offset-0 { + margin-left: 0; +} +@media (min-width: 768px) { + .col-sm-1, .col-sm-2, .col-sm-3, .col-sm-4, .col-sm-5, .col-sm-6, .col-sm-7, .col-sm-8, .col-sm-9, .col-sm-10, .col-sm-11, .col-sm-12 { + float: left; + } + .col-sm-12 { + width: 100%; + } + .col-sm-11 { + width: 91.66666667%; + } + .col-sm-10 { + width: 83.33333333%; + } + .col-sm-9 { + width: 75%; + } + .col-sm-8 { + width: 66.66666667%; + } + .col-sm-7 { + width: 58.33333333%; + } + .col-sm-6 { + width: 50%; + } + .col-sm-5 { + width: 41.66666667%; + } + .col-sm-4 { + width: 33.33333333%; + } + .col-sm-3 { + width: 25%; + } + .col-sm-2 { + width: 16.66666667%; + } + .col-sm-1 { + width: 8.33333333%; + } + .col-sm-pull-12 { + right: 100%; + } + .col-sm-pull-11 { + right: 91.66666667%; + } + .col-sm-pull-10 { + right: 83.33333333%; + } + .col-sm-pull-9 { + right: 75%; + } + .col-sm-pull-8 { + right: 66.66666667%; + } + .col-sm-pull-7 { + right: 58.33333333%; + } + .col-sm-pull-6 { + right: 50%; + } + .col-sm-pull-5 { + right: 41.66666667%; + } + .col-sm-pull-4 { + right: 33.33333333%; + } + .col-sm-pull-3 { + right: 25%; + } + .col-sm-pull-2 { + right: 16.66666667%; + } + .col-sm-pull-1 { + right: 8.33333333%; + } + .col-sm-pull-0 { + right: auto; + } + .col-sm-push-12 { + left: 100%; + } + .col-sm-push-11 { + left: 91.66666667%; + } + .col-sm-push-10 { + left: 83.33333333%; + } + .col-sm-push-9 { + left: 75%; + } + .col-sm-push-8 { + left: 66.66666667%; + } + .col-sm-push-7 { + left: 58.33333333%; + } + .col-sm-push-6 { + left: 50%; + } + .col-sm-push-5 { + left: 41.66666667%; + } + .col-sm-push-4 { + left: 33.33333333%; + } + .col-sm-push-3 { + left: 25%; + } + .col-sm-push-2 { + left: 16.66666667%; + } + .col-sm-push-1 { + left: 8.33333333%; + } + .col-sm-push-0 { + left: auto; + } + .col-sm-offset-12 { + margin-left: 100%; + } + .col-sm-offset-11 { + margin-left: 91.66666667%; + } + .col-sm-offset-10 { + margin-left: 83.33333333%; + } + .col-sm-offset-9 { + margin-left: 75%; + } + .col-sm-offset-8 { + margin-left: 66.66666667%; + } + .col-sm-offset-7 { + margin-left: 58.33333333%; + } + .col-sm-offset-6 { + margin-left: 50%; + } + .col-sm-offset-5 { + margin-left: 41.66666667%; + } + .col-sm-offset-4 { + margin-left: 33.33333333%; + } + .col-sm-offset-3 { + margin-left: 25%; + } + .col-sm-offset-2 { + margin-left: 16.66666667%; + } + .col-sm-offset-1 { + margin-left: 8.33333333%; + } + .col-sm-offset-0 { + margin-left: 0; + } +} +@media (min-width: 992px) { + .col-md-1, .col-md-2, .col-md-3, .col-md-4, .col-md-5, .col-md-6, .col-md-7, .col-md-8, .col-md-9, .col-md-10, .col-md-11, .col-md-12 { + float: left; + } + .col-md-12 { + width: 100%; + } + .col-md-11 { + width: 91.66666667%; + } + .col-md-10 { + width: 83.33333333%; + } + .col-md-9 { + width: 75%; + } + .col-md-8 { + width: 66.66666667%; + } + .col-md-7 { + width: 58.33333333%; + } + .col-md-6 { + width: 50%; + } + .col-md-5 { + width: 41.66666667%; + } + .col-md-4 { + width: 33.33333333%; + } + .col-md-3 { + width: 25%; + } + .col-md-2 { + width: 16.66666667%; + } + .col-md-1 { + width: 8.33333333%; + } + .col-md-pull-12 { + right: 100%; + } + .col-md-pull-11 { + right: 91.66666667%; + } + .col-md-pull-10 { + right: 83.33333333%; + } + .col-md-pull-9 { + right: 75%; + } + .col-md-pull-8 { + right: 66.66666667%; + } + .col-md-pull-7 { + right: 58.33333333%; + } + .col-md-pull-6 { + right: 50%; + } + .col-md-pull-5 { + right: 41.66666667%; + } + .col-md-pull-4 { + right: 33.33333333%; + } + .col-md-pull-3 { + right: 25%; + } + .col-md-pull-2 { + right: 16.66666667%; + } + .col-md-pull-1 { + right: 8.33333333%; + } + .col-md-pull-0 { + right: auto; + } + .col-md-push-12 { + left: 100%; + } + .col-md-push-11 { + left: 91.66666667%; + } + .col-md-push-10 { + left: 83.33333333%; + } + .col-md-push-9 { + left: 75%; + } + .col-md-push-8 { + left: 66.66666667%; + } + .col-md-push-7 { + left: 58.33333333%; + } + .col-md-push-6 { + left: 50%; + } + .col-md-push-5 { + left: 41.66666667%; + } + .col-md-push-4 { + left: 33.33333333%; + } + .col-md-push-3 { + left: 25%; + } + .col-md-push-2 { + left: 16.66666667%; + } + .col-md-push-1 { + left: 8.33333333%; + } + .col-md-push-0 { + left: auto; + } + .col-md-offset-12 { + margin-left: 100%; + } + .col-md-offset-11 { + margin-left: 91.66666667%; + } + .col-md-offset-10 { + margin-left: 83.33333333%; + } + .col-md-offset-9 { + margin-left: 75%; + } + .col-md-offset-8 { + margin-left: 66.66666667%; + } + .col-md-offset-7 { + margin-left: 58.33333333%; + } + .col-md-offset-6 { + margin-left: 50%; + } + .col-md-offset-5 { + margin-left: 41.66666667%; + } + .col-md-offset-4 { + margin-left: 33.33333333%; + } + .col-md-offset-3 { + margin-left: 25%; + } + .col-md-offset-2 { + margin-left: 16.66666667%; + } + .col-md-offset-1 { + margin-left: 8.33333333%; + } + .col-md-offset-0 { + margin-left: 0; + } +} +@media (min-width: 1200px) { + .col-lg-1, .col-lg-2, .col-lg-3, .col-lg-4, .col-lg-5, .col-lg-6, .col-lg-7, .col-lg-8, .col-lg-9, .col-lg-10, .col-lg-11, .col-lg-12 { + float: left; + } + .col-lg-12 { + width: 100%; + } + .col-lg-11 { + width: 91.66666667%; + } + .col-lg-10 { + width: 83.33333333%; + } + .col-lg-9 { + width: 75%; + } + .col-lg-8 { + width: 66.66666667%; + } + .col-lg-7 { + width: 58.33333333%; + } + .col-lg-6 { + width: 50%; + } + .col-lg-5 { + width: 41.66666667%; + } + .col-lg-4 { + width: 33.33333333%; + } + .col-lg-3 { + width: 25%; + } + .col-lg-2 { + width: 16.66666667%; + } + .col-lg-1 { + width: 8.33333333%; + } + .col-lg-pull-12 { + right: 100%; + } + .col-lg-pull-11 { + right: 91.66666667%; + } + .col-lg-pull-10 { + right: 83.33333333%; + } + .col-lg-pull-9 { + right: 75%; + } + .col-lg-pull-8 { + right: 66.66666667%; + } + .col-lg-pull-7 { + right: 58.33333333%; + } + .col-lg-pull-6 { + right: 50%; + } + .col-lg-pull-5 { + right: 41.66666667%; + } + .col-lg-pull-4 { + right: 33.33333333%; + } + .col-lg-pull-3 { + right: 25%; + } + .col-lg-pull-2 { + right: 16.66666667%; + } + .col-lg-pull-1 { + right: 8.33333333%; + } + .col-lg-pull-0 { + right: auto; + } + .col-lg-push-12 { + left: 100%; + } + .col-lg-push-11 { + left: 91.66666667%; + } + .col-lg-push-10 { + left: 83.33333333%; + } + .col-lg-push-9 { + left: 75%; + } + .col-lg-push-8 { + left: 66.66666667%; + } + .col-lg-push-7 { + left: 58.33333333%; + } + .col-lg-push-6 { + left: 50%; + } + .col-lg-push-5 { + left: 41.66666667%; + } + .col-lg-push-4 { + left: 33.33333333%; + } + .col-lg-push-3 { + left: 25%; + } + .col-lg-push-2 { + left: 16.66666667%; + } + .col-lg-push-1 { + left: 8.33333333%; + } + .col-lg-push-0 { + left: auto; + } + .col-lg-offset-12 { + margin-left: 100%; + } + .col-lg-offset-11 { + margin-left: 91.66666667%; + } + .col-lg-offset-10 { + margin-left: 83.33333333%; + } + .col-lg-offset-9 { + margin-left: 75%; + } + .col-lg-offset-8 { + margin-left: 66.66666667%; + } + .col-lg-offset-7 { + margin-left: 58.33333333%; + } + .col-lg-offset-6 { + margin-left: 50%; + } + .col-lg-offset-5 { + margin-left: 41.66666667%; + } + .col-lg-offset-4 { + margin-left: 33.33333333%; + } + .col-lg-offset-3 { + margin-left: 25%; + } + .col-lg-offset-2 { + margin-left: 16.66666667%; + } + .col-lg-offset-1 { + margin-left: 8.33333333%; + } + .col-lg-offset-0 { + margin-left: 0; + } +} +table { + background-color: transparent; +} +caption { + padding-top: 8px; + padding-bottom: 8px; + color: #777; + text-align: left; +} +th { + text-align: left; +} +.table { + width: 100%; + max-width: 100%; + margin-bottom: 20px; +} +.table > thead > tr > th, +.table > tbody > tr > th, +.table > tfoot > tr > th, +.table > thead > tr > td, +.table > tbody > tr > td, +.table > tfoot > tr > td { + padding: 8px; + line-height: 1.42857143; + vertical-align: top; + border-top: 1px solid #ddd; +} +.table > thead > tr > th { + vertical-align: bottom; + border-bottom: 2px solid #ddd; +} +.table > caption + thead > tr:first-child > th, +.table > colgroup + thead > tr:first-child > th, +.table > thead:first-child > tr:first-child > th, +.table > caption + thead > tr:first-child > td, +.table > colgroup + thead > tr:first-child > td, +.table > thead:first-child > tr:first-child > td { + border-top: 0; +} +.table > tbody + tbody { + border-top: 2px solid #ddd; +} +.table .table { + background-color: #fff; +} +.table-condensed > thead > tr > th, +.table-condensed > tbody > tr > th, +.table-condensed > tfoot > tr > th, +.table-condensed > thead > tr > td, +.table-condensed > tbody > tr > td, +.table-condensed > tfoot > tr > td { + padding: 5px; +} +.table-bordered { + border: 1px solid #ddd; +} +.table-bordered > thead > tr > th, +.table-bordered > tbody > tr > th, +.table-bordered > tfoot > tr > th, +.table-bordered > thead > tr > td, +.table-bordered > tbody > tr > td, +.table-bordered > tfoot > tr > td { + border: 1px solid #ddd; +} +.table-bordered > thead > tr > th, +.table-bordered > thead > tr > td { + border-bottom-width: 2px; +} +.table-striped > tbody > tr:nth-of-type(odd) { + background-color: #f9f9f9; +} +.table-hover > tbody > tr:hover { + background-color: #f5f5f5; +} +table col[class*="col-"] { + position: static; + display: table-column; + float: none; +} +table td[class*="col-"], +table th[class*="col-"] { + position: static; + display: table-cell; + float: none; +} +.table > thead > tr > td.active, +.table > tbody > tr > td.active, +.table > tfoot > tr > td.active, +.table > thead > tr > th.active, +.table > tbody > tr > th.active, +.table > tfoot > tr > th.active, +.table > thead > tr.active > td, +.table > tbody > tr.active > td, +.table > tfoot > tr.active > td, +.table > thead > tr.active > th, +.table > tbody > tr.active > th, +.table > tfoot > tr.active > th { + background-color: #f5f5f5; +} +.table-hover > tbody > tr > td.active:hover, +.table-hover > tbody > tr > th.active:hover, +.table-hover > tbody > tr.active:hover > td, +.table-hover > tbody > tr:hover > .active, +.table-hover > tbody > tr.active:hover > th { + background-color: #e8e8e8; +} +.table > thead > tr > td.success, +.table > tbody > tr > td.success, +.table > tfoot > tr > td.success, +.table > thead > tr > th.success, +.table > tbody > tr > th.success, +.table > tfoot > tr > th.success, +.table > thead > tr.success > td, +.table > tbody > tr.success > td, +.table > tfoot > tr.success > td, +.table > thead > tr.success > th, +.table > tbody > tr.success > th, +.table > tfoot > tr.success > th { + background-color: #dff0d8; +} +.table-hover > tbody > tr > td.success:hover, +.table-hover > tbody > tr > th.success:hover, +.table-hover > tbody > tr.success:hover > td, +.table-hover > tbody > tr:hover > .success, +.table-hover > tbody > tr.success:hover > th { + background-color: #d0e9c6; +} +.table > thead > tr > td.info, +.table > tbody > tr > td.info, +.table > tfoot > tr > td.info, +.table > thead > tr > th.info, +.table > tbody > tr > th.info, +.table > tfoot > tr > th.info, +.table > thead > tr.info > td, +.table > tbody > tr.info > td, +.table > tfoot > tr.info > td, +.table > thead > tr.info > th, +.table > tbody > tr.info > th, +.table > tfoot > tr.info > th { + background-color: #d9edf7; +} +.table-hover > tbody > tr > td.info:hover, +.table-hover > tbody > tr > th.info:hover, +.table-hover > tbody > tr.info:hover > td, +.table-hover > tbody > tr:hover > .info, +.table-hover > tbody > tr.info:hover > th { + background-color: #c4e3f3; +} +.table > thead > tr > td.warning, +.table > tbody > tr > td.warning, +.table > tfoot > tr > td.warning, +.table > thead > tr > th.warning, +.table > tbody > tr > th.warning, +.table > tfoot > tr > th.warning, +.table > thead > tr.warning > td, +.table > tbody > tr.warning > td, +.table > tfoot > tr.warning > td, +.table > thead > tr.warning > th, +.table > tbody > tr.warning > th, +.table > tfoot > tr.warning > th { + background-color: #fcf8e3; +} +.table-hover > tbody > tr > td.warning:hover, +.table-hover > tbody > tr > th.warning:hover, +.table-hover > tbody > tr.warning:hover > td, +.table-hover > tbody > tr:hover > .warning, +.table-hover > tbody > tr.warning:hover > th { + background-color: #faf2cc; +} +.table > thead > tr > td.danger, +.table > tbody > tr > td.danger, +.table > tfoot > tr > td.danger, +.table > thead > tr > th.danger, +.table > tbody > tr > th.danger, +.table > tfoot > tr > th.danger, +.table > thead > tr.danger > td, +.table > tbody > tr.danger > td, +.table > tfoot > tr.danger > td, +.table > thead > tr.danger > th, +.table > tbody > tr.danger > th, +.table > tfoot > tr.danger > th { + background-color: #f2dede; +} +.table-hover > tbody > tr > td.danger:hover, +.table-hover > tbody > tr > th.danger:hover, +.table-hover > tbody > tr.danger:hover > td, +.table-hover > tbody > tr:hover > .danger, +.table-hover > tbody > tr.danger:hover > th { + background-color: #ebcccc; +} +.table-responsive { + min-height: .01%; + overflow-x: auto; +} +@media screen and (max-width: 767px) { + .table-responsive { + width: 100%; + margin-bottom: 15px; + overflow-y: hidden; + -ms-overflow-style: -ms-autohiding-scrollbar; + border: 1px solid #ddd; + } + .table-responsive > .table { + margin-bottom: 0; + } + .table-responsive > .table > thead > tr > th, + .table-responsive > .table > tbody > tr > th, + .table-responsive > .table > tfoot > tr > th, + .table-responsive > .table > thead > tr > td, + .table-responsive > .table > tbody > tr > td, + .table-responsive > .table > tfoot > tr > td { + white-space: nowrap; + } + .table-responsive > .table-bordered { + border: 0; + } + .table-responsive > .table-bordered > thead > tr > th:first-child, + .table-responsive > .table-bordered > tbody > tr > th:first-child, + .table-responsive > .table-bordered > tfoot > tr > th:first-child, + .table-responsive > .table-bordered > thead > tr > td:first-child, + .table-responsive > .table-bordered > tbody > tr > td:first-child, + .table-responsive > .table-bordered > tfoot > tr > td:first-child { + border-left: 0; + } + .table-responsive > .table-bordered > thead > tr > th:last-child, + .table-responsive > .table-bordered > tbody > tr > th:last-child, + .table-responsive > .table-bordered > tfoot > tr > th:last-child, + .table-responsive > .table-bordered > thead > tr > td:last-child, + .table-responsive > .table-bordered > tbody > tr > td:last-child, + .table-responsive > .table-bordered > tfoot > tr > td:last-child { + border-right: 0; + } + .table-responsive > .table-bordered > tbody > tr:last-child > th, + .table-responsive > .table-bordered > tfoot > tr:last-child > th, + .table-responsive > .table-bordered > tbody > tr:last-child > td, + .table-responsive > .table-bordered > tfoot > tr:last-child > td { + border-bottom: 0; + } +} +fieldset { + min-width: 0; + padding: 0; + margin: 0; + border: 0; +} +legend { + display: block; + width: 100%; + padding: 0; + margin-bottom: 20px; + font-size: 21px; + line-height: inherit; + color: #333; + border: 0; + border-bottom: 1px solid #e5e5e5; +} +label { + display: inline-block; + max-width: 100%; + margin-bottom: 5px; + font-weight: bold; +} +input[type="search"] { + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; +} +input[type="radio"], +input[type="checkbox"] { + margin: 4px 0 0; + margin-top: 1px \9; + line-height: normal; +} +input[type="file"] { + display: block; +} +input[type="range"] { + display: block; + width: 100%; +} +select[multiple], +select[size] { + height: auto; +} +input[type="file"]:focus, +input[type="radio"]:focus, +input[type="checkbox"]:focus { + outline: thin dotted; + outline: 5px auto -webkit-focus-ring-color; + outline-offset: -2px; +} +output { + display: block; + padding-top: 7px; + font-size: 14px; + line-height: 1.42857143; + color: #555; +} +.form-control { + display: block; + width: 100%; + height: 34px; + padding: 6px 12px; + font-size: 14px; + line-height: 1.42857143; + color: #555; + background-color: #fff; + background-image: none; + border: 1px solid #ccc; + border-radius: 4px; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075); + box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075); + -webkit-transition: border-color ease-in-out .15s, -webkit-box-shadow ease-in-out .15s; + -o-transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s; + transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s; +} +.form-control:focus { + border-color: #66afe9; + outline: 0; + -webkit-box-shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(102, 175, 233, .6); + box-shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(102, 175, 233, .6); +} +.form-control::-moz-placeholder { + color: #999; + opacity: 1; +} +.form-control:-ms-input-placeholder { + color: #999; +} +.form-control::-webkit-input-placeholder { + color: #999; +} +.form-control[disabled], +.form-control[readonly], +fieldset[disabled] .form-control { + background-color: #eee; + opacity: 1; +} +.form-control[disabled], +fieldset[disabled] .form-control { + cursor: not-allowed; +} +textarea.form-control { + height: auto; +} +input[type="search"] { + -webkit-appearance: none; +} +@media screen and (-webkit-min-device-pixel-ratio: 0) { + input[type="date"], + input[type="time"], + input[type="datetime-local"], + input[type="month"] { + line-height: 34px; + } + input[type="date"].input-sm, + input[type="time"].input-sm, + input[type="datetime-local"].input-sm, + input[type="month"].input-sm, + .input-group-sm input[type="date"], + .input-group-sm input[type="time"], + .input-group-sm input[type="datetime-local"], + .input-group-sm input[type="month"] { + line-height: 30px; + } + input[type="date"].input-lg, + input[type="time"].input-lg, + input[type="datetime-local"].input-lg, + input[type="month"].input-lg, + .input-group-lg input[type="date"], + .input-group-lg input[type="time"], + .input-group-lg input[type="datetime-local"], + .input-group-lg input[type="month"] { + line-height: 46px; + } +} +.form-group { + margin-bottom: 15px; +} +.radio, +.checkbox { + position: relative; + display: block; + margin-top: 10px; + margin-bottom: 10px; +} +.radio label, +.checkbox label { + min-height: 20px; + padding-left: 20px; + margin-bottom: 0; + font-weight: normal; + cursor: pointer; +} +.radio input[type="radio"], +.radio-inline input[type="radio"], +.checkbox input[type="checkbox"], +.checkbox-inline input[type="checkbox"] { + position: absolute; + margin-top: 4px \9; + margin-left: -20px; +} +.radio + .radio, +.checkbox + .checkbox { + margin-top: -5px; +} +.radio-inline, +.checkbox-inline { + position: relative; + display: inline-block; + padding-left: 20px; + margin-bottom: 0; + font-weight: normal; + vertical-align: middle; + cursor: pointer; +} +.radio-inline + .radio-inline, +.checkbox-inline + .checkbox-inline { + margin-top: 0; + margin-left: 10px; +} +input[type="radio"][disabled], +input[type="checkbox"][disabled], +input[type="radio"].disabled, +input[type="checkbox"].disabled, +fieldset[disabled] input[type="radio"], +fieldset[disabled] input[type="checkbox"] { + cursor: not-allowed; +} +.radio-inline.disabled, +.checkbox-inline.disabled, +fieldset[disabled] .radio-inline, +fieldset[disabled] .checkbox-inline { + cursor: not-allowed; +} +.radio.disabled label, +.checkbox.disabled label, +fieldset[disabled] .radio label, +fieldset[disabled] .checkbox label { + cursor: not-allowed; +} +.form-control-static { + min-height: 34px; + padding-top: 7px; + padding-bottom: 7px; + margin-bottom: 0; +} +.form-control-static.input-lg, +.form-control-static.input-sm { + padding-right: 0; + padding-left: 0; +} +.input-sm { + height: 30px; + padding: 5px 10px; + font-size: 12px; + line-height: 1.5; + border-radius: 3px; +} +select.input-sm { + height: 30px; + line-height: 30px; +} +textarea.input-sm, +select[multiple].input-sm { + height: auto; +} +.form-group-sm .form-control { + height: 30px; + padding: 5px 10px; + font-size: 12px; + line-height: 1.5; + border-radius: 3px; +} +select.form-group-sm .form-control { + height: 30px; + line-height: 30px; +} +textarea.form-group-sm .form-control, +select[multiple].form-group-sm .form-control { + height: auto; +} +.form-group-sm .form-control-static { + height: 30px; + min-height: 32px; + padding: 5px 10px; + font-size: 12px; + line-height: 1.5; +} +.input-lg { + height: 46px; + padding: 10px 16px; + font-size: 18px; + line-height: 1.3333333; + border-radius: 6px; +} +select.input-lg { + height: 46px; + line-height: 46px; +} +textarea.input-lg, +select[multiple].input-lg { + height: auto; +} +.form-group-lg .form-control { + height: 46px; + padding: 10px 16px; + font-size: 18px; + line-height: 1.3333333; + border-radius: 6px; +} +select.form-group-lg .form-control { + height: 46px; + line-height: 46px; +} +textarea.form-group-lg .form-control, +select[multiple].form-group-lg .form-control { + height: auto; +} +.form-group-lg .form-control-static { + height: 46px; + min-height: 38px; + padding: 10px 16px; + font-size: 18px; + line-height: 1.3333333; +} +.has-feedback { + position: relative; +} +.has-feedback .form-control { + padding-right: 42.5px; +} +.form-control-feedback { + position: absolute; + top: 0; + right: 0; + z-index: 2; + display: block; + width: 34px; + height: 34px; + line-height: 34px; + text-align: center; + pointer-events: none; +} +.input-lg + .form-control-feedback { + width: 46px; + height: 46px; + line-height: 46px; +} +.input-sm + .form-control-feedback { + width: 30px; + height: 30px; + line-height: 30px; +} +.has-success .help-block, +.has-success .control-label, +.has-success .radio, +.has-success .checkbox, +.has-success .radio-inline, +.has-success .checkbox-inline, +.has-success.radio label, +.has-success.checkbox label, +.has-success.radio-inline label, +.has-success.checkbox-inline label { + color: #3c763d; +} +.has-success .form-control { + border-color: #3c763d; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075); + box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075); +} +.has-success .form-control:focus { + border-color: #2b542c; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 6px #67b168; + box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 6px #67b168; +} +.has-success .input-group-addon { + color: #3c763d; + background-color: #dff0d8; + border-color: #3c763d; +} +.has-success .form-control-feedback { + color: #3c763d; +} +.has-warning .help-block, +.has-warning .control-label, +.has-warning .radio, +.has-warning .checkbox, +.has-warning .radio-inline, +.has-warning .checkbox-inline, +.has-warning.radio label, +.has-warning.checkbox label, +.has-warning.radio-inline label, +.has-warning.checkbox-inline label { + color: #8a6d3b; +} +.has-warning .form-control { + border-color: #8a6d3b; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075); + box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075); +} +.has-warning .form-control:focus { + border-color: #66512c; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 6px #c0a16b; + box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 6px #c0a16b; +} +.has-warning .input-group-addon { + color: #8a6d3b; + background-color: #fcf8e3; + border-color: #8a6d3b; +} +.has-warning .form-control-feedback { + color: #8a6d3b; +} +.has-error .help-block, +.has-error .control-label, +.has-error .radio, +.has-error .checkbox, +.has-error .radio-inline, +.has-error .checkbox-inline, +.has-error.radio label, +.has-error.checkbox label, +.has-error.radio-inline label, +.has-error.checkbox-inline label { + color: #a94442; +} +.has-error .form-control { + border-color: #a94442; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075); + box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075); +} +.has-error .form-control:focus { + border-color: #843534; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 6px #ce8483; + box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 6px #ce8483; +} +.has-error .input-group-addon { + color: #a94442; + background-color: #f2dede; + border-color: #a94442; +} +.has-error .form-control-feedback { + color: #a94442; +} +.has-feedback label ~ .form-control-feedback { + top: 25px; +} +.has-feedback label.sr-only ~ .form-control-feedback { + top: 0; +} +.help-block { + display: block; + margin-top: 5px; + margin-bottom: 10px; + color: #737373; +} +@media (min-width: 768px) { + .form-inline .form-group { + display: inline-block; + margin-bottom: 0; + vertical-align: middle; + } + .form-inline .form-control { + display: inline-block; + width: auto; + vertical-align: middle; + } + .form-inline .form-control-static { + display: inline-block; + } + .form-inline .input-group { + display: inline-table; + vertical-align: middle; + } + .form-inline .input-group .input-group-addon, + .form-inline .input-group .input-group-btn, + .form-inline .input-group .form-control { + width: auto; + } + .form-inline .input-group > .form-control { + width: 100%; + } + .form-inline .control-label { + margin-bottom: 0; + vertical-align: middle; + } + .form-inline .radio, + .form-inline .checkbox { + display: inline-block; + margin-top: 0; + margin-bottom: 0; + vertical-align: middle; + } + .form-inline .radio label, + .form-inline .checkbox label { + padding-left: 0; + } + .form-inline .radio input[type="radio"], + .form-inline .checkbox input[type="checkbox"] { + position: relative; + margin-left: 0; + } + .form-inline .has-feedback .form-control-feedback { + top: 0; + } +} +.form-horizontal .radio, +.form-horizontal .checkbox, +.form-horizontal .radio-inline, +.form-horizontal .checkbox-inline { + padding-top: 7px; + margin-top: 0; + margin-bottom: 0; +} +.form-horizontal .radio, +.form-horizontal .checkbox { + min-height: 27px; +} +.form-horizontal .form-group { + margin-right: -15px; + margin-left: -15px; +} +@media (min-width: 768px) { + .form-horizontal .control-label { + padding-top: 7px; + margin-bottom: 0; + text-align: right; + } +} +.form-horizontal .has-feedback .form-control-feedback { + right: 15px; +} +@media (min-width: 768px) { + .form-horizontal .form-group-lg .control-label { + padding-top: 14.333333px; + } +} +@media (min-width: 768px) { + .form-horizontal .form-group-sm .control-label { + padding-top: 6px; + } +} +.btn { + display: inline-block; + padding: 6px 12px; + margin-bottom: 0; + font-size: 14px; + font-weight: normal; + line-height: 1.42857143; + text-align: center; + white-space: nowrap; + vertical-align: middle; + -ms-touch-action: manipulation; + touch-action: manipulation; + cursor: pointer; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + background-image: none; + border: 1px solid transparent; + border-radius: 4px; +} +.btn:focus, +.btn:active:focus, +.btn.active:focus, +.btn.focus, +.btn:active.focus, +.btn.active.focus { + outline: thin dotted; + outline: 5px auto -webkit-focus-ring-color; + outline-offset: -2px; +} +.btn:hover, +.btn:focus, +.btn.focus { + color: #333; + text-decoration: none; +} +.btn:active, +.btn.active { + background-image: none; + outline: 0; + -webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, .125); + box-shadow: inset 0 3px 5px rgba(0, 0, 0, .125); +} +.btn.disabled, +.btn[disabled], +fieldset[disabled] .btn { + pointer-events: none; + cursor: not-allowed; + filter: alpha(opacity=65); + -webkit-box-shadow: none; + box-shadow: none; + opacity: .65; +} +.btn-default { + color: #333; + background-color: #fff; + border-color: #ccc; +} +.btn-default:hover, +.btn-default:focus, +.btn-default.focus, +.btn-default:active, +.btn-default.active, +.open > .dropdown-toggle.btn-default { + color: #333; + background-color: #e6e6e6; + border-color: #adadad; +} +.btn-default:active, +.btn-default.active, +.open > .dropdown-toggle.btn-default { + background-image: none; +} +.btn-default.disabled, +.btn-default[disabled], +fieldset[disabled] .btn-default, +.btn-default.disabled:hover, +.btn-default[disabled]:hover, +fieldset[disabled] .btn-default:hover, +.btn-default.disabled:focus, +.btn-default[disabled]:focus, +fieldset[disabled] .btn-default:focus, +.btn-default.disabled.focus, +.btn-default[disabled].focus, +fieldset[disabled] .btn-default.focus, +.btn-default.disabled:active, +.btn-default[disabled]:active, +fieldset[disabled] .btn-default:active, +.btn-default.disabled.active, +.btn-default[disabled].active, +fieldset[disabled] .btn-default.active { + background-color: #fff; + border-color: #ccc; +} +.btn-default .badge { + color: #fff; + background-color: #333; +} +.btn-primary { + color: #fff; + background-color: #337ab7; + border-color: #2e6da4; +} +.btn-primary:hover, +.btn-primary:focus, +.btn-primary.focus, +.btn-primary:active, +.btn-primary.active, +.open > .dropdown-toggle.btn-primary { + color: #fff; + background-color: #286090; + border-color: #204d74; +} +.btn-primary:active, +.btn-primary.active, +.open > .dropdown-toggle.btn-primary { + background-image: none; +} +.btn-primary.disabled, +.btn-primary[disabled], +fieldset[disabled] .btn-primary, +.btn-primary.disabled:hover, +.btn-primary[disabled]:hover, +fieldset[disabled] .btn-primary:hover, +.btn-primary.disabled:focus, +.btn-primary[disabled]:focus, +fieldset[disabled] .btn-primary:focus, +.btn-primary.disabled.focus, +.btn-primary[disabled].focus, +fieldset[disabled] .btn-primary.focus, +.btn-primary.disabled:active, +.btn-primary[disabled]:active, +fieldset[disabled] .btn-primary:active, +.btn-primary.disabled.active, +.btn-primary[disabled].active, +fieldset[disabled] .btn-primary.active { + background-color: #337ab7; + border-color: #2e6da4; +} +.btn-primary .badge { + color: #337ab7; + background-color: #fff; +} +.btn-success { + color: #fff; + background-color: #5cb85c; + border-color: #4cae4c; +} +.btn-success:hover, +.btn-success:focus, +.btn-success.focus, +.btn-success:active, +.btn-success.active, +.open > .dropdown-toggle.btn-success { + color: #fff; + background-color: #449d44; + border-color: #398439; +} +.btn-success:active, +.btn-success.active, +.open > .dropdown-toggle.btn-success { + background-image: none; +} +.btn-success.disabled, +.btn-success[disabled], +fieldset[disabled] .btn-success, +.btn-success.disabled:hover, +.btn-success[disabled]:hover, +fieldset[disabled] .btn-success:hover, +.btn-success.disabled:focus, +.btn-success[disabled]:focus, +fieldset[disabled] .btn-success:focus, +.btn-success.disabled.focus, +.btn-success[disabled].focus, +fieldset[disabled] .btn-success.focus, +.btn-success.disabled:active, +.btn-success[disabled]:active, +fieldset[disabled] .btn-success:active, +.btn-success.disabled.active, +.btn-success[disabled].active, +fieldset[disabled] .btn-success.active { + background-color: #5cb85c; + border-color: #4cae4c; +} +.btn-success .badge { + color: #5cb85c; + background-color: #fff; +} +.btn-info { + color: #fff; + background-color: #5bc0de; + border-color: #46b8da; +} +.btn-info:hover, +.btn-info:focus, +.btn-info.focus, +.btn-info:active, +.btn-info.active, +.open > .dropdown-toggle.btn-info { + color: #fff; + background-color: #31b0d5; + border-color: #269abc; +} +.btn-info:active, +.btn-info.active, +.open > .dropdown-toggle.btn-info { + background-image: none; +} +.btn-info.disabled, +.btn-info[disabled], +fieldset[disabled] .btn-info, +.btn-info.disabled:hover, +.btn-info[disabled]:hover, +fieldset[disabled] .btn-info:hover, +.btn-info.disabled:focus, +.btn-info[disabled]:focus, +fieldset[disabled] .btn-info:focus, +.btn-info.disabled.focus, +.btn-info[disabled].focus, +fieldset[disabled] .btn-info.focus, +.btn-info.disabled:active, +.btn-info[disabled]:active, +fieldset[disabled] .btn-info:active, +.btn-info.disabled.active, +.btn-info[disabled].active, +fieldset[disabled] .btn-info.active { + background-color: #5bc0de; + border-color: #46b8da; +} +.btn-info .badge { + color: #5bc0de; + background-color: #fff; +} +.btn-warning { + color: #fff; + background-color: #f0ad4e; + border-color: #eea236; +} +.btn-warning:hover, +.btn-warning:focus, +.btn-warning.focus, +.btn-warning:active, +.btn-warning.active, +.open > .dropdown-toggle.btn-warning { + color: #fff; + background-color: #ec971f; + border-color: #d58512; +} +.btn-warning:active, +.btn-warning.active, +.open > .dropdown-toggle.btn-warning { + background-image: none; +} +.btn-warning.disabled, +.btn-warning[disabled], +fieldset[disabled] .btn-warning, +.btn-warning.disabled:hover, +.btn-warning[disabled]:hover, +fieldset[disabled] .btn-warning:hover, +.btn-warning.disabled:focus, +.btn-warning[disabled]:focus, +fieldset[disabled] .btn-warning:focus, +.btn-warning.disabled.focus, +.btn-warning[disabled].focus, +fieldset[disabled] .btn-warning.focus, +.btn-warning.disabled:active, +.btn-warning[disabled]:active, +fieldset[disabled] .btn-warning:active, +.btn-warning.disabled.active, +.btn-warning[disabled].active, +fieldset[disabled] .btn-warning.active { + background-color: #f0ad4e; + border-color: #eea236; +} +.btn-warning .badge { + color: #f0ad4e; + background-color: #fff; +} +.btn-danger { + color: #fff; + background-color: #d9534f; + border-color: #d43f3a; +} +.btn-danger:hover, +.btn-danger:focus, +.btn-danger.focus, +.btn-danger:active, +.btn-danger.active, +.open > .dropdown-toggle.btn-danger { + color: #fff; + background-color: #c9302c; + border-color: #ac2925; +} +.btn-danger:active, +.btn-danger.active, +.open > .dropdown-toggle.btn-danger { + background-image: none; +} +.btn-danger.disabled, +.btn-danger[disabled], +fieldset[disabled] .btn-danger, +.btn-danger.disabled:hover, +.btn-danger[disabled]:hover, +fieldset[disabled] .btn-danger:hover, +.btn-danger.disabled:focus, +.btn-danger[disabled]:focus, +fieldset[disabled] .btn-danger:focus, +.btn-danger.disabled.focus, +.btn-danger[disabled].focus, +fieldset[disabled] .btn-danger.focus, +.btn-danger.disabled:active, +.btn-danger[disabled]:active, +fieldset[disabled] .btn-danger:active, +.btn-danger.disabled.active, +.btn-danger[disabled].active, +fieldset[disabled] .btn-danger.active { + background-color: #d9534f; + border-color: #d43f3a; +} +.btn-danger .badge { + color: #d9534f; + background-color: #fff; +} +.btn-link { + font-weight: normal; + color: #337ab7; + border-radius: 0; +} +.btn-link, +.btn-link:active, +.btn-link.active, +.btn-link[disabled], +fieldset[disabled] .btn-link { + background-color: transparent; + -webkit-box-shadow: none; + box-shadow: none; +} +.btn-link, +.btn-link:hover, +.btn-link:focus, +.btn-link:active { + border-color: transparent; +} +.btn-link:hover, +.btn-link:focus { + color: #23527c; + text-decoration: underline; + background-color: transparent; +} +.btn-link[disabled]:hover, +fieldset[disabled] .btn-link:hover, +.btn-link[disabled]:focus, +fieldset[disabled] .btn-link:focus { + color: #777; + text-decoration: none; +} +.btn-lg, +.btn-group-lg > .btn { + padding: 10px 16px; + font-size: 18px; + line-height: 1.3333333; + border-radius: 6px; +} +.btn-sm, +.btn-group-sm > .btn { + padding: 5px 10px; + font-size: 12px; + line-height: 1.5; + border-radius: 3px; +} +.btn-xs, +.btn-group-xs > .btn { + padding: 1px 5px; + font-size: 12px; + line-height: 1.5; + border-radius: 3px; +} +.btn-block { + display: block; + width: 100%; +} +.btn-block + .btn-block { + margin-top: 5px; +} +input[type="submit"].btn-block, +input[type="reset"].btn-block, +input[type="button"].btn-block { + width: 100%; +} +.fade { + opacity: 0; + -webkit-transition: opacity .15s linear; + -o-transition: opacity .15s linear; + transition: opacity .15s linear; +} +.fade.in { + opacity: 1; +} +.collapse { + display: none; +} +.collapse.in { + display: block; +} +tr.collapse.in { + display: table-row; +} +tbody.collapse.in { + display: table-row-group; +} +.collapsing { + position: relative; + height: 0; + overflow: hidden; + -webkit-transition-timing-function: ease; + -o-transition-timing-function: ease; + transition-timing-function: ease; + -webkit-transition-duration: .35s; + -o-transition-duration: .35s; + transition-duration: .35s; + -webkit-transition-property: height, visibility; + -o-transition-property: height, visibility; + transition-property: height, visibility; +} +.caret { + display: inline-block; + width: 0; + height: 0; + margin-left: 2px; + vertical-align: middle; + border-top: 4px dashed; + border-right: 4px solid transparent; + border-left: 4px solid transparent; +} +.dropup, +.dropdown { + position: relative; +} +.dropdown-toggle:focus { + outline: 0; +} +.dropdown-menu { + position: absolute; + top: 100%; + left: 0; + z-index: 1000; + display: none; + float: left; + min-width: 160px; + padding: 5px 0; + margin: 2px 0 0; + font-size: 14px; + text-align: left; + list-style: none; + background-color: #fff; + -webkit-background-clip: padding-box; + background-clip: padding-box; + border: 1px solid #ccc; + border: 1px solid rgba(0, 0, 0, .15); + border-radius: 4px; + -webkit-box-shadow: 0 6px 12px rgba(0, 0, 0, .175); + box-shadow: 0 6px 12px rgba(0, 0, 0, .175); +} +.dropdown-menu.pull-right { + right: 0; + left: auto; +} +.dropdown-menu .divider { + height: 1px; + margin: 9px 0; + overflow: hidden; + background-color: #e5e5e5; +} +.dropdown-menu > li > a { + display: block; + padding: 3px 20px; + clear: both; + font-weight: normal; + line-height: 1.42857143; + color: #333; + white-space: nowrap; +} +.dropdown-menu > li > a:hover, +.dropdown-menu > li > a:focus { + color: #262626; + text-decoration: none; + background-color: #f5f5f5; +} +.dropdown-menu > .active > a, +.dropdown-menu > .active > a:hover, +.dropdown-menu > .active > a:focus { + color: #fff; + text-decoration: none; + background-color: #337ab7; + outline: 0; +} +.dropdown-menu > .disabled > a, +.dropdown-menu > .disabled > a:hover, +.dropdown-menu > .disabled > a:focus { + color: #777; +} +.dropdown-menu > .disabled > a:hover, +.dropdown-menu > .disabled > a:focus { + text-decoration: none; + cursor: not-allowed; + background-color: transparent; + background-image: none; + filter: progid:DXImageTransform.Microsoft.gradient(enabled = false); +} +.open > .dropdown-menu { + display: block; +} +.open > a { + outline: 0; +} +.dropdown-menu-right { + right: 0; + left: auto; +} +.dropdown-menu-left { + right: auto; + left: 0; +} +.dropdown-header { + display: block; + padding: 3px 20px; + font-size: 12px; + line-height: 1.42857143; + color: #777; + white-space: nowrap; +} +.dropdown-backdrop { + position: fixed; + top: 0; + right: 0; + bottom: 0; + left: 0; + z-index: 990; +} +.pull-right > .dropdown-menu { + right: 0; + left: auto; +} +.dropup .caret, +.navbar-fixed-bottom .dropdown .caret { + content: ""; + border-top: 0; + border-bottom: 4px solid; +} +.dropup .dropdown-menu, +.navbar-fixed-bottom .dropdown .dropdown-menu { + top: auto; + bottom: 100%; + margin-bottom: 2px; +} +@media (min-width: 768px) { + .navbar-right .dropdown-menu { + right: 0; + left: auto; + } + .navbar-right .dropdown-menu-left { + right: auto; + left: 0; + } +} +.btn-group, +.btn-group-vertical { + position: relative; + display: inline-block; + vertical-align: middle; +} +.btn-group > .btn, +.btn-group-vertical > .btn { + position: relative; + float: left; +} +.btn-group > .btn:hover, +.btn-group-vertical > .btn:hover, +.btn-group > .btn:focus, +.btn-group-vertical > .btn:focus, +.btn-group > .btn:active, +.btn-group-vertical > .btn:active, +.btn-group > .btn.active, +.btn-group-vertical > .btn.active { + z-index: 2; +} +.btn-group .btn + .btn, +.btn-group .btn + .btn-group, +.btn-group .btn-group + .btn, +.btn-group .btn-group + .btn-group { + margin-left: -1px; +} +.btn-toolbar { + margin-left: -5px; +} +.btn-toolbar .btn-group, +.btn-toolbar .input-group { + float: left; +} +.btn-toolbar > .btn, +.btn-toolbar > .btn-group, +.btn-toolbar > .input-group { + margin-left: 5px; +} +.btn-group > .btn:not(:first-child):not(:last-child):not(.dropdown-toggle) { + border-radius: 0; +} +.btn-group > .btn:first-child { + margin-left: 0; +} +.btn-group > .btn:first-child:not(:last-child):not(.dropdown-toggle) { + border-top-right-radius: 0; + border-bottom-right-radius: 0; +} +.btn-group > .btn:last-child:not(:first-child), +.btn-group > .dropdown-toggle:not(:first-child) { + border-top-left-radius: 0; + border-bottom-left-radius: 0; +} +.btn-group > .btn-group { + float: left; +} +.btn-group > .btn-group:not(:first-child):not(:last-child) > .btn { + border-radius: 0; +} +.btn-group > .btn-group:first-child:not(:last-child) > .btn:last-child, +.btn-group > .btn-group:first-child:not(:last-child) > .dropdown-toggle { + border-top-right-radius: 0; + border-bottom-right-radius: 0; +} +.btn-group > .btn-group:last-child:not(:first-child) > .btn:first-child { + border-top-left-radius: 0; + border-bottom-left-radius: 0; +} +.btn-group .dropdown-toggle:active, +.btn-group.open .dropdown-toggle { + outline: 0; +} +.btn-group > .btn + .dropdown-toggle { + padding-right: 8px; + padding-left: 8px; +} +.btn-group > .btn-lg + .dropdown-toggle { + padding-right: 12px; + padding-left: 12px; +} +.btn-group.open .dropdown-toggle { + -webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, .125); + box-shadow: inset 0 3px 5px rgba(0, 0, 0, .125); +} +.btn-group.open .dropdown-toggle.btn-link { + -webkit-box-shadow: none; + box-shadow: none; +} +.btn .caret { + margin-left: 0; +} +.btn-lg .caret { + border-width: 5px 5px 0; + border-bottom-width: 0; +} +.dropup .btn-lg .caret { + border-width: 0 5px 5px; +} +.btn-group-vertical > .btn, +.btn-group-vertical > .btn-group, +.btn-group-vertical > .btn-group > .btn { + display: block; + float: none; + width: 100%; + max-width: 100%; +} +.btn-group-vertical > .btn-group > .btn { + float: none; +} +.btn-group-vertical > .btn + .btn, +.btn-group-vertical > .btn + .btn-group, +.btn-group-vertical > .btn-group + .btn, +.btn-group-vertical > .btn-group + .btn-group { + margin-top: -1px; + margin-left: 0; +} +.btn-group-vertical > .btn:not(:first-child):not(:last-child) { + border-radius: 0; +} +.btn-group-vertical > .btn:first-child:not(:last-child) { + border-top-right-radius: 4px; + border-bottom-right-radius: 0; + border-bottom-left-radius: 0; +} +.btn-group-vertical > .btn:last-child:not(:first-child) { + border-top-left-radius: 0; + border-top-right-radius: 0; + border-bottom-left-radius: 4px; +} +.btn-group-vertical > .btn-group:not(:first-child):not(:last-child) > .btn { + border-radius: 0; +} +.btn-group-vertical > .btn-group:first-child:not(:last-child) > .btn:last-child, +.btn-group-vertical > .btn-group:first-child:not(:last-child) > .dropdown-toggle { + border-bottom-right-radius: 0; + border-bottom-left-radius: 0; +} +.btn-group-vertical > .btn-group:last-child:not(:first-child) > .btn:first-child { + border-top-left-radius: 0; + border-top-right-radius: 0; +} +.btn-group-justified { + display: table; + width: 100%; + table-layout: fixed; + border-collapse: separate; +} +.btn-group-justified > .btn, +.btn-group-justified > .btn-group { + display: table-cell; + float: none; + width: 1%; +} +.btn-group-justified > .btn-group .btn { + width: 100%; +} +.btn-group-justified > .btn-group .dropdown-menu { + left: auto; +} +[data-toggle="buttons"] > .btn input[type="radio"], +[data-toggle="buttons"] > .btn-group > .btn input[type="radio"], +[data-toggle="buttons"] > .btn input[type="checkbox"], +[data-toggle="buttons"] > .btn-group > .btn input[type="checkbox"] { + position: absolute; + clip: rect(0, 0, 0, 0); + pointer-events: none; +} +.input-group { + position: relative; + display: table; + border-collapse: separate; +} +.input-group[class*="col-"] { + float: none; + padding-right: 0; + padding-left: 0; +} +.input-group .form-control { + position: relative; + z-index: 2; + float: left; + width: 100%; + margin-bottom: 0; +} +.input-group-lg > .form-control, +.input-group-lg > .input-group-addon, +.input-group-lg > .input-group-btn > .btn { + height: 46px; + padding: 10px 16px; + font-size: 18px; + line-height: 1.3333333; + border-radius: 6px; +} +select.input-group-lg > .form-control, +select.input-group-lg > .input-group-addon, +select.input-group-lg > .input-group-btn > .btn { + height: 46px; + line-height: 46px; +} +textarea.input-group-lg > .form-control, +textarea.input-group-lg > .input-group-addon, +textarea.input-group-lg > .input-group-btn > .btn, +select[multiple].input-group-lg > .form-control, +select[multiple].input-group-lg > .input-group-addon, +select[multiple].input-group-lg > .input-group-btn > .btn { + height: auto; +} +.input-group-sm > .form-control, +.input-group-sm > .input-group-addon, +.input-group-sm > .input-group-btn > .btn { + height: 30px; + padding: 5px 10px; + font-size: 12px; + line-height: 1.5; + border-radius: 3px; +} +select.input-group-sm > .form-control, +select.input-group-sm > .input-group-addon, +select.input-group-sm > .input-group-btn > .btn { + height: 30px; + line-height: 30px; +} +textarea.input-group-sm > .form-control, +textarea.input-group-sm > .input-group-addon, +textarea.input-group-sm > .input-group-btn > .btn, +select[multiple].input-group-sm > .form-control, +select[multiple].input-group-sm > .input-group-addon, +select[multiple].input-group-sm > .input-group-btn > .btn { + height: auto; +} +.input-group-addon, +.input-group-btn, +.input-group .form-control { + display: table-cell; +} +.input-group-addon:not(:first-child):not(:last-child), +.input-group-btn:not(:first-child):not(:last-child), +.input-group .form-control:not(:first-child):not(:last-child) { + border-radius: 0; +} +.input-group-addon, +.input-group-btn { + width: 1%; + white-space: nowrap; + vertical-align: middle; +} +.input-group-addon { + padding: 6px 12px; + font-size: 14px; + font-weight: normal; + line-height: 1; + color: #555; + text-align: center; + background-color: #eee; + border: 1px solid #ccc; + border-radius: 4px; +} +.input-group-addon.input-sm { + padding: 5px 10px; + font-size: 12px; + border-radius: 3px; +} +.input-group-addon.input-lg { + padding: 10px 16px; + font-size: 18px; + border-radius: 6px; +} +.input-group-addon input[type="radio"], +.input-group-addon input[type="checkbox"] { + margin-top: 0; +} +.input-group .form-control:first-child, +.input-group-addon:first-child, +.input-group-btn:first-child > .btn, +.input-group-btn:first-child > .btn-group > .btn, +.input-group-btn:first-child > .dropdown-toggle, +.input-group-btn:last-child > .btn:not(:last-child):not(.dropdown-toggle), +.input-group-btn:last-child > .btn-group:not(:last-child) > .btn { + border-top-right-radius: 0; + border-bottom-right-radius: 0; +} +.input-group-addon:first-child { + border-right: 0; +} +.input-group .form-control:last-child, +.input-group-addon:last-child, +.input-group-btn:last-child > .btn, +.input-group-btn:last-child > .btn-group > .btn, +.input-group-btn:last-child > .dropdown-toggle, +.input-group-btn:first-child > .btn:not(:first-child), +.input-group-btn:first-child > .btn-group:not(:first-child) > .btn { + border-top-left-radius: 0; + border-bottom-left-radius: 0; +} +.input-group-addon:last-child { + border-left: 0; +} +.input-group-btn { + position: relative; + font-size: 0; + white-space: nowrap; +} +.input-group-btn > .btn { + position: relative; +} +.input-group-btn > .btn + .btn { + margin-left: -1px; +} +.input-group-btn > .btn:hover, +.input-group-btn > .btn:focus, +.input-group-btn > .btn:active { + z-index: 2; +} +.input-group-btn:first-child > .btn, +.input-group-btn:first-child > .btn-group { + margin-right: -1px; +} +.input-group-btn:last-child > .btn, +.input-group-btn:last-child > .btn-group { + margin-left: -1px; +} +.nav { + padding-left: 0; + margin-bottom: 0; + list-style: none; +} +.nav > li { + position: relative; + display: block; +} +.nav > li > a { + position: relative; + display: block; + padding: 10px 15px; +} +.nav > li > a:hover, +.nav > li > a:focus { + text-decoration: none; + background-color: #eee; +} +.nav > li.disabled > a { + color: #777; +} +.nav > li.disabled > a:hover, +.nav > li.disabled > a:focus { + color: #777; + text-decoration: none; + cursor: not-allowed; + background-color: transparent; +} +.nav .open > a, +.nav .open > a:hover, +.nav .open > a:focus { + background-color: #eee; + border-color: #337ab7; +} +.nav .nav-divider { + height: 1px; + margin: 9px 0; + overflow: hidden; + background-color: #e5e5e5; +} +.nav > li > a > img { + max-width: none; +} +.nav-tabs { + border-bottom: 1px solid #ddd; +} +.nav-tabs > li { + float: left; + margin-bottom: -1px; +} +.nav-tabs > li > a { + margin-right: 2px; + line-height: 1.42857143; + border: 1px solid transparent; + border-radius: 4px 4px 0 0; +} +.nav-tabs > li > a:hover { + border-color: #eee #eee #ddd; +} +.nav-tabs > li.active > a, +.nav-tabs > li.active > a:hover, +.nav-tabs > li.active > a:focus { + color: #555; + cursor: default; + background-color: #fff; + border: 1px solid #ddd; + border-bottom-color: transparent; +} +.nav-tabs.nav-justified { + width: 100%; + border-bottom: 0; +} +.nav-tabs.nav-justified > li { + float: none; +} +.nav-tabs.nav-justified > li > a { + margin-bottom: 5px; + text-align: center; +} +.nav-tabs.nav-justified > .dropdown .dropdown-menu { + top: auto; + left: auto; +} +@media (min-width: 768px) { + .nav-tabs.nav-justified > li { + display: table-cell; + width: 1%; + } + .nav-tabs.nav-justified > li > a { + margin-bottom: 0; + } +} +.nav-tabs.nav-justified > li > a { + margin-right: 0; + border-radius: 4px; +} +.nav-tabs.nav-justified > .active > a, +.nav-tabs.nav-justified > .active > a:hover, +.nav-tabs.nav-justified > .active > a:focus { + border: 1px solid #ddd; +} +@media (min-width: 768px) { + .nav-tabs.nav-justified > li > a { + border-bottom: 1px solid #ddd; + border-radius: 4px 4px 0 0; + } + .nav-tabs.nav-justified > .active > a, + .nav-tabs.nav-justified > .active > a:hover, + .nav-tabs.nav-justified > .active > a:focus { + border-bottom-color: #fff; + } +} +.nav-pills > li { + float: left; +} +.nav-pills > li > a { + border-radius: 4px; +} +.nav-pills > li + li { + margin-left: 2px; +} +.nav-pills > li.active > a, +.nav-pills > li.active > a:hover, +.nav-pills > li.active > a:focus { + color: #fff; + background-color: #337ab7; +} +.nav-stacked > li { + float: none; +} +.nav-stacked > li + li { + margin-top: 2px; + margin-left: 0; +} +.nav-justified { + width: 100%; +} +.nav-justified > li { + float: none; +} +.nav-justified > li > a { + margin-bottom: 5px; + text-align: center; +} +.nav-justified > .dropdown .dropdown-menu { + top: auto; + left: auto; +} +@media (min-width: 768px) { + .nav-justified > li { + display: table-cell; + width: 1%; + } + .nav-justified > li > a { + margin-bottom: 0; + } +} +.nav-tabs-justified { + border-bottom: 0; +} +.nav-tabs-justified > li > a { + margin-right: 0; + border-radius: 4px; +} +.nav-tabs-justified > .active > a, +.nav-tabs-justified > .active > a:hover, +.nav-tabs-justified > .active > a:focus { + border: 1px solid #ddd; +} +@media (min-width: 768px) { + .nav-tabs-justified > li > a { + border-bottom: 1px solid #ddd; + border-radius: 4px 4px 0 0; + } + .nav-tabs-justified > .active > a, + .nav-tabs-justified > .active > a:hover, + .nav-tabs-justified > .active > a:focus { + border-bottom-color: #fff; + } +} +.tab-content > .tab-pane { + display: none; +} +.tab-content > .active { + display: block; +} +.nav-tabs .dropdown-menu { + margin-top: -1px; + border-top-left-radius: 0; + border-top-right-radius: 0; +} +.navbar { + position: relative; + min-height: 50px; + margin-bottom: 20px; + border: 1px solid transparent; +} +@media (min-width: 768px) { + .navbar { + border-radius: 4px; + } +} +@media (min-width: 768px) { + .navbar-header { + float: left; + } +} +.navbar-collapse { + padding-right: 15px; + padding-left: 15px; + overflow-x: visible; + -webkit-overflow-scrolling: touch; + border-top: 1px solid transparent; + -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, .1); + box-shadow: inset 0 1px 0 rgba(255, 255, 255, .1); +} +.navbar-collapse.in { + overflow-y: auto; +} +@media (min-width: 768px) { + .navbar-collapse { + width: auto; + border-top: 0; + -webkit-box-shadow: none; + box-shadow: none; + } + .navbar-collapse.collapse { + display: block !important; + height: auto !important; + padding-bottom: 0; + overflow: visible !important; + } + .navbar-collapse.in { + overflow-y: visible; + } + .navbar-fixed-top .navbar-collapse, + .navbar-static-top .navbar-collapse, + .navbar-fixed-bottom .navbar-collapse { + padding-right: 0; + padding-left: 0; + } +} +.navbar-fixed-top .navbar-collapse, +.navbar-fixed-bottom .navbar-collapse { + max-height: 340px; +} +@media (max-device-width: 480px) and (orientation: landscape) { + .navbar-fixed-top .navbar-collapse, + .navbar-fixed-bottom .navbar-collapse { + max-height: 200px; + } +} +.container > .navbar-header, +.container-fluid > .navbar-header, +.container > .navbar-collapse, +.container-fluid > .navbar-collapse { + margin-right: -15px; + margin-left: -15px; +} +@media (min-width: 768px) { + .container > .navbar-header, + .container-fluid > .navbar-header, + .container > .navbar-collapse, + .container-fluid > .navbar-collapse { + margin-right: 0; + margin-left: 0; + } +} +.navbar-static-top { + z-index: 1000; + border-width: 0 0 1px; +} +@media (min-width: 768px) { + .navbar-static-top { + border-radius: 0; + } +} +.navbar-fixed-top, +.navbar-fixed-bottom { + position: fixed; + right: 0; + left: 0; + z-index: 1030; +} +@media (min-width: 768px) { + .navbar-fixed-top, + .navbar-fixed-bottom { + border-radius: 0; + } +} +.navbar-fixed-top { + top: 0; + border-width: 0 0 1px; +} +.navbar-fixed-bottom { + bottom: 0; + margin-bottom: 0; + border-width: 1px 0 0; +} +.navbar-brand { + float: left; + height: 50px; + padding: 15px 15px; + font-size: 18px; + line-height: 20px; +} +.navbar-brand:hover, +.navbar-brand:focus { + text-decoration: none; +} +.navbar-brand > img { + display: block; +} +@media (min-width: 768px) { + .navbar > .container .navbar-brand, + .navbar > .container-fluid .navbar-brand { + margin-left: -15px; + } +} +.navbar-toggle { + position: relative; + float: right; + padding: 9px 10px; + margin-top: 8px; + margin-right: 15px; + margin-bottom: 8px; + background-color: transparent; + background-image: none; + border: 1px solid transparent; + border-radius: 4px; +} +.navbar-toggle:focus { + outline: 0; +} +.navbar-toggle .icon-bar { + display: block; + width: 22px; + height: 2px; + border-radius: 1px; +} +.navbar-toggle .icon-bar + .icon-bar { + margin-top: 4px; +} +@media (min-width: 768px) { + .navbar-toggle { + display: none; + } +} +.navbar-nav { + margin: 7.5px -15px; +} +.navbar-nav > li > a { + padding-top: 10px; + padding-bottom: 10px; + line-height: 20px; +} +@media (max-width: 767px) { + .navbar-nav .open .dropdown-menu { + position: static; + float: none; + width: auto; + margin-top: 0; + background-color: transparent; + border: 0; + -webkit-box-shadow: none; + box-shadow: none; + } + .navbar-nav .open .dropdown-menu > li > a, + .navbar-nav .open .dropdown-menu .dropdown-header { + padding: 5px 15px 5px 25px; + } + .navbar-nav .open .dropdown-menu > li > a { + line-height: 20px; + } + .navbar-nav .open .dropdown-menu > li > a:hover, + .navbar-nav .open .dropdown-menu > li > a:focus { + background-image: none; + } +} +@media (min-width: 768px) { + .navbar-nav { + float: left; + margin: 0; + } + .navbar-nav > li { + float: left; + } + .navbar-nav > li > a { + padding-top: 15px; + padding-bottom: 15px; + } +} +.navbar-form { + padding: 10px 15px; + margin-top: 8px; + margin-right: -15px; + margin-bottom: 8px; + margin-left: -15px; + border-top: 1px solid transparent; + border-bottom: 1px solid transparent; + -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, .1), 0 1px 0 rgba(255, 255, 255, .1); + box-shadow: inset 0 1px 0 rgba(255, 255, 255, .1), 0 1px 0 rgba(255, 255, 255, .1); +} +@media (min-width: 768px) { + .navbar-form .form-group { + display: inline-block; + margin-bottom: 0; + vertical-align: middle; + } + .navbar-form .form-control { + display: inline-block; + width: auto; + vertical-align: middle; + } + .navbar-form .form-control-static { + display: inline-block; + } + .navbar-form .input-group { + display: inline-table; + vertical-align: middle; + } + .navbar-form .input-group .input-group-addon, + .navbar-form .input-group .input-group-btn, + .navbar-form .input-group .form-control { + width: auto; + } + .navbar-form .input-group > .form-control { + width: 100%; + } + .navbar-form .control-label { + margin-bottom: 0; + vertical-align: middle; + } + .navbar-form .radio, + .navbar-form .checkbox { + display: inline-block; + margin-top: 0; + margin-bottom: 0; + vertical-align: middle; + } + .navbar-form .radio label, + .navbar-form .checkbox label { + padding-left: 0; + } + .navbar-form .radio input[type="radio"], + .navbar-form .checkbox input[type="checkbox"] { + position: relative; + margin-left: 0; + } + .navbar-form .has-feedback .form-control-feedback { + top: 0; + } +} +@media (max-width: 767px) { + .navbar-form .form-group { + margin-bottom: 5px; + } + .navbar-form .form-group:last-child { + margin-bottom: 0; + } +} +@media (min-width: 768px) { + .navbar-form { + width: auto; + padding-top: 0; + padding-bottom: 0; + margin-right: 0; + margin-left: 0; + border: 0; + -webkit-box-shadow: none; + box-shadow: none; + } +} +.navbar-nav > li > .dropdown-menu { + margin-top: 0; + border-top-left-radius: 0; + border-top-right-radius: 0; +} +.navbar-fixed-bottom .navbar-nav > li > .dropdown-menu { + margin-bottom: 0; + border-top-left-radius: 4px; + border-top-right-radius: 4px; + border-bottom-right-radius: 0; + border-bottom-left-radius: 0; +} +.navbar-btn { + margin-top: 8px; + margin-bottom: 8px; +} +.navbar-btn.btn-sm { + margin-top: 10px; + margin-bottom: 10px; +} +.navbar-btn.btn-xs { + margin-top: 14px; + margin-bottom: 14px; +} +.navbar-text { + margin-top: 15px; + margin-bottom: 15px; +} +@media (min-width: 768px) { + .navbar-text { + float: left; + margin-right: 15px; + margin-left: 15px; + } +} +@media (min-width: 768px) { + .navbar-left { + float: left !important; + } + .navbar-right { + float: right !important; + margin-right: -15px; + } + .navbar-right ~ .navbar-right { + margin-right: 0; + } +} +.navbar-default { + background-color: #f8f8f8; + border-color: #e7e7e7; +} +.navbar-default .navbar-brand { + color: #777; +} +.navbar-default .navbar-brand:hover, +.navbar-default .navbar-brand:focus { + color: #5e5e5e; + background-color: transparent; +} +.navbar-default .navbar-text { + color: #777; +} +.navbar-default .navbar-nav > li > a { + color: #777; +} +.navbar-default .navbar-nav > li > a:hover, +.navbar-default .navbar-nav > li > a:focus { + color: #333; + background-color: transparent; +} +.navbar-default .navbar-nav > .active > a, +.navbar-default .navbar-nav > .active > a:hover, +.navbar-default .navbar-nav > .active > a:focus { + color: #555; + background-color: #e7e7e7; +} +.navbar-default .navbar-nav > .disabled > a, +.navbar-default .navbar-nav > .disabled > a:hover, +.navbar-default .navbar-nav > .disabled > a:focus { + color: #ccc; + background-color: transparent; +} +.navbar-default .navbar-toggle { + border-color: #ddd; +} +.navbar-default .navbar-toggle:hover, +.navbar-default .navbar-toggle:focus { + background-color: #ddd; +} +.navbar-default .navbar-toggle .icon-bar { + background-color: #888; +} +.navbar-default .navbar-collapse, +.navbar-default .navbar-form { + border-color: #e7e7e7; +} +.navbar-default .navbar-nav > .open > a, +.navbar-default .navbar-nav > .open > a:hover, +.navbar-default .navbar-nav > .open > a:focus { + color: #555; + background-color: #e7e7e7; +} +@media (max-width: 767px) { + .navbar-default .navbar-nav .open .dropdown-menu > li > a { + color: #777; + } + .navbar-default .navbar-nav .open .dropdown-menu > li > a:hover, + .navbar-default .navbar-nav .open .dropdown-menu > li > a:focus { + color: #333; + background-color: transparent; + } + .navbar-default .navbar-nav .open .dropdown-menu > .active > a, + .navbar-default .navbar-nav .open .dropdown-menu > .active > a:hover, + .navbar-default .navbar-nav .open .dropdown-menu > .active > a:focus { + color: #555; + background-color: #e7e7e7; + } + .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a, + .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a:hover, + .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a:focus { + color: #ccc; + background-color: transparent; + } +} +.navbar-default .navbar-link { + color: #777; +} +.navbar-default .navbar-link:hover { + color: #333; +} +.navbar-default .btn-link { + color: #777; +} +.navbar-default .btn-link:hover, +.navbar-default .btn-link:focus { + color: #333; +} +.navbar-default .btn-link[disabled]:hover, +fieldset[disabled] .navbar-default .btn-link:hover, +.navbar-default .btn-link[disabled]:focus, +fieldset[disabled] .navbar-default .btn-link:focus { + color: #ccc; +} +.navbar-inverse { + background-color: #222; + border-color: #080808; +} +.navbar-inverse .navbar-brand { + color: #9d9d9d; +} +.navbar-inverse .navbar-brand:hover, +.navbar-inverse .navbar-brand:focus { + color: #fff; + background-color: transparent; +} +.navbar-inverse .navbar-text { + color: #9d9d9d; +} +.navbar-inverse .navbar-nav > li > a { + color: #9d9d9d; +} +.navbar-inverse .navbar-nav > li > a:hover, +.navbar-inverse .navbar-nav > li > a:focus { + color: #fff; + background-color: transparent; +} +.navbar-inverse .navbar-nav > .active > a, +.navbar-inverse .navbar-nav > .active > a:hover, +.navbar-inverse .navbar-nav > .active > a:focus { + color: #fff; + background-color: #080808; +} +.navbar-inverse .navbar-nav > .disabled > a, +.navbar-inverse .navbar-nav > .disabled > a:hover, +.navbar-inverse .navbar-nav > .disabled > a:focus { + color: #444; + background-color: transparent; +} +.navbar-inverse .navbar-toggle { + border-color: #333; +} +.navbar-inverse .navbar-toggle:hover, +.navbar-inverse .navbar-toggle:focus { + background-color: #333; +} +.navbar-inverse .navbar-toggle .icon-bar { + background-color: #fff; +} +.navbar-inverse .navbar-collapse, +.navbar-inverse .navbar-form { + border-color: #101010; +} +.navbar-inverse .navbar-nav > .open > a, +.navbar-inverse .navbar-nav > .open > a:hover, +.navbar-inverse .navbar-nav > .open > a:focus { + color: #fff; + background-color: #080808; +} +@media (max-width: 767px) { + .navbar-inverse .navbar-nav .open .dropdown-menu > .dropdown-header { + border-color: #080808; + } + .navbar-inverse .navbar-nav .open .dropdown-menu .divider { + background-color: #080808; + } + .navbar-inverse .navbar-nav .open .dropdown-menu > li > a { + color: #9d9d9d; + } + .navbar-inverse .navbar-nav .open .dropdown-menu > li > a:hover, + .navbar-inverse .navbar-nav .open .dropdown-menu > li > a:focus { + color: #fff; + background-color: transparent; + } + .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a, + .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a:hover, + .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a:focus { + color: #fff; + background-color: #080808; + } + .navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a, + .navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a:hover, + .navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a:focus { + color: #444; + background-color: transparent; + } +} +.navbar-inverse .navbar-link { + color: #9d9d9d; +} +.navbar-inverse .navbar-link:hover { + color: #fff; +} +.navbar-inverse .btn-link { + color: #9d9d9d; +} +.navbar-inverse .btn-link:hover, +.navbar-inverse .btn-link:focus { + color: #fff; +} +.navbar-inverse .btn-link[disabled]:hover, +fieldset[disabled] .navbar-inverse .btn-link:hover, +.navbar-inverse .btn-link[disabled]:focus, +fieldset[disabled] .navbar-inverse .btn-link:focus { + color: #444; +} +.breadcrumb { + padding: 8px 15px; + margin-bottom: 20px; + list-style: none; + background-color: #f5f5f5; + border-radius: 4px; +} +.breadcrumb > li { + display: inline-block; +} +.breadcrumb > li + li:before { + padding: 0 5px; + color: #ccc; + content: "/\00a0"; +} +.breadcrumb > .active { + color: #777; +} +.pagination { + display: inline-block; + padding-left: 0; + margin: 20px 0; + border-radius: 4px; +} +.pagination > li { + display: inline; +} +.pagination > li > a, +.pagination > li > span { + position: relative; + float: left; + padding: 6px 12px; + margin-left: -1px; + line-height: 1.42857143; + color: #337ab7; + text-decoration: none; + background-color: #fff; + border: 1px solid #ddd; +} +.pagination > li:first-child > a, +.pagination > li:first-child > span { + margin-left: 0; + border-top-left-radius: 4px; + border-bottom-left-radius: 4px; +} +.pagination > li:last-child > a, +.pagination > li:last-child > span { + border-top-right-radius: 4px; + border-bottom-right-radius: 4px; +} +.pagination > li > a:hover, +.pagination > li > span:hover, +.pagination > li > a:focus, +.pagination > li > span:focus { + color: #23527c; + background-color: #eee; + border-color: #ddd; +} +.pagination > .active > a, +.pagination > .active > span, +.pagination > .active > a:hover, +.pagination > .active > span:hover, +.pagination > .active > a:focus, +.pagination > .active > span:focus { + z-index: 2; + color: #fff; + cursor: default; + background-color: #337ab7; + border-color: #337ab7; +} +.pagination > .disabled > span, +.pagination > .disabled > span:hover, +.pagination > .disabled > span:focus, +.pagination > .disabled > a, +.pagination > .disabled > a:hover, +.pagination > .disabled > a:focus { + color: #777; + cursor: not-allowed; + background-color: #fff; + border-color: #ddd; +} +.pagination-lg > li > a, +.pagination-lg > li > span { + padding: 10px 16px; + font-size: 18px; +} +.pagination-lg > li:first-child > a, +.pagination-lg > li:first-child > span { + border-top-left-radius: 6px; + border-bottom-left-radius: 6px; +} +.pagination-lg > li:last-child > a, +.pagination-lg > li:last-child > span { + border-top-right-radius: 6px; + border-bottom-right-radius: 6px; +} +.pagination-sm > li > a, +.pagination-sm > li > span { + padding: 5px 10px; + font-size: 12px; +} +.pagination-sm > li:first-child > a, +.pagination-sm > li:first-child > span { + border-top-left-radius: 3px; + border-bottom-left-radius: 3px; +} +.pagination-sm > li:last-child > a, +.pagination-sm > li:last-child > span { + border-top-right-radius: 3px; + border-bottom-right-radius: 3px; +} +.pager { + padding-left: 0; + margin: 20px 0; + text-align: center; + list-style: none; +} +.pager li { + display: inline; +} +.pager li > a, +.pager li > span { + display: inline-block; + padding: 5px 14px; + background-color: #fff; + border: 1px solid #ddd; + border-radius: 15px; +} +.pager li > a:hover, +.pager li > a:focus { + text-decoration: none; + background-color: #eee; +} +.pager .next > a, +.pager .next > span { + float: right; +} +.pager .previous > a, +.pager .previous > span { + float: left; +} +.pager .disabled > a, +.pager .disabled > a:hover, +.pager .disabled > a:focus, +.pager .disabled > span { + color: #777; + cursor: not-allowed; + background-color: #fff; +} +.label { + display: inline; + padding: .2em .6em .3em; + font-size: 75%; + font-weight: bold; + line-height: 1; + color: #fff; + text-align: center; + white-space: nowrap; + vertical-align: baseline; + border-radius: .25em; +} +a.label:hover, +a.label:focus { + color: #fff; + text-decoration: none; + cursor: pointer; +} +.label:empty { + display: none; +} +.btn .label { + position: relative; + top: -1px; +} +.label-default { + background-color: #777; +} +.label-default[href]:hover, +.label-default[href]:focus { + background-color: #5e5e5e; +} +.label-primary { + background-color: #337ab7; +} +.label-primary[href]:hover, +.label-primary[href]:focus { + background-color: #286090; +} +.label-success { + background-color: #5cb85c; +} +.label-success[href]:hover, +.label-success[href]:focus { + background-color: #449d44; +} +.label-info { + background-color: #5bc0de; +} +.label-info[href]:hover, +.label-info[href]:focus { + background-color: #31b0d5; +} +.label-warning { + background-color: #f0ad4e; +} +.label-warning[href]:hover, +.label-warning[href]:focus { + background-color: #ec971f; +} +.label-danger { + background-color: #d9534f; +} +.label-danger[href]:hover, +.label-danger[href]:focus { + background-color: #c9302c; +} +.badge { + display: inline-block; + min-width: 10px; + padding: 3px 7px; + font-size: 12px; + font-weight: bold; + line-height: 1; + color: #fff; + text-align: center; + white-space: nowrap; + vertical-align: baseline; + background-color: #777; + border-radius: 10px; +} +.badge:empty { + display: none; +} +.btn .badge { + position: relative; + top: -1px; +} +.btn-xs .badge, +.btn-group-xs > .btn .badge { + top: 0; + padding: 1px 5px; +} +a.badge:hover, +a.badge:focus { + color: #fff; + text-decoration: none; + cursor: pointer; +} +.list-group-item.active > .badge, +.nav-pills > .active > a > .badge { + color: #337ab7; + background-color: #fff; +} +.list-group-item > .badge { + float: right; +} +.list-group-item > .badge + .badge { + margin-right: 5px; +} +.nav-pills > li > a > .badge { + margin-left: 3px; +} +.jumbotron { + padding: 30px 15px; + margin-bottom: 30px; + color: inherit; + background-color: #eee; +} +.jumbotron h1, +.jumbotron .h1 { + color: inherit; +} +.jumbotron p { + margin-bottom: 15px; + font-size: 21px; + font-weight: 200; +} +.jumbotron > hr { + border-top-color: #d5d5d5; +} +.container .jumbotron, +.container-fluid .jumbotron { + border-radius: 6px; +} +.jumbotron .container { + max-width: 100%; +} +@media screen and (min-width: 768px) { + .jumbotron { + padding: 48px 0; + } + .container .jumbotron, + .container-fluid .jumbotron { + padding-right: 60px; + padding-left: 60px; + } + .jumbotron h1, + .jumbotron .h1 { + font-size: 63px; + } +} +.thumbnail { + display: block; + padding: 4px; + margin-bottom: 20px; + line-height: 1.42857143; + background-color: #fff; + border: 1px solid #ddd; + border-radius: 4px; + -webkit-transition: border .2s ease-in-out; + -o-transition: border .2s ease-in-out; + transition: border .2s ease-in-out; +} +.thumbnail > img, +.thumbnail a > img { + margin-right: auto; + margin-left: auto; +} +a.thumbnail:hover, +a.thumbnail:focus, +a.thumbnail.active { + border-color: #337ab7; +} +.thumbnail .caption { + padding: 9px; + color: #333; +} +.alert { + padding: 15px; + margin-bottom: 20px; + border: 1px solid transparent; + border-radius: 4px; +} +.alert h4 { + margin-top: 0; + color: inherit; +} +.alert .alert-link { + font-weight: bold; +} +.alert > p, +.alert > ul { + margin-bottom: 0; +} +.alert > p + p { + margin-top: 5px; +} +.alert-dismissable, +.alert-dismissible { + padding-right: 35px; +} +.alert-dismissable .close, +.alert-dismissible .close { + position: relative; + top: -2px; + right: -21px; + color: inherit; +} +.alert-success { + color: #3c763d; + background-color: #dff0d8; + border-color: #d6e9c6; +} +.alert-success hr { + border-top-color: #c9e2b3; +} +.alert-success .alert-link { + color: #2b542c; +} +.alert-info { + color: #31708f; + background-color: #d9edf7; + border-color: #bce8f1; +} +.alert-info hr { + border-top-color: #a6e1ec; +} +.alert-info .alert-link { + color: #245269; +} +.alert-warning { + color: #8a6d3b; + background-color: #fcf8e3; + border-color: #faebcc; +} +.alert-warning hr { + border-top-color: #f7e1b5; +} +.alert-warning .alert-link { + color: #66512c; +} +.alert-danger { + color: #a94442; + background-color: #f2dede; + border-color: #ebccd1; +} +.alert-danger hr { + border-top-color: #e4b9c0; +} +.alert-danger .alert-link { + color: #843534; +} +@-webkit-keyframes progress-bar-stripes { + from { + background-position: 40px 0; + } + to { + background-position: 0 0; + } +} +@-o-keyframes progress-bar-stripes { + from { + background-position: 40px 0; + } + to { + background-position: 0 0; + } +} +@keyframes progress-bar-stripes { + from { + background-position: 40px 0; + } + to { + background-position: 0 0; + } +} +.progress { + height: 20px; + margin-bottom: 20px; + overflow: hidden; + background-color: #f5f5f5; + border-radius: 4px; + -webkit-box-shadow: inset 0 1px 2px rgba(0, 0, 0, .1); + box-shadow: inset 0 1px 2px rgba(0, 0, 0, .1); +} +.progress-bar { + float: left; + width: 0; + height: 100%; + font-size: 12px; + line-height: 20px; + color: #fff; + text-align: center; + background-color: #337ab7; + -webkit-box-shadow: inset 0 -1px 0 rgba(0, 0, 0, .15); + box-shadow: inset 0 -1px 0 rgba(0, 0, 0, .15); + -webkit-transition: width .6s ease; + -o-transition: width .6s ease; + transition: width .6s ease; +} +.progress-striped .progress-bar, +.progress-bar-striped { + background-image: -webkit-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-image: -o-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-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); + -webkit-background-size: 40px 40px; + background-size: 40px 40px; +} +.progress.active .progress-bar, +.progress-bar.active { + -webkit-animation: progress-bar-stripes 2s linear infinite; + -o-animation: progress-bar-stripes 2s linear infinite; + animation: progress-bar-stripes 2s linear infinite; +} +.progress-bar-success { + background-color: #5cb85c; +} +.progress-striped .progress-bar-success { + background-image: -webkit-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-image: -o-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-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); +} +.progress-bar-info { + background-color: #5bc0de; +} +.progress-striped .progress-bar-info { + background-image: -webkit-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-image: -o-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-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); +} +.progress-bar-warning { + background-color: #f0ad4e; +} +.progress-striped .progress-bar-warning { + background-image: -webkit-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-image: -o-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-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); +} +.progress-bar-danger { + background-color: #d9534f; +} +.progress-striped .progress-bar-danger { + background-image: -webkit-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-image: -o-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-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); +} +.media { + margin-top: 15px; +} +.media:first-child { + margin-top: 0; +} +.media, +.media-body { + overflow: hidden; + zoom: 1; +} +.media-body { + width: 10000px; +} +.media-object { + display: block; +} +.media-right, +.media > .pull-right { + padding-left: 10px; +} +.media-left, +.media > .pull-left { + padding-right: 10px; +} +.media-left, +.media-right, +.media-body { + display: table-cell; + vertical-align: top; +} +.media-middle { + vertical-align: middle; +} +.media-bottom { + vertical-align: bottom; +} +.media-heading { + margin-top: 0; + margin-bottom: 5px; +} +.media-list { + padding-left: 0; + list-style: none; +} +.list-group { + padding-left: 0; + margin-bottom: 20px; +} +.list-group-item { + position: relative; + display: block; + padding: 10px 15px; + margin-bottom: -1px; + background-color: #fff; + border: 1px solid #ddd; +} +.list-group-item:first-child { + border-top-left-radius: 4px; + border-top-right-radius: 4px; +} +.list-group-item:last-child { + margin-bottom: 0; + border-bottom-right-radius: 4px; + border-bottom-left-radius: 4px; +} +a.list-group-item { + color: #555; +} +a.list-group-item .list-group-item-heading { + color: #333; +} +a.list-group-item:hover, +a.list-group-item:focus { + color: #555; + text-decoration: none; + background-color: #f5f5f5; +} +.list-group-item.disabled, +.list-group-item.disabled:hover, +.list-group-item.disabled:focus { + color: #777; + cursor: not-allowed; + background-color: #eee; +} +.list-group-item.disabled .list-group-item-heading, +.list-group-item.disabled:hover .list-group-item-heading, +.list-group-item.disabled:focus .list-group-item-heading { + color: inherit; +} +.list-group-item.disabled .list-group-item-text, +.list-group-item.disabled:hover .list-group-item-text, +.list-group-item.disabled:focus .list-group-item-text { + color: #777; +} +.list-group-item.active, +.list-group-item.active:hover, +.list-group-item.active:focus { + z-index: 2; + color: #fff; + background-color: #337ab7; + border-color: #337ab7; +} +.list-group-item.active .list-group-item-heading, +.list-group-item.active:hover .list-group-item-heading, +.list-group-item.active:focus .list-group-item-heading, +.list-group-item.active .list-group-item-heading > small, +.list-group-item.active:hover .list-group-item-heading > small, +.list-group-item.active:focus .list-group-item-heading > small, +.list-group-item.active .list-group-item-heading > .small, +.list-group-item.active:hover .list-group-item-heading > .small, +.list-group-item.active:focus .list-group-item-heading > .small { + color: inherit; +} +.list-group-item.active .list-group-item-text, +.list-group-item.active:hover .list-group-item-text, +.list-group-item.active:focus .list-group-item-text { + color: #c7ddef; +} +.list-group-item-success { + color: #3c763d; + background-color: #dff0d8; +} +a.list-group-item-success { + color: #3c763d; +} +a.list-group-item-success .list-group-item-heading { + color: inherit; +} +a.list-group-item-success:hover, +a.list-group-item-success:focus { + color: #3c763d; + background-color: #d0e9c6; +} +a.list-group-item-success.active, +a.list-group-item-success.active:hover, +a.list-group-item-success.active:focus { + color: #fff; + background-color: #3c763d; + border-color: #3c763d; +} +.list-group-item-info { + color: #31708f; + background-color: #d9edf7; +} +a.list-group-item-info { + color: #31708f; +} +a.list-group-item-info .list-group-item-heading { + color: inherit; +} +a.list-group-item-info:hover, +a.list-group-item-info:focus { + color: #31708f; + background-color: #c4e3f3; +} +a.list-group-item-info.active, +a.list-group-item-info.active:hover, +a.list-group-item-info.active:focus { + color: #fff; + background-color: #31708f; + border-color: #31708f; +} +.list-group-item-warning { + color: #8a6d3b; + background-color: #fcf8e3; +} +a.list-group-item-warning { + color: #8a6d3b; +} +a.list-group-item-warning .list-group-item-heading { + color: inherit; +} +a.list-group-item-warning:hover, +a.list-group-item-warning:focus { + color: #8a6d3b; + background-color: #faf2cc; +} +a.list-group-item-warning.active, +a.list-group-item-warning.active:hover, +a.list-group-item-warning.active:focus { + color: #fff; + background-color: #8a6d3b; + border-color: #8a6d3b; +} +.list-group-item-danger { + color: #a94442; + background-color: #f2dede; +} +a.list-group-item-danger { + color: #a94442; +} +a.list-group-item-danger .list-group-item-heading { + color: inherit; +} +a.list-group-item-danger:hover, +a.list-group-item-danger:focus { + color: #a94442; + background-color: #ebcccc; +} +a.list-group-item-danger.active, +a.list-group-item-danger.active:hover, +a.list-group-item-danger.active:focus { + color: #fff; + background-color: #a94442; + border-color: #a94442; +} +.list-group-item-heading { + margin-top: 0; + margin-bottom: 5px; +} +.list-group-item-text { + margin-bottom: 0; + line-height: 1.3; +} +.panel { + margin-bottom: 20px; + background-color: #fff; + border: 1px solid transparent; + border-radius: 4px; + -webkit-box-shadow: 0 1px 1px rgba(0, 0, 0, .05); + box-shadow: 0 1px 1px rgba(0, 0, 0, .05); +} +.panel-body { + padding: 15px; +} +.panel-heading { + padding: 10px 15px; + border-bottom: 1px solid transparent; + border-top-left-radius: 3px; + border-top-right-radius: 3px; +} +.panel-heading > .dropdown .dropdown-toggle { + color: inherit; +} +.panel-title { + margin-top: 0; + margin-bottom: 0; + font-size: 16px; + color: inherit; +} +.panel-title > a, +.panel-title > small, +.panel-title > .small, +.panel-title > small > a, +.panel-title > .small > a { + color: inherit; +} +.panel-footer { + padding: 10px 15px; + background-color: #f5f5f5; + border-top: 1px solid #ddd; + border-bottom-right-radius: 3px; + border-bottom-left-radius: 3px; +} +.panel > .list-group, +.panel > .panel-collapse > .list-group { + margin-bottom: 0; +} +.panel > .list-group .list-group-item, +.panel > .panel-collapse > .list-group .list-group-item { + border-width: 1px 0; + border-radius: 0; +} +.panel > .list-group:first-child .list-group-item:first-child, +.panel > .panel-collapse > .list-group:first-child .list-group-item:first-child { + border-top: 0; + border-top-left-radius: 3px; + border-top-right-radius: 3px; +} +.panel > .list-group:last-child .list-group-item:last-child, +.panel > .panel-collapse > .list-group:last-child .list-group-item:last-child { + border-bottom: 0; + border-bottom-right-radius: 3px; + border-bottom-left-radius: 3px; +} +.panel-heading + .list-group .list-group-item:first-child { + border-top-width: 0; +} +.list-group + .panel-footer { + border-top-width: 0; +} +.panel > .table, +.panel > .table-responsive > .table, +.panel > .panel-collapse > .table { + margin-bottom: 0; +} +.panel > .table caption, +.panel > .table-responsive > .table caption, +.panel > .panel-collapse > .table caption { + padding-right: 15px; + padding-left: 15px; +} +.panel > .table:first-child, +.panel > .table-responsive:first-child > .table:first-child { + border-top-left-radius: 3px; + border-top-right-radius: 3px; +} +.panel > .table:first-child > thead:first-child > tr:first-child, +.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child, +.panel > .table:first-child > tbody:first-child > tr:first-child, +.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child { + border-top-left-radius: 3px; + border-top-right-radius: 3px; +} +.panel > .table:first-child > thead:first-child > tr:first-child td:first-child, +.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child td:first-child, +.panel > .table:first-child > tbody:first-child > tr:first-child td:first-child, +.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child td:first-child, +.panel > .table:first-child > thead:first-child > tr:first-child th:first-child, +.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child th:first-child, +.panel > .table:first-child > tbody:first-child > tr:first-child th:first-child, +.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child th:first-child { + border-top-left-radius: 3px; +} +.panel > .table:first-child > thead:first-child > tr:first-child td:last-child, +.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child td:last-child, +.panel > .table:first-child > tbody:first-child > tr:first-child td:last-child, +.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child td:last-child, +.panel > .table:first-child > thead:first-child > tr:first-child th:last-child, +.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child th:last-child, +.panel > .table:first-child > tbody:first-child > tr:first-child th:last-child, +.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child th:last-child { + border-top-right-radius: 3px; +} +.panel > .table:last-child, +.panel > .table-responsive:last-child > .table:last-child { + border-bottom-right-radius: 3px; + border-bottom-left-radius: 3px; +} +.panel > .table:last-child > tbody:last-child > tr:last-child, +.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child, +.panel > .table:last-child > tfoot:last-child > tr:last-child, +.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child { + border-bottom-right-radius: 3px; + border-bottom-left-radius: 3px; +} +.panel > .table:last-child > tbody:last-child > tr:last-child td:first-child, +.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child td:first-child, +.panel > .table:last-child > tfoot:last-child > tr:last-child td:first-child, +.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child td:first-child, +.panel > .table:last-child > tbody:last-child > tr:last-child th:first-child, +.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child th:first-child, +.panel > .table:last-child > tfoot:last-child > tr:last-child th:first-child, +.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child th:first-child { + border-bottom-left-radius: 3px; +} +.panel > .table:last-child > tbody:last-child > tr:last-child td:last-child, +.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child td:last-child, +.panel > .table:last-child > tfoot:last-child > tr:last-child td:last-child, +.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child td:last-child, +.panel > .table:last-child > tbody:last-child > tr:last-child th:last-child, +.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child th:last-child, +.panel > .table:last-child > tfoot:last-child > tr:last-child th:last-child, +.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child th:last-child { + border-bottom-right-radius: 3px; +} +.panel > .panel-body + .table, +.panel > .panel-body + .table-responsive, +.panel > .table + .panel-body, +.panel > .table-responsive + .panel-body { + border-top: 1px solid #ddd; +} +.panel > .table > tbody:first-child > tr:first-child th, +.panel > .table > tbody:first-child > tr:first-child td { + border-top: 0; +} +.panel > .table-bordered, +.panel > .table-responsive > .table-bordered { + border: 0; +} +.panel > .table-bordered > thead > tr > th:first-child, +.panel > .table-responsive > .table-bordered > thead > tr > th:first-child, +.panel > .table-bordered > tbody > tr > th:first-child, +.panel > .table-responsive > .table-bordered > tbody > tr > th:first-child, +.panel > .table-bordered > tfoot > tr > th:first-child, +.panel > .table-responsive > .table-bordered > tfoot > tr > th:first-child, +.panel > .table-bordered > thead > tr > td:first-child, +.panel > .table-responsive > .table-bordered > thead > tr > td:first-child, +.panel > .table-bordered > tbody > tr > td:first-child, +.panel > .table-responsive > .table-bordered > tbody > tr > td:first-child, +.panel > .table-bordered > tfoot > tr > td:first-child, +.panel > .table-responsive > .table-bordered > tfoot > tr > td:first-child { + border-left: 0; +} +.panel > .table-bordered > thead > tr > th:last-child, +.panel > .table-responsive > .table-bordered > thead > tr > th:last-child, +.panel > .table-bordered > tbody > tr > th:last-child, +.panel > .table-responsive > .table-bordered > tbody > tr > th:last-child, +.panel > .table-bordered > tfoot > tr > th:last-child, +.panel > .table-responsive > .table-bordered > tfoot > tr > th:last-child, +.panel > .table-bordered > thead > tr > td:last-child, +.panel > .table-responsive > .table-bordered > thead > tr > td:last-child, +.panel > .table-bordered > tbody > tr > td:last-child, +.panel > .table-responsive > .table-bordered > tbody > tr > td:last-child, +.panel > .table-bordered > tfoot > tr > td:last-child, +.panel > .table-responsive > .table-bordered > tfoot > tr > td:last-child { + border-right: 0; +} +.panel > .table-bordered > thead > tr:first-child > td, +.panel > .table-responsive > .table-bordered > thead > tr:first-child > td, +.panel > .table-bordered > tbody > tr:first-child > td, +.panel > .table-responsive > .table-bordered > tbody > tr:first-child > td, +.panel > .table-bordered > thead > tr:first-child > th, +.panel > .table-responsive > .table-bordered > thead > tr:first-child > th, +.panel > .table-bordered > tbody > tr:first-child > th, +.panel > .table-responsive > .table-bordered > tbody > tr:first-child > th { + border-bottom: 0; +} +.panel > .table-bordered > tbody > tr:last-child > td, +.panel > .table-responsive > .table-bordered > tbody > tr:last-child > td, +.panel > .table-bordered > tfoot > tr:last-child > td, +.panel > .table-responsive > .table-bordered > tfoot > tr:last-child > td, +.panel > .table-bordered > tbody > tr:last-child > th, +.panel > .table-responsive > .table-bordered > tbody > tr:last-child > th, +.panel > .table-bordered > tfoot > tr:last-child > th, +.panel > .table-responsive > .table-bordered > tfoot > tr:last-child > th { + border-bottom: 0; +} +.panel > .table-responsive { + margin-bottom: 0; + border: 0; +} +.panel-group { + margin-bottom: 20px; +} +.panel-group .panel { + margin-bottom: 0; + border-radius: 4px; +} +.panel-group .panel + .panel { + margin-top: 5px; +} +.panel-group .panel-heading { + border-bottom: 0; +} +.panel-group .panel-heading + .panel-collapse > .panel-body, +.panel-group .panel-heading + .panel-collapse > .list-group { + border-top: 1px solid #ddd; +} +.panel-group .panel-footer { + border-top: 0; +} +.panel-group .panel-footer + .panel-collapse .panel-body { + border-bottom: 1px solid #ddd; +} +.panel-default { + border-color: #ddd; +} +.panel-default > .panel-heading { + color: #333; + background-color: #f5f5f5; + border-color: #ddd; +} +.panel-default > .panel-heading + .panel-collapse > .panel-body { + border-top-color: #ddd; +} +.panel-default > .panel-heading .badge { + color: #f5f5f5; + background-color: #333; +} +.panel-default > .panel-footer + .panel-collapse > .panel-body { + border-bottom-color: #ddd; +} +.panel-primary { + border-color: #337ab7; +} +.panel-primary > .panel-heading { + color: #fff; + background-color: #337ab7; + border-color: #337ab7; +} +.panel-primary > .panel-heading + .panel-collapse > .panel-body { + border-top-color: #337ab7; +} +.panel-primary > .panel-heading .badge { + color: #337ab7; + background-color: #fff; +} +.panel-primary > .panel-footer + .panel-collapse > .panel-body { + border-bottom-color: #337ab7; +} +.panel-success { + border-color: #d6e9c6; +} +.panel-success > .panel-heading { + color: #3c763d; + background-color: #dff0d8; + border-color: #d6e9c6; +} +.panel-success > .panel-heading + .panel-collapse > .panel-body { + border-top-color: #d6e9c6; +} +.panel-success > .panel-heading .badge { + color: #dff0d8; + background-color: #3c763d; +} +.panel-success > .panel-footer + .panel-collapse > .panel-body { + border-bottom-color: #d6e9c6; +} +.panel-info { + border-color: #bce8f1; +} +.panel-info > .panel-heading { + color: #31708f; + background-color: #d9edf7; + border-color: #bce8f1; +} +.panel-info > .panel-heading + .panel-collapse > .panel-body { + border-top-color: #bce8f1; +} +.panel-info > .panel-heading .badge { + color: #d9edf7; + background-color: #31708f; +} +.panel-info > .panel-footer + .panel-collapse > .panel-body { + border-bottom-color: #bce8f1; +} +.panel-warning { + border-color: #faebcc; +} +.panel-warning > .panel-heading { + color: #8a6d3b; + background-color: #fcf8e3; + border-color: #faebcc; +} +.panel-warning > .panel-heading + .panel-collapse > .panel-body { + border-top-color: #faebcc; +} +.panel-warning > .panel-heading .badge { + color: #fcf8e3; + background-color: #8a6d3b; +} +.panel-warning > .panel-footer + .panel-collapse > .panel-body { + border-bottom-color: #faebcc; +} +.panel-danger { + border-color: #ebccd1; +} +.panel-danger > .panel-heading { + color: #a94442; + background-color: #f2dede; + border-color: #ebccd1; +} +.panel-danger > .panel-heading + .panel-collapse > .panel-body { + border-top-color: #ebccd1; +} +.panel-danger > .panel-heading .badge { + color: #f2dede; + background-color: #a94442; +} +.panel-danger > .panel-footer + .panel-collapse > .panel-body { + border-bottom-color: #ebccd1; +} +.embed-responsive { + position: relative; + display: block; + height: 0; + padding: 0; + overflow: hidden; +} +.embed-responsive .embed-responsive-item, +.embed-responsive iframe, +.embed-responsive embed, +.embed-responsive object, +.embed-responsive video { + position: absolute; + top: 0; + bottom: 0; + left: 0; + width: 100%; + height: 100%; + border: 0; +} +.embed-responsive-16by9 { + padding-bottom: 56.25%; +} +.embed-responsive-4by3 { + padding-bottom: 75%; +} +.well { + min-height: 20px; + padding: 19px; + margin-bottom: 20px; + background-color: #f5f5f5; + border: 1px solid #e3e3e3; + border-radius: 4px; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .05); + box-shadow: inset 0 1px 1px rgba(0, 0, 0, .05); +} +.well blockquote { + border-color: #ddd; + border-color: rgba(0, 0, 0, .15); +} +.well-lg { + padding: 24px; + border-radius: 6px; +} +.well-sm { + padding: 9px; + border-radius: 3px; +} +.close { + float: right; + font-size: 21px; + font-weight: bold; + line-height: 1; + color: #000; + text-shadow: 0 1px 0 #fff; + filter: alpha(opacity=20); + opacity: .2; +} +.close:hover, +.close:focus { + color: #000; + text-decoration: none; + cursor: pointer; + filter: alpha(opacity=50); + opacity: .5; +} +button.close { + -webkit-appearance: none; + padding: 0; + cursor: pointer; + background: transparent; + border: 0; +} +.modal-open { + overflow: hidden; +} +.modal { + position: fixed; + top: 0; + right: 0; + bottom: 0; + left: 0; + z-index: 1050; + display: none; + overflow: hidden; + -webkit-overflow-scrolling: touch; + outline: 0; +} +.modal.fade .modal-dialog { + -webkit-transition: -webkit-transform .3s ease-out; + -o-transition: -o-transform .3s ease-out; + transition: transform .3s ease-out; + -webkit-transform: translate(0, -25%); + -ms-transform: translate(0, -25%); + -o-transform: translate(0, -25%); + transform: translate(0, -25%); +} +.modal.in .modal-dialog { + -webkit-transform: translate(0, 0); + -ms-transform: translate(0, 0); + -o-transform: translate(0, 0); + transform: translate(0, 0); +} +.modal-open .modal { + overflow-x: hidden; + overflow-y: auto; +} +.modal-dialog { + position: relative; + width: auto; + margin: 10px; +} +.modal-content { + position: relative; + background-color: #fff; + -webkit-background-clip: padding-box; + background-clip: padding-box; + border: 1px solid #999; + border: 1px solid rgba(0, 0, 0, .2); + border-radius: 6px; + outline: 0; + -webkit-box-shadow: 0 3px 9px rgba(0, 0, 0, .5); + box-shadow: 0 3px 9px rgba(0, 0, 0, .5); +} +.modal-backdrop { + position: fixed; + top: 0; + right: 0; + bottom: 0; + left: 0; + z-index: 1040; + background-color: #000; +} +.modal-backdrop.fade { + filter: alpha(opacity=0); + opacity: 0; +} +.modal-backdrop.in { + filter: alpha(opacity=50); + opacity: .5; +} +.modal-header { + min-height: 16.42857143px; + padding: 15px; + border-bottom: 1px solid #e5e5e5; +} +.modal-header .close { + margin-top: -2px; +} +.modal-title { + margin: 0; + line-height: 1.42857143; +} +.modal-body { + position: relative; + padding: 15px; +} +.modal-footer { + padding: 15px; + text-align: right; + border-top: 1px solid #e5e5e5; +} +.modal-footer .btn + .btn { + margin-bottom: 0; + margin-left: 5px; +} +.modal-footer .btn-group .btn + .btn { + margin-left: -1px; +} +.modal-footer .btn-block + .btn-block { + margin-left: 0; +} +.modal-scrollbar-measure { + position: absolute; + top: -9999px; + width: 50px; + height: 50px; + overflow: scroll; +} +@media (min-width: 768px) { + .modal-dialog { + width: 600px; + margin: 30px auto; + } + .modal-content { + -webkit-box-shadow: 0 5px 15px rgba(0, 0, 0, .5); + box-shadow: 0 5px 15px rgba(0, 0, 0, .5); + } + .modal-sm { + width: 300px; + } +} +@media (min-width: 992px) { + .modal-lg { + width: 900px; + } +} +.tooltip { + position: absolute; + z-index: 1070; + display: block; + font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; + font-size: 12px; + font-weight: normal; + line-height: 1.4; + filter: alpha(opacity=0); + opacity: 0; +} +.tooltip.in { + filter: alpha(opacity=90); + opacity: .9; +} +.tooltip.top { + padding: 5px 0; + margin-top: -3px; +} +.tooltip.right { + padding: 0 5px; + margin-left: 3px; +} +.tooltip.bottom { + padding: 5px 0; + margin-top: 3px; +} +.tooltip.left { + padding: 0 5px; + margin-left: -3px; +} +.tooltip-inner { + max-width: 200px; + padding: 3px 8px; + color: #fff; + text-align: center; + text-decoration: none; + background-color: #000; + border-radius: 4px; +} +.tooltip-arrow { + position: absolute; + width: 0; + height: 0; + border-color: transparent; + border-style: solid; +} +.tooltip.top .tooltip-arrow { + bottom: 0; + left: 50%; + margin-left: -5px; + border-width: 5px 5px 0; + border-top-color: #000; +} +.tooltip.top-left .tooltip-arrow { + right: 5px; + bottom: 0; + margin-bottom: -5px; + border-width: 5px 5px 0; + border-top-color: #000; +} +.tooltip.top-right .tooltip-arrow { + bottom: 0; + left: 5px; + margin-bottom: -5px; + border-width: 5px 5px 0; + border-top-color: #000; +} +.tooltip.right .tooltip-arrow { + top: 50%; + left: 0; + margin-top: -5px; + border-width: 5px 5px 5px 0; + border-right-color: #000; +} +.tooltip.left .tooltip-arrow { + top: 50%; + right: 0; + margin-top: -5px; + border-width: 5px 0 5px 5px; + border-left-color: #000; +} +.tooltip.bottom .tooltip-arrow { + top: 0; + left: 50%; + margin-left: -5px; + border-width: 0 5px 5px; + border-bottom-color: #000; +} +.tooltip.bottom-left .tooltip-arrow { + top: 0; + right: 5px; + margin-top: -5px; + border-width: 0 5px 5px; + border-bottom-color: #000; +} +.tooltip.bottom-right .tooltip-arrow { + top: 0; + left: 5px; + margin-top: -5px; + border-width: 0 5px 5px; + border-bottom-color: #000; +} +.popover { + position: absolute; + top: 0; + left: 0; + z-index: 1060; + display: none; + max-width: 276px; + padding: 1px; + font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; + font-size: 14px; + font-weight: normal; + line-height: 1.42857143; + text-align: left; + white-space: normal; + background-color: #fff; + -webkit-background-clip: padding-box; + background-clip: padding-box; + border: 1px solid #ccc; + border: 1px solid rgba(0, 0, 0, .2); + border-radius: 6px; + -webkit-box-shadow: 0 5px 10px rgba(0, 0, 0, .2); + box-shadow: 0 5px 10px rgba(0, 0, 0, .2); +} +.popover.top { + margin-top: -10px; +} +.popover.right { + margin-left: 10px; +} +.popover.bottom { + margin-top: 10px; +} +.popover.left { + margin-left: -10px; +} +.popover-title { + padding: 8px 14px; + margin: 0; + font-size: 14px; + background-color: #f7f7f7; + border-bottom: 1px solid #ebebeb; + border-radius: 5px 5px 0 0; +} +.popover-content { + padding: 9px 14px; +} +.popover > .arrow, +.popover > .arrow:after { + position: absolute; + display: block; + width: 0; + height: 0; + border-color: transparent; + border-style: solid; +} +.popover > .arrow { + border-width: 11px; +} +.popover > .arrow:after { + content: ""; + border-width: 10px; +} +.popover.top > .arrow { + bottom: -11px; + left: 50%; + margin-left: -11px; + border-top-color: #999; + border-top-color: rgba(0, 0, 0, .25); + border-bottom-width: 0; +} +.popover.top > .arrow:after { + bottom: 1px; + margin-left: -10px; + content: " "; + border-top-color: #fff; + border-bottom-width: 0; +} +.popover.right > .arrow { + top: 50%; + left: -11px; + margin-top: -11px; + border-right-color: #999; + border-right-color: rgba(0, 0, 0, .25); + border-left-width: 0; +} +.popover.right > .arrow:after { + bottom: -10px; + left: 1px; + content: " "; + border-right-color: #fff; + border-left-width: 0; +} +.popover.bottom > .arrow { + top: -11px; + left: 50%; + margin-left: -11px; + border-top-width: 0; + border-bottom-color: #999; + border-bottom-color: rgba(0, 0, 0, .25); +} +.popover.bottom > .arrow:after { + top: 1px; + margin-left: -10px; + content: " "; + border-top-width: 0; + border-bottom-color: #fff; +} +.popover.left > .arrow { + top: 50%; + right: -11px; + margin-top: -11px; + border-right-width: 0; + border-left-color: #999; + border-left-color: rgba(0, 0, 0, .25); +} +.popover.left > .arrow:after { + right: 1px; + bottom: -10px; + content: " "; + border-right-width: 0; + border-left-color: #fff; +} +.carousel { + position: relative; +} +.carousel-inner { + position: relative; + width: 100%; + overflow: hidden; +} +.carousel-inner > .item { + position: relative; + display: none; + -webkit-transition: .6s ease-in-out left; + -o-transition: .6s ease-in-out left; + transition: .6s ease-in-out left; +} +.carousel-inner > .item > img, +.carousel-inner > .item > a > img { + line-height: 1; +} +@media all and (transform-3d), (-webkit-transform-3d) { + .carousel-inner > .item { + -webkit-transition: -webkit-transform .6s ease-in-out; + -o-transition: -o-transform .6s ease-in-out; + transition: transform .6s ease-in-out; + + -webkit-backface-visibility: hidden; + backface-visibility: hidden; + -webkit-perspective: 1000; + perspective: 1000; + } + .carousel-inner > .item.next, + .carousel-inner > .item.active.right { + left: 0; + -webkit-transform: translate3d(100%, 0, 0); + transform: translate3d(100%, 0, 0); + } + .carousel-inner > .item.prev, + .carousel-inner > .item.active.left { + left: 0; + -webkit-transform: translate3d(-100%, 0, 0); + transform: translate3d(-100%, 0, 0); + } + .carousel-inner > .item.next.left, + .carousel-inner > .item.prev.right, + .carousel-inner > .item.active { + left: 0; + -webkit-transform: translate3d(0, 0, 0); + transform: translate3d(0, 0, 0); + } +} +.carousel-inner > .active, +.carousel-inner > .next, +.carousel-inner > .prev { + display: block; +} +.carousel-inner > .active { + left: 0; +} +.carousel-inner > .next, +.carousel-inner > .prev { + position: absolute; + top: 0; + width: 100%; +} +.carousel-inner > .next { + left: 100%; +} +.carousel-inner > .prev { + left: -100%; +} +.carousel-inner > .next.left, +.carousel-inner > .prev.right { + left: 0; +} +.carousel-inner > .active.left { + left: -100%; +} +.carousel-inner > .active.right { + left: 100%; +} +.carousel-control { + position: absolute; + top: 0; + bottom: 0; + left: 0; + width: 15%; + font-size: 20px; + color: #fff; + text-align: center; + text-shadow: 0 1px 2px rgba(0, 0, 0, .6); + filter: alpha(opacity=50); + opacity: .5; +} +.carousel-control.left { + background-image: -webkit-linear-gradient(left, rgba(0, 0, 0, .5) 0%, rgba(0, 0, 0, .0001) 100%); + background-image: -o-linear-gradient(left, rgba(0, 0, 0, .5) 0%, rgba(0, 0, 0, .0001) 100%); + background-image: -webkit-gradient(linear, left top, right top, from(rgba(0, 0, 0, .5)), to(rgba(0, 0, 0, .0001))); + background-image: linear-gradient(to right, rgba(0, 0, 0, .5) 0%, rgba(0, 0, 0, .0001) 100%); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#80000000', endColorstr='#00000000', GradientType=1); + background-repeat: repeat-x; +} +.carousel-control.right { + right: 0; + left: auto; + background-image: -webkit-linear-gradient(left, rgba(0, 0, 0, .0001) 0%, rgba(0, 0, 0, .5) 100%); + background-image: -o-linear-gradient(left, rgba(0, 0, 0, .0001) 0%, rgba(0, 0, 0, .5) 100%); + background-image: -webkit-gradient(linear, left top, right top, from(rgba(0, 0, 0, .0001)), to(rgba(0, 0, 0, .5))); + background-image: linear-gradient(to right, rgba(0, 0, 0, .0001) 0%, rgba(0, 0, 0, .5) 100%); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#00000000', endColorstr='#80000000', GradientType=1); + background-repeat: repeat-x; +} +.carousel-control:hover, +.carousel-control:focus { + color: #fff; + text-decoration: none; + filter: alpha(opacity=90); + outline: 0; + opacity: .9; +} +.carousel-control .icon-prev, +.carousel-control .icon-next, +.carousel-control .glyphicon-chevron-left, +.carousel-control .glyphicon-chevron-right { + position: absolute; + top: 50%; + z-index: 5; + display: inline-block; +} +.carousel-control .icon-prev, +.carousel-control .glyphicon-chevron-left { + left: 50%; + margin-left: -10px; +} +.carousel-control .icon-next, +.carousel-control .glyphicon-chevron-right { + right: 50%; + margin-right: -10px; +} +.carousel-control .icon-prev, +.carousel-control .icon-next { + width: 20px; + height: 20px; + margin-top: -10px; + font-family: serif; + line-height: 1; +} +.carousel-control .icon-prev:before { + content: '\2039'; +} +.carousel-control .icon-next:before { + content: '\203a'; +} +.carousel-indicators { + position: absolute; + bottom: 10px; + left: 50%; + z-index: 15; + width: 60%; + padding-left: 0; + margin-left: -30%; + text-align: center; + list-style: none; +} +.carousel-indicators li { + display: inline-block; + width: 10px; + height: 10px; + margin: 1px; + text-indent: -999px; + cursor: pointer; + background-color: #000 \9; + background-color: rgba(0, 0, 0, 0); + border: 1px solid #fff; + border-radius: 10px; +} +.carousel-indicators .active { + width: 12px; + height: 12px; + margin: 0; + background-color: #fff; +} +.carousel-caption { + position: absolute; + right: 15%; + bottom: 20px; + left: 15%; + z-index: 10; + padding-top: 20px; + padding-bottom: 20px; + color: #fff; + text-align: center; + text-shadow: 0 1px 2px rgba(0, 0, 0, .6); +} +.carousel-caption .btn { + text-shadow: none; +} +@media screen and (min-width: 768px) { + .carousel-control .glyphicon-chevron-left, + .carousel-control .glyphicon-chevron-right, + .carousel-control .icon-prev, + .carousel-control .icon-next { + width: 30px; + height: 30px; + margin-top: -15px; + font-size: 30px; + } + .carousel-control .glyphicon-chevron-left, + .carousel-control .icon-prev { + margin-left: -15px; + } + .carousel-control .glyphicon-chevron-right, + .carousel-control .icon-next { + margin-right: -15px; + } + .carousel-caption { + right: 20%; + left: 20%; + padding-bottom: 30px; + } + .carousel-indicators { + bottom: 20px; + } +} +.clearfix:before, +.clearfix:after, +.dl-horizontal dd:before, +.dl-horizontal dd:after, +.container:before, +.container:after, +.container-fluid:before, +.container-fluid:after, +.row:before, +.row:after, +.form-horizontal .form-group:before, +.form-horizontal .form-group:after, +.btn-toolbar:before, +.btn-toolbar:after, +.btn-group-vertical > .btn-group:before, +.btn-group-vertical > .btn-group:after, +.nav:before, +.nav:after, +.navbar:before, +.navbar:after, +.navbar-header:before, +.navbar-header:after, +.navbar-collapse:before, +.navbar-collapse:after, +.pager:before, +.pager:after, +.panel-body:before, +.panel-body:after, +.modal-footer:before, +.modal-footer:after { + display: table; + content: " "; +} +.clearfix:after, +.dl-horizontal dd:after, +.container:after, +.container-fluid:after, +.row:after, +.form-horizontal .form-group:after, +.btn-toolbar:after, +.btn-group-vertical > .btn-group:after, +.nav:after, +.navbar:after, +.navbar-header:after, +.navbar-collapse:after, +.pager:after, +.panel-body:after, +.modal-footer:after { + clear: both; +} +.center-block { + display: block; + margin-right: auto; + margin-left: auto; +} +.pull-right { + float: right !important; +} +.pull-left { + float: left !important; +} +.hide { + display: none !important; +} +.show { + display: block !important; +} +.invisible { + visibility: hidden; +} +.text-hide { + font: 0/0 a; + color: transparent; + text-shadow: none; + background-color: transparent; + border: 0; +} +.hidden { + display: none !important; +} +.affix { + position: fixed; +} +@-ms-viewport { + width: device-width; +} +.visible-xs, +.visible-sm, +.visible-md, +.visible-lg { + display: none !important; +} +.visible-xs-block, +.visible-xs-inline, +.visible-xs-inline-block, +.visible-sm-block, +.visible-sm-inline, +.visible-sm-inline-block, +.visible-md-block, +.visible-md-inline, +.visible-md-inline-block, +.visible-lg-block, +.visible-lg-inline, +.visible-lg-inline-block { + display: none !important; +} +@media (max-width: 767px) { + .visible-xs { + display: block !important; + } + table.visible-xs { + display: table; + } + tr.visible-xs { + display: table-row !important; + } + th.visible-xs, + td.visible-xs { + display: table-cell !important; + } +} +@media (max-width: 767px) { + .visible-xs-block { + display: block !important; + } +} +@media (max-width: 767px) { + .visible-xs-inline { + display: inline !important; + } +} +@media (max-width: 767px) { + .visible-xs-inline-block { + display: inline-block !important; + } +} +@media (min-width: 768px) and (max-width: 991px) { + .visible-sm { + display: block !important; + } + table.visible-sm { + display: table; + } + tr.visible-sm { + display: table-row !important; + } + th.visible-sm, + td.visible-sm { + display: table-cell !important; + } +} +@media (min-width: 768px) and (max-width: 991px) { + .visible-sm-block { + display: block !important; + } +} +@media (min-width: 768px) and (max-width: 991px) { + .visible-sm-inline { + display: inline !important; + } +} +@media (min-width: 768px) and (max-width: 991px) { + .visible-sm-inline-block { + display: inline-block !important; + } +} +@media (min-width: 992px) and (max-width: 1199px) { + .visible-md { + display: block !important; + } + table.visible-md { + display: table; + } + tr.visible-md { + display: table-row !important; + } + th.visible-md, + td.visible-md { + display: table-cell !important; + } +} +@media (min-width: 992px) and (max-width: 1199px) { + .visible-md-block { + display: block !important; + } +} +@media (min-width: 992px) and (max-width: 1199px) { + .visible-md-inline { + display: inline !important; + } +} +@media (min-width: 992px) and (max-width: 1199px) { + .visible-md-inline-block { + display: inline-block !important; + } +} +@media (min-width: 1200px) { + .visible-lg { + display: block !important; + } + table.visible-lg { + display: table; + } + tr.visible-lg { + display: table-row !important; + } + th.visible-lg, + td.visible-lg { + display: table-cell !important; + } +} +@media (min-width: 1200px) { + .visible-lg-block { + display: block !important; + } +} +@media (min-width: 1200px) { + .visible-lg-inline { + display: inline !important; + } +} +@media (min-width: 1200px) { + .visible-lg-inline-block { + display: inline-block !important; + } +} +@media (max-width: 767px) { + .hidden-xs { + display: none !important; + } +} +@media (min-width: 768px) and (max-width: 991px) { + .hidden-sm { + display: none !important; + } +} +@media (min-width: 992px) and (max-width: 1199px) { + .hidden-md { + display: none !important; + } +} +@media (min-width: 1200px) { + .hidden-lg { + display: none !important; + } +} +.visible-print { + display: none !important; +} +@media print { + .visible-print { + display: block !important; + } + table.visible-print { + display: table; + } + tr.visible-print { + display: table-row !important; + } + th.visible-print, + td.visible-print { + display: table-cell !important; + } +} +.visible-print-block { + display: none !important; +} +@media print { + .visible-print-block { + display: block !important; + } +} +.visible-print-inline { + display: none !important; +} +@media print { + .visible-print-inline { + display: inline !important; + } +} +.visible-print-inline-block { + display: none !important; +} +@media print { + .visible-print-inline-block { + display: inline-block !important; + } +} +@media print { + .hidden-print { + display: none !important; + } +} +/*# sourceMappingURL=bootstrap.css.map */ diff --git a/mayan/apps/appearance/static/appearance/packages/bootstrap-3.3.4-dist/css/bootstrap.css.map b/mayan/apps/appearance/static/appearance/packages/bootstrap-3.3.4-dist/css/bootstrap.css.map new file mode 100644 index 0000000000..2fd84f36eb --- /dev/null +++ b/mayan/apps/appearance/static/appearance/packages/bootstrap-3.3.4-dist/css/bootstrap.css.map @@ -0,0 +1 @@ +{"version":3,"sources":["bootstrap.css","less/normalize.less","less/print.less","less/glyphicons.less","less/scaffolding.less","less/mixins/vendor-prefixes.less","less/mixins/tab-focus.less","less/mixins/image.less","less/type.less","less/mixins/text-emphasis.less","less/mixins/background-variant.less","less/mixins/text-overflow.less","less/code.less","less/grid.less","less/mixins/grid.less","less/mixins/grid-framework.less","less/tables.less","less/mixins/table-row.less","less/forms.less","less/mixins/forms.less","less/buttons.less","less/mixins/buttons.less","less/mixins/opacity.less","less/component-animations.less","less/dropdowns.less","less/mixins/nav-divider.less","less/mixins/reset-filter.less","less/button-groups.less","less/mixins/border-radius.less","less/input-groups.less","less/navs.less","less/navbar.less","less/mixins/nav-vertical-align.less","less/utilities.less","less/breadcrumbs.less","less/pagination.less","less/mixins/pagination.less","less/pager.less","less/labels.less","less/mixins/labels.less","less/badges.less","less/jumbotron.less","less/thumbnails.less","less/alerts.less","less/mixins/alerts.less","less/progress-bars.less","less/mixins/gradients.less","less/mixins/progress-bar.less","less/media.less","less/list-group.less","less/mixins/list-group.less","less/panels.less","less/mixins/panels.less","less/responsive-embed.less","less/wells.less","less/close.less","less/modals.less","less/tooltip.less","less/popovers.less","less/carousel.less","less/mixins/clearfix.less","less/mixins/center-block.less","less/mixins/hide-text.less","less/responsive-utilities.less","less/mixins/responsive-visibility.less"],"names":[],"mappings":"AAAA,6DAA4D;ACQ5D;EACE,yBAAA;EACA,4BAAA;EACA,gCAAA;EDND;ACaD;EACE,WAAA;EDXD;ACwBD;;;;;;;;;;;;;EAaE,gBAAA;EDtBD;AC8BD;;;;EAIE,uBAAA;EACA,0BAAA;ED5BD;ACoCD;EACE,eAAA;EACA,WAAA;EDlCD;AC0CD;;EAEE,eAAA;EDxCD;ACkDD;EACE,+BAAA;EDhDD;ACuDD;;EAEE,YAAA;EDrDD;AC+DD;EACE,2BAAA;ED7DD;ACoED;;EAEE,mBAAA;EDlED;ACyED;EACE,oBAAA;EDvED;AC+ED;EACE,gBAAA;EACA,kBAAA;ED7ED;ACoFD;EACE,kBAAA;EACA,aAAA;EDlFD;ACyFD;EACE,gBAAA;EDvFD;AC8FD;;EAEE,gBAAA;EACA,gBAAA;EACA,oBAAA;EACA,0BAAA;ED5FD;AC+FD;EACE,aAAA;ED7FD;ACgGD;EACE,iBAAA;ED9FD;ACwGD;EACE,WAAA;EDtGD;AC6GD;EACE,kBAAA;ED3GD;ACqHD;EACE,kBAAA;EDnHD;AC0HD;EACE,8BAAA;EACA,iCAAA;UAAA,yBAAA;EACA,WAAA;EDxHD;AC+HD;EACE,gBAAA;ED7HD;ACoID;;;;EAIE,mCAAA;EACA,gBAAA;EDlID;ACoJD;;;;;EAKE,gBAAA;EACA,eAAA;EACA,WAAA;EDlJD;ACyJD;EACE,mBAAA;EDvJD;ACiKD;;EAEE,sBAAA;ED/JD;AC0KD;;;;EAIE,4BAAA;EACA,iBAAA;EDxKD;AC+KD;;EAEE,iBAAA;ED7KD;ACoLD;;EAEE,WAAA;EACA,YAAA;EDlLD;AC0LD;EACE,qBAAA;EDxLD;ACmMD;;EAEE,gCAAA;KAAA,6BAAA;UAAA,wBAAA;EACA,YAAA;EDjMD;AC0MD;;EAEE,cAAA;EDxMD;ACiND;EACE,+BAAA;EACA,8BAAA;EACA,iCAAA;EACA,yBAAA;ED/MD;ACwND;;EAEE,0BAAA;EDtND;AC6ND;EACE,2BAAA;EACA,eAAA;EACA,gCAAA;ED3ND;ACmOD;EACE,WAAA;EACA,YAAA;EDjOD;ACwOD;EACE,gBAAA;EDtOD;AC8OD;EACE,mBAAA;ED5OD;ACsPD;EACE,2BAAA;EACA,mBAAA;EDpPD;ACuPD;;EAEE,YAAA;EDrPD;AACD,sFAAqF;AE1ErF;EAnGI;;;IAGI,oCAAA;IACA,wBAAA;IACA,qCAAA;YAAA,6BAAA;IACA,8BAAA;IFgLL;EE7KC;;IAEI,4BAAA;IF+KL;EE5KC;IACI,8BAAA;IF8KL;EE3KC;IACI,+BAAA;IF6KL;EExKC;;IAEI,aAAA;IF0KL;EEvKC;;IAEI,wBAAA;IACA,0BAAA;IFyKL;EEtKC;IACI,6BAAA;IFwKL;EErKC;;IAEI,0BAAA;IFuKL;EEpKC;IACI,4BAAA;IFsKL;EEnKC;;;IAGI,YAAA;IACA,WAAA;IFqKL;EElKC;;IAEI,yBAAA;IFoKL;EE7JC;IACI,6BAAA;IF+JL;EE3JC;IACI,eAAA;IF6JL;EE3JC;;IAGQ,mCAAA;IF4JT;EEzJC;IACI,wBAAA;IF2JL;EExJC;IACI,sCAAA;IF0JL;EE3JC;;IAKQ,mCAAA;IF0JT;EEvJC;;IAGQ,mCAAA;IFwJT;EACF;AGpPD;EACE,qCAAA;EACA,uDAAA;EACA,iYAAA;EHsPD;AG9OD;EACE,oBAAA;EACA,UAAA;EACA,uBAAA;EACA,qCAAA;EACA,oBAAA;EACA,qBAAA;EACA,gBAAA;EACA,qCAAA;EACA,oCAAA;EHgPD;AG5OmC;EAAW,gBAAA;EH+O9C;AG9OmC;EAAW,gBAAA;EHiP9C;AG/OmC;;EAAW,kBAAA;EHmP9C;AGlPmC;EAAW,kBAAA;EHqP9C;AGpPmC;EAAW,kBAAA;EHuP9C;AGtPmC;EAAW,kBAAA;EHyP9C;AGxPmC;EAAW,kBAAA;EH2P9C;AG1PmC;EAAW,kBAAA;EH6P9C;AG5PmC;EAAW,kBAAA;EH+P9C;AG9PmC;EAAW,kBAAA;EHiQ9C;AGhQmC;EAAW,kBAAA;EHmQ9C;AGlQmC;EAAW,kBAAA;EHqQ9C;AGpQmC;EAAW,kBAAA;EHuQ9C;AGtQmC;EAAW,kBAAA;EHyQ9C;AGxQmC;EAAW,kBAAA;EH2Q9C;AG1QmC;EAAW,kBAAA;EH6Q9C;AG5QmC;EAAW,kBAAA;EH+Q9C;AG9QmC;EAAW,kBAAA;EHiR9C;AGhRmC;EAAW,kBAAA;EHmR9C;AGlRmC;EAAW,kBAAA;EHqR9C;AGpRmC;EAAW,kBAAA;EHuR9C;AGtRmC;EAAW,kBAAA;EHyR9C;AGxRmC;EAAW,kBAAA;EH2R9C;AG1RmC;EAAW,kBAAA;EH6R9C;AG5RmC;EAAW,kBAAA;EH+R9C;AG9RmC;EAAW,kBAAA;EHiS9C;AGhSmC;EAAW,kBAAA;EHmS9C;AGlSmC;EAAW,kBAAA;EHqS9C;AGpSmC;EAAW,kBAAA;EHuS9C;AGtSmC;EAAW,kBAAA;EHyS9C;AGxSmC;EAAW,kBAAA;EH2S9C;AG1SmC;EAAW,kBAAA;EH6S9C;AG5SmC;EAAW,kBAAA;EH+S9C;AG9SmC;EAAW,kBAAA;EHiT9C;AGhTmC;EAAW,kBAAA;EHmT9C;AGlTmC;EAAW,kBAAA;EHqT9C;AGpTmC;EAAW,kBAAA;EHuT9C;AGtTmC;EAAW,kBAAA;EHyT9C;AGxTmC;EAAW,kBAAA;EH2T9C;AG1TmC;EAAW,kBAAA;EH6T9C;AG5TmC;EAAW,kBAAA;EH+T9C;AG9TmC;EAAW,kBAAA;EHiU9C;AGhUmC;EAAW,kBAAA;EHmU9C;AGlUmC;EAAW,kBAAA;EHqU9C;AGpUmC;EAAW,kBAAA;EHuU9C;AGtUmC;EAAW,kBAAA;EHyU9C;AGxUmC;EAAW,kBAAA;EH2U9C;AG1UmC;EAAW,kBAAA;EH6U9C;AG5UmC;EAAW,kBAAA;EH+U9C;AG9UmC;EAAW,kBAAA;EHiV9C;AGhVmC;EAAW,kBAAA;EHmV9C;AGlVmC;EAAW,kBAAA;EHqV9C;AGpVmC;EAAW,kBAAA;EHuV9C;AGtVmC;EAAW,kBAAA;EHyV9C;AGxVmC;EAAW,kBAAA;EH2V9C;AG1VmC;EAAW,kBAAA;EH6V9C;AG5VmC;EAAW,kBAAA;EH+V9C;AG9VmC;EAAW,kBAAA;EHiW9C;AGhWmC;EAAW,kBAAA;EHmW9C;AGlWmC;EAAW,kBAAA;EHqW9C;AGpWmC;EAAW,kBAAA;EHuW9C;AGtWmC;EAAW,kBAAA;EHyW9C;AGxWmC;EAAW,kBAAA;EH2W9C;AG1WmC;EAAW,kBAAA;EH6W9C;AG5WmC;EAAW,kBAAA;EH+W9C;AG9WmC;EAAW,kBAAA;EHiX9C;AGhXmC;EAAW,kBAAA;EHmX9C;AGlXmC;EAAW,kBAAA;EHqX9C;AGpXmC;EAAW,kBAAA;EHuX9C;AGtXmC;EAAW,kBAAA;EHyX9C;AGxXmC;EAAW,kBAAA;EH2X9C;AG1XmC;EAAW,kBAAA;EH6X9C;AG5XmC;EAAW,kBAAA;EH+X9C;AG9XmC;EAAW,kBAAA;EHiY9C;AGhYmC;EAAW,kBAAA;EHmY9C;AGlYmC;EAAW,kBAAA;EHqY9C;AGpYmC;EAAW,kBAAA;EHuY9C;AGtYmC;EAAW,kBAAA;EHyY9C;AGxYmC;EAAW,kBAAA;EH2Y9C;AG1YmC;EAAW,kBAAA;EH6Y9C;AG5YmC;EAAW,kBAAA;EH+Y9C;AG9YmC;EAAW,kBAAA;EHiZ9C;AGhZmC;EAAW,kBAAA;EHmZ9C;AGlZmC;EAAW,kBAAA;EHqZ9C;AGpZmC;EAAW,kBAAA;EHuZ9C;AGtZmC;EAAW,kBAAA;EHyZ9C;AGxZmC;EAAW,kBAAA;EH2Z9C;AG1ZmC;EAAW,kBAAA;EH6Z9C;AG5ZmC;EAAW,kBAAA;EH+Z9C;AG9ZmC;EAAW,kBAAA;EHia9C;AGhamC;EAAW,kBAAA;EHma9C;AGlamC;EAAW,kBAAA;EHqa9C;AGpamC;EAAW,kBAAA;EHua9C;AGtamC;EAAW,kBAAA;EHya9C;AGxamC;EAAW,kBAAA;EH2a9C;AG1amC;EAAW,kBAAA;EH6a9C;AG5amC;EAAW,kBAAA;EH+a9C;AG9amC;EAAW,kBAAA;EHib9C;AGhbmC;EAAW,kBAAA;EHmb9C;AGlbmC;EAAW,kBAAA;EHqb9C;AGpbmC;EAAW,kBAAA;EHub9C;AGtbmC;EAAW,kBAAA;EHyb9C;AGxbmC;EAAW,kBAAA;EH2b9C;AG1bmC;EAAW,kBAAA;EH6b9C;AG5bmC;EAAW,kBAAA;EH+b9C;AG9bmC;EAAW,kBAAA;EHic9C;AGhcmC;EAAW,kBAAA;EHmc9C;AGlcmC;EAAW,kBAAA;EHqc9C;AGpcmC;EAAW,kBAAA;EHuc9C;AGtcmC;EAAW,kBAAA;EHyc9C;AGxcmC;EAAW,kBAAA;EH2c9C;AG1cmC;EAAW,kBAAA;EH6c9C;AG5cmC;EAAW,kBAAA;EH+c9C;AG9cmC;EAAW,kBAAA;EHid9C;AGhdmC;EAAW,kBAAA;EHmd9C;AGldmC;EAAW,kBAAA;EHqd9C;AGpdmC;EAAW,kBAAA;EHud9C;AGtdmC;EAAW,kBAAA;EHyd9C;AGxdmC;EAAW,kBAAA;EH2d9C;AG1dmC;EAAW,kBAAA;EH6d9C;AG5dmC;EAAW,kBAAA;EH+d9C;AG9dmC;EAAW,kBAAA;EHie9C;AGhemC;EAAW,kBAAA;EHme9C;AGlemC;EAAW,kBAAA;EHqe9C;AGpemC;EAAW,kBAAA;EHue9C;AGtemC;EAAW,kBAAA;EHye9C;AGxemC;EAAW,kBAAA;EH2e9C;AG1emC;EAAW,kBAAA;EH6e9C;AG5emC;EAAW,kBAAA;EH+e9C;AG9emC;EAAW,kBAAA;EHif9C;AGhfmC;EAAW,kBAAA;EHmf9C;AGlfmC;EAAW,kBAAA;EHqf9C;AGpfmC;EAAW,kBAAA;EHuf9C;AGtfmC;EAAW,kBAAA;EHyf9C;AGxfmC;EAAW,kBAAA;EH2f9C;AG1fmC;EAAW,kBAAA;EH6f9C;AG5fmC;EAAW,kBAAA;EH+f9C;AG9fmC;EAAW,kBAAA;EHigB9C;AGhgBmC;EAAW,kBAAA;EHmgB9C;AGlgBmC;EAAW,kBAAA;EHqgB9C;AGpgBmC;EAAW,kBAAA;EHugB9C;AGtgBmC;EAAW,kBAAA;EHygB9C;AGxgBmC;EAAW,kBAAA;EH2gB9C;AG1gBmC;EAAW,kBAAA;EH6gB9C;AG5gBmC;EAAW,kBAAA;EH+gB9C;AG9gBmC;EAAW,kBAAA;EHihB9C;AGhhBmC;EAAW,kBAAA;EHmhB9C;AGlhBmC;EAAW,kBAAA;EHqhB9C;AGphBmC;EAAW,kBAAA;EHuhB9C;AGthBmC;EAAW,kBAAA;EHyhB9C;AGxhBmC;EAAW,kBAAA;EH2hB9C;AG1hBmC;EAAW,kBAAA;EH6hB9C;AG5hBmC;EAAW,kBAAA;EH+hB9C;AG9hBmC;EAAW,kBAAA;EHiiB9C;AGhiBmC;EAAW,kBAAA;EHmiB9C;AGliBmC;EAAW,kBAAA;EHqiB9C;AGpiBmC;EAAW,kBAAA;EHuiB9C;AGtiBmC;EAAW,kBAAA;EHyiB9C;AGxiBmC;EAAW,kBAAA;EH2iB9C;AG1iBmC;EAAW,kBAAA;EH6iB9C;AG5iBmC;EAAW,kBAAA;EH+iB9C;AG9iBmC;EAAW,kBAAA;EHijB9C;AGhjBmC;EAAW,kBAAA;EHmjB9C;AGljBmC;EAAW,kBAAA;EHqjB9C;AGpjBmC;EAAW,kBAAA;EHujB9C;AGtjBmC;EAAW,kBAAA;EHyjB9C;AGxjBmC;EAAW,kBAAA;EH2jB9C;AG1jBmC;EAAW,kBAAA;EH6jB9C;AG5jBmC;EAAW,kBAAA;EH+jB9C;AG9jBmC;EAAW,kBAAA;EHikB9C;AGhkBmC;EAAW,kBAAA;EHmkB9C;AGlkBmC;EAAW,kBAAA;EHqkB9C;AGpkBmC;EAAW,kBAAA;EHukB9C;AGtkBmC;EAAW,kBAAA;EHykB9C;AGxkBmC;EAAW,kBAAA;EH2kB9C;AG1kBmC;EAAW,kBAAA;EH6kB9C;AG5kBmC;EAAW,kBAAA;EH+kB9C;AG9kBmC;EAAW,kBAAA;EHilB9C;AGhlBmC;EAAW,kBAAA;EHmlB9C;AGllBmC;EAAW,kBAAA;EHqlB9C;AGplBmC;EAAW,kBAAA;EHulB9C;AGtlBmC;EAAW,kBAAA;EHylB9C;AGxlBmC;EAAW,kBAAA;EH2lB9C;AG1lBmC;EAAW,kBAAA;EH6lB9C;AG5lBmC;EAAW,kBAAA;EH+lB9C;AG9lBmC;EAAW,kBAAA;EHimB9C;AGhmBmC;EAAW,kBAAA;EHmmB9C;AGlmBmC;EAAW,kBAAA;EHqmB9C;AGpmBmC;EAAW,kBAAA;EHumB9C;AGtmBmC;EAAW,kBAAA;EHymB9C;AGxmBmC;EAAW,kBAAA;EH2mB9C;AG1mBmC;EAAW,kBAAA;EH6mB9C;AG5mBmC;EAAW,kBAAA;EH+mB9C;AG9mBmC;EAAW,kBAAA;EHinB9C;AGhnBmC;EAAW,kBAAA;EHmnB9C;AGlnBmC;EAAW,kBAAA;EHqnB9C;AGpnBmC;EAAW,kBAAA;EHunB9C;AGtnBmC;EAAW,kBAAA;EHynB9C;AGxnBmC;EAAW,kBAAA;EH2nB9C;AG1nBmC;EAAW,kBAAA;EH6nB9C;AG5nBmC;EAAW,kBAAA;EH+nB9C;AG9nBmC;EAAW,kBAAA;EHioB9C;AGhoBmC;EAAW,kBAAA;EHmoB9C;AGloBmC;EAAW,kBAAA;EHqoB9C;AGpoBmC;EAAW,kBAAA;EHuoB9C;AGtoBmC;EAAW,kBAAA;EHyoB9C;AGhoBmC;EAAW,kBAAA;EHmoB9C;AGloBmC;EAAW,kBAAA;EHqoB9C;AGpoBmC;EAAW,kBAAA;EHuoB9C;AGtoBmC;EAAW,kBAAA;EHyoB9C;AGxoBmC;EAAW,kBAAA;EH2oB9C;AG1oBmC;EAAW,kBAAA;EH6oB9C;AG5oBmC;EAAW,kBAAA;EH+oB9C;AG9oBmC;EAAW,kBAAA;EHipB9C;AGhpBmC;EAAW,kBAAA;EHmpB9C;AGlpBmC;EAAW,kBAAA;EHqpB9C;AGppBmC;EAAW,kBAAA;EHupB9C;AGtpBmC;EAAW,kBAAA;EHypB9C;AGxpBmC;EAAW,kBAAA;EH2pB9C;AG1pBmC;EAAW,kBAAA;EH6pB9C;AG5pBmC;EAAW,kBAAA;EH+pB9C;AG9pBmC;EAAW,kBAAA;EHiqB9C;AGhqBmC;EAAW,kBAAA;EHmqB9C;AGlqBmC;EAAW,kBAAA;EHqqB9C;AGpqBmC;EAAW,kBAAA;EHuqB9C;AGtqBmC;EAAW,kBAAA;EHyqB9C;AGxqBmC;EAAW,kBAAA;EH2qB9C;AG1qBmC;EAAW,kBAAA;EH6qB9C;AG5qBmC;EAAW,kBAAA;EH+qB9C;AG9qBmC;EAAW,kBAAA;EHirB9C;AGhrBmC;EAAW,kBAAA;EHmrB9C;AGlrBmC;EAAW,kBAAA;EHqrB9C;AGprBmC;EAAW,kBAAA;EHurB9C;AGtrBmC;EAAW,kBAAA;EHyrB9C;AGxrBmC;EAAW,kBAAA;EH2rB9C;AG1rBmC;EAAW,kBAAA;EH6rB9C;AG5rBmC;EAAW,kBAAA;EH+rB9C;AG9rBmC;EAAW,kBAAA;EHisB9C;AGhsBmC;EAAW,kBAAA;EHmsB9C;AGlsBmC;EAAW,kBAAA;EHqsB9C;AGpsBmC;EAAW,kBAAA;EHusB9C;AGtsBmC;EAAW,kBAAA;EHysB9C;AGxsBmC;EAAW,kBAAA;EH2sB9C;AG1sBmC;EAAW,kBAAA;EH6sB9C;AG5sBmC;EAAW,kBAAA;EH+sB9C;AG9sBmC;EAAW,kBAAA;EHitB9C;AGhtBmC;EAAW,kBAAA;EHmtB9C;AGltBmC;EAAW,kBAAA;EHqtB9C;AGptBmC;EAAW,kBAAA;EHutB9C;AGttBmC;EAAW,kBAAA;EHytB9C;AGxtBmC;EAAW,kBAAA;EH2tB9C;AG1tBmC;EAAW,kBAAA;EH6tB9C;AG5tBmC;EAAW,kBAAA;EH+tB9C;AG9tBmC;EAAW,kBAAA;EHiuB9C;AGhuBmC;EAAW,kBAAA;EHmuB9C;AGluBmC;EAAW,kBAAA;EHquB9C;AGpuBmC;EAAW,kBAAA;EHuuB9C;AGtuBmC;EAAW,kBAAA;EHyuB9C;AGxuBmC;EAAW,kBAAA;EH2uB9C;AG1uBmC;EAAW,kBAAA;EH6uB9C;AG5uBmC;EAAW,kBAAA;EH+uB9C;AG9uBmC;EAAW,kBAAA;EHivB9C;AIvhCD;ECgEE,gCAAA;EACG,6BAAA;EACK,wBAAA;EL09BT;AIzhCD;;EC6DE,gCAAA;EACG,6BAAA;EACK,wBAAA;ELg+BT;AIvhCD;EACE,iBAAA;EACA,+CAAA;EJyhCD;AIthCD;EACE,6DAAA;EACA,iBAAA;EACA,yBAAA;EACA,gBAAA;EACA,2BAAA;EJwhCD;AIphCD;;;;EAIE,sBAAA;EACA,oBAAA;EACA,sBAAA;EJshCD;AIhhCD;EACE,gBAAA;EACA,uBAAA;EJkhCD;AIhhCC;;EAEE,gBAAA;EACA,4BAAA;EJkhCH;AI/gCC;EErDA,sBAAA;EAEA,4CAAA;EACA,sBAAA;ENskCD;AIzgCD;EACE,WAAA;EJ2gCD;AIrgCD;EACE,wBAAA;EJugCD;AIngCD;;;;;EGvEE,gBAAA;EACA,iBAAA;EACA,cAAA;EPilCD;AIvgCD;EACE,oBAAA;EJygCD;AIngCD;EACE,cAAA;EACA,yBAAA;EACA,2BAAA;EACA,2BAAA;EACA,oBAAA;EC6FA,0CAAA;EACK,qCAAA;EACG,kCAAA;EEvLR,uBAAA;EACA,iBAAA;EACA,cAAA;EPimCD;AIngCD;EACE,oBAAA;EJqgCD;AI//BD;EACE,kBAAA;EACA,qBAAA;EACA,WAAA;EACA,+BAAA;EJigCD;AIz/BD;EACE,oBAAA;EACA,YAAA;EACA,aAAA;EACA,cAAA;EACA,YAAA;EACA,kBAAA;EACA,wBAAA;EACA,WAAA;EJ2/BD;AIn/BC;;EAEE,kBAAA;EACA,aAAA;EACA,cAAA;EACA,WAAA;EACA,mBAAA;EACA,YAAA;EJq/BH;AIz+BD;EACE,iBAAA;EJ2+BD;AQnoCD;;;;;;;;;;;;EAEE,sBAAA;EACA,kBAAA;EACA,kBAAA;EACA,gBAAA;ER+oCD;AQppCD;;;;;;;;;;;;;;;;;;;;;;;;EASI,qBAAA;EACA,gBAAA;EACA,gBAAA;ERqqCH;AQjqCD;;;;;;EAGE,kBAAA;EACA,qBAAA;ERsqCD;AQ1qCD;;;;;;;;;;;;EAQI,gBAAA;ERgrCH;AQ7qCD;;;;;;EAGE,kBAAA;EACA,qBAAA;ERkrCD;AQtrCD;;;;;;;;;;;;EAQI,gBAAA;ER4rCH;AQxrCD;;EAAU,iBAAA;ER4rCT;AQ3rCD;;EAAU,iBAAA;ER+rCT;AQ9rCD;;EAAU,iBAAA;ERksCT;AQjsCD;;EAAU,iBAAA;ERqsCT;AQpsCD;;EAAU,iBAAA;ERwsCT;AQvsCD;;EAAU,iBAAA;ER2sCT;AQrsCD;EACE,kBAAA;ERusCD;AQpsCD;EACE,qBAAA;EACA,iBAAA;EACA,kBAAA;EACA,kBAAA;ERssCD;AQjsCD;EAAA;IAFI,iBAAA;IRusCD;EACF;AQ/rCD;;EAEE,gBAAA;ERisCD;AQ9rCD;;EAEE,2BAAA;EACA,eAAA;ERgsCD;AQ5rCD;EAAuB,kBAAA;ER+rCtB;AQ9rCD;EAAuB,mBAAA;ERisCtB;AQhsCD;EAAuB,oBAAA;ERmsCtB;AQlsCD;EAAuB,qBAAA;ERqsCtB;AQpsCD;EAAuB,qBAAA;ERusCtB;AQpsCD;EAAuB,2BAAA;ERusCtB;AQtsCD;EAAuB,2BAAA;ERysCtB;AQxsCD;EAAuB,4BAAA;ER2sCtB;AQxsCD;EACE,gBAAA;ER0sCD;AQxsCD;ECrGE,gBAAA;ETgzCD;AS/yCC;EACE,gBAAA;ETizCH;AQ3sCD;ECxGE,gBAAA;ETszCD;ASrzCC;EACE,gBAAA;ETuzCH;AQ9sCD;EC3GE,gBAAA;ET4zCD;AS3zCC;EACE,gBAAA;ET6zCH;AQjtCD;EC9GE,gBAAA;ETk0CD;ASj0CC;EACE,gBAAA;ETm0CH;AQptCD;ECjHE,gBAAA;ETw0CD;ASv0CC;EACE,gBAAA;ETy0CH;AQntCD;EAGE,aAAA;EE3HA,2BAAA;EV+0CD;AU90CC;EACE,2BAAA;EVg1CH;AQptCD;EE9HE,2BAAA;EVq1CD;AUp1CC;EACE,2BAAA;EVs1CH;AQvtCD;EEjIE,2BAAA;EV21CD;AU11CC;EACE,2BAAA;EV41CH;AQ1tCD;EEpIE,2BAAA;EVi2CD;AUh2CC;EACE,2BAAA;EVk2CH;AQ7tCD;EEvIE,2BAAA;EVu2CD;AUt2CC;EACE,2BAAA;EVw2CH;AQ3tCD;EACE,qBAAA;EACA,qBAAA;EACA,kCAAA;ER6tCD;AQrtCD;;EAEE,eAAA;EACA,qBAAA;ERutCD;AQ1tCD;;;;EAMI,kBAAA;ER0tCH;AQntCD;EACE,iBAAA;EACA,kBAAA;ERqtCD;AQjtCD;EALE,iBAAA;EACA,kBAAA;EAMA,mBAAA;ERotCD;AQttCD;EAKI,uBAAA;EACA,mBAAA;EACA,oBAAA;ERotCH;AQ/sCD;EACE,eAAA;EACA,qBAAA;ERitCD;AQ/sCD;;EAEE,yBAAA;ERitCD;AQ/sCD;EACE,mBAAA;ERitCD;AQ/sCD;EACE,gBAAA;ERitCD;AQxrCD;EAAA;IAVM,aAAA;IACA,cAAA;IACA,aAAA;IACA,mBAAA;IGtNJ,kBAAA;IACA,yBAAA;IACA,qBAAA;IX65CC;EQlsCH;IAHM,oBAAA;IRwsCH;EACF;AQ/rCD;;EAGE,cAAA;EACA,mCAAA;ERgsCD;AQ9rCD;EACE,gBAAA;EA9IqB,2BAAA;ER+0CtB;AQ5rCD;EACE,oBAAA;EACA,kBAAA;EACA,mBAAA;EACA,gCAAA;ER8rCD;AQzrCG;;;EACE,kBAAA;ER6rCL;AQvsCD;;;EAmBI,gBAAA;EACA,gBAAA;EACA,yBAAA;EACA,gBAAA;ERyrCH;AQvrCG;;;EACE,wBAAA;ER2rCL;AQnrCD;;EAEE,qBAAA;EACA,iBAAA;EACA,iCAAA;EACA,gBAAA;EACA,mBAAA;ERqrCD;AQ/qCG;;;;;;EAAW,aAAA;ERurCd;AQtrCG;;;;;;EACE,wBAAA;ER6rCL;AQvrCD;EACE,qBAAA;EACA,oBAAA;EACA,yBAAA;ERyrCD;AY/9CD;;;;EAIE,gEAAA;EZi+CD;AY79CD;EACE,kBAAA;EACA,gBAAA;EACA,gBAAA;EACA,2BAAA;EACA,oBAAA;EZ+9CD;AY39CD;EACE,kBAAA;EACA,gBAAA;EACA,gBAAA;EACA,2BAAA;EACA,oBAAA;EACA,wDAAA;UAAA,gDAAA;EZ69CD;AYn+CD;EASI,YAAA;EACA,iBAAA;EACA,mBAAA;EACA,0BAAA;UAAA,kBAAA;EZ69CH;AYx9CD;EACE,gBAAA;EACA,gBAAA;EACA,kBAAA;EACA,iBAAA;EACA,yBAAA;EACA,uBAAA;EACA,uBAAA;EACA,gBAAA;EACA,2BAAA;EACA,2BAAA;EACA,oBAAA;EZ09CD;AYr+CD;EAeI,YAAA;EACA,oBAAA;EACA,gBAAA;EACA,uBAAA;EACA,+BAAA;EACA,kBAAA;EZy9CH;AYp9CD;EACE,mBAAA;EACA,oBAAA;EZs9CD;AahhDD;ECHE,oBAAA;EACA,mBAAA;EACA,oBAAA;EACA,qBAAA;EdshDD;AahhDC;EAAA;IAFE,cAAA;IbshDD;EACF;AalhDC;EAAA;IAFE,cAAA;IbwhDD;EACF;AaphDD;EAAA;IAFI,eAAA;Ib0hDD;EACF;AajhDD;ECvBE,oBAAA;EACA,mBAAA;EACA,oBAAA;EACA,qBAAA;Ed2iDD;Aa9gDD;ECvBE,oBAAA;EACA,qBAAA;EdwiDD;AexiDG;EACE,oBAAA;EAEA,iBAAA;EAEA,oBAAA;EACA,qBAAA;EfwiDL;AexhDG;EACE,aAAA;Ef0hDL;AenhDC;EACE,aAAA;EfqhDH;AethDC;EACE,qBAAA;EfwhDH;AezhDC;EACE,qBAAA;Ef2hDH;Ae5hDC;EACE,YAAA;Ef8hDH;Ae/hDC;EACE,qBAAA;EfiiDH;AeliDC;EACE,qBAAA;EfoiDH;AeriDC;EACE,YAAA;EfuiDH;AexiDC;EACE,qBAAA;Ef0iDH;Ae3iDC;EACE,qBAAA;Ef6iDH;Ae9iDC;EACE,YAAA;EfgjDH;AejjDC;EACE,qBAAA;EfmjDH;AepjDC;EACE,oBAAA;EfsjDH;AexiDC;EACE,aAAA;Ef0iDH;Ae3iDC;EACE,qBAAA;Ef6iDH;Ae9iDC;EACE,qBAAA;EfgjDH;AejjDC;EACE,YAAA;EfmjDH;AepjDC;EACE,qBAAA;EfsjDH;AevjDC;EACE,qBAAA;EfyjDH;Ae1jDC;EACE,YAAA;Ef4jDH;Ae7jDC;EACE,qBAAA;Ef+jDH;AehkDC;EACE,qBAAA;EfkkDH;AenkDC;EACE,YAAA;EfqkDH;AetkDC;EACE,qBAAA;EfwkDH;AezkDC;EACE,oBAAA;Ef2kDH;AevkDC;EACE,aAAA;EfykDH;AezlDC;EACE,YAAA;Ef2lDH;Ae5lDC;EACE,oBAAA;Ef8lDH;Ae/lDC;EACE,oBAAA;EfimDH;AelmDC;EACE,WAAA;EfomDH;AermDC;EACE,oBAAA;EfumDH;AexmDC;EACE,oBAAA;Ef0mDH;Ae3mDC;EACE,WAAA;Ef6mDH;Ae9mDC;EACE,oBAAA;EfgnDH;AejnDC;EACE,oBAAA;EfmnDH;AepnDC;EACE,WAAA;EfsnDH;AevnDC;EACE,oBAAA;EfynDH;Ae1nDC;EACE,mBAAA;Ef4nDH;AexnDC;EACE,YAAA;Ef0nDH;Ae5mDC;EACE,mBAAA;Ef8mDH;Ae/mDC;EACE,2BAAA;EfinDH;AelnDC;EACE,2BAAA;EfonDH;AernDC;EACE,kBAAA;EfunDH;AexnDC;EACE,2BAAA;Ef0nDH;Ae3nDC;EACE,2BAAA;Ef6nDH;Ae9nDC;EACE,kBAAA;EfgoDH;AejoDC;EACE,2BAAA;EfmoDH;AepoDC;EACE,2BAAA;EfsoDH;AevoDC;EACE,kBAAA;EfyoDH;Ae1oDC;EACE,2BAAA;Ef4oDH;Ae7oDC;EACE,0BAAA;Ef+oDH;AehpDC;EACE,iBAAA;EfkpDH;AalpDD;EElCI;IACE,aAAA;IfurDH;EehrDD;IACE,aAAA;IfkrDD;EenrDD;IACE,qBAAA;IfqrDD;EetrDD;IACE,qBAAA;IfwrDD;EezrDD;IACE,YAAA;If2rDD;Ee5rDD;IACE,qBAAA;If8rDD;Ee/rDD;IACE,qBAAA;IfisDD;EelsDD;IACE,YAAA;IfosDD;EersDD;IACE,qBAAA;IfusDD;EexsDD;IACE,qBAAA;If0sDD;Ee3sDD;IACE,YAAA;If6sDD;Ee9sDD;IACE,qBAAA;IfgtDD;EejtDD;IACE,oBAAA;IfmtDD;EersDD;IACE,aAAA;IfusDD;EexsDD;IACE,qBAAA;If0sDD;Ee3sDD;IACE,qBAAA;If6sDD;Ee9sDD;IACE,YAAA;IfgtDD;EejtDD;IACE,qBAAA;IfmtDD;EeptDD;IACE,qBAAA;IfstDD;EevtDD;IACE,YAAA;IfytDD;Ee1tDD;IACE,qBAAA;If4tDD;Ee7tDD;IACE,qBAAA;If+tDD;EehuDD;IACE,YAAA;IfkuDD;EenuDD;IACE,qBAAA;IfquDD;EetuDD;IACE,oBAAA;IfwuDD;EepuDD;IACE,aAAA;IfsuDD;EetvDD;IACE,YAAA;IfwvDD;EezvDD;IACE,oBAAA;If2vDD;Ee5vDD;IACE,oBAAA;If8vDD;Ee/vDD;IACE,WAAA;IfiwDD;EelwDD;IACE,oBAAA;IfowDD;EerwDD;IACE,oBAAA;IfuwDD;EexwDD;IACE,WAAA;If0wDD;Ee3wDD;IACE,oBAAA;If6wDD;Ee9wDD;IACE,oBAAA;IfgxDD;EejxDD;IACE,WAAA;IfmxDD;EepxDD;IACE,oBAAA;IfsxDD;EevxDD;IACE,mBAAA;IfyxDD;EerxDD;IACE,YAAA;IfuxDD;EezwDD;IACE,mBAAA;If2wDD;Ee5wDD;IACE,2BAAA;If8wDD;Ee/wDD;IACE,2BAAA;IfixDD;EelxDD;IACE,kBAAA;IfoxDD;EerxDD;IACE,2BAAA;IfuxDD;EexxDD;IACE,2BAAA;If0xDD;Ee3xDD;IACE,kBAAA;If6xDD;Ee9xDD;IACE,2BAAA;IfgyDD;EejyDD;IACE,2BAAA;IfmyDD;EepyDD;IACE,kBAAA;IfsyDD;EevyDD;IACE,2BAAA;IfyyDD;Ee1yDD;IACE,0BAAA;If4yDD;Ee7yDD;IACE,iBAAA;If+yDD;EACF;AavyDD;EE3CI;IACE,aAAA;Ifq1DH;Ee90DD;IACE,aAAA;Ifg1DD;Eej1DD;IACE,qBAAA;Ifm1DD;Eep1DD;IACE,qBAAA;Ifs1DD;Eev1DD;IACE,YAAA;Ify1DD;Ee11DD;IACE,qBAAA;If41DD;Ee71DD;IACE,qBAAA;If+1DD;Eeh2DD;IACE,YAAA;Ifk2DD;Een2DD;IACE,qBAAA;Ifq2DD;Eet2DD;IACE,qBAAA;Ifw2DD;Eez2DD;IACE,YAAA;If22DD;Ee52DD;IACE,qBAAA;If82DD;Ee/2DD;IACE,oBAAA;Ifi3DD;Een2DD;IACE,aAAA;Ifq2DD;Eet2DD;IACE,qBAAA;Ifw2DD;Eez2DD;IACE,qBAAA;If22DD;Ee52DD;IACE,YAAA;If82DD;Ee/2DD;IACE,qBAAA;Ifi3DD;Eel3DD;IACE,qBAAA;Ifo3DD;Eer3DD;IACE,YAAA;Ifu3DD;Eex3DD;IACE,qBAAA;If03DD;Ee33DD;IACE,qBAAA;If63DD;Ee93DD;IACE,YAAA;Ifg4DD;Eej4DD;IACE,qBAAA;Ifm4DD;Eep4DD;IACE,oBAAA;Ifs4DD;Eel4DD;IACE,aAAA;Ifo4DD;Eep5DD;IACE,YAAA;Ifs5DD;Eev5DD;IACE,oBAAA;Ify5DD;Ee15DD;IACE,oBAAA;If45DD;Ee75DD;IACE,WAAA;If+5DD;Eeh6DD;IACE,oBAAA;Ifk6DD;Een6DD;IACE,oBAAA;Ifq6DD;Eet6DD;IACE,WAAA;Ifw6DD;Eez6DD;IACE,oBAAA;If26DD;Ee56DD;IACE,oBAAA;If86DD;Ee/6DD;IACE,WAAA;Ifi7DD;Eel7DD;IACE,oBAAA;Ifo7DD;Eer7DD;IACE,mBAAA;Ifu7DD;Een7DD;IACE,YAAA;Ifq7DD;Eev6DD;IACE,mBAAA;Ify6DD;Ee16DD;IACE,2BAAA;If46DD;Ee76DD;IACE,2BAAA;If+6DD;Eeh7DD;IACE,kBAAA;Ifk7DD;Een7DD;IACE,2BAAA;Ifq7DD;Eet7DD;IACE,2BAAA;Ifw7DD;Eez7DD;IACE,kBAAA;If27DD;Ee57DD;IACE,2BAAA;If87DD;Ee/7DD;IACE,2BAAA;Ifi8DD;Eel8DD;IACE,kBAAA;Ifo8DD;Eer8DD;IACE,2BAAA;Ifu8DD;Eex8DD;IACE,0BAAA;If08DD;Ee38DD;IACE,iBAAA;If68DD;EACF;Aal8DD;EE9CI;IACE,aAAA;Ifm/DH;Ee5+DD;IACE,aAAA;If8+DD;Ee/+DD;IACE,qBAAA;Ifi/DD;Eel/DD;IACE,qBAAA;Ifo/DD;Eer/DD;IACE,YAAA;Ifu/DD;Eex/DD;IACE,qBAAA;If0/DD;Ee3/DD;IACE,qBAAA;If6/DD;Ee9/DD;IACE,YAAA;IfggED;EejgED;IACE,qBAAA;IfmgED;EepgED;IACE,qBAAA;IfsgED;EevgED;IACE,YAAA;IfygED;Ee1gED;IACE,qBAAA;If4gED;Ee7gED;IACE,oBAAA;If+gED;EejgED;IACE,aAAA;IfmgED;EepgED;IACE,qBAAA;IfsgED;EevgED;IACE,qBAAA;IfygED;Ee1gED;IACE,YAAA;If4gED;Ee7gED;IACE,qBAAA;If+gED;EehhED;IACE,qBAAA;IfkhED;EenhED;IACE,YAAA;IfqhED;EethED;IACE,qBAAA;IfwhED;EezhED;IACE,qBAAA;If2hED;Ee5hED;IACE,YAAA;If8hED;Ee/hED;IACE,qBAAA;IfiiED;EeliED;IACE,oBAAA;IfoiED;EehiED;IACE,aAAA;IfkiED;EeljED;IACE,YAAA;IfojED;EerjED;IACE,oBAAA;IfujED;EexjED;IACE,oBAAA;If0jED;Ee3jED;IACE,WAAA;If6jED;Ee9jED;IACE,oBAAA;IfgkED;EejkED;IACE,oBAAA;IfmkED;EepkED;IACE,WAAA;IfskED;EevkED;IACE,oBAAA;IfykED;Ee1kED;IACE,oBAAA;If4kED;Ee7kED;IACE,WAAA;If+kED;EehlED;IACE,oBAAA;IfklED;EenlED;IACE,mBAAA;IfqlED;EejlED;IACE,YAAA;IfmlED;EerkED;IACE,mBAAA;IfukED;EexkED;IACE,2BAAA;If0kED;Ee3kED;IACE,2BAAA;If6kED;Ee9kED;IACE,kBAAA;IfglED;EejlED;IACE,2BAAA;IfmlED;EeplED;IACE,2BAAA;IfslED;EevlED;IACE,kBAAA;IfylED;Ee1lED;IACE,2BAAA;If4lED;Ee7lED;IACE,2BAAA;If+lED;EehmED;IACE,kBAAA;IfkmED;EenmED;IACE,2BAAA;IfqmED;EetmED;IACE,0BAAA;IfwmED;EezmED;IACE,iBAAA;If2mED;EACF;AgB/qED;EACE,+BAAA;EhBirED;AgB/qED;EACE,kBAAA;EACA,qBAAA;EACA,gBAAA;EACA,kBAAA;EhBirED;AgB/qED;EACE,kBAAA;EhBirED;AgB3qED;EACE,aAAA;EACA,iBAAA;EACA,qBAAA;EhB6qED;AgBhrED;;;;;;EAWQ,cAAA;EACA,yBAAA;EACA,qBAAA;EACA,+BAAA;EhB6qEP;AgB3rED;EAoBI,wBAAA;EACA,kCAAA;EhB0qEH;AgB/rED;;;;;;EA8BQ,eAAA;EhByqEP;AgBvsED;EAoCI,+BAAA;EhBsqEH;AgB1sED;EAyCI,2BAAA;EhBoqEH;AgB7pED;;;;;;EAOQ,cAAA;EhB8pEP;AgBnpED;EACE,2BAAA;EhBqpED;AgBtpED;;;;;;EAQQ,2BAAA;EhBspEP;AgB9pED;;EAeM,0BAAA;EhBmpEL;AgBzoED;EAEI,2BAAA;EhB0oEH;AgBjoED;EAEI,2BAAA;EhBkoEH;AgBznED;EACE,kBAAA;EACA,aAAA;EACA,uBAAA;EhB2nED;AgBtnEG;;EACE,kBAAA;EACA,aAAA;EACA,qBAAA;EhBynEL;AiBrwEC;;;;;;;;;;;;EAOI,2BAAA;EjB4wEL;AiBtwEC;;;;;EAMI,2BAAA;EjBuwEL;AiB1xEC;;;;;;;;;;;;EAOI,2BAAA;EjBiyEL;AiB3xEC;;;;;EAMI,2BAAA;EjB4xEL;AiB/yEC;;;;;;;;;;;;EAOI,2BAAA;EjBszEL;AiBhzEC;;;;;EAMI,2BAAA;EjBizEL;AiBp0EC;;;;;;;;;;;;EAOI,2BAAA;EjB20EL;AiBr0EC;;;;;EAMI,2BAAA;EjBs0EL;AiBz1EC;;;;;;;;;;;;EAOI,2BAAA;EjBg2EL;AiB11EC;;;;;EAMI,2BAAA;EjB21EL;AgBzsED;EACE,kBAAA;EACA,mBAAA;EhB2sED;AgB9oED;EAAA;IA1DI,aAAA;IACA,qBAAA;IACA,oBAAA;IACA,8CAAA;IACA,2BAAA;IhB4sED;EgBtpEH;IAlDM,kBAAA;IhB2sEH;EgBzpEH;;;;;;IAzCY,qBAAA;IhB0sET;EgBjqEH;IAjCM,WAAA;IhBqsEH;EgBpqEH;;;;;;IAxBY,gBAAA;IhBosET;EgB5qEH;;;;;;IApBY,iBAAA;IhBwsET;EgBprEH;;;;IAPY,kBAAA;IhBisET;EACF;AkB35ED;EACE,YAAA;EACA,WAAA;EACA,WAAA;EAIA,cAAA;ElB05ED;AkBv5ED;EACE,gBAAA;EACA,aAAA;EACA,YAAA;EACA,qBAAA;EACA,iBAAA;EACA,sBAAA;EACA,gBAAA;EACA,WAAA;EACA,kCAAA;ElBy5ED;AkBt5ED;EACE,uBAAA;EACA,iBAAA;EACA,oBAAA;EACA,mBAAA;ElBw5ED;AkB74ED;Eb4BE,gCAAA;EACG,6BAAA;EACK,wBAAA;ELo3ET;AkB74ED;;EAEE,iBAAA;EACA,oBAAA;EACA,qBAAA;ElB+4ED;AkB34ED;EACE,gBAAA;ElB64ED;AkBz4ED;EACE,gBAAA;EACA,aAAA;ElB24ED;AkBv4ED;;EAEE,cAAA;ElBy4ED;AkBr4ED;;;EZxEE,sBAAA;EAEA,4CAAA;EACA,sBAAA;ENi9ED;AkBr4ED;EACE,gBAAA;EACA,kBAAA;EACA,iBAAA;EACA,yBAAA;EACA,gBAAA;ElBu4ED;AkB72ED;EACE,gBAAA;EACA,aAAA;EACA,cAAA;EACA,mBAAA;EACA,iBAAA;EACA,yBAAA;EACA,gBAAA;EACA,2BAAA;EACA,wBAAA;EACA,2BAAA;EACA,oBAAA;EbzDA,0DAAA;EACQ,kDAAA;EAyHR,wFAAA;EACK,2EAAA;EACG,wEAAA;ELizET;AmBz7EC;EACE,uBAAA;EACA,YAAA;EdUF,wFAAA;EACQ,gFAAA;ELk7ET;AKj5EC;EACE,gBAAA;EACA,YAAA;ELm5EH;AKj5EC;EAA0B,gBAAA;ELo5E3B;AKn5EC;EAAgC,gBAAA;ELs5EjC;AkBr3EC;;;EAGE,2BAAA;EACA,YAAA;ElBu3EH;AkBp3EC;;EAEE,qBAAA;ElBs3EH;AkBl3EC;EACE,cAAA;ElBo3EH;AkBx2ED;EACE,0BAAA;ElB02ED;AkBt0ED;EAxBE;;;;IAIE,mBAAA;IlBi2ED;EkB/1EC;;;;;;;;IAEE,mBAAA;IlBu2EH;EkBp2EC;;;;;;;;IAEE,mBAAA;IlB42EH;EACF;AkBl2ED;EACE,qBAAA;ElBo2ED;AkB51ED;;EAEE,oBAAA;EACA,gBAAA;EACA,kBAAA;EACA,qBAAA;ElB81ED;AkBn2ED;;EAQI,kBAAA;EACA,oBAAA;EACA,kBAAA;EACA,qBAAA;EACA,iBAAA;ElB+1EH;AkB51ED;;;;EAIE,oBAAA;EACA,oBAAA;EACA,oBAAA;ElB81ED;AkB31ED;;EAEE,kBAAA;ElB61ED;AkBz1ED;;EAEE,oBAAA;EACA,uBAAA;EACA,oBAAA;EACA,kBAAA;EACA,wBAAA;EACA,qBAAA;EACA,iBAAA;ElB21ED;AkBz1ED;;EAEE,eAAA;EACA,mBAAA;ElB21ED;AkBl1EC;;;;;;EAGE,qBAAA;ElBu1EH;AkBj1EC;;;;EAEE,qBAAA;ElBq1EH;AkB/0EC;;;;EAGI,qBAAA;ElBk1EL;AkBv0ED;EAEE,kBAAA;EACA,qBAAA;EAEA,kBAAA;EACA,kBAAA;ElBu0ED;AkBr0EC;;EAEE,iBAAA;EACA,kBAAA;ElBu0EH;AkB1zED;EC1PE,cAAA;EACA,mBAAA;EACA,iBAAA;EACA,kBAAA;EACA,oBAAA;EnBujFD;AmBrjFC;EACE,cAAA;EACA,mBAAA;EnBujFH;AmBpjFC;;EAEE,cAAA;EnBsjFH;AkBt0ED;EC7PE,cAAA;EACA,mBAAA;EACA,iBAAA;EACA,kBAAA;EACA,oBAAA;EnBskFD;AmBpkFC;EACE,cAAA;EACA,mBAAA;EnBskFH;AmBnkFC;;EAEE,cAAA;EnBqkFH;AkBr1ED;EAKI,cAAA;EACA,mBAAA;EACA,iBAAA;EACA,kBAAA;EACA,kBAAA;ElBm1EH;AkB/0ED;EC1QE,cAAA;EACA,oBAAA;EACA,iBAAA;EACA,wBAAA;EACA,oBAAA;EnB4lFD;AmB1lFC;EACE,cAAA;EACA,mBAAA;EnB4lFH;AmBzlFC;;EAEE,cAAA;EnB2lFH;AkB31ED;EC7QE,cAAA;EACA,oBAAA;EACA,iBAAA;EACA,wBAAA;EACA,oBAAA;EnB2mFD;AmBzmFC;EACE,cAAA;EACA,mBAAA;EnB2mFH;AmBxmFC;;EAEE,cAAA;EnB0mFH;AkB12ED;EAKI,cAAA;EACA,oBAAA;EACA,iBAAA;EACA,wBAAA;EACA,kBAAA;ElBw2EH;AkB/1ED;EAEE,oBAAA;ElBg2ED;AkBl2ED;EAMI,uBAAA;ElB+1EH;AkB31ED;EACE,oBAAA;EACA,QAAA;EACA,UAAA;EACA,YAAA;EACA,gBAAA;EACA,aAAA;EACA,cAAA;EACA,mBAAA;EACA,oBAAA;EACA,sBAAA;ElB61ED;AkB31ED;EACE,aAAA;EACA,cAAA;EACA,mBAAA;ElB61ED;AkB31ED;EACE,aAAA;EACA,cAAA;EACA,mBAAA;ElB61ED;AkBz1ED;;;;;;;;;;ECrXI,gBAAA;EnB0tFH;AkBr2ED;ECjXI,uBAAA;Ed+CF,0DAAA;EACQ,kDAAA;EL2qFT;AmBztFG;EACE,uBAAA;Ed4CJ,2EAAA;EACQ,mEAAA;ELgrFT;AkB/2ED;ECvWI,gBAAA;EACA,uBAAA;EACA,2BAAA;EnBytFH;AkBp3ED;ECjWI,gBAAA;EnBwtFH;AkBp3ED;;;;;;;;;;ECxXI,gBAAA;EnBwvFH;AkBh4ED;ECpXI,uBAAA;Ed+CF,0DAAA;EACQ,kDAAA;ELysFT;AmBvvFG;EACE,uBAAA;Ed4CJ,2EAAA;EACQ,mEAAA;EL8sFT;AkB14ED;EC1WI,gBAAA;EACA,uBAAA;EACA,2BAAA;EnBuvFH;AkB/4ED;ECpWI,gBAAA;EnBsvFH;AkB/4ED;;;;;;;;;;EC3XI,gBAAA;EnBsxFH;AkB35ED;ECvXI,uBAAA;Ed+CF,0DAAA;EACQ,kDAAA;ELuuFT;AmBrxFG;EACE,uBAAA;Ed4CJ,2EAAA;EACQ,mEAAA;EL4uFT;AkBr6ED;EC7WI,gBAAA;EACA,uBAAA;EACA,2BAAA;EnBqxFH;AkB16ED;ECvWI,gBAAA;EnBoxFH;AkBt6EC;EACG,WAAA;ElBw6EJ;AkBt6EC;EACG,QAAA;ElBw6EJ;AkB95ED;EACE,gBAAA;EACA,iBAAA;EACA,qBAAA;EACA,gBAAA;ElBg6ED;AkB70ED;EAAA;IA9DM,uBAAA;IACA,kBAAA;IACA,wBAAA;IlB+4EH;EkBn1EH;IAvDM,uBAAA;IACA,aAAA;IACA,wBAAA;IlB64EH;EkBx1EH;IAhDM,uBAAA;IlB24EH;EkB31EH;IA5CM,uBAAA;IACA,wBAAA;IlB04EH;EkB/1EH;;;IAtCQ,aAAA;IlB04EL;EkBp2EH;IAhCM,aAAA;IlBu4EH;EkBv2EH;IA5BM,kBAAA;IACA,wBAAA;IlBs4EH;EkB32EH;;IApBM,uBAAA;IACA,eAAA;IACA,kBAAA;IACA,wBAAA;IlBm4EH;EkBl3EH;;IAdQ,iBAAA;IlBo4EL;EkBt3EH;;IATM,oBAAA;IACA,gBAAA;IlBm4EH;EkB33EH;IAHM,QAAA;IlBi4EH;EACF;AkBv3ED;;;;EASI,eAAA;EACA,kBAAA;EACA,kBAAA;ElBo3EH;AkB/3ED;;EAiBI,kBAAA;ElBk3EH;AkBn4ED;EJjfE,oBAAA;EACA,qBAAA;Edu3FD;AkBh2EC;EAAA;IAVI,mBAAA;IACA,kBAAA;IACA,kBAAA;IlB82EH;EACF;AkB94ED;EAwCI,aAAA;ElBy2EH;AkB51EC;EAAA;IAHM,0BAAA;IlBm2EL;EACF;AkB11EC;EAAA;IAHM,kBAAA;IlBi2EL;EACF;AoBn5FD;EACE,uBAAA;EACA,kBAAA;EACA,qBAAA;EACA,oBAAA;EACA,wBAAA;EACA,gCAAA;MAAA,4BAAA;EACA,iBAAA;EACA,wBAAA;EACA,+BAAA;EACA,qBAAA;EC6BA,mBAAA;EACA,iBAAA;EACA,yBAAA;EACA,oBAAA;EhB4KA,2BAAA;EACG,wBAAA;EACC,uBAAA;EACI,mBAAA;EL8sFT;AoBt5FG;;;;;;EdrBF,sBAAA;EAEA,4CAAA;EACA,sBAAA;ENk7FD;AoB15FC;;;EAGE,gBAAA;EACA,uBAAA;EpB45FH;AoBz5FC;;EAEE,YAAA;EACA,wBAAA;Ef2BF,0DAAA;EACQ,kDAAA;ELi4FT;AoBz5FC;;;EAGE,qBAAA;EACA,sBAAA;EE9CF,eAAA;EAGA,2BAAA;EjB8DA,0BAAA;EACQ,kBAAA;EL24FT;AoBr5FD;ECrDE,gBAAA;EACA,2BAAA;EACA,uBAAA;ErB68FD;AqB38FC;;;;;;EAME,gBAAA;EACA,2BAAA;EACI,uBAAA;ErB68FP;AqB38FC;;;EAGE,wBAAA;ErB68FH;AqBx8FG;;;;;;;;;;;;;;;;;;EAME,2BAAA;EACI,uBAAA;ErBs9FT;AoB97FD;ECnBI,gBAAA;EACA,2BAAA;ErBo9FH;AoB/7FD;ECxDE,gBAAA;EACA,2BAAA;EACA,uBAAA;ErB0/FD;AqBx/FC;;;;;;EAME,gBAAA;EACA,2BAAA;EACI,uBAAA;ErB0/FP;AqBx/FC;;;EAGE,wBAAA;ErB0/FH;AqBr/FG;;;;;;;;;;;;;;;;;;EAME,2BAAA;EACI,uBAAA;ErBmgGT;AoBx+FD;ECtBI,gBAAA;EACA,2BAAA;ErBigGH;AoBx+FD;EC5DE,gBAAA;EACA,2BAAA;EACA,uBAAA;ErBuiGD;AqBriGC;;;;;;EAME,gBAAA;EACA,2BAAA;EACI,uBAAA;ErBuiGP;AqBriGC;;;EAGE,wBAAA;ErBuiGH;AqBliGG;;;;;;;;;;;;;;;;;;EAME,2BAAA;EACI,uBAAA;ErBgjGT;AoBjhGD;EC1BI,gBAAA;EACA,2BAAA;ErB8iGH;AoBjhGD;EChEE,gBAAA;EACA,2BAAA;EACA,uBAAA;ErBolGD;AqBllGC;;;;;;EAME,gBAAA;EACA,2BAAA;EACI,uBAAA;ErBolGP;AqBllGC;;;EAGE,wBAAA;ErBolGH;AqB/kGG;;;;;;;;;;;;;;;;;;EAME,2BAAA;EACI,uBAAA;ErB6lGT;AoB1jGD;EC9BI,gBAAA;EACA,2BAAA;ErB2lGH;AoB1jGD;ECpEE,gBAAA;EACA,2BAAA;EACA,uBAAA;ErBioGD;AqB/nGC;;;;;;EAME,gBAAA;EACA,2BAAA;EACI,uBAAA;ErBioGP;AqB/nGC;;;EAGE,wBAAA;ErBioGH;AqB5nGG;;;;;;;;;;;;;;;;;;EAME,2BAAA;EACI,uBAAA;ErB0oGT;AoBnmGD;EClCI,gBAAA;EACA,2BAAA;ErBwoGH;AoBnmGD;ECxEE,gBAAA;EACA,2BAAA;EACA,uBAAA;ErB8qGD;AqB5qGC;;;;;;EAME,gBAAA;EACA,2BAAA;EACI,uBAAA;ErB8qGP;AqB5qGC;;;EAGE,wBAAA;ErB8qGH;AqBzqGG;;;;;;;;;;;;;;;;;;EAME,2BAAA;EACI,uBAAA;ErBurGT;AoB5oGD;ECtCI,gBAAA;EACA,2BAAA;ErBqrGH;AoBvoGD;EACE,gBAAA;EACA,qBAAA;EACA,kBAAA;EpByoGD;AoBvoGC;;;;;EAKE,+BAAA;Ef7BF,0BAAA;EACQ,kBAAA;ELuqGT;AoBxoGC;;;;EAIE,2BAAA;EpB0oGH;AoBxoGC;;EAEE,gBAAA;EACA,4BAAA;EACA,+BAAA;EpB0oGH;AoBtoGG;;;;EAEE,gBAAA;EACA,uBAAA;EpB0oGL;AoBjoGD;;EC/EE,oBAAA;EACA,iBAAA;EACA,wBAAA;EACA,oBAAA;ErBotGD;AoBpoGD;;ECnFE,mBAAA;EACA,iBAAA;EACA,kBAAA;EACA,oBAAA;ErB2tGD;AoBvoGD;;ECvFE,kBAAA;EACA,iBAAA;EACA,kBAAA;EACA,oBAAA;ErBkuGD;AoBtoGD;EACE,gBAAA;EACA,aAAA;EpBwoGD;AoBpoGD;EACE,iBAAA;EpBsoGD;AoB/nGC;;;EACE,aAAA;EpBmoGH;AuBvxGD;EACE,YAAA;ElBoLA,0CAAA;EACK,qCAAA;EACG,kCAAA;ELsmGT;AuB1xGC;EACE,YAAA;EvB4xGH;AuBxxGD;EACE,eAAA;EvB0xGD;AuBxxGC;EAAY,gBAAA;EvB2xGb;AuB1xGC;EAAY,oBAAA;EvB6xGb;AuB5xGC;EAAY,0BAAA;EvB+xGb;AuB5xGD;EACE,oBAAA;EACA,WAAA;EACA,kBAAA;ElBuKA,iDAAA;EACQ,4CAAA;KAAA,yCAAA;EAOR,oCAAA;EACQ,+BAAA;KAAA,4BAAA;EAGR,0CAAA;EACQ,qCAAA;KAAA,kCAAA;ELgnGT;AwB1zGD;EACE,uBAAA;EACA,UAAA;EACA,WAAA;EACA,kBAAA;EACA,wBAAA;EACA,wBAAA;EACA,qCAAA;EACA,oCAAA;ExB4zGD;AwBxzGD;;EAEE,oBAAA;ExB0zGD;AwBtzGD;EACE,YAAA;ExBwzGD;AwBpzGD;EACE,oBAAA;EACA,WAAA;EACA,SAAA;EACA,eAAA;EACA,eAAA;EACA,aAAA;EACA,kBAAA;EACA,gBAAA;EACA,iBAAA;EACA,kBAAA;EACA,iBAAA;EACA,kBAAA;EACA,2BAAA;EACA,2BAAA;EACA,uCAAA;EACA,oBAAA;EnBuBA,qDAAA;EACQ,6CAAA;EmBtBR,sCAAA;UAAA,8BAAA;ExBuzGD;AwBlzGC;EACE,UAAA;EACA,YAAA;ExBozGH;AwB70GD;ECxBE,aAAA;EACA,eAAA;EACA,kBAAA;EACA,2BAAA;EzBw2GD;AwBn1GD;EAmCI,gBAAA;EACA,mBAAA;EACA,aAAA;EACA,qBAAA;EACA,yBAAA;EACA,gBAAA;EACA,qBAAA;ExBmzGH;AwB7yGC;;EAEE,uBAAA;EACA,gBAAA;EACA,2BAAA;ExB+yGH;AwBzyGC;;;EAGE,gBAAA;EACA,uBAAA;EACA,YAAA;EACA,2BAAA;ExB2yGH;AwBlyGC;;;EAGE,gBAAA;ExBoyGH;AwBhyGC;;EAEE,uBAAA;EACA,+BAAA;EACA,wBAAA;EE1GF,qEAAA;EF4GE,qBAAA;ExBkyGH;AwB7xGD;EAGI,gBAAA;ExB6xGH;AwBhyGD;EAQI,YAAA;ExB2xGH;AwBnxGD;EACE,YAAA;EACA,UAAA;ExBqxGD;AwB7wGD;EACE,SAAA;EACA,aAAA;ExB+wGD;AwB3wGD;EACE,gBAAA;EACA,mBAAA;EACA,iBAAA;EACA,yBAAA;EACA,gBAAA;EACA,qBAAA;ExB6wGD;AwBzwGD;EACE,iBAAA;EACA,SAAA;EACA,UAAA;EACA,WAAA;EACA,QAAA;EACA,cAAA;ExB2wGD;AwBvwGD;EACE,UAAA;EACA,YAAA;ExBywGD;AwBjwGD;;EAII,eAAA;EACA,0BAAA;EACA,aAAA;ExBiwGH;AwBvwGD;;EAUI,WAAA;EACA,cAAA;EACA,oBAAA;ExBiwGH;AwB5uGD;EAXE;IAnEA,YAAA;IACA,UAAA;IxB8zGC;EwB5vGD;IAzDA,SAAA;IACA,aAAA;IxBwzGC;EACF;A2Bv8GD;;EAEE,oBAAA;EACA,uBAAA;EACA,wBAAA;E3By8GD;A2B78GD;;EAMI,oBAAA;EACA,aAAA;E3B28GH;A2Bz8GG;;;;;;;;EAIE,YAAA;E3B+8GL;A2Bz8GD;;;;EAKI,mBAAA;E3B08GH;A2Br8GD;EACE,mBAAA;E3Bu8GD;A2Bx8GD;;EAMI,aAAA;E3Bs8GH;A2B58GD;;;EAWI,kBAAA;E3Bs8GH;A2Bl8GD;EACE,kBAAA;E3Bo8GD;A2Bh8GD;EACE,gBAAA;E3Bk8GD;A2Bj8GC;ECjDA,+BAAA;EACG,4BAAA;E5Bq/GJ;A2Bh8GD;;EC9CE,8BAAA;EACG,2BAAA;E5Bk/GJ;A2B/7GD;EACE,aAAA;E3Bi8GD;A2B/7GD;EACE,kBAAA;E3Bi8GD;A2B/7GD;;EClEE,+BAAA;EACG,4BAAA;E5BqgHJ;A2B97GD;EChEE,8BAAA;EACG,2BAAA;E5BigHJ;A2B77GD;;EAEE,YAAA;E3B+7GD;A2B96GD;EACE,mBAAA;EACA,oBAAA;E3Bg7GD;A2B96GD;EACE,oBAAA;EACA,qBAAA;E3Bg7GD;A2B36GD;EtB9CE,0DAAA;EACQ,kDAAA;EL49GT;A2B36GC;EtBlDA,0BAAA;EACQ,kBAAA;ELg+GT;A2Bx6GD;EACE,gBAAA;E3B06GD;A2Bv6GD;EACE,yBAAA;EACA,wBAAA;E3By6GD;A2Bt6GD;EACE,yBAAA;E3Bw6GD;A2Bj6GD;;;EAII,gBAAA;EACA,aAAA;EACA,aAAA;EACA,iBAAA;E3Bk6GH;A2Bz6GD;EAcM,aAAA;E3B85GL;A2B56GD;;;;EAsBI,kBAAA;EACA,gBAAA;E3B45GH;A2Bv5GC;EACE,kBAAA;E3By5GH;A2Bv5GC;EACE,8BAAA;ECnKF,+BAAA;EACC,8BAAA;E5B6jHF;A2Bx5GC;EACE,gCAAA;EC/KF,4BAAA;EACC,2BAAA;E5B0kHF;A2Bx5GD;EACE,kBAAA;E3B05GD;A2Bx5GD;;EC9KE,+BAAA;EACC,8BAAA;E5B0kHF;A2Bv5GD;EC5LE,4BAAA;EACC,2BAAA;E5BslHF;A2Bn5GD;EACE,gBAAA;EACA,aAAA;EACA,qBAAA;EACA,2BAAA;E3Bq5GD;A2Bz5GD;;EAOI,aAAA;EACA,qBAAA;EACA,WAAA;E3Bs5GH;A2B/5GD;EAYI,aAAA;E3Bs5GH;A2Bl6GD;EAgBI,YAAA;E3Bq5GH;A2Bp4GD;;;;EAKM,oBAAA;EACA,wBAAA;EACA,sBAAA;E3Bq4GL;A6B9mHD;EACE,oBAAA;EACA,gBAAA;EACA,2BAAA;E7BgnHD;A6B7mHC;EACE,aAAA;EACA,iBAAA;EACA,kBAAA;E7B+mHH;A6BxnHD;EAeI,oBAAA;EACA,YAAA;EAKA,aAAA;EAEA,aAAA;EACA,kBAAA;E7BumHH;A6B9lHD;;;EV8BE,cAAA;EACA,oBAAA;EACA,iBAAA;EACA,wBAAA;EACA,oBAAA;EnBqkHD;AmBnkHC;;;EACE,cAAA;EACA,mBAAA;EnBukHH;AmBpkHC;;;;;;EAEE,cAAA;EnB0kHH;A6BhnHD;;;EVyBE,cAAA;EACA,mBAAA;EACA,iBAAA;EACA,kBAAA;EACA,oBAAA;EnB4lHD;AmB1lHC;;;EACE,cAAA;EACA,mBAAA;EnB8lHH;AmB3lHC;;;;;;EAEE,cAAA;EnBimHH;A6B9nHD;;;EAGE,qBAAA;E7BgoHD;A6B9nHC;;;EACE,kBAAA;E7BkoHH;A6B9nHD;;EAEE,WAAA;EACA,qBAAA;EACA,wBAAA;E7BgoHD;A6B3nHD;EACE,mBAAA;EACA,iBAAA;EACA,qBAAA;EACA,gBAAA;EACA,gBAAA;EACA,oBAAA;EACA,2BAAA;EACA,2BAAA;EACA,oBAAA;E7B6nHD;A6B1nHC;EACE,mBAAA;EACA,iBAAA;EACA,oBAAA;E7B4nHH;A6B1nHC;EACE,oBAAA;EACA,iBAAA;EACA,oBAAA;E7B4nHH;A6BhpHD;;EA0BI,eAAA;E7B0nHH;A6BrnHD;;;;;;;EDhGE,+BAAA;EACG,4BAAA;E5B8tHJ;A6BtnHD;EACE,iBAAA;E7BwnHD;A6BtnHD;;;;;;;EDpGE,8BAAA;EACG,2BAAA;E5BmuHJ;A6BvnHD;EACE,gBAAA;E7BynHD;A6BpnHD;EACE,oBAAA;EAGA,cAAA;EACA,qBAAA;E7BonHD;A6BznHD;EAUI,oBAAA;E7BknHH;A6B5nHD;EAYM,mBAAA;E7BmnHL;A6BhnHG;;;EAGE,YAAA;E7BknHL;A6B7mHC;;EAGI,oBAAA;E7B8mHL;A6B3mHC;;EAGI,mBAAA;E7B4mHL;A8BtwHD;EACE,kBAAA;EACA,iBAAA;EACA,kBAAA;E9BwwHD;A8B3wHD;EAOI,oBAAA;EACA,gBAAA;E9BuwHH;A8B/wHD;EAWM,oBAAA;EACA,gBAAA;EACA,oBAAA;E9BuwHL;A8BtwHK;;EAEE,uBAAA;EACA,2BAAA;E9BwwHP;A8BnwHG;EACE,gBAAA;E9BqwHL;A8BnwHK;;EAEE,gBAAA;EACA,uBAAA;EACA,+BAAA;EACA,qBAAA;E9BqwHP;A8B9vHG;;;EAGE,2BAAA;EACA,uBAAA;E9BgwHL;A8BzyHD;ELHE,aAAA;EACA,eAAA;EACA,kBAAA;EACA,2BAAA;EzB+yHD;A8B/yHD;EA0DI,iBAAA;E9BwvHH;A8B/uHD;EACE,kCAAA;E9BivHD;A8BlvHD;EAGI,aAAA;EAEA,qBAAA;E9BivHH;A8BtvHD;EASM,mBAAA;EACA,yBAAA;EACA,+BAAA;EACA,4BAAA;E9BgvHL;A8B/uHK;EACE,uCAAA;E9BivHP;A8B3uHK;;;EAGE,gBAAA;EACA,2BAAA;EACA,2BAAA;EACA,kCAAA;EACA,iBAAA;E9B6uHP;A8BxuHC;EAqDA,aAAA;EA8BA,kBAAA;E9BypHD;A8B5uHC;EAwDE,aAAA;E9BurHH;A8B/uHC;EA0DI,oBAAA;EACA,oBAAA;E9BwrHL;A8BnvHC;EAgEE,WAAA;EACA,YAAA;E9BsrHH;A8B1qHD;EAAA;IAPM,qBAAA;IACA,WAAA;I9BqrHH;E8B/qHH;IAJQ,kBAAA;I9BsrHL;EACF;A8BhwHC;EAuFE,iBAAA;EACA,oBAAA;E9B4qHH;A8BpwHC;;;EA8FE,2BAAA;E9B2qHH;A8B7pHD;EAAA;IATM,kCAAA;IACA,4BAAA;I9B0qHH;E8BlqHH;;;IAHM,8BAAA;I9B0qHH;EACF;A8B3wHD;EAEI,aAAA;E9B4wHH;A8B9wHD;EAMM,oBAAA;E9B2wHL;A8BjxHD;EASM,kBAAA;E9B2wHL;A8BtwHK;;;EAGE,gBAAA;EACA,2BAAA;E9BwwHP;A8BhwHD;EAEI,aAAA;E9BiwHH;A8BnwHD;EAIM,iBAAA;EACA,gBAAA;E9BkwHL;A8BtvHD;EACE,aAAA;E9BwvHD;A8BzvHD;EAII,aAAA;E9BwvHH;A8B5vHD;EAMM,oBAAA;EACA,oBAAA;E9ByvHL;A8BhwHD;EAYI,WAAA;EACA,YAAA;E9BuvHH;A8B3uHD;EAAA;IAPM,qBAAA;IACA,WAAA;I9BsvHH;E8BhvHH;IAJQ,kBAAA;I9BuvHL;EACF;A8B/uHD;EACE,kBAAA;E9BivHD;A8BlvHD;EAKI,iBAAA;EACA,oBAAA;E9BgvHH;A8BtvHD;;;EAYI,2BAAA;E9B+uHH;A8BjuHD;EAAA;IATM,kCAAA;IACA,4BAAA;I9B8uHH;E8BtuHH;;;IAHM,8BAAA;I9B8uHH;EACF;A8BruHD;EAEI,eAAA;E9BsuHH;A8BxuHD;EAKI,gBAAA;E9BsuHH;A8B7tHD;EAEE,kBAAA;EF3OA,4BAAA;EACC,2BAAA;E5B08HF;A+Bp8HD;EACE,oBAAA;EACA,kBAAA;EACA,qBAAA;EACA,+BAAA;E/Bs8HD;A+B97HD;EAAA;IAFI,oBAAA;I/Bo8HD;EACF;A+Br7HD;EAAA;IAFI,aAAA;I/B27HD;EACF;A+B76HD;EACE,qBAAA;EACA,qBAAA;EACA,oBAAA;EACA,mCAAA;EACA,4DAAA;UAAA,oDAAA;EAEA,mCAAA;E/B86HD;A+B56HC;EACE,kBAAA;E/B86HH;A+Bl5HD;EAAA;IAxBI,aAAA;IACA,eAAA;IACA,0BAAA;YAAA,kBAAA;I/B86HD;E+B56HC;IACE,2BAAA;IACA,yBAAA;IACA,mBAAA;IACA,8BAAA;I/B86HH;E+B36HC;IACE,qBAAA;I/B66HH;E+Bx6HC;;;IAGE,iBAAA;IACA,kBAAA;I/B06HH;EACF;A+Bt6HD;;EAGI,mBAAA;E/Bu6HH;A+Bl6HC;EAAA;;IAFI,mBAAA;I/By6HH;EACF;A+Bh6HD;;;;EAII,qBAAA;EACA,oBAAA;E/Bk6HH;A+B55HC;EAAA;;;;IAHI,iBAAA;IACA,gBAAA;I/Bs6HH;EACF;A+B15HD;EACE,eAAA;EACA,uBAAA;E/B45HD;A+Bv5HD;EAAA;IAFI,kBAAA;I/B65HD;EACF;A+Bz5HD;;EAEE,iBAAA;EACA,UAAA;EACA,SAAA;EACA,eAAA;E/B25HD;A+Br5HD;EAAA;;IAFI,kBAAA;I/B45HD;EACF;A+B15HD;EACE,QAAA;EACA,uBAAA;E/B45HD;A+B15HD;EACE,WAAA;EACA,kBAAA;EACA,uBAAA;E/B45HD;A+Bt5HD;EACE,aAAA;EACA,oBAAA;EACA,iBAAA;EACA,mBAAA;EACA,cAAA;E/Bw5HD;A+Bt5HC;;EAEE,uBAAA;E/Bw5HH;A+Bj6HD;EAaI,gBAAA;E/Bu5HH;A+B94HD;EALI;;IAEE,oBAAA;I/Bs5HH;EACF;A+B54HD;EACE,oBAAA;EACA,cAAA;EACA,oBAAA;EACA,mBAAA;EC9LA,iBAAA;EACA,oBAAA;ED+LA,+BAAA;EACA,wBAAA;EACA,+BAAA;EACA,oBAAA;E/B+4HD;A+B34HC;EACE,YAAA;E/B64HH;A+B35HD;EAmBI,gBAAA;EACA,aAAA;EACA,aAAA;EACA,oBAAA;E/B24HH;A+Bj6HD;EAyBI,iBAAA;E/B24HH;A+Br4HD;EAAA;IAFI,eAAA;I/B24HD;EACF;A+Bl4HD;EACE,qBAAA;E/Bo4HD;A+Br4HD;EAII,mBAAA;EACA,sBAAA;EACA,mBAAA;E/Bo4HH;A+Bx2HC;EAAA;IAtBI,kBAAA;IACA,aAAA;IACA,aAAA;IACA,eAAA;IACA,+BAAA;IACA,WAAA;IACA,0BAAA;YAAA,kBAAA;I/Bk4HH;E+Bl3HD;;IAbM,4BAAA;I/Bm4HL;E+Bt3HD;IAVM,mBAAA;I/Bm4HL;E+Bl4HK;;IAEE,wBAAA;I/Bo4HP;EACF;A+Bl3HD;EAAA;IAXI,aAAA;IACA,WAAA;I/Bi4HD;E+Bv3HH;IAPM,aAAA;I/Bi4HH;E+B13HH;IALQ,mBAAA;IACA,sBAAA;I/Bk4HL;EACF;A+Bv3HD;EACE,oBAAA;EACA,qBAAA;EACA,oBAAA;EACA,mCAAA;EACA,sCAAA;E1B9NA,8FAAA;EACQ,sFAAA;E2B/DR,iBAAA;EACA,oBAAA;EhCwpID;AkBvqHD;EAAA;IA9DM,uBAAA;IACA,kBAAA;IACA,wBAAA;IlByuHH;EkB7qHH;IAvDM,uBAAA;IACA,aAAA;IACA,wBAAA;IlBuuHH;EkBlrHH;IAhDM,uBAAA;IlBquHH;EkBrrHH;IA5CM,uBAAA;IACA,wBAAA;IlBouHH;EkBzrHH;;;IAtCQ,aAAA;IlBouHL;EkB9rHH;IAhCM,aAAA;IlBiuHH;EkBjsHH;IA5BM,kBAAA;IACA,wBAAA;IlBguHH;EkBrsHH;;IApBM,uBAAA;IACA,eAAA;IACA,kBAAA;IACA,wBAAA;IlB6tHH;EkB5sHH;;IAdQ,iBAAA;IlB8tHL;EkBhtHH;;IATM,oBAAA;IACA,gBAAA;IlB6tHH;EkBrtHH;IAHM,QAAA;IlB2tHH;EACF;A+Bh6HC;EAAA;IANI,oBAAA;I/B06HH;E+Bx6HG;IACE,kBAAA;I/B06HL;EACF;A+Bz5HD;EAAA;IARI,aAAA;IACA,WAAA;IACA,gBAAA;IACA,iBAAA;IACA,gBAAA;IACA,mBAAA;I1BzPF,0BAAA;IACQ,kBAAA;IL+pIP;EACF;A+B/5HD;EACE,eAAA;EHpUA,4BAAA;EACC,2BAAA;E5BsuIF;A+B/5HD;EACE,kBAAA;EHzUA,8BAAA;EACC,6BAAA;EAOD,+BAAA;EACC,8BAAA;E5BquIF;A+B35HD;EChVE,iBAAA;EACA,oBAAA;EhC8uID;A+B55HC;ECnVA,kBAAA;EACA,qBAAA;EhCkvID;A+B75HC;ECtVA,kBAAA;EACA,qBAAA;EhCsvID;A+Bv5HD;EChWE,kBAAA;EACA,qBAAA;EhC0vID;A+Bn5HD;EAAA;IAJI,aAAA;IACA,mBAAA;IACA,oBAAA;I/B25HD;EACF;A+B93HD;EAhBE;IExWA,wBAAA;IjC0vIC;E+Bj5HD;IE5WA,yBAAA;IF8WE,qBAAA;I/Bm5HD;E+Br5HD;IAKI,iBAAA;I/Bm5HH;EACF;A+B14HD;EACE,2BAAA;EACA,uBAAA;E/B44HD;A+B94HD;EAKI,gBAAA;E/B44HH;A+B34HG;;EAEE,gBAAA;EACA,+BAAA;E/B64HL;A+Bt5HD;EAcI,gBAAA;E/B24HH;A+Bz5HD;EAmBM,gBAAA;E/By4HL;A+Bv4HK;;EAEE,gBAAA;EACA,+BAAA;E/By4HP;A+Br4HK;;;EAGE,gBAAA;EACA,2BAAA;E/Bu4HP;A+Bn4HK;;;EAGE,gBAAA;EACA,+BAAA;E/Bq4HP;A+B76HD;EA8CI,uBAAA;E/Bk4HH;A+Bj4HG;;EAEE,2BAAA;E/Bm4HL;A+Bp7HD;EAoDM,2BAAA;E/Bm4HL;A+Bv7HD;;EA0DI,uBAAA;E/Bi4HH;A+B13HK;;;EAGE,2BAAA;EACA,gBAAA;E/B43HP;A+B31HC;EAAA;IAzBQ,gBAAA;I/Bw3HP;E+Bv3HO;;IAEE,gBAAA;IACA,+BAAA;I/By3HT;E+Br3HO;;;IAGE,gBAAA;IACA,2BAAA;I/Bu3HT;E+Bn3HO;;;IAGE,gBAAA;IACA,+BAAA;I/Bq3HT;EACF;A+Bv9HD;EA8GI,gBAAA;E/B42HH;A+B32HG;EACE,gBAAA;E/B62HL;A+B79HD;EAqHI,gBAAA;E/B22HH;A+B12HG;;EAEE,gBAAA;E/B42HL;A+Bx2HK;;;;EAEE,gBAAA;E/B42HP;A+Bp2HD;EACE,2BAAA;EACA,uBAAA;E/Bs2HD;A+Bx2HD;EAKI,gBAAA;E/Bs2HH;A+Br2HG;;EAEE,gBAAA;EACA,+BAAA;E/Bu2HL;A+Bh3HD;EAcI,gBAAA;E/Bq2HH;A+Bn3HD;EAmBM,gBAAA;E/Bm2HL;A+Bj2HK;;EAEE,gBAAA;EACA,+BAAA;E/Bm2HP;A+B/1HK;;;EAGE,gBAAA;EACA,2BAAA;E/Bi2HP;A+B71HK;;;EAGE,gBAAA;EACA,+BAAA;E/B+1HP;A+Bv4HD;EA+CI,uBAAA;E/B21HH;A+B11HG;;EAEE,2BAAA;E/B41HL;A+B94HD;EAqDM,2BAAA;E/B41HL;A+Bj5HD;;EA2DI,uBAAA;E/B01HH;A+Bp1HK;;;EAGE,2BAAA;EACA,gBAAA;E/Bs1HP;A+B/yHC;EAAA;IA/BQ,uBAAA;I/Bk1HP;E+BnzHD;IA5BQ,2BAAA;I/Bk1HP;E+BtzHD;IAzBQ,gBAAA;I/Bk1HP;E+Bj1HO;;IAEE,gBAAA;IACA,+BAAA;I/Bm1HT;E+B/0HO;;;IAGE,gBAAA;IACA,2BAAA;I/Bi1HT;E+B70HO;;;IAGE,gBAAA;IACA,+BAAA;I/B+0HT;EACF;A+Bv7HD;EA+GI,gBAAA;E/B20HH;A+B10HG;EACE,gBAAA;E/B40HL;A+B77HD;EAsHI,gBAAA;E/B00HH;A+Bz0HG;;EAEE,gBAAA;E/B20HL;A+Bv0HK;;;;EAEE,gBAAA;E/B20HP;AkCr9ID;EACE,mBAAA;EACA,qBAAA;EACA,kBAAA;EACA,2BAAA;EACA,oBAAA;ElCu9ID;AkC59ID;EAQI,uBAAA;ElCu9IH;AkC/9ID;EAWM,mBAAA;EACA,gBAAA;EACA,gBAAA;ElCu9IL;AkCp+ID;EAkBI,gBAAA;ElCq9IH;AmCz+ID;EACE,uBAAA;EACA,iBAAA;EACA,gBAAA;EACA,oBAAA;EnC2+ID;AmC/+ID;EAOI,iBAAA;EnC2+IH;AmCl/ID;;EAUM,oBAAA;EACA,aAAA;EACA,mBAAA;EACA,yBAAA;EACA,uBAAA;EACA,gBAAA;EACA,2BAAA;EACA,2BAAA;EACA,mBAAA;EnC4+IL;AmC1+IG;;EAGI,gBAAA;EPXN,gCAAA;EACG,6BAAA;E5Bu/IJ;AmCz+IG;;EPvBF,iCAAA;EACG,8BAAA;E5BogJJ;AmCp+IG;;;;EAEE,gBAAA;EACA,2BAAA;EACA,uBAAA;EnCw+IL;AmCl+IG;;;;;;EAGE,YAAA;EACA,gBAAA;EACA,2BAAA;EACA,uBAAA;EACA,iBAAA;EnCu+IL;AmC7hJD;;;;;;EAiEM,gBAAA;EACA,2BAAA;EACA,uBAAA;EACA,qBAAA;EnCo+IL;AmC39ID;;EC1EM,oBAAA;EACA,iBAAA;EpCyiJL;AoCviJG;;ERMF,gCAAA;EACG,6BAAA;E5BqiJJ;AoCtiJG;;ERRF,iCAAA;EACG,8BAAA;E5BkjJJ;AmCr+ID;;EC/EM,mBAAA;EACA,iBAAA;EpCwjJL;AoCtjJG;;ERMF,gCAAA;EACG,6BAAA;E5BojJJ;AoCrjJG;;ERRF,iCAAA;EACG,8BAAA;E5BikJJ;AqCpkJD;EACE,iBAAA;EACA,gBAAA;EACA,kBAAA;EACA,oBAAA;ErCskJD;AqC1kJD;EAOI,iBAAA;ErCskJH;AqC7kJD;;EAUM,uBAAA;EACA,mBAAA;EACA,2BAAA;EACA,2BAAA;EACA,qBAAA;ErCukJL;AqCrlJD;;EAmBM,uBAAA;EACA,2BAAA;ErCskJL;AqC1lJD;;EA2BM,cAAA;ErCmkJL;AqC9lJD;;EAkCM,aAAA;ErCgkJL;AqClmJD;;;;EA2CM,gBAAA;EACA,2BAAA;EACA,qBAAA;ErC6jJL;AsC3mJD;EACE,iBAAA;EACA,yBAAA;EACA,gBAAA;EACA,mBAAA;EACA,gBAAA;EACA,gBAAA;EACA,oBAAA;EACA,qBAAA;EACA,0BAAA;EACA,sBAAA;EtC6mJD;AsCzmJG;;EAEE,gBAAA;EACA,uBAAA;EACA,iBAAA;EtC2mJL;AsCtmJC;EACE,eAAA;EtCwmJH;AsCpmJC;EACE,oBAAA;EACA,WAAA;EtCsmJH;AsC/lJD;ECtCE,2BAAA;EvCwoJD;AuCroJG;;EAEE,2BAAA;EvCuoJL;AsClmJD;EC1CE,2BAAA;EvC+oJD;AuC5oJG;;EAEE,2BAAA;EvC8oJL;AsCrmJD;EC9CE,2BAAA;EvCspJD;AuCnpJG;;EAEE,2BAAA;EvCqpJL;AsCxmJD;EClDE,2BAAA;EvC6pJD;AuC1pJG;;EAEE,2BAAA;EvC4pJL;AsC3mJD;ECtDE,2BAAA;EvCoqJD;AuCjqJG;;EAEE,2BAAA;EvCmqJL;AsC9mJD;EC1DE,2BAAA;EvC2qJD;AuCxqJG;;EAEE,2BAAA;EvC0qJL;AwC5qJD;EACE,uBAAA;EACA,iBAAA;EACA,kBAAA;EACA,iBAAA;EACA,mBAAA;EACA,gBAAA;EACA,gBAAA;EACA,0BAAA;EACA,qBAAA;EACA,oBAAA;EACA,2BAAA;EACA,qBAAA;ExC8qJD;AwC3qJC;EACE,eAAA;ExC6qJH;AwCzqJC;EACE,oBAAA;EACA,WAAA;ExC2qJH;AwCxqJC;;EAEE,QAAA;EACA,kBAAA;ExC0qJH;AwCrqJG;;EAEE,gBAAA;EACA,uBAAA;EACA,iBAAA;ExCuqJL;AwClqJC;;EAEE,gBAAA;EACA,2BAAA;ExCoqJH;AwCjqJC;EACE,cAAA;ExCmqJH;AwChqJC;EACE,mBAAA;ExCkqJH;AwC/pJC;EACE,kBAAA;ExCiqJH;AyC3tJD;EACE,oBAAA;EACA,qBAAA;EACA,gBAAA;EACA,2BAAA;EzC6tJD;AyCjuJD;;EAQI,gBAAA;EzC6tJH;AyCruJD;EAYI,qBAAA;EACA,iBAAA;EACA,kBAAA;EzC4tJH;AyC1uJD;EAkBI,2BAAA;EzC2tJH;AyCxtJC;;EAEE,oBAAA;EzC0tJH;AyCjvJD;EA2BI,iBAAA;EzCytJH;AyCxsJD;EAAA;IAbI,iBAAA;IzCytJD;EyCvtJC;;IAEE,oBAAA;IACA,qBAAA;IzCytJH;EyCjtJH;;IAHM,iBAAA;IzCwtJH;EACF;A0CjwJD;EACE,gBAAA;EACA,cAAA;EACA,qBAAA;EACA,yBAAA;EACA,2BAAA;EACA,2BAAA;EACA,oBAAA;ErCiLA,6CAAA;EACK,wCAAA;EACG,qCAAA;ELmlJT;A0C7wJD;;EAaI,mBAAA;EACA,oBAAA;E1CowJH;A0ChwJC;;;EAGE,uBAAA;E1CkwJH;A0CvxJD;EA0BI,cAAA;EACA,gBAAA;E1CgwJH;A2CzxJD;EACE,eAAA;EACA,qBAAA;EACA,+BAAA;EACA,oBAAA;E3C2xJD;A2C/xJD;EAQI,eAAA;EAEA,gBAAA;E3CyxJH;A2CnyJD;EAeI,mBAAA;E3CuxJH;A2CtyJD;;EAqBI,kBAAA;E3CqxJH;A2C1yJD;EAyBI,iBAAA;E3CoxJH;A2C5wJD;;EAEE,qBAAA;E3C8wJD;A2ChxJD;;EAMI,oBAAA;EACA,WAAA;EACA,cAAA;EACA,gBAAA;E3C8wJH;A2CtwJD;ECvDE,2BAAA;EACA,uBAAA;EACA,gBAAA;E5Cg0JD;A2C3wJD;EClDI,2BAAA;E5Cg0JH;A2C9wJD;EC/CI,gBAAA;E5Cg0JH;A2C7wJD;EC3DE,2BAAA;EACA,uBAAA;EACA,gBAAA;E5C20JD;A2ClxJD;ECtDI,2BAAA;E5C20JH;A2CrxJD;ECnDI,gBAAA;E5C20JH;A2CpxJD;EC/DE,2BAAA;EACA,uBAAA;EACA,gBAAA;E5Cs1JD;A2CzxJD;EC1DI,2BAAA;E5Cs1JH;A2C5xJD;ECvDI,gBAAA;E5Cs1JH;A2C3xJD;ECnEE,2BAAA;EACA,uBAAA;EACA,gBAAA;E5Ci2JD;A2ChyJD;EC9DI,2BAAA;E5Ci2JH;A2CnyJD;EC3DI,gBAAA;E5Ci2JH;A6Cn2JD;EACE;IAAQ,6BAAA;I7Cs2JP;E6Cr2JD;IAAQ,0BAAA;I7Cw2JP;EACF;A6Cr2JD;EACE;IAAQ,6BAAA;I7Cw2JP;E6Cv2JD;IAAQ,0BAAA;I7C02JP;EACF;A6C72JD;EACE;IAAQ,6BAAA;I7Cw2JP;E6Cv2JD;IAAQ,0BAAA;I7C02JP;EACF;A6Cn2JD;EACE,kBAAA;EACA,cAAA;EACA,qBAAA;EACA,2BAAA;EACA,oBAAA;ExCsCA,wDAAA;EACQ,gDAAA;ELg0JT;A6Cl2JD;EACE,aAAA;EACA,WAAA;EACA,cAAA;EACA,iBAAA;EACA,mBAAA;EACA,gBAAA;EACA,oBAAA;EACA,2BAAA;ExCyBA,wDAAA;EACQ,gDAAA;EAyHR,qCAAA;EACK,gCAAA;EACG,6BAAA;ELotJT;A6C/1JD;;ECCI,+MAAA;EACA,0MAAA;EACA,uMAAA;EDAF,oCAAA;UAAA,4BAAA;E7Cm2JD;A6C51JD;;ExC5CE,4DAAA;EACK,uDAAA;EACG,oDAAA;EL44JT;A6Cz1JD;EErEE,2BAAA;E/Ci6JD;A+C95JC;EDgDE,+MAAA;EACA,0MAAA;EACA,uMAAA;E9Ci3JH;A6C71JD;EEzEE,2BAAA;E/Cy6JD;A+Ct6JC;EDgDE,+MAAA;EACA,0MAAA;EACA,uMAAA;E9Cy3JH;A6Cj2JD;EE7EE,2BAAA;E/Ci7JD;A+C96JC;EDgDE,+MAAA;EACA,0MAAA;EACA,uMAAA;E9Ci4JH;A6Cr2JD;EEjFE,2BAAA;E/Cy7JD;A+Ct7JC;EDgDE,+MAAA;EACA,0MAAA;EACA,uMAAA;E9Cy4JH;AgDj8JD;EAEE,kBAAA;EhDk8JD;AgDh8JC;EACE,eAAA;EhDk8JH;AgD97JD;;EAEE,SAAA;EACA,kBAAA;EhDg8JD;AgD77JD;EACE,gBAAA;EhD+7JD;AgD57JD;EACE,gBAAA;EhD87JD;AgD37JD;;EAEE,oBAAA;EhD67JD;AgD17JD;;EAEE,qBAAA;EhD47JD;AgDz7JD;;;EAGE,qBAAA;EACA,qBAAA;EhD27JD;AgDx7JD;EACE,wBAAA;EhD07JD;AgDv7JD;EACE,wBAAA;EhDy7JD;AgDr7JD;EACE,eAAA;EACA,oBAAA;EhDu7JD;AgDj7JD;EACE,iBAAA;EACA,kBAAA;EhDm7JD;AiDr+JD;EAEE,qBAAA;EACA,iBAAA;EjDs+JD;AiD99JD;EACE,oBAAA;EACA,gBAAA;EACA,oBAAA;EAEA,qBAAA;EACA,2BAAA;EACA,2BAAA;EjD+9JD;AiD59JC;ErB3BA,8BAAA;EACC,6BAAA;E5B0/JF;AiD79JC;EACE,kBAAA;ErBvBF,iCAAA;EACC,gCAAA;E5Bu/JF;AiDt9JD;EACE,gBAAA;EjDw9JD;AiDz9JD;EAII,gBAAA;EjDw9JH;AiDp9JC;;EAEE,uBAAA;EACA,gBAAA;EACA,2BAAA;EjDs9JH;AiDh9JC;;;EAGE,2BAAA;EACA,gBAAA;EACA,qBAAA;EjDk9JH;AiDv9JC;;;EASI,gBAAA;EjDm9JL;AiD59JC;;;EAYI,gBAAA;EjDq9JL;AiDh9JC;;;EAGE,YAAA;EACA,gBAAA;EACA,2BAAA;EACA,uBAAA;EjDk9JH;AiDx9JC;;;;;;;;;EAYI,gBAAA;EjDu9JL;AiDn+JC;;;EAeI,gBAAA;EjDy9JL;AkDrjKC;EACE,gBAAA;EACA,2BAAA;ElDujKH;AkDrjKG;EACE,gBAAA;ElDujKL;AkDxjKG;EAII,gBAAA;ElDujKP;AkDpjKK;;EAEE,gBAAA;EACA,2BAAA;ElDsjKP;AkDpjKK;;;EAGE,aAAA;EACA,2BAAA;EACA,uBAAA;ElDsjKP;AkD3kKC;EACE,gBAAA;EACA,2BAAA;ElD6kKH;AkD3kKG;EACE,gBAAA;ElD6kKL;AkD9kKG;EAII,gBAAA;ElD6kKP;AkD1kKK;;EAEE,gBAAA;EACA,2BAAA;ElD4kKP;AkD1kKK;;;EAGE,aAAA;EACA,2BAAA;EACA,uBAAA;ElD4kKP;AkDjmKC;EACE,gBAAA;EACA,2BAAA;ElDmmKH;AkDjmKG;EACE,gBAAA;ElDmmKL;AkDpmKG;EAII,gBAAA;ElDmmKP;AkDhmKK;;EAEE,gBAAA;EACA,2BAAA;ElDkmKP;AkDhmKK;;;EAGE,aAAA;EACA,2BAAA;EACA,uBAAA;ElDkmKP;AkDvnKC;EACE,gBAAA;EACA,2BAAA;ElDynKH;AkDvnKG;EACE,gBAAA;ElDynKL;AkD1nKG;EAII,gBAAA;ElDynKP;AkDtnKK;;EAEE,gBAAA;EACA,2BAAA;ElDwnKP;AkDtnKK;;;EAGE,aAAA;EACA,2BAAA;EACA,uBAAA;ElDwnKP;AiD5hKD;EACE,eAAA;EACA,oBAAA;EjD8hKD;AiD5hKD;EACE,kBAAA;EACA,kBAAA;EjD8hKD;AmDlpKD;EACE,qBAAA;EACA,2BAAA;EACA,+BAAA;EACA,oBAAA;E9C0DA,mDAAA;EACQ,2CAAA;EL2lKT;AmDjpKD;EACE,eAAA;EnDmpKD;AmD9oKD;EACE,oBAAA;EACA,sCAAA;EvBpBA,8BAAA;EACC,6BAAA;E5BqqKF;AmDppKD;EAMI,gBAAA;EnDipKH;AmD5oKD;EACE,eAAA;EACA,kBAAA;EACA,iBAAA;EACA,gBAAA;EnD8oKD;AmDlpKD;;;;;EAWI,gBAAA;EnD8oKH;AmDzoKD;EACE,oBAAA;EACA,2BAAA;EACA,+BAAA;EvBxCA,iCAAA;EACC,gCAAA;E5BorKF;AmDnoKD;;EAGI,kBAAA;EnDooKH;AmDvoKD;;EAMM,qBAAA;EACA,kBAAA;EnDqoKL;AmDjoKG;;EAEI,eAAA;EvBvEN,8BAAA;EACC,6BAAA;E5B2sKF;AmDhoKG;;EAEI,kBAAA;EvBtEN,iCAAA;EACC,gCAAA;E5BysKF;AmD7nKD;EAEI,qBAAA;EnD8nKH;AmD3nKD;EACE,qBAAA;EnD6nKD;AmDrnKD;;;EAII,kBAAA;EnDsnKH;AmD1nKD;;;EAOM,oBAAA;EACA,qBAAA;EnDwnKL;AmDhoKD;;EvBnGE,8BAAA;EACC,6BAAA;E5BuuKF;AmDroKD;;;;EAmBQ,6BAAA;EACA,8BAAA;EnDwnKP;AmD5oKD;;;;;;;;EAwBU,6BAAA;EnD8nKT;AmDtpKD;;;;;;;;EA4BU,8BAAA;EnDooKT;AmDhqKD;;EvB3FE,iCAAA;EACC,gCAAA;E5B+vKF;AmDrqKD;;;;EAyCQ,gCAAA;EACA,iCAAA;EnDkoKP;AmD5qKD;;;;;;;;EA8CU,gCAAA;EnDwoKT;AmDtrKD;;;;;;;;EAkDU,iCAAA;EnD8oKT;AmDhsKD;;;;EA2DI,+BAAA;EnD2oKH;AmDtsKD;;EA+DI,eAAA;EnD2oKH;AmD1sKD;;EAmEI,WAAA;EnD2oKH;AmD9sKD;;;;;;;;;;;;EA0EU,gBAAA;EnDkpKT;AmD5tKD;;;;;;;;;;;;EA8EU,iBAAA;EnD4pKT;AmD1uKD;;;;;;;;EAuFU,kBAAA;EnD6pKT;AmDpvKD;;;;;;;;EAgGU,kBAAA;EnD8pKT;AmD9vKD;EAsGI,WAAA;EACA,kBAAA;EnD2pKH;AmDjpKD;EACE,qBAAA;EnDmpKD;AmDppKD;EAKI,kBAAA;EACA,oBAAA;EnDkpKH;AmDxpKD;EASM,iBAAA;EnDkpKL;AmD3pKD;EAcI,kBAAA;EnDgpKH;AmD9pKD;;EAkBM,+BAAA;EnDgpKL;AmDlqKD;EAuBI,eAAA;EnD8oKH;AmDrqKD;EAyBM,kCAAA;EnD+oKL;AmDxoKD;ECpPE,uBAAA;EpD+3KD;AoD73KC;EACE,gBAAA;EACA,2BAAA;EACA,uBAAA;EpD+3KH;AoDl4KC;EAMI,2BAAA;EpD+3KL;AoDr4KC;EASI,gBAAA;EACA,2BAAA;EpD+3KL;AoD53KC;EAEI,8BAAA;EpD63KL;AmDvpKD;ECvPE,uBAAA;EpDi5KD;AoD/4KC;EACE,gBAAA;EACA,2BAAA;EACA,uBAAA;EpDi5KH;AoDp5KC;EAMI,2BAAA;EpDi5KL;AoDv5KC;EASI,gBAAA;EACA,2BAAA;EpDi5KL;AoD94KC;EAEI,8BAAA;EpD+4KL;AmDtqKD;EC1PE,uBAAA;EpDm6KD;AoDj6KC;EACE,gBAAA;EACA,2BAAA;EACA,uBAAA;EpDm6KH;AoDt6KC;EAMI,2BAAA;EpDm6KL;AoDz6KC;EASI,gBAAA;EACA,2BAAA;EpDm6KL;AoDh6KC;EAEI,8BAAA;EpDi6KL;AmDrrKD;EC7PE,uBAAA;EpDq7KD;AoDn7KC;EACE,gBAAA;EACA,2BAAA;EACA,uBAAA;EpDq7KH;AoDx7KC;EAMI,2BAAA;EpDq7KL;AoD37KC;EASI,gBAAA;EACA,2BAAA;EpDq7KL;AoDl7KC;EAEI,8BAAA;EpDm7KL;AmDpsKD;EChQE,uBAAA;EpDu8KD;AoDr8KC;EACE,gBAAA;EACA,2BAAA;EACA,uBAAA;EpDu8KH;AoD18KC;EAMI,2BAAA;EpDu8KL;AoD78KC;EASI,gBAAA;EACA,2BAAA;EpDu8KL;AoDp8KC;EAEI,8BAAA;EpDq8KL;AmDntKD;ECnQE,uBAAA;EpDy9KD;AoDv9KC;EACE,gBAAA;EACA,2BAAA;EACA,uBAAA;EpDy9KH;AoD59KC;EAMI,2BAAA;EpDy9KL;AoD/9KC;EASI,gBAAA;EACA,2BAAA;EpDy9KL;AoDt9KC;EAEI,8BAAA;EpDu9KL;AqDv+KD;EACE,oBAAA;EACA,gBAAA;EACA,WAAA;EACA,YAAA;EACA,kBAAA;ErDy+KD;AqD9+KD;;;;;EAYI,oBAAA;EACA,QAAA;EACA,SAAA;EACA,WAAA;EACA,cAAA;EACA,aAAA;EACA,WAAA;ErDy+KH;AqDp+KD;EACE,wBAAA;ErDs+KD;AqDl+KD;EACE,qBAAA;ErDo+KD;AsD//KD;EACE,kBAAA;EACA,eAAA;EACA,qBAAA;EACA,2BAAA;EACA,2BAAA;EACA,oBAAA;EjDwDA,yDAAA;EACQ,iDAAA;EL08KT;AsDzgLD;EASI,oBAAA;EACA,mCAAA;EtDmgLH;AsD9/KD;EACE,eAAA;EACA,oBAAA;EtDggLD;AsD9/KD;EACE,cAAA;EACA,oBAAA;EtDggLD;AuDthLD;EACE,cAAA;EACA,iBAAA;EACA,mBAAA;EACA,gBAAA;EACA,gBAAA;EACA,8BAAA;EjCRA,cAAA;EAGA,2BAAA;EtB+hLD;AuDvhLC;;EAEE,gBAAA;EACA,uBAAA;EACA,iBAAA;EjCfF,cAAA;EAGA,2BAAA;EtBuiLD;AuDnhLC;EACE,YAAA;EACA,iBAAA;EACA,yBAAA;EACA,WAAA;EACA,0BAAA;EvDqhLH;AwD1iLD;EACE,kBAAA;ExD4iLD;AwDxiLD;EACE,eAAA;EACA,kBAAA;EACA,iBAAA;EACA,QAAA;EACA,UAAA;EACA,WAAA;EACA,SAAA;EACA,eAAA;EACA,mCAAA;EAIA,YAAA;ExDuiLD;AwDpiLC;EnD+GA,uCAAA;EACI,mCAAA;EACC,kCAAA;EACG,+BAAA;EAkER,qDAAA;EAEK,2CAAA;EACG,qCAAA;ELu3KT;AwD1iLC;EnD2GA,oCAAA;EACI,gCAAA;EACC,+BAAA;EACG,4BAAA;ELk8KT;AwD9iLD;EACE,oBAAA;EACA,kBAAA;ExDgjLD;AwD5iLD;EACE,oBAAA;EACA,aAAA;EACA,cAAA;ExD8iLD;AwD1iLD;EACE,oBAAA;EACA,2BAAA;EACA,2BAAA;EACA,sCAAA;EACA,oBAAA;EnDaA,kDAAA;EACQ,0CAAA;EmDZR,sCAAA;UAAA,8BAAA;EAEA,YAAA;ExD4iLD;AwDxiLD;EACE,iBAAA;EACA,QAAA;EACA,UAAA;EACA,WAAA;EACA,SAAA;EACA,eAAA;EACA,2BAAA;ExD0iLD;AwDxiLC;ElCrEA,YAAA;EAGA,0BAAA;EtB8mLD;AwD3iLC;ElCtEA,cAAA;EAGA,2BAAA;EtBknLD;AwD1iLD;EACE,eAAA;EACA,kCAAA;EACA,2BAAA;ExD4iLD;AwDziLD;EACE,kBAAA;ExD2iLD;AwDviLD;EACE,WAAA;EACA,yBAAA;ExDyiLD;AwDpiLD;EACE,oBAAA;EACA,eAAA;ExDsiLD;AwDliLD;EACE,eAAA;EACA,mBAAA;EACA,+BAAA;ExDoiLD;AwDviLD;EAQI,kBAAA;EACA,kBAAA;ExDkiLH;AwD3iLD;EAaI,mBAAA;ExDiiLH;AwD9iLD;EAiBI,gBAAA;ExDgiLH;AwD3hLD;EACE,oBAAA;EACA,cAAA;EACA,aAAA;EACA,cAAA;EACA,kBAAA;ExD6hLD;AwD3gLD;EAZE;IACE,cAAA;IACA,mBAAA;IxD0hLD;EwDxhLD;InDvEA,mDAAA;IACQ,2CAAA;ILkmLP;EwDvhLD;IAAY,cAAA;IxD0hLX;EACF;AwDrhLD;EAFE;IAAY,cAAA;IxD2hLX;EACF;AyD1qLD;EACE,oBAAA;EACA,eAAA;EACA,gBAAA;EAEA,6DAAA;EACA,iBAAA;EACA,qBAAA;EACA,kBAAA;EnCXA,YAAA;EAGA,0BAAA;EtBqrLD;AyD1qLC;EnCdA,cAAA;EAGA,2BAAA;EtByrLD;AyD7qLC;EAAW,kBAAA;EAAmB,gBAAA;EzDirL/B;AyDhrLC;EAAW,kBAAA;EAAmB,gBAAA;EzDorL/B;AyDnrLC;EAAW,iBAAA;EAAmB,gBAAA;EzDurL/B;AyDtrLC;EAAW,mBAAA;EAAmB,gBAAA;EzD0rL/B;AyDtrLD;EACE,kBAAA;EACA,kBAAA;EACA,gBAAA;EACA,oBAAA;EACA,uBAAA;EACA,2BAAA;EACA,oBAAA;EzDwrLD;AyDprLD;EACE,oBAAA;EACA,UAAA;EACA,WAAA;EACA,2BAAA;EACA,qBAAA;EzDsrLD;AyDlrLC;EACE,WAAA;EACA,WAAA;EACA,mBAAA;EACA,yBAAA;EACA,2BAAA;EzDorLH;AyDlrLC;EACE,WAAA;EACA,YAAA;EACA,qBAAA;EACA,yBAAA;EACA,2BAAA;EzDorLH;AyDlrLC;EACE,WAAA;EACA,WAAA;EACA,qBAAA;EACA,yBAAA;EACA,2BAAA;EzDorLH;AyDlrLC;EACE,UAAA;EACA,SAAA;EACA,kBAAA;EACA,6BAAA;EACA,6BAAA;EzDorLH;AyDlrLC;EACE,UAAA;EACA,UAAA;EACA,kBAAA;EACA,6BAAA;EACA,4BAAA;EzDorLH;AyDlrLC;EACE,QAAA;EACA,WAAA;EACA,mBAAA;EACA,yBAAA;EACA,8BAAA;EzDorLH;AyDlrLC;EACE,QAAA;EACA,YAAA;EACA,kBAAA;EACA,yBAAA;EACA,8BAAA;EzDorLH;AyDlrLC;EACE,QAAA;EACA,WAAA;EACA,kBAAA;EACA,yBAAA;EACA,8BAAA;EzDorLH;A0DlxLD;EACE,oBAAA;EACA,QAAA;EACA,SAAA;EACA,eAAA;EACA,eAAA;EACA,kBAAA;EACA,cAAA;EAEA,6DAAA;EACA,iBAAA;EACA,qBAAA;EACA,yBAAA;EACA,kBAAA;EACA,2BAAA;EACA,sCAAA;UAAA,8BAAA;EACA,2BAAA;EACA,sCAAA;EACA,oBAAA;ErD6CA,mDAAA;EACQ,2CAAA;EqD1CR,qBAAA;E1DkxLD;A0D/wLC;EAAY,mBAAA;E1DkxLb;A0DjxLC;EAAY,mBAAA;E1DoxLb;A0DnxLC;EAAY,kBAAA;E1DsxLb;A0DrxLC;EAAY,oBAAA;E1DwxLb;A0DrxLD;EACE,WAAA;EACA,mBAAA;EACA,iBAAA;EACA,2BAAA;EACA,kCAAA;EACA,4BAAA;E1DuxLD;A0DpxLD;EACE,mBAAA;E1DsxLD;A0D9wLC;;EAEE,oBAAA;EACA,gBAAA;EACA,UAAA;EACA,WAAA;EACA,2BAAA;EACA,qBAAA;E1DgxLH;A0D7wLD;EACE,oBAAA;E1D+wLD;A0D7wLD;EACE,oBAAA;EACA,aAAA;E1D+wLD;A0D3wLC;EACE,WAAA;EACA,oBAAA;EACA,wBAAA;EACA,2BAAA;EACA,uCAAA;EACA,eAAA;E1D6wLH;A0D5wLG;EACE,cAAA;EACA,aAAA;EACA,oBAAA;EACA,wBAAA;EACA,2BAAA;E1D8wLL;A0D3wLC;EACE,UAAA;EACA,aAAA;EACA,mBAAA;EACA,sBAAA;EACA,6BAAA;EACA,yCAAA;E1D6wLH;A0D5wLG;EACE,cAAA;EACA,WAAA;EACA,eAAA;EACA,sBAAA;EACA,6BAAA;E1D8wLL;A0D3wLC;EACE,WAAA;EACA,oBAAA;EACA,qBAAA;EACA,8BAAA;EACA,0CAAA;EACA,YAAA;E1D6wLH;A0D5wLG;EACE,cAAA;EACA,UAAA;EACA,oBAAA;EACA,qBAAA;EACA,8BAAA;E1D8wLL;A0D1wLC;EACE,UAAA;EACA,cAAA;EACA,mBAAA;EACA,uBAAA;EACA,4BAAA;EACA,wCAAA;E1D4wLH;A0D3wLG;EACE,cAAA;EACA,YAAA;EACA,uBAAA;EACA,4BAAA;EACA,eAAA;E1D6wLL;A2D14LD;EACE,oBAAA;E3D44LD;A2Dz4LD;EACE,oBAAA;EACA,kBAAA;EACA,aAAA;E3D24LD;A2D94LD;EAMI,eAAA;EACA,oBAAA;EtD6KF,2CAAA;EACK,sCAAA;EACG,mCAAA;EL+tLT;A2Dr5LD;;EAcM,gBAAA;E3D24LL;A2Dj3LC;EAAA;ItDiKA,wDAAA;IAEK,8CAAA;IACG,wCAAA;IA7JR,qCAAA;IAEQ,6BAAA;IA+GR,2BAAA;IAEQ,mBAAA;ILowLP;E2D/4LG;;ItDmHJ,4CAAA;IACQ,oCAAA;IsDjHF,SAAA;I3Dk5LL;E2Dh5LG;;ItD8GJ,6CAAA;IACQ,qCAAA;IsD5GF,SAAA;I3Dm5LL;E2Dj5LG;;;ItDyGJ,yCAAA;IACQ,iCAAA;IsDtGF,SAAA;I3Do5LL;EACF;A2D17LD;;;EA6CI,gBAAA;E3Dk5LH;A2D/7LD;EAiDI,SAAA;E3Di5LH;A2Dl8LD;;EAsDI,oBAAA;EACA,QAAA;EACA,aAAA;E3Dg5LH;A2Dx8LD;EA4DI,YAAA;E3D+4LH;A2D38LD;EA+DI,aAAA;E3D+4LH;A2D98LD;;EAmEI,SAAA;E3D+4LH;A2Dl9LD;EAuEI,aAAA;E3D84LH;A2Dr9LD;EA0EI,YAAA;E3D84LH;A2Dt4LD;EACE,oBAAA;EACA,QAAA;EACA,SAAA;EACA,WAAA;EACA,YAAA;ErC9FA,cAAA;EAGA,2BAAA;EqC6FA,iBAAA;EACA,gBAAA;EACA,oBAAA;EACA,2CAAA;E3Dy4LD;A2Dp4LC;EblGE,oGAAA;EACA,+FAAA;EACA,sHAAA;EAAA,gGAAA;EACA,6BAAA;EACA,wHAAA;E9Cy+LH;A2Dx4LC;EACE,YAAA;EACA,UAAA;EbvGA,oGAAA;EACA,+FAAA;EACA,sHAAA;EAAA,gGAAA;EACA,6BAAA;EACA,wHAAA;E9Ck/LH;A2D14LC;;EAEE,YAAA;EACA,gBAAA;EACA,uBAAA;ErCtHF,cAAA;EAGA,2BAAA;EtBigMD;A2D36LD;;;;EAsCI,oBAAA;EACA,UAAA;EACA,YAAA;EACA,uBAAA;E3D24LH;A2Dp7LD;;EA6CI,WAAA;EACA,oBAAA;E3D24LH;A2Dz7LD;;EAkDI,YAAA;EACA,qBAAA;E3D24LH;A2D97LD;;EAuDI,aAAA;EACA,cAAA;EACA,mBAAA;EACA,gBAAA;EACA,oBAAA;E3D24LH;A2Dt4LG;EACE,kBAAA;E3Dw4LL;A2Dp4LG;EACE,kBAAA;E3Ds4LL;A2D53LD;EACE,oBAAA;EACA,cAAA;EACA,WAAA;EACA,aAAA;EACA,YAAA;EACA,mBAAA;EACA,iBAAA;EACA,kBAAA;EACA,oBAAA;E3D83LD;A2Dv4LD;EAYI,uBAAA;EACA,aAAA;EACA,cAAA;EACA,aAAA;EACA,qBAAA;EACA,2BAAA;EACA,qBAAA;EACA,iBAAA;EAWA,2BAAA;EACA,oCAAA;E3Do3LH;A2Dn5LD;EAkCI,WAAA;EACA,aAAA;EACA,cAAA;EACA,2BAAA;E3Do3LH;A2D72LD;EACE,oBAAA;EACA,WAAA;EACA,YAAA;EACA,cAAA;EACA,aAAA;EACA,mBAAA;EACA,sBAAA;EACA,gBAAA;EACA,oBAAA;EACA,2CAAA;E3D+2LD;A2D92LC;EACE,mBAAA;E3Dg3LH;A2Dv0LD;EAhCE;;;;IAKI,aAAA;IACA,cAAA;IACA,mBAAA;IACA,iBAAA;I3Dy2LH;E2Dj3LD;;IAYI,oBAAA;I3Dy2LH;E2Dr3LD;;IAgBI,qBAAA;I3Dy2LH;E2Dp2LD;IACE,WAAA;IACA,YAAA;IACA,sBAAA;I3Ds2LD;E2Dl2LD;IACE,cAAA;I3Do2LD;EACF;A4DlmMC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAEE,cAAA;EACA,gBAAA;E5DgoMH;A4D9nMC;;;;;;;;;;;;;;;EACE,aAAA;E5D8oMH;AiCtpMD;E4BRE,gBAAA;EACA,mBAAA;EACA,oBAAA;E7DiqMD;AiCxpMD;EACE,yBAAA;EjC0pMD;AiCxpMD;EACE,wBAAA;EjC0pMD;AiClpMD;EACE,0BAAA;EjCopMD;AiClpMD;EACE,2BAAA;EjCopMD;AiClpMD;EACE,oBAAA;EjCopMD;AiClpMD;E6BzBE,aAAA;EACA,oBAAA;EACA,mBAAA;EACA,+BAAA;EACA,WAAA;E9D8qMD;AiChpMD;EACE,0BAAA;EjCkpMD;AiC3oMD;EACE,iBAAA;EjC6oMD;A+D9qMD;EACE,qBAAA;E/DgrMD;A+D1qMD;;;;ECdE,0BAAA;EhE8rMD;A+DzqMD;;;;;;;;;;;;EAYE,0BAAA;E/D2qMD;A+DpqMD;EAAA;IChDE,2BAAA;IhEwtMC;EgEvtMD;IAAU,gBAAA;IhE0tMT;EgEztMD;IAAU,+BAAA;IhE4tMT;EgE3tMD;;IACU,gCAAA;IhE8tMT;EACF;A+D9qMD;EAAA;IAFI,2BAAA;I/DorMD;EACF;A+D9qMD;EAAA;IAFI,4BAAA;I/DorMD;EACF;A+D9qMD;EAAA;IAFI,kCAAA;I/DorMD;EACF;A+D7qMD;EAAA;ICrEE,2BAAA;IhEsvMC;EgErvMD;IAAU,gBAAA;IhEwvMT;EgEvvMD;IAAU,+BAAA;IhE0vMT;EgEzvMD;;IACU,gCAAA;IhE4vMT;EACF;A+DvrMD;EAAA;IAFI,2BAAA;I/D6rMD;EACF;A+DvrMD;EAAA;IAFI,4BAAA;I/D6rMD;EACF;A+DvrMD;EAAA;IAFI,kCAAA;I/D6rMD;EACF;A+DtrMD;EAAA;IC1FE,2BAAA;IhEoxMC;EgEnxMD;IAAU,gBAAA;IhEsxMT;EgErxMD;IAAU,+BAAA;IhEwxMT;EgEvxMD;;IACU,gCAAA;IhE0xMT;EACF;A+DhsMD;EAAA;IAFI,2BAAA;I/DssMD;EACF;A+DhsMD;EAAA;IAFI,4BAAA;I/DssMD;EACF;A+DhsMD;EAAA;IAFI,kCAAA;I/DssMD;EACF;A+D/rMD;EAAA;IC/GE,2BAAA;IhEkzMC;EgEjzMD;IAAU,gBAAA;IhEozMT;EgEnzMD;IAAU,+BAAA;IhEszMT;EgErzMD;;IACU,gCAAA;IhEwzMT;EACF;A+DzsMD;EAAA;IAFI,2BAAA;I/D+sMD;EACF;A+DzsMD;EAAA;IAFI,4BAAA;I/D+sMD;EACF;A+DzsMD;EAAA;IAFI,kCAAA;I/D+sMD;EACF;A+DxsMD;EAAA;IC5HE,0BAAA;IhEw0MC;EACF;A+DxsMD;EAAA;ICjIE,0BAAA;IhE60MC;EACF;A+DxsMD;EAAA;ICtIE,0BAAA;IhEk1MC;EACF;A+DxsMD;EAAA;IC3IE,0BAAA;IhEu1MC;EACF;A+DrsMD;ECnJE,0BAAA;EhE21MD;A+DlsMD;EAAA;ICjKE,2BAAA;IhEu2MC;EgEt2MD;IAAU,gBAAA;IhEy2MT;EgEx2MD;IAAU,+BAAA;IhE22MT;EgE12MD;;IACU,gCAAA;IhE62MT;EACF;A+DhtMD;EACE,0BAAA;E/DktMD;A+D7sMD;EAAA;IAFI,2BAAA;I/DmtMD;EACF;A+DjtMD;EACE,0BAAA;E/DmtMD;A+D9sMD;EAAA;IAFI,4BAAA;I/DotMD;EACF;A+DltMD;EACE,0BAAA;E/DotMD;A+D/sMD;EAAA;IAFI,kCAAA;I/DqtMD;EACF;A+D9sMD;EAAA;ICpLE,0BAAA;IhEs4MC;EACF","file":"bootstrap.css","sourcesContent":["/*! normalize.css v3.0.2 | MIT License | git.io/normalize */\nhtml {\n font-family: sans-serif;\n -ms-text-size-adjust: 100%;\n -webkit-text-size-adjust: 100%;\n}\nbody {\n margin: 0;\n}\narticle,\naside,\ndetails,\nfigcaption,\nfigure,\nfooter,\nheader,\nhgroup,\nmain,\nmenu,\nnav,\nsection,\nsummary {\n display: block;\n}\naudio,\ncanvas,\nprogress,\nvideo {\n display: inline-block;\n vertical-align: baseline;\n}\naudio:not([controls]) {\n display: none;\n height: 0;\n}\n[hidden],\ntemplate {\n display: none;\n}\na {\n background-color: transparent;\n}\na:active,\na:hover {\n outline: 0;\n}\nabbr[title] {\n border-bottom: 1px dotted;\n}\nb,\nstrong {\n font-weight: bold;\n}\ndfn {\n font-style: italic;\n}\nh1 {\n font-size: 2em;\n margin: 0.67em 0;\n}\nmark {\n background: #ff0;\n color: #000;\n}\nsmall {\n font-size: 80%;\n}\nsub,\nsup {\n font-size: 75%;\n line-height: 0;\n position: relative;\n vertical-align: baseline;\n}\nsup {\n top: -0.5em;\n}\nsub {\n bottom: -0.25em;\n}\nimg {\n border: 0;\n}\nsvg:not(:root) {\n overflow: hidden;\n}\nfigure {\n margin: 1em 40px;\n}\nhr {\n -moz-box-sizing: content-box;\n box-sizing: content-box;\n height: 0;\n}\npre {\n overflow: auto;\n}\ncode,\nkbd,\npre,\nsamp {\n font-family: monospace, monospace;\n font-size: 1em;\n}\nbutton,\ninput,\noptgroup,\nselect,\ntextarea {\n color: inherit;\n font: inherit;\n margin: 0;\n}\nbutton {\n overflow: visible;\n}\nbutton,\nselect {\n text-transform: none;\n}\nbutton,\nhtml input[type=\"button\"],\ninput[type=\"reset\"],\ninput[type=\"submit\"] {\n -webkit-appearance: button;\n cursor: pointer;\n}\nbutton[disabled],\nhtml input[disabled] {\n cursor: default;\n}\nbutton::-moz-focus-inner,\ninput::-moz-focus-inner {\n border: 0;\n padding: 0;\n}\ninput {\n line-height: normal;\n}\ninput[type=\"checkbox\"],\ninput[type=\"radio\"] {\n box-sizing: border-box;\n padding: 0;\n}\ninput[type=\"number\"]::-webkit-inner-spin-button,\ninput[type=\"number\"]::-webkit-outer-spin-button {\n height: auto;\n}\ninput[type=\"search\"] {\n -webkit-appearance: textfield;\n -moz-box-sizing: content-box;\n -webkit-box-sizing: content-box;\n box-sizing: content-box;\n}\ninput[type=\"search\"]::-webkit-search-cancel-button,\ninput[type=\"search\"]::-webkit-search-decoration {\n -webkit-appearance: none;\n}\nfieldset {\n border: 1px solid #c0c0c0;\n margin: 0 2px;\n padding: 0.35em 0.625em 0.75em;\n}\nlegend {\n border: 0;\n padding: 0;\n}\ntextarea {\n overflow: auto;\n}\noptgroup {\n font-weight: bold;\n}\ntable {\n border-collapse: collapse;\n border-spacing: 0;\n}\ntd,\nth {\n padding: 0;\n}\n/*! Source: https://github.com/h5bp/html5-boilerplate/blob/master/src/css/main.css */\n@media print {\n *,\n *:before,\n *:after {\n background: transparent !important;\n color: #000 !important;\n box-shadow: none !important;\n text-shadow: none !important;\n }\n a,\n a:visited {\n text-decoration: underline;\n }\n a[href]:after {\n content: \" (\" attr(href) \")\";\n }\n abbr[title]:after {\n content: \" (\" attr(title) \")\";\n }\n a[href^=\"#\"]:after,\n a[href^=\"javascript:\"]:after {\n content: \"\";\n }\n pre,\n blockquote {\n border: 1px solid #999;\n page-break-inside: avoid;\n }\n thead {\n display: table-header-group;\n }\n tr,\n img {\n page-break-inside: avoid;\n }\n img {\n max-width: 100% !important;\n }\n p,\n h2,\n h3 {\n orphans: 3;\n widows: 3;\n }\n h2,\n h3 {\n page-break-after: avoid;\n }\n select {\n background: #fff !important;\n }\n .navbar {\n display: none;\n }\n .btn > .caret,\n .dropup > .btn > .caret {\n border-top-color: #000 !important;\n }\n .label {\n border: 1px solid #000;\n }\n .table {\n border-collapse: collapse !important;\n }\n .table td,\n .table th {\n background-color: #fff !important;\n }\n .table-bordered th,\n .table-bordered td {\n border: 1px solid #ddd !important;\n }\n}\n@font-face {\n font-family: 'Glyphicons Halflings';\n src: url('../fonts/glyphicons-halflings-regular.eot');\n src: url('../fonts/glyphicons-halflings-regular.eot?#iefix') format('embedded-opentype'), url('../fonts/glyphicons-halflings-regular.woff2') format('woff2'), url('../fonts/glyphicons-halflings-regular.woff') format('woff'), url('../fonts/glyphicons-halflings-regular.ttf') format('truetype'), url('../fonts/glyphicons-halflings-regular.svg#glyphicons_halflingsregular') format('svg');\n}\n.glyphicon {\n position: relative;\n top: 1px;\n display: inline-block;\n font-family: 'Glyphicons Halflings';\n font-style: normal;\n font-weight: normal;\n line-height: 1;\n -webkit-font-smoothing: antialiased;\n -moz-osx-font-smoothing: grayscale;\n}\n.glyphicon-asterisk:before {\n content: \"\\2a\";\n}\n.glyphicon-plus:before {\n content: \"\\2b\";\n}\n.glyphicon-euro:before,\n.glyphicon-eur:before {\n content: \"\\20ac\";\n}\n.glyphicon-minus:before {\n content: \"\\2212\";\n}\n.glyphicon-cloud:before {\n content: \"\\2601\";\n}\n.glyphicon-envelope:before {\n content: \"\\2709\";\n}\n.glyphicon-pencil:before {\n content: \"\\270f\";\n}\n.glyphicon-glass:before {\n content: \"\\e001\";\n}\n.glyphicon-music:before {\n content: \"\\e002\";\n}\n.glyphicon-search:before {\n content: \"\\e003\";\n}\n.glyphicon-heart:before {\n content: \"\\e005\";\n}\n.glyphicon-star:before {\n content: \"\\e006\";\n}\n.glyphicon-star-empty:before {\n content: \"\\e007\";\n}\n.glyphicon-user:before {\n content: \"\\e008\";\n}\n.glyphicon-film:before {\n content: \"\\e009\";\n}\n.glyphicon-th-large:before {\n content: \"\\e010\";\n}\n.glyphicon-th:before {\n content: \"\\e011\";\n}\n.glyphicon-th-list:before {\n content: \"\\e012\";\n}\n.glyphicon-ok:before {\n content: \"\\e013\";\n}\n.glyphicon-remove:before {\n content: \"\\e014\";\n}\n.glyphicon-zoom-in:before {\n content: \"\\e015\";\n}\n.glyphicon-zoom-out:before {\n content: \"\\e016\";\n}\n.glyphicon-off:before {\n content: \"\\e017\";\n}\n.glyphicon-signal:before {\n content: \"\\e018\";\n}\n.glyphicon-cog:before {\n content: \"\\e019\";\n}\n.glyphicon-trash:before {\n content: \"\\e020\";\n}\n.glyphicon-home:before {\n content: \"\\e021\";\n}\n.glyphicon-file:before {\n content: \"\\e022\";\n}\n.glyphicon-time:before {\n content: \"\\e023\";\n}\n.glyphicon-road:before {\n content: \"\\e024\";\n}\n.glyphicon-download-alt:before {\n content: \"\\e025\";\n}\n.glyphicon-download:before {\n content: \"\\e026\";\n}\n.glyphicon-upload:before {\n content: \"\\e027\";\n}\n.glyphicon-inbox:before {\n content: \"\\e028\";\n}\n.glyphicon-play-circle:before {\n content: \"\\e029\";\n}\n.glyphicon-repeat:before {\n content: \"\\e030\";\n}\n.glyphicon-refresh:before {\n content: \"\\e031\";\n}\n.glyphicon-list-alt:before {\n content: \"\\e032\";\n}\n.glyphicon-lock:before {\n content: \"\\e033\";\n}\n.glyphicon-flag:before {\n content: \"\\e034\";\n}\n.glyphicon-headphones:before {\n content: \"\\e035\";\n}\n.glyphicon-volume-off:before {\n content: \"\\e036\";\n}\n.glyphicon-volume-down:before {\n content: \"\\e037\";\n}\n.glyphicon-volume-up:before {\n content: \"\\e038\";\n}\n.glyphicon-qrcode:before {\n content: \"\\e039\";\n}\n.glyphicon-barcode:before {\n content: \"\\e040\";\n}\n.glyphicon-tag:before {\n content: \"\\e041\";\n}\n.glyphicon-tags:before {\n content: \"\\e042\";\n}\n.glyphicon-book:before {\n content: \"\\e043\";\n}\n.glyphicon-bookmark:before {\n content: \"\\e044\";\n}\n.glyphicon-print:before {\n content: \"\\e045\";\n}\n.glyphicon-camera:before {\n content: \"\\e046\";\n}\n.glyphicon-font:before {\n content: \"\\e047\";\n}\n.glyphicon-bold:before {\n content: \"\\e048\";\n}\n.glyphicon-italic:before {\n content: \"\\e049\";\n}\n.glyphicon-text-height:before {\n content: \"\\e050\";\n}\n.glyphicon-text-width:before {\n content: \"\\e051\";\n}\n.glyphicon-align-left:before {\n content: \"\\e052\";\n}\n.glyphicon-align-center:before {\n content: \"\\e053\";\n}\n.glyphicon-align-right:before {\n content: \"\\e054\";\n}\n.glyphicon-align-justify:before {\n content: \"\\e055\";\n}\n.glyphicon-list:before {\n content: \"\\e056\";\n}\n.glyphicon-indent-left:before {\n content: \"\\e057\";\n}\n.glyphicon-indent-right:before {\n content: \"\\e058\";\n}\n.glyphicon-facetime-video:before {\n content: \"\\e059\";\n}\n.glyphicon-picture:before {\n content: \"\\e060\";\n}\n.glyphicon-map-marker:before {\n content: \"\\e062\";\n}\n.glyphicon-adjust:before {\n content: \"\\e063\";\n}\n.glyphicon-tint:before {\n content: \"\\e064\";\n}\n.glyphicon-edit:before {\n content: \"\\e065\";\n}\n.glyphicon-share:before {\n content: \"\\e066\";\n}\n.glyphicon-check:before {\n content: \"\\e067\";\n}\n.glyphicon-move:before {\n content: \"\\e068\";\n}\n.glyphicon-step-backward:before {\n content: \"\\e069\";\n}\n.glyphicon-fast-backward:before {\n content: \"\\e070\";\n}\n.glyphicon-backward:before {\n content: \"\\e071\";\n}\n.glyphicon-play:before {\n content: \"\\e072\";\n}\n.glyphicon-pause:before {\n content: \"\\e073\";\n}\n.glyphicon-stop:before {\n content: \"\\e074\";\n}\n.glyphicon-forward:before {\n content: \"\\e075\";\n}\n.glyphicon-fast-forward:before {\n content: \"\\e076\";\n}\n.glyphicon-step-forward:before {\n content: \"\\e077\";\n}\n.glyphicon-eject:before {\n content: \"\\e078\";\n}\n.glyphicon-chevron-left:before {\n content: \"\\e079\";\n}\n.glyphicon-chevron-right:before {\n content: \"\\e080\";\n}\n.glyphicon-plus-sign:before {\n content: \"\\e081\";\n}\n.glyphicon-minus-sign:before {\n content: \"\\e082\";\n}\n.glyphicon-remove-sign:before {\n content: \"\\e083\";\n}\n.glyphicon-ok-sign:before {\n content: \"\\e084\";\n}\n.glyphicon-question-sign:before {\n content: \"\\e085\";\n}\n.glyphicon-info-sign:before {\n content: \"\\e086\";\n}\n.glyphicon-screenshot:before {\n content: \"\\e087\";\n}\n.glyphicon-remove-circle:before {\n content: \"\\e088\";\n}\n.glyphicon-ok-circle:before {\n content: \"\\e089\";\n}\n.glyphicon-ban-circle:before {\n content: \"\\e090\";\n}\n.glyphicon-arrow-left:before {\n content: \"\\e091\";\n}\n.glyphicon-arrow-right:before {\n content: \"\\e092\";\n}\n.glyphicon-arrow-up:before {\n content: \"\\e093\";\n}\n.glyphicon-arrow-down:before {\n content: \"\\e094\";\n}\n.glyphicon-share-alt:before {\n content: \"\\e095\";\n}\n.glyphicon-resize-full:before {\n content: \"\\e096\";\n}\n.glyphicon-resize-small:before {\n content: \"\\e097\";\n}\n.glyphicon-exclamation-sign:before {\n content: \"\\e101\";\n}\n.glyphicon-gift:before {\n content: \"\\e102\";\n}\n.glyphicon-leaf:before {\n content: \"\\e103\";\n}\n.glyphicon-fire:before {\n content: \"\\e104\";\n}\n.glyphicon-eye-open:before {\n content: \"\\e105\";\n}\n.glyphicon-eye-close:before {\n content: \"\\e106\";\n}\n.glyphicon-warning-sign:before {\n content: \"\\e107\";\n}\n.glyphicon-plane:before {\n content: \"\\e108\";\n}\n.glyphicon-calendar:before {\n content: \"\\e109\";\n}\n.glyphicon-random:before {\n content: \"\\e110\";\n}\n.glyphicon-comment:before {\n content: \"\\e111\";\n}\n.glyphicon-magnet:before {\n content: \"\\e112\";\n}\n.glyphicon-chevron-up:before {\n content: \"\\e113\";\n}\n.glyphicon-chevron-down:before {\n content: \"\\e114\";\n}\n.glyphicon-retweet:before {\n content: \"\\e115\";\n}\n.glyphicon-shopping-cart:before {\n content: \"\\e116\";\n}\n.glyphicon-folder-close:before {\n content: \"\\e117\";\n}\n.glyphicon-folder-open:before {\n content: \"\\e118\";\n}\n.glyphicon-resize-vertical:before {\n content: \"\\e119\";\n}\n.glyphicon-resize-horizontal:before {\n content: \"\\e120\";\n}\n.glyphicon-hdd:before {\n content: \"\\e121\";\n}\n.glyphicon-bullhorn:before {\n content: \"\\e122\";\n}\n.glyphicon-bell:before {\n content: \"\\e123\";\n}\n.glyphicon-certificate:before {\n content: \"\\e124\";\n}\n.glyphicon-thumbs-up:before {\n content: \"\\e125\";\n}\n.glyphicon-thumbs-down:before {\n content: \"\\e126\";\n}\n.glyphicon-hand-right:before {\n content: \"\\e127\";\n}\n.glyphicon-hand-left:before {\n content: \"\\e128\";\n}\n.glyphicon-hand-up:before {\n content: \"\\e129\";\n}\n.glyphicon-hand-down:before {\n content: \"\\e130\";\n}\n.glyphicon-circle-arrow-right:before {\n content: \"\\e131\";\n}\n.glyphicon-circle-arrow-left:before {\n content: \"\\e132\";\n}\n.glyphicon-circle-arrow-up:before {\n content: \"\\e133\";\n}\n.glyphicon-circle-arrow-down:before {\n content: \"\\e134\";\n}\n.glyphicon-globe:before {\n content: \"\\e135\";\n}\n.glyphicon-wrench:before {\n content: \"\\e136\";\n}\n.glyphicon-tasks:before {\n content: \"\\e137\";\n}\n.glyphicon-filter:before {\n content: \"\\e138\";\n}\n.glyphicon-briefcase:before {\n content: \"\\e139\";\n}\n.glyphicon-fullscreen:before {\n content: \"\\e140\";\n}\n.glyphicon-dashboard:before {\n content: \"\\e141\";\n}\n.glyphicon-paperclip:before {\n content: \"\\e142\";\n}\n.glyphicon-heart-empty:before {\n content: \"\\e143\";\n}\n.glyphicon-link:before {\n content: \"\\e144\";\n}\n.glyphicon-phone:before {\n content: \"\\e145\";\n}\n.glyphicon-pushpin:before {\n content: \"\\e146\";\n}\n.glyphicon-usd:before {\n content: \"\\e148\";\n}\n.glyphicon-gbp:before {\n content: \"\\e149\";\n}\n.glyphicon-sort:before {\n content: \"\\e150\";\n}\n.glyphicon-sort-by-alphabet:before {\n content: \"\\e151\";\n}\n.glyphicon-sort-by-alphabet-alt:before {\n content: \"\\e152\";\n}\n.glyphicon-sort-by-order:before {\n content: \"\\e153\";\n}\n.glyphicon-sort-by-order-alt:before {\n content: \"\\e154\";\n}\n.glyphicon-sort-by-attributes:before {\n content: \"\\e155\";\n}\n.glyphicon-sort-by-attributes-alt:before {\n content: \"\\e156\";\n}\n.glyphicon-unchecked:before {\n content: \"\\e157\";\n}\n.glyphicon-expand:before {\n content: \"\\e158\";\n}\n.glyphicon-collapse-down:before {\n content: \"\\e159\";\n}\n.glyphicon-collapse-up:before {\n content: \"\\e160\";\n}\n.glyphicon-log-in:before {\n content: \"\\e161\";\n}\n.glyphicon-flash:before {\n content: \"\\e162\";\n}\n.glyphicon-log-out:before {\n content: \"\\e163\";\n}\n.glyphicon-new-window:before {\n content: \"\\e164\";\n}\n.glyphicon-record:before {\n content: \"\\e165\";\n}\n.glyphicon-save:before {\n content: \"\\e166\";\n}\n.glyphicon-open:before {\n content: \"\\e167\";\n}\n.glyphicon-saved:before {\n content: \"\\e168\";\n}\n.glyphicon-import:before {\n content: \"\\e169\";\n}\n.glyphicon-export:before {\n content: \"\\e170\";\n}\n.glyphicon-send:before {\n content: \"\\e171\";\n}\n.glyphicon-floppy-disk:before {\n content: \"\\e172\";\n}\n.glyphicon-floppy-saved:before {\n content: \"\\e173\";\n}\n.glyphicon-floppy-remove:before {\n content: \"\\e174\";\n}\n.glyphicon-floppy-save:before {\n content: \"\\e175\";\n}\n.glyphicon-floppy-open:before {\n content: \"\\e176\";\n}\n.glyphicon-credit-card:before {\n content: \"\\e177\";\n}\n.glyphicon-transfer:before {\n content: \"\\e178\";\n}\n.glyphicon-cutlery:before {\n content: \"\\e179\";\n}\n.glyphicon-header:before {\n content: \"\\e180\";\n}\n.glyphicon-compressed:before {\n content: \"\\e181\";\n}\n.glyphicon-earphone:before {\n content: \"\\e182\";\n}\n.glyphicon-phone-alt:before {\n content: \"\\e183\";\n}\n.glyphicon-tower:before {\n content: \"\\e184\";\n}\n.glyphicon-stats:before {\n content: \"\\e185\";\n}\n.glyphicon-sd-video:before {\n content: \"\\e186\";\n}\n.glyphicon-hd-video:before {\n content: \"\\e187\";\n}\n.glyphicon-subtitles:before {\n content: \"\\e188\";\n}\n.glyphicon-sound-stereo:before {\n content: \"\\e189\";\n}\n.glyphicon-sound-dolby:before {\n content: \"\\e190\";\n}\n.glyphicon-sound-5-1:before {\n content: \"\\e191\";\n}\n.glyphicon-sound-6-1:before {\n content: \"\\e192\";\n}\n.glyphicon-sound-7-1:before {\n content: \"\\e193\";\n}\n.glyphicon-copyright-mark:before {\n content: \"\\e194\";\n}\n.glyphicon-registration-mark:before {\n content: \"\\e195\";\n}\n.glyphicon-cloud-download:before {\n content: \"\\e197\";\n}\n.glyphicon-cloud-upload:before {\n content: \"\\e198\";\n}\n.glyphicon-tree-conifer:before {\n content: \"\\e199\";\n}\n.glyphicon-tree-deciduous:before {\n content: \"\\e200\";\n}\n.glyphicon-cd:before {\n content: \"\\e201\";\n}\n.glyphicon-save-file:before {\n content: \"\\e202\";\n}\n.glyphicon-open-file:before {\n content: \"\\e203\";\n}\n.glyphicon-level-up:before {\n content: \"\\e204\";\n}\n.glyphicon-copy:before {\n content: \"\\e205\";\n}\n.glyphicon-paste:before {\n content: \"\\e206\";\n}\n.glyphicon-alert:before {\n content: \"\\e209\";\n}\n.glyphicon-equalizer:before {\n content: \"\\e210\";\n}\n.glyphicon-king:before {\n content: \"\\e211\";\n}\n.glyphicon-queen:before {\n content: \"\\e212\";\n}\n.glyphicon-pawn:before {\n content: \"\\e213\";\n}\n.glyphicon-bishop:before {\n content: \"\\e214\";\n}\n.glyphicon-knight:before {\n content: \"\\e215\";\n}\n.glyphicon-baby-formula:before {\n content: \"\\e216\";\n}\n.glyphicon-tent:before {\n content: \"\\26fa\";\n}\n.glyphicon-blackboard:before {\n content: \"\\e218\";\n}\n.glyphicon-bed:before {\n content: \"\\e219\";\n}\n.glyphicon-apple:before {\n content: \"\\f8ff\";\n}\n.glyphicon-erase:before {\n content: \"\\e221\";\n}\n.glyphicon-hourglass:before {\n content: \"\\231b\";\n}\n.glyphicon-lamp:before {\n content: \"\\e223\";\n}\n.glyphicon-duplicate:before {\n content: \"\\e224\";\n}\n.glyphicon-piggy-bank:before {\n content: \"\\e225\";\n}\n.glyphicon-scissors:before {\n content: \"\\e226\";\n}\n.glyphicon-bitcoin:before {\n content: \"\\e227\";\n}\n.glyphicon-btc:before {\n content: \"\\e227\";\n}\n.glyphicon-xbt:before {\n content: \"\\e227\";\n}\n.glyphicon-yen:before {\n content: \"\\00a5\";\n}\n.glyphicon-jpy:before {\n content: \"\\00a5\";\n}\n.glyphicon-ruble:before {\n content: \"\\20bd\";\n}\n.glyphicon-rub:before {\n content: \"\\20bd\";\n}\n.glyphicon-scale:before {\n content: \"\\e230\";\n}\n.glyphicon-ice-lolly:before {\n content: \"\\e231\";\n}\n.glyphicon-ice-lolly-tasted:before {\n content: \"\\e232\";\n}\n.glyphicon-education:before {\n content: \"\\e233\";\n}\n.glyphicon-option-horizontal:before {\n content: \"\\e234\";\n}\n.glyphicon-option-vertical:before {\n content: \"\\e235\";\n}\n.glyphicon-menu-hamburger:before {\n content: \"\\e236\";\n}\n.glyphicon-modal-window:before {\n content: \"\\e237\";\n}\n.glyphicon-oil:before {\n content: \"\\e238\";\n}\n.glyphicon-grain:before {\n content: \"\\e239\";\n}\n.glyphicon-sunglasses:before {\n content: \"\\e240\";\n}\n.glyphicon-text-size:before {\n content: \"\\e241\";\n}\n.glyphicon-text-color:before {\n content: \"\\e242\";\n}\n.glyphicon-text-background:before {\n content: \"\\e243\";\n}\n.glyphicon-object-align-top:before {\n content: \"\\e244\";\n}\n.glyphicon-object-align-bottom:before {\n content: \"\\e245\";\n}\n.glyphicon-object-align-horizontal:before {\n content: \"\\e246\";\n}\n.glyphicon-object-align-left:before {\n content: \"\\e247\";\n}\n.glyphicon-object-align-vertical:before {\n content: \"\\e248\";\n}\n.glyphicon-object-align-right:before {\n content: \"\\e249\";\n}\n.glyphicon-triangle-right:before {\n content: \"\\e250\";\n}\n.glyphicon-triangle-left:before {\n content: \"\\e251\";\n}\n.glyphicon-triangle-bottom:before {\n content: \"\\e252\";\n}\n.glyphicon-triangle-top:before {\n content: \"\\e253\";\n}\n.glyphicon-console:before {\n content: \"\\e254\";\n}\n.glyphicon-superscript:before {\n content: \"\\e255\";\n}\n.glyphicon-subscript:before {\n content: \"\\e256\";\n}\n.glyphicon-menu-left:before {\n content: \"\\e257\";\n}\n.glyphicon-menu-right:before {\n content: \"\\e258\";\n}\n.glyphicon-menu-down:before {\n content: \"\\e259\";\n}\n.glyphicon-menu-up:before {\n content: \"\\e260\";\n}\n* {\n -webkit-box-sizing: border-box;\n -moz-box-sizing: border-box;\n box-sizing: border-box;\n}\n*:before,\n*:after {\n -webkit-box-sizing: border-box;\n -moz-box-sizing: border-box;\n box-sizing: border-box;\n}\nhtml {\n font-size: 10px;\n -webkit-tap-highlight-color: rgba(0, 0, 0, 0);\n}\nbody {\n font-family: \"Helvetica Neue\", Helvetica, Arial, sans-serif;\n font-size: 14px;\n line-height: 1.42857143;\n color: #333333;\n background-color: #ffffff;\n}\ninput,\nbutton,\nselect,\ntextarea {\n font-family: inherit;\n font-size: inherit;\n line-height: inherit;\n}\na {\n color: #337ab7;\n text-decoration: none;\n}\na:hover,\na:focus {\n color: #23527c;\n text-decoration: underline;\n}\na:focus {\n outline: thin dotted;\n outline: 5px auto -webkit-focus-ring-color;\n outline-offset: -2px;\n}\nfigure {\n margin: 0;\n}\nimg {\n vertical-align: middle;\n}\n.img-responsive,\n.thumbnail > img,\n.thumbnail a > img,\n.carousel-inner > .item > img,\n.carousel-inner > .item > a > img {\n display: block;\n max-width: 100%;\n height: auto;\n}\n.img-rounded {\n border-radius: 6px;\n}\n.img-thumbnail {\n padding: 4px;\n line-height: 1.42857143;\n background-color: #ffffff;\n border: 1px solid #dddddd;\n border-radius: 4px;\n -webkit-transition: all 0.2s ease-in-out;\n -o-transition: all 0.2s ease-in-out;\n transition: all 0.2s ease-in-out;\n display: inline-block;\n max-width: 100%;\n height: auto;\n}\n.img-circle {\n border-radius: 50%;\n}\nhr {\n margin-top: 20px;\n margin-bottom: 20px;\n border: 0;\n border-top: 1px solid #eeeeee;\n}\n.sr-only {\n position: absolute;\n width: 1px;\n height: 1px;\n margin: -1px;\n padding: 0;\n overflow: hidden;\n clip: rect(0, 0, 0, 0);\n border: 0;\n}\n.sr-only-focusable:active,\n.sr-only-focusable:focus {\n position: static;\n width: auto;\n height: auto;\n margin: 0;\n overflow: visible;\n clip: auto;\n}\n[role=\"button\"] {\n cursor: pointer;\n}\nh1,\nh2,\nh3,\nh4,\nh5,\nh6,\n.h1,\n.h2,\n.h3,\n.h4,\n.h5,\n.h6 {\n font-family: inherit;\n font-weight: 500;\n line-height: 1.1;\n color: inherit;\n}\nh1 small,\nh2 small,\nh3 small,\nh4 small,\nh5 small,\nh6 small,\n.h1 small,\n.h2 small,\n.h3 small,\n.h4 small,\n.h5 small,\n.h6 small,\nh1 .small,\nh2 .small,\nh3 .small,\nh4 .small,\nh5 .small,\nh6 .small,\n.h1 .small,\n.h2 .small,\n.h3 .small,\n.h4 .small,\n.h5 .small,\n.h6 .small {\n font-weight: normal;\n line-height: 1;\n color: #777777;\n}\nh1,\n.h1,\nh2,\n.h2,\nh3,\n.h3 {\n margin-top: 20px;\n margin-bottom: 10px;\n}\nh1 small,\n.h1 small,\nh2 small,\n.h2 small,\nh3 small,\n.h3 small,\nh1 .small,\n.h1 .small,\nh2 .small,\n.h2 .small,\nh3 .small,\n.h3 .small {\n font-size: 65%;\n}\nh4,\n.h4,\nh5,\n.h5,\nh6,\n.h6 {\n margin-top: 10px;\n margin-bottom: 10px;\n}\nh4 small,\n.h4 small,\nh5 small,\n.h5 small,\nh6 small,\n.h6 small,\nh4 .small,\n.h4 .small,\nh5 .small,\n.h5 .small,\nh6 .small,\n.h6 .small {\n font-size: 75%;\n}\nh1,\n.h1 {\n font-size: 36px;\n}\nh2,\n.h2 {\n font-size: 30px;\n}\nh3,\n.h3 {\n font-size: 24px;\n}\nh4,\n.h4 {\n font-size: 18px;\n}\nh5,\n.h5 {\n font-size: 14px;\n}\nh6,\n.h6 {\n font-size: 12px;\n}\np {\n margin: 0 0 10px;\n}\n.lead {\n margin-bottom: 20px;\n font-size: 16px;\n font-weight: 300;\n line-height: 1.4;\n}\n@media (min-width: 768px) {\n .lead {\n font-size: 21px;\n }\n}\nsmall,\n.small {\n font-size: 85%;\n}\nmark,\n.mark {\n background-color: #fcf8e3;\n padding: .2em;\n}\n.text-left {\n text-align: left;\n}\n.text-right {\n text-align: right;\n}\n.text-center {\n text-align: center;\n}\n.text-justify {\n text-align: justify;\n}\n.text-nowrap {\n white-space: nowrap;\n}\n.text-lowercase {\n text-transform: lowercase;\n}\n.text-uppercase {\n text-transform: uppercase;\n}\n.text-capitalize {\n text-transform: capitalize;\n}\n.text-muted {\n color: #777777;\n}\n.text-primary {\n color: #337ab7;\n}\na.text-primary:hover {\n color: #286090;\n}\n.text-success {\n color: #3c763d;\n}\na.text-success:hover {\n color: #2b542c;\n}\n.text-info {\n color: #31708f;\n}\na.text-info:hover {\n color: #245269;\n}\n.text-warning {\n color: #8a6d3b;\n}\na.text-warning:hover {\n color: #66512c;\n}\n.text-danger {\n color: #a94442;\n}\na.text-danger:hover {\n color: #843534;\n}\n.bg-primary {\n color: #fff;\n background-color: #337ab7;\n}\na.bg-primary:hover {\n background-color: #286090;\n}\n.bg-success {\n background-color: #dff0d8;\n}\na.bg-success:hover {\n background-color: #c1e2b3;\n}\n.bg-info {\n background-color: #d9edf7;\n}\na.bg-info:hover {\n background-color: #afd9ee;\n}\n.bg-warning {\n background-color: #fcf8e3;\n}\na.bg-warning:hover {\n background-color: #f7ecb5;\n}\n.bg-danger {\n background-color: #f2dede;\n}\na.bg-danger:hover {\n background-color: #e4b9b9;\n}\n.page-header {\n padding-bottom: 9px;\n margin: 40px 0 20px;\n border-bottom: 1px solid #eeeeee;\n}\nul,\nol {\n margin-top: 0;\n margin-bottom: 10px;\n}\nul ul,\nol ul,\nul ol,\nol ol {\n margin-bottom: 0;\n}\n.list-unstyled {\n padding-left: 0;\n list-style: none;\n}\n.list-inline {\n padding-left: 0;\n list-style: none;\n margin-left: -5px;\n}\n.list-inline > li {\n display: inline-block;\n padding-left: 5px;\n padding-right: 5px;\n}\ndl {\n margin-top: 0;\n margin-bottom: 20px;\n}\ndt,\ndd {\n line-height: 1.42857143;\n}\ndt {\n font-weight: bold;\n}\ndd {\n margin-left: 0;\n}\n@media (min-width: 768px) {\n .dl-horizontal dt {\n float: left;\n width: 160px;\n clear: left;\n text-align: right;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n }\n .dl-horizontal dd {\n margin-left: 180px;\n }\n}\nabbr[title],\nabbr[data-original-title] {\n cursor: help;\n border-bottom: 1px dotted #777777;\n}\n.initialism {\n font-size: 90%;\n text-transform: uppercase;\n}\nblockquote {\n padding: 10px 20px;\n margin: 0 0 20px;\n font-size: 17.5px;\n border-left: 5px solid #eeeeee;\n}\nblockquote p:last-child,\nblockquote ul:last-child,\nblockquote ol:last-child {\n margin-bottom: 0;\n}\nblockquote footer,\nblockquote small,\nblockquote .small {\n display: block;\n font-size: 80%;\n line-height: 1.42857143;\n color: #777777;\n}\nblockquote footer:before,\nblockquote small:before,\nblockquote .small:before {\n content: '\\2014 \\00A0';\n}\n.blockquote-reverse,\nblockquote.pull-right {\n padding-right: 15px;\n padding-left: 0;\n border-right: 5px solid #eeeeee;\n border-left: 0;\n text-align: right;\n}\n.blockquote-reverse footer:before,\nblockquote.pull-right footer:before,\n.blockquote-reverse small:before,\nblockquote.pull-right small:before,\n.blockquote-reverse .small:before,\nblockquote.pull-right .small:before {\n content: '';\n}\n.blockquote-reverse footer:after,\nblockquote.pull-right footer:after,\n.blockquote-reverse small:after,\nblockquote.pull-right small:after,\n.blockquote-reverse .small:after,\nblockquote.pull-right .small:after {\n content: '\\00A0 \\2014';\n}\naddress {\n margin-bottom: 20px;\n font-style: normal;\n line-height: 1.42857143;\n}\ncode,\nkbd,\npre,\nsamp {\n font-family: Menlo, Monaco, Consolas, \"Courier New\", monospace;\n}\ncode {\n padding: 2px 4px;\n font-size: 90%;\n color: #c7254e;\n background-color: #f9f2f4;\n border-radius: 4px;\n}\nkbd {\n padding: 2px 4px;\n font-size: 90%;\n color: #ffffff;\n background-color: #333333;\n border-radius: 3px;\n box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.25);\n}\nkbd kbd {\n padding: 0;\n font-size: 100%;\n font-weight: bold;\n box-shadow: none;\n}\npre {\n display: block;\n padding: 9.5px;\n margin: 0 0 10px;\n font-size: 13px;\n line-height: 1.42857143;\n word-break: break-all;\n word-wrap: break-word;\n color: #333333;\n background-color: #f5f5f5;\n border: 1px solid #cccccc;\n border-radius: 4px;\n}\npre code {\n padding: 0;\n font-size: inherit;\n color: inherit;\n white-space: pre-wrap;\n background-color: transparent;\n border-radius: 0;\n}\n.pre-scrollable {\n max-height: 340px;\n overflow-y: scroll;\n}\n.container {\n margin-right: auto;\n margin-left: auto;\n padding-left: 15px;\n padding-right: 15px;\n}\n@media (min-width: 768px) {\n .container {\n width: 750px;\n }\n}\n@media (min-width: 992px) {\n .container {\n width: 970px;\n }\n}\n@media (min-width: 1200px) {\n .container {\n width: 1170px;\n }\n}\n.container-fluid {\n margin-right: auto;\n margin-left: auto;\n padding-left: 15px;\n padding-right: 15px;\n}\n.row {\n margin-left: -15px;\n margin-right: -15px;\n}\n.col-xs-1, .col-sm-1, .col-md-1, .col-lg-1, .col-xs-2, .col-sm-2, .col-md-2, .col-lg-2, .col-xs-3, .col-sm-3, .col-md-3, .col-lg-3, .col-xs-4, .col-sm-4, .col-md-4, .col-lg-4, .col-xs-5, .col-sm-5, .col-md-5, .col-lg-5, .col-xs-6, .col-sm-6, .col-md-6, .col-lg-6, .col-xs-7, .col-sm-7, .col-md-7, .col-lg-7, .col-xs-8, .col-sm-8, .col-md-8, .col-lg-8, .col-xs-9, .col-sm-9, .col-md-9, .col-lg-9, .col-xs-10, .col-sm-10, .col-md-10, .col-lg-10, .col-xs-11, .col-sm-11, .col-md-11, .col-lg-11, .col-xs-12, .col-sm-12, .col-md-12, .col-lg-12 {\n position: relative;\n min-height: 1px;\n padding-left: 15px;\n padding-right: 15px;\n}\n.col-xs-1, .col-xs-2, .col-xs-3, .col-xs-4, .col-xs-5, .col-xs-6, .col-xs-7, .col-xs-8, .col-xs-9, .col-xs-10, .col-xs-11, .col-xs-12 {\n float: left;\n}\n.col-xs-12 {\n width: 100%;\n}\n.col-xs-11 {\n width: 91.66666667%;\n}\n.col-xs-10 {\n width: 83.33333333%;\n}\n.col-xs-9 {\n width: 75%;\n}\n.col-xs-8 {\n width: 66.66666667%;\n}\n.col-xs-7 {\n width: 58.33333333%;\n}\n.col-xs-6 {\n width: 50%;\n}\n.col-xs-5 {\n width: 41.66666667%;\n}\n.col-xs-4 {\n width: 33.33333333%;\n}\n.col-xs-3 {\n width: 25%;\n}\n.col-xs-2 {\n width: 16.66666667%;\n}\n.col-xs-1 {\n width: 8.33333333%;\n}\n.col-xs-pull-12 {\n right: 100%;\n}\n.col-xs-pull-11 {\n right: 91.66666667%;\n}\n.col-xs-pull-10 {\n right: 83.33333333%;\n}\n.col-xs-pull-9 {\n right: 75%;\n}\n.col-xs-pull-8 {\n right: 66.66666667%;\n}\n.col-xs-pull-7 {\n right: 58.33333333%;\n}\n.col-xs-pull-6 {\n right: 50%;\n}\n.col-xs-pull-5 {\n right: 41.66666667%;\n}\n.col-xs-pull-4 {\n right: 33.33333333%;\n}\n.col-xs-pull-3 {\n right: 25%;\n}\n.col-xs-pull-2 {\n right: 16.66666667%;\n}\n.col-xs-pull-1 {\n right: 8.33333333%;\n}\n.col-xs-pull-0 {\n right: auto;\n}\n.col-xs-push-12 {\n left: 100%;\n}\n.col-xs-push-11 {\n left: 91.66666667%;\n}\n.col-xs-push-10 {\n left: 83.33333333%;\n}\n.col-xs-push-9 {\n left: 75%;\n}\n.col-xs-push-8 {\n left: 66.66666667%;\n}\n.col-xs-push-7 {\n left: 58.33333333%;\n}\n.col-xs-push-6 {\n left: 50%;\n}\n.col-xs-push-5 {\n left: 41.66666667%;\n}\n.col-xs-push-4 {\n left: 33.33333333%;\n}\n.col-xs-push-3 {\n left: 25%;\n}\n.col-xs-push-2 {\n left: 16.66666667%;\n}\n.col-xs-push-1 {\n left: 8.33333333%;\n}\n.col-xs-push-0 {\n left: auto;\n}\n.col-xs-offset-12 {\n margin-left: 100%;\n}\n.col-xs-offset-11 {\n margin-left: 91.66666667%;\n}\n.col-xs-offset-10 {\n margin-left: 83.33333333%;\n}\n.col-xs-offset-9 {\n margin-left: 75%;\n}\n.col-xs-offset-8 {\n margin-left: 66.66666667%;\n}\n.col-xs-offset-7 {\n margin-left: 58.33333333%;\n}\n.col-xs-offset-6 {\n margin-left: 50%;\n}\n.col-xs-offset-5 {\n margin-left: 41.66666667%;\n}\n.col-xs-offset-4 {\n margin-left: 33.33333333%;\n}\n.col-xs-offset-3 {\n margin-left: 25%;\n}\n.col-xs-offset-2 {\n margin-left: 16.66666667%;\n}\n.col-xs-offset-1 {\n margin-left: 8.33333333%;\n}\n.col-xs-offset-0 {\n margin-left: 0%;\n}\n@media (min-width: 768px) {\n .col-sm-1, .col-sm-2, .col-sm-3, .col-sm-4, .col-sm-5, .col-sm-6, .col-sm-7, .col-sm-8, .col-sm-9, .col-sm-10, .col-sm-11, .col-sm-12 {\n float: left;\n }\n .col-sm-12 {\n width: 100%;\n }\n .col-sm-11 {\n width: 91.66666667%;\n }\n .col-sm-10 {\n width: 83.33333333%;\n }\n .col-sm-9 {\n width: 75%;\n }\n .col-sm-8 {\n width: 66.66666667%;\n }\n .col-sm-7 {\n width: 58.33333333%;\n }\n .col-sm-6 {\n width: 50%;\n }\n .col-sm-5 {\n width: 41.66666667%;\n }\n .col-sm-4 {\n width: 33.33333333%;\n }\n .col-sm-3 {\n width: 25%;\n }\n .col-sm-2 {\n width: 16.66666667%;\n }\n .col-sm-1 {\n width: 8.33333333%;\n }\n .col-sm-pull-12 {\n right: 100%;\n }\n .col-sm-pull-11 {\n right: 91.66666667%;\n }\n .col-sm-pull-10 {\n right: 83.33333333%;\n }\n .col-sm-pull-9 {\n right: 75%;\n }\n .col-sm-pull-8 {\n right: 66.66666667%;\n }\n .col-sm-pull-7 {\n right: 58.33333333%;\n }\n .col-sm-pull-6 {\n right: 50%;\n }\n .col-sm-pull-5 {\n right: 41.66666667%;\n }\n .col-sm-pull-4 {\n right: 33.33333333%;\n }\n .col-sm-pull-3 {\n right: 25%;\n }\n .col-sm-pull-2 {\n right: 16.66666667%;\n }\n .col-sm-pull-1 {\n right: 8.33333333%;\n }\n .col-sm-pull-0 {\n right: auto;\n }\n .col-sm-push-12 {\n left: 100%;\n }\n .col-sm-push-11 {\n left: 91.66666667%;\n }\n .col-sm-push-10 {\n left: 83.33333333%;\n }\n .col-sm-push-9 {\n left: 75%;\n }\n .col-sm-push-8 {\n left: 66.66666667%;\n }\n .col-sm-push-7 {\n left: 58.33333333%;\n }\n .col-sm-push-6 {\n left: 50%;\n }\n .col-sm-push-5 {\n left: 41.66666667%;\n }\n .col-sm-push-4 {\n left: 33.33333333%;\n }\n .col-sm-push-3 {\n left: 25%;\n }\n .col-sm-push-2 {\n left: 16.66666667%;\n }\n .col-sm-push-1 {\n left: 8.33333333%;\n }\n .col-sm-push-0 {\n left: auto;\n }\n .col-sm-offset-12 {\n margin-left: 100%;\n }\n .col-sm-offset-11 {\n margin-left: 91.66666667%;\n }\n .col-sm-offset-10 {\n margin-left: 83.33333333%;\n }\n .col-sm-offset-9 {\n margin-left: 75%;\n }\n .col-sm-offset-8 {\n margin-left: 66.66666667%;\n }\n .col-sm-offset-7 {\n margin-left: 58.33333333%;\n }\n .col-sm-offset-6 {\n margin-left: 50%;\n }\n .col-sm-offset-5 {\n margin-left: 41.66666667%;\n }\n .col-sm-offset-4 {\n margin-left: 33.33333333%;\n }\n .col-sm-offset-3 {\n margin-left: 25%;\n }\n .col-sm-offset-2 {\n margin-left: 16.66666667%;\n }\n .col-sm-offset-1 {\n margin-left: 8.33333333%;\n }\n .col-sm-offset-0 {\n margin-left: 0%;\n }\n}\n@media (min-width: 992px) {\n .col-md-1, .col-md-2, .col-md-3, .col-md-4, .col-md-5, .col-md-6, .col-md-7, .col-md-8, .col-md-9, .col-md-10, .col-md-11, .col-md-12 {\n float: left;\n }\n .col-md-12 {\n width: 100%;\n }\n .col-md-11 {\n width: 91.66666667%;\n }\n .col-md-10 {\n width: 83.33333333%;\n }\n .col-md-9 {\n width: 75%;\n }\n .col-md-8 {\n width: 66.66666667%;\n }\n .col-md-7 {\n width: 58.33333333%;\n }\n .col-md-6 {\n width: 50%;\n }\n .col-md-5 {\n width: 41.66666667%;\n }\n .col-md-4 {\n width: 33.33333333%;\n }\n .col-md-3 {\n width: 25%;\n }\n .col-md-2 {\n width: 16.66666667%;\n }\n .col-md-1 {\n width: 8.33333333%;\n }\n .col-md-pull-12 {\n right: 100%;\n }\n .col-md-pull-11 {\n right: 91.66666667%;\n }\n .col-md-pull-10 {\n right: 83.33333333%;\n }\n .col-md-pull-9 {\n right: 75%;\n }\n .col-md-pull-8 {\n right: 66.66666667%;\n }\n .col-md-pull-7 {\n right: 58.33333333%;\n }\n .col-md-pull-6 {\n right: 50%;\n }\n .col-md-pull-5 {\n right: 41.66666667%;\n }\n .col-md-pull-4 {\n right: 33.33333333%;\n }\n .col-md-pull-3 {\n right: 25%;\n }\n .col-md-pull-2 {\n right: 16.66666667%;\n }\n .col-md-pull-1 {\n right: 8.33333333%;\n }\n .col-md-pull-0 {\n right: auto;\n }\n .col-md-push-12 {\n left: 100%;\n }\n .col-md-push-11 {\n left: 91.66666667%;\n }\n .col-md-push-10 {\n left: 83.33333333%;\n }\n .col-md-push-9 {\n left: 75%;\n }\n .col-md-push-8 {\n left: 66.66666667%;\n }\n .col-md-push-7 {\n left: 58.33333333%;\n }\n .col-md-push-6 {\n left: 50%;\n }\n .col-md-push-5 {\n left: 41.66666667%;\n }\n .col-md-push-4 {\n left: 33.33333333%;\n }\n .col-md-push-3 {\n left: 25%;\n }\n .col-md-push-2 {\n left: 16.66666667%;\n }\n .col-md-push-1 {\n left: 8.33333333%;\n }\n .col-md-push-0 {\n left: auto;\n }\n .col-md-offset-12 {\n margin-left: 100%;\n }\n .col-md-offset-11 {\n margin-left: 91.66666667%;\n }\n .col-md-offset-10 {\n margin-left: 83.33333333%;\n }\n .col-md-offset-9 {\n margin-left: 75%;\n }\n .col-md-offset-8 {\n margin-left: 66.66666667%;\n }\n .col-md-offset-7 {\n margin-left: 58.33333333%;\n }\n .col-md-offset-6 {\n margin-left: 50%;\n }\n .col-md-offset-5 {\n margin-left: 41.66666667%;\n }\n .col-md-offset-4 {\n margin-left: 33.33333333%;\n }\n .col-md-offset-3 {\n margin-left: 25%;\n }\n .col-md-offset-2 {\n margin-left: 16.66666667%;\n }\n .col-md-offset-1 {\n margin-left: 8.33333333%;\n }\n .col-md-offset-0 {\n margin-left: 0%;\n }\n}\n@media (min-width: 1200px) {\n .col-lg-1, .col-lg-2, .col-lg-3, .col-lg-4, .col-lg-5, .col-lg-6, .col-lg-7, .col-lg-8, .col-lg-9, .col-lg-10, .col-lg-11, .col-lg-12 {\n float: left;\n }\n .col-lg-12 {\n width: 100%;\n }\n .col-lg-11 {\n width: 91.66666667%;\n }\n .col-lg-10 {\n width: 83.33333333%;\n }\n .col-lg-9 {\n width: 75%;\n }\n .col-lg-8 {\n width: 66.66666667%;\n }\n .col-lg-7 {\n width: 58.33333333%;\n }\n .col-lg-6 {\n width: 50%;\n }\n .col-lg-5 {\n width: 41.66666667%;\n }\n .col-lg-4 {\n width: 33.33333333%;\n }\n .col-lg-3 {\n width: 25%;\n }\n .col-lg-2 {\n width: 16.66666667%;\n }\n .col-lg-1 {\n width: 8.33333333%;\n }\n .col-lg-pull-12 {\n right: 100%;\n }\n .col-lg-pull-11 {\n right: 91.66666667%;\n }\n .col-lg-pull-10 {\n right: 83.33333333%;\n }\n .col-lg-pull-9 {\n right: 75%;\n }\n .col-lg-pull-8 {\n right: 66.66666667%;\n }\n .col-lg-pull-7 {\n right: 58.33333333%;\n }\n .col-lg-pull-6 {\n right: 50%;\n }\n .col-lg-pull-5 {\n right: 41.66666667%;\n }\n .col-lg-pull-4 {\n right: 33.33333333%;\n }\n .col-lg-pull-3 {\n right: 25%;\n }\n .col-lg-pull-2 {\n right: 16.66666667%;\n }\n .col-lg-pull-1 {\n right: 8.33333333%;\n }\n .col-lg-pull-0 {\n right: auto;\n }\n .col-lg-push-12 {\n left: 100%;\n }\n .col-lg-push-11 {\n left: 91.66666667%;\n }\n .col-lg-push-10 {\n left: 83.33333333%;\n }\n .col-lg-push-9 {\n left: 75%;\n }\n .col-lg-push-8 {\n left: 66.66666667%;\n }\n .col-lg-push-7 {\n left: 58.33333333%;\n }\n .col-lg-push-6 {\n left: 50%;\n }\n .col-lg-push-5 {\n left: 41.66666667%;\n }\n .col-lg-push-4 {\n left: 33.33333333%;\n }\n .col-lg-push-3 {\n left: 25%;\n }\n .col-lg-push-2 {\n left: 16.66666667%;\n }\n .col-lg-push-1 {\n left: 8.33333333%;\n }\n .col-lg-push-0 {\n left: auto;\n }\n .col-lg-offset-12 {\n margin-left: 100%;\n }\n .col-lg-offset-11 {\n margin-left: 91.66666667%;\n }\n .col-lg-offset-10 {\n margin-left: 83.33333333%;\n }\n .col-lg-offset-9 {\n margin-left: 75%;\n }\n .col-lg-offset-8 {\n margin-left: 66.66666667%;\n }\n .col-lg-offset-7 {\n margin-left: 58.33333333%;\n }\n .col-lg-offset-6 {\n margin-left: 50%;\n }\n .col-lg-offset-5 {\n margin-left: 41.66666667%;\n }\n .col-lg-offset-4 {\n margin-left: 33.33333333%;\n }\n .col-lg-offset-3 {\n margin-left: 25%;\n }\n .col-lg-offset-2 {\n margin-left: 16.66666667%;\n }\n .col-lg-offset-1 {\n margin-left: 8.33333333%;\n }\n .col-lg-offset-0 {\n margin-left: 0%;\n }\n}\ntable {\n background-color: transparent;\n}\ncaption {\n padding-top: 8px;\n padding-bottom: 8px;\n color: #777777;\n text-align: left;\n}\nth {\n text-align: left;\n}\n.table {\n width: 100%;\n max-width: 100%;\n margin-bottom: 20px;\n}\n.table > thead > tr > th,\n.table > tbody > tr > th,\n.table > tfoot > tr > th,\n.table > thead > tr > td,\n.table > tbody > tr > td,\n.table > tfoot > tr > td {\n padding: 8px;\n line-height: 1.42857143;\n vertical-align: top;\n border-top: 1px solid #dddddd;\n}\n.table > thead > tr > th {\n vertical-align: bottom;\n border-bottom: 2px solid #dddddd;\n}\n.table > caption + thead > tr:first-child > th,\n.table > colgroup + thead > tr:first-child > th,\n.table > thead:first-child > tr:first-child > th,\n.table > caption + thead > tr:first-child > td,\n.table > colgroup + thead > tr:first-child > td,\n.table > thead:first-child > tr:first-child > td {\n border-top: 0;\n}\n.table > tbody + tbody {\n border-top: 2px solid #dddddd;\n}\n.table .table {\n background-color: #ffffff;\n}\n.table-condensed > thead > tr > th,\n.table-condensed > tbody > tr > th,\n.table-condensed > tfoot > tr > th,\n.table-condensed > thead > tr > td,\n.table-condensed > tbody > tr > td,\n.table-condensed > tfoot > tr > td {\n padding: 5px;\n}\n.table-bordered {\n border: 1px solid #dddddd;\n}\n.table-bordered > thead > tr > th,\n.table-bordered > tbody > tr > th,\n.table-bordered > tfoot > tr > th,\n.table-bordered > thead > tr > td,\n.table-bordered > tbody > tr > td,\n.table-bordered > tfoot > tr > td {\n border: 1px solid #dddddd;\n}\n.table-bordered > thead > tr > th,\n.table-bordered > thead > tr > td {\n border-bottom-width: 2px;\n}\n.table-striped > tbody > tr:nth-of-type(odd) {\n background-color: #f9f9f9;\n}\n.table-hover > tbody > tr:hover {\n background-color: #f5f5f5;\n}\ntable col[class*=\"col-\"] {\n position: static;\n float: none;\n display: table-column;\n}\ntable td[class*=\"col-\"],\ntable th[class*=\"col-\"] {\n position: static;\n float: none;\n display: table-cell;\n}\n.table > thead > tr > td.active,\n.table > tbody > tr > td.active,\n.table > tfoot > tr > td.active,\n.table > thead > tr > th.active,\n.table > tbody > tr > th.active,\n.table > tfoot > tr > th.active,\n.table > thead > tr.active > td,\n.table > tbody > tr.active > td,\n.table > tfoot > tr.active > td,\n.table > thead > tr.active > th,\n.table > tbody > tr.active > th,\n.table > tfoot > tr.active > th {\n background-color: #f5f5f5;\n}\n.table-hover > tbody > tr > td.active:hover,\n.table-hover > tbody > tr > th.active:hover,\n.table-hover > tbody > tr.active:hover > td,\n.table-hover > tbody > tr:hover > .active,\n.table-hover > tbody > tr.active:hover > th {\n background-color: #e8e8e8;\n}\n.table > thead > tr > td.success,\n.table > tbody > tr > td.success,\n.table > tfoot > tr > td.success,\n.table > thead > tr > th.success,\n.table > tbody > tr > th.success,\n.table > tfoot > tr > th.success,\n.table > thead > tr.success > td,\n.table > tbody > tr.success > td,\n.table > tfoot > tr.success > td,\n.table > thead > tr.success > th,\n.table > tbody > tr.success > th,\n.table > tfoot > tr.success > th {\n background-color: #dff0d8;\n}\n.table-hover > tbody > tr > td.success:hover,\n.table-hover > tbody > tr > th.success:hover,\n.table-hover > tbody > tr.success:hover > td,\n.table-hover > tbody > tr:hover > .success,\n.table-hover > tbody > tr.success:hover > th {\n background-color: #d0e9c6;\n}\n.table > thead > tr > td.info,\n.table > tbody > tr > td.info,\n.table > tfoot > tr > td.info,\n.table > thead > tr > th.info,\n.table > tbody > tr > th.info,\n.table > tfoot > tr > th.info,\n.table > thead > tr.info > td,\n.table > tbody > tr.info > td,\n.table > tfoot > tr.info > td,\n.table > thead > tr.info > th,\n.table > tbody > tr.info > th,\n.table > tfoot > tr.info > th {\n background-color: #d9edf7;\n}\n.table-hover > tbody > tr > td.info:hover,\n.table-hover > tbody > tr > th.info:hover,\n.table-hover > tbody > tr.info:hover > td,\n.table-hover > tbody > tr:hover > .info,\n.table-hover > tbody > tr.info:hover > th {\n background-color: #c4e3f3;\n}\n.table > thead > tr > td.warning,\n.table > tbody > tr > td.warning,\n.table > tfoot > tr > td.warning,\n.table > thead > tr > th.warning,\n.table > tbody > tr > th.warning,\n.table > tfoot > tr > th.warning,\n.table > thead > tr.warning > td,\n.table > tbody > tr.warning > td,\n.table > tfoot > tr.warning > td,\n.table > thead > tr.warning > th,\n.table > tbody > tr.warning > th,\n.table > tfoot > tr.warning > th {\n background-color: #fcf8e3;\n}\n.table-hover > tbody > tr > td.warning:hover,\n.table-hover > tbody > tr > th.warning:hover,\n.table-hover > tbody > tr.warning:hover > td,\n.table-hover > tbody > tr:hover > .warning,\n.table-hover > tbody > tr.warning:hover > th {\n background-color: #faf2cc;\n}\n.table > thead > tr > td.danger,\n.table > tbody > tr > td.danger,\n.table > tfoot > tr > td.danger,\n.table > thead > tr > th.danger,\n.table > tbody > tr > th.danger,\n.table > tfoot > tr > th.danger,\n.table > thead > tr.danger > td,\n.table > tbody > tr.danger > td,\n.table > tfoot > tr.danger > td,\n.table > thead > tr.danger > th,\n.table > tbody > tr.danger > th,\n.table > tfoot > tr.danger > th {\n background-color: #f2dede;\n}\n.table-hover > tbody > tr > td.danger:hover,\n.table-hover > tbody > tr > th.danger:hover,\n.table-hover > tbody > tr.danger:hover > td,\n.table-hover > tbody > tr:hover > .danger,\n.table-hover > tbody > tr.danger:hover > th {\n background-color: #ebcccc;\n}\n.table-responsive {\n overflow-x: auto;\n min-height: 0.01%;\n}\n@media screen and (max-width: 767px) {\n .table-responsive {\n width: 100%;\n margin-bottom: 15px;\n overflow-y: hidden;\n -ms-overflow-style: -ms-autohiding-scrollbar;\n border: 1px solid #dddddd;\n }\n .table-responsive > .table {\n margin-bottom: 0;\n }\n .table-responsive > .table > thead > tr > th,\n .table-responsive > .table > tbody > tr > th,\n .table-responsive > .table > tfoot > tr > th,\n .table-responsive > .table > thead > tr > td,\n .table-responsive > .table > tbody > tr > td,\n .table-responsive > .table > tfoot > tr > td {\n white-space: nowrap;\n }\n .table-responsive > .table-bordered {\n border: 0;\n }\n .table-responsive > .table-bordered > thead > tr > th:first-child,\n .table-responsive > .table-bordered > tbody > tr > th:first-child,\n .table-responsive > .table-bordered > tfoot > tr > th:first-child,\n .table-responsive > .table-bordered > thead > tr > td:first-child,\n .table-responsive > .table-bordered > tbody > tr > td:first-child,\n .table-responsive > .table-bordered > tfoot > tr > td:first-child {\n border-left: 0;\n }\n .table-responsive > .table-bordered > thead > tr > th:last-child,\n .table-responsive > .table-bordered > tbody > tr > th:last-child,\n .table-responsive > .table-bordered > tfoot > tr > th:last-child,\n .table-responsive > .table-bordered > thead > tr > td:last-child,\n .table-responsive > .table-bordered > tbody > tr > td:last-child,\n .table-responsive > .table-bordered > tfoot > tr > td:last-child {\n border-right: 0;\n }\n .table-responsive > .table-bordered > tbody > tr:last-child > th,\n .table-responsive > .table-bordered > tfoot > tr:last-child > th,\n .table-responsive > .table-bordered > tbody > tr:last-child > td,\n .table-responsive > .table-bordered > tfoot > tr:last-child > td {\n border-bottom: 0;\n }\n}\nfieldset {\n padding: 0;\n margin: 0;\n border: 0;\n min-width: 0;\n}\nlegend {\n display: block;\n width: 100%;\n padding: 0;\n margin-bottom: 20px;\n font-size: 21px;\n line-height: inherit;\n color: #333333;\n border: 0;\n border-bottom: 1px solid #e5e5e5;\n}\nlabel {\n display: inline-block;\n max-width: 100%;\n margin-bottom: 5px;\n font-weight: bold;\n}\ninput[type=\"search\"] {\n -webkit-box-sizing: border-box;\n -moz-box-sizing: border-box;\n box-sizing: border-box;\n}\ninput[type=\"radio\"],\ninput[type=\"checkbox\"] {\n margin: 4px 0 0;\n margin-top: 1px \\9;\n line-height: normal;\n}\ninput[type=\"file\"] {\n display: block;\n}\ninput[type=\"range\"] {\n display: block;\n width: 100%;\n}\nselect[multiple],\nselect[size] {\n height: auto;\n}\ninput[type=\"file\"]:focus,\ninput[type=\"radio\"]:focus,\ninput[type=\"checkbox\"]:focus {\n outline: thin dotted;\n outline: 5px auto -webkit-focus-ring-color;\n outline-offset: -2px;\n}\noutput {\n display: block;\n padding-top: 7px;\n font-size: 14px;\n line-height: 1.42857143;\n color: #555555;\n}\n.form-control {\n display: block;\n width: 100%;\n height: 34px;\n padding: 6px 12px;\n font-size: 14px;\n line-height: 1.42857143;\n color: #555555;\n background-color: #ffffff;\n background-image: none;\n border: 1px solid #cccccc;\n border-radius: 4px;\n -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);\n box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);\n -webkit-transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s;\n -o-transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s;\n transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s;\n}\n.form-control:focus {\n border-color: #66afe9;\n outline: 0;\n -webkit-box-shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(102, 175, 233, 0.6);\n box-shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(102, 175, 233, 0.6);\n}\n.form-control::-moz-placeholder {\n color: #999999;\n opacity: 1;\n}\n.form-control:-ms-input-placeholder {\n color: #999999;\n}\n.form-control::-webkit-input-placeholder {\n color: #999999;\n}\n.form-control[disabled],\n.form-control[readonly],\nfieldset[disabled] .form-control {\n background-color: #eeeeee;\n opacity: 1;\n}\n.form-control[disabled],\nfieldset[disabled] .form-control {\n cursor: not-allowed;\n}\ntextarea.form-control {\n height: auto;\n}\ninput[type=\"search\"] {\n -webkit-appearance: none;\n}\n@media screen and (-webkit-min-device-pixel-ratio: 0) {\n input[type=\"date\"],\n input[type=\"time\"],\n input[type=\"datetime-local\"],\n input[type=\"month\"] {\n line-height: 34px;\n }\n input[type=\"date\"].input-sm,\n input[type=\"time\"].input-sm,\n input[type=\"datetime-local\"].input-sm,\n input[type=\"month\"].input-sm,\n .input-group-sm input[type=\"date\"],\n .input-group-sm input[type=\"time\"],\n .input-group-sm input[type=\"datetime-local\"],\n .input-group-sm input[type=\"month\"] {\n line-height: 30px;\n }\n input[type=\"date\"].input-lg,\n input[type=\"time\"].input-lg,\n input[type=\"datetime-local\"].input-lg,\n input[type=\"month\"].input-lg,\n .input-group-lg input[type=\"date\"],\n .input-group-lg input[type=\"time\"],\n .input-group-lg input[type=\"datetime-local\"],\n .input-group-lg input[type=\"month\"] {\n line-height: 46px;\n }\n}\n.form-group {\n margin-bottom: 15px;\n}\n.radio,\n.checkbox {\n position: relative;\n display: block;\n margin-top: 10px;\n margin-bottom: 10px;\n}\n.radio label,\n.checkbox label {\n min-height: 20px;\n padding-left: 20px;\n margin-bottom: 0;\n font-weight: normal;\n cursor: pointer;\n}\n.radio input[type=\"radio\"],\n.radio-inline input[type=\"radio\"],\n.checkbox input[type=\"checkbox\"],\n.checkbox-inline input[type=\"checkbox\"] {\n position: absolute;\n margin-left: -20px;\n margin-top: 4px \\9;\n}\n.radio + .radio,\n.checkbox + .checkbox {\n margin-top: -5px;\n}\n.radio-inline,\n.checkbox-inline {\n position: relative;\n display: inline-block;\n padding-left: 20px;\n margin-bottom: 0;\n vertical-align: middle;\n font-weight: normal;\n cursor: pointer;\n}\n.radio-inline + .radio-inline,\n.checkbox-inline + .checkbox-inline {\n margin-top: 0;\n margin-left: 10px;\n}\ninput[type=\"radio\"][disabled],\ninput[type=\"checkbox\"][disabled],\ninput[type=\"radio\"].disabled,\ninput[type=\"checkbox\"].disabled,\nfieldset[disabled] input[type=\"radio\"],\nfieldset[disabled] input[type=\"checkbox\"] {\n cursor: not-allowed;\n}\n.radio-inline.disabled,\n.checkbox-inline.disabled,\nfieldset[disabled] .radio-inline,\nfieldset[disabled] .checkbox-inline {\n cursor: not-allowed;\n}\n.radio.disabled label,\n.checkbox.disabled label,\nfieldset[disabled] .radio label,\nfieldset[disabled] .checkbox label {\n cursor: not-allowed;\n}\n.form-control-static {\n padding-top: 7px;\n padding-bottom: 7px;\n margin-bottom: 0;\n min-height: 34px;\n}\n.form-control-static.input-lg,\n.form-control-static.input-sm {\n padding-left: 0;\n padding-right: 0;\n}\n.input-sm {\n height: 30px;\n padding: 5px 10px;\n font-size: 12px;\n line-height: 1.5;\n border-radius: 3px;\n}\nselect.input-sm {\n height: 30px;\n line-height: 30px;\n}\ntextarea.input-sm,\nselect[multiple].input-sm {\n height: auto;\n}\n.form-group-sm .form-control {\n height: 30px;\n padding: 5px 10px;\n font-size: 12px;\n line-height: 1.5;\n border-radius: 3px;\n}\nselect.form-group-sm .form-control {\n height: 30px;\n line-height: 30px;\n}\ntextarea.form-group-sm .form-control,\nselect[multiple].form-group-sm .form-control {\n height: auto;\n}\n.form-group-sm .form-control-static {\n height: 30px;\n padding: 5px 10px;\n font-size: 12px;\n line-height: 1.5;\n min-height: 32px;\n}\n.input-lg {\n height: 46px;\n padding: 10px 16px;\n font-size: 18px;\n line-height: 1.3333333;\n border-radius: 6px;\n}\nselect.input-lg {\n height: 46px;\n line-height: 46px;\n}\ntextarea.input-lg,\nselect[multiple].input-lg {\n height: auto;\n}\n.form-group-lg .form-control {\n height: 46px;\n padding: 10px 16px;\n font-size: 18px;\n line-height: 1.3333333;\n border-radius: 6px;\n}\nselect.form-group-lg .form-control {\n height: 46px;\n line-height: 46px;\n}\ntextarea.form-group-lg .form-control,\nselect[multiple].form-group-lg .form-control {\n height: auto;\n}\n.form-group-lg .form-control-static {\n height: 46px;\n padding: 10px 16px;\n font-size: 18px;\n line-height: 1.3333333;\n min-height: 38px;\n}\n.has-feedback {\n position: relative;\n}\n.has-feedback .form-control {\n padding-right: 42.5px;\n}\n.form-control-feedback {\n position: absolute;\n top: 0;\n right: 0;\n z-index: 2;\n display: block;\n width: 34px;\n height: 34px;\n line-height: 34px;\n text-align: center;\n pointer-events: none;\n}\n.input-lg + .form-control-feedback {\n width: 46px;\n height: 46px;\n line-height: 46px;\n}\n.input-sm + .form-control-feedback {\n width: 30px;\n height: 30px;\n line-height: 30px;\n}\n.has-success .help-block,\n.has-success .control-label,\n.has-success .radio,\n.has-success .checkbox,\n.has-success .radio-inline,\n.has-success .checkbox-inline,\n.has-success.radio label,\n.has-success.checkbox label,\n.has-success.radio-inline label,\n.has-success.checkbox-inline label {\n color: #3c763d;\n}\n.has-success .form-control {\n border-color: #3c763d;\n -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);\n box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);\n}\n.has-success .form-control:focus {\n border-color: #2b542c;\n -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #67b168;\n box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #67b168;\n}\n.has-success .input-group-addon {\n color: #3c763d;\n border-color: #3c763d;\n background-color: #dff0d8;\n}\n.has-success .form-control-feedback {\n color: #3c763d;\n}\n.has-warning .help-block,\n.has-warning .control-label,\n.has-warning .radio,\n.has-warning .checkbox,\n.has-warning .radio-inline,\n.has-warning .checkbox-inline,\n.has-warning.radio label,\n.has-warning.checkbox label,\n.has-warning.radio-inline label,\n.has-warning.checkbox-inline label {\n color: #8a6d3b;\n}\n.has-warning .form-control {\n border-color: #8a6d3b;\n -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);\n box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);\n}\n.has-warning .form-control:focus {\n border-color: #66512c;\n -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #c0a16b;\n box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #c0a16b;\n}\n.has-warning .input-group-addon {\n color: #8a6d3b;\n border-color: #8a6d3b;\n background-color: #fcf8e3;\n}\n.has-warning .form-control-feedback {\n color: #8a6d3b;\n}\n.has-error .help-block,\n.has-error .control-label,\n.has-error .radio,\n.has-error .checkbox,\n.has-error .radio-inline,\n.has-error .checkbox-inline,\n.has-error.radio label,\n.has-error.checkbox label,\n.has-error.radio-inline label,\n.has-error.checkbox-inline label {\n color: #a94442;\n}\n.has-error .form-control {\n border-color: #a94442;\n -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);\n box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);\n}\n.has-error .form-control:focus {\n border-color: #843534;\n -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #ce8483;\n box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #ce8483;\n}\n.has-error .input-group-addon {\n color: #a94442;\n border-color: #a94442;\n background-color: #f2dede;\n}\n.has-error .form-control-feedback {\n color: #a94442;\n}\n.has-feedback label ~ .form-control-feedback {\n top: 25px;\n}\n.has-feedback label.sr-only ~ .form-control-feedback {\n top: 0;\n}\n.help-block {\n display: block;\n margin-top: 5px;\n margin-bottom: 10px;\n color: #737373;\n}\n@media (min-width: 768px) {\n .form-inline .form-group {\n display: inline-block;\n margin-bottom: 0;\n vertical-align: middle;\n }\n .form-inline .form-control {\n display: inline-block;\n width: auto;\n vertical-align: middle;\n }\n .form-inline .form-control-static {\n display: inline-block;\n }\n .form-inline .input-group {\n display: inline-table;\n vertical-align: middle;\n }\n .form-inline .input-group .input-group-addon,\n .form-inline .input-group .input-group-btn,\n .form-inline .input-group .form-control {\n width: auto;\n }\n .form-inline .input-group > .form-control {\n width: 100%;\n }\n .form-inline .control-label {\n margin-bottom: 0;\n vertical-align: middle;\n }\n .form-inline .radio,\n .form-inline .checkbox {\n display: inline-block;\n margin-top: 0;\n margin-bottom: 0;\n vertical-align: middle;\n }\n .form-inline .radio label,\n .form-inline .checkbox label {\n padding-left: 0;\n }\n .form-inline .radio input[type=\"radio\"],\n .form-inline .checkbox input[type=\"checkbox\"] {\n position: relative;\n margin-left: 0;\n }\n .form-inline .has-feedback .form-control-feedback {\n top: 0;\n }\n}\n.form-horizontal .radio,\n.form-horizontal .checkbox,\n.form-horizontal .radio-inline,\n.form-horizontal .checkbox-inline {\n margin-top: 0;\n margin-bottom: 0;\n padding-top: 7px;\n}\n.form-horizontal .radio,\n.form-horizontal .checkbox {\n min-height: 27px;\n}\n.form-horizontal .form-group {\n margin-left: -15px;\n margin-right: -15px;\n}\n@media (min-width: 768px) {\n .form-horizontal .control-label {\n text-align: right;\n margin-bottom: 0;\n padding-top: 7px;\n }\n}\n.form-horizontal .has-feedback .form-control-feedback {\n right: 15px;\n}\n@media (min-width: 768px) {\n .form-horizontal .form-group-lg .control-label {\n padding-top: 14.333333px;\n }\n}\n@media (min-width: 768px) {\n .form-horizontal .form-group-sm .control-label {\n padding-top: 6px;\n }\n}\n.btn {\n display: inline-block;\n margin-bottom: 0;\n font-weight: normal;\n text-align: center;\n vertical-align: middle;\n touch-action: manipulation;\n cursor: pointer;\n background-image: none;\n border: 1px solid transparent;\n white-space: nowrap;\n padding: 6px 12px;\n font-size: 14px;\n line-height: 1.42857143;\n border-radius: 4px;\n -webkit-user-select: none;\n -moz-user-select: none;\n -ms-user-select: none;\n user-select: none;\n}\n.btn:focus,\n.btn:active:focus,\n.btn.active:focus,\n.btn.focus,\n.btn:active.focus,\n.btn.active.focus {\n outline: thin dotted;\n outline: 5px auto -webkit-focus-ring-color;\n outline-offset: -2px;\n}\n.btn:hover,\n.btn:focus,\n.btn.focus {\n color: #333333;\n text-decoration: none;\n}\n.btn:active,\n.btn.active {\n outline: 0;\n background-image: none;\n -webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);\n box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);\n}\n.btn.disabled,\n.btn[disabled],\nfieldset[disabled] .btn {\n cursor: not-allowed;\n pointer-events: none;\n opacity: 0.65;\n filter: alpha(opacity=65);\n -webkit-box-shadow: none;\n box-shadow: none;\n}\n.btn-default {\n color: #333333;\n background-color: #ffffff;\n border-color: #cccccc;\n}\n.btn-default:hover,\n.btn-default:focus,\n.btn-default.focus,\n.btn-default:active,\n.btn-default.active,\n.open > .dropdown-toggle.btn-default {\n color: #333333;\n background-color: #e6e6e6;\n border-color: #adadad;\n}\n.btn-default:active,\n.btn-default.active,\n.open > .dropdown-toggle.btn-default {\n background-image: none;\n}\n.btn-default.disabled,\n.btn-default[disabled],\nfieldset[disabled] .btn-default,\n.btn-default.disabled:hover,\n.btn-default[disabled]:hover,\nfieldset[disabled] .btn-default:hover,\n.btn-default.disabled:focus,\n.btn-default[disabled]:focus,\nfieldset[disabled] .btn-default:focus,\n.btn-default.disabled.focus,\n.btn-default[disabled].focus,\nfieldset[disabled] .btn-default.focus,\n.btn-default.disabled:active,\n.btn-default[disabled]:active,\nfieldset[disabled] .btn-default:active,\n.btn-default.disabled.active,\n.btn-default[disabled].active,\nfieldset[disabled] .btn-default.active {\n background-color: #ffffff;\n border-color: #cccccc;\n}\n.btn-default .badge {\n color: #ffffff;\n background-color: #333333;\n}\n.btn-primary {\n color: #ffffff;\n background-color: #337ab7;\n border-color: #2e6da4;\n}\n.btn-primary:hover,\n.btn-primary:focus,\n.btn-primary.focus,\n.btn-primary:active,\n.btn-primary.active,\n.open > .dropdown-toggle.btn-primary {\n color: #ffffff;\n background-color: #286090;\n border-color: #204d74;\n}\n.btn-primary:active,\n.btn-primary.active,\n.open > .dropdown-toggle.btn-primary {\n background-image: none;\n}\n.btn-primary.disabled,\n.btn-primary[disabled],\nfieldset[disabled] .btn-primary,\n.btn-primary.disabled:hover,\n.btn-primary[disabled]:hover,\nfieldset[disabled] .btn-primary:hover,\n.btn-primary.disabled:focus,\n.btn-primary[disabled]:focus,\nfieldset[disabled] .btn-primary:focus,\n.btn-primary.disabled.focus,\n.btn-primary[disabled].focus,\nfieldset[disabled] .btn-primary.focus,\n.btn-primary.disabled:active,\n.btn-primary[disabled]:active,\nfieldset[disabled] .btn-primary:active,\n.btn-primary.disabled.active,\n.btn-primary[disabled].active,\nfieldset[disabled] .btn-primary.active {\n background-color: #337ab7;\n border-color: #2e6da4;\n}\n.btn-primary .badge {\n color: #337ab7;\n background-color: #ffffff;\n}\n.btn-success {\n color: #ffffff;\n background-color: #5cb85c;\n border-color: #4cae4c;\n}\n.btn-success:hover,\n.btn-success:focus,\n.btn-success.focus,\n.btn-success:active,\n.btn-success.active,\n.open > .dropdown-toggle.btn-success {\n color: #ffffff;\n background-color: #449d44;\n border-color: #398439;\n}\n.btn-success:active,\n.btn-success.active,\n.open > .dropdown-toggle.btn-success {\n background-image: none;\n}\n.btn-success.disabled,\n.btn-success[disabled],\nfieldset[disabled] .btn-success,\n.btn-success.disabled:hover,\n.btn-success[disabled]:hover,\nfieldset[disabled] .btn-success:hover,\n.btn-success.disabled:focus,\n.btn-success[disabled]:focus,\nfieldset[disabled] .btn-success:focus,\n.btn-success.disabled.focus,\n.btn-success[disabled].focus,\nfieldset[disabled] .btn-success.focus,\n.btn-success.disabled:active,\n.btn-success[disabled]:active,\nfieldset[disabled] .btn-success:active,\n.btn-success.disabled.active,\n.btn-success[disabled].active,\nfieldset[disabled] .btn-success.active {\n background-color: #5cb85c;\n border-color: #4cae4c;\n}\n.btn-success .badge {\n color: #5cb85c;\n background-color: #ffffff;\n}\n.btn-info {\n color: #ffffff;\n background-color: #5bc0de;\n border-color: #46b8da;\n}\n.btn-info:hover,\n.btn-info:focus,\n.btn-info.focus,\n.btn-info:active,\n.btn-info.active,\n.open > .dropdown-toggle.btn-info {\n color: #ffffff;\n background-color: #31b0d5;\n border-color: #269abc;\n}\n.btn-info:active,\n.btn-info.active,\n.open > .dropdown-toggle.btn-info {\n background-image: none;\n}\n.btn-info.disabled,\n.btn-info[disabled],\nfieldset[disabled] .btn-info,\n.btn-info.disabled:hover,\n.btn-info[disabled]:hover,\nfieldset[disabled] .btn-info:hover,\n.btn-info.disabled:focus,\n.btn-info[disabled]:focus,\nfieldset[disabled] .btn-info:focus,\n.btn-info.disabled.focus,\n.btn-info[disabled].focus,\nfieldset[disabled] .btn-info.focus,\n.btn-info.disabled:active,\n.btn-info[disabled]:active,\nfieldset[disabled] .btn-info:active,\n.btn-info.disabled.active,\n.btn-info[disabled].active,\nfieldset[disabled] .btn-info.active {\n background-color: #5bc0de;\n border-color: #46b8da;\n}\n.btn-info .badge {\n color: #5bc0de;\n background-color: #ffffff;\n}\n.btn-warning {\n color: #ffffff;\n background-color: #f0ad4e;\n border-color: #eea236;\n}\n.btn-warning:hover,\n.btn-warning:focus,\n.btn-warning.focus,\n.btn-warning:active,\n.btn-warning.active,\n.open > .dropdown-toggle.btn-warning {\n color: #ffffff;\n background-color: #ec971f;\n border-color: #d58512;\n}\n.btn-warning:active,\n.btn-warning.active,\n.open > .dropdown-toggle.btn-warning {\n background-image: none;\n}\n.btn-warning.disabled,\n.btn-warning[disabled],\nfieldset[disabled] .btn-warning,\n.btn-warning.disabled:hover,\n.btn-warning[disabled]:hover,\nfieldset[disabled] .btn-warning:hover,\n.btn-warning.disabled:focus,\n.btn-warning[disabled]:focus,\nfieldset[disabled] .btn-warning:focus,\n.btn-warning.disabled.focus,\n.btn-warning[disabled].focus,\nfieldset[disabled] .btn-warning.focus,\n.btn-warning.disabled:active,\n.btn-warning[disabled]:active,\nfieldset[disabled] .btn-warning:active,\n.btn-warning.disabled.active,\n.btn-warning[disabled].active,\nfieldset[disabled] .btn-warning.active {\n background-color: #f0ad4e;\n border-color: #eea236;\n}\n.btn-warning .badge {\n color: #f0ad4e;\n background-color: #ffffff;\n}\n.btn-danger {\n color: #ffffff;\n background-color: #d9534f;\n border-color: #d43f3a;\n}\n.btn-danger:hover,\n.btn-danger:focus,\n.btn-danger.focus,\n.btn-danger:active,\n.btn-danger.active,\n.open > .dropdown-toggle.btn-danger {\n color: #ffffff;\n background-color: #c9302c;\n border-color: #ac2925;\n}\n.btn-danger:active,\n.btn-danger.active,\n.open > .dropdown-toggle.btn-danger {\n background-image: none;\n}\n.btn-danger.disabled,\n.btn-danger[disabled],\nfieldset[disabled] .btn-danger,\n.btn-danger.disabled:hover,\n.btn-danger[disabled]:hover,\nfieldset[disabled] .btn-danger:hover,\n.btn-danger.disabled:focus,\n.btn-danger[disabled]:focus,\nfieldset[disabled] .btn-danger:focus,\n.btn-danger.disabled.focus,\n.btn-danger[disabled].focus,\nfieldset[disabled] .btn-danger.focus,\n.btn-danger.disabled:active,\n.btn-danger[disabled]:active,\nfieldset[disabled] .btn-danger:active,\n.btn-danger.disabled.active,\n.btn-danger[disabled].active,\nfieldset[disabled] .btn-danger.active {\n background-color: #d9534f;\n border-color: #d43f3a;\n}\n.btn-danger .badge {\n color: #d9534f;\n background-color: #ffffff;\n}\n.btn-link {\n color: #337ab7;\n font-weight: normal;\n border-radius: 0;\n}\n.btn-link,\n.btn-link:active,\n.btn-link.active,\n.btn-link[disabled],\nfieldset[disabled] .btn-link {\n background-color: transparent;\n -webkit-box-shadow: none;\n box-shadow: none;\n}\n.btn-link,\n.btn-link:hover,\n.btn-link:focus,\n.btn-link:active {\n border-color: transparent;\n}\n.btn-link:hover,\n.btn-link:focus {\n color: #23527c;\n text-decoration: underline;\n background-color: transparent;\n}\n.btn-link[disabled]:hover,\nfieldset[disabled] .btn-link:hover,\n.btn-link[disabled]:focus,\nfieldset[disabled] .btn-link:focus {\n color: #777777;\n text-decoration: none;\n}\n.btn-lg,\n.btn-group-lg > .btn {\n padding: 10px 16px;\n font-size: 18px;\n line-height: 1.3333333;\n border-radius: 6px;\n}\n.btn-sm,\n.btn-group-sm > .btn {\n padding: 5px 10px;\n font-size: 12px;\n line-height: 1.5;\n border-radius: 3px;\n}\n.btn-xs,\n.btn-group-xs > .btn {\n padding: 1px 5px;\n font-size: 12px;\n line-height: 1.5;\n border-radius: 3px;\n}\n.btn-block {\n display: block;\n width: 100%;\n}\n.btn-block + .btn-block {\n margin-top: 5px;\n}\ninput[type=\"submit\"].btn-block,\ninput[type=\"reset\"].btn-block,\ninput[type=\"button\"].btn-block {\n width: 100%;\n}\n.fade {\n opacity: 0;\n -webkit-transition: opacity 0.15s linear;\n -o-transition: opacity 0.15s linear;\n transition: opacity 0.15s linear;\n}\n.fade.in {\n opacity: 1;\n}\n.collapse {\n display: none;\n}\n.collapse.in {\n display: block;\n}\ntr.collapse.in {\n display: table-row;\n}\ntbody.collapse.in {\n display: table-row-group;\n}\n.collapsing {\n position: relative;\n height: 0;\n overflow: hidden;\n -webkit-transition-property: height, visibility;\n transition-property: height, visibility;\n -webkit-transition-duration: 0.35s;\n transition-duration: 0.35s;\n -webkit-transition-timing-function: ease;\n transition-timing-function: ease;\n}\n.caret {\n display: inline-block;\n width: 0;\n height: 0;\n margin-left: 2px;\n vertical-align: middle;\n border-top: 4px dashed;\n border-right: 4px solid transparent;\n border-left: 4px solid transparent;\n}\n.dropup,\n.dropdown {\n position: relative;\n}\n.dropdown-toggle:focus {\n outline: 0;\n}\n.dropdown-menu {\n position: absolute;\n top: 100%;\n left: 0;\n z-index: 1000;\n display: none;\n float: left;\n min-width: 160px;\n padding: 5px 0;\n margin: 2px 0 0;\n list-style: none;\n font-size: 14px;\n text-align: left;\n background-color: #ffffff;\n border: 1px solid #cccccc;\n border: 1px solid rgba(0, 0, 0, 0.15);\n border-radius: 4px;\n -webkit-box-shadow: 0 6px 12px rgba(0, 0, 0, 0.175);\n box-shadow: 0 6px 12px rgba(0, 0, 0, 0.175);\n background-clip: padding-box;\n}\n.dropdown-menu.pull-right {\n right: 0;\n left: auto;\n}\n.dropdown-menu .divider {\n height: 1px;\n margin: 9px 0;\n overflow: hidden;\n background-color: #e5e5e5;\n}\n.dropdown-menu > li > a {\n display: block;\n padding: 3px 20px;\n clear: both;\n font-weight: normal;\n line-height: 1.42857143;\n color: #333333;\n white-space: nowrap;\n}\n.dropdown-menu > li > a:hover,\n.dropdown-menu > li > a:focus {\n text-decoration: none;\n color: #262626;\n background-color: #f5f5f5;\n}\n.dropdown-menu > .active > a,\n.dropdown-menu > .active > a:hover,\n.dropdown-menu > .active > a:focus {\n color: #ffffff;\n text-decoration: none;\n outline: 0;\n background-color: #337ab7;\n}\n.dropdown-menu > .disabled > a,\n.dropdown-menu > .disabled > a:hover,\n.dropdown-menu > .disabled > a:focus {\n color: #777777;\n}\n.dropdown-menu > .disabled > a:hover,\n.dropdown-menu > .disabled > a:focus {\n text-decoration: none;\n background-color: transparent;\n background-image: none;\n filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);\n cursor: not-allowed;\n}\n.open > .dropdown-menu {\n display: block;\n}\n.open > a {\n outline: 0;\n}\n.dropdown-menu-right {\n left: auto;\n right: 0;\n}\n.dropdown-menu-left {\n left: 0;\n right: auto;\n}\n.dropdown-header {\n display: block;\n padding: 3px 20px;\n font-size: 12px;\n line-height: 1.42857143;\n color: #777777;\n white-space: nowrap;\n}\n.dropdown-backdrop {\n position: fixed;\n left: 0;\n right: 0;\n bottom: 0;\n top: 0;\n z-index: 990;\n}\n.pull-right > .dropdown-menu {\n right: 0;\n left: auto;\n}\n.dropup .caret,\n.navbar-fixed-bottom .dropdown .caret {\n border-top: 0;\n border-bottom: 4px solid;\n content: \"\";\n}\n.dropup .dropdown-menu,\n.navbar-fixed-bottom .dropdown .dropdown-menu {\n top: auto;\n bottom: 100%;\n margin-bottom: 2px;\n}\n@media (min-width: 768px) {\n .navbar-right .dropdown-menu {\n left: auto;\n right: 0;\n }\n .navbar-right .dropdown-menu-left {\n left: 0;\n right: auto;\n }\n}\n.btn-group,\n.btn-group-vertical {\n position: relative;\n display: inline-block;\n vertical-align: middle;\n}\n.btn-group > .btn,\n.btn-group-vertical > .btn {\n position: relative;\n float: left;\n}\n.btn-group > .btn:hover,\n.btn-group-vertical > .btn:hover,\n.btn-group > .btn:focus,\n.btn-group-vertical > .btn:focus,\n.btn-group > .btn:active,\n.btn-group-vertical > .btn:active,\n.btn-group > .btn.active,\n.btn-group-vertical > .btn.active {\n z-index: 2;\n}\n.btn-group .btn + .btn,\n.btn-group .btn + .btn-group,\n.btn-group .btn-group + .btn,\n.btn-group .btn-group + .btn-group {\n margin-left: -1px;\n}\n.btn-toolbar {\n margin-left: -5px;\n}\n.btn-toolbar .btn-group,\n.btn-toolbar .input-group {\n float: left;\n}\n.btn-toolbar > .btn,\n.btn-toolbar > .btn-group,\n.btn-toolbar > .input-group {\n margin-left: 5px;\n}\n.btn-group > .btn:not(:first-child):not(:last-child):not(.dropdown-toggle) {\n border-radius: 0;\n}\n.btn-group > .btn:first-child {\n margin-left: 0;\n}\n.btn-group > .btn:first-child:not(:last-child):not(.dropdown-toggle) {\n border-bottom-right-radius: 0;\n border-top-right-radius: 0;\n}\n.btn-group > .btn:last-child:not(:first-child),\n.btn-group > .dropdown-toggle:not(:first-child) {\n border-bottom-left-radius: 0;\n border-top-left-radius: 0;\n}\n.btn-group > .btn-group {\n float: left;\n}\n.btn-group > .btn-group:not(:first-child):not(:last-child) > .btn {\n border-radius: 0;\n}\n.btn-group > .btn-group:first-child:not(:last-child) > .btn:last-child,\n.btn-group > .btn-group:first-child:not(:last-child) > .dropdown-toggle {\n border-bottom-right-radius: 0;\n border-top-right-radius: 0;\n}\n.btn-group > .btn-group:last-child:not(:first-child) > .btn:first-child {\n border-bottom-left-radius: 0;\n border-top-left-radius: 0;\n}\n.btn-group .dropdown-toggle:active,\n.btn-group.open .dropdown-toggle {\n outline: 0;\n}\n.btn-group > .btn + .dropdown-toggle {\n padding-left: 8px;\n padding-right: 8px;\n}\n.btn-group > .btn-lg + .dropdown-toggle {\n padding-left: 12px;\n padding-right: 12px;\n}\n.btn-group.open .dropdown-toggle {\n -webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);\n box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);\n}\n.btn-group.open .dropdown-toggle.btn-link {\n -webkit-box-shadow: none;\n box-shadow: none;\n}\n.btn .caret {\n margin-left: 0;\n}\n.btn-lg .caret {\n border-width: 5px 5px 0;\n border-bottom-width: 0;\n}\n.dropup .btn-lg .caret {\n border-width: 0 5px 5px;\n}\n.btn-group-vertical > .btn,\n.btn-group-vertical > .btn-group,\n.btn-group-vertical > .btn-group > .btn {\n display: block;\n float: none;\n width: 100%;\n max-width: 100%;\n}\n.btn-group-vertical > .btn-group > .btn {\n float: none;\n}\n.btn-group-vertical > .btn + .btn,\n.btn-group-vertical > .btn + .btn-group,\n.btn-group-vertical > .btn-group + .btn,\n.btn-group-vertical > .btn-group + .btn-group {\n margin-top: -1px;\n margin-left: 0;\n}\n.btn-group-vertical > .btn:not(:first-child):not(:last-child) {\n border-radius: 0;\n}\n.btn-group-vertical > .btn:first-child:not(:last-child) {\n border-top-right-radius: 4px;\n border-bottom-right-radius: 0;\n border-bottom-left-radius: 0;\n}\n.btn-group-vertical > .btn:last-child:not(:first-child) {\n border-bottom-left-radius: 4px;\n border-top-right-radius: 0;\n border-top-left-radius: 0;\n}\n.btn-group-vertical > .btn-group:not(:first-child):not(:last-child) > .btn {\n border-radius: 0;\n}\n.btn-group-vertical > .btn-group:first-child:not(:last-child) > .btn:last-child,\n.btn-group-vertical > .btn-group:first-child:not(:last-child) > .dropdown-toggle {\n border-bottom-right-radius: 0;\n border-bottom-left-radius: 0;\n}\n.btn-group-vertical > .btn-group:last-child:not(:first-child) > .btn:first-child {\n border-top-right-radius: 0;\n border-top-left-radius: 0;\n}\n.btn-group-justified {\n display: table;\n width: 100%;\n table-layout: fixed;\n border-collapse: separate;\n}\n.btn-group-justified > .btn,\n.btn-group-justified > .btn-group {\n float: none;\n display: table-cell;\n width: 1%;\n}\n.btn-group-justified > .btn-group .btn {\n width: 100%;\n}\n.btn-group-justified > .btn-group .dropdown-menu {\n left: auto;\n}\n[data-toggle=\"buttons\"] > .btn input[type=\"radio\"],\n[data-toggle=\"buttons\"] > .btn-group > .btn input[type=\"radio\"],\n[data-toggle=\"buttons\"] > .btn input[type=\"checkbox\"],\n[data-toggle=\"buttons\"] > .btn-group > .btn input[type=\"checkbox\"] {\n position: absolute;\n clip: rect(0, 0, 0, 0);\n pointer-events: none;\n}\n.input-group {\n position: relative;\n display: table;\n border-collapse: separate;\n}\n.input-group[class*=\"col-\"] {\n float: none;\n padding-left: 0;\n padding-right: 0;\n}\n.input-group .form-control {\n position: relative;\n z-index: 2;\n float: left;\n width: 100%;\n margin-bottom: 0;\n}\n.input-group-lg > .form-control,\n.input-group-lg > .input-group-addon,\n.input-group-lg > .input-group-btn > .btn {\n height: 46px;\n padding: 10px 16px;\n font-size: 18px;\n line-height: 1.3333333;\n border-radius: 6px;\n}\nselect.input-group-lg > .form-control,\nselect.input-group-lg > .input-group-addon,\nselect.input-group-lg > .input-group-btn > .btn {\n height: 46px;\n line-height: 46px;\n}\ntextarea.input-group-lg > .form-control,\ntextarea.input-group-lg > .input-group-addon,\ntextarea.input-group-lg > .input-group-btn > .btn,\nselect[multiple].input-group-lg > .form-control,\nselect[multiple].input-group-lg > .input-group-addon,\nselect[multiple].input-group-lg > .input-group-btn > .btn {\n height: auto;\n}\n.input-group-sm > .form-control,\n.input-group-sm > .input-group-addon,\n.input-group-sm > .input-group-btn > .btn {\n height: 30px;\n padding: 5px 10px;\n font-size: 12px;\n line-height: 1.5;\n border-radius: 3px;\n}\nselect.input-group-sm > .form-control,\nselect.input-group-sm > .input-group-addon,\nselect.input-group-sm > .input-group-btn > .btn {\n height: 30px;\n line-height: 30px;\n}\ntextarea.input-group-sm > .form-control,\ntextarea.input-group-sm > .input-group-addon,\ntextarea.input-group-sm > .input-group-btn > .btn,\nselect[multiple].input-group-sm > .form-control,\nselect[multiple].input-group-sm > .input-group-addon,\nselect[multiple].input-group-sm > .input-group-btn > .btn {\n height: auto;\n}\n.input-group-addon,\n.input-group-btn,\n.input-group .form-control {\n display: table-cell;\n}\n.input-group-addon:not(:first-child):not(:last-child),\n.input-group-btn:not(:first-child):not(:last-child),\n.input-group .form-control:not(:first-child):not(:last-child) {\n border-radius: 0;\n}\n.input-group-addon,\n.input-group-btn {\n width: 1%;\n white-space: nowrap;\n vertical-align: middle;\n}\n.input-group-addon {\n padding: 6px 12px;\n font-size: 14px;\n font-weight: normal;\n line-height: 1;\n color: #555555;\n text-align: center;\n background-color: #eeeeee;\n border: 1px solid #cccccc;\n border-radius: 4px;\n}\n.input-group-addon.input-sm {\n padding: 5px 10px;\n font-size: 12px;\n border-radius: 3px;\n}\n.input-group-addon.input-lg {\n padding: 10px 16px;\n font-size: 18px;\n border-radius: 6px;\n}\n.input-group-addon input[type=\"radio\"],\n.input-group-addon input[type=\"checkbox\"] {\n margin-top: 0;\n}\n.input-group .form-control:first-child,\n.input-group-addon:first-child,\n.input-group-btn:first-child > .btn,\n.input-group-btn:first-child > .btn-group > .btn,\n.input-group-btn:first-child > .dropdown-toggle,\n.input-group-btn:last-child > .btn:not(:last-child):not(.dropdown-toggle),\n.input-group-btn:last-child > .btn-group:not(:last-child) > .btn {\n border-bottom-right-radius: 0;\n border-top-right-radius: 0;\n}\n.input-group-addon:first-child {\n border-right: 0;\n}\n.input-group .form-control:last-child,\n.input-group-addon:last-child,\n.input-group-btn:last-child > .btn,\n.input-group-btn:last-child > .btn-group > .btn,\n.input-group-btn:last-child > .dropdown-toggle,\n.input-group-btn:first-child > .btn:not(:first-child),\n.input-group-btn:first-child > .btn-group:not(:first-child) > .btn {\n border-bottom-left-radius: 0;\n border-top-left-radius: 0;\n}\n.input-group-addon:last-child {\n border-left: 0;\n}\n.input-group-btn {\n position: relative;\n font-size: 0;\n white-space: nowrap;\n}\n.input-group-btn > .btn {\n position: relative;\n}\n.input-group-btn > .btn + .btn {\n margin-left: -1px;\n}\n.input-group-btn > .btn:hover,\n.input-group-btn > .btn:focus,\n.input-group-btn > .btn:active {\n z-index: 2;\n}\n.input-group-btn:first-child > .btn,\n.input-group-btn:first-child > .btn-group {\n margin-right: -1px;\n}\n.input-group-btn:last-child > .btn,\n.input-group-btn:last-child > .btn-group {\n margin-left: -1px;\n}\n.nav {\n margin-bottom: 0;\n padding-left: 0;\n list-style: none;\n}\n.nav > li {\n position: relative;\n display: block;\n}\n.nav > li > a {\n position: relative;\n display: block;\n padding: 10px 15px;\n}\n.nav > li > a:hover,\n.nav > li > a:focus {\n text-decoration: none;\n background-color: #eeeeee;\n}\n.nav > li.disabled > a {\n color: #777777;\n}\n.nav > li.disabled > a:hover,\n.nav > li.disabled > a:focus {\n color: #777777;\n text-decoration: none;\n background-color: transparent;\n cursor: not-allowed;\n}\n.nav .open > a,\n.nav .open > a:hover,\n.nav .open > a:focus {\n background-color: #eeeeee;\n border-color: #337ab7;\n}\n.nav .nav-divider {\n height: 1px;\n margin: 9px 0;\n overflow: hidden;\n background-color: #e5e5e5;\n}\n.nav > li > a > img {\n max-width: none;\n}\n.nav-tabs {\n border-bottom: 1px solid #dddddd;\n}\n.nav-tabs > li {\n float: left;\n margin-bottom: -1px;\n}\n.nav-tabs > li > a {\n margin-right: 2px;\n line-height: 1.42857143;\n border: 1px solid transparent;\n border-radius: 4px 4px 0 0;\n}\n.nav-tabs > li > a:hover {\n border-color: #eeeeee #eeeeee #dddddd;\n}\n.nav-tabs > li.active > a,\n.nav-tabs > li.active > a:hover,\n.nav-tabs > li.active > a:focus {\n color: #555555;\n background-color: #ffffff;\n border: 1px solid #dddddd;\n border-bottom-color: transparent;\n cursor: default;\n}\n.nav-tabs.nav-justified {\n width: 100%;\n border-bottom: 0;\n}\n.nav-tabs.nav-justified > li {\n float: none;\n}\n.nav-tabs.nav-justified > li > a {\n text-align: center;\n margin-bottom: 5px;\n}\n.nav-tabs.nav-justified > .dropdown .dropdown-menu {\n top: auto;\n left: auto;\n}\n@media (min-width: 768px) {\n .nav-tabs.nav-justified > li {\n display: table-cell;\n width: 1%;\n }\n .nav-tabs.nav-justified > li > a {\n margin-bottom: 0;\n }\n}\n.nav-tabs.nav-justified > li > a {\n margin-right: 0;\n border-radius: 4px;\n}\n.nav-tabs.nav-justified > .active > a,\n.nav-tabs.nav-justified > .active > a:hover,\n.nav-tabs.nav-justified > .active > a:focus {\n border: 1px solid #dddddd;\n}\n@media (min-width: 768px) {\n .nav-tabs.nav-justified > li > a {\n border-bottom: 1px solid #dddddd;\n border-radius: 4px 4px 0 0;\n }\n .nav-tabs.nav-justified > .active > a,\n .nav-tabs.nav-justified > .active > a:hover,\n .nav-tabs.nav-justified > .active > a:focus {\n border-bottom-color: #ffffff;\n }\n}\n.nav-pills > li {\n float: left;\n}\n.nav-pills > li > a {\n border-radius: 4px;\n}\n.nav-pills > li + li {\n margin-left: 2px;\n}\n.nav-pills > li.active > a,\n.nav-pills > li.active > a:hover,\n.nav-pills > li.active > a:focus {\n color: #ffffff;\n background-color: #337ab7;\n}\n.nav-stacked > li {\n float: none;\n}\n.nav-stacked > li + li {\n margin-top: 2px;\n margin-left: 0;\n}\n.nav-justified {\n width: 100%;\n}\n.nav-justified > li {\n float: none;\n}\n.nav-justified > li > a {\n text-align: center;\n margin-bottom: 5px;\n}\n.nav-justified > .dropdown .dropdown-menu {\n top: auto;\n left: auto;\n}\n@media (min-width: 768px) {\n .nav-justified > li {\n display: table-cell;\n width: 1%;\n }\n .nav-justified > li > a {\n margin-bottom: 0;\n }\n}\n.nav-tabs-justified {\n border-bottom: 0;\n}\n.nav-tabs-justified > li > a {\n margin-right: 0;\n border-radius: 4px;\n}\n.nav-tabs-justified > .active > a,\n.nav-tabs-justified > .active > a:hover,\n.nav-tabs-justified > .active > a:focus {\n border: 1px solid #dddddd;\n}\n@media (min-width: 768px) {\n .nav-tabs-justified > li > a {\n border-bottom: 1px solid #dddddd;\n border-radius: 4px 4px 0 0;\n }\n .nav-tabs-justified > .active > a,\n .nav-tabs-justified > .active > a:hover,\n .nav-tabs-justified > .active > a:focus {\n border-bottom-color: #ffffff;\n }\n}\n.tab-content > .tab-pane {\n display: none;\n}\n.tab-content > .active {\n display: block;\n}\n.nav-tabs .dropdown-menu {\n margin-top: -1px;\n border-top-right-radius: 0;\n border-top-left-radius: 0;\n}\n.navbar {\n position: relative;\n min-height: 50px;\n margin-bottom: 20px;\n border: 1px solid transparent;\n}\n@media (min-width: 768px) {\n .navbar {\n border-radius: 4px;\n }\n}\n@media (min-width: 768px) {\n .navbar-header {\n float: left;\n }\n}\n.navbar-collapse {\n overflow-x: visible;\n padding-right: 15px;\n padding-left: 15px;\n border-top: 1px solid transparent;\n box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1);\n -webkit-overflow-scrolling: touch;\n}\n.navbar-collapse.in {\n overflow-y: auto;\n}\n@media (min-width: 768px) {\n .navbar-collapse {\n width: auto;\n border-top: 0;\n box-shadow: none;\n }\n .navbar-collapse.collapse {\n display: block !important;\n height: auto !important;\n padding-bottom: 0;\n overflow: visible !important;\n }\n .navbar-collapse.in {\n overflow-y: visible;\n }\n .navbar-fixed-top .navbar-collapse,\n .navbar-static-top .navbar-collapse,\n .navbar-fixed-bottom .navbar-collapse {\n padding-left: 0;\n padding-right: 0;\n }\n}\n.navbar-fixed-top .navbar-collapse,\n.navbar-fixed-bottom .navbar-collapse {\n max-height: 340px;\n}\n@media (max-device-width: 480px) and (orientation: landscape) {\n .navbar-fixed-top .navbar-collapse,\n .navbar-fixed-bottom .navbar-collapse {\n max-height: 200px;\n }\n}\n.container > .navbar-header,\n.container-fluid > .navbar-header,\n.container > .navbar-collapse,\n.container-fluid > .navbar-collapse {\n margin-right: -15px;\n margin-left: -15px;\n}\n@media (min-width: 768px) {\n .container > .navbar-header,\n .container-fluid > .navbar-header,\n .container > .navbar-collapse,\n .container-fluid > .navbar-collapse {\n margin-right: 0;\n margin-left: 0;\n }\n}\n.navbar-static-top {\n z-index: 1000;\n border-width: 0 0 1px;\n}\n@media (min-width: 768px) {\n .navbar-static-top {\n border-radius: 0;\n }\n}\n.navbar-fixed-top,\n.navbar-fixed-bottom {\n position: fixed;\n right: 0;\n left: 0;\n z-index: 1030;\n}\n@media (min-width: 768px) {\n .navbar-fixed-top,\n .navbar-fixed-bottom {\n border-radius: 0;\n }\n}\n.navbar-fixed-top {\n top: 0;\n border-width: 0 0 1px;\n}\n.navbar-fixed-bottom {\n bottom: 0;\n margin-bottom: 0;\n border-width: 1px 0 0;\n}\n.navbar-brand {\n float: left;\n padding: 15px 15px;\n font-size: 18px;\n line-height: 20px;\n height: 50px;\n}\n.navbar-brand:hover,\n.navbar-brand:focus {\n text-decoration: none;\n}\n.navbar-brand > img {\n display: block;\n}\n@media (min-width: 768px) {\n .navbar > .container .navbar-brand,\n .navbar > .container-fluid .navbar-brand {\n margin-left: -15px;\n }\n}\n.navbar-toggle {\n position: relative;\n float: right;\n margin-right: 15px;\n padding: 9px 10px;\n margin-top: 8px;\n margin-bottom: 8px;\n background-color: transparent;\n background-image: none;\n border: 1px solid transparent;\n border-radius: 4px;\n}\n.navbar-toggle:focus {\n outline: 0;\n}\n.navbar-toggle .icon-bar {\n display: block;\n width: 22px;\n height: 2px;\n border-radius: 1px;\n}\n.navbar-toggle .icon-bar + .icon-bar {\n margin-top: 4px;\n}\n@media (min-width: 768px) {\n .navbar-toggle {\n display: none;\n }\n}\n.navbar-nav {\n margin: 7.5px -15px;\n}\n.navbar-nav > li > a {\n padding-top: 10px;\n padding-bottom: 10px;\n line-height: 20px;\n}\n@media (max-width: 767px) {\n .navbar-nav .open .dropdown-menu {\n position: static;\n float: none;\n width: auto;\n margin-top: 0;\n background-color: transparent;\n border: 0;\n box-shadow: none;\n }\n .navbar-nav .open .dropdown-menu > li > a,\n .navbar-nav .open .dropdown-menu .dropdown-header {\n padding: 5px 15px 5px 25px;\n }\n .navbar-nav .open .dropdown-menu > li > a {\n line-height: 20px;\n }\n .navbar-nav .open .dropdown-menu > li > a:hover,\n .navbar-nav .open .dropdown-menu > li > a:focus {\n background-image: none;\n }\n}\n@media (min-width: 768px) {\n .navbar-nav {\n float: left;\n margin: 0;\n }\n .navbar-nav > li {\n float: left;\n }\n .navbar-nav > li > a {\n padding-top: 15px;\n padding-bottom: 15px;\n }\n}\n.navbar-form {\n margin-left: -15px;\n margin-right: -15px;\n padding: 10px 15px;\n border-top: 1px solid transparent;\n border-bottom: 1px solid transparent;\n -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 0 rgba(255, 255, 255, 0.1);\n box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 0 rgba(255, 255, 255, 0.1);\n margin-top: 8px;\n margin-bottom: 8px;\n}\n@media (min-width: 768px) {\n .navbar-form .form-group {\n display: inline-block;\n margin-bottom: 0;\n vertical-align: middle;\n }\n .navbar-form .form-control {\n display: inline-block;\n width: auto;\n vertical-align: middle;\n }\n .navbar-form .form-control-static {\n display: inline-block;\n }\n .navbar-form .input-group {\n display: inline-table;\n vertical-align: middle;\n }\n .navbar-form .input-group .input-group-addon,\n .navbar-form .input-group .input-group-btn,\n .navbar-form .input-group .form-control {\n width: auto;\n }\n .navbar-form .input-group > .form-control {\n width: 100%;\n }\n .navbar-form .control-label {\n margin-bottom: 0;\n vertical-align: middle;\n }\n .navbar-form .radio,\n .navbar-form .checkbox {\n display: inline-block;\n margin-top: 0;\n margin-bottom: 0;\n vertical-align: middle;\n }\n .navbar-form .radio label,\n .navbar-form .checkbox label {\n padding-left: 0;\n }\n .navbar-form .radio input[type=\"radio\"],\n .navbar-form .checkbox input[type=\"checkbox\"] {\n position: relative;\n margin-left: 0;\n }\n .navbar-form .has-feedback .form-control-feedback {\n top: 0;\n }\n}\n@media (max-width: 767px) {\n .navbar-form .form-group {\n margin-bottom: 5px;\n }\n .navbar-form .form-group:last-child {\n margin-bottom: 0;\n }\n}\n@media (min-width: 768px) {\n .navbar-form {\n width: auto;\n border: 0;\n margin-left: 0;\n margin-right: 0;\n padding-top: 0;\n padding-bottom: 0;\n -webkit-box-shadow: none;\n box-shadow: none;\n }\n}\n.navbar-nav > li > .dropdown-menu {\n margin-top: 0;\n border-top-right-radius: 0;\n border-top-left-radius: 0;\n}\n.navbar-fixed-bottom .navbar-nav > li > .dropdown-menu {\n margin-bottom: 0;\n border-top-right-radius: 4px;\n border-top-left-radius: 4px;\n border-bottom-right-radius: 0;\n border-bottom-left-radius: 0;\n}\n.navbar-btn {\n margin-top: 8px;\n margin-bottom: 8px;\n}\n.navbar-btn.btn-sm {\n margin-top: 10px;\n margin-bottom: 10px;\n}\n.navbar-btn.btn-xs {\n margin-top: 14px;\n margin-bottom: 14px;\n}\n.navbar-text {\n margin-top: 15px;\n margin-bottom: 15px;\n}\n@media (min-width: 768px) {\n .navbar-text {\n float: left;\n margin-left: 15px;\n margin-right: 15px;\n }\n}\n@media (min-width: 768px) {\n .navbar-left {\n float: left !important;\n }\n .navbar-right {\n float: right !important;\n margin-right: -15px;\n }\n .navbar-right ~ .navbar-right {\n margin-right: 0;\n }\n}\n.navbar-default {\n background-color: #f8f8f8;\n border-color: #e7e7e7;\n}\n.navbar-default .navbar-brand {\n color: #777777;\n}\n.navbar-default .navbar-brand:hover,\n.navbar-default .navbar-brand:focus {\n color: #5e5e5e;\n background-color: transparent;\n}\n.navbar-default .navbar-text {\n color: #777777;\n}\n.navbar-default .navbar-nav > li > a {\n color: #777777;\n}\n.navbar-default .navbar-nav > li > a:hover,\n.navbar-default .navbar-nav > li > a:focus {\n color: #333333;\n background-color: transparent;\n}\n.navbar-default .navbar-nav > .active > a,\n.navbar-default .navbar-nav > .active > a:hover,\n.navbar-default .navbar-nav > .active > a:focus {\n color: #555555;\n background-color: #e7e7e7;\n}\n.navbar-default .navbar-nav > .disabled > a,\n.navbar-default .navbar-nav > .disabled > a:hover,\n.navbar-default .navbar-nav > .disabled > a:focus {\n color: #cccccc;\n background-color: transparent;\n}\n.navbar-default .navbar-toggle {\n border-color: #dddddd;\n}\n.navbar-default .navbar-toggle:hover,\n.navbar-default .navbar-toggle:focus {\n background-color: #dddddd;\n}\n.navbar-default .navbar-toggle .icon-bar {\n background-color: #888888;\n}\n.navbar-default .navbar-collapse,\n.navbar-default .navbar-form {\n border-color: #e7e7e7;\n}\n.navbar-default .navbar-nav > .open > a,\n.navbar-default .navbar-nav > .open > a:hover,\n.navbar-default .navbar-nav > .open > a:focus {\n background-color: #e7e7e7;\n color: #555555;\n}\n@media (max-width: 767px) {\n .navbar-default .navbar-nav .open .dropdown-menu > li > a {\n color: #777777;\n }\n .navbar-default .navbar-nav .open .dropdown-menu > li > a:hover,\n .navbar-default .navbar-nav .open .dropdown-menu > li > a:focus {\n color: #333333;\n background-color: transparent;\n }\n .navbar-default .navbar-nav .open .dropdown-menu > .active > a,\n .navbar-default .navbar-nav .open .dropdown-menu > .active > a:hover,\n .navbar-default .navbar-nav .open .dropdown-menu > .active > a:focus {\n color: #555555;\n background-color: #e7e7e7;\n }\n .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a,\n .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a:hover,\n .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a:focus {\n color: #cccccc;\n background-color: transparent;\n }\n}\n.navbar-default .navbar-link {\n color: #777777;\n}\n.navbar-default .navbar-link:hover {\n color: #333333;\n}\n.navbar-default .btn-link {\n color: #777777;\n}\n.navbar-default .btn-link:hover,\n.navbar-default .btn-link:focus {\n color: #333333;\n}\n.navbar-default .btn-link[disabled]:hover,\nfieldset[disabled] .navbar-default .btn-link:hover,\n.navbar-default .btn-link[disabled]:focus,\nfieldset[disabled] .navbar-default .btn-link:focus {\n color: #cccccc;\n}\n.navbar-inverse {\n background-color: #222222;\n border-color: #080808;\n}\n.navbar-inverse .navbar-brand {\n color: #9d9d9d;\n}\n.navbar-inverse .navbar-brand:hover,\n.navbar-inverse .navbar-brand:focus {\n color: #ffffff;\n background-color: transparent;\n}\n.navbar-inverse .navbar-text {\n color: #9d9d9d;\n}\n.navbar-inverse .navbar-nav > li > a {\n color: #9d9d9d;\n}\n.navbar-inverse .navbar-nav > li > a:hover,\n.navbar-inverse .navbar-nav > li > a:focus {\n color: #ffffff;\n background-color: transparent;\n}\n.navbar-inverse .navbar-nav > .active > a,\n.navbar-inverse .navbar-nav > .active > a:hover,\n.navbar-inverse .navbar-nav > .active > a:focus {\n color: #ffffff;\n background-color: #080808;\n}\n.navbar-inverse .navbar-nav > .disabled > a,\n.navbar-inverse .navbar-nav > .disabled > a:hover,\n.navbar-inverse .navbar-nav > .disabled > a:focus {\n color: #444444;\n background-color: transparent;\n}\n.navbar-inverse .navbar-toggle {\n border-color: #333333;\n}\n.navbar-inverse .navbar-toggle:hover,\n.navbar-inverse .navbar-toggle:focus {\n background-color: #333333;\n}\n.navbar-inverse .navbar-toggle .icon-bar {\n background-color: #ffffff;\n}\n.navbar-inverse .navbar-collapse,\n.navbar-inverse .navbar-form {\n border-color: #101010;\n}\n.navbar-inverse .navbar-nav > .open > a,\n.navbar-inverse .navbar-nav > .open > a:hover,\n.navbar-inverse .navbar-nav > .open > a:focus {\n background-color: #080808;\n color: #ffffff;\n}\n@media (max-width: 767px) {\n .navbar-inverse .navbar-nav .open .dropdown-menu > .dropdown-header {\n border-color: #080808;\n }\n .navbar-inverse .navbar-nav .open .dropdown-menu .divider {\n background-color: #080808;\n }\n .navbar-inverse .navbar-nav .open .dropdown-menu > li > a {\n color: #9d9d9d;\n }\n .navbar-inverse .navbar-nav .open .dropdown-menu > li > a:hover,\n .navbar-inverse .navbar-nav .open .dropdown-menu > li > a:focus {\n color: #ffffff;\n background-color: transparent;\n }\n .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a,\n .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a:hover,\n .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a:focus {\n color: #ffffff;\n background-color: #080808;\n }\n .navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a,\n .navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a:hover,\n .navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a:focus {\n color: #444444;\n background-color: transparent;\n }\n}\n.navbar-inverse .navbar-link {\n color: #9d9d9d;\n}\n.navbar-inverse .navbar-link:hover {\n color: #ffffff;\n}\n.navbar-inverse .btn-link {\n color: #9d9d9d;\n}\n.navbar-inverse .btn-link:hover,\n.navbar-inverse .btn-link:focus {\n color: #ffffff;\n}\n.navbar-inverse .btn-link[disabled]:hover,\nfieldset[disabled] .navbar-inverse .btn-link:hover,\n.navbar-inverse .btn-link[disabled]:focus,\nfieldset[disabled] .navbar-inverse .btn-link:focus {\n color: #444444;\n}\n.breadcrumb {\n padding: 8px 15px;\n margin-bottom: 20px;\n list-style: none;\n background-color: #f5f5f5;\n border-radius: 4px;\n}\n.breadcrumb > li {\n display: inline-block;\n}\n.breadcrumb > li + li:before {\n content: \"/\\00a0\";\n padding: 0 5px;\n color: #cccccc;\n}\n.breadcrumb > .active {\n color: #777777;\n}\n.pagination {\n display: inline-block;\n padding-left: 0;\n margin: 20px 0;\n border-radius: 4px;\n}\n.pagination > li {\n display: inline;\n}\n.pagination > li > a,\n.pagination > li > span {\n position: relative;\n float: left;\n padding: 6px 12px;\n line-height: 1.42857143;\n text-decoration: none;\n color: #337ab7;\n background-color: #ffffff;\n border: 1px solid #dddddd;\n margin-left: -1px;\n}\n.pagination > li:first-child > a,\n.pagination > li:first-child > span {\n margin-left: 0;\n border-bottom-left-radius: 4px;\n border-top-left-radius: 4px;\n}\n.pagination > li:last-child > a,\n.pagination > li:last-child > span {\n border-bottom-right-radius: 4px;\n border-top-right-radius: 4px;\n}\n.pagination > li > a:hover,\n.pagination > li > span:hover,\n.pagination > li > a:focus,\n.pagination > li > span:focus {\n color: #23527c;\n background-color: #eeeeee;\n border-color: #dddddd;\n}\n.pagination > .active > a,\n.pagination > .active > span,\n.pagination > .active > a:hover,\n.pagination > .active > span:hover,\n.pagination > .active > a:focus,\n.pagination > .active > span:focus {\n z-index: 2;\n color: #ffffff;\n background-color: #337ab7;\n border-color: #337ab7;\n cursor: default;\n}\n.pagination > .disabled > span,\n.pagination > .disabled > span:hover,\n.pagination > .disabled > span:focus,\n.pagination > .disabled > a,\n.pagination > .disabled > a:hover,\n.pagination > .disabled > a:focus {\n color: #777777;\n background-color: #ffffff;\n border-color: #dddddd;\n cursor: not-allowed;\n}\n.pagination-lg > li > a,\n.pagination-lg > li > span {\n padding: 10px 16px;\n font-size: 18px;\n}\n.pagination-lg > li:first-child > a,\n.pagination-lg > li:first-child > span {\n border-bottom-left-radius: 6px;\n border-top-left-radius: 6px;\n}\n.pagination-lg > li:last-child > a,\n.pagination-lg > li:last-child > span {\n border-bottom-right-radius: 6px;\n border-top-right-radius: 6px;\n}\n.pagination-sm > li > a,\n.pagination-sm > li > span {\n padding: 5px 10px;\n font-size: 12px;\n}\n.pagination-sm > li:first-child > a,\n.pagination-sm > li:first-child > span {\n border-bottom-left-radius: 3px;\n border-top-left-radius: 3px;\n}\n.pagination-sm > li:last-child > a,\n.pagination-sm > li:last-child > span {\n border-bottom-right-radius: 3px;\n border-top-right-radius: 3px;\n}\n.pager {\n padding-left: 0;\n margin: 20px 0;\n list-style: none;\n text-align: center;\n}\n.pager li {\n display: inline;\n}\n.pager li > a,\n.pager li > span {\n display: inline-block;\n padding: 5px 14px;\n background-color: #ffffff;\n border: 1px solid #dddddd;\n border-radius: 15px;\n}\n.pager li > a:hover,\n.pager li > a:focus {\n text-decoration: none;\n background-color: #eeeeee;\n}\n.pager .next > a,\n.pager .next > span {\n float: right;\n}\n.pager .previous > a,\n.pager .previous > span {\n float: left;\n}\n.pager .disabled > a,\n.pager .disabled > a:hover,\n.pager .disabled > a:focus,\n.pager .disabled > span {\n color: #777777;\n background-color: #ffffff;\n cursor: not-allowed;\n}\n.label {\n display: inline;\n padding: .2em .6em .3em;\n font-size: 75%;\n font-weight: bold;\n line-height: 1;\n color: #ffffff;\n text-align: center;\n white-space: nowrap;\n vertical-align: baseline;\n border-radius: .25em;\n}\na.label:hover,\na.label:focus {\n color: #ffffff;\n text-decoration: none;\n cursor: pointer;\n}\n.label:empty {\n display: none;\n}\n.btn .label {\n position: relative;\n top: -1px;\n}\n.label-default {\n background-color: #777777;\n}\n.label-default[href]:hover,\n.label-default[href]:focus {\n background-color: #5e5e5e;\n}\n.label-primary {\n background-color: #337ab7;\n}\n.label-primary[href]:hover,\n.label-primary[href]:focus {\n background-color: #286090;\n}\n.label-success {\n background-color: #5cb85c;\n}\n.label-success[href]:hover,\n.label-success[href]:focus {\n background-color: #449d44;\n}\n.label-info {\n background-color: #5bc0de;\n}\n.label-info[href]:hover,\n.label-info[href]:focus {\n background-color: #31b0d5;\n}\n.label-warning {\n background-color: #f0ad4e;\n}\n.label-warning[href]:hover,\n.label-warning[href]:focus {\n background-color: #ec971f;\n}\n.label-danger {\n background-color: #d9534f;\n}\n.label-danger[href]:hover,\n.label-danger[href]:focus {\n background-color: #c9302c;\n}\n.badge {\n display: inline-block;\n min-width: 10px;\n padding: 3px 7px;\n font-size: 12px;\n font-weight: bold;\n color: #ffffff;\n line-height: 1;\n vertical-align: baseline;\n white-space: nowrap;\n text-align: center;\n background-color: #777777;\n border-radius: 10px;\n}\n.badge:empty {\n display: none;\n}\n.btn .badge {\n position: relative;\n top: -1px;\n}\n.btn-xs .badge,\n.btn-group-xs > .btn .badge {\n top: 0;\n padding: 1px 5px;\n}\na.badge:hover,\na.badge:focus {\n color: #ffffff;\n text-decoration: none;\n cursor: pointer;\n}\n.list-group-item.active > .badge,\n.nav-pills > .active > a > .badge {\n color: #337ab7;\n background-color: #ffffff;\n}\n.list-group-item > .badge {\n float: right;\n}\n.list-group-item > .badge + .badge {\n margin-right: 5px;\n}\n.nav-pills > li > a > .badge {\n margin-left: 3px;\n}\n.jumbotron {\n padding: 30px 15px;\n margin-bottom: 30px;\n color: inherit;\n background-color: #eeeeee;\n}\n.jumbotron h1,\n.jumbotron .h1 {\n color: inherit;\n}\n.jumbotron p {\n margin-bottom: 15px;\n font-size: 21px;\n font-weight: 200;\n}\n.jumbotron > hr {\n border-top-color: #d5d5d5;\n}\n.container .jumbotron,\n.container-fluid .jumbotron {\n border-radius: 6px;\n}\n.jumbotron .container {\n max-width: 100%;\n}\n@media screen and (min-width: 768px) {\n .jumbotron {\n padding: 48px 0;\n }\n .container .jumbotron,\n .container-fluid .jumbotron {\n padding-left: 60px;\n padding-right: 60px;\n }\n .jumbotron h1,\n .jumbotron .h1 {\n font-size: 63px;\n }\n}\n.thumbnail {\n display: block;\n padding: 4px;\n margin-bottom: 20px;\n line-height: 1.42857143;\n background-color: #ffffff;\n border: 1px solid #dddddd;\n border-radius: 4px;\n -webkit-transition: border 0.2s ease-in-out;\n -o-transition: border 0.2s ease-in-out;\n transition: border 0.2s ease-in-out;\n}\n.thumbnail > img,\n.thumbnail a > img {\n margin-left: auto;\n margin-right: auto;\n}\na.thumbnail:hover,\na.thumbnail:focus,\na.thumbnail.active {\n border-color: #337ab7;\n}\n.thumbnail .caption {\n padding: 9px;\n color: #333333;\n}\n.alert {\n padding: 15px;\n margin-bottom: 20px;\n border: 1px solid transparent;\n border-radius: 4px;\n}\n.alert h4 {\n margin-top: 0;\n color: inherit;\n}\n.alert .alert-link {\n font-weight: bold;\n}\n.alert > p,\n.alert > ul {\n margin-bottom: 0;\n}\n.alert > p + p {\n margin-top: 5px;\n}\n.alert-dismissable,\n.alert-dismissible {\n padding-right: 35px;\n}\n.alert-dismissable .close,\n.alert-dismissible .close {\n position: relative;\n top: -2px;\n right: -21px;\n color: inherit;\n}\n.alert-success {\n background-color: #dff0d8;\n border-color: #d6e9c6;\n color: #3c763d;\n}\n.alert-success hr {\n border-top-color: #c9e2b3;\n}\n.alert-success .alert-link {\n color: #2b542c;\n}\n.alert-info {\n background-color: #d9edf7;\n border-color: #bce8f1;\n color: #31708f;\n}\n.alert-info hr {\n border-top-color: #a6e1ec;\n}\n.alert-info .alert-link {\n color: #245269;\n}\n.alert-warning {\n background-color: #fcf8e3;\n border-color: #faebcc;\n color: #8a6d3b;\n}\n.alert-warning hr {\n border-top-color: #f7e1b5;\n}\n.alert-warning .alert-link {\n color: #66512c;\n}\n.alert-danger {\n background-color: #f2dede;\n border-color: #ebccd1;\n color: #a94442;\n}\n.alert-danger hr {\n border-top-color: #e4b9c0;\n}\n.alert-danger .alert-link {\n color: #843534;\n}\n@-webkit-keyframes progress-bar-stripes {\n from {\n background-position: 40px 0;\n }\n to {\n background-position: 0 0;\n }\n}\n@keyframes progress-bar-stripes {\n from {\n background-position: 40px 0;\n }\n to {\n background-position: 0 0;\n }\n}\n.progress {\n overflow: hidden;\n height: 20px;\n margin-bottom: 20px;\n background-color: #f5f5f5;\n border-radius: 4px;\n -webkit-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1);\n box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1);\n}\n.progress-bar {\n float: left;\n width: 0%;\n height: 100%;\n font-size: 12px;\n line-height: 20px;\n color: #ffffff;\n text-align: center;\n background-color: #337ab7;\n -webkit-box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15);\n box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15);\n -webkit-transition: width 0.6s ease;\n -o-transition: width 0.6s ease;\n transition: width 0.6s ease;\n}\n.progress-striped .progress-bar,\n.progress-bar-striped {\n background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n background-size: 40px 40px;\n}\n.progress.active .progress-bar,\n.progress-bar.active {\n -webkit-animation: progress-bar-stripes 2s linear infinite;\n -o-animation: progress-bar-stripes 2s linear infinite;\n animation: progress-bar-stripes 2s linear infinite;\n}\n.progress-bar-success {\n background-color: #5cb85c;\n}\n.progress-striped .progress-bar-success {\n background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n}\n.progress-bar-info {\n background-color: #5bc0de;\n}\n.progress-striped .progress-bar-info {\n background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n}\n.progress-bar-warning {\n background-color: #f0ad4e;\n}\n.progress-striped .progress-bar-warning {\n background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n}\n.progress-bar-danger {\n background-color: #d9534f;\n}\n.progress-striped .progress-bar-danger {\n background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n}\n.media {\n margin-top: 15px;\n}\n.media:first-child {\n margin-top: 0;\n}\n.media,\n.media-body {\n zoom: 1;\n overflow: hidden;\n}\n.media-body {\n width: 10000px;\n}\n.media-object {\n display: block;\n}\n.media-right,\n.media > .pull-right {\n padding-left: 10px;\n}\n.media-left,\n.media > .pull-left {\n padding-right: 10px;\n}\n.media-left,\n.media-right,\n.media-body {\n display: table-cell;\n vertical-align: top;\n}\n.media-middle {\n vertical-align: middle;\n}\n.media-bottom {\n vertical-align: bottom;\n}\n.media-heading {\n margin-top: 0;\n margin-bottom: 5px;\n}\n.media-list {\n padding-left: 0;\n list-style: none;\n}\n.list-group {\n margin-bottom: 20px;\n padding-left: 0;\n}\n.list-group-item {\n position: relative;\n display: block;\n padding: 10px 15px;\n margin-bottom: -1px;\n background-color: #ffffff;\n border: 1px solid #dddddd;\n}\n.list-group-item:first-child {\n border-top-right-radius: 4px;\n border-top-left-radius: 4px;\n}\n.list-group-item:last-child {\n margin-bottom: 0;\n border-bottom-right-radius: 4px;\n border-bottom-left-radius: 4px;\n}\na.list-group-item {\n color: #555555;\n}\na.list-group-item .list-group-item-heading {\n color: #333333;\n}\na.list-group-item:hover,\na.list-group-item:focus {\n text-decoration: none;\n color: #555555;\n background-color: #f5f5f5;\n}\n.list-group-item.disabled,\n.list-group-item.disabled:hover,\n.list-group-item.disabled:focus {\n background-color: #eeeeee;\n color: #777777;\n cursor: not-allowed;\n}\n.list-group-item.disabled .list-group-item-heading,\n.list-group-item.disabled:hover .list-group-item-heading,\n.list-group-item.disabled:focus .list-group-item-heading {\n color: inherit;\n}\n.list-group-item.disabled .list-group-item-text,\n.list-group-item.disabled:hover .list-group-item-text,\n.list-group-item.disabled:focus .list-group-item-text {\n color: #777777;\n}\n.list-group-item.active,\n.list-group-item.active:hover,\n.list-group-item.active:focus {\n z-index: 2;\n color: #ffffff;\n background-color: #337ab7;\n border-color: #337ab7;\n}\n.list-group-item.active .list-group-item-heading,\n.list-group-item.active:hover .list-group-item-heading,\n.list-group-item.active:focus .list-group-item-heading,\n.list-group-item.active .list-group-item-heading > small,\n.list-group-item.active:hover .list-group-item-heading > small,\n.list-group-item.active:focus .list-group-item-heading > small,\n.list-group-item.active .list-group-item-heading > .small,\n.list-group-item.active:hover .list-group-item-heading > .small,\n.list-group-item.active:focus .list-group-item-heading > .small {\n color: inherit;\n}\n.list-group-item.active .list-group-item-text,\n.list-group-item.active:hover .list-group-item-text,\n.list-group-item.active:focus .list-group-item-text {\n color: #c7ddef;\n}\n.list-group-item-success {\n color: #3c763d;\n background-color: #dff0d8;\n}\na.list-group-item-success {\n color: #3c763d;\n}\na.list-group-item-success .list-group-item-heading {\n color: inherit;\n}\na.list-group-item-success:hover,\na.list-group-item-success:focus {\n color: #3c763d;\n background-color: #d0e9c6;\n}\na.list-group-item-success.active,\na.list-group-item-success.active:hover,\na.list-group-item-success.active:focus {\n color: #fff;\n background-color: #3c763d;\n border-color: #3c763d;\n}\n.list-group-item-info {\n color: #31708f;\n background-color: #d9edf7;\n}\na.list-group-item-info {\n color: #31708f;\n}\na.list-group-item-info .list-group-item-heading {\n color: inherit;\n}\na.list-group-item-info:hover,\na.list-group-item-info:focus {\n color: #31708f;\n background-color: #c4e3f3;\n}\na.list-group-item-info.active,\na.list-group-item-info.active:hover,\na.list-group-item-info.active:focus {\n color: #fff;\n background-color: #31708f;\n border-color: #31708f;\n}\n.list-group-item-warning {\n color: #8a6d3b;\n background-color: #fcf8e3;\n}\na.list-group-item-warning {\n color: #8a6d3b;\n}\na.list-group-item-warning .list-group-item-heading {\n color: inherit;\n}\na.list-group-item-warning:hover,\na.list-group-item-warning:focus {\n color: #8a6d3b;\n background-color: #faf2cc;\n}\na.list-group-item-warning.active,\na.list-group-item-warning.active:hover,\na.list-group-item-warning.active:focus {\n color: #fff;\n background-color: #8a6d3b;\n border-color: #8a6d3b;\n}\n.list-group-item-danger {\n color: #a94442;\n background-color: #f2dede;\n}\na.list-group-item-danger {\n color: #a94442;\n}\na.list-group-item-danger .list-group-item-heading {\n color: inherit;\n}\na.list-group-item-danger:hover,\na.list-group-item-danger:focus {\n color: #a94442;\n background-color: #ebcccc;\n}\na.list-group-item-danger.active,\na.list-group-item-danger.active:hover,\na.list-group-item-danger.active:focus {\n color: #fff;\n background-color: #a94442;\n border-color: #a94442;\n}\n.list-group-item-heading {\n margin-top: 0;\n margin-bottom: 5px;\n}\n.list-group-item-text {\n margin-bottom: 0;\n line-height: 1.3;\n}\n.panel {\n margin-bottom: 20px;\n background-color: #ffffff;\n border: 1px solid transparent;\n border-radius: 4px;\n -webkit-box-shadow: 0 1px 1px rgba(0, 0, 0, 0.05);\n box-shadow: 0 1px 1px rgba(0, 0, 0, 0.05);\n}\n.panel-body {\n padding: 15px;\n}\n.panel-heading {\n padding: 10px 15px;\n border-bottom: 1px solid transparent;\n border-top-right-radius: 3px;\n border-top-left-radius: 3px;\n}\n.panel-heading > .dropdown .dropdown-toggle {\n color: inherit;\n}\n.panel-title {\n margin-top: 0;\n margin-bottom: 0;\n font-size: 16px;\n color: inherit;\n}\n.panel-title > a,\n.panel-title > small,\n.panel-title > .small,\n.panel-title > small > a,\n.panel-title > .small > a {\n color: inherit;\n}\n.panel-footer {\n padding: 10px 15px;\n background-color: #f5f5f5;\n border-top: 1px solid #dddddd;\n border-bottom-right-radius: 3px;\n border-bottom-left-radius: 3px;\n}\n.panel > .list-group,\n.panel > .panel-collapse > .list-group {\n margin-bottom: 0;\n}\n.panel > .list-group .list-group-item,\n.panel > .panel-collapse > .list-group .list-group-item {\n border-width: 1px 0;\n border-radius: 0;\n}\n.panel > .list-group:first-child .list-group-item:first-child,\n.panel > .panel-collapse > .list-group:first-child .list-group-item:first-child {\n border-top: 0;\n border-top-right-radius: 3px;\n border-top-left-radius: 3px;\n}\n.panel > .list-group:last-child .list-group-item:last-child,\n.panel > .panel-collapse > .list-group:last-child .list-group-item:last-child {\n border-bottom: 0;\n border-bottom-right-radius: 3px;\n border-bottom-left-radius: 3px;\n}\n.panel-heading + .list-group .list-group-item:first-child {\n border-top-width: 0;\n}\n.list-group + .panel-footer {\n border-top-width: 0;\n}\n.panel > .table,\n.panel > .table-responsive > .table,\n.panel > .panel-collapse > .table {\n margin-bottom: 0;\n}\n.panel > .table caption,\n.panel > .table-responsive > .table caption,\n.panel > .panel-collapse > .table caption {\n padding-left: 15px;\n padding-right: 15px;\n}\n.panel > .table:first-child,\n.panel > .table-responsive:first-child > .table:first-child {\n border-top-right-radius: 3px;\n border-top-left-radius: 3px;\n}\n.panel > .table:first-child > thead:first-child > tr:first-child,\n.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child,\n.panel > .table:first-child > tbody:first-child > tr:first-child,\n.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child {\n border-top-left-radius: 3px;\n border-top-right-radius: 3px;\n}\n.panel > .table:first-child > thead:first-child > tr:first-child td:first-child,\n.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child td:first-child,\n.panel > .table:first-child > tbody:first-child > tr:first-child td:first-child,\n.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child td:first-child,\n.panel > .table:first-child > thead:first-child > tr:first-child th:first-child,\n.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child th:first-child,\n.panel > .table:first-child > tbody:first-child > tr:first-child th:first-child,\n.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child th:first-child {\n border-top-left-radius: 3px;\n}\n.panel > .table:first-child > thead:first-child > tr:first-child td:last-child,\n.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child td:last-child,\n.panel > .table:first-child > tbody:first-child > tr:first-child td:last-child,\n.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child td:last-child,\n.panel > .table:first-child > thead:first-child > tr:first-child th:last-child,\n.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child th:last-child,\n.panel > .table:first-child > tbody:first-child > tr:first-child th:last-child,\n.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child th:last-child {\n border-top-right-radius: 3px;\n}\n.panel > .table:last-child,\n.panel > .table-responsive:last-child > .table:last-child {\n border-bottom-right-radius: 3px;\n border-bottom-left-radius: 3px;\n}\n.panel > .table:last-child > tbody:last-child > tr:last-child,\n.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child,\n.panel > .table:last-child > tfoot:last-child > tr:last-child,\n.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child {\n border-bottom-left-radius: 3px;\n border-bottom-right-radius: 3px;\n}\n.panel > .table:last-child > tbody:last-child > tr:last-child td:first-child,\n.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child td:first-child,\n.panel > .table:last-child > tfoot:last-child > tr:last-child td:first-child,\n.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child td:first-child,\n.panel > .table:last-child > tbody:last-child > tr:last-child th:first-child,\n.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child th:first-child,\n.panel > .table:last-child > tfoot:last-child > tr:last-child th:first-child,\n.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child th:first-child {\n border-bottom-left-radius: 3px;\n}\n.panel > .table:last-child > tbody:last-child > tr:last-child td:last-child,\n.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child td:last-child,\n.panel > .table:last-child > tfoot:last-child > tr:last-child td:last-child,\n.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child td:last-child,\n.panel > .table:last-child > tbody:last-child > tr:last-child th:last-child,\n.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child th:last-child,\n.panel > .table:last-child > tfoot:last-child > tr:last-child th:last-child,\n.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child th:last-child {\n border-bottom-right-radius: 3px;\n}\n.panel > .panel-body + .table,\n.panel > .panel-body + .table-responsive,\n.panel > .table + .panel-body,\n.panel > .table-responsive + .panel-body {\n border-top: 1px solid #dddddd;\n}\n.panel > .table > tbody:first-child > tr:first-child th,\n.panel > .table > tbody:first-child > tr:first-child td {\n border-top: 0;\n}\n.panel > .table-bordered,\n.panel > .table-responsive > .table-bordered {\n border: 0;\n}\n.panel > .table-bordered > thead > tr > th:first-child,\n.panel > .table-responsive > .table-bordered > thead > tr > th:first-child,\n.panel > .table-bordered > tbody > tr > th:first-child,\n.panel > .table-responsive > .table-bordered > tbody > tr > th:first-child,\n.panel > .table-bordered > tfoot > tr > th:first-child,\n.panel > .table-responsive > .table-bordered > tfoot > tr > th:first-child,\n.panel > .table-bordered > thead > tr > td:first-child,\n.panel > .table-responsive > .table-bordered > thead > tr > td:first-child,\n.panel > .table-bordered > tbody > tr > td:first-child,\n.panel > .table-responsive > .table-bordered > tbody > tr > td:first-child,\n.panel > .table-bordered > tfoot > tr > td:first-child,\n.panel > .table-responsive > .table-bordered > tfoot > tr > td:first-child {\n border-left: 0;\n}\n.panel > .table-bordered > thead > tr > th:last-child,\n.panel > .table-responsive > .table-bordered > thead > tr > th:last-child,\n.panel > .table-bordered > tbody > tr > th:last-child,\n.panel > .table-responsive > .table-bordered > tbody > tr > th:last-child,\n.panel > .table-bordered > tfoot > tr > th:last-child,\n.panel > .table-responsive > .table-bordered > tfoot > tr > th:last-child,\n.panel > .table-bordered > thead > tr > td:last-child,\n.panel > .table-responsive > .table-bordered > thead > tr > td:last-child,\n.panel > .table-bordered > tbody > tr > td:last-child,\n.panel > .table-responsive > .table-bordered > tbody > tr > td:last-child,\n.panel > .table-bordered > tfoot > tr > td:last-child,\n.panel > .table-responsive > .table-bordered > tfoot > tr > td:last-child {\n border-right: 0;\n}\n.panel > .table-bordered > thead > tr:first-child > td,\n.panel > .table-responsive > .table-bordered > thead > tr:first-child > td,\n.panel > .table-bordered > tbody > tr:first-child > td,\n.panel > .table-responsive > .table-bordered > tbody > tr:first-child > td,\n.panel > .table-bordered > thead > tr:first-child > th,\n.panel > .table-responsive > .table-bordered > thead > tr:first-child > th,\n.panel > .table-bordered > tbody > tr:first-child > th,\n.panel > .table-responsive > .table-bordered > tbody > tr:first-child > th {\n border-bottom: 0;\n}\n.panel > .table-bordered > tbody > tr:last-child > td,\n.panel > .table-responsive > .table-bordered > tbody > tr:last-child > td,\n.panel > .table-bordered > tfoot > tr:last-child > td,\n.panel > .table-responsive > .table-bordered > tfoot > tr:last-child > td,\n.panel > .table-bordered > tbody > tr:last-child > th,\n.panel > .table-responsive > .table-bordered > tbody > tr:last-child > th,\n.panel > .table-bordered > tfoot > tr:last-child > th,\n.panel > .table-responsive > .table-bordered > tfoot > tr:last-child > th {\n border-bottom: 0;\n}\n.panel > .table-responsive {\n border: 0;\n margin-bottom: 0;\n}\n.panel-group {\n margin-bottom: 20px;\n}\n.panel-group .panel {\n margin-bottom: 0;\n border-radius: 4px;\n}\n.panel-group .panel + .panel {\n margin-top: 5px;\n}\n.panel-group .panel-heading {\n border-bottom: 0;\n}\n.panel-group .panel-heading + .panel-collapse > .panel-body,\n.panel-group .panel-heading + .panel-collapse > .list-group {\n border-top: 1px solid #dddddd;\n}\n.panel-group .panel-footer {\n border-top: 0;\n}\n.panel-group .panel-footer + .panel-collapse .panel-body {\n border-bottom: 1px solid #dddddd;\n}\n.panel-default {\n border-color: #dddddd;\n}\n.panel-default > .panel-heading {\n color: #333333;\n background-color: #f5f5f5;\n border-color: #dddddd;\n}\n.panel-default > .panel-heading + .panel-collapse > .panel-body {\n border-top-color: #dddddd;\n}\n.panel-default > .panel-heading .badge {\n color: #f5f5f5;\n background-color: #333333;\n}\n.panel-default > .panel-footer + .panel-collapse > .panel-body {\n border-bottom-color: #dddddd;\n}\n.panel-primary {\n border-color: #337ab7;\n}\n.panel-primary > .panel-heading {\n color: #ffffff;\n background-color: #337ab7;\n border-color: #337ab7;\n}\n.panel-primary > .panel-heading + .panel-collapse > .panel-body {\n border-top-color: #337ab7;\n}\n.panel-primary > .panel-heading .badge {\n color: #337ab7;\n background-color: #ffffff;\n}\n.panel-primary > .panel-footer + .panel-collapse > .panel-body {\n border-bottom-color: #337ab7;\n}\n.panel-success {\n border-color: #d6e9c6;\n}\n.panel-success > .panel-heading {\n color: #3c763d;\n background-color: #dff0d8;\n border-color: #d6e9c6;\n}\n.panel-success > .panel-heading + .panel-collapse > .panel-body {\n border-top-color: #d6e9c6;\n}\n.panel-success > .panel-heading .badge {\n color: #dff0d8;\n background-color: #3c763d;\n}\n.panel-success > .panel-footer + .panel-collapse > .panel-body {\n border-bottom-color: #d6e9c6;\n}\n.panel-info {\n border-color: #bce8f1;\n}\n.panel-info > .panel-heading {\n color: #31708f;\n background-color: #d9edf7;\n border-color: #bce8f1;\n}\n.panel-info > .panel-heading + .panel-collapse > .panel-body {\n border-top-color: #bce8f1;\n}\n.panel-info > .panel-heading .badge {\n color: #d9edf7;\n background-color: #31708f;\n}\n.panel-info > .panel-footer + .panel-collapse > .panel-body {\n border-bottom-color: #bce8f1;\n}\n.panel-warning {\n border-color: #faebcc;\n}\n.panel-warning > .panel-heading {\n color: #8a6d3b;\n background-color: #fcf8e3;\n border-color: #faebcc;\n}\n.panel-warning > .panel-heading + .panel-collapse > .panel-body {\n border-top-color: #faebcc;\n}\n.panel-warning > .panel-heading .badge {\n color: #fcf8e3;\n background-color: #8a6d3b;\n}\n.panel-warning > .panel-footer + .panel-collapse > .panel-body {\n border-bottom-color: #faebcc;\n}\n.panel-danger {\n border-color: #ebccd1;\n}\n.panel-danger > .panel-heading {\n color: #a94442;\n background-color: #f2dede;\n border-color: #ebccd1;\n}\n.panel-danger > .panel-heading + .panel-collapse > .panel-body {\n border-top-color: #ebccd1;\n}\n.panel-danger > .panel-heading .badge {\n color: #f2dede;\n background-color: #a94442;\n}\n.panel-danger > .panel-footer + .panel-collapse > .panel-body {\n border-bottom-color: #ebccd1;\n}\n.embed-responsive {\n position: relative;\n display: block;\n height: 0;\n padding: 0;\n overflow: hidden;\n}\n.embed-responsive .embed-responsive-item,\n.embed-responsive iframe,\n.embed-responsive embed,\n.embed-responsive object,\n.embed-responsive video {\n position: absolute;\n top: 0;\n left: 0;\n bottom: 0;\n height: 100%;\n width: 100%;\n border: 0;\n}\n.embed-responsive-16by9 {\n padding-bottom: 56.25%;\n}\n.embed-responsive-4by3 {\n padding-bottom: 75%;\n}\n.well {\n min-height: 20px;\n padding: 19px;\n margin-bottom: 20px;\n background-color: #f5f5f5;\n border: 1px solid #e3e3e3;\n border-radius: 4px;\n -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05);\n box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05);\n}\n.well blockquote {\n border-color: #ddd;\n border-color: rgba(0, 0, 0, 0.15);\n}\n.well-lg {\n padding: 24px;\n border-radius: 6px;\n}\n.well-sm {\n padding: 9px;\n border-radius: 3px;\n}\n.close {\n float: right;\n font-size: 21px;\n font-weight: bold;\n line-height: 1;\n color: #000000;\n text-shadow: 0 1px 0 #ffffff;\n opacity: 0.2;\n filter: alpha(opacity=20);\n}\n.close:hover,\n.close:focus {\n color: #000000;\n text-decoration: none;\n cursor: pointer;\n opacity: 0.5;\n filter: alpha(opacity=50);\n}\nbutton.close {\n padding: 0;\n cursor: pointer;\n background: transparent;\n border: 0;\n -webkit-appearance: none;\n}\n.modal-open {\n overflow: hidden;\n}\n.modal {\n display: none;\n overflow: hidden;\n position: fixed;\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n z-index: 1050;\n -webkit-overflow-scrolling: touch;\n outline: 0;\n}\n.modal.fade .modal-dialog {\n -webkit-transform: translate(0, -25%);\n -ms-transform: translate(0, -25%);\n -o-transform: translate(0, -25%);\n transform: translate(0, -25%);\n -webkit-transition: -webkit-transform 0.3s ease-out;\n -moz-transition: -moz-transform 0.3s ease-out;\n -o-transition: -o-transform 0.3s ease-out;\n transition: transform 0.3s ease-out;\n}\n.modal.in .modal-dialog {\n -webkit-transform: translate(0, 0);\n -ms-transform: translate(0, 0);\n -o-transform: translate(0, 0);\n transform: translate(0, 0);\n}\n.modal-open .modal {\n overflow-x: hidden;\n overflow-y: auto;\n}\n.modal-dialog {\n position: relative;\n width: auto;\n margin: 10px;\n}\n.modal-content {\n position: relative;\n background-color: #ffffff;\n border: 1px solid #999999;\n border: 1px solid rgba(0, 0, 0, 0.2);\n border-radius: 6px;\n -webkit-box-shadow: 0 3px 9px rgba(0, 0, 0, 0.5);\n box-shadow: 0 3px 9px rgba(0, 0, 0, 0.5);\n background-clip: padding-box;\n outline: 0;\n}\n.modal-backdrop {\n position: fixed;\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n z-index: 1040;\n background-color: #000000;\n}\n.modal-backdrop.fade {\n opacity: 0;\n filter: alpha(opacity=0);\n}\n.modal-backdrop.in {\n opacity: 0.5;\n filter: alpha(opacity=50);\n}\n.modal-header {\n padding: 15px;\n border-bottom: 1px solid #e5e5e5;\n min-height: 16.42857143px;\n}\n.modal-header .close {\n margin-top: -2px;\n}\n.modal-title {\n margin: 0;\n line-height: 1.42857143;\n}\n.modal-body {\n position: relative;\n padding: 15px;\n}\n.modal-footer {\n padding: 15px;\n text-align: right;\n border-top: 1px solid #e5e5e5;\n}\n.modal-footer .btn + .btn {\n margin-left: 5px;\n margin-bottom: 0;\n}\n.modal-footer .btn-group .btn + .btn {\n margin-left: -1px;\n}\n.modal-footer .btn-block + .btn-block {\n margin-left: 0;\n}\n.modal-scrollbar-measure {\n position: absolute;\n top: -9999px;\n width: 50px;\n height: 50px;\n overflow: scroll;\n}\n@media (min-width: 768px) {\n .modal-dialog {\n width: 600px;\n margin: 30px auto;\n }\n .modal-content {\n -webkit-box-shadow: 0 5px 15px rgba(0, 0, 0, 0.5);\n box-shadow: 0 5px 15px rgba(0, 0, 0, 0.5);\n }\n .modal-sm {\n width: 300px;\n }\n}\n@media (min-width: 992px) {\n .modal-lg {\n width: 900px;\n }\n}\n.tooltip {\n position: absolute;\n z-index: 1070;\n display: block;\n font-family: \"Helvetica Neue\", Helvetica, Arial, sans-serif;\n font-size: 12px;\n font-weight: normal;\n line-height: 1.4;\n opacity: 0;\n filter: alpha(opacity=0);\n}\n.tooltip.in {\n opacity: 0.9;\n filter: alpha(opacity=90);\n}\n.tooltip.top {\n margin-top: -3px;\n padding: 5px 0;\n}\n.tooltip.right {\n margin-left: 3px;\n padding: 0 5px;\n}\n.tooltip.bottom {\n margin-top: 3px;\n padding: 5px 0;\n}\n.tooltip.left {\n margin-left: -3px;\n padding: 0 5px;\n}\n.tooltip-inner {\n max-width: 200px;\n padding: 3px 8px;\n color: #ffffff;\n text-align: center;\n text-decoration: none;\n background-color: #000000;\n border-radius: 4px;\n}\n.tooltip-arrow {\n position: absolute;\n width: 0;\n height: 0;\n border-color: transparent;\n border-style: solid;\n}\n.tooltip.top .tooltip-arrow {\n bottom: 0;\n left: 50%;\n margin-left: -5px;\n border-width: 5px 5px 0;\n border-top-color: #000000;\n}\n.tooltip.top-left .tooltip-arrow {\n bottom: 0;\n right: 5px;\n margin-bottom: -5px;\n border-width: 5px 5px 0;\n border-top-color: #000000;\n}\n.tooltip.top-right .tooltip-arrow {\n bottom: 0;\n left: 5px;\n margin-bottom: -5px;\n border-width: 5px 5px 0;\n border-top-color: #000000;\n}\n.tooltip.right .tooltip-arrow {\n top: 50%;\n left: 0;\n margin-top: -5px;\n border-width: 5px 5px 5px 0;\n border-right-color: #000000;\n}\n.tooltip.left .tooltip-arrow {\n top: 50%;\n right: 0;\n margin-top: -5px;\n border-width: 5px 0 5px 5px;\n border-left-color: #000000;\n}\n.tooltip.bottom .tooltip-arrow {\n top: 0;\n left: 50%;\n margin-left: -5px;\n border-width: 0 5px 5px;\n border-bottom-color: #000000;\n}\n.tooltip.bottom-left .tooltip-arrow {\n top: 0;\n right: 5px;\n margin-top: -5px;\n border-width: 0 5px 5px;\n border-bottom-color: #000000;\n}\n.tooltip.bottom-right .tooltip-arrow {\n top: 0;\n left: 5px;\n margin-top: -5px;\n border-width: 0 5px 5px;\n border-bottom-color: #000000;\n}\n.popover {\n position: absolute;\n top: 0;\n left: 0;\n z-index: 1060;\n display: none;\n max-width: 276px;\n padding: 1px;\n font-family: \"Helvetica Neue\", Helvetica, Arial, sans-serif;\n font-size: 14px;\n font-weight: normal;\n line-height: 1.42857143;\n text-align: left;\n background-color: #ffffff;\n background-clip: padding-box;\n border: 1px solid #cccccc;\n border: 1px solid rgba(0, 0, 0, 0.2);\n border-radius: 6px;\n -webkit-box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2);\n box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2);\n white-space: normal;\n}\n.popover.top {\n margin-top: -10px;\n}\n.popover.right {\n margin-left: 10px;\n}\n.popover.bottom {\n margin-top: 10px;\n}\n.popover.left {\n margin-left: -10px;\n}\n.popover-title {\n margin: 0;\n padding: 8px 14px;\n font-size: 14px;\n background-color: #f7f7f7;\n border-bottom: 1px solid #ebebeb;\n border-radius: 5px 5px 0 0;\n}\n.popover-content {\n padding: 9px 14px;\n}\n.popover > .arrow,\n.popover > .arrow:after {\n position: absolute;\n display: block;\n width: 0;\n height: 0;\n border-color: transparent;\n border-style: solid;\n}\n.popover > .arrow {\n border-width: 11px;\n}\n.popover > .arrow:after {\n border-width: 10px;\n content: \"\";\n}\n.popover.top > .arrow {\n left: 50%;\n margin-left: -11px;\n border-bottom-width: 0;\n border-top-color: #999999;\n border-top-color: rgba(0, 0, 0, 0.25);\n bottom: -11px;\n}\n.popover.top > .arrow:after {\n content: \" \";\n bottom: 1px;\n margin-left: -10px;\n border-bottom-width: 0;\n border-top-color: #ffffff;\n}\n.popover.right > .arrow {\n top: 50%;\n left: -11px;\n margin-top: -11px;\n border-left-width: 0;\n border-right-color: #999999;\n border-right-color: rgba(0, 0, 0, 0.25);\n}\n.popover.right > .arrow:after {\n content: \" \";\n left: 1px;\n bottom: -10px;\n border-left-width: 0;\n border-right-color: #ffffff;\n}\n.popover.bottom > .arrow {\n left: 50%;\n margin-left: -11px;\n border-top-width: 0;\n border-bottom-color: #999999;\n border-bottom-color: rgba(0, 0, 0, 0.25);\n top: -11px;\n}\n.popover.bottom > .arrow:after {\n content: \" \";\n top: 1px;\n margin-left: -10px;\n border-top-width: 0;\n border-bottom-color: #ffffff;\n}\n.popover.left > .arrow {\n top: 50%;\n right: -11px;\n margin-top: -11px;\n border-right-width: 0;\n border-left-color: #999999;\n border-left-color: rgba(0, 0, 0, 0.25);\n}\n.popover.left > .arrow:after {\n content: \" \";\n right: 1px;\n border-right-width: 0;\n border-left-color: #ffffff;\n bottom: -10px;\n}\n.carousel {\n position: relative;\n}\n.carousel-inner {\n position: relative;\n overflow: hidden;\n width: 100%;\n}\n.carousel-inner > .item {\n display: none;\n position: relative;\n -webkit-transition: 0.6s ease-in-out left;\n -o-transition: 0.6s ease-in-out left;\n transition: 0.6s ease-in-out left;\n}\n.carousel-inner > .item > img,\n.carousel-inner > .item > a > img {\n line-height: 1;\n}\n@media all and (transform-3d), (-webkit-transform-3d) {\n .carousel-inner > .item {\n -webkit-transition: -webkit-transform 0.6s ease-in-out;\n -moz-transition: -moz-transform 0.6s ease-in-out;\n -o-transition: -o-transform 0.6s ease-in-out;\n transition: transform 0.6s ease-in-out;\n -webkit-backface-visibility: hidden;\n -moz-backface-visibility: hidden;\n backface-visibility: hidden;\n -webkit-perspective: 1000;\n -moz-perspective: 1000;\n perspective: 1000;\n }\n .carousel-inner > .item.next,\n .carousel-inner > .item.active.right {\n -webkit-transform: translate3d(100%, 0, 0);\n transform: translate3d(100%, 0, 0);\n left: 0;\n }\n .carousel-inner > .item.prev,\n .carousel-inner > .item.active.left {\n -webkit-transform: translate3d(-100%, 0, 0);\n transform: translate3d(-100%, 0, 0);\n left: 0;\n }\n .carousel-inner > .item.next.left,\n .carousel-inner > .item.prev.right,\n .carousel-inner > .item.active {\n -webkit-transform: translate3d(0, 0, 0);\n transform: translate3d(0, 0, 0);\n left: 0;\n }\n}\n.carousel-inner > .active,\n.carousel-inner > .next,\n.carousel-inner > .prev {\n display: block;\n}\n.carousel-inner > .active {\n left: 0;\n}\n.carousel-inner > .next,\n.carousel-inner > .prev {\n position: absolute;\n top: 0;\n width: 100%;\n}\n.carousel-inner > .next {\n left: 100%;\n}\n.carousel-inner > .prev {\n left: -100%;\n}\n.carousel-inner > .next.left,\n.carousel-inner > .prev.right {\n left: 0;\n}\n.carousel-inner > .active.left {\n left: -100%;\n}\n.carousel-inner > .active.right {\n left: 100%;\n}\n.carousel-control {\n position: absolute;\n top: 0;\n left: 0;\n bottom: 0;\n width: 15%;\n opacity: 0.5;\n filter: alpha(opacity=50);\n font-size: 20px;\n color: #ffffff;\n text-align: center;\n text-shadow: 0 1px 2px rgba(0, 0, 0, 0.6);\n}\n.carousel-control.left {\n background-image: -webkit-linear-gradient(left, rgba(0, 0, 0, 0.5) 0%, rgba(0, 0, 0, 0.0001) 100%);\n background-image: -o-linear-gradient(left, rgba(0, 0, 0, 0.5) 0%, rgba(0, 0, 0, 0.0001) 100%);\n background-image: linear-gradient(to right, rgba(0, 0, 0, 0.5) 0%, rgba(0, 0, 0, 0.0001) 100%);\n background-repeat: repeat-x;\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#80000000', endColorstr='#00000000', GradientType=1);\n}\n.carousel-control.right {\n left: auto;\n right: 0;\n background-image: -webkit-linear-gradient(left, rgba(0, 0, 0, 0.0001) 0%, rgba(0, 0, 0, 0.5) 100%);\n background-image: -o-linear-gradient(left, rgba(0, 0, 0, 0.0001) 0%, rgba(0, 0, 0, 0.5) 100%);\n background-image: linear-gradient(to right, rgba(0, 0, 0, 0.0001) 0%, rgba(0, 0, 0, 0.5) 100%);\n background-repeat: repeat-x;\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#00000000', endColorstr='#80000000', GradientType=1);\n}\n.carousel-control:hover,\n.carousel-control:focus {\n outline: 0;\n color: #ffffff;\n text-decoration: none;\n opacity: 0.9;\n filter: alpha(opacity=90);\n}\n.carousel-control .icon-prev,\n.carousel-control .icon-next,\n.carousel-control .glyphicon-chevron-left,\n.carousel-control .glyphicon-chevron-right {\n position: absolute;\n top: 50%;\n z-index: 5;\n display: inline-block;\n}\n.carousel-control .icon-prev,\n.carousel-control .glyphicon-chevron-left {\n left: 50%;\n margin-left: -10px;\n}\n.carousel-control .icon-next,\n.carousel-control .glyphicon-chevron-right {\n right: 50%;\n margin-right: -10px;\n}\n.carousel-control .icon-prev,\n.carousel-control .icon-next {\n width: 20px;\n height: 20px;\n margin-top: -10px;\n line-height: 1;\n font-family: serif;\n}\n.carousel-control .icon-prev:before {\n content: '\\2039';\n}\n.carousel-control .icon-next:before {\n content: '\\203a';\n}\n.carousel-indicators {\n position: absolute;\n bottom: 10px;\n left: 50%;\n z-index: 15;\n width: 60%;\n margin-left: -30%;\n padding-left: 0;\n list-style: none;\n text-align: center;\n}\n.carousel-indicators li {\n display: inline-block;\n width: 10px;\n height: 10px;\n margin: 1px;\n text-indent: -999px;\n border: 1px solid #ffffff;\n border-radius: 10px;\n cursor: pointer;\n background-color: #000 \\9;\n background-color: rgba(0, 0, 0, 0);\n}\n.carousel-indicators .active {\n margin: 0;\n width: 12px;\n height: 12px;\n background-color: #ffffff;\n}\n.carousel-caption {\n position: absolute;\n left: 15%;\n right: 15%;\n bottom: 20px;\n z-index: 10;\n padding-top: 20px;\n padding-bottom: 20px;\n color: #ffffff;\n text-align: center;\n text-shadow: 0 1px 2px rgba(0, 0, 0, 0.6);\n}\n.carousel-caption .btn {\n text-shadow: none;\n}\n@media screen and (min-width: 768px) {\n .carousel-control .glyphicon-chevron-left,\n .carousel-control .glyphicon-chevron-right,\n .carousel-control .icon-prev,\n .carousel-control .icon-next {\n width: 30px;\n height: 30px;\n margin-top: -15px;\n font-size: 30px;\n }\n .carousel-control .glyphicon-chevron-left,\n .carousel-control .icon-prev {\n margin-left: -15px;\n }\n .carousel-control .glyphicon-chevron-right,\n .carousel-control .icon-next {\n margin-right: -15px;\n }\n .carousel-caption {\n left: 20%;\n right: 20%;\n padding-bottom: 30px;\n }\n .carousel-indicators {\n bottom: 20px;\n }\n}\n.clearfix:before,\n.clearfix:after,\n.dl-horizontal dd:before,\n.dl-horizontal dd:after,\n.container:before,\n.container:after,\n.container-fluid:before,\n.container-fluid:after,\n.row:before,\n.row:after,\n.form-horizontal .form-group:before,\n.form-horizontal .form-group:after,\n.btn-toolbar:before,\n.btn-toolbar:after,\n.btn-group-vertical > .btn-group:before,\n.btn-group-vertical > .btn-group:after,\n.nav:before,\n.nav:after,\n.navbar:before,\n.navbar:after,\n.navbar-header:before,\n.navbar-header:after,\n.navbar-collapse:before,\n.navbar-collapse:after,\n.pager:before,\n.pager:after,\n.panel-body:before,\n.panel-body:after,\n.modal-footer:before,\n.modal-footer:after {\n content: \" \";\n display: table;\n}\n.clearfix:after,\n.dl-horizontal dd:after,\n.container:after,\n.container-fluid:after,\n.row:after,\n.form-horizontal .form-group:after,\n.btn-toolbar:after,\n.btn-group-vertical > .btn-group:after,\n.nav:after,\n.navbar:after,\n.navbar-header:after,\n.navbar-collapse:after,\n.pager:after,\n.panel-body:after,\n.modal-footer:after {\n clear: both;\n}\n.center-block {\n display: block;\n margin-left: auto;\n margin-right: auto;\n}\n.pull-right {\n float: right !important;\n}\n.pull-left {\n float: left !important;\n}\n.hide {\n display: none !important;\n}\n.show {\n display: block !important;\n}\n.invisible {\n visibility: hidden;\n}\n.text-hide {\n font: 0/0 a;\n color: transparent;\n text-shadow: none;\n background-color: transparent;\n border: 0;\n}\n.hidden {\n display: none !important;\n}\n.affix {\n position: fixed;\n}\n@-ms-viewport {\n width: device-width;\n}\n.visible-xs,\n.visible-sm,\n.visible-md,\n.visible-lg {\n display: none !important;\n}\n.visible-xs-block,\n.visible-xs-inline,\n.visible-xs-inline-block,\n.visible-sm-block,\n.visible-sm-inline,\n.visible-sm-inline-block,\n.visible-md-block,\n.visible-md-inline,\n.visible-md-inline-block,\n.visible-lg-block,\n.visible-lg-inline,\n.visible-lg-inline-block {\n display: none !important;\n}\n@media (max-width: 767px) {\n .visible-xs {\n display: block !important;\n }\n table.visible-xs {\n display: table;\n }\n tr.visible-xs {\n display: table-row !important;\n }\n th.visible-xs,\n td.visible-xs {\n display: table-cell !important;\n }\n}\n@media (max-width: 767px) {\n .visible-xs-block {\n display: block !important;\n }\n}\n@media (max-width: 767px) {\n .visible-xs-inline {\n display: inline !important;\n }\n}\n@media (max-width: 767px) {\n .visible-xs-inline-block {\n display: inline-block !important;\n }\n}\n@media (min-width: 768px) and (max-width: 991px) {\n .visible-sm {\n display: block !important;\n }\n table.visible-sm {\n display: table;\n }\n tr.visible-sm {\n display: table-row !important;\n }\n th.visible-sm,\n td.visible-sm {\n display: table-cell !important;\n }\n}\n@media (min-width: 768px) and (max-width: 991px) {\n .visible-sm-block {\n display: block !important;\n }\n}\n@media (min-width: 768px) and (max-width: 991px) {\n .visible-sm-inline {\n display: inline !important;\n }\n}\n@media (min-width: 768px) and (max-width: 991px) {\n .visible-sm-inline-block {\n display: inline-block !important;\n }\n}\n@media (min-width: 992px) and (max-width: 1199px) {\n .visible-md {\n display: block !important;\n }\n table.visible-md {\n display: table;\n }\n tr.visible-md {\n display: table-row !important;\n }\n th.visible-md,\n td.visible-md {\n display: table-cell !important;\n }\n}\n@media (min-width: 992px) and (max-width: 1199px) {\n .visible-md-block {\n display: block !important;\n }\n}\n@media (min-width: 992px) and (max-width: 1199px) {\n .visible-md-inline {\n display: inline !important;\n }\n}\n@media (min-width: 992px) and (max-width: 1199px) {\n .visible-md-inline-block {\n display: inline-block !important;\n }\n}\n@media (min-width: 1200px) {\n .visible-lg {\n display: block !important;\n }\n table.visible-lg {\n display: table;\n }\n tr.visible-lg {\n display: table-row !important;\n }\n th.visible-lg,\n td.visible-lg {\n display: table-cell !important;\n }\n}\n@media (min-width: 1200px) {\n .visible-lg-block {\n display: block !important;\n }\n}\n@media (min-width: 1200px) {\n .visible-lg-inline {\n display: inline !important;\n }\n}\n@media (min-width: 1200px) {\n .visible-lg-inline-block {\n display: inline-block !important;\n }\n}\n@media (max-width: 767px) {\n .hidden-xs {\n display: none !important;\n }\n}\n@media (min-width: 768px) and (max-width: 991px) {\n .hidden-sm {\n display: none !important;\n }\n}\n@media (min-width: 992px) and (max-width: 1199px) {\n .hidden-md {\n display: none !important;\n }\n}\n@media (min-width: 1200px) {\n .hidden-lg {\n display: none !important;\n }\n}\n.visible-print {\n display: none !important;\n}\n@media print {\n .visible-print {\n display: block !important;\n }\n table.visible-print {\n display: table;\n }\n tr.visible-print {\n display: table-row !important;\n }\n th.visible-print,\n td.visible-print {\n display: table-cell !important;\n }\n}\n.visible-print-block {\n display: none !important;\n}\n@media print {\n .visible-print-block {\n display: block !important;\n }\n}\n.visible-print-inline {\n display: none !important;\n}\n@media print {\n .visible-print-inline {\n display: inline !important;\n }\n}\n.visible-print-inline-block {\n display: none !important;\n}\n@media print {\n .visible-print-inline-block {\n display: inline-block !important;\n }\n}\n@media print {\n .hidden-print {\n display: none !important;\n }\n}\n/*# sourceMappingURL=bootstrap.css.map */","/*! normalize.css v3.0.2 | MIT License | git.io/normalize */\n\n//\n// 1. Set default font family to sans-serif.\n// 2. Prevent iOS text size adjust after orientation change, without disabling\n// user zoom.\n//\n\nhtml {\n font-family: sans-serif; // 1\n -ms-text-size-adjust: 100%; // 2\n -webkit-text-size-adjust: 100%; // 2\n}\n\n//\n// Remove default margin.\n//\n\nbody {\n margin: 0;\n}\n\n// HTML5 display definitions\n// ==========================================================================\n\n//\n// Correct `block` display not defined for any HTML5 element in IE 8/9.\n// Correct `block` display not defined for `details` or `summary` in IE 10/11\n// and Firefox.\n// Correct `block` display not defined for `main` in IE 11.\n//\n\narticle,\naside,\ndetails,\nfigcaption,\nfigure,\nfooter,\nheader,\nhgroup,\nmain,\nmenu,\nnav,\nsection,\nsummary {\n display: block;\n}\n\n//\n// 1. Correct `inline-block` display not defined in IE 8/9.\n// 2. Normalize vertical alignment of `progress` in Chrome, Firefox, and Opera.\n//\n\naudio,\ncanvas,\nprogress,\nvideo {\n display: inline-block; // 1\n vertical-align: baseline; // 2\n}\n\n//\n// Prevent modern browsers from displaying `audio` without controls.\n// Remove excess height in iOS 5 devices.\n//\n\naudio:not([controls]) {\n display: none;\n height: 0;\n}\n\n//\n// Address `[hidden]` styling not present in IE 8/9/10.\n// Hide the `template` element in IE 8/9/11, Safari, and Firefox < 22.\n//\n\n[hidden],\ntemplate {\n display: none;\n}\n\n// Links\n// ==========================================================================\n\n//\n// Remove the gray background color from active links in IE 10.\n//\n\na {\n background-color: transparent;\n}\n\n//\n// Improve readability when focused and also mouse hovered in all browsers.\n//\n\na:active,\na:hover {\n outline: 0;\n}\n\n// Text-level semantics\n// ==========================================================================\n\n//\n// Address styling not present in IE 8/9/10/11, Safari, and Chrome.\n//\n\nabbr[title] {\n border-bottom: 1px dotted;\n}\n\n//\n// Address style set to `bolder` in Firefox 4+, Safari, and Chrome.\n//\n\nb,\nstrong {\n font-weight: bold;\n}\n\n//\n// Address styling not present in Safari and Chrome.\n//\n\ndfn {\n font-style: italic;\n}\n\n//\n// Address variable `h1` font-size and margin within `section` and `article`\n// contexts in Firefox 4+, Safari, and Chrome.\n//\n\nh1 {\n font-size: 2em;\n margin: 0.67em 0;\n}\n\n//\n// Address styling not present in IE 8/9.\n//\n\nmark {\n background: #ff0;\n color: #000;\n}\n\n//\n// Address inconsistent and variable font size in all browsers.\n//\n\nsmall {\n font-size: 80%;\n}\n\n//\n// Prevent `sub` and `sup` affecting `line-height` in all browsers.\n//\n\nsub,\nsup {\n font-size: 75%;\n line-height: 0;\n position: relative;\n vertical-align: baseline;\n}\n\nsup {\n top: -0.5em;\n}\n\nsub {\n bottom: -0.25em;\n}\n\n// Embedded content\n// ==========================================================================\n\n//\n// Remove border when inside `a` element in IE 8/9/10.\n//\n\nimg {\n border: 0;\n}\n\n//\n// Correct overflow not hidden in IE 9/10/11.\n//\n\nsvg:not(:root) {\n overflow: hidden;\n}\n\n// Grouping content\n// ==========================================================================\n\n//\n// Address margin not present in IE 8/9 and Safari.\n//\n\nfigure {\n margin: 1em 40px;\n}\n\n//\n// Address differences between Firefox and other browsers.\n//\n\nhr {\n -moz-box-sizing: content-box;\n box-sizing: content-box;\n height: 0;\n}\n\n//\n// Contain overflow in all browsers.\n//\n\npre {\n overflow: auto;\n}\n\n//\n// Address odd `em`-unit font size rendering in all browsers.\n//\n\ncode,\nkbd,\npre,\nsamp {\n font-family: monospace, monospace;\n font-size: 1em;\n}\n\n// Forms\n// ==========================================================================\n\n//\n// Known limitation: by default, Chrome and Safari on OS X allow very limited\n// styling of `select`, unless a `border` property is set.\n//\n\n//\n// 1. Correct color not being inherited.\n// Known issue: affects color of disabled elements.\n// 2. Correct font properties not being inherited.\n// 3. Address margins set differently in Firefox 4+, Safari, and Chrome.\n//\n\nbutton,\ninput,\noptgroup,\nselect,\ntextarea {\n color: inherit; // 1\n font: inherit; // 2\n margin: 0; // 3\n}\n\n//\n// Address `overflow` set to `hidden` in IE 8/9/10/11.\n//\n\nbutton {\n overflow: visible;\n}\n\n//\n// Address inconsistent `text-transform` inheritance for `button` and `select`.\n// All other form control elements do not inherit `text-transform` values.\n// Correct `button` style inheritance in Firefox, IE 8/9/10/11, and Opera.\n// Correct `select` style inheritance in Firefox.\n//\n\nbutton,\nselect {\n text-transform: none;\n}\n\n//\n// 1. Avoid the WebKit bug in Android 4.0.* where (2) destroys native `audio`\n// and `video` controls.\n// 2. Correct inability to style clickable `input` types in iOS.\n// 3. Improve usability and consistency of cursor style between image-type\n// `input` and others.\n//\n\nbutton,\nhtml input[type=\"button\"], // 1\ninput[type=\"reset\"],\ninput[type=\"submit\"] {\n -webkit-appearance: button; // 2\n cursor: pointer; // 3\n}\n\n//\n// Re-set default cursor for disabled elements.\n//\n\nbutton[disabled],\nhtml input[disabled] {\n cursor: default;\n}\n\n//\n// Remove inner padding and border in Firefox 4+.\n//\n\nbutton::-moz-focus-inner,\ninput::-moz-focus-inner {\n border: 0;\n padding: 0;\n}\n\n//\n// Address Firefox 4+ setting `line-height` on `input` using `!important` in\n// the UA stylesheet.\n//\n\ninput {\n line-height: normal;\n}\n\n//\n// It's recommended that you don't attempt to style these elements.\n// Firefox's implementation doesn't respect box-sizing, padding, or width.\n//\n// 1. Address box sizing set to `content-box` in IE 8/9/10.\n// 2. Remove excess padding in IE 8/9/10.\n//\n\ninput[type=\"checkbox\"],\ninput[type=\"radio\"] {\n box-sizing: border-box; // 1\n padding: 0; // 2\n}\n\n//\n// Fix the cursor style for Chrome's increment/decrement buttons. For certain\n// `font-size` values of the `input`, it causes the cursor style of the\n// decrement button to change from `default` to `text`.\n//\n\ninput[type=\"number\"]::-webkit-inner-spin-button,\ninput[type=\"number\"]::-webkit-outer-spin-button {\n height: auto;\n}\n\n//\n// 1. Address `appearance` set to `searchfield` in Safari and Chrome.\n// 2. Address `box-sizing` set to `border-box` in Safari and Chrome\n// (include `-moz` to future-proof).\n//\n\ninput[type=\"search\"] {\n -webkit-appearance: textfield; // 1\n -moz-box-sizing: content-box;\n -webkit-box-sizing: content-box; // 2\n box-sizing: content-box;\n}\n\n//\n// Remove inner padding and search cancel button in Safari and Chrome on OS X.\n// Safari (but not Chrome) clips the cancel button when the search input has\n// padding (and `textfield` appearance).\n//\n\ninput[type=\"search\"]::-webkit-search-cancel-button,\ninput[type=\"search\"]::-webkit-search-decoration {\n -webkit-appearance: none;\n}\n\n//\n// Define consistent border, margin, and padding.\n//\n\nfieldset {\n border: 1px solid #c0c0c0;\n margin: 0 2px;\n padding: 0.35em 0.625em 0.75em;\n}\n\n//\n// 1. Correct `color` not being inherited in IE 8/9/10/11.\n// 2. Remove padding so people aren't caught out if they zero out fieldsets.\n//\n\nlegend {\n border: 0; // 1\n padding: 0; // 2\n}\n\n//\n// Remove default vertical scrollbar in IE 8/9/10/11.\n//\n\ntextarea {\n overflow: auto;\n}\n\n//\n// Don't inherit the `font-weight` (applied by a rule above).\n// NOTE: the default cannot safely be changed in Chrome and Safari on OS X.\n//\n\noptgroup {\n font-weight: bold;\n}\n\n// Tables\n// ==========================================================================\n\n//\n// Remove most spacing between table cells.\n//\n\ntable {\n border-collapse: collapse;\n border-spacing: 0;\n}\n\ntd,\nth {\n padding: 0;\n}\n","/*! Source: https://github.com/h5bp/html5-boilerplate/blob/master/src/css/main.css */\n\n// ==========================================================================\n// Print styles.\n// Inlined to avoid the additional HTTP request: h5bp.com/r\n// ==========================================================================\n\n@media print {\n *,\n *:before,\n *:after {\n background: transparent !important;\n color: #000 !important; // Black prints faster: h5bp.com/s\n box-shadow: none !important;\n text-shadow: none !important;\n }\n\n a,\n a:visited {\n text-decoration: underline;\n }\n\n a[href]:after {\n content: \" (\" attr(href) \")\";\n }\n\n abbr[title]:after {\n content: \" (\" attr(title) \")\";\n }\n\n // Don't show links that are fragment identifiers,\n // or use the `javascript:` pseudo protocol\n a[href^=\"#\"]:after,\n a[href^=\"javascript:\"]:after {\n content: \"\";\n }\n\n pre,\n blockquote {\n border: 1px solid #999;\n page-break-inside: avoid;\n }\n\n thead {\n display: table-header-group; // h5bp.com/t\n }\n\n tr,\n img {\n page-break-inside: avoid;\n }\n\n img {\n max-width: 100% !important;\n }\n\n p,\n h2,\n h3 {\n orphans: 3;\n widows: 3;\n }\n\n h2,\n h3 {\n page-break-after: avoid;\n }\n\n // Bootstrap specific changes start\n //\n // Chrome (OSX) fix for https://github.com/twbs/bootstrap/issues/11245\n // Once fixed, we can just straight up remove this.\n select {\n background: #fff !important;\n }\n\n // Bootstrap components\n .navbar {\n display: none;\n }\n .btn,\n .dropup > .btn {\n > .caret {\n border-top-color: #000 !important;\n }\n }\n .label {\n border: 1px solid #000;\n }\n\n .table {\n border-collapse: collapse !important;\n\n td,\n th {\n background-color: #fff !important;\n }\n }\n .table-bordered {\n th,\n td {\n border: 1px solid #ddd !important;\n }\n }\n\n // Bootstrap specific changes end\n}\n","//\n// Glyphicons for Bootstrap\n//\n// Since icons are fonts, they can be placed anywhere text is placed and are\n// thus automatically sized to match the surrounding child. To use, create an\n// inline element with the appropriate classes, like so:\n//\n// Star\n\n// Import the fonts\n@font-face {\n font-family: 'Glyphicons Halflings';\n src: url('@{icon-font-path}@{icon-font-name}.eot');\n src: url('@{icon-font-path}@{icon-font-name}.eot?#iefix') format('embedded-opentype'),\n url('@{icon-font-path}@{icon-font-name}.woff2') format('woff2'),\n url('@{icon-font-path}@{icon-font-name}.woff') format('woff'),\n url('@{icon-font-path}@{icon-font-name}.ttf') format('truetype'),\n url('@{icon-font-path}@{icon-font-name}.svg#@{icon-font-svg-id}') format('svg');\n}\n\n// Catchall baseclass\n.glyphicon {\n position: relative;\n top: 1px;\n display: inline-block;\n font-family: 'Glyphicons Halflings';\n font-style: normal;\n font-weight: normal;\n line-height: 1;\n -webkit-font-smoothing: antialiased;\n -moz-osx-font-smoothing: grayscale;\n}\n\n// Individual icons\n.glyphicon-asterisk { &:before { content: \"\\2a\"; } }\n.glyphicon-plus { &:before { content: \"\\2b\"; } }\n.glyphicon-euro,\n.glyphicon-eur { &:before { content: \"\\20ac\"; } }\n.glyphicon-minus { &:before { content: \"\\2212\"; } }\n.glyphicon-cloud { &:before { content: \"\\2601\"; } }\n.glyphicon-envelope { &:before { content: \"\\2709\"; } }\n.glyphicon-pencil { &:before { content: \"\\270f\"; } }\n.glyphicon-glass { &:before { content: \"\\e001\"; } }\n.glyphicon-music { &:before { content: \"\\e002\"; } }\n.glyphicon-search { &:before { content: \"\\e003\"; } }\n.glyphicon-heart { &:before { content: \"\\e005\"; } }\n.glyphicon-star { &:before { content: \"\\e006\"; } }\n.glyphicon-star-empty { &:before { content: \"\\e007\"; } }\n.glyphicon-user { &:before { content: \"\\e008\"; } }\n.glyphicon-film { &:before { content: \"\\e009\"; } }\n.glyphicon-th-large { &:before { content: \"\\e010\"; } }\n.glyphicon-th { &:before { content: \"\\e011\"; } }\n.glyphicon-th-list { &:before { content: \"\\e012\"; } }\n.glyphicon-ok { &:before { content: \"\\e013\"; } }\n.glyphicon-remove { &:before { content: \"\\e014\"; } }\n.glyphicon-zoom-in { &:before { content: \"\\e015\"; } }\n.glyphicon-zoom-out { &:before { content: \"\\e016\"; } }\n.glyphicon-off { &:before { content: \"\\e017\"; } }\n.glyphicon-signal { &:before { content: \"\\e018\"; } }\n.glyphicon-cog { &:before { content: \"\\e019\"; } }\n.glyphicon-trash { &:before { content: \"\\e020\"; } }\n.glyphicon-home { &:before { content: \"\\e021\"; } }\n.glyphicon-file { &:before { content: \"\\e022\"; } }\n.glyphicon-time { &:before { content: \"\\e023\"; } }\n.glyphicon-road { &:before { content: \"\\e024\"; } }\n.glyphicon-download-alt { &:before { content: \"\\e025\"; } }\n.glyphicon-download { &:before { content: \"\\e026\"; } }\n.glyphicon-upload { &:before { content: \"\\e027\"; } }\n.glyphicon-inbox { &:before { content: \"\\e028\"; } }\n.glyphicon-play-circle { &:before { content: \"\\e029\"; } }\n.glyphicon-repeat { &:before { content: \"\\e030\"; } }\n.glyphicon-refresh { &:before { content: \"\\e031\"; } }\n.glyphicon-list-alt { &:before { content: \"\\e032\"; } }\n.glyphicon-lock { &:before { content: \"\\e033\"; } }\n.glyphicon-flag { &:before { content: \"\\e034\"; } }\n.glyphicon-headphones { &:before { content: \"\\e035\"; } }\n.glyphicon-volume-off { &:before { content: \"\\e036\"; } }\n.glyphicon-volume-down { &:before { content: \"\\e037\"; } }\n.glyphicon-volume-up { &:before { content: \"\\e038\"; } }\n.glyphicon-qrcode { &:before { content: \"\\e039\"; } }\n.glyphicon-barcode { &:before { content: \"\\e040\"; } }\n.glyphicon-tag { &:before { content: \"\\e041\"; } }\n.glyphicon-tags { &:before { content: \"\\e042\"; } }\n.glyphicon-book { &:before { content: \"\\e043\"; } }\n.glyphicon-bookmark { &:before { content: \"\\e044\"; } }\n.glyphicon-print { &:before { content: \"\\e045\"; } }\n.glyphicon-camera { &:before { content: \"\\e046\"; } }\n.glyphicon-font { &:before { content: \"\\e047\"; } }\n.glyphicon-bold { &:before { content: \"\\e048\"; } }\n.glyphicon-italic { &:before { content: \"\\e049\"; } }\n.glyphicon-text-height { &:before { content: \"\\e050\"; } }\n.glyphicon-text-width { &:before { content: \"\\e051\"; } }\n.glyphicon-align-left { &:before { content: \"\\e052\"; } }\n.glyphicon-align-center { &:before { content: \"\\e053\"; } }\n.glyphicon-align-right { &:before { content: \"\\e054\"; } }\n.glyphicon-align-justify { &:before { content: \"\\e055\"; } }\n.glyphicon-list { &:before { content: \"\\e056\"; } }\n.glyphicon-indent-left { &:before { content: \"\\e057\"; } }\n.glyphicon-indent-right { &:before { content: \"\\e058\"; } }\n.glyphicon-facetime-video { &:before { content: \"\\e059\"; } }\n.glyphicon-picture { &:before { content: \"\\e060\"; } }\n.glyphicon-map-marker { &:before { content: \"\\e062\"; } }\n.glyphicon-adjust { &:before { content: \"\\e063\"; } }\n.glyphicon-tint { &:before { content: \"\\e064\"; } }\n.glyphicon-edit { &:before { content: \"\\e065\"; } }\n.glyphicon-share { &:before { content: \"\\e066\"; } }\n.glyphicon-check { &:before { content: \"\\e067\"; } }\n.glyphicon-move { &:before { content: \"\\e068\"; } }\n.glyphicon-step-backward { &:before { content: \"\\e069\"; } }\n.glyphicon-fast-backward { &:before { content: \"\\e070\"; } }\n.glyphicon-backward { &:before { content: \"\\e071\"; } }\n.glyphicon-play { &:before { content: \"\\e072\"; } }\n.glyphicon-pause { &:before { content: \"\\e073\"; } }\n.glyphicon-stop { &:before { content: \"\\e074\"; } }\n.glyphicon-forward { &:before { content: \"\\e075\"; } }\n.glyphicon-fast-forward { &:before { content: \"\\e076\"; } }\n.glyphicon-step-forward { &:before { content: \"\\e077\"; } }\n.glyphicon-eject { &:before { content: \"\\e078\"; } }\n.glyphicon-chevron-left { &:before { content: \"\\e079\"; } }\n.glyphicon-chevron-right { &:before { content: \"\\e080\"; } }\n.glyphicon-plus-sign { &:before { content: \"\\e081\"; } }\n.glyphicon-minus-sign { &:before { content: \"\\e082\"; } }\n.glyphicon-remove-sign { &:before { content: \"\\e083\"; } }\n.glyphicon-ok-sign { &:before { content: \"\\e084\"; } }\n.glyphicon-question-sign { &:before { content: \"\\e085\"; } }\n.glyphicon-info-sign { &:before { content: \"\\e086\"; } }\n.glyphicon-screenshot { &:before { content: \"\\e087\"; } }\n.glyphicon-remove-circle { &:before { content: \"\\e088\"; } }\n.glyphicon-ok-circle { &:before { content: \"\\e089\"; } }\n.glyphicon-ban-circle { &:before { content: \"\\e090\"; } }\n.glyphicon-arrow-left { &:before { content: \"\\e091\"; } }\n.glyphicon-arrow-right { &:before { content: \"\\e092\"; } }\n.glyphicon-arrow-up { &:before { content: \"\\e093\"; } }\n.glyphicon-arrow-down { &:before { content: \"\\e094\"; } }\n.glyphicon-share-alt { &:before { content: \"\\e095\"; } }\n.glyphicon-resize-full { &:before { content: \"\\e096\"; } }\n.glyphicon-resize-small { &:before { content: \"\\e097\"; } }\n.glyphicon-exclamation-sign { &:before { content: \"\\e101\"; } }\n.glyphicon-gift { &:before { content: \"\\e102\"; } }\n.glyphicon-leaf { &:before { content: \"\\e103\"; } }\n.glyphicon-fire { &:before { content: \"\\e104\"; } }\n.glyphicon-eye-open { &:before { content: \"\\e105\"; } }\n.glyphicon-eye-close { &:before { content: \"\\e106\"; } }\n.glyphicon-warning-sign { &:before { content: \"\\e107\"; } }\n.glyphicon-plane { &:before { content: \"\\e108\"; } }\n.glyphicon-calendar { &:before { content: \"\\e109\"; } }\n.glyphicon-random { &:before { content: \"\\e110\"; } }\n.glyphicon-comment { &:before { content: \"\\e111\"; } }\n.glyphicon-magnet { &:before { content: \"\\e112\"; } }\n.glyphicon-chevron-up { &:before { content: \"\\e113\"; } }\n.glyphicon-chevron-down { &:before { content: \"\\e114\"; } }\n.glyphicon-retweet { &:before { content: \"\\e115\"; } }\n.glyphicon-shopping-cart { &:before { content: \"\\e116\"; } }\n.glyphicon-folder-close { &:before { content: \"\\e117\"; } }\n.glyphicon-folder-open { &:before { content: \"\\e118\"; } }\n.glyphicon-resize-vertical { &:before { content: \"\\e119\"; } }\n.glyphicon-resize-horizontal { &:before { content: \"\\e120\"; } }\n.glyphicon-hdd { &:before { content: \"\\e121\"; } }\n.glyphicon-bullhorn { &:before { content: \"\\e122\"; } }\n.glyphicon-bell { &:before { content: \"\\e123\"; } }\n.glyphicon-certificate { &:before { content: \"\\e124\"; } }\n.glyphicon-thumbs-up { &:before { content: \"\\e125\"; } }\n.glyphicon-thumbs-down { &:before { content: \"\\e126\"; } }\n.glyphicon-hand-right { &:before { content: \"\\e127\"; } }\n.glyphicon-hand-left { &:before { content: \"\\e128\"; } }\n.glyphicon-hand-up { &:before { content: \"\\e129\"; } }\n.glyphicon-hand-down { &:before { content: \"\\e130\"; } }\n.glyphicon-circle-arrow-right { &:before { content: \"\\e131\"; } }\n.glyphicon-circle-arrow-left { &:before { content: \"\\e132\"; } }\n.glyphicon-circle-arrow-up { &:before { content: \"\\e133\"; } }\n.glyphicon-circle-arrow-down { &:before { content: \"\\e134\"; } }\n.glyphicon-globe { &:before { content: \"\\e135\"; } }\n.glyphicon-wrench { &:before { content: \"\\e136\"; } }\n.glyphicon-tasks { &:before { content: \"\\e137\"; } }\n.glyphicon-filter { &:before { content: \"\\e138\"; } }\n.glyphicon-briefcase { &:before { content: \"\\e139\"; } }\n.glyphicon-fullscreen { &:before { content: \"\\e140\"; } }\n.glyphicon-dashboard { &:before { content: \"\\e141\"; } }\n.glyphicon-paperclip { &:before { content: \"\\e142\"; } }\n.glyphicon-heart-empty { &:before { content: \"\\e143\"; } }\n.glyphicon-link { &:before { content: \"\\e144\"; } }\n.glyphicon-phone { &:before { content: \"\\e145\"; } }\n.glyphicon-pushpin { &:before { content: \"\\e146\"; } }\n.glyphicon-usd { &:before { content: \"\\e148\"; } }\n.glyphicon-gbp { &:before { content: \"\\e149\"; } }\n.glyphicon-sort { &:before { content: \"\\e150\"; } }\n.glyphicon-sort-by-alphabet { &:before { content: \"\\e151\"; } }\n.glyphicon-sort-by-alphabet-alt { &:before { content: \"\\e152\"; } }\n.glyphicon-sort-by-order { &:before { content: \"\\e153\"; } }\n.glyphicon-sort-by-order-alt { &:before { content: \"\\e154\"; } }\n.glyphicon-sort-by-attributes { &:before { content: \"\\e155\"; } }\n.glyphicon-sort-by-attributes-alt { &:before { content: \"\\e156\"; } }\n.glyphicon-unchecked { &:before { content: \"\\e157\"; } }\n.glyphicon-expand { &:before { content: \"\\e158\"; } }\n.glyphicon-collapse-down { &:before { content: \"\\e159\"; } }\n.glyphicon-collapse-up { &:before { content: \"\\e160\"; } }\n.glyphicon-log-in { &:before { content: \"\\e161\"; } }\n.glyphicon-flash { &:before { content: \"\\e162\"; } }\n.glyphicon-log-out { &:before { content: \"\\e163\"; } }\n.glyphicon-new-window { &:before { content: \"\\e164\"; } }\n.glyphicon-record { &:before { content: \"\\e165\"; } }\n.glyphicon-save { &:before { content: \"\\e166\"; } }\n.glyphicon-open { &:before { content: \"\\e167\"; } }\n.glyphicon-saved { &:before { content: \"\\e168\"; } }\n.glyphicon-import { &:before { content: \"\\e169\"; } }\n.glyphicon-export { &:before { content: \"\\e170\"; } }\n.glyphicon-send { &:before { content: \"\\e171\"; } }\n.glyphicon-floppy-disk { &:before { content: \"\\e172\"; } }\n.glyphicon-floppy-saved { &:before { content: \"\\e173\"; } }\n.glyphicon-floppy-remove { &:before { content: \"\\e174\"; } }\n.glyphicon-floppy-save { &:before { content: \"\\e175\"; } }\n.glyphicon-floppy-open { &:before { content: \"\\e176\"; } }\n.glyphicon-credit-card { &:before { content: \"\\e177\"; } }\n.glyphicon-transfer { &:before { content: \"\\e178\"; } }\n.glyphicon-cutlery { &:before { content: \"\\e179\"; } }\n.glyphicon-header { &:before { content: \"\\e180\"; } }\n.glyphicon-compressed { &:before { content: \"\\e181\"; } }\n.glyphicon-earphone { &:before { content: \"\\e182\"; } }\n.glyphicon-phone-alt { &:before { content: \"\\e183\"; } }\n.glyphicon-tower { &:before { content: \"\\e184\"; } }\n.glyphicon-stats { &:before { content: \"\\e185\"; } }\n.glyphicon-sd-video { &:before { content: \"\\e186\"; } }\n.glyphicon-hd-video { &:before { content: \"\\e187\"; } }\n.glyphicon-subtitles { &:before { content: \"\\e188\"; } }\n.glyphicon-sound-stereo { &:before { content: \"\\e189\"; } }\n.glyphicon-sound-dolby { &:before { content: \"\\e190\"; } }\n.glyphicon-sound-5-1 { &:before { content: \"\\e191\"; } }\n.glyphicon-sound-6-1 { &:before { content: \"\\e192\"; } }\n.glyphicon-sound-7-1 { &:before { content: \"\\e193\"; } }\n.glyphicon-copyright-mark { &:before { content: \"\\e194\"; } }\n.glyphicon-registration-mark { &:before { content: \"\\e195\"; } }\n.glyphicon-cloud-download { &:before { content: \"\\e197\"; } }\n.glyphicon-cloud-upload { &:before { content: \"\\e198\"; } }\n.glyphicon-tree-conifer { &:before { content: \"\\e199\"; } }\n.glyphicon-tree-deciduous { &:before { content: \"\\e200\"; } }\n.glyphicon-cd { &:before { content: \"\\e201\"; } }\n.glyphicon-save-file { &:before { content: \"\\e202\"; } }\n.glyphicon-open-file { &:before { content: \"\\e203\"; } }\n.glyphicon-level-up { &:before { content: \"\\e204\"; } }\n.glyphicon-copy { &:before { content: \"\\e205\"; } }\n.glyphicon-paste { &:before { content: \"\\e206\"; } }\n// The following 2 Glyphicons are omitted for the time being because\n// they currently use Unicode codepoints that are outside the\n// Basic Multilingual Plane (BMP). Older buggy versions of WebKit can't handle\n// non-BMP codepoints in CSS string escapes, and thus can't display these two icons.\n// Notably, the bug affects some older versions of the Android Browser.\n// More info: https://github.com/twbs/bootstrap/issues/10106\n// .glyphicon-door { &:before { content: \"\\1f6aa\"; } }\n// .glyphicon-key { &:before { content: \"\\1f511\"; } }\n.glyphicon-alert { &:before { content: \"\\e209\"; } }\n.glyphicon-equalizer { &:before { content: \"\\e210\"; } }\n.glyphicon-king { &:before { content: \"\\e211\"; } }\n.glyphicon-queen { &:before { content: \"\\e212\"; } }\n.glyphicon-pawn { &:before { content: \"\\e213\"; } }\n.glyphicon-bishop { &:before { content: \"\\e214\"; } }\n.glyphicon-knight { &:before { content: \"\\e215\"; } }\n.glyphicon-baby-formula { &:before { content: \"\\e216\"; } }\n.glyphicon-tent { &:before { content: \"\\26fa\"; } }\n.glyphicon-blackboard { &:before { content: \"\\e218\"; } }\n.glyphicon-bed { &:before { content: \"\\e219\"; } }\n.glyphicon-apple { &:before { content: \"\\f8ff\"; } }\n.glyphicon-erase { &:before { content: \"\\e221\"; } }\n.glyphicon-hourglass { &:before { content: \"\\231b\"; } }\n.glyphicon-lamp { &:before { content: \"\\e223\"; } }\n.glyphicon-duplicate { &:before { content: \"\\e224\"; } }\n.glyphicon-piggy-bank { &:before { content: \"\\e225\"; } }\n.glyphicon-scissors { &:before { content: \"\\e226\"; } }\n.glyphicon-bitcoin { &:before { content: \"\\e227\"; } }\n.glyphicon-btc { &:before { content: \"\\e227\"; } }\n.glyphicon-xbt { &:before { content: \"\\e227\"; } }\n.glyphicon-yen { &:before { content: \"\\00a5\"; } }\n.glyphicon-jpy { &:before { content: \"\\00a5\"; } }\n.glyphicon-ruble { &:before { content: \"\\20bd\"; } }\n.glyphicon-rub { &:before { content: \"\\20bd\"; } }\n.glyphicon-scale { &:before { content: \"\\e230\"; } }\n.glyphicon-ice-lolly { &:before { content: \"\\e231\"; } }\n.glyphicon-ice-lolly-tasted { &:before { content: \"\\e232\"; } }\n.glyphicon-education { &:before { content: \"\\e233\"; } }\n.glyphicon-option-horizontal { &:before { content: \"\\e234\"; } }\n.glyphicon-option-vertical { &:before { content: \"\\e235\"; } }\n.glyphicon-menu-hamburger { &:before { content: \"\\e236\"; } }\n.glyphicon-modal-window { &:before { content: \"\\e237\"; } }\n.glyphicon-oil { &:before { content: \"\\e238\"; } }\n.glyphicon-grain { &:before { content: \"\\e239\"; } }\n.glyphicon-sunglasses { &:before { content: \"\\e240\"; } }\n.glyphicon-text-size { &:before { content: \"\\e241\"; } }\n.glyphicon-text-color { &:before { content: \"\\e242\"; } }\n.glyphicon-text-background { &:before { content: \"\\e243\"; } }\n.glyphicon-object-align-top { &:before { content: \"\\e244\"; } }\n.glyphicon-object-align-bottom { &:before { content: \"\\e245\"; } }\n.glyphicon-object-align-horizontal{ &:before { content: \"\\e246\"; } }\n.glyphicon-object-align-left { &:before { content: \"\\e247\"; } }\n.glyphicon-object-align-vertical { &:before { content: \"\\e248\"; } }\n.glyphicon-object-align-right { &:before { content: \"\\e249\"; } }\n.glyphicon-triangle-right { &:before { content: \"\\e250\"; } }\n.glyphicon-triangle-left { &:before { content: \"\\e251\"; } }\n.glyphicon-triangle-bottom { &:before { content: \"\\e252\"; } }\n.glyphicon-triangle-top { &:before { content: \"\\e253\"; } }\n.glyphicon-console { &:before { content: \"\\e254\"; } }\n.glyphicon-superscript { &:before { content: \"\\e255\"; } }\n.glyphicon-subscript { &:before { content: \"\\e256\"; } }\n.glyphicon-menu-left { &:before { content: \"\\e257\"; } }\n.glyphicon-menu-right { &:before { content: \"\\e258\"; } }\n.glyphicon-menu-down { &:before { content: \"\\e259\"; } }\n.glyphicon-menu-up { &:before { content: \"\\e260\"; } }\n","//\n// Scaffolding\n// --------------------------------------------------\n\n\n// Reset the box-sizing\n//\n// Heads up! This reset may cause conflicts with some third-party widgets.\n// For recommendations on resolving such conflicts, see\n// http://getbootstrap.com/getting-started/#third-box-sizing\n* {\n .box-sizing(border-box);\n}\n*:before,\n*:after {\n .box-sizing(border-box);\n}\n\n\n// Body reset\n\nhtml {\n font-size: 10px;\n -webkit-tap-highlight-color: rgba(0,0,0,0);\n}\n\nbody {\n font-family: @font-family-base;\n font-size: @font-size-base;\n line-height: @line-height-base;\n color: @text-color;\n background-color: @body-bg;\n}\n\n// Reset fonts for relevant elements\ninput,\nbutton,\nselect,\ntextarea {\n font-family: inherit;\n font-size: inherit;\n line-height: inherit;\n}\n\n\n// Links\n\na {\n color: @link-color;\n text-decoration: none;\n\n &:hover,\n &:focus {\n color: @link-hover-color;\n text-decoration: @link-hover-decoration;\n }\n\n &:focus {\n .tab-focus();\n }\n}\n\n\n// Figures\n//\n// We reset this here because previously Normalize had no `figure` margins. This\n// ensures we don't break anyone's use of the element.\n\nfigure {\n margin: 0;\n}\n\n\n// Images\n\nimg {\n vertical-align: middle;\n}\n\n// Responsive images (ensure images don't scale beyond their parents)\n.img-responsive {\n .img-responsive();\n}\n\n// Rounded corners\n.img-rounded {\n border-radius: @border-radius-large;\n}\n\n// Image thumbnails\n//\n// Heads up! This is mixin-ed into thumbnails.less for `.thumbnail`.\n.img-thumbnail {\n padding: @thumbnail-padding;\n line-height: @line-height-base;\n background-color: @thumbnail-bg;\n border: 1px solid @thumbnail-border;\n border-radius: @thumbnail-border-radius;\n .transition(all .2s ease-in-out);\n\n // Keep them at most 100% wide\n .img-responsive(inline-block);\n}\n\n// Perfect circle\n.img-circle {\n border-radius: 50%; // set radius in percents\n}\n\n\n// Horizontal rules\n\nhr {\n margin-top: @line-height-computed;\n margin-bottom: @line-height-computed;\n border: 0;\n border-top: 1px solid @hr-border;\n}\n\n\n// Only display content to screen readers\n//\n// See: http://a11yproject.com/posts/how-to-hide-content/\n\n.sr-only {\n position: absolute;\n width: 1px;\n height: 1px;\n margin: -1px;\n padding: 0;\n overflow: hidden;\n clip: rect(0,0,0,0);\n border: 0;\n}\n\n// Use in conjunction with .sr-only to only display content when it's focused.\n// Useful for \"Skip to main content\" links; see http://www.w3.org/TR/2013/NOTE-WCAG20-TECHS-20130905/G1\n// Credit: HTML5 Boilerplate\n\n.sr-only-focusable {\n &:active,\n &:focus {\n position: static;\n width: auto;\n height: auto;\n margin: 0;\n overflow: visible;\n clip: auto;\n }\n}\n\n\n// iOS \"clickable elements\" fix for role=\"button\"\n//\n// Fixes \"clickability\" issue (and more generally, the firing of events such as focus as well)\n// for traditionally non-focusable elements with role=\"button\"\n// see https://developer.mozilla.org/en-US/docs/Web/Events/click#Safari_Mobile\n// Upstream patch for normalize.css submitted: https://github.com/necolas/normalize.css/pull/379 - remove this fix once that is merged\n\n[role=\"button\"] {\n cursor: pointer;\n}","// Vendor Prefixes\n//\n// All vendor mixins are deprecated as of v3.2.0 due to the introduction of\n// Autoprefixer in our Gruntfile. They will be removed in v4.\n\n// - Animations\n// - Backface visibility\n// - Box shadow\n// - Box sizing\n// - Content columns\n// - Hyphens\n// - Placeholder text\n// - Transformations\n// - Transitions\n// - User Select\n\n\n// Animations\n.animation(@animation) {\n -webkit-animation: @animation;\n -o-animation: @animation;\n animation: @animation;\n}\n.animation-name(@name) {\n -webkit-animation-name: @name;\n animation-name: @name;\n}\n.animation-duration(@duration) {\n -webkit-animation-duration: @duration;\n animation-duration: @duration;\n}\n.animation-timing-function(@timing-function) {\n -webkit-animation-timing-function: @timing-function;\n animation-timing-function: @timing-function;\n}\n.animation-delay(@delay) {\n -webkit-animation-delay: @delay;\n animation-delay: @delay;\n}\n.animation-iteration-count(@iteration-count) {\n -webkit-animation-iteration-count: @iteration-count;\n animation-iteration-count: @iteration-count;\n}\n.animation-direction(@direction) {\n -webkit-animation-direction: @direction;\n animation-direction: @direction;\n}\n.animation-fill-mode(@fill-mode) {\n -webkit-animation-fill-mode: @fill-mode;\n animation-fill-mode: @fill-mode;\n}\n\n// Backface visibility\n// Prevent browsers from flickering when using CSS 3D transforms.\n// Default value is `visible`, but can be changed to `hidden`\n\n.backface-visibility(@visibility){\n -webkit-backface-visibility: @visibility;\n -moz-backface-visibility: @visibility;\n backface-visibility: @visibility;\n}\n\n// Drop shadows\n//\n// Note: Deprecated `.box-shadow()` as of v3.1.0 since all of Bootstrap's\n// supported browsers that have box shadow capabilities now support it.\n\n.box-shadow(@shadow) {\n -webkit-box-shadow: @shadow; // iOS <4.3 & Android <4.1\n box-shadow: @shadow;\n}\n\n// Box sizing\n.box-sizing(@boxmodel) {\n -webkit-box-sizing: @boxmodel;\n -moz-box-sizing: @boxmodel;\n box-sizing: @boxmodel;\n}\n\n// CSS3 Content Columns\n.content-columns(@column-count; @column-gap: @grid-gutter-width) {\n -webkit-column-count: @column-count;\n -moz-column-count: @column-count;\n column-count: @column-count;\n -webkit-column-gap: @column-gap;\n -moz-column-gap: @column-gap;\n column-gap: @column-gap;\n}\n\n// Optional hyphenation\n.hyphens(@mode: auto) {\n word-wrap: break-word;\n -webkit-hyphens: @mode;\n -moz-hyphens: @mode;\n -ms-hyphens: @mode; // IE10+\n -o-hyphens: @mode;\n hyphens: @mode;\n}\n\n// Placeholder text\n.placeholder(@color: @input-color-placeholder) {\n // Firefox\n &::-moz-placeholder {\n color: @color;\n opacity: 1; // Override Firefox's unusual default opacity; see https://github.com/twbs/bootstrap/pull/11526\n }\n &:-ms-input-placeholder { color: @color; } // Internet Explorer 10+\n &::-webkit-input-placeholder { color: @color; } // Safari and Chrome\n}\n\n// Transformations\n.scale(@ratio) {\n -webkit-transform: scale(@ratio);\n -ms-transform: scale(@ratio); // IE9 only\n -o-transform: scale(@ratio);\n transform: scale(@ratio);\n}\n.scale(@ratioX; @ratioY) {\n -webkit-transform: scale(@ratioX, @ratioY);\n -ms-transform: scale(@ratioX, @ratioY); // IE9 only\n -o-transform: scale(@ratioX, @ratioY);\n transform: scale(@ratioX, @ratioY);\n}\n.scaleX(@ratio) {\n -webkit-transform: scaleX(@ratio);\n -ms-transform: scaleX(@ratio); // IE9 only\n -o-transform: scaleX(@ratio);\n transform: scaleX(@ratio);\n}\n.scaleY(@ratio) {\n -webkit-transform: scaleY(@ratio);\n -ms-transform: scaleY(@ratio); // IE9 only\n -o-transform: scaleY(@ratio);\n transform: scaleY(@ratio);\n}\n.skew(@x; @y) {\n -webkit-transform: skewX(@x) skewY(@y);\n -ms-transform: skewX(@x) skewY(@y); // See https://github.com/twbs/bootstrap/issues/4885; IE9+\n -o-transform: skewX(@x) skewY(@y);\n transform: skewX(@x) skewY(@y);\n}\n.translate(@x; @y) {\n -webkit-transform: translate(@x, @y);\n -ms-transform: translate(@x, @y); // IE9 only\n -o-transform: translate(@x, @y);\n transform: translate(@x, @y);\n}\n.translate3d(@x; @y; @z) {\n -webkit-transform: translate3d(@x, @y, @z);\n transform: translate3d(@x, @y, @z);\n}\n.rotate(@degrees) {\n -webkit-transform: rotate(@degrees);\n -ms-transform: rotate(@degrees); // IE9 only\n -o-transform: rotate(@degrees);\n transform: rotate(@degrees);\n}\n.rotateX(@degrees) {\n -webkit-transform: rotateX(@degrees);\n -ms-transform: rotateX(@degrees); // IE9 only\n -o-transform: rotateX(@degrees);\n transform: rotateX(@degrees);\n}\n.rotateY(@degrees) {\n -webkit-transform: rotateY(@degrees);\n -ms-transform: rotateY(@degrees); // IE9 only\n -o-transform: rotateY(@degrees);\n transform: rotateY(@degrees);\n}\n.perspective(@perspective) {\n -webkit-perspective: @perspective;\n -moz-perspective: @perspective;\n perspective: @perspective;\n}\n.perspective-origin(@perspective) {\n -webkit-perspective-origin: @perspective;\n -moz-perspective-origin: @perspective;\n perspective-origin: @perspective;\n}\n.transform-origin(@origin) {\n -webkit-transform-origin: @origin;\n -moz-transform-origin: @origin;\n -ms-transform-origin: @origin; // IE9 only\n transform-origin: @origin;\n}\n\n\n// Transitions\n\n.transition(@transition) {\n -webkit-transition: @transition;\n -o-transition: @transition;\n transition: @transition;\n}\n.transition-property(@transition-property) {\n -webkit-transition-property: @transition-property;\n transition-property: @transition-property;\n}\n.transition-delay(@transition-delay) {\n -webkit-transition-delay: @transition-delay;\n transition-delay: @transition-delay;\n}\n.transition-duration(@transition-duration) {\n -webkit-transition-duration: @transition-duration;\n transition-duration: @transition-duration;\n}\n.transition-timing-function(@timing-function) {\n -webkit-transition-timing-function: @timing-function;\n transition-timing-function: @timing-function;\n}\n.transition-transform(@transition) {\n -webkit-transition: -webkit-transform @transition;\n -moz-transition: -moz-transform @transition;\n -o-transition: -o-transform @transition;\n transition: transform @transition;\n}\n\n\n// User select\n// For selecting text on the page\n\n.user-select(@select) {\n -webkit-user-select: @select;\n -moz-user-select: @select;\n -ms-user-select: @select; // IE10+\n user-select: @select;\n}\n","// WebKit-style focus\n\n.tab-focus() {\n // Default\n outline: thin dotted;\n // WebKit\n outline: 5px auto -webkit-focus-ring-color;\n outline-offset: -2px;\n}\n","// Image Mixins\n// - Responsive image\n// - Retina image\n\n\n// Responsive image\n//\n// Keep images from scaling beyond the width of their parents.\n.img-responsive(@display: block) {\n display: @display;\n max-width: 100%; // Part 1: Set a maximum relative to the parent\n height: auto; // Part 2: Scale the height according to the width, otherwise you get stretching\n}\n\n\n// Retina image\n//\n// Short retina mixin for setting background-image and -size. Note that the\n// spelling of `min--moz-device-pixel-ratio` is intentional.\n.img-retina(@file-1x; @file-2x; @width-1x; @height-1x) {\n background-image: url(\"@{file-1x}\");\n\n @media\n only screen and (-webkit-min-device-pixel-ratio: 2),\n only screen and ( min--moz-device-pixel-ratio: 2),\n only screen and ( -o-min-device-pixel-ratio: 2/1),\n only screen and ( min-device-pixel-ratio: 2),\n only screen and ( min-resolution: 192dpi),\n only screen and ( min-resolution: 2dppx) {\n background-image: url(\"@{file-2x}\");\n background-size: @width-1x @height-1x;\n }\n}\n","//\n// Typography\n// --------------------------------------------------\n\n\n// Headings\n// -------------------------\n\nh1, h2, h3, h4, h5, h6,\n.h1, .h2, .h3, .h4, .h5, .h6 {\n font-family: @headings-font-family;\n font-weight: @headings-font-weight;\n line-height: @headings-line-height;\n color: @headings-color;\n\n small,\n .small {\n font-weight: normal;\n line-height: 1;\n color: @headings-small-color;\n }\n}\n\nh1, .h1,\nh2, .h2,\nh3, .h3 {\n margin-top: @line-height-computed;\n margin-bottom: (@line-height-computed / 2);\n\n small,\n .small {\n font-size: 65%;\n }\n}\nh4, .h4,\nh5, .h5,\nh6, .h6 {\n margin-top: (@line-height-computed / 2);\n margin-bottom: (@line-height-computed / 2);\n\n small,\n .small {\n font-size: 75%;\n }\n}\n\nh1, .h1 { font-size: @font-size-h1; }\nh2, .h2 { font-size: @font-size-h2; }\nh3, .h3 { font-size: @font-size-h3; }\nh4, .h4 { font-size: @font-size-h4; }\nh5, .h5 { font-size: @font-size-h5; }\nh6, .h6 { font-size: @font-size-h6; }\n\n\n// Body text\n// -------------------------\n\np {\n margin: 0 0 (@line-height-computed / 2);\n}\n\n.lead {\n margin-bottom: @line-height-computed;\n font-size: floor((@font-size-base * 1.15));\n font-weight: 300;\n line-height: 1.4;\n\n @media (min-width: @screen-sm-min) {\n font-size: (@font-size-base * 1.5);\n }\n}\n\n\n// Emphasis & misc\n// -------------------------\n\n// Ex: (12px small font / 14px base font) * 100% = about 85%\nsmall,\n.small {\n font-size: floor((100% * @font-size-small / @font-size-base));\n}\n\nmark,\n.mark {\n background-color: @state-warning-bg;\n padding: .2em;\n}\n\n// Alignment\n.text-left { text-align: left; }\n.text-right { text-align: right; }\n.text-center { text-align: center; }\n.text-justify { text-align: justify; }\n.text-nowrap { white-space: nowrap; }\n\n// Transformation\n.text-lowercase { text-transform: lowercase; }\n.text-uppercase { text-transform: uppercase; }\n.text-capitalize { text-transform: capitalize; }\n\n// Contextual colors\n.text-muted {\n color: @text-muted;\n}\n.text-primary {\n .text-emphasis-variant(@brand-primary);\n}\n.text-success {\n .text-emphasis-variant(@state-success-text);\n}\n.text-info {\n .text-emphasis-variant(@state-info-text);\n}\n.text-warning {\n .text-emphasis-variant(@state-warning-text);\n}\n.text-danger {\n .text-emphasis-variant(@state-danger-text);\n}\n\n// Contextual backgrounds\n// For now we'll leave these alongside the text classes until v4 when we can\n// safely shift things around (per SemVer rules).\n.bg-primary {\n // Given the contrast here, this is the only class to have its color inverted\n // automatically.\n color: #fff;\n .bg-variant(@brand-primary);\n}\n.bg-success {\n .bg-variant(@state-success-bg);\n}\n.bg-info {\n .bg-variant(@state-info-bg);\n}\n.bg-warning {\n .bg-variant(@state-warning-bg);\n}\n.bg-danger {\n .bg-variant(@state-danger-bg);\n}\n\n\n// Page header\n// -------------------------\n\n.page-header {\n padding-bottom: ((@line-height-computed / 2) - 1);\n margin: (@line-height-computed * 2) 0 @line-height-computed;\n border-bottom: 1px solid @page-header-border-color;\n}\n\n\n// Lists\n// -------------------------\n\n// Unordered and Ordered lists\nul,\nol {\n margin-top: 0;\n margin-bottom: (@line-height-computed / 2);\n ul,\n ol {\n margin-bottom: 0;\n }\n}\n\n// List options\n\n// Unstyled keeps list items block level, just removes default browser padding and list-style\n.list-unstyled {\n padding-left: 0;\n list-style: none;\n}\n\n// Inline turns list items into inline-block\n.list-inline {\n .list-unstyled();\n margin-left: -5px;\n\n > li {\n display: inline-block;\n padding-left: 5px;\n padding-right: 5px;\n }\n}\n\n// Description Lists\ndl {\n margin-top: 0; // Remove browser default\n margin-bottom: @line-height-computed;\n}\ndt,\ndd {\n line-height: @line-height-base;\n}\ndt {\n font-weight: bold;\n}\ndd {\n margin-left: 0; // Undo browser default\n}\n\n// Horizontal description lists\n//\n// Defaults to being stacked without any of the below styles applied, until the\n// grid breakpoint is reached (default of ~768px).\n\n.dl-horizontal {\n dd {\n &:extend(.clearfix all); // Clear the floated `dt` if an empty `dd` is present\n }\n\n @media (min-width: @grid-float-breakpoint) {\n dt {\n float: left;\n width: (@dl-horizontal-offset - 20);\n clear: left;\n text-align: right;\n .text-overflow();\n }\n dd {\n margin-left: @dl-horizontal-offset;\n }\n }\n}\n\n\n// Misc\n// -------------------------\n\n// Abbreviations and acronyms\nabbr[title],\n// Add data-* attribute to help out our tooltip plugin, per https://github.com/twbs/bootstrap/issues/5257\nabbr[data-original-title] {\n cursor: help;\n border-bottom: 1px dotted @abbr-border-color;\n}\n.initialism {\n font-size: 90%;\n .text-uppercase();\n}\n\n// Blockquotes\nblockquote {\n padding: (@line-height-computed / 2) @line-height-computed;\n margin: 0 0 @line-height-computed;\n font-size: @blockquote-font-size;\n border-left: 5px solid @blockquote-border-color;\n\n p,\n ul,\n ol {\n &:last-child {\n margin-bottom: 0;\n }\n }\n\n // Note: Deprecated small and .small as of v3.1.0\n // Context: https://github.com/twbs/bootstrap/issues/11660\n footer,\n small,\n .small {\n display: block;\n font-size: 80%; // back to default font-size\n line-height: @line-height-base;\n color: @blockquote-small-color;\n\n &:before {\n content: '\\2014 \\00A0'; // em dash, nbsp\n }\n }\n}\n\n// Opposite alignment of blockquote\n//\n// Heads up: `blockquote.pull-right` has been deprecated as of v3.1.0.\n.blockquote-reverse,\nblockquote.pull-right {\n padding-right: 15px;\n padding-left: 0;\n border-right: 5px solid @blockquote-border-color;\n border-left: 0;\n text-align: right;\n\n // Account for citation\n footer,\n small,\n .small {\n &:before { content: ''; }\n &:after {\n content: '\\00A0 \\2014'; // nbsp, em dash\n }\n }\n}\n\n// Addresses\naddress {\n margin-bottom: @line-height-computed;\n font-style: normal;\n line-height: @line-height-base;\n}\n","// Typography\n\n.text-emphasis-variant(@color) {\n color: @color;\n a&:hover {\n color: darken(@color, 10%);\n }\n}\n","// Contextual backgrounds\n\n.bg-variant(@color) {\n background-color: @color;\n a&:hover {\n background-color: darken(@color, 10%);\n }\n}\n","// Text overflow\n// Requires inline-block or block for proper styling\n\n.text-overflow() {\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n","//\n// Code (inline and block)\n// --------------------------------------------------\n\n\n// Inline and block code styles\ncode,\nkbd,\npre,\nsamp {\n font-family: @font-family-monospace;\n}\n\n// Inline code\ncode {\n padding: 2px 4px;\n font-size: 90%;\n color: @code-color;\n background-color: @code-bg;\n border-radius: @border-radius-base;\n}\n\n// User input typically entered via keyboard\nkbd {\n padding: 2px 4px;\n font-size: 90%;\n color: @kbd-color;\n background-color: @kbd-bg;\n border-radius: @border-radius-small;\n box-shadow: inset 0 -1px 0 rgba(0,0,0,.25);\n\n kbd {\n padding: 0;\n font-size: 100%;\n font-weight: bold;\n box-shadow: none;\n }\n}\n\n// Blocks of code\npre {\n display: block;\n padding: ((@line-height-computed - 1) / 2);\n margin: 0 0 (@line-height-computed / 2);\n font-size: (@font-size-base - 1); // 14px to 13px\n line-height: @line-height-base;\n word-break: break-all;\n word-wrap: break-word;\n color: @pre-color;\n background-color: @pre-bg;\n border: 1px solid @pre-border-color;\n border-radius: @border-radius-base;\n\n // Account for some code outputs that place code tags in pre tags\n code {\n padding: 0;\n font-size: inherit;\n color: inherit;\n white-space: pre-wrap;\n background-color: transparent;\n border-radius: 0;\n }\n}\n\n// Enable scrollable blocks of code\n.pre-scrollable {\n max-height: @pre-scrollable-max-height;\n overflow-y: scroll;\n}\n","//\n// Grid system\n// --------------------------------------------------\n\n\n// Container widths\n//\n// Set the container width, and override it for fixed navbars in media queries.\n\n.container {\n .container-fixed();\n\n @media (min-width: @screen-sm-min) {\n width: @container-sm;\n }\n @media (min-width: @screen-md-min) {\n width: @container-md;\n }\n @media (min-width: @screen-lg-min) {\n width: @container-lg;\n }\n}\n\n\n// Fluid container\n//\n// Utilizes the mixin meant for fixed width containers, but without any defined\n// width for fluid, full width layouts.\n\n.container-fluid {\n .container-fixed();\n}\n\n\n// Row\n//\n// Rows contain and clear the floats of your columns.\n\n.row {\n .make-row();\n}\n\n\n// Columns\n//\n// Common styles for small and large grid columns\n\n.make-grid-columns();\n\n\n// Extra small grid\n//\n// Columns, offsets, pushes, and pulls for extra small devices like\n// smartphones.\n\n.make-grid(xs);\n\n\n// Small grid\n//\n// Columns, offsets, pushes, and pulls for the small device range, from phones\n// to tablets.\n\n@media (min-width: @screen-sm-min) {\n .make-grid(sm);\n}\n\n\n// Medium grid\n//\n// Columns, offsets, pushes, and pulls for the desktop device range.\n\n@media (min-width: @screen-md-min) {\n .make-grid(md);\n}\n\n\n// Large grid\n//\n// Columns, offsets, pushes, and pulls for the large desktop device range.\n\n@media (min-width: @screen-lg-min) {\n .make-grid(lg);\n}\n","// Grid system\n//\n// Generate semantic grid columns with these mixins.\n\n// Centered container element\n.container-fixed(@gutter: @grid-gutter-width) {\n margin-right: auto;\n margin-left: auto;\n padding-left: (@gutter / 2);\n padding-right: (@gutter / 2);\n &:extend(.clearfix all);\n}\n\n// Creates a wrapper for a series of columns\n.make-row(@gutter: @grid-gutter-width) {\n margin-left: (@gutter / -2);\n margin-right: (@gutter / -2);\n &:extend(.clearfix all);\n}\n\n// Generate the extra small columns\n.make-xs-column(@columns; @gutter: @grid-gutter-width) {\n position: relative;\n float: left;\n width: percentage((@columns / @grid-columns));\n min-height: 1px;\n padding-left: (@gutter / 2);\n padding-right: (@gutter / 2);\n}\n.make-xs-column-offset(@columns) {\n margin-left: percentage((@columns / @grid-columns));\n}\n.make-xs-column-push(@columns) {\n left: percentage((@columns / @grid-columns));\n}\n.make-xs-column-pull(@columns) {\n right: percentage((@columns / @grid-columns));\n}\n\n// Generate the small columns\n.make-sm-column(@columns; @gutter: @grid-gutter-width) {\n position: relative;\n min-height: 1px;\n padding-left: (@gutter / 2);\n padding-right: (@gutter / 2);\n\n @media (min-width: @screen-sm-min) {\n float: left;\n width: percentage((@columns / @grid-columns));\n }\n}\n.make-sm-column-offset(@columns) {\n @media (min-width: @screen-sm-min) {\n margin-left: percentage((@columns / @grid-columns));\n }\n}\n.make-sm-column-push(@columns) {\n @media (min-width: @screen-sm-min) {\n left: percentage((@columns / @grid-columns));\n }\n}\n.make-sm-column-pull(@columns) {\n @media (min-width: @screen-sm-min) {\n right: percentage((@columns / @grid-columns));\n }\n}\n\n// Generate the medium columns\n.make-md-column(@columns; @gutter: @grid-gutter-width) {\n position: relative;\n min-height: 1px;\n padding-left: (@gutter / 2);\n padding-right: (@gutter / 2);\n\n @media (min-width: @screen-md-min) {\n float: left;\n width: percentage((@columns / @grid-columns));\n }\n}\n.make-md-column-offset(@columns) {\n @media (min-width: @screen-md-min) {\n margin-left: percentage((@columns / @grid-columns));\n }\n}\n.make-md-column-push(@columns) {\n @media (min-width: @screen-md-min) {\n left: percentage((@columns / @grid-columns));\n }\n}\n.make-md-column-pull(@columns) {\n @media (min-width: @screen-md-min) {\n right: percentage((@columns / @grid-columns));\n }\n}\n\n// Generate the large columns\n.make-lg-column(@columns; @gutter: @grid-gutter-width) {\n position: relative;\n min-height: 1px;\n padding-left: (@gutter / 2);\n padding-right: (@gutter / 2);\n\n @media (min-width: @screen-lg-min) {\n float: left;\n width: percentage((@columns / @grid-columns));\n }\n}\n.make-lg-column-offset(@columns) {\n @media (min-width: @screen-lg-min) {\n margin-left: percentage((@columns / @grid-columns));\n }\n}\n.make-lg-column-push(@columns) {\n @media (min-width: @screen-lg-min) {\n left: percentage((@columns / @grid-columns));\n }\n}\n.make-lg-column-pull(@columns) {\n @media (min-width: @screen-lg-min) {\n right: percentage((@columns / @grid-columns));\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.make-grid-columns() {\n // Common styles for all sizes of grid columns, widths 1-12\n .col(@index) { // initial\n @item: ~\".col-xs-@{index}, .col-sm-@{index}, .col-md-@{index}, .col-lg-@{index}\";\n .col((@index + 1), @item);\n }\n .col(@index, @list) when (@index =< @grid-columns) { // general; \"=<\" isn't a typo\n @item: ~\".col-xs-@{index}, .col-sm-@{index}, .col-md-@{index}, .col-lg-@{index}\";\n .col((@index + 1), ~\"@{list}, @{item}\");\n }\n .col(@index, @list) when (@index > @grid-columns) { // terminal\n @{list} {\n position: relative;\n // Prevent columns from collapsing when empty\n min-height: 1px;\n // Inner gutter via padding\n padding-left: (@grid-gutter-width / 2);\n padding-right: (@grid-gutter-width / 2);\n }\n }\n .col(1); // kickstart it\n}\n\n.float-grid-columns(@class) {\n .col(@index) { // initial\n @item: ~\".col-@{class}-@{index}\";\n .col((@index + 1), @item);\n }\n .col(@index, @list) when (@index =< @grid-columns) { // general\n @item: ~\".col-@{class}-@{index}\";\n .col((@index + 1), ~\"@{list}, @{item}\");\n }\n .col(@index, @list) when (@index > @grid-columns) { // terminal\n @{list} {\n float: left;\n }\n }\n .col(1); // kickstart it\n}\n\n.calc-grid-column(@index, @class, @type) when (@type = width) and (@index > 0) {\n .col-@{class}-@{index} {\n width: percentage((@index / @grid-columns));\n }\n}\n.calc-grid-column(@index, @class, @type) when (@type = push) and (@index > 0) {\n .col-@{class}-push-@{index} {\n left: percentage((@index / @grid-columns));\n }\n}\n.calc-grid-column(@index, @class, @type) when (@type = push) and (@index = 0) {\n .col-@{class}-push-0 {\n left: auto;\n }\n}\n.calc-grid-column(@index, @class, @type) when (@type = pull) and (@index > 0) {\n .col-@{class}-pull-@{index} {\n right: percentage((@index / @grid-columns));\n }\n}\n.calc-grid-column(@index, @class, @type) when (@type = pull) and (@index = 0) {\n .col-@{class}-pull-0 {\n right: auto;\n }\n}\n.calc-grid-column(@index, @class, @type) when (@type = offset) {\n .col-@{class}-offset-@{index} {\n margin-left: percentage((@index / @grid-columns));\n }\n}\n\n// Basic looping in LESS\n.loop-grid-columns(@index, @class, @type) when (@index >= 0) {\n .calc-grid-column(@index, @class, @type);\n // next iteration\n .loop-grid-columns((@index - 1), @class, @type);\n}\n\n// Create grid for specific class\n.make-grid(@class) {\n .float-grid-columns(@class);\n .loop-grid-columns(@grid-columns, @class, width);\n .loop-grid-columns(@grid-columns, @class, pull);\n .loop-grid-columns(@grid-columns, @class, push);\n .loop-grid-columns(@grid-columns, @class, offset);\n}\n","//\n// Tables\n// --------------------------------------------------\n\n\ntable {\n background-color: @table-bg;\n}\ncaption {\n padding-top: @table-cell-padding;\n padding-bottom: @table-cell-padding;\n color: @text-muted;\n text-align: left;\n}\nth {\n text-align: left;\n}\n\n\n// Baseline styles\n\n.table {\n width: 100%;\n max-width: 100%;\n margin-bottom: @line-height-computed;\n // Cells\n > thead,\n > tbody,\n > tfoot {\n > tr {\n > th,\n > td {\n padding: @table-cell-padding;\n line-height: @line-height-base;\n vertical-align: top;\n border-top: 1px solid @table-border-color;\n }\n }\n }\n // Bottom align for column headings\n > thead > tr > th {\n vertical-align: bottom;\n border-bottom: 2px solid @table-border-color;\n }\n // Remove top border from thead by default\n > caption + thead,\n > colgroup + thead,\n > thead:first-child {\n > tr:first-child {\n > th,\n > td {\n border-top: 0;\n }\n }\n }\n // Account for multiple tbody instances\n > tbody + tbody {\n border-top: 2px solid @table-border-color;\n }\n\n // Nesting\n .table {\n background-color: @body-bg;\n }\n}\n\n\n// Condensed table w/ half padding\n\n.table-condensed {\n > thead,\n > tbody,\n > tfoot {\n > tr {\n > th,\n > td {\n padding: @table-condensed-cell-padding;\n }\n }\n }\n}\n\n\n// Bordered version\n//\n// Add borders all around the table and between all the columns.\n\n.table-bordered {\n border: 1px solid @table-border-color;\n > thead,\n > tbody,\n > tfoot {\n > tr {\n > th,\n > td {\n border: 1px solid @table-border-color;\n }\n }\n }\n > thead > tr {\n > th,\n > td {\n border-bottom-width: 2px;\n }\n }\n}\n\n\n// Zebra-striping\n//\n// Default zebra-stripe styles (alternating gray and transparent backgrounds)\n\n.table-striped {\n > tbody > tr:nth-of-type(odd) {\n background-color: @table-bg-accent;\n }\n}\n\n\n// Hover effect\n//\n// Placed here since it has to come after the potential zebra striping\n\n.table-hover {\n > tbody > tr:hover {\n background-color: @table-bg-hover;\n }\n}\n\n\n// Table cell sizing\n//\n// Reset default table behavior\n\ntable col[class*=\"col-\"] {\n position: static; // Prevent border hiding in Firefox and IE9-11 (see https://github.com/twbs/bootstrap/issues/11623)\n float: none;\n display: table-column;\n}\ntable {\n td,\n th {\n &[class*=\"col-\"] {\n position: static; // Prevent border hiding in Firefox and IE9-11 (see https://github.com/twbs/bootstrap/issues/11623)\n float: none;\n display: table-cell;\n }\n }\n}\n\n\n// Table backgrounds\n//\n// Exact selectors below required to override `.table-striped` and prevent\n// inheritance to nested tables.\n\n// Generate the contextual variants\n.table-row-variant(active; @table-bg-active);\n.table-row-variant(success; @state-success-bg);\n.table-row-variant(info; @state-info-bg);\n.table-row-variant(warning; @state-warning-bg);\n.table-row-variant(danger; @state-danger-bg);\n\n\n// Responsive tables\n//\n// Wrap your tables in `.table-responsive` and we'll make them mobile friendly\n// by enabling horizontal scrolling. Only applies <768px. Everything above that\n// will display normally.\n\n.table-responsive {\n overflow-x: auto;\n min-height: 0.01%; // Workaround for IE9 bug (see https://github.com/twbs/bootstrap/issues/14837)\n\n @media screen and (max-width: @screen-xs-max) {\n width: 100%;\n margin-bottom: (@line-height-computed * 0.75);\n overflow-y: hidden;\n -ms-overflow-style: -ms-autohiding-scrollbar;\n border: 1px solid @table-border-color;\n\n // Tighten up spacing\n > .table {\n margin-bottom: 0;\n\n // Ensure the content doesn't wrap\n > thead,\n > tbody,\n > tfoot {\n > tr {\n > th,\n > td {\n white-space: nowrap;\n }\n }\n }\n }\n\n // Special overrides for the bordered tables\n > .table-bordered {\n border: 0;\n\n // Nuke the appropriate borders so that the parent can handle them\n > thead,\n > tbody,\n > tfoot {\n > tr {\n > th:first-child,\n > td:first-child {\n border-left: 0;\n }\n > th:last-child,\n > td:last-child {\n border-right: 0;\n }\n }\n }\n\n // Only nuke the last row's bottom-border in `tbody` and `tfoot` since\n // chances are there will be only one `tr` in a `thead` and that would\n // remove the border altogether.\n > tbody,\n > tfoot {\n > tr:last-child {\n > th,\n > td {\n border-bottom: 0;\n }\n }\n }\n\n }\n }\n}\n","// Tables\n\n.table-row-variant(@state; @background) {\n // Exact selectors below required to override `.table-striped` and prevent\n // inheritance to nested tables.\n .table > thead > tr,\n .table > tbody > tr,\n .table > tfoot > tr {\n > td.@{state},\n > th.@{state},\n &.@{state} > td,\n &.@{state} > th {\n background-color: @background;\n }\n }\n\n // Hover states for `.table-hover`\n // Note: this is not available for cells or rows within `thead` or `tfoot`.\n .table-hover > tbody > tr {\n > td.@{state}:hover,\n > th.@{state}:hover,\n &.@{state}:hover > td,\n &:hover > .@{state},\n &.@{state}:hover > th {\n background-color: darken(@background, 5%);\n }\n }\n}\n","//\n// Forms\n// --------------------------------------------------\n\n\n// Normalize non-controls\n//\n// Restyle and baseline non-control form elements.\n\nfieldset {\n padding: 0;\n margin: 0;\n border: 0;\n // Chrome and Firefox set a `min-width: min-content;` on fieldsets,\n // so we reset that to ensure it behaves more like a standard block element.\n // See https://github.com/twbs/bootstrap/issues/12359.\n min-width: 0;\n}\n\nlegend {\n display: block;\n width: 100%;\n padding: 0;\n margin-bottom: @line-height-computed;\n font-size: (@font-size-base * 1.5);\n line-height: inherit;\n color: @legend-color;\n border: 0;\n border-bottom: 1px solid @legend-border-color;\n}\n\nlabel {\n display: inline-block;\n max-width: 100%; // Force IE8 to wrap long content (see https://github.com/twbs/bootstrap/issues/13141)\n margin-bottom: 5px;\n font-weight: bold;\n}\n\n\n// Normalize form controls\n//\n// While most of our form styles require extra classes, some basic normalization\n// is required to ensure optimum display with or without those classes to better\n// address browser inconsistencies.\n\n// Override content-box in Normalize (* isn't specific enough)\ninput[type=\"search\"] {\n .box-sizing(border-box);\n}\n\n// Position radios and checkboxes better\ninput[type=\"radio\"],\ninput[type=\"checkbox\"] {\n margin: 4px 0 0;\n margin-top: 1px \\9; // IE8-9\n line-height: normal;\n}\n\n// Set the height of file controls to match text inputs\ninput[type=\"file\"] {\n display: block;\n}\n\n// Make range inputs behave like textual form controls\ninput[type=\"range\"] {\n display: block;\n width: 100%;\n}\n\n// Make multiple select elements height not fixed\nselect[multiple],\nselect[size] {\n height: auto;\n}\n\n// Focus for file, radio, and checkbox\ninput[type=\"file\"]:focus,\ninput[type=\"radio\"]:focus,\ninput[type=\"checkbox\"]:focus {\n .tab-focus();\n}\n\n// Adjust output element\noutput {\n display: block;\n padding-top: (@padding-base-vertical + 1);\n font-size: @font-size-base;\n line-height: @line-height-base;\n color: @input-color;\n}\n\n\n// Common form controls\n//\n// Shared size and type resets for form controls. Apply `.form-control` to any\n// of the following form controls:\n//\n// select\n// textarea\n// input[type=\"text\"]\n// input[type=\"password\"]\n// input[type=\"datetime\"]\n// input[type=\"datetime-local\"]\n// input[type=\"date\"]\n// input[type=\"month\"]\n// input[type=\"time\"]\n// input[type=\"week\"]\n// input[type=\"number\"]\n// input[type=\"email\"]\n// input[type=\"url\"]\n// input[type=\"search\"]\n// input[type=\"tel\"]\n// input[type=\"color\"]\n\n.form-control {\n display: block;\n width: 100%;\n height: @input-height-base; // Make inputs at least the height of their button counterpart (base line-height + padding + border)\n padding: @padding-base-vertical @padding-base-horizontal;\n font-size: @font-size-base;\n line-height: @line-height-base;\n color: @input-color;\n background-color: @input-bg;\n background-image: none; // Reset unusual Firefox-on-Android default style; see https://github.com/necolas/normalize.css/issues/214\n border: 1px solid @input-border;\n border-radius: @input-border-radius; // Note: This has no effect on s in CSS.\n .box-shadow(inset 0 1px 1px rgba(0,0,0,.075));\n .transition(~\"border-color ease-in-out .15s, box-shadow ease-in-out .15s\");\n\n // Customize the `:focus` state to imitate native WebKit styles.\n .form-control-focus();\n\n // Placeholder\n .placeholder();\n\n // Disabled and read-only inputs\n //\n // HTML5 says that controls under a fieldset > legend:first-child won't be\n // disabled if the fieldset is disabled. Due to implementation difficulty, we\n // don't honor that edge case; we style them as disabled anyway.\n &[disabled],\n &[readonly],\n fieldset[disabled] & {\n background-color: @input-bg-disabled;\n opacity: 1; // iOS fix for unreadable disabled content; see https://github.com/twbs/bootstrap/issues/11655\n }\n\n &[disabled],\n fieldset[disabled] & {\n cursor: @cursor-disabled;\n }\n\n // Reset height for `textarea`s\n textarea& {\n height: auto;\n }\n}\n\n\n// Search inputs in iOS\n//\n// This overrides the extra rounded corners on search inputs in iOS so that our\n// `.form-control` class can properly style them. Note that this cannot simply\n// be added to `.form-control` as it's not specific enough. For details, see\n// https://github.com/twbs/bootstrap/issues/11586.\n\ninput[type=\"search\"] {\n -webkit-appearance: none;\n}\n\n\n// Special styles for iOS temporal inputs\n//\n// In Mobile Safari, setting `display: block` on temporal inputs causes the\n// text within the input to become vertically misaligned. As a workaround, we\n// set a pixel line-height that matches the given height of the input, but only\n// for Safari. See https://bugs.webkit.org/show_bug.cgi?id=139848\n\n@media screen and (-webkit-min-device-pixel-ratio: 0) {\n input[type=\"date\"],\n input[type=\"time\"],\n input[type=\"datetime-local\"],\n input[type=\"month\"] {\n line-height: @input-height-base;\n\n &.input-sm,\n .input-group-sm & {\n line-height: @input-height-small;\n }\n\n &.input-lg,\n .input-group-lg & {\n line-height: @input-height-large;\n }\n }\n}\n\n\n// Form groups\n//\n// Designed to help with the organization and spacing of vertical forms. For\n// horizontal forms, use the predefined grid classes.\n\n.form-group {\n margin-bottom: @form-group-margin-bottom;\n}\n\n\n// Checkboxes and radios\n//\n// Indent the labels to position radios/checkboxes as hanging controls.\n\n.radio,\n.checkbox {\n position: relative;\n display: block;\n margin-top: 10px;\n margin-bottom: 10px;\n\n label {\n min-height: @line-height-computed; // Ensure the input doesn't jump when there is no text\n padding-left: 20px;\n margin-bottom: 0;\n font-weight: normal;\n cursor: pointer;\n }\n}\n.radio input[type=\"radio\"],\n.radio-inline input[type=\"radio\"],\n.checkbox input[type=\"checkbox\"],\n.checkbox-inline input[type=\"checkbox\"] {\n position: absolute;\n margin-left: -20px;\n margin-top: 4px \\9;\n}\n\n.radio + .radio,\n.checkbox + .checkbox {\n margin-top: -5px; // Move up sibling radios or checkboxes for tighter spacing\n}\n\n// Radios and checkboxes on same line\n.radio-inline,\n.checkbox-inline {\n position: relative;\n display: inline-block;\n padding-left: 20px;\n margin-bottom: 0;\n vertical-align: middle;\n font-weight: normal;\n cursor: pointer;\n}\n.radio-inline + .radio-inline,\n.checkbox-inline + .checkbox-inline {\n margin-top: 0;\n margin-left: 10px; // space out consecutive inline controls\n}\n\n// Apply same disabled cursor tweak as for inputs\n// Some special care is needed because