diff --git a/.envrc b/.envrc new file mode 100644 index 0000000..d42765a --- /dev/null +++ b/.envrc @@ -0,0 +1,4 @@ +source .venv/bin/activate +uv sync +export PYTHONBREAKPOINT="pudb.set_trace" +export PYTHONSTARTUP="ipython_startup.py" diff --git a/.gitattributes b/.gitattributes index 6736cd6..2719e44 100644 --- a/.gitattributes +++ b/.gitattributes @@ -1,4 +1,4 @@ * linguist-vendored -*.py linguist-vendored=false +*.py linguist-vendored=true *.js linguist-vendored=false *.html linguist-vendored=false diff --git a/.gitignore b/.gitignore index 1ef8d84..20d0b73 100755 --- a/.gitignore +++ b/.gitignore @@ -1,19 +1,25 @@ books/* +release/pyshelf *.epub *.idea *.pyc +*.css .svn/ app/content.opf .vscode fontend/db.sqlite3 +*.sqlite3 GPATH GRTAGS GTAGS data/shelf.json +data/pyshelf.log package-lock.json .#* frontend/interface/migrations/* src/backend/data/*.json +src/frontend/node_modules +src/frontend/static/script/pyshelf.js # Standard Python gitignore below # Created by https://www.gitignore.io/api/python # Edit at https://www.gitignore.io/?templates=python @@ -127,6 +133,7 @@ dmypy.json # End of https://www.gitignore.io/api/python 0 config.backup.json +config.json uwsgi.ini installer.log pyshelf_nginx.conf diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index 8c0e19a..becf192 100755 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -1,31 +1,15 @@ repos: - # Meta housekeeping to keep pre-commit operating correctly - - repo: meta +- repo: https://github.com/pre-commit/pre-commit-hooks + rev: v4.3.0 hooks: - - id: check-hooks-apply - - id: check-useless-excludes - - # General housekeeping and auto-fixers - - repo: https://github.com/pre-commit/pre-commit-hooks - rev: v1.3.0 + - id: trailing-whitespace + - id: end-of-file-fixer + - id: check-yaml + - id: check-added-large-files + - id: check-docstring-first + - id: debug-statements + - id: end-of-file-fixer +- repo: https://github.com/fsouza/autoflake8 + rev: v0.4.0 hooks: - - id: trailing-whitespace - - # Python import formatting - - repo: https://github.com/asottile/seed-isort-config - rev: v1.9.3 - hooks: - - id: seed-isort-config - - - repo: https://github.com/timothycrosley/isort - rev: 4.3.21-2 - hooks: - - id: isort - additional_dependencies: ["toml"] - - # Python code formatting - - repo: https://github.com/psf/black - rev: stable - hooks: - - id: black - language_version: python3.8 + - id: autoflake8 diff --git a/.tern-config b/.tern-config deleted file mode 100644 index 158d9f4..0000000 --- a/.tern-config +++ /dev/null @@ -1,6 +0,0 @@ -{ - “plugins”: - { - “node”: {} - } -} diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..025f5ca --- /dev/null +++ b/Makefile @@ -0,0 +1,27 @@ +test: + uv run pytest tests + +test-cov: + uv run coverage run -m pytest tests + +cov-report: + uv run coverage combine && uv run coverage report + +cov: test-cov cov-report + +typing: + uv run mypy --install-types --non-interactive src/pyshelf tests + +style: + uv run ruff . && uv run black --check --diff . + +fmt: + uv run black . && uv run ruff --fix . && make style + +lint: style typing + +compile: + cd src/frontend && sh compile.sh && cd ../.. + +install: + cd src/frontend && npm install diff --git a/README.md b/README.md index c26934f..df8913d 100755 --- a/README.md +++ b/README.md @@ -1,49 +1,32 @@ -# pyShelf 0.7.0 +# pyShelf 0.8.0

Terminal based ebook server. Open source & Lightweight.

-

Having used Calibre for hosting my eBook collection in the past, I found myself frustrated having to install X on my server, or manage my library externally, Thus I have decided to spin up my own.

+

Discord

+

+ Having used Calibre for hosting my eBook collection in the + past, I found myself frustrated having to install X on my server, or manage my + library externally, Thus I have decided to spin up my own. +

-![pyShelf 0.6.0 newui](https://github.com/th3r00t/pyShelf/raw/master/src/interface/static/img/pyShelf_frontend_0_2_0.png) +### You dont need an X server to host a website, Movies or Tv, so why should you need one to host ebooks? -### You dont need an X server to host a website, or your Movie & Tv collection, so why should you need one to host ebooks? +_Other solutions require you to have access to an X server to at the very least +generate your book database, pyShelf doesnt. the aim is to provide a fully featured +ebook server with minimal requirements, and no reliance on X._ -_Other solutions require you to have access to an X server to at the very least generate your book database, pyShelf doesnt. We aim to provide a fully featured ebook server with minimal requirements, and no reliance on X whatsoever._ -Follow or influence development @

- Discord -

-## General Notes -You may need to click import books a second time if your import fails on the first attempt - -## 0.7.0 Patch Notes. - -# New Features - -* Administration System -* PDF Support - -## Current Features +## Features * Recursive Scanning -* [Django](https://www.djangoproject.com/) based frontend -* Seach via author, title, & file name fields. +* Cover Image Aggregation +* Fuzzy Search with optional specifiers + - tag:fiction + - author:Clancy + - title:"The Hunt for Red October" + - The Expanse * Download System -* Automated Collections - * A work in progress, the collections are based on your folder structure. -* User System -* Per User Favorites -* Expanded book information view -* Websocket server - * currently only responds to ping, and importBooks, more responders are planned. -* Full Docker integration. -* On Demand Importing - -| Branch | Support | Feature set | -| --- | --- | --- | -| Master | Bugs get priority | Most stable branch, may be behind in the core feature set | - | Development| Please report all bugs | Most active branch, this branch is a rolling release, containing the latest features. There will be bugs here hopefully nothing service killing | - | Others | Here there be dragons | These branches are used for day to day development, nothing here should be considered stable. +* Automated Collections based on folder structure ## Currently Supported Formats @@ -51,81 +34,44 @@ You may need to click import books a second time if your import fails on the fir * mobi * pdf -## Installation & Support Information +# Pre-requisites + - Git + - Curl # Installation + curl -fsSL https://raw.githubusercontent.com/th3r00t/pyShelf/refs/heads/master/install.sh | sudo bash -## Docker +pyShelf is installed as a systemd service, enabled by default, you can control it with the following commands: -The official Docker image for pyShelf is [`pyshelf/pyshelf`](https://hub.docker.com/r/pyshelf/pyshelf). The easiest way to get pyShelf running is through `docker-compose`. An example docker-compose.yml is included in the repo. +```bash +systemctl start pyShelf +systemctl restart pyshelf +systemctl stop pyshelf +systemctl disable pyshelf +systemctl enable pyshelf +```` -You'll need a `.env` file wich sets the `LOCAL_BOOK_DIR` variable, for example: +if your books are not in the default location (/mnt/books) edit the config file at /etc/pyShelf/config.json -``` -LOCAL_BOOK_DIR=/home/someone/books -``` - -The Docker image is still new, so there could still be some issues and missing features. Feel free to create a bug-issue when you encounter a bug. Development of the Docker image is discussed in https://github.com/th3r00t/pyShelf/pull/53 . Currently the database needs to be [PostgreSQL](https://www.postgresql.org/) with the account details shown in the example `docker-compose.yml`. - - Default User/Pass for web interface: pyshelf/pyshelf - -## Self Hosted -This is targeted towards Network Administrators, and home enthusiasts whom I assume will know how to setup a [Django](https://www.djangoproject.com/) app, and a [PostgreSQL](https://www.postgresql.org/) server. For those unfamiliar with the required setup please use the included docker-compose.yml - -### Pre-req Dependencies - -* gcc -* python3 -* pip -* postgresql - -Once your database is ready very little is required to get the system up and running: - -From the main directory - -`pip install -r requirements.txt` - -`./configure` - -`cd src/ && daphne frontend.asgi:application` add -b 0.0.0.0 -p 8000 as required to specify which interface\'s and port to bind too - -As of 0.6.0 Django is being served up via Daphne, and the static files are served up via whitenoise. - -## Import Books -The first step is to login, after logging in the button whill show your username, click on it once again, and a new menu will pop up with the option to logout, or import books. - -## In Progress - -### Organizational tools. - -- [x] Automated Collections +# Coming Soon - [ ] Manual Collections -- [x] Books Removal +- [ ] Books Removal - [ ] Access Restrictions - [ ] Metadata Manipulation -- [ ] Ui\Ux Improvements -- [ ] Others? - -### Improved cover image storage, and acquisition. - -### OPDS Support - -### Support for other formats - -- [x] .mobi -- [x] .pdf -- [ ] .cbz -- [ ] .zip (Zipped book folders, is this a new idea? (Consider storing your library folders zipped and retrieving a book on demand)) - -## Future Goals - -### Terminal Backend for catalogue maintenance +- [ ] UiUx Improvements +- [ ] Expanded book information view +- [ ] Improved Cover Image System +- [ ] OPDS Support ## Development * [`pre-commit`](https://pre-commit.com/) _Before developing, run `pre-commit install` See the [documentation](https://pre-commit.com/) for more information._ -* ['Doxygen'](http://www.doxygen.nl/) -_Any changes to source should be documented and have run doxygen doxygen.conf prior to commiting._ * ['sem-ver'](https://semver.org) _Before advancing version numbers be sure to set PROJECT_NUMBER in doxygen.conf accordingly._ + +| Branch | Support | Feature set | +| --- | --- | --- | +| Master | Bugs get priority | Most stable branch, may be behind in the core feature set | + | Development| Please report all bugs | Most active branch, this branch is a rolling release, containing the latest features. There will be bugs here hopefully nothing service killing | + | Others | Here there be dragons | These branches are used for day to day development, nothing here should be considered stable. diff --git a/build.sh b/build.sh new file mode 100755 index 0000000..dd3716f --- /dev/null +++ b/build.sh @@ -0,0 +1,6 @@ +#!/usr/bin/env sh +# uv export > requirements.txt +# mkdir if not exists release +mkdir -p release +python -m zipapp src --compress --output=release/pyshelf --python="/usr/bin/env python" +exit 0 diff --git a/config.json b/config.json deleted file mode 100644 index 8aff6e8..0000000 --- a/config.json +++ /dev/null @@ -1 +0,0 @@ -{"TITLE": "pyShelf E-Book Server", "VERSION": "0.7.0", "BOOKPATH": "/books", "DB_HOST": "localhost", "DB_PORT": "5432", "DATABASE": "pyshelf", "USER": "pyshelf", "PASSWORD": "pyshelf", "BOOKSHELF": "data/shelf.json", "ALLOWED_HOSTS": ["localhost", "127.0.0.1", "[::1]", "0.0.0.0"], "SECRET": "", "BUILD_MODE": "production"} diff --git a/configure b/configure deleted file mode 100755 index 62e60d4..0000000 --- a/configure +++ /dev/null @@ -1,53 +0,0 @@ -#!/usr/bin/env python3 -import os -import sys -import json -from pathlib import Path -from django.core.management.utils import get_random_secret_key -from src.backend.lib.pyShelf import Admin - - -def load_config(): - with open('config.json',"r") as file: - config = json.load(file) - file.close() - return config - - -def write_config(config): - with open('config.json',"w") as file: - json.dump(config, file) - file.close() - - -def set_secret(config=load_config()): - if config["SECRET"] == "": - config["SECRET"] = get_random_secret_key() - print(config["SECRET"]) - else: - print("Secret already set, skipping.") - -def set_book_directory(config=load_config(), *args): - if config["BOOKPATH"] == "": - try: config["BOOKPATH"] = args[0] - except IndexError: config["BOOKPATH"] = input("Input Book Directory ") - -def init_django_database(): - cmds = [ - 'python3 manage.py makemigrations', - 'python3 manage.py makemigrations interface', - 'python3 manage.py migrate', - 'python3 manage.py migrate interface', - ] - os.chdir("src") - for cmd in cmds: - os.system(cmd) - os.chdir("../") - -config = load_config() - -set_secret(config) -set_book_directory(config) -write_config(config) -init_django_database() -Admin(Path.cwd()).createsuperuser() diff --git a/docker-compose.yml b/docker-compose.yml deleted file mode 100644 index 41c9655..0000000 --- a/docker-compose.yml +++ /dev/null @@ -1,24 +0,0 @@ -version: "3.7" - -services: - db: - image: "postgres" - restart: always - environment: - - "POSTGRES_PASSWORD=pyshelf" - - "POSTGRES_USER=pyshelf" - - "POSTGRES_DB=pyshelf" - volumes: - - "db_data:/var/lib/postgresql/data/" - pyshelf: - image: "pyshelf/pyshelf" - restart: always - ports: - - "8000:8000" - - "1337:1337" - volumes: - - "${LOCAL_BOOK_DIR}:/books" - depends_on: - - db -volumes: - db_data: diff --git a/docker/Dockerfile b/docker/Dockerfile deleted file mode 100644 index 8508064..0000000 --- a/docker/Dockerfile +++ /dev/null @@ -1,28 +0,0 @@ - -# This file is used to build the Dockerhub image. To host pyShelf yourself for -# production, please use the official pyShelf image on -# https://hub.docker.com/r/pyshelf/pyshelf - -# Use the following commands to build and push the docker image to Dockerhub: -# -# docker build -t pyshelf/pyshelf -f ./docker/Dockerfile . -# docker login -# docker push pyshelf/pyshelf - -FROM ubuntu - -EXPOSE 8000 -EXPOSE 1337 - -RUN apt-get update -y -RUN DEBIAN_FRONTEND=noninteractive apt-get install -y build-essential python3 python3-dev python3-pip python3-venv - -COPY . /pyshelf -COPY ./docker/config.json /pyshelf/config.json - -WORKDIR /pyshelf/ -RUN python3 -m pip install -r requirements.txt - -ENTRYPOINT python3 configure \ - && cd src/ \ - && daphne -b 0.0.0.0 -p 8000 frontend.asgi:application diff --git a/docker/README.md b/docker/README.md deleted file mode 100644 index 2c6f0d1..0000000 --- a/docker/README.md +++ /dev/null @@ -1,6 +0,0 @@ -Use `docker build -t pyshelf/pyshelf -f ./docker/Dockerfile .` in the project root to build the pyshelf image. - -Make sure the following files are in sync: -* config.json -* docker/pyshelf_nginx.conf -* uwsgi.ini \ No newline at end of file diff --git a/docker/config.json b/docker/config.json deleted file mode 100644 index 8aff6e8..0000000 --- a/docker/config.json +++ /dev/null @@ -1 +0,0 @@ -{"TITLE": "pyShelf E-Book Server", "VERSION": "0.7.0", "BOOKPATH": "/books", "DB_HOST": "localhost", "DB_PORT": "5432", "DATABASE": "pyshelf", "USER": "pyshelf", "PASSWORD": "pyshelf", "BOOKSHELF": "data/shelf.json", "ALLOWED_HOSTS": ["localhost", "127.0.0.1", "[::1]", "0.0.0.0"], "SECRET": "", "BUILD_MODE": "production"} diff --git a/docker/development.docker-compose.yml b/docker/development.docker-compose.yml deleted file mode 100644 index f6d97fe..0000000 --- a/docker/development.docker-compose.yml +++ /dev/null @@ -1,34 +0,0 @@ -version: "3.7" - -# This file is used to test the Dockerhub image. To host pyShelf yourself for -# production, please use the official pyShelf image on -# https://hub.docker.com/r/pyshelf/pyshelf - -# For development, use the following command in the root folder: -# -# docker-compose -f ./docker/development.docker-compose.yml up --build - -services: - db: - image: "postgres" - environment: - - "POSTGRES_PASSWORD=pyshelf" - - "POSTGRES_USER=pyshelf" - - "POSTGRES_DB=pyshelf" - volumes: - - "db_data:/var/lib/postgresql/data/" - - pyshelf: - build: - context: .. - dockerfile: ./docker/Dockerfile - ports: - - "8080:8000" - - "1337:1337" - volumes: - - "${LOCAL_BOOK_DIR}:/books" - depends_on: - - db - -volumes: - db_data: diff --git a/docker/pyshelf_nginx.conf b/docker/pyshelf_nginx.conf deleted file mode 100644 index 67c8724..0000000 --- a/docker/pyshelf_nginx.conf +++ /dev/null @@ -1,30 +0,0 @@ -upstream django { - server unix:///tmp/pyshelf_wsgi.sock; -} - -server { - listen 8000; - server_name localhost; - access_log /var/log/nginx/pyshelf.access.log; - error_log /var/log/nginx/pyshelf.error.log; - charset utf-8; - client_max_body_size 75M; - - location /media { - root /pyshelf/src/interface; - } - - location /static { - root /pyshelf/src/interface; - } - - location /books { - internal; - alias /pyshelf; - } - - location / { - uwsgi_pass django; - include uwsgi_params; - } -} \ No newline at end of file diff --git a/docs/pyShelf/html/annotated.html b/docs/pyShelf/html/annotated.html new file mode 100644 index 0000000..b1301d8 --- /dev/null +++ b/docs/pyShelf/html/annotated.html @@ -0,0 +1,104 @@ + + + + + + + +pyShelf Open Source Ebook Server: Class List + + + + + + +
+
+ + + + + + +
+
pyShelf Open Source Ebook Server 0.8.0 +
+
FOSS E-Book Server, https://pyshelf.com
+
+
+ + + + +
+
+
+
Class List
+
+
+
Here are the classes, structs, unions and interfaces with brief descriptions:
+
[detail level 12345]
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
 NDataHooks
 CBookInterface
 NFastAPIServer
 CFastAPIServer
 Nobjects
 CJSInterface
 Nsrc
 Nbackend
 Nlib
 Napi_hooks
 CDuckDuckGo
 Nconfig
 CConfig
 Nlibrary
 CCatalogue
 Nmodels
 CBase
 CBook
 CBookCollection
 CCollection
 CUser
 Noveride
 CACatalogue
 NpyShelf
 CInitFiles
 CServer
 Nstorage
 CStorage
 Ntests
 Nconfig_test
 CTestConfig
 Nlibrary_test
 CTest_Catalogue
 CTest_Config
 CTestCatalogue
+
+
+ + +
+ + diff --git a/docs/pyShelf/html/classes.html b/docs/pyShelf/html/classes.html new file mode 100644 index 0000000..1b0c1f2 --- /dev/null +++ b/docs/pyShelf/html/classes.html @@ -0,0 +1,98 @@ + + + + + + + +pyShelf Open Source Ebook Server: Class Index + + + + + + +
+
+ + + + + + +
+
pyShelf Open Source Ebook Server 0.8.0 +
+
FOSS E-Book Server, https://pyshelf.com
+
+
+ + + + +
+
+
+
Class Index
+
+
+
A | B | C | D | F | I | J | S | T | U
+
+
+
A
+
ACatalogue (src.backend.lib.overide)
+
+
B
+
Base (src.backend.lib.models)
Book (src.backend.lib.models)
BookCollection (src.backend.lib.models)
BookInterface (DataHooks)
+
+
C
+
Catalogue (src.backend.lib.library)
Collection (src.backend.lib.models)
Config (src.backend.lib.config)
+
+
D
+
DuckDuckGo (src.backend.lib.api_hooks)
+
+
F
+
FastAPIServer (FastAPIServer)
+
+
I
+
InitFiles (src.backend.lib.pyShelf)
+
+
J
+
JSInterface (objects)
+
+
S
+
Server (src.backend.lib.pyShelf)
Storage (src.backend.lib.storage)
+
+
T
+
Test_Catalogue (src.backend.tests.library_test)
Test_Config (src.backend.tests.library_test)
TestCatalogue (src.backend.tests.library_test)
TestConfig (src.backend.tests.config_test)
+
+
U
+
User (src.backend.lib.models)
+
+
+ + +
+ + diff --git a/docs/pyShelf/html/d0/d49/classsrc_1_1backend_1_1lib_1_1models_1_1Collection-members.html b/docs/pyShelf/html/d0/d49/classsrc_1_1backend_1_1lib_1_1models_1_1Collection-members.html new file mode 100644 index 0000000..4e997df --- /dev/null +++ b/docs/pyShelf/html/d0/d49/classsrc_1_1backend_1_1lib_1_1models_1_1Collection-members.html @@ -0,0 +1,75 @@ + + + + + + + +pyShelf Open Source Ebook Server: Member List + + + + + + +
+
+ + + + + + +
+
pyShelf Open Source Ebook Server 0.8.0 +
+
FOSS E-Book Server, https://pyshelf.com
+
+
+ + + + + +
+
+
+
src.backend.lib.models.Collection Member List
+
+
+ +

This is the complete list of members for src.backend.lib.models.Collection, including all inherited members.

+ + + + +
book_collections (defined in src.backend.lib.models.Collection)src.backend.lib.models.Collectionstatic
id (defined in src.backend.lib.models.Collection)src.backend.lib.models.Collectionstatic
name (defined in src.backend.lib.models.Collection)src.backend.lib.models.Collectionstatic
+ + +
+ + diff --git a/docs/pyShelf/html/d0/d93/namespacesrc_1_1backend_1_1lib_1_1config.html b/docs/pyShelf/html/d0/d93/namespacesrc_1_1backend_1_1lib_1_1config.html new file mode 100644 index 0000000..984d903 --- /dev/null +++ b/docs/pyShelf/html/d0/d93/namespacesrc_1_1backend_1_1lib_1_1config.html @@ -0,0 +1,75 @@ + + + + + + + +pyShelf Open Source Ebook Server: src.backend.lib.config Namespace Reference + + + + + + +
+
+ + + + + + +
+
pyShelf Open Source Ebook Server 0.8.0 +
+
FOSS E-Book Server, https://pyshelf.com
+
+
+ + + + + +
+
+
+ +
src.backend.lib.config Namespace Reference
+
+
+ + + +

+Classes

class  Config
+

Detailed Description

+
Pyshelf's Configuration Object.
+ + +
+ + diff --git a/docs/pyShelf/html/d1/dca/classsrc_1_1backend_1_1lib_1_1pyShelf_1_1InitFiles-members.html b/docs/pyShelf/html/d1/dca/classsrc_1_1backend_1_1lib_1_1pyShelf_1_1InitFiles-members.html new file mode 100644 index 0000000..c53ba80 --- /dev/null +++ b/docs/pyShelf/html/d1/dca/classsrc_1_1backend_1_1lib_1_1pyShelf_1_1InitFiles-members.html @@ -0,0 +1,74 @@ + + + + + + + +pyShelf Open Source Ebook Server: Member List + + + + + + +
+
+ + + + + + +
+
pyShelf Open Source Ebook Server 0.8.0 +
+
FOSS E-Book Server, https://pyshelf.com
+
+
+ + + + + +
+
+
+
src.backend.lib.pyShelf.InitFiles Member List
+
+
+ +

This is the complete list of members for src.backend.lib.pyShelf.InitFiles, including all inherited members.

+ + + +
__init__(self, file_array) (defined in src.backend.lib.pyShelf.InitFiles)src.backend.lib.pyShelf.InitFiles
CreateFile(self, _pointer)src.backend.lib.pyShelf.InitFiles
+ + +
+ + diff --git a/docs/pyShelf/html/d2/dcb/classobjects_1_1JSInterface-members.html b/docs/pyShelf/html/d2/dcb/classobjects_1_1JSInterface-members.html new file mode 100644 index 0000000..e6b18ce --- /dev/null +++ b/docs/pyShelf/html/d2/dcb/classobjects_1_1JSInterface-members.html @@ -0,0 +1,76 @@ + + + + + + + +pyShelf Open Source Ebook Server: Member List + + + + + + +
+
+ + + + + + +
+
pyShelf Open Source Ebook Server 0.8.0 +
+
FOSS E-Book Server, https://pyshelf.com
+
+
+ + + + + +
+
+
+
objects.JSInterface Member List
+
+
+ +

This is the complete list of members for objects.JSInterface, including all inherited members.

+ + + + + +
__init__(self, Config config)objects.JSInterface
config (defined in objects.JSInterface)objects.JSInterface
install(self)objects.JSInterface
package_json (defined in objects.JSInterface)objects.JSInterface
+ + +
+ + diff --git a/docs/pyShelf/html/d3/d29/classsrc_1_1backend_1_1tests_1_1library__test_1_1Test__Config.html b/docs/pyShelf/html/d3/d29/classsrc_1_1backend_1_1tests_1_1library__test_1_1Test__Config.html new file mode 100644 index 0000000..5121e8e --- /dev/null +++ b/docs/pyShelf/html/d3/d29/classsrc_1_1backend_1_1tests_1_1library__test_1_1Test__Config.html @@ -0,0 +1,721 @@ + + + + + + + +pyShelf Open Source Ebook Server: src.backend.tests.library_test.Test_Config Class Reference + + + + + + +
+
+ + + + + + +
+
pyShelf Open Source Ebook Server 0.8.0 +
+
FOSS E-Book Server, https://pyshelf.com
+
+
+ + + + + +
+
+
+ +
src.backend.tests.library_test.Test_Config Class Reference
+
+
+
+Inheritance diagram for src.backend.tests.library_test.Test_Config:
+
+
+ + +src.backend.lib.config.Config + +
+ + + + + + +

+Public Member Functions

 __init__ (self)
 open_file (self, root="config.json")
 init_config (self)
 get_logger (self)
+ + + + + + + + + + + + + + + + + + + + +

+Public Attributes

 root = root
dict config_structure
 logger = self.get_logger()
 book_path = env.get("BOOKPATH", self._data["BOOKPATH"])
str TITLE = env.get("TITLE", self._data["TITLE"])
 VERSION = env.get("VERSION", self._data["VERSION"])
 book_shelf = env.get("BOOKSHELF", self._data["BOOKSHELF"])
 catalogue_db = env.get("DATABASE", self._data["DATABASE"])
 user = self._data["USER"]
 password = self._data["PASSWORD"]
 db_host = env.get("DB_HOST", self._data["DB_HOST"])
 db_port = env.get("DB_PORT", self._data["DB_PORT"])
list file_array = [self.book_shelf]
bool auto_scan = True
 allowed_hosts
 db_engine = env.get("DB_ENGINE", self._data["DB_ENGINE"])
 db_user = env.get("USER", self._data["USER"])
 db_pass = env.get("PASSWORD", self._data["PASSWORD"])
 build_mode = env.get("BUILD_MODE", self._data["BUILD_MODE"])
+ + + + +

+Protected Attributes

str _fp = "config.json"
 _cp = Path.joinpath(root, self._fp)
 _data = self.init_config()
+

Detailed Description

+

Constructor & Destructor Documentation

+ +

◆ __init__()

+ +
+
+ + + + + + + +
src.backend.tests.library_test.Test_Config.__init__ ( self)
+
+ +
+
+

Member Function Documentation

+ +

◆ get_logger()

+ +
+
+ + + + + +
+ + + + + + + +
src.backend.lib.config.Config.get_logger ( self)
+
+inherited
+
+
Instantiate logging system.
+
+
+ +

◆ init_config()

+ +
+
+ + + + + +
+ + + + + + + +
src.backend.lib.config.Config.init_config ( self)
+
+inherited
+
+ +
+
+ +

◆ open_file()

+ +
+
+ + + + + + + + + + + +
src.backend.tests.library_test.Test_Config.open_file ( self,
root = "config.json" )
+
+
Open config.json and reads in configuration options.
+

Reimplemented from src.backend.lib.config.Config.

+ +
+
+

Member Data Documentation

+ +

◆ _cp

+ +
+
+ + + + + +
+ + + + +
src.backend.lib.config.Config._cp = Path.joinpath(root, self._fp)
+
+protectedinherited
+
+ +
+
+ +

◆ _data

+ +
+
+ + + + + +
+ + + + +
src.backend.lib.config.Config._data = self.init_config()
+
+protectedinherited
+
+ +
+
+ +

◆ _fp

+ +
+
+ + + + + +
+ + + + +
src.backend.lib.config.Config._fp = "config.json"
+
+protectedinherited
+
+ +
+
+ +

◆ allowed_hosts

+ +
+
+ + + + + +
+ + + + +
src.backend.lib.config.Config.allowed_hosts
+
+inherited
+
+Initial value:
= env.get("ALLOWED_HOSTS",
+
self._data["ALLOWED_HOSTS"])
+
+
+
+ +

◆ auto_scan

+ +
+
+ + + + + +
+ + + + +
bool src.backend.lib.config.Config.auto_scan = True
+
+inherited
+
+ +
+
+ +

◆ book_path

+ +
+
+ + + + + +
+ + + + +
src.backend.lib.config.Config.book_path = env.get("BOOKPATH", self._data["BOOKPATH"])
+
+inherited
+
+ +
+
+ +

◆ book_shelf

+ +
+
+ + + + + +
+ + + + +
src.backend.lib.config.Config.book_shelf = env.get("BOOKSHELF", self._data["BOOKSHELF"])
+
+inherited
+
+ +
+
+ +

◆ build_mode

+ +
+
+ + + + + +
+ + + + +
src.backend.lib.config.Config.build_mode = env.get("BUILD_MODE", self._data["BUILD_MODE"])
+
+inherited
+
+ +
+
+ +

◆ catalogue_db

+ +
+
+ + + + + +
+ + + + +
src.backend.lib.config.Config.catalogue_db = env.get("DATABASE", self._data["DATABASE"])
+
+inherited
+
+ +
+
+ +

◆ config_structure

+ +
+
+ + + + + +
+ + + + +
src.backend.lib.config.Config.config_structure
+
+inherited
+
+Initial value:
= {
+
"TITLE": "pyShelf E-Book Server",
+
"VERSION": "0.7.0",
+
"BOOKPATH": "/mnt/books",
+
"DB_HOST": "localhost",
+
"DB_PORT": "5432",
+
"DB_ENGINE": "sqlite",
+
"DATABASE": "pyshelf",
+
"USER": "pyshelf",
+
"PASSWORD": "pyshelf",
+
"BOOKSHELF": "data/shelf.json",
+
"ALLOWED_HOSTS": [
+
"localhost",
+
"127.0.0.1",
+
"[::1]",
+
"0.0.0.0"
+
],
+
"BUILD_MODE": "development"
+
}
+
+
+
+ +

◆ db_engine

+ +
+
+ + + + + +
+ + + + +
src.backend.lib.config.Config.db_engine = env.get("DB_ENGINE", self._data["DB_ENGINE"])
+
+inherited
+
+ +
+
+ +

◆ db_host

+ +
+
+ + + + + +
+ + + + +
src.backend.lib.config.Config.db_host = env.get("DB_HOST", self._data["DB_HOST"])
+
+inherited
+
+ +
+
+ +

◆ db_pass

+ +
+
+ + + + + +
+ + + + +
src.backend.lib.config.Config.db_pass = env.get("PASSWORD", self._data["PASSWORD"])
+
+inherited
+
+ +
+
+ +

◆ db_port

+ +
+
+ + + + + +
+ + + + +
src.backend.lib.config.Config.db_port = env.get("DB_PORT", self._data["DB_PORT"])
+
+inherited
+
+ +
+
+ +

◆ db_user

+ +
+
+ + + + + +
+ + + + +
src.backend.lib.config.Config.db_user = env.get("USER", self._data["USER"])
+
+inherited
+
+ +
+
+ +

◆ file_array

+ +
+
+ + + + + +
+ + + + +
list src.backend.lib.config.Config.file_array = [self.book_shelf]
+
+inherited
+
+ +
+
+ +

◆ logger

+ +
+
+ + + + + +
+ + + + +
src.backend.lib.config.Config.logger = self.get_logger()
+
+inherited
+
+ +
+
+ +

◆ password

+ +
+
+ + + + + +
+ + + + +
src.backend.lib.config.Config.password = self._data["PASSWORD"]
+
+inherited
+
+ +
+
+ +

◆ root

+ +
+
+ + + + + +
+ + + + +
src.backend.lib.config.Config.root = root
+
+inherited
+
+ +
+
+ +

◆ TITLE

+ +
+
+ + + + + +
+ + + + +
str src.backend.lib.config.Config.TITLE = env.get("TITLE", self._data["TITLE"])
+
+inherited
+
+ +
+
+ +

◆ user

+ +
+
+ + + + + +
+ + + + +
src.backend.lib.config.Config.user = self._data["USER"]
+
+inherited
+
+ +
+
+ +

◆ VERSION

+ +
+
+ + + + + +
+ + + + +
src.backend.lib.config.Config.VERSION = env.get("VERSION", self._data["VERSION"])
+
+inherited
+
+ +
+
+
The documentation for this class was generated from the following file: +
+ + +
+ + diff --git a/docs/pyShelf/html/d3/d29/classsrc_1_1backend_1_1tests_1_1library__test_1_1Test__Config.png b/docs/pyShelf/html/d3/d29/classsrc_1_1backend_1_1tests_1_1library__test_1_1Test__Config.png new file mode 100644 index 0000000..e7291f7 Binary files /dev/null and b/docs/pyShelf/html/d3/d29/classsrc_1_1backend_1_1tests_1_1library__test_1_1Test__Config.png differ diff --git a/docs/pyShelf/html/d3/d4a/classsrc_1_1backend_1_1lib_1_1config_1_1Config-members.html b/docs/pyShelf/html/d3/d4a/classsrc_1_1backend_1_1lib_1_1config_1_1Config-members.html new file mode 100644 index 0000000..28ec098 --- /dev/null +++ b/docs/pyShelf/html/d3/d4a/classsrc_1_1backend_1_1lib_1_1config_1_1Config-members.html @@ -0,0 +1,98 @@ + + + + + + + +pyShelf Open Source Ebook Server: Member List + + + + + + +
+
+ + + + + + +
+
pyShelf Open Source Ebook Server 0.8.0 +
+
FOSS E-Book Server, https://pyshelf.com
+
+
+ + + + + +
+
+
+
src.backend.lib.config.Config Member List
+
+
+ +

This is the complete list of members for src.backend.lib.config.Config, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
__init__(self, root)src.backend.lib.config.Config
_cp (defined in src.backend.lib.config.Config)src.backend.lib.config.Configprotected
_data (defined in src.backend.lib.config.Config)src.backend.lib.config.Configprotected
_fp (defined in src.backend.lib.config.Config)src.backend.lib.config.Configprotected
allowed_hosts (defined in src.backend.lib.config.Config)src.backend.lib.config.Config
auto_scan (defined in src.backend.lib.config.Config)src.backend.lib.config.Config
book_path (defined in src.backend.lib.config.Config)src.backend.lib.config.Config
book_shelf (defined in src.backend.lib.config.Config)src.backend.lib.config.Config
build_mode (defined in src.backend.lib.config.Config)src.backend.lib.config.Config
catalogue_db (defined in src.backend.lib.config.Config)src.backend.lib.config.Config
config_structure (defined in src.backend.lib.config.Config)src.backend.lib.config.Config
db_engine (defined in src.backend.lib.config.Config)src.backend.lib.config.Config
db_host (defined in src.backend.lib.config.Config)src.backend.lib.config.Config
db_pass (defined in src.backend.lib.config.Config)src.backend.lib.config.Config
db_port (defined in src.backend.lib.config.Config)src.backend.lib.config.Config
db_user (defined in src.backend.lib.config.Config)src.backend.lib.config.Config
file_array (defined in src.backend.lib.config.Config)src.backend.lib.config.Config
get_logger(self)src.backend.lib.config.Config
init_config(self) (defined in src.backend.lib.config.Config)src.backend.lib.config.Config
logger (defined in src.backend.lib.config.Config)src.backend.lib.config.Config
open_file(self)src.backend.lib.config.Config
password (defined in src.backend.lib.config.Config)src.backend.lib.config.Config
root (defined in src.backend.lib.config.Config)src.backend.lib.config.Config
TITLE (defined in src.backend.lib.config.Config)src.backend.lib.config.Config
user (defined in src.backend.lib.config.Config)src.backend.lib.config.Config
VERSION (defined in src.backend.lib.config.Config)src.backend.lib.config.Config
+ + +
+ + diff --git a/docs/pyShelf/html/d3/d95/classsrc_1_1backend_1_1tests_1_1library__test_1_1TestCatalogue-members.html b/docs/pyShelf/html/d3/d95/classsrc_1_1backend_1_1tests_1_1library__test_1_1TestCatalogue-members.html new file mode 100644 index 0000000..4265152 --- /dev/null +++ b/docs/pyShelf/html/d3/d95/classsrc_1_1backend_1_1tests_1_1library__test_1_1TestCatalogue-members.html @@ -0,0 +1,75 @@ + + + + + + + +pyShelf Open Source Ebook Server: Member List + + + + + + +
+
+ + + + + + +
+
pyShelf Open Source Ebook Server 0.8.0 +
+
FOSS E-Book Server, https://pyshelf.com
+
+
+ + + + + +
+
+
+
src.backend.tests.library_test.TestCatalogue Member List
+
+ + + +
+ + diff --git a/docs/pyShelf/html/d4/d6b/classFastAPIServer_1_1FastAPIServer-members.html b/docs/pyShelf/html/d4/d6b/classFastAPIServer_1_1FastAPIServer-members.html new file mode 100644 index 0000000..8fefa24 --- /dev/null +++ b/docs/pyShelf/html/d4/d6b/classFastAPIServer_1_1FastAPIServer-members.html @@ -0,0 +1,87 @@ + + + + + + + +pyShelf Open Source Ebook Server: Member List + + + + + + +
+
+ + + + + + +
+
pyShelf Open Source Ebook Server 0.8.0 +
+
FOSS E-Book Server, https://pyshelf.com
+
+
+ + + + + +
+
+
+
FastAPIServer.FastAPIServer Member List
+
+
+ +

This is the complete list of members for FastAPIServer.FastAPIServer, including all inherited members.

+ + + + + + + + + + + + + + + + +
__init__(self, config)FastAPIServer.FastAPIServer
book(Request request, int book_id) (defined in FastAPIServer.FastAPIServer)FastAPIServer.FastAPIServer
book(Request request, int book_id) (defined in FastAPIServer.FastAPIServer)FastAPIServer.FastAPIServer
books(Request request, int skip=0, int limit=10, collection=None) (defined in FastAPIServer.FastAPIServer)FastAPIServer.FastAPIServer
collection(Request request, str collection, int skip=0, int limit=30)FastAPIServer.FastAPIServer
collections(Request request) (defined in FastAPIServer.FastAPIServer)FastAPIServer.FastAPIServer
compile_static_files(self)FastAPIServer.FastAPIServer
config (defined in FastAPIServer.FastAPIServer)FastAPIServer.FastAPIServer
fe_config (defined in FastAPIServer.FastAPIServer)FastAPIServer.FastAPIServer
fe_server (defined in FastAPIServer.FastAPIServer)FastAPIServer.FastAPIServer
index(Request request, int skip=0, int limit=30) (defined in FastAPIServer.FastAPIServer)FastAPIServer.FastAPIServer
JSInterface (defined in FastAPIServer.FastAPIServer)FastAPIServer.FastAPIServer
run(self)FastAPIServer.FastAPIServer
search_books_api(Request request, str search)FastAPIServer.FastAPIServer
use_route_names_as_operation_ids(self, FastAPI app)FastAPIServer.FastAPIServer
+ + +
+ + diff --git a/docs/pyShelf/html/d4/d71/classDataHooks_1_1BookInterface-members.html b/docs/pyShelf/html/d4/d71/classDataHooks_1_1BookInterface-members.html new file mode 100644 index 0000000..d81d64e --- /dev/null +++ b/docs/pyShelf/html/d4/d71/classDataHooks_1_1BookInterface-members.html @@ -0,0 +1,74 @@ + + + + + + + +pyShelf Open Source Ebook Server: Member List + + + + + + +
+
+ + + + + + +
+
pyShelf Open Source Ebook Server 0.8.0 +
+
FOSS E-Book Server, https://pyshelf.com
+
+
+ + + + + +
+
+
+
DataHooks.BookInterface Member List
+
+
+ +

This is the complete list of members for DataHooks.BookInterface, including all inherited members.

+ + + +
config (defined in DataHooks.BookInterface)DataHooks.BookInterface
db (defined in DataHooks.BookInterface)DataHooks.BookInterface
+ + +
+ + diff --git a/docs/pyShelf/html/d5/d86/classsrc_1_1backend_1_1lib_1_1models_1_1BookCollection.html b/docs/pyShelf/html/d5/d86/classsrc_1_1backend_1_1lib_1_1models_1_1BookCollection.html new file mode 100644 index 0000000..29e3c13 --- /dev/null +++ b/docs/pyShelf/html/d5/d86/classsrc_1_1backend_1_1lib_1_1models_1_1BookCollection.html @@ -0,0 +1,205 @@ + + + + + + + +pyShelf Open Source Ebook Server: src.backend.lib.models.BookCollection Class Reference + + + + + + +
+
+ + + + + + +
+
pyShelf Open Source Ebook Server 0.8.0 +
+
FOSS E-Book Server, https://pyshelf.com
+
+
+ + + + + +
+
+
+ +
src.backend.lib.models.BookCollection Class Reference
+
+
+
+Inheritance diagram for src.backend.lib.models.BookCollection:
+
+
+ + +src.backend.lib.models.Base + +
+ + + + + + + +

+Static Public Attributes

Mapped id = mapped_column(primary_key=True)
Mapped book_id = mapped_column(ForeignKey("Book.id"))
Mapped collection_id = mapped_column(ForeignKey("Collection.id"))
 book = relationship("Book", back_populates="book_collections")
 collection = relationship("Collection", back_populates="book_collections")
+

Detailed Description

+
Association table linking Books and Collections.

Member Data Documentation

+ +

◆ book

+ +
+
+ + + + + +
+ + + + +
src.backend.lib.models.BookCollection.book = relationship("Book", back_populates="book_collections")
+
+static
+
+ +
+
+ +

◆ book_id

+ +
+
+ + + + + +
+ + + + +
Mapped src.backend.lib.models.BookCollection.book_id = mapped_column(ForeignKey("Book.id"))
+
+static
+
+ +
+
+ +

◆ collection

+ +
+
+ + + + + +
+ + + + +
src.backend.lib.models.BookCollection.collection = relationship("Collection", back_populates="book_collections")
+
+static
+
+ +
+
+ +

◆ collection_id

+ +
+
+ + + + + +
+ + + + +
Mapped src.backend.lib.models.BookCollection.collection_id = mapped_column(ForeignKey("Collection.id"))
+
+static
+
+ +
+
+ +

◆ id

+ +
+
+ + + + + +
+ + + + +
Mapped src.backend.lib.models.BookCollection.id = mapped_column(primary_key=True)
+
+static
+
+ +
+
+
The documentation for this class was generated from the following file: +
+ + +
+ + diff --git a/docs/pyShelf/html/d5/d86/classsrc_1_1backend_1_1lib_1_1models_1_1BookCollection.png b/docs/pyShelf/html/d5/d86/classsrc_1_1backend_1_1lib_1_1models_1_1BookCollection.png new file mode 100644 index 0000000..6b6b1a1 Binary files /dev/null and b/docs/pyShelf/html/d5/d86/classsrc_1_1backend_1_1lib_1_1models_1_1BookCollection.png differ diff --git a/docs/pyShelf/html/d5/da5/classsrc_1_1backend_1_1lib_1_1library_1_1Catalogue.html b/docs/pyShelf/html/d5/da5/classsrc_1_1backend_1_1lib_1_1library_1_1Catalogue.html new file mode 100644 index 0000000..ff96e3e --- /dev/null +++ b/docs/pyShelf/html/d5/da5/classsrc_1_1backend_1_1lib_1_1library_1_1Catalogue.html @@ -0,0 +1,640 @@ + + + + + + + +pyShelf Open Source Ebook Server: src.backend.lib.library.Catalogue Class Reference + + + + + + +
+
+ + + + + + +
+
pyShelf Open Source Ebook Server 0.8.0 +
+
FOSS E-Book Server, https://pyshelf.com
+
+
+ + + + + +
+
+
+ +
src.backend.lib.library.Catalogue Class Reference
+
+
+
+Inheritance diagram for src.backend.lib.library.Catalogue:
+
+
+ + +src.backend.lib.overide.ACatalogue +src.backend.tests.library_test.Test_Catalogue + +
+ + + + + + + + + + + + + + +

+Public Member Functions

 __init__ (self, config)
 scan_folder (self, _path=None)
 filter_books (self)
 process_by_filetype (self, book)
 extract_metadata_epub (self, book)
 extract_metadata_pdf (self, book)
 extract_metadata_mobi (self, book)
 extract_content (self, book_zip, book)
 extract_cover_html (self, book_zip, book)
 extract_cover_image (self, book_zip, book)
 compare_shelf_current (self)
 import_books (self, list=None, **kwargs)
+ + + +

+Static Public Member Functions

 process_epub (book)
 stripTags (source)
+ + + + + + + + + + + + + +

+Public Attributes

list file_list = []
 opf_regx = re.compile(r"\.opf")
 cover_regx = re.compile(r"\.jpg|\.jpeg|\.png|\.bmp|\.gif")
 html_regx = re.compile(r"\.html")
 title_sanitization_regx = re.compile(r"^(Book )+[0-9]*")
 title_sanitization_lvl2_regx
 title_sanitization_dirs_regx = re.compile(r"/")
 root_dir = config.root
 book_folder = config.book_path
 books = None
 db_pointer = config.catalogue_db
 config = config
+

Detailed Description

+
Decodes book metadata for storage
+

Constructor & Destructor Documentation

+ +

◆ __init__()

+ +
+
+ + + + + + + + + + + +
src.backend.lib.library.Catalogue.__init__ ( self,
config )
+
+ +
+
+

Member Function Documentation

+ +

◆ compare_shelf_current()

+ +
+
+ + + + + + + +
src.backend.lib.library.Catalogue.compare_shelf_current ( self)
+
+
Calls storage system, gets list of books stored and compares against files on disk
+
+
+
+ +

◆ extract_content()

+ +
+
+ + + + + + + + + + + + + + + + +
src.backend.lib.library.Catalogue.extract_content ( self,
book_zip,
book )
+
+
Opens epub as zip file filters then stores as list any files matching opf_regx
+
+
+
+ +

◆ extract_cover_html()

+ +
+
+ + + + + + + + + + + + + + + + +
src.backend.lib.library.Catalogue.extract_cover_html ( self,
book_zip,
book )
+
+
Opens epub as zip file filters then stores as list any files matching html_regx
+
+
+
+ +

◆ extract_cover_image()

+ +
+
+ + + + + + + + + + + + + + + + +
src.backend.lib.library.Catalogue.extract_cover_image ( self,
book_zip,
book )
+
+
Opens epub as zip file filters then stores as list any files matching cover_regx
+
+
+
+ +

◆ extract_metadata_epub()

+ +
+
+ + + + + + + + + + + +
src.backend.lib.library.Catalogue.extract_metadata_epub ( self,
book )
+
+
Extract metadata from epub file
+
+:param book: Dictionary of epub file contents
+:returns: Dictionary of book metadata
+
+
+
+ +

◆ extract_metadata_mobi()

+ +
+
+ + + + + + + + + + + +
src.backend.lib.library.Catalogue.extract_metadata_mobi ( self,
book )
+
+ +
+
+ +

◆ extract_metadata_pdf()

+ +
+
+ + + + + + + + + + + +
src.backend.lib.library.Catalogue.extract_metadata_pdf ( self,
book )
+
+
Return extracted metadata
+:NOTES: Retrieval of data has been problematic, some pdf's providing
+reliable titles that corespond with the actual, and others being
+nonsense.
+
+
+
+ +

◆ filter_books()

+ +
+
+ + + + + + + +
src.backend.lib.library.Catalogue.filter_books ( self)
+
+
Calls scan_folder and filters out book files.
+
+:returns self._book_list_expanded: json string containing
+all book metadata
+
+

Reimplemented in src.backend.tests.library_test.Test_Catalogue.

+ +
+
+ +

◆ import_books()

+ +
+
+ + + + + + + + + + + + + + + + +
src.backend.lib.library.Catalogue.import_books ( self,
list = None,
** kwargs )
+
+
Main entry point for import operations.
+Gets a list of new files via compare_shelf_current.
+Iterates over list and inserts new books into database.
+
+

Reimplemented in src.backend.lib.overide.ACatalogue.

+ +
+
+ +

◆ process_by_filetype()

+ +
+
+ + + + + + + + + + + +
src.backend.lib.library.Catalogue.process_by_filetype ( self,
book )
+
+
Determine books filetype and process.
+
+
+ +

◆ process_epub()

+ +
+
+ + + + + +
+ + + + + + + +
src.backend.lib.library.Catalogue.process_epub ( book)
+
+static
+
+
Return dictionary of epub file contents
+
+
+ +

◆ scan_folder()

+ +
+
+ + + + + + + + + + + +
src.backend.lib.library.Catalogue.scan_folder ( self,
_path = None )
+
+
Scan folder by _path, allows recurisive scanning
+
+:param _path: Path to scan
+
+

Reimplemented in src.backend.lib.overide.ACatalogue.

+ +
+
+ +

◆ stripTags()

+ +
+
+ + + + + +
+ + + + + + + +
src.backend.lib.library.Catalogue.stripTags ( source)
+
+static
+
+ +
+
+

Member Data Documentation

+ +

◆ book_folder

+ +
+
+ + + + +
src.backend.lib.library.Catalogue.book_folder = config.book_path
+
+ +
+
+ +

◆ books

+ +
+
+ + + + +
src.backend.lib.library.Catalogue.books = None
+
+ +
+
+ +

◆ config

+ +
+
+ + + + +
src.backend.lib.library.Catalogue.config = config
+
+ +
+
+ +

◆ cover_regx

+ +
+
+ + + + +
src.backend.lib.library.Catalogue.cover_regx = re.compile(r"\.jpg|\.jpeg|\.png|\.bmp|\.gif")
+
+ +
+
+ +

◆ db_pointer

+ +
+
+ + + + +
src.backend.lib.library.Catalogue.db_pointer = config.catalogue_db
+
+ +
+
+ +

◆ file_list

+ +
+
+ + + + +
list src.backend.lib.library.Catalogue.file_list = []
+
+ +
+
+ +

◆ html_regx

+ +
+
+ + + + +
src.backend.lib.library.Catalogue.html_regx = re.compile(r"\.html")
+
+ +
+
+ +

◆ opf_regx

+ +
+
+ + + + +
src.backend.lib.library.Catalogue.opf_regx = re.compile(r"\.opf")
+
+ +
+
+ +

◆ root_dir

+ +
+
+ + + + +
src.backend.lib.library.Catalogue.root_dir = config.root
+
+ +
+
+ +

◆ title_sanitization_dirs_regx

+ +
+
+ + + + +
src.backend.lib.library.Catalogue.title_sanitization_dirs_regx = re.compile(r"/")
+
+ +
+
+ +

◆ title_sanitization_lvl2_regx

+ +
+
+ + + + +
src.backend.lib.library.Catalogue.title_sanitization_lvl2_regx
+
+Initial value:
= re.compile(
+
r"^(Book )+[0-9]*\W+(-)")
+
+
+
+ +

◆ title_sanitization_regx

+ +
+
+ + + + +
src.backend.lib.library.Catalogue.title_sanitization_regx = re.compile(r"^(Book )+[0-9]*")
+
+ +
+
+
The documentation for this class was generated from the following file: +
+ + +
+ + diff --git a/docs/pyShelf/html/d5/da5/classsrc_1_1backend_1_1lib_1_1library_1_1Catalogue.png b/docs/pyShelf/html/d5/da5/classsrc_1_1backend_1_1lib_1_1library_1_1Catalogue.png new file mode 100644 index 0000000..13f6a78 Binary files /dev/null and b/docs/pyShelf/html/d5/da5/classsrc_1_1backend_1_1lib_1_1library_1_1Catalogue.png differ diff --git a/docs/pyShelf/html/d5/ddf/classsrc_1_1backend_1_1tests_1_1library__test_1_1Test__Config-members.html b/docs/pyShelf/html/d5/ddf/classsrc_1_1backend_1_1tests_1_1library__test_1_1Test__Config-members.html new file mode 100644 index 0000000..b912f6e --- /dev/null +++ b/docs/pyShelf/html/d5/ddf/classsrc_1_1backend_1_1tests_1_1library__test_1_1Test__Config-members.html @@ -0,0 +1,98 @@ + + + + + + + +pyShelf Open Source Ebook Server: Member List + + + + + + +
+
+ + + + + + +
+
pyShelf Open Source Ebook Server 0.8.0 +
+
FOSS E-Book Server, https://pyshelf.com
+
+
+ + + + + +
+
+
+
src.backend.tests.library_test.Test_Config Member List
+
+
+ +

This is the complete list of members for src.backend.tests.library_test.Test_Config, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
__init__(self) (defined in src.backend.tests.library_test.Test_Config)src.backend.tests.library_test.Test_Config
_cp (defined in src.backend.lib.config.Config)src.backend.lib.config.Configprotected
_data (defined in src.backend.lib.config.Config)src.backend.lib.config.Configprotected
_fp (defined in src.backend.lib.config.Config)src.backend.lib.config.Configprotected
allowed_hosts (defined in src.backend.lib.config.Config)src.backend.lib.config.Config
auto_scan (defined in src.backend.lib.config.Config)src.backend.lib.config.Config
book_path (defined in src.backend.lib.config.Config)src.backend.lib.config.Config
book_shelf (defined in src.backend.lib.config.Config)src.backend.lib.config.Config
build_mode (defined in src.backend.lib.config.Config)src.backend.lib.config.Config
catalogue_db (defined in src.backend.lib.config.Config)src.backend.lib.config.Config
config_structure (defined in src.backend.lib.config.Config)src.backend.lib.config.Config
db_engine (defined in src.backend.lib.config.Config)src.backend.lib.config.Config
db_host (defined in src.backend.lib.config.Config)src.backend.lib.config.Config
db_pass (defined in src.backend.lib.config.Config)src.backend.lib.config.Config
db_port (defined in src.backend.lib.config.Config)src.backend.lib.config.Config
db_user (defined in src.backend.lib.config.Config)src.backend.lib.config.Config
file_array (defined in src.backend.lib.config.Config)src.backend.lib.config.Config
get_logger(self)src.backend.lib.config.Config
init_config(self) (defined in src.backend.lib.config.Config)src.backend.lib.config.Config
logger (defined in src.backend.lib.config.Config)src.backend.lib.config.Config
open_file(self, root="config.json")src.backend.tests.library_test.Test_Config
password (defined in src.backend.lib.config.Config)src.backend.lib.config.Config
root (defined in src.backend.lib.config.Config)src.backend.lib.config.Config
TITLE (defined in src.backend.lib.config.Config)src.backend.lib.config.Config
user (defined in src.backend.lib.config.Config)src.backend.lib.config.Config
VERSION (defined in src.backend.lib.config.Config)src.backend.lib.config.Config
+ + +
+ + diff --git a/docs/pyShelf/html/d5/dee/classsrc_1_1backend_1_1tests_1_1config__test_1_1TestConfig-members.html b/docs/pyShelf/html/d5/dee/classsrc_1_1backend_1_1tests_1_1config__test_1_1TestConfig-members.html new file mode 100644 index 0000000..1cfe6bf --- /dev/null +++ b/docs/pyShelf/html/d5/dee/classsrc_1_1backend_1_1tests_1_1config__test_1_1TestConfig-members.html @@ -0,0 +1,76 @@ + + + + + + + +pyShelf Open Source Ebook Server: Member List + + + + + + +
+
+ + + + + + +
+
pyShelf Open Source Ebook Server 0.8.0 +
+
FOSS E-Book Server, https://pyshelf.com
+
+
+ + + + + +
+
+
+
src.backend.tests.config_test.TestConfig Member List
+
+ + + +
+ + diff --git a/docs/pyShelf/html/d6/d20/classsrc_1_1backend_1_1lib_1_1library_1_1Catalogue-members.html b/docs/pyShelf/html/d6/d20/classsrc_1_1backend_1_1lib_1_1library_1_1Catalogue-members.html new file mode 100644 index 0000000..767df66 --- /dev/null +++ b/docs/pyShelf/html/d6/d20/classsrc_1_1backend_1_1lib_1_1library_1_1Catalogue-members.html @@ -0,0 +1,98 @@ + + + + + + + +pyShelf Open Source Ebook Server: Member List + + + + + + +
+
+ + + + + + +
+
pyShelf Open Source Ebook Server 0.8.0 +
+
FOSS E-Book Server, https://pyshelf.com
+
+
+ + + + + +
+
+
+
src.backend.lib.library.Catalogue Member List
+
+
+ +

This is the complete list of members for src.backend.lib.library.Catalogue, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
__init__(self, config) (defined in src.backend.lib.library.Catalogue)src.backend.lib.library.Catalogue
book_folder (defined in src.backend.lib.library.Catalogue)src.backend.lib.library.Catalogue
books (defined in src.backend.lib.library.Catalogue)src.backend.lib.library.Catalogue
compare_shelf_current(self)src.backend.lib.library.Catalogue
config (defined in src.backend.lib.library.Catalogue)src.backend.lib.library.Catalogue
cover_regx (defined in src.backend.lib.library.Catalogue)src.backend.lib.library.Catalogue
db_pointer (defined in src.backend.lib.library.Catalogue)src.backend.lib.library.Catalogue
extract_content(self, book_zip, book)src.backend.lib.library.Catalogue
extract_cover_html(self, book_zip, book)src.backend.lib.library.Catalogue
extract_cover_image(self, book_zip, book)src.backend.lib.library.Catalogue
extract_metadata_epub(self, book)src.backend.lib.library.Catalogue
extract_metadata_mobi(self, book) (defined in src.backend.lib.library.Catalogue)src.backend.lib.library.Catalogue
extract_metadata_pdf(self, book)src.backend.lib.library.Catalogue
file_list (defined in src.backend.lib.library.Catalogue)src.backend.lib.library.Catalogue
filter_books(self)src.backend.lib.library.Catalogue
html_regx (defined in src.backend.lib.library.Catalogue)src.backend.lib.library.Catalogue
import_books(self, list=None, **kwargs)src.backend.lib.library.Catalogue
opf_regx (defined in src.backend.lib.library.Catalogue)src.backend.lib.library.Catalogue
process_by_filetype(self, book)src.backend.lib.library.Catalogue
process_epub(book)src.backend.lib.library.Cataloguestatic
root_dir (defined in src.backend.lib.library.Catalogue)src.backend.lib.library.Catalogue
scan_folder(self, _path=None)src.backend.lib.library.Catalogue
stripTags(source) (defined in src.backend.lib.library.Catalogue)src.backend.lib.library.Cataloguestatic
title_sanitization_dirs_regx (defined in src.backend.lib.library.Catalogue)src.backend.lib.library.Catalogue
title_sanitization_lvl2_regx (defined in src.backend.lib.library.Catalogue)src.backend.lib.library.Catalogue
title_sanitization_regx (defined in src.backend.lib.library.Catalogue)src.backend.lib.library.Catalogue
+ + +
+ + diff --git a/docs/pyShelf/html/d6/d4e/classsrc_1_1backend_1_1lib_1_1models_1_1Book.html b/docs/pyShelf/html/d6/d4e/classsrc_1_1backend_1_1lib_1_1models_1_1Book.html new file mode 100644 index 0000000..641d81b --- /dev/null +++ b/docs/pyShelf/html/d6/d4e/classsrc_1_1backend_1_1lib_1_1models_1_1Book.html @@ -0,0 +1,438 @@ + + + + + + + +pyShelf Open Source Ebook Server: src.backend.lib.models.Book Class Reference + + + + + + +
+
+ + + + + + +
+
pyShelf Open Source Ebook Server 0.8.0 +
+
FOSS E-Book Server, https://pyshelf.com
+
+
+ + + + + +
+
+
+ +
src.backend.lib.models.Book Class Reference
+
+
+
+Inheritance diagram for src.backend.lib.models.Book:
+
+
+ + +src.backend.lib.models.Base + +
+ + + + + + + + + + + + + + + + + +

+Static Public Attributes

Mapped id = mapped_column(primary_key=True, nullable=False)
Mapped title [str]
Mapped author [Optional[str]]
Mapped categories [Optional[str]]
Mapped cover [Optional[bytes]]
Mapped pages [Optional[int]]
Mapped progress [Optional[float]]
Mapped file_name [str]
Mapped description [Optional[str]]
Mapped date [timestamp]
Mapped rights [Optional[str]]
Mapped tags [Optional[str]]
Mapped identifier [Optional[str]]
Mapped publisher [Optional[str]]
 book_collections
+

Detailed Description

+
Book model.

Member Data Documentation

+ +

◆ author

+ +
+
+ + + + + +
+ + + + +
Mapped src.backend.lib.models.Book.author [Optional[str]]
+
+static
+
+ +
+
+ +

◆ book_collections

+ +
+
+ + + + + +
+ + + + +
src.backend.lib.models.Book.book_collections
+
+static
+
+Initial value:
= relationship(
+
"BookCollection", back_populates="book", cascade="all, delete-orphan"
+
)
+
+
+
+ +

◆ categories

+ +
+
+ + + + + +
+ + + + +
Mapped src.backend.lib.models.Book.categories [Optional[str]]
+
+static
+
+ +
+
+ +

◆ cover

+ +
+
+ + + + + +
+ + + + +
Mapped src.backend.lib.models.Book.cover [Optional[bytes]]
+
+static
+
+ +
+
+ +

◆ date

+ +
+
+ + + + + +
+ + + + +
Mapped src.backend.lib.models.Book.date [timestamp]
+
+static
+
+ +
+
+ +

◆ description

+ +
+
+ + + + + +
+ + + + +
Mapped src.backend.lib.models.Book.description [Optional[str]]
+
+static
+
+ +
+
+ +

◆ file_name

+ +
+
+ + + + + +
+ + + + +
Mapped src.backend.lib.models.Book.file_name [str]
+
+static
+
+ +
+
+ +

◆ id

+ +
+
+ + + + + +
+ + + + +
Mapped src.backend.lib.models.Book.id = mapped_column(primary_key=True, nullable=False)
+
+static
+
+ +
+
+ +

◆ identifier

+ +
+
+ + + + + +
+ + + + +
Mapped src.backend.lib.models.Book.identifier [Optional[str]]
+
+static
+
+ +
+
+ +

◆ pages

+ +
+
+ + + + + +
+ + + + +
Mapped src.backend.lib.models.Book.pages [Optional[int]]
+
+static
+
+ +
+
+ +

◆ progress

+ +
+
+ + + + + +
+ + + + +
Mapped src.backend.lib.models.Book.progress [Optional[float]]
+
+static
+
+ +
+
+ +

◆ publisher

+ +
+
+ + + + + +
+ + + + +
Mapped src.backend.lib.models.Book.publisher [Optional[str]]
+
+static
+
+ +
+
+ +

◆ rights

+ +
+
+ + + + + +
+ + + + +
Mapped src.backend.lib.models.Book.rights [Optional[str]]
+
+static
+
+ +
+
+ +

◆ tags

+ +
+
+ + + + + +
+ + + + +
Mapped src.backend.lib.models.Book.tags [Optional[str]]
+
+static
+
+ +
+
+ +

◆ title

+ +
+
+ + + + + +
+ + + + +
Mapped src.backend.lib.models.Book.title [str]
+
+static
+
+ +
+
+
The documentation for this class was generated from the following file: +
+ + +
+ + diff --git a/docs/pyShelf/html/d6/d4e/classsrc_1_1backend_1_1lib_1_1models_1_1Book.png b/docs/pyShelf/html/d6/d4e/classsrc_1_1backend_1_1lib_1_1models_1_1Book.png new file mode 100644 index 0000000..bf3088a Binary files /dev/null and b/docs/pyShelf/html/d6/d4e/classsrc_1_1backend_1_1lib_1_1models_1_1Book.png differ diff --git a/docs/pyShelf/html/d6/d90/classsrc_1_1backend_1_1lib_1_1models_1_1Base.html b/docs/pyShelf/html/d6/d90/classsrc_1_1backend_1_1lib_1_1models_1_1Base.html new file mode 100644 index 0000000..6bf2fb5 --- /dev/null +++ b/docs/pyShelf/html/d6/d90/classsrc_1_1backend_1_1lib_1_1models_1_1Base.html @@ -0,0 +1,85 @@ + + + + + + + +pyShelf Open Source Ebook Server: src.backend.lib.models.Base Class Reference + + + + + + +
+
+ + + + + + +
+
pyShelf Open Source Ebook Server 0.8.0 +
+
FOSS E-Book Server, https://pyshelf.com
+
+
+ + + + + +
+
+
+
src.backend.lib.models.Base Class Reference
+
+
+
+Inheritance diagram for src.backend.lib.models.Base:
+
+
+ + +src.backend.lib.models.Book +src.backend.lib.models.BookCollection +src.backend.lib.models.Collection +src.backend.lib.models.User + +
+

Detailed Description

+
Base class for all models.

The documentation for this class was generated from the following file: +
+ + +
+ + diff --git a/docs/pyShelf/html/d6/d90/classsrc_1_1backend_1_1lib_1_1models_1_1Base.png b/docs/pyShelf/html/d6/d90/classsrc_1_1backend_1_1lib_1_1models_1_1Base.png new file mode 100644 index 0000000..2ca7df0 Binary files /dev/null and b/docs/pyShelf/html/d6/d90/classsrc_1_1backend_1_1lib_1_1models_1_1Base.png differ diff --git a/docs/pyShelf/html/d7/d40/classsrc_1_1backend_1_1lib_1_1storage_1_1Storage.html b/docs/pyShelf/html/d7/d40/classsrc_1_1backend_1_1lib_1_1storage_1_1Storage.html new file mode 100644 index 0000000..9e6654c --- /dev/null +++ b/docs/pyShelf/html/d7/d40/classsrc_1_1backend_1_1lib_1_1storage_1_1Storage.html @@ -0,0 +1,559 @@ + + + + + + + +pyShelf Open Source Ebook Server: src.backend.lib.storage.Storage Class Reference + + + + + + +
+
+ + + + + + +
+
pyShelf Open Source Ebook Server 0.8.0 +
+
FOSS E-Book Server, https://pyshelf.com
+
+
+ + + + + +
+
+
+ +
src.backend.lib.storage.Storage Class Reference
+
+
+ + + + + + + + + + + + + + + +

+Public Member Functions

 __init__ (self, config)
 get_connection_string (self)
 create_tables (self)
 insert_book (self, book)
 book_paths_list (self)
list() parse_collections_from_path (self, dict() book)
 make_collections (self)
 get_books (self, collection=None, skip=None, limit=None)
 get_book (self, id)
 get_collections (self)
 get_collection (self, name)
dict parse_advanced_query (self, str query)
 fuzzy_search_books (self, str query, int limit=30)
+ + + + + + + + +

+Public Attributes

 config = config
 sql = self.config.catalogue_db
 user = self.config.user
 password = self.config.password
 db_host = self.config.db_host
 db_port = self.config.db_port
 engine
+

Detailed Description

+
Create a new Storage object.
+
+>>> db = Storage(config)
+
+Parameters
+----------
+config : Config()
+    Main program configuration.
+
+Attributes
+----------
+config : Stores configuration
+sql : Database Name
+user : Database User Name
+password : Database Password
+db_host : Database Host
+db_port : Database Port
+engine : sqlalchemy.create_engine(url, executor, kw)
+

Constructor & Destructor Documentation

+ +

◆ __init__()

+ +
+
+ + + + + + + + + + + +
src.backend.lib.storage.Storage.__init__ ( self,
config )
+
+
Initialize storage object.
+
+
+

Member Function Documentation

+ +

◆ book_paths_list()

+ +
+
+ + + + + + + +
src.backend.lib.storage.Storage.book_paths_list ( self)
+
+
Get file paths from database for comparison to system files.
+
+Returns
+-------
+_result : ScalarResult Object
+
+
+
+ +

◆ create_tables()

+ +
+
+ + + + + + + +
src.backend.lib.storage.Storage.create_tables ( self)
+
+
Create table structure.
+
+
+ +

◆ fuzzy_search_books()

+ +
+
+ + + + + + + + + + + + + + + + +
src.backend.lib.storage.Storage.fuzzy_search_books ( self,
str query,
int limit = 30 )
+
+ +
+
+ +

◆ get_book()

+ +
+
+ + + + + + + + + + + +
src.backend.lib.storage.Storage.get_book ( self,
id )
+
+
Get book from database.
+
+Parameters
+----------
+id : int
+    Book ID to filter by.
+
+Returns
+-------
+_result : ScalarResult Object
+
+
+
+ +

◆ get_books()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + +
src.backend.lib.storage.Storage.get_books ( self,
collection = None,
skip = None,
limit = None )
+
+
Get books from database.
+
+Parameters
+----------
+collection : int or None
+    Collection ID to filter by.
+skip : int or None
+    Number of records to skip (offset).
+limit : int or None
+    Maximum number of records to return.
+
+
+
+ +

◆ get_collection()

+ +
+
+ + + + + + + + + + + +
src.backend.lib.storage.Storage.get_collection ( self,
name )
+
+
Get collection from database.
+
+Returns
+-------
+_result : ScalarResult Object
+
+
+
+ +

◆ get_collections()

+ +
+
+ + + + + + + +
src.backend.lib.storage.Storage.get_collections ( self)
+
+
Get collections from database.
+
+Returns
+-------
+_result : ScalarResult Object
+
+
+
+ +

◆ get_connection_string()

+ +
+
+ + + + + + + +
src.backend.lib.storage.Storage.get_connection_string ( self)
+
+
Get connection string.
+
+Engine type references config.json:DB_ENGINE.
+
+Returns
+-------
+str : sqlalchemy Connection String
+
+
+
+ +

◆ insert_book()

+ +
+
+ + + + + + + + + + + +
src.backend.lib.storage.Storage.insert_book ( self,
book )
+
+
Insert a new book into the database.
+
+Parameters
+----------
+book: dict()
+    Book object to insert.
+
+Returns
+-------
+bool
+    True on success False on failure
+
+
+
+ +

◆ make_collections()

+ +
+
+ + + + + + + +
src.backend.lib.storage.Storage.make_collections ( self)
+
+
Ensure collections exist and link them to books (many-to-many).
+
+
+ +

◆ parse_advanced_query()

+ +
+
+ + + + + + + + + + + +
dict src.backend.lib.storage.Storage.parse_advanced_query ( self,
str query )
+
+
Parse a query like 'title:"dark tower" author:king tags:fantasy'
+
+
+ +

◆ parse_collections_from_path()

+ +
+
+ + + + + + + + + + + +
list() src.backend.lib.storage.Storage.parse_collections_from_path ( self,
dict() book )
+
+
Parse book path's to determine common folder structure.
+
+Stores collections based on shared paths.
+
+Parameters
+----------
+book : dict()
+    Book object to parse.
+
+Returns
+-------
+collections : list()
+    List of collections.
+
+
+
+

Member Data Documentation

+ +

◆ config

+ +
+
+ + + + +
src.backend.lib.storage.Storage.config = config
+
+ +
+
+ +

◆ db_host

+ +
+
+ + + + +
src.backend.lib.storage.Storage.db_host = self.config.db_host
+
+ +
+
+ +

◆ db_port

+ +
+
+ + + + +
src.backend.lib.storage.Storage.db_port = self.config.db_port
+
+ +
+
+ +

◆ engine

+ +
+
+ + + + +
src.backend.lib.storage.Storage.engine
+
+Initial value:
= create_engine(self.get_connection_string(),
+
pool_pre_ping=True)
+
+
+
+ +

◆ password

+ +
+
+ + + + +
src.backend.lib.storage.Storage.password = self.config.password
+
+ +
+
+ +

◆ sql

+ +
+
+ + + + +
src.backend.lib.storage.Storage.sql = self.config.catalogue_db
+
+ +
+
+ +

◆ user

+ +
+
+ + + + +
src.backend.lib.storage.Storage.user = self.config.user
+
+ +
+
+
The documentation for this class was generated from the following file: +
+ + +
+ + diff --git a/docs/pyShelf/html/d7/d88/classsrc_1_1backend_1_1lib_1_1api__hooks_1_1DuckDuckGo.html b/docs/pyShelf/html/d7/d88/classsrc_1_1backend_1_1lib_1_1api__hooks_1_1DuckDuckGo.html new file mode 100644 index 0000000..5a88d5d --- /dev/null +++ b/docs/pyShelf/html/d7/d88/classsrc_1_1backend_1_1lib_1_1api__hooks_1_1DuckDuckGo.html @@ -0,0 +1,181 @@ + + + + + + + +pyShelf Open Source Ebook Server: src.backend.lib.api_hooks.DuckDuckGo Class Reference + + + + + + +
+
+ + + + + + +
+
pyShelf Open Source Ebook Server 0.8.0 +
+
FOSS E-Book Server, https://pyshelf.com
+
+
+ + + + + +
+
+
+ +
src.backend.lib.api_hooks.DuckDuckGo Class Reference
+
+
+ + + + + +

+Public Member Functions

 __init__ (self)
 image_result (self, query)
 description_result (self, query)
+ + + +

+Public Attributes

str url = "https://api.duckduckgo.com/?q="
str imageurl = "https://duckduckgo.com"
+

Detailed Description

+
duckduckgo related searching

Constructor & Destructor Documentation

+ +

◆ __init__()

+ +
+
+ + + + + + + +
src.backend.lib.api_hooks.DuckDuckGo.__init__ ( self)
+
+ +
+
+

Member Function Documentation

+ +

◆ description_result()

+ +
+
+ + + + + + + + + + + +
src.backend.lib.api_hooks.DuckDuckGo.description_result ( self,
query )
+
+ +
+
+ +

◆ image_result()

+ +
+
+ + + + + + + + + + + +
src.backend.lib.api_hooks.DuckDuckGo.image_result ( self,
query )
+
+
Returns json containing url to image
+:param _key: &t=h_&iar=images&iax=images&ia=images&format=json&pretty=1
+
+
+
+

Member Data Documentation

+ +

◆ imageurl

+ +
+
+ + + + +
str src.backend.lib.api_hooks.DuckDuckGo.imageurl = "https://duckduckgo.com"
+
+ +
+
+ +

◆ url

+ +
+
+ + + + +
str src.backend.lib.api_hooks.DuckDuckGo.url = "https://api.duckduckgo.com/?q="
+
+ +
+
+
The documentation for this class was generated from the following file: +
+ + +
+ + diff --git a/docs/pyShelf/html/d7/db9/classsrc_1_1backend_1_1lib_1_1pyShelf_1_1Server.html b/docs/pyShelf/html/d7/db9/classsrc_1_1backend_1_1lib_1_1pyShelf_1_1Server.html new file mode 100644 index 0000000..684ed50 --- /dev/null +++ b/docs/pyShelf/html/d7/db9/classsrc_1_1backend_1_1lib_1_1pyShelf_1_1Server.html @@ -0,0 +1,327 @@ + + + + + + + +pyShelf Open Source Ebook Server: src.backend.lib.pyShelf.Server Class Reference + + + + + + +
+
+ + + + + + +
+
pyShelf Open Source Ebook Server 0.8.0 +
+
FOSS E-Book Server, https://pyshelf.com
+
+
+ + + + + +
+
+
+ +
src.backend.lib.pyShelf.Server Class Reference
+
+
+ + + + + + + + + +

+Public Member Functions

 __init__ (self, root)
 __aexit__ (self, *args, **kwargs)
 initialize_server (self)
 runImport (self)
 socketio (self, websocket, path)
 pong (self)
 start (self)
+ + + + + + + +

+Public Attributes

 root = root
tuple host = ("127.0.0.1", 1337)
 config = Config(self.root)
 loop = None
 serve = None
 socketio
+

Detailed Description

+
Main Server Container
+:TODO: Document this
+

Constructor & Destructor Documentation

+ +

◆ __init__()

+ +
+
+ + + + + + + + + + + +
src.backend.lib.pyShelf.Server.__init__ ( self,
root )
+
+ +
+
+

Member Function Documentation

+ +

◆ __aexit__()

+ +
+
+ + + + + + + + + + + + + + + + +
src.backend.lib.pyShelf.Server.__aexit__ ( self,
* args,
** kwargs )
+
+ +
+
+ +

◆ initialize_server()

+ +
+
+ + + + + + + +
src.backend.lib.pyShelf.Server.initialize_server ( self)
+
+ +
+
+ +

◆ pong()

+ +
+
+ + + + + + + +
src.backend.lib.pyShelf.Server.pong ( self)
+
+ +
+
+ +

◆ runImport()

+ +
+
+ + + + + + + +
src.backend.lib.pyShelf.Server.runImport ( self)
+
+ +
+
+ +

◆ socketio()

+ +
+
+ + + + + + + + + + + + + + + + +
src.backend.lib.pyShelf.Server.socketio ( self,
websocket,
path )
+
+ +
+
+ +

◆ start()

+ +
+
+ + + + + + + +
src.backend.lib.pyShelf.Server.start ( self)
+
+ +
+
+

Member Data Documentation

+ +

◆ config

+ +
+
+ + + + +
src.backend.lib.pyShelf.Server.config = Config(self.root)
+
+ +
+
+ +

◆ host

+ +
+
+ + + + +
tuple src.backend.lib.pyShelf.Server.host = ("127.0.0.1", 1337)
+
+ +
+
+ +

◆ loop

+ +
+
+ + + + +
src.backend.lib.pyShelf.Server.loop = None
+
+ +
+
+ +

◆ root

+ +
+
+ + + + +
src.backend.lib.pyShelf.Server.root = root
+
+ +
+
+ +

◆ serve

+ +
+
+ + + + +
src.backend.lib.pyShelf.Server.serve = None
+
+ +
+
+ +

◆ socketio

+ +
+
+ + + + +
src.backend.lib.pyShelf.Server.socketio
+
+ +
+
+
The documentation for this class was generated from the following file: +
+ + +
+ + diff --git a/docs/pyShelf/html/d7/dd7/namespacesrc_1_1____main____.html b/docs/pyShelf/html/d7/dd7/namespacesrc_1_1____main____.html new file mode 100644 index 0000000..09742f6 --- /dev/null +++ b/docs/pyShelf/html/d7/dd7/namespacesrc_1_1____main____.html @@ -0,0 +1,161 @@ + + + + + + + +pyShelf Open Source Ebook Server: src.__main__ Namespace Reference + + + + + + +
+
+ + + + + + +
+
pyShelf Open Source Ebook Server 0.8.0 +
+
FOSS E-Book Server, https://pyshelf.com
+
+
+ + + + + +
+
+
+ +
src.__main__ Namespace Reference
+
+
+ + + + +

+Functions

 run_import ()
 main ()
+ + + + +

+Variables

 root = Path.cwd()
 config = Config(root)
 PRG_PATH = Path.cwd().__str__()
+

Detailed Description

+
PyShelf Entrypoint.

Function Documentation

+ +

◆ main()

+ +
+
+ + + + + + + +
src.__main__.main ()
+
+
Program entrypoint.
+
+
+ +

◆ run_import()

+ +
+
+ + + + + + + +
src.__main__.run_import ()
+
+
Begin live import of books.
+
+
+

Variable Documentation

+ +

◆ config

+ +
+
+ + + + +
src.__main__.config = Config(root)
+
+ +
+
+ +

◆ PRG_PATH

+ +
+
+ + + + +
src.__main__.PRG_PATH = Path.cwd().__str__()
+
+ +
+
+ +

◆ root

+ +
+
+ + + + +
src.__main__.root = Path.cwd()
+
+ +
+
+
+ + +
+ + diff --git a/docs/pyShelf/html/d7/df9/namespaceDataHooks.html b/docs/pyShelf/html/d7/df9/namespaceDataHooks.html new file mode 100644 index 0000000..0d6f72f --- /dev/null +++ b/docs/pyShelf/html/d7/df9/namespaceDataHooks.html @@ -0,0 +1,71 @@ + + + + + + + +pyShelf Open Source Ebook Server: DataHooks Namespace Reference + + + + + + +
+
+ + + + + + +
+
pyShelf Open Source Ebook Server 0.8.0 +
+
FOSS E-Book Server, https://pyshelf.com
+
+
+ + + + +
+
+
+ +
DataHooks Namespace Reference
+
+
+ + + +

+Classes

class  BookInterface
+

Detailed Description

+
pyShelf's frontend database hooks.
+ + +
+ + diff --git a/docs/pyShelf/html/d8/d3d/classsrc_1_1backend_1_1tests_1_1library__test_1_1TestCatalogue.html b/docs/pyShelf/html/d8/d3d/classsrc_1_1backend_1_1tests_1_1library__test_1_1TestCatalogue.html new file mode 100644 index 0000000..4ba2525 --- /dev/null +++ b/docs/pyShelf/html/d8/d3d/classsrc_1_1backend_1_1tests_1_1library__test_1_1TestCatalogue.html @@ -0,0 +1,150 @@ + + + + + + + +pyShelf Open Source Ebook Server: src.backend.tests.library_test.TestCatalogue Class Reference + + + + + + +
+
+ + + + + + +
+
pyShelf Open Source Ebook Server 0.8.0 +
+
FOSS E-Book Server, https://pyshelf.com
+
+
+ + + + + +
+
+
+ +
src.backend.tests.library_test.TestCatalogue Class Reference
+
+
+ + + +

+Public Member Functions

 test_filter_books (self)
+ + + +

+Static Public Attributes

 root = os.path.abspath(os.path.curdir)
 config = Test_Config()
+

Detailed Description

+

Member Function Documentation

+ +

◆ test_filter_books()

+ +
+
+ + + + + + + +
src.backend.tests.library_test.TestCatalogue.test_filter_books ( self)
+
+ +
+
+

Member Data Documentation

+ +

◆ config

+ +
+
+ + + + + +
+ + + + +
src.backend.tests.library_test.TestCatalogue.config = Test_Config()
+
+static
+
+ +
+
+ +

◆ root

+ +
+
+ + + + + +
+ + + + +
src.backend.tests.library_test.TestCatalogue.root = os.path.abspath(os.path.curdir)
+
+static
+
+ +
+
+
The documentation for this class was generated from the following file: +
+ + +
+ + diff --git a/docs/pyShelf/html/d8/def/classobjects_1_1JSInterface.html b/docs/pyShelf/html/d8/def/classobjects_1_1JSInterface.html new file mode 100644 index 0000000..b5698df --- /dev/null +++ b/docs/pyShelf/html/d8/def/classobjects_1_1JSInterface.html @@ -0,0 +1,157 @@ + + + + + + + +pyShelf Open Source Ebook Server: objects.JSInterface Class Reference + + + + + + +
+
+ + + + + + +
+
pyShelf Open Source Ebook Server 0.8.0 +
+
FOSS E-Book Server, https://pyshelf.com
+
+
+ + + + + +
+
+
+ +
objects.JSInterface Class Reference
+
+
+ + + + +

+Public Member Functions

 __init__ (self, Config config)
 install (self)
+ + + +

+Public Attributes

Path package_json = Path(config.root, "src/frontend/package.json")
Config config = config
+

Detailed Description

+
A class to interface with the JavaScript side of pyShelf.

Constructor & Destructor Documentation

+ +

◆ __init__()

+ +
+
+ + + + + + + + + + + +
objects.JSInterface.__init__ ( self,
Config config )
+
+
Initialize the JSInterface object.
+
+
+

Member Function Documentation

+ +

◆ install()

+ +
+
+ + + + + + + +
objects.JSInterface.install ( self)
+
+
Install the JavaScript dependencies.
+
+
+

Member Data Documentation

+ +

◆ config

+ +
+
+ + + + +
Config objects.JSInterface.config = config
+
+ +
+
+ +

◆ package_json

+ +
+
+ + + + +
Path objects.JSInterface.package_json = Path(config.root, "src/frontend/package.json")
+
+ +
+
+
The documentation for this class was generated from the following file: +
+ + +
+ + diff --git a/docs/pyShelf/html/d8/dfe/classsrc_1_1backend_1_1lib_1_1config_1_1Config.html b/docs/pyShelf/html/d8/dfe/classsrc_1_1backend_1_1lib_1_1config_1_1Config.html new file mode 100644 index 0000000..63f991c --- /dev/null +++ b/docs/pyShelf/html/d8/dfe/classsrc_1_1backend_1_1lib_1_1config_1_1Config.html @@ -0,0 +1,591 @@ + + + + + + + +pyShelf Open Source Ebook Server: src.backend.lib.config.Config Class Reference + + + + + + +
+
+ + + + + + +
+
pyShelf Open Source Ebook Server 0.8.0 +
+
FOSS E-Book Server, https://pyshelf.com
+
+
+ + + + + +
+
+
+ +
src.backend.lib.config.Config Class Reference
+
+
+
+Inheritance diagram for src.backend.lib.config.Config:
+
+
+ + +src.backend.tests.library_test.Test_Config + +
+ + + + + + +

+Public Member Functions

 __init__ (self, root)
 init_config (self)
 get_logger (self)
 open_file (self)
+ + + + + + + + + + + + + + + + + + + + +

+Public Attributes

 root = root
dict config_structure
 logger = self.get_logger()
 book_path = env.get("BOOKPATH", self._data["BOOKPATH"])
str TITLE = env.get("TITLE", self._data["TITLE"])
 VERSION = env.get("VERSION", self._data["VERSION"])
 book_shelf = env.get("BOOKSHELF", self._data["BOOKSHELF"])
 catalogue_db = env.get("DATABASE", self._data["DATABASE"])
 user = self._data["USER"]
 password = self._data["PASSWORD"]
 db_host = env.get("DB_HOST", self._data["DB_HOST"])
 db_port = env.get("DB_PORT", self._data["DB_PORT"])
list file_array = [self.book_shelf]
bool auto_scan = True
 allowed_hosts
 db_engine = env.get("DB_ENGINE", self._data["DB_ENGINE"])
 db_user = env.get("USER", self._data["USER"])
 db_pass = env.get("PASSWORD", self._data["PASSWORD"])
 build_mode = env.get("BUILD_MODE", self._data["BUILD_MODE"])
+ + + + +

+Protected Attributes

str _fp = "config.json"
 _cp = Path.joinpath(root, self._fp)
 _data = self.init_config()
+

Detailed Description

+
Main System Configuration.
+
+>>> config = Config(root)
+
+Parameters
+----------
+root : File system root of program
+
+Attributes
+----------
+root : str() stores root.
+config_structure : dict() Default Configuration Structure.
+_fp : str() file pointer to main configuration.
+_cp : Path() object of configuration file.
+_data : dict() parsed json of _fp.
+logger : holds logging configuration from get_logger().
+book_path : directory pointer to main books folder.
+TITLE : str() Program title.
+VERSION : str() Program  version.
+TITLE : str() Combines TITLE & VERSION.
+book_shelf : Deprecation TODO: Is this still in use?
+catalogue_db : str() Database Name.
+user : str() Database user name.
+password : str() Database password.
+db_host : str() Database host.
+db_port : int() Database port.
+file_array : list() copy of book_shelf TODO: See book_shelf
+auto_scan: bool() Do we auto scan on launch?
+allowed_hosts : list() Allowed host list.
+db_engine : str() Desired database engine type.
+db_user : str() Database user name. Duplication Warning.
+db_pass : str() Database password. Duplication Warning.
+build_mode : str() Production | Development mode.
+
+Methods
+-------
+get_logger : Setup loguru.
+open_file : Parse configuration file.
+

Constructor & Destructor Documentation

+ +

◆ __init__()

+ +
+
+ + + + + + + + + + + +
src.backend.lib.config.Config.__init__ ( self,
root )
+
+
Initialize main configuration options.
+
+
+

Member Function Documentation

+ +

◆ get_logger()

+ +
+
+ + + + + + + +
src.backend.lib.config.Config.get_logger ( self)
+
+
Instantiate logging system.
+
+
+ +

◆ init_config()

+ +
+
+ + + + + + + +
src.backend.lib.config.Config.init_config ( self)
+
+ +
+
+ +

◆ open_file()

+ +
+
+ + + + + + + +
src.backend.lib.config.Config.open_file ( self)
+
+
Open config.json and reads in configuration options.
+

Reimplemented in src.backend.tests.library_test.Test_Config.

+ +
+
+

Member Data Documentation

+ +

◆ _cp

+ +
+
+ + + + + +
+ + + + +
src.backend.lib.config.Config._cp = Path.joinpath(root, self._fp)
+
+protected
+
+ +
+
+ +

◆ _data

+ +
+
+ + + + + +
+ + + + +
src.backend.lib.config.Config._data = self.init_config()
+
+protected
+
+ +
+
+ +

◆ _fp

+ +
+
+ + + + + +
+ + + + +
src.backend.lib.config.Config._fp = "config.json"
+
+protected
+
+ +
+
+ +

◆ allowed_hosts

+ +
+
+ + + + +
src.backend.lib.config.Config.allowed_hosts
+
+Initial value:
= env.get("ALLOWED_HOSTS",
+
self._data["ALLOWED_HOSTS"])
+
+
+
+ +

◆ auto_scan

+ +
+
+ + + + +
bool src.backend.lib.config.Config.auto_scan = True
+
+ +
+
+ +

◆ book_path

+ +
+
+ + + + +
src.backend.lib.config.Config.book_path = env.get("BOOKPATH", self._data["BOOKPATH"])
+
+ +
+
+ +

◆ book_shelf

+ +
+
+ + + + +
src.backend.lib.config.Config.book_shelf = env.get("BOOKSHELF", self._data["BOOKSHELF"])
+
+ +
+
+ +

◆ build_mode

+ +
+
+ + + + +
src.backend.lib.config.Config.build_mode = env.get("BUILD_MODE", self._data["BUILD_MODE"])
+
+ +
+
+ +

◆ catalogue_db

+ +
+
+ + + + +
src.backend.lib.config.Config.catalogue_db = env.get("DATABASE", self._data["DATABASE"])
+
+ +
+
+ +

◆ config_structure

+ +
+
+ + + + +
src.backend.lib.config.Config.config_structure
+
+Initial value:
= {
+
"TITLE": "pyShelf E-Book Server",
+
"VERSION": "0.7.0",
+
"BOOKPATH": "/mnt/books",
+
"DB_HOST": "localhost",
+
"DB_PORT": "5432",
+
"DB_ENGINE": "sqlite",
+
"DATABASE": "pyshelf",
+
"USER": "pyshelf",
+
"PASSWORD": "pyshelf",
+
"BOOKSHELF": "data/shelf.json",
+
"ALLOWED_HOSTS": [
+
"localhost",
+
"127.0.0.1",
+
"[::1]",
+
"0.0.0.0"
+
],
+
"BUILD_MODE": "development"
+
}
+
+
+
+ +

◆ db_engine

+ +
+
+ + + + +
src.backend.lib.config.Config.db_engine = env.get("DB_ENGINE", self._data["DB_ENGINE"])
+
+ +
+
+ +

◆ db_host

+ +
+
+ + + + +
src.backend.lib.config.Config.db_host = env.get("DB_HOST", self._data["DB_HOST"])
+
+ +
+
+ +

◆ db_pass

+ +
+
+ + + + +
src.backend.lib.config.Config.db_pass = env.get("PASSWORD", self._data["PASSWORD"])
+
+ +
+
+ +

◆ db_port

+ +
+
+ + + + +
src.backend.lib.config.Config.db_port = env.get("DB_PORT", self._data["DB_PORT"])
+
+ +
+
+ +

◆ db_user

+ +
+
+ + + + +
src.backend.lib.config.Config.db_user = env.get("USER", self._data["USER"])
+
+ +
+
+ +

◆ file_array

+ +
+
+ + + + +
list src.backend.lib.config.Config.file_array = [self.book_shelf]
+
+ +
+
+ +

◆ logger

+ +
+
+ + + + +
src.backend.lib.config.Config.logger = self.get_logger()
+
+ +
+
+ +

◆ password

+ +
+
+ + + + +
src.backend.lib.config.Config.password = self._data["PASSWORD"]
+
+ +
+
+ +

◆ root

+ +
+
+ + + + +
src.backend.lib.config.Config.root = root
+
+ +
+
+ +

◆ TITLE

+ +
+
+ + + + +
str src.backend.lib.config.Config.TITLE = env.get("TITLE", self._data["TITLE"])
+
+ +
+
+ +

◆ user

+ +
+
+ + + + +
src.backend.lib.config.Config.user = self._data["USER"]
+
+ +
+
+ +

◆ VERSION

+ +
+
+ + + + +
src.backend.lib.config.Config.VERSION = env.get("VERSION", self._data["VERSION"])
+
+ +
+
+
The documentation for this class was generated from the following file: +
+ + +
+ + diff --git a/docs/pyShelf/html/d8/dfe/classsrc_1_1backend_1_1lib_1_1config_1_1Config.png b/docs/pyShelf/html/d8/dfe/classsrc_1_1backend_1_1lib_1_1config_1_1Config.png new file mode 100644 index 0000000..fa87dc3 Binary files /dev/null and b/docs/pyShelf/html/d8/dfe/classsrc_1_1backend_1_1lib_1_1config_1_1Config.png differ diff --git a/docs/pyShelf/html/d9/d0e/classsrc_1_1backend_1_1lib_1_1models_1_1User-members.html b/docs/pyShelf/html/d9/d0e/classsrc_1_1backend_1_1lib_1_1models_1_1User-members.html new file mode 100644 index 0000000..1f9a8f7 --- /dev/null +++ b/docs/pyShelf/html/d9/d0e/classsrc_1_1backend_1_1lib_1_1models_1_1User-members.html @@ -0,0 +1,81 @@ + + + + + + + +pyShelf Open Source Ebook Server: Member List + + + + + + +
+
+ + + + + + +
+
pyShelf Open Source Ebook Server 0.8.0 +
+
FOSS E-Book Server, https://pyshelf.com
+
+
+ + + + + +
+
+
+
src.backend.lib.models.User Member List
+
+
+ +

This is the complete list of members for src.backend.lib.models.User, including all inherited members.

+ + + + + + + + + + +
date_joined (defined in src.backend.lib.models.User)src.backend.lib.models.Userstatic
email (defined in src.backend.lib.models.User)src.backend.lib.models.Userstatic
id (defined in src.backend.lib.models.User)src.backend.lib.models.Userstatic
is_active (defined in src.backend.lib.models.User)src.backend.lib.models.Userstatic
is_admin (defined in src.backend.lib.models.User)src.backend.lib.models.Userstatic
is_superuser (defined in src.backend.lib.models.User)src.backend.lib.models.Userstatic
last_login (defined in src.backend.lib.models.User)src.backend.lib.models.Userstatic
password (defined in src.backend.lib.models.User)src.backend.lib.models.Userstatic
username (defined in src.backend.lib.models.User)src.backend.lib.models.Userstatic
+ + +
+ + diff --git a/docs/pyShelf/html/d9/d71/classDataHooks_1_1BookInterface.html b/docs/pyShelf/html/d9/d71/classDataHooks_1_1BookInterface.html new file mode 100644 index 0000000..a88160d --- /dev/null +++ b/docs/pyShelf/html/d9/d71/classDataHooks_1_1BookInterface.html @@ -0,0 +1,111 @@ + + + + + + + +pyShelf Open Source Ebook Server: DataHooks.BookInterface Class Reference + + + + + + +
+
+ + + + + + +
+
pyShelf Open Source Ebook Server 0.8.0 +
+
FOSS E-Book Server, https://pyshelf.com
+
+
+ + + + + +
+
+
+ +
DataHooks.BookInterface Class Reference
+
+
+ + + + +

+Public Attributes

 config = config
 db = Storage(self.config)
+

Detailed Description

+
Access point for book database.

Member Data Documentation

+ +

◆ config

+ +
+
+ + + + +
DataHooks.BookInterface.config = config
+
+ +
+
+ +

◆ db

+ +
+
+ + + + +
DataHooks.BookInterface.db = Storage(self.config)
+
+ +
+
+
The documentation for this class was generated from the following file: +
+ + +
+ + diff --git a/docs/pyShelf/html/d9/d8b/classsrc_1_1backend_1_1lib_1_1overide_1_1ACatalogue-members.html b/docs/pyShelf/html/d9/d8b/classsrc_1_1backend_1_1lib_1_1overide_1_1ACatalogue-members.html new file mode 100644 index 0000000..1fb8636 --- /dev/null +++ b/docs/pyShelf/html/d9/d8b/classsrc_1_1backend_1_1lib_1_1overide_1_1ACatalogue-members.html @@ -0,0 +1,98 @@ + + + + + + + +pyShelf Open Source Ebook Server: Member List + + + + + + +
+
+ + + + + + +
+
pyShelf Open Source Ebook Server 0.8.0 +
+
FOSS E-Book Server, https://pyshelf.com
+
+
+ + + + + +
+
+
+
src.backend.lib.overide.ACatalogue Member List
+
+
+ +

This is the complete list of members for src.backend.lib.overide.ACatalogue, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
__init__(self) (defined in src.backend.lib.overide.ACatalogue)src.backend.lib.overide.ACatalogue
book_folder (defined in src.backend.lib.library.Catalogue)src.backend.lib.library.Catalogue
books (defined in src.backend.lib.library.Catalogue)src.backend.lib.library.Catalogue
compare_shelf_current(self)src.backend.lib.library.Catalogue
config (defined in src.backend.lib.library.Catalogue)src.backend.lib.library.Catalogue
cover_regx (defined in src.backend.lib.library.Catalogue)src.backend.lib.library.Catalogue
db_pointer (defined in src.backend.lib.library.Catalogue)src.backend.lib.library.Catalogue
extract_content(self, book_zip, book)src.backend.lib.library.Catalogue
extract_cover_html(self, book_zip, book)src.backend.lib.library.Catalogue
extract_cover_image(self, book_zip, book)src.backend.lib.library.Catalogue
extract_metadata_epub(self, book)src.backend.lib.library.Catalogue
extract_metadata_mobi(self, book) (defined in src.backend.lib.library.Catalogue)src.backend.lib.library.Catalogue
extract_metadata_pdf(self, book)src.backend.lib.library.Catalogue
file_list (defined in src.backend.lib.library.Catalogue)src.backend.lib.library.Catalogue
filter_books(self)src.backend.lib.library.Catalogue
html_regx (defined in src.backend.lib.library.Catalogue)src.backend.lib.library.Catalogue
import_books(self, **kwargs)src.backend.lib.overide.ACatalogue
opf_regx (defined in src.backend.lib.library.Catalogue)src.backend.lib.library.Catalogue
process_by_filetype(self, book)src.backend.lib.library.Catalogue
process_epub(book)src.backend.lib.library.Cataloguestatic
root_dir (defined in src.backend.lib.library.Catalogue)src.backend.lib.library.Catalogue
scan_folder(self, _path=None)src.backend.lib.overide.ACatalogue
stripTags(source) (defined in src.backend.lib.library.Catalogue)src.backend.lib.library.Cataloguestatic
title_sanitization_dirs_regx (defined in src.backend.lib.library.Catalogue)src.backend.lib.library.Catalogue
title_sanitization_lvl2_regx (defined in src.backend.lib.library.Catalogue)src.backend.lib.library.Catalogue
title_sanitization_regx (defined in src.backend.lib.library.Catalogue)src.backend.lib.library.Catalogue
+ + +
+ + diff --git a/docs/pyShelf/html/da/d3c/classsrc_1_1backend_1_1lib_1_1pyShelf_1_1InitFiles.html b/docs/pyShelf/html/da/d3c/classsrc_1_1backend_1_1lib_1_1pyShelf_1_1InitFiles.html new file mode 100644 index 0000000..629b8e4 --- /dev/null +++ b/docs/pyShelf/html/da/d3c/classsrc_1_1backend_1_1lib_1_1pyShelf_1_1InitFiles.html @@ -0,0 +1,127 @@ + + + + + + + +pyShelf Open Source Ebook Server: src.backend.lib.pyShelf.InitFiles Class Reference + + + + + + +
+
+ + + + + + +
+
pyShelf Open Source Ebook Server 0.8.0 +
+
FOSS E-Book Server, https://pyshelf.com
+
+
+ + + + + +
+
+
+ +
src.backend.lib.pyShelf.InitFiles Class Reference
+
+
+ + + + +

+Public Member Functions

 __init__ (self, file_array)
 CreateFile (self, _pointer)
+

Detailed Description

+
First run file creation operations

Constructor & Destructor Documentation

+ +

◆ __init__()

+ +
+
+ + + + + + + + + + + +
src.backend.lib.pyShelf.InitFiles.__init__ ( self,
file_array )
+
+ +
+
+

Member Function Documentation

+ +

◆ CreateFile()

+ +
+
+ + + + + + + + + + + +
src.backend.lib.pyShelf.InitFiles.CreateFile ( self,
_pointer )
+
+
Checks if file exists and creates it if not
+
+
+
+
The documentation for this class was generated from the following file: +
+ + +
+ + diff --git a/docs/pyShelf/html/da/dc1/classsrc_1_1backend_1_1lib_1_1models_1_1Book-members.html b/docs/pyShelf/html/da/dc1/classsrc_1_1backend_1_1lib_1_1models_1_1Book-members.html new file mode 100644 index 0000000..3f03664 --- /dev/null +++ b/docs/pyShelf/html/da/dc1/classsrc_1_1backend_1_1lib_1_1models_1_1Book-members.html @@ -0,0 +1,87 @@ + + + + + + + +pyShelf Open Source Ebook Server: Member List + + + + + + +
+
+ + + + + + +
+
pyShelf Open Source Ebook Server 0.8.0 +
+
FOSS E-Book Server, https://pyshelf.com
+
+
+ + + + + +
+
+
+
src.backend.lib.models.Book Member List
+
+ + + +
+ + diff --git a/docs/pyShelf/html/db/d9a/classsrc_1_1backend_1_1lib_1_1storage_1_1Storage-members.html b/docs/pyShelf/html/db/d9a/classsrc_1_1backend_1_1lib_1_1storage_1_1Storage-members.html new file mode 100644 index 0000000..48e6b1c --- /dev/null +++ b/docs/pyShelf/html/db/d9a/classsrc_1_1backend_1_1lib_1_1storage_1_1Storage-members.html @@ -0,0 +1,92 @@ + + + + + + + +pyShelf Open Source Ebook Server: Member List + + + + + + +
+
+ + + + + + +
+
pyShelf Open Source Ebook Server 0.8.0 +
+
FOSS E-Book Server, https://pyshelf.com
+
+
+ + + + + +
+
+
+
src.backend.lib.storage.Storage Member List
+
+
+ +

This is the complete list of members for src.backend.lib.storage.Storage, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + +
__init__(self, config)src.backend.lib.storage.Storage
book_paths_list(self)src.backend.lib.storage.Storage
config (defined in src.backend.lib.storage.Storage)src.backend.lib.storage.Storage
create_tables(self)src.backend.lib.storage.Storage
db_host (defined in src.backend.lib.storage.Storage)src.backend.lib.storage.Storage
db_port (defined in src.backend.lib.storage.Storage)src.backend.lib.storage.Storage
engine (defined in src.backend.lib.storage.Storage)src.backend.lib.storage.Storage
fuzzy_search_books(self, str query, int limit=30) (defined in src.backend.lib.storage.Storage)src.backend.lib.storage.Storage
get_book(self, id)src.backend.lib.storage.Storage
get_books(self, collection=None, skip=None, limit=None)src.backend.lib.storage.Storage
get_collection(self, name)src.backend.lib.storage.Storage
get_collections(self)src.backend.lib.storage.Storage
get_connection_string(self)src.backend.lib.storage.Storage
insert_book(self, book)src.backend.lib.storage.Storage
make_collections(self)src.backend.lib.storage.Storage
parse_advanced_query(self, str query)src.backend.lib.storage.Storage
parse_collections_from_path(self, dict() book)src.backend.lib.storage.Storage
password (defined in src.backend.lib.storage.Storage)src.backend.lib.storage.Storage
sql (defined in src.backend.lib.storage.Storage)src.backend.lib.storage.Storage
user (defined in src.backend.lib.storage.Storage)src.backend.lib.storage.Storage
+ + +
+ + diff --git a/docs/pyShelf/html/db/dd5/namespaceFastAPIServer.html b/docs/pyShelf/html/db/dd5/namespaceFastAPIServer.html new file mode 100644 index 0000000..87a5ca1 --- /dev/null +++ b/docs/pyShelf/html/db/dd5/namespaceFastAPIServer.html @@ -0,0 +1,348 @@ + + + + + + + +pyShelf Open Source Ebook Server: FastAPIServer Namespace Reference + + + + + + +
+
+ + + + + + +
+
pyShelf Open Source Ebook Server 0.8.0 +
+
FOSS E-Book Server, https://pyshelf.com
+
+
+ + + + +
+
+
+ +
FastAPIServer Namespace Reference
+
+
+ + + +

+Classes

class  FastAPIServer
+ + + + + + + + +

+Functions

str base64decode (string)
str summarize (string)
str convertDateTime (datetime timestamp)
dumps books_tojson (obj)
dumps book_tojson (book)
dumps tojson (obj)
dumps collections_tojson (collection)
+ + + + + + + + + + +

+Variables

 app = FastAPI()
 STATIC_DIR
 TEMPLATES_DIR
 templates = Jinja2Templates(directory=str(TEMPLATES_DIR))
list origins
 allow_origins
 allow_credentials
 allow_methods
 allow_headers
+

Detailed Description

+
pyShelf's main frontend library.

Function Documentation

+ +

◆ base64decode()

+ +
+
+ + + + + + + +
str FastAPIServer.base64decode ( string)
+
+
Decode a base64 string.
+
+
+ +

◆ book_tojson()

+ +
+
+ + + + + + + +
dumps FastAPIServer.book_tojson ( book)
+
+
Convert a book object to a json.
+
+
+ +

◆ books_tojson()

+ +
+
+ + + + + + + +
dumps FastAPIServer.books_tojson ( obj)
+
+
Convert an object to a dictionary.
+
+
+ +

◆ collections_tojson()

+ +
+
+ + + + + + + +
dumps FastAPIServer.collections_tojson ( collection)
+
+
Convert a collections object to json.
+
+
+ +

◆ convertDateTime()

+ +
+
+ + + + + + + +
str FastAPIServer.convertDateTime (datetime timestamp)
+
+
Convert a datetime object to a string.
+
+
+ +

◆ summarize()

+ +
+
+ + + + + + + +
str FastAPIServer.summarize ( string)
+
+
Summarize a string.
+
+
+ +

◆ tojson()

+ +
+
+ + + + + + + +
dumps FastAPIServer.tojson ( obj)
+
+ +
+
+

Variable Documentation

+ +

◆ allow_credentials

+ +
+
+ + + + +
FastAPIServer.allow_credentials
+
+ +
+
+ +

◆ allow_headers

+ +
+
+ + + + +
FastAPIServer.allow_headers
+
+ +
+
+ +

◆ allow_methods

+ +
+
+ + + + +
FastAPIServer.allow_methods
+
+ +
+
+ +

◆ allow_origins

+ +
+
+ + + + +
FastAPIServer.allow_origins
+
+ +
+
+ +

◆ app

+ +
+
+ + + + +
FastAPIServer.app = FastAPI()
+
+ +
+
+ +

◆ origins

+ +
+
+ + + + +
list FastAPIServer.origins
+
+Initial value:
1= [
+
2 "http://localhost",
+
3 "http://localhost:8081",
+
4 "http://localhost:8080",
+
5 "*"
+
6]
+
+
+
+ +

◆ STATIC_DIR

+ +
+
+ + + + +
FastAPIServer.STATIC_DIR
+
+ +
+
+ +

◆ templates

+ +
+
+ + + + +
FastAPIServer.templates = Jinja2Templates(directory=str(TEMPLATES_DIR))
+
+ +
+
+ +

◆ TEMPLATES_DIR

+ +
+
+ + + + +
FastAPIServer.TEMPLATES_DIR
+
+ +
+
+
+ + +
+ + diff --git a/docs/pyShelf/html/db/dda/classsrc_1_1backend_1_1tests_1_1library__test_1_1Test__Catalogue.html b/docs/pyShelf/html/db/dda/classsrc_1_1backend_1_1tests_1_1library__test_1_1Test__Catalogue.html new file mode 100644 index 0000000..6b2f526 --- /dev/null +++ b/docs/pyShelf/html/db/dda/classsrc_1_1backend_1_1tests_1_1library__test_1_1Test__Catalogue.html @@ -0,0 +1,825 @@ + + + + + + + +pyShelf Open Source Ebook Server: src.backend.tests.library_test.Test_Catalogue Class Reference + + + + + + +
+
+ + + + + + +
+
pyShelf Open Source Ebook Server 0.8.0 +
+
FOSS E-Book Server, https://pyshelf.com
+
+
+ + + + + +
+
+
+ +
src.backend.tests.library_test.Test_Catalogue Class Reference
+
+
+
+Inheritance diagram for src.backend.tests.library_test.Test_Catalogue:
+
+
+ + +src.backend.lib.library.Catalogue + +
+ + + + + + + + + + + + + + +

+Public Member Functions

 __init__ (self)
 filter_books (self)
 scan_folder (self, _path=None)
 process_by_filetype (self, book)
 extract_metadata_epub (self, book)
 extract_metadata_pdf (self, book)
 extract_metadata_mobi (self, book)
 extract_content (self, book_zip, book)
 extract_cover_html (self, book_zip, book)
 extract_cover_image (self, book_zip, book)
 compare_shelf_current (self)
 import_books (self, list=None, **kwargs)
+ + + +

+Static Public Member Functions

 process_epub (book)
 stripTags (source)
+ + + + + + + + + + + + + + +

+Public Attributes

str book_shelf = "app/" + self.book_shelf
list file_list = []
 opf_regx = re.compile(r"\.opf")
 cover_regx = re.compile(r"\.jpg|\.jpeg|\.png|\.bmp|\.gif")
 html_regx = re.compile(r"\.html")
 title_sanitization_regx = re.compile(r"^(Book )+[0-9]*")
 title_sanitization_lvl2_regx
 title_sanitization_dirs_regx = re.compile(r"/")
 root_dir = config.root
 book_folder = config.book_path
 books = None
 db_pointer = config.catalogue_db
 config = config
+

Detailed Description

+

Constructor & Destructor Documentation

+ +

◆ __init__()

+ +
+
+ + + + + + + +
src.backend.tests.library_test.Test_Catalogue.__init__ ( self)
+
+ +
+
+

Member Function Documentation

+ +

◆ compare_shelf_current()

+ +
+
+ + + + + +
+ + + + + + + +
src.backend.lib.library.Catalogue.compare_shelf_current ( self)
+
+inherited
+
+
Calls storage system, gets list of books stored and compares against files on disk
+
+
+
+ +

◆ extract_content()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + +
src.backend.lib.library.Catalogue.extract_content ( self,
book_zip,
book )
+
+inherited
+
+
Opens epub as zip file filters then stores as list any files matching opf_regx
+
+
+
+ +

◆ extract_cover_html()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + +
src.backend.lib.library.Catalogue.extract_cover_html ( self,
book_zip,
book )
+
+inherited
+
+
Opens epub as zip file filters then stores as list any files matching html_regx
+
+
+
+ +

◆ extract_cover_image()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + +
src.backend.lib.library.Catalogue.extract_cover_image ( self,
book_zip,
book )
+
+inherited
+
+
Opens epub as zip file filters then stores as list any files matching cover_regx
+
+
+
+ +

◆ extract_metadata_epub()

+ +
+
+ + + + + +
+ + + + + + + + + + + +
src.backend.lib.library.Catalogue.extract_metadata_epub ( self,
book )
+
+inherited
+
+
Extract metadata from epub file
+
+:param book: Dictionary of epub file contents
+:returns: Dictionary of book metadata
+
+
+
+ +

◆ extract_metadata_mobi()

+ +
+
+ + + + + +
+ + + + + + + + + + + +
src.backend.lib.library.Catalogue.extract_metadata_mobi ( self,
book )
+
+inherited
+
+ +
+
+ +

◆ extract_metadata_pdf()

+ +
+
+ + + + + +
+ + + + + + + + + + + +
src.backend.lib.library.Catalogue.extract_metadata_pdf ( self,
book )
+
+inherited
+
+
Return extracted metadata
+:NOTES: Retrieval of data has been problematic, some pdf's providing
+reliable titles that corespond with the actual, and others being
+nonsense.
+
+
+
+ +

◆ filter_books()

+ +
+
+ + + + + + + +
src.backend.tests.library_test.Test_Catalogue.filter_books ( self)
+
+
Calls scan_folder and filters out book files.
+
+:returns self._book_list_expanded: json string containing
+all book metadata
+
+

Reimplemented from src.backend.lib.library.Catalogue.

+ +
+
+ +

◆ import_books()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + +
src.backend.lib.library.Catalogue.import_books ( self,
list = None,
** kwargs )
+
+inherited
+
+
Main entry point for import operations.
+Gets a list of new files via compare_shelf_current.
+Iterates over list and inserts new books into database.
+
+

Reimplemented in src.backend.lib.overide.ACatalogue.

+ +
+
+ +

◆ process_by_filetype()

+ +
+
+ + + + + +
+ + + + + + + + + + + +
src.backend.lib.library.Catalogue.process_by_filetype ( self,
book )
+
+inherited
+
+
Determine books filetype and process.
+
+
+ +

◆ process_epub()

+ +
+
+ + + + + +
+ + + + + + + +
src.backend.lib.library.Catalogue.process_epub ( book)
+
+staticinherited
+
+
Return dictionary of epub file contents
+
+
+ +

◆ scan_folder()

+ +
+
+ + + + + +
+ + + + + + + + + + + +
src.backend.lib.library.Catalogue.scan_folder ( self,
_path = None )
+
+inherited
+
+
Scan folder by _path, allows recurisive scanning
+
+:param _path: Path to scan
+
+

Reimplemented in src.backend.lib.overide.ACatalogue.

+ +
+
+ +

◆ stripTags()

+ +
+
+ + + + + +
+ + + + + + + +
src.backend.lib.library.Catalogue.stripTags ( source)
+
+staticinherited
+
+ +
+
+

Member Data Documentation

+ +

◆ book_folder

+ +
+
+ + + + + +
+ + + + +
src.backend.lib.library.Catalogue.book_folder = config.book_path
+
+inherited
+
+ +
+
+ +

◆ book_shelf

+ +
+
+ + + + +
str src.backend.tests.library_test.Test_Catalogue.book_shelf = "app/" + self.book_shelf
+
+ +
+
+ +

◆ books

+ +
+
+ + + + + +
+ + + + +
src.backend.lib.library.Catalogue.books = None
+
+inherited
+
+ +
+
+ +

◆ config

+ +
+
+ + + + + +
+ + + + +
src.backend.lib.library.Catalogue.config = config
+
+inherited
+
+ +
+
+ +

◆ cover_regx

+ +
+
+ + + + + +
+ + + + +
src.backend.lib.library.Catalogue.cover_regx = re.compile(r"\.jpg|\.jpeg|\.png|\.bmp|\.gif")
+
+inherited
+
+ +
+
+ +

◆ db_pointer

+ +
+
+ + + + + +
+ + + + +
src.backend.lib.library.Catalogue.db_pointer = config.catalogue_db
+
+inherited
+
+ +
+
+ +

◆ file_list

+ +
+
+ + + + + +
+ + + + +
list src.backend.lib.library.Catalogue.file_list = []
+
+inherited
+
+ +
+
+ +

◆ html_regx

+ +
+
+ + + + + +
+ + + + +
src.backend.lib.library.Catalogue.html_regx = re.compile(r"\.html")
+
+inherited
+
+ +
+
+ +

◆ opf_regx

+ +
+
+ + + + + +
+ + + + +
src.backend.lib.library.Catalogue.opf_regx = re.compile(r"\.opf")
+
+inherited
+
+ +
+
+ +

◆ root_dir

+ +
+
+ + + + + +
+ + + + +
src.backend.lib.library.Catalogue.root_dir = config.root
+
+inherited
+
+ +
+
+ +

◆ title_sanitization_dirs_regx

+ +
+
+ + + + + +
+ + + + +
src.backend.lib.library.Catalogue.title_sanitization_dirs_regx = re.compile(r"/")
+
+inherited
+
+ +
+
+ +

◆ title_sanitization_lvl2_regx

+ +
+
+ + + + + +
+ + + + +
src.backend.lib.library.Catalogue.title_sanitization_lvl2_regx
+
+inherited
+
+Initial value:
= re.compile(
+
r"^(Book )+[0-9]*\W+(-)")
+
+
+
+ +

◆ title_sanitization_regx

+ +
+
+ + + + + +
+ + + + +
src.backend.lib.library.Catalogue.title_sanitization_regx = re.compile(r"^(Book )+[0-9]*")
+
+inherited
+
+ +
+
+
The documentation for this class was generated from the following file: +
+ + +
+ + diff --git a/docs/pyShelf/html/db/dda/classsrc_1_1backend_1_1tests_1_1library__test_1_1Test__Catalogue.png b/docs/pyShelf/html/db/dda/classsrc_1_1backend_1_1tests_1_1library__test_1_1Test__Catalogue.png new file mode 100644 index 0000000..fffbc88 Binary files /dev/null and b/docs/pyShelf/html/db/dda/classsrc_1_1backend_1_1tests_1_1library__test_1_1Test__Catalogue.png differ diff --git a/docs/pyShelf/html/dc/d3e/classsrc_1_1backend_1_1tests_1_1library__test_1_1Test__Catalogue-members.html b/docs/pyShelf/html/dc/d3e/classsrc_1_1backend_1_1tests_1_1library__test_1_1Test__Catalogue-members.html new file mode 100644 index 0000000..09e218d --- /dev/null +++ b/docs/pyShelf/html/dc/d3e/classsrc_1_1backend_1_1tests_1_1library__test_1_1Test__Catalogue-members.html @@ -0,0 +1,99 @@ + + + + + + + +pyShelf Open Source Ebook Server: Member List + + + + + + +
+
+ + + + + + +
+
pyShelf Open Source Ebook Server 0.8.0 +
+
FOSS E-Book Server, https://pyshelf.com
+
+
+ + + + + +
+
+
+
src.backend.tests.library_test.Test_Catalogue Member List
+
+
+ +

This is the complete list of members for src.backend.tests.library_test.Test_Catalogue, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + +
__init__(self) (defined in src.backend.tests.library_test.Test_Catalogue)src.backend.tests.library_test.Test_Catalogue
book_folder (defined in src.backend.lib.library.Catalogue)src.backend.lib.library.Catalogue
book_shelf (defined in src.backend.tests.library_test.Test_Catalogue)src.backend.tests.library_test.Test_Catalogue
books (defined in src.backend.lib.library.Catalogue)src.backend.lib.library.Catalogue
compare_shelf_current(self)src.backend.lib.library.Catalogue
config (defined in src.backend.lib.library.Catalogue)src.backend.lib.library.Catalogue
cover_regx (defined in src.backend.lib.library.Catalogue)src.backend.lib.library.Catalogue
db_pointer (defined in src.backend.lib.library.Catalogue)src.backend.lib.library.Catalogue
extract_content(self, book_zip, book)src.backend.lib.library.Catalogue
extract_cover_html(self, book_zip, book)src.backend.lib.library.Catalogue
extract_cover_image(self, book_zip, book)src.backend.lib.library.Catalogue
extract_metadata_epub(self, book)src.backend.lib.library.Catalogue
extract_metadata_mobi(self, book) (defined in src.backend.lib.library.Catalogue)src.backend.lib.library.Catalogue
extract_metadata_pdf(self, book)src.backend.lib.library.Catalogue
file_list (defined in src.backend.lib.library.Catalogue)src.backend.lib.library.Catalogue
filter_books(self)src.backend.tests.library_test.Test_Catalogue
html_regx (defined in src.backend.lib.library.Catalogue)src.backend.lib.library.Catalogue
import_books(self, list=None, **kwargs)src.backend.lib.library.Catalogue
opf_regx (defined in src.backend.lib.library.Catalogue)src.backend.lib.library.Catalogue
process_by_filetype(self, book)src.backend.lib.library.Catalogue
process_epub(book)src.backend.lib.library.Cataloguestatic
root_dir (defined in src.backend.lib.library.Catalogue)src.backend.lib.library.Catalogue
scan_folder(self, _path=None)src.backend.lib.library.Catalogue
stripTags(source) (defined in src.backend.lib.library.Catalogue)src.backend.lib.library.Cataloguestatic
title_sanitization_dirs_regx (defined in src.backend.lib.library.Catalogue)src.backend.lib.library.Catalogue
title_sanitization_lvl2_regx (defined in src.backend.lib.library.Catalogue)src.backend.lib.library.Catalogue
title_sanitization_regx (defined in src.backend.lib.library.Catalogue)src.backend.lib.library.Catalogue
+ + +
+ + diff --git a/docs/pyShelf/html/dc/ded/classsrc_1_1backend_1_1lib_1_1overide_1_1ACatalogue.html b/docs/pyShelf/html/dc/ded/classsrc_1_1backend_1_1lib_1_1overide_1_1ACatalogue.html new file mode 100644 index 0000000..12f688a --- /dev/null +++ b/docs/pyShelf/html/dc/ded/classsrc_1_1backend_1_1lib_1_1overide_1_1ACatalogue.html @@ -0,0 +1,795 @@ + + + + + + + +pyShelf Open Source Ebook Server: src.backend.lib.overide.ACatalogue Class Reference + + + + + + +
+
+ + + + + + +
+
pyShelf Open Source Ebook Server 0.8.0 +
+
FOSS E-Book Server, https://pyshelf.com
+
+
+ + + + + +
+
+
+ +
src.backend.lib.overide.ACatalogue Class Reference
+
+
+
+Inheritance diagram for src.backend.lib.overide.ACatalogue:
+
+
+ + +src.backend.lib.library.Catalogue + +
+ + + + + + + + + + + + + + +

+Public Member Functions

 __init__ (self)
 scan_folder (self, _path=None)
 import_books (self, **kwargs)
 filter_books (self)
 process_by_filetype (self, book)
 extract_metadata_epub (self, book)
 extract_metadata_pdf (self, book)
 extract_metadata_mobi (self, book)
 extract_content (self, book_zip, book)
 extract_cover_html (self, book_zip, book)
 extract_cover_image (self, book_zip, book)
 compare_shelf_current (self)
+ + + +

+Static Public Member Functions

 process_epub (book)
 stripTags (source)
+ + + + + + + + + + + + + +

+Public Attributes

list file_list = []
 opf_regx = re.compile(r"\.opf")
 cover_regx = re.compile(r"\.jpg|\.jpeg|\.png|\.bmp|\.gif")
 html_regx = re.compile(r"\.html")
 title_sanitization_regx = re.compile(r"^(Book )+[0-9]*")
 title_sanitization_lvl2_regx
 title_sanitization_dirs_regx = re.compile(r"/")
 root_dir = config.root
 book_folder = config.book_path
 books = None
 db_pointer = config.catalogue_db
 config = config
+

Detailed Description

+
Aynchronous overide of library.Catalogue,
+: TODO : Complete or discard this overide
+

Constructor & Destructor Documentation

+ +

◆ __init__()

+ +
+
+ + + + + + + +
src.backend.lib.overide.ACatalogue.__init__ ( self)
+
+ +
+
+

Member Function Documentation

+ +

◆ compare_shelf_current()

+ +
+
+ + + + + +
+ + + + + + + +
src.backend.lib.library.Catalogue.compare_shelf_current ( self)
+
+inherited
+
+
Calls storage system, gets list of books stored and compares against files on disk
+
+
+
+ +

◆ extract_content()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + +
src.backend.lib.library.Catalogue.extract_content ( self,
book_zip,
book )
+
+inherited
+
+
Opens epub as zip file filters then stores as list any files matching opf_regx
+
+
+
+ +

◆ extract_cover_html()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + +
src.backend.lib.library.Catalogue.extract_cover_html ( self,
book_zip,
book )
+
+inherited
+
+
Opens epub as zip file filters then stores as list any files matching html_regx
+
+
+
+ +

◆ extract_cover_image()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + +
src.backend.lib.library.Catalogue.extract_cover_image ( self,
book_zip,
book )
+
+inherited
+
+
Opens epub as zip file filters then stores as list any files matching cover_regx
+
+
+
+ +

◆ extract_metadata_epub()

+ +
+
+ + + + + +
+ + + + + + + + + + + +
src.backend.lib.library.Catalogue.extract_metadata_epub ( self,
book )
+
+inherited
+
+
Extract metadata from epub file
+
+:param book: Dictionary of epub file contents
+:returns: Dictionary of book metadata
+
+
+
+ +

◆ extract_metadata_mobi()

+ +
+
+ + + + + +
+ + + + + + + + + + + +
src.backend.lib.library.Catalogue.extract_metadata_mobi ( self,
book )
+
+inherited
+
+ +
+
+ +

◆ extract_metadata_pdf()

+ +
+
+ + + + + +
+ + + + + + + + + + + +
src.backend.lib.library.Catalogue.extract_metadata_pdf ( self,
book )
+
+inherited
+
+
Return extracted metadata
+:NOTES: Retrieval of data has been problematic, some pdf's providing
+reliable titles that corespond with the actual, and others being
+nonsense.
+
+
+
+ +

◆ filter_books()

+ +
+
+ + + + + +
+ + + + + + + +
src.backend.lib.library.Catalogue.filter_books ( self)
+
+inherited
+
+
Calls scan_folder and filters out book files.
+
+:returns self._book_list_expanded: json string containing
+all book metadata
+
+

Reimplemented in src.backend.tests.library_test.Test_Catalogue.

+ +
+
+ +

◆ import_books()

+ +
+
+ + + + + + + + + + + +
src.backend.lib.overide.ACatalogue.import_books ( self,
** kwargs )
+
+
Async overide of import_books
+
+

Reimplemented from src.backend.lib.library.Catalogue.

+ +
+
+ +

◆ process_by_filetype()

+ +
+
+ + + + + +
+ + + + + + + + + + + +
src.backend.lib.library.Catalogue.process_by_filetype ( self,
book )
+
+inherited
+
+
Determine books filetype and process.
+
+
+ +

◆ process_epub()

+ +
+
+ + + + + +
+ + + + + + + +
src.backend.lib.library.Catalogue.process_epub ( book)
+
+staticinherited
+
+
Return dictionary of epub file contents
+
+
+ +

◆ scan_folder()

+ +
+
+ + + + + + + + + + + +
src.backend.lib.overide.ACatalogue.scan_folder ( self,
_path = None )
+
+
Scan folder by _path, allows recurisive scanning
+
+

Reimplemented from src.backend.lib.library.Catalogue.

+ +
+
+ +

◆ stripTags()

+ +
+
+ + + + + +
+ + + + + + + +
src.backend.lib.library.Catalogue.stripTags ( source)
+
+staticinherited
+
+ +
+
+

Member Data Documentation

+ +

◆ book_folder

+ +
+
+ + + + + +
+ + + + +
src.backend.lib.library.Catalogue.book_folder = config.book_path
+
+inherited
+
+ +
+
+ +

◆ books

+ +
+
+ + + + + +
+ + + + +
src.backend.lib.library.Catalogue.books = None
+
+inherited
+
+ +
+
+ +

◆ config

+ +
+
+ + + + + +
+ + + + +
src.backend.lib.library.Catalogue.config = config
+
+inherited
+
+ +
+
+ +

◆ cover_regx

+ +
+
+ + + + + +
+ + + + +
src.backend.lib.library.Catalogue.cover_regx = re.compile(r"\.jpg|\.jpeg|\.png|\.bmp|\.gif")
+
+inherited
+
+ +
+
+ +

◆ db_pointer

+ +
+
+ + + + + +
+ + + + +
src.backend.lib.library.Catalogue.db_pointer = config.catalogue_db
+
+inherited
+
+ +
+
+ +

◆ file_list

+ +
+
+ + + + + +
+ + + + +
list src.backend.lib.library.Catalogue.file_list = []
+
+inherited
+
+ +
+
+ +

◆ html_regx

+ +
+
+ + + + + +
+ + + + +
src.backend.lib.library.Catalogue.html_regx = re.compile(r"\.html")
+
+inherited
+
+ +
+
+ +

◆ opf_regx

+ +
+
+ + + + + +
+ + + + +
src.backend.lib.library.Catalogue.opf_regx = re.compile(r"\.opf")
+
+inherited
+
+ +
+
+ +

◆ root_dir

+ +
+
+ + + + + +
+ + + + +
src.backend.lib.library.Catalogue.root_dir = config.root
+
+inherited
+
+ +
+
+ +

◆ title_sanitization_dirs_regx

+ +
+
+ + + + + +
+ + + + +
src.backend.lib.library.Catalogue.title_sanitization_dirs_regx = re.compile(r"/")
+
+inherited
+
+ +
+
+ +

◆ title_sanitization_lvl2_regx

+ +
+
+ + + + + +
+ + + + +
src.backend.lib.library.Catalogue.title_sanitization_lvl2_regx
+
+inherited
+
+Initial value:
= re.compile(
+
r"^(Book )+[0-9]*\W+(-)")
+
+
+
+ +

◆ title_sanitization_regx

+ +
+
+ + + + + +
+ + + + +
src.backend.lib.library.Catalogue.title_sanitization_regx = re.compile(r"^(Book )+[0-9]*")
+
+inherited
+
+ +
+
+
The documentation for this class was generated from the following file: +
+ + +
+ + diff --git a/docs/pyShelf/html/dc/ded/classsrc_1_1backend_1_1lib_1_1overide_1_1ACatalogue.png b/docs/pyShelf/html/dc/ded/classsrc_1_1backend_1_1lib_1_1overide_1_1ACatalogue.png new file mode 100644 index 0000000..4b3acda Binary files /dev/null and b/docs/pyShelf/html/dc/ded/classsrc_1_1backend_1_1lib_1_1overide_1_1ACatalogue.png differ diff --git a/docs/pyShelf/html/dd/d22/classFastAPIServer_1_1FastAPIServer.html b/docs/pyShelf/html/dd/d22/classFastAPIServer_1_1FastAPIServer.html new file mode 100644 index 0000000..25a579b --- /dev/null +++ b/docs/pyShelf/html/dd/d22/classFastAPIServer_1_1FastAPIServer.html @@ -0,0 +1,404 @@ + + + + + + + +pyShelf Open Source Ebook Server: FastAPIServer.FastAPIServer Class Reference + + + + + + +
+
+ + + + + + +
+
pyShelf Open Source Ebook Server 0.8.0 +
+
FOSS E-Book Server, https://pyshelf.com
+
+
+ + + + + +
+
+
+ +
FastAPIServer.FastAPIServer Class Reference
+
+
+ + + + + + + + + + + + + +

+Public Member Functions

 __init__ (self, config)
 compile_static_files (self)
None use_route_names_as_operation_ids (self, FastAPI app)
 index (Request request, int skip=0, int limit=30)
 books (Request request, int skip=0, int limit=10, collection=None)
 book (Request request, int book_id)
 book (Request request, int book_id)
 collections (Request request)
 collection (Request request, str collection, int skip=0, int limit=30)
 search_books_api (Request request, str search)
 run (self)
+ + + + + +

+Public Attributes

 config = config
 fe_config
 fe_server = uvicorn.Server(self.fe_config)
JSInterface JSInterface = JSInterface(self.config)
+

Detailed Description

+
Entry point for FastAPI server.

Constructor & Destructor Documentation

+ +

◆ __init__()

+ +
+
+ + + + + + + + + + + +
FastAPIServer.FastAPIServer.__init__ ( self,
config )
+
+
Initialize FastAPIServer object parameters.
+
+
+

Member Function Documentation

+ +

◆ book() [1/2]

+ +
+
+ + + + + + + + + + + +
FastAPIServer.FastAPIServer.book (Request request,
int book_id )
+
+ +
+
+ +

◆ book() [2/2]

+ +
+
+ + + + + + + + + + + +
FastAPIServer.FastAPIServer.book (Request request,
int book_id )
+
+ +
+
+ +

◆ books()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + +
FastAPIServer.FastAPIServer.books (Request request,
int skip = 0,
int limit = 10,
collection = None )
+
+ +
+
+ +

◆ collection()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + +
FastAPIServer.FastAPIServer.collection (Request request,
str collection,
int skip = 0,
int limit = 30 )
+
+
Collection file responder.
+
+
+ +

◆ collections()

+ +
+
+ + + + + + + +
FastAPIServer.FastAPIServer.collections (Request request)
+
+ +
+
+ +

◆ compile_static_files()

+ +
+
+ + + + + + + +
FastAPIServer.FastAPIServer.compile_static_files ( self)
+
+
Compile static files for web frontend.
+
+
+ +

◆ index()

+ +
+
+ + + + + + + + + + + + + + + + +
FastAPIServer.FastAPIServer.index (Request request,
int skip = 0,
int limit = 30 )
+
+ +
+
+ +

◆ run()

+ +
+
+ + + + + + + +
FastAPIServer.FastAPIServer.run ( self)
+
+
Front end server entrypoint.
+
+
+ +

◆ search_books_api()

+ +
+
+ + + + + + + + + + + +
FastAPIServer.FastAPIServer.search_books_api (Request request,
str search )
+
+
Collection file responder.
+
+
+ +

◆ use_route_names_as_operation_ids()

+ +
+
+ + + + + + + + + + + +
None FastAPIServer.FastAPIServer.use_route_names_as_operation_ids ( self,
FastAPI app )
+
+
Use route name as operation id.
+
+
+

Member Data Documentation

+ +

◆ config

+ +
+
+ + + + +
FastAPIServer.FastAPIServer.config = config
+
+ +
+
+ +

◆ fe_config

+ +
+
+ + + + +
FastAPIServer.FastAPIServer.fe_config
+
+Initial value:
= uvicorn.Config(app, host="0.0.0.0", port=8080,
+
log_level="info", reload=True)
+
+
+
+ +

◆ fe_server

+ +
+
+ + + + +
FastAPIServer.FastAPIServer.fe_server = uvicorn.Server(self.fe_config)
+
+ +
+
+ +

◆ JSInterface

+ +
+
+ + + + +
JSInterface FastAPIServer.FastAPIServer.JSInterface = JSInterface(self.config)
+
+ +
+
+
The documentation for this class was generated from the following file: +
+ + +
+ + diff --git a/docs/pyShelf/html/dd/d98/classsrc_1_1backend_1_1lib_1_1models_1_1User.html b/docs/pyShelf/html/dd/d98/classsrc_1_1backend_1_1lib_1_1models_1_1User.html new file mode 100644 index 0000000..077a76f --- /dev/null +++ b/docs/pyShelf/html/dd/d98/classsrc_1_1backend_1_1lib_1_1models_1_1User.html @@ -0,0 +1,303 @@ + + + + + + + +pyShelf Open Source Ebook Server: src.backend.lib.models.User Class Reference + + + + + + +
+
+ + + + + + +
+
pyShelf Open Source Ebook Server 0.8.0 +
+
FOSS E-Book Server, https://pyshelf.com
+
+
+ + + + + +
+
+
+ +
src.backend.lib.models.User Class Reference
+
+
+
+Inheritance diagram for src.backend.lib.models.User:
+
+
+ + +src.backend.lib.models.Base + +
+ + + + + + + + + + + +

+Static Public Attributes

Mapped id = mapped_column(primary_key=True, nullable=False)
Mapped username = mapped_column(unique=True, nullable=False)
Mapped password = mapped_column(nullable=False)
Mapped email = mapped_column(unique=True, nullable=True)
Mapped date_joined
Mapped last_login
Mapped is_active = mapped_column(nullable=False, default=True)
Mapped is_admin = mapped_column(nullable=False, default=False)
Mapped is_superuser = mapped_column(nullable=False, default=False)
+

Detailed Description

+
User model.

Member Data Documentation

+ +

◆ date_joined

+ +
+
+ + + + + +
+ + + + +
Mapped src.backend.lib.models.User.date_joined
+
+static
+
+Initial value:
= mapped_column(
+
nullable=False, server_default=func.CURRENT_TIMESTAMP()
+
)
+
+
+
+ +

◆ email

+ +
+
+ + + + + +
+ + + + +
Mapped src.backend.lib.models.User.email = mapped_column(unique=True, nullable=True)
+
+static
+
+ +
+
+ +

◆ id

+ +
+
+ + + + + +
+ + + + +
Mapped src.backend.lib.models.User.id = mapped_column(primary_key=True, nullable=False)
+
+static
+
+ +
+
+ +

◆ is_active

+ +
+
+ + + + + +
+ + + + +
Mapped src.backend.lib.models.User.is_active = mapped_column(nullable=False, default=True)
+
+static
+
+ +
+
+ +

◆ is_admin

+ +
+
+ + + + + +
+ + + + +
Mapped src.backend.lib.models.User.is_admin = mapped_column(nullable=False, default=False)
+
+static
+
+ +
+
+ +

◆ is_superuser

+ +
+
+ + + + + +
+ + + + +
Mapped src.backend.lib.models.User.is_superuser = mapped_column(nullable=False, default=False)
+
+static
+
+ +
+
+ +

◆ last_login

+ +
+
+ + + + + +
+ + + + +
Mapped src.backend.lib.models.User.last_login
+
+static
+
+Initial value:
= mapped_column(
+
nullable=True, server_default=None
+
)
+
+
+
+ +

◆ password

+ +
+
+ + + + + +
+ + + + +
Mapped src.backend.lib.models.User.password = mapped_column(nullable=False)
+
+static
+
+ +
+
+ +

◆ username

+ +
+
+ + + + + +
+ + + + +
Mapped src.backend.lib.models.User.username = mapped_column(unique=True, nullable=False)
+
+static
+
+ +
+
+
The documentation for this class was generated from the following file: +
+ + +
+ + diff --git a/docs/pyShelf/html/dd/d98/classsrc_1_1backend_1_1lib_1_1models_1_1User.png b/docs/pyShelf/html/dd/d98/classsrc_1_1backend_1_1lib_1_1models_1_1User.png new file mode 100644 index 0000000..c0860b6 Binary files /dev/null and b/docs/pyShelf/html/dd/d98/classsrc_1_1backend_1_1lib_1_1models_1_1User.png differ diff --git a/docs/pyShelf/html/dd/de1/namespacesrc_1_1backend_1_1lib_1_1storage.html b/docs/pyShelf/html/dd/de1/namespacesrc_1_1backend_1_1lib_1_1storage.html new file mode 100644 index 0000000..04ebbe3 --- /dev/null +++ b/docs/pyShelf/html/dd/de1/namespacesrc_1_1backend_1_1lib_1_1storage.html @@ -0,0 +1,75 @@ + + + + + + + +pyShelf Open Source Ebook Server: src.backend.lib.storage Namespace Reference + + + + + + +
+
+ + + + + + +
+
pyShelf Open Source Ebook Server 0.8.0 +
+
FOSS E-Book Server, https://pyshelf.com
+
+
+ + + + + +
+
+
+ +
src.backend.lib.storage Namespace Reference
+
+
+ + + +

+Classes

class  Storage
+

Detailed Description

+
Pyshelf's Main Storage Class.
+ + +
+ + diff --git a/docs/pyShelf/html/de/d11/classsrc_1_1backend_1_1lib_1_1api__hooks_1_1DuckDuckGo-members.html b/docs/pyShelf/html/de/d11/classsrc_1_1backend_1_1lib_1_1api__hooks_1_1DuckDuckGo-members.html new file mode 100644 index 0000000..5798eb8 --- /dev/null +++ b/docs/pyShelf/html/de/d11/classsrc_1_1backend_1_1lib_1_1api__hooks_1_1DuckDuckGo-members.html @@ -0,0 +1,77 @@ + + + + + + + +pyShelf Open Source Ebook Server: Member List + + + + + + +
+
+ + + + + + +
+
pyShelf Open Source Ebook Server 0.8.0 +
+
FOSS E-Book Server, https://pyshelf.com
+
+
+ + + + + +
+
+
+
src.backend.lib.api_hooks.DuckDuckGo Member List
+
+ + + +
+ + diff --git a/docs/pyShelf/html/de/d6d/classsrc_1_1backend_1_1lib_1_1pyShelf_1_1Server-members.html b/docs/pyShelf/html/de/d6d/classsrc_1_1backend_1_1lib_1_1pyShelf_1_1Server-members.html new file mode 100644 index 0000000..63f791d --- /dev/null +++ b/docs/pyShelf/html/de/d6d/classsrc_1_1backend_1_1lib_1_1pyShelf_1_1Server-members.html @@ -0,0 +1,85 @@ + + + + + + + +pyShelf Open Source Ebook Server: Member List + + + + + + +
+
+ + + + + + +
+
pyShelf Open Source Ebook Server 0.8.0 +
+
FOSS E-Book Server, https://pyshelf.com
+
+
+ + + + + +
+
+
+
src.backend.lib.pyShelf.Server Member List
+
+ + + +
+ + diff --git a/docs/pyShelf/html/df/d03/classsrc_1_1backend_1_1lib_1_1models_1_1Collection.html b/docs/pyShelf/html/df/d03/classsrc_1_1backend_1_1lib_1_1models_1_1Collection.html new file mode 100644 index 0000000..12b5dc0 --- /dev/null +++ b/docs/pyShelf/html/df/d03/classsrc_1_1backend_1_1lib_1_1models_1_1Collection.html @@ -0,0 +1,162 @@ + + + + + + + +pyShelf Open Source Ebook Server: src.backend.lib.models.Collection Class Reference + + + + + + +
+
+ + + + + + +
+
pyShelf Open Source Ebook Server 0.8.0 +
+
FOSS E-Book Server, https://pyshelf.com
+
+
+ + + + + +
+
+
+ +
src.backend.lib.models.Collection Class Reference
+
+
+
+Inheritance diagram for src.backend.lib.models.Collection:
+
+
+ + +src.backend.lib.models.Base + +
+ + + + + +

+Static Public Attributes

Mapped id = mapped_column(primary_key=True)
Mapped name = mapped_column(unique=True)
 book_collections
+

Detailed Description

+
Collection model.

Member Data Documentation

+ +

◆ book_collections

+ +
+
+ + + + + +
+ + + + +
src.backend.lib.models.Collection.book_collections
+
+static
+
+Initial value:
= relationship(
+
"BookCollection", back_populates="collection", cascade="all, delete-orphan"
+
)
+
+
+
+ +

◆ id

+ +
+
+ + + + + +
+ + + + +
Mapped src.backend.lib.models.Collection.id = mapped_column(primary_key=True)
+
+static
+
+ +
+
+ +

◆ name

+ +
+
+ + + + + +
+ + + + +
Mapped src.backend.lib.models.Collection.name = mapped_column(unique=True)
+
+static
+
+ +
+
+
The documentation for this class was generated from the following file: +
+ + +
+ + diff --git a/docs/pyShelf/html/df/d03/classsrc_1_1backend_1_1lib_1_1models_1_1Collection.png b/docs/pyShelf/html/df/d03/classsrc_1_1backend_1_1lib_1_1models_1_1Collection.png new file mode 100644 index 0000000..0796e73 Binary files /dev/null and b/docs/pyShelf/html/df/d03/classsrc_1_1backend_1_1lib_1_1models_1_1Collection.png differ diff --git a/docs/pyShelf/html/df/d4c/namespaceobjects.html b/docs/pyShelf/html/df/d4c/namespaceobjects.html new file mode 100644 index 0000000..c58a2f8 --- /dev/null +++ b/docs/pyShelf/html/df/d4c/namespaceobjects.html @@ -0,0 +1,71 @@ + + + + + + + +pyShelf Open Source Ebook Server: objects Namespace Reference + + + + + + +
+
+ + + + + + +
+
pyShelf Open Source Ebook Server 0.8.0 +
+
FOSS E-Book Server, https://pyshelf.com
+
+
+ + + + +
+
+
+ +
objects Namespace Reference
+
+
+ + + +

+Classes

class  JSInterface
+

Detailed Description

+
pyShelf's Frontend Objects.
+ + +
+ + diff --git a/docs/pyShelf/html/df/d54/classsrc_1_1backend_1_1lib_1_1models_1_1BookCollection-members.html b/docs/pyShelf/html/df/d54/classsrc_1_1backend_1_1lib_1_1models_1_1BookCollection-members.html new file mode 100644 index 0000000..36cfede --- /dev/null +++ b/docs/pyShelf/html/df/d54/classsrc_1_1backend_1_1lib_1_1models_1_1BookCollection-members.html @@ -0,0 +1,77 @@ + + + + + + + +pyShelf Open Source Ebook Server: Member List + + + + + + +
+
+ + + + + + +
+
pyShelf Open Source Ebook Server 0.8.0 +
+
FOSS E-Book Server, https://pyshelf.com
+
+
+ + + + + +
+
+
+
src.backend.lib.models.BookCollection Member List
+
+ + + +
+ + diff --git a/docs/pyShelf/html/df/d83/classsrc_1_1backend_1_1tests_1_1config__test_1_1TestConfig.html b/docs/pyShelf/html/df/d83/classsrc_1_1backend_1_1tests_1_1config__test_1_1TestConfig.html new file mode 100644 index 0000000..b647326 --- /dev/null +++ b/docs/pyShelf/html/df/d83/classsrc_1_1backend_1_1tests_1_1config__test_1_1TestConfig.html @@ -0,0 +1,163 @@ + + + + + + + +pyShelf Open Source Ebook Server: src.backend.tests.config_test.TestConfig Class Reference + + + + + + +
+
+ + + + + + +
+
pyShelf Open Source Ebook Server 0.8.0 +
+
FOSS E-Book Server, https://pyshelf.com
+
+
+ + + + + +
+
+
+ +
src.backend.tests.config_test.TestConfig Class Reference
+
+
+ + + + + +

+Public Member Functions

 test_book_dir (self)
 test_title (self)
 test_version (self)
+ + +

+Static Public Attributes

 config = Config(os.path.abspath(os.path.curdir))
+

Detailed Description

+

Member Function Documentation

+ +

◆ test_book_dir()

+ +
+
+ + + + + + + +
src.backend.tests.config_test.TestConfig.test_book_dir ( self)
+
+ +
+
+ +

◆ test_title()

+ +
+
+ + + + + + + +
src.backend.tests.config_test.TestConfig.test_title ( self)
+
+ +
+
+ +

◆ test_version()

+ +
+
+ + + + + + + +
src.backend.tests.config_test.TestConfig.test_version ( self)
+
+ +
+
+

Member Data Documentation

+ +

◆ config

+ +
+
+ + + + + +
+ + + + +
src.backend.tests.config_test.TestConfig.config = Config(os.path.abspath(os.path.curdir))
+
+static
+
+ +
+
+
The documentation for this class was generated from the following file: +
+ + +
+ + diff --git a/docs/pyShelf/html/dir_1c7294442ce83d360610449d04c9d7fc.html b/docs/pyShelf/html/dir_1c7294442ce83d360610449d04c9d7fc.html new file mode 100644 index 0000000..2b061c3 --- /dev/null +++ b/docs/pyShelf/html/dir_1c7294442ce83d360610449d04c9d7fc.html @@ -0,0 +1,78 @@ + + + + + + + +pyShelf Open Source Ebook Server: src/backend/lib Directory Reference + + + + + + +
+
+ + + + + + +
+
pyShelf Open Source Ebook Server 0.8.0 +
+
FOSS E-Book Server, https://pyshelf.com
+
+
+ + + + + +
+
+
+
lib Directory Reference
+
+
+ + + + + + + + + + +

+Files

 
__init__.py
 
api_hooks.py
 
config.py
 
library.py
 
models.py
 
overide.py
 
pyShelf.py
 
storage.py
+
+ + +
+ + diff --git a/docs/pyShelf/html/dir_3f615ade772d23cefe5e20dcb18424a2.html b/docs/pyShelf/html/dir_3f615ade772d23cefe5e20dcb18424a2.html new file mode 100644 index 0000000..d0ea18b --- /dev/null +++ b/docs/pyShelf/html/dir_3f615ade772d23cefe5e20dcb18424a2.html @@ -0,0 +1,78 @@ + + + + + + + +pyShelf Open Source Ebook Server: src/backend Directory Reference + + + + + + +
+
+ + + + + + +
+
pyShelf Open Source Ebook Server 0.8.0 +
+
FOSS E-Book Server, https://pyshelf.com
+
+
+ + + + + +
+
+
+
backend Directory Reference
+
+
+ + + + +

+Directories

 
lib
 
tests
+ + + + +

+Files

 
__init__.py
 
pyShelf_MakeCollections.py
 
pyShelf_ScanLibrary.py
+
+ + +
+ + diff --git a/docs/pyShelf/html/dir_68267d1309a1af8e8297ef4c3efbcdba.html b/docs/pyShelf/html/dir_68267d1309a1af8e8297ef4c3efbcdba.html new file mode 100644 index 0000000..b009008 --- /dev/null +++ b/docs/pyShelf/html/dir_68267d1309a1af8e8297ef4c3efbcdba.html @@ -0,0 +1,77 @@ + + + + + + + +pyShelf Open Source Ebook Server: src Directory Reference + + + + + + +
+
+ + + + + + +
+
pyShelf Open Source Ebook Server 0.8.0 +
+
FOSS E-Book Server, https://pyshelf.com
+
+
+ + + + + +
+
+
+
src Directory Reference
+
+
+ + + +

+Directories

 
backend
+ + + + +

+Files

 
__about__.py
 
__init__.py
 
__main__.py
+
+ + +
+ + diff --git a/docs/pyShelf/html/dir_8509b06bafa958d2011203a730bf5778.html b/docs/pyShelf/html/dir_8509b06bafa958d2011203a730bf5778.html new file mode 100644 index 0000000..60e7119 --- /dev/null +++ b/docs/pyShelf/html/dir_8509b06bafa958d2011203a730bf5778.html @@ -0,0 +1,71 @@ + + + + + + + +pyShelf Open Source Ebook Server: src/frontend Directory Reference + + + + + + +
+
+ + + + + + +
+
pyShelf Open Source Ebook Server 0.8.0 +
+
FOSS E-Book Server, https://pyshelf.com
+
+
+ + + + + +
+
+
+
frontend Directory Reference
+
+
+ + + +

+Directories

 
lib
+
+ + +
+ + diff --git a/docs/pyShelf/html/dir_9020577e2da81c4cf5a5554c26431f94.html b/docs/pyShelf/html/dir_9020577e2da81c4cf5a5554c26431f94.html new file mode 100644 index 0000000..e6e9caf --- /dev/null +++ b/docs/pyShelf/html/dir_9020577e2da81c4cf5a5554c26431f94.html @@ -0,0 +1,74 @@ + + + + + + + +pyShelf Open Source Ebook Server: src/backend/tests Directory Reference + + + + + + +
+
+ + + + + + +
+
pyShelf Open Source Ebook Server 0.8.0 +
+
FOSS E-Book Server, https://pyshelf.com
+
+
+ + + + + +
+
+
+
tests Directory Reference
+
+
+ + + + + + +

+Files

 
__init__.py
 
config_test.py
 
library_test.py
 
server_test.py
+
+ + +
+ + diff --git a/docs/pyShelf/html/dir_d6d65651a873fbc3232a07f3f4a594e4.html b/docs/pyShelf/html/dir_d6d65651a873fbc3232a07f3f4a594e4.html new file mode 100644 index 0000000..d0f47b7 --- /dev/null +++ b/docs/pyShelf/html/dir_d6d65651a873fbc3232a07f3f4a594e4.html @@ -0,0 +1,74 @@ + + + + + + + +pyShelf Open Source Ebook Server: src/frontend/lib Directory Reference + + + + + + +
+
+ + + + + + +
+
pyShelf Open Source Ebook Server 0.8.0 +
+
FOSS E-Book Server, https://pyshelf.com
+
+
+ + + + + +
+
+
+
lib Directory Reference
+
+
+ + + + + + +

+Files

 
DataHooks.py
 
FastAPIServer.py
 
objects.py
 
runtime_paths.py
+
+ + +
+ + diff --git a/docs/pyShelf/html/doxygen.svg b/docs/pyShelf/html/doxygen.svg new file mode 100644 index 0000000..79a7635 --- /dev/null +++ b/docs/pyShelf/html/doxygen.svg @@ -0,0 +1,28 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/pyShelf/html/doxygen_crawl.html b/docs/pyShelf/html/doxygen_crawl.html new file mode 100644 index 0000000..fe41c16 --- /dev/null +++ b/docs/pyShelf/html/doxygen_crawl.html @@ -0,0 +1,138 @@ + + + +Validator / crawler helper + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/pyShelf/html/dynsections.js b/docs/pyShelf/html/dynsections.js new file mode 100644 index 0000000..4f8fb0e --- /dev/null +++ b/docs/pyShelf/html/dynsections.js @@ -0,0 +1,198 @@ +/* + @licstart The following is the entire license notice for the JavaScript code in this file. + + The MIT License (MIT) + + Copyright (C) 1997-2020 by Dimitri van Heesch + + 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. + + @licend The above is the entire license notice for the JavaScript code in this file + */ + +function toggleVisibility(linkObj) { + return dynsection.toggleVisibility(linkObj); +} + +let dynsection = { + // helper function + updateStripes : function() { + $('table.directory tr'). + removeClass('even').filter(':visible:even').addClass('even'); + $('table.directory tr'). + removeClass('odd').filter(':visible:odd').addClass('odd'); + }, + + toggleVisibility : function(linkObj) { + const base = $(linkObj).attr('id'); + const summary = $('#'+base+'-summary'); + const content = $('#'+base+'-content'); + const trigger = $('#'+base+'-trigger'); + const src=$(trigger).attr('src'); + if (content.is(':visible')===true) { + content.slideUp('fast'); + summary.show(); + $(linkObj).find('.arrowhead').addClass('closed').removeClass('opened'); + } else { + content.slideDown('fast'); + summary.hide(); + $(linkObj).find('.arrowhead').removeClass('closed').addClass('opened'); + } + return false; + }, + + toggleLevel : function(level) { + $('table.directory tr').each(function() { + const l = this.id.split('_').length-1; + const i = $('#img'+this.id.substring(3)); + const a = $('#arr'+this.id.substring(3)); + if (l'); + // add vertical lines to other rows + $('span[class=lineno]').not(':eq(0)').append(''); + // add toggle controls to lines with fold divs + $('div[class=foldopen]').each(function() { + // extract specific id to use + const id = $(this).attr('id').replace('foldopen',''); + // extract start and end foldable fragment attributes + const start = $(this).attr('data-start'); + const end = $(this).attr('data-end'); + // replace normal fold span with controls for the first line of a foldable fragment + $(this).find('span[class=fold]:first').replaceWith(''); + // append div for folded (closed) representation + $(this).after(''); + // extract the first line from the "open" section to represent closed content + const line = $(this).children().first().clone(); + // remove any glow that might still be active on the original line + $(line).removeClass('glow'); + if (start) { + // if line already ends with a start marker (e.g. trailing {), remove it + $(line).html($(line).html().replace(new RegExp('\\s*'+start+'\\s*$','g'),'')); + } + // replace minus with plus symbol + $(line).find('span[class=fold]').addClass('plus').removeClass('minus'); + // append ellipsis + $(line).append(' '+start+''+end); + // insert constructed line into closed div + $('#foldclosed'+id).html(line); + }); + }, +}; +/* @license-end */ +$(function() { + $('.code,.codeRef').each(function() { + $(this).data('powertip',$('#a'+$(this).attr('href').replace(/.*\//,'').replace(/[^a-z_A-Z0-9]/g,'_')).html()); + $.fn.powerTip.smartPlacementLists.s = [ 's', 'n', 'ne', 'se' ]; + $(this).powerTip({ placement: 's', smartPlacement: true, mouseOnToPopup: true }); + }); +}); diff --git a/docs/pyShelf/html/files.html b/docs/pyShelf/html/files.html new file mode 100644 index 0000000..3878bbf --- /dev/null +++ b/docs/pyShelf/html/files.html @@ -0,0 +1,94 @@ + + + + + + + +pyShelf Open Source Ebook Server: File List + + + + + + +
+
+ + + + + + +
+
pyShelf Open Source Ebook Server 0.8.0 +
+
FOSS E-Book Server, https://pyshelf.com
+
+
+ + + + +
+
+
+
File List
+
+
+
Here is a list of all documented files with brief descriptions:
+
[detail level 1234]
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + +
 
src
 
backend
 
lib
 
__init__.py
 
api_hooks.py
 
config.py
 
library.py
 
models.py
 
overide.py
 
pyShelf.py
 
storage.py
 
tests
 
__init__.py
 
config_test.py
 
library_test.py
 
server_test.py
 
__init__.py
 
pyShelf_MakeCollections.py
 
pyShelf_ScanLibrary.py
 
frontend
 
lib
 
DataHooks.py
 
FastAPIServer.py
 
objects.py
 
runtime_paths.py
 
__about__.py
 
__init__.py
 
__main__.py
+
+
+ + +
+ + diff --git a/docs/pyShelf/html/functions.html b/docs/pyShelf/html/functions.html new file mode 100644 index 0000000..c571213 --- /dev/null +++ b/docs/pyShelf/html/functions.html @@ -0,0 +1,170 @@ + + + + + + + +pyShelf Open Source Ebook Server: Class Members + + + + + + +
+
+ + + + + + +
+
pyShelf Open Source Ebook Server 0.8.0 +
+
FOSS E-Book Server, https://pyshelf.com
+
+
+ + + + +
+
+
+
Here is a list of all documented class members with links to the class documentation for each member:
+ +

- _ -

+ + +

- b -

+ + +

- c -

+ + +

- e -

+ + +

- f -

+ + +

- g -

+ + +

- i -

+ + +

- m -

+ + +

- o -

+ + +

- p -

+ + +

- r -

+ + +

- s -

+ + +

- u -

+
+ + +
+ + diff --git a/docs/pyShelf/html/functions_func.html b/docs/pyShelf/html/functions_func.html new file mode 100644 index 0000000..41be8c8 --- /dev/null +++ b/docs/pyShelf/html/functions_func.html @@ -0,0 +1,170 @@ + + + + + + + +pyShelf Open Source Ebook Server: Class Members - Functions + + + + + + +
+
+ + + + + + +
+
pyShelf Open Source Ebook Server 0.8.0 +
+
FOSS E-Book Server, https://pyshelf.com
+
+
+ + + + +
+
+
+
Here is a list of all documented functions with links to the class documentation for each member:
+ +

- _ -

+ + +

- b -

+ + +

- c -

+ + +

- e -

+ + +

- f -

+ + +

- g -

+ + +

- i -

+ + +

- m -

+ + +

- o -

+ + +

- p -

+ + +

- r -

+ + +

- s -

+ + +

- u -

+
+ + +
+ + diff --git a/docs/pyShelf/html/hierarchy.html b/docs/pyShelf/html/hierarchy.html new file mode 100644 index 0000000..0698be0 --- /dev/null +++ b/docs/pyShelf/html/hierarchy.html @@ -0,0 +1,89 @@ + + + + + + + +pyShelf Open Source Ebook Server: Class Hierarchy + + + + + + +
+
+ + + + + + +
+
pyShelf Open Source Ebook Server 0.8.0 +
+
FOSS E-Book Server, https://pyshelf.com
+
+
+ + + + +
+ + + diff --git a/docs/pyShelf/html/index.hhc b/docs/pyShelf/html/index.hhc new file mode 100644 index 0000000..5e6cd3f --- /dev/null +++ b/docs/pyShelf/html/index.hhc @@ -0,0 +1,342 @@ + + + + + +
    +
  • +
      +
    • +
        +
      • +
          +
        • +
            +
          +
        +
      • +
          +
        • +
            +
          • +
          • +
          • +
          • +
          • +
          • +
          +
        • +
        • +
        • +
        • +
        • +
        • +
        +
      • +
          +
        • +
            +
          • +
          • +
          +
        +
      • +
          +
        • +
            +
          • +
          • +
          +
        • +
            +
          • +
              +
            • +
                +
              • +
                  +
                • +
                • +
                • +
                +
              +
            • +
                +
              • +
                  +
                • +
                • +
                • +
                • +
                • +
                • +
                • +
                • +
                • +
                • +
                • +
                • +
                +
              +
            +
          +
        +
      +
    • +
        +
      • +
      • +
      +
    +
  • +
      +
    • +
        +
      • +
          +
        • +
            +
          +
        +
      • +
          +
        • +
            +
          • +
          • +
          • +
          • +
          • +
          • +
          +
        +
      • +
          +
        • +
            +
          • +
          • +
          +
        +
      • +
          +
        • +
            +
          • +
              +
            • +
                +
              • +
                  +
                • +
                +
              +
            • +
                +
              • +
                  +
                • +
                • +
                • +
                +
              +
            • +
                +
              • +
                  +
                • +
                • +
                • +
                • +
                • +
                • +
                • +
                • +
                • +
                • +
                +
              +
            • +
                +
              • +
              • +
                  +
                +
              • +
                  +
                +
              • +
                  +
                +
              • +
                  +
                +
              +
            • +
                +
              • +
                  +
                • +
                • +
                • +
                • +
                • +
                • +
                • +
                • +
                • +
                • +
                +
              +
            • +
                +
              • +
                  +
                • +
                +
              • +
                  +
                +
              +
            • +
                +
              • +
                  +
                • +
                • +
                • +
                • +
                • +
                • +
                • +
                • +
                • +
                • +
                • +
                • +
                +
              +
            +
          • +
              +
            • +
                +
              • +
                  +
                +
              +
            • +
                +
              • +
                  +
                • +
                • +
                • +
                • +
                • +
                • +
                • +
                • +
                • +
                • +
                +
              • +
                  +
                • +
                • +
                +
              • +
                  +
                +
              +
            +
          +
        +
      +
    • +
    • +
        +
      • +
      • +
          +
        • +
        • +
        +
      • +
          +
        • +
        +
      • +
          +
        • +
            +
          • +
          • +
          • +
          • +
          +
        +
      • +
      • +
      • +
      • +
      • +
      • +
      • +
      • +
      +
    • +
        +
      • +
      • +
      +
    +
  • +
      +
    • +
        +
      • +
          +
        • +
            +
          • +
              +
            • +
            • +
            • +
            • +
            • +
            • +
            • +
            • +
            +
          • +
              +
            • +
            • +
            • +
            • +
            +
          • +
          • +
          • +
          +
        • +
            +
          • +
              +
            • +
            • +
            • +
            • +
            +
          +
        • +
        • +
        • +
        +
      +
    +
+ + diff --git a/docs/pyShelf/html/index.hhk b/docs/pyShelf/html/index.hhk new file mode 100644 index 0000000..5040acd --- /dev/null +++ b/docs/pyShelf/html/index.hhk @@ -0,0 +1,292 @@ + + + + + +
    +
  • +
  • +
      +
    • +
    +
  • +
      +
    • +
    +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
      +
    • +
    +
  • +
      +
    • +
    +
  • +
      +
    • +
    +
  • +
      +
    • +
    +
  • +
      +
    • +
    +
  • +
      +
    • +
    +
  • +
      +
    • +
    +
  • +
      +
    • +
    +
  • +
      +
    • +
    +
  • +
      +
    • +
    +
  • +
      +
    • +
    +
  • +
      +
    • +
    +
  • +
      +
    • +
    +
  • +
      +
    • +
    +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
      +
    • +
    +
  • +
      +
    • +
    +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
      +
    • +
    +
  • +
      +
    • +
    +
  • +
  • +
  • +
      +
    • +
    +
  • +
      +
    • +
    +
  • +
  • +
      +
    • +
    +
  • +
  • +
  • +
      +
    • +
    +
  • +
      +
    • +
    +
  • +
      +
    • +
    +
  • +
  • +
      +
    • +
    +
  • +
      +
    • +
    +
  • +
      +
    • +
    +
  • +
      +
    • +
    +
  • +
      +
    • +
    +
  • +
      +
    • +
    +
  • +
      +
    • +
    +
  • +
      +
    • +
    +
  • +
      +
    • +
    +
  • +
      +
    • +
    +
  • +
      +
    • +
    +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
      +
    • +
    +
  • +
      +
    • +
    +
  • +
  • +
      +
    • +
    +
  • +
  • +
  • +
  • +
      +
    • +
    +
  • +
      +
    • +
    +
  • +
      +
    • +
    +
  • +
      +
    • +
    +
  • +
      +
    • +
    +
  • +
      +
    • +
    +
  • +
      +
    • +
    +
  • +
      +
    • +
    +
  • +
      +
    • +
    +
  • +
      +
    • +
    +
  • +
      +
    • +
    +
  • +
      +
    • +
    +
  • +
  • +
  • +
      +
    • +
    +
  • +
  • +
      +
    • +
    +
  • +
  • +
  • +
+ + diff --git a/docs/pyShelf/html/index.hhp b/docs/pyShelf/html/index.hhp new file mode 100644 index 0000000..92cbe22 --- /dev/null +++ b/docs/pyShelf/html/index.hhp @@ -0,0 +1,92 @@ +[OPTIONS] +Compiled file=pyShelf_docs +Compatibility=1.1 +Full-text search=Yes +Contents file=index.hhc +Default Window=main +Default topic=index.html +Index file=index.hhk +Language=0x409 English (United States) +Binary TOC=YES +Title=pyShelf Open Source Ebook Server + +[WINDOWS] +main="pyShelf Open Source Ebook Server","index.hhc","index.hhk","index.html","index.html",,,,,0x23520,,0x70387e,,,,,,,,0 + +[FILES] +annotated.html +classes.html +d0/d49/classsrc_1_1backend_1_1lib_1_1models_1_1Collection-members.html +d0/d93/namespacesrc_1_1backend_1_1lib_1_1config.html +d1/dca/classsrc_1_1backend_1_1lib_1_1pyShelf_1_1InitFiles-members.html +d2/dcb/classobjects_1_1JSInterface-members.html +d3/d29/classsrc_1_1backend_1_1tests_1_1library__test_1_1Test__Config.html +d3/d4a/classsrc_1_1backend_1_1lib_1_1config_1_1Config-members.html +d3/d95/classsrc_1_1backend_1_1tests_1_1library__test_1_1TestCatalogue-members.html +d4/d6b/classFastAPIServer_1_1FastAPIServer-members.html +d4/d71/classDataHooks_1_1BookInterface-members.html +d5/d86/classsrc_1_1backend_1_1lib_1_1models_1_1BookCollection.html +d5/da5/classsrc_1_1backend_1_1lib_1_1library_1_1Catalogue.html +d5/ddf/classsrc_1_1backend_1_1tests_1_1library__test_1_1Test__Config-members.html +d5/dee/classsrc_1_1backend_1_1tests_1_1config__test_1_1TestConfig-members.html +d6/d20/classsrc_1_1backend_1_1lib_1_1library_1_1Catalogue-members.html +d6/d4e/classsrc_1_1backend_1_1lib_1_1models_1_1Book.html +d6/d90/classsrc_1_1backend_1_1lib_1_1models_1_1Base.html +d7/d40/classsrc_1_1backend_1_1lib_1_1storage_1_1Storage.html +d7/d88/classsrc_1_1backend_1_1lib_1_1api__hooks_1_1DuckDuckGo.html +d7/db9/classsrc_1_1backend_1_1lib_1_1pyShelf_1_1Server.html +d7/dd7/namespacesrc_1_1____main____.html +d7/df9/namespaceDataHooks.html +d8/d3d/classsrc_1_1backend_1_1tests_1_1library__test_1_1TestCatalogue.html +d8/def/classobjects_1_1JSInterface.html +d8/dfe/classsrc_1_1backend_1_1lib_1_1config_1_1Config.html +d9/d0e/classsrc_1_1backend_1_1lib_1_1models_1_1User-members.html +d9/d71/classDataHooks_1_1BookInterface.html +d9/d8b/classsrc_1_1backend_1_1lib_1_1overide_1_1ACatalogue-members.html +da/d3c/classsrc_1_1backend_1_1lib_1_1pyShelf_1_1InitFiles.html +da/dc1/classsrc_1_1backend_1_1lib_1_1models_1_1Book-members.html +db/d9a/classsrc_1_1backend_1_1lib_1_1storage_1_1Storage-members.html +db/dd5/namespaceFastAPIServer.html +db/dda/classsrc_1_1backend_1_1tests_1_1library__test_1_1Test__Catalogue.html +dc/d3e/classsrc_1_1backend_1_1tests_1_1library__test_1_1Test__Catalogue-members.html +dc/ded/classsrc_1_1backend_1_1lib_1_1overide_1_1ACatalogue.html +dd/d22/classFastAPIServer_1_1FastAPIServer.html +dd/d98/classsrc_1_1backend_1_1lib_1_1models_1_1User.html +dd/de1/namespacesrc_1_1backend_1_1lib_1_1storage.html +de/d11/classsrc_1_1backend_1_1lib_1_1api__hooks_1_1DuckDuckGo-members.html +de/d6d/classsrc_1_1backend_1_1lib_1_1pyShelf_1_1Server-members.html +df/d03/classsrc_1_1backend_1_1lib_1_1models_1_1Collection.html +df/d4c/namespaceobjects.html +df/d54/classsrc_1_1backend_1_1lib_1_1models_1_1BookCollection-members.html +df/d83/classsrc_1_1backend_1_1tests_1_1config__test_1_1TestConfig.html +dir_1c7294442ce83d360610449d04c9d7fc.html +dir_3f615ade772d23cefe5e20dcb18424a2.html +dir_68267d1309a1af8e8297ef4c3efbcdba.html +dir_8509b06bafa958d2011203a730bf5778.html +dir_9020577e2da81c4cf5a5554c26431f94.html +dir_d6d65651a873fbc3232a07f3f4a594e4.html +doxygen_crawl.html +files.html +functions.html +functions_func.html +hierarchy.html +index.html +namespacemembers.html +namespacemembers_func.html +namespaces.html +d3/d29/classsrc_1_1backend_1_1tests_1_1library__test_1_1Test__Config.png +d5/d86/classsrc_1_1backend_1_1lib_1_1models_1_1BookCollection.png +d5/da5/classsrc_1_1backend_1_1lib_1_1library_1_1Catalogue.png +d6/d4e/classsrc_1_1backend_1_1lib_1_1models_1_1Book.png +d6/d90/classsrc_1_1backend_1_1lib_1_1models_1_1Base.png +d8/dfe/classsrc_1_1backend_1_1lib_1_1config_1_1Config.png +db/dda/classsrc_1_1backend_1_1tests_1_1library__test_1_1Test__Catalogue.png +dc/ded/classsrc_1_1backend_1_1lib_1_1overide_1_1ACatalogue.png +dd/d98/classsrc_1_1backend_1_1lib_1_1models_1_1User.png +df/d03/classsrc_1_1backend_1_1lib_1_1models_1_1Collection.png +doxygen.svg +doxygen.css +dynsections.js +jquery.js +navtree.css +tabs.css diff --git a/docs/pyShelf/html/index.html b/docs/pyShelf/html/index.html new file mode 100644 index 0000000..f776119 --- /dev/null +++ b/docs/pyShelf/html/index.html @@ -0,0 +1,58 @@ + + + + + + + +pyShelf Open Source Ebook Server: Main Page + + + + + + +
+
+ + + + + + +
+
pyShelf Open Source Ebook Server 0.8.0 +
+
FOSS E-Book Server, https://pyshelf.com
+
+
+ + + + +
+
+
+
pyShelf Open Source Ebook Server Documentation
+
+
+ +
+ + +
+ + diff --git a/docs/pyShelf/html/jquery.js b/docs/pyShelf/html/jquery.js new file mode 100644 index 0000000..875ada7 --- /dev/null +++ b/docs/pyShelf/html/jquery.js @@ -0,0 +1,204 @@ +/*! jQuery v3.6.0 | (c) OpenJS Foundation and other contributors | jquery.org/license */ +!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.exports=e.document?t(e,!0):function(e){if(!e.document)throw new Error("jQuery requires a window with a document");return t(e)}:t(e)}("undefined"!=typeof window?window:this,function(C,e){"use strict";var t=[],r=Object.getPrototypeOf,s=t.slice,g=t.flat?function(e){return t.flat.call(e)}:function(e){return t.concat.apply([],e)},u=t.push,i=t.indexOf,n={},o=n.toString,v=n.hasOwnProperty,a=v.toString,l=a.call(Object),y={},m=function(e){return"function"==typeof e&&"number"!=typeof e.nodeType&&"function"!=typeof e.item},x=function(e){return null!=e&&e===e.window},E=C.document,c={type:!0,src:!0,nonce:!0,noModule:!0};function b(e,t,n){var r,i,o=(n=n||E).createElement("script");if(o.text=e,t)for(r in c)(i=t[r]||t.getAttribute&&t.getAttribute(r))&&o.setAttribute(r,i);n.head.appendChild(o).parentNode.removeChild(o)}function w(e){return null==e?e+"":"object"==typeof e||"function"==typeof e?n[o.call(e)]||"object":typeof e} +var f="3.6.0",S=function(e,t){return new S.fn.init(e,t)};function p(e){var t=!!e&&"length"in e&&e.length,n=w(e);return!m(e)&&!x(e)&&("array"===n||0===t||"number"==typeof t&&0+~]|"+M+")"+M+"*"),U=new RegExp(M+"|>"),X=new RegExp(F),V=new RegExp("^"+I+"$"),G={ID:new RegExp("^#("+I+")"),CLASS:new RegExp("^\\.("+I+")"),TAG:new RegExp("^("+I+"|[*])"),ATTR:new RegExp("^"+W),PSEUDO:new RegExp("^"+F),CHILD:new RegExp( +"^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+M+"*(even|odd|(([+-]|)(\\d*)n|)"+M+"*(?:([+-]|)"+M+"*(\\d+)|))"+M+"*\\)|)","i"),bool:new RegExp("^(?:"+R+")$","i"),needsContext:new RegExp("^"+M+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+M+"*((?:-\\d)?\\d*)"+M+"*\\)|)(?=[^-]|$)","i")},Y=/HTML$/i,Q=/^(?:input|select|textarea|button)$/i,J=/^h\d$/i,K=/^[^{]+\{\s*\[native \w/,Z=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,ee=/[+~]/,te=new RegExp("\\\\[\\da-fA-F]{1,6}"+M+"?|\\\\([^\\r\\n\\f])","g"),ne=function(e,t){var n="0x"+e.slice(1)-65536;return t||(n<0?String.fromCharCode(n+65536):String.fromCharCode(n>>10|55296,1023&n|56320))},re=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,ie=function(e,t){return t?"\0"===e?"�":e.slice(0,-1)+"\\"+e.charCodeAt(e.length-1).toString(16)+" ":"\\"+e},oe=function(){T()},ae=be(function(e){return!0===e.disabled&&"fieldset"===e.nodeName.toLowerCase()},{dir:"parentNode",next:"legend"});try{H.apply(t=O.call(p.childNodes),p.childNodes),t[p.childNodes.length].nodeType +}catch(e){H={apply:t.length?function(e,t){L.apply(e,O.call(t))}:function(e,t){var n=e.length,r=0;while(e[n++]=t[r++]);e.length=n-1}}}function se(t,e,n,r){var i,o,a,s,u,l,c,f=e&&e.ownerDocument,p=e?e.nodeType:9;if(n=n||[],"string"!=typeof t||!t||1!==p&&9!==p&&11!==p)return n;if(!r&&(T(e),e=e||C,E)){if(11!==p&&(u=Z.exec(t)))if(i=u[1]){if(9===p){if(!(a=e.getElementById(i)))return n;if(a.id===i)return n.push(a),n}else if(f&&(a=f.getElementById(i))&&y(e,a)&&a.id===i)return n.push(a),n}else{if(u[2])return H.apply(n,e.getElementsByTagName(t)),n;if((i=u[3])&&d.getElementsByClassName&&e.getElementsByClassName)return H.apply(n,e.getElementsByClassName(i)),n}if(d.qsa&&!N[t+" "]&&(!v||!v.test(t))&&(1!==p||"object"!==e.nodeName.toLowerCase())){if(c=t,f=e,1===p&&(U.test(t)||z.test(t))){(f=ee.test(t)&&ye(e.parentNode)||e)===e&&d.scope||((s=e.getAttribute("id"))?s=s.replace(re,ie):e.setAttribute("id",s=S)),o=(l=h(t)).length;while(o--)l[o]=(s?"#"+s:":scope")+" "+xe(l[o]);c=l.join(",")}try{return H.apply(n,f.querySelectorAll(c +)),n}catch(e){N(t,!0)}finally{s===S&&e.removeAttribute("id")}}}return g(t.replace($,"$1"),e,n,r)}function ue(){var r=[];return function e(t,n){return r.push(t+" ")>b.cacheLength&&delete e[r.shift()],e[t+" "]=n}}function le(e){return e[S]=!0,e}function ce(e){var t=C.createElement("fieldset");try{return!!e(t)}catch(e){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function fe(e,t){var n=e.split("|"),r=n.length;while(r--)b.attrHandle[n[r]]=t}function pe(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&e.sourceIndex-t.sourceIndex;if(r)return r;if(n)while(n=n.nextSibling)if(n===t)return-1;return e?1:-1}function de(t){return function(e){return"input"===e.nodeName.toLowerCase()&&e.type===t}}function he(n){return function(e){var t=e.nodeName.toLowerCase();return("input"===t||"button"===t)&&e.type===n}}function ge(t){return function(e){ +return"form"in e?e.parentNode&&!1===e.disabled?"label"in e?"label"in e.parentNode?e.parentNode.disabled===t:e.disabled===t:e.isDisabled===t||e.isDisabled!==!t&&ae(e)===t:e.disabled===t:"label"in e&&e.disabled===t}}function ve(a){return le(function(o){return o=+o,le(function(e,t){var n,r=a([],e.length,o),i=r.length;while(i--)e[n=r[i]]&&(e[n]=!(t[n]=e[n]))})})}function ye(e){return e&&"undefined"!=typeof e.getElementsByTagName&&e}for(e in d=se.support={},i=se.isXML=function(e){var t=e&&e.namespaceURI,n=e&&(e.ownerDocument||e).documentElement;return!Y.test(t||n&&n.nodeName||"HTML")},T=se.setDocument=function(e){var t,n,r=e?e.ownerDocument||e:p;return r!=C&&9===r.nodeType&&r.documentElement&&(a=(C=r).documentElement,E=!i(C),p!=C&&(n=C.defaultView)&&n.top!==n&&(n.addEventListener?n.addEventListener("unload",oe,!1):n.attachEvent&&n.attachEvent("onunload",oe)),d.scope=ce(function(e){return a.appendChild(e).appendChild(C.createElement("div")),"undefined"!=typeof e.querySelectorAll&&!e.querySelectorAll( +":scope fieldset div").length}),d.attributes=ce(function(e){return e.className="i",!e.getAttribute("className")}),d.getElementsByTagName=ce(function(e){return e.appendChild(C.createComment("")),!e.getElementsByTagName("*").length}),d.getElementsByClassName=K.test(C.getElementsByClassName),d.getById=ce(function(e){return a.appendChild(e).id=S,!C.getElementsByName||!C.getElementsByName(S).length}),d.getById?(b.filter.ID=function(e){var t=e.replace(te,ne);return function(e){return e.getAttribute("id")===t}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n=t.getElementById(e);return n?[n]:[]}}):(b.filter.ID=function(e){var n=e.replace(te,ne);return function(e){var t="undefined"!=typeof e.getAttributeNode&&e.getAttributeNode("id");return t&&t.value===n}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n,r,i,o=t.getElementById(e);if(o){if((n=o.getAttributeNode("id"))&&n.value===e)return[o];i=t.getElementsByName(e),r=0;while(o=i[r++])if((n=o.getAttributeNode("id") +)&&n.value===e)return[o]}return[]}}),b.find.TAG=d.getElementsByTagName?function(e,t){return"undefined"!=typeof t.getElementsByTagName?t.getElementsByTagName(e):d.qsa?t.querySelectorAll(e):void 0}:function(e,t){var n,r=[],i=0,o=t.getElementsByTagName(e);if("*"===e){while(n=o[i++])1===n.nodeType&&r.push(n);return r}return o},b.find.CLASS=d.getElementsByClassName&&function(e,t){if("undefined"!=typeof t.getElementsByClassName&&E)return t.getElementsByClassName(e)},s=[],v=[],(d.qsa=K.test(C.querySelectorAll))&&(ce(function(e){var t;a.appendChild(e).innerHTML="",e.querySelectorAll("[msallowcapture^='']").length&&v.push("[*^$]="+M+"*(?:''|\"\")"),e.querySelectorAll("[selected]").length||v.push("\\["+M+"*(?:value|"+R+")"),e.querySelectorAll("[id~="+S+"-]").length||v.push("~="),(t=C.createElement("input")).setAttribute("name",""),e.appendChild(t),e.querySelectorAll("[name='']").length||v.push( +"\\["+M+"*name"+M+"*="+M+"*(?:''|\"\")"),e.querySelectorAll(":checked").length||v.push(":checked"),e.querySelectorAll("a#"+S+"+*").length||v.push(".#.+[+~]"),e.querySelectorAll("\\\f"),v.push("[\\r\\n\\f]")}),ce(function(e){e.innerHTML="";var t=C.createElement("input");t.setAttribute("type","hidden"),e.appendChild(t).setAttribute("name","D"),e.querySelectorAll("[name=d]").length&&v.push("name"+M+"*[*^$|!~]?="),2!==e.querySelectorAll(":enabled").length&&v.push(":enabled",":disabled"),a.appendChild(e).disabled=!0,2!==e.querySelectorAll(":disabled").length&&v.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),v.push(",.*:")})),(d.matchesSelector=K.test(c=a.matches||a.webkitMatchesSelector||a.mozMatchesSelector||a.oMatchesSelector||a.msMatchesSelector))&&ce(function(e){d.disconnectedMatch=c.call(e,"*"),c.call(e,"[s!='']:x"),s.push("!=",F)}),v=v.length&&new RegExp(v.join("|")),s=s.length&&new RegExp(s.join("|")),t=K.test( +a.compareDocumentPosition),y=t||K.test(a.contains)?function(e,t){var n=9===e.nodeType?e.documentElement:e,r=t&&t.parentNode;return e===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):e.compareDocumentPosition&&16&e.compareDocumentPosition(r)))}:function(e,t){if(t)while(t=t.parentNode)if(t===e)return!0;return!1},j=t?function(e,t){if(e===t)return l=!0,0;var n=!e.compareDocumentPosition-!t.compareDocumentPosition;return n||(1&(n=(e.ownerDocument||e)==(t.ownerDocument||t)?e.compareDocumentPosition(t):1)||!d.sortDetached&&t.compareDocumentPosition(e)===n?e==C||e.ownerDocument==p&&y(p,e)?-1:t==C||t.ownerDocument==p&&y(p,t)?1:u?P(u,e)-P(u,t):0:4&n?-1:1)}:function(e,t){if(e===t)return l=!0,0;var n,r=0,i=e.parentNode,o=t.parentNode,a=[e],s=[t];if(!i||!o)return e==C?-1:t==C?1:i?-1:o?1:u?P(u,e)-P(u,t):0;if(i===o)return pe(e,t);n=e;while(n=n.parentNode)a.unshift(n);n=t;while(n=n.parentNode)s.unshift(n);while(a[r]===s[r])r++;return r?pe(a[r],s[r]):a[r]==p?-1:s[r]==p?1:0}),C},se.matches=function(e,t){return se(e,null, +null,t)},se.matchesSelector=function(e,t){if(T(e),d.matchesSelector&&E&&!N[t+" "]&&(!s||!s.test(t))&&(!v||!v.test(t)))try{var n=c.call(e,t);if(n||d.disconnectedMatch||e.document&&11!==e.document.nodeType)return n}catch(e){N(t,!0)}return 0":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(te,ne),e[3]=(e[3]||e[4]||e[5]||"").replace(te,ne),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||se.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&se.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return G.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||"":n&&X.test(n)&&(t=h(n,!0))&&(t=n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(te,ne +).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=m[e+" "];return t||(t=new RegExp("(^|"+M+")"+e+"("+M+"|$)"))&&m(e,function(e){return t.test("string"==typeof e.className&&e.className||"undefined"!=typeof e.getAttribute&&e.getAttribute("class")||"")})},ATTR:function(n,r,i){return function(e){var t=se.attr(e,n);return null==t?"!="===r:!r||(t+="","="===r?t===i:"!="===r?t!==i:"^="===r?i&&0===t.indexOf(i):"*="===r?i&&-1:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i;function j(e,n,r){return m(n)?S.grep(e,function(e,t){return!!n.call(e,t,e)!==r}):n.nodeType?S.grep(e,function(e){return e===n!==r}):"string"!=typeof n?S.grep(e,function(e){return-1)[^>]*|#([\w-]+))$/;(S.fn.init=function(e,t,n){var r,i;if(!e)return this;if(n=n||D,"string"==typeof e){if(!(r="<"===e[0]&&">"===e[e.length-1]&&3<=e.length?[null,e,null]:q.exec(e))||!r[1]&&t)return!t||t.jquery?(t||n).find(e):this.constructor(t).find(e);if(r[1]){if(t=t instanceof S?t[0]:t,S.merge(this,S.parseHTML(r[1],t&&t.nodeType?t.ownerDocument||t:E,!0)),N.test(r[1])&&S.isPlainObject(t))for(r in t)m(this[r])?this[r](t[r]):this.attr(r,t[r]);return this}return(i=E.getElementById(r[2]))&&(this[0]=i,this.length=1),this}return e.nodeType?(this[0]=e,this.length=1,this):m(e)?void 0!==n.ready?n.ready(e):e(S):S.makeArray(e,this)}).prototype=S.fn,D=S(E);var L=/^(?:parents|prev(?:Until|All))/,H={children:!0,contents:!0,next:!0,prev:!0};function O(e,t){while((e=e[t])&&1!==e.nodeType);return e}S.fn.extend({has:function(e){var t=S(e,this),n=t.length;return this.filter(function(){for( +var e=0;e\x20\t\r\n\f]*)/i,he=/^$|^module$|\/(?:java|ecma)script/i;ce=E.createDocumentFragment().appendChild(E.createElement("div")),(fe=E.createElement("input")).setAttribute("type","radio"),fe.setAttribute("checked","checked"),fe.setAttribute("name","t"),ce.appendChild(fe),y.checkClone=ce.cloneNode(!0).cloneNode(!0).lastChild.checked,ce.innerHTML="",y.noCloneChecked=!!ce.cloneNode(!0).lastChild.defaultValue,ce.innerHTML="",y.option=!!ce.lastChild;var ge={thead:[1,"","
"],col:[2,"","
"],tr:[2,"","
"],td:[3,"","
"],_default:[0,"",""]};function ve(e,t){var n; +return n="undefined"!=typeof e.getElementsByTagName?e.getElementsByTagName(t||"*"):"undefined"!=typeof e.querySelectorAll?e.querySelectorAll(t||"*"):[],void 0===t||t&&A(e,t)?S.merge([e],n):n}function ye(e,t){for(var n=0,r=e.length;n",""]);var me=/<|&#?\w+;/;function xe(e,t,n,r,i){for(var o,a,s,u,l,c,f=t.createDocumentFragment(),p=[],d=0,h=e.length;d\s*$/g;function je(e,t){return A(e,"table")&&A(11!==t.nodeType?t:t.firstChild,"tr")&&S(e).children("tbody")[0]||e}function De(e){return e.type=(null!==e.getAttribute("type"))+"/"+e.type,e}function qe(e){return"true/"===(e.type||"").slice(0,5)?e.type=e.type.slice(5):e.removeAttribute("type"),e}function Le(e,t){var n,r,i,o,a,s;if(1===t.nodeType){if(Y.hasData(e)&&(s=Y.get(e).events))for(i in Y.remove(t,"handle events"),s)for(n=0, +r=s[i].length;n").attr(n.scriptAttrs||{}).prop({charset:n.scriptCharset,src:n.url}).on("load error",i=function(e){r.remove(),i=null,e&&t("error"===e.type?404:200,e.type)}),E.head.appendChild(r[0])},abort:function(){i&&i()}}});var _t,zt=[],Ut=/(=)\?(?=&|$)|\?\?/;S.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var e=zt.pop()||S.expando+"_"+wt.guid++;return this[e]=!0,e}}),S.ajaxPrefilter("json jsonp",function(e,t,n){var r,i,o,a=!1!==e.jsonp&&(Ut.test(e.url)?"url":"string"==typeof e.data&&0===(e.contentType||"").indexOf("application/x-www-form-urlencoded")&&Ut.test(e.data)&&"data");if(a||"jsonp"===e.dataTypes[0])return r=e.jsonpCallback=m(e.jsonpCallback)?e.jsonpCallback():e.jsonpCallback,a?e[a]=e[a].replace(Ut,"$1"+r):!1!==e.jsonp&&(e.url+=(Tt.test(e.url)?"&":"?")+e.jsonp+"="+r),e.converters["script json"]=function(){return o||S.error(r+" was not called"),o[0]},e.dataTypes[0]="json",i=C[r] +,C[r]=function(){o=arguments},n.always(function(){void 0===i?S(C).removeProp(r):C[r]=i,e[r]&&(e.jsonpCallback=t.jsonpCallback,zt.push(r)),o&&m(i)&&i(o[0]),o=i=void 0}),"script"}),y.createHTMLDocument=((_t=E.implementation.createHTMLDocument("").body).innerHTML="
",2===_t.childNodes.length),S.parseHTML=function(e,t,n){return"string"!=typeof e?[]:("boolean"==typeof t&&(n=t,t=!1),t||(y.createHTMLDocument?((r=(t=E.implementation.createHTMLDocument("")).createElement("base")).href=E.location.href,t.head.appendChild(r)):t=E),o=!n&&[],(i=N.exec(e))?[t.createElement(i[1])]:(i=xe([e],t,o),o&&o.length&&S(o).remove(),S.merge([],i.childNodes)));var r,i,o},S.fn.load=function(e,t,n){var r,i,o,a=this,s=e.indexOf(" ");return-1").append(S.parseHTML(e)).find(r):e)}).always(n&&function(e,t){a.each( +function(){n.apply(this,o||[e.responseText,t,e])})}),this},S.expr.pseudos.animated=function(t){return S.grep(S.timers,function(e){return t===e.elem}).length},S.offset={setOffset:function(e,t,n){var r,i,o,a,s,u,l=S.css(e,"position"),c=S(e),f={};"static"===l&&(e.style.position="relative"),s=c.offset(),o=S.css(e,"top"),u=S.css(e,"left"),("absolute"===l||"fixed"===l)&&-1<(o+u).indexOf("auto")?(a=(r=c.position()).top,i=r.left):(a=parseFloat(o)||0,i=parseFloat(u)||0),m(t)&&(t=t.call(e,n,S.extend({},s))),null!=t.top&&(f.top=t.top-s.top+a),null!=t.left&&(f.left=t.left-s.left+i),"using"in t?t.using.call(e,f):c.css(f)}},S.fn.extend({offset:function(t){if(arguments.length)return void 0===t?this:this.each(function(e){S.offset.setOffset(this,t,e)});var e,n,r=this[0];return r?r.getClientRects().length?(e=r.getBoundingClientRect(),n=r.ownerDocument.defaultView,{top:e.top+n.pageYOffset,left:e.left+n.pageXOffset}):{top:0,left:0}:void 0},position:function(){if(this[0]){var e,t,n,r=this[0],i={top:0,left:0};if("fixed"===S.css(r, +"position"))t=r.getBoundingClientRect();else{t=this.offset(),n=r.ownerDocument,e=r.offsetParent||n.documentElement;while(e&&(e===n.body||e===n.documentElement)&&"static"===S.css(e,"position"))e=e.parentNode;e&&e!==r&&1===e.nodeType&&((i=S(e).offset()).top+=S.css(e,"borderTopWidth",!0),i.left+=S.css(e,"borderLeftWidth",!0))}return{top:t.top-i.top-S.css(r,"marginTop",!0),left:t.left-i.left-S.css(r,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var e=this.offsetParent;while(e&&"static"===S.css(e,"position"))e=e.offsetParent;return e||re})}}),S.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(t,i){var o="pageYOffset"===i;S.fn[t]=function(e){return $(this,function(e,t,n){var r;if(x(e)?r=e:9===e.nodeType&&(r=e.defaultView),void 0===n)return r?r[i]:e[t];r?r.scrollTo(o?r.pageXOffset:n,o?n:r.pageYOffset):e[t]=n},t,e,arguments.length)}}),S.each(["top","left"],function(e,n){S.cssHooks[n]=Fe(y.pixelPosition,function(e,t){if(t)return t=We(e,n),Pe.test(t)?S(e).position()[n]+"px":t})} +),S.each({Height:"height",Width:"width"},function(a,s){S.each({padding:"inner"+a,content:s,"":"outer"+a},function(r,o){S.fn[o]=function(e,t){var n=arguments.length&&(r||"boolean"!=typeof e),i=r||(!0===e||!0===t?"margin":"border");return $(this,function(e,t,n){var r;return x(e)?0===o.indexOf("outer")?e["inner"+a]:e.document.documentElement["client"+a]:9===e.nodeType?(r=e.documentElement,Math.max(e.body["scroll"+a],r["scroll"+a],e.body["offset"+a],r["offset"+a],r["client"+a])):void 0===n?S.css(e,t,i):S.style(e,t,n,i)},s,n?e:void 0,n)}})}),S.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(e,t){S.fn[t]=function(e){return this.on(t,e)}}),S.fn.extend({bind:function(e,t,n){return this.on(e,null,t,n)},unbind:function(e,t){return this.off(e,null,t)},delegate:function(e,t,n,r){return this.on(t,e,n,r)},undelegate:function(e,t,n){return 1===arguments.length?this.off(e,"**"):this.off(t,e||"**",n)},hover:function(e,t){return this.mouseenter(e).mouseleave(t||e)}}),S.each( +"blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu".split(" "),function(e,n){S.fn[n]=function(e,t){return 0",options:{classes:{},disabled:!1,create:null},_createWidget:function(t,e){e=y(e||this.defaultElement||this)[0],this.element=y(e),this.uuid=i++,this.eventNamespace="."+this.widgetName+this.uuid,this.bindings=y(),this.hoverable=y(),this.focusable=y(),this.classesElementLookup={},e!==this&&(y.data(e,this.widgetFullName,this),this._on(!0,this.element,{remove:function(t +){t.target===e&&this.destroy()}}),this.document=y(e.style?e.ownerDocument:e.document||e),this.window=y(this.document[0].defaultView||this.document[0].parentWindow)),this.options=y.widget.extend({},this.options,this._getCreateOptions(),t),this._create(),this.options.disabled&&this._setOptionDisabled(this.options.disabled),this._trigger("create",null,this._getCreateEventData()),this._init()},_getCreateOptions:function(){return{}},_getCreateEventData:y.noop,_create:y.noop,_init:y.noop,destroy:function(){var i=this;this._destroy(),y.each(this.classesElementLookup,function(t,e){i._removeClass(e,t)}),this.element.off(this.eventNamespace).removeData(this.widgetFullName),this.widget().off(this.eventNamespace).removeAttr("aria-disabled"),this.bindings.off(this.eventNamespace)},_destroy:y.noop,widget:function(){return this.element},option:function(t,e){var i,s,n,o=t;if(0===arguments.length)return y.widget.extend({},this.options);if("string"==typeof t)if(o={},t=(i=t.split(".")).shift(),i.length){for(s=o[t +]=y.widget.extend({},this.options[t]),n=0;n
"),i=e.children()[0];return y("body").append(e),t=i.offsetWidth,e.css("overflow","scroll"),t===(i=i.offsetWidth)&&(i=e[0].clientWidth),e.remove(),s=t-i}, +getScrollInfo:function(t){var e=t.isWindow||t.isDocument?"":t.element.css("overflow-x"),i=t.isWindow||t.isDocument?"":t.element.css("overflow-y"),e="scroll"===e||"auto"===e&&t.widthx(D(s),D(n))?o.important="horizontal":o.important="vertical",p.using.call(this,t,o)}),h.offset(y.extend(l,{using:t}))})},y.ui.position={fit:{left:function(t,e){var i=e.within, +s=i.isWindow?i.scrollLeft:i.offset.left,n=i.width,o=t.left-e.collisionPosition.marginLeft,h=s-o,a=o+e.collisionWidth-n-s;e.collisionWidth>n?0n?0=this.options.distance},_mouseDelayMet:function(){return this.mouseDelayMet},_mouseStart:function(){},_mouseDrag:function(){},_mouseStop:function(){},_mouseCapture:function(){return!0}}),y.ui.plugin={add:function(t,e,i){var s,n=y.ui[t].prototype;for(s in i)n.plugins[s]=n.plugins[s]||[],n.plugins[s].push([e,i[s]])},call:function(t,e,i,s){var n,o=t.plugins[e];if(o&&(s||t.element[0].parentNode&&11!==t.element[0].parentNode.nodeType))for(n=0;n").css({overflow:"hidden",position:this.element.css("position"),width:this.element.outerWidth(),height:this.element.outerHeight(),top:this.element.css("top"),left:this.element.css("left")})), +this.element=this.element.parent().data("ui-resizable",this.element.resizable("instance")),this.elementIsWrapper=!0,t={marginTop:this.originalElement.css("marginTop"),marginRight:this.originalElement.css("marginRight"),marginBottom:this.originalElement.css("marginBottom"),marginLeft:this.originalElement.css("marginLeft")},this.element.css(t),this.originalElement.css("margin",0),this.originalResizeStyle=this.originalElement.css("resize"),this.originalElement.css("resize","none"),this._proportionallyResizeElements.push(this.originalElement.css({position:"static",zoom:1,display:"block"})),this.originalElement.css(t),this._proportionallyResize()),this._setupHandles(),e.autoHide&&y(this.element).on("mouseenter",function(){e.disabled||(i._removeClass("ui-resizable-autohide"),i._handles.show())}).on("mouseleave",function(){e.disabled||i.resizing||(i._addClass("ui-resizable-autohide"),i._handles.hide())}),this._mouseInit()},_destroy:function(){this._mouseDestroy(),this._addedHandles.remove();function t(t){y(t +).removeData("resizable").removeData("ui-resizable").off(".resizable")}var e;return this.elementIsWrapper&&(t(this.element),e=this.element,this.originalElement.css({position:e.css("position"),width:e.outerWidth(),height:e.outerHeight(),top:e.css("top"),left:e.css("left")}).insertAfter(e),e.remove()),this.originalElement.css("resize",this.originalResizeStyle),t(this.originalElement),this},_setOption:function(t,e){switch(this._super(t,e),t){case"handles":this._removeHandles(),this._setupHandles();break;case"aspectRatio":this._aspectRatio=!!e}},_setupHandles:function(){var t,e,i,s,n,o=this.options,h=this;if(this.handles=o.handles||(y(".ui-resizable-handle",this.element).length?{n:".ui-resizable-n",e:".ui-resizable-e",s:".ui-resizable-s",w:".ui-resizable-w",se:".ui-resizable-se",sw:".ui-resizable-sw",ne:".ui-resizable-ne",nw:".ui-resizable-nw"}:"e,s,se"),this._handles=y(),this._addedHandles=y(),this.handles.constructor===String)for("all"===this.handles&&(this.handles="n,e,s,w,se,sw,ne,nw"),i=this.handles.split( +","),this.handles={},e=0;e"),this._addClass(n,"ui-resizable-handle "+s),n.css({zIndex:o.zIndex}),this.handles[t]=".ui-resizable-"+t,this.element.children(this.handles[t]).length||(this.element.append(n),this._addedHandles=this._addedHandles.add(n));this._renderAxis=function(t){var e,i,s;for(e in t=t||this.element,this.handles)this.handles[e].constructor===String?this.handles[e]=this.element.children(this.handles[e]).first().show():(this.handles[e].jquery||this.handles[e].nodeType)&&(this.handles[e]=y(this.handles[e]),this._on(this.handles[e],{mousedown:h._mouseDown})),this.elementIsWrapper&&this.originalElement[0].nodeName.match(/^(textarea|input|select|button)$/i)&&(i=y(this.handles[e],this.element),s=/sw|ne|nw|se|n|s/.test(e)?i.outerHeight():i.outerWidth(),i=["padding",/ne|nw|n/.test(e)?"Top":/se|sw|s/.test(e)?"Bottom":/^e$/.test(e)?"Right":"Left"].join(""),t.css(i,s),this._proportionallyResize()),this._handles=this._handles.add( +this.handles[e])},this._renderAxis(this.element),this._handles=this._handles.add(this.element.find(".ui-resizable-handle")),this._handles.disableSelection(),this._handles.on("mouseover",function(){h.resizing||(this.className&&(n=this.className.match(/ui-resizable-(se|sw|ne|nw|n|e|s|w)/i)),h.axis=n&&n[1]?n[1]:"se")}),o.autoHide&&(this._handles.hide(),this._addClass("ui-resizable-autohide"))},_removeHandles:function(){this._addedHandles.remove()},_mouseCapture:function(t){var e,i,s=!1;for(e in this.handles)(i=y(this.handles[e])[0])!==t.target&&!y.contains(i,t.target)||(s=!0);return!this.options.disabled&&s},_mouseStart:function(t){var e,i,s=this.options,n=this.element;return this.resizing=!0,this._renderProxy(),e=this._num(this.helper.css("left")),i=this._num(this.helper.css("top")),s.containment&&(e+=y(s.containment).scrollLeft()||0,i+=y(s.containment).scrollTop()||0),this.offset=this.helper.offset(),this.position={left:e,top:i},this.size=this._helper?{width:this.helper.width(),height:this.helper.height()}:{ +width:n.width(),height:n.height()},this.originalSize=this._helper?{width:n.outerWidth(),height:n.outerHeight()}:{width:n.width(),height:n.height()},this.sizeDiff={width:n.outerWidth()-n.width(),height:n.outerHeight()-n.height()},this.originalPosition={left:e,top:i},this.originalMousePosition={left:t.pageX,top:t.pageY},this.aspectRatio="number"==typeof s.aspectRatio?s.aspectRatio:this.originalSize.width/this.originalSize.height||1,s=y(".ui-resizable-"+this.axis).css("cursor"),y("body").css("cursor","auto"===s?this.axis+"-resize":s),this._addClass("ui-resizable-resizing"),this._propagate("start",t),!0},_mouseDrag:function(t){var e=this.originalMousePosition,i=this.axis,s=t.pageX-e.left||0,e=t.pageY-e.top||0,i=this._change[i];return this._updatePrevProperties(),i&&(e=i.apply(this,[t,s,e]),this._updateVirtualBoundaries(t.shiftKey),(this._aspectRatio||t.shiftKey)&&(e=this._updateRatio(e,t)),e=this._respectSize(e,t),this._updateCache(e),this._propagate("resize",t),e=this._applyChanges(), +!this._helper&&this._proportionallyResizeElements.length&&this._proportionallyResize(),y.isEmptyObject(e)||(this._updatePrevProperties(),this._trigger("resize",t,this.ui()),this._applyChanges())),!1},_mouseStop:function(t){this.resizing=!1;var e,i,s,n=this.options,o=this;return this._helper&&(s=(e=(i=this._proportionallyResizeElements).length&&/textarea/i.test(i[0].nodeName))&&this._hasScroll(i[0],"left")?0:o.sizeDiff.height,i=e?0:o.sizeDiff.width,e={width:o.helper.width()-i,height:o.helper.height()-s},i=parseFloat(o.element.css("left"))+(o.position.left-o.originalPosition.left)||null,s=parseFloat(o.element.css("top"))+(o.position.top-o.originalPosition.top)||null,n.animate||this.element.css(y.extend(e,{top:s,left:i})),o.helper.height(o.size.height),o.helper.width(o.size.width),this._helper&&!n.animate&&this._proportionallyResize()),y("body").css("cursor","auto"),this._removeClass("ui-resizable-resizing"),this._propagate("stop",t),this._helper&&this.helper.remove(),!1},_updatePrevProperties:function(){ +this.prevPosition={top:this.position.top,left:this.position.left},this.prevSize={width:this.size.width,height:this.size.height}},_applyChanges:function(){var t={};return this.position.top!==this.prevPosition.top&&(t.top=this.position.top+"px"),this.position.left!==this.prevPosition.left&&(t.left=this.position.left+"px"),this.size.width!==this.prevSize.width&&(t.width=this.size.width+"px"),this.size.height!==this.prevSize.height&&(t.height=this.size.height+"px"),this.helper.css(t),t},_updateVirtualBoundaries:function(t){var e,i,s=this.options,n={minWidth:this._isNumber(s.minWidth)?s.minWidth:0,maxWidth:this._isNumber(s.maxWidth)?s.maxWidth:1/0,minHeight:this._isNumber(s.minHeight)?s.minHeight:0,maxHeight:this._isNumber(s.maxHeight)?s.maxHeight:1/0};(this._aspectRatio||t)&&(e=n.minHeight*this.aspectRatio,i=n.minWidth/this.aspectRatio,s=n.maxHeight*this.aspectRatio,t=n.maxWidth/this.aspectRatio,e>n.minWidth&&(n.minWidth=e),i>n.minHeight&&(n.minHeight=i),st.width,h=this._isNumber(t.height)&&e.minHeight&&e.minHeight>t.height,a=this.originalPosition.left+this.originalSize.width,r=this.originalPosition.top+this.originalSize.height +,l=/sw|nw|w/.test(i),i=/nw|ne|n/.test(i);return o&&(t.width=e.minWidth),h&&(t.height=e.minHeight),s&&(t.width=e.maxWidth),n&&(t.height=e.maxHeight),o&&l&&(t.left=a-e.minWidth),s&&l&&(t.left=a-e.maxWidth),h&&i&&(t.top=r-e.minHeight),n&&i&&(t.top=r-e.maxHeight),t.width||t.height||t.left||!t.top?t.width||t.height||t.top||!t.left||(t.left=null):t.top=null,t},_getPaddingPlusBorderDimensions:function(t){for(var e=0,i=[],s=[t.css("borderTopWidth"),t.css("borderRightWidth"),t.css("borderBottomWidth"),t.css("borderLeftWidth")],n=[t.css("paddingTop"),t.css("paddingRight"),t.css("paddingBottom"),t.css("paddingLeft")];e<4;e++)i[e]=parseFloat(s[e])||0,i[e]+=parseFloat(n[e])||0;return{height:i[0]+i[2],width:i[1]+i[3]}},_proportionallyResize:function(){if(this._proportionallyResizeElements.length)for(var t,e=0,i=this.helper||this.element;e").css({overflow:"hidden"}),this._addClass(this.helper,this._helper),this.helper.css({width:this.element.outerWidth(),height:this.element.outerHeight(),position:"absolute",left:this.elementOffset.left+"px",top:this.elementOffset.top+"px",zIndex:++e.zIndex}),this.helper.appendTo("body").disableSelection()):this.helper=this.element},_change:{e:function(t,e){return{width:this.originalSize.width+e}},w:function(t,e){var i=this.originalSize;return{left:this.originalPosition.left+e,width:i.width-e}},n:function(t,e,i){var s=this.originalSize;return{top:this.originalPosition.top+i,height:s.height-i}},s:function(t,e,i){return{height:this.originalSize.height+i}},se:function(t,e,i){return y.extend(this._change.s.apply(this,arguments),this._change.e.apply(this,[t,e,i]))},sw:function(t,e, +i){return y.extend(this._change.s.apply(this,arguments),this._change.w.apply(this,[t,e,i]))},ne:function(t,e,i){return y.extend(this._change.n.apply(this,arguments),this._change.e.apply(this,[t,e,i]))},nw:function(t,e,i){return y.extend(this._change.n.apply(this,arguments),this._change.w.apply(this,[t,e,i]))}},_propagate:function(t,e){y.ui.plugin.call(this,t,[e,this.ui()]),"resize"!==t&&this._trigger(t,e,this.ui())},plugins:{},ui:function(){return{originalElement:this.originalElement,element:this.element,helper:this.helper,position:this.position,size:this.size,originalSize:this.originalSize,originalPosition:this.originalPosition}}}),y.ui.plugin.add("resizable","animate",{stop:function(e){var i=y(this).resizable("instance"),t=i.options,s=i._proportionallyResizeElements,n=s.length&&/textarea/i.test(s[0].nodeName),o=n&&i._hasScroll(s[0],"left")?0:i.sizeDiff.height,h=n?0:i.sizeDiff.width,n={width:i.size.width-h,height:i.size.height-o},h=parseFloat(i.element.css("left"))+(i.position.left-i.originalPosition.left +)||null,o=parseFloat(i.element.css("top"))+(i.position.top-i.originalPosition.top)||null;i.element.animate(y.extend(n,o&&h?{top:o,left:h}:{}),{duration:t.animateDuration,easing:t.animateEasing,step:function(){var t={width:parseFloat(i.element.css("width")),height:parseFloat(i.element.css("height")),top:parseFloat(i.element.css("top")),left:parseFloat(i.element.css("left"))};s&&s.length&&y(s[0]).css({width:t.width,height:t.height}),i._updateCache(t),i._propagate("resize",e)}})}}),y.ui.plugin.add("resizable","containment",{start:function(){var i,s,n=y(this).resizable("instance"),t=n.options,e=n.element,o=t.containment,h=o instanceof y?o.get(0):/parent/.test(o)?e.parent().get(0):o;h&&(n.containerElement=y(h),/document/.test(o)||o===document?(n.containerOffset={left:0,top:0},n.containerPosition={left:0,top:0},n.parentData={element:y(document),left:0,top:0,width:y(document).width(),height:y(document).height()||document.body.parentNode.scrollHeight}):(i=y(h),s=[],y(["Top","Right","Left","Bottom"]).each(function(t,e +){s[t]=n._num(i.css("padding"+e))}),n.containerOffset=i.offset(),n.containerPosition=i.position(),n.containerSize={height:i.innerHeight()-s[3],width:i.innerWidth()-s[1]},t=n.containerOffset,e=n.containerSize.height,o=n.containerSize.width,o=n._hasScroll(h,"left")?h.scrollWidth:o,e=n._hasScroll(h)?h.scrollHeight:e,n.parentData={element:h,left:t.left,top:t.top,width:o,height:e}))},resize:function(t){var e=y(this).resizable("instance"),i=e.options,s=e.containerOffset,n=e.position,o=e._aspectRatio||t.shiftKey,h={top:0,left:0},a=e.containerElement,t=!0;a[0]!==document&&/static/.test(a.css("position"))&&(h=s),n.left<(e._helper?s.left:0)&&(e.size.width=e.size.width+(e._helper?e.position.left-s.left:e.position.left-h.left),o&&(e.size.height=e.size.width/e.aspectRatio,t=!1),e.position.left=i.helper?s.left:0),n.top<(e._helper?s.top:0)&&(e.size.height=e.size.height+(e._helper?e.position.top-s.top:e.position.top),o&&(e.size.width=e.size.height*e.aspectRatio,t=!1),e.position.top=e._helper?s.top:0), +i=e.containerElement.get(0)===e.element.parent().get(0),n=/relative|absolute/.test(e.containerElement.css("position")),i&&n?(e.offset.left=e.parentData.left+e.position.left,e.offset.top=e.parentData.top+e.position.top):(e.offset.left=e.element.offset().left,e.offset.top=e.element.offset().top),n=Math.abs(e.sizeDiff.width+(e._helper?e.offset.left-h.left:e.offset.left-s.left)),s=Math.abs(e.sizeDiff.height+(e._helper?e.offset.top-h.top:e.offset.top-s.top)),n+e.size.width>=e.parentData.width&&(e.size.width=e.parentData.width-n,o&&(e.size.height=e.size.width/e.aspectRatio,t=!1)),s+e.size.height>=e.parentData.height&&(e.size.height=e.parentData.height-s,o&&(e.size.width=e.size.height*e.aspectRatio,t=!1)),t||(e.position.left=e.prevPosition.left,e.position.top=e.prevPosition.top,e.size.width=e.prevSize.width,e.size.height=e.prevSize.height)},stop:function(){var t=y(this).resizable("instance"),e=t.options,i=t.containerOffset,s=t.containerPosition,n=t.containerElement,o=y(t.helper),h=o.offset(),a=o.outerWidth( +)-t.sizeDiff.width,o=o.outerHeight()-t.sizeDiff.height;t._helper&&!e.animate&&/relative/.test(n.css("position"))&&y(this).css({left:h.left-s.left-i.left,width:a,height:o}),t._helper&&!e.animate&&/static/.test(n.css("position"))&&y(this).css({left:h.left-s.left-i.left,width:a,height:o})}}),y.ui.plugin.add("resizable","alsoResize",{start:function(){var t=y(this).resizable("instance").options;y(t.alsoResize).each(function(){var t=y(this);t.data("ui-resizable-alsoresize",{width:parseFloat(t.width()),height:parseFloat(t.height()),left:parseFloat(t.css("left")),top:parseFloat(t.css("top"))})})},resize:function(t,i){var e=y(this).resizable("instance"),s=e.options,n=e.originalSize,o=e.originalPosition,h={height:e.size.height-n.height||0,width:e.size.width-n.width||0,top:e.position.top-o.top||0,left:e.position.left-o.left||0};y(s.alsoResize).each(function(){var t=y(this),s=y(this).data("ui-resizable-alsoresize"),n={},e=t.parents(i.originalElement[0]).length?["width","height"]:["width","height","top","left"];y.each(e, +function(t,e){var i=(s[e]||0)+(h[e]||0);i&&0<=i&&(n[e]=i||null)}),t.css(n)})},stop:function(){y(this).removeData("ui-resizable-alsoresize")}}),y.ui.plugin.add("resizable","ghost",{start:function(){var t=y(this).resizable("instance"),e=t.size;t.ghost=t.originalElement.clone(),t.ghost.css({opacity:.25,display:"block",position:"relative",height:e.height,width:e.width,margin:0,left:0,top:0}),t._addClass(t.ghost,"ui-resizable-ghost"),!1!==y.uiBackCompat&&"string"==typeof t.options.ghost&&t.ghost.addClass(this.options.ghost),t.ghost.appendTo(t.helper)},resize:function(){var t=y(this).resizable("instance");t.ghost&&t.ghost.css({position:"relative",height:t.size.height,width:t.size.width})},stop:function(){var t=y(this).resizable("instance");t.ghost&&t.helper&&t.helper.get(0).removeChild(t.ghost.get(0))}}),y.ui.plugin.add("resizable","grid",{resize:function(){var t,e=y(this).resizable("instance"),i=e.options,s=e.size,n=e.originalSize,o=e.originalPosition,h=e.axis,a="number"==typeof i.grid?[i.grid,i.grid]:i.grid,r=a[0 +]||1,l=a[1]||1,u=Math.round((s.width-n.width)/r)*r,p=Math.round((s.height-n.height)/l)*l,d=n.width+u,c=n.height+p,f=i.maxWidth&&i.maxWidthd,s=i.minHeight&&i.minHeight>c;i.grid=a,m&&(d+=r),s&&(c+=l),f&&(d-=r),g&&(c-=l),/^(se|s|e)$/.test(h)?(e.size.width=d,e.size.height=c):/^(ne)$/.test(h)?(e.size.width=d,e.size.height=c,e.position.top=o.top-p):/^(sw)$/.test(h)?(e.size.width=d,e.size.height=c,e.position.left=o.left-u):((c-l<=0||d-r<=0)&&(t=e._getPaddingPlusBorderDimensions(this)),0=f[g]?0:Math.min(f[g],n));!a&&1-1){ +targetElements.on(evt+EVENT_NAMESPACE,function elementToggle(event){$.powerTip.toggle(this,event)})}else{targetElements.on(evt+EVENT_NAMESPACE,function elementOpen(event){$.powerTip.show(this,event)})}});$.each(options.closeEvents,function(idx,evt){if($.inArray(evt,options.openEvents)<0){targetElements.on(evt+EVENT_NAMESPACE,function elementClose(event){$.powerTip.hide(this,!isMouseEvent(event))})}});targetElements.on("keydown"+EVENT_NAMESPACE,function elementKeyDown(event){if(event.keyCode===27){$.powerTip.hide(this,true)}})}return targetElements};$.fn.powerTip.defaults={fadeInTime:200,fadeOutTime:100,followMouse:false,popupId:"powerTip",popupClass:null,intentSensitivity:7,intentPollInterval:100,closeDelay:100,placement:"n",smartPlacement:false,offset:10,mouseOnToPopup:false,manual:false,openEvents:["mouseenter","focus"],closeEvents:["mouseleave","blur"]};$.fn.powerTip.smartPlacementLists={n:["n","ne","nw","s"],e:["e","ne","se","w","nw","sw","n","s","e"],s:["s","se","sw","n"],w:["w","nw","sw","e","ne","se", +"n","s","w"],nw:["nw","w","sw","n","s","se","nw"],ne:["ne","e","se","n","s","sw","ne"],sw:["sw","w","nw","s","n","ne","sw"],se:["se","e","ne","s","n","nw","se"],"nw-alt":["nw-alt","n","ne-alt","sw-alt","s","se-alt","w","e"],"ne-alt":["ne-alt","n","nw-alt","se-alt","s","sw-alt","e","w"],"sw-alt":["sw-alt","s","se-alt","nw-alt","n","ne-alt","w","e"],"se-alt":["se-alt","s","sw-alt","ne-alt","n","nw-alt","e","w"]};$.powerTip={show:function apiShowTip(element,event){if(isMouseEvent(event)){trackMouse(event);session.previousX=event.pageX;session.previousY=event.pageY;$(element).data(DATA_DISPLAYCONTROLLER).show()}else{$(element).first().data(DATA_DISPLAYCONTROLLER).show(true,true)}return element},reposition:function apiResetPosition(element){$(element).first().data(DATA_DISPLAYCONTROLLER).resetPosition();return element},hide:function apiCloseTip(element,immediate){var displayController;immediate=element?immediate:true;if(element){displayController=$(element).first().data(DATA_DISPLAYCONTROLLER)}else if( +session.activeHover){displayController=session.activeHover.data(DATA_DISPLAYCONTROLLER)}if(displayController){displayController.hide(immediate)}return element},toggle:function apiToggle(element,event){if(session.activeHover&&session.activeHover.is(element)){$.powerTip.hide(element,!isMouseEvent(event))}else{$.powerTip.show(element,event)}return element}};$.powerTip.showTip=$.powerTip.show;$.powerTip.closeTip=$.powerTip.hide;function CSSCoordinates(){var me=this;me.top="auto";me.left="auto";me.right="auto";me.bottom="auto";me.set=function(property,value){if($.isNumeric(value)){me[property]=Math.round(value)}}}function DisplayController(element,options,tipController){var hoverTimer=null,myCloseDelay=null;function openTooltip(immediate,forceOpen){cancelTimer();if(!element.data(DATA_HASACTIVEHOVER)){if(!immediate){session.tipOpenImminent=true;hoverTimer=setTimeout(function intentDelay(){hoverTimer=null;checkForIntent()},options.intentPollInterval)}else{if(forceOpen){element.data(DATA_FORCEDOPEN,true)} +closeAnyDelayed();tipController.showTip(element)}}else{cancelClose()}}function closeTooltip(disableDelay){if(myCloseDelay){myCloseDelay=session.closeDelayTimeout=clearTimeout(myCloseDelay);session.delayInProgress=false}cancelTimer();session.tipOpenImminent=false;if(element.data(DATA_HASACTIVEHOVER)){element.data(DATA_FORCEDOPEN,false);if(!disableDelay){session.delayInProgress=true;session.closeDelayTimeout=setTimeout(function closeDelay(){session.closeDelayTimeout=null;tipController.hideTip(element);session.delayInProgress=false;myCloseDelay=null},options.closeDelay);myCloseDelay=session.closeDelayTimeout}else{tipController.hideTip(element)}}}function checkForIntent(){var xDifference=Math.abs(session.previousX-session.currentX),yDifference=Math.abs(session.previousY-session.currentY),totalDifference=xDifference+yDifference;if(totalDifference",{id:options.popupId});if($body.length===0){$body=$("body")}$body.append(tipElement);session.tooltips=session.tooltips?session.tooltips.add(tipElement):tipElement}if(options.followMouse){if(!tipElement.data(DATA_HASMOUSEMOVE)){$document.on("mousemove"+EVENT_NAMESPACE,positionTipOnCursor);$window.on("scroll"+EVENT_NAMESPACE,positionTipOnCursor);tipElement.data(DATA_HASMOUSEMOVE,true)}}function beginShowTip(element){element.data(DATA_HASACTIVEHOVER,true);tipElement.queue(function queueTipInit(next){showTip(element);next()})}function showTip(element){var tipContent;if(!element.data(DATA_HASACTIVEHOVER)){return}if( +session.isTipOpen){if(!session.isClosing){hideTip(session.activeHover)}tipElement.delay(100).queue(function queueTipAgain(next){showTip(element);next()});return}element.trigger("powerTipPreRender");tipContent=getTooltipContent(element);if(tipContent){tipElement.empty().append(tipContent)}else{return}element.trigger("powerTipRender");session.activeHover=element;session.isTipOpen=true;tipElement.data(DATA_MOUSEONTOTIP,options.mouseOnToPopup);tipElement.addClass(options.popupClass);if(!options.followMouse||element.data(DATA_FORCEDOPEN)){positionTipOnElement(element);session.isFixedTipOpen=true}else{positionTipOnCursor()}if(!element.data(DATA_FORCEDOPEN)&&!options.followMouse){$document.on("click"+EVENT_NAMESPACE,function documentClick(event){var target=event.target;if(target!==element[0]){if(options.mouseOnToPopup){if(target!==tipElement[0]&&!$.contains(tipElement[0],target)){$.powerTip.hide()}}else{$.powerTip.hide()}}})}if(options.mouseOnToPopup&&!options.manual){tipElement.on("mouseenter"+EVENT_NAMESPACE, +function tipMouseEnter(){if(session.activeHover){session.activeHover.data(DATA_DISPLAYCONTROLLER).cancel()}});tipElement.on("mouseleave"+EVENT_NAMESPACE,function tipMouseLeave(){if(session.activeHover){session.activeHover.data(DATA_DISPLAYCONTROLLER).hide()}})}tipElement.fadeIn(options.fadeInTime,function fadeInCallback(){if(!session.desyncTimeout){session.desyncTimeout=setInterval(closeDesyncedTip,500)}element.trigger("powerTipOpen")})}function hideTip(element){session.isClosing=true;session.isTipOpen=false;session.desyncTimeout=clearInterval(session.desyncTimeout);element.data(DATA_HASACTIVEHOVER,false);element.data(DATA_FORCEDOPEN,false);$document.off("click"+EVENT_NAMESPACE);tipElement.off(EVENT_NAMESPACE);tipElement.fadeOut(options.fadeOutTime,function fadeOutCallback(){var coords=new CSSCoordinates;session.activeHover=null;session.isClosing=false;session.isFixedTipOpen=false;tipElement.removeClass();coords.set("top",session.currentY+options.offset);coords.set("left",session.currentX+options.offset); +tipElement.css(coords);element.trigger("powerTipClose")})}function positionTipOnCursor(){var tipWidth,tipHeight,coords,collisions,collisionCount;if(!session.isFixedTipOpen&&(session.isTipOpen||session.tipOpenImminent&&tipElement.data(DATA_HASMOUSEMOVE))){tipWidth=tipElement.outerWidth();tipHeight=tipElement.outerHeight();coords=new CSSCoordinates;coords.set("top",session.currentY+options.offset);coords.set("left",session.currentX+options.offset);collisions=getViewportCollisions(coords,tipWidth,tipHeight);if(collisions!==Collision.none){collisionCount=countFlags(collisions);if(collisionCount===1){if(collisions===Collision.right){coords.set("left",session.scrollLeft+session.windowWidth-tipWidth)}else if(collisions===Collision.bottom){coords.set("top",session.scrollTop+session.windowHeight-tipHeight)}}else{coords.set("left",session.currentX-tipWidth-options.offset);coords.set("top",session.currentY-tipHeight-options.offset)}}tipElement.css(coords)}}function positionTipOnElement(element){var priorityList, +finalPlacement;if(options.smartPlacement||options.followMouse&&element.data(DATA_FORCEDOPEN)){priorityList=$.fn.powerTip.smartPlacementLists[options.placement];$.each(priorityList,function(idx,pos){var collisions=getViewportCollisions(placeTooltip(element,pos),tipElement.outerWidth(),tipElement.outerHeight());finalPlacement=pos;return collisions!==Collision.none})}else{placeTooltip(element,options.placement);finalPlacement=options.placement}tipElement.removeClass("w nw sw e ne se n s w se-alt sw-alt ne-alt nw-alt");tipElement.addClass(finalPlacement)}function placeTooltip(element,placement){var iterationCount=0,tipWidth,tipHeight,coords=new CSSCoordinates;coords.set("top",0);coords.set("left",0);tipElement.css(coords);do{tipWidth=tipElement.outerWidth();tipHeight=tipElement.outerHeight();coords=placementCalculator.compute(element,placement,tipWidth,tipHeight,options.offset);tipElement.css(coords)}while(++iterationCount<=5&&(tipWidth!==tipElement.outerWidth()||tipHeight!==tipElement.outerHeight())); +return coords}function closeDesyncedTip(){var isDesynced=false,hasDesyncableCloseEvent=$.grep(["mouseleave","mouseout","blur","focusout"],function(eventType){return $.inArray(eventType,options.closeEvents)!==-1}).length>0;if(session.isTipOpen&&!session.isClosing&&!session.delayInProgress&&hasDesyncableCloseEvent){if(session.activeHover.data(DATA_HASACTIVEHOVER)===false||session.activeHover.is(":disabled")){isDesynced=true}else if(!isMouseOver(session.activeHover)&&!session.activeHover.is(":focus")&&!session.activeHover.data(DATA_FORCEDOPEN)){if(tipElement.data(DATA_MOUSEONTOTIP)){if(!isMouseOver(tipElement)){isDesynced=true}}else{isDesynced=true}}if(isDesynced){hideTip(session.activeHover)}}}this.showTip=beginShowTip;this.hideTip=hideTip;this.resetPosition=positionTipOnElement}function isSvgElement(element){return Boolean(window.SVGElement&&element[0]instanceof SVGElement)}function isMouseEvent(event){return Boolean(event&&$.inArray(event.type,MOUSE_EVENTS)>-1&&typeof event.pageX==="number")} +function initTracking(){if(!session.mouseTrackingActive){session.mouseTrackingActive=true;getViewportDimensions();$(getViewportDimensions);$document.on("mousemove"+EVENT_NAMESPACE,trackMouse);$window.on("resize"+EVENT_NAMESPACE,trackResize);$window.on("scroll"+EVENT_NAMESPACE,trackScroll)}}function getViewportDimensions(){session.scrollLeft=$window.scrollLeft();session.scrollTop=$window.scrollTop();session.windowWidth=$window.width();session.windowHeight=$window.height()}function trackResize(){session.windowWidth=$window.width();session.windowHeight=$window.height()}function trackScroll(){var x=$window.scrollLeft(),y=$window.scrollTop();if(x!==session.scrollLeft){session.currentX+=x-session.scrollLeft;session.scrollLeft=x}if(y!==session.scrollTop){session.currentY+=y-session.scrollTop;session.scrollTop=y}}function trackMouse(event){session.currentX=event.pageX;session.currentY=event.pageY}function isMouseOver(element){var elementPosition=element.offset(),elementBox=element[0].getBoundingClientRect(), +elementWidth=elementBox.right-elementBox.left,elementHeight=elementBox.bottom-elementBox.top;return session.currentX>=elementPosition.left&&session.currentX<=elementPosition.left+elementWidth&&session.currentY>=elementPosition.top&&session.currentY<=elementPosition.top+elementHeight}function getTooltipContent(element){var tipText=element.data(DATA_POWERTIP),tipObject=element.data(DATA_POWERTIPJQ),tipTarget=element.data(DATA_POWERTIPTARGET),targetElement,content;if(tipText){if($.isFunction(tipText)){tipText=tipText.call(element[0])}content=tipText}else if(tipObject){if($.isFunction(tipObject)){tipObject=tipObject.call(element[0])}if(tipObject.length>0){content=tipObject.clone(true,true)}}else if(tipTarget){targetElement=$("#"+tipTarget);if(targetElement.length>0){content=targetElement.html()}}return content}function getViewportCollisions(coords,elementWidth,elementHeight){var viewportTop=session.scrollTop,viewportLeft=session.scrollLeft,viewportBottom=viewportTop+session.windowHeight, +viewportRight=viewportLeft+session.windowWidth,collisions=Collision.none;if(coords.topviewportBottom||Math.abs(coords.bottom-session.windowHeight)>viewportBottom){collisions|=Collision.bottom}if(coords.leftviewportRight){collisions|=Collision.left}if(coords.left+elementWidth>viewportRight||coords.right1)){a.preventDefault();var c=a.originalEvent.changedTouches[0],d=document.createEvent("MouseEvents");d.initMouseEvent(b,!0,!0,window,1,c.screenX,c.screenY,c.clientX,c.clientY,!1,!1,!1,!1,0,null),a.target.dispatchEvent(d)}}if(a.support.touch="ontouchend"in document,a.support.touch){var e,b=a.ui.mouse.prototype,c=b._mouseInit,d=b._mouseDestroy;b._touchStart=function(a){var b=this;!e&&b._mouseCapture(a.originalEvent.changedTouches[0])&&(e=!0,b._touchMoved=!1,f(a,"mouseover"),f(a,"mousemove"),f(a,"mousedown"))},b._touchMove=function(a){e&&(this._touchMoved=!0,f(a,"mousemove"))},b._touchEnd=function(a){e&&(f(a,"mouseup"),f(a,"mouseout"),this._touchMoved||f(a,"click"),e=!1)},b._mouseInit=function(){var b=this;b.element.bind({touchstart:a.proxy(b,"_touchStart"),touchmove:a.proxy(b,"_touchMove"),touchend:a.proxy(b,"_touchEnd")}),c.call(b)},b._mouseDestroy=function(){var b=this;b.element.unbind({touchstart:a.proxy(b,"_touchStart"),touchmove:a.proxy(b, +"_touchMove"),touchend:a.proxy(b,"_touchEnd")}),d.call(b)}}}(jQuery); +/*! SmartMenus jQuery Plugin - v1.1.0 - September 17, 2017 + * http://www.smartmenus.org/ + * Copyright Vasil Dinkov, Vadikom Web Ltd. http://vadikom.com; Licensed MIT */(function(t){"function"==typeof define&&define.amd?define(["jquery"],t):"object"==typeof module&&"object"==typeof module.exports?module.exports=t(require("jquery")):t(jQuery)})(function($){function initMouseDetection(t){var e=".smartmenus_mouse";if(mouseDetectionEnabled||t)mouseDetectionEnabled&&t&&($(document).off(e),mouseDetectionEnabled=!1);else{var i=!0,s=null,o={mousemove:function(t){var e={x:t.pageX,y:t.pageY,timeStamp:(new Date).getTime()};if(s){var o=Math.abs(s.x-e.x),a=Math.abs(s.y-e.y);if((o>0||a>0)&&2>=o&&2>=a&&300>=e.timeStamp-s.timeStamp&&(mouse=!0,i)){var n=$(t.target).closest("a");n.is("a")&&$.each(menuTrees,function(){return $.contains(this.$root[0],n[0])?(this.itemEnter({currentTarget:n[0]}),!1):void 0}),i=!1}}s=e}};o[touchEvents?"touchstart":"pointerover pointermove pointerout MSPointerOver MSPointerMove MSPointerOut"]=function(t){isTouchEvent(t.originalEvent)&&(mouse=!1)},$(document).on(getEventsNS(o,e)), +mouseDetectionEnabled=!0}}function isTouchEvent(t){return!/^(4|mouse)$/.test(t.pointerType)}function getEventsNS(t,e){e||(e="");var i={};for(var s in t)i[s.split(" ").join(e+" ")+e]=t[s];return i}var menuTrees=[],mouse=!1,touchEvents="ontouchstart"in window,mouseDetectionEnabled=!1,requestAnimationFrame=window.requestAnimationFrame||function(t){return setTimeout(t,1e3/60)},cancelAnimationFrame=window.cancelAnimationFrame||function(t){clearTimeout(t)},canAnimate=!!$.fn.animate;return $.SmartMenus=function(t,e){this.$root=$(t),this.opts=e,this.rootId="",this.accessIdPrefix="",this.$subArrow=null,this.activatedItems=[],this.visibleSubMenus=[],this.showTimeout=0,this.hideTimeout=0,this.scrollTimeout=0,this.clickActivated=!1,this.focusActivated=!1,this.zIndexInc=0,this.idInc=0,this.$firstLink=null,this.$firstSub=null,this.disabled=!1,this.$disableOverlay=null,this.$touchScrollingSub=null,this.cssTransforms3d="perspective"in t.style||"webkitPerspective"in t.style,this.wasCollapsible=!1,this.init()},$.extend( +$.SmartMenus,{hideAll:function(){$.each(menuTrees,function(){this.menuHideAll()})},destroy:function(){for(;menuTrees.length;)menuTrees[0].destroy();initMouseDetection(!0)},prototype:{init:function(t){var e=this;if(!t){menuTrees.push(this),this.rootId=((new Date).getTime()+Math.random()+"").replace(/\D/g,""),this.accessIdPrefix="sm-"+this.rootId+"-",this.$root.hasClass("sm-rtl")&&(this.opts.rightToLeftSubMenus=!0);var i=".smartmenus";this.$root.data("smartmenus",this).attr("data-smartmenus-id",this.rootId).dataSM("level",1).on(getEventsNS({"mouseover focusin":$.proxy(this.rootOver,this),"mouseout focusout":$.proxy(this.rootOut,this),keydown:$.proxy(this.rootKeyDown,this)},i)).on(getEventsNS({mouseenter:$.proxy(this.itemEnter,this),mouseleave:$.proxy(this.itemLeave,this),mousedown:$.proxy(this.itemDown,this),focus:$.proxy(this.itemFocus,this),blur:$.proxy(this.itemBlur,this),click:$.proxy(this.itemClick,this)},i),"a"),i+=this.rootId,this.opts.hideOnClick&&$(document).on(getEventsNS({touchstart:$.proxy( +this.docTouchStart,this),touchmove:$.proxy(this.docTouchMove,this),touchend:$.proxy(this.docTouchEnd,this),click:$.proxy(this.docClick,this)},i)),$(window).on(getEventsNS({"resize orientationchange":$.proxy(this.winResize,this)},i)),this.opts.subIndicators&&(this.$subArrow=$("").addClass("sub-arrow"),this.opts.subIndicatorsText&&this.$subArrow.html(this.opts.subIndicatorsText)),initMouseDetection()}if(this.$firstSub=this.$root.find("ul").each(function(){e.menuInit($(this))}).eq(0),this.$firstLink=this.$root.find("a").eq(0),this.opts.markCurrentItem){var s=/(index|default)\.[^#\?\/]*/i,o=/#.*/,a=window.location.href.replace(s,""),n=a.replace(o,"");this.$root.find("a").each(function(){var t=this.href.replace(s,""),i=$(this);(t==a||t==n)&&(i.addClass("current"),e.opts.markCurrentTree&&i.parentsUntil("[data-smartmenus-id]","ul").each(function(){$(this).dataSM("parent-a").addClass("current")}))})}this.wasCollapsible=this.isCollapsible()},destroy:function(t){if(!t){var e=".smartmenus";this.$root.removeData( +"smartmenus").removeAttr("data-smartmenus-id").removeDataSM("level").off(e),e+=this.rootId,$(document).off(e),$(window).off(e),this.opts.subIndicators&&(this.$subArrow=null)}this.menuHideAll();var i=this;this.$root.find("ul").each(function(){var t=$(this);t.dataSM("scroll-arrows")&&t.dataSM("scroll-arrows").remove(),t.dataSM("shown-before")&&((i.opts.subMenusMinWidth||i.opts.subMenusMaxWidth)&&t.css({width:"",minWidth:"",maxWidth:""}).removeClass("sm-nowrap"),t.dataSM("scroll-arrows")&&t.dataSM("scroll-arrows").remove(),t.css({zIndex:"",top:"",left:"",marginLeft:"",marginTop:"",display:""})),0==(t.attr("id")||"").indexOf(i.accessIdPrefix)&&t.removeAttr("id")}).removeDataSM("in-mega").removeDataSM("shown-before").removeDataSM("scroll-arrows").removeDataSM("parent-a").removeDataSM("level").removeDataSM("beforefirstshowfired").removeAttr("role").removeAttr("aria-hidden").removeAttr("aria-labelledby").removeAttr("aria-expanded"),this.$root.find("a.has-submenu").each(function(){var t=$(this);0==t.attr("id" +).indexOf(i.accessIdPrefix)&&t.removeAttr("id")}).removeClass("has-submenu").removeDataSM("sub").removeAttr("aria-haspopup").removeAttr("aria-controls").removeAttr("aria-expanded").closest("li").removeDataSM("sub"),this.opts.subIndicators&&this.$root.find("span.sub-arrow").remove(),this.opts.markCurrentItem&&this.$root.find("a.current").removeClass("current"),t||(this.$root=null,this.$firstLink=null,this.$firstSub=null,this.$disableOverlay&&(this.$disableOverlay.remove(),this.$disableOverlay=null),menuTrees.splice($.inArray(this,menuTrees),1))},disable:function(t){if(!this.disabled){if(this.menuHideAll(),!t&&!this.opts.isPopup&&this.$root.is(":visible")){var e=this.$root.offset();this.$disableOverlay=$('
').css({position:"absolute",top:e.top,left:e.left,width:this.$root.outerWidth(),height:this.$root.outerHeight(),zIndex:this.getStartZIndex(!0),opacity:0}).appendTo(document.body)}this.disabled=!0}},docClick:function(t){return this.$touchScrollingSub?( +this.$touchScrollingSub=null,void 0):((this.visibleSubMenus.length&&!$.contains(this.$root[0],t.target)||$(t.target).closest("a").length)&&this.menuHideAll(),void 0)},docTouchEnd:function(){if(this.lastTouch){if(!(!this.visibleSubMenus.length||void 0!==this.lastTouch.x2&&this.lastTouch.x1!=this.lastTouch.x2||void 0!==this.lastTouch.y2&&this.lastTouch.y1!=this.lastTouch.y2||this.lastTouch.target&&$.contains(this.$root[0],this.lastTouch.target))){this.hideTimeout&&(clearTimeout(this.hideTimeout),this.hideTimeout=0);var t=this;this.hideTimeout=setTimeout(function(){t.menuHideAll()},350)}this.lastTouch=null}},docTouchMove:function(t){if(this.lastTouch){var e=t.originalEvent.touches[0];this.lastTouch.x2=e.pageX,this.lastTouch.y2=e.pageY}},docTouchStart:function(t){var e=t.originalEvent.touches[0];this.lastTouch={x1:e.pageX,y1:e.pageY,target:e.target}},enable:function(){this.disabled&&(this.$disableOverlay&&(this.$disableOverlay.remove(),this.$disableOverlay=null),this.disabled=!1)},getClosestMenu:function(t){for( +var e=$(t).closest("ul");e.dataSM("in-mega");)e=e.parent().closest("ul");return e[0]||null},getHeight:function(t){return this.getOffset(t,!0)},getOffset:function(t,e){var i;"none"==t.css("display")&&(i={position:t[0].style.position,visibility:t[0].style.visibility},t.css({position:"absolute",visibility:"hidden"}).show());var s=t[0].getBoundingClientRect&&t[0].getBoundingClientRect(),o=s&&(e?s.height||s.bottom-s.top:s.width||s.right-s.left);return o||0===o||(o=e?t[0].offsetHeight:t[0].offsetWidth),i&&t.hide().css(i),o},getStartZIndex:function(t){var e=parseInt(this[t?"$root":"$firstSub"].css("z-index"));return!t&&isNaN(e)&&(e=parseInt(this.$root.css("z-index"))),isNaN(e)?1:e},getTouchPoint:function(t){return t.touches&&t.touches[0]||t.changedTouches&&t.changedTouches[0]||t},getViewport:function(t){var e=t?"Height":"Width",i=document.documentElement["client"+e],s=window["inner"+e];return s&&(i=Math.min(i,s)),i},getViewportHeight:function(){return this.getViewport(!0)},getViewportWidth:function(){ +return this.getViewport()},getWidth:function(t){return this.getOffset(t)},handleEvents:function(){return!this.disabled&&this.isCSSOn()},handleItemEvents:function(t){return this.handleEvents()&&!this.isLinkInMegaMenu(t)},isCollapsible:function(){return"static"==this.$firstSub.css("position")},isCSSOn:function(){return"inline"!=this.$firstLink.css("display")},isFixed:function(){var t="fixed"==this.$root.css("position");return t||this.$root.parentsUntil("body").each(function(){return"fixed"==$(this).css("position")?(t=!0,!1):void 0}),t},isLinkInMegaMenu:function(t){return $(this.getClosestMenu(t[0])).hasClass("mega-menu")},isTouchMode:function(){return!mouse||this.opts.noMouseOver||this.isCollapsible()},itemActivate:function(t,e){var i=t.closest("ul"),s=i.dataSM("level");if(s>1&&(!this.activatedItems[s-2]||this.activatedItems[s-2][0]!=i.dataSM("parent-a")[0])){var o=this;$(i.parentsUntil("[data-smartmenus-id]","ul").get().reverse()).add(i).each(function(){o.itemActivate($(this).dataSM("parent-a"))})}if(( +!this.isCollapsible()||e)&&this.menuHideSubMenus(this.activatedItems[s-1]&&this.activatedItems[s-1][0]==t[0]?s:s-1),this.activatedItems[s-1]=t,this.$root.triggerHandler("activate.smapi",t[0])!==!1){var a=t.dataSM("sub");a&&(this.isTouchMode()||!this.opts.showOnClick||this.clickActivated)&&this.menuShow(a)}},itemBlur:function(t){var e=$(t.currentTarget);this.handleItemEvents(e)&&this.$root.triggerHandler("blur.smapi",e[0])},itemClick:function(t){var e=$(t.currentTarget);if(this.handleItemEvents(e)){if(this.$touchScrollingSub&&this.$touchScrollingSub[0]==e.closest("ul")[0])return this.$touchScrollingSub=null,t.stopPropagation(),!1;if(this.$root.triggerHandler("click.smapi",e[0])===!1)return!1;var i=$(t.target).is(".sub-arrow"),s=e.dataSM("sub"),o=s?2==s.dataSM("level"):!1,a=this.isCollapsible(),n=/toggle$/.test(this.opts.collapsibleBehavior),r=/link$/.test(this.opts.collapsibleBehavior),h=/^accordion/.test(this.opts.collapsibleBehavior);if(s&&!s.is(":visible")){if((!r||!a||i)&&(this.opts.showOnClick&&o&&( +this.clickActivated=!0),this.itemActivate(e,h),s.is(":visible")))return this.focusActivated=!0,!1}else if(a&&(n||i))return this.itemActivate(e,h),this.menuHide(s),n&&(this.focusActivated=!1),!1;return this.opts.showOnClick&&o||e.hasClass("disabled")||this.$root.triggerHandler("select.smapi",e[0])===!1?!1:void 0}},itemDown:function(t){var e=$(t.currentTarget);this.handleItemEvents(e)&&e.dataSM("mousedown",!0)},itemEnter:function(t){var e=$(t.currentTarget);if(this.handleItemEvents(e)){if(!this.isTouchMode()){this.showTimeout&&(clearTimeout(this.showTimeout),this.showTimeout=0);var i=this;this.showTimeout=setTimeout(function(){i.itemActivate(e)},this.opts.showOnClick&&1==e.closest("ul").dataSM("level")?1:this.opts.showTimeout)}this.$root.triggerHandler("mouseenter.smapi",e[0])}},itemFocus:function(t){var e=$(t.currentTarget);this.handleItemEvents(e)&&(!this.focusActivated||this.isTouchMode()&&e.dataSM("mousedown")||this.activatedItems.length&&this.activatedItems[this.activatedItems.length-1][0]==e[0 +]||this.itemActivate(e,!0),this.$root.triggerHandler("focus.smapi",e[0]))},itemLeave:function(t){var e=$(t.currentTarget);this.handleItemEvents(e)&&(this.isTouchMode()||(e[0].blur(),this.showTimeout&&(clearTimeout(this.showTimeout),this.showTimeout=0)),e.removeDataSM("mousedown"),this.$root.triggerHandler("mouseleave.smapi",e[0]))},menuHide:function(t){if(this.$root.triggerHandler("beforehide.smapi",t[0])!==!1&&(canAnimate&&t.stop(!0,!0),"none"!=t.css("display"))){var e=function(){t.css("z-index","")};this.isCollapsible()?canAnimate&&this.opts.collapsibleHideFunction?this.opts.collapsibleHideFunction.call(this,t,e):t.hide(this.opts.collapsibleHideDuration,e):canAnimate&&this.opts.hideFunction?this.opts.hideFunction.call(this,t,e):t.hide(this.opts.hideDuration,e),t.dataSM("scroll")&&(this.menuScrollStop(t),t.css({"touch-action":"","-ms-touch-action":"","-webkit-transform":"",transform:""}).off(".smartmenus_scroll").removeDataSM("scroll").dataSM("scroll-arrows").hide()),t.dataSM("parent-a").removeClass( +"highlighted").attr("aria-expanded","false"),t.attr({"aria-expanded":"false","aria-hidden":"true"});var i=t.dataSM("level");this.activatedItems.splice(i-1,1),this.visibleSubMenus.splice($.inArray(t,this.visibleSubMenus),1),this.$root.triggerHandler("hide.smapi",t[0])}},menuHideAll:function(){this.showTimeout&&(clearTimeout(this.showTimeout),this.showTimeout=0);for(var t=this.opts.isPopup?1:0,e=this.visibleSubMenus.length-1;e>=t;e--)this.menuHide(this.visibleSubMenus[e]);this.opts.isPopup&&(canAnimate&&this.$root.stop(!0,!0),this.$root.is(":visible")&&(canAnimate&&this.opts.hideFunction?this.opts.hideFunction.call(this,this.$root):this.$root.hide(this.opts.hideDuration))),this.activatedItems=[],this.visibleSubMenus=[],this.clickActivated=!1,this.focusActivated=!1,this.zIndexInc=0,this.$root.triggerHandler("hideAll.smapi")},menuHideSubMenus:function(t){for(var e=this.activatedItems.length-1;e>=t;e--){var i=this.activatedItems[e].dataSM("sub");i&&this.menuHide(i)}},menuInit:function(t){if(!t.dataSM("in-mega")){ +t.hasClass("mega-menu")&&t.find("ul").dataSM("in-mega",!0);for(var e=2,i=t[0];(i=i.parentNode.parentNode)!=this.$root[0];)e++;var s=t.prevAll("a").eq(-1);s.length||(s=t.prevAll().find("a").eq(-1)),s.addClass("has-submenu").dataSM("sub",t),t.dataSM("parent-a",s).dataSM("level",e).parent().dataSM("sub",t);var o=s.attr("id")||this.accessIdPrefix+ ++this.idInc,a=t.attr("id")||this.accessIdPrefix+ ++this.idInc;s.attr({id:o,"aria-haspopup":"true","aria-controls":a,"aria-expanded":"false"}),t.attr({id:a,role:"group","aria-hidden":"true","aria-labelledby":o,"aria-expanded":"false"}),this.opts.subIndicators&&s[this.opts.subIndicatorsPos](this.$subArrow.clone())}},menuPosition:function(t){var e,i,s=t.dataSM("parent-a"),o=s.closest("li"),a=o.parent(),n=t.dataSM("level"),r=this.getWidth(t),h=this.getHeight(t),u=s.offset(),l=u.left,c=u.top,d=this.getWidth(s),m=this.getHeight(s),p=$(window),f=p.scrollLeft(),v=p.scrollTop(),b=this.getViewportWidth(),S=this.getViewportHeight(),g=a.parent().is("[data-sm-horizontal-sub]" +)||2==n&&!a.hasClass("sm-vertical"),M=this.opts.rightToLeftSubMenus&&!o.is("[data-sm-reverse]")||!this.opts.rightToLeftSubMenus&&o.is("[data-sm-reverse]"),w=2==n?this.opts.mainMenuSubOffsetX:this.opts.subMenusSubOffsetX,T=2==n?this.opts.mainMenuSubOffsetY:this.opts.subMenusSubOffsetY;if(g?(e=M?d-r-w:w,i=this.opts.bottomToTopSubMenus?-h-T:m+T):(e=M?w-r:d-w,i=this.opts.bottomToTopSubMenus?m-T-h:T),this.opts.keepInViewport){var y=l+e,I=c+i;if(M&&f>y?e=g?f-y+e:d-w:!M&&y+r>f+b&&(e=g?f+b-r-y+e:w-r),g||(S>h&&I+h>v+S?i+=v+S-h-I:(h>=S||v>I)&&(i+=v-I)),g&&(I+h>v+S+.49||v>I)||!g&&h>S+.49){var x=this;t.dataSM("scroll-arrows")||t.dataSM("scroll-arrows",$([$('')[0],$('')[0]]).on({mouseenter:function(){t.dataSM("scroll").up=$(this).hasClass("scroll-up"),x.menuScroll(t)},mouseleave:function(e){x.menuScrollStop(t),x.menuScrollOut(t,e)},"mousewheel DOMMouseScroll":function(t){ +t.preventDefault()}}).insertAfter(t));var A=".smartmenus_scroll";if(t.dataSM("scroll",{y:this.cssTransforms3d?0:i-m,step:1,itemH:m,subH:h,arrowDownH:this.getHeight(t.dataSM("scroll-arrows").eq(1))}).on(getEventsNS({mouseover:function(e){x.menuScrollOver(t,e)},mouseout:function(e){x.menuScrollOut(t,e)},"mousewheel DOMMouseScroll":function(e){x.menuScrollMousewheel(t,e)}},A)).dataSM("scroll-arrows").css({top:"auto",left:"0",marginLeft:e+(parseInt(t.css("border-left-width"))||0),width:r-(parseInt(t.css("border-left-width"))||0)-(parseInt(t.css("border-right-width"))||0),zIndex:t.css("z-index")}).eq(g&&this.opts.bottomToTopSubMenus?0:1).show(),this.isFixed()){var C={};C[touchEvents?"touchstart touchmove touchend":"pointerdown pointermove pointerup MSPointerDown MSPointerMove MSPointerUp"]=function(e){x.menuScrollTouch(t,e)},t.css({"touch-action":"none","-ms-touch-action":"none"}).on(getEventsNS(C,A))}}}t.css({top:"auto",left:"0",marginLeft:e,marginTop:i-m})},menuScroll:function(t,e,i){var s,o=t.dataSM("scroll"), +a=t.dataSM("scroll-arrows"),n=o.up?o.upEnd:o.downEnd;if(!e&&o.momentum){if(o.momentum*=.92,s=o.momentum,.5>s)return this.menuScrollStop(t),void 0}else s=i||(e||!this.opts.scrollAccelerate?this.opts.scrollStep:Math.floor(o.step));var r=t.dataSM("level");if(this.activatedItems[r-1]&&this.activatedItems[r-1].dataSM("sub")&&this.activatedItems[r-1].dataSM("sub").is(":visible")&&this.menuHideSubMenus(r-1),o.y=o.up&&o.y>=n||!o.up&&n>=o.y?o.y:Math.abs(n-o.y)>s?o.y+(o.up?s:-s):n,t.css(this.cssTransforms3d?{"-webkit-transform":"translate3d(0, "+o.y+"px, 0)",transform:"translate3d(0, "+o.y+"px, 0)"}:{marginTop:o.y}),mouse&&(o.up&&o.y>o.downEnd||!o.up&&o.y0;t.dataSM("scroll-arrows").eq(i?0:1).is(":visible")&&(t.dataSM("scroll").up=i,this.menuScroll(t,!0))}e.preventDefault()},menuScrollOut:function(t,e){mouse&&(/^scroll-(up|down)/.test((e.relatedTarget||"").className)||(t[0]==e.relatedTarget||$.contains(t[0],e.relatedTarget))&&this.getClosestMenu(e.relatedTarget)==t[0]||t.dataSM("scroll-arrows").css("visibility","hidden"))},menuScrollOver:function(t,e){if(mouse&&!/^scroll-(up|down)/.test(e.target.className)&&this.getClosestMenu(e.target)==t[0]){this.menuScrollRefreshData(t);var i=t.dataSM("scroll"),s=$(window).scrollTop()-t.dataSM("parent-a").offset().top-i.itemH;t.dataSM("scroll-arrows").eq(0).css("margin-top",s).end().eq(1).css("margin-top",s+this.getViewportHeight()-i.arrowDownH).end().css("visibility","visible")}},menuScrollRefreshData:function(t){var e=t.dataSM("scroll"),i=$(window).scrollTop()-t.dataSM("parent-a").offset().top-e.itemH;this.cssTransforms3d&&(i=-(parseFloat(t.css("margin-top"))-i)),$.extend(e,{upEnd:i, +downEnd:i+this.getViewportHeight()-e.subH})},menuScrollStop:function(t){return this.scrollTimeout?(cancelAnimationFrame(this.scrollTimeout),this.scrollTimeout=0,t.dataSM("scroll").step=1,!0):void 0},menuScrollTouch:function(t,e){if(e=e.originalEvent,isTouchEvent(e)){var i=this.getTouchPoint(e);if(this.getClosestMenu(i.target)==t[0]){var s=t.dataSM("scroll");if(/(start|down)$/i.test(e.type))this.menuScrollStop(t)?(e.preventDefault(),this.$touchScrollingSub=t):this.$touchScrollingSub=null,this.menuScrollRefreshData(t),$.extend(s,{touchStartY:i.pageY,touchStartTime:e.timeStamp});else if(/move$/i.test(e.type)){var o=void 0!==s.touchY?s.touchY:s.touchStartY;if(void 0!==o&&o!=i.pageY){this.$touchScrollingSub=t;var a=i.pageY>o;void 0!==s.up&&s.up!=a&&$.extend(s,{touchStartY:i.pageY,touchStartTime:e.timeStamp}),$.extend(s,{up:a,touchY:i.pageY}),this.menuScroll(t,!0,Math.abs(i.pageY-o))}e.preventDefault()}else void 0!==s.touchY&&((s.momentum=15*Math.pow(Math.abs(i.pageY-s.touchStartY)/(e.timeStamp-s.touchStartTime),2) +)&&(this.menuScrollStop(t),this.menuScroll(t),e.preventDefault()),delete s.touchY)}}},menuShow:function(t){if((t.dataSM("beforefirstshowfired")||(t.dataSM("beforefirstshowfired",!0),this.$root.triggerHandler("beforefirstshow.smapi",t[0])!==!1))&&this.$root.triggerHandler("beforeshow.smapi",t[0])!==!1&&(t.dataSM("shown-before",!0),canAnimate&&t.stop(!0,!0),!t.is(":visible"))){var e=t.dataSM("parent-a"),i=this.isCollapsible();if((this.opts.keepHighlighted||i)&&e.addClass("highlighted"),i)t.removeClass("sm-nowrap").css({zIndex:"",width:"auto",minWidth:"",maxWidth:"",top:"",left:"",marginLeft:"",marginTop:""});else{if(t.css("z-index",this.zIndexInc=(this.zIndexInc||this.getStartZIndex())+1),(this.opts.subMenusMinWidth||this.opts.subMenusMaxWidth)&&(t.css({width:"auto",minWidth:"",maxWidth:""}).addClass("sm-nowrap"),this.opts.subMenusMinWidth&&t.css("min-width",this.opts.subMenusMinWidth),this.opts.subMenusMaxWidth)){var s=this.getWidth(t);t.css("max-width",this.opts.subMenusMaxWidth),s>this.getWidth(t +)&&t.removeClass("sm-nowrap").css("width",this.opts.subMenusMaxWidth)}this.menuPosition(t)}var o=function(){t.css("overflow","")};i?canAnimate&&this.opts.collapsibleShowFunction?this.opts.collapsibleShowFunction.call(this,t,o):t.show(this.opts.collapsibleShowDuration,o):canAnimate&&this.opts.showFunction?this.opts.showFunction.call(this,t,o):t.show(this.opts.showDuration,o),e.attr("aria-expanded","true"),t.attr({"aria-expanded":"true","aria-hidden":"false"}),this.visibleSubMenus.push(t),this.$root.triggerHandler("show.smapi",t[0])}},popupHide:function(t){this.hideTimeout&&(clearTimeout(this.hideTimeout),this.hideTimeout=0);var e=this;this.hideTimeout=setTimeout(function(){e.menuHideAll()},t?1:this.opts.hideTimeout)},popupShow:function(t,e){if(!this.opts.isPopup)return alert('SmartMenus jQuery Error:\n\nIf you want to show this menu via the "popupShow" method, set the isPopup:true option.'),void 0;if(this.hideTimeout&&(clearTimeout(this.hideTimeout),this.hideTimeout=0),this.$root.dataSM("shown-before",!0), +canAnimate&&this.$root.stop(!0,!0),!this.$root.is(":visible")){this.$root.css({left:t,top:e});var i=this,s=function(){i.$root.css("overflow","")};canAnimate&&this.opts.showFunction?this.opts.showFunction.call(this,this.$root,s):this.$root.show(this.opts.showDuration,s),this.visibleSubMenus[0]=this.$root}},refresh:function(){this.destroy(!0),this.init(!0)},rootKeyDown:function(t){if(this.handleEvents())switch(t.keyCode){case 27:var e=this.activatedItems[0];if(e){this.menuHideAll(),e[0].focus();var i=e.dataSM("sub");i&&this.menuHide(i)}break;case 32:var s=$(t.target);if(s.is("a")&&this.handleItemEvents(s)){var i=s.dataSM("sub");i&&!i.is(":visible")&&(this.itemClick({currentTarget:t.target}),t.preventDefault())}}},rootOut:function(t){if(this.handleEvents()&&!this.isTouchMode()&&t.target!=this.$root[0]&&(this.hideTimeout&&(clearTimeout(this.hideTimeout),this.hideTimeout=0),!this.opts.showOnClick||!this.opts.hideOnClick)){var e=this;this.hideTimeout=setTimeout(function(){e.menuHideAll()},this.opts.hideTimeout)}}, +rootOver:function(t){this.handleEvents()&&!this.isTouchMode()&&t.target!=this.$root[0]&&this.hideTimeout&&(clearTimeout(this.hideTimeout),this.hideTimeout=0)},winResize:function(t){if(this.handleEvents()){if(!("onorientationchange"in window)||"orientationchange"==t.type){var e=this.isCollapsible();this.wasCollapsible&&e||(this.activatedItems.length&&this.activatedItems[this.activatedItems.length-1][0].blur(),this.menuHideAll()),this.wasCollapsible=e}}else if(this.$disableOverlay){var i=this.$root.offset();this.$disableOverlay.css({top:i.top,left:i.left,width:this.$root.outerWidth(),height:this.$root.outerHeight()})}}}}),$.fn.dataSM=function(t,e){return e?this.data(t+"_smartmenus",e):this.data(t+"_smartmenus")},$.fn.removeDataSM=function(t){return this.removeData(t+"_smartmenus")},$.fn.smartmenus=function(options){if("string"==typeof options){var args=arguments,method=options;return Array.prototype.shift.call(args),this.each(function(){var t=$(this).data("smartmenus");t&&t[method]&&t[method].apply(t,args)})} +return this.each(function(){var dataOpts=$(this).data("sm-options")||null;if(dataOpts)try{dataOpts=eval("("+dataOpts+")")}catch(e){dataOpts=null,alert('ERROR\n\nSmartMenus jQuery init:\nInvalid "data-sm-options" attribute value syntax.')}new $.SmartMenus(this,$.extend({},$.fn.smartmenus.defaults,options,dataOpts))})},$.fn.smartmenus.defaults={isPopup:!1,mainMenuSubOffsetX:0,mainMenuSubOffsetY:0,subMenusSubOffsetX:0,subMenusSubOffsetY:0,subMenusMinWidth:"10em",subMenusMaxWidth:"20em",subIndicators:!0,subIndicatorsPos:"append",subIndicatorsText:"",scrollStep:30,scrollAccelerate:!0,showTimeout:250,hideTimeout:500,showDuration:0,showFunction:null,hideDuration:0,hideFunction:function(t,e){t.fadeOut(200,e)},collapsibleShowDuration:0,collapsibleShowFunction:function(t,e){t.slideDown(200,e)},collapsibleHideDuration:0,collapsibleHideFunction:function(t,e){t.slideUp(200,e)},showOnClick:!1,hideOnClick:!0,noMouseOver:!1,keepInViewport:!0,keepHighlighted:!0,markCurrentItem:!1,markCurrentTree:!0,rightToLeftSubMenus:!1, +bottomToTopSubMenus:!1,collapsibleBehavior:"default"},$}); diff --git a/docs/pyShelf/html/menudata.js b/docs/pyShelf/html/menudata.js new file mode 100644 index 0000000..8006205 --- /dev/null +++ b/docs/pyShelf/html/menudata.js @@ -0,0 +1,66 @@ +/* + @licstart The following is the entire license notice for the JavaScript code in this file. + + The MIT License (MIT) + + Copyright (C) 1997-2020 by Dimitri van Heesch + + 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. + + @licend The above is the entire license notice for the JavaScript code in this file +*/ +var menudata={children:[ +{text:"Main Page",url:"index.html"}, +{text:"Namespaces",url:"namespaces.html",children:[ +{text:"Namespace List",url:"namespaces.html"}, +{text:"Namespace Members",url:"namespacemembers.html",children:[ +{text:"All",url:"namespacemembers.html"}, +{text:"Functions",url:"namespacemembers_func.html"}]}]}, +{text:"Classes",url:"annotated.html",children:[ +{text:"Class List",url:"annotated.html"}, +{text:"Class Index",url:"classes.html"}, +{text:"Class Hierarchy",url:"hierarchy.html"}, +{text:"Class Members",url:"functions.html",children:[ +{text:"All",url:"functions.html",children:[ +{text:"_",url:"functions.html#index__5F"}, +{text:"b",url:"functions.html#index_b"}, +{text:"c",url:"functions.html#index_c"}, +{text:"e",url:"functions.html#index_e"}, +{text:"f",url:"functions.html#index_f"}, +{text:"g",url:"functions.html#index_g"}, +{text:"i",url:"functions.html#index_i"}, +{text:"m",url:"functions.html#index_m"}, +{text:"o",url:"functions.html#index_o"}, +{text:"p",url:"functions.html#index_p"}, +{text:"r",url:"functions.html#index_r"}, +{text:"s",url:"functions.html#index_s"}, +{text:"u",url:"functions.html#index_u"}]}, +{text:"Functions",url:"functions_func.html",children:[ +{text:"_",url:"functions_func.html#index__5F"}, +{text:"b",url:"functions_func.html#index_b"}, +{text:"c",url:"functions_func.html#index_c"}, +{text:"e",url:"functions_func.html#index_e"}, +{text:"f",url:"functions_func.html#index_f"}, +{text:"g",url:"functions_func.html#index_g"}, +{text:"i",url:"functions_func.html#index_i"}, +{text:"m",url:"functions_func.html#index_m"}, +{text:"o",url:"functions_func.html#index_o"}, +{text:"p",url:"functions_func.html#index_p"}, +{text:"r",url:"functions_func.html#index_r"}, +{text:"s",url:"functions_func.html#index_s"}, +{text:"u",url:"functions_func.html#index_u"}]}]}]}, +{text:"Files",url:"files.html",children:[ +{text:"File List",url:"files.html"}]}]} diff --git a/docs/pyShelf/html/namespacemembers.html b/docs/pyShelf/html/namespacemembers.html new file mode 100644 index 0000000..b16ff5a --- /dev/null +++ b/docs/pyShelf/html/namespacemembers.html @@ -0,0 +1,76 @@ + + + + + + + +pyShelf Open Source Ebook Server: Namespace Members + + + + + + +
+
+ + + + + + +
+
pyShelf Open Source Ebook Server 0.8.0 +
+
FOSS E-Book Server, https://pyshelf.com
+
+
+ + + + +
+
+
+
Here is a list of all documented namespace members with links to the namespaces they belong to:
+
+ + +
+ + diff --git a/docs/pyShelf/html/namespacemembers_func.html b/docs/pyShelf/html/namespacemembers_func.html new file mode 100644 index 0000000..fd6634b --- /dev/null +++ b/docs/pyShelf/html/namespacemembers_func.html @@ -0,0 +1,76 @@ + + + + + + + +pyShelf Open Source Ebook Server: Namespace Members + + + + + + +
+
+ + + + + + +
+
pyShelf Open Source Ebook Server 0.8.0 +
+
FOSS E-Book Server, https://pyshelf.com
+
+
+ + + + +
+
+
+
Here is a list of all documented namespace functions with links to the namespaces they belong to:
+
+ + +
+ + diff --git a/docs/pyShelf/html/namespaces.html b/docs/pyShelf/html/namespaces.html new file mode 100644 index 0000000..c1dea55 --- /dev/null +++ b/docs/pyShelf/html/namespaces.html @@ -0,0 +1,73 @@ + + + + + + + +pyShelf Open Source Ebook Server: Namespace List + + + + + + +
+
+ + + + + + +
+
pyShelf Open Source Ebook Server 0.8.0 +
+
FOSS E-Book Server, https://pyshelf.com
+
+
+ + + + +
+
+
+
Namespace List
+
+
+
Here is a list of all documented namespaces with brief descriptions:
+
[detail level 1234]
+ + + + + + +
 NDataHooks
 NFastAPIServer
 Nobjects
 Nsrc
 N__main__
 Nbackend
+
+
+ + +
+ + diff --git a/docs/pyShelf/man/man3/DataHooks.3 b/docs/pyShelf/man/man3/DataHooks.3 new file mode 100644 index 0000000..c36bf40 --- /dev/null +++ b/docs/pyShelf/man/man3/DataHooks.3 @@ -0,0 +1,27 @@ +.TH "DataHooks" 3 "Sat Aug 9 2025 19:53:55" "Version 0.8.0" "pyShelf Open Source Ebook Server" \" -*- nroff -*- +.ad l +.nh +.SH NAME +DataHooks +.SH SYNOPSIS +.br +.PP +.SS "Classes" + +.in +1c +.ti -1c +.RI "class \fBBookInterface\fP" +.br +.in -1c +.SH "Detailed Description" +.PP + +.PP +.nf +pyShelf's frontend database hooks\&. +.fi +.PP + +.SH "Author" +.PP +Generated automatically by Doxygen for pyShelf Open Source Ebook Server from the source code\&. diff --git a/docs/pyShelf/man/man3/DataHooks_BookInterface.3 b/docs/pyShelf/man/man3/DataHooks_BookInterface.3 new file mode 100644 index 0000000..9780582 --- /dev/null +++ b/docs/pyShelf/man/man3/DataHooks_BookInterface.3 @@ -0,0 +1,37 @@ +.TH "DataHooks.BookInterface" 3 "Sat Aug 9 2025 19:53:55" "Version 0.8.0" "pyShelf Open Source Ebook Server" \" -*- nroff -*- +.ad l +.nh +.SH NAME +DataHooks.BookInterface +.SH SYNOPSIS +.br +.PP +.SS "Public Attributes" + +.in +1c +.ti -1c +.RI "\fBconfig\fP = config" +.br +.ti -1c +.RI "\fBdb\fP = \fBStorage\fP(self\&.config)" +.br +.in -1c +.SH "Detailed Description" +.PP + +.PP +.nf +Access point for book database\&. +.fi +.PP + +.SH "Member Data Documentation" +.PP +.SS "DataHooks\&.BookInterface\&.config = config" + +.SS "DataHooks\&.BookInterface\&.db = \fBStorage\fP(self\&.config)" + + +.SH "Author" +.PP +Generated automatically by Doxygen for pyShelf Open Source Ebook Server from the source code\&. diff --git a/docs/pyShelf/man/man3/FastAPIServer.3 b/docs/pyShelf/man/man3/FastAPIServer.3 new file mode 100644 index 0000000..0431c08 --- /dev/null +++ b/docs/pyShelf/man/man3/FastAPIServer.3 @@ -0,0 +1,165 @@ +.TH "FastAPIServer" 3 "Sat Aug 9 2025 19:53:55" "Version 0.8.0" "pyShelf Open Source Ebook Server" \" -*- nroff -*- +.ad l +.nh +.SH NAME +FastAPIServer +.SH SYNOPSIS +.br +.PP +.SS "Classes" + +.in +1c +.ti -1c +.RI "class \fBFastAPIServer\fP" +.br +.in -1c +.SS "Functions" + +.in +1c +.ti -1c +.RI "str \fBbase64decode\fP (string)" +.br +.ti -1c +.RI "str \fBsummarize\fP (string)" +.br +.ti -1c +.RI "str \fBconvertDateTime\fP (datetime timestamp)" +.br +.ti -1c +.RI "dumps \fBbooks_tojson\fP (obj)" +.br +.ti -1c +.RI "dumps \fBbook_tojson\fP (book)" +.br +.ti -1c +.RI "dumps \fBtojson\fP (obj)" +.br +.ti -1c +.RI "dumps \fBcollections_tojson\fP (collection)" +.br +.in -1c +.SS "Variables" + +.in +1c +.ti -1c +.RI "\fBapp\fP = FastAPI()" +.br +.ti -1c +.RI "\fBSTATIC_DIR\fP" +.br +.ti -1c +.RI "\fBTEMPLATES_DIR\fP" +.br +.ti -1c +.RI "\fBtemplates\fP = Jinja2Templates(directory=str(TEMPLATES_DIR))" +.br +.ti -1c +.RI "list \fBorigins\fP" +.br +.ti -1c +.RI "\fBallow_origins\fP" +.br +.ti -1c +.RI "\fBallow_credentials\fP" +.br +.ti -1c +.RI "\fBallow_methods\fP" +.br +.ti -1c +.RI "\fBallow_headers\fP" +.br +.in -1c +.SH "Detailed Description" +.PP + +.PP +.nf +pyShelf's main frontend library\&. +.fi +.PP + +.SH "Function Documentation" +.PP +.SS " str FastAPIServer\&.base64decode ( string)" + +.PP +.nf +Decode a base64 string\&. +.fi +.PP + +.SS " dumps FastAPIServer\&.book_tojson ( book)" + +.PP +.nf +Convert a book object to a json\&. +.fi +.PP + +.SS " dumps FastAPIServer\&.books_tojson ( obj)" + +.PP +.nf +Convert an object to a dictionary\&. +.fi +.PP + +.SS " dumps FastAPIServer\&.collections_tojson ( collection)" + +.PP +.nf +Convert a collections object to json\&. +.fi +.PP + +.SS " str FastAPIServer\&.convertDateTime (datetime timestamp)" + +.PP +.nf +Convert a datetime object to a string\&. +.fi +.PP + +.SS " str FastAPIServer\&.summarize ( string)" + +.PP +.nf +Summarize a string\&. +.fi +.PP + +.SS " dumps FastAPIServer\&.tojson ( obj)" + +.SH "Variable Documentation" +.PP +.SS "FastAPIServer\&.allow_credentials" + +.SS "FastAPIServer\&.allow_headers" + +.SS "FastAPIServer\&.allow_methods" + +.SS "FastAPIServer\&.allow_origins" + +.SS "FastAPIServer\&.app = FastAPI()" + +.SS "list FastAPIServer\&.origins" +\fBInitial value:\fP +.nf +1 = [ +2 "http://localhost", +3 "http://localhost:8081", +4 "http://localhost:8080", +5 "*" +6 ] +.PP +.fi + +.SS "FastAPIServer\&.STATIC_DIR" + +.SS "FastAPIServer\&.templates = Jinja2Templates(directory=str(TEMPLATES_DIR))" + +.SS "FastAPIServer\&.TEMPLATES_DIR" + +.SH "Author" +.PP +Generated automatically by Doxygen for pyShelf Open Source Ebook Server from the source code\&. diff --git a/docs/pyShelf/man/man3/FastAPIServer_FastAPIServer.3 b/docs/pyShelf/man/man3/FastAPIServer_FastAPIServer.3 new file mode 100644 index 0000000..57b71ba --- /dev/null +++ b/docs/pyShelf/man/man3/FastAPIServer_FastAPIServer.3 @@ -0,0 +1,152 @@ +.TH "FastAPIServer.FastAPIServer" 3 "Sat Aug 9 2025 19:53:55" "Version 0.8.0" "pyShelf Open Source Ebook Server" \" -*- nroff -*- +.ad l +.nh +.SH NAME +FastAPIServer.FastAPIServer +.SH SYNOPSIS +.br +.PP +.SS "Public Member Functions" + +.in +1c +.ti -1c +.RI "\fB__init__\fP (self, config)" +.br +.ti -1c +.RI "\fBcompile_static_files\fP (self)" +.br +.ti -1c +.RI "None \fBuse_route_names_as_operation_ids\fP (self, FastAPI app)" +.br +.ti -1c +.RI "\fBindex\fP (Request request, int skip=0, int limit=30)" +.br +.ti -1c +.RI "\fBbooks\fP (Request request, int skip=0, int limit=10, \fBcollection\fP=None)" +.br +.ti -1c +.RI "\fBbook\fP (Request request, int book_id)" +.br +.ti -1c +.RI "\fBbook\fP (Request request, int book_id)" +.br +.ti -1c +.RI "\fBcollections\fP (Request request)" +.br +.ti -1c +.RI "\fBcollection\fP (Request request, str collection, int skip=0, int limit=30)" +.br +.ti -1c +.RI "\fBsearch_books_api\fP (Request request, str search)" +.br +.ti -1c +.RI "\fBrun\fP (self)" +.br +.in -1c +.SS "Public Attributes" + +.in +1c +.ti -1c +.RI "\fBconfig\fP = config" +.br +.ti -1c +.RI "\fBfe_config\fP" +.br +.ti -1c +.RI "\fBfe_server\fP = uvicorn\&.Server(self\&.fe_config)" +.br +.ti -1c +.RI "\fBJSInterface\fP \fBJSInterface\fP = \fBJSInterface\fP(self\&.config)" +.br +.in -1c +.SH "Detailed Description" +.PP + +.PP +.nf +Entry point for FastAPI server\&. +.fi +.PP + +.SH "Constructor & Destructor Documentation" +.PP +.SS "FastAPIServer\&.FastAPIServer\&.__init__ ( self, config)" + +.PP +.nf +Initialize FastAPIServer object parameters\&. +.fi +.PP + +.SH "Member Function Documentation" +.PP +.SS "FastAPIServer\&.FastAPIServer\&.book (Request request, int book_id)" + +.SS "FastAPIServer\&.FastAPIServer\&.book (Request request, int book_id)" + +.SS "FastAPIServer\&.FastAPIServer\&.books (Request request, int skip = \fR0\fP, int limit = \fR10\fP, collection = \fRNone\fP)" + +.SS "FastAPIServer\&.FastAPIServer\&.collection (Request request, str collection, int skip = \fR0\fP, int limit = \fR30\fP)" + +.PP +.nf +Collection file responder\&. +.fi +.PP + +.SS "FastAPIServer\&.FastAPIServer\&.collections (Request request)" + +.SS "FastAPIServer\&.FastAPIServer\&.compile_static_files ( self)" + +.PP +.nf +Compile static files for web frontend\&. +.fi +.PP + +.SS "FastAPIServer\&.FastAPIServer\&.index (Request request, int skip = \fR0\fP, int limit = \fR30\fP)" + +.SS "FastAPIServer\&.FastAPIServer\&.run ( self)" + +.PP +.nf +Front end server entrypoint\&. +.fi +.PP + +.SS "FastAPIServer\&.FastAPIServer\&.search_books_api (Request request, str search)" + +.PP +.nf +Collection file responder\&. +.fi +.PP + +.SS " None FastAPIServer\&.FastAPIServer\&.use_route_names_as_operation_ids ( self, FastAPI app)" + +.PP +.nf +Use route name as operation id\&. +.fi +.PP + +.SH "Member Data Documentation" +.PP +.SS "FastAPIServer\&.FastAPIServer\&.config = config" + +.SS "FastAPIServer\&.FastAPIServer\&.fe_config" +\fBInitial value:\fP +.nf += uvicorn\&.Config(app, host="0\&.0\&.0\&.0", port=8080, + log_level="info", reload=True) +.PP +.fi + +.SS "FastAPIServer\&.FastAPIServer\&.fe_server = uvicorn\&.Server(self\&.fe_config)" + +.SS "\fBJSInterface\fP FastAPIServer\&.FastAPIServer\&.JSInterface = \fBJSInterface\fP(self\&.config)" + + +.SH "Author" +.PP +Generated automatically by Doxygen for pyShelf Open Source Ebook Server from the source code\&. diff --git a/docs/pyShelf/man/man3/objects.3 b/docs/pyShelf/man/man3/objects.3 new file mode 100644 index 0000000..7623076 --- /dev/null +++ b/docs/pyShelf/man/man3/objects.3 @@ -0,0 +1,27 @@ +.TH "objects" 3 "Sat Aug 9 2025 19:53:55" "Version 0.8.0" "pyShelf Open Source Ebook Server" \" -*- nroff -*- +.ad l +.nh +.SH NAME +objects +.SH SYNOPSIS +.br +.PP +.SS "Classes" + +.in +1c +.ti -1c +.RI "class \fBJSInterface\fP" +.br +.in -1c +.SH "Detailed Description" +.PP + +.PP +.nf +pyShelf's Frontend Objects\&. +.fi +.PP + +.SH "Author" +.PP +Generated automatically by Doxygen for pyShelf Open Source Ebook Server from the source code\&. diff --git a/docs/pyShelf/man/man3/objects_JSInterface.3 b/docs/pyShelf/man/man3/objects_JSInterface.3 new file mode 100644 index 0000000..d537c89 --- /dev/null +++ b/docs/pyShelf/man/man3/objects_JSInterface.3 @@ -0,0 +1,67 @@ +.TH "objects.JSInterface" 3 "Sat Aug 9 2025 19:53:55" "Version 0.8.0" "pyShelf Open Source Ebook Server" \" -*- nroff -*- +.ad l +.nh +.SH NAME +objects.JSInterface +.SH SYNOPSIS +.br +.PP +.SS "Public Member Functions" + +.in +1c +.ti -1c +.RI "\fB__init__\fP (self, Config config)" +.br +.ti -1c +.RI "\fBinstall\fP (self)" +.br +.in -1c +.SS "Public Attributes" + +.in +1c +.ti -1c +.RI "Path \fBpackage_json\fP = Path(config\&.root, 'src/frontend/package\&.json')" +.br +.ti -1c +.RI "Config \fBconfig\fP = config" +.br +.in -1c +.SH "Detailed Description" +.PP + +.PP +.nf +A class to interface with the JavaScript side of pyShelf\&. +.fi +.PP + +.SH "Constructor & Destructor Documentation" +.PP +.SS "objects\&.JSInterface\&.__init__ ( self, Config config)" + +.PP +.nf +Initialize the JSInterface object\&. +.fi +.PP + +.SH "Member Function Documentation" +.PP +.SS "objects\&.JSInterface\&.install ( self)" + +.PP +.nf +Install the JavaScript dependencies\&. +.fi +.PP + +.SH "Member Data Documentation" +.PP +.SS "Config objects\&.JSInterface\&.config = config" + +.SS "Path objects\&.JSInterface\&.package_json = Path(config\&.root, 'src/frontend/package\&.json')" + + +.SH "Author" +.PP +Generated automatically by Doxygen for pyShelf Open Source Ebook Server from the source code\&. diff --git a/docs/pyShelf/man/man3/src___main__.3 b/docs/pyShelf/man/man3/src___main__.3 new file mode 100644 index 0000000..9f1332e --- /dev/null +++ b/docs/pyShelf/man/man3/src___main__.3 @@ -0,0 +1,69 @@ +.TH "src.__main__" 3 "Sat Aug 9 2025 19:53:55" "Version 0.8.0" "pyShelf Open Source Ebook Server" \" -*- nroff -*- +.ad l +.nh +.SH NAME +src.__main__ +.SH SYNOPSIS +.br +.PP +.SS "Functions" + +.in +1c +.ti -1c +.RI "\fBrun_import\fP ()" +.br +.ti -1c +.RI "\fBmain\fP ()" +.br +.in -1c +.SS "Variables" + +.in +1c +.ti -1c +.RI "\fBroot\fP = Path\&.cwd()" +.br +.ti -1c +.RI "\fBconfig\fP = \fBConfig\fP(root)" +.br +.ti -1c +.RI "\fBPRG_PATH\fP = Path\&.cwd()\&.__str__()" +.br +.in -1c +.SH "Detailed Description" +.PP + +.PP +.nf +PyShelf Entrypoint\&. +.fi +.PP + +.SH "Function Documentation" +.PP +.SS "src\&.__main__\&.main ()" + +.PP +.nf +Program entrypoint\&. +.fi +.PP + +.SS "src\&.__main__\&.run_import ()" + +.PP +.nf +Begin live import of books\&. +.fi +.PP + +.SH "Variable Documentation" +.PP +.SS "src\&.__main__\&.config = \fBConfig\fP(root)" + +.SS "src\&.__main__\&.PRG_PATH = Path\&.cwd()\&.__str__()" + +.SS "src\&.__main__\&.root = Path\&.cwd()" + +.SH "Author" +.PP +Generated automatically by Doxygen for pyShelf Open Source Ebook Server from the source code\&. diff --git a/docs/pyShelf/man/man3/src_backend_lib_api_hooks_DuckDuckGo.3 b/docs/pyShelf/man/man3/src_backend_lib_api_hooks_DuckDuckGo.3 new file mode 100644 index 0000000..457e752 --- /dev/null +++ b/docs/pyShelf/man/man3/src_backend_lib_api_hooks_DuckDuckGo.3 @@ -0,0 +1,68 @@ +.TH "src.backend.lib.api_hooks.DuckDuckGo" 3 "Sat Aug 9 2025 19:53:55" "Version 0.8.0" "pyShelf Open Source Ebook Server" \" -*- nroff -*- +.ad l +.nh +.SH NAME +src.backend.lib.api_hooks.DuckDuckGo +.SH SYNOPSIS +.br +.PP +.SS "Public Member Functions" + +.in +1c +.ti -1c +.RI "\fB__init__\fP (self)" +.br +.ti -1c +.RI "\fBimage_result\fP (self, query)" +.br +.ti -1c +.RI "\fBdescription_result\fP (self, query)" +.br +.in -1c +.SS "Public Attributes" + +.in +1c +.ti -1c +.RI "str \fBurl\fP = 'https://api\&.duckduckgo\&.com/?q='" +.br +.ti -1c +.RI "str \fBimageurl\fP = 'https://duckduckgo\&.com'" +.br +.in -1c +.SH "Detailed Description" +.PP + +.PP +.nf +duckduckgo related searching +.fi +.PP + +.SH "Constructor & Destructor Documentation" +.PP +.SS "src\&.backend\&.lib\&.api_hooks\&.DuckDuckGo\&.__init__ ( self)" + +.SH "Member Function Documentation" +.PP +.SS "src\&.backend\&.lib\&.api_hooks\&.DuckDuckGo\&.description_result ( self, query)" + +.SS "src\&.backend\&.lib\&.api_hooks\&.DuckDuckGo\&.image_result ( self, query)" + +.PP +.nf +Returns json containing url to image +:param _key: &t=h_&iar=images&iax=images&ia=images&format=json&pretty=1 + +.fi +.PP + +.SH "Member Data Documentation" +.PP +.SS "str src\&.backend\&.lib\&.api_hooks\&.DuckDuckGo\&.imageurl = 'https://duckduckgo\&.com'" + +.SS "str src\&.backend\&.lib\&.api_hooks\&.DuckDuckGo\&.url = 'https://api\&.duckduckgo\&.com/?q='" + + +.SH "Author" +.PP +Generated automatically by Doxygen for pyShelf Open Source Ebook Server from the source code\&. diff --git a/docs/pyShelf/man/man3/src_backend_lib_config.3 b/docs/pyShelf/man/man3/src_backend_lib_config.3 new file mode 100644 index 0000000..6937f84 --- /dev/null +++ b/docs/pyShelf/man/man3/src_backend_lib_config.3 @@ -0,0 +1,27 @@ +.TH "src.backend.lib.config" 3 "Sat Aug 9 2025 19:53:55" "Version 0.8.0" "pyShelf Open Source Ebook Server" \" -*- nroff -*- +.ad l +.nh +.SH NAME +src.backend.lib.config +.SH SYNOPSIS +.br +.PP +.SS "Classes" + +.in +1c +.ti -1c +.RI "class \fBConfig\fP" +.br +.in -1c +.SH "Detailed Description" +.PP + +.PP +.nf +Pyshelf's Configuration Object\&. +.fi +.PP + +.SH "Author" +.PP +Generated automatically by Doxygen for pyShelf Open Source Ebook Server from the source code\&. diff --git a/docs/pyShelf/man/man3/src_backend_lib_config_Config.3 b/docs/pyShelf/man/man3/src_backend_lib_config_Config.3 new file mode 100644 index 0000000..1e9f971 --- /dev/null +++ b/docs/pyShelf/man/man3/src_backend_lib_config_Config.3 @@ -0,0 +1,258 @@ +.TH "src.backend.lib.config.Config" 3 "Sat Aug 9 2025 19:53:55" "Version 0.8.0" "pyShelf Open Source Ebook Server" \" -*- nroff -*- +.ad l +.nh +.SH NAME +src.backend.lib.config.Config +.SH SYNOPSIS +.br +.PP +.PP +Inherited by \fBsrc\&.backend\&.tests\&.library_test\&.Test_Config\fP\&. +.SS "Public Member Functions" + +.in +1c +.ti -1c +.RI "\fB__init__\fP (self, root)" +.br +.ti -1c +.RI "\fBinit_config\fP (self)" +.br +.ti -1c +.RI "\fBget_logger\fP (self)" +.br +.ti -1c +.RI "\fBopen_file\fP (self)" +.br +.in -1c +.SS "Public Attributes" + +.in +1c +.ti -1c +.RI "\fBroot\fP = root" +.br +.ti -1c +.RI "dict \fBconfig_structure\fP" +.br +.ti -1c +.RI "\fBlogger\fP = self\&.get_logger()" +.br +.ti -1c +.RI "\fBbook_path\fP = env\&.get('BOOKPATH', self\&._data['BOOKPATH'])" +.br +.ti -1c +.RI "str \fBTITLE\fP = env\&.get('TITLE', self\&._data['TITLE'])" +.br +.ti -1c +.RI "\fBVERSION\fP = env\&.get('VERSION', self\&._data['VERSION'])" +.br +.ti -1c +.RI "\fBbook_shelf\fP = env\&.get('BOOKSHELF', self\&._data['BOOKSHELF'])" +.br +.ti -1c +.RI "\fBcatalogue_db\fP = env\&.get('DATABASE', self\&._data['DATABASE'])" +.br +.ti -1c +.RI "\fBuser\fP = self\&._data['USER']" +.br +.ti -1c +.RI "\fBpassword\fP = self\&._data['PASSWORD']" +.br +.ti -1c +.RI "\fBdb_host\fP = env\&.get('DB_HOST', self\&._data['DB_HOST'])" +.br +.ti -1c +.RI "\fBdb_port\fP = env\&.get('DB_PORT', self\&._data['DB_PORT'])" +.br +.ti -1c +.RI "list \fBfile_array\fP = [self\&.book_shelf]" +.br +.ti -1c +.RI "bool \fBauto_scan\fP = True" +.br +.ti -1c +.RI "\fBallowed_hosts\fP" +.br +.ti -1c +.RI "\fBdb_engine\fP = env\&.get('DB_ENGINE', self\&._data['DB_ENGINE'])" +.br +.ti -1c +.RI "\fBdb_user\fP = env\&.get('USER', self\&._data['USER'])" +.br +.ti -1c +.RI "\fBdb_pass\fP = env\&.get('PASSWORD', self\&._data['PASSWORD'])" +.br +.ti -1c +.RI "\fBbuild_mode\fP = env\&.get('BUILD_MODE', self\&._data['BUILD_MODE'])" +.br +.in -1c +.SS "Protected Attributes" + +.in +1c +.ti -1c +.RI "str \fB_fp\fP = 'config\&.json'" +.br +.ti -1c +.RI "\fB_cp\fP = Path\&.joinpath(root, self\&._fp)" +.br +.ti -1c +.RI "\fB_data\fP = self\&.init_config()" +.br +.in -1c +.SH "Detailed Description" +.PP + +.PP +.nf +Main System Configuration\&. + +>>> config = Config(root) + +Parameters +---------- +root : File system root of program + +Attributes +---------- +root : str() stores root\&. +config_structure : dict() Default Configuration Structure\&. +_fp : str() file pointer to main configuration\&. +_cp : Path() object of configuration file\&. +_data : dict() parsed json of _fp\&. +logger : holds logging configuration from get_logger()\&. +book_path : directory pointer to main books folder\&. +TITLE : str() Program title\&. +VERSION : str() Program version\&. +TITLE : str() Combines TITLE & VERSION\&. +book_shelf : Deprecation TODO: Is this still in use? +catalogue_db : str() Database Name\&. +user : str() Database user name\&. +password : str() Database password\&. +db_host : str() Database host\&. +db_port : int() Database port\&. +file_array : list() copy of book_shelf TODO: See book_shelf +auto_scan: bool() Do we auto scan on launch? +allowed_hosts : list() Allowed host list\&. +db_engine : str() Desired database engine type\&. +db_user : str() Database user name\&. Duplication Warning\&. +db_pass : str() Database password\&. Duplication Warning\&. +build_mode : str() Production | Development mode\&. + +Methods +------- +get_logger : Setup loguru\&. +open_file : Parse configuration file\&. + +.fi +.PP + +.SH "Constructor & Destructor Documentation" +.PP +.SS "src\&.backend\&.lib\&.config\&.Config\&.__init__ ( self, root)" + +.PP +.nf +Initialize main configuration options\&. +.fi +.PP + +.SH "Member Function Documentation" +.PP +.SS "src\&.backend\&.lib\&.config\&.Config\&.get_logger ( self)" + +.PP +.nf +Instantiate logging system\&. +.fi +.PP + +.SS "src\&.backend\&.lib\&.config\&.Config\&.init_config ( self)" + +.SS "src\&.backend\&.lib\&.config\&.Config\&.open_file ( self)" + +.PP +.nf +Open config\&.json and reads in configuration options\&. +.fi +.PP + +.PP +Reimplemented in \fBsrc\&.backend\&.tests\&.library_test\&.Test_Config\fP\&. +.SH "Member Data Documentation" +.PP +.SS "src\&.backend\&.lib\&.config\&.Config\&._cp = Path\&.joinpath(root, self\&._fp)\fR [protected]\fP" + +.SS "src\&.backend\&.lib\&.config\&.Config\&._data = self\&.init_config()\fR [protected]\fP" + +.SS "src\&.backend\&.lib\&.config\&.Config\&._fp = 'config\&.json'\fR [protected]\fP" + +.SS "src\&.backend\&.lib\&.config\&.Config\&.allowed_hosts" +\fBInitial value:\fP +.nf += env\&.get("ALLOWED_HOSTS", + self\&._data["ALLOWED_HOSTS"]) +.PP +.fi + +.SS "bool src\&.backend\&.lib\&.config\&.Config\&.auto_scan = True" + +.SS "src\&.backend\&.lib\&.config\&.Config\&.book_path = env\&.get('BOOKPATH', self\&._data['BOOKPATH'])" + +.SS "src\&.backend\&.lib\&.config\&.Config\&.book_shelf = env\&.get('BOOKSHELF', self\&._data['BOOKSHELF'])" + +.SS "src\&.backend\&.lib\&.config\&.Config\&.build_mode = env\&.get('BUILD_MODE', self\&._data['BUILD_MODE'])" + +.SS "src\&.backend\&.lib\&.config\&.Config\&.catalogue_db = env\&.get('DATABASE', self\&._data['DATABASE'])" + +.SS "src\&.backend\&.lib\&.config\&.Config\&.config_structure" +\fBInitial value:\fP +.nf += { + "TITLE": "pyShelf E\-Book Server", + "VERSION": "0\&.7\&.0", + "BOOKPATH": "/mnt/books", + "DB_HOST": "localhost", + "DB_PORT": "5432", + "DB_ENGINE": "sqlite", + "DATABASE": "pyshelf", + "USER": "pyshelf", + "PASSWORD": "pyshelf", + "BOOKSHELF": "data/shelf\&.json", + "ALLOWED_HOSTS": [ + "localhost", + "127\&.0\&.0\&.1", + "[::1]", + "0\&.0\&.0\&.0" + ], + "BUILD_MODE": "development" + } +.PP +.fi + +.SS "src\&.backend\&.lib\&.config\&.Config\&.db_engine = env\&.get('DB_ENGINE', self\&._data['DB_ENGINE'])" + +.SS "src\&.backend\&.lib\&.config\&.Config\&.db_host = env\&.get('DB_HOST', self\&._data['DB_HOST'])" + +.SS "src\&.backend\&.lib\&.config\&.Config\&.db_pass = env\&.get('PASSWORD', self\&._data['PASSWORD'])" + +.SS "src\&.backend\&.lib\&.config\&.Config\&.db_port = env\&.get('DB_PORT', self\&._data['DB_PORT'])" + +.SS "src\&.backend\&.lib\&.config\&.Config\&.db_user = env\&.get('USER', self\&._data['USER'])" + +.SS "list src\&.backend\&.lib\&.config\&.Config\&.file_array = [self\&.book_shelf]" + +.SS "src\&.backend\&.lib\&.config\&.Config\&.logger = self\&.get_logger()" + +.SS "src\&.backend\&.lib\&.config\&.Config\&.password = self\&._data['PASSWORD']" + +.SS "src\&.backend\&.lib\&.config\&.Config\&.root = root" + +.SS "str src\&.backend\&.lib\&.config\&.Config\&.TITLE = env\&.get('TITLE', self\&._data['TITLE'])" + +.SS "src\&.backend\&.lib\&.config\&.Config\&.user = self\&._data['USER']" + +.SS "src\&.backend\&.lib\&.config\&.Config\&.VERSION = env\&.get('VERSION', self\&._data['VERSION'])" + + +.SH "Author" +.PP +Generated automatically by Doxygen for pyShelf Open Source Ebook Server from the source code\&. diff --git a/docs/pyShelf/man/man3/src_backend_lib_library_Catalogue.3 b/docs/pyShelf/man/man3/src_backend_lib_library_Catalogue.3 new file mode 100644 index 0000000..17d10f1 --- /dev/null +++ b/docs/pyShelf/man/man3/src_backend_lib_library_Catalogue.3 @@ -0,0 +1,272 @@ +.TH "src.backend.lib.library.Catalogue" 3 "Sat Aug 9 2025 19:53:55" "Version 0.8.0" "pyShelf Open Source Ebook Server" \" -*- nroff -*- +.ad l +.nh +.SH NAME +src.backend.lib.library.Catalogue +.SH SYNOPSIS +.br +.PP +.PP +Inherited by \fBsrc\&.backend\&.lib\&.overide\&.ACatalogue\fP, and \fBsrc\&.backend\&.tests\&.library_test\&.Test_Catalogue\fP\&. +.SS "Public Member Functions" + +.in +1c +.ti -1c +.RI "\fB__init__\fP (self, config)" +.br +.ti -1c +.RI "\fBscan_folder\fP (self, _path=None)" +.br +.ti -1c +.RI "\fBfilter_books\fP (self)" +.br +.ti -1c +.RI "\fBprocess_by_filetype\fP (self, book)" +.br +.ti -1c +.RI "\fBextract_metadata_epub\fP (self, book)" +.br +.ti -1c +.RI "\fBextract_metadata_pdf\fP (self, book)" +.br +.ti -1c +.RI "\fBextract_metadata_mobi\fP (self, book)" +.br +.ti -1c +.RI "\fBextract_content\fP (self, book_zip, book)" +.br +.ti -1c +.RI "\fBextract_cover_html\fP (self, book_zip, book)" +.br +.ti -1c +.RI "\fBextract_cover_image\fP (self, book_zip, book)" +.br +.ti -1c +.RI "\fBcompare_shelf_current\fP (self)" +.br +.ti -1c +.RI "\fBimport_books\fP (self, list=None, **kwargs)" +.br +.in -1c +.SS "Static Public Member Functions" + +.in +1c +.ti -1c +.RI "\fBprocess_epub\fP (book)" +.br +.ti -1c +.RI "\fBstripTags\fP (source)" +.br +.in -1c +.SS "Public Attributes" + +.in +1c +.ti -1c +.RI "list \fBfile_list\fP = []" +.br +.ti -1c +.RI "\fBopf_regx\fP = re\&.compile(r'\\\&.opf')" +.br +.ti -1c +.RI "\fBcover_regx\fP = re\&.compile(r'\\\&.jpg|\\\&.jpeg|\\\&.png|\\\&.bmp|\\\&.gif')" +.br +.ti -1c +.RI "\fBhtml_regx\fP = re\&.compile(r'\\\&.html')" +.br +.ti -1c +.RI "\fBtitle_sanitization_regx\fP = re\&.compile(r'^(Book )+[0\-9]*')" +.br +.ti -1c +.RI "\fBtitle_sanitization_lvl2_regx\fP" +.br +.ti -1c +.RI "\fBtitle_sanitization_dirs_regx\fP = re\&.compile(r'/')" +.br +.ti -1c +.RI "\fBroot_dir\fP = config\&.root" +.br +.ti -1c +.RI "\fBbook_folder\fP = config\&.book_path" +.br +.ti -1c +.RI "\fBbooks\fP = None" +.br +.ti -1c +.RI "\fBdb_pointer\fP = config\&.catalogue_db" +.br +.ti -1c +.RI "\fBconfig\fP = config" +.br +.in -1c +.SH "Detailed Description" +.PP + +.PP +.nf +Decodes book metadata for storage + +.fi +.PP + +.SH "Constructor & Destructor Documentation" +.PP +.SS "src\&.backend\&.lib\&.library\&.Catalogue\&.__init__ ( self, config)" + +.SH "Member Function Documentation" +.PP +.SS "src\&.backend\&.lib\&.library\&.Catalogue\&.compare_shelf_current ( self)" + +.PP +.nf +Calls storage system, gets list of books stored and compares against files on disk + +.fi +.PP + +.SS "src\&.backend\&.lib\&.library\&.Catalogue\&.extract_content ( self, book_zip, book)" + +.PP +.nf +Opens epub as zip file filters then stores as list any files matching opf_regx + +.fi +.PP + +.SS "src\&.backend\&.lib\&.library\&.Catalogue\&.extract_cover_html ( self, book_zip, book)" + +.PP +.nf +Opens epub as zip file filters then stores as list any files matching html_regx + +.fi +.PP + +.SS "src\&.backend\&.lib\&.library\&.Catalogue\&.extract_cover_image ( self, book_zip, book)" + +.PP +.nf +Opens epub as zip file filters then stores as list any files matching cover_regx + +.fi +.PP + +.SS "src\&.backend\&.lib\&.library\&.Catalogue\&.extract_metadata_epub ( self, book)" + +.PP +.nf +Extract metadata from epub file + +:param book: Dictionary of epub file contents +:returns: Dictionary of book metadata + +.fi +.PP + +.SS "src\&.backend\&.lib\&.library\&.Catalogue\&.extract_metadata_mobi ( self, book)" + +.SS "src\&.backend\&.lib\&.library\&.Catalogue\&.extract_metadata_pdf ( self, book)" + +.PP +.nf +Return extracted metadata +:NOTES: Retrieval of data has been problematic, some pdf's providing +reliable titles that corespond with the actual, and others being +nonsense\&. + +.fi +.PP + +.SS "src\&.backend\&.lib\&.library\&.Catalogue\&.filter_books ( self)" + +.PP +.nf +Calls scan_folder and filters out book files\&. + +:returns self\&._book_list_expanded: json string containing +all book metadata + +.fi +.PP + +.PP +Reimplemented in \fBsrc\&.backend\&.tests\&.library_test\&.Test_Catalogue\fP\&. +.SS "src\&.backend\&.lib\&.library\&.Catalogue\&.import_books ( self, list = \fRNone\fP, ** kwargs)" + +.PP +.nf +Main entry point for import operations\&. +Gets a list of new files via compare_shelf_current\&. +Iterates over list and inserts new books into database\&. + +.fi +.PP + +.PP +Reimplemented in \fBsrc\&.backend\&.lib\&.overide\&.ACatalogue\fP\&. +.SS "src\&.backend\&.lib\&.library\&.Catalogue\&.process_by_filetype ( self, book)" + +.PP +.nf +Determine books filetype and process\&. +.fi +.PP + +.SS "src\&.backend\&.lib\&.library\&.Catalogue\&.process_epub ( book)\fR [static]\fP" + +.PP +.nf +Return dictionary of epub file contents +.fi +.PP + +.SS "src\&.backend\&.lib\&.library\&.Catalogue\&.scan_folder ( self, _path = \fRNone\fP)" + +.PP +.nf +Scan folder by _path, allows recurisive scanning + +:param _path: Path to scan + +.fi +.PP + +.PP +Reimplemented in \fBsrc\&.backend\&.lib\&.overide\&.ACatalogue\fP\&. +.SS "src\&.backend\&.lib\&.library\&.Catalogue\&.stripTags ( source)\fR [static]\fP" + +.SH "Member Data Documentation" +.PP +.SS "src\&.backend\&.lib\&.library\&.Catalogue\&.book_folder = config\&.book_path" + +.SS "src\&.backend\&.lib\&.library\&.Catalogue\&.books = None" + +.SS "src\&.backend\&.lib\&.library\&.Catalogue\&.config = config" + +.SS "src\&.backend\&.lib\&.library\&.Catalogue\&.cover_regx = re\&.compile(r'\\\&.jpg|\\\&.jpeg|\\\&.png|\\\&.bmp|\\\&.gif')" + +.SS "src\&.backend\&.lib\&.library\&.Catalogue\&.db_pointer = config\&.catalogue_db" + +.SS "list src\&.backend\&.lib\&.library\&.Catalogue\&.file_list = []" + +.SS "src\&.backend\&.lib\&.library\&.Catalogue\&.html_regx = re\&.compile(r'\\\&.html')" + +.SS "src\&.backend\&.lib\&.library\&.Catalogue\&.opf_regx = re\&.compile(r'\\\&.opf')" + +.SS "src\&.backend\&.lib\&.library\&.Catalogue\&.root_dir = config\&.root" + +.SS "src\&.backend\&.lib\&.library\&.Catalogue\&.title_sanitization_dirs_regx = re\&.compile(r'/')" + +.SS "src\&.backend\&.lib\&.library\&.Catalogue\&.title_sanitization_lvl2_regx" +\fBInitial value:\fP +.nf += re\&.compile( + r"^(Book )+[0\-9]*\\W+(\-)") +.PP +.fi + +.SS "src\&.backend\&.lib\&.library\&.Catalogue\&.title_sanitization_regx = re\&.compile(r'^(Book )+[0\-9]*')" + + +.SH "Author" +.PP +Generated automatically by Doxygen for pyShelf Open Source Ebook Server from the source code\&. diff --git a/docs/pyShelf/man/man3/src_backend_lib_models_Base.3 b/docs/pyShelf/man/man3/src_backend_lib_models_Base.3 new file mode 100644 index 0000000..705be85 --- /dev/null +++ b/docs/pyShelf/man/man3/src_backend_lib_models_Base.3 @@ -0,0 +1,25 @@ +.TH "src.backend.lib.models.Base" 3 "Sat Aug 9 2025 19:53:55" "Version 0.8.0" "pyShelf Open Source Ebook Server" \" -*- nroff -*- +.ad l +.nh +.SH NAME +src.backend.lib.models.Base +.SH SYNOPSIS +.br +.PP +.PP +Inherits DeclarativeBase\&. +.PP +Inherited by \fBsrc\&.backend\&.lib\&.models\&.Book\fP, \fBsrc\&.backend\&.lib\&.models\&.BookCollection\fP, \fBsrc\&.backend\&.lib\&.models\&.Collection\fP, and \fBsrc\&.backend\&.lib\&.models\&.User\fP\&. +.SH "Detailed Description" +.PP + +.PP +.nf +Base class for all models\&. +.fi +.PP + + +.SH "Author" +.PP +Generated automatically by Doxygen for pyShelf Open Source Ebook Server from the source code\&. diff --git a/docs/pyShelf/man/man3/src_backend_lib_models_Book.3 b/docs/pyShelf/man/man3/src_backend_lib_models_Book.3 new file mode 100644 index 0000000..244b8c4 --- /dev/null +++ b/docs/pyShelf/man/man3/src_backend_lib_models_Book.3 @@ -0,0 +1,111 @@ +.TH "src.backend.lib.models.Book" 3 "Sat Aug 9 2025 19:53:55" "Version 0.8.0" "pyShelf Open Source Ebook Server" \" -*- nroff -*- +.ad l +.nh +.SH NAME +src.backend.lib.models.Book +.SH SYNOPSIS +.br +.PP +.PP +Inherits \fBsrc\&.backend\&.lib\&.models\&.Base\fP\&. +.SS "Static Public Attributes" + +.in +1c +.ti -1c +.RI "Mapped \fBid\fP = mapped_column(primary_key=True, nullable=False)" +.br +.ti -1c +.RI "Mapped \fBtitle\fP [str]" +.br +.ti -1c +.RI "Mapped \fBauthor\fP [Optional[str]]" +.br +.ti -1c +.RI "Mapped \fBcategories\fP [Optional[str]]" +.br +.ti -1c +.RI "Mapped \fBcover\fP [Optional[bytes]]" +.br +.ti -1c +.RI "Mapped \fBpages\fP [Optional[int]]" +.br +.ti -1c +.RI "Mapped \fBprogress\fP [Optional[float]]" +.br +.ti -1c +.RI "Mapped \fBfile_name\fP [str]" +.br +.ti -1c +.RI "Mapped \fBdescription\fP [Optional[str]]" +.br +.ti -1c +.RI "Mapped \fBdate\fP [timestamp]" +.br +.ti -1c +.RI "Mapped \fBrights\fP [Optional[str]]" +.br +.ti -1c +.RI "Mapped \fBtags\fP [Optional[str]]" +.br +.ti -1c +.RI "Mapped \fBidentifier\fP [Optional[str]]" +.br +.ti -1c +.RI "Mapped \fBpublisher\fP [Optional[str]]" +.br +.ti -1c +.RI "\fBbook_collections\fP" +.br +.in -1c +.SH "Detailed Description" +.PP + +.PP +.nf +Book model\&. +.fi +.PP + +.SH "Member Data Documentation" +.PP +.SS "Mapped src\&.backend\&.lib\&.models\&.Book\&.author [Optional[str]]\fR [static]\fP" + +.SS "src\&.backend\&.lib\&.models\&.Book\&.book_collections\fR [static]\fP" +\fBInitial value:\fP +.nf += relationship( + "BookCollection", back_populates="book", cascade="all, delete\-orphan" + ) +.PP +.fi + +.SS "Mapped src\&.backend\&.lib\&.models\&.Book\&.categories [Optional[str]]\fR [static]\fP" + +.SS "Mapped src\&.backend\&.lib\&.models\&.Book\&.cover [Optional[bytes]]\fR [static]\fP" + +.SS "Mapped src\&.backend\&.lib\&.models\&.Book\&.date [timestamp]\fR [static]\fP" + +.SS "Mapped src\&.backend\&.lib\&.models\&.Book\&.description [Optional[str]]\fR [static]\fP" + +.SS "Mapped src\&.backend\&.lib\&.models\&.Book\&.file_name [str]\fR [static]\fP" + +.SS "Mapped src\&.backend\&.lib\&.models\&.Book\&.id = mapped_column(primary_key=True, nullable=False)\fR [static]\fP" + +.SS "Mapped src\&.backend\&.lib\&.models\&.Book\&.identifier [Optional[str]]\fR [static]\fP" + +.SS "Mapped src\&.backend\&.lib\&.models\&.Book\&.pages [Optional[int]]\fR [static]\fP" + +.SS "Mapped src\&.backend\&.lib\&.models\&.Book\&.progress [Optional[float]]\fR [static]\fP" + +.SS "Mapped src\&.backend\&.lib\&.models\&.Book\&.publisher [Optional[str]]\fR [static]\fP" + +.SS "Mapped src\&.backend\&.lib\&.models\&.Book\&.rights [Optional[str]]\fR [static]\fP" + +.SS "Mapped src\&.backend\&.lib\&.models\&.Book\&.tags [Optional[str]]\fR [static]\fP" + +.SS "Mapped src\&.backend\&.lib\&.models\&.Book\&.title [str]\fR [static]\fP" + + +.SH "Author" +.PP +Generated automatically by Doxygen for pyShelf Open Source Ebook Server from the source code\&. diff --git a/docs/pyShelf/man/man3/src_backend_lib_models_BookCollection.3 b/docs/pyShelf/man/man3/src_backend_lib_models_BookCollection.3 new file mode 100644 index 0000000..68f5181 --- /dev/null +++ b/docs/pyShelf/man/man3/src_backend_lib_models_BookCollection.3 @@ -0,0 +1,54 @@ +.TH "src.backend.lib.models.BookCollection" 3 "Sat Aug 9 2025 19:53:55" "Version 0.8.0" "pyShelf Open Source Ebook Server" \" -*- nroff -*- +.ad l +.nh +.SH NAME +src.backend.lib.models.BookCollection +.SH SYNOPSIS +.br +.PP +.PP +Inherits \fBsrc\&.backend\&.lib\&.models\&.Base\fP\&. +.SS "Static Public Attributes" + +.in +1c +.ti -1c +.RI "Mapped \fBid\fP = mapped_column(primary_key=True)" +.br +.ti -1c +.RI "Mapped \fBbook_id\fP = mapped_column(ForeignKey('Book\&.id'))" +.br +.ti -1c +.RI "Mapped \fBcollection_id\fP = mapped_column(ForeignKey('Collection\&.id'))" +.br +.ti -1c +.RI "\fBbook\fP = relationship('Book', back_populates='book_collections')" +.br +.ti -1c +.RI "\fBcollection\fP = relationship('Collection', back_populates='book_collections')" +.br +.in -1c +.SH "Detailed Description" +.PP + +.PP +.nf +Association table linking Books and Collections\&. +.fi +.PP + +.SH "Member Data Documentation" +.PP +.SS "src\&.backend\&.lib\&.models\&.BookCollection\&.book = relationship('Book', back_populates='book_collections')\fR [static]\fP" + +.SS "Mapped src\&.backend\&.lib\&.models\&.BookCollection\&.book_id = mapped_column(ForeignKey('Book\&.id'))\fR [static]\fP" + +.SS "src\&.backend\&.lib\&.models\&.BookCollection\&.collection = relationship('Collection', back_populates='book_collections')\fR [static]\fP" + +.SS "Mapped src\&.backend\&.lib\&.models\&.BookCollection\&.collection_id = mapped_column(ForeignKey('Collection\&.id'))\fR [static]\fP" + +.SS "Mapped src\&.backend\&.lib\&.models\&.BookCollection\&.id = mapped_column(primary_key=True)\fR [static]\fP" + + +.SH "Author" +.PP +Generated automatically by Doxygen for pyShelf Open Source Ebook Server from the source code\&. diff --git a/docs/pyShelf/man/man3/src_backend_lib_models_Collection.3 b/docs/pyShelf/man/man3/src_backend_lib_models_Collection.3 new file mode 100644 index 0000000..efe1f75 --- /dev/null +++ b/docs/pyShelf/man/man3/src_backend_lib_models_Collection.3 @@ -0,0 +1,51 @@ +.TH "src.backend.lib.models.Collection" 3 "Sat Aug 9 2025 19:53:55" "Version 0.8.0" "pyShelf Open Source Ebook Server" \" -*- nroff -*- +.ad l +.nh +.SH NAME +src.backend.lib.models.Collection +.SH SYNOPSIS +.br +.PP +.PP +Inherits \fBsrc\&.backend\&.lib\&.models\&.Base\fP\&. +.SS "Static Public Attributes" + +.in +1c +.ti -1c +.RI "Mapped \fBid\fP = mapped_column(primary_key=True)" +.br +.ti -1c +.RI "Mapped \fBname\fP = mapped_column(unique=True)" +.br +.ti -1c +.RI "\fBbook_collections\fP" +.br +.in -1c +.SH "Detailed Description" +.PP + +.PP +.nf +Collection model\&. +.fi +.PP + +.SH "Member Data Documentation" +.PP +.SS "src\&.backend\&.lib\&.models\&.Collection\&.book_collections\fR [static]\fP" +\fBInitial value:\fP +.nf += relationship( + "BookCollection", back_populates="collection", cascade="all, delete\-orphan" + ) +.PP +.fi + +.SS "Mapped src\&.backend\&.lib\&.models\&.Collection\&.id = mapped_column(primary_key=True)\fR [static]\fP" + +.SS "Mapped src\&.backend\&.lib\&.models\&.Collection\&.name = mapped_column(unique=True)\fR [static]\fP" + + +.SH "Author" +.PP +Generated automatically by Doxygen for pyShelf Open Source Ebook Server from the source code\&. diff --git a/docs/pyShelf/man/man3/src_backend_lib_models_User.3 b/docs/pyShelf/man/man3/src_backend_lib_models_User.3 new file mode 100644 index 0000000..ec6025b --- /dev/null +++ b/docs/pyShelf/man/man3/src_backend_lib_models_User.3 @@ -0,0 +1,88 @@ +.TH "src.backend.lib.models.User" 3 "Sat Aug 9 2025 19:53:55" "Version 0.8.0" "pyShelf Open Source Ebook Server" \" -*- nroff -*- +.ad l +.nh +.SH NAME +src.backend.lib.models.User +.SH SYNOPSIS +.br +.PP +.PP +Inherits \fBsrc\&.backend\&.lib\&.models\&.Base\fP\&. +.SS "Static Public Attributes" + +.in +1c +.ti -1c +.RI "Mapped \fBid\fP = mapped_column(primary_key=True, nullable=False)" +.br +.ti -1c +.RI "Mapped \fBusername\fP = mapped_column(unique=True, nullable=False)" +.br +.ti -1c +.RI "Mapped \fBpassword\fP = mapped_column(nullable=False)" +.br +.ti -1c +.RI "Mapped \fBemail\fP = mapped_column(unique=True, nullable=True)" +.br +.ti -1c +.RI "Mapped \fBdate_joined\fP" +.br +.ti -1c +.RI "Mapped \fBlast_login\fP" +.br +.ti -1c +.RI "Mapped \fBis_active\fP = mapped_column(nullable=False, default=True)" +.br +.ti -1c +.RI "Mapped \fBis_admin\fP = mapped_column(nullable=False, default=False)" +.br +.ti -1c +.RI "Mapped \fBis_superuser\fP = mapped_column(nullable=False, default=False)" +.br +.in -1c +.SH "Detailed Description" +.PP + +.PP +.nf +User model\&. +.fi +.PP + +.SH "Member Data Documentation" +.PP +.SS "Mapped src\&.backend\&.lib\&.models\&.User\&.date_joined\fR [static]\fP" +\fBInitial value:\fP +.nf += mapped_column( + nullable=False, server_default=func\&.CURRENT_TIMESTAMP() + ) +.PP +.fi + +.SS "Mapped src\&.backend\&.lib\&.models\&.User\&.email = mapped_column(unique=True, nullable=True)\fR [static]\fP" + +.SS "Mapped src\&.backend\&.lib\&.models\&.User\&.id = mapped_column(primary_key=True, nullable=False)\fR [static]\fP" + +.SS "Mapped src\&.backend\&.lib\&.models\&.User\&.is_active = mapped_column(nullable=False, default=True)\fR [static]\fP" + +.SS "Mapped src\&.backend\&.lib\&.models\&.User\&.is_admin = mapped_column(nullable=False, default=False)\fR [static]\fP" + +.SS "Mapped src\&.backend\&.lib\&.models\&.User\&.is_superuser = mapped_column(nullable=False, default=False)\fR [static]\fP" + +.SS "Mapped src\&.backend\&.lib\&.models\&.User\&.last_login\fR [static]\fP" +\fBInitial value:\fP +.nf += mapped_column( + nullable=True, server_default=None + ) +.PP +.fi + +.SS "Mapped src\&.backend\&.lib\&.models\&.User\&.password = mapped_column(nullable=False)\fR [static]\fP" + +.SS "Mapped src\&.backend\&.lib\&.models\&.User\&.username = mapped_column(unique=True, nullable=False)\fR [static]\fP" + + +.SH "Author" +.PP +Generated automatically by Doxygen for pyShelf Open Source Ebook Server from the source code\&. diff --git a/docs/pyShelf/man/man3/src_backend_lib_overide_ACatalogue.3 b/docs/pyShelf/man/man3/src_backend_lib_overide_ACatalogue.3 new file mode 100644 index 0000000..f961125 --- /dev/null +++ b/docs/pyShelf/man/man3/src_backend_lib_overide_ACatalogue.3 @@ -0,0 +1,269 @@ +.TH "src.backend.lib.overide.ACatalogue" 3 "Sat Aug 9 2025 19:53:55" "Version 0.8.0" "pyShelf Open Source Ebook Server" \" -*- nroff -*- +.ad l +.nh +.SH NAME +src.backend.lib.overide.ACatalogue +.SH SYNOPSIS +.br +.PP +.PP +Inherits \fBsrc\&.backend\&.lib\&.library\&.Catalogue\fP\&. +.SS "Public Member Functions" + +.in +1c +.ti -1c +.RI "\fB__init__\fP (self)" +.br +.ti -1c +.RI "\fBscan_folder\fP (self, _path=None)" +.br +.ti -1c +.RI "\fBimport_books\fP (self, **kwargs)" +.br +.ti -1c +.RI "\fBfilter_books\fP (self)" +.br +.ti -1c +.RI "\fBprocess_by_filetype\fP (self, book)" +.br +.ti -1c +.RI "\fBextract_metadata_epub\fP (self, book)" +.br +.ti -1c +.RI "\fBextract_metadata_pdf\fP (self, book)" +.br +.ti -1c +.RI "\fBextract_metadata_mobi\fP (self, book)" +.br +.ti -1c +.RI "\fBextract_content\fP (self, book_zip, book)" +.br +.ti -1c +.RI "\fBextract_cover_html\fP (self, book_zip, book)" +.br +.ti -1c +.RI "\fBextract_cover_image\fP (self, book_zip, book)" +.br +.ti -1c +.RI "\fBcompare_shelf_current\fP (self)" +.br +.in -1c +.SS "Static Public Member Functions" + +.in +1c +.ti -1c +.RI "\fBprocess_epub\fP (book)" +.br +.ti -1c +.RI "\fBstripTags\fP (source)" +.br +.in -1c +.SS "Public Attributes" + +.in +1c +.ti -1c +.RI "list \fBfile_list\fP = []" +.br +.ti -1c +.RI "\fBopf_regx\fP = re\&.compile(r'\\\&.opf')" +.br +.ti -1c +.RI "\fBcover_regx\fP = re\&.compile(r'\\\&.jpg|\\\&.jpeg|\\\&.png|\\\&.bmp|\\\&.gif')" +.br +.ti -1c +.RI "\fBhtml_regx\fP = re\&.compile(r'\\\&.html')" +.br +.ti -1c +.RI "\fBtitle_sanitization_regx\fP = re\&.compile(r'^(Book )+[0\-9]*')" +.br +.ti -1c +.RI "\fBtitle_sanitization_lvl2_regx\fP" +.br +.ti -1c +.RI "\fBtitle_sanitization_dirs_regx\fP = re\&.compile(r'/')" +.br +.ti -1c +.RI "\fBroot_dir\fP = config\&.root" +.br +.ti -1c +.RI "\fBbook_folder\fP = config\&.book_path" +.br +.ti -1c +.RI "\fBbooks\fP = None" +.br +.ti -1c +.RI "\fBdb_pointer\fP = config\&.catalogue_db" +.br +.ti -1c +.RI "\fBconfig\fP = config" +.br +.in -1c +.SH "Detailed Description" +.PP + +.PP +.nf +Aynchronous overide of library\&.Catalogue, +: TODO : Complete or discard this overide + +.fi +.PP + +.SH "Constructor & Destructor Documentation" +.PP +.SS "src\&.backend\&.lib\&.overide\&.ACatalogue\&.__init__ ( self)" + +.SH "Member Function Documentation" +.PP +.SS "src\&.backend\&.lib\&.library\&.Catalogue\&.compare_shelf_current ( self)\fR [inherited]\fP" + +.PP +.nf +Calls storage system, gets list of books stored and compares against files on disk + +.fi +.PP + +.SS "src\&.backend\&.lib\&.library\&.Catalogue\&.extract_content ( self, book_zip, book)\fR [inherited]\fP" + +.PP +.nf +Opens epub as zip file filters then stores as list any files matching opf_regx + +.fi +.PP + +.SS "src\&.backend\&.lib\&.library\&.Catalogue\&.extract_cover_html ( self, book_zip, book)\fR [inherited]\fP" + +.PP +.nf +Opens epub as zip file filters then stores as list any files matching html_regx + +.fi +.PP + +.SS "src\&.backend\&.lib\&.library\&.Catalogue\&.extract_cover_image ( self, book_zip, book)\fR [inherited]\fP" + +.PP +.nf +Opens epub as zip file filters then stores as list any files matching cover_regx + +.fi +.PP + +.SS "src\&.backend\&.lib\&.library\&.Catalogue\&.extract_metadata_epub ( self, book)\fR [inherited]\fP" + +.PP +.nf +Extract metadata from epub file + +:param book: Dictionary of epub file contents +:returns: Dictionary of book metadata + +.fi +.PP + +.SS "src\&.backend\&.lib\&.library\&.Catalogue\&.extract_metadata_mobi ( self, book)\fR [inherited]\fP" + +.SS "src\&.backend\&.lib\&.library\&.Catalogue\&.extract_metadata_pdf ( self, book)\fR [inherited]\fP" + +.PP +.nf +Return extracted metadata +:NOTES: Retrieval of data has been problematic, some pdf's providing +reliable titles that corespond with the actual, and others being +nonsense\&. + +.fi +.PP + +.SS "src\&.backend\&.lib\&.library\&.Catalogue\&.filter_books ( self)\fR [inherited]\fP" + +.PP +.nf +Calls scan_folder and filters out book files\&. + +:returns self\&._book_list_expanded: json string containing +all book metadata + +.fi +.PP + +.PP +Reimplemented in \fBsrc\&.backend\&.tests\&.library_test\&.Test_Catalogue\fP\&. +.SS "src\&.backend\&.lib\&.overide\&.ACatalogue\&.import_books ( self, ** kwargs)" + +.PP +.nf +Async overide of import_books + +.fi +.PP + +.PP +Reimplemented from \fBsrc\&.backend\&.lib\&.library\&.Catalogue\fP\&. +.SS "src\&.backend\&.lib\&.library\&.Catalogue\&.process_by_filetype ( self, book)\fR [inherited]\fP" + +.PP +.nf +Determine books filetype and process\&. +.fi +.PP + +.SS "src\&.backend\&.lib\&.library\&.Catalogue\&.process_epub ( book)\fR [static]\fP, \fR [inherited]\fP" + +.PP +.nf +Return dictionary of epub file contents +.fi +.PP + +.SS "src\&.backend\&.lib\&.overide\&.ACatalogue\&.scan_folder ( self, _path = \fRNone\fP)" + +.PP +.nf +Scan folder by _path, allows recurisive scanning + +.fi +.PP + +.PP +Reimplemented from \fBsrc\&.backend\&.lib\&.library\&.Catalogue\fP\&. +.SS "src\&.backend\&.lib\&.library\&.Catalogue\&.stripTags ( source)\fR [static]\fP, \fR [inherited]\fP" + +.SH "Member Data Documentation" +.PP +.SS "src\&.backend\&.lib\&.library\&.Catalogue\&.book_folder = config\&.book_path\fR [inherited]\fP" + +.SS "src\&.backend\&.lib\&.library\&.Catalogue\&.books = None\fR [inherited]\fP" + +.SS "src\&.backend\&.lib\&.library\&.Catalogue\&.config = config\fR [inherited]\fP" + +.SS "src\&.backend\&.lib\&.library\&.Catalogue\&.cover_regx = re\&.compile(r'\\\&.jpg|\\\&.jpeg|\\\&.png|\\\&.bmp|\\\&.gif')\fR [inherited]\fP" + +.SS "src\&.backend\&.lib\&.library\&.Catalogue\&.db_pointer = config\&.catalogue_db\fR [inherited]\fP" + +.SS "list src\&.backend\&.lib\&.library\&.Catalogue\&.file_list = []\fR [inherited]\fP" + +.SS "src\&.backend\&.lib\&.library\&.Catalogue\&.html_regx = re\&.compile(r'\\\&.html')\fR [inherited]\fP" + +.SS "src\&.backend\&.lib\&.library\&.Catalogue\&.opf_regx = re\&.compile(r'\\\&.opf')\fR [inherited]\fP" + +.SS "src\&.backend\&.lib\&.library\&.Catalogue\&.root_dir = config\&.root\fR [inherited]\fP" + +.SS "src\&.backend\&.lib\&.library\&.Catalogue\&.title_sanitization_dirs_regx = re\&.compile(r'/')\fR [inherited]\fP" + +.SS "src\&.backend\&.lib\&.library\&.Catalogue\&.title_sanitization_lvl2_regx\fR [inherited]\fP" +\fBInitial value:\fP +.nf += re\&.compile( + r"^(Book )+[0\-9]*\\W+(\-)") +.PP +.fi + +.SS "src\&.backend\&.lib\&.library\&.Catalogue\&.title_sanitization_regx = re\&.compile(r'^(Book )+[0\-9]*')\fR [inherited]\fP" + + +.SH "Author" +.PP +Generated automatically by Doxygen for pyShelf Open Source Ebook Server from the source code\&. diff --git a/docs/pyShelf/man/man3/src_backend_lib_pyShelf_InitFiles.3 b/docs/pyShelf/man/man3/src_backend_lib_pyShelf_InitFiles.3 new file mode 100644 index 0000000..47c05bc --- /dev/null +++ b/docs/pyShelf/man/man3/src_backend_lib_pyShelf_InitFiles.3 @@ -0,0 +1,46 @@ +.TH "src.backend.lib.pyShelf.InitFiles" 3 "Sat Aug 9 2025 19:53:55" "Version 0.8.0" "pyShelf Open Source Ebook Server" \" -*- nroff -*- +.ad l +.nh +.SH NAME +src.backend.lib.pyShelf.InitFiles +.SH SYNOPSIS +.br +.PP +.SS "Public Member Functions" + +.in +1c +.ti -1c +.RI "\fB__init__\fP (self, file_array)" +.br +.ti -1c +.RI "\fBCreateFile\fP (self, _pointer)" +.br +.in -1c +.SH "Detailed Description" +.PP + +.PP +.nf +First run file creation operations +.fi +.PP + +.SH "Constructor & Destructor Documentation" +.PP +.SS "src\&.backend\&.lib\&.pyShelf\&.InitFiles\&.__init__ ( self, file_array)" + +.SH "Member Function Documentation" +.PP +.SS "src\&.backend\&.lib\&.pyShelf\&.InitFiles\&.CreateFile ( self, _pointer)" + +.PP +.nf +Checks if file exists and creates it if not + +.fi +.PP + + +.SH "Author" +.PP +Generated automatically by Doxygen for pyShelf Open Source Ebook Server from the source code\&. diff --git a/docs/pyShelf/man/man3/src_backend_lib_pyShelf_Server.3 b/docs/pyShelf/man/man3/src_backend_lib_pyShelf_Server.3 new file mode 100644 index 0000000..57a430d --- /dev/null +++ b/docs/pyShelf/man/man3/src_backend_lib_pyShelf_Server.3 @@ -0,0 +1,102 @@ +.TH "src.backend.lib.pyShelf.Server" 3 "Sat Aug 9 2025 19:53:55" "Version 0.8.0" "pyShelf Open Source Ebook Server" \" -*- nroff -*- +.ad l +.nh +.SH NAME +src.backend.lib.pyShelf.Server +.SH SYNOPSIS +.br +.PP +.SS "Public Member Functions" + +.in +1c +.ti -1c +.RI "\fB__init__\fP (self, root)" +.br +.ti -1c +.RI "\fB__aexit__\fP (self, *args, **kwargs)" +.br +.ti -1c +.RI "\fBinitialize_server\fP (self)" +.br +.ti -1c +.RI "\fBrunImport\fP (self)" +.br +.ti -1c +.RI "\fBsocketio\fP (self, websocket, path)" +.br +.ti -1c +.RI "\fBpong\fP (self)" +.br +.ti -1c +.RI "\fBstart\fP (self)" +.br +.in -1c +.SS "Public Attributes" + +.in +1c +.ti -1c +.RI "\fBroot\fP = root" +.br +.ti -1c +.RI "tuple \fBhost\fP = ('127\&.0\&.0\&.1', 1337)" +.br +.ti -1c +.RI "\fBconfig\fP = \fBConfig\fP(self\&.root)" +.br +.ti -1c +.RI "\fBloop\fP = None" +.br +.ti -1c +.RI "\fBserve\fP = None" +.br +.ti -1c +.RI "\fBsocketio\fP" +.br +.in -1c +.SH "Detailed Description" +.PP + +.PP +.nf +Main Server Container +:TODO: Document this + +.fi +.PP + +.SH "Constructor & Destructor Documentation" +.PP +.SS "src\&.backend\&.lib\&.pyShelf\&.Server\&.__init__ ( self, root)" + +.SH "Member Function Documentation" +.PP +.SS "src\&.backend\&.lib\&.pyShelf\&.Server\&.__aexit__ ( self, * args, ** kwargs)" + +.SS "src\&.backend\&.lib\&.pyShelf\&.Server\&.initialize_server ( self)" + +.SS "src\&.backend\&.lib\&.pyShelf\&.Server\&.pong ( self)" + +.SS "src\&.backend\&.lib\&.pyShelf\&.Server\&.runImport ( self)" + +.SS "src\&.backend\&.lib\&.pyShelf\&.Server\&.socketio ( self, websocket, path)" + +.SS "src\&.backend\&.lib\&.pyShelf\&.Server\&.start ( self)" + +.SH "Member Data Documentation" +.PP +.SS "src\&.backend\&.lib\&.pyShelf\&.Server\&.config = \fBConfig\fP(self\&.root)" + +.SS "tuple src\&.backend\&.lib\&.pyShelf\&.Server\&.host = ('127\&.0\&.0\&.1', 1337)" + +.SS "src\&.backend\&.lib\&.pyShelf\&.Server\&.loop = None" + +.SS "src\&.backend\&.lib\&.pyShelf\&.Server\&.root = root" + +.SS "src\&.backend\&.lib\&.pyShelf\&.Server\&.serve = None" + +.SS "src\&.backend\&.lib\&.pyShelf\&.Server\&.socketio" + + +.SH "Author" +.PP +Generated automatically by Doxygen for pyShelf Open Source Ebook Server from the source code\&. diff --git a/docs/pyShelf/man/man3/src_backend_lib_storage.3 b/docs/pyShelf/man/man3/src_backend_lib_storage.3 new file mode 100644 index 0000000..73b4b35 --- /dev/null +++ b/docs/pyShelf/man/man3/src_backend_lib_storage.3 @@ -0,0 +1,27 @@ +.TH "src.backend.lib.storage" 3 "Sat Aug 9 2025 19:53:55" "Version 0.8.0" "pyShelf Open Source Ebook Server" \" -*- nroff -*- +.ad l +.nh +.SH NAME +src.backend.lib.storage +.SH SYNOPSIS +.br +.PP +.SS "Classes" + +.in +1c +.ti -1c +.RI "class \fBStorage\fP" +.br +.in -1c +.SH "Detailed Description" +.PP + +.PP +.nf +Pyshelf's Main Storage Class\&. +.fi +.PP + +.SH "Author" +.PP +Generated automatically by Doxygen for pyShelf Open Source Ebook Server from the source code\&. diff --git a/docs/pyShelf/man/man3/src_backend_lib_storage_Storage.3 b/docs/pyShelf/man/man3/src_backend_lib_storage_Storage.3 new file mode 100644 index 0000000..a34d6a4 --- /dev/null +++ b/docs/pyShelf/man/man3/src_backend_lib_storage_Storage.3 @@ -0,0 +1,297 @@ +.TH "src.backend.lib.storage.Storage" 3 "Sat Aug 9 2025 19:53:55" "Version 0.8.0" "pyShelf Open Source Ebook Server" \" -*- nroff -*- +.ad l +.nh +.SH NAME +src.backend.lib.storage.Storage +.SH SYNOPSIS +.br +.PP +.SS "Public Member Functions" + +.in +1c +.ti -1c +.RI "\fB__init__\fP (self, config)" +.br +.ti -1c +.RI "\fBget_connection_string\fP (self)" +.br +.ti -1c +.RI "\fBcreate_tables\fP (self)" +.br +.ti -1c +.RI "\fBinsert_book\fP (self, book)" +.br +.ti -1c +.RI "\fBbook_paths_list\fP (self)" +.br +.ti -1c +.RI "list() \fBparse_collections_from_path\fP (self, dict() book)" +.br +.ti -1c +.RI "\fBmake_collections\fP (self)" +.br +.ti -1c +.RI "\fBget_books\fP (self, collection=None, skip=None, limit=None)" +.br +.ti -1c +.RI "\fBget_book\fP (self, id)" +.br +.ti -1c +.RI "\fBget_collections\fP (self)" +.br +.ti -1c +.RI "\fBget_collection\fP (self, name)" +.br +.ti -1c +.RI "dict \fBparse_advanced_query\fP (self, str query)" +.br +.ti -1c +.RI "\fBfuzzy_search_books\fP (self, str query, int limit=30)" +.br +.in -1c +.SS "Public Attributes" + +.in +1c +.ti -1c +.RI "\fBconfig\fP = config" +.br +.ti -1c +.RI "\fBsql\fP = self\&.config\&.catalogue_db" +.br +.ti -1c +.RI "\fBuser\fP = self\&.config\&.user" +.br +.ti -1c +.RI "\fBpassword\fP = self\&.config\&.password" +.br +.ti -1c +.RI "\fBdb_host\fP = self\&.config\&.db_host" +.br +.ti -1c +.RI "\fBdb_port\fP = self\&.config\&.db_port" +.br +.ti -1c +.RI "\fBengine\fP" +.br +.in -1c +.SH "Detailed Description" +.PP + +.PP +.nf +Create a new Storage object\&. + +>>> db = Storage(config) + +Parameters +---------- +config : Config() + Main program configuration\&. + +Attributes +---------- +config : Stores configuration +sql : Database Name +user : Database User Name +password : Database Password +db_host : Database Host +db_port : Database Port +engine : sqlalchemy\&.create_engine(url, executor, kw) + +.fi +.PP + +.SH "Constructor & Destructor Documentation" +.PP +.SS "src\&.backend\&.lib\&.storage\&.Storage\&.__init__ ( self, config)" + +.PP +.nf +Initialize storage object\&. +.fi +.PP + +.SH "Member Function Documentation" +.PP +.SS "src\&.backend\&.lib\&.storage\&.Storage\&.book_paths_list ( self)" + +.PP +.nf +Get file paths from database for comparison to system files\&. + +Returns +------- +_result : ScalarResult Object + +.fi +.PP + +.SS "src\&.backend\&.lib\&.storage\&.Storage\&.create_tables ( self)" + +.PP +.nf +Create table structure\&. +.fi +.PP + +.SS "src\&.backend\&.lib\&.storage\&.Storage\&.fuzzy_search_books ( self, str query, int limit = \fR30\fP)" + +.SS "src\&.backend\&.lib\&.storage\&.Storage\&.get_book ( self, id)" + +.PP +.nf +Get book from database\&. + +Parameters +---------- +id : int + Book ID to filter by\&. + +Returns +------- +_result : ScalarResult Object + +.fi +.PP + +.SS "src\&.backend\&.lib\&.storage\&.Storage\&.get_books ( self, collection = \fRNone\fP, skip = \fRNone\fP, limit = \fRNone\fP)" + +.PP +.nf +Get books from database\&. + +Parameters +---------- +collection : int or None + Collection ID to filter by\&. +skip : int or None + Number of records to skip (offset)\&. +limit : int or None + Maximum number of records to return\&. + +.fi +.PP + +.SS "src\&.backend\&.lib\&.storage\&.Storage\&.get_collection ( self, name)" + +.PP +.nf +Get collection from database\&. + +Returns +------- +_result : ScalarResult Object + +.fi +.PP + +.SS "src\&.backend\&.lib\&.storage\&.Storage\&.get_collections ( self)" + +.PP +.nf +Get collections from database\&. + +Returns +------- +_result : ScalarResult Object + +.fi +.PP + +.SS "src\&.backend\&.lib\&.storage\&.Storage\&.get_connection_string ( self)" + +.PP +.nf +Get connection string\&. + +Engine type references config\&.json:DB_ENGINE\&. + +Returns +------- +str : sqlalchemy Connection String + +.fi +.PP + +.SS "src\&.backend\&.lib\&.storage\&.Storage\&.insert_book ( self, book)" + +.PP +.nf +Insert a new book into the database\&. + +Parameters +---------- +book: dict() + Book object to insert\&. + +Returns +------- +bool + True on success False on failure + +.fi +.PP + +.SS "src\&.backend\&.lib\&.storage\&.Storage\&.make_collections ( self)" + +.PP +.nf +Ensure collections exist and link them to books (many-to-many)\&. +.fi +.PP + +.SS " dict src\&.backend\&.lib\&.storage\&.Storage\&.parse_advanced_query ( self, str query)" + +.PP +.nf +Parse a query like 'title:"dark tower" author:king tags:fantasy' +.fi +.PP + +.SS " list() src\&.backend\&.lib\&.storage\&.Storage\&.parse_collections_from_path ( self, dict() book)" + +.PP +.nf +Parse book path's to determine common folder structure\&. + +Stores collections based on shared paths\&. + +Parameters +---------- +book : dict() + Book object to parse\&. + +Returns +------- +collections : list() + List of collections\&. + +.fi +.PP + +.SH "Member Data Documentation" +.PP +.SS "src\&.backend\&.lib\&.storage\&.Storage\&.config = config" + +.SS "src\&.backend\&.lib\&.storage\&.Storage\&.db_host = self\&.config\&.db_host" + +.SS "src\&.backend\&.lib\&.storage\&.Storage\&.db_port = self\&.config\&.db_port" + +.SS "src\&.backend\&.lib\&.storage\&.Storage\&.engine" +\fBInitial value:\fP +.nf += create_engine(self\&.get_connection_string(), + pool_pre_ping=True) +.PP +.fi + +.SS "src\&.backend\&.lib\&.storage\&.Storage\&.password = self\&.config\&.password" + +.SS "src\&.backend\&.lib\&.storage\&.Storage\&.sql = self\&.config\&.catalogue_db" + +.SS "src\&.backend\&.lib\&.storage\&.Storage\&.user = self\&.config\&.user" + + +.SH "Author" +.PP +Generated automatically by Doxygen for pyShelf Open Source Ebook Server from the source code\&. diff --git a/docs/pyShelf/man/man3/src_backend_tests_config_test_TestConfig.3 b/docs/pyShelf/man/man3/src_backend_tests_config_test_TestConfig.3 new file mode 100644 index 0000000..b8896f6 --- /dev/null +++ b/docs/pyShelf/man/man3/src_backend_tests_config_test_TestConfig.3 @@ -0,0 +1,46 @@ +.TH "src.backend.tests.config_test.TestConfig" 3 "Sat Aug 9 2025 19:53:55" "Version 0.8.0" "pyShelf Open Source Ebook Server" \" -*- nroff -*- +.ad l +.nh +.SH NAME +src.backend.tests.config_test.TestConfig +.SH SYNOPSIS +.br +.PP +.SS "Public Member Functions" + +.in +1c +.ti -1c +.RI "\fBtest_book_dir\fP (self)" +.br +.ti -1c +.RI "\fBtest_title\fP (self)" +.br +.ti -1c +.RI "\fBtest_version\fP (self)" +.br +.in -1c +.SS "Static Public Attributes" + +.in +1c +.ti -1c +.RI "\fBconfig\fP = \fBConfig\fP(os\&.path\&.abspath(os\&.path\&.curdir))" +.br +.in -1c +.SH "Detailed Description" +.PP +.SH "Member Function Documentation" +.PP +.SS "src\&.backend\&.tests\&.config_test\&.TestConfig\&.test_book_dir ( self)" + +.SS "src\&.backend\&.tests\&.config_test\&.TestConfig\&.test_title ( self)" + +.SS "src\&.backend\&.tests\&.config_test\&.TestConfig\&.test_version ( self)" + +.SH "Member Data Documentation" +.PP +.SS "src\&.backend\&.tests\&.config_test\&.TestConfig\&.config = \fBConfig\fP(os\&.path\&.abspath(os\&.path\&.curdir))\fR [static]\fP" + + +.SH "Author" +.PP +Generated automatically by Doxygen for pyShelf Open Source Ebook Server from the source code\&. diff --git a/docs/pyShelf/man/man3/src_backend_tests_library_test_TestCatalogue.3 b/docs/pyShelf/man/man3/src_backend_tests_library_test_TestCatalogue.3 new file mode 100644 index 0000000..debc775 --- /dev/null +++ b/docs/pyShelf/man/man3/src_backend_tests_library_test_TestCatalogue.3 @@ -0,0 +1,41 @@ +.TH "src.backend.tests.library_test.TestCatalogue" 3 "Sat Aug 9 2025 19:53:55" "Version 0.8.0" "pyShelf Open Source Ebook Server" \" -*- nroff -*- +.ad l +.nh +.SH NAME +src.backend.tests.library_test.TestCatalogue +.SH SYNOPSIS +.br +.PP +.SS "Public Member Functions" + +.in +1c +.ti -1c +.RI "\fBtest_filter_books\fP (self)" +.br +.in -1c +.SS "Static Public Attributes" + +.in +1c +.ti -1c +.RI "\fBroot\fP = os\&.path\&.abspath(os\&.path\&.curdir)" +.br +.ti -1c +.RI "\fBconfig\fP = \fBTest_Config\fP()" +.br +.in -1c +.SH "Detailed Description" +.PP +.SH "Member Function Documentation" +.PP +.SS "src\&.backend\&.tests\&.library_test\&.TestCatalogue\&.test_filter_books ( self)" + +.SH "Member Data Documentation" +.PP +.SS "src\&.backend\&.tests\&.library_test\&.TestCatalogue\&.config = \fBTest_Config\fP()\fR [static]\fP" + +.SS "src\&.backend\&.tests\&.library_test\&.TestCatalogue\&.root = os\&.path\&.abspath(os\&.path\&.curdir)\fR [static]\fP" + + +.SH "Author" +.PP +Generated automatically by Doxygen for pyShelf Open Source Ebook Server from the source code\&. diff --git a/docs/pyShelf/man/man3/src_backend_tests_library_test_Test_Catalogue.3 b/docs/pyShelf/man/man3/src_backend_tests_library_test_Test_Catalogue.3 new file mode 100644 index 0000000..e0c3150 --- /dev/null +++ b/docs/pyShelf/man/man3/src_backend_tests_library_test_Test_Catalogue.3 @@ -0,0 +1,269 @@ +.TH "src.backend.tests.library_test.Test_Catalogue" 3 "Sat Aug 9 2025 19:53:55" "Version 0.8.0" "pyShelf Open Source Ebook Server" \" -*- nroff -*- +.ad l +.nh +.SH NAME +src.backend.tests.library_test.Test_Catalogue +.SH SYNOPSIS +.br +.PP +.PP +Inherits \fBsrc\&.backend\&.lib\&.library\&.Catalogue\fP\&. +.SS "Public Member Functions" + +.in +1c +.ti -1c +.RI "\fB__init__\fP (self)" +.br +.ti -1c +.RI "\fBfilter_books\fP (self)" +.br +.ti -1c +.RI "\fBscan_folder\fP (self, _path=None)" +.br +.ti -1c +.RI "\fBprocess_by_filetype\fP (self, book)" +.br +.ti -1c +.RI "\fBextract_metadata_epub\fP (self, book)" +.br +.ti -1c +.RI "\fBextract_metadata_pdf\fP (self, book)" +.br +.ti -1c +.RI "\fBextract_metadata_mobi\fP (self, book)" +.br +.ti -1c +.RI "\fBextract_content\fP (self, book_zip, book)" +.br +.ti -1c +.RI "\fBextract_cover_html\fP (self, book_zip, book)" +.br +.ti -1c +.RI "\fBextract_cover_image\fP (self, book_zip, book)" +.br +.ti -1c +.RI "\fBcompare_shelf_current\fP (self)" +.br +.ti -1c +.RI "\fBimport_books\fP (self, list=None, **kwargs)" +.br +.in -1c +.SS "Static Public Member Functions" + +.in +1c +.ti -1c +.RI "\fBprocess_epub\fP (book)" +.br +.ti -1c +.RI "\fBstripTags\fP (source)" +.br +.in -1c +.SS "Public Attributes" + +.in +1c +.ti -1c +.RI "str \fBbook_shelf\fP = 'app/' + self\&.book_shelf" +.br +.ti -1c +.RI "list \fBfile_list\fP = []" +.br +.ti -1c +.RI "\fBopf_regx\fP = re\&.compile(r'\\\&.opf')" +.br +.ti -1c +.RI "\fBcover_regx\fP = re\&.compile(r'\\\&.jpg|\\\&.jpeg|\\\&.png|\\\&.bmp|\\\&.gif')" +.br +.ti -1c +.RI "\fBhtml_regx\fP = re\&.compile(r'\\\&.html')" +.br +.ti -1c +.RI "\fBtitle_sanitization_regx\fP = re\&.compile(r'^(Book )+[0\-9]*')" +.br +.ti -1c +.RI "\fBtitle_sanitization_lvl2_regx\fP" +.br +.ti -1c +.RI "\fBtitle_sanitization_dirs_regx\fP = re\&.compile(r'/')" +.br +.ti -1c +.RI "\fBroot_dir\fP = config\&.root" +.br +.ti -1c +.RI "\fBbook_folder\fP = config\&.book_path" +.br +.ti -1c +.RI "\fBbooks\fP = None" +.br +.ti -1c +.RI "\fBdb_pointer\fP = config\&.catalogue_db" +.br +.ti -1c +.RI "\fBconfig\fP = config" +.br +.in -1c +.SH "Detailed Description" +.PP +.SH "Constructor & Destructor Documentation" +.PP +.SS "src\&.backend\&.tests\&.library_test\&.Test_Catalogue\&.__init__ ( self)" + +.SH "Member Function Documentation" +.PP +.SS "src\&.backend\&.lib\&.library\&.Catalogue\&.compare_shelf_current ( self)\fR [inherited]\fP" + +.PP +.nf +Calls storage system, gets list of books stored and compares against files on disk + +.fi +.PP + +.SS "src\&.backend\&.lib\&.library\&.Catalogue\&.extract_content ( self, book_zip, book)\fR [inherited]\fP" + +.PP +.nf +Opens epub as zip file filters then stores as list any files matching opf_regx + +.fi +.PP + +.SS "src\&.backend\&.lib\&.library\&.Catalogue\&.extract_cover_html ( self, book_zip, book)\fR [inherited]\fP" + +.PP +.nf +Opens epub as zip file filters then stores as list any files matching html_regx + +.fi +.PP + +.SS "src\&.backend\&.lib\&.library\&.Catalogue\&.extract_cover_image ( self, book_zip, book)\fR [inherited]\fP" + +.PP +.nf +Opens epub as zip file filters then stores as list any files matching cover_regx + +.fi +.PP + +.SS "src\&.backend\&.lib\&.library\&.Catalogue\&.extract_metadata_epub ( self, book)\fR [inherited]\fP" + +.PP +.nf +Extract metadata from epub file + +:param book: Dictionary of epub file contents +:returns: Dictionary of book metadata + +.fi +.PP + +.SS "src\&.backend\&.lib\&.library\&.Catalogue\&.extract_metadata_mobi ( self, book)\fR [inherited]\fP" + +.SS "src\&.backend\&.lib\&.library\&.Catalogue\&.extract_metadata_pdf ( self, book)\fR [inherited]\fP" + +.PP +.nf +Return extracted metadata +:NOTES: Retrieval of data has been problematic, some pdf's providing +reliable titles that corespond with the actual, and others being +nonsense\&. + +.fi +.PP + +.SS "src\&.backend\&.tests\&.library_test\&.Test_Catalogue\&.filter_books ( self)" + +.PP +.nf +Calls scan_folder and filters out book files\&. + +:returns self\&._book_list_expanded: json string containing +all book metadata + +.fi +.PP + +.PP +Reimplemented from \fBsrc\&.backend\&.lib\&.library\&.Catalogue\fP\&. +.SS "src\&.backend\&.lib\&.library\&.Catalogue\&.import_books ( self, list = \fRNone\fP, ** kwargs)\fR [inherited]\fP" + +.PP +.nf +Main entry point for import operations\&. +Gets a list of new files via compare_shelf_current\&. +Iterates over list and inserts new books into database\&. + +.fi +.PP + +.PP +Reimplemented in \fBsrc\&.backend\&.lib\&.overide\&.ACatalogue\fP\&. +.SS "src\&.backend\&.lib\&.library\&.Catalogue\&.process_by_filetype ( self, book)\fR [inherited]\fP" + +.PP +.nf +Determine books filetype and process\&. +.fi +.PP + +.SS "src\&.backend\&.lib\&.library\&.Catalogue\&.process_epub ( book)\fR [static]\fP, \fR [inherited]\fP" + +.PP +.nf +Return dictionary of epub file contents +.fi +.PP + +.SS "src\&.backend\&.lib\&.library\&.Catalogue\&.scan_folder ( self, _path = \fRNone\fP)\fR [inherited]\fP" + +.PP +.nf +Scan folder by _path, allows recurisive scanning + +:param _path: Path to scan + +.fi +.PP + +.PP +Reimplemented in \fBsrc\&.backend\&.lib\&.overide\&.ACatalogue\fP\&. +.SS "src\&.backend\&.lib\&.library\&.Catalogue\&.stripTags ( source)\fR [static]\fP, \fR [inherited]\fP" + +.SH "Member Data Documentation" +.PP +.SS "src\&.backend\&.lib\&.library\&.Catalogue\&.book_folder = config\&.book_path\fR [inherited]\fP" + +.SS "str src\&.backend\&.tests\&.library_test\&.Test_Catalogue\&.book_shelf = 'app/' + self\&.book_shelf" + +.SS "src\&.backend\&.lib\&.library\&.Catalogue\&.books = None\fR [inherited]\fP" + +.SS "src\&.backend\&.lib\&.library\&.Catalogue\&.config = config\fR [inherited]\fP" + +.SS "src\&.backend\&.lib\&.library\&.Catalogue\&.cover_regx = re\&.compile(r'\\\&.jpg|\\\&.jpeg|\\\&.png|\\\&.bmp|\\\&.gif')\fR [inherited]\fP" + +.SS "src\&.backend\&.lib\&.library\&.Catalogue\&.db_pointer = config\&.catalogue_db\fR [inherited]\fP" + +.SS "list src\&.backend\&.lib\&.library\&.Catalogue\&.file_list = []\fR [inherited]\fP" + +.SS "src\&.backend\&.lib\&.library\&.Catalogue\&.html_regx = re\&.compile(r'\\\&.html')\fR [inherited]\fP" + +.SS "src\&.backend\&.lib\&.library\&.Catalogue\&.opf_regx = re\&.compile(r'\\\&.opf')\fR [inherited]\fP" + +.SS "src\&.backend\&.lib\&.library\&.Catalogue\&.root_dir = config\&.root\fR [inherited]\fP" + +.SS "src\&.backend\&.lib\&.library\&.Catalogue\&.title_sanitization_dirs_regx = re\&.compile(r'/')\fR [inherited]\fP" + +.SS "src\&.backend\&.lib\&.library\&.Catalogue\&.title_sanitization_lvl2_regx\fR [inherited]\fP" +\fBInitial value:\fP +.nf += re\&.compile( + r"^(Book )+[0\-9]*\\W+(\-)") +.PP +.fi + +.SS "src\&.backend\&.lib\&.library\&.Catalogue\&.title_sanitization_regx = re\&.compile(r'^(Book )+[0\-9]*')\fR [inherited]\fP" + + +.SH "Author" +.PP +Generated automatically by Doxygen for pyShelf Open Source Ebook Server from the source code\&. diff --git a/docs/pyShelf/man/man3/src_backend_tests_library_test_Test_Config.3 b/docs/pyShelf/man/man3/src_backend_tests_library_test_Test_Config.3 new file mode 100644 index 0000000..d20e391 --- /dev/null +++ b/docs/pyShelf/man/man3/src_backend_tests_library_test_Test_Config.3 @@ -0,0 +1,207 @@ +.TH "src.backend.tests.library_test.Test_Config" 3 "Sat Aug 9 2025 19:53:55" "Version 0.8.0" "pyShelf Open Source Ebook Server" \" -*- nroff -*- +.ad l +.nh +.SH NAME +src.backend.tests.library_test.Test_Config +.SH SYNOPSIS +.br +.PP +.PP +Inherits \fBsrc\&.backend\&.lib\&.config\&.Config\fP\&. +.SS "Public Member Functions" + +.in +1c +.ti -1c +.RI "\fB__init__\fP (self)" +.br +.ti -1c +.RI "\fBopen_file\fP (self, root='config\&.json')" +.br +.ti -1c +.RI "\fBinit_config\fP (self)" +.br +.ti -1c +.RI "\fBget_logger\fP (self)" +.br +.in -1c +.SS "Public Attributes" + +.in +1c +.ti -1c +.RI "\fBroot\fP = root" +.br +.ti -1c +.RI "dict \fBconfig_structure\fP" +.br +.ti -1c +.RI "\fBlogger\fP = self\&.get_logger()" +.br +.ti -1c +.RI "\fBbook_path\fP = env\&.get('BOOKPATH', self\&._data['BOOKPATH'])" +.br +.ti -1c +.RI "str \fBTITLE\fP = env\&.get('TITLE', self\&._data['TITLE'])" +.br +.ti -1c +.RI "\fBVERSION\fP = env\&.get('VERSION', self\&._data['VERSION'])" +.br +.ti -1c +.RI "\fBbook_shelf\fP = env\&.get('BOOKSHELF', self\&._data['BOOKSHELF'])" +.br +.ti -1c +.RI "\fBcatalogue_db\fP = env\&.get('DATABASE', self\&._data['DATABASE'])" +.br +.ti -1c +.RI "\fBuser\fP = self\&._data['USER']" +.br +.ti -1c +.RI "\fBpassword\fP = self\&._data['PASSWORD']" +.br +.ti -1c +.RI "\fBdb_host\fP = env\&.get('DB_HOST', self\&._data['DB_HOST'])" +.br +.ti -1c +.RI "\fBdb_port\fP = env\&.get('DB_PORT', self\&._data['DB_PORT'])" +.br +.ti -1c +.RI "list \fBfile_array\fP = [self\&.book_shelf]" +.br +.ti -1c +.RI "bool \fBauto_scan\fP = True" +.br +.ti -1c +.RI "\fBallowed_hosts\fP" +.br +.ti -1c +.RI "\fBdb_engine\fP = env\&.get('DB_ENGINE', self\&._data['DB_ENGINE'])" +.br +.ti -1c +.RI "\fBdb_user\fP = env\&.get('USER', self\&._data['USER'])" +.br +.ti -1c +.RI "\fBdb_pass\fP = env\&.get('PASSWORD', self\&._data['PASSWORD'])" +.br +.ti -1c +.RI "\fBbuild_mode\fP = env\&.get('BUILD_MODE', self\&._data['BUILD_MODE'])" +.br +.in -1c +.SS "Protected Attributes" + +.in +1c +.ti -1c +.RI "str \fB_fp\fP = 'config\&.json'" +.br +.ti -1c +.RI "\fB_cp\fP = Path\&.joinpath(root, self\&._fp)" +.br +.ti -1c +.RI "\fB_data\fP = self\&.init_config()" +.br +.in -1c +.SH "Detailed Description" +.PP +.SH "Constructor & Destructor Documentation" +.PP +.SS "src\&.backend\&.tests\&.library_test\&.Test_Config\&.__init__ ( self)" + +.SH "Member Function Documentation" +.PP +.SS "src\&.backend\&.lib\&.config\&.Config\&.get_logger ( self)\fR [inherited]\fP" + +.PP +.nf +Instantiate logging system\&. +.fi +.PP + +.SS "src\&.backend\&.lib\&.config\&.Config\&.init_config ( self)\fR [inherited]\fP" + +.SS "src\&.backend\&.tests\&.library_test\&.Test_Config\&.open_file ( self, root = \fR'config\&.json'\fP)" + +.PP +.nf +Open config\&.json and reads in configuration options\&. +.fi +.PP + +.PP +Reimplemented from \fBsrc\&.backend\&.lib\&.config\&.Config\fP\&. +.SH "Member Data Documentation" +.PP +.SS "src\&.backend\&.lib\&.config\&.Config\&._cp = Path\&.joinpath(root, self\&._fp)\fR [protected]\fP, \fR [inherited]\fP" + +.SS "src\&.backend\&.lib\&.config\&.Config\&._data = self\&.init_config()\fR [protected]\fP, \fR [inherited]\fP" + +.SS "src\&.backend\&.lib\&.config\&.Config\&._fp = 'config\&.json'\fR [protected]\fP, \fR [inherited]\fP" + +.SS "src\&.backend\&.lib\&.config\&.Config\&.allowed_hosts\fR [inherited]\fP" +\fBInitial value:\fP +.nf += env\&.get("ALLOWED_HOSTS", + self\&._data["ALLOWED_HOSTS"]) +.PP +.fi + +.SS "bool src\&.backend\&.lib\&.config\&.Config\&.auto_scan = True\fR [inherited]\fP" + +.SS "src\&.backend\&.lib\&.config\&.Config\&.book_path = env\&.get('BOOKPATH', self\&._data['BOOKPATH'])\fR [inherited]\fP" + +.SS "src\&.backend\&.lib\&.config\&.Config\&.book_shelf = env\&.get('BOOKSHELF', self\&._data['BOOKSHELF'])\fR [inherited]\fP" + +.SS "src\&.backend\&.lib\&.config\&.Config\&.build_mode = env\&.get('BUILD_MODE', self\&._data['BUILD_MODE'])\fR [inherited]\fP" + +.SS "src\&.backend\&.lib\&.config\&.Config\&.catalogue_db = env\&.get('DATABASE', self\&._data['DATABASE'])\fR [inherited]\fP" + +.SS "src\&.backend\&.lib\&.config\&.Config\&.config_structure\fR [inherited]\fP" +\fBInitial value:\fP +.nf += { + "TITLE": "pyShelf E\-Book Server", + "VERSION": "0\&.7\&.0", + "BOOKPATH": "/mnt/books", + "DB_HOST": "localhost", + "DB_PORT": "5432", + "DB_ENGINE": "sqlite", + "DATABASE": "pyshelf", + "USER": "pyshelf", + "PASSWORD": "pyshelf", + "BOOKSHELF": "data/shelf\&.json", + "ALLOWED_HOSTS": [ + "localhost", + "127\&.0\&.0\&.1", + "[::1]", + "0\&.0\&.0\&.0" + ], + "BUILD_MODE": "development" + } +.PP +.fi + +.SS "src\&.backend\&.lib\&.config\&.Config\&.db_engine = env\&.get('DB_ENGINE', self\&._data['DB_ENGINE'])\fR [inherited]\fP" + +.SS "src\&.backend\&.lib\&.config\&.Config\&.db_host = env\&.get('DB_HOST', self\&._data['DB_HOST'])\fR [inherited]\fP" + +.SS "src\&.backend\&.lib\&.config\&.Config\&.db_pass = env\&.get('PASSWORD', self\&._data['PASSWORD'])\fR [inherited]\fP" + +.SS "src\&.backend\&.lib\&.config\&.Config\&.db_port = env\&.get('DB_PORT', self\&._data['DB_PORT'])\fR [inherited]\fP" + +.SS "src\&.backend\&.lib\&.config\&.Config\&.db_user = env\&.get('USER', self\&._data['USER'])\fR [inherited]\fP" + +.SS "list src\&.backend\&.lib\&.config\&.Config\&.file_array = [self\&.book_shelf]\fR [inherited]\fP" + +.SS "src\&.backend\&.lib\&.config\&.Config\&.logger = self\&.get_logger()\fR [inherited]\fP" + +.SS "src\&.backend\&.lib\&.config\&.Config\&.password = self\&._data['PASSWORD']\fR [inherited]\fP" + +.SS "src\&.backend\&.lib\&.config\&.Config\&.root = root\fR [inherited]\fP" + +.SS "str src\&.backend\&.lib\&.config\&.Config\&.TITLE = env\&.get('TITLE', self\&._data['TITLE'])\fR [inherited]\fP" + +.SS "src\&.backend\&.lib\&.config\&.Config\&.user = self\&._data['USER']\fR [inherited]\fP" + +.SS "src\&.backend\&.lib\&.config\&.Config\&.VERSION = env\&.get('VERSION', self\&._data['VERSION'])\fR [inherited]\fP" + + +.SH "Author" +.PP +Generated automatically by Doxygen for pyShelf Open Source Ebook Server from the source code\&. diff --git a/docs/warn.log b/docs/warn.log new file mode 100644 index 0000000..1abf560 --- /dev/null +++ b/docs/warn.log @@ -0,0 +1,208 @@ +/home/th3r00t/Projects/pyShelf/src/backend/tests/config_test.py:6: warning: Compound src::backend::tests::config_test::TestConfig is not documented. +/home/th3r00t/Projects/pyShelf/src/backend/tests/library_test.py:28: warning: Compound src::backend::tests::library_test::TestCatalogue is not documented. +/home/th3r00t/Projects/pyShelf/src/backend/tests/library_test.py:19: warning: Compound src::backend::tests::library_test::Test_Catalogue is not documented. +/home/th3r00t/Projects/pyShelf/src/backend/tests/library_test.py:8: warning: Compound src::backend::tests::library_test::Test_Config is not documented. +error: Problems running htags. Check your installation +error: USE_HTAGS is YES but htags(1) failed. +/home/th3r00t/Projects/pyShelf/src/frontend/lib/DataHooks.py:10: warning: Member config (variable) of class DataHooks.BookInterface is not documented. +/home/th3r00t/Projects/pyShelf/src/frontend/lib/DataHooks.py:11: warning: Member db (variable) of class DataHooks.BookInterface is not documented. +/home/th3r00t/Projects/pyShelf/src/frontend/lib/FastAPIServer.py:108: warning: Member tojson(obj) (function) of namespace FastAPIServer is not documented. +/home/th3r00t/Projects/pyShelf/src/frontend/lib/FastAPIServer.py:23: warning: Member app (variable) of namespace FastAPIServer is not documented. +/home/th3r00t/Projects/pyShelf/src/frontend/lib/FastAPIServer.py:24: warning: Member STATIC_DIR (variable) of namespace FastAPIServer is not documented. +/home/th3r00t/Projects/pyShelf/src/frontend/lib/FastAPIServer.py:24: warning: Member TEMPLATES_DIR (variable) of namespace FastAPIServer is not documented. +/home/th3r00t/Projects/pyShelf/src/frontend/lib/FastAPIServer.py:25: warning: Member templates (variable) of namespace FastAPIServer is not documented. +/home/th3r00t/Projects/pyShelf/src/frontend/lib/FastAPIServer.py:27: warning: Member origins (variable) of namespace FastAPIServer is not documented. +/home/th3r00t/Projects/pyShelf/src/frontend/lib/FastAPIServer.py:35: warning: Member allow_origins (variable) of namespace FastAPIServer is not documented. +/home/th3r00t/Projects/pyShelf/src/frontend/lib/FastAPIServer.py:36: warning: Member allow_credentials (variable) of namespace FastAPIServer is not documented. +/home/th3r00t/Projects/pyShelf/src/frontend/lib/FastAPIServer.py:37: warning: Member allow_methods (variable) of namespace FastAPIServer is not documented. +/home/th3r00t/Projects/pyShelf/src/frontend/lib/FastAPIServer.py:38: warning: Member allow_headers (variable) of namespace FastAPIServer is not documented. +/home/th3r00t/Projects/pyShelf/src/frontend/lib/FastAPIServer.py:42: warning: parameters of member FastAPIServer.base64decode are not documented +/home/th3r00t/Projects/pyShelf/src/frontend/lib/FastAPIServer.py:42: warning: return type of member FastAPIServer.base64decode is not documented +/home/th3r00t/Projects/pyShelf/src/frontend/lib/FastAPIServer.py:90: warning: parameters of member FastAPIServer.book_tojson are not documented +/home/th3r00t/Projects/pyShelf/src/frontend/lib/FastAPIServer.py:90: warning: return type of member FastAPIServer.book_tojson is not documented +/home/th3r00t/Projects/pyShelf/src/frontend/lib/FastAPIServer.py:66: warning: parameters of member FastAPIServer.books_tojson are not documented +/home/th3r00t/Projects/pyShelf/src/frontend/lib/FastAPIServer.py:66: warning: return type of member FastAPIServer.books_tojson is not documented +/home/th3r00t/Projects/pyShelf/src/frontend/lib/FastAPIServer.py:112: warning: parameters of member FastAPIServer.collections_tojson are not documented +/home/th3r00t/Projects/pyShelf/src/frontend/lib/FastAPIServer.py:112: warning: return type of member FastAPIServer.collections_tojson is not documented +/home/th3r00t/Projects/pyShelf/src/frontend/lib/FastAPIServer.py:61: warning: parameters of member FastAPIServer.convertDateTime are not documented +/home/th3r00t/Projects/pyShelf/src/frontend/lib/FastAPIServer.py:61: warning: return type of member FastAPIServer.convertDateTime is not documented +/home/th3r00t/Projects/pyShelf/src/frontend/lib/FastAPIServer.py:51: warning: parameters of member FastAPIServer.summarize are not documented +/home/th3r00t/Projects/pyShelf/src/frontend/lib/FastAPIServer.py:51: warning: return type of member FastAPIServer.summarize is not documented +:1: warning: parameters of member FastAPIServer.tojson are not documented +/home/th3r00t/Projects/pyShelf/src/frontend/lib/FastAPIServer.py:179: warning: Member index(Request request, int skip=0, int limit=30) (function) of class FastAPIServer.FastAPIServer is not documented. +/home/th3r00t/Projects/pyShelf/src/frontend/lib/FastAPIServer.py:206: warning: Member books(Request request, int skip=0, int limit=10, collection=None) (function) of class FastAPIServer.FastAPIServer is not documented. +/home/th3r00t/Projects/pyShelf/src/frontend/lib/FastAPIServer.py:215: warning: Member book(Request request, int book_id) (function) of class FastAPIServer.FastAPIServer is not documented. +/home/th3r00t/Projects/pyShelf/src/frontend/lib/FastAPIServer.py:222: warning: Member book(Request request, int book_id) (function) of class FastAPIServer.FastAPIServer is not documented. +/home/th3r00t/Projects/pyShelf/src/frontend/lib/FastAPIServer.py:232: warning: Member collections(Request request) (function) of class FastAPIServer.FastAPIServer is not documented. +/home/th3r00t/Projects/pyShelf/src/frontend/lib/FastAPIServer.py:139: warning: Member config (variable) of class FastAPIServer.FastAPIServer is not documented. +/home/th3r00t/Projects/pyShelf/src/frontend/lib/FastAPIServer.py:144: warning: Member fe_config (variable) of class FastAPIServer.FastAPIServer is not documented. +/home/th3r00t/Projects/pyShelf/src/frontend/lib/FastAPIServer.py:146: warning: Member fe_server (variable) of class FastAPIServer.FastAPIServer is not documented. +/home/th3r00t/Projects/pyShelf/src/frontend/lib/FastAPIServer.py:147: warning: Member JSInterface (variable) of class FastAPIServer.FastAPIServer is not documented. +/home/th3r00t/Projects/pyShelf/src/frontend/lib/FastAPIServer.py:138: warning: parameters of member FastAPIServer.FastAPIServer.__init__ are not documented +:1: warning: parameters of member FastAPIServer.FastAPIServer.book are not documented +:1: warning: parameters of member FastAPIServer.FastAPIServer.books are not documented +/home/th3r00t/Projects/pyShelf/src/frontend/lib/FastAPIServer.py:240: warning: parameters of member FastAPIServer.FastAPIServer.collection are not documented +:1: warning: parameters of member FastAPIServer.FastAPIServer.collections are not documented +:1: warning: parameters of member FastAPIServer.FastAPIServer.index are not documented +/home/th3r00t/Projects/pyShelf/src/frontend/lib/FastAPIServer.py:263: warning: parameters of member FastAPIServer.FastAPIServer.search_books_api are not documented +/home/th3r00t/Projects/pyShelf/src/frontend/lib/FastAPIServer.py:173: warning: parameters of member FastAPIServer.FastAPIServer.use_route_names_as_operation_ids are not documented +/home/th3r00t/Projects/pyShelf/src/frontend/lib/FastAPIServer.py:173: warning: return type of member FastAPIServer.FastAPIServer.use_route_names_as_operation_ids is not documented +/home/th3r00t/Projects/pyShelf/src/frontend/lib/objects.py:12: warning: Member package_json (variable) of class objects.JSInterface is not documented. +/home/th3r00t/Projects/pyShelf/src/frontend/lib/objects.py:13: warning: Member config (variable) of class objects.JSInterface is not documented. +/home/th3r00t/Projects/pyShelf/src/frontend/lib/objects.py:11: warning: parameters of member objects.JSInterface.__init__ are not documented +/home/th3r00t/Projects/pyShelf/src/__main__.py:14: warning: Member root (variable) of namespace src.__main__ is not documented. +/home/th3r00t/Projects/pyShelf/src/__main__.py:15: warning: Member config (variable) of namespace src.__main__ is not documented. +/home/th3r00t/Projects/pyShelf/src/__main__.py:16: warning: Member PRG_PATH (variable) of namespace src.__main__ is not documented. +/home/th3r00t/Projects/pyShelf/src/backend/lib/api_hooks.py:10: warning: Member __init__(self) (function) of class src.backend.lib.api_hooks.DuckDuckGo is not documented. +/home/th3r00t/Projects/pyShelf/src/backend/lib/api_hooks.py:40: warning: Member description_result(self, query) (function) of class src.backend.lib.api_hooks.DuckDuckGo is not documented. +/home/th3r00t/Projects/pyShelf/src/backend/lib/api_hooks.py:11: warning: Member url (variable) of class src.backend.lib.api_hooks.DuckDuckGo is not documented. +/home/th3r00t/Projects/pyShelf/src/backend/lib/api_hooks.py:12: warning: Member imageurl (variable) of class src.backend.lib.api_hooks.DuckDuckGo is not documented. +<__init__>:1: warning: parameters of member src.backend.lib.api_hooks.DuckDuckGo.__init__ are not documented +:1: warning: parameters of member src.backend.lib.api_hooks.DuckDuckGo.description_result are not documented +/home/th3r00t/Projects/pyShelf/src/backend/lib/api_hooks.py:15: warning: parameters of member src.backend.lib.api_hooks.DuckDuckGo.image_result are not documented +/home/th3r00t/Projects/pyShelf/src/backend/lib/config.py:101: warning: Member init_config(self) (function) of class src.backend.lib.config.Config is not documented. +/home/th3r00t/Projects/pyShelf/src/backend/lib/config.py:51: warning: Member root (variable) of class src.backend.lib.config.Config is not documented. +/home/th3r00t/Projects/pyShelf/src/backend/lib/config.py:52: warning: Member config_structure (variable) of class src.backend.lib.config.Config is not documented. +/home/th3r00t/Projects/pyShelf/src/backend/lib/config.py:81: warning: Member logger (variable) of class src.backend.lib.config.Config is not documented. +/home/th3r00t/Projects/pyShelf/src/backend/lib/config.py:82: warning: Member book_path (variable) of class src.backend.lib.config.Config is not documented. +/home/th3r00t/Projects/pyShelf/src/backend/lib/config.py:83: warning: Member TITLE (variable) of class src.backend.lib.config.Config is not documented. +/home/th3r00t/Projects/pyShelf/src/backend/lib/config.py:84: warning: Member VERSION (variable) of class src.backend.lib.config.Config is not documented. +/home/th3r00t/Projects/pyShelf/src/backend/lib/config.py:86: warning: Member book_shelf (variable) of class src.backend.lib.config.Config is not documented. +/home/th3r00t/Projects/pyShelf/src/backend/lib/config.py:87: warning: Member catalogue_db (variable) of class src.backend.lib.config.Config is not documented. +/home/th3r00t/Projects/pyShelf/src/backend/lib/config.py:88: warning: Member user (variable) of class src.backend.lib.config.Config is not documented. +/home/th3r00t/Projects/pyShelf/src/backend/lib/config.py:89: warning: Member password (variable) of class src.backend.lib.config.Config is not documented. +/home/th3r00t/Projects/pyShelf/src/backend/lib/config.py:90: warning: Member db_host (variable) of class src.backend.lib.config.Config is not documented. +/home/th3r00t/Projects/pyShelf/src/backend/lib/config.py:91: warning: Member db_port (variable) of class src.backend.lib.config.Config is not documented. +/home/th3r00t/Projects/pyShelf/src/backend/lib/config.py:92: warning: Member file_array (variable) of class src.backend.lib.config.Config is not documented. +/home/th3r00t/Projects/pyShelf/src/backend/lib/config.py:93: warning: Member auto_scan (variable) of class src.backend.lib.config.Config is not documented. +/home/th3r00t/Projects/pyShelf/src/backend/lib/config.py:94: warning: Member allowed_hosts (variable) of class src.backend.lib.config.Config is not documented. +/home/th3r00t/Projects/pyShelf/src/backend/lib/config.py:96: warning: Member db_engine (variable) of class src.backend.lib.config.Config is not documented. +/home/th3r00t/Projects/pyShelf/src/backend/lib/config.py:97: warning: Member db_user (variable) of class src.backend.lib.config.Config is not documented. +/home/th3r00t/Projects/pyShelf/src/backend/lib/config.py:98: warning: Member db_pass (variable) of class src.backend.lib.config.Config is not documented. +/home/th3r00t/Projects/pyShelf/src/backend/lib/config.py:99: warning: Member build_mode (variable) of class src.backend.lib.config.Config is not documented. +/home/th3r00t/Projects/pyShelf/src/backend/lib/config.py:72: warning: Member _fp (variable) of class src.backend.lib.config.Config is not documented. +/home/th3r00t/Projects/pyShelf/src/backend/lib/config.py:74: warning: Member _cp (variable) of class src.backend.lib.config.Config is not documented. +/home/th3r00t/Projects/pyShelf/src/backend/lib/config.py:77: warning: Member _data (variable) of class src.backend.lib.config.Config is not documented. +/home/th3r00t/Projects/pyShelf/src/backend/lib/config.py:50: warning: parameters of member src.backend.lib.config.Config.__init__ are not documented +:1: warning: parameters of member src.backend.lib.config.Config.init_config are not documented +/home/th3r00t/Projects/pyShelf/src/backend/lib/library.py:23: warning: Member __init__(self, config) (function) of class src.backend.lib.library.Catalogue is not documented. +/home/th3r00t/Projects/pyShelf/src/backend/lib/library.py:232: warning: Member extract_metadata_mobi(self, book) (function) of class src.backend.lib.library.Catalogue is not documented. +/home/th3r00t/Projects/pyShelf/src/backend/lib/library.py:228: warning: Member stripTags(source) (function) of class src.backend.lib.library.Catalogue is not documented. +/home/th3r00t/Projects/pyShelf/src/backend/lib/library.py:24: warning: Member file_list (variable) of class src.backend.lib.library.Catalogue is not documented. +/home/th3r00t/Projects/pyShelf/src/backend/lib/library.py:25: warning: Member opf_regx (variable) of class src.backend.lib.library.Catalogue is not documented. +/home/th3r00t/Projects/pyShelf/src/backend/lib/library.py:26: warning: Member cover_regx (variable) of class src.backend.lib.library.Catalogue is not documented. +/home/th3r00t/Projects/pyShelf/src/backend/lib/library.py:27: warning: Member html_regx (variable) of class src.backend.lib.library.Catalogue is not documented. +/home/th3r00t/Projects/pyShelf/src/backend/lib/library.py:28: warning: Member title_sanitization_regx (variable) of class src.backend.lib.library.Catalogue is not documented. +/home/th3r00t/Projects/pyShelf/src/backend/lib/library.py:29: warning: Member title_sanitization_lvl2_regx (variable) of class src.backend.lib.library.Catalogue is not documented. +/home/th3r00t/Projects/pyShelf/src/backend/lib/library.py:31: warning: Member title_sanitization_dirs_regx (variable) of class src.backend.lib.library.Catalogue is not documented. +/home/th3r00t/Projects/pyShelf/src/backend/lib/library.py:32: warning: Member root_dir (variable) of class src.backend.lib.library.Catalogue is not documented. +/home/th3r00t/Projects/pyShelf/src/backend/lib/library.py:33: warning: Member book_folder (variable) of class src.backend.lib.library.Catalogue is not documented. +/home/th3r00t/Projects/pyShelf/src/backend/lib/library.py:34: warning: Member books (variable) of class src.backend.lib.library.Catalogue is not documented. +/home/th3r00t/Projects/pyShelf/src/backend/lib/library.py:35: warning: Member db_pointer (variable) of class src.backend.lib.library.Catalogue is not documented. +/home/th3r00t/Projects/pyShelf/src/backend/lib/library.py:36: warning: Member config (variable) of class src.backend.lib.library.Catalogue is not documented. +<__init__>:1: warning: parameters of member src.backend.lib.library.Catalogue.__init__ are not documented +/home/th3r00t/Projects/pyShelf/src/backend/lib/library.py:283: warning: parameters of member src.backend.lib.library.Catalogue.extract_content are not documented +/home/th3r00t/Projects/pyShelf/src/backend/lib/library.py:290: warning: parameters of member src.backend.lib.library.Catalogue.extract_cover_html are not documented +/home/th3r00t/Projects/pyShelf/src/backend/lib/library.py:297: warning: parameters of member src.backend.lib.library.Catalogue.extract_cover_image are not documented +/home/th3r00t/Projects/pyShelf/src/backend/lib/library.py:103: warning: parameters of member src.backend.lib.library.Catalogue.extract_metadata_epub are not documented +:1: warning: parameters of member src.backend.lib.library.Catalogue.extract_metadata_mobi are not documented +/home/th3r00t/Projects/pyShelf/src/backend/lib/library.py:178: warning: parameters of member src.backend.lib.library.Catalogue.extract_metadata_pdf are not documented +/home/th3r00t/Projects/pyShelf/src/backend/lib/library.py:331: warning: parameters of member src.backend.lib.library.Catalogue.import_books are not documented +/home/th3r00t/Projects/pyShelf/src/backend/lib/library.py:75: warning: parameters of member src.backend.lib.library.Catalogue.process_by_filetype are not documented +/home/th3r00t/Projects/pyShelf/src/backend/lib/library.py:87: warning: parameters of member src.backend.lib.library.Catalogue.process_epub are not documented +/home/th3r00t/Projects/pyShelf/src/backend/lib/library.py:39: warning: parameters of member src.backend.lib.library.Catalogue.scan_folder are not documented +:1: warning: parameters of member src.backend.lib.library.Catalogue.stripTags are not documented +/home/th3r00t/Projects/pyShelf/src/backend/lib/models.py:24: warning: Member id (variable) of class src.backend.lib.models.Book is not documented. +/home/th3r00t/Projects/pyShelf/src/backend/lib/models.py:25: warning: Member title (variable) of class src.backend.lib.models.Book is not documented. +/home/th3r00t/Projects/pyShelf/src/backend/lib/models.py:26: warning: Member author (variable) of class src.backend.lib.models.Book is not documented. +/home/th3r00t/Projects/pyShelf/src/backend/lib/models.py:27: warning: Member categories (variable) of class src.backend.lib.models.Book is not documented. +/home/th3r00t/Projects/pyShelf/src/backend/lib/models.py:28: warning: Member cover (variable) of class src.backend.lib.models.Book is not documented. +/home/th3r00t/Projects/pyShelf/src/backend/lib/models.py:29: warning: Member pages (variable) of class src.backend.lib.models.Book is not documented. +/home/th3r00t/Projects/pyShelf/src/backend/lib/models.py:30: warning: Member progress (variable) of class src.backend.lib.models.Book is not documented. +/home/th3r00t/Projects/pyShelf/src/backend/lib/models.py:31: warning: Member file_name (variable) of class src.backend.lib.models.Book is not documented. +/home/th3r00t/Projects/pyShelf/src/backend/lib/models.py:32: warning: Member description (variable) of class src.backend.lib.models.Book is not documented. +/home/th3r00t/Projects/pyShelf/src/backend/lib/models.py:33: warning: Member date (variable) of class src.backend.lib.models.Book is not documented. +/home/th3r00t/Projects/pyShelf/src/backend/lib/models.py:34: warning: Member rights (variable) of class src.backend.lib.models.Book is not documented. +/home/th3r00t/Projects/pyShelf/src/backend/lib/models.py:35: warning: Member tags (variable) of class src.backend.lib.models.Book is not documented. +/home/th3r00t/Projects/pyShelf/src/backend/lib/models.py:36: warning: Member identifier (variable) of class src.backend.lib.models.Book is not documented. +/home/th3r00t/Projects/pyShelf/src/backend/lib/models.py:37: warning: Member publisher (variable) of class src.backend.lib.models.Book is not documented. +/home/th3r00t/Projects/pyShelf/src/backend/lib/models.py:40: warning: Member book_collections (variable) of class src.backend.lib.models.Book is not documented. +/home/th3r00t/Projects/pyShelf/src/backend/lib/models.py:64: warning: Member id (variable) of class src.backend.lib.models.BookCollection is not documented. +/home/th3r00t/Projects/pyShelf/src/backend/lib/models.py:65: warning: Member book_id (variable) of class src.backend.lib.models.BookCollection is not documented. +/home/th3r00t/Projects/pyShelf/src/backend/lib/models.py:66: warning: Member collection_id (variable) of class src.backend.lib.models.BookCollection is not documented. +/home/th3r00t/Projects/pyShelf/src/backend/lib/models.py:69: warning: Member book (variable) of class src.backend.lib.models.BookCollection is not documented. +/home/th3r00t/Projects/pyShelf/src/backend/lib/models.py:70: warning: Member collection (variable) of class src.backend.lib.models.BookCollection is not documented. +/home/th3r00t/Projects/pyShelf/src/backend/lib/models.py:50: warning: Member id (variable) of class src.backend.lib.models.Collection is not documented. +/home/th3r00t/Projects/pyShelf/src/backend/lib/models.py:51: warning: Member name (variable) of class src.backend.lib.models.Collection is not documented. +/home/th3r00t/Projects/pyShelf/src/backend/lib/models.py:54: warning: Member book_collections (variable) of class src.backend.lib.models.Collection is not documented. +/home/th3r00t/Projects/pyShelf/src/backend/lib/models.py:77: warning: Member id (variable) of class src.backend.lib.models.User is not documented. +/home/th3r00t/Projects/pyShelf/src/backend/lib/models.py:78: warning: Member username (variable) of class src.backend.lib.models.User is not documented. +/home/th3r00t/Projects/pyShelf/src/backend/lib/models.py:79: warning: Member password (variable) of class src.backend.lib.models.User is not documented. +/home/th3r00t/Projects/pyShelf/src/backend/lib/models.py:80: warning: Member email (variable) of class src.backend.lib.models.User is not documented. +/home/th3r00t/Projects/pyShelf/src/backend/lib/models.py:81: warning: Member date_joined (variable) of class src.backend.lib.models.User is not documented. +/home/th3r00t/Projects/pyShelf/src/backend/lib/models.py:84: warning: Member last_login (variable) of class src.backend.lib.models.User is not documented. +/home/th3r00t/Projects/pyShelf/src/backend/lib/models.py:87: warning: Member is_active (variable) of class src.backend.lib.models.User is not documented. +/home/th3r00t/Projects/pyShelf/src/backend/lib/models.py:88: warning: Member is_admin (variable) of class src.backend.lib.models.User is not documented. +/home/th3r00t/Projects/pyShelf/src/backend/lib/models.py:89: warning: Member is_superuser (variable) of class src.backend.lib.models.User is not documented. +/home/th3r00t/Projects/pyShelf/src/backend/lib/overide.py:15: warning: Member __init__(self) (function) of class src.backend.lib.overide.ACatalogue is not documented. +<__init__>:1: warning: parameters of member src.backend.lib.overide.ACatalogue.__init__ are not documented +/home/th3r00t/Projects/pyShelf/src/backend/lib/overide.py:38: warning: parameters of member src.backend.lib.overide.ACatalogue.import_books are not documented +/home/th3r00t/Projects/pyShelf/src/backend/lib/overide.py:19: warning: parameters of member src.backend.lib.overide.ACatalogue.scan_folder are not documented +/home/th3r00t/Projects/pyShelf/src/backend/lib/pyShelf.py:15: warning: Member __init__(self, file_array) (function) of class src.backend.lib.pyShelf.InitFiles is not documented. +<__init__>:1: warning: parameters of member src.backend.lib.pyShelf.InitFiles.__init__ are not documented +/home/th3r00t/Projects/pyShelf/src/backend/lib/pyShelf.py:23: warning: parameters of member src.backend.lib.pyShelf.InitFiles.CreateFile are not documented +/home/th3r00t/Projects/pyShelf/src/backend/lib/pyShelf.py:38: warning: Member __init__(self, root) (function) of class src.backend.lib.pyShelf.Server is not documented. +/home/th3r00t/Projects/pyShelf/src/backend/lib/pyShelf.py:45: warning: Member __aexit__(self, *args, **kwargs) (function) of class src.backend.lib.pyShelf.Server is not documented. +/home/th3r00t/Projects/pyShelf/src/backend/lib/pyShelf.py:48: warning: Member initialize_server(self) (function) of class src.backend.lib.pyShelf.Server is not documented. +/home/th3r00t/Projects/pyShelf/src/backend/lib/pyShelf.py:54: warning: Member runImport(self) (function) of class src.backend.lib.pyShelf.Server is not documented. +/home/th3r00t/Projects/pyShelf/src/backend/lib/pyShelf.py:61: warning: Member socketio(self, websocket, path) (function) of class src.backend.lib.pyShelf.Server is not documented. +/home/th3r00t/Projects/pyShelf/src/backend/lib/pyShelf.py:79: warning: Member pong(self) (function) of class src.backend.lib.pyShelf.Server is not documented. +/home/th3r00t/Projects/pyShelf/src/backend/lib/pyShelf.py:83: warning: Member start(self) (function) of class src.backend.lib.pyShelf.Server is not documented. +/home/th3r00t/Projects/pyShelf/src/backend/lib/pyShelf.py:39: warning: Member root (variable) of class src.backend.lib.pyShelf.Server is not documented. +/home/th3r00t/Projects/pyShelf/src/backend/lib/pyShelf.py:40: warning: Member host (variable) of class src.backend.lib.pyShelf.Server is not documented. +/home/th3r00t/Projects/pyShelf/src/backend/lib/pyShelf.py:41: warning: Member config (variable) of class src.backend.lib.pyShelf.Server is not documented. +/home/th3r00t/Projects/pyShelf/src/backend/lib/pyShelf.py:42: warning: Member loop (variable) of class src.backend.lib.pyShelf.Server is not documented. +/home/th3r00t/Projects/pyShelf/src/backend/lib/pyShelf.py:43: warning: Member serve (variable) of class src.backend.lib.pyShelf.Server is not documented. +/home/th3r00t/Projects/pyShelf/src/backend/lib/pyShelf.py:86: warning: Member socketio (variable) of class src.backend.lib.pyShelf.Server is not documented. +<__init__>:1: warning: parameters of member src.backend.lib.pyShelf.Server.__init__ are not documented +<__aexit__>:1: warning: parameters of member src.backend.lib.pyShelf.Server.__aexit__ are not documented +:1: warning: parameters of member src.backend.lib.pyShelf.Server.initialize_server are not documented +:1: warning: parameters of member src.backend.lib.pyShelf.Server.pong are not documented +:1: warning: parameters of member src.backend.lib.pyShelf.Server.runImport are not documented +:1: warning: parameters of member src.backend.lib.pyShelf.Server.socketio are not documented +:1: warning: parameters of member src.backend.lib.pyShelf.Server.start are not documented +/home/th3r00t/Projects/pyShelf/src/backend/lib/storage.py:297: warning: Member fuzzy_search_books(self, str query, int limit=30) (function) of class src.backend.lib.storage.Storage is not documented. +/home/th3r00t/Projects/pyShelf/src/backend/lib/storage.py:35: warning: Member config (variable) of class src.backend.lib.storage.Storage is not documented. +/home/th3r00t/Projects/pyShelf/src/backend/lib/storage.py:36: warning: Member sql (variable) of class src.backend.lib.storage.Storage is not documented. +/home/th3r00t/Projects/pyShelf/src/backend/lib/storage.py:37: warning: Member user (variable) of class src.backend.lib.storage.Storage is not documented. +/home/th3r00t/Projects/pyShelf/src/backend/lib/storage.py:38: warning: Member password (variable) of class src.backend.lib.storage.Storage is not documented. +/home/th3r00t/Projects/pyShelf/src/backend/lib/storage.py:39: warning: Member db_host (variable) of class src.backend.lib.storage.Storage is not documented. +/home/th3r00t/Projects/pyShelf/src/backend/lib/storage.py:40: warning: Member db_port (variable) of class src.backend.lib.storage.Storage is not documented. +/home/th3r00t/Projects/pyShelf/src/backend/lib/storage.py:41: warning: Member engine (variable) of class src.backend.lib.storage.Storage is not documented. +/home/th3r00t/Projects/pyShelf/src/backend/lib/storage.py:34: warning: parameters of member src.backend.lib.storage.Storage.__init__ are not documented +:1: warning: parameters of member src.backend.lib.storage.Storage.fuzzy_search_books are not documented +/home/th3r00t/Projects/pyShelf/src/backend/lib/storage.py:235: warning: parameters of member src.backend.lib.storage.Storage.get_book are not documented +/home/th3r00t/Projects/pyShelf/src/backend/lib/storage.py:203: warning: parameters of member src.backend.lib.storage.Storage.get_books are not documented +/home/th3r00t/Projects/pyShelf/src/backend/lib/storage.py:265: warning: parameters of member src.backend.lib.storage.Storage.get_collection are not documented +/home/th3r00t/Projects/pyShelf/src/backend/lib/storage.py:69: warning: parameters of member src.backend.lib.storage.Storage.insert_book are not documented +/home/th3r00t/Projects/pyShelf/src/backend/lib/storage.py:278: warning: parameters of member src.backend.lib.storage.Storage.parse_advanced_query are not documented +/home/th3r00t/Projects/pyShelf/src/backend/lib/storage.py:278: warning: return type of member src.backend.lib.storage.Storage.parse_advanced_query is not documented +/home/th3r00t/Projects/pyShelf/src/backend/lib/storage.py:126: warning: parameters of member src.backend.lib.storage.Storage.parse_collections_from_path are not documented +/home/th3r00t/Projects/pyShelf/src/backend/lib/storage.py:126: warning: return type of member src.backend.lib.storage.Storage.parse_collections_from_path is not documented +/home/th3r00t/Projects/pyShelf/src/backend/tests/config_test.py:9: warning: Member test_book_dir(self) (function) of class src.backend.tests.config_test.TestConfig is not documented. +/home/th3r00t/Projects/pyShelf/src/backend/tests/config_test.py:12: warning: Member test_title(self) (function) of class src.backend.tests.config_test.TestConfig is not documented. +/home/th3r00t/Projects/pyShelf/src/backend/tests/config_test.py:15: warning: Member test_version(self) (function) of class src.backend.tests.config_test.TestConfig is not documented. +/home/th3r00t/Projects/pyShelf/src/backend/tests/config_test.py:7: warning: Member config (variable) of class src.backend.tests.config_test.TestConfig is not documented. +:1: warning: parameters of member src.backend.tests.config_test.TestConfig.test_book_dir are not documented +:1: warning: parameters of member src.backend.tests.config_test.TestConfig.test_title are not documented +:1: warning: parameters of member src.backend.tests.config_test.TestConfig.test_version are not documented +/home/th3r00t/Projects/pyShelf/src/backend/tests/library_test.py:20: warning: Member __init__(self) (function) of class src.backend.tests.library_test.Test_Catalogue is not documented. +/home/th3r00t/Projects/pyShelf/src/backend/tests/library_test.py:24: warning: Member book_shelf (variable) of class src.backend.tests.library_test.Test_Catalogue is not documented. +<__init__>:1: warning: parameters of member src.backend.tests.library_test.Test_Catalogue.__init__ are not documented +/home/th3r00t/Projects/pyShelf/src/backend/tests/library_test.py:9: warning: Member __init__(self) (function) of class src.backend.tests.library_test.Test_Config is not documented. +<__init__>:1: warning: parameters of member src.backend.tests.library_test.Test_Config.__init__ are not documented +/home/th3r00t/Projects/pyShelf/src/backend/lib/config.py:120: warning: parameters of member src.backend.tests.library_test.Test_Config.open_file are not documented +/home/th3r00t/Projects/pyShelf/src/backend/tests/library_test.py:32: warning: Member test_filter_books(self) (function) of class src.backend.tests.library_test.TestCatalogue is not documented. +/home/th3r00t/Projects/pyShelf/src/backend/tests/library_test.py:29: warning: Member root (variable) of class src.backend.tests.library_test.TestCatalogue is not documented. +/home/th3r00t/Projects/pyShelf/src/backend/tests/library_test.py:30: warning: Member config (variable) of class src.backend.tests.library_test.TestCatalogue is not documented. +:1: warning: parameters of member src.backend.tests.library_test.TestCatalogue.test_filter_books are not documented diff --git a/doxygen.conf b/doxygen.conf index e846ee0..41d3278 100755 --- a/doxygen.conf +++ b/doxygen.conf @@ -38,7 +38,7 @@ PROJECT_NAME = "pyShelf Open Source Ebook Server" # could be handy for archiving the generated documentation or if some version # control system is used. -PROJECT_NUMBER = 0.7.0 +PROJECT_NUMBER = 0.8.0 # Using the PROJECT_BRIEF tag one can provide an optional one line description # for a project that appears at the top of each page and should give viewer a @@ -58,7 +58,7 @@ PROJECT_LOGO = # entered, it will be relative to the location where doxygen was started. If # left blank the current directory will be used. -OUTPUT_DIRECTORY = "docs/" +OUTPUT_DIRECTORY = "docs/pyShelf" # If the CREATE_SUBDIRS tag is set to YES then doxygen will create 4096 sub- # directories (in 2 levels) under the output directory of each output format and @@ -829,7 +829,7 @@ WARN_LOGFILE = "docs/warn.log" # spaces. See also FILE_PATTERNS and EXTENSION_MAPPING # Note: If this tag is empty the current directory is searched. -INPUT = "src/backend" +INPUT = "src/" # This tag can be used to specify the character encoding of the source files # that doxygen parses. Internally doxygen uses the UTF-8 encoding. Doxygen uses @@ -854,10 +854,7 @@ INPUT_ENCODING = UTF-8 # *.m, *.markdown, *.md, *.mm, *.dox, *.py, *.pyw, *.f90, *.f95, *.f03, *.f08, # *.f, *.for, *.tcl, *.vhd, *.vhdl, *.ucf, *.qsf and *.ice. -FILE_PATTERNS = *.markdown \ - *.md \ - *.py \ - *.pyw \ +FILE_PATTERNS = *.py \ # The RECURSIVE tag can be used to specify whether or not subdirectories should # be searched for input files as well. diff --git a/importBooks b/importBooks deleted file mode 100755 index ae8fa8f..0000000 --- a/importBooks +++ /dev/null @@ -1,13 +0,0 @@ -#!/usr/bin/env python -import pathlib -import sys - -from src.backend.lib.storage import Storage -from src.backend.pyShelf_ScanLibrary import execute_scan -from src.backend.pyShelf_MakeCollections import MakeCollections -PRG_PATH = pathlib.Path.cwd() -LIB_PATH = pathlib.Path.joinpath(PRG_PATH, "src", "backend", "lib") -sys.path.insert(0, PRG_PATH) -print("\n") -execute_scan(PRG_PATH) -MakeCollections(PRG_PATH) diff --git a/install.sh b/install.sh new file mode 100755 index 0000000..d872f49 --- /dev/null +++ b/install.sh @@ -0,0 +1,68 @@ +#!/bin/env bash + +cd /tmp/ +git clone https://github.com/th3r00t/pyShelf.git +cd /tmp/pyShelf/ + +# make home dir for pyshelf user if it doesn't exist + +# Ensure the correct branch is checked out before installing dependencies +git fetch origin +# git checkout 0.8.0--dev + +# if on arch linux, install python3-uv +if [ -f /etc/arch-release ]; then + # create pyshelf system user if it doesn't exist + if ! id -u pyshelf >/dev/null 2>&1; then + sudo useradd -r -s /usr/bin/nologin pyshelf + fi + sudo pacman --noconfirm -Syy python python-uv git nodejs npm base-devel --needed +else + # create pyshelf system user if it doesn't exist + echo "Installing dependencies for debian/ubuntu..." + if ! id -u pyshelf >/dev/null 2>&1; then + sudo useradd -r -s /usr/sbin/nologin pyshelf + fi + sudo apt-get update + sudo apt-get install -y git python3 python-is-python3 python3-pip nodejs npm libxml2 build-essential curl + curl -LsSf https://astral.sh/uv/install.sh | env UV_INSTALL_DIR="/usr/local/bin" sh +fi + +if [ ! -d /home/pyshelf ]; then + sudo mkdir -p /home/pyshelf + sudo chown pyshelf:pyshelf /home/pyshelf + sudo chmod 755 /home/pyshelf +fi + +sudo mkdir /etc/pyShelf +sudo cp -avR . /etc/pyShelf +sudo chown -R pyshelf:pyshelf /etc/pyShelf +cd /etc/pyShelf +sudo uv sync +# sudo mkdir release +cd /etc/pyShelf/src/frontend +echo "Installing frontend dependencies..." +sudo npm install +cd /etc/pyShelf +echo "Building frontend..." +if [ ! -d /etc/pyShelf/release ]; then + sudo mkdir release +fi +echo "Building release..." +sudo ./build.sh +echo "Linking executable..." +sudo ln -s /etc/pyShelf/pyshelf.sh /usr/local/bin/ +echo "Installing systemd service..." +if [ -f /usr/lib/systemd/system/pyShelf.service ]; then + sudo rm /usr/lib/systemd/system/pyShelf.service +fi +sudo cp /tmp/pyShelf/pyShelf.service /usr/lib/systemd/system/ +echo "Enabling systemd service..." +sudo systemctl daemon-reload +sudo systemctl enable --now pyShelf.service +echo "Installation complete." +echo "You can now access pyShelf on port 8080" +echo "If your books are not at /mnt/books, please edit the config file at \ + /etc/pyShelf/config.json and restart the service with \ + 'sudo systemctl restart pyShelf.service'." + diff --git a/pyShelf.py b/pyShelf.py deleted file mode 100755 index d33bef5..0000000 --- a/pyShelf.py +++ /dev/null @@ -1,58 +0,0 @@ -#!/usr/bin/env python3 -import asyncio -import sys -from pathlib import Path - -import websockets - -from src.backend.lib.config import Config -from src.backend.pyShelf_MakeCollections import MakeCollections -from src.backend.pyShelf_ScanLibrary import execute_scan - -root = Path.cwd() -config = Config(root) -PRG_PATH = Path.cwd().__str__() -sys.path.insert(0, PRG_PATH) - -tx = None - - -async def RunImport(): - """ - Begin live import of books - """ - execute_scan(PRG_PATH, config=config) - MakeCollections(PRG_PATH, config=config) - return "Import Complete" - - -async def socketio(websocket, path): - """ - Web Socket Controller - """ - async for message in websocket: - config.logger.info("Message Processing") - if message == "ping": - config.logger.info("<< Ping") - tx = pong() - elif message == "importBooks": - config.logger.info("Starting Import") - tx = "Starting Import . . ." - await websocket.send(tx) - await RunImport() - tx = "complete" - await websocket.send(tx) - - -def pong(): - """ - Respond to incoming pings - """ - config.logger.info(">> Pong") - return "pong" - - -start_server = websockets.serve(socketio, "127.0.0.1", 1337) - -asyncio.get_event_loop().run_until_complete(start_server) -asyncio.get_event_loop().run_forever() diff --git a/pyShelf.service b/pyShelf.service new file mode 100644 index 0000000..86cd6a6 --- /dev/null +++ b/pyShelf.service @@ -0,0 +1,10 @@ +[Unit] +Description=pyShelf Ebook Server +After=network.target + +[Service] +ExecStart=/usr/local/bin/pyshelf.sh +Restart=on-failure + +[Install] +WantedBy=multi-user.target diff --git a/pyproject.toml b/pyproject.toml old mode 100755 new mode 100644 index 6caf254..489c733 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,10 +1,93 @@ +[build-system] +requires = ["setuptools>=64", "wheel"] +build-backend = "setuptools.build_meta" + +[project] +name = "pyshelf" +version = "0.1.0" +description = "" +readme = "README.md" +requires-python = ">=3.12" +license = { text = "GPL-3.0-or-later" } +keywords = [] +authors = [ + { name = "th3r00t", email = "tty0@th3r00t.dev" }, +] +classifiers = [ + "Development Status :: 4 - Beta", + "Programming Language :: Python", + "Programming Language :: Python :: 3.12", + "Programming Language :: Python :: Implementation :: CPython", + "Programming Language :: Python :: Implementation :: PyPy", +] +dependencies = [ + "websockets", "loguru", "pypdf", "bs4", "requests", "psycopg2-binary", + "mobi-python", "lxml", "sqlalchemy", "sqlalchemy.orm", "fastapi[all]", + "jinja2", "libsass", "nodejs-bin", "npm", "brotlipy", "debugpy", "pudb", + "ptipython", "chardet", "pre-commit", "coverage[toml]>=6.5","pytest", + "black>=23.1.0", "mypy>=1.0.0", "ruff>=0.0.243", "rapidfuzz" +] + +[project.optional-dependencies] +dev = [ +] + +[project.urls] +Documentation = "https://github.com/th3r00t/pyshelf#readme" +Issues = "https://github.com/th3r00t/pyshelf/issues" +Source = "https://github.com/th3r00t/pyshelf" + +[tool.setuptools.packages.find] +where = ["src"] + +[tool.black] +target-version = ["py312"] +line-length = 120 +skip-string-normalization = true + +[tool.ruff] +target-version = "py312" +line-length = 120 +select = [ + "A", "ARG", "B", "C", "DTZ", "E", "EM", "F", "FBT", "I", "ICN", "ISC", "N", + "PLC", "PLE", "PLR", "PLW", "Q", "RUF", "S", "T", "TID", "UP", "W", "YTT" +] +ignore = [ + "B027", "FBT003", "S105", "S106", "S107", "C901", "PLR0911", + "PLR0912", "PLR0913", "PLR0915" +] +unfixable = ["F401"] + +[tool.ruff.isort] +known-first-party = ["pyshelf"] + +[tool.ruff.flake8-tidy-imports] +ban-relative-imports = "all" + +[tool.ruff.per-file-ignores] +"tests/**/*" = ["PLR2004", "S101", "TID252"] + +[tool.coverage.run] +source_pkgs = ["pyshelf", "tests"] +branch = true +parallel = true +omit = ["src/pyshelf/__about__.py"] + +[tool.coverage.paths] +pyshelf = ["src/pyshelf", "*/pyshelf/src/pyshelf"] +tests = ["tests", "*/pyshelf/tests"] + +[tool.coverage.report] +exclude_lines = [ + "no cov", + "if __name__ == .__main__.:", + "if TYPE_CHECKING:", +] + [tool.isort] force_grid_wrap = 0 include_trailing_comma = true line_length = 88 multi_line_output = 3 use_parentheses = true -# NOTE: the known_third_party setting is managed by -# seed-isort-config and should not be modified directly. -# Any changes made to this setting will be overwritten. -known_third_party = ["backend", "bs4", "django", "interface", "mobi", "prompt_toolkit", "psycopg2", "pyfiglet", "requests"] +known_third_party = ["backend", "bs4", "django", "interface", "mobi", "prompt_toolkit", "psycopg2-binary", "pyfiglet", "requests"] diff --git a/pyrightconfig.json b/pyrightconfig.json deleted file mode 100644 index b04aa5c..0000000 --- a/pyrightconfig.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "venvPath": "/home/raelon/.local/share/virtualenvs/", - "venv": "pyShelf-xGw7iExQ" -} diff --git a/pyshelf.sh b/pyshelf.sh new file mode 100755 index 0000000..c06176e --- /dev/null +++ b/pyshelf.sh @@ -0,0 +1,19 @@ +#!/usr/bin/env bash +# This script is used to run the pyshelf application. +# It sets up the environment and runs the main script. +# first we need to activate the virtual environment +if [ -d "/etc/pyShelf/.venv" ]; then + source /etc/pyShelf/.venv/bin/activate +else + echo "Virtual environment not found. Please create it first." + exit 1 +fi +# then we need to run the main script +if [ -f "/etc/pyShelf/release/pyshelf" ]; then + cd /etc/pyShelf + export PYSHELF_ASSETS=/etc/pyShelf/src/frontend + exec /etc/pyShelf/release/pyshelf +else + echo "Main script not found. Please check the directory." + exit 1 +fi diff --git a/requirements.txt b/requirements.txt deleted file mode 100755 index f86f4a7..0000000 --- a/requirements.txt +++ /dev/null @@ -1,29 +0,0 @@ -bs4 -certifi -lxml -Pillow -requests -soupsieve -urllib3 -urwid -w3lib -websockets -pre-commit -isort -django -toml -django-debug-toolbar -psycopg2-binary -prompt_toolkit -psutil -pyfiglet -mobi-python -uwsgi -jsonpickle -django-widget-tweaks -loguru -ptvsd -pudb -daphne -whitenoise -pypdf2 diff --git a/src/__about__.py b/src/__about__.py new file mode 100644 index 0000000..25dd683 --- /dev/null +++ b/src/__about__.py @@ -0,0 +1,4 @@ +# SPDX-FileCopyrightText: 2023-present th3r00t +# +# SPDX-License-Identifier: GPL-3.0-or-later +__version__ = "0.0.1" diff --git a/src/__main__.py b/src/__main__.py new file mode 100755 index 0000000..b351a89 --- /dev/null +++ b/src/__main__.py @@ -0,0 +1,43 @@ +#!/usr/bin/env python3 +"""PyShelf Entrypoint.""" +import asyncio +import sys +from pathlib import Path +from threading import Thread +from backend.lib.config import Config +from backend.lib.storage import Storage +from backend.pyShelf_ScanLibrary import execute_scan +from frontend.lib.FastAPIServer import FastAPIServer +# import websockets + + +root = Path.cwd() +config = Config(root) +PRG_PATH = Path.cwd().__str__() +sys.path.insert(0, PRG_PATH) + + +def run_import(): + """Begin live import of books.""" + config.logger.info("Begining book import.") + execute_scan(PRG_PATH, config=config) + config.logger.info("Finished book import.") + storage = Storage(config=config) + # MakeCollections(PRG_PATH, config=config) + storage.make_collections() + return "Import Complete" + + +async def main(): + """Program entrypoint.""" + Storage(config=config).create_tables() + _import_thread = Thread(target=run_import) + _import_thread.start() + fe_server = FastAPIServer(config) + _task = await asyncio.create_task(fe_server.run()) + return [_task, _import_thread] + + +if __name__ == "__main__": + asyncio.run(main()) + sys.exit(0) diff --git a/src/backend/lib/config.py b/src/backend/lib/config.py index 86fc816..e601684 100755 --- a/src/backend/lib/config.py +++ b/src/backend/lib/config.py @@ -1,23 +1,80 @@ +"""Pyshelf's Configuration Object.""" import json -import pathlib -import re +from pathlib import Path, PurePath import os from loguru import logger class Config: + """Main System Configuration. + + >>> config = Config(root) + + Parameters + ---------- + root : File system root of program + + Attributes + ---------- + root : str() stores root. + config_structure : dict() Default Configuration Structure. + _fp : str() file pointer to main configuration. + _cp : Path() object of configuration file. + _data : dict() parsed json of _fp. + logger : holds logging configuration from get_logger(). + book_path : directory pointer to main books folder. + TITLE : str() Program title. + VERSION : str() Program version. + TITLE : str() Combines TITLE & VERSION. + book_shelf : Deprecation TODO: Is this still in use? + catalogue_db : str() Database Name. + user : str() Database user name. + password : str() Database password. + db_host : str() Database host. + db_port : int() Database port. + file_array : list() copy of book_shelf TODO: See book_shelf + auto_scan: bool() Do we auto scan on launch? + allowed_hosts : list() Allowed host list. + db_engine : str() Desired database engine type. + db_user : str() Database user name. Duplication Warning. + db_pass : str() Database password. Duplication Warning. + build_mode : str() Production | Development mode. + + Methods + ------- + get_logger : Setup loguru. + open_file : Parse configuration file. """ - Main System Configuration - """ + def __init__(self, root): - """ - Initialize main configuration options - """ + """Initialize main configuration options.""" self.root = root + self.config_structure = { + "TITLE": "pyShelf E-Book Server", + "VERSION": "0.7.0", + "BOOKPATH": "/mnt/books", + "DB_HOST": "localhost", + "DB_PORT": "5432", + "DB_ENGINE": "sqlite", + "DATABASE": "pyshelf", + "USER": "pyshelf", + "PASSWORD": "pyshelf", + "BOOKSHELF": "data/shelf.json", + "ALLOWED_HOSTS": [ + "localhost", + "127.0.0.1", + "[::1]", + "0.0.0.0" + ], + "BUILD_MODE": "development" + } env = os.environ.copy() self._fp = "config.json" - self._cp = pathlib.Path.joinpath(root, self._fp) - self._data = self.open_file() + try: + self._cp = Path.joinpath(root, self._fp) + except AttributeError: + self._cp = Path(root, self._fp) + self._data = self.init_config() try: self.logger except AttributeError: @@ -34,32 +91,33 @@ class Config: self.db_port = env.get("DB_PORT", self._data["DB_PORT"]) self.file_array = [self.book_shelf] self.auto_scan = True - self.allowed_hosts = env.get("ALLOWED_HOSTS", self._data["ALLOWED_HOSTS"]) + self.allowed_hosts = env.get("ALLOWED_HOSTS", + self._data["ALLOWED_HOSTS"]) + self.db_engine = env.get("DB_ENGINE", self._data["DB_ENGINE"]) self.db_user = env.get("USER", self._data["USER"]) self.db_pass = env.get("PASSWORD", self._data["PASSWORD"]) - self.SECRET = env.get("SECRET", self._data["SECRET"]) self.build_mode = env.get("BUILD_MODE", self._data["BUILD_MODE"]) + def init_config(self): + try: + return self.open_file() + except FileNotFoundError: + with open(self._fp, 'w') as _config_file: + json.dump(self.config_structure, _config_file) + _config_file.close() + return self.open_file() + def get_logger(self): + """Instantiate logging system.""" _logger = logger - _logger.add(pathlib.PurePath(self.root, 'data', 'pyshelf.log'), + _logger.add(PurePath(self.root, 'data', 'pyshelf.log'), rotation="2 MB", enqueue=True, colorize=True) return _logger def open_file(self): - """ - Opens config.json and reads in configuration options - """ + """Open config.json and reads in configuration options.""" with open(str(self._cp), "r") as read_file: data = json.load(read_file) return data - - def path(self): - rstr = "pyShelf/src" - r = re.template(rstr) - _pathre = re.match("pyShelf/src") - - def django_secret(self): - pass diff --git a/src/backend/lib/library.py b/src/backend/lib/library.py old mode 100755 new mode 100644 index 2b0f296..70669c9 --- a/src/backend/lib/library.py +++ b/src/backend/lib/library.py @@ -2,10 +2,14 @@ import os import re import zipfile -import PyPDF2 +import pypdf from bs4 import BeautifulSoup from mobi import Mobi +from bs4 import XMLParsedAsHTMLWarning +import warnings + +warnings.filterwarnings("ignore", category=XMLParsedAsHTMLWarning) from .api_hooks import DuckDuckGo from .storage import Storage @@ -22,7 +26,8 @@ class Catalogue: self.cover_regx = re.compile(r"\.jpg|\.jpeg|\.png|\.bmp|\.gif") self.html_regx = re.compile(r"\.html") self.title_sanitization_regx = re.compile(r"^(Book )+[0-9]*") - self.title_sanitization_lvl2_regx = re.compile(r"^(Book )+[0-9]*\W+(-)") + self.title_sanitization_lvl2_regx = re.compile( + r"^(Book )+[0-9]*\W+(-)") self.title_sanitization_dirs_regx = re.compile(r"/") self.root_dir = config.root self.book_folder = config.book_path @@ -33,6 +38,8 @@ class Catalogue: def scan_folder(self, _path=None): """ Scan folder by _path, allows recurisive scanning + + :param _path: Path to scan """ if _path is not None: folder = _path @@ -40,35 +47,40 @@ class Catalogue: folder = str(self.root_dir) + "/" + self.book_folder else: folder = self.book_folder - for f in os.listdir(folder): - _path = os.path.abspath(folder + "/" + f) - if os.path.isdir(_path.strip() + "/"): - self.file_list.append(self.scan_folder(_path)) - else: - self.file_list.append(_path) + try: + for f in os.listdir(folder): + _path = os.path.abspath(folder + "/" + f) + if os.path.isdir(_path.strip() + "/"): + self.file_list.append(self.scan_folder(_path)) + else: + self.file_list.append(_path) + except FileNotFoundError as fnfe: + self.config.logger.error(fnfe) def filter_books(self): - """ - Calls scan_folder and filters out book files - Proceeds to call process_book + """Calls scan_folder and filters out book files. - :returns self._book_list_expanded: json string containing all book metadata + :returns self._book_list_expanded: json string containing + all book metadata """ self.scan_folder() # Populate file list regx = re.compile(r"\.epub|\.mobi|\.pdf") try: - self.books = list(filter(regx.search, filter(None, self.file_list))) - except TypeError as e: - self.config.logger.error(e) + self.books = list(filter( + regx.search, filter(None, self.file_list))) + except TypeError as error: + self.config.logger.error(error) def process_by_filetype(self, book): + """Determine books filetype and process.""" if book.endswith(".epub"): epub = self.process_epub(book) return self.extract_metadata_epub(epub) - elif book.endswith(".mobi"): + if book.endswith(".mobi"): return self.extract_metadata_mobi(book) - elif book.endswith(".pdf"): + if book.endswith(".pdf"): return self.extract_metadata_pdf(book) + self.config.logger.error(f"Unknown Filetype {book}") @staticmethod def process_epub(book): @@ -89,9 +101,10 @@ class Catalogue: def extract_metadata_epub(self, book): """ - Return extracted metadata and cover picture - book['path'] == Full path to ebook file - book['files'] == list of files from self.process_book(book) + Extract metadata from epub file + + :param book: Dictionary of epub file contents + :returns: Dictionary of book metadata """ book_zip = zipfile.ZipFile(book["path"], "r") with book_zip as f: @@ -105,7 +118,8 @@ class Catalogue: if re.match(self.title_sanitization_regx, title): if re.match(self.title_sanitization_lvl2_regx, title): title = re.split(r"-+\W", title)[1] - else: title = re.split(self.title_sanitization_regx, title)[2] + else: + title = re.split(self.title_sanitization_regx, title)[2] author = soup.find("dc:creator") if author is not None: @@ -161,14 +175,14 @@ class Catalogue: return book_details def extract_metadata_pdf(self, book): - """ Return extracted metadata + """Return extracted metadata :NOTES: Retrieval of data has been problematic, some pdf's providing reliable titles that corespond with the actual, and others being nonsense. """ ddg = DuckDuckGo() try: - pdf = PyPDF2.PdfFileReader(book) + pdf = pypdf.PdfFileReader(book) except Exception: return None try: @@ -226,21 +240,23 @@ class Catalogue: author = book.author().decode("utf-8") book_config = book.config try: - description = self.stripTags(book_config['exth']['records'][103].decode("utf-8")) + description = self.stripTags( + book_config["exth"]["records"][103].decode("utf-8") + ) except KeyError: description = None try: - identifier = book_config['exth']['records'][104].decode("utf-8") + identifier = book_config["exth"]["records"][104].decode("utf-8") except KeyError: identifier = None try: - publisher = book_config['exth']['records'][101].decode("utf-8") + publisher = book_config["exth"]["records"][101].decode("utf-8") except KeyError: publisher = None date = None rights = None try: - ftags = book_config['exth']['records'][105].decode("utf-8") + ftags = book_config["exth"]["records"][105].decode("utf-8") if ":" in ftags: ftags = ftags.replace(":", ",") elif ";" in ftags: @@ -282,10 +298,12 @@ class Catalogue: Opens epub as zip file filters then stores as list any files matching cover_regx """ try: - cover = book_zip.open(list(filter(self.cover_regx.search, book["files"]))[0]) + cover = book_zip.open( + list(filter(self.cover_regx.search, book["files"]))[0] + ) cover = book_zip.read(cover.name) return cover - except Exception as e: + except Exception: return False def compare_shelf_current(self): @@ -294,15 +312,18 @@ class Catalogue: """ db = Storage(self.config) stored = db.book_paths_list() - db.close() + if not stored: + stored = [] if self.books is None: self.filter_books() on_disk, in_storage = [], [] for _x in self.books: on_disk.append(_x) for _y in stored: - in_storage.append(_y[0]) - a, b, = set(on_disk), set(in_storage) + in_storage.append(_y) + a, b, = set( + on_disk + ), set(in_storage) c = set.difference(a, b) return c @@ -313,22 +334,17 @@ class Catalogue: Iterates over list and inserts new books into database. """ try: - fsocket = kwargs['socket'] + fsocket = kwargs["socket"] except KeyError: - fsocket = '/dev/null' + fsocket = "/dev/null" book_list = self.compare_shelf_current() db = Storage(self.config) for book in book_list: book = self.process_by_filetype(book) - with open(fsocket, 'w') as _socket: + with open(fsocket, "w") as _socket: try: _socket.write(book[0]) except TypeError: continue _socket.close() db.insert_book(book) - inserted = db.commit() - if inserted is not True: - self.config.logger.error("Failed storing {} in database".format(str(book))) - pass - db.close() diff --git a/src/backend/lib/models.py b/src/backend/lib/models.py new file mode 100644 index 0000000..da164b2 --- /dev/null +++ b/src/backend/lib/models.py @@ -0,0 +1,89 @@ +from typing import Optional +from typing_extensions import Annotated + +from sqlalchemy import func, ForeignKey +from sqlalchemy.orm import DeclarativeBase, Mapped, mapped_column, relationship +import datetime + +# Timestamp annotation +timestamp = Annotated[ + datetime.datetime, + mapped_column(nullable=False, server_default=func.CURRENT_TIMESTAMP()), +] + + +class Base(DeclarativeBase): + """Base class for all models.""" + + +class Book(Base): + """Book model.""" + + __tablename__ = "Book" + + id: Mapped[int] = mapped_column(primary_key=True, nullable=False) + title: Mapped[str] + author: Mapped[Optional[str]] + categories: Mapped[Optional[str]] + cover: Mapped[Optional[bytes]] + pages: Mapped[Optional[int]] + progress: Mapped[Optional[float]] + file_name: Mapped[str] + description: Mapped[Optional[str]] + date: Mapped[timestamp] + rights: Mapped[Optional[str]] + tags: Mapped[Optional[str]] + identifier: Mapped[Optional[str]] + publisher: Mapped[Optional[str]] + + # Relationship to join table + book_collections = relationship( + "BookCollection", back_populates="book", cascade="all, delete-orphan" + ) + + +class Collection(Base): + """Collection model.""" + + __tablename__ = "Collection" + + id: Mapped[int] = mapped_column(primary_key=True) + name: Mapped[str] = mapped_column(unique=True) + + # Relationship to join table + book_collections = relationship( + "BookCollection", back_populates="collection", cascade="all, delete-orphan" + ) + + +class BookCollection(Base): + """Association table linking Books and Collections.""" + + __tablename__ = "BookCollection" + + id: Mapped[int] = mapped_column(primary_key=True) + book_id: Mapped[int] = mapped_column(ForeignKey("Book.id")) + collection_id: Mapped[int] = mapped_column(ForeignKey("Collection.id")) + + # Relationships + book = relationship("Book", back_populates="book_collections") + collection = relationship("Collection", back_populates="book_collections") + +class User(Base): + """User model.""" + + __tablename__ = "User" + + id: Mapped[int] = mapped_column(primary_key=True, nullable=False) + username: Mapped[str] = mapped_column(unique=True, nullable=False) + password: Mapped[str] = mapped_column(nullable=False) + email: Mapped[Optional[str]] = mapped_column(unique=True, nullable=True) + date_joined: Mapped[timestamp] = mapped_column( + nullable=False, server_default=func.CURRENT_TIMESTAMP() + ) + last_login: Mapped[Optional[timestamp]] = mapped_column( + nullable=True, server_default=None + ) + is_active: Mapped[bool] = mapped_column(nullable=False, default=True) + is_admin: Mapped[bool] = mapped_column(nullable=False, default=False) + is_superuser: Mapped[bool] = mapped_column(nullable=False, default=False) diff --git a/src/backend/lib/pyShelf.py b/src/backend/lib/pyShelf.py index 89f9597..a6d75b7 100755 --- a/src/backend/lib/pyShelf.py +++ b/src/backend/lib/pyShelf.py @@ -2,26 +2,16 @@ import asyncio import os import time -import datetime import websockets from .config import Config from .library import Catalogue from .storage import Storage -from django.conf import settings -import psycopg2 -from django.contrib.auth.hashers import make_password - -PASSWORD_HASHERS = [ - 'django.contrib.auth.hashers.BCryptSHA256PasswordHasher', - 'django.contrib.auth.hashers.PBKDF2PasswordHasher', - 'django.contrib.auth.hashers.PBKDF2SHA1PasswordHasher', - 'django.contrib.auth.hashers.Argon2PasswordHasher', -] class InitFiles: """First run file creation operations""" + def __init__(self, file_array): for _pointer in file_array: time.sleep(1) @@ -58,17 +48,15 @@ class Server: async def initialize_server(self): self.config.logger.info("INITIALIZE") self.serve = await websockets.serve(self.socketio, self.host[0], self.host[1]) - await asyncio.sleep(.1) + await asyncio.sleep(0.1) self.config.logger.info("Server Initialization Complete") async def runImport(self): - _start_time = time.time() InitFiles(self.config.file_array) _storage = Storage(self.config) _storage.check_ownership() Catalogue(self.config).import_books() _storage.make_collections() - _total_time = round(time.time() - _start_time) async def socketio(self, websocket, path): self.config.logger.info("Listener Starting") @@ -97,29 +85,3 @@ class Server: self.loop.set_debug(True) await websockets.serve(self.socketio, self.host[0], self.host[1]) await asyncio.sleep(1) - - -class Admin: - - def __init__(self, root): - self.config = Config(root) - self.db = Storage(self.config) - settings.configure() - - def createsuperuser(self): - self.db.cursor.execute("SELECT * FROM interface_user") - _user_list = self.db.cursor.fetchall() - if len(_user_list) > 0: - return False - else: - today = datetime.date.today() - date = psycopg2.Date(today.year, today.month, today.day) - self.db.cursor.execute( - 'INSERT INTO interface_user (username, password, is_staff, is_active, is_superuser, ' - 'date_joined, first_name, last_name, ulvl, email ) ' - 'VALUES( %s, %s, %s, %s, %s, %s, %s, %s, %s, %s)', - ("pyshelf", make_password("pyshelf"), True, True, True, date, "pyshelf", "default", 1, - "change_or@delete.me")) - self.db.commit() - self.db.close() - return True diff --git a/src/backend/lib/storage.py b/src/backend/lib/storage.py old mode 100755 new mode 100644 index 8feaf0c..cc4c385 --- a/src/backend/lib/storage.py +++ b/src/backend/lib/storage.py @@ -1,155 +1,333 @@ -#!/usr/bin/python -import datetime +"""Pyshelf's Main Storage Class.""" import re +from collections import defaultdict +from rapidfuzz import process, fuzz +from sqlalchemy import create_engine, select +from sqlalchemy.orm import Session +from pathlib import Path -import psycopg2 +from .models import Book, Collection, BookCollection class Storage: - """Contains all methods for system storage""" - def __init__(self, config): - self.sql = config.catalogue_db - self.user = config.user - self.password = config.password - self.db_host = config.db_host - self.db_port = config.db_port - self.db = psycopg2.connect(database=self.sql, - user=self.user, - password=self.password, - host=self.db_host) - self.config = config - self.cursor = self.db.cursor() + """Create a new Storage object. - def check_ownership(self, table=None): - if table is None: - table = "books" - _q = "SELECT * FROM books" - try: - self.cursor.execute(_q) - except Exception as e: - if e.pgcode == "42501": - _q = """ALTER TABLE public.books OWNER to pyshelf;""" - self.close() - set_perms = Storage(self.config) - try: - set_perms.cursor.execute(_q) - set_perms.close() - except Exception as e: - self.config.logger.error(e) - set_perms.close() + >>> db = Storage(config) + + Parameters + ---------- + config : Config() + Main program configuration. + + Attributes + ---------- + config : Stores configuration + sql : Database Name + user : Database User Name + password : Database Password + db_host : Database Host + db_port : Database Port + engine : sqlalchemy.create_engine(url, executor, kw) + """ + + def __init__(self, config): + """Initialize storage object.""" + self.config = config + self.sql = self.config.catalogue_db + self.user = self.config.user + self.password = self.config.password + self.db_host = self.config.db_host + self.db_port = self.config.db_port + self.engine = create_engine(self.get_connection_string(), + pool_pre_ping=True) + + def get_connection_string(self): + """Get connection string. + + Engine type references config.json:DB_ENGINE. + + Returns + ------- + str : sqlalchemy Connection String + """ + if self.config.db_engine == "sqlite": + return f"sqlite:////{self.config.root}/pyshelf.sqlite3" + elif self.config.db_engine == "psql": + return f"postgresql://{self.user}:{self.password}\ + @{self.db_host}:{self.db_port}/{self.sql}" + elif self.config.db_engine == "mysql": + return f"mysql://{self.user}:{self.password}\ + @{self.db_host}:{self.db_port}/{self.sql}" def create_tables(self): - """Create table structure""" - q_check = "SELECT * FROM books" - q_create = """CREATE TABLE books(title text, author text, - categories text null, cover blob null, pages int null, progress int null, - file_name text)""" - try: - self.cursor.execute(q_check) - except Exception as e: - self.cursor.execute(q_create) + """Create table structure.""" + tables = [Book, Collection] + for table in tables: + table.metadata.create_all(self.engine) def insert_book(self, book): + """Insert a new book into the database. + + Parameters + ---------- + book: dict() + Book object to insert. + + Returns + ------- + bool + True on success False on failure """ - Insert book in database - :returns: True if succeeds False if not - """ - q = "INSERT INTO books (title, author, cover, progress, file_name, pages, description, identifier, publisher, date, rights, tags) values (%s, %s, %s, 0, %s, 0, %s, %s, %s, %s, %s, %s);" - try: + with Session(self.engine) as session: try: - cover_image = book[2].data - except: - cover_image = book[2] - if not book[2]: # If cover image is missing unset entry - cover_image = None - self.cursor.execute( - q, - ( - book[0], # title - book[1], # author - cover_image, - book[3], # file - book[4], # descr - book[5], # ident - book[6], # publisher - datetime.datetime.now(), - book[8], # rights - book[9], # tags - ), - ) - self.config.logger.info(book[0][0:80]) - return True - except Exception as e: - if e.pgcode == '22007': # psycopg2's error code for invalid date - book[7] = psycopg2.Date(int(book[7]), 1, 1) - self.insert_book(book) - raise e + try: + cover_image = book[2].data + except Exception: + cover_image = book[2] + if not book[2]: # If cover image is missing unset entry + cover_image = None + if not book[1]: + pass + # collections = self.parse_collections_from_path(book) + # breakpoint() + _book = Book( + title=book[0], + author=book[1], + cover=cover_image, + file_name=book[3], + description=book[4], + identifier=book[5], + publisher=book[6], + rights=book[8], + tags=book[9], + ) + session.add(_book) + session.commit() + session.close() + # self.config.logger.info(book[0][0:80]) + return True + except Exception as e: + self.config.logger.error(f"{book[0][0:80]} :: {e}") + return False def book_paths_list(self): - """ - Get file paths from database for comparison to system files - """ - q = "SELECT file_name FROM books;" - self.cursor.execute(q) - try: - x = self.cursor.fetchall() - except psycopg2.Error as e: - self.config.logger.error(e) - x = [] - return x + """Get file paths from database for comparison to system files. - def commit(self): + Returns + ------- + _result : ScalarResult Object """ - Commit database transactions - """ - try: - self.db.commit() - return True - except Exception as e: - return e + session = Session(self.engine) + _result = session.scalars(select(Book.file_name)).fetchall() + session.close() + return _result - def close(self): + def parse_collections_from_path(self, book: dict()) -> list(): + """Parse book path's to determine common folder structure. + + Stores collections based on shared paths. + + Parameters + ---------- + book : dict() + Book object to parse. + + Returns + ------- + collections : list() + List of collections. """ - Close database connection - """ - self.db.close() - return True + # collections = [] + # title_regx = re.compile(r"^[0-9][0-9]*|-|\ \B") + # book_path: Path = Path(book[3]) + # store_path: Path = Path(self.config.book_path) + # relative_book_path: Path = book_path.relative_to(store_path) + # for path in relative_book_path.parts: + # collections.append(re.sub(title_regx, "", path).strip()) + # collections.pop(-1) + # return collections + collections = [] + title_regx = re.compile(r"^[0-9][0-9]*|-|\ \B") + book_path: Path = Path(book[3]) + store_path: Path = Path(self.config.book_path) + relative_book_path: Path = book_path.relative_to(store_path) + # Keep all folder names except the actual file + for folder in relative_book_path.parts[:-1]: + clean_name = re.sub(title_regx, "", folder).strip() + if clean_name: + collections.append(clean_name) + return collections def make_collections(self): - _title_regx = re.compile(r"^[0-9][0-9]*|-|\ \B") - _q = "SELECT id,file_name FROM books" - self.cursor.execute(_q) - _set = self.cursor.fetchall() - for book in _set: - path = self.config.book_path + "/" - _collections = [] - _pathing = book[1].split(path)[1].split("/") + """Ensure collections exist and link them to books (many-to-many).""" + self.config.logger.info("Making collections.") + session = Session(self.engine) + + # get all books and paths + books = session.execute(select(Book.id, Book.file_name)).all() + + for book_id, file_name in books: try: - _pathing.pop(0) - _pathing.pop(-1) - except IndexError: - continue - for _p in _pathing: - _s = _p.replace("'", "") - _x = re.sub(_title_regx, "", _s) - _s = _x.strip() - _q_x = """ - SELECT id FROM collections where collection='%s'\ - AND book_id_id=%s - """ % ( - _s, - book[0], + relative_parts = Path(file_name).relative_to(self.config.book_path).parts + except ValueError: + continue # skip books outside the configured path + if len(relative_parts) < 2: + folder = "Unsorted" + else: + folder = relative_parts[0] + # check if collection exists + collection = session.execute( + select(Collection).where(Collection.name == folder) + ).scalar_one_or_none() + if not collection: + collection = Collection(name=folder) + session.add(collection) + session.flush() # ensures collection.id is available + + # check link + link_exists = session.execute( + select(BookCollection).where( + BookCollection.book_id == book_id, + BookCollection.collection_id == collection.id ) - try: - self.cursor.execute(_q_x) - if len(self.cursor.fetchall()) < 1: - self.cursor.execute("""INSERT INTO collections\ - (collection, book_id_id) VALUES ('%s',%s)""" % - (_s, book[0])) - self.config.logger.info( - "Collection {} Added".format(_s)) - except Exception as e: - self.config.logger.error(e) - _collections.append(_p) - self.db.commit() - self.close() + ).first() + + if not link_exists: + session.add(BookCollection(book_id=book_id, collection_id=collection.id)) + + session.commit() + session.close() + self.config.logger.info("Finished making collections.") + + def get_books(self, collection=None, skip=None, limit=None): + """Get books from database. + + Parameters + ---------- + collection : int or None + Collection ID to filter by. + skip : int or None + Number of records to skip (offset). + limit : int or None + Maximum number of records to return. + """ + with Session(self.engine) as session: + if collection is not None: + # Join through BookCollection to filter books in a collection + result = session.execute( + select(Book) + .join(BookCollection) + .where(BookCollection.collection_id == collection) + .offset(skip or 0) + # .limit(limit or 100) + .limit(limit) + ).scalars().all() + else: + result = session.execute( + select(Book) + .offset(skip or 0) + # .limit(limit or 100) + .limit(limit) + ).scalars().all() + return result + + def get_book(self, id): + """Get book from database. + + Parameters + ---------- + id : int + Book ID to filter by. + + Returns + ------- + _result : ScalarResult Object + """ + session = Session(self.engine) + _result = session.execute(select(Book).where(Book.id == id)).first() + session.close() + return _result + + def get_collections(self): + """Get collections from database. + + Returns + ------- + _result : ScalarResult Object + """ + with Session(self.engine) as session: + result = session.execute( + select(Collection).join(BookCollection).distinct() + ).scalars().all() + return result + + def get_collection(self, name): + """Get collection from database. + + Returns + ------- + _result : ScalarResult Object + """ + session = Session(self.engine) + _result = session.execute(select(Collection).where(Collection.name == name).join(Book)).all() + session.close() + return _result + + + def parse_advanced_query(self, query: str) -> dict: + """Parse a query like 'title:"dark tower" author:king tags:fantasy'""" + fields = ["title", "author", "tags"] + tokens = re.findall(r'(\w+:"[^"]+"|\w+:\S+|"[^"]+"|\S+)', query) + parsed = defaultdict(list) + + for token in tokens: + field_match = re.match(r"(\w+):\"(.+?)\"", token) or re.match(r"(\w+):(\S+)", token) + if field_match: + field, value = field_match.groups() + field = field.lower() + if field in fields: + parsed[field].append(value.strip('"')) + elif token.startswith('"') and token.endswith('"'): + parsed["keywords"].append(token.strip('"')) + else: + parsed["keywords"].append(token) + + return parsed + + def fuzzy_search_books(self, query: str, limit: int = 30): + parsed = self.parse_advanced_query(query) + + with Session(self.engine) as session: + books = session.execute(select(Book)).scalars().all() + + # Apply field filters + def match_field(book, field, values): + content = (getattr(book, field) or "").lower() + return all(v.lower() in content for v in values) + + filtered = [] + for book in books: + if any( + not match_field(book, field, values) + for field, values in parsed.items() + if field in ("title", "author", "tags") + ): + continue + filtered.append(book) + + # Apply fuzzy keyword match if needed + if "keywords" in parsed: + book_choices = { + b.id: f"{b.title or ''} {b.author or ''} {b.tags or ''}" for b in filtered + } + fuzzy_results = process.extract( + " ".join(parsed["keywords"]), + book_choices, + scorer=fuzz.WRatio, + limit=limit + ) + matched_ids = [book_id for _, score, book_id in fuzzy_results if score > 50] + return [b for b in filtered if b.id in matched_ids] + + return filtered + diff --git a/src/backend/pyShelf_MakeCollections.py b/src/backend/pyShelf_MakeCollections.py index 18e69ca..b778bac 100755 --- a/src/backend/pyShelf_MakeCollections.py +++ b/src/backend/pyShelf_MakeCollections.py @@ -4,8 +4,8 @@ import sys import time from .lib.config import Config -from .lib.library import Catalogue -from .lib.pyShelf import InitFiles +# from .lib.library import Catalogue +# from .lib.pyShelf import InitFiles from .lib.storage import Storage sys.path.append(os.path.abspath(".")) diff --git a/src/backend/pyShelf_ScanLibrary.py b/src/backend/pyShelf_ScanLibrary.py old mode 100755 new mode 100644 index 53c2cc8..db25949 --- a/src/backend/pyShelf_ScanLibrary.py +++ b/src/backend/pyShelf_ScanLibrary.py @@ -6,7 +6,6 @@ import time from .lib.config import Config from .lib.library import Catalogue from .lib.pyShelf import InitFiles -from .lib.storage import Storage sys.path.append(os.path.abspath(".")) @@ -14,13 +13,16 @@ sys.path.append(os.path.abspath(".")) def execute_scan(root, **kwargs): """ Main scan execution + :param root: Project root. Required to properly execute program. Sends to configuration. """ + # TODO: Refactor for new collections system. _t1 = time.time() - try: config = kwargs["config"]; - except KeyError as e: config = Config(root) # Get configuration settings + try: + config = kwargs["config"] + except KeyError: + config = Config(root) # Get configuration settings InitFiles(config.file_array) # Initialize file system - Storage(config).check_ownership() catalogue = Catalogue(config) # Open the Catalogue catalogue.import_books() _t2 = time.time() diff --git a/src/client/.env.example b/src/client/.env.example new file mode 100644 index 0000000..c1464a2 --- /dev/null +++ b/src/client/.env.example @@ -0,0 +1,25 @@ +# Since the ".env" file is gitignored, you can use the ".env.example" file to +# build a new ".env" file when you clone the repo. Keep this file up-to-date +# when you add new variables to `.env`. + +# This file will be committed to version control, so make sure not to have any +# secrets in it. If you are cloning this repo, create a copy of this file named +# ".env" and populate it with your secrets. + +# When adding additional environment variables, the schema in "/src/env.mjs" +# should be updated accordingly. + +# Prisma +# https://www.prisma.io/docs/reference/database-reference/connection-urls#env +DATABASE_URL="file:./db.sqlite" + +# Next Auth +# You can generate a new secret on the command line with: +# openssl rand -base64 32 +# https://next-auth.js.org/configuration/options#secret +# NEXTAUTH_SECRET="" +NEXTAUTH_URL="http://localhost:3000" + +# Next Auth Discord Provider +DISCORD_CLIENT_ID="" +DISCORD_CLIENT_SECRET="" diff --git a/src/client/.eslintrc.cjs b/src/client/.eslintrc.cjs new file mode 100644 index 0000000..8b7a0e8 --- /dev/null +++ b/src/client/.eslintrc.cjs @@ -0,0 +1,35 @@ +// eslint-disable-next-line @typescript-eslint/no-var-requires +const path = require("path"); + +/** @type {import("eslint").Linter.Config} */ +const config = { + overrides: [ + { + extends: [ + "plugin:@typescript-eslint/recommended-requiring-type-checking", + ], + files: ["*.ts", "*.tsx"], + parserOptions: { + project: path.join(__dirname, "tsconfig.json"), + }, + }, + ], + parser: "@typescript-eslint/parser", + parserOptions: { + project: path.join(__dirname, "tsconfig.json"), + }, + plugins: ["@typescript-eslint"], + extends: ["next/core-web-vitals", "plugin:@typescript-eslint/recommended"], + rules: { + "@typescript-eslint/consistent-type-imports": [ + "warn", + { + prefer: "type-imports", + fixStyle: "inline-type-imports", + }, + ], + "@typescript-eslint/no-unused-vars": ["warn", { argsIgnorePattern: "^_" }], + }, +}; + +module.exports = config; diff --git a/src/client/.gitignore b/src/client/.gitignore new file mode 100644 index 0000000..2971a0b --- /dev/null +++ b/src/client/.gitignore @@ -0,0 +1,42 @@ +# See https://help.github.com/articles/ignoring-files/ for more about ignoring files. + +# dependencies +/node_modules +/.pnp +.pnp.js + +# testing +/coverage + +# database +/prisma/db.sqlite +/prisma/db.sqlite-journal + +# next.js +/.next/ +/out/ +next-env.d.ts + +# production +/build + +# misc +.DS_Store +*.pem + +# debug +npm-debug.log* +yarn-debug.log* +yarn-error.log* +.pnpm-debug.log* + +# local env files +# do not commit any .env files to git, except for the .env.example file. https://create.t3.gg/en/usage/env-variables#using-environment-variables +.env +.env*.local + +# vercel +.vercel + +# typescript +*.tsbuildinfo diff --git a/src/client/README.md b/src/client/README.md new file mode 100644 index 0000000..fba19ed --- /dev/null +++ b/src/client/README.md @@ -0,0 +1,28 @@ +# Create T3 App + +This is a [T3 Stack](https://create.t3.gg/) project bootstrapped with `create-t3-app`. + +## What's next? How do I make an app with this? + +We try to keep this project as simple as possible, so you can start with just the scaffolding we set up for you, and add additional things later when they become necessary. + +If you are not familiar with the different technologies used in this project, please refer to the respective docs. If you still are in the wind, please join our [Discord](https://t3.gg/discord) and ask for help. + +- [Next.js](https://nextjs.org) +- [NextAuth.js](https://next-auth.js.org) +- [Prisma](https://prisma.io) +- [Tailwind CSS](https://tailwindcss.com) +- [tRPC](https://trpc.io) + +## Learn More + +To learn more about the [T3 Stack](https://create.t3.gg/), take a look at the following resources: + +- [Documentation](https://create.t3.gg/) +- [Learn the T3 Stack](https://create.t3.gg/en/faq#what-learning-resources-are-currently-available) — Check out these awesome tutorials + +You can check out the [create-t3-app GitHub repository](https://github.com/t3-oss/create-t3-app) — your feedback and contributions are welcome! + +## How do I deploy this? + +Follow our deployment guides for [Vercel](https://create.t3.gg/en/deployment/vercel), [Netlify](https://create.t3.gg/en/deployment/netlify) and [Docker](https://create.t3.gg/en/deployment/docker) for more information. diff --git a/src/client/next.config.mjs b/src/client/next.config.mjs new file mode 100644 index 0000000..f9b4e26 --- /dev/null +++ b/src/client/next.config.mjs @@ -0,0 +1,22 @@ +/** + * Run `build` or `dev` with `SKIP_ENV_VALIDATION` to skip env validation. + * This is especially useful for Docker builds. + */ +!process.env.SKIP_ENV_VALIDATION && (await import("./src/env.mjs")); + +/** @type {import("next").NextConfig} */ +const config = { + reactStrictMode: true, + + /** + * If you have the "experimental: { appDir: true }" setting enabled, then you + * must comment the below `i18n` config out. + * + * @see https://github.com/vercel/next.js/issues/41980 + */ + i18n: { + locales: ["en"], + defaultLocale: "en", + }, +}; +export default config; diff --git a/src/client/package.json b/src/client/package.json new file mode 100644 index 0000000..2a71bd9 --- /dev/null +++ b/src/client/package.json @@ -0,0 +1,48 @@ +{ + "name": "client", + "version": "0.1.0", + "private": true, + "scripts": { + "build": "next build", + "dev": "next dev", + "postinstall": "prisma generate", + "lint": "next lint", + "start": "next start" + }, + "dependencies": { + "@next-auth/prisma-adapter": "^1.0.5", + "@prisma/client": "^4.9.0", + "@tanstack/react-query": "^4.20.2", + "@trpc/client": "^10.9.0", + "@trpc/next": "^10.9.0", + "@trpc/react-query": "^10.9.0", + "@trpc/server": "^10.9.0", + "next": "^13.2.1", + "next-auth": "^4.19.0", + "react": "18.2.0", + "react-dom": "18.2.0", + "superjson": "1.9.1", + "zod": "^3.20.6" + }, + "devDependencies": { + "@types/eslint": "^8.21.1", + "@types/node": "^18.14.0", + "@types/prettier": "^2.7.2", + "@types/react": "^18.0.28", + "@types/react-dom": "^18.0.11", + "@typescript-eslint/eslint-plugin": "^5.53.0", + "@typescript-eslint/parser": "^5.53.0", + "autoprefixer": "^10.4.7", + "eslint": "^8.34.0", + "eslint-config-next": "^13.2.1", + "postcss": "^8.4.14", + "prettier": "^2.8.1", + "prettier-plugin-tailwindcss": "^0.2.1", + "prisma": "^4.9.0", + "tailwindcss": "^3.2.0", + "typescript": "^4.9.5" + }, + "ct3aMetadata": { + "initVersion": "7.8.0" + } +} diff --git a/src/client/postcss.config.cjs b/src/client/postcss.config.cjs new file mode 100644 index 0000000..e305dd9 --- /dev/null +++ b/src/client/postcss.config.cjs @@ -0,0 +1,8 @@ +const config = { + plugins: { + tailwindcss: {}, + autoprefixer: {}, + }, +}; + +module.exports = config; diff --git a/src/client/prettier.config.cjs b/src/client/prettier.config.cjs new file mode 100644 index 0000000..ca28ed9 --- /dev/null +++ b/src/client/prettier.config.cjs @@ -0,0 +1,6 @@ +/** @type {import("prettier").Config} */ +const config = { + plugins: [require.resolve("prettier-plugin-tailwindcss")], +}; + +module.exports = config; diff --git a/src/client/prisma/schema.prisma b/src/client/prisma/schema.prisma new file mode 100644 index 0000000..8259662 --- /dev/null +++ b/src/client/prisma/schema.prisma @@ -0,0 +1,81 @@ +// This is your Prisma schema file, +// learn more about it in the docs: https://pris.ly/d/prisma-schema + +generator client { + provider = "prisma-client-js" +} + +datasource db { + provider = "sqlite" + // NOTE: When using postgresql, mysql or sqlserver, uncomment the @db.Text annotations in model Account below + // Further reading: + // https://next-auth.js.org/adapters/prisma#create-the-prisma-schema + // https://www.prisma.io/docs/reference/api-reference/prisma-schema-reference#string + url = env("DATABASE_URL") +} + +model Example { + id String @id @default(cuid()) + createdAt DateTime @default(now()) + updatedAt DateTime @updatedAt +} + +// Necessary for Next auth +model Account { + id String @id @default(cuid()) + userId String + type String + provider String + providerAccountId String + refresh_token String? // @db.Text + access_token String? // @db.Text + expires_at Int? + token_type String? + scope String? + id_token String? // @db.Text + session_state String? + user User @relation(fields: [userId], references: [id], onDelete: Cascade) + + @@unique([provider, providerAccountId]) +} + +model Session { + id String @id @default(cuid()) + sessionToken String @unique + userId String + expires DateTime + user User @relation(fields: [userId], references: [id], onDelete: Cascade) +} + +model User { + id String @id @default(cuid()) + name String? + email String? @unique + emailVerified DateTime? + image String? + accounts Account[] + sessions Session[] +} + +model VerificationToken { + identifier String + token String @unique + expires DateTime + + @@unique([identifier, token]) +} + +model Books { + id String @id @default(cuid()) + title String + author String + createdAt DateTime @default(now()) + updatedAt DateTime @updatedAt +} + +model Collections { + id String @id @default(cuid()) + title String + createdAt DateTime @default(now()) + updatedAt DateTime @updatedAt +} diff --git a/src/client/public/favicon.ico b/src/client/public/favicon.ico new file mode 100644 index 0000000..60c702a Binary files /dev/null and b/src/client/public/favicon.ico differ diff --git a/src/client/src/env.mjs b/src/client/src/env.mjs new file mode 100644 index 0000000..fcad3ec --- /dev/null +++ b/src/client/src/env.mjs @@ -0,0 +1,94 @@ +import { z } from "zod"; + +/** + * Specify your server-side environment variables schema here. This way you can ensure the app isn't + * built with invalid env vars. + */ +const server = z.object({ + DATABASE_URL: z.string().url(), + NODE_ENV: z.enum(["development", "test", "production"]), + NEXTAUTH_SECRET: + process.env.NODE_ENV === "production" + ? z.string().min(1) + : z.string().min(1).optional(), + NEXTAUTH_URL: z.preprocess( + // This makes Vercel deployments not fail if you don't set NEXTAUTH_URL + // Since NextAuth.js automatically uses the VERCEL_URL if present. + (str) => process.env.VERCEL_URL ?? str, + // VERCEL_URL doesn't include `https` so it cant be validated as a URL + process.env.VERCEL ? z.string().min(1) : z.string().url(), + ), + // Add `.min(1) on ID and SECRET if you want to make sure they're not empty + DISCORD_CLIENT_ID: z.string(), + DISCORD_CLIENT_SECRET: z.string(), +}); + +/** + * Specify your client-side environment variables schema here. This way you can ensure the app isn't + * built with invalid env vars. To expose them to the client, prefix them with `NEXT_PUBLIC_`. + */ +const client = z.object({ + // NEXT_PUBLIC_CLIENTVAR: z.string().min(1), +}); + +/** + * You can't destruct `process.env` as a regular object in the Next.js edge runtimes (e.g. + * middlewares) or client-side so we need to destruct manually. + * + * @type {Record | keyof z.infer, string | undefined>} + */ +const processEnv = { + DATABASE_URL: process.env.DATABASE_URL, + NODE_ENV: process.env.NODE_ENV, + NEXTAUTH_SECRET: process.env.NEXTAUTH_SECRET, + NEXTAUTH_URL: process.env.NEXTAUTH_URL, + DISCORD_CLIENT_ID: process.env.DISCORD_CLIENT_ID, + DISCORD_CLIENT_SECRET: process.env.DISCORD_CLIENT_SECRET, + // NEXT_PUBLIC_CLIENTVAR: process.env.NEXT_PUBLIC_CLIENTVAR, +}; + +// Don't touch the part below +// -------------------------- + +const merged = server.merge(client); + +/** @typedef {z.input} MergedInput */ +/** @typedef {z.infer} MergedOutput */ +/** @typedef {z.SafeParseReturnType} MergedSafeParseReturn */ + +let env = /** @type {MergedOutput} */ (process.env); + +if (!!process.env.SKIP_ENV_VALIDATION == false) { + const isServer = typeof window === "undefined"; + + const parsed = /** @type {MergedSafeParseReturn} */ ( + isServer + ? merged.safeParse(processEnv) // on server we can validate all env vars + : client.safeParse(processEnv) // on client we can only validate the ones that are exposed + ); + + if (parsed.success === false) { + console.error( + "❌ Invalid environment variables:", + parsed.error.flatten().fieldErrors, + ); + throw new Error("Invalid environment variables"); + } + + env = new Proxy(parsed.data, { + get(target, prop) { + if (typeof prop !== "string") return undefined; + // Throw a descriptive error if a server-side env var is accessed on the client + // Otherwise it would just be returning `undefined` and be annoying to debug + if (!isServer && !prop.startsWith("NEXT_PUBLIC_")) + throw new Error( + process.env.NODE_ENV === "production" + ? "❌ Attempted to access a server-side environment variable on the client" + : `❌ Attempted to access server-side environment variable '${prop}' on the client`, + ); + return target[/** @type {keyof typeof target} */ (prop)]; + }, + }); +} + +export { env }; diff --git a/src/client/src/pages/_app.tsx b/src/client/src/pages/_app.tsx new file mode 100644 index 0000000..81e8bcc --- /dev/null +++ b/src/client/src/pages/_app.tsx @@ -0,0 +1,20 @@ +import { type AppType } from "next/app"; +import { type Session } from "next-auth"; +import { SessionProvider } from "next-auth/react"; + +import { api } from "~/utils/api"; + +import "~/styles/globals.css"; + +const MyApp: AppType<{ session: Session | null }> = ({ + Component, + pageProps: { session, ...pageProps }, +}) => { + return ( + + + + ); +}; + +export default api.withTRPC(MyApp); diff --git a/src/client/src/pages/api/auth/[...nextauth].ts b/src/client/src/pages/api/auth/[...nextauth].ts new file mode 100644 index 0000000..8aefbb6 --- /dev/null +++ b/src/client/src/pages/api/auth/[...nextauth].ts @@ -0,0 +1,4 @@ +import NextAuth from "next-auth"; +import { authOptions } from "~/server/auth"; + +export default NextAuth(authOptions); diff --git a/src/client/src/pages/api/trpc/[trpc].ts b/src/client/src/pages/api/trpc/[trpc].ts new file mode 100644 index 0000000..3c744a0 --- /dev/null +++ b/src/client/src/pages/api/trpc/[trpc].ts @@ -0,0 +1,19 @@ +import { createNextApiHandler } from "@trpc/server/adapters/next"; + +import { env } from "~/env.mjs"; +import { createTRPCContext } from "~/server/api/trpc"; +import { appRouter } from "~/server/api/root"; + +// export API handler +export default createNextApiHandler({ + router: appRouter, + createContext: createTRPCContext, + onError: + env.NODE_ENV === "development" + ? ({ path, error }) => { + console.error( + `❌ tRPC failed on ${path ?? ""}: ${error.message}`, + ); + } + : undefined, +}); diff --git a/src/client/src/pages/index.tsx b/src/client/src/pages/index.tsx new file mode 100644 index 0000000..97ec863 --- /dev/null +++ b/src/client/src/pages/index.tsx @@ -0,0 +1,83 @@ +import { type NextPage } from "next"; +import Head from "next/head"; +import Link from "next/link"; +import { signIn, signOut, useSession } from "next-auth/react"; + +import { api } from "~/utils/api"; + +const Home: NextPage = () => { + const hello = api.example.hello.useQuery({ text: "from tRPC" }); + + return ( + <> + + Create T3 App + + + +
+
+

+ Create T3 App +

+
+ +

First Steps →

+
+ Just the basics - Everything you need to know to set up your + database and authentication. +
+ + +

Documentation →

+
+ Learn more about Create T3 App, the libraries it uses, and how + to deploy it. +
+ +
+
+

+ {hello.data ? hello.data.greeting : "Loading tRPC query..."} +

+ +
+
+
+ + ); +}; + +export default Home; + +const AuthShowcase: React.FC = () => { + const { data: sessionData } = useSession(); + + const { data: secretMessage } = api.example.getSecretMessage.useQuery( + undefined, // no input + { enabled: sessionData?.user !== undefined }, + ); + + return ( +
+

+ {sessionData && Logged in as {sessionData.user?.name}} + {secretMessage && - {secretMessage}} +

+ +
+ ); +}; diff --git a/src/client/src/server/api/root.ts b/src/client/src/server/api/root.ts new file mode 100644 index 0000000..93fba92 --- /dev/null +++ b/src/client/src/server/api/root.ts @@ -0,0 +1,14 @@ +import { createTRPCRouter } from "~/server/api/trpc"; +import { exampleRouter } from "~/server/api/routers/example"; + +/** + * This is the primary router for your server. + * + * All routers added in /api/routers should be manually added here. + */ +export const appRouter = createTRPCRouter({ + example: exampleRouter, +}); + +// export type definition of API +export type AppRouter = typeof appRouter; diff --git a/src/client/src/server/api/routers/example.ts b/src/client/src/server/api/routers/example.ts new file mode 100644 index 0000000..73de162 --- /dev/null +++ b/src/client/src/server/api/routers/example.ts @@ -0,0 +1,25 @@ +import { z } from "zod"; + +import { + createTRPCRouter, + publicProcedure, + protectedProcedure, +} from "~/server/api/trpc"; + +export const exampleRouter = createTRPCRouter({ + hello: publicProcedure + .input(z.object({ text: z.string() })) + .query(({ input }) => { + return { + greeting: `Hello ${input.text}`, + }; + }), + + getAll: publicProcedure.query(({ ctx }) => { + return ctx.prisma.example.findMany(); + }), + + getSecretMessage: protectedProcedure.query(() => { + return "you can now see this secret message!"; + }), +}); diff --git a/src/client/src/server/api/trpc.ts b/src/client/src/server/api/trpc.ts new file mode 100644 index 0000000..320ffd6 --- /dev/null +++ b/src/client/src/server/api/trpc.ts @@ -0,0 +1,130 @@ +/** + * YOU PROBABLY DON'T NEED TO EDIT THIS FILE, UNLESS: + * 1. You want to modify request context (see Part 1). + * 2. You want to create a new middleware or type of procedure (see Part 3). + * + * TL;DR - This is where all the tRPC server stuff is created and plugged in. The pieces you will + * need to use are documented accordingly near the end. + */ + +/** + * 1. CONTEXT + * + * This section defines the "contexts" that are available in the backend API. + * + * These allow you to access things when processing a request, like the database, the session, etc. + */ +import { type CreateNextContextOptions } from "@trpc/server/adapters/next"; +import { type Session } from "next-auth"; + +import { getServerAuthSession } from "~/server/auth"; +import { prisma } from "~/server/db"; + +type CreateContextOptions = { + session: Session | null; +}; + +/** + * This helper generates the "internals" for a tRPC context. If you need to use it, you can export + * it from here. + * + * Examples of things you may need it for: + * - testing, so we don't have to mock Next.js' req/res + * - tRPC's `createSSGHelpers`, where we don't have req/res + * + * @see https://create.t3.gg/en/usage/trpc#-servertrpccontextts + */ +const createInnerTRPCContext = (opts: CreateContextOptions) => { + return { + session: opts.session, + prisma, + }; +}; + +/** + * This is the actual context you will use in your router. It will be used to process every request + * that goes through your tRPC endpoint. + * + * @see https://trpc.io/docs/context + */ +export const createTRPCContext = async (opts: CreateNextContextOptions) => { + const { req, res } = opts; + + // Get the session from the server using the getServerSession wrapper function + const session = await getServerAuthSession({ req, res }); + + return createInnerTRPCContext({ + session, + }); +}; + +/** + * 2. INITIALIZATION + * + * This is where the tRPC API is initialized, connecting the context and transformer. We also parse + * ZodErrors so that you get typesafety on the frontend if your procedure fails due to validation + * errors on the backend. + */ +import { initTRPC, TRPCError } from "@trpc/server"; +import superjson from "superjson"; +import { ZodError } from "zod"; + +const t = initTRPC.context().create({ + transformer: superjson, + errorFormatter({ shape, error }) { + return { + ...shape, + data: { + ...shape.data, + zodError: + error.cause instanceof ZodError ? error.cause.flatten() : null, + }, + }; + }, +}); + +/** + * 3. ROUTER & PROCEDURE (THE IMPORTANT BIT) + * + * These are the pieces you use to build your tRPC API. You should import these a lot in the + * "/src/server/api/routers" directory. + */ + +/** + * This is how you create new routers and sub-routers in your tRPC API. + * + * @see https://trpc.io/docs/router + */ +export const createTRPCRouter = t.router; + +/** + * Public (unauthenticated) procedure + * + * This is the base piece you use to build new queries and mutations on your tRPC API. It does not + * guarantee that a user querying is authorized, but you can still access user session data if they + * are logged in. + */ +export const publicProcedure = t.procedure; + +/** Reusable middleware that enforces users are logged in before running the procedure. */ +const enforceUserIsAuthed = t.middleware(({ ctx, next }) => { + if (!ctx.session || !ctx.session.user) { + throw new TRPCError({ code: "UNAUTHORIZED" }); + } + return next({ + ctx: { + // infers the `session` as non-nullable + session: { ...ctx.session, user: ctx.session.user }, + }, + }); +}); + +/** + * Protected (authenticated) procedure + * + * If you want a query or mutation to ONLY be accessible to logged in users, use this. It verifies + * the session is valid and guarantees `ctx.session.user` is not null. + * + * @see https://trpc.io/docs/procedures + */ +export const protectedProcedure = t.procedure.use(enforceUserIsAuthed); diff --git a/src/client/src/server/auth.ts b/src/client/src/server/auth.ts new file mode 100644 index 0000000..7e6d826 --- /dev/null +++ b/src/client/src/server/auth.ts @@ -0,0 +1,76 @@ +import { type GetServerSidePropsContext } from "next"; +import { + getServerSession, + type NextAuthOptions, + type DefaultSession, +} from "next-auth"; +import DiscordProvider from "next-auth/providers/discord"; +import { PrismaAdapter } from "@next-auth/prisma-adapter"; +import { env } from "~/env.mjs"; +import { prisma } from "~/server/db"; + +/** + * Module augmentation for `next-auth` types. Allows us to add custom properties to the `session` + * object and keep type safety. + * + * @see https://next-auth.js.org/getting-started/typescript#module-augmentation + */ +declare module "next-auth" { + interface Session extends DefaultSession { + user: { + id: string; + // ...other properties + // role: UserRole; + } & DefaultSession["user"]; + } + + // interface User { + // // ...other properties + // // role: UserRole; + // } +} + +/** + * Options for NextAuth.js used to configure adapters, providers, callbacks, etc. + * + * @see https://next-auth.js.org/configuration/options + */ +export const authOptions: NextAuthOptions = { + callbacks: { + session({ session, user }) { + if (session.user) { + session.user.id = user.id; + // session.user.role = user.role; <-- put other properties on the session here + } + return session; + }, + }, + adapter: PrismaAdapter(prisma), + providers: [ + DiscordProvider({ + clientId: env.DISCORD_CLIENT_ID, + clientSecret: env.DISCORD_CLIENT_SECRET, + }), + /** + * ...add more providers here. + * + * Most other providers require a bit more work than the Discord provider. For example, the + * GitHub provider requires you to add the `refresh_token_expires_in` field to the Account + * model. Refer to the NextAuth.js docs for the provider you want to use. Example: + * + * @see https://next-auth.js.org/providers/github + */ + ], +}; + +/** + * Wrapper for `getServerSession` so that you don't need to import the `authOptions` in every file. + * + * @see https://next-auth.js.org/configuration/nextjs + */ +export const getServerAuthSession = (ctx: { + req: GetServerSidePropsContext["req"]; + res: GetServerSidePropsContext["res"]; +}) => { + return getServerSession(ctx.req, ctx.res, authOptions); +}; diff --git a/src/client/src/server/db.ts b/src/client/src/server/db.ts new file mode 100644 index 0000000..f3d7be3 --- /dev/null +++ b/src/client/src/server/db.ts @@ -0,0 +1,14 @@ +import { PrismaClient } from "@prisma/client"; + +import { env } from "~/env.mjs"; + +const globalForPrisma = globalThis as unknown as { prisma: PrismaClient }; + +export const prisma = + globalForPrisma.prisma || + new PrismaClient({ + log: + env.NODE_ENV === "development" ? ["query", "error", "warn"] : ["error"], + }); + +if (env.NODE_ENV !== "production") globalForPrisma.prisma = prisma; diff --git a/src/client/src/utils/api.ts b/src/client/src/utils/api.ts new file mode 100644 index 0000000..f4f4ad5 --- /dev/null +++ b/src/client/src/utils/api.ts @@ -0,0 +1,68 @@ +/** + * This is the client-side entrypoint for your tRPC API. It is used to create the `api` object which + * contains the Next.js App-wrapper, as well as your type-safe React Query hooks. + * + * We also create a few inference helpers for input and output types. + */ +import { httpBatchLink, loggerLink } from "@trpc/client"; +import { createTRPCNext } from "@trpc/next"; +import { type inferRouterInputs, type inferRouterOutputs } from "@trpc/server"; +import superjson from "superjson"; + +import { type AppRouter } from "~/server/api/root"; + +const getBaseUrl = () => { + if (typeof window !== "undefined") return ""; // browser should use relative url + if (process.env.VERCEL_URL) return `https://${process.env.VERCEL_URL}`; // SSR should use vercel url + return `http://localhost:${process.env.PORT ?? 3000}`; // dev SSR should use localhost +}; + +/** A set of type-safe react-query hooks for your tRPC API. */ +export const api = createTRPCNext({ + config() { + return { + /** + * Transformer used for data de-serialization from the server. + * + * @see https://trpc.io/docs/data-transformers + */ + transformer: superjson, + + /** + * Links used to determine request flow from client to server. + * + * @see https://trpc.io/docs/links + */ + links: [ + loggerLink({ + enabled: (opts) => + process.env.NODE_ENV === "development" || + (opts.direction === "down" && opts.result instanceof Error), + }), + httpBatchLink({ + url: `${getBaseUrl()}/api/trpc`, + }), + ], + }; + }, + /** + * Whether tRPC should await queries when server rendering pages. + * + * @see https://trpc.io/docs/nextjs#ssr-boolean-default-false + */ + ssr: false, +}); + +/** + * Inference helper for inputs. + * + * @example type HelloInput = RouterInputs['example']['hello'] + */ +export type RouterInputs = inferRouterInputs; + +/** + * Inference helper for outputs. + * + * @example type HelloOutput = RouterOutputs['example']['hello'] + */ +export type RouterOutputs = inferRouterOutputs; diff --git a/src/client/tailwind.config.cjs b/src/client/tailwind.config.cjs new file mode 100644 index 0000000..a82e7e9 --- /dev/null +++ b/src/client/tailwind.config.cjs @@ -0,0 +1,10 @@ +/** @type {import('tailwindcss').Config} */ +const config = { + content: ["./src/**/*.{js,ts,jsx,tsx}"], + theme: { + extend: {}, + }, + plugins: [], +}; + +module.exports = config; diff --git a/src/client/tsconfig.json b/src/client/tsconfig.json new file mode 100644 index 0000000..03ebb74 --- /dev/null +++ b/src/client/tsconfig.json @@ -0,0 +1,33 @@ +{ + "compilerOptions": { + "target": "es2017", + "lib": ["dom", "dom.iterable", "esnext"], + "allowJs": true, + "checkJs": true, + "skipLibCheck": true, + "strict": true, + "forceConsistentCasingInFileNames": true, + "noEmit": true, + "esModuleInterop": true, + "module": "esnext", + "moduleResolution": "node", + "resolveJsonModule": true, + "isolatedModules": true, + "jsx": "preserve", + "incremental": true, + "noUncheckedIndexedAccess": true, + "baseUrl": ".", + "paths": { + "~/*": ["./src/*"] + } + }, + "include": [ + ".eslintrc.cjs", + "next-env.d.ts", + "**/*.ts", + "**/*.tsx", + "**/*.cjs", + "**/*.mjs" + ], + "exclude": ["node_modules"] +} diff --git a/src/frontend/asgi.py b/src/frontend/asgi.py deleted file mode 100644 index 91953a5..0000000 --- a/src/frontend/asgi.py +++ /dev/null @@ -1,16 +0,0 @@ -""" -ASGI config for asgi project. - -It exposes the ASGI callable as a module-level variable named ``application``. - -For more information on this file, see -https://docs.djangoproject.com/en/3.1/howto/deployment/asgi/ -""" - -import os - -from django.core.asgi import get_asgi_application - -os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'frontend.settings') - -application = get_asgi_application() diff --git a/src/frontend/compile.sh b/src/frontend/compile.sh new file mode 100755 index 0000000..f3150ce --- /dev/null +++ b/src/frontend/compile.sh @@ -0,0 +1,2 @@ +#!/bin/sh +exec npx tsc static/script/pyshelf.ts diff --git a/src/frontend/lib/DataHooks.py b/src/frontend/lib/DataHooks.py new file mode 100644 index 0000000..842da89 --- /dev/null +++ b/src/frontend/lib/DataHooks.py @@ -0,0 +1,11 @@ +"""pyShelf's frontend database hooks.""" +from ....src.backend.lib.storage import Storage + + +class BookInterface: + """Access point for book database.""" + + def __init(self, config): + """Initialize class variables.""" + self.config = config + self.db = Storage(self.config) diff --git a/src/frontend/lib/FastAPIServer.py b/src/frontend/lib/FastAPIServer.py new file mode 100644 index 0000000..da9cbc3 --- /dev/null +++ b/src/frontend/lib/FastAPIServer.py @@ -0,0 +1,281 @@ +"""pyShelf's main frontend library.""" +import uvicorn +import os +import sass +import datetime +import math +# import gzip +# import brotli +from json import dumps +from base64 import b64encode +from fastapi import FastAPI, Request +from fastapi.responses import HTMLResponse, JSONResponse, FileResponse +from fastapi.routing import APIRoute +from fastapi.staticfiles import StaticFiles +from fastapi.templating import Jinja2Templates +from fastapi.middleware.cors import CORSMiddleware +from backend.lib.storage import Storage +from .objects import JSInterface +from .runtime_paths import ensure_assets +from backend.lib.config import Config + + +app = FastAPI() +STATIC_DIR, TEMPLATES_DIR = ensure_assets() +templates = Jinja2Templates(directory=str(TEMPLATES_DIR)) +# templates = Jinja2Templates(directory="src/frontend/templates") +origins = [ + "http://localhost", + "http://localhost:8081", + "http://localhost:8080", + "*" +] +app.add_middleware( + CORSMiddleware, + allow_origins=origins, + allow_credentials=True, + allow_methods=["*"], + allow_headers=["*"], +) + +def base64decode(string) -> str: + """Decode a base64 string.""" + try: + result = b64encode(string).decode("utf-8") + except Exception: + result = "None" + return result + + +def summarize(string) -> str: + """Summarize a string.""" + try: + if len(string) > 50: + return string[:50] + "..." + return string + except TypeError: + return "None" + + +def convertDateTime(timestamp: datetime) -> str: + """Convert a datetime object to a string.""" + return timestamp.strftime("%d/%m/%Y %H:%M:%S") + + +def books_tojson(obj) -> dumps: + """Convert an object to a dictionary.""" + _books: list = [] + for book in obj: + convert_none = lambda x: x if x is not None else "None" + _books.append({ + "book_id": book.id, + "title": book.title, + "author": book.author, + "categories": convert_none(book.categories), + "cover": base64decode(book.cover), + "pages": convert_none(book.pages), + "progress": convert_none(book.progress), + "file_name": book.file_name, + "description": convert_none(book.description), + "date": convertDateTime(book.date), + "rights": convert_none(book.rights), + "tags": convert_none(book.tags), + "identifier": convert_none(book.identifier), + "publisher": convert_none(book.publisher), + }) + return dumps(_books) + + +def book_tojson(book) -> dumps: + """Convert a book object to a json.""" + return dumps({ + "book_id": book.id, + "title": book.title, + "author": book.author, + "categories": book.categories, + "cover": base64decode(book.cover), + "pages": book.pages, + "progress": book.progress, + "file_name": book.file_name, + "description": book.description, + "date": convertDateTime(book.date), + "rights": book.rights, + "tags": book.tags, + "identifier": book.identifier, + "publisher": book.publisher, + }) + +def tojson(obj) -> dumps: + return dumps(obj) + +def collections_tojson(collection) -> dumps: + """Convert a collections object to json.""" + _collections = [] + _collection_id_set = set() + for _collection in collection: + if _collection.id in _collection_id_set: + pass + else: + _collection_id_set.add(_collection.id) + _collections.append({ + "collection_id": _collection.id, + "collection": _collection.name, + }) + return dumps(_collections) + + +templates.env.filters["b64decode"] = base64decode +templates.env.filters["summarize"] = summarize +templates.env.filters["books_tojson"] = books_tojson +templates.env.filters["collections_tojson"] = collections_tojson +templates.env.filters["tojson"] = tojson + + +class FastAPIServer(): + """Entry point for FastAPI server.""" + + def __init__(self, config): + """Initialize FastAPIServer object parameters.""" + self.config = config + app.mount("/static", StaticFiles(directory=str(STATIC_DIR)), name="static") + # app.mount("/static", + # StaticFiles(directory="src/frontend/static"), + # name="static") + self.fe_config = uvicorn.Config(app, host="0.0.0.0", port=8080, + log_level="info", reload=True) + self.fe_server = uvicorn.Server(self.fe_config) + self.JSInterface: JSInterface = JSInterface(self.config) + self.compile_static_files() + + def compile_static_files(self): + """Compile static files for web frontend.""" + # breakpoint() + _pyShelf_src = sass.compile( + filename=f"{STATIC_DIR}/styles/pyShelf.sass", + # filename='src/frontend/static/styles/pyShelf.sass', + source_map_filename=f"{STATIC_DIR}/styles/pyShelf.sass", + # source_map_filename='src/frontend/static/styles/pyShelf.sass', + output_style='compressed', + include_paths=[ + 'node_modules', + f"{STATIC_DIR}src/frontend/static/styles" + # 'src/frontend/static/styles' + ] + ) + with open(f"{STATIC_DIR}/styles/pyShelf.css", 'w') as _pyShelf: + # with open('src/frontend/static/styles/pyShelf.css', 'w') as _pyShelf: + _pyShelf.write(_pyShelf_src[0]) + + self.JSInterface.install() + return True + + def use_route_names_as_operation_ids(self, app: FastAPI) -> None: + """Use route name as operation id.""" + for route in app.routes: + if isinstance(route, APIRoute): + route.operation_id = route.name + + @app.get("/", response_class=HTMLResponse) + async def index(request: Request, skip: int = 0, limit: int = 30): + if skip <= 0: + skip_num = 0 + skip = 0 + else: + skip_num = skip * limit + storage = Storage(Config(os.path.abspath(os.getcwd()))) + books = storage.get_books(collection=None, skip=skip_num, limit=limit) + collections = storage.get_collections() + """Home page responder.""" + total_books = len(storage.get_books()) + if skip <= 0: + skip_num = 0 + skip = 0 + else: + skip_num = skip * limit + context = { + "request": request, + "total_pages": math.ceil(total_books / limit), + "books": books, + "collections": collections, + "page": skip, + "limit": limit + } + return templates.TemplateResponse("index.html", context) + + @app.get("/api/books", response_class=JSONResponse) + async def books(request: Request, skip: int = 0, limit: int = 10, collection=None): + storage = Storage(Config(os.path.abspath(os.getcwd()))) + books = storage.get_books(collection, skip=skip, limit=limit) + headers = {"Accept-Encoding": "gzip"} + """Home page responder.""" + return JSONResponse(content=books_tojson(books)) + # return JSONResponse(content=books) + + @app.get("/api/book/{book_id}", response_class=JSONResponse) + async def book(request: Request, book_id: int): + storage = Storage(Config(os.path.abspath(os.getcwd()))) + book = storage.get_book(book_id) + """Home page responder.""" + return JSONResponse(content=book_tojson(book)) + + @app.get("/api/get_book/{book_id}", response_class=FileResponse) + async def book(request: Request, book_id: int): + storage = Storage(Config(os.path.abspath(os.getcwd()))) + book = storage.get_book(book_id) + file_path = book[0].file_name + if not os.path.exists(file_path): + return JSONResponse(status_code=404, content={"error": "File not found"}) + """Book file responder.""" + return FileResponse(path=file_path, filename=os.path.basename(file_path), media_type="application/octet-stream") + + @app.get("/api/collections", response_class=JSONResponse) + async def collections(request: Request): + storage = Storage(Config(os.path.abspath(os.getcwd()))) + collections = storage.get_collections() + """Home page responder.""" + return JSONResponse(content=collections_tojson(collections)) + + @app.get("/api/collection/{collection}", response_class=HTMLResponse) + async def collection(request: Request, collection: str, skip:int=0, limit:int=30): + """Collection file responder.""" + storage = Storage(Config(os.path.abspath(os.getcwd()))) + if skip <= 0: + skip_num = 0 + skip = 0 + else: + skip_num = skip * limit + books = storage.get_books(collection, skip=skip_num, limit=limit) + total_books = len(storage.get_books(collection)) + collections = storage.get_collections() + context = { + "request": request, + "books": books, + "collections": collections, + "collection": collection, + "total_pages": math.ceil(total_books / limit), + "page": skip, + "limit": limit + } + return templates.TemplateResponse("collection.html", context) + + @app.get("/api/search", response_class=HTMLResponse) + async def search_books_api(request: Request, search: str): + """Collection file responder.""" + storage = Storage(Config(os.path.abspath(os.getcwd()))) + books = storage.fuzzy_search_books(search) + total_books = len(books) + collections = storage.get_collections() + context = { + "request": request, + "books": books, + "collections": collections, + "total_pages": 1, + "total_books": total_books, + } + return templates.TemplateResponse("search.html", context) + + async def run(self): + """Front end server entrypoint.""" + self.config.logger.info("Starting FastAPI server.") + self.use_route_names_as_operation_ids(app) + await self.fe_server.serve() diff --git a/src/frontend/lib/objects.py b/src/frontend/lib/objects.py new file mode 100644 index 0000000..1ca0939 --- /dev/null +++ b/src/frontend/lib/objects.py @@ -0,0 +1,18 @@ +"""pyShelf's Frontend Objects.""" +from subprocess import run +from pathlib import Path +from backend.lib.config import Config + + +class JSInterface(): + """A class to interface with the JavaScript side of pyShelf.""" + + def __init__(self, config: Config): + """Initialize the JSInterface object.""" + self.package_json: Path = Path(config.root, "src/frontend/package.json") + self.config: Config = config + + def install(self): + """Install the JavaScript dependencies.""" + run(["npm", "install"], cwd=self.package_json.parent) + run(["npx", "tsc", "static/script/pyshelf.ts"], cwd=self.package_json.parent) diff --git a/src/frontend/lib/runtime_paths.py b/src/frontend/lib/runtime_paths.py new file mode 100644 index 0000000..59263c9 --- /dev/null +++ b/src/frontend/lib/runtime_paths.py @@ -0,0 +1,60 @@ +# src/frontend/lib/runtime_paths.py +from __future__ import annotations +import os, sys, shutil +from pathlib import Path +from importlib import resources + +ASSET_TOPS = ("static", "templates") + +def assets_root() -> Path: + """ + Directory that *contains* static/ and templates/. + Priority: + 1) PYSHELF_ASSETS + 2) ./pyshelf (sibling dir next to the archive) when running as zipapp + 3) frontend/ (package dir) when running from source/unpacked tree + """ + # env = os.environ.get("PYSHELF_ASSETS") + # Check if system assets directory exists + sys_path = Path("/etc/pyShelf/src/frontend") + if sys_path.is_dir(): + return sys_path.resolve() + + # Dev/regular run: __file__ = …/frontend/lib/runtime_paths.py => parents[1] == …/frontend + return Path(__file__).resolve().parents[1] + +def _copy_traversable_tree(src_trav, dst_dir: Path) -> None: + """Recursively copy a Traversable (importlib.resources) tree to dst_dir.""" + for child in src_trav.iterdir(): + target = dst_dir / child.name + if child.is_dir(): + target.mkdir(parents=True, exist_ok=True) + _copy_traversable_tree(child, target) + else: + target.parent.mkdir(parents=True, exist_ok=True) + with child.open("rb") as r, open(target, "wb") as w: + shutil.copyfileobj(r, w) + +def ensure_assets() -> tuple[Path, Path]: + """ + Ensure static/ and templates/ exist on disk and return their paths. + If running from zipapp and they don't exist yet, extract packaged copies. + """ + root = assets_root() + static_dir = root / "static" + tmpl_dir = root / "templates" + + # If both already exist, use them (works in repo tree and next to .pyz) + if static_dir.exists() and tmpl_dir.exists(): + return static_dir, tmpl_dir + + # Extract from package data into root/{static,templates} + pkg = "frontend" # package that contains 'static' and 'templates' + for top in ASSET_TOPS: + src = resources.files(pkg) / top # Traversable + dst = root / top + dst.mkdir(parents=True, exist_ok=True) + _copy_traversable_tree(src, dst) + + return static_dir, tmpl_dir + diff --git a/src/frontend/package.json b/src/frontend/package.json new file mode 100644 index 0000000..7428313 --- /dev/null +++ b/src/frontend/package.json @@ -0,0 +1,11 @@ +{ + "dependencies": { + "bulma": "*", + "pako": "*", + "typescript": "*" + }, + "devDependencies": { + "@types/jquery": "^3.5.25", + "jquery": "^3.7.1" + } +} diff --git a/src/frontend/settings.py b/src/frontend/settings.py deleted file mode 100755 index 3b2f608..0000000 --- a/src/frontend/settings.py +++ /dev/null @@ -1,151 +0,0 @@ -""" -Django settings for frontend project. - -Generated by 'django-admin startproject' using Django 2.2.7. - -For more information on this file, see -https://docs.djangoproject.com/en/2.2/topics/settings/ - -For the full list of settings and their values, see -https://docs.djangoproject.com/en/2.2/ref/settings/ -""" - -import os -import sys -from pathlib import Path - -sys.path.insert(0, Path.absolute(Path.cwd())) -from backend.lib.config import Config - -CUR_DIR = Path.cwd() -PRG_DIR = CUR_DIR.parts[0:-1] -PRG_DIR = Path(*PRG_DIR) - -CONFIG = Config(PRG_DIR) -# Build paths inside the project like this: os.path.join(BASE_DIR, ...) -BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) - -# Quick-start development settings - unsuitable for production -# See https://docs.djangoproject.com/en/2.2/howto/deployment/checklist/ - -# SECURITY WARNING: keep the secret key used in production secret! -SECRET_KEY = CONFIG.SECRET -# SECURITY WARNING: don't run with debug turned on in production! - -BUILD_MODE = CONFIG.build_mode -if BUILD_MODE == 'debug': - DEBUG = TEMPLATE_DEBUG = True -else: - DEBUG = TEMPLATE_DEBUG = False -if DEBUG is True: - print("DEBUG build mode is ON") - from pudb.remote import set_trace -else: - print("Production Mode Set") -ALLOWED_HOSTS = CONFIG.allowed_hosts - -# Application definition - -INSTALLED_APPS = [ - "django.contrib.admin", "django.contrib.auth", - "django.contrib.contenttypes", "django.contrib.sessions", - "django.contrib.messages", "django.contrib.staticfiles", "interface", - "interface.templatetags", "debug_toolbar", "widget_tweaks" -] -AUTH_USER_MODEL = "interface.User" -MIDDLEWARE = [ - "django.middleware.security.SecurityMiddleware", - 'whitenoise.middleware.WhiteNoiseMiddleware', - "django.contrib.sessions.middleware.SessionMiddleware", - "django.middleware.common.CommonMiddleware", - "django.middleware.csrf.CsrfViewMiddleware", - "debug_toolbar.middleware.DebugToolbarMiddleware", - "django.contrib.auth.middleware.AuthenticationMiddleware", - "django.contrib.messages.middleware.MessageMiddleware", - "django.middleware.clickjacking.XFrameOptionsMiddleware", -] - -INTERNAL_IPS = [ - # ... - "127.0.0.1", - # ... -] - -ROOT_URLCONF = "frontend.urls" - -TEMPLATES = [ - { - "BACKEND": "django.template.backends.django.DjangoTemplates", - "DIRS": [], - "APP_DIRS": True, - "OPTIONS": { - "context_processors": [ - "django.template.context_processors.debug", - "django.template.context_processors.request", - "django.contrib.auth.context_processors.auth", - "django.contrib.messages.context_processors.messages", - ], - }, - }, -] - -# WSGI_APPLICATION = "frontend.wsgi.application" - -WSGI_APPLICATION = 'asgi.wsgi.application' -# Database -# https://docs.djangoproject.com/en/2.2/ref/settings/#databases -DATABASES = { - "default": { - "ENGINE": "django.db.backends.postgresql", - "NAME": CONFIG.catalogue_db, - "USER": "pyshelf", - "PASSWORD": CONFIG.password, - "HOST": CONFIG.db_host, - "PORT": CONFIG.db_port, - } -} -# Session -# Uncomment below to enable sessions management by a memcache server -# https://docs.djangoproject.com/en/3.0/topics/http/sessions/ -# SESSION_ENGINE = "django.contrib.sessions.backends.cached_db" - -# Password validation -# https://docs.djangoproject.com/en/2.2/ref/settings/#auth-password-validators - -AUTH_PASSWORD_VALIDATORS = [ - { - "NAME": - "django.contrib.auth.password_validation.UserAttributeSimilarityValidator", - }, - { - "NAME": - "django.contrib.auth.password_validation.MinimumLengthValidator", - }, - { - "NAME": - "django.contrib.auth.password_validation.CommonPasswordValidator", - }, - { - "NAME": - "django.contrib.auth.password_validation.NumericPasswordValidator", - }, -] - -# Internationalization -# https://docs.djangoproject.com/en/2.2/topics/i18n/ - -LANGUAGE_CODE = "en-us" - -TIME_ZONE = "UTC" - -USE_I18N = True - -USE_L10N = True - -USE_TZ = True - -# Static files (CSS, JavaScript, Images) -# https://docs.djangoproject.com/en/2.2/howto/static-files/ -LOGIN_REDIRECT_URL = 'home' -STATIC_URL = "/static/" -STATIC_ROOT = os.path.join(BASE_DIR, "interface/static/") diff --git a/src/frontend/static/fonts/Alfa Slab One Regular.ttf b/src/frontend/static/fonts/Alfa Slab One Regular.ttf new file mode 100644 index 0000000..a0e2cce Binary files /dev/null and b/src/frontend/static/fonts/Alfa Slab One Regular.ttf differ diff --git a/src/frontend/static/fonts/Cherry Cream Soda Regular.ttf b/src/frontend/static/fonts/Cherry Cream Soda Regular.ttf new file mode 100644 index 0000000..4fe07be Binary files /dev/null and b/src/frontend/static/fonts/Cherry Cream Soda Regular.ttf differ diff --git a/src/interface/static/img/blue-background.jpg b/src/frontend/static/images/blue-background.jpg similarity index 100% rename from src/interface/static/img/blue-background.jpg rename to src/frontend/static/images/blue-background.jpg diff --git a/src/frontend/static/images/eps/logo-black.eps b/src/frontend/static/images/eps/logo-black.eps new file mode 100644 index 0000000..c4fb151 --- /dev/null +++ b/src/frontend/static/images/eps/logo-black.eps @@ -0,0 +1,545 @@ +%!PS-Adobe-3.0 EPSF-3.0 +%%Creator: cairo 1.16.0 (https://cairographics.org) +%%CreationDate: Sat Nov 26 04:35:44 2022 +%%Pages: 1 +%%DocumentData: Clean7Bit +%%LanguageLevel: 2 +%%BoundingBox: 0 0 1000 1000 +%%EndComments +%%BeginProlog +50 dict begin +/q { gsave } bind def +/Q { grestore } bind def +/cm { 6 array astore concat } bind def +/w { setlinewidth } bind def +/J { setlinecap } bind def +/j { setlinejoin } bind def +/M { setmiterlimit } bind def +/d { setdash } bind def +/m { moveto } bind def +/l { lineto } bind def +/c { curveto } bind def +/h { closepath } bind def +/re { exch dup neg 3 1 roll 5 3 roll moveto 0 rlineto + 0 exch rlineto 0 rlineto closepath } bind def +/S { stroke } bind def +/f { fill } bind def +/f* { eofill } bind def +/n { newpath } bind def +/W { clip } bind def +/W* { eoclip } bind def +/BT { } bind def +/ET { } bind def +/BDC { mark 3 1 roll /BDC pdfmark } bind def +/EMC { mark /EMC pdfmark } bind def +/cairo_store_point { /cairo_point_y exch def /cairo_point_x exch def } def +/Tj { show currentpoint cairo_store_point } bind def +/TJ { + { + dup + type /stringtype eq + { show } { -0.001 mul 0 cairo_font_matrix dtransform rmoveto } ifelse + } forall + currentpoint cairo_store_point +} bind def +/cairo_selectfont { cairo_font_matrix aload pop pop pop 0 0 6 array astore + cairo_font exch selectfont cairo_point_x cairo_point_y moveto } bind def +/Tf { pop /cairo_font exch def /cairo_font_matrix where + { pop cairo_selectfont } if } bind def +/Td { matrix translate cairo_font_matrix matrix concatmatrix dup + /cairo_font_matrix exch def dup 4 get exch 5 get cairo_store_point + /cairo_font where { pop cairo_selectfont } if } bind def +/Tm { 2 copy 8 2 roll 6 array astore /cairo_font_matrix exch def + cairo_store_point /cairo_font where { pop cairo_selectfont } if } bind def +/g { setgray } bind def +/rg { setrgbcolor } bind def +/d1 { setcachedevice } bind def +/cairo_data_source { + CairoDataIndex CairoData length lt + { CairoData CairoDataIndex get /CairoDataIndex CairoDataIndex 1 add def } + { () } ifelse +} def +/cairo_flush_ascii85_file { cairo_ascii85_file status { cairo_ascii85_file flushfile } if } def +/cairo_image { image cairo_flush_ascii85_file } def +/cairo_imagemask { imagemask cairo_flush_ascii85_file } def +%%EndProlog +%%BeginSetup +%%EndSetup +%%Page: 1 1 +%%BeginPageSetup +%%PageBoundingBox: 0 0 1000 1000 +%%EndPageSetup +q 0 0 1000 1000 rectclip +1 0 0 -1 0 1000 cm q +1 g +0 0 1000 1000 rectfill +Q q +150.312 369.449 699.523 253.551 re W n +0.537255 0.576471 0.619608 rg +150.312 622.469 m 150.312 369.449 l 849.836 369.449 l 849.836 622.469 l + 725.656 622.469 l 725.656 616.637 l 844.004 616.637 l 844.004 375.281 l + 156.145 375.281 l 156.145 616.637 l 222.301 616.637 l 222.301 622.469 l + h +150.312 622.469 m f +Q q +239 609 470 21.023 re W n +0 g +249.391 630.023 m 246.328 630.023 243.965 629.223 242.301 627.613 c 240.633 + 626.004 239.801 623.434 239.801 619.902 c 239.801 616.371 240.633 613.801 + 242.301 612.191 c 243.965 610.586 246.328 609.781 249.391 609.785 c 252.457 + 609.785 254.82 610.586 256.488 612.191 c 258.152 613.801 258.984 616.371 + 258.984 619.902 c 258.984 623.434 258.156 626.004 256.488 627.613 c 254.82 + 629.223 252.453 630.023 249.391 630.023 c h +249.391 625.555 m 249.961 625.555 250.387 625.402 250.672 625.102 c 250.961 + 624.801 251.102 624.332 251.102 623.695 c 251.102 616.113 l 251.102 615.477 + 250.961 615.008 250.672 614.707 c 250.387 614.402 249.961 614.254 249.391 + 614.254 c 248.824 614.254 248.398 614.402 248.109 614.707 c 247.824 615.008 + 247.684 615.477 247.684 616.113 c 247.684 623.695 l 247.684 624.348 247.824 + 624.82 248.109 625.113 c 248.398 625.406 248.824 625.555 249.391 625.555 + c h +259.84 629.672 m 259.84 625.555 l 261.094 625.555 l 261.094 614.254 l 259.84 + 614.254 l 259.84 610.133 l 270.863 610.133 l 273.023 610.133 274.672 610.598 + 275.812 611.527 c 276.949 612.457 277.52 613.961 277.52 616.035 c 277.52 + 618.113 276.949 619.613 275.812 620.539 c 274.676 621.473 273.023 621.938 + 270.863 621.938 c 268.125 621.938 l 268.125 625.555 l 270.539 625.555 l + 270.539 629.672 l h +268.125 618.371 m 268.98 618.371 l 269.953 618.371 270.438 617.836 270.438 + 616.766 c 270.438 615.859 l 270.438 615.309 270.316 614.902 270.074 614.641 + c 269.832 614.383 269.465 614.254 268.98 614.254 c 268.125 614.254 l h +295.324 629.672 m 278.371 629.672 l 278.371 625.555 l 279.629 625.555 l + 279.629 614.254 l 278.371 614.254 l 278.371 610.133 l 295.324 610.133 l + 295.324 617.719 l 289.699 617.719 l 289.699 614.254 l 286.66 614.254 l +286.66 618.223 l 288.871 618.223 l 288.871 621.082 l 286.66 621.082 l 286.66 + 625.555 l 289.699 625.555 l 289.699 621.586 l 295.324 621.586 l h +310.742 614.254 m 310.742 610.133 l 318.98 610.133 l 318.98 614.254 l 317.727 + 614.254 l 317.727 629.672 l 310.668 629.672 l 303.309 618.348 l 303.309 + 625.555 l 304.516 625.555 l 304.516 629.672 l 296.277 629.672 l 296.277 + 625.555 l 297.535 625.555 l 297.535 614.254 l 296.277 614.254 l 296.277 + 610.133 l 305.344 610.133 l 311.949 620.207 l 311.949 614.254 l h +335.254 630.023 m 333.648 630.023 332.129 629.883 330.699 629.605 c 329.266 + 629.332 328.164 629.02 327.395 628.668 c 327.395 623.695 l 332.918 623.695 + l 332.918 624.215 333.035 624.59 333.27 624.824 c 333.508 625.059 333.934 + 625.176 334.551 625.176 c 335.07 625.176 335.445 625.098 335.664 624.938 + c 335.895 624.781 336.008 624.543 336.008 624.223 c 336.008 623.953 335.902 + 623.723 335.684 623.531 c 335.465 623.34 335.086 623.145 334.551 622.941 + c 332.391 622.191 l 330.535 621.488 329.199 620.66 328.383 619.703 c 327.574 + 618.746 327.168 617.457 327.168 615.836 c 327.168 613.859 327.816 612.355 + 329.117 611.328 c 330.414 610.297 332.578 609.785 335.605 609.785 c 337.062 + 609.785 338.43 609.93 339.715 610.219 c 340.992 610.516 342.027 610.906 + 342.812 611.391 c 342.812 615.887 l 337.793 615.887 l 337.793 615.047 337.273 + 614.629 336.234 614.629 c 335.734 614.629 335.375 614.691 335.164 614.816 + c 334.957 614.941 334.852 615.168 334.852 615.484 c 334.852 615.77 334.977 + 615.992 335.219 616.16 c 335.461 616.328 335.859 616.504 336.41 616.691 + c 338.594 617.441 l 340.371 618.047 341.664 618.828 342.477 619.789 c 343.285 + 620.75 343.691 622.012 343.691 623.57 c 343.691 625.695 342.977 627.305 + 341.547 628.395 c 340.117 629.48 338.016 630.023 335.254 630.023 c h +353.84 630.023 m 350.773 630.023 348.41 629.223 346.746 627.613 c 345.078 + 626.004 344.246 623.434 344.246 619.902 c 344.246 616.371 345.078 613.801 + 346.746 612.191 c 348.41 610.586 350.773 609.781 353.84 609.785 c 356.902 + 609.785 359.266 610.586 360.934 612.191 c 362.598 613.801 363.43 616.371 + 363.434 619.902 c 363.434 623.434 362.602 626.004 360.934 627.613 c 359.266 + 629.223 356.902 630.023 353.84 630.023 c h +353.84 625.555 m 354.406 625.555 354.836 625.402 355.121 625.102 c 355.406 + 624.801 355.547 624.332 355.547 623.695 c 355.547 616.113 l 355.547 615.477 + 355.406 615.008 355.121 614.707 c 354.836 614.402 354.406 614.254 353.84 + 614.254 c 353.27 614.254 352.844 614.402 352.559 614.707 c 352.273 615.008 + 352.129 615.477 352.129 616.113 c 352.129 623.695 l 352.129 624.348 352.273 + 624.82 352.559 625.113 c 352.844 625.406 353.27 625.555 353.84 625.555 +c h +373.68 630.023 m 371.051 630.023 369.02 629.445 367.586 628.293 c 366.156 + 627.137 365.441 625.262 365.441 622.664 c 365.441 614.254 l 364.184 614.254 + l 364.184 610.133 l 373.477 610.133 l 373.477 614.254 l 372.473 614.254 + l 372.473 623.945 l 372.473 624.5 372.594 624.906 372.832 625.168 c 373.078 + 625.426 373.441 625.555 373.93 625.555 c 374.414 625.555 374.777 625.426 + 375.02 625.168 c 375.262 624.906 375.387 624.5 375.387 623.945 c 375.387 + 614.254 l 374.383 614.254 l 374.383 610.133 l 382.996 610.133 l 382.996 + 614.254 l 381.738 614.254 l 381.738 622.664 l 381.738 625.258 381.043 627.137 + 379.656 628.293 c 378.266 629.445 376.273 630.023 373.68 630.023 c h +383.898 629.672 m 383.898 625.555 l 385.156 625.555 l 385.156 614.254 l + 383.898 614.254 l 383.898 610.133 l 395.426 610.133 l 397.586 610.133 399.234 + 610.578 400.375 611.465 c 401.512 612.355 402.082 613.793 402.082 615.785 + c 402.082 616.906 401.855 617.879 401.402 618.699 c 400.953 619.52 400.305 + 620.086 399.469 620.406 c 399.496 620.656 l 401.102 620.91 401.906 621.895 + 401.906 623.621 c 401.906 625.555 l 403.086 625.555 l 403.086 629.672 l + 395.125 629.672 l 395.125 623.77 l 395.125 623.117 395.027 622.625 394.832 + 622.289 c 394.641 621.953 394.34 621.727 393.93 621.613 c 393.523 621.492 + 392.941 621.438 392.188 621.438 c 392.188 625.555 l 393.844 625.555 l 393.844 + 629.672 l h +392.188 618.371 m 393.543 618.371 l 394.027 618.371 394.391 618.242 394.633 + 617.98 c 394.879 617.723 395 617.316 395 616.766 c 395 615.859 l 395 615.309 + 394.875 614.902 394.633 614.641 c 394.391 614.383 394.027 614.254 393.543 + 614.254 c 392.188 614.254 l h +413.734 630.023 m 410.57 630.023 408.129 629.223 406.41 627.613 c 404.695 + 626.004 403.84 623.434 403.84 619.902 c 403.84 613.156 407.121 609.781 +413.684 609.785 c 415.273 609.785 416.754 609.977 418.113 610.359 c 419.48 + 610.746 420.496 611.172 421.168 611.641 c 421.168 617.918 l 415.141 617.918 + l 415.141 616.113 l 415.141 615.477 415 615.008 414.715 614.707 c 414.43 + 614.402 414 614.254 413.434 614.254 c 412.863 614.254 412.438 614.402 412.152 + 614.707 c 411.867 615.008 411.723 615.477 411.723 616.113 c 411.723 623.695 + l 411.723 624.332 411.867 624.797 412.152 625.102 c 412.438 625.406 412.863 + 625.555 413.434 625.555 c 414 625.555 414.43 625.402 414.715 625.102 c +415 624.801 415.141 624.332 415.141 623.695 c 415.141 621.66 l 421.168 621.66 + l 421.168 628.164 l 420.48 628.633 419.461 629.059 418.113 629.445 c 416.766 + 629.832 415.309 630.023 413.734 630.023 c h +439.074 629.672 m 422.121 629.672 l 422.121 625.555 l 423.375 625.555 l + 423.375 614.254 l 422.121 614.254 l 422.121 610.133 l 439.074 610.133 l + 439.074 617.719 l 433.449 617.719 l 433.449 614.254 l 430.41 614.254 l +430.41 618.223 l 432.621 618.223 l 432.621 621.082 l 430.41 621.082 l 430.41 + 625.555 l 433.449 625.555 l 433.449 621.586 l 439.074 621.586 l h +457.305 630.023 m 454.141 630.023 451.699 629.223 449.984 627.613 c 448.27 + 626.004 447.41 623.434 447.41 619.902 c 447.41 613.156 450.691 609.781 +457.254 609.785 c 458.844 609.785 460.32 609.977 461.684 610.359 c 463.051 + 610.746 464.07 611.172 464.738 611.641 c 464.738 617.918 l 458.711 617.918 + l 458.711 616.113 l 458.711 615.477 458.57 615.008 458.285 614.707 c 458 + 614.402 457.57 614.254 457.004 614.254 c 456.434 614.254 456.008 614.402 + 455.723 614.707 c 455.438 615.008 455.297 615.477 455.297 616.113 c 455.297 + 623.695 l 455.297 624.332 455.438 624.797 455.723 625.102 c 456.008 625.406 + 456.434 625.555 457.004 625.555 c 457.574 625.555 458 625.402 458.285 625.102 + c 458.57 624.801 458.711 624.332 458.711 623.695 c 458.711 621.66 l 464.738 + 621.66 l 464.738 628.164 l 464.051 628.633 463.035 629.059 461.684 629.445 + c 460.34 629.832 458.879 630.023 457.305 630.023 c h +475.137 630.023 m 472.07 630.023 469.707 629.223 468.043 627.613 c 466.375 + 626.004 465.543 623.434 465.543 619.902 c 465.543 616.371 466.375 613.801 + 468.043 612.191 c 469.707 610.586 472.07 609.781 475.137 609.785 c 478.199 + 609.785 480.566 610.586 482.23 612.191 c 483.895 613.801 484.727 616.371 + 484.73 619.902 c 484.73 623.434 483.898 626.004 482.23 627.613 c 480.566 + 629.223 478.199 630.023 475.137 630.023 c h +475.137 625.555 m 475.703 625.555 476.133 625.402 476.418 625.102 c 476.703 + 624.801 476.844 624.332 476.844 623.695 c 476.844 616.113 l 476.844 615.477 + 476.699 615.008 476.418 614.707 c 476.133 614.402 475.703 614.254 475.137 + 614.254 c 474.566 614.254 474.141 614.402 473.855 614.707 c 473.57 615.008 + 473.426 615.477 473.426 616.113 c 473.426 623.695 l 473.426 624.348 473.57 + 624.82 473.855 625.113 c 474.141 625.406 474.566 625.555 475.137 625.555 + c h +500.047 614.254 m 500.047 610.133 l 508.285 610.133 l 508.285 614.254 l + 507.027 614.254 l 507.027 629.672 l 499.973 629.672 l 492.613 618.348 l + 492.613 625.555 l 493.82 625.555 l 493.82 629.672 l 485.582 629.672 l 485.582 + 625.555 l 486.84 625.555 l 486.84 614.254 l 485.582 614.254 l 485.582 610.133 + l 494.648 610.133 l 501.254 620.207 l 501.254 614.254 l h +527.973 610.133 m 527.973 616.211 l 523.652 616.211 l 523.652 614.254 l + 522.047 614.254 l 522.047 625.555 l 523.805 625.555 l 523.805 629.672 l + 513.258 629.672 l 513.258 625.555 l 515.016 625.555 l 515.016 614.254 l + 513.406 614.254 l 513.406 616.211 l 509.09 616.211 l 509.09 610.133 l h +545.777 629.672 m 528.828 629.672 l 528.828 625.555 l 530.082 625.555 l + 530.082 614.254 l 528.828 614.254 l 528.828 610.133 l 545.777 610.133 l + 545.777 617.719 l 540.152 617.719 l 540.152 614.254 l 537.117 614.254 l + 537.117 618.223 l 539.324 618.223 l 539.324 621.082 l 537.117 621.082 l + 537.117 625.555 l 540.152 625.555 l 540.152 621.586 l 545.777 621.586 l + h +561.199 614.254 m 561.199 610.133 l 569.438 610.133 l 569.438 614.254 l + 568.18 614.254 l 568.18 629.672 l 561.125 629.672 l 553.766 618.348 l 553.766 + 625.555 l 554.973 625.555 l 554.973 629.672 l 546.734 629.672 l 546.734 + 625.555 l 547.988 625.555 l 547.988 614.254 l 546.734 614.254 l 546.734 + 610.133 l 555.801 610.133 l 562.406 620.207 l 562.406 614.254 l h +589.125 610.133 m 589.125 616.211 l 584.805 616.211 l 584.805 614.254 l + 583.199 614.254 l 583.199 625.555 l 584.957 625.555 l 584.957 629.672 l + 574.406 629.672 l 574.406 625.555 l 576.168 625.555 l 576.168 614.254 l + 574.559 614.254 l 574.559 616.211 l 570.238 616.211 l 570.238 610.133 l + h +605.297 630.023 m 603.691 630.023 602.172 629.883 600.734 629.605 c 599.305 + 629.332 598.207 629.02 597.438 628.668 c 597.438 623.695 l 602.965 623.695 + l 602.965 624.215 603.082 624.59 603.312 624.824 c 603.547 625.059 603.977 + 625.176 604.594 625.176 c 605.113 625.176 605.484 625.098 605.715 624.938 + c 605.938 624.781 606.051 624.543 606.051 624.223 c 606.051 623.953 605.941 + 623.723 605.727 623.531 c 605.508 623.34 605.129 623.145 604.594 622.941 + c 602.434 622.191 l 600.578 621.488 599.242 620.66 598.43 619.703 c 597.617 + 618.746 597.211 617.457 597.211 615.836 c 597.211 613.859 597.859 612.355 + 599.156 611.328 c 600.453 610.297 602.617 609.785 605.648 609.785 c 607.105 + 609.785 608.473 609.93 609.754 610.219 c 611.035 610.516 612.07 610.906 + 612.855 611.391 c 612.855 615.887 l 607.836 615.887 l 607.836 615.047 607.316 + 614.629 606.277 614.629 c 605.777 614.629 605.418 614.691 605.211 614.816 + c 605 614.941 604.895 615.168 604.895 615.484 c 604.895 615.77 605.016 +615.992 605.258 616.16 c 605.5 616.328 605.898 616.504 606.453 616.691 c + 608.637 617.441 l 610.414 618.047 611.707 618.828 612.516 619.789 c 613.328 + 620.75 613.734 622.012 613.734 623.57 c 613.734 625.695 613.02 627.305 +611.586 628.395 c 610.156 629.48 608.059 630.023 605.297 630.023 c h +631.391 629.672 m 614.438 629.672 l 614.438 625.555 l 615.695 625.555 l + 615.695 614.254 l 614.438 614.254 l 614.438 610.133 l 631.391 610.133 l + 631.391 617.719 l 625.766 617.719 l 625.766 614.254 l 622.727 614.254 l + 622.727 618.223 l 624.938 618.223 l 624.938 621.082 l 622.727 621.082 l + 622.727 625.555 l 625.766 625.555 l 625.766 621.586 l 631.391 621.586 l + h +632.344 629.672 m 632.344 625.555 l 633.602 625.555 l 633.602 614.254 l + 632.344 614.254 l 632.344 610.133 l 643.871 610.133 l 646.031 610.133 647.68 + 610.578 648.82 611.465 c 649.957 612.355 650.527 613.793 650.527 615.785 + c 650.527 616.906 650.301 617.879 649.848 618.699 c 649.398 619.52 648.754 + 620.086 647.914 620.406 c 647.938 620.656 l 649.547 620.91 650.352 621.895 + 650.352 623.621 c 650.352 625.555 l 651.531 625.555 l 651.531 629.672 l + 643.57 629.672 l 643.57 623.77 l 643.57 623.117 643.473 622.625 643.277 + 622.289 c 643.09 621.953 642.789 621.727 642.379 621.613 c 641.969 621.492 + 641.387 621.438 640.633 621.438 c 640.633 625.555 l 642.289 625.555 l 642.289 + 629.672 l h +640.633 618.371 m 641.988 618.371 l 642.473 618.371 642.84 618.242 643.082 + 617.98 c 643.324 617.723 643.445 617.316 643.445 616.766 c 643.445 615.859 + l 643.445 615.309 643.324 614.902 643.082 614.641 c 642.84 614.383 642.473 + 614.254 641.988 614.254 c 640.633 614.254 l h +661.879 614.254 m 661.879 610.133 l 670.266 610.133 l 670.266 614.254 l + 669.262 614.254 l 664.766 629.672 l 656.629 629.672 l 652.133 614.254 l + 651.129 614.254 l 651.129 610.133 l 660.773 610.133 l 660.773 614.254 l + 659.469 614.254 l 661.199 622.664 l 661.453 622.664 l 663.184 614.254 l + h +688.02 629.672 m 671.07 629.672 l 671.07 625.555 l 672.324 625.555 l 672.324 + 614.254 l 671.07 614.254 l 671.07 610.133 l 688.02 610.133 l 688.02 617.719 + l 682.395 617.719 l 682.395 614.254 l 679.355 614.254 l 679.355 618.223 + l 681.566 618.223 l 681.566 621.082 l 679.355 621.082 l 679.355 625.555 + l 682.395 625.555 l 682.395 621.586 l 688.02 621.586 l h +688.977 629.672 m 688.977 625.555 l 690.23 625.555 l 690.23 614.254 l 688.977 + 614.254 l 688.977 610.133 l 700.504 610.133 l 702.664 610.133 704.312 610.578 + 705.449 611.465 c 706.59 612.355 707.16 613.793 707.156 615.785 c 707.156 + 616.906 706.93 617.879 706.48 618.699 c 706.027 619.52 705.383 620.086 +704.547 620.406 c 704.57 620.656 l 706.176 620.91 706.98 621.895 706.98 +623.621 c 706.98 625.555 l 708.16 625.555 l 708.16 629.672 l 700.199 629.672 + l 700.199 623.77 l 700.199 623.117 700.102 622.625 699.91 622.289 c 699.719 + 621.953 699.418 621.727 699.004 621.613 c 698.598 621.492 698.016 621.438 + 697.262 621.438 c 697.262 625.555 l 698.918 625.555 l 698.918 629.672 l + h +697.262 618.371 m 698.617 618.371 l 699.105 618.371 699.469 618.242 699.707 + 617.98 c 699.953 617.723 700.074 617.316 700.074 616.766 c 700.074 615.859 + l 700.074 615.309 699.953 614.902 699.707 614.641 c 699.469 614.383 699.105 + 614.254 698.617 614.254 c 697.262 614.254 l h +697.262 618.371 m f +Q q +309.66 467.402 485.473 64.672 re W n +0 g +375.801 486.988 m 375.801 490.199 374.855 492.914 372.961 495.129 c 371.062 + 497.34 368.59 499.184 365.543 500.656 c 362.504 502.117 359.086 503.262 + 355.281 504.098 c 351.488 504.934 347.711 505.555 343.941 505.953 c 340.176 + 506.355 336.613 506.613 333.258 506.73 c 329.891 506.848 327.117 506.906 + 324.941 506.906 c 324.941 508.922 324.922 510.887 324.887 512.805 c 324.863 + 514.738 324.852 516.707 324.852 518.723 c 324.852 519.238 324.852 520.129 + 324.852 521.387 c 324.852 522.648 324.883 523.984 324.941 525.398 c 325 + 526.809 325.129 528.117 325.328 529.316 c 325.531 530.531 325.801 531.309 + 326.141 531.648 c 311.043 531.648 l 311.395 531.309 311.684 530.188 311.906 + 528.293 c 312.145 526.387 312.332 524.113 312.473 521.477 c 312.613 518.828 + 312.703 515.957 312.738 512.859 c 312.762 509.75 312.773 506.801 312.773 + 504.012 c 312.773 501.219 312.762 498.738 312.738 496.559 c 312.703 494.367 + 312.684 492.875 312.684 492.074 c 312.684 491.555 312.703 490.637 312.738 + 489.316 c 312.762 487.988 312.762 486.461 312.738 484.742 c 312.703 483.012 + 312.645 481.199 312.562 479.305 c 312.48 477.41 312.32 475.656 312.086 +474.043 c 311.859 472.441 311.543 471.094 311.129 469.996 c 310.73 468.902 + 310.242 468.266 309.664 468.09 c 322.078 468.09 l 322.891 468.09 323.977 + 468.078 325.328 468.055 c 326.672 468.02 327.75 468.059 328.562 468.18 +c 331.598 468.18 334.613 468.238 337.602 468.355 c 340.594 468.473 343.613 + 468.672 346.664 468.957 c 348.441 469.133 350.414 469.363 352.578 469.645 + c 354.734 469.938 356.887 470.355 359.043 470.898 c 361.199 471.438 363.281 + 472.145 365.293 473.016 c 367.309 473.875 369.09 474.938 370.645 476.195 + c 372.188 477.469 373.438 478.992 374.391 480.77 c 375.332 482.559 375.801 + 484.633 375.801 486.988 c h +360.207 486.898 m 360.207 485.227 359.602 483.832 358.391 482.711 c 357.188 + 481.594 355.652 480.676 353.781 479.957 c 351.906 479.238 349.805 478.691 + 347.477 478.316 c 345.156 477.938 342.859 477.68 340.586 477.539 c 338.316 + 477.398 336.23 477.324 334.336 477.324 c 332.441 477.324 330.945 477.324 + 329.852 477.324 c 325.719 477.324 l 325.305 480.836 325.078 484.344 325.027 + 487.852 c 324.969 491.348 324.941 494.852 324.941 498.359 c 327.238 498.359 + 329.52 498.332 331.793 498.27 c 334.066 498.211 336.348 498.102 338.645 + 497.938 c 340.316 497.816 342.391 497.617 344.863 497.336 c 347.336 497.039 + 349.699 496.523 351.961 495.781 c 354.234 495.027 356.176 493.949 357.789 + 492.551 c 359.402 491.137 360.207 489.254 360.207 486.898 c h +456.527 468.09 m 455.492 468.668 453.996 469.949 452.043 471.941 c 450.086 + 473.918 447.902 476.285 445.488 479.039 c 443.066 481.805 440.535 484.797 + 437.895 488.012 c 435.246 491.238 432.715 494.355 430.301 497.371 c 427.887 + 500.383 425.703 503.117 423.75 505.566 c 421.797 508.004 420.328 509.855 + 419.352 511.129 c 419.293 512.328 419.266 513.535 419.266 514.75 c 419.266 + 515.961 419.266 517.195 419.266 518.457 c 419.266 518.977 419.266 519.895 + 419.266 521.211 c 419.266 522.531 419.305 523.895 419.387 525.309 c 419.48 + 526.723 419.613 528.047 419.777 529.281 c 419.953 530.52 420.242 531.309 + 420.641 531.648 c 404.871 531.648 l 405.152 531.367 405.395 530.707 405.594 + 529.672 c 405.797 528.637 405.953 527.41 406.074 525.996 c 406.191 524.598 + 406.262 523.09 406.285 521.477 c 406.32 519.863 406.348 518.34 406.371 +516.902 c 406.406 515.465 406.426 514.188 406.426 513.07 c 406.426 511.953 + 406.426 511.156 406.426 510.688 c 405.449 509.484 403.984 507.66 402.027 + 505.211 c 400.074 502.773 397.871 500.074 395.422 497.105 c 392.984 494.152 + 390.441 491.066 387.793 487.852 c 385.145 484.625 382.613 481.648 380.199 + 478.914 c 377.785 476.184 375.602 473.828 373.648 471.852 c 371.695 469.863 + 370.227 468.609 369.25 468.09 c 372.699 468.09 376.109 468.109 379.477 +468.145 c 382.832 468.168 386.234 468.148 389.684 468.09 c 389.461 468.207 + 389.348 468.465 389.348 468.867 c 389.348 469.738 389.836 471.004 390.812 + 472.664 c 391.789 474.336 393.027 476.219 394.523 478.316 c 396.02 480.41 + 397.684 482.613 399.52 484.922 c 401.355 487.215 403.141 489.398 404.871 + 491.473 c 406.59 493.531 408.168 495.367 409.605 496.98 c 411.039 498.594 + 412.105 499.773 412.801 500.516 c 413.227 500.516 l 413.918 499.773 414.973 + 498.594 416.387 496.98 c 417.785 495.367 419.363 493.531 421.117 491.473 + c 422.875 489.398 424.656 487.215 426.469 484.922 c 428.281 482.613 429.949 + 480.41 431.469 478.316 c 432.988 476.219 434.223 474.336 435.176 472.664 + c 436.129 471.004 436.605 469.738 436.605 468.867 c 436.605 468.527 436.488 + 468.266 436.254 468.09 c 439.645 468.148 443.023 468.168 446.391 468.145 + c 449.746 468.109 453.125 468.09 456.527 468.09 c h +504.457 497.07 m 504.754 495.812 505.012 494.562 505.234 493.328 c 505.469 + 492.09 505.59 490.809 505.59 489.477 c 505.59 486.898 505.125 484.762 504.191 + 483.066 c 503.273 481.359 502.027 480.004 500.449 479.004 c 498.871 478.004 + 497.059 477.312 495.008 476.938 c 492.973 476.562 490.836 476.371 488.598 + 476.371 c 487.223 476.371 485.637 476.473 483.848 476.672 c 482.07 476.871 + 480.246 477.191 478.375 477.625 c 476.5 478.062 474.648 478.621 472.812 + 479.305 c 470.973 480 469.348 480.863 467.938 481.898 c 466.535 482.938 + 465.387 484.156 464.492 485.555 c 463.598 486.969 463.152 488.562 463.152 + 490.344 c 463.152 491.895 463.711 493.23 464.828 494.352 c 465.957 495.469 + 467.402 496.434 469.156 497.246 c 470.91 498.047 472.875 498.707 475.055 + 499.227 c 477.242 499.742 479.398 500.191 481.516 500.566 c 483.648 500.934 + 485.633 501.219 487.469 501.434 c 489.305 501.633 490.77 501.816 491.867 + 501.98 c 493.242 502.215 494.926 502.492 496.918 502.809 c 498.895 503.129 + 500.949 503.539 503.082 504.047 c 505.211 504.562 507.324 505.199 509.422 + 505.953 c 511.516 506.695 513.398 507.602 515.07 508.672 c 516.73 509.734 + 518.078 510.969 519.117 512.383 c 520.152 513.781 520.672 515.406 520.672 + 517.258 c 520.672 519.211 520.141 520.934 519.082 522.43 c 518.008 523.914 + 516.602 525.223 514.859 526.352 c 513.105 527.469 511.145 528.387 508.98 + 529.105 c 506.824 529.824 504.641 530.414 502.426 530.871 c 500.215 531.332 + 498.105 531.648 496.105 531.824 c 494.09 531.992 492.391 532.074 491 532.074 + c 484.914 532.074 478.879 531.574 472.898 530.57 c 466.918 529.57 461.086 + 527.945 455.398 525.699 c 454.82 525.473 454.16 525.203 453.418 524.887 + c 452.668 524.566 451.891 524.238 451.09 523.895 c 450.277 523.543 449.5 + 523.254 448.758 523.031 c 448.004 522.797 447.344 522.648 446.777 522.59 + c 447.121 522.25 447.652 521.758 448.367 521.125 c 449.086 520.5 449.805 + 519.812 450.523 519.059 c 451.242 518.316 451.902 517.609 452.5 516.938 + c 453.113 516.277 453.473 515.777 453.578 515.438 c 458.641 518.547 464.176 + 520.848 470.18 522.344 c 476.184 523.836 482.148 524.586 488.07 524.586 + c 489.047 524.586 490.59 524.508 492.695 524.355 c 494.793 524.215 496.887 + 523.914 498.984 523.453 c 501.078 522.996 502.922 522.348 504.512 521.512 + c 506.09 520.676 506.879 519.57 506.879 518.191 c 506.879 516.355 506.059 + 514.891 504.422 513.793 c 502.785 512.699 500.613 511.793 497.906 511.074 + c 495.211 510.355 492.137 509.785 488.688 509.363 c 485.238 508.926 481.711 + 508.449 478.109 507.93 c 474.52 507.414 470.996 506.797 467.547 506.078 + c 464.098 505.359 461.023 504.383 458.328 503.145 c 455.621 501.91 453.449 + 500.344 451.812 498.449 c 450.176 496.551 449.359 494.168 449.359 491.297 + c 449.359 488.246 449.977 485.543 451.211 483.188 c 452.449 480.836 454.113 + 478.762 456.211 476.973 c 458.305 475.195 460.691 473.699 463.363 472.488 + c 466.047 471.285 468.836 470.309 471.734 469.555 c 474.641 468.812 477.531 + 468.273 480.406 467.93 c 483.277 467.578 485.922 467.402 488.336 467.402 + c 492.359 467.402 496.18 467.719 499.797 468.355 c 503.422 468.992 506.57 + 470.137 509.242 471.797 c 511.918 473.469 514.043 475.801 515.621 478.793 + c 517.207 481.781 518.004 485.633 518.004 490.344 c 518.004 491.496 517.957 + 492.621 517.863 493.715 c 517.781 494.797 517.68 495.918 517.562 497.07 + c h +595.336 468.09 m 594.598 468.09 593.996 468.754 593.535 470.086 c 593.078 + 471.402 592.699 473.07 592.406 475.082 c 592.125 477.098 591.91 479.32 +591.77 481.758 c 591.629 484.207 591.527 486.551 591.469 488.789 c 591.41 + 491.035 591.383 493.02 591.383 494.738 c 591.383 496.469 591.383 497.648 + 591.383 498.27 c 591.383 501.723 591.363 505.129 591.328 508.496 c 591.305 + 511.863 591.293 515.273 591.293 518.723 c 591.293 519.18 591.293 520.07 + 591.293 521.387 c 591.293 522.707 591.324 524.074 591.383 525.484 c 591.441 + 526.898 591.57 528.207 591.77 529.406 c 591.969 530.617 592.242 531.367 + 592.582 531.648 c 577.5 531.648 l 577.844 531.367 578.113 530.52 578.312 + 529.105 c 578.512 527.695 578.672 526.027 578.789 524.109 c 578.906 522.176 + 578.996 520.094 579.055 517.855 c 579.102 515.609 579.125 513.477 579.125 + 511.465 c 579.125 509.461 579.125 507.695 579.125 506.164 c 579.125 504.648 + 579.125 503.629 579.125 503.109 c 573.32 502.875 567.547 502.727 561.801 + 502.668 c 556.055 502.609 550.281 502.582 544.477 502.582 c 541.281 502.582 + l 541.281 505.289 541.262 507.969 541.227 510.617 c 541.203 513.254 541.191 + 515.926 541.191 518.633 c 541.191 519.094 541.191 519.98 541.191 521.301 + c 541.191 522.617 541.223 523.996 541.281 525.434 c 541.34 526.883 541.469 + 528.207 541.668 529.406 c 541.867 530.617 542.141 531.367 542.48 531.648 + c 527.398 531.648 l 527.738 531.309 528.027 530.199 528.266 528.328 c 528.488 + 526.457 528.672 524.203 528.812 521.566 c 528.953 518.918 529.039 516.039 + 529.078 512.93 c 529.102 509.832 529.113 506.871 529.113 504.047 c 529.113 + 501.23 529.102 498.75 529.078 496.594 c 529.039 494.438 529.023 492.934 + 529.023 492.074 c 529.023 491.613 529.039 490.707 529.078 489.352 c 529.102 + 488 529.102 486.461 529.078 484.742 c 529.039 483.012 528.98 481.199 528.898 + 479.305 c 528.816 477.41 528.66 475.656 528.422 474.043 c 528.199 472.441 + 527.887 471.094 527.488 469.996 c 527.074 468.902 526.586 468.266 526.02 + 468.09 c 545.324 468.09 l 544.641 468.09 544.07 468.668 543.609 469.82 +c 543.152 470.973 542.773 472.441 542.48 474.219 c 542.199 475.996 541.969 + 477.969 541.793 480.133 c 541.625 482.289 541.516 484.344 541.457 486.297 + c 541.398 488.254 541.367 489.988 541.367 491.508 c 541.367 493.027 541.367 + 494.043 541.367 494.562 c 547.633 494.68 553.914 494.77 560.211 494.828 + c 566.5 494.887 572.805 494.828 579.125 494.652 c 579.125 492.074 l 579.125 + 491.555 579.145 490.637 579.18 489.316 c 579.203 487.988 579.203 486.461 + 579.18 484.742 c 579.145 483.012 579.086 481.199 579.004 479.305 c 578.918 + 477.41 578.762 475.656 578.523 474.043 c 578.301 472.441 577.988 471.094 + 577.59 469.996 c 577.176 468.902 576.688 468.266 576.125 468.09 c h +664.672 531.473 m 602.066 531.648 l 602.406 531.309 602.695 530.199 602.934 + 528.328 c 603.156 526.457 603.344 524.203 603.496 521.566 c 603.637 518.918 + 603.719 516.039 603.742 512.93 c 603.781 509.832 603.797 506.871 603.797 + 504.047 c 603.797 501.23 603.781 498.75 603.742 496.594 c 603.719 494.438 + 603.707 492.934 603.707 492.074 c 603.707 491.555 603.707 490.66 603.707 + 489.387 c 603.707 488.129 603.691 486.723 603.656 485.168 c 603.633 483.613 + 603.59 481.961 603.531 480.203 c 603.473 478.449 603.375 476.832 603.23 + 475.348 c 603.09 473.852 602.902 472.539 602.668 471.41 c 602.441 470.293 + 602.156 469.531 601.801 469.133 c 601.637 468.957 601.453 468.785 601.254 + 468.621 c 601.055 468.441 600.867 468.266 600.688 468.09 c 663.293 468.266 + l 662.34 477.84 l 662.059 477.719 661.352 477.633 660.223 477.574 c 659.102 + 477.527 657.742 477.473 656.141 477.414 c 654.527 477.355 652.805 477.309 + 650.969 477.273 c 649.121 477.25 647.375 477.238 645.742 477.238 c 644.105 + 477.238 642.656 477.238 641.395 477.238 c 640.125 477.238 639.258 477.238 + 638.801 477.238 c 631.441 477.238 624.055 477.324 616.637 477.504 c 616.355 + 480.375 616.184 483.23 616.125 486.066 c 616.066 488.918 616.035 491.809 + 616.035 494.738 c 655.699 494.316 l 655.613 503.535 l 655.391 503.477 654.828 + 503.406 653.934 503.32 c 653.039 503.238 651.992 503.18 650.793 503.145 + c 649.578 503.121 648.273 503.094 646.871 503.059 c 645.457 503.035 644.133 + 503.023 642.898 503.023 c 641.66 503.023 640.555 503.023 639.578 503.023 + c 638.602 503.023 637.941 503.023 637.598 503.023 c 630.406 503.023 623.188 + 503.109 615.949 503.285 c 615.949 505.863 615.938 508.438 615.91 511.004 + c 615.875 513.559 615.859 516.133 615.859 518.723 c 615.859 522.164 l 619.945 + 522.344 624.012 522.43 628.062 522.43 c 632.113 522.43 636.18 522.43 640.266 + 522.43 c 640.664 522.43 641.5 522.43 642.773 522.43 c 644.031 522.43 645.5 + 522.43 647.172 522.43 c 648.832 522.43 650.566 522.414 652.379 522.379 +c 654.195 522.355 655.906 522.324 657.52 522.289 c 659.121 522.266 660.488 + 522.223 661.617 522.164 c 662.734 522.105 663.438 522.02 663.719 521.902 + c h +728.992 531.473 m 670.871 531.648 l 671.223 531.309 671.512 530.199 671.734 + 528.328 c 671.973 526.457 672.16 524.203 672.301 521.566 c 672.441 518.918 + 672.523 516.055 672.547 512.98 c 672.586 509.91 672.602 506.961 672.602 + 504.133 c 672.602 501.32 672.586 498.824 672.547 496.648 c 672.523 494.457 + 672.512 492.934 672.512 492.074 c 672.512 491.613 672.523 490.707 672.547 + 489.352 c 672.586 488 672.586 486.461 672.547 484.742 c 672.523 483.012 + 672.473 481.199 672.391 479.305 c 672.297 477.41 672.137 475.656 671.914 + 474.043 c 671.676 472.441 671.359 471.094 670.961 469.996 c 670.559 468.902 + 670.07 468.266 669.492 468.09 c 688.812 468.09 l 688.059 468.09 687.441 + 468.754 686.961 470.086 c 686.465 471.402 686.078 473.07 685.793 475.082 + c 685.512 477.098 685.293 479.32 685.141 481.758 c 685 484.207 684.898 +486.551 684.84 488.789 c 684.781 491.035 684.754 493.039 684.754 494.793 + c 684.754 496.547 684.754 497.734 684.754 498.359 c 684.754 502.328 684.711 + 506.297 684.629 510.262 c 684.547 514.23 684.559 518.199 684.664 522.164 + c 686.617 522.285 688.43 522.355 690.102 522.379 c 691.773 522.414 693.41 + 522.43 695.012 522.43 c 696.625 522.43 698.281 522.43 699.977 522.43 c +701.672 522.43 703.496 522.43 705.449 522.43 c 705.852 522.43 706.656 522.43 + 707.871 522.43 c 709.07 522.43 710.465 522.43 712.055 522.43 c 713.633 +522.43 715.309 522.414 717.09 522.379 c 718.879 522.355 720.531 522.324 +722.051 522.289 c 723.582 522.266 724.887 522.223 725.973 522.164 c 727.066 + 522.105 727.762 522.02 728.055 521.902 c h +794.176 477.84 m 793.895 477.719 793.191 477.633 792.074 477.574 c 790.957 + 477.527 789.59 477.473 787.977 477.414 c 786.363 477.355 784.637 477.309 + 782.801 477.273 c 780.965 477.25 779.223 477.238 777.574 477.238 c 775.938 + 477.238 774.488 477.238 773.23 477.238 c 771.957 477.238 771.094 477.238 + 770.633 477.238 c 763.277 477.238 755.895 477.324 748.488 477.504 c 748.195 + 480.375 748.016 483.23 747.957 486.066 c 747.898 488.918 747.871 491.809 + 747.871 494.738 c 787.023 494.316 l 786.934 503.535 l 786.594 503.418 785.547 + 503.316 783.789 503.234 c 782.035 503.152 780.152 503.094 778.141 503.059 + c 776.125 503.035 774.203 503.023 772.363 503.023 c 770.527 503.023 769.352 + 503.023 768.832 503.023 c 761.875 503.023 754.859 503.109 747.781 503.285 + c 747.781 505.863 747.77 508.438 747.746 511.004 c 747.723 513.559 747.711 + 516.133 747.711 518.723 c 747.711 519.18 747.711 520.07 747.711 521.387 + c 747.711 522.707 747.734 524.074 747.781 525.484 c 747.84 526.898 747.969 + 528.207 748.172 529.406 c 748.383 530.617 748.66 531.367 749 531.648 c +733.902 531.648 l 734.254 531.309 734.543 530.199 734.766 528.328 c 735 +526.457 735.191 524.203 735.332 521.566 c 735.473 518.918 735.562 516.039 + 735.598 512.93 c 735.621 509.832 735.633 506.871 735.633 504.047 c 735.633 + 501.23 735.621 498.75 735.598 496.594 c 735.562 494.438 735.543 492.934 + 735.543 492.074 c 735.543 491.555 735.543 490.66 735.543 489.387 c 735.543 + 488.129 735.531 486.723 735.508 485.168 c 735.473 483.613 735.426 481.961 + 735.367 480.203 c 735.309 478.449 735.207 476.832 735.066 475.348 c 734.926 + 473.852 734.738 472.539 734.5 471.41 c 734.277 470.293 733.996 469.531 +733.652 469.133 c 733.477 468.957 733.289 468.785 733.09 468.621 c 732.887 + 468.441 732.699 468.266 732.523 468.09 c 795.129 468.266 l h +794.176 477.84 m f +Q q +205.016 455.047 89.375 89.375 re W n +0 g +260.879 499.738 m 260.879 533.254 l 255.293 533.254 l 255.293 477.395 l + 277.637 477.395 l 277.637 473.016 l 288.527 473.016 l 286.883 471.387 l + 288.559 469.758 l 277.637 469.758 l 277.637 455.047 l 244.121 455.047 l + 244.121 533.254 l 238.531 533.254 l 238.531 488.566 l 205.016 488.566 l + 205.016 510.91 l 227.359 510.91 l 227.359 544.426 l 272.051 544.426 l 272.051 + 522.082 l 294.395 522.082 l 294.395 499.738 l h +269.898 460.016 m 273.703 460.016 l 273.703 463.82 l 269.898 463.82 l h +263.113 460.016 m 266.918 460.016 l 266.918 463.82 l 263.113 463.82 l h +212.672 497.625 m 208.863 497.625 l 208.863 493.82 l 212.672 493.82 l h +219.207 497.625 m 215.402 497.625 l 215.402 493.82 l 219.207 493.82 l h +283.926 508.551 m 280.117 508.551 l 280.117 504.742 l 283.926 504.742 l + h +290.461 508.551 m 286.656 508.551 l 286.656 504.742 l 290.461 504.742 l + h +290.461 508.551 m f +Q Q +showpage +%%Trailer +end +%%EOF diff --git a/src/frontend/static/images/eps/logo-color.eps b/src/frontend/static/images/eps/logo-color.eps new file mode 100644 index 0000000..ac965cb --- /dev/null +++ b/src/frontend/static/images/eps/logo-color.eps @@ -0,0 +1,545 @@ +%!PS-Adobe-3.0 EPSF-3.0 +%%Creator: cairo 1.16.0 (https://cairographics.org) +%%CreationDate: Sat Nov 26 04:35:44 2022 +%%Pages: 1 +%%DocumentData: Clean7Bit +%%LanguageLevel: 2 +%%BoundingBox: 0 0 1000 1000 +%%EndComments +%%BeginProlog +50 dict begin +/q { gsave } bind def +/Q { grestore } bind def +/cm { 6 array astore concat } bind def +/w { setlinewidth } bind def +/J { setlinecap } bind def +/j { setlinejoin } bind def +/M { setmiterlimit } bind def +/d { setdash } bind def +/m { moveto } bind def +/l { lineto } bind def +/c { curveto } bind def +/h { closepath } bind def +/re { exch dup neg 3 1 roll 5 3 roll moveto 0 rlineto + 0 exch rlineto 0 rlineto closepath } bind def +/S { stroke } bind def +/f { fill } bind def +/f* { eofill } bind def +/n { newpath } bind def +/W { clip } bind def +/W* { eoclip } bind def +/BT { } bind def +/ET { } bind def +/BDC { mark 3 1 roll /BDC pdfmark } bind def +/EMC { mark /EMC pdfmark } bind def +/cairo_store_point { /cairo_point_y exch def /cairo_point_x exch def } def +/Tj { show currentpoint cairo_store_point } bind def +/TJ { + { + dup + type /stringtype eq + { show } { -0.001 mul 0 cairo_font_matrix dtransform rmoveto } ifelse + } forall + currentpoint cairo_store_point +} bind def +/cairo_selectfont { cairo_font_matrix aload pop pop pop 0 0 6 array astore + cairo_font exch selectfont cairo_point_x cairo_point_y moveto } bind def +/Tf { pop /cairo_font exch def /cairo_font_matrix where + { pop cairo_selectfont } if } bind def +/Td { matrix translate cairo_font_matrix matrix concatmatrix dup + /cairo_font_matrix exch def dup 4 get exch 5 get cairo_store_point + /cairo_font where { pop cairo_selectfont } if } bind def +/Tm { 2 copy 8 2 roll 6 array astore /cairo_font_matrix exch def + cairo_store_point /cairo_font where { pop cairo_selectfont } if } bind def +/g { setgray } bind def +/rg { setrgbcolor } bind def +/d1 { setcachedevice } bind def +/cairo_data_source { + CairoDataIndex CairoData length lt + { CairoData CairoDataIndex get /CairoDataIndex CairoDataIndex 1 add def } + { () } ifelse +} def +/cairo_flush_ascii85_file { cairo_ascii85_file status { cairo_ascii85_file flushfile } if } def +/cairo_image { image cairo_flush_ascii85_file } def +/cairo_imagemask { imagemask cairo_flush_ascii85_file } def +%%EndProlog +%%BeginSetup +%%EndSetup +%%Page: 1 1 +%%BeginPageSetup +%%PageBoundingBox: 0 0 1000 1000 +%%EndPageSetup +q 0 0 1000 1000 rectclip +1 0 0 -1 0 1000 cm q +0 g +0 0 1000 1000 rectfill +Q q +150.312 369.449 699.523 253.551 re W n +0.537255 0.576471 0.619608 rg +150.312 622.469 m 150.312 369.449 l 849.836 369.449 l 849.836 622.469 l + 725.656 622.469 l 725.656 616.637 l 844.004 616.637 l 844.004 375.281 l + 156.145 375.281 l 156.145 616.637 l 222.301 616.637 l 222.301 622.469 l + h +150.312 622.469 m f +Q q +239 609 470 21.023 re W n +0.870588 g +249.391 630.023 m 246.328 630.023 243.965 629.223 242.301 627.613 c 240.633 + 626.004 239.801 623.434 239.801 619.902 c 239.801 616.371 240.633 613.801 + 242.301 612.191 c 243.965 610.586 246.328 609.781 249.391 609.785 c 252.457 + 609.785 254.82 610.586 256.488 612.191 c 258.152 613.801 258.984 616.371 + 258.984 619.902 c 258.984 623.434 258.156 626.004 256.488 627.613 c 254.82 + 629.223 252.453 630.023 249.391 630.023 c h +249.391 625.555 m 249.961 625.555 250.387 625.402 250.672 625.102 c 250.961 + 624.801 251.102 624.332 251.102 623.695 c 251.102 616.113 l 251.102 615.477 + 250.961 615.008 250.672 614.707 c 250.387 614.402 249.961 614.254 249.391 + 614.254 c 248.824 614.254 248.398 614.402 248.109 614.707 c 247.824 615.008 + 247.684 615.477 247.684 616.113 c 247.684 623.695 l 247.684 624.348 247.824 + 624.82 248.109 625.113 c 248.398 625.406 248.824 625.555 249.391 625.555 + c h +259.84 629.672 m 259.84 625.555 l 261.094 625.555 l 261.094 614.254 l 259.84 + 614.254 l 259.84 610.133 l 270.863 610.133 l 273.023 610.133 274.672 610.598 + 275.812 611.527 c 276.949 612.457 277.52 613.961 277.52 616.035 c 277.52 + 618.113 276.949 619.613 275.812 620.539 c 274.676 621.473 273.023 621.938 + 270.863 621.938 c 268.125 621.938 l 268.125 625.555 l 270.539 625.555 l + 270.539 629.672 l h +268.125 618.371 m 268.98 618.371 l 269.953 618.371 270.438 617.836 270.438 + 616.766 c 270.438 615.859 l 270.438 615.309 270.316 614.902 270.074 614.641 + c 269.832 614.383 269.465 614.254 268.98 614.254 c 268.125 614.254 l h +295.324 629.672 m 278.371 629.672 l 278.371 625.555 l 279.629 625.555 l + 279.629 614.254 l 278.371 614.254 l 278.371 610.133 l 295.324 610.133 l + 295.324 617.719 l 289.699 617.719 l 289.699 614.254 l 286.66 614.254 l +286.66 618.223 l 288.871 618.223 l 288.871 621.082 l 286.66 621.082 l 286.66 + 625.555 l 289.699 625.555 l 289.699 621.586 l 295.324 621.586 l h +310.742 614.254 m 310.742 610.133 l 318.98 610.133 l 318.98 614.254 l 317.727 + 614.254 l 317.727 629.672 l 310.668 629.672 l 303.309 618.348 l 303.309 + 625.555 l 304.516 625.555 l 304.516 629.672 l 296.277 629.672 l 296.277 + 625.555 l 297.535 625.555 l 297.535 614.254 l 296.277 614.254 l 296.277 + 610.133 l 305.344 610.133 l 311.949 620.207 l 311.949 614.254 l h +335.254 630.023 m 333.648 630.023 332.129 629.883 330.699 629.605 c 329.266 + 629.332 328.164 629.02 327.395 628.668 c 327.395 623.695 l 332.918 623.695 + l 332.918 624.215 333.035 624.59 333.27 624.824 c 333.508 625.059 333.934 + 625.176 334.551 625.176 c 335.07 625.176 335.445 625.098 335.664 624.938 + c 335.895 624.781 336.008 624.543 336.008 624.223 c 336.008 623.953 335.902 + 623.723 335.684 623.531 c 335.465 623.34 335.086 623.145 334.551 622.941 + c 332.391 622.191 l 330.535 621.488 329.199 620.66 328.383 619.703 c 327.574 + 618.746 327.168 617.457 327.168 615.836 c 327.168 613.859 327.816 612.355 + 329.117 611.328 c 330.414 610.297 332.578 609.785 335.605 609.785 c 337.062 + 609.785 338.43 609.93 339.715 610.219 c 340.992 610.516 342.027 610.906 + 342.812 611.391 c 342.812 615.887 l 337.793 615.887 l 337.793 615.047 337.273 + 614.629 336.234 614.629 c 335.734 614.629 335.375 614.691 335.164 614.816 + c 334.957 614.941 334.852 615.168 334.852 615.484 c 334.852 615.77 334.977 + 615.992 335.219 616.16 c 335.461 616.328 335.859 616.504 336.41 616.691 + c 338.594 617.441 l 340.371 618.047 341.664 618.828 342.477 619.789 c 343.285 + 620.75 343.691 622.012 343.691 623.57 c 343.691 625.695 342.977 627.305 + 341.547 628.395 c 340.117 629.48 338.016 630.023 335.254 630.023 c h +353.84 630.023 m 350.773 630.023 348.41 629.223 346.746 627.613 c 345.078 + 626.004 344.246 623.434 344.246 619.902 c 344.246 616.371 345.078 613.801 + 346.746 612.191 c 348.41 610.586 350.773 609.781 353.84 609.785 c 356.902 + 609.785 359.266 610.586 360.934 612.191 c 362.598 613.801 363.43 616.371 + 363.434 619.902 c 363.434 623.434 362.602 626.004 360.934 627.613 c 359.266 + 629.223 356.902 630.023 353.84 630.023 c h +353.84 625.555 m 354.406 625.555 354.836 625.402 355.121 625.102 c 355.406 + 624.801 355.547 624.332 355.547 623.695 c 355.547 616.113 l 355.547 615.477 + 355.406 615.008 355.121 614.707 c 354.836 614.402 354.406 614.254 353.84 + 614.254 c 353.27 614.254 352.844 614.402 352.559 614.707 c 352.273 615.008 + 352.129 615.477 352.129 616.113 c 352.129 623.695 l 352.129 624.348 352.273 + 624.82 352.559 625.113 c 352.844 625.406 353.27 625.555 353.84 625.555 +c h +373.68 630.023 m 371.051 630.023 369.02 629.445 367.586 628.293 c 366.156 + 627.137 365.441 625.262 365.441 622.664 c 365.441 614.254 l 364.184 614.254 + l 364.184 610.133 l 373.477 610.133 l 373.477 614.254 l 372.473 614.254 + l 372.473 623.945 l 372.473 624.5 372.594 624.906 372.832 625.168 c 373.078 + 625.426 373.441 625.555 373.93 625.555 c 374.414 625.555 374.777 625.426 + 375.02 625.168 c 375.262 624.906 375.387 624.5 375.387 623.945 c 375.387 + 614.254 l 374.383 614.254 l 374.383 610.133 l 382.996 610.133 l 382.996 + 614.254 l 381.738 614.254 l 381.738 622.664 l 381.738 625.258 381.043 627.137 + 379.656 628.293 c 378.266 629.445 376.273 630.023 373.68 630.023 c h +383.898 629.672 m 383.898 625.555 l 385.156 625.555 l 385.156 614.254 l + 383.898 614.254 l 383.898 610.133 l 395.426 610.133 l 397.586 610.133 399.234 + 610.578 400.375 611.465 c 401.512 612.355 402.082 613.793 402.082 615.785 + c 402.082 616.906 401.855 617.879 401.402 618.699 c 400.953 619.52 400.305 + 620.086 399.469 620.406 c 399.496 620.656 l 401.102 620.91 401.906 621.895 + 401.906 623.621 c 401.906 625.555 l 403.086 625.555 l 403.086 629.672 l + 395.125 629.672 l 395.125 623.77 l 395.125 623.117 395.027 622.625 394.832 + 622.289 c 394.641 621.953 394.34 621.727 393.93 621.613 c 393.523 621.492 + 392.941 621.438 392.188 621.438 c 392.188 625.555 l 393.844 625.555 l 393.844 + 629.672 l h +392.188 618.371 m 393.543 618.371 l 394.027 618.371 394.391 618.242 394.633 + 617.98 c 394.879 617.723 395 617.316 395 616.766 c 395 615.859 l 395 615.309 + 394.875 614.902 394.633 614.641 c 394.391 614.383 394.027 614.254 393.543 + 614.254 c 392.188 614.254 l h +413.734 630.023 m 410.57 630.023 408.129 629.223 406.41 627.613 c 404.695 + 626.004 403.84 623.434 403.84 619.902 c 403.84 613.156 407.121 609.781 +413.684 609.785 c 415.273 609.785 416.754 609.977 418.113 610.359 c 419.48 + 610.746 420.496 611.172 421.168 611.641 c 421.168 617.918 l 415.141 617.918 + l 415.141 616.113 l 415.141 615.477 415 615.008 414.715 614.707 c 414.43 + 614.402 414 614.254 413.434 614.254 c 412.863 614.254 412.438 614.402 412.152 + 614.707 c 411.867 615.008 411.723 615.477 411.723 616.113 c 411.723 623.695 + l 411.723 624.332 411.867 624.797 412.152 625.102 c 412.438 625.406 412.863 + 625.555 413.434 625.555 c 414 625.555 414.43 625.402 414.715 625.102 c +415 624.801 415.141 624.332 415.141 623.695 c 415.141 621.66 l 421.168 621.66 + l 421.168 628.164 l 420.48 628.633 419.461 629.059 418.113 629.445 c 416.766 + 629.832 415.309 630.023 413.734 630.023 c h +439.074 629.672 m 422.121 629.672 l 422.121 625.555 l 423.375 625.555 l + 423.375 614.254 l 422.121 614.254 l 422.121 610.133 l 439.074 610.133 l + 439.074 617.719 l 433.449 617.719 l 433.449 614.254 l 430.41 614.254 l +430.41 618.223 l 432.621 618.223 l 432.621 621.082 l 430.41 621.082 l 430.41 + 625.555 l 433.449 625.555 l 433.449 621.586 l 439.074 621.586 l h +457.305 630.023 m 454.141 630.023 451.699 629.223 449.984 627.613 c 448.27 + 626.004 447.41 623.434 447.41 619.902 c 447.41 613.156 450.691 609.781 +457.254 609.785 c 458.844 609.785 460.32 609.977 461.684 610.359 c 463.051 + 610.746 464.07 611.172 464.738 611.641 c 464.738 617.918 l 458.711 617.918 + l 458.711 616.113 l 458.711 615.477 458.57 615.008 458.285 614.707 c 458 + 614.402 457.57 614.254 457.004 614.254 c 456.434 614.254 456.008 614.402 + 455.723 614.707 c 455.438 615.008 455.297 615.477 455.297 616.113 c 455.297 + 623.695 l 455.297 624.332 455.438 624.797 455.723 625.102 c 456.008 625.406 + 456.434 625.555 457.004 625.555 c 457.574 625.555 458 625.402 458.285 625.102 + c 458.57 624.801 458.711 624.332 458.711 623.695 c 458.711 621.66 l 464.738 + 621.66 l 464.738 628.164 l 464.051 628.633 463.035 629.059 461.684 629.445 + c 460.34 629.832 458.879 630.023 457.305 630.023 c h +475.137 630.023 m 472.07 630.023 469.707 629.223 468.043 627.613 c 466.375 + 626.004 465.543 623.434 465.543 619.902 c 465.543 616.371 466.375 613.801 + 468.043 612.191 c 469.707 610.586 472.07 609.781 475.137 609.785 c 478.199 + 609.785 480.566 610.586 482.23 612.191 c 483.895 613.801 484.727 616.371 + 484.73 619.902 c 484.73 623.434 483.898 626.004 482.23 627.613 c 480.566 + 629.223 478.199 630.023 475.137 630.023 c h +475.137 625.555 m 475.703 625.555 476.133 625.402 476.418 625.102 c 476.703 + 624.801 476.844 624.332 476.844 623.695 c 476.844 616.113 l 476.844 615.477 + 476.699 615.008 476.418 614.707 c 476.133 614.402 475.703 614.254 475.137 + 614.254 c 474.566 614.254 474.141 614.402 473.855 614.707 c 473.57 615.008 + 473.426 615.477 473.426 616.113 c 473.426 623.695 l 473.426 624.348 473.57 + 624.82 473.855 625.113 c 474.141 625.406 474.566 625.555 475.137 625.555 + c h +500.047 614.254 m 500.047 610.133 l 508.285 610.133 l 508.285 614.254 l + 507.027 614.254 l 507.027 629.672 l 499.973 629.672 l 492.613 618.348 l + 492.613 625.555 l 493.82 625.555 l 493.82 629.672 l 485.582 629.672 l 485.582 + 625.555 l 486.84 625.555 l 486.84 614.254 l 485.582 614.254 l 485.582 610.133 + l 494.648 610.133 l 501.254 620.207 l 501.254 614.254 l h +527.973 610.133 m 527.973 616.211 l 523.652 616.211 l 523.652 614.254 l + 522.047 614.254 l 522.047 625.555 l 523.805 625.555 l 523.805 629.672 l + 513.258 629.672 l 513.258 625.555 l 515.016 625.555 l 515.016 614.254 l + 513.406 614.254 l 513.406 616.211 l 509.09 616.211 l 509.09 610.133 l h +545.777 629.672 m 528.828 629.672 l 528.828 625.555 l 530.082 625.555 l + 530.082 614.254 l 528.828 614.254 l 528.828 610.133 l 545.777 610.133 l + 545.777 617.719 l 540.152 617.719 l 540.152 614.254 l 537.117 614.254 l + 537.117 618.223 l 539.324 618.223 l 539.324 621.082 l 537.117 621.082 l + 537.117 625.555 l 540.152 625.555 l 540.152 621.586 l 545.777 621.586 l + h +561.199 614.254 m 561.199 610.133 l 569.438 610.133 l 569.438 614.254 l + 568.18 614.254 l 568.18 629.672 l 561.125 629.672 l 553.766 618.348 l 553.766 + 625.555 l 554.973 625.555 l 554.973 629.672 l 546.734 629.672 l 546.734 + 625.555 l 547.988 625.555 l 547.988 614.254 l 546.734 614.254 l 546.734 + 610.133 l 555.801 610.133 l 562.406 620.207 l 562.406 614.254 l h +589.125 610.133 m 589.125 616.211 l 584.805 616.211 l 584.805 614.254 l + 583.199 614.254 l 583.199 625.555 l 584.957 625.555 l 584.957 629.672 l + 574.406 629.672 l 574.406 625.555 l 576.168 625.555 l 576.168 614.254 l + 574.559 614.254 l 574.559 616.211 l 570.238 616.211 l 570.238 610.133 l + h +605.297 630.023 m 603.691 630.023 602.172 629.883 600.734 629.605 c 599.305 + 629.332 598.207 629.02 597.438 628.668 c 597.438 623.695 l 602.965 623.695 + l 602.965 624.215 603.082 624.59 603.312 624.824 c 603.547 625.059 603.977 + 625.176 604.594 625.176 c 605.113 625.176 605.484 625.098 605.715 624.938 + c 605.938 624.781 606.051 624.543 606.051 624.223 c 606.051 623.953 605.941 + 623.723 605.727 623.531 c 605.508 623.34 605.129 623.145 604.594 622.941 + c 602.434 622.191 l 600.578 621.488 599.242 620.66 598.43 619.703 c 597.617 + 618.746 597.211 617.457 597.211 615.836 c 597.211 613.859 597.859 612.355 + 599.156 611.328 c 600.453 610.297 602.617 609.785 605.648 609.785 c 607.105 + 609.785 608.473 609.93 609.754 610.219 c 611.035 610.516 612.07 610.906 + 612.855 611.391 c 612.855 615.887 l 607.836 615.887 l 607.836 615.047 607.316 + 614.629 606.277 614.629 c 605.777 614.629 605.418 614.691 605.211 614.816 + c 605 614.941 604.895 615.168 604.895 615.484 c 604.895 615.77 605.016 +615.992 605.258 616.16 c 605.5 616.328 605.898 616.504 606.453 616.691 c + 608.637 617.441 l 610.414 618.047 611.707 618.828 612.516 619.789 c 613.328 + 620.75 613.734 622.012 613.734 623.57 c 613.734 625.695 613.02 627.305 +611.586 628.395 c 610.156 629.48 608.059 630.023 605.297 630.023 c h +631.391 629.672 m 614.438 629.672 l 614.438 625.555 l 615.695 625.555 l + 615.695 614.254 l 614.438 614.254 l 614.438 610.133 l 631.391 610.133 l + 631.391 617.719 l 625.766 617.719 l 625.766 614.254 l 622.727 614.254 l + 622.727 618.223 l 624.938 618.223 l 624.938 621.082 l 622.727 621.082 l + 622.727 625.555 l 625.766 625.555 l 625.766 621.586 l 631.391 621.586 l + h +632.344 629.672 m 632.344 625.555 l 633.602 625.555 l 633.602 614.254 l + 632.344 614.254 l 632.344 610.133 l 643.871 610.133 l 646.031 610.133 647.68 + 610.578 648.82 611.465 c 649.957 612.355 650.527 613.793 650.527 615.785 + c 650.527 616.906 650.301 617.879 649.848 618.699 c 649.398 619.52 648.754 + 620.086 647.914 620.406 c 647.938 620.656 l 649.547 620.91 650.352 621.895 + 650.352 623.621 c 650.352 625.555 l 651.531 625.555 l 651.531 629.672 l + 643.57 629.672 l 643.57 623.77 l 643.57 623.117 643.473 622.625 643.277 + 622.289 c 643.09 621.953 642.789 621.727 642.379 621.613 c 641.969 621.492 + 641.387 621.438 640.633 621.438 c 640.633 625.555 l 642.289 625.555 l 642.289 + 629.672 l h +640.633 618.371 m 641.988 618.371 l 642.473 618.371 642.84 618.242 643.082 + 617.98 c 643.324 617.723 643.445 617.316 643.445 616.766 c 643.445 615.859 + l 643.445 615.309 643.324 614.902 643.082 614.641 c 642.84 614.383 642.473 + 614.254 641.988 614.254 c 640.633 614.254 l h +661.879 614.254 m 661.879 610.133 l 670.266 610.133 l 670.266 614.254 l + 669.262 614.254 l 664.766 629.672 l 656.629 629.672 l 652.133 614.254 l + 651.129 614.254 l 651.129 610.133 l 660.773 610.133 l 660.773 614.254 l + 659.469 614.254 l 661.199 622.664 l 661.453 622.664 l 663.184 614.254 l + h +688.02 629.672 m 671.07 629.672 l 671.07 625.555 l 672.324 625.555 l 672.324 + 614.254 l 671.07 614.254 l 671.07 610.133 l 688.02 610.133 l 688.02 617.719 + l 682.395 617.719 l 682.395 614.254 l 679.355 614.254 l 679.355 618.223 + l 681.566 618.223 l 681.566 621.082 l 679.355 621.082 l 679.355 625.555 + l 682.395 625.555 l 682.395 621.586 l 688.02 621.586 l h +688.977 629.672 m 688.977 625.555 l 690.23 625.555 l 690.23 614.254 l 688.977 + 614.254 l 688.977 610.133 l 700.504 610.133 l 702.664 610.133 704.312 610.578 + 705.449 611.465 c 706.59 612.355 707.16 613.793 707.156 615.785 c 707.156 + 616.906 706.93 617.879 706.48 618.699 c 706.027 619.52 705.383 620.086 +704.547 620.406 c 704.57 620.656 l 706.176 620.91 706.98 621.895 706.98 +623.621 c 706.98 625.555 l 708.16 625.555 l 708.16 629.672 l 700.199 629.672 + l 700.199 623.77 l 700.199 623.117 700.102 622.625 699.91 622.289 c 699.719 + 621.953 699.418 621.727 699.004 621.613 c 698.598 621.492 698.016 621.438 + 697.262 621.438 c 697.262 625.555 l 698.918 625.555 l 698.918 629.672 l + h +697.262 618.371 m 698.617 618.371 l 699.105 618.371 699.469 618.242 699.707 + 617.98 c 699.953 617.723 700.074 617.316 700.074 616.766 c 700.074 615.859 + l 700.074 615.309 699.953 614.902 699.707 614.641 c 699.469 614.383 699.105 + 614.254 698.617 614.254 c 697.262 614.254 l h +697.262 618.371 m f +Q q +309.66 467.402 485.473 64.672 re W n +0.537255 0.576471 0.619608 rg +375.801 486.988 m 375.801 490.199 374.855 492.914 372.961 495.129 c 371.062 + 497.34 368.59 499.184 365.543 500.656 c 362.504 502.117 359.086 503.262 + 355.281 504.098 c 351.488 504.934 347.711 505.555 343.941 505.953 c 340.176 + 506.355 336.613 506.613 333.258 506.73 c 329.891 506.848 327.117 506.906 + 324.941 506.906 c 324.941 508.922 324.922 510.887 324.887 512.805 c 324.863 + 514.738 324.852 516.707 324.852 518.723 c 324.852 519.238 324.852 520.129 + 324.852 521.387 c 324.852 522.648 324.883 523.984 324.941 525.398 c 325 + 526.809 325.129 528.117 325.328 529.316 c 325.531 530.531 325.801 531.309 + 326.141 531.648 c 311.043 531.648 l 311.395 531.309 311.684 530.188 311.906 + 528.293 c 312.145 526.387 312.332 524.113 312.473 521.477 c 312.613 518.828 + 312.703 515.957 312.738 512.859 c 312.762 509.75 312.773 506.801 312.773 + 504.012 c 312.773 501.219 312.762 498.738 312.738 496.559 c 312.703 494.367 + 312.684 492.875 312.684 492.074 c 312.684 491.555 312.703 490.637 312.738 + 489.316 c 312.762 487.988 312.762 486.461 312.738 484.742 c 312.703 483.012 + 312.645 481.199 312.562 479.305 c 312.48 477.41 312.32 475.656 312.086 +474.043 c 311.859 472.441 311.543 471.094 311.129 469.996 c 310.73 468.902 + 310.242 468.266 309.664 468.09 c 322.078 468.09 l 322.891 468.09 323.977 + 468.078 325.328 468.055 c 326.672 468.02 327.75 468.059 328.562 468.18 +c 331.598 468.18 334.613 468.238 337.602 468.355 c 340.594 468.473 343.613 + 468.672 346.664 468.957 c 348.441 469.133 350.414 469.363 352.578 469.645 + c 354.734 469.938 356.887 470.355 359.043 470.898 c 361.199 471.438 363.281 + 472.145 365.293 473.016 c 367.309 473.875 369.09 474.938 370.645 476.195 + c 372.188 477.469 373.438 478.992 374.391 480.77 c 375.332 482.559 375.801 + 484.633 375.801 486.988 c h +360.207 486.898 m 360.207 485.227 359.602 483.832 358.391 482.711 c 357.188 + 481.594 355.652 480.676 353.781 479.957 c 351.906 479.238 349.805 478.691 + 347.477 478.316 c 345.156 477.938 342.859 477.68 340.586 477.539 c 338.316 + 477.398 336.23 477.324 334.336 477.324 c 332.441 477.324 330.945 477.324 + 329.852 477.324 c 325.719 477.324 l 325.305 480.836 325.078 484.344 325.027 + 487.852 c 324.969 491.348 324.941 494.852 324.941 498.359 c 327.238 498.359 + 329.52 498.332 331.793 498.27 c 334.066 498.211 336.348 498.102 338.645 + 497.938 c 340.316 497.816 342.391 497.617 344.863 497.336 c 347.336 497.039 + 349.699 496.523 351.961 495.781 c 354.234 495.027 356.176 493.949 357.789 + 492.551 c 359.402 491.137 360.207 489.254 360.207 486.898 c h +456.527 468.09 m 455.492 468.668 453.996 469.949 452.043 471.941 c 450.086 + 473.918 447.902 476.285 445.488 479.039 c 443.066 481.805 440.535 484.797 + 437.895 488.012 c 435.246 491.238 432.715 494.355 430.301 497.371 c 427.887 + 500.383 425.703 503.117 423.75 505.566 c 421.797 508.004 420.328 509.855 + 419.352 511.129 c 419.293 512.328 419.266 513.535 419.266 514.75 c 419.266 + 515.961 419.266 517.195 419.266 518.457 c 419.266 518.977 419.266 519.895 + 419.266 521.211 c 419.266 522.531 419.305 523.895 419.387 525.309 c 419.48 + 526.723 419.613 528.047 419.777 529.281 c 419.953 530.52 420.242 531.309 + 420.641 531.648 c 404.871 531.648 l 405.152 531.367 405.395 530.707 405.594 + 529.672 c 405.797 528.637 405.953 527.41 406.074 525.996 c 406.191 524.598 + 406.262 523.09 406.285 521.477 c 406.32 519.863 406.348 518.34 406.371 +516.902 c 406.406 515.465 406.426 514.188 406.426 513.07 c 406.426 511.953 + 406.426 511.156 406.426 510.688 c 405.449 509.484 403.984 507.66 402.027 + 505.211 c 400.074 502.773 397.871 500.074 395.422 497.105 c 392.984 494.152 + 390.441 491.066 387.793 487.852 c 385.145 484.625 382.613 481.648 380.199 + 478.914 c 377.785 476.184 375.602 473.828 373.648 471.852 c 371.695 469.863 + 370.227 468.609 369.25 468.09 c 372.699 468.09 376.109 468.109 379.477 +468.145 c 382.832 468.168 386.234 468.148 389.684 468.09 c 389.461 468.207 + 389.348 468.465 389.348 468.867 c 389.348 469.738 389.836 471.004 390.812 + 472.664 c 391.789 474.336 393.027 476.219 394.523 478.316 c 396.02 480.41 + 397.684 482.613 399.52 484.922 c 401.355 487.215 403.141 489.398 404.871 + 491.473 c 406.59 493.531 408.168 495.367 409.605 496.98 c 411.039 498.594 + 412.105 499.773 412.801 500.516 c 413.227 500.516 l 413.918 499.773 414.973 + 498.594 416.387 496.98 c 417.785 495.367 419.363 493.531 421.117 491.473 + c 422.875 489.398 424.656 487.215 426.469 484.922 c 428.281 482.613 429.949 + 480.41 431.469 478.316 c 432.988 476.219 434.223 474.336 435.176 472.664 + c 436.129 471.004 436.605 469.738 436.605 468.867 c 436.605 468.527 436.488 + 468.266 436.254 468.09 c 439.645 468.148 443.023 468.168 446.391 468.145 + c 449.746 468.109 453.125 468.09 456.527 468.09 c h +504.457 497.07 m 504.754 495.812 505.012 494.562 505.234 493.328 c 505.469 + 492.09 505.59 490.809 505.59 489.477 c 505.59 486.898 505.125 484.762 504.191 + 483.066 c 503.273 481.359 502.027 480.004 500.449 479.004 c 498.871 478.004 + 497.059 477.312 495.008 476.938 c 492.973 476.562 490.836 476.371 488.598 + 476.371 c 487.223 476.371 485.637 476.473 483.848 476.672 c 482.07 476.871 + 480.246 477.191 478.375 477.625 c 476.5 478.062 474.648 478.621 472.812 + 479.305 c 470.973 480 469.348 480.863 467.938 481.898 c 466.535 482.938 + 465.387 484.156 464.492 485.555 c 463.598 486.969 463.152 488.562 463.152 + 490.344 c 463.152 491.895 463.711 493.23 464.828 494.352 c 465.957 495.469 + 467.402 496.434 469.156 497.246 c 470.91 498.047 472.875 498.707 475.055 + 499.227 c 477.242 499.742 479.398 500.191 481.516 500.566 c 483.648 500.934 + 485.633 501.219 487.469 501.434 c 489.305 501.633 490.77 501.816 491.867 + 501.98 c 493.242 502.215 494.926 502.492 496.918 502.809 c 498.895 503.129 + 500.949 503.539 503.082 504.047 c 505.211 504.562 507.324 505.199 509.422 + 505.953 c 511.516 506.695 513.398 507.602 515.07 508.672 c 516.73 509.734 + 518.078 510.969 519.117 512.383 c 520.152 513.781 520.672 515.406 520.672 + 517.258 c 520.672 519.211 520.141 520.934 519.082 522.43 c 518.008 523.914 + 516.602 525.223 514.859 526.352 c 513.105 527.469 511.145 528.387 508.98 + 529.105 c 506.824 529.824 504.641 530.414 502.426 530.871 c 500.215 531.332 + 498.105 531.648 496.105 531.824 c 494.09 531.992 492.391 532.074 491 532.074 + c 484.914 532.074 478.879 531.574 472.898 530.57 c 466.918 529.57 461.086 + 527.945 455.398 525.699 c 454.82 525.473 454.16 525.203 453.418 524.887 + c 452.668 524.566 451.891 524.238 451.09 523.895 c 450.277 523.543 449.5 + 523.254 448.758 523.031 c 448.004 522.797 447.344 522.648 446.777 522.59 + c 447.121 522.25 447.652 521.758 448.367 521.125 c 449.086 520.5 449.805 + 519.812 450.523 519.059 c 451.242 518.316 451.902 517.609 452.5 516.938 + c 453.113 516.277 453.473 515.777 453.578 515.438 c 458.641 518.547 464.176 + 520.848 470.18 522.344 c 476.184 523.836 482.148 524.586 488.07 524.586 + c 489.047 524.586 490.59 524.508 492.695 524.355 c 494.793 524.215 496.887 + 523.914 498.984 523.453 c 501.078 522.996 502.922 522.348 504.512 521.512 + c 506.09 520.676 506.879 519.57 506.879 518.191 c 506.879 516.355 506.059 + 514.891 504.422 513.793 c 502.785 512.699 500.613 511.793 497.906 511.074 + c 495.211 510.355 492.137 509.785 488.688 509.363 c 485.238 508.926 481.711 + 508.449 478.109 507.93 c 474.52 507.414 470.996 506.797 467.547 506.078 + c 464.098 505.359 461.023 504.383 458.328 503.145 c 455.621 501.91 453.449 + 500.344 451.812 498.449 c 450.176 496.551 449.359 494.168 449.359 491.297 + c 449.359 488.246 449.977 485.543 451.211 483.188 c 452.449 480.836 454.113 + 478.762 456.211 476.973 c 458.305 475.195 460.691 473.699 463.363 472.488 + c 466.047 471.285 468.836 470.309 471.734 469.555 c 474.641 468.812 477.531 + 468.273 480.406 467.93 c 483.277 467.578 485.922 467.402 488.336 467.402 + c 492.359 467.402 496.18 467.719 499.797 468.355 c 503.422 468.992 506.57 + 470.137 509.242 471.797 c 511.918 473.469 514.043 475.801 515.621 478.793 + c 517.207 481.781 518.004 485.633 518.004 490.344 c 518.004 491.496 517.957 + 492.621 517.863 493.715 c 517.781 494.797 517.68 495.918 517.562 497.07 + c h +595.336 468.09 m 594.598 468.09 593.996 468.754 593.535 470.086 c 593.078 + 471.402 592.699 473.07 592.406 475.082 c 592.125 477.098 591.91 479.32 +591.77 481.758 c 591.629 484.207 591.527 486.551 591.469 488.789 c 591.41 + 491.035 591.383 493.02 591.383 494.738 c 591.383 496.469 591.383 497.648 + 591.383 498.27 c 591.383 501.723 591.363 505.129 591.328 508.496 c 591.305 + 511.863 591.293 515.273 591.293 518.723 c 591.293 519.18 591.293 520.07 + 591.293 521.387 c 591.293 522.707 591.324 524.074 591.383 525.484 c 591.441 + 526.898 591.57 528.207 591.77 529.406 c 591.969 530.617 592.242 531.367 + 592.582 531.648 c 577.5 531.648 l 577.844 531.367 578.113 530.52 578.312 + 529.105 c 578.512 527.695 578.672 526.027 578.789 524.109 c 578.906 522.176 + 578.996 520.094 579.055 517.855 c 579.102 515.609 579.125 513.477 579.125 + 511.465 c 579.125 509.461 579.125 507.695 579.125 506.164 c 579.125 504.648 + 579.125 503.629 579.125 503.109 c 573.32 502.875 567.547 502.727 561.801 + 502.668 c 556.055 502.609 550.281 502.582 544.477 502.582 c 541.281 502.582 + l 541.281 505.289 541.262 507.969 541.227 510.617 c 541.203 513.254 541.191 + 515.926 541.191 518.633 c 541.191 519.094 541.191 519.98 541.191 521.301 + c 541.191 522.617 541.223 523.996 541.281 525.434 c 541.34 526.883 541.469 + 528.207 541.668 529.406 c 541.867 530.617 542.141 531.367 542.48 531.648 + c 527.398 531.648 l 527.738 531.309 528.027 530.199 528.266 528.328 c 528.488 + 526.457 528.672 524.203 528.812 521.566 c 528.953 518.918 529.039 516.039 + 529.078 512.93 c 529.102 509.832 529.113 506.871 529.113 504.047 c 529.113 + 501.23 529.102 498.75 529.078 496.594 c 529.039 494.438 529.023 492.934 + 529.023 492.074 c 529.023 491.613 529.039 490.707 529.078 489.352 c 529.102 + 488 529.102 486.461 529.078 484.742 c 529.039 483.012 528.98 481.199 528.898 + 479.305 c 528.816 477.41 528.66 475.656 528.422 474.043 c 528.199 472.441 + 527.887 471.094 527.488 469.996 c 527.074 468.902 526.586 468.266 526.02 + 468.09 c 545.324 468.09 l 544.641 468.09 544.07 468.668 543.609 469.82 +c 543.152 470.973 542.773 472.441 542.48 474.219 c 542.199 475.996 541.969 + 477.969 541.793 480.133 c 541.625 482.289 541.516 484.344 541.457 486.297 + c 541.398 488.254 541.367 489.988 541.367 491.508 c 541.367 493.027 541.367 + 494.043 541.367 494.562 c 547.633 494.68 553.914 494.77 560.211 494.828 + c 566.5 494.887 572.805 494.828 579.125 494.652 c 579.125 492.074 l 579.125 + 491.555 579.145 490.637 579.18 489.316 c 579.203 487.988 579.203 486.461 + 579.18 484.742 c 579.145 483.012 579.086 481.199 579.004 479.305 c 578.918 + 477.41 578.762 475.656 578.523 474.043 c 578.301 472.441 577.988 471.094 + 577.59 469.996 c 577.176 468.902 576.688 468.266 576.125 468.09 c h +664.672 531.473 m 602.066 531.648 l 602.406 531.309 602.695 530.199 602.934 + 528.328 c 603.156 526.457 603.344 524.203 603.496 521.566 c 603.637 518.918 + 603.719 516.039 603.742 512.93 c 603.781 509.832 603.797 506.871 603.797 + 504.047 c 603.797 501.23 603.781 498.75 603.742 496.594 c 603.719 494.438 + 603.707 492.934 603.707 492.074 c 603.707 491.555 603.707 490.66 603.707 + 489.387 c 603.707 488.129 603.691 486.723 603.656 485.168 c 603.633 483.613 + 603.59 481.961 603.531 480.203 c 603.473 478.449 603.375 476.832 603.23 + 475.348 c 603.09 473.852 602.902 472.539 602.668 471.41 c 602.441 470.293 + 602.156 469.531 601.801 469.133 c 601.637 468.957 601.453 468.785 601.254 + 468.621 c 601.055 468.441 600.867 468.266 600.688 468.09 c 663.293 468.266 + l 662.34 477.84 l 662.059 477.719 661.352 477.633 660.223 477.574 c 659.102 + 477.527 657.742 477.473 656.141 477.414 c 654.527 477.355 652.805 477.309 + 650.969 477.273 c 649.121 477.25 647.375 477.238 645.742 477.238 c 644.105 + 477.238 642.656 477.238 641.395 477.238 c 640.125 477.238 639.258 477.238 + 638.801 477.238 c 631.441 477.238 624.055 477.324 616.637 477.504 c 616.355 + 480.375 616.184 483.23 616.125 486.066 c 616.066 488.918 616.035 491.809 + 616.035 494.738 c 655.699 494.316 l 655.613 503.535 l 655.391 503.477 654.828 + 503.406 653.934 503.32 c 653.039 503.238 651.992 503.18 650.793 503.145 + c 649.578 503.121 648.273 503.094 646.871 503.059 c 645.457 503.035 644.133 + 503.023 642.898 503.023 c 641.66 503.023 640.555 503.023 639.578 503.023 + c 638.602 503.023 637.941 503.023 637.598 503.023 c 630.406 503.023 623.188 + 503.109 615.949 503.285 c 615.949 505.863 615.938 508.438 615.91 511.004 + c 615.875 513.559 615.859 516.133 615.859 518.723 c 615.859 522.164 l 619.945 + 522.344 624.012 522.43 628.062 522.43 c 632.113 522.43 636.18 522.43 640.266 + 522.43 c 640.664 522.43 641.5 522.43 642.773 522.43 c 644.031 522.43 645.5 + 522.43 647.172 522.43 c 648.832 522.43 650.566 522.414 652.379 522.379 +c 654.195 522.355 655.906 522.324 657.52 522.289 c 659.121 522.266 660.488 + 522.223 661.617 522.164 c 662.734 522.105 663.438 522.02 663.719 521.902 + c h +728.992 531.473 m 670.871 531.648 l 671.223 531.309 671.512 530.199 671.734 + 528.328 c 671.973 526.457 672.16 524.203 672.301 521.566 c 672.441 518.918 + 672.523 516.055 672.547 512.98 c 672.586 509.91 672.602 506.961 672.602 + 504.133 c 672.602 501.32 672.586 498.824 672.547 496.648 c 672.523 494.457 + 672.512 492.934 672.512 492.074 c 672.512 491.613 672.523 490.707 672.547 + 489.352 c 672.586 488 672.586 486.461 672.547 484.742 c 672.523 483.012 + 672.473 481.199 672.391 479.305 c 672.297 477.41 672.137 475.656 671.914 + 474.043 c 671.676 472.441 671.359 471.094 670.961 469.996 c 670.559 468.902 + 670.07 468.266 669.492 468.09 c 688.812 468.09 l 688.059 468.09 687.441 + 468.754 686.961 470.086 c 686.465 471.402 686.078 473.07 685.793 475.082 + c 685.512 477.098 685.293 479.32 685.141 481.758 c 685 484.207 684.898 +486.551 684.84 488.789 c 684.781 491.035 684.754 493.039 684.754 494.793 + c 684.754 496.547 684.754 497.734 684.754 498.359 c 684.754 502.328 684.711 + 506.297 684.629 510.262 c 684.547 514.23 684.559 518.199 684.664 522.164 + c 686.617 522.285 688.43 522.355 690.102 522.379 c 691.773 522.414 693.41 + 522.43 695.012 522.43 c 696.625 522.43 698.281 522.43 699.977 522.43 c +701.672 522.43 703.496 522.43 705.449 522.43 c 705.852 522.43 706.656 522.43 + 707.871 522.43 c 709.07 522.43 710.465 522.43 712.055 522.43 c 713.633 +522.43 715.309 522.414 717.09 522.379 c 718.879 522.355 720.531 522.324 +722.051 522.289 c 723.582 522.266 724.887 522.223 725.973 522.164 c 727.066 + 522.105 727.762 522.02 728.055 521.902 c h +794.176 477.84 m 793.895 477.719 793.191 477.633 792.074 477.574 c 790.957 + 477.527 789.59 477.473 787.977 477.414 c 786.363 477.355 784.637 477.309 + 782.801 477.273 c 780.965 477.25 779.223 477.238 777.574 477.238 c 775.938 + 477.238 774.488 477.238 773.23 477.238 c 771.957 477.238 771.094 477.238 + 770.633 477.238 c 763.277 477.238 755.895 477.324 748.488 477.504 c 748.195 + 480.375 748.016 483.23 747.957 486.066 c 747.898 488.918 747.871 491.809 + 747.871 494.738 c 787.023 494.316 l 786.934 503.535 l 786.594 503.418 785.547 + 503.316 783.789 503.234 c 782.035 503.152 780.152 503.094 778.141 503.059 + c 776.125 503.035 774.203 503.023 772.363 503.023 c 770.527 503.023 769.352 + 503.023 768.832 503.023 c 761.875 503.023 754.859 503.109 747.781 503.285 + c 747.781 505.863 747.77 508.438 747.746 511.004 c 747.723 513.559 747.711 + 516.133 747.711 518.723 c 747.711 519.18 747.711 520.07 747.711 521.387 + c 747.711 522.707 747.734 524.074 747.781 525.484 c 747.84 526.898 747.969 + 528.207 748.172 529.406 c 748.383 530.617 748.66 531.367 749 531.648 c +733.902 531.648 l 734.254 531.309 734.543 530.199 734.766 528.328 c 735 +526.457 735.191 524.203 735.332 521.566 c 735.473 518.918 735.562 516.039 + 735.598 512.93 c 735.621 509.832 735.633 506.871 735.633 504.047 c 735.633 + 501.23 735.621 498.75 735.598 496.594 c 735.562 494.438 735.543 492.934 + 735.543 492.074 c 735.543 491.555 735.543 490.66 735.543 489.387 c 735.543 + 488.129 735.531 486.723 735.508 485.168 c 735.473 483.613 735.426 481.961 + 735.367 480.203 c 735.309 478.449 735.207 476.832 735.066 475.348 c 734.926 + 473.852 734.738 472.539 734.5 471.41 c 734.277 470.293 733.996 469.531 +733.652 469.133 c 733.477 468.957 733.289 468.785 733.09 468.621 c 732.887 + 468.441 732.699 468.266 732.523 468.09 c 795.129 468.266 l h +794.176 477.84 m f +Q q +205.016 455.047 89.375 89.375 re W n +0.870588 g +260.879 499.738 m 260.879 533.254 l 255.293 533.254 l 255.293 477.395 l + 277.637 477.395 l 277.637 473.016 l 288.527 473.016 l 286.883 471.387 l + 288.559 469.758 l 277.637 469.758 l 277.637 455.047 l 244.121 455.047 l + 244.121 533.254 l 238.531 533.254 l 238.531 488.566 l 205.016 488.566 l + 205.016 510.91 l 227.359 510.91 l 227.359 544.426 l 272.051 544.426 l 272.051 + 522.082 l 294.395 522.082 l 294.395 499.738 l h +269.898 460.016 m 273.703 460.016 l 273.703 463.82 l 269.898 463.82 l h +263.113 460.016 m 266.918 460.016 l 266.918 463.82 l 263.113 463.82 l h +212.672 497.625 m 208.863 497.625 l 208.863 493.82 l 212.672 493.82 l h +219.207 497.625 m 215.402 497.625 l 215.402 493.82 l 219.207 493.82 l h +283.926 508.551 m 280.117 508.551 l 280.117 504.742 l 283.926 504.742 l + h +290.461 508.551 m 286.656 508.551 l 286.656 504.742 l 290.461 504.742 l + h +290.461 508.551 m f +Q Q +showpage +%%Trailer +end +%%EOF diff --git a/src/frontend/static/images/eps/logo-no-background.eps b/src/frontend/static/images/eps/logo-no-background.eps new file mode 100644 index 0000000..c960d11 --- /dev/null +++ b/src/frontend/static/images/eps/logo-no-background.eps @@ -0,0 +1,543 @@ +%!PS-Adobe-3.0 EPSF-3.0 +%%Creator: cairo 1.16.0 (https://cairographics.org) +%%CreationDate: Sat Nov 26 04:35:44 2022 +%%Pages: 1 +%%DocumentData: Clean7Bit +%%LanguageLevel: 2 +%%BoundingBox: 0 0 1000 373 +%%EndComments +%%BeginProlog +50 dict begin +/q { gsave } bind def +/Q { grestore } bind def +/cm { 6 array astore concat } bind def +/w { setlinewidth } bind def +/J { setlinecap } bind def +/j { setlinejoin } bind def +/M { setmiterlimit } bind def +/d { setdash } bind def +/m { moveto } bind def +/l { lineto } bind def +/c { curveto } bind def +/h { closepath } bind def +/re { exch dup neg 3 1 roll 5 3 roll moveto 0 rlineto + 0 exch rlineto 0 rlineto closepath } bind def +/S { stroke } bind def +/f { fill } bind def +/f* { eofill } bind def +/n { newpath } bind def +/W { clip } bind def +/W* { eoclip } bind def +/BT { } bind def +/ET { } bind def +/BDC { mark 3 1 roll /BDC pdfmark } bind def +/EMC { mark /EMC pdfmark } bind def +/cairo_store_point { /cairo_point_y exch def /cairo_point_x exch def } def +/Tj { show currentpoint cairo_store_point } bind def +/TJ { + { + dup + type /stringtype eq + { show } { -0.001 mul 0 cairo_font_matrix dtransform rmoveto } ifelse + } forall + currentpoint cairo_store_point +} bind def +/cairo_selectfont { cairo_font_matrix aload pop pop pop 0 0 6 array astore + cairo_font exch selectfont cairo_point_x cairo_point_y moveto } bind def +/Tf { pop /cairo_font exch def /cairo_font_matrix where + { pop cairo_selectfont } if } bind def +/Td { matrix translate cairo_font_matrix matrix concatmatrix dup + /cairo_font_matrix exch def dup 4 get exch 5 get cairo_store_point + /cairo_font where { pop cairo_selectfont } if } bind def +/Tm { 2 copy 8 2 roll 6 array astore /cairo_font_matrix exch def + cairo_store_point /cairo_font where { pop cairo_selectfont } if } bind def +/g { setgray } bind def +/rg { setrgbcolor } bind def +/d1 { setcachedevice } bind def +/cairo_data_source { + CairoDataIndex CairoData length lt + { CairoData CairoDataIndex get /CairoDataIndex CairoDataIndex 1 add def } + { () } ifelse +} def +/cairo_flush_ascii85_file { cairo_ascii85_file status { cairo_ascii85_file flushfile } if } def +/cairo_image { image cairo_flush_ascii85_file } def +/cairo_imagemask { imagemask cairo_flush_ascii85_file } def +%%EndProlog +%%BeginSetup +%%EndSetup +%%Page: 1 1 +%%BeginPageSetup +%%PageBoundingBox: 0 0 1000 373 +%%EndPageSetup +q 0 0 1000 373 rectclip +1 0 0 -1 0 373 cm q +Q q +0.445 0 999.32 362 re W n +0.537255 0.576471 0.619608 rg +0.445 361.453 m 0.445 0 l 999.766 0 l 999.766 361.453 l 822.367 361.453 + l 822.367 353.121 l 991.438 353.121 l 991.438 8.332 l 8.777 8.332 l 8.777 + 353.121 l 103.289 353.121 l 103.289 361.453 l h +0.445 361.453 m f +Q q +128 343 670 29.25 re W n +0.870588 g +141.988 372.25 m 137.613 372.25 134.234 371.102 131.855 368.805 c 129.477 + 366.508 128.285 362.836 128.285 357.789 c 128.285 352.742 129.477 349.074 + 131.855 346.777 c 134.234 344.48 137.613 343.332 141.988 343.332 c 146.367 + 343.332 149.746 344.48 152.129 346.777 c 154.504 349.074 155.691 352.742 + 155.695 357.789 c 155.695 362.836 154.508 366.508 152.129 368.805 c 149.746 + 371.102 146.363 372.25 141.988 372.25 c h +141.988 365.863 m 142.801 365.863 143.41 365.648 143.82 365.219 c 144.227 + 364.785 144.43 364.117 144.43 363.207 c 144.43 352.375 l 144.43 351.465 + 144.227 350.797 143.82 350.363 c 143.41 349.934 142.801 349.719 141.988 + 349.719 c 141.176 349.719 140.566 349.934 140.16 350.363 c 139.75 350.797 + 139.551 351.465 139.551 352.375 c 139.551 363.207 l 139.551 364.141 139.75 + 364.812 140.16 365.23 c 140.566 365.652 141.176 365.863 141.988 365.863 + c h +156.914 371.746 m 156.914 365.863 l 158.707 365.863 l 158.707 349.719 l + 156.914 349.719 l 156.914 343.836 l 172.664 343.836 l 175.75 343.836 178.105 + 344.5 179.73 345.824 c 181.355 347.152 182.172 349.301 182.168 352.266 +c 182.168 355.234 181.355 357.379 179.73 358.703 c 178.105 360.031 175.75 + 360.695 172.664 360.695 c 168.754 360.695 l 168.754 365.863 l 172.195 365.863 + l 172.195 371.746 l h +168.754 355.602 m 169.973 355.602 l 171.359 355.602 172.055 354.84 172.055 + 353.305 c 172.055 352.016 l 172.055 351.227 171.879 350.645 171.535 350.273 + c 171.188 349.902 170.664 349.719 169.973 349.719 c 168.754 349.719 l h +207.605 371.746 m 183.391 371.746 l 183.391 365.863 l 185.184 365.863 l + 185.184 349.719 l 183.391 349.719 l 183.391 343.836 l 207.605 343.836 l + 207.605 354.672 l 199.57 354.672 l 199.57 349.719 l 195.23 349.719 l 195.23 + 355.387 l 198.387 355.387 l 198.387 359.477 l 195.23 359.477 l 195.23 365.863 + l 199.57 365.863 l 199.57 360.195 l 207.605 360.195 l h +229.633 349.719 m 229.633 343.836 l 241.402 343.836 l 241.402 349.719 l + 239.609 349.719 l 239.609 371.746 l 229.527 371.746 l 219.016 355.566 l + 219.016 365.863 l 220.738 365.863 l 220.738 371.746 l 208.969 371.746 l + 208.969 365.863 l 210.762 365.863 l 210.762 349.719 l 208.969 349.719 l + 208.969 343.836 l 221.922 343.836 l 231.359 358.223 l 231.359 349.719 l + h +264.652 372.25 m 262.355 372.25 260.184 372.051 258.141 371.652 c 256.094 + 371.262 254.52 370.812 253.422 370.312 c 253.422 363.207 l 261.312 363.207 + l 261.312 363.949 261.48 364.484 261.816 364.82 c 262.152 365.156 262.762 + 365.324 263.645 365.324 c 264.387 365.324 264.918 365.211 265.238 364.98 + c 265.562 364.758 265.723 364.418 265.727 363.961 c 265.727 363.578 265.57 + 363.246 265.262 362.973 c 264.949 362.699 264.41 362.422 263.645 362.133 + c 260.562 361.059 l 257.906 360.051 255.996 358.871 254.832 357.504 c 253.676 + 356.137 253.094 354.297 253.098 351.98 c 253.098 349.156 254.023 347.012 + 255.883 345.543 c 257.734 344.07 260.824 343.332 265.152 343.332 c 267.23 + 343.332 269.188 343.543 271.02 343.957 c 272.848 344.379 274.324 344.934 + 275.449 345.629 c 275.449 352.051 l 268.273 352.051 l 268.273 350.855 267.531 + 350.258 266.051 350.254 c 265.332 350.254 264.82 350.344 264.52 350.523 + c 264.223 350.703 264.074 351.023 264.074 351.477 c 264.074 351.883 264.25 + 352.207 264.602 352.445 c 264.945 352.684 265.512 352.938 266.301 353.199 + c 269.422 354.277 l 271.957 355.137 273.805 356.254 274.965 357.625 c 276.121 + 359.004 276.703 360.805 276.703 363.027 c 276.703 366.066 275.684 368.363 + 273.641 369.918 c 271.594 371.473 268.598 372.25 264.652 372.25 c h +291.199 372.25 m 286.82 372.25 283.445 371.102 281.066 368.805 c 278.684 + 366.508 277.492 362.836 277.492 357.789 c 277.492 352.742 278.684 349.074 + 281.066 346.777 c 283.441 344.48 286.82 343.332 291.199 343.332 c 295.574 + 343.332 298.953 344.48 301.336 346.777 c 303.711 349.074 304.898 352.742 + 304.902 357.789 c 304.902 362.836 303.715 366.508 301.336 368.805 c 298.953 + 371.102 295.57 372.25 291.199 372.25 c h +291.199 365.863 m 292.012 365.863 292.621 365.648 293.027 365.219 c 293.434 + 364.785 293.637 364.117 293.637 363.207 c 293.637 352.375 l 293.637 351.465 + 293.434 350.797 293.027 350.363 c 292.621 349.934 292.012 349.719 291.199 + 349.719 c 290.383 349.719 289.773 349.934 289.367 350.363 c 288.961 350.797 + 288.758 351.465 288.758 352.375 c 288.758 363.207 l 288.758 364.141 288.961 + 364.812 289.367 365.23 c 289.773 365.652 290.383 365.863 291.199 365.863 + c h +319.539 372.25 m 315.785 372.25 312.883 371.422 310.836 369.773 c 308.793 + 368.125 307.773 365.445 307.773 361.734 c 307.773 349.719 l 305.98 349.719 + l 305.98 343.836 l 319.254 343.836 l 319.254 349.719 l 317.82 349.719 l + 317.82 363.566 l 317.82 364.355 317.992 364.938 318.332 365.312 c 318.684 + 365.68 319.203 365.863 319.898 365.863 c 320.594 365.863 321.113 365.68 + 321.457 365.312 c 321.805 364.938 321.98 364.359 321.98 363.566 c 321.98 + 349.719 l 320.543 349.719 l 320.543 343.836 l 332.852 343.836 l 332.852 + 349.719 l 331.055 349.719 l 331.055 361.734 l 331.055 365.441 330.062 368.121 + 328.078 369.773 c 326.094 371.422 323.25 372.25 319.539 372.25 c h +334.141 371.746 m 334.141 365.863 l 335.938 365.863 l 335.938 349.719 l + 334.141 349.719 l 334.141 343.836 l 350.609 343.836 l 353.695 343.836 356.047 + 344.469 357.676 345.738 c 359.301 347.004 360.117 349.062 360.113 351.906 + c 360.113 353.508 359.793 354.898 359.148 356.07 c 358.504 357.242 357.582 + 358.055 356.383 358.508 c 356.422 358.867 l 358.719 359.227 359.867 360.637 + 359.863 363.102 c 359.863 365.863 l 361.551 365.863 l 361.551 371.746 l + 350.18 371.746 l 350.18 363.316 l 350.18 362.383 350.039 361.676 349.762 + 361.199 c 349.488 360.719 349.059 360.395 348.473 360.23 c 347.887 360.062 + 347.059 359.98 345.98 359.98 c 345.98 365.863 l 348.348 365.863 l 348.348 + 371.746 l h +345.98 355.602 m 347.918 355.602 l 348.609 355.602 349.129 355.418 349.477 + 355.043 c 349.824 354.676 350 354.098 350 353.305 c 350 352.016 l 350 351.227 + 349.824 350.645 349.477 350.273 c 349.133 349.902 348.613 349.719 347.918 + 349.719 c 345.98 349.719 l h +376.762 372.25 m 372.242 372.25 368.754 371.102 366.301 368.805 c 363.852 + 366.508 362.625 362.836 362.625 357.789 c 362.625 348.152 367.316 343.332 + 376.691 343.332 c 378.965 343.332 381.074 343.609 383.02 344.156 c 384.973 + 344.707 386.426 345.316 387.379 345.988 c 387.379 354.957 l 378.773 354.957 + l 378.773 352.375 l 378.773 351.465 378.57 350.797 378.164 350.363 c 377.754 + 349.934 377.145 349.719 376.332 349.719 c 375.52 349.719 374.91 349.934 + 374.5 350.363 c 374.094 350.797 373.891 351.465 373.891 352.375 c 373.891 + 363.207 l 373.891 364.117 374.094 364.785 374.5 365.219 c 374.91 365.648 + 375.52 365.863 376.332 365.863 c 377.145 365.863 377.754 365.648 378.164 + 365.219 c 378.57 364.785 378.773 364.117 378.773 363.207 c 378.773 360.301 + l 387.379 360.301 l 387.379 369.594 l 386.398 370.262 384.945 370.871 383.02 + 371.422 c 381.094 371.973 379.008 372.25 376.762 372.25 c h +412.961 371.746 m 388.746 371.746 l 388.746 365.863 l 390.539 365.863 l + 390.539 349.719 l 388.746 349.719 l 388.746 343.836 l 412.961 343.836 l + 412.961 354.672 l 404.926 354.672 l 404.926 349.719 l 400.586 349.719 l + 400.586 355.387 l 403.742 355.387 l 403.742 359.477 l 400.586 359.477 l + 400.586 365.863 l 404.926 365.863 l 404.926 360.195 l 412.961 360.195 l + h +439.008 372.25 m 434.484 372.25 430.996 371.102 428.547 368.805 c 426.098 + 366.508 424.871 362.836 424.871 357.789 c 424.871 348.152 429.562 343.332 + 438.934 343.332 c 441.207 343.332 443.316 343.609 445.266 344.156 c 447.219 + 344.707 448.672 345.316 449.625 345.988 c 449.625 354.957 l 441.016 354.957 + l 441.016 352.375 l 441.016 351.465 440.812 350.797 440.406 350.363 c 439.996 + 349.934 439.387 349.719 438.578 349.719 c 437.766 349.719 437.156 349.934 + 436.746 350.363 c 436.34 350.797 436.137 351.465 436.137 352.375 c 436.137 + 363.207 l 436.137 364.117 436.34 364.785 436.746 365.219 c 437.156 365.648 + 437.766 365.863 438.578 365.863 c 439.391 365.863 440 365.648 440.406 365.219 + c 440.812 364.785 441.016 364.117 441.016 363.207 c 441.016 360.301 l 449.625 + 360.301 l 449.625 369.594 l 448.645 370.262 447.191 370.871 445.266 371.422 + c 443.34 371.973 441.254 372.25 439.008 372.25 c h +464.48 372.25 m 460.102 372.25 456.727 371.102 454.348 368.805 c 451.965 + 366.508 450.773 362.836 450.773 357.789 c 450.773 352.742 451.965 349.074 + 454.348 346.777 c 456.723 344.48 460.102 343.332 464.48 343.332 c 468.855 + 343.332 472.234 344.48 474.617 346.777 c 476.992 349.074 478.184 352.742 + 478.184 357.789 c 478.184 362.836 476.996 366.508 474.617 368.805 c 472.234 + 371.102 468.855 372.25 464.48 372.25 c h +464.48 365.863 m 465.293 365.863 465.902 365.648 466.309 365.219 c 466.719 + 364.785 466.922 364.117 466.918 363.207 c 466.918 352.375 l 466.918 351.465 + 466.715 350.797 466.309 350.363 c 465.902 349.934 465.293 349.719 464.48 + 349.719 c 463.668 349.719 463.059 349.934 462.648 350.363 c 462.242 350.797 + 462.039 351.465 462.039 352.375 c 462.039 363.207 l 462.039 364.141 462.242 + 364.812 462.648 365.23 c 463.059 365.652 463.668 365.863 464.48 365.863 + c h +500.07 349.719 m 500.07 343.836 l 511.836 343.836 l 511.836 349.719 l 510.043 + 349.719 l 510.043 371.746 l 499.961 371.746 l 489.449 355.566 l 489.449 + 365.863 l 491.172 365.863 l 491.172 371.746 l 479.402 371.746 l 479.402 + 365.863 l 481.199 365.863 l 481.199 349.719 l 479.402 349.719 l 479.402 + 343.836 l 492.355 343.836 l 501.789 358.223 l 501.789 349.719 l h +539.961 343.836 m 539.961 352.52 l 533.793 352.52 l 533.793 349.719 l 531.496 + 349.719 l 531.496 365.863 l 534.008 365.863 l 534.008 371.746 l 518.941 + 371.746 l 518.941 365.863 l 521.449 365.863 l 521.449 349.719 l 519.152 + 349.719 l 519.152 352.52 l 512.984 352.52 l 512.984 343.836 l h +565.398 371.746 m 541.184 371.746 l 541.184 365.863 l 542.977 365.863 l + 542.977 349.719 l 541.184 349.719 l 541.184 343.836 l 565.398 343.836 l + 565.398 354.672 l 557.363 354.672 l 557.363 349.719 l 553.023 349.719 l + 553.023 355.387 l 556.18 355.387 l 556.18 359.477 l 553.023 359.477 l 553.023 + 365.863 l 557.363 365.863 l 557.363 360.195 l 565.398 360.195 l h +587.426 349.719 m 587.426 343.836 l 599.195 343.836 l 599.195 349.719 l + 597.402 349.719 l 597.402 371.746 l 587.32 371.746 l 576.809 355.566 l +576.809 365.863 l 578.531 365.863 l 578.531 371.746 l 566.762 371.746 l +566.762 365.863 l 568.555 365.863 l 568.555 349.719 l 566.762 349.719 l +566.762 343.836 l 579.711 343.836 l 589.148 358.223 l 589.148 349.719 l +h +627.32 343.836 m 627.32 352.52 l 621.152 352.52 l 621.152 349.719 l 618.855 + 349.719 l 618.855 365.863 l 621.367 365.863 l 621.367 371.746 l 606.297 + 371.746 l 606.297 365.863 l 608.809 365.863 l 608.809 349.719 l 606.512 + 349.719 l 606.512 352.52 l 600.344 352.52 l 600.344 343.836 l h +650.426 372.25 m 648.129 372.25 645.957 372.051 643.91 371.652 c 641.867 + 371.262 640.297 370.812 639.195 370.312 c 639.195 363.207 l 647.09 363.207 + l 647.09 363.949 647.258 364.484 647.59 364.82 c 647.926 365.156 648.535 + 365.324 649.422 365.324 c 650.16 365.324 650.695 365.211 651.02 364.98 +c 651.34 364.758 651.5 364.418 651.504 363.961 c 651.504 363.578 651.348 + 363.246 651.035 362.973 c 650.723 362.699 650.188 362.422 649.422 362.133 + c 646.336 361.059 l 643.684 360.051 641.773 358.871 640.617 357.504 c 639.453 + 356.137 638.875 354.297 638.875 351.98 c 638.875 349.156 639.797 347.012 + 641.648 345.543 c 643.508 344.07 646.598 343.332 650.926 343.332 c 653.008 + 343.332 654.961 343.543 656.789 343.957 c 658.625 344.379 660.102 344.934 + 661.223 345.629 c 661.223 352.051 l 654.051 352.051 l 654.051 350.855 653.309 + 350.258 651.824 350.254 c 651.109 350.254 650.598 350.344 650.305 350.523 + c 650.004 350.703 649.852 351.023 649.852 351.477 c 649.852 351.883 650.023 + 352.207 650.367 352.445 c 650.715 352.684 651.285 352.938 652.074 353.199 + c 655.199 354.277 l 657.734 355.137 659.582 356.254 660.738 357.625 c 661.898 + 359.004 662.48 360.805 662.48 363.027 c 662.48 366.066 661.457 368.363 +659.41 369.918 c 657.367 371.473 654.371 372.25 650.426 372.25 c h +687.703 371.746 m 663.484 371.746 l 663.484 365.863 l 665.277 365.863 l + 665.277 349.719 l 663.484 349.719 l 663.484 343.836 l 687.703 343.836 l + 687.703 354.672 l 679.664 354.672 l 679.664 349.719 l 675.324 349.719 l + 675.324 355.387 l 678.48 355.387 l 678.48 359.477 l 675.324 359.477 l 675.324 + 365.863 l 679.664 365.863 l 679.664 360.195 l 687.703 360.195 l h +689.062 371.746 m 689.062 365.863 l 690.859 365.863 l 690.859 349.719 l + 689.062 349.719 l 689.062 343.836 l 705.531 343.836 l 708.617 343.836 710.973 + 344.469 712.598 345.738 c 714.227 347.004 715.039 349.062 715.039 351.906 + c 715.039 353.508 714.715 354.898 714.07 356.07 c 713.426 357.242 712.504 + 358.055 711.309 358.508 c 711.344 358.867 l 713.637 359.227 714.785 360.637 + 714.785 363.102 c 714.785 365.863 l 716.473 365.863 l 716.473 371.746 l + 705.098 371.746 l 705.098 363.316 l 705.098 362.383 704.961 361.676 704.684 + 361.199 c 704.41 360.719 703.984 360.395 703.398 360.23 c 702.812 360.062 + 701.98 359.98 700.902 359.98 c 700.902 365.863 l 703.273 365.863 l 703.273 + 371.746 l h +700.902 355.602 m 702.84 355.602 l 703.531 355.602 704.055 355.418 704.402 + 355.043 c 704.746 354.676 704.922 354.098 704.922 353.305 c 704.922 352.016 + l 704.922 351.227 704.746 350.645 704.402 350.273 c 704.055 349.902 703.531 + 349.719 702.84 349.719 c 700.902 349.719 l h +731.254 349.719 m 731.254 343.836 l 743.234 343.836 l 743.234 349.719 l + 741.801 349.719 l 735.379 371.746 l 723.754 371.746 l 717.332 349.719 l + 715.902 349.719 l 715.902 343.836 l 729.676 343.836 l 729.676 349.719 l + 727.809 349.719 l 730.285 361.734 l 730.645 361.734 l 733.121 349.719 l + h +768.602 371.746 m 744.383 371.746 l 744.383 365.863 l 746.176 365.863 l + 746.176 349.719 l 744.383 349.719 l 744.383 343.836 l 768.602 343.836 l + 768.602 354.672 l 760.566 354.672 l 760.566 349.719 l 756.223 349.719 l + 756.223 355.387 l 759.383 355.387 l 759.383 359.477 l 756.223 359.477 l + 756.223 365.863 l 760.566 365.863 l 760.566 360.195 l 768.602 360.195 l + h +769.965 371.746 m 769.965 365.863 l 771.758 365.863 l 771.758 349.719 l + 769.965 349.719 l 769.965 343.836 l 786.434 343.836 l 789.516 343.836 791.871 + 344.469 793.5 345.738 c 795.125 347.004 795.941 349.062 795.938 351.906 + c 795.938 353.508 795.617 354.898 794.973 356.07 c 794.328 357.242 793.406 + 358.055 792.207 358.508 c 792.242 358.867 l 794.539 359.227 795.688 360.637 + 795.688 363.102 c 795.688 365.863 l 797.375 365.863 l 797.375 371.746 l + 786 371.746 l 786 363.316 l 786 362.383 785.863 361.676 785.586 361.199 + c 785.312 360.719 784.883 360.395 784.293 360.23 c 783.711 360.062 782.879 + 359.98 781.805 359.98 c 781.805 365.863 l 784.172 365.863 l 784.172 371.746 + l h +781.805 355.602 m 783.742 355.602 l 784.434 355.602 784.953 355.418 785.297 + 355.043 c 785.645 354.676 785.82 354.098 785.82 353.305 c 785.82 352.016 + l 785.82 351.227 785.645 350.645 785.297 350.273 c 784.953 349.902 784.434 + 349.719 783.742 349.719 c 781.805 349.719 l h +781.805 355.602 m f +Q q +228.086 139.93 693.531 92.387 re W n +0.537255 0.576471 0.619608 rg +322.574 167.91 m 322.574 172.5 321.223 176.379 318.512 179.539 c 315.805 + 182.703 312.273 185.332 307.918 187.438 c 303.578 189.523 298.691 191.16 + 293.258 192.355 c 287.844 193.551 282.445 194.434 277.062 195.004 c 271.68 + 195.578 266.594 195.945 261.797 196.113 c 256.988 196.285 253.027 196.367 + 249.914 196.367 c 249.914 199.242 249.891 202.051 249.84 204.793 c 249.805 + 207.551 249.789 210.371 249.789 213.246 c 249.789 213.984 249.789 215.254 + 249.789 217.055 c 249.789 218.855 249.832 220.766 249.914 222.781 c 250 + 224.801 250.184 226.668 250.469 228.383 c 250.758 230.117 251.145 231.227 + 251.633 231.715 c 230.059 231.715 l 230.566 231.227 230.977 229.629 231.297 + 226.918 c 231.633 224.195 231.902 220.949 232.105 217.18 c 232.305 213.398 + 232.434 209.293 232.48 204.871 c 232.516 200.43 232.531 196.215 232.531 + 192.23 c 232.531 188.242 232.516 184.695 232.48 181.582 c 232.434 178.453 + 232.406 176.32 232.406 175.176 c 232.406 174.434 232.434 173.125 232.48 + 171.238 c 232.516 169.34 232.516 167.16 232.48 164.703 c 232.434 162.234 + 232.348 159.641 232.23 156.934 c 232.113 154.227 231.887 151.719 231.547 + 149.418 c 231.23 147.129 230.773 145.203 230.188 143.641 c 229.613 142.074 + 228.918 141.168 228.094 140.914 c 245.828 140.914 l 246.988 140.914 248.535 + 140.898 250.469 140.863 c 252.387 140.812 253.926 140.871 255.086 141.039 + c 259.426 141.039 263.734 141.125 268.004 141.293 c 272.277 141.461 276.59 + 141.746 280.945 142.148 c 283.488 142.402 286.305 142.73 289.398 143.133 + c 292.477 143.555 295.555 144.152 298.633 144.926 c 301.711 145.699 304.688 + 146.707 307.562 147.953 c 310.441 149.18 312.988 150.695 315.207 152.496 + c 317.41 154.312 319.195 156.488 320.559 159.027 c 321.902 161.586 322.574 + 164.547 322.574 167.91 c h +300.297 167.781 m 300.297 165.395 299.43 163.402 297.699 161.805 c 295.984 + 160.207 293.789 158.895 291.113 157.867 c 288.441 156.844 285.438 156.059 + 282.109 155.523 c 278.793 154.984 275.516 154.613 272.27 154.41 c 269.023 + 154.211 266.047 154.109 263.336 154.109 c 260.629 154.109 258.492 154.109 + 256.93 154.109 c 251.027 154.109 l 250.438 159.121 250.109 164.133 250.043 + 169.145 c 249.957 174.141 249.914 179.145 249.914 184.156 c 253.195 184.156 + 256.457 184.113 259.703 184.031 c 262.949 183.945 266.215 183.785 269.492 + 183.551 c 271.883 183.383 274.84 183.098 278.375 182.691 c 281.906 182.273 + 285.285 181.531 288.516 180.473 c 291.762 179.398 294.539 177.859 296.84 + 175.855 c 299.145 173.84 300.297 171.148 300.297 167.781 c h +437.898 140.914 m 436.418 141.738 434.281 143.57 431.488 146.414 c 428.695 + 149.238 425.578 152.621 422.129 156.555 c 418.664 160.508 415.047 164.781 + 411.281 169.371 c 407.496 173.98 403.879 178.438 400.434 182.742 c 396.984 + 187.051 393.863 190.953 391.07 194.449 c 388.281 197.93 386.188 200.582 + 384.789 202.398 c 384.707 204.113 384.664 205.836 384.664 207.57 c 384.664 + 209.301 384.664 211.066 384.664 212.867 c 384.664 213.605 384.664 214.918 + 384.664 216.805 c 384.664 218.688 384.723 220.637 384.84 222.656 c 384.977 + 224.676 385.16 226.566 385.395 228.332 c 385.648 230.098 386.059 231.227 + 386.633 231.715 c 364.102 231.715 l 364.504 231.309 364.852 230.367 365.137 + 228.887 c 365.422 227.406 365.648 225.66 365.816 223.641 c 365.984 221.637 + 366.086 219.484 366.121 217.18 c 366.172 214.879 366.211 212.699 366.246 + 210.648 c 366.297 208.594 366.32 206.77 366.32 205.172 c 366.32 203.574 + 366.32 202.438 366.32 201.766 c 364.926 200.051 362.832 197.445 360.039 + 193.945 c 357.25 190.465 354.102 186.605 350.605 182.367 c 347.121 178.145 + 343.488 173.738 339.707 169.145 c 335.922 164.535 332.305 160.281 328.855 + 156.379 c 325.41 152.477 322.289 149.113 319.496 146.289 c 316.703 143.445 + 314.609 141.652 313.215 140.914 c 318.145 140.914 323.012 140.938 327.824 + 140.988 c 332.617 141.023 337.477 141 342.406 140.914 c 342.086 141.082 + 341.926 141.453 341.926 142.023 c 341.926 143.27 342.625 145.078 344.02 + 147.449 c 345.414 149.836 347.184 152.527 349.316 155.523 c 351.453 158.516 + 353.832 161.66 356.457 164.957 c 359.082 168.238 361.629 171.355 364.102 + 174.316 c 366.559 177.262 368.812 179.883 370.863 182.188 c 372.914 184.492 + 374.438 186.176 375.43 187.234 c 376.035 187.234 l 377.027 186.176 378.531 + 184.492 380.551 182.188 c 382.555 179.883 384.805 177.262 387.312 174.316 + c 389.82 171.355 392.367 168.238 394.957 164.957 c 397.547 161.66 399.926 + 158.516 402.098 155.523 c 404.266 152.527 406.031 149.836 407.395 147.449 + c 408.758 145.078 409.438 143.27 409.438 142.023 c 409.438 141.535 409.27 + 141.168 408.934 140.914 c 413.777 141 418.605 141.023 423.414 140.988 c + 428.207 140.938 433.035 140.914 437.898 140.914 c h +506.367 182.316 m 506.789 180.516 507.16 178.73 507.477 176.965 c 507.816 + 175.199 507.984 173.367 507.984 171.465 c 507.984 167.781 507.32 164.73 + 505.988 162.309 c 504.68 159.871 502.895 157.934 500.641 156.504 c 498.387 + 155.074 495.797 154.094 492.871 153.555 c 489.961 153.016 486.91 152.746 + 483.711 152.746 c 481.746 152.746 479.484 152.891 476.926 153.176 c 474.387 + 153.461 471.781 153.914 469.105 154.539 c 466.43 155.16 463.781 155.957 + 461.156 156.934 c 458.535 157.926 456.215 159.164 454.195 160.645 c 452.191 + 162.125 450.555 163.863 449.273 165.867 c 447.996 167.883 447.359 170.164 + 447.359 172.703 c 447.359 174.922 448.156 176.832 449.754 178.43 c 451.367 + 180.027 453.43 181.406 455.938 182.566 c 458.441 183.711 461.25 184.652 + 464.363 185.395 c 467.492 186.133 470.57 186.773 473.598 187.309 c 476.641 + 187.832 479.473 188.242 482.098 188.547 c 484.723 188.832 486.816 189.094 + 488.379 189.328 c 490.348 189.664 492.754 190.059 495.594 190.516 c 498.422 + 190.969 501.355 191.559 504.402 192.281 c 507.445 193.02 510.465 193.93 + 513.457 195.004 c 516.453 196.066 519.145 197.359 521.531 198.891 c 523.902 + 200.402 525.828 202.172 527.309 204.188 c 528.789 206.191 529.527 208.512 + 529.527 211.152 c 529.527 213.945 528.773 216.406 527.258 218.543 c 525.727 + 220.664 523.719 222.531 521.227 224.145 c 518.723 225.742 515.922 227.055 + 512.828 228.082 c 509.75 229.105 506.629 229.945 503.469 230.602 c 500.305 + 231.258 497.293 231.715 494.434 231.965 c 491.559 232.199 489.129 232.32 + 487.145 232.32 c 478.449 232.32 469.828 231.605 461.285 230.176 c 452.738 + 228.746 444.406 226.422 436.281 223.211 c 435.457 222.891 434.516 222.504 + 433.457 222.051 c 432.379 221.598 431.27 221.125 430.125 220.637 c 428.965 + 220.133 427.855 219.723 426.797 219.402 c 425.719 219.066 424.777 218.855 + 423.969 218.77 c 424.457 218.281 425.215 217.586 426.242 216.676 c 427.266 + 215.785 428.293 214.801 429.32 213.727 c 430.344 212.664 431.285 211.656 + 432.145 210.699 c 433.02 209.754 433.531 209.039 433.684 208.555 c 440.914 + 212.992 448.82 216.281 457.398 218.418 c 465.977 220.555 474.496 221.621 + 482.957 221.621 c 484.352 221.621 486.555 221.512 489.566 221.293 c 492.559 + 221.094 495.555 220.664 498.547 220.008 c 501.543 219.352 504.172 218.426 + 506.445 217.23 c 508.699 216.039 509.824 214.457 509.824 212.488 c 509.824 + 209.863 508.656 207.77 506.316 206.207 c 503.98 204.641 500.875 203.348 + 497.008 202.32 c 493.156 201.297 488.766 200.48 483.84 199.875 c 478.91 + 199.25 473.875 198.57 468.727 197.832 c 463.598 197.09 458.566 196.207 +453.641 195.184 c 448.711 194.156 444.32 192.758 440.469 190.992 c 436.602 + 189.227 433.5 186.992 431.16 184.281 c 428.824 181.574 427.652 178.168 +427.652 174.066 c 427.652 169.707 428.535 165.848 430.305 162.484 c 432.07 + 159.121 434.449 156.16 437.441 153.605 c 440.438 151.066 443.844 148.93 + 447.66 147.195 c 451.496 145.48 455.48 144.086 459.617 143.008 c 463.773 + 141.949 467.902 141.176 472.008 140.688 c 476.109 140.184 479.887 139.93 + 483.336 139.93 c 489.086 139.93 494.543 140.383 499.707 141.293 c 504.887 + 142.199 509.387 143.84 513.207 146.211 c 517.023 148.602 520.059 151.93 + 522.312 156.203 c 524.582 160.477 525.719 165.977 525.719 172.703 c 525.719 + 174.352 525.652 175.957 525.516 177.52 c 525.398 179.07 525.258 180.668 + 525.09 182.316 c h +636.195 140.914 m 635.137 140.914 634.281 141.863 633.625 143.766 c 632.969 + 145.648 632.43 148.027 632.008 150.906 c 631.605 153.781 631.301 156.961 + 631.102 160.441 c 630.898 163.941 630.754 167.285 630.672 170.484 c 630.586 + 173.695 630.547 176.527 630.547 178.984 c 630.547 181.457 630.547 183.141 + 630.547 184.031 c 630.547 188.957 630.52 193.828 630.469 198.637 c 630.438 + 203.449 630.418 208.316 630.418 213.246 c 630.418 213.902 630.418 215.172 + 630.418 217.055 c 630.418 218.938 630.461 220.891 630.547 222.91 c 630.629 + 224.926 630.816 226.793 631.102 228.508 c 631.387 230.242 631.773 231.309 + 632.262 231.715 c 610.715 231.715 l 611.203 231.309 611.59 230.098 611.875 + 228.082 c 612.16 226.062 612.391 223.684 612.559 220.941 c 612.727 218.184 + 612.852 215.207 612.938 212.008 c 613.004 208.797 613.035 205.754 613.035 + 202.875 c 613.035 200.016 613.035 197.496 613.035 195.309 c 613.035 193.137 + 613.035 191.684 613.035 190.941 c 604.746 190.605 596.496 190.398 588.285 + 190.312 c 580.078 190.227 571.828 190.188 563.539 190.188 c 558.973 190.188 + l 558.973 194.055 558.945 197.883 558.895 201.664 c 558.863 205.434 558.844 + 209.25 558.844 213.121 c 558.844 213.777 558.844 215.047 558.844 216.93 + c 558.844 218.812 558.887 220.781 558.973 222.832 c 559.055 224.902 559.238 + 226.793 559.527 228.508 c 559.812 230.242 560.199 231.309 560.688 231.715 + c 539.141 231.715 l 539.629 231.227 540.039 229.645 540.379 226.969 c 540.695 + 224.297 540.957 221.074 541.16 217.309 c 541.359 213.523 541.488 209.41 + 541.539 204.969 c 541.57 200.547 541.59 196.316 541.59 192.281 c 541.59 + 188.262 541.57 184.711 541.539 181.633 c 541.488 178.555 541.461 176.402 + 541.461 175.176 c 541.461 174.52 541.488 173.223 541.539 171.289 c 541.57 + 169.355 541.57 167.16 541.539 164.703 c 541.488 162.234 541.402 159.641 + 541.285 156.934 c 541.168 154.227 540.941 151.719 540.605 149.418 c 540.285 + 147.129 539.84 145.203 539.266 143.641 c 538.68 142.074 537.98 141.168 +537.172 140.914 c 564.75 140.914 l 563.773 140.914 562.957 141.738 562.301 + 143.387 c 561.645 145.035 561.105 147.129 560.688 149.668 c 560.281 152.207 + 559.953 155.027 559.703 158.121 c 559.469 161.199 559.309 164.133 559.223 + 166.926 c 559.141 169.719 559.098 172.199 559.098 174.367 c 559.098 176.539 + 559.098 177.992 559.098 178.73 c 568.043 178.902 577.02 179.027 586.016 + 179.109 c 594.996 179.195 604.004 179.109 613.035 178.859 c 613.035 175.176 + l 613.035 174.434 613.062 173.125 613.113 171.238 c 613.145 169.34 613.145 + 167.16 613.113 164.703 c 613.062 162.234 612.977 159.641 612.859 156.934 + c 612.742 154.227 612.516 151.719 612.18 149.418 c 611.859 147.129 611.414 + 145.203 610.84 143.641 c 610.254 142.074 609.555 141.168 608.746 140.914 + c h +735.246 231.461 m 645.809 231.715 l 646.297 231.227 646.707 229.645 647.047 + 226.969 c 647.363 224.297 647.633 221.074 647.852 217.309 c 648.055 213.523 + 648.172 209.41 648.207 204.969 c 648.258 200.547 648.281 196.316 648.281 + 192.281 c 648.281 188.262 648.258 184.711 648.207 181.633 c 648.172 178.555 + 648.156 176.402 648.156 175.176 c 648.156 174.434 648.156 173.156 648.156 + 171.34 c 648.156 169.539 648.129 167.531 648.078 165.309 c 648.047 163.09 + 647.988 160.727 647.902 158.223 c 647.82 155.715 647.676 153.402 647.473 + 151.281 c 647.273 149.148 647.004 147.273 646.668 145.656 c 646.348 144.059 + 645.934 142.973 645.43 142.402 c 645.195 142.148 644.934 141.906 644.648 + 141.672 c 644.363 141.418 644.094 141.168 643.84 140.914 c 733.277 141.168 + l 731.914 154.84 l 731.512 154.672 730.504 154.547 728.887 154.461 c 727.289 + 154.395 725.348 154.32 723.059 154.234 c 720.758 154.152 718.293 154.082 + 715.668 154.031 c 713.027 154 710.539 153.984 708.199 153.984 c 705.863 + 153.984 703.793 153.984 701.996 153.984 c 700.176 153.984 698.941 153.984 + 698.285 153.984 c 687.773 153.984 677.219 154.109 666.625 154.359 c 666.219 + 158.465 665.977 162.543 665.891 166.598 c 665.809 170.668 665.766 174.797 + 665.766 178.984 c 722.43 178.379 l 722.305 191.547 l 721.984 191.465 721.184 + 191.363 719.906 191.246 c 718.629 191.129 717.133 191.043 715.414 190.992 + c 713.684 190.961 711.816 190.918 709.816 190.867 c 707.797 190.832 705.906 + 190.816 704.137 190.816 c 702.371 190.816 700.793 190.816 699.395 190.816 + c 698 190.816 697.059 190.816 696.57 190.816 c 686.293 190.816 675.984 +190.941 665.641 191.195 c 665.641 194.879 665.621 198.555 665.59 202.219 + c 665.539 205.871 665.512 209.547 665.512 213.246 c 665.512 218.164 l 671.348 + 218.418 677.16 218.543 682.945 218.543 c 688.73 218.543 694.543 218.543 + 700.379 218.543 c 700.953 218.543 702.145 218.543 703.961 218.543 c 705.762 + 218.543 707.855 218.543 710.242 218.543 c 712.617 218.543 715.098 218.52 + 717.688 218.469 c 720.277 218.434 722.723 218.391 725.027 218.344 c 727.316 + 218.309 729.266 218.25 730.883 218.164 c 732.48 218.082 733.48 217.953 +733.883 217.785 c h +827.129 231.461 m 744.102 231.715 l 744.605 231.227 745.02 229.645 745.336 + 226.969 c 745.676 224.297 745.941 221.074 746.145 217.309 c 746.348 213.523 + 746.465 209.438 746.5 205.047 c 746.547 200.656 746.574 196.441 746.574 + 192.406 c 746.574 188.387 746.547 184.82 746.5 181.711 c 746.465 178.582 + 746.449 176.402 746.449 175.176 c 746.449 174.52 746.465 173.223 746.5 +171.289 c 746.547 169.355 746.547 167.16 746.5 164.703 c 746.465 162.234 + 746.391 159.641 746.27 156.934 c 746.137 154.227 745.91 151.719 745.59 +149.418 c 745.254 147.129 744.801 145.203 744.227 143.641 c 743.656 142.074 + 742.957 141.168 742.133 140.914 c 769.734 140.914 l 768.656 140.914 767.773 + 141.863 767.086 143.766 c 766.379 145.648 765.824 148.027 765.418 150.906 + c 765.016 153.781 764.703 156.961 764.488 160.441 c 764.285 163.941 764.141 + 167.285 764.059 170.484 c 763.973 173.695 763.93 176.555 763.93 179.059 + c 763.93 181.566 763.93 183.266 763.93 184.156 c 763.93 189.824 763.871 + 195.492 763.754 201.16 c 763.637 206.828 763.652 212.496 763.805 218.164 + c 766.598 218.332 769.188 218.434 771.574 218.469 c 773.965 218.52 776.301 + 218.543 778.59 218.543 c 780.895 218.543 783.258 218.543 785.68 218.543 + c 788.102 218.543 790.707 218.543 793.5 218.543 c 794.07 218.543 795.223 + 218.543 796.957 218.543 c 798.672 218.543 800.664 218.543 802.934 218.543 + c 805.188 218.543 807.586 218.52 810.125 218.469 c 812.684 218.434 815.047 + 218.391 817.215 218.344 c 819.402 218.309 821.27 218.25 822.816 218.164 + c 824.379 218.082 825.371 217.953 825.793 217.785 c h +920.25 154.84 m 919.848 154.672 918.848 154.547 917.25 154.461 c 915.648 + 154.395 913.699 154.32 911.395 154.234 c 909.09 154.152 906.625 154.082 + 904.004 154.031 c 901.379 154 898.891 153.984 896.535 153.984 c 894.195 + 153.984 892.129 153.984 890.328 153.984 c 888.512 153.984 887.277 153.984 + 886.621 153.984 c 876.109 153.984 865.562 154.109 854.984 154.359 c 854.562 + 158.465 854.309 162.543 854.227 166.598 c 854.141 170.668 854.102 174.797 + 854.102 178.984 c 910.031 178.379 l 909.906 191.547 l 909.418 191.379 907.922 + 191.238 905.414 191.121 c 902.91 191.004 900.219 190.918 897.344 190.867 + c 894.465 190.832 891.715 190.816 889.094 190.816 c 886.469 190.816 884.785 + 190.816 884.047 190.816 c 874.105 190.816 864.082 190.941 853.973 191.195 + c 853.973 194.879 853.957 198.555 853.922 202.219 c 853.891 205.871 853.871 + 209.547 853.871 213.246 c 853.871 213.902 853.871 215.172 853.871 217.055 + c 853.871 218.938 853.906 220.891 853.973 222.91 c 854.059 224.926 854.242 + 226.793 854.527 228.508 c 854.832 230.242 855.227 231.309 855.715 231.715 + c 834.145 231.715 l 834.648 231.227 835.059 229.645 835.379 226.969 c 835.715 + 224.297 835.984 221.074 836.188 217.309 c 836.391 213.523 836.516 209.41 + 836.566 204.969 c 836.598 200.547 836.617 196.316 836.617 192.281 c 836.617 + 188.262 836.598 184.711 836.566 181.633 c 836.516 178.555 836.488 176.402 + 836.488 175.176 c 836.488 174.434 836.488 173.156 836.488 171.34 c 836.488 + 169.539 836.473 167.531 836.441 165.309 c 836.391 163.09 836.32 160.727 + 836.238 158.223 c 836.152 155.715 836.012 153.402 835.809 151.281 c 835.605 + 149.148 835.34 147.273 835 145.656 c 834.684 144.059 834.277 142.973 833.789 + 142.402 c 833.539 142.148 833.27 141.906 832.984 141.672 c 832.695 141.418 + 832.43 141.168 832.176 140.914 c 921.613 141.168 l h +920.25 154.84 m f +Q q +78.594 122.285 127.68 127.68 re W n +0.870588 g +158.395 186.125 m 158.395 234.004 l 150.414 234.004 l 150.414 154.203 l + 182.336 154.203 l 182.336 147.953 l 197.898 147.953 l 195.547 145.625 l + 197.941 143.297 l 182.336 143.297 l 182.336 122.285 l 134.457 122.285 l + 134.457 234.004 l 126.477 234.004 l 126.477 170.164 l 78.594 170.164 l +78.594 202.086 l 110.516 202.086 l 110.516 249.965 l 174.355 249.965 l 174.355 + 218.043 l 206.277 218.043 l 206.277 186.125 l h +171.281 129.379 m 176.719 129.379 l 176.719 134.816 l 171.281 134.816 l + h +161.59 129.379 m 167.027 129.379 l 167.027 134.816 l 161.59 134.816 l h +89.531 183.109 m 84.094 183.109 l 84.094 177.672 l 89.531 177.672 l h +98.871 183.109 m 93.434 183.109 l 93.434 177.672 l 98.871 177.672 l h +191.32 198.715 m 185.883 198.715 l 185.883 193.277 l 191.32 193.277 l h +200.66 198.715 m 195.223 198.715 l 195.223 193.277 l 200.66 193.277 l h +200.66 198.715 m f +Q Q +showpage +%%Trailer +end +%%EOF diff --git a/src/frontend/static/images/eps/logo-white.eps b/src/frontend/static/images/eps/logo-white.eps new file mode 100644 index 0000000..bd6c421 --- /dev/null +++ b/src/frontend/static/images/eps/logo-white.eps @@ -0,0 +1,545 @@ +%!PS-Adobe-3.0 EPSF-3.0 +%%Creator: cairo 1.16.0 (https://cairographics.org) +%%CreationDate: Sat Nov 26 04:35:44 2022 +%%Pages: 1 +%%DocumentData: Clean7Bit +%%LanguageLevel: 2 +%%BoundingBox: 0 0 1000 1000 +%%EndComments +%%BeginProlog +50 dict begin +/q { gsave } bind def +/Q { grestore } bind def +/cm { 6 array astore concat } bind def +/w { setlinewidth } bind def +/J { setlinecap } bind def +/j { setlinejoin } bind def +/M { setmiterlimit } bind def +/d { setdash } bind def +/m { moveto } bind def +/l { lineto } bind def +/c { curveto } bind def +/h { closepath } bind def +/re { exch dup neg 3 1 roll 5 3 roll moveto 0 rlineto + 0 exch rlineto 0 rlineto closepath } bind def +/S { stroke } bind def +/f { fill } bind def +/f* { eofill } bind def +/n { newpath } bind def +/W { clip } bind def +/W* { eoclip } bind def +/BT { } bind def +/ET { } bind def +/BDC { mark 3 1 roll /BDC pdfmark } bind def +/EMC { mark /EMC pdfmark } bind def +/cairo_store_point { /cairo_point_y exch def /cairo_point_x exch def } def +/Tj { show currentpoint cairo_store_point } bind def +/TJ { + { + dup + type /stringtype eq + { show } { -0.001 mul 0 cairo_font_matrix dtransform rmoveto } ifelse + } forall + currentpoint cairo_store_point +} bind def +/cairo_selectfont { cairo_font_matrix aload pop pop pop 0 0 6 array astore + cairo_font exch selectfont cairo_point_x cairo_point_y moveto } bind def +/Tf { pop /cairo_font exch def /cairo_font_matrix where + { pop cairo_selectfont } if } bind def +/Td { matrix translate cairo_font_matrix matrix concatmatrix dup + /cairo_font_matrix exch def dup 4 get exch 5 get cairo_store_point + /cairo_font where { pop cairo_selectfont } if } bind def +/Tm { 2 copy 8 2 roll 6 array astore /cairo_font_matrix exch def + cairo_store_point /cairo_font where { pop cairo_selectfont } if } bind def +/g { setgray } bind def +/rg { setrgbcolor } bind def +/d1 { setcachedevice } bind def +/cairo_data_source { + CairoDataIndex CairoData length lt + { CairoData CairoDataIndex get /CairoDataIndex CairoDataIndex 1 add def } + { () } ifelse +} def +/cairo_flush_ascii85_file { cairo_ascii85_file status { cairo_ascii85_file flushfile } if } def +/cairo_image { image cairo_flush_ascii85_file } def +/cairo_imagemask { imagemask cairo_flush_ascii85_file } def +%%EndProlog +%%BeginSetup +%%EndSetup +%%Page: 1 1 +%%BeginPageSetup +%%PageBoundingBox: 0 0 1000 1000 +%%EndPageSetup +q 0 0 1000 1000 rectclip +1 0 0 -1 0 1000 cm q +0 g +0 0 1000 1000 rectfill +Q q +150.312 369.449 699.523 253.551 re W n +0.537255 0.576471 0.619608 rg +150.312 622.469 m 150.312 369.449 l 849.836 369.449 l 849.836 622.469 l + 725.656 622.469 l 725.656 616.637 l 844.004 616.637 l 844.004 375.281 l + 156.145 375.281 l 156.145 616.637 l 222.301 616.637 l 222.301 622.469 l + h +150.312 622.469 m f +Q q +239 609 470 21.023 re W n +1 g +249.391 630.023 m 246.328 630.023 243.965 629.223 242.301 627.613 c 240.633 + 626.004 239.801 623.434 239.801 619.902 c 239.801 616.371 240.633 613.801 + 242.301 612.191 c 243.965 610.586 246.328 609.781 249.391 609.785 c 252.457 + 609.785 254.82 610.586 256.488 612.191 c 258.152 613.801 258.984 616.371 + 258.984 619.902 c 258.984 623.434 258.156 626.004 256.488 627.613 c 254.82 + 629.223 252.453 630.023 249.391 630.023 c h +249.391 625.555 m 249.961 625.555 250.387 625.402 250.672 625.102 c 250.961 + 624.801 251.102 624.332 251.102 623.695 c 251.102 616.113 l 251.102 615.477 + 250.961 615.008 250.672 614.707 c 250.387 614.402 249.961 614.254 249.391 + 614.254 c 248.824 614.254 248.398 614.402 248.109 614.707 c 247.824 615.008 + 247.684 615.477 247.684 616.113 c 247.684 623.695 l 247.684 624.348 247.824 + 624.82 248.109 625.113 c 248.398 625.406 248.824 625.555 249.391 625.555 + c h +259.84 629.672 m 259.84 625.555 l 261.094 625.555 l 261.094 614.254 l 259.84 + 614.254 l 259.84 610.133 l 270.863 610.133 l 273.023 610.133 274.672 610.598 + 275.812 611.527 c 276.949 612.457 277.52 613.961 277.52 616.035 c 277.52 + 618.113 276.949 619.613 275.812 620.539 c 274.676 621.473 273.023 621.938 + 270.863 621.938 c 268.125 621.938 l 268.125 625.555 l 270.539 625.555 l + 270.539 629.672 l h +268.125 618.371 m 268.98 618.371 l 269.953 618.371 270.438 617.836 270.438 + 616.766 c 270.438 615.859 l 270.438 615.309 270.316 614.902 270.074 614.641 + c 269.832 614.383 269.465 614.254 268.98 614.254 c 268.125 614.254 l h +295.324 629.672 m 278.371 629.672 l 278.371 625.555 l 279.629 625.555 l + 279.629 614.254 l 278.371 614.254 l 278.371 610.133 l 295.324 610.133 l + 295.324 617.719 l 289.699 617.719 l 289.699 614.254 l 286.66 614.254 l +286.66 618.223 l 288.871 618.223 l 288.871 621.082 l 286.66 621.082 l 286.66 + 625.555 l 289.699 625.555 l 289.699 621.586 l 295.324 621.586 l h +310.742 614.254 m 310.742 610.133 l 318.98 610.133 l 318.98 614.254 l 317.727 + 614.254 l 317.727 629.672 l 310.668 629.672 l 303.309 618.348 l 303.309 + 625.555 l 304.516 625.555 l 304.516 629.672 l 296.277 629.672 l 296.277 + 625.555 l 297.535 625.555 l 297.535 614.254 l 296.277 614.254 l 296.277 + 610.133 l 305.344 610.133 l 311.949 620.207 l 311.949 614.254 l h +335.254 630.023 m 333.648 630.023 332.129 629.883 330.699 629.605 c 329.266 + 629.332 328.164 629.02 327.395 628.668 c 327.395 623.695 l 332.918 623.695 + l 332.918 624.215 333.035 624.59 333.27 624.824 c 333.508 625.059 333.934 + 625.176 334.551 625.176 c 335.07 625.176 335.445 625.098 335.664 624.938 + c 335.895 624.781 336.008 624.543 336.008 624.223 c 336.008 623.953 335.902 + 623.723 335.684 623.531 c 335.465 623.34 335.086 623.145 334.551 622.941 + c 332.391 622.191 l 330.535 621.488 329.199 620.66 328.383 619.703 c 327.574 + 618.746 327.168 617.457 327.168 615.836 c 327.168 613.859 327.816 612.355 + 329.117 611.328 c 330.414 610.297 332.578 609.785 335.605 609.785 c 337.062 + 609.785 338.43 609.93 339.715 610.219 c 340.992 610.516 342.027 610.906 + 342.812 611.391 c 342.812 615.887 l 337.793 615.887 l 337.793 615.047 337.273 + 614.629 336.234 614.629 c 335.734 614.629 335.375 614.691 335.164 614.816 + c 334.957 614.941 334.852 615.168 334.852 615.484 c 334.852 615.77 334.977 + 615.992 335.219 616.16 c 335.461 616.328 335.859 616.504 336.41 616.691 + c 338.594 617.441 l 340.371 618.047 341.664 618.828 342.477 619.789 c 343.285 + 620.75 343.691 622.012 343.691 623.57 c 343.691 625.695 342.977 627.305 + 341.547 628.395 c 340.117 629.48 338.016 630.023 335.254 630.023 c h +353.84 630.023 m 350.773 630.023 348.41 629.223 346.746 627.613 c 345.078 + 626.004 344.246 623.434 344.246 619.902 c 344.246 616.371 345.078 613.801 + 346.746 612.191 c 348.41 610.586 350.773 609.781 353.84 609.785 c 356.902 + 609.785 359.266 610.586 360.934 612.191 c 362.598 613.801 363.43 616.371 + 363.434 619.902 c 363.434 623.434 362.602 626.004 360.934 627.613 c 359.266 + 629.223 356.902 630.023 353.84 630.023 c h +353.84 625.555 m 354.406 625.555 354.836 625.402 355.121 625.102 c 355.406 + 624.801 355.547 624.332 355.547 623.695 c 355.547 616.113 l 355.547 615.477 + 355.406 615.008 355.121 614.707 c 354.836 614.402 354.406 614.254 353.84 + 614.254 c 353.27 614.254 352.844 614.402 352.559 614.707 c 352.273 615.008 + 352.129 615.477 352.129 616.113 c 352.129 623.695 l 352.129 624.348 352.273 + 624.82 352.559 625.113 c 352.844 625.406 353.27 625.555 353.84 625.555 +c h +373.68 630.023 m 371.051 630.023 369.02 629.445 367.586 628.293 c 366.156 + 627.137 365.441 625.262 365.441 622.664 c 365.441 614.254 l 364.184 614.254 + l 364.184 610.133 l 373.477 610.133 l 373.477 614.254 l 372.473 614.254 + l 372.473 623.945 l 372.473 624.5 372.594 624.906 372.832 625.168 c 373.078 + 625.426 373.441 625.555 373.93 625.555 c 374.414 625.555 374.777 625.426 + 375.02 625.168 c 375.262 624.906 375.387 624.5 375.387 623.945 c 375.387 + 614.254 l 374.383 614.254 l 374.383 610.133 l 382.996 610.133 l 382.996 + 614.254 l 381.738 614.254 l 381.738 622.664 l 381.738 625.258 381.043 627.137 + 379.656 628.293 c 378.266 629.445 376.273 630.023 373.68 630.023 c h +383.898 629.672 m 383.898 625.555 l 385.156 625.555 l 385.156 614.254 l + 383.898 614.254 l 383.898 610.133 l 395.426 610.133 l 397.586 610.133 399.234 + 610.578 400.375 611.465 c 401.512 612.355 402.082 613.793 402.082 615.785 + c 402.082 616.906 401.855 617.879 401.402 618.699 c 400.953 619.52 400.305 + 620.086 399.469 620.406 c 399.496 620.656 l 401.102 620.91 401.906 621.895 + 401.906 623.621 c 401.906 625.555 l 403.086 625.555 l 403.086 629.672 l + 395.125 629.672 l 395.125 623.77 l 395.125 623.117 395.027 622.625 394.832 + 622.289 c 394.641 621.953 394.34 621.727 393.93 621.613 c 393.523 621.492 + 392.941 621.438 392.188 621.438 c 392.188 625.555 l 393.844 625.555 l 393.844 + 629.672 l h +392.188 618.371 m 393.543 618.371 l 394.027 618.371 394.391 618.242 394.633 + 617.98 c 394.879 617.723 395 617.316 395 616.766 c 395 615.859 l 395 615.309 + 394.875 614.902 394.633 614.641 c 394.391 614.383 394.027 614.254 393.543 + 614.254 c 392.188 614.254 l h +413.734 630.023 m 410.57 630.023 408.129 629.223 406.41 627.613 c 404.695 + 626.004 403.84 623.434 403.84 619.902 c 403.84 613.156 407.121 609.781 +413.684 609.785 c 415.273 609.785 416.754 609.977 418.113 610.359 c 419.48 + 610.746 420.496 611.172 421.168 611.641 c 421.168 617.918 l 415.141 617.918 + l 415.141 616.113 l 415.141 615.477 415 615.008 414.715 614.707 c 414.43 + 614.402 414 614.254 413.434 614.254 c 412.863 614.254 412.438 614.402 412.152 + 614.707 c 411.867 615.008 411.723 615.477 411.723 616.113 c 411.723 623.695 + l 411.723 624.332 411.867 624.797 412.152 625.102 c 412.438 625.406 412.863 + 625.555 413.434 625.555 c 414 625.555 414.43 625.402 414.715 625.102 c +415 624.801 415.141 624.332 415.141 623.695 c 415.141 621.66 l 421.168 621.66 + l 421.168 628.164 l 420.48 628.633 419.461 629.059 418.113 629.445 c 416.766 + 629.832 415.309 630.023 413.734 630.023 c h +439.074 629.672 m 422.121 629.672 l 422.121 625.555 l 423.375 625.555 l + 423.375 614.254 l 422.121 614.254 l 422.121 610.133 l 439.074 610.133 l + 439.074 617.719 l 433.449 617.719 l 433.449 614.254 l 430.41 614.254 l +430.41 618.223 l 432.621 618.223 l 432.621 621.082 l 430.41 621.082 l 430.41 + 625.555 l 433.449 625.555 l 433.449 621.586 l 439.074 621.586 l h +457.305 630.023 m 454.141 630.023 451.699 629.223 449.984 627.613 c 448.27 + 626.004 447.41 623.434 447.41 619.902 c 447.41 613.156 450.691 609.781 +457.254 609.785 c 458.844 609.785 460.32 609.977 461.684 610.359 c 463.051 + 610.746 464.07 611.172 464.738 611.641 c 464.738 617.918 l 458.711 617.918 + l 458.711 616.113 l 458.711 615.477 458.57 615.008 458.285 614.707 c 458 + 614.402 457.57 614.254 457.004 614.254 c 456.434 614.254 456.008 614.402 + 455.723 614.707 c 455.438 615.008 455.297 615.477 455.297 616.113 c 455.297 + 623.695 l 455.297 624.332 455.438 624.797 455.723 625.102 c 456.008 625.406 + 456.434 625.555 457.004 625.555 c 457.574 625.555 458 625.402 458.285 625.102 + c 458.57 624.801 458.711 624.332 458.711 623.695 c 458.711 621.66 l 464.738 + 621.66 l 464.738 628.164 l 464.051 628.633 463.035 629.059 461.684 629.445 + c 460.34 629.832 458.879 630.023 457.305 630.023 c h +475.137 630.023 m 472.07 630.023 469.707 629.223 468.043 627.613 c 466.375 + 626.004 465.543 623.434 465.543 619.902 c 465.543 616.371 466.375 613.801 + 468.043 612.191 c 469.707 610.586 472.07 609.781 475.137 609.785 c 478.199 + 609.785 480.566 610.586 482.23 612.191 c 483.895 613.801 484.727 616.371 + 484.73 619.902 c 484.73 623.434 483.898 626.004 482.23 627.613 c 480.566 + 629.223 478.199 630.023 475.137 630.023 c h +475.137 625.555 m 475.703 625.555 476.133 625.402 476.418 625.102 c 476.703 + 624.801 476.844 624.332 476.844 623.695 c 476.844 616.113 l 476.844 615.477 + 476.699 615.008 476.418 614.707 c 476.133 614.402 475.703 614.254 475.137 + 614.254 c 474.566 614.254 474.141 614.402 473.855 614.707 c 473.57 615.008 + 473.426 615.477 473.426 616.113 c 473.426 623.695 l 473.426 624.348 473.57 + 624.82 473.855 625.113 c 474.141 625.406 474.566 625.555 475.137 625.555 + c h +500.047 614.254 m 500.047 610.133 l 508.285 610.133 l 508.285 614.254 l + 507.027 614.254 l 507.027 629.672 l 499.973 629.672 l 492.613 618.348 l + 492.613 625.555 l 493.82 625.555 l 493.82 629.672 l 485.582 629.672 l 485.582 + 625.555 l 486.84 625.555 l 486.84 614.254 l 485.582 614.254 l 485.582 610.133 + l 494.648 610.133 l 501.254 620.207 l 501.254 614.254 l h +527.973 610.133 m 527.973 616.211 l 523.652 616.211 l 523.652 614.254 l + 522.047 614.254 l 522.047 625.555 l 523.805 625.555 l 523.805 629.672 l + 513.258 629.672 l 513.258 625.555 l 515.016 625.555 l 515.016 614.254 l + 513.406 614.254 l 513.406 616.211 l 509.09 616.211 l 509.09 610.133 l h +545.777 629.672 m 528.828 629.672 l 528.828 625.555 l 530.082 625.555 l + 530.082 614.254 l 528.828 614.254 l 528.828 610.133 l 545.777 610.133 l + 545.777 617.719 l 540.152 617.719 l 540.152 614.254 l 537.117 614.254 l + 537.117 618.223 l 539.324 618.223 l 539.324 621.082 l 537.117 621.082 l + 537.117 625.555 l 540.152 625.555 l 540.152 621.586 l 545.777 621.586 l + h +561.199 614.254 m 561.199 610.133 l 569.438 610.133 l 569.438 614.254 l + 568.18 614.254 l 568.18 629.672 l 561.125 629.672 l 553.766 618.348 l 553.766 + 625.555 l 554.973 625.555 l 554.973 629.672 l 546.734 629.672 l 546.734 + 625.555 l 547.988 625.555 l 547.988 614.254 l 546.734 614.254 l 546.734 + 610.133 l 555.801 610.133 l 562.406 620.207 l 562.406 614.254 l h +589.125 610.133 m 589.125 616.211 l 584.805 616.211 l 584.805 614.254 l + 583.199 614.254 l 583.199 625.555 l 584.957 625.555 l 584.957 629.672 l + 574.406 629.672 l 574.406 625.555 l 576.168 625.555 l 576.168 614.254 l + 574.559 614.254 l 574.559 616.211 l 570.238 616.211 l 570.238 610.133 l + h +605.297 630.023 m 603.691 630.023 602.172 629.883 600.734 629.605 c 599.305 + 629.332 598.207 629.02 597.438 628.668 c 597.438 623.695 l 602.965 623.695 + l 602.965 624.215 603.082 624.59 603.312 624.824 c 603.547 625.059 603.977 + 625.176 604.594 625.176 c 605.113 625.176 605.484 625.098 605.715 624.938 + c 605.938 624.781 606.051 624.543 606.051 624.223 c 606.051 623.953 605.941 + 623.723 605.727 623.531 c 605.508 623.34 605.129 623.145 604.594 622.941 + c 602.434 622.191 l 600.578 621.488 599.242 620.66 598.43 619.703 c 597.617 + 618.746 597.211 617.457 597.211 615.836 c 597.211 613.859 597.859 612.355 + 599.156 611.328 c 600.453 610.297 602.617 609.785 605.648 609.785 c 607.105 + 609.785 608.473 609.93 609.754 610.219 c 611.035 610.516 612.07 610.906 + 612.855 611.391 c 612.855 615.887 l 607.836 615.887 l 607.836 615.047 607.316 + 614.629 606.277 614.629 c 605.777 614.629 605.418 614.691 605.211 614.816 + c 605 614.941 604.895 615.168 604.895 615.484 c 604.895 615.77 605.016 +615.992 605.258 616.16 c 605.5 616.328 605.898 616.504 606.453 616.691 c + 608.637 617.441 l 610.414 618.047 611.707 618.828 612.516 619.789 c 613.328 + 620.75 613.734 622.012 613.734 623.57 c 613.734 625.695 613.02 627.305 +611.586 628.395 c 610.156 629.48 608.059 630.023 605.297 630.023 c h +631.391 629.672 m 614.438 629.672 l 614.438 625.555 l 615.695 625.555 l + 615.695 614.254 l 614.438 614.254 l 614.438 610.133 l 631.391 610.133 l + 631.391 617.719 l 625.766 617.719 l 625.766 614.254 l 622.727 614.254 l + 622.727 618.223 l 624.938 618.223 l 624.938 621.082 l 622.727 621.082 l + 622.727 625.555 l 625.766 625.555 l 625.766 621.586 l 631.391 621.586 l + h +632.344 629.672 m 632.344 625.555 l 633.602 625.555 l 633.602 614.254 l + 632.344 614.254 l 632.344 610.133 l 643.871 610.133 l 646.031 610.133 647.68 + 610.578 648.82 611.465 c 649.957 612.355 650.527 613.793 650.527 615.785 + c 650.527 616.906 650.301 617.879 649.848 618.699 c 649.398 619.52 648.754 + 620.086 647.914 620.406 c 647.938 620.656 l 649.547 620.91 650.352 621.895 + 650.352 623.621 c 650.352 625.555 l 651.531 625.555 l 651.531 629.672 l + 643.57 629.672 l 643.57 623.77 l 643.57 623.117 643.473 622.625 643.277 + 622.289 c 643.09 621.953 642.789 621.727 642.379 621.613 c 641.969 621.492 + 641.387 621.438 640.633 621.438 c 640.633 625.555 l 642.289 625.555 l 642.289 + 629.672 l h +640.633 618.371 m 641.988 618.371 l 642.473 618.371 642.84 618.242 643.082 + 617.98 c 643.324 617.723 643.445 617.316 643.445 616.766 c 643.445 615.859 + l 643.445 615.309 643.324 614.902 643.082 614.641 c 642.84 614.383 642.473 + 614.254 641.988 614.254 c 640.633 614.254 l h +661.879 614.254 m 661.879 610.133 l 670.266 610.133 l 670.266 614.254 l + 669.262 614.254 l 664.766 629.672 l 656.629 629.672 l 652.133 614.254 l + 651.129 614.254 l 651.129 610.133 l 660.773 610.133 l 660.773 614.254 l + 659.469 614.254 l 661.199 622.664 l 661.453 622.664 l 663.184 614.254 l + h +688.02 629.672 m 671.07 629.672 l 671.07 625.555 l 672.324 625.555 l 672.324 + 614.254 l 671.07 614.254 l 671.07 610.133 l 688.02 610.133 l 688.02 617.719 + l 682.395 617.719 l 682.395 614.254 l 679.355 614.254 l 679.355 618.223 + l 681.566 618.223 l 681.566 621.082 l 679.355 621.082 l 679.355 625.555 + l 682.395 625.555 l 682.395 621.586 l 688.02 621.586 l h +688.977 629.672 m 688.977 625.555 l 690.23 625.555 l 690.23 614.254 l 688.977 + 614.254 l 688.977 610.133 l 700.504 610.133 l 702.664 610.133 704.312 610.578 + 705.449 611.465 c 706.59 612.355 707.16 613.793 707.156 615.785 c 707.156 + 616.906 706.93 617.879 706.48 618.699 c 706.027 619.52 705.383 620.086 +704.547 620.406 c 704.57 620.656 l 706.176 620.91 706.98 621.895 706.98 +623.621 c 706.98 625.555 l 708.16 625.555 l 708.16 629.672 l 700.199 629.672 + l 700.199 623.77 l 700.199 623.117 700.102 622.625 699.91 622.289 c 699.719 + 621.953 699.418 621.727 699.004 621.613 c 698.598 621.492 698.016 621.438 + 697.262 621.438 c 697.262 625.555 l 698.918 625.555 l 698.918 629.672 l + h +697.262 618.371 m 698.617 618.371 l 699.105 618.371 699.469 618.242 699.707 + 617.98 c 699.953 617.723 700.074 617.316 700.074 616.766 c 700.074 615.859 + l 700.074 615.309 699.953 614.902 699.707 614.641 c 699.469 614.383 699.105 + 614.254 698.617 614.254 c 697.262 614.254 l h +697.262 618.371 m f +Q q +309.66 467.402 485.473 64.672 re W n +1 g +375.801 486.988 m 375.801 490.199 374.855 492.914 372.961 495.129 c 371.062 + 497.34 368.59 499.184 365.543 500.656 c 362.504 502.117 359.086 503.262 + 355.281 504.098 c 351.488 504.934 347.711 505.555 343.941 505.953 c 340.176 + 506.355 336.613 506.613 333.258 506.73 c 329.891 506.848 327.117 506.906 + 324.941 506.906 c 324.941 508.922 324.922 510.887 324.887 512.805 c 324.863 + 514.738 324.852 516.707 324.852 518.723 c 324.852 519.238 324.852 520.129 + 324.852 521.387 c 324.852 522.648 324.883 523.984 324.941 525.398 c 325 + 526.809 325.129 528.117 325.328 529.316 c 325.531 530.531 325.801 531.309 + 326.141 531.648 c 311.043 531.648 l 311.395 531.309 311.684 530.188 311.906 + 528.293 c 312.145 526.387 312.332 524.113 312.473 521.477 c 312.613 518.828 + 312.703 515.957 312.738 512.859 c 312.762 509.75 312.773 506.801 312.773 + 504.012 c 312.773 501.219 312.762 498.738 312.738 496.559 c 312.703 494.367 + 312.684 492.875 312.684 492.074 c 312.684 491.555 312.703 490.637 312.738 + 489.316 c 312.762 487.988 312.762 486.461 312.738 484.742 c 312.703 483.012 + 312.645 481.199 312.562 479.305 c 312.48 477.41 312.32 475.656 312.086 +474.043 c 311.859 472.441 311.543 471.094 311.129 469.996 c 310.73 468.902 + 310.242 468.266 309.664 468.09 c 322.078 468.09 l 322.891 468.09 323.977 + 468.078 325.328 468.055 c 326.672 468.02 327.75 468.059 328.562 468.18 +c 331.598 468.18 334.613 468.238 337.602 468.355 c 340.594 468.473 343.613 + 468.672 346.664 468.957 c 348.441 469.133 350.414 469.363 352.578 469.645 + c 354.734 469.938 356.887 470.355 359.043 470.898 c 361.199 471.438 363.281 + 472.145 365.293 473.016 c 367.309 473.875 369.09 474.938 370.645 476.195 + c 372.188 477.469 373.438 478.992 374.391 480.77 c 375.332 482.559 375.801 + 484.633 375.801 486.988 c h +360.207 486.898 m 360.207 485.227 359.602 483.832 358.391 482.711 c 357.188 + 481.594 355.652 480.676 353.781 479.957 c 351.906 479.238 349.805 478.691 + 347.477 478.316 c 345.156 477.938 342.859 477.68 340.586 477.539 c 338.316 + 477.398 336.23 477.324 334.336 477.324 c 332.441 477.324 330.945 477.324 + 329.852 477.324 c 325.719 477.324 l 325.305 480.836 325.078 484.344 325.027 + 487.852 c 324.969 491.348 324.941 494.852 324.941 498.359 c 327.238 498.359 + 329.52 498.332 331.793 498.27 c 334.066 498.211 336.348 498.102 338.645 + 497.938 c 340.316 497.816 342.391 497.617 344.863 497.336 c 347.336 497.039 + 349.699 496.523 351.961 495.781 c 354.234 495.027 356.176 493.949 357.789 + 492.551 c 359.402 491.137 360.207 489.254 360.207 486.898 c h +456.527 468.09 m 455.492 468.668 453.996 469.949 452.043 471.941 c 450.086 + 473.918 447.902 476.285 445.488 479.039 c 443.066 481.805 440.535 484.797 + 437.895 488.012 c 435.246 491.238 432.715 494.355 430.301 497.371 c 427.887 + 500.383 425.703 503.117 423.75 505.566 c 421.797 508.004 420.328 509.855 + 419.352 511.129 c 419.293 512.328 419.266 513.535 419.266 514.75 c 419.266 + 515.961 419.266 517.195 419.266 518.457 c 419.266 518.977 419.266 519.895 + 419.266 521.211 c 419.266 522.531 419.305 523.895 419.387 525.309 c 419.48 + 526.723 419.613 528.047 419.777 529.281 c 419.953 530.52 420.242 531.309 + 420.641 531.648 c 404.871 531.648 l 405.152 531.367 405.395 530.707 405.594 + 529.672 c 405.797 528.637 405.953 527.41 406.074 525.996 c 406.191 524.598 + 406.262 523.09 406.285 521.477 c 406.32 519.863 406.348 518.34 406.371 +516.902 c 406.406 515.465 406.426 514.188 406.426 513.07 c 406.426 511.953 + 406.426 511.156 406.426 510.688 c 405.449 509.484 403.984 507.66 402.027 + 505.211 c 400.074 502.773 397.871 500.074 395.422 497.105 c 392.984 494.152 + 390.441 491.066 387.793 487.852 c 385.145 484.625 382.613 481.648 380.199 + 478.914 c 377.785 476.184 375.602 473.828 373.648 471.852 c 371.695 469.863 + 370.227 468.609 369.25 468.09 c 372.699 468.09 376.109 468.109 379.477 +468.145 c 382.832 468.168 386.234 468.148 389.684 468.09 c 389.461 468.207 + 389.348 468.465 389.348 468.867 c 389.348 469.738 389.836 471.004 390.812 + 472.664 c 391.789 474.336 393.027 476.219 394.523 478.316 c 396.02 480.41 + 397.684 482.613 399.52 484.922 c 401.355 487.215 403.141 489.398 404.871 + 491.473 c 406.59 493.531 408.168 495.367 409.605 496.98 c 411.039 498.594 + 412.105 499.773 412.801 500.516 c 413.227 500.516 l 413.918 499.773 414.973 + 498.594 416.387 496.98 c 417.785 495.367 419.363 493.531 421.117 491.473 + c 422.875 489.398 424.656 487.215 426.469 484.922 c 428.281 482.613 429.949 + 480.41 431.469 478.316 c 432.988 476.219 434.223 474.336 435.176 472.664 + c 436.129 471.004 436.605 469.738 436.605 468.867 c 436.605 468.527 436.488 + 468.266 436.254 468.09 c 439.645 468.148 443.023 468.168 446.391 468.145 + c 449.746 468.109 453.125 468.09 456.527 468.09 c h +504.457 497.07 m 504.754 495.812 505.012 494.562 505.234 493.328 c 505.469 + 492.09 505.59 490.809 505.59 489.477 c 505.59 486.898 505.125 484.762 504.191 + 483.066 c 503.273 481.359 502.027 480.004 500.449 479.004 c 498.871 478.004 + 497.059 477.312 495.008 476.938 c 492.973 476.562 490.836 476.371 488.598 + 476.371 c 487.223 476.371 485.637 476.473 483.848 476.672 c 482.07 476.871 + 480.246 477.191 478.375 477.625 c 476.5 478.062 474.648 478.621 472.812 + 479.305 c 470.973 480 469.348 480.863 467.938 481.898 c 466.535 482.938 + 465.387 484.156 464.492 485.555 c 463.598 486.969 463.152 488.562 463.152 + 490.344 c 463.152 491.895 463.711 493.23 464.828 494.352 c 465.957 495.469 + 467.402 496.434 469.156 497.246 c 470.91 498.047 472.875 498.707 475.055 + 499.227 c 477.242 499.742 479.398 500.191 481.516 500.566 c 483.648 500.934 + 485.633 501.219 487.469 501.434 c 489.305 501.633 490.77 501.816 491.867 + 501.98 c 493.242 502.215 494.926 502.492 496.918 502.809 c 498.895 503.129 + 500.949 503.539 503.082 504.047 c 505.211 504.562 507.324 505.199 509.422 + 505.953 c 511.516 506.695 513.398 507.602 515.07 508.672 c 516.73 509.734 + 518.078 510.969 519.117 512.383 c 520.152 513.781 520.672 515.406 520.672 + 517.258 c 520.672 519.211 520.141 520.934 519.082 522.43 c 518.008 523.914 + 516.602 525.223 514.859 526.352 c 513.105 527.469 511.145 528.387 508.98 + 529.105 c 506.824 529.824 504.641 530.414 502.426 530.871 c 500.215 531.332 + 498.105 531.648 496.105 531.824 c 494.09 531.992 492.391 532.074 491 532.074 + c 484.914 532.074 478.879 531.574 472.898 530.57 c 466.918 529.57 461.086 + 527.945 455.398 525.699 c 454.82 525.473 454.16 525.203 453.418 524.887 + c 452.668 524.566 451.891 524.238 451.09 523.895 c 450.277 523.543 449.5 + 523.254 448.758 523.031 c 448.004 522.797 447.344 522.648 446.777 522.59 + c 447.121 522.25 447.652 521.758 448.367 521.125 c 449.086 520.5 449.805 + 519.812 450.523 519.059 c 451.242 518.316 451.902 517.609 452.5 516.938 + c 453.113 516.277 453.473 515.777 453.578 515.438 c 458.641 518.547 464.176 + 520.848 470.18 522.344 c 476.184 523.836 482.148 524.586 488.07 524.586 + c 489.047 524.586 490.59 524.508 492.695 524.355 c 494.793 524.215 496.887 + 523.914 498.984 523.453 c 501.078 522.996 502.922 522.348 504.512 521.512 + c 506.09 520.676 506.879 519.57 506.879 518.191 c 506.879 516.355 506.059 + 514.891 504.422 513.793 c 502.785 512.699 500.613 511.793 497.906 511.074 + c 495.211 510.355 492.137 509.785 488.688 509.363 c 485.238 508.926 481.711 + 508.449 478.109 507.93 c 474.52 507.414 470.996 506.797 467.547 506.078 + c 464.098 505.359 461.023 504.383 458.328 503.145 c 455.621 501.91 453.449 + 500.344 451.812 498.449 c 450.176 496.551 449.359 494.168 449.359 491.297 + c 449.359 488.246 449.977 485.543 451.211 483.188 c 452.449 480.836 454.113 + 478.762 456.211 476.973 c 458.305 475.195 460.691 473.699 463.363 472.488 + c 466.047 471.285 468.836 470.309 471.734 469.555 c 474.641 468.812 477.531 + 468.273 480.406 467.93 c 483.277 467.578 485.922 467.402 488.336 467.402 + c 492.359 467.402 496.18 467.719 499.797 468.355 c 503.422 468.992 506.57 + 470.137 509.242 471.797 c 511.918 473.469 514.043 475.801 515.621 478.793 + c 517.207 481.781 518.004 485.633 518.004 490.344 c 518.004 491.496 517.957 + 492.621 517.863 493.715 c 517.781 494.797 517.68 495.918 517.562 497.07 + c h +595.336 468.09 m 594.598 468.09 593.996 468.754 593.535 470.086 c 593.078 + 471.402 592.699 473.07 592.406 475.082 c 592.125 477.098 591.91 479.32 +591.77 481.758 c 591.629 484.207 591.527 486.551 591.469 488.789 c 591.41 + 491.035 591.383 493.02 591.383 494.738 c 591.383 496.469 591.383 497.648 + 591.383 498.27 c 591.383 501.723 591.363 505.129 591.328 508.496 c 591.305 + 511.863 591.293 515.273 591.293 518.723 c 591.293 519.18 591.293 520.07 + 591.293 521.387 c 591.293 522.707 591.324 524.074 591.383 525.484 c 591.441 + 526.898 591.57 528.207 591.77 529.406 c 591.969 530.617 592.242 531.367 + 592.582 531.648 c 577.5 531.648 l 577.844 531.367 578.113 530.52 578.312 + 529.105 c 578.512 527.695 578.672 526.027 578.789 524.109 c 578.906 522.176 + 578.996 520.094 579.055 517.855 c 579.102 515.609 579.125 513.477 579.125 + 511.465 c 579.125 509.461 579.125 507.695 579.125 506.164 c 579.125 504.648 + 579.125 503.629 579.125 503.109 c 573.32 502.875 567.547 502.727 561.801 + 502.668 c 556.055 502.609 550.281 502.582 544.477 502.582 c 541.281 502.582 + l 541.281 505.289 541.262 507.969 541.227 510.617 c 541.203 513.254 541.191 + 515.926 541.191 518.633 c 541.191 519.094 541.191 519.98 541.191 521.301 + c 541.191 522.617 541.223 523.996 541.281 525.434 c 541.34 526.883 541.469 + 528.207 541.668 529.406 c 541.867 530.617 542.141 531.367 542.48 531.648 + c 527.398 531.648 l 527.738 531.309 528.027 530.199 528.266 528.328 c 528.488 + 526.457 528.672 524.203 528.812 521.566 c 528.953 518.918 529.039 516.039 + 529.078 512.93 c 529.102 509.832 529.113 506.871 529.113 504.047 c 529.113 + 501.23 529.102 498.75 529.078 496.594 c 529.039 494.438 529.023 492.934 + 529.023 492.074 c 529.023 491.613 529.039 490.707 529.078 489.352 c 529.102 + 488 529.102 486.461 529.078 484.742 c 529.039 483.012 528.98 481.199 528.898 + 479.305 c 528.816 477.41 528.66 475.656 528.422 474.043 c 528.199 472.441 + 527.887 471.094 527.488 469.996 c 527.074 468.902 526.586 468.266 526.02 + 468.09 c 545.324 468.09 l 544.641 468.09 544.07 468.668 543.609 469.82 +c 543.152 470.973 542.773 472.441 542.48 474.219 c 542.199 475.996 541.969 + 477.969 541.793 480.133 c 541.625 482.289 541.516 484.344 541.457 486.297 + c 541.398 488.254 541.367 489.988 541.367 491.508 c 541.367 493.027 541.367 + 494.043 541.367 494.562 c 547.633 494.68 553.914 494.77 560.211 494.828 + c 566.5 494.887 572.805 494.828 579.125 494.652 c 579.125 492.074 l 579.125 + 491.555 579.145 490.637 579.18 489.316 c 579.203 487.988 579.203 486.461 + 579.18 484.742 c 579.145 483.012 579.086 481.199 579.004 479.305 c 578.918 + 477.41 578.762 475.656 578.523 474.043 c 578.301 472.441 577.988 471.094 + 577.59 469.996 c 577.176 468.902 576.688 468.266 576.125 468.09 c h +664.672 531.473 m 602.066 531.648 l 602.406 531.309 602.695 530.199 602.934 + 528.328 c 603.156 526.457 603.344 524.203 603.496 521.566 c 603.637 518.918 + 603.719 516.039 603.742 512.93 c 603.781 509.832 603.797 506.871 603.797 + 504.047 c 603.797 501.23 603.781 498.75 603.742 496.594 c 603.719 494.438 + 603.707 492.934 603.707 492.074 c 603.707 491.555 603.707 490.66 603.707 + 489.387 c 603.707 488.129 603.691 486.723 603.656 485.168 c 603.633 483.613 + 603.59 481.961 603.531 480.203 c 603.473 478.449 603.375 476.832 603.23 + 475.348 c 603.09 473.852 602.902 472.539 602.668 471.41 c 602.441 470.293 + 602.156 469.531 601.801 469.133 c 601.637 468.957 601.453 468.785 601.254 + 468.621 c 601.055 468.441 600.867 468.266 600.688 468.09 c 663.293 468.266 + l 662.34 477.84 l 662.059 477.719 661.352 477.633 660.223 477.574 c 659.102 + 477.527 657.742 477.473 656.141 477.414 c 654.527 477.355 652.805 477.309 + 650.969 477.273 c 649.121 477.25 647.375 477.238 645.742 477.238 c 644.105 + 477.238 642.656 477.238 641.395 477.238 c 640.125 477.238 639.258 477.238 + 638.801 477.238 c 631.441 477.238 624.055 477.324 616.637 477.504 c 616.355 + 480.375 616.184 483.23 616.125 486.066 c 616.066 488.918 616.035 491.809 + 616.035 494.738 c 655.699 494.316 l 655.613 503.535 l 655.391 503.477 654.828 + 503.406 653.934 503.32 c 653.039 503.238 651.992 503.18 650.793 503.145 + c 649.578 503.121 648.273 503.094 646.871 503.059 c 645.457 503.035 644.133 + 503.023 642.898 503.023 c 641.66 503.023 640.555 503.023 639.578 503.023 + c 638.602 503.023 637.941 503.023 637.598 503.023 c 630.406 503.023 623.188 + 503.109 615.949 503.285 c 615.949 505.863 615.938 508.438 615.91 511.004 + c 615.875 513.559 615.859 516.133 615.859 518.723 c 615.859 522.164 l 619.945 + 522.344 624.012 522.43 628.062 522.43 c 632.113 522.43 636.18 522.43 640.266 + 522.43 c 640.664 522.43 641.5 522.43 642.773 522.43 c 644.031 522.43 645.5 + 522.43 647.172 522.43 c 648.832 522.43 650.566 522.414 652.379 522.379 +c 654.195 522.355 655.906 522.324 657.52 522.289 c 659.121 522.266 660.488 + 522.223 661.617 522.164 c 662.734 522.105 663.438 522.02 663.719 521.902 + c h +728.992 531.473 m 670.871 531.648 l 671.223 531.309 671.512 530.199 671.734 + 528.328 c 671.973 526.457 672.16 524.203 672.301 521.566 c 672.441 518.918 + 672.523 516.055 672.547 512.98 c 672.586 509.91 672.602 506.961 672.602 + 504.133 c 672.602 501.32 672.586 498.824 672.547 496.648 c 672.523 494.457 + 672.512 492.934 672.512 492.074 c 672.512 491.613 672.523 490.707 672.547 + 489.352 c 672.586 488 672.586 486.461 672.547 484.742 c 672.523 483.012 + 672.473 481.199 672.391 479.305 c 672.297 477.41 672.137 475.656 671.914 + 474.043 c 671.676 472.441 671.359 471.094 670.961 469.996 c 670.559 468.902 + 670.07 468.266 669.492 468.09 c 688.812 468.09 l 688.059 468.09 687.441 + 468.754 686.961 470.086 c 686.465 471.402 686.078 473.07 685.793 475.082 + c 685.512 477.098 685.293 479.32 685.141 481.758 c 685 484.207 684.898 +486.551 684.84 488.789 c 684.781 491.035 684.754 493.039 684.754 494.793 + c 684.754 496.547 684.754 497.734 684.754 498.359 c 684.754 502.328 684.711 + 506.297 684.629 510.262 c 684.547 514.23 684.559 518.199 684.664 522.164 + c 686.617 522.285 688.43 522.355 690.102 522.379 c 691.773 522.414 693.41 + 522.43 695.012 522.43 c 696.625 522.43 698.281 522.43 699.977 522.43 c +701.672 522.43 703.496 522.43 705.449 522.43 c 705.852 522.43 706.656 522.43 + 707.871 522.43 c 709.07 522.43 710.465 522.43 712.055 522.43 c 713.633 +522.43 715.309 522.414 717.09 522.379 c 718.879 522.355 720.531 522.324 +722.051 522.289 c 723.582 522.266 724.887 522.223 725.973 522.164 c 727.066 + 522.105 727.762 522.02 728.055 521.902 c h +794.176 477.84 m 793.895 477.719 793.191 477.633 792.074 477.574 c 790.957 + 477.527 789.59 477.473 787.977 477.414 c 786.363 477.355 784.637 477.309 + 782.801 477.273 c 780.965 477.25 779.223 477.238 777.574 477.238 c 775.938 + 477.238 774.488 477.238 773.23 477.238 c 771.957 477.238 771.094 477.238 + 770.633 477.238 c 763.277 477.238 755.895 477.324 748.488 477.504 c 748.195 + 480.375 748.016 483.23 747.957 486.066 c 747.898 488.918 747.871 491.809 + 747.871 494.738 c 787.023 494.316 l 786.934 503.535 l 786.594 503.418 785.547 + 503.316 783.789 503.234 c 782.035 503.152 780.152 503.094 778.141 503.059 + c 776.125 503.035 774.203 503.023 772.363 503.023 c 770.527 503.023 769.352 + 503.023 768.832 503.023 c 761.875 503.023 754.859 503.109 747.781 503.285 + c 747.781 505.863 747.77 508.438 747.746 511.004 c 747.723 513.559 747.711 + 516.133 747.711 518.723 c 747.711 519.18 747.711 520.07 747.711 521.387 + c 747.711 522.707 747.734 524.074 747.781 525.484 c 747.84 526.898 747.969 + 528.207 748.172 529.406 c 748.383 530.617 748.66 531.367 749 531.648 c +733.902 531.648 l 734.254 531.309 734.543 530.199 734.766 528.328 c 735 +526.457 735.191 524.203 735.332 521.566 c 735.473 518.918 735.562 516.039 + 735.598 512.93 c 735.621 509.832 735.633 506.871 735.633 504.047 c 735.633 + 501.23 735.621 498.75 735.598 496.594 c 735.562 494.438 735.543 492.934 + 735.543 492.074 c 735.543 491.555 735.543 490.66 735.543 489.387 c 735.543 + 488.129 735.531 486.723 735.508 485.168 c 735.473 483.613 735.426 481.961 + 735.367 480.203 c 735.309 478.449 735.207 476.832 735.066 475.348 c 734.926 + 473.852 734.738 472.539 734.5 471.41 c 734.277 470.293 733.996 469.531 +733.652 469.133 c 733.477 468.957 733.289 468.785 733.09 468.621 c 732.887 + 468.441 732.699 468.266 732.523 468.09 c 795.129 468.266 l h +794.176 477.84 m f +Q q +205.016 455.047 89.375 89.375 re W n +1 g +260.879 499.738 m 260.879 533.254 l 255.293 533.254 l 255.293 477.395 l + 277.637 477.395 l 277.637 473.016 l 288.527 473.016 l 286.883 471.387 l + 288.559 469.758 l 277.637 469.758 l 277.637 455.047 l 244.121 455.047 l + 244.121 533.254 l 238.531 533.254 l 238.531 488.566 l 205.016 488.566 l + 205.016 510.91 l 227.359 510.91 l 227.359 544.426 l 272.051 544.426 l 272.051 + 522.082 l 294.395 522.082 l 294.395 499.738 l h +269.898 460.016 m 273.703 460.016 l 273.703 463.82 l 269.898 463.82 l h +263.113 460.016 m 266.918 460.016 l 266.918 463.82 l 263.113 463.82 l h +212.672 497.625 m 208.863 497.625 l 208.863 493.82 l 212.672 493.82 l h +219.207 497.625 m 215.402 497.625 l 215.402 493.82 l 219.207 493.82 l h +283.926 508.551 m 280.117 508.551 l 280.117 504.742 l 283.926 504.742 l + h +290.461 508.551 m 286.656 508.551 l 286.656 504.742 l 290.461 504.742 l + h +290.461 508.551 m f +Q Q +showpage +%%Trailer +end +%%EOF diff --git a/src/frontend/static/images/nature-forest-tree.jpg b/src/frontend/static/images/nature-forest-tree.jpg new file mode 100644 index 0000000..d3f5085 Binary files /dev/null and b/src/frontend/static/images/nature-forest-tree.jpg differ diff --git a/src/frontend/static/images/no-cover.jpg b/src/frontend/static/images/no-cover.jpg new file mode 100644 index 0000000..70e3eb0 Binary files /dev/null and b/src/frontend/static/images/no-cover.jpg differ diff --git a/src/frontend/static/images/pdf/logo-black.pdf b/src/frontend/static/images/pdf/logo-black.pdf new file mode 100644 index 0000000..fd69f57 Binary files /dev/null and b/src/frontend/static/images/pdf/logo-black.pdf differ diff --git a/src/frontend/static/images/pdf/logo-color.pdf b/src/frontend/static/images/pdf/logo-color.pdf new file mode 100644 index 0000000..917ecb2 Binary files /dev/null and b/src/frontend/static/images/pdf/logo-color.pdf differ diff --git a/src/frontend/static/images/pdf/logo-no-background.pdf b/src/frontend/static/images/pdf/logo-no-background.pdf new file mode 100644 index 0000000..6c87ec0 Binary files /dev/null and b/src/frontend/static/images/pdf/logo-no-background.pdf differ diff --git a/src/frontend/static/images/pdf/logo-white.pdf b/src/frontend/static/images/pdf/logo-white.pdf new file mode 100644 index 0000000..9da18e5 Binary files /dev/null and b/src/frontend/static/images/pdf/logo-white.pdf differ diff --git a/src/frontend/static/images/png/logo-black.png b/src/frontend/static/images/png/logo-black.png new file mode 100644 index 0000000..e1a24d3 Binary files /dev/null and b/src/frontend/static/images/png/logo-black.png differ diff --git a/src/frontend/static/images/png/logo-color.png b/src/frontend/static/images/png/logo-color.png new file mode 100644 index 0000000..4e1b411 Binary files /dev/null and b/src/frontend/static/images/png/logo-color.png differ diff --git a/src/frontend/static/images/png/logo-no-background.png b/src/frontend/static/images/png/logo-no-background.png new file mode 100644 index 0000000..142b6ce Binary files /dev/null and b/src/frontend/static/images/png/logo-no-background.png differ diff --git a/src/frontend/static/images/png/logo-white.png b/src/frontend/static/images/png/logo-white.png new file mode 100644 index 0000000..6bf556e Binary files /dev/null and b/src/frontend/static/images/png/logo-white.png differ diff --git a/src/frontend/static/images/pyshelf-logo-zip-file.zip b/src/frontend/static/images/pyshelf-logo-zip-file.zip new file mode 100644 index 0000000..8ec248a Binary files /dev/null and b/src/frontend/static/images/pyshelf-logo-zip-file.zip differ diff --git a/src/frontend/static/images/python-logo-generic.svg b/src/frontend/static/images/python-logo-generic.svg new file mode 100644 index 0000000..116eaac --- /dev/null +++ b/src/frontend/static/images/python-logo-generic.svg @@ -0,0 +1,269 @@ + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/frontend/static/images/python-logo-transparent.svg b/src/frontend/static/images/python-logo-transparent.svg new file mode 100644 index 0000000..0bfa787 --- /dev/null +++ b/src/frontend/static/images/python-logo-transparent.svg @@ -0,0 +1,152 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/frontend/static/images/svg/logo-black.svg b/src/frontend/static/images/svg/logo-black.svg new file mode 100644 index 0000000..c36a295 --- /dev/null +++ b/src/frontend/static/images/svg/logo-black.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/frontend/static/images/svg/logo-color.svg b/src/frontend/static/images/svg/logo-color.svg new file mode 100644 index 0000000..f862c50 --- /dev/null +++ b/src/frontend/static/images/svg/logo-color.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/frontend/static/images/svg/logo-no-background-no-border.svg b/src/frontend/static/images/svg/logo-no-background-no-border.svg new file mode 100644 index 0000000..0a328a5 --- /dev/null +++ b/src/frontend/static/images/svg/logo-no-background-no-border.svg @@ -0,0 +1,212 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/frontend/static/images/svg/logo-no-background.svg b/src/frontend/static/images/svg/logo-no-background.svg new file mode 100644 index 0000000..7968c75 --- /dev/null +++ b/src/frontend/static/images/svg/logo-no-background.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/frontend/static/images/svg/logo-white.svg b/src/frontend/static/images/svg/logo-white.svg new file mode 100644 index 0000000..b4919e5 --- /dev/null +++ b/src/frontend/static/images/svg/logo-white.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/frontend/static/script/.eslintrc.yml b/src/frontend/static/script/.eslintrc.yml new file mode 100644 index 0000000..bcc25f6 --- /dev/null +++ b/src/frontend/static/script/.eslintrc.yml @@ -0,0 +1,22 @@ +env: + browser: true + es2021: true + jquery: true +extends: eslint:recommended +overrides: [] +parserOptions: + ecmaVersion: latest + sourceType: module +rules: + indent: + - error + - 2 + linebreak-style: + - error + - unix + quotes: + - error + - double + semi: + - error + - always diff --git a/src/interface/static/admin/js/vendor/jquery/jquery.js b/src/frontend/static/script/jquery-3.6.1.js similarity index 96% rename from src/interface/static/admin/js/vendor/jquery/jquery.js rename to src/frontend/static/script/jquery-3.6.1.js index 5093733..12e65d0 100644 --- a/src/interface/static/admin/js/vendor/jquery/jquery.js +++ b/src/frontend/static/script/jquery-3.6.1.js @@ -1,15 +1,15 @@ /*! - * jQuery JavaScript Library v3.5.1 + * jQuery JavaScript Library v3.6.1 * https://jquery.com/ * * Includes Sizzle.js * https://sizzlejs.com/ * - * Copyright JS Foundation and other contributors + * Copyright OpenJS Foundation and other contributors * Released under the MIT license * https://jquery.org/license * - * Date: 2020-05-04T22:49Z + * Date: 2022-08-26T17:52Z */ ( function( global, factory ) { @@ -23,7 +23,7 @@ // (such as Node.js), expose a factory as module.exports. // This accentuates the need for the creation of a real `window`. // e.g. var jQuery = require("jquery")(window); - // See ticket #14549 for more info. + // See ticket trac-14549 for more info. module.exports = global.document ? factory( global, true ) : function( w ) { @@ -76,12 +76,16 @@ var support = {}; var isFunction = function isFunction( obj ) { - // Support: Chrome <=57, Firefox <=52 - // In some browsers, typeof returns "function" for HTML elements - // (i.e., `typeof document.createElement( "object" ) === "function"`). - // We don't want to classify *any* DOM node as a function. - return typeof obj === "function" && typeof obj.nodeType !== "number"; - }; + // Support: Chrome <=57, Firefox <=52 + // In some browsers, typeof returns "function" for HTML elements + // (i.e., `typeof document.createElement( "object" ) === "function"`). + // We don't want to classify *any* DOM node as a function. + // Support: QtWeb <=3.8.5, WebKit <=534.34, wkhtmltopdf tool <=0.12.5 + // Plus for old WebKit, typeof returns "function" for HTML collections + // (e.g., `typeof document.getElementsByTagName("div") === "function"`). (gh-4756) + return typeof obj === "function" && typeof obj.nodeType !== "number" && + typeof obj.item !== "function"; + }; var isWindow = function isWindow( obj ) { @@ -147,7 +151,7 @@ function toType( obj ) { var - version = "3.5.1", + version = "3.6.1", // Define a local copy of jQuery jQuery = function( selector, context ) { @@ -401,7 +405,7 @@ jQuery.extend( { if ( isArrayLike( Object( arr ) ) ) { jQuery.merge( ret, typeof arr === "string" ? - [ arr ] : arr + [ arr ] : arr ); } else { push.call( ret, arr ); @@ -496,9 +500,9 @@ if ( typeof Symbol === "function" ) { // Populate the class2type map jQuery.each( "Boolean Number String Function Array Date RegExp Object Error Symbol".split( " " ), -function( _i, name ) { - class2type[ "[object " + name + "]" ] = name.toLowerCase(); -} ); + function( _i, name ) { + class2type[ "[object " + name + "]" ] = name.toLowerCase(); + } ); function isArrayLike( obj ) { @@ -518,14 +522,14 @@ function isArrayLike( obj ) { } var Sizzle = /*! - * Sizzle CSS Selector Engine v2.3.5 + * Sizzle CSS Selector Engine v2.3.6 * https://sizzlejs.com/ * * Copyright JS Foundation and other contributors * Released under the MIT license * https://js.foundation/ * - * Date: 2020-03-14 + * Date: 2021-02-16 */ ( function( window ) { var i, @@ -1108,8 +1112,8 @@ support = Sizzle.support = {}; * @returns {Boolean} True iff elem is a non-HTML XML node */ isXML = Sizzle.isXML = function( elem ) { - var namespace = elem.namespaceURI, - docElem = ( elem.ownerDocument || elem ).documentElement; + var namespace = elem && elem.namespaceURI, + docElem = elem && ( elem.ownerDocument || elem ).documentElement; // Support: IE <=8 // Assume HTML when documentElement doesn't yet exist, such as inside loading iframes @@ -3024,9 +3028,9 @@ var rneedsContext = jQuery.expr.match.needsContext; function nodeName( elem, name ) { - return elem.nodeName && elem.nodeName.toLowerCase() === name.toLowerCase(); + return elem.nodeName && elem.nodeName.toLowerCase() === name.toLowerCase(); -}; +} var rsingleTag = ( /^<([a-z][^\/\0>:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i ); @@ -3125,8 +3129,8 @@ jQuery.fn.extend( { var rootjQuery, // A simple way to check for HTML strings - // Prioritize #id over to avoid XSS via location.hash (#9521) - // Strict HTML recognition (#11290: must start with <) + // Prioritize #id over to avoid XSS via location.hash (trac-9521) + // Strict HTML recognition (trac-11290: must start with <) // Shortcut simple #id case for speed rquickExpr = /^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]+))$/, @@ -3997,8 +4001,8 @@ jQuery.extend( { resolveContexts = Array( i ), resolveValues = slice.call( arguments ), - // the master Deferred - master = jQuery.Deferred(), + // the primary Deferred + primary = jQuery.Deferred(), // subordinate callback factory updateFunc = function( i ) { @@ -4006,30 +4010,30 @@ jQuery.extend( { resolveContexts[ i ] = this; resolveValues[ i ] = arguments.length > 1 ? slice.call( arguments ) : value; if ( !( --remaining ) ) { - master.resolveWith( resolveContexts, resolveValues ); + primary.resolveWith( resolveContexts, resolveValues ); } }; }; // Single- and empty arguments are adopted like Promise.resolve if ( remaining <= 1 ) { - adoptValue( singleValue, master.done( updateFunc( i ) ).resolve, master.reject, + adoptValue( singleValue, primary.done( updateFunc( i ) ).resolve, primary.reject, !remaining ); // Use .then() to unwrap secondary thenables (cf. gh-3000) - if ( master.state() === "pending" || + if ( primary.state() === "pending" || isFunction( resolveValues[ i ] && resolveValues[ i ].then ) ) { - return master.then(); + return primary.then(); } } // Multiple arguments are aggregated like Promise.all array elements while ( i-- ) { - adoptValue( resolveValues[ i ], updateFunc( i ), master.reject ); + adoptValue( resolveValues[ i ], updateFunc( i ), primary.reject ); } - return master.promise(); + return primary.promise(); } } ); @@ -4083,7 +4087,7 @@ jQuery.extend( { isReady: false, // A counter to track how many items to wait for before - // the ready event fires. See #6781 + // the ready event fires. See trac-6781 readyWait: 1, // Handle when the DOM is ready @@ -4180,8 +4184,8 @@ var access = function( elems, fn, key, value, chainable, emptyGet, raw ) { for ( ; i < len; i++ ) { fn( elems[ i ], key, raw ? - value : - value.call( elems[ i ], i, fn( elems[ i ], key ) ) + value : + value.call( elems[ i ], i, fn( elems[ i ], key ) ) ); } } @@ -4211,7 +4215,7 @@ function fcamelCase( _all, letter ) { // Convert dashed to camelCase; used by the css and data modules // Support: IE <=9 - 11, Edge 12 - 15 -// Microsoft forgot to hump their vendor prefix (#9572) +// Microsoft forgot to hump their vendor prefix (trac-9572) function camelCase( string ) { return string.replace( rmsPrefix, "ms-" ).replace( rdashAlpha, fcamelCase ); } @@ -4247,7 +4251,7 @@ Data.prototype = { value = {}; // We can accept data for non-element nodes in modern browsers, - // but we should not, see #8335. + // but we should not, see trac-8335. // Always return an empty object. if ( acceptData( owner ) ) { @@ -4486,7 +4490,7 @@ jQuery.fn.extend( { while ( i-- ) { // Support: IE 11 only - // The attrs elements can be null (#14894) + // The attrs elements can be null (trac-14894) if ( attrs[ i ] ) { name = attrs[ i ].name; if ( name.indexOf( "data-" ) === 0 ) { @@ -4909,9 +4913,9 @@ var rscriptType = ( /^$|^module$|\/(?:java|ecma)script/i ); input = document.createElement( "input" ); // Support: Android 4.0 - 4.3 only - // Check state lost if the name is set (#11217) + // Check state lost if the name is set (trac-11217) // Support: Windows Web Apps (WWA) - // `name` and `type` must use .setAttribute for WWA (#14901) + // `name` and `type` must use .setAttribute for WWA (trac-14901) input.setAttribute( "type", "radio" ); input.setAttribute( "checked", "checked" ); input.setAttribute( "name", "t" ); @@ -4935,7 +4939,7 @@ var rscriptType = ( /^$|^module$|\/(?:java|ecma)script/i ); } )(); -// We have to close these tags to support XHTML (#13200) +// We have to close these tags to support XHTML (trac-13200) var wrapMap = { // XHTML parsers do not magically insert elements in the @@ -4961,7 +4965,7 @@ if ( !support.option ) { function getAll( context, tag ) { // Support: IE <=9 - 11 only - // Use typeof to avoid zero-argument method invocation on host objects (#15151) + // Use typeof to avoid zero-argument method invocation on host objects (trac-15151) var ret; if ( typeof context.getElementsByTagName !== "undefined" ) { @@ -5044,7 +5048,7 @@ function buildFragment( elems, context, scripts, selection, ignored ) { // Remember the top-level container tmp = fragment.firstChild; - // Ensure the created nodes are orphaned (#12392) + // Ensure the created nodes are orphaned (trac-12392) tmp.textContent = ""; } } @@ -5089,10 +5093,7 @@ function buildFragment( elems, context, scripts, selection, ignored ) { } -var - rkeyEvent = /^key/, - rmouseEvent = /^(?:mouse|pointer|contextmenu|drag|drop)|click/, - rtypenamespace = /^([^.]*)(?:\.(.+)|)/; +var rtypenamespace = /^([^.]*)(?:\.(.+)|)/; function returnTrue() { return true; @@ -5387,8 +5388,8 @@ jQuery.event = { event = jQuery.event.fix( nativeEvent ), handlers = ( - dataPriv.get( this, "events" ) || Object.create( null ) - )[ event.type ] || [], + dataPriv.get( this, "events" ) || Object.create( null ) + )[ event.type ] || [], special = jQuery.event.special[ event.type ] || {}; // Use the fix-ed jQuery.Event rather than the (read-only) native event @@ -5468,15 +5469,15 @@ jQuery.event = { for ( ; cur !== this; cur = cur.parentNode || this ) { - // Don't check non-elements (#13208) - // Don't process clicks on disabled elements (#6911, #8165, #11382, #11764) + // Don't check non-elements (trac-13208) + // Don't process clicks on disabled elements (trac-6911, trac-8165, trac-11382, trac-11764) if ( cur.nodeType === 1 && !( event.type === "click" && cur.disabled === true ) ) { matchedHandlers = []; matchedSelectors = {}; for ( i = 0; i < delegateCount; i++ ) { handleObj = handlers[ i ]; - // Don't conflict with Object.prototype properties (#13203) + // Don't conflict with Object.prototype properties (trac-13203) sel = handleObj.selector + " "; if ( matchedSelectors[ sel ] === undefined ) { @@ -5512,12 +5513,12 @@ jQuery.event = { get: isFunction( hook ) ? function() { if ( this.originalEvent ) { - return hook( this.originalEvent ); + return hook( this.originalEvent ); } } : function() { if ( this.originalEvent ) { - return this.originalEvent[ name ]; + return this.originalEvent[ name ]; } }, @@ -5656,7 +5657,13 @@ function leverageNative( el, type, expectSync ) { // Cancel the outer synthetic event event.stopImmediatePropagation(); event.preventDefault(); - return result.value; + + // Support: Chrome 86+ + // In Chrome, if an element having a focusout handler is blurred by + // clicking outside of it, it invokes the handler synchronously. If + // that handler calls `.remove()` on the element, the data is cleared, + // leaving `result` undefined. We need to guard against this. + return result && result.value; } // If this is an inner synthetic event for an event with a bubbling surrogate @@ -5724,7 +5731,7 @@ jQuery.Event = function( src, props ) { // Create target properties // Support: Safari <=6 - 7 only - // Target should not be a text node (#504, #13143) + // Target should not be a text node (trac-504, trac-13143) this.target = ( src.target && src.target.nodeType === 3 ) ? src.target.parentNode : src.target; @@ -5821,34 +5828,7 @@ jQuery.each( { targetTouches: true, toElement: true, touches: true, - - which: function( event ) { - var button = event.button; - - // Add which for key events - if ( event.which == null && rkeyEvent.test( event.type ) ) { - return event.charCode != null ? event.charCode : event.keyCode; - } - - // Add which for click: 1 === left; 2 === middle; 3 === right - if ( !event.which && button !== undefined && rmouseEvent.test( event.type ) ) { - if ( button & 1 ) { - return 1; - } - - if ( button & 2 ) { - return 3; - } - - if ( button & 4 ) { - return 2; - } - - return 0; - } - - return event.which; - } + which: true }, jQuery.event.addProp ); jQuery.each( { focus: "focusin", blur: "focusout" }, function( type, delegateType ) { @@ -5874,6 +5854,12 @@ jQuery.each( { focus: "focusin", blur: "focusout" }, function( type, delegateTyp return true; }, + // Suppress native focus or blur if we're currently inside + // a leveraged native-event stack + _default: function( event ) { + return dataPriv.get( event.target, type ); + }, + delegateType: delegateType }; } ); @@ -5970,7 +5956,8 @@ var // checked="checked" or checked rchecked = /checked\s*(?:[^=]|=\s*.checked.)/i, - rcleanScript = /^\s*\s*$/g; + + rcleanScript = /^\s*\s*$/g; // Prefer a tbody over its parent table for containing new rows function manipulationTarget( elem, content ) { @@ -6084,7 +6071,7 @@ function domManip( collection, args, callback, ignored ) { // Use the original fragment for the last item // instead of the first because it can end up - // being emptied incorrectly in certain situations (#8070). + // being emptied incorrectly in certain situations (trac-8070). for ( ; i < l; i++ ) { node = fragment; @@ -6125,6 +6112,12 @@ function domManip( collection, args, callback, ignored ) { }, doc ); } } else { + + // Unwrap a CDATA section containing script contents. This shouldn't be + // needed as in XML documents they're already not visible when + // inspecting element contents and in HTML documents they have no + // meaning but we're preserving that logic for backwards compatibility. + // This will be removed completely in 4.0. See gh-4904. DOMEval( node.textContent.replace( rcleanScript, "" ), node, doc ); } } @@ -6407,9 +6400,12 @@ jQuery.each( { } ); var rnumnonpx = new RegExp( "^(" + pnum + ")(?!px)[a-z%]+$", "i" ); +var rcustomProp = /^--/; + + var getStyles = function( elem ) { - // Support: IE <=11 only, Firefox <=30 (#15098, #14150) + // Support: IE <=11 only, Firefox <=30 (trac-15098, trac-14150) // IE throws on elements created in popups // FF meanwhile throws on frame elements through "defaultView.getComputedStyle" var view = elem.ownerDocument.defaultView; @@ -6444,6 +6440,15 @@ var swap = function( elem, options, callback ) { var rboxStyle = new RegExp( cssExpand.join( "|" ), "i" ); +var whitespace = "[\\x20\\t\\r\\n\\f]"; + + +var rtrimCSS = new RegExp( + "^" + whitespace + "+|((?:^|[^\\\\])(?:\\\\.)*)" + whitespace + "+$", + "g" +); + + ( function() { @@ -6509,7 +6514,7 @@ var rboxStyle = new RegExp( cssExpand.join( "|" ), "i" ); } // Support: IE <=9 - 11 only - // Style of cloned element affects source element cloned (#8908) + // Style of cloned element affects source element cloned (trac-8908) div.style.backgroundClip = "content-box"; div.cloneNode( true ).style.backgroundClip = ""; support.clearCloneStyle = div.style.backgroundClip === "content-box"; @@ -6541,6 +6546,10 @@ var rboxStyle = new RegExp( cssExpand.join( "|" ), "i" ); // set in CSS while `offset*` properties report correct values. // Behavior in IE 9 is more subtle than in newer versions & it passes // some versions of this test; make sure not to make it pass there! + // + // Support: Firefox 70+ + // Only Firefox includes border widths + // in computed dimensions. (gh-4529) reliableTrDimensions: function() { var table, tr, trChild, trStyle; if ( reliableTrDimensionsVal == null ) { @@ -6548,17 +6557,32 @@ var rboxStyle = new RegExp( cssExpand.join( "|" ), "i" ); tr = document.createElement( "tr" ); trChild = document.createElement( "div" ); - table.style.cssText = "position:absolute;left:-11111px"; + table.style.cssText = "position:absolute;left:-11111px;border-collapse:separate"; + tr.style.cssText = "border:1px solid"; + + // Support: Chrome 86+ + // Height set through cssText does not get applied. + // Computed height then comes back as 0. tr.style.height = "1px"; trChild.style.height = "9px"; + // Support: Android 8 Chrome 86+ + // In our bodyBackground.html iframe, + // display for all div elements is set to "inline", + // which causes a problem only in Android 8 Chrome 86. + // Ensuring the div is display: block + // gets around this issue. + trChild.style.display = "block"; + documentElement .appendChild( table ) .appendChild( tr ) .appendChild( trChild ); trStyle = window.getComputedStyle( tr ); - reliableTrDimensionsVal = parseInt( trStyle.height ) > 3; + reliableTrDimensionsVal = ( parseInt( trStyle.height, 10 ) + + parseInt( trStyle.borderTopWidth, 10 ) + + parseInt( trStyle.borderBottomWidth, 10 ) ) === tr.offsetHeight; documentElement.removeChild( table ); } @@ -6570,6 +6594,7 @@ var rboxStyle = new RegExp( cssExpand.join( "|" ), "i" ); function curCSS( elem, name, computed ) { var width, minWidth, maxWidth, ret, + isCustomProp = rcustomProp.test( name ), // Support: Firefox 51+ // Retrieving style before computed somehow @@ -6580,11 +6605,22 @@ function curCSS( elem, name, computed ) { computed = computed || getStyles( elem ); // getPropertyValue is needed for: - // .css('filter') (IE 9 only, #12537) - // .css('--customProperty) (#3144) + // .css('filter') (IE 9 only, trac-12537) + // .css('--customProperty) (gh-3144) if ( computed ) { ret = computed.getPropertyValue( name ) || computed[ name ]; + // trim whitespace for custom property (issue gh-4926) + if ( isCustomProp ) { + + // rtrim treats U+000D CARRIAGE RETURN and U+000C FORM FEED + // as whitespace while CSS does not, but this is not a problem + // because CSS preprocessing replaces them with U+000A LINE FEED + // (which *is* CSS whitespace) + // https://www.w3.org/TR/css-syntax-3/#input-preprocessing + ret = ret.replace( rtrimCSS, "$1" ); + } + if ( ret === "" && !isAttached( elem ) ) { ret = jQuery.style( elem, name ); } @@ -6680,7 +6716,6 @@ var // except "table", "table-cell", or "table-caption" // See here for display values: https://developer.mozilla.org/en-US/docs/CSS/display rdisplayswap = /^(none|table(?!-c[ea]).+)/, - rcustomProp = /^--/, cssShow = { position: "absolute", visibility: "hidden", display: "block" }, cssNormalTransform = { letterSpacing: "0", @@ -6916,15 +6951,15 @@ jQuery.extend( { if ( value !== undefined ) { type = typeof value; - // Convert "+=" or "-=" to relative numbers (#7345) + // Convert "+=" or "-=" to relative numbers (trac-7345) if ( type === "string" && ( ret = rcssNum.exec( value ) ) && ret[ 1 ] ) { value = adjustCSS( elem, name, ret ); - // Fixes bug #9237 + // Fixes bug trac-9237 type = "number"; } - // Make sure that null and NaN values aren't set (#7116) + // Make sure that null and NaN values aren't set (trac-7116) if ( value == null || value !== value ) { return; } @@ -7022,10 +7057,10 @@ jQuery.each( [ "height", "width" ], function( _i, dimension ) { // Running getBoundingClientRect on a disconnected node // in IE throws an error. ( !elem.getClientRects().length || !elem.getBoundingClientRect().width ) ? - swap( elem, cssShow, function() { - return getWidthOrHeight( elem, dimension, extra ); - } ) : - getWidthOrHeight( elem, dimension, extra ); + swap( elem, cssShow, function() { + return getWidthOrHeight( elem, dimension, extra ); + } ) : + getWidthOrHeight( elem, dimension, extra ); } }, @@ -7084,7 +7119,7 @@ jQuery.cssHooks.marginLeft = addGetHookIf( support.reliableMarginLeft, swap( elem, { marginLeft: 0 }, function() { return elem.getBoundingClientRect().left; } ) - ) + "px"; + ) + "px"; } } ); @@ -7223,7 +7258,7 @@ Tween.propHooks = { if ( jQuery.fx.step[ tween.prop ] ) { jQuery.fx.step[ tween.prop ]( tween ); } else if ( tween.elem.nodeType === 1 && ( - jQuery.cssHooks[ tween.prop ] || + jQuery.cssHooks[ tween.prop ] || tween.elem.style[ finalPropName( tween.prop ) ] != null ) ) { jQuery.style( tween.elem, tween.prop, tween.now + tween.unit ); } else { @@ -7468,7 +7503,7 @@ function defaultPrefilter( elem, props, opts ) { anim.done( function() { - /* eslint-enable no-loop-func */ + /* eslint-enable no-loop-func */ // The final step of a "hide" animation is actually hiding the element if ( !hidden ) { @@ -7548,7 +7583,7 @@ function Animation( elem, properties, options ) { remaining = Math.max( 0, animation.startTime + animation.duration - currentTime ), // Support: Android 2.3 only - // Archaic crash bug won't allow us to use `1 - ( 0.5 || 0 )` (#12497) + // Archaic crash bug won't allow us to use `1 - ( 0.5 || 0 )` (trac-12497) temp = remaining / animation.duration || 0, percent = 1 - temp, index = 0, @@ -7588,7 +7623,7 @@ function Animation( elem, properties, options ) { tweens: [], createTween: function( prop, end ) { var tween = jQuery.Tween( elem, animation.opts, prop, end, - animation.opts.specialEasing[ prop ] || animation.opts.easing ); + animation.opts.specialEasing[ prop ] || animation.opts.easing ); animation.tweens.push( tween ); return tween; }, @@ -7761,7 +7796,8 @@ jQuery.fn.extend( { anim.stop( true ); } }; - doAnimation.finish = doAnimation; + + doAnimation.finish = doAnimation; return empty || optall.queue === false ? this.each( doAnimation ) : @@ -7937,7 +7973,6 @@ jQuery.fx.speeds = { // Based off of the plugin by Clint Helfers, with permission. -// https://web.archive.org/web/20100324014747/http://blindsignals.com/index.php/2009/07/jquery-delay/ jQuery.fn.delay = function( time, type ) { time = jQuery.fx ? jQuery.fx.speeds[ time ] || time : time; type = type || "fx"; @@ -8162,8 +8197,7 @@ jQuery.extend( { // Support: IE <=9 - 11 only // elem.tabIndex doesn't always return the // correct value when it hasn't been explicitly set - // https://web.archive.org/web/20141116233347/http://fluidproject.org/blog/2008/01/09/getting-setting-and-removing-tabindex-values-with-javascript/ - // Use proper attribute retrieval(#12072) + // Use proper attribute retrieval (trac-12072) var tabindex = jQuery.find.attr( elem, "tabindex" ); if ( tabindex ) { @@ -8267,8 +8301,7 @@ function classesToArray( value ) { jQuery.fn.extend( { addClass: function( value ) { - var classes, elem, cur, curValue, clazz, j, finalValue, - i = 0; + var classNames, cur, curValue, className, i, finalValue; if ( isFunction( value ) ) { return this.each( function( j ) { @@ -8276,36 +8309,35 @@ jQuery.fn.extend( { } ); } - classes = classesToArray( value ); + classNames = classesToArray( value ); - if ( classes.length ) { - while ( ( elem = this[ i++ ] ) ) { - curValue = getClass( elem ); - cur = elem.nodeType === 1 && ( " " + stripAndCollapse( curValue ) + " " ); + if ( classNames.length ) { + return this.each( function() { + curValue = getClass( this ); + cur = this.nodeType === 1 && ( " " + stripAndCollapse( curValue ) + " " ); if ( cur ) { - j = 0; - while ( ( clazz = classes[ j++ ] ) ) { - if ( cur.indexOf( " " + clazz + " " ) < 0 ) { - cur += clazz + " "; + for ( i = 0; i < classNames.length; i++ ) { + className = classNames[ i ]; + if ( cur.indexOf( " " + className + " " ) < 0 ) { + cur += className + " "; } } // Only assign if different to avoid unneeded rendering. finalValue = stripAndCollapse( cur ); if ( curValue !== finalValue ) { - elem.setAttribute( "class", finalValue ); + this.setAttribute( "class", finalValue ); } } - } + } ); } return this; }, removeClass: function( value ) { - var classes, elem, cur, curValue, clazz, j, finalValue, - i = 0; + var classNames, cur, curValue, className, i, finalValue; if ( isFunction( value ) ) { return this.each( function( j ) { @@ -8317,45 +8349,42 @@ jQuery.fn.extend( { return this.attr( "class", "" ); } - classes = classesToArray( value ); + classNames = classesToArray( value ); - if ( classes.length ) { - while ( ( elem = this[ i++ ] ) ) { - curValue = getClass( elem ); + if ( classNames.length ) { + return this.each( function() { + curValue = getClass( this ); // This expression is here for better compressibility (see addClass) - cur = elem.nodeType === 1 && ( " " + stripAndCollapse( curValue ) + " " ); + cur = this.nodeType === 1 && ( " " + stripAndCollapse( curValue ) + " " ); if ( cur ) { - j = 0; - while ( ( clazz = classes[ j++ ] ) ) { + for ( i = 0; i < classNames.length; i++ ) { + className = classNames[ i ]; // Remove *all* instances - while ( cur.indexOf( " " + clazz + " " ) > -1 ) { - cur = cur.replace( " " + clazz + " ", " " ); + while ( cur.indexOf( " " + className + " " ) > -1 ) { + cur = cur.replace( " " + className + " ", " " ); } } // Only assign if different to avoid unneeded rendering. finalValue = stripAndCollapse( cur ); if ( curValue !== finalValue ) { - elem.setAttribute( "class", finalValue ); + this.setAttribute( "class", finalValue ); } } - } + } ); } return this; }, toggleClass: function( value, stateVal ) { - var type = typeof value, + var classNames, className, i, self, + type = typeof value, isValidValue = type === "string" || Array.isArray( value ); - if ( typeof stateVal === "boolean" && isValidValue ) { - return stateVal ? this.addClass( value ) : this.removeClass( value ); - } - if ( isFunction( value ) ) { return this.each( function( i ) { jQuery( this ).toggleClass( @@ -8365,17 +8394,20 @@ jQuery.fn.extend( { } ); } - return this.each( function() { - var className, i, self, classNames; + if ( typeof stateVal === "boolean" && isValidValue ) { + return stateVal ? this.addClass( value ) : this.removeClass( value ); + } + classNames = classesToArray( value ); + + return this.each( function() { if ( isValidValue ) { // Toggle individual class names - i = 0; self = jQuery( this ); - classNames = classesToArray( value ); - while ( ( className = classNames[ i++ ] ) ) { + for ( i = 0; i < classNames.length; i++ ) { + className = classNames[ i ]; // Check each className given, space separated list if ( self.hasClass( className ) ) { @@ -8401,8 +8433,8 @@ jQuery.fn.extend( { if ( this.setAttribute ) { this.setAttribute( "class", className || value === false ? - "" : - dataPriv.get( this, "__className__" ) || "" + "" : + dataPriv.get( this, "__className__" ) || "" ); } } @@ -8417,7 +8449,7 @@ jQuery.fn.extend( { while ( ( elem = this[ i++ ] ) ) { if ( elem.nodeType === 1 && ( " " + stripAndCollapse( getClass( elem ) ) + " " ).indexOf( className ) > -1 ) { - return true; + return true; } } @@ -8509,7 +8541,7 @@ jQuery.extend( { val : // Support: IE <=10 - 11 only - // option.text throws exceptions (#14686, #14858) + // option.text throws exceptions (trac-14686, trac-14858) // Strip and collapse whitespace // https://html.spec.whatwg.org/#strip-and-collapse-whitespace stripAndCollapse( jQuery.text( elem ) ); @@ -8536,7 +8568,7 @@ jQuery.extend( { option = options[ i ]; // Support: IE <=9 only - // IE8-9 doesn't update selected after form reset (#2551) + // IE8-9 doesn't update selected after form reset (trac-2551) if ( ( option.selected || i === index ) && // Don't return options that are disabled or in a disabled optgroup @@ -8679,8 +8711,8 @@ jQuery.extend( jQuery.event, { return; } - // Determine event propagation path in advance, per W3C events spec (#9951) - // Bubble up to document, then to window; watch for a global ownerDocument var (#9724) + // Determine event propagation path in advance, per W3C events spec (trac-9951) + // Bubble up to document, then to window; watch for a global ownerDocument var (trac-9724) if ( !onlyHandlers && !special.noBubble && !isWindow( elem ) ) { bubbleType = special.delegateType || type; @@ -8707,9 +8739,7 @@ jQuery.extend( jQuery.event, { special.bindType || type; // jQuery handler - handle = ( - dataPriv.get( cur, "events" ) || Object.create( null ) - )[ event.type ] && + handle = ( dataPriv.get( cur, "events" ) || Object.create( null ) )[ event.type ] && dataPriv.get( cur, "handle" ); if ( handle ) { handle.apply( cur, data ); @@ -8734,7 +8764,7 @@ jQuery.extend( jQuery.event, { acceptData( elem ) ) { // Call a native DOM method on the target with the same name as the event. - // Don't do default actions on window, that's where global variables be (#6170) + // Don't do default actions on window, that's where global variables be (trac-6170) if ( ontype && isFunction( elem[ type ] ) && !isWindow( elem ) ) { // Don't re-trigger an onFOO event when we call its FOO() method @@ -8856,7 +8886,7 @@ var rquery = ( /\?/ ); // Cross-browser xml parsing jQuery.parseXML = function( data ) { - var xml; + var xml, parserErrorElem; if ( !data || typeof data !== "string" ) { return null; } @@ -8865,12 +8895,17 @@ jQuery.parseXML = function( data ) { // IE throws on parseFromString with invalid input. try { xml = ( new window.DOMParser() ).parseFromString( data, "text/xml" ); - } catch ( e ) { - xml = undefined; - } + } catch ( e ) {} - if ( !xml || xml.getElementsByTagName( "parsererror" ).length ) { - jQuery.error( "Invalid XML: " + data ); + parserErrorElem = xml && xml.getElementsByTagName( "parsererror" )[ 0 ]; + if ( !xml || parserErrorElem ) { + jQuery.error( "Invalid XML: " + ( + parserErrorElem ? + jQuery.map( parserErrorElem.childNodes, function( el ) { + return el.textContent; + } ).join( "\n" ) : + data + ) ); } return xml; }; @@ -8971,16 +9006,14 @@ jQuery.fn.extend( { // Can add propHook for "elements" to filter or add form elements var elements = jQuery.prop( this, "elements" ); return elements ? jQuery.makeArray( elements ) : this; - } ) - .filter( function() { + } ).filter( function() { var type = this.type; // Use .is( ":disabled" ) so that fieldset[disabled] works return this.name && !jQuery( this ).is( ":disabled" ) && rsubmittable.test( this.nodeName ) && !rsubmitterTypes.test( type ) && ( this.checked || !rcheckableType.test( type ) ); - } ) - .map( function( _i, elem ) { + } ).map( function( _i, elem ) { var val = jQuery( this ).val(); if ( val == null ) { @@ -9005,7 +9038,7 @@ var rantiCache = /([?&])_=[^&]*/, rheaders = /^(.*?):[ \t]*([^\r\n]*)$/mg, - // #7653, #8125, #8152: local protocol detection + // trac-7653, trac-8125, trac-8152: local protocol detection rlocalProtocol = /^(?:about|app|app-storage|.+-extension|file|res|widget):$/, rnoContent = /^(?:GET|HEAD)$/, rprotocol = /^\/\//, @@ -9028,12 +9061,13 @@ var */ transports = {}, - // Avoid comment-prolog char sequence (#10098); must appease lint and evade compression + // Avoid comment-prolog char sequence (trac-10098); must appease lint and evade compression allTypes = "*/".concat( "*" ), // Anchor tag for parsing the document origin originAnchor = document.createElement( "a" ); - originAnchor.href = location.href; + +originAnchor.href = location.href; // Base "constructor" for jQuery.ajaxPrefilter and jQuery.ajaxTransport function addToPrefiltersOrTransports( structure ) { @@ -9098,7 +9132,7 @@ function inspectPrefiltersOrTransports( structure, options, originalOptions, jqX // A special extend for ajax options // that takes "flat" options (not to be deep extended) -// Fixes #9887 +// Fixes trac-9887 function ajaxExtend( target, src ) { var key, deep, flatOptions = jQuery.ajaxSettings.flatOptions || {}; @@ -9414,8 +9448,8 @@ jQuery.extend( { // Context for global events is callbackContext if it is a DOM node or jQuery collection globalEventContext = s.context && ( callbackContext.nodeType || callbackContext.jquery ) ? - jQuery( callbackContext ) : - jQuery.event, + jQuery( callbackContext ) : + jQuery.event, // Deferreds deferred = jQuery.Deferred(), @@ -9509,12 +9543,12 @@ jQuery.extend( { deferred.promise( jqXHR ); // Add protocol if not provided (prefilters might expect it) - // Handle falsy url in the settings object (#10093: consistency with old signature) + // Handle falsy url in the settings object (trac-10093: consistency with old signature) // We also use the url parameter if available s.url = ( ( url || s.url || location.href ) + "" ) .replace( rprotocol, location.protocol + "//" ); - // Alias method option to type as per ticket #12004 + // Alias method option to type as per ticket trac-12004 s.type = options.method || options.type || s.method || s.type; // Extract dataTypes list @@ -9557,7 +9591,7 @@ jQuery.extend( { } // We can fire global events as of now if asked to - // Don't fire events if jQuery.event is undefined in an AMD-usage scenario (#15118) + // Don't fire events if jQuery.event is undefined in an AMD-usage scenario (trac-15118) fireGlobals = jQuery.event && s.global; // Watch for a new set of requests @@ -9586,7 +9620,7 @@ jQuery.extend( { if ( s.data && ( s.processData || typeof s.data === "string" ) ) { cacheURL += ( rquery.test( cacheURL ) ? "&" : "?" ) + s.data; - // #9682: remove data so that it's not used in an eventual retry + // trac-9682: remove data so that it's not used in an eventual retry delete s.data; } @@ -9727,8 +9761,10 @@ jQuery.extend( { response = ajaxHandleResponses( s, jqXHR, responses ); } - // Use a noop converter for missing script - if ( !isSuccess && jQuery.inArray( "script", s.dataTypes ) > -1 ) { + // Use a noop converter for missing script but not if jsonp + if ( !isSuccess && + jQuery.inArray( "script", s.dataTypes ) > -1 && + jQuery.inArray( "json", s.dataTypes ) < 0 ) { s.converters[ "text script" ] = function() {}; } @@ -9857,7 +9893,7 @@ jQuery._evalUrl = function( url, options, doc ) { return jQuery.ajax( { url: url, - // Make this explicit, since user can override this through ajaxSetup (#11264) + // Make this explicit, since user can override this through ajaxSetup (trac-11264) type: "GET", dataType: "script", cache: true, @@ -9966,7 +10002,7 @@ var xhrSuccessStatus = { 0: 200, // Support: IE <=9 only - // #1450: sometimes IE returns 1223 when it should be 204 + // trac-1450: sometimes IE returns 1223 when it should be 204 1223: 204 }, xhrSupported = jQuery.ajaxSettings.xhr(); @@ -10038,7 +10074,7 @@ jQuery.ajaxTransport( function( options ) { } else { complete( - // File: protocol always yields status 0; see #8605, #14207 + // File: protocol always yields status 0; see trac-8605, trac-14207 xhr.status, xhr.statusText ); @@ -10099,7 +10135,7 @@ jQuery.ajaxTransport( function( options ) { xhr.send( options.hasContent && options.data || null ); } catch ( e ) { - // #14683: Only rethrow if this hasn't been notified as an error yet + // trac-14683: Only rethrow if this hasn't been notified as an error yet if ( callback ) { throw e; } @@ -10466,12 +10502,6 @@ jQuery.offset = { options.using.call( elem, props ); } else { - if ( typeof props.top === "number" ) { - props.top += "px"; - } - if ( typeof props.left === "number" ) { - props.left += "px"; - } curElem.css( props ); } } @@ -10640,8 +10670,11 @@ jQuery.each( [ "top", "left" ], function( _i, prop ) { // Create innerHeight, innerWidth, height, width, outerHeight and outerWidth methods jQuery.each( { Height: "height", Width: "width" }, function( name, type ) { - jQuery.each( { padding: "inner" + name, content: type, "": "outer" + name }, - function( defaultExtra, funcName ) { + jQuery.each( { + padding: "inner" + name, + content: type, + "": "outer" + name + }, function( defaultExtra, funcName ) { // Margin is only for outerHeight, outerWidth jQuery.fn[ funcName ] = function( margin, value ) { @@ -10726,7 +10759,8 @@ jQuery.fn.extend( { } } ); -jQuery.each( ( "blur focus focusin focusout resize scroll click dblclick " + +jQuery.each( + ( "blur focus focusin focusout resize scroll click dblclick " + "mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave " + "change select submit keydown keypress keyup contextmenu" ).split( " " ), function( _i, name ) { @@ -10737,14 +10771,17 @@ jQuery.each( ( "blur focus focusin focusout resize scroll click dblclick " + this.on( name, null, data, fn ) : this.trigger( name ); }; - } ); + } +); // Support: Android <=4.0 only // Make sure we trim BOM and NBSP -var rtrim = /^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g; +// Require that the "whitespace run" starts from a non-whitespace +// to avoid O(N^2) behavior when the engine would try matching "\s+$" at each space position. +var rtrim = /^[\s\uFEFF\xA0]+|([^\s\uFEFF\xA0])[\s\uFEFF\xA0]+$/g; // Bind a function to a context, optionally partially applying any // arguments. @@ -10811,7 +10848,7 @@ jQuery.isNumeric = function( obj ) { jQuery.trim = function( text ) { return text == null ? "" : - ( text + "" ).replace( rtrim, "" ); + ( text + "" ).replace( rtrim, "$1" ); }; @@ -10859,8 +10896,8 @@ jQuery.noConflict = function( deep ) { }; // Expose jQuery and $ identifiers, even in AMD -// (#7102#comment:10, https://github.com/jquery/jquery/pull/557) -// and CommonJS for browser emulators (#13566) +// (trac-7102#comment:10, https://github.com/jquery/jquery/pull/557) +// and CommonJS for browser emulators (trac-13566) if ( typeof noGlobal === "undefined" ) { window.jQuery = window.$ = jQuery; } diff --git a/src/frontend/static/script/pako.min.js b/src/frontend/static/script/pako.min.js new file mode 100644 index 0000000..fbcfa17 --- /dev/null +++ b/src/frontend/static/script/pako.min.js @@ -0,0 +1,13 @@ +/*! pako 2.1.0 https://github.com/nodeca/pako @license (MIT AND Zlib) */ +!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?e(exports):"function"==typeof define&&define.amd?define(["exports"],e):e((t="undefined"!=typeof globalThis?globalThis:t||self).pako={})}(this,(function(t){"use strict";function e(t){let e=t.length;for(;--e>=0;)t[e]=0}const a=256,i=286,n=30,s=15,r=new Uint8Array([0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0]),o=new Uint8Array([0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13]),l=new Uint8Array([0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,3,7]),h=new Uint8Array([16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15]),d=new Array(576);e(d);const _=new Array(60);e(_);const f=new Array(512);e(f);const c=new Array(256);e(c);const u=new Array(29);e(u);const w=new Array(n);function m(t,e,a,i,n){this.static_tree=t,this.extra_bits=e,this.extra_base=a,this.elems=i,this.max_length=n,this.has_stree=t&&t.length}let b,g,p;function k(t,e){this.dyn_tree=t,this.max_code=0,this.stat_desc=e}e(w);const v=t=>t<256?f[t]:f[256+(t>>>7)],y=(t,e)=>{t.pending_buf[t.pending++]=255&e,t.pending_buf[t.pending++]=e>>>8&255},x=(t,e,a)=>{t.bi_valid>16-a?(t.bi_buf|=e<>16-t.bi_valid,t.bi_valid+=a-16):(t.bi_buf|=e<{x(t,a[2*e],a[2*e+1])},A=(t,e)=>{let a=0;do{a|=1&t,t>>>=1,a<<=1}while(--e>0);return a>>>1},E=(t,e,a)=>{const i=new Array(16);let n,r,o=0;for(n=1;n<=s;n++)o=o+a[n-1]<<1,i[n]=o;for(r=0;r<=e;r++){let e=t[2*r+1];0!==e&&(t[2*r]=A(i[e]++,e))}},R=t=>{let e;for(e=0;e{t.bi_valid>8?y(t,t.bi_buf):t.bi_valid>0&&(t.pending_buf[t.pending++]=t.bi_buf),t.bi_buf=0,t.bi_valid=0},U=(t,e,a,i)=>{const n=2*e,s=2*a;return t[n]{const i=t.heap[a];let n=a<<1;for(;n<=t.heap_len&&(n{let n,s,l,h,d=0;if(0!==t.sym_next)do{n=255&t.pending_buf[t.sym_buf+d++],n+=(255&t.pending_buf[t.sym_buf+d++])<<8,s=t.pending_buf[t.sym_buf+d++],0===n?z(t,s,e):(l=c[s],z(t,l+a+1,e),h=r[l],0!==h&&(s-=u[l],x(t,s,h)),n--,l=v(n),z(t,l,i),h=o[l],0!==h&&(n-=w[l],x(t,n,h)))}while(d{const a=e.dyn_tree,i=e.stat_desc.static_tree,n=e.stat_desc.has_stree,r=e.stat_desc.elems;let o,l,h,d=-1;for(t.heap_len=0,t.heap_max=573,o=0;o>1;o>=1;o--)S(t,a,o);h=r;do{o=t.heap[1],t.heap[1]=t.heap[t.heap_len--],S(t,a,1),l=t.heap[1],t.heap[--t.heap_max]=o,t.heap[--t.heap_max]=l,a[2*h]=a[2*o]+a[2*l],t.depth[h]=(t.depth[o]>=t.depth[l]?t.depth[o]:t.depth[l])+1,a[2*o+1]=a[2*l+1]=h,t.heap[1]=h++,S(t,a,1)}while(t.heap_len>=2);t.heap[--t.heap_max]=t.heap[1],((t,e)=>{const a=e.dyn_tree,i=e.max_code,n=e.stat_desc.static_tree,r=e.stat_desc.has_stree,o=e.stat_desc.extra_bits,l=e.stat_desc.extra_base,h=e.stat_desc.max_length;let d,_,f,c,u,w,m=0;for(c=0;c<=s;c++)t.bl_count[c]=0;for(a[2*t.heap[t.heap_max]+1]=0,d=t.heap_max+1;d<573;d++)_=t.heap[d],c=a[2*a[2*_+1]+1]+1,c>h&&(c=h,m++),a[2*_+1]=c,_>i||(t.bl_count[c]++,u=0,_>=l&&(u=o[_-l]),w=a[2*_],t.opt_len+=w*(c+u),r&&(t.static_len+=w*(n[2*_+1]+u)));if(0!==m){do{for(c=h-1;0===t.bl_count[c];)c--;t.bl_count[c]--,t.bl_count[c+1]+=2,t.bl_count[h]--,m-=2}while(m>0);for(c=h;0!==c;c--)for(_=t.bl_count[c];0!==_;)f=t.heap[--d],f>i||(a[2*f+1]!==c&&(t.opt_len+=(c-a[2*f+1])*a[2*f],a[2*f+1]=c),_--)}})(t,e),E(a,d,t.bl_count)},O=(t,e,a)=>{let i,n,s=-1,r=e[1],o=0,l=7,h=4;for(0===r&&(l=138,h=3),e[2*(a+1)+1]=65535,i=0;i<=a;i++)n=r,r=e[2*(i+1)+1],++o{let i,n,s=-1,r=e[1],o=0,l=7,h=4;for(0===r&&(l=138,h=3),i=0;i<=a;i++)if(n=r,r=e[2*(i+1)+1],!(++o{x(t,0+(i?1:0),3),Z(t),y(t,a),y(t,~a),a&&t.pending_buf.set(t.window.subarray(e,e+a),t.pending),t.pending+=a};var N=(t,e,i,n)=>{let s,r,o=0;t.level>0?(2===t.strm.data_type&&(t.strm.data_type=(t=>{let e,i=4093624447;for(e=0;e<=31;e++,i>>>=1)if(1&i&&0!==t.dyn_ltree[2*e])return 0;if(0!==t.dyn_ltree[18]||0!==t.dyn_ltree[20]||0!==t.dyn_ltree[26])return 1;for(e=32;e{let e;for(O(t,t.dyn_ltree,t.l_desc.max_code),O(t,t.dyn_dtree,t.d_desc.max_code),T(t,t.bl_desc),e=18;e>=3&&0===t.bl_tree[2*h[e]+1];e--);return t.opt_len+=3*(e+1)+5+5+4,e})(t),s=t.opt_len+3+7>>>3,r=t.static_len+3+7>>>3,r<=s&&(s=r)):s=r=i+5,i+4<=s&&-1!==e?L(t,e,i,n):4===t.strategy||r===s?(x(t,2+(n?1:0),3),D(t,d,_)):(x(t,4+(n?1:0),3),((t,e,a,i)=>{let n;for(x(t,e-257,5),x(t,a-1,5),x(t,i-4,4),n=0;n{F||((()=>{let t,e,a,h,k;const v=new Array(16);for(a=0,h=0;h<28;h++)for(u[h]=a,t=0;t<1<>=7;h(t.pending_buf[t.sym_buf+t.sym_next++]=e,t.pending_buf[t.sym_buf+t.sym_next++]=e>>8,t.pending_buf[t.sym_buf+t.sym_next++]=i,0===e?t.dyn_ltree[2*i]++:(t.matches++,e--,t.dyn_ltree[2*(c[i]+a+1)]++,t.dyn_dtree[2*v(e)]++),t.sym_next===t.sym_end),_tr_align:t=>{x(t,2,3),z(t,256,d),(t=>{16===t.bi_valid?(y(t,t.bi_buf),t.bi_buf=0,t.bi_valid=0):t.bi_valid>=8&&(t.pending_buf[t.pending++]=255&t.bi_buf,t.bi_buf>>=8,t.bi_valid-=8)})(t)}};var C=(t,e,a,i)=>{let n=65535&t|0,s=t>>>16&65535|0,r=0;for(;0!==a;){r=a>2e3?2e3:a,a-=r;do{n=n+e[i++]|0,s=s+n|0}while(--r);n%=65521,s%=65521}return n|s<<16|0};const M=new Uint32Array((()=>{let t,e=[];for(var a=0;a<256;a++){t=a;for(var i=0;i<8;i++)t=1&t?3988292384^t>>>1:t>>>1;e[a]=t}return e})());var H=(t,e,a,i)=>{const n=M,s=i+a;t^=-1;for(let a=i;a>>8^n[255&(t^e[a])];return-1^t},j={2:"need dictionary",1:"stream end",0:"","-1":"file error","-2":"stream error","-3":"data error","-4":"insufficient memory","-5":"buffer error","-6":"incompatible version"},K={Z_NO_FLUSH:0,Z_PARTIAL_FLUSH:1,Z_SYNC_FLUSH:2,Z_FULL_FLUSH:3,Z_FINISH:4,Z_BLOCK:5,Z_TREES:6,Z_OK:0,Z_STREAM_END:1,Z_NEED_DICT:2,Z_ERRNO:-1,Z_STREAM_ERROR:-2,Z_DATA_ERROR:-3,Z_MEM_ERROR:-4,Z_BUF_ERROR:-5,Z_NO_COMPRESSION:0,Z_BEST_SPEED:1,Z_BEST_COMPRESSION:9,Z_DEFAULT_COMPRESSION:-1,Z_FILTERED:1,Z_HUFFMAN_ONLY:2,Z_RLE:3,Z_FIXED:4,Z_DEFAULT_STRATEGY:0,Z_BINARY:0,Z_TEXT:1,Z_UNKNOWN:2,Z_DEFLATED:8};const{_tr_init:P,_tr_stored_block:Y,_tr_flush_block:G,_tr_tally:X,_tr_align:W}=B,{Z_NO_FLUSH:q,Z_PARTIAL_FLUSH:J,Z_FULL_FLUSH:Q,Z_FINISH:V,Z_BLOCK:$,Z_OK:tt,Z_STREAM_END:et,Z_STREAM_ERROR:at,Z_DATA_ERROR:it,Z_BUF_ERROR:nt,Z_DEFAULT_COMPRESSION:st,Z_FILTERED:rt,Z_HUFFMAN_ONLY:ot,Z_RLE:lt,Z_FIXED:ht,Z_DEFAULT_STRATEGY:dt,Z_UNKNOWN:_t,Z_DEFLATED:ft}=K,ct=258,ut=262,wt=42,mt=113,bt=666,gt=(t,e)=>(t.msg=j[e],e),pt=t=>2*t-(t>4?9:0),kt=t=>{let e=t.length;for(;--e>=0;)t[e]=0},vt=t=>{let e,a,i,n=t.w_size;e=t.hash_size,i=e;do{a=t.head[--i],t.head[i]=a>=n?a-n:0}while(--e);e=n,i=e;do{a=t.prev[--i],t.prev[i]=a>=n?a-n:0}while(--e)};let yt=(t,e,a)=>(e<{const e=t.state;let a=e.pending;a>t.avail_out&&(a=t.avail_out),0!==a&&(t.output.set(e.pending_buf.subarray(e.pending_out,e.pending_out+a),t.next_out),t.next_out+=a,e.pending_out+=a,t.total_out+=a,t.avail_out-=a,e.pending-=a,0===e.pending&&(e.pending_out=0))},zt=(t,e)=>{G(t,t.block_start>=0?t.block_start:-1,t.strstart-t.block_start,e),t.block_start=t.strstart,xt(t.strm)},At=(t,e)=>{t.pending_buf[t.pending++]=e},Et=(t,e)=>{t.pending_buf[t.pending++]=e>>>8&255,t.pending_buf[t.pending++]=255&e},Rt=(t,e,a,i)=>{let n=t.avail_in;return n>i&&(n=i),0===n?0:(t.avail_in-=n,e.set(t.input.subarray(t.next_in,t.next_in+n),a),1===t.state.wrap?t.adler=C(t.adler,e,n,a):2===t.state.wrap&&(t.adler=H(t.adler,e,n,a)),t.next_in+=n,t.total_in+=n,n)},Zt=(t,e)=>{let a,i,n=t.max_chain_length,s=t.strstart,r=t.prev_length,o=t.nice_match;const l=t.strstart>t.w_size-ut?t.strstart-(t.w_size-ut):0,h=t.window,d=t.w_mask,_=t.prev,f=t.strstart+ct;let c=h[s+r-1],u=h[s+r];t.prev_length>=t.good_match&&(n>>=2),o>t.lookahead&&(o=t.lookahead);do{if(a=e,h[a+r]===u&&h[a+r-1]===c&&h[a]===h[s]&&h[++a]===h[s+1]){s+=2,a++;do{}while(h[++s]===h[++a]&&h[++s]===h[++a]&&h[++s]===h[++a]&&h[++s]===h[++a]&&h[++s]===h[++a]&&h[++s]===h[++a]&&h[++s]===h[++a]&&h[++s]===h[++a]&&sr){if(t.match_start=e,r=i,i>=o)break;c=h[s+r-1],u=h[s+r]}}}while((e=_[e&d])>l&&0!=--n);return r<=t.lookahead?r:t.lookahead},Ut=t=>{const e=t.w_size;let a,i,n;do{if(i=t.window_size-t.lookahead-t.strstart,t.strstart>=e+(e-ut)&&(t.window.set(t.window.subarray(e,e+e-i),0),t.match_start-=e,t.strstart-=e,t.block_start-=e,t.insert>t.strstart&&(t.insert=t.strstart),vt(t),i+=e),0===t.strm.avail_in)break;if(a=Rt(t.strm,t.window,t.strstart+t.lookahead,i),t.lookahead+=a,t.lookahead+t.insert>=3)for(n=t.strstart-t.insert,t.ins_h=t.window[n],t.ins_h=yt(t,t.ins_h,t.window[n+1]);t.insert&&(t.ins_h=yt(t,t.ins_h,t.window[n+3-1]),t.prev[n&t.w_mask]=t.head[t.ins_h],t.head[t.ins_h]=n,n++,t.insert--,!(t.lookahead+t.insert<3)););}while(t.lookahead{let a,i,n,s=t.pending_buf_size-5>t.w_size?t.w_size:t.pending_buf_size-5,r=0,o=t.strm.avail_in;do{if(a=65535,n=t.bi_valid+42>>3,t.strm.avail_outi+t.strm.avail_in&&(a=i+t.strm.avail_in),a>n&&(a=n),a>8,t.pending_buf[t.pending-2]=~a,t.pending_buf[t.pending-1]=~a>>8,xt(t.strm),i&&(i>a&&(i=a),t.strm.output.set(t.window.subarray(t.block_start,t.block_start+i),t.strm.next_out),t.strm.next_out+=i,t.strm.avail_out-=i,t.strm.total_out+=i,t.block_start+=i,a-=i),a&&(Rt(t.strm,t.strm.output,t.strm.next_out,a),t.strm.next_out+=a,t.strm.avail_out-=a,t.strm.total_out+=a)}while(0===r);return o-=t.strm.avail_in,o&&(o>=t.w_size?(t.matches=2,t.window.set(t.strm.input.subarray(t.strm.next_in-t.w_size,t.strm.next_in),0),t.strstart=t.w_size,t.insert=t.strstart):(t.window_size-t.strstart<=o&&(t.strstart-=t.w_size,t.window.set(t.window.subarray(t.w_size,t.w_size+t.strstart),0),t.matches<2&&t.matches++,t.insert>t.strstart&&(t.insert=t.strstart)),t.window.set(t.strm.input.subarray(t.strm.next_in-o,t.strm.next_in),t.strstart),t.strstart+=o,t.insert+=o>t.w_size-t.insert?t.w_size-t.insert:o),t.block_start=t.strstart),t.high_watern&&t.block_start>=t.w_size&&(t.block_start-=t.w_size,t.strstart-=t.w_size,t.window.set(t.window.subarray(t.w_size,t.w_size+t.strstart),0),t.matches<2&&t.matches++,n+=t.w_size,t.insert>t.strstart&&(t.insert=t.strstart)),n>t.strm.avail_in&&(n=t.strm.avail_in),n&&(Rt(t.strm,t.window,t.strstart,n),t.strstart+=n,t.insert+=n>t.w_size-t.insert?t.w_size-t.insert:n),t.high_water>3,n=t.pending_buf_size-n>65535?65535:t.pending_buf_size-n,s=n>t.w_size?t.w_size:n,i=t.strstart-t.block_start,(i>=s||(i||e===V)&&e!==q&&0===t.strm.avail_in&&i<=n)&&(a=i>n?n:i,r=e===V&&0===t.strm.avail_in&&a===i?1:0,Y(t,t.block_start,a,r),t.block_start+=a,xt(t.strm)),r?3:1)},Dt=(t,e)=>{let a,i;for(;;){if(t.lookahead=3&&(t.ins_h=yt(t,t.ins_h,t.window[t.strstart+3-1]),a=t.prev[t.strstart&t.w_mask]=t.head[t.ins_h],t.head[t.ins_h]=t.strstart),0!==a&&t.strstart-a<=t.w_size-ut&&(t.match_length=Zt(t,a)),t.match_length>=3)if(i=X(t,t.strstart-t.match_start,t.match_length-3),t.lookahead-=t.match_length,t.match_length<=t.max_lazy_match&&t.lookahead>=3){t.match_length--;do{t.strstart++,t.ins_h=yt(t,t.ins_h,t.window[t.strstart+3-1]),a=t.prev[t.strstart&t.w_mask]=t.head[t.ins_h],t.head[t.ins_h]=t.strstart}while(0!=--t.match_length);t.strstart++}else t.strstart+=t.match_length,t.match_length=0,t.ins_h=t.window[t.strstart],t.ins_h=yt(t,t.ins_h,t.window[t.strstart+1]);else i=X(t,0,t.window[t.strstart]),t.lookahead--,t.strstart++;if(i&&(zt(t,!1),0===t.strm.avail_out))return 1}return t.insert=t.strstart<2?t.strstart:2,e===V?(zt(t,!0),0===t.strm.avail_out?3:4):t.sym_next&&(zt(t,!1),0===t.strm.avail_out)?1:2},Tt=(t,e)=>{let a,i,n;for(;;){if(t.lookahead=3&&(t.ins_h=yt(t,t.ins_h,t.window[t.strstart+3-1]),a=t.prev[t.strstart&t.w_mask]=t.head[t.ins_h],t.head[t.ins_h]=t.strstart),t.prev_length=t.match_length,t.prev_match=t.match_start,t.match_length=2,0!==a&&t.prev_length4096)&&(t.match_length=2)),t.prev_length>=3&&t.match_length<=t.prev_length){n=t.strstart+t.lookahead-3,i=X(t,t.strstart-1-t.prev_match,t.prev_length-3),t.lookahead-=t.prev_length-1,t.prev_length-=2;do{++t.strstart<=n&&(t.ins_h=yt(t,t.ins_h,t.window[t.strstart+3-1]),a=t.prev[t.strstart&t.w_mask]=t.head[t.ins_h],t.head[t.ins_h]=t.strstart)}while(0!=--t.prev_length);if(t.match_available=0,t.match_length=2,t.strstart++,i&&(zt(t,!1),0===t.strm.avail_out))return 1}else if(t.match_available){if(i=X(t,0,t.window[t.strstart-1]),i&&zt(t,!1),t.strstart++,t.lookahead--,0===t.strm.avail_out)return 1}else t.match_available=1,t.strstart++,t.lookahead--}return t.match_available&&(i=X(t,0,t.window[t.strstart-1]),t.match_available=0),t.insert=t.strstart<2?t.strstart:2,e===V?(zt(t,!0),0===t.strm.avail_out?3:4):t.sym_next&&(zt(t,!1),0===t.strm.avail_out)?1:2};function Ot(t,e,a,i,n){this.good_length=t,this.max_lazy=e,this.nice_length=a,this.max_chain=i,this.func=n}const It=[new Ot(0,0,0,0,St),new Ot(4,4,8,4,Dt),new Ot(4,5,16,8,Dt),new Ot(4,6,32,32,Dt),new Ot(4,4,16,16,Tt),new Ot(8,16,32,32,Tt),new Ot(8,16,128,128,Tt),new Ot(8,32,128,256,Tt),new Ot(32,128,258,1024,Tt),new Ot(32,258,258,4096,Tt)];function Ft(){this.strm=null,this.status=0,this.pending_buf=null,this.pending_buf_size=0,this.pending_out=0,this.pending=0,this.wrap=0,this.gzhead=null,this.gzindex=0,this.method=ft,this.last_flush=-1,this.w_size=0,this.w_bits=0,this.w_mask=0,this.window=null,this.window_size=0,this.prev=null,this.head=null,this.ins_h=0,this.hash_size=0,this.hash_bits=0,this.hash_mask=0,this.hash_shift=0,this.block_start=0,this.match_length=0,this.prev_match=0,this.match_available=0,this.strstart=0,this.match_start=0,this.lookahead=0,this.prev_length=0,this.max_chain_length=0,this.max_lazy_match=0,this.level=0,this.strategy=0,this.good_match=0,this.nice_match=0,this.dyn_ltree=new Uint16Array(1146),this.dyn_dtree=new Uint16Array(122),this.bl_tree=new Uint16Array(78),kt(this.dyn_ltree),kt(this.dyn_dtree),kt(this.bl_tree),this.l_desc=null,this.d_desc=null,this.bl_desc=null,this.bl_count=new Uint16Array(16),this.heap=new Uint16Array(573),kt(this.heap),this.heap_len=0,this.heap_max=0,this.depth=new Uint16Array(573),kt(this.depth),this.sym_buf=0,this.lit_bufsize=0,this.sym_next=0,this.sym_end=0,this.opt_len=0,this.static_len=0,this.matches=0,this.insert=0,this.bi_buf=0,this.bi_valid=0}const Lt=t=>{if(!t)return 1;const e=t.state;return!e||e.strm!==t||e.status!==wt&&57!==e.status&&69!==e.status&&73!==e.status&&91!==e.status&&103!==e.status&&e.status!==mt&&e.status!==bt?1:0},Nt=t=>{if(Lt(t))return gt(t,at);t.total_in=t.total_out=0,t.data_type=_t;const e=t.state;return e.pending=0,e.pending_out=0,e.wrap<0&&(e.wrap=-e.wrap),e.status=2===e.wrap?57:e.wrap?wt:mt,t.adler=2===e.wrap?0:1,e.last_flush=-2,P(e),tt},Bt=t=>{const e=Nt(t);var a;return e===tt&&((a=t.state).window_size=2*a.w_size,kt(a.head),a.max_lazy_match=It[a.level].max_lazy,a.good_match=It[a.level].good_length,a.nice_match=It[a.level].nice_length,a.max_chain_length=It[a.level].max_chain,a.strstart=0,a.block_start=0,a.lookahead=0,a.insert=0,a.match_length=a.prev_length=2,a.match_available=0,a.ins_h=0),e},Ct=(t,e,a,i,n,s)=>{if(!t)return at;let r=1;if(e===st&&(e=6),i<0?(r=0,i=-i):i>15&&(r=2,i-=16),n<1||n>9||a!==ft||i<8||i>15||e<0||e>9||s<0||s>ht||8===i&&1!==r)return gt(t,at);8===i&&(i=9);const o=new Ft;return t.state=o,o.strm=t,o.status=wt,o.wrap=r,o.gzhead=null,o.w_bits=i,o.w_size=1<Ct(t,e,ft,15,8,dt),deflateInit2:Ct,deflateReset:Bt,deflateResetKeep:Nt,deflateSetHeader:(t,e)=>Lt(t)||2!==t.state.wrap?at:(t.state.gzhead=e,tt),deflate:(t,e)=>{if(Lt(t)||e>$||e<0)return t?gt(t,at):at;const a=t.state;if(!t.output||0!==t.avail_in&&!t.input||a.status===bt&&e!==V)return gt(t,0===t.avail_out?nt:at);const i=a.last_flush;if(a.last_flush=e,0!==a.pending){if(xt(t),0===t.avail_out)return a.last_flush=-1,tt}else if(0===t.avail_in&&pt(e)<=pt(i)&&e!==V)return gt(t,nt);if(a.status===bt&&0!==t.avail_in)return gt(t,nt);if(a.status===wt&&0===a.wrap&&(a.status=mt),a.status===wt){let e=ft+(a.w_bits-8<<4)<<8,i=-1;if(i=a.strategy>=ot||a.level<2?0:a.level<6?1:6===a.level?2:3,e|=i<<6,0!==a.strstart&&(e|=32),e+=31-e%31,Et(a,e),0!==a.strstart&&(Et(a,t.adler>>>16),Et(a,65535&t.adler)),t.adler=1,a.status=mt,xt(t),0!==a.pending)return a.last_flush=-1,tt}if(57===a.status)if(t.adler=0,At(a,31),At(a,139),At(a,8),a.gzhead)At(a,(a.gzhead.text?1:0)+(a.gzhead.hcrc?2:0)+(a.gzhead.extra?4:0)+(a.gzhead.name?8:0)+(a.gzhead.comment?16:0)),At(a,255&a.gzhead.time),At(a,a.gzhead.time>>8&255),At(a,a.gzhead.time>>16&255),At(a,a.gzhead.time>>24&255),At(a,9===a.level?2:a.strategy>=ot||a.level<2?4:0),At(a,255&a.gzhead.os),a.gzhead.extra&&a.gzhead.extra.length&&(At(a,255&a.gzhead.extra.length),At(a,a.gzhead.extra.length>>8&255)),a.gzhead.hcrc&&(t.adler=H(t.adler,a.pending_buf,a.pending,0)),a.gzindex=0,a.status=69;else if(At(a,0),At(a,0),At(a,0),At(a,0),At(a,0),At(a,9===a.level?2:a.strategy>=ot||a.level<2?4:0),At(a,3),a.status=mt,xt(t),0!==a.pending)return a.last_flush=-1,tt;if(69===a.status){if(a.gzhead.extra){let e=a.pending,i=(65535&a.gzhead.extra.length)-a.gzindex;for(;a.pending+i>a.pending_buf_size;){let n=a.pending_buf_size-a.pending;if(a.pending_buf.set(a.gzhead.extra.subarray(a.gzindex,a.gzindex+n),a.pending),a.pending=a.pending_buf_size,a.gzhead.hcrc&&a.pending>e&&(t.adler=H(t.adler,a.pending_buf,a.pending-e,e)),a.gzindex+=n,xt(t),0!==a.pending)return a.last_flush=-1,tt;e=0,i-=n}let n=new Uint8Array(a.gzhead.extra);a.pending_buf.set(n.subarray(a.gzindex,a.gzindex+i),a.pending),a.pending+=i,a.gzhead.hcrc&&a.pending>e&&(t.adler=H(t.adler,a.pending_buf,a.pending-e,e)),a.gzindex=0}a.status=73}if(73===a.status){if(a.gzhead.name){let e,i=a.pending;do{if(a.pending===a.pending_buf_size){if(a.gzhead.hcrc&&a.pending>i&&(t.adler=H(t.adler,a.pending_buf,a.pending-i,i)),xt(t),0!==a.pending)return a.last_flush=-1,tt;i=0}e=a.gzindexi&&(t.adler=H(t.adler,a.pending_buf,a.pending-i,i)),a.gzindex=0}a.status=91}if(91===a.status){if(a.gzhead.comment){let e,i=a.pending;do{if(a.pending===a.pending_buf_size){if(a.gzhead.hcrc&&a.pending>i&&(t.adler=H(t.adler,a.pending_buf,a.pending-i,i)),xt(t),0!==a.pending)return a.last_flush=-1,tt;i=0}e=a.gzindexi&&(t.adler=H(t.adler,a.pending_buf,a.pending-i,i))}a.status=103}if(103===a.status){if(a.gzhead.hcrc){if(a.pending+2>a.pending_buf_size&&(xt(t),0!==a.pending))return a.last_flush=-1,tt;At(a,255&t.adler),At(a,t.adler>>8&255),t.adler=0}if(a.status=mt,xt(t),0!==a.pending)return a.last_flush=-1,tt}if(0!==t.avail_in||0!==a.lookahead||e!==q&&a.status!==bt){let i=0===a.level?St(a,e):a.strategy===ot?((t,e)=>{let a;for(;;){if(0===t.lookahead&&(Ut(t),0===t.lookahead)){if(e===q)return 1;break}if(t.match_length=0,a=X(t,0,t.window[t.strstart]),t.lookahead--,t.strstart++,a&&(zt(t,!1),0===t.strm.avail_out))return 1}return t.insert=0,e===V?(zt(t,!0),0===t.strm.avail_out?3:4):t.sym_next&&(zt(t,!1),0===t.strm.avail_out)?1:2})(a,e):a.strategy===lt?((t,e)=>{let a,i,n,s;const r=t.window;for(;;){if(t.lookahead<=ct){if(Ut(t),t.lookahead<=ct&&e===q)return 1;if(0===t.lookahead)break}if(t.match_length=0,t.lookahead>=3&&t.strstart>0&&(n=t.strstart-1,i=r[n],i===r[++n]&&i===r[++n]&&i===r[++n])){s=t.strstart+ct;do{}while(i===r[++n]&&i===r[++n]&&i===r[++n]&&i===r[++n]&&i===r[++n]&&i===r[++n]&&i===r[++n]&&i===r[++n]&&nt.lookahead&&(t.match_length=t.lookahead)}if(t.match_length>=3?(a=X(t,1,t.match_length-3),t.lookahead-=t.match_length,t.strstart+=t.match_length,t.match_length=0):(a=X(t,0,t.window[t.strstart]),t.lookahead--,t.strstart++),a&&(zt(t,!1),0===t.strm.avail_out))return 1}return t.insert=0,e===V?(zt(t,!0),0===t.strm.avail_out?3:4):t.sym_next&&(zt(t,!1),0===t.strm.avail_out)?1:2})(a,e):It[a.level].func(a,e);if(3!==i&&4!==i||(a.status=bt),1===i||3===i)return 0===t.avail_out&&(a.last_flush=-1),tt;if(2===i&&(e===J?W(a):e!==$&&(Y(a,0,0,!1),e===Q&&(kt(a.head),0===a.lookahead&&(a.strstart=0,a.block_start=0,a.insert=0))),xt(t),0===t.avail_out))return a.last_flush=-1,tt}return e!==V?tt:a.wrap<=0?et:(2===a.wrap?(At(a,255&t.adler),At(a,t.adler>>8&255),At(a,t.adler>>16&255),At(a,t.adler>>24&255),At(a,255&t.total_in),At(a,t.total_in>>8&255),At(a,t.total_in>>16&255),At(a,t.total_in>>24&255)):(Et(a,t.adler>>>16),Et(a,65535&t.adler)),xt(t),a.wrap>0&&(a.wrap=-a.wrap),0!==a.pending?tt:et)},deflateEnd:t=>{if(Lt(t))return at;const e=t.state.status;return t.state=null,e===mt?gt(t,it):tt},deflateSetDictionary:(t,e)=>{let a=e.length;if(Lt(t))return at;const i=t.state,n=i.wrap;if(2===n||1===n&&i.status!==wt||i.lookahead)return at;if(1===n&&(t.adler=C(t.adler,e,a,0)),i.wrap=0,a>=i.w_size){0===n&&(kt(i.head),i.strstart=0,i.block_start=0,i.insert=0);let t=new Uint8Array(i.w_size);t.set(e.subarray(a-i.w_size,a),0),e=t,a=i.w_size}const s=t.avail_in,r=t.next_in,o=t.input;for(t.avail_in=a,t.next_in=0,t.input=e,Ut(i);i.lookahead>=3;){let t=i.strstart,e=i.lookahead-2;do{i.ins_h=yt(i,i.ins_h,i.window[t+3-1]),i.prev[t&i.w_mask]=i.head[i.ins_h],i.head[i.ins_h]=t,t++}while(--e);i.strstart=t,i.lookahead=2,Ut(i)}return i.strstart+=i.lookahead,i.block_start=i.strstart,i.insert=i.lookahead,i.lookahead=0,i.match_length=i.prev_length=2,i.match_available=0,t.next_in=r,t.input=o,t.avail_in=s,i.wrap=n,tt},deflateInfo:"pako deflate (from Nodeca project)"};const Ht=(t,e)=>Object.prototype.hasOwnProperty.call(t,e);var jt=function(t){const e=Array.prototype.slice.call(arguments,1);for(;e.length;){const a=e.shift();if(a){if("object"!=typeof a)throw new TypeError(a+"must be non-object");for(const e in a)Ht(a,e)&&(t[e]=a[e])}}return t},Kt=t=>{let e=0;for(let a=0,i=t.length;a=252?6:t>=248?5:t>=240?4:t>=224?3:t>=192?2:1;Yt[254]=Yt[254]=1;var Gt=t=>{if("function"==typeof TextEncoder&&TextEncoder.prototype.encode)return(new TextEncoder).encode(t);let e,a,i,n,s,r=t.length,o=0;for(n=0;n>>6,e[s++]=128|63&a):a<65536?(e[s++]=224|a>>>12,e[s++]=128|a>>>6&63,e[s++]=128|63&a):(e[s++]=240|a>>>18,e[s++]=128|a>>>12&63,e[s++]=128|a>>>6&63,e[s++]=128|63&a);return e},Xt=(t,e)=>{const a=e||t.length;if("function"==typeof TextDecoder&&TextDecoder.prototype.decode)return(new TextDecoder).decode(t.subarray(0,e));let i,n;const s=new Array(2*a);for(n=0,i=0;i4)s[n++]=65533,i+=r-1;else{for(e&=2===r?31:3===r?15:7;r>1&&i1?s[n++]=65533:e<65536?s[n++]=e:(e-=65536,s[n++]=55296|e>>10&1023,s[n++]=56320|1023&e)}}return((t,e)=>{if(e<65534&&t.subarray&&Pt)return String.fromCharCode.apply(null,t.length===e?t:t.subarray(0,e));let a="";for(let i=0;i{(e=e||t.length)>t.length&&(e=t.length);let a=e-1;for(;a>=0&&128==(192&t[a]);)a--;return a<0||0===a?e:a+Yt[t[a]]>e?a:e};var qt=function(){this.input=null,this.next_in=0,this.avail_in=0,this.total_in=0,this.output=null,this.next_out=0,this.avail_out=0,this.total_out=0,this.msg="",this.state=null,this.data_type=2,this.adler=0};const Jt=Object.prototype.toString,{Z_NO_FLUSH:Qt,Z_SYNC_FLUSH:Vt,Z_FULL_FLUSH:$t,Z_FINISH:te,Z_OK:ee,Z_STREAM_END:ae,Z_DEFAULT_COMPRESSION:ie,Z_DEFAULT_STRATEGY:ne,Z_DEFLATED:se}=K;function re(t){this.options=jt({level:ie,method:se,chunkSize:16384,windowBits:15,memLevel:8,strategy:ne},t||{});let e=this.options;e.raw&&e.windowBits>0?e.windowBits=-e.windowBits:e.gzip&&e.windowBits>0&&e.windowBits<16&&(e.windowBits+=16),this.err=0,this.msg="",this.ended=!1,this.chunks=[],this.strm=new qt,this.strm.avail_out=0;let a=Mt.deflateInit2(this.strm,e.level,e.method,e.windowBits,e.memLevel,e.strategy);if(a!==ee)throw new Error(j[a]);if(e.header&&Mt.deflateSetHeader(this.strm,e.header),e.dictionary){let t;if(t="string"==typeof e.dictionary?Gt(e.dictionary):"[object ArrayBuffer]"===Jt.call(e.dictionary)?new Uint8Array(e.dictionary):e.dictionary,a=Mt.deflateSetDictionary(this.strm,t),a!==ee)throw new Error(j[a]);this._dict_set=!0}}function oe(t,e){const a=new re(e);if(a.push(t,!0),a.err)throw a.msg||j[a.err];return a.result}re.prototype.push=function(t,e){const a=this.strm,i=this.options.chunkSize;let n,s;if(this.ended)return!1;for(s=e===~~e?e:!0===e?te:Qt,"string"==typeof t?a.input=Gt(t):"[object ArrayBuffer]"===Jt.call(t)?a.input=new Uint8Array(t):a.input=t,a.next_in=0,a.avail_in=a.input.length;;)if(0===a.avail_out&&(a.output=new Uint8Array(i),a.next_out=0,a.avail_out=i),(s===Vt||s===$t)&&a.avail_out<=6)this.onData(a.output.subarray(0,a.next_out)),a.avail_out=0;else{if(n=Mt.deflate(a,s),n===ae)return a.next_out>0&&this.onData(a.output.subarray(0,a.next_out)),n=Mt.deflateEnd(this.strm),this.onEnd(n),this.ended=!0,n===ee;if(0!==a.avail_out){if(s>0&&a.next_out>0)this.onData(a.output.subarray(0,a.next_out)),a.avail_out=0;else if(0===a.avail_in)break}else this.onData(a.output)}return!0},re.prototype.onData=function(t){this.chunks.push(t)},re.prototype.onEnd=function(t){t===ee&&(this.result=Kt(this.chunks)),this.chunks=[],this.err=t,this.msg=this.strm.msg};var le={Deflate:re,deflate:oe,deflateRaw:function(t,e){return(e=e||{}).raw=!0,oe(t,e)},gzip:function(t,e){return(e=e||{}).gzip=!0,oe(t,e)},constants:K};const he=16209;var de=function(t,e){let a,i,n,s,r,o,l,h,d,_,f,c,u,w,m,b,g,p,k,v,y,x,z,A;const E=t.state;a=t.next_in,z=t.input,i=a+(t.avail_in-5),n=t.next_out,A=t.output,s=n-(e-t.avail_out),r=n+(t.avail_out-257),o=E.dmax,l=E.wsize,h=E.whave,d=E.wnext,_=E.window,f=E.hold,c=E.bits,u=E.lencode,w=E.distcode,m=(1<>>24,f>>>=p,c-=p,p=g>>>16&255,0===p)A[n++]=65535&g;else{if(!(16&p)){if(0==(64&p)){g=u[(65535&g)+(f&(1<>>=p,c-=p),c<15&&(f+=z[a++]<>>24,f>>>=p,c-=p,p=g>>>16&255,!(16&p)){if(0==(64&p)){g=w[(65535&g)+(f&(1<o){t.msg="invalid distance too far back",E.mode=he;break t}if(f>>>=p,c-=p,p=n-s,v>p){if(p=v-p,p>h&&E.sane){t.msg="invalid distance too far back",E.mode=he;break t}if(y=0,x=_,0===d){if(y+=l-p,p2;)A[n++]=x[y++],A[n++]=x[y++],A[n++]=x[y++],k-=3;k&&(A[n++]=x[y++],k>1&&(A[n++]=x[y++]))}else{y=n-v;do{A[n++]=A[y++],A[n++]=A[y++],A[n++]=A[y++],k-=3}while(k>2);k&&(A[n++]=A[y++],k>1&&(A[n++]=A[y++]))}break}}break}}while(a>3,a-=k,c-=k<<3,f&=(1<{const l=o.bits;let h,d,_,f,c,u,w=0,m=0,b=0,g=0,p=0,k=0,v=0,y=0,x=0,z=0,A=null;const E=new Uint16Array(16),R=new Uint16Array(16);let Z,U,S,D=null;for(w=0;w<=_e;w++)E[w]=0;for(m=0;m=1&&0===E[g];g--);if(p>g&&(p=g),0===g)return n[s++]=20971520,n[s++]=20971520,o.bits=1,0;for(b=1;b0&&(0===t||1!==g))return-1;for(R[1]=0,w=1;w<_e;w++)R[w+1]=R[w]+E[w];for(m=0;m852||2===t&&x>592)return 1;for(;;){Z=w-v,r[m]+1=u?(U=D[r[m]-u],S=A[r[m]-u]):(U=96,S=0),h=1<>v)+d]=Z<<24|U<<16|S|0}while(0!==d);for(h=1<>=1;if(0!==h?(z&=h-1,z+=h):z=0,m++,0==--E[w]){if(w===g)break;w=e[a+r[m]]}if(w>p&&(z&f)!==_){for(0===v&&(v=p),c+=b,k=w-v,y=1<852||2===t&&x>592)return 1;_=z&f,n[_]=p<<24|k<<16|c-s|0}}return 0!==z&&(n[c+z]=w-v<<24|64<<16|0),o.bits=p,0};const{Z_FINISH:be,Z_BLOCK:ge,Z_TREES:pe,Z_OK:ke,Z_STREAM_END:ve,Z_NEED_DICT:ye,Z_STREAM_ERROR:xe,Z_DATA_ERROR:ze,Z_MEM_ERROR:Ae,Z_BUF_ERROR:Ee,Z_DEFLATED:Re}=K,Ze=16180,Ue=16190,Se=16191,De=16192,Te=16194,Oe=16199,Ie=16200,Fe=16206,Le=16209,Ne=t=>(t>>>24&255)+(t>>>8&65280)+((65280&t)<<8)+((255&t)<<24);function Be(){this.strm=null,this.mode=0,this.last=!1,this.wrap=0,this.havedict=!1,this.flags=0,this.dmax=0,this.check=0,this.total=0,this.head=null,this.wbits=0,this.wsize=0,this.whave=0,this.wnext=0,this.window=null,this.hold=0,this.bits=0,this.length=0,this.offset=0,this.extra=0,this.lencode=null,this.distcode=null,this.lenbits=0,this.distbits=0,this.ncode=0,this.nlen=0,this.ndist=0,this.have=0,this.next=null,this.lens=new Uint16Array(320),this.work=new Uint16Array(288),this.lendyn=null,this.distdyn=null,this.sane=0,this.back=0,this.was=0}const Ce=t=>{if(!t)return 1;const e=t.state;return!e||e.strm!==t||e.mode16211?1:0},Me=t=>{if(Ce(t))return xe;const e=t.state;return t.total_in=t.total_out=e.total=0,t.msg="",e.wrap&&(t.adler=1&e.wrap),e.mode=Ze,e.last=0,e.havedict=0,e.flags=-1,e.dmax=32768,e.head=null,e.hold=0,e.bits=0,e.lencode=e.lendyn=new Int32Array(852),e.distcode=e.distdyn=new Int32Array(592),e.sane=1,e.back=-1,ke},He=t=>{if(Ce(t))return xe;const e=t.state;return e.wsize=0,e.whave=0,e.wnext=0,Me(t)},je=(t,e)=>{let a;if(Ce(t))return xe;const i=t.state;return e<0?(a=0,e=-e):(a=5+(e>>4),e<48&&(e&=15)),e&&(e<8||e>15)?xe:(null!==i.window&&i.wbits!==e&&(i.window=null),i.wrap=a,i.wbits=e,He(t))},Ke=(t,e)=>{if(!t)return xe;const a=new Be;t.state=a,a.strm=t,a.window=null,a.mode=Ze;const i=je(t,e);return i!==ke&&(t.state=null),i};let Pe,Ye,Ge=!0;const Xe=t=>{if(Ge){Pe=new Int32Array(512),Ye=new Int32Array(32);let e=0;for(;e<144;)t.lens[e++]=8;for(;e<256;)t.lens[e++]=9;for(;e<280;)t.lens[e++]=7;for(;e<288;)t.lens[e++]=8;for(me(1,t.lens,0,288,Pe,0,t.work,{bits:9}),e=0;e<32;)t.lens[e++]=5;me(2,t.lens,0,32,Ye,0,t.work,{bits:5}),Ge=!1}t.lencode=Pe,t.lenbits=9,t.distcode=Ye,t.distbits=5},We=(t,e,a,i)=>{let n;const s=t.state;return null===s.window&&(s.wsize=1<=s.wsize?(s.window.set(e.subarray(a-s.wsize,a),0),s.wnext=0,s.whave=s.wsize):(n=s.wsize-s.wnext,n>i&&(n=i),s.window.set(e.subarray(a-i,a-i+n),s.wnext),(i-=n)?(s.window.set(e.subarray(a-i,a),0),s.wnext=i,s.whave=s.wsize):(s.wnext+=n,s.wnext===s.wsize&&(s.wnext=0),s.whaveKe(t,15),inflateInit2:Ke,inflate:(t,e)=>{let a,i,n,s,r,o,l,h,d,_,f,c,u,w,m,b,g,p,k,v,y,x,z=0;const A=new Uint8Array(4);let E,R;const Z=new Uint8Array([16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15]);if(Ce(t)||!t.output||!t.input&&0!==t.avail_in)return xe;a=t.state,a.mode===Se&&(a.mode=De),r=t.next_out,n=t.output,l=t.avail_out,s=t.next_in,i=t.input,o=t.avail_in,h=a.hold,d=a.bits,_=o,f=l,x=ke;t:for(;;)switch(a.mode){case Ze:if(0===a.wrap){a.mode=De;break}for(;d<16;){if(0===o)break t;o--,h+=i[s++]<>>8&255,a.check=H(a.check,A,2,0),h=0,d=0,a.mode=16181;break}if(a.head&&(a.head.done=!1),!(1&a.wrap)||(((255&h)<<8)+(h>>8))%31){t.msg="incorrect header check",a.mode=Le;break}if((15&h)!==Re){t.msg="unknown compression method",a.mode=Le;break}if(h>>>=4,d-=4,y=8+(15&h),0===a.wbits&&(a.wbits=y),y>15||y>a.wbits){t.msg="invalid window size",a.mode=Le;break}a.dmax=1<>8&1),512&a.flags&&4&a.wrap&&(A[0]=255&h,A[1]=h>>>8&255,a.check=H(a.check,A,2,0)),h=0,d=0,a.mode=16182;case 16182:for(;d<32;){if(0===o)break t;o--,h+=i[s++]<>>8&255,A[2]=h>>>16&255,A[3]=h>>>24&255,a.check=H(a.check,A,4,0)),h=0,d=0,a.mode=16183;case 16183:for(;d<16;){if(0===o)break t;o--,h+=i[s++]<>8),512&a.flags&&4&a.wrap&&(A[0]=255&h,A[1]=h>>>8&255,a.check=H(a.check,A,2,0)),h=0,d=0,a.mode=16184;case 16184:if(1024&a.flags){for(;d<16;){if(0===o)break t;o--,h+=i[s++]<>>8&255,a.check=H(a.check,A,2,0)),h=0,d=0}else a.head&&(a.head.extra=null);a.mode=16185;case 16185:if(1024&a.flags&&(c=a.length,c>o&&(c=o),c&&(a.head&&(y=a.head.extra_len-a.length,a.head.extra||(a.head.extra=new Uint8Array(a.head.extra_len)),a.head.extra.set(i.subarray(s,s+c),y)),512&a.flags&&4&a.wrap&&(a.check=H(a.check,i,c,s)),o-=c,s+=c,a.length-=c),a.length))break t;a.length=0,a.mode=16186;case 16186:if(2048&a.flags){if(0===o)break t;c=0;do{y=i[s+c++],a.head&&y&&a.length<65536&&(a.head.name+=String.fromCharCode(y))}while(y&&c>9&1,a.head.done=!0),t.adler=a.check=0,a.mode=Se;break;case 16189:for(;d<32;){if(0===o)break t;o--,h+=i[s++]<>>=7&d,d-=7&d,a.mode=Fe;break}for(;d<3;){if(0===o)break t;o--,h+=i[s++]<>>=1,d-=1,3&h){case 0:a.mode=16193;break;case 1:if(Xe(a),a.mode=Oe,e===pe){h>>>=2,d-=2;break t}break;case 2:a.mode=16196;break;case 3:t.msg="invalid block type",a.mode=Le}h>>>=2,d-=2;break;case 16193:for(h>>>=7&d,d-=7&d;d<32;){if(0===o)break t;o--,h+=i[s++]<>>16^65535)){t.msg="invalid stored block lengths",a.mode=Le;break}if(a.length=65535&h,h=0,d=0,a.mode=Te,e===pe)break t;case Te:a.mode=16195;case 16195:if(c=a.length,c){if(c>o&&(c=o),c>l&&(c=l),0===c)break t;n.set(i.subarray(s,s+c),r),o-=c,s+=c,l-=c,r+=c,a.length-=c;break}a.mode=Se;break;case 16196:for(;d<14;){if(0===o)break t;o--,h+=i[s++]<>>=5,d-=5,a.ndist=1+(31&h),h>>>=5,d-=5,a.ncode=4+(15&h),h>>>=4,d-=4,a.nlen>286||a.ndist>30){t.msg="too many length or distance symbols",a.mode=Le;break}a.have=0,a.mode=16197;case 16197:for(;a.have>>=3,d-=3}for(;a.have<19;)a.lens[Z[a.have++]]=0;if(a.lencode=a.lendyn,a.lenbits=7,E={bits:a.lenbits},x=me(0,a.lens,0,19,a.lencode,0,a.work,E),a.lenbits=E.bits,x){t.msg="invalid code lengths set",a.mode=Le;break}a.have=0,a.mode=16198;case 16198:for(;a.have>>24,b=z>>>16&255,g=65535&z,!(m<=d);){if(0===o)break t;o--,h+=i[s++]<>>=m,d-=m,a.lens[a.have++]=g;else{if(16===g){for(R=m+2;d>>=m,d-=m,0===a.have){t.msg="invalid bit length repeat",a.mode=Le;break}y=a.lens[a.have-1],c=3+(3&h),h>>>=2,d-=2}else if(17===g){for(R=m+3;d>>=m,d-=m,y=0,c=3+(7&h),h>>>=3,d-=3}else{for(R=m+7;d>>=m,d-=m,y=0,c=11+(127&h),h>>>=7,d-=7}if(a.have+c>a.nlen+a.ndist){t.msg="invalid bit length repeat",a.mode=Le;break}for(;c--;)a.lens[a.have++]=y}}if(a.mode===Le)break;if(0===a.lens[256]){t.msg="invalid code -- missing end-of-block",a.mode=Le;break}if(a.lenbits=9,E={bits:a.lenbits},x=me(1,a.lens,0,a.nlen,a.lencode,0,a.work,E),a.lenbits=E.bits,x){t.msg="invalid literal/lengths set",a.mode=Le;break}if(a.distbits=6,a.distcode=a.distdyn,E={bits:a.distbits},x=me(2,a.lens,a.nlen,a.ndist,a.distcode,0,a.work,E),a.distbits=E.bits,x){t.msg="invalid distances set",a.mode=Le;break}if(a.mode=Oe,e===pe)break t;case Oe:a.mode=Ie;case Ie:if(o>=6&&l>=258){t.next_out=r,t.avail_out=l,t.next_in=s,t.avail_in=o,a.hold=h,a.bits=d,de(t,f),r=t.next_out,n=t.output,l=t.avail_out,s=t.next_in,i=t.input,o=t.avail_in,h=a.hold,d=a.bits,a.mode===Se&&(a.back=-1);break}for(a.back=0;z=a.lencode[h&(1<>>24,b=z>>>16&255,g=65535&z,!(m<=d);){if(0===o)break t;o--,h+=i[s++]<>p)],m=z>>>24,b=z>>>16&255,g=65535&z,!(p+m<=d);){if(0===o)break t;o--,h+=i[s++]<>>=p,d-=p,a.back+=p}if(h>>>=m,d-=m,a.back+=m,a.length=g,0===b){a.mode=16205;break}if(32&b){a.back=-1,a.mode=Se;break}if(64&b){t.msg="invalid literal/length code",a.mode=Le;break}a.extra=15&b,a.mode=16201;case 16201:if(a.extra){for(R=a.extra;d>>=a.extra,d-=a.extra,a.back+=a.extra}a.was=a.length,a.mode=16202;case 16202:for(;z=a.distcode[h&(1<>>24,b=z>>>16&255,g=65535&z,!(m<=d);){if(0===o)break t;o--,h+=i[s++]<>p)],m=z>>>24,b=z>>>16&255,g=65535&z,!(p+m<=d);){if(0===o)break t;o--,h+=i[s++]<>>=p,d-=p,a.back+=p}if(h>>>=m,d-=m,a.back+=m,64&b){t.msg="invalid distance code",a.mode=Le;break}a.offset=g,a.extra=15&b,a.mode=16203;case 16203:if(a.extra){for(R=a.extra;d>>=a.extra,d-=a.extra,a.back+=a.extra}if(a.offset>a.dmax){t.msg="invalid distance too far back",a.mode=Le;break}a.mode=16204;case 16204:if(0===l)break t;if(c=f-l,a.offset>c){if(c=a.offset-c,c>a.whave&&a.sane){t.msg="invalid distance too far back",a.mode=Le;break}c>a.wnext?(c-=a.wnext,u=a.wsize-c):u=a.wnext-c,c>a.length&&(c=a.length),w=a.window}else w=n,u=r-a.offset,c=a.length;c>l&&(c=l),l-=c,a.length-=c;do{n[r++]=w[u++]}while(--c);0===a.length&&(a.mode=Ie);break;case 16205:if(0===l)break t;n[r++]=a.length,l--,a.mode=Ie;break;case Fe:if(a.wrap){for(;d<32;){if(0===o)break t;o--,h|=i[s++]<{if(Ce(t))return xe;let e=t.state;return e.window&&(e.window=null),t.state=null,ke},inflateGetHeader:(t,e)=>{if(Ce(t))return xe;const a=t.state;return 0==(2&a.wrap)?xe:(a.head=e,e.done=!1,ke)},inflateSetDictionary:(t,e)=>{const a=e.length;let i,n,s;return Ce(t)?xe:(i=t.state,0!==i.wrap&&i.mode!==Ue?xe:i.mode===Ue&&(n=1,n=C(n,e,a,0),n!==i.check)?ze:(s=We(t,e,a,a),s?(i.mode=16210,Ae):(i.havedict=1,ke)))},inflateInfo:"pako inflate (from Nodeca project)"};var Je=function(){this.text=0,this.time=0,this.xflags=0,this.os=0,this.extra=null,this.extra_len=0,this.name="",this.comment="",this.hcrc=0,this.done=!1};const Qe=Object.prototype.toString,{Z_NO_FLUSH:Ve,Z_FINISH:$e,Z_OK:ta,Z_STREAM_END:ea,Z_NEED_DICT:aa,Z_STREAM_ERROR:ia,Z_DATA_ERROR:na,Z_MEM_ERROR:sa}=K;function ra(t){this.options=jt({chunkSize:65536,windowBits:15,to:""},t||{});const e=this.options;e.raw&&e.windowBits>=0&&e.windowBits<16&&(e.windowBits=-e.windowBits,0===e.windowBits&&(e.windowBits=-15)),!(e.windowBits>=0&&e.windowBits<16)||t&&t.windowBits||(e.windowBits+=32),e.windowBits>15&&e.windowBits<48&&0==(15&e.windowBits)&&(e.windowBits|=15),this.err=0,this.msg="",this.ended=!1,this.chunks=[],this.strm=new qt,this.strm.avail_out=0;let a=qe.inflateInit2(this.strm,e.windowBits);if(a!==ta)throw new Error(j[a]);if(this.header=new Je,qe.inflateGetHeader(this.strm,this.header),e.dictionary&&("string"==typeof e.dictionary?e.dictionary=Gt(e.dictionary):"[object ArrayBuffer]"===Qe.call(e.dictionary)&&(e.dictionary=new Uint8Array(e.dictionary)),e.raw&&(a=qe.inflateSetDictionary(this.strm,e.dictionary),a!==ta)))throw new Error(j[a])}function oa(t,e){const a=new ra(e);if(a.push(t),a.err)throw a.msg||j[a.err];return a.result}ra.prototype.push=function(t,e){const a=this.strm,i=this.options.chunkSize,n=this.options.dictionary;let s,r,o;if(this.ended)return!1;for(r=e===~~e?e:!0===e?$e:Ve,"[object ArrayBuffer]"===Qe.call(t)?a.input=new Uint8Array(t):a.input=t,a.next_in=0,a.avail_in=a.input.length;;){for(0===a.avail_out&&(a.output=new Uint8Array(i),a.next_out=0,a.avail_out=i),s=qe.inflate(a,r),s===aa&&n&&(s=qe.inflateSetDictionary(a,n),s===ta?s=qe.inflate(a,r):s===na&&(s=aa));a.avail_in>0&&s===ea&&a.state.wrap>0&&0!==t[a.next_in];)qe.inflateReset(a),s=qe.inflate(a,r);switch(s){case ia:case na:case aa:case sa:return this.onEnd(s),this.ended=!0,!1}if(o=a.avail_out,a.next_out&&(0===a.avail_out||s===ea))if("string"===this.options.to){let t=Wt(a.output,a.next_out),e=a.next_out-t,n=Xt(a.output,t);a.next_out=e,a.avail_out=i-e,e&&a.output.set(a.output.subarray(t,t+e),0),this.onData(n)}else this.onData(a.output.length===a.next_out?a.output:a.output.subarray(0,a.next_out));if(s!==ta||0!==o){if(s===ea)return s=qe.inflateEnd(this.strm),this.onEnd(s),this.ended=!0,!0;if(0===a.avail_in)break}}return!0},ra.prototype.onData=function(t){this.chunks.push(t)},ra.prototype.onEnd=function(t){t===ta&&("string"===this.options.to?this.result=this.chunks.join(""):this.result=Kt(this.chunks)),this.chunks=[],this.err=t,this.msg=this.strm.msg};var la={Inflate:ra,inflate:oa,inflateRaw:function(t,e){return(e=e||{}).raw=!0,oa(t,e)},ungzip:oa,constants:K};const{Deflate:ha,deflate:da,deflateRaw:_a,gzip:fa}=le,{Inflate:ca,inflate:ua,inflateRaw:wa,ungzip:ma}=la;var ba=ha,ga=da,pa=_a,ka=fa,va=ca,ya=ua,xa=wa,za=ma,Aa=K,Ea={Deflate:ba,deflate:ga,deflateRaw:pa,gzip:ka,Inflate:va,inflate:ya,inflateRaw:xa,ungzip:za,constants:Aa};t.Deflate=ba,t.Inflate=va,t.constants=Aa,t.default=Ea,t.deflate=ga,t.deflateRaw=pa,t.gzip=ka,t.inflate=ya,t.inflateRaw=xa,t.ungzip=za,Object.defineProperty(t,"__esModule",{value:!0})})); +/*! pako 2.1.0 https://github.com/nodeca/pako @license (MIT AND Zlib) */ +!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?e(exports):"function"==typeof define&&define.amd?define(["exports"],e):e((t="undefined"!=typeof globalThis?globalThis:t||self).pako={})}(this,(function(t){"use strict";function e(t){let e=t.length;for(;--e>=0;)t[e]=0}const a=256,i=286,n=30,s=15,r=new Uint8Array([0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0]),o=new Uint8Array([0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13]),l=new Uint8Array([0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,3,7]),h=new Uint8Array([16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15]),d=new Array(576);e(d);const _=new Array(60);e(_);const f=new Array(512);e(f);const c=new Array(256);e(c);const u=new Array(29);e(u);const w=new Array(n);function m(t,e,a,i,n){this.static_tree=t,this.extra_bits=e,this.extra_base=a,this.elems=i,this.max_length=n,this.has_stree=t&&t.length}let b,g,p;function k(t,e){this.dyn_tree=t,this.max_code=0,this.stat_desc=e}e(w);const v=t=>t<256?f[t]:f[256+(t>>>7)],y=(t,e)=>{t.pending_buf[t.pending++]=255&e,t.pending_buf[t.pending++]=e>>>8&255},x=(t,e,a)=>{t.bi_valid>16-a?(t.bi_buf|=e<>16-t.bi_valid,t.bi_valid+=a-16):(t.bi_buf|=e<{x(t,a[2*e],a[2*e+1])},A=(t,e)=>{let a=0;do{a|=1&t,t>>>=1,a<<=1}while(--e>0);return a>>>1},E=(t,e,a)=>{const i=new Array(16);let n,r,o=0;for(n=1;n<=s;n++)o=o+a[n-1]<<1,i[n]=o;for(r=0;r<=e;r++){let e=t[2*r+1];0!==e&&(t[2*r]=A(i[e]++,e))}},R=t=>{let e;for(e=0;e{t.bi_valid>8?y(t,t.bi_buf):t.bi_valid>0&&(t.pending_buf[t.pending++]=t.bi_buf),t.bi_buf=0,t.bi_valid=0},U=(t,e,a,i)=>{const n=2*e,s=2*a;return t[n]{const i=t.heap[a];let n=a<<1;for(;n<=t.heap_len&&(n{let n,s,l,h,d=0;if(0!==t.sym_next)do{n=255&t.pending_buf[t.sym_buf+d++],n+=(255&t.pending_buf[t.sym_buf+d++])<<8,s=t.pending_buf[t.sym_buf+d++],0===n?z(t,s,e):(l=c[s],z(t,l+a+1,e),h=r[l],0!==h&&(s-=u[l],x(t,s,h)),n--,l=v(n),z(t,l,i),h=o[l],0!==h&&(n-=w[l],x(t,n,h)))}while(d{const a=e.dyn_tree,i=e.stat_desc.static_tree,n=e.stat_desc.has_stree,r=e.stat_desc.elems;let o,l,h,d=-1;for(t.heap_len=0,t.heap_max=573,o=0;o>1;o>=1;o--)S(t,a,o);h=r;do{o=t.heap[1],t.heap[1]=t.heap[t.heap_len--],S(t,a,1),l=t.heap[1],t.heap[--t.heap_max]=o,t.heap[--t.heap_max]=l,a[2*h]=a[2*o]+a[2*l],t.depth[h]=(t.depth[o]>=t.depth[l]?t.depth[o]:t.depth[l])+1,a[2*o+1]=a[2*l+1]=h,t.heap[1]=h++,S(t,a,1)}while(t.heap_len>=2);t.heap[--t.heap_max]=t.heap[1],((t,e)=>{const a=e.dyn_tree,i=e.max_code,n=e.stat_desc.static_tree,r=e.stat_desc.has_stree,o=e.stat_desc.extra_bits,l=e.stat_desc.extra_base,h=e.stat_desc.max_length;let d,_,f,c,u,w,m=0;for(c=0;c<=s;c++)t.bl_count[c]=0;for(a[2*t.heap[t.heap_max]+1]=0,d=t.heap_max+1;d<573;d++)_=t.heap[d],c=a[2*a[2*_+1]+1]+1,c>h&&(c=h,m++),a[2*_+1]=c,_>i||(t.bl_count[c]++,u=0,_>=l&&(u=o[_-l]),w=a[2*_],t.opt_len+=w*(c+u),r&&(t.static_len+=w*(n[2*_+1]+u)));if(0!==m){do{for(c=h-1;0===t.bl_count[c];)c--;t.bl_count[c]--,t.bl_count[c+1]+=2,t.bl_count[h]--,m-=2}while(m>0);for(c=h;0!==c;c--)for(_=t.bl_count[c];0!==_;)f=t.heap[--d],f>i||(a[2*f+1]!==c&&(t.opt_len+=(c-a[2*f+1])*a[2*f],a[2*f+1]=c),_--)}})(t,e),E(a,d,t.bl_count)},O=(t,e,a)=>{let i,n,s=-1,r=e[1],o=0,l=7,h=4;for(0===r&&(l=138,h=3),e[2*(a+1)+1]=65535,i=0;i<=a;i++)n=r,r=e[2*(i+1)+1],++o{let i,n,s=-1,r=e[1],o=0,l=7,h=4;for(0===r&&(l=138,h=3),i=0;i<=a;i++)if(n=r,r=e[2*(i+1)+1],!(++o{x(t,0+(i?1:0),3),Z(t),y(t,a),y(t,~a),a&&t.pending_buf.set(t.window.subarray(e,e+a),t.pending),t.pending+=a};var N=(t,e,i,n)=>{let s,r,o=0;t.level>0?(2===t.strm.data_type&&(t.strm.data_type=(t=>{let e,i=4093624447;for(e=0;e<=31;e++,i>>>=1)if(1&i&&0!==t.dyn_ltree[2*e])return 0;if(0!==t.dyn_ltree[18]||0!==t.dyn_ltree[20]||0!==t.dyn_ltree[26])return 1;for(e=32;e{let e;for(O(t,t.dyn_ltree,t.l_desc.max_code),O(t,t.dyn_dtree,t.d_desc.max_code),T(t,t.bl_desc),e=18;e>=3&&0===t.bl_tree[2*h[e]+1];e--);return t.opt_len+=3*(e+1)+5+5+4,e})(t),s=t.opt_len+3+7>>>3,r=t.static_len+3+7>>>3,r<=s&&(s=r)):s=r=i+5,i+4<=s&&-1!==e?L(t,e,i,n):4===t.strategy||r===s?(x(t,2+(n?1:0),3),D(t,d,_)):(x(t,4+(n?1:0),3),((t,e,a,i)=>{let n;for(x(t,e-257,5),x(t,a-1,5),x(t,i-4,4),n=0;n{F||((()=>{let t,e,a,h,k;const v=new Array(16);for(a=0,h=0;h<28;h++)for(u[h]=a,t=0;t<1<>=7;h(t.pending_buf[t.sym_buf+t.sym_next++]=e,t.pending_buf[t.sym_buf+t.sym_next++]=e>>8,t.pending_buf[t.sym_buf+t.sym_next++]=i,0===e?t.dyn_ltree[2*i]++:(t.matches++,e--,t.dyn_ltree[2*(c[i]+a+1)]++,t.dyn_dtree[2*v(e)]++),t.sym_next===t.sym_end),_tr_align:t=>{x(t,2,3),z(t,256,d),(t=>{16===t.bi_valid?(y(t,t.bi_buf),t.bi_buf=0,t.bi_valid=0):t.bi_valid>=8&&(t.pending_buf[t.pending++]=255&t.bi_buf,t.bi_buf>>=8,t.bi_valid-=8)})(t)}};var C=(t,e,a,i)=>{let n=65535&t|0,s=t>>>16&65535|0,r=0;for(;0!==a;){r=a>2e3?2e3:a,a-=r;do{n=n+e[i++]|0,s=s+n|0}while(--r);n%=65521,s%=65521}return n|s<<16|0};const M=new Uint32Array((()=>{let t,e=[];for(var a=0;a<256;a++){t=a;for(var i=0;i<8;i++)t=1&t?3988292384^t>>>1:t>>>1;e[a]=t}return e})());var H=(t,e,a,i)=>{const n=M,s=i+a;t^=-1;for(let a=i;a>>8^n[255&(t^e[a])];return-1^t},j={2:"need dictionary",1:"stream end",0:"","-1":"file error","-2":"stream error","-3":"data error","-4":"insufficient memory","-5":"buffer error","-6":"incompatible version"},K={Z_NO_FLUSH:0,Z_PARTIAL_FLUSH:1,Z_SYNC_FLUSH:2,Z_FULL_FLUSH:3,Z_FINISH:4,Z_BLOCK:5,Z_TREES:6,Z_OK:0,Z_STREAM_END:1,Z_NEED_DICT:2,Z_ERRNO:-1,Z_STREAM_ERROR:-2,Z_DATA_ERROR:-3,Z_MEM_ERROR:-4,Z_BUF_ERROR:-5,Z_NO_COMPRESSION:0,Z_BEST_SPEED:1,Z_BEST_COMPRESSION:9,Z_DEFAULT_COMPRESSION:-1,Z_FILTERED:1,Z_HUFFMAN_ONLY:2,Z_RLE:3,Z_FIXED:4,Z_DEFAULT_STRATEGY:0,Z_BINARY:0,Z_TEXT:1,Z_UNKNOWN:2,Z_DEFLATED:8};const{_tr_init:P,_tr_stored_block:Y,_tr_flush_block:G,_tr_tally:X,_tr_align:W}=B,{Z_NO_FLUSH:q,Z_PARTIAL_FLUSH:J,Z_FULL_FLUSH:Q,Z_FINISH:V,Z_BLOCK:$,Z_OK:tt,Z_STREAM_END:et,Z_STREAM_ERROR:at,Z_DATA_ERROR:it,Z_BUF_ERROR:nt,Z_DEFAULT_COMPRESSION:st,Z_FILTERED:rt,Z_HUFFMAN_ONLY:ot,Z_RLE:lt,Z_FIXED:ht,Z_DEFAULT_STRATEGY:dt,Z_UNKNOWN:_t,Z_DEFLATED:ft}=K,ct=258,ut=262,wt=42,mt=113,bt=666,gt=(t,e)=>(t.msg=j[e],e),pt=t=>2*t-(t>4?9:0),kt=t=>{let e=t.length;for(;--e>=0;)t[e]=0},vt=t=>{let e,a,i,n=t.w_size;e=t.hash_size,i=e;do{a=t.head[--i],t.head[i]=a>=n?a-n:0}while(--e);e=n,i=e;do{a=t.prev[--i],t.prev[i]=a>=n?a-n:0}while(--e)};let yt=(t,e,a)=>(e<{const e=t.state;let a=e.pending;a>t.avail_out&&(a=t.avail_out),0!==a&&(t.output.set(e.pending_buf.subarray(e.pending_out,e.pending_out+a),t.next_out),t.next_out+=a,e.pending_out+=a,t.total_out+=a,t.avail_out-=a,e.pending-=a,0===e.pending&&(e.pending_out=0))},zt=(t,e)=>{G(t,t.block_start>=0?t.block_start:-1,t.strstart-t.block_start,e),t.block_start=t.strstart,xt(t.strm)},At=(t,e)=>{t.pending_buf[t.pending++]=e},Et=(t,e)=>{t.pending_buf[t.pending++]=e>>>8&255,t.pending_buf[t.pending++]=255&e},Rt=(t,e,a,i)=>{let n=t.avail_in;return n>i&&(n=i),0===n?0:(t.avail_in-=n,e.set(t.input.subarray(t.next_in,t.next_in+n),a),1===t.state.wrap?t.adler=C(t.adler,e,n,a):2===t.state.wrap&&(t.adler=H(t.adler,e,n,a)),t.next_in+=n,t.total_in+=n,n)},Zt=(t,e)=>{let a,i,n=t.max_chain_length,s=t.strstart,r=t.prev_length,o=t.nice_match;const l=t.strstart>t.w_size-ut?t.strstart-(t.w_size-ut):0,h=t.window,d=t.w_mask,_=t.prev,f=t.strstart+ct;let c=h[s+r-1],u=h[s+r];t.prev_length>=t.good_match&&(n>>=2),o>t.lookahead&&(o=t.lookahead);do{if(a=e,h[a+r]===u&&h[a+r-1]===c&&h[a]===h[s]&&h[++a]===h[s+1]){s+=2,a++;do{}while(h[++s]===h[++a]&&h[++s]===h[++a]&&h[++s]===h[++a]&&h[++s]===h[++a]&&h[++s]===h[++a]&&h[++s]===h[++a]&&h[++s]===h[++a]&&h[++s]===h[++a]&&sr){if(t.match_start=e,r=i,i>=o)break;c=h[s+r-1],u=h[s+r]}}}while((e=_[e&d])>l&&0!=--n);return r<=t.lookahead?r:t.lookahead},Ut=t=>{const e=t.w_size;let a,i,n;do{if(i=t.window_size-t.lookahead-t.strstart,t.strstart>=e+(e-ut)&&(t.window.set(t.window.subarray(e,e+e-i),0),t.match_start-=e,t.strstart-=e,t.block_start-=e,t.insert>t.strstart&&(t.insert=t.strstart),vt(t),i+=e),0===t.strm.avail_in)break;if(a=Rt(t.strm,t.window,t.strstart+t.lookahead,i),t.lookahead+=a,t.lookahead+t.insert>=3)for(n=t.strstart-t.insert,t.ins_h=t.window[n],t.ins_h=yt(t,t.ins_h,t.window[n+1]);t.insert&&(t.ins_h=yt(t,t.ins_h,t.window[n+3-1]),t.prev[n&t.w_mask]=t.head[t.ins_h],t.head[t.ins_h]=n,n++,t.insert--,!(t.lookahead+t.insert<3)););}while(t.lookahead{let a,i,n,s=t.pending_buf_size-5>t.w_size?t.w_size:t.pending_buf_size-5,r=0,o=t.strm.avail_in;do{if(a=65535,n=t.bi_valid+42>>3,t.strm.avail_outi+t.strm.avail_in&&(a=i+t.strm.avail_in),a>n&&(a=n),a>8,t.pending_buf[t.pending-2]=~a,t.pending_buf[t.pending-1]=~a>>8,xt(t.strm),i&&(i>a&&(i=a),t.strm.output.set(t.window.subarray(t.block_start,t.block_start+i),t.strm.next_out),t.strm.next_out+=i,t.strm.avail_out-=i,t.strm.total_out+=i,t.block_start+=i,a-=i),a&&(Rt(t.strm,t.strm.output,t.strm.next_out,a),t.strm.next_out+=a,t.strm.avail_out-=a,t.strm.total_out+=a)}while(0===r);return o-=t.strm.avail_in,o&&(o>=t.w_size?(t.matches=2,t.window.set(t.strm.input.subarray(t.strm.next_in-t.w_size,t.strm.next_in),0),t.strstart=t.w_size,t.insert=t.strstart):(t.window_size-t.strstart<=o&&(t.strstart-=t.w_size,t.window.set(t.window.subarray(t.w_size,t.w_size+t.strstart),0),t.matches<2&&t.matches++,t.insert>t.strstart&&(t.insert=t.strstart)),t.window.set(t.strm.input.subarray(t.strm.next_in-o,t.strm.next_in),t.strstart),t.strstart+=o,t.insert+=o>t.w_size-t.insert?t.w_size-t.insert:o),t.block_start=t.strstart),t.high_watern&&t.block_start>=t.w_size&&(t.block_start-=t.w_size,t.strstart-=t.w_size,t.window.set(t.window.subarray(t.w_size,t.w_size+t.strstart),0),t.matches<2&&t.matches++,n+=t.w_size,t.insert>t.strstart&&(t.insert=t.strstart)),n>t.strm.avail_in&&(n=t.strm.avail_in),n&&(Rt(t.strm,t.window,t.strstart,n),t.strstart+=n,t.insert+=n>t.w_size-t.insert?t.w_size-t.insert:n),t.high_water>3,n=t.pending_buf_size-n>65535?65535:t.pending_buf_size-n,s=n>t.w_size?t.w_size:n,i=t.strstart-t.block_start,(i>=s||(i||e===V)&&e!==q&&0===t.strm.avail_in&&i<=n)&&(a=i>n?n:i,r=e===V&&0===t.strm.avail_in&&a===i?1:0,Y(t,t.block_start,a,r),t.block_start+=a,xt(t.strm)),r?3:1)},Dt=(t,e)=>{let a,i;for(;;){if(t.lookahead=3&&(t.ins_h=yt(t,t.ins_h,t.window[t.strstart+3-1]),a=t.prev[t.strstart&t.w_mask]=t.head[t.ins_h],t.head[t.ins_h]=t.strstart),0!==a&&t.strstart-a<=t.w_size-ut&&(t.match_length=Zt(t,a)),t.match_length>=3)if(i=X(t,t.strstart-t.match_start,t.match_length-3),t.lookahead-=t.match_length,t.match_length<=t.max_lazy_match&&t.lookahead>=3){t.match_length--;do{t.strstart++,t.ins_h=yt(t,t.ins_h,t.window[t.strstart+3-1]),a=t.prev[t.strstart&t.w_mask]=t.head[t.ins_h],t.head[t.ins_h]=t.strstart}while(0!=--t.match_length);t.strstart++}else t.strstart+=t.match_length,t.match_length=0,t.ins_h=t.window[t.strstart],t.ins_h=yt(t,t.ins_h,t.window[t.strstart+1]);else i=X(t,0,t.window[t.strstart]),t.lookahead--,t.strstart++;if(i&&(zt(t,!1),0===t.strm.avail_out))return 1}return t.insert=t.strstart<2?t.strstart:2,e===V?(zt(t,!0),0===t.strm.avail_out?3:4):t.sym_next&&(zt(t,!1),0===t.strm.avail_out)?1:2},Tt=(t,e)=>{let a,i,n;for(;;){if(t.lookahead=3&&(t.ins_h=yt(t,t.ins_h,t.window[t.strstart+3-1]),a=t.prev[t.strstart&t.w_mask]=t.head[t.ins_h],t.head[t.ins_h]=t.strstart),t.prev_length=t.match_length,t.prev_match=t.match_start,t.match_length=2,0!==a&&t.prev_length4096)&&(t.match_length=2)),t.prev_length>=3&&t.match_length<=t.prev_length){n=t.strstart+t.lookahead-3,i=X(t,t.strstart-1-t.prev_match,t.prev_length-3),t.lookahead-=t.prev_length-1,t.prev_length-=2;do{++t.strstart<=n&&(t.ins_h=yt(t,t.ins_h,t.window[t.strstart+3-1]),a=t.prev[t.strstart&t.w_mask]=t.head[t.ins_h],t.head[t.ins_h]=t.strstart)}while(0!=--t.prev_length);if(t.match_available=0,t.match_length=2,t.strstart++,i&&(zt(t,!1),0===t.strm.avail_out))return 1}else if(t.match_available){if(i=X(t,0,t.window[t.strstart-1]),i&&zt(t,!1),t.strstart++,t.lookahead--,0===t.strm.avail_out)return 1}else t.match_available=1,t.strstart++,t.lookahead--}return t.match_available&&(i=X(t,0,t.window[t.strstart-1]),t.match_available=0),t.insert=t.strstart<2?t.strstart:2,e===V?(zt(t,!0),0===t.strm.avail_out?3:4):t.sym_next&&(zt(t,!1),0===t.strm.avail_out)?1:2};function Ot(t,e,a,i,n){this.good_length=t,this.max_lazy=e,this.nice_length=a,this.max_chain=i,this.func=n}const It=[new Ot(0,0,0,0,St),new Ot(4,4,8,4,Dt),new Ot(4,5,16,8,Dt),new Ot(4,6,32,32,Dt),new Ot(4,4,16,16,Tt),new Ot(8,16,32,32,Tt),new Ot(8,16,128,128,Tt),new Ot(8,32,128,256,Tt),new Ot(32,128,258,1024,Tt),new Ot(32,258,258,4096,Tt)];function Ft(){this.strm=null,this.status=0,this.pending_buf=null,this.pending_buf_size=0,this.pending_out=0,this.pending=0,this.wrap=0,this.gzhead=null,this.gzindex=0,this.method=ft,this.last_flush=-1,this.w_size=0,this.w_bits=0,this.w_mask=0,this.window=null,this.window_size=0,this.prev=null,this.head=null,this.ins_h=0,this.hash_size=0,this.hash_bits=0,this.hash_mask=0,this.hash_shift=0,this.block_start=0,this.match_length=0,this.prev_match=0,this.match_available=0,this.strstart=0,this.match_start=0,this.lookahead=0,this.prev_length=0,this.max_chain_length=0,this.max_lazy_match=0,this.level=0,this.strategy=0,this.good_match=0,this.nice_match=0,this.dyn_ltree=new Uint16Array(1146),this.dyn_dtree=new Uint16Array(122),this.bl_tree=new Uint16Array(78),kt(this.dyn_ltree),kt(this.dyn_dtree),kt(this.bl_tree),this.l_desc=null,this.d_desc=null,this.bl_desc=null,this.bl_count=new Uint16Array(16),this.heap=new Uint16Array(573),kt(this.heap),this.heap_len=0,this.heap_max=0,this.depth=new Uint16Array(573),kt(this.depth),this.sym_buf=0,this.lit_bufsize=0,this.sym_next=0,this.sym_end=0,this.opt_len=0,this.static_len=0,this.matches=0,this.insert=0,this.bi_buf=0,this.bi_valid=0}const Lt=t=>{if(!t)return 1;const e=t.state;return!e||e.strm!==t||e.status!==wt&&57!==e.status&&69!==e.status&&73!==e.status&&91!==e.status&&103!==e.status&&e.status!==mt&&e.status!==bt?1:0},Nt=t=>{if(Lt(t))return gt(t,at);t.total_in=t.total_out=0,t.data_type=_t;const e=t.state;return e.pending=0,e.pending_out=0,e.wrap<0&&(e.wrap=-e.wrap),e.status=2===e.wrap?57:e.wrap?wt:mt,t.adler=2===e.wrap?0:1,e.last_flush=-2,P(e),tt},Bt=t=>{const e=Nt(t);var a;return e===tt&&((a=t.state).window_size=2*a.w_size,kt(a.head),a.max_lazy_match=It[a.level].max_lazy,a.good_match=It[a.level].good_length,a.nice_match=It[a.level].nice_length,a.max_chain_length=It[a.level].max_chain,a.strstart=0,a.block_start=0,a.lookahead=0,a.insert=0,a.match_length=a.prev_length=2,a.match_available=0,a.ins_h=0),e},Ct=(t,e,a,i,n,s)=>{if(!t)return at;let r=1;if(e===st&&(e=6),i<0?(r=0,i=-i):i>15&&(r=2,i-=16),n<1||n>9||a!==ft||i<8||i>15||e<0||e>9||s<0||s>ht||8===i&&1!==r)return gt(t,at);8===i&&(i=9);const o=new Ft;return t.state=o,o.strm=t,o.status=wt,o.wrap=r,o.gzhead=null,o.w_bits=i,o.w_size=1<Ct(t,e,ft,15,8,dt),deflateInit2:Ct,deflateReset:Bt,deflateResetKeep:Nt,deflateSetHeader:(t,e)=>Lt(t)||2!==t.state.wrap?at:(t.state.gzhead=e,tt),deflate:(t,e)=>{if(Lt(t)||e>$||e<0)return t?gt(t,at):at;const a=t.state;if(!t.output||0!==t.avail_in&&!t.input||a.status===bt&&e!==V)return gt(t,0===t.avail_out?nt:at);const i=a.last_flush;if(a.last_flush=e,0!==a.pending){if(xt(t),0===t.avail_out)return a.last_flush=-1,tt}else if(0===t.avail_in&&pt(e)<=pt(i)&&e!==V)return gt(t,nt);if(a.status===bt&&0!==t.avail_in)return gt(t,nt);if(a.status===wt&&0===a.wrap&&(a.status=mt),a.status===wt){let e=ft+(a.w_bits-8<<4)<<8,i=-1;if(i=a.strategy>=ot||a.level<2?0:a.level<6?1:6===a.level?2:3,e|=i<<6,0!==a.strstart&&(e|=32),e+=31-e%31,Et(a,e),0!==a.strstart&&(Et(a,t.adler>>>16),Et(a,65535&t.adler)),t.adler=1,a.status=mt,xt(t),0!==a.pending)return a.last_flush=-1,tt}if(57===a.status)if(t.adler=0,At(a,31),At(a,139),At(a,8),a.gzhead)At(a,(a.gzhead.text?1:0)+(a.gzhead.hcrc?2:0)+(a.gzhead.extra?4:0)+(a.gzhead.name?8:0)+(a.gzhead.comment?16:0)),At(a,255&a.gzhead.time),At(a,a.gzhead.time>>8&255),At(a,a.gzhead.time>>16&255),At(a,a.gzhead.time>>24&255),At(a,9===a.level?2:a.strategy>=ot||a.level<2?4:0),At(a,255&a.gzhead.os),a.gzhead.extra&&a.gzhead.extra.length&&(At(a,255&a.gzhead.extra.length),At(a,a.gzhead.extra.length>>8&255)),a.gzhead.hcrc&&(t.adler=H(t.adler,a.pending_buf,a.pending,0)),a.gzindex=0,a.status=69;else if(At(a,0),At(a,0),At(a,0),At(a,0),At(a,0),At(a,9===a.level?2:a.strategy>=ot||a.level<2?4:0),At(a,3),a.status=mt,xt(t),0!==a.pending)return a.last_flush=-1,tt;if(69===a.status){if(a.gzhead.extra){let e=a.pending,i=(65535&a.gzhead.extra.length)-a.gzindex;for(;a.pending+i>a.pending_buf_size;){let n=a.pending_buf_size-a.pending;if(a.pending_buf.set(a.gzhead.extra.subarray(a.gzindex,a.gzindex+n),a.pending),a.pending=a.pending_buf_size,a.gzhead.hcrc&&a.pending>e&&(t.adler=H(t.adler,a.pending_buf,a.pending-e,e)),a.gzindex+=n,xt(t),0!==a.pending)return a.last_flush=-1,tt;e=0,i-=n}let n=new Uint8Array(a.gzhead.extra);a.pending_buf.set(n.subarray(a.gzindex,a.gzindex+i),a.pending),a.pending+=i,a.gzhead.hcrc&&a.pending>e&&(t.adler=H(t.adler,a.pending_buf,a.pending-e,e)),a.gzindex=0}a.status=73}if(73===a.status){if(a.gzhead.name){let e,i=a.pending;do{if(a.pending===a.pending_buf_size){if(a.gzhead.hcrc&&a.pending>i&&(t.adler=H(t.adler,a.pending_buf,a.pending-i,i)),xt(t),0!==a.pending)return a.last_flush=-1,tt;i=0}e=a.gzindexi&&(t.adler=H(t.adler,a.pending_buf,a.pending-i,i)),a.gzindex=0}a.status=91}if(91===a.status){if(a.gzhead.comment){let e,i=a.pending;do{if(a.pending===a.pending_buf_size){if(a.gzhead.hcrc&&a.pending>i&&(t.adler=H(t.adler,a.pending_buf,a.pending-i,i)),xt(t),0!==a.pending)return a.last_flush=-1,tt;i=0}e=a.gzindexi&&(t.adler=H(t.adler,a.pending_buf,a.pending-i,i))}a.status=103}if(103===a.status){if(a.gzhead.hcrc){if(a.pending+2>a.pending_buf_size&&(xt(t),0!==a.pending))return a.last_flush=-1,tt;At(a,255&t.adler),At(a,t.adler>>8&255),t.adler=0}if(a.status=mt,xt(t),0!==a.pending)return a.last_flush=-1,tt}if(0!==t.avail_in||0!==a.lookahead||e!==q&&a.status!==bt){let i=0===a.level?St(a,e):a.strategy===ot?((t,e)=>{let a;for(;;){if(0===t.lookahead&&(Ut(t),0===t.lookahead)){if(e===q)return 1;break}if(t.match_length=0,a=X(t,0,t.window[t.strstart]),t.lookahead--,t.strstart++,a&&(zt(t,!1),0===t.strm.avail_out))return 1}return t.insert=0,e===V?(zt(t,!0),0===t.strm.avail_out?3:4):t.sym_next&&(zt(t,!1),0===t.strm.avail_out)?1:2})(a,e):a.strategy===lt?((t,e)=>{let a,i,n,s;const r=t.window;for(;;){if(t.lookahead<=ct){if(Ut(t),t.lookahead<=ct&&e===q)return 1;if(0===t.lookahead)break}if(t.match_length=0,t.lookahead>=3&&t.strstart>0&&(n=t.strstart-1,i=r[n],i===r[++n]&&i===r[++n]&&i===r[++n])){s=t.strstart+ct;do{}while(i===r[++n]&&i===r[++n]&&i===r[++n]&&i===r[++n]&&i===r[++n]&&i===r[++n]&&i===r[++n]&&i===r[++n]&&nt.lookahead&&(t.match_length=t.lookahead)}if(t.match_length>=3?(a=X(t,1,t.match_length-3),t.lookahead-=t.match_length,t.strstart+=t.match_length,t.match_length=0):(a=X(t,0,t.window[t.strstart]),t.lookahead--,t.strstart++),a&&(zt(t,!1),0===t.strm.avail_out))return 1}return t.insert=0,e===V?(zt(t,!0),0===t.strm.avail_out?3:4):t.sym_next&&(zt(t,!1),0===t.strm.avail_out)?1:2})(a,e):It[a.level].func(a,e);if(3!==i&&4!==i||(a.status=bt),1===i||3===i)return 0===t.avail_out&&(a.last_flush=-1),tt;if(2===i&&(e===J?W(a):e!==$&&(Y(a,0,0,!1),e===Q&&(kt(a.head),0===a.lookahead&&(a.strstart=0,a.block_start=0,a.insert=0))),xt(t),0===t.avail_out))return a.last_flush=-1,tt}return e!==V?tt:a.wrap<=0?et:(2===a.wrap?(At(a,255&t.adler),At(a,t.adler>>8&255),At(a,t.adler>>16&255),At(a,t.adler>>24&255),At(a,255&t.total_in),At(a,t.total_in>>8&255),At(a,t.total_in>>16&255),At(a,t.total_in>>24&255)):(Et(a,t.adler>>>16),Et(a,65535&t.adler)),xt(t),a.wrap>0&&(a.wrap=-a.wrap),0!==a.pending?tt:et)},deflateEnd:t=>{if(Lt(t))return at;const e=t.state.status;return t.state=null,e===mt?gt(t,it):tt},deflateSetDictionary:(t,e)=>{let a=e.length;if(Lt(t))return at;const i=t.state,n=i.wrap;if(2===n||1===n&&i.status!==wt||i.lookahead)return at;if(1===n&&(t.adler=C(t.adler,e,a,0)),i.wrap=0,a>=i.w_size){0===n&&(kt(i.head),i.strstart=0,i.block_start=0,i.insert=0);let t=new Uint8Array(i.w_size);t.set(e.subarray(a-i.w_size,a),0),e=t,a=i.w_size}const s=t.avail_in,r=t.next_in,o=t.input;for(t.avail_in=a,t.next_in=0,t.input=e,Ut(i);i.lookahead>=3;){let t=i.strstart,e=i.lookahead-2;do{i.ins_h=yt(i,i.ins_h,i.window[t+3-1]),i.prev[t&i.w_mask]=i.head[i.ins_h],i.head[i.ins_h]=t,t++}while(--e);i.strstart=t,i.lookahead=2,Ut(i)}return i.strstart+=i.lookahead,i.block_start=i.strstart,i.insert=i.lookahead,i.lookahead=0,i.match_length=i.prev_length=2,i.match_available=0,t.next_in=r,t.input=o,t.avail_in=s,i.wrap=n,tt},deflateInfo:"pako deflate (from Nodeca project)"};const Ht=(t,e)=>Object.prototype.hasOwnProperty.call(t,e);var jt=function(t){const e=Array.prototype.slice.call(arguments,1);for(;e.length;){const a=e.shift();if(a){if("object"!=typeof a)throw new TypeError(a+"must be non-object");for(const e in a)Ht(a,e)&&(t[e]=a[e])}}return t},Kt=t=>{let e=0;for(let a=0,i=t.length;a=252?6:t>=248?5:t>=240?4:t>=224?3:t>=192?2:1;Yt[254]=Yt[254]=1;var Gt=t=>{if("function"==typeof TextEncoder&&TextEncoder.prototype.encode)return(new TextEncoder).encode(t);let e,a,i,n,s,r=t.length,o=0;for(n=0;n>>6,e[s++]=128|63&a):a<65536?(e[s++]=224|a>>>12,e[s++]=128|a>>>6&63,e[s++]=128|63&a):(e[s++]=240|a>>>18,e[s++]=128|a>>>12&63,e[s++]=128|a>>>6&63,e[s++]=128|63&a);return e},Xt=(t,e)=>{const a=e||t.length;if("function"==typeof TextDecoder&&TextDecoder.prototype.decode)return(new TextDecoder).decode(t.subarray(0,e));let i,n;const s=new Array(2*a);for(n=0,i=0;i4)s[n++]=65533,i+=r-1;else{for(e&=2===r?31:3===r?15:7;r>1&&i1?s[n++]=65533:e<65536?s[n++]=e:(e-=65536,s[n++]=55296|e>>10&1023,s[n++]=56320|1023&e)}}return((t,e)=>{if(e<65534&&t.subarray&&Pt)return String.fromCharCode.apply(null,t.length===e?t:t.subarray(0,e));let a="";for(let i=0;i{(e=e||t.length)>t.length&&(e=t.length);let a=e-1;for(;a>=0&&128==(192&t[a]);)a--;return a<0||0===a?e:a+Yt[t[a]]>e?a:e};var qt=function(){this.input=null,this.next_in=0,this.avail_in=0,this.total_in=0,this.output=null,this.next_out=0,this.avail_out=0,this.total_out=0,this.msg="",this.state=null,this.data_type=2,this.adler=0};const Jt=Object.prototype.toString,{Z_NO_FLUSH:Qt,Z_SYNC_FLUSH:Vt,Z_FULL_FLUSH:$t,Z_FINISH:te,Z_OK:ee,Z_STREAM_END:ae,Z_DEFAULT_COMPRESSION:ie,Z_DEFAULT_STRATEGY:ne,Z_DEFLATED:se}=K;function re(t){this.options=jt({level:ie,method:se,chunkSize:16384,windowBits:15,memLevel:8,strategy:ne},t||{});let e=this.options;e.raw&&e.windowBits>0?e.windowBits=-e.windowBits:e.gzip&&e.windowBits>0&&e.windowBits<16&&(e.windowBits+=16),this.err=0,this.msg="",this.ended=!1,this.chunks=[],this.strm=new qt,this.strm.avail_out=0;let a=Mt.deflateInit2(this.strm,e.level,e.method,e.windowBits,e.memLevel,e.strategy);if(a!==ee)throw new Error(j[a]);if(e.header&&Mt.deflateSetHeader(this.strm,e.header),e.dictionary){let t;if(t="string"==typeof e.dictionary?Gt(e.dictionary):"[object ArrayBuffer]"===Jt.call(e.dictionary)?new Uint8Array(e.dictionary):e.dictionary,a=Mt.deflateSetDictionary(this.strm,t),a!==ee)throw new Error(j[a]);this._dict_set=!0}}function oe(t,e){const a=new re(e);if(a.push(t,!0),a.err)throw a.msg||j[a.err];return a.result}re.prototype.push=function(t,e){const a=this.strm,i=this.options.chunkSize;let n,s;if(this.ended)return!1;for(s=e===~~e?e:!0===e?te:Qt,"string"==typeof t?a.input=Gt(t):"[object ArrayBuffer]"===Jt.call(t)?a.input=new Uint8Array(t):a.input=t,a.next_in=0,a.avail_in=a.input.length;;)if(0===a.avail_out&&(a.output=new Uint8Array(i),a.next_out=0,a.avail_out=i),(s===Vt||s===$t)&&a.avail_out<=6)this.onData(a.output.subarray(0,a.next_out)),a.avail_out=0;else{if(n=Mt.deflate(a,s),n===ae)return a.next_out>0&&this.onData(a.output.subarray(0,a.next_out)),n=Mt.deflateEnd(this.strm),this.onEnd(n),this.ended=!0,n===ee;if(0!==a.avail_out){if(s>0&&a.next_out>0)this.onData(a.output.subarray(0,a.next_out)),a.avail_out=0;else if(0===a.avail_in)break}else this.onData(a.output)}return!0},re.prototype.onData=function(t){this.chunks.push(t)},re.prototype.onEnd=function(t){t===ee&&(this.result=Kt(this.chunks)),this.chunks=[],this.err=t,this.msg=this.strm.msg};var le={Deflate:re,deflate:oe,deflateRaw:function(t,e){return(e=e||{}).raw=!0,oe(t,e)},gzip:function(t,e){return(e=e||{}).gzip=!0,oe(t,e)},constants:K};const he=16209;var de=function(t,e){let a,i,n,s,r,o,l,h,d,_,f,c,u,w,m,b,g,p,k,v,y,x,z,A;const E=t.state;a=t.next_in,z=t.input,i=a+(t.avail_in-5),n=t.next_out,A=t.output,s=n-(e-t.avail_out),r=n+(t.avail_out-257),o=E.dmax,l=E.wsize,h=E.whave,d=E.wnext,_=E.window,f=E.hold,c=E.bits,u=E.lencode,w=E.distcode,m=(1<>>24,f>>>=p,c-=p,p=g>>>16&255,0===p)A[n++]=65535&g;else{if(!(16&p)){if(0==(64&p)){g=u[(65535&g)+(f&(1<>>=p,c-=p),c<15&&(f+=z[a++]<>>24,f>>>=p,c-=p,p=g>>>16&255,!(16&p)){if(0==(64&p)){g=w[(65535&g)+(f&(1<o){t.msg="invalid distance too far back",E.mode=he;break t}if(f>>>=p,c-=p,p=n-s,v>p){if(p=v-p,p>h&&E.sane){t.msg="invalid distance too far back",E.mode=he;break t}if(y=0,x=_,0===d){if(y+=l-p,p2;)A[n++]=x[y++],A[n++]=x[y++],A[n++]=x[y++],k-=3;k&&(A[n++]=x[y++],k>1&&(A[n++]=x[y++]))}else{y=n-v;do{A[n++]=A[y++],A[n++]=A[y++],A[n++]=A[y++],k-=3}while(k>2);k&&(A[n++]=A[y++],k>1&&(A[n++]=A[y++]))}break}}break}}while(a>3,a-=k,c-=k<<3,f&=(1<{const l=o.bits;let h,d,_,f,c,u,w=0,m=0,b=0,g=0,p=0,k=0,v=0,y=0,x=0,z=0,A=null;const E=new Uint16Array(16),R=new Uint16Array(16);let Z,U,S,D=null;for(w=0;w<=_e;w++)E[w]=0;for(m=0;m=1&&0===E[g];g--);if(p>g&&(p=g),0===g)return n[s++]=20971520,n[s++]=20971520,o.bits=1,0;for(b=1;b0&&(0===t||1!==g))return-1;for(R[1]=0,w=1;w<_e;w++)R[w+1]=R[w]+E[w];for(m=0;m852||2===t&&x>592)return 1;for(;;){Z=w-v,r[m]+1=u?(U=D[r[m]-u],S=A[r[m]-u]):(U=96,S=0),h=1<>v)+d]=Z<<24|U<<16|S|0}while(0!==d);for(h=1<>=1;if(0!==h?(z&=h-1,z+=h):z=0,m++,0==--E[w]){if(w===g)break;w=e[a+r[m]]}if(w>p&&(z&f)!==_){for(0===v&&(v=p),c+=b,k=w-v,y=1<852||2===t&&x>592)return 1;_=z&f,n[_]=p<<24|k<<16|c-s|0}}return 0!==z&&(n[c+z]=w-v<<24|64<<16|0),o.bits=p,0};const{Z_FINISH:be,Z_BLOCK:ge,Z_TREES:pe,Z_OK:ke,Z_STREAM_END:ve,Z_NEED_DICT:ye,Z_STREAM_ERROR:xe,Z_DATA_ERROR:ze,Z_MEM_ERROR:Ae,Z_BUF_ERROR:Ee,Z_DEFLATED:Re}=K,Ze=16180,Ue=16190,Se=16191,De=16192,Te=16194,Oe=16199,Ie=16200,Fe=16206,Le=16209,Ne=t=>(t>>>24&255)+(t>>>8&65280)+((65280&t)<<8)+((255&t)<<24);function Be(){this.strm=null,this.mode=0,this.last=!1,this.wrap=0,this.havedict=!1,this.flags=0,this.dmax=0,this.check=0,this.total=0,this.head=null,this.wbits=0,this.wsize=0,this.whave=0,this.wnext=0,this.window=null,this.hold=0,this.bits=0,this.length=0,this.offset=0,this.extra=0,this.lencode=null,this.distcode=null,this.lenbits=0,this.distbits=0,this.ncode=0,this.nlen=0,this.ndist=0,this.have=0,this.next=null,this.lens=new Uint16Array(320),this.work=new Uint16Array(288),this.lendyn=null,this.distdyn=null,this.sane=0,this.back=0,this.was=0}const Ce=t=>{if(!t)return 1;const e=t.state;return!e||e.strm!==t||e.mode16211?1:0},Me=t=>{if(Ce(t))return xe;const e=t.state;return t.total_in=t.total_out=e.total=0,t.msg="",e.wrap&&(t.adler=1&e.wrap),e.mode=Ze,e.last=0,e.havedict=0,e.flags=-1,e.dmax=32768,e.head=null,e.hold=0,e.bits=0,e.lencode=e.lendyn=new Int32Array(852),e.distcode=e.distdyn=new Int32Array(592),e.sane=1,e.back=-1,ke},He=t=>{if(Ce(t))return xe;const e=t.state;return e.wsize=0,e.whave=0,e.wnext=0,Me(t)},je=(t,e)=>{let a;if(Ce(t))return xe;const i=t.state;return e<0?(a=0,e=-e):(a=5+(e>>4),e<48&&(e&=15)),e&&(e<8||e>15)?xe:(null!==i.window&&i.wbits!==e&&(i.window=null),i.wrap=a,i.wbits=e,He(t))},Ke=(t,e)=>{if(!t)return xe;const a=new Be;t.state=a,a.strm=t,a.window=null,a.mode=Ze;const i=je(t,e);return i!==ke&&(t.state=null),i};let Pe,Ye,Ge=!0;const Xe=t=>{if(Ge){Pe=new Int32Array(512),Ye=new Int32Array(32);let e=0;for(;e<144;)t.lens[e++]=8;for(;e<256;)t.lens[e++]=9;for(;e<280;)t.lens[e++]=7;for(;e<288;)t.lens[e++]=8;for(me(1,t.lens,0,288,Pe,0,t.work,{bits:9}),e=0;e<32;)t.lens[e++]=5;me(2,t.lens,0,32,Ye,0,t.work,{bits:5}),Ge=!1}t.lencode=Pe,t.lenbits=9,t.distcode=Ye,t.distbits=5},We=(t,e,a,i)=>{let n;const s=t.state;return null===s.window&&(s.wsize=1<=s.wsize?(s.window.set(e.subarray(a-s.wsize,a),0),s.wnext=0,s.whave=s.wsize):(n=s.wsize-s.wnext,n>i&&(n=i),s.window.set(e.subarray(a-i,a-i+n),s.wnext),(i-=n)?(s.window.set(e.subarray(a-i,a),0),s.wnext=i,s.whave=s.wsize):(s.wnext+=n,s.wnext===s.wsize&&(s.wnext=0),s.whaveKe(t,15),inflateInit2:Ke,inflate:(t,e)=>{let a,i,n,s,r,o,l,h,d,_,f,c,u,w,m,b,g,p,k,v,y,x,z=0;const A=new Uint8Array(4);let E,R;const Z=new Uint8Array([16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15]);if(Ce(t)||!t.output||!t.input&&0!==t.avail_in)return xe;a=t.state,a.mode===Se&&(a.mode=De),r=t.next_out,n=t.output,l=t.avail_out,s=t.next_in,i=t.input,o=t.avail_in,h=a.hold,d=a.bits,_=o,f=l,x=ke;t:for(;;)switch(a.mode){case Ze:if(0===a.wrap){a.mode=De;break}for(;d<16;){if(0===o)break t;o--,h+=i[s++]<>>8&255,a.check=H(a.check,A,2,0),h=0,d=0,a.mode=16181;break}if(a.head&&(a.head.done=!1),!(1&a.wrap)||(((255&h)<<8)+(h>>8))%31){t.msg="incorrect header check",a.mode=Le;break}if((15&h)!==Re){t.msg="unknown compression method",a.mode=Le;break}if(h>>>=4,d-=4,y=8+(15&h),0===a.wbits&&(a.wbits=y),y>15||y>a.wbits){t.msg="invalid window size",a.mode=Le;break}a.dmax=1<>8&1),512&a.flags&&4&a.wrap&&(A[0]=255&h,A[1]=h>>>8&255,a.check=H(a.check,A,2,0)),h=0,d=0,a.mode=16182;case 16182:for(;d<32;){if(0===o)break t;o--,h+=i[s++]<>>8&255,A[2]=h>>>16&255,A[3]=h>>>24&255,a.check=H(a.check,A,4,0)),h=0,d=0,a.mode=16183;case 16183:for(;d<16;){if(0===o)break t;o--,h+=i[s++]<>8),512&a.flags&&4&a.wrap&&(A[0]=255&h,A[1]=h>>>8&255,a.check=H(a.check,A,2,0)),h=0,d=0,a.mode=16184;case 16184:if(1024&a.flags){for(;d<16;){if(0===o)break t;o--,h+=i[s++]<>>8&255,a.check=H(a.check,A,2,0)),h=0,d=0}else a.head&&(a.head.extra=null);a.mode=16185;case 16185:if(1024&a.flags&&(c=a.length,c>o&&(c=o),c&&(a.head&&(y=a.head.extra_len-a.length,a.head.extra||(a.head.extra=new Uint8Array(a.head.extra_len)),a.head.extra.set(i.subarray(s,s+c),y)),512&a.flags&&4&a.wrap&&(a.check=H(a.check,i,c,s)),o-=c,s+=c,a.length-=c),a.length))break t;a.length=0,a.mode=16186;case 16186:if(2048&a.flags){if(0===o)break t;c=0;do{y=i[s+c++],a.head&&y&&a.length<65536&&(a.head.name+=String.fromCharCode(y))}while(y&&c>9&1,a.head.done=!0),t.adler=a.check=0,a.mode=Se;break;case 16189:for(;d<32;){if(0===o)break t;o--,h+=i[s++]<>>=7&d,d-=7&d,a.mode=Fe;break}for(;d<3;){if(0===o)break t;o--,h+=i[s++]<>>=1,d-=1,3&h){case 0:a.mode=16193;break;case 1:if(Xe(a),a.mode=Oe,e===pe){h>>>=2,d-=2;break t}break;case 2:a.mode=16196;break;case 3:t.msg="invalid block type",a.mode=Le}h>>>=2,d-=2;break;case 16193:for(h>>>=7&d,d-=7&d;d<32;){if(0===o)break t;o--,h+=i[s++]<>>16^65535)){t.msg="invalid stored block lengths",a.mode=Le;break}if(a.length=65535&h,h=0,d=0,a.mode=Te,e===pe)break t;case Te:a.mode=16195;case 16195:if(c=a.length,c){if(c>o&&(c=o),c>l&&(c=l),0===c)break t;n.set(i.subarray(s,s+c),r),o-=c,s+=c,l-=c,r+=c,a.length-=c;break}a.mode=Se;break;case 16196:for(;d<14;){if(0===o)break t;o--,h+=i[s++]<>>=5,d-=5,a.ndist=1+(31&h),h>>>=5,d-=5,a.ncode=4+(15&h),h>>>=4,d-=4,a.nlen>286||a.ndist>30){t.msg="too many length or distance symbols",a.mode=Le;break}a.have=0,a.mode=16197;case 16197:for(;a.have>>=3,d-=3}for(;a.have<19;)a.lens[Z[a.have++]]=0;if(a.lencode=a.lendyn,a.lenbits=7,E={bits:a.lenbits},x=me(0,a.lens,0,19,a.lencode,0,a.work,E),a.lenbits=E.bits,x){t.msg="invalid code lengths set",a.mode=Le;break}a.have=0,a.mode=16198;case 16198:for(;a.have>>24,b=z>>>16&255,g=65535&z,!(m<=d);){if(0===o)break t;o--,h+=i[s++]<>>=m,d-=m,a.lens[a.have++]=g;else{if(16===g){for(R=m+2;d>>=m,d-=m,0===a.have){t.msg="invalid bit length repeat",a.mode=Le;break}y=a.lens[a.have-1],c=3+(3&h),h>>>=2,d-=2}else if(17===g){for(R=m+3;d>>=m,d-=m,y=0,c=3+(7&h),h>>>=3,d-=3}else{for(R=m+7;d>>=m,d-=m,y=0,c=11+(127&h),h>>>=7,d-=7}if(a.have+c>a.nlen+a.ndist){t.msg="invalid bit length repeat",a.mode=Le;break}for(;c--;)a.lens[a.have++]=y}}if(a.mode===Le)break;if(0===a.lens[256]){t.msg="invalid code -- missing end-of-block",a.mode=Le;break}if(a.lenbits=9,E={bits:a.lenbits},x=me(1,a.lens,0,a.nlen,a.lencode,0,a.work,E),a.lenbits=E.bits,x){t.msg="invalid literal/lengths set",a.mode=Le;break}if(a.distbits=6,a.distcode=a.distdyn,E={bits:a.distbits},x=me(2,a.lens,a.nlen,a.ndist,a.distcode,0,a.work,E),a.distbits=E.bits,x){t.msg="invalid distances set",a.mode=Le;break}if(a.mode=Oe,e===pe)break t;case Oe:a.mode=Ie;case Ie:if(o>=6&&l>=258){t.next_out=r,t.avail_out=l,t.next_in=s,t.avail_in=o,a.hold=h,a.bits=d,de(t,f),r=t.next_out,n=t.output,l=t.avail_out,s=t.next_in,i=t.input,o=t.avail_in,h=a.hold,d=a.bits,a.mode===Se&&(a.back=-1);break}for(a.back=0;z=a.lencode[h&(1<>>24,b=z>>>16&255,g=65535&z,!(m<=d);){if(0===o)break t;o--,h+=i[s++]<>p)],m=z>>>24,b=z>>>16&255,g=65535&z,!(p+m<=d);){if(0===o)break t;o--,h+=i[s++]<>>=p,d-=p,a.back+=p}if(h>>>=m,d-=m,a.back+=m,a.length=g,0===b){a.mode=16205;break}if(32&b){a.back=-1,a.mode=Se;break}if(64&b){t.msg="invalid literal/length code",a.mode=Le;break}a.extra=15&b,a.mode=16201;case 16201:if(a.extra){for(R=a.extra;d>>=a.extra,d-=a.extra,a.back+=a.extra}a.was=a.length,a.mode=16202;case 16202:for(;z=a.distcode[h&(1<>>24,b=z>>>16&255,g=65535&z,!(m<=d);){if(0===o)break t;o--,h+=i[s++]<>p)],m=z>>>24,b=z>>>16&255,g=65535&z,!(p+m<=d);){if(0===o)break t;o--,h+=i[s++]<>>=p,d-=p,a.back+=p}if(h>>>=m,d-=m,a.back+=m,64&b){t.msg="invalid distance code",a.mode=Le;break}a.offset=g,a.extra=15&b,a.mode=16203;case 16203:if(a.extra){for(R=a.extra;d>>=a.extra,d-=a.extra,a.back+=a.extra}if(a.offset>a.dmax){t.msg="invalid distance too far back",a.mode=Le;break}a.mode=16204;case 16204:if(0===l)break t;if(c=f-l,a.offset>c){if(c=a.offset-c,c>a.whave&&a.sane){t.msg="invalid distance too far back",a.mode=Le;break}c>a.wnext?(c-=a.wnext,u=a.wsize-c):u=a.wnext-c,c>a.length&&(c=a.length),w=a.window}else w=n,u=r-a.offset,c=a.length;c>l&&(c=l),l-=c,a.length-=c;do{n[r++]=w[u++]}while(--c);0===a.length&&(a.mode=Ie);break;case 16205:if(0===l)break t;n[r++]=a.length,l--,a.mode=Ie;break;case Fe:if(a.wrap){for(;d<32;){if(0===o)break t;o--,h|=i[s++]<{if(Ce(t))return xe;let e=t.state;return e.window&&(e.window=null),t.state=null,ke},inflateGetHeader:(t,e)=>{if(Ce(t))return xe;const a=t.state;return 0==(2&a.wrap)?xe:(a.head=e,e.done=!1,ke)},inflateSetDictionary:(t,e)=>{const a=e.length;let i,n,s;return Ce(t)?xe:(i=t.state,0!==i.wrap&&i.mode!==Ue?xe:i.mode===Ue&&(n=1,n=C(n,e,a,0),n!==i.check)?ze:(s=We(t,e,a,a),s?(i.mode=16210,Ae):(i.havedict=1,ke)))},inflateInfo:"pako inflate (from Nodeca project)"};var Je=function(){this.text=0,this.time=0,this.xflags=0,this.os=0,this.extra=null,this.extra_len=0,this.name="",this.comment="",this.hcrc=0,this.done=!1};const Qe=Object.prototype.toString,{Z_NO_FLUSH:Ve,Z_FINISH:$e,Z_OK:ta,Z_STREAM_END:ea,Z_NEED_DICT:aa,Z_STREAM_ERROR:ia,Z_DATA_ERROR:na,Z_MEM_ERROR:sa}=K;function ra(t){this.options=jt({chunkSize:65536,windowBits:15,to:""},t||{});const e=this.options;e.raw&&e.windowBits>=0&&e.windowBits<16&&(e.windowBits=-e.windowBits,0===e.windowBits&&(e.windowBits=-15)),!(e.windowBits>=0&&e.windowBits<16)||t&&t.windowBits||(e.windowBits+=32),e.windowBits>15&&e.windowBits<48&&0==(15&e.windowBits)&&(e.windowBits|=15),this.err=0,this.msg="",this.ended=!1,this.chunks=[],this.strm=new qt,this.strm.avail_out=0;let a=qe.inflateInit2(this.strm,e.windowBits);if(a!==ta)throw new Error(j[a]);if(this.header=new Je,qe.inflateGetHeader(this.strm,this.header),e.dictionary&&("string"==typeof e.dictionary?e.dictionary=Gt(e.dictionary):"[object ArrayBuffer]"===Qe.call(e.dictionary)&&(e.dictionary=new Uint8Array(e.dictionary)),e.raw&&(a=qe.inflateSetDictionary(this.strm,e.dictionary),a!==ta)))throw new Error(j[a])}function oa(t,e){const a=new ra(e);if(a.push(t),a.err)throw a.msg||j[a.err];return a.result}ra.prototype.push=function(t,e){const a=this.strm,i=this.options.chunkSize,n=this.options.dictionary;let s,r,o;if(this.ended)return!1;for(r=e===~~e?e:!0===e?$e:Ve,"[object ArrayBuffer]"===Qe.call(t)?a.input=new Uint8Array(t):a.input=t,a.next_in=0,a.avail_in=a.input.length;;){for(0===a.avail_out&&(a.output=new Uint8Array(i),a.next_out=0,a.avail_out=i),s=qe.inflate(a,r),s===aa&&n&&(s=qe.inflateSetDictionary(a,n),s===ta?s=qe.inflate(a,r):s===na&&(s=aa));a.avail_in>0&&s===ea&&a.state.wrap>0&&0!==t[a.next_in];)qe.inflateReset(a),s=qe.inflate(a,r);switch(s){case ia:case na:case aa:case sa:return this.onEnd(s),this.ended=!0,!1}if(o=a.avail_out,a.next_out&&(0===a.avail_out||s===ea))if("string"===this.options.to){let t=Wt(a.output,a.next_out),e=a.next_out-t,n=Xt(a.output,t);a.next_out=e,a.avail_out=i-e,e&&a.output.set(a.output.subarray(t,t+e),0),this.onData(n)}else this.onData(a.output.length===a.next_out?a.output:a.output.subarray(0,a.next_out));if(s!==ta||0!==o){if(s===ea)return s=qe.inflateEnd(this.strm),this.onEnd(s),this.ended=!0,!0;if(0===a.avail_in)break}}return!0},ra.prototype.onData=function(t){this.chunks.push(t)},ra.prototype.onEnd=function(t){t===ta&&("string"===this.options.to?this.result=this.chunks.join(""):this.result=Kt(this.chunks)),this.chunks=[],this.err=t,this.msg=this.strm.msg};var la={Inflate:ra,inflate:oa,inflateRaw:function(t,e){return(e=e||{}).raw=!0,oa(t,e)},ungzip:oa,constants:K};const{Deflate:ha,deflate:da,deflateRaw:_a,gzip:fa}=le,{Inflate:ca,inflate:ua,inflateRaw:wa,ungzip:ma}=la;var ba=ha,ga=da,pa=_a,ka=fa,va=ca,ya=ua,xa=wa,za=ma,Aa=K,Ea={Deflate:ba,deflate:ga,deflateRaw:pa,gzip:ka,Inflate:va,inflate:ya,inflateRaw:xa,ungzip:za,constants:Aa};t.Deflate=ba,t.Inflate=va,t.constants=Aa,t.default=Ea,t.deflate=ga,t.deflateRaw=pa,t.gzip=ka,t.inflate=ya,t.inflateRaw=xa,t.ungzip=za,Object.defineProperty(t,"__esModule",{value:!0})})); +/*! pako 2.1.0 https://github.com/nodeca/pako @license (MIT AND Zlib) */ +!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?e(exports):"function"==typeof define&&define.amd?define(["exports"],e):e((t="undefined"!=typeof globalThis?globalThis:t||self).pako={})}(this,(function(t){"use strict";function e(t){let e=t.length;for(;--e>=0;)t[e]=0}const a=256,i=286,n=30,s=15,r=new Uint8Array([0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0]),o=new Uint8Array([0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13]),l=new Uint8Array([0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,3,7]),h=new Uint8Array([16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15]),d=new Array(576);e(d);const _=new Array(60);e(_);const f=new Array(512);e(f);const c=new Array(256);e(c);const u=new Array(29);e(u);const w=new Array(n);function m(t,e,a,i,n){this.static_tree=t,this.extra_bits=e,this.extra_base=a,this.elems=i,this.max_length=n,this.has_stree=t&&t.length}let b,g,p;function k(t,e){this.dyn_tree=t,this.max_code=0,this.stat_desc=e}e(w);const v=t=>t<256?f[t]:f[256+(t>>>7)],y=(t,e)=>{t.pending_buf[t.pending++]=255&e,t.pending_buf[t.pending++]=e>>>8&255},x=(t,e,a)=>{t.bi_valid>16-a?(t.bi_buf|=e<>16-t.bi_valid,t.bi_valid+=a-16):(t.bi_buf|=e<{x(t,a[2*e],a[2*e+1])},A=(t,e)=>{let a=0;do{a|=1&t,t>>>=1,a<<=1}while(--e>0);return a>>>1},E=(t,e,a)=>{const i=new Array(16);let n,r,o=0;for(n=1;n<=s;n++)o=o+a[n-1]<<1,i[n]=o;for(r=0;r<=e;r++){let e=t[2*r+1];0!==e&&(t[2*r]=A(i[e]++,e))}},R=t=>{let e;for(e=0;e{t.bi_valid>8?y(t,t.bi_buf):t.bi_valid>0&&(t.pending_buf[t.pending++]=t.bi_buf),t.bi_buf=0,t.bi_valid=0},U=(t,e,a,i)=>{const n=2*e,s=2*a;return t[n]{const i=t.heap[a];let n=a<<1;for(;n<=t.heap_len&&(n{let n,s,l,h,d=0;if(0!==t.sym_next)do{n=255&t.pending_buf[t.sym_buf+d++],n+=(255&t.pending_buf[t.sym_buf+d++])<<8,s=t.pending_buf[t.sym_buf+d++],0===n?z(t,s,e):(l=c[s],z(t,l+a+1,e),h=r[l],0!==h&&(s-=u[l],x(t,s,h)),n--,l=v(n),z(t,l,i),h=o[l],0!==h&&(n-=w[l],x(t,n,h)))}while(d{const a=e.dyn_tree,i=e.stat_desc.static_tree,n=e.stat_desc.has_stree,r=e.stat_desc.elems;let o,l,h,d=-1;for(t.heap_len=0,t.heap_max=573,o=0;o>1;o>=1;o--)S(t,a,o);h=r;do{o=t.heap[1],t.heap[1]=t.heap[t.heap_len--],S(t,a,1),l=t.heap[1],t.heap[--t.heap_max]=o,t.heap[--t.heap_max]=l,a[2*h]=a[2*o]+a[2*l],t.depth[h]=(t.depth[o]>=t.depth[l]?t.depth[o]:t.depth[l])+1,a[2*o+1]=a[2*l+1]=h,t.heap[1]=h++,S(t,a,1)}while(t.heap_len>=2);t.heap[--t.heap_max]=t.heap[1],((t,e)=>{const a=e.dyn_tree,i=e.max_code,n=e.stat_desc.static_tree,r=e.stat_desc.has_stree,o=e.stat_desc.extra_bits,l=e.stat_desc.extra_base,h=e.stat_desc.max_length;let d,_,f,c,u,w,m=0;for(c=0;c<=s;c++)t.bl_count[c]=0;for(a[2*t.heap[t.heap_max]+1]=0,d=t.heap_max+1;d<573;d++)_=t.heap[d],c=a[2*a[2*_+1]+1]+1,c>h&&(c=h,m++),a[2*_+1]=c,_>i||(t.bl_count[c]++,u=0,_>=l&&(u=o[_-l]),w=a[2*_],t.opt_len+=w*(c+u),r&&(t.static_len+=w*(n[2*_+1]+u)));if(0!==m){do{for(c=h-1;0===t.bl_count[c];)c--;t.bl_count[c]--,t.bl_count[c+1]+=2,t.bl_count[h]--,m-=2}while(m>0);for(c=h;0!==c;c--)for(_=t.bl_count[c];0!==_;)f=t.heap[--d],f>i||(a[2*f+1]!==c&&(t.opt_len+=(c-a[2*f+1])*a[2*f],a[2*f+1]=c),_--)}})(t,e),E(a,d,t.bl_count)},O=(t,e,a)=>{let i,n,s=-1,r=e[1],o=0,l=7,h=4;for(0===r&&(l=138,h=3),e[2*(a+1)+1]=65535,i=0;i<=a;i++)n=r,r=e[2*(i+1)+1],++o{let i,n,s=-1,r=e[1],o=0,l=7,h=4;for(0===r&&(l=138,h=3),i=0;i<=a;i++)if(n=r,r=e[2*(i+1)+1],!(++o{x(t,0+(i?1:0),3),Z(t),y(t,a),y(t,~a),a&&t.pending_buf.set(t.window.subarray(e,e+a),t.pending),t.pending+=a};var N=(t,e,i,n)=>{let s,r,o=0;t.level>0?(2===t.strm.data_type&&(t.strm.data_type=(t=>{let e,i=4093624447;for(e=0;e<=31;e++,i>>>=1)if(1&i&&0!==t.dyn_ltree[2*e])return 0;if(0!==t.dyn_ltree[18]||0!==t.dyn_ltree[20]||0!==t.dyn_ltree[26])return 1;for(e=32;e{let e;for(O(t,t.dyn_ltree,t.l_desc.max_code),O(t,t.dyn_dtree,t.d_desc.max_code),T(t,t.bl_desc),e=18;e>=3&&0===t.bl_tree[2*h[e]+1];e--);return t.opt_len+=3*(e+1)+5+5+4,e})(t),s=t.opt_len+3+7>>>3,r=t.static_len+3+7>>>3,r<=s&&(s=r)):s=r=i+5,i+4<=s&&-1!==e?L(t,e,i,n):4===t.strategy||r===s?(x(t,2+(n?1:0),3),D(t,d,_)):(x(t,4+(n?1:0),3),((t,e,a,i)=>{let n;for(x(t,e-257,5),x(t,a-1,5),x(t,i-4,4),n=0;n{F||((()=>{let t,e,a,h,k;const v=new Array(16);for(a=0,h=0;h<28;h++)for(u[h]=a,t=0;t<1<>=7;h(t.pending_buf[t.sym_buf+t.sym_next++]=e,t.pending_buf[t.sym_buf+t.sym_next++]=e>>8,t.pending_buf[t.sym_buf+t.sym_next++]=i,0===e?t.dyn_ltree[2*i]++:(t.matches++,e--,t.dyn_ltree[2*(c[i]+a+1)]++,t.dyn_dtree[2*v(e)]++),t.sym_next===t.sym_end),_tr_align:t=>{x(t,2,3),z(t,256,d),(t=>{16===t.bi_valid?(y(t,t.bi_buf),t.bi_buf=0,t.bi_valid=0):t.bi_valid>=8&&(t.pending_buf[t.pending++]=255&t.bi_buf,t.bi_buf>>=8,t.bi_valid-=8)})(t)}};var C=(t,e,a,i)=>{let n=65535&t|0,s=t>>>16&65535|0,r=0;for(;0!==a;){r=a>2e3?2e3:a,a-=r;do{n=n+e[i++]|0,s=s+n|0}while(--r);n%=65521,s%=65521}return n|s<<16|0};const M=new Uint32Array((()=>{let t,e=[];for(var a=0;a<256;a++){t=a;for(var i=0;i<8;i++)t=1&t?3988292384^t>>>1:t>>>1;e[a]=t}return e})());var H=(t,e,a,i)=>{const n=M,s=i+a;t^=-1;for(let a=i;a>>8^n[255&(t^e[a])];return-1^t},j={2:"need dictionary",1:"stream end",0:"","-1":"file error","-2":"stream error","-3":"data error","-4":"insufficient memory","-5":"buffer error","-6":"incompatible version"},K={Z_NO_FLUSH:0,Z_PARTIAL_FLUSH:1,Z_SYNC_FLUSH:2,Z_FULL_FLUSH:3,Z_FINISH:4,Z_BLOCK:5,Z_TREES:6,Z_OK:0,Z_STREAM_END:1,Z_NEED_DICT:2,Z_ERRNO:-1,Z_STREAM_ERROR:-2,Z_DATA_ERROR:-3,Z_MEM_ERROR:-4,Z_BUF_ERROR:-5,Z_NO_COMPRESSION:0,Z_BEST_SPEED:1,Z_BEST_COMPRESSION:9,Z_DEFAULT_COMPRESSION:-1,Z_FILTERED:1,Z_HUFFMAN_ONLY:2,Z_RLE:3,Z_FIXED:4,Z_DEFAULT_STRATEGY:0,Z_BINARY:0,Z_TEXT:1,Z_UNKNOWN:2,Z_DEFLATED:8};const{_tr_init:P,_tr_stored_block:Y,_tr_flush_block:G,_tr_tally:X,_tr_align:W}=B,{Z_NO_FLUSH:q,Z_PARTIAL_FLUSH:J,Z_FULL_FLUSH:Q,Z_FINISH:V,Z_BLOCK:$,Z_OK:tt,Z_STREAM_END:et,Z_STREAM_ERROR:at,Z_DATA_ERROR:it,Z_BUF_ERROR:nt,Z_DEFAULT_COMPRESSION:st,Z_FILTERED:rt,Z_HUFFMAN_ONLY:ot,Z_RLE:lt,Z_FIXED:ht,Z_DEFAULT_STRATEGY:dt,Z_UNKNOWN:_t,Z_DEFLATED:ft}=K,ct=258,ut=262,wt=42,mt=113,bt=666,gt=(t,e)=>(t.msg=j[e],e),pt=t=>2*t-(t>4?9:0),kt=t=>{let e=t.length;for(;--e>=0;)t[e]=0},vt=t=>{let e,a,i,n=t.w_size;e=t.hash_size,i=e;do{a=t.head[--i],t.head[i]=a>=n?a-n:0}while(--e);e=n,i=e;do{a=t.prev[--i],t.prev[i]=a>=n?a-n:0}while(--e)};let yt=(t,e,a)=>(e<{const e=t.state;let a=e.pending;a>t.avail_out&&(a=t.avail_out),0!==a&&(t.output.set(e.pending_buf.subarray(e.pending_out,e.pending_out+a),t.next_out),t.next_out+=a,e.pending_out+=a,t.total_out+=a,t.avail_out-=a,e.pending-=a,0===e.pending&&(e.pending_out=0))},zt=(t,e)=>{G(t,t.block_start>=0?t.block_start:-1,t.strstart-t.block_start,e),t.block_start=t.strstart,xt(t.strm)},At=(t,e)=>{t.pending_buf[t.pending++]=e},Et=(t,e)=>{t.pending_buf[t.pending++]=e>>>8&255,t.pending_buf[t.pending++]=255&e},Rt=(t,e,a,i)=>{let n=t.avail_in;return n>i&&(n=i),0===n?0:(t.avail_in-=n,e.set(t.input.subarray(t.next_in,t.next_in+n),a),1===t.state.wrap?t.adler=C(t.adler,e,n,a):2===t.state.wrap&&(t.adler=H(t.adler,e,n,a)),t.next_in+=n,t.total_in+=n,n)},Zt=(t,e)=>{let a,i,n=t.max_chain_length,s=t.strstart,r=t.prev_length,o=t.nice_match;const l=t.strstart>t.w_size-ut?t.strstart-(t.w_size-ut):0,h=t.window,d=t.w_mask,_=t.prev,f=t.strstart+ct;let c=h[s+r-1],u=h[s+r];t.prev_length>=t.good_match&&(n>>=2),o>t.lookahead&&(o=t.lookahead);do{if(a=e,h[a+r]===u&&h[a+r-1]===c&&h[a]===h[s]&&h[++a]===h[s+1]){s+=2,a++;do{}while(h[++s]===h[++a]&&h[++s]===h[++a]&&h[++s]===h[++a]&&h[++s]===h[++a]&&h[++s]===h[++a]&&h[++s]===h[++a]&&h[++s]===h[++a]&&h[++s]===h[++a]&&sr){if(t.match_start=e,r=i,i>=o)break;c=h[s+r-1],u=h[s+r]}}}while((e=_[e&d])>l&&0!=--n);return r<=t.lookahead?r:t.lookahead},Ut=t=>{const e=t.w_size;let a,i,n;do{if(i=t.window_size-t.lookahead-t.strstart,t.strstart>=e+(e-ut)&&(t.window.set(t.window.subarray(e,e+e-i),0),t.match_start-=e,t.strstart-=e,t.block_start-=e,t.insert>t.strstart&&(t.insert=t.strstart),vt(t),i+=e),0===t.strm.avail_in)break;if(a=Rt(t.strm,t.window,t.strstart+t.lookahead,i),t.lookahead+=a,t.lookahead+t.insert>=3)for(n=t.strstart-t.insert,t.ins_h=t.window[n],t.ins_h=yt(t,t.ins_h,t.window[n+1]);t.insert&&(t.ins_h=yt(t,t.ins_h,t.window[n+3-1]),t.prev[n&t.w_mask]=t.head[t.ins_h],t.head[t.ins_h]=n,n++,t.insert--,!(t.lookahead+t.insert<3)););}while(t.lookahead{let a,i,n,s=t.pending_buf_size-5>t.w_size?t.w_size:t.pending_buf_size-5,r=0,o=t.strm.avail_in;do{if(a=65535,n=t.bi_valid+42>>3,t.strm.avail_outi+t.strm.avail_in&&(a=i+t.strm.avail_in),a>n&&(a=n),a>8,t.pending_buf[t.pending-2]=~a,t.pending_buf[t.pending-1]=~a>>8,xt(t.strm),i&&(i>a&&(i=a),t.strm.output.set(t.window.subarray(t.block_start,t.block_start+i),t.strm.next_out),t.strm.next_out+=i,t.strm.avail_out-=i,t.strm.total_out+=i,t.block_start+=i,a-=i),a&&(Rt(t.strm,t.strm.output,t.strm.next_out,a),t.strm.next_out+=a,t.strm.avail_out-=a,t.strm.total_out+=a)}while(0===r);return o-=t.strm.avail_in,o&&(o>=t.w_size?(t.matches=2,t.window.set(t.strm.input.subarray(t.strm.next_in-t.w_size,t.strm.next_in),0),t.strstart=t.w_size,t.insert=t.strstart):(t.window_size-t.strstart<=o&&(t.strstart-=t.w_size,t.window.set(t.window.subarray(t.w_size,t.w_size+t.strstart),0),t.matches<2&&t.matches++,t.insert>t.strstart&&(t.insert=t.strstart)),t.window.set(t.strm.input.subarray(t.strm.next_in-o,t.strm.next_in),t.strstart),t.strstart+=o,t.insert+=o>t.w_size-t.insert?t.w_size-t.insert:o),t.block_start=t.strstart),t.high_watern&&t.block_start>=t.w_size&&(t.block_start-=t.w_size,t.strstart-=t.w_size,t.window.set(t.window.subarray(t.w_size,t.w_size+t.strstart),0),t.matches<2&&t.matches++,n+=t.w_size,t.insert>t.strstart&&(t.insert=t.strstart)),n>t.strm.avail_in&&(n=t.strm.avail_in),n&&(Rt(t.strm,t.window,t.strstart,n),t.strstart+=n,t.insert+=n>t.w_size-t.insert?t.w_size-t.insert:n),t.high_water>3,n=t.pending_buf_size-n>65535?65535:t.pending_buf_size-n,s=n>t.w_size?t.w_size:n,i=t.strstart-t.block_start,(i>=s||(i||e===V)&&e!==q&&0===t.strm.avail_in&&i<=n)&&(a=i>n?n:i,r=e===V&&0===t.strm.avail_in&&a===i?1:0,Y(t,t.block_start,a,r),t.block_start+=a,xt(t.strm)),r?3:1)},Dt=(t,e)=>{let a,i;for(;;){if(t.lookahead=3&&(t.ins_h=yt(t,t.ins_h,t.window[t.strstart+3-1]),a=t.prev[t.strstart&t.w_mask]=t.head[t.ins_h],t.head[t.ins_h]=t.strstart),0!==a&&t.strstart-a<=t.w_size-ut&&(t.match_length=Zt(t,a)),t.match_length>=3)if(i=X(t,t.strstart-t.match_start,t.match_length-3),t.lookahead-=t.match_length,t.match_length<=t.max_lazy_match&&t.lookahead>=3){t.match_length--;do{t.strstart++,t.ins_h=yt(t,t.ins_h,t.window[t.strstart+3-1]),a=t.prev[t.strstart&t.w_mask]=t.head[t.ins_h],t.head[t.ins_h]=t.strstart}while(0!=--t.match_length);t.strstart++}else t.strstart+=t.match_length,t.match_length=0,t.ins_h=t.window[t.strstart],t.ins_h=yt(t,t.ins_h,t.window[t.strstart+1]);else i=X(t,0,t.window[t.strstart]),t.lookahead--,t.strstart++;if(i&&(zt(t,!1),0===t.strm.avail_out))return 1}return t.insert=t.strstart<2?t.strstart:2,e===V?(zt(t,!0),0===t.strm.avail_out?3:4):t.sym_next&&(zt(t,!1),0===t.strm.avail_out)?1:2},Tt=(t,e)=>{let a,i,n;for(;;){if(t.lookahead=3&&(t.ins_h=yt(t,t.ins_h,t.window[t.strstart+3-1]),a=t.prev[t.strstart&t.w_mask]=t.head[t.ins_h],t.head[t.ins_h]=t.strstart),t.prev_length=t.match_length,t.prev_match=t.match_start,t.match_length=2,0!==a&&t.prev_length4096)&&(t.match_length=2)),t.prev_length>=3&&t.match_length<=t.prev_length){n=t.strstart+t.lookahead-3,i=X(t,t.strstart-1-t.prev_match,t.prev_length-3),t.lookahead-=t.prev_length-1,t.prev_length-=2;do{++t.strstart<=n&&(t.ins_h=yt(t,t.ins_h,t.window[t.strstart+3-1]),a=t.prev[t.strstart&t.w_mask]=t.head[t.ins_h],t.head[t.ins_h]=t.strstart)}while(0!=--t.prev_length);if(t.match_available=0,t.match_length=2,t.strstart++,i&&(zt(t,!1),0===t.strm.avail_out))return 1}else if(t.match_available){if(i=X(t,0,t.window[t.strstart-1]),i&&zt(t,!1),t.strstart++,t.lookahead--,0===t.strm.avail_out)return 1}else t.match_available=1,t.strstart++,t.lookahead--}return t.match_available&&(i=X(t,0,t.window[t.strstart-1]),t.match_available=0),t.insert=t.strstart<2?t.strstart:2,e===V?(zt(t,!0),0===t.strm.avail_out?3:4):t.sym_next&&(zt(t,!1),0===t.strm.avail_out)?1:2};function Ot(t,e,a,i,n){this.good_length=t,this.max_lazy=e,this.nice_length=a,this.max_chain=i,this.func=n}const It=[new Ot(0,0,0,0,St),new Ot(4,4,8,4,Dt),new Ot(4,5,16,8,Dt),new Ot(4,6,32,32,Dt),new Ot(4,4,16,16,Tt),new Ot(8,16,32,32,Tt),new Ot(8,16,128,128,Tt),new Ot(8,32,128,256,Tt),new Ot(32,128,258,1024,Tt),new Ot(32,258,258,4096,Tt)];function Ft(){this.strm=null,this.status=0,this.pending_buf=null,this.pending_buf_size=0,this.pending_out=0,this.pending=0,this.wrap=0,this.gzhead=null,this.gzindex=0,this.method=ft,this.last_flush=-1,this.w_size=0,this.w_bits=0,this.w_mask=0,this.window=null,this.window_size=0,this.prev=null,this.head=null,this.ins_h=0,this.hash_size=0,this.hash_bits=0,this.hash_mask=0,this.hash_shift=0,this.block_start=0,this.match_length=0,this.prev_match=0,this.match_available=0,this.strstart=0,this.match_start=0,this.lookahead=0,this.prev_length=0,this.max_chain_length=0,this.max_lazy_match=0,this.level=0,this.strategy=0,this.good_match=0,this.nice_match=0,this.dyn_ltree=new Uint16Array(1146),this.dyn_dtree=new Uint16Array(122),this.bl_tree=new Uint16Array(78),kt(this.dyn_ltree),kt(this.dyn_dtree),kt(this.bl_tree),this.l_desc=null,this.d_desc=null,this.bl_desc=null,this.bl_count=new Uint16Array(16),this.heap=new Uint16Array(573),kt(this.heap),this.heap_len=0,this.heap_max=0,this.depth=new Uint16Array(573),kt(this.depth),this.sym_buf=0,this.lit_bufsize=0,this.sym_next=0,this.sym_end=0,this.opt_len=0,this.static_len=0,this.matches=0,this.insert=0,this.bi_buf=0,this.bi_valid=0}const Lt=t=>{if(!t)return 1;const e=t.state;return!e||e.strm!==t||e.status!==wt&&57!==e.status&&69!==e.status&&73!==e.status&&91!==e.status&&103!==e.status&&e.status!==mt&&e.status!==bt?1:0},Nt=t=>{if(Lt(t))return gt(t,at);t.total_in=t.total_out=0,t.data_type=_t;const e=t.state;return e.pending=0,e.pending_out=0,e.wrap<0&&(e.wrap=-e.wrap),e.status=2===e.wrap?57:e.wrap?wt:mt,t.adler=2===e.wrap?0:1,e.last_flush=-2,P(e),tt},Bt=t=>{const e=Nt(t);var a;return e===tt&&((a=t.state).window_size=2*a.w_size,kt(a.head),a.max_lazy_match=It[a.level].max_lazy,a.good_match=It[a.level].good_length,a.nice_match=It[a.level].nice_length,a.max_chain_length=It[a.level].max_chain,a.strstart=0,a.block_start=0,a.lookahead=0,a.insert=0,a.match_length=a.prev_length=2,a.match_available=0,a.ins_h=0),e},Ct=(t,e,a,i,n,s)=>{if(!t)return at;let r=1;if(e===st&&(e=6),i<0?(r=0,i=-i):i>15&&(r=2,i-=16),n<1||n>9||a!==ft||i<8||i>15||e<0||e>9||s<0||s>ht||8===i&&1!==r)return gt(t,at);8===i&&(i=9);const o=new Ft;return t.state=o,o.strm=t,o.status=wt,o.wrap=r,o.gzhead=null,o.w_bits=i,o.w_size=1<Ct(t,e,ft,15,8,dt),deflateInit2:Ct,deflateReset:Bt,deflateResetKeep:Nt,deflateSetHeader:(t,e)=>Lt(t)||2!==t.state.wrap?at:(t.state.gzhead=e,tt),deflate:(t,e)=>{if(Lt(t)||e>$||e<0)return t?gt(t,at):at;const a=t.state;if(!t.output||0!==t.avail_in&&!t.input||a.status===bt&&e!==V)return gt(t,0===t.avail_out?nt:at);const i=a.last_flush;if(a.last_flush=e,0!==a.pending){if(xt(t),0===t.avail_out)return a.last_flush=-1,tt}else if(0===t.avail_in&&pt(e)<=pt(i)&&e!==V)return gt(t,nt);if(a.status===bt&&0!==t.avail_in)return gt(t,nt);if(a.status===wt&&0===a.wrap&&(a.status=mt),a.status===wt){let e=ft+(a.w_bits-8<<4)<<8,i=-1;if(i=a.strategy>=ot||a.level<2?0:a.level<6?1:6===a.level?2:3,e|=i<<6,0!==a.strstart&&(e|=32),e+=31-e%31,Et(a,e),0!==a.strstart&&(Et(a,t.adler>>>16),Et(a,65535&t.adler)),t.adler=1,a.status=mt,xt(t),0!==a.pending)return a.last_flush=-1,tt}if(57===a.status)if(t.adler=0,At(a,31),At(a,139),At(a,8),a.gzhead)At(a,(a.gzhead.text?1:0)+(a.gzhead.hcrc?2:0)+(a.gzhead.extra?4:0)+(a.gzhead.name?8:0)+(a.gzhead.comment?16:0)),At(a,255&a.gzhead.time),At(a,a.gzhead.time>>8&255),At(a,a.gzhead.time>>16&255),At(a,a.gzhead.time>>24&255),At(a,9===a.level?2:a.strategy>=ot||a.level<2?4:0),At(a,255&a.gzhead.os),a.gzhead.extra&&a.gzhead.extra.length&&(At(a,255&a.gzhead.extra.length),At(a,a.gzhead.extra.length>>8&255)),a.gzhead.hcrc&&(t.adler=H(t.adler,a.pending_buf,a.pending,0)),a.gzindex=0,a.status=69;else if(At(a,0),At(a,0),At(a,0),At(a,0),At(a,0),At(a,9===a.level?2:a.strategy>=ot||a.level<2?4:0),At(a,3),a.status=mt,xt(t),0!==a.pending)return a.last_flush=-1,tt;if(69===a.status){if(a.gzhead.extra){let e=a.pending,i=(65535&a.gzhead.extra.length)-a.gzindex;for(;a.pending+i>a.pending_buf_size;){let n=a.pending_buf_size-a.pending;if(a.pending_buf.set(a.gzhead.extra.subarray(a.gzindex,a.gzindex+n),a.pending),a.pending=a.pending_buf_size,a.gzhead.hcrc&&a.pending>e&&(t.adler=H(t.adler,a.pending_buf,a.pending-e,e)),a.gzindex+=n,xt(t),0!==a.pending)return a.last_flush=-1,tt;e=0,i-=n}let n=new Uint8Array(a.gzhead.extra);a.pending_buf.set(n.subarray(a.gzindex,a.gzindex+i),a.pending),a.pending+=i,a.gzhead.hcrc&&a.pending>e&&(t.adler=H(t.adler,a.pending_buf,a.pending-e,e)),a.gzindex=0}a.status=73}if(73===a.status){if(a.gzhead.name){let e,i=a.pending;do{if(a.pending===a.pending_buf_size){if(a.gzhead.hcrc&&a.pending>i&&(t.adler=H(t.adler,a.pending_buf,a.pending-i,i)),xt(t),0!==a.pending)return a.last_flush=-1,tt;i=0}e=a.gzindexi&&(t.adler=H(t.adler,a.pending_buf,a.pending-i,i)),a.gzindex=0}a.status=91}if(91===a.status){if(a.gzhead.comment){let e,i=a.pending;do{if(a.pending===a.pending_buf_size){if(a.gzhead.hcrc&&a.pending>i&&(t.adler=H(t.adler,a.pending_buf,a.pending-i,i)),xt(t),0!==a.pending)return a.last_flush=-1,tt;i=0}e=a.gzindexi&&(t.adler=H(t.adler,a.pending_buf,a.pending-i,i))}a.status=103}if(103===a.status){if(a.gzhead.hcrc){if(a.pending+2>a.pending_buf_size&&(xt(t),0!==a.pending))return a.last_flush=-1,tt;At(a,255&t.adler),At(a,t.adler>>8&255),t.adler=0}if(a.status=mt,xt(t),0!==a.pending)return a.last_flush=-1,tt}if(0!==t.avail_in||0!==a.lookahead||e!==q&&a.status!==bt){let i=0===a.level?St(a,e):a.strategy===ot?((t,e)=>{let a;for(;;){if(0===t.lookahead&&(Ut(t),0===t.lookahead)){if(e===q)return 1;break}if(t.match_length=0,a=X(t,0,t.window[t.strstart]),t.lookahead--,t.strstart++,a&&(zt(t,!1),0===t.strm.avail_out))return 1}return t.insert=0,e===V?(zt(t,!0),0===t.strm.avail_out?3:4):t.sym_next&&(zt(t,!1),0===t.strm.avail_out)?1:2})(a,e):a.strategy===lt?((t,e)=>{let a,i,n,s;const r=t.window;for(;;){if(t.lookahead<=ct){if(Ut(t),t.lookahead<=ct&&e===q)return 1;if(0===t.lookahead)break}if(t.match_length=0,t.lookahead>=3&&t.strstart>0&&(n=t.strstart-1,i=r[n],i===r[++n]&&i===r[++n]&&i===r[++n])){s=t.strstart+ct;do{}while(i===r[++n]&&i===r[++n]&&i===r[++n]&&i===r[++n]&&i===r[++n]&&i===r[++n]&&i===r[++n]&&i===r[++n]&&nt.lookahead&&(t.match_length=t.lookahead)}if(t.match_length>=3?(a=X(t,1,t.match_length-3),t.lookahead-=t.match_length,t.strstart+=t.match_length,t.match_length=0):(a=X(t,0,t.window[t.strstart]),t.lookahead--,t.strstart++),a&&(zt(t,!1),0===t.strm.avail_out))return 1}return t.insert=0,e===V?(zt(t,!0),0===t.strm.avail_out?3:4):t.sym_next&&(zt(t,!1),0===t.strm.avail_out)?1:2})(a,e):It[a.level].func(a,e);if(3!==i&&4!==i||(a.status=bt),1===i||3===i)return 0===t.avail_out&&(a.last_flush=-1),tt;if(2===i&&(e===J?W(a):e!==$&&(Y(a,0,0,!1),e===Q&&(kt(a.head),0===a.lookahead&&(a.strstart=0,a.block_start=0,a.insert=0))),xt(t),0===t.avail_out))return a.last_flush=-1,tt}return e!==V?tt:a.wrap<=0?et:(2===a.wrap?(At(a,255&t.adler),At(a,t.adler>>8&255),At(a,t.adler>>16&255),At(a,t.adler>>24&255),At(a,255&t.total_in),At(a,t.total_in>>8&255),At(a,t.total_in>>16&255),At(a,t.total_in>>24&255)):(Et(a,t.adler>>>16),Et(a,65535&t.adler)),xt(t),a.wrap>0&&(a.wrap=-a.wrap),0!==a.pending?tt:et)},deflateEnd:t=>{if(Lt(t))return at;const e=t.state.status;return t.state=null,e===mt?gt(t,it):tt},deflateSetDictionary:(t,e)=>{let a=e.length;if(Lt(t))return at;const i=t.state,n=i.wrap;if(2===n||1===n&&i.status!==wt||i.lookahead)return at;if(1===n&&(t.adler=C(t.adler,e,a,0)),i.wrap=0,a>=i.w_size){0===n&&(kt(i.head),i.strstart=0,i.block_start=0,i.insert=0);let t=new Uint8Array(i.w_size);t.set(e.subarray(a-i.w_size,a),0),e=t,a=i.w_size}const s=t.avail_in,r=t.next_in,o=t.input;for(t.avail_in=a,t.next_in=0,t.input=e,Ut(i);i.lookahead>=3;){let t=i.strstart,e=i.lookahead-2;do{i.ins_h=yt(i,i.ins_h,i.window[t+3-1]),i.prev[t&i.w_mask]=i.head[i.ins_h],i.head[i.ins_h]=t,t++}while(--e);i.strstart=t,i.lookahead=2,Ut(i)}return i.strstart+=i.lookahead,i.block_start=i.strstart,i.insert=i.lookahead,i.lookahead=0,i.match_length=i.prev_length=2,i.match_available=0,t.next_in=r,t.input=o,t.avail_in=s,i.wrap=n,tt},deflateInfo:"pako deflate (from Nodeca project)"};const Ht=(t,e)=>Object.prototype.hasOwnProperty.call(t,e);var jt=function(t){const e=Array.prototype.slice.call(arguments,1);for(;e.length;){const a=e.shift();if(a){if("object"!=typeof a)throw new TypeError(a+"must be non-object");for(const e in a)Ht(a,e)&&(t[e]=a[e])}}return t},Kt=t=>{let e=0;for(let a=0,i=t.length;a=252?6:t>=248?5:t>=240?4:t>=224?3:t>=192?2:1;Yt[254]=Yt[254]=1;var Gt=t=>{if("function"==typeof TextEncoder&&TextEncoder.prototype.encode)return(new TextEncoder).encode(t);let e,a,i,n,s,r=t.length,o=0;for(n=0;n>>6,e[s++]=128|63&a):a<65536?(e[s++]=224|a>>>12,e[s++]=128|a>>>6&63,e[s++]=128|63&a):(e[s++]=240|a>>>18,e[s++]=128|a>>>12&63,e[s++]=128|a>>>6&63,e[s++]=128|63&a);return e},Xt=(t,e)=>{const a=e||t.length;if("function"==typeof TextDecoder&&TextDecoder.prototype.decode)return(new TextDecoder).decode(t.subarray(0,e));let i,n;const s=new Array(2*a);for(n=0,i=0;i4)s[n++]=65533,i+=r-1;else{for(e&=2===r?31:3===r?15:7;r>1&&i1?s[n++]=65533:e<65536?s[n++]=e:(e-=65536,s[n++]=55296|e>>10&1023,s[n++]=56320|1023&e)}}return((t,e)=>{if(e<65534&&t.subarray&&Pt)return String.fromCharCode.apply(null,t.length===e?t:t.subarray(0,e));let a="";for(let i=0;i{(e=e||t.length)>t.length&&(e=t.length);let a=e-1;for(;a>=0&&128==(192&t[a]);)a--;return a<0||0===a?e:a+Yt[t[a]]>e?a:e};var qt=function(){this.input=null,this.next_in=0,this.avail_in=0,this.total_in=0,this.output=null,this.next_out=0,this.avail_out=0,this.total_out=0,this.msg="",this.state=null,this.data_type=2,this.adler=0};const Jt=Object.prototype.toString,{Z_NO_FLUSH:Qt,Z_SYNC_FLUSH:Vt,Z_FULL_FLUSH:$t,Z_FINISH:te,Z_OK:ee,Z_STREAM_END:ae,Z_DEFAULT_COMPRESSION:ie,Z_DEFAULT_STRATEGY:ne,Z_DEFLATED:se}=K;function re(t){this.options=jt({level:ie,method:se,chunkSize:16384,windowBits:15,memLevel:8,strategy:ne},t||{});let e=this.options;e.raw&&e.windowBits>0?e.windowBits=-e.windowBits:e.gzip&&e.windowBits>0&&e.windowBits<16&&(e.windowBits+=16),this.err=0,this.msg="",this.ended=!1,this.chunks=[],this.strm=new qt,this.strm.avail_out=0;let a=Mt.deflateInit2(this.strm,e.level,e.method,e.windowBits,e.memLevel,e.strategy);if(a!==ee)throw new Error(j[a]);if(e.header&&Mt.deflateSetHeader(this.strm,e.header),e.dictionary){let t;if(t="string"==typeof e.dictionary?Gt(e.dictionary):"[object ArrayBuffer]"===Jt.call(e.dictionary)?new Uint8Array(e.dictionary):e.dictionary,a=Mt.deflateSetDictionary(this.strm,t),a!==ee)throw new Error(j[a]);this._dict_set=!0}}function oe(t,e){const a=new re(e);if(a.push(t,!0),a.err)throw a.msg||j[a.err];return a.result}re.prototype.push=function(t,e){const a=this.strm,i=this.options.chunkSize;let n,s;if(this.ended)return!1;for(s=e===~~e?e:!0===e?te:Qt,"string"==typeof t?a.input=Gt(t):"[object ArrayBuffer]"===Jt.call(t)?a.input=new Uint8Array(t):a.input=t,a.next_in=0,a.avail_in=a.input.length;;)if(0===a.avail_out&&(a.output=new Uint8Array(i),a.next_out=0,a.avail_out=i),(s===Vt||s===$t)&&a.avail_out<=6)this.onData(a.output.subarray(0,a.next_out)),a.avail_out=0;else{if(n=Mt.deflate(a,s),n===ae)return a.next_out>0&&this.onData(a.output.subarray(0,a.next_out)),n=Mt.deflateEnd(this.strm),this.onEnd(n),this.ended=!0,n===ee;if(0!==a.avail_out){if(s>0&&a.next_out>0)this.onData(a.output.subarray(0,a.next_out)),a.avail_out=0;else if(0===a.avail_in)break}else this.onData(a.output)}return!0},re.prototype.onData=function(t){this.chunks.push(t)},re.prototype.onEnd=function(t){t===ee&&(this.result=Kt(this.chunks)),this.chunks=[],this.err=t,this.msg=this.strm.msg};var le={Deflate:re,deflate:oe,deflateRaw:function(t,e){return(e=e||{}).raw=!0,oe(t,e)},gzip:function(t,e){return(e=e||{}).gzip=!0,oe(t,e)},constants:K};const he=16209;var de=function(t,e){let a,i,n,s,r,o,l,h,d,_,f,c,u,w,m,b,g,p,k,v,y,x,z,A;const E=t.state;a=t.next_in,z=t.input,i=a+(t.avail_in-5),n=t.next_out,A=t.output,s=n-(e-t.avail_out),r=n+(t.avail_out-257),o=E.dmax,l=E.wsize,h=E.whave,d=E.wnext,_=E.window,f=E.hold,c=E.bits,u=E.lencode,w=E.distcode,m=(1<>>24,f>>>=p,c-=p,p=g>>>16&255,0===p)A[n++]=65535&g;else{if(!(16&p)){if(0==(64&p)){g=u[(65535&g)+(f&(1<>>=p,c-=p),c<15&&(f+=z[a++]<>>24,f>>>=p,c-=p,p=g>>>16&255,!(16&p)){if(0==(64&p)){g=w[(65535&g)+(f&(1<o){t.msg="invalid distance too far back",E.mode=he;break t}if(f>>>=p,c-=p,p=n-s,v>p){if(p=v-p,p>h&&E.sane){t.msg="invalid distance too far back",E.mode=he;break t}if(y=0,x=_,0===d){if(y+=l-p,p2;)A[n++]=x[y++],A[n++]=x[y++],A[n++]=x[y++],k-=3;k&&(A[n++]=x[y++],k>1&&(A[n++]=x[y++]))}else{y=n-v;do{A[n++]=A[y++],A[n++]=A[y++],A[n++]=A[y++],k-=3}while(k>2);k&&(A[n++]=A[y++],k>1&&(A[n++]=A[y++]))}break}}break}}while(a>3,a-=k,c-=k<<3,f&=(1<{const l=o.bits;let h,d,_,f,c,u,w=0,m=0,b=0,g=0,p=0,k=0,v=0,y=0,x=0,z=0,A=null;const E=new Uint16Array(16),R=new Uint16Array(16);let Z,U,S,D=null;for(w=0;w<=_e;w++)E[w]=0;for(m=0;m=1&&0===E[g];g--);if(p>g&&(p=g),0===g)return n[s++]=20971520,n[s++]=20971520,o.bits=1,0;for(b=1;b0&&(0===t||1!==g))return-1;for(R[1]=0,w=1;w<_e;w++)R[w+1]=R[w]+E[w];for(m=0;m852||2===t&&x>592)return 1;for(;;){Z=w-v,r[m]+1=u?(U=D[r[m]-u],S=A[r[m]-u]):(U=96,S=0),h=1<>v)+d]=Z<<24|U<<16|S|0}while(0!==d);for(h=1<>=1;if(0!==h?(z&=h-1,z+=h):z=0,m++,0==--E[w]){if(w===g)break;w=e[a+r[m]]}if(w>p&&(z&f)!==_){for(0===v&&(v=p),c+=b,k=w-v,y=1<852||2===t&&x>592)return 1;_=z&f,n[_]=p<<24|k<<16|c-s|0}}return 0!==z&&(n[c+z]=w-v<<24|64<<16|0),o.bits=p,0};const{Z_FINISH:be,Z_BLOCK:ge,Z_TREES:pe,Z_OK:ke,Z_STREAM_END:ve,Z_NEED_DICT:ye,Z_STREAM_ERROR:xe,Z_DATA_ERROR:ze,Z_MEM_ERROR:Ae,Z_BUF_ERROR:Ee,Z_DEFLATED:Re}=K,Ze=16180,Ue=16190,Se=16191,De=16192,Te=16194,Oe=16199,Ie=16200,Fe=16206,Le=16209,Ne=t=>(t>>>24&255)+(t>>>8&65280)+((65280&t)<<8)+((255&t)<<24);function Be(){this.strm=null,this.mode=0,this.last=!1,this.wrap=0,this.havedict=!1,this.flags=0,this.dmax=0,this.check=0,this.total=0,this.head=null,this.wbits=0,this.wsize=0,this.whave=0,this.wnext=0,this.window=null,this.hold=0,this.bits=0,this.length=0,this.offset=0,this.extra=0,this.lencode=null,this.distcode=null,this.lenbits=0,this.distbits=0,this.ncode=0,this.nlen=0,this.ndist=0,this.have=0,this.next=null,this.lens=new Uint16Array(320),this.work=new Uint16Array(288),this.lendyn=null,this.distdyn=null,this.sane=0,this.back=0,this.was=0}const Ce=t=>{if(!t)return 1;const e=t.state;return!e||e.strm!==t||e.mode16211?1:0},Me=t=>{if(Ce(t))return xe;const e=t.state;return t.total_in=t.total_out=e.total=0,t.msg="",e.wrap&&(t.adler=1&e.wrap),e.mode=Ze,e.last=0,e.havedict=0,e.flags=-1,e.dmax=32768,e.head=null,e.hold=0,e.bits=0,e.lencode=e.lendyn=new Int32Array(852),e.distcode=e.distdyn=new Int32Array(592),e.sane=1,e.back=-1,ke},He=t=>{if(Ce(t))return xe;const e=t.state;return e.wsize=0,e.whave=0,e.wnext=0,Me(t)},je=(t,e)=>{let a;if(Ce(t))return xe;const i=t.state;return e<0?(a=0,e=-e):(a=5+(e>>4),e<48&&(e&=15)),e&&(e<8||e>15)?xe:(null!==i.window&&i.wbits!==e&&(i.window=null),i.wrap=a,i.wbits=e,He(t))},Ke=(t,e)=>{if(!t)return xe;const a=new Be;t.state=a,a.strm=t,a.window=null,a.mode=Ze;const i=je(t,e);return i!==ke&&(t.state=null),i};let Pe,Ye,Ge=!0;const Xe=t=>{if(Ge){Pe=new Int32Array(512),Ye=new Int32Array(32);let e=0;for(;e<144;)t.lens[e++]=8;for(;e<256;)t.lens[e++]=9;for(;e<280;)t.lens[e++]=7;for(;e<288;)t.lens[e++]=8;for(me(1,t.lens,0,288,Pe,0,t.work,{bits:9}),e=0;e<32;)t.lens[e++]=5;me(2,t.lens,0,32,Ye,0,t.work,{bits:5}),Ge=!1}t.lencode=Pe,t.lenbits=9,t.distcode=Ye,t.distbits=5},We=(t,e,a,i)=>{let n;const s=t.state;return null===s.window&&(s.wsize=1<=s.wsize?(s.window.set(e.subarray(a-s.wsize,a),0),s.wnext=0,s.whave=s.wsize):(n=s.wsize-s.wnext,n>i&&(n=i),s.window.set(e.subarray(a-i,a-i+n),s.wnext),(i-=n)?(s.window.set(e.subarray(a-i,a),0),s.wnext=i,s.whave=s.wsize):(s.wnext+=n,s.wnext===s.wsize&&(s.wnext=0),s.whaveKe(t,15),inflateInit2:Ke,inflate:(t,e)=>{let a,i,n,s,r,o,l,h,d,_,f,c,u,w,m,b,g,p,k,v,y,x,z=0;const A=new Uint8Array(4);let E,R;const Z=new Uint8Array([16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15]);if(Ce(t)||!t.output||!t.input&&0!==t.avail_in)return xe;a=t.state,a.mode===Se&&(a.mode=De),r=t.next_out,n=t.output,l=t.avail_out,s=t.next_in,i=t.input,o=t.avail_in,h=a.hold,d=a.bits,_=o,f=l,x=ke;t:for(;;)switch(a.mode){case Ze:if(0===a.wrap){a.mode=De;break}for(;d<16;){if(0===o)break t;o--,h+=i[s++]<>>8&255,a.check=H(a.check,A,2,0),h=0,d=0,a.mode=16181;break}if(a.head&&(a.head.done=!1),!(1&a.wrap)||(((255&h)<<8)+(h>>8))%31){t.msg="incorrect header check",a.mode=Le;break}if((15&h)!==Re){t.msg="unknown compression method",a.mode=Le;break}if(h>>>=4,d-=4,y=8+(15&h),0===a.wbits&&(a.wbits=y),y>15||y>a.wbits){t.msg="invalid window size",a.mode=Le;break}a.dmax=1<>8&1),512&a.flags&&4&a.wrap&&(A[0]=255&h,A[1]=h>>>8&255,a.check=H(a.check,A,2,0)),h=0,d=0,a.mode=16182;case 16182:for(;d<32;){if(0===o)break t;o--,h+=i[s++]<>>8&255,A[2]=h>>>16&255,A[3]=h>>>24&255,a.check=H(a.check,A,4,0)),h=0,d=0,a.mode=16183;case 16183:for(;d<16;){if(0===o)break t;o--,h+=i[s++]<>8),512&a.flags&&4&a.wrap&&(A[0]=255&h,A[1]=h>>>8&255,a.check=H(a.check,A,2,0)),h=0,d=0,a.mode=16184;case 16184:if(1024&a.flags){for(;d<16;){if(0===o)break t;o--,h+=i[s++]<>>8&255,a.check=H(a.check,A,2,0)),h=0,d=0}else a.head&&(a.head.extra=null);a.mode=16185;case 16185:if(1024&a.flags&&(c=a.length,c>o&&(c=o),c&&(a.head&&(y=a.head.extra_len-a.length,a.head.extra||(a.head.extra=new Uint8Array(a.head.extra_len)),a.head.extra.set(i.subarray(s,s+c),y)),512&a.flags&&4&a.wrap&&(a.check=H(a.check,i,c,s)),o-=c,s+=c,a.length-=c),a.length))break t;a.length=0,a.mode=16186;case 16186:if(2048&a.flags){if(0===o)break t;c=0;do{y=i[s+c++],a.head&&y&&a.length<65536&&(a.head.name+=String.fromCharCode(y))}while(y&&c>9&1,a.head.done=!0),t.adler=a.check=0,a.mode=Se;break;case 16189:for(;d<32;){if(0===o)break t;o--,h+=i[s++]<>>=7&d,d-=7&d,a.mode=Fe;break}for(;d<3;){if(0===o)break t;o--,h+=i[s++]<>>=1,d-=1,3&h){case 0:a.mode=16193;break;case 1:if(Xe(a),a.mode=Oe,e===pe){h>>>=2,d-=2;break t}break;case 2:a.mode=16196;break;case 3:t.msg="invalid block type",a.mode=Le}h>>>=2,d-=2;break;case 16193:for(h>>>=7&d,d-=7&d;d<32;){if(0===o)break t;o--,h+=i[s++]<>>16^65535)){t.msg="invalid stored block lengths",a.mode=Le;break}if(a.length=65535&h,h=0,d=0,a.mode=Te,e===pe)break t;case Te:a.mode=16195;case 16195:if(c=a.length,c){if(c>o&&(c=o),c>l&&(c=l),0===c)break t;n.set(i.subarray(s,s+c),r),o-=c,s+=c,l-=c,r+=c,a.length-=c;break}a.mode=Se;break;case 16196:for(;d<14;){if(0===o)break t;o--,h+=i[s++]<>>=5,d-=5,a.ndist=1+(31&h),h>>>=5,d-=5,a.ncode=4+(15&h),h>>>=4,d-=4,a.nlen>286||a.ndist>30){t.msg="too many length or distance symbols",a.mode=Le;break}a.have=0,a.mode=16197;case 16197:for(;a.have>>=3,d-=3}for(;a.have<19;)a.lens[Z[a.have++]]=0;if(a.lencode=a.lendyn,a.lenbits=7,E={bits:a.lenbits},x=me(0,a.lens,0,19,a.lencode,0,a.work,E),a.lenbits=E.bits,x){t.msg="invalid code lengths set",a.mode=Le;break}a.have=0,a.mode=16198;case 16198:for(;a.have>>24,b=z>>>16&255,g=65535&z,!(m<=d);){if(0===o)break t;o--,h+=i[s++]<>>=m,d-=m,a.lens[a.have++]=g;else{if(16===g){for(R=m+2;d>>=m,d-=m,0===a.have){t.msg="invalid bit length repeat",a.mode=Le;break}y=a.lens[a.have-1],c=3+(3&h),h>>>=2,d-=2}else if(17===g){for(R=m+3;d>>=m,d-=m,y=0,c=3+(7&h),h>>>=3,d-=3}else{for(R=m+7;d>>=m,d-=m,y=0,c=11+(127&h),h>>>=7,d-=7}if(a.have+c>a.nlen+a.ndist){t.msg="invalid bit length repeat",a.mode=Le;break}for(;c--;)a.lens[a.have++]=y}}if(a.mode===Le)break;if(0===a.lens[256]){t.msg="invalid code -- missing end-of-block",a.mode=Le;break}if(a.lenbits=9,E={bits:a.lenbits},x=me(1,a.lens,0,a.nlen,a.lencode,0,a.work,E),a.lenbits=E.bits,x){t.msg="invalid literal/lengths set",a.mode=Le;break}if(a.distbits=6,a.distcode=a.distdyn,E={bits:a.distbits},x=me(2,a.lens,a.nlen,a.ndist,a.distcode,0,a.work,E),a.distbits=E.bits,x){t.msg="invalid distances set",a.mode=Le;break}if(a.mode=Oe,e===pe)break t;case Oe:a.mode=Ie;case Ie:if(o>=6&&l>=258){t.next_out=r,t.avail_out=l,t.next_in=s,t.avail_in=o,a.hold=h,a.bits=d,de(t,f),r=t.next_out,n=t.output,l=t.avail_out,s=t.next_in,i=t.input,o=t.avail_in,h=a.hold,d=a.bits,a.mode===Se&&(a.back=-1);break}for(a.back=0;z=a.lencode[h&(1<>>24,b=z>>>16&255,g=65535&z,!(m<=d);){if(0===o)break t;o--,h+=i[s++]<>p)],m=z>>>24,b=z>>>16&255,g=65535&z,!(p+m<=d);){if(0===o)break t;o--,h+=i[s++]<>>=p,d-=p,a.back+=p}if(h>>>=m,d-=m,a.back+=m,a.length=g,0===b){a.mode=16205;break}if(32&b){a.back=-1,a.mode=Se;break}if(64&b){t.msg="invalid literal/length code",a.mode=Le;break}a.extra=15&b,a.mode=16201;case 16201:if(a.extra){for(R=a.extra;d>>=a.extra,d-=a.extra,a.back+=a.extra}a.was=a.length,a.mode=16202;case 16202:for(;z=a.distcode[h&(1<>>24,b=z>>>16&255,g=65535&z,!(m<=d);){if(0===o)break t;o--,h+=i[s++]<>p)],m=z>>>24,b=z>>>16&255,g=65535&z,!(p+m<=d);){if(0===o)break t;o--,h+=i[s++]<>>=p,d-=p,a.back+=p}if(h>>>=m,d-=m,a.back+=m,64&b){t.msg="invalid distance code",a.mode=Le;break}a.offset=g,a.extra=15&b,a.mode=16203;case 16203:if(a.extra){for(R=a.extra;d>>=a.extra,d-=a.extra,a.back+=a.extra}if(a.offset>a.dmax){t.msg="invalid distance too far back",a.mode=Le;break}a.mode=16204;case 16204:if(0===l)break t;if(c=f-l,a.offset>c){if(c=a.offset-c,c>a.whave&&a.sane){t.msg="invalid distance too far back",a.mode=Le;break}c>a.wnext?(c-=a.wnext,u=a.wsize-c):u=a.wnext-c,c>a.length&&(c=a.length),w=a.window}else w=n,u=r-a.offset,c=a.length;c>l&&(c=l),l-=c,a.length-=c;do{n[r++]=w[u++]}while(--c);0===a.length&&(a.mode=Ie);break;case 16205:if(0===l)break t;n[r++]=a.length,l--,a.mode=Ie;break;case Fe:if(a.wrap){for(;d<32;){if(0===o)break t;o--,h|=i[s++]<{if(Ce(t))return xe;let e=t.state;return e.window&&(e.window=null),t.state=null,ke},inflateGetHeader:(t,e)=>{if(Ce(t))return xe;const a=t.state;return 0==(2&a.wrap)?xe:(a.head=e,e.done=!1,ke)},inflateSetDictionary:(t,e)=>{const a=e.length;let i,n,s;return Ce(t)?xe:(i=t.state,0!==i.wrap&&i.mode!==Ue?xe:i.mode===Ue&&(n=1,n=C(n,e,a,0),n!==i.check)?ze:(s=We(t,e,a,a),s?(i.mode=16210,Ae):(i.havedict=1,ke)))},inflateInfo:"pako inflate (from Nodeca project)"};var Je=function(){this.text=0,this.time=0,this.xflags=0,this.os=0,this.extra=null,this.extra_len=0,this.name="",this.comment="",this.hcrc=0,this.done=!1};const Qe=Object.prototype.toString,{Z_NO_FLUSH:Ve,Z_FINISH:$e,Z_OK:ta,Z_STREAM_END:ea,Z_NEED_DICT:aa,Z_STREAM_ERROR:ia,Z_DATA_ERROR:na,Z_MEM_ERROR:sa}=K;function ra(t){this.options=jt({chunkSize:65536,windowBits:15,to:""},t||{});const e=this.options;e.raw&&e.windowBits>=0&&e.windowBits<16&&(e.windowBits=-e.windowBits,0===e.windowBits&&(e.windowBits=-15)),!(e.windowBits>=0&&e.windowBits<16)||t&&t.windowBits||(e.windowBits+=32),e.windowBits>15&&e.windowBits<48&&0==(15&e.windowBits)&&(e.windowBits|=15),this.err=0,this.msg="",this.ended=!1,this.chunks=[],this.strm=new qt,this.strm.avail_out=0;let a=qe.inflateInit2(this.strm,e.windowBits);if(a!==ta)throw new Error(j[a]);if(this.header=new Je,qe.inflateGetHeader(this.strm,this.header),e.dictionary&&("string"==typeof e.dictionary?e.dictionary=Gt(e.dictionary):"[object ArrayBuffer]"===Qe.call(e.dictionary)&&(e.dictionary=new Uint8Array(e.dictionary)),e.raw&&(a=qe.inflateSetDictionary(this.strm,e.dictionary),a!==ta)))throw new Error(j[a])}function oa(t,e){const a=new ra(e);if(a.push(t),a.err)throw a.msg||j[a.err];return a.result}ra.prototype.push=function(t,e){const a=this.strm,i=this.options.chunkSize,n=this.options.dictionary;let s,r,o;if(this.ended)return!1;for(r=e===~~e?e:!0===e?$e:Ve,"[object ArrayBuffer]"===Qe.call(t)?a.input=new Uint8Array(t):a.input=t,a.next_in=0,a.avail_in=a.input.length;;){for(0===a.avail_out&&(a.output=new Uint8Array(i),a.next_out=0,a.avail_out=i),s=qe.inflate(a,r),s===aa&&n&&(s=qe.inflateSetDictionary(a,n),s===ta?s=qe.inflate(a,r):s===na&&(s=aa));a.avail_in>0&&s===ea&&a.state.wrap>0&&0!==t[a.next_in];)qe.inflateReset(a),s=qe.inflate(a,r);switch(s){case ia:case na:case aa:case sa:return this.onEnd(s),this.ended=!0,!1}if(o=a.avail_out,a.next_out&&(0===a.avail_out||s===ea))if("string"===this.options.to){let t=Wt(a.output,a.next_out),e=a.next_out-t,n=Xt(a.output,t);a.next_out=e,a.avail_out=i-e,e&&a.output.set(a.output.subarray(t,t+e),0),this.onData(n)}else this.onData(a.output.length===a.next_out?a.output:a.output.subarray(0,a.next_out));if(s!==ta||0!==o){if(s===ea)return s=qe.inflateEnd(this.strm),this.onEnd(s),this.ended=!0,!0;if(0===a.avail_in)break}}return!0},ra.prototype.onData=function(t){this.chunks.push(t)},ra.prototype.onEnd=function(t){t===ta&&("string"===this.options.to?this.result=this.chunks.join(""):this.result=Kt(this.chunks)),this.chunks=[],this.err=t,this.msg=this.strm.msg};var la={Inflate:ra,inflate:oa,inflateRaw:function(t,e){return(e=e||{}).raw=!0,oa(t,e)},ungzip:oa,constants:K};const{Deflate:ha,deflate:da,deflateRaw:_a,gzip:fa}=le,{Inflate:ca,inflate:ua,inflateRaw:wa,ungzip:ma}=la;var ba=ha,ga=da,pa=_a,ka=fa,va=ca,ya=ua,xa=wa,za=ma,Aa=K,Ea={Deflate:ba,deflate:ga,deflateRaw:pa,gzip:ka,Inflate:va,inflate:ya,inflateRaw:xa,ungzip:za,constants:Aa};t.Deflate=ba,t.Inflate=va,t.constants=Aa,t.default=Ea,t.deflate=ga,t.deflateRaw=pa,t.gzip=ka,t.inflate=ya,t.inflateRaw=xa,t.ungzip=za,Object.defineProperty(t,"__esModule",{value:!0})})); +/*! pako 2.1.0 https://github.com/nodeca/pako @license (MIT AND Zlib) */ +!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?e(exports):"function"==typeof define&&define.amd?define(["exports"],e):e((t="undefined"!=typeof globalThis?globalThis:t||self).pako={})}(this,(function(t){"use strict";function e(t){let e=t.length;for(;--e>=0;)t[e]=0}const a=256,i=286,n=30,s=15,r=new Uint8Array([0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0]),o=new Uint8Array([0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13]),l=new Uint8Array([0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,3,7]),h=new Uint8Array([16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15]),d=new Array(576);e(d);const _=new Array(60);e(_);const f=new Array(512);e(f);const c=new Array(256);e(c);const u=new Array(29);e(u);const w=new Array(n);function m(t,e,a,i,n){this.static_tree=t,this.extra_bits=e,this.extra_base=a,this.elems=i,this.max_length=n,this.has_stree=t&&t.length}let b,g,p;function k(t,e){this.dyn_tree=t,this.max_code=0,this.stat_desc=e}e(w);const v=t=>t<256?f[t]:f[256+(t>>>7)],y=(t,e)=>{t.pending_buf[t.pending++]=255&e,t.pending_buf[t.pending++]=e>>>8&255},x=(t,e,a)=>{t.bi_valid>16-a?(t.bi_buf|=e<>16-t.bi_valid,t.bi_valid+=a-16):(t.bi_buf|=e<{x(t,a[2*e],a[2*e+1])},A=(t,e)=>{let a=0;do{a|=1&t,t>>>=1,a<<=1}while(--e>0);return a>>>1},E=(t,e,a)=>{const i=new Array(16);let n,r,o=0;for(n=1;n<=s;n++)o=o+a[n-1]<<1,i[n]=o;for(r=0;r<=e;r++){let e=t[2*r+1];0!==e&&(t[2*r]=A(i[e]++,e))}},R=t=>{let e;for(e=0;e{t.bi_valid>8?y(t,t.bi_buf):t.bi_valid>0&&(t.pending_buf[t.pending++]=t.bi_buf),t.bi_buf=0,t.bi_valid=0},U=(t,e,a,i)=>{const n=2*e,s=2*a;return t[n]{const i=t.heap[a];let n=a<<1;for(;n<=t.heap_len&&(n{let n,s,l,h,d=0;if(0!==t.sym_next)do{n=255&t.pending_buf[t.sym_buf+d++],n+=(255&t.pending_buf[t.sym_buf+d++])<<8,s=t.pending_buf[t.sym_buf+d++],0===n?z(t,s,e):(l=c[s],z(t,l+a+1,e),h=r[l],0!==h&&(s-=u[l],x(t,s,h)),n--,l=v(n),z(t,l,i),h=o[l],0!==h&&(n-=w[l],x(t,n,h)))}while(d{const a=e.dyn_tree,i=e.stat_desc.static_tree,n=e.stat_desc.has_stree,r=e.stat_desc.elems;let o,l,h,d=-1;for(t.heap_len=0,t.heap_max=573,o=0;o>1;o>=1;o--)S(t,a,o);h=r;do{o=t.heap[1],t.heap[1]=t.heap[t.heap_len--],S(t,a,1),l=t.heap[1],t.heap[--t.heap_max]=o,t.heap[--t.heap_max]=l,a[2*h]=a[2*o]+a[2*l],t.depth[h]=(t.depth[o]>=t.depth[l]?t.depth[o]:t.depth[l])+1,a[2*o+1]=a[2*l+1]=h,t.heap[1]=h++,S(t,a,1)}while(t.heap_len>=2);t.heap[--t.heap_max]=t.heap[1],((t,e)=>{const a=e.dyn_tree,i=e.max_code,n=e.stat_desc.static_tree,r=e.stat_desc.has_stree,o=e.stat_desc.extra_bits,l=e.stat_desc.extra_base,h=e.stat_desc.max_length;let d,_,f,c,u,w,m=0;for(c=0;c<=s;c++)t.bl_count[c]=0;for(a[2*t.heap[t.heap_max]+1]=0,d=t.heap_max+1;d<573;d++)_=t.heap[d],c=a[2*a[2*_+1]+1]+1,c>h&&(c=h,m++),a[2*_+1]=c,_>i||(t.bl_count[c]++,u=0,_>=l&&(u=o[_-l]),w=a[2*_],t.opt_len+=w*(c+u),r&&(t.static_len+=w*(n[2*_+1]+u)));if(0!==m){do{for(c=h-1;0===t.bl_count[c];)c--;t.bl_count[c]--,t.bl_count[c+1]+=2,t.bl_count[h]--,m-=2}while(m>0);for(c=h;0!==c;c--)for(_=t.bl_count[c];0!==_;)f=t.heap[--d],f>i||(a[2*f+1]!==c&&(t.opt_len+=(c-a[2*f+1])*a[2*f],a[2*f+1]=c),_--)}})(t,e),E(a,d,t.bl_count)},O=(t,e,a)=>{let i,n,s=-1,r=e[1],o=0,l=7,h=4;for(0===r&&(l=138,h=3),e[2*(a+1)+1]=65535,i=0;i<=a;i++)n=r,r=e[2*(i+1)+1],++o{let i,n,s=-1,r=e[1],o=0,l=7,h=4;for(0===r&&(l=138,h=3),i=0;i<=a;i++)if(n=r,r=e[2*(i+1)+1],!(++o{x(t,0+(i?1:0),3),Z(t),y(t,a),y(t,~a),a&&t.pending_buf.set(t.window.subarray(e,e+a),t.pending),t.pending+=a};var N=(t,e,i,n)=>{let s,r,o=0;t.level>0?(2===t.strm.data_type&&(t.strm.data_type=(t=>{let e,i=4093624447;for(e=0;e<=31;e++,i>>>=1)if(1&i&&0!==t.dyn_ltree[2*e])return 0;if(0!==t.dyn_ltree[18]||0!==t.dyn_ltree[20]||0!==t.dyn_ltree[26])return 1;for(e=32;e{let e;for(O(t,t.dyn_ltree,t.l_desc.max_code),O(t,t.dyn_dtree,t.d_desc.max_code),T(t,t.bl_desc),e=18;e>=3&&0===t.bl_tree[2*h[e]+1];e--);return t.opt_len+=3*(e+1)+5+5+4,e})(t),s=t.opt_len+3+7>>>3,r=t.static_len+3+7>>>3,r<=s&&(s=r)):s=r=i+5,i+4<=s&&-1!==e?L(t,e,i,n):4===t.strategy||r===s?(x(t,2+(n?1:0),3),D(t,d,_)):(x(t,4+(n?1:0),3),((t,e,a,i)=>{let n;for(x(t,e-257,5),x(t,a-1,5),x(t,i-4,4),n=0;n{F||((()=>{let t,e,a,h,k;const v=new Array(16);for(a=0,h=0;h<28;h++)for(u[h]=a,t=0;t<1<>=7;h(t.pending_buf[t.sym_buf+t.sym_next++]=e,t.pending_buf[t.sym_buf+t.sym_next++]=e>>8,t.pending_buf[t.sym_buf+t.sym_next++]=i,0===e?t.dyn_ltree[2*i]++:(t.matches++,e--,t.dyn_ltree[2*(c[i]+a+1)]++,t.dyn_dtree[2*v(e)]++),t.sym_next===t.sym_end),_tr_align:t=>{x(t,2,3),z(t,256,d),(t=>{16===t.bi_valid?(y(t,t.bi_buf),t.bi_buf=0,t.bi_valid=0):t.bi_valid>=8&&(t.pending_buf[t.pending++]=255&t.bi_buf,t.bi_buf>>=8,t.bi_valid-=8)})(t)}};var C=(t,e,a,i)=>{let n=65535&t|0,s=t>>>16&65535|0,r=0;for(;0!==a;){r=a>2e3?2e3:a,a-=r;do{n=n+e[i++]|0,s=s+n|0}while(--r);n%=65521,s%=65521}return n|s<<16|0};const M=new Uint32Array((()=>{let t,e=[];for(var a=0;a<256;a++){t=a;for(var i=0;i<8;i++)t=1&t?3988292384^t>>>1:t>>>1;e[a]=t}return e})());var H=(t,e,a,i)=>{const n=M,s=i+a;t^=-1;for(let a=i;a>>8^n[255&(t^e[a])];return-1^t},j={2:"need dictionary",1:"stream end",0:"","-1":"file error","-2":"stream error","-3":"data error","-4":"insufficient memory","-5":"buffer error","-6":"incompatible version"},K={Z_NO_FLUSH:0,Z_PARTIAL_FLUSH:1,Z_SYNC_FLUSH:2,Z_FULL_FLUSH:3,Z_FINISH:4,Z_BLOCK:5,Z_TREES:6,Z_OK:0,Z_STREAM_END:1,Z_NEED_DICT:2,Z_ERRNO:-1,Z_STREAM_ERROR:-2,Z_DATA_ERROR:-3,Z_MEM_ERROR:-4,Z_BUF_ERROR:-5,Z_NO_COMPRESSION:0,Z_BEST_SPEED:1,Z_BEST_COMPRESSION:9,Z_DEFAULT_COMPRESSION:-1,Z_FILTERED:1,Z_HUFFMAN_ONLY:2,Z_RLE:3,Z_FIXED:4,Z_DEFAULT_STRATEGY:0,Z_BINARY:0,Z_TEXT:1,Z_UNKNOWN:2,Z_DEFLATED:8};const{_tr_init:P,_tr_stored_block:Y,_tr_flush_block:G,_tr_tally:X,_tr_align:W}=B,{Z_NO_FLUSH:q,Z_PARTIAL_FLUSH:J,Z_FULL_FLUSH:Q,Z_FINISH:V,Z_BLOCK:$,Z_OK:tt,Z_STREAM_END:et,Z_STREAM_ERROR:at,Z_DATA_ERROR:it,Z_BUF_ERROR:nt,Z_DEFAULT_COMPRESSION:st,Z_FILTERED:rt,Z_HUFFMAN_ONLY:ot,Z_RLE:lt,Z_FIXED:ht,Z_DEFAULT_STRATEGY:dt,Z_UNKNOWN:_t,Z_DEFLATED:ft}=K,ct=258,ut=262,wt=42,mt=113,bt=666,gt=(t,e)=>(t.msg=j[e],e),pt=t=>2*t-(t>4?9:0),kt=t=>{let e=t.length;for(;--e>=0;)t[e]=0},vt=t=>{let e,a,i,n=t.w_size;e=t.hash_size,i=e;do{a=t.head[--i],t.head[i]=a>=n?a-n:0}while(--e);e=n,i=e;do{a=t.prev[--i],t.prev[i]=a>=n?a-n:0}while(--e)};let yt=(t,e,a)=>(e<{const e=t.state;let a=e.pending;a>t.avail_out&&(a=t.avail_out),0!==a&&(t.output.set(e.pending_buf.subarray(e.pending_out,e.pending_out+a),t.next_out),t.next_out+=a,e.pending_out+=a,t.total_out+=a,t.avail_out-=a,e.pending-=a,0===e.pending&&(e.pending_out=0))},zt=(t,e)=>{G(t,t.block_start>=0?t.block_start:-1,t.strstart-t.block_start,e),t.block_start=t.strstart,xt(t.strm)},At=(t,e)=>{t.pending_buf[t.pending++]=e},Et=(t,e)=>{t.pending_buf[t.pending++]=e>>>8&255,t.pending_buf[t.pending++]=255&e},Rt=(t,e,a,i)=>{let n=t.avail_in;return n>i&&(n=i),0===n?0:(t.avail_in-=n,e.set(t.input.subarray(t.next_in,t.next_in+n),a),1===t.state.wrap?t.adler=C(t.adler,e,n,a):2===t.state.wrap&&(t.adler=H(t.adler,e,n,a)),t.next_in+=n,t.total_in+=n,n)},Zt=(t,e)=>{let a,i,n=t.max_chain_length,s=t.strstart,r=t.prev_length,o=t.nice_match;const l=t.strstart>t.w_size-ut?t.strstart-(t.w_size-ut):0,h=t.window,d=t.w_mask,_=t.prev,f=t.strstart+ct;let c=h[s+r-1],u=h[s+r];t.prev_length>=t.good_match&&(n>>=2),o>t.lookahead&&(o=t.lookahead);do{if(a=e,h[a+r]===u&&h[a+r-1]===c&&h[a]===h[s]&&h[++a]===h[s+1]){s+=2,a++;do{}while(h[++s]===h[++a]&&h[++s]===h[++a]&&h[++s]===h[++a]&&h[++s]===h[++a]&&h[++s]===h[++a]&&h[++s]===h[++a]&&h[++s]===h[++a]&&h[++s]===h[++a]&&sr){if(t.match_start=e,r=i,i>=o)break;c=h[s+r-1],u=h[s+r]}}}while((e=_[e&d])>l&&0!=--n);return r<=t.lookahead?r:t.lookahead},Ut=t=>{const e=t.w_size;let a,i,n;do{if(i=t.window_size-t.lookahead-t.strstart,t.strstart>=e+(e-ut)&&(t.window.set(t.window.subarray(e,e+e-i),0),t.match_start-=e,t.strstart-=e,t.block_start-=e,t.insert>t.strstart&&(t.insert=t.strstart),vt(t),i+=e),0===t.strm.avail_in)break;if(a=Rt(t.strm,t.window,t.strstart+t.lookahead,i),t.lookahead+=a,t.lookahead+t.insert>=3)for(n=t.strstart-t.insert,t.ins_h=t.window[n],t.ins_h=yt(t,t.ins_h,t.window[n+1]);t.insert&&(t.ins_h=yt(t,t.ins_h,t.window[n+3-1]),t.prev[n&t.w_mask]=t.head[t.ins_h],t.head[t.ins_h]=n,n++,t.insert--,!(t.lookahead+t.insert<3)););}while(t.lookahead{let a,i,n,s=t.pending_buf_size-5>t.w_size?t.w_size:t.pending_buf_size-5,r=0,o=t.strm.avail_in;do{if(a=65535,n=t.bi_valid+42>>3,t.strm.avail_outi+t.strm.avail_in&&(a=i+t.strm.avail_in),a>n&&(a=n),a>8,t.pending_buf[t.pending-2]=~a,t.pending_buf[t.pending-1]=~a>>8,xt(t.strm),i&&(i>a&&(i=a),t.strm.output.set(t.window.subarray(t.block_start,t.block_start+i),t.strm.next_out),t.strm.next_out+=i,t.strm.avail_out-=i,t.strm.total_out+=i,t.block_start+=i,a-=i),a&&(Rt(t.strm,t.strm.output,t.strm.next_out,a),t.strm.next_out+=a,t.strm.avail_out-=a,t.strm.total_out+=a)}while(0===r);return o-=t.strm.avail_in,o&&(o>=t.w_size?(t.matches=2,t.window.set(t.strm.input.subarray(t.strm.next_in-t.w_size,t.strm.next_in),0),t.strstart=t.w_size,t.insert=t.strstart):(t.window_size-t.strstart<=o&&(t.strstart-=t.w_size,t.window.set(t.window.subarray(t.w_size,t.w_size+t.strstart),0),t.matches<2&&t.matches++,t.insert>t.strstart&&(t.insert=t.strstart)),t.window.set(t.strm.input.subarray(t.strm.next_in-o,t.strm.next_in),t.strstart),t.strstart+=o,t.insert+=o>t.w_size-t.insert?t.w_size-t.insert:o),t.block_start=t.strstart),t.high_watern&&t.block_start>=t.w_size&&(t.block_start-=t.w_size,t.strstart-=t.w_size,t.window.set(t.window.subarray(t.w_size,t.w_size+t.strstart),0),t.matches<2&&t.matches++,n+=t.w_size,t.insert>t.strstart&&(t.insert=t.strstart)),n>t.strm.avail_in&&(n=t.strm.avail_in),n&&(Rt(t.strm,t.window,t.strstart,n),t.strstart+=n,t.insert+=n>t.w_size-t.insert?t.w_size-t.insert:n),t.high_water>3,n=t.pending_buf_size-n>65535?65535:t.pending_buf_size-n,s=n>t.w_size?t.w_size:n,i=t.strstart-t.block_start,(i>=s||(i||e===V)&&e!==q&&0===t.strm.avail_in&&i<=n)&&(a=i>n?n:i,r=e===V&&0===t.strm.avail_in&&a===i?1:0,Y(t,t.block_start,a,r),t.block_start+=a,xt(t.strm)),r?3:1)},Dt=(t,e)=>{let a,i;for(;;){if(t.lookahead=3&&(t.ins_h=yt(t,t.ins_h,t.window[t.strstart+3-1]),a=t.prev[t.strstart&t.w_mask]=t.head[t.ins_h],t.head[t.ins_h]=t.strstart),0!==a&&t.strstart-a<=t.w_size-ut&&(t.match_length=Zt(t,a)),t.match_length>=3)if(i=X(t,t.strstart-t.match_start,t.match_length-3),t.lookahead-=t.match_length,t.match_length<=t.max_lazy_match&&t.lookahead>=3){t.match_length--;do{t.strstart++,t.ins_h=yt(t,t.ins_h,t.window[t.strstart+3-1]),a=t.prev[t.strstart&t.w_mask]=t.head[t.ins_h],t.head[t.ins_h]=t.strstart}while(0!=--t.match_length);t.strstart++}else t.strstart+=t.match_length,t.match_length=0,t.ins_h=t.window[t.strstart],t.ins_h=yt(t,t.ins_h,t.window[t.strstart+1]);else i=X(t,0,t.window[t.strstart]),t.lookahead--,t.strstart++;if(i&&(zt(t,!1),0===t.strm.avail_out))return 1}return t.insert=t.strstart<2?t.strstart:2,e===V?(zt(t,!0),0===t.strm.avail_out?3:4):t.sym_next&&(zt(t,!1),0===t.strm.avail_out)?1:2},Tt=(t,e)=>{let a,i,n;for(;;){if(t.lookahead=3&&(t.ins_h=yt(t,t.ins_h,t.window[t.strstart+3-1]),a=t.prev[t.strstart&t.w_mask]=t.head[t.ins_h],t.head[t.ins_h]=t.strstart),t.prev_length=t.match_length,t.prev_match=t.match_start,t.match_length=2,0!==a&&t.prev_length4096)&&(t.match_length=2)),t.prev_length>=3&&t.match_length<=t.prev_length){n=t.strstart+t.lookahead-3,i=X(t,t.strstart-1-t.prev_match,t.prev_length-3),t.lookahead-=t.prev_length-1,t.prev_length-=2;do{++t.strstart<=n&&(t.ins_h=yt(t,t.ins_h,t.window[t.strstart+3-1]),a=t.prev[t.strstart&t.w_mask]=t.head[t.ins_h],t.head[t.ins_h]=t.strstart)}while(0!=--t.prev_length);if(t.match_available=0,t.match_length=2,t.strstart++,i&&(zt(t,!1),0===t.strm.avail_out))return 1}else if(t.match_available){if(i=X(t,0,t.window[t.strstart-1]),i&&zt(t,!1),t.strstart++,t.lookahead--,0===t.strm.avail_out)return 1}else t.match_available=1,t.strstart++,t.lookahead--}return t.match_available&&(i=X(t,0,t.window[t.strstart-1]),t.match_available=0),t.insert=t.strstart<2?t.strstart:2,e===V?(zt(t,!0),0===t.strm.avail_out?3:4):t.sym_next&&(zt(t,!1),0===t.strm.avail_out)?1:2};function Ot(t,e,a,i,n){this.good_length=t,this.max_lazy=e,this.nice_length=a,this.max_chain=i,this.func=n}const It=[new Ot(0,0,0,0,St),new Ot(4,4,8,4,Dt),new Ot(4,5,16,8,Dt),new Ot(4,6,32,32,Dt),new Ot(4,4,16,16,Tt),new Ot(8,16,32,32,Tt),new Ot(8,16,128,128,Tt),new Ot(8,32,128,256,Tt),new Ot(32,128,258,1024,Tt),new Ot(32,258,258,4096,Tt)];function Ft(){this.strm=null,this.status=0,this.pending_buf=null,this.pending_buf_size=0,this.pending_out=0,this.pending=0,this.wrap=0,this.gzhead=null,this.gzindex=0,this.method=ft,this.last_flush=-1,this.w_size=0,this.w_bits=0,this.w_mask=0,this.window=null,this.window_size=0,this.prev=null,this.head=null,this.ins_h=0,this.hash_size=0,this.hash_bits=0,this.hash_mask=0,this.hash_shift=0,this.block_start=0,this.match_length=0,this.prev_match=0,this.match_available=0,this.strstart=0,this.match_start=0,this.lookahead=0,this.prev_length=0,this.max_chain_length=0,this.max_lazy_match=0,this.level=0,this.strategy=0,this.good_match=0,this.nice_match=0,this.dyn_ltree=new Uint16Array(1146),this.dyn_dtree=new Uint16Array(122),this.bl_tree=new Uint16Array(78),kt(this.dyn_ltree),kt(this.dyn_dtree),kt(this.bl_tree),this.l_desc=null,this.d_desc=null,this.bl_desc=null,this.bl_count=new Uint16Array(16),this.heap=new Uint16Array(573),kt(this.heap),this.heap_len=0,this.heap_max=0,this.depth=new Uint16Array(573),kt(this.depth),this.sym_buf=0,this.lit_bufsize=0,this.sym_next=0,this.sym_end=0,this.opt_len=0,this.static_len=0,this.matches=0,this.insert=0,this.bi_buf=0,this.bi_valid=0}const Lt=t=>{if(!t)return 1;const e=t.state;return!e||e.strm!==t||e.status!==wt&&57!==e.status&&69!==e.status&&73!==e.status&&91!==e.status&&103!==e.status&&e.status!==mt&&e.status!==bt?1:0},Nt=t=>{if(Lt(t))return gt(t,at);t.total_in=t.total_out=0,t.data_type=_t;const e=t.state;return e.pending=0,e.pending_out=0,e.wrap<0&&(e.wrap=-e.wrap),e.status=2===e.wrap?57:e.wrap?wt:mt,t.adler=2===e.wrap?0:1,e.last_flush=-2,P(e),tt},Bt=t=>{const e=Nt(t);var a;return e===tt&&((a=t.state).window_size=2*a.w_size,kt(a.head),a.max_lazy_match=It[a.level].max_lazy,a.good_match=It[a.level].good_length,a.nice_match=It[a.level].nice_length,a.max_chain_length=It[a.level].max_chain,a.strstart=0,a.block_start=0,a.lookahead=0,a.insert=0,a.match_length=a.prev_length=2,a.match_available=0,a.ins_h=0),e},Ct=(t,e,a,i,n,s)=>{if(!t)return at;let r=1;if(e===st&&(e=6),i<0?(r=0,i=-i):i>15&&(r=2,i-=16),n<1||n>9||a!==ft||i<8||i>15||e<0||e>9||s<0||s>ht||8===i&&1!==r)return gt(t,at);8===i&&(i=9);const o=new Ft;return t.state=o,o.strm=t,o.status=wt,o.wrap=r,o.gzhead=null,o.w_bits=i,o.w_size=1<Ct(t,e,ft,15,8,dt),deflateInit2:Ct,deflateReset:Bt,deflateResetKeep:Nt,deflateSetHeader:(t,e)=>Lt(t)||2!==t.state.wrap?at:(t.state.gzhead=e,tt),deflate:(t,e)=>{if(Lt(t)||e>$||e<0)return t?gt(t,at):at;const a=t.state;if(!t.output||0!==t.avail_in&&!t.input||a.status===bt&&e!==V)return gt(t,0===t.avail_out?nt:at);const i=a.last_flush;if(a.last_flush=e,0!==a.pending){if(xt(t),0===t.avail_out)return a.last_flush=-1,tt}else if(0===t.avail_in&&pt(e)<=pt(i)&&e!==V)return gt(t,nt);if(a.status===bt&&0!==t.avail_in)return gt(t,nt);if(a.status===wt&&0===a.wrap&&(a.status=mt),a.status===wt){let e=ft+(a.w_bits-8<<4)<<8,i=-1;if(i=a.strategy>=ot||a.level<2?0:a.level<6?1:6===a.level?2:3,e|=i<<6,0!==a.strstart&&(e|=32),e+=31-e%31,Et(a,e),0!==a.strstart&&(Et(a,t.adler>>>16),Et(a,65535&t.adler)),t.adler=1,a.status=mt,xt(t),0!==a.pending)return a.last_flush=-1,tt}if(57===a.status)if(t.adler=0,At(a,31),At(a,139),At(a,8),a.gzhead)At(a,(a.gzhead.text?1:0)+(a.gzhead.hcrc?2:0)+(a.gzhead.extra?4:0)+(a.gzhead.name?8:0)+(a.gzhead.comment?16:0)),At(a,255&a.gzhead.time),At(a,a.gzhead.time>>8&255),At(a,a.gzhead.time>>16&255),At(a,a.gzhead.time>>24&255),At(a,9===a.level?2:a.strategy>=ot||a.level<2?4:0),At(a,255&a.gzhead.os),a.gzhead.extra&&a.gzhead.extra.length&&(At(a,255&a.gzhead.extra.length),At(a,a.gzhead.extra.length>>8&255)),a.gzhead.hcrc&&(t.adler=H(t.adler,a.pending_buf,a.pending,0)),a.gzindex=0,a.status=69;else if(At(a,0),At(a,0),At(a,0),At(a,0),At(a,0),At(a,9===a.level?2:a.strategy>=ot||a.level<2?4:0),At(a,3),a.status=mt,xt(t),0!==a.pending)return a.last_flush=-1,tt;if(69===a.status){if(a.gzhead.extra){let e=a.pending,i=(65535&a.gzhead.extra.length)-a.gzindex;for(;a.pending+i>a.pending_buf_size;){let n=a.pending_buf_size-a.pending;if(a.pending_buf.set(a.gzhead.extra.subarray(a.gzindex,a.gzindex+n),a.pending),a.pending=a.pending_buf_size,a.gzhead.hcrc&&a.pending>e&&(t.adler=H(t.adler,a.pending_buf,a.pending-e,e)),a.gzindex+=n,xt(t),0!==a.pending)return a.last_flush=-1,tt;e=0,i-=n}let n=new Uint8Array(a.gzhead.extra);a.pending_buf.set(n.subarray(a.gzindex,a.gzindex+i),a.pending),a.pending+=i,a.gzhead.hcrc&&a.pending>e&&(t.adler=H(t.adler,a.pending_buf,a.pending-e,e)),a.gzindex=0}a.status=73}if(73===a.status){if(a.gzhead.name){let e,i=a.pending;do{if(a.pending===a.pending_buf_size){if(a.gzhead.hcrc&&a.pending>i&&(t.adler=H(t.adler,a.pending_buf,a.pending-i,i)),xt(t),0!==a.pending)return a.last_flush=-1,tt;i=0}e=a.gzindexi&&(t.adler=H(t.adler,a.pending_buf,a.pending-i,i)),a.gzindex=0}a.status=91}if(91===a.status){if(a.gzhead.comment){let e,i=a.pending;do{if(a.pending===a.pending_buf_size){if(a.gzhead.hcrc&&a.pending>i&&(t.adler=H(t.adler,a.pending_buf,a.pending-i,i)),xt(t),0!==a.pending)return a.last_flush=-1,tt;i=0}e=a.gzindexi&&(t.adler=H(t.adler,a.pending_buf,a.pending-i,i))}a.status=103}if(103===a.status){if(a.gzhead.hcrc){if(a.pending+2>a.pending_buf_size&&(xt(t),0!==a.pending))return a.last_flush=-1,tt;At(a,255&t.adler),At(a,t.adler>>8&255),t.adler=0}if(a.status=mt,xt(t),0!==a.pending)return a.last_flush=-1,tt}if(0!==t.avail_in||0!==a.lookahead||e!==q&&a.status!==bt){let i=0===a.level?St(a,e):a.strategy===ot?((t,e)=>{let a;for(;;){if(0===t.lookahead&&(Ut(t),0===t.lookahead)){if(e===q)return 1;break}if(t.match_length=0,a=X(t,0,t.window[t.strstart]),t.lookahead--,t.strstart++,a&&(zt(t,!1),0===t.strm.avail_out))return 1}return t.insert=0,e===V?(zt(t,!0),0===t.strm.avail_out?3:4):t.sym_next&&(zt(t,!1),0===t.strm.avail_out)?1:2})(a,e):a.strategy===lt?((t,e)=>{let a,i,n,s;const r=t.window;for(;;){if(t.lookahead<=ct){if(Ut(t),t.lookahead<=ct&&e===q)return 1;if(0===t.lookahead)break}if(t.match_length=0,t.lookahead>=3&&t.strstart>0&&(n=t.strstart-1,i=r[n],i===r[++n]&&i===r[++n]&&i===r[++n])){s=t.strstart+ct;do{}while(i===r[++n]&&i===r[++n]&&i===r[++n]&&i===r[++n]&&i===r[++n]&&i===r[++n]&&i===r[++n]&&i===r[++n]&&nt.lookahead&&(t.match_length=t.lookahead)}if(t.match_length>=3?(a=X(t,1,t.match_length-3),t.lookahead-=t.match_length,t.strstart+=t.match_length,t.match_length=0):(a=X(t,0,t.window[t.strstart]),t.lookahead--,t.strstart++),a&&(zt(t,!1),0===t.strm.avail_out))return 1}return t.insert=0,e===V?(zt(t,!0),0===t.strm.avail_out?3:4):t.sym_next&&(zt(t,!1),0===t.strm.avail_out)?1:2})(a,e):It[a.level].func(a,e);if(3!==i&&4!==i||(a.status=bt),1===i||3===i)return 0===t.avail_out&&(a.last_flush=-1),tt;if(2===i&&(e===J?W(a):e!==$&&(Y(a,0,0,!1),e===Q&&(kt(a.head),0===a.lookahead&&(a.strstart=0,a.block_start=0,a.insert=0))),xt(t),0===t.avail_out))return a.last_flush=-1,tt}return e!==V?tt:a.wrap<=0?et:(2===a.wrap?(At(a,255&t.adler),At(a,t.adler>>8&255),At(a,t.adler>>16&255),At(a,t.adler>>24&255),At(a,255&t.total_in),At(a,t.total_in>>8&255),At(a,t.total_in>>16&255),At(a,t.total_in>>24&255)):(Et(a,t.adler>>>16),Et(a,65535&t.adler)),xt(t),a.wrap>0&&(a.wrap=-a.wrap),0!==a.pending?tt:et)},deflateEnd:t=>{if(Lt(t))return at;const e=t.state.status;return t.state=null,e===mt?gt(t,it):tt},deflateSetDictionary:(t,e)=>{let a=e.length;if(Lt(t))return at;const i=t.state,n=i.wrap;if(2===n||1===n&&i.status!==wt||i.lookahead)return at;if(1===n&&(t.adler=C(t.adler,e,a,0)),i.wrap=0,a>=i.w_size){0===n&&(kt(i.head),i.strstart=0,i.block_start=0,i.insert=0);let t=new Uint8Array(i.w_size);t.set(e.subarray(a-i.w_size,a),0),e=t,a=i.w_size}const s=t.avail_in,r=t.next_in,o=t.input;for(t.avail_in=a,t.next_in=0,t.input=e,Ut(i);i.lookahead>=3;){let t=i.strstart,e=i.lookahead-2;do{i.ins_h=yt(i,i.ins_h,i.window[t+3-1]),i.prev[t&i.w_mask]=i.head[i.ins_h],i.head[i.ins_h]=t,t++}while(--e);i.strstart=t,i.lookahead=2,Ut(i)}return i.strstart+=i.lookahead,i.block_start=i.strstart,i.insert=i.lookahead,i.lookahead=0,i.match_length=i.prev_length=2,i.match_available=0,t.next_in=r,t.input=o,t.avail_in=s,i.wrap=n,tt},deflateInfo:"pako deflate (from Nodeca project)"};const Ht=(t,e)=>Object.prototype.hasOwnProperty.call(t,e);var jt=function(t){const e=Array.prototype.slice.call(arguments,1);for(;e.length;){const a=e.shift();if(a){if("object"!=typeof a)throw new TypeError(a+"must be non-object");for(const e in a)Ht(a,e)&&(t[e]=a[e])}}return t},Kt=t=>{let e=0;for(let a=0,i=t.length;a=252?6:t>=248?5:t>=240?4:t>=224?3:t>=192?2:1;Yt[254]=Yt[254]=1;var Gt=t=>{if("function"==typeof TextEncoder&&TextEncoder.prototype.encode)return(new TextEncoder).encode(t);let e,a,i,n,s,r=t.length,o=0;for(n=0;n>>6,e[s++]=128|63&a):a<65536?(e[s++]=224|a>>>12,e[s++]=128|a>>>6&63,e[s++]=128|63&a):(e[s++]=240|a>>>18,e[s++]=128|a>>>12&63,e[s++]=128|a>>>6&63,e[s++]=128|63&a);return e},Xt=(t,e)=>{const a=e||t.length;if("function"==typeof TextDecoder&&TextDecoder.prototype.decode)return(new TextDecoder).decode(t.subarray(0,e));let i,n;const s=new Array(2*a);for(n=0,i=0;i4)s[n++]=65533,i+=r-1;else{for(e&=2===r?31:3===r?15:7;r>1&&i1?s[n++]=65533:e<65536?s[n++]=e:(e-=65536,s[n++]=55296|e>>10&1023,s[n++]=56320|1023&e)}}return((t,e)=>{if(e<65534&&t.subarray&&Pt)return String.fromCharCode.apply(null,t.length===e?t:t.subarray(0,e));let a="";for(let i=0;i{(e=e||t.length)>t.length&&(e=t.length);let a=e-1;for(;a>=0&&128==(192&t[a]);)a--;return a<0||0===a?e:a+Yt[t[a]]>e?a:e};var qt=function(){this.input=null,this.next_in=0,this.avail_in=0,this.total_in=0,this.output=null,this.next_out=0,this.avail_out=0,this.total_out=0,this.msg="",this.state=null,this.data_type=2,this.adler=0};const Jt=Object.prototype.toString,{Z_NO_FLUSH:Qt,Z_SYNC_FLUSH:Vt,Z_FULL_FLUSH:$t,Z_FINISH:te,Z_OK:ee,Z_STREAM_END:ae,Z_DEFAULT_COMPRESSION:ie,Z_DEFAULT_STRATEGY:ne,Z_DEFLATED:se}=K;function re(t){this.options=jt({level:ie,method:se,chunkSize:16384,windowBits:15,memLevel:8,strategy:ne},t||{});let e=this.options;e.raw&&e.windowBits>0?e.windowBits=-e.windowBits:e.gzip&&e.windowBits>0&&e.windowBits<16&&(e.windowBits+=16),this.err=0,this.msg="",this.ended=!1,this.chunks=[],this.strm=new qt,this.strm.avail_out=0;let a=Mt.deflateInit2(this.strm,e.level,e.method,e.windowBits,e.memLevel,e.strategy);if(a!==ee)throw new Error(j[a]);if(e.header&&Mt.deflateSetHeader(this.strm,e.header),e.dictionary){let t;if(t="string"==typeof e.dictionary?Gt(e.dictionary):"[object ArrayBuffer]"===Jt.call(e.dictionary)?new Uint8Array(e.dictionary):e.dictionary,a=Mt.deflateSetDictionary(this.strm,t),a!==ee)throw new Error(j[a]);this._dict_set=!0}}function oe(t,e){const a=new re(e);if(a.push(t,!0),a.err)throw a.msg||j[a.err];return a.result}re.prototype.push=function(t,e){const a=this.strm,i=this.options.chunkSize;let n,s;if(this.ended)return!1;for(s=e===~~e?e:!0===e?te:Qt,"string"==typeof t?a.input=Gt(t):"[object ArrayBuffer]"===Jt.call(t)?a.input=new Uint8Array(t):a.input=t,a.next_in=0,a.avail_in=a.input.length;;)if(0===a.avail_out&&(a.output=new Uint8Array(i),a.next_out=0,a.avail_out=i),(s===Vt||s===$t)&&a.avail_out<=6)this.onData(a.output.subarray(0,a.next_out)),a.avail_out=0;else{if(n=Mt.deflate(a,s),n===ae)return a.next_out>0&&this.onData(a.output.subarray(0,a.next_out)),n=Mt.deflateEnd(this.strm),this.onEnd(n),this.ended=!0,n===ee;if(0!==a.avail_out){if(s>0&&a.next_out>0)this.onData(a.output.subarray(0,a.next_out)),a.avail_out=0;else if(0===a.avail_in)break}else this.onData(a.output)}return!0},re.prototype.onData=function(t){this.chunks.push(t)},re.prototype.onEnd=function(t){t===ee&&(this.result=Kt(this.chunks)),this.chunks=[],this.err=t,this.msg=this.strm.msg};var le={Deflate:re,deflate:oe,deflateRaw:function(t,e){return(e=e||{}).raw=!0,oe(t,e)},gzip:function(t,e){return(e=e||{}).gzip=!0,oe(t,e)},constants:K};const he=16209;var de=function(t,e){let a,i,n,s,r,o,l,h,d,_,f,c,u,w,m,b,g,p,k,v,y,x,z,A;const E=t.state;a=t.next_in,z=t.input,i=a+(t.avail_in-5),n=t.next_out,A=t.output,s=n-(e-t.avail_out),r=n+(t.avail_out-257),o=E.dmax,l=E.wsize,h=E.whave,d=E.wnext,_=E.window,f=E.hold,c=E.bits,u=E.lencode,w=E.distcode,m=(1<>>24,f>>>=p,c-=p,p=g>>>16&255,0===p)A[n++]=65535&g;else{if(!(16&p)){if(0==(64&p)){g=u[(65535&g)+(f&(1<>>=p,c-=p),c<15&&(f+=z[a++]<>>24,f>>>=p,c-=p,p=g>>>16&255,!(16&p)){if(0==(64&p)){g=w[(65535&g)+(f&(1<o){t.msg="invalid distance too far back",E.mode=he;break t}if(f>>>=p,c-=p,p=n-s,v>p){if(p=v-p,p>h&&E.sane){t.msg="invalid distance too far back",E.mode=he;break t}if(y=0,x=_,0===d){if(y+=l-p,p2;)A[n++]=x[y++],A[n++]=x[y++],A[n++]=x[y++],k-=3;k&&(A[n++]=x[y++],k>1&&(A[n++]=x[y++]))}else{y=n-v;do{A[n++]=A[y++],A[n++]=A[y++],A[n++]=A[y++],k-=3}while(k>2);k&&(A[n++]=A[y++],k>1&&(A[n++]=A[y++]))}break}}break}}while(a>3,a-=k,c-=k<<3,f&=(1<{const l=o.bits;let h,d,_,f,c,u,w=0,m=0,b=0,g=0,p=0,k=0,v=0,y=0,x=0,z=0,A=null;const E=new Uint16Array(16),R=new Uint16Array(16);let Z,U,S,D=null;for(w=0;w<=_e;w++)E[w]=0;for(m=0;m=1&&0===E[g];g--);if(p>g&&(p=g),0===g)return n[s++]=20971520,n[s++]=20971520,o.bits=1,0;for(b=1;b0&&(0===t||1!==g))return-1;for(R[1]=0,w=1;w<_e;w++)R[w+1]=R[w]+E[w];for(m=0;m852||2===t&&x>592)return 1;for(;;){Z=w-v,r[m]+1=u?(U=D[r[m]-u],S=A[r[m]-u]):(U=96,S=0),h=1<>v)+d]=Z<<24|U<<16|S|0}while(0!==d);for(h=1<>=1;if(0!==h?(z&=h-1,z+=h):z=0,m++,0==--E[w]){if(w===g)break;w=e[a+r[m]]}if(w>p&&(z&f)!==_){for(0===v&&(v=p),c+=b,k=w-v,y=1<852||2===t&&x>592)return 1;_=z&f,n[_]=p<<24|k<<16|c-s|0}}return 0!==z&&(n[c+z]=w-v<<24|64<<16|0),o.bits=p,0};const{Z_FINISH:be,Z_BLOCK:ge,Z_TREES:pe,Z_OK:ke,Z_STREAM_END:ve,Z_NEED_DICT:ye,Z_STREAM_ERROR:xe,Z_DATA_ERROR:ze,Z_MEM_ERROR:Ae,Z_BUF_ERROR:Ee,Z_DEFLATED:Re}=K,Ze=16180,Ue=16190,Se=16191,De=16192,Te=16194,Oe=16199,Ie=16200,Fe=16206,Le=16209,Ne=t=>(t>>>24&255)+(t>>>8&65280)+((65280&t)<<8)+((255&t)<<24);function Be(){this.strm=null,this.mode=0,this.last=!1,this.wrap=0,this.havedict=!1,this.flags=0,this.dmax=0,this.check=0,this.total=0,this.head=null,this.wbits=0,this.wsize=0,this.whave=0,this.wnext=0,this.window=null,this.hold=0,this.bits=0,this.length=0,this.offset=0,this.extra=0,this.lencode=null,this.distcode=null,this.lenbits=0,this.distbits=0,this.ncode=0,this.nlen=0,this.ndist=0,this.have=0,this.next=null,this.lens=new Uint16Array(320),this.work=new Uint16Array(288),this.lendyn=null,this.distdyn=null,this.sane=0,this.back=0,this.was=0}const Ce=t=>{if(!t)return 1;const e=t.state;return!e||e.strm!==t||e.mode16211?1:0},Me=t=>{if(Ce(t))return xe;const e=t.state;return t.total_in=t.total_out=e.total=0,t.msg="",e.wrap&&(t.adler=1&e.wrap),e.mode=Ze,e.last=0,e.havedict=0,e.flags=-1,e.dmax=32768,e.head=null,e.hold=0,e.bits=0,e.lencode=e.lendyn=new Int32Array(852),e.distcode=e.distdyn=new Int32Array(592),e.sane=1,e.back=-1,ke},He=t=>{if(Ce(t))return xe;const e=t.state;return e.wsize=0,e.whave=0,e.wnext=0,Me(t)},je=(t,e)=>{let a;if(Ce(t))return xe;const i=t.state;return e<0?(a=0,e=-e):(a=5+(e>>4),e<48&&(e&=15)),e&&(e<8||e>15)?xe:(null!==i.window&&i.wbits!==e&&(i.window=null),i.wrap=a,i.wbits=e,He(t))},Ke=(t,e)=>{if(!t)return xe;const a=new Be;t.state=a,a.strm=t,a.window=null,a.mode=Ze;const i=je(t,e);return i!==ke&&(t.state=null),i};let Pe,Ye,Ge=!0;const Xe=t=>{if(Ge){Pe=new Int32Array(512),Ye=new Int32Array(32);let e=0;for(;e<144;)t.lens[e++]=8;for(;e<256;)t.lens[e++]=9;for(;e<280;)t.lens[e++]=7;for(;e<288;)t.lens[e++]=8;for(me(1,t.lens,0,288,Pe,0,t.work,{bits:9}),e=0;e<32;)t.lens[e++]=5;me(2,t.lens,0,32,Ye,0,t.work,{bits:5}),Ge=!1}t.lencode=Pe,t.lenbits=9,t.distcode=Ye,t.distbits=5},We=(t,e,a,i)=>{let n;const s=t.state;return null===s.window&&(s.wsize=1<=s.wsize?(s.window.set(e.subarray(a-s.wsize,a),0),s.wnext=0,s.whave=s.wsize):(n=s.wsize-s.wnext,n>i&&(n=i),s.window.set(e.subarray(a-i,a-i+n),s.wnext),(i-=n)?(s.window.set(e.subarray(a-i,a),0),s.wnext=i,s.whave=s.wsize):(s.wnext+=n,s.wnext===s.wsize&&(s.wnext=0),s.whaveKe(t,15),inflateInit2:Ke,inflate:(t,e)=>{let a,i,n,s,r,o,l,h,d,_,f,c,u,w,m,b,g,p,k,v,y,x,z=0;const A=new Uint8Array(4);let E,R;const Z=new Uint8Array([16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15]);if(Ce(t)||!t.output||!t.input&&0!==t.avail_in)return xe;a=t.state,a.mode===Se&&(a.mode=De),r=t.next_out,n=t.output,l=t.avail_out,s=t.next_in,i=t.input,o=t.avail_in,h=a.hold,d=a.bits,_=o,f=l,x=ke;t:for(;;)switch(a.mode){case Ze:if(0===a.wrap){a.mode=De;break}for(;d<16;){if(0===o)break t;o--,h+=i[s++]<>>8&255,a.check=H(a.check,A,2,0),h=0,d=0,a.mode=16181;break}if(a.head&&(a.head.done=!1),!(1&a.wrap)||(((255&h)<<8)+(h>>8))%31){t.msg="incorrect header check",a.mode=Le;break}if((15&h)!==Re){t.msg="unknown compression method",a.mode=Le;break}if(h>>>=4,d-=4,y=8+(15&h),0===a.wbits&&(a.wbits=y),y>15||y>a.wbits){t.msg="invalid window size",a.mode=Le;break}a.dmax=1<>8&1),512&a.flags&&4&a.wrap&&(A[0]=255&h,A[1]=h>>>8&255,a.check=H(a.check,A,2,0)),h=0,d=0,a.mode=16182;case 16182:for(;d<32;){if(0===o)break t;o--,h+=i[s++]<>>8&255,A[2]=h>>>16&255,A[3]=h>>>24&255,a.check=H(a.check,A,4,0)),h=0,d=0,a.mode=16183;case 16183:for(;d<16;){if(0===o)break t;o--,h+=i[s++]<>8),512&a.flags&&4&a.wrap&&(A[0]=255&h,A[1]=h>>>8&255,a.check=H(a.check,A,2,0)),h=0,d=0,a.mode=16184;case 16184:if(1024&a.flags){for(;d<16;){if(0===o)break t;o--,h+=i[s++]<>>8&255,a.check=H(a.check,A,2,0)),h=0,d=0}else a.head&&(a.head.extra=null);a.mode=16185;case 16185:if(1024&a.flags&&(c=a.length,c>o&&(c=o),c&&(a.head&&(y=a.head.extra_len-a.length,a.head.extra||(a.head.extra=new Uint8Array(a.head.extra_len)),a.head.extra.set(i.subarray(s,s+c),y)),512&a.flags&&4&a.wrap&&(a.check=H(a.check,i,c,s)),o-=c,s+=c,a.length-=c),a.length))break t;a.length=0,a.mode=16186;case 16186:if(2048&a.flags){if(0===o)break t;c=0;do{y=i[s+c++],a.head&&y&&a.length<65536&&(a.head.name+=String.fromCharCode(y))}while(y&&c>9&1,a.head.done=!0),t.adler=a.check=0,a.mode=Se;break;case 16189:for(;d<32;){if(0===o)break t;o--,h+=i[s++]<>>=7&d,d-=7&d,a.mode=Fe;break}for(;d<3;){if(0===o)break t;o--,h+=i[s++]<>>=1,d-=1,3&h){case 0:a.mode=16193;break;case 1:if(Xe(a),a.mode=Oe,e===pe){h>>>=2,d-=2;break t}break;case 2:a.mode=16196;break;case 3:t.msg="invalid block type",a.mode=Le}h>>>=2,d-=2;break;case 16193:for(h>>>=7&d,d-=7&d;d<32;){if(0===o)break t;o--,h+=i[s++]<>>16^65535)){t.msg="invalid stored block lengths",a.mode=Le;break}if(a.length=65535&h,h=0,d=0,a.mode=Te,e===pe)break t;case Te:a.mode=16195;case 16195:if(c=a.length,c){if(c>o&&(c=o),c>l&&(c=l),0===c)break t;n.set(i.subarray(s,s+c),r),o-=c,s+=c,l-=c,r+=c,a.length-=c;break}a.mode=Se;break;case 16196:for(;d<14;){if(0===o)break t;o--,h+=i[s++]<>>=5,d-=5,a.ndist=1+(31&h),h>>>=5,d-=5,a.ncode=4+(15&h),h>>>=4,d-=4,a.nlen>286||a.ndist>30){t.msg="too many length or distance symbols",a.mode=Le;break}a.have=0,a.mode=16197;case 16197:for(;a.have>>=3,d-=3}for(;a.have<19;)a.lens[Z[a.have++]]=0;if(a.lencode=a.lendyn,a.lenbits=7,E={bits:a.lenbits},x=me(0,a.lens,0,19,a.lencode,0,a.work,E),a.lenbits=E.bits,x){t.msg="invalid code lengths set",a.mode=Le;break}a.have=0,a.mode=16198;case 16198:for(;a.have>>24,b=z>>>16&255,g=65535&z,!(m<=d);){if(0===o)break t;o--,h+=i[s++]<>>=m,d-=m,a.lens[a.have++]=g;else{if(16===g){for(R=m+2;d>>=m,d-=m,0===a.have){t.msg="invalid bit length repeat",a.mode=Le;break}y=a.lens[a.have-1],c=3+(3&h),h>>>=2,d-=2}else if(17===g){for(R=m+3;d>>=m,d-=m,y=0,c=3+(7&h),h>>>=3,d-=3}else{for(R=m+7;d>>=m,d-=m,y=0,c=11+(127&h),h>>>=7,d-=7}if(a.have+c>a.nlen+a.ndist){t.msg="invalid bit length repeat",a.mode=Le;break}for(;c--;)a.lens[a.have++]=y}}if(a.mode===Le)break;if(0===a.lens[256]){t.msg="invalid code -- missing end-of-block",a.mode=Le;break}if(a.lenbits=9,E={bits:a.lenbits},x=me(1,a.lens,0,a.nlen,a.lencode,0,a.work,E),a.lenbits=E.bits,x){t.msg="invalid literal/lengths set",a.mode=Le;break}if(a.distbits=6,a.distcode=a.distdyn,E={bits:a.distbits},x=me(2,a.lens,a.nlen,a.ndist,a.distcode,0,a.work,E),a.distbits=E.bits,x){t.msg="invalid distances set",a.mode=Le;break}if(a.mode=Oe,e===pe)break t;case Oe:a.mode=Ie;case Ie:if(o>=6&&l>=258){t.next_out=r,t.avail_out=l,t.next_in=s,t.avail_in=o,a.hold=h,a.bits=d,de(t,f),r=t.next_out,n=t.output,l=t.avail_out,s=t.next_in,i=t.input,o=t.avail_in,h=a.hold,d=a.bits,a.mode===Se&&(a.back=-1);break}for(a.back=0;z=a.lencode[h&(1<>>24,b=z>>>16&255,g=65535&z,!(m<=d);){if(0===o)break t;o--,h+=i[s++]<>p)],m=z>>>24,b=z>>>16&255,g=65535&z,!(p+m<=d);){if(0===o)break t;o--,h+=i[s++]<>>=p,d-=p,a.back+=p}if(h>>>=m,d-=m,a.back+=m,a.length=g,0===b){a.mode=16205;break}if(32&b){a.back=-1,a.mode=Se;break}if(64&b){t.msg="invalid literal/length code",a.mode=Le;break}a.extra=15&b,a.mode=16201;case 16201:if(a.extra){for(R=a.extra;d>>=a.extra,d-=a.extra,a.back+=a.extra}a.was=a.length,a.mode=16202;case 16202:for(;z=a.distcode[h&(1<>>24,b=z>>>16&255,g=65535&z,!(m<=d);){if(0===o)break t;o--,h+=i[s++]<>p)],m=z>>>24,b=z>>>16&255,g=65535&z,!(p+m<=d);){if(0===o)break t;o--,h+=i[s++]<>>=p,d-=p,a.back+=p}if(h>>>=m,d-=m,a.back+=m,64&b){t.msg="invalid distance code",a.mode=Le;break}a.offset=g,a.extra=15&b,a.mode=16203;case 16203:if(a.extra){for(R=a.extra;d>>=a.extra,d-=a.extra,a.back+=a.extra}if(a.offset>a.dmax){t.msg="invalid distance too far back",a.mode=Le;break}a.mode=16204;case 16204:if(0===l)break t;if(c=f-l,a.offset>c){if(c=a.offset-c,c>a.whave&&a.sane){t.msg="invalid distance too far back",a.mode=Le;break}c>a.wnext?(c-=a.wnext,u=a.wsize-c):u=a.wnext-c,c>a.length&&(c=a.length),w=a.window}else w=n,u=r-a.offset,c=a.length;c>l&&(c=l),l-=c,a.length-=c;do{n[r++]=w[u++]}while(--c);0===a.length&&(a.mode=Ie);break;case 16205:if(0===l)break t;n[r++]=a.length,l--,a.mode=Ie;break;case Fe:if(a.wrap){for(;d<32;){if(0===o)break t;o--,h|=i[s++]<{if(Ce(t))return xe;let e=t.state;return e.window&&(e.window=null),t.state=null,ke},inflateGetHeader:(t,e)=>{if(Ce(t))return xe;const a=t.state;return 0==(2&a.wrap)?xe:(a.head=e,e.done=!1,ke)},inflateSetDictionary:(t,e)=>{const a=e.length;let i,n,s;return Ce(t)?xe:(i=t.state,0!==i.wrap&&i.mode!==Ue?xe:i.mode===Ue&&(n=1,n=C(n,e,a,0),n!==i.check)?ze:(s=We(t,e,a,a),s?(i.mode=16210,Ae):(i.havedict=1,ke)))},inflateInfo:"pako inflate (from Nodeca project)"};var Je=function(){this.text=0,this.time=0,this.xflags=0,this.os=0,this.extra=null,this.extra_len=0,this.name="",this.comment="",this.hcrc=0,this.done=!1};const Qe=Object.prototype.toString,{Z_NO_FLUSH:Ve,Z_FINISH:$e,Z_OK:ta,Z_STREAM_END:ea,Z_NEED_DICT:aa,Z_STREAM_ERROR:ia,Z_DATA_ERROR:na,Z_MEM_ERROR:sa}=K;function ra(t){this.options=jt({chunkSize:65536,windowBits:15,to:""},t||{});const e=this.options;e.raw&&e.windowBits>=0&&e.windowBits<16&&(e.windowBits=-e.windowBits,0===e.windowBits&&(e.windowBits=-15)),!(e.windowBits>=0&&e.windowBits<16)||t&&t.windowBits||(e.windowBits+=32),e.windowBits>15&&e.windowBits<48&&0==(15&e.windowBits)&&(e.windowBits|=15),this.err=0,this.msg="",this.ended=!1,this.chunks=[],this.strm=new qt,this.strm.avail_out=0;let a=qe.inflateInit2(this.strm,e.windowBits);if(a!==ta)throw new Error(j[a]);if(this.header=new Je,qe.inflateGetHeader(this.strm,this.header),e.dictionary&&("string"==typeof e.dictionary?e.dictionary=Gt(e.dictionary):"[object ArrayBuffer]"===Qe.call(e.dictionary)&&(e.dictionary=new Uint8Array(e.dictionary)),e.raw&&(a=qe.inflateSetDictionary(this.strm,e.dictionary),a!==ta)))throw new Error(j[a])}function oa(t,e){const a=new ra(e);if(a.push(t),a.err)throw a.msg||j[a.err];return a.result}ra.prototype.push=function(t,e){const a=this.strm,i=this.options.chunkSize,n=this.options.dictionary;let s,r,o;if(this.ended)return!1;for(r=e===~~e?e:!0===e?$e:Ve,"[object ArrayBuffer]"===Qe.call(t)?a.input=new Uint8Array(t):a.input=t,a.next_in=0,a.avail_in=a.input.length;;){for(0===a.avail_out&&(a.output=new Uint8Array(i),a.next_out=0,a.avail_out=i),s=qe.inflate(a,r),s===aa&&n&&(s=qe.inflateSetDictionary(a,n),s===ta?s=qe.inflate(a,r):s===na&&(s=aa));a.avail_in>0&&s===ea&&a.state.wrap>0&&0!==t[a.next_in];)qe.inflateReset(a),s=qe.inflate(a,r);switch(s){case ia:case na:case aa:case sa:return this.onEnd(s),this.ended=!0,!1}if(o=a.avail_out,a.next_out&&(0===a.avail_out||s===ea))if("string"===this.options.to){let t=Wt(a.output,a.next_out),e=a.next_out-t,n=Xt(a.output,t);a.next_out=e,a.avail_out=i-e,e&&a.output.set(a.output.subarray(t,t+e),0),this.onData(n)}else this.onData(a.output.length===a.next_out?a.output:a.output.subarray(0,a.next_out));if(s!==ta||0!==o){if(s===ea)return s=qe.inflateEnd(this.strm),this.onEnd(s),this.ended=!0,!0;if(0===a.avail_in)break}}return!0},ra.prototype.onData=function(t){this.chunks.push(t)},ra.prototype.onEnd=function(t){t===ta&&("string"===this.options.to?this.result=this.chunks.join(""):this.result=Kt(this.chunks)),this.chunks=[],this.err=t,this.msg=this.strm.msg};var la={Inflate:ra,inflate:oa,inflateRaw:function(t,e){return(e=e||{}).raw=!0,oa(t,e)},ungzip:oa,constants:K};const{Deflate:ha,deflate:da,deflateRaw:_a,gzip:fa}=le,{Inflate:ca,inflate:ua,inflateRaw:wa,ungzip:ma}=la;var ba=ha,ga=da,pa=_a,ka=fa,va=ca,ya=ua,xa=wa,za=ma,Aa=K,Ea={Deflate:ba,deflate:ga,deflateRaw:pa,gzip:ka,Inflate:va,inflate:ya,inflateRaw:xa,ungzip:za,constants:Aa};t.Deflate=ba,t.Inflate=va,t.constants=Aa,t.default=Ea,t.deflate=ga,t.deflateRaw=pa,t.gzip=ka,t.inflate=ya,t.inflateRaw=xa,t.ungzip=za,Object.defineProperty(t,"__esModule",{value:!0})})); +/*! pako 2.1.0 https://github.com/nodeca/pako @license (MIT AND Zlib) */ +!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?e(exports):"function"==typeof define&&define.amd?define(["exports"],e):e((t="undefined"!=typeof globalThis?globalThis:t||self).pako={})}(this,(function(t){"use strict";function e(t){let e=t.length;for(;--e>=0;)t[e]=0}const a=256,i=286,n=30,s=15,r=new Uint8Array([0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0]),o=new Uint8Array([0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13]),l=new Uint8Array([0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,3,7]),h=new Uint8Array([16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15]),d=new Array(576);e(d);const _=new Array(60);e(_);const f=new Array(512);e(f);const c=new Array(256);e(c);const u=new Array(29);e(u);const w=new Array(n);function m(t,e,a,i,n){this.static_tree=t,this.extra_bits=e,this.extra_base=a,this.elems=i,this.max_length=n,this.has_stree=t&&t.length}let b,g,p;function k(t,e){this.dyn_tree=t,this.max_code=0,this.stat_desc=e}e(w);const v=t=>t<256?f[t]:f[256+(t>>>7)],y=(t,e)=>{t.pending_buf[t.pending++]=255&e,t.pending_buf[t.pending++]=e>>>8&255},x=(t,e,a)=>{t.bi_valid>16-a?(t.bi_buf|=e<>16-t.bi_valid,t.bi_valid+=a-16):(t.bi_buf|=e<{x(t,a[2*e],a[2*e+1])},A=(t,e)=>{let a=0;do{a|=1&t,t>>>=1,a<<=1}while(--e>0);return a>>>1},E=(t,e,a)=>{const i=new Array(16);let n,r,o=0;for(n=1;n<=s;n++)o=o+a[n-1]<<1,i[n]=o;for(r=0;r<=e;r++){let e=t[2*r+1];0!==e&&(t[2*r]=A(i[e]++,e))}},R=t=>{let e;for(e=0;e{t.bi_valid>8?y(t,t.bi_buf):t.bi_valid>0&&(t.pending_buf[t.pending++]=t.bi_buf),t.bi_buf=0,t.bi_valid=0},U=(t,e,a,i)=>{const n=2*e,s=2*a;return t[n]{const i=t.heap[a];let n=a<<1;for(;n<=t.heap_len&&(n{let n,s,l,h,d=0;if(0!==t.sym_next)do{n=255&t.pending_buf[t.sym_buf+d++],n+=(255&t.pending_buf[t.sym_buf+d++])<<8,s=t.pending_buf[t.sym_buf+d++],0===n?z(t,s,e):(l=c[s],z(t,l+a+1,e),h=r[l],0!==h&&(s-=u[l],x(t,s,h)),n--,l=v(n),z(t,l,i),h=o[l],0!==h&&(n-=w[l],x(t,n,h)))}while(d{const a=e.dyn_tree,i=e.stat_desc.static_tree,n=e.stat_desc.has_stree,r=e.stat_desc.elems;let o,l,h,d=-1;for(t.heap_len=0,t.heap_max=573,o=0;o>1;o>=1;o--)S(t,a,o);h=r;do{o=t.heap[1],t.heap[1]=t.heap[t.heap_len--],S(t,a,1),l=t.heap[1],t.heap[--t.heap_max]=o,t.heap[--t.heap_max]=l,a[2*h]=a[2*o]+a[2*l],t.depth[h]=(t.depth[o]>=t.depth[l]?t.depth[o]:t.depth[l])+1,a[2*o+1]=a[2*l+1]=h,t.heap[1]=h++,S(t,a,1)}while(t.heap_len>=2);t.heap[--t.heap_max]=t.heap[1],((t,e)=>{const a=e.dyn_tree,i=e.max_code,n=e.stat_desc.static_tree,r=e.stat_desc.has_stree,o=e.stat_desc.extra_bits,l=e.stat_desc.extra_base,h=e.stat_desc.max_length;let d,_,f,c,u,w,m=0;for(c=0;c<=s;c++)t.bl_count[c]=0;for(a[2*t.heap[t.heap_max]+1]=0,d=t.heap_max+1;d<573;d++)_=t.heap[d],c=a[2*a[2*_+1]+1]+1,c>h&&(c=h,m++),a[2*_+1]=c,_>i||(t.bl_count[c]++,u=0,_>=l&&(u=o[_-l]),w=a[2*_],t.opt_len+=w*(c+u),r&&(t.static_len+=w*(n[2*_+1]+u)));if(0!==m){do{for(c=h-1;0===t.bl_count[c];)c--;t.bl_count[c]--,t.bl_count[c+1]+=2,t.bl_count[h]--,m-=2}while(m>0);for(c=h;0!==c;c--)for(_=t.bl_count[c];0!==_;)f=t.heap[--d],f>i||(a[2*f+1]!==c&&(t.opt_len+=(c-a[2*f+1])*a[2*f],a[2*f+1]=c),_--)}})(t,e),E(a,d,t.bl_count)},O=(t,e,a)=>{let i,n,s=-1,r=e[1],o=0,l=7,h=4;for(0===r&&(l=138,h=3),e[2*(a+1)+1]=65535,i=0;i<=a;i++)n=r,r=e[2*(i+1)+1],++o{let i,n,s=-1,r=e[1],o=0,l=7,h=4;for(0===r&&(l=138,h=3),i=0;i<=a;i++)if(n=r,r=e[2*(i+1)+1],!(++o{x(t,0+(i?1:0),3),Z(t),y(t,a),y(t,~a),a&&t.pending_buf.set(t.window.subarray(e,e+a),t.pending),t.pending+=a};var N=(t,e,i,n)=>{let s,r,o=0;t.level>0?(2===t.strm.data_type&&(t.strm.data_type=(t=>{let e,i=4093624447;for(e=0;e<=31;e++,i>>>=1)if(1&i&&0!==t.dyn_ltree[2*e])return 0;if(0!==t.dyn_ltree[18]||0!==t.dyn_ltree[20]||0!==t.dyn_ltree[26])return 1;for(e=32;e{let e;for(O(t,t.dyn_ltree,t.l_desc.max_code),O(t,t.dyn_dtree,t.d_desc.max_code),T(t,t.bl_desc),e=18;e>=3&&0===t.bl_tree[2*h[e]+1];e--);return t.opt_len+=3*(e+1)+5+5+4,e})(t),s=t.opt_len+3+7>>>3,r=t.static_len+3+7>>>3,r<=s&&(s=r)):s=r=i+5,i+4<=s&&-1!==e?L(t,e,i,n):4===t.strategy||r===s?(x(t,2+(n?1:0),3),D(t,d,_)):(x(t,4+(n?1:0),3),((t,e,a,i)=>{let n;for(x(t,e-257,5),x(t,a-1,5),x(t,i-4,4),n=0;n{F||((()=>{let t,e,a,h,k;const v=new Array(16);for(a=0,h=0;h<28;h++)for(u[h]=a,t=0;t<1<>=7;h(t.pending_buf[t.sym_buf+t.sym_next++]=e,t.pending_buf[t.sym_buf+t.sym_next++]=e>>8,t.pending_buf[t.sym_buf+t.sym_next++]=i,0===e?t.dyn_ltree[2*i]++:(t.matches++,e--,t.dyn_ltree[2*(c[i]+a+1)]++,t.dyn_dtree[2*v(e)]++),t.sym_next===t.sym_end),_tr_align:t=>{x(t,2,3),z(t,256,d),(t=>{16===t.bi_valid?(y(t,t.bi_buf),t.bi_buf=0,t.bi_valid=0):t.bi_valid>=8&&(t.pending_buf[t.pending++]=255&t.bi_buf,t.bi_buf>>=8,t.bi_valid-=8)})(t)}};var C=(t,e,a,i)=>{let n=65535&t|0,s=t>>>16&65535|0,r=0;for(;0!==a;){r=a>2e3?2e3:a,a-=r;do{n=n+e[i++]|0,s=s+n|0}while(--r);n%=65521,s%=65521}return n|s<<16|0};const M=new Uint32Array((()=>{let t,e=[];for(var a=0;a<256;a++){t=a;for(var i=0;i<8;i++)t=1&t?3988292384^t>>>1:t>>>1;e[a]=t}return e})());var H=(t,e,a,i)=>{const n=M,s=i+a;t^=-1;for(let a=i;a>>8^n[255&(t^e[a])];return-1^t},j={2:"need dictionary",1:"stream end",0:"","-1":"file error","-2":"stream error","-3":"data error","-4":"insufficient memory","-5":"buffer error","-6":"incompatible version"},K={Z_NO_FLUSH:0,Z_PARTIAL_FLUSH:1,Z_SYNC_FLUSH:2,Z_FULL_FLUSH:3,Z_FINISH:4,Z_BLOCK:5,Z_TREES:6,Z_OK:0,Z_STREAM_END:1,Z_NEED_DICT:2,Z_ERRNO:-1,Z_STREAM_ERROR:-2,Z_DATA_ERROR:-3,Z_MEM_ERROR:-4,Z_BUF_ERROR:-5,Z_NO_COMPRESSION:0,Z_BEST_SPEED:1,Z_BEST_COMPRESSION:9,Z_DEFAULT_COMPRESSION:-1,Z_FILTERED:1,Z_HUFFMAN_ONLY:2,Z_RLE:3,Z_FIXED:4,Z_DEFAULT_STRATEGY:0,Z_BINARY:0,Z_TEXT:1,Z_UNKNOWN:2,Z_DEFLATED:8};const{_tr_init:P,_tr_stored_block:Y,_tr_flush_block:G,_tr_tally:X,_tr_align:W}=B,{Z_NO_FLUSH:q,Z_PARTIAL_FLUSH:J,Z_FULL_FLUSH:Q,Z_FINISH:V,Z_BLOCK:$,Z_OK:tt,Z_STREAM_END:et,Z_STREAM_ERROR:at,Z_DATA_ERROR:it,Z_BUF_ERROR:nt,Z_DEFAULT_COMPRESSION:st,Z_FILTERED:rt,Z_HUFFMAN_ONLY:ot,Z_RLE:lt,Z_FIXED:ht,Z_DEFAULT_STRATEGY:dt,Z_UNKNOWN:_t,Z_DEFLATED:ft}=K,ct=258,ut=262,wt=42,mt=113,bt=666,gt=(t,e)=>(t.msg=j[e],e),pt=t=>2*t-(t>4?9:0),kt=t=>{let e=t.length;for(;--e>=0;)t[e]=0},vt=t=>{let e,a,i,n=t.w_size;e=t.hash_size,i=e;do{a=t.head[--i],t.head[i]=a>=n?a-n:0}while(--e);e=n,i=e;do{a=t.prev[--i],t.prev[i]=a>=n?a-n:0}while(--e)};let yt=(t,e,a)=>(e<{const e=t.state;let a=e.pending;a>t.avail_out&&(a=t.avail_out),0!==a&&(t.output.set(e.pending_buf.subarray(e.pending_out,e.pending_out+a),t.next_out),t.next_out+=a,e.pending_out+=a,t.total_out+=a,t.avail_out-=a,e.pending-=a,0===e.pending&&(e.pending_out=0))},zt=(t,e)=>{G(t,t.block_start>=0?t.block_start:-1,t.strstart-t.block_start,e),t.block_start=t.strstart,xt(t.strm)},At=(t,e)=>{t.pending_buf[t.pending++]=e},Et=(t,e)=>{t.pending_buf[t.pending++]=e>>>8&255,t.pending_buf[t.pending++]=255&e},Rt=(t,e,a,i)=>{let n=t.avail_in;return n>i&&(n=i),0===n?0:(t.avail_in-=n,e.set(t.input.subarray(t.next_in,t.next_in+n),a),1===t.state.wrap?t.adler=C(t.adler,e,n,a):2===t.state.wrap&&(t.adler=H(t.adler,e,n,a)),t.next_in+=n,t.total_in+=n,n)},Zt=(t,e)=>{let a,i,n=t.max_chain_length,s=t.strstart,r=t.prev_length,o=t.nice_match;const l=t.strstart>t.w_size-ut?t.strstart-(t.w_size-ut):0,h=t.window,d=t.w_mask,_=t.prev,f=t.strstart+ct;let c=h[s+r-1],u=h[s+r];t.prev_length>=t.good_match&&(n>>=2),o>t.lookahead&&(o=t.lookahead);do{if(a=e,h[a+r]===u&&h[a+r-1]===c&&h[a]===h[s]&&h[++a]===h[s+1]){s+=2,a++;do{}while(h[++s]===h[++a]&&h[++s]===h[++a]&&h[++s]===h[++a]&&h[++s]===h[++a]&&h[++s]===h[++a]&&h[++s]===h[++a]&&h[++s]===h[++a]&&h[++s]===h[++a]&&sr){if(t.match_start=e,r=i,i>=o)break;c=h[s+r-1],u=h[s+r]}}}while((e=_[e&d])>l&&0!=--n);return r<=t.lookahead?r:t.lookahead},Ut=t=>{const e=t.w_size;let a,i,n;do{if(i=t.window_size-t.lookahead-t.strstart,t.strstart>=e+(e-ut)&&(t.window.set(t.window.subarray(e,e+e-i),0),t.match_start-=e,t.strstart-=e,t.block_start-=e,t.insert>t.strstart&&(t.insert=t.strstart),vt(t),i+=e),0===t.strm.avail_in)break;if(a=Rt(t.strm,t.window,t.strstart+t.lookahead,i),t.lookahead+=a,t.lookahead+t.insert>=3)for(n=t.strstart-t.insert,t.ins_h=t.window[n],t.ins_h=yt(t,t.ins_h,t.window[n+1]);t.insert&&(t.ins_h=yt(t,t.ins_h,t.window[n+3-1]),t.prev[n&t.w_mask]=t.head[t.ins_h],t.head[t.ins_h]=n,n++,t.insert--,!(t.lookahead+t.insert<3)););}while(t.lookahead{let a,i,n,s=t.pending_buf_size-5>t.w_size?t.w_size:t.pending_buf_size-5,r=0,o=t.strm.avail_in;do{if(a=65535,n=t.bi_valid+42>>3,t.strm.avail_outi+t.strm.avail_in&&(a=i+t.strm.avail_in),a>n&&(a=n),a>8,t.pending_buf[t.pending-2]=~a,t.pending_buf[t.pending-1]=~a>>8,xt(t.strm),i&&(i>a&&(i=a),t.strm.output.set(t.window.subarray(t.block_start,t.block_start+i),t.strm.next_out),t.strm.next_out+=i,t.strm.avail_out-=i,t.strm.total_out+=i,t.block_start+=i,a-=i),a&&(Rt(t.strm,t.strm.output,t.strm.next_out,a),t.strm.next_out+=a,t.strm.avail_out-=a,t.strm.total_out+=a)}while(0===r);return o-=t.strm.avail_in,o&&(o>=t.w_size?(t.matches=2,t.window.set(t.strm.input.subarray(t.strm.next_in-t.w_size,t.strm.next_in),0),t.strstart=t.w_size,t.insert=t.strstart):(t.window_size-t.strstart<=o&&(t.strstart-=t.w_size,t.window.set(t.window.subarray(t.w_size,t.w_size+t.strstart),0),t.matches<2&&t.matches++,t.insert>t.strstart&&(t.insert=t.strstart)),t.window.set(t.strm.input.subarray(t.strm.next_in-o,t.strm.next_in),t.strstart),t.strstart+=o,t.insert+=o>t.w_size-t.insert?t.w_size-t.insert:o),t.block_start=t.strstart),t.high_watern&&t.block_start>=t.w_size&&(t.block_start-=t.w_size,t.strstart-=t.w_size,t.window.set(t.window.subarray(t.w_size,t.w_size+t.strstart),0),t.matches<2&&t.matches++,n+=t.w_size,t.insert>t.strstart&&(t.insert=t.strstart)),n>t.strm.avail_in&&(n=t.strm.avail_in),n&&(Rt(t.strm,t.window,t.strstart,n),t.strstart+=n,t.insert+=n>t.w_size-t.insert?t.w_size-t.insert:n),t.high_water>3,n=t.pending_buf_size-n>65535?65535:t.pending_buf_size-n,s=n>t.w_size?t.w_size:n,i=t.strstart-t.block_start,(i>=s||(i||e===V)&&e!==q&&0===t.strm.avail_in&&i<=n)&&(a=i>n?n:i,r=e===V&&0===t.strm.avail_in&&a===i?1:0,Y(t,t.block_start,a,r),t.block_start+=a,xt(t.strm)),r?3:1)},Dt=(t,e)=>{let a,i;for(;;){if(t.lookahead=3&&(t.ins_h=yt(t,t.ins_h,t.window[t.strstart+3-1]),a=t.prev[t.strstart&t.w_mask]=t.head[t.ins_h],t.head[t.ins_h]=t.strstart),0!==a&&t.strstart-a<=t.w_size-ut&&(t.match_length=Zt(t,a)),t.match_length>=3)if(i=X(t,t.strstart-t.match_start,t.match_length-3),t.lookahead-=t.match_length,t.match_length<=t.max_lazy_match&&t.lookahead>=3){t.match_length--;do{t.strstart++,t.ins_h=yt(t,t.ins_h,t.window[t.strstart+3-1]),a=t.prev[t.strstart&t.w_mask]=t.head[t.ins_h],t.head[t.ins_h]=t.strstart}while(0!=--t.match_length);t.strstart++}else t.strstart+=t.match_length,t.match_length=0,t.ins_h=t.window[t.strstart],t.ins_h=yt(t,t.ins_h,t.window[t.strstart+1]);else i=X(t,0,t.window[t.strstart]),t.lookahead--,t.strstart++;if(i&&(zt(t,!1),0===t.strm.avail_out))return 1}return t.insert=t.strstart<2?t.strstart:2,e===V?(zt(t,!0),0===t.strm.avail_out?3:4):t.sym_next&&(zt(t,!1),0===t.strm.avail_out)?1:2},Tt=(t,e)=>{let a,i,n;for(;;){if(t.lookahead=3&&(t.ins_h=yt(t,t.ins_h,t.window[t.strstart+3-1]),a=t.prev[t.strstart&t.w_mask]=t.head[t.ins_h],t.head[t.ins_h]=t.strstart),t.prev_length=t.match_length,t.prev_match=t.match_start,t.match_length=2,0!==a&&t.prev_length4096)&&(t.match_length=2)),t.prev_length>=3&&t.match_length<=t.prev_length){n=t.strstart+t.lookahead-3,i=X(t,t.strstart-1-t.prev_match,t.prev_length-3),t.lookahead-=t.prev_length-1,t.prev_length-=2;do{++t.strstart<=n&&(t.ins_h=yt(t,t.ins_h,t.window[t.strstart+3-1]),a=t.prev[t.strstart&t.w_mask]=t.head[t.ins_h],t.head[t.ins_h]=t.strstart)}while(0!=--t.prev_length);if(t.match_available=0,t.match_length=2,t.strstart++,i&&(zt(t,!1),0===t.strm.avail_out))return 1}else if(t.match_available){if(i=X(t,0,t.window[t.strstart-1]),i&&zt(t,!1),t.strstart++,t.lookahead--,0===t.strm.avail_out)return 1}else t.match_available=1,t.strstart++,t.lookahead--}return t.match_available&&(i=X(t,0,t.window[t.strstart-1]),t.match_available=0),t.insert=t.strstart<2?t.strstart:2,e===V?(zt(t,!0),0===t.strm.avail_out?3:4):t.sym_next&&(zt(t,!1),0===t.strm.avail_out)?1:2};function Ot(t,e,a,i,n){this.good_length=t,this.max_lazy=e,this.nice_length=a,this.max_chain=i,this.func=n}const It=[new Ot(0,0,0,0,St),new Ot(4,4,8,4,Dt),new Ot(4,5,16,8,Dt),new Ot(4,6,32,32,Dt),new Ot(4,4,16,16,Tt),new Ot(8,16,32,32,Tt),new Ot(8,16,128,128,Tt),new Ot(8,32,128,256,Tt),new Ot(32,128,258,1024,Tt),new Ot(32,258,258,4096,Tt)];function Ft(){this.strm=null,this.status=0,this.pending_buf=null,this.pending_buf_size=0,this.pending_out=0,this.pending=0,this.wrap=0,this.gzhead=null,this.gzindex=0,this.method=ft,this.last_flush=-1,this.w_size=0,this.w_bits=0,this.w_mask=0,this.window=null,this.window_size=0,this.prev=null,this.head=null,this.ins_h=0,this.hash_size=0,this.hash_bits=0,this.hash_mask=0,this.hash_shift=0,this.block_start=0,this.match_length=0,this.prev_match=0,this.match_available=0,this.strstart=0,this.match_start=0,this.lookahead=0,this.prev_length=0,this.max_chain_length=0,this.max_lazy_match=0,this.level=0,this.strategy=0,this.good_match=0,this.nice_match=0,this.dyn_ltree=new Uint16Array(1146),this.dyn_dtree=new Uint16Array(122),this.bl_tree=new Uint16Array(78),kt(this.dyn_ltree),kt(this.dyn_dtree),kt(this.bl_tree),this.l_desc=null,this.d_desc=null,this.bl_desc=null,this.bl_count=new Uint16Array(16),this.heap=new Uint16Array(573),kt(this.heap),this.heap_len=0,this.heap_max=0,this.depth=new Uint16Array(573),kt(this.depth),this.sym_buf=0,this.lit_bufsize=0,this.sym_next=0,this.sym_end=0,this.opt_len=0,this.static_len=0,this.matches=0,this.insert=0,this.bi_buf=0,this.bi_valid=0}const Lt=t=>{if(!t)return 1;const e=t.state;return!e||e.strm!==t||e.status!==wt&&57!==e.status&&69!==e.status&&73!==e.status&&91!==e.status&&103!==e.status&&e.status!==mt&&e.status!==bt?1:0},Nt=t=>{if(Lt(t))return gt(t,at);t.total_in=t.total_out=0,t.data_type=_t;const e=t.state;return e.pending=0,e.pending_out=0,e.wrap<0&&(e.wrap=-e.wrap),e.status=2===e.wrap?57:e.wrap?wt:mt,t.adler=2===e.wrap?0:1,e.last_flush=-2,P(e),tt},Bt=t=>{const e=Nt(t);var a;return e===tt&&((a=t.state).window_size=2*a.w_size,kt(a.head),a.max_lazy_match=It[a.level].max_lazy,a.good_match=It[a.level].good_length,a.nice_match=It[a.level].nice_length,a.max_chain_length=It[a.level].max_chain,a.strstart=0,a.block_start=0,a.lookahead=0,a.insert=0,a.match_length=a.prev_length=2,a.match_available=0,a.ins_h=0),e},Ct=(t,e,a,i,n,s)=>{if(!t)return at;let r=1;if(e===st&&(e=6),i<0?(r=0,i=-i):i>15&&(r=2,i-=16),n<1||n>9||a!==ft||i<8||i>15||e<0||e>9||s<0||s>ht||8===i&&1!==r)return gt(t,at);8===i&&(i=9);const o=new Ft;return t.state=o,o.strm=t,o.status=wt,o.wrap=r,o.gzhead=null,o.w_bits=i,o.w_size=1<Ct(t,e,ft,15,8,dt),deflateInit2:Ct,deflateReset:Bt,deflateResetKeep:Nt,deflateSetHeader:(t,e)=>Lt(t)||2!==t.state.wrap?at:(t.state.gzhead=e,tt),deflate:(t,e)=>{if(Lt(t)||e>$||e<0)return t?gt(t,at):at;const a=t.state;if(!t.output||0!==t.avail_in&&!t.input||a.status===bt&&e!==V)return gt(t,0===t.avail_out?nt:at);const i=a.last_flush;if(a.last_flush=e,0!==a.pending){if(xt(t),0===t.avail_out)return a.last_flush=-1,tt}else if(0===t.avail_in&&pt(e)<=pt(i)&&e!==V)return gt(t,nt);if(a.status===bt&&0!==t.avail_in)return gt(t,nt);if(a.status===wt&&0===a.wrap&&(a.status=mt),a.status===wt){let e=ft+(a.w_bits-8<<4)<<8,i=-1;if(i=a.strategy>=ot||a.level<2?0:a.level<6?1:6===a.level?2:3,e|=i<<6,0!==a.strstart&&(e|=32),e+=31-e%31,Et(a,e),0!==a.strstart&&(Et(a,t.adler>>>16),Et(a,65535&t.adler)),t.adler=1,a.status=mt,xt(t),0!==a.pending)return a.last_flush=-1,tt}if(57===a.status)if(t.adler=0,At(a,31),At(a,139),At(a,8),a.gzhead)At(a,(a.gzhead.text?1:0)+(a.gzhead.hcrc?2:0)+(a.gzhead.extra?4:0)+(a.gzhead.name?8:0)+(a.gzhead.comment?16:0)),At(a,255&a.gzhead.time),At(a,a.gzhead.time>>8&255),At(a,a.gzhead.time>>16&255),At(a,a.gzhead.time>>24&255),At(a,9===a.level?2:a.strategy>=ot||a.level<2?4:0),At(a,255&a.gzhead.os),a.gzhead.extra&&a.gzhead.extra.length&&(At(a,255&a.gzhead.extra.length),At(a,a.gzhead.extra.length>>8&255)),a.gzhead.hcrc&&(t.adler=H(t.adler,a.pending_buf,a.pending,0)),a.gzindex=0,a.status=69;else if(At(a,0),At(a,0),At(a,0),At(a,0),At(a,0),At(a,9===a.level?2:a.strategy>=ot||a.level<2?4:0),At(a,3),a.status=mt,xt(t),0!==a.pending)return a.last_flush=-1,tt;if(69===a.status){if(a.gzhead.extra){let e=a.pending,i=(65535&a.gzhead.extra.length)-a.gzindex;for(;a.pending+i>a.pending_buf_size;){let n=a.pending_buf_size-a.pending;if(a.pending_buf.set(a.gzhead.extra.subarray(a.gzindex,a.gzindex+n),a.pending),a.pending=a.pending_buf_size,a.gzhead.hcrc&&a.pending>e&&(t.adler=H(t.adler,a.pending_buf,a.pending-e,e)),a.gzindex+=n,xt(t),0!==a.pending)return a.last_flush=-1,tt;e=0,i-=n}let n=new Uint8Array(a.gzhead.extra);a.pending_buf.set(n.subarray(a.gzindex,a.gzindex+i),a.pending),a.pending+=i,a.gzhead.hcrc&&a.pending>e&&(t.adler=H(t.adler,a.pending_buf,a.pending-e,e)),a.gzindex=0}a.status=73}if(73===a.status){if(a.gzhead.name){let e,i=a.pending;do{if(a.pending===a.pending_buf_size){if(a.gzhead.hcrc&&a.pending>i&&(t.adler=H(t.adler,a.pending_buf,a.pending-i,i)),xt(t),0!==a.pending)return a.last_flush=-1,tt;i=0}e=a.gzindexi&&(t.adler=H(t.adler,a.pending_buf,a.pending-i,i)),a.gzindex=0}a.status=91}if(91===a.status){if(a.gzhead.comment){let e,i=a.pending;do{if(a.pending===a.pending_buf_size){if(a.gzhead.hcrc&&a.pending>i&&(t.adler=H(t.adler,a.pending_buf,a.pending-i,i)),xt(t),0!==a.pending)return a.last_flush=-1,tt;i=0}e=a.gzindexi&&(t.adler=H(t.adler,a.pending_buf,a.pending-i,i))}a.status=103}if(103===a.status){if(a.gzhead.hcrc){if(a.pending+2>a.pending_buf_size&&(xt(t),0!==a.pending))return a.last_flush=-1,tt;At(a,255&t.adler),At(a,t.adler>>8&255),t.adler=0}if(a.status=mt,xt(t),0!==a.pending)return a.last_flush=-1,tt}if(0!==t.avail_in||0!==a.lookahead||e!==q&&a.status!==bt){let i=0===a.level?St(a,e):a.strategy===ot?((t,e)=>{let a;for(;;){if(0===t.lookahead&&(Ut(t),0===t.lookahead)){if(e===q)return 1;break}if(t.match_length=0,a=X(t,0,t.window[t.strstart]),t.lookahead--,t.strstart++,a&&(zt(t,!1),0===t.strm.avail_out))return 1}return t.insert=0,e===V?(zt(t,!0),0===t.strm.avail_out?3:4):t.sym_next&&(zt(t,!1),0===t.strm.avail_out)?1:2})(a,e):a.strategy===lt?((t,e)=>{let a,i,n,s;const r=t.window;for(;;){if(t.lookahead<=ct){if(Ut(t),t.lookahead<=ct&&e===q)return 1;if(0===t.lookahead)break}if(t.match_length=0,t.lookahead>=3&&t.strstart>0&&(n=t.strstart-1,i=r[n],i===r[++n]&&i===r[++n]&&i===r[++n])){s=t.strstart+ct;do{}while(i===r[++n]&&i===r[++n]&&i===r[++n]&&i===r[++n]&&i===r[++n]&&i===r[++n]&&i===r[++n]&&i===r[++n]&&nt.lookahead&&(t.match_length=t.lookahead)}if(t.match_length>=3?(a=X(t,1,t.match_length-3),t.lookahead-=t.match_length,t.strstart+=t.match_length,t.match_length=0):(a=X(t,0,t.window[t.strstart]),t.lookahead--,t.strstart++),a&&(zt(t,!1),0===t.strm.avail_out))return 1}return t.insert=0,e===V?(zt(t,!0),0===t.strm.avail_out?3:4):t.sym_next&&(zt(t,!1),0===t.strm.avail_out)?1:2})(a,e):It[a.level].func(a,e);if(3!==i&&4!==i||(a.status=bt),1===i||3===i)return 0===t.avail_out&&(a.last_flush=-1),tt;if(2===i&&(e===J?W(a):e!==$&&(Y(a,0,0,!1),e===Q&&(kt(a.head),0===a.lookahead&&(a.strstart=0,a.block_start=0,a.insert=0))),xt(t),0===t.avail_out))return a.last_flush=-1,tt}return e!==V?tt:a.wrap<=0?et:(2===a.wrap?(At(a,255&t.adler),At(a,t.adler>>8&255),At(a,t.adler>>16&255),At(a,t.adler>>24&255),At(a,255&t.total_in),At(a,t.total_in>>8&255),At(a,t.total_in>>16&255),At(a,t.total_in>>24&255)):(Et(a,t.adler>>>16),Et(a,65535&t.adler)),xt(t),a.wrap>0&&(a.wrap=-a.wrap),0!==a.pending?tt:et)},deflateEnd:t=>{if(Lt(t))return at;const e=t.state.status;return t.state=null,e===mt?gt(t,it):tt},deflateSetDictionary:(t,e)=>{let a=e.length;if(Lt(t))return at;const i=t.state,n=i.wrap;if(2===n||1===n&&i.status!==wt||i.lookahead)return at;if(1===n&&(t.adler=C(t.adler,e,a,0)),i.wrap=0,a>=i.w_size){0===n&&(kt(i.head),i.strstart=0,i.block_start=0,i.insert=0);let t=new Uint8Array(i.w_size);t.set(e.subarray(a-i.w_size,a),0),e=t,a=i.w_size}const s=t.avail_in,r=t.next_in,o=t.input;for(t.avail_in=a,t.next_in=0,t.input=e,Ut(i);i.lookahead>=3;){let t=i.strstart,e=i.lookahead-2;do{i.ins_h=yt(i,i.ins_h,i.window[t+3-1]),i.prev[t&i.w_mask]=i.head[i.ins_h],i.head[i.ins_h]=t,t++}while(--e);i.strstart=t,i.lookahead=2,Ut(i)}return i.strstart+=i.lookahead,i.block_start=i.strstart,i.insert=i.lookahead,i.lookahead=0,i.match_length=i.prev_length=2,i.match_available=0,t.next_in=r,t.input=o,t.avail_in=s,i.wrap=n,tt},deflateInfo:"pako deflate (from Nodeca project)"};const Ht=(t,e)=>Object.prototype.hasOwnProperty.call(t,e);var jt=function(t){const e=Array.prototype.slice.call(arguments,1);for(;e.length;){const a=e.shift();if(a){if("object"!=typeof a)throw new TypeError(a+"must be non-object");for(const e in a)Ht(a,e)&&(t[e]=a[e])}}return t},Kt=t=>{let e=0;for(let a=0,i=t.length;a=252?6:t>=248?5:t>=240?4:t>=224?3:t>=192?2:1;Yt[254]=Yt[254]=1;var Gt=t=>{if("function"==typeof TextEncoder&&TextEncoder.prototype.encode)return(new TextEncoder).encode(t);let e,a,i,n,s,r=t.length,o=0;for(n=0;n>>6,e[s++]=128|63&a):a<65536?(e[s++]=224|a>>>12,e[s++]=128|a>>>6&63,e[s++]=128|63&a):(e[s++]=240|a>>>18,e[s++]=128|a>>>12&63,e[s++]=128|a>>>6&63,e[s++]=128|63&a);return e},Xt=(t,e)=>{const a=e||t.length;if("function"==typeof TextDecoder&&TextDecoder.prototype.decode)return(new TextDecoder).decode(t.subarray(0,e));let i,n;const s=new Array(2*a);for(n=0,i=0;i4)s[n++]=65533,i+=r-1;else{for(e&=2===r?31:3===r?15:7;r>1&&i1?s[n++]=65533:e<65536?s[n++]=e:(e-=65536,s[n++]=55296|e>>10&1023,s[n++]=56320|1023&e)}}return((t,e)=>{if(e<65534&&t.subarray&&Pt)return String.fromCharCode.apply(null,t.length===e?t:t.subarray(0,e));let a="";for(let i=0;i{(e=e||t.length)>t.length&&(e=t.length);let a=e-1;for(;a>=0&&128==(192&t[a]);)a--;return a<0||0===a?e:a+Yt[t[a]]>e?a:e};var qt=function(){this.input=null,this.next_in=0,this.avail_in=0,this.total_in=0,this.output=null,this.next_out=0,this.avail_out=0,this.total_out=0,this.msg="",this.state=null,this.data_type=2,this.adler=0};const Jt=Object.prototype.toString,{Z_NO_FLUSH:Qt,Z_SYNC_FLUSH:Vt,Z_FULL_FLUSH:$t,Z_FINISH:te,Z_OK:ee,Z_STREAM_END:ae,Z_DEFAULT_COMPRESSION:ie,Z_DEFAULT_STRATEGY:ne,Z_DEFLATED:se}=K;function re(t){this.options=jt({level:ie,method:se,chunkSize:16384,windowBits:15,memLevel:8,strategy:ne},t||{});let e=this.options;e.raw&&e.windowBits>0?e.windowBits=-e.windowBits:e.gzip&&e.windowBits>0&&e.windowBits<16&&(e.windowBits+=16),this.err=0,this.msg="",this.ended=!1,this.chunks=[],this.strm=new qt,this.strm.avail_out=0;let a=Mt.deflateInit2(this.strm,e.level,e.method,e.windowBits,e.memLevel,e.strategy);if(a!==ee)throw new Error(j[a]);if(e.header&&Mt.deflateSetHeader(this.strm,e.header),e.dictionary){let t;if(t="string"==typeof e.dictionary?Gt(e.dictionary):"[object ArrayBuffer]"===Jt.call(e.dictionary)?new Uint8Array(e.dictionary):e.dictionary,a=Mt.deflateSetDictionary(this.strm,t),a!==ee)throw new Error(j[a]);this._dict_set=!0}}function oe(t,e){const a=new re(e);if(a.push(t,!0),a.err)throw a.msg||j[a.err];return a.result}re.prototype.push=function(t,e){const a=this.strm,i=this.options.chunkSize;let n,s;if(this.ended)return!1;for(s=e===~~e?e:!0===e?te:Qt,"string"==typeof t?a.input=Gt(t):"[object ArrayBuffer]"===Jt.call(t)?a.input=new Uint8Array(t):a.input=t,a.next_in=0,a.avail_in=a.input.length;;)if(0===a.avail_out&&(a.output=new Uint8Array(i),a.next_out=0,a.avail_out=i),(s===Vt||s===$t)&&a.avail_out<=6)this.onData(a.output.subarray(0,a.next_out)),a.avail_out=0;else{if(n=Mt.deflate(a,s),n===ae)return a.next_out>0&&this.onData(a.output.subarray(0,a.next_out)),n=Mt.deflateEnd(this.strm),this.onEnd(n),this.ended=!0,n===ee;if(0!==a.avail_out){if(s>0&&a.next_out>0)this.onData(a.output.subarray(0,a.next_out)),a.avail_out=0;else if(0===a.avail_in)break}else this.onData(a.output)}return!0},re.prototype.onData=function(t){this.chunks.push(t)},re.prototype.onEnd=function(t){t===ee&&(this.result=Kt(this.chunks)),this.chunks=[],this.err=t,this.msg=this.strm.msg};var le={Deflate:re,deflate:oe,deflateRaw:function(t,e){return(e=e||{}).raw=!0,oe(t,e)},gzip:function(t,e){return(e=e||{}).gzip=!0,oe(t,e)},constants:K};const he=16209;var de=function(t,e){let a,i,n,s,r,o,l,h,d,_,f,c,u,w,m,b,g,p,k,v,y,x,z,A;const E=t.state;a=t.next_in,z=t.input,i=a+(t.avail_in-5),n=t.next_out,A=t.output,s=n-(e-t.avail_out),r=n+(t.avail_out-257),o=E.dmax,l=E.wsize,h=E.whave,d=E.wnext,_=E.window,f=E.hold,c=E.bits,u=E.lencode,w=E.distcode,m=(1<>>24,f>>>=p,c-=p,p=g>>>16&255,0===p)A[n++]=65535&g;else{if(!(16&p)){if(0==(64&p)){g=u[(65535&g)+(f&(1<>>=p,c-=p),c<15&&(f+=z[a++]<>>24,f>>>=p,c-=p,p=g>>>16&255,!(16&p)){if(0==(64&p)){g=w[(65535&g)+(f&(1<o){t.msg="invalid distance too far back",E.mode=he;break t}if(f>>>=p,c-=p,p=n-s,v>p){if(p=v-p,p>h&&E.sane){t.msg="invalid distance too far back",E.mode=he;break t}if(y=0,x=_,0===d){if(y+=l-p,p2;)A[n++]=x[y++],A[n++]=x[y++],A[n++]=x[y++],k-=3;k&&(A[n++]=x[y++],k>1&&(A[n++]=x[y++]))}else{y=n-v;do{A[n++]=A[y++],A[n++]=A[y++],A[n++]=A[y++],k-=3}while(k>2);k&&(A[n++]=A[y++],k>1&&(A[n++]=A[y++]))}break}}break}}while(a>3,a-=k,c-=k<<3,f&=(1<{const l=o.bits;let h,d,_,f,c,u,w=0,m=0,b=0,g=0,p=0,k=0,v=0,y=0,x=0,z=0,A=null;const E=new Uint16Array(16),R=new Uint16Array(16);let Z,U,S,D=null;for(w=0;w<=_e;w++)E[w]=0;for(m=0;m=1&&0===E[g];g--);if(p>g&&(p=g),0===g)return n[s++]=20971520,n[s++]=20971520,o.bits=1,0;for(b=1;b0&&(0===t||1!==g))return-1;for(R[1]=0,w=1;w<_e;w++)R[w+1]=R[w]+E[w];for(m=0;m852||2===t&&x>592)return 1;for(;;){Z=w-v,r[m]+1=u?(U=D[r[m]-u],S=A[r[m]-u]):(U=96,S=0),h=1<>v)+d]=Z<<24|U<<16|S|0}while(0!==d);for(h=1<>=1;if(0!==h?(z&=h-1,z+=h):z=0,m++,0==--E[w]){if(w===g)break;w=e[a+r[m]]}if(w>p&&(z&f)!==_){for(0===v&&(v=p),c+=b,k=w-v,y=1<852||2===t&&x>592)return 1;_=z&f,n[_]=p<<24|k<<16|c-s|0}}return 0!==z&&(n[c+z]=w-v<<24|64<<16|0),o.bits=p,0};const{Z_FINISH:be,Z_BLOCK:ge,Z_TREES:pe,Z_OK:ke,Z_STREAM_END:ve,Z_NEED_DICT:ye,Z_STREAM_ERROR:xe,Z_DATA_ERROR:ze,Z_MEM_ERROR:Ae,Z_BUF_ERROR:Ee,Z_DEFLATED:Re}=K,Ze=16180,Ue=16190,Se=16191,De=16192,Te=16194,Oe=16199,Ie=16200,Fe=16206,Le=16209,Ne=t=>(t>>>24&255)+(t>>>8&65280)+((65280&t)<<8)+((255&t)<<24);function Be(){this.strm=null,this.mode=0,this.last=!1,this.wrap=0,this.havedict=!1,this.flags=0,this.dmax=0,this.check=0,this.total=0,this.head=null,this.wbits=0,this.wsize=0,this.whave=0,this.wnext=0,this.window=null,this.hold=0,this.bits=0,this.length=0,this.offset=0,this.extra=0,this.lencode=null,this.distcode=null,this.lenbits=0,this.distbits=0,this.ncode=0,this.nlen=0,this.ndist=0,this.have=0,this.next=null,this.lens=new Uint16Array(320),this.work=new Uint16Array(288),this.lendyn=null,this.distdyn=null,this.sane=0,this.back=0,this.was=0}const Ce=t=>{if(!t)return 1;const e=t.state;return!e||e.strm!==t||e.mode16211?1:0},Me=t=>{if(Ce(t))return xe;const e=t.state;return t.total_in=t.total_out=e.total=0,t.msg="",e.wrap&&(t.adler=1&e.wrap),e.mode=Ze,e.last=0,e.havedict=0,e.flags=-1,e.dmax=32768,e.head=null,e.hold=0,e.bits=0,e.lencode=e.lendyn=new Int32Array(852),e.distcode=e.distdyn=new Int32Array(592),e.sane=1,e.back=-1,ke},He=t=>{if(Ce(t))return xe;const e=t.state;return e.wsize=0,e.whave=0,e.wnext=0,Me(t)},je=(t,e)=>{let a;if(Ce(t))return xe;const i=t.state;return e<0?(a=0,e=-e):(a=5+(e>>4),e<48&&(e&=15)),e&&(e<8||e>15)?xe:(null!==i.window&&i.wbits!==e&&(i.window=null),i.wrap=a,i.wbits=e,He(t))},Ke=(t,e)=>{if(!t)return xe;const a=new Be;t.state=a,a.strm=t,a.window=null,a.mode=Ze;const i=je(t,e);return i!==ke&&(t.state=null),i};let Pe,Ye,Ge=!0;const Xe=t=>{if(Ge){Pe=new Int32Array(512),Ye=new Int32Array(32);let e=0;for(;e<144;)t.lens[e++]=8;for(;e<256;)t.lens[e++]=9;for(;e<280;)t.lens[e++]=7;for(;e<288;)t.lens[e++]=8;for(me(1,t.lens,0,288,Pe,0,t.work,{bits:9}),e=0;e<32;)t.lens[e++]=5;me(2,t.lens,0,32,Ye,0,t.work,{bits:5}),Ge=!1}t.lencode=Pe,t.lenbits=9,t.distcode=Ye,t.distbits=5},We=(t,e,a,i)=>{let n;const s=t.state;return null===s.window&&(s.wsize=1<=s.wsize?(s.window.set(e.subarray(a-s.wsize,a),0),s.wnext=0,s.whave=s.wsize):(n=s.wsize-s.wnext,n>i&&(n=i),s.window.set(e.subarray(a-i,a-i+n),s.wnext),(i-=n)?(s.window.set(e.subarray(a-i,a),0),s.wnext=i,s.whave=s.wsize):(s.wnext+=n,s.wnext===s.wsize&&(s.wnext=0),s.whaveKe(t,15),inflateInit2:Ke,inflate:(t,e)=>{let a,i,n,s,r,o,l,h,d,_,f,c,u,w,m,b,g,p,k,v,y,x,z=0;const A=new Uint8Array(4);let E,R;const Z=new Uint8Array([16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15]);if(Ce(t)||!t.output||!t.input&&0!==t.avail_in)return xe;a=t.state,a.mode===Se&&(a.mode=De),r=t.next_out,n=t.output,l=t.avail_out,s=t.next_in,i=t.input,o=t.avail_in,h=a.hold,d=a.bits,_=o,f=l,x=ke;t:for(;;)switch(a.mode){case Ze:if(0===a.wrap){a.mode=De;break}for(;d<16;){if(0===o)break t;o--,h+=i[s++]<>>8&255,a.check=H(a.check,A,2,0),h=0,d=0,a.mode=16181;break}if(a.head&&(a.head.done=!1),!(1&a.wrap)||(((255&h)<<8)+(h>>8))%31){t.msg="incorrect header check",a.mode=Le;break}if((15&h)!==Re){t.msg="unknown compression method",a.mode=Le;break}if(h>>>=4,d-=4,y=8+(15&h),0===a.wbits&&(a.wbits=y),y>15||y>a.wbits){t.msg="invalid window size",a.mode=Le;break}a.dmax=1<>8&1),512&a.flags&&4&a.wrap&&(A[0]=255&h,A[1]=h>>>8&255,a.check=H(a.check,A,2,0)),h=0,d=0,a.mode=16182;case 16182:for(;d<32;){if(0===o)break t;o--,h+=i[s++]<>>8&255,A[2]=h>>>16&255,A[3]=h>>>24&255,a.check=H(a.check,A,4,0)),h=0,d=0,a.mode=16183;case 16183:for(;d<16;){if(0===o)break t;o--,h+=i[s++]<>8),512&a.flags&&4&a.wrap&&(A[0]=255&h,A[1]=h>>>8&255,a.check=H(a.check,A,2,0)),h=0,d=0,a.mode=16184;case 16184:if(1024&a.flags){for(;d<16;){if(0===o)break t;o--,h+=i[s++]<>>8&255,a.check=H(a.check,A,2,0)),h=0,d=0}else a.head&&(a.head.extra=null);a.mode=16185;case 16185:if(1024&a.flags&&(c=a.length,c>o&&(c=o),c&&(a.head&&(y=a.head.extra_len-a.length,a.head.extra||(a.head.extra=new Uint8Array(a.head.extra_len)),a.head.extra.set(i.subarray(s,s+c),y)),512&a.flags&&4&a.wrap&&(a.check=H(a.check,i,c,s)),o-=c,s+=c,a.length-=c),a.length))break t;a.length=0,a.mode=16186;case 16186:if(2048&a.flags){if(0===o)break t;c=0;do{y=i[s+c++],a.head&&y&&a.length<65536&&(a.head.name+=String.fromCharCode(y))}while(y&&c>9&1,a.head.done=!0),t.adler=a.check=0,a.mode=Se;break;case 16189:for(;d<32;){if(0===o)break t;o--,h+=i[s++]<>>=7&d,d-=7&d,a.mode=Fe;break}for(;d<3;){if(0===o)break t;o--,h+=i[s++]<>>=1,d-=1,3&h){case 0:a.mode=16193;break;case 1:if(Xe(a),a.mode=Oe,e===pe){h>>>=2,d-=2;break t}break;case 2:a.mode=16196;break;case 3:t.msg="invalid block type",a.mode=Le}h>>>=2,d-=2;break;case 16193:for(h>>>=7&d,d-=7&d;d<32;){if(0===o)break t;o--,h+=i[s++]<>>16^65535)){t.msg="invalid stored block lengths",a.mode=Le;break}if(a.length=65535&h,h=0,d=0,a.mode=Te,e===pe)break t;case Te:a.mode=16195;case 16195:if(c=a.length,c){if(c>o&&(c=o),c>l&&(c=l),0===c)break t;n.set(i.subarray(s,s+c),r),o-=c,s+=c,l-=c,r+=c,a.length-=c;break}a.mode=Se;break;case 16196:for(;d<14;){if(0===o)break t;o--,h+=i[s++]<>>=5,d-=5,a.ndist=1+(31&h),h>>>=5,d-=5,a.ncode=4+(15&h),h>>>=4,d-=4,a.nlen>286||a.ndist>30){t.msg="too many length or distance symbols",a.mode=Le;break}a.have=0,a.mode=16197;case 16197:for(;a.have>>=3,d-=3}for(;a.have<19;)a.lens[Z[a.have++]]=0;if(a.lencode=a.lendyn,a.lenbits=7,E={bits:a.lenbits},x=me(0,a.lens,0,19,a.lencode,0,a.work,E),a.lenbits=E.bits,x){t.msg="invalid code lengths set",a.mode=Le;break}a.have=0,a.mode=16198;case 16198:for(;a.have>>24,b=z>>>16&255,g=65535&z,!(m<=d);){if(0===o)break t;o--,h+=i[s++]<>>=m,d-=m,a.lens[a.have++]=g;else{if(16===g){for(R=m+2;d>>=m,d-=m,0===a.have){t.msg="invalid bit length repeat",a.mode=Le;break}y=a.lens[a.have-1],c=3+(3&h),h>>>=2,d-=2}else if(17===g){for(R=m+3;d>>=m,d-=m,y=0,c=3+(7&h),h>>>=3,d-=3}else{for(R=m+7;d>>=m,d-=m,y=0,c=11+(127&h),h>>>=7,d-=7}if(a.have+c>a.nlen+a.ndist){t.msg="invalid bit length repeat",a.mode=Le;break}for(;c--;)a.lens[a.have++]=y}}if(a.mode===Le)break;if(0===a.lens[256]){t.msg="invalid code -- missing end-of-block",a.mode=Le;break}if(a.lenbits=9,E={bits:a.lenbits},x=me(1,a.lens,0,a.nlen,a.lencode,0,a.work,E),a.lenbits=E.bits,x){t.msg="invalid literal/lengths set",a.mode=Le;break}if(a.distbits=6,a.distcode=a.distdyn,E={bits:a.distbits},x=me(2,a.lens,a.nlen,a.ndist,a.distcode,0,a.work,E),a.distbits=E.bits,x){t.msg="invalid distances set",a.mode=Le;break}if(a.mode=Oe,e===pe)break t;case Oe:a.mode=Ie;case Ie:if(o>=6&&l>=258){t.next_out=r,t.avail_out=l,t.next_in=s,t.avail_in=o,a.hold=h,a.bits=d,de(t,f),r=t.next_out,n=t.output,l=t.avail_out,s=t.next_in,i=t.input,o=t.avail_in,h=a.hold,d=a.bits,a.mode===Se&&(a.back=-1);break}for(a.back=0;z=a.lencode[h&(1<>>24,b=z>>>16&255,g=65535&z,!(m<=d);){if(0===o)break t;o--,h+=i[s++]<>p)],m=z>>>24,b=z>>>16&255,g=65535&z,!(p+m<=d);){if(0===o)break t;o--,h+=i[s++]<>>=p,d-=p,a.back+=p}if(h>>>=m,d-=m,a.back+=m,a.length=g,0===b){a.mode=16205;break}if(32&b){a.back=-1,a.mode=Se;break}if(64&b){t.msg="invalid literal/length code",a.mode=Le;break}a.extra=15&b,a.mode=16201;case 16201:if(a.extra){for(R=a.extra;d>>=a.extra,d-=a.extra,a.back+=a.extra}a.was=a.length,a.mode=16202;case 16202:for(;z=a.distcode[h&(1<>>24,b=z>>>16&255,g=65535&z,!(m<=d);){if(0===o)break t;o--,h+=i[s++]<>p)],m=z>>>24,b=z>>>16&255,g=65535&z,!(p+m<=d);){if(0===o)break t;o--,h+=i[s++]<>>=p,d-=p,a.back+=p}if(h>>>=m,d-=m,a.back+=m,64&b){t.msg="invalid distance code",a.mode=Le;break}a.offset=g,a.extra=15&b,a.mode=16203;case 16203:if(a.extra){for(R=a.extra;d>>=a.extra,d-=a.extra,a.back+=a.extra}if(a.offset>a.dmax){t.msg="invalid distance too far back",a.mode=Le;break}a.mode=16204;case 16204:if(0===l)break t;if(c=f-l,a.offset>c){if(c=a.offset-c,c>a.whave&&a.sane){t.msg="invalid distance too far back",a.mode=Le;break}c>a.wnext?(c-=a.wnext,u=a.wsize-c):u=a.wnext-c,c>a.length&&(c=a.length),w=a.window}else w=n,u=r-a.offset,c=a.length;c>l&&(c=l),l-=c,a.length-=c;do{n[r++]=w[u++]}while(--c);0===a.length&&(a.mode=Ie);break;case 16205:if(0===l)break t;n[r++]=a.length,l--,a.mode=Ie;break;case Fe:if(a.wrap){for(;d<32;){if(0===o)break t;o--,h|=i[s++]<{if(Ce(t))return xe;let e=t.state;return e.window&&(e.window=null),t.state=null,ke},inflateGetHeader:(t,e)=>{if(Ce(t))return xe;const a=t.state;return 0==(2&a.wrap)?xe:(a.head=e,e.done=!1,ke)},inflateSetDictionary:(t,e)=>{const a=e.length;let i,n,s;return Ce(t)?xe:(i=t.state,0!==i.wrap&&i.mode!==Ue?xe:i.mode===Ue&&(n=1,n=C(n,e,a,0),n!==i.check)?ze:(s=We(t,e,a,a),s?(i.mode=16210,Ae):(i.havedict=1,ke)))},inflateInfo:"pako inflate (from Nodeca project)"};var Je=function(){this.text=0,this.time=0,this.xflags=0,this.os=0,this.extra=null,this.extra_len=0,this.name="",this.comment="",this.hcrc=0,this.done=!1};const Qe=Object.prototype.toString,{Z_NO_FLUSH:Ve,Z_FINISH:$e,Z_OK:ta,Z_STREAM_END:ea,Z_NEED_DICT:aa,Z_STREAM_ERROR:ia,Z_DATA_ERROR:na,Z_MEM_ERROR:sa}=K;function ra(t){this.options=jt({chunkSize:65536,windowBits:15,to:""},t||{});const e=this.options;e.raw&&e.windowBits>=0&&e.windowBits<16&&(e.windowBits=-e.windowBits,0===e.windowBits&&(e.windowBits=-15)),!(e.windowBits>=0&&e.windowBits<16)||t&&t.windowBits||(e.windowBits+=32),e.windowBits>15&&e.windowBits<48&&0==(15&e.windowBits)&&(e.windowBits|=15),this.err=0,this.msg="",this.ended=!1,this.chunks=[],this.strm=new qt,this.strm.avail_out=0;let a=qe.inflateInit2(this.strm,e.windowBits);if(a!==ta)throw new Error(j[a]);if(this.header=new Je,qe.inflateGetHeader(this.strm,this.header),e.dictionary&&("string"==typeof e.dictionary?e.dictionary=Gt(e.dictionary):"[object ArrayBuffer]"===Qe.call(e.dictionary)&&(e.dictionary=new Uint8Array(e.dictionary)),e.raw&&(a=qe.inflateSetDictionary(this.strm,e.dictionary),a!==ta)))throw new Error(j[a])}function oa(t,e){const a=new ra(e);if(a.push(t),a.err)throw a.msg||j[a.err];return a.result}ra.prototype.push=function(t,e){const a=this.strm,i=this.options.chunkSize,n=this.options.dictionary;let s,r,o;if(this.ended)return!1;for(r=e===~~e?e:!0===e?$e:Ve,"[object ArrayBuffer]"===Qe.call(t)?a.input=new Uint8Array(t):a.input=t,a.next_in=0,a.avail_in=a.input.length;;){for(0===a.avail_out&&(a.output=new Uint8Array(i),a.next_out=0,a.avail_out=i),s=qe.inflate(a,r),s===aa&&n&&(s=qe.inflateSetDictionary(a,n),s===ta?s=qe.inflate(a,r):s===na&&(s=aa));a.avail_in>0&&s===ea&&a.state.wrap>0&&0!==t[a.next_in];)qe.inflateReset(a),s=qe.inflate(a,r);switch(s){case ia:case na:case aa:case sa:return this.onEnd(s),this.ended=!0,!1}if(o=a.avail_out,a.next_out&&(0===a.avail_out||s===ea))if("string"===this.options.to){let t=Wt(a.output,a.next_out),e=a.next_out-t,n=Xt(a.output,t);a.next_out=e,a.avail_out=i-e,e&&a.output.set(a.output.subarray(t,t+e),0),this.onData(n)}else this.onData(a.output.length===a.next_out?a.output:a.output.subarray(0,a.next_out));if(s!==ta||0!==o){if(s===ea)return s=qe.inflateEnd(this.strm),this.onEnd(s),this.ended=!0,!0;if(0===a.avail_in)break}}return!0},ra.prototype.onData=function(t){this.chunks.push(t)},ra.prototype.onEnd=function(t){t===ta&&("string"===this.options.to?this.result=this.chunks.join(""):this.result=Kt(this.chunks)),this.chunks=[],this.err=t,this.msg=this.strm.msg};var la={Inflate:ra,inflate:oa,inflateRaw:function(t,e){return(e=e||{}).raw=!0,oa(t,e)},ungzip:oa,constants:K};const{Deflate:ha,deflate:da,deflateRaw:_a,gzip:fa}=le,{Inflate:ca,inflate:ua,inflateRaw:wa,ungzip:ma}=la;var ba=ha,ga=da,pa=_a,ka=fa,va=ca,ya=ua,xa=wa,za=ma,Aa=K,Ea={Deflate:ba,deflate:ga,deflateRaw:pa,gzip:ka,Inflate:va,inflate:ya,inflateRaw:xa,ungzip:za,constants:Aa};t.Deflate=ba,t.Inflate=va,t.constants=Aa,t.default=Ea,t.deflate=ga,t.deflateRaw=pa,t.gzip=ka,t.inflate=ya,t.inflateRaw=xa,t.ungzip=za,Object.defineProperty(t,"__esModule",{value:!0})})); +/*! pako 2.1.0 https://github.com/nodeca/pako @license (MIT AND Zlib) */ +!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?e(exports):"function"==typeof define&&define.amd?define(["exports"],e):e((t="undefined"!=typeof globalThis?globalThis:t||self).pako={})}(this,(function(t){"use strict";function e(t){let e=t.length;for(;--e>=0;)t[e]=0}const a=256,i=286,n=30,s=15,r=new Uint8Array([0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0]),o=new Uint8Array([0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13]),l=new Uint8Array([0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,3,7]),h=new Uint8Array([16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15]),d=new Array(576);e(d);const _=new Array(60);e(_);const f=new Array(512);e(f);const c=new Array(256);e(c);const u=new Array(29);e(u);const w=new Array(n);function m(t,e,a,i,n){this.static_tree=t,this.extra_bits=e,this.extra_base=a,this.elems=i,this.max_length=n,this.has_stree=t&&t.length}let b,g,p;function k(t,e){this.dyn_tree=t,this.max_code=0,this.stat_desc=e}e(w);const v=t=>t<256?f[t]:f[256+(t>>>7)],y=(t,e)=>{t.pending_buf[t.pending++]=255&e,t.pending_buf[t.pending++]=e>>>8&255},x=(t,e,a)=>{t.bi_valid>16-a?(t.bi_buf|=e<>16-t.bi_valid,t.bi_valid+=a-16):(t.bi_buf|=e<{x(t,a[2*e],a[2*e+1])},A=(t,e)=>{let a=0;do{a|=1&t,t>>>=1,a<<=1}while(--e>0);return a>>>1},E=(t,e,a)=>{const i=new Array(16);let n,r,o=0;for(n=1;n<=s;n++)o=o+a[n-1]<<1,i[n]=o;for(r=0;r<=e;r++){let e=t[2*r+1];0!==e&&(t[2*r]=A(i[e]++,e))}},R=t=>{let e;for(e=0;e{t.bi_valid>8?y(t,t.bi_buf):t.bi_valid>0&&(t.pending_buf[t.pending++]=t.bi_buf),t.bi_buf=0,t.bi_valid=0},U=(t,e,a,i)=>{const n=2*e,s=2*a;return t[n]{const i=t.heap[a];let n=a<<1;for(;n<=t.heap_len&&(n{let n,s,l,h,d=0;if(0!==t.sym_next)do{n=255&t.pending_buf[t.sym_buf+d++],n+=(255&t.pending_buf[t.sym_buf+d++])<<8,s=t.pending_buf[t.sym_buf+d++],0===n?z(t,s,e):(l=c[s],z(t,l+a+1,e),h=r[l],0!==h&&(s-=u[l],x(t,s,h)),n--,l=v(n),z(t,l,i),h=o[l],0!==h&&(n-=w[l],x(t,n,h)))}while(d{const a=e.dyn_tree,i=e.stat_desc.static_tree,n=e.stat_desc.has_stree,r=e.stat_desc.elems;let o,l,h,d=-1;for(t.heap_len=0,t.heap_max=573,o=0;o>1;o>=1;o--)S(t,a,o);h=r;do{o=t.heap[1],t.heap[1]=t.heap[t.heap_len--],S(t,a,1),l=t.heap[1],t.heap[--t.heap_max]=o,t.heap[--t.heap_max]=l,a[2*h]=a[2*o]+a[2*l],t.depth[h]=(t.depth[o]>=t.depth[l]?t.depth[o]:t.depth[l])+1,a[2*o+1]=a[2*l+1]=h,t.heap[1]=h++,S(t,a,1)}while(t.heap_len>=2);t.heap[--t.heap_max]=t.heap[1],((t,e)=>{const a=e.dyn_tree,i=e.max_code,n=e.stat_desc.static_tree,r=e.stat_desc.has_stree,o=e.stat_desc.extra_bits,l=e.stat_desc.extra_base,h=e.stat_desc.max_length;let d,_,f,c,u,w,m=0;for(c=0;c<=s;c++)t.bl_count[c]=0;for(a[2*t.heap[t.heap_max]+1]=0,d=t.heap_max+1;d<573;d++)_=t.heap[d],c=a[2*a[2*_+1]+1]+1,c>h&&(c=h,m++),a[2*_+1]=c,_>i||(t.bl_count[c]++,u=0,_>=l&&(u=o[_-l]),w=a[2*_],t.opt_len+=w*(c+u),r&&(t.static_len+=w*(n[2*_+1]+u)));if(0!==m){do{for(c=h-1;0===t.bl_count[c];)c--;t.bl_count[c]--,t.bl_count[c+1]+=2,t.bl_count[h]--,m-=2}while(m>0);for(c=h;0!==c;c--)for(_=t.bl_count[c];0!==_;)f=t.heap[--d],f>i||(a[2*f+1]!==c&&(t.opt_len+=(c-a[2*f+1])*a[2*f],a[2*f+1]=c),_--)}})(t,e),E(a,d,t.bl_count)},O=(t,e,a)=>{let i,n,s=-1,r=e[1],o=0,l=7,h=4;for(0===r&&(l=138,h=3),e[2*(a+1)+1]=65535,i=0;i<=a;i++)n=r,r=e[2*(i+1)+1],++o{let i,n,s=-1,r=e[1],o=0,l=7,h=4;for(0===r&&(l=138,h=3),i=0;i<=a;i++)if(n=r,r=e[2*(i+1)+1],!(++o{x(t,0+(i?1:0),3),Z(t),y(t,a),y(t,~a),a&&t.pending_buf.set(t.window.subarray(e,e+a),t.pending),t.pending+=a};var N=(t,e,i,n)=>{let s,r,o=0;t.level>0?(2===t.strm.data_type&&(t.strm.data_type=(t=>{let e,i=4093624447;for(e=0;e<=31;e++,i>>>=1)if(1&i&&0!==t.dyn_ltree[2*e])return 0;if(0!==t.dyn_ltree[18]||0!==t.dyn_ltree[20]||0!==t.dyn_ltree[26])return 1;for(e=32;e{let e;for(O(t,t.dyn_ltree,t.l_desc.max_code),O(t,t.dyn_dtree,t.d_desc.max_code),T(t,t.bl_desc),e=18;e>=3&&0===t.bl_tree[2*h[e]+1];e--);return t.opt_len+=3*(e+1)+5+5+4,e})(t),s=t.opt_len+3+7>>>3,r=t.static_len+3+7>>>3,r<=s&&(s=r)):s=r=i+5,i+4<=s&&-1!==e?L(t,e,i,n):4===t.strategy||r===s?(x(t,2+(n?1:0),3),D(t,d,_)):(x(t,4+(n?1:0),3),((t,e,a,i)=>{let n;for(x(t,e-257,5),x(t,a-1,5),x(t,i-4,4),n=0;n{F||((()=>{let t,e,a,h,k;const v=new Array(16);for(a=0,h=0;h<28;h++)for(u[h]=a,t=0;t<1<>=7;h(t.pending_buf[t.sym_buf+t.sym_next++]=e,t.pending_buf[t.sym_buf+t.sym_next++]=e>>8,t.pending_buf[t.sym_buf+t.sym_next++]=i,0===e?t.dyn_ltree[2*i]++:(t.matches++,e--,t.dyn_ltree[2*(c[i]+a+1)]++,t.dyn_dtree[2*v(e)]++),t.sym_next===t.sym_end),_tr_align:t=>{x(t,2,3),z(t,256,d),(t=>{16===t.bi_valid?(y(t,t.bi_buf),t.bi_buf=0,t.bi_valid=0):t.bi_valid>=8&&(t.pending_buf[t.pending++]=255&t.bi_buf,t.bi_buf>>=8,t.bi_valid-=8)})(t)}};var C=(t,e,a,i)=>{let n=65535&t|0,s=t>>>16&65535|0,r=0;for(;0!==a;){r=a>2e3?2e3:a,a-=r;do{n=n+e[i++]|0,s=s+n|0}while(--r);n%=65521,s%=65521}return n|s<<16|0};const M=new Uint32Array((()=>{let t,e=[];for(var a=0;a<256;a++){t=a;for(var i=0;i<8;i++)t=1&t?3988292384^t>>>1:t>>>1;e[a]=t}return e})());var H=(t,e,a,i)=>{const n=M,s=i+a;t^=-1;for(let a=i;a>>8^n[255&(t^e[a])];return-1^t},j={2:"need dictionary",1:"stream end",0:"","-1":"file error","-2":"stream error","-3":"data error","-4":"insufficient memory","-5":"buffer error","-6":"incompatible version"},K={Z_NO_FLUSH:0,Z_PARTIAL_FLUSH:1,Z_SYNC_FLUSH:2,Z_FULL_FLUSH:3,Z_FINISH:4,Z_BLOCK:5,Z_TREES:6,Z_OK:0,Z_STREAM_END:1,Z_NEED_DICT:2,Z_ERRNO:-1,Z_STREAM_ERROR:-2,Z_DATA_ERROR:-3,Z_MEM_ERROR:-4,Z_BUF_ERROR:-5,Z_NO_COMPRESSION:0,Z_BEST_SPEED:1,Z_BEST_COMPRESSION:9,Z_DEFAULT_COMPRESSION:-1,Z_FILTERED:1,Z_HUFFMAN_ONLY:2,Z_RLE:3,Z_FIXED:4,Z_DEFAULT_STRATEGY:0,Z_BINARY:0,Z_TEXT:1,Z_UNKNOWN:2,Z_DEFLATED:8};const{_tr_init:P,_tr_stored_block:Y,_tr_flush_block:G,_tr_tally:X,_tr_align:W}=B,{Z_NO_FLUSH:q,Z_PARTIAL_FLUSH:J,Z_FULL_FLUSH:Q,Z_FINISH:V,Z_BLOCK:$,Z_OK:tt,Z_STREAM_END:et,Z_STREAM_ERROR:at,Z_DATA_ERROR:it,Z_BUF_ERROR:nt,Z_DEFAULT_COMPRESSION:st,Z_FILTERED:rt,Z_HUFFMAN_ONLY:ot,Z_RLE:lt,Z_FIXED:ht,Z_DEFAULT_STRATEGY:dt,Z_UNKNOWN:_t,Z_DEFLATED:ft}=K,ct=258,ut=262,wt=42,mt=113,bt=666,gt=(t,e)=>(t.msg=j[e],e),pt=t=>2*t-(t>4?9:0),kt=t=>{let e=t.length;for(;--e>=0;)t[e]=0},vt=t=>{let e,a,i,n=t.w_size;e=t.hash_size,i=e;do{a=t.head[--i],t.head[i]=a>=n?a-n:0}while(--e);e=n,i=e;do{a=t.prev[--i],t.prev[i]=a>=n?a-n:0}while(--e)};let yt=(t,e,a)=>(e<{const e=t.state;let a=e.pending;a>t.avail_out&&(a=t.avail_out),0!==a&&(t.output.set(e.pending_buf.subarray(e.pending_out,e.pending_out+a),t.next_out),t.next_out+=a,e.pending_out+=a,t.total_out+=a,t.avail_out-=a,e.pending-=a,0===e.pending&&(e.pending_out=0))},zt=(t,e)=>{G(t,t.block_start>=0?t.block_start:-1,t.strstart-t.block_start,e),t.block_start=t.strstart,xt(t.strm)},At=(t,e)=>{t.pending_buf[t.pending++]=e},Et=(t,e)=>{t.pending_buf[t.pending++]=e>>>8&255,t.pending_buf[t.pending++]=255&e},Rt=(t,e,a,i)=>{let n=t.avail_in;return n>i&&(n=i),0===n?0:(t.avail_in-=n,e.set(t.input.subarray(t.next_in,t.next_in+n),a),1===t.state.wrap?t.adler=C(t.adler,e,n,a):2===t.state.wrap&&(t.adler=H(t.adler,e,n,a)),t.next_in+=n,t.total_in+=n,n)},Zt=(t,e)=>{let a,i,n=t.max_chain_length,s=t.strstart,r=t.prev_length,o=t.nice_match;const l=t.strstart>t.w_size-ut?t.strstart-(t.w_size-ut):0,h=t.window,d=t.w_mask,_=t.prev,f=t.strstart+ct;let c=h[s+r-1],u=h[s+r];t.prev_length>=t.good_match&&(n>>=2),o>t.lookahead&&(o=t.lookahead);do{if(a=e,h[a+r]===u&&h[a+r-1]===c&&h[a]===h[s]&&h[++a]===h[s+1]){s+=2,a++;do{}while(h[++s]===h[++a]&&h[++s]===h[++a]&&h[++s]===h[++a]&&h[++s]===h[++a]&&h[++s]===h[++a]&&h[++s]===h[++a]&&h[++s]===h[++a]&&h[++s]===h[++a]&&sr){if(t.match_start=e,r=i,i>=o)break;c=h[s+r-1],u=h[s+r]}}}while((e=_[e&d])>l&&0!=--n);return r<=t.lookahead?r:t.lookahead},Ut=t=>{const e=t.w_size;let a,i,n;do{if(i=t.window_size-t.lookahead-t.strstart,t.strstart>=e+(e-ut)&&(t.window.set(t.window.subarray(e,e+e-i),0),t.match_start-=e,t.strstart-=e,t.block_start-=e,t.insert>t.strstart&&(t.insert=t.strstart),vt(t),i+=e),0===t.strm.avail_in)break;if(a=Rt(t.strm,t.window,t.strstart+t.lookahead,i),t.lookahead+=a,t.lookahead+t.insert>=3)for(n=t.strstart-t.insert,t.ins_h=t.window[n],t.ins_h=yt(t,t.ins_h,t.window[n+1]);t.insert&&(t.ins_h=yt(t,t.ins_h,t.window[n+3-1]),t.prev[n&t.w_mask]=t.head[t.ins_h],t.head[t.ins_h]=n,n++,t.insert--,!(t.lookahead+t.insert<3)););}while(t.lookahead{let a,i,n,s=t.pending_buf_size-5>t.w_size?t.w_size:t.pending_buf_size-5,r=0,o=t.strm.avail_in;do{if(a=65535,n=t.bi_valid+42>>3,t.strm.avail_outi+t.strm.avail_in&&(a=i+t.strm.avail_in),a>n&&(a=n),a>8,t.pending_buf[t.pending-2]=~a,t.pending_buf[t.pending-1]=~a>>8,xt(t.strm),i&&(i>a&&(i=a),t.strm.output.set(t.window.subarray(t.block_start,t.block_start+i),t.strm.next_out),t.strm.next_out+=i,t.strm.avail_out-=i,t.strm.total_out+=i,t.block_start+=i,a-=i),a&&(Rt(t.strm,t.strm.output,t.strm.next_out,a),t.strm.next_out+=a,t.strm.avail_out-=a,t.strm.total_out+=a)}while(0===r);return o-=t.strm.avail_in,o&&(o>=t.w_size?(t.matches=2,t.window.set(t.strm.input.subarray(t.strm.next_in-t.w_size,t.strm.next_in),0),t.strstart=t.w_size,t.insert=t.strstart):(t.window_size-t.strstart<=o&&(t.strstart-=t.w_size,t.window.set(t.window.subarray(t.w_size,t.w_size+t.strstart),0),t.matches<2&&t.matches++,t.insert>t.strstart&&(t.insert=t.strstart)),t.window.set(t.strm.input.subarray(t.strm.next_in-o,t.strm.next_in),t.strstart),t.strstart+=o,t.insert+=o>t.w_size-t.insert?t.w_size-t.insert:o),t.block_start=t.strstart),t.high_watern&&t.block_start>=t.w_size&&(t.block_start-=t.w_size,t.strstart-=t.w_size,t.window.set(t.window.subarray(t.w_size,t.w_size+t.strstart),0),t.matches<2&&t.matches++,n+=t.w_size,t.insert>t.strstart&&(t.insert=t.strstart)),n>t.strm.avail_in&&(n=t.strm.avail_in),n&&(Rt(t.strm,t.window,t.strstart,n),t.strstart+=n,t.insert+=n>t.w_size-t.insert?t.w_size-t.insert:n),t.high_water>3,n=t.pending_buf_size-n>65535?65535:t.pending_buf_size-n,s=n>t.w_size?t.w_size:n,i=t.strstart-t.block_start,(i>=s||(i||e===V)&&e!==q&&0===t.strm.avail_in&&i<=n)&&(a=i>n?n:i,r=e===V&&0===t.strm.avail_in&&a===i?1:0,Y(t,t.block_start,a,r),t.block_start+=a,xt(t.strm)),r?3:1)},Dt=(t,e)=>{let a,i;for(;;){if(t.lookahead=3&&(t.ins_h=yt(t,t.ins_h,t.window[t.strstart+3-1]),a=t.prev[t.strstart&t.w_mask]=t.head[t.ins_h],t.head[t.ins_h]=t.strstart),0!==a&&t.strstart-a<=t.w_size-ut&&(t.match_length=Zt(t,a)),t.match_length>=3)if(i=X(t,t.strstart-t.match_start,t.match_length-3),t.lookahead-=t.match_length,t.match_length<=t.max_lazy_match&&t.lookahead>=3){t.match_length--;do{t.strstart++,t.ins_h=yt(t,t.ins_h,t.window[t.strstart+3-1]),a=t.prev[t.strstart&t.w_mask]=t.head[t.ins_h],t.head[t.ins_h]=t.strstart}while(0!=--t.match_length);t.strstart++}else t.strstart+=t.match_length,t.match_length=0,t.ins_h=t.window[t.strstart],t.ins_h=yt(t,t.ins_h,t.window[t.strstart+1]);else i=X(t,0,t.window[t.strstart]),t.lookahead--,t.strstart++;if(i&&(zt(t,!1),0===t.strm.avail_out))return 1}return t.insert=t.strstart<2?t.strstart:2,e===V?(zt(t,!0),0===t.strm.avail_out?3:4):t.sym_next&&(zt(t,!1),0===t.strm.avail_out)?1:2},Tt=(t,e)=>{let a,i,n;for(;;){if(t.lookahead=3&&(t.ins_h=yt(t,t.ins_h,t.window[t.strstart+3-1]),a=t.prev[t.strstart&t.w_mask]=t.head[t.ins_h],t.head[t.ins_h]=t.strstart),t.prev_length=t.match_length,t.prev_match=t.match_start,t.match_length=2,0!==a&&t.prev_length4096)&&(t.match_length=2)),t.prev_length>=3&&t.match_length<=t.prev_length){n=t.strstart+t.lookahead-3,i=X(t,t.strstart-1-t.prev_match,t.prev_length-3),t.lookahead-=t.prev_length-1,t.prev_length-=2;do{++t.strstart<=n&&(t.ins_h=yt(t,t.ins_h,t.window[t.strstart+3-1]),a=t.prev[t.strstart&t.w_mask]=t.head[t.ins_h],t.head[t.ins_h]=t.strstart)}while(0!=--t.prev_length);if(t.match_available=0,t.match_length=2,t.strstart++,i&&(zt(t,!1),0===t.strm.avail_out))return 1}else if(t.match_available){if(i=X(t,0,t.window[t.strstart-1]),i&&zt(t,!1),t.strstart++,t.lookahead--,0===t.strm.avail_out)return 1}else t.match_available=1,t.strstart++,t.lookahead--}return t.match_available&&(i=X(t,0,t.window[t.strstart-1]),t.match_available=0),t.insert=t.strstart<2?t.strstart:2,e===V?(zt(t,!0),0===t.strm.avail_out?3:4):t.sym_next&&(zt(t,!1),0===t.strm.avail_out)?1:2};function Ot(t,e,a,i,n){this.good_length=t,this.max_lazy=e,this.nice_length=a,this.max_chain=i,this.func=n}const It=[new Ot(0,0,0,0,St),new Ot(4,4,8,4,Dt),new Ot(4,5,16,8,Dt),new Ot(4,6,32,32,Dt),new Ot(4,4,16,16,Tt),new Ot(8,16,32,32,Tt),new Ot(8,16,128,128,Tt),new Ot(8,32,128,256,Tt),new Ot(32,128,258,1024,Tt),new Ot(32,258,258,4096,Tt)];function Ft(){this.strm=null,this.status=0,this.pending_buf=null,this.pending_buf_size=0,this.pending_out=0,this.pending=0,this.wrap=0,this.gzhead=null,this.gzindex=0,this.method=ft,this.last_flush=-1,this.w_size=0,this.w_bits=0,this.w_mask=0,this.window=null,this.window_size=0,this.prev=null,this.head=null,this.ins_h=0,this.hash_size=0,this.hash_bits=0,this.hash_mask=0,this.hash_shift=0,this.block_start=0,this.match_length=0,this.prev_match=0,this.match_available=0,this.strstart=0,this.match_start=0,this.lookahead=0,this.prev_length=0,this.max_chain_length=0,this.max_lazy_match=0,this.level=0,this.strategy=0,this.good_match=0,this.nice_match=0,this.dyn_ltree=new Uint16Array(1146),this.dyn_dtree=new Uint16Array(122),this.bl_tree=new Uint16Array(78),kt(this.dyn_ltree),kt(this.dyn_dtree),kt(this.bl_tree),this.l_desc=null,this.d_desc=null,this.bl_desc=null,this.bl_count=new Uint16Array(16),this.heap=new Uint16Array(573),kt(this.heap),this.heap_len=0,this.heap_max=0,this.depth=new Uint16Array(573),kt(this.depth),this.sym_buf=0,this.lit_bufsize=0,this.sym_next=0,this.sym_end=0,this.opt_len=0,this.static_len=0,this.matches=0,this.insert=0,this.bi_buf=0,this.bi_valid=0}const Lt=t=>{if(!t)return 1;const e=t.state;return!e||e.strm!==t||e.status!==wt&&57!==e.status&&69!==e.status&&73!==e.status&&91!==e.status&&103!==e.status&&e.status!==mt&&e.status!==bt?1:0},Nt=t=>{if(Lt(t))return gt(t,at);t.total_in=t.total_out=0,t.data_type=_t;const e=t.state;return e.pending=0,e.pending_out=0,e.wrap<0&&(e.wrap=-e.wrap),e.status=2===e.wrap?57:e.wrap?wt:mt,t.adler=2===e.wrap?0:1,e.last_flush=-2,P(e),tt},Bt=t=>{const e=Nt(t);var a;return e===tt&&((a=t.state).window_size=2*a.w_size,kt(a.head),a.max_lazy_match=It[a.level].max_lazy,a.good_match=It[a.level].good_length,a.nice_match=It[a.level].nice_length,a.max_chain_length=It[a.level].max_chain,a.strstart=0,a.block_start=0,a.lookahead=0,a.insert=0,a.match_length=a.prev_length=2,a.match_available=0,a.ins_h=0),e},Ct=(t,e,a,i,n,s)=>{if(!t)return at;let r=1;if(e===st&&(e=6),i<0?(r=0,i=-i):i>15&&(r=2,i-=16),n<1||n>9||a!==ft||i<8||i>15||e<0||e>9||s<0||s>ht||8===i&&1!==r)return gt(t,at);8===i&&(i=9);const o=new Ft;return t.state=o,o.strm=t,o.status=wt,o.wrap=r,o.gzhead=null,o.w_bits=i,o.w_size=1<Ct(t,e,ft,15,8,dt),deflateInit2:Ct,deflateReset:Bt,deflateResetKeep:Nt,deflateSetHeader:(t,e)=>Lt(t)||2!==t.state.wrap?at:(t.state.gzhead=e,tt),deflate:(t,e)=>{if(Lt(t)||e>$||e<0)return t?gt(t,at):at;const a=t.state;if(!t.output||0!==t.avail_in&&!t.input||a.status===bt&&e!==V)return gt(t,0===t.avail_out?nt:at);const i=a.last_flush;if(a.last_flush=e,0!==a.pending){if(xt(t),0===t.avail_out)return a.last_flush=-1,tt}else if(0===t.avail_in&&pt(e)<=pt(i)&&e!==V)return gt(t,nt);if(a.status===bt&&0!==t.avail_in)return gt(t,nt);if(a.status===wt&&0===a.wrap&&(a.status=mt),a.status===wt){let e=ft+(a.w_bits-8<<4)<<8,i=-1;if(i=a.strategy>=ot||a.level<2?0:a.level<6?1:6===a.level?2:3,e|=i<<6,0!==a.strstart&&(e|=32),e+=31-e%31,Et(a,e),0!==a.strstart&&(Et(a,t.adler>>>16),Et(a,65535&t.adler)),t.adler=1,a.status=mt,xt(t),0!==a.pending)return a.last_flush=-1,tt}if(57===a.status)if(t.adler=0,At(a,31),At(a,139),At(a,8),a.gzhead)At(a,(a.gzhead.text?1:0)+(a.gzhead.hcrc?2:0)+(a.gzhead.extra?4:0)+(a.gzhead.name?8:0)+(a.gzhead.comment?16:0)),At(a,255&a.gzhead.time),At(a,a.gzhead.time>>8&255),At(a,a.gzhead.time>>16&255),At(a,a.gzhead.time>>24&255),At(a,9===a.level?2:a.strategy>=ot||a.level<2?4:0),At(a,255&a.gzhead.os),a.gzhead.extra&&a.gzhead.extra.length&&(At(a,255&a.gzhead.extra.length),At(a,a.gzhead.extra.length>>8&255)),a.gzhead.hcrc&&(t.adler=H(t.adler,a.pending_buf,a.pending,0)),a.gzindex=0,a.status=69;else if(At(a,0),At(a,0),At(a,0),At(a,0),At(a,0),At(a,9===a.level?2:a.strategy>=ot||a.level<2?4:0),At(a,3),a.status=mt,xt(t),0!==a.pending)return a.last_flush=-1,tt;if(69===a.status){if(a.gzhead.extra){let e=a.pending,i=(65535&a.gzhead.extra.length)-a.gzindex;for(;a.pending+i>a.pending_buf_size;){let n=a.pending_buf_size-a.pending;if(a.pending_buf.set(a.gzhead.extra.subarray(a.gzindex,a.gzindex+n),a.pending),a.pending=a.pending_buf_size,a.gzhead.hcrc&&a.pending>e&&(t.adler=H(t.adler,a.pending_buf,a.pending-e,e)),a.gzindex+=n,xt(t),0!==a.pending)return a.last_flush=-1,tt;e=0,i-=n}let n=new Uint8Array(a.gzhead.extra);a.pending_buf.set(n.subarray(a.gzindex,a.gzindex+i),a.pending),a.pending+=i,a.gzhead.hcrc&&a.pending>e&&(t.adler=H(t.adler,a.pending_buf,a.pending-e,e)),a.gzindex=0}a.status=73}if(73===a.status){if(a.gzhead.name){let e,i=a.pending;do{if(a.pending===a.pending_buf_size){if(a.gzhead.hcrc&&a.pending>i&&(t.adler=H(t.adler,a.pending_buf,a.pending-i,i)),xt(t),0!==a.pending)return a.last_flush=-1,tt;i=0}e=a.gzindexi&&(t.adler=H(t.adler,a.pending_buf,a.pending-i,i)),a.gzindex=0}a.status=91}if(91===a.status){if(a.gzhead.comment){let e,i=a.pending;do{if(a.pending===a.pending_buf_size){if(a.gzhead.hcrc&&a.pending>i&&(t.adler=H(t.adler,a.pending_buf,a.pending-i,i)),xt(t),0!==a.pending)return a.last_flush=-1,tt;i=0}e=a.gzindexi&&(t.adler=H(t.adler,a.pending_buf,a.pending-i,i))}a.status=103}if(103===a.status){if(a.gzhead.hcrc){if(a.pending+2>a.pending_buf_size&&(xt(t),0!==a.pending))return a.last_flush=-1,tt;At(a,255&t.adler),At(a,t.adler>>8&255),t.adler=0}if(a.status=mt,xt(t),0!==a.pending)return a.last_flush=-1,tt}if(0!==t.avail_in||0!==a.lookahead||e!==q&&a.status!==bt){let i=0===a.level?St(a,e):a.strategy===ot?((t,e)=>{let a;for(;;){if(0===t.lookahead&&(Ut(t),0===t.lookahead)){if(e===q)return 1;break}if(t.match_length=0,a=X(t,0,t.window[t.strstart]),t.lookahead--,t.strstart++,a&&(zt(t,!1),0===t.strm.avail_out))return 1}return t.insert=0,e===V?(zt(t,!0),0===t.strm.avail_out?3:4):t.sym_next&&(zt(t,!1),0===t.strm.avail_out)?1:2})(a,e):a.strategy===lt?((t,e)=>{let a,i,n,s;const r=t.window;for(;;){if(t.lookahead<=ct){if(Ut(t),t.lookahead<=ct&&e===q)return 1;if(0===t.lookahead)break}if(t.match_length=0,t.lookahead>=3&&t.strstart>0&&(n=t.strstart-1,i=r[n],i===r[++n]&&i===r[++n]&&i===r[++n])){s=t.strstart+ct;do{}while(i===r[++n]&&i===r[++n]&&i===r[++n]&&i===r[++n]&&i===r[++n]&&i===r[++n]&&i===r[++n]&&i===r[++n]&&nt.lookahead&&(t.match_length=t.lookahead)}if(t.match_length>=3?(a=X(t,1,t.match_length-3),t.lookahead-=t.match_length,t.strstart+=t.match_length,t.match_length=0):(a=X(t,0,t.window[t.strstart]),t.lookahead--,t.strstart++),a&&(zt(t,!1),0===t.strm.avail_out))return 1}return t.insert=0,e===V?(zt(t,!0),0===t.strm.avail_out?3:4):t.sym_next&&(zt(t,!1),0===t.strm.avail_out)?1:2})(a,e):It[a.level].func(a,e);if(3!==i&&4!==i||(a.status=bt),1===i||3===i)return 0===t.avail_out&&(a.last_flush=-1),tt;if(2===i&&(e===J?W(a):e!==$&&(Y(a,0,0,!1),e===Q&&(kt(a.head),0===a.lookahead&&(a.strstart=0,a.block_start=0,a.insert=0))),xt(t),0===t.avail_out))return a.last_flush=-1,tt}return e!==V?tt:a.wrap<=0?et:(2===a.wrap?(At(a,255&t.adler),At(a,t.adler>>8&255),At(a,t.adler>>16&255),At(a,t.adler>>24&255),At(a,255&t.total_in),At(a,t.total_in>>8&255),At(a,t.total_in>>16&255),At(a,t.total_in>>24&255)):(Et(a,t.adler>>>16),Et(a,65535&t.adler)),xt(t),a.wrap>0&&(a.wrap=-a.wrap),0!==a.pending?tt:et)},deflateEnd:t=>{if(Lt(t))return at;const e=t.state.status;return t.state=null,e===mt?gt(t,it):tt},deflateSetDictionary:(t,e)=>{let a=e.length;if(Lt(t))return at;const i=t.state,n=i.wrap;if(2===n||1===n&&i.status!==wt||i.lookahead)return at;if(1===n&&(t.adler=C(t.adler,e,a,0)),i.wrap=0,a>=i.w_size){0===n&&(kt(i.head),i.strstart=0,i.block_start=0,i.insert=0);let t=new Uint8Array(i.w_size);t.set(e.subarray(a-i.w_size,a),0),e=t,a=i.w_size}const s=t.avail_in,r=t.next_in,o=t.input;for(t.avail_in=a,t.next_in=0,t.input=e,Ut(i);i.lookahead>=3;){let t=i.strstart,e=i.lookahead-2;do{i.ins_h=yt(i,i.ins_h,i.window[t+3-1]),i.prev[t&i.w_mask]=i.head[i.ins_h],i.head[i.ins_h]=t,t++}while(--e);i.strstart=t,i.lookahead=2,Ut(i)}return i.strstart+=i.lookahead,i.block_start=i.strstart,i.insert=i.lookahead,i.lookahead=0,i.match_length=i.prev_length=2,i.match_available=0,t.next_in=r,t.input=o,t.avail_in=s,i.wrap=n,tt},deflateInfo:"pako deflate (from Nodeca project)"};const Ht=(t,e)=>Object.prototype.hasOwnProperty.call(t,e);var jt=function(t){const e=Array.prototype.slice.call(arguments,1);for(;e.length;){const a=e.shift();if(a){if("object"!=typeof a)throw new TypeError(a+"must be non-object");for(const e in a)Ht(a,e)&&(t[e]=a[e])}}return t},Kt=t=>{let e=0;for(let a=0,i=t.length;a=252?6:t>=248?5:t>=240?4:t>=224?3:t>=192?2:1;Yt[254]=Yt[254]=1;var Gt=t=>{if("function"==typeof TextEncoder&&TextEncoder.prototype.encode)return(new TextEncoder).encode(t);let e,a,i,n,s,r=t.length,o=0;for(n=0;n>>6,e[s++]=128|63&a):a<65536?(e[s++]=224|a>>>12,e[s++]=128|a>>>6&63,e[s++]=128|63&a):(e[s++]=240|a>>>18,e[s++]=128|a>>>12&63,e[s++]=128|a>>>6&63,e[s++]=128|63&a);return e},Xt=(t,e)=>{const a=e||t.length;if("function"==typeof TextDecoder&&TextDecoder.prototype.decode)return(new TextDecoder).decode(t.subarray(0,e));let i,n;const s=new Array(2*a);for(n=0,i=0;i4)s[n++]=65533,i+=r-1;else{for(e&=2===r?31:3===r?15:7;r>1&&i1?s[n++]=65533:e<65536?s[n++]=e:(e-=65536,s[n++]=55296|e>>10&1023,s[n++]=56320|1023&e)}}return((t,e)=>{if(e<65534&&t.subarray&&Pt)return String.fromCharCode.apply(null,t.length===e?t:t.subarray(0,e));let a="";for(let i=0;i{(e=e||t.length)>t.length&&(e=t.length);let a=e-1;for(;a>=0&&128==(192&t[a]);)a--;return a<0||0===a?e:a+Yt[t[a]]>e?a:e};var qt=function(){this.input=null,this.next_in=0,this.avail_in=0,this.total_in=0,this.output=null,this.next_out=0,this.avail_out=0,this.total_out=0,this.msg="",this.state=null,this.data_type=2,this.adler=0};const Jt=Object.prototype.toString,{Z_NO_FLUSH:Qt,Z_SYNC_FLUSH:Vt,Z_FULL_FLUSH:$t,Z_FINISH:te,Z_OK:ee,Z_STREAM_END:ae,Z_DEFAULT_COMPRESSION:ie,Z_DEFAULT_STRATEGY:ne,Z_DEFLATED:se}=K;function re(t){this.options=jt({level:ie,method:se,chunkSize:16384,windowBits:15,memLevel:8,strategy:ne},t||{});let e=this.options;e.raw&&e.windowBits>0?e.windowBits=-e.windowBits:e.gzip&&e.windowBits>0&&e.windowBits<16&&(e.windowBits+=16),this.err=0,this.msg="",this.ended=!1,this.chunks=[],this.strm=new qt,this.strm.avail_out=0;let a=Mt.deflateInit2(this.strm,e.level,e.method,e.windowBits,e.memLevel,e.strategy);if(a!==ee)throw new Error(j[a]);if(e.header&&Mt.deflateSetHeader(this.strm,e.header),e.dictionary){let t;if(t="string"==typeof e.dictionary?Gt(e.dictionary):"[object ArrayBuffer]"===Jt.call(e.dictionary)?new Uint8Array(e.dictionary):e.dictionary,a=Mt.deflateSetDictionary(this.strm,t),a!==ee)throw new Error(j[a]);this._dict_set=!0}}function oe(t,e){const a=new re(e);if(a.push(t,!0),a.err)throw a.msg||j[a.err];return a.result}re.prototype.push=function(t,e){const a=this.strm,i=this.options.chunkSize;let n,s;if(this.ended)return!1;for(s=e===~~e?e:!0===e?te:Qt,"string"==typeof t?a.input=Gt(t):"[object ArrayBuffer]"===Jt.call(t)?a.input=new Uint8Array(t):a.input=t,a.next_in=0,a.avail_in=a.input.length;;)if(0===a.avail_out&&(a.output=new Uint8Array(i),a.next_out=0,a.avail_out=i),(s===Vt||s===$t)&&a.avail_out<=6)this.onData(a.output.subarray(0,a.next_out)),a.avail_out=0;else{if(n=Mt.deflate(a,s),n===ae)return a.next_out>0&&this.onData(a.output.subarray(0,a.next_out)),n=Mt.deflateEnd(this.strm),this.onEnd(n),this.ended=!0,n===ee;if(0!==a.avail_out){if(s>0&&a.next_out>0)this.onData(a.output.subarray(0,a.next_out)),a.avail_out=0;else if(0===a.avail_in)break}else this.onData(a.output)}return!0},re.prototype.onData=function(t){this.chunks.push(t)},re.prototype.onEnd=function(t){t===ee&&(this.result=Kt(this.chunks)),this.chunks=[],this.err=t,this.msg=this.strm.msg};var le={Deflate:re,deflate:oe,deflateRaw:function(t,e){return(e=e||{}).raw=!0,oe(t,e)},gzip:function(t,e){return(e=e||{}).gzip=!0,oe(t,e)},constants:K};const he=16209;var de=function(t,e){let a,i,n,s,r,o,l,h,d,_,f,c,u,w,m,b,g,p,k,v,y,x,z,A;const E=t.state;a=t.next_in,z=t.input,i=a+(t.avail_in-5),n=t.next_out,A=t.output,s=n-(e-t.avail_out),r=n+(t.avail_out-257),o=E.dmax,l=E.wsize,h=E.whave,d=E.wnext,_=E.window,f=E.hold,c=E.bits,u=E.lencode,w=E.distcode,m=(1<>>24,f>>>=p,c-=p,p=g>>>16&255,0===p)A[n++]=65535&g;else{if(!(16&p)){if(0==(64&p)){g=u[(65535&g)+(f&(1<>>=p,c-=p),c<15&&(f+=z[a++]<>>24,f>>>=p,c-=p,p=g>>>16&255,!(16&p)){if(0==(64&p)){g=w[(65535&g)+(f&(1<o){t.msg="invalid distance too far back",E.mode=he;break t}if(f>>>=p,c-=p,p=n-s,v>p){if(p=v-p,p>h&&E.sane){t.msg="invalid distance too far back",E.mode=he;break t}if(y=0,x=_,0===d){if(y+=l-p,p2;)A[n++]=x[y++],A[n++]=x[y++],A[n++]=x[y++],k-=3;k&&(A[n++]=x[y++],k>1&&(A[n++]=x[y++]))}else{y=n-v;do{A[n++]=A[y++],A[n++]=A[y++],A[n++]=A[y++],k-=3}while(k>2);k&&(A[n++]=A[y++],k>1&&(A[n++]=A[y++]))}break}}break}}while(a>3,a-=k,c-=k<<3,f&=(1<{const l=o.bits;let h,d,_,f,c,u,w=0,m=0,b=0,g=0,p=0,k=0,v=0,y=0,x=0,z=0,A=null;const E=new Uint16Array(16),R=new Uint16Array(16);let Z,U,S,D=null;for(w=0;w<=_e;w++)E[w]=0;for(m=0;m=1&&0===E[g];g--);if(p>g&&(p=g),0===g)return n[s++]=20971520,n[s++]=20971520,o.bits=1,0;for(b=1;b0&&(0===t||1!==g))return-1;for(R[1]=0,w=1;w<_e;w++)R[w+1]=R[w]+E[w];for(m=0;m852||2===t&&x>592)return 1;for(;;){Z=w-v,r[m]+1=u?(U=D[r[m]-u],S=A[r[m]-u]):(U=96,S=0),h=1<>v)+d]=Z<<24|U<<16|S|0}while(0!==d);for(h=1<>=1;if(0!==h?(z&=h-1,z+=h):z=0,m++,0==--E[w]){if(w===g)break;w=e[a+r[m]]}if(w>p&&(z&f)!==_){for(0===v&&(v=p),c+=b,k=w-v,y=1<852||2===t&&x>592)return 1;_=z&f,n[_]=p<<24|k<<16|c-s|0}}return 0!==z&&(n[c+z]=w-v<<24|64<<16|0),o.bits=p,0};const{Z_FINISH:be,Z_BLOCK:ge,Z_TREES:pe,Z_OK:ke,Z_STREAM_END:ve,Z_NEED_DICT:ye,Z_STREAM_ERROR:xe,Z_DATA_ERROR:ze,Z_MEM_ERROR:Ae,Z_BUF_ERROR:Ee,Z_DEFLATED:Re}=K,Ze=16180,Ue=16190,Se=16191,De=16192,Te=16194,Oe=16199,Ie=16200,Fe=16206,Le=16209,Ne=t=>(t>>>24&255)+(t>>>8&65280)+((65280&t)<<8)+((255&t)<<24);function Be(){this.strm=null,this.mode=0,this.last=!1,this.wrap=0,this.havedict=!1,this.flags=0,this.dmax=0,this.check=0,this.total=0,this.head=null,this.wbits=0,this.wsize=0,this.whave=0,this.wnext=0,this.window=null,this.hold=0,this.bits=0,this.length=0,this.offset=0,this.extra=0,this.lencode=null,this.distcode=null,this.lenbits=0,this.distbits=0,this.ncode=0,this.nlen=0,this.ndist=0,this.have=0,this.next=null,this.lens=new Uint16Array(320),this.work=new Uint16Array(288),this.lendyn=null,this.distdyn=null,this.sane=0,this.back=0,this.was=0}const Ce=t=>{if(!t)return 1;const e=t.state;return!e||e.strm!==t||e.mode16211?1:0},Me=t=>{if(Ce(t))return xe;const e=t.state;return t.total_in=t.total_out=e.total=0,t.msg="",e.wrap&&(t.adler=1&e.wrap),e.mode=Ze,e.last=0,e.havedict=0,e.flags=-1,e.dmax=32768,e.head=null,e.hold=0,e.bits=0,e.lencode=e.lendyn=new Int32Array(852),e.distcode=e.distdyn=new Int32Array(592),e.sane=1,e.back=-1,ke},He=t=>{if(Ce(t))return xe;const e=t.state;return e.wsize=0,e.whave=0,e.wnext=0,Me(t)},je=(t,e)=>{let a;if(Ce(t))return xe;const i=t.state;return e<0?(a=0,e=-e):(a=5+(e>>4),e<48&&(e&=15)),e&&(e<8||e>15)?xe:(null!==i.window&&i.wbits!==e&&(i.window=null),i.wrap=a,i.wbits=e,He(t))},Ke=(t,e)=>{if(!t)return xe;const a=new Be;t.state=a,a.strm=t,a.window=null,a.mode=Ze;const i=je(t,e);return i!==ke&&(t.state=null),i};let Pe,Ye,Ge=!0;const Xe=t=>{if(Ge){Pe=new Int32Array(512),Ye=new Int32Array(32);let e=0;for(;e<144;)t.lens[e++]=8;for(;e<256;)t.lens[e++]=9;for(;e<280;)t.lens[e++]=7;for(;e<288;)t.lens[e++]=8;for(me(1,t.lens,0,288,Pe,0,t.work,{bits:9}),e=0;e<32;)t.lens[e++]=5;me(2,t.lens,0,32,Ye,0,t.work,{bits:5}),Ge=!1}t.lencode=Pe,t.lenbits=9,t.distcode=Ye,t.distbits=5},We=(t,e,a,i)=>{let n;const s=t.state;return null===s.window&&(s.wsize=1<=s.wsize?(s.window.set(e.subarray(a-s.wsize,a),0),s.wnext=0,s.whave=s.wsize):(n=s.wsize-s.wnext,n>i&&(n=i),s.window.set(e.subarray(a-i,a-i+n),s.wnext),(i-=n)?(s.window.set(e.subarray(a-i,a),0),s.wnext=i,s.whave=s.wsize):(s.wnext+=n,s.wnext===s.wsize&&(s.wnext=0),s.whaveKe(t,15),inflateInit2:Ke,inflate:(t,e)=>{let a,i,n,s,r,o,l,h,d,_,f,c,u,w,m,b,g,p,k,v,y,x,z=0;const A=new Uint8Array(4);let E,R;const Z=new Uint8Array([16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15]);if(Ce(t)||!t.output||!t.input&&0!==t.avail_in)return xe;a=t.state,a.mode===Se&&(a.mode=De),r=t.next_out,n=t.output,l=t.avail_out,s=t.next_in,i=t.input,o=t.avail_in,h=a.hold,d=a.bits,_=o,f=l,x=ke;t:for(;;)switch(a.mode){case Ze:if(0===a.wrap){a.mode=De;break}for(;d<16;){if(0===o)break t;o--,h+=i[s++]<>>8&255,a.check=H(a.check,A,2,0),h=0,d=0,a.mode=16181;break}if(a.head&&(a.head.done=!1),!(1&a.wrap)||(((255&h)<<8)+(h>>8))%31){t.msg="incorrect header check",a.mode=Le;break}if((15&h)!==Re){t.msg="unknown compression method",a.mode=Le;break}if(h>>>=4,d-=4,y=8+(15&h),0===a.wbits&&(a.wbits=y),y>15||y>a.wbits){t.msg="invalid window size",a.mode=Le;break}a.dmax=1<>8&1),512&a.flags&&4&a.wrap&&(A[0]=255&h,A[1]=h>>>8&255,a.check=H(a.check,A,2,0)),h=0,d=0,a.mode=16182;case 16182:for(;d<32;){if(0===o)break t;o--,h+=i[s++]<>>8&255,A[2]=h>>>16&255,A[3]=h>>>24&255,a.check=H(a.check,A,4,0)),h=0,d=0,a.mode=16183;case 16183:for(;d<16;){if(0===o)break t;o--,h+=i[s++]<>8),512&a.flags&&4&a.wrap&&(A[0]=255&h,A[1]=h>>>8&255,a.check=H(a.check,A,2,0)),h=0,d=0,a.mode=16184;case 16184:if(1024&a.flags){for(;d<16;){if(0===o)break t;o--,h+=i[s++]<>>8&255,a.check=H(a.check,A,2,0)),h=0,d=0}else a.head&&(a.head.extra=null);a.mode=16185;case 16185:if(1024&a.flags&&(c=a.length,c>o&&(c=o),c&&(a.head&&(y=a.head.extra_len-a.length,a.head.extra||(a.head.extra=new Uint8Array(a.head.extra_len)),a.head.extra.set(i.subarray(s,s+c),y)),512&a.flags&&4&a.wrap&&(a.check=H(a.check,i,c,s)),o-=c,s+=c,a.length-=c),a.length))break t;a.length=0,a.mode=16186;case 16186:if(2048&a.flags){if(0===o)break t;c=0;do{y=i[s+c++],a.head&&y&&a.length<65536&&(a.head.name+=String.fromCharCode(y))}while(y&&c>9&1,a.head.done=!0),t.adler=a.check=0,a.mode=Se;break;case 16189:for(;d<32;){if(0===o)break t;o--,h+=i[s++]<>>=7&d,d-=7&d,a.mode=Fe;break}for(;d<3;){if(0===o)break t;o--,h+=i[s++]<>>=1,d-=1,3&h){case 0:a.mode=16193;break;case 1:if(Xe(a),a.mode=Oe,e===pe){h>>>=2,d-=2;break t}break;case 2:a.mode=16196;break;case 3:t.msg="invalid block type",a.mode=Le}h>>>=2,d-=2;break;case 16193:for(h>>>=7&d,d-=7&d;d<32;){if(0===o)break t;o--,h+=i[s++]<>>16^65535)){t.msg="invalid stored block lengths",a.mode=Le;break}if(a.length=65535&h,h=0,d=0,a.mode=Te,e===pe)break t;case Te:a.mode=16195;case 16195:if(c=a.length,c){if(c>o&&(c=o),c>l&&(c=l),0===c)break t;n.set(i.subarray(s,s+c),r),o-=c,s+=c,l-=c,r+=c,a.length-=c;break}a.mode=Se;break;case 16196:for(;d<14;){if(0===o)break t;o--,h+=i[s++]<>>=5,d-=5,a.ndist=1+(31&h),h>>>=5,d-=5,a.ncode=4+(15&h),h>>>=4,d-=4,a.nlen>286||a.ndist>30){t.msg="too many length or distance symbols",a.mode=Le;break}a.have=0,a.mode=16197;case 16197:for(;a.have>>=3,d-=3}for(;a.have<19;)a.lens[Z[a.have++]]=0;if(a.lencode=a.lendyn,a.lenbits=7,E={bits:a.lenbits},x=me(0,a.lens,0,19,a.lencode,0,a.work,E),a.lenbits=E.bits,x){t.msg="invalid code lengths set",a.mode=Le;break}a.have=0,a.mode=16198;case 16198:for(;a.have>>24,b=z>>>16&255,g=65535&z,!(m<=d);){if(0===o)break t;o--,h+=i[s++]<>>=m,d-=m,a.lens[a.have++]=g;else{if(16===g){for(R=m+2;d>>=m,d-=m,0===a.have){t.msg="invalid bit length repeat",a.mode=Le;break}y=a.lens[a.have-1],c=3+(3&h),h>>>=2,d-=2}else if(17===g){for(R=m+3;d>>=m,d-=m,y=0,c=3+(7&h),h>>>=3,d-=3}else{for(R=m+7;d>>=m,d-=m,y=0,c=11+(127&h),h>>>=7,d-=7}if(a.have+c>a.nlen+a.ndist){t.msg="invalid bit length repeat",a.mode=Le;break}for(;c--;)a.lens[a.have++]=y}}if(a.mode===Le)break;if(0===a.lens[256]){t.msg="invalid code -- missing end-of-block",a.mode=Le;break}if(a.lenbits=9,E={bits:a.lenbits},x=me(1,a.lens,0,a.nlen,a.lencode,0,a.work,E),a.lenbits=E.bits,x){t.msg="invalid literal/lengths set",a.mode=Le;break}if(a.distbits=6,a.distcode=a.distdyn,E={bits:a.distbits},x=me(2,a.lens,a.nlen,a.ndist,a.distcode,0,a.work,E),a.distbits=E.bits,x){t.msg="invalid distances set",a.mode=Le;break}if(a.mode=Oe,e===pe)break t;case Oe:a.mode=Ie;case Ie:if(o>=6&&l>=258){t.next_out=r,t.avail_out=l,t.next_in=s,t.avail_in=o,a.hold=h,a.bits=d,de(t,f),r=t.next_out,n=t.output,l=t.avail_out,s=t.next_in,i=t.input,o=t.avail_in,h=a.hold,d=a.bits,a.mode===Se&&(a.back=-1);break}for(a.back=0;z=a.lencode[h&(1<>>24,b=z>>>16&255,g=65535&z,!(m<=d);){if(0===o)break t;o--,h+=i[s++]<>p)],m=z>>>24,b=z>>>16&255,g=65535&z,!(p+m<=d);){if(0===o)break t;o--,h+=i[s++]<>>=p,d-=p,a.back+=p}if(h>>>=m,d-=m,a.back+=m,a.length=g,0===b){a.mode=16205;break}if(32&b){a.back=-1,a.mode=Se;break}if(64&b){t.msg="invalid literal/length code",a.mode=Le;break}a.extra=15&b,a.mode=16201;case 16201:if(a.extra){for(R=a.extra;d>>=a.extra,d-=a.extra,a.back+=a.extra}a.was=a.length,a.mode=16202;case 16202:for(;z=a.distcode[h&(1<>>24,b=z>>>16&255,g=65535&z,!(m<=d);){if(0===o)break t;o--,h+=i[s++]<>p)],m=z>>>24,b=z>>>16&255,g=65535&z,!(p+m<=d);){if(0===o)break t;o--,h+=i[s++]<>>=p,d-=p,a.back+=p}if(h>>>=m,d-=m,a.back+=m,64&b){t.msg="invalid distance code",a.mode=Le;break}a.offset=g,a.extra=15&b,a.mode=16203;case 16203:if(a.extra){for(R=a.extra;d>>=a.extra,d-=a.extra,a.back+=a.extra}if(a.offset>a.dmax){t.msg="invalid distance too far back",a.mode=Le;break}a.mode=16204;case 16204:if(0===l)break t;if(c=f-l,a.offset>c){if(c=a.offset-c,c>a.whave&&a.sane){t.msg="invalid distance too far back",a.mode=Le;break}c>a.wnext?(c-=a.wnext,u=a.wsize-c):u=a.wnext-c,c>a.length&&(c=a.length),w=a.window}else w=n,u=r-a.offset,c=a.length;c>l&&(c=l),l-=c,a.length-=c;do{n[r++]=w[u++]}while(--c);0===a.length&&(a.mode=Ie);break;case 16205:if(0===l)break t;n[r++]=a.length,l--,a.mode=Ie;break;case Fe:if(a.wrap){for(;d<32;){if(0===o)break t;o--,h|=i[s++]<{if(Ce(t))return xe;let e=t.state;return e.window&&(e.window=null),t.state=null,ke},inflateGetHeader:(t,e)=>{if(Ce(t))return xe;const a=t.state;return 0==(2&a.wrap)?xe:(a.head=e,e.done=!1,ke)},inflateSetDictionary:(t,e)=>{const a=e.length;let i,n,s;return Ce(t)?xe:(i=t.state,0!==i.wrap&&i.mode!==Ue?xe:i.mode===Ue&&(n=1,n=C(n,e,a,0),n!==i.check)?ze:(s=We(t,e,a,a),s?(i.mode=16210,Ae):(i.havedict=1,ke)))},inflateInfo:"pako inflate (from Nodeca project)"};var Je=function(){this.text=0,this.time=0,this.xflags=0,this.os=0,this.extra=null,this.extra_len=0,this.name="",this.comment="",this.hcrc=0,this.done=!1};const Qe=Object.prototype.toString,{Z_NO_FLUSH:Ve,Z_FINISH:$e,Z_OK:ta,Z_STREAM_END:ea,Z_NEED_DICT:aa,Z_STREAM_ERROR:ia,Z_DATA_ERROR:na,Z_MEM_ERROR:sa}=K;function ra(t){this.options=jt({chunkSize:65536,windowBits:15,to:""},t||{});const e=this.options;e.raw&&e.windowBits>=0&&e.windowBits<16&&(e.windowBits=-e.windowBits,0===e.windowBits&&(e.windowBits=-15)),!(e.windowBits>=0&&e.windowBits<16)||t&&t.windowBits||(e.windowBits+=32),e.windowBits>15&&e.windowBits<48&&0==(15&e.windowBits)&&(e.windowBits|=15),this.err=0,this.msg="",this.ended=!1,this.chunks=[],this.strm=new qt,this.strm.avail_out=0;let a=qe.inflateInit2(this.strm,e.windowBits);if(a!==ta)throw new Error(j[a]);if(this.header=new Je,qe.inflateGetHeader(this.strm,this.header),e.dictionary&&("string"==typeof e.dictionary?e.dictionary=Gt(e.dictionary):"[object ArrayBuffer]"===Qe.call(e.dictionary)&&(e.dictionary=new Uint8Array(e.dictionary)),e.raw&&(a=qe.inflateSetDictionary(this.strm,e.dictionary),a!==ta)))throw new Error(j[a])}function oa(t,e){const a=new ra(e);if(a.push(t),a.err)throw a.msg||j[a.err];return a.result}ra.prototype.push=function(t,e){const a=this.strm,i=this.options.chunkSize,n=this.options.dictionary;let s,r,o;if(this.ended)return!1;for(r=e===~~e?e:!0===e?$e:Ve,"[object ArrayBuffer]"===Qe.call(t)?a.input=new Uint8Array(t):a.input=t,a.next_in=0,a.avail_in=a.input.length;;){for(0===a.avail_out&&(a.output=new Uint8Array(i),a.next_out=0,a.avail_out=i),s=qe.inflate(a,r),s===aa&&n&&(s=qe.inflateSetDictionary(a,n),s===ta?s=qe.inflate(a,r):s===na&&(s=aa));a.avail_in>0&&s===ea&&a.state.wrap>0&&0!==t[a.next_in];)qe.inflateReset(a),s=qe.inflate(a,r);switch(s){case ia:case na:case aa:case sa:return this.onEnd(s),this.ended=!0,!1}if(o=a.avail_out,a.next_out&&(0===a.avail_out||s===ea))if("string"===this.options.to){let t=Wt(a.output,a.next_out),e=a.next_out-t,n=Xt(a.output,t);a.next_out=e,a.avail_out=i-e,e&&a.output.set(a.output.subarray(t,t+e),0),this.onData(n)}else this.onData(a.output.length===a.next_out?a.output:a.output.subarray(0,a.next_out));if(s!==ta||0!==o){if(s===ea)return s=qe.inflateEnd(this.strm),this.onEnd(s),this.ended=!0,!0;if(0===a.avail_in)break}}return!0},ra.prototype.onData=function(t){this.chunks.push(t)},ra.prototype.onEnd=function(t){t===ta&&("string"===this.options.to?this.result=this.chunks.join(""):this.result=Kt(this.chunks)),this.chunks=[],this.err=t,this.msg=this.strm.msg};var la={Inflate:ra,inflate:oa,inflateRaw:function(t,e){return(e=e||{}).raw=!0,oa(t,e)},ungzip:oa,constants:K};const{Deflate:ha,deflate:da,deflateRaw:_a,gzip:fa}=le,{Inflate:ca,inflate:ua,inflateRaw:wa,ungzip:ma}=la;var ba=ha,ga=da,pa=_a,ka=fa,va=ca,ya=ua,xa=wa,za=ma,Aa=K,Ea={Deflate:ba,deflate:ga,deflateRaw:pa,gzip:ka,Inflate:va,inflate:ya,inflateRaw:xa,ungzip:za,constants:Aa};t.Deflate=ba,t.Inflate=va,t.constants=Aa,t.default=Ea,t.deflate=ga,t.deflateRaw=pa,t.gzip=ka,t.inflate=ya,t.inflateRaw=xa,t.ungzip=za,Object.defineProperty(t,"__esModule",{value:!0})})); + diff --git a/src/frontend/static/script/pyshelf.ts b/src/frontend/static/script/pyshelf.ts new file mode 100644 index 0000000..b5fc42c --- /dev/null +++ b/src/frontend/static/script/pyshelf.ts @@ -0,0 +1,51 @@ +function getScreenSize() { + return { + width: window.innerWidth, + height: window.innerHeight + }; +} + +function sizeMaster() { + var size = getScreenSize(); + var navbar = $('#navbar-main').height(); + var footer = $('#footer-main').height(); + var master = $('#master').height(size.height - navbar - footer); +} + +function getParams() { + var url = window.location.href; + var params = url.split('?')[1]; + if (params) { + var paramstr = params.split('&'); + var paramsObj = {}; + for (var i = 0; i < paramstr.length; i++) { + var param = paramstr[i].split('='); + paramsObj[param[0]] = param[1]; + } + return paramsObj; + } + return null; +} + +function localStorePutTest(data) { + console.log('localStorePutTest'); + localStorage.setItem('test', JSON.stringify(data)); +} + +function localStoreGetTest() { + console.log('localStoreGetTest'); + console.log(localStorage.getItem('test')); +} + +$(document).ready(function() { + console.log(getParams()); + $(".navbar-burger").click(function(){ + $(".navbar-burger").toggleClass("is-active"); + $(".navbar-menu").toggleClass("is-active"); + }); + + sizeMaster(); + $(window).on('resize', function() { + sizeMaster(); + }); +}) diff --git a/src/frontend/static/styles/bulma.css b/src/frontend/static/styles/bulma.css new file mode 100644 index 0000000..6df0c1c --- /dev/null +++ b/src/frontend/static/styles/bulma.css @@ -0,0 +1,3 @@ +/*! bulma.io v0.9.4 | MIT License | github.com/jgthms/bulma */.pagination-previous,.pagination-next,.pagination-link,.pagination-ellipsis,.file-cta,.file-name,.select select,.textarea,.input,.button{-moz-appearance:none;-webkit-appearance:none;align-items:center;border:1px solid transparent;border-radius:4px;box-shadow:none;display:inline-flex;font-size:1rem;height:2.5em;justify-content:flex-start;line-height:1.5;padding-bottom:calc(0.5em - 1px);padding-left:calc(0.75em - 1px);padding-right:calc(0.75em - 1px);padding-top:calc(0.5em - 1px);position:relative;vertical-align:top}.pagination-previous:focus,.pagination-next:focus,.pagination-link:focus,.pagination-ellipsis:focus,.file-cta:focus,.file-name:focus,.select select:focus,.textarea:focus,.input:focus,.button:focus,.is-focused.pagination-previous,.is-focused.pagination-next,.is-focused.pagination-link,.is-focused.pagination-ellipsis,.is-focused.file-cta,.is-focused.file-name,.select select.is-focused,.is-focused.textarea,.is-focused.input,.is-focused.button,.pagination-previous:active,.pagination-next:active,.pagination-link:active,.pagination-ellipsis:active,.file-cta:active,.file-name:active,.select select:active,.textarea:active,.input:active,.button:active,.is-active.pagination-previous,.is-active.pagination-next,.is-active.pagination-link,.is-active.pagination-ellipsis,.is-active.file-cta,.is-active.file-name,.select select.is-active,.is-active.textarea,.is-active.input,.is-active.button{outline:none}[disabled].pagination-previous,[disabled].pagination-next,[disabled].pagination-link,[disabled].pagination-ellipsis,[disabled].file-cta,[disabled].file-name,.select select[disabled],[disabled].textarea,[disabled].input,[disabled].button,fieldset[disabled] .pagination-previous,fieldset[disabled] .pagination-next,fieldset[disabled] .pagination-link,fieldset[disabled] .pagination-ellipsis,fieldset[disabled] .file-cta,fieldset[disabled] .file-name,fieldset[disabled] .select select,.select fieldset[disabled] select,fieldset[disabled] .textarea,fieldset[disabled] .input,fieldset[disabled] .button{cursor:not-allowed}.is-unselectable,.tabs,.pagination-previous,.pagination-next,.pagination-link,.pagination-ellipsis,.breadcrumb,.file,.button{-webkit-touch-callout:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.navbar-link:not(.is-arrowless)::after,.select:not(.is-multiple):not(.is-loading)::after{border:3px solid rgba(0,0,0,0);border-radius:2px;border-right:0;border-top:0;content:" ";display:block;height:0.625em;margin-top:-0.4375em;pointer-events:none;position:absolute;top:50%;transform:rotate(-45deg);transform-origin:center;width:0.625em}.tabs:not(:last-child),.pagination:not(:last-child),.message:not(:last-child),.level:not(:last-child),.breadcrumb:not(:last-child),.block:not(:last-child),.title:not(:last-child),.subtitle:not(:last-child),.table-container:not(:last-child),.table:not(:last-child),.progress:not(:last-child),.notification:not(:last-child),.content:not(:last-child),.box:not(:last-child){margin-bottom:1.5rem}.modal-close,.delete{-webkit-touch-callout:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;-moz-appearance:none;-webkit-appearance:none;background-color:rgba(10,10,10,0.2);border:none;border-radius:9999px;cursor:pointer;pointer-events:auto;display:inline-block;flex-grow:0;flex-shrink:0;font-size:0;height:20px;max-height:20px;max-width:20px;min-height:20px;min-width:20px;outline:none;position:relative;vertical-align:top;width:20px}.modal-close::before,.delete::before,.modal-close::after,.delete::after{background-color:#fff;content:"";display:block;left:50%;position:absolute;top:50%;transform:translateX(-50%) translateY(-50%) rotate(45deg);transform-origin:center center}.modal-close::before,.delete::before{height:2px;width:50%}.modal-close::after,.delete::after{height:50%;width:2px}.modal-close:hover,.delete:hover,.modal-close:focus,.delete:focus{background-color:rgba(10,10,10,0.3)}.modal-close:active,.delete:active{background-color:rgba(10,10,10,0.4)}.is-small.modal-close,.is-small.delete{height:16px;max-height:16px;max-width:16px;min-height:16px;min-width:16px;width:16px}.is-medium.modal-close,.is-medium.delete{height:24px;max-height:24px;max-width:24px;min-height:24px;min-width:24px;width:24px}.is-large.modal-close,.is-large.delete{height:32px;max-height:32px;max-width:32px;min-height:32px;min-width:32px;width:32px}.control.is-loading::after,.select.is-loading::after,.loader,.button.is-loading::after{animation:spinAround 500ms infinite linear;border:2px solid #dbdbdb;border-radius:9999px;border-right-color:transparent;border-top-color:transparent;content:"";display:block;height:1em;position:relative;width:1em}.hero-video,.is-overlay,.modal-background,.modal,.image.is-square img,.image.is-square .has-ratio,.image.is-1by1 img,.image.is-1by1 .has-ratio,.image.is-5by4 img,.image.is-5by4 .has-ratio,.image.is-4by3 img,.image.is-4by3 .has-ratio,.image.is-3by2 img,.image.is-3by2 .has-ratio,.image.is-5by3 img,.image.is-5by3 .has-ratio,.image.is-16by9 img,.image.is-16by9 .has-ratio,.image.is-2by1 img,.image.is-2by1 .has-ratio,.image.is-3by1 img,.image.is-3by1 .has-ratio,.image.is-4by5 img,.image.is-4by5 .has-ratio,.image.is-3by4 img,.image.is-3by4 .has-ratio,.image.is-2by3 img,.image.is-2by3 .has-ratio,.image.is-3by5 img,.image.is-3by5 .has-ratio,.image.is-9by16 img,.image.is-9by16 .has-ratio,.image.is-1by2 img,.image.is-1by2 .has-ratio,.image.is-1by3 img,.image.is-1by3 .has-ratio{bottom:0;left:0;position:absolute;right:0;top:0}.navbar-burger{-moz-appearance:none;-webkit-appearance:none;appearance:none;background:none;border:none;color:currentColor;font-family:inherit;font-size:1em;margin:0;padding:0}/*! minireset.css v0.0.6 | MIT License | github.com/jgthms/minireset.css */html,body,p,ol,ul,li,dl,dt,dd,blockquote,figure,fieldset,legend,textarea,pre,iframe,hr,h1,h2,h3,h4,h5,h6{margin:0;padding:0}h1,h2,h3,h4,h5,h6{font-size:100%;font-weight:normal}ul{list-style:none}button,input,select,textarea{margin:0}html{box-sizing:border-box}*,*::before,*::after{box-sizing:inherit}img,video{height:auto;max-width:100%}iframe{border:0}table{border-collapse:collapse;border-spacing:0}td,th{padding:0}td:not([align]),th:not([align]){text-align:inherit}html{background-color:#fff;font-size:16px;-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;min-width:300px;overflow-x:hidden;overflow-y:scroll;text-rendering:optimizeLegibility;text-size-adjust:100%}article,aside,figure,footer,header,hgroup,section{display:block}body,button,input,optgroup,select,textarea{font-family:BlinkMacSystemFont,-apple-system,"Segoe UI","Roboto","Oxygen","Ubuntu","Cantarell","Fira Sans","Droid Sans","Helvetica Neue","Helvetica","Arial",sans-serif}code,pre{-moz-osx-font-smoothing:auto;-webkit-font-smoothing:auto;font-family:monospace}body{color:#4a4a4a;font-size:1em;font-weight:400;line-height:1.5}a{color:#485fc7;cursor:pointer;text-decoration:none}a strong{color:currentColor}a:hover{color:#363636}code{background-color:#f5f5f5;color:#da1039;font-size:.875em;font-weight:normal;padding:0.25em 0.5em 0.25em}hr{background-color:#f5f5f5;border:none;display:block;height:2px;margin:1.5rem 0}img{height:auto;max-width:100%}input[type="checkbox"],input[type="radio"]{vertical-align:baseline}small{font-size:.875em}span{font-style:inherit;font-weight:inherit}strong{color:#363636;font-weight:700}fieldset{border:none}pre{-webkit-overflow-scrolling:touch;background-color:#f5f5f5;color:#4a4a4a;font-size:.875em;overflow-x:auto;padding:1.25rem 1.5rem;white-space:pre;word-wrap:normal}pre code{background-color:transparent;color:currentColor;font-size:1em;padding:0}table td,table th{vertical-align:top}table td:not([align]),table th:not([align]){text-align:inherit}table th{color:#363636}@keyframes spinAround{from{transform:rotate(0deg)}to{transform:rotate(359deg)}}.box{background-color:#fff;border-radius:6px;box-shadow:0 0.5em 1em -0.125em rgba(10,10,10,0.1),0 0px 0 1px rgba(10,10,10,0.02);color:#4a4a4a;display:block;padding:1.25rem}a.box:hover,a.box:focus{box-shadow:0 0.5em 1em -0.125em rgba(10,10,10,0.1),0 0 0 1px #485fc7}a.box:active{box-shadow:inset 0 1px 2px rgba(10,10,10,0.2),0 0 0 1px #485fc7}.button{background-color:#fff;border-color:#dbdbdb;border-width:1px;color:#363636;cursor:pointer;justify-content:center;padding-bottom:calc(0.5em - 1px);padding-left:1em;padding-right:1em;padding-top:calc(0.5em - 1px);text-align:center;white-space:nowrap}.button strong{color:inherit}.button .icon,.button .icon.is-small,.button .icon.is-medium,.button .icon.is-large{height:1.5em;width:1.5em}.button .icon:first-child:not(:last-child){margin-left:calc(-0.5em - 1px);margin-right:.25em}.button .icon:last-child:not(:first-child){margin-left:.25em;margin-right:calc(-0.5em - 1px)}.button .icon:first-child:last-child{margin-left:calc(-0.5em - 1px);margin-right:calc(-0.5em - 1px)}.button:hover,.button.is-hovered{border-color:#b5b5b5;color:#363636}.button:focus,.button.is-focused{border-color:#485fc7;color:#363636}.button:focus:not(:active),.button.is-focused:not(:active){box-shadow:0 0 0 0.125em rgba(72,95,199,0.25)}.button:active,.button.is-active{border-color:#4a4a4a;color:#363636}.button.is-text{background-color:transparent;border-color:transparent;color:#4a4a4a;text-decoration:underline}.button.is-text:hover,.button.is-text.is-hovered,.button.is-text:focus,.button.is-text.is-focused{background-color:#f5f5f5;color:#363636}.button.is-text:active,.button.is-text.is-active{background-color:#e8e8e8;color:#363636}.button.is-text[disabled],fieldset[disabled] .button.is-text{background-color:transparent;border-color:transparent;box-shadow:none}.button.is-ghost{background:none;border-color:rgba(0,0,0,0);color:#485fc7;text-decoration:none}.button.is-ghost:hover,.button.is-ghost.is-hovered{color:#485fc7;text-decoration:underline}.button.is-white{background-color:#fff;border-color:transparent;color:#0a0a0a}.button.is-white:hover,.button.is-white.is-hovered{background-color:#f9f9f9;border-color:transparent;color:#0a0a0a}.button.is-white:focus,.button.is-white.is-focused{border-color:transparent;color:#0a0a0a}.button.is-white:focus:not(:active),.button.is-white.is-focused:not(:active){box-shadow:0 0 0 0.125em rgba(255,255,255,0.25)}.button.is-white:active,.button.is-white.is-active{background-color:#f2f2f2;border-color:transparent;color:#0a0a0a}.button.is-white[disabled],fieldset[disabled] .button.is-white{background-color:#fff;border-color:#fff;box-shadow:none}.button.is-white.is-inverted{background-color:#0a0a0a;color:#fff}.button.is-white.is-inverted:hover,.button.is-white.is-inverted.is-hovered{background-color:#000}.button.is-white.is-inverted[disabled],fieldset[disabled] .button.is-white.is-inverted{background-color:#0a0a0a;border-color:transparent;box-shadow:none;color:#fff}.button.is-white.is-loading::after{border-color:transparent transparent #0a0a0a #0a0a0a !important}.button.is-white.is-outlined{background-color:transparent;border-color:#fff;color:#fff}.button.is-white.is-outlined:hover,.button.is-white.is-outlined.is-hovered,.button.is-white.is-outlined:focus,.button.is-white.is-outlined.is-focused{background-color:#fff;border-color:#fff;color:#0a0a0a}.button.is-white.is-outlined.is-loading::after{border-color:transparent transparent #fff #fff !important}.button.is-white.is-outlined.is-loading:hover::after,.button.is-white.is-outlined.is-loading.is-hovered::after,.button.is-white.is-outlined.is-loading:focus::after,.button.is-white.is-outlined.is-loading.is-focused::after{border-color:transparent transparent #0a0a0a #0a0a0a !important}.button.is-white.is-outlined[disabled],fieldset[disabled] .button.is-white.is-outlined{background-color:transparent;border-color:#fff;box-shadow:none;color:#fff}.button.is-white.is-inverted.is-outlined{background-color:transparent;border-color:#0a0a0a;color:#0a0a0a}.button.is-white.is-inverted.is-outlined:hover,.button.is-white.is-inverted.is-outlined.is-hovered,.button.is-white.is-inverted.is-outlined:focus,.button.is-white.is-inverted.is-outlined.is-focused{background-color:#0a0a0a;color:#fff}.button.is-white.is-inverted.is-outlined.is-loading:hover::after,.button.is-white.is-inverted.is-outlined.is-loading.is-hovered::after,.button.is-white.is-inverted.is-outlined.is-loading:focus::after,.button.is-white.is-inverted.is-outlined.is-loading.is-focused::after{border-color:transparent transparent #fff #fff !important}.button.is-white.is-inverted.is-outlined[disabled],fieldset[disabled] .button.is-white.is-inverted.is-outlined{background-color:transparent;border-color:#0a0a0a;box-shadow:none;color:#0a0a0a}.button.is-black{background-color:#0a0a0a;border-color:transparent;color:#fff}.button.is-black:hover,.button.is-black.is-hovered{background-color:#040404;border-color:transparent;color:#fff}.button.is-black:focus,.button.is-black.is-focused{border-color:transparent;color:#fff}.button.is-black:focus:not(:active),.button.is-black.is-focused:not(:active){box-shadow:0 0 0 0.125em rgba(10,10,10,0.25)}.button.is-black:active,.button.is-black.is-active{background-color:#000;border-color:transparent;color:#fff}.button.is-black[disabled],fieldset[disabled] .button.is-black{background-color:#0a0a0a;border-color:#0a0a0a;box-shadow:none}.button.is-black.is-inverted{background-color:#fff;color:#0a0a0a}.button.is-black.is-inverted:hover,.button.is-black.is-inverted.is-hovered{background-color:#f2f2f2}.button.is-black.is-inverted[disabled],fieldset[disabled] .button.is-black.is-inverted{background-color:#fff;border-color:transparent;box-shadow:none;color:#0a0a0a}.button.is-black.is-loading::after{border-color:transparent transparent #fff #fff !important}.button.is-black.is-outlined{background-color:transparent;border-color:#0a0a0a;color:#0a0a0a}.button.is-black.is-outlined:hover,.button.is-black.is-outlined.is-hovered,.button.is-black.is-outlined:focus,.button.is-black.is-outlined.is-focused{background-color:#0a0a0a;border-color:#0a0a0a;color:#fff}.button.is-black.is-outlined.is-loading::after{border-color:transparent transparent #0a0a0a #0a0a0a !important}.button.is-black.is-outlined.is-loading:hover::after,.button.is-black.is-outlined.is-loading.is-hovered::after,.button.is-black.is-outlined.is-loading:focus::after,.button.is-black.is-outlined.is-loading.is-focused::after{border-color:transparent transparent #fff #fff !important}.button.is-black.is-outlined[disabled],fieldset[disabled] .button.is-black.is-outlined{background-color:transparent;border-color:#0a0a0a;box-shadow:none;color:#0a0a0a}.button.is-black.is-inverted.is-outlined{background-color:transparent;border-color:#fff;color:#fff}.button.is-black.is-inverted.is-outlined:hover,.button.is-black.is-inverted.is-outlined.is-hovered,.button.is-black.is-inverted.is-outlined:focus,.button.is-black.is-inverted.is-outlined.is-focused{background-color:#fff;color:#0a0a0a}.button.is-black.is-inverted.is-outlined.is-loading:hover::after,.button.is-black.is-inverted.is-outlined.is-loading.is-hovered::after,.button.is-black.is-inverted.is-outlined.is-loading:focus::after,.button.is-black.is-inverted.is-outlined.is-loading.is-focused::after{border-color:transparent transparent #0a0a0a #0a0a0a !important}.button.is-black.is-inverted.is-outlined[disabled],fieldset[disabled] .button.is-black.is-inverted.is-outlined{background-color:transparent;border-color:#fff;box-shadow:none;color:#fff}.button.is-light{background-color:#f5f5f5;border-color:transparent;color:rgba(0,0,0,0.7)}.button.is-light:hover,.button.is-light.is-hovered{background-color:#eee;border-color:transparent;color:rgba(0,0,0,0.7)}.button.is-light:focus,.button.is-light.is-focused{border-color:transparent;color:rgba(0,0,0,0.7)}.button.is-light:focus:not(:active),.button.is-light.is-focused:not(:active){box-shadow:0 0 0 0.125em rgba(245,245,245,0.25)}.button.is-light:active,.button.is-light.is-active{background-color:#e8e8e8;border-color:transparent;color:rgba(0,0,0,0.7)}.button.is-light[disabled],fieldset[disabled] .button.is-light{background-color:#f5f5f5;border-color:#f5f5f5;box-shadow:none}.button.is-light.is-inverted{background-color:rgba(0,0,0,0.7);color:#f5f5f5}.button.is-light.is-inverted:hover,.button.is-light.is-inverted.is-hovered{background-color:rgba(0,0,0,0.7)}.button.is-light.is-inverted[disabled],fieldset[disabled] .button.is-light.is-inverted{background-color:rgba(0,0,0,0.7);border-color:transparent;box-shadow:none;color:#f5f5f5}.button.is-light.is-loading::after{border-color:transparent transparent rgba(0,0,0,0.7) rgba(0,0,0,0.7) !important}.button.is-light.is-outlined{background-color:transparent;border-color:#f5f5f5;color:#f5f5f5}.button.is-light.is-outlined:hover,.button.is-light.is-outlined.is-hovered,.button.is-light.is-outlined:focus,.button.is-light.is-outlined.is-focused{background-color:#f5f5f5;border-color:#f5f5f5;color:rgba(0,0,0,0.7)}.button.is-light.is-outlined.is-loading::after{border-color:transparent transparent #f5f5f5 #f5f5f5 !important}.button.is-light.is-outlined.is-loading:hover::after,.button.is-light.is-outlined.is-loading.is-hovered::after,.button.is-light.is-outlined.is-loading:focus::after,.button.is-light.is-outlined.is-loading.is-focused::after{border-color:transparent transparent rgba(0,0,0,0.7) rgba(0,0,0,0.7) !important}.button.is-light.is-outlined[disabled],fieldset[disabled] .button.is-light.is-outlined{background-color:transparent;border-color:#f5f5f5;box-shadow:none;color:#f5f5f5}.button.is-light.is-inverted.is-outlined{background-color:transparent;border-color:rgba(0,0,0,0.7);color:rgba(0,0,0,0.7)}.button.is-light.is-inverted.is-outlined:hover,.button.is-light.is-inverted.is-outlined.is-hovered,.button.is-light.is-inverted.is-outlined:focus,.button.is-light.is-inverted.is-outlined.is-focused{background-color:rgba(0,0,0,0.7);color:#f5f5f5}.button.is-light.is-inverted.is-outlined.is-loading:hover::after,.button.is-light.is-inverted.is-outlined.is-loading.is-hovered::after,.button.is-light.is-inverted.is-outlined.is-loading:focus::after,.button.is-light.is-inverted.is-outlined.is-loading.is-focused::after{border-color:transparent transparent #f5f5f5 #f5f5f5 !important}.button.is-light.is-inverted.is-outlined[disabled],fieldset[disabled] .button.is-light.is-inverted.is-outlined{background-color:transparent;border-color:rgba(0,0,0,0.7);box-shadow:none;color:rgba(0,0,0,0.7)}.button.is-dark{background-color:#363636;border-color:transparent;color:#fff}.button.is-dark:hover,.button.is-dark.is-hovered{background-color:#2f2f2f;border-color:transparent;color:#fff}.button.is-dark:focus,.button.is-dark.is-focused{border-color:transparent;color:#fff}.button.is-dark:focus:not(:active),.button.is-dark.is-focused:not(:active){box-shadow:0 0 0 0.125em rgba(54,54,54,0.25)}.button.is-dark:active,.button.is-dark.is-active{background-color:#292929;border-color:transparent;color:#fff}.button.is-dark[disabled],fieldset[disabled] .button.is-dark{background-color:#363636;border-color:#363636;box-shadow:none}.button.is-dark.is-inverted{background-color:#fff;color:#363636}.button.is-dark.is-inverted:hover,.button.is-dark.is-inverted.is-hovered{background-color:#f2f2f2}.button.is-dark.is-inverted[disabled],fieldset[disabled] .button.is-dark.is-inverted{background-color:#fff;border-color:transparent;box-shadow:none;color:#363636}.button.is-dark.is-loading::after{border-color:transparent transparent #fff #fff !important}.button.is-dark.is-outlined{background-color:transparent;border-color:#363636;color:#363636}.button.is-dark.is-outlined:hover,.button.is-dark.is-outlined.is-hovered,.button.is-dark.is-outlined:focus,.button.is-dark.is-outlined.is-focused{background-color:#363636;border-color:#363636;color:#fff}.button.is-dark.is-outlined.is-loading::after{border-color:transparent transparent #363636 #363636 !important}.button.is-dark.is-outlined.is-loading:hover::after,.button.is-dark.is-outlined.is-loading.is-hovered::after,.button.is-dark.is-outlined.is-loading:focus::after,.button.is-dark.is-outlined.is-loading.is-focused::after{border-color:transparent transparent #fff #fff !important}.button.is-dark.is-outlined[disabled],fieldset[disabled] .button.is-dark.is-outlined{background-color:transparent;border-color:#363636;box-shadow:none;color:#363636}.button.is-dark.is-inverted.is-outlined{background-color:transparent;border-color:#fff;color:#fff}.button.is-dark.is-inverted.is-outlined:hover,.button.is-dark.is-inverted.is-outlined.is-hovered,.button.is-dark.is-inverted.is-outlined:focus,.button.is-dark.is-inverted.is-outlined.is-focused{background-color:#fff;color:#363636}.button.is-dark.is-inverted.is-outlined.is-loading:hover::after,.button.is-dark.is-inverted.is-outlined.is-loading.is-hovered::after,.button.is-dark.is-inverted.is-outlined.is-loading:focus::after,.button.is-dark.is-inverted.is-outlined.is-loading.is-focused::after{border-color:transparent transparent #363636 #363636 !important}.button.is-dark.is-inverted.is-outlined[disabled],fieldset[disabled] .button.is-dark.is-inverted.is-outlined{background-color:transparent;border-color:#fff;box-shadow:none;color:#fff}.button.is-primary{background-color:#00d1b2;border-color:transparent;color:#fff}.button.is-primary:hover,.button.is-primary.is-hovered{background-color:#00c4a7;border-color:transparent;color:#fff}.button.is-primary:focus,.button.is-primary.is-focused{border-color:transparent;color:#fff}.button.is-primary:focus:not(:active),.button.is-primary.is-focused:not(:active){box-shadow:0 0 0 0.125em rgba(0,209,178,0.25)}.button.is-primary:active,.button.is-primary.is-active{background-color:#00b89c;border-color:transparent;color:#fff}.button.is-primary[disabled],fieldset[disabled] .button.is-primary{background-color:#00d1b2;border-color:#00d1b2;box-shadow:none}.button.is-primary.is-inverted{background-color:#fff;color:#00d1b2}.button.is-primary.is-inverted:hover,.button.is-primary.is-inverted.is-hovered{background-color:#f2f2f2}.button.is-primary.is-inverted[disabled],fieldset[disabled] .button.is-primary.is-inverted{background-color:#fff;border-color:transparent;box-shadow:none;color:#00d1b2}.button.is-primary.is-loading::after{border-color:transparent transparent #fff #fff !important}.button.is-primary.is-outlined{background-color:transparent;border-color:#00d1b2;color:#00d1b2}.button.is-primary.is-outlined:hover,.button.is-primary.is-outlined.is-hovered,.button.is-primary.is-outlined:focus,.button.is-primary.is-outlined.is-focused{background-color:#00d1b2;border-color:#00d1b2;color:#fff}.button.is-primary.is-outlined.is-loading::after{border-color:transparent transparent #00d1b2 #00d1b2 !important}.button.is-primary.is-outlined.is-loading:hover::after,.button.is-primary.is-outlined.is-loading.is-hovered::after,.button.is-primary.is-outlined.is-loading:focus::after,.button.is-primary.is-outlined.is-loading.is-focused::after{border-color:transparent transparent #fff #fff !important}.button.is-primary.is-outlined[disabled],fieldset[disabled] .button.is-primary.is-outlined{background-color:transparent;border-color:#00d1b2;box-shadow:none;color:#00d1b2}.button.is-primary.is-inverted.is-outlined{background-color:transparent;border-color:#fff;color:#fff}.button.is-primary.is-inverted.is-outlined:hover,.button.is-primary.is-inverted.is-outlined.is-hovered,.button.is-primary.is-inverted.is-outlined:focus,.button.is-primary.is-inverted.is-outlined.is-focused{background-color:#fff;color:#00d1b2}.button.is-primary.is-inverted.is-outlined.is-loading:hover::after,.button.is-primary.is-inverted.is-outlined.is-loading.is-hovered::after,.button.is-primary.is-inverted.is-outlined.is-loading:focus::after,.button.is-primary.is-inverted.is-outlined.is-loading.is-focused::after{border-color:transparent transparent #00d1b2 #00d1b2 !important}.button.is-primary.is-inverted.is-outlined[disabled],fieldset[disabled] .button.is-primary.is-inverted.is-outlined{background-color:transparent;border-color:#fff;box-shadow:none;color:#fff}.button.is-primary.is-light{background-color:#ebfffc;color:#00947e}.button.is-primary.is-light:hover,.button.is-primary.is-light.is-hovered{background-color:#defffa;border-color:transparent;color:#00947e}.button.is-primary.is-light:active,.button.is-primary.is-light.is-active{background-color:#d1fff8;border-color:transparent;color:#00947e}.button.is-link{background-color:#485fc7;border-color:transparent;color:#fff}.button.is-link:hover,.button.is-link.is-hovered{background-color:#3e56c4;border-color:transparent;color:#fff}.button.is-link:focus,.button.is-link.is-focused{border-color:transparent;color:#fff}.button.is-link:focus:not(:active),.button.is-link.is-focused:not(:active){box-shadow:0 0 0 0.125em rgba(72,95,199,0.25)}.button.is-link:active,.button.is-link.is-active{background-color:#3a51bb;border-color:transparent;color:#fff}.button.is-link[disabled],fieldset[disabled] .button.is-link{background-color:#485fc7;border-color:#485fc7;box-shadow:none}.button.is-link.is-inverted{background-color:#fff;color:#485fc7}.button.is-link.is-inverted:hover,.button.is-link.is-inverted.is-hovered{background-color:#f2f2f2}.button.is-link.is-inverted[disabled],fieldset[disabled] .button.is-link.is-inverted{background-color:#fff;border-color:transparent;box-shadow:none;color:#485fc7}.button.is-link.is-loading::after{border-color:transparent transparent #fff #fff !important}.button.is-link.is-outlined{background-color:transparent;border-color:#485fc7;color:#485fc7}.button.is-link.is-outlined:hover,.button.is-link.is-outlined.is-hovered,.button.is-link.is-outlined:focus,.button.is-link.is-outlined.is-focused{background-color:#485fc7;border-color:#485fc7;color:#fff}.button.is-link.is-outlined.is-loading::after{border-color:transparent transparent #485fc7 #485fc7 !important}.button.is-link.is-outlined.is-loading:hover::after,.button.is-link.is-outlined.is-loading.is-hovered::after,.button.is-link.is-outlined.is-loading:focus::after,.button.is-link.is-outlined.is-loading.is-focused::after{border-color:transparent transparent #fff #fff !important}.button.is-link.is-outlined[disabled],fieldset[disabled] .button.is-link.is-outlined{background-color:transparent;border-color:#485fc7;box-shadow:none;color:#485fc7}.button.is-link.is-inverted.is-outlined{background-color:transparent;border-color:#fff;color:#fff}.button.is-link.is-inverted.is-outlined:hover,.button.is-link.is-inverted.is-outlined.is-hovered,.button.is-link.is-inverted.is-outlined:focus,.button.is-link.is-inverted.is-outlined.is-focused{background-color:#fff;color:#485fc7}.button.is-link.is-inverted.is-outlined.is-loading:hover::after,.button.is-link.is-inverted.is-outlined.is-loading.is-hovered::after,.button.is-link.is-inverted.is-outlined.is-loading:focus::after,.button.is-link.is-inverted.is-outlined.is-loading.is-focused::after{border-color:transparent transparent #485fc7 #485fc7 !important}.button.is-link.is-inverted.is-outlined[disabled],fieldset[disabled] .button.is-link.is-inverted.is-outlined{background-color:transparent;border-color:#fff;box-shadow:none;color:#fff}.button.is-link.is-light{background-color:#eff1fa;color:#3850b7}.button.is-link.is-light:hover,.button.is-link.is-light.is-hovered{background-color:#e6e9f7;border-color:transparent;color:#3850b7}.button.is-link.is-light:active,.button.is-link.is-light.is-active{background-color:#dce0f4;border-color:transparent;color:#3850b7}.button.is-info{background-color:#3e8ed0;border-color:transparent;color:#fff}.button.is-info:hover,.button.is-info.is-hovered{background-color:#3488ce;border-color:transparent;color:#fff}.button.is-info:focus,.button.is-info.is-focused{border-color:transparent;color:#fff}.button.is-info:focus:not(:active),.button.is-info.is-focused:not(:active){box-shadow:0 0 0 0.125em rgba(62,142,208,0.25)}.button.is-info:active,.button.is-info.is-active{background-color:#3082c5;border-color:transparent;color:#fff}.button.is-info[disabled],fieldset[disabled] .button.is-info{background-color:#3e8ed0;border-color:#3e8ed0;box-shadow:none}.button.is-info.is-inverted{background-color:#fff;color:#3e8ed0}.button.is-info.is-inverted:hover,.button.is-info.is-inverted.is-hovered{background-color:#f2f2f2}.button.is-info.is-inverted[disabled],fieldset[disabled] .button.is-info.is-inverted{background-color:#fff;border-color:transparent;box-shadow:none;color:#3e8ed0}.button.is-info.is-loading::after{border-color:transparent transparent #fff #fff !important}.button.is-info.is-outlined{background-color:transparent;border-color:#3e8ed0;color:#3e8ed0}.button.is-info.is-outlined:hover,.button.is-info.is-outlined.is-hovered,.button.is-info.is-outlined:focus,.button.is-info.is-outlined.is-focused{background-color:#3e8ed0;border-color:#3e8ed0;color:#fff}.button.is-info.is-outlined.is-loading::after{border-color:transparent transparent #3e8ed0 #3e8ed0 !important}.button.is-info.is-outlined.is-loading:hover::after,.button.is-info.is-outlined.is-loading.is-hovered::after,.button.is-info.is-outlined.is-loading:focus::after,.button.is-info.is-outlined.is-loading.is-focused::after{border-color:transparent transparent #fff #fff !important}.button.is-info.is-outlined[disabled],fieldset[disabled] .button.is-info.is-outlined{background-color:transparent;border-color:#3e8ed0;box-shadow:none;color:#3e8ed0}.button.is-info.is-inverted.is-outlined{background-color:transparent;border-color:#fff;color:#fff}.button.is-info.is-inverted.is-outlined:hover,.button.is-info.is-inverted.is-outlined.is-hovered,.button.is-info.is-inverted.is-outlined:focus,.button.is-info.is-inverted.is-outlined.is-focused{background-color:#fff;color:#3e8ed0}.button.is-info.is-inverted.is-outlined.is-loading:hover::after,.button.is-info.is-inverted.is-outlined.is-loading.is-hovered::after,.button.is-info.is-inverted.is-outlined.is-loading:focus::after,.button.is-info.is-inverted.is-outlined.is-loading.is-focused::after{border-color:transparent transparent #3e8ed0 #3e8ed0 !important}.button.is-info.is-inverted.is-outlined[disabled],fieldset[disabled] .button.is-info.is-inverted.is-outlined{background-color:transparent;border-color:#fff;box-shadow:none;color:#fff}.button.is-info.is-light{background-color:#eff5fb;color:#296fa8}.button.is-info.is-light:hover,.button.is-info.is-light.is-hovered{background-color:#e4eff9;border-color:transparent;color:#296fa8}.button.is-info.is-light:active,.button.is-info.is-light.is-active{background-color:#dae9f6;border-color:transparent;color:#296fa8}.button.is-success{background-color:#48c78e;border-color:transparent;color:#fff}.button.is-success:hover,.button.is-success.is-hovered{background-color:#3ec487;border-color:transparent;color:#fff}.button.is-success:focus,.button.is-success.is-focused{border-color:transparent;color:#fff}.button.is-success:focus:not(:active),.button.is-success.is-focused:not(:active){box-shadow:0 0 0 0.125em rgba(72,199,142,0.25)}.button.is-success:active,.button.is-success.is-active{background-color:#3abb81;border-color:transparent;color:#fff}.button.is-success[disabled],fieldset[disabled] .button.is-success{background-color:#48c78e;border-color:#48c78e;box-shadow:none}.button.is-success.is-inverted{background-color:#fff;color:#48c78e}.button.is-success.is-inverted:hover,.button.is-success.is-inverted.is-hovered{background-color:#f2f2f2}.button.is-success.is-inverted[disabled],fieldset[disabled] .button.is-success.is-inverted{background-color:#fff;border-color:transparent;box-shadow:none;color:#48c78e}.button.is-success.is-loading::after{border-color:transparent transparent #fff #fff !important}.button.is-success.is-outlined{background-color:transparent;border-color:#48c78e;color:#48c78e}.button.is-success.is-outlined:hover,.button.is-success.is-outlined.is-hovered,.button.is-success.is-outlined:focus,.button.is-success.is-outlined.is-focused{background-color:#48c78e;border-color:#48c78e;color:#fff}.button.is-success.is-outlined.is-loading::after{border-color:transparent transparent #48c78e #48c78e !important}.button.is-success.is-outlined.is-loading:hover::after,.button.is-success.is-outlined.is-loading.is-hovered::after,.button.is-success.is-outlined.is-loading:focus::after,.button.is-success.is-outlined.is-loading.is-focused::after{border-color:transparent transparent #fff #fff !important}.button.is-success.is-outlined[disabled],fieldset[disabled] .button.is-success.is-outlined{background-color:transparent;border-color:#48c78e;box-shadow:none;color:#48c78e}.button.is-success.is-inverted.is-outlined{background-color:transparent;border-color:#fff;color:#fff}.button.is-success.is-inverted.is-outlined:hover,.button.is-success.is-inverted.is-outlined.is-hovered,.button.is-success.is-inverted.is-outlined:focus,.button.is-success.is-inverted.is-outlined.is-focused{background-color:#fff;color:#48c78e}.button.is-success.is-inverted.is-outlined.is-loading:hover::after,.button.is-success.is-inverted.is-outlined.is-loading.is-hovered::after,.button.is-success.is-inverted.is-outlined.is-loading:focus::after,.button.is-success.is-inverted.is-outlined.is-loading.is-focused::after{border-color:transparent transparent #48c78e #48c78e !important}.button.is-success.is-inverted.is-outlined[disabled],fieldset[disabled] .button.is-success.is-inverted.is-outlined{background-color:transparent;border-color:#fff;box-shadow:none;color:#fff}.button.is-success.is-light{background-color:#effaf5;color:#257953}.button.is-success.is-light:hover,.button.is-success.is-light.is-hovered{background-color:#e6f7ef;border-color:transparent;color:#257953}.button.is-success.is-light:active,.button.is-success.is-light.is-active{background-color:#dcf4e9;border-color:transparent;color:#257953}.button.is-warning{background-color:#ffe08a;border-color:transparent;color:rgba(0,0,0,0.7)}.button.is-warning:hover,.button.is-warning.is-hovered{background-color:#ffdc7d;border-color:transparent;color:rgba(0,0,0,0.7)}.button.is-warning:focus,.button.is-warning.is-focused{border-color:transparent;color:rgba(0,0,0,0.7)}.button.is-warning:focus:not(:active),.button.is-warning.is-focused:not(:active){box-shadow:0 0 0 0.125em rgba(255,224,138,0.25)}.button.is-warning:active,.button.is-warning.is-active{background-color:#ffd970;border-color:transparent;color:rgba(0,0,0,0.7)}.button.is-warning[disabled],fieldset[disabled] .button.is-warning{background-color:#ffe08a;border-color:#ffe08a;box-shadow:none}.button.is-warning.is-inverted{background-color:rgba(0,0,0,0.7);color:#ffe08a}.button.is-warning.is-inverted:hover,.button.is-warning.is-inverted.is-hovered{background-color:rgba(0,0,0,0.7)}.button.is-warning.is-inverted[disabled],fieldset[disabled] .button.is-warning.is-inverted{background-color:rgba(0,0,0,0.7);border-color:transparent;box-shadow:none;color:#ffe08a}.button.is-warning.is-loading::after{border-color:transparent transparent rgba(0,0,0,0.7) rgba(0,0,0,0.7) !important}.button.is-warning.is-outlined{background-color:transparent;border-color:#ffe08a;color:#ffe08a}.button.is-warning.is-outlined:hover,.button.is-warning.is-outlined.is-hovered,.button.is-warning.is-outlined:focus,.button.is-warning.is-outlined.is-focused{background-color:#ffe08a;border-color:#ffe08a;color:rgba(0,0,0,0.7)}.button.is-warning.is-outlined.is-loading::after{border-color:transparent transparent #ffe08a #ffe08a !important}.button.is-warning.is-outlined.is-loading:hover::after,.button.is-warning.is-outlined.is-loading.is-hovered::after,.button.is-warning.is-outlined.is-loading:focus::after,.button.is-warning.is-outlined.is-loading.is-focused::after{border-color:transparent transparent rgba(0,0,0,0.7) rgba(0,0,0,0.7) !important}.button.is-warning.is-outlined[disabled],fieldset[disabled] .button.is-warning.is-outlined{background-color:transparent;border-color:#ffe08a;box-shadow:none;color:#ffe08a}.button.is-warning.is-inverted.is-outlined{background-color:transparent;border-color:rgba(0,0,0,0.7);color:rgba(0,0,0,0.7)}.button.is-warning.is-inverted.is-outlined:hover,.button.is-warning.is-inverted.is-outlined.is-hovered,.button.is-warning.is-inverted.is-outlined:focus,.button.is-warning.is-inverted.is-outlined.is-focused{background-color:rgba(0,0,0,0.7);color:#ffe08a}.button.is-warning.is-inverted.is-outlined.is-loading:hover::after,.button.is-warning.is-inverted.is-outlined.is-loading.is-hovered::after,.button.is-warning.is-inverted.is-outlined.is-loading:focus::after,.button.is-warning.is-inverted.is-outlined.is-loading.is-focused::after{border-color:transparent transparent #ffe08a #ffe08a !important}.button.is-warning.is-inverted.is-outlined[disabled],fieldset[disabled] .button.is-warning.is-inverted.is-outlined{background-color:transparent;border-color:rgba(0,0,0,0.7);box-shadow:none;color:rgba(0,0,0,0.7)}.button.is-warning.is-light{background-color:#fffaeb;color:#946c00}.button.is-warning.is-light:hover,.button.is-warning.is-light.is-hovered{background-color:#fff6de;border-color:transparent;color:#946c00}.button.is-warning.is-light:active,.button.is-warning.is-light.is-active{background-color:#fff3d1;border-color:transparent;color:#946c00}.button.is-danger{background-color:#f14668;border-color:transparent;color:#fff}.button.is-danger:hover,.button.is-danger.is-hovered{background-color:#f03a5f;border-color:transparent;color:#fff}.button.is-danger:focus,.button.is-danger.is-focused{border-color:transparent;color:#fff}.button.is-danger:focus:not(:active),.button.is-danger.is-focused:not(:active){box-shadow:0 0 0 0.125em rgba(241,70,104,0.25)}.button.is-danger:active,.button.is-danger.is-active{background-color:#ef2e55;border-color:transparent;color:#fff}.button.is-danger[disabled],fieldset[disabled] .button.is-danger{background-color:#f14668;border-color:#f14668;box-shadow:none}.button.is-danger.is-inverted{background-color:#fff;color:#f14668}.button.is-danger.is-inverted:hover,.button.is-danger.is-inverted.is-hovered{background-color:#f2f2f2}.button.is-danger.is-inverted[disabled],fieldset[disabled] .button.is-danger.is-inverted{background-color:#fff;border-color:transparent;box-shadow:none;color:#f14668}.button.is-danger.is-loading::after{border-color:transparent transparent #fff #fff !important}.button.is-danger.is-outlined{background-color:transparent;border-color:#f14668;color:#f14668}.button.is-danger.is-outlined:hover,.button.is-danger.is-outlined.is-hovered,.button.is-danger.is-outlined:focus,.button.is-danger.is-outlined.is-focused{background-color:#f14668;border-color:#f14668;color:#fff}.button.is-danger.is-outlined.is-loading::after{border-color:transparent transparent #f14668 #f14668 !important}.button.is-danger.is-outlined.is-loading:hover::after,.button.is-danger.is-outlined.is-loading.is-hovered::after,.button.is-danger.is-outlined.is-loading:focus::after,.button.is-danger.is-outlined.is-loading.is-focused::after{border-color:transparent transparent #fff #fff !important}.button.is-danger.is-outlined[disabled],fieldset[disabled] .button.is-danger.is-outlined{background-color:transparent;border-color:#f14668;box-shadow:none;color:#f14668}.button.is-danger.is-inverted.is-outlined{background-color:transparent;border-color:#fff;color:#fff}.button.is-danger.is-inverted.is-outlined:hover,.button.is-danger.is-inverted.is-outlined.is-hovered,.button.is-danger.is-inverted.is-outlined:focus,.button.is-danger.is-inverted.is-outlined.is-focused{background-color:#fff;color:#f14668}.button.is-danger.is-inverted.is-outlined.is-loading:hover::after,.button.is-danger.is-inverted.is-outlined.is-loading.is-hovered::after,.button.is-danger.is-inverted.is-outlined.is-loading:focus::after,.button.is-danger.is-inverted.is-outlined.is-loading.is-focused::after{border-color:transparent transparent #f14668 #f14668 !important}.button.is-danger.is-inverted.is-outlined[disabled],fieldset[disabled] .button.is-danger.is-inverted.is-outlined{background-color:transparent;border-color:#fff;box-shadow:none;color:#fff}.button.is-danger.is-light{background-color:#feecf0;color:#cc0f35}.button.is-danger.is-light:hover,.button.is-danger.is-light.is-hovered{background-color:#fde0e6;border-color:transparent;color:#cc0f35}.button.is-danger.is-light:active,.button.is-danger.is-light.is-active{background-color:#fcd4dc;border-color:transparent;color:#cc0f35}.button.is-small{font-size:.75rem}.button.is-small:not(.is-rounded){border-radius:2px}.button.is-normal{font-size:1rem}.button.is-medium{font-size:1.25rem}.button.is-large{font-size:1.5rem}.button[disabled],fieldset[disabled] .button{background-color:#fff;border-color:#dbdbdb;box-shadow:none;opacity:.5}.button.is-fullwidth{display:flex;width:100%}.button.is-loading{color:transparent !important;pointer-events:none}.button.is-loading::after{position:absolute;left:calc(50% - (1em * 0.5));top:calc(50% - (1em * 0.5));position:absolute !important}.button.is-static{background-color:#f5f5f5;border-color:#dbdbdb;color:#7a7a7a;box-shadow:none;pointer-events:none}.button.is-rounded{border-radius:9999px;padding-left:calc(1em + 0.25em);padding-right:calc(1em + 0.25em)}.buttons{align-items:center;display:flex;flex-wrap:wrap;justify-content:flex-start}.buttons .button{margin-bottom:0.5rem}.buttons .button:not(:last-child):not(.is-fullwidth){margin-right:.5rem}.buttons:last-child{margin-bottom:-0.5rem}.buttons:not(:last-child){margin-bottom:1rem}.buttons.are-small .button:not(.is-normal):not(.is-medium):not(.is-large){font-size:.75rem}.buttons.are-small .button:not(.is-normal):not(.is-medium):not(.is-large):not(.is-rounded){border-radius:2px}.buttons.are-medium .button:not(.is-small):not(.is-normal):not(.is-large){font-size:1.25rem}.buttons.are-large .button:not(.is-small):not(.is-normal):not(.is-medium){font-size:1.5rem}.buttons.has-addons .button:not(:first-child){border-bottom-left-radius:0;border-top-left-radius:0}.buttons.has-addons .button:not(:last-child){border-bottom-right-radius:0;border-top-right-radius:0;margin-right:-1px}.buttons.has-addons .button:last-child{margin-right:0}.buttons.has-addons .button:hover,.buttons.has-addons .button.is-hovered{z-index:2}.buttons.has-addons .button:focus,.buttons.has-addons .button.is-focused,.buttons.has-addons .button:active,.buttons.has-addons .button.is-active,.buttons.has-addons .button.is-selected{z-index:3}.buttons.has-addons .button:focus:hover,.buttons.has-addons .button.is-focused:hover,.buttons.has-addons .button:active:hover,.buttons.has-addons .button.is-active:hover,.buttons.has-addons .button.is-selected:hover{z-index:4}.buttons.has-addons .button.is-expanded{flex-grow:1;flex-shrink:1}.buttons.is-centered{justify-content:center}.buttons.is-centered:not(.has-addons) .button:not(.is-fullwidth){margin-left:0.25rem;margin-right:0.25rem}.buttons.is-right{justify-content:flex-end}.buttons.is-right:not(.has-addons) .button:not(.is-fullwidth){margin-left:0.25rem;margin-right:0.25rem}@media screen and (max-width: 768px){.button.is-responsive.is-small{font-size:.5625rem}.button.is-responsive,.button.is-responsive.is-normal{font-size:.65625rem}.button.is-responsive.is-medium{font-size:.75rem}.button.is-responsive.is-large{font-size:1rem}}@media screen and (min-width: 769px) and (max-width: 1023px){.button.is-responsive.is-small{font-size:.65625rem}.button.is-responsive,.button.is-responsive.is-normal{font-size:.75rem}.button.is-responsive.is-medium{font-size:1rem}.button.is-responsive.is-large{font-size:1.25rem}}.container{flex-grow:1;margin:0 auto;position:relative;width:auto}.container.is-fluid{max-width:none !important;padding-left:32px;padding-right:32px;width:100%}@media screen and (min-width: 1024px){.container{max-width:960px}}@media screen and (max-width: 1215px){.container.is-widescreen:not(.is-max-desktop){max-width:1152px}}@media screen and (max-width: 1407px){.container.is-fullhd:not(.is-max-desktop):not(.is-max-widescreen){max-width:1344px}}@media screen and (min-width: 1216px){.container:not(.is-max-desktop){max-width:1152px}}@media screen and (min-width: 1408px){.container:not(.is-max-desktop):not(.is-max-widescreen){max-width:1344px}}.content li+li{margin-top:0.25em}.content p:not(:last-child),.content dl:not(:last-child),.content ol:not(:last-child),.content ul:not(:last-child),.content blockquote:not(:last-child),.content pre:not(:last-child),.content table:not(:last-child){margin-bottom:1em}.content h1,.content h2,.content h3,.content h4,.content h5,.content h6{color:#363636;font-weight:600;line-height:1.125}.content h1{font-size:2em;margin-bottom:0.5em}.content h1:not(:first-child){margin-top:1em}.content h2{font-size:1.75em;margin-bottom:0.5714em}.content h2:not(:first-child){margin-top:1.1428em}.content h3{font-size:1.5em;margin-bottom:0.6666em}.content h3:not(:first-child){margin-top:1.3333em}.content h4{font-size:1.25em;margin-bottom:0.8em}.content h5{font-size:1.125em;margin-bottom:0.8888em}.content h6{font-size:1em;margin-bottom:1em}.content blockquote{background-color:#f5f5f5;border-left:5px solid #dbdbdb;padding:1.25em 1.5em}.content ol{list-style-position:outside;margin-left:2em;margin-top:1em}.content ol:not([type]){list-style-type:decimal}.content ol:not([type]).is-lower-alpha{list-style-type:lower-alpha}.content ol:not([type]).is-lower-roman{list-style-type:lower-roman}.content ol:not([type]).is-upper-alpha{list-style-type:upper-alpha}.content ol:not([type]).is-upper-roman{list-style-type:upper-roman}.content ul{list-style:disc outside;margin-left:2em;margin-top:1em}.content ul ul{list-style-type:circle;margin-top:0.5em}.content ul ul ul{list-style-type:square}.content dd{margin-left:2em}.content figure{margin-left:2em;margin-right:2em;text-align:center}.content figure:not(:first-child){margin-top:2em}.content figure:not(:last-child){margin-bottom:2em}.content figure img{display:inline-block}.content figure figcaption{font-style:italic}.content pre{-webkit-overflow-scrolling:touch;overflow-x:auto;padding:1.25em 1.5em;white-space:pre;word-wrap:normal}.content sup,.content sub{font-size:75%}.content table{width:100%}.content table td,.content table th{border:1px solid #dbdbdb;border-width:0 0 1px;padding:0.5em 0.75em;vertical-align:top}.content table th{color:#363636}.content table th:not([align]){text-align:inherit}.content table thead td,.content table thead th{border-width:0 0 2px;color:#363636}.content table tfoot td,.content table tfoot th{border-width:2px 0 0;color:#363636}.content table tbody tr:last-child td,.content table tbody tr:last-child th{border-bottom-width:0}.content .tabs li+li{margin-top:0}.content.is-small{font-size:.75rem}.content.is-normal{font-size:1rem}.content.is-medium{font-size:1.25rem}.content.is-large{font-size:1.5rem}.icon{align-items:center;display:inline-flex;justify-content:center;height:1.5rem;width:1.5rem}.icon.is-small{height:1rem;width:1rem}.icon.is-medium{height:2rem;width:2rem}.icon.is-large{height:3rem;width:3rem}.icon-text{align-items:flex-start;color:inherit;display:inline-flex;flex-wrap:wrap;line-height:1.5rem;vertical-align:top}.icon-text .icon{flex-grow:0;flex-shrink:0}.icon-text .icon:not(:last-child){margin-right:.25em}.icon-text .icon:not(:first-child){margin-left:.25em}div.icon-text{display:flex}.image{display:block;position:relative}.image img{display:block;height:auto;width:100%}.image img.is-rounded{border-radius:9999px}.image.is-fullwidth{width:100%}.image.is-square img,.image.is-square .has-ratio,.image.is-1by1 img,.image.is-1by1 .has-ratio,.image.is-5by4 img,.image.is-5by4 .has-ratio,.image.is-4by3 img,.image.is-4by3 .has-ratio,.image.is-3by2 img,.image.is-3by2 .has-ratio,.image.is-5by3 img,.image.is-5by3 .has-ratio,.image.is-16by9 img,.image.is-16by9 .has-ratio,.image.is-2by1 img,.image.is-2by1 .has-ratio,.image.is-3by1 img,.image.is-3by1 .has-ratio,.image.is-4by5 img,.image.is-4by5 .has-ratio,.image.is-3by4 img,.image.is-3by4 .has-ratio,.image.is-2by3 img,.image.is-2by3 .has-ratio,.image.is-3by5 img,.image.is-3by5 .has-ratio,.image.is-9by16 img,.image.is-9by16 .has-ratio,.image.is-1by2 img,.image.is-1by2 .has-ratio,.image.is-1by3 img,.image.is-1by3 .has-ratio{height:100%;width:100%}.image.is-square,.image.is-1by1{padding-top:100%}.image.is-5by4{padding-top:80%}.image.is-4by3{padding-top:75%}.image.is-3by2{padding-top:66.6666%}.image.is-5by3{padding-top:60%}.image.is-16by9{padding-top:56.25%}.image.is-2by1{padding-top:50%}.image.is-3by1{padding-top:33.3333%}.image.is-4by5{padding-top:125%}.image.is-3by4{padding-top:133.3333%}.image.is-2by3{padding-top:150%}.image.is-3by5{padding-top:166.6666%}.image.is-9by16{padding-top:177.7777%}.image.is-1by2{padding-top:200%}.image.is-1by3{padding-top:300%}.image.is-16x16{height:16px;width:16px}.image.is-24x24{height:24px;width:24px}.image.is-32x32{height:32px;width:32px}.image.is-48x48{height:48px;width:48px}.image.is-64x64{height:64px;width:64px}.image.is-96x96{height:96px;width:96px}.image.is-128x128{height:128px;width:128px}.notification{background-color:#f5f5f5;border-radius:4px;position:relative;padding:1.25rem 2.5rem 1.25rem 1.5rem}.notification a:not(.button):not(.dropdown-item){color:currentColor;text-decoration:underline}.notification strong{color:currentColor}.notification code,.notification pre{background:#fff}.notification pre code{background:transparent}.notification>.delete{right:.5rem;position:absolute;top:0.5rem}.notification .title,.notification .subtitle,.notification .content{color:currentColor}.notification.is-white{background-color:#fff;color:#0a0a0a}.notification.is-black{background-color:#0a0a0a;color:#fff}.notification.is-light{background-color:#f5f5f5;color:rgba(0,0,0,0.7)}.notification.is-dark{background-color:#363636;color:#fff}.notification.is-primary{background-color:#00d1b2;color:#fff}.notification.is-primary.is-light{background-color:#ebfffc;color:#00947e}.notification.is-link{background-color:#485fc7;color:#fff}.notification.is-link.is-light{background-color:#eff1fa;color:#3850b7}.notification.is-info{background-color:#3e8ed0;color:#fff}.notification.is-info.is-light{background-color:#eff5fb;color:#296fa8}.notification.is-success{background-color:#48c78e;color:#fff}.notification.is-success.is-light{background-color:#effaf5;color:#257953}.notification.is-warning{background-color:#ffe08a;color:rgba(0,0,0,0.7)}.notification.is-warning.is-light{background-color:#fffaeb;color:#946c00}.notification.is-danger{background-color:#f14668;color:#fff}.notification.is-danger.is-light{background-color:#feecf0;color:#cc0f35}.progress{-moz-appearance:none;-webkit-appearance:none;border:none;border-radius:9999px;display:block;height:1rem;overflow:hidden;padding:0;width:100%}.progress::-webkit-progress-bar{background-color:#ededed}.progress::-webkit-progress-value{background-color:#4a4a4a}.progress::-moz-progress-bar{background-color:#4a4a4a}.progress::-ms-fill{background-color:#4a4a4a;border:none}.progress.is-white::-webkit-progress-value{background-color:#fff}.progress.is-white::-moz-progress-bar{background-color:#fff}.progress.is-white::-ms-fill{background-color:#fff}.progress.is-white:indeterminate{background-image:linear-gradient(to right, #fff 30%, #ededed 30%)}.progress.is-black::-webkit-progress-value{background-color:#0a0a0a}.progress.is-black::-moz-progress-bar{background-color:#0a0a0a}.progress.is-black::-ms-fill{background-color:#0a0a0a}.progress.is-black:indeterminate{background-image:linear-gradient(to right, #0a0a0a 30%, #ededed 30%)}.progress.is-light::-webkit-progress-value{background-color:#f5f5f5}.progress.is-light::-moz-progress-bar{background-color:#f5f5f5}.progress.is-light::-ms-fill{background-color:#f5f5f5}.progress.is-light:indeterminate{background-image:linear-gradient(to right, #f5f5f5 30%, #ededed 30%)}.progress.is-dark::-webkit-progress-value{background-color:#363636}.progress.is-dark::-moz-progress-bar{background-color:#363636}.progress.is-dark::-ms-fill{background-color:#363636}.progress.is-dark:indeterminate{background-image:linear-gradient(to right, #363636 30%, #ededed 30%)}.progress.is-primary::-webkit-progress-value{background-color:#00d1b2}.progress.is-primary::-moz-progress-bar{background-color:#00d1b2}.progress.is-primary::-ms-fill{background-color:#00d1b2}.progress.is-primary:indeterminate{background-image:linear-gradient(to right, #00d1b2 30%, #ededed 30%)}.progress.is-link::-webkit-progress-value{background-color:#485fc7}.progress.is-link::-moz-progress-bar{background-color:#485fc7}.progress.is-link::-ms-fill{background-color:#485fc7}.progress.is-link:indeterminate{background-image:linear-gradient(to right, #485fc7 30%, #ededed 30%)}.progress.is-info::-webkit-progress-value{background-color:#3e8ed0}.progress.is-info::-moz-progress-bar{background-color:#3e8ed0}.progress.is-info::-ms-fill{background-color:#3e8ed0}.progress.is-info:indeterminate{background-image:linear-gradient(to right, #3e8ed0 30%, #ededed 30%)}.progress.is-success::-webkit-progress-value{background-color:#48c78e}.progress.is-success::-moz-progress-bar{background-color:#48c78e}.progress.is-success::-ms-fill{background-color:#48c78e}.progress.is-success:indeterminate{background-image:linear-gradient(to right, #48c78e 30%, #ededed 30%)}.progress.is-warning::-webkit-progress-value{background-color:#ffe08a}.progress.is-warning::-moz-progress-bar{background-color:#ffe08a}.progress.is-warning::-ms-fill{background-color:#ffe08a}.progress.is-warning:indeterminate{background-image:linear-gradient(to right, #ffe08a 30%, #ededed 30%)}.progress.is-danger::-webkit-progress-value{background-color:#f14668}.progress.is-danger::-moz-progress-bar{background-color:#f14668}.progress.is-danger::-ms-fill{background-color:#f14668}.progress.is-danger:indeterminate{background-image:linear-gradient(to right, #f14668 30%, #ededed 30%)}.progress:indeterminate{animation-duration:1.5s;animation-iteration-count:infinite;animation-name:moveIndeterminate;animation-timing-function:linear;background-color:#ededed;background-image:linear-gradient(to right, #4a4a4a 30%, #ededed 30%);background-position:top left;background-repeat:no-repeat;background-size:150% 150%}.progress:indeterminate::-webkit-progress-bar{background-color:transparent}.progress:indeterminate::-moz-progress-bar{background-color:transparent}.progress:indeterminate::-ms-fill{animation-name:none}.progress.is-small{height:.75rem}.progress.is-medium{height:1.25rem}.progress.is-large{height:1.5rem}@keyframes moveIndeterminate{from{background-position:200% 0}to{background-position:-200% 0}}.table{background-color:#fff;color:#363636}.table td,.table th{border:1px solid #dbdbdb;border-width:0 0 1px;padding:0.5em 0.75em;vertical-align:top}.table td.is-white,.table th.is-white{background-color:#fff;border-color:#fff;color:#0a0a0a}.table td.is-black,.table th.is-black{background-color:#0a0a0a;border-color:#0a0a0a;color:#fff}.table td.is-light,.table th.is-light{background-color:#f5f5f5;border-color:#f5f5f5;color:rgba(0,0,0,0.7)}.table td.is-dark,.table th.is-dark{background-color:#363636;border-color:#363636;color:#fff}.table td.is-primary,.table th.is-primary{background-color:#00d1b2;border-color:#00d1b2;color:#fff}.table td.is-link,.table th.is-link{background-color:#485fc7;border-color:#485fc7;color:#fff}.table td.is-info,.table th.is-info{background-color:#3e8ed0;border-color:#3e8ed0;color:#fff}.table td.is-success,.table th.is-success{background-color:#48c78e;border-color:#48c78e;color:#fff}.table td.is-warning,.table th.is-warning{background-color:#ffe08a;border-color:#ffe08a;color:rgba(0,0,0,0.7)}.table td.is-danger,.table th.is-danger{background-color:#f14668;border-color:#f14668;color:#fff}.table td.is-narrow,.table th.is-narrow{white-space:nowrap;width:1%}.table td.is-selected,.table th.is-selected{background-color:#00d1b2;color:#fff}.table td.is-selected a,.table td.is-selected strong,.table th.is-selected a,.table th.is-selected strong{color:currentColor}.table td.is-vcentered,.table th.is-vcentered{vertical-align:middle}.table th{color:#363636}.table th:not([align]){text-align:left}.table tr.is-selected{background-color:#00d1b2;color:#fff}.table tr.is-selected a,.table tr.is-selected strong{color:currentColor}.table tr.is-selected td,.table tr.is-selected th{border-color:#fff;color:currentColor}.table thead{background-color:rgba(0,0,0,0)}.table thead td,.table thead th{border-width:0 0 2px;color:#363636}.table tfoot{background-color:rgba(0,0,0,0)}.table tfoot td,.table tfoot th{border-width:2px 0 0;color:#363636}.table tbody{background-color:rgba(0,0,0,0)}.table tbody tr:last-child td,.table tbody tr:last-child th{border-bottom-width:0}.table.is-bordered td,.table.is-bordered th{border-width:1px}.table.is-bordered tr:last-child td,.table.is-bordered tr:last-child th{border-bottom-width:1px}.table.is-fullwidth{width:100%}.table.is-hoverable tbody tr:not(.is-selected):hover{background-color:#fafafa}.table.is-hoverable.is-striped tbody tr:not(.is-selected):hover{background-color:#fafafa}.table.is-hoverable.is-striped tbody tr:not(.is-selected):hover:nth-child(even){background-color:#f5f5f5}.table.is-narrow td,.table.is-narrow th{padding:0.25em 0.5em}.table.is-striped tbody tr:not(.is-selected):nth-child(even){background-color:#fafafa}.table-container{-webkit-overflow-scrolling:touch;overflow:auto;overflow-y:hidden;max-width:100%}.tags{align-items:center;display:flex;flex-wrap:wrap;justify-content:flex-start}.tags .tag{margin-bottom:0.5rem}.tags .tag:not(:last-child){margin-right:.5rem}.tags:last-child{margin-bottom:-0.5rem}.tags:not(:last-child){margin-bottom:1rem}.tags.are-medium .tag:not(.is-normal):not(.is-large){font-size:1rem}.tags.are-large .tag:not(.is-normal):not(.is-medium){font-size:1.25rem}.tags.is-centered{justify-content:center}.tags.is-centered .tag{margin-right:0.25rem;margin-left:0.25rem}.tags.is-right{justify-content:flex-end}.tags.is-right .tag:not(:first-child){margin-left:0.5rem}.tags.is-right .tag:not(:last-child){margin-right:0}.tags.has-addons .tag{margin-right:0}.tags.has-addons .tag:not(:first-child){margin-left:0;border-top-left-radius:0;border-bottom-left-radius:0}.tags.has-addons .tag:not(:last-child){border-top-right-radius:0;border-bottom-right-radius:0}.tag:not(body){align-items:center;background-color:#f5f5f5;border-radius:4px;color:#4a4a4a;display:inline-flex;font-size:.75rem;height:2em;justify-content:center;line-height:1.5;padding-left:0.75em;padding-right:0.75em;white-space:nowrap}.tag:not(body) .delete{margin-left:.25rem;margin-right:-.375rem}.tag:not(body).is-white{background-color:#fff;color:#0a0a0a}.tag:not(body).is-black{background-color:#0a0a0a;color:#fff}.tag:not(body).is-light{background-color:#f5f5f5;color:rgba(0,0,0,0.7)}.tag:not(body).is-dark{background-color:#363636;color:#fff}.tag:not(body).is-primary{background-color:#00d1b2;color:#fff}.tag:not(body).is-primary.is-light{background-color:#ebfffc;color:#00947e}.tag:not(body).is-link{background-color:#485fc7;color:#fff}.tag:not(body).is-link.is-light{background-color:#eff1fa;color:#3850b7}.tag:not(body).is-info{background-color:#3e8ed0;color:#fff}.tag:not(body).is-info.is-light{background-color:#eff5fb;color:#296fa8}.tag:not(body).is-success{background-color:#48c78e;color:#fff}.tag:not(body).is-success.is-light{background-color:#effaf5;color:#257953}.tag:not(body).is-warning{background-color:#ffe08a;color:rgba(0,0,0,0.7)}.tag:not(body).is-warning.is-light{background-color:#fffaeb;color:#946c00}.tag:not(body).is-danger{background-color:#f14668;color:#fff}.tag:not(body).is-danger.is-light{background-color:#feecf0;color:#cc0f35}.tag:not(body).is-normal{font-size:.75rem}.tag:not(body).is-medium{font-size:1rem}.tag:not(body).is-large{font-size:1.25rem}.tag:not(body) .icon:first-child:not(:last-child){margin-left:-.375em;margin-right:.1875em}.tag:not(body) .icon:last-child:not(:first-child){margin-left:.1875em;margin-right:-.375em}.tag:not(body) .icon:first-child:last-child{margin-left:-.375em;margin-right:-.375em}.tag:not(body).is-delete{margin-left:1px;padding:0;position:relative;width:2em}.tag:not(body).is-delete::before,.tag:not(body).is-delete::after{background-color:currentColor;content:"";display:block;left:50%;position:absolute;top:50%;transform:translateX(-50%) translateY(-50%) rotate(45deg);transform-origin:center center}.tag:not(body).is-delete::before{height:1px;width:50%}.tag:not(body).is-delete::after{height:50%;width:1px}.tag:not(body).is-delete:hover,.tag:not(body).is-delete:focus{background-color:#e8e8e8}.tag:not(body).is-delete:active{background-color:#dbdbdb}.tag:not(body).is-rounded{border-radius:9999px}a.tag:hover{text-decoration:underline}.title,.subtitle{word-break:break-word}.title em,.title span,.subtitle em,.subtitle span{font-weight:inherit}.title sub,.subtitle sub{font-size:.75em}.title sup,.subtitle sup{font-size:.75em}.title .tag,.subtitle .tag{vertical-align:middle}.title{color:#363636;font-size:2rem;font-weight:600;line-height:1.125}.title strong{color:inherit;font-weight:inherit}.title:not(.is-spaced)+.subtitle{margin-top:-1.25rem}.title.is-1{font-size:3rem}.title.is-2{font-size:2.5rem}.title.is-3{font-size:2rem}.title.is-4{font-size:1.5rem}.title.is-5{font-size:1.25rem}.title.is-6{font-size:1rem}.title.is-7{font-size:.75rem}.subtitle{color:#4a4a4a;font-size:1.25rem;font-weight:400;line-height:1.25}.subtitle strong{color:#363636;font-weight:600}.subtitle:not(.is-spaced)+.title{margin-top:-1.25rem}.subtitle.is-1{font-size:3rem}.subtitle.is-2{font-size:2.5rem}.subtitle.is-3{font-size:2rem}.subtitle.is-4{font-size:1.5rem}.subtitle.is-5{font-size:1.25rem}.subtitle.is-6{font-size:1rem}.subtitle.is-7{font-size:.75rem}.heading{display:block;font-size:11px;letter-spacing:1px;margin-bottom:5px;text-transform:uppercase}.number{align-items:center;background-color:#f5f5f5;border-radius:9999px;display:inline-flex;font-size:1.25rem;height:2em;justify-content:center;margin-right:1.5rem;min-width:2.5em;padding:0.25rem 0.5rem;text-align:center;vertical-align:top}.select select,.textarea,.input{background-color:#fff;border-color:#dbdbdb;border-radius:4px;color:#363636}.select select::-moz-placeholder,.textarea::-moz-placeholder,.input::-moz-placeholder{color:rgba(54,54,54,0.3)}.select select::-webkit-input-placeholder,.textarea::-webkit-input-placeholder,.input::-webkit-input-placeholder{color:rgba(54,54,54,0.3)}.select select:-moz-placeholder,.textarea:-moz-placeholder,.input:-moz-placeholder{color:rgba(54,54,54,0.3)}.select select:-ms-input-placeholder,.textarea:-ms-input-placeholder,.input:-ms-input-placeholder{color:rgba(54,54,54,0.3)}.select select:hover,.textarea:hover,.input:hover,.select select.is-hovered,.is-hovered.textarea,.is-hovered.input{border-color:#b5b5b5}.select select:focus,.textarea:focus,.input:focus,.select select.is-focused,.is-focused.textarea,.is-focused.input,.select select:active,.textarea:active,.input:active,.select select.is-active,.is-active.textarea,.is-active.input{border-color:#485fc7;box-shadow:0 0 0 0.125em rgba(72,95,199,0.25)}.select select[disabled],[disabled].textarea,[disabled].input,fieldset[disabled] .select select,.select fieldset[disabled] select,fieldset[disabled] .textarea,fieldset[disabled] .input{background-color:#f5f5f5;border-color:#f5f5f5;box-shadow:none;color:#7a7a7a}.select select[disabled]::-moz-placeholder,[disabled].textarea::-moz-placeholder,[disabled].input::-moz-placeholder,fieldset[disabled] .select select::-moz-placeholder,.select fieldset[disabled] select::-moz-placeholder,fieldset[disabled] .textarea::-moz-placeholder,fieldset[disabled] .input::-moz-placeholder{color:rgba(122,122,122,0.3)}.select select[disabled]::-webkit-input-placeholder,[disabled].textarea::-webkit-input-placeholder,[disabled].input::-webkit-input-placeholder,fieldset[disabled] .select select::-webkit-input-placeholder,.select fieldset[disabled] select::-webkit-input-placeholder,fieldset[disabled] .textarea::-webkit-input-placeholder,fieldset[disabled] .input::-webkit-input-placeholder{color:rgba(122,122,122,0.3)}.select select[disabled]:-moz-placeholder,[disabled].textarea:-moz-placeholder,[disabled].input:-moz-placeholder,fieldset[disabled] .select select:-moz-placeholder,.select fieldset[disabled] select:-moz-placeholder,fieldset[disabled] .textarea:-moz-placeholder,fieldset[disabled] .input:-moz-placeholder{color:rgba(122,122,122,0.3)}.select select[disabled]:-ms-input-placeholder,[disabled].textarea:-ms-input-placeholder,[disabled].input:-ms-input-placeholder,fieldset[disabled] .select select:-ms-input-placeholder,.select fieldset[disabled] select:-ms-input-placeholder,fieldset[disabled] .textarea:-ms-input-placeholder,fieldset[disabled] .input:-ms-input-placeholder{color:rgba(122,122,122,0.3)}.textarea,.input{box-shadow:inset 0 0.0625em 0.125em rgba(10,10,10,0.05);max-width:100%;width:100%}[readonly].textarea,[readonly].input{box-shadow:none}.is-white.textarea,.is-white.input{border-color:#fff}.is-white.textarea:focus,.is-white.input:focus,.is-white.is-focused.textarea,.is-white.is-focused.input,.is-white.textarea:active,.is-white.input:active,.is-white.is-active.textarea,.is-white.is-active.input{box-shadow:0 0 0 0.125em rgba(255,255,255,0.25)}.is-black.textarea,.is-black.input{border-color:#0a0a0a}.is-black.textarea:focus,.is-black.input:focus,.is-black.is-focused.textarea,.is-black.is-focused.input,.is-black.textarea:active,.is-black.input:active,.is-black.is-active.textarea,.is-black.is-active.input{box-shadow:0 0 0 0.125em rgba(10,10,10,0.25)}.is-light.textarea,.is-light.input{border-color:#f5f5f5}.is-light.textarea:focus,.is-light.input:focus,.is-light.is-focused.textarea,.is-light.is-focused.input,.is-light.textarea:active,.is-light.input:active,.is-light.is-active.textarea,.is-light.is-active.input{box-shadow:0 0 0 0.125em rgba(245,245,245,0.25)}.is-dark.textarea,.is-dark.input{border-color:#363636}.is-dark.textarea:focus,.is-dark.input:focus,.is-dark.is-focused.textarea,.is-dark.is-focused.input,.is-dark.textarea:active,.is-dark.input:active,.is-dark.is-active.textarea,.is-dark.is-active.input{box-shadow:0 0 0 0.125em rgba(54,54,54,0.25)}.is-primary.textarea,.is-primary.input{border-color:#00d1b2}.is-primary.textarea:focus,.is-primary.input:focus,.is-primary.is-focused.textarea,.is-primary.is-focused.input,.is-primary.textarea:active,.is-primary.input:active,.is-primary.is-active.textarea,.is-primary.is-active.input{box-shadow:0 0 0 0.125em rgba(0,209,178,0.25)}.is-link.textarea,.is-link.input{border-color:#485fc7}.is-link.textarea:focus,.is-link.input:focus,.is-link.is-focused.textarea,.is-link.is-focused.input,.is-link.textarea:active,.is-link.input:active,.is-link.is-active.textarea,.is-link.is-active.input{box-shadow:0 0 0 0.125em rgba(72,95,199,0.25)}.is-info.textarea,.is-info.input{border-color:#3e8ed0}.is-info.textarea:focus,.is-info.input:focus,.is-info.is-focused.textarea,.is-info.is-focused.input,.is-info.textarea:active,.is-info.input:active,.is-info.is-active.textarea,.is-info.is-active.input{box-shadow:0 0 0 0.125em rgba(62,142,208,0.25)}.is-success.textarea,.is-success.input{border-color:#48c78e}.is-success.textarea:focus,.is-success.input:focus,.is-success.is-focused.textarea,.is-success.is-focused.input,.is-success.textarea:active,.is-success.input:active,.is-success.is-active.textarea,.is-success.is-active.input{box-shadow:0 0 0 0.125em rgba(72,199,142,0.25)}.is-warning.textarea,.is-warning.input{border-color:#ffe08a}.is-warning.textarea:focus,.is-warning.input:focus,.is-warning.is-focused.textarea,.is-warning.is-focused.input,.is-warning.textarea:active,.is-warning.input:active,.is-warning.is-active.textarea,.is-warning.is-active.input{box-shadow:0 0 0 0.125em rgba(255,224,138,0.25)}.is-danger.textarea,.is-danger.input{border-color:#f14668}.is-danger.textarea:focus,.is-danger.input:focus,.is-danger.is-focused.textarea,.is-danger.is-focused.input,.is-danger.textarea:active,.is-danger.input:active,.is-danger.is-active.textarea,.is-danger.is-active.input{box-shadow:0 0 0 0.125em rgba(241,70,104,0.25)}.is-small.textarea,.is-small.input{border-radius:2px;font-size:.75rem}.is-medium.textarea,.is-medium.input{font-size:1.25rem}.is-large.textarea,.is-large.input{font-size:1.5rem}.is-fullwidth.textarea,.is-fullwidth.input{display:block;width:100%}.is-inline.textarea,.is-inline.input{display:inline;width:auto}.input.is-rounded{border-radius:9999px;padding-left:calc(calc(0.75em - 1px) + 0.375em);padding-right:calc(calc(0.75em - 1px) + 0.375em)}.input.is-static{background-color:transparent;border-color:transparent;box-shadow:none;padding-left:0;padding-right:0}.textarea{display:block;max-width:100%;min-width:100%;padding:calc(0.75em - 1px);resize:vertical}.textarea:not([rows]){max-height:40em;min-height:8em}.textarea[rows]{height:initial}.textarea.has-fixed-size{resize:none}.radio,.checkbox{cursor:pointer;display:inline-block;line-height:1.25;position:relative}.radio input,.checkbox input{cursor:pointer}.radio:hover,.checkbox:hover{color:#363636}[disabled].radio,[disabled].checkbox,fieldset[disabled] .radio,fieldset[disabled] .checkbox,.radio input[disabled],.checkbox input[disabled]{color:#7a7a7a;cursor:not-allowed}.radio+.radio{margin-left:.5em}.select{display:inline-block;max-width:100%;position:relative;vertical-align:top}.select:not(.is-multiple){height:2.5em}.select:not(.is-multiple):not(.is-loading)::after{border-color:#485fc7;right:1.125em;z-index:4}.select.is-rounded select{border-radius:9999px;padding-left:1em}.select select{cursor:pointer;display:block;font-size:1em;max-width:100%;outline:none}.select select::-ms-expand{display:none}.select select[disabled]:hover,fieldset[disabled] .select select:hover{border-color:#f5f5f5}.select select:not([multiple]){padding-right:2.5em}.select select[multiple]{height:auto;padding:0}.select select[multiple] option{padding:0.5em 1em}.select:not(.is-multiple):not(.is-loading):hover::after{border-color:#363636}.select.is-white:not(:hover)::after{border-color:#fff}.select.is-white select{border-color:#fff}.select.is-white select:hover,.select.is-white select.is-hovered{border-color:#f2f2f2}.select.is-white select:focus,.select.is-white select.is-focused,.select.is-white select:active,.select.is-white select.is-active{box-shadow:0 0 0 0.125em rgba(255,255,255,0.25)}.select.is-black:not(:hover)::after{border-color:#0a0a0a}.select.is-black select{border-color:#0a0a0a}.select.is-black select:hover,.select.is-black select.is-hovered{border-color:#000}.select.is-black select:focus,.select.is-black select.is-focused,.select.is-black select:active,.select.is-black select.is-active{box-shadow:0 0 0 0.125em rgba(10,10,10,0.25)}.select.is-light:not(:hover)::after{border-color:#f5f5f5}.select.is-light select{border-color:#f5f5f5}.select.is-light select:hover,.select.is-light select.is-hovered{border-color:#e8e8e8}.select.is-light select:focus,.select.is-light select.is-focused,.select.is-light select:active,.select.is-light select.is-active{box-shadow:0 0 0 0.125em rgba(245,245,245,0.25)}.select.is-dark:not(:hover)::after{border-color:#363636}.select.is-dark select{border-color:#363636}.select.is-dark select:hover,.select.is-dark select.is-hovered{border-color:#292929}.select.is-dark select:focus,.select.is-dark select.is-focused,.select.is-dark select:active,.select.is-dark select.is-active{box-shadow:0 0 0 0.125em rgba(54,54,54,0.25)}.select.is-primary:not(:hover)::after{border-color:#00d1b2}.select.is-primary select{border-color:#00d1b2}.select.is-primary select:hover,.select.is-primary select.is-hovered{border-color:#00b89c}.select.is-primary select:focus,.select.is-primary select.is-focused,.select.is-primary select:active,.select.is-primary select.is-active{box-shadow:0 0 0 0.125em rgba(0,209,178,0.25)}.select.is-link:not(:hover)::after{border-color:#485fc7}.select.is-link select{border-color:#485fc7}.select.is-link select:hover,.select.is-link select.is-hovered{border-color:#3a51bb}.select.is-link select:focus,.select.is-link select.is-focused,.select.is-link select:active,.select.is-link select.is-active{box-shadow:0 0 0 0.125em rgba(72,95,199,0.25)}.select.is-info:not(:hover)::after{border-color:#3e8ed0}.select.is-info select{border-color:#3e8ed0}.select.is-info select:hover,.select.is-info select.is-hovered{border-color:#3082c5}.select.is-info select:focus,.select.is-info select.is-focused,.select.is-info select:active,.select.is-info select.is-active{box-shadow:0 0 0 0.125em rgba(62,142,208,0.25)}.select.is-success:not(:hover)::after{border-color:#48c78e}.select.is-success select{border-color:#48c78e}.select.is-success select:hover,.select.is-success select.is-hovered{border-color:#3abb81}.select.is-success select:focus,.select.is-success select.is-focused,.select.is-success select:active,.select.is-success select.is-active{box-shadow:0 0 0 0.125em rgba(72,199,142,0.25)}.select.is-warning:not(:hover)::after{border-color:#ffe08a}.select.is-warning select{border-color:#ffe08a}.select.is-warning select:hover,.select.is-warning select.is-hovered{border-color:#ffd970}.select.is-warning select:focus,.select.is-warning select.is-focused,.select.is-warning select:active,.select.is-warning select.is-active{box-shadow:0 0 0 0.125em rgba(255,224,138,0.25)}.select.is-danger:not(:hover)::after{border-color:#f14668}.select.is-danger select{border-color:#f14668}.select.is-danger select:hover,.select.is-danger select.is-hovered{border-color:#ef2e55}.select.is-danger select:focus,.select.is-danger select.is-focused,.select.is-danger select:active,.select.is-danger select.is-active{box-shadow:0 0 0 0.125em rgba(241,70,104,0.25)}.select.is-small{border-radius:2px;font-size:.75rem}.select.is-medium{font-size:1.25rem}.select.is-large{font-size:1.5rem}.select.is-disabled::after{border-color:#7a7a7a !important;opacity:0.5}.select.is-fullwidth{width:100%}.select.is-fullwidth select{width:100%}.select.is-loading::after{margin-top:0;position:absolute;right:.625em;top:0.625em;transform:none}.select.is-loading.is-small:after{font-size:.75rem}.select.is-loading.is-medium:after{font-size:1.25rem}.select.is-loading.is-large:after{font-size:1.5rem}.file{align-items:stretch;display:flex;justify-content:flex-start;position:relative}.file.is-white .file-cta{background-color:#fff;border-color:transparent;color:#0a0a0a}.file.is-white:hover .file-cta,.file.is-white.is-hovered .file-cta{background-color:#f9f9f9;border-color:transparent;color:#0a0a0a}.file.is-white:focus .file-cta,.file.is-white.is-focused .file-cta{border-color:transparent;box-shadow:0 0 0.5em rgba(255,255,255,0.25);color:#0a0a0a}.file.is-white:active .file-cta,.file.is-white.is-active .file-cta{background-color:#f2f2f2;border-color:transparent;color:#0a0a0a}.file.is-black .file-cta{background-color:#0a0a0a;border-color:transparent;color:#fff}.file.is-black:hover .file-cta,.file.is-black.is-hovered .file-cta{background-color:#040404;border-color:transparent;color:#fff}.file.is-black:focus .file-cta,.file.is-black.is-focused .file-cta{border-color:transparent;box-shadow:0 0 0.5em rgba(10,10,10,0.25);color:#fff}.file.is-black:active .file-cta,.file.is-black.is-active .file-cta{background-color:#000;border-color:transparent;color:#fff}.file.is-light .file-cta{background-color:#f5f5f5;border-color:transparent;color:rgba(0,0,0,0.7)}.file.is-light:hover .file-cta,.file.is-light.is-hovered .file-cta{background-color:#eee;border-color:transparent;color:rgba(0,0,0,0.7)}.file.is-light:focus .file-cta,.file.is-light.is-focused .file-cta{border-color:transparent;box-shadow:0 0 0.5em rgba(245,245,245,0.25);color:rgba(0,0,0,0.7)}.file.is-light:active .file-cta,.file.is-light.is-active .file-cta{background-color:#e8e8e8;border-color:transparent;color:rgba(0,0,0,0.7)}.file.is-dark .file-cta{background-color:#363636;border-color:transparent;color:#fff}.file.is-dark:hover .file-cta,.file.is-dark.is-hovered .file-cta{background-color:#2f2f2f;border-color:transparent;color:#fff}.file.is-dark:focus .file-cta,.file.is-dark.is-focused .file-cta{border-color:transparent;box-shadow:0 0 0.5em rgba(54,54,54,0.25);color:#fff}.file.is-dark:active .file-cta,.file.is-dark.is-active .file-cta{background-color:#292929;border-color:transparent;color:#fff}.file.is-primary .file-cta{background-color:#00d1b2;border-color:transparent;color:#fff}.file.is-primary:hover .file-cta,.file.is-primary.is-hovered .file-cta{background-color:#00c4a7;border-color:transparent;color:#fff}.file.is-primary:focus .file-cta,.file.is-primary.is-focused .file-cta{border-color:transparent;box-shadow:0 0 0.5em rgba(0,209,178,0.25);color:#fff}.file.is-primary:active .file-cta,.file.is-primary.is-active .file-cta{background-color:#00b89c;border-color:transparent;color:#fff}.file.is-link .file-cta{background-color:#485fc7;border-color:transparent;color:#fff}.file.is-link:hover .file-cta,.file.is-link.is-hovered .file-cta{background-color:#3e56c4;border-color:transparent;color:#fff}.file.is-link:focus .file-cta,.file.is-link.is-focused .file-cta{border-color:transparent;box-shadow:0 0 0.5em rgba(72,95,199,0.25);color:#fff}.file.is-link:active .file-cta,.file.is-link.is-active .file-cta{background-color:#3a51bb;border-color:transparent;color:#fff}.file.is-info .file-cta{background-color:#3e8ed0;border-color:transparent;color:#fff}.file.is-info:hover .file-cta,.file.is-info.is-hovered .file-cta{background-color:#3488ce;border-color:transparent;color:#fff}.file.is-info:focus .file-cta,.file.is-info.is-focused .file-cta{border-color:transparent;box-shadow:0 0 0.5em rgba(62,142,208,0.25);color:#fff}.file.is-info:active .file-cta,.file.is-info.is-active .file-cta{background-color:#3082c5;border-color:transparent;color:#fff}.file.is-success .file-cta{background-color:#48c78e;border-color:transparent;color:#fff}.file.is-success:hover .file-cta,.file.is-success.is-hovered .file-cta{background-color:#3ec487;border-color:transparent;color:#fff}.file.is-success:focus .file-cta,.file.is-success.is-focused .file-cta{border-color:transparent;box-shadow:0 0 0.5em rgba(72,199,142,0.25);color:#fff}.file.is-success:active .file-cta,.file.is-success.is-active .file-cta{background-color:#3abb81;border-color:transparent;color:#fff}.file.is-warning .file-cta{background-color:#ffe08a;border-color:transparent;color:rgba(0,0,0,0.7)}.file.is-warning:hover .file-cta,.file.is-warning.is-hovered .file-cta{background-color:#ffdc7d;border-color:transparent;color:rgba(0,0,0,0.7)}.file.is-warning:focus .file-cta,.file.is-warning.is-focused .file-cta{border-color:transparent;box-shadow:0 0 0.5em rgba(255,224,138,0.25);color:rgba(0,0,0,0.7)}.file.is-warning:active .file-cta,.file.is-warning.is-active .file-cta{background-color:#ffd970;border-color:transparent;color:rgba(0,0,0,0.7)}.file.is-danger .file-cta{background-color:#f14668;border-color:transparent;color:#fff}.file.is-danger:hover .file-cta,.file.is-danger.is-hovered .file-cta{background-color:#f03a5f;border-color:transparent;color:#fff}.file.is-danger:focus .file-cta,.file.is-danger.is-focused .file-cta{border-color:transparent;box-shadow:0 0 0.5em rgba(241,70,104,0.25);color:#fff}.file.is-danger:active .file-cta,.file.is-danger.is-active .file-cta{background-color:#ef2e55;border-color:transparent;color:#fff}.file.is-small{font-size:.75rem}.file.is-normal{font-size:1rem}.file.is-medium{font-size:1.25rem}.file.is-medium .file-icon .fa{font-size:21px}.file.is-large{font-size:1.5rem}.file.is-large .file-icon .fa{font-size:28px}.file.has-name .file-cta{border-bottom-right-radius:0;border-top-right-radius:0}.file.has-name .file-name{border-bottom-left-radius:0;border-top-left-radius:0}.file.has-name.is-empty .file-cta{border-radius:4px}.file.has-name.is-empty .file-name{display:none}.file.is-boxed .file-label{flex-direction:column}.file.is-boxed .file-cta{flex-direction:column;height:auto;padding:1em 3em}.file.is-boxed .file-name{border-width:0 1px 1px}.file.is-boxed .file-icon{height:1.5em;width:1.5em}.file.is-boxed .file-icon .fa{font-size:21px}.file.is-boxed.is-small .file-icon .fa{font-size:14px}.file.is-boxed.is-medium .file-icon .fa{font-size:28px}.file.is-boxed.is-large .file-icon .fa{font-size:35px}.file.is-boxed.has-name .file-cta{border-radius:4px 4px 0 0}.file.is-boxed.has-name .file-name{border-radius:0 0 4px 4px;border-width:0 1px 1px}.file.is-centered{justify-content:center}.file.is-fullwidth .file-label{width:100%}.file.is-fullwidth .file-name{flex-grow:1;max-width:none}.file.is-right{justify-content:flex-end}.file.is-right .file-cta{border-radius:0 4px 4px 0}.file.is-right .file-name{border-radius:4px 0 0 4px;border-width:1px 0 1px 1px;order:-1}.file-label{align-items:stretch;display:flex;cursor:pointer;justify-content:flex-start;overflow:hidden;position:relative}.file-label:hover .file-cta{background-color:#eee;color:#363636}.file-label:hover .file-name{border-color:#d5d5d5}.file-label:active .file-cta{background-color:#e8e8e8;color:#363636}.file-label:active .file-name{border-color:#cfcfcf}.file-input{height:100%;left:0;opacity:0;outline:none;position:absolute;top:0;width:100%}.file-cta,.file-name{border-color:#dbdbdb;border-radius:4px;font-size:1em;padding-left:1em;padding-right:1em;white-space:nowrap}.file-cta{background-color:#f5f5f5;color:#4a4a4a}.file-name{border-color:#dbdbdb;border-style:solid;border-width:1px 1px 1px 0;display:block;max-width:16em;overflow:hidden;text-align:inherit;text-overflow:ellipsis}.file-icon{align-items:center;display:flex;height:1em;justify-content:center;margin-right:.5em;width:1em}.file-icon .fa{font-size:14px}.label{color:#363636;display:block;font-size:1rem;font-weight:700}.label:not(:last-child){margin-bottom:0.5em}.label.is-small{font-size:.75rem}.label.is-medium{font-size:1.25rem}.label.is-large{font-size:1.5rem}.help{display:block;font-size:.75rem;margin-top:0.25rem}.help.is-white{color:#fff}.help.is-black{color:#0a0a0a}.help.is-light{color:#f5f5f5}.help.is-dark{color:#363636}.help.is-primary{color:#00d1b2}.help.is-link{color:#485fc7}.help.is-info{color:#3e8ed0}.help.is-success{color:#48c78e}.help.is-warning{color:#ffe08a}.help.is-danger{color:#f14668}.field:not(:last-child){margin-bottom:0.75rem}.field.has-addons{display:flex;justify-content:flex-start}.field.has-addons .control:not(:last-child){margin-right:-1px}.field.has-addons .control:not(:first-child):not(:last-child) .button,.field.has-addons .control:not(:first-child):not(:last-child) .input,.field.has-addons .control:not(:first-child):not(:last-child) .select select{border-radius:0}.field.has-addons .control:first-child:not(:only-child) .button,.field.has-addons .control:first-child:not(:only-child) .input,.field.has-addons .control:first-child:not(:only-child) .select select{border-bottom-right-radius:0;border-top-right-radius:0}.field.has-addons .control:last-child:not(:only-child) .button,.field.has-addons .control:last-child:not(:only-child) .input,.field.has-addons .control:last-child:not(:only-child) .select select{border-bottom-left-radius:0;border-top-left-radius:0}.field.has-addons .control .button:not([disabled]):hover,.field.has-addons .control .button:not([disabled]).is-hovered,.field.has-addons .control .input:not([disabled]):hover,.field.has-addons .control .input:not([disabled]).is-hovered,.field.has-addons .control .select select:not([disabled]):hover,.field.has-addons .control .select select:not([disabled]).is-hovered{z-index:2}.field.has-addons .control .button:not([disabled]):focus,.field.has-addons .control .button:not([disabled]).is-focused,.field.has-addons .control .button:not([disabled]):active,.field.has-addons .control .button:not([disabled]).is-active,.field.has-addons .control .input:not([disabled]):focus,.field.has-addons .control .input:not([disabled]).is-focused,.field.has-addons .control .input:not([disabled]):active,.field.has-addons .control .input:not([disabled]).is-active,.field.has-addons .control .select select:not([disabled]):focus,.field.has-addons .control .select select:not([disabled]).is-focused,.field.has-addons .control .select select:not([disabled]):active,.field.has-addons .control .select select:not([disabled]).is-active{z-index:3}.field.has-addons .control .button:not([disabled]):focus:hover,.field.has-addons .control .button:not([disabled]).is-focused:hover,.field.has-addons .control .button:not([disabled]):active:hover,.field.has-addons .control .button:not([disabled]).is-active:hover,.field.has-addons .control .input:not([disabled]):focus:hover,.field.has-addons .control .input:not([disabled]).is-focused:hover,.field.has-addons .control .input:not([disabled]):active:hover,.field.has-addons .control .input:not([disabled]).is-active:hover,.field.has-addons .control .select select:not([disabled]):focus:hover,.field.has-addons .control .select select:not([disabled]).is-focused:hover,.field.has-addons .control .select select:not([disabled]):active:hover,.field.has-addons .control .select select:not([disabled]).is-active:hover{z-index:4}.field.has-addons .control.is-expanded{flex-grow:1;flex-shrink:1}.field.has-addons.has-addons-centered{justify-content:center}.field.has-addons.has-addons-right{justify-content:flex-end}.field.has-addons.has-addons-fullwidth .control{flex-grow:1;flex-shrink:0}.field.is-grouped{display:flex;justify-content:flex-start}.field.is-grouped>.control{flex-shrink:0}.field.is-grouped>.control:not(:last-child){margin-bottom:0;margin-right:.75rem}.field.is-grouped>.control.is-expanded{flex-grow:1;flex-shrink:1}.field.is-grouped.is-grouped-centered{justify-content:center}.field.is-grouped.is-grouped-right{justify-content:flex-end}.field.is-grouped.is-grouped-multiline{flex-wrap:wrap}.field.is-grouped.is-grouped-multiline>.control:last-child,.field.is-grouped.is-grouped-multiline>.control:not(:last-child){margin-bottom:0.75rem}.field.is-grouped.is-grouped-multiline:last-child{margin-bottom:-0.75rem}.field.is-grouped.is-grouped-multiline:not(:last-child){margin-bottom:0}@media screen and (min-width: 769px),print{.field.is-horizontal{display:flex}}.field-label .label{font-size:inherit}@media screen and (max-width: 768px){.field-label{margin-bottom:0.5rem}}@media screen and (min-width: 769px),print{.field-label{flex-basis:0;flex-grow:1;flex-shrink:0;margin-right:1.5rem;text-align:right}.field-label.is-small{font-size:.75rem;padding-top:0.375em}.field-label.is-normal{padding-top:0.375em}.field-label.is-medium{font-size:1.25rem;padding-top:0.375em}.field-label.is-large{font-size:1.5rem;padding-top:0.375em}}.field-body .field .field{margin-bottom:0}@media screen and (min-width: 769px),print{.field-body{display:flex;flex-basis:0;flex-grow:5;flex-shrink:1}.field-body .field{margin-bottom:0}.field-body>.field{flex-shrink:1}.field-body>.field:not(.is-narrow){flex-grow:1}.field-body>.field:not(:last-child){margin-right:.75rem}}.control{box-sizing:border-box;clear:both;font-size:1rem;position:relative;text-align:inherit}.control.has-icons-left .input:focus~.icon,.control.has-icons-left .select:focus~.icon,.control.has-icons-right .input:focus~.icon,.control.has-icons-right .select:focus~.icon{color:#4a4a4a}.control.has-icons-left .input.is-small~.icon,.control.has-icons-left .select.is-small~.icon,.control.has-icons-right .input.is-small~.icon,.control.has-icons-right .select.is-small~.icon{font-size:.75rem}.control.has-icons-left .input.is-medium~.icon,.control.has-icons-left .select.is-medium~.icon,.control.has-icons-right .input.is-medium~.icon,.control.has-icons-right .select.is-medium~.icon{font-size:1.25rem}.control.has-icons-left .input.is-large~.icon,.control.has-icons-left .select.is-large~.icon,.control.has-icons-right .input.is-large~.icon,.control.has-icons-right .select.is-large~.icon{font-size:1.5rem}.control.has-icons-left .icon,.control.has-icons-right .icon{color:#dbdbdb;height:2.5em;pointer-events:none;position:absolute;top:0;width:2.5em;z-index:4}.control.has-icons-left .input,.control.has-icons-left .select select{padding-left:2.5em}.control.has-icons-left .icon.is-left{left:0}.control.has-icons-right .input,.control.has-icons-right .select select{padding-right:2.5em}.control.has-icons-right .icon.is-right{right:0}.control.is-loading::after{position:absolute !important;right:.625em;top:0.625em;z-index:4}.control.is-loading.is-small:after{font-size:.75rem}.control.is-loading.is-medium:after{font-size:1.25rem}.control.is-loading.is-large:after{font-size:1.5rem}.breadcrumb{font-size:1rem;white-space:nowrap}.breadcrumb a{align-items:center;color:#485fc7;display:flex;justify-content:center;padding:0 .75em}.breadcrumb a:hover{color:#363636}.breadcrumb li{align-items:center;display:flex}.breadcrumb li:first-child a{padding-left:0}.breadcrumb li.is-active a{color:#363636;cursor:default;pointer-events:none}.breadcrumb li+li::before{color:#b5b5b5;content:"\0002f"}.breadcrumb ul,.breadcrumb ol{align-items:flex-start;display:flex;flex-wrap:wrap;justify-content:flex-start}.breadcrumb .icon:first-child{margin-right:.5em}.breadcrumb .icon:last-child{margin-left:.5em}.breadcrumb.is-centered ol,.breadcrumb.is-centered ul{justify-content:center}.breadcrumb.is-right ol,.breadcrumb.is-right ul{justify-content:flex-end}.breadcrumb.is-small{font-size:.75rem}.breadcrumb.is-medium{font-size:1.25rem}.breadcrumb.is-large{font-size:1.5rem}.breadcrumb.has-arrow-separator li+li::before{content:"\02192"}.breadcrumb.has-bullet-separator li+li::before{content:"\02022"}.breadcrumb.has-dot-separator li+li::before{content:"\000b7"}.breadcrumb.has-succeeds-separator li+li::before{content:"\0227B"}.card{background-color:#fff;border-radius:.25rem;box-shadow:0 0.5em 1em -0.125em rgba(10,10,10,0.1),0 0px 0 1px rgba(10,10,10,0.02);color:#4a4a4a;max-width:100%;position:relative}.card-footer:first-child,.card-content:first-child,.card-header:first-child{border-top-left-radius:.25rem;border-top-right-radius:.25rem}.card-footer:last-child,.card-content:last-child,.card-header:last-child{border-bottom-left-radius:.25rem;border-bottom-right-radius:.25rem}.card-header{background-color:rgba(0,0,0,0);align-items:stretch;box-shadow:0 0.125em 0.25em rgba(10,10,10,0.1);display:flex}.card-header-title{align-items:center;color:#363636;display:flex;flex-grow:1;font-weight:700;padding:0.75rem 1rem}.card-header-title.is-centered{justify-content:center}.card-header-icon{-moz-appearance:none;-webkit-appearance:none;appearance:none;background:none;border:none;color:currentColor;font-family:inherit;font-size:1em;margin:0;padding:0;align-items:center;cursor:pointer;display:flex;justify-content:center;padding:0.75rem 1rem}.card-image{display:block;position:relative}.card-image:first-child img{border-top-left-radius:.25rem;border-top-right-radius:.25rem}.card-image:last-child img{border-bottom-left-radius:.25rem;border-bottom-right-radius:.25rem}.card-content{background-color:rgba(0,0,0,0);padding:1.5rem}.card-footer{background-color:rgba(0,0,0,0);border-top:1px solid #ededed;align-items:stretch;display:flex}.card-footer-item{align-items:center;display:flex;flex-basis:0;flex-grow:1;flex-shrink:0;justify-content:center;padding:.75rem}.card-footer-item:not(:last-child){border-right:1px solid #ededed}.card .media:not(:last-child){margin-bottom:1.5rem}.dropdown{display:inline-flex;position:relative;vertical-align:top}.dropdown.is-active .dropdown-menu,.dropdown.is-hoverable:hover .dropdown-menu{display:block}.dropdown.is-right .dropdown-menu{left:auto;right:0}.dropdown.is-up .dropdown-menu{bottom:100%;padding-bottom:4px;padding-top:initial;top:auto}.dropdown-menu{display:none;left:0;min-width:12rem;padding-top:4px;position:absolute;top:100%;z-index:20}.dropdown-content{background-color:#fff;border-radius:4px;box-shadow:0 0.5em 1em -0.125em rgba(10,10,10,0.1),0 0px 0 1px rgba(10,10,10,0.02);padding-bottom:.5rem;padding-top:.5rem}.dropdown-item{color:#4a4a4a;display:block;font-size:0.875rem;line-height:1.5;padding:0.375rem 1rem;position:relative}a.dropdown-item,button.dropdown-item{padding-right:3rem;text-align:inherit;white-space:nowrap;width:100%}a.dropdown-item:hover,button.dropdown-item:hover{background-color:#f5f5f5;color:#0a0a0a}a.dropdown-item.is-active,button.dropdown-item.is-active{background-color:#485fc7;color:#fff}.dropdown-divider{background-color:#ededed;border:none;display:block;height:1px;margin:0.5rem 0}.level{align-items:center;justify-content:space-between}.level code{border-radius:4px}.level img{display:inline-block;vertical-align:top}.level.is-mobile{display:flex}.level.is-mobile .level-left,.level.is-mobile .level-right{display:flex}.level.is-mobile .level-left+.level-right{margin-top:0}.level.is-mobile .level-item:not(:last-child){margin-bottom:0;margin-right:.75rem}.level.is-mobile .level-item:not(.is-narrow){flex-grow:1}@media screen and (min-width: 769px),print{.level{display:flex}.level>.level-item:not(.is-narrow){flex-grow:1}}.level-item{align-items:center;display:flex;flex-basis:auto;flex-grow:0;flex-shrink:0;justify-content:center}.level-item .title,.level-item .subtitle{margin-bottom:0}@media screen and (max-width: 768px){.level-item:not(:last-child){margin-bottom:.75rem}}.level-left,.level-right{flex-basis:auto;flex-grow:0;flex-shrink:0}.level-left .level-item.is-flexible,.level-right .level-item.is-flexible{flex-grow:1}@media screen and (min-width: 769px),print{.level-left .level-item:not(:last-child),.level-right .level-item:not(:last-child){margin-right:.75rem}}.level-left{align-items:center;justify-content:flex-start}@media screen and (max-width: 768px){.level-left+.level-right{margin-top:1.5rem}}@media screen and (min-width: 769px),print{.level-left{display:flex}}.level-right{align-items:center;justify-content:flex-end}@media screen and (min-width: 769px),print{.level-right{display:flex}}.media{align-items:flex-start;display:flex;text-align:inherit}.media .content:not(:last-child){margin-bottom:.75rem}.media .media{border-top:1px solid rgba(219,219,219,0.5);display:flex;padding-top:.75rem}.media .media .content:not(:last-child),.media .media .control:not(:last-child){margin-bottom:.5rem}.media .media .media{padding-top:.5rem}.media .media .media+.media{margin-top:.5rem}.media+.media{border-top:1px solid rgba(219,219,219,0.5);margin-top:1rem;padding-top:1rem}.media.is-large+.media{margin-top:1.5rem;padding-top:1.5rem}.media-left,.media-right{flex-basis:auto;flex-grow:0;flex-shrink:0}.media-left{margin-right:1rem}.media-right{margin-left:1rem}.media-content{flex-basis:auto;flex-grow:1;flex-shrink:1;text-align:inherit}@media screen and (max-width: 768px){.media-content{overflow-x:auto}}.menu{font-size:1rem}.menu.is-small{font-size:.75rem}.menu.is-medium{font-size:1.25rem}.menu.is-large{font-size:1.5rem}.menu-list{line-height:1.25}.menu-list a{border-radius:2px;color:#4a4a4a;display:block;padding:0.5em 0.75em}.menu-list a:hover{background-color:#f5f5f5;color:#363636}.menu-list a.is-active{background-color:#485fc7;color:#fff}.menu-list li ul{border-left:1px solid #dbdbdb;margin:.75em;padding-left:.75em}.menu-label{color:#7a7a7a;font-size:.75em;letter-spacing:.1em;text-transform:uppercase}.menu-label:not(:first-child){margin-top:1em}.menu-label:not(:last-child){margin-bottom:1em}.message{background-color:#f5f5f5;border-radius:4px;font-size:1rem}.message strong{color:currentColor}.message a:not(.button):not(.tag):not(.dropdown-item){color:currentColor;text-decoration:underline}.message.is-small{font-size:.75rem}.message.is-medium{font-size:1.25rem}.message.is-large{font-size:1.5rem}.message.is-white{background-color:#fff}.message.is-white .message-header{background-color:#fff;color:#0a0a0a}.message.is-white .message-body{border-color:#fff}.message.is-black{background-color:#fafafa}.message.is-black .message-header{background-color:#0a0a0a;color:#fff}.message.is-black .message-body{border-color:#0a0a0a}.message.is-light{background-color:#fafafa}.message.is-light .message-header{background-color:#f5f5f5;color:rgba(0,0,0,0.7)}.message.is-light .message-body{border-color:#f5f5f5}.message.is-dark{background-color:#fafafa}.message.is-dark .message-header{background-color:#363636;color:#fff}.message.is-dark .message-body{border-color:#363636}.message.is-primary{background-color:#ebfffc}.message.is-primary .message-header{background-color:#00d1b2;color:#fff}.message.is-primary .message-body{border-color:#00d1b2;color:#00947e}.message.is-link{background-color:#eff1fa}.message.is-link .message-header{background-color:#485fc7;color:#fff}.message.is-link .message-body{border-color:#485fc7;color:#3850b7}.message.is-info{background-color:#eff5fb}.message.is-info .message-header{background-color:#3e8ed0;color:#fff}.message.is-info .message-body{border-color:#3e8ed0;color:#296fa8}.message.is-success{background-color:#effaf5}.message.is-success .message-header{background-color:#48c78e;color:#fff}.message.is-success .message-body{border-color:#48c78e;color:#257953}.message.is-warning{background-color:#fffaeb}.message.is-warning .message-header{background-color:#ffe08a;color:rgba(0,0,0,0.7)}.message.is-warning .message-body{border-color:#ffe08a;color:#946c00}.message.is-danger{background-color:#feecf0}.message.is-danger .message-header{background-color:#f14668;color:#fff}.message.is-danger .message-body{border-color:#f14668;color:#cc0f35}.message-header{align-items:center;background-color:#4a4a4a;border-radius:4px 4px 0 0;color:#fff;display:flex;font-weight:700;justify-content:space-between;line-height:1.25;padding:0.75em 1em;position:relative}.message-header .delete{flex-grow:0;flex-shrink:0;margin-left:.75em}.message-header+.message-body{border-width:0;border-top-left-radius:0;border-top-right-radius:0}.message-body{border-color:#dbdbdb;border-radius:4px;border-style:solid;border-width:0 0 0 4px;color:#4a4a4a;padding:1.25em 1.5em}.message-body code,.message-body pre{background-color:#fff}.message-body pre code{background-color:rgba(0,0,0,0)}.modal{align-items:center;display:none;flex-direction:column;justify-content:center;overflow:hidden;position:fixed;z-index:40}.modal.is-active{display:flex}.modal-background{background-color:rgba(10,10,10,0.86)}.modal-content,.modal-card{margin:0 20px;max-height:calc(100vh - 160px);overflow:auto;position:relative;width:100%}@media screen and (min-width: 769px){.modal-content,.modal-card{margin:0 auto;max-height:calc(100vh - 40px);width:640px}}.modal-close{background:none;height:40px;position:fixed;right:20px;top:20px;width:40px}.modal-card{display:flex;flex-direction:column;max-height:calc(100vh - 40px);overflow:hidden;-ms-overflow-y:visible}.modal-card-head,.modal-card-foot{align-items:center;background-color:#f5f5f5;display:flex;flex-shrink:0;justify-content:flex-start;padding:20px;position:relative}.modal-card-head{border-bottom:1px solid #dbdbdb;border-top-left-radius:6px;border-top-right-radius:6px}.modal-card-title{color:#363636;flex-grow:1;flex-shrink:0;font-size:1.5rem;line-height:1}.modal-card-foot{border-bottom-left-radius:6px;border-bottom-right-radius:6px;border-top:1px solid #dbdbdb}.modal-card-foot .button:not(:last-child){margin-right:.5em}.modal-card-body{-webkit-overflow-scrolling:touch;background-color:#fff;flex-grow:1;flex-shrink:1;overflow:auto;padding:20px}.navbar{background-color:#fff;min-height:3.25rem;position:relative;z-index:30}.navbar.is-white{background-color:#fff;color:#0a0a0a}.navbar.is-white .navbar-brand>.navbar-item,.navbar.is-white .navbar-brand .navbar-link{color:#0a0a0a}.navbar.is-white .navbar-brand>a.navbar-item:focus,.navbar.is-white .navbar-brand>a.navbar-item:hover,.navbar.is-white .navbar-brand>a.navbar-item.is-active,.navbar.is-white .navbar-brand .navbar-link:focus,.navbar.is-white .navbar-brand .navbar-link:hover,.navbar.is-white .navbar-brand .navbar-link.is-active{background-color:#f2f2f2;color:#0a0a0a}.navbar.is-white .navbar-brand .navbar-link::after{border-color:#0a0a0a}.navbar.is-white .navbar-burger{color:#0a0a0a}@media screen and (min-width: 1024px){.navbar.is-white .navbar-start>.navbar-item,.navbar.is-white .navbar-start .navbar-link,.navbar.is-white .navbar-end>.navbar-item,.navbar.is-white .navbar-end .navbar-link{color:#0a0a0a}.navbar.is-white .navbar-start>a.navbar-item:focus,.navbar.is-white .navbar-start>a.navbar-item:hover,.navbar.is-white .navbar-start>a.navbar-item.is-active,.navbar.is-white .navbar-start .navbar-link:focus,.navbar.is-white .navbar-start .navbar-link:hover,.navbar.is-white .navbar-start .navbar-link.is-active,.navbar.is-white .navbar-end>a.navbar-item:focus,.navbar.is-white .navbar-end>a.navbar-item:hover,.navbar.is-white .navbar-end>a.navbar-item.is-active,.navbar.is-white .navbar-end .navbar-link:focus,.navbar.is-white .navbar-end .navbar-link:hover,.navbar.is-white .navbar-end .navbar-link.is-active{background-color:#f2f2f2;color:#0a0a0a}.navbar.is-white .navbar-start .navbar-link::after,.navbar.is-white .navbar-end .navbar-link::after{border-color:#0a0a0a}.navbar.is-white .navbar-item.has-dropdown:focus .navbar-link,.navbar.is-white .navbar-item.has-dropdown:hover .navbar-link,.navbar.is-white .navbar-item.has-dropdown.is-active .navbar-link{background-color:#f2f2f2;color:#0a0a0a}.navbar.is-white .navbar-dropdown a.navbar-item.is-active{background-color:#fff;color:#0a0a0a}}.navbar.is-black{background-color:#0a0a0a;color:#fff}.navbar.is-black .navbar-brand>.navbar-item,.navbar.is-black .navbar-brand .navbar-link{color:#fff}.navbar.is-black .navbar-brand>a.navbar-item:focus,.navbar.is-black .navbar-brand>a.navbar-item:hover,.navbar.is-black .navbar-brand>a.navbar-item.is-active,.navbar.is-black .navbar-brand .navbar-link:focus,.navbar.is-black .navbar-brand .navbar-link:hover,.navbar.is-black .navbar-brand .navbar-link.is-active{background-color:#000;color:#fff}.navbar.is-black .navbar-brand .navbar-link::after{border-color:#fff}.navbar.is-black .navbar-burger{color:#fff}@media screen and (min-width: 1024px){.navbar.is-black .navbar-start>.navbar-item,.navbar.is-black .navbar-start .navbar-link,.navbar.is-black .navbar-end>.navbar-item,.navbar.is-black .navbar-end .navbar-link{color:#fff}.navbar.is-black .navbar-start>a.navbar-item:focus,.navbar.is-black .navbar-start>a.navbar-item:hover,.navbar.is-black .navbar-start>a.navbar-item.is-active,.navbar.is-black .navbar-start .navbar-link:focus,.navbar.is-black .navbar-start .navbar-link:hover,.navbar.is-black .navbar-start .navbar-link.is-active,.navbar.is-black .navbar-end>a.navbar-item:focus,.navbar.is-black .navbar-end>a.navbar-item:hover,.navbar.is-black .navbar-end>a.navbar-item.is-active,.navbar.is-black .navbar-end .navbar-link:focus,.navbar.is-black .navbar-end .navbar-link:hover,.navbar.is-black .navbar-end .navbar-link.is-active{background-color:#000;color:#fff}.navbar.is-black .navbar-start .navbar-link::after,.navbar.is-black .navbar-end .navbar-link::after{border-color:#fff}.navbar.is-black .navbar-item.has-dropdown:focus .navbar-link,.navbar.is-black .navbar-item.has-dropdown:hover .navbar-link,.navbar.is-black .navbar-item.has-dropdown.is-active .navbar-link{background-color:#000;color:#fff}.navbar.is-black .navbar-dropdown a.navbar-item.is-active{background-color:#0a0a0a;color:#fff}}.navbar.is-light{background-color:#f5f5f5;color:rgba(0,0,0,0.7)}.navbar.is-light .navbar-brand>.navbar-item,.navbar.is-light .navbar-brand .navbar-link{color:rgba(0,0,0,0.7)}.navbar.is-light .navbar-brand>a.navbar-item:focus,.navbar.is-light .navbar-brand>a.navbar-item:hover,.navbar.is-light .navbar-brand>a.navbar-item.is-active,.navbar.is-light .navbar-brand .navbar-link:focus,.navbar.is-light .navbar-brand .navbar-link:hover,.navbar.is-light .navbar-brand .navbar-link.is-active{background-color:#e8e8e8;color:rgba(0,0,0,0.7)}.navbar.is-light .navbar-brand .navbar-link::after{border-color:rgba(0,0,0,0.7)}.navbar.is-light .navbar-burger{color:rgba(0,0,0,0.7)}@media screen and (min-width: 1024px){.navbar.is-light .navbar-start>.navbar-item,.navbar.is-light .navbar-start .navbar-link,.navbar.is-light .navbar-end>.navbar-item,.navbar.is-light .navbar-end .navbar-link{color:rgba(0,0,0,0.7)}.navbar.is-light .navbar-start>a.navbar-item:focus,.navbar.is-light .navbar-start>a.navbar-item:hover,.navbar.is-light .navbar-start>a.navbar-item.is-active,.navbar.is-light .navbar-start .navbar-link:focus,.navbar.is-light .navbar-start .navbar-link:hover,.navbar.is-light .navbar-start .navbar-link.is-active,.navbar.is-light .navbar-end>a.navbar-item:focus,.navbar.is-light .navbar-end>a.navbar-item:hover,.navbar.is-light .navbar-end>a.navbar-item.is-active,.navbar.is-light .navbar-end .navbar-link:focus,.navbar.is-light .navbar-end .navbar-link:hover,.navbar.is-light .navbar-end .navbar-link.is-active{background-color:#e8e8e8;color:rgba(0,0,0,0.7)}.navbar.is-light .navbar-start .navbar-link::after,.navbar.is-light .navbar-end .navbar-link::after{border-color:rgba(0,0,0,0.7)}.navbar.is-light .navbar-item.has-dropdown:focus .navbar-link,.navbar.is-light .navbar-item.has-dropdown:hover .navbar-link,.navbar.is-light .navbar-item.has-dropdown.is-active .navbar-link{background-color:#e8e8e8;color:rgba(0,0,0,0.7)}.navbar.is-light .navbar-dropdown a.navbar-item.is-active{background-color:#f5f5f5;color:rgba(0,0,0,0.7)}}.navbar.is-dark{background-color:#363636;color:#fff}.navbar.is-dark .navbar-brand>.navbar-item,.navbar.is-dark .navbar-brand .navbar-link{color:#fff}.navbar.is-dark .navbar-brand>a.navbar-item:focus,.navbar.is-dark .navbar-brand>a.navbar-item:hover,.navbar.is-dark .navbar-brand>a.navbar-item.is-active,.navbar.is-dark .navbar-brand .navbar-link:focus,.navbar.is-dark .navbar-brand .navbar-link:hover,.navbar.is-dark .navbar-brand .navbar-link.is-active{background-color:#292929;color:#fff}.navbar.is-dark .navbar-brand .navbar-link::after{border-color:#fff}.navbar.is-dark .navbar-burger{color:#fff}@media screen and (min-width: 1024px){.navbar.is-dark .navbar-start>.navbar-item,.navbar.is-dark .navbar-start .navbar-link,.navbar.is-dark .navbar-end>.navbar-item,.navbar.is-dark .navbar-end .navbar-link{color:#fff}.navbar.is-dark .navbar-start>a.navbar-item:focus,.navbar.is-dark .navbar-start>a.navbar-item:hover,.navbar.is-dark .navbar-start>a.navbar-item.is-active,.navbar.is-dark .navbar-start .navbar-link:focus,.navbar.is-dark .navbar-start .navbar-link:hover,.navbar.is-dark .navbar-start .navbar-link.is-active,.navbar.is-dark .navbar-end>a.navbar-item:focus,.navbar.is-dark .navbar-end>a.navbar-item:hover,.navbar.is-dark .navbar-end>a.navbar-item.is-active,.navbar.is-dark .navbar-end .navbar-link:focus,.navbar.is-dark .navbar-end .navbar-link:hover,.navbar.is-dark .navbar-end .navbar-link.is-active{background-color:#292929;color:#fff}.navbar.is-dark .navbar-start .navbar-link::after,.navbar.is-dark .navbar-end .navbar-link::after{border-color:#fff}.navbar.is-dark .navbar-item.has-dropdown:focus .navbar-link,.navbar.is-dark .navbar-item.has-dropdown:hover .navbar-link,.navbar.is-dark .navbar-item.has-dropdown.is-active .navbar-link{background-color:#292929;color:#fff}.navbar.is-dark .navbar-dropdown a.navbar-item.is-active{background-color:#363636;color:#fff}}.navbar.is-primary{background-color:#00d1b2;color:#fff}.navbar.is-primary .navbar-brand>.navbar-item,.navbar.is-primary .navbar-brand .navbar-link{color:#fff}.navbar.is-primary .navbar-brand>a.navbar-item:focus,.navbar.is-primary .navbar-brand>a.navbar-item:hover,.navbar.is-primary .navbar-brand>a.navbar-item.is-active,.navbar.is-primary .navbar-brand .navbar-link:focus,.navbar.is-primary .navbar-brand .navbar-link:hover,.navbar.is-primary .navbar-brand .navbar-link.is-active{background-color:#00b89c;color:#fff}.navbar.is-primary .navbar-brand .navbar-link::after{border-color:#fff}.navbar.is-primary .navbar-burger{color:#fff}@media screen and (min-width: 1024px){.navbar.is-primary .navbar-start>.navbar-item,.navbar.is-primary .navbar-start .navbar-link,.navbar.is-primary .navbar-end>.navbar-item,.navbar.is-primary .navbar-end .navbar-link{color:#fff}.navbar.is-primary .navbar-start>a.navbar-item:focus,.navbar.is-primary .navbar-start>a.navbar-item:hover,.navbar.is-primary .navbar-start>a.navbar-item.is-active,.navbar.is-primary .navbar-start .navbar-link:focus,.navbar.is-primary .navbar-start .navbar-link:hover,.navbar.is-primary .navbar-start .navbar-link.is-active,.navbar.is-primary .navbar-end>a.navbar-item:focus,.navbar.is-primary .navbar-end>a.navbar-item:hover,.navbar.is-primary .navbar-end>a.navbar-item.is-active,.navbar.is-primary .navbar-end .navbar-link:focus,.navbar.is-primary .navbar-end .navbar-link:hover,.navbar.is-primary .navbar-end .navbar-link.is-active{background-color:#00b89c;color:#fff}.navbar.is-primary .navbar-start .navbar-link::after,.navbar.is-primary .navbar-end .navbar-link::after{border-color:#fff}.navbar.is-primary .navbar-item.has-dropdown:focus .navbar-link,.navbar.is-primary .navbar-item.has-dropdown:hover .navbar-link,.navbar.is-primary .navbar-item.has-dropdown.is-active .navbar-link{background-color:#00b89c;color:#fff}.navbar.is-primary .navbar-dropdown a.navbar-item.is-active{background-color:#00d1b2;color:#fff}}.navbar.is-link{background-color:#485fc7;color:#fff}.navbar.is-link .navbar-brand>.navbar-item,.navbar.is-link .navbar-brand .navbar-link{color:#fff}.navbar.is-link .navbar-brand>a.navbar-item:focus,.navbar.is-link .navbar-brand>a.navbar-item:hover,.navbar.is-link .navbar-brand>a.navbar-item.is-active,.navbar.is-link .navbar-brand .navbar-link:focus,.navbar.is-link .navbar-brand .navbar-link:hover,.navbar.is-link .navbar-brand .navbar-link.is-active{background-color:#3a51bb;color:#fff}.navbar.is-link .navbar-brand .navbar-link::after{border-color:#fff}.navbar.is-link .navbar-burger{color:#fff}@media screen and (min-width: 1024px){.navbar.is-link .navbar-start>.navbar-item,.navbar.is-link .navbar-start .navbar-link,.navbar.is-link .navbar-end>.navbar-item,.navbar.is-link .navbar-end .navbar-link{color:#fff}.navbar.is-link .navbar-start>a.navbar-item:focus,.navbar.is-link .navbar-start>a.navbar-item:hover,.navbar.is-link .navbar-start>a.navbar-item.is-active,.navbar.is-link .navbar-start .navbar-link:focus,.navbar.is-link .navbar-start .navbar-link:hover,.navbar.is-link .navbar-start .navbar-link.is-active,.navbar.is-link .navbar-end>a.navbar-item:focus,.navbar.is-link .navbar-end>a.navbar-item:hover,.navbar.is-link .navbar-end>a.navbar-item.is-active,.navbar.is-link .navbar-end .navbar-link:focus,.navbar.is-link .navbar-end .navbar-link:hover,.navbar.is-link .navbar-end .navbar-link.is-active{background-color:#3a51bb;color:#fff}.navbar.is-link .navbar-start .navbar-link::after,.navbar.is-link .navbar-end .navbar-link::after{border-color:#fff}.navbar.is-link .navbar-item.has-dropdown:focus .navbar-link,.navbar.is-link .navbar-item.has-dropdown:hover .navbar-link,.navbar.is-link .navbar-item.has-dropdown.is-active .navbar-link{background-color:#3a51bb;color:#fff}.navbar.is-link .navbar-dropdown a.navbar-item.is-active{background-color:#485fc7;color:#fff}}.navbar.is-info{background-color:#3e8ed0;color:#fff}.navbar.is-info .navbar-brand>.navbar-item,.navbar.is-info .navbar-brand .navbar-link{color:#fff}.navbar.is-info .navbar-brand>a.navbar-item:focus,.navbar.is-info .navbar-brand>a.navbar-item:hover,.navbar.is-info .navbar-brand>a.navbar-item.is-active,.navbar.is-info .navbar-brand .navbar-link:focus,.navbar.is-info .navbar-brand .navbar-link:hover,.navbar.is-info .navbar-brand .navbar-link.is-active{background-color:#3082c5;color:#fff}.navbar.is-info .navbar-brand .navbar-link::after{border-color:#fff}.navbar.is-info .navbar-burger{color:#fff}@media screen and (min-width: 1024px){.navbar.is-info .navbar-start>.navbar-item,.navbar.is-info .navbar-start .navbar-link,.navbar.is-info .navbar-end>.navbar-item,.navbar.is-info .navbar-end .navbar-link{color:#fff}.navbar.is-info .navbar-start>a.navbar-item:focus,.navbar.is-info .navbar-start>a.navbar-item:hover,.navbar.is-info .navbar-start>a.navbar-item.is-active,.navbar.is-info .navbar-start .navbar-link:focus,.navbar.is-info .navbar-start .navbar-link:hover,.navbar.is-info .navbar-start .navbar-link.is-active,.navbar.is-info .navbar-end>a.navbar-item:focus,.navbar.is-info .navbar-end>a.navbar-item:hover,.navbar.is-info .navbar-end>a.navbar-item.is-active,.navbar.is-info .navbar-end .navbar-link:focus,.navbar.is-info .navbar-end .navbar-link:hover,.navbar.is-info .navbar-end .navbar-link.is-active{background-color:#3082c5;color:#fff}.navbar.is-info .navbar-start .navbar-link::after,.navbar.is-info .navbar-end .navbar-link::after{border-color:#fff}.navbar.is-info .navbar-item.has-dropdown:focus .navbar-link,.navbar.is-info .navbar-item.has-dropdown:hover .navbar-link,.navbar.is-info .navbar-item.has-dropdown.is-active .navbar-link{background-color:#3082c5;color:#fff}.navbar.is-info .navbar-dropdown a.navbar-item.is-active{background-color:#3e8ed0;color:#fff}}.navbar.is-success{background-color:#48c78e;color:#fff}.navbar.is-success .navbar-brand>.navbar-item,.navbar.is-success .navbar-brand .navbar-link{color:#fff}.navbar.is-success .navbar-brand>a.navbar-item:focus,.navbar.is-success .navbar-brand>a.navbar-item:hover,.navbar.is-success .navbar-brand>a.navbar-item.is-active,.navbar.is-success .navbar-brand .navbar-link:focus,.navbar.is-success .navbar-brand .navbar-link:hover,.navbar.is-success .navbar-brand .navbar-link.is-active{background-color:#3abb81;color:#fff}.navbar.is-success .navbar-brand .navbar-link::after{border-color:#fff}.navbar.is-success .navbar-burger{color:#fff}@media screen and (min-width: 1024px){.navbar.is-success .navbar-start>.navbar-item,.navbar.is-success .navbar-start .navbar-link,.navbar.is-success .navbar-end>.navbar-item,.navbar.is-success .navbar-end .navbar-link{color:#fff}.navbar.is-success .navbar-start>a.navbar-item:focus,.navbar.is-success .navbar-start>a.navbar-item:hover,.navbar.is-success .navbar-start>a.navbar-item.is-active,.navbar.is-success .navbar-start .navbar-link:focus,.navbar.is-success .navbar-start .navbar-link:hover,.navbar.is-success .navbar-start .navbar-link.is-active,.navbar.is-success .navbar-end>a.navbar-item:focus,.navbar.is-success .navbar-end>a.navbar-item:hover,.navbar.is-success .navbar-end>a.navbar-item.is-active,.navbar.is-success .navbar-end .navbar-link:focus,.navbar.is-success .navbar-end .navbar-link:hover,.navbar.is-success .navbar-end .navbar-link.is-active{background-color:#3abb81;color:#fff}.navbar.is-success .navbar-start .navbar-link::after,.navbar.is-success .navbar-end .navbar-link::after{border-color:#fff}.navbar.is-success .navbar-item.has-dropdown:focus .navbar-link,.navbar.is-success .navbar-item.has-dropdown:hover .navbar-link,.navbar.is-success .navbar-item.has-dropdown.is-active .navbar-link{background-color:#3abb81;color:#fff}.navbar.is-success .navbar-dropdown a.navbar-item.is-active{background-color:#48c78e;color:#fff}}.navbar.is-warning{background-color:#ffe08a;color:rgba(0,0,0,0.7)}.navbar.is-warning .navbar-brand>.navbar-item,.navbar.is-warning .navbar-brand .navbar-link{color:rgba(0,0,0,0.7)}.navbar.is-warning .navbar-brand>a.navbar-item:focus,.navbar.is-warning .navbar-brand>a.navbar-item:hover,.navbar.is-warning .navbar-brand>a.navbar-item.is-active,.navbar.is-warning .navbar-brand .navbar-link:focus,.navbar.is-warning .navbar-brand .navbar-link:hover,.navbar.is-warning .navbar-brand .navbar-link.is-active{background-color:#ffd970;color:rgba(0,0,0,0.7)}.navbar.is-warning .navbar-brand .navbar-link::after{border-color:rgba(0,0,0,0.7)}.navbar.is-warning .navbar-burger{color:rgba(0,0,0,0.7)}@media screen and (min-width: 1024px){.navbar.is-warning .navbar-start>.navbar-item,.navbar.is-warning .navbar-start .navbar-link,.navbar.is-warning .navbar-end>.navbar-item,.navbar.is-warning .navbar-end .navbar-link{color:rgba(0,0,0,0.7)}.navbar.is-warning .navbar-start>a.navbar-item:focus,.navbar.is-warning .navbar-start>a.navbar-item:hover,.navbar.is-warning .navbar-start>a.navbar-item.is-active,.navbar.is-warning .navbar-start .navbar-link:focus,.navbar.is-warning .navbar-start .navbar-link:hover,.navbar.is-warning .navbar-start .navbar-link.is-active,.navbar.is-warning .navbar-end>a.navbar-item:focus,.navbar.is-warning .navbar-end>a.navbar-item:hover,.navbar.is-warning .navbar-end>a.navbar-item.is-active,.navbar.is-warning .navbar-end .navbar-link:focus,.navbar.is-warning .navbar-end .navbar-link:hover,.navbar.is-warning .navbar-end .navbar-link.is-active{background-color:#ffd970;color:rgba(0,0,0,0.7)}.navbar.is-warning .navbar-start .navbar-link::after,.navbar.is-warning .navbar-end .navbar-link::after{border-color:rgba(0,0,0,0.7)}.navbar.is-warning .navbar-item.has-dropdown:focus .navbar-link,.navbar.is-warning .navbar-item.has-dropdown:hover .navbar-link,.navbar.is-warning .navbar-item.has-dropdown.is-active .navbar-link{background-color:#ffd970;color:rgba(0,0,0,0.7)}.navbar.is-warning .navbar-dropdown a.navbar-item.is-active{background-color:#ffe08a;color:rgba(0,0,0,0.7)}}.navbar.is-danger{background-color:#f14668;color:#fff}.navbar.is-danger .navbar-brand>.navbar-item,.navbar.is-danger .navbar-brand .navbar-link{color:#fff}.navbar.is-danger .navbar-brand>a.navbar-item:focus,.navbar.is-danger .navbar-brand>a.navbar-item:hover,.navbar.is-danger .navbar-brand>a.navbar-item.is-active,.navbar.is-danger .navbar-brand .navbar-link:focus,.navbar.is-danger .navbar-brand .navbar-link:hover,.navbar.is-danger .navbar-brand .navbar-link.is-active{background-color:#ef2e55;color:#fff}.navbar.is-danger .navbar-brand .navbar-link::after{border-color:#fff}.navbar.is-danger .navbar-burger{color:#fff}@media screen and (min-width: 1024px){.navbar.is-danger .navbar-start>.navbar-item,.navbar.is-danger .navbar-start .navbar-link,.navbar.is-danger .navbar-end>.navbar-item,.navbar.is-danger .navbar-end .navbar-link{color:#fff}.navbar.is-danger .navbar-start>a.navbar-item:focus,.navbar.is-danger .navbar-start>a.navbar-item:hover,.navbar.is-danger .navbar-start>a.navbar-item.is-active,.navbar.is-danger .navbar-start .navbar-link:focus,.navbar.is-danger .navbar-start .navbar-link:hover,.navbar.is-danger .navbar-start .navbar-link.is-active,.navbar.is-danger .navbar-end>a.navbar-item:focus,.navbar.is-danger .navbar-end>a.navbar-item:hover,.navbar.is-danger .navbar-end>a.navbar-item.is-active,.navbar.is-danger .navbar-end .navbar-link:focus,.navbar.is-danger .navbar-end .navbar-link:hover,.navbar.is-danger .navbar-end .navbar-link.is-active{background-color:#ef2e55;color:#fff}.navbar.is-danger .navbar-start .navbar-link::after,.navbar.is-danger .navbar-end .navbar-link::after{border-color:#fff}.navbar.is-danger .navbar-item.has-dropdown:focus .navbar-link,.navbar.is-danger .navbar-item.has-dropdown:hover .navbar-link,.navbar.is-danger .navbar-item.has-dropdown.is-active .navbar-link{background-color:#ef2e55;color:#fff}.navbar.is-danger .navbar-dropdown a.navbar-item.is-active{background-color:#f14668;color:#fff}}.navbar>.container{align-items:stretch;display:flex;min-height:3.25rem;width:100%}.navbar.has-shadow{box-shadow:0 2px 0 0 #f5f5f5}.navbar.is-fixed-bottom,.navbar.is-fixed-top{left:0;position:fixed;right:0;z-index:30}.navbar.is-fixed-bottom{bottom:0}.navbar.is-fixed-bottom.has-shadow{box-shadow:0 -2px 0 0 #f5f5f5}.navbar.is-fixed-top{top:0}html.has-navbar-fixed-top,body.has-navbar-fixed-top{padding-top:3.25rem}html.has-navbar-fixed-bottom,body.has-navbar-fixed-bottom{padding-bottom:3.25rem}.navbar-brand,.navbar-tabs{align-items:stretch;display:flex;flex-shrink:0;min-height:3.25rem}.navbar-brand a.navbar-item:focus,.navbar-brand a.navbar-item:hover{background-color:transparent}.navbar-tabs{-webkit-overflow-scrolling:touch;max-width:100vw;overflow-x:auto;overflow-y:hidden}.navbar-burger{color:#4a4a4a;-moz-appearance:none;-webkit-appearance:none;appearance:none;background:none;border:none;cursor:pointer;display:block;height:3.25rem;position:relative;width:3.25rem;margin-left:auto}.navbar-burger span{background-color:currentColor;display:block;height:1px;left:calc(50% - 8px);position:absolute;transform-origin:center;transition-duration:86ms;transition-property:background-color, opacity, transform;transition-timing-function:ease-out;width:16px}.navbar-burger span:nth-child(1){top:calc(50% - 6px)}.navbar-burger span:nth-child(2){top:calc(50% - 1px)}.navbar-burger span:nth-child(3){top:calc(50% + 4px)}.navbar-burger:hover{background-color:rgba(0,0,0,0.05)}.navbar-burger.is-active span:nth-child(1){transform:translateY(5px) rotate(45deg)}.navbar-burger.is-active span:nth-child(2){opacity:0}.navbar-burger.is-active span:nth-child(3){transform:translateY(-5px) rotate(-45deg)}.navbar-menu{display:none}.navbar-item,.navbar-link{color:#4a4a4a;display:block;line-height:1.5;padding:0.5rem 0.75rem;position:relative}.navbar-item .icon:only-child,.navbar-link .icon:only-child{margin-left:-0.25rem;margin-right:-0.25rem}a.navbar-item,.navbar-link{cursor:pointer}a.navbar-item:focus,a.navbar-item:focus-within,a.navbar-item:hover,a.navbar-item.is-active,.navbar-link:focus,.navbar-link:focus-within,.navbar-link:hover,.navbar-link.is-active{background-color:#fafafa;color:#485fc7}.navbar-item{flex-grow:0;flex-shrink:0}.navbar-item img{max-height:1.75rem}.navbar-item.has-dropdown{padding:0}.navbar-item.is-expanded{flex-grow:1;flex-shrink:1}.navbar-item.is-tab{border-bottom:1px solid transparent;min-height:3.25rem;padding-bottom:calc(0.5rem - 1px)}.navbar-item.is-tab:focus,.navbar-item.is-tab:hover{background-color:rgba(0,0,0,0);border-bottom-color:#485fc7}.navbar-item.is-tab.is-active{background-color:rgba(0,0,0,0);border-bottom-color:#485fc7;border-bottom-style:solid;border-bottom-width:3px;color:#485fc7;padding-bottom:calc(0.5rem - 3px)}.navbar-content{flex-grow:1;flex-shrink:1}.navbar-link:not(.is-arrowless){padding-right:2.5em}.navbar-link:not(.is-arrowless)::after{border-color:#485fc7;margin-top:-0.375em;right:1.125em}.navbar-dropdown{font-size:0.875rem;padding-bottom:0.5rem;padding-top:0.5rem}.navbar-dropdown .navbar-item{padding-left:1.5rem;padding-right:1.5rem}.navbar-divider{background-color:#f5f5f5;border:none;display:none;height:2px;margin:0.5rem 0}@media screen and (max-width: 1023px){.navbar>.container{display:block}.navbar-brand .navbar-item,.navbar-tabs .navbar-item{align-items:center;display:flex}.navbar-link::after{display:none}.navbar-menu{background-color:#fff;box-shadow:0 8px 16px rgba(10,10,10,0.1);padding:0.5rem 0}.navbar-menu.is-active{display:block}.navbar.is-fixed-bottom-touch,.navbar.is-fixed-top-touch{left:0;position:fixed;right:0;z-index:30}.navbar.is-fixed-bottom-touch{bottom:0}.navbar.is-fixed-bottom-touch.has-shadow{box-shadow:0 -2px 3px rgba(10,10,10,0.1)}.navbar.is-fixed-top-touch{top:0}.navbar.is-fixed-top .navbar-menu,.navbar.is-fixed-top-touch .navbar-menu{-webkit-overflow-scrolling:touch;max-height:calc(100vh - 3.25rem);overflow:auto}html.has-navbar-fixed-top-touch,body.has-navbar-fixed-top-touch{padding-top:3.25rem}html.has-navbar-fixed-bottom-touch,body.has-navbar-fixed-bottom-touch{padding-bottom:3.25rem}}@media screen and (min-width: 1024px){.navbar,.navbar-menu,.navbar-start,.navbar-end{align-items:stretch;display:flex}.navbar{min-height:3.25rem}.navbar.is-spaced{padding:1rem 2rem}.navbar.is-spaced .navbar-start,.navbar.is-spaced .navbar-end{align-items:center}.navbar.is-spaced a.navbar-item,.navbar.is-spaced .navbar-link{border-radius:4px}.navbar.is-transparent a.navbar-item:focus,.navbar.is-transparent a.navbar-item:hover,.navbar.is-transparent a.navbar-item.is-active,.navbar.is-transparent .navbar-link:focus,.navbar.is-transparent .navbar-link:hover,.navbar.is-transparent .navbar-link.is-active{background-color:transparent !important}.navbar.is-transparent .navbar-item.has-dropdown.is-active .navbar-link,.navbar.is-transparent .navbar-item.has-dropdown.is-hoverable:focus .navbar-link,.navbar.is-transparent .navbar-item.has-dropdown.is-hoverable:focus-within .navbar-link,.navbar.is-transparent .navbar-item.has-dropdown.is-hoverable:hover .navbar-link{background-color:transparent !important}.navbar.is-transparent .navbar-dropdown a.navbar-item:focus,.navbar.is-transparent .navbar-dropdown a.navbar-item:hover{background-color:#f5f5f5;color:#0a0a0a}.navbar.is-transparent .navbar-dropdown a.navbar-item.is-active{background-color:#f5f5f5;color:#485fc7}.navbar-burger{display:none}.navbar-item,.navbar-link{align-items:center;display:flex}.navbar-item.has-dropdown{align-items:stretch}.navbar-item.has-dropdown-up .navbar-link::after{transform:rotate(135deg) translate(0.25em, -0.25em)}.navbar-item.has-dropdown-up .navbar-dropdown{border-bottom:2px solid #dbdbdb;border-radius:6px 6px 0 0;border-top:none;bottom:100%;box-shadow:0 -8px 8px rgba(10,10,10,0.1);top:auto}.navbar-item.is-active .navbar-dropdown,.navbar-item.is-hoverable:focus .navbar-dropdown,.navbar-item.is-hoverable:focus-within .navbar-dropdown,.navbar-item.is-hoverable:hover .navbar-dropdown{display:block}.navbar.is-spaced .navbar-item.is-active .navbar-dropdown,.navbar-item.is-active .navbar-dropdown.is-boxed,.navbar.is-spaced .navbar-item.is-hoverable:focus .navbar-dropdown,.navbar-item.is-hoverable:focus .navbar-dropdown.is-boxed,.navbar.is-spaced .navbar-item.is-hoverable:focus-within .navbar-dropdown,.navbar-item.is-hoverable:focus-within .navbar-dropdown.is-boxed,.navbar.is-spaced .navbar-item.is-hoverable:hover .navbar-dropdown,.navbar-item.is-hoverable:hover .navbar-dropdown.is-boxed{opacity:1;pointer-events:auto;transform:translateY(0)}.navbar-menu{flex-grow:1;flex-shrink:0}.navbar-start{justify-content:flex-start;margin-right:auto}.navbar-end{justify-content:flex-end;margin-left:auto}.navbar-dropdown{background-color:#fff;border-bottom-left-radius:6px;border-bottom-right-radius:6px;border-top:2px solid #dbdbdb;box-shadow:0 8px 8px rgba(10,10,10,0.1);display:none;font-size:0.875rem;left:0;min-width:100%;position:absolute;top:100%;z-index:20}.navbar-dropdown .navbar-item{padding:0.375rem 1rem;white-space:nowrap}.navbar-dropdown a.navbar-item{padding-right:3rem}.navbar-dropdown a.navbar-item:focus,.navbar-dropdown a.navbar-item:hover{background-color:#f5f5f5;color:#0a0a0a}.navbar-dropdown a.navbar-item.is-active{background-color:#f5f5f5;color:#485fc7}.navbar.is-spaced .navbar-dropdown,.navbar-dropdown.is-boxed{border-radius:6px;border-top:none;box-shadow:0 8px 8px rgba(10,10,10,0.1), 0 0 0 1px rgba(10,10,10,0.1);display:block;opacity:0;pointer-events:none;top:calc(100% + (-4px));transform:translateY(-5px);transition-duration:86ms;transition-property:opacity, transform}.navbar-dropdown.is-right{left:auto;right:0}.navbar-divider{display:block}.navbar>.container .navbar-brand,.container>.navbar .navbar-brand{margin-left:-.75rem}.navbar>.container .navbar-menu,.container>.navbar .navbar-menu{margin-right:-.75rem}.navbar.is-fixed-bottom-desktop,.navbar.is-fixed-top-desktop{left:0;position:fixed;right:0;z-index:30}.navbar.is-fixed-bottom-desktop{bottom:0}.navbar.is-fixed-bottom-desktop.has-shadow{box-shadow:0 -2px 3px rgba(10,10,10,0.1)}.navbar.is-fixed-top-desktop{top:0}html.has-navbar-fixed-top-desktop,body.has-navbar-fixed-top-desktop{padding-top:3.25rem}html.has-navbar-fixed-bottom-desktop,body.has-navbar-fixed-bottom-desktop{padding-bottom:3.25rem}html.has-spaced-navbar-fixed-top,body.has-spaced-navbar-fixed-top{padding-top:5.25rem}html.has-spaced-navbar-fixed-bottom,body.has-spaced-navbar-fixed-bottom{padding-bottom:5.25rem}a.navbar-item.is-active,.navbar-link.is-active{color:#0a0a0a}a.navbar-item.is-active:not(:focus):not(:hover),.navbar-link.is-active:not(:focus):not(:hover){background-color:rgba(0,0,0,0)}.navbar-item.has-dropdown:focus .navbar-link,.navbar-item.has-dropdown:hover .navbar-link,.navbar-item.has-dropdown.is-active .navbar-link{background-color:#fafafa}}.hero.is-fullheight-with-navbar{min-height:calc(100vh - 3.25rem)}.pagination{font-size:1rem;margin:-.25rem}.pagination.is-small{font-size:.75rem}.pagination.is-medium{font-size:1.25rem}.pagination.is-large{font-size:1.5rem}.pagination.is-rounded .pagination-previous,.pagination.is-rounded .pagination-next{padding-left:1em;padding-right:1em;border-radius:9999px}.pagination.is-rounded .pagination-link{border-radius:9999px}.pagination,.pagination-list{align-items:center;display:flex;justify-content:center;text-align:center}.pagination-previous,.pagination-next,.pagination-link,.pagination-ellipsis{font-size:1em;justify-content:center;margin:.25rem;padding-left:.5em;padding-right:.5em;text-align:center}.pagination-previous,.pagination-next,.pagination-link{border-color:#dbdbdb;color:#363636;min-width:2.5em}.pagination-previous:hover,.pagination-next:hover,.pagination-link:hover{border-color:#b5b5b5;color:#363636}.pagination-previous:focus,.pagination-next:focus,.pagination-link:focus{border-color:#485fc7}.pagination-previous:active,.pagination-next:active,.pagination-link:active{box-shadow:inset 0 1px 2px rgba(10,10,10,0.2)}.pagination-previous[disabled],.pagination-previous.is-disabled,.pagination-next[disabled],.pagination-next.is-disabled,.pagination-link[disabled],.pagination-link.is-disabled{background-color:#dbdbdb;border-color:#dbdbdb;box-shadow:none;color:#7a7a7a;opacity:0.5}.pagination-previous,.pagination-next{padding-left:.75em;padding-right:.75em;white-space:nowrap}.pagination-link.is-current{background-color:#485fc7;border-color:#485fc7;color:#fff}.pagination-ellipsis{color:#b5b5b5;pointer-events:none}.pagination-list{flex-wrap:wrap}.pagination-list li{list-style:none}@media screen and (max-width: 768px){.pagination{flex-wrap:wrap}.pagination-previous,.pagination-next{flex-grow:1;flex-shrink:1}.pagination-list li{flex-grow:1;flex-shrink:1}}@media screen and (min-width: 769px),print{.pagination-list{flex-grow:1;flex-shrink:1;justify-content:flex-start;order:1}.pagination-previous,.pagination-next,.pagination-link,.pagination-ellipsis{margin-bottom:0;margin-top:0}.pagination-previous{order:2}.pagination-next{order:3}.pagination{justify-content:space-between;margin-bottom:0;margin-top:0}.pagination.is-centered .pagination-previous{order:1}.pagination.is-centered .pagination-list{justify-content:center;order:2}.pagination.is-centered .pagination-next{order:3}.pagination.is-right .pagination-previous{order:1}.pagination.is-right .pagination-next{order:2}.pagination.is-right .pagination-list{justify-content:flex-end;order:3}}.panel{border-radius:6px;box-shadow:0 0.5em 1em -0.125em rgba(10,10,10,0.1),0 0px 0 1px rgba(10,10,10,0.02);font-size:1rem}.panel:not(:last-child){margin-bottom:1.5rem}.panel.is-white .panel-heading{background-color:#fff;color:#0a0a0a}.panel.is-white .panel-tabs a.is-active{border-bottom-color:#fff}.panel.is-white .panel-block.is-active .panel-icon{color:#fff}.panel.is-black .panel-heading{background-color:#0a0a0a;color:#fff}.panel.is-black .panel-tabs a.is-active{border-bottom-color:#0a0a0a}.panel.is-black .panel-block.is-active .panel-icon{color:#0a0a0a}.panel.is-light .panel-heading{background-color:#f5f5f5;color:rgba(0,0,0,0.7)}.panel.is-light .panel-tabs a.is-active{border-bottom-color:#f5f5f5}.panel.is-light .panel-block.is-active .panel-icon{color:#f5f5f5}.panel.is-dark .panel-heading{background-color:#363636;color:#fff}.panel.is-dark .panel-tabs a.is-active{border-bottom-color:#363636}.panel.is-dark .panel-block.is-active .panel-icon{color:#363636}.panel.is-primary .panel-heading{background-color:#00d1b2;color:#fff}.panel.is-primary .panel-tabs a.is-active{border-bottom-color:#00d1b2}.panel.is-primary .panel-block.is-active .panel-icon{color:#00d1b2}.panel.is-link .panel-heading{background-color:#485fc7;color:#fff}.panel.is-link .panel-tabs a.is-active{border-bottom-color:#485fc7}.panel.is-link .panel-block.is-active .panel-icon{color:#485fc7}.panel.is-info .panel-heading{background-color:#3e8ed0;color:#fff}.panel.is-info .panel-tabs a.is-active{border-bottom-color:#3e8ed0}.panel.is-info .panel-block.is-active .panel-icon{color:#3e8ed0}.panel.is-success .panel-heading{background-color:#48c78e;color:#fff}.panel.is-success .panel-tabs a.is-active{border-bottom-color:#48c78e}.panel.is-success .panel-block.is-active .panel-icon{color:#48c78e}.panel.is-warning .panel-heading{background-color:#ffe08a;color:rgba(0,0,0,0.7)}.panel.is-warning .panel-tabs a.is-active{border-bottom-color:#ffe08a}.panel.is-warning .panel-block.is-active .panel-icon{color:#ffe08a}.panel.is-danger .panel-heading{background-color:#f14668;color:#fff}.panel.is-danger .panel-tabs a.is-active{border-bottom-color:#f14668}.panel.is-danger .panel-block.is-active .panel-icon{color:#f14668}.panel-tabs:not(:last-child),.panel-block:not(:last-child){border-bottom:1px solid #ededed}.panel-heading{background-color:#ededed;border-radius:6px 6px 0 0;color:#363636;font-size:1.25em;font-weight:700;line-height:1.25;padding:0.75em 1em}.panel-tabs{align-items:flex-end;display:flex;font-size:.875em;justify-content:center}.panel-tabs a{border-bottom:1px solid #dbdbdb;margin-bottom:-1px;padding:0.5em}.panel-tabs a.is-active{border-bottom-color:#4a4a4a;color:#363636}.panel-list a{color:#4a4a4a}.panel-list a:hover{color:#485fc7}.panel-block{align-items:center;color:#363636;display:flex;justify-content:flex-start;padding:0.5em 0.75em}.panel-block input[type="checkbox"]{margin-right:.75em}.panel-block>.control{flex-grow:1;flex-shrink:1;width:100%}.panel-block.is-wrapped{flex-wrap:wrap}.panel-block.is-active{border-left-color:#485fc7;color:#363636}.panel-block.is-active .panel-icon{color:#485fc7}.panel-block:last-child{border-bottom-left-radius:6px;border-bottom-right-radius:6px}a.panel-block,label.panel-block{cursor:pointer}a.panel-block:hover,label.panel-block:hover{background-color:#f5f5f5}.panel-icon{display:inline-block;font-size:14px;height:1em;line-height:1em;text-align:center;vertical-align:top;width:1em;color:#7a7a7a;margin-right:.75em}.panel-icon .fa{font-size:inherit;line-height:inherit}.tabs{-webkit-overflow-scrolling:touch;align-items:stretch;display:flex;font-size:1rem;justify-content:space-between;overflow:hidden;overflow-x:auto;white-space:nowrap}.tabs a{align-items:center;border-bottom-color:#dbdbdb;border-bottom-style:solid;border-bottom-width:1px;color:#4a4a4a;display:flex;justify-content:center;margin-bottom:-1px;padding:0.5em 1em;vertical-align:top}.tabs a:hover{border-bottom-color:#363636;color:#363636}.tabs li{display:block}.tabs li.is-active a{border-bottom-color:#485fc7;color:#485fc7}.tabs ul{align-items:center;border-bottom-color:#dbdbdb;border-bottom-style:solid;border-bottom-width:1px;display:flex;flex-grow:1;flex-shrink:0;justify-content:flex-start}.tabs ul.is-left{padding-right:0.75em}.tabs ul.is-center{flex:none;justify-content:center;padding-left:0.75em;padding-right:0.75em}.tabs ul.is-right{justify-content:flex-end;padding-left:0.75em}.tabs .icon:first-child{margin-right:.5em}.tabs .icon:last-child{margin-left:.5em}.tabs.is-centered ul{justify-content:center}.tabs.is-right ul{justify-content:flex-end}.tabs.is-boxed a{border:1px solid transparent;border-radius:4px 4px 0 0}.tabs.is-boxed a:hover{background-color:#f5f5f5;border-bottom-color:#dbdbdb}.tabs.is-boxed li.is-active a{background-color:#fff;border-color:#dbdbdb;border-bottom-color:rgba(0,0,0,0) !important}.tabs.is-fullwidth li{flex-grow:1;flex-shrink:0}.tabs.is-toggle a{border-color:#dbdbdb;border-style:solid;border-width:1px;margin-bottom:0;position:relative}.tabs.is-toggle a:hover{background-color:#f5f5f5;border-color:#b5b5b5;z-index:2}.tabs.is-toggle li+li{margin-left:-1px}.tabs.is-toggle li:first-child a{border-top-left-radius:4px;border-bottom-left-radius:4px}.tabs.is-toggle li:last-child a{border-top-right-radius:4px;border-bottom-right-radius:4px}.tabs.is-toggle li.is-active a{background-color:#485fc7;border-color:#485fc7;color:#fff;z-index:1}.tabs.is-toggle ul{border-bottom:none}.tabs.is-toggle.is-toggle-rounded li:first-child a{border-bottom-left-radius:9999px;border-top-left-radius:9999px;padding-left:1.25em}.tabs.is-toggle.is-toggle-rounded li:last-child a{border-bottom-right-radius:9999px;border-top-right-radius:9999px;padding-right:1.25em}.tabs.is-small{font-size:.75rem}.tabs.is-medium{font-size:1.25rem}.tabs.is-large{font-size:1.5rem}.column{display:block;flex-basis:0;flex-grow:1;flex-shrink:1;padding:.75rem}.columns.is-mobile>.column.is-narrow{flex:none;width:unset}.columns.is-mobile>.column.is-full{flex:none;width:100%}.columns.is-mobile>.column.is-three-quarters{flex:none;width:75%}.columns.is-mobile>.column.is-two-thirds{flex:none;width:66.6666%}.columns.is-mobile>.column.is-half{flex:none;width:50%}.columns.is-mobile>.column.is-one-third{flex:none;width:33.3333%}.columns.is-mobile>.column.is-one-quarter{flex:none;width:25%}.columns.is-mobile>.column.is-one-fifth{flex:none;width:20%}.columns.is-mobile>.column.is-two-fifths{flex:none;width:40%}.columns.is-mobile>.column.is-three-fifths{flex:none;width:60%}.columns.is-mobile>.column.is-four-fifths{flex:none;width:80%}.columns.is-mobile>.column.is-offset-three-quarters{margin-left:75%}.columns.is-mobile>.column.is-offset-two-thirds{margin-left:66.6666%}.columns.is-mobile>.column.is-offset-half{margin-left:50%}.columns.is-mobile>.column.is-offset-one-third{margin-left:33.3333%}.columns.is-mobile>.column.is-offset-one-quarter{margin-left:25%}.columns.is-mobile>.column.is-offset-one-fifth{margin-left:20%}.columns.is-mobile>.column.is-offset-two-fifths{margin-left:40%}.columns.is-mobile>.column.is-offset-three-fifths{margin-left:60%}.columns.is-mobile>.column.is-offset-four-fifths{margin-left:80%}.columns.is-mobile>.column.is-0{flex:none;width:0%}.columns.is-mobile>.column.is-offset-0{margin-left:0%}.columns.is-mobile>.column.is-1{flex:none;width:8.33333%}.columns.is-mobile>.column.is-offset-1{margin-left:8.33333%}.columns.is-mobile>.column.is-2{flex:none;width:16.66667%}.columns.is-mobile>.column.is-offset-2{margin-left:16.66667%}.columns.is-mobile>.column.is-3{flex:none;width:25%}.columns.is-mobile>.column.is-offset-3{margin-left:25%}.columns.is-mobile>.column.is-4{flex:none;width:33.33333%}.columns.is-mobile>.column.is-offset-4{margin-left:33.33333%}.columns.is-mobile>.column.is-5{flex:none;width:41.66667%}.columns.is-mobile>.column.is-offset-5{margin-left:41.66667%}.columns.is-mobile>.column.is-6{flex:none;width:50%}.columns.is-mobile>.column.is-offset-6{margin-left:50%}.columns.is-mobile>.column.is-7{flex:none;width:58.33333%}.columns.is-mobile>.column.is-offset-7{margin-left:58.33333%}.columns.is-mobile>.column.is-8{flex:none;width:66.66667%}.columns.is-mobile>.column.is-offset-8{margin-left:66.66667%}.columns.is-mobile>.column.is-9{flex:none;width:75%}.columns.is-mobile>.column.is-offset-9{margin-left:75%}.columns.is-mobile>.column.is-10{flex:none;width:83.33333%}.columns.is-mobile>.column.is-offset-10{margin-left:83.33333%}.columns.is-mobile>.column.is-11{flex:none;width:91.66667%}.columns.is-mobile>.column.is-offset-11{margin-left:91.66667%}.columns.is-mobile>.column.is-12{flex:none;width:100%}.columns.is-mobile>.column.is-offset-12{margin-left:100%}@media screen and (max-width: 768px){.column.is-narrow-mobile{flex:none;width:unset}.column.is-full-mobile{flex:none;width:100%}.column.is-three-quarters-mobile{flex:none;width:75%}.column.is-two-thirds-mobile{flex:none;width:66.6666%}.column.is-half-mobile{flex:none;width:50%}.column.is-one-third-mobile{flex:none;width:33.3333%}.column.is-one-quarter-mobile{flex:none;width:25%}.column.is-one-fifth-mobile{flex:none;width:20%}.column.is-two-fifths-mobile{flex:none;width:40%}.column.is-three-fifths-mobile{flex:none;width:60%}.column.is-four-fifths-mobile{flex:none;width:80%}.column.is-offset-three-quarters-mobile{margin-left:75%}.column.is-offset-two-thirds-mobile{margin-left:66.6666%}.column.is-offset-half-mobile{margin-left:50%}.column.is-offset-one-third-mobile{margin-left:33.3333%}.column.is-offset-one-quarter-mobile{margin-left:25%}.column.is-offset-one-fifth-mobile{margin-left:20%}.column.is-offset-two-fifths-mobile{margin-left:40%}.column.is-offset-three-fifths-mobile{margin-left:60%}.column.is-offset-four-fifths-mobile{margin-left:80%}.column.is-0-mobile{flex:none;width:0%}.column.is-offset-0-mobile{margin-left:0%}.column.is-1-mobile{flex:none;width:8.33333%}.column.is-offset-1-mobile{margin-left:8.33333%}.column.is-2-mobile{flex:none;width:16.66667%}.column.is-offset-2-mobile{margin-left:16.66667%}.column.is-3-mobile{flex:none;width:25%}.column.is-offset-3-mobile{margin-left:25%}.column.is-4-mobile{flex:none;width:33.33333%}.column.is-offset-4-mobile{margin-left:33.33333%}.column.is-5-mobile{flex:none;width:41.66667%}.column.is-offset-5-mobile{margin-left:41.66667%}.column.is-6-mobile{flex:none;width:50%}.column.is-offset-6-mobile{margin-left:50%}.column.is-7-mobile{flex:none;width:58.33333%}.column.is-offset-7-mobile{margin-left:58.33333%}.column.is-8-mobile{flex:none;width:66.66667%}.column.is-offset-8-mobile{margin-left:66.66667%}.column.is-9-mobile{flex:none;width:75%}.column.is-offset-9-mobile{margin-left:75%}.column.is-10-mobile{flex:none;width:83.33333%}.column.is-offset-10-mobile{margin-left:83.33333%}.column.is-11-mobile{flex:none;width:91.66667%}.column.is-offset-11-mobile{margin-left:91.66667%}.column.is-12-mobile{flex:none;width:100%}.column.is-offset-12-mobile{margin-left:100%}}@media screen and (min-width: 769px),print{.column.is-narrow,.column.is-narrow-tablet{flex:none;width:unset}.column.is-full,.column.is-full-tablet{flex:none;width:100%}.column.is-three-quarters,.column.is-three-quarters-tablet{flex:none;width:75%}.column.is-two-thirds,.column.is-two-thirds-tablet{flex:none;width:66.6666%}.column.is-half,.column.is-half-tablet{flex:none;width:50%}.column.is-one-third,.column.is-one-third-tablet{flex:none;width:33.3333%}.column.is-one-quarter,.column.is-one-quarter-tablet{flex:none;width:25%}.column.is-one-fifth,.column.is-one-fifth-tablet{flex:none;width:20%}.column.is-two-fifths,.column.is-two-fifths-tablet{flex:none;width:40%}.column.is-three-fifths,.column.is-three-fifths-tablet{flex:none;width:60%}.column.is-four-fifths,.column.is-four-fifths-tablet{flex:none;width:80%}.column.is-offset-three-quarters,.column.is-offset-three-quarters-tablet{margin-left:75%}.column.is-offset-two-thirds,.column.is-offset-two-thirds-tablet{margin-left:66.6666%}.column.is-offset-half,.column.is-offset-half-tablet{margin-left:50%}.column.is-offset-one-third,.column.is-offset-one-third-tablet{margin-left:33.3333%}.column.is-offset-one-quarter,.column.is-offset-one-quarter-tablet{margin-left:25%}.column.is-offset-one-fifth,.column.is-offset-one-fifth-tablet{margin-left:20%}.column.is-offset-two-fifths,.column.is-offset-two-fifths-tablet{margin-left:40%}.column.is-offset-three-fifths,.column.is-offset-three-fifths-tablet{margin-left:60%}.column.is-offset-four-fifths,.column.is-offset-four-fifths-tablet{margin-left:80%}.column.is-0,.column.is-0-tablet{flex:none;width:0%}.column.is-offset-0,.column.is-offset-0-tablet{margin-left:0%}.column.is-1,.column.is-1-tablet{flex:none;width:8.33333%}.column.is-offset-1,.column.is-offset-1-tablet{margin-left:8.33333%}.column.is-2,.column.is-2-tablet{flex:none;width:16.66667%}.column.is-offset-2,.column.is-offset-2-tablet{margin-left:16.66667%}.column.is-3,.column.is-3-tablet{flex:none;width:25%}.column.is-offset-3,.column.is-offset-3-tablet{margin-left:25%}.column.is-4,.column.is-4-tablet{flex:none;width:33.33333%}.column.is-offset-4,.column.is-offset-4-tablet{margin-left:33.33333%}.column.is-5,.column.is-5-tablet{flex:none;width:41.66667%}.column.is-offset-5,.column.is-offset-5-tablet{margin-left:41.66667%}.column.is-6,.column.is-6-tablet{flex:none;width:50%}.column.is-offset-6,.column.is-offset-6-tablet{margin-left:50%}.column.is-7,.column.is-7-tablet{flex:none;width:58.33333%}.column.is-offset-7,.column.is-offset-7-tablet{margin-left:58.33333%}.column.is-8,.column.is-8-tablet{flex:none;width:66.66667%}.column.is-offset-8,.column.is-offset-8-tablet{margin-left:66.66667%}.column.is-9,.column.is-9-tablet{flex:none;width:75%}.column.is-offset-9,.column.is-offset-9-tablet{margin-left:75%}.column.is-10,.column.is-10-tablet{flex:none;width:83.33333%}.column.is-offset-10,.column.is-offset-10-tablet{margin-left:83.33333%}.column.is-11,.column.is-11-tablet{flex:none;width:91.66667%}.column.is-offset-11,.column.is-offset-11-tablet{margin-left:91.66667%}.column.is-12,.column.is-12-tablet{flex:none;width:100%}.column.is-offset-12,.column.is-offset-12-tablet{margin-left:100%}}@media screen and (max-width: 1023px){.column.is-narrow-touch{flex:none;width:unset}.column.is-full-touch{flex:none;width:100%}.column.is-three-quarters-touch{flex:none;width:75%}.column.is-two-thirds-touch{flex:none;width:66.6666%}.column.is-half-touch{flex:none;width:50%}.column.is-one-third-touch{flex:none;width:33.3333%}.column.is-one-quarter-touch{flex:none;width:25%}.column.is-one-fifth-touch{flex:none;width:20%}.column.is-two-fifths-touch{flex:none;width:40%}.column.is-three-fifths-touch{flex:none;width:60%}.column.is-four-fifths-touch{flex:none;width:80%}.column.is-offset-three-quarters-touch{margin-left:75%}.column.is-offset-two-thirds-touch{margin-left:66.6666%}.column.is-offset-half-touch{margin-left:50%}.column.is-offset-one-third-touch{margin-left:33.3333%}.column.is-offset-one-quarter-touch{margin-left:25%}.column.is-offset-one-fifth-touch{margin-left:20%}.column.is-offset-two-fifths-touch{margin-left:40%}.column.is-offset-three-fifths-touch{margin-left:60%}.column.is-offset-four-fifths-touch{margin-left:80%}.column.is-0-touch{flex:none;width:0%}.column.is-offset-0-touch{margin-left:0%}.column.is-1-touch{flex:none;width:8.33333%}.column.is-offset-1-touch{margin-left:8.33333%}.column.is-2-touch{flex:none;width:16.66667%}.column.is-offset-2-touch{margin-left:16.66667%}.column.is-3-touch{flex:none;width:25%}.column.is-offset-3-touch{margin-left:25%}.column.is-4-touch{flex:none;width:33.33333%}.column.is-offset-4-touch{margin-left:33.33333%}.column.is-5-touch{flex:none;width:41.66667%}.column.is-offset-5-touch{margin-left:41.66667%}.column.is-6-touch{flex:none;width:50%}.column.is-offset-6-touch{margin-left:50%}.column.is-7-touch{flex:none;width:58.33333%}.column.is-offset-7-touch{margin-left:58.33333%}.column.is-8-touch{flex:none;width:66.66667%}.column.is-offset-8-touch{margin-left:66.66667%}.column.is-9-touch{flex:none;width:75%}.column.is-offset-9-touch{margin-left:75%}.column.is-10-touch{flex:none;width:83.33333%}.column.is-offset-10-touch{margin-left:83.33333%}.column.is-11-touch{flex:none;width:91.66667%}.column.is-offset-11-touch{margin-left:91.66667%}.column.is-12-touch{flex:none;width:100%}.column.is-offset-12-touch{margin-left:100%}}@media screen and (min-width: 1024px){.column.is-narrow-desktop{flex:none;width:unset}.column.is-full-desktop{flex:none;width:100%}.column.is-three-quarters-desktop{flex:none;width:75%}.column.is-two-thirds-desktop{flex:none;width:66.6666%}.column.is-half-desktop{flex:none;width:50%}.column.is-one-third-desktop{flex:none;width:33.3333%}.column.is-one-quarter-desktop{flex:none;width:25%}.column.is-one-fifth-desktop{flex:none;width:20%}.column.is-two-fifths-desktop{flex:none;width:40%}.column.is-three-fifths-desktop{flex:none;width:60%}.column.is-four-fifths-desktop{flex:none;width:80%}.column.is-offset-three-quarters-desktop{margin-left:75%}.column.is-offset-two-thirds-desktop{margin-left:66.6666%}.column.is-offset-half-desktop{margin-left:50%}.column.is-offset-one-third-desktop{margin-left:33.3333%}.column.is-offset-one-quarter-desktop{margin-left:25%}.column.is-offset-one-fifth-desktop{margin-left:20%}.column.is-offset-two-fifths-desktop{margin-left:40%}.column.is-offset-three-fifths-desktop{margin-left:60%}.column.is-offset-four-fifths-desktop{margin-left:80%}.column.is-0-desktop{flex:none;width:0%}.column.is-offset-0-desktop{margin-left:0%}.column.is-1-desktop{flex:none;width:8.33333%}.column.is-offset-1-desktop{margin-left:8.33333%}.column.is-2-desktop{flex:none;width:16.66667%}.column.is-offset-2-desktop{margin-left:16.66667%}.column.is-3-desktop{flex:none;width:25%}.column.is-offset-3-desktop{margin-left:25%}.column.is-4-desktop{flex:none;width:33.33333%}.column.is-offset-4-desktop{margin-left:33.33333%}.column.is-5-desktop{flex:none;width:41.66667%}.column.is-offset-5-desktop{margin-left:41.66667%}.column.is-6-desktop{flex:none;width:50%}.column.is-offset-6-desktop{margin-left:50%}.column.is-7-desktop{flex:none;width:58.33333%}.column.is-offset-7-desktop{margin-left:58.33333%}.column.is-8-desktop{flex:none;width:66.66667%}.column.is-offset-8-desktop{margin-left:66.66667%}.column.is-9-desktop{flex:none;width:75%}.column.is-offset-9-desktop{margin-left:75%}.column.is-10-desktop{flex:none;width:83.33333%}.column.is-offset-10-desktop{margin-left:83.33333%}.column.is-11-desktop{flex:none;width:91.66667%}.column.is-offset-11-desktop{margin-left:91.66667%}.column.is-12-desktop{flex:none;width:100%}.column.is-offset-12-desktop{margin-left:100%}}@media screen and (min-width: 1216px){.column.is-narrow-widescreen{flex:none;width:unset}.column.is-full-widescreen{flex:none;width:100%}.column.is-three-quarters-widescreen{flex:none;width:75%}.column.is-two-thirds-widescreen{flex:none;width:66.6666%}.column.is-half-widescreen{flex:none;width:50%}.column.is-one-third-widescreen{flex:none;width:33.3333%}.column.is-one-quarter-widescreen{flex:none;width:25%}.column.is-one-fifth-widescreen{flex:none;width:20%}.column.is-two-fifths-widescreen{flex:none;width:40%}.column.is-three-fifths-widescreen{flex:none;width:60%}.column.is-four-fifths-widescreen{flex:none;width:80%}.column.is-offset-three-quarters-widescreen{margin-left:75%}.column.is-offset-two-thirds-widescreen{margin-left:66.6666%}.column.is-offset-half-widescreen{margin-left:50%}.column.is-offset-one-third-widescreen{margin-left:33.3333%}.column.is-offset-one-quarter-widescreen{margin-left:25%}.column.is-offset-one-fifth-widescreen{margin-left:20%}.column.is-offset-two-fifths-widescreen{margin-left:40%}.column.is-offset-three-fifths-widescreen{margin-left:60%}.column.is-offset-four-fifths-widescreen{margin-left:80%}.column.is-0-widescreen{flex:none;width:0%}.column.is-offset-0-widescreen{margin-left:0%}.column.is-1-widescreen{flex:none;width:8.33333%}.column.is-offset-1-widescreen{margin-left:8.33333%}.column.is-2-widescreen{flex:none;width:16.66667%}.column.is-offset-2-widescreen{margin-left:16.66667%}.column.is-3-widescreen{flex:none;width:25%}.column.is-offset-3-widescreen{margin-left:25%}.column.is-4-widescreen{flex:none;width:33.33333%}.column.is-offset-4-widescreen{margin-left:33.33333%}.column.is-5-widescreen{flex:none;width:41.66667%}.column.is-offset-5-widescreen{margin-left:41.66667%}.column.is-6-widescreen{flex:none;width:50%}.column.is-offset-6-widescreen{margin-left:50%}.column.is-7-widescreen{flex:none;width:58.33333%}.column.is-offset-7-widescreen{margin-left:58.33333%}.column.is-8-widescreen{flex:none;width:66.66667%}.column.is-offset-8-widescreen{margin-left:66.66667%}.column.is-9-widescreen{flex:none;width:75%}.column.is-offset-9-widescreen{margin-left:75%}.column.is-10-widescreen{flex:none;width:83.33333%}.column.is-offset-10-widescreen{margin-left:83.33333%}.column.is-11-widescreen{flex:none;width:91.66667%}.column.is-offset-11-widescreen{margin-left:91.66667%}.column.is-12-widescreen{flex:none;width:100%}.column.is-offset-12-widescreen{margin-left:100%}}@media screen and (min-width: 1408px){.column.is-narrow-fullhd{flex:none;width:unset}.column.is-full-fullhd{flex:none;width:100%}.column.is-three-quarters-fullhd{flex:none;width:75%}.column.is-two-thirds-fullhd{flex:none;width:66.6666%}.column.is-half-fullhd{flex:none;width:50%}.column.is-one-third-fullhd{flex:none;width:33.3333%}.column.is-one-quarter-fullhd{flex:none;width:25%}.column.is-one-fifth-fullhd{flex:none;width:20%}.column.is-two-fifths-fullhd{flex:none;width:40%}.column.is-three-fifths-fullhd{flex:none;width:60%}.column.is-four-fifths-fullhd{flex:none;width:80%}.column.is-offset-three-quarters-fullhd{margin-left:75%}.column.is-offset-two-thirds-fullhd{margin-left:66.6666%}.column.is-offset-half-fullhd{margin-left:50%}.column.is-offset-one-third-fullhd{margin-left:33.3333%}.column.is-offset-one-quarter-fullhd{margin-left:25%}.column.is-offset-one-fifth-fullhd{margin-left:20%}.column.is-offset-two-fifths-fullhd{margin-left:40%}.column.is-offset-three-fifths-fullhd{margin-left:60%}.column.is-offset-four-fifths-fullhd{margin-left:80%}.column.is-0-fullhd{flex:none;width:0%}.column.is-offset-0-fullhd{margin-left:0%}.column.is-1-fullhd{flex:none;width:8.33333%}.column.is-offset-1-fullhd{margin-left:8.33333%}.column.is-2-fullhd{flex:none;width:16.66667%}.column.is-offset-2-fullhd{margin-left:16.66667%}.column.is-3-fullhd{flex:none;width:25%}.column.is-offset-3-fullhd{margin-left:25%}.column.is-4-fullhd{flex:none;width:33.33333%}.column.is-offset-4-fullhd{margin-left:33.33333%}.column.is-5-fullhd{flex:none;width:41.66667%}.column.is-offset-5-fullhd{margin-left:41.66667%}.column.is-6-fullhd{flex:none;width:50%}.column.is-offset-6-fullhd{margin-left:50%}.column.is-7-fullhd{flex:none;width:58.33333%}.column.is-offset-7-fullhd{margin-left:58.33333%}.column.is-8-fullhd{flex:none;width:66.66667%}.column.is-offset-8-fullhd{margin-left:66.66667%}.column.is-9-fullhd{flex:none;width:75%}.column.is-offset-9-fullhd{margin-left:75%}.column.is-10-fullhd{flex:none;width:83.33333%}.column.is-offset-10-fullhd{margin-left:83.33333%}.column.is-11-fullhd{flex:none;width:91.66667%}.column.is-offset-11-fullhd{margin-left:91.66667%}.column.is-12-fullhd{flex:none;width:100%}.column.is-offset-12-fullhd{margin-left:100%}}.columns{margin-left:-.75rem;margin-right:-.75rem;margin-top:-.75rem}.columns:last-child{margin-bottom:-.75rem}.columns:not(:last-child){margin-bottom:calc(1.5rem - .75rem)}.columns.is-centered{justify-content:center}.columns.is-gapless{margin-left:0;margin-right:0;margin-top:0}.columns.is-gapless>.column{margin:0;padding:0 !important}.columns.is-gapless:not(:last-child){margin-bottom:1.5rem}.columns.is-gapless:last-child{margin-bottom:0}.columns.is-mobile{display:flex}.columns.is-multiline{flex-wrap:wrap}.columns.is-vcentered{align-items:center}@media screen and (min-width: 769px),print{.columns:not(.is-desktop){display:flex}}@media screen and (min-width: 1024px){.columns.is-desktop{display:flex}}.columns.is-variable{--columnGap: 0.75rem;margin-left:calc(-1 * var(--columnGap));margin-right:calc(-1 * var(--columnGap))}.columns.is-variable>.column{padding-left:var(--columnGap);padding-right:var(--columnGap)}.columns.is-variable.is-0{--columnGap: 0rem}@media screen and (max-width: 768px){.columns.is-variable.is-0-mobile{--columnGap: 0rem}}@media screen and (min-width: 769px),print{.columns.is-variable.is-0-tablet{--columnGap: 0rem}}@media screen and (min-width: 769px) and (max-width: 1023px){.columns.is-variable.is-0-tablet-only{--columnGap: 0rem}}@media screen and (max-width: 1023px){.columns.is-variable.is-0-touch{--columnGap: 0rem}}@media screen and (min-width: 1024px){.columns.is-variable.is-0-desktop{--columnGap: 0rem}}@media screen and (min-width: 1024px) and (max-width: 1215px){.columns.is-variable.is-0-desktop-only{--columnGap: 0rem}}@media screen and (min-width: 1216px){.columns.is-variable.is-0-widescreen{--columnGap: 0rem}}@media screen and (min-width: 1216px) and (max-width: 1407px){.columns.is-variable.is-0-widescreen-only{--columnGap: 0rem}}@media screen and (min-width: 1408px){.columns.is-variable.is-0-fullhd{--columnGap: 0rem}}.columns.is-variable.is-1{--columnGap: .25rem}@media screen and (max-width: 768px){.columns.is-variable.is-1-mobile{--columnGap: .25rem}}@media screen and (min-width: 769px),print{.columns.is-variable.is-1-tablet{--columnGap: .25rem}}@media screen and (min-width: 769px) and (max-width: 1023px){.columns.is-variable.is-1-tablet-only{--columnGap: .25rem}}@media screen and (max-width: 1023px){.columns.is-variable.is-1-touch{--columnGap: .25rem}}@media screen and (min-width: 1024px){.columns.is-variable.is-1-desktop{--columnGap: .25rem}}@media screen and (min-width: 1024px) and (max-width: 1215px){.columns.is-variable.is-1-desktop-only{--columnGap: .25rem}}@media screen and (min-width: 1216px){.columns.is-variable.is-1-widescreen{--columnGap: .25rem}}@media screen and (min-width: 1216px) and (max-width: 1407px){.columns.is-variable.is-1-widescreen-only{--columnGap: .25rem}}@media screen and (min-width: 1408px){.columns.is-variable.is-1-fullhd{--columnGap: .25rem}}.columns.is-variable.is-2{--columnGap: .5rem}@media screen and (max-width: 768px){.columns.is-variable.is-2-mobile{--columnGap: .5rem}}@media screen and (min-width: 769px),print{.columns.is-variable.is-2-tablet{--columnGap: .5rem}}@media screen and (min-width: 769px) and (max-width: 1023px){.columns.is-variable.is-2-tablet-only{--columnGap: .5rem}}@media screen and (max-width: 1023px){.columns.is-variable.is-2-touch{--columnGap: .5rem}}@media screen and (min-width: 1024px){.columns.is-variable.is-2-desktop{--columnGap: .5rem}}@media screen and (min-width: 1024px) and (max-width: 1215px){.columns.is-variable.is-2-desktop-only{--columnGap: .5rem}}@media screen and (min-width: 1216px){.columns.is-variable.is-2-widescreen{--columnGap: .5rem}}@media screen and (min-width: 1216px) and (max-width: 1407px){.columns.is-variable.is-2-widescreen-only{--columnGap: .5rem}}@media screen and (min-width: 1408px){.columns.is-variable.is-2-fullhd{--columnGap: .5rem}}.columns.is-variable.is-3{--columnGap: .75rem}@media screen and (max-width: 768px){.columns.is-variable.is-3-mobile{--columnGap: .75rem}}@media screen and (min-width: 769px),print{.columns.is-variable.is-3-tablet{--columnGap: .75rem}}@media screen and (min-width: 769px) and (max-width: 1023px){.columns.is-variable.is-3-tablet-only{--columnGap: .75rem}}@media screen and (max-width: 1023px){.columns.is-variable.is-3-touch{--columnGap: .75rem}}@media screen and (min-width: 1024px){.columns.is-variable.is-3-desktop{--columnGap: .75rem}}@media screen and (min-width: 1024px) and (max-width: 1215px){.columns.is-variable.is-3-desktop-only{--columnGap: .75rem}}@media screen and (min-width: 1216px){.columns.is-variable.is-3-widescreen{--columnGap: .75rem}}@media screen and (min-width: 1216px) and (max-width: 1407px){.columns.is-variable.is-3-widescreen-only{--columnGap: .75rem}}@media screen and (min-width: 1408px){.columns.is-variable.is-3-fullhd{--columnGap: .75rem}}.columns.is-variable.is-4{--columnGap: 1rem}@media screen and (max-width: 768px){.columns.is-variable.is-4-mobile{--columnGap: 1rem}}@media screen and (min-width: 769px),print{.columns.is-variable.is-4-tablet{--columnGap: 1rem}}@media screen and (min-width: 769px) and (max-width: 1023px){.columns.is-variable.is-4-tablet-only{--columnGap: 1rem}}@media screen and (max-width: 1023px){.columns.is-variable.is-4-touch{--columnGap: 1rem}}@media screen and (min-width: 1024px){.columns.is-variable.is-4-desktop{--columnGap: 1rem}}@media screen and (min-width: 1024px) and (max-width: 1215px){.columns.is-variable.is-4-desktop-only{--columnGap: 1rem}}@media screen and (min-width: 1216px){.columns.is-variable.is-4-widescreen{--columnGap: 1rem}}@media screen and (min-width: 1216px) and (max-width: 1407px){.columns.is-variable.is-4-widescreen-only{--columnGap: 1rem}}@media screen and (min-width: 1408px){.columns.is-variable.is-4-fullhd{--columnGap: 1rem}}.columns.is-variable.is-5{--columnGap: 1.25rem}@media screen and (max-width: 768px){.columns.is-variable.is-5-mobile{--columnGap: 1.25rem}}@media screen and (min-width: 769px),print{.columns.is-variable.is-5-tablet{--columnGap: 1.25rem}}@media screen and (min-width: 769px) and (max-width: 1023px){.columns.is-variable.is-5-tablet-only{--columnGap: 1.25rem}}@media screen and (max-width: 1023px){.columns.is-variable.is-5-touch{--columnGap: 1.25rem}}@media screen and (min-width: 1024px){.columns.is-variable.is-5-desktop{--columnGap: 1.25rem}}@media screen and (min-width: 1024px) and (max-width: 1215px){.columns.is-variable.is-5-desktop-only{--columnGap: 1.25rem}}@media screen and (min-width: 1216px){.columns.is-variable.is-5-widescreen{--columnGap: 1.25rem}}@media screen and (min-width: 1216px) and (max-width: 1407px){.columns.is-variable.is-5-widescreen-only{--columnGap: 1.25rem}}@media screen and (min-width: 1408px){.columns.is-variable.is-5-fullhd{--columnGap: 1.25rem}}.columns.is-variable.is-6{--columnGap: 1.5rem}@media screen and (max-width: 768px){.columns.is-variable.is-6-mobile{--columnGap: 1.5rem}}@media screen and (min-width: 769px),print{.columns.is-variable.is-6-tablet{--columnGap: 1.5rem}}@media screen and (min-width: 769px) and (max-width: 1023px){.columns.is-variable.is-6-tablet-only{--columnGap: 1.5rem}}@media screen and (max-width: 1023px){.columns.is-variable.is-6-touch{--columnGap: 1.5rem}}@media screen and (min-width: 1024px){.columns.is-variable.is-6-desktop{--columnGap: 1.5rem}}@media screen and (min-width: 1024px) and (max-width: 1215px){.columns.is-variable.is-6-desktop-only{--columnGap: 1.5rem}}@media screen and (min-width: 1216px){.columns.is-variable.is-6-widescreen{--columnGap: 1.5rem}}@media screen and (min-width: 1216px) and (max-width: 1407px){.columns.is-variable.is-6-widescreen-only{--columnGap: 1.5rem}}@media screen and (min-width: 1408px){.columns.is-variable.is-6-fullhd{--columnGap: 1.5rem}}.columns.is-variable.is-7{--columnGap: 1.75rem}@media screen and (max-width: 768px){.columns.is-variable.is-7-mobile{--columnGap: 1.75rem}}@media screen and (min-width: 769px),print{.columns.is-variable.is-7-tablet{--columnGap: 1.75rem}}@media screen and (min-width: 769px) and (max-width: 1023px){.columns.is-variable.is-7-tablet-only{--columnGap: 1.75rem}}@media screen and (max-width: 1023px){.columns.is-variable.is-7-touch{--columnGap: 1.75rem}}@media screen and (min-width: 1024px){.columns.is-variable.is-7-desktop{--columnGap: 1.75rem}}@media screen and (min-width: 1024px) and (max-width: 1215px){.columns.is-variable.is-7-desktop-only{--columnGap: 1.75rem}}@media screen and (min-width: 1216px){.columns.is-variable.is-7-widescreen{--columnGap: 1.75rem}}@media screen and (min-width: 1216px) and (max-width: 1407px){.columns.is-variable.is-7-widescreen-only{--columnGap: 1.75rem}}@media screen and (min-width: 1408px){.columns.is-variable.is-7-fullhd{--columnGap: 1.75rem}}.columns.is-variable.is-8{--columnGap: 2rem}@media screen and (max-width: 768px){.columns.is-variable.is-8-mobile{--columnGap: 2rem}}@media screen and (min-width: 769px),print{.columns.is-variable.is-8-tablet{--columnGap: 2rem}}@media screen and (min-width: 769px) and (max-width: 1023px){.columns.is-variable.is-8-tablet-only{--columnGap: 2rem}}@media screen and (max-width: 1023px){.columns.is-variable.is-8-touch{--columnGap: 2rem}}@media screen and (min-width: 1024px){.columns.is-variable.is-8-desktop{--columnGap: 2rem}}@media screen and (min-width: 1024px) and (max-width: 1215px){.columns.is-variable.is-8-desktop-only{--columnGap: 2rem}}@media screen and (min-width: 1216px){.columns.is-variable.is-8-widescreen{--columnGap: 2rem}}@media screen and (min-width: 1216px) and (max-width: 1407px){.columns.is-variable.is-8-widescreen-only{--columnGap: 2rem}}@media screen and (min-width: 1408px){.columns.is-variable.is-8-fullhd{--columnGap: 2rem}}.tile{align-items:stretch;display:block;flex-basis:0;flex-grow:1;flex-shrink:1;min-height:min-content}.tile.is-ancestor{margin-left:-.75rem;margin-right:-.75rem;margin-top:-.75rem}.tile.is-ancestor:last-child{margin-bottom:-.75rem}.tile.is-ancestor:not(:last-child){margin-bottom:.75rem}.tile.is-child{margin:0 !important}.tile.is-parent{padding:.75rem}.tile.is-vertical{flex-direction:column}.tile.is-vertical>.tile.is-child:not(:last-child){margin-bottom:1.5rem !important}@media screen and (min-width: 769px),print{.tile:not(.is-child){display:flex}.tile.is-1{flex:none;width:8.33333%}.tile.is-2{flex:none;width:16.66667%}.tile.is-3{flex:none;width:25%}.tile.is-4{flex:none;width:33.33333%}.tile.is-5{flex:none;width:41.66667%}.tile.is-6{flex:none;width:50%}.tile.is-7{flex:none;width:58.33333%}.tile.is-8{flex:none;width:66.66667%}.tile.is-9{flex:none;width:75%}.tile.is-10{flex:none;width:83.33333%}.tile.is-11{flex:none;width:91.66667%}.tile.is-12{flex:none;width:100%}}.has-text-white{color:#fff !important}a.has-text-white:hover,a.has-text-white:focus{color:#e6e6e6 !important}.has-background-white{background-color:#fff !important}.has-text-black{color:#0a0a0a !important}a.has-text-black:hover,a.has-text-black:focus{color:#000 !important}.has-background-black{background-color:#0a0a0a !important}.has-text-light{color:#f5f5f5 !important}a.has-text-light:hover,a.has-text-light:focus{color:#dbdbdb !important}.has-background-light{background-color:#f5f5f5 !important}.has-text-dark{color:#363636 !important}a.has-text-dark:hover,a.has-text-dark:focus{color:#1c1c1c !important}.has-background-dark{background-color:#363636 !important}.has-text-primary{color:#00d1b2 !important}a.has-text-primary:hover,a.has-text-primary:focus{color:#009e86 !important}.has-background-primary{background-color:#00d1b2 !important}.has-text-primary-light{color:#ebfffc !important}a.has-text-primary-light:hover,a.has-text-primary-light:focus{color:#b8fff4 !important}.has-background-primary-light{background-color:#ebfffc !important}.has-text-primary-dark{color:#00947e !important}a.has-text-primary-dark:hover,a.has-text-primary-dark:focus{color:#00c7a9 !important}.has-background-primary-dark{background-color:#00947e !important}.has-text-link{color:#485fc7 !important}a.has-text-link:hover,a.has-text-link:focus{color:#3449a8 !important}.has-background-link{background-color:#485fc7 !important}.has-text-link-light{color:#eff1fa !important}a.has-text-link-light:hover,a.has-text-link-light:focus{color:#c8cfee !important}.has-background-link-light{background-color:#eff1fa !important}.has-text-link-dark{color:#3850b7 !important}a.has-text-link-dark:hover,a.has-text-link-dark:focus{color:#576dcb !important}.has-background-link-dark{background-color:#3850b7 !important}.has-text-info{color:#3e8ed0 !important}a.has-text-info:hover,a.has-text-info:focus{color:#2b74b1 !important}.has-background-info{background-color:#3e8ed0 !important}.has-text-info-light{color:#eff5fb !important}a.has-text-info-light:hover,a.has-text-info-light:focus{color:#c6ddf1 !important}.has-background-info-light{background-color:#eff5fb !important}.has-text-info-dark{color:#296fa8 !important}a.has-text-info-dark:hover,a.has-text-info-dark:focus{color:#368ace !important}.has-background-info-dark{background-color:#296fa8 !important}.has-text-success{color:#48c78e !important}a.has-text-success:hover,a.has-text-success:focus{color:#34a873 !important}.has-background-success{background-color:#48c78e !important}.has-text-success-light{color:#effaf5 !important}a.has-text-success-light:hover,a.has-text-success-light:focus{color:#c8eedd !important}.has-background-success-light{background-color:#effaf5 !important}.has-text-success-dark{color:#257953 !important}a.has-text-success-dark:hover,a.has-text-success-dark:focus{color:#31a06e !important}.has-background-success-dark{background-color:#257953 !important}.has-text-warning{color:#ffe08a !important}a.has-text-warning:hover,a.has-text-warning:focus{color:#ffd257 !important}.has-background-warning{background-color:#ffe08a !important}.has-text-warning-light{color:#fffaeb !important}a.has-text-warning-light:hover,a.has-text-warning-light:focus{color:#ffecb8 !important}.has-background-warning-light{background-color:#fffaeb !important}.has-text-warning-dark{color:#946c00 !important}a.has-text-warning-dark:hover,a.has-text-warning-dark:focus{color:#c79200 !important}.has-background-warning-dark{background-color:#946c00 !important}.has-text-danger{color:#f14668 !important}a.has-text-danger:hover,a.has-text-danger:focus{color:#ee1742 !important}.has-background-danger{background-color:#f14668 !important}.has-text-danger-light{color:#feecf0 !important}a.has-text-danger-light:hover,a.has-text-danger-light:focus{color:#fabdc9 !important}.has-background-danger-light{background-color:#feecf0 !important}.has-text-danger-dark{color:#cc0f35 !important}a.has-text-danger-dark:hover,a.has-text-danger-dark:focus{color:#ee2049 !important}.has-background-danger-dark{background-color:#cc0f35 !important}.has-text-black-bis{color:#121212 !important}.has-background-black-bis{background-color:#121212 !important}.has-text-black-ter{color:#242424 !important}.has-background-black-ter{background-color:#242424 !important}.has-text-grey-darker{color:#363636 !important}.has-background-grey-darker{background-color:#363636 !important}.has-text-grey-dark{color:#4a4a4a !important}.has-background-grey-dark{background-color:#4a4a4a !important}.has-text-grey{color:#7a7a7a !important}.has-background-grey{background-color:#7a7a7a !important}.has-text-grey-light{color:#b5b5b5 !important}.has-background-grey-light{background-color:#b5b5b5 !important}.has-text-grey-lighter{color:#dbdbdb !important}.has-background-grey-lighter{background-color:#dbdbdb !important}.has-text-white-ter{color:#f5f5f5 !important}.has-background-white-ter{background-color:#f5f5f5 !important}.has-text-white-bis{color:#fafafa !important}.has-background-white-bis{background-color:#fafafa !important}.is-flex-direction-row{flex-direction:row !important}.is-flex-direction-row-reverse{flex-direction:row-reverse !important}.is-flex-direction-column{flex-direction:column !important}.is-flex-direction-column-reverse{flex-direction:column-reverse !important}.is-flex-wrap-nowrap{flex-wrap:nowrap !important}.is-flex-wrap-wrap{flex-wrap:wrap !important}.is-flex-wrap-wrap-reverse{flex-wrap:wrap-reverse !important}.is-justify-content-flex-start{justify-content:flex-start !important}.is-justify-content-flex-end{justify-content:flex-end !important}.is-justify-content-center{justify-content:center !important}.is-justify-content-space-between{justify-content:space-between !important}.is-justify-content-space-around{justify-content:space-around !important}.is-justify-content-space-evenly{justify-content:space-evenly !important}.is-justify-content-start{justify-content:start !important}.is-justify-content-end{justify-content:end !important}.is-justify-content-left{justify-content:left !important}.is-justify-content-right{justify-content:right !important}.is-align-content-flex-start{align-content:flex-start !important}.is-align-content-flex-end{align-content:flex-end !important}.is-align-content-center{align-content:center !important}.is-align-content-space-between{align-content:space-between !important}.is-align-content-space-around{align-content:space-around !important}.is-align-content-space-evenly{align-content:space-evenly !important}.is-align-content-stretch{align-content:stretch !important}.is-align-content-start{align-content:start !important}.is-align-content-end{align-content:end !important}.is-align-content-baseline{align-content:baseline !important}.is-align-items-stretch{align-items:stretch !important}.is-align-items-flex-start{align-items:flex-start !important}.is-align-items-flex-end{align-items:flex-end !important}.is-align-items-center{align-items:center !important}.is-align-items-baseline{align-items:baseline !important}.is-align-items-start{align-items:start !important}.is-align-items-end{align-items:end !important}.is-align-items-self-start{align-items:self-start !important}.is-align-items-self-end{align-items:self-end !important}.is-align-self-auto{align-self:auto !important}.is-align-self-flex-start{align-self:flex-start !important}.is-align-self-flex-end{align-self:flex-end !important}.is-align-self-center{align-self:center !important}.is-align-self-baseline{align-self:baseline !important}.is-align-self-stretch{align-self:stretch !important}.is-flex-grow-0{flex-grow:0 !important}.is-flex-grow-1{flex-grow:1 !important}.is-flex-grow-2{flex-grow:2 !important}.is-flex-grow-3{flex-grow:3 !important}.is-flex-grow-4{flex-grow:4 !important}.is-flex-grow-5{flex-grow:5 !important}.is-flex-shrink-0{flex-shrink:0 !important}.is-flex-shrink-1{flex-shrink:1 !important}.is-flex-shrink-2{flex-shrink:2 !important}.is-flex-shrink-3{flex-shrink:3 !important}.is-flex-shrink-4{flex-shrink:4 !important}.is-flex-shrink-5{flex-shrink:5 !important}.is-clearfix::after{clear:both;content:" ";display:table}.is-pulled-left{float:left !important}.is-pulled-right{float:right !important}.is-radiusless{border-radius:0 !important}.is-shadowless{box-shadow:none !important}.is-clickable{cursor:pointer !important;pointer-events:all !important}.is-clipped{overflow:hidden !important}.is-relative{position:relative !important}.is-marginless{margin:0 !important}.is-paddingless{padding:0 !important}.m-0{margin:0 !important}.mt-0{margin-top:0 !important}.mr-0{margin-right:0 !important}.mb-0{margin-bottom:0 !important}.ml-0{margin-left:0 !important}.mx-0{margin-left:0 !important;margin-right:0 !important}.my-0{margin-top:0 !important;margin-bottom:0 !important}.m-1{margin:.25rem !important}.mt-1{margin-top:.25rem !important}.mr-1{margin-right:.25rem !important}.mb-1{margin-bottom:.25rem !important}.ml-1{margin-left:.25rem !important}.mx-1{margin-left:.25rem !important;margin-right:.25rem !important}.my-1{margin-top:.25rem !important;margin-bottom:.25rem !important}.m-2{margin:.5rem !important}.mt-2{margin-top:.5rem !important}.mr-2{margin-right:.5rem !important}.mb-2{margin-bottom:.5rem !important}.ml-2{margin-left:.5rem !important}.mx-2{margin-left:.5rem !important;margin-right:.5rem !important}.my-2{margin-top:.5rem !important;margin-bottom:.5rem !important}.m-3{margin:.75rem !important}.mt-3{margin-top:.75rem !important}.mr-3{margin-right:.75rem !important}.mb-3{margin-bottom:.75rem !important}.ml-3{margin-left:.75rem !important}.mx-3{margin-left:.75rem !important;margin-right:.75rem !important}.my-3{margin-top:.75rem !important;margin-bottom:.75rem !important}.m-4{margin:1rem !important}.mt-4{margin-top:1rem !important}.mr-4{margin-right:1rem !important}.mb-4{margin-bottom:1rem !important}.ml-4{margin-left:1rem !important}.mx-4{margin-left:1rem !important;margin-right:1rem !important}.my-4{margin-top:1rem !important;margin-bottom:1rem !important}.m-5{margin:1.5rem !important}.mt-5{margin-top:1.5rem !important}.mr-5{margin-right:1.5rem !important}.mb-5{margin-bottom:1.5rem !important}.ml-5{margin-left:1.5rem !important}.mx-5{margin-left:1.5rem !important;margin-right:1.5rem !important}.my-5{margin-top:1.5rem !important;margin-bottom:1.5rem !important}.m-6{margin:3rem !important}.mt-6{margin-top:3rem !important}.mr-6{margin-right:3rem !important}.mb-6{margin-bottom:3rem !important}.ml-6{margin-left:3rem !important}.mx-6{margin-left:3rem !important;margin-right:3rem !important}.my-6{margin-top:3rem !important;margin-bottom:3rem !important}.m-auto{margin:auto !important}.mt-auto{margin-top:auto !important}.mr-auto{margin-right:auto !important}.mb-auto{margin-bottom:auto !important}.ml-auto{margin-left:auto !important}.mx-auto{margin-left:auto !important;margin-right:auto !important}.my-auto{margin-top:auto !important;margin-bottom:auto !important}.p-0{padding:0 !important}.pt-0{padding-top:0 !important}.pr-0{padding-right:0 !important}.pb-0{padding-bottom:0 !important}.pl-0{padding-left:0 !important}.px-0{padding-left:0 !important;padding-right:0 !important}.py-0{padding-top:0 !important;padding-bottom:0 !important}.p-1{padding:.25rem !important}.pt-1{padding-top:.25rem !important}.pr-1{padding-right:.25rem !important}.pb-1{padding-bottom:.25rem !important}.pl-1{padding-left:.25rem !important}.px-1{padding-left:.25rem !important;padding-right:.25rem !important}.py-1{padding-top:.25rem !important;padding-bottom:.25rem !important}.p-2{padding:.5rem !important}.pt-2{padding-top:.5rem !important}.pr-2{padding-right:.5rem !important}.pb-2{padding-bottom:.5rem !important}.pl-2{padding-left:.5rem !important}.px-2{padding-left:.5rem !important;padding-right:.5rem !important}.py-2{padding-top:.5rem !important;padding-bottom:.5rem !important}.p-3{padding:.75rem !important}.pt-3{padding-top:.75rem !important}.pr-3{padding-right:.75rem !important}.pb-3{padding-bottom:.75rem !important}.pl-3{padding-left:.75rem !important}.px-3{padding-left:.75rem !important;padding-right:.75rem !important}.py-3{padding-top:.75rem !important;padding-bottom:.75rem !important}.p-4{padding:1rem !important}.pt-4{padding-top:1rem !important}.pr-4{padding-right:1rem !important}.pb-4{padding-bottom:1rem !important}.pl-4{padding-left:1rem !important}.px-4{padding-left:1rem !important;padding-right:1rem !important}.py-4{padding-top:1rem !important;padding-bottom:1rem !important}.p-5{padding:1.5rem !important}.pt-5{padding-top:1.5rem !important}.pr-5{padding-right:1.5rem !important}.pb-5{padding-bottom:1.5rem !important}.pl-5{padding-left:1.5rem !important}.px-5{padding-left:1.5rem !important;padding-right:1.5rem !important}.py-5{padding-top:1.5rem !important;padding-bottom:1.5rem !important}.p-6{padding:3rem !important}.pt-6{padding-top:3rem !important}.pr-6{padding-right:3rem !important}.pb-6{padding-bottom:3rem !important}.pl-6{padding-left:3rem !important}.px-6{padding-left:3rem !important;padding-right:3rem !important}.py-6{padding-top:3rem !important;padding-bottom:3rem !important}.p-auto{padding:auto !important}.pt-auto{padding-top:auto !important}.pr-auto{padding-right:auto !important}.pb-auto{padding-bottom:auto !important}.pl-auto{padding-left:auto !important}.px-auto{padding-left:auto !important;padding-right:auto !important}.py-auto{padding-top:auto !important;padding-bottom:auto !important}.is-size-1{font-size:3rem !important}.is-size-2{font-size:2.5rem !important}.is-size-3{font-size:2rem !important}.is-size-4{font-size:1.5rem !important}.is-size-5{font-size:1.25rem !important}.is-size-6{font-size:1rem !important}.is-size-7{font-size:.75rem !important}@media screen and (max-width: 768px){.is-size-1-mobile{font-size:3rem !important}.is-size-2-mobile{font-size:2.5rem !important}.is-size-3-mobile{font-size:2rem !important}.is-size-4-mobile{font-size:1.5rem !important}.is-size-5-mobile{font-size:1.25rem !important}.is-size-6-mobile{font-size:1rem !important}.is-size-7-mobile{font-size:.75rem !important}}@media screen and (min-width: 769px),print{.is-size-1-tablet{font-size:3rem !important}.is-size-2-tablet{font-size:2.5rem !important}.is-size-3-tablet{font-size:2rem !important}.is-size-4-tablet{font-size:1.5rem !important}.is-size-5-tablet{font-size:1.25rem !important}.is-size-6-tablet{font-size:1rem !important}.is-size-7-tablet{font-size:.75rem !important}}@media screen and (max-width: 1023px){.is-size-1-touch{font-size:3rem !important}.is-size-2-touch{font-size:2.5rem !important}.is-size-3-touch{font-size:2rem !important}.is-size-4-touch{font-size:1.5rem !important}.is-size-5-touch{font-size:1.25rem !important}.is-size-6-touch{font-size:1rem !important}.is-size-7-touch{font-size:.75rem !important}}@media screen and (min-width: 1024px){.is-size-1-desktop{font-size:3rem !important}.is-size-2-desktop{font-size:2.5rem !important}.is-size-3-desktop{font-size:2rem !important}.is-size-4-desktop{font-size:1.5rem !important}.is-size-5-desktop{font-size:1.25rem !important}.is-size-6-desktop{font-size:1rem !important}.is-size-7-desktop{font-size:.75rem !important}}@media screen and (min-width: 1216px){.is-size-1-widescreen{font-size:3rem !important}.is-size-2-widescreen{font-size:2.5rem !important}.is-size-3-widescreen{font-size:2rem !important}.is-size-4-widescreen{font-size:1.5rem !important}.is-size-5-widescreen{font-size:1.25rem !important}.is-size-6-widescreen{font-size:1rem !important}.is-size-7-widescreen{font-size:.75rem !important}}@media screen and (min-width: 1408px){.is-size-1-fullhd{font-size:3rem !important}.is-size-2-fullhd{font-size:2.5rem !important}.is-size-3-fullhd{font-size:2rem !important}.is-size-4-fullhd{font-size:1.5rem !important}.is-size-5-fullhd{font-size:1.25rem !important}.is-size-6-fullhd{font-size:1rem !important}.is-size-7-fullhd{font-size:.75rem !important}}.has-text-centered{text-align:center !important}.has-text-justified{text-align:justify !important}.has-text-left{text-align:left !important}.has-text-right{text-align:right !important}@media screen and (max-width: 768px){.has-text-centered-mobile{text-align:center !important}}@media screen and (min-width: 769px),print{.has-text-centered-tablet{text-align:center !important}}@media screen and (min-width: 769px) and (max-width: 1023px){.has-text-centered-tablet-only{text-align:center !important}}@media screen and (max-width: 1023px){.has-text-centered-touch{text-align:center !important}}@media screen and (min-width: 1024px){.has-text-centered-desktop{text-align:center !important}}@media screen and (min-width: 1024px) and (max-width: 1215px){.has-text-centered-desktop-only{text-align:center !important}}@media screen and (min-width: 1216px){.has-text-centered-widescreen{text-align:center !important}}@media screen and (min-width: 1216px) and (max-width: 1407px){.has-text-centered-widescreen-only{text-align:center !important}}@media screen and (min-width: 1408px){.has-text-centered-fullhd{text-align:center !important}}@media screen and (max-width: 768px){.has-text-justified-mobile{text-align:justify !important}}@media screen and (min-width: 769px),print{.has-text-justified-tablet{text-align:justify !important}}@media screen and (min-width: 769px) and (max-width: 1023px){.has-text-justified-tablet-only{text-align:justify !important}}@media screen and (max-width: 1023px){.has-text-justified-touch{text-align:justify !important}}@media screen and (min-width: 1024px){.has-text-justified-desktop{text-align:justify !important}}@media screen and (min-width: 1024px) and (max-width: 1215px){.has-text-justified-desktop-only{text-align:justify !important}}@media screen and (min-width: 1216px){.has-text-justified-widescreen{text-align:justify !important}}@media screen and (min-width: 1216px) and (max-width: 1407px){.has-text-justified-widescreen-only{text-align:justify !important}}@media screen and (min-width: 1408px){.has-text-justified-fullhd{text-align:justify !important}}@media screen and (max-width: 768px){.has-text-left-mobile{text-align:left !important}}@media screen and (min-width: 769px),print{.has-text-left-tablet{text-align:left !important}}@media screen and (min-width: 769px) and (max-width: 1023px){.has-text-left-tablet-only{text-align:left !important}}@media screen and (max-width: 1023px){.has-text-left-touch{text-align:left !important}}@media screen and (min-width: 1024px){.has-text-left-desktop{text-align:left !important}}@media screen and (min-width: 1024px) and (max-width: 1215px){.has-text-left-desktop-only{text-align:left !important}}@media screen and (min-width: 1216px){.has-text-left-widescreen{text-align:left !important}}@media screen and (min-width: 1216px) and (max-width: 1407px){.has-text-left-widescreen-only{text-align:left !important}}@media screen and (min-width: 1408px){.has-text-left-fullhd{text-align:left !important}}@media screen and (max-width: 768px){.has-text-right-mobile{text-align:right !important}}@media screen and (min-width: 769px),print{.has-text-right-tablet{text-align:right !important}}@media screen and (min-width: 769px) and (max-width: 1023px){.has-text-right-tablet-only{text-align:right !important}}@media screen and (max-width: 1023px){.has-text-right-touch{text-align:right !important}}@media screen and (min-width: 1024px){.has-text-right-desktop{text-align:right !important}}@media screen and (min-width: 1024px) and (max-width: 1215px){.has-text-right-desktop-only{text-align:right !important}}@media screen and (min-width: 1216px){.has-text-right-widescreen{text-align:right !important}}@media screen and (min-width: 1216px) and (max-width: 1407px){.has-text-right-widescreen-only{text-align:right !important}}@media screen and (min-width: 1408px){.has-text-right-fullhd{text-align:right !important}}.is-capitalized{text-transform:capitalize !important}.is-lowercase{text-transform:lowercase !important}.is-uppercase{text-transform:uppercase !important}.is-italic{font-style:italic !important}.is-underlined{text-decoration:underline !important}.has-text-weight-light{font-weight:300 !important}.has-text-weight-normal{font-weight:400 !important}.has-text-weight-medium{font-weight:500 !important}.has-text-weight-semibold{font-weight:600 !important}.has-text-weight-bold{font-weight:700 !important}.is-family-primary{font-family:BlinkMacSystemFont,-apple-system,"Segoe UI","Roboto","Oxygen","Ubuntu","Cantarell","Fira Sans","Droid Sans","Helvetica Neue","Helvetica","Arial",sans-serif !important}.is-family-secondary{font-family:BlinkMacSystemFont,-apple-system,"Segoe UI","Roboto","Oxygen","Ubuntu","Cantarell","Fira Sans","Droid Sans","Helvetica Neue","Helvetica","Arial",sans-serif !important}.is-family-sans-serif{font-family:BlinkMacSystemFont,-apple-system,"Segoe UI","Roboto","Oxygen","Ubuntu","Cantarell","Fira Sans","Droid Sans","Helvetica Neue","Helvetica","Arial",sans-serif !important}.is-family-monospace{font-family:monospace !important}.is-family-code{font-family:monospace !important}.is-block{display:block !important}@media screen and (max-width: 768px){.is-block-mobile{display:block !important}}@media screen and (min-width: 769px),print{.is-block-tablet{display:block !important}}@media screen and (min-width: 769px) and (max-width: 1023px){.is-block-tablet-only{display:block !important}}@media screen and (max-width: 1023px){.is-block-touch{display:block !important}}@media screen and (min-width: 1024px){.is-block-desktop{display:block !important}}@media screen and (min-width: 1024px) and (max-width: 1215px){.is-block-desktop-only{display:block !important}}@media screen and (min-width: 1216px){.is-block-widescreen{display:block !important}}@media screen and (min-width: 1216px) and (max-width: 1407px){.is-block-widescreen-only{display:block !important}}@media screen and (min-width: 1408px){.is-block-fullhd{display:block !important}}.is-flex{display:flex !important}@media screen and (max-width: 768px){.is-flex-mobile{display:flex !important}}@media screen and (min-width: 769px),print{.is-flex-tablet{display:flex !important}}@media screen and (min-width: 769px) and (max-width: 1023px){.is-flex-tablet-only{display:flex !important}}@media screen and (max-width: 1023px){.is-flex-touch{display:flex !important}}@media screen and (min-width: 1024px){.is-flex-desktop{display:flex !important}}@media screen and (min-width: 1024px) and (max-width: 1215px){.is-flex-desktop-only{display:flex !important}}@media screen and (min-width: 1216px){.is-flex-widescreen{display:flex !important}}@media screen and (min-width: 1216px) and (max-width: 1407px){.is-flex-widescreen-only{display:flex !important}}@media screen and (min-width: 1408px){.is-flex-fullhd{display:flex !important}}.is-inline{display:inline !important}@media screen and (max-width: 768px){.is-inline-mobile{display:inline !important}}@media screen and (min-width: 769px),print{.is-inline-tablet{display:inline !important}}@media screen and (min-width: 769px) and (max-width: 1023px){.is-inline-tablet-only{display:inline !important}}@media screen and (max-width: 1023px){.is-inline-touch{display:inline !important}}@media screen and (min-width: 1024px){.is-inline-desktop{display:inline !important}}@media screen and (min-width: 1024px) and (max-width: 1215px){.is-inline-desktop-only{display:inline !important}}@media screen and (min-width: 1216px){.is-inline-widescreen{display:inline !important}}@media screen and (min-width: 1216px) and (max-width: 1407px){.is-inline-widescreen-only{display:inline !important}}@media screen and (min-width: 1408px){.is-inline-fullhd{display:inline !important}}.is-inline-block{display:inline-block !important}@media screen and (max-width: 768px){.is-inline-block-mobile{display:inline-block !important}}@media screen and (min-width: 769px),print{.is-inline-block-tablet{display:inline-block !important}}@media screen and (min-width: 769px) and (max-width: 1023px){.is-inline-block-tablet-only{display:inline-block !important}}@media screen and (max-width: 1023px){.is-inline-block-touch{display:inline-block !important}}@media screen and (min-width: 1024px){.is-inline-block-desktop{display:inline-block !important}}@media screen and (min-width: 1024px) and (max-width: 1215px){.is-inline-block-desktop-only{display:inline-block !important}}@media screen and (min-width: 1216px){.is-inline-block-widescreen{display:inline-block !important}}@media screen and (min-width: 1216px) and (max-width: 1407px){.is-inline-block-widescreen-only{display:inline-block !important}}@media screen and (min-width: 1408px){.is-inline-block-fullhd{display:inline-block !important}}.is-inline-flex{display:inline-flex !important}@media screen and (max-width: 768px){.is-inline-flex-mobile{display:inline-flex !important}}@media screen and (min-width: 769px),print{.is-inline-flex-tablet{display:inline-flex !important}}@media screen and (min-width: 769px) and (max-width: 1023px){.is-inline-flex-tablet-only{display:inline-flex !important}}@media screen and (max-width: 1023px){.is-inline-flex-touch{display:inline-flex !important}}@media screen and (min-width: 1024px){.is-inline-flex-desktop{display:inline-flex !important}}@media screen and (min-width: 1024px) and (max-width: 1215px){.is-inline-flex-desktop-only{display:inline-flex !important}}@media screen and (min-width: 1216px){.is-inline-flex-widescreen{display:inline-flex !important}}@media screen and (min-width: 1216px) and (max-width: 1407px){.is-inline-flex-widescreen-only{display:inline-flex !important}}@media screen and (min-width: 1408px){.is-inline-flex-fullhd{display:inline-flex !important}}.is-hidden{display:none !important}.is-sr-only{border:none !important;clip:rect(0, 0, 0, 0) !important;height:0.01em !important;overflow:hidden !important;padding:0 !important;position:absolute !important;white-space:nowrap !important;width:0.01em !important}@media screen and (max-width: 768px){.is-hidden-mobile{display:none !important}}@media screen and (min-width: 769px),print{.is-hidden-tablet{display:none !important}}@media screen and (min-width: 769px) and (max-width: 1023px){.is-hidden-tablet-only{display:none !important}}@media screen and (max-width: 1023px){.is-hidden-touch{display:none !important}}@media screen and (min-width: 1024px){.is-hidden-desktop{display:none !important}}@media screen and (min-width: 1024px) and (max-width: 1215px){.is-hidden-desktop-only{display:none !important}}@media screen and (min-width: 1216px){.is-hidden-widescreen{display:none !important}}@media screen and (min-width: 1216px) and (max-width: 1407px){.is-hidden-widescreen-only{display:none !important}}@media screen and (min-width: 1408px){.is-hidden-fullhd{display:none !important}}.is-invisible{visibility:hidden !important}@media screen and (max-width: 768px){.is-invisible-mobile{visibility:hidden !important}}@media screen and (min-width: 769px),print{.is-invisible-tablet{visibility:hidden !important}}@media screen and (min-width: 769px) and (max-width: 1023px){.is-invisible-tablet-only{visibility:hidden !important}}@media screen and (max-width: 1023px){.is-invisible-touch{visibility:hidden !important}}@media screen and (min-width: 1024px){.is-invisible-desktop{visibility:hidden !important}}@media screen and (min-width: 1024px) and (max-width: 1215px){.is-invisible-desktop-only{visibility:hidden !important}}@media screen and (min-width: 1216px){.is-invisible-widescreen{visibility:hidden !important}}@media screen and (min-width: 1216px) and (max-width: 1407px){.is-invisible-widescreen-only{visibility:hidden !important}}@media screen and (min-width: 1408px){.is-invisible-fullhd{visibility:hidden !important}}.hero{align-items:stretch;display:flex;flex-direction:column;justify-content:space-between}.hero .navbar{background:none}.hero .tabs ul{border-bottom:none}.hero.is-white{background-color:#fff;color:#0a0a0a}.hero.is-white a:not(.button):not(.dropdown-item):not(.tag):not(.pagination-link.is-current),.hero.is-white strong{color:inherit}.hero.is-white .title{color:#0a0a0a}.hero.is-white .subtitle{color:rgba(10,10,10,0.9)}.hero.is-white .subtitle a:not(.button),.hero.is-white .subtitle strong{color:#0a0a0a}@media screen and (max-width: 1023px){.hero.is-white .navbar-menu{background-color:#fff}}.hero.is-white .navbar-item,.hero.is-white .navbar-link{color:rgba(10,10,10,0.7)}.hero.is-white a.navbar-item:hover,.hero.is-white a.navbar-item.is-active,.hero.is-white .navbar-link:hover,.hero.is-white .navbar-link.is-active{background-color:#f2f2f2;color:#0a0a0a}.hero.is-white .tabs a{color:#0a0a0a;opacity:0.9}.hero.is-white .tabs a:hover{opacity:1}.hero.is-white .tabs li.is-active a{color:#fff !important;opacity:1}.hero.is-white .tabs.is-boxed a,.hero.is-white .tabs.is-toggle a{color:#0a0a0a}.hero.is-white .tabs.is-boxed a:hover,.hero.is-white .tabs.is-toggle a:hover{background-color:rgba(10,10,10,0.1)}.hero.is-white .tabs.is-boxed li.is-active a,.hero.is-white .tabs.is-boxed li.is-active a:hover,.hero.is-white .tabs.is-toggle li.is-active a,.hero.is-white .tabs.is-toggle li.is-active a:hover{background-color:#0a0a0a;border-color:#0a0a0a;color:#fff}.hero.is-white.is-bold{background-image:linear-gradient(141deg, #e8e3e4 0%, #fff 71%, #fff 100%)}@media screen and (max-width: 768px){.hero.is-white.is-bold .navbar-menu{background-image:linear-gradient(141deg, #e8e3e4 0%, #fff 71%, #fff 100%)}}.hero.is-black{background-color:#0a0a0a;color:#fff}.hero.is-black a:not(.button):not(.dropdown-item):not(.tag):not(.pagination-link.is-current),.hero.is-black strong{color:inherit}.hero.is-black .title{color:#fff}.hero.is-black .subtitle{color:rgba(255,255,255,0.9)}.hero.is-black .subtitle a:not(.button),.hero.is-black .subtitle strong{color:#fff}@media screen and (max-width: 1023px){.hero.is-black .navbar-menu{background-color:#0a0a0a}}.hero.is-black .navbar-item,.hero.is-black .navbar-link{color:rgba(255,255,255,0.7)}.hero.is-black a.navbar-item:hover,.hero.is-black a.navbar-item.is-active,.hero.is-black .navbar-link:hover,.hero.is-black .navbar-link.is-active{background-color:#000;color:#fff}.hero.is-black .tabs a{color:#fff;opacity:0.9}.hero.is-black .tabs a:hover{opacity:1}.hero.is-black .tabs li.is-active a{color:#0a0a0a !important;opacity:1}.hero.is-black .tabs.is-boxed a,.hero.is-black .tabs.is-toggle a{color:#fff}.hero.is-black .tabs.is-boxed a:hover,.hero.is-black .tabs.is-toggle a:hover{background-color:rgba(10,10,10,0.1)}.hero.is-black .tabs.is-boxed li.is-active a,.hero.is-black .tabs.is-boxed li.is-active a:hover,.hero.is-black .tabs.is-toggle li.is-active a,.hero.is-black .tabs.is-toggle li.is-active a:hover{background-color:#fff;border-color:#fff;color:#0a0a0a}.hero.is-black.is-bold{background-image:linear-gradient(141deg, #000 0%, #0a0a0a 71%, #181616 100%)}@media screen and (max-width: 768px){.hero.is-black.is-bold .navbar-menu{background-image:linear-gradient(141deg, #000 0%, #0a0a0a 71%, #181616 100%)}}.hero.is-light{background-color:#f5f5f5;color:rgba(0,0,0,0.7)}.hero.is-light a:not(.button):not(.dropdown-item):not(.tag):not(.pagination-link.is-current),.hero.is-light strong{color:inherit}.hero.is-light .title{color:rgba(0,0,0,0.7)}.hero.is-light .subtitle{color:rgba(0,0,0,0.9)}.hero.is-light .subtitle a:not(.button),.hero.is-light .subtitle strong{color:rgba(0,0,0,0.7)}@media screen and (max-width: 1023px){.hero.is-light .navbar-menu{background-color:#f5f5f5}}.hero.is-light .navbar-item,.hero.is-light .navbar-link{color:rgba(0,0,0,0.7)}.hero.is-light a.navbar-item:hover,.hero.is-light a.navbar-item.is-active,.hero.is-light .navbar-link:hover,.hero.is-light .navbar-link.is-active{background-color:#e8e8e8;color:rgba(0,0,0,0.7)}.hero.is-light .tabs a{color:rgba(0,0,0,0.7);opacity:0.9}.hero.is-light .tabs a:hover{opacity:1}.hero.is-light .tabs li.is-active a{color:#f5f5f5 !important;opacity:1}.hero.is-light .tabs.is-boxed a,.hero.is-light .tabs.is-toggle a{color:rgba(0,0,0,0.7)}.hero.is-light .tabs.is-boxed a:hover,.hero.is-light .tabs.is-toggle a:hover{background-color:rgba(10,10,10,0.1)}.hero.is-light .tabs.is-boxed li.is-active a,.hero.is-light .tabs.is-boxed li.is-active a:hover,.hero.is-light .tabs.is-toggle li.is-active a,.hero.is-light .tabs.is-toggle li.is-active a:hover{background-color:rgba(0,0,0,0.7);border-color:rgba(0,0,0,0.7);color:#f5f5f5}.hero.is-light.is-bold{background-image:linear-gradient(141deg, #dfd8d9 0%, #f5f5f5 71%, #fff 100%)}@media screen and (max-width: 768px){.hero.is-light.is-bold .navbar-menu{background-image:linear-gradient(141deg, #dfd8d9 0%, #f5f5f5 71%, #fff 100%)}}.hero.is-dark{background-color:#363636;color:#fff}.hero.is-dark a:not(.button):not(.dropdown-item):not(.tag):not(.pagination-link.is-current),.hero.is-dark strong{color:inherit}.hero.is-dark .title{color:#fff}.hero.is-dark .subtitle{color:rgba(255,255,255,0.9)}.hero.is-dark .subtitle a:not(.button),.hero.is-dark .subtitle strong{color:#fff}@media screen and (max-width: 1023px){.hero.is-dark .navbar-menu{background-color:#363636}}.hero.is-dark .navbar-item,.hero.is-dark .navbar-link{color:rgba(255,255,255,0.7)}.hero.is-dark a.navbar-item:hover,.hero.is-dark a.navbar-item.is-active,.hero.is-dark .navbar-link:hover,.hero.is-dark .navbar-link.is-active{background-color:#292929;color:#fff}.hero.is-dark .tabs a{color:#fff;opacity:0.9}.hero.is-dark .tabs a:hover{opacity:1}.hero.is-dark .tabs li.is-active a{color:#363636 !important;opacity:1}.hero.is-dark .tabs.is-boxed a,.hero.is-dark .tabs.is-toggle a{color:#fff}.hero.is-dark .tabs.is-boxed a:hover,.hero.is-dark .tabs.is-toggle a:hover{background-color:rgba(10,10,10,0.1)}.hero.is-dark .tabs.is-boxed li.is-active a,.hero.is-dark .tabs.is-boxed li.is-active a:hover,.hero.is-dark .tabs.is-toggle li.is-active a,.hero.is-dark .tabs.is-toggle li.is-active a:hover{background-color:#fff;border-color:#fff;color:#363636}.hero.is-dark.is-bold{background-image:linear-gradient(141deg, #1f191a 0%, #363636 71%, #46403f 100%)}@media screen and (max-width: 768px){.hero.is-dark.is-bold .navbar-menu{background-image:linear-gradient(141deg, #1f191a 0%, #363636 71%, #46403f 100%)}}.hero.is-primary{background-color:#00d1b2;color:#fff}.hero.is-primary a:not(.button):not(.dropdown-item):not(.tag):not(.pagination-link.is-current),.hero.is-primary strong{color:inherit}.hero.is-primary .title{color:#fff}.hero.is-primary .subtitle{color:rgba(255,255,255,0.9)}.hero.is-primary .subtitle a:not(.button),.hero.is-primary .subtitle strong{color:#fff}@media screen and (max-width: 1023px){.hero.is-primary .navbar-menu{background-color:#00d1b2}}.hero.is-primary .navbar-item,.hero.is-primary .navbar-link{color:rgba(255,255,255,0.7)}.hero.is-primary a.navbar-item:hover,.hero.is-primary a.navbar-item.is-active,.hero.is-primary .navbar-link:hover,.hero.is-primary .navbar-link.is-active{background-color:#00b89c;color:#fff}.hero.is-primary .tabs a{color:#fff;opacity:0.9}.hero.is-primary .tabs a:hover{opacity:1}.hero.is-primary .tabs li.is-active a{color:#00d1b2 !important;opacity:1}.hero.is-primary .tabs.is-boxed a,.hero.is-primary .tabs.is-toggle a{color:#fff}.hero.is-primary .tabs.is-boxed a:hover,.hero.is-primary .tabs.is-toggle a:hover{background-color:rgba(10,10,10,0.1)}.hero.is-primary .tabs.is-boxed li.is-active a,.hero.is-primary .tabs.is-boxed li.is-active a:hover,.hero.is-primary .tabs.is-toggle li.is-active a,.hero.is-primary .tabs.is-toggle li.is-active a:hover{background-color:#fff;border-color:#fff;color:#00d1b2}.hero.is-primary.is-bold{background-image:linear-gradient(141deg, #009e6c 0%, #00d1b2 71%, #00e7eb 100%)}@media screen and (max-width: 768px){.hero.is-primary.is-bold .navbar-menu{background-image:linear-gradient(141deg, #009e6c 0%, #00d1b2 71%, #00e7eb 100%)}}.hero.is-link{background-color:#485fc7;color:#fff}.hero.is-link a:not(.button):not(.dropdown-item):not(.tag):not(.pagination-link.is-current),.hero.is-link strong{color:inherit}.hero.is-link .title{color:#fff}.hero.is-link .subtitle{color:rgba(255,255,255,0.9)}.hero.is-link .subtitle a:not(.button),.hero.is-link .subtitle strong{color:#fff}@media screen and (max-width: 1023px){.hero.is-link .navbar-menu{background-color:#485fc7}}.hero.is-link .navbar-item,.hero.is-link .navbar-link{color:rgba(255,255,255,0.7)}.hero.is-link a.navbar-item:hover,.hero.is-link a.navbar-item.is-active,.hero.is-link .navbar-link:hover,.hero.is-link .navbar-link.is-active{background-color:#3a51bb;color:#fff}.hero.is-link .tabs a{color:#fff;opacity:0.9}.hero.is-link .tabs a:hover{opacity:1}.hero.is-link .tabs li.is-active a{color:#485fc7 !important;opacity:1}.hero.is-link .tabs.is-boxed a,.hero.is-link .tabs.is-toggle a{color:#fff}.hero.is-link .tabs.is-boxed a:hover,.hero.is-link .tabs.is-toggle a:hover{background-color:rgba(10,10,10,0.1)}.hero.is-link .tabs.is-boxed li.is-active a,.hero.is-link .tabs.is-boxed li.is-active a:hover,.hero.is-link .tabs.is-toggle li.is-active a,.hero.is-link .tabs.is-toggle li.is-active a:hover{background-color:#fff;border-color:#fff;color:#485fc7}.hero.is-link.is-bold{background-image:linear-gradient(141deg, #2959b3 0%, #485fc7 71%, #5658d2 100%)}@media screen and (max-width: 768px){.hero.is-link.is-bold .navbar-menu{background-image:linear-gradient(141deg, #2959b3 0%, #485fc7 71%, #5658d2 100%)}}.hero.is-info{background-color:#3e8ed0;color:#fff}.hero.is-info a:not(.button):not(.dropdown-item):not(.tag):not(.pagination-link.is-current),.hero.is-info strong{color:inherit}.hero.is-info .title{color:#fff}.hero.is-info .subtitle{color:rgba(255,255,255,0.9)}.hero.is-info .subtitle a:not(.button),.hero.is-info .subtitle strong{color:#fff}@media screen and (max-width: 1023px){.hero.is-info .navbar-menu{background-color:#3e8ed0}}.hero.is-info .navbar-item,.hero.is-info .navbar-link{color:rgba(255,255,255,0.7)}.hero.is-info a.navbar-item:hover,.hero.is-info a.navbar-item.is-active,.hero.is-info .navbar-link:hover,.hero.is-info .navbar-link.is-active{background-color:#3082c5;color:#fff}.hero.is-info .tabs a{color:#fff;opacity:0.9}.hero.is-info .tabs a:hover{opacity:1}.hero.is-info .tabs li.is-active a{color:#3e8ed0 !important;opacity:1}.hero.is-info .tabs.is-boxed a,.hero.is-info .tabs.is-toggle a{color:#fff}.hero.is-info .tabs.is-boxed a:hover,.hero.is-info .tabs.is-toggle a:hover{background-color:rgba(10,10,10,0.1)}.hero.is-info .tabs.is-boxed li.is-active a,.hero.is-info .tabs.is-boxed li.is-active a:hover,.hero.is-info .tabs.is-toggle li.is-active a,.hero.is-info .tabs.is-toggle li.is-active a:hover{background-color:#fff;border-color:#fff;color:#3e8ed0}.hero.is-info.is-bold{background-image:linear-gradient(141deg, #208fbc 0%, #3e8ed0 71%, #4d83db 100%)}@media screen and (max-width: 768px){.hero.is-info.is-bold .navbar-menu{background-image:linear-gradient(141deg, #208fbc 0%, #3e8ed0 71%, #4d83db 100%)}}.hero.is-success{background-color:#48c78e;color:#fff}.hero.is-success a:not(.button):not(.dropdown-item):not(.tag):not(.pagination-link.is-current),.hero.is-success strong{color:inherit}.hero.is-success .title{color:#fff}.hero.is-success .subtitle{color:rgba(255,255,255,0.9)}.hero.is-success .subtitle a:not(.button),.hero.is-success .subtitle strong{color:#fff}@media screen and (max-width: 1023px){.hero.is-success .navbar-menu{background-color:#48c78e}}.hero.is-success .navbar-item,.hero.is-success .navbar-link{color:rgba(255,255,255,0.7)}.hero.is-success a.navbar-item:hover,.hero.is-success a.navbar-item.is-active,.hero.is-success .navbar-link:hover,.hero.is-success .navbar-link.is-active{background-color:#3abb81;color:#fff}.hero.is-success .tabs a{color:#fff;opacity:0.9}.hero.is-success .tabs a:hover{opacity:1}.hero.is-success .tabs li.is-active a{color:#48c78e !important;opacity:1}.hero.is-success .tabs.is-boxed a,.hero.is-success .tabs.is-toggle a{color:#fff}.hero.is-success .tabs.is-boxed a:hover,.hero.is-success .tabs.is-toggle a:hover{background-color:rgba(10,10,10,0.1)}.hero.is-success .tabs.is-boxed li.is-active a,.hero.is-success .tabs.is-boxed li.is-active a:hover,.hero.is-success .tabs.is-toggle li.is-active a,.hero.is-success .tabs.is-toggle li.is-active a:hover{background-color:#fff;border-color:#fff;color:#48c78e}.hero.is-success.is-bold{background-image:linear-gradient(141deg, #29b35e 0%, #48c78e 71%, #56d2af 100%)}@media screen and (max-width: 768px){.hero.is-success.is-bold .navbar-menu{background-image:linear-gradient(141deg, #29b35e 0%, #48c78e 71%, #56d2af 100%)}}.hero.is-warning{background-color:#ffe08a;color:rgba(0,0,0,0.7)}.hero.is-warning a:not(.button):not(.dropdown-item):not(.tag):not(.pagination-link.is-current),.hero.is-warning strong{color:inherit}.hero.is-warning .title{color:rgba(0,0,0,0.7)}.hero.is-warning .subtitle{color:rgba(0,0,0,0.9)}.hero.is-warning .subtitle a:not(.button),.hero.is-warning .subtitle strong{color:rgba(0,0,0,0.7)}@media screen and (max-width: 1023px){.hero.is-warning .navbar-menu{background-color:#ffe08a}}.hero.is-warning .navbar-item,.hero.is-warning .navbar-link{color:rgba(0,0,0,0.7)}.hero.is-warning a.navbar-item:hover,.hero.is-warning a.navbar-item.is-active,.hero.is-warning .navbar-link:hover,.hero.is-warning .navbar-link.is-active{background-color:#ffd970;color:rgba(0,0,0,0.7)}.hero.is-warning .tabs a{color:rgba(0,0,0,0.7);opacity:0.9}.hero.is-warning .tabs a:hover{opacity:1}.hero.is-warning .tabs li.is-active a{color:#ffe08a !important;opacity:1}.hero.is-warning .tabs.is-boxed a,.hero.is-warning .tabs.is-toggle a{color:rgba(0,0,0,0.7)}.hero.is-warning .tabs.is-boxed a:hover,.hero.is-warning .tabs.is-toggle a:hover{background-color:rgba(10,10,10,0.1)}.hero.is-warning .tabs.is-boxed li.is-active a,.hero.is-warning .tabs.is-boxed li.is-active a:hover,.hero.is-warning .tabs.is-toggle li.is-active a,.hero.is-warning .tabs.is-toggle li.is-active a:hover{background-color:rgba(0,0,0,0.7);border-color:rgba(0,0,0,0.7);color:#ffe08a}.hero.is-warning.is-bold{background-image:linear-gradient(141deg, #ffb657 0%, #ffe08a 71%, #fff6a3 100%)}@media screen and (max-width: 768px){.hero.is-warning.is-bold .navbar-menu{background-image:linear-gradient(141deg, #ffb657 0%, #ffe08a 71%, #fff6a3 100%)}}.hero.is-danger{background-color:#f14668;color:#fff}.hero.is-danger a:not(.button):not(.dropdown-item):not(.tag):not(.pagination-link.is-current),.hero.is-danger strong{color:inherit}.hero.is-danger .title{color:#fff}.hero.is-danger .subtitle{color:rgba(255,255,255,0.9)}.hero.is-danger .subtitle a:not(.button),.hero.is-danger .subtitle strong{color:#fff}@media screen and (max-width: 1023px){.hero.is-danger .navbar-menu{background-color:#f14668}}.hero.is-danger .navbar-item,.hero.is-danger .navbar-link{color:rgba(255,255,255,0.7)}.hero.is-danger a.navbar-item:hover,.hero.is-danger a.navbar-item.is-active,.hero.is-danger .navbar-link:hover,.hero.is-danger .navbar-link.is-active{background-color:#ef2e55;color:#fff}.hero.is-danger .tabs a{color:#fff;opacity:0.9}.hero.is-danger .tabs a:hover{opacity:1}.hero.is-danger .tabs li.is-active a{color:#f14668 !important;opacity:1}.hero.is-danger .tabs.is-boxed a,.hero.is-danger .tabs.is-toggle a{color:#fff}.hero.is-danger .tabs.is-boxed a:hover,.hero.is-danger .tabs.is-toggle a:hover{background-color:rgba(10,10,10,0.1)}.hero.is-danger .tabs.is-boxed li.is-active a,.hero.is-danger .tabs.is-boxed li.is-active a:hover,.hero.is-danger .tabs.is-toggle li.is-active a,.hero.is-danger .tabs.is-toggle li.is-active a:hover{background-color:#fff;border-color:#fff;color:#f14668}.hero.is-danger.is-bold{background-image:linear-gradient(141deg, #fa0a62 0%, #f14668 71%, #f7595f 100%)}@media screen and (max-width: 768px){.hero.is-danger.is-bold .navbar-menu{background-image:linear-gradient(141deg, #fa0a62 0%, #f14668 71%, #f7595f 100%)}}.hero.is-small .hero-body{padding:1.5rem}@media screen and (min-width: 769px),print{.hero.is-medium .hero-body{padding:9rem 4.5rem}}@media screen and (min-width: 769px),print{.hero.is-large .hero-body{padding:18rem 6rem}}.hero.is-halfheight .hero-body,.hero.is-fullheight .hero-body,.hero.is-fullheight-with-navbar .hero-body{align-items:center;display:flex}.hero.is-halfheight .hero-body>.container,.hero.is-fullheight .hero-body>.container,.hero.is-fullheight-with-navbar .hero-body>.container{flex-grow:1;flex-shrink:1}.hero.is-halfheight{min-height:50vh}.hero.is-fullheight{min-height:100vh}.hero-video{overflow:hidden}.hero-video video{left:50%;min-height:100%;min-width:100%;position:absolute;top:50%;transform:translate3d(-50%, -50%, 0)}.hero-video.is-transparent{opacity:0.3}@media screen and (max-width: 768px){.hero-video{display:none}}.hero-buttons{margin-top:1.5rem}@media screen and (max-width: 768px){.hero-buttons .button{display:flex}.hero-buttons .button:not(:last-child){margin-bottom:0.75rem}}@media screen and (min-width: 769px),print{.hero-buttons{display:flex;justify-content:center}.hero-buttons .button:not(:last-child){margin-right:1.5rem}}.hero-head,.hero-foot{flex-grow:0;flex-shrink:0}.hero-body{flex-grow:1;flex-shrink:0;padding:3rem 1.5rem}@media screen and (min-width: 769px),print{.hero-body{padding:3rem 3rem}}.section{padding:3rem 1.5rem}@media screen and (min-width: 1024px){.section{padding:3rem 3rem}.section.is-medium{padding:9rem 4.5rem}.section.is-large{padding:18rem 6rem}}.footer{background-color:#fafafa;padding:3rem 1.5rem 6rem} + +/*# sourceMappingURL=bulma.sass */ \ No newline at end of file diff --git a/src/frontend/static/styles/bulma.sass b/src/frontend/static/styles/bulma.sass new file mode 100644 index 0000000..d12d367 --- /dev/null +++ b/src/frontend/static/styles/bulma.sass @@ -0,0 +1,70 @@ +{ + "version": 3, + "file": "bulma.css", + "sources": [ + "bulma.sass", + "../../node_modules/bulma/sass/utilities/_all.sass", + "../../node_modules/bulma/sass/utilities/initial-variables.sass", + "../../node_modules/bulma/sass/utilities/functions.sass", + "../../node_modules/bulma/sass/utilities/derived-variables.sass", + "../../node_modules/bulma/sass/utilities/mixins.sass", + "../../node_modules/bulma/sass/utilities/controls.sass", + "../../node_modules/bulma/sass/utilities/extends.sass", + "../../node_modules/bulma/sass/base/_all.sass", + "../../node_modules/bulma/sass/base/minireset.sass", + "../../node_modules/bulma/sass/base/generic.sass", + "../../node_modules/bulma/sass/base/animations.sass", + "../../node_modules/bulma/sass/elements/_all.sass", + "../../node_modules/bulma/sass/elements/box.sass", + "../../node_modules/bulma/sass/elements/button.sass", + "../../node_modules/bulma/sass/elements/container.sass", + "../../node_modules/bulma/sass/elements/content.sass", + "../../node_modules/bulma/sass/elements/icon.sass", + "../../node_modules/bulma/sass/elements/image.sass", + "../../node_modules/bulma/sass/elements/notification.sass", + "../../node_modules/bulma/sass/elements/progress.sass", + "../../node_modules/bulma/sass/elements/table.sass", + "../../node_modules/bulma/sass/elements/tag.sass", + "../../node_modules/bulma/sass/elements/title.sass", + "../../node_modules/bulma/sass/elements/other.sass", + "../../node_modules/bulma/sass/form/_all.sass", + "../../node_modules/bulma/sass/form/shared.sass", + "../../node_modules/bulma/sass/form/input-textarea.sass", + "../../node_modules/bulma/sass/form/checkbox-radio.sass", + "../../node_modules/bulma/sass/form/select.sass", + "../../node_modules/bulma/sass/form/file.sass", + "../../node_modules/bulma/sass/form/tools.sass", + "../../node_modules/bulma/sass/components/_all.sass", + "../../node_modules/bulma/sass/components/breadcrumb.sass", + "../../node_modules/bulma/sass/components/card.sass", + "../../node_modules/bulma/sass/components/dropdown.sass", + "../../node_modules/bulma/sass/components/level.sass", + "../../node_modules/bulma/sass/components/media.sass", + "../../node_modules/bulma/sass/components/menu.sass", + "../../node_modules/bulma/sass/components/message.sass", + "../../node_modules/bulma/sass/components/modal.sass", + "../../node_modules/bulma/sass/components/navbar.sass", + "../../node_modules/bulma/sass/components/pagination.sass", + "../../node_modules/bulma/sass/components/panel.sass", + "../../node_modules/bulma/sass/components/tabs.sass", + "../../node_modules/bulma/sass/grid/_all.sass", + "../../node_modules/bulma/sass/grid/columns.sass", + "../../node_modules/bulma/sass/grid/tiles.sass", + "../../node_modules/bulma/sass/helpers/_all.sass", + "../../node_modules/bulma/sass/helpers/color.sass", + "../../node_modules/bulma/sass/helpers/flexbox.sass", + "../../node_modules/bulma/sass/helpers/float.sass", + "../../node_modules/bulma/sass/helpers/other.sass", + "../../node_modules/bulma/sass/helpers/overflow.sass", + "../../node_modules/bulma/sass/helpers/position.sass", + "../../node_modules/bulma/sass/helpers/spacing.sass", + "../../node_modules/bulma/sass/helpers/typography.sass", + "../../node_modules/bulma/sass/helpers/visibility.sass", + "../../node_modules/bulma/sass/layout/_all.sass", + "../../node_modules/bulma/sass/layout/hero.sass", + "../../node_modules/bulma/sass/layout/section.sass", + "../../node_modules/bulma/sass/layout/footer.sass" + ], + "names": [], + "mappings": "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" +} diff --git a/src/frontend/static/styles/pyShelf.sass b/src/frontend/static/styles/pyShelf.sass new file mode 100644 index 0000000..6bedf90 --- /dev/null +++ b/src/frontend/static/styles/pyShelf.sass @@ -0,0 +1,167 @@ +$ps-color-primary: #89939E +$ps-color-primary-trans: rgba(43, 50, 60, 0.64) !important +$ps-color-secondary: #DEDEDE +$ps-color-accent: $ps-color-secondary +$ps-color-background: #000000 +$black: #000000 +$white: #ffffff +//$black: $ps-color-background +//$white: $ps-color-primary +//$link: $ps-color-secondary +//$primary: $ps-color-primary +//$link: $ps-color-secondary +$scheme-main: $black +$scheme-invert: $white +// $body-background-color: $black-ter +// Override Main Body Presets +// $body-background-color: $ps-color-background +// $text: $ps-color-primary + +// Override Navbar Presets +$navbar-background-color: $ps-color-primary-trans +$navbar-item-color: $white +//$navbar-item-hover-color: $ps-color-background !important +$navbar-item-hover-background-color: $ps-color-secondary +$navbar-dropdown-background-color: $ps-color-primary-trans +$navbar-dropdown-item-hover-color: $ps-color-background !important +$footer-background-color: $ps-color-primary-trans !important +// $footer-padding: 0.5rem 0.5rem + +.center-all + align-items: center; + justify-content: center; + +.bg-image + background-image: url(../images/blue-background.jpg); + background-position: center center; + background-repeat: no-repeat; + background-attachment: fixed; + background-size: cover; + +#master-container + min-height: 100vh; + display: flex; + flex-direction: column; + justify-content: space-between; + +#book-shelf + display: grid; + grid-template-columns: repeat(auto-fit, minmax(200px, 1fr)) // <== add this + gap: 1rem // space between rows and columns + justify-content: space-evenly; + // align-items: center; + align-content: center; + padding: 1rem; + margin: 1rem; + // background-color: $ps-color-background; + +.is-rounded-left + border-top-left-radius: 20px !important; + border-bottom-left-radius: 20px !important; + +.is-rounded-right + border-top-right-radius: 20px !important; + border-bottom-right-radius: 20px !important; + +.book-thumbnail + z-index: 1; + position: relative; + +.no-image-title + position: absolute; + top: 50%; + left: 50%; + transform: translate(-50%, -50%); + color: $white; + font-size: 1.2rem; + text-align: center; + background-color: rgba(0,0,0,0.7); + padding: 0.5rem; + border-radius: 5px; + +.no-image-author + position: absolute; + top: 60%; + left: 50%; + transform: translate(-50%, -50%); + color: $white; + font-size: 1rem; + text-align: center; + background-color: rgba(0,0,0,0.7); + padding: 0.5rem; + border-radius: 5px; + +.display-alt::after + content: attr(alt); + display: block !important; + position: absolute; + bottom: 0; + left: 0; + right: 0; + background: rgba(0,0,0,0.7); + color: white; + font-size: 0.8rem; + padding: 0.2rem; + +.title, .subtitle + z-index: 2; + position: relative; + top: -155px; + +.collection + display: flex; + flex-direction: column; + justify-content: space-evenly; + align-items: center; + align-content: center; + background-color: $ps-color-background; + +#collection_dropdown + margin-top: auto; + margin-bottom: auto; + +.search_form + margin-top: auto !important; + margin-bottom: auto !important; + +.footer + display: flex; + padding: 1rem !important; + + +#pagination-container + display: flex; + flex-direction: row; + align-items: center; + justify-content: space-between; + width: 100%; + padding: 0.5rem; + +#pagination-left, #pagination-right + background-color: $ps-color-secondary; + +#pagination-left + display: flex; + justify-content: flex-start; + +#pagination-center + display: flex; + justify-content: center; + flex: 1; + +#pagination-right + display: flex; + justify-content: flex-end; + +// @import "../../node_modules/bulma/bulma.scss" +@import "/etc/pyShelf/src/frontend/node_modules/bulma/bulma.scss" + +.container-full + width: 100%; + height: 100%; + display: flex; + flex-direction: column; + justify-content: center; + align-items: center; + +// @use "bulma/bulma.sass"; diff --git a/src/frontend/templates/collection.html b/src/frontend/templates/collection.html new file mode 100644 index 0000000..05eb68e --- /dev/null +++ b/src/frontend/templates/collection.html @@ -0,0 +1,57 @@ + +{% block javascript %} + + {% endblock %} + {% include 'header.html' %} + {% include 'navigation.html' %} +
+ +
+ {% for book in books %} + {% set cover = book.cover|b64decode %} + {% if cover != 'None' %} +
+
+
+ {{ book.title }} +
+
+
+ {% else %} +
+
+
+
{{ book.title }}
+ +
+
+ +
+ {% endif %} + {% endfor %} +
+
+ +
+ page {{ page }} of {{ total_pages }} +
+
+ Next > +
+
+
+ {% include 'footer.html' %} diff --git a/src/frontend/templates/example.tpl b/src/frontend/templates/example.tpl new file mode 100644 index 0000000..0f060d5 --- /dev/null +++ b/src/frontend/templates/example.tpl @@ -0,0 +1,7 @@ + +{% include 'header.html' %} + {% include 'navigation.html' %} +
+ {{ package.test }} +
+{% include 'footer.html' %} diff --git a/src/frontend/templates/footer.html b/src/frontend/templates/footer.html new file mode 100644 index 0000000..008368c --- /dev/null +++ b/src/frontend/templates/footer.html @@ -0,0 +1,18 @@ + + + + + + + + + + + + + + + + + + diff --git a/src/frontend/templates/header.html b/src/frontend/templates/header.html new file mode 100644 index 0000000..7f1304f --- /dev/null +++ b/src/frontend/templates/header.html @@ -0,0 +1,11 @@ + + + + pyShelf Content Server + + + + + + + diff --git a/src/frontend/templates/index.html b/src/frontend/templates/index.html new file mode 100644 index 0000000..cb4446b --- /dev/null +++ b/src/frontend/templates/index.html @@ -0,0 +1,56 @@ + +{% block javascript %} + + {% endblock %} + {% include 'header.html' %} + {% include 'navigation.html' %} +
+
+ {% for book in books %} + {% set cover = book.cover|b64decode %} + {% if cover != 'None' %} +
+
+
+ {{ book.title }} +
+
+
+ {% else %} +
+
+
+
{{ book.title }}
+ +
+
+ +
+ {% endif %} + {% endfor %} +
+
+ +
+ page {{ page }} of {{ total_pages }} +
+
+ Next > +
+
+
+ {% include 'footer.html' %} diff --git a/src/frontend/__init__.py b/src/frontend/templates/item-card.html old mode 100755 new mode 100644 similarity index 100% rename from src/frontend/__init__.py rename to src/frontend/templates/item-card.html diff --git a/src/frontend/templates/navigation.html b/src/frontend/templates/navigation.html new file mode 100644 index 0000000..44f04b9 --- /dev/null +++ b/src/frontend/templates/navigation.html @@ -0,0 +1,143 @@ + + + + + diff --git a/src/frontend/templates/search.html b/src/frontend/templates/search.html new file mode 100644 index 0000000..b4b8867 --- /dev/null +++ b/src/frontend/templates/search.html @@ -0,0 +1,45 @@ + +{% block javascript %} + + {% endblock %} + {% include 'header.html' %} + {% include 'navigation.html' %} +
+
+ {% for book in books %} + {% set cover = book.cover|b64decode %} + {% if cover != 'None' %} +
+
+
+ {{ book.title }} +
+
+
+ {% else %} +
+
+
+
{{ book.title }}
+ +
+
+ +
+ {% endif %} + {% endfor %} +
+
+ {% include 'footer.html' %} diff --git a/src/frontend/urls.py b/src/frontend/urls.py deleted file mode 100755 index 54eac9d..0000000 --- a/src/frontend/urls.py +++ /dev/null @@ -1,82 +0,0 @@ -"""frontend URL Configuration - -The `urlpatterns` list routes URLs to views. For more information please see: - https://docs.djangoproject.com/en/2.2/topics/http/urls/ -Examples: -Function views - 1. Add an import: from my_app import views - 2. Add a URL to urlpatterns: path('', views.home, name='home') -Class-based views - 1. Add an import: from other_app.views import Home - 2. Add a URL to urlpatterns: path('', Home.as_view(), name='home') -Including another URLconf - 1. Import the include() function: from django.urls import include, path - 2. Add a URL to urlpatterns: path('blog/', include('blog.urls')) -""" -from django.conf import settings -from django.contrib import admin -from django.contrib.auth import views as auth_views -from django.contrib.auth.models import User -from django.shortcuts import HttpResponse -from django.urls import include, path, re_path -from django.conf.urls.static import static -from asgiref.sync import sync_to_async -from interface import views -from interface.admin import admin_site - -urlpatterns = [ - path("admin/", admin_site.urls), - path("", views.index, name="index"), - path("home", views.home, name="home"), - re_path("^live$", views.live, name="live"), - re_path("^menu$", views.menu, name="menu"), - path("sort/<_order>", views.index, name="index"), - path("flip_sort/<_order>", views.flip_sort, name="index"), - path("download/", views.download, name="download"), - path("share/", views.share, name="share"), - path("share/", views.info, name="info"), - path("prev_page/", views.prev_page, name="prev_page"), - path("next_page/", views.next_page, name="next_page"), - path("prev_page//<_order>", views.prev_page, name="prev_page"), - path("next_page//<_order>", views.next_page, name="next_page"), - path("search/", views.index, name="search"), - path("search/", views.index, name="search"), - path("search//<_set>", views.index, name="search"), - path("collections", views.collectionspage, name="collections"), - path("show_collection//<_set>", views.show_collection, name="show_collection"), - path("signup", views.signup, name="signup"), - path("login", views.userlogin, name="login"), - path('logout', views.userlogout, name='logout'), - path('favorite/', views.favorite, name='favorite'), - path('favorites', views.favorites, name='favorites'), - path('favorites/', views.favorites, name='favorites'), - path('favorites//', views.favorites, name='favorites'), - path( - 'admin/password_reset/', - auth_views.PasswordResetView.as_view(), - name='admin_password_reset', - ), - path( - 'admin/password_reset/done/', - auth_views.PasswordResetDoneView.as_view(), - name='password_reset_done', - ), - path( - 'reset///', - auth_views.PasswordResetConfirmView.as_view(), - name='password_reset_confirm', - ), - path( - 'reset/done/', - auth_views.PasswordResetCompleteView.as_view(), - name='password_reset_complete', - ), -] + static(settings.STATIC_URL, document_root=settings.STATIC_ROOT) -if settings.DEBUG: - import debug_toolbar - - urlpatterns = [ - path("__debug__/", include(debug_toolbar.urls)), - # For django versions before 2.0: - # url(r'^__debug__/', include(debug_toolbar.urls)), - ] + urlpatterns diff --git a/src/frontend/wsgi.py b/src/frontend/wsgi.py deleted file mode 100755 index 2ab6822..0000000 --- a/src/frontend/wsgi.py +++ /dev/null @@ -1,16 +0,0 @@ -""" -WSGI config for frontend project. - -It exposes the WSGI callable as a module-level variable named ``application``. - -For more information on this file, see -https://docs.djangoproject.com/en/2.2/howto/deployment/wsgi/ -""" - -import os - -from django.core.wsgi import get_wsgi_application - -os.environ.setdefault("DJANGO_SETTINGS_MODULE", "frontend.settings") - -application = get_wsgi_application() diff --git a/src/interface/__init__.py b/src/interface/__init__.py deleted file mode 100755 index e69de29..0000000 diff --git a/src/interface/admin.py b/src/interface/admin.py deleted file mode 100755 index 8d1effe..0000000 --- a/src/interface/admin.py +++ /dev/null @@ -1,49 +0,0 @@ -from django.contrib import admin -from django.contrib.admin import AdminSite -from django.contrib.auth.admin import UserAdmin - -from .models import Books, Collections, Favorites, Navigation, User -from .forms import CustomUserCreationForm, CustomUserChangeForm - - -class CustomUserAdmin(UserAdmin): - model = User - add_form = CustomUserCreationForm - form = CustomUserChangeForm - list_display = ["email", "username", "facebook", "twitter", "sponsorid", "matrixid"] - fieldsets = UserAdmin.fieldsets + ( - (None, {"fields": ()}), - ("Personal info", {"fields": ("facebook", "twitter", "matrixid")}), - ("Permissions", {"fields": ("sponsorid",)}), - ) - # add_fieldsets is not a standard ModelAdmin attribute. UserAdmin - # overrides get_fieldsets to use this attribute when creating a user. - add_fieldsets = UserAdmin.add_fieldsets + ( - (None, {"classes": ("wide",), "fields": ("facebook", "twitter", "sponsorid", "matrixid")},), - ) - - -class pyShelfAdminSite(AdminSite): - site_title = 'pyShelf admin' - site_header = 'pyShelf Administration' - index_title = 'Library' - - -class BookModelSearch(admin.ModelAdmin): - search_fields=('title','author','tags') - - -class CollectionModelSearch(admin.ModelAdmin): - search_fields=('collection',) - - -class FavoritesModelSearch(admin.ModelAdmin): - search_fields=('user_id',) - - -admin_site = pyShelfAdminSite(name='pyadmin') -admin_site.register(Books, BookModelSearch) -admin_site.register(Collections, CollectionModelSearch) -admin_site.register(Favorites, FavoritesModelSearch) -admin_site.register(Navigation) -admin_site.register(User, CustomUserAdmin) diff --git a/src/interface/apps.py b/src/interface/apps.py deleted file mode 100755 index 0c7d2c4..0000000 --- a/src/interface/apps.py +++ /dev/null @@ -1,5 +0,0 @@ -from django.apps import AppConfig - - -class InterfaceConfig(AppConfig): - name = "interface" diff --git a/src/interface/forms.py b/src/interface/forms.py deleted file mode 100644 index 222863c..0000000 --- a/src/interface/forms.py +++ /dev/null @@ -1,64 +0,0 @@ -from django import forms -from django.contrib.auth.forms import UserCreationForm, UserChangeForm, AuthenticationForm -from .models import User - - -class CustomUserCreationForm(UserCreationForm): - class Meta: - model = User - fields = ("username", "email", "facebook", "twitter", "sponsorid", "matrixid") - - -class CustomUserChangeForm(UserChangeForm): - class Meta: - model = User - fields = ("username", "email", "facebook", "twitter", "sponsorid", "matrixid") - - -class CustomUserLoginForm(AuthenticationForm): - class Meta: - Model = User - fields = ("username", "password") - - -class SignUpForm(CustomUserCreationForm): - def __init__(self, *args, **kwargs): - super(CustomUserCreationForm, self).__init__(*args, **kwargs) - for fieldname in ['password1']: - self.fields[fieldname].help_text = 'At least 8 chars.' - self.fields[fieldname].initial = 'Password' - for fieldname in ['password2']: - self.fields[fieldname].help_text = '' - self.fields[fieldname].initial = 'Confirm Pass' - - username = forms.CharField( - max_length=30, - required=True, - help_text='Required', - initial="", - label="Username", - - ) - email = forms.EmailField( - max_length=254, - help_text='Required', - initial="", - label="Email" - ) - matrixid = forms.CharField( - max_length=30, - required=False, - help_text='Optional', - initial="", - label="Matrix Id" - ) - password1 = forms.PasswordInput() - class Meta: - model = User - fields = ("username", "email", "matrixid") - - -class UserLoginForm(CustomUserLoginForm): - - class Meta: - model = User diff --git a/src/interface/models.py b/src/interface/models.py deleted file mode 100755 index b699b91..0000000 --- a/src/interface/models.py +++ /dev/null @@ -1,183 +0,0 @@ -from django.contrib.postgres.search import SearchVector -from django.db import models -from django.conf import settings -from django.contrib.auth.models import AbstractUser, User -from django.contrib.auth import get_user_model - -# Create your models here. - - -class Books(models.Model): - """ - pyShelfs Book Database class - :param title: Book title - :param author: Author - :param categories: Categories <-- Not implemented - :param cover: Cover image BinaryField - :param pages: # of pages <-- Not implemented - :param progress: Reader percentage <-- Not implented - :param file_name: Path to book - """ - - class Meta: - db_table = "books" - verbose_name_plural = 'Books' - - def __str__(self): - return self.title - - title = models.TextField(max_length=None) - author = models.TextField(max_length=None, null=True) - categories = models.TextField(max_length=None, null=True) - cover = models.BinaryField(null=True, editable=True) - pages = models.IntegerField(null=True) - progress = models.IntegerField(null=True) - file_name = models.TextField(max_length=None, null=False) - date = models.DateTimeField(auto_now_add=True) - description = models.TextField(null=True) - identifier = models.TextField(max_length=None, null=True) - publisher = models.TextField(max_length=None, null=True) - date = models.DateField(null=True) - rights = models.TextField(max_length=None, null=True) - tags = models.TextField(max_length=None, null=True) - - def generic_search(self, query): - try: - results = Books.objects.annotate( - search=SearchVector("title", "file_name", "author", "tags"), - ).filter(search=query) - except Exception as e: - raise - return results - - def search_by_collection(self, query): - try: - return Books.objects.filter(categories=query) - except Exception as e: - raise - - -class Collections(models.Model): - class Meta: - db_table = "collections" - verbose_name_plural = 'Collections' - - def __str__(self): - return self.collection.__str__() - - collection = models.CharField(max_length=255) - book_id = models.ForeignKey(Books, on_delete=models.PROTECT) - - def get_absolute_url(self): - """Returns the url to access a particular instance of MyModelName.""" - return reverse("model-detail-view", args=[str(self.id)]) - - def generic_search(self, query): - books =[] - try: - #results = Collections.objects.all().filter( - # collection=query - #) - results = Collections.objects.prefetch_related('book_id').annotate(search=SearchVector("collection"), ).filter( - search=query - ) - except Exception as e: - raise - _results = results.values('book_id') - for r in results: - books.append( - { - "pk": r.book_id.id, - "title": r.book_id.title, - "author": r.book_id.author, - "categories": r.book_id.categories, - "cover": r.book_id.cover, - "pages": r.book_id.pages, - "progress": r.book_id.progress, - "file_name": r.book_id.file_name, - "date": r.book_id.date, - "description": r.book_id.description, - "identifier": r.book_id.identifier, - "publisher": r.book_id.publisher, - "date": r.book_id.date, - "rights": r.book_id.rights, - "tags": r.book_id.tags - } - ) - return books - - -class Navigation(models.Model): - """ - pyShelfs Navigation Database class - :param title: Link Text - :param link: Link link :) - :param category: Where in the nav tree do I belong - :param parent_id: This link is a sub link of link with id of me - :param alt: Alternate text of link - :param type: Web link, or Socket link which will be expected to act on \ - the link, and the action defined in socket - :param socket: if a Socket link define socket here - """ - - class Meta: - db_table = "navigation" - verbose_name_plural = "Navigation" - - def __str__(self): - return self.title - - title = models.CharField(max_length=255) - link = models.CharField(max_length=255, null=True) - category = models.CharField(max_length=255, null=True) - parent_id = models.IntegerField(null=True, editable=True) - alt = models.CharField(max_length=255, null=True) - type = models.IntegerField(null=True) - socket = models.CharField(max_length=255, null=False) - - def generic_search(self, query): - try: - results = Navigation.objects.annotate( - search=SearchVector("title", "parent_id", "category"), - ).filter(search=query) - except Exception as e: - raise - return results - - -class User(AbstractUser): - facebook = models.CharField(max_length=255, null=True) - twitter = models.CharField(max_length=255, null=True) - ulvl = models.IntegerField(default=1) - sponsorid = models.IntegerField(null=True) - matrixid = models.CharField(max_length=255, null=True) - - def __str__(self): - return self.username - - -class Favorites(models.Model): - """ - Favorites Database class - :param book: book foreign key - :param user: user foreign key - """ - - class Meta: - db_table = "favorites" - verbose_name_plural = "Favorites" - - def __str__(self): - return str(self.book) - - book = models.ForeignKey(Books, on_delete=models.CASCADE, default=None) - user = models.ForeignKey(User, on_delete=models.CASCADE, default=None) - - def generic_search(self, query): - try: - results = Favorites.objects.annotate(search=SearchVector("user"),).filter(search=query) - except Exception as e: - raise - return results - - diff --git a/src/interface/static/admin/css/autocomplete.css b/src/interface/static/admin/css/autocomplete.css deleted file mode 100644 index 3ef95d1..0000000 --- a/src/interface/static/admin/css/autocomplete.css +++ /dev/null @@ -1,260 +0,0 @@ -select.admin-autocomplete { - width: 20em; -} - -.select2-container--admin-autocomplete.select2-container { - min-height: 30px; -} - -.select2-container--admin-autocomplete .select2-selection--single, -.select2-container--admin-autocomplete .select2-selection--multiple { - min-height: 30px; - padding: 0; -} - -.select2-container--admin-autocomplete.select2-container--focus .select2-selection, -.select2-container--admin-autocomplete.select2-container--open .select2-selection { - border-color: #999; - min-height: 30px; -} - -.select2-container--admin-autocomplete.select2-container--focus .select2-selection.select2-selection--single, -.select2-container--admin-autocomplete.select2-container--open .select2-selection.select2-selection--single { - padding: 0; -} - -.select2-container--admin-autocomplete.select2-container--focus .select2-selection.select2-selection--multiple, -.select2-container--admin-autocomplete.select2-container--open .select2-selection.select2-selection--multiple { - padding: 0; -} - -.select2-container--admin-autocomplete .select2-selection--single { - background-color: #fff; - border: 1px solid #ccc; - border-radius: 4px; -} - -.select2-container--admin-autocomplete .select2-selection--single .select2-selection__rendered { - color: #444; - line-height: 30px; -} - -.select2-container--admin-autocomplete .select2-selection--single .select2-selection__clear { - cursor: pointer; - float: right; - font-weight: bold; -} - -.select2-container--admin-autocomplete .select2-selection--single .select2-selection__placeholder { - color: #999; -} - -.select2-container--admin-autocomplete .select2-selection--single .select2-selection__arrow { - height: 26px; - position: absolute; - top: 1px; - right: 1px; - width: 20px; -} - -.select2-container--admin-autocomplete .select2-selection--single .select2-selection__arrow b { - border-color: #888 transparent transparent transparent; - border-style: solid; - border-width: 5px 4px 0 4px; - height: 0; - left: 50%; - margin-left: -4px; - margin-top: -2px; - position: absolute; - top: 50%; - width: 0; -} - -.select2-container--admin-autocomplete[dir="rtl"] .select2-selection--single .select2-selection__clear { - float: left; -} - -.select2-container--admin-autocomplete[dir="rtl"] .select2-selection--single .select2-selection__arrow { - left: 1px; - right: auto; -} - -.select2-container--admin-autocomplete.select2-container--disabled .select2-selection--single { - background-color: #eee; - cursor: default; -} - -.select2-container--admin-autocomplete.select2-container--disabled .select2-selection--single .select2-selection__clear { - display: none; -} - -.select2-container--admin-autocomplete.select2-container--open .select2-selection--single .select2-selection__arrow b { - border-color: transparent transparent #888 transparent; - border-width: 0 4px 5px 4px; -} - -.select2-container--admin-autocomplete .select2-selection--multiple { - background-color: white; - border: 1px solid #ccc; - border-radius: 4px; - cursor: text; -} - -.select2-container--admin-autocomplete .select2-selection--multiple .select2-selection__rendered { - box-sizing: border-box; - list-style: none; - margin: 0; - padding: 0 5px; - width: 100%; -} - -.select2-container--admin-autocomplete .select2-selection--multiple .select2-selection__rendered li { - list-style: none; -} - -.select2-container--admin-autocomplete .select2-selection--multiple .select2-selection__placeholder { - color: #999; - margin-top: 5px; - float: left; -} - -.select2-container--admin-autocomplete .select2-selection--multiple .select2-selection__clear { - cursor: pointer; - float: right; - font-weight: bold; - margin: 5px; -} - -.select2-container--admin-autocomplete .select2-selection--multiple .select2-selection__choice { - background-color: #e4e4e4; - border: 1px solid #ccc; - border-radius: 4px; - cursor: default; - float: left; - margin-right: 5px; - margin-top: 5px; - padding: 0 5px; -} - -.select2-container--admin-autocomplete .select2-selection--multiple .select2-selection__choice__remove { - color: #999; - cursor: pointer; - display: inline-block; - font-weight: bold; - margin-right: 2px; -} - -.select2-container--admin-autocomplete .select2-selection--multiple .select2-selection__choice__remove:hover { - color: #333; -} - -.select2-container--admin-autocomplete[dir="rtl"] .select2-selection--multiple .select2-selection__choice, .select2-container--admin-autocomplete[dir="rtl"] .select2-selection--multiple .select2-selection__placeholder, .select2-container--admin-autocomplete[dir="rtl"] .select2-selection--multiple .select2-search--inline { - float: right; -} - -.select2-container--admin-autocomplete[dir="rtl"] .select2-selection--multiple .select2-selection__choice { - margin-left: 5px; - margin-right: auto; -} - -.select2-container--admin-autocomplete[dir="rtl"] .select2-selection--multiple .select2-selection__choice__remove { - margin-left: 2px; - margin-right: auto; -} - -.select2-container--admin-autocomplete.select2-container--focus .select2-selection--multiple { - border: solid #999 1px; - outline: 0; -} - -.select2-container--admin-autocomplete.select2-container--disabled .select2-selection--multiple { - background-color: #eee; - cursor: default; -} - -.select2-container--admin-autocomplete.select2-container--disabled .select2-selection__choice__remove { - display: none; -} - -.select2-container--admin-autocomplete.select2-container--open.select2-container--above .select2-selection--single, .select2-container--admin-autocomplete.select2-container--open.select2-container--above .select2-selection--multiple { - border-top-left-radius: 0; - border-top-right-radius: 0; -} - -.select2-container--admin-autocomplete.select2-container--open.select2-container--below .select2-selection--single, .select2-container--admin-autocomplete.select2-container--open.select2-container--below .select2-selection--multiple { - border-bottom-left-radius: 0; - border-bottom-right-radius: 0; -} - -.select2-container--admin-autocomplete .select2-search--dropdown .select2-search__field { - border: 1px solid #ccc; -} - -.select2-container--admin-autocomplete .select2-search--inline .select2-search__field { - background: transparent; - border: none; - outline: 0; - box-shadow: none; - -webkit-appearance: textfield; -} - -.select2-container--admin-autocomplete .select2-results > .select2-results__options { - max-height: 200px; - overflow-y: auto; -} - -.select2-container--admin-autocomplete .select2-results__option[role=group] { - padding: 0; -} - -.select2-container--admin-autocomplete .select2-results__option[aria-disabled=true] { - color: #999; -} - -.select2-container--admin-autocomplete .select2-results__option[aria-selected=true] { - background-color: #ddd; -} - -.select2-container--admin-autocomplete .select2-results__option .select2-results__option { - padding-left: 1em; -} - -.select2-container--admin-autocomplete .select2-results__option .select2-results__option .select2-results__group { - padding-left: 0; -} - -.select2-container--admin-autocomplete .select2-results__option .select2-results__option .select2-results__option { - margin-left: -1em; - padding-left: 2em; -} - -.select2-container--admin-autocomplete .select2-results__option .select2-results__option .select2-results__option .select2-results__option { - margin-left: -2em; - padding-left: 3em; -} - -.select2-container--admin-autocomplete .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option { - margin-left: -3em; - padding-left: 4em; -} - -.select2-container--admin-autocomplete .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option { - margin-left: -4em; - padding-left: 5em; -} - -.select2-container--admin-autocomplete .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option { - margin-left: -5em; - padding-left: 6em; -} - -.select2-container--admin-autocomplete .select2-results__option--highlighted[aria-selected] { - background-color: #79aec8; - color: white; -} - -.select2-container--admin-autocomplete .select2-results__group { - cursor: default; - display: block; - padding: 6px; -} diff --git a/src/interface/static/admin/css/base.css b/src/interface/static/admin/css/base.css deleted file mode 100644 index d03f025..0000000 --- a/src/interface/static/admin/css/base.css +++ /dev/null @@ -1,968 +0,0 @@ -/* - DJANGO Admin styles -*/ - -@import url(fonts.css); - -html, body { - height: 100%; -} - -body { - margin: 0; - padding: 0; - font-size: 14px; - font-family: "Roboto","Lucida Grande","DejaVu Sans","Bitstream Vera Sans",Verdana,Arial,sans-serif; - color: #fff; - background: #282828; -} - -/* LINKS */ - -a:link, a:visited { - color: #fff; - text-decoration: none; -} - -a:focus, a:hover { - color: #909090; -} - -a:focus { - text-decoration: underline; -} - -a img { - border: none; -} - -a.section:link, a.section:visited { - color: #fff; - text-decoration: none; -} - -a.section:focus, a.section:hover { - text-decoration: underline; -} - -/* GLOBAL DEFAULTS */ - -p, ol, ul, dl { - margin: .2em 0 .8em 0; -} - -p { - padding: 0; - line-height: 140%; -} - -h1,h2,h3,h4,h5 { - font-weight: bold; -} - -h1 { - margin: 0 0 20px; - font-weight: 300; - font-size: 20px; - color: #3f3; -} - -h2 { - font-size: 16px; - margin: 1em 0 .5em 0; -} - -h2.subhead { - font-weight: normal; - margin-top: 0; -} - -h3 { - font-size: 14px; - margin: .8em 0 .3em 0; - color: #666; - font-weight: bold; -} - -h4 { - font-size: 12px; - margin: 1em 0 .8em 0; - padding-bottom: 3px; -} - -h5 { - font-size: 10px; - margin: 1.5em 0 .5em 0; - color: #666; - text-transform: uppercase; - letter-spacing: 1px; -} - -ul > li { - list-style-type: square; - padding: 1px 0; -} - -li ul { - margin-bottom: 0; -} - -li, dt, dd { - font-size: 13px; - line-height: 20px; -} - -dt { - font-weight: bold; - margin-top: 4px; -} - -dd { - margin-left: 0; -} - -form { - margin: 0; - padding: 0; -} - -fieldset { - margin: 0; - min-width: 0; - padding: 0; - border: none; - border-top: 1px solid #eee; -} - -blockquote { - font-size: 11px; - color: #777; - margin-left: 2px; - padding-left: 10px; - border-left: 5px solid #ddd; -} - -code, pre { - font-family: "Bitstream Vera Sans Mono", Monaco, "Courier New", Courier, monospace; - color: #666; - font-size: 12px; - overflow-x: auto; -} - -pre.literal-block { - margin: 10px; - background: #eee; - padding: 6px 8px; -} - -code strong { - color: #930; -} - -hr { - clear: both; - color: #eee; - background-color: #eee; - height: 1px; - border: none; - margin: 0; - padding: 0; - font-size: 1px; - line-height: 1px; -} - -/* TEXT STYLES & MODIFIERS */ - -.small { - font-size: 11px; -} - -.mini { - font-size: 10px; -} - -.help, p.help, form p.help, div.help, form div.help, div.help li { - font-size: 11px; - color: #999; -} - -div.help ul { - margin-bottom: 0; -} - -.help-tooltip { - cursor: help; -} - -p img, h1 img, h2 img, h3 img, h4 img, td img { - vertical-align: middle; -} - -.quiet, a.quiet:link, a.quiet:visited { - color: #999; - font-weight: normal; -} - -.clear { - clear: both; -} - -.nowrap { - white-space: nowrap; -} - -/* TABLES */ - -table { - border-collapse: collapse; - border-color: #ccc; -} - -td, th { - font-size: 13px; - line-height: 16px; - border-bottom: 1px solid #eee; - vertical-align: top; - padding: 8px; - font-family: "Roboto", "Lucida Grande", Verdana, Arial, sans-serif; -} - -th { - font-weight: 600; - text-align: left; -} - -thead th, -tfoot td { - color: #000; - padding: 5px 10px; - font-size: 11px; - background: #676767; - border: none; - border-top: 1px solid #eee; - border-bottom: 1px solid #eee; -} - -tfoot td { - border-bottom: none; - border-top: 1px solid #eee; -} - -thead th.required { - color: #000; -} - -tr.alt { - background: #797979; -} - -tr:nth-child(odd), .row-form-errors { - background: #676767; -} - -tr:nth-child(even), -tr:nth-child(even) .errorlist, -tr:nth-child(odd) + .row-form-errors, -tr:nth-child(odd) + .row-form-errors .errorlist { - background: #797979; -} - -/* SORTABLE TABLES */ - -thead th { - padding: 5px 10px; - line-height: normal; - text-transform: uppercase; - background: #797979; -} - -thead th a:link, thead th a:visited { - color: #000; -} - -thead th.sorted { - background: #797979; -} - -thead th.sorted .text { - padding-right: 42px; -} - -table thead th .text span { - padding: 8px 10px; - display: block; -} - -table thead th .text a { - display: block; - cursor: pointer; - padding: 8px 10px; -} - -table thead th .text a:focus, table thead th .text a:hover { - background: #797979; -} - -thead th.sorted a.sortremove { - visibility: hidden; -} - -table thead th.sorted:hover a.sortremove { - visibility: visible; -} - -table thead th.sorted .sortoptions { - display: block; - padding: 9px 5px 0 5px; - float: right; - text-align: right; -} - -table thead th.sorted .sortpriority { - font-size: .8em; - min-width: 12px; - text-align: center; - vertical-align: 3px; - margin-left: 2px; - margin-right: 2px; -} - -table thead th.sort79797e.sortoptions a { - position: relative; - width: 14px; - height: 14px; - display: inline-block; - background: url(../img/sorting-icons.svg) 0 0 no-repeat; - background-size: 14px auto; -} - -table thead th.sorted .sortoptions a.sortremove { - background-position: 0 0; -} - -table thead th.sorted .sortoptions a.sortremove:after { - content: '\\'; - position: absolute; - top: -6px; - left: 3px; - font-weight: 200; - font-size: 18px; - color: #999; -} - -table thead th.sorted .sortoptions a.sortremove:focus:after, -table thead th.sorted .sortoptions a.sortremove:hover:after { - color: #447e9b; -} - -table thead th.sorted .sortoptions a.sortremove:focus, -table thead th.sorted .sortoptions a.sortremove:hover { - background-position: 0 -14px; -} - -table thead th.sorted .sortoptions a.ascending { - background-position: 0 -28px; -} - -table thead th.sorted .sortoptions a.ascending:focus, -table thead th.sorted .sortoptions a.ascending:hover { - background-position: 0 -42px; -} - -table thead th.sorted .sortoptions a.descending { - top: 1px; - background-position: 0 -56px; -} - -table thead th.sorted .sortoptions a.descending:focus, -table thead th.sorted .sortoptions a.descending:hover { - background-position: 0 -70px; -} - -/* FORM DEFAULTS */ - -input, textarea, select, .form-row p, form .button { - margin: 2px 0; - padding: 2px 3px; - vertical-align: middle; - font-family: "Roboto", "Lucida Grande", Verdana, Arial, sans-serif; - font-weight: normal; - font-size: 13px; -} -.form-row div.help { - padding: 2px 3px; -} - -textarea { - vertical-align: top; -} - -input[type=text], input[type=password], input[type=email], input[type=url], -input[type=number], input[type=tel], textarea, select, .vTextField { - border: 1px solid #ccc; - border-radius: 4px; - padding: 5px 6px; - margin-top: 0; -} - -input[type=text]:focus, input[type=password]:focus, input[type=email]:focus, -input[type=url]:focus, input[type=number]:focus, input[type=tel]:focus, -textarea:focus, select:focus, .vTextField:focus { - border-color: #999; -} - -select { - height: 30px; -} - -select[multiple] { - /* Allow HTML size attribute to override the height in the rule above. */ - height: auto; - min-height: 150px; -} - -/* FORM BUTTONS */ - -.button, input[type=submit], input[type=button], .submit-row input, a.button { - background: #888; - padding: 10px 15px; - border: none; - border-radius: 4px; - color: #fff; - cursor: pointer; -} - -a.button { - padding: 4px 5px; -} - -.button:active, input[type=submit]:active, input[type=button]:active, -.button:focus, input[type=submit]:focus, input[type=button]:focus, -.button:hover, input[type=submit]:hover, input[type=button]:hover { - background: #609ab6; -} - -.button[disabled], input[type=submit][disabled], input[type=button][disabled] { - opacity: 0.4; -} - -.button.default, input[type=submit].default, .submit-row input.default { - float: right; - border: none; - font-weight: 400; - background: #417690; -} - -.button.default:active, input[type=submit].default:active, -.button.default:focus, input[type=submit].default:focus, -.button.default:hover, input[type=submit].default:hover { - background: #205067; -} - -.button[disabled].default, -input[type=submit][disabled].default, -input[type=button][disabled].default { - opacity: 0.4; -} - - -/* MODULES */ - -.module { - border: none; - margin-bottom: 30px; - background: #363636; -} - -.module p, .module ul, .module h3, .module h4, .module dl, .module pre { - padding-left: 10px; - padding-right: 10px; -} - -.module blockquote { - margin-left: 12px; -} - -.module ul, .module ol { - margin-left: 1.5em; -} - -.module h3 { - margin-top: .6em; -} - -.module h2, .module caption, .inline-group h2 { - margin: 0; - padding: 8px; - font-weight: 400; - font-size: 13px; - text-align: left; - background: #888; - color: #fff; -} - -.module caption, -.inline-group h2 { - font-size: 12px; - letter-spacing: 0.5px; - text-transform: uppercase; -} - -.module table { - border-collapse: collapse; -} - -/* MESSAGES & ERRORS */ - -ul.messagelist { - padding: 0; - margin: 0; -} - -ul.messagelist li { - display: block; - font-weight: 400; - font-size: 13px; - padding: 10px 10px 10px 65px; - margin: 0 0 10px 0; - background: #dfd url(../img/icon-yes.svg) 40px 12px no-repeat; - background-size: 16px auto; - color: #333; -} - -ul.messagelist li.warning { - background: #ffc url(../img/icon-alert.svg) 40px 14px no-repeat; - background-size: 14px auto; -} - -ul.messagelist li.error { - background: #ffefef url(../img/icon-no.svg) 40px 12px no-repeat; - background-size: 16px auto; -} - -.errornote { - font-size: 14px; - font-weight: 700; - display: block; - padding: 10px 12px; - margin: 0 0 10px 0; - color: #ba2121; - border: 1px solid #ba2121; - border-radius: 4px; - background-color: #fff; - background-position: 5px 12px; -} - -ul.errorlist { - margin: 0 0 4px; - padding: 0; - color: #ba2121; - background: #fff; -} - -ul.errorlist li { - font-size: 13px; - display: block; - margin-bottom: 4px; -} - -ul.errorlist li:first-child { - margin-top: 0; -} - -ul.errorlist li a { - color: inherit; - text-decoration: underline; -} - -td ul.errorlist { - margin: 0; - padding: 0; -} - -td ul.errorlist li { - margin: 0; -} - -.form-row.errors { - margin: 0; - border: none; - border-bottom: 1px solid #eee; - background: none; -} - -.form-row.errors ul.errorlist li { - padding-left: 0; -} - -.errors input, .errors select, .errors textarea, -td ul.errorlist + input, td ul.errorlist + select, td ul.errorlist + textarea { - border: 1px solid #ba2121; -} - -.description { - font-size: 12px; - padding: 5px 0 0 12px; -} - -/* BREADCRUMBS */ - -div.breadcrumbs { - background: #888; - padding: 10px 40px; - border: none; - font-size: 14px; - color: #c4dce8; - text-align: left; -} - -div.breadcrumbs a { - color: #fff; -} - -div.breadcrumbs a:focus, div.breadcrumbs a:hover { - color: #c4dce8; -} - -/* ACTION ICONS */ - -.viewlink, .inlineviewlink { - padding-left: 16px; - background: url(../img/icon-viewlink.svg) 0 1px no-repeat; -} - -.addlink { - padding-left: 16px; - background: url(../img/icon-addlink.svg) 0 1px no-repeat; -} - -.changelink, .inlinechangelink { - padding-left: 16px; - background: url(../img/icon-changelink.svg) 0 1px no-repeat; -} - -.deletelink { - padding-left: 16px; - background: url(../img/icon-deletelink.svg) 0 1px no-repeat; -} - -a.deletelink:link, a.deletelink:visited { - color: #CC3434; -} - -a.deletelink:focus, a.deletelink:hover { - color: #993333; - text-decoration: none; -} - -/* OBJECT TOOLS */ - -.object-tools { - font-size: 10px; - font-weight: bold; - padding-left: 0; - float: right; - position: relative; - margin-top: -48px; -} - -.form-row .object-tools { - margin-top: 5px; - margin-bottom: 5px; - float: none; - height: 2em; - padding-left: 3.5em; -} - -.object-tools li { - display: block; - float: left; - margin-left: 5px; - height: 16px; -} - -.object-tools a { - border-radius: 15px; -} - -.object-tools a:link, .object-tools a:visited { - display: block; - float: left; - padding: 3px 12px; - background: #999; - font-weight: 400; - font-size: 11px; - text-transform: uppercase; - letter-spacing: 0.5px; - color: #fff; -} - -.object-tools a:focus, .object-tools a:hover { - background-color: #417690; -} - -.object-tools a:focus{ - text-decoration: none; -} - -.object-tools a.viewsitelink, .object-tools a.golink,.object-tools a.addlink { - background-repeat: no-repeat; - background-position: right 7px center; - padding-right: 26px; -} - -.object-tools a.viewsitelink, .object-tools a.golink { - background-image: url(../img/tooltag-arrowright.svg); -} - -.object-tools a.addlink { - background-image: url(../img/tooltag-add.svg); -} - -/* OBJECT HISTORY */ - -table#change-history { - width: 100%; -} - -table#change-history tbody th { - width: 16em; -} - -/* PAGE STRUCTURE */ - -#container { - position: relative; - width: 100%; - min-width: 980px; - padding: 0; - display: flex; - flex-direction: column; - height: 100%; -} - -#container > div { - flex-shrink: 0; -} - -#container > .main { - display: flex; - flex: 1 0 auto; -} - -.main > .content { - flex: 1 0; - max-width: 100%; -} - -#content { - padding: 20px 40px; -} - -.dashboard #content { - width: 600px; -} - -#content-main { - float: left; - width: 100%; -} - -#content-related { - float: right; - width: 260px; - position: relative; - margin-right: -300px; -} - -#footer { - clear: both; - padding: 10px; -} - -/* COLUMN TYPES */ - -.colMS { - margin-right: 300px; -} - -.colSM { - margin-left: 300px; -} - -.colSM #content-related { - float: left; - margin-right: 0; - margin-left: -300px; -} - -.colSM #content-main { - float: right; -} - -.popup .colM { - width: auto; -} - -/* HEADER */ - -#header { - width: auto; - height: auto; - display: flex; - justify-content: space-between; - align-items: center; - padding: 10px 10px; - background: #363636; - color: #3f3; - overflow: hidden; - border-bottom: #3f3 1px solid; - margin-bottom: 5px; -} - -#header a:link, #header a:visited { - color: #fff; -} - -#header a:focus , #header a:hover { - text-decoration: underline; -} - -#branding { - float: left; -} - -#branding h1 { - padding: 0; - margin: 0 20px 0 0; - font-weight: 300; - font-size: 24px; - color: #3f3; -} - -#branding h1, #branding h1 a:link, #branding h1 a:visited { - color: #3f3; -} - -#branding h2 { - padding: 0 10px; - font-size: 14px; - margin: -8px 0 8px 0; - font-weight: normal; - color: #ffc; -} - -#branding a:hover { - text-decoration: none; -} - -#user-tools { - float: right; - padding: 0; - margin: 0 0 0 20px; - font-weight: 300; - font-size: 11px; - letter-spacing: 0.5px; - text-transform: uppercase; - text-align: right; -} - -#user-tools a { - border-bottom: 1px solid rgba(255, 255, 255, 0.25); -} - -#user-tools a:focus, #user-tools a:hover { - text-decoration: none; - border-bottom-color: #888; - color: #888; -} - -/* SIDEBAR */ - -#content-related { - background: #797979; -} - -#content-related .module { - background: none; -} - -#content-related h3 { - font-size: 14px; - color: #fff; - padding: 0 16px; - margin: 0 0 16px; -} - -#content-related h4 { - font-size: 13px; -} - -#content-related p { - padding-left: 16px; - padding-right: 16px; -} - -#content-related .actionlist { - padding: 0; - margin: 16px; -} - -#content-related .actionlist li { - line-height: 1.2; - margin-bottom: 10px; - padding-left: 18px; -} - -#content-related .module h2 { - background: none; - padding: 16px; - margin-bottom: 16px; - border-bottom: 1px solid #eaeaea; - font-size: 18px; - color: #f7f7f7; -} - -.delete-confirmation form input[type="submit"] { - background: #ba2121; - border-radius: 4px; - padding: 10px 15px; - color: #fff; -} - -.delete-confirmation form input[type="submit"]:active, -.delete-confirmation form input[type="submit"]:focus, -.delete-confirmation form input[type="submit"]:hover { - background: #a41515; -} - -.delete-confirmation form .cancel-link { - display: inline-block; - vertical-align: middle; - height: 15px; - line-height: 15px; - background: #ddd; - border-radius: 4px; - padding: 10px 15px; - color: #333; - margin: 0 0 0 10px; -} - -.delete-confirmation form .cancel-link:active, -.delete-confirmation form .cancel-link:focus, -.delete-confirmation form .cancel-link:hover { - background: #ccc; -} - -/* POPUP */ -.popup #content { - padding: 20px; -} - -.popup #container { - min-width: 0; -} - -.popup #header { - padding: 10px 20px; -} diff --git a/src/interface/static/admin/css/changelists.css b/src/interface/static/admin/css/changelists.css deleted file mode 100644 index 9b0f4df..0000000 --- a/src/interface/static/admin/css/changelists.css +++ /dev/null @@ -1,351 +0,0 @@ -/* CHANGELISTS */ - -#changelist { - position: relative; - width: 100%; -} - -#changelist table { - width: 100%; -} - -.change-list .hiddenfields { display:none; } - -.change-list .filtered table { - border-right: none; -} - -.change-list .filtered { - min-height: 400px; -} - -.change-list .filtered .results, .change-list .filtered .paginator, -.filtered #toolbar, .filtered div.xfull { - margin-right: 280px; - width: auto; -} - -.change-list .filtered table tbody th { - padding-right: 1em; -} - -#changelist-form .results { - overflow-x: auto; -} - -#changelist .toplinks { - border-bottom: 1px solid #363636; -} - -#changelist .paginator { - color: #666; - border-bottom: 1px solid #363636; - background: #191919; - overflow: hidden; -} - -/* CHANGELIST TABLES */ - -#changelist table thead th { - padding: 0; - white-space: nowrap; - vertical-align: middle; -} - -#changelist table thead th.action-checkbox-column { - width: 1.5em; - text-align: center; -} - -#changelist table tbody td.action-checkbox { - text-align: center; -} - -#changelist table tfoot { - color: #666; -} - -/* TOOLBAR */ - -#changelist #toolbar { - padding: 8px 10px; - margin-bottom: 0px; - border-top: 1px solid #363636; - border-bottom: 1px solid #363636; - background: #000; - color: #666; -} - -#changelist #toolbar form input { - border-radius: 4px; - font-size: 14px; - padding: 5px; - color: #333; -} - -#changelist #toolbar form #searchbar { - height: 19px; - border: 1px solid #ccc; - padding: 2px 5px; - margin: 0; - vertical-align: top; - font-size: 13px; - max-width: 230px; -} - -#changelist #toolbar form #searchbar:focus { - border-color: #999; -} - -#changelist #toolbar form input[type="submit"] { - border: 1px solid #ccc; - font-size: 13px; - padding: 4px 8px; - margin: 0; - vertical-align: middle; - background: #fff; - box-shadow: 0 -15px 20px -10px rgba(0, 0, 0, 0.15) inset; - cursor: pointer; - color: #333; -} - -#changelist #toolbar form input[type="submit"]:focus, -#changelist #toolbar form input[type="submit"]:hover { - border-color: #999; -} - -#changelist #changelist-search img { - vertical-align: middle; - margin-right: 4px; -} - -/* FILTER COLUMN */ - -#changelist-filter { - position: absolute; - top: 0; - right: 0; - z-index: 1000; - width: 240px; - background: #000; - border-left: none; - margin: 0; -} - -#changelist-filter h2 { - font-size: 14px; - text-transform: uppercase; - letter-spacing: 0.5px; - padding: 5px 15px; - margin-bottom: 12px; - border-bottom: none; -} - -#changelist-filter h3 { - font-weight: 400; - font-size: 14px; - padding: 0 15px; - margin-bottom: 10px; -} - -#changelist-filter ul { - margin: 5px 0; - padding: 0 15px 15px; - border-bottom: 1px solid #282828; -} - -#changelist-filter ul:last-child { - border-bottom: none; -} - -#changelist-filter li { - list-style-type: none; - margin-left: 0; - padding-left: 0; -} - -#changelist-filter a { - display: block; - color: #999; - text-overflow: ellipsis; - overflow-x: hidden; -} - -#changelist-filter li.selected { - border-left: 5px solid #797979; - padding-left: 10px; - margin-left: -15px; - background-color: #282828; -} - -#changelist-filter li.selected a { - color: #5b80b2; -} - -#changelist-filter a:focus, #changelist-filter a:hover, -#changelist-filter li.selected a:focus, -#changelist-filter li.selected a:hover { - color: #036; -} - -#changelist-filter #changelist-filter-clear a { - font-size: 13px; - padding-bottom: 10px; - border-bottom: 1px solid #eaeaea; -} - -/* DATE DRILLDOWN */ - -.change-list ul.toplinks { - display: block; - float: left; - padding: 0; - margin: 0; - width: 100%; -} - -.change-list ul.toplinks li { - padding: 3px 6px; - font-weight: bold; - list-style-type: none; - display: inline-block; -} - -.change-list ul.toplinks .date-back a { - color: #999; -} - -.change-list ul.toplinks .date-back a:focus, -.change-list ul.toplinks .date-back a:hover { - color: #036; -} - -/* PAGINATOR */ - -.paginator { - font-size: 13px; - padding-top: 10px; - padding-bottom: 10px; - line-height: 22px; - margin: 0; - border-top: 1px solid #ddd; -} - -.paginator a:link, .paginator a:visited { - padding: 2px 6px; - background: #79aec8; - text-decoration: none; - color: #fff; -} - -.paginator a.showall { - border: none; - background: none; - color: #5b80b2; -} - -.paginator a.showall:focus, .paginator a.showall:hover { - background: none; - color: #036; -} - -.paginator .end { - margin-right: 6px; -} - -.paginator .this-page { - padding: 2px 6px; - font-weight: bold; - font-size: 13px; - vertical-align: top; -} - -.paginator a:focus, .paginator a:hover { - color: white; - background: #036; -} - -/* ACTIONS */ - -.filtered .actions { - margin-right: 280px; - border-right: none; -} - -#changelist table input { - margin: 0; - vertical-align: baseline; -} - -#changelist table tbody tr.selected { - background-color: #FFFFCC; -} - -#changelist .actions { - padding: 10px; - background: #191919; - border-top: none; - border-bottom: none; - line-height: 24px; - color: #fff; -} - -#changelist .actions.selected { - background: #fffccf; - border-top: 1px solid #fffee8; - border-bottom: 1px solid #edecd6; -} - -#changelist .actions span.all, -#changelist .actions span.action-counter, -#changelist .actions span.clear, -#changelist .actions span.question { - font-size: 13px; - margin: 0 0.5em; - display: none; -} - -#changelist .actions:last-child { - border-bottom: none; -} - -#changelist .actions select { - vertical-align: top; - height: 24px; - background: #363636; - color: #fff; - border: 1px solid #ccc; - border-radius: 4px; - font-size: 14px; - padding: 0 0 0 4px; - margin: 0; - margin-left: 10px; -} - -#changelist .actions select:focus { - border-color: #999; -} - -#changelist .actions label { - display: inline-block; - vertical-align: middle; - font-size: 13px; -} - -#changelist .actions .button { - font-size: 13px; - border: 1px solid #ccc; - border-radius: 4px; - background: #363636; - box-shadow: 0 -15px 20px -10px rgba(0, 0, 0, 0.15) inset; - cursor: pointer; - height: 24px; - line-height: 1; - padding: 4px 8px; - margin: 0; - color: #fff; -} - -#changelist .actions .button:focus, #changelist .actions .button:hover { - border-color: #999; -} diff --git a/src/interface/static/admin/css/dashboard.css b/src/interface/static/admin/css/dashboard.css deleted file mode 100644 index 91d6efd..0000000 --- a/src/interface/static/admin/css/dashboard.css +++ /dev/null @@ -1,26 +0,0 @@ -/* DASHBOARD */ - -.dashboard .module table th { - width: 100%; -} - -.dashboard .module table td { - white-space: nowrap; -} - -.dashboard .module table td a { - display: block; - padding-right: .6em; -} - -/* RECENT ACTIONS MODULE */ - -.module ul.actionlist { - margin-left: 0; -} - -ul.actionlist li { - list-style-type: none; - overflow: hidden; - text-overflow: ellipsis; -} diff --git a/src/interface/static/admin/css/fonts.css b/src/interface/static/admin/css/fonts.css deleted file mode 100644 index c837e01..0000000 --- a/src/interface/static/admin/css/fonts.css +++ /dev/null @@ -1,20 +0,0 @@ -@font-face { - font-family: 'Roboto'; - src: url('../fonts/Roboto-Bold-webfont.woff'); - font-weight: 700; - font-style: normal; -} - -@font-face { - font-family: 'Roboto'; - src: url('../fonts/Roboto-Regular-webfont.woff'); - font-weight: 400; - font-style: normal; -} - -@font-face { - font-family: 'Roboto'; - src: url('../fonts/Roboto-Light-webfont.woff'); - font-weight: 300; - font-style: normal; -} diff --git a/src/interface/static/admin/css/forms.css b/src/interface/static/admin/css/forms.css deleted file mode 100644 index fb0c391..0000000 --- a/src/interface/static/admin/css/forms.css +++ /dev/null @@ -1,526 +0,0 @@ -@import url('widgets.css'); - -/* FORM ROWS */ - -.form-row { - overflow: hidden; - padding: 10px; - font-size: 13px; - border-bottom: 1px solid #eee; -} - -.form-row img, .form-row input { - vertical-align: middle; -} - -.form-row label input[type="checkbox"] { - margin-top: 0; - vertical-align: 0; -} - -form .form-row p { - padding-left: 0; -} - -.hidden { - display: none; -} - -/* FORM LABELS */ - -label { - font-weight: normal; - color: #fff; - font-size: 13px; -} - -.required label, label.required { - font-weight: bold; - color: #999; -} - -/* RADIO BUTTONS */ - -form ul.radiolist li { - list-style-type: none; -} - -form ul.radiolist label { - float: none; - display: inline; -} - -form ul.radiolist input[type="radio"] { - margin: -2px 4px 0 0; - padding: 0; -} - -form ul.inline { - margin-left: 0; - padding: 0; -} - -form ul.inline li { - float: left; - padding-right: 7px; -} - -/* ALIGNED FIELDSETS */ - -.aligned label { - display: block; - padding: 4px 10px 0 0; - float: left; - width: 160px; - word-wrap: break-word; - line-height: 1; -} - -.aligned label:not(.vCheckboxLabel):after { - content: ''; - display: inline-block; - vertical-align: middle; - height: 26px; -} - -.aligned label + p, .aligned label + div.help, .aligned label + div.readonly { - padding: 6px 0; - margin-top: 0; - margin-bottom: 0; - margin-left: 170px; -} - -.aligned ul label { - display: inline; - float: none; - width: auto; -} - -.aligned .form-row input { - margin-bottom: 0; -} - -.colMS .aligned .vLargeTextField, .colMS .aligned .vXMLLargeTextField { - width: 350px; -} - -form .aligned ul { - margin-left: 160px; - padding-left: 10px; -} - -form .aligned ul.radiolist { - display: inline-block; - margin: 0; - padding: 0; -} - -form .aligned p.help, -form .aligned div.help { - clear: left; - margin-top: 0; - margin-left: 160px; - padding-left: 10px; -} - -form .aligned label + p.help, -form .aligned label + div.help { - margin-left: 0; - padding-left: 0; -} - -form .aligned p.help:last-child, -form .aligned div.help:last-child { - margin-bottom: 0; - padding-bottom: 0; -} - -form .aligned input + p.help, -form .aligned textarea + p.help, -form .aligned select + p.help, -form .aligned input + div.help, -form .aligned textarea + div.help, -form .aligned select + div.help { - margin-left: 160px; - padding-left: 10px; -} - -form .aligned ul li { - list-style: none; -} - -form .aligned table p { - margin-left: 0; - padding-left: 0; -} - -.aligned .vCheckboxLabel { - float: none; - width: auto; - display: inline-block; - vertical-align: -3px; - padding: 0 0 5px 5px; -} - -.aligned .vCheckboxLabel + p.help, -.aligned .vCheckboxLabel + div.help { - margin-top: -4px; -} - -.colM .aligned .vLargeTextField, .colM .aligned .vXMLLargeTextField { - width: 610px; -} - -.checkbox-row p.help, -.checkbox-row div.help { - margin-left: 0; - padding-left: 0; -} - -fieldset .fieldBox { - float: left; - margin-right: 20px; -} - -/* WIDE FIELDSETS */ - -.wide label { - width: 200px; -} - -form .wide p, -form .wide input + p.help, -form .wide input + div.help { - margin-left: 200px; -} - -form .wide p.help, -form .wide div.help { - padding-left: 38px; -} - -form div.help ul { - padding-left: 0; - margin-left: 0; -} - -.colM fieldset.wide .vLargeTextField, .colM fieldset.wide .vXMLLargeTextField { - width: 450px; -} - -/* COLLAPSED FIELDSETS */ - -fieldset.collapsed * { - display: none; -} - -fieldset.collapsed h2, fieldset.collapsed { - display: block; -} - -fieldset.collapsed { - border: 1px solid #eee; - border-radius: 4px; - overflow: hidden; -} - -fieldset.collapsed h2 { - background: #f8f8f8; - color: #666; -} - -fieldset .collapse-toggle { - color: #fff; -} - -fieldset.collapsed .collapse-toggle { - background: transparent; - display: inline; - color: #447e9b; -} - -/* MONOSPACE TEXTAREAS */ - -fieldset.monospace textarea { - font-family: "Bitstream Vera Sans Mono", Monaco, "Courier New", Courier, monospace; -} - -/* SUBMIT ROW */ - -.submit-row { - padding: 12px 14px; - margin: 0 0 20px; - background: #888888; - border: 1px solid #3f3f3f; - border-radius: 4px; - text-align: right; - overflow: hidden; -} - -body.popup .submit-row { - overflow: auto; -} - -.submit-row input { - height: 35px; - line-height: 15px; - margin: 0 0 0 5px; -} - -.submit-row input.default { - margin: 0 0 0 8px; - text-transform: uppercase; -} - -.submit-row p { - margin: 0.3em; -} - -.submit-row p.deletelink-box { - float: left; - margin: 0; -} - -.submit-row a.deletelink { - display: block; - background: #ba2121; - border-radius: 4px; - padding: 10px 15px; - height: 15px; - line-height: 15px; - color: #fff; -} - -.submit-row a.closelink { - display: inline-block; - background: #bbbbbb; - border-radius: 4px; - padding: 10px 15px; - height: 15px; - line-height: 15px; - margin: 0 0 0 5px; - color: #fff; -} - -.submit-row a.deletelink:focus, -.submit-row a.deletelink:hover, -.submit-row a.deletelink:active { - background: #a41515; -} - -.submit-row a.closelink:focus, -.submit-row a.closelink:hover, -.submit-row a.closelink:active { - background: #aaaaaa; -} - -/* CUSTOM FORM FIELDS */ - -.vSelectMultipleField { - vertical-align: top; -} - -.vCheckboxField { - border: none; -} - -.vDateField, .vTimeField { - margin-right: 2px; - margin-bottom: 4px; -} - -.vDateField { - min-width: 6.85em; -} - -.vTimeField { - min-width: 4.7em; -} - -.vURLField { - width: 30em; -} - -.vLargeTextField, .vXMLLargeTextField { - width: 48em; -} - -.flatpages-flatpage #id_content { - height: 40.2em; -} - -.module table .vPositiveSmallIntegerField { - width: 2.2em; -} - -.vTextField, .vUUIDField { - width: 20em; -} - -.vIntegerField { - width: 5em; -} - -.vBigIntegerField { - width: 10em; -} - -.vForeignKeyRawIdAdminField { - width: 5em; -} - -/* INLINES */ - -.inline-group { - padding: 0; - margin: 0 0 30px; -} - -.inline-group thead th { - padding: 8px 10px; -} - -.inline-group .aligned label { - width: 160px; -} - -.inline-related { - position: relative; -} - -.inline-related h3 { - margin: 0; - color: #666; - padding: 5px; - font-size: 13px; - background: #f8f8f8; - border-top: 1px solid #eee; - border-bottom: 1px solid #eee; -} - -.inline-related h3 span.delete { - float: right; -} - -.inline-related h3 span.delete label { - margin-left: 2px; - font-size: 11px; -} - -.inline-related fieldset { - margin: 0; - background: #fff; - border: none; - width: 100%; -} - -.inline-related fieldset.module h3 { - margin: 0; - padding: 2px 5px 3px 5px; - font-size: 11px; - text-align: left; - font-weight: bold; - background: #bcd; - color: #fff; -} - -.inline-group .tabular fieldset.module { - border: none; -} - -.inline-related.tabular fieldset.module table { - width: 100%; -} - -.last-related fieldset { - border: none; -} - -.inline-group .tabular tr.has_original td { - padding-top: 2em; -} - -.inline-group .tabular tr td.original { - padding: 2px 0 0 0; - width: 0; - _position: relative; -} - -.inline-group .tabular th.original { - width: 0px; - padding: 0; -} - -.inline-group .tabular td.original p { - position: absolute; - left: 0; - height: 1.1em; - padding: 2px 9px; - overflow: hidden; - font-size: 9px; - font-weight: bold; - color: #666; - _width: 700px; -} - -.inline-group ul.tools { - padding: 0; - margin: 0; - list-style: none; -} - -.inline-group ul.tools li { - display: inline; - padding: 0 5px; -} - -.inline-group div.add-row, -.inline-group .tabular tr.add-row td { - color: #666; - background: #f8f8f8; - padding: 8px 10px; - border-bottom: 1px solid #eee; -} - -.inline-group .tabular tr.add-row td { - padding: 8px 10px; - border-bottom: 1px solid #eee; -} - -.inline-group ul.tools a.add, -.inline-group div.add-row a, -.inline-group .tabular tr.add-row td a { - background: url(../img/icon-addlink.svg) 0 1px no-repeat; - padding-left: 16px; - font-size: 12px; -} - -.empty-form { - display: none; -} - -/* RELATED FIELD ADD ONE / LOOKUP */ - -.related-lookup { - margin-left: 5px; - display: inline-block; - vertical-align: middle; - background-repeat: no-repeat; - background-size: 14px; -} - -.related-lookup { - width: 16px; - height: 16px; - background-image: url(../img/search.svg); -} - -form .related-widget-wrapper ul { - display: inline-block; - margin-left: 0; - padding-left: 0; -} - -.clearable-file-input input { - margin-top: 0; -} diff --git a/src/interface/static/admin/css/login.css b/src/interface/static/admin/css/login.css deleted file mode 100644 index 062b36e..0000000 --- a/src/interface/static/admin/css/login.css +++ /dev/null @@ -1,79 +0,0 @@ -/* LOGIN FORM */ - -.login { - background: #f8f8f8; - height: auto; -} - -.login #header { - height: auto; - padding: 15px 16px; - justify-content: center; -} - -.login #header h1 { - font-size: 18px; -} - -.login #header h1 a { - color: #fff; -} - -.login #content { - padding: 20px 20px 0; -} - -.login #container { - background: #fff; - border: 1px solid #eaeaea; - border-radius: 4px; - overflow: hidden; - width: 28em; - min-width: 300px; - margin: 100px auto; - height: auto; -} - -.login #content-main { - width: 100%; -} - -.login .form-row { - padding: 4px 0; - float: left; - width: 100%; - border-bottom: none; -} - -.login .form-row label { - padding-right: 0.5em; - line-height: 2em; - font-size: 1em; - clear: both; - color: #333; -} - -.login .form-row #id_username, .login .form-row #id_password { - clear: both; - padding: 8px; - width: 100%; - box-sizing: border-box; -} - -.login span.help { - font-size: 10px; - display: block; -} - -.login .submit-row { - clear: both; - padding: 1em 0 0 9.4em; - margin: 0; - border: none; - background: none; - text-align: left; -} - -.login .password-reset-link { - text-align: center; -} diff --git a/src/interface/static/admin/css/nav_sidebar.css b/src/interface/static/admin/css/nav_sidebar.css deleted file mode 100644 index d8ca2e2..0000000 --- a/src/interface/static/admin/css/nav_sidebar.css +++ /dev/null @@ -1,112 +0,0 @@ -.sticky { - position: sticky; - top: 0; - max-height: 100vh; -} - -.toggle-nav-sidebar { - z-index: 20; - left: 0; - display: flex; - align-items: center; - justify-content: center; - flex: 0 0 23px; - width: 23px; - border-right: 1px solid #eaeaea; - background-color: #262626; - cursor: pointer; - font-size: 20px; - color: #447e9b; - padding: 0; - display: none !important; -} - -[dir="rtl"] .toggle-nav-sidebar { - border-left: 1px solid #262626; - border-right: 0; -} - -.toggle-nav-sidebar:hover, -.toggle-nav-sidebar:focus { - background-color: #000; -} - -#nav-sidebar { - z-index: 15; - flex: 0 0 275px; - left: -276px; - margin-left: -276px; - border-top: 1px solid transparent; - border-right: 1px solid #eaeaea; - border: 0px; - background-color: #282828; - overflow: auto; -} - -[dir="rtl"] #nav-sidebar { - border-left: 1px solid #eaeaea; - border-right: 0; - left: 0; - margin-left: 0; - right: -276px; - margin-right: -276px; -} - -.toggle-nav-sidebar::before { - content: '\00BB'; -} - -.main.shifted .toggle-nav-sidebar::before { - content: '\00AB'; -} - -.main.shifted > #nav-sidebar { - left: 0px; - margin-left: 0; -} - -[dir="rtl"] .main.shifted > #nav-sidebar { - left: 0; - right: 24px; - margin-right: 0; -} - -#nav-sidebar .module th { - width: 100%; - overflow-wrap: anywhere; -} - -#nav-sidebar .module th, -#nav-sidebar .module caption { - padding-left: 16px; -} - -#nav-sidebar .module td { - white-space: nowrap; -} - -[dir="rtl"] #nav-sidebar .module th, -[dir="rtl"] #nav-sidebar .module caption { - padding-left: 8px; - padding-right: 16px; -} - -#nav-sidebar .current-app .section:link, -#nav-sidebar .current-app .section:visited { - color: #ffc; - font-weight: bold; -} - -#nav-sidebar .current-model { - background: #555555; -} - -@media (max-width: 767px) { - #nav-sidebar, #toggle-nav-sidebar { - display: none; - } -} - -.change-list .main > #nav-sidebar+.content { - overflow: hidden; -} diff --git a/src/interface/static/admin/css/responsive.css b/src/interface/static/admin/css/responsive.css deleted file mode 100644 index e1ce9c2..0000000 --- a/src/interface/static/admin/css/responsive.css +++ /dev/null @@ -1,1016 +0,0 @@ -/* Tablets */ - -input[type="submit"], button { - -webkit-appearance: none; - appearance: none; -} - -@media (max-width: 1024px) { - /* Basic */ - - html { - -webkit-text-size-adjust: 100%; - } - - td, th { - padding: 10px; - font-size: 14px; - } - - .small { - font-size: 12px; - } - - /* Layout */ - - #container { - min-width: 0; - } - - #content { - padding: 20px 30px 30px; - } - - div.breadcrumbs { - padding: 10px 30px; - } - - /* Header */ - - #header { - flex-direction: column; - padding: 15px 30px; - justify-content: flex-start; - } - - #branding h1 { - margin: 0 0 8px; - font-size: 20px; - line-height: 1.2; - } - - #user-tools { - margin: 0; - font-weight: 400; - line-height: 1.85; - text-align: left; - } - - #user-tools a { - display: inline-block; - line-height: 1.4; - } - - /* Dashboard */ - - .dashboard #content { - width: auto; - } - - #content-related { - margin-right: -290px; - } - - .colSM #content-related { - margin-left: -290px; - } - - .colMS { - margin-right: 290px; - } - - .colSM { - margin-left: 290px; - } - - .dashboard .module table td a { - padding-right: 0; - } - - td .changelink, td .addlink { - font-size: 13px; - } - - /* Changelist */ - - #changelist #toolbar { - border: none; - padding: 15px; - } - - #changelist-search > div { - display: flex; - flex-wrap: wrap; - max-width: 480px; - } - - #changelist-search label { - line-height: 22px; - } - - #changelist #toolbar form #searchbar { - flex: 1 0 auto; - width: 0; - height: 22px; - margin: 0 10px 0 6px; - } - - #changelist-search .quiet { - width: 100%; - margin: 5px 0 0 25px; - } - - #changelist .actions { - display: flex; - flex-wrap: wrap; - padding: 15px 0; - } - - #changelist .actions.selected { - border: none; - } - - #changelist .actions label { - display: flex; - } - - #changelist .actions select { - background: #fff; - } - - #changelist .actions .button { - min-width: 48px; - margin: 0 10px; - } - - #changelist .actions span.all, - #changelist .actions span.clear, - #changelist .actions span.question, - #changelist .actions span.action-counter { - font-size: 11px; - margin: 0 10px 0 0; - } - - #changelist-filter { - width: 200px; - } - - .change-list .filtered .results, - .change-list .filtered .paginator, - .filtered #toolbar, - .filtered .actions, - .filtered div.xfull { - margin-right: 230px; - } - - #changelist .paginator { - border-top-color: #eee; - } - - #changelist .results + .paginator { - border-top: none; - } - - /* Forms */ - - label { - font-size: 14px; - } - - .form-row input[type=text], - .form-row input[type=password], - .form-row input[type=email], - .form-row input[type=url], - .form-row input[type=tel], - .form-row input[type=number], - .form-row textarea, - .form-row select, - .form-row .vTextField { - box-sizing: border-box; - margin: 0; - padding: 6px 8px; - min-height: 36px; - font-size: 14px; - } - - .form-row select { - height: 36px; - } - - .form-row select[multiple] { - height: auto; - min-height: 0; - } - - fieldset .fieldBox { - float: none; - margin: 0 -10px; - padding: 0 10px; - } - - fieldset .fieldBox + .fieldBox { - margin-top: 10px; - padding-top: 10px; - border-top: 1px solid #eee; - } - - textarea { - max-width: 518px; - max-height: 120px; - } - - .aligned label { - padding-top: 6px; - } - - .aligned .related-lookup, - .aligned .datetimeshortcuts, - .aligned .related-lookup + strong { - align-self: center; - margin-left: 15px; - } - - form .aligned ul.radiolist { - margin-left: 2px; - } - - /* Related widget */ - - .related-widget-wrapper { - float: none; - } - - .related-widget-wrapper-link + .selector { - max-width: calc(100% - 30px); - margin-right: 15px; - } - - select + .related-widget-wrapper-link, - .related-widget-wrapper-link + .related-widget-wrapper-link { - margin-left: 10px; - } - - /* Selector */ - - .selector { - display: flex; - width: 100%; - } - - .selector .selector-filter { - display: flex; - align-items: center; - } - - .selector .selector-filter label { - margin: 0 8px 0 0; - } - - .selector .selector-filter input { - width: auto; - min-height: 0; - flex: 1 1; - } - - .selector-available, .selector-chosen { - width: auto; - flex: 1 1; - display: flex; - flex-direction: column; - } - - .selector select { - width: 100%; - flex: 1 0 auto; - margin-bottom: 5px; - } - - .selector ul.selector-chooser { - width: 26px; - height: 52px; - padding: 2px 0; - margin: auto 15px; - border-radius: 20px; - transform: translateY(-10px); - } - - .selector-add, .selector-remove { - width: 20px; - height: 20px; - background-size: 20px auto; - } - - .selector-add { - background-position: 0 -120px; - } - - .selector-remove { - background-position: 0 -80px; - } - - a.selector-chooseall, a.selector-clearall { - align-self: center; - } - - .stacked { - flex-direction: column; - max-width: 480px; - } - - .stacked > * { - flex: 0 1 auto; - } - - .stacked select { - margin-bottom: 0; - } - - .stacked .selector-available, .stacked .selector-chosen { - width: auto; - } - - .stacked ul.selector-chooser { - width: 52px; - height: 26px; - padding: 0 2px; - margin: 15px auto; - transform: none; - } - - .stacked .selector-chooser li { - padding: 3px; - } - - .stacked .selector-add, .stacked .selector-remove { - background-size: 20px auto; - } - - .stacked .selector-add { - background-position: 0 -40px; - } - - .stacked .active.selector-add { - background-position: 0 -40px; - } - - .active.selector-add:focus, .active.selector-add:hover { - background-position: 0 -140px; - } - - .stacked .active.selector-add:focus, .stacked .active.selector-add:hover { - background-position: 0 -60px; - } - - .stacked .selector-remove { - background-position: 0 0; - } - - .stacked .active.selector-remove { - background-position: 0 0; - } - - .active.selector-remove:focus, .active.selector-remove:hover { - background-position: 0 -100px; - } - - .stacked .active.selector-remove:focus, .stacked .active.selector-remove:hover { - background-position: 0 -20px; - } - - .help-tooltip, .selector .help-icon { - display: none; - } - - form .form-row p.datetime { - width: 100%; - } - - .datetime input { - width: 50%; - max-width: 120px; - } - - .datetime span { - font-size: 13px; - } - - .datetime .timezonewarning { - display: block; - font-size: 11px; - color: #999; - } - - .datetimeshortcuts { - color: #ccc; - } - - .form-row .datetime input.vDateField, .form-row .datetime input.vTimeField { - width: 75%; - } - - .inline-group { - overflow: auto; - } - - /* Messages */ - - ul.messagelist li { - padding-left: 55px; - background-position: 30px 12px; - } - - ul.messagelist li.error { - background-position: 30px 12px; - } - - ul.messagelist li.warning { - background-position: 30px 14px; - } - - /* Login */ - - .login #header { - padding: 15px 20px; - } - - .login #branding h1 { - margin: 0; - } - - /* GIS */ - - div.olMap { - max-width: calc(100vw - 30px); - max-height: 300px; - } - - .olMap + .clear_features { - display: block; - margin-top: 10px; - } - - /* Docs */ - - .module table.xfull { - width: 100%; - } - - pre.literal-block { - overflow: auto; - } -} - -/* Mobile */ - -@media (max-width: 767px) { - /* Layout */ - - #header, #content, #footer { - padding: 15px; - } - - #footer:empty { - padding: 0; - } - - div.breadcrumbs { - padding: 10px 15px; - } - - /* Dashboard */ - - .colMS, .colSM { - margin: 0; - } - - #content-related, .colSM #content-related { - width: 100%; - margin: 0; - } - - #content-related .module { - margin-bottom: 0; - } - - #content-related .module h2 { - padding: 10px 15px; - font-size: 16px; - } - - /* Changelist */ - - #changelist { - display: flex; - flex-direction: column; - } - - #changelist #toolbar { - order: 1; - padding: 10px; - } - - #changelist .xfull { - order: 2; - } - - #changelist-form { - order: 3; - } - - #changelist-filter { - order: 4; - } - - #changelist .actions label { - flex: 1 1; - } - - #changelist .actions select { - flex: 1 0; - width: 100%; - } - - #changelist .actions span { - flex: 1 0 100%; - } - - .change-list .filtered .results, .change-list .filtered .paginator, - .filtered #toolbar, .filtered .actions, .filtered div.xfull { - margin-right: 0; - } - - #changelist-filter { - position: static; - width: auto; - margin-top: 30px; - } - - .object-tools { - float: none; - margin: 0 0 15px; - padding: 0; - overflow: hidden; - } - - .object-tools li { - height: auto; - margin-left: 0; - } - - .object-tools li + li { - margin-left: 15px; - } - - /* Forms */ - - .form-row { - padding: 15px 0; - } - - .aligned .form-row, - .aligned .form-row > div { - display: flex; - flex-wrap: wrap; - max-width: 100vw; - } - - .aligned .form-row > div { - width: calc(100vw - 30px); - } - - textarea { - max-width: none; - } - - .vURLField { - width: auto; - } - - fieldset .fieldBox + .fieldBox { - margin-top: 15px; - padding-top: 15px; - } - - fieldset.collapsed .form-row { - display: none; - } - - .aligned label { - width: 100%; - padding: 0 0 10px; - } - - .aligned label:after { - max-height: 0; - } - - .aligned .form-row input, - .aligned .form-row select, - .aligned .form-row textarea { - flex: 1 1 auto; - max-width: 100%; - } - - .aligned .checkbox-row { - align-items: center; - } - - .aligned .checkbox-row input { - flex: 0 1 auto; - margin: 0; - } - - .aligned .vCheckboxLabel { - flex: 1 0; - padding: 1px 0 0 5px; - } - - .aligned label + p, - .aligned label + div.help, - .aligned label + div.readonly { - padding: 0; - margin-left: 0; - } - - .aligned p.file-upload { - margin-left: 0; - font-size: 13px; - } - - span.clearable-file-input { - margin-left: 15px; - } - - span.clearable-file-input label { - font-size: 13px; - padding-bottom: 0; - } - - .aligned .timezonewarning { - flex: 1 0 100%; - margin-top: 5px; - } - - form .aligned .form-row div.help { - width: 100%; - margin: 5px 0 0; - padding: 0; - } - - form .aligned ul { - margin-left: 0; - padding-left: 0; - } - - form .aligned ul.radiolist { - margin-right: 15px; - margin-bottom: -3px; - } - - form .aligned ul.radiolist li + li { - margin-top: 5px; - } - - /* Related widget */ - - .related-widget-wrapper { - width: 100%; - display: flex; - align-items: flex-start; - } - - .related-widget-wrapper .selector { - order: 1; - } - - .related-widget-wrapper > a { - order: 2; - } - - .related-widget-wrapper .radiolist ~ a { - align-self: flex-end; - } - - .related-widget-wrapper > select ~ a { - align-self: center; - } - - select + .related-widget-wrapper-link, - .related-widget-wrapper-link + .related-widget-wrapper-link { - margin-left: 15px; - } - - /* Selector */ - - .selector { - flex-direction: column; - } - - .selector > * { - float: none; - } - - .selector-available, .selector-chosen { - margin-bottom: 0; - flex: 1 1 auto; - } - - .selector select { - max-height: 96px; - } - - .selector ul.selector-chooser { - display: block; - float: none; - width: 52px; - height: 26px; - padding: 0 2px; - margin: 15px auto 20px; - transform: none; - } - - .selector ul.selector-chooser li { - float: left; - } - - .selector-remove { - background-position: 0 0; - } - - .active.selector-remove:focus, .active.selector-remove:hover { - background-position: 0 -20px; - } - - .selector-add { - background-position: 0 -40px; - } - - .active.selector-add:focus, .active.selector-add:hover { - background-position: 0 -60px; - } - - /* Inlines */ - - .inline-group[data-inline-type="stacked"] .inline-related { - border: 2px solid #eee; - border-radius: 4px; - margin-top: 15px; - overflow: auto; - } - - .inline-group[data-inline-type="stacked"] .inline-related > * { - box-sizing: border-box; - } - - .inline-group[data-inline-type="stacked"] .inline-related + .inline-related { - margin-top: 30px; - } - - .inline-group[data-inline-type="stacked"] .inline-related .module { - padding: 0 10px; - } - - .inline-group[data-inline-type="stacked"] .inline-related .module .form-row:last-child { - border-bottom: none; - } - - .inline-group[data-inline-type="stacked"] .inline-related h3 { - padding: 10px; - border-top-width: 0; - border-bottom-width: 2px; - display: flex; - flex-wrap: wrap; - align-items: center; - } - - .inline-group[data-inline-type="stacked"] .inline-related h3 .inline_label { - margin-right: auto; - } - - .inline-group[data-inline-type="stacked"] .inline-related h3 span.delete { - float: none; - flex: 1 1 100%; - margin-top: 5px; - } - - .inline-group[data-inline-type="stacked"] .aligned .form-row > div:not([class]) { - width: 100%; - } - - .inline-group[data-inline-type="stacked"] .aligned label { - width: 100%; - } - - .inline-group[data-inline-type="stacked"] div.add-row { - margin-top: 15px; - border: 1px solid #eee; - border-radius: 4px; - } - - .inline-group div.add-row, - .inline-group .tabular tr.add-row td { - padding: 0; - } - - .inline-group div.add-row a, - .inline-group .tabular tr.add-row td a { - display: block; - padding: 8px 10px 8px 26px; - background-position: 8px 9px; - } - - /* Submit row */ - - .submit-row { - padding: 10px 10px 0; - margin: 0 0 15px; - display: flex; - flex-direction: column; - } - - .submit-row > * { - width: 100%; - } - - .submit-row input, .submit-row input.default, .submit-row a, .submit-row a.closelink { - float: none; - margin: 0 0 10px; - text-align: center; - } - - .submit-row a.closelink { - padding: 10px 0; - } - - .submit-row p.deletelink-box { - order: 4; - } - - /* Messages */ - - ul.messagelist li { - padding-left: 40px; - background-position: 15px 12px; - } - - ul.messagelist li.error { - background-position: 15px 12px; - } - - ul.messagelist li.warning { - background-position: 15px 14px; - } - - /* Paginator */ - - .paginator .this-page, .paginator a:link, .paginator a:visited { - padding: 4px 10px; - } - - /* Login */ - - body.login { - padding: 0 15px; - } - - .login #container { - width: auto; - max-width: 480px; - margin: 50px auto; - } - - .login #header, - .login #content { - padding: 15px; - } - - .login #content-main { - float: none; - } - - .login .form-row { - padding: 0; - } - - .login .form-row + .form-row { - margin-top: 15px; - } - - .login .form-row label { - display: block; - margin: 0 0 5px; - padding: 0; - line-height: 1.2; - } - - .login .submit-row { - padding: 15px 0 0; - } - - .login br, .login .submit-row label { - display: none; - } - - .login .submit-row input { - margin: 0; - text-transform: uppercase; - } - - .errornote { - margin: 0 0 20px; - padding: 8px 12px; - font-size: 13px; - } - - /* Calendar and clock */ - - .calendarbox, .clockbox { - position: fixed !important; - top: 50% !important; - left: 50% !important; - transform: translate(-50%, -50%); - margin: 0; - border: none; - overflow: visible; - } - - .calendarbox:before, .clockbox:before { - content: ''; - position: fixed; - top: 50%; - left: 50%; - width: 100vw; - height: 100vh; - background: rgba(0, 0, 0, 0.75); - transform: translate(-50%, -50%); - } - - .calendarbox > *, .clockbox > * { - position: relative; - z-index: 1; - } - - .calendarbox > div:first-child { - z-index: 2; - } - - .calendarbox .calendar, .clockbox h2 { - border-radius: 4px 4px 0 0; - overflow: hidden; - } - - .calendarbox .calendar-cancel, .clockbox .calendar-cancel { - border-radius: 0 0 4px 4px; - overflow: hidden; - } - - .calendar-shortcuts { - padding: 10px 0; - font-size: 12px; - line-height: 12px; - } - - .calendar-shortcuts a { - margin: 0 4px; - } - - .timelist a { - background: #fff; - padding: 4px; - } - - .calendar-cancel { - padding: 8px 10px; - } - - .clockbox h2 { - padding: 8px 15px; - } - - .calendar caption { - padding: 10px; - } - - .calendarbox .calendarnav-previous, .calendarbox .calendarnav-next { - z-index: 1; - top: 10px; - } - - /* History */ - - table#change-history tbody th, table#change-history tbody td { - font-size: 13px; - word-break: break-word; - } - - table#change-history tbody th { - width: auto; - } - - /* Docs */ - - table.model tbody th, table.model tbody td { - font-size: 13px; - word-break: break-word; - } -} diff --git a/src/interface/static/admin/css/responsive_rtl.css b/src/interface/static/admin/css/responsive_rtl.css deleted file mode 100644 index 66fcc3c..0000000 --- a/src/interface/static/admin/css/responsive_rtl.css +++ /dev/null @@ -1,83 +0,0 @@ -/* TABLETS */ - -@media (max-width: 1024px) { - [dir="rtl"] .colMS { - margin-right: 0; - } - - [dir="rtl"] #user-tools { - text-align: right; - } - - [dir="rtl"] #changelist .actions label { - padding-left: 10px; - padding-right: 0; - } - - [dir="rtl"] #changelist .actions select { - margin-left: 0; - margin-right: 15px; - } - - [dir="rtl"] .change-list .filtered .results, - [dir="rtl"] .change-list .filtered .paginator, - [dir="rtl"] .filtered #toolbar, - [dir="rtl"] .filtered div.xfull, - [dir="rtl"] .filtered .actions { - margin-right: 0; - margin-left: 230px; - } - - [dir="rtl"] .inline-group ul.tools a.add, - [dir="rtl"] .inline-group div.add-row a, - [dir="rtl"] .inline-group .tabular tr.add-row td a { - padding: 8px 26px 8px 10px; - background-position: calc(100% - 8px) 9px; - } - - [dir="rtl"] .related-widget-wrapper-link + .selector { - margin-right: 0; - margin-left: 15px; - } - - [dir="rtl"] .selector .selector-filter label { - margin-right: 0; - margin-left: 8px; - } - - [dir="rtl"] .object-tools li { - float: right; - } - - [dir="rtl"] .object-tools li + li { - margin-left: 0; - margin-right: 15px; - } - - [dir="rtl"] .dashboard .module table td a { - padding-left: 0; - padding-right: 16px; - } -} - -/* MOBILE */ - -@media (max-width: 767px) { - [dir="rtl"] .change-list .filtered .results, - [dir="rtl"] .change-list .filtered .paginator, - [dir="rtl"] .filtered #toolbar, - [dir="rtl"] .filtered div.xfull, - [dir="rtl"] .filtered .actions { - margin-left: 0; - } - - [dir="rtl"] .aligned .related-lookup, - [dir="rtl"] .aligned .datetimeshortcuts { - margin-left: 0; - margin-right: 15px; - } - - [dir="rtl"] .aligned ul { - margin-right: 0; - } -} diff --git a/src/interface/static/admin/css/rtl.css b/src/interface/static/admin/css/rtl.css deleted file mode 100644 index f4916d3..0000000 --- a/src/interface/static/admin/css/rtl.css +++ /dev/null @@ -1,259 +0,0 @@ -body { - direction: rtl; -} - -/* LOGIN */ - -.login .form-row { - float: right; -} - -.login .form-row label { - float: right; - padding-left: 0.5em; - padding-right: 0; - text-align: left; -} - -.login .submit-row { - clear: both; - padding: 1em 9.4em 0 0; -} - -/* GLOBAL */ - -th { - text-align: right; -} - -.module h2, .module caption { - text-align: right; -} - -.module ul, .module ol { - margin-left: 0; - margin-right: 1.5em; -} - -.viewlink, .addlink, .changelink { - padding-left: 0; - padding-right: 16px; - background-position: 100% 1px; -} - -.deletelink { - padding-left: 0; - padding-right: 16px; - background-position: 100% 1px; -} - -.object-tools { - float: left; -} - -thead th:first-child, -tfoot td:first-child { - border-left: none; -} - -/* LAYOUT */ - -#user-tools { - right: auto; - left: 0; - text-align: left; -} - -div.breadcrumbs { - text-align: right; -} - -#content-main { - float: right; -} - -#content-related { - float: left; - margin-left: -300px; - margin-right: auto; -} - -.colMS { - margin-left: 300px; - margin-right: 0; -} - -/* SORTABLE TABLES */ - -table thead th.sorted .sortoptions { - float: left; -} - -thead th.sorted .text { - padding-right: 0; - padding-left: 42px; -} - -/* dashboard styles */ - -.dashboard .module table td a { - padding-left: .6em; - padding-right: 16px; -} - -/* changelists styles */ - -.change-list .filtered table { - border-left: none; - border-right: 0px none; -} - -#changelist-filter { - right: auto; - left: 0; - border-left: none; - border-right: none; -} - -.change-list .filtered .results, .change-list .filtered .paginator, .filtered #toolbar, .filtered div.xfull { - margin-right: 0; - margin-left: 280px; -} - -#changelist-filter li.selected { - border-left: none; - padding-left: 10px; - margin-left: 0; - border-right: 5px solid #eaeaea; - padding-right: 10px; - margin-right: -15px; -} - -.filtered .actions { - margin-left: 280px; - margin-right: 0; -} - -#changelist table tbody td:first-child, #changelist table tbody th:first-child { - border-right: none; - border-left: none; -} - -/* FORMS */ - -.aligned label { - padding: 0 0 3px 1em; - float: right; -} - -.submit-row { - text-align: left -} - -.submit-row p.deletelink-box { - float: right; -} - -.submit-row input.default { - margin-left: 0; -} - -.vDateField, .vTimeField { - margin-left: 2px; -} - -.aligned .form-row input { - margin-left: 5px; -} - -form .aligned p.help, form .aligned div.help { - clear: right; -} - -form .aligned ul { - margin-right: 163px; - margin-left: 0; -} - -form ul.inline li { - float: right; - padding-right: 0; - padding-left: 7px; -} - -input[type=submit].default, .submit-row input.default { - float: left; -} - -fieldset .fieldBox { - float: right; - margin-left: 20px; - margin-right: 0; -} - -.errorlist li { - background-position: 100% 12px; - padding: 0; -} - -.errornote { - background-position: 100% 12px; - padding: 10px 12px; -} - -/* WIDGETS */ - -.calendarnav-previous { - top: 0; - left: auto; - right: 10px; -} - -.calendarnav-next { - top: 0; - right: auto; - left: 10px; -} - -.calendar caption, .calendarbox h2 { - text-align: center; -} - -.selector { - float: right; -} - -.selector .selector-filter { - text-align: right; -} - -.inline-deletelink { - float: left; -} - -form .form-row p.datetime { - overflow: hidden; -} - -.related-widget-wrapper { - float: right; -} - -/* MISC */ - -.inline-related h2, .inline-group h2 { - text-align: right -} - -.inline-related h3 span.delete { - padding-right: 20px; - padding-left: inherit; - left: 10px; - right: inherit; - float:left; -} - -.inline-related h3 span.delete label { - margin-left: inherit; - margin-right: 2px; -} diff --git a/src/interface/static/admin/css/vendor/select2/LICENSE-SELECT2.md b/src/interface/static/admin/css/vendor/select2/LICENSE-SELECT2.md deleted file mode 100644 index 8cb8a2b..0000000 --- a/src/interface/static/admin/css/vendor/select2/LICENSE-SELECT2.md +++ /dev/null @@ -1,21 +0,0 @@ -The MIT License (MIT) - -Copyright (c) 2012-2017 Kevin Brown, Igor Vaynberg, and Select2 contributors - -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/src/interface/static/admin/css/vendor/select2/select2.css b/src/interface/static/admin/css/vendor/select2/select2.css deleted file mode 100644 index 750b320..0000000 --- a/src/interface/static/admin/css/vendor/select2/select2.css +++ /dev/null @@ -1,481 +0,0 @@ -.select2-container { - box-sizing: border-box; - display: inline-block; - margin: 0; - position: relative; - vertical-align: middle; } - .select2-container .select2-selection--single { - box-sizing: border-box; - cursor: pointer; - display: block; - height: 28px; - user-select: none; - -webkit-user-select: none; } - .select2-container .select2-selection--single .select2-selection__rendered { - display: block; - padding-left: 8px; - padding-right: 20px; - overflow: hidden; - text-overflow: ellipsis; - white-space: nowrap; } - .select2-container .select2-selection--single .select2-selection__clear { - position: relative; } - .select2-container[dir="rtl"] .select2-selection--single .select2-selection__rendered { - padding-right: 8px; - padding-left: 20px; } - .select2-container .select2-selection--multiple { - box-sizing: border-box; - cursor: pointer; - display: block; - min-height: 32px; - user-select: none; - -webkit-user-select: none; } - .select2-container .select2-selection--multiple .select2-selection__rendered { - display: inline-block; - overflow: hidden; - padding-left: 8px; - text-overflow: ellipsis; - white-space: nowrap; } - .select2-container .select2-search--inline { - float: left; } - .select2-container .select2-search--inline .select2-search__field { - box-sizing: border-box; - border: none; - font-size: 100%; - margin-top: 5px; - padding: 0; } - .select2-container .select2-search--inline .select2-search__field::-webkit-search-cancel-button { - -webkit-appearance: none; } - -.select2-dropdown { - background-color: white; - border: 1px solid #aaa; - border-radius: 4px; - box-sizing: border-box; - display: block; - position: absolute; - left: -100000px; - width: 100%; - z-index: 1051; } - -.select2-results { - display: block; } - -.select2-results__options { - list-style: none; - margin: 0; - padding: 0; } - -.select2-results__option { - padding: 6px; - user-select: none; - -webkit-user-select: none; } - .select2-results__option[aria-selected] { - cursor: pointer; } - -.select2-container--open .select2-dropdown { - left: 0; } - -.select2-container--open .select2-dropdown--above { - border-bottom: none; - border-bottom-left-radius: 0; - border-bottom-right-radius: 0; } - -.select2-container--open .select2-dropdown--below { - border-top: none; - border-top-left-radius: 0; - border-top-right-radius: 0; } - -.select2-search--dropdown { - display: block; - padding: 4px; } - .select2-search--dropdown .select2-search__field { - padding: 4px; - width: 100%; - box-sizing: border-box; } - .select2-search--dropdown .select2-search__field::-webkit-search-cancel-button { - -webkit-appearance: none; } - .select2-search--dropdown.select2-search--hide { - display: none; } - -.select2-close-mask { - border: 0; - margin: 0; - padding: 0; - display: block; - position: fixed; - left: 0; - top: 0; - min-height: 100%; - min-width: 100%; - height: auto; - width: auto; - opacity: 0; - z-index: 99; - background-color: #fff; - filter: alpha(opacity=0); } - -.select2-hidden-accessible { - border: 0 !important; - clip: rect(0 0 0 0) !important; - -webkit-clip-path: inset(50%) !important; - clip-path: inset(50%) !important; - height: 1px !important; - overflow: hidden !important; - padding: 0 !important; - position: absolute !important; - width: 1px !important; - white-space: nowrap !important; } - -.select2-container--default .select2-selection--single { - background-color: #fff; - border: 1px solid #aaa; - border-radius: 4px; } - .select2-container--default .select2-selection--single .select2-selection__rendered { - color: #444; - line-height: 28px; } - .select2-container--default .select2-selection--single .select2-selection__clear { - cursor: pointer; - float: right; - font-weight: bold; } - .select2-container--default .select2-selection--single .select2-selection__placeholder { - color: #999; } - .select2-container--default .select2-selection--single .select2-selection__arrow { - height: 26px; - position: absolute; - top: 1px; - right: 1px; - width: 20px; } - .select2-container--default .select2-selection--single .select2-selection__arrow b { - border-color: #888 transparent transparent transparent; - border-style: solid; - border-width: 5px 4px 0 4px; - height: 0; - left: 50%; - margin-left: -4px; - margin-top: -2px; - position: absolute; - top: 50%; - width: 0; } - -.select2-container--default[dir="rtl"] .select2-selection--single .select2-selection__clear { - float: left; } - -.select2-container--default[dir="rtl"] .select2-selection--single .select2-selection__arrow { - left: 1px; - right: auto; } - -.select2-container--default.select2-container--disabled .select2-selection--single { - background-color: #eee; - cursor: default; } - .select2-container--default.select2-container--disabled .select2-selection--single .select2-selection__clear { - display: none; } - -.select2-container--default.select2-container--open .select2-selection--single .select2-selection__arrow b { - border-color: transparent transparent #888 transparent; - border-width: 0 4px 5px 4px; } - -.select2-container--default .select2-selection--multiple { - background-color: white; - border: 1px solid #aaa; - border-radius: 4px; - cursor: text; } - .select2-container--default .select2-selection--multiple .select2-selection__rendered { - box-sizing: border-box; - list-style: none; - margin: 0; - padding: 0 5px; - width: 100%; } - .select2-container--default .select2-selection--multiple .select2-selection__rendered li { - list-style: none; } - .select2-container--default .select2-selection--multiple .select2-selection__clear { - cursor: pointer; - float: right; - font-weight: bold; - margin-top: 5px; - margin-right: 10px; - padding: 1px; } - .select2-container--default .select2-selection--multiple .select2-selection__choice { - background-color: #e4e4e4; - border: 1px solid #aaa; - border-radius: 4px; - cursor: default; - float: left; - margin-right: 5px; - margin-top: 5px; - padding: 0 5px; } - .select2-container--default .select2-selection--multiple .select2-selection__choice__remove { - color: #999; - cursor: pointer; - display: inline-block; - font-weight: bold; - margin-right: 2px; } - .select2-container--default .select2-selection--multiple .select2-selection__choice__remove:hover { - color: #333; } - -.select2-container--default[dir="rtl"] .select2-selection--multiple .select2-selection__choice, .select2-container--default[dir="rtl"] .select2-selection--multiple .select2-search--inline { - float: right; } - -.select2-container--default[dir="rtl"] .select2-selection--multiple .select2-selection__choice { - margin-left: 5px; - margin-right: auto; } - -.select2-container--default[dir="rtl"] .select2-selection--multiple .select2-selection__choice__remove { - margin-left: 2px; - margin-right: auto; } - -.select2-container--default.select2-container--focus .select2-selection--multiple { - border: solid black 1px; - outline: 0; } - -.select2-container--default.select2-container--disabled .select2-selection--multiple { - background-color: #eee; - cursor: default; } - -.select2-container--default.select2-container--disabled .select2-selection__choice__remove { - display: none; } - -.select2-container--default.select2-container--open.select2-container--above .select2-selection--single, .select2-container--default.select2-container--open.select2-container--above .select2-selection--multiple { - border-top-left-radius: 0; - border-top-right-radius: 0; } - -.select2-container--default.select2-container--open.select2-container--below .select2-selection--single, .select2-container--default.select2-container--open.select2-container--below .select2-selection--multiple { - border-bottom-left-radius: 0; - border-bottom-right-radius: 0; } - -.select2-container--default .select2-search--dropdown .select2-search__field { - border: 1px solid #aaa; } - -.select2-container--default .select2-search--inline .select2-search__field { - background: transparent; - border: none; - outline: 0; - box-shadow: none; - -webkit-appearance: textfield; } - -.select2-container--default .select2-results > .select2-results__options { - max-height: 200px; - overflow-y: auto; } - -.select2-container--default .select2-results__option[role=group] { - padding: 0; } - -.select2-container--default .select2-results__option[aria-disabled=true] { - color: #999; } - -.select2-container--default .select2-results__option[aria-selected=true] { - background-color: #ddd; } - -.select2-container--default .select2-results__option .select2-results__option { - padding-left: 1em; } - .select2-container--default .select2-results__option .select2-results__option .select2-results__group { - padding-left: 0; } - .select2-container--default .select2-results__option .select2-results__option .select2-results__option { - margin-left: -1em; - padding-left: 2em; } - .select2-container--default .select2-results__option .select2-results__option .select2-results__option .select2-results__option { - margin-left: -2em; - padding-left: 3em; } - .select2-container--default .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option { - margin-left: -3em; - padding-left: 4em; } - .select2-container--default .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option { - margin-left: -4em; - padding-left: 5em; } - .select2-container--default .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option { - margin-left: -5em; - padding-left: 6em; } - -.select2-container--default .select2-results__option--highlighted[aria-selected] { - background-color: #5897fb; - color: white; } - -.select2-container--default .select2-results__group { - cursor: default; - display: block; - padding: 6px; } - -.select2-container--classic .select2-selection--single { - background-color: #f7f7f7; - border: 1px solid #aaa; - border-radius: 4px; - outline: 0; - background-image: -webkit-linear-gradient(top, white 50%, #eeeeee 100%); - background-image: -o-linear-gradient(top, white 50%, #eeeeee 100%); - background-image: linear-gradient(to bottom, white 50%, #eeeeee 100%); - background-repeat: repeat-x; - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#FFFFFFFF', endColorstr='#FFEEEEEE', GradientType=0); } - .select2-container--classic .select2-selection--single:focus { - border: 1px solid #5897fb; } - .select2-container--classic .select2-selection--single .select2-selection__rendered { - color: #444; - line-height: 28px; } - .select2-container--classic .select2-selection--single .select2-selection__clear { - cursor: pointer; - float: right; - font-weight: bold; - margin-right: 10px; } - .select2-container--classic .select2-selection--single .select2-selection__placeholder { - color: #999; } - .select2-container--classic .select2-selection--single .select2-selection__arrow { - background-color: #ddd; - border: none; - border-left: 1px solid #aaa; - border-top-right-radius: 4px; - border-bottom-right-radius: 4px; - height: 26px; - position: absolute; - top: 1px; - right: 1px; - width: 20px; - background-image: -webkit-linear-gradient(top, #eeeeee 50%, #cccccc 100%); - background-image: -o-linear-gradient(top, #eeeeee 50%, #cccccc 100%); - background-image: linear-gradient(to bottom, #eeeeee 50%, #cccccc 100%); - background-repeat: repeat-x; - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#FFEEEEEE', endColorstr='#FFCCCCCC', GradientType=0); } - .select2-container--classic .select2-selection--single .select2-selection__arrow b { - border-color: #888 transparent transparent transparent; - border-style: solid; - border-width: 5px 4px 0 4px; - height: 0; - left: 50%; - margin-left: -4px; - margin-top: -2px; - position: absolute; - top: 50%; - width: 0; } - -.select2-container--classic[dir="rtl"] .select2-selection--single .select2-selection__clear { - float: left; } - -.select2-container--classic[dir="rtl"] .select2-selection--single .select2-selection__arrow { - border: none; - border-right: 1px solid #aaa; - border-radius: 0; - border-top-left-radius: 4px; - border-bottom-left-radius: 4px; - left: 1px; - right: auto; } - -.select2-container--classic.select2-container--open .select2-selection--single { - border: 1px solid #5897fb; } - .select2-container--classic.select2-container--open .select2-selection--single .select2-selection__arrow { - background: transparent; - border: none; } - .select2-container--classic.select2-container--open .select2-selection--single .select2-selection__arrow b { - border-color: transparent transparent #888 transparent; - border-width: 0 4px 5px 4px; } - -.select2-container--classic.select2-container--open.select2-container--above .select2-selection--single { - border-top: none; - border-top-left-radius: 0; - border-top-right-radius: 0; - background-image: -webkit-linear-gradient(top, white 0%, #eeeeee 50%); - background-image: -o-linear-gradient(top, white 0%, #eeeeee 50%); - background-image: linear-gradient(to bottom, white 0%, #eeeeee 50%); - background-repeat: repeat-x; - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#FFFFFFFF', endColorstr='#FFEEEEEE', GradientType=0); } - -.select2-container--classic.select2-container--open.select2-container--below .select2-selection--single { - border-bottom: none; - border-bottom-left-radius: 0; - border-bottom-right-radius: 0; - background-image: -webkit-linear-gradient(top, #eeeeee 50%, white 100%); - background-image: -o-linear-gradient(top, #eeeeee 50%, white 100%); - background-image: linear-gradient(to bottom, #eeeeee 50%, white 100%); - background-repeat: repeat-x; - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#FFEEEEEE', endColorstr='#FFFFFFFF', GradientType=0); } - -.select2-container--classic .select2-selection--multiple { - background-color: white; - border: 1px solid #aaa; - border-radius: 4px; - cursor: text; - outline: 0; } - .select2-container--classic .select2-selection--multiple:focus { - border: 1px solid #5897fb; } - .select2-container--classic .select2-selection--multiple .select2-selection__rendered { - list-style: none; - margin: 0; - padding: 0 5px; } - .select2-container--classic .select2-selection--multiple .select2-selection__clear { - display: none; } - .select2-container--classic .select2-selection--multiple .select2-selection__choice { - background-color: #e4e4e4; - border: 1px solid #aaa; - border-radius: 4px; - cursor: default; - float: left; - margin-right: 5px; - margin-top: 5px; - padding: 0 5px; } - .select2-container--classic .select2-selection--multiple .select2-selection__choice__remove { - color: #888; - cursor: pointer; - display: inline-block; - font-weight: bold; - margin-right: 2px; } - .select2-container--classic .select2-selection--multiple .select2-selection__choice__remove:hover { - color: #555; } - -.select2-container--classic[dir="rtl"] .select2-selection--multiple .select2-selection__choice { - float: right; - margin-left: 5px; - margin-right: auto; } - -.select2-container--classic[dir="rtl"] .select2-selection--multiple .select2-selection__choice__remove { - margin-left: 2px; - margin-right: auto; } - -.select2-container--classic.select2-container--open .select2-selection--multiple { - border: 1px solid #5897fb; } - -.select2-container--classic.select2-container--open.select2-container--above .select2-selection--multiple { - border-top: none; - border-top-left-radius: 0; - border-top-right-radius: 0; } - -.select2-container--classic.select2-container--open.select2-container--below .select2-selection--multiple { - border-bottom: none; - border-bottom-left-radius: 0; - border-bottom-right-radius: 0; } - -.select2-container--classic .select2-search--dropdown .select2-search__field { - border: 1px solid #aaa; - outline: 0; } - -.select2-container--classic .select2-search--inline .select2-search__field { - outline: 0; - box-shadow: none; } - -.select2-container--classic .select2-dropdown { - background-color: white; - border: 1px solid transparent; } - -.select2-container--classic .select2-dropdown--above { - border-bottom: none; } - -.select2-container--classic .select2-dropdown--below { - border-top: none; } - -.select2-container--classic .select2-results > .select2-results__options { - max-height: 200px; - overflow-y: auto; } - -.select2-container--classic .select2-results__option[role=group] { - padding: 0; } - -.select2-container--classic .select2-results__option[aria-disabled=true] { - color: grey; } - -.select2-container--classic .select2-results__option--highlighted[aria-selected] { - background-color: #3875d7; - color: white; } - -.select2-container--classic .select2-results__group { - cursor: default; - display: block; - padding: 6px; } - -.select2-container--classic.select2-container--open .select2-dropdown { - border-color: #5897fb; } diff --git a/src/interface/static/admin/css/vendor/select2/select2.min.css b/src/interface/static/admin/css/vendor/select2/select2.min.css deleted file mode 100644 index 7c18ad5..0000000 --- a/src/interface/static/admin/css/vendor/select2/select2.min.css +++ /dev/null @@ -1 +0,0 @@ -.select2-container{box-sizing:border-box;display:inline-block;margin:0;position:relative;vertical-align:middle}.select2-container .select2-selection--single{box-sizing:border-box;cursor:pointer;display:block;height:28px;user-select:none;-webkit-user-select:none}.select2-container .select2-selection--single .select2-selection__rendered{display:block;padding-left:8px;padding-right:20px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.select2-container .select2-selection--single .select2-selection__clear{position:relative}.select2-container[dir="rtl"] .select2-selection--single .select2-selection__rendered{padding-right:8px;padding-left:20px}.select2-container .select2-selection--multiple{box-sizing:border-box;cursor:pointer;display:block;min-height:32px;user-select:none;-webkit-user-select:none}.select2-container .select2-selection--multiple .select2-selection__rendered{display:inline-block;overflow:hidden;padding-left:8px;text-overflow:ellipsis;white-space:nowrap}.select2-container .select2-search--inline{float:left}.select2-container .select2-search--inline .select2-search__field{box-sizing:border-box;border:none;font-size:100%;margin-top:5px;padding:0}.select2-container .select2-search--inline .select2-search__field::-webkit-search-cancel-button{-webkit-appearance:none}.select2-dropdown{background-color:white;border:1px solid #aaa;border-radius:4px;box-sizing:border-box;display:block;position:absolute;left:-100000px;width:100%;z-index:1051}.select2-results{display:block}.select2-results__options{list-style:none;margin:0;padding:0}.select2-results__option{padding:6px;user-select:none;-webkit-user-select:none}.select2-results__option[aria-selected]{cursor:pointer}.select2-container--open .select2-dropdown{left:0}.select2-container--open .select2-dropdown--above{border-bottom:none;border-bottom-left-radius:0;border-bottom-right-radius:0}.select2-container--open .select2-dropdown--below{border-top:none;border-top-left-radius:0;border-top-right-radius:0}.select2-search--dropdown{display:block;padding:4px}.select2-search--dropdown .select2-search__field{padding:4px;width:100%;box-sizing:border-box}.select2-search--dropdown .select2-search__field::-webkit-search-cancel-button{-webkit-appearance:none}.select2-search--dropdown.select2-search--hide{display:none}.select2-close-mask{border:0;margin:0;padding:0;display:block;position:fixed;left:0;top:0;min-height:100%;min-width:100%;height:auto;width:auto;opacity:0;z-index:99;background-color:#fff;filter:alpha(opacity=0)}.select2-hidden-accessible{border:0 !important;clip:rect(0 0 0 0) !important;-webkit-clip-path:inset(50%) !important;clip-path:inset(50%) !important;height:1px !important;overflow:hidden !important;padding:0 !important;position:absolute !important;width:1px !important;white-space:nowrap !important}.select2-container--default .select2-selection--single{background-color:#fff;border:1px solid #aaa;border-radius:4px}.select2-container--default .select2-selection--single .select2-selection__rendered{color:#444;line-height:28px}.select2-container--default .select2-selection--single .select2-selection__clear{cursor:pointer;float:right;font-weight:bold}.select2-container--default .select2-selection--single .select2-selection__placeholder{color:#999}.select2-container--default .select2-selection--single .select2-selection__arrow{height:26px;position:absolute;top:1px;right:1px;width:20px}.select2-container--default .select2-selection--single .select2-selection__arrow b{border-color:#888 transparent transparent transparent;border-style:solid;border-width:5px 4px 0 4px;height:0;left:50%;margin-left:-4px;margin-top:-2px;position:absolute;top:50%;width:0}.select2-container--default[dir="rtl"] .select2-selection--single .select2-selection__clear{float:left}.select2-container--default[dir="rtl"] .select2-selection--single .select2-selection__arrow{left:1px;right:auto}.select2-container--default.select2-container--disabled .select2-selection--single{background-color:#eee;cursor:default}.select2-container--default.select2-container--disabled .select2-selection--single .select2-selection__clear{display:none}.select2-container--default.select2-container--open .select2-selection--single .select2-selection__arrow b{border-color:transparent transparent #888 transparent;border-width:0 4px 5px 4px}.select2-container--default .select2-selection--multiple{background-color:white;border:1px solid #aaa;border-radius:4px;cursor:text}.select2-container--default .select2-selection--multiple .select2-selection__rendered{box-sizing:border-box;list-style:none;margin:0;padding:0 5px;width:100%}.select2-container--default .select2-selection--multiple .select2-selection__rendered li{list-style:none}.select2-container--default .select2-selection--multiple .select2-selection__clear{cursor:pointer;float:right;font-weight:bold;margin-top:5px;margin-right:10px;padding:1px}.select2-container--default .select2-selection--multiple .select2-selection__choice{background-color:#e4e4e4;border:1px solid #aaa;border-radius:4px;cursor:default;float:left;margin-right:5px;margin-top:5px;padding:0 5px}.select2-container--default .select2-selection--multiple .select2-selection__choice__remove{color:#999;cursor:pointer;display:inline-block;font-weight:bold;margin-right:2px}.select2-container--default .select2-selection--multiple .select2-selection__choice__remove:hover{color:#333}.select2-container--default[dir="rtl"] .select2-selection--multiple .select2-selection__choice,.select2-container--default[dir="rtl"] .select2-selection--multiple .select2-search--inline{float:right}.select2-container--default[dir="rtl"] .select2-selection--multiple .select2-selection__choice{margin-left:5px;margin-right:auto}.select2-container--default[dir="rtl"] .select2-selection--multiple .select2-selection__choice__remove{margin-left:2px;margin-right:auto}.select2-container--default.select2-container--focus .select2-selection--multiple{border:solid black 1px;outline:0}.select2-container--default.select2-container--disabled .select2-selection--multiple{background-color:#eee;cursor:default}.select2-container--default.select2-container--disabled .select2-selection__choice__remove{display:none}.select2-container--default.select2-container--open.select2-container--above .select2-selection--single,.select2-container--default.select2-container--open.select2-container--above .select2-selection--multiple{border-top-left-radius:0;border-top-right-radius:0}.select2-container--default.select2-container--open.select2-container--below .select2-selection--single,.select2-container--default.select2-container--open.select2-container--below .select2-selection--multiple{border-bottom-left-radius:0;border-bottom-right-radius:0}.select2-container--default .select2-search--dropdown .select2-search__field{border:1px solid #aaa}.select2-container--default .select2-search--inline .select2-search__field{background:transparent;border:none;outline:0;box-shadow:none;-webkit-appearance:textfield}.select2-container--default .select2-results>.select2-results__options{max-height:200px;overflow-y:auto}.select2-container--default .select2-results__option[role=group]{padding:0}.select2-container--default .select2-results__option[aria-disabled=true]{color:#999}.select2-container--default .select2-results__option[aria-selected=true]{background-color:#ddd}.select2-container--default .select2-results__option .select2-results__option{padding-left:1em}.select2-container--default .select2-results__option .select2-results__option .select2-results__group{padding-left:0}.select2-container--default .select2-results__option .select2-results__option .select2-results__option{margin-left:-1em;padding-left:2em}.select2-container--default .select2-results__option .select2-results__option .select2-results__option .select2-results__option{margin-left:-2em;padding-left:3em}.select2-container--default .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option{margin-left:-3em;padding-left:4em}.select2-container--default .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option{margin-left:-4em;padding-left:5em}.select2-container--default .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option{margin-left:-5em;padding-left:6em}.select2-container--default .select2-results__option--highlighted[aria-selected]{background-color:#5897fb;color:white}.select2-container--default .select2-results__group{cursor:default;display:block;padding:6px}.select2-container--classic .select2-selection--single{background-color:#f7f7f7;border:1px solid #aaa;border-radius:4px;outline:0;background-image:-webkit-linear-gradient(top, #fff 50%, #eee 100%);background-image:-o-linear-gradient(top, #fff 50%, #eee 100%);background-image:linear-gradient(to bottom, #fff 50%, #eee 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#FFFFFFFF', endColorstr='#FFEEEEEE', GradientType=0)}.select2-container--classic .select2-selection--single:focus{border:1px solid #5897fb}.select2-container--classic .select2-selection--single .select2-selection__rendered{color:#444;line-height:28px}.select2-container--classic .select2-selection--single .select2-selection__clear{cursor:pointer;float:right;font-weight:bold;margin-right:10px}.select2-container--classic .select2-selection--single .select2-selection__placeholder{color:#999}.select2-container--classic .select2-selection--single .select2-selection__arrow{background-color:#ddd;border:none;border-left:1px solid #aaa;border-top-right-radius:4px;border-bottom-right-radius:4px;height:26px;position:absolute;top:1px;right:1px;width:20px;background-image:-webkit-linear-gradient(top, #eee 50%, #ccc 100%);background-image:-o-linear-gradient(top, #eee 50%, #ccc 100%);background-image:linear-gradient(to bottom, #eee 50%, #ccc 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#FFEEEEEE', endColorstr='#FFCCCCCC', GradientType=0)}.select2-container--classic .select2-selection--single .select2-selection__arrow b{border-color:#888 transparent transparent transparent;border-style:solid;border-width:5px 4px 0 4px;height:0;left:50%;margin-left:-4px;margin-top:-2px;position:absolute;top:50%;width:0}.select2-container--classic[dir="rtl"] .select2-selection--single .select2-selection__clear{float:left}.select2-container--classic[dir="rtl"] .select2-selection--single .select2-selection__arrow{border:none;border-right:1px solid #aaa;border-radius:0;border-top-left-radius:4px;border-bottom-left-radius:4px;left:1px;right:auto}.select2-container--classic.select2-container--open .select2-selection--single{border:1px solid #5897fb}.select2-container--classic.select2-container--open .select2-selection--single .select2-selection__arrow{background:transparent;border:none}.select2-container--classic.select2-container--open .select2-selection--single .select2-selection__arrow b{border-color:transparent transparent #888 transparent;border-width:0 4px 5px 4px}.select2-container--classic.select2-container--open.select2-container--above .select2-selection--single{border-top:none;border-top-left-radius:0;border-top-right-radius:0;background-image:-webkit-linear-gradient(top, #fff 0%, #eee 50%);background-image:-o-linear-gradient(top, #fff 0%, #eee 50%);background-image:linear-gradient(to bottom, #fff 0%, #eee 50%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#FFFFFFFF', endColorstr='#FFEEEEEE', GradientType=0)}.select2-container--classic.select2-container--open.select2-container--below .select2-selection--single{border-bottom:none;border-bottom-left-radius:0;border-bottom-right-radius:0;background-image:-webkit-linear-gradient(top, #eee 50%, #fff 100%);background-image:-o-linear-gradient(top, #eee 50%, #fff 100%);background-image:linear-gradient(to bottom, #eee 50%, #fff 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#FFEEEEEE', endColorstr='#FFFFFFFF', GradientType=0)}.select2-container--classic .select2-selection--multiple{background-color:white;border:1px solid #aaa;border-radius:4px;cursor:text;outline:0}.select2-container--classic .select2-selection--multiple:focus{border:1px solid #5897fb}.select2-container--classic .select2-selection--multiple .select2-selection__rendered{list-style:none;margin:0;padding:0 5px}.select2-container--classic .select2-selection--multiple .select2-selection__clear{display:none}.select2-container--classic .select2-selection--multiple .select2-selection__choice{background-color:#e4e4e4;border:1px solid #aaa;border-radius:4px;cursor:default;float:left;margin-right:5px;margin-top:5px;padding:0 5px}.select2-container--classic .select2-selection--multiple .select2-selection__choice__remove{color:#888;cursor:pointer;display:inline-block;font-weight:bold;margin-right:2px}.select2-container--classic .select2-selection--multiple .select2-selection__choice__remove:hover{color:#555}.select2-container--classic[dir="rtl"] .select2-selection--multiple .select2-selection__choice{float:right;margin-left:5px;margin-right:auto}.select2-container--classic[dir="rtl"] .select2-selection--multiple .select2-selection__choice__remove{margin-left:2px;margin-right:auto}.select2-container--classic.select2-container--open .select2-selection--multiple{border:1px solid #5897fb}.select2-container--classic.select2-container--open.select2-container--above .select2-selection--multiple{border-top:none;border-top-left-radius:0;border-top-right-radius:0}.select2-container--classic.select2-container--open.select2-container--below .select2-selection--multiple{border-bottom:none;border-bottom-left-radius:0;border-bottom-right-radius:0}.select2-container--classic .select2-search--dropdown .select2-search__field{border:1px solid #aaa;outline:0}.select2-container--classic .select2-search--inline .select2-search__field{outline:0;box-shadow:none}.select2-container--classic .select2-dropdown{background-color:#fff;border:1px solid transparent}.select2-container--classic .select2-dropdown--above{border-bottom:none}.select2-container--classic .select2-dropdown--below{border-top:none}.select2-container--classic .select2-results>.select2-results__options{max-height:200px;overflow-y:auto}.select2-container--classic .select2-results__option[role=group]{padding:0}.select2-container--classic .select2-results__option[aria-disabled=true]{color:grey}.select2-container--classic .select2-results__option--highlighted[aria-selected]{background-color:#3875d7;color:#fff}.select2-container--classic .select2-results__group{cursor:default;display:block;padding:6px}.select2-container--classic.select2-container--open .select2-dropdown{border-color:#5897fb} diff --git a/src/interface/static/admin/css/widgets.css b/src/interface/static/admin/css/widgets.css deleted file mode 100644 index 14ef12d..0000000 --- a/src/interface/static/admin/css/widgets.css +++ /dev/null @@ -1,574 +0,0 @@ -/* SELECTOR (FILTER INTERFACE) */ - -.selector { - width: 800px; - float: left; -} - -.selector select { - width: 380px; - height: 17.2em; -} - -.selector-available, .selector-chosen { - float: left; - width: 380px; - text-align: center; - margin-bottom: 5px; -} - -.selector-chosen select { - border-top: none; -} - -.selector-available h2, .selector-chosen h2 { - border: 1px solid #ccc; - border-radius: 4px 4px 0 0; -} - -.selector-chosen h2 { - background: #79aec8; - color: #fff; -} - -.selector .selector-available h2 { - background: #f8f8f8; - color: #666; -} - -.selector .selector-filter { - background: white; - border: 1px solid #ccc; - border-width: 0 1px; - padding: 8px; - color: #999; - font-size: 10px; - margin: 0; - text-align: left; -} - -.selector .selector-filter label, -.inline-group .aligned .selector .selector-filter label { - float: left; - margin: 7px 0 0; - width: 18px; - height: 18px; - padding: 0; - overflow: hidden; - line-height: 1; -} - -.selector .selector-available input { - width: 320px; - margin-left: 8px; -} - -.selector ul.selector-chooser { - float: left; - width: 22px; - background-color: #eee; - border-radius: 10px; - margin: 10em 5px 0 5px; - padding: 0; -} - -.selector-chooser li { - margin: 0; - padding: 3px; - list-style-type: none; -} - -.selector select { - padding: 0 10px; - margin: 0 0 10px; - border-radius: 0 0 4px 4px; -} - -.selector-add, .selector-remove { - width: 16px; - height: 16px; - display: block; - text-indent: -3000px; - overflow: hidden; - cursor: default; - opacity: 0.3; -} - -.active.selector-add, .active.selector-remove { - opacity: 1; -} - -.active.selector-add:hover, .active.selector-remove:hover { - cursor: pointer; -} - -.selector-add { - background: url(../img/selector-icons.svg) 0 -96px no-repeat; -} - -.active.selector-add:focus, .active.selector-add:hover { - background-position: 0 -112px; -} - -.selector-remove { - background: url(../img/selector-icons.svg) 0 -64px no-repeat; -} - -.active.selector-remove:focus, .active.selector-remove:hover { - background-position: 0 -80px; -} - -a.selector-chooseall, a.selector-clearall { - display: inline-block; - height: 16px; - text-align: left; - margin: 1px auto 3px; - overflow: hidden; - font-weight: bold; - line-height: 16px; - color: #666; - text-decoration: none; - opacity: 0.3; -} - -a.active.selector-chooseall:focus, a.active.selector-clearall:focus, -a.active.selector-chooseall:hover, a.active.selector-clearall:hover { - color: #447e9b; -} - -a.active.selector-chooseall, a.active.selector-clearall { - opacity: 1; -} - -a.active.selector-chooseall:hover, a.active.selector-clearall:hover { - cursor: pointer; -} - -a.selector-chooseall { - padding: 0 18px 0 0; - background: url(../img/selector-icons.svg) right -160px no-repeat; - cursor: default; -} - -a.active.selector-chooseall:focus, a.active.selector-chooseall:hover { - background-position: 100% -176px; -} - -a.selector-clearall { - padding: 0 0 0 18px; - background: url(../img/selector-icons.svg) 0 -128px no-repeat; - cursor: default; -} - -a.active.selector-clearall:focus, a.active.selector-clearall:hover { - background-position: 0 -144px; -} - -/* STACKED SELECTORS */ - -.stacked { - float: left; - width: 490px; -} - -.stacked select { - width: 480px; - height: 10.1em; -} - -.stacked .selector-available, .stacked .selector-chosen { - width: 480px; -} - -.stacked .selector-available { - margin-bottom: 0; -} - -.stacked .selector-available input { - width: 422px; -} - -.stacked ul.selector-chooser { - height: 22px; - width: 50px; - margin: 0 0 10px 40%; - background-color: #eee; - border-radius: 10px; -} - -.stacked .selector-chooser li { - float: left; - padding: 3px 3px 3px 5px; -} - -.stacked .selector-chooseall, .stacked .selector-clearall { - display: none; -} - -.stacked .selector-add { - background: url(../img/selector-icons.svg) 0 -32px no-repeat; - cursor: default; -} - -.stacked .active.selector-add { - background-position: 0 -32px; - cursor: pointer; -} - -.stacked .active.selector-add:focus, .stacked .active.selector-add:hover { - background-position: 0 -48px; - cursor: pointer; -} - -.stacked .selector-remove { - background: url(../img/selector-icons.svg) 0 0 no-repeat; - cursor: default; -} - -.stacked .active.selector-remove { - background-position: 0 0px; - cursor: pointer; -} - -.stacked .active.selector-remove:focus, .stacked .active.selector-remove:hover { - background-position: 0 -16px; - cursor: pointer; -} - -.selector .help-icon { - background: url(../img/icon-unknown.svg) 0 0 no-repeat; - display: inline-block; - vertical-align: middle; - margin: -2px 0 0 2px; - width: 13px; - height: 13px; -} - -.selector .selector-chosen .help-icon { - background: url(../img/icon-unknown-alt.svg) 0 0 no-repeat; -} - -.selector .search-label-icon { - background: url(../img/search.svg) 0 0 no-repeat; - display: inline-block; - height: 18px; - width: 18px; -} - -/* DATE AND TIME */ - -p.datetime { - line-height: 20px; - margin: 0; - padding: 0; - color: #666; - font-weight: bold; -} - -.datetime span { - white-space: nowrap; - font-weight: normal; - font-size: 11px; - color: #ccc; -} - -.datetime input, .form-row .datetime input.vDateField, .form-row .datetime input.vTimeField { - margin-left: 5px; - margin-bottom: 4px; -} - -table p.datetime { - font-size: 11px; - margin-left: 0; - padding-left: 0; -} - -.datetimeshortcuts .clock-icon, .datetimeshortcuts .date-icon { - position: relative; - display: inline-block; - vertical-align: middle; - height: 16px; - width: 16px; - overflow: hidden; -} - -.datetimeshortcuts .clock-icon { - background: url(../img/icon-clock.svg) 0 0 no-repeat; -} - -.datetimeshortcuts a:focus .clock-icon, -.datetimeshortcuts a:hover .clock-icon { - background-position: 0 -16px; -} - -.datetimeshortcuts .date-icon { - background: url(../img/icon-calendar.svg) 0 0 no-repeat; - top: -1px; -} - -.datetimeshortcuts a:focus .date-icon, -.datetimeshortcuts a:hover .date-icon { - background-position: 0 -16px; -} - -.timezonewarning { - font-size: 11px; - color: #999; -} - -/* URL */ - -p.url { - line-height: 20px; - margin: 0; - padding: 0; - color: #666; - font-size: 11px; - font-weight: bold; -} - -.url a { - font-weight: normal; -} - -/* FILE UPLOADS */ - -p.file-upload { - line-height: 20px; - margin: 0; - padding: 0; - color: #666; - font-size: 11px; - font-weight: bold; -} - -.aligned p.file-upload { - margin-left: 170px; -} - -.file-upload a { - font-weight: normal; -} - -.file-upload .deletelink { - margin-left: 5px; -} - -span.clearable-file-input label { - color: #333; - font-size: 11px; - display: inline; - float: none; -} - -/* CALENDARS & CLOCKS */ - -.calendarbox, .clockbox { - margin: 5px auto; - font-size: 12px; - width: 19em; - text-align: center; - background: white; - border: 1px solid #ddd; - border-radius: 4px; - box-shadow: 0 2px 4px rgba(0, 0, 0, 0.15); - overflow: hidden; - position: relative; -} - -.clockbox { - width: auto; -} - -.calendar { - margin: 0; - padding: 0; -} - -.calendar table { - margin: 0; - padding: 0; - border-collapse: collapse; - background: white; - width: 100%; -} - -.calendar caption, .calendarbox h2 { - margin: 0; - text-align: center; - border-top: none; - background: #f5dd5d; - font-weight: 700; - font-size: 12px; - color: #333; -} - -.calendar th { - padding: 8px 5px; - background: #f8f8f8; - border-bottom: 1px solid #ddd; - font-weight: 400; - font-size: 12px; - text-align: center; - color: #666; -} - -.calendar td { - font-weight: 400; - font-size: 12px; - text-align: center; - padding: 0; - border-top: 1px solid #eee; - border-bottom: none; -} - -.calendar td.selected a { - background: #79aec8; - color: #fff; -} - -.calendar td.nonday { - background: #f8f8f8; -} - -.calendar td.today a { - font-weight: 700; -} - -.calendar td a, .timelist a { - display: block; - font-weight: 400; - padding: 6px; - text-decoration: none; - color: #444; -} - -.calendar td a:focus, .timelist a:focus, -.calendar td a:hover, .timelist a:hover { - background: #79aec8; - color: white; -} - -.calendar td a:active, .timelist a:active { - background: #417690; - color: white; -} - -.calendarnav { - font-size: 10px; - text-align: center; - color: #ccc; - margin: 0; - padding: 1px 3px; -} - -.calendarnav a:link, #calendarnav a:visited, -#calendarnav a:focus, #calendarnav a:hover { - color: #999; -} - -.calendar-shortcuts { - background: white; - font-size: 11px; - line-height: 11px; - border-top: 1px solid #eee; - padding: 8px 0; - color: #ccc; -} - -.calendarbox .calendarnav-previous, .calendarbox .calendarnav-next { - display: block; - position: absolute; - top: 8px; - width: 15px; - height: 15px; - text-indent: -9999px; - padding: 0; -} - -.calendarnav-previous { - left: 10px; - background: url(../img/calendar-icons.svg) 0 0 no-repeat; -} - -.calendarbox .calendarnav-previous:focus, -.calendarbox .calendarnav-previous:hover { - background-position: 0 -15px; -} - -.calendarnav-next { - right: 10px; - background: url(../img/calendar-icons.svg) 0 -30px no-repeat; -} - -.calendarbox .calendarnav-next:focus, -.calendarbox .calendarnav-next:hover { - background-position: 0 -45px; -} - -.calendar-cancel { - margin: 0; - padding: 4px 0; - font-size: 12px; - background: #eee; - border-top: 1px solid #ddd; - color: #333; -} - -.calendar-cancel:focus, .calendar-cancel:hover { - background: #ddd; -} - -.calendar-cancel a { - color: black; - display: block; -} - -ul.timelist, .timelist li { - list-style-type: none; - margin: 0; - padding: 0; -} - -.timelist a { - padding: 2px; -} - -/* EDIT INLINE */ - -.inline-deletelink { - float: right; - text-indent: -9999px; - background: url(../img/inline-delete.svg) 0 0 no-repeat; - width: 16px; - height: 16px; - border: 0px none; -} - -.inline-deletelink:focus, .inline-deletelink:hover { - cursor: pointer; -} - -/* RELATED WIDGET WRAPPER */ -.related-widget-wrapper { - float: left; /* display properly in form rows with multiple fields */ - overflow: hidden; /* clear floated contents */ -} - -.related-widget-wrapper-link { - opacity: 0.3; -} - -.related-widget-wrapper-link:link { - opacity: .8; -} - -.related-widget-wrapper-link:link:focus, -.related-widget-wrapper-link:link:hover { - opacity: 1; -} - -select + .related-widget-wrapper-link, -.related-widget-wrapper-link + .related-widget-wrapper-link { - margin-left: 7px; -} diff --git a/src/interface/static/admin/fonts/LICENSE.txt b/src/interface/static/admin/fonts/LICENSE.txt deleted file mode 100644 index 75b5248..0000000 --- a/src/interface/static/admin/fonts/LICENSE.txt +++ /dev/null @@ -1,202 +0,0 @@ - - Apache License - Version 2.0, January 2004 - http://www.apache.org/licenses/ - - TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - - 1. Definitions. - - "License" shall mean the terms and conditions for use, reproduction, - and distribution as defined by Sections 1 through 9 of this document. - - "Licensor" shall mean the copyright owner or entity authorized by - the copyright owner that is granting the License. - - "Legal Entity" shall mean the union of the acting entity and all - other entities that control, are controlled by, or are under common - control with that entity. For the purposes of this definition, - "control" means (i) the power, direct or indirect, to cause the - direction or management of such entity, whether by contract or - otherwise, or (ii) ownership of fifty percent (50%) or more of the - outstanding shares, or (iii) beneficial ownership of such entity. - - "You" (or "Your") shall mean an individual or Legal Entity - exercising permissions granted by this License. - - "Source" form shall mean the preferred form for making modifications, - including but not limited to software source code, documentation - source, and configuration files. - - "Object" form shall mean any form resulting from mechanical - transformation or translation of a Source form, including but - not limited to compiled object code, generated documentation, - and conversions to other media types. - - "Work" shall mean the work of authorship, whether in Source or - Object form, made available under the License, as indicated by a - copyright notice that is included in or attached to the work - (an example is provided in the Appendix below). - - "Derivative Works" shall mean any work, whether in Source or Object - form, that is based on (or derived from) the Work and for which the - editorial revisions, annotations, elaborations, or other modifications - represent, as a whole, an original work of authorship. For the purposes - of this License, Derivative Works shall not include works that remain - separable from, or merely link (or bind by name) to the interfaces of, - the Work and Derivative Works thereof. - - "Contribution" shall mean any work of authorship, including - the original version of the Work and any modifications or additions - to that Work or Derivative Works thereof, that is intentionally - submitted to Licensor for inclusion in the Work by the copyright owner - or by an individual or Legal Entity authorized to submit on behalf of - the copyright owner. For the purposes of this definition, "submitted" - means any form of electronic, verbal, or written communication sent - to the Licensor or its representatives, including but not limited to - communication on electronic mailing lists, source code control systems, - and issue tracking systems that are managed by, or on behalf of, the - Licensor for the purpose of discussing and improving the Work, but - excluding communication that is conspicuously marked or otherwise - designated in writing by the copyright owner as "Not a Contribution." - - "Contributor" shall mean Licensor and any individual or Legal Entity - on behalf of whom a Contribution has been received by Licensor and - subsequently incorporated within the Work. - - 2. Grant of Copyright License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - copyright license to reproduce, prepare Derivative Works of, - publicly display, publicly perform, sublicense, and distribute the - Work and such Derivative Works in Source or Object form. - - 3. Grant of Patent License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - (except as stated in this section) patent license to make, have made, - use, offer to sell, sell, import, and otherwise transfer the Work, - where such license applies only to those patent claims licensable - by such Contributor that are necessarily infringed by their - Contribution(s) alone or by combination of their Contribution(s) - with the Work to which such Contribution(s) was submitted. If You - institute patent litigation against any entity (including a - cross-claim or counterclaim in a lawsuit) alleging that the Work - or a Contribution incorporated within the Work constitutes direct - or contributory patent infringement, then any patent licenses - granted to You under this License for that Work shall terminate - as of the date such litigation is filed. - - 4. Redistribution. You may reproduce and distribute copies of the - Work or Derivative Works thereof in any medium, with or without - modifications, and in Source or Object form, provided that You - meet the following conditions: - - (a) You must give any other recipients of the Work or - Derivative Works a copy of this License; and - - (b) You must cause any modified files to carry prominent notices - stating that You changed the files; and - - (c) You must retain, in the Source form of any Derivative Works - that You distribute, all copyright, patent, trademark, and - attribution notices from the Source form of the Work, - excluding those notices that do not pertain to any part of - the Derivative Works; and - - (d) If the Work includes a "NOTICE" text file as part of its - distribution, then any Derivative Works that You distribute must - include a readable copy of the attribution notices contained - within such NOTICE file, excluding those notices that do not - pertain to any part of the Derivative Works, in at least one - of the following places: within a NOTICE text file distributed - as part of the Derivative Works; within the Source form or - documentation, if provided along with the Derivative Works; or, - within a display generated by the Derivative Works, if and - wherever such third-party notices normally appear. The contents - of the NOTICE file are for informational purposes only and - do not modify the License. You may add Your own attribution - notices within Derivative Works that You distribute, alongside - or as an addendum to the NOTICE text from the Work, provided - that such additional attribution notices cannot be construed - as modifying the License. - - You may add Your own copyright statement to Your modifications and - may provide additional or different license terms and conditions - for use, reproduction, or distribution of Your modifications, or - for any such Derivative Works as a whole, provided Your use, - reproduction, and distribution of the Work otherwise complies with - the conditions stated in this License. - - 5. Submission of Contributions. Unless You explicitly state otherwise, - any Contribution intentionally submitted for inclusion in the Work - by You to the Licensor shall be under the terms and conditions of - this License, without any additional terms or conditions. - Notwithstanding the above, nothing herein shall supersede or modify - the terms of any separate license agreement you may have executed - with Licensor regarding such Contributions. - - 6. Trademarks. This License does not grant permission to use the trade - names, trademarks, service marks, or product names of the Licensor, - except as required for reasonable and customary use in describing the - origin of the Work and reproducing the content of the NOTICE file. - - 7. Disclaimer of Warranty. Unless required by applicable law or - agreed to in writing, Licensor provides the Work (and each - Contributor provides its Contributions) on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or - implied, including, without limitation, any warranties or conditions - of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A - PARTICULAR PURPOSE. You are solely responsible for determining the - appropriateness of using or redistributing the Work and assume any - risks associated with Your exercise of permissions under this License. - - 8. Limitation of Liability. In no event and under no legal theory, - whether in tort (including negligence), contract, or otherwise, - unless required by applicable law (such as deliberate and grossly - negligent acts) or agreed to in writing, shall any Contributor be - liable to You for damages, including any direct, indirect, special, - incidental, or consequential damages of any character arising as a - result of this License or out of the use or inability to use the - Work (including but not limited to damages for loss of goodwill, - work stoppage, computer failure or malfunction, or any and all - other commercial damages or losses), even if such Contributor - has been advised of the possibility of such damages. - - 9. Accepting Warranty or Additional Liability. While redistributing - the Work or Derivative Works thereof, You may choose to offer, - and charge a fee for, acceptance of support, warranty, indemnity, - or other liability obligations and/or rights consistent with this - License. However, in accepting such obligations, You may act only - on Your own behalf and on Your sole responsibility, not on behalf - of any other Contributor, and only if You agree to indemnify, - defend, and hold each Contributor harmless for any liability - incurred by, or claims asserted against, such Contributor by reason - of your accepting any such warranty or additional liability. - - END OF TERMS AND CONDITIONS - - APPENDIX: How to apply the Apache License to your work. - - To apply the Apache License to your work, attach the following - boilerplate notice, with the fields enclosed by brackets "[]" - replaced with your own identifying information. (Don't include - the brackets!) The text should be enclosed in the appropriate - comment syntax for the file format. We also recommend that a - file or class name and description of purpose be included on the - same "printed page" as the copyright notice for easier - identification within third-party archives. - - Copyright [yyyy] [name of copyright owner] - - 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/src/interface/static/admin/fonts/README.txt b/src/interface/static/admin/fonts/README.txt deleted file mode 100644 index b247bef..0000000 --- a/src/interface/static/admin/fonts/README.txt +++ /dev/null @@ -1,3 +0,0 @@ -Roboto webfont source: https://www.google.com/fonts/specimen/Roboto -WOFF files extracted using https://github.com/majodev/google-webfonts-helper -Weights used in this project: Light (300), Regular (400), Bold (700) diff --git a/src/interface/static/admin/fonts/Roboto-Bold-webfont.woff b/src/interface/static/admin/fonts/Roboto-Bold-webfont.woff deleted file mode 100644 index 6e0f562..0000000 Binary files a/src/interface/static/admin/fonts/Roboto-Bold-webfont.woff and /dev/null differ diff --git a/src/interface/static/admin/fonts/Roboto-Light-webfont.woff b/src/interface/static/admin/fonts/Roboto-Light-webfont.woff deleted file mode 100644 index b9e9918..0000000 Binary files a/src/interface/static/admin/fonts/Roboto-Light-webfont.woff and /dev/null differ diff --git a/src/interface/static/admin/fonts/Roboto-Regular-webfont.woff b/src/interface/static/admin/fonts/Roboto-Regular-webfont.woff deleted file mode 100644 index 96c1986..0000000 Binary files a/src/interface/static/admin/fonts/Roboto-Regular-webfont.woff and /dev/null differ diff --git a/src/interface/static/admin/img/LICENSE b/src/interface/static/admin/img/LICENSE deleted file mode 100644 index a4faaa1..0000000 --- a/src/interface/static/admin/img/LICENSE +++ /dev/null @@ -1,20 +0,0 @@ -The MIT License (MIT) - -Copyright (c) 2014 Code Charm Ltd - -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/src/interface/static/admin/img/README.txt b/src/interface/static/admin/img/README.txt deleted file mode 100644 index 4eb2e49..0000000 --- a/src/interface/static/admin/img/README.txt +++ /dev/null @@ -1,7 +0,0 @@ -All icons are taken from Font Awesome (http://fontawesome.io/) project. -The Font Awesome font is licensed under the SIL OFL 1.1: -- https://scripts.sil.org/OFL - -SVG icons source: https://github.com/encharm/Font-Awesome-SVG-PNG -Font-Awesome-SVG-PNG is licensed under the MIT license (see file license -in current folder). diff --git a/src/interface/static/admin/img/calendar-icons.svg b/src/interface/static/admin/img/calendar-icons.svg deleted file mode 100644 index dbf21c3..0000000 --- a/src/interface/static/admin/img/calendar-icons.svg +++ /dev/null @@ -1,14 +0,0 @@ - - - - - - - - - - - - - - diff --git a/src/interface/static/admin/img/gis/move_vertex_off.svg b/src/interface/static/admin/img/gis/move_vertex_off.svg deleted file mode 100644 index 228854f..0000000 --- a/src/interface/static/admin/img/gis/move_vertex_off.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/src/interface/static/admin/img/gis/move_vertex_on.svg b/src/interface/static/admin/img/gis/move_vertex_on.svg deleted file mode 100644 index 96b87fd..0000000 --- a/src/interface/static/admin/img/gis/move_vertex_on.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/src/interface/static/admin/img/icon-addlink.svg b/src/interface/static/admin/img/icon-addlink.svg deleted file mode 100644 index e004fb1..0000000 --- a/src/interface/static/admin/img/icon-addlink.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/src/interface/static/admin/img/icon-alert.svg b/src/interface/static/admin/img/icon-alert.svg deleted file mode 100644 index e51ea83..0000000 --- a/src/interface/static/admin/img/icon-alert.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/src/interface/static/admin/img/icon-calendar.svg b/src/interface/static/admin/img/icon-calendar.svg deleted file mode 100644 index 97910a9..0000000 --- a/src/interface/static/admin/img/icon-calendar.svg +++ /dev/null @@ -1,9 +0,0 @@ - - - - - - - - - diff --git a/src/interface/static/admin/img/icon-changelink.svg b/src/interface/static/admin/img/icon-changelink.svg deleted file mode 100644 index bbb137a..0000000 --- a/src/interface/static/admin/img/icon-changelink.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/src/interface/static/admin/img/icon-clock.svg b/src/interface/static/admin/img/icon-clock.svg deleted file mode 100644 index bf9985d..0000000 --- a/src/interface/static/admin/img/icon-clock.svg +++ /dev/null @@ -1,9 +0,0 @@ - - - - - - - - - diff --git a/src/interface/static/admin/img/icon-deletelink.svg b/src/interface/static/admin/img/icon-deletelink.svg deleted file mode 100644 index 4059b15..0000000 --- a/src/interface/static/admin/img/icon-deletelink.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/src/interface/static/admin/img/icon-no.svg b/src/interface/static/admin/img/icon-no.svg deleted file mode 100644 index 2e0d383..0000000 --- a/src/interface/static/admin/img/icon-no.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/src/interface/static/admin/img/icon-unknown-alt.svg b/src/interface/static/admin/img/icon-unknown-alt.svg deleted file mode 100644 index 1c6b99f..0000000 --- a/src/interface/static/admin/img/icon-unknown-alt.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/src/interface/static/admin/img/icon-unknown.svg b/src/interface/static/admin/img/icon-unknown.svg deleted file mode 100644 index 50b4f97..0000000 --- a/src/interface/static/admin/img/icon-unknown.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/src/interface/static/admin/img/icon-viewlink.svg b/src/interface/static/admin/img/icon-viewlink.svg deleted file mode 100644 index a1ca1d3..0000000 --- a/src/interface/static/admin/img/icon-viewlink.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/src/interface/static/admin/img/icon-yes.svg b/src/interface/static/admin/img/icon-yes.svg deleted file mode 100644 index 5883d87..0000000 --- a/src/interface/static/admin/img/icon-yes.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/src/interface/static/admin/img/inline-delete.svg b/src/interface/static/admin/img/inline-delete.svg deleted file mode 100644 index 17d1ad6..0000000 --- a/src/interface/static/admin/img/inline-delete.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/src/interface/static/admin/img/search.svg b/src/interface/static/admin/img/search.svg deleted file mode 100644 index c8c69b2..0000000 --- a/src/interface/static/admin/img/search.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/src/interface/static/admin/img/selector-icons.svg b/src/interface/static/admin/img/selector-icons.svg deleted file mode 100644 index 926b8e2..0000000 --- a/src/interface/static/admin/img/selector-icons.svg +++ /dev/null @@ -1,34 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/src/interface/static/admin/img/sorting-icons.svg b/src/interface/static/admin/img/sorting-icons.svg deleted file mode 100644 index 7c31ec9..0000000 --- a/src/interface/static/admin/img/sorting-icons.svg +++ /dev/null @@ -1,19 +0,0 @@ - - - - - - - - - - - - - - - - - - - diff --git a/src/interface/static/admin/img/tooltag-add.svg b/src/interface/static/admin/img/tooltag-add.svg deleted file mode 100644 index 1ca64ae..0000000 --- a/src/interface/static/admin/img/tooltag-add.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/src/interface/static/admin/img/tooltag-arrowright.svg b/src/interface/static/admin/img/tooltag-arrowright.svg deleted file mode 100644 index b664d61..0000000 --- a/src/interface/static/admin/img/tooltag-arrowright.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/src/interface/static/admin/js/SelectBox.js b/src/interface/static/admin/js/SelectBox.js deleted file mode 100644 index 1927b4c..0000000 --- a/src/interface/static/admin/js/SelectBox.js +++ /dev/null @@ -1,110 +0,0 @@ -'use strict'; -{ - const SelectBox = { - cache: {}, - init: function(id) { - const box = document.getElementById(id); - SelectBox.cache[id] = []; - const cache = SelectBox.cache[id]; - for (const node of box.options) { - cache.push({value: node.value, text: node.text, displayed: 1}); - } - }, - redisplay: function(id) { - // Repopulate HTML select box from cache - const box = document.getElementById(id); - box.innerHTML = ''; - for (const node of SelectBox.cache[id]) { - if (node.displayed) { - const new_option = new Option(node.text, node.value, false, false); - // Shows a tooltip when hovering over the option - new_option.title = node.text; - box.appendChild(new_option); - } - } - }, - filter: function(id, text) { - // Redisplay the HTML select box, displaying only the choices containing ALL - // the words in text. (It's an AND search.) - const tokens = text.toLowerCase().split(/\s+/); - for (const node of SelectBox.cache[id]) { - node.displayed = 1; - const node_text = node.text.toLowerCase(); - for (const token of tokens) { - if (node_text.indexOf(token) === -1) { - node.displayed = 0; - break; // Once the first token isn't found we're done - } - } - } - SelectBox.redisplay(id); - }, - delete_from_cache: function(id, value) { - let delete_index = null; - const cache = SelectBox.cache[id]; - for (const [i, node] of cache.entries()) { - if (node.value === value) { - delete_index = i; - break; - } - } - cache.splice(delete_index, 1); - }, - add_to_cache: function(id, option) { - SelectBox.cache[id].push({value: option.value, text: option.text, displayed: 1}); - }, - cache_contains: function(id, value) { - // Check if an item is contained in the cache - for (const node of SelectBox.cache[id]) { - if (node.value === value) { - return true; - } - } - return false; - }, - move: function(from, to) { - const from_box = document.getElementById(from); - for (const option of from_box.options) { - const option_value = option.value; - if (option.selected && SelectBox.cache_contains(from, option_value)) { - SelectBox.add_to_cache(to, {value: option_value, text: option.text, displayed: 1}); - SelectBox.delete_from_cache(from, option_value); - } - } - SelectBox.redisplay(from); - SelectBox.redisplay(to); - }, - move_all: function(from, to) { - const from_box = document.getElementById(from); - for (const option of from_box.options) { - const option_value = option.value; - if (SelectBox.cache_contains(from, option_value)) { - SelectBox.add_to_cache(to, {value: option_value, text: option.text, displayed: 1}); - SelectBox.delete_from_cache(from, option_value); - } - } - SelectBox.redisplay(from); - SelectBox.redisplay(to); - }, - sort: function(id) { - SelectBox.cache[id].sort(function(a, b) { - a = a.text.toLowerCase(); - b = b.text.toLowerCase(); - if (a > b) { - return 1; - } - if (a < b) { - return -1; - } - return 0; - } ); - }, - select_all: function(id) { - const box = document.getElementById(id); - for (const option of box.options) { - option.selected = true; - } - } - }; - window.SelectBox = SelectBox; -} diff --git a/src/interface/static/admin/js/SelectFilter2.js b/src/interface/static/admin/js/SelectFilter2.js deleted file mode 100644 index 6c709a0..0000000 --- a/src/interface/static/admin/js/SelectFilter2.js +++ /dev/null @@ -1,236 +0,0 @@ -/*global SelectBox, gettext, interpolate, quickElement, SelectFilter*/ -/* -SelectFilter2 - Turns a multiple-select box into a filter interface. - -Requires core.js and SelectBox.js. -*/ -'use strict'; -{ - window.SelectFilter = { - init: function(field_id, field_name, is_stacked) { - if (field_id.match(/__prefix__/)) { - // Don't initialize on empty forms. - return; - } - const from_box = document.getElementById(field_id); - from_box.id += '_from'; // change its ID - from_box.className = 'filtered'; - - for (const p of from_box.parentNode.getElementsByTagName('p')) { - if (p.classList.contains("info")) { - // Remove

, because it just gets in the way. - from_box.parentNode.removeChild(p); - } else if (p.classList.contains("help")) { - // Move help text up to the top so it isn't below the select - // boxes or wrapped off on the side to the right of the add - // button: - from_box.parentNode.insertBefore(p, from_box.parentNode.firstChild); - } - } - - //

or
- const selector_div = quickElement('div', from_box.parentNode); - selector_div.className = is_stacked ? 'selector stacked' : 'selector'; - - //
- const selector_available = quickElement('div', selector_div); - selector_available.className = 'selector-available'; - const title_available = quickElement('h2', selector_available, interpolate(gettext('Available %s') + ' ', [field_name])); - quickElement( - 'span', title_available, '', - 'class', 'help help-tooltip help-icon', - 'title', interpolate( - gettext( - 'This is the list of available %s. You may choose some by ' + - 'selecting them in the box below and then clicking the ' + - '"Choose" arrow between the two boxes.' - ), - [field_name] - ) - ); - - const filter_p = quickElement('p', selector_available, '', 'id', field_id + '_filter'); - filter_p.className = 'selector-filter'; - - const search_filter_label = quickElement('label', filter_p, '', 'for', field_id + '_input'); - - quickElement( - 'span', search_filter_label, '', - 'class', 'help-tooltip search-label-icon', - 'title', interpolate(gettext("Type into this box to filter down the list of available %s."), [field_name]) - ); - - filter_p.appendChild(document.createTextNode(' ')); - - const filter_input = quickElement('input', filter_p, '', 'type', 'text', 'placeholder', gettext("Filter")); - filter_input.id = field_id + '_input'; - - selector_available.appendChild(from_box); - const choose_all = quickElement('a', selector_available, gettext('Choose all'), 'title', interpolate(gettext('Click to choose all %s at once.'), [field_name]), 'href', '#', 'id', field_id + '_add_all_link'); - choose_all.className = 'selector-chooseall'; - - //