diff --git a/apps/adguardhome-sync/README.md b/apps/adguardhome-sync/README.md
new file mode 100644
index 000000000..db35b9d5b
--- /dev/null
+++ b/apps/adguardhome-sync/README.md
@@ -0,0 +1,22 @@
+# AdGuardHome-Sync
+
+AdGuardHome-Sync 是一个用于在多个 AdGuardHome 实例之间同步配置的工具。
+
+## 功能特性
+
+- 支持多个 AdGuardHome 实例之间的配置同步
+- 提供 Web API 接口进行管理
+- 支持定时同步任务
+- 基于 LinuxServer.io 的 Docker 镜像
+
+## 使用方法
+
+1. 部署后访问 Web API 端口(默认 8080)
+2. 配置 AdGuardHome 实例的连接信息
+3. 设置同步规则和时间间隔
+4. 启动同步任务
+
+## 相关链接
+
+- [GitHub 项目](https://github.com/bakito/adguardhome-sync)
+- [LinuxServer.io 文档](https://docs.linuxserver.io/images/docker-adguardhome-sync/)
\ No newline at end of file
diff --git a/apps/adguardhome-sync/README_en.md b/apps/adguardhome-sync/README_en.md
new file mode 100644
index 000000000..1945a4b71
--- /dev/null
+++ b/apps/adguardhome-sync/README_en.md
@@ -0,0 +1,22 @@
+# AdGuardHome-Sync
+
+AdGuardHome-Sync is a tool for synchronizing configurations between multiple AdGuardHome instances.
+
+## Features
+
+- Synchronize configurations between multiple AdGuardHome instances
+- Web API interface for management
+- Scheduled synchronization tasks
+- Based on LinuxServer.io Docker image
+
+## Usage
+
+1. Access the Web API port (default 8080) after deployment
+2. Configure connection information for AdGuardHome instances
+3. Set synchronization rules and intervals
+4. Start synchronization tasks
+
+## Links
+
+- [GitHub Project](https://github.com/bakito/adguardhome-sync)
+- [LinuxServer.io Documentation](https://docs.linuxserver.io/images/docker-adguardhome-sync/)
\ No newline at end of file
diff --git a/apps/adguardhome-sync/data.yml b/apps/adguardhome-sync/data.yml
new file mode 100644
index 000000000..28d6c2cc9
--- /dev/null
+++ b/apps/adguardhome-sync/data.yml
@@ -0,0 +1,32 @@
+name: AdGuardHome-Sync
+tags:
+ - 安全
+title: AdGuardHome 配置同步工具
+description: AdGuardHome 配置同步工具,支持多个 AdGuardHome 实例之间的配置同步
+additionalProperties:
+ key: adguardhome-sync
+ name: AdGuardHome-Sync
+ tags:
+ - Security
+ shortDescZh: AdGuardHome 配置同步工具
+ shortDescEn: AdGuardHome configuration synchronization tool
+ description:
+ en: AdGuardHome configuration synchronization tool for syncing configurations between multiple AdGuardHome instances
+ ja: 複数のAdGuardHomeインスタンス間で設定を同期するためのAdGuardHome設定同期ツール
+ ms: Alat penyegerakan konfigurasi AdGuardHome untuk menyegerakkan konfigurasi antara pelbagai instans AdGuardHome
+ pt-br: Ferramenta de sincronização de configuração do AdGuardHome para sincronizar configurações entre múltiplas instâncias do AdGuardHome
+ ru: Инструмент синхронизации конфигурации AdGuardHome для синхронизации конфигураций между несколькими экземплярами AdGuardHome
+ ko: 여러 AdGuardHome 인스턴스 간의 구성을 동기화하기 위한 AdGuardHome 구성 동기화 도구
+ zh-Hant: AdGuardHome 配置同步工具,支援多個 AdGuardHome 實例之間的配置同步
+ zh: AdGuardHome 配置同步工具,支持多个 AdGuardHome 实例之间的配置同步
+ type: website
+ crossVersionUpdate: true
+ limit: 0
+ recommend: 0
+ website: https://github.com/bakito/adguardhome-sync
+ github: https://github.com/bakito/adguardhome-sync
+ document: https://docs.linuxserver.io/images/docker-adguardhome-sync/
+ architectures:
+ - amd64
+ - arm64
+ - arm/v7
\ No newline at end of file
diff --git a/apps/adguardhome-sync/latest/data.yml b/apps/adguardhome-sync/latest/data.yml
new file mode 100644
index 000000000..e9305da25
--- /dev/null
+++ b/apps/adguardhome-sync/latest/data.yml
@@ -0,0 +1,19 @@
+additionalProperties:
+ formFields:
+ - default: 8080
+ edit: true
+ envKey: PANEL_APP_PORT_HTTP
+ labelEn: Web API Port
+ labelZh: Web API 端口
+ required: true
+ rule: paramPort
+ type: number
+ label:
+ en: Web API Port
+ ja: Web API ポート
+ ms: Port API Web
+ pt-br: Porta da API Web
+ ru: Порт Web API
+ ko: Web API 포트
+ zh-Hant: Web API 埠
+ zh: Web API 端口
\ No newline at end of file
diff --git a/apps/adguardhome-sync/latest/docker-compose.yml b/apps/adguardhome-sync/latest/docker-compose.yml
new file mode 100644
index 000000000..8fe055904
--- /dev/null
+++ b/apps/adguardhome-sync/latest/docker-compose.yml
@@ -0,0 +1,20 @@
+services:
+ adguardhome-sync:
+ container_name: ${CONTAINER_NAME}
+ restart: always
+ networks:
+ - 1panel-network
+ ports:
+ - "${PANEL_APP_PORT_HTTP}:8080"
+ volumes:
+ - ./config:/config
+ environment:
+ - PUID=1000
+ - PGID=1000
+ - TZ=Asia/Shanghai
+ image: lscr.io/linuxserver/adguardhome-sync:latest
+ labels:
+ createdBy: "Apps"
+networks:
+ 1panel-network:
+ external: true
\ No newline at end of file
diff --git a/apps/adguardhome-sync/logo.png b/apps/adguardhome-sync/logo.png
new file mode 100644
index 000000000..1144d34f7
Binary files /dev/null and b/apps/adguardhome-sync/logo.png differ
diff --git a/apps/alist/3.45.0/data.yml b/apps/alist/3.45.0/data.yml
new file mode 100644
index 000000000..c3739655d
--- /dev/null
+++ b/apps/alist/3.45.0/data.yml
@@ -0,0 +1,36 @@
+additionalProperties:
+ formFields:
+ - default: 5244
+ edit: true
+ envKey: PANEL_APP_PORT_HTTP
+ labelEn: WebUI Port
+ labelZh: 网页端口
+ required: true
+ rule: paramPort
+ type: number
+ label:
+ en: WebUI Port
+ ja: WebUI ポート
+ ms: Port WebUI
+ pt-br: Porta WebUI
+ ru: Порт WebUI
+ ko: WebUI 포트
+ zh-Hant: WebUI 埠
+ zh: WebUI 端口
+ - default: 5426
+ edit: true
+ envKey: PANEL_APP_PORT_S3
+ labelEn: S3 Port
+ labelZh: S3 端口
+ required: true
+ rule: paramPort
+ type: number
+ label:
+ en: S3 Port
+ ja: S3 ポート
+ ms: Port S3
+ pt-br: Porta S3
+ ru: Порт S3
+ ko: S3 포트
+ zh-Hant: S3 埠
+ zh: S3 端口
diff --git a/apps/alist/3.45.0/data/data/.gitkeep b/apps/alist/3.45.0/data/data/.gitkeep
new file mode 100644
index 000000000..e69de29bb
diff --git a/apps/alist/3.45.0/data/mnt/.gitkeep b/apps/alist/3.45.0/data/mnt/.gitkeep
new file mode 100644
index 000000000..e69de29bb
diff --git a/apps/alist/3.45.0/docker-compose.yml b/apps/alist/3.45.0/docker-compose.yml
new file mode 100644
index 000000000..ae0d06cd6
--- /dev/null
+++ b/apps/alist/3.45.0/docker-compose.yml
@@ -0,0 +1,23 @@
+services:
+ alist:
+ container_name: ${CONTAINER_NAME}
+ restart: always
+ networks:
+ - 1panel-network
+ ports:
+ - "${PANEL_APP_PORT_HTTP}:5244"
+ - "${PANEL_APP_PORT_S3}:5426"
+ volumes:
+ - ./data/data:/opt/alist/data
+ - ./data/mnt:/mnt/data
+ environment:
+ - PUID=0
+ - PGID=0
+ - UMASK=022
+ image: xhofe/alist:v3.45.0
+ labels:
+ createdBy: "Apps"
+networks:
+ 1panel-network:
+ external: true
+
diff --git a/apps/alist/3.45.0/scripts/upgrade.sh b/apps/alist/3.45.0/scripts/upgrade.sh
new file mode 100644
index 000000000..8957ef5f6
--- /dev/null
+++ b/apps/alist/3.45.0/scripts/upgrade.sh
@@ -0,0 +1,12 @@
+#!/bin/bash
+
+if [[ -f ./.env ]]; then
+ if grep -q 'PANEL_APP_PORT_S3' ./.env; then
+ echo "PANEL_APP_PORT_S3 参数已存在"
+ else
+ echo 'PANEL_APP_PORT_S3=5426' >> ./.env
+ echo "已添加 PANEL_APP_PORT_S3=5426"
+ fi
+else
+ echo ".env 文件不存在"
+fi
diff --git a/apps/alist/README_en.md b/apps/alist/README_en.md
new file mode 100644
index 000000000..efdd30153
--- /dev/null
+++ b/apps/alist/README_en.md
@@ -0,0 +1,64 @@
+# AList
+
+A file list program that supports multiple storage, and supports web browsing and webdav, powered by gin and Solidjs.
+
+## Supported Storage
+
+- Local storage
+- [Crypt](/guide/drivers/Crypt.md)
+- [Aliyundrive Open](../guide/drivers/aliyundrive_open.md)
+- [aliyundrive](https://www.alipan.com/)
+- [OneDrive](./drivers/onedrive.md) /[APP](./drivers/onedrive_app.md)/ Sharepoint ([global](https://www.office.com/), [cn](https://portal.partner.microsoftonline.cn),de,us)
+- [GoogleDrive](https://drive.google.com/)
+- [123pan/Share/Link](https://www.123pan.com/)
+- [Alist](https://github.com/Xhofe/alist)
+- FTP
+- SFTP
+- [PikPak / share](https://www.mypikpak.com/)
+- [S3](../guide/drivers/s3.md)
+- [Doge](../guide/drivers/s3.md#add-object-storage-examples-and-official-documents)
+- [UPYUN Storage Service](https://www.upyun.com/products/file-storage)
+- WebDAV
+- Teambition([China](https://www.teambition.com/),[International](https://us.teambition.com/))
+- [mediatrack](https://www.mediatrack.cn/)
+- [189cloud](https://cloud.189.cn) (Personal, Family)
+- [139yun](https://yun.139.com/) (Personal, Family)
+- [Wopan](https://pan.wo.cn)
+- [MoPan](https://mopan.sc.189.cn/mopan/#/downloadPc)
+- [YandexDisk](https://disk.yandex.com/)
+- [BaiduNetdisk](https://pan.baidu.com/) / [share](./drivers/baidu_share.md)
+- [Quark/TV](https://pan.quark.cn/)
+- [Thunder / X Browser](../guide/drivers/thunder.md)
+- [Lanzou](https://www.lanzou.com/)、[NewLanzou](https://www.ilanzou.com)
+- [Feiji Cloud](https://feijipan.com/)
+- [Aliyundrive share](https://www.alipan.com/)
+- [Google photo](https://photos.google.com/)
+- [Mega.nz](https://mega.nz)
+- [Baidu photo](https://photo.baidu.com/)
+- [TeraBox](https://www.terabox.com/)
+- [AList v2/v3](../guide/drivers/Alist%20V2%20V3.md)
+- SMB
+- [alias](../guide/advanced/alias.md)
+- [115](https://115.com/)
+- [Seafile](https://www.seafile.com/)
+- Cloudreve
+- [Trainbit](https://trainbit.com/)
+- [UrlTree](../guide/drivers/UrlTree.md)
+- IPFS
+- [UC Clouddrive/TV](https://drive.uc.cn/)
+- [Dropbox](https://www.dropbox.com)
+- [Tencent weiyun](https://www.weiyun.com/)
+- [vtencent](https://app.v.tencent.com/)
+- [ChaoxingGroupCloud](../guide/drivers/chaoxing.md)
+- [Quqi Cloud](https://quqi.com)
+- [163 Music Drive](../guide/drivers/163music.md)
+- [halalcloud](../guide/drivers/halalcloud.md)
+- [LenovoNasShare](https://pc.lenovo.com.cn)
+
+## Account Password
+
+Click the `Terminal` button in the container list to enter the container and execute commands to set the password.
+
+- **Use a random password**: `./alist admin random`
+- **Or set password manually**: `./alist admin set NEW_PASSWORD`
+
diff --git a/apps/arcane/README.md b/apps/arcane/README.md
new file mode 100644
index 000000000..6e96ef913
--- /dev/null
+++ b/apps/arcane/README.md
@@ -0,0 +1,40 @@
+# Arcane
+
+Arcane 是一款现代化、开源的Docker管理Web面板,支持容器、镜像、网络等一站式管理。
+
+## 功能特性
+
+- 现代化Web界面,操作简洁直观
+- 支持容器、镜像、网络、卷等Docker资源的可视化管理
+- 支持多平台和多架构
+- 支持堆栈(Stack)定义与管理
+- 数据和设置持久化存储于 `./data` 目录
+- 挂载Docker套接字,支持主机级管理
+
+## 使用方法
+
+1. 部署后访问 `http://服务器IP:3000` 进入Web管理界面
+2. 首次使用请根据界面提示初始化设置
+3. 数据目录:`./data`
+4. 挂载宿主机 `/var/run/docker.sock`,实现容器管理
+5. 环境变量 `PUBLIC_SESSION_SECRET`:用于会话加密,建议使用32位随机字符串,可在应用表单中自定义,默认值为 `arcane-session-4e2b8c7f9d1a6e3b2c5d7f8a1b0c9e6d`。如需更高安全性,可用 `openssl rand -base64 32` 生成。
+
+### 账户密码
+
+- 首次运行时,如果不存在用户,Arcane 会创建默认管理员用户。
+ - **用户名:** `arcane`
+ - **密码:** `arcane-admin`
+ - 首次登录必须更改此密码。
+- 要添加用户:转到**设置 → 用户管理**,然后单击**创建用户**。填写用户名、显示名称、电子邮件和密码。
+
+## 安全提醒
+
+- 挂载Docker套接字(/var/run/docker.sock)会赋予容器主机级管理权限,请确保安全使用!
+- Arcane 目前为预发布软件,功能和界面可能会有较大变动。
+
+## 相关链接
+
+- [官方网站](https://arcane.ofkm.dev/)
+- [GitHub 项目](https://github.com/ofkm/arcane)
+- [官方文档](https://arcane.ofkm.dev/docs/)
+- [Docker Hub](https://ghcr.io/ofkm/arcane)
\ No newline at end of file
diff --git a/apps/arcane/README_en.md b/apps/arcane/README_en.md
new file mode 100644
index 000000000..7f1ffb9cb
--- /dev/null
+++ b/apps/arcane/README_en.md
@@ -0,0 +1,40 @@
+# Arcane
+
+Arcane is a modern, open-source Docker management web panel for containers, images, networks and more.
+
+## Features
+
+- Modern web UI, clean and intuitive
+- Visual management for containers, images, networks, volumes, etc.
+- Multi-platform and multi-architecture support
+- Stack (compose) definition and management
+- Data and settings persist in `./data` directory
+- Mount Docker socket for host-level management
+
+## Usage
+
+1. After deployment, access `http://your-server-ip:3000` for the web UI
+2. Follow the initial setup instructions on first use
+3. Data directory: `./data`
+4. Mount host `/var/run/docker.sock` for container management
+5. Environment variable `PUBLIC_SESSION_SECRET`: Used for session encryption. It is recommended to use a 32-character random string. You can customize it in the app form. Default: `arcane-session-4e2b8c7f9d1a6e3b2c5d7f8a1b0c9e6d`. For higher security, generate with `openssl rand -base64 32`.
+
+## Local User Management
+
+- On first run, Arcane creates a default admin user if no users exist.
+ - **Username:** `arcane`
+ - **Password:** `arcane-admin`
+ - You must change this password during onboarding.
+- To add users: Go to **Settings → User Management** and click **Create User**. Fill in username, display name, email, and password.
+
+## Security Notice
+
+- Mounting the Docker socket (`/var/run/docker.sock`) gives the container root-level access to the Docker host. Use with caution!
+- Arcane is pre-release software. Features and UI may change frequently.
+
+## Links
+
+- [Official Website](https://arcane.ofkm.dev/)
+- [GitHub Project](https://github.com/ofkm/arcane)
+- [Official Documentation](https://arcane.ofkm.dev/docs/)
+- [Docker Hub](https://ghcr.io/ofkm/arcane)
\ No newline at end of file
diff --git a/apps/arcane/data.yml b/apps/arcane/data.yml
new file mode 100644
index 000000000..b435433ec
--- /dev/null
+++ b/apps/arcane/data.yml
@@ -0,0 +1,31 @@
+name: Arcane
+tags:
+ - 实用工具
+title: 现代化Docker管理面板
+description: Arcane 是一款现代化、开源的Docker管理Web面板,支持容器、镜像、网络等一站式管理
+additionalProperties:
+ key: arcane
+ name: Arcane
+ tags:
+ - Tool
+ shortDescZh: 现代化Docker管理面板
+ shortDescEn: Modern Docker management panel
+ description:
+ en: Arcane is a modern, open-source Docker management web panel for containers, images, networks and more
+ ja: Arcaneはコンテナ、イメージ、ネットワークなどを一元管理できるモダンなオープンソースDocker管理Webパネルです
+ ms: Arcane ialah panel web pengurusan Docker moden sumber terbuka untuk kontena, imej, rangkaian dan banyak lagi
+ pt-br: Arcane é um painel web moderno e de código aberto para gerenciamento de Docker, incluindo containers, imagens, redes e mais
+ ru: Arcane — это современная, открытая веб-панель управления Docker для контейнеров, образов, сетей и др.
+ ko: Arcane는 컨테이너, 이미지, 네트워크 등을 위한 현대적이고 오픈 소스인 Docker 관리 웹 패널입니다
+ zh-Hant: Arcane 是一款現代化、開源的 Docker 管理 Web 面板,支援容器、映像、網路等一站式管理
+ zh: Arcane 是一款现代化、开源的Docker管理Web面板,支持容器、镜像、网络等一站式管理
+ type: website
+ crossVersionUpdate: true
+ limit: 0
+ recommend: 0
+ website: https://arcane.ofkm.dev/
+ github: https://github.com/ofkm/arcane
+ document: https://arcane.ofkm.dev/docs/
+ architectures:
+ - amd64
+ - arm64
\ No newline at end of file
diff --git a/apps/arcane/latest/data.yml b/apps/arcane/latest/data.yml
new file mode 100644
index 000000000..f666c4f28
--- /dev/null
+++ b/apps/arcane/latest/data.yml
@@ -0,0 +1,35 @@
+additionalProperties:
+ formFields:
+ - default: 3000
+ edit: true
+ envKey: PANEL_APP_PORT_HTTP
+ labelEn: Web UI Port
+ labelZh: Web界面端口
+ required: true
+ rule: paramPort
+ type: number
+ label:
+ en: Web UI Port
+ ja: Web UI ポート
+ ms: Port UI Web
+ pt-br: Porta da interface web
+ ru: Веб-порт интерфейса
+ ko: 웹 UI 포트
+ zh-Hant: Web UI 埠
+ zh: Web界面端口
+ - default: "arcane-session-4e2b8c7f9d1a6e3b2c5d7f8a1b0c9e6d"
+ edit: true
+ envKey: PUBLIC_SESSION_SECRET
+ labelEn: Session Secret
+ labelZh: 会话密钥
+ required: true
+ type: text
+ label:
+ en: Session Secret
+ ja: セッションシークレット
+ ms: Rahsia Sesi
+ pt-br: Segredo da sessão
+ ru: Секрет сессии
+ ko: 세션 시크릿
+ zh-Hant: 會話密鑰
+ zh: 会话密钥
\ No newline at end of file
diff --git a/apps/arcane/latest/docker-compose.yml b/apps/arcane/latest/docker-compose.yml
new file mode 100644
index 000000000..1258586ce
--- /dev/null
+++ b/apps/arcane/latest/docker-compose.yml
@@ -0,0 +1,18 @@
+services:
+ arcane:
+ image: ghcr.io/ofkm/arcane:latest
+ container_name: ${CONTAINER_NAME}
+ ports:
+ - "${PANEL_APP_PORT_HTTP}:3000"
+ volumes:
+ - /var/run/docker.sock:/var/run/docker.sock
+ - ./data:/app/data
+ environment:
+ - APP_ENV=production
+ - PUID=2000
+ - PGID=2000
+ - PUBLIC_SESSION_SECRET=${PUBLIC_SESSION_SECRET}
+ restart: always
+networks:
+ 1panel-network:
+ external: true
\ No newline at end of file
diff --git a/apps/arcane/logo.png b/apps/arcane/logo.png
new file mode 100644
index 000000000..f3ff76e69
Binary files /dev/null and b/apps/arcane/logo.png differ
diff --git a/apps/blinko/1.0.3/.env.sample b/apps/blinko/1.0.3/.env.sample
new file mode 100644
index 000000000..0780dc5fe
--- /dev/null
+++ b/apps/blinko/1.0.3/.env.sample
@@ -0,0 +1,11 @@
+CONTAINER_NAME="blinko"
+NEXTAUTH_SECRET="my_ultra_secure_nextauth_secret"
+NEXTAUTH_URL="http://1.2.3.4:1111"
+NEXT_PUBLIC_BASE_URL="http://1.2.3.4:1111"
+PANEL_APP_PORT_HTTP=1111
+PANEL_DB_HOST="postgresql"
+PANEL_DB_HOST_NAME="postgresql"
+PANEL_DB_NAME="blinko"
+PANEL_DB_PORT=5432
+PANEL_DB_USER="blinko"
+PANEL_DB_USER_PASSWORD="blinko"
diff --git a/apps/blinko/1.0.3/data.yml b/apps/blinko/1.0.3/data.yml
new file mode 100644
index 000000000..3fe7c782c
--- /dev/null
+++ b/apps/blinko/1.0.3/data.yml
@@ -0,0 +1,70 @@
+additionalProperties:
+ formFields:
+ - default: "1111"
+ envKey: PANEL_APP_PORT_HTTP
+ labelEn: HTTP Port
+ labelZh: HTTP 端口
+ required: true
+ rule: paramPort
+ type: number
+ - default: "http://1.2.3.4:1111"
+ envKey: NEXTAUTH_URL
+ labelEn: NextAuth URL
+ labelZh: 基本 URL
+ required: true
+ rule: paramExtUrl
+ type: text
+ - default: "http://1.2.3.4:1111"
+ envKey: NEXT_PUBLIC_BASE_URL
+ labelEn: Next Public Base URL
+ labelZh: 公共基本 URL
+ required: true
+ rule: paramExtUrl
+ type: text
+ - default: "my_ultra_secure_nextauth_secret"
+ envKey: NEXTAUTH_SECRET
+ labelEn: NextAuth Secret
+ labelZh: NextAuth 密钥
+ random: true
+ required: true
+ rule: paramComplexity
+ type: password
+ - default: ""
+ envKey: PANEL_DB_HOST
+ key: postgresql
+ labelEn: PostgreSQL Database Service
+ labelZh: PostgreSQL 数据库服务
+ required: true
+ type: service
+ - default: "5432"
+ edit: true
+ envKey: PANEL_DB_PORT
+ labelEn: Database Port Number
+ labelZh: 数据库端口号
+ required: true
+ rule: paramPort
+ type: number
+ - default: "blinko"
+ envKey: PANEL_DB_NAME
+ labelEn: Database
+ labelZh: 数据库名
+ random: true
+ required: true
+ rule: paramCommon
+ type: text
+ - default: "blinko"
+ envKey: PANEL_DB_USER
+ labelEn: User
+ labelZh: 数据库用户
+ random: true
+ required: true
+ rule: paramCommon
+ type: text
+ - default: "blinko"
+ envKey: PANEL_DB_USER_PASSWORD
+ labelEn: Password
+ labelZh: 数据库用户密码
+ random: true
+ required: true
+ rule: paramComplexity
+ type: password
diff --git a/apps/blinko/1.0.3/docker-compose.yml b/apps/blinko/1.0.3/docker-compose.yml
new file mode 100644
index 000000000..31094b3c2
--- /dev/null
+++ b/apps/blinko/1.0.3/docker-compose.yml
@@ -0,0 +1,35 @@
+services:
+ blinko:
+ image: "blinkospace/blinko:1.0.3"
+ container_name: ${CONTAINER_NAME}
+ environment:
+ NODE_ENV: production
+ NEXTAUTH_URL: ${NEXTAUTH_URL}
+ NEXT_PUBLIC_BASE_URL: ${NEXT_PUBLIC_BASE_URL}
+ NEXTAUTH_SECRET: ${NEXTAUTH_SECRET}
+ DATABASE_URL: postgresql://${PANEL_DB_USER}:${PANEL_DB_USER_PASSWORD}@${PANEL_DB_HOST}:${PANEL_DB_PORT}/${PANEL_DB_NAME}
+ depends_on:
+ postgres:
+ condition: service_healthy
+ volumes:
+ - "./data:/app/.blinko"
+ restart: always
+ logging:
+ options:
+ max-size: "10m"
+ max-file: "3"
+ ports:
+ - "${PANEL_APP_PORT_HTTP}:1111"
+ healthcheck:
+ test: ["CMD", "curl", "-f", "http://localhost:1111/"]
+ interval: 30s
+ timeout: 10s
+ retries: 5
+ start_period: 30s
+ networks:
+ - 1panel-network
+ labels:
+ createdBy: "Apps"
+networks:
+ 1panel-network:
+ external: true
\ No newline at end of file
diff --git a/apps/cup/latest/data.yml b/apps/cup/latest/data.yml
new file mode 100644
index 000000000..5d5549152
--- /dev/null
+++ b/apps/cup/latest/data.yml
@@ -0,0 +1,10 @@
+additionalProperties:
+ formFields:
+ - default: "51230"
+ edit: true
+ envKey: PANEL_APP_PORT_HTTP
+ labelEn: Service Port 8000
+ labelZh: 服务端口 8000
+ required: true
+ rule: paramPort
+ type: number
diff --git a/apps/cup/latest/docker-compose.yml b/apps/cup/latest/docker-compose.yml
new file mode 100644
index 000000000..a61d331c6
--- /dev/null
+++ b/apps/cup/latest/docker-compose.yml
@@ -0,0 +1,17 @@
+services:
+ cup:
+ image: ghcr.io/sergi0g/cup:latest
+ container_name: ${CONTAINER_NAME}
+ restart: unless-stopped
+ ports:
+ - ${PANEL_APP_PORT_HTTP}:8000
+ volumes:
+ - /var/run/docker.sock:/var/run/docker.sock
+ networks:
+ - 1panel-network
+ labels:
+ createdBy: Apps
+ command: serve
+networks:
+ 1panel-network:
+ external: true
diff --git a/apps/deepseek-free-api/latest/data.yml b/apps/deepseek-free-api/latest/data.yml
new file mode 100644
index 000000000..e558009bc
--- /dev/null
+++ b/apps/deepseek-free-api/latest/data.yml
@@ -0,0 +1,10 @@
+additionalProperties:
+ formFields:
+ - default: "8001"
+ edit: true
+ envKey: PANEL_APP_PORT_HTTP
+ labelEn: Service Port
+ labelZh: 服务端口
+ required: true
+ rule: paramPort
+ type: number
diff --git a/apps/deepseek-free-api/latest/docker-compose.yml b/apps/deepseek-free-api/latest/docker-compose.yml
new file mode 100644
index 000000000..92a9c1843
--- /dev/null
+++ b/apps/deepseek-free-api/latest/docker-compose.yml
@@ -0,0 +1,16 @@
+services:
+ deepseek-free-api:
+ image: vinlic/deepseek-free-api:latest
+ container_name: ${CONTAINER_NAME}
+ ports:
+ - ${PANEL_APP_PORT_HTTP}:8000
+ networks:
+ - 1panel-network
+ environment:
+ - TZ=Asia/Shanghai
+ labels:
+ createdBy: Apps
+ restart: always
+networks:
+ 1panel-network:
+ external: true
diff --git a/apps/demo/data.yml b/apps/demo/data.yml
new file mode 100644
index 000000000..478a57b59
--- /dev/null
+++ b/apps/demo/data.yml
@@ -0,0 +1,19 @@
+name: 1Panel Apps
+tags:
+ - 建站
+title: 适配 1Panel 应用商店的通用应用模板
+description: 适配 1Panel 应用商店的通用应用模板
+additionalProperties:
+ key: 1panel-apps
+ name: 1Panel Apps
+ tags:
+ - Website
+ shortDescZh: 适配 1Panel 应用商店的通用应用模板
+ shortDescEn: Universal app template for the 1Panel App Store
+ type: website
+ crossVersionUpdate: true
+ limit: 0
+ recommend: 0
+ website: https://github.com/okxlin/appstore
+ github: https://github.com/okxlin/appstore
+ document: https://github.com/okxlin/appstore
diff --git a/apps/dify/1.1.1/conf/certbot/README.md b/apps/dify/1.1.1/conf/certbot/README.md
new file mode 100644
index 000000000..21be34b33
--- /dev/null
+++ b/apps/dify/1.1.1/conf/certbot/README.md
@@ -0,0 +1,76 @@
+# Launching new servers with SSL certificates
+
+## Short description
+
+docker compose certbot configurations with Backward compatibility (without certbot container).
+Use `docker compose --profile certbot up` to use this features.
+
+## The simplest way for launching new servers with SSL certificates
+
+1. Get letsencrypt certs
+ set `.env` values
+ ```properties
+ NGINX_SSL_CERT_FILENAME=fullchain.pem
+ NGINX_SSL_CERT_KEY_FILENAME=privkey.pem
+ NGINX_ENABLE_CERTBOT_CHALLENGE=true
+ CERTBOT_DOMAIN=your_domain.com
+ CERTBOT_EMAIL=example@your_domain.com
+ ```
+ execute command:
+ ```shell
+ docker network prune
+ docker compose --profile certbot up --force-recreate -d
+ ```
+ then after the containers launched:
+ ```shell
+ docker compose exec -it certbot /bin/sh /update-cert.sh
+ ```
+2. Edit `.env` file and `docker compose --profile certbot up` again.
+ set `.env` value additionally
+ ```properties
+ NGINX_HTTPS_ENABLED=true
+ ```
+ execute command:
+ ```shell
+ docker compose --profile certbot up -d --no-deps --force-recreate nginx
+ ```
+ Then you can access your serve with HTTPS.
+ [https://your_domain.com](https://your_domain.com)
+
+## SSL certificates renewal
+
+For SSL certificates renewal, execute commands below:
+
+```shell
+docker compose exec -it certbot /bin/sh /update-cert.sh
+docker compose exec nginx nginx -s reload
+```
+
+## Options for certbot
+
+`CERTBOT_OPTIONS` key might be helpful for testing. i.e.,
+
+```properties
+CERTBOT_OPTIONS=--dry-run
+```
+
+To apply changes to `CERTBOT_OPTIONS`, regenerate the certbot container before updating the certificates.
+
+```shell
+docker compose --profile certbot up -d --no-deps --force-recreate certbot
+docker compose exec -it certbot /bin/sh /update-cert.sh
+```
+
+Then, reload the nginx container if necessary.
+
+```shell
+docker compose exec nginx nginx -s reload
+```
+
+## For legacy servers
+
+To use cert files dir `nginx/ssl` as before, simply launch containers WITHOUT `--profile certbot` option.
+
+```shell
+docker compose up -d
+```
diff --git a/apps/dify/1.1.1/conf/certbot/docker-entrypoint.sh b/apps/dify/1.1.1/conf/certbot/docker-entrypoint.sh
new file mode 100644
index 000000000..a70ecd825
--- /dev/null
+++ b/apps/dify/1.1.1/conf/certbot/docker-entrypoint.sh
@@ -0,0 +1,30 @@
+#!/bin/sh
+set -e
+
+printf '%s\n' "Docker entrypoint script is running"
+
+printf '%s\n' "\nChecking specific environment variables:"
+printf '%s\n' "CERTBOT_EMAIL: ${CERTBOT_EMAIL:-Not set}"
+printf '%s\n' "CERTBOT_DOMAIN: ${CERTBOT_DOMAIN:-Not set}"
+printf '%s\n' "CERTBOT_OPTIONS: ${CERTBOT_OPTIONS:-Not set}"
+
+printf '%s\n' "\nChecking mounted directories:"
+for dir in "/etc/letsencrypt" "/var/www/html" "/var/log/letsencrypt"; do
+ if [ -d "$dir" ]; then
+ printf '%s\n' "$dir exists. Contents:"
+ ls -la "$dir"
+ else
+ printf '%s\n' "$dir does not exist."
+ fi
+done
+
+printf '%s\n' "\nGenerating update-cert.sh from template"
+sed -e "s|\${CERTBOT_EMAIL}|$CERTBOT_EMAIL|g" \
+ -e "s|\${CERTBOT_DOMAIN}|$CERTBOT_DOMAIN|g" \
+ -e "s|\${CERTBOT_OPTIONS}|$CERTBOT_OPTIONS|g" \
+ /update-cert.template.txt > /update-cert.sh
+
+chmod +x /update-cert.sh
+
+printf '%s\n' "\nExecuting command:" "$@"
+exec "$@"
diff --git a/apps/dify/1.1.1/conf/certbot/update-cert.template.txt b/apps/dify/1.1.1/conf/certbot/update-cert.template.txt
new file mode 100644
index 000000000..16786a192
--- /dev/null
+++ b/apps/dify/1.1.1/conf/certbot/update-cert.template.txt
@@ -0,0 +1,19 @@
+#!/bin/bash
+set -e
+
+DOMAIN="${CERTBOT_DOMAIN}"
+EMAIL="${CERTBOT_EMAIL}"
+OPTIONS="${CERTBOT_OPTIONS}"
+CERT_NAME="${DOMAIN}" # 証明書名をドメイン名と同じにする
+
+# Check if the certificate already exists
+if [ -f "/etc/letsencrypt/renewal/${CERT_NAME}.conf" ]; then
+ echo "Certificate exists. Attempting to renew..."
+ certbot renew --noninteractive --cert-name ${CERT_NAME} --webroot --webroot-path=/var/www/html --email ${EMAIL} --agree-tos --no-eff-email ${OPTIONS}
+else
+ echo "Certificate does not exist. Obtaining a new certificate..."
+ certbot certonly --noninteractive --webroot --webroot-path=/var/www/html --email ${EMAIL} --agree-tos --no-eff-email -d ${DOMAIN} ${OPTIONS}
+fi
+echo "Certificate operation successful"
+# Note: Nginx reload should be handled outside this container
+echo "Please ensure to reload Nginx to apply any certificate changes."
diff --git a/apps/dify/1.1.1/conf/couchbase-server/Dockerfile b/apps/dify/1.1.1/conf/couchbase-server/Dockerfile
new file mode 100644
index 000000000..bd8af6415
--- /dev/null
+++ b/apps/dify/1.1.1/conf/couchbase-server/Dockerfile
@@ -0,0 +1,4 @@
+FROM couchbase/server:latest AS stage_base
+# FROM couchbase:latest AS stage_base
+COPY init-cbserver.sh /opt/couchbase/init/
+RUN chmod +x /opt/couchbase/init/init-cbserver.sh
\ No newline at end of file
diff --git a/apps/dify/1.1.1/conf/couchbase-server/init-cbserver.sh b/apps/dify/1.1.1/conf/couchbase-server/init-cbserver.sh
new file mode 100644
index 000000000..e66bc1853
--- /dev/null
+++ b/apps/dify/1.1.1/conf/couchbase-server/init-cbserver.sh
@@ -0,0 +1,44 @@
+#!/bin/bash
+# used to start couchbase server - can't get around this as docker compose only allows you to start one command - so we have to start couchbase like the standard couchbase Dockerfile would
+# https://github.com/couchbase/docker/blob/master/enterprise/couchbase-server/7.2.0/Dockerfile#L88
+
+/entrypoint.sh couchbase-server &
+
+# track if setup is complete so we don't try to setup again
+FILE=/opt/couchbase/init/setupComplete.txt
+
+if ! [ -f "$FILE" ]; then
+ # used to automatically create the cluster based on environment variables
+ # https://docs.couchbase.com/server/current/cli/cbcli/couchbase-cli-cluster-init.html
+
+ echo $COUCHBASE_ADMINISTRATOR_USERNAME ":" $COUCHBASE_ADMINISTRATOR_PASSWORD
+
+ sleep 20s
+ /opt/couchbase/bin/couchbase-cli cluster-init -c 127.0.0.1 \
+ --cluster-username $COUCHBASE_ADMINISTRATOR_USERNAME \
+ --cluster-password $COUCHBASE_ADMINISTRATOR_PASSWORD \
+ --services data,index,query,fts \
+ --cluster-ramsize $COUCHBASE_RAM_SIZE \
+ --cluster-index-ramsize $COUCHBASE_INDEX_RAM_SIZE \
+ --cluster-eventing-ramsize $COUCHBASE_EVENTING_RAM_SIZE \
+ --cluster-fts-ramsize $COUCHBASE_FTS_RAM_SIZE \
+ --index-storage-setting default
+
+ sleep 2s
+
+ # used to auto create the bucket based on environment variables
+ # https://docs.couchbase.com/server/current/cli/cbcli/couchbase-cli-bucket-create.html
+
+ /opt/couchbase/bin/couchbase-cli bucket-create -c localhost:8091 \
+ --username $COUCHBASE_ADMINISTRATOR_USERNAME \
+ --password $COUCHBASE_ADMINISTRATOR_PASSWORD \
+ --bucket $COUCHBASE_BUCKET \
+ --bucket-ramsize $COUCHBASE_BUCKET_RAMSIZE \
+ --bucket-type couchbase
+
+ # create file so we know that the cluster is setup and don't run the setup again
+ touch $FILE
+fi
+ # docker compose will stop the container from running unless we do this
+ # known issue and workaround
+ tail -f /dev/null
diff --git a/apps/dify/1.1.1/conf/elasticsearch/docker-entrypoint.sh b/apps/dify/1.1.1/conf/elasticsearch/docker-entrypoint.sh
new file mode 100644
index 000000000..6669aec5a
--- /dev/null
+++ b/apps/dify/1.1.1/conf/elasticsearch/docker-entrypoint.sh
@@ -0,0 +1,25 @@
+#!/bin/bash
+
+set -e
+
+if [ "${VECTOR_STORE}" = "elasticsearch-ja" ]; then
+ # Check if the ICU tokenizer plugin is installed
+ if ! /usr/share/elasticsearch/bin/elasticsearch-plugin list | grep -q analysis-icu; then
+ printf '%s\n' "Installing the ICU tokenizer plugin"
+ if ! /usr/share/elasticsearch/bin/elasticsearch-plugin install analysis-icu; then
+ printf '%s\n' "Failed to install the ICU tokenizer plugin"
+ exit 1
+ fi
+ fi
+ # Check if the Japanese language analyzer plugin is installed
+ if ! /usr/share/elasticsearch/bin/elasticsearch-plugin list | grep -q analysis-kuromoji; then
+ printf '%s\n' "Installing the Japanese language analyzer plugin"
+ if ! /usr/share/elasticsearch/bin/elasticsearch-plugin install analysis-kuromoji; then
+ printf '%s\n' "Failed to install the Japanese language analyzer plugin"
+ exit 1
+ fi
+ fi
+fi
+
+# Run the original entrypoint script
+exec /bin/tini -- /usr/local/bin/docker-entrypoint.sh
diff --git a/apps/dify/1.1.1/conf/nginx/conf.d/default.conf.template b/apps/dify/1.1.1/conf/nginx/conf.d/default.conf.template
new file mode 100644
index 000000000..a458412d1
--- /dev/null
+++ b/apps/dify/1.1.1/conf/nginx/conf.d/default.conf.template
@@ -0,0 +1,48 @@
+# Please do not directly edit this file. Instead, modify the .env variables related to NGINX configuration.
+
+server {
+ listen ${NGINX_PORT};
+ server_name ${NGINX_SERVER_NAME};
+
+ location /console/api {
+ proxy_pass http://api:5001;
+ include proxy.conf;
+ }
+
+ location /api {
+ proxy_pass http://api:5001;
+ include proxy.conf;
+ }
+
+ location /v1 {
+ proxy_pass http://api:5001;
+ include proxy.conf;
+ }
+
+ location /files {
+ proxy_pass http://api:5001;
+ include proxy.conf;
+ }
+
+ location /explore {
+ proxy_pass http://web:3000;
+ include proxy.conf;
+ }
+
+ location /e/ {
+ proxy_pass http://plugin_daemon:5002;
+ proxy_set_header Dify-Hook-Url $scheme://$host$request_uri;
+ include proxy.conf;
+ }
+
+ location / {
+ proxy_pass http://web:3000;
+ include proxy.conf;
+ }
+
+ # placeholder for acme challenge location
+ ${ACME_CHALLENGE_LOCATION}
+
+ # placeholder for https config defined in https.conf.template
+ ${HTTPS_CONFIG}
+}
diff --git a/apps/dify/1.1.1/conf/nginx/docker-entrypoint.sh b/apps/dify/1.1.1/conf/nginx/docker-entrypoint.sh
new file mode 100644
index 000000000..d343cb3ef
--- /dev/null
+++ b/apps/dify/1.1.1/conf/nginx/docker-entrypoint.sh
@@ -0,0 +1,39 @@
+#!/bin/bash
+
+if [ "${NGINX_HTTPS_ENABLED}" = "true" ]; then
+ # Check if the certificate and key files for the specified domain exist
+ if [ -n "${CERTBOT_DOMAIN}" ] && \
+ [ -f "/etc/letsencrypt/live/${CERTBOT_DOMAIN}/${NGINX_SSL_CERT_FILENAME}" ] && \
+ [ -f "/etc/letsencrypt/live/${CERTBOT_DOMAIN}/${NGINX_SSL_CERT_KEY_FILENAME}" ]; then
+ SSL_CERTIFICATE_PATH="/etc/letsencrypt/live/${CERTBOT_DOMAIN}/${NGINX_SSL_CERT_FILENAME}"
+ SSL_CERTIFICATE_KEY_PATH="/etc/letsencrypt/live/${CERTBOT_DOMAIN}/${NGINX_SSL_CERT_KEY_FILENAME}"
+ else
+ SSL_CERTIFICATE_PATH="/etc/ssl/${NGINX_SSL_CERT_FILENAME}"
+ SSL_CERTIFICATE_KEY_PATH="/etc/ssl/${NGINX_SSL_CERT_KEY_FILENAME}"
+ fi
+ export SSL_CERTIFICATE_PATH
+ export SSL_CERTIFICATE_KEY_PATH
+
+ # set the HTTPS_CONFIG environment variable to the content of the https.conf.template
+ HTTPS_CONFIG=$(envsubst < /etc/nginx/https.conf.template)
+ export HTTPS_CONFIG
+ # Substitute the HTTPS_CONFIG in the default.conf.template with content from https.conf.template
+ envsubst '${HTTPS_CONFIG}' < /etc/nginx/conf.d/default.conf.template > /etc/nginx/conf.d/default.conf
+fi
+
+if [ "${NGINX_ENABLE_CERTBOT_CHALLENGE}" = "true" ]; then
+ ACME_CHALLENGE_LOCATION='location /.well-known/acme-challenge/ { root /var/www/html; }'
+else
+ ACME_CHALLENGE_LOCATION=''
+fi
+export ACME_CHALLENGE_LOCATION
+
+env_vars=$(printenv | cut -d= -f1 | sed 's/^/$/g' | paste -sd, -)
+
+envsubst "$env_vars" < /etc/nginx/nginx.conf.template > /etc/nginx/nginx.conf
+envsubst "$env_vars" < /etc/nginx/proxy.conf.template > /etc/nginx/proxy.conf
+
+envsubst < /etc/nginx/conf.d/default.conf.template > /etc/nginx/conf.d/default.conf
+
+# Start Nginx using the default entrypoint
+exec nginx -g 'daemon off;'
\ No newline at end of file
diff --git a/apps/dify/1.1.1/conf/nginx/https.conf.template b/apps/dify/1.1.1/conf/nginx/https.conf.template
new file mode 100644
index 000000000..95ea36f46
--- /dev/null
+++ b/apps/dify/1.1.1/conf/nginx/https.conf.template
@@ -0,0 +1,9 @@
+# Please do not directly edit this file. Instead, modify the .env variables related to NGINX configuration.
+
+listen ${NGINX_SSL_PORT} ssl;
+ssl_certificate ${SSL_CERTIFICATE_PATH};
+ssl_certificate_key ${SSL_CERTIFICATE_KEY_PATH};
+ssl_protocols ${NGINX_SSL_PROTOCOLS};
+ssl_prefer_server_ciphers on;
+ssl_session_cache shared:SSL:10m;
+ssl_session_timeout 10m;
\ No newline at end of file
diff --git a/apps/dify/1.1.1/conf/nginx/nginx.conf.template b/apps/dify/1.1.1/conf/nginx/nginx.conf.template
new file mode 100644
index 000000000..32a571653
--- /dev/null
+++ b/apps/dify/1.1.1/conf/nginx/nginx.conf.template
@@ -0,0 +1,34 @@
+# Please do not directly edit this file. Instead, modify the .env variables related to NGINX configuration.
+
+user nginx;
+worker_processes ${NGINX_WORKER_PROCESSES};
+
+error_log /var/log/nginx/error.log notice;
+pid /var/run/nginx.pid;
+
+
+events {
+ worker_connections 1024;
+}
+
+
+http {
+ include /etc/nginx/mime.types;
+ default_type application/octet-stream;
+
+ log_format main '$remote_addr - $remote_user [$time_local] "$request" '
+ '$status $body_bytes_sent "$http_referer" '
+ '"$http_user_agent" "$http_x_forwarded_for"';
+
+ access_log /var/log/nginx/access.log main;
+
+ sendfile on;
+ #tcp_nopush on;
+
+ keepalive_timeout ${NGINX_KEEPALIVE_TIMEOUT};
+
+ #gzip on;
+ client_max_body_size ${NGINX_CLIENT_MAX_BODY_SIZE};
+
+ include /etc/nginx/conf.d/*.conf;
+}
\ No newline at end of file
diff --git a/apps/dify/1.1.1/conf/nginx/proxy.conf.template b/apps/dify/1.1.1/conf/nginx/proxy.conf.template
new file mode 100644
index 000000000..117f80614
--- /dev/null
+++ b/apps/dify/1.1.1/conf/nginx/proxy.conf.template
@@ -0,0 +1,11 @@
+# Please do not directly edit this file. Instead, modify the .env variables related to NGINX configuration.
+
+proxy_set_header Host $host;
+proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
+proxy_set_header X-Forwarded-Proto $scheme;
+proxy_set_header X-Forwarded-Port $server_port;
+proxy_http_version 1.1;
+proxy_set_header Connection "";
+proxy_buffering off;
+proxy_read_timeout ${NGINX_PROXY_READ_TIMEOUT};
+proxy_send_timeout ${NGINX_PROXY_SEND_TIMEOUT};
diff --git a/apps/dify/1.1.1/conf/nginx/ssl/.gitkeep b/apps/dify/1.1.1/conf/nginx/ssl/.gitkeep
new file mode 100644
index 000000000..e69de29bb
diff --git a/apps/dify/1.1.1/conf/ssrf_proxy/docker-entrypoint.sh b/apps/dify/1.1.1/conf/ssrf_proxy/docker-entrypoint.sh
new file mode 100644
index 000000000..613897bb7
--- /dev/null
+++ b/apps/dify/1.1.1/conf/ssrf_proxy/docker-entrypoint.sh
@@ -0,0 +1,42 @@
+#!/bin/bash
+
+# Modified based on Squid OCI image entrypoint
+
+# This entrypoint aims to forward the squid logs to stdout to assist users of
+# common container related tooling (e.g., kubernetes, docker-compose, etc) to
+# access the service logs.
+
+# Moreover, it invokes the squid binary, leaving all the desired parameters to
+# be provided by the "command" passed to the spawned container. If no command
+# is provided by the user, the default behavior (as per the CMD statement in
+# the Dockerfile) will be to use Ubuntu's default configuration [1] and run
+# squid with the "-NYC" options to mimic the behavior of the Ubuntu provided
+# systemd unit.
+
+# [1] The default configuration is changed in the Dockerfile to allow local
+# network connections. See the Dockerfile for further information.
+
+echo "[ENTRYPOINT] re-create snakeoil self-signed certificate removed in the build process"
+if [ ! -f /etc/ssl/private/ssl-cert-snakeoil.key ]; then
+ /usr/sbin/make-ssl-cert generate-default-snakeoil --force-overwrite > /dev/null 2>&1
+fi
+
+tail -F /var/log/squid/access.log 2>/dev/null &
+tail -F /var/log/squid/error.log 2>/dev/null &
+tail -F /var/log/squid/store.log 2>/dev/null &
+tail -F /var/log/squid/cache.log 2>/dev/null &
+
+# Replace environment variables in the template and output to the squid.conf
+echo "[ENTRYPOINT] replacing environment variables in the template"
+awk '{
+ while(match($0, /\${[A-Za-z_][A-Za-z_0-9]*}/)) {
+ var = substr($0, RSTART+2, RLENGTH-3)
+ val = ENVIRON[var]
+ $0 = substr($0, 1, RSTART-1) val substr($0, RSTART+RLENGTH)
+ }
+ print
+}' /etc/squid/squid.conf.template > /etc/squid/squid.conf
+
+/usr/sbin/squid -Nz
+echo "[ENTRYPOINT] starting squid"
+/usr/sbin/squid -f /etc/squid/squid.conf -NYC 1
diff --git a/apps/dify/1.1.1/conf/ssrf_proxy/squid.conf.template b/apps/dify/1.1.1/conf/ssrf_proxy/squid.conf.template
new file mode 100644
index 000000000..676fe7379
--- /dev/null
+++ b/apps/dify/1.1.1/conf/ssrf_proxy/squid.conf.template
@@ -0,0 +1,51 @@
+acl localnet src 0.0.0.1-0.255.255.255 # RFC 1122 "this" network (LAN)
+acl localnet src 10.0.0.0/8 # RFC 1918 local private network (LAN)
+acl localnet src 100.64.0.0/10 # RFC 6598 shared address space (CGN)
+acl localnet src 169.254.0.0/16 # RFC 3927 link-local (directly plugged) machines
+acl localnet src 172.16.0.0/12 # RFC 1918 local private network (LAN)
+acl localnet src 192.168.0.0/16 # RFC 1918 local private network (LAN)
+acl localnet src fc00::/7 # RFC 4193 local private network range
+acl localnet src fe80::/10 # RFC 4291 link-local (directly plugged) machines
+acl SSL_ports port 443
+# acl SSL_ports port 1025-65535 # Enable the configuration to resolve this issue: https://github.com/langgenius/dify/issues/12792
+acl Safe_ports port 80 # http
+acl Safe_ports port 21 # ftp
+acl Safe_ports port 443 # https
+acl Safe_ports port 70 # gopher
+acl Safe_ports port 210 # wais
+acl Safe_ports port 1025-65535 # unregistered ports
+acl Safe_ports port 280 # http-mgmt
+acl Safe_ports port 488 # gss-http
+acl Safe_ports port 591 # filemaker
+acl Safe_ports port 777 # multiling http
+acl CONNECT method CONNECT
+http_access deny !Safe_ports
+http_access deny CONNECT !SSL_ports
+http_access allow localhost manager
+http_access deny manager
+http_access allow localhost
+include /etc/squid/conf.d/*.conf
+http_access deny all
+
+################################## Proxy Server ################################
+http_port ${HTTP_PORT}
+coredump_dir ${COREDUMP_DIR}
+refresh_pattern ^ftp: 1440 20% 10080
+refresh_pattern ^gopher: 1440 0% 1440
+refresh_pattern -i (/cgi-bin/|\?) 0 0% 0
+refresh_pattern \/(Packages|Sources)(|\.bz2|\.gz|\.xz)$ 0 0% 0 refresh-ims
+refresh_pattern \/Release(|\.gpg)$ 0 0% 0 refresh-ims
+refresh_pattern \/InRelease$ 0 0% 0 refresh-ims
+refresh_pattern \/(Translation-.*)(|\.bz2|\.gz|\.xz)$ 0 0% 0 refresh-ims
+refresh_pattern . 0 20% 4320
+
+
+# cache_dir ufs /var/spool/squid 100 16 256
+# upstream proxy, set to your own upstream proxy IP to avoid SSRF attacks
+# cache_peer 172.1.1.1 parent 3128 0 no-query no-digest no-netdb-exchange default
+
+################################## Reverse Proxy To Sandbox ################################
+http_port ${REVERSE_PROXY_PORT} accel vhost
+cache_peer ${SANDBOX_HOST} parent ${SANDBOX_PORT} 0 no-query originserver
+acl src_all src all
+http_access allow src_all
diff --git a/apps/dify/1.1.1/conf/startupscripts/init.sh b/apps/dify/1.1.1/conf/startupscripts/init.sh
new file mode 100644
index 000000000..c6e6e1966
--- /dev/null
+++ b/apps/dify/1.1.1/conf/startupscripts/init.sh
@@ -0,0 +1,13 @@
+#!/usr/bin/env bash
+
+DB_INITIALIZED="/opt/oracle/oradata/dbinit"
+#[ -f ${DB_INITIALIZED} ] && exit
+#touch ${DB_INITIALIZED}
+if [ -f ${DB_INITIALIZED} ]; then
+ echo 'File exists. Standards for have been Init'
+ exit
+else
+ echo 'File does not exist. Standards for first time Start up this DB'
+ "$ORACLE_HOME"/bin/sqlplus -s "/ as sysdba" @"/opt/oracle/scripts/startup/init_user.script";
+ touch ${DB_INITIALIZED}
+fi
diff --git a/apps/dify/1.1.1/conf/startupscripts/init_user.script b/apps/dify/1.1.1/conf/startupscripts/init_user.script
new file mode 100644
index 000000000..7aa7c2804
--- /dev/null
+++ b/apps/dify/1.1.1/conf/startupscripts/init_user.script
@@ -0,0 +1,10 @@
+show pdbs;
+ALTER SYSTEM SET PROCESSES=500 SCOPE=SPFILE;
+alter session set container= freepdb1;
+create user dify identified by dify DEFAULT TABLESPACE users quota unlimited on users;
+grant DB_DEVELOPER_ROLE to dify;
+
+BEGIN
+CTX_DDL.CREATE_PREFERENCE('my_chinese_vgram_lexer','CHINESE_VGRAM_LEXER');
+END;
+/
diff --git a/apps/dify/1.1.1/conf/tidb/config/pd.toml b/apps/dify/1.1.1/conf/tidb/config/pd.toml
new file mode 100644
index 000000000..042b251e4
--- /dev/null
+++ b/apps/dify/1.1.1/conf/tidb/config/pd.toml
@@ -0,0 +1,4 @@
+# PD Configuration File reference:
+# https://docs.pingcap.com/tidb/stable/pd-configuration-file#pd-configuration-file
+[replication]
+max-replicas = 1
\ No newline at end of file
diff --git a/apps/dify/1.1.1/conf/tidb/config/tiflash-learner.toml b/apps/dify/1.1.1/conf/tidb/config/tiflash-learner.toml
new file mode 100644
index 000000000..5098829aa
--- /dev/null
+++ b/apps/dify/1.1.1/conf/tidb/config/tiflash-learner.toml
@@ -0,0 +1,13 @@
+# TiFlash tiflash-learner.toml Configuration File reference:
+# https://docs.pingcap.com/tidb/stable/tiflash-configuration#configure-the-tiflash-learnertoml-file
+
+log-file = "/logs/tiflash_tikv.log"
+
+[server]
+engine-addr = "tiflash:4030"
+addr = "0.0.0.0:20280"
+advertise-addr = "tiflash:20280"
+status-addr = "tiflash:20292"
+
+[storage]
+data-dir = "/data/flash"
diff --git a/apps/dify/1.1.1/conf/tidb/config/tiflash.toml b/apps/dify/1.1.1/conf/tidb/config/tiflash.toml
new file mode 100644
index 000000000..30ac13efc
--- /dev/null
+++ b/apps/dify/1.1.1/conf/tidb/config/tiflash.toml
@@ -0,0 +1,19 @@
+# TiFlash tiflash.toml Configuration File reference:
+# https://docs.pingcap.com/tidb/stable/tiflash-configuration#configure-the-tiflashtoml-file
+
+listen_host = "0.0.0.0"
+path = "/data"
+
+[flash]
+tidb_status_addr = "tidb:10080"
+service_addr = "tiflash:4030"
+
+[flash.proxy]
+config = "/tiflash-learner.toml"
+
+[logger]
+errorlog = "/logs/tiflash_error.log"
+log = "/logs/tiflash.log"
+
+[raft]
+pd_addr = "pd0:2379"
diff --git a/apps/dify/1.1.1/conf/tidb/docker-compose.yaml b/apps/dify/1.1.1/conf/tidb/docker-compose.yaml
new file mode 100644
index 000000000..fa1577017
--- /dev/null
+++ b/apps/dify/1.1.1/conf/tidb/docker-compose.yaml
@@ -0,0 +1,62 @@
+services:
+ pd0:
+ image: pingcap/pd:v8.5.1
+ # ports:
+ # - "2379"
+ volumes:
+ - ./config/pd.toml:/pd.toml:ro
+ - ./volumes/data:/data
+ - ./volumes/logs:/logs
+ command:
+ - --name=pd0
+ - --client-urls=http://0.0.0.0:2379
+ - --peer-urls=http://0.0.0.0:2380
+ - --advertise-client-urls=http://pd0:2379
+ - --advertise-peer-urls=http://pd0:2380
+ - --initial-cluster=pd0=http://pd0:2380
+ - --data-dir=/data/pd
+ - --config=/pd.toml
+ - --log-file=/logs/pd.log
+ restart: on-failure
+ tikv:
+ image: pingcap/tikv:v8.5.1
+ volumes:
+ - ./volumes/data:/data
+ - ./volumes/logs:/logs
+ command:
+ - --addr=0.0.0.0:20160
+ - --advertise-addr=tikv:20160
+ - --status-addr=tikv:20180
+ - --data-dir=/data/tikv
+ - --pd=pd0:2379
+ - --log-file=/logs/tikv.log
+ depends_on:
+ - "pd0"
+ restart: on-failure
+ tidb:
+ image: pingcap/tidb:v8.5.1
+ # ports:
+ # - "4000:4000"
+ volumes:
+ - ./volumes/logs:/logs
+ command:
+ - --advertise-address=tidb
+ - --store=tikv
+ - --path=pd0:2379
+ - --log-file=/logs/tidb.log
+ depends_on:
+ - "tikv"
+ restart: on-failure
+ tiflash:
+ image: pingcap/tiflash:v8.5.1
+ volumes:
+ - ./config/tiflash.toml:/tiflash.toml:ro
+ - ./config/tiflash-learner.toml:/tiflash-learner.toml:ro
+ - ./volumes/data:/data
+ - ./volumes/logs:/logs
+ command:
+ - --config=/tiflash.toml
+ depends_on:
+ - "tikv"
+ - "tidb"
+ restart: on-failure
diff --git a/apps/dify/1.1.1/conf/volumes/myscale/config/users.d/custom_users_config.xml b/apps/dify/1.1.1/conf/volumes/myscale/config/users.d/custom_users_config.xml
new file mode 100644
index 000000000..67f24b69e
--- /dev/null
+++ b/apps/dify/1.1.1/conf/volumes/myscale/config/users.d/custom_users_config.xml
@@ -0,0 +1,17 @@
+
+
+
+
+
+ ::1
+ 127.0.0.1
+ 10.0.0.0/8
+ 172.16.0.0/12
+ 192.168.0.0/16
+
+ default
+ default
+ 1
+
+
+
\ No newline at end of file
diff --git a/apps/dify/1.1.1/conf/volumes/oceanbase/init.d/vec_memory.sql b/apps/dify/1.1.1/conf/volumes/oceanbase/init.d/vec_memory.sql
new file mode 100644
index 000000000..f4c283fdf
--- /dev/null
+++ b/apps/dify/1.1.1/conf/volumes/oceanbase/init.d/vec_memory.sql
@@ -0,0 +1 @@
+ALTER SYSTEM SET ob_vector_memory_limit_percentage = 30;
\ No newline at end of file
diff --git a/apps/dify/1.1.1/conf/volumes/opensearch/opensearch_dashboards.yml b/apps/dify/1.1.1/conf/volumes/opensearch/opensearch_dashboards.yml
new file mode 100644
index 000000000..f50d63bbb
--- /dev/null
+++ b/apps/dify/1.1.1/conf/volumes/opensearch/opensearch_dashboards.yml
@@ -0,0 +1,222 @@
+---
+# Copyright OpenSearch Contributors
+# SPDX-License-Identifier: Apache-2.0
+
+# Description:
+# Default configuration for OpenSearch Dashboards
+
+# OpenSearch Dashboards is served by a back end server. This setting specifies the port to use.
+# server.port: 5601
+
+# Specifies the address to which the OpenSearch Dashboards server will bind. IP addresses and host names are both valid values.
+# The default is 'localhost', which usually means remote machines will not be able to connect.
+# To allow connections from remote users, set this parameter to a non-loopback address.
+# server.host: "localhost"
+
+# Enables you to specify a path to mount OpenSearch Dashboards at if you are running behind a proxy.
+# Use the `server.rewriteBasePath` setting to tell OpenSearch Dashboards if it should remove the basePath
+# from requests it receives, and to prevent a deprecation warning at startup.
+# This setting cannot end in a slash.
+# server.basePath: ""
+
+# Specifies whether OpenSearch Dashboards should rewrite requests that are prefixed with
+# `server.basePath` or require that they are rewritten by your reverse proxy.
+# server.rewriteBasePath: false
+
+# The maximum payload size in bytes for incoming server requests.
+# server.maxPayloadBytes: 1048576
+
+# The OpenSearch Dashboards server's name. This is used for display purposes.
+# server.name: "your-hostname"
+
+# The URLs of the OpenSearch instances to use for all your queries.
+# opensearch.hosts: ["http://localhost:9200"]
+
+# OpenSearch Dashboards uses an index in OpenSearch to store saved searches, visualizations and
+# dashboards. OpenSearch Dashboards creates a new index if the index doesn't already exist.
+# opensearchDashboards.index: ".opensearch_dashboards"
+
+# The default application to load.
+# opensearchDashboards.defaultAppId: "home"
+
+# Setting for an optimized healthcheck that only uses the local OpenSearch node to do Dashboards healthcheck.
+# This settings should be used for large clusters or for clusters with ingest heavy nodes.
+# It allows Dashboards to only healthcheck using the local OpenSearch node rather than fan out requests across all nodes.
+#
+# It requires the user to create an OpenSearch node attribute with the same name as the value used in the setting
+# This node attribute should assign all nodes of the same cluster an integer value that increments with each new cluster that is spun up
+# e.g. in opensearch.yml file you would set the value to a setting using node.attr.cluster_id:
+# Should only be enabled if there is a corresponding node attribute created in your OpenSearch config that matches the value here
+# opensearch.optimizedHealthcheckId: "cluster_id"
+
+# If your OpenSearch is protected with basic authentication, these settings provide
+# the username and password that the OpenSearch Dashboards server uses to perform maintenance on the OpenSearch Dashboards
+# index at startup. Your OpenSearch Dashboards users still need to authenticate with OpenSearch, which
+# is proxied through the OpenSearch Dashboards server.
+# opensearch.username: "opensearch_dashboards_system"
+# opensearch.password: "pass"
+
+# Enables SSL and paths to the PEM-format SSL certificate and SSL key files, respectively.
+# These settings enable SSL for outgoing requests from the OpenSearch Dashboards server to the browser.
+# server.ssl.enabled: false
+# server.ssl.certificate: /path/to/your/server.crt
+# server.ssl.key: /path/to/your/server.key
+
+# Optional settings that provide the paths to the PEM-format SSL certificate and key files.
+# These files are used to verify the identity of OpenSearch Dashboards to OpenSearch and are required when
+# xpack.security.http.ssl.client_authentication in OpenSearch is set to required.
+# opensearch.ssl.certificate: /path/to/your/client.crt
+# opensearch.ssl.key: /path/to/your/client.key
+
+# Optional setting that enables you to specify a path to the PEM file for the certificate
+# authority for your OpenSearch instance.
+# opensearch.ssl.certificateAuthorities: [ "/path/to/your/CA.pem" ]
+
+# To disregard the validity of SSL certificates, change this setting's value to 'none'.
+# opensearch.ssl.verificationMode: full
+
+# Time in milliseconds to wait for OpenSearch to respond to pings. Defaults to the value of
+# the opensearch.requestTimeout setting.
+# opensearch.pingTimeout: 1500
+
+# Time in milliseconds to wait for responses from the back end or OpenSearch. This value
+# must be a positive integer.
+# opensearch.requestTimeout: 30000
+
+# List of OpenSearch Dashboards client-side headers to send to OpenSearch. To send *no* client-side
+# headers, set this value to [] (an empty list).
+# opensearch.requestHeadersWhitelist: [ authorization ]
+
+# Header names and values that are sent to OpenSearch. Any custom headers cannot be overwritten
+# by client-side headers, regardless of the opensearch.requestHeadersWhitelist configuration.
+# opensearch.customHeaders: {}
+
+# Time in milliseconds for OpenSearch to wait for responses from shards. Set to 0 to disable.
+# opensearch.shardTimeout: 30000
+
+# Logs queries sent to OpenSearch. Requires logging.verbose set to true.
+# opensearch.logQueries: false
+
+# Specifies the path where OpenSearch Dashboards creates the process ID file.
+# pid.file: /var/run/opensearchDashboards.pid
+
+# Enables you to specify a file where OpenSearch Dashboards stores log output.
+# logging.dest: stdout
+
+# Set the value of this setting to true to suppress all logging output.
+# logging.silent: false
+
+# Set the value of this setting to true to suppress all logging output other than error messages.
+# logging.quiet: false
+
+# Set the value of this setting to true to log all events, including system usage information
+# and all requests.
+# logging.verbose: false
+
+# Set the interval in milliseconds to sample system and process performance
+# metrics. Minimum is 100ms. Defaults to 5000.
+# ops.interval: 5000
+
+# Specifies locale to be used for all localizable strings, dates and number formats.
+# Supported languages are the following: English - en , by default , Chinese - zh-CN .
+# i18n.locale: "en"
+
+# Set the allowlist to check input graphite Url. Allowlist is the default check list.
+# vis_type_timeline.graphiteAllowedUrls: ['https://www.hostedgraphite.com/UID/ACCESS_KEY/graphite']
+
+# Set the blocklist to check input graphite Url. Blocklist is an IP list.
+# Below is an example for reference
+# vis_type_timeline.graphiteBlockedIPs: [
+# //Loopback
+# '127.0.0.0/8',
+# '::1/128',
+# //Link-local Address for IPv6
+# 'fe80::/10',
+# //Private IP address for IPv4
+# '10.0.0.0/8',
+# '172.16.0.0/12',
+# '192.168.0.0/16',
+# //Unique local address (ULA)
+# 'fc00::/7',
+# //Reserved IP address
+# '0.0.0.0/8',
+# '100.64.0.0/10',
+# '192.0.0.0/24',
+# '192.0.2.0/24',
+# '198.18.0.0/15',
+# '192.88.99.0/24',
+# '198.51.100.0/24',
+# '203.0.113.0/24',
+# '224.0.0.0/4',
+# '240.0.0.0/4',
+# '255.255.255.255/32',
+# '::/128',
+# '2001:db8::/32',
+# 'ff00::/8',
+# ]
+# vis_type_timeline.graphiteBlockedIPs: []
+
+# opensearchDashboards.branding:
+# logo:
+# defaultUrl: ""
+# darkModeUrl: ""
+# mark:
+# defaultUrl: ""
+# darkModeUrl: ""
+# loadingLogo:
+# defaultUrl: ""
+# darkModeUrl: ""
+# faviconUrl: ""
+# applicationTitle: ""
+
+# Set the value of this setting to true to capture region blocked warnings and errors
+# for your map rendering services.
+# map.showRegionBlockedWarning: false%
+
+# Set the value of this setting to false to suppress search usage telemetry
+# for reducing the load of OpenSearch cluster.
+# data.search.usageTelemetry.enabled: false
+
+# 2.4 renames 'wizard.enabled: false' to 'vis_builder.enabled: false'
+# Set the value of this setting to false to disable VisBuilder
+# functionality in Visualization.
+# vis_builder.enabled: false
+
+# 2.4 New Experimental Feature
+# Set the value of this setting to true to enable the experimental multiple data source
+# support feature. Use with caution.
+# data_source.enabled: false
+# Set the value of these settings to customize crypto materials to encryption saved credentials
+# in data sources.
+# data_source.encryption.wrappingKeyName: 'changeme'
+# data_source.encryption.wrappingKeyNamespace: 'changeme'
+# data_source.encryption.wrappingKey: [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]
+
+# 2.6 New ML Commons Dashboards Feature
+# Set the value of this setting to true to enable the ml commons dashboards
+# ml_commons_dashboards.enabled: false
+
+# 2.12 New experimental Assistant Dashboards Feature
+# Set the value of this setting to true to enable the assistant dashboards
+# assistant.chat.enabled: false
+
+# 2.13 New Query Assistant Feature
+# Set the value of this setting to false to disable the query assistant
+# observability.query_assist.enabled: false
+
+# 2.14 Enable Ui Metric Collectors in Usage Collector
+# Set the value of this setting to true to enable UI Metric collections
+# usageCollection.uiMetric.enabled: false
+
+opensearch.hosts: [https://localhost:9200]
+opensearch.ssl.verificationMode: none
+opensearch.username: admin
+opensearch.password: 'Qazwsxedc!@#123'
+opensearch.requestHeadersWhitelist: [authorization, securitytenant]
+
+opensearch_security.multitenancy.enabled: true
+opensearch_security.multitenancy.tenants.preferred: [Private, Global]
+opensearch_security.readonly_mode.roles: [kibana_read_only]
+# Use this setting if you are running opensearch-dashboards without https
+opensearch_security.cookie.secure: false
+server.host: '0.0.0.0'
diff --git a/apps/dify/1.1.1/conf/volumes/sandbox/conf/config.yaml b/apps/dify/1.1.1/conf/volumes/sandbox/conf/config.yaml
new file mode 100644
index 000000000..8c1a1deb5
--- /dev/null
+++ b/apps/dify/1.1.1/conf/volumes/sandbox/conf/config.yaml
@@ -0,0 +1,14 @@
+app:
+ port: 8194
+ debug: True
+ key: dify-sandbox
+max_workers: 4
+max_requests: 50
+worker_timeout: 5
+python_path: /usr/local/bin/python3
+enable_network: True # please make sure there is no network risk in your environment
+allowed_syscalls: # please leave it empty if you have no idea how seccomp works
+proxy:
+ socks5: ''
+ http: ''
+ https: ''
diff --git a/apps/dify/1.1.1/conf/volumes/sandbox/conf/config.yaml.example b/apps/dify/1.1.1/conf/volumes/sandbox/conf/config.yaml.example
new file mode 100644
index 000000000..f92c19e51
--- /dev/null
+++ b/apps/dify/1.1.1/conf/volumes/sandbox/conf/config.yaml.example
@@ -0,0 +1,35 @@
+app:
+ port: 8194
+ debug: True
+ key: dify-sandbox
+max_workers: 4
+max_requests: 50
+worker_timeout: 5
+python_path: /usr/local/bin/python3
+python_lib_path:
+ - /usr/local/lib/python3.10
+ - /usr/lib/python3.10
+ - /usr/lib/python3
+ - /usr/lib/x86_64-linux-gnu
+ - /etc/ssl/certs/ca-certificates.crt
+ - /etc/nsswitch.conf
+ - /etc/hosts
+ - /etc/resolv.conf
+ - /run/systemd/resolve/stub-resolv.conf
+ - /run/resolvconf/resolv.conf
+ - /etc/localtime
+ - /usr/share/zoneinfo
+ - /etc/timezone
+ # add more paths if needed
+python_pip_mirror_url: https://pypi.tuna.tsinghua.edu.cn/simple
+nodejs_path: /usr/local/bin/node
+enable_network: True
+allowed_syscalls:
+ - 1
+ - 2
+ - 3
+ # add all the syscalls which you require
+proxy:
+ socks5: ''
+ http: ''
+ https: ''
diff --git a/apps/dify/1.1.1/conf/volumes/sandbox/dependencies/python-requirements.txt b/apps/dify/1.1.1/conf/volumes/sandbox/dependencies/python-requirements.txt
new file mode 100644
index 000000000..e69de29bb
diff --git a/apps/dify/1.1.1/data.yml b/apps/dify/1.1.1/data.yml
new file mode 100644
index 000000000..76d89aaf3
--- /dev/null
+++ b/apps/dify/1.1.1/data.yml
@@ -0,0 +1,82 @@
+additionalProperties:
+ formFields:
+ - default: "/home/dify"
+ edit: true
+ envKey: DIFY_ROOT_PATH
+ labelZh: 数据持久化路径
+ labelEn: Data persistence path
+ required: true
+ type: text
+ - default: 8080
+ edit: true
+ envKey: PANEL_APP_PORT_HTTP
+ labelZh: 网站端口
+ labelEn: WebUI port
+ required: true
+ rule: paramPort
+ type: number
+ - default: 8443
+ edit: true
+ envKey: PANEL_APP_PORT_HTTPS
+ labelZh: HTTPS 端口
+ labelEn: HTTPS port
+ required: true
+ rule: paramPort
+ type: number
+ - default: 5432
+ edit: true
+ envKey: EXPOSE_DB_PORT
+ labelZh: 数据库端口
+ labelEn: Database port
+ required: true
+ rule: paramPort
+ type: number
+ - default: 5003
+ edit: true
+ envKey: EXPOSE_PLUGIN_DEBUGGING_PORT
+ labelZh: 插件调试端口
+ labelEn: Plugin debugging port
+ required: true
+ rule: paramPort
+ type: number
+ - default: 19530
+ disabled: true
+ edit: true
+ envKey: MILVUS_STANDALONE_API_PORT
+ labelZh: Milvus 接口端口
+ labelEn: Milvus API port
+ required: true
+ rule: paramPort
+ type: number
+ - default: 9091
+ disabled: true
+ envKey: MILVUS_STANDALONE_SERVER_PORT
+ labelZh: Milvus 服务端口
+ labelEn: Milvus server port
+ required: true
+ rule: paramPort
+ type: number
+ - default: 8123
+ edit: true
+ envKey: MYSCALE_PORT
+ labelZh: MyScale 端口
+ labelEn: MyScale port
+ required: true
+ rule: paramPort
+ type: number
+ - default: 9200
+ edit: true
+ envKey: ELASTICSEARCH_PORT
+ labelZh: Elasticsearch 端口
+ labelEn: Elasticsearch port
+ required: true
+ rule: paramPort
+ type: number
+ - default: 5601
+ edit: true
+ envKey: KIBANA_PORT
+ labelZh: Kibana 端口
+ labelEn: Kibana port
+ required: true
+ rule: paramPort
+ type: number
diff --git a/apps/dify/1.1.1/docker-compose.yml b/apps/dify/1.1.1/docker-compose.yml
new file mode 100644
index 000000000..459c6a903
--- /dev/null
+++ b/apps/dify/1.1.1/docker-compose.yml
@@ -0,0 +1,970 @@
+# ==================================================================
+# WARNING: This file is auto-generated by generate_docker_compose
+# Do not modify this file directly. Instead, update the .env.example
+# or docker-compose-template.yaml and regenerate this file.
+# ==================================================================
+
+x-shared-env: &shared-api-worker-env
+ CONSOLE_API_URL: ${CONSOLE_API_URL:-}
+ CONSOLE_WEB_URL: ${CONSOLE_WEB_URL:-}
+ SERVICE_API_URL: ${SERVICE_API_URL:-}
+ APP_API_URL: ${APP_API_URL:-}
+ APP_WEB_URL: ${APP_WEB_URL:-}
+ FILES_URL: ${FILES_URL:-}
+ LOG_LEVEL: ${LOG_LEVEL:-INFO}
+ LOG_FILE: ${LOG_FILE:-/app/logs/server.log}
+ LOG_FILE_MAX_SIZE: ${LOG_FILE_MAX_SIZE:-20}
+ LOG_FILE_BACKUP_COUNT: ${LOG_FILE_BACKUP_COUNT:-5}
+ LOG_DATEFORMAT: ${LOG_DATEFORMAT:-%Y-%m-%d %H:%M:%S}
+ LOG_TZ: ${LOG_TZ:-UTC}
+ DEBUG: ${DEBUG:-false}
+ FLASK_DEBUG: ${FLASK_DEBUG:-false}
+ SECRET_KEY: ${SECRET_KEY:-sk-9f73s3ljTXVcMT3Blb3ljTqtsKiGHXVcMT3BlbkFJLK7U}
+ INIT_PASSWORD: ${INIT_PASSWORD:-}
+ DEPLOY_ENV: ${DEPLOY_ENV:-PRODUCTION}
+ CHECK_UPDATE_URL: ${CHECK_UPDATE_URL:-https://updates.dify.ai}
+ OPENAI_API_BASE: ${OPENAI_API_BASE:-https://api.openai.com/v1}
+ MIGRATION_ENABLED: ${MIGRATION_ENABLED:-true}
+ FILES_ACCESS_TIMEOUT: ${FILES_ACCESS_TIMEOUT:-300}
+ ACCESS_TOKEN_EXPIRE_MINUTES: ${ACCESS_TOKEN_EXPIRE_MINUTES:-60}
+ REFRESH_TOKEN_EXPIRE_DAYS: ${REFRESH_TOKEN_EXPIRE_DAYS:-30}
+ APP_MAX_ACTIVE_REQUESTS: ${APP_MAX_ACTIVE_REQUESTS:-0}
+ APP_MAX_EXECUTION_TIME: ${APP_MAX_EXECUTION_TIME:-1200}
+ DIFY_BIND_ADDRESS: ${DIFY_BIND_ADDRESS:-0.0.0.0}
+ DIFY_PORT: ${DIFY_PORT:-5001}
+ SERVER_WORKER_AMOUNT: ${SERVER_WORKER_AMOUNT:-1}
+ SERVER_WORKER_CLASS: ${SERVER_WORKER_CLASS:-gevent}
+ SERVER_WORKER_CONNECTIONS: ${SERVER_WORKER_CONNECTIONS:-10}
+ CELERY_WORKER_CLASS: ${CELERY_WORKER_CLASS:-}
+ GUNICORN_TIMEOUT: ${GUNICORN_TIMEOUT:-360}
+ CELERY_WORKER_AMOUNT: ${CELERY_WORKER_AMOUNT:-}
+ CELERY_AUTO_SCALE: ${CELERY_AUTO_SCALE:-false}
+ CELERY_MAX_WORKERS: ${CELERY_MAX_WORKERS:-}
+ CELERY_MIN_WORKERS: ${CELERY_MIN_WORKERS:-}
+ API_TOOL_DEFAULT_CONNECT_TIMEOUT: ${API_TOOL_DEFAULT_CONNECT_TIMEOUT:-10}
+ API_TOOL_DEFAULT_READ_TIMEOUT: ${API_TOOL_DEFAULT_READ_TIMEOUT:-60}
+ DB_USERNAME: ${DB_USERNAME:-postgres}
+ DB_PASSWORD: ${DB_PASSWORD:-difyai123456}
+ DB_HOST: ${DB_HOST:-db}
+ DB_PORT: ${DB_PORT:-5432}
+ DB_DATABASE: ${DB_DATABASE:-dify}
+ SQLALCHEMY_POOL_SIZE: ${SQLALCHEMY_POOL_SIZE:-30}
+ SQLALCHEMY_POOL_RECYCLE: ${SQLALCHEMY_POOL_RECYCLE:-3600}
+ SQLALCHEMY_ECHO: ${SQLALCHEMY_ECHO:-false}
+ POSTGRES_MAX_CONNECTIONS: ${POSTGRES_MAX_CONNECTIONS:-100}
+ POSTGRES_SHARED_BUFFERS: ${POSTGRES_SHARED_BUFFERS:-128MB}
+ POSTGRES_WORK_MEM: ${POSTGRES_WORK_MEM:-4MB}
+ POSTGRES_MAINTENANCE_WORK_MEM: ${POSTGRES_MAINTENANCE_WORK_MEM:-64MB}
+ POSTGRES_EFFECTIVE_CACHE_SIZE: ${POSTGRES_EFFECTIVE_CACHE_SIZE:-4096MB}
+ REDIS_HOST: ${REDIS_HOST:-redis}
+ REDIS_PORT: ${REDIS_PORT:-6379}
+ REDIS_USERNAME: ${REDIS_USERNAME:-}
+ REDIS_PASSWORD: ${REDIS_PASSWORD:-difyai123456}
+ REDIS_USE_SSL: ${REDIS_USE_SSL:-false}
+ REDIS_DB: ${REDIS_DB:-0}
+ REDIS_USE_SENTINEL: ${REDIS_USE_SENTINEL:-false}
+ REDIS_SENTINELS: ${REDIS_SENTINELS:-}
+ REDIS_SENTINEL_SERVICE_NAME: ${REDIS_SENTINEL_SERVICE_NAME:-}
+ REDIS_SENTINEL_USERNAME: ${REDIS_SENTINEL_USERNAME:-}
+ REDIS_SENTINEL_PASSWORD: ${REDIS_SENTINEL_PASSWORD:-}
+ REDIS_SENTINEL_SOCKET_TIMEOUT: ${REDIS_SENTINEL_SOCKET_TIMEOUT:-0.1}
+ REDIS_USE_CLUSTERS: ${REDIS_USE_CLUSTERS:-false}
+ REDIS_CLUSTERS: ${REDIS_CLUSTERS:-}
+ REDIS_CLUSTERS_PASSWORD: ${REDIS_CLUSTERS_PASSWORD:-}
+ CELERY_BROKER_URL: ${CELERY_BROKER_URL:-redis://:difyai123456@redis:6379/1}
+ BROKER_USE_SSL: ${BROKER_USE_SSL:-false}
+ CELERY_USE_SENTINEL: ${CELERY_USE_SENTINEL:-false}
+ CELERY_SENTINEL_MASTER_NAME: ${CELERY_SENTINEL_MASTER_NAME:-}
+ CELERY_SENTINEL_SOCKET_TIMEOUT: ${CELERY_SENTINEL_SOCKET_TIMEOUT:-0.1}
+ WEB_API_CORS_ALLOW_ORIGINS: ${WEB_API_CORS_ALLOW_ORIGINS:-*}
+ CONSOLE_CORS_ALLOW_ORIGINS: ${CONSOLE_CORS_ALLOW_ORIGINS:-*}
+ STORAGE_TYPE: ${STORAGE_TYPE:-opendal}
+ OPENDAL_SCHEME: ${OPENDAL_SCHEME:-fs}
+ OPENDAL_FS_ROOT: ${OPENDAL_FS_ROOT:-storage}
+ S3_ENDPOINT: ${S3_ENDPOINT:-}
+ S3_REGION: ${S3_REGION:-us-east-1}
+ S3_BUCKET_NAME: ${S3_BUCKET_NAME:-difyai}
+ S3_ACCESS_KEY: ${S3_ACCESS_KEY:-}
+ S3_SECRET_KEY: ${S3_SECRET_KEY:-}
+ S3_USE_AWS_MANAGED_IAM: ${S3_USE_AWS_MANAGED_IAM:-false}
+ AZURE_BLOB_ACCOUNT_NAME: ${AZURE_BLOB_ACCOUNT_NAME:-difyai}
+ AZURE_BLOB_ACCOUNT_KEY: ${AZURE_BLOB_ACCOUNT_KEY:-difyai}
+ AZURE_BLOB_CONTAINER_NAME: ${AZURE_BLOB_CONTAINER_NAME:-difyai-container}
+ AZURE_BLOB_ACCOUNT_URL: ${AZURE_BLOB_ACCOUNT_URL:-https://.blob.core.windows.net}
+ GOOGLE_STORAGE_BUCKET_NAME: ${GOOGLE_STORAGE_BUCKET_NAME:-your-bucket-name}
+ GOOGLE_STORAGE_SERVICE_ACCOUNT_JSON_BASE64: ${GOOGLE_STORAGE_SERVICE_ACCOUNT_JSON_BASE64:-}
+ ALIYUN_OSS_BUCKET_NAME: ${ALIYUN_OSS_BUCKET_NAME:-your-bucket-name}
+ ALIYUN_OSS_ACCESS_KEY: ${ALIYUN_OSS_ACCESS_KEY:-your-access-key}
+ ALIYUN_OSS_SECRET_KEY: ${ALIYUN_OSS_SECRET_KEY:-your-secret-key}
+ ALIYUN_OSS_ENDPOINT: ${ALIYUN_OSS_ENDPOINT:-https://oss-ap-southeast-1-internal.aliyuncs.com}
+ ALIYUN_OSS_REGION: ${ALIYUN_OSS_REGION:-ap-southeast-1}
+ ALIYUN_OSS_AUTH_VERSION: ${ALIYUN_OSS_AUTH_VERSION:-v4}
+ ALIYUN_OSS_PATH: ${ALIYUN_OSS_PATH:-your-path}
+ TENCENT_COS_BUCKET_NAME: ${TENCENT_COS_BUCKET_NAME:-your-bucket-name}
+ TENCENT_COS_SECRET_KEY: ${TENCENT_COS_SECRET_KEY:-your-secret-key}
+ TENCENT_COS_SECRET_ID: ${TENCENT_COS_SECRET_ID:-your-secret-id}
+ TENCENT_COS_REGION: ${TENCENT_COS_REGION:-your-region}
+ TENCENT_COS_SCHEME: ${TENCENT_COS_SCHEME:-your-scheme}
+ OCI_ENDPOINT: ${OCI_ENDPOINT:-https://objectstorage.us-ashburn-1.oraclecloud.com}
+ OCI_BUCKET_NAME: ${OCI_BUCKET_NAME:-your-bucket-name}
+ OCI_ACCESS_KEY: ${OCI_ACCESS_KEY:-your-access-key}
+ OCI_SECRET_KEY: ${OCI_SECRET_KEY:-your-secret-key}
+ OCI_REGION: ${OCI_REGION:-us-ashburn-1}
+ HUAWEI_OBS_BUCKET_NAME: ${HUAWEI_OBS_BUCKET_NAME:-your-bucket-name}
+ HUAWEI_OBS_SECRET_KEY: ${HUAWEI_OBS_SECRET_KEY:-your-secret-key}
+ HUAWEI_OBS_ACCESS_KEY: ${HUAWEI_OBS_ACCESS_KEY:-your-access-key}
+ HUAWEI_OBS_SERVER: ${HUAWEI_OBS_SERVER:-your-server-url}
+ VOLCENGINE_TOS_BUCKET_NAME: ${VOLCENGINE_TOS_BUCKET_NAME:-your-bucket-name}
+ VOLCENGINE_TOS_SECRET_KEY: ${VOLCENGINE_TOS_SECRET_KEY:-your-secret-key}
+ VOLCENGINE_TOS_ACCESS_KEY: ${VOLCENGINE_TOS_ACCESS_KEY:-your-access-key}
+ VOLCENGINE_TOS_ENDPOINT: ${VOLCENGINE_TOS_ENDPOINT:-your-server-url}
+ VOLCENGINE_TOS_REGION: ${VOLCENGINE_TOS_REGION:-your-region}
+ BAIDU_OBS_BUCKET_NAME: ${BAIDU_OBS_BUCKET_NAME:-your-bucket-name}
+ BAIDU_OBS_SECRET_KEY: ${BAIDU_OBS_SECRET_KEY:-your-secret-key}
+ BAIDU_OBS_ACCESS_KEY: ${BAIDU_OBS_ACCESS_KEY:-your-access-key}
+ BAIDU_OBS_ENDPOINT: ${BAIDU_OBS_ENDPOINT:-your-server-url}
+ SUPABASE_BUCKET_NAME: ${SUPABASE_BUCKET_NAME:-your-bucket-name}
+ SUPABASE_API_KEY: ${SUPABASE_API_KEY:-your-access-key}
+ SUPABASE_URL: ${SUPABASE_URL:-your-server-url}
+ VECTOR_STORE: ${VECTOR_STORE:-weaviate}
+ WEAVIATE_ENDPOINT: ${WEAVIATE_ENDPOINT:-http://weaviate:8080}
+ WEAVIATE_API_KEY: ${WEAVIATE_API_KEY:-WVF5YThaHlkYwhGUSmCRgsX3tD5ngdN8pkih}
+ QDRANT_URL: ${QDRANT_URL:-http://qdrant:6333}
+ QDRANT_API_KEY: ${QDRANT_API_KEY:-difyai123456}
+ QDRANT_CLIENT_TIMEOUT: ${QDRANT_CLIENT_TIMEOUT:-20}
+ QDRANT_GRPC_ENABLED: ${QDRANT_GRPC_ENABLED:-false}
+ QDRANT_GRPC_PORT: ${QDRANT_GRPC_PORT:-6334}
+ MILVUS_URI: ${MILVUS_URI:-http://127.0.0.1:19530}
+ MILVUS_TOKEN: ${MILVUS_TOKEN:-}
+ MILVUS_USER: ${MILVUS_USER:-root}
+ MILVUS_PASSWORD: ${MILVUS_PASSWORD:-Milvus}
+ MILVUS_ENABLE_HYBRID_SEARCH: ${MILVUS_ENABLE_HYBRID_SEARCH:-False}
+ MYSCALE_HOST: ${MYSCALE_HOST:-myscale}
+ MYSCALE_PORT: ${MYSCALE_PORT:-8123}
+ MYSCALE_USER: ${MYSCALE_USER:-default}
+ MYSCALE_PASSWORD: ${MYSCALE_PASSWORD:-}
+ MYSCALE_DATABASE: ${MYSCALE_DATABASE:-dify}
+ MYSCALE_FTS_PARAMS: ${MYSCALE_FTS_PARAMS:-}
+ COUCHBASE_CONNECTION_STRING: ${COUCHBASE_CONNECTION_STRING:-couchbase://couchbase-server}
+ COUCHBASE_USER: ${COUCHBASE_USER:-Administrator}
+ COUCHBASE_PASSWORD: ${COUCHBASE_PASSWORD:-password}
+ COUCHBASE_BUCKET_NAME: ${COUCHBASE_BUCKET_NAME:-Embeddings}
+ COUCHBASE_SCOPE_NAME: ${COUCHBASE_SCOPE_NAME:-_default}
+ PGVECTOR_HOST: ${PGVECTOR_HOST:-pgvector}
+ PGVECTOR_PORT: ${PGVECTOR_PORT:-5432}
+ PGVECTOR_USER: ${PGVECTOR_USER:-postgres}
+ PGVECTOR_PASSWORD: ${PGVECTOR_PASSWORD:-difyai123456}
+ PGVECTOR_DATABASE: ${PGVECTOR_DATABASE:-dify}
+ PGVECTOR_MIN_CONNECTION: ${PGVECTOR_MIN_CONNECTION:-1}
+ PGVECTOR_MAX_CONNECTION: ${PGVECTOR_MAX_CONNECTION:-5}
+ PGVECTO_RS_HOST: ${PGVECTO_RS_HOST:-pgvecto-rs}
+ PGVECTO_RS_PORT: ${PGVECTO_RS_PORT:-5432}
+ PGVECTO_RS_USER: ${PGVECTO_RS_USER:-postgres}
+ PGVECTO_RS_PASSWORD: ${PGVECTO_RS_PASSWORD:-difyai123456}
+ PGVECTO_RS_DATABASE: ${PGVECTO_RS_DATABASE:-dify}
+ ANALYTICDB_KEY_ID: ${ANALYTICDB_KEY_ID:-your-ak}
+ ANALYTICDB_KEY_SECRET: ${ANALYTICDB_KEY_SECRET:-your-sk}
+ ANALYTICDB_REGION_ID: ${ANALYTICDB_REGION_ID:-cn-hangzhou}
+ ANALYTICDB_INSTANCE_ID: ${ANALYTICDB_INSTANCE_ID:-gp-ab123456}
+ ANALYTICDB_ACCOUNT: ${ANALYTICDB_ACCOUNT:-testaccount}
+ ANALYTICDB_PASSWORD: ${ANALYTICDB_PASSWORD:-testpassword}
+ ANALYTICDB_NAMESPACE: ${ANALYTICDB_NAMESPACE:-dify}
+ ANALYTICDB_NAMESPACE_PASSWORD: ${ANALYTICDB_NAMESPACE_PASSWORD:-difypassword}
+ ANALYTICDB_HOST: ${ANALYTICDB_HOST:-gp-test.aliyuncs.com}
+ ANALYTICDB_PORT: ${ANALYTICDB_PORT:-5432}
+ ANALYTICDB_MIN_CONNECTION: ${ANALYTICDB_MIN_CONNECTION:-1}
+ ANALYTICDB_MAX_CONNECTION: ${ANALYTICDB_MAX_CONNECTION:-5}
+ TIDB_VECTOR_HOST: ${TIDB_VECTOR_HOST:-tidb}
+ TIDB_VECTOR_PORT: ${TIDB_VECTOR_PORT:-4000}
+ TIDB_VECTOR_USER: ${TIDB_VECTOR_USER:-}
+ TIDB_VECTOR_PASSWORD: ${TIDB_VECTOR_PASSWORD:-}
+ TIDB_VECTOR_DATABASE: ${TIDB_VECTOR_DATABASE:-dify}
+ TIDB_ON_QDRANT_URL: ${TIDB_ON_QDRANT_URL:-http://127.0.0.1}
+ TIDB_ON_QDRANT_API_KEY: ${TIDB_ON_QDRANT_API_KEY:-dify}
+ TIDB_ON_QDRANT_CLIENT_TIMEOUT: ${TIDB_ON_QDRANT_CLIENT_TIMEOUT:-20}
+ TIDB_ON_QDRANT_GRPC_ENABLED: ${TIDB_ON_QDRANT_GRPC_ENABLED:-false}
+ TIDB_ON_QDRANT_GRPC_PORT: ${TIDB_ON_QDRANT_GRPC_PORT:-6334}
+ TIDB_PUBLIC_KEY: ${TIDB_PUBLIC_KEY:-dify}
+ TIDB_PRIVATE_KEY: ${TIDB_PRIVATE_KEY:-dify}
+ TIDB_API_URL: ${TIDB_API_URL:-http://127.0.0.1}
+ TIDB_IAM_API_URL: ${TIDB_IAM_API_URL:-http://127.0.0.1}
+ TIDB_REGION: ${TIDB_REGION:-regions/aws-us-east-1}
+ TIDB_PROJECT_ID: ${TIDB_PROJECT_ID:-dify}
+ TIDB_SPEND_LIMIT: ${TIDB_SPEND_LIMIT:-100}
+ CHROMA_HOST: ${CHROMA_HOST:-127.0.0.1}
+ CHROMA_PORT: ${CHROMA_PORT:-8000}
+ CHROMA_TENANT: ${CHROMA_TENANT:-default_tenant}
+ CHROMA_DATABASE: ${CHROMA_DATABASE:-default_database}
+ CHROMA_AUTH_PROVIDER: ${CHROMA_AUTH_PROVIDER:-chromadb.auth.token_authn.TokenAuthClientProvider}
+ CHROMA_AUTH_CREDENTIALS: ${CHROMA_AUTH_CREDENTIALS:-}
+ ORACLE_HOST: ${ORACLE_HOST:-oracle}
+ ORACLE_PORT: ${ORACLE_PORT:-1521}
+ ORACLE_USER: ${ORACLE_USER:-dify}
+ ORACLE_PASSWORD: ${ORACLE_PASSWORD:-dify}
+ ORACLE_DATABASE: ${ORACLE_DATABASE:-FREEPDB1}
+ RELYT_HOST: ${RELYT_HOST:-db}
+ RELYT_PORT: ${RELYT_PORT:-5432}
+ RELYT_USER: ${RELYT_USER:-postgres}
+ RELYT_PASSWORD: ${RELYT_PASSWORD:-difyai123456}
+ RELYT_DATABASE: ${RELYT_DATABASE:-postgres}
+ OPENSEARCH_HOST: ${OPENSEARCH_HOST:-opensearch}
+ OPENSEARCH_PORT: ${OPENSEARCH_PORT:-9200}
+ OPENSEARCH_USER: ${OPENSEARCH_USER:-admin}
+ OPENSEARCH_PASSWORD: ${OPENSEARCH_PASSWORD:-admin}
+ OPENSEARCH_SECURE: ${OPENSEARCH_SECURE:-true}
+ TENCENT_VECTOR_DB_URL: ${TENCENT_VECTOR_DB_URL:-http://127.0.0.1}
+ TENCENT_VECTOR_DB_API_KEY: ${TENCENT_VECTOR_DB_API_KEY:-dify}
+ TENCENT_VECTOR_DB_TIMEOUT: ${TENCENT_VECTOR_DB_TIMEOUT:-30}
+ TENCENT_VECTOR_DB_USERNAME: ${TENCENT_VECTOR_DB_USERNAME:-dify}
+ TENCENT_VECTOR_DB_DATABASE: ${TENCENT_VECTOR_DB_DATABASE:-dify}
+ TENCENT_VECTOR_DB_SHARD: ${TENCENT_VECTOR_DB_SHARD:-1}
+ TENCENT_VECTOR_DB_REPLICAS: ${TENCENT_VECTOR_DB_REPLICAS:-2}
+ ELASTICSEARCH_HOST: ${ELASTICSEARCH_HOST:-0.0.0.0}
+ ELASTICSEARCH_PORT: ${ELASTICSEARCH_PORT:-9200}
+ ELASTICSEARCH_USERNAME: ${ELASTICSEARCH_USERNAME:-elastic}
+ ELASTICSEARCH_PASSWORD: ${ELASTICSEARCH_PASSWORD:-elastic}
+ KIBANA_PORT: ${KIBANA_PORT:-5601}
+ BAIDU_VECTOR_DB_ENDPOINT: ${BAIDU_VECTOR_DB_ENDPOINT:-http://127.0.0.1:5287}
+ BAIDU_VECTOR_DB_CONNECTION_TIMEOUT_MS: ${BAIDU_VECTOR_DB_CONNECTION_TIMEOUT_MS:-30000}
+ BAIDU_VECTOR_DB_ACCOUNT: ${BAIDU_VECTOR_DB_ACCOUNT:-root}
+ BAIDU_VECTOR_DB_API_KEY: ${BAIDU_VECTOR_DB_API_KEY:-dify}
+ BAIDU_VECTOR_DB_DATABASE: ${BAIDU_VECTOR_DB_DATABASE:-dify}
+ BAIDU_VECTOR_DB_SHARD: ${BAIDU_VECTOR_DB_SHARD:-1}
+ BAIDU_VECTOR_DB_REPLICAS: ${BAIDU_VECTOR_DB_REPLICAS:-3}
+ VIKINGDB_ACCESS_KEY: ${VIKINGDB_ACCESS_KEY:-your-ak}
+ VIKINGDB_SECRET_KEY: ${VIKINGDB_SECRET_KEY:-your-sk}
+ VIKINGDB_REGION: ${VIKINGDB_REGION:-cn-shanghai}
+ VIKINGDB_HOST: ${VIKINGDB_HOST:-api-vikingdb.xxx.volces.com}
+ VIKINGDB_SCHEMA: ${VIKINGDB_SCHEMA:-http}
+ VIKINGDB_CONNECTION_TIMEOUT: ${VIKINGDB_CONNECTION_TIMEOUT:-30}
+ VIKINGDB_SOCKET_TIMEOUT: ${VIKINGDB_SOCKET_TIMEOUT:-30}
+ LINDORM_URL: ${LINDORM_URL:-http://lindorm:30070}
+ LINDORM_USERNAME: ${LINDORM_USERNAME:-lindorm}
+ LINDORM_PASSWORD: ${LINDORM_PASSWORD:-lindorm}
+ OCEANBASE_VECTOR_HOST: ${OCEANBASE_VECTOR_HOST:-oceanbase}
+ OCEANBASE_VECTOR_PORT: ${OCEANBASE_VECTOR_PORT:-2881}
+ OCEANBASE_VECTOR_USER: ${OCEANBASE_VECTOR_USER:-root@test}
+ OCEANBASE_VECTOR_PASSWORD: ${OCEANBASE_VECTOR_PASSWORD:-difyai123456}
+ OCEANBASE_VECTOR_DATABASE: ${OCEANBASE_VECTOR_DATABASE:-test}
+ OCEANBASE_CLUSTER_NAME: ${OCEANBASE_CLUSTER_NAME:-difyai}
+ OCEANBASE_MEMORY_LIMIT: ${OCEANBASE_MEMORY_LIMIT:-6G}
+ UPSTASH_VECTOR_URL: ${UPSTASH_VECTOR_URL:-https://xxx-vector.upstash.io}
+ UPSTASH_VECTOR_TOKEN: ${UPSTASH_VECTOR_TOKEN:-dify}
+ UPLOAD_FILE_SIZE_LIMIT: ${UPLOAD_FILE_SIZE_LIMIT:-15}
+ UPLOAD_FILE_BATCH_LIMIT: ${UPLOAD_FILE_BATCH_LIMIT:-5}
+ ETL_TYPE: ${ETL_TYPE:-dify}
+ UNSTRUCTURED_API_URL: ${UNSTRUCTURED_API_URL:-}
+ UNSTRUCTURED_API_KEY: ${UNSTRUCTURED_API_KEY:-}
+ SCARF_NO_ANALYTICS: ${SCARF_NO_ANALYTICS:-true}
+ PROMPT_GENERATION_MAX_TOKENS: ${PROMPT_GENERATION_MAX_TOKENS:-512}
+ CODE_GENERATION_MAX_TOKENS: ${CODE_GENERATION_MAX_TOKENS:-1024}
+ MULTIMODAL_SEND_FORMAT: ${MULTIMODAL_SEND_FORMAT:-base64}
+ UPLOAD_IMAGE_FILE_SIZE_LIMIT: ${UPLOAD_IMAGE_FILE_SIZE_LIMIT:-10}
+ UPLOAD_VIDEO_FILE_SIZE_LIMIT: ${UPLOAD_VIDEO_FILE_SIZE_LIMIT:-100}
+ UPLOAD_AUDIO_FILE_SIZE_LIMIT: ${UPLOAD_AUDIO_FILE_SIZE_LIMIT:-50}
+ SENTRY_DSN: ${SENTRY_DSN:-}
+ API_SENTRY_DSN: ${API_SENTRY_DSN:-}
+ API_SENTRY_TRACES_SAMPLE_RATE: ${API_SENTRY_TRACES_SAMPLE_RATE:-1.0}
+ API_SENTRY_PROFILES_SAMPLE_RATE: ${API_SENTRY_PROFILES_SAMPLE_RATE:-1.0}
+ WEB_SENTRY_DSN: ${WEB_SENTRY_DSN:-}
+ NOTION_INTEGRATION_TYPE: ${NOTION_INTEGRATION_TYPE:-public}
+ NOTION_CLIENT_SECRET: ${NOTION_CLIENT_SECRET:-}
+ NOTION_CLIENT_ID: ${NOTION_CLIENT_ID:-}
+ NOTION_INTERNAL_SECRET: ${NOTION_INTERNAL_SECRET:-}
+ MAIL_TYPE: ${MAIL_TYPE:-resend}
+ MAIL_DEFAULT_SEND_FROM: ${MAIL_DEFAULT_SEND_FROM:-}
+ RESEND_API_URL: ${RESEND_API_URL:-https://api.resend.com}
+ RESEND_API_KEY: ${RESEND_API_KEY:-your-resend-api-key}
+ SMTP_SERVER: ${SMTP_SERVER:-}
+ SMTP_PORT: ${SMTP_PORT:-465}
+ SMTP_USERNAME: ${SMTP_USERNAME:-}
+ SMTP_PASSWORD: ${SMTP_PASSWORD:-}
+ SMTP_USE_TLS: ${SMTP_USE_TLS:-true}
+ SMTP_OPPORTUNISTIC_TLS: ${SMTP_OPPORTUNISTIC_TLS:-false}
+ INDEXING_MAX_SEGMENTATION_TOKENS_LENGTH: ${INDEXING_MAX_SEGMENTATION_TOKENS_LENGTH:-4000}
+ INVITE_EXPIRY_HOURS: ${INVITE_EXPIRY_HOURS:-72}
+ RESET_PASSWORD_TOKEN_EXPIRY_MINUTES: ${RESET_PASSWORD_TOKEN_EXPIRY_MINUTES:-5}
+ CODE_EXECUTION_ENDPOINT: ${CODE_EXECUTION_ENDPOINT:-http://sandbox:8194}
+ CODE_EXECUTION_API_KEY: ${CODE_EXECUTION_API_KEY:-dify-sandbox}
+ CODE_MAX_NUMBER: ${CODE_MAX_NUMBER:-9223372036854775807}
+ CODE_MIN_NUMBER: ${CODE_MIN_NUMBER:--9223372036854775808}
+ CODE_MAX_DEPTH: ${CODE_MAX_DEPTH:-5}
+ CODE_MAX_PRECISION: ${CODE_MAX_PRECISION:-20}
+ CODE_MAX_STRING_LENGTH: ${CODE_MAX_STRING_LENGTH:-80000}
+ CODE_MAX_STRING_ARRAY_LENGTH: ${CODE_MAX_STRING_ARRAY_LENGTH:-30}
+ CODE_MAX_OBJECT_ARRAY_LENGTH: ${CODE_MAX_OBJECT_ARRAY_LENGTH:-30}
+ CODE_MAX_NUMBER_ARRAY_LENGTH: ${CODE_MAX_NUMBER_ARRAY_LENGTH:-1000}
+ CODE_EXECUTION_CONNECT_TIMEOUT: ${CODE_EXECUTION_CONNECT_TIMEOUT:-10}
+ CODE_EXECUTION_READ_TIMEOUT: ${CODE_EXECUTION_READ_TIMEOUT:-60}
+ CODE_EXECUTION_WRITE_TIMEOUT: ${CODE_EXECUTION_WRITE_TIMEOUT:-10}
+ TEMPLATE_TRANSFORM_MAX_LENGTH: ${TEMPLATE_TRANSFORM_MAX_LENGTH:-80000}
+ WORKFLOW_MAX_EXECUTION_STEPS: ${WORKFLOW_MAX_EXECUTION_STEPS:-500}
+ WORKFLOW_MAX_EXECUTION_TIME: ${WORKFLOW_MAX_EXECUTION_TIME:-1200}
+ WORKFLOW_CALL_MAX_DEPTH: ${WORKFLOW_CALL_MAX_DEPTH:-5}
+ MAX_VARIABLE_SIZE: ${MAX_VARIABLE_SIZE:-204800}
+ WORKFLOW_PARALLEL_DEPTH_LIMIT: ${WORKFLOW_PARALLEL_DEPTH_LIMIT:-3}
+ WORKFLOW_FILE_UPLOAD_LIMIT: ${WORKFLOW_FILE_UPLOAD_LIMIT:-10}
+ HTTP_REQUEST_NODE_MAX_BINARY_SIZE: ${HTTP_REQUEST_NODE_MAX_BINARY_SIZE:-10485760}
+ HTTP_REQUEST_NODE_MAX_TEXT_SIZE: ${HTTP_REQUEST_NODE_MAX_TEXT_SIZE:-1048576}
+ SSRF_PROXY_HTTP_URL: ${SSRF_PROXY_HTTP_URL:-http://ssrf_proxy:3128}
+ SSRF_PROXY_HTTPS_URL: ${SSRF_PROXY_HTTPS_URL:-http://ssrf_proxy:3128}
+ TEXT_GENERATION_TIMEOUT_MS: ${TEXT_GENERATION_TIMEOUT_MS:-60000}
+ PGUSER: ${PGUSER:-${DB_USERNAME}}
+ POSTGRES_PASSWORD: ${POSTGRES_PASSWORD:-${DB_PASSWORD}}
+ POSTGRES_DB: ${POSTGRES_DB:-${DB_DATABASE}}
+ PGDATA: ${PGDATA:-/var/lib/postgresql/data/pgdata}
+ SANDBOX_API_KEY: ${SANDBOX_API_KEY:-dify-sandbox}
+ SANDBOX_GIN_MODE: ${SANDBOX_GIN_MODE:-release}
+ SANDBOX_WORKER_TIMEOUT: ${SANDBOX_WORKER_TIMEOUT:-15}
+ SANDBOX_ENABLE_NETWORK: ${SANDBOX_ENABLE_NETWORK:-true}
+ SANDBOX_HTTP_PROXY: ${SANDBOX_HTTP_PROXY:-http://ssrf_proxy:3128}
+ SANDBOX_HTTPS_PROXY: ${SANDBOX_HTTPS_PROXY:-http://ssrf_proxy:3128}
+ SANDBOX_PORT: ${SANDBOX_PORT:-8194}
+ WEAVIATE_PERSISTENCE_DATA_PATH: ${WEAVIATE_PERSISTENCE_DATA_PATH:-/var/lib/weaviate}
+ WEAVIATE_QUERY_DEFAULTS_LIMIT: ${WEAVIATE_QUERY_DEFAULTS_LIMIT:-25}
+ WEAVIATE_AUTHENTICATION_ANONYMOUS_ACCESS_ENABLED: ${WEAVIATE_AUTHENTICATION_ANONYMOUS_ACCESS_ENABLED:-true}
+ WEAVIATE_DEFAULT_VECTORIZER_MODULE: ${WEAVIATE_DEFAULT_VECTORIZER_MODULE:-none}
+ WEAVIATE_CLUSTER_HOSTNAME: ${WEAVIATE_CLUSTER_HOSTNAME:-node1}
+ WEAVIATE_AUTHENTICATION_APIKEY_ENABLED: ${WEAVIATE_AUTHENTICATION_APIKEY_ENABLED:-true}
+ WEAVIATE_AUTHENTICATION_APIKEY_ALLOWED_KEYS: ${WEAVIATE_AUTHENTICATION_APIKEY_ALLOWED_KEYS:-WVF5YThaHlkYwhGUSmCRgsX3tD5ngdN8pkih}
+ WEAVIATE_AUTHENTICATION_APIKEY_USERS: ${WEAVIATE_AUTHENTICATION_APIKEY_USERS:-hello@dify.ai}
+ WEAVIATE_AUTHORIZATION_ADMINLIST_ENABLED: ${WEAVIATE_AUTHORIZATION_ADMINLIST_ENABLED:-true}
+ WEAVIATE_AUTHORIZATION_ADMINLIST_USERS: ${WEAVIATE_AUTHORIZATION_ADMINLIST_USERS:-hello@dify.ai}
+ CHROMA_SERVER_AUTHN_CREDENTIALS: ${CHROMA_SERVER_AUTHN_CREDENTIALS:-difyai123456}
+ CHROMA_SERVER_AUTHN_PROVIDER: ${CHROMA_SERVER_AUTHN_PROVIDER:-chromadb.auth.token_authn.TokenAuthenticationServerProvider}
+ CHROMA_IS_PERSISTENT: ${CHROMA_IS_PERSISTENT:-TRUE}
+ ORACLE_PWD: ${ORACLE_PWD:-Dify123456}
+ ORACLE_CHARACTERSET: ${ORACLE_CHARACTERSET:-AL32UTF8}
+ ETCD_AUTO_COMPACTION_MODE: ${ETCD_AUTO_COMPACTION_MODE:-revision}
+ ETCD_AUTO_COMPACTION_RETENTION: ${ETCD_AUTO_COMPACTION_RETENTION:-1000}
+ ETCD_QUOTA_BACKEND_BYTES: ${ETCD_QUOTA_BACKEND_BYTES:-4294967296}
+ ETCD_SNAPSHOT_COUNT: ${ETCD_SNAPSHOT_COUNT:-50000}
+ MINIO_ACCESS_KEY: ${MINIO_ACCESS_KEY:-minioadmin}
+ MINIO_SECRET_KEY: ${MINIO_SECRET_KEY:-minioadmin}
+ ETCD_ENDPOINTS: ${ETCD_ENDPOINTS:-etcd:2379}
+ MINIO_ADDRESS: ${MINIO_ADDRESS:-minio:9000}
+ MILVUS_AUTHORIZATION_ENABLED: ${MILVUS_AUTHORIZATION_ENABLED:-true}
+ PGVECTOR_PGUSER: ${PGVECTOR_PGUSER:-postgres}
+ PGVECTOR_POSTGRES_PASSWORD: ${PGVECTOR_POSTGRES_PASSWORD:-difyai123456}
+ PGVECTOR_POSTGRES_DB: ${PGVECTOR_POSTGRES_DB:-dify}
+ PGVECTOR_PGDATA: ${PGVECTOR_PGDATA:-/var/lib/postgresql/data/pgdata}
+ OPENSEARCH_DISCOVERY_TYPE: ${OPENSEARCH_DISCOVERY_TYPE:-single-node}
+ OPENSEARCH_BOOTSTRAP_MEMORY_LOCK: ${OPENSEARCH_BOOTSTRAP_MEMORY_LOCK:-true}
+ OPENSEARCH_JAVA_OPTS_MIN: ${OPENSEARCH_JAVA_OPTS_MIN:-512m}
+ OPENSEARCH_JAVA_OPTS_MAX: ${OPENSEARCH_JAVA_OPTS_MAX:-1024m}
+ OPENSEARCH_INITIAL_ADMIN_PASSWORD: ${OPENSEARCH_INITIAL_ADMIN_PASSWORD:-Qazwsxedc!@#123}
+ OPENSEARCH_MEMLOCK_SOFT: ${OPENSEARCH_MEMLOCK_SOFT:--1}
+ OPENSEARCH_MEMLOCK_HARD: ${OPENSEARCH_MEMLOCK_HARD:--1}
+ OPENSEARCH_NOFILE_SOFT: ${OPENSEARCH_NOFILE_SOFT:-65536}
+ OPENSEARCH_NOFILE_HARD: ${OPENSEARCH_NOFILE_HARD:-65536}
+ NGINX_SERVER_NAME: ${NGINX_SERVER_NAME:-_}
+ NGINX_HTTPS_ENABLED: ${NGINX_HTTPS_ENABLED:-false}
+ NGINX_PORT: ${NGINX_PORT:-80}
+ NGINX_SSL_PORT: ${NGINX_SSL_PORT:-443}
+ NGINX_SSL_CERT_FILENAME: ${NGINX_SSL_CERT_FILENAME:-dify.crt}
+ NGINX_SSL_CERT_KEY_FILENAME: ${NGINX_SSL_CERT_KEY_FILENAME:-dify.key}
+ NGINX_SSL_PROTOCOLS: ${NGINX_SSL_PROTOCOLS:-TLSv1.1 TLSv1.2 TLSv1.3}
+ NGINX_WORKER_PROCESSES: ${NGINX_WORKER_PROCESSES:-auto}
+ NGINX_CLIENT_MAX_BODY_SIZE: ${NGINX_CLIENT_MAX_BODY_SIZE:-15M}
+ NGINX_KEEPALIVE_TIMEOUT: ${NGINX_KEEPALIVE_TIMEOUT:-65}
+ NGINX_PROXY_READ_TIMEOUT: ${NGINX_PROXY_READ_TIMEOUT:-3600s}
+ NGINX_PROXY_SEND_TIMEOUT: ${NGINX_PROXY_SEND_TIMEOUT:-3600s}
+ NGINX_ENABLE_CERTBOT_CHALLENGE: ${NGINX_ENABLE_CERTBOT_CHALLENGE:-false}
+ CERTBOT_EMAIL: ${CERTBOT_EMAIL:-your_email@example.com}
+ CERTBOT_DOMAIN: ${CERTBOT_DOMAIN:-your_domain.com}
+ CERTBOT_OPTIONS: ${CERTBOT_OPTIONS:-}
+ SSRF_HTTP_PORT: ${SSRF_HTTP_PORT:-3128}
+ SSRF_COREDUMP_DIR: ${SSRF_COREDUMP_DIR:-/var/spool/squid}
+ SSRF_REVERSE_PROXY_PORT: ${SSRF_REVERSE_PROXY_PORT:-8194}
+ SSRF_SANDBOX_HOST: ${SSRF_SANDBOX_HOST:-sandbox}
+ SSRF_DEFAULT_TIME_OUT: ${SSRF_DEFAULT_TIME_OUT:-5}
+ SSRF_DEFAULT_CONNECT_TIME_OUT: ${SSRF_DEFAULT_CONNECT_TIME_OUT:-5}
+ SSRF_DEFAULT_READ_TIME_OUT: ${SSRF_DEFAULT_READ_TIME_OUT:-5}
+ SSRF_DEFAULT_WRITE_TIME_OUT: ${SSRF_DEFAULT_WRITE_TIME_OUT:-5}
+ EXPOSE_NGINX_PORT: ${PANEL_APP_PORT_HTTP:-8080}
+ EXPOSE_NGINX_SSL_PORT: ${PANEL_APP_PORT_HTTPS:-8443}
+ POSITION_TOOL_PINS: ${POSITION_TOOL_PINS:-}
+ POSITION_TOOL_INCLUDES: ${POSITION_TOOL_INCLUDES:-}
+ POSITION_TOOL_EXCLUDES: ${POSITION_TOOL_EXCLUDES:-}
+ POSITION_PROVIDER_PINS: ${POSITION_PROVIDER_PINS:-}
+ POSITION_PROVIDER_INCLUDES: ${POSITION_PROVIDER_INCLUDES:-}
+ POSITION_PROVIDER_EXCLUDES: ${POSITION_PROVIDER_EXCLUDES:-}
+ CSP_WHITELIST: ${CSP_WHITELIST:-}
+ CREATE_TIDB_SERVICE_JOB_ENABLED: ${CREATE_TIDB_SERVICE_JOB_ENABLED:-false}
+ MAX_SUBMIT_COUNT: ${MAX_SUBMIT_COUNT:-100}
+ TOP_K_MAX_VALUE: ${TOP_K_MAX_VALUE:-10}
+ DB_PLUGIN_DATABASE: ${DB_PLUGIN_DATABASE:-dify_plugin}
+ EXPOSE_PLUGIN_DAEMON_PORT: ${EXPOSE_PLUGIN_DAEMON_PORT:-5002}
+ PLUGIN_DAEMON_PORT: ${PLUGIN_DAEMON_PORT:-5002}
+ PLUGIN_DAEMON_KEY: ${PLUGIN_DAEMON_KEY:-lYkiYYT6owG+71oLerGzA7GXCgOT++6ovaezWAjpCjf+Sjc3ZtU+qUEi}
+ PLUGIN_DAEMON_URL: ${PLUGIN_DAEMON_URL:-http://plugin_daemon:5002}
+ PLUGIN_MAX_PACKAGE_SIZE: ${PLUGIN_MAX_PACKAGE_SIZE:-52428800}
+ PLUGIN_PPROF_ENABLED: ${PLUGIN_PPROF_ENABLED:-false}
+ PLUGIN_DEBUGGING_HOST: ${PLUGIN_DEBUGGING_HOST:-0.0.0.0}
+ PLUGIN_DEBUGGING_PORT: ${PLUGIN_DEBUGGING_PORT:-5003}
+ EXPOSE_PLUGIN_DEBUGGING_HOST: ${EXPOSE_PLUGIN_DEBUGGING_HOST:-localhost}
+ EXPOSE_PLUGIN_DEBUGGING_PORT: ${EXPOSE_PLUGIN_DEBUGGING_PORT:-5003}
+ PLUGIN_DIFY_INNER_API_KEY: ${PLUGIN_DIFY_INNER_API_KEY:-QaHbTe77CtuXmsfyhR7+vRjI/+XbV1AaFy691iy+kGDv2Jvy0/eAh8Y1}
+ PLUGIN_DIFY_INNER_API_URL: ${PLUGIN_DIFY_INNER_API_URL:-http://api:5001}
+ ENDPOINT_URL_TEMPLATE: ${ENDPOINT_URL_TEMPLATE:-http://localhost/e/{hook_id}}
+ MARKETPLACE_ENABLED: ${MARKETPLACE_ENABLED:-true}
+ MARKETPLACE_API_URL: ${MARKETPLACE_API_URL:-https://marketplace.dify.ai}
+ FORCE_VERIFYING_SIGNATURE: ${FORCE_VERIFYING_SIGNATURE:-true}
+
+services:
+ api:
+ image: langgenius/dify-api:1.1.1
+ container_name: api-${CONTAINER_NAME}
+ restart: always
+ environment:
+ <<: *shared-api-worker-env
+ MODE: api
+ SENTRY_DSN: ${API_SENTRY_DSN:-}
+ SENTRY_TRACES_SAMPLE_RATE: ${API_SENTRY_TRACES_SAMPLE_RATE:-1.0}
+ SENTRY_PROFILES_SAMPLE_RATE: ${API_SENTRY_PROFILES_SAMPLE_RATE:-1.0}
+ PLUGIN_MAX_PACKAGE_SIZE: ${PLUGIN_MAX_PACKAGE_SIZE:-52428800}
+ INNER_API_KEY_FOR_PLUGIN: ${PLUGIN_DIFY_INNER_API_KEY:-QaHbTe77CtuXmsfyhR7+vRjI/+XbV1AaFy691iy+kGDv2Jvy0/eAh8Y1}
+ depends_on:
+ - db
+ - redis
+ volumes:
+ - ${DIFY_ROOT_PATH}/volumes/app/storage:/app/api/storage
+ networks:
+ - ssrf_proxy_network
+ - default
+
+ worker:
+ image: langgenius/dify-api:1.1.1
+ container_name: worker-${CONTAINER_NAME}
+ restart: always
+ environment:
+ <<: *shared-api-worker-env
+ MODE: worker
+ SENTRY_DSN: ${API_SENTRY_DSN:-}
+ SENTRY_TRACES_SAMPLE_RATE: ${API_SENTRY_TRACES_SAMPLE_RATE:-1.0}
+ SENTRY_PROFILES_SAMPLE_RATE: ${API_SENTRY_PROFILES_SAMPLE_RATE:-1.0}
+ PLUGIN_MAX_PACKAGE_SIZE: ${PLUGIN_MAX_PACKAGE_SIZE:-52428800}
+ INNER_API_KEY_FOR_PLUGIN: ${PLUGIN_DIFY_INNER_API_KEY:-QaHbTe77CtuXmsfyhR7+vRjI/+XbV1AaFy691iy+kGDv2Jvy0/eAh8Y1}
+ depends_on:
+ - db
+ - redis
+ volumes:
+ - ${DIFY_ROOT_PATH}/volumes/app/storage:/app/api/storage
+ networks:
+ - ssrf_proxy_network
+ - default
+
+ web:
+ image: langgenius/dify-web:1.1.1
+ container_name: ${CONTAINER_NAME}
+ restart: always
+ environment:
+ CONSOLE_API_URL: ${CONSOLE_API_URL:-}
+ APP_API_URL: ${APP_API_URL:-}
+ SENTRY_DSN: ${WEB_SENTRY_DSN:-}
+ NEXT_TELEMETRY_DISABLED: ${NEXT_TELEMETRY_DISABLED:-0}
+ TEXT_GENERATION_TIMEOUT_MS: ${TEXT_GENERATION_TIMEOUT_MS:-60000}
+ CSP_WHITELIST: ${CSP_WHITELIST:-}
+ MARKETPLACE_API_URL: ${MARKETPLACE_API_URL:-https://marketplace.dify.ai}
+ MARKETPLACE_URL: ${MARKETPLACE_URL:-https://marketplace.dify.ai}
+ TOP_K_MAX_VALUE: ${TOP_K_MAX_VALUE:-}
+ INDEXING_MAX_SEGMENTATION_TOKENS_LENGTH: ${INDEXING_MAX_SEGMENTATION_TOKENS_LENGTH:-}
+
+ db:
+ image: postgres:15-alpine
+ container_name: db-${CONTAINER_NAME}
+ restart: always
+ environment:
+ PGUSER: ${PGUSER:-postgres}
+ POSTGRES_PASSWORD: ${POSTGRES_PASSWORD:-difyai123456}
+ POSTGRES_DB: ${POSTGRES_DB:-dify}
+ PGDATA: ${PGDATA:-/var/lib/postgresql/data/pgdata}
+ command: >
+ postgres -c 'max_connections=${POSTGRES_MAX_CONNECTIONS:-100}'
+ -c 'shared_buffers=${POSTGRES_SHARED_BUFFERS:-128MB}'
+ -c 'work_mem=${POSTGRES_WORK_MEM:-4MB}'
+ -c 'maintenance_work_mem=${POSTGRES_MAINTENANCE_WORK_MEM:-64MB}'
+ -c 'effective_cache_size=${POSTGRES_EFFECTIVE_CACHE_SIZE:-4096MB}'
+ volumes:
+ - ${DIFY_ROOT_PATH}/volumes/db/data:/var/lib/postgresql/data
+ healthcheck:
+ test: [ 'CMD', 'pg_isready' ]
+ interval: 1s
+ timeout: 3s
+ retries: 30
+ ports:
+ - '${EXPOSE_DB_PORT:-5432}:5432'
+
+ redis:
+ image: redis:6-alpine
+ container_name: redis-${CONTAINER_NAME}
+ restart: always
+ environment:
+ REDISCLI_AUTH: ${REDIS_PASSWORD:-difyai123456}
+ volumes:
+ - ${DIFY_ROOT_PATH}/volumes/redis/data:/data
+ command: redis-server --requirepass ${REDIS_PASSWORD:-difyai123456}
+ healthcheck:
+ test: [ 'CMD', 'redis-cli', 'ping' ]
+
+ sandbox:
+ image: langgenius/dify-sandbox:0.2.10
+ container_name: sandbox-${CONTAINER_NAME}
+ restart: always
+ environment:
+ API_KEY: ${SANDBOX_API_KEY:-dify-sandbox}
+ GIN_MODE: ${SANDBOX_GIN_MODE:-release}
+ WORKER_TIMEOUT: ${SANDBOX_WORKER_TIMEOUT:-15}
+ ENABLE_NETWORK: ${SANDBOX_ENABLE_NETWORK:-true}
+ HTTP_PROXY: ${SANDBOX_HTTP_PROXY:-http://ssrf_proxy:3128}
+ HTTPS_PROXY: ${SANDBOX_HTTPS_PROXY:-http://ssrf_proxy:3128}
+ SANDBOX_PORT: ${SANDBOX_PORT:-8194}
+ volumes:
+ - ${DIFY_ROOT_PATH}/volumes/sandbox/dependencies:/dependencies
+ - ${DIFY_ROOT_PATH}/volumes/sandbox/conf:/conf
+ healthcheck:
+ test: [ 'CMD', 'curl', '-f', 'http://localhost:8194/health' ]
+ networks:
+ - ssrf_proxy_network
+
+ plugin_daemon:
+ image: langgenius/dify-plugin-daemon:0.0.3-local
+ container_name: plugin_daemon-${CONTAINER_NAME}
+ restart: always
+ environment:
+ <<: *shared-api-worker-env
+ DB_DATABASE: ${DB_PLUGIN_DATABASE:-dify_plugin}
+ SERVER_PORT: ${PLUGIN_DAEMON_PORT:-5002}
+ SERVER_KEY: ${PLUGIN_DAEMON_KEY:-lYkiYYT6owG+71oLerGzA7GXCgOT++6ovaezWAjpCjf+Sjc3ZtU+qUEi}
+ MAX_PLUGIN_PACKAGE_SIZE: ${PLUGIN_MAX_PACKAGE_SIZE:-52428800}
+ PPROF_ENABLED: ${PLUGIN_PPROF_ENABLED:-false}
+ DIFY_INNER_API_URL: ${PLUGIN_DIFY_INNER_API_URL:-http://api:5001}
+ DIFY_INNER_API_KEY: ${INNER_API_KEY_FOR_PLUGIN:-QaHbTe77CtuXmsfyhR7+vRjI/+XbV1AaFy691iy+kGDv2Jvy0/eAh8Y1}
+ PLUGIN_REMOTE_INSTALLING_HOST: ${PLUGIN_REMOTE_INSTALL_HOST:-0.0.0.0}
+ PLUGIN_REMOTE_INSTALLING_PORT: ${PLUGIN_REMOTE_INSTALL_PORT:-5003}
+ PLUGIN_WORKING_PATH: ${PLUGIN_WORKING_PATH:-/app/storage/cwd}
+ FORCE_VERIFYING_SIGNATURE: ${FORCE_VERIFYING_SIGNATURE:-true}
+ ports:
+ - "${EXPOSE_PLUGIN_DEBUGGING_PORT:-5003}:${PLUGIN_DEBUGGING_PORT:-5003}"
+ volumes:
+ - ${DIFY_ROOT_PATH}/volumes/plugin_daemon:/app/storage
+
+
+ ssrf_proxy:
+ image: ubuntu/squid:latest
+ container_name: ssrf_proxy-${CONTAINER_NAME}
+ restart: always
+ volumes:
+ - ${DIFY_ROOT_PATH}/ssrf_proxy/squid.conf.template:/etc/squid/squid.conf.template
+ - ${DIFY_ROOT_PATH}/ssrf_proxy/docker-entrypoint.sh:/docker-entrypoint-mount.sh
+ entrypoint: [ 'sh', '-c', "cp /docker-entrypoint-mount.sh /docker-entrypoint.sh && sed -i 's/\r$$//' /docker-entrypoint.sh && chmod +x /docker-entrypoint.sh && /docker-entrypoint.sh" ]
+ environment:
+ HTTP_PORT: ${SSRF_HTTP_PORT:-3128}
+ COREDUMP_DIR: ${SSRF_COREDUMP_DIR:-/var/spool/squid}
+ REVERSE_PROXY_PORT: ${SSRF_REVERSE_PROXY_PORT:-8194}
+ SANDBOX_HOST: ${SSRF_SANDBOX_HOST:-sandbox}
+ SANDBOX_PORT: ${SANDBOX_PORT:-8194}
+ networks:
+ - ssrf_proxy_network
+ - default
+
+ certbot:
+ image: certbot/certbot
+ container_name: certbot-${CONTAINER_NAME}
+ profiles:
+ - certbot
+ volumes:
+ - ${DIFY_ROOT_PATH}/volumes/certbot/conf:/etc/letsencrypt
+ - ${DIFY_ROOT_PATH}/volumes/certbot/www:/var/www/html
+ - ${DIFY_ROOT_PATH}/volumes/certbot/logs:/var/log/letsencrypt
+ - ${DIFY_ROOT_PATH}/volumes/certbot/conf/live:/etc/letsencrypt/live
+ - ${DIFY_ROOT_PATH}/certbot/update-cert.template.txt:/update-cert.template.txt
+ - ${DIFY_ROOT_PATH}/certbot/docker-entrypoint.sh:/docker-entrypoint.sh
+ environment:
+ - CERTBOT_EMAIL=${CERTBOT_EMAIL}
+ - CERTBOT_DOMAIN=${CERTBOT_DOMAIN}
+ - CERTBOT_OPTIONS=${CERTBOT_OPTIONS:-}
+ entrypoint: [ '/docker-entrypoint.sh' ]
+ command: [ 'tail', '-f', '/dev/null' ]
+
+ nginx:
+ image: nginx:latest
+ container_name: nginx-${CONTAINER_NAME}
+ restart: always
+ volumes:
+ - ${DIFY_ROOT_PATH}/nginx/nginx.conf.template:/etc/nginx/nginx.conf.template
+ - ${DIFY_ROOT_PATH}/nginx/proxy.conf.template:/etc/nginx/proxy.conf.template
+ - ${DIFY_ROOT_PATH}/nginx/https.conf.template:/etc/nginx/https.conf.template
+ - ${DIFY_ROOT_PATH}/nginx/conf.d:/etc/nginx/conf.d
+ - ${DIFY_ROOT_PATH}/nginx/docker-entrypoint.sh:/docker-entrypoint-mount.sh
+ - ${DIFY_ROOT_PATH}/nginx/ssl:/etc/ssl # cert dir (legacy)
+ - ${DIFY_ROOT_PATH}/volumes/certbot/conf/live:/etc/letsencrypt/live # cert dir (with certbot container)
+ - ${DIFY_ROOT_PATH}/volumes/certbot/conf:/etc/letsencrypt
+ - ${DIFY_ROOT_PATH}/volumes/certbot/www:/var/www/html
+ entrypoint: [ 'sh', '-c', "cp /docker-entrypoint-mount.sh /docker-entrypoint.sh && sed -i 's/\r$$//' /docker-entrypoint.sh && chmod +x /docker-entrypoint.sh && /docker-entrypoint.sh" ]
+ environment:
+ NGINX_SERVER_NAME: ${NGINX_SERVER_NAME:-_}
+ NGINX_HTTPS_ENABLED: ${NGINX_HTTPS_ENABLED:-false}
+ NGINX_SSL_PORT: ${NGINX_SSL_PORT:-443}
+ NGINX_PORT: ${NGINX_PORT:-80}
+ NGINX_SSL_CERT_FILENAME: ${NGINX_SSL_CERT_FILENAME:-dify.crt}
+ NGINX_SSL_CERT_KEY_FILENAME: ${NGINX_SSL_CERT_KEY_FILENAME:-dify.key}
+ NGINX_SSL_PROTOCOLS: ${NGINX_SSL_PROTOCOLS:-TLSv1.1 TLSv1.2 TLSv1.3}
+ NGINX_WORKER_PROCESSES: ${NGINX_WORKER_PROCESSES:-auto}
+ NGINX_CLIENT_MAX_BODY_SIZE: ${NGINX_CLIENT_MAX_BODY_SIZE:-15M}
+ NGINX_KEEPALIVE_TIMEOUT: ${NGINX_KEEPALIVE_TIMEOUT:-65}
+ NGINX_PROXY_READ_TIMEOUT: ${NGINX_PROXY_READ_TIMEOUT:-3600s}
+ NGINX_PROXY_SEND_TIMEOUT: ${NGINX_PROXY_SEND_TIMEOUT:-3600s}
+ NGINX_ENABLE_CERTBOT_CHALLENGE: ${NGINX_ENABLE_CERTBOT_CHALLENGE:-false}
+ CERTBOT_DOMAIN: ${CERTBOT_DOMAIN:-}
+ depends_on:
+ - api
+ - web
+ ports:
+ - '${PANEL_APP_PORT_HTTP:-80}:${NGINX_PORT:-80}'
+ - '${PANEL_APP_PORT_HTTPS:-443}:${NGINX_SSL_PORT:-443}'
+
+ weaviate:
+ image: semitechnologies/weaviate:1.19.0
+ container_name: weaviate-${CONTAINER_NAME}
+ profiles:
+ - ''
+ - weaviate
+ restart: always
+ volumes:
+ - ${DIFY_ROOT_PATH}/volumes/weaviate:/var/lib/weaviate
+ environment:
+ PERSISTENCE_DATA_PATH: ${WEAVIATE_PERSISTENCE_DATA_PATH:-/var/lib/weaviate}
+ QUERY_DEFAULTS_LIMIT: ${WEAVIATE_QUERY_DEFAULTS_LIMIT:-25}
+ AUTHENTICATION_ANONYMOUS_ACCESS_ENABLED: ${WEAVIATE_AUTHENTICATION_ANONYMOUS_ACCESS_ENABLED:-false}
+ DEFAULT_VECTORIZER_MODULE: ${WEAVIATE_DEFAULT_VECTORIZER_MODULE:-none}
+ CLUSTER_HOSTNAME: ${WEAVIATE_CLUSTER_HOSTNAME:-node1}
+ AUTHENTICATION_APIKEY_ENABLED: ${WEAVIATE_AUTHENTICATION_APIKEY_ENABLED:-true}
+ AUTHENTICATION_APIKEY_ALLOWED_KEYS: ${WEAVIATE_AUTHENTICATION_APIKEY_ALLOWED_KEYS:-WVF5YThaHlkYwhGUSmCRgsX3tD5ngdN8pkih}
+ AUTHENTICATION_APIKEY_USERS: ${WEAVIATE_AUTHENTICATION_APIKEY_USERS:-hello@dify.ai}
+ AUTHORIZATION_ADMINLIST_ENABLED: ${WEAVIATE_AUTHORIZATION_ADMINLIST_ENABLED:-true}
+ AUTHORIZATION_ADMINLIST_USERS: ${WEAVIATE_AUTHORIZATION_ADMINLIST_USERS:-hello@dify.ai}
+
+ qdrant:
+ image: langgenius/qdrant:v1.7.3
+ container_name: qdrant-${CONTAINER_NAME}
+ profiles:
+ - qdrant
+ restart: always
+ volumes:
+ - ${DIFY_ROOT_PATH}/volumes/qdrant:/qdrant/storage
+ environment:
+ QDRANT_API_KEY: ${QDRANT_API_KEY:-difyai123456}
+
+ couchbase-server:
+ build: ./conf/couchbase-server
+ profiles:
+ - couchbase
+ restart: always
+ environment:
+ - CLUSTER_NAME=dify_search
+ - COUCHBASE_ADMINISTRATOR_USERNAME=${COUCHBASE_USER:-Administrator}
+ - COUCHBASE_ADMINISTRATOR_PASSWORD=${COUCHBASE_PASSWORD:-password}
+ - COUCHBASE_BUCKET=${COUCHBASE_BUCKET_NAME:-Embeddings}
+ - COUCHBASE_BUCKET_RAMSIZE=512
+ - COUCHBASE_RAM_SIZE=2048
+ - COUCHBASE_EVENTING_RAM_SIZE=512
+ - COUCHBASE_INDEX_RAM_SIZE=512
+ - COUCHBASE_FTS_RAM_SIZE=1024
+ hostname: couchbase-server
+ container_name: couchbase-server
+ working_dir: /opt/couchbase
+ stdin_open: true
+ tty: true
+ entrypoint: [ "" ]
+ command: sh -c "/opt/couchbase/init/init-cbserver.sh"
+ volumes:
+ - ${DIFY_ROOT_PATH}/volumes/couchbase/data:/opt/couchbase/var/lib/couchbase/data
+ healthcheck:
+ test: [ "CMD-SHELL", "curl -s -f -u Administrator:password http://localhost:8091/pools/default/buckets | grep -q '\\[{' || exit 1" ]
+ interval: 10s
+ retries: 10
+ start_period: 30s
+ timeout: 10s
+
+ pgvector:
+ image: pgvector/pgvector:pg16
+ container_name: pgvector-${CONTAINER_NAME}
+ profiles:
+ - pgvector
+ restart: always
+ environment:
+ PGUSER: ${PGVECTOR_PGUSER:-postgres}
+ POSTGRES_PASSWORD: ${PGVECTOR_POSTGRES_PASSWORD:-difyai123456}
+ POSTGRES_DB: ${PGVECTOR_POSTGRES_DB:-dify}
+ PGDATA: ${PGVECTOR_PGDATA:-/var/lib/postgresql/data/pgdata}
+ volumes:
+ - ${DIFY_ROOT_PATH}/volumes/pgvector/data:/var/lib/postgresql/data
+ healthcheck:
+ test: [ 'CMD', 'pg_isready' ]
+ interval: 1s
+ timeout: 3s
+ retries: 30
+
+ pgvecto-rs:
+ image: tensorchord/pgvecto-rs:pg16-v0.3.0
+ container_name: pgvecto-rs-${CONTAINER_NAME}
+ profiles:
+ - pgvecto-rs
+ restart: always
+ environment:
+ PGUSER: ${PGVECTOR_PGUSER:-postgres}
+ POSTGRES_PASSWORD: ${PGVECTOR_POSTGRES_PASSWORD:-difyai123456}
+ POSTGRES_DB: ${PGVECTOR_POSTGRES_DB:-dify}
+ PGDATA: ${PGVECTOR_PGDATA:-/var/lib/postgresql/data/pgdata}
+ volumes:
+ - ${DIFY_ROOT_PATH}/volumes/pgvecto_rs/data:/var/lib/postgresql/data
+ healthcheck:
+ test: [ 'CMD', 'pg_isready' ]
+ interval: 1s
+ timeout: 3s
+ retries: 30
+
+ chroma:
+ image: ghcr.io/chroma-core/chroma:0.5.20
+ container_name: chroma-${CONTAINER_NAME}
+ profiles:
+ - chroma
+ restart: always
+ volumes:
+ - ${DIFY_ROOT_PATH}/volumes/chroma:/chroma/chroma
+ environment:
+ CHROMA_SERVER_AUTHN_CREDENTIALS: ${CHROMA_SERVER_AUTHN_CREDENTIALS:-difyai123456}
+ CHROMA_SERVER_AUTHN_PROVIDER: ${CHROMA_SERVER_AUTHN_PROVIDER:-chromadb.auth.token_authn.TokenAuthenticationServerProvider}
+ IS_PERSISTENT: ${CHROMA_IS_PERSISTENT:-TRUE}
+
+ oceanbase:
+ image: quay.io/oceanbase/oceanbase-ce:4.3.3.0-100000142024101215
+ container_name: oceanbase-${CONTAINER_NAME}
+ profiles:
+ - oceanbase
+ restart: always
+ volumes:
+ - ${DIFY_ROOT_PATH}/volumes/oceanbase/data:/root/ob
+ - ${DIFY_ROOT_PATH}/volumes/oceanbase/conf:/root/.obd/cluster
+ - ${DIFY_ROOT_PATH}/volumes/oceanbase/init.d:/root/boot/init.d
+ environment:
+ OB_MEMORY_LIMIT: ${OCEANBASE_MEMORY_LIMIT:-6G}
+ OB_SYS_PASSWORD: ${OCEANBASE_VECTOR_PASSWORD:-difyai123456}
+ OB_TENANT_PASSWORD: ${OCEANBASE_VECTOR_PASSWORD:-difyai123456}
+ OB_CLUSTER_NAME: ${OCEANBASE_CLUSTER_NAME:-difyai}
+ OB_SERVER_IP: '127.0.0.1'
+
+ oracle:
+ image: container-registry.oracle.com/database/free:latest
+ container_name: oracle-${CONTAINER_NAME}
+ profiles:
+ - oracle
+ restart: always
+ volumes:
+ - source: oradata
+ type: volume
+ target: /opt/oracle/oradata
+ - ${DIFY_ROOT_PATH}/startupscripts:/opt/oracle/scripts/startup
+ environment:
+ ORACLE_PWD: ${ORACLE_PWD:-Dify123456}
+ ORACLE_CHARACTERSET: ${ORACLE_CHARACTERSET:-AL32UTF8}
+
+ etcd:
+ image: quay.io/coreos/etcd:v3.5.5
+ container_name: milvus-etcd-${CONTAINER_NAME}
+ profiles:
+ - milvus
+ environment:
+ ETCD_AUTO_COMPACTION_MODE: ${ETCD_AUTO_COMPACTION_MODE:-revision}
+ ETCD_AUTO_COMPACTION_RETENTION: ${ETCD_AUTO_COMPACTION_RETENTION:-1000}
+ ETCD_QUOTA_BACKEND_BYTES: ${ETCD_QUOTA_BACKEND_BYTES:-4294967296}
+ ETCD_SNAPSHOT_COUNT: ${ETCD_SNAPSHOT_COUNT:-50000}
+ volumes:
+ - ${DIFY_ROOT_PATH}/volumes/milvus/etcd:/etcd
+ command: etcd -advertise-client-urls=http://127.0.0.1:2379 -listen-client-urls http://0.0.0.0:2379 --data-dir /etcd
+ healthcheck:
+ test: [ 'CMD', 'etcdctl', 'endpoint', 'health' ]
+ interval: 30s
+ timeout: 20s
+ retries: 3
+ networks:
+ - milvus
+
+ minio:
+ image: minio/minio:RELEASE.2023-03-20T20-16-18Z
+ container_name: milvus-minio-${CONTAINER_NAME}
+ profiles:
+ - milvus
+ environment:
+ MINIO_ACCESS_KEY: ${MINIO_ACCESS_KEY:-minioadmin}
+ MINIO_SECRET_KEY: ${MINIO_SECRET_KEY:-minioadmin}
+ volumes:
+ - ${DIFY_ROOT_PATH}/volumes/milvus/minio:/minio_data
+ command: minio server /minio_data --console-address ":9001"
+ healthcheck:
+ test: [ 'CMD', 'curl', '-f', 'http://localhost:9000/minio/health/live' ]
+ interval: 30s
+ timeout: 20s
+ retries: 3
+ networks:
+ - milvus
+
+ milvus-standalone:
+ image: milvusdb/milvus:v2.5.0-beta
+ container_name: milvus-standalone-${CONTAINER_NAME}
+ profiles:
+ - milvus
+ command: [ 'milvus', 'run', 'standalone' ]
+ environment:
+ ETCD_ENDPOINTS: ${ETCD_ENDPOINTS:-etcd:2379}
+ MINIO_ADDRESS: ${MINIO_ADDRESS:-minio:9000}
+ common.security.authorizationEnabled: ${MILVUS_AUTHORIZATION_ENABLED:-true}
+ volumes:
+ - ${DIFY_ROOT_PATH}/volumes/milvus/milvus:/var/lib/milvus
+ healthcheck:
+ test: [ 'CMD', 'curl', '-f', 'http://localhost:9091/healthz' ]
+ interval: 30s
+ start_period: 90s
+ timeout: 20s
+ retries: 3
+ depends_on:
+ - etcd
+ - minio
+ ports:
+ - 19530:19530
+ - 9091:9091
+ networks:
+ - milvus
+
+ opensearch:
+ image: opensearchproject/opensearch:latest
+ container_name: opensearch-${CONTAINER_NAME}
+ profiles:
+ - opensearch
+ environment:
+ discovery.type: ${OPENSEARCH_DISCOVERY_TYPE:-single-node}
+ bootstrap.memory_lock: ${OPENSEARCH_BOOTSTRAP_MEMORY_LOCK:-true}
+ OPENSEARCH_JAVA_OPTS: -Xms${OPENSEARCH_JAVA_OPTS_MIN:-512m} -Xmx${OPENSEARCH_JAVA_OPTS_MAX:-1024m}
+ OPENSEARCH_INITIAL_ADMIN_PASSWORD: ${OPENSEARCH_INITIAL_ADMIN_PASSWORD:-Qazwsxedc!@#123}
+ ulimits:
+ memlock:
+ soft: ${OPENSEARCH_MEMLOCK_SOFT:--1}
+ hard: ${OPENSEARCH_MEMLOCK_HARD:--1}
+ nofile:
+ soft: ${OPENSEARCH_NOFILE_SOFT:-65536}
+ hard: ${OPENSEARCH_NOFILE_HARD:-65536}
+ volumes:
+ - ${DIFY_ROOT_PATH}/volumes/opensearch/data:/usr/share/opensearch/data
+ networks:
+ - opensearch-net
+
+ opensearch-dashboards:
+ image: opensearchproject/opensearch-dashboards:latest
+ container_name: opensearch-dashboards-${CONTAINER_NAME}
+ profiles:
+ - opensearch
+ environment:
+ OPENSEARCH_HOSTS: '["https://opensearch:9200"]'
+ volumes:
+ - ${DIFY_ROOT_PATH}/volumes/opensearch/opensearch_dashboards.yml:/usr/share/opensearch-dashboards/config/opensearch_dashboards.yml
+ networks:
+ - opensearch-net
+ depends_on:
+ - opensearch
+
+ myscale:
+ image: myscale/myscaledb:1.6.4
+ container_name: myscale-${CONTAINER_NAME}
+ profiles:
+ - myscale
+ restart: always
+ tty: true
+ volumes:
+ - ${DIFY_ROOT_PATH}/volumes/myscale/data:/var/lib/clickhouse
+ - ${DIFY_ROOT_PATH}/volumes/myscale/log:/var/log/clickhouse-server
+ - ${DIFY_ROOT_PATH}/volumes/myscale/config/users.d/custom_users_config.xml:/etc/clickhouse-server/users.d/custom_users_config.xml
+ ports:
+ - ${MYSCALE_PORT:-8123}:${MYSCALE_PORT:-8123}
+
+ elasticsearch:
+ image: docker.elastic.co/elasticsearch/elasticsearch:8.14.3
+ container_name: elasticsearch-${CONTAINER_NAME}
+ profiles:
+ - elasticsearch
+ - elasticsearch-ja
+ restart: always
+ volumes:
+ - ${DIFY_ROOT_PATH}/elasticsearch/docker-entrypoint.sh:/docker-entrypoint-mount.sh
+ - dify_es01_data:/usr/share/elasticsearch/data
+ environment:
+ ELASTIC_PASSWORD: ${ELASTICSEARCH_PASSWORD:-elastic}
+ VECTOR_STORE: ${VECTOR_STORE:-}
+ cluster.name: dify-es-cluster
+ node.name: dify-es0
+ discovery.type: single-node
+ xpack.license.self_generated.type: basic
+ xpack.security.enabled: 'true'
+ xpack.security.enrollment.enabled: 'false'
+ xpack.security.http.ssl.enabled: 'false'
+ ports:
+ - ${ELASTICSEARCH_PORT:-9200}:9200
+ deploy:
+ resources:
+ limits:
+ memory: 2g
+ entrypoint: [ 'sh', '-c', "sh /docker-entrypoint-mount.sh" ]
+ healthcheck:
+ test: [ 'CMD', 'curl', '-s', 'http://localhost:9200/_cluster/health?pretty' ]
+ interval: 30s
+ timeout: 10s
+ retries: 50
+
+ kibana:
+ image: docker.elastic.co/kibana/kibana:8.14.3
+ container_name: kibana-${CONTAINER_NAME}
+ profiles:
+ - elasticsearch
+ depends_on:
+ - elasticsearch
+ restart: always
+ environment:
+ XPACK_ENCRYPTEDSAVEDOBJECTS_ENCRYPTIONKEY: d1a66dfd-c4d3-4a0a-8290-2abcb83ab3aa
+ NO_PROXY: localhost,127.0.0.1,elasticsearch,kibana
+ XPACK_SECURITY_ENABLED: 'true'
+ XPACK_SECURITY_ENROLLMENT_ENABLED: 'false'
+ XPACK_SECURITY_HTTP_SSL_ENABLED: 'false'
+ XPACK_FLEET_ISAIRGAPPED: 'true'
+ I18N_LOCALE: zh-CN
+ SERVER_PORT: '5601'
+ ELASTICSEARCH_HOSTS: http://elasticsearch:9200
+ ports:
+ - ${KIBANA_PORT:-5601}:5601
+ healthcheck:
+ test: [ 'CMD-SHELL', 'curl -s http://localhost:5601 >/dev/null || exit 1' ]
+ interval: 30s
+ timeout: 10s
+ retries: 3
+
+ unstructured:
+ image: downloads.unstructured.io/unstructured-io/unstructured-api:latest
+ container_name: unstructured-${CONTAINER_NAME}
+ profiles:
+ - unstructured
+ restart: always
+ volumes:
+ - ${DIFY_ROOT_PATH}/volumes/unstructured:/app/data
+
+networks:
+ ssrf_proxy_network:
+ driver: bridge
+ internal: true
+ milvus:
+ driver: bridge
+ opensearch-net:
+ driver: bridge
+ internal: true
+
+volumes:
+ oradata:
+ dify_es01_data:
diff --git a/apps/dify/1.1.1/envs/default.env b/apps/dify/1.1.1/envs/default.env
new file mode 100644
index 000000000..ddd33010c
--- /dev/null
+++ b/apps/dify/1.1.1/envs/default.env
@@ -0,0 +1 @@
+ENV_FILE=.env
diff --git a/apps/dify/1.1.1/envs/dify.env b/apps/dify/1.1.1/envs/dify.env
new file mode 100644
index 000000000..9f6732ed9
--- /dev/null
+++ b/apps/dify/1.1.1/envs/dify.env
@@ -0,0 +1,965 @@
+# ------------------------------
+# Environment Variables for API service & worker
+# ------------------------------
+
+# ------------------------------
+# Common Variables
+# ------------------------------
+
+# The backend URL of the console API,
+# used to concatenate the authorization callback.
+# If empty, it is the same domain.
+# Example: https://api.console.dify.ai
+CONSOLE_API_URL=
+
+# The front-end URL of the console web,
+# used to concatenate some front-end addresses and for CORS configuration use.
+# If empty, it is the same domain.
+# Example: https://console.dify.ai
+CONSOLE_WEB_URL=
+
+# Service API Url,
+# used to display Service API Base Url to the front-end.
+# If empty, it is the same domain.
+# Example: https://api.dify.ai
+SERVICE_API_URL=
+
+# WebApp API backend Url,
+# used to declare the back-end URL for the front-end API.
+# If empty, it is the same domain.
+# Example: https://api.app.dify.ai
+APP_API_URL=
+
+# WebApp Url,
+# used to display WebAPP API Base Url to the front-end.
+# If empty, it is the same domain.
+# Example: https://app.dify.ai
+APP_WEB_URL=
+
+# File preview or download Url prefix.
+# used to display File preview or download Url to the front-end or as Multi-model inputs;
+# Url is signed and has expiration time.
+FILES_URL=
+
+# ------------------------------
+# Server Configuration
+# ------------------------------
+
+# The log level for the application.
+# Supported values are `DEBUG`, `INFO`, `WARNING`, `ERROR`, `CRITICAL`
+LOG_LEVEL=INFO
+# Log file path
+LOG_FILE=/app/logs/server.log
+# Log file max size, the unit is MB
+LOG_FILE_MAX_SIZE=20
+# Log file max backup count
+LOG_FILE_BACKUP_COUNT=5
+# Log dateformat
+LOG_DATEFORMAT=%Y-%m-%d %H:%M:%S
+# Log Timezone
+LOG_TZ=UTC
+
+# Debug mode, default is false.
+# It is recommended to turn on this configuration for local development
+# to prevent some problems caused by monkey patch.
+DEBUG=false
+
+# Flask debug mode, it can output trace information at the interface when turned on,
+# which is convenient for debugging.
+FLASK_DEBUG=false
+
+# A secretkey that is used for securely signing the session cookie
+# and encrypting sensitive information on the database.
+# You can generate a strong key using `openssl rand -base64 42`.
+SECRET_KEY=sk-9f73s3ljTXVcMT3Blb3ljTqtsKiGHXVcMT3BlbkFJLK7U
+
+# Password for admin user initialization.
+# If left unset, admin user will not be prompted for a password
+# when creating the initial admin account.
+# The length of the password cannot exceed 30 charactors.
+INIT_PASSWORD=
+
+# Deployment environment.
+# Supported values are `PRODUCTION`, `TESTING`. Default is `PRODUCTION`.
+# Testing environment. There will be a distinct color label on the front-end page,
+# indicating that this environment is a testing environment.
+DEPLOY_ENV=PRODUCTION
+
+# Whether to enable the version check policy.
+# If set to empty, https://updates.dify.ai will be called for version check.
+CHECK_UPDATE_URL=https://updates.dify.ai
+
+# Used to change the OpenAI base address, default is https://api.openai.com/v1.
+# When OpenAI cannot be accessed in China, replace it with a domestic mirror address,
+# or when a local model provides OpenAI compatible API, it can be replaced.
+OPENAI_API_BASE=https://api.openai.com/v1
+
+# When enabled, migrations will be executed prior to application startup
+# and the application will start after the migrations have completed.
+MIGRATION_ENABLED=true
+
+# File Access Time specifies a time interval in seconds for the file to be accessed.
+# The default value is 300 seconds.
+FILES_ACCESS_TIMEOUT=300
+
+# Access token expiration time in minutes
+ACCESS_TOKEN_EXPIRE_MINUTES=60
+
+# Refresh token expiration time in days
+REFRESH_TOKEN_EXPIRE_DAYS=30
+
+# The maximum number of active requests for the application, where 0 means unlimited, should be a non-negative integer.
+APP_MAX_ACTIVE_REQUESTS=0
+APP_MAX_EXECUTION_TIME=1200
+
+# ------------------------------
+# Container Startup Related Configuration
+# Only effective when starting with docker image or docker-compose.
+# ------------------------------
+
+# API service binding address, default: 0.0.0.0, i.e., all addresses can be accessed.
+DIFY_BIND_ADDRESS=0.0.0.0
+
+# API service binding port number, default 5001.
+DIFY_PORT=5001
+
+# The number of API server workers, i.e., the number of workers.
+# Formula: number of cpu cores x 2 + 1 for sync, 1 for Gevent
+# Reference: https://docs.gunicorn.org/en/stable/design.html#how-many-workers
+SERVER_WORKER_AMOUNT=1
+
+# Defaults to gevent. If using windows, it can be switched to sync or solo.
+SERVER_WORKER_CLASS=gevent
+
+# Default number of worker connections, the default is 10.
+SERVER_WORKER_CONNECTIONS=10
+
+# Similar to SERVER_WORKER_CLASS.
+# If using windows, it can be switched to sync or solo.
+CELERY_WORKER_CLASS=
+
+# Request handling timeout. The default is 200,
+# it is recommended to set it to 360 to support a longer sse connection time.
+GUNICORN_TIMEOUT=360
+
+# The number of Celery workers. The default is 1, and can be set as needed.
+CELERY_WORKER_AMOUNT=
+
+# Flag indicating whether to enable autoscaling of Celery workers.
+#
+# Autoscaling is useful when tasks are CPU intensive and can be dynamically
+# allocated and deallocated based on the workload.
+#
+# When autoscaling is enabled, the maximum and minimum number of workers can
+# be specified. The autoscaling algorithm will dynamically adjust the number
+# of workers within the specified range.
+#
+# Default is false (i.e., autoscaling is disabled).
+#
+# Example:
+# CELERY_AUTO_SCALE=true
+CELERY_AUTO_SCALE=false
+
+# The maximum number of Celery workers that can be autoscaled.
+# This is optional and only used when autoscaling is enabled.
+# Default is not set.
+CELERY_MAX_WORKERS=
+
+# The minimum number of Celery workers that can be autoscaled.
+# This is optional and only used when autoscaling is enabled.
+# Default is not set.
+CELERY_MIN_WORKERS=
+
+# API Tool configuration
+API_TOOL_DEFAULT_CONNECT_TIMEOUT=10
+API_TOOL_DEFAULT_READ_TIMEOUT=60
+
+
+# ------------------------------
+# Database Configuration
+# The database uses PostgreSQL. Please use the public schema.
+# It is consistent with the configuration in the 'db' service below.
+# ------------------------------
+
+DB_USERNAME=postgres
+DB_PASSWORD=difyai123456
+DB_HOST=db
+DB_PORT=5432
+DB_DATABASE=dify
+# The size of the database connection pool.
+# The default is 30 connections, which can be appropriately increased.
+SQLALCHEMY_POOL_SIZE=30
+# Database connection pool recycling time, the default is 3600 seconds.
+SQLALCHEMY_POOL_RECYCLE=3600
+# Whether to print SQL, default is false.
+SQLALCHEMY_ECHO=false
+
+# Maximum number of connections to the database
+# Default is 100
+#
+# Reference: https://www.postgresql.org/docs/current/runtime-config-connection.html#GUC-MAX-CONNECTIONS
+POSTGRES_MAX_CONNECTIONS=100
+
+# Sets the amount of shared memory used for postgres's shared buffers.
+# Default is 128MB
+# Recommended value: 25% of available memory
+# Reference: https://www.postgresql.org/docs/current/runtime-config-resource.html#GUC-SHARED-BUFFERS
+POSTGRES_SHARED_BUFFERS=128MB
+
+# Sets the amount of memory used by each database worker for working space.
+# Default is 4MB
+#
+# Reference: https://www.postgresql.org/docs/current/runtime-config-resource.html#GUC-WORK-MEM
+POSTGRES_WORK_MEM=4MB
+
+# Sets the amount of memory reserved for maintenance activities.
+# Default is 64MB
+#
+# Reference: https://www.postgresql.org/docs/current/runtime-config-resource.html#GUC-MAINTENANCE-WORK-MEM
+POSTGRES_MAINTENANCE_WORK_MEM=64MB
+
+# Sets the planner's assumption about the effective cache size.
+# Default is 4096MB
+#
+# Reference: https://www.postgresql.org/docs/current/runtime-config-query.html#GUC-EFFECTIVE-CACHE-SIZE
+POSTGRES_EFFECTIVE_CACHE_SIZE=4096MB
+
+# ------------------------------
+# Redis Configuration
+# This Redis configuration is used for caching and for pub/sub during conversation.
+# ------------------------------
+
+REDIS_HOST=redis
+REDIS_PORT=6379
+REDIS_USERNAME=
+REDIS_PASSWORD=difyai123456
+REDIS_USE_SSL=false
+REDIS_DB=0
+
+# Whether to use Redis Sentinel mode.
+# If set to true, the application will automatically discover and connect to the master node through Sentinel.
+REDIS_USE_SENTINEL=false
+
+# List of Redis Sentinel nodes. If Sentinel mode is enabled, provide at least one Sentinel IP and port.
+# Format: `:,:,:`
+REDIS_SENTINELS=
+REDIS_SENTINEL_SERVICE_NAME=
+REDIS_SENTINEL_USERNAME=
+REDIS_SENTINEL_PASSWORD=
+REDIS_SENTINEL_SOCKET_TIMEOUT=0.1
+
+# List of Redis Cluster nodes. If Cluster mode is enabled, provide at least one Cluster IP and port.
+# Format: `:,:,:`
+REDIS_USE_CLUSTERS=false
+REDIS_CLUSTERS=
+REDIS_CLUSTERS_PASSWORD=
+
+# ------------------------------
+# Celery Configuration
+# ------------------------------
+
+# Use redis as the broker, and redis db 1 for celery broker.
+# Format as follows: `redis://:@:/`
+# Example: redis://:difyai123456@redis:6379/1
+# If use Redis Sentinel, format as follows: `sentinel://:@:/`
+# Example: sentinel://localhost:26379/1;sentinel://localhost:26380/1;sentinel://localhost:26381/1
+CELERY_BROKER_URL=redis://:difyai123456@redis:6379/1
+BROKER_USE_SSL=false
+
+# If you are using Redis Sentinel for high availability, configure the following settings.
+CELERY_USE_SENTINEL=false
+CELERY_SENTINEL_MASTER_NAME=
+CELERY_SENTINEL_SOCKET_TIMEOUT=0.1
+
+# ------------------------------
+# CORS Configuration
+# Used to set the front-end cross-domain access policy.
+# ------------------------------
+
+# Specifies the allowed origins for cross-origin requests to the Web API,
+# e.g. https://dify.app or * for all origins.
+WEB_API_CORS_ALLOW_ORIGINS=*
+
+# Specifies the allowed origins for cross-origin requests to the console API,
+# e.g. https://cloud.dify.ai or * for all origins.
+CONSOLE_CORS_ALLOW_ORIGINS=*
+
+# ------------------------------
+# File Storage Configuration
+# ------------------------------
+
+# The type of storage to use for storing user files.
+STORAGE_TYPE=opendal
+
+# Apache OpenDAL Configuration
+# The configuration for OpenDAL consists of the following format: OPENDAL__.
+# You can find all the service configurations (CONFIG_NAME) in the repository at: https://github.com/apache/opendal/tree/main/core/src/services.
+# Dify will scan configurations starting with OPENDAL_ and automatically apply them.
+# The scheme name for the OpenDAL storage.
+OPENDAL_SCHEME=fs
+# Configurations for OpenDAL Local File System.
+OPENDAL_FS_ROOT=storage
+
+# S3 Configuration
+#
+S3_ENDPOINT=
+S3_REGION=us-east-1
+S3_BUCKET_NAME=difyai
+S3_ACCESS_KEY=
+S3_SECRET_KEY=
+# Whether to use AWS managed IAM roles for authenticating with the S3 service.
+# If set to false, the access key and secret key must be provided.
+S3_USE_AWS_MANAGED_IAM=false
+
+# Azure Blob Configuration
+#
+AZURE_BLOB_ACCOUNT_NAME=difyai
+AZURE_BLOB_ACCOUNT_KEY=difyai
+AZURE_BLOB_CONTAINER_NAME=difyai-container
+AZURE_BLOB_ACCOUNT_URL=https://.blob.core.windows.net
+
+# Google Storage Configuration
+#
+GOOGLE_STORAGE_BUCKET_NAME=your-bucket-name
+GOOGLE_STORAGE_SERVICE_ACCOUNT_JSON_BASE64=
+
+# The Alibaba Cloud OSS configurations,
+#
+ALIYUN_OSS_BUCKET_NAME=your-bucket-name
+ALIYUN_OSS_ACCESS_KEY=your-access-key
+ALIYUN_OSS_SECRET_KEY=your-secret-key
+ALIYUN_OSS_ENDPOINT=https://oss-ap-southeast-1-internal.aliyuncs.com
+ALIYUN_OSS_REGION=ap-southeast-1
+ALIYUN_OSS_AUTH_VERSION=v4
+# Don't start with '/'. OSS doesn't support leading slash in object names.
+ALIYUN_OSS_PATH=your-path
+
+# Tencent COS Configuration
+#
+TENCENT_COS_BUCKET_NAME=your-bucket-name
+TENCENT_COS_SECRET_KEY=your-secret-key
+TENCENT_COS_SECRET_ID=your-secret-id
+TENCENT_COS_REGION=your-region
+TENCENT_COS_SCHEME=your-scheme
+
+# Oracle Storage Configuration
+#
+OCI_ENDPOINT=https://objectstorage.us-ashburn-1.oraclecloud.com
+OCI_BUCKET_NAME=your-bucket-name
+OCI_ACCESS_KEY=your-access-key
+OCI_SECRET_KEY=your-secret-key
+OCI_REGION=us-ashburn-1
+
+# Huawei OBS Configuration
+#
+HUAWEI_OBS_BUCKET_NAME=your-bucket-name
+HUAWEI_OBS_SECRET_KEY=your-secret-key
+HUAWEI_OBS_ACCESS_KEY=your-access-key
+HUAWEI_OBS_SERVER=your-server-url
+
+# Volcengine TOS Configuration
+#
+VOLCENGINE_TOS_BUCKET_NAME=your-bucket-name
+VOLCENGINE_TOS_SECRET_KEY=your-secret-key
+VOLCENGINE_TOS_ACCESS_KEY=your-access-key
+VOLCENGINE_TOS_ENDPOINT=your-server-url
+VOLCENGINE_TOS_REGION=your-region
+
+# Baidu OBS Storage Configuration
+#
+BAIDU_OBS_BUCKET_NAME=your-bucket-name
+BAIDU_OBS_SECRET_KEY=your-secret-key
+BAIDU_OBS_ACCESS_KEY=your-access-key
+BAIDU_OBS_ENDPOINT=your-server-url
+
+# Supabase Storage Configuration
+#
+SUPABASE_BUCKET_NAME=your-bucket-name
+SUPABASE_API_KEY=your-access-key
+SUPABASE_URL=your-server-url
+
+# ------------------------------
+# Vector Database Configuration
+# ------------------------------
+
+# The type of vector store to use.
+# Supported values are `weaviate`, `qdrant`, `milvus`, `myscale`, `relyt`, `pgvector`, `pgvecto-rs`, `chroma`, `opensearch`, `tidb_vector`, `oracle`, `tencent`, `elasticsearch`, `elasticsearch-ja`, `analyticdb`, `couchbase`, `vikingdb`, `oceanbase`.
+VECTOR_STORE=weaviate
+
+# The Weaviate endpoint URL. Only available when VECTOR_STORE is `weaviate`.
+WEAVIATE_ENDPOINT=http://weaviate:8080
+WEAVIATE_API_KEY=WVF5YThaHlkYwhGUSmCRgsX3tD5ngdN8pkih
+
+# The Qdrant endpoint URL. Only available when VECTOR_STORE is `qdrant`.
+QDRANT_URL=http://qdrant:6333
+QDRANT_API_KEY=difyai123456
+QDRANT_CLIENT_TIMEOUT=20
+QDRANT_GRPC_ENABLED=false
+QDRANT_GRPC_PORT=6334
+
+# Milvus configuration Only available when VECTOR_STORE is `milvus`.
+# The milvus uri.
+MILVUS_URI=http://127.0.0.1:19530
+MILVUS_TOKEN=
+MILVUS_USER=root
+MILVUS_PASSWORD=Milvus
+MILVUS_ENABLE_HYBRID_SEARCH=False
+
+# MyScale configuration, only available when VECTOR_STORE is `myscale`
+# For multi-language support, please set MYSCALE_FTS_PARAMS with referring to:
+# https://myscale.com/docs/en/text-search/#understanding-fts-index-parameters
+MYSCALE_HOST=myscale
+MYSCALE_PORT=8123
+MYSCALE_USER=default
+MYSCALE_PASSWORD=
+MYSCALE_DATABASE=dify
+MYSCALE_FTS_PARAMS=
+
+# Couchbase configurations, only available when VECTOR_STORE is `couchbase`
+# The connection string must include hostname defined in the docker-compose file (couchbase-server in this case)
+COUCHBASE_CONNECTION_STRING=couchbase://couchbase-server
+COUCHBASE_USER=Administrator
+COUCHBASE_PASSWORD=password
+COUCHBASE_BUCKET_NAME=Embeddings
+COUCHBASE_SCOPE_NAME=_default
+
+# pgvector configurations, only available when VECTOR_STORE is `pgvector`
+PGVECTOR_HOST=pgvector
+PGVECTOR_PORT=5432
+PGVECTOR_USER=postgres
+PGVECTOR_PASSWORD=difyai123456
+PGVECTOR_DATABASE=dify
+PGVECTOR_MIN_CONNECTION=1
+PGVECTOR_MAX_CONNECTION=5
+
+# pgvecto-rs configurations, only available when VECTOR_STORE is `pgvecto-rs`
+PGVECTO_RS_HOST=pgvecto-rs
+PGVECTO_RS_PORT=5432
+PGVECTO_RS_USER=postgres
+PGVECTO_RS_PASSWORD=difyai123456
+PGVECTO_RS_DATABASE=dify
+
+# analyticdb configurations, only available when VECTOR_STORE is `analyticdb`
+ANALYTICDB_KEY_ID=your-ak
+ANALYTICDB_KEY_SECRET=your-sk
+ANALYTICDB_REGION_ID=cn-hangzhou
+ANALYTICDB_INSTANCE_ID=gp-ab123456
+ANALYTICDB_ACCOUNT=testaccount
+ANALYTICDB_PASSWORD=testpassword
+ANALYTICDB_NAMESPACE=dify
+ANALYTICDB_NAMESPACE_PASSWORD=difypassword
+ANALYTICDB_HOST=gp-test.aliyuncs.com
+ANALYTICDB_PORT=5432
+ANALYTICDB_MIN_CONNECTION=1
+ANALYTICDB_MAX_CONNECTION=5
+
+# TiDB vector configurations, only available when VECTOR_STORE is `tidb`
+TIDB_VECTOR_HOST=tidb
+TIDB_VECTOR_PORT=4000
+TIDB_VECTOR_USER=
+TIDB_VECTOR_PASSWORD=
+TIDB_VECTOR_DATABASE=dify
+
+# Tidb on qdrant configuration, only available when VECTOR_STORE is `tidb_on_qdrant`
+TIDB_ON_QDRANT_URL=http://127.0.0.1
+TIDB_ON_QDRANT_API_KEY=dify
+TIDB_ON_QDRANT_CLIENT_TIMEOUT=20
+TIDB_ON_QDRANT_GRPC_ENABLED=false
+TIDB_ON_QDRANT_GRPC_PORT=6334
+TIDB_PUBLIC_KEY=dify
+TIDB_PRIVATE_KEY=dify
+TIDB_API_URL=http://127.0.0.1
+TIDB_IAM_API_URL=http://127.0.0.1
+TIDB_REGION=regions/aws-us-east-1
+TIDB_PROJECT_ID=dify
+TIDB_SPEND_LIMIT=100
+
+# Chroma configuration, only available when VECTOR_STORE is `chroma`
+CHROMA_HOST=127.0.0.1
+CHROMA_PORT=8000
+CHROMA_TENANT=default_tenant
+CHROMA_DATABASE=default_database
+CHROMA_AUTH_PROVIDER=chromadb.auth.token_authn.TokenAuthClientProvider
+CHROMA_AUTH_CREDENTIALS=
+
+# Oracle configuration, only available when VECTOR_STORE is `oracle`
+ORACLE_HOST=oracle
+ORACLE_PORT=1521
+ORACLE_USER=dify
+ORACLE_PASSWORD=dify
+ORACLE_DATABASE=FREEPDB1
+
+# relyt configurations, only available when VECTOR_STORE is `relyt`
+RELYT_HOST=db
+RELYT_PORT=5432
+RELYT_USER=postgres
+RELYT_PASSWORD=difyai123456
+RELYT_DATABASE=postgres
+
+# open search configuration, only available when VECTOR_STORE is `opensearch`
+OPENSEARCH_HOST=opensearch
+OPENSEARCH_PORT=9200
+OPENSEARCH_USER=admin
+OPENSEARCH_PASSWORD=admin
+OPENSEARCH_SECURE=true
+
+# tencent vector configurations, only available when VECTOR_STORE is `tencent`
+TENCENT_VECTOR_DB_URL=http://127.0.0.1
+TENCENT_VECTOR_DB_API_KEY=dify
+TENCENT_VECTOR_DB_TIMEOUT=30
+TENCENT_VECTOR_DB_USERNAME=dify
+TENCENT_VECTOR_DB_DATABASE=dify
+TENCENT_VECTOR_DB_SHARD=1
+TENCENT_VECTOR_DB_REPLICAS=2
+
+# ElasticSearch configuration, only available when VECTOR_STORE is `elasticsearch`
+ELASTICSEARCH_HOST=0.0.0.0
+ELASTICSEARCH_PORT=9200
+ELASTICSEARCH_USERNAME=elastic
+ELASTICSEARCH_PASSWORD=elastic
+KIBANA_PORT=5601
+
+# baidu vector configurations, only available when VECTOR_STORE is `baidu`
+BAIDU_VECTOR_DB_ENDPOINT=http://127.0.0.1:5287
+BAIDU_VECTOR_DB_CONNECTION_TIMEOUT_MS=30000
+BAIDU_VECTOR_DB_ACCOUNT=root
+BAIDU_VECTOR_DB_API_KEY=dify
+BAIDU_VECTOR_DB_DATABASE=dify
+BAIDU_VECTOR_DB_SHARD=1
+BAIDU_VECTOR_DB_REPLICAS=3
+
+# VikingDB configurations, only available when VECTOR_STORE is `vikingdb`
+VIKINGDB_ACCESS_KEY=your-ak
+VIKINGDB_SECRET_KEY=your-sk
+VIKINGDB_REGION=cn-shanghai
+VIKINGDB_HOST=api-vikingdb.xxx.volces.com
+VIKINGDB_SCHEMA=http
+VIKINGDB_CONNECTION_TIMEOUT=30
+VIKINGDB_SOCKET_TIMEOUT=30
+
+# Lindorm configuration, only available when VECTOR_STORE is `lindorm`
+LINDORM_URL=http://lindorm:30070
+LINDORM_USERNAME=lindorm
+LINDORM_PASSWORD=lindorm
+
+# OceanBase Vector configuration, only available when VECTOR_STORE is `oceanbase`
+OCEANBASE_VECTOR_HOST=oceanbase
+OCEANBASE_VECTOR_PORT=2881
+OCEANBASE_VECTOR_USER=root@test
+OCEANBASE_VECTOR_PASSWORD=difyai123456
+OCEANBASE_VECTOR_DATABASE=test
+OCEANBASE_CLUSTER_NAME=difyai
+OCEANBASE_MEMORY_LIMIT=6G
+
+# Upstash Vector configuration, only available when VECTOR_STORE is `upstash`
+UPSTASH_VECTOR_URL=https://xxx-vector.upstash.io
+UPSTASH_VECTOR_TOKEN=dify
+
+# ------------------------------
+# Knowledge Configuration
+# ------------------------------
+
+# Upload file size limit, default 15M.
+UPLOAD_FILE_SIZE_LIMIT=15
+
+# The maximum number of files that can be uploaded at a time, default 5.
+UPLOAD_FILE_BATCH_LIMIT=5
+
+# ETL type, support: `dify`, `Unstructured`
+# `dify` Dify's proprietary file extraction scheme
+# `Unstructured` Unstructured.io file extraction scheme
+ETL_TYPE=dify
+
+# Unstructured API path and API key, needs to be configured when ETL_TYPE is Unstructured
+# Or using Unstructured for document extractor node for pptx.
+# For example: http://unstructured:8000/general/v0/general
+UNSTRUCTURED_API_URL=
+UNSTRUCTURED_API_KEY=
+SCARF_NO_ANALYTICS=true
+
+# ------------------------------
+# Model Configuration
+# ------------------------------
+
+# The maximum number of tokens allowed for prompt generation.
+# This setting controls the upper limit of tokens that can be used by the LLM
+# when generating a prompt in the prompt generation tool.
+# Default: 512 tokens.
+PROMPT_GENERATION_MAX_TOKENS=512
+
+# The maximum number of tokens allowed for code generation.
+# This setting controls the upper limit of tokens that can be used by the LLM
+# when generating code in the code generation tool.
+# Default: 1024 tokens.
+CODE_GENERATION_MAX_TOKENS=1024
+
+# ------------------------------
+# Multi-modal Configuration
+# ------------------------------
+
+# The format of the image/video/audio/document sent when the multi-modal model is input,
+# the default is base64, optional url.
+# The delay of the call in url mode will be lower than that in base64 mode.
+# It is generally recommended to use the more compatible base64 mode.
+# If configured as url, you need to configure FILES_URL as an externally accessible address so that the multi-modal model can access the image/video/audio/document.
+MULTIMODAL_SEND_FORMAT=base64
+# Upload image file size limit, default 10M.
+UPLOAD_IMAGE_FILE_SIZE_LIMIT=10
+# Upload video file size limit, default 100M.
+UPLOAD_VIDEO_FILE_SIZE_LIMIT=100
+# Upload audio file size limit, default 50M.
+UPLOAD_AUDIO_FILE_SIZE_LIMIT=50
+
+# ------------------------------
+# Sentry Configuration
+# Used for application monitoring and error log tracking.
+# ------------------------------
+SENTRY_DSN=
+
+# API Service Sentry DSN address, default is empty, when empty,
+# all monitoring information is not reported to Sentry.
+# If not set, Sentry error reporting will be disabled.
+API_SENTRY_DSN=
+# API Service The reporting ratio of Sentry events, if it is 0.01, it is 1%.
+API_SENTRY_TRACES_SAMPLE_RATE=1.0
+# API Service The reporting ratio of Sentry profiles, if it is 0.01, it is 1%.
+API_SENTRY_PROFILES_SAMPLE_RATE=1.0
+
+# Web Service Sentry DSN address, default is empty, when empty,
+# all monitoring information is not reported to Sentry.
+# If not set, Sentry error reporting will be disabled.
+WEB_SENTRY_DSN=
+
+# ------------------------------
+# Notion Integration Configuration
+# Variables can be obtained by applying for Notion integration: https://www.notion.so/my-integrations
+# ------------------------------
+
+# Configure as "public" or "internal".
+# Since Notion's OAuth redirect URL only supports HTTPS,
+# if deploying locally, please use Notion's internal integration.
+NOTION_INTEGRATION_TYPE=public
+# Notion OAuth client secret (used for public integration type)
+NOTION_CLIENT_SECRET=
+# Notion OAuth client id (used for public integration type)
+NOTION_CLIENT_ID=
+# Notion internal integration secret.
+# If the value of NOTION_INTEGRATION_TYPE is "internal",
+# you need to configure this variable.
+NOTION_INTERNAL_SECRET=
+
+# ------------------------------
+# Mail related configuration
+# ------------------------------
+
+# Mail type, support: resend, smtp
+MAIL_TYPE=resend
+
+# Default send from email address, if not specified
+MAIL_DEFAULT_SEND_FROM=
+
+# API-Key for the Resend email provider, used when MAIL_TYPE is `resend`.
+RESEND_API_URL=https://api.resend.com
+RESEND_API_KEY=your-resend-api-key
+
+
+# SMTP server configuration, used when MAIL_TYPE is `smtp`
+SMTP_SERVER=
+SMTP_PORT=465
+SMTP_USERNAME=
+SMTP_PASSWORD=
+SMTP_USE_TLS=true
+SMTP_OPPORTUNISTIC_TLS=false
+
+# ------------------------------
+# Others Configuration
+# ------------------------------
+
+# Maximum length of segmentation tokens for indexing
+INDEXING_MAX_SEGMENTATION_TOKENS_LENGTH=4000
+
+# Member invitation link valid time (hours),
+# Default: 72.
+INVITE_EXPIRY_HOURS=72
+
+# Reset password token valid time (minutes),
+RESET_PASSWORD_TOKEN_EXPIRY_MINUTES=5
+
+# The sandbox service endpoint.
+CODE_EXECUTION_ENDPOINT=http://sandbox:8194
+CODE_EXECUTION_API_KEY=dify-sandbox
+CODE_MAX_NUMBER=9223372036854775807
+CODE_MIN_NUMBER=-9223372036854775808
+CODE_MAX_DEPTH=5
+CODE_MAX_PRECISION=20
+CODE_MAX_STRING_LENGTH=80000
+CODE_MAX_STRING_ARRAY_LENGTH=30
+CODE_MAX_OBJECT_ARRAY_LENGTH=30
+CODE_MAX_NUMBER_ARRAY_LENGTH=1000
+CODE_EXECUTION_CONNECT_TIMEOUT=10
+CODE_EXECUTION_READ_TIMEOUT=60
+CODE_EXECUTION_WRITE_TIMEOUT=10
+TEMPLATE_TRANSFORM_MAX_LENGTH=80000
+
+# Workflow runtime configuration
+WORKFLOW_MAX_EXECUTION_STEPS=500
+WORKFLOW_MAX_EXECUTION_TIME=1200
+WORKFLOW_CALL_MAX_DEPTH=5
+MAX_VARIABLE_SIZE=204800
+WORKFLOW_PARALLEL_DEPTH_LIMIT=3
+WORKFLOW_FILE_UPLOAD_LIMIT=10
+
+# HTTP request node in workflow configuration
+HTTP_REQUEST_NODE_MAX_BINARY_SIZE=10485760
+HTTP_REQUEST_NODE_MAX_TEXT_SIZE=1048576
+
+# SSRF Proxy server HTTP URL
+SSRF_PROXY_HTTP_URL=http://ssrf_proxy:3128
+# SSRF Proxy server HTTPS URL
+SSRF_PROXY_HTTPS_URL=http://ssrf_proxy:3128
+
+# ------------------------------
+# Environment Variables for web Service
+# ------------------------------
+
+# The timeout for the text generation in millisecond
+TEXT_GENERATION_TIMEOUT_MS=60000
+
+# ------------------------------
+# Environment Variables for db Service
+# ------------------------------
+
+PGUSER=${DB_USERNAME}
+# The password for the default postgres user.
+POSTGRES_PASSWORD=${DB_PASSWORD}
+# The name of the default postgres database.
+POSTGRES_DB=${DB_DATABASE}
+# postgres data directory
+PGDATA=/var/lib/postgresql/data/pgdata
+
+# ------------------------------
+# Environment Variables for sandbox Service
+# ------------------------------
+
+# The API key for the sandbox service
+SANDBOX_API_KEY=dify-sandbox
+# The mode in which the Gin framework runs
+SANDBOX_GIN_MODE=release
+# The timeout for the worker in seconds
+SANDBOX_WORKER_TIMEOUT=15
+# Enable network for the sandbox service
+SANDBOX_ENABLE_NETWORK=true
+# HTTP proxy URL for SSRF protection
+SANDBOX_HTTP_PROXY=http://ssrf_proxy:3128
+# HTTPS proxy URL for SSRF protection
+SANDBOX_HTTPS_PROXY=http://ssrf_proxy:3128
+# The port on which the sandbox service runs
+SANDBOX_PORT=8194
+
+# ------------------------------
+# Environment Variables for weaviate Service
+# (only used when VECTOR_STORE is weaviate)
+# ------------------------------
+WEAVIATE_PERSISTENCE_DATA_PATH=/var/lib/weaviate
+WEAVIATE_QUERY_DEFAULTS_LIMIT=25
+WEAVIATE_AUTHENTICATION_ANONYMOUS_ACCESS_ENABLED=true
+WEAVIATE_DEFAULT_VECTORIZER_MODULE=none
+WEAVIATE_CLUSTER_HOSTNAME=node1
+WEAVIATE_AUTHENTICATION_APIKEY_ENABLED=true
+WEAVIATE_AUTHENTICATION_APIKEY_ALLOWED_KEYS=WVF5YThaHlkYwhGUSmCRgsX3tD5ngdN8pkih
+WEAVIATE_AUTHENTICATION_APIKEY_USERS=hello@dify.ai
+WEAVIATE_AUTHORIZATION_ADMINLIST_ENABLED=true
+WEAVIATE_AUTHORIZATION_ADMINLIST_USERS=hello@dify.ai
+
+# ------------------------------
+# Environment Variables for Chroma
+# (only used when VECTOR_STORE is chroma)
+# ------------------------------
+
+# Authentication credentials for Chroma server
+CHROMA_SERVER_AUTHN_CREDENTIALS=difyai123456
+# Authentication provider for Chroma server
+CHROMA_SERVER_AUTHN_PROVIDER=chromadb.auth.token_authn.TokenAuthenticationServerProvider
+# Persistence setting for Chroma server
+CHROMA_IS_PERSISTENT=TRUE
+
+# ------------------------------
+# Environment Variables for Oracle Service
+# (only used when VECTOR_STORE is Oracle)
+# ------------------------------
+ORACLE_PWD=Dify123456
+ORACLE_CHARACTERSET=AL32UTF8
+
+# ------------------------------
+# Environment Variables for milvus Service
+# (only used when VECTOR_STORE is milvus)
+# ------------------------------
+# ETCD configuration for auto compaction mode
+ETCD_AUTO_COMPACTION_MODE=revision
+# ETCD configuration for auto compaction retention in terms of number of revisions
+ETCD_AUTO_COMPACTION_RETENTION=1000
+# ETCD configuration for backend quota in bytes
+ETCD_QUOTA_BACKEND_BYTES=4294967296
+# ETCD configuration for the number of changes before triggering a snapshot
+ETCD_SNAPSHOT_COUNT=50000
+# MinIO access key for authentication
+MINIO_ACCESS_KEY=minioadmin
+# MinIO secret key for authentication
+MINIO_SECRET_KEY=minioadmin
+# ETCD service endpoints
+ETCD_ENDPOINTS=etcd:2379
+# MinIO service address
+MINIO_ADDRESS=minio:9000
+# Enable or disable security authorization
+MILVUS_AUTHORIZATION_ENABLED=true
+
+# ------------------------------
+# Environment Variables for pgvector / pgvector-rs Service
+# (only used when VECTOR_STORE is pgvector / pgvector-rs)
+# ------------------------------
+PGVECTOR_PGUSER=postgres
+# The password for the default postgres user.
+PGVECTOR_POSTGRES_PASSWORD=difyai123456
+# The name of the default postgres database.
+PGVECTOR_POSTGRES_DB=dify
+# postgres data directory
+PGVECTOR_PGDATA=/var/lib/postgresql/data/pgdata
+
+# ------------------------------
+# Environment Variables for opensearch
+# (only used when VECTOR_STORE is opensearch)
+# ------------------------------
+OPENSEARCH_DISCOVERY_TYPE=single-node
+OPENSEARCH_BOOTSTRAP_MEMORY_LOCK=true
+OPENSEARCH_JAVA_OPTS_MIN=512m
+OPENSEARCH_JAVA_OPTS_MAX=1024m
+OPENSEARCH_INITIAL_ADMIN_PASSWORD=Qazwsxedc!@#123
+OPENSEARCH_MEMLOCK_SOFT=-1
+OPENSEARCH_MEMLOCK_HARD=-1
+OPENSEARCH_NOFILE_SOFT=65536
+OPENSEARCH_NOFILE_HARD=65536
+
+# ------------------------------
+# Environment Variables for Nginx reverse proxy
+# ------------------------------
+NGINX_SERVER_NAME=_
+NGINX_HTTPS_ENABLED=false
+# HTTP port
+NGINX_PORT=80
+# SSL settings are only applied when HTTPS_ENABLED is true
+NGINX_SSL_PORT=443
+# if HTTPS_ENABLED is true, you're required to add your own SSL certificates/keys to the `./nginx/ssl` directory
+# and modify the env vars below accordingly.
+NGINX_SSL_CERT_FILENAME=dify.crt
+NGINX_SSL_CERT_KEY_FILENAME=dify.key
+NGINX_SSL_PROTOCOLS=TLSv1.1 TLSv1.2 TLSv1.3
+
+# Nginx performance tuning
+NGINX_WORKER_PROCESSES=auto
+NGINX_CLIENT_MAX_BODY_SIZE=15M
+NGINX_KEEPALIVE_TIMEOUT=65
+
+# Proxy settings
+NGINX_PROXY_READ_TIMEOUT=3600s
+NGINX_PROXY_SEND_TIMEOUT=3600s
+
+# Set true to accept requests for /.well-known/acme-challenge/
+NGINX_ENABLE_CERTBOT_CHALLENGE=false
+
+# ------------------------------
+# Certbot Configuration
+# ------------------------------
+
+# Email address (required to get certificates from Let's Encrypt)
+CERTBOT_EMAIL=your_email@example.com
+
+# Domain name
+CERTBOT_DOMAIN=your_domain.com
+
+# certbot command options
+# i.e: --force-renewal --dry-run --test-cert --debug
+CERTBOT_OPTIONS=
+
+# ------------------------------
+# Environment Variables for SSRF Proxy
+# ------------------------------
+SSRF_HTTP_PORT=3128
+SSRF_COREDUMP_DIR=/var/spool/squid
+SSRF_REVERSE_PROXY_PORT=8194
+SSRF_SANDBOX_HOST=sandbox
+SSRF_DEFAULT_TIME_OUT=5
+SSRF_DEFAULT_CONNECT_TIME_OUT=5
+SSRF_DEFAULT_READ_TIME_OUT=5
+SSRF_DEFAULT_WRITE_TIME_OUT=5
+
+# ------------------------------
+# docker env var for specifying vector db type at startup
+# (based on the vector db type, the corresponding docker
+# compose profile will be used)
+# if you want to use unstructured, add ',unstructured' to the end
+# ------------------------------
+COMPOSE_PROFILES=${VECTOR_STORE:-weaviate}
+
+# ------------------------------
+# Docker Compose Service Expose Host Port Configurations
+# ------------------------------
+EXPOSE_NGINX_PORT=80
+EXPOSE_NGINX_SSL_PORT=443
+
+# ----------------------------------------------------------------------------
+# ModelProvider & Tool Position Configuration
+# Used to specify the model providers and tools that can be used in the app.
+# ----------------------------------------------------------------------------
+
+# Pin, include, and exclude tools
+# Use comma-separated values with no spaces between items.
+# Example: POSITION_TOOL_PINS=bing,google
+POSITION_TOOL_PINS=
+POSITION_TOOL_INCLUDES=
+POSITION_TOOL_EXCLUDES=
+
+# Pin, include, and exclude model providers
+# Use comma-separated values with no spaces between items.
+# Example: POSITION_PROVIDER_PINS=openai,openllm
+POSITION_PROVIDER_PINS=
+POSITION_PROVIDER_INCLUDES=
+POSITION_PROVIDER_EXCLUDES=
+
+# CSP https://developer.mozilla.org/en-US/docs/Web/HTTP/CSP
+CSP_WHITELIST=
+
+# Enable or disable create tidb service job
+CREATE_TIDB_SERVICE_JOB_ENABLED=false
+
+# Maximum number of submitted thread count in a ThreadPool for parallel node execution
+MAX_SUBMIT_COUNT=100
+
+# The maximum number of top-k value for RAG.
+TOP_K_MAX_VALUE=10
+
+# ------------------------------
+# Plugin Daemon Configuration
+# ------------------------------
+
+DB_PLUGIN_DATABASE=dify_plugin
+EXPOSE_PLUGIN_DAEMON_PORT=5002
+PLUGIN_DAEMON_PORT=5002
+PLUGIN_DAEMON_KEY=lYkiYYT6owG+71oLerGzA7GXCgOT++6ovaezWAjpCjf+Sjc3ZtU+qUEi
+PLUGIN_DAEMON_URL=http://plugin_daemon:5002
+PLUGIN_MAX_PACKAGE_SIZE=52428800
+PLUGIN_PPROF_ENABLED=false
+
+PLUGIN_DEBUGGING_HOST=0.0.0.0
+PLUGIN_DEBUGGING_PORT=5003
+EXPOSE_PLUGIN_DEBUGGING_HOST=localhost
+EXPOSE_PLUGIN_DEBUGGING_PORT=5003
+
+PLUGIN_DIFY_INNER_API_KEY=QaHbTe77CtuXmsfyhR7+vRjI/+XbV1AaFy691iy+kGDv2Jvy0/eAh8Y1
+PLUGIN_DIFY_INNER_API_URL=http://api:5001
+
+ENDPOINT_URL_TEMPLATE=http://localhost/e/{hook_id}
+
+MARKETPLACE_ENABLED=true
+MARKETPLACE_API_URL=https://marketplace.dify.ai
+
+FORCE_VERIFYING_SIGNATURE=true
diff --git a/apps/dify/1.1.1/envs/global.env b/apps/dify/1.1.1/envs/global.env
new file mode 100644
index 000000000..1dcc4aa27
--- /dev/null
+++ b/apps/dify/1.1.1/envs/global.env
@@ -0,0 +1 @@
+TZ=Asia/Shanghai
\ No newline at end of file
diff --git a/apps/dify/1.1.1/scripts/init.sh b/apps/dify/1.1.1/scripts/init.sh
new file mode 100644
index 000000000..085059fcc
--- /dev/null
+++ b/apps/dify/1.1.1/scripts/init.sh
@@ -0,0 +1,36 @@
+#!/bin/bash
+
+if [ -f .env ]; then
+ source .env
+
+ # setup-1 add default values
+ CURRENT_DIR=$(pwd)
+ sed -i '/^ENV_FILE=/d' .env
+ sed -i '/^GLOBAL_ENV_FILE=/d' .env
+ echo "ENV_FILE=${CURRENT_DIR}/.env" >> .env
+ echo "GLOBAL_ENV_FILE=${CURRENT_DIR}/envs/global.env" >> .env
+ echo "APP_ENV_FILE=${CURRENT_DIR}/envs/dify.env" >> .env
+
+ # setup-2 update dir permissions
+ mkdir -p "$DIFY_ROOT_PATH"
+
+ cp -r conf/. "$DIFY_ROOT_PATH/"
+
+ # setup-3 sync environment variables
+ env_source="envs/dify.env"
+ if [ -f "$env_source" ]; then
+ while IFS='=' read -r key value; do
+ if [[ -z "$key" || "$key" =~ ^# ]]; then
+ continue
+ fi
+ if ! grep -q "^$key=" .env; then
+ echo "$key=$value" >> .env
+ fi
+ done < "$env_source"
+ fi
+
+ echo "Check Finish."
+
+else
+ echo "Error: .env file not found."
+fi
diff --git a/apps/dify/1.1.1/scripts/uninstall.sh b/apps/dify/1.1.1/scripts/uninstall.sh
new file mode 100644
index 000000000..c86c4fbca
--- /dev/null
+++ b/apps/dify/1.1.1/scripts/uninstall.sh
@@ -0,0 +1,10 @@
+#!/bin/bash
+
+if [ -f .env ]; then
+ source .env
+
+ echo "Check Finish."
+
+else
+ echo "Error: .env file not found."
+fi
diff --git a/apps/dify/1.1.1/scripts/upgrade.sh b/apps/dify/1.1.1/scripts/upgrade.sh
new file mode 100644
index 000000000..ea92b0638
--- /dev/null
+++ b/apps/dify/1.1.1/scripts/upgrade.sh
@@ -0,0 +1,47 @@
+#!/bin/bash
+
+if [ -f .env ]; then
+ source .env
+
+ # setup-1 add default values
+ CURRENT_DIR=$(pwd)
+ sed -i '/^ENV_FILE=/d' .env
+ sed -i '/^GLOBAL_ENV_FILE=/d' .env
+ echo "ENV_FILE=${CURRENT_DIR}/.env" >> .env
+ echo "GLOBAL_ENV_FILE=${CURRENT_DIR}/envs/global.env" >> .env
+ echo "APP_ENV_FILE=${CURRENT_DIR}/envs/dify.env" >> .env
+
+ # setup-2 update dir permissions
+ mkdir -p "$DIFY_ROOT_PATH"
+
+ if [ -d "conf" ]; then
+ find conf -type f | while read -r file; do
+ dest="$DIFY_ROOT_PATH/${file#conf/}"
+ if [ ! -e "$dest" ]; then
+ mkdir -p "$(dirname "$dest")"
+ cp "$file" "$dest"
+ fi
+ done
+ echo "Conf files copied to $DIFY_ROOT_PATH."
+ else
+ echo "Warning: conf directory not found."
+ fi
+
+ # setup-3 sync environment variables
+ env_source="envs/dify.env"
+ if [ -f "$env_source" ]; then
+ while IFS='=' read -r key value; do
+ if [[ -z "$key" || "$key" =~ ^# ]]; then
+ continue
+ fi
+ if ! grep -q "^$key=" .env; then
+ echo "$key=$value" >> .env
+ fi
+ done < "$env_source"
+ fi
+
+ echo "Check Finish."
+
+else
+ echo "Error: .env file not found."
+fi
diff --git a/apps/diun/README.md b/apps/diun/README.md
new file mode 100644
index 000000000..cb0ee06b8
--- /dev/null
+++ b/apps/diun/README.md
@@ -0,0 +1,82 @@
+# Diun
+
+Diun 是一个用于监控 Docker 镜像更新并发送通知的命令行工具。
+
+## 功能特性
+
+- 自动监控 Docker 镜像更新
+- 支持多种通知方式(Discord、Telegram、Slack、邮件等)
+- 支持多种提供者(Docker、Kubernetes、Swarm、Nomad等)
+- 基于 Cron 表达式的调度
+- 支持多种架构(amd64、arm64、arm/v6、arm/v7等)
+- 轻量级设计,资源占用少
+
+## 使用方法
+
+1. 部署后 Diun 会自动开始监控 Docker 镜像
+2. 默认每6小时检查一次镜像更新
+3. 当检测到镜像更新时,会发送通知
+4. 通过 Docker 标签 `diun.enable=true` 控制哪些容器被监控
+
+## 配置说明
+
+- **时区**:Asia/Shanghai(上海时区)
+- **数据存储**:`./data` 目录包含 bbolt 数据库
+- **配置文件**:`./diun.yml` 包含所有监控和通知配置
+
+## 默认配置
+
+应用使用以下默认配置:
+
+```yaml
+watch:
+ workers: 20
+ schedule: "0 */6 * * *"
+ firstCheckNotif: false
+
+providers:
+ docker:
+ watchByDefault: true
+```
+
+## 自定义配置
+
+如需自定义监控、通知等配置,请编辑 `diun.yml` 文件。参考官方文档进行配置:
+
+- [配置概述](https://crazymax.dev/diun/configuration/overview/)
+- [通知配置](https://crazymax.dev/diun/notifications/)
+- [提供者配置](https://crazymax.dev/diun/providers/)
+
+## 支持的提供者
+
+- **Docker**:监控 Docker 容器和镜像
+- **Kubernetes**:监控 Kubernetes 集群
+- **Swarm**:监控 Docker Swarm 服务
+- **Nomad**:监控 HashiCorp Nomad 任务
+- **Dockerfile**:监控 Dockerfile 中的基础镜像
+- **File**:从文件读取镜像列表
+
+## 支持的通知方式
+
+- Discord、Telegram、Slack
+- 邮件、Matrix、MQTT
+- Pushover、Rocket.Chat
+- Webhook、Script、Signal
+- Gotify、Ntfy、Teams
+
+## 监控配置
+
+要监控特定的 Docker 容器,在容器标签中添加:
+
+```yaml
+labels:
+ - "diun.enable=true"
+ - "diun.watch_repo=true" # 可选,监控仓库更新
+```
+
+## 相关链接
+
+- [官方网站](https://crazymax.dev/diun/)
+- [GitHub 项目](https://github.com/crazy-max/diun)
+- [Docker Hub](https://hub.docker.com/r/crazymax/diun/)
+- [基础示例](https://crazymax.dev/diun/usage/basic-example/)
\ No newline at end of file
diff --git a/apps/diun/README_en.md b/apps/diun/README_en.md
new file mode 100644
index 000000000..f7742d740
--- /dev/null
+++ b/apps/diun/README_en.md
@@ -0,0 +1,82 @@
+# Diun
+
+Diun is a CLI tool to monitor Docker image updates and send notifications.
+
+## Features
+
+- Automatically monitor Docker image updates
+- Support multiple notification methods (Discord, Telegram, Slack, Email, etc.)
+- Support multiple providers (Docker, Kubernetes, Swarm, Nomad, etc.)
+- Cron-based scheduling
+- Support multiple architectures (amd64, arm64, arm/v6, arm/v7, etc.)
+- Lightweight design with low resource usage
+
+## Usage
+
+1. After deployment, Diun will automatically start monitoring Docker images
+2. Default check interval is every 6 hours
+3. When image updates are detected, notifications will be sent
+4. Control which containers are monitored via Docker label `diun.enable=true`
+
+## Configuration
+
+- **Timezone**: Asia/Shanghai (Shanghai timezone)
+- **Data Storage**: `./data` directory contains bbolt database
+- **Config File**: `./diun.yml` contains all monitoring and notification configurations
+
+## Default Configuration
+
+The application uses the following default configuration:
+
+```yaml
+watch:
+ workers: 20
+ schedule: "0 */6 * * *"
+ firstCheckNotif: false
+
+providers:
+ docker:
+ watchByDefault: true
+```
+
+## Custom Configuration
+
+To customize monitoring, notifications, and other configurations, please edit the `diun.yml` file. Refer to the official documentation for configuration:
+
+- [Configuration Overview](https://crazymax.dev/diun/configuration/overview/)
+- [Notifications](https://crazymax.dev/diun/notifications/)
+- [Providers](https://crazymax.dev/diun/providers/)
+
+## Supported Providers
+
+- **Docker**: Monitor Docker containers and images
+- **Kubernetes**: Monitor Kubernetes clusters
+- **Swarm**: Monitor Docker Swarm services
+- **Nomad**: Monitor HashiCorp Nomad tasks
+- **Dockerfile**: Monitor base images in Dockerfiles
+- **File**: Read image list from files
+
+## Supported Notifications
+
+- Discord, Telegram, Slack
+- Email, Matrix, MQTT
+- Pushover, Rocket.Chat
+- Webhook, Script, Signal
+- Gotify, Ntfy, Teams
+
+## Monitoring Configuration
+
+To monitor specific Docker containers, add these labels:
+
+```yaml
+labels:
+ - "diun.enable=true"
+ - "diun.watch_repo=true" # Optional, monitor repository updates
+```
+
+## Links
+
+- [Official Website](https://crazymax.dev/diun/)
+- [GitHub Project](https://github.com/crazy-max/diun)
+- [Docker Hub](https://hub.docker.com/r/crazymax/diun/)
+- [Basic Example](https://crazymax.dev/diun/usage/basic-example/)
\ No newline at end of file
diff --git a/apps/diun/data.yml b/apps/diun/data.yml
new file mode 100644
index 000000000..04c8a016d
--- /dev/null
+++ b/apps/diun/data.yml
@@ -0,0 +1,35 @@
+name: Diun
+tags:
+ - 实用工具
+title: Docker 镜像更新通知工具
+description: Diun 是一个用于监控 Docker 镜像更新并发送通知的命令行工具
+additionalProperties:
+ key: diun
+ name: Diun
+ tags:
+ - Tool
+ shortDescZh: Docker 镜像更新通知命令行工具
+ shortDescEn: Docker image update notification CLI tool
+ description:
+ en: Diun is a CLI tool to monitor Docker image updates and send notifications
+ ja: DiunはDockerイメージの更新を監視し、通知を送信するCLIツールです
+ ms: Diun ialah alat CLI untuk memantau kemas kini imej Docker dan menghantar notifikasi
+ pt-br: Diun é uma ferramenta CLI para monitorar atualizações de imagens Docker e enviar notificações
+ ru: Diun — это CLI-инструмент для мониторинга обновлений Docker-образов и отправки уведомлений
+ ko: Diun은 Docker 이미지 업데이트를 모니터링하고 알림을 보내는 CLI 도구입니다
+ zh-Hant: Diun 是一個用於監控 Docker 映像更新並發送通知的命令列工具
+ zh: Diun 是一个用于监控 Docker 镜像更新并发送通知的命令行工具
+ type: tool
+ crossVersionUpdate: true
+ limit: 0
+ recommend: 0
+ website: https://crazymax.dev/diun/
+ github: https://github.com/crazy-max/diun
+ document: https://crazymax.dev/diun/usage/basic-example/
+ architectures:
+ - amd64
+ - arm/v6
+ - arm/v7
+ - arm64
+ - 386
+ - ppc64le
\ No newline at end of file
diff --git a/apps/diun/latest/data.yml b/apps/diun/latest/data.yml
new file mode 100644
index 000000000..a27754373
--- /dev/null
+++ b/apps/diun/latest/data.yml
@@ -0,0 +1,2 @@
+additionalProperties:
+ formFields: []
\ No newline at end of file
diff --git a/apps/diun/latest/diun.yml b/apps/diun/latest/diun.yml
new file mode 100644
index 000000000..d531cda86
--- /dev/null
+++ b/apps/diun/latest/diun.yml
@@ -0,0 +1,8 @@
+watch:
+ workers: 20
+ schedule: "0 */6 * * *"
+ firstCheckNotif: false
+
+providers:
+ docker:
+ watchByDefault: true
\ No newline at end of file
diff --git a/apps/diun/latest/docker-compose.yml b/apps/diun/latest/docker-compose.yml
new file mode 100644
index 000000000..2f6c2cfff
--- /dev/null
+++ b/apps/diun/latest/docker-compose.yml
@@ -0,0 +1,19 @@
+services:
+ diun:
+ container_name: ${CONTAINER_NAME}
+ image: crazymax/diun:latest
+ command: serve
+ restart: always
+ networks:
+ - 1panel-network
+ volumes:
+ - ./data:/data
+ - ./diun.yml:/diun.yml:ro
+ - /var/run/docker.sock:/var/run/docker.sock
+ environment:
+ - "TZ=Asia/Shanghai"
+ - "LOG_LEVEL=info"
+ - "LOG_JSON=false"
+networks:
+ 1panel-network:
+ external: true
\ No newline at end of file
diff --git a/apps/diun/logo.png b/apps/diun/logo.png
new file mode 100644
index 000000000..083731322
Binary files /dev/null and b/apps/diun/logo.png differ
diff --git a/apps/docmost/0.20.4/data.yml b/apps/docmost/0.20.4/data.yml
new file mode 100644
index 000000000..b46ee7b3f
--- /dev/null
+++ b/apps/docmost/0.20.4/data.yml
@@ -0,0 +1,19 @@
+additionalProperties:
+ formFields:
+ - default: 30049
+ edit: true
+ envKey: PANEL_APP_PORT_HTTP
+ labelEn: Port
+ labelZh: 端口
+ required: true
+ rule: paramPort
+ type: number
+ - default: ""
+ edit: true
+ envKey: PANEL_DB_USER_PASSWORD
+ labelEn: Database Password
+ labelZh: 数据库用户密码
+ random: true
+ required: true
+ rule: paramComplexity
+ type: password
\ No newline at end of file
diff --git a/apps/docmost/0.20.4/docker-compose.yml b/apps/docmost/0.20.4/docker-compose.yml
new file mode 100644
index 000000000..6ccd03395
--- /dev/null
+++ b/apps/docmost/0.20.4/docker-compose.yml
@@ -0,0 +1,38 @@
+services:
+ docmost:
+ container_name: ${CONTAINER_NAME}
+ restart: always
+ ports:
+ - "${PANEL_APP_PORT_HTTP}:3000"
+ volumes:
+ - docmost:/app/data/storage
+ environment:
+ APP_URL: "http://localhost:3000"
+ APP_SECRET: "52f235dee223c92a83a934ada13b83075c9855fe966b3cbf9dd86810e2b742ee"
+ DATABASE_URL: "postgresql://docmost:${PANEL_DB_USER_PASSWORD}@db:5432/docmost?schema=public"
+ REDIS_URL: "redis://redis:6379"
+ image: docmost/docmost:0.20.4
+ labels:
+ createdBy: "Apps"
+ depends_on:
+ - db
+ - redis
+ db:
+ image: postgres:16-alpine
+ environment:
+ POSTGRES_DB: docmost
+ POSTGRES_USER: docmost
+ POSTGRES_PASSWORD: ${PANEL_DB_USER_PASSWORD}
+ restart: always
+ volumes:
+ - db_data:/var/lib/postgresql/data
+
+ redis:
+ image: redis:7.2-alpine
+ restart: always
+ volumes:
+ - redis_data:/data
+volumes:
+ docmost:
+ db_data:
+ redis_data:
\ No newline at end of file
diff --git a/apps/easytier/2.3.1/.env.sample b/apps/easytier/2.3.1/.env.sample
new file mode 100644
index 000000000..fbe0f91d0
--- /dev/null
+++ b/apps/easytier/2.3.1/.env.sample
@@ -0,0 +1,8 @@
+COMMAND="-c /root/config.toml"
+CONFIG_FILE_PATH="./data/config.toml"
+CONFIG_FILE_PATH_INTERNAL="/root/config.toml"
+CONTAINER_NAME="easytier"
+DATA_PATH="./data/data"
+HOSTNAME="easytier"
+PRIVILEGED_MODE="true"
+TIME_ZONE="Asia/Shanghai"
diff --git a/apps/easytier/2.3.1/data.yml b/apps/easytier/2.3.1/data.yml
new file mode 100644
index 000000000..e4031775c
--- /dev/null
+++ b/apps/easytier/2.3.1/data.yml
@@ -0,0 +1,51 @@
+additionalProperties:
+ formFields:
+ - default: "./data/data"
+ edit: true
+ envKey: DATA_PATH
+ labelEn: Data Path
+ labelZh: 数据路径
+ required: true
+ type: text
+ - default: "./data/config.toml"
+ disabled: true
+ envKey: CONFIG_FILE_PATH
+ labelEn: Configuration file path
+ labelZh: 配置文件路径
+ required: true
+ type: text
+ - default: "/root/config.toml"
+ disabled: true
+ envKey: CONFIG_FILE_PATH_INTERNAL
+ labelEn: Configuration file path(inside container)
+ labelZh: 配置文件路径 (容器内部)
+ required: true
+ type: text
+ - default: "Asia/Shanghai"
+ edit: true
+ envKey: TIME_ZONE
+ labelEn: Time Zone
+ labelZh: 时区
+ required: true
+ type: text
+ - default: "true"
+ disabled: true
+ envKey: PRIVILEGED_MODE
+ labelEn: Privilege mode switch
+ labelZh: 特权模式开关
+ required: true
+ type: text
+ - default: "easytier"
+ edit: true
+ envKey: HOSTNAME
+ labelEn: Hostname
+ labelZh: 主机名
+ required: true
+ type: text
+ - default: "-c /root/config.toml"
+ disabled: true
+ envKey: COMMAND
+ labelEn: Command
+ labelZh: 命令
+ required: true
+ type: text
diff --git a/apps/easytier/2.3.1/data/config-example.toml b/apps/easytier/2.3.1/data/config-example.toml
new file mode 100644
index 000000000..389dbfeb8
--- /dev/null
+++ b/apps/easytier/2.3.1/data/config-example.toml
@@ -0,0 +1,68 @@
+# 实例名称,用于在同一台机器上标识此 VPN 节点
+instance_name = ""
+# 主机名,用于标识此设备的主机名
+hostname = ""
+# 实例 ID,一般为 UUID,在同一个 VPN 网络中唯一
+instance_id = ""
+# 此 VPN 节点的 IPv4 地址,如果为空,则此节点将仅转发数据包,不会创建 TUN 设备
+ipv4 = ""
+# 由 Easytier 自动确定并设置IP地址,默认从10.0.0.1开始。警告:在使用 DHCP 时,如果网络中出现 IP 冲突,IP 将自动更改
+dhcp = false
+
+# 监听器列表,用于接受连接
+listeners = [
+"tcp://0.0.0.0:11010",
+"udp://0.0.0.0:11010",
+"wg://0.0.0.0:11011",
+"ws://0.0.0.0:11011/",
+"wss://0.0.0.0:11012/",
+]
+
+# 退出节点列表
+exit_nodes = [
+]
+
+# 用于管理的 RPC 门户地址
+rpc_portal = "127.0.0.1:15888"
+
+[network_identity]
+# 网络名称,用于标识 VPN 网络
+network_name = ""
+# 网络密钥,用于验证此节点属于 VPN 网络
+network_secret = ""
+
+# 这里是对等连接节点配置,可以多段配置
+[[peer]]
+uri = ""
+
+[[peer]]
+uri = ""
+
+# 这里是子网代理节点配置,可以有多段配置
+[[proxy_network]]
+cidr = "10.0.1.0/24"
+
+[[proxy_network]]
+cidr = "10.0.2.0/24"
+
+[flags]
+# 连接到对等节点使用的默认协议
+default_protocol = "tcp"
+# TUN 设备名称,如果为空,则使用默认名称
+dev_name = ""
+# 是否启用加密
+enable_encryption = true
+# 是否启用 IPv6 支持
+enable_ipv6 = true
+# TUN 设备的 MTU
+mtu = 1380
+# 延迟优先模式,将尝试使用最低延迟路径转发流量,默认使用最短路径
+latency_first = false
+# 将本节点配置为退出节点
+enable_exit_node = false
+# 禁用 TUN 设备
+no_tun = false
+# 为子网代理启用 smoltcp 堆栈
+use_smoltcp = false
+# 仅转发白名单网络的流量,支持通配符字符串。多个网络名称间可以使用英文空格间隔。如果该参数为空,则禁用转发。默认允许所有网络。例如:'*'(所有网络),'def*'(以def为前缀的网络),'net1 net2'(只允许net1和net2)
+foreign_network_whitelist = "*"
\ No newline at end of file
diff --git a/apps/easytier/2.3.1/data/config.toml b/apps/easytier/2.3.1/data/config.toml
new file mode 100644
index 000000000..ed8de6ddc
--- /dev/null
+++ b/apps/easytier/2.3.1/data/config.toml
@@ -0,0 +1,17 @@
+instance_name = "default"
+instance_id = "3d3db819-ad54-4d86-bf9a-faac864478ab"
+dhcp = false
+listeners = [
+ "tcp://0.0.0.0:11010",
+ "udp://0.0.0.0:11010",
+ "wg://0.0.0.0:11011",
+ "ws://0.0.0.0:11011/",
+ "wss://0.0.0.0:11012/",
+]
+exit_nodes = []
+peer = []
+rpc_portal = "0.0.0.0:15889"
+
+[network_identity]
+network_name = "default"
+network_secret = ""
diff --git a/apps/easytier/2.3.1/docker-compose.yml b/apps/easytier/2.3.1/docker-compose.yml
new file mode 100644
index 000000000..896314522
--- /dev/null
+++ b/apps/easytier/2.3.1/docker-compose.yml
@@ -0,0 +1,20 @@
+services:
+ easytier:
+ image: "easytier/easytier:v2.3.1"
+ container_name: ${CONTAINER_NAME}
+ restart: always
+ network_mode: host
+ privileged: ${PRIVILEGED_MODE}
+ hostname: ${HOSTNAME}
+ environment:
+ - TZ=${TIME_ZONE}
+ volumes:
+ - ${DATA_PATH}:/root
+ - ${CONFIG_FILE_PATH}:${CONFIG_FILE_PATH_INTERNAL}
+ command: ${COMMAND}
+ labels:
+ createdBy: "Apps"
+
+networks:
+ 1panel-network:
+ external: true
diff --git a/apps/glm-free-api/latest/data.yml b/apps/glm-free-api/latest/data.yml
new file mode 100644
index 000000000..6f5a33326
--- /dev/null
+++ b/apps/glm-free-api/latest/data.yml
@@ -0,0 +1,10 @@
+additionalProperties:
+ formFields:
+ - default: "8004"
+ edit: true
+ envKey: PANEL_APP_PORT_HTTP
+ labelEn: Service Port
+ labelZh: 服务端口
+ required: true
+ rule: paramPort
+ type: number
diff --git a/apps/glm-free-api/latest/docker-compose.yml b/apps/glm-free-api/latest/docker-compose.yml
new file mode 100644
index 000000000..957ea2bcd
--- /dev/null
+++ b/apps/glm-free-api/latest/docker-compose.yml
@@ -0,0 +1,16 @@
+services:
+ glm-free-api:
+ image: vinlic/glm-free-api:latest
+ container_name: ${CONTAINER_NAME}
+ ports:
+ - ${PANEL_APP_PORT_HTTP}:8000
+ networks:
+ - 1panel-network
+ environment:
+ - TZ=Asia/Shanghai
+ labels:
+ createdBy: Apps
+ restart: always
+networks:
+ 1panel-network:
+ external: true
diff --git a/apps/hexo/latest/.env.sample b/apps/hexo/latest/.env.sample
new file mode 100644
index 000000000..f6c6fa51c
--- /dev/null
+++ b/apps/hexo/latest/.env.sample
@@ -0,0 +1,5 @@
+CONTAINER_NAME="hexo"
+PANEL_APP_PORT_HTTP="40064"
+DATA_PATH="./data"
+GIT_USERNAME="gituser"
+GIT_MAIL="user@email.com"
diff --git a/apps/hexo/latest/data.yml b/apps/hexo/latest/data.yml
new file mode 100644
index 000000000..753efccda
--- /dev/null
+++ b/apps/hexo/latest/data.yml
@@ -0,0 +1,24 @@
+additionalProperties:
+ formFields:
+ - default: 40064
+ edit: true
+ envKey: PANEL_APP_PORT_HTTP
+ labelEn: Port
+ labelZh: 端口
+ required: true
+ rule: paramPort
+ type: number
+ - default: ""
+ edit: true
+ envKey: GIT_USERNAME
+ labelEn: Git username
+ labelZh: Git 用户名
+ required: true
+ type: text
+ - default: ""
+ edit: true
+ envKey: GIT_MAIL
+ labelEn: Git Email
+ labelZh: Git 邮箱
+ required: true
+ type: text
diff --git a/apps/hexo/latest/docker-compose.yml b/apps/hexo/latest/docker-compose.yml
new file mode 100644
index 000000000..df809d81a
--- /dev/null
+++ b/apps/hexo/latest/docker-compose.yml
@@ -0,0 +1,25 @@
+services:
+ hexo:
+ container_name: ${CONTAINER_NAME}
+ restart: always
+ networks:
+ - 1panel-network
+ ports:
+ - "${PANEL_APP_PORT_HTTP}:4000"
+ volumes:
+ - hexo_data:/app
+ environment:
+ - PUID=1000
+ - PGID=1000
+ - TZ=Asia/Shanghai
+ - GIT_USER=${GIT_USERNAME}
+ - GIT_EMAIL=${GIT_MAIL}
+ image: bloodstar/hexo:latest
+ labels:
+ createdBy: "Apps"
+volumes:
+ hexo_data:
+ name: hexo_data
+networks:
+ 1panel-network:
+ external: true
diff --git a/apps/hubcmdui/latest/data.yml b/apps/hubcmdui/latest/data.yml
new file mode 100644
index 000000000..5169a81c6
--- /dev/null
+++ b/apps/hubcmdui/latest/data.yml
@@ -0,0 +1,10 @@
+additionalProperties:
+ formFields:
+ - default: "30080"
+ edit: true
+ envKey: PANEL_APP_PORT_HTTP
+ labelEn: Service Port 3000
+ labelZh: 服务端口 3000
+ required: true
+ rule: paramPort
+ type: number
diff --git a/apps/hubcmdui/latest/docker-compose.yml b/apps/hubcmdui/latest/docker-compose.yml
new file mode 100644
index 000000000..feecc7b04
--- /dev/null
+++ b/apps/hubcmdui/latest/docker-compose.yml
@@ -0,0 +1,19 @@
+services:
+ hubcmd-ui:
+ image: dqzboy/hubcmd-ui:latest
+ container_name: ${CONTAINER_NAME}
+ restart: always
+ ports:
+ - ${PANEL_APP_PORT_HTTP}:3000
+ volumes:
+ - /var/run/docker.sock:/var/run/docker.sock
+ networks:
+ - 1panel-network
+ environment:
+ - LOG_LEVEL=INFO
+ - SIMPLE_LOGS=true
+ labels:
+ createdBy: Apps
+networks:
+ 1panel-network:
+ external: true
diff --git a/apps/jimeng-free-api/latest/data.yml b/apps/jimeng-free-api/latest/data.yml
new file mode 100644
index 000000000..563030b57
--- /dev/null
+++ b/apps/jimeng-free-api/latest/data.yml
@@ -0,0 +1,10 @@
+additionalProperties:
+ formFields:
+ - default: "8005"
+ edit: true
+ envKey: PANEL_APP_PORT_HTTP
+ labelEn: Service Port
+ labelZh: 服务端口
+ required: true
+ rule: paramPort
+ type: number
diff --git a/apps/jimeng-free-api/latest/docker-compose.yml b/apps/jimeng-free-api/latest/docker-compose.yml
new file mode 100644
index 000000000..77017fdb9
--- /dev/null
+++ b/apps/jimeng-free-api/latest/docker-compose.yml
@@ -0,0 +1,16 @@
+services:
+ jimeng-free-api:
+ image: vinlic/jimeng-free-api:latest
+ container_name: ${CONTAINER_NAME}
+ ports:
+ - ${PANEL_APP_PORT_HTTP}:8000
+ networks:
+ - 1panel-network
+ environment:
+ - TZ=Asia/Shanghai
+ labels:
+ createdBy: Apps
+ restart: always
+networks:
+ 1panel-network:
+ external: true
diff --git a/apps/kali-linux/README.md b/apps/kali-linux/README.md
new file mode 100644
index 000000000..939d36945
--- /dev/null
+++ b/apps/kali-linux/README.md
@@ -0,0 +1,53 @@
+# Kali Linux
+
+Kali Linux 是一个专为渗透测试和安全审计设计的 Debian 基础 Linux 发行版。
+
+## 功能特性
+
+- 预装数百种渗透测试工具
+- 专为安全研究人员和渗透测试人员设计
+- 支持多种架构(amd64、arm64)
+- 基于 LinuxServer.io 的 Docker 镜像
+- 提供完整的渗透测试环境
+- 支持 Web 界面访问
+
+## 使用方法
+
+1. 部署后通过 Web 浏览器访问容器(默认端口 3000 和 3001)
+2. 容器内提供完整的 Kali Linux 环境
+3. 使用预装的渗透测试工具进行安全测试
+4. 支持 Docker 套接字挂载,可在容器内运行 Docker 命令
+
+## 预装工具
+
+Kali Linux 包含数百种渗透测试工具,包括但不限于:
+
+- 信息收集工具(nmap、whois、dnsenum 等)
+- 漏洞扫描工具(OpenVAS、Nessus 等)
+- 无线网络工具(aircrack-ng、reaver 等)
+- Web 应用测试工具(Burp Suite、OWASP ZAP 等)
+- 密码破解工具(John the Ripper、Hashcat 等)
+- 社会工程学工具(Social Engineer Toolkit 等)
+
+## 配置说明
+
+- **端口 3000**:HTTP Web 访问端口
+- **端口 3001**:HTTPS Web 访问端口
+- **时区**:Asia/Shanghai(上海时区)
+- **共享内存**:1GB,确保工具正常运行
+- **安全选项**:seccomp:unconfined,允许特权操作
+- **Docker 套接字**:挂载宿主机 Docker 套接字,支持容器内 Docker 操作
+
+## 安全提醒
+
+⚠️ **重要提醒**:Kali Linux 仅用于合法的安全测试和渗透测试。请确保:
+
+- 只在您拥有授权的系统上进行测试
+- 遵守当地法律法规
+- 不要用于恶意攻击或非法活动
+
+## 相关链接
+
+- [官方网站](https://www.kali.org/)
+- [Docker Hub](https://hub.docker.com/r/linuxserver/kali-linux)
+- [GitHub 项目](https://github.com/linuxserver/docker-kali-linux)
\ No newline at end of file
diff --git a/apps/kali-linux/README_en.md b/apps/kali-linux/README_en.md
new file mode 100644
index 000000000..f1038f0f0
--- /dev/null
+++ b/apps/kali-linux/README_en.md
@@ -0,0 +1,53 @@
+# Kali Linux
+
+Kali Linux is a Debian-based Linux distribution designed for penetration testing and security auditing.
+
+## Features
+
+- Pre-installed with hundreds of penetration testing tools
+- Designed for security researchers and penetration testers
+- Supports multiple architectures (amd64, arm64)
+- Based on LinuxServer.io Docker image
+- Provides a complete penetration testing environment
+- Supports web interface access
+
+## Usage
+
+1. Access the container via web browser after deployment (default ports 3000 and 3001)
+2. Complete Kali Linux environment available inside the container
+3. Use pre-installed penetration testing tools for security testing
+4. Docker socket mounting supported, allowing Docker commands inside the container
+
+## Pre-installed Tools
+
+Kali Linux includes hundreds of penetration testing tools, including but not limited to:
+
+- Information gathering tools (nmap, whois, dnsenum, etc.)
+- Vulnerability scanning tools (OpenVAS, Nessus, etc.)
+- Wireless network tools (aircrack-ng, reaver, etc.)
+- Web application testing tools (Burp Suite, OWASP ZAP, etc.)
+- Password cracking tools (John the Ripper, Hashcat, etc.)
+- Social engineering tools (Social Engineer Toolkit, etc.)
+
+## Configuration
+
+- **Port 3000**: HTTP web access port
+- **Port 3001**: HTTPS web access port
+- **Timezone**: Asia/Shanghai (Shanghai timezone)
+- **Shared Memory**: 1GB, ensuring tools run properly
+- **Security Options**: seccomp:unconfined, allowing privileged operations
+- **Docker Socket**: Mounts host Docker socket, supporting Docker operations inside container
+
+## Security Notice
+
+⚠️ **Important Notice**: Kali Linux should only be used for legitimate security testing and penetration testing. Please ensure:
+
+- Only test systems you are authorized to test
+- Comply with local laws and regulations
+- Do not use for malicious attacks or illegal activities
+
+## Links
+
+- [Official Website](https://www.kali.org/)
+- [Docker Hub](https://hub.docker.com/r/linuxserver/kali-linux)
+- [GitHub Project](https://github.com/linuxserver/docker-kali-linux)
\ No newline at end of file
diff --git a/apps/kali-linux/data.yml b/apps/kali-linux/data.yml
new file mode 100644
index 000000000..6631ad90a
--- /dev/null
+++ b/apps/kali-linux/data.yml
@@ -0,0 +1,31 @@
+name: Kali Linux
+tags:
+ - 开发工具
+title: Kali Linux 渗透测试环境
+description: Kali Linux 是一个专为渗透测试和安全审计设计的 Linux 发行版
+additionalProperties:
+ key: kali-linux
+ name: Kali Linux
+ tags:
+ - DevTool
+ shortDescZh: Kali Linux 渗透测试环境
+ shortDescEn: Kali Linux Penetration Testing Environment
+ description:
+ en: Kali Linux is a Debian-based Linux distribution designed for penetration testing and security auditing
+ ja: Kali Linuxは、ペネトレーションテストとセキュリティ監査のために設計されたDebianベースのLinuxディストリビューションです
+ ms: Kali Linux adalah pengedaran Linux berasaskan Debian yang direka untuk ujian penembusan dan audit keselamatan
+ pt-br: Kali Linux é uma distribuição Linux baseada em Debian projetada para testes de penetração e auditoria de segurança
+ ru: Kali Linux - это дистрибутив Linux на основе Debian, разработанный для тестирования на проникновение и аудита безопасности
+ ko: Kali Linux는 침투 테스트 및 보안 감사를 위해 설계된 Debian 기반 Linux 배포판입니다
+ zh-Hant: Kali Linux 是一個專為滲透測試和安全審計設計的 Debian 基礎 Linux 發行版
+ zh: Kali Linux 是一个专为渗透测试和安全审计设计的 Debian 基础 Linux 发行版
+ type: website
+ crossVersionUpdate: true
+ limit: 0
+ recommend: 0
+ website: https://www.kali.org/
+ github: https://github.com/linuxserver/docker-kali-linux
+ document: https://hub.docker.com/r/linuxserver/kali-linux
+ architectures:
+ - amd64
+ - arm64
\ No newline at end of file
diff --git a/apps/kali-linux/latest/data.yml b/apps/kali-linux/latest/data.yml
new file mode 100644
index 000000000..f1981ae36
--- /dev/null
+++ b/apps/kali-linux/latest/data.yml
@@ -0,0 +1,36 @@
+additionalProperties:
+ formFields:
+ - default: 3000
+ edit: true
+ envKey: PANEL_APP_PORT_HTTP
+ labelEn: Web Port 1
+ labelZh: Web 端口 1
+ required: true
+ rule: paramPort
+ type: number
+ label:
+ en: Web Port 1
+ ja: Web ポート 1
+ ms: Port Web 1
+ pt-br: Porta Web 1
+ ru: Веб Порт 1
+ ko: 웹 포트 1
+ zh-Hant: Web 埠 1
+ zh: Web 端口 1
+ - default: 3001
+ edit: true
+ envKey: PANEL_APP_PORT_HTTPS
+ labelEn: HTTPS Port
+ labelZh: HTTPS 端口
+ required: true
+ rule: paramPort
+ type: number
+ label:
+ en: HTTPS Port
+ ja: HTTPS ポート
+ ms: Port HTTPS
+ pt-br: Porta HTTPS
+ ru: HTTPS Порт
+ ko: HTTPS 포트
+ zh-Hant: HTTPS 埠
+ zh: HTTPS 端口
\ No newline at end of file
diff --git a/apps/kali-linux/latest/docker-compose.yml b/apps/kali-linux/latest/docker-compose.yml
new file mode 100644
index 000000000..a0c0b377c
--- /dev/null
+++ b/apps/kali-linux/latest/docker-compose.yml
@@ -0,0 +1,27 @@
+services:
+ kali-linux:
+ container_name: ${CONTAINER_NAME}
+ restart: always
+ networks:
+ - 1panel-network
+ security_opt:
+ - seccomp:unconfined
+ ports:
+ - "${PANEL_APP_PORT_HTTP}:3000"
+ - "${PANEL_APP_PORT_HTTPS}:3001"
+ volumes:
+ - ./config:/config
+ - /var/run/docker.sock:/var/run/docker.sock
+ environment:
+ - PUID=1000
+ - PGID=1000
+ - TZ=Asia/Shanghai
+ - SUBFOLDER=/
+ - TITLE=Kali Linux
+ shm_size: "1gb"
+ image: lscr.io/linuxserver/kali-linux:latest
+ labels:
+ createdBy: "Apps"
+networks:
+ 1panel-network:
+ external: true
\ No newline at end of file
diff --git a/apps/kali-linux/logo.png b/apps/kali-linux/logo.png
new file mode 100644
index 000000000..b5499bda8
Binary files /dev/null and b/apps/kali-linux/logo.png differ
diff --git a/apps/karakeep/0.24.1/data.yml b/apps/karakeep/0.24.1/data.yml
new file mode 100644
index 000000000..d09bd7fbc
--- /dev/null
+++ b/apps/karakeep/0.24.1/data.yml
@@ -0,0 +1,31 @@
+additionalProperties:
+ formFields:
+ - default: 30012
+ edit: true
+ envKey: PANEL_APP_PORT_HTTP
+ labelEn: Port
+ labelZh: 端口
+ required: true
+ rule: paramPort
+ type: number
+ - default: "ky0QvBQNLBQFxY6OurQV/6Wg2KjHqS0YSktBRPJw23QWqq5m"
+ edit: true
+ envKey: NEXTAUTH_SECRET
+ labelEn: NextAuth Secret
+ labelZh: NextAuth密钥
+ required: true
+ type: text
+ - default: "a+BQCRpK74QuCSqZPhJ6hDeryTn/1rFKhwuc5DC19hOrI8VR"
+ edit: true
+ envKey: MEILI_MASTER_KEY
+ labelEn: Meilisearch Master Key
+ labelZh: Meilisearch主密钥
+ required: true
+ type: text
+ - default: ""
+ edit: true
+ envKey: OPENAI_API_KEY
+ labelEn: OpenAI API Key
+ labelZh: OpenAI API 密钥
+ required: false
+ type: text
\ No newline at end of file
diff --git a/apps/karakeep/0.24.1/docker-compose.yml b/apps/karakeep/0.24.1/docker-compose.yml
new file mode 100644
index 000000000..c9bd5445f
--- /dev/null
+++ b/apps/karakeep/0.24.1/docker-compose.yml
@@ -0,0 +1,46 @@
+services:
+ karakeep:
+ image: ghcr.io/karakeep-app/karakeep:0.24.1
+ container_name: ${CONTAINER_NAME}
+ restart: unless-stopped
+ volumes:
+ # By default, the data is stored in a docker volume called "data".
+ # If you want to mount a custom directory, change the volume mapping to:
+ # - /path/to/your/directory:/data
+ - data:/data
+ ports:
+ - "${PANEL_APP_PORT_HTTP}:3000"
+ environment:
+ MEILI_ADDR: http://meilisearch:7700
+ BROWSER_WEB_URL: http://chrome:9222
+ OPENAI_API_KEY: ${OPENAI_API_KEY}
+ NEXTAUTH_SECRET: ${NEXTAUTH_SECRET}
+ MEILI_MASTER_KEY: ${MEILI_MASTER_KEY}
+ NEXTAUTH_URL: http://localhost:3000
+
+ # You almost never want to change the value of the DATA_DIR variable.
+ # If you want to mount a custom directory, change the volume mapping above instead.
+ DATA_DIR: /data # DON'T CHANGE THIS
+ chrome:
+ image: gcr.io/zenika-hub/alpine-chrome:123
+ container_name: chrome-${CONTAINER_NAME}
+ restart: unless-stopped
+ command:
+ - --no-sandbox
+ - --disable-gpu
+ - --disable-dev-shm-usage
+ - --remote-debugging-address=0.0.0.0
+ - --remote-debugging-port=9222
+ - --hide-scrollbars
+ meilisearch:
+ image: getmeili/meilisearch:v1.11.1
+ container_name: meili-${CONTAINER_NAME}
+ restart: unless-stopped
+ environment:
+ MEILI_NO_ANALYTICS: "true"
+ volumes:
+ - meilisearch:/meili_data
+
+volumes:
+ meilisearch:
+ data:
diff --git a/apps/keepassxc/README.md b/apps/keepassxc/README.md
new file mode 100644
index 000000000..239769ed6
--- /dev/null
+++ b/apps/keepassxc/README.md
@@ -0,0 +1,26 @@
+# KeePassXC
+
+KeePassXC 是一款开源、跨平台的密码管理器,支持Web界面和多种平台。
+
+## 功能特性
+
+- 跨平台密码管理,支持多种操作系统
+- 支持Web界面管理(默认端口3000)
+- 数据库文件本地存储,安全可靠
+- 支持浏览器集成和自动填充
+- 支持多用户和多数据库
+- 轻量级、资源占用低
+
+## 使用方法
+
+1. 部署后访问 `http://服务器IP:3000` 进入Web管理界面
+2. 创建或导入密码数据库(.kdbx 文件)
+3. 配置浏览器插件实现自动填充
+4. 数据库目录:`./db`
+
+## 相关链接
+
+- [官方网站](https://keepassxc.org/)
+- [GitHub 项目](https://github.com/keepassxreboot/keepassxc)
+- [官方文档](https://keepassxc.org/docs/)
+- [Docker Hub](https://hub.docker.com/r/linuxserver/keepassxc)
\ No newline at end of file
diff --git a/apps/keepassxc/README_en.md b/apps/keepassxc/README_en.md
new file mode 100644
index 000000000..e088f30f5
--- /dev/null
+++ b/apps/keepassxc/README_en.md
@@ -0,0 +1,26 @@
+# KeePassXC
+
+KeePassXC is an open-source, cross-platform password manager with web interface support.
+
+## Features
+
+- Cross-platform password management for multiple OS
+- Web UI management (default port 3000)
+- Local database file storage, secure and reliable
+- Browser integration and autofill support
+- Multi-user and multi-database support
+- Lightweight and low resource usage
+
+## Usage
+
+1. After deployment, access `http://your-server-ip:3000` for the web UI
+2. Create or import a password database (.kdbx file)
+3. Configure browser extension for autofill
+4. Database directory: `./db`
+
+## Links
+
+- [Official Website](https://keepassxc.org/)
+- [GitHub Project](https://github.com/keepassxreboot/keepassxc)
+- [Official Documentation](https://keepassxc.org/docs/)
+- [Docker Hub](https://hub.docker.com/r/linuxserver/keepassxc)
\ No newline at end of file
diff --git a/apps/keepassxc/data.yml b/apps/keepassxc/data.yml
new file mode 100644
index 000000000..481b1b356
--- /dev/null
+++ b/apps/keepassxc/data.yml
@@ -0,0 +1,32 @@
+name: KeePassXC
+tags:
+ - 实用工具
+title: 跨平台密码管理器
+description: KeePassXC 是一款开源、跨平台的密码管理器,支持Web界面和多种平台
+additionalProperties:
+ key: keepassxc
+ name: KeePassXC
+ tags:
+ - Tool
+ shortDescZh: 跨平台密码管理器
+ shortDescEn: Cross-platform password manager
+ description:
+ en: KeePassXC is an open-source, cross-platform password manager with web interface support
+ ja: KeePassXCはWebインターフェースをサポートするオープンソースのクロスプラットフォームパスワードマネージャーです
+ ms: KeePassXC ialah pengurus kata laluan sumber terbuka merentas platform dengan sokongan antara muka web
+ pt-br: KeePassXC é um gerenciador de senhas de código aberto e multiplataforma com suporte a interface web
+ ru: KeePassXC — это кроссплатформенный менеджер паролей с открытым исходным кодом и поддержкой веб-интерфейса
+ ko: KeePassXC는 웹 인터페이스를 지원하는 오픈 소스 크로스 플랫폼 비밀번호 관리자입니다
+ zh-Hant: KeePassXC 是一款開源、跨平台的密碼管理器,支援 Web 管理
+ zh: KeePassXC 是一款开源、跨平台的密码管理器,支持Web界面和多种平台
+ type: website
+ crossVersionUpdate: true
+ limit: 0
+ recommend: 0
+ website: https://keepassxc.org/
+ github: https://github.com/keepassxreboot/keepassxc
+ document: https://keepassxc.org/docs/
+ architectures:
+ - amd64
+ - arm64
+ - arm/v7
\ No newline at end of file
diff --git a/apps/keepassxc/latest/data.yml b/apps/keepassxc/latest/data.yml
new file mode 100644
index 000000000..7d808643d
--- /dev/null
+++ b/apps/keepassxc/latest/data.yml
@@ -0,0 +1,19 @@
+additionalProperties:
+ formFields:
+ - default: 3000
+ edit: true
+ envKey: PANEL_APP_PORT_HTTP
+ labelEn: Web UI Port
+ labelZh: Web界面端口
+ required: true
+ rule: paramPort
+ type: number
+ label:
+ en: Web UI Port
+ ja: Web UI ポート
+ ms: Port UI Web
+ pt-br: Porta da interface web
+ ru: Веб-порт интерфейса
+ ko: 웹 UI 포트
+ zh-Hant: Web UI 埠
+ zh: Web界面端口
\ No newline at end of file
diff --git a/apps/keepassxc/latest/docker-compose.yml b/apps/keepassxc/latest/docker-compose.yml
new file mode 100644
index 000000000..d19d7703f
--- /dev/null
+++ b/apps/keepassxc/latest/docker-compose.yml
@@ -0,0 +1,21 @@
+services:
+ keepassxc:
+ container_name: ${CONTAINER_NAME}
+ image: lscr.io/linuxserver/keepassxc:latest
+ restart: always
+ networks:
+ - 1panel-network
+ ports:
+ - "${PANEL_APP_PORT_HTTP}:3000"
+ environment:
+ - TZ=Asia/Shanghai
+ - PUID=1000
+ - PGID=1000
+ volumes:
+ - ./config:/config
+ - ./db:/db
+ labels:
+ createdBy: "Apps"
+networks:
+ 1panel-network:
+ external: true
\ No newline at end of file
diff --git a/apps/keepassxc/logo.png b/apps/keepassxc/logo.png
new file mode 100644
index 000000000..7a5487803
Binary files /dev/null and b/apps/keepassxc/logo.png differ
diff --git a/apps/kimi-free-api/latest/data.yml b/apps/kimi-free-api/latest/data.yml
new file mode 100644
index 000000000..2b7be3cb5
--- /dev/null
+++ b/apps/kimi-free-api/latest/data.yml
@@ -0,0 +1,10 @@
+additionalProperties:
+ formFields:
+ - default: "8002"
+ edit: true
+ envKey: PANEL_APP_PORT_HTTP
+ labelEn: Service Port
+ labelZh: 服务端口
+ required: true
+ rule: paramPort
+ type: number
diff --git a/apps/kimi-free-api/latest/docker-compose.yml b/apps/kimi-free-api/latest/docker-compose.yml
new file mode 100644
index 000000000..ce935a98a
--- /dev/null
+++ b/apps/kimi-free-api/latest/docker-compose.yml
@@ -0,0 +1,16 @@
+services:
+ kimi-free-api:
+ image: vinlic/kimi-free-api:latest
+ container_name: ${CONTAINER_NAME}
+ ports:
+ - ${PANEL_APP_PORT_HTTP}:8000
+ networks:
+ - 1panel-network
+ environment:
+ - TZ=Asia/Shanghai
+ labels:
+ createdBy: Apps
+ restart: always
+networks:
+ 1panel-network:
+ external: true
diff --git a/apps/kspeeder/README.md b/apps/kspeeder/README.md
new file mode 100644
index 000000000..c220a3736
--- /dev/null
+++ b/apps/kspeeder/README.md
@@ -0,0 +1,38 @@
+# KSpeeder 镜像加速服务
+
+KSpeeder 是一款专为 Docker 镜像加速设计的镜像服务,支持本地私有部署,适用于无法访问 DockerHub 的环境。通过 KSpeeder,您可以在局域网内搭建属于自己的镜像加速服务,大幅提升 Docker 镜像的拉取速度。
+
+## 主要特性
+
+- **镜像加速**:为 Docker 镜像拉取提供加速服务,解决国内访问 DockerHub 缓慢的问题。
+- **私有部署**:支持在本地或局域网内私有部署,数据更安全。
+- **多平台支持**:支持 iStoreOS、群晖、unRAID、macOS、Linux、Windows 等多种平台。
+- **易于配置**:通过简单的 Docker Compose 即可快速部署。
+- **数据与配置分离**:支持数据和配置持久化,方便迁移和备份。
+- **多架构支持**:支持 amd64、arm64 等主流架构。
+- **高可用性**:支持断点续传、自动重试等机制,提升镜像拉取成功率。
+- **管理监控**:内置管理监控端口,便于运维和监控服务状态。
+
+## 典型使用场景
+
+- 局域网内为多台主机提供统一的 Docker 镜像加速服务
+- 企业/团队内部搭建私有镜像加速仓库
+- 无法访问 DockerHub 或访问速度较慢的环境
+
+
+## 常见问题 FAQ
+
+- **Q: 支持哪些平台?**
+ A: 支持 iStoreOS、群晖、unRAID、macOS、Linux、Windows 等。
+- **Q: 如何持久化数据?**
+ A: 挂载 /kspeeder-data 和 /kspeeder-config 到本地目录。
+- **Q: 默认端口是多少?**
+ A: 主服务端口 5443,管理监控端口 5003。
+- **Q: 镜像源如何配置?**
+ A: 参考官方文档,配置 Docker 镜像加速地址。
+
+## 官方文档与支持
+
+- 官网:[https://kspeeder.istoreos.com/](https://kspeeder.istoreos.com/)
+- 快速开始指南:[https://kspeeder.istoreos.com/guide/getting-started.html](https://kspeeder.istoreos.com/guide/getting-started.html)
+- GitHub:[https://github.com/linkease/kspeeder](https://github.com/linkease/kspeeder)
\ No newline at end of file
diff --git a/apps/kspeeder/README_en.md b/apps/kspeeder/README_en.md
new file mode 100644
index 000000000..b4b350711
--- /dev/null
+++ b/apps/kspeeder/README_en.md
@@ -0,0 +1,37 @@
+# KSpeeder - Docker Image Acceleration & Private Registry Service
+
+KSpeeder is a modern, multi-platform Docker image acceleration and private registry service. It is designed for environments with limited access to DockerHub or those requiring fast, local image pulls. With KSpeeder, you can easily deploy your own image acceleration service in your LAN or enterprise, significantly improving Docker image download speeds.
+
+## Main Features
+
+- **Image Acceleration**: Speed up Docker image pulls, especially in regions with slow or restricted access to DockerHub.
+- **Private Deployment**: Deploy locally or within your LAN for enhanced security and control.
+- **Multi-Platform Support**: Compatible with iStoreOS, Synology, unRAID, macOS, Linux, Windows, and more.
+- **Easy Configuration**: Quick deployment via Docker Compose.
+- **Data & Config Persistence**: Supports persistent storage for data and configuration, making migration and backup easy.
+- **Multi-Architecture**: Supports amd64, arm64, and arm/v7 architectures.
+- **High Availability**: Features such as resume, auto-retry, and robust error handling for reliable image pulls.
+- **Management & Monitoring**: Built-in management and monitoring ports for easy operations.
+
+## Typical Use Cases
+
+- Provide unified Docker image acceleration for multiple hosts in a LAN
+- Build a private image acceleration registry for teams or enterprises
+- Accelerate image pulls in environments with slow or blocked access to DockerHub
+
+## FAQ
+
+- **Q: Which platforms are supported?**
+ A: iStoreOS, Synology, unRAID, macOS, Linux, Windows, and more.
+- **Q: How to persist data?**
+ A: Mount /kspeeder-data and /kspeeder-config to local directories.
+- **Q: What are the default ports?**
+ A: Main service port 5443, management port 5003.
+- **Q: How to configure the registry mirror?**
+ A: See the official documentation for details.
+
+## Official Documentation & Support
+
+- Website: [https://kspeeder.istoreos.com/](https://kspeeder.istoreos.com/)
+- Quick Start Guide: [https://kspeeder.istoreos.com/guide/getting-started.html](https://kspeeder.istoreos.com/guide/getting-started.html)
+- GitHub: [https://github.com/linkease/kspeeder](https://github.com/linkease/kspeeder)
\ No newline at end of file
diff --git a/apps/kspeeder/data.yml b/apps/kspeeder/data.yml
new file mode 100644
index 000000000..288fda6ab
--- /dev/null
+++ b/apps/kspeeder/data.yml
@@ -0,0 +1,38 @@
+name: KSpeeder
+tags:
+ - 镜像加速
+ - 镜像服务
+ - 实用工具
+ - 网络加速
+ - 私有部署
+title: Docker 镜像加速与私有部署服务
+description: KSpeeder 是一款现代化、支持多平台的 Docker 镜像加速与私有部署服务,适用于无法访问 DockerHub 或需要本地镜像仓库加速的场景。
+additionalProperties:
+ key: kspeeder
+ name: KSpeeder
+ tags:
+ - Accelerator
+ - Registry
+ - Tool
+ - DevOps
+ shortDescZh: 现代化的 Docker 镜像加速与私有部署服务,支持多平台和多架构。
+ shortDescEn: Modern Docker image acceleration and private registry service, supporting multiple platforms and architectures.
+ description:
+ en: Modern Docker image acceleration and private registry service, supporting multiple platforms and architectures. Ideal for environments with limited access to DockerHub or requiring local image acceleration.
+ zh: KSpeeder 是一款现代化、支持多平台的 Docker 镜像加速与私有部署服务,适用于无法访问 DockerHub 或需要本地镜像仓库加速的场景。
+ zh-Hant: KSpeeder 是一款現代化、支援多平台的 Docker 鏡像加速與私有部署服務,適用於無法訪問 DockerHub 或需要本地鏡像倉庫加速的場景。
+ ja: KSpeeder は、複数プラットフォーム対応の Docker イメージ加速・プライベートレジストリサービスです。
+ ko: KSpeeder는 다양한 플랫폼을 지원하는 Docker 이미지 가속 및 프라이빗 레지스트리 서비스입니다.
+ ru: KSpeeder — современный сервис ускорения Docker-образов и частного реестра, поддерживающий различные платформы.
+ pt-br: KSpeeder é um serviço moderno de aceleração de imagens Docker e registro privado, com suporte a múltiplas plataformas.
+ type: website
+ crossVersionUpdate: true
+ limit: 0
+ recommend: 0
+ website: https://kspeeder.istoreos.com/
+ github: https://github.com/linkease/kspeeder
+ document: https://kspeeder.istoreos.com/guide/getting-started.html
+ architectures:
+ - amd64
+ - arm64
+ - arm/v7
\ No newline at end of file
diff --git a/apps/kspeeder/latest/data.yml b/apps/kspeeder/latest/data.yml
new file mode 100644
index 000000000..2a8e3dda0
--- /dev/null
+++ b/apps/kspeeder/latest/data.yml
@@ -0,0 +1,24 @@
+additionalProperties:
+ formFields:
+ - default: 5003
+ edit: true
+ envKey: PANEL_APP_PORT_HTTP
+ labelEn: Management Port
+ labelZh: 管理监控端口
+ label:
+ en: Management Port
+ zh: 管理监控端口
+ required: true
+ rule: paramPort
+ type: number
+ - default: 5443
+ edit: true
+ envKey: PANEL_APP_PORT_PROXY
+ labelEn: Proxy Port
+ labelZh: 代理端口
+ label:
+ en: Proxy Port
+ zh: 代理端口
+ required: true
+ rule: paramPort
+ type: number
\ No newline at end of file
diff --git a/apps/kspeeder/latest/docker-compose.yml b/apps/kspeeder/latest/docker-compose.yml
new file mode 100644
index 000000000..8c21b5579
--- /dev/null
+++ b/apps/kspeeder/latest/docker-compose.yml
@@ -0,0 +1,13 @@
+services:
+ kspeeder:
+ image: linkease/kspeeder:latest
+ container_name: ${CONTAINER_NAME}
+ ports:
+ - ${PANEL_APP_PORT_HTTP}:5003
+ - ${PANEL_APP_PORT_PROXY}:5443
+ volumes:
+ - ./kspeeder-data:/kspeeder-data
+ - ./kspeeder-config:/kspeeder-config
+ restart: always
+ labels:
+ createdBy: "Apps"
\ No newline at end of file
diff --git a/apps/kspeeder/logo.png b/apps/kspeeder/logo.png
new file mode 100644
index 000000000..aa9d9d9f2
Binary files /dev/null and b/apps/kspeeder/logo.png differ
diff --git a/apps/linkwarden/latest/.env.sample b/apps/linkwarden/latest/.env.sample
new file mode 100644
index 000000000..dbcd3ab90
--- /dev/null
+++ b/apps/linkwarden/latest/.env.sample
@@ -0,0 +1,4 @@
+NEXTAUTH_URL=http://localhost:3000/api/v1/auth
+NEXTAUTH_SECRET=${NEXTAUTH_SECRET}
+MEILI_MASTER_KEY=${MEILI_MASTER_KEY}
+POSTGRES_PASSWORD=${POSTGRES_PASSWORD}
\ No newline at end of file
diff --git a/apps/linkwarden/latest/data.yml b/apps/linkwarden/latest/data.yml
new file mode 100644
index 000000000..b31f5a528
--- /dev/null
+++ b/apps/linkwarden/latest/data.yml
@@ -0,0 +1,34 @@
+additionalProperties:
+ formFields:
+ - default: "3000"
+ edit: true
+ envKey: PANEL_APP_PORT_HTTP
+ labelEn: Service Port 3000
+ labelZh: 服务端口 3000
+ required: true
+ rule: paramPort
+ type: number
+ - default: ""
+ edit: true
+ envKey: NEXTAUTH_SECRET
+ labelEn: NEXTAuth Secret
+ labelZh: NEXTAuth 密钥
+ required: true
+ rule: paramComplexity
+ type: password
+ - default: ""
+ edit: true
+ envKey: POSTGRES_PASSWORD
+ labelEn: Postgres Password
+ labelZh: Postgres 数据库密码
+ required: true
+ rule: paramComplexity
+ type: password
+ - default: ""
+ edit: true
+ envKey: MEILI_MASTER_KEY
+ labelEn: Meilisearch Master Key
+ labelZh: Meilisearch 主密钥
+ required: true
+ rule: paramComplexity
+ type: password
diff --git a/apps/linkwarden/latest/docker-compose.yml b/apps/linkwarden/latest/docker-compose.yml
new file mode 100644
index 000000000..9e943afb3
--- /dev/null
+++ b/apps/linkwarden/latest/docker-compose.yml
@@ -0,0 +1,47 @@
+services:
+ linkwarden:
+ image: ghcr.io/linkwarden/linkwarden:latest
+ container_name: ${CONTAINER_NAME}
+ restart: always
+ ports:
+ - ${PANEL_APP_PORT_HTTP}:3000
+ volumes:
+ - ./data:/data/data
+ networks:
+ - 1panel-network
+ environment:
+ - DATABASE_URL=postgresql://postgres:${POSTGRES_PASSWORD}@postgres:5432/postgres
+ - NEXTAUTH_URL=http://localhost:3000/api/v1/auth
+ - NEXTAUTH_SECRET=${NEXTAUTH_SECRET}
+ depends_on:
+ - postgres
+ - meilisearch
+ labels:
+ createdBy: Apps
+ meilisearch:
+ image: getmeili/meilisearch:v1.12.8
+ container_name: ${CONTAINER_NAME}-Meilisearch
+ restart: always
+ volumes:
+ - ./meili_data:/meili_data
+ networks:
+ - 1panel-network
+ environment:
+ - MEILI_MASTER_KEY=${MEILI_MASTER_KEY}
+ labels:
+ createdBy: Apps
+ postgres:
+ image: postgres:16-alpine
+ container_name: ${CONTAINER_NAME}-Postgres
+ restart: always
+ volumes:
+ - ./pgdata:/var/lib/postgresql/data
+ networks:
+ - 1panel-network
+ environment:
+ - POSTGRES_PASSWORD=${POSTGRES_PASSWORD}
+ labels:
+ createdBy: Apps
+networks:
+ 1panel-network:
+ external: true
diff --git a/apps/lobe-chat-data/1.77.16/.env b/apps/lobe-chat-data/1.77.16/.env
new file mode 100644
index 000000000..28d716dc7
--- /dev/null
+++ b/apps/lobe-chat-data/1.77.16/.env
@@ -0,0 +1,41 @@
+# Proxy,如果你需要的话(比如你使用 GitHub 作为鉴权服务提供商)
+# HTTP_PROXY=http://localhost:7890
+# HTTPS_PROXY=http://localhost:7890
+
+
+# 其他环境变量,视需求而定,可以参照客户端版本的环境变量配置,注意不要有 ACCESS_CODE
+# OPENAI_API_KEY=sk-xxxx
+# OPENAI_PROXY_URL=https://api.openai.com/v1
+# OPENAI_MODEL_LIST=...
+
+
+# ===================
+# ===== 预设配置 =====
+# ===================
+# 如没有特殊需要不用更改
+LOBE_PORT=3210
+CASDOOR_PORT=8000
+MINIO_PORT=9000
+APP_URL=http://192.168.123.105:3210
+AUTH_URL=http://192.168.123.105:3210/api/auth
+
+# Postgres 相关,也即 DB 必须的环境变量
+LOBE_DB_NAME=lobechat
+POSTGRES_PASSWORD=uWNZugjBqixf8dxC
+
+AUTH_CASDOOR_ISSUER=http://192.168.123.105:8000
+# Casdoor secret
+AUTH_CASDOOR_ID=a387a4892ee19b1a2249
+AUTH_CASDOOR_SECRET=dbf205949d704de81b0b5b3603174e23fbecc354
+
+# MinIO S3 配置
+MINIO_ROOT_USER=admin
+MINIO_ROOT_PASSWORD=YOUR_MINIO_PASSWORD
+
+# 在下方配置 minio 中添加的桶
+S3_PUBLIC_DOMAIN=http://192.168.123.105:9000
+S3_ENDPOINT=http://192.168.123.105:9000
+MINIO_LOBE_BUCKET=lobe
+
+# 为 casdoor 配置
+origin=http://192.168.123.105:8000
\ No newline at end of file
diff --git a/apps/lobe-chat-data/1.77.16/data.yml b/apps/lobe-chat-data/1.77.16/data.yml
new file mode 100644
index 000000000..e9aa99c06
--- /dev/null
+++ b/apps/lobe-chat-data/1.77.16/data.yml
@@ -0,0 +1,137 @@
+additionalProperties:
+ formFields:
+# Default config
+ - default: 3210
+ edit: true
+ envKey: PANEL_APP_PORT_HTTP
+ labelEn: Application Port
+ labelZh: 应用端口
+ required: true
+ rule: paramPort
+ type: number
+ - default: 8000
+ edit: true
+ envKey: CASDOOR_PORT
+ labelEn: CASDOOR Port
+ labelZh: CASDOOR 端口
+ required: true
+ rule: paramPort
+ type: number
+ - default: 9000
+ edit: true
+ envKey: MINIO_PORT
+ labelEn: MinIO Port
+ labelZh: MinIO端口
+ required: true
+ rule: paramPort
+ type: number
+ - default: http://Your-IP:3210
+ edit: true
+ envKey: APP_URL
+ labelEn: Application URL
+ labelZh: 应用地址
+ required: true
+ rule: paramExtUrl
+ type: text
+ - default: http://Your-IP:3210/api/auth
+ edit: true
+ envKey: AUTH_URL
+ labelEn: Auth Service URL
+ labelZh: 认证服务地址
+ required: true
+ rule: paramExtUrl
+ type: text
+# Postgres related
+ - default: lobechat
+ edit: true
+ envKey: LOBE_DB_NAME
+ labelEn: Database Name
+ labelZh: 数据库名称
+ random: true
+ required: true
+ rule: paramCommon
+ type: text
+ - default: uWNZugjBqixf8dxC
+ edit: true
+ envKey: POSTGRES_PASSWORD
+ labelEn: Database Password
+ labelZh: 数据库密码
+ required: true
+ rule: paramCommon
+ type: password
+ - default: http://Your-IP:8000
+ edit: true
+ envKey: AUTH_CASDOOR_ISSUER
+ labelEn: AUTH CASDOOR ISSUER
+ labelZh: AUTH CASDOOR ISSUER
+ required: true
+ rule: paramExtUrl
+ type: text
+# Casdoor secret
+ - default: a387a4892ee19b1a2249
+ edit: true
+ envKey: AUTH_CASDOOR_ID
+ labelEn: AUTH CASDOOR ID
+ labelZh: AUTH CASDOOR ID
+ required: true
+ rule: paramCommon
+ type: text
+ - default: dbf205949d704de81b0b5b3603174e23fbecc354
+ edit: true
+ envKey: AUTH_CASDOOR_SECRET
+ labelEn: AUTH CASDOOR SECRET
+ labelZh: AUTH CASDOOR SECRET
+ required: true
+ rule: paramCommon
+ type: password
+# MinIO S3 configuration
+ - default: admin
+ edit: true
+ envKey: MINIO_ROOT_USER
+ labelEn: MinIO ROOT User
+ labelZh: MinIO ROOT User
+ required: true
+ rule: paramCommon
+ type: text
+ - default: e07a87a0
+ edit: true
+ envKey: MINIO_ROOT_PASSWORD
+ labelEn: MinIO ROOT Password
+ labelZh: MinIO ROOT Password
+ required: true
+ rule: paramCommon
+ type: password
+# Configure the bucket information of MinIO
+ - default: http://Your-IP:9000
+ edit: true
+ envKey: S3_ENDPOINT
+ labelEn: S3 Endpoint
+ labelZh: S3 Endpoint
+ required: true
+ rule: paramExtUrl
+ type: text
+ - default: http://Your-IP:9000
+ edit: true
+ envKey: S3_PUBLIC_DOMAIN
+ labelEn: S3 PUBLIC DOMAIN
+ labelZh: S3 PUBLIC DOMAIN
+ required: true
+ rule: paramExtUrl
+ type: text
+ - default: lobe
+ edit: true
+ envKey: MINIO_LOBE_BUCKET
+ labelEn: MINIO LOBE BUCKET
+ labelZh: MINIO LOBE BUCKET
+ required: true
+ rule: paramCommon
+ type: text
+# Configure for casdoor
+ - default: http://Your-IP:8000
+ edit: true
+ envKey: origin
+ labelEn: origin
+ labelZh: origin
+ required: true
+ rule: paramExtUrl
+ type: text
\ No newline at end of file
diff --git a/apps/lobe-chat-data/1.77.16/docker-compose.yml b/apps/lobe-chat-data/1.77.16/docker-compose.yml
new file mode 100644
index 000000000..9ff7eec0a
--- /dev/null
+++ b/apps/lobe-chat-data/1.77.16/docker-compose.yml
@@ -0,0 +1,122 @@
+services:
+ network-service:
+ image: alpine
+ container_name: lobe-network
+ restart: always
+ ports:
+ - '${MINIO_PORT}:${MINIO_PORT}' # MinIO API
+ - '9001:9001' # MinIO Console
+ - '${CASDOOR_PORT}:${CASDOOR_PORT}' # Casdoor
+ - '${PANEL_APP_PORT_HTTP}:3210' # LobeChat
+ command: tail -f /dev/null
+ networks:
+ - lobe-network
+
+ postgresql:
+ image: pgvector/pgvector:pg17
+ container_name: lobe-postgres
+ ports:
+ - '5432:5432'
+ volumes:
+ - './data:/var/lib/postgresql/data'
+ environment:
+ - 'POSTGRES_DB=${LOBE_DB_NAME}'
+ - 'POSTGRES_PASSWORD=${POSTGRES_PASSWORD}'
+ healthcheck:
+ test: ['CMD-SHELL', 'pg_isready -U postgres']
+ interval: 5s
+ timeout: 5s
+ retries: 5
+ restart: always
+ networks:
+ - lobe-network
+
+ minio:
+ image: minio/minio
+ container_name: lobe-minio
+ network_mode: 'service:network-service'
+ volumes:
+ - './s3_data:/etc/minio/data'
+ - ./minio-entrypoint.sh:/entrypoint.sh
+ environment:
+ - 'MINIO_API_CORS_ALLOW_ORIGIN=*'
+ env_file:
+ - .env
+ restart: always
+ entrypoint: ["sh", "/entrypoint.sh"]
+
+ casdoor:
+ image: casbin/casdoor:v1.843.0
+ container_name: lobe-casdoor
+ entrypoint: /bin/sh -c './server --createDatabase=true'
+ network_mode: 'service:network-service'
+ depends_on:
+ postgresql:
+ condition: service_healthy
+ environment:
+ httpport: ${CASDOOR_PORT}
+ RUNNING_IN_DOCKER: 'true'
+ driverName: 'postgres'
+ dataSourceName: 'user=postgres password=${POSTGRES_PASSWORD} host=postgresql port=5432 sslmode=disable dbname=casdoor'
+ runmode: 'dev'
+ volumes:
+ - ./init_data.json:/init_data.json
+ env_file:
+ - .env
+
+ searxng:
+ image: searxng/searxng
+ container_name: lobe-searxng
+ volumes:
+ - './searxng-settings.yml:/etc/searxng/settings.yml'
+ environment:
+ - 'SEARXNG_SETTINGS_FILE=/etc/searxng/settings.yml'
+ restart: always
+ networks:
+ - lobe-network
+ env_file:
+ - .env
+
+ lobe:
+ image: lobehub/lobe-chat-database:1.77.16
+ container_name: lobe-chat
+ network_mode: 'service:network-service'
+ depends_on:
+ postgresql:
+ condition: service_healthy
+ network-service:
+ condition: service_started
+ minio:
+ condition: service_started
+ casdoor:
+ condition: service_started
+
+ environment:
+ - 'NEXT_AUTH_SSO_PROVIDERS=casdoor'
+ - 'KEY_VAULTS_SECRET=Kix2wcUONd4CX51E/ZPAd36BqM4wzJgKjPtz2sGztqQ='
+ - 'NEXT_AUTH_SECRET=NX2kaPE923dt6BL2U8e9oSre5RfoT7hg'
+ - 'DATABASE_URL=postgresql://postgres:${POSTGRES_PASSWORD}@postgresql:5432/${LOBE_DB_NAME}'
+ - 'S3_BUCKET=${MINIO_LOBE_BUCKET}'
+ - 'S3_ENABLE_PATH_STYLE=1'
+ - 'S3_ACCESS_KEY=${MINIO_ROOT_USER}'
+ - 'S3_ACCESS_KEY_ID=${MINIO_ROOT_USER}'
+ - 'S3_SECRET_ACCESS_KEY=${MINIO_ROOT_PASSWORD}'
+ - 'LLM_VISION_IMAGE_USE_BASE64=1'
+ - 'S3_SET_ACL=0'
+ - 'SEARXNG_URL=http://searxng:8080'
+ env_file:
+ - .env
+ restart: always
+ volumes:
+ - ./lobe-entrypoint.sh:/entrypoint.sh
+ entrypoint: ["sh", "/entrypoint.sh"]
+
+volumes:
+ data:
+ driver: local
+ s3_data:
+ driver: local
+
+networks:
+ lobe-network:
+ driver: bridge
diff --git a/apps/lobe-chat-data/1.77.16/init_data.json b/apps/lobe-chat-data/1.77.16/init_data.json
new file mode 100644
index 000000000..2eb9fac2d
--- /dev/null
+++ b/apps/lobe-chat-data/1.77.16/init_data.json
@@ -0,0 +1,1238 @@
+{
+ "adapters": [
+ {
+ "owner": "built-in",
+ "name": "user-adapter-built-in",
+ "createdTime": "2024-09-09T09:26:13Z",
+ "table": "casbin_user_rule",
+ "useSameDb": true,
+ "type": "",
+ "databaseType": "",
+ "host": "",
+ "port": 0,
+ "user": "",
+ "password": "",
+ "database": ""
+ },
+ {
+ "owner": "built-in",
+ "name": "api-adapter-built-in",
+ "createdTime": "2024-09-09T09:26:12Z",
+ "table": "casbin_api_rule",
+ "useSameDb": true,
+ "type": "",
+ "databaseType": "",
+ "host": "",
+ "port": 0,
+ "user": "",
+ "password": "",
+ "database": ""
+ }
+ ],
+ "applications": [
+ {
+ "owner": "admin",
+ "name": "lobechat",
+ "createdTime": "2024-09-09T09:26:06Z",
+ "displayName": "LobeChat",
+ "logo": "https://lobehub.com/icon-192x192.png",
+ "homepageUrl": "https://lobehub.com",
+ "description": "LobeChat",
+ "organization": "lobechat",
+ "cert": "cert-built-in",
+ "headerHtml": "",
+ "enablePassword": true,
+ "enableSignUp": true,
+ "enableSigninSession": false,
+ "enableAutoSignin": false,
+ "enableCodeSignin": false,
+ "enableSamlCompress": false,
+ "enableSamlC14n10": false,
+ "enableSamlPostBinding": false,
+ "enableWebAuthn": false,
+ "enableLinkWithEmail": true,
+ "orgChoiceMode": "",
+ "samlReplyUrl": "",
+ "providers": [],
+ "signinMethods": [
+ {
+ "name": "Password",
+ "displayName": "Password",
+ "rule": "All"
+ }
+ ],
+ "signupItems": [
+ {
+ "name": "ID",
+ "visible": false,
+ "required": true,
+ "prompted": false,
+ "customCss": "",
+ "label": "",
+ "placeholder": "",
+ "regex": "",
+ "rule": "Random"
+ },
+ {
+ "name": "Username",
+ "visible": true,
+ "required": true,
+ "prompted": false,
+ "customCss": "",
+ "label": "",
+ "placeholder": "",
+ "regex": "",
+ "rule": "None"
+ },
+ {
+ "name": "Display name",
+ "visible": true,
+ "required": true,
+ "prompted": false,
+ "customCss": "",
+ "label": "",
+ "placeholder": "",
+ "regex": "",
+ "rule": "None"
+ },
+ {
+ "name": "Password",
+ "visible": true,
+ "required": true,
+ "prompted": false,
+ "customCss": "",
+ "label": "",
+ "placeholder": "",
+ "regex": "",
+ "rule": "None"
+ },
+ {
+ "name": "Confirm password",
+ "visible": true,
+ "required": true,
+ "prompted": false,
+ "customCss": "",
+ "label": "",
+ "placeholder": "",
+ "regex": "",
+ "rule": "None"
+ },
+ {
+ "name": "Signup button",
+ "visible": true,
+ "required": false,
+ "prompted": false,
+ "customCss": "",
+ "label": "",
+ "placeholder": "",
+ "regex": "",
+ "rule": ""
+ }
+ ],
+ "signinItems": [
+ {
+ "name": "Back button",
+ "visible": true,
+ "label": "",
+ "customCss": ".back-button {\n top: 65px;\n left: 15px;\n position: absolute;\n}\n.back-inner-button{}",
+ "placeholder": "",
+ "rule": "None",
+ "isCustom": false
+ },
+ {
+ "name": "Languages",
+ "visible": true,
+ "label": "",
+ "customCss": ".login-languages {\n top: 55px;\n right: 5px;\n position: absolute;\n}",
+ "placeholder": "",
+ "rule": "None",
+ "isCustom": false
+ },
+ {
+ "name": "Logo",
+ "visible": true,
+ "label": "",
+ "customCss": ".login-logo-box {} \n.panel-logo {\n width: 80px;\n}",
+ "placeholder": "",
+ "rule": "None",
+ "isCustom": false
+ },
+ {
+ "name": "Signin methods",
+ "visible": true,
+ "label": "",
+ "customCss": ".signin-methods {}",
+ "placeholder": "",
+ "rule": "None",
+ "isCustom": false
+ },
+ {
+ "name": "Username",
+ "visible": true,
+ "label": "",
+ "customCss": ".login-username {}\n.login-username-input{}",
+ "placeholder": "",
+ "rule": "None",
+ "isCustom": false
+ },
+ {
+ "name": "Password",
+ "visible": true,
+ "label": "",
+ "customCss": ".login-password {}\n.login-password-input{}",
+ "placeholder": "",
+ "rule": "None",
+ "isCustom": false
+ },
+ {
+ "name": "Agreement",
+ "visible": true,
+ "label": "",
+ "customCss": ".login-agreement {}",
+ "placeholder": "",
+ "rule": "None",
+ "isCustom": false
+ },
+ {
+ "name": "Forgot password?",
+ "visible": true,
+ "label": "",
+ "customCss": ".login-forget-password {\n display: inline-flex;\n justify-content: space-between;\n width: 320px;\n margin-bottom: 25px;\n}",
+ "placeholder": "",
+ "rule": "None",
+ "isCustom": false
+ },
+ {
+ "name": "Login button",
+ "visible": true,
+ "label": "",
+ "customCss": ".login-button-box {\n margin-bottom: 5px;\n}\n.login-button {\n width: 100%;\n}",
+ "placeholder": "",
+ "rule": "None",
+ "isCustom": false
+ },
+ {
+ "name": "Signup link",
+ "visible": true,
+ "label": "",
+ "customCss": ".login-signup-link {\n margin-bottom: 24px;\n display: flex;\n justify-content: end;\n}",
+ "placeholder": "",
+ "rule": "None",
+ "isCustom": false
+ },
+ {
+ "name": "Providers",
+ "visible": true,
+ "label": "",
+ "customCss": ".provider-img {\n width: 30px;\n margin: 5px;\n}\n.provider-big-img {\n margin-bottom: 10px;\n}",
+ "placeholder": "",
+ "rule": "small",
+ "isCustom": false
+ }
+ ],
+ "grantTypes": [
+ "authorization_code"
+ ],
+ "organizationObj": null,
+ "certPublicKey": "",
+ "tags": [],
+ "samlAttributes": null,
+ "isShared": false,
+ "clientId": "a387a4892ee19b1a2249",
+ "clientSecret": "dbf205949d704de81b0b5b3603174e23fbecc354",
+ "redirectUris": [
+ "http://192.168.123.105:3210/api/auth/callback/casdoor",
+ "https://192.168.123.105:3210/api/auth/callback/casdoor",
+ "http://example.com/api/auth/callback/casdoor",
+ "https://example.com/api/auth/callback/casdoor"
+ ],
+ "tokenFormat": "JWT",
+ "tokenSigningMethod": "",
+ "tokenFields": [],
+ "expireInHours": 168,
+ "refreshExpireInHours": 0,
+ "signupUrl": "",
+ "signinUrl": "",
+ "forgetUrl": "",
+ "affiliationUrl": "",
+ "termsOfUse": "",
+ "signupHtml": "",
+ "signinHtml": "",
+ "themeData": null,
+ "footerHtml": "",
+ "formCss": "",
+ "formCssMobile": "",
+ "formOffset": 2,
+ "formSideHtml": "",
+ "formBackgroundUrl": "",
+ "failedSigninLimit": 5,
+ "failedSigninFrozenTime": 15
+ }
+ ],
+ "certs": [
+ {
+ "owner": "admin",
+ "name": "cert-built-in",
+ "createdTime": "2024-09-09T09:26:06Z",
+ "displayName": "Built-in Cert",
+ "scope": "JWT",
+ "type": "x509",
+ "cryptoAlgorithm": "RS256",
+ "bitSize": 4096,
+ "expireInYears": 20,
+ "certificate": "-----BEGIN CERTIFICATE-----\nMIIE3TCCAsWgAwIBAgIDAeJAMA0GCSqGSIb3DQEBCwUAMCgxDjAMBgNVBAoTBWFk\nbWluMRYwFAYDVQQDEw1jZXJ0LWJ1aWx0LWluMB4XDTI0MDkwOTA5MjYxMVoXDTQ0\nMDkwOTA5MjYxMVowKDEOMAwGA1UEChMFYWRtaW4xFjAUBgNVBAMTDWNlcnQtYnVp\nbHQtaW4wggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQC3EnylZ2VurCm4\ngVtZHBUw67qvuKoYuU9whqaJr2UQEboIX4ca+FtZCjDgcBoD80lwSoYrcKpTG+DI\nVEMDznUHOjKwongRWclV1jeE3jZqObtmG9872yt/WX+nxQLyDrk+nUGhci6Qrhgo\nYToN1DYaMqMV1Pi8catx8S0W3gg+ilb9mG3xdFpQo89o84mJhajTE/5/0jBuQ50D\nx8CRolpRWjZ6i9RNVfFQglei+aW0RNf1PY6RqMkxc/Hy0XwXf/bjM5Ax7Aajwteh\nx0Q1zeUaRMMhFu6REtz345oJdLJpUkpFwJN4dPQ35a0tqnjkD1MLZjvBhSgOt5IP\nAJA1HmcR83RMBS8B3iV6y/clPjr02cjyasORy+kL/aFMfZfwvuRWX1NqRE99+rUT\nlPszH2SQi7PCUItQK72nnMYWBMXgyS8/Mra48q7LDAB/ZQnWuEG1+P1SdsQUWM2U\naxkgjmfMNATVAgufrLOcOZDxAwVS7+quCF5f/QPTWaFqz5ofcpoUlf0iriv/k1mi\nl7OghX0eqyLI2cCSma+dgB1eMni91eDCLVRT25mGDYreFjkpAwpMx2uaBk5e6ffT\n2jmZ2Zp9iCrUomLXDNiwY2wZDClcDKFiHNhNPAN3IbvBC3c6qpt0dLsWvGYW2IQT\nTnI71r/YY1XN/mTa4t/zwI+/kghjMQIDAQABoxAwDjAMBgNVHRMBAf8EAjAAMA0G\nCSqGSIb3DQEBCwUAA4ICAQBJUMBYJXnNihlGA2NMFIZMlsnW+5tjUqqK/Pv+oSpt\nrqZxwDKFZL0NMxd4pVnLxIdU5HEcN2e01Xyqlaf5Tm3BZN6MaRVZAIRVfvxcNESQ\nYA0jSFjsJzZUFGIQf8P9a5u+7qqSmj4tZx4XaRjOGSOf8t2RMJDmAbUeydLiD8ny\nCcxTzetmyYky8J3NBUoYGRbwU6KKbkxHbT35QheAb3jT4CELopLZ57Aa5Fb8xTjQ\n6tNqwZ+Z3993FkTOWPYLNLM1l46oN3g9yVY4ncGjUJkxsLTpAXB4I+wdqeew9XXe\nxWNcY3cWWjA5VXgCNzntkPFM1D5IWkgP8MYVCvdv0Unfo78PahwVMoQMnDG4xLuS\n50gVKpukHLZQJNFPF0X4u/JeXauKPv/w7ssTTAK+8RIBYxBXQ72zDJNHyTqldR4e\nfPHZfcW7OTmUr5FGNZThyW7ipvZRWcLM4u4IaWF2ncllOSqAXs1gDxkk201J7Lrb\noZOjC3zgxE9HTCXpiszOAt5I38++5ufE3/hJW3ckz0jaJDeFqUphnn8eQhXPSwtC\nR8TL4ZpXSAFEpwahG+fCfZDK2KyPME33eXV3jtsYf0QHerYiMnP+tf1vAk3qtOzo\nE6Iv16fpBUvshk1Gm6E6bdhsP0hCrMwV4dm8uC3S52qcFiWZ6AC/HURaMbY+/lOs\n0A==\n-----END CERTIFICATE-----\n",
+ "privateKey": "-----BEGIN RSA PRIVATE KEY-----\nMIIJKAIBAAKCAgEAtxJ8pWdlbqwpuIFbWRwVMOu6r7iqGLlPcIamia9lEBG6CF+H\nGvhbWQow4HAaA/NJcEqGK3CqUxvgyFRDA851BzoysKJ4EVnJVdY3hN42ajm7Zhvf\nO9srf1l/p8UC8g65Pp1BoXIukK4YKGE6DdQ2GjKjFdT4vHGrcfEtFt4IPopW/Zht\n8XRaUKPPaPOJiYWo0xP+f9IwbkOdA8fAkaJaUVo2eovUTVXxUIJXovmltETX9T2O\nkajJMXPx8tF8F3/24zOQMewGo8LXocdENc3lGkTDIRbukRLc9+OaCXSyaVJKRcCT\neHT0N+WtLap45A9TC2Y7wYUoDreSDwCQNR5nEfN0TAUvAd4lesv3JT469NnI8mrD\nkcvpC/2hTH2X8L7kVl9TakRPffq1E5T7Mx9kkIuzwlCLUCu9p5zGFgTF4MkvPzK2\nuPKuywwAf2UJ1rhBtfj9UnbEFFjNlGsZII5nzDQE1QILn6yznDmQ8QMFUu/qrghe\nX/0D01mhas+aH3KaFJX9Iq4r/5NZopezoIV9HqsiyNnAkpmvnYAdXjJ4vdXgwi1U\nU9uZhg2K3hY5KQMKTMdrmgZOXun309o5mdmafYgq1KJi1wzYsGNsGQwpXAyhYhzY\nTTwDdyG7wQt3OqqbdHS7FrxmFtiEE05yO9a/2GNVzf5k2uLf88CPv5IIYzECAwEA\nAQKCAgEAtGj7fOTQCKiQ1MplgwMxvuwPJWwN9B9qMbIAHF9EcPmHIwlA00s8ehqY\n4BSZDpuKG6bVYam9r/khI0omYHHs0hqAKaFyQWcCChz4yW9SoIwUKSP+cbYiv3Ur\nX+G+bVwlIZdHPhqP2PQ3ylNGKqqeRmLwZGtkVBCQq9DIZmiYJ0mdQHwenHvVJPLJ\nStv1Bhk5rgleHAi+wWrQKRGIq/walWEZntp9dVjkXjqUsn7i1SuixoLLJK/41Us1\ne90FNQNeAbimuQun32n7peoBRiSJScHJqao3n6+/ImqhOgBOcYwutV559ZMLuKoW\nZ5I/YD/ZzroI2USnnRk6Tp53fmFfn55JyLRjXf82jGeavScNEpTfvE+qT9SGOSA9\nF8YkEzsnAOM6tov2NEkY9Ofjh25fc4QAoqbQY8HdIYUwB+BHU63Hhdgz5VVy2f+v\nXJIy4z86QlWsXfQkimz02+AXD2jOSMH+ne3Qs3Z6l2hHhcxJj+lnp2qUXI6iYBOI\nVkQ8D3WPpBldZ5cOGCN0MC/gcv7WTiLDdl4nLba+qeqTFCO2Ygc/knMU7RvZew5U\nCIvxdvkAwjpvY7xN6er/C0jSp57sE2IoqE2QaNBC9YCn34sWgSDb2AkDvmhdSixD\nNCumHKp0at4e13urQTduHKPTZiUkAKG93vcuLONFmDAco0Mp4AECggEBAN1OgCsj\nyucLi5ZSHDYc9yTOKW7nGYHOGIMXdHaPCe+8R/3aW+NwV6QzyHO4WFr6p21JcOse\nldmYlwLRDBaCfteodLGLGrOS9DG8lN5i4F0hiRKwkOma9bRwNNESVLLp9TvXaxVN\nhzofNhnqVBRhP9jEPREVUk3iN4D2+GifEGBVIRqvrPEdN2c2fdIKC8nucmQGg02I\nQxfLRK8IL2COUgoB3f1lf/w6brIySn4sbctw4KSyGPsrrWCCQrARqcZ9gyVCKV6t\n/SMJcvMQ0QG43cQxZK6P21gyd5sRWryo74lQSEWnvt9v6zfMDADMcxErzH6ZCLg1\naBvBwv98vkeClEECggEBANPFjvl8EDx/dSGDBcpFyAt6IV0fijXpzxS4/14Y0J1k\nxBsHfkpeuH65npbHcH9SFqQ/3Nyc6vTA4KVNroH5eyo2Y+PY1NjPOoJTiFf57W/X\ntduukaqUBZ3NsHG176jDgHYyrZPlEBRHquSDxUjkVdx8uQDxL8r6OrF4RgVduk1p\nytMadyXWwJ6AGtSgmHIUH5LMImfrxwh0X8GmzaG0nfjUe8kIzEJIU8xNi7K13UO+\n3B/9uI3fOGYQ/NrCv1RDj49qIj/2NpnSAfeUxaKICZ890ffMC9xJTFrR+QmaqtSc\n7uir0UXx1qH1Tx7HdAHR7Dk4cHW7HhrK33ULcc0eUvECggEAN96Wis2JbtTCU5u9\nFYgweHE3kpDzJosCMy4br8aiqows3JBgvEVjSsfr5hL281juJa/xutnI2Nsl3Icr\n9w7QuN8FPsEwZ39E+L10E8SAgeJyeW5r1x3Qw9HD87gd++EGkSnsFb+x0OGKRfab\nbV2zwaShCgwI8DKY8ozm33qwprE3H0aUcXZ/wyXFk94HZd41sLzYLx2kWoBtgYae\nd1DWs0IPaeZS7jlOMtxxY/MRcNe5TrrLhbVcGs4nyc1bwAl1r1VJnmZsTokXJPfs\n2/NwwRP7J/qXVGfBPDugXZqEhnTnGfakQEI/7qErspPqxL367UbzJZYOB1veP6Od\nYe48QQKCAQBnb1UYEjqz8eU6Cw7m7xJ4WJy3KVKOZrbYfktsoF40oiUOtqg+luky\nLGODbcJKzcN1UiQENTildxfCZaDYpww7X/mGLkA37W+8fCRaJB6OxCN1O1y2njno\nC7EkuSJnoaW7FaGmXPlvjlmv55SSt8QgP2L1TNh1IadNS1uX/2Ghsgx487JCbxQB\n1rxEInSTM7UANGiRrZ23SXAD2/8P/nIyOUaEuKFbtowHe9DB5wY9spk9nuVnliGr\n6Jw4FWryM1WJTOORriaZFvQTAz1M13krqDxH9gfM/pgmu+wRftP1qPkf99vtd+PH\nk1OjyvOkd+4TPLfhKRXZLEHcn0xkTW1hAoIBAD+7+n2Q6dzwFVJLPcPrlQtusEkn\nLYvAZlHqMjIZQGaqhRzunxACOVgbu87CFuf19AxmYC3b45ZfmgCuVTOGXMkZgKGK\njZbyg/bm6XypCwiixC/AIrlU0NG+3uWUSEle+BzYnmYyiAquCLu4TiHFDPWorqfd\nvEz+skrB/2OQe1UWkr66gP0P41hpGFVgz6mFUfJjepYUAUe2X8VfK1zWA97eZzGq\ngQTfC3LeDn3RtEQY6NtBMjfsXRiwtWtJcrSVg8BFp6NJgp8CJAckg03K25UYe8tk\n/YKZaoWowmGQqx7QkJ5Kckz70dS3rWhb8IKcLiir1sLz9UtsQeiue+Q/Ezo=\n-----END RSA PRIVATE KEY-----\n"
+ }
+ ],
+ "enforcers": [
+ {
+ "owner": "built-in",
+ "name": "user-enforcer-built-in",
+ "createdTime": "2024-09-09T09:26:13Z",
+ "updatedTime": "2024-09-09 09:26:13",
+ "displayName": "User Enforcer",
+ "description": "",
+ "model": "built-in/user-model-built-in",
+ "adapter": "built-in/user-adapter-built-in",
+ "modelCfg": null
+ },
+ {
+ "owner": "built-in",
+ "name": "api-enforcer-built-in",
+ "createdTime": "2024-09-09T09:26:12Z",
+ "updatedTime": "2024-09-09 09:26:12",
+ "displayName": "API Enforcer",
+ "description": "",
+ "model": "built-in/api-model-built-in",
+ "adapter": "built-in/api-adapter-built-in",
+ "modelCfg": null
+ }
+ ],
+ "groups": [],
+ "invitations": [],
+ "ldaps": [
+ {
+ "id": "ldap-built-in",
+ "owner": "built-in",
+ "createdTime": "2024-09-09T09:26:12Z",
+ "serverName": "BuildIn LDAP Server",
+ "host": "example.com",
+ "port": 389,
+ "enableSsl": false,
+ "username": "cn=buildin,dc=example,dc=com",
+ "password": "123",
+ "baseDn": "ou=BuildIn,dc=example,dc=com",
+ "filter": "",
+ "filterFields": null,
+ "defaultGroup": "",
+ "autoSync": 0,
+ "lastSync": ""
+ }
+ ],
+ "models": [
+ {
+ "owner": "built-in",
+ "name": "user-model-built-in",
+ "createdTime": "2024-09-09T09:26:13Z",
+ "displayName": "Built-in Model",
+ "description": "",
+ "modelText": "[request_definition]\nr = sub, obj, act\n\n[policy_definition]\np = sub, obj, act\n\n[role_definition]\ng = _, _\n\n[policy_effect]\ne = some(where (p.eft == allow))\n\n[matchers]\nm = g(r.sub, p.sub) \u0026\u0026 r.obj == p.obj \u0026\u0026 r.act == p.act"
+ },
+ {
+ "owner": "built-in",
+ "name": "api-model-built-in",
+ "createdTime": "2024-09-09T09:26:12Z",
+ "displayName": "API Model",
+ "description": "",
+ "modelText": "[request_definition]\nr = subOwner, subName, method, urlPath, objOwner, objName\n\n[policy_definition]\np = subOwner, subName, method, urlPath, objOwner, objName\n\n[role_definition]\ng = _, _\n\n[policy_effect]\ne = some(where (p.eft == allow))\n\n[matchers]\nm = (r.subOwner == p.subOwner || p.subOwner == \"*\") \u0026\u0026 \\\n (r.subName == p.subName || p.subName == \"*\" || r.subName != \"anonymous\" \u0026\u0026 p.subName == \"!anonymous\") \u0026\u0026 \\\n (r.method == p.method || p.method == \"*\") \u0026\u0026 \\\n (r.urlPath == p.urlPath || p.urlPath == \"*\") \u0026\u0026 \\\n (r.objOwner == p.objOwner || p.objOwner == \"*\") \u0026\u0026 \\\n (r.objName == p.objName || p.objName == \"*\") || \\\n (r.subOwner == r.objOwner \u0026\u0026 r.subName == r.objName)"
+ }
+ ],
+ "organizations": [
+ {
+ "owner": "admin",
+ "name": "built-in",
+ "createdTime": "2024-09-09T09:26:04Z",
+ "displayName": "Built-in Organization",
+ "websiteUrl": "https://example.com",
+ "logo": "",
+ "logoDark": "",
+ "favicon": "https://cdn.casbin.org/img/casbin/favicon.ico",
+ "passwordType": "plain",
+ "passwordSalt": "",
+ "passwordOptions": [
+ "AtLeast6"
+ ],
+ "countryCodes": [
+ "US",
+ "ES",
+ "FR",
+ "DE",
+ "GB",
+ "CN",
+ "JP",
+ "KR",
+ "VN",
+ "ID",
+ "SG",
+ "IN"
+ ],
+ "defaultAvatar": "https://cdn.casbin.org/img/casbin.svg",
+ "defaultApplication": "",
+ "tags": [],
+ "languages": [
+ "en",
+ "zh",
+ "es",
+ "fr",
+ "de",
+ "id",
+ "ja",
+ "ko",
+ "ru",
+ "vi",
+ "pt"
+ ],
+ "themeData": null,
+ "masterPassword": "",
+ "defaultPassword": "",
+ "masterVerificationCode": "",
+ "initScore": 2000,
+ "enableSoftDeletion": false,
+ "isProfilePublic": false,
+ "useEmailAsUsername": false,
+ "enableTour": true,
+ "mfaItems": null,
+ "accountItems": [
+ {
+ "name": "Organization",
+ "visible": true,
+ "viewRule": "Public",
+ "modifyRule": "Admin",
+ "regex": ""
+ },
+ {
+ "name": "ID",
+ "visible": true,
+ "viewRule": "Public",
+ "modifyRule": "Immutable",
+ "regex": ""
+ },
+ {
+ "name": "Name",
+ "visible": true,
+ "viewRule": "Public",
+ "modifyRule": "Admin",
+ "regex": ""
+ },
+ {
+ "name": "Display name",
+ "visible": true,
+ "viewRule": "Public",
+ "modifyRule": "Self",
+ "regex": ""
+ },
+ {
+ "name": "Avatar",
+ "visible": true,
+ "viewRule": "Public",
+ "modifyRule": "Self",
+ "regex": ""
+ },
+ {
+ "name": "User type",
+ "visible": true,
+ "viewRule": "Public",
+ "modifyRule": "Admin",
+ "regex": ""
+ },
+ {
+ "name": "Password",
+ "visible": true,
+ "viewRule": "Self",
+ "modifyRule": "Self",
+ "regex": ""
+ },
+ {
+ "name": "Email",
+ "visible": true,
+ "viewRule": "Public",
+ "modifyRule": "Self",
+ "regex": ""
+ },
+ {
+ "name": "Phone",
+ "visible": true,
+ "viewRule": "Public",
+ "modifyRule": "Self",
+ "regex": ""
+ },
+ {
+ "name": "Country code",
+ "visible": true,
+ "viewRule": "Public",
+ "modifyRule": "Admin",
+ "regex": ""
+ },
+ {
+ "name": "Country/Region",
+ "visible": true,
+ "viewRule": "Public",
+ "modifyRule": "Self",
+ "regex": ""
+ },
+ {
+ "name": "Location",
+ "visible": true,
+ "viewRule": "Public",
+ "modifyRule": "Self",
+ "regex": ""
+ },
+ {
+ "name": "Affiliation",
+ "visible": true,
+ "viewRule": "Public",
+ "modifyRule": "Self",
+ "regex": ""
+ },
+ {
+ "name": "Title",
+ "visible": true,
+ "viewRule": "Public",
+ "modifyRule": "Self",
+ "regex": ""
+ },
+ {
+ "name": "Homepage",
+ "visible": true,
+ "viewRule": "Public",
+ "modifyRule": "Self",
+ "regex": ""
+ },
+ {
+ "name": "Bio",
+ "visible": true,
+ "viewRule": "Public",
+ "modifyRule": "Self",
+ "regex": ""
+ },
+ {
+ "name": "Tag",
+ "visible": true,
+ "viewRule": "Public",
+ "modifyRule": "Admin",
+ "regex": ""
+ },
+ {
+ "name": "Signup application",
+ "visible": true,
+ "viewRule": "Public",
+ "modifyRule": "Admin",
+ "regex": ""
+ },
+ {
+ "name": "Roles",
+ "visible": true,
+ "viewRule": "Public",
+ "modifyRule": "Immutable",
+ "regex": ""
+ },
+ {
+ "name": "Permissions",
+ "visible": true,
+ "viewRule": "Public",
+ "modifyRule": "Immutable",
+ "regex": ""
+ },
+ {
+ "name": "Groups",
+ "visible": true,
+ "viewRule": "Public",
+ "modifyRule": "Admin",
+ "regex": ""
+ },
+ {
+ "name": "3rd-party logins",
+ "visible": true,
+ "viewRule": "Self",
+ "modifyRule": "Self",
+ "regex": ""
+ },
+ {
+ "name": "Properties",
+ "visible": true,
+ "viewRule": "Admin",
+ "modifyRule": "Admin",
+ "regex": ""
+ },
+ {
+ "name": "Is admin",
+ "visible": true,
+ "viewRule": "Admin",
+ "modifyRule": "Admin",
+ "regex": ""
+ },
+ {
+ "name": "Is forbidden",
+ "visible": true,
+ "viewRule": "Admin",
+ "modifyRule": "Admin",
+ "regex": ""
+ },
+ {
+ "name": "Is deleted",
+ "visible": true,
+ "viewRule": "Admin",
+ "modifyRule": "Admin",
+ "regex": ""
+ },
+ {
+ "name": "Multi-factor authentication",
+ "visible": true,
+ "viewRule": "Self",
+ "modifyRule": "Self",
+ "regex": ""
+ },
+ {
+ "name": "WebAuthn credentials",
+ "visible": true,
+ "viewRule": "Self",
+ "modifyRule": "Self",
+ "regex": ""
+ },
+ {
+ "name": "Managed accounts",
+ "visible": true,
+ "viewRule": "Self",
+ "modifyRule": "Self",
+ "regex": ""
+ },
+ {
+ "name": "MFA accounts",
+ "visible": true,
+ "viewRule": "Self",
+ "modifyRule": "Self",
+ "regex": ""
+ }
+ ]
+ },
+ {
+ "owner": "admin",
+ "name": "lobechat",
+ "createdTime": "2024-09-09T09:26:04Z",
+ "displayName": "LobeChat Organization",
+ "websiteUrl": "https://lobehub.com",
+ "logo": "https://lobehub.com/icon-192x192.png",
+ "logoDark": "",
+ "favicon": "https://lobehub.com/favicon.ico",
+ "passwordType": "plain",
+ "passwordSalt": "",
+ "passwordOptions": [
+ "AtLeast6"
+ ],
+ "countryCodes": [
+ "US",
+ "ES",
+ "FR",
+ "DE",
+ "GB",
+ "CN",
+ "JP",
+ "KR",
+ "VN",
+ "ID",
+ "SG",
+ "IN"
+ ],
+ "defaultAvatar": "https://cdn.casbin.org/img/casbin.svg",
+ "defaultApplication": "",
+ "tags": [],
+ "languages": [
+ "en",
+ "zh",
+ "es",
+ "fr",
+ "de",
+ "id",
+ "ja",
+ "ko",
+ "ru",
+ "vi",
+ "pt"
+ ],
+ "themeData": null,
+ "masterPassword": "",
+ "defaultPassword": "",
+ "masterVerificationCode": "",
+ "initScore": 2000,
+ "enableSoftDeletion": false,
+ "isProfilePublic": false,
+ "useEmailAsUsername": false,
+ "enableTour": true,
+ "mfaItems": null,
+ "accountItems": [
+ {
+ "name": "Organization",
+ "visible": true,
+ "viewRule": "Public",
+ "modifyRule": "Admin",
+ "regex": ""
+ },
+ {
+ "name": "ID",
+ "visible": true,
+ "viewRule": "Public",
+ "modifyRule": "Immutable",
+ "regex": ""
+ },
+ {
+ "name": "Name",
+ "visible": true,
+ "viewRule": "Public",
+ "modifyRule": "Admin",
+ "regex": ""
+ },
+ {
+ "name": "Display name",
+ "visible": true,
+ "viewRule": "Public",
+ "modifyRule": "Self",
+ "regex": ""
+ },
+ {
+ "name": "Avatar",
+ "visible": true,
+ "viewRule": "Public",
+ "modifyRule": "Self",
+ "regex": ""
+ },
+ {
+ "name": "User type",
+ "visible": true,
+ "viewRule": "Public",
+ "modifyRule": "Admin",
+ "regex": ""
+ },
+ {
+ "name": "Password",
+ "visible": true,
+ "viewRule": "Self",
+ "modifyRule": "Self",
+ "regex": ""
+ },
+ {
+ "name": "Email",
+ "visible": true,
+ "viewRule": "Public",
+ "modifyRule": "Self",
+ "regex": ""
+ },
+ {
+ "name": "Phone",
+ "visible": true,
+ "viewRule": "Public",
+ "modifyRule": "Self",
+ "regex": ""
+ },
+ {
+ "name": "Country code",
+ "visible": true,
+ "viewRule": "Public",
+ "modifyRule": "Admin",
+ "regex": ""
+ },
+ {
+ "name": "Country/Region",
+ "visible": true,
+ "viewRule": "Public",
+ "modifyRule": "Self",
+ "regex": ""
+ },
+ {
+ "name": "Location",
+ "visible": true,
+ "viewRule": "Public",
+ "modifyRule": "Self",
+ "regex": ""
+ },
+ {
+ "name": "Affiliation",
+ "visible": true,
+ "viewRule": "Public",
+ "modifyRule": "Self",
+ "regex": ""
+ },
+ {
+ "name": "Title",
+ "visible": true,
+ "viewRule": "Public",
+ "modifyRule": "Self",
+ "regex": ""
+ },
+ {
+ "name": "Homepage",
+ "visible": true,
+ "viewRule": "Public",
+ "modifyRule": "Self",
+ "regex": ""
+ },
+ {
+ "name": "Bio",
+ "visible": true,
+ "viewRule": "Public",
+ "modifyRule": "Self",
+ "regex": ""
+ },
+ {
+ "name": "Tag",
+ "visible": true,
+ "viewRule": "Public",
+ "modifyRule": "Admin",
+ "regex": ""
+ },
+ {
+ "name": "Signup application",
+ "visible": true,
+ "viewRule": "Public",
+ "modifyRule": "Admin",
+ "regex": ""
+ },
+ {
+ "name": "Roles",
+ "visible": true,
+ "viewRule": "Public",
+ "modifyRule": "Immutable",
+ "regex": ""
+ },
+ {
+ "name": "Permissions",
+ "visible": true,
+ "viewRule": "Public",
+ "modifyRule": "Immutable",
+ "regex": ""
+ },
+ {
+ "name": "Groups",
+ "visible": true,
+ "viewRule": "Public",
+ "modifyRule": "Admin",
+ "regex": ""
+ },
+ {
+ "name": "3rd-party logins",
+ "visible": true,
+ "viewRule": "Self",
+ "modifyRule": "Self",
+ "regex": ""
+ },
+ {
+ "name": "Properties",
+ "visible": true,
+ "viewRule": "Admin",
+ "modifyRule": "Admin",
+ "regex": ""
+ },
+ {
+ "name": "Is admin",
+ "visible": true,
+ "viewRule": "Admin",
+ "modifyRule": "Admin",
+ "regex": ""
+ },
+ {
+ "name": "Is forbidden",
+ "visible": true,
+ "viewRule": "Admin",
+ "modifyRule": "Admin",
+ "regex": ""
+ },
+ {
+ "name": "Is deleted",
+ "visible": true,
+ "viewRule": "Admin",
+ "modifyRule": "Admin",
+ "regex": ""
+ },
+ {
+ "name": "Multi-factor authentication",
+ "visible": true,
+ "viewRule": "Self",
+ "modifyRule": "Self",
+ "regex": ""
+ },
+ {
+ "name": "WebAuthn credentials",
+ "visible": true,
+ "viewRule": "Self",
+ "modifyRule": "Self",
+ "regex": ""
+ },
+ {
+ "name": "Managed accounts",
+ "visible": true,
+ "viewRule": "Self",
+ "modifyRule": "Self",
+ "regex": ""
+ },
+ {
+ "name": "MFA accounts",
+ "visible": true,
+ "viewRule": "Self",
+ "modifyRule": "Self",
+ "regex": ""
+ }
+ ]
+ }
+ ],
+ "payments": [],
+ "permissions": [
+ {
+ "owner": "built-in",
+ "name": "permission-built-in",
+ "createdTime": "2024-09-09T09:26:04Z",
+ "displayName": "Built-in Permission",
+ "description": "Built-in Permission",
+ "users": [
+ "built-in/*"
+ ],
+ "groups": [],
+ "roles": [],
+ "domains": [],
+ "model": "user-model-built-in",
+ "adapter": "",
+ "resourceType": "Application",
+ "resources": [
+ "app-built-in"
+ ],
+ "actions": [
+ "Read",
+ "Write",
+ "Admin"
+ ],
+ "effect": "Allow",
+ "isEnabled": true,
+ "submitter": "admin",
+ "approver": "admin",
+ "approveTime": "2024-09-09T09:26:04Z",
+ "state": "Approved"
+ }
+ ],
+ "plans": [],
+ "pricings": [],
+ "products": [],
+ "providers": [],
+ "records": [],
+ "resources": [],
+ "roles": [],
+ "sessions": [],
+ "subscriptions": [],
+ "syncers": [],
+ "tokens": [],
+ "transactions": [],
+ "users": [
+ {
+ "owner": "built-in",
+ "name": "admin",
+ "createdTime": "2024-09-09T09:26:05Z",
+ "updatedTime": "",
+ "deletedTime": "",
+ "id": "bbf2a176-203c-414c-8cdd-ec92b019e07a",
+ "externalId": "",
+ "type": "normal-user",
+ "password": "123",
+ "passwordSalt": "",
+ "passwordType": "plain",
+ "displayName": "Admin",
+ "firstName": "",
+ "lastName": "",
+ "avatar": "https://cdn.casbin.org/img/casbin.svg",
+ "avatarType": "",
+ "permanentAvatar": "",
+ "email": "admin@example.com",
+ "emailVerified": false,
+ "phone": "13245678910",
+ "countryCode": "US",
+ "region": "",
+ "location": "",
+ "address": [],
+ "affiliation": "Example Inc.",
+ "title": "",
+ "idCardType": "",
+ "idCard": "",
+ "homepage": "",
+ "bio": "",
+ "tag": "staff",
+ "language": "",
+ "gender": "",
+ "birthday": "",
+ "education": "",
+ "score": 2000,
+ "karma": 0,
+ "ranking": 1,
+ "balance": 0,
+ "currency": "",
+ "isDefaultAvatar": false,
+ "isOnline": false,
+ "isAdmin": true,
+ "isForbidden": false,
+ "isDeleted": false,
+ "signupApplication": "app-built-in",
+ "hash": "",
+ "preHash": "",
+ "accessKey": "",
+ "accessSecret": "",
+ "accessToken": "",
+ "createdIp": "127.0.0.1",
+ "lastSigninTime": "",
+ "lastSigninIp": "",
+ "github": "",
+ "google": "",
+ "qq": "",
+ "wechat": "",
+ "facebook": "",
+ "dingtalk": "",
+ "weibo": "",
+ "gitee": "",
+ "linkedin": "",
+ "wecom": "",
+ "lark": "",
+ "gitlab": "",
+ "adfs": "",
+ "baidu": "",
+ "alipay": "",
+ "casdoor": "",
+ "infoflow": "",
+ "apple": "",
+ "azuread": "",
+ "azureadb2c": "",
+ "slack": "",
+ "steam": "",
+ "bilibili": "",
+ "okta": "",
+ "douyin": "",
+ "line": "",
+ "amazon": "",
+ "auth0": "",
+ "battlenet": "",
+ "bitbucket": "",
+ "box": "",
+ "cloudfoundry": "",
+ "dailymotion": "",
+ "deezer": "",
+ "digitalocean": "",
+ "discord": "",
+ "dropbox": "",
+ "eveonline": "",
+ "fitbit": "",
+ "gitea": "",
+ "heroku": "",
+ "influxcloud": "",
+ "instagram": "",
+ "intercom": "",
+ "kakao": "",
+ "lastfm": "",
+ "mailru": "",
+ "meetup": "",
+ "microsoftonline": "",
+ "naver": "",
+ "nextcloud": "",
+ "onedrive": "",
+ "oura": "",
+ "patreon": "",
+ "paypal": "",
+ "salesforce": "",
+ "shopify": "",
+ "soundcloud": "",
+ "spotify": "",
+ "strava": "",
+ "stripe": "",
+ "tiktok": "",
+ "tumblr": "",
+ "twitch": "",
+ "twitter": "",
+ "typetalk": "",
+ "uber": "",
+ "vk": "",
+ "wepay": "",
+ "xero": "",
+ "yahoo": "",
+ "yammer": "",
+ "yandex": "",
+ "zoom": "",
+ "metamask": "",
+ "web3onboard": "",
+ "custom": "",
+ "webauthnCredentials": null,
+ "preferredMfaType": "",
+ "recoveryCodes": null,
+ "totpSecret": "",
+ "mfaPhoneEnabled": false,
+ "mfaEmailEnabled": false,
+ "invitation": "",
+ "invitationCode": "",
+ "faceIds": null,
+ "ldap": "",
+ "properties": {},
+ "roles": null,
+ "permissions": null,
+ "groups": null,
+ "lastSigninWrongTime": "",
+ "signinWrongTimes": 0,
+ "managedAccounts": null,
+ "mfaAccounts": null,
+ "needUpdatePassword": false
+ },
+ {
+ "owner": "lobechat",
+ "name": "user",
+ "createdTime": "2024-09-09T09:26:05Z",
+ "updatedTime": "",
+ "deletedTime": "",
+ "id": "b5a7c5b5-3e79-47ff-85a8-537b07fee2f9",
+ "externalId": "",
+ "type": "normal-user",
+ "password": "123",
+ "passwordSalt": "",
+ "passwordType": "plain",
+ "displayName": "User",
+ "firstName": "",
+ "lastName": "",
+ "avatar": "https://cdn.casbin.org/img/casbin.svg",
+ "avatarType": "",
+ "permanentAvatar": "",
+ "email": "user@example.com",
+ "emailVerified": false,
+ "phone": "13245678910",
+ "countryCode": "US",
+ "region": "",
+ "location": "",
+ "address": [],
+ "affiliation": "Example Inc.",
+ "title": "",
+ "idCardType": "",
+ "idCard": "",
+ "homepage": "",
+ "bio": "",
+ "tag": "staff",
+ "language": "",
+ "gender": "",
+ "birthday": "",
+ "education": "",
+ "score": 2000,
+ "karma": 0,
+ "ranking": 1,
+ "balance": 0,
+ "currency": "",
+ "isDefaultAvatar": false,
+ "isOnline": false,
+ "isAdmin": false,
+ "isForbidden": false,
+ "isDeleted": false,
+ "signupApplication": "lobechat",
+ "hash": "",
+ "preHash": "",
+ "accessKey": "",
+ "accessSecret": "",
+ "accessToken": "",
+ "createdIp": "127.0.0.1",
+ "lastSigninTime": "",
+ "lastSigninIp": "",
+ "github": "",
+ "google": "",
+ "qq": "",
+ "wechat": "",
+ "facebook": "",
+ "dingtalk": "",
+ "weibo": "",
+ "gitee": "",
+ "linkedin": "",
+ "wecom": "",
+ "lark": "",
+ "gitlab": "",
+ "adfs": "",
+ "baidu": "",
+ "alipay": "",
+ "casdoor": "",
+ "infoflow": "",
+ "apple": "",
+ "azuread": "",
+ "azureadb2c": "",
+ "slack": "",
+ "steam": "",
+ "bilibili": "",
+ "okta": "",
+ "douyin": "",
+ "line": "",
+ "amazon": "",
+ "auth0": "",
+ "battlenet": "",
+ "bitbucket": "",
+ "box": "",
+ "cloudfoundry": "",
+ "dailymotion": "",
+ "deezer": "",
+ "digitalocean": "",
+ "discord": "",
+ "dropbox": "",
+ "eveonline": "",
+ "fitbit": "",
+ "gitea": "",
+ "heroku": "",
+ "influxcloud": "",
+ "instagram": "",
+ "intercom": "",
+ "kakao": "",
+ "lastfm": "",
+ "mailru": "",
+ "meetup": "",
+ "microsoftonline": "",
+ "naver": "",
+ "nextcloud": "",
+ "onedrive": "",
+ "oura": "",
+ "patreon": "",
+ "paypal": "",
+ "salesforce": "",
+ "shopify": "",
+ "soundcloud": "",
+ "spotify": "",
+ "strava": "",
+ "stripe": "",
+ "tiktok": "",
+ "tumblr": "",
+ "twitch": "",
+ "twitter": "",
+ "typetalk": "",
+ "uber": "",
+ "vk": "",
+ "wepay": "",
+ "xero": "",
+ "yahoo": "",
+ "yammer": "",
+ "yandex": "",
+ "zoom": "",
+ "metamask": "",
+ "web3onboard": "",
+ "custom": "",
+ "webauthnCredentials": null,
+ "preferredMfaType": "",
+ "recoveryCodes": null,
+ "totpSecret": "",
+ "mfaPhoneEnabled": false,
+ "mfaEmailEnabled": false,
+ "invitation": "",
+ "invitationCode": "",
+ "faceIds": null,
+ "ldap": "",
+ "properties": {},
+ "roles": null,
+ "permissions": null,
+ "groups": null,
+ "lastSigninWrongTime": "",
+ "signinWrongTimes": 0,
+ "managedAccounts": null,
+ "mfaAccounts": null,
+ "needUpdatePassword": false
+ }
+ ],
+ "webhooks": []
+}
\ No newline at end of file
diff --git a/apps/lobe-chat-data/1.77.16/lobe-entrypoint.sh b/apps/lobe-chat-data/1.77.16/lobe-entrypoint.sh
new file mode 100644
index 000000000..e90dbdd64
--- /dev/null
+++ b/apps/lobe-chat-data/1.77.16/lobe-entrypoint.sh
@@ -0,0 +1,42 @@
+#!/bin/sh
+
+/bin/node /app/startServer.js &
+LOBE_PID=$!
+sleep 3
+
+if [ $(wget --timeout=5 --spider --server-response ${AUTH_CASDOOR_ISSUER}/.well-known/openid-configuration 2>&1 | grep -c 'HTTP/1.1 200 OK') -eq 0 ]; then
+ echo '⚠️Warining: Unable to fetch OIDC configuration from Casdoor'
+ echo 'Request URL: ${AUTH_CASDOOR_ISSUER}/.well-known/openid-configuration'
+ echo 'Read more at: https://lobehub.com/docs/self-hosting/server-database/docker-compose#necessary-configuration'
+ echo ''
+ echo '⚠️注意:无法从 Casdoor 获取 OIDC 配置'
+ echo '请求 URL: ${AUTH_CASDOOR_ISSUER}/.well-known/openid-configuration'
+ echo '了解更多:https://lobehub.com/zh/docs/self-hosting/server-database/docker-compose#necessary-configuration'
+ echo ''
+else
+ if ! wget -O - --timeout=5 ${AUTH_CASDOOR_ISSUER}/.well-known/openid-configuration 2>&1 | grep 'issuer' | grep ${AUTH_CASDOOR_ISSUER}; then
+ printf '❌Error: The Auth issuer is conflict, Issuer in OIDC configuration is: %s' $(wget -O - --timeout=5 ${AUTH_CASDOOR_ISSUER}/.well-known/openid-configuration 2>&1 | grep -E 'issuer.*' | awk -F '"' '{print $4}')
+ echo ' , but the issuer in .env file is: ${AUTH_CASDOOR_ISSUER} '
+ echo 'Request URL: ${AUTH_CASDOOR_ISSUER}/.well-known/openid-configuration'
+ echo 'Read more at: https://lobehub.com/docs/self-hosting/server-database/docker-compose#necessary-configuration'
+ echo ''
+ printf '❌错误:Auth 的 issuer 冲突,OIDC 配置中的 issuer 是:%s' $(wget -O - --timeout=5 ${AUTH_CASDOOR_ISSUER}/.well-known/openid-configuration 2>&1 | grep -E 'issuer.*' | awk -F '"' '{print $4}')
+ echo ' , 但 .env 文件中的 issuer 是:${AUTH_CASDOOR_ISSUER} '
+ echo '请求 URL: ${AUTH_CASDOOR_ISSUER}/.well-known/openid-configuration'
+ echo '了解更多:https://lobehub.com/zh/docs/self-hosting/server-database/docker-compose#necessary-configuration'
+ echo ''
+ fi
+fi
+
+if [ $(wget --timeout=5 --spider --server-response ${S3_ENDPOINT}/minio/health/live 2>&1 | grep -c 'HTTP/1.1 200 OK') -eq 0 ]; then
+ echo '⚠️Warining: Unable to fetch MinIO health status'
+ echo 'Request URL: ${S3_ENDPOINT}/minio/health/live'
+ echo 'Read more at: https://lobehub.com/docs/self-hosting/server-database/docker-compose#necessary-configuration'
+ echo ''
+ echo '⚠️注意:无法获取 MinIO 健康状态'
+ echo '请求 URL: ${S3_ENDPOINT}/minio/health/live'
+ echo '了解更多:https://lobehub.com/zh/docs/self-hosting/server-database/docker-compose#necessary-configuration'
+ echo ''
+fi
+
+wait $LOBE_PID
\ No newline at end of file
diff --git a/apps/lobe-chat-data/1.77.16/minio-entrypoint.sh b/apps/lobe-chat-data/1.77.16/minio-entrypoint.sh
new file mode 100644
index 000000000..25a63750a
--- /dev/null
+++ b/apps/lobe-chat-data/1.77.16/minio-entrypoint.sh
@@ -0,0 +1,16 @@
+#!/bin/sh
+
+minio server /etc/minio/data --address ":${MINIO_PORT}" --console-address ":9001" &
+MINIO_PID=$!
+
+while ! curl -s http://localhost:${MINIO_PORT}/minio/health/live; do
+ echo 'Waiting for MinIO to start...'
+ sleep 1
+done
+
+sleep 5
+mc alias set myminio http://localhost:${MINIO_PORT} ${MINIO_ROOT_USER} ${MINIO_ROOT_PASSWORD}
+echo "Creating bucket ${MINIO_LOBE_BUCKET}"
+mc mb myminio/${MINIO_LOBE_BUCKET}
+
+wait $MINIO_PID
\ No newline at end of file
diff --git a/apps/lobe-chat-data/1.77.16/searxng-settings.yml b/apps/lobe-chat-data/1.77.16/searxng-settings.yml
new file mode 100644
index 000000000..ffb5e4229
--- /dev/null
+++ b/apps/lobe-chat-data/1.77.16/searxng-settings.yml
@@ -0,0 +1,2582 @@
+general:
+ # Debug mode, only for development. Is overwritten by ${SEARXNG_DEBUG}
+ debug: false
+ # displayed name
+ instance_name: "searxng"
+ # For example: https://example.com/privacy
+ privacypolicy_url: false
+ # use true to use your own donation page written in searx/info/en/donate.md
+ # use false to disable the donation link
+ donation_url: false
+ # mailto:contact@example.com
+ contact_url: false
+ # record stats
+ enable_metrics: true
+ # expose stats in open metrics format at /metrics
+ # leave empty to disable (no password set)
+ # open_metrics:
+ open_metrics: ''
+
+brand:
+ new_issue_url: https://github.com/searxng/searxng/issues/new
+ docs_url: https://docs.searxng.org/
+ public_instances: https://searx.space
+ wiki_url: https://github.com/searxng/searxng/wiki
+ issue_url: https://github.com/searxng/searxng/issues
+ # custom:
+ # maintainer: "Jon Doe"
+ # # Custom entries in the footer: [title]: [link]
+ # links:
+ # Uptime: https://uptime.searxng.org/history/darmarit-org
+ # About: "https://searxng.org"
+
+search:
+ # Filter results. 0: None, 1: Moderate, 2: Strict
+ safe_search: 0
+ # Existing autocomplete backends: "baidu", "brave", "dbpedia", "duckduckgo", "google", "yandex",
+ # "mwmbl", "seznam", "stract", "swisscows", "qwant", "wikipedia" -
+ # leave blank to turn it off by default.
+ autocomplete: ""
+ # minimun characters to type before autocompleter starts
+ autocomplete_min: 4
+ # backend for the favicon near URL in search results.
+ # Available resolvers: "allesedv", "duckduckgo", "google", "yandex" - leave blank to turn it off by default.
+ favicon_resolver: ""
+ # Default search language - leave blank to detect from browser information or
+ # use codes from 'languages.py'
+ default_lang: "auto"
+ # max_page: 0 # if engine supports paging, 0 means unlimited numbers of pages
+ # Available languages
+ # languages:
+ # - all
+ # - en
+ # - en-US
+ # - de
+ # - it-IT
+ # - fr
+ # - fr-BE
+ # ban time in seconds after engine errors
+ ban_time_on_fail: 5
+ # max ban time in seconds after engine errors
+ max_ban_time_on_fail: 120
+ suspended_times:
+ # Engine suspension time after error (in seconds; set to 0 to disable)
+ # For error "Access denied" and "HTTP error [402, 403]"
+ SearxEngineAccessDenied: 86400
+ # For error "CAPTCHA"
+ SearxEngineCaptcha: 86400
+ # For error "Too many request" and "HTTP error 429"
+ SearxEngineTooManyRequests: 3600
+ # Cloudflare CAPTCHA
+ cf_SearxEngineCaptcha: 1296000
+ cf_SearxEngineAccessDenied: 86400
+ # ReCAPTCHA
+ recaptcha_SearxEngineCaptcha: 604800
+
+ # remove format to deny access, use lower case.
+ # formats: [html, csv, json, rss]
+ formats:
+ - html
+ - json
+server:
+ # Is overwritten by ${SEARXNG_PORT} and ${SEARXNG_BIND_ADDRESS}
+ port: 8888
+ bind_address: "127.0.0.1"
+ # public URL of the instance, to ensure correct inbound links. Is overwritten
+ # by ${SEARXNG_URL}.
+ base_url: / # "http://example.com/location"
+ # rate limit the number of request on the instance, block some bots.
+ # Is overwritten by ${SEARXNG_LIMITER}
+ limiter: false
+ # enable features designed only for public instances.
+ # Is overwritten by ${SEARXNG_PUBLIC_INSTANCE}
+ public_instance: false
+
+ # If your instance owns a /etc/searxng/settings.yml file, then set the following
+ # values there.
+
+ secret_key: "779c5b69fe650f147be9012abca6b44a8697acdb2817b46353f4779bb07d81d1" # Is overwritten by ${SEARXNG_SECRET}
+ # Proxy image results through SearXNG. Is overwritten by ${SEARXNG_IMAGE_PROXY}
+ image_proxy: false
+ # 1.0 and 1.1 are supported
+ http_protocol_version: "1.0"
+ # POST queries are more secure as they don't show up in history but may cause
+ # problems when using Firefox containers
+ method: "POST"
+ default_http_headers:
+ X-Content-Type-Options: nosniff
+ X-Download-Options: noopen
+ X-Robots-Tag: noindex, nofollow
+ Referrer-Policy: no-referrer
+
+redis:
+ # URL to connect redis database. Is overwritten by ${SEARXNG_REDIS_URL}.
+ # https://docs.searxng.org/admin/settings/settings_redis.html#settings-redis
+ url: false
+
+ui:
+ # Custom static path - leave it blank if you didn't change
+ static_path: ""
+ # Is overwritten by ${SEARXNG_STATIC_USE_HASH}.
+ static_use_hash: false
+ # Custom templates path - leave it blank if you didn't change
+ templates_path: ""
+ # query_in_title: When true, the result page's titles contains the query
+ # it decreases the privacy, since the browser can records the page titles.
+ query_in_title: false
+ # infinite_scroll: When true, automatically loads the next page when scrolling to bottom of the current page.
+ infinite_scroll: false
+ # ui theme
+ default_theme: simple
+ # center the results ?
+ center_alignment: false
+ # URL prefix of the internet archive, don't forget trailing slash (if needed).
+ # cache_url: "https://webcache.googleusercontent.com/search?q=cache:"
+ # Default interface locale - leave blank to detect from browser information or
+ # use codes from the 'locales' config section
+ default_locale: ""
+ # Open result links in a new tab by default
+ # results_on_new_tab: false
+ theme_args:
+ # style of simple theme: auto, light, dark
+ simple_style: auto
+ # Perform search immediately if a category selected.
+ # Disable to select multiple categories at once and start the search manually.
+ search_on_category_select: true
+ # Hotkeys: default or vim
+ hotkeys: default
+ # URL formatting: pretty, full or host
+ url_formatting: pretty
+
+# Lock arbitrary settings on the preferences page.
+#
+# preferences:
+# lock:
+# - categories
+# - language
+# - autocomplete
+# - favicon
+# - safesearch
+# - method
+# - doi_resolver
+# - locale
+# - theme
+# - results_on_new_tab
+# - infinite_scroll
+# - search_on_category_select
+# - method
+# - image_proxy
+# - query_in_title
+
+# searx supports result proxification using an external service:
+# https://github.com/asciimoo/morty uncomment below section if you have running
+# morty proxy the key is base64 encoded (keep the !!binary notation)
+# Note: since commit af77ec3, morty accepts a base64 encoded key.
+#
+# result_proxy:
+# url: http://127.0.0.1:3000/
+# # the key is a base64 encoded string, the YAML !!binary prefix is optional
+# key: !!binary "your_morty_proxy_key"
+# # [true|false] enable the "proxy" button next to each result
+# proxify_results: true
+
+# communication with search engines
+#
+outgoing:
+ # default timeout in seconds, can be override by engine
+ request_timeout: 3.0
+ # the maximum timeout in seconds
+ # max_request_timeout: 10.0
+ # suffix of searx_useragent, could contain information like an email address
+ # to the administrator
+ useragent_suffix: ""
+ # The maximum number of concurrent connections that may be established.
+ pool_connections: 100
+ # Allow the connection pool to maintain keep-alive connections below this
+ # point.
+ pool_maxsize: 20
+ # See https://www.python-httpx.org/http2/
+ enable_http2: true
+ # uncomment below section if you want to use a custom server certificate
+ # see https://www.python-httpx.org/advanced/#changing-the-verification-defaults
+ # and https://www.python-httpx.org/compatibility/#ssl-configuration
+ # verify: ~/.mitmproxy/mitmproxy-ca-cert.cer
+ #
+ # uncomment below section if you want to use a proxyq see: SOCKS proxies
+ # https://2.python-requests.org/en/latest/user/advanced/#proxies
+ # are also supported: see
+ # https://2.python-requests.org/en/latest/user/advanced/#socks
+ #
+ # proxies:
+ # all://:
+ # - http://proxy1:8080
+ # - http://proxy2:8080
+ #
+ # using_tor_proxy: true
+ #
+ # Extra seconds to add in order to account for the time taken by the proxy
+ #
+ # extra_proxy_timeout: 10
+ #
+ # uncomment below section only if you have more than one network interface
+ # which can be the source of outgoing search requests
+ #
+ # source_ips:
+ # - 1.1.1.1
+ # - 1.1.1.2
+ # - fe80::/126
+
+# External plugin configuration, for more details see
+# https://docs.searxng.org/admin/settings/settings_plugins.html
+#
+# plugins:
+# - mypackage.mymodule.MyPlugin
+# - mypackage.mymodule.MyOtherPlugin
+# - ...
+
+# Comment or un-comment plugin to activate / deactivate by default.
+# https://docs.searxng.org/admin/settings/settings_plugins.html
+#
+# enabled_plugins:
+# # these plugins are enabled if nothing is configured ..
+# - 'Basic Calculator'
+# - 'Hash plugin'
+# - 'Self Information'
+# - 'Tracker URL remover'
+# - 'Unit converter plugin'
+# - 'Ahmia blacklist' # activation depends on outgoing.using_tor_proxy
+# # these plugins are disabled if nothing is configured ..
+# - 'Hostnames plugin' # see 'hostnames' configuration below
+# - 'Open Access DOI rewrite'
+# - 'Tor check plugin'
+
+# Configuration of the "Hostnames plugin":
+#
+# hostnames:
+# replace:
+# '(.*\.)?youtube\.com$': 'invidious.example.com'
+# '(.*\.)?youtu\.be$': 'invidious.example.com'
+# '(.*\.)?reddit\.com$': 'teddit.example.com'
+# '(.*\.)?redd\.it$': 'teddit.example.com'
+# '(www\.)?twitter\.com$': 'nitter.example.com'
+# remove:
+# - '(.*\.)?facebook.com$'
+# low_priority:
+# - '(.*\.)?google(\..*)?$'
+# high_priority:
+# - '(.*\.)?wikipedia.org$'
+#
+# Alternatively you can use external files for configuring the "Hostnames plugin":
+#
+# hostnames:
+# replace: 'rewrite-hosts.yml'
+#
+# Content of 'rewrite-hosts.yml' (place the file in the same directory as 'settings.yml'):
+# '(.*\.)?youtube\.com$': 'invidious.example.com'
+# '(.*\.)?youtu\.be$': 'invidious.example.com'
+#
+
+checker:
+ # disable checker when in debug mode
+ off_when_debug: true
+
+ # use "scheduling: false" to disable scheduling
+ # scheduling: interval or int
+
+ # to activate the scheduler:
+ # * uncomment "scheduling" section
+ # * add "cache2 = name=searxngcache,items=2000,blocks=2000,blocksize=4096,bitmap=1"
+ # to your uwsgi.ini
+
+ # scheduling:
+ # start_after: [300, 1800] # delay to start the first run of the checker
+ # every: [86400, 90000] # how often the checker runs
+
+ # additional tests: only for the YAML anchors (see the engines section)
+ #
+ additional_tests:
+ rosebud: &test_rosebud
+ matrix:
+ query: rosebud
+ lang: en
+ result_container:
+ - not_empty
+ - ['one_title_contains', 'citizen kane']
+ test:
+ - unique_results
+
+ android: &test_android
+ matrix:
+ query: ['android']
+ lang: ['en', 'de', 'fr', 'zh-CN']
+ result_container:
+ - not_empty
+ - ['one_title_contains', 'google']
+ test:
+ - unique_results
+
+ # tests: only for the YAML anchors (see the engines section)
+ tests:
+ infobox: &tests_infobox
+ infobox:
+ matrix:
+ query: ["linux", "new york", "bbc"]
+ result_container:
+ - has_infobox
+
+categories_as_tabs:
+ general:
+ images:
+ videos:
+ news:
+ map:
+ music:
+ it:
+ science:
+ files:
+ social media:
+
+engines:
+ - name: 9gag
+ engine: 9gag
+ shortcut: 9g
+ disabled: true
+
+ - name: adobe stock
+ engine: adobe_stock
+ shortcut: asi
+ categories: ["images"]
+ # https://docs.searxng.org/dev/engines/online/adobe_stock.html
+ adobe_order: relevance
+ adobe_content_types: ["photo", "illustration", "zip_vector", "template", "3d", "image"]
+ timeout: 6
+ disabled: true
+
+ - name: adobe stock video
+ engine: adobe_stock
+ shortcut: asv
+ network: adobe stock
+ categories: ["videos"]
+ adobe_order: relevance
+ adobe_content_types: ["video"]
+ timeout: 6
+ disabled: true
+
+ - name: adobe stock audio
+ engine: adobe_stock
+ shortcut: asa
+ network: adobe stock
+ categories: ["music"]
+ adobe_order: relevance
+ adobe_content_types: ["audio"]
+ timeout: 6
+ disabled: true
+
+ - name: alexandria
+ engine: json_engine
+ shortcut: alx
+ categories: general
+ paging: true
+ search_url: https://api.alexandria.org/?a=1&q={query}&p={pageno}
+ results_query: results
+ title_query: title
+ url_query: url
+ content_query: snippet
+ timeout: 1.5
+ disabled: true
+ about:
+ website: https://alexandria.org/
+ official_api_documentation: https://github.com/alexandria-org/alexandria-api/raw/master/README.md
+ use_official_api: true
+ require_api_key: false
+ results: JSON
+
+ # - name: astrophysics data system
+ # engine: astrophysics_data_system
+ # sort: asc
+ # weight: 5
+ # categories: [science]
+ # api_key: your-new-key
+ # shortcut: ads
+
+ - name: alpine linux packages
+ engine: alpinelinux
+ disabled: true
+ shortcut: alp
+
+ - name: annas archive
+ engine: annas_archive
+ disabled: true
+ shortcut: aa
+
+ # - name: annas articles
+ # engine: annas_archive
+ # shortcut: aaa
+ # # https://docs.searxng.org/dev/engines/online/annas_archive.html
+ # aa_content: 'magazine' # book_fiction, book_unknown, book_nonfiction, book_comic
+ # aa_ext: 'pdf' # pdf, epub, ..
+ # aa_sort: oldest' # newest, oldest, largest, smallest
+
+ - name: apk mirror
+ engine: apkmirror
+ timeout: 4.0
+ shortcut: apkm
+ disabled: true
+
+ - name: apple app store
+ engine: apple_app_store
+ shortcut: aps
+ disabled: true
+
+ # Requires Tor
+ - name: ahmia
+ engine: ahmia
+ categories: onions
+ enable_http: true
+ shortcut: ah
+
+ - name: anaconda
+ engine: xpath
+ paging: true
+ first_page_num: 0
+ search_url: https://anaconda.org/search?q={query}&page={pageno}
+ results_xpath: //tbody/tr
+ url_xpath: ./td/h5/a[last()]/@href
+ title_xpath: ./td/h5
+ content_xpath: ./td[h5]/text()
+ categories: it
+ timeout: 6.0
+ shortcut: conda
+ disabled: true
+
+ - name: arch linux wiki
+ engine: archlinux
+ shortcut: al
+
+ - name: nixos wiki
+ engine: mediawiki
+ shortcut: nixw
+ base_url: https://wiki.nixos.org/
+ search_type: text
+ disabled: true
+ categories: [it, software wikis]
+
+ - name: artic
+ engine: artic
+ shortcut: arc
+ timeout: 4.0
+
+ - name: arxiv
+ engine: arxiv
+ shortcut: arx
+ timeout: 4.0
+
+ - name: ask
+ engine: ask
+ shortcut: ask
+ disabled: true
+
+ # tmp suspended: dh key too small
+ # - name: base
+ # engine: base
+ # shortcut: bs
+
+ - name: bandcamp
+ engine: bandcamp
+ shortcut: bc
+ categories: music
+
+ - name: wikipedia
+ engine: wikipedia
+ shortcut: wp
+ # add "list" to the array to get results in the results list
+ display_type: ["infobox"]
+ categories: [general]
+
+ - name: bilibili
+ engine: bilibili
+ shortcut: bil
+ disabled: true
+
+ - name: bing
+ engine: bing
+ shortcut: bi
+ disabled: true
+
+ - name: bing images
+ engine: bing_images
+ shortcut: bii
+
+ - name: bing news
+ engine: bing_news
+ shortcut: bin
+
+ - name: bing videos
+ engine: bing_videos
+ shortcut: biv
+
+ - name: bitbucket
+ engine: xpath
+ paging: true
+ search_url: https://bitbucket.org/repo/all/{pageno}?name={query}
+ url_xpath: //article[@class="repo-summary"]//a[@class="repo-link"]/@href
+ title_xpath: //article[@class="repo-summary"]//a[@class="repo-link"]
+ content_xpath: //article[@class="repo-summary"]/p
+ categories: [it, repos]
+ timeout: 4.0
+ disabled: true
+ shortcut: bb
+ about:
+ website: https://bitbucket.org/
+ wikidata_id: Q2493781
+ official_api_documentation: https://developer.atlassian.com/bitbucket
+ use_official_api: false
+ require_api_key: false
+ results: HTML
+
+ - name: bpb
+ engine: bpb
+ shortcut: bpb
+ disabled: true
+
+ - name: btdigg
+ engine: btdigg
+ shortcut: bt
+ disabled: true
+
+ - name: openverse
+ engine: openverse
+ categories: images
+ shortcut: opv
+
+ - name: media.ccc.de
+ engine: ccc_media
+ shortcut: c3tv
+ # We don't set language: de here because media.ccc.de is not just
+ # for a German audience. It contains many English videos and many
+ # German videos have English subtitles.
+ disabled: true
+
+ - name: chefkoch
+ engine: chefkoch
+ shortcut: chef
+ # to show premium or plus results too:
+ # skip_premium: false
+
+ - name: cloudflareai
+ engine: cloudflareai
+ shortcut: cfai
+ # get api token and accont id from https://developers.cloudflare.com/workers-ai/get-started/rest-api/
+ cf_account_id: 'your_cf_accout_id'
+ cf_ai_api: 'your_cf_api'
+ # create your ai gateway by https://developers.cloudflare.com/ai-gateway/get-started/creating-gateway/
+ cf_ai_gateway: 'your_cf_ai_gateway_name'
+ # find the model name from https://developers.cloudflare.com/workers-ai/models/#text-generation
+ cf_ai_model: 'ai_model_name'
+ # custom your preferences
+ # cf_ai_model_display_name: 'Cloudflare AI'
+ # cf_ai_model_assistant: 'prompts_for_assistant_role'
+ # cf_ai_model_system: 'prompts_for_system_role'
+ timeout: 30
+ disabled: true
+
+ # - name: core.ac.uk
+ # engine: core
+ # categories: science
+ # shortcut: cor
+ # # get your API key from: https://core.ac.uk/api-keys/register/
+ # api_key: 'unset'
+
+ - name: cppreference
+ engine: cppreference
+ shortcut: cpp
+ paging: false
+ disabled: true
+
+ - name: crossref
+ engine: crossref
+ shortcut: cr
+ timeout: 30
+ disabled: true
+
+ - name: crowdview
+ engine: json_engine
+ shortcut: cv
+ categories: general
+ paging: false
+ search_url: https://crowdview-next-js.onrender.com/api/search-v3?query={query}
+ results_query: results
+ url_query: link
+ title_query: title
+ content_query: snippet
+ title_html_to_text: true
+ content_html_to_text: true
+ disabled: true
+ about:
+ website: https://crowdview.ai/
+
+ - name: yep
+ engine: yep
+ shortcut: yep
+ categories: general
+ search_type: web
+ timeout: 5
+ disabled: true
+
+ - name: yep images
+ engine: yep
+ shortcut: yepi
+ categories: images
+ search_type: images
+ disabled: true
+
+ - name: yep news
+ engine: yep
+ shortcut: yepn
+ categories: news
+ search_type: news
+ disabled: true
+
+ - name: curlie
+ engine: xpath
+ shortcut: cl
+ categories: general
+ disabled: true
+ paging: true
+ lang_all: ''
+ search_url: https://curlie.org/search?q={query}&lang={lang}&start={pageno}&stime=92452189
+ page_size: 20
+ results_xpath: //div[@id="site-list-content"]/div[@class="site-item"]
+ url_xpath: ./div[@class="title-and-desc"]/a/@href
+ title_xpath: ./div[@class="title-and-desc"]/a/div
+ content_xpath: ./div[@class="title-and-desc"]/div[@class="site-descr"]
+ about:
+ website: https://curlie.org/
+ wikidata_id: Q60715723
+ use_official_api: false
+ require_api_key: false
+ results: HTML
+
+ - name: currency
+ engine: currency_convert
+ categories: general
+ shortcut: cc
+
+ - name: deezer
+ engine: deezer
+ shortcut: dz
+ disabled: true
+
+ - name: destatis
+ engine: destatis
+ shortcut: destat
+ disabled: true
+
+ - name: deviantart
+ engine: deviantart
+ shortcut: da
+ timeout: 3.0
+
+ - name: ddg definitions
+ engine: duckduckgo_definitions
+ shortcut: ddd
+ weight: 2
+ disabled: true
+ tests: *tests_infobox
+
+ # cloudflare protected
+ # - name: digbt
+ # engine: digbt
+ # shortcut: dbt
+ # timeout: 6.0
+ # disabled: true
+
+ - name: docker hub
+ engine: docker_hub
+ shortcut: dh
+ categories: [it, packages]
+
+ - name: encyclosearch
+ engine: json_engine
+ shortcut: es
+ categories: general
+ paging: true
+ search_url: https://encyclosearch.org/encyclosphere/search?q={query}&page={pageno}&resultsPerPage=15
+ results_query: Results
+ url_query: SourceURL
+ title_query: Title
+ content_query: Description
+ disabled: true
+ about:
+ website: https://encyclosearch.org
+ official_api_documentation: https://encyclosearch.org/docs/#/rest-api
+ use_official_api: true
+ require_api_key: false
+ results: JSON
+
+ - name: erowid
+ engine: xpath
+ paging: true
+ first_page_num: 0
+ page_size: 30
+ search_url: https://www.erowid.org/search.php?q={query}&s={pageno}
+ url_xpath: //dl[@class="results-list"]/dt[@class="result-title"]/a/@href
+ title_xpath: //dl[@class="results-list"]/dt[@class="result-title"]/a/text()
+ content_xpath: //dl[@class="results-list"]/dd[@class="result-details"]
+ categories: []
+ shortcut: ew
+ disabled: true
+ about:
+ website: https://www.erowid.org/
+ wikidata_id: Q1430691
+ official_api_documentation:
+ use_official_api: false
+ require_api_key: false
+ results: HTML
+
+ # - name: elasticsearch
+ # shortcut: es
+ # engine: elasticsearch
+ # base_url: http://localhost:9200
+ # username: elastic
+ # password: changeme
+ # index: my-index
+ # # available options: match, simple_query_string, term, terms, custom
+ # query_type: match
+ # # if query_type is set to custom, provide your query here
+ # #custom_query_json: {"query":{"match_all": {}}}
+ # #show_metadata: false
+ # disabled: true
+
+ - name: wikidata
+ engine: wikidata
+ shortcut: wd
+ timeout: 3.0
+ weight: 2
+ # add "list" to the array to get results in the results list
+ display_type: ["infobox"]
+ tests: *tests_infobox
+ categories: [general]
+
+ - name: duckduckgo
+ engine: duckduckgo
+ shortcut: ddg
+
+ - name: duckduckgo images
+ engine: duckduckgo_extra
+ categories: [images, web]
+ ddg_category: images
+ shortcut: ddi
+ disabled: true
+
+ - name: duckduckgo videos
+ engine: duckduckgo_extra
+ categories: [videos, web]
+ ddg_category: videos
+ shortcut: ddv
+ disabled: true
+
+ - name: duckduckgo news
+ engine: duckduckgo_extra
+ categories: [news, web]
+ ddg_category: news
+ shortcut: ddn
+ disabled: true
+
+ - name: duckduckgo weather
+ engine: duckduckgo_weather
+ shortcut: ddw
+ disabled: true
+
+ - name: apple maps
+ engine: apple_maps
+ shortcut: apm
+ disabled: true
+ timeout: 5.0
+
+ - name: emojipedia
+ engine: emojipedia
+ timeout: 4.0
+ shortcut: em
+ disabled: true
+
+ - name: tineye
+ engine: tineye
+ shortcut: tin
+ timeout: 9.0
+ disabled: true
+
+ - name: etymonline
+ engine: xpath
+ paging: true
+ search_url: https://etymonline.com/search?page={pageno}&q={query}
+ url_xpath: //a[contains(@class, "word__name--")]/@href
+ title_xpath: //a[contains(@class, "word__name--")]
+ content_xpath: //section[contains(@class, "word__defination")]
+ first_page_num: 1
+ shortcut: et
+ categories: [dictionaries]
+ about:
+ website: https://www.etymonline.com/
+ wikidata_id: Q1188617
+ official_api_documentation:
+ use_official_api: false
+ require_api_key: false
+ results: HTML
+
+ # - name: ebay
+ # engine: ebay
+ # shortcut: eb
+ # base_url: 'https://www.ebay.com'
+ # disabled: true
+ # timeout: 5
+
+ - name: 1x
+ engine: www1x
+ shortcut: 1x
+ timeout: 3.0
+ disabled: true
+
+ - name: fdroid
+ engine: fdroid
+ shortcut: fd
+ disabled: true
+
+ - name: findthatmeme
+ engine: findthatmeme
+ shortcut: ftm
+ disabled: true
+
+ - name: flickr
+ categories: images
+ shortcut: fl
+ # You can use the engine using the official stable API, but you need an API
+ # key, see: https://www.flickr.com/services/apps/create/
+ # engine: flickr
+ # api_key: 'apikey' # required!
+ # Or you can use the html non-stable engine, activated by default
+ engine: flickr_noapi
+
+ - name: free software directory
+ engine: mediawiki
+ shortcut: fsd
+ categories: [it, software wikis]
+ base_url: https://directory.fsf.org/
+ search_type: title
+ timeout: 5.0
+ disabled: true
+ about:
+ website: https://directory.fsf.org/
+ wikidata_id: Q2470288
+
+ # - name: freesound
+ # engine: freesound
+ # shortcut: fnd
+ # disabled: true
+ # timeout: 15.0
+ # API key required, see: https://freesound.org/docs/api/overview.html
+ # api_key: MyAPIkey
+
+ - name: frinkiac
+ engine: frinkiac
+ shortcut: frk
+ disabled: true
+
+ - name: fyyd
+ engine: fyyd
+ shortcut: fy
+ timeout: 8.0
+ disabled: true
+
+ - name: geizhals
+ engine: geizhals
+ shortcut: geiz
+ disabled: true
+
+ - name: genius
+ engine: genius
+ shortcut: gen
+
+ - name: gentoo
+ engine: mediawiki
+ shortcut: ge
+ categories: ["it", "software wikis"]
+ base_url: "https://wiki.gentoo.org/"
+ api_path: "api.php"
+ search_type: text
+ timeout: 10
+
+ - name: gitlab
+ engine: gitlab
+ base_url: https://gitlab.com
+ shortcut: gl
+ disabled: true
+ about:
+ website: https://gitlab.com/
+ wikidata_id: Q16639197
+
+ # - name: gnome
+ # engine: gitlab
+ # base_url: https://gitlab.gnome.org
+ # shortcut: gn
+ # about:
+ # website: https://gitlab.gnome.org
+ # wikidata_id: Q44316
+
+ - name: github
+ engine: github
+ shortcut: gh
+
+ - name: codeberg
+ # https://docs.searxng.org/dev/engines/online/gitea.html
+ engine: gitea
+ base_url: https://codeberg.org
+ shortcut: cb
+ disabled: true
+
+ - name: gitea.com
+ engine: gitea
+ base_url: https://gitea.com
+ shortcut: gitea
+ disabled: true
+
+ - name: goodreads
+ engine: goodreads
+ shortcut: good
+ timeout: 4.0
+ disabled: true
+
+ - name: google
+ engine: google
+ shortcut: go
+ # additional_tests:
+ # android: *test_android
+
+ - name: google images
+ engine: google_images
+ shortcut: goi
+ # additional_tests:
+ # android: *test_android
+ # dali:
+ # matrix:
+ # query: ['Dali Christ']
+ # lang: ['en', 'de', 'fr', 'zh-CN']
+ # result_container:
+ # - ['one_title_contains', 'Salvador']
+
+ - name: google news
+ engine: google_news
+ shortcut: gon
+ # additional_tests:
+ # android: *test_android
+
+ - name: google videos
+ engine: google_videos
+ shortcut: gov
+ # additional_tests:
+ # android: *test_android
+
+ - name: google scholar
+ engine: google_scholar
+ shortcut: gos
+
+ - name: google play apps
+ engine: google_play
+ categories: [files, apps]
+ shortcut: gpa
+ play_categ: apps
+ disabled: true
+
+ - name: google play movies
+ engine: google_play
+ categories: videos
+ shortcut: gpm
+ play_categ: movies
+ disabled: true
+
+ - name: material icons
+ engine: material_icons
+ categories: images
+ shortcut: mi
+ disabled: true
+
+ - name: habrahabr
+ engine: xpath
+ paging: true
+ search_url: https://habr.com/en/search/page{pageno}/?q={query}
+ results_xpath: //article[contains(@class, "tm-articles-list__item")]
+ url_xpath: .//a[@class="tm-title__link"]/@href
+ title_xpath: .//a[@class="tm-title__link"]
+ content_xpath: .//div[contains(@class, "article-formatted-body")]
+ categories: it
+ timeout: 4.0
+ disabled: true
+ shortcut: habr
+ about:
+ website: https://habr.com/
+ wikidata_id: Q4494434
+ official_api_documentation: https://habr.com/en/docs/help/api/
+ use_official_api: false
+ require_api_key: false
+ results: HTML
+
+ - name: hackernews
+ engine: hackernews
+ shortcut: hn
+ disabled: true
+
+ - name: hex
+ engine: hex
+ shortcut: hex
+ disabled: true
+ # Valid values: name inserted_at updated_at total_downloads recent_downloads
+ sort_criteria: "recent_downloads"
+ page_size: 10
+
+ - name: crates.io
+ engine: crates
+ shortcut: crates
+ disabled: true
+ timeout: 6.0
+
+ - name: hoogle
+ engine: xpath
+ search_url: https://hoogle.haskell.org/?hoogle={query}
+ results_xpath: '//div[@class="result"]'
+ title_xpath: './/div[@class="ans"]//a'
+ url_xpath: './/div[@class="ans"]//a/@href'
+ content_xpath: './/div[@class="from"]'
+ page_size: 20
+ categories: [it, packages]
+ shortcut: ho
+ about:
+ website: https://hoogle.haskell.org/
+ wikidata_id: Q34010
+ official_api_documentation: https://hackage.haskell.org/api
+ use_official_api: false
+ require_api_key: false
+ results: JSON
+
+ - name: imdb
+ engine: imdb
+ shortcut: imdb
+ timeout: 6.0
+ disabled: true
+
+ - name: imgur
+ engine: imgur
+ shortcut: img
+ disabled: true
+
+ - name: ina
+ engine: ina
+ shortcut: in
+ timeout: 6.0
+ disabled: true
+
+ - name: invidious
+ engine: invidious
+ # Instanes will be selected randomly, see https://api.invidious.io/ for
+ # instances that are stable (good uptime) and close to you.
+ base_url:
+ - https://invidious.adminforge.de
+ - https://inv.nadeko.net
+ shortcut: iv
+ timeout: 3.0
+ disabled: true
+
+ - name: ipernity
+ engine: ipernity
+ shortcut: ip
+ disabled: true
+
+ - name: jisho
+ engine: jisho
+ shortcut: js
+ timeout: 3.0
+ disabled: true
+
+ - name: kickass
+ engine: kickass
+ base_url:
+ - https://kickasstorrents.to
+ - https://kickasstorrents.cr
+ - https://kickasstorrent.cr
+ - https://kickass.sx
+ - https://kat.am
+ shortcut: kc
+ timeout: 4.0
+
+ - name: lemmy communities
+ engine: lemmy
+ lemmy_type: Communities
+ shortcut: leco
+
+ - name: lemmy users
+ engine: lemmy
+ network: lemmy communities
+ lemmy_type: Users
+ shortcut: leus
+
+ - name: lemmy posts
+ engine: lemmy
+ network: lemmy communities
+ lemmy_type: Posts
+ shortcut: lepo
+
+ - name: lemmy comments
+ engine: lemmy
+ network: lemmy communities
+ lemmy_type: Comments
+ shortcut: lecom
+
+ - name: library genesis
+ engine: xpath
+ # search_url: https://libgen.is/search.php?req={query}
+ search_url: https://libgen.rs/search.php?req={query}
+ url_xpath: //a[contains(@href,"book/index.php?md5")]/@href
+ title_xpath: //a[contains(@href,"book/")]/text()[1]
+ content_xpath: //td/a[1][contains(@href,"=author")]/text()
+ categories: files
+ timeout: 7.0
+ disabled: true
+ shortcut: lg
+ about:
+ website: https://libgen.fun/
+ wikidata_id: Q22017206
+ official_api_documentation:
+ use_official_api: false
+ require_api_key: false
+ results: HTML
+
+ - name: z-library
+ engine: zlibrary
+ shortcut: zlib
+ categories: files
+ timeout: 7.0
+
+ - name: library of congress
+ engine: loc
+ shortcut: loc
+ categories: images
+
+ - name: libretranslate
+ engine: libretranslate
+ # https://github.com/LibreTranslate/LibreTranslate?tab=readme-ov-file#mirrors
+ base_url:
+ - https://libretranslate.com/translate
+ # api_key: abc123
+ shortcut: lt
+ disabled: true
+
+ - name: lingva
+ engine: lingva
+ shortcut: lv
+ # set lingva instance in url, by default it will use the official instance
+ # url: https://lingva.thedaviddelta.com
+
+ - name: lobste.rs
+ engine: xpath
+ search_url: https://lobste.rs/search?q={query}&what=stories&order=relevance
+ results_xpath: //li[contains(@class, "story")]
+ url_xpath: .//a[@class="u-url"]/@href
+ title_xpath: .//a[@class="u-url"]
+ content_xpath: .//a[@class="domain"]
+ categories: it
+ shortcut: lo
+ timeout: 5.0
+ disabled: true
+ about:
+ website: https://lobste.rs/
+ wikidata_id: Q60762874
+ official_api_documentation:
+ use_official_api: false
+ require_api_key: false
+ results: HTML
+
+ - name: mastodon users
+ engine: mastodon
+ mastodon_type: accounts
+ base_url: https://mastodon.social
+ shortcut: mau
+
+ - name: mastodon hashtags
+ engine: mastodon
+ mastodon_type: hashtags
+ base_url: https://mastodon.social
+ shortcut: mah
+
+ # - name: matrixrooms
+ # engine: mrs
+ # # https://docs.searxng.org/dev/engines/online/mrs.html
+ # # base_url: https://mrs-api-host
+ # shortcut: mtrx
+ # disabled: true
+
+ - name: mdn
+ shortcut: mdn
+ engine: json_engine
+ categories: [it]
+ paging: true
+ search_url: https://developer.mozilla.org/api/v1/search?q={query}&page={pageno}
+ results_query: documents
+ url_query: mdn_url
+ url_prefix: https://developer.mozilla.org
+ title_query: title
+ content_query: summary
+ about:
+ website: https://developer.mozilla.org
+ wikidata_id: Q3273508
+ official_api_documentation: null
+ use_official_api: false
+ require_api_key: false
+ results: JSON
+
+ - name: metacpan
+ engine: metacpan
+ shortcut: cpan
+ disabled: true
+ number_of_results: 20
+
+ # - name: meilisearch
+ # engine: meilisearch
+ # shortcut: mes
+ # enable_http: true
+ # base_url: http://localhost:7700
+ # index: my-index
+
+ - name: mixcloud
+ engine: mixcloud
+ shortcut: mc
+
+ # MongoDB engine
+ # Required dependency: pymongo
+ # - name: mymongo
+ # engine: mongodb
+ # shortcut: md
+ # exact_match_only: false
+ # host: '127.0.0.1'
+ # port: 27017
+ # enable_http: true
+ # results_per_page: 20
+ # database: 'business'
+ # collection: 'reviews' # name of the db collection
+ # key: 'name' # key in the collection to search for
+
+ - name: mozhi
+ engine: mozhi
+ base_url:
+ - https://mozhi.aryak.me
+ - https://translate.bus-hit.me
+ - https://nyc1.mz.ggtyler.dev
+ # mozhi_engine: google - see https://mozhi.aryak.me for supported engines
+ timeout: 4.0
+ shortcut: mz
+ disabled: true
+
+ - name: mwmbl
+ engine: mwmbl
+ # api_url: https://api.mwmbl.org
+ shortcut: mwm
+ disabled: true
+
+ - name: npm
+ engine: npm
+ shortcut: npm
+ timeout: 5.0
+ disabled: true
+
+ - name: nyaa
+ engine: nyaa
+ shortcut: nt
+ disabled: true
+
+ - name: mankier
+ engine: json_engine
+ search_url: https://www.mankier.com/api/v2/mans/?q={query}
+ results_query: results
+ url_query: url
+ title_query: name
+ content_query: description
+ categories: it
+ shortcut: man
+ about:
+ website: https://www.mankier.com/
+ official_api_documentation: https://www.mankier.com/api
+ use_official_api: true
+ require_api_key: false
+ results: JSON
+
+ # read https://docs.searxng.org/dev/engines/online/mullvad_leta.html
+ # - name: mullvadleta
+ # engine: mullvad_leta
+ # leta_engine: google # choose one of the following: google, brave
+ # use_cache: true # Only 100 non-cache searches per day, suggested only for private instances
+ # search_url: https://leta.mullvad.net
+ # categories: [general, web]
+ # shortcut: ml
+
+ - name: odysee
+ engine: odysee
+ shortcut: od
+ disabled: true
+
+ - name: openairedatasets
+ engine: json_engine
+ paging: true
+ search_url: https://api.openaire.eu/search/datasets?format=json&page={pageno}&size=10&title={query}
+ results_query: response/results/result
+ url_query: metadata/oaf:entity/oaf:result/children/instance/webresource/url/$
+ title_query: metadata/oaf:entity/oaf:result/title/$
+ content_query: metadata/oaf:entity/oaf:result/description/$
+ content_html_to_text: true
+ categories: "science"
+ shortcut: oad
+ timeout: 5.0
+ about:
+ website: https://www.openaire.eu/
+ wikidata_id: Q25106053
+ official_api_documentation: https://api.openaire.eu/
+ use_official_api: false
+ require_api_key: false
+ results: JSON
+
+ - name: openairepublications
+ engine: json_engine
+ paging: true
+ search_url: https://api.openaire.eu/search/publications?format=json&page={pageno}&size=10&title={query}
+ results_query: response/results/result
+ url_query: metadata/oaf:entity/oaf:result/children/instance/webresource/url/$
+ title_query: metadata/oaf:entity/oaf:result/title/$
+ content_query: metadata/oaf:entity/oaf:result/description/$
+ content_html_to_text: true
+ categories: science
+ shortcut: oap
+ timeout: 5.0
+ about:
+ website: https://www.openaire.eu/
+ wikidata_id: Q25106053
+ official_api_documentation: https://api.openaire.eu/
+ use_official_api: false
+ require_api_key: false
+ results: JSON
+
+ - name: openlibrary
+ engine: openlibrary
+ shortcut: ol
+ timeout: 5
+ disabled: true
+
+ - name: openmeteo
+ engine: open_meteo
+ shortcut: om
+ disabled: true
+
+ # - name: opensemanticsearch
+ # engine: opensemantic
+ # shortcut: oss
+ # base_url: 'http://localhost:8983/solr/opensemanticsearch/'
+
+ - name: openstreetmap
+ engine: openstreetmap
+ shortcut: osm
+
+ - name: openrepos
+ engine: xpath
+ paging: true
+ search_url: https://openrepos.net/search/node/{query}?page={pageno}
+ url_xpath: //li[@class="search-result"]//h3[@class="title"]/a/@href
+ title_xpath: //li[@class="search-result"]//h3[@class="title"]/a
+ content_xpath: //li[@class="search-result"]//div[@class="search-snippet-info"]//p[@class="search-snippet"]
+ categories: files
+ timeout: 4.0
+ disabled: true
+ shortcut: or
+ about:
+ website: https://openrepos.net/
+ wikidata_id:
+ official_api_documentation:
+ use_official_api: false
+ require_api_key: false
+ results: HTML
+
+ - name: packagist
+ engine: json_engine
+ paging: true
+ search_url: https://packagist.org/search.json?q={query}&page={pageno}
+ results_query: results
+ url_query: url
+ title_query: name
+ content_query: description
+ categories: [it, packages]
+ disabled: true
+ timeout: 5.0
+ shortcut: pack
+ about:
+ website: https://packagist.org
+ wikidata_id: Q108311377
+ official_api_documentation: https://packagist.org/apidoc
+ use_official_api: true
+ require_api_key: false
+ results: JSON
+
+ - name: pdbe
+ engine: pdbe
+ shortcut: pdb
+ # Hide obsolete PDB entries. Default is not to hide obsolete structures
+ # hide_obsolete: false
+
+ - name: photon
+ engine: photon
+ shortcut: ph
+
+ - name: pinterest
+ engine: pinterest
+ shortcut: pin
+
+ - name: piped
+ engine: piped
+ shortcut: ppd
+ categories: videos
+ piped_filter: videos
+ timeout: 3.0
+
+ # URL to use as link and for embeds
+ frontend_url: https://srv.piped.video
+ # Instance will be selected randomly, for more see https://piped-instances.kavin.rocks/
+ backend_url:
+ - https://pipedapi.adminforge.de
+ - https://pipedapi.nosebs.ru
+ - https://pipedapi.ducks.party
+ - https://pipedapi.reallyaweso.me
+ - https://api.piped.private.coffee
+ - https://pipedapi.darkness.services
+
+ - name: piped.music
+ engine: piped
+ network: piped
+ shortcut: ppdm
+ categories: music
+ piped_filter: music_songs
+ timeout: 3.0
+
+ - name: piratebay
+ engine: piratebay
+ shortcut: tpb
+ # You may need to change this URL to a proxy if piratebay is blocked in your
+ # country
+ url: https://thepiratebay.org/
+ timeout: 3.0
+
+ - name: pixiv
+ shortcut: pv
+ engine: pixiv
+ disabled: true
+ inactive: true
+ pixiv_image_proxies:
+ - https://pximg.example.org
+ # A proxy is required to load the images. Hosting an image proxy server
+ # for Pixiv:
+ # --> https://pixivfe.pages.dev/hosting-image-proxy-server/
+ # Proxies from public instances. Ask the public instances owners if they
+ # agree to receive traffic from SearXNG!
+ # --> https://codeberg.org/VnPower/PixivFE#instances
+ # --> https://github.com/searxng/searxng/pull/3192#issuecomment-1941095047
+ # image proxy of https://pixiv.cat
+ # - https://i.pixiv.cat
+ # image proxy of https://www.pixiv.pics
+ # - https://pximg.cocomi.eu.org
+ # image proxy of https://pixivfe.exozy.me
+ # - https://pximg.exozy.me
+ # image proxy of https://pixivfe.ducks.party
+ # - https://pixiv.ducks.party
+ # image proxy of https://pixiv.perennialte.ch
+ # - https://pximg.perennialte.ch
+
+ - name: podcastindex
+ engine: podcastindex
+ shortcut: podcast
+
+ # Required dependency: psychopg2
+ # - name: postgresql
+ # engine: postgresql
+ # database: postgres
+ # username: postgres
+ # password: postgres
+ # limit: 10
+ # query_str: 'SELECT * from my_table WHERE my_column = %(query)s'
+ # shortcut : psql
+
+ - name: presearch
+ engine: presearch
+ search_type: search
+ categories: [general, web]
+ shortcut: ps
+ timeout: 4.0
+ disabled: true
+
+ - name: presearch images
+ engine: presearch
+ network: presearch
+ search_type: images
+ categories: [images, web]
+ timeout: 4.0
+ shortcut: psimg
+ disabled: true
+
+ - name: presearch videos
+ engine: presearch
+ network: presearch
+ search_type: videos
+ categories: [general, web]
+ timeout: 4.0
+ shortcut: psvid
+ disabled: true
+
+ - name: presearch news
+ engine: presearch
+ network: presearch
+ search_type: news
+ categories: [news, web]
+ timeout: 4.0
+ shortcut: psnews
+ disabled: true
+
+ - name: pub.dev
+ engine: xpath
+ shortcut: pd
+ search_url: https://pub.dev/packages?q={query}&page={pageno}
+ paging: true
+ results_xpath: //div[contains(@class,"packages-item")]
+ url_xpath: ./div/h3/a/@href
+ title_xpath: ./div/h3/a
+ content_xpath: ./div/div/div[contains(@class,"packages-description")]/span
+ categories: [packages, it]
+ timeout: 3.0
+ disabled: true
+ first_page_num: 1
+ about:
+ website: https://pub.dev/
+ official_api_documentation: https://pub.dev/help/api
+ use_official_api: false
+ require_api_key: false
+ results: HTML
+
+ - name: public domain image archive
+ engine: public_domain_image_archive
+ shortcut: pdia
+
+ - name: pubmed
+ engine: pubmed
+ shortcut: pub
+ timeout: 3.0
+
+ - name: pypi
+ shortcut: pypi
+ engine: pypi
+
+ - name: qwant
+ qwant_categ: web
+ engine: qwant
+ shortcut: qw
+ categories: [general, web]
+ additional_tests:
+ rosebud: *test_rosebud
+
+ - name: qwant news
+ qwant_categ: news
+ engine: qwant
+ shortcut: qwn
+ categories: news
+ network: qwant
+
+ - name: qwant images
+ qwant_categ: images
+ engine: qwant
+ shortcut: qwi
+ categories: [images, web]
+ network: qwant
+
+ - name: qwant videos
+ qwant_categ: videos
+ engine: qwant
+ shortcut: qwv
+ categories: [videos, web]
+ network: qwant
+
+ # - name: library
+ # engine: recoll
+ # shortcut: lib
+ # base_url: 'https://recoll.example.org/'
+ # search_dir: ''
+ # mount_prefix: /export
+ # dl_prefix: 'https://download.example.org'
+ # timeout: 30.0
+ # categories: files
+ # disabled: true
+
+ # - name: recoll library reference
+ # engine: recoll
+ # base_url: 'https://recoll.example.org/'
+ # search_dir: reference
+ # mount_prefix: /export
+ # dl_prefix: 'https://download.example.org'
+ # shortcut: libr
+ # timeout: 30.0
+ # categories: files
+ # disabled: true
+
+ - name: radio browser
+ engine: radio_browser
+ shortcut: rb
+
+ - name: reddit
+ engine: reddit
+ shortcut: re
+ page_size: 25
+ disabled: true
+
+ - name: right dao
+ engine: xpath
+ paging: true
+ page_size: 12
+ search_url: https://rightdao.com/search?q={query}&start={pageno}
+ results_xpath: //div[contains(@class, "description")]
+ url_xpath: ../div[contains(@class, "title")]/a/@href
+ title_xpath: ../div[contains(@class, "title")]
+ content_xpath: .
+ categories: general
+ shortcut: rd
+ disabled: true
+ about:
+ website: https://rightdao.com/
+ use_official_api: false
+ require_api_key: false
+ results: HTML
+
+ - name: rottentomatoes
+ engine: rottentomatoes
+ shortcut: rt
+ disabled: true
+
+ # Required dependency: redis
+ # - name: myredis
+ # shortcut : rds
+ # engine: redis_server
+ # exact_match_only: false
+ # host: '127.0.0.1'
+ # port: 6379
+ # enable_http: true
+ # password: ''
+ # db: 0
+
+ # tmp suspended: bad certificate
+ # - name: scanr structures
+ # shortcut: scs
+ # engine: scanr_structures
+ # disabled: true
+
+ - name: searchmysite
+ engine: xpath
+ shortcut: sms
+ categories: general
+ paging: true
+ search_url: https://searchmysite.net/search/?q={query}&page={pageno}
+ results_xpath: //div[contains(@class,'search-result')]
+ url_xpath: .//a[contains(@class,'result-link')]/@href
+ title_xpath: .//span[contains(@class,'result-title-txt')]/text()
+ content_xpath: ./p[@id='result-hightlight']
+ disabled: true
+ about:
+ website: https://searchmysite.net
+
+ - name: sepiasearch
+ engine: sepiasearch
+ shortcut: sep
+
+ - name: soundcloud
+ engine: soundcloud
+ shortcut: sc
+
+ - name: stackoverflow
+ engine: stackexchange
+ shortcut: st
+ api_site: 'stackoverflow'
+ categories: [it, q&a]
+
+ - name: askubuntu
+ engine: stackexchange
+ shortcut: ubuntu
+ api_site: 'askubuntu'
+ categories: [it, q&a]
+
+ - name: superuser
+ engine: stackexchange
+ shortcut: su
+ api_site: 'superuser'
+ categories: [it, q&a]
+
+ - name: discuss.python
+ engine: discourse
+ shortcut: dpy
+ base_url: 'https://discuss.python.org'
+ categories: [it, q&a]
+ disabled: true
+
+ - name: caddy.community
+ engine: discourse
+ shortcut: caddy
+ base_url: 'https://caddy.community'
+ categories: [it, q&a]
+ disabled: true
+
+ - name: pi-hole.community
+ engine: discourse
+ shortcut: pi
+ categories: [it, q&a]
+ base_url: 'https://discourse.pi-hole.net'
+ disabled: true
+
+ - name: searchcode code
+ engine: searchcode_code
+ shortcut: scc
+ disabled: true
+
+ # - name: searx
+ # engine: searx_engine
+ # shortcut: se
+ # instance_urls :
+ # - http://127.0.0.1:8888/
+ # - ...
+ # disabled: true
+
+ - name: semantic scholar
+ engine: semantic_scholar
+ disabled: true
+ shortcut: se
+
+ # Spotify needs API credentials
+ # - name: spotify
+ # engine: spotify
+ # shortcut: stf
+ # api_client_id: *******
+ # api_client_secret: *******
+
+ # - name: solr
+ # engine: solr
+ # shortcut: slr
+ # base_url: http://localhost:8983
+ # collection: collection_name
+ # sort: '' # sorting: asc or desc
+ # field_list: '' # comma separated list of field names to display on the UI
+ # default_fields: '' # default field to query
+ # query_fields: '' # query fields
+ # enable_http: true
+
+ # - name: springer nature
+ # engine: springer
+ # # get your API key from: https://dev.springernature.com/signup
+ # # working API key, for test & debug: "a69685087d07eca9f13db62f65b8f601"
+ # api_key: 'unset'
+ # shortcut: springer
+ # timeout: 15.0
+
+ - name: startpage
+ engine: startpage
+ shortcut: sp
+ startpage_categ: web
+ categories: [general, web]
+ additional_tests:
+ rosebud: *test_rosebud
+
+ - name: startpage news
+ engine: startpage
+ startpage_categ: news
+ categories: [news, web]
+ shortcut: spn
+
+ - name: startpage images
+ engine: startpage
+ startpage_categ: images
+ categories: [images, web]
+ shortcut: spi
+
+ - name: tokyotoshokan
+ engine: tokyotoshokan
+ shortcut: tt
+ timeout: 6.0
+ disabled: true
+
+ - name: solidtorrents
+ engine: solidtorrents
+ shortcut: solid
+ timeout: 4.0
+ base_url:
+ - https://solidtorrents.to
+ - https://bitsearch.to
+
+ # For this demo of the sqlite engine download:
+ # https://liste.mediathekview.de/filmliste-v2.db.bz2
+ # and unpack into searx/data/filmliste-v2.db
+ # Query to test: "!demo concert"
+ #
+ # - name: demo
+ # engine: sqlite
+ # shortcut: demo
+ # categories: general
+ # result_template: default.html
+ # database: searx/data/filmliste-v2.db
+ # query_str: >-
+ # SELECT title || ' (' || time(duration, 'unixepoch') || ')' AS title,
+ # COALESCE( NULLIF(url_video_hd,''), NULLIF(url_video_sd,''), url_video) AS url,
+ # description AS content
+ # FROM film
+ # WHERE title LIKE :wildcard OR description LIKE :wildcard
+ # ORDER BY duration DESC
+
+ - name: tagesschau
+ engine: tagesschau
+ # when set to false, display URLs from Tagesschau, and not the actual source
+ # (e.g. NDR, WDR, SWR, HR, ...)
+ use_source_url: true
+ shortcut: ts
+ disabled: true
+
+ - name: tmdb
+ engine: xpath
+ paging: true
+ categories: movies
+ search_url: https://www.themoviedb.org/search?page={pageno}&query={query}
+ results_xpath: //div[contains(@class,"movie") or contains(@class,"tv")]//div[contains(@class,"card")]
+ url_xpath: .//div[contains(@class,"poster")]/a/@href
+ thumbnail_xpath: .//img/@src
+ title_xpath: .//div[contains(@class,"title")]//h2
+ content_xpath: .//div[contains(@class,"overview")]
+ shortcut: tm
+ disabled: true
+
+ # Requires Tor
+ - name: torch
+ engine: xpath
+ paging: true
+ search_url:
+ http://xmh57jrknzkhv6y3ls3ubitzfqnkrwxhopf5aygthi7d6rplyvk3noyd.onion/cgi-bin/omega/omega?P={query}&DEFAULTOP=and
+ results_xpath: //table//tr
+ url_xpath: ./td[2]/a
+ title_xpath: ./td[2]/b
+ content_xpath: ./td[2]/small
+ categories: onions
+ enable_http: true
+ shortcut: tch
+
+ # torznab engine lets you query any torznab compatible indexer. Using this
+ # engine in combination with Jackett opens the possibility to query a lot of
+ # public and private indexers directly from SearXNG. More details at:
+ # https://docs.searxng.org/dev/engines/online/torznab.html
+ #
+ # - name: Torznab EZTV
+ # engine: torznab
+ # shortcut: eztv
+ # base_url: http://localhost:9117/api/v2.0/indexers/eztv/results/torznab
+ # enable_http: true # if using localhost
+ # api_key: xxxxxxxxxxxxxxx
+ # show_magnet_links: true
+ # show_torrent_files: false
+ # # https://github.com/Jackett/Jackett/wiki/Jackett-Categories
+ # torznab_categories: # optional
+ # - 2000
+ # - 5000
+
+ # tmp suspended - too slow, too many errors
+ # - name: urbandictionary
+ # engine : xpath
+ # search_url : https://www.urbandictionary.com/define.php?term={query}
+ # url_xpath : //*[@class="word"]/@href
+ # title_xpath : //*[@class="def-header"]
+ # content_xpath: //*[@class="meaning"]
+ # shortcut: ud
+
+ - name: unsplash
+ engine: unsplash
+ shortcut: us
+
+ - name: yandex
+ engine: yandex
+ categories: general
+ search_type: web
+ shortcut: yd
+ disabled: true
+ inactive: true
+
+ - name: yandex images
+ engine: yandex
+ categories: images
+ search_type: images
+ shortcut: ydi
+ disabled: true
+ inactive: true
+
+ - name: yandex music
+ engine: yandex_music
+ shortcut: ydm
+ disabled: true
+ # https://yandex.com/support/music/access.html
+ inactive: true
+
+ - name: yahoo
+ engine: yahoo
+ shortcut: yh
+ disabled: true
+
+ - name: yahoo news
+ engine: yahoo_news
+ shortcut: yhn
+
+ - name: youtube
+ shortcut: yt
+ # You can use the engine using the official stable API, but you need an API
+ # key See: https://console.developers.google.com/project
+ #
+ # engine: youtube_api
+ # api_key: 'apikey' # required!
+ #
+ # Or you can use the html non-stable engine, activated by default
+ engine: youtube_noapi
+
+ - name: dailymotion
+ engine: dailymotion
+ shortcut: dm
+
+ - name: vimeo
+ engine: vimeo
+ shortcut: vm
+
+ - name: wiby
+ engine: json_engine
+ paging: true
+ search_url: https://wiby.me/json/?q={query}&p={pageno}
+ url_query: URL
+ title_query: Title
+ content_query: Snippet
+ categories: [general, web]
+ shortcut: wib
+ disabled: true
+ about:
+ website: https://wiby.me/
+
+ - name: wikibooks
+ engine: mediawiki
+ weight: 0.5
+ shortcut: wb
+ categories: [general, wikimedia]
+ base_url: "https://{language}.wikibooks.org/"
+ search_type: text
+ disabled: true
+ about:
+ website: https://www.wikibooks.org/
+ wikidata_id: Q367
+
+ - name: wikinews
+ engine: mediawiki
+ shortcut: wn
+ categories: [news, wikimedia]
+ base_url: "https://{language}.wikinews.org/"
+ search_type: text
+ srsort: create_timestamp_desc
+ about:
+ website: https://www.wikinews.org/
+ wikidata_id: Q964
+
+ - name: wikiquote
+ engine: mediawiki
+ weight: 0.5
+ shortcut: wq
+ categories: [general, wikimedia]
+ base_url: "https://{language}.wikiquote.org/"
+ search_type: text
+ disabled: true
+ additional_tests:
+ rosebud: *test_rosebud
+ about:
+ website: https://www.wikiquote.org/
+ wikidata_id: Q369
+
+ - name: wikisource
+ engine: mediawiki
+ weight: 0.5
+ shortcut: ws
+ categories: [general, wikimedia]
+ base_url: "https://{language}.wikisource.org/"
+ search_type: text
+ disabled: true
+ about:
+ website: https://www.wikisource.org/
+ wikidata_id: Q263
+
+ - name: wikispecies
+ engine: mediawiki
+ shortcut: wsp
+ categories: [general, science, wikimedia]
+ base_url: "https://species.wikimedia.org/"
+ search_type: text
+ disabled: true
+ about:
+ website: https://species.wikimedia.org/
+ wikidata_id: Q13679
+ tests:
+ wikispecies:
+ matrix:
+ query: "Campbell, L.I. et al. 2011: MicroRNAs"
+ lang: en
+ result_container:
+ - not_empty
+ - ['one_title_contains', 'Tardigrada']
+ test:
+ - unique_results
+
+ - name: wiktionary
+ engine: mediawiki
+ shortcut: wt
+ categories: [dictionaries, wikimedia]
+ base_url: "https://{language}.wiktionary.org/"
+ search_type: text
+ about:
+ website: https://www.wiktionary.org/
+ wikidata_id: Q151
+
+ - name: wikiversity
+ engine: mediawiki
+ weight: 0.5
+ shortcut: wv
+ categories: [general, wikimedia]
+ base_url: "https://{language}.wikiversity.org/"
+ search_type: text
+ disabled: true
+ about:
+ website: https://www.wikiversity.org/
+ wikidata_id: Q370
+
+ - name: wikivoyage
+ engine: mediawiki
+ weight: 0.5
+ shortcut: wy
+ categories: [general, wikimedia]
+ base_url: "https://{language}.wikivoyage.org/"
+ search_type: text
+ disabled: true
+ about:
+ website: https://www.wikivoyage.org/
+ wikidata_id: Q373
+
+ - name: wikicommons.images
+ engine: wikicommons
+ shortcut: wc
+ categories: images
+ search_type: images
+ number_of_results: 10
+
+ - name: wikicommons.videos
+ engine: wikicommons
+ shortcut: wcv
+ categories: videos
+ search_type: videos
+ number_of_results: 10
+
+ - name: wikicommons.audio
+ engine: wikicommons
+ shortcut: wca
+ categories: music
+ search_type: audio
+ number_of_results: 10
+
+ - name: wikicommons.files
+ engine: wikicommons
+ shortcut: wcf
+ categories: files
+ search_type: files
+ number_of_results: 10
+
+ - name: wolframalpha
+ shortcut: wa
+ # You can use the engine using the official stable API, but you need an API
+ # key. See: https://products.wolframalpha.com/api/
+ #
+ # engine: wolframalpha_api
+ # api_key: ''
+ #
+ # Or you can use the html non-stable engine, activated by default
+ engine: wolframalpha_noapi
+ timeout: 6.0
+ categories: general
+ disabled: true
+
+ - name: dictzone
+ engine: dictzone
+ shortcut: dc
+
+ - name: mymemory translated
+ engine: translated
+ shortcut: tl
+ timeout: 5.0
+ # You can use without an API key, but you are limited to 1000 words/day
+ # See: https://mymemory.translated.net/doc/usagelimits.php
+ # api_key: ''
+
+ # Required dependency: mysql-connector-python
+ # - name: mysql
+ # engine: mysql_server
+ # database: mydatabase
+ # username: user
+ # password: pass
+ # limit: 10
+ # query_str: 'SELECT * from mytable WHERE fieldname=%(query)s'
+ # shortcut: mysql
+
+ # Required dependency: mariadb
+ # - name: mariadb
+ # engine: mariadb_server
+ # database: mydatabase
+ # username: user
+ # password: pass
+ # limit: 10
+ # query_str: 'SELECT * from mytable WHERE fieldname=%(query)s'
+ # shortcut: mdb
+
+ - name: 1337x
+ engine: 1337x
+ shortcut: 1337x
+ disabled: true
+
+ - name: duden
+ engine: duden
+ shortcut: du
+ disabled: true
+
+ - name: seznam
+ shortcut: szn
+ engine: seznam
+ disabled: true
+
+ # - name: deepl
+ # engine: deepl
+ # shortcut: dpl
+ # # You can use the engine using the official stable API, but you need an API key
+ # # See: https://www.deepl.com/pro-api?cta=header-pro-api
+ # api_key: '' # required!
+ # timeout: 5.0
+ # disabled: true
+
+ - name: mojeek
+ shortcut: mjk
+ engine: mojeek
+ categories: [general, web]
+ disabled: true
+
+ - name: mojeek images
+ shortcut: mjkimg
+ engine: mojeek
+ categories: [images, web]
+ search_type: images
+ paging: false
+ disabled: true
+
+ - name: mojeek news
+ shortcut: mjknews
+ engine: mojeek
+ categories: [news, web]
+ search_type: news
+ paging: false
+ disabled: true
+
+ - name: moviepilot
+ engine: moviepilot
+ shortcut: mp
+ disabled: true
+
+ - name: naver
+ shortcut: nvr
+ categories: [general, web]
+ engine: xpath
+ paging: true
+ search_url: https://search.naver.com/search.naver?where=webkr&sm=osp_hty&ie=UTF-8&query={query}&start={pageno}
+ url_xpath: //a[@class="link_tit"]/@href
+ title_xpath: //a[@class="link_tit"]
+ content_xpath: //div[@class="total_dsc_wrap"]/a
+ first_page_num: 1
+ page_size: 10
+ disabled: true
+ about:
+ website: https://www.naver.com/
+ wikidata_id: Q485639
+ official_api_documentation: https://developers.naver.com/docs/nmt/examples/
+ use_official_api: false
+ require_api_key: false
+ results: HTML
+ language: ko
+
+ - name: rubygems
+ shortcut: rbg
+ engine: xpath
+ paging: true
+ search_url: https://rubygems.org/search?page={pageno}&query={query}
+ results_xpath: /html/body/main/div/a[@class="gems__gem"]
+ url_xpath: ./@href
+ title_xpath: ./span/h2
+ content_xpath: ./span/p
+ suggestion_xpath: /html/body/main/div/div[@class="search__suggestions"]/p/a
+ first_page_num: 1
+ categories: [it, packages]
+ disabled: true
+ about:
+ website: https://rubygems.org/
+ wikidata_id: Q1853420
+ official_api_documentation: https://guides.rubygems.org/rubygems-org-api/
+ use_official_api: false
+ require_api_key: false
+ results: HTML
+
+ - name: peertube
+ engine: peertube
+ shortcut: ptb
+ paging: true
+ # alternatives see: https://instances.joinpeertube.org/instances
+ # base_url: https://tube.4aem.com
+ categories: videos
+ disabled: true
+ timeout: 6.0
+
+ - name: mediathekviewweb
+ engine: mediathekviewweb
+ shortcut: mvw
+ disabled: true
+
+ - name: yacy
+ # https://docs.searxng.org/dev/engines/online/yacy.html
+ engine: yacy
+ categories: general
+ search_type: text
+ base_url:
+ - https://yacy.searchlab.eu
+ # see https://github.com/searxng/searxng/pull/3631#issuecomment-2240903027
+ # - https://search.kyun.li
+ # - https://yacy.securecomcorp.eu
+ # - https://yacy.myserv.ca
+ # - https://yacy.nsupdate.info
+ # - https://yacy.electroncash.de
+ shortcut: ya
+ disabled: true
+ # if you aren't using HTTPS for your local yacy instance disable https
+ # enable_http: false
+ search_mode: 'global'
+ # timeout can be reduced in 'local' search mode
+ timeout: 5.0
+
+ - name: yacy images
+ engine: yacy
+ network: yacy
+ categories: images
+ search_type: image
+ shortcut: yai
+ disabled: true
+ # timeout can be reduced in 'local' search mode
+ timeout: 5.0
+
+ - name: rumble
+ engine: rumble
+ shortcut: ru
+ base_url: https://rumble.com/
+ paging: true
+ categories: videos
+ disabled: true
+
+ - name: livespace
+ engine: livespace
+ shortcut: ls
+ categories: videos
+ disabled: true
+ timeout: 5.0
+
+ - name: wordnik
+ engine: wordnik
+ shortcut: def
+ categories: [dictionaries]
+ timeout: 5.0
+
+ - name: woxikon.de synonyme
+ engine: xpath
+ shortcut: woxi
+ categories: [dictionaries]
+ timeout: 5.0
+ disabled: true
+ search_url: https://synonyme.woxikon.de/synonyme/{query}.php
+ url_xpath: //div[@class="upper-synonyms"]/a/@href
+ content_xpath: //div[@class="synonyms-list-group"]
+ title_xpath: //div[@class="upper-synonyms"]/a
+ no_result_for_http_status: [404]
+ about:
+ website: https://www.woxikon.de/
+ wikidata_id: # No Wikidata ID
+ use_official_api: false
+ require_api_key: false
+ results: HTML
+ language: de
+
+ - name: seekr news
+ engine: seekr
+ shortcut: senews
+ categories: news
+ seekr_category: news
+ disabled: true
+
+ - name: seekr images
+ engine: seekr
+ network: seekr news
+ shortcut: seimg
+ categories: images
+ seekr_category: images
+ disabled: true
+
+ - name: seekr videos
+ engine: seekr
+ network: seekr news
+ shortcut: sevid
+ categories: videos
+ seekr_category: videos
+ disabled: true
+
+ - name: stract
+ engine: stract
+ shortcut: str
+ disabled: true
+
+ - name: svgrepo
+ engine: svgrepo
+ shortcut: svg
+ timeout: 10.0
+ disabled: true
+
+ - name: tootfinder
+ engine: tootfinder
+ shortcut: toot
+
+ - name: voidlinux
+ engine: voidlinux
+ shortcut: void
+ disabled: true
+
+ - name: wallhaven
+ engine: wallhaven
+ # api_key: abcdefghijklmnopqrstuvwxyz
+ shortcut: wh
+
+ # wikimini: online encyclopedia for children
+ # The fulltext and title parameter is necessary for Wikimini because
+ # sometimes it will not show the results and redirect instead
+ - name: wikimini
+ engine: xpath
+ shortcut: wkmn
+ search_url: https://fr.wikimini.org/w/index.php?search={query}&title=Sp%C3%A9cial%3ASearch&fulltext=Search
+ url_xpath: //li/div[@class="mw-search-result-heading"]/a/@href
+ title_xpath: //li//div[@class="mw-search-result-heading"]/a
+ content_xpath: //li/div[@class="searchresult"]
+ categories: general
+ disabled: true
+ about:
+ website: https://wikimini.org/
+ wikidata_id: Q3568032
+ use_official_api: false
+ require_api_key: false
+ results: HTML
+ language: fr
+
+ - name: wttr.in
+ engine: wttr
+ shortcut: wttr
+ timeout: 9.0
+
+ - name: yummly
+ engine: yummly
+ shortcut: yum
+ disabled: true
+
+ - name: brave
+ engine: brave
+ shortcut: br
+ time_range_support: true
+ paging: true
+ categories: [general, web]
+ brave_category: search
+ # brave_spellcheck: true
+
+ - name: brave.images
+ engine: brave
+ network: brave
+ shortcut: brimg
+ categories: [images, web]
+ brave_category: images
+
+ - name: brave.videos
+ engine: brave
+ network: brave
+ shortcut: brvid
+ categories: [videos, web]
+ brave_category: videos
+
+ - name: brave.news
+ engine: brave
+ network: brave
+ shortcut: brnews
+ categories: news
+ brave_category: news
+
+ # - name: brave.goggles
+ # engine: brave
+ # network: brave
+ # shortcut: brgog
+ # time_range_support: true
+ # paging: true
+ # categories: [general, web]
+ # brave_category: goggles
+ # Goggles: # required! This should be a URL ending in .goggle
+
+ - name: lib.rs
+ shortcut: lrs
+ engine: lib_rs
+ disabled: true
+
+ - name: sourcehut
+ shortcut: srht
+ engine: xpath
+ paging: true
+ search_url: https://sr.ht/projects?page={pageno}&search={query}
+ results_xpath: (//div[@class="event-list"])[1]/div[@class="event"]
+ url_xpath: ./h4/a[2]/@href
+ title_xpath: ./h4/a[2]
+ content_xpath: ./p
+ first_page_num: 1
+ categories: [it, repos]
+ disabled: true
+ about:
+ website: https://sr.ht
+ wikidata_id: Q78514485
+ official_api_documentation: https://man.sr.ht/
+ use_official_api: false
+ require_api_key: false
+ results: HTML
+
+ - name: goo
+ shortcut: goo
+ engine: xpath
+ paging: true
+ search_url: https://search.goo.ne.jp/web.jsp?MT={query}&FR={pageno}0
+ url_xpath: //div[@class="result"]/p[@class='title fsL1']/a/@href
+ title_xpath: //div[@class="result"]/p[@class='title fsL1']/a
+ content_xpath: //p[contains(@class,'url fsM')]/following-sibling::p
+ first_page_num: 0
+ categories: [general, web]
+ disabled: true
+ timeout: 4.0
+ about:
+ website: https://search.goo.ne.jp
+ wikidata_id: Q249044
+ use_official_api: false
+ require_api_key: false
+ results: HTML
+ language: ja
+
+ - name: bt4g
+ engine: bt4g
+ shortcut: bt4g
+
+ - name: pkg.go.dev
+ engine: pkg_go_dev
+ shortcut: pgo
+ disabled: true
+
+# Doku engine lets you access to any Doku wiki instance:
+# A public one or a privete/corporate one.
+# - name: ubuntuwiki
+# engine: doku
+# shortcut: uw
+# base_url: 'https://doc.ubuntu-fr.org'
+
+# Be careful when enabling this engine if you are
+# running a public instance. Do not expose any sensitive
+# information. You can restrict access by configuring a list
+# of access tokens under tokens.
+# - name: git grep
+# engine: command
+# command: ['git', 'grep', '{{QUERY}}']
+# shortcut: gg
+# tokens: []
+# disabled: true
+# delimiter:
+# chars: ':'
+# keys: ['filepath', 'code']
+
+# Be careful when enabling this engine if you are
+# running a public instance. Do not expose any sensitive
+# information. You can restrict access by configuring a list
+# of access tokens under tokens.
+# - name: locate
+# engine: command
+# command: ['locate', '{{QUERY}}']
+# shortcut: loc
+# tokens: []
+# disabled: true
+# delimiter:
+# chars: ' '
+# keys: ['line']
+
+# Be careful when enabling this engine if you are
+# running a public instance. Do not expose any sensitive
+# information. You can restrict access by configuring a list
+# of access tokens under tokens.
+# - name: find
+# engine: command
+# command: ['find', '.', '-name', '{{QUERY}}']
+# query_type: path
+# shortcut: fnd
+# tokens: []
+# disabled: true
+# delimiter:
+# chars: ' '
+# keys: ['line']
+
+# Be careful when enabling this engine if you are
+# running a public instance. Do not expose any sensitive
+# information. You can restrict access by configuring a list
+# of access tokens under tokens.
+# - name: pattern search in files
+# engine: command
+# command: ['fgrep', '{{QUERY}}']
+# shortcut: fgr
+# tokens: []
+# disabled: true
+# delimiter:
+# chars: ' '
+# keys: ['line']
+
+# Be careful when enabling this engine if you are
+# running a public instance. Do not expose any sensitive
+# information. You can restrict access by configuring a list
+# of access tokens under tokens.
+# - name: regex search in files
+# engine: command
+# command: ['grep', '{{QUERY}}']
+# shortcut: gr
+# tokens: []
+# disabled: true
+# delimiter:
+# chars: ' '
+# keys: ['line']
+
+doi_resolvers:
+ oadoi.org: 'https://oadoi.org/'
+ doi.org: 'https://doi.org/'
+ doai.io: 'https://dissem.in/'
+ sci-hub.se: 'https://sci-hub.se/'
+ sci-hub.st: 'https://sci-hub.st/'
+ sci-hub.ru: 'https://sci-hub.ru/'
+
+default_doi_resolver: 'oadoi.org'
diff --git a/apps/md/2.0.3/data.yml b/apps/md/2.0.3/data.yml
new file mode 100644
index 000000000..31e9d0715
--- /dev/null
+++ b/apps/md/2.0.3/data.yml
@@ -0,0 +1,10 @@
+additionalProperties:
+ formFields:
+ - default: 8080
+ edit: true
+ envKey: PANEL_APP_PORT_HTTP
+ labelEn: Port
+ labelZh: 端口
+ required: true
+ rule: paramPort
+ type: number
\ No newline at end of file
diff --git a/apps/md/2.0.3/docker-compose.yml b/apps/md/2.0.3/docker-compose.yml
new file mode 100644
index 000000000..9127209cb
--- /dev/null
+++ b/apps/md/2.0.3/docker-compose.yml
@@ -0,0 +1,14 @@
+services:
+ md:
+ image: doocs/md:2.0.3
+ container_name: ${CONTAINER_NAME}
+ restart: always
+ networks:
+ - 1panel-network
+ ports:
+ - ${PANEL_APP_PORT_HTTP}:80
+ labels:
+ createdBy: "Apps"
+networks:
+ 1panel-network:
+ external: true
diff --git a/apps/netbox/README.md b/apps/netbox/README.md
new file mode 100644
index 000000000..c25c816a6
--- /dev/null
+++ b/apps/netbox/README.md
@@ -0,0 +1,27 @@
+# NetBox
+
+NetBox 是一款开源的数据中心和网络资源管理平台,支持Web界面和API。
+
+## 功能特性
+
+- 数据中心资产管理(机柜、设备、IP、线路等)
+- 网络自动化与可视化
+- 支持Web界面管理(默认端口8000)
+- 支持API集成与自动化脚本
+- 多用户权限管理
+- 轻量级、可扩展
+
+## 使用方法
+
+1. 部署后访问 `http://服务器IP:8000` 进入Web管理界面
+2. 默认用户名/密码请参考官方文档或首次初始化设置
+3. 配置数据中心、网络、IP等资源
+4. 配置文件目录:`./config`
+5. 数据目录:`./data`
+
+## 相关链接
+
+- [官方网站](https://netbox.dev/)
+- [GitHub 项目](https://github.com/netbox-community/netbox)
+- [官方文档](https://docs.netbox.dev/)
+- [Docker Hub](https://hub.docker.com/r/linuxserver/netbox)
\ No newline at end of file
diff --git a/apps/netbox/README_en.md b/apps/netbox/README_en.md
new file mode 100644
index 000000000..a09dfdc45
--- /dev/null
+++ b/apps/netbox/README_en.md
@@ -0,0 +1,27 @@
+# NetBox
+
+NetBox is an open-source data center and network automation platform with web interface and API.
+
+## Features
+
+- Data center asset management (racks, devices, IPs, circuits, etc.)
+- Network automation and visualization
+- Web UI management (default port 8000)
+- API integration and automation scripting
+- Multi-user permission management
+- Lightweight and extensible
+
+## Usage
+
+1. After deployment, access `http://your-server-ip:8000` for the web UI
+2. Default username/password: please refer to the official documentation or initial setup
+3. Configure data center, network, IP and other resources
+4. Config directory: `./config`
+5. Data directory: `./data`
+
+## Links
+
+- [Official Website](https://netbox.dev/)
+- [GitHub Project](https://github.com/netbox-community/netbox)
+- [Official Documentation](https://docs.netbox.dev/)
+- [Docker Hub](https://hub.docker.com/r/linuxserver/netbox)
\ No newline at end of file
diff --git a/apps/netbox/data.yml b/apps/netbox/data.yml
new file mode 100644
index 000000000..085fd9c2a
--- /dev/null
+++ b/apps/netbox/data.yml
@@ -0,0 +1,31 @@
+name: NetBox
+tags:
+ - 实用工具
+title: 数据中心和网络自动化管理平台
+description: NetBox 是一款开源的数据中心和网络资源管理平台,支持Web界面和API
+additionalProperties:
+ key: netbox
+ name: NetBox
+ tags:
+ - Tool
+ shortDescZh: 数据中心和网络自动化管理平台
+ shortDescEn: Data center and network automation platform
+ description:
+ en: NetBox is an open-source data center and network automation platform with web interface and API
+ ja: NetBoxはWebインターフェースとAPIを備えたオープンソースのデータセンター・ネットワーク自動化プラットフォームです
+ ms: NetBox ialah platform automasi pusat data dan rangkaian sumber terbuka dengan antara muka web dan API
+ pt-br: NetBox é uma plataforma de automação de data center e rede de código aberto com interface web e API
+ ru: NetBox — это платформа автоматизации центров обработки данных и сетей с открытым исходным кодом, веб-интерфейсом и API
+ ko: NetBox는 웹 인터페이스와 API를 지원하는 오픈 소스 데이터 센터 및 네트워크 자동화 플랫폼입니다
+ zh-Hant: NetBox 是一款開源的數據中心和網路自動化管理平台,支援 Web 管理和 API
+ zh: NetBox 是一款开源的数据中心和网络资源管理平台,支持Web界面和API
+ type: website
+ crossVersionUpdate: true
+ limit: 0
+ recommend: 0
+ website: https://netbox.dev/
+ github: https://github.com/netbox-community/netbox
+ document: https://docs.netbox.dev/
+ architectures:
+ - amd64
+ - arm64
\ No newline at end of file
diff --git a/apps/netbox/latest/data.yml b/apps/netbox/latest/data.yml
new file mode 100644
index 000000000..dd5037932
--- /dev/null
+++ b/apps/netbox/latest/data.yml
@@ -0,0 +1,19 @@
+additionalProperties:
+ formFields:
+ - default: 8000
+ edit: true
+ envKey: PANEL_APP_PORT_HTTP
+ labelEn: Web UI Port
+ labelZh: Web界面端口
+ required: true
+ rule: paramPort
+ type: number
+ label:
+ en: Web UI Port
+ ja: Web UI ポート
+ ms: Port UI Web
+ pt-br: Porta da interface web
+ ru: Веб-порт интерфейса
+ ko: 웹 UI 포트
+ zh-Hant: Web UI 埠
+ zh: Web界面端口
\ No newline at end of file
diff --git a/apps/netbox/latest/docker-compose.yml b/apps/netbox/latest/docker-compose.yml
new file mode 100644
index 000000000..905a722ed
--- /dev/null
+++ b/apps/netbox/latest/docker-compose.yml
@@ -0,0 +1,21 @@
+services:
+ netbox:
+ container_name: ${CONTAINER_NAME}
+ image: lscr.io/linuxserver/netbox:latest
+ restart: always
+ networks:
+ - 1panel-network
+ ports:
+ - "${PANEL_APP_PORT_HTTP}:8000"
+ environment:
+ - TZ=Asia/Shanghai
+ - PUID=1000
+ - PGID=1000
+ volumes:
+ - ./config:/config
+ - ./data:/data
+ labels:
+ createdBy: "Apps"
+networks:
+ 1panel-network:
+ external: true
\ No newline at end of file
diff --git a/apps/netbox/logo.png b/apps/netbox/logo.png
new file mode 100644
index 000000000..b458fd544
Binary files /dev/null and b/apps/netbox/logo.png differ
diff --git a/apps/netdata/2.2.6/.env.sample b/apps/netdata/2.2.6/.env.sample
new file mode 100644
index 000000000..3ba58ad3b
--- /dev/null
+++ b/apps/netdata/2.2.6/.env.sample
@@ -0,0 +1,4 @@
+CONTAINER_NAME="netdata"
+DOCKER_SOCK_PATH="/var/run/docker.sock"
+HOSTNAME="netdata"
+PANEL_APP_PORT_HTTP=19999
diff --git a/apps/netdata/2.2.6/data.yml b/apps/netdata/2.2.6/data.yml
new file mode 100644
index 000000000..a52a39115
--- /dev/null
+++ b/apps/netdata/2.2.6/data.yml
@@ -0,0 +1,24 @@
+additionalProperties:
+ formFields:
+ - default: "19999"
+ disabled: true
+ envKey: PANEL_APP_PORT_HTTP
+ labelEn: Port
+ labelZh: 端口
+ required: true
+ rule: paramPort
+ type: number
+ - default: "netdata"
+ edit: true
+ envKey: HOSTNAME
+ labelEn: Hostname
+ labelZh: 主机名
+ required: true
+ type: text
+ - default: "/var/run/docker.sock"
+ edit: true
+ envKey: DOCKER_SOCK_PATH
+ labelEn: Docker Socket Path
+ labelZh: Docker 套接字路径
+ required: true
+ type: text
diff --git a/apps/netdata/2.2.6/docker-compose.yml b/apps/netdata/2.2.6/docker-compose.yml
new file mode 100644
index 000000000..c68c1b68a
--- /dev/null
+++ b/apps/netdata/2.2.6/docker-compose.yml
@@ -0,0 +1,27 @@
+services:
+ netdata:
+ image: "netdata/netdata:latest"
+ container_name: ${CONTAINER_NAME}
+ restart: always
+ network_mode: host
+ hostname: ${HOSTNAME}
+ cap_add:
+ - SYS_PTRACE
+ - SYS_ADMIN
+ security_opt:
+ - apparmor:unconfined
+ volumes:
+ - ./data/netdataconfig:/etc/netdata
+ - ./data/netdatalib:/var/lib/netdata
+ - ./data/netdatacache:/var/cache/netdata
+ - /:/host/root:ro,rslave
+ - /etc/passwd:/host/etc/passwd:ro
+ - /etc/group:/host/etc/group:ro
+ - /etc/localtime:/etc/localtime:ro
+ - /proc:/host/proc:ro
+ - /sys:/host/sys:ro
+ - /etc/os-release:/host/etc/os-release:ro
+ - /var/log:/host/var/log:ro
+ - ${DOCKER_SOCK_PATH}:/var/run/docker.sock:ro
+ labels:
+ createdBy: "Apps"
diff --git a/apps/next-terminal/2.4.10/.env.sample b/apps/next-terminal/2.4.10/.env.sample
new file mode 100644
index 000000000..fb20450ac
--- /dev/null
+++ b/apps/next-terminal/2.4.10/.env.sample
@@ -0,0 +1,6 @@
+CONTAINER_NAME="next-terminal"
+PANEL_APP_PORT_HTTP="40058"
+PANEL_APP_PORT_SSH="40059"
+DATA_PATH="./data"
+SSHD_SWITCH="false"
+SSH_KEY_PATH="./ssh/id_rsa"
\ No newline at end of file
diff --git a/apps/next-terminal/2.4.10/config.yaml b/apps/next-terminal/2.4.10/config.yaml
new file mode 100755
index 000000000..29f487fa8
--- /dev/null
+++ b/apps/next-terminal/2.4.10/config.yaml
@@ -0,0 +1,31 @@
+database:
+ enabled: true
+ type: postgres
+ postgres:
+ hostname: postgresql
+ port: 5432
+ username: next-terminal
+ password: next-terminal
+ database: next-terminal
+log:
+ level: debug
+ filename: ./logs/nt.log
+
+server:
+ addr: "0.0.0.0:8088"
+ tls:
+ enabled: false
+ auto: false
+ cert: ""
+ key: ""
+
+app:
+ recording:
+ type: "local"
+ path: "/usr/local/next-terminal/data/recordings"
+ guacd:
+ drive: "/usr/local/next-terminal/data/drive"
+ hosts:
+ - hostname: guacd
+ port: 4822
+ weight: 1
\ No newline at end of file
diff --git a/apps/next-terminal/2.4.10/data.yml b/apps/next-terminal/2.4.10/data.yml
new file mode 100644
index 000000000..83e0fa6e9
--- /dev/null
+++ b/apps/next-terminal/2.4.10/data.yml
@@ -0,0 +1,41 @@
+additionalProperties:
+ formFields:
+ - default: 40058
+ edit: true
+ envKey: PANEL_APP_PORT_HTTP
+ labelEn: Port
+ labelZh: 端口
+ required: true
+ rule: paramPort
+ type: number
+ - default: 40059
+ edit: true
+ envKey: PANEL_APP_PORT_SSH
+ labelEn: SSH Server Port
+ labelZh: SSH Server 端口 (可选)
+ required: false
+ rule: paramPort
+ type: number
+ - default: 40060
+ edit: true
+ envKey: PANEL_APP_PORT_PROXY_HTTP
+ labelEn: Proxy HTTP Port
+ labelZh: 资产反代 HTTP 端口 (可选)
+ required: false
+ rule: paramPort
+ type: number
+ - default: 40061
+ edit: true
+ envKey: PANEL_APP_PORT_PROXY_HTTPS
+ labelEn: Proxy HTTPS Port
+ labelZh: 资产反代 HTTPS 端口 (申请证书必需)
+ required: false
+ rule: paramPort
+ type: number
+ - default: ./data
+ edit: true
+ envKey: DATA_PATH
+ labelEn: Data folder path
+ labelZh: 数据文件夹路径
+ required: true
+ type: text
diff --git a/apps/next-terminal/2.4.10/docker-compose.yml b/apps/next-terminal/2.4.10/docker-compose.yml
new file mode 100644
index 000000000..d352e09b7
--- /dev/null
+++ b/apps/next-terminal/2.4.10/docker-compose.yml
@@ -0,0 +1,53 @@
+services:
+ next-terminal:
+ image: dushixiang/next-terminal:v2.4.10
+ container_name: ${CONTAINER_NAME}
+ restart: always
+ networks:
+ - 1panel-network
+ ports:
+ - "${PANEL_APP_PORT_HTTP}:8088"
+ - "${PANEL_APP_PORT_SSH}:2022"
+ - "${PANEL_APP_PORT_PROXY_HTTP}:80"
+ - "${PANEL_APP_PORT_PROXY_HTTPS}:443"
+ volumes:
+ - "/etc/localtime:/etc/localtime"
+ - "${DATA_PATH}:/usr/local/next-terminal/data"
+ - ./logs:/usr/local/next-terminal/logs
+ - ./config.yaml:/etc/next-terminal/config.yaml
+ depends_on:
+ - postgresql
+ - guacd
+
+ labels:
+ createdBy: "Apps"
+ postgresql:
+ container_name: postgresql-${CONTAINER_NAME}
+ image: registry.cn-beijing.aliyuncs.com/dushixiang/postgres:16.4
+ networks:
+ - 1panel-network
+ environment:
+ POSTGRES_DB: next-terminal
+ POSTGRES_USER: next-terminal
+ POSTGRES_PASSWORD: next-terminal
+ volumes:
+ - ./data/postgresql:/var/lib/postgresql/data
+ restart: always
+
+ guacd:
+ container_name: guacd-${CONTAINER_NAME}
+ image: dushixiang/guacd:1.5.5
+ restart: always
+ networks:
+ - 1panel-network
+ volumes:
+ - "${DATA_PATH}:/usr/local/next-terminal/data"
+
+ environment:
+ - GUACD_LOG_LEVEL=debug
+ labels:
+ createdBy: "Apps"
+
+networks:
+ 1panel-network:
+ external: true
\ No newline at end of file
diff --git a/apps/next-terminal/2.4.10/ssh/id_rsa b/apps/next-terminal/2.4.10/ssh/id_rsa
new file mode 100644
index 000000000..fe7575508
--- /dev/null
+++ b/apps/next-terminal/2.4.10/ssh/id_rsa
@@ -0,0 +1,49 @@
+-----BEGIN OPENSSH PRIVATE KEY-----
+b3BlbnNzaC1rZXktdjEAAAAABG5vbmUAAAAEbm9uZQAAAAAAAAABAAACFwAAAAdzc2gtcn
+NhAAAAAwEAAQAAAgEAqNqKouPlvUBbLv4BUSMxaZu4rFBMKLcl2MSetFAx/Ya/e5JFQ9rZ
+RhMmZqx7gfj6/OQTXw9qN43k0XKy0Y9u3APtt9OZ9Y5StcmXljQhy8EQOF+MyZAEY3HpM7
+4xIV+v16z1mBrczZcFUbALVdijPAWhhMZxxhaN+EA8IfA0ByoE++w6XjvrYEOhW2qCMptL
+TV6ZSUW7IOOoa/VzZBujUqgXrqiOshVy79mZi/mg5Sctp727JHr4PAw4yEqDHkLX4D97Rc
+Qy8FMbmw40my6G+P22YywCdwVXlgZOq1dCuCRVAzl811nnTSLigyll3DBOilkp0RsDATUv
+xCYc8UbwIrlUGDFKz8f54BN2kIgUX7OKVFOefhnpwpasZ8BjF+4A+3b5PkxQEg4SYiYWJc
+RDIs9pCuSG2kX45PhbGMoWfbqU63pftM2fVtWiStMOZysvfkaLVUhJPQT3TZhiO84mkz6S
+juQO2+b7Olb+rSe0naOzewvi72fFzbAOSEe4hj4Ewh38u1gYge5kOSg/SaHcYvVa2OU9Fz
+iS5BCKKfcGtvkxl/HNDlNndCVw4DZHxmIkWDDa6uLI3qWn5A+AVP2D8zMTSmn/gkPxkYE5
+lkhWr4aM0/purV2JeupZzSDYa0zWL+6SuEWDL1qw9oglDm209go6jBbjEtaMDxt9YpkCcX
+kAAAdQPAxkLDwMZCwAAAAHc3NoLXJzYQAAAgEAqNqKouPlvUBbLv4BUSMxaZu4rFBMKLcl
+2MSetFAx/Ya/e5JFQ9rZRhMmZqx7gfj6/OQTXw9qN43k0XKy0Y9u3APtt9OZ9Y5StcmXlj
+Qhy8EQOF+MyZAEY3HpM74xIV+v16z1mBrczZcFUbALVdijPAWhhMZxxhaN+EA8IfA0ByoE
+++w6XjvrYEOhW2qCMptLTV6ZSUW7IOOoa/VzZBujUqgXrqiOshVy79mZi/mg5Sctp727JH
+r4PAw4yEqDHkLX4D97RcQy8FMbmw40my6G+P22YywCdwVXlgZOq1dCuCRVAzl811nnTSLi
+gyll3DBOilkp0RsDATUvxCYc8UbwIrlUGDFKz8f54BN2kIgUX7OKVFOefhnpwpasZ8BjF+
+4A+3b5PkxQEg4SYiYWJcRDIs9pCuSG2kX45PhbGMoWfbqU63pftM2fVtWiStMOZysvfkaL
+VUhJPQT3TZhiO84mkz6SjuQO2+b7Olb+rSe0naOzewvi72fFzbAOSEe4hj4Ewh38u1gYge
+5kOSg/SaHcYvVa2OU9FziS5BCKKfcGtvkxl/HNDlNndCVw4DZHxmIkWDDa6uLI3qWn5A+A
+VP2D8zMTSmn/gkPxkYE5lkhWr4aM0/purV2JeupZzSDYa0zWL+6SuEWDL1qw9oglDm209g
+o6jBbjEtaMDxt9YpkCcXkAAAADAQABAAACAE2riU34SrtNGSR6jpyF9brAeKg6n22zIWOe
+venvYa9fBkGPPPFDf+It+OINwRo+LyWYvBhj/NXlHTYC7qJaugHWhMikOxOrDfy06FedT1
+ZsTkvAGAC3kG01/rFgcTUK0NYCp036PUsMhtPWiMBKUHvRk0SCC9+0jEV/Nqnd1fDdsUE4
+nniuU00KjvR//7fLm03Rj+0WeEdesSBH3XZVCEGDNLGQs2LTXvVZQLoUb6A471VTfvv+3K
+SycoQfUkTfNnHegZPL9ip58B7Y3/Xp5wgtnHHt0oxxFqLZ7+H816HghIJhNT3SCwV+YHc4
+2bP5PIeDECsxo6YwkvJFHdcWbGqtUEDawJ+sUit0iBnByvbDRT5iMgcszekdv4FC7YhWxp
+nSJCU2GOWIeFKjxcqYkIyYNjJ2+Agh7JQME7pYfeXeyqWlewLi61Xp3jzAU6exH8l/6m0w
+luzKDaoyw4XR9apIGkRSbmgi7sMhCqpxgWUuOYZj4cqxOXJsaR9vgdwOpvrvMMTahIjQSc
+Es2qzsqvoyqV0pAufOAgO77NgawhGpO6E8nOm2W5TFvfAQLXdjcb7drKTgeSLgfLPeVITH
+0a6AYyGij6N1QkOEADH3AwapJwbV6WFb0n/n6CnAfcfZ9ZDRhHC8R14Mc+EhZ2KiwwvKdk
+qrchmspx6dWEs/nLABAAABAB7tCOMMbB4KC4/e2GIQCbW1DiTQOWwpGFTjhRf8f41fU6Wg
+yT5W7CN4olPUWOnCs+CtyKdCtQdhZzMxhE9Kj01S0hBCJeNQibIq8CKmzab7XvSnSRdzsT
+qm7hyo7Yvo3EFeBxHTaOAQ99CcgevX+CYGibj6EXs35vqjRXZ9OEnBJ+bbMJGU5JCINeb8
+ZiC9T/TTXBgemPYcmKb+LzxgJWco8hI9W9t37OmrAagdeXo3P1KWym0rWknlxF9glOdgZe
+WsxcaErNhOos6tD2Jq/WUjQdEDwoYscpm5QMwkNqWKdFa/WK60S4e/bZdK/JOV4Dbd0Ukz
+pl77sLYP+TT+wMcAAAEBANIwTNTjtoRws0XMioRg1yPU9XA577ZFh0E0qVFyhOKlAaZQo/
+qElZkaqd3IAkxXtJ9T80r5mMZxJL/9PBQIWLCSkvUC91qMNyBw0W9lr5S10JAl5vG27WOt
+cGFJzdWa3g9DwZuyr5bTh62zV9ET1v/vr33fGf60g8H9SMQcb2oPqqkoZHMEcgeqhrd843
+zBm7nuFkY74WaCH1n78vkazKSGKVbUxwdh9MgMRW6mYf/HkAM7nuMqcubyZ4oF3OmCEizd
+NBoEjAJtQNI5dms0BPuZBoqu1av52F9IIX+PI4miI5E7i8DNImMJQozCLlG4QWBrjd6oAp
+UXqBWs+gg7lQEAAAEBAM2n6Vz3tsP4Y2JP3rKHUcCA5JuuzHVuemGj18C6Xh6cdYUy7RSe
+F042HBRl/3nuV4H4+lfr3Ur5yCERBdyOUeeuGfNlZhWXwwy+myYSUtT/dNGN5P8wFK/sxc
+pmbqM9Sl/TlEudYwqMBZzlzquzys3UBtEmtsM8Bgdxwd+vn94a4nKkGr5X0SfE8evpZWuS
+dQywRfA0aPxSwORoTmYzr6yEWQzywYUlC1Gd9hW6Fy8lYKGx9SZXnrvxsRQBQwAQbnvHGL
+FbF138AwwkrKJPtedQZkAs4teFg8ggPuA3SpWFcjEJGKQYwkpMxjHmiP9AvS0t34PJOiYa
+i9cQ/l2FBHkAAAAWeW91cl9lbWFpbEBleGFtcGxlLmNvbQECAwQF
+-----END OPENSSH PRIVATE KEY-----
diff --git a/apps/nezha/1.12.4/data.yml b/apps/nezha/1.12.4/data.yml
new file mode 100644
index 000000000..fb2fa4499
--- /dev/null
+++ b/apps/nezha/1.12.4/data.yml
@@ -0,0 +1,10 @@
+additionalProperties:
+ formFields:
+ - default: "8008"
+ edit: true
+ envKey: PANEL_APP_PORT_HTTP
+ labelEn: HTTP Port
+ labelZh: HTTP 端口
+ required: true
+ rule: paramPort
+ type: number
diff --git a/apps/nezha/1.12.4/data/config.yaml b/apps/nezha/1.12.4/data/config.yaml
new file mode 100644
index 000000000..75ebec66f
--- /dev/null
+++ b/apps/nezha/1.12.4/data/config.yaml
@@ -0,0 +1,14 @@
+admin_template: admin-dist
+agent_secret_key: yUp7b6G6Q5ub0J1h45KSjj8qlWuRPTcD
+avg_ping_count: 2
+cover: 1
+https: {}
+install_host: 192.168.123.45
+ip_change_notification_group_id: 0
+jwt_secret_key: rxLGg4gNLJEhRKA0oBOKBoGCaoqkdNW2R8OhLXu2XOZqKsWZy0iF5u4WXBl9zfeeFk3VaSVzYiL1rem8FD6lA8aMttCOmE7m6D5SogIiW58VF5h6rdvTIhQpoy4qel2XED3mcAU7uvZIWIdCDYfKPmSD7VwCR2T1D2HoVCerfG3uk7KqpIekcausnq7abpGrVSBTVHEs9OLnXnkBwKbmMllSJhbd3W43Ckn6IJHrZDBhKi0nFxQHlX6I9V1eZy3Iau8bDkCUmP9eBLW40oniZIkXzwUSRTERxVC5fdBglbWYUdGxY97xGMoVv0PlEtxP1tsL9Qy783c292IjErBYc9KP5w3NXYz4oc4JL5Q9AKEIzP6VEbcb42ueUsJw457486jiBplPILVCwqF3hdUI9K4Hx4s0g0BUT24zTCEt3BXmDH7FoueVYxnqWnUujgYbtWOxUEJ2MM6gmAGec38sJzLWPxCpzvNjOuSoth4WRI9CRTzta0242JwO2k7zbcPSk6aYMz79fA7LzScnVbLQqLevc6XQlvpfVbkCCUP4sz3VvJt992QFVnoJ0dCVfumVPFsIdPj29YfJxqgvVJK6YMIVZYbhtst4Xg5l7MNYjImMtddoaVsmzAmNwSD5qenmMtnunKSOWDJCshhoCy8kbbaTpSccLGOeUXtxDtKFaUr11moJcdqi2Wqe1wgP3LzrHJocjnP5IMaamG30WJZWqyDwIqJqs56PtNEVnRiyF2rFiwvJpmtMZKFkXzdPzoNt2QIEdsGX0utcslrM84E6RQtAPlobaRAM0mxYFft7UC3XGzht5ziTqs9DasM13Tf7jYOn2hveEZE2yyqLNn9CddcOjgUFobqtwaoBmldRXUoxmZkRMSKFqdTbG52exCSCHcf0RGR2Z0SGSRM2tFUqBDD3nUQv5zkg5cAUqncKZFgY1nbp4NcKuMW5XgfGCTyfDk0bOLy91Ak4m6X9nNJHbPlBT1SFdibjDo9Kkhrqu3UF9b2HeoJYTluTDv6Yl03j
+jwt_timeout: 1
+language: zh_CN
+listen_port: 8008
+location: Asia/Shanghai
+site_name: 1Panel-Nezha
+user_template: user-dist
diff --git a/apps/nezha/1.12.4/data/sqlite.db b/apps/nezha/1.12.4/data/sqlite.db
new file mode 100644
index 000000000..83a3f2076
Binary files /dev/null and b/apps/nezha/1.12.4/data/sqlite.db differ
diff --git a/apps/nezha/1.12.4/docker-compose.yml b/apps/nezha/1.12.4/docker-compose.yml
new file mode 100644
index 000000000..4d2b04346
--- /dev/null
+++ b/apps/nezha/1.12.4/docker-compose.yml
@@ -0,0 +1,9 @@
+services:
+ dashboard:
+ image: ghcr.io/nezhahq/nezha:v1.12.4
+ container_name: nezha-dashboard
+ restart: always
+ volumes:
+ - ./data:/dashboard/data
+ ports:
+ - 8008:8008
diff --git a/apps/npc/0.29.21/.env.sample b/apps/npc/0.29.21/.env.sample
new file mode 100644
index 000000000..0db841035
--- /dev/null
+++ b/apps/npc/0.29.21/.env.sample
@@ -0,0 +1,4 @@
+CONTAINER_NAME="npc"
+NPS_SERVER_ADDR="1.2.3.4:8025"
+NPS_VKEY="xly7traGe3r0t6UWltristuh1"
+TLS_ENABLE_SWITCH="true"
diff --git a/apps/npc/0.29.21/data.yml b/apps/npc/0.29.21/data.yml
new file mode 100644
index 000000000..00efcf18a
--- /dev/null
+++ b/apps/npc/0.29.21/data.yml
@@ -0,0 +1,22 @@
+additionalProperties:
+ formFields:
+ - default: 1.2.3.4:8025
+ edit: true
+ envKey: NPS_SERVER_ADDR
+ labelEn: NPS server address
+ labelZh: NPS 服务端地址
+ required: true
+ type: text
+ - default: "xly7traGe3r0t6UWltristuh1"
+ edit: true
+ envKey: NPS_VKEY
+ labelEn: Client connection key displayed by the server
+ labelZh: 服务端显示的客户端连接密钥
+ required: true
+ rule: paramCommon
+ type: text
+ values:
+ - label: "True"
+ value: "true"
+ - label: "False"
+ value: "false"
diff --git a/apps/npc/0.29.21/docker-compose.yml b/apps/npc/0.29.21/docker-compose.yml
new file mode 100644
index 000000000..82f7eb60a
--- /dev/null
+++ b/apps/npc/0.29.21/docker-compose.yml
@@ -0,0 +1,9 @@
+services:
+ npc:
+ image: duan2001/npc:v0.29.21
+ restart: always
+ network_mode: "host"
+ command: -server=${NPS_SERVER_ADDR} -vkey=${NPS_VKEY}
+ container_name: ${CONTAINER_NAME}
+ labels:
+ createdBy: "Apps"
diff --git a/apps/nps/0.29.21/.env.sample b/apps/nps/0.29.21/.env.sample
new file mode 100644
index 000000000..db55485ac
--- /dev/null
+++ b/apps/nps/0.29.21/.env.sample
@@ -0,0 +1,16 @@
+CONTAINER_NAME="nps"
+PANEL_APP_PORT_HTTP="40209"
+NPS_AUTH_CRYPT_KEY="gl8r0tujikih7br5"
+NPS_BRIDGE_PORT="8024"
+NPS_BRIDGE_TLS_PORT="8025"
+NPS_HTTPS_PROXY_PORT="50443"
+NPS_HTTP_PROXY_IP="0.0.0.0"
+NPS_HTTP_PROXY_PORT="50080"
+NPS_PUBLIC_VKEY="xly7traGe3r0t6UWltristuh1"
+NPS_RANDOM_PORT_END="20200"
+NPS_RANDOM_PORT_START="20100"
+NPS_WEB_HOST="http://localhost:40209"
+NPS_WEB_OPEN_SSL="false"
+NPS_WEB_PASSWORD="123_T8acCj"
+NPS_WEB_USERNAME="admin_afmTRb"
+TLS_ENABLE_SWITCH="true"
diff --git a/apps/nps/0.29.21/conf/nps.conf b/apps/nps/0.29.21/conf/nps.conf
new file mode 100644
index 000000000..48a6e535d
--- /dev/null
+++ b/apps/nps/0.29.21/conf/nps.conf
@@ -0,0 +1,179 @@
+#############################################
+# 基本设置
+#############################################
+appname=nps
+# Boot mode (dev|pro)
+runmode=pro
+# Secure mode 开启后提高安全性,不再兼容旧版客户端连接
+secure_mode=true
+# DNS 服务器配置
+dns_server=8.8.8.8
+
+#############################################
+# 域名转发设置
+#############################################
+# HTTP/HTTPS 代理设置:端口为 0 时不启动代理服务
+http_proxy_ip=${NPS_HTTP_PROXY_IP}
+http_proxy_port=${NPS_HTTP_PROXY_PORT}
+https_proxy_port=${NPS_HTTPS_PROXY_PORT}
+
+# HTTPS 默认证书配置
+https_default_cert_file=conf/server.pem
+https_default_key_file=conf/server.key
+# 自动申请证书保存目录
+ssl_path=conf/ssl
+# 自动申请证书使用的邮箱
+ssl_email=you@yours.com
+# 自动申请证书使用的CA(LetsEncrypt|ZeroSSL|GoogleTrust)
+ssl_ca=LetsEncrypt
+# ZeroSSL 需要提供 API Key
+#ssl_zerossl_api=xxx
+# 证书缓存最大个数(0 不限制)
+ssl_cache_max=0
+# 证书缓存重载间隔(单位:s)
+ssl_cache_reload=3600
+# 证书缓存闲置清理(单位:m)
+ssl_cache_idle=60
+
+# 获取客户端真实 IP
+http_add_origin_header=true
+# 当使用 Nginx 等反向代理 http_proxy_port 时,通过向 HEAD 中插入 X-NPS-Http-Only 和密码来避免 301 重定向(留空关闭该功能)
+#x_nps_http_only=password
+x_nps_http_only=
+
+# HTTP 缓存配置 (已弃用)
+http_cache=false
+http_cache_length=100
+
+#############################################
+# 客户端连接配置
+#############################################
+# Bridge 配置 (tcp|kcp|both)
+bridge_type=tcp
+bridge_ip=0.0.0.0
+# Bridge 监听端口 (配置0关闭)
+bridge_port=${NPS_BRIDGE_PORT}
+# 仅在 bridge_type 为 (tcp|both) 时可用
+bridge_tls_port=${NPS_BRIDGE_TLS_PORT}
+bridge_ws_port=${NPS_BRIDGE_WS_PORT}
+bridge_wss_port=${NPS_BRIDGE_WSS_PORT}
+# WS 的连接路径
+bridge_path=/ws
+# 端口复用需要配置
+bridge_host=xxx.com
+# 如果没有证书建议留空自动随机生成
+#bridge_cert_file=
+#bridge_key_file=
+# 在网页命令行显示的连接地址 (留空使用网页地址)
+bridge_addr=
+
+# 公共密钥
+public_vkey=${NPS_PUBLIC_VKEY}
+
+# P2P 配置
+# 配置'0.0.0.0'自动识别,配置'::'自动识别IPv6,若存在问题请手动指定地址
+p2p_ip=0.0.0.0
+p2p_port=6000
+
+# 客户端断开连接超时时间(60*30秒)
+disconnect_timeout=60
+
+#############################################
+# 允许端口范围配置(可选)
+#############################################
+# 设置允许的端口范围(格式:范围或单个端口,用逗号分隔),如不配置则不限制端口
+# 若需要限制端口,请取消下面注释并根据需要修改配置值:
+#allow_ports=9001-9009,10001,11000-12000
+
+#############################################
+# Web 管理配置
+#############################################
+# 管理后台登录用户名和密码
+web_username=${NPS_WEB_USERNAME}
+web_password=${NPS_WEB_PASSWORD}
+# 2FA 双因素认证密钥
+# 填写后密码登录失效,使用动态验证码登录
+# 可使用"nps -gen2fa"命令来生成TOTP密钥,可使用"-gen2fa=secret"获取当前动态密码
+totp_secret=
+# 开启管理面板验证码校验
+open_captcha=true
+
+# 是否允许使用 X-Real-IP 头部
+allow_x_real_ip=false
+# 受信任的代理服务器 IP 地址(多个用逗号分隔)
+trusted_proxy_ips=127.0.0.1
+
+# Web 管理监听设置
+web_host=${NPS_WEB_HOST}
+web_ip=0.0.0.0
+web_port=${NPS_WEB_PORT}
+# 是否启用 HTTPS
+web_open_ssl=${NPS_WEB_OPEN_SSL}
+# HTTPS 证书配置
+web_cert_file=${NPS_DEFAULT_CERT_FILE}
+web_key_file=${NPS_DEFAULT_KEY_FILE}
+# 请求路径(例如 /nps http://host/nps)
+#web_base_url=/nps
+
+# Web管理多用户设置
+allow_user_login=false
+allow_user_register=false
+allow_user_change_username=false
+
+#############################################
+# Web API 与安全设置
+#############################################
+# 用于 API 访问的认证密钥,建议设置长且复杂以防暴力破解
+auth_key=
+# 获取服务端 authKey 时使用的 AES 加密密钥(16 位),建议随机生成
+auth_crypt_key=${NPS_AUTH_CRYPT_KEY}
+
+#############################################
+# 扩展功能配置
+#############################################
+# 流量数据持久化间隔(单位:分钟),留空表示不持久化
+# 使用限制功能需要开启此选项
+flow_store_interval=1
+# 流量限制
+allow_flow_limit=true
+# 带宽限制
+allow_rate_limit=true
+# 时间限制
+allow_time_limit=true
+# 客户端最大隧道数限制
+allow_tunnel_num_limit=true
+# 允许 NPS 本地代理连接
+allow_local_proxy=false
+# 客户端最大连接数限制
+allow_connection_num_limit=true
+# 允许配置隧道监听IP
+allow_multi_ip=true
+# 系统负载监控显示
+system_info_display=true
+# IP 访问限制(详见文档说明)
+#ip_limit=true
+
+#############################################
+# 日志配置
+#############################################
+# 日志模式:stdout|file|both|off
+log=stdout
+# 日志级别:trace|debug|info|warn|error|fatal|panic|off
+log_level=trace
+# 日志输出路径
+log_path=conf/nps.log
+# 是否启用日志压缩 (true|false)
+log_compress=false
+# 允许保存的日志文件总数
+log_max_files=10
+# 允许保存日志的最大天数
+log_max_days=7
+# 单个日志文件的最大大小(MB),超过此大小将自动轮换
+log_max_size=2
+
+#############################################
+# 调试功能配置
+#############################################
+# pprof 调试选项(取消注释启用)
+#pprof_ip=0.0.0.0
+#pprof_port=9999
diff --git a/apps/nps/0.29.21/data.yml b/apps/nps/0.29.21/data.yml
new file mode 100644
index 000000000..fc16500bb
--- /dev/null
+++ b/apps/nps/0.29.21/data.yml
@@ -0,0 +1,132 @@
+additionalProperties:
+ formFields:
+ - default: 40209
+ edit: true
+ envKey: PANEL_APP_PORT_HTTP
+ labelEn: Web Management Port
+ labelZh: web 管理端口
+ required: true
+ rule: paramPort
+ type: number
+ - default: 8024
+ edit: true
+ envKey: NPS_BRIDGE_PORT
+ labelEn: Server-Client Communication Port
+ labelZh: 服务端客户端通信端口
+ required: true
+ rule: paramPort
+ type: number
+ - default: 8025
+ edit: true
+ envKey: NPS_BRIDGE_TLS_PORT
+ labelEn: Server-Client Communication TLS Port
+ labelZh: 服务端客户端 tls 通信端口
+ required: true
+ rule: paramPort
+ type: number
+ - default: 8026
+ edit: true
+ envKey: NPS_BRIDGE_WS_PORT
+ labelEn: Server-Client Communication WS Port
+ labelZh: 服务端客户端 WS 通信端口
+ required: true
+ rule: paramPort
+ type: number
+ - default: 8027
+ edit: true
+ envKey: NPS_BRIDGE_WSS_PORT
+ labelEn: Server-Client Communication WSS Port
+ labelZh: 服务端客户端 WSS 通信端口
+ required: true
+ rule: paramPort
+ type: number
+ - default: http://localhost:40209
+ edit: true
+ envKey: NPS_WEB_HOST
+ labelEn: External URL(If the default address, please replace localhost with the current service IP)
+ labelZh: 外部访问地址(若默认地址请替换 localhost 为当前服务 IP)
+ required: true
+ rule: paramExtUrl
+ type: text
+ - default: admin
+ edit: true
+ envKey: NPS_WEB_USERNAME
+ labelEn: Web Interface Management Account
+ labelZh: web 界面管理账号
+ random: true
+ required: true
+ rule: paramCommon
+ type: text
+ - default: "123"
+ edit: true
+ envKey: NPS_WEB_PASSWORD
+ labelEn: Web Interface Management Password
+ labelZh: web 界面管理密码
+ random: true
+ required: true
+ rule: paramComplexity
+ type: password
+ - default: "false"
+ edit: true
+ envKey: NPS_WEB_OPEN_SSL
+ labelEn: Enable webui https access
+ labelZh: web 界面开启 https 访问
+ required: true
+ rule: paramCommon
+ type: text
+ - default: 20100
+ edit: true
+ envKey: NPS_RANDOM_PORT_START
+ labelEn: Dynamic Port Range Start
+ labelZh: 动态端口范围开始
+ required: true
+ rule: paramPort
+ type: number
+ - default: 20200
+ edit: true
+ envKey: NPS_RANDOM_PORT_END
+ labelEn: Dynamic Port Range End
+ labelZh: 动态端口范围结束
+ required: true
+ rule: paramPort
+ type: number
+ - default: "xly7traGe3r0t6UWltristuh1"
+ edit: true
+ envKey: NPS_PUBLIC_VKEY
+ labelEn: Key When the Client Starts in Configuration File Mode
+ labelZh: 客户端以配置文件模式启动时的密钥
+ required: false
+ rule: paramCommon
+ type: text
+ - default: "gl8r0tujikih7br5"
+ edit: true
+ envKey: NPS_AUTH_CRYPT_KEY
+ labelEn: 16-bit AES Encryption Key
+ labelZh: 16 位 AES 加密密钥
+ required: false
+ rule: paramCommon
+ type: text
+ - default: 0.0.0.0
+ edit: true
+ envKey: NPS_HTTP_PROXY_IP
+ labelEn: Http Proxy IP
+ labelZh: 域名代理 http 代理监听地址
+ required: false
+ rule: paramCommon
+ type: text
+ - default: 50080
+ edit: true
+ envKey: NPS_HTTP_PROXY_PORT
+ labelEn: Http Proxy Port
+ labelZh: 域名代理 http 代理监听端口
+ required: false
+ rule: paramPort
+ type: number
+ - default: 50443
+ edit: true
+ envKey: NPS_HTTPS_PROXY_PORT
+ labelEn: Https Proxy Port
+ labelZh: 域名代理 https 代理监听端口
+ required: false
+ rule: paramPort
+ type: number
diff --git a/apps/nps/0.29.21/docker-compose.yml b/apps/nps/0.29.21/docker-compose.yml
new file mode 100644
index 000000000..67b22f93b
--- /dev/null
+++ b/apps/nps/0.29.21/docker-compose.yml
@@ -0,0 +1,37 @@
+services:
+ nps:
+ image: duan2001/nps:v0.29.21
+ container_name: ${CONTAINER_NAME}
+ ports:
+ - ${PANEL_APP_PORT_HTTP}:${PANEL_APP_PORT_HTTP}
+ - ${NPS_BRIDGE_PORT}:${NPS_BRIDGE_PORT}
+ - ${NPS_BRIDGE_TLS_PORT}:${NPS_BRIDGE_TLS_PORT}
+ - ${NPS_BRIDGE_WS_PORT}:${NPS_BRIDGE_WS_PORT}
+ - ${NPS_BRIDGE_WSS_PORT}:${NPS_BRIDGE_WSS_PORT}
+ - ${NPS_HTTP_PROXY_PORT}:${NPS_HTTP_PROXY_PORT}
+ - ${NPS_HTTPS_PROXY_PORT}:${NPS_HTTPS_PROXY_PORT}
+ - ${NPS_RANDOM_PORT_START}-${NPS_RANDOM_PORT_END}:${NPS_RANDOM_PORT_START}-${NPS_RANDOM_PORT_END}
+ restart: always
+ volumes:
+ - ./conf:/conf
+ - ./web:/web
+ - /etc/localtime:/etc/localtime:ro
+ environment:
+ NPS_WEB_HOST: ${NPS_WEB_HOST}
+ NPS_WEB_PORT: ${PANEL_APP_PORT_HTTP}
+ NPS_WEB_USERNAME: ${NPS_WEB_USERNAME}
+ NPS_WEB_PASSWORD: ${NPS_WEB_PASSWORD}
+ NPS_WEB_OPEN_SSL: ${NPS_WEB_OPEN_SSL}
+ NPS_PUBLIC_VKEY: ${NPS_PUBLIC_VKEY}
+ NPS_BRIDGE_PORT: ${NPS_BRIDGE_PORT}
+ NPS_AUTH_CRYPT_KEY: ${NPS_AUTH_CRYPT_KEY}
+ NPS_HTTP_PROXY_IP: ${NPS_HTTP_PROXY_IP}
+ NPS_HTTP_PROXY_PORT: ${NPS_HTTP_PROXY_PORT}
+ NPS_HTTPS_PROXY_PORT: ${NPS_HTTPS_PROXY_PORT}
+ network_mode: 1panel-network
+ labels:
+ createdBy: "Apps"
+
+networks:
+ 1panel-network:
+ external: true
\ No newline at end of file
diff --git a/apps/nps/0.29.21/web/static/css/bootstrap-select.min.css b/apps/nps/0.29.21/web/static/css/bootstrap-select.min.css
new file mode 100755
index 000000000..9c50c7b18
--- /dev/null
+++ b/apps/nps/0.29.21/web/static/css/bootstrap-select.min.css
@@ -0,0 +1,6 @@
+/*!
+ * Bootstrap-select v1.14.0-beta3 (https://developer.snapappointments.com/bootstrap-select)
+ *
+ * Copyright 2012-2022 SnapAppointments, LLC
+ * Licensed under MIT (https://github.com/snapappointments/bootstrap-select/blob/master/LICENSE)
+ */@-webkit-keyframes bs-notify-fadeOut{0%{opacity:.9}100%{opacity:0}}@-o-keyframes bs-notify-fadeOut{0%{opacity:.9}100%{opacity:0}}@keyframes bs-notify-fadeOut{0%{opacity:.9}100%{opacity:0}}.bootstrap-select>select.bs-select-hidden,select.bs-select-hidden,select.selectpicker{display:none!important}.bootstrap-select{width:220px;vertical-align:middle}.bootstrap-select>.dropdown-toggle{position:relative;width:100%;text-align:right;white-space:nowrap;display:-webkit-inline-box;display:-webkit-inline-flex;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-webkit-align-items:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-webkit-justify-content:space-between;-ms-flex-pack:justify;justify-content:space-between}.bootstrap-select>.dropdown-toggle:after{margin-top:-1px}.bootstrap-select>.dropdown-toggle.bs-placeholder,.bootstrap-select>.dropdown-toggle.bs-placeholder:active,.bootstrap-select>.dropdown-toggle.bs-placeholder:focus,.bootstrap-select>.dropdown-toggle.bs-placeholder:hover{color:#999}.bootstrap-select>.dropdown-toggle.bs-placeholder.btn-danger,.bootstrap-select>.dropdown-toggle.bs-placeholder.btn-danger:active,.bootstrap-select>.dropdown-toggle.bs-placeholder.btn-danger:focus,.bootstrap-select>.dropdown-toggle.bs-placeholder.btn-danger:hover,.bootstrap-select>.dropdown-toggle.bs-placeholder.btn-dark,.bootstrap-select>.dropdown-toggle.bs-placeholder.btn-dark:active,.bootstrap-select>.dropdown-toggle.bs-placeholder.btn-dark:focus,.bootstrap-select>.dropdown-toggle.bs-placeholder.btn-dark:hover,.bootstrap-select>.dropdown-toggle.bs-placeholder.btn-info,.bootstrap-select>.dropdown-toggle.bs-placeholder.btn-info:active,.bootstrap-select>.dropdown-toggle.bs-placeholder.btn-info:focus,.bootstrap-select>.dropdown-toggle.bs-placeholder.btn-info:hover,.bootstrap-select>.dropdown-toggle.bs-placeholder.btn-primary,.bootstrap-select>.dropdown-toggle.bs-placeholder.btn-primary:active,.bootstrap-select>.dropdown-toggle.bs-placeholder.btn-primary:focus,.bootstrap-select>.dropdown-toggle.bs-placeholder.btn-primary:hover,.bootstrap-select>.dropdown-toggle.bs-placeholder.btn-secondary,.bootstrap-select>.dropdown-toggle.bs-placeholder.btn-secondary:active,.bootstrap-select>.dropdown-toggle.bs-placeholder.btn-secondary:focus,.bootstrap-select>.dropdown-toggle.bs-placeholder.btn-secondary:hover,.bootstrap-select>.dropdown-toggle.bs-placeholder.btn-success,.bootstrap-select>.dropdown-toggle.bs-placeholder.btn-success:active,.bootstrap-select>.dropdown-toggle.bs-placeholder.btn-success:focus,.bootstrap-select>.dropdown-toggle.bs-placeholder.btn-success:hover{color:rgba(255,255,255,.5)}.bootstrap-select>select{position:absolute!important;bottom:0;left:50%;display:block!important;width:.5px!important;height:100%!important;padding:0!important;opacity:0!important;border:none;z-index:0!important}.bootstrap-select>select.mobile-device{top:0;left:0;display:block!important;width:100%!important;z-index:2!important}.bootstrap-select.is-invalid .dropdown-toggle,.error .bootstrap-select .dropdown-toggle,.has-error .bootstrap-select .dropdown-toggle,.was-validated .bootstrap-select select:invalid+.dropdown-toggle{border-color:#b94a48}.bootstrap-select.is-valid .dropdown-toggle,.was-validated .bootstrap-select select:valid+.dropdown-toggle{border-color:#28a745}.bootstrap-select.fit-width{width:auto!important}.bootstrap-select:not([class*=col-]):not([class*=form-control]):not(.input-group-btn){width:220px}.bootstrap-select .dropdown-toggle:focus,.bootstrap-select>select.mobile-device:focus+.dropdown-toggle{outline:thin dotted #333!important;outline:5px auto -webkit-focus-ring-color!important;outline-offset:-2px}.bootstrap-select.form-control{margin-bottom:0;padding:0;border:none;height:auto}:not(.input-group)>.bootstrap-select.form-control:not([class*=col-]){width:100%}.bootstrap-select.form-control.input-group-btn{float:none;z-index:auto}.form-inline .bootstrap-select,.form-inline .bootstrap-select.form-control:not([class*=col-]){width:auto}.bootstrap-select:not(.input-group-btn),.bootstrap-select[class*=col-]{float:none;display:inline-block;margin-left:0}.bootstrap-select.dropdown-menu-right,.bootstrap-select[class*=col-].dropdown-menu-right,.row .bootstrap-select[class*=col-].dropdown-menu-right{float:right}.form-group .bootstrap-select,.form-horizontal .bootstrap-select,.form-inline .bootstrap-select{margin-bottom:0}.form-group-lg .bootstrap-select.form-control,.form-group-sm .bootstrap-select.form-control{padding:0}.form-group-lg .bootstrap-select.form-control .dropdown-toggle,.form-group-sm .bootstrap-select.form-control .dropdown-toggle{height:100%;font-size:inherit;line-height:inherit;border-radius:inherit}.bootstrap-select.form-control-lg .dropdown-toggle,.bootstrap-select.form-control-sm .dropdown-toggle{font-size:inherit;line-height:inherit;border-radius:inherit}.bootstrap-select.form-control-sm .dropdown-toggle{padding:.25rem .5rem}.bootstrap-select.form-control-lg .dropdown-toggle{padding:.5rem 1rem}.form-inline .bootstrap-select .form-control{width:100%}.bootstrap-select.disabled,.bootstrap-select>.disabled{cursor:not-allowed}.bootstrap-select.disabled:focus,.bootstrap-select>.disabled:focus{outline:0!important}.bootstrap-select.bs-container{position:absolute;top:0;left:0;height:0!important;padding:0!important}.bootstrap-select.bs-container .dropdown-menu{z-index:1060}.bootstrap-select .dropdown-toggle .filter-option{position:static;top:0;left:0;float:left;height:100%;width:100%;text-align:left;overflow:hidden;-webkit-box-flex:0;-webkit-flex:0 1 auto;-ms-flex:0 1 auto;flex:0 1 auto}.bs3.bootstrap-select .dropdown-toggle .filter-option{padding-right:inherit}.input-group .bs3-has-addon.bootstrap-select .dropdown-toggle .filter-option{position:absolute;padding-top:inherit;padding-bottom:inherit;padding-left:inherit;float:none}.input-group .bs3-has-addon.bootstrap-select .dropdown-toggle .filter-option .filter-option-inner{padding-right:inherit}.bootstrap-select .dropdown-toggle .filter-option-inner-inner{overflow:hidden}.bootstrap-select .dropdown-toggle .filter-expand{width:0!important;float:left;opacity:0!important;overflow:hidden}.bootstrap-select .dropdown-toggle .caret{position:absolute;top:50%;right:12px;margin-top:-2px;vertical-align:middle}.bootstrap-select .dropdown-toggle .bs-select-clear-selected{position:relative;display:block;margin-right:5px;text-align:center}.bs3.bootstrap-select .dropdown-toggle .bs-select-clear-selected{padding-right:inherit}.bootstrap-select .dropdown-toggle .bs-select-clear-selected span{position:relative;top:-webkit-calc(((-1em / 1.5) + 1ex)/ 2);top:calc(((-1em / 1.5) + 1ex)/ 2);pointer-events:none}.bs3.bootstrap-select .dropdown-toggle .bs-select-clear-selected span{top:auto}.bootstrap-select .dropdown-toggle.bs-placeholder .bs-select-clear-selected{display:none}.input-group .bootstrap-select.form-control .dropdown-toggle{border-radius:inherit}.bootstrap-select[class*=col-] .dropdown-toggle{width:100%}.bootstrap-select .dropdown-menu{min-width:100%;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.bootstrap-select .dropdown-menu>.inner:focus{outline:0!important}.bootstrap-select .dropdown-menu.inner{position:static;float:none;border:0;padding:0;margin:0;border-radius:0;-webkit-box-shadow:none;box-shadow:none}.bootstrap-select .dropdown-menu li{position:relative}.bootstrap-select .dropdown-menu li.active small{color:rgba(255,255,255,.5)!important}.bootstrap-select .dropdown-menu li.disabled a{cursor:not-allowed}.bootstrap-select .dropdown-menu li a{cursor:pointer;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.bootstrap-select .dropdown-menu li a.opt{position:relative;padding-left:2.25em}.bootstrap-select .dropdown-menu li a span.check-mark{display:none}.bootstrap-select .dropdown-menu li a span.text{display:inline-block}.bootstrap-select .dropdown-menu li small{padding-left:.5em}.bootstrap-select .dropdown-menu .notify{position:absolute;bottom:5px;width:96%;margin:0 2%;min-height:26px;padding:3px 5px;background:#f5f5f5;border:1px solid #e3e3e3;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.05);box-shadow:inset 0 1px 1px rgba(0,0,0,.05);pointer-events:none;opacity:.9;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.bootstrap-select .dropdown-menu .notify.fadeOut{-webkit-animation:.3s linear 750ms forwards bs-notify-fadeOut;-o-animation:.3s linear 750ms forwards bs-notify-fadeOut;animation:.3s linear 750ms forwards bs-notify-fadeOut}.bootstrap-select .no-results{padding:3px;background:#f5f5f5;margin:0 5px;white-space:nowrap}.bootstrap-select.fit-width .dropdown-toggle .filter-option{position:static;display:inline;padding:0}.bootstrap-select.fit-width .dropdown-toggle .filter-option-inner,.bootstrap-select.fit-width .dropdown-toggle .filter-option-inner-inner{display:inline}.bootstrap-select.fit-width .dropdown-toggle .bs-caret:before{content:'\00a0'}.bootstrap-select.fit-width .dropdown-toggle .caret{position:static;top:auto;margin-top:-1px}.bootstrap-select.show-tick .dropdown-menu .selected span.check-mark{position:absolute;display:inline-block;right:15px;top:5px}.bootstrap-select.show-tick .dropdown-menu li a span.text{margin-right:34px}.bootstrap-select .bs-ok-default:after{content:'';display:block;width:.5em;height:1em;border-style:solid;border-width:0 .26em .26em 0;-webkit-transform-style:preserve-3d;transform-style:preserve-3d;-webkit-transform:rotate(45deg);-ms-transform:rotate(45deg);-o-transform:rotate(45deg);transform:rotate(45deg)}.bootstrap-select.show-menu-arrow.open>.dropdown-toggle,.bootstrap-select.show-menu-arrow.show>.dropdown-toggle{z-index:1061}.bootstrap-select.show-menu-arrow .dropdown-toggle .filter-option:before{content:'';border-left:7px solid transparent;border-right:7px solid transparent;border-bottom:7px solid rgba(204,204,204,.2);position:absolute;bottom:-4px;left:9px;display:none}.bootstrap-select.show-menu-arrow .dropdown-toggle .filter-option:after{content:'';border-left:6px solid transparent;border-right:6px solid transparent;border-bottom:6px solid #fff;position:absolute;bottom:-4px;left:10px;display:none}.bootstrap-select.show-menu-arrow.dropup .dropdown-toggle .filter-option:before{bottom:auto;top:-4px;border-top:7px solid rgba(204,204,204,.2);border-bottom:0}.bootstrap-select.show-menu-arrow.dropup .dropdown-toggle .filter-option:after{bottom:auto;top:-4px;border-top:6px solid #fff;border-bottom:0}.bootstrap-select.show-menu-arrow.pull-right .dropdown-toggle .filter-option:before{right:12px;left:auto}.bootstrap-select.show-menu-arrow.pull-right .dropdown-toggle .filter-option:after{right:13px;left:auto}.bootstrap-select.show-menu-arrow.open>.dropdown-toggle .filter-option:after,.bootstrap-select.show-menu-arrow.open>.dropdown-toggle .filter-option:before,.bootstrap-select.show-menu-arrow.show>.dropdown-toggle .filter-option:after,.bootstrap-select.show-menu-arrow.show>.dropdown-toggle .filter-option:before{display:block}.bs-actionsbox,.bs-donebutton,.bs-searchbox{padding:4px 8px}.bs-actionsbox{width:100%;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.bs-actionsbox .btn-group{display:block}.bs-actionsbox .btn-group button{width:50%}.bs-donebutton{float:left;width:100%;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.bs-donebutton .btn-group{display:block}.bs-donebutton .btn-group button{width:100%}.bs-searchbox+.bs-actionsbox{padding:0 8px 4px}.bs-searchbox .form-control{margin-bottom:0;width:100%;float:none}
\ No newline at end of file
diff --git a/apps/nps/0.29.21/web/static/css/bootstrap-table.min.css b/apps/nps/0.29.21/web/static/css/bootstrap-table.min.css
new file mode 100755
index 000000000..775661119
--- /dev/null
+++ b/apps/nps/0.29.21/web/static/css/bootstrap-table.min.css
@@ -0,0 +1,10 @@
+/**
+ * bootstrap-table - An extended table to integration with some of the most widely used CSS frameworks. (Supports Bootstrap, Semantic UI, Bulma, Material Design, Foundation)
+ *
+ * @version v1.24.1
+ * @homepage https://bootstrap-table.com
+ * @author wenzhixin (http://wenzhixin.net.cn/)
+ * @license MIT
+ */
+
+@charset "UTF-8";.bootstrap-table .fixed-table-toolbar::after{content:"";display:block;clear:both}.bootstrap-table .fixed-table-toolbar .bs-bars,.bootstrap-table .fixed-table-toolbar .columns,.bootstrap-table .fixed-table-toolbar .search{position:relative;margin-top:10px;margin-bottom:10px}.bootstrap-table .fixed-table-toolbar .columns .btn-group>.btn-group{display:inline-block;margin-left:-1px!important}.bootstrap-table .fixed-table-toolbar .columns .btn-group>.btn-group>.btn{border-radius:0}.bootstrap-table .fixed-table-toolbar .columns .btn-group>.btn-group:first-child>.btn{border-top-left-radius:4px;border-bottom-left-radius:4px}.bootstrap-table .fixed-table-toolbar .columns .btn-group>.btn-group:last-child>.btn{border-top-right-radius:4px;border-bottom-right-radius:4px}.bootstrap-table .fixed-table-toolbar .columns .dropdown-menu{text-align:left;max-height:300px;overflow:auto;-ms-overflow-style:scrollbar;z-index:1001}.bootstrap-table .fixed-table-toolbar .columns label{display:block;padding:3px 20px;clear:both;font-weight:400;line-height:1.4286}.bootstrap-table .fixed-table-toolbar .columns-left{margin-right:5px}.bootstrap-table .fixed-table-toolbar .columns-right{margin-left:5px}.bootstrap-table .fixed-table-toolbar .pull-right .dropdown-menu{right:0;left:auto}.bootstrap-table .fixed-table-container{position:relative;clear:both}.bootstrap-table .fixed-table-container .table{width:100%;margin-bottom:0!important}.bootstrap-table .fixed-table-container .table td,.bootstrap-table .fixed-table-container .table th{vertical-align:middle;box-sizing:border-box}.bootstrap-table .fixed-table-container .table tfoot th,.bootstrap-table .fixed-table-container .table thead th{vertical-align:bottom;padding:0;margin:0}.bootstrap-table .fixed-table-container .table tfoot th:focus,.bootstrap-table .fixed-table-container .table thead th:focus{outline:0 solid transparent}.bootstrap-table .fixed-table-container .table tfoot th.detail,.bootstrap-table .fixed-table-container .table thead th.detail{width:30px}.bootstrap-table .fixed-table-container .table tfoot th .th-inner,.bootstrap-table .fixed-table-container .table thead th .th-inner{padding:.75rem;vertical-align:bottom;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.bootstrap-table .fixed-table-container .table tfoot th .sortable,.bootstrap-table .fixed-table-container .table thead th .sortable{cursor:pointer;background-position:right;background-repeat:no-repeat;padding-right:30px!important}.bootstrap-table .fixed-table-container .table tfoot th .sortable.sortable-center,.bootstrap-table .fixed-table-container .table thead th .sortable.sortable-center{padding-left:20px!important;padding-right:20px!important}.bootstrap-table .fixed-table-container .table tfoot th .both,.bootstrap-table .fixed-table-container .table thead th .both{background-image:url('data:image/svg+xml;utf8,');background-size:16px 16px;background-position:center right 2px}.bootstrap-table .fixed-table-container .table tfoot th .asc,.bootstrap-table .fixed-table-container .table thead th .asc{background-image:url('data:image/svg+xml;utf8,')}.bootstrap-table .fixed-table-container .table tfoot th .desc,.bootstrap-table .fixed-table-container .table thead th .desc{background-image:url('data:image/svg+xml;utf8,')}.bootstrap-table .fixed-table-container .table tbody tr.selected td{background-color:rgba(0,0,0,.075)}.bootstrap-table .fixed-table-container .table tbody tr.no-records-found td{text-align:center}.bootstrap-table .fixed-table-container .table tbody tr .card-view{display:flex}.bootstrap-table .fixed-table-container .table tbody tr .card-view .card-view-title{font-weight:700;display:inline-block;min-width:30%;width:auto!important;text-align:left!important}.bootstrap-table .fixed-table-container .table tbody tr .card-view .card-view-value{width:100%!important;text-align:left!important}.bootstrap-table .fixed-table-container .table .bs-checkbox{text-align:center}.bootstrap-table .fixed-table-container .table .bs-checkbox label{margin-bottom:0}.bootstrap-table .fixed-table-container .table .bs-checkbox label input[type=checkbox],.bootstrap-table .fixed-table-container .table .bs-checkbox label input[type=radio]{margin:0 auto!important}.bootstrap-table .fixed-table-container .table.table-sm .th-inner{padding:.25rem}.bootstrap-table .fixed-table-container.fixed-height:not(.has-footer){border-bottom:1px solid #dee2e6}.bootstrap-table .fixed-table-container.fixed-height.has-card-view{border-top:1px solid #dee2e6;border-bottom:1px solid #dee2e6}.bootstrap-table .fixed-table-container.fixed-height .fixed-table-border{border-left:1px solid #dee2e6;border-right:1px solid #dee2e6}.bootstrap-table .fixed-table-container.fixed-height .table thead th{border-bottom:1px solid #dee2e6}.bootstrap-table .fixed-table-container.fixed-height .table-dark thead th{border-bottom:1px solid #32383e}.bootstrap-table .fixed-table-container .fixed-table-header{overflow:hidden}.bootstrap-table .fixed-table-container .fixed-table-body{overflow:auto;height:100%}.bootstrap-table .fixed-table-container .fixed-table-body .fixed-table-loading{align-items:center;background:#fff;display:flex;justify-content:center;position:absolute;bottom:0;width:100%;max-width:100%;z-index:1000;transition:visibility 0s,opacity .15s ease-in-out;opacity:0;visibility:hidden}.bootstrap-table .fixed-table-container .fixed-table-body .fixed-table-loading.open{visibility:visible;opacity:1}.bootstrap-table .fixed-table-container .fixed-table-body .fixed-table-loading .loading-wrap{align-items:baseline;display:flex;justify-content:center}.bootstrap-table .fixed-table-container .fixed-table-body .fixed-table-loading .loading-wrap .loading-text{margin-right:6px}.bootstrap-table .fixed-table-container .fixed-table-body .fixed-table-loading .loading-wrap .animation-wrap{align-items:center;display:flex;justify-content:center}.bootstrap-table .fixed-table-container .fixed-table-body .fixed-table-loading .loading-wrap .animation-dot,.bootstrap-table .fixed-table-container .fixed-table-body .fixed-table-loading .loading-wrap .animation-wrap::after,.bootstrap-table .fixed-table-container .fixed-table-body .fixed-table-loading .loading-wrap .animation-wrap::before{content:"";animation-duration:1.5s;animation-iteration-count:infinite;animation-name:loading;background:#212529;border-radius:50%;display:block;height:5px;margin:0 4px;opacity:0;width:5px}.bootstrap-table .fixed-table-container .fixed-table-body .fixed-table-loading .loading-wrap .animation-dot{animation-delay:.3s}.bootstrap-table .fixed-table-container .fixed-table-body .fixed-table-loading .loading-wrap .animation-wrap::after{animation-delay:.6s}.bootstrap-table .fixed-table-container .fixed-table-body .fixed-table-loading.table-dark{background:#212529}.bootstrap-table .fixed-table-container .fixed-table-body .fixed-table-loading.table-dark .animation-dot,.bootstrap-table .fixed-table-container .fixed-table-body .fixed-table-loading.table-dark .animation-wrap::after,.bootstrap-table .fixed-table-container .fixed-table-body .fixed-table-loading.table-dark .animation-wrap::before{background:#fff}.bootstrap-table .fixed-table-container .fixed-table-footer{overflow:hidden}.bootstrap-table .fixed-table-pagination::after{content:"";display:block;clear:both}.bootstrap-table .fixed-table-pagination>.pagination,.bootstrap-table .fixed-table-pagination>.pagination-detail{margin-top:10px;margin-bottom:10px}.bootstrap-table .fixed-table-pagination>.pagination-detail .pagination-info{line-height:34px;margin-right:5px}.bootstrap-table .fixed-table-pagination>.pagination-detail .page-list{display:inline-block}.bootstrap-table .fixed-table-pagination>.pagination-detail .page-list .btn-group{position:relative;display:inline-block;vertical-align:middle}.bootstrap-table .fixed-table-pagination>.pagination-detail .page-list .btn-group .dropdown-menu{margin-bottom:0}.bootstrap-table .fixed-table-pagination>.pagination ul.pagination{margin:0}.bootstrap-table .fixed-table-pagination>.pagination ul.pagination li.page-intermediate a{color:#c8c8c8}.bootstrap-table .fixed-table-pagination>.pagination ul.pagination li.page-intermediate a::before{content:"⬅"}.bootstrap-table .fixed-table-pagination>.pagination ul.pagination li.page-intermediate a::after{content:"➡"}.bootstrap-table .fixed-table-pagination>.pagination ul.pagination li.disabled a{pointer-events:none;cursor:default}.bootstrap-table.fullscreen{position:fixed;top:0;left:0;z-index:1050;width:100%!important;background:#fff;height:100vh;overflow-y:scroll}.bootstrap-table.bootstrap4 .pagination-lg .page-link,.bootstrap-table.bootstrap5 .pagination-lg .page-link{padding:.5rem 1rem}.bootstrap-table.bootstrap5 .float-left{float:left}.bootstrap-table.bootstrap5 .float-right{float:right}div.fixed-table-scroll-inner{width:100%;height:200px}div.fixed-table-scroll-outer{top:0;left:0;visibility:hidden;width:200px;height:150px;overflow:hidden}@keyframes loading{0%{opacity:0}50%{opacity:1}100%{opacity:0}}
\ No newline at end of file
diff --git a/apps/nps/0.29.21/web/static/css/bootstrap.min.css b/apps/nps/0.29.21/web/static/css/bootstrap.min.css
new file mode 100644
index 000000000..6561b6f4c
--- /dev/null
+++ b/apps/nps/0.29.21/web/static/css/bootstrap.min.css
@@ -0,0 +1,7 @@
+/*!
+ * Bootstrap v4.0.0 (https://getbootstrap.com)
+ * Copyright 2011-2018 The Bootstrap Authors
+ * Copyright 2011-2018 Twitter, Inc.
+ * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
+ */:root{--blue:#007bff;--indigo:#6610f2;--purple:#6f42c1;--pink:#e83e8c;--red:#dc3545;--orange:#fd7e14;--yellow:#ffc107;--green:#28a745;--teal:#20c997;--cyan:#17a2b8;--white:#fff;--gray:#6c757d;--gray-dark:#343a40;--primary:#007bff;--secondary:#6c757d;--success:#28a745;--info:#17a2b8;--warning:#ffc107;--danger:#dc3545;--light:#f8f9fa;--dark:#343a40;--breakpoint-xs:0;--breakpoint-sm:576px;--breakpoint-md:768px;--breakpoint-lg:992px;--breakpoint-xl:1200px;--font-family-sans-serif:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol";--font-family-monospace:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace}*,::after,::before{box-sizing:border-box}html{font-family:sans-serif;line-height:1.15;-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%;-ms-overflow-style:scrollbar;-webkit-tap-highlight-color:transparent}@-ms-viewport{width:device-width}article,aside,dialog,figcaption,figure,footer,header,hgroup,main,nav,section{display:block}body{margin:0;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol";font-size:1rem;font-weight:400;line-height:1.5;color:#212529;text-align:left;background-color:#fff}[tabindex="-1"]:focus{outline:0!important}hr{box-sizing:content-box;height:0;overflow:visible}h1,h2,h3,h4,h5,h6{margin-top:0;margin-bottom:.5rem}p{margin-top:0;margin-bottom:1rem}abbr[data-original-title],abbr[title]{text-decoration:underline;-webkit-text-decoration:underline dotted;text-decoration:underline dotted;cursor:help;border-bottom:0}address{margin-bottom:1rem;font-style:normal;line-height:inherit}dl,ol,ul{margin-top:0;margin-bottom:1rem}ol ol,ol ul,ul ol,ul ul{margin-bottom:0}dt{font-weight:700}dd{margin-bottom:.5rem;margin-left:0}blockquote{margin:0 0 1rem}dfn{font-style:italic}b,strong{font-weight:bolder}small{font-size:80%}sub,sup{position:relative;font-size:75%;line-height:0;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}a{color:#007bff;text-decoration:none;background-color:transparent;-webkit-text-decoration-skip:objects}a:hover{color:#0056b3;text-decoration:underline}a:not([href]):not([tabindex]){color:inherit;text-decoration:none}a:not([href]):not([tabindex]):focus,a:not([href]):not([tabindex]):hover{color:inherit;text-decoration:none}a:not([href]):not([tabindex]):focus{outline:0}code,kbd,pre,samp{font-family:monospace,monospace;font-size:1em}pre{margin-top:0;margin-bottom:1rem;overflow:auto;-ms-overflow-style:scrollbar}figure{margin:0 0 1rem}img{vertical-align:middle;border-style:none}svg:not(:root){overflow:hidden}table{border-collapse:collapse}caption{padding-top:.75rem;padding-bottom:.75rem;color:#6c757d;text-align:left;caption-side:bottom}th{text-align:inherit}label{display:inline-block;margin-bottom:.5rem}button{border-radius:0}button:focus{outline:1px dotted;outline:5px auto -webkit-focus-ring-color}button,input,optgroup,select,textarea{margin:0;font-family:inherit;font-size:inherit;line-height:inherit}button,input{overflow:visible}button,select{text-transform:none}[type=reset],[type=submit],button,html [type=button]{-webkit-appearance:button}[type=button]::-moz-focus-inner,[type=reset]::-moz-focus-inner,[type=submit]::-moz-focus-inner,button::-moz-focus-inner{padding:0;border-style:none}input[type=checkbox],input[type=radio]{box-sizing:border-box;padding:0}input[type=date],input[type=datetime-local],input[type=month],input[type=time]{-webkit-appearance:listbox}textarea{overflow:auto;resize:vertical}fieldset{min-width:0;padding:0;margin:0;border:0}legend{display:block;width:100%;max-width:100%;padding:0;margin-bottom:.5rem;font-size:1.5rem;line-height:inherit;color:inherit;white-space:normal}progress{vertical-align:baseline}[type=number]::-webkit-inner-spin-button,[type=number]::-webkit-outer-spin-button{height:auto}[type=search]{outline-offset:-2px;-webkit-appearance:none}[type=search]::-webkit-search-cancel-button,[type=search]::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{font:inherit;-webkit-appearance:button}output{display:inline-block}summary{display:list-item;cursor:pointer}template{display:none}[hidden]{display:none!important}.h1,.h2,.h3,.h4,.h5,.h6,h1,h2,h3,h4,h5,h6{margin-bottom:.5rem;font-family:inherit;font-weight:500;line-height:1.2;color:inherit}.h1,h1{font-size:2.5rem}.h2,h2{font-size:2rem}.h3,h3{font-size:1.75rem}.h4,h4{font-size:1.5rem}.h5,h5{font-size:1.25rem}.h6,h6{font-size:1rem}.lead{font-size:1.25rem;font-weight:300}.display-1{font-size:6rem;font-weight:300;line-height:1.2}.display-2{font-size:5.5rem;font-weight:300;line-height:1.2}.display-3{font-size:4.5rem;font-weight:300;line-height:1.2}.display-4{font-size:3.5rem;font-weight:300;line-height:1.2}hr{margin-top:1rem;margin-bottom:1rem;border:0;border-top:1px solid rgba(0,0,0,.1)}.small,small{font-size:80%;font-weight:400}.mark,mark{padding:.2em;background-color:#fcf8e3}.list-unstyled{padding-left:0;list-style:none}.list-inline{padding-left:0;list-style:none}.list-inline-item{display:inline-block}.list-inline-item:not(:last-child){margin-right:.5rem}.initialism{font-size:90%;text-transform:uppercase}.blockquote{margin-bottom:1rem;font-size:1.25rem}.blockquote-footer{display:block;font-size:80%;color:#6c757d}.blockquote-footer::before{content:"\2014 \00A0"}.img-fluid{max-width:100%;height:auto}.img-thumbnail{padding:.25rem;background-color:#fff;border:1px solid #dee2e6;border-radius:.25rem;max-width:100%;height:auto}.figure{display:inline-block}.figure-img{margin-bottom:.5rem;line-height:1}.figure-caption{font-size:90%;color:#6c757d}code,kbd,pre,samp{font-family:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace}code{font-size:87.5%;color:#e83e8c;word-break:break-word}a>code{color:inherit}kbd{padding:.2rem .4rem;font-size:87.5%;color:#fff;background-color:#212529;border-radius:.2rem}kbd kbd{padding:0;font-size:100%;font-weight:700}pre{display:block;font-size:87.5%;color:#212529}pre code{font-size:inherit;color:inherit;word-break:normal}.pre-scrollable{max-height:340px;overflow-y:scroll}.container{width:100%;padding-right:15px;padding-left:15px;margin-right:auto;margin-left:auto}@media (min-width:576px){.container{max-width:540px}}@media (min-width:768px){.container{max-width:720px}}@media (min-width:992px){.container{max-width:960px}}@media (min-width:1200px){.container{max-width:1140px}}.container-fluid{width:100%;padding-right:15px;padding-left:15px;margin-right:auto;margin-left:auto}.row{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;margin-right:-15px;margin-left:-15px}.no-gutters{margin-right:0;margin-left:0}.no-gutters>.col,.no-gutters>[class*=col-]{padding-right:0;padding-left:0}.col,.col-1,.col-10,.col-11,.col-12,.col-2,.col-3,.col-4,.col-5,.col-6,.col-7,.col-8,.col-9,.col-auto,.col-lg,.col-lg-1,.col-lg-10,.col-lg-11,.col-lg-12,.col-lg-2,.col-lg-3,.col-lg-4,.col-lg-5,.col-lg-6,.col-lg-7,.col-lg-8,.col-lg-9,.col-lg-auto,.col-md,.col-md-1,.col-md-10,.col-md-11,.col-md-12,.col-md-2,.col-md-3,.col-md-4,.col-md-5,.col-md-6,.col-md-7,.col-md-8,.col-md-9,.col-md-auto,.col-sm,.col-sm-1,.col-sm-10,.col-sm-11,.col-sm-12,.col-sm-2,.col-sm-3,.col-sm-4,.col-sm-5,.col-sm-6,.col-sm-7,.col-sm-8,.col-sm-9,.col-sm-auto,.col-xl,.col-xl-1,.col-xl-10,.col-xl-11,.col-xl-12,.col-xl-2,.col-xl-3,.col-xl-4,.col-xl-5,.col-xl-6,.col-xl-7,.col-xl-8,.col-xl-9,.col-xl-auto{position:relative;width:100%;min-height:1px;padding-right:15px;padding-left:15px}.col{-ms-flex-preferred-size:0;flex-basis:0;-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;max-width:100%}.col-auto{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;width:auto;max-width:none}.col-1{-webkit-box-flex:0;-ms-flex:0 0 8.333333%;flex:0 0 8.333333%;max-width:8.333333%}.col-2{-webkit-box-flex:0;-ms-flex:0 0 16.666667%;flex:0 0 16.666667%;max-width:16.666667%}.col-3{-webkit-box-flex:0;-ms-flex:0 0 25%;flex:0 0 25%;max-width:25%}.col-4{-webkit-box-flex:0;-ms-flex:0 0 33.333333%;flex:0 0 33.333333%;max-width:33.333333%}.col-5{-webkit-box-flex:0;-ms-flex:0 0 41.666667%;flex:0 0 41.666667%;max-width:41.666667%}.col-6{-webkit-box-flex:0;-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}.col-7{-webkit-box-flex:0;-ms-flex:0 0 58.333333%;flex:0 0 58.333333%;max-width:58.333333%}.col-8{-webkit-box-flex:0;-ms-flex:0 0 66.666667%;flex:0 0 66.666667%;max-width:66.666667%}.col-9{-webkit-box-flex:0;-ms-flex:0 0 75%;flex:0 0 75%;max-width:75%}.col-10{-webkit-box-flex:0;-ms-flex:0 0 83.333333%;flex:0 0 83.333333%;max-width:83.333333%}.col-11{-webkit-box-flex:0;-ms-flex:0 0 91.666667%;flex:0 0 91.666667%;max-width:91.666667%}.col-12{-webkit-box-flex:0;-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}.order-first{-webkit-box-ordinal-group:0;-ms-flex-order:-1;order:-1}.order-last{-webkit-box-ordinal-group:14;-ms-flex-order:13;order:13}.order-0{-webkit-box-ordinal-group:1;-ms-flex-order:0;order:0}.order-1{-webkit-box-ordinal-group:2;-ms-flex-order:1;order:1}.order-2{-webkit-box-ordinal-group:3;-ms-flex-order:2;order:2}.order-3{-webkit-box-ordinal-group:4;-ms-flex-order:3;order:3}.order-4{-webkit-box-ordinal-group:5;-ms-flex-order:4;order:4}.order-5{-webkit-box-ordinal-group:6;-ms-flex-order:5;order:5}.order-6{-webkit-box-ordinal-group:7;-ms-flex-order:6;order:6}.order-7{-webkit-box-ordinal-group:8;-ms-flex-order:7;order:7}.order-8{-webkit-box-ordinal-group:9;-ms-flex-order:8;order:8}.order-9{-webkit-box-ordinal-group:10;-ms-flex-order:9;order:9}.order-10{-webkit-box-ordinal-group:11;-ms-flex-order:10;order:10}.order-11{-webkit-box-ordinal-group:12;-ms-flex-order:11;order:11}.order-12{-webkit-box-ordinal-group:13;-ms-flex-order:12;order:12}.offset-1{margin-left:8.333333%}.offset-2{margin-left:16.666667%}.offset-3{margin-left:25%}.offset-4{margin-left:33.333333%}.offset-5{margin-left:41.666667%}.offset-6{margin-left:50%}.offset-7{margin-left:58.333333%}.offset-8{margin-left:66.666667%}.offset-9{margin-left:75%}.offset-10{margin-left:83.333333%}.offset-11{margin-left:91.666667%}@media (min-width:576px){.col-sm{-ms-flex-preferred-size:0;flex-basis:0;-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;max-width:100%}.col-sm-auto{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;width:auto;max-width:none}.col-sm-1{-webkit-box-flex:0;-ms-flex:0 0 8.333333%;flex:0 0 8.333333%;max-width:8.333333%}.col-sm-2{-webkit-box-flex:0;-ms-flex:0 0 16.666667%;flex:0 0 16.666667%;max-width:16.666667%}.col-sm-3{-webkit-box-flex:0;-ms-flex:0 0 25%;flex:0 0 25%;max-width:25%}.col-sm-4{-webkit-box-flex:0;-ms-flex:0 0 33.333333%;flex:0 0 33.333333%;max-width:33.333333%}.col-sm-5{-webkit-box-flex:0;-ms-flex:0 0 41.666667%;flex:0 0 41.666667%;max-width:41.666667%}.col-sm-6{-webkit-box-flex:0;-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}.col-sm-7{-webkit-box-flex:0;-ms-flex:0 0 58.333333%;flex:0 0 58.333333%;max-width:58.333333%}.col-sm-8{-webkit-box-flex:0;-ms-flex:0 0 66.666667%;flex:0 0 66.666667%;max-width:66.666667%}.col-sm-9{-webkit-box-flex:0;-ms-flex:0 0 75%;flex:0 0 75%;max-width:75%}.col-sm-10{-webkit-box-flex:0;-ms-flex:0 0 83.333333%;flex:0 0 83.333333%;max-width:83.333333%}.col-sm-11{-webkit-box-flex:0;-ms-flex:0 0 91.666667%;flex:0 0 91.666667%;max-width:91.666667%}.col-sm-12{-webkit-box-flex:0;-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}.order-sm-first{-webkit-box-ordinal-group:0;-ms-flex-order:-1;order:-1}.order-sm-last{-webkit-box-ordinal-group:14;-ms-flex-order:13;order:13}.order-sm-0{-webkit-box-ordinal-group:1;-ms-flex-order:0;order:0}.order-sm-1{-webkit-box-ordinal-group:2;-ms-flex-order:1;order:1}.order-sm-2{-webkit-box-ordinal-group:3;-ms-flex-order:2;order:2}.order-sm-3{-webkit-box-ordinal-group:4;-ms-flex-order:3;order:3}.order-sm-4{-webkit-box-ordinal-group:5;-ms-flex-order:4;order:4}.order-sm-5{-webkit-box-ordinal-group:6;-ms-flex-order:5;order:5}.order-sm-6{-webkit-box-ordinal-group:7;-ms-flex-order:6;order:6}.order-sm-7{-webkit-box-ordinal-group:8;-ms-flex-order:7;order:7}.order-sm-8{-webkit-box-ordinal-group:9;-ms-flex-order:8;order:8}.order-sm-9{-webkit-box-ordinal-group:10;-ms-flex-order:9;order:9}.order-sm-10{-webkit-box-ordinal-group:11;-ms-flex-order:10;order:10}.order-sm-11{-webkit-box-ordinal-group:12;-ms-flex-order:11;order:11}.order-sm-12{-webkit-box-ordinal-group:13;-ms-flex-order:12;order:12}.offset-sm-0{margin-left:0}.offset-sm-1{margin-left:8.333333%}.offset-sm-2{margin-left:16.666667%}.offset-sm-3{margin-left:25%}.offset-sm-4{margin-left:33.333333%}.offset-sm-5{margin-left:41.666667%}.offset-sm-6{margin-left:50%}.offset-sm-7{margin-left:58.333333%}.offset-sm-8{margin-left:66.666667%}.offset-sm-9{margin-left:75%}.offset-sm-10{margin-left:83.333333%}.offset-sm-11{margin-left:91.666667%}}@media (min-width:768px){.col-md{-ms-flex-preferred-size:0;flex-basis:0;-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;max-width:100%}.col-md-auto{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;width:auto;max-width:none}.col-md-1{-webkit-box-flex:0;-ms-flex:0 0 8.333333%;flex:0 0 8.333333%;max-width:8.333333%}.col-md-2{-webkit-box-flex:0;-ms-flex:0 0 16.666667%;flex:0 0 16.666667%;max-width:16.666667%}.col-md-3{-webkit-box-flex:0;-ms-flex:0 0 25%;flex:0 0 25%;max-width:25%}.col-md-4{-webkit-box-flex:0;-ms-flex:0 0 33.333333%;flex:0 0 33.333333%;max-width:33.333333%}.col-md-5{-webkit-box-flex:0;-ms-flex:0 0 41.666667%;flex:0 0 41.666667%;max-width:41.666667%}.col-md-6{-webkit-box-flex:0;-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}.col-md-7{-webkit-box-flex:0;-ms-flex:0 0 58.333333%;flex:0 0 58.333333%;max-width:58.333333%}.col-md-8{-webkit-box-flex:0;-ms-flex:0 0 66.666667%;flex:0 0 66.666667%;max-width:66.666667%}.col-md-9{-webkit-box-flex:0;-ms-flex:0 0 75%;flex:0 0 75%;max-width:75%}.col-md-10{-webkit-box-flex:0;-ms-flex:0 0 83.333333%;flex:0 0 83.333333%;max-width:83.333333%}.col-md-11{-webkit-box-flex:0;-ms-flex:0 0 91.666667%;flex:0 0 91.666667%;max-width:91.666667%}.col-md-12{-webkit-box-flex:0;-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}.order-md-first{-webkit-box-ordinal-group:0;-ms-flex-order:-1;order:-1}.order-md-last{-webkit-box-ordinal-group:14;-ms-flex-order:13;order:13}.order-md-0{-webkit-box-ordinal-group:1;-ms-flex-order:0;order:0}.order-md-1{-webkit-box-ordinal-group:2;-ms-flex-order:1;order:1}.order-md-2{-webkit-box-ordinal-group:3;-ms-flex-order:2;order:2}.order-md-3{-webkit-box-ordinal-group:4;-ms-flex-order:3;order:3}.order-md-4{-webkit-box-ordinal-group:5;-ms-flex-order:4;order:4}.order-md-5{-webkit-box-ordinal-group:6;-ms-flex-order:5;order:5}.order-md-6{-webkit-box-ordinal-group:7;-ms-flex-order:6;order:6}.order-md-7{-webkit-box-ordinal-group:8;-ms-flex-order:7;order:7}.order-md-8{-webkit-box-ordinal-group:9;-ms-flex-order:8;order:8}.order-md-9{-webkit-box-ordinal-group:10;-ms-flex-order:9;order:9}.order-md-10{-webkit-box-ordinal-group:11;-ms-flex-order:10;order:10}.order-md-11{-webkit-box-ordinal-group:12;-ms-flex-order:11;order:11}.order-md-12{-webkit-box-ordinal-group:13;-ms-flex-order:12;order:12}.offset-md-0{margin-left:0}.offset-md-1{margin-left:8.333333%}.offset-md-2{margin-left:16.666667%}.offset-md-3{margin-left:25%}.offset-md-4{margin-left:33.333333%}.offset-md-5{margin-left:41.666667%}.offset-md-6{margin-left:50%}.offset-md-7{margin-left:58.333333%}.offset-md-8{margin-left:66.666667%}.offset-md-9{margin-left:75%}.offset-md-10{margin-left:83.333333%}.offset-md-11{margin-left:91.666667%}}@media (min-width:992px){.col-lg{-ms-flex-preferred-size:0;flex-basis:0;-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;max-width:100%}.col-lg-auto{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;width:auto;max-width:none}.col-lg-1{-webkit-box-flex:0;-ms-flex:0 0 8.333333%;flex:0 0 8.333333%;max-width:8.333333%}.col-lg-2{-webkit-box-flex:0;-ms-flex:0 0 16.666667%;flex:0 0 16.666667%;max-width:16.666667%}.col-lg-3{-webkit-box-flex:0;-ms-flex:0 0 25%;flex:0 0 25%;max-width:25%}.col-lg-4{-webkit-box-flex:0;-ms-flex:0 0 33.333333%;flex:0 0 33.333333%;max-width:33.333333%}.col-lg-5{-webkit-box-flex:0;-ms-flex:0 0 41.666667%;flex:0 0 41.666667%;max-width:41.666667%}.col-lg-6{-webkit-box-flex:0;-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}.col-lg-7{-webkit-box-flex:0;-ms-flex:0 0 58.333333%;flex:0 0 58.333333%;max-width:58.333333%}.col-lg-8{-webkit-box-flex:0;-ms-flex:0 0 66.666667%;flex:0 0 66.666667%;max-width:66.666667%}.col-lg-9{-webkit-box-flex:0;-ms-flex:0 0 75%;flex:0 0 75%;max-width:75%}.col-lg-10{-webkit-box-flex:0;-ms-flex:0 0 83.333333%;flex:0 0 83.333333%;max-width:83.333333%}.col-lg-11{-webkit-box-flex:0;-ms-flex:0 0 91.666667%;flex:0 0 91.666667%;max-width:91.666667%}.col-lg-12{-webkit-box-flex:0;-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}.order-lg-first{-webkit-box-ordinal-group:0;-ms-flex-order:-1;order:-1}.order-lg-last{-webkit-box-ordinal-group:14;-ms-flex-order:13;order:13}.order-lg-0{-webkit-box-ordinal-group:1;-ms-flex-order:0;order:0}.order-lg-1{-webkit-box-ordinal-group:2;-ms-flex-order:1;order:1}.order-lg-2{-webkit-box-ordinal-group:3;-ms-flex-order:2;order:2}.order-lg-3{-webkit-box-ordinal-group:4;-ms-flex-order:3;order:3}.order-lg-4{-webkit-box-ordinal-group:5;-ms-flex-order:4;order:4}.order-lg-5{-webkit-box-ordinal-group:6;-ms-flex-order:5;order:5}.order-lg-6{-webkit-box-ordinal-group:7;-ms-flex-order:6;order:6}.order-lg-7{-webkit-box-ordinal-group:8;-ms-flex-order:7;order:7}.order-lg-8{-webkit-box-ordinal-group:9;-ms-flex-order:8;order:8}.order-lg-9{-webkit-box-ordinal-group:10;-ms-flex-order:9;order:9}.order-lg-10{-webkit-box-ordinal-group:11;-ms-flex-order:10;order:10}.order-lg-11{-webkit-box-ordinal-group:12;-ms-flex-order:11;order:11}.order-lg-12{-webkit-box-ordinal-group:13;-ms-flex-order:12;order:12}.offset-lg-0{margin-left:0}.offset-lg-1{margin-left:8.333333%}.offset-lg-2{margin-left:16.666667%}.offset-lg-3{margin-left:25%}.offset-lg-4{margin-left:33.333333%}.offset-lg-5{margin-left:41.666667%}.offset-lg-6{margin-left:50%}.offset-lg-7{margin-left:58.333333%}.offset-lg-8{margin-left:66.666667%}.offset-lg-9{margin-left:75%}.offset-lg-10{margin-left:83.333333%}.offset-lg-11{margin-left:91.666667%}}@media (min-width:1200px){.col-xl{-ms-flex-preferred-size:0;flex-basis:0;-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;max-width:100%}.col-xl-auto{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;width:auto;max-width:none}.col-xl-1{-webkit-box-flex:0;-ms-flex:0 0 8.333333%;flex:0 0 8.333333%;max-width:8.333333%}.col-xl-2{-webkit-box-flex:0;-ms-flex:0 0 16.666667%;flex:0 0 16.666667%;max-width:16.666667%}.col-xl-3{-webkit-box-flex:0;-ms-flex:0 0 25%;flex:0 0 25%;max-width:25%}.col-xl-4{-webkit-box-flex:0;-ms-flex:0 0 33.333333%;flex:0 0 33.333333%;max-width:33.333333%}.col-xl-5{-webkit-box-flex:0;-ms-flex:0 0 41.666667%;flex:0 0 41.666667%;max-width:41.666667%}.col-xl-6{-webkit-box-flex:0;-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}.col-xl-7{-webkit-box-flex:0;-ms-flex:0 0 58.333333%;flex:0 0 58.333333%;max-width:58.333333%}.col-xl-8{-webkit-box-flex:0;-ms-flex:0 0 66.666667%;flex:0 0 66.666667%;max-width:66.666667%}.col-xl-9{-webkit-box-flex:0;-ms-flex:0 0 75%;flex:0 0 75%;max-width:75%}.col-xl-10{-webkit-box-flex:0;-ms-flex:0 0 83.333333%;flex:0 0 83.333333%;max-width:83.333333%}.col-xl-11{-webkit-box-flex:0;-ms-flex:0 0 91.666667%;flex:0 0 91.666667%;max-width:91.666667%}.col-xl-12{-webkit-box-flex:0;-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}.order-xl-first{-webkit-box-ordinal-group:0;-ms-flex-order:-1;order:-1}.order-xl-last{-webkit-box-ordinal-group:14;-ms-flex-order:13;order:13}.order-xl-0{-webkit-box-ordinal-group:1;-ms-flex-order:0;order:0}.order-xl-1{-webkit-box-ordinal-group:2;-ms-flex-order:1;order:1}.order-xl-2{-webkit-box-ordinal-group:3;-ms-flex-order:2;order:2}.order-xl-3{-webkit-box-ordinal-group:4;-ms-flex-order:3;order:3}.order-xl-4{-webkit-box-ordinal-group:5;-ms-flex-order:4;order:4}.order-xl-5{-webkit-box-ordinal-group:6;-ms-flex-order:5;order:5}.order-xl-6{-webkit-box-ordinal-group:7;-ms-flex-order:6;order:6}.order-xl-7{-webkit-box-ordinal-group:8;-ms-flex-order:7;order:7}.order-xl-8{-webkit-box-ordinal-group:9;-ms-flex-order:8;order:8}.order-xl-9{-webkit-box-ordinal-group:10;-ms-flex-order:9;order:9}.order-xl-10{-webkit-box-ordinal-group:11;-ms-flex-order:10;order:10}.order-xl-11{-webkit-box-ordinal-group:12;-ms-flex-order:11;order:11}.order-xl-12{-webkit-box-ordinal-group:13;-ms-flex-order:12;order:12}.offset-xl-0{margin-left:0}.offset-xl-1{margin-left:8.333333%}.offset-xl-2{margin-left:16.666667%}.offset-xl-3{margin-left:25%}.offset-xl-4{margin-left:33.333333%}.offset-xl-5{margin-left:41.666667%}.offset-xl-6{margin-left:50%}.offset-xl-7{margin-left:58.333333%}.offset-xl-8{margin-left:66.666667%}.offset-xl-9{margin-left:75%}.offset-xl-10{margin-left:83.333333%}.offset-xl-11{margin-left:91.666667%}}.table{width:100%;max-width:100%;margin-bottom:1rem;background-color:transparent}.table td,.table th{padding:.75rem;vertical-align:top;border-top:1px solid #dee2e6}.table thead th{vertical-align:bottom;border-bottom:2px solid #dee2e6}.table tbody+tbody{border-top:2px solid #dee2e6}.table .table{background-color:#fff}.table-sm td,.table-sm th{padding:.3rem}.table-bordered{border:1px solid #dee2e6}.table-bordered td,.table-bordered th{border:1px solid #dee2e6}.table-bordered thead td,.table-bordered thead th{border-bottom-width:2px}.table-striped tbody tr:nth-of-type(odd){background-color:rgba(0,0,0,.05)}.table-hover tbody tr:hover{background-color:rgba(0,0,0,.075)}.table-primary,.table-primary>td,.table-primary>th{background-color:#b8daff}.table-hover .table-primary:hover{background-color:#9fcdff}.table-hover .table-primary:hover>td,.table-hover .table-primary:hover>th{background-color:#9fcdff}.table-secondary,.table-secondary>td,.table-secondary>th{background-color:#d6d8db}.table-hover .table-secondary:hover{background-color:#c8cbcf}.table-hover .table-secondary:hover>td,.table-hover .table-secondary:hover>th{background-color:#c8cbcf}.table-success,.table-success>td,.table-success>th{background-color:#c3e6cb}.table-hover .table-success:hover{background-color:#b1dfbb}.table-hover .table-success:hover>td,.table-hover .table-success:hover>th{background-color:#b1dfbb}.table-info,.table-info>td,.table-info>th{background-color:#bee5eb}.table-hover .table-info:hover{background-color:#abdde5}.table-hover .table-info:hover>td,.table-hover .table-info:hover>th{background-color:#abdde5}.table-warning,.table-warning>td,.table-warning>th{background-color:#ffeeba}.table-hover .table-warning:hover{background-color:#ffe8a1}.table-hover .table-warning:hover>td,.table-hover .table-warning:hover>th{background-color:#ffe8a1}.table-danger,.table-danger>td,.table-danger>th{background-color:#f5c6cb}.table-hover .table-danger:hover{background-color:#f1b0b7}.table-hover .table-danger:hover>td,.table-hover .table-danger:hover>th{background-color:#f1b0b7}.table-light,.table-light>td,.table-light>th{background-color:#fdfdfe}.table-hover .table-light:hover{background-color:#ececf6}.table-hover .table-light:hover>td,.table-hover .table-light:hover>th{background-color:#ececf6}.table-dark,.table-dark>td,.table-dark>th{background-color:#c6c8ca}.table-hover .table-dark:hover{background-color:#b9bbbe}.table-hover .table-dark:hover>td,.table-hover .table-dark:hover>th{background-color:#b9bbbe}.table-active,.table-active>td,.table-active>th{background-color:rgba(0,0,0,.075)}.table-hover .table-active:hover{background-color:rgba(0,0,0,.075)}.table-hover .table-active:hover>td,.table-hover .table-active:hover>th{background-color:rgba(0,0,0,.075)}.table .thead-dark th{color:#fff;background-color:#212529;border-color:#32383e}.table .thead-light th{color:#495057;background-color:#e9ecef;border-color:#dee2e6}.table-dark{color:#fff;background-color:#212529}.table-dark td,.table-dark th,.table-dark thead th{border-color:#32383e}.table-dark.table-bordered{border:0}.table-dark.table-striped tbody tr:nth-of-type(odd){background-color:rgba(255,255,255,.05)}.table-dark.table-hover tbody tr:hover{background-color:rgba(255,255,255,.075)}@media (max-width:575.98px){.table-responsive-sm{display:block;width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch;-ms-overflow-style:-ms-autohiding-scrollbar}.table-responsive-sm>.table-bordered{border:0}}@media (max-width:767.98px){.table-responsive-md{display:block;width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch;-ms-overflow-style:-ms-autohiding-scrollbar}.table-responsive-md>.table-bordered{border:0}}@media (max-width:991.98px){.table-responsive-lg{display:block;width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch;-ms-overflow-style:-ms-autohiding-scrollbar}.table-responsive-lg>.table-bordered{border:0}}@media (max-width:1199.98px){.table-responsive-xl{display:block;width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch;-ms-overflow-style:-ms-autohiding-scrollbar}.table-responsive-xl>.table-bordered{border:0}}.table-responsive{display:block;width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch;-ms-overflow-style:-ms-autohiding-scrollbar}.table-responsive>.table-bordered{border:0}.form-control{display:block;width:100%;padding:.375rem .75rem;font-size:1rem;line-height:1.5;color:#495057;background-color:#fff;background-clip:padding-box;border:1px solid #ced4da;border-radius:.25rem;transition:border-color .15s ease-in-out,box-shadow .15s ease-in-out}.form-control::-ms-expand{background-color:transparent;border:0}.form-control:focus{color:#495057;background-color:#fff;border-color:#80bdff;outline:0;box-shadow:0 0 0 .2rem rgba(0,123,255,.25)}.form-control::-webkit-input-placeholder{color:#6c757d;opacity:1}.form-control::-moz-placeholder{color:#6c757d;opacity:1}.form-control:-ms-input-placeholder{color:#6c757d;opacity:1}.form-control::-ms-input-placeholder{color:#6c757d;opacity:1}.form-control::placeholder{color:#6c757d;opacity:1}.form-control:disabled,.form-control[readonly]{background-color:#e9ecef;opacity:1}select.form-control:not([size]):not([multiple]){height:calc(2.25rem + 2px)}select.form-control:focus::-ms-value{color:#495057;background-color:#fff}.form-control-file,.form-control-range{display:block;width:100%}.col-form-label{padding-top:calc(.375rem + 1px);padding-bottom:calc(.375rem + 1px);margin-bottom:0;font-size:inherit;line-height:1.5}.col-form-label-lg{padding-top:calc(.5rem + 1px);padding-bottom:calc(.5rem + 1px);font-size:1.25rem;line-height:1.5}.col-form-label-sm{padding-top:calc(.25rem + 1px);padding-bottom:calc(.25rem + 1px);font-size:.875rem;line-height:1.5}.form-control-plaintext{display:block;width:100%;padding-top:.375rem;padding-bottom:.375rem;margin-bottom:0;line-height:1.5;background-color:transparent;border:solid transparent;border-width:1px 0}.form-control-plaintext.form-control-lg,.form-control-plaintext.form-control-sm,.input-group-lg>.form-control-plaintext.form-control,.input-group-lg>.input-group-append>.form-control-plaintext.btn,.input-group-lg>.input-group-append>.form-control-plaintext.input-group-text,.input-group-lg>.input-group-prepend>.form-control-plaintext.btn,.input-group-lg>.input-group-prepend>.form-control-plaintext.input-group-text,.input-group-sm>.form-control-plaintext.form-control,.input-group-sm>.input-group-append>.form-control-plaintext.btn,.input-group-sm>.input-group-append>.form-control-plaintext.input-group-text,.input-group-sm>.input-group-prepend>.form-control-plaintext.btn,.input-group-sm>.input-group-prepend>.form-control-plaintext.input-group-text{padding-right:0;padding-left:0}.form-control-sm,.input-group-sm>.form-control,.input-group-sm>.input-group-append>.btn,.input-group-sm>.input-group-append>.input-group-text,.input-group-sm>.input-group-prepend>.btn,.input-group-sm>.input-group-prepend>.input-group-text{padding:.25rem .5rem;font-size:.875rem;line-height:1.5;border-radius:.2rem}.input-group-sm>.input-group-append>select.btn:not([size]):not([multiple]),.input-group-sm>.input-group-append>select.input-group-text:not([size]):not([multiple]),.input-group-sm>.input-group-prepend>select.btn:not([size]):not([multiple]),.input-group-sm>.input-group-prepend>select.input-group-text:not([size]):not([multiple]),.input-group-sm>select.form-control:not([size]):not([multiple]),select.form-control-sm:not([size]):not([multiple]){height:calc(1.8125rem + 2px)}.form-control-lg,.input-group-lg>.form-control,.input-group-lg>.input-group-append>.btn,.input-group-lg>.input-group-append>.input-group-text,.input-group-lg>.input-group-prepend>.btn,.input-group-lg>.input-group-prepend>.input-group-text{padding:.5rem 1rem;font-size:1.25rem;line-height:1.5;border-radius:.3rem}.input-group-lg>.input-group-append>select.btn:not([size]):not([multiple]),.input-group-lg>.input-group-append>select.input-group-text:not([size]):not([multiple]),.input-group-lg>.input-group-prepend>select.btn:not([size]):not([multiple]),.input-group-lg>.input-group-prepend>select.input-group-text:not([size]):not([multiple]),.input-group-lg>select.form-control:not([size]):not([multiple]),select.form-control-lg:not([size]):not([multiple]){height:calc(2.875rem + 2px)}.form-group{margin-bottom:1rem}.form-text{display:block;margin-top:.25rem}.form-row{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;margin-right:-5px;margin-left:-5px}.form-row>.col,.form-row>[class*=col-]{padding-right:5px;padding-left:5px}.form-check{position:relative;display:block;padding-left:1.25rem}.form-check-input{position:absolute;margin-top:.3rem;margin-left:-1.25rem}.form-check-input:disabled~.form-check-label{color:#6c757d}.form-check-label{margin-bottom:0}.form-check-inline{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;padding-left:0;margin-right:.75rem}.form-check-inline .form-check-input{position:static;margin-top:0;margin-right:.3125rem;margin-left:0}.valid-feedback{display:none;width:100%;margin-top:.25rem;font-size:80%;color:#28a745}.valid-tooltip{position:absolute;top:100%;z-index:5;display:none;max-width:100%;padding:.5rem;margin-top:.1rem;font-size:.875rem;line-height:1;color:#fff;background-color:rgba(40,167,69,.8);border-radius:.2rem}.custom-select.is-valid,.form-control.is-valid,.was-validated .custom-select:valid,.was-validated .form-control:valid{border-color:#28a745}.custom-select.is-valid:focus,.form-control.is-valid:focus,.was-validated .custom-select:valid:focus,.was-validated .form-control:valid:focus{border-color:#28a745;box-shadow:0 0 0 .2rem rgba(40,167,69,.25)}.custom-select.is-valid~.valid-feedback,.custom-select.is-valid~.valid-tooltip,.form-control.is-valid~.valid-feedback,.form-control.is-valid~.valid-tooltip,.was-validated .custom-select:valid~.valid-feedback,.was-validated .custom-select:valid~.valid-tooltip,.was-validated .form-control:valid~.valid-feedback,.was-validated .form-control:valid~.valid-tooltip{display:block}.form-check-input.is-valid~.form-check-label,.was-validated .form-check-input:valid~.form-check-label{color:#28a745}.form-check-input.is-valid~.valid-feedback,.form-check-input.is-valid~.valid-tooltip,.was-validated .form-check-input:valid~.valid-feedback,.was-validated .form-check-input:valid~.valid-tooltip{display:block}.custom-control-input.is-valid~.custom-control-label,.was-validated .custom-control-input:valid~.custom-control-label{color:#28a745}.custom-control-input.is-valid~.custom-control-label::before,.was-validated .custom-control-input:valid~.custom-control-label::before{background-color:#71dd8a}.custom-control-input.is-valid~.valid-feedback,.custom-control-input.is-valid~.valid-tooltip,.was-validated .custom-control-input:valid~.valid-feedback,.was-validated .custom-control-input:valid~.valid-tooltip{display:block}.custom-control-input.is-valid:checked~.custom-control-label::before,.was-validated .custom-control-input:valid:checked~.custom-control-label::before{background-color:#34ce57}.custom-control-input.is-valid:focus~.custom-control-label::before,.was-validated .custom-control-input:valid:focus~.custom-control-label::before{box-shadow:0 0 0 1px #fff,0 0 0 .2rem rgba(40,167,69,.25)}.custom-file-input.is-valid~.custom-file-label,.was-validated .custom-file-input:valid~.custom-file-label{border-color:#28a745}.custom-file-input.is-valid~.custom-file-label::before,.was-validated .custom-file-input:valid~.custom-file-label::before{border-color:inherit}.custom-file-input.is-valid~.valid-feedback,.custom-file-input.is-valid~.valid-tooltip,.was-validated .custom-file-input:valid~.valid-feedback,.was-validated .custom-file-input:valid~.valid-tooltip{display:block}.custom-file-input.is-valid:focus~.custom-file-label,.was-validated .custom-file-input:valid:focus~.custom-file-label{box-shadow:0 0 0 .2rem rgba(40,167,69,.25)}.invalid-feedback{display:none;width:100%;margin-top:.25rem;font-size:80%;color:#dc3545}.invalid-tooltip{position:absolute;top:100%;z-index:5;display:none;max-width:100%;padding:.5rem;margin-top:.1rem;font-size:.875rem;line-height:1;color:#fff;background-color:rgba(220,53,69,.8);border-radius:.2rem}.custom-select.is-invalid,.form-control.is-invalid,.was-validated .custom-select:invalid,.was-validated .form-control:invalid{border-color:#dc3545}.custom-select.is-invalid:focus,.form-control.is-invalid:focus,.was-validated .custom-select:invalid:focus,.was-validated .form-control:invalid:focus{border-color:#dc3545;box-shadow:0 0 0 .2rem rgba(220,53,69,.25)}.custom-select.is-invalid~.invalid-feedback,.custom-select.is-invalid~.invalid-tooltip,.form-control.is-invalid~.invalid-feedback,.form-control.is-invalid~.invalid-tooltip,.was-validated .custom-select:invalid~.invalid-feedback,.was-validated .custom-select:invalid~.invalid-tooltip,.was-validated .form-control:invalid~.invalid-feedback,.was-validated .form-control:invalid~.invalid-tooltip{display:block}.form-check-input.is-invalid~.form-check-label,.was-validated .form-check-input:invalid~.form-check-label{color:#dc3545}.form-check-input.is-invalid~.invalid-feedback,.form-check-input.is-invalid~.invalid-tooltip,.was-validated .form-check-input:invalid~.invalid-feedback,.was-validated .form-check-input:invalid~.invalid-tooltip{display:block}.custom-control-input.is-invalid~.custom-control-label,.was-validated .custom-control-input:invalid~.custom-control-label{color:#dc3545}.custom-control-input.is-invalid~.custom-control-label::before,.was-validated .custom-control-input:invalid~.custom-control-label::before{background-color:#efa2a9}.custom-control-input.is-invalid~.invalid-feedback,.custom-control-input.is-invalid~.invalid-tooltip,.was-validated .custom-control-input:invalid~.invalid-feedback,.was-validated .custom-control-input:invalid~.invalid-tooltip{display:block}.custom-control-input.is-invalid:checked~.custom-control-label::before,.was-validated .custom-control-input:invalid:checked~.custom-control-label::before{background-color:#e4606d}.custom-control-input.is-invalid:focus~.custom-control-label::before,.was-validated .custom-control-input:invalid:focus~.custom-control-label::before{box-shadow:0 0 0 1px #fff,0 0 0 .2rem rgba(220,53,69,.25)}.custom-file-input.is-invalid~.custom-file-label,.was-validated .custom-file-input:invalid~.custom-file-label{border-color:#dc3545}.custom-file-input.is-invalid~.custom-file-label::before,.was-validated .custom-file-input:invalid~.custom-file-label::before{border-color:inherit}.custom-file-input.is-invalid~.invalid-feedback,.custom-file-input.is-invalid~.invalid-tooltip,.was-validated .custom-file-input:invalid~.invalid-feedback,.was-validated .custom-file-input:invalid~.invalid-tooltip{display:block}.custom-file-input.is-invalid:focus~.custom-file-label,.was-validated .custom-file-input:invalid:focus~.custom-file-label{box-shadow:0 0 0 .2rem rgba(220,53,69,.25)}.form-inline{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-flow:row wrap;flex-flow:row wrap;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.form-inline .form-check{width:100%}@media (min-width:576px){.form-inline label{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;margin-bottom:0}.form-inline .form-group{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-flow:row wrap;flex-flow:row wrap;-webkit-box-align:center;-ms-flex-align:center;align-items:center;margin-bottom:0}.form-inline .form-control{display:inline-block;width:auto;vertical-align:middle}.form-inline .form-control-plaintext{display:inline-block}.form-inline .input-group{width:auto}.form-inline .form-check{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;width:auto;padding-left:0}.form-inline .form-check-input{position:relative;margin-top:0;margin-right:.25rem;margin-left:0}.form-inline .custom-control{-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.form-inline .custom-control-label{margin-bottom:0}}.btn{display:inline-block;font-weight:400;text-align:center;white-space:nowrap;vertical-align:middle;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;border:1px solid transparent;padding:.375rem .75rem;font-size:1rem;line-height:1.5;border-radius:.25rem;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}.btn:focus,.btn:hover{text-decoration:none}.btn.focus,.btn:focus{outline:0;box-shadow:0 0 0 .2rem rgba(0,123,255,.25)}.btn.disabled,.btn:disabled{opacity:.65}.btn:not(:disabled):not(.disabled){cursor:pointer}.btn:not(:disabled):not(.disabled).active,.btn:not(:disabled):not(.disabled):active{background-image:none}a.btn.disabled,fieldset:disabled a.btn{pointer-events:none}.btn-primary{color:#fff;background-color:#007bff;border-color:#007bff}.btn-primary:hover{color:#fff;background-color:#0069d9;border-color:#0062cc}.btn-primary.focus,.btn-primary:focus{box-shadow:0 0 0 .2rem rgba(0,123,255,.5)}.btn-primary.disabled,.btn-primary:disabled{color:#fff;background-color:#007bff;border-color:#007bff}.btn-primary:not(:disabled):not(.disabled).active,.btn-primary:not(:disabled):not(.disabled):active,.show>.btn-primary.dropdown-toggle{color:#fff;background-color:#0062cc;border-color:#005cbf}.btn-primary:not(:disabled):not(.disabled).active:focus,.btn-primary:not(:disabled):not(.disabled):active:focus,.show>.btn-primary.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(0,123,255,.5)}.btn-secondary{color:#fff;background-color:#6c757d;border-color:#6c757d}.btn-secondary:hover{color:#fff;background-color:#5a6268;border-color:#545b62}.btn-secondary.focus,.btn-secondary:focus{box-shadow:0 0 0 .2rem rgba(108,117,125,.5)}.btn-secondary.disabled,.btn-secondary:disabled{color:#fff;background-color:#6c757d;border-color:#6c757d}.btn-secondary:not(:disabled):not(.disabled).active,.btn-secondary:not(:disabled):not(.disabled):active,.show>.btn-secondary.dropdown-toggle{color:#fff;background-color:#545b62;border-color:#4e555b}.btn-secondary:not(:disabled):not(.disabled).active:focus,.btn-secondary:not(:disabled):not(.disabled):active:focus,.show>.btn-secondary.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(108,117,125,.5)}.btn-success{color:#fff;background-color:#28a745;border-color:#28a745}.btn-success:hover{color:#fff;background-color:#218838;border-color:#1e7e34}.btn-success.focus,.btn-success:focus{box-shadow:0 0 0 .2rem rgba(40,167,69,.5)}.btn-success.disabled,.btn-success:disabled{color:#fff;background-color:#28a745;border-color:#28a745}.btn-success:not(:disabled):not(.disabled).active,.btn-success:not(:disabled):not(.disabled):active,.show>.btn-success.dropdown-toggle{color:#fff;background-color:#1e7e34;border-color:#1c7430}.btn-success:not(:disabled):not(.disabled).active:focus,.btn-success:not(:disabled):not(.disabled):active:focus,.show>.btn-success.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(40,167,69,.5)}.btn-info{color:#fff;background-color:#17a2b8;border-color:#17a2b8}.btn-info:hover{color:#fff;background-color:#138496;border-color:#117a8b}.btn-info.focus,.btn-info:focus{box-shadow:0 0 0 .2rem rgba(23,162,184,.5)}.btn-info.disabled,.btn-info:disabled{color:#fff;background-color:#17a2b8;border-color:#17a2b8}.btn-info:not(:disabled):not(.disabled).active,.btn-info:not(:disabled):not(.disabled):active,.show>.btn-info.dropdown-toggle{color:#fff;background-color:#117a8b;border-color:#10707f}.btn-info:not(:disabled):not(.disabled).active:focus,.btn-info:not(:disabled):not(.disabled):active:focus,.show>.btn-info.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(23,162,184,.5)}.btn-warning{color:#212529;background-color:#ffc107;border-color:#ffc107}.btn-warning:hover{color:#212529;background-color:#e0a800;border-color:#d39e00}.btn-warning.focus,.btn-warning:focus{box-shadow:0 0 0 .2rem rgba(255,193,7,.5)}.btn-warning.disabled,.btn-warning:disabled{color:#212529;background-color:#ffc107;border-color:#ffc107}.btn-warning:not(:disabled):not(.disabled).active,.btn-warning:not(:disabled):not(.disabled):active,.show>.btn-warning.dropdown-toggle{color:#212529;background-color:#d39e00;border-color:#c69500}.btn-warning:not(:disabled):not(.disabled).active:focus,.btn-warning:not(:disabled):not(.disabled):active:focus,.show>.btn-warning.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(255,193,7,.5)}.btn-danger{color:#fff;background-color:#dc3545;border-color:#dc3545}.btn-danger:hover{color:#fff;background-color:#c82333;border-color:#bd2130}.btn-danger.focus,.btn-danger:focus{box-shadow:0 0 0 .2rem rgba(220,53,69,.5)}.btn-danger.disabled,.btn-danger:disabled{color:#fff;background-color:#dc3545;border-color:#dc3545}.btn-danger:not(:disabled):not(.disabled).active,.btn-danger:not(:disabled):not(.disabled):active,.show>.btn-danger.dropdown-toggle{color:#fff;background-color:#bd2130;border-color:#b21f2d}.btn-danger:not(:disabled):not(.disabled).active:focus,.btn-danger:not(:disabled):not(.disabled):active:focus,.show>.btn-danger.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(220,53,69,.5)}.btn-light{color:#212529;background-color:#f8f9fa;border-color:#f8f9fa}.btn-light:hover{color:#212529;background-color:#e2e6ea;border-color:#dae0e5}.btn-light.focus,.btn-light:focus{box-shadow:0 0 0 .2rem rgba(248,249,250,.5)}.btn-light.disabled,.btn-light:disabled{color:#212529;background-color:#f8f9fa;border-color:#f8f9fa}.btn-light:not(:disabled):not(.disabled).active,.btn-light:not(:disabled):not(.disabled):active,.show>.btn-light.dropdown-toggle{color:#212529;background-color:#dae0e5;border-color:#d3d9df}.btn-light:not(:disabled):not(.disabled).active:focus,.btn-light:not(:disabled):not(.disabled):active:focus,.show>.btn-light.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(248,249,250,.5)}.btn-dark{color:#fff;background-color:#343a40;border-color:#343a40}.btn-dark:hover{color:#fff;background-color:#23272b;border-color:#1d2124}.btn-dark.focus,.btn-dark:focus{box-shadow:0 0 0 .2rem rgba(52,58,64,.5)}.btn-dark.disabled,.btn-dark:disabled{color:#fff;background-color:#343a40;border-color:#343a40}.btn-dark:not(:disabled):not(.disabled).active,.btn-dark:not(:disabled):not(.disabled):active,.show>.btn-dark.dropdown-toggle{color:#fff;background-color:#1d2124;border-color:#171a1d}.btn-dark:not(:disabled):not(.disabled).active:focus,.btn-dark:not(:disabled):not(.disabled):active:focus,.show>.btn-dark.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(52,58,64,.5)}.btn-outline-primary{color:#007bff;background-color:transparent;background-image:none;border-color:#007bff}.btn-outline-primary:hover{color:#fff;background-color:#007bff;border-color:#007bff}.btn-outline-primary.focus,.btn-outline-primary:focus{box-shadow:0 0 0 .2rem rgba(0,123,255,.5)}.btn-outline-primary.disabled,.btn-outline-primary:disabled{color:#007bff;background-color:transparent}.btn-outline-primary:not(:disabled):not(.disabled).active,.btn-outline-primary:not(:disabled):not(.disabled):active,.show>.btn-outline-primary.dropdown-toggle{color:#fff;background-color:#007bff;border-color:#007bff}.btn-outline-primary:not(:disabled):not(.disabled).active:focus,.btn-outline-primary:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-primary.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(0,123,255,.5)}.btn-outline-secondary{color:#6c757d;background-color:transparent;background-image:none;border-color:#6c757d}.btn-outline-secondary:hover{color:#fff;background-color:#6c757d;border-color:#6c757d}.btn-outline-secondary.focus,.btn-outline-secondary:focus{box-shadow:0 0 0 .2rem rgba(108,117,125,.5)}.btn-outline-secondary.disabled,.btn-outline-secondary:disabled{color:#6c757d;background-color:transparent}.btn-outline-secondary:not(:disabled):not(.disabled).active,.btn-outline-secondary:not(:disabled):not(.disabled):active,.show>.btn-outline-secondary.dropdown-toggle{color:#fff;background-color:#6c757d;border-color:#6c757d}.btn-outline-secondary:not(:disabled):not(.disabled).active:focus,.btn-outline-secondary:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-secondary.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(108,117,125,.5)}.btn-outline-success{color:#28a745;background-color:transparent;background-image:none;border-color:#28a745}.btn-outline-success:hover{color:#fff;background-color:#28a745;border-color:#28a745}.btn-outline-success.focus,.btn-outline-success:focus{box-shadow:0 0 0 .2rem rgba(40,167,69,.5)}.btn-outline-success.disabled,.btn-outline-success:disabled{color:#28a745;background-color:transparent}.btn-outline-success:not(:disabled):not(.disabled).active,.btn-outline-success:not(:disabled):not(.disabled):active,.show>.btn-outline-success.dropdown-toggle{color:#fff;background-color:#28a745;border-color:#28a745}.btn-outline-success:not(:disabled):not(.disabled).active:focus,.btn-outline-success:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-success.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(40,167,69,.5)}.btn-outline-info{color:#17a2b8;background-color:transparent;background-image:none;border-color:#17a2b8}.btn-outline-info:hover{color:#fff;background-color:#17a2b8;border-color:#17a2b8}.btn-outline-info.focus,.btn-outline-info:focus{box-shadow:0 0 0 .2rem rgba(23,162,184,.5)}.btn-outline-info.disabled,.btn-outline-info:disabled{color:#17a2b8;background-color:transparent}.btn-outline-info:not(:disabled):not(.disabled).active,.btn-outline-info:not(:disabled):not(.disabled):active,.show>.btn-outline-info.dropdown-toggle{color:#fff;background-color:#17a2b8;border-color:#17a2b8}.btn-outline-info:not(:disabled):not(.disabled).active:focus,.btn-outline-info:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-info.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(23,162,184,.5)}.btn-outline-warning{color:#ffc107;background-color:transparent;background-image:none;border-color:#ffc107}.btn-outline-warning:hover{color:#212529;background-color:#ffc107;border-color:#ffc107}.btn-outline-warning.focus,.btn-outline-warning:focus{box-shadow:0 0 0 .2rem rgba(255,193,7,.5)}.btn-outline-warning.disabled,.btn-outline-warning:disabled{color:#ffc107;background-color:transparent}.btn-outline-warning:not(:disabled):not(.disabled).active,.btn-outline-warning:not(:disabled):not(.disabled):active,.show>.btn-outline-warning.dropdown-toggle{color:#212529;background-color:#ffc107;border-color:#ffc107}.btn-outline-warning:not(:disabled):not(.disabled).active:focus,.btn-outline-warning:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-warning.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(255,193,7,.5)}.btn-outline-danger{color:#dc3545;background-color:transparent;background-image:none;border-color:#dc3545}.btn-outline-danger:hover{color:#fff;background-color:#dc3545;border-color:#dc3545}.btn-outline-danger.focus,.btn-outline-danger:focus{box-shadow:0 0 0 .2rem rgba(220,53,69,.5)}.btn-outline-danger.disabled,.btn-outline-danger:disabled{color:#dc3545;background-color:transparent}.btn-outline-danger:not(:disabled):not(.disabled).active,.btn-outline-danger:not(:disabled):not(.disabled):active,.show>.btn-outline-danger.dropdown-toggle{color:#fff;background-color:#dc3545;border-color:#dc3545}.btn-outline-danger:not(:disabled):not(.disabled).active:focus,.btn-outline-danger:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-danger.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(220,53,69,.5)}.btn-outline-light{color:#f8f9fa;background-color:transparent;background-image:none;border-color:#f8f9fa}.btn-outline-light:hover{color:#212529;background-color:#f8f9fa;border-color:#f8f9fa}.btn-outline-light.focus,.btn-outline-light:focus{box-shadow:0 0 0 .2rem rgba(248,249,250,.5)}.btn-outline-light.disabled,.btn-outline-light:disabled{color:#f8f9fa;background-color:transparent}.btn-outline-light:not(:disabled):not(.disabled).active,.btn-outline-light:not(:disabled):not(.disabled):active,.show>.btn-outline-light.dropdown-toggle{color:#212529;background-color:#f8f9fa;border-color:#f8f9fa}.btn-outline-light:not(:disabled):not(.disabled).active:focus,.btn-outline-light:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-light.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(248,249,250,.5)}.btn-outline-dark{color:#343a40;background-color:transparent;background-image:none;border-color:#343a40}.btn-outline-dark:hover{color:#fff;background-color:#343a40;border-color:#343a40}.btn-outline-dark.focus,.btn-outline-dark:focus{box-shadow:0 0 0 .2rem rgba(52,58,64,.5)}.btn-outline-dark.disabled,.btn-outline-dark:disabled{color:#343a40;background-color:transparent}.btn-outline-dark:not(:disabled):not(.disabled).active,.btn-outline-dark:not(:disabled):not(.disabled):active,.show>.btn-outline-dark.dropdown-toggle{color:#fff;background-color:#343a40;border-color:#343a40}.btn-outline-dark:not(:disabled):not(.disabled).active:focus,.btn-outline-dark:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-dark.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(52,58,64,.5)}.btn-link{font-weight:400;color:#007bff;background-color:transparent}.btn-link:hover{color:#0056b3;text-decoration:underline;background-color:transparent;border-color:transparent}.btn-link.focus,.btn-link:focus{text-decoration:underline;border-color:transparent;box-shadow:none}.btn-link.disabled,.btn-link:disabled{color:#6c757d}.btn-group-lg>.btn,.btn-lg{padding:.5rem 1rem;font-size:1.25rem;line-height:1.5;border-radius:.3rem}.btn-group-sm>.btn,.btn-sm{padding:.25rem .5rem;font-size:.875rem;line-height:1.5;border-radius:.2rem}.btn-block{display:block;width:100%}.btn-block+.btn-block{margin-top:.5rem}input[type=button].btn-block,input[type=reset].btn-block,input[type=submit].btn-block{width:100%}.fade{opacity:0;transition:opacity .15s linear}.fade.show{opacity:1}.collapse{display:none}.collapse.show{display:block}tr.collapse.show{display:table-row}tbody.collapse.show{display:table-row-group}.collapsing{position:relative;height:0;overflow:hidden;transition:height .35s ease}.dropdown,.dropup{position:relative}.dropdown-toggle::after{display:inline-block;width:0;height:0;margin-left:.255em;vertical-align:.255em;content:"";border-top:.3em solid;border-right:.3em solid transparent;border-bottom:0;border-left:.3em solid transparent}.dropdown-toggle:empty::after{margin-left:0}.dropdown-menu{position:absolute;top:100%;left:0;z-index:1000;display:none;float:left;min-width:10rem;padding:.5rem 0;margin:.125rem 0 0;font-size:1rem;color:#212529;text-align:left;list-style:none;background-color:#fff;background-clip:padding-box;border:1px solid rgba(0,0,0,.15);border-radius:.25rem}.dropup .dropdown-menu{margin-top:0;margin-bottom:.125rem}.dropup .dropdown-toggle::after{display:inline-block;width:0;height:0;margin-left:.255em;vertical-align:.255em;content:"";border-top:0;border-right:.3em solid transparent;border-bottom:.3em solid;border-left:.3em solid transparent}.dropup .dropdown-toggle:empty::after{margin-left:0}.dropright .dropdown-menu{margin-top:0;margin-left:.125rem}.dropright .dropdown-toggle::after{display:inline-block;width:0;height:0;margin-left:.255em;vertical-align:.255em;content:"";border-top:.3em solid transparent;border-bottom:.3em solid transparent;border-left:.3em solid}.dropright .dropdown-toggle:empty::after{margin-left:0}.dropright .dropdown-toggle::after{vertical-align:0}.dropleft .dropdown-menu{margin-top:0;margin-right:.125rem}.dropleft .dropdown-toggle::after{display:inline-block;width:0;height:0;margin-left:.255em;vertical-align:.255em;content:""}.dropleft .dropdown-toggle::after{display:none}.dropleft .dropdown-toggle::before{display:inline-block;width:0;height:0;margin-right:.255em;vertical-align:.255em;content:"";border-top:.3em solid transparent;border-right:.3em solid;border-bottom:.3em solid transparent}.dropleft .dropdown-toggle:empty::after{margin-left:0}.dropleft .dropdown-toggle::before{vertical-align:0}.dropdown-divider{height:0;margin:.5rem 0;overflow:hidden;border-top:1px solid #e9ecef}.dropdown-item{display:block;width:100%;padding:.25rem 1.5rem;clear:both;font-weight:400;color:#212529;text-align:inherit;white-space:nowrap;background-color:transparent;border:0}.dropdown-item:focus,.dropdown-item:hover{color:#16181b;text-decoration:none;background-color:#f8f9fa}.dropdown-item.active,.dropdown-item:active{color:#fff;text-decoration:none;background-color:#007bff}.dropdown-item.disabled,.dropdown-item:disabled{color:#6c757d;background-color:transparent}.dropdown-menu.show{display:block}.dropdown-header{display:block;padding:.5rem 1.5rem;margin-bottom:0;font-size:.875rem;color:#6c757d;white-space:nowrap}.btn-group,.btn-group-vertical{position:relative;display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;vertical-align:middle}.btn-group-vertical>.btn,.btn-group>.btn{position:relative;-webkit-box-flex:0;-ms-flex:0 1 auto;flex:0 1 auto}.btn-group-vertical>.btn:hover,.btn-group>.btn:hover{z-index:1}.btn-group-vertical>.btn.active,.btn-group-vertical>.btn:active,.btn-group-vertical>.btn:focus,.btn-group>.btn.active,.btn-group>.btn:active,.btn-group>.btn:focus{z-index:1}.btn-group .btn+.btn,.btn-group .btn+.btn-group,.btn-group .btn-group+.btn,.btn-group .btn-group+.btn-group,.btn-group-vertical .btn+.btn,.btn-group-vertical .btn+.btn-group,.btn-group-vertical .btn-group+.btn,.btn-group-vertical .btn-group+.btn-group{margin-left:-1px}.btn-toolbar{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start}.btn-toolbar .input-group{width:auto}.btn-group>.btn:first-child{margin-left:0}.btn-group>.btn-group:not(:last-child)>.btn,.btn-group>.btn:not(:last-child):not(.dropdown-toggle){border-top-right-radius:0;border-bottom-right-radius:0}.btn-group>.btn-group:not(:first-child)>.btn,.btn-group>.btn:not(:first-child){border-top-left-radius:0;border-bottom-left-radius:0}.dropdown-toggle-split{padding-right:.5625rem;padding-left:.5625rem}.dropdown-toggle-split::after{margin-left:0}.btn-group-sm>.btn+.dropdown-toggle-split,.btn-sm+.dropdown-toggle-split{padding-right:.375rem;padding-left:.375rem}.btn-group-lg>.btn+.dropdown-toggle-split,.btn-lg+.dropdown-toggle-split{padding-right:.75rem;padding-left:.75rem}.btn-group-vertical{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.btn-group-vertical .btn,.btn-group-vertical .btn-group{width:100%}.btn-group-vertical>.btn+.btn,.btn-group-vertical>.btn+.btn-group,.btn-group-vertical>.btn-group+.btn,.btn-group-vertical>.btn-group+.btn-group{margin-top:-1px;margin-left:0}.btn-group-vertical>.btn-group:not(:last-child)>.btn,.btn-group-vertical>.btn:not(:last-child):not(.dropdown-toggle){border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn-group:not(:first-child)>.btn,.btn-group-vertical>.btn:not(:first-child){border-top-left-radius:0;border-top-right-radius:0}.btn-group-toggle>.btn,.btn-group-toggle>.btn-group>.btn{margin-bottom:0}.btn-group-toggle>.btn input[type=checkbox],.btn-group-toggle>.btn input[type=radio],.btn-group-toggle>.btn-group>.btn input[type=checkbox],.btn-group-toggle>.btn-group>.btn input[type=radio]{position:absolute;clip:rect(0,0,0,0);pointer-events:none}.input-group{position:relative;display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-align:stretch;-ms-flex-align:stretch;align-items:stretch;width:100%}.input-group>.custom-file,.input-group>.custom-select,.input-group>.form-control{position:relative;-webkit-box-flex:1;-ms-flex:1 1 auto;flex:1 1 auto;width:1%;margin-bottom:0}.input-group>.custom-file:focus,.input-group>.custom-select:focus,.input-group>.form-control:focus{z-index:3}.input-group>.custom-file+.custom-file,.input-group>.custom-file+.custom-select,.input-group>.custom-file+.form-control,.input-group>.custom-select+.custom-file,.input-group>.custom-select+.custom-select,.input-group>.custom-select+.form-control,.input-group>.form-control+.custom-file,.input-group>.form-control+.custom-select,.input-group>.form-control+.form-control{margin-left:-1px}.input-group>.custom-select:not(:last-child),.input-group>.form-control:not(:last-child){border-top-right-radius:0;border-bottom-right-radius:0}.input-group>.custom-select:not(:first-child),.input-group>.form-control:not(:first-child){border-top-left-radius:0;border-bottom-left-radius:0}.input-group>.custom-file{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.input-group>.custom-file:not(:last-child) .custom-file-label,.input-group>.custom-file:not(:last-child) .custom-file-label::before{border-top-right-radius:0;border-bottom-right-radius:0}.input-group>.custom-file:not(:first-child) .custom-file-label,.input-group>.custom-file:not(:first-child) .custom-file-label::before{border-top-left-radius:0;border-bottom-left-radius:0}.input-group-append,.input-group-prepend{display:-webkit-box;display:-ms-flexbox;display:flex}.input-group-append .btn,.input-group-prepend .btn{position:relative;z-index:2}.input-group-append .btn+.btn,.input-group-append .btn+.input-group-text,.input-group-append .input-group-text+.btn,.input-group-append .input-group-text+.input-group-text,.input-group-prepend .btn+.btn,.input-group-prepend .btn+.input-group-text,.input-group-prepend .input-group-text+.btn,.input-group-prepend .input-group-text+.input-group-text{margin-left:-1px}.input-group-prepend{margin-right:-1px}.input-group-append{margin-left:-1px}.input-group-text{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;padding:.375rem .75rem;margin-bottom:0;font-size:1rem;font-weight:400;line-height:1.5;color:#495057;text-align:center;white-space:nowrap;background-color:#e9ecef;border:1px solid #ced4da;border-radius:.25rem}.input-group-text input[type=checkbox],.input-group-text input[type=radio]{margin-top:0}.input-group>.input-group-append:last-child>.btn:not(:last-child):not(.dropdown-toggle),.input-group>.input-group-append:last-child>.input-group-text:not(:last-child),.input-group>.input-group-append:not(:last-child)>.btn,.input-group>.input-group-append:not(:last-child)>.input-group-text,.input-group>.input-group-prepend>.btn,.input-group>.input-group-prepend>.input-group-text{border-top-right-radius:0;border-bottom-right-radius:0}.input-group>.input-group-append>.btn,.input-group>.input-group-append>.input-group-text,.input-group>.input-group-prepend:first-child>.btn:not(:first-child),.input-group>.input-group-prepend:first-child>.input-group-text:not(:first-child),.input-group>.input-group-prepend:not(:first-child)>.btn,.input-group>.input-group-prepend:not(:first-child)>.input-group-text{border-top-left-radius:0;border-bottom-left-radius:0}.custom-control{position:relative;display:block;min-height:1.5rem;padding-left:1.5rem}.custom-control-inline{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;margin-right:1rem}.custom-control-input{position:absolute;z-index:-1;opacity:0}.custom-control-input:checked~.custom-control-label::before{color:#fff;background-color:#007bff}.custom-control-input:focus~.custom-control-label::before{box-shadow:0 0 0 1px #fff,0 0 0 .2rem rgba(0,123,255,.25)}.custom-control-input:active~.custom-control-label::before{color:#fff;background-color:#b3d7ff}.custom-control-input:disabled~.custom-control-label{color:#6c757d}.custom-control-input:disabled~.custom-control-label::before{background-color:#e9ecef}.custom-control-label{margin-bottom:0}.custom-control-label::before{position:absolute;top:.25rem;left:0;display:block;width:1rem;height:1rem;pointer-events:none;content:"";-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;background-color:#dee2e6}.custom-control-label::after{position:absolute;top:.25rem;left:0;display:block;width:1rem;height:1rem;content:"";background-repeat:no-repeat;background-position:center center;background-size:50% 50%}.custom-checkbox .custom-control-label::before{border-radius:.25rem}.custom-checkbox .custom-control-input:checked~.custom-control-label::before{background-color:#007bff}.custom-checkbox .custom-control-input:checked~.custom-control-label::after{background-image:url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3E%3Cpath fill='%23fff' d='M6.564.75l-3.59 3.612-1.538-1.55L0 4.26 2.974 7.25 8 2.193z'/%3E%3C/svg%3E")}.custom-checkbox .custom-control-input:indeterminate~.custom-control-label::before{background-color:#007bff}.custom-checkbox .custom-control-input:indeterminate~.custom-control-label::after{background-image:url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 4 4'%3E%3Cpath stroke='%23fff' d='M0 2h4'/%3E%3C/svg%3E")}.custom-checkbox .custom-control-input:disabled:checked~.custom-control-label::before{background-color:rgba(0,123,255,.5)}.custom-checkbox .custom-control-input:disabled:indeterminate~.custom-control-label::before{background-color:rgba(0,123,255,.5)}.custom-radio .custom-control-label::before{border-radius:50%}.custom-radio .custom-control-input:checked~.custom-control-label::before{background-color:#007bff}.custom-radio .custom-control-input:checked~.custom-control-label::after{background-image:url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3E%3Ccircle r='3' fill='%23fff'/%3E%3C/svg%3E")}.custom-radio .custom-control-input:disabled:checked~.custom-control-label::before{background-color:rgba(0,123,255,.5)}.custom-select{display:inline-block;width:100%;height:calc(2.25rem + 2px);padding:.375rem 1.75rem .375rem .75rem;line-height:1.5;color:#495057;vertical-align:middle;background:#fff url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 4 5'%3E%3Cpath fill='%23343a40' d='M2 0L0 2h4zm0 5L0 3h4z'/%3E%3C/svg%3E") no-repeat right .75rem center;background-size:8px 10px;border:1px solid #ced4da;border-radius:.25rem;-webkit-appearance:none;-moz-appearance:none;appearance:none}.custom-select:focus{border-color:#80bdff;outline:0;box-shadow:inset 0 1px 2px rgba(0,0,0,.075),0 0 5px rgba(128,189,255,.5)}.custom-select:focus::-ms-value{color:#495057;background-color:#fff}.custom-select[multiple],.custom-select[size]:not([size="1"]){height:auto;padding-right:.75rem;background-image:none}.custom-select:disabled{color:#6c757d;background-color:#e9ecef}.custom-select::-ms-expand{opacity:0}.custom-select-sm{height:calc(1.8125rem + 2px);padding-top:.375rem;padding-bottom:.375rem;font-size:75%}.custom-select-lg{height:calc(2.875rem + 2px);padding-top:.375rem;padding-bottom:.375rem;font-size:125%}.custom-file{position:relative;display:inline-block;width:100%;height:calc(2.25rem + 2px);margin-bottom:0}.custom-file-input{position:relative;z-index:2;width:100%;height:calc(2.25rem + 2px);margin:0;opacity:0}.custom-file-input:focus~.custom-file-control{border-color:#80bdff;box-shadow:0 0 0 .2rem rgba(0,123,255,.25)}.custom-file-input:focus~.custom-file-control::before{border-color:#80bdff}.custom-file-input:lang(en)~.custom-file-label::after{content:"Browse"}.custom-file-label{position:absolute;top:0;right:0;left:0;z-index:1;height:calc(2.25rem + 2px);padding:.375rem .75rem;line-height:1.5;color:#495057;background-color:#fff;border:1px solid #ced4da;border-radius:.25rem}.custom-file-label::after{position:absolute;top:0;right:0;bottom:0;z-index:3;display:block;height:calc(calc(2.25rem + 2px) - 1px * 2);padding:.375rem .75rem;line-height:1.5;color:#495057;content:"Browse";background-color:#e9ecef;border-left:1px solid #ced4da;border-radius:0 .25rem .25rem 0}.nav{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;padding-left:0;margin-bottom:0;list-style:none}.nav-link{display:block;padding:.5rem 1rem}.nav-link:focus,.nav-link:hover{text-decoration:none}.nav-link.disabled{color:#6c757d}.nav-tabs{border-bottom:1px solid #dee2e6}.nav-tabs .nav-item{margin-bottom:-1px}.nav-tabs .nav-link{border:1px solid transparent;border-top-left-radius:.25rem;border-top-right-radius:.25rem}.nav-tabs .nav-link:focus,.nav-tabs .nav-link:hover{border-color:#e9ecef #e9ecef #dee2e6}.nav-tabs .nav-link.disabled{color:#6c757d;background-color:transparent;border-color:transparent}.nav-tabs .nav-item.show .nav-link,.nav-tabs .nav-link.active{color:#495057;background-color:#fff;border-color:#dee2e6 #dee2e6 #fff}.nav-tabs .dropdown-menu{margin-top:-1px;border-top-left-radius:0;border-top-right-radius:0}.nav-pills .nav-link{border-radius:.25rem}.nav-pills .nav-link.active,.nav-pills .show>.nav-link{color:#fff;background-color:#007bff}.nav-fill .nav-item{-webkit-box-flex:1;-ms-flex:1 1 auto;flex:1 1 auto;text-align:center}.nav-justified .nav-item{-ms-flex-preferred-size:0;flex-basis:0;-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;text-align:center}.tab-content>.tab-pane{display:none}.tab-content>.active{display:block}.navbar{position:relative;display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;padding:.5rem 1rem}.navbar>.container,.navbar>.container-fluid{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}.navbar-brand{display:inline-block;padding-top:.3125rem;padding-bottom:.3125rem;margin-right:1rem;font-size:1.25rem;line-height:inherit;white-space:nowrap}.navbar-brand:focus,.navbar-brand:hover{text-decoration:none}.navbar-nav{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;padding-left:0;margin-bottom:0;list-style:none}.navbar-nav .nav-link{padding-right:0;padding-left:0}.navbar-nav .dropdown-menu{position:static;float:none}.navbar-text{display:inline-block;padding-top:.5rem;padding-bottom:.5rem}.navbar-collapse{-ms-flex-preferred-size:100%;flex-basis:100%;-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.navbar-toggler{padding:.25rem .75rem;font-size:1.25rem;line-height:1;background-color:transparent;border:1px solid transparent;border-radius:.25rem}.navbar-toggler:focus,.navbar-toggler:hover{text-decoration:none}.navbar-toggler:not(:disabled):not(.disabled){cursor:pointer}.navbar-toggler-icon{display:inline-block;width:1.5em;height:1.5em;vertical-align:middle;content:"";background:no-repeat center center;background-size:100% 100%}@media (max-width:575.98px){.navbar-expand-sm>.container,.navbar-expand-sm>.container-fluid{padding-right:0;padding-left:0}}@media (min-width:576px){.navbar-expand-sm{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-flow:row nowrap;flex-flow:row nowrap;-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start}.navbar-expand-sm .navbar-nav{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row}.navbar-expand-sm .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-sm .navbar-nav .dropdown-menu-right{right:0;left:auto}.navbar-expand-sm .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand-sm>.container,.navbar-expand-sm>.container-fluid{-ms-flex-wrap:nowrap;flex-wrap:nowrap}.navbar-expand-sm .navbar-collapse{display:-webkit-box!important;display:-ms-flexbox!important;display:flex!important;-ms-flex-preferred-size:auto;flex-basis:auto}.navbar-expand-sm .navbar-toggler{display:none}.navbar-expand-sm .dropup .dropdown-menu{top:auto;bottom:100%}}@media (max-width:767.98px){.navbar-expand-md>.container,.navbar-expand-md>.container-fluid{padding-right:0;padding-left:0}}@media (min-width:768px){.navbar-expand-md{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-flow:row nowrap;flex-flow:row nowrap;-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start}.navbar-expand-md .navbar-nav{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row}.navbar-expand-md .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-md .navbar-nav .dropdown-menu-right{right:0;left:auto}.navbar-expand-md .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand-md>.container,.navbar-expand-md>.container-fluid{-ms-flex-wrap:nowrap;flex-wrap:nowrap}.navbar-expand-md .navbar-collapse{display:-webkit-box!important;display:-ms-flexbox!important;display:flex!important;-ms-flex-preferred-size:auto;flex-basis:auto}.navbar-expand-md .navbar-toggler{display:none}.navbar-expand-md .dropup .dropdown-menu{top:auto;bottom:100%}}@media (max-width:991.98px){.navbar-expand-lg>.container,.navbar-expand-lg>.container-fluid{padding-right:0;padding-left:0}}@media (min-width:992px){.navbar-expand-lg{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-flow:row nowrap;flex-flow:row nowrap;-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start}.navbar-expand-lg .navbar-nav{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row}.navbar-expand-lg .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-lg .navbar-nav .dropdown-menu-right{right:0;left:auto}.navbar-expand-lg .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand-lg>.container,.navbar-expand-lg>.container-fluid{-ms-flex-wrap:nowrap;flex-wrap:nowrap}.navbar-expand-lg .navbar-collapse{display:-webkit-box!important;display:-ms-flexbox!important;display:flex!important;-ms-flex-preferred-size:auto;flex-basis:auto}.navbar-expand-lg .navbar-toggler{display:none}.navbar-expand-lg .dropup .dropdown-menu{top:auto;bottom:100%}}@media (max-width:1199.98px){.navbar-expand-xl>.container,.navbar-expand-xl>.container-fluid{padding-right:0;padding-left:0}}@media (min-width:1200px){.navbar-expand-xl{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-flow:row nowrap;flex-flow:row nowrap;-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start}.navbar-expand-xl .navbar-nav{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row}.navbar-expand-xl .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-xl .navbar-nav .dropdown-menu-right{right:0;left:auto}.navbar-expand-xl .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand-xl>.container,.navbar-expand-xl>.container-fluid{-ms-flex-wrap:nowrap;flex-wrap:nowrap}.navbar-expand-xl .navbar-collapse{display:-webkit-box!important;display:-ms-flexbox!important;display:flex!important;-ms-flex-preferred-size:auto;flex-basis:auto}.navbar-expand-xl .navbar-toggler{display:none}.navbar-expand-xl .dropup .dropdown-menu{top:auto;bottom:100%}}.navbar-expand{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-flow:row nowrap;flex-flow:row nowrap;-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start}.navbar-expand>.container,.navbar-expand>.container-fluid{padding-right:0;padding-left:0}.navbar-expand .navbar-nav{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row}.navbar-expand .navbar-nav .dropdown-menu{position:absolute}.navbar-expand .navbar-nav .dropdown-menu-right{right:0;left:auto}.navbar-expand .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand>.container,.navbar-expand>.container-fluid{-ms-flex-wrap:nowrap;flex-wrap:nowrap}.navbar-expand .navbar-collapse{display:-webkit-box!important;display:-ms-flexbox!important;display:flex!important;-ms-flex-preferred-size:auto;flex-basis:auto}.navbar-expand .navbar-toggler{display:none}.navbar-expand .dropup .dropdown-menu{top:auto;bottom:100%}.navbar-light .navbar-brand{color:rgba(0,0,0,.9)}.navbar-light .navbar-brand:focus,.navbar-light .navbar-brand:hover{color:rgba(0,0,0,.9)}.navbar-light .navbar-nav .nav-link{color:rgba(0,0,0,.5)}.navbar-light .navbar-nav .nav-link:focus,.navbar-light .navbar-nav .nav-link:hover{color:rgba(0,0,0,.7)}.navbar-light .navbar-nav .nav-link.disabled{color:rgba(0,0,0,.3)}.navbar-light .navbar-nav .active>.nav-link,.navbar-light .navbar-nav .nav-link.active,.navbar-light .navbar-nav .nav-link.show,.navbar-light .navbar-nav .show>.nav-link{color:rgba(0,0,0,.9)}.navbar-light .navbar-toggler{color:rgba(0,0,0,.5);border-color:rgba(0,0,0,.1)}.navbar-light .navbar-toggler-icon{background-image:url("data:image/svg+xml;charset=utf8,%3Csvg viewBox='0 0 30 30' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath stroke='rgba(0, 0, 0, 0.5)' stroke-width='2' stroke-linecap='round' stroke-miterlimit='10' d='M4 7h22M4 15h22M4 23h22'/%3E%3C/svg%3E")}.navbar-light .navbar-text{color:rgba(0,0,0,.5)}.navbar-light .navbar-text a{color:rgba(0,0,0,.9)}.navbar-light .navbar-text a:focus,.navbar-light .navbar-text a:hover{color:rgba(0,0,0,.9)}.navbar-dark .navbar-brand{color:#fff}.navbar-dark .navbar-brand:focus,.navbar-dark .navbar-brand:hover{color:#fff}.navbar-dark .navbar-nav .nav-link{color:rgba(255,255,255,.5)}.navbar-dark .navbar-nav .nav-link:focus,.navbar-dark .navbar-nav .nav-link:hover{color:rgba(255,255,255,.75)}.navbar-dark .navbar-nav .nav-link.disabled{color:rgba(255,255,255,.25)}.navbar-dark .navbar-nav .active>.nav-link,.navbar-dark .navbar-nav .nav-link.active,.navbar-dark .navbar-nav .nav-link.show,.navbar-dark .navbar-nav .show>.nav-link{color:#fff}.navbar-dark .navbar-toggler{color:rgba(255,255,255,.5);border-color:rgba(255,255,255,.1)}.navbar-dark .navbar-toggler-icon{background-image:url("data:image/svg+xml;charset=utf8,%3Csvg viewBox='0 0 30 30' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath stroke='rgba(255, 255, 255, 0.5)' stroke-width='2' stroke-linecap='round' stroke-miterlimit='10' d='M4 7h22M4 15h22M4 23h22'/%3E%3C/svg%3E")}.navbar-dark .navbar-text{color:rgba(255,255,255,.5)}.navbar-dark .navbar-text a{color:#fff}.navbar-dark .navbar-text a:focus,.navbar-dark .navbar-text a:hover{color:#fff}.card{position:relative;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;min-width:0;word-wrap:break-word;background-color:#fff;background-clip:border-box;border:1px solid rgba(0,0,0,.125);border-radius:.25rem}.card>hr{margin-right:0;margin-left:0}.card>.list-group:first-child .list-group-item:first-child{border-top-left-radius:.25rem;border-top-right-radius:.25rem}.card>.list-group:last-child .list-group-item:last-child{border-bottom-right-radius:.25rem;border-bottom-left-radius:.25rem}.card-body{-webkit-box-flex:1;-ms-flex:1 1 auto;flex:1 1 auto;padding:1.25rem}.card-title{margin-bottom:.75rem}.card-subtitle{margin-top:-.375rem;margin-bottom:0}.card-text:last-child{margin-bottom:0}.card-link:hover{text-decoration:none}.card-link+.card-link{margin-left:1.25rem}.card-header{padding:.75rem 1.25rem;margin-bottom:0;background-color:rgba(0,0,0,.03);border-bottom:1px solid rgba(0,0,0,.125)}.card-header:first-child{border-radius:calc(.25rem - 1px) calc(.25rem - 1px) 0 0}.card-header+.list-group .list-group-item:first-child{border-top:0}.card-footer{padding:.75rem 1.25rem;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.125)}.card-footer:last-child{border-radius:0 0 calc(.25rem - 1px) calc(.25rem - 1px)}.card-header-tabs{margin-right:-.625rem;margin-bottom:-.75rem;margin-left:-.625rem;border-bottom:0}.card-header-pills{margin-right:-.625rem;margin-left:-.625rem}.card-img-overlay{position:absolute;top:0;right:0;bottom:0;left:0;padding:1.25rem}.card-img{width:100%;border-radius:calc(.25rem - 1px)}.card-img-top{width:100%;border-top-left-radius:calc(.25rem - 1px);border-top-right-radius:calc(.25rem - 1px)}.card-img-bottom{width:100%;border-bottom-right-radius:calc(.25rem - 1px);border-bottom-left-radius:calc(.25rem - 1px)}.card-deck{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.card-deck .card{margin-bottom:15px}@media (min-width:576px){.card-deck{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-flow:row wrap;flex-flow:row wrap;margin-right:-15px;margin-left:-15px}.card-deck .card{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-flex:1;-ms-flex:1 0 0%;flex:1 0 0%;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;margin-right:15px;margin-bottom:0;margin-left:15px}}.card-group{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.card-group>.card{margin-bottom:15px}@media (min-width:576px){.card-group{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-flow:row wrap;flex-flow:row wrap}.card-group>.card{-webkit-box-flex:1;-ms-flex:1 0 0%;flex:1 0 0%;margin-bottom:0}.card-group>.card+.card{margin-left:0;border-left:0}.card-group>.card:first-child{border-top-right-radius:0;border-bottom-right-radius:0}.card-group>.card:first-child .card-header,.card-group>.card:first-child .card-img-top{border-top-right-radius:0}.card-group>.card:first-child .card-footer,.card-group>.card:first-child .card-img-bottom{border-bottom-right-radius:0}.card-group>.card:last-child{border-top-left-radius:0;border-bottom-left-radius:0}.card-group>.card:last-child .card-header,.card-group>.card:last-child .card-img-top{border-top-left-radius:0}.card-group>.card:last-child .card-footer,.card-group>.card:last-child .card-img-bottom{border-bottom-left-radius:0}.card-group>.card:only-child{border-radius:.25rem}.card-group>.card:only-child .card-header,.card-group>.card:only-child .card-img-top{border-top-left-radius:.25rem;border-top-right-radius:.25rem}.card-group>.card:only-child .card-footer,.card-group>.card:only-child .card-img-bottom{border-bottom-right-radius:.25rem;border-bottom-left-radius:.25rem}.card-group>.card:not(:first-child):not(:last-child):not(:only-child){border-radius:0}.card-group>.card:not(:first-child):not(:last-child):not(:only-child) .card-footer,.card-group>.card:not(:first-child):not(:last-child):not(:only-child) .card-header,.card-group>.card:not(:first-child):not(:last-child):not(:only-child) .card-img-bottom,.card-group>.card:not(:first-child):not(:last-child):not(:only-child) .card-img-top{border-radius:0}}.card-columns .card{margin-bottom:.75rem}@media (min-width:576px){.card-columns{-webkit-column-count:3;-moz-column-count:3;column-count:3;-webkit-column-gap:1.25rem;-moz-column-gap:1.25rem;column-gap:1.25rem}.card-columns .card{display:inline-block;width:100%}}.breadcrumb{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;padding:.75rem 1rem;margin-bottom:1rem;list-style:none;background-color:#e9ecef;border-radius:.25rem}.breadcrumb-item+.breadcrumb-item::before{display:inline-block;padding-right:.5rem;padding-left:.5rem;color:#6c757d;content:"/"}.breadcrumb-item+.breadcrumb-item:hover::before{text-decoration:underline}.breadcrumb-item+.breadcrumb-item:hover::before{text-decoration:none}.breadcrumb-item.active{color:#6c757d}.pagination{display:-webkit-box;display:-ms-flexbox;display:flex;padding-left:0;list-style:none;border-radius:.25rem}.page-link{position:relative;display:block;padding:.5rem .75rem;margin-left:-1px;line-height:1.25;color:#007bff;background-color:#fff;border:1px solid #dee2e6}.page-link:hover{color:#0056b3;text-decoration:none;background-color:#e9ecef;border-color:#dee2e6}.page-link:focus{z-index:2;outline:0;box-shadow:0 0 0 .2rem rgba(0,123,255,.25)}.page-link:not(:disabled):not(.disabled){cursor:pointer}.page-item:first-child .page-link{margin-left:0;border-top-left-radius:.25rem;border-bottom-left-radius:.25rem}.page-item:last-child .page-link{border-top-right-radius:.25rem;border-bottom-right-radius:.25rem}.page-item.active .page-link{z-index:1;color:#fff;background-color:#007bff;border-color:#007bff}.page-item.disabled .page-link{color:#6c757d;pointer-events:none;cursor:auto;background-color:#fff;border-color:#dee2e6}.pagination-lg .page-link{padding:.75rem 1.5rem;font-size:1.25rem;line-height:1.5}.pagination-lg .page-item:first-child .page-link{border-top-left-radius:.3rem;border-bottom-left-radius:.3rem}.pagination-lg .page-item:last-child .page-link{border-top-right-radius:.3rem;border-bottom-right-radius:.3rem}.pagination-sm .page-link{padding:.25rem .5rem;font-size:.875rem;line-height:1.5}.pagination-sm .page-item:first-child .page-link{border-top-left-radius:.2rem;border-bottom-left-radius:.2rem}.pagination-sm .page-item:last-child .page-link{border-top-right-radius:.2rem;border-bottom-right-radius:.2rem}.badge{display:inline-block;padding:.25em .4em;font-size:75%;font-weight:700;line-height:1;text-align:center;white-space:nowrap;vertical-align:baseline;border-radius:.25rem}.badge:empty{display:none}.btn .badge{position:relative;top:-1px}.badge-pill{padding-right:.6em;padding-left:.6em;border-radius:10rem}.badge-primary{color:#fff;background-color:#007bff}.badge-primary[href]:focus,.badge-primary[href]:hover{color:#fff;text-decoration:none;background-color:#0062cc}.badge-secondary{color:#fff;background-color:#6c757d}.badge-secondary[href]:focus,.badge-secondary[href]:hover{color:#fff;text-decoration:none;background-color:#545b62}.badge-success{color:#fff;background-color:#28a745}.badge-success[href]:focus,.badge-success[href]:hover{color:#fff;text-decoration:none;background-color:#1e7e34}.badge-info{color:#fff;background-color:#17a2b8}.badge-info[href]:focus,.badge-info[href]:hover{color:#fff;text-decoration:none;background-color:#117a8b}.badge-warning{color:#212529;background-color:#ffc107}.badge-warning[href]:focus,.badge-warning[href]:hover{color:#212529;text-decoration:none;background-color:#d39e00}.badge-danger{color:#fff;background-color:#dc3545}.badge-danger[href]:focus,.badge-danger[href]:hover{color:#fff;text-decoration:none;background-color:#bd2130}.badge-light{color:#212529;background-color:#f8f9fa}.badge-light[href]:focus,.badge-light[href]:hover{color:#212529;text-decoration:none;background-color:#dae0e5}.badge-dark{color:#fff;background-color:#343a40}.badge-dark[href]:focus,.badge-dark[href]:hover{color:#fff;text-decoration:none;background-color:#1d2124}.jumbotron{padding:2rem 1rem;margin-bottom:2rem;background-color:#e9ecef;border-radius:.3rem}@media (min-width:576px){.jumbotron{padding:4rem 2rem}}.jumbotron-fluid{padding-right:0;padding-left:0;border-radius:0}.alert{position:relative;padding:.75rem 1.25rem;margin-bottom:1rem;border:1px solid transparent;border-radius:.25rem}.alert-heading{color:inherit}.alert-link{font-weight:700}.alert-dismissible{padding-right:4rem}.alert-dismissible .close{position:absolute;top:0;right:0;padding:.75rem 1.25rem;color:inherit}.alert-primary{color:#004085;background-color:#cce5ff;border-color:#b8daff}.alert-primary hr{border-top-color:#9fcdff}.alert-primary .alert-link{color:#002752}.alert-secondary{color:#383d41;background-color:#e2e3e5;border-color:#d6d8db}.alert-secondary hr{border-top-color:#c8cbcf}.alert-secondary .alert-link{color:#202326}.alert-success{color:#155724;background-color:#d4edda;border-color:#c3e6cb}.alert-success hr{border-top-color:#b1dfbb}.alert-success .alert-link{color:#0b2e13}.alert-info{color:#0c5460;background-color:#d1ecf1;border-color:#bee5eb}.alert-info hr{border-top-color:#abdde5}.alert-info .alert-link{color:#062c33}.alert-warning{color:#856404;background-color:#fff3cd;border-color:#ffeeba}.alert-warning hr{border-top-color:#ffe8a1}.alert-warning .alert-link{color:#533f03}.alert-danger{color:#721c24;background-color:#f8d7da;border-color:#f5c6cb}.alert-danger hr{border-top-color:#f1b0b7}.alert-danger .alert-link{color:#491217}.alert-light{color:#818182;background-color:#fefefe;border-color:#fdfdfe}.alert-light hr{border-top-color:#ececf6}.alert-light .alert-link{color:#686868}.alert-dark{color:#1b1e21;background-color:#d6d8d9;border-color:#c6c8ca}.alert-dark hr{border-top-color:#b9bbbe}.alert-dark .alert-link{color:#040505}@-webkit-keyframes progress-bar-stripes{from{background-position:1rem 0}to{background-position:0 0}}@keyframes progress-bar-stripes{from{background-position:1rem 0}to{background-position:0 0}}.progress{display:-webkit-box;display:-ms-flexbox;display:flex;height:1rem;overflow:hidden;font-size:.75rem;background-color:#e9ecef;border-radius:.25rem}.progress-bar{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;color:#fff;text-align:center;background-color:#007bff;transition:width .6s ease}.progress-bar-striped{background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-size:1rem 1rem}.progress-bar-animated{-webkit-animation:progress-bar-stripes 1s linear infinite;animation:progress-bar-stripes 1s linear infinite}.media{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start}.media-body{-webkit-box-flex:1;-ms-flex:1;flex:1}.list-group{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;padding-left:0;margin-bottom:0}.list-group-item-action{width:100%;color:#495057;text-align:inherit}.list-group-item-action:focus,.list-group-item-action:hover{color:#495057;text-decoration:none;background-color:#f8f9fa}.list-group-item-action:active{color:#212529;background-color:#e9ecef}.list-group-item{position:relative;display:block;padding:.75rem 1.25rem;margin-bottom:-1px;background-color:#fff;border:1px solid rgba(0,0,0,.125)}.list-group-item:first-child{border-top-left-radius:.25rem;border-top-right-radius:.25rem}.list-group-item:last-child{margin-bottom:0;border-bottom-right-radius:.25rem;border-bottom-left-radius:.25rem}.list-group-item:focus,.list-group-item:hover{z-index:1;text-decoration:none}.list-group-item.disabled,.list-group-item:disabled{color:#6c757d;background-color:#fff}.list-group-item.active{z-index:2;color:#fff;background-color:#007bff;border-color:#007bff}.list-group-flush .list-group-item{border-right:0;border-left:0;border-radius:0}.list-group-flush:first-child .list-group-item:first-child{border-top:0}.list-group-flush:last-child .list-group-item:last-child{border-bottom:0}.list-group-item-primary{color:#004085;background-color:#b8daff}.list-group-item-primary.list-group-item-action:focus,.list-group-item-primary.list-group-item-action:hover{color:#004085;background-color:#9fcdff}.list-group-item-primary.list-group-item-action.active{color:#fff;background-color:#004085;border-color:#004085}.list-group-item-secondary{color:#383d41;background-color:#d6d8db}.list-group-item-secondary.list-group-item-action:focus,.list-group-item-secondary.list-group-item-action:hover{color:#383d41;background-color:#c8cbcf}.list-group-item-secondary.list-group-item-action.active{color:#fff;background-color:#383d41;border-color:#383d41}.list-group-item-success{color:#155724;background-color:#c3e6cb}.list-group-item-success.list-group-item-action:focus,.list-group-item-success.list-group-item-action:hover{color:#155724;background-color:#b1dfbb}.list-group-item-success.list-group-item-action.active{color:#fff;background-color:#155724;border-color:#155724}.list-group-item-info{color:#0c5460;background-color:#bee5eb}.list-group-item-info.list-group-item-action:focus,.list-group-item-info.list-group-item-action:hover{color:#0c5460;background-color:#abdde5}.list-group-item-info.list-group-item-action.active{color:#fff;background-color:#0c5460;border-color:#0c5460}.list-group-item-warning{color:#856404;background-color:#ffeeba}.list-group-item-warning.list-group-item-action:focus,.list-group-item-warning.list-group-item-action:hover{color:#856404;background-color:#ffe8a1}.list-group-item-warning.list-group-item-action.active{color:#fff;background-color:#856404;border-color:#856404}.list-group-item-danger{color:#721c24;background-color:#f5c6cb}.list-group-item-danger.list-group-item-action:focus,.list-group-item-danger.list-group-item-action:hover{color:#721c24;background-color:#f1b0b7}.list-group-item-danger.list-group-item-action.active{color:#fff;background-color:#721c24;border-color:#721c24}.list-group-item-light{color:#818182;background-color:#fdfdfe}.list-group-item-light.list-group-item-action:focus,.list-group-item-light.list-group-item-action:hover{color:#818182;background-color:#ececf6}.list-group-item-light.list-group-item-action.active{color:#fff;background-color:#818182;border-color:#818182}.list-group-item-dark{color:#1b1e21;background-color:#c6c8ca}.list-group-item-dark.list-group-item-action:focus,.list-group-item-dark.list-group-item-action:hover{color:#1b1e21;background-color:#b9bbbe}.list-group-item-dark.list-group-item-action.active{color:#fff;background-color:#1b1e21;border-color:#1b1e21}.close{float:right;font-size:1.5rem;font-weight:700;line-height:1;color:#000;text-shadow:0 1px 0 #fff;opacity:.5}.close:focus,.close:hover{color:#000;text-decoration:none;opacity:.75}.close:not(:disabled):not(.disabled){cursor:pointer}button.close{padding:0;background-color:transparent;border:0;-webkit-appearance:none}.modal-open{overflow:hidden}.modal{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1050;display:none;overflow:hidden;outline:0}.modal-open .modal{overflow-x:hidden;overflow-y:auto}.modal-dialog{position:relative;width:auto;margin:.5rem;pointer-events:none}.modal.fade .modal-dialog{transition:-webkit-transform .3s ease-out;transition:transform .3s ease-out;transition:transform .3s ease-out,-webkit-transform .3s ease-out;-webkit-transform:translate(0,-25%);transform:translate(0,-25%)}.modal.show .modal-dialog{-webkit-transform:translate(0,0);transform:translate(0,0)}.modal-dialog-centered{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;min-height:calc(100% - (.5rem * 2))}.modal-content{position:relative;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;width:100%;pointer-events:auto;background-color:#fff;background-clip:padding-box;border:1px solid rgba(0,0,0,.2);border-radius:.3rem;outline:0}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1040;background-color:#000}.modal-backdrop.fade{opacity:0}.modal-backdrop.show{opacity:.5}.modal-header{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;padding:1rem;border-bottom:1px solid #e9ecef;border-top-left-radius:.3rem;border-top-right-radius:.3rem}.modal-header .close{padding:1rem;margin:-1rem -1rem -1rem auto}.modal-title{margin-bottom:0;line-height:1.5}.modal-body{position:relative;-webkit-box-flex:1;-ms-flex:1 1 auto;flex:1 1 auto;padding:1rem}.modal-footer{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:end;-ms-flex-pack:end;justify-content:flex-end;padding:1rem;border-top:1px solid #e9ecef}.modal-footer>:not(:first-child){margin-left:.25rem}.modal-footer>:not(:last-child){margin-right:.25rem}.modal-scrollbar-measure{position:absolute;top:-9999px;width:50px;height:50px;overflow:scroll}@media (min-width:576px){.modal-dialog{max-width:500px;margin:1.75rem auto}.modal-dialog-centered{min-height:calc(100% - (1.75rem * 2))}.modal-sm{max-width:300px}}@media (min-width:992px){.modal-lg{max-width:800px}}.tooltip{position:absolute;z-index:1070;display:block;margin:0;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol";font-style:normal;font-weight:400;line-height:1.5;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;word-break:normal;word-spacing:normal;white-space:normal;line-break:auto;font-size:.875rem;word-wrap:break-word;opacity:0}.tooltip.show{opacity:.9}.tooltip .arrow{position:absolute;display:block;width:.8rem;height:.4rem}.tooltip .arrow::before{position:absolute;content:"";border-color:transparent;border-style:solid}.bs-tooltip-auto[x-placement^=top],.bs-tooltip-top{padding:.4rem 0}.bs-tooltip-auto[x-placement^=top] .arrow,.bs-tooltip-top .arrow{bottom:0}.bs-tooltip-auto[x-placement^=top] .arrow::before,.bs-tooltip-top .arrow::before{top:0;border-width:.4rem .4rem 0;border-top-color:#000}.bs-tooltip-auto[x-placement^=right],.bs-tooltip-right{padding:0 .4rem}.bs-tooltip-auto[x-placement^=right] .arrow,.bs-tooltip-right .arrow{left:0;width:.4rem;height:.8rem}.bs-tooltip-auto[x-placement^=right] .arrow::before,.bs-tooltip-right .arrow::before{right:0;border-width:.4rem .4rem .4rem 0;border-right-color:#000}.bs-tooltip-auto[x-placement^=bottom],.bs-tooltip-bottom{padding:.4rem 0}.bs-tooltip-auto[x-placement^=bottom] .arrow,.bs-tooltip-bottom .arrow{top:0}.bs-tooltip-auto[x-placement^=bottom] .arrow::before,.bs-tooltip-bottom .arrow::before{bottom:0;border-width:0 .4rem .4rem;border-bottom-color:#000}.bs-tooltip-auto[x-placement^=left],.bs-tooltip-left{padding:0 .4rem}.bs-tooltip-auto[x-placement^=left] .arrow,.bs-tooltip-left .arrow{right:0;width:.4rem;height:.8rem}.bs-tooltip-auto[x-placement^=left] .arrow::before,.bs-tooltip-left .arrow::before{left:0;border-width:.4rem 0 .4rem .4rem;border-left-color:#000}.tooltip-inner{max-width:200px;padding:.25rem .5rem;color:#fff;text-align:center;background-color:#000;border-radius:.25rem}.popover{position:absolute;top:0;left:0;z-index:1060;display:block;max-width:276px;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol";font-style:normal;font-weight:400;line-height:1.5;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;word-break:normal;word-spacing:normal;white-space:normal;line-break:auto;font-size:.875rem;word-wrap:break-word;background-color:#fff;background-clip:padding-box;border:1px solid rgba(0,0,0,.2);border-radius:.3rem}.popover .arrow{position:absolute;display:block;width:1rem;height:.5rem;margin:0 .3rem}.popover .arrow::after,.popover .arrow::before{position:absolute;display:block;content:"";border-color:transparent;border-style:solid}.bs-popover-auto[x-placement^=top],.bs-popover-top{margin-bottom:.5rem}.bs-popover-auto[x-placement^=top] .arrow,.bs-popover-top .arrow{bottom:calc((.5rem + 1px) * -1)}.bs-popover-auto[x-placement^=top] .arrow::after,.bs-popover-auto[x-placement^=top] .arrow::before,.bs-popover-top .arrow::after,.bs-popover-top .arrow::before{border-width:.5rem .5rem 0}.bs-popover-auto[x-placement^=top] .arrow::before,.bs-popover-top .arrow::before{bottom:0;border-top-color:rgba(0,0,0,.25)}.bs-popover-auto[x-placement^=top] .arrow::after,.bs-popover-top .arrow::after{bottom:1px;border-top-color:#fff}.bs-popover-auto[x-placement^=right],.bs-popover-right{margin-left:.5rem}.bs-popover-auto[x-placement^=right] .arrow,.bs-popover-right .arrow{left:calc((.5rem + 1px) * -1);width:.5rem;height:1rem;margin:.3rem 0}.bs-popover-auto[x-placement^=right] .arrow::after,.bs-popover-auto[x-placement^=right] .arrow::before,.bs-popover-right .arrow::after,.bs-popover-right .arrow::before{border-width:.5rem .5rem .5rem 0}.bs-popover-auto[x-placement^=right] .arrow::before,.bs-popover-right .arrow::before{left:0;border-right-color:rgba(0,0,0,.25)}.bs-popover-auto[x-placement^=right] .arrow::after,.bs-popover-right .arrow::after{left:1px;border-right-color:#fff}.bs-popover-auto[x-placement^=bottom],.bs-popover-bottom{margin-top:.5rem}.bs-popover-auto[x-placement^=bottom] .arrow,.bs-popover-bottom .arrow{top:calc((.5rem + 1px) * -1)}.bs-popover-auto[x-placement^=bottom] .arrow::after,.bs-popover-auto[x-placement^=bottom] .arrow::before,.bs-popover-bottom .arrow::after,.bs-popover-bottom .arrow::before{border-width:0 .5rem .5rem .5rem}.bs-popover-auto[x-placement^=bottom] .arrow::before,.bs-popover-bottom .arrow::before{top:0;border-bottom-color:rgba(0,0,0,.25)}.bs-popover-auto[x-placement^=bottom] .arrow::after,.bs-popover-bottom .arrow::after{top:1px;border-bottom-color:#fff}.bs-popover-auto[x-placement^=bottom] .popover-header::before,.bs-popover-bottom .popover-header::before{position:absolute;top:0;left:50%;display:block;width:1rem;margin-left:-.5rem;content:"";border-bottom:1px solid #f7f7f7}.bs-popover-auto[x-placement^=left],.bs-popover-left{margin-right:.5rem}.bs-popover-auto[x-placement^=left] .arrow,.bs-popover-left .arrow{right:calc((.5rem + 1px) * -1);width:.5rem;height:1rem;margin:.3rem 0}.bs-popover-auto[x-placement^=left] .arrow::after,.bs-popover-auto[x-placement^=left] .arrow::before,.bs-popover-left .arrow::after,.bs-popover-left .arrow::before{border-width:.5rem 0 .5rem .5rem}.bs-popover-auto[x-placement^=left] .arrow::before,.bs-popover-left .arrow::before{right:0;border-left-color:rgba(0,0,0,.25)}.bs-popover-auto[x-placement^=left] .arrow::after,.bs-popover-left .arrow::after{right:1px;border-left-color:#fff}.popover-header{padding:.5rem .75rem;margin-bottom:0;font-size:1rem;color:inherit;background-color:#f7f7f7;border-bottom:1px solid #ebebeb;border-top-left-radius:calc(.3rem - 1px);border-top-right-radius:calc(.3rem - 1px)}.popover-header:empty{display:none}.popover-body{padding:.5rem .75rem;color:#212529}.carousel{position:relative}.carousel-inner{position:relative;width:100%;overflow:hidden}.carousel-item{position:relative;display:none;-webkit-box-align:center;-ms-flex-align:center;align-items:center;width:100%;transition:-webkit-transform .6s ease;transition:transform .6s ease;transition:transform .6s ease,-webkit-transform .6s ease;-webkit-backface-visibility:hidden;backface-visibility:hidden;-webkit-perspective:1000px;perspective:1000px}.carousel-item-next,.carousel-item-prev,.carousel-item.active{display:block}.carousel-item-next,.carousel-item-prev{position:absolute;top:0}.carousel-item-next.carousel-item-left,.carousel-item-prev.carousel-item-right{-webkit-transform:translateX(0);transform:translateX(0)}@supports ((-webkit-transform-style:preserve-3d) or (transform-style:preserve-3d)){.carousel-item-next.carousel-item-left,.carousel-item-prev.carousel-item-right{-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}}.active.carousel-item-right,.carousel-item-next{-webkit-transform:translateX(100%);transform:translateX(100%)}@supports ((-webkit-transform-style:preserve-3d) or (transform-style:preserve-3d)){.active.carousel-item-right,.carousel-item-next{-webkit-transform:translate3d(100%,0,0);transform:translate3d(100%,0,0)}}.active.carousel-item-left,.carousel-item-prev{-webkit-transform:translateX(-100%);transform:translateX(-100%)}@supports ((-webkit-transform-style:preserve-3d) or (transform-style:preserve-3d)){.active.carousel-item-left,.carousel-item-prev{-webkit-transform:translate3d(-100%,0,0);transform:translate3d(-100%,0,0)}}.carousel-control-next,.carousel-control-prev{position:absolute;top:0;bottom:0;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;width:15%;color:#fff;text-align:center;opacity:.5}.carousel-control-next:focus,.carousel-control-next:hover,.carousel-control-prev:focus,.carousel-control-prev:hover{color:#fff;text-decoration:none;outline:0;opacity:.9}.carousel-control-prev{left:0}.carousel-control-next{right:0}.carousel-control-next-icon,.carousel-control-prev-icon{display:inline-block;width:20px;height:20px;background:transparent no-repeat center center;background-size:100% 100%}.carousel-control-prev-icon{background-image:url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='%23fff' viewBox='0 0 8 8'%3E%3Cpath d='M5.25 0l-4 4 4 4 1.5-1.5-2.5-2.5 2.5-2.5-1.5-1.5z'/%3E%3C/svg%3E")}.carousel-control-next-icon{background-image:url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='%23fff' viewBox='0 0 8 8'%3E%3Cpath d='M2.75 0l-1.5 1.5 2.5 2.5-2.5 2.5 1.5 1.5 4-4-4-4z'/%3E%3C/svg%3E")}.carousel-indicators{position:absolute;right:0;bottom:10px;left:0;z-index:15;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;padding-left:0;margin-right:15%;margin-left:15%;list-style:none}.carousel-indicators li{position:relative;-webkit-box-flex:0;-ms-flex:0 1 auto;flex:0 1 auto;width:30px;height:3px;margin-right:3px;margin-left:3px;text-indent:-999px;background-color:rgba(255,255,255,.5)}.carousel-indicators li::before{position:absolute;top:-10px;left:0;display:inline-block;width:100%;height:10px;content:""}.carousel-indicators li::after{position:absolute;bottom:-10px;left:0;display:inline-block;width:100%;height:10px;content:""}.carousel-indicators .active{background-color:#fff}.carousel-caption{position:absolute;right:15%;bottom:20px;left:15%;z-index:10;padding-top:20px;padding-bottom:20px;color:#fff;text-align:center}.align-baseline{vertical-align:baseline!important}.align-top{vertical-align:top!important}.align-middle{vertical-align:middle!important}.align-bottom{vertical-align:bottom!important}.align-text-bottom{vertical-align:text-bottom!important}.align-text-top{vertical-align:text-top!important}.bg-primary{background-color:#007bff!important}a.bg-primary:focus,a.bg-primary:hover,button.bg-primary:focus,button.bg-primary:hover{background-color:#0062cc!important}.bg-secondary{background-color:#6c757d!important}a.bg-secondary:focus,a.bg-secondary:hover,button.bg-secondary:focus,button.bg-secondary:hover{background-color:#545b62!important}.bg-success{background-color:#28a745!important}a.bg-success:focus,a.bg-success:hover,button.bg-success:focus,button.bg-success:hover{background-color:#1e7e34!important}.bg-info{background-color:#17a2b8!important}a.bg-info:focus,a.bg-info:hover,button.bg-info:focus,button.bg-info:hover{background-color:#117a8b!important}.bg-warning{background-color:#ffc107!important}a.bg-warning:focus,a.bg-warning:hover,button.bg-warning:focus,button.bg-warning:hover{background-color:#d39e00!important}.bg-danger{background-color:#dc3545!important}a.bg-danger:focus,a.bg-danger:hover,button.bg-danger:focus,button.bg-danger:hover{background-color:#bd2130!important}.bg-light{background-color:#f8f9fa!important}a.bg-light:focus,a.bg-light:hover,button.bg-light:focus,button.bg-light:hover{background-color:#dae0e5!important}.bg-dark{background-color:#343a40!important}a.bg-dark:focus,a.bg-dark:hover,button.bg-dark:focus,button.bg-dark:hover{background-color:#1d2124!important}.bg-white{background-color:#fff!important}.bg-transparent{background-color:transparent!important}.border{border:1px solid #dee2e6!important}.border-top{border-top:1px solid #dee2e6!important}.border-right{border-right:1px solid #dee2e6!important}.border-bottom{border-bottom:1px solid #dee2e6!important}.border-left{border-left:1px solid #dee2e6!important}.border-0{border:0!important}.border-top-0{border-top:0!important}.border-right-0{border-right:0!important}.border-bottom-0{border-bottom:0!important}.border-left-0{border-left:0!important}.border-primary{border-color:#007bff!important}.border-secondary{border-color:#6c757d!important}.border-success{border-color:#28a745!important}.border-info{border-color:#17a2b8!important}.border-warning{border-color:#ffc107!important}.border-danger{border-color:#dc3545!important}.border-light{border-color:#f8f9fa!important}.border-dark{border-color:#343a40!important}.border-white{border-color:#fff!important}.rounded{border-radius:.25rem!important}.rounded-top{border-top-left-radius:.25rem!important;border-top-right-radius:.25rem!important}.rounded-right{border-top-right-radius:.25rem!important;border-bottom-right-radius:.25rem!important}.rounded-bottom{border-bottom-right-radius:.25rem!important;border-bottom-left-radius:.25rem!important}.rounded-left{border-top-left-radius:.25rem!important;border-bottom-left-radius:.25rem!important}.rounded-circle{border-radius:50%!important}.rounded-0{border-radius:0!important}.clearfix::after{display:block;clear:both;content:""}.d-none{display:none!important}.d-inline{display:inline!important}.d-inline-block{display:inline-block!important}.d-block{display:block!important}.d-table{display:table!important}.d-table-row{display:table-row!important}.d-table-cell{display:table-cell!important}.d-flex{display:-webkit-box!important;display:-ms-flexbox!important;display:flex!important}.d-inline-flex{display:-webkit-inline-box!important;display:-ms-inline-flexbox!important;display:inline-flex!important}@media (min-width:576px){.d-sm-none{display:none!important}.d-sm-inline{display:inline!important}.d-sm-inline-block{display:inline-block!important}.d-sm-block{display:block!important}.d-sm-table{display:table!important}.d-sm-table-row{display:table-row!important}.d-sm-table-cell{display:table-cell!important}.d-sm-flex{display:-webkit-box!important;display:-ms-flexbox!important;display:flex!important}.d-sm-inline-flex{display:-webkit-inline-box!important;display:-ms-inline-flexbox!important;display:inline-flex!important}}@media (min-width:768px){.d-md-none{display:none!important}.d-md-inline{display:inline!important}.d-md-inline-block{display:inline-block!important}.d-md-block{display:block!important}.d-md-table{display:table!important}.d-md-table-row{display:table-row!important}.d-md-table-cell{display:table-cell!important}.d-md-flex{display:-webkit-box!important;display:-ms-flexbox!important;display:flex!important}.d-md-inline-flex{display:-webkit-inline-box!important;display:-ms-inline-flexbox!important;display:inline-flex!important}}@media (min-width:992px){.d-lg-none{display:none!important}.d-lg-inline{display:inline!important}.d-lg-inline-block{display:inline-block!important}.d-lg-block{display:block!important}.d-lg-table{display:table!important}.d-lg-table-row{display:table-row!important}.d-lg-table-cell{display:table-cell!important}.d-lg-flex{display:-webkit-box!important;display:-ms-flexbox!important;display:flex!important}.d-lg-inline-flex{display:-webkit-inline-box!important;display:-ms-inline-flexbox!important;display:inline-flex!important}}@media (min-width:1200px){.d-xl-none{display:none!important}.d-xl-inline{display:inline!important}.d-xl-inline-block{display:inline-block!important}.d-xl-block{display:block!important}.d-xl-table{display:table!important}.d-xl-table-row{display:table-row!important}.d-xl-table-cell{display:table-cell!important}.d-xl-flex{display:-webkit-box!important;display:-ms-flexbox!important;display:flex!important}.d-xl-inline-flex{display:-webkit-inline-box!important;display:-ms-inline-flexbox!important;display:inline-flex!important}}@media print{.d-print-none{display:none!important}.d-print-inline{display:inline!important}.d-print-inline-block{display:inline-block!important}.d-print-block{display:block!important}.d-print-table{display:table!important}.d-print-table-row{display:table-row!important}.d-print-table-cell{display:table-cell!important}.d-print-flex{display:-webkit-box!important;display:-ms-flexbox!important;display:flex!important}.d-print-inline-flex{display:-webkit-inline-box!important;display:-ms-inline-flexbox!important;display:inline-flex!important}}.embed-responsive{position:relative;display:block;width:100%;padding:0;overflow:hidden}.embed-responsive::before{display:block;content:""}.embed-responsive .embed-responsive-item,.embed-responsive embed,.embed-responsive iframe,.embed-responsive object,.embed-responsive video{position:absolute;top:0;bottom:0;left:0;width:100%;height:100%;border:0}.embed-responsive-21by9::before{padding-top:42.857143%}.embed-responsive-16by9::before{padding-top:56.25%}.embed-responsive-4by3::before{padding-top:75%}.embed-responsive-1by1::before{padding-top:100%}.flex-row{-webkit-box-orient:horizontal!important;-webkit-box-direction:normal!important;-ms-flex-direction:row!important;flex-direction:row!important}.flex-column{-webkit-box-orient:vertical!important;-webkit-box-direction:normal!important;-ms-flex-direction:column!important;flex-direction:column!important}.flex-row-reverse{-webkit-box-orient:horizontal!important;-webkit-box-direction:reverse!important;-ms-flex-direction:row-reverse!important;flex-direction:row-reverse!important}.flex-column-reverse{-webkit-box-orient:vertical!important;-webkit-box-direction:reverse!important;-ms-flex-direction:column-reverse!important;flex-direction:column-reverse!important}.flex-wrap{-ms-flex-wrap:wrap!important;flex-wrap:wrap!important}.flex-nowrap{-ms-flex-wrap:nowrap!important;flex-wrap:nowrap!important}.flex-wrap-reverse{-ms-flex-wrap:wrap-reverse!important;flex-wrap:wrap-reverse!important}.justify-content-start{-webkit-box-pack:start!important;-ms-flex-pack:start!important;justify-content:flex-start!important}.justify-content-end{-webkit-box-pack:end!important;-ms-flex-pack:end!important;justify-content:flex-end!important}.justify-content-center{-webkit-box-pack:center!important;-ms-flex-pack:center!important;justify-content:center!important}.justify-content-between{-webkit-box-pack:justify!important;-ms-flex-pack:justify!important;justify-content:space-between!important}.justify-content-around{-ms-flex-pack:distribute!important;justify-content:space-around!important}.align-items-start{-webkit-box-align:start!important;-ms-flex-align:start!important;align-items:flex-start!important}.align-items-end{-webkit-box-align:end!important;-ms-flex-align:end!important;align-items:flex-end!important}.align-items-center{-webkit-box-align:center!important;-ms-flex-align:center!important;align-items:center!important}.align-items-baseline{-webkit-box-align:baseline!important;-ms-flex-align:baseline!important;align-items:baseline!important}.align-items-stretch{-webkit-box-align:stretch!important;-ms-flex-align:stretch!important;align-items:stretch!important}.align-content-start{-ms-flex-line-pack:start!important;align-content:flex-start!important}.align-content-end{-ms-flex-line-pack:end!important;align-content:flex-end!important}.align-content-center{-ms-flex-line-pack:center!important;align-content:center!important}.align-content-between{-ms-flex-line-pack:justify!important;align-content:space-between!important}.align-content-around{-ms-flex-line-pack:distribute!important;align-content:space-around!important}.align-content-stretch{-ms-flex-line-pack:stretch!important;align-content:stretch!important}.align-self-auto{-ms-flex-item-align:auto!important;align-self:auto!important}.align-self-start{-ms-flex-item-align:start!important;align-self:flex-start!important}.align-self-end{-ms-flex-item-align:end!important;align-self:flex-end!important}.align-self-center{-ms-flex-item-align:center!important;align-self:center!important}.align-self-baseline{-ms-flex-item-align:baseline!important;align-self:baseline!important}.align-self-stretch{-ms-flex-item-align:stretch!important;align-self:stretch!important}@media (min-width:576px){.flex-sm-row{-webkit-box-orient:horizontal!important;-webkit-box-direction:normal!important;-ms-flex-direction:row!important;flex-direction:row!important}.flex-sm-column{-webkit-box-orient:vertical!important;-webkit-box-direction:normal!important;-ms-flex-direction:column!important;flex-direction:column!important}.flex-sm-row-reverse{-webkit-box-orient:horizontal!important;-webkit-box-direction:reverse!important;-ms-flex-direction:row-reverse!important;flex-direction:row-reverse!important}.flex-sm-column-reverse{-webkit-box-orient:vertical!important;-webkit-box-direction:reverse!important;-ms-flex-direction:column-reverse!important;flex-direction:column-reverse!important}.flex-sm-wrap{-ms-flex-wrap:wrap!important;flex-wrap:wrap!important}.flex-sm-nowrap{-ms-flex-wrap:nowrap!important;flex-wrap:nowrap!important}.flex-sm-wrap-reverse{-ms-flex-wrap:wrap-reverse!important;flex-wrap:wrap-reverse!important}.justify-content-sm-start{-webkit-box-pack:start!important;-ms-flex-pack:start!important;justify-content:flex-start!important}.justify-content-sm-end{-webkit-box-pack:end!important;-ms-flex-pack:end!important;justify-content:flex-end!important}.justify-content-sm-center{-webkit-box-pack:center!important;-ms-flex-pack:center!important;justify-content:center!important}.justify-content-sm-between{-webkit-box-pack:justify!important;-ms-flex-pack:justify!important;justify-content:space-between!important}.justify-content-sm-around{-ms-flex-pack:distribute!important;justify-content:space-around!important}.align-items-sm-start{-webkit-box-align:start!important;-ms-flex-align:start!important;align-items:flex-start!important}.align-items-sm-end{-webkit-box-align:end!important;-ms-flex-align:end!important;align-items:flex-end!important}.align-items-sm-center{-webkit-box-align:center!important;-ms-flex-align:center!important;align-items:center!important}.align-items-sm-baseline{-webkit-box-align:baseline!important;-ms-flex-align:baseline!important;align-items:baseline!important}.align-items-sm-stretch{-webkit-box-align:stretch!important;-ms-flex-align:stretch!important;align-items:stretch!important}.align-content-sm-start{-ms-flex-line-pack:start!important;align-content:flex-start!important}.align-content-sm-end{-ms-flex-line-pack:end!important;align-content:flex-end!important}.align-content-sm-center{-ms-flex-line-pack:center!important;align-content:center!important}.align-content-sm-between{-ms-flex-line-pack:justify!important;align-content:space-between!important}.align-content-sm-around{-ms-flex-line-pack:distribute!important;align-content:space-around!important}.align-content-sm-stretch{-ms-flex-line-pack:stretch!important;align-content:stretch!important}.align-self-sm-auto{-ms-flex-item-align:auto!important;align-self:auto!important}.align-self-sm-start{-ms-flex-item-align:start!important;align-self:flex-start!important}.align-self-sm-end{-ms-flex-item-align:end!important;align-self:flex-end!important}.align-self-sm-center{-ms-flex-item-align:center!important;align-self:center!important}.align-self-sm-baseline{-ms-flex-item-align:baseline!important;align-self:baseline!important}.align-self-sm-stretch{-ms-flex-item-align:stretch!important;align-self:stretch!important}}@media (min-width:768px){.flex-md-row{-webkit-box-orient:horizontal!important;-webkit-box-direction:normal!important;-ms-flex-direction:row!important;flex-direction:row!important}.flex-md-column{-webkit-box-orient:vertical!important;-webkit-box-direction:normal!important;-ms-flex-direction:column!important;flex-direction:column!important}.flex-md-row-reverse{-webkit-box-orient:horizontal!important;-webkit-box-direction:reverse!important;-ms-flex-direction:row-reverse!important;flex-direction:row-reverse!important}.flex-md-column-reverse{-webkit-box-orient:vertical!important;-webkit-box-direction:reverse!important;-ms-flex-direction:column-reverse!important;flex-direction:column-reverse!important}.flex-md-wrap{-ms-flex-wrap:wrap!important;flex-wrap:wrap!important}.flex-md-nowrap{-ms-flex-wrap:nowrap!important;flex-wrap:nowrap!important}.flex-md-wrap-reverse{-ms-flex-wrap:wrap-reverse!important;flex-wrap:wrap-reverse!important}.justify-content-md-start{-webkit-box-pack:start!important;-ms-flex-pack:start!important;justify-content:flex-start!important}.justify-content-md-end{-webkit-box-pack:end!important;-ms-flex-pack:end!important;justify-content:flex-end!important}.justify-content-md-center{-webkit-box-pack:center!important;-ms-flex-pack:center!important;justify-content:center!important}.justify-content-md-between{-webkit-box-pack:justify!important;-ms-flex-pack:justify!important;justify-content:space-between!important}.justify-content-md-around{-ms-flex-pack:distribute!important;justify-content:space-around!important}.align-items-md-start{-webkit-box-align:start!important;-ms-flex-align:start!important;align-items:flex-start!important}.align-items-md-end{-webkit-box-align:end!important;-ms-flex-align:end!important;align-items:flex-end!important}.align-items-md-center{-webkit-box-align:center!important;-ms-flex-align:center!important;align-items:center!important}.align-items-md-baseline{-webkit-box-align:baseline!important;-ms-flex-align:baseline!important;align-items:baseline!important}.align-items-md-stretch{-webkit-box-align:stretch!important;-ms-flex-align:stretch!important;align-items:stretch!important}.align-content-md-start{-ms-flex-line-pack:start!important;align-content:flex-start!important}.align-content-md-end{-ms-flex-line-pack:end!important;align-content:flex-end!important}.align-content-md-center{-ms-flex-line-pack:center!important;align-content:center!important}.align-content-md-between{-ms-flex-line-pack:justify!important;align-content:space-between!important}.align-content-md-around{-ms-flex-line-pack:distribute!important;align-content:space-around!important}.align-content-md-stretch{-ms-flex-line-pack:stretch!important;align-content:stretch!important}.align-self-md-auto{-ms-flex-item-align:auto!important;align-self:auto!important}.align-self-md-start{-ms-flex-item-align:start!important;align-self:flex-start!important}.align-self-md-end{-ms-flex-item-align:end!important;align-self:flex-end!important}.align-self-md-center{-ms-flex-item-align:center!important;align-self:center!important}.align-self-md-baseline{-ms-flex-item-align:baseline!important;align-self:baseline!important}.align-self-md-stretch{-ms-flex-item-align:stretch!important;align-self:stretch!important}}@media (min-width:992px){.flex-lg-row{-webkit-box-orient:horizontal!important;-webkit-box-direction:normal!important;-ms-flex-direction:row!important;flex-direction:row!important}.flex-lg-column{-webkit-box-orient:vertical!important;-webkit-box-direction:normal!important;-ms-flex-direction:column!important;flex-direction:column!important}.flex-lg-row-reverse{-webkit-box-orient:horizontal!important;-webkit-box-direction:reverse!important;-ms-flex-direction:row-reverse!important;flex-direction:row-reverse!important}.flex-lg-column-reverse{-webkit-box-orient:vertical!important;-webkit-box-direction:reverse!important;-ms-flex-direction:column-reverse!important;flex-direction:column-reverse!important}.flex-lg-wrap{-ms-flex-wrap:wrap!important;flex-wrap:wrap!important}.flex-lg-nowrap{-ms-flex-wrap:nowrap!important;flex-wrap:nowrap!important}.flex-lg-wrap-reverse{-ms-flex-wrap:wrap-reverse!important;flex-wrap:wrap-reverse!important}.justify-content-lg-start{-webkit-box-pack:start!important;-ms-flex-pack:start!important;justify-content:flex-start!important}.justify-content-lg-end{-webkit-box-pack:end!important;-ms-flex-pack:end!important;justify-content:flex-end!important}.justify-content-lg-center{-webkit-box-pack:center!important;-ms-flex-pack:center!important;justify-content:center!important}.justify-content-lg-between{-webkit-box-pack:justify!important;-ms-flex-pack:justify!important;justify-content:space-between!important}.justify-content-lg-around{-ms-flex-pack:distribute!important;justify-content:space-around!important}.align-items-lg-start{-webkit-box-align:start!important;-ms-flex-align:start!important;align-items:flex-start!important}.align-items-lg-end{-webkit-box-align:end!important;-ms-flex-align:end!important;align-items:flex-end!important}.align-items-lg-center{-webkit-box-align:center!important;-ms-flex-align:center!important;align-items:center!important}.align-items-lg-baseline{-webkit-box-align:baseline!important;-ms-flex-align:baseline!important;align-items:baseline!important}.align-items-lg-stretch{-webkit-box-align:stretch!important;-ms-flex-align:stretch!important;align-items:stretch!important}.align-content-lg-start{-ms-flex-line-pack:start!important;align-content:flex-start!important}.align-content-lg-end{-ms-flex-line-pack:end!important;align-content:flex-end!important}.align-content-lg-center{-ms-flex-line-pack:center!important;align-content:center!important}.align-content-lg-between{-ms-flex-line-pack:justify!important;align-content:space-between!important}.align-content-lg-around{-ms-flex-line-pack:distribute!important;align-content:space-around!important}.align-content-lg-stretch{-ms-flex-line-pack:stretch!important;align-content:stretch!important}.align-self-lg-auto{-ms-flex-item-align:auto!important;align-self:auto!important}.align-self-lg-start{-ms-flex-item-align:start!important;align-self:flex-start!important}.align-self-lg-end{-ms-flex-item-align:end!important;align-self:flex-end!important}.align-self-lg-center{-ms-flex-item-align:center!important;align-self:center!important}.align-self-lg-baseline{-ms-flex-item-align:baseline!important;align-self:baseline!important}.align-self-lg-stretch{-ms-flex-item-align:stretch!important;align-self:stretch!important}}@media (min-width:1200px){.flex-xl-row{-webkit-box-orient:horizontal!important;-webkit-box-direction:normal!important;-ms-flex-direction:row!important;flex-direction:row!important}.flex-xl-column{-webkit-box-orient:vertical!important;-webkit-box-direction:normal!important;-ms-flex-direction:column!important;flex-direction:column!important}.flex-xl-row-reverse{-webkit-box-orient:horizontal!important;-webkit-box-direction:reverse!important;-ms-flex-direction:row-reverse!important;flex-direction:row-reverse!important}.flex-xl-column-reverse{-webkit-box-orient:vertical!important;-webkit-box-direction:reverse!important;-ms-flex-direction:column-reverse!important;flex-direction:column-reverse!important}.flex-xl-wrap{-ms-flex-wrap:wrap!important;flex-wrap:wrap!important}.flex-xl-nowrap{-ms-flex-wrap:nowrap!important;flex-wrap:nowrap!important}.flex-xl-wrap-reverse{-ms-flex-wrap:wrap-reverse!important;flex-wrap:wrap-reverse!important}.justify-content-xl-start{-webkit-box-pack:start!important;-ms-flex-pack:start!important;justify-content:flex-start!important}.justify-content-xl-end{-webkit-box-pack:end!important;-ms-flex-pack:end!important;justify-content:flex-end!important}.justify-content-xl-center{-webkit-box-pack:center!important;-ms-flex-pack:center!important;justify-content:center!important}.justify-content-xl-between{-webkit-box-pack:justify!important;-ms-flex-pack:justify!important;justify-content:space-between!important}.justify-content-xl-around{-ms-flex-pack:distribute!important;justify-content:space-around!important}.align-items-xl-start{-webkit-box-align:start!important;-ms-flex-align:start!important;align-items:flex-start!important}.align-items-xl-end{-webkit-box-align:end!important;-ms-flex-align:end!important;align-items:flex-end!important}.align-items-xl-center{-webkit-box-align:center!important;-ms-flex-align:center!important;align-items:center!important}.align-items-xl-baseline{-webkit-box-align:baseline!important;-ms-flex-align:baseline!important;align-items:baseline!important}.align-items-xl-stretch{-webkit-box-align:stretch!important;-ms-flex-align:stretch!important;align-items:stretch!important}.align-content-xl-start{-ms-flex-line-pack:start!important;align-content:flex-start!important}.align-content-xl-end{-ms-flex-line-pack:end!important;align-content:flex-end!important}.align-content-xl-center{-ms-flex-line-pack:center!important;align-content:center!important}.align-content-xl-between{-ms-flex-line-pack:justify!important;align-content:space-between!important}.align-content-xl-around{-ms-flex-line-pack:distribute!important;align-content:space-around!important}.align-content-xl-stretch{-ms-flex-line-pack:stretch!important;align-content:stretch!important}.align-self-xl-auto{-ms-flex-item-align:auto!important;align-self:auto!important}.align-self-xl-start{-ms-flex-item-align:start!important;align-self:flex-start!important}.align-self-xl-end{-ms-flex-item-align:end!important;align-self:flex-end!important}.align-self-xl-center{-ms-flex-item-align:center!important;align-self:center!important}.align-self-xl-baseline{-ms-flex-item-align:baseline!important;align-self:baseline!important}.align-self-xl-stretch{-ms-flex-item-align:stretch!important;align-self:stretch!important}}.float-left{float:left!important}.float-right{float:right!important}.float-none{float:none!important}@media (min-width:576px){.float-sm-left{float:left!important}.float-sm-right{float:right!important}.float-sm-none{float:none!important}}@media (min-width:768px){.float-md-left{float:left!important}.float-md-right{float:right!important}.float-md-none{float:none!important}}@media (min-width:992px){.float-lg-left{float:left!important}.float-lg-right{float:right!important}.float-lg-none{float:none!important}}@media (min-width:1200px){.float-xl-left{float:left!important}.float-xl-right{float:right!important}.float-xl-none{float:none!important}}.position-static{position:static!important}.position-relative{position:relative!important}.position-absolute{position:absolute!important}.position-fixed{position:fixed!important}.position-sticky{position:-webkit-sticky!important;position:sticky!important}.fixed-top{position:fixed;top:0;right:0;left:0;z-index:1030}.fixed-bottom{position:fixed;right:0;bottom:0;left:0;z-index:1030}@supports ((position:-webkit-sticky) or (position:sticky)){.sticky-top{position:-webkit-sticky;position:sticky;top:0;z-index:1020}}.sr-only{position:absolute;width:1px;height:1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;-webkit-clip-path:inset(50%);clip-path:inset(50%);border:0}.sr-only-focusable:active,.sr-only-focusable:focus{position:static;width:auto;height:auto;overflow:visible;clip:auto;white-space:normal;-webkit-clip-path:none;clip-path:none}.w-25{width:25%!important}.w-50{width:50%!important}.w-75{width:75%!important}.w-100{width:100%!important}.h-25{height:25%!important}.h-50{height:50%!important}.h-75{height:75%!important}.h-100{height:100%!important}.mw-100{max-width:100%!important}.mh-100{max-height:100%!important}.m-0{margin:0!important}.mt-0,.my-0{margin-top:0!important}.mr-0,.mx-0{margin-right:0!important}.mb-0,.my-0{margin-bottom:0!important}.ml-0,.mx-0{margin-left:0!important}.m-1{margin:.25rem!important}.mt-1,.my-1{margin-top:.25rem!important}.mr-1,.mx-1{margin-right:.25rem!important}.mb-1,.my-1{margin-bottom:.25rem!important}.ml-1,.mx-1{margin-left:.25rem!important}.m-2{margin:.5rem!important}.mt-2,.my-2{margin-top:.5rem!important}.mr-2,.mx-2{margin-right:.5rem!important}.mb-2,.my-2{margin-bottom:.5rem!important}.ml-2,.mx-2{margin-left:.5rem!important}.m-3{margin:1rem!important}.mt-3,.my-3{margin-top:1rem!important}.mr-3,.mx-3{margin-right:1rem!important}.mb-3,.my-3{margin-bottom:1rem!important}.ml-3,.mx-3{margin-left:1rem!important}.m-4{margin:1.5rem!important}.mt-4,.my-4{margin-top:1.5rem!important}.mr-4,.mx-4{margin-right:1.5rem!important}.mb-4,.my-4{margin-bottom:1.5rem!important}.ml-4,.mx-4{margin-left:1.5rem!important}.m-5{margin:3rem!important}.mt-5,.my-5{margin-top:3rem!important}.mr-5,.mx-5{margin-right:3rem!important}.mb-5,.my-5{margin-bottom:3rem!important}.ml-5,.mx-5{margin-left:3rem!important}.p-0{padding:0!important}.pt-0,.py-0{padding-top:0!important}.pr-0,.px-0{padding-right:0!important}.pb-0,.py-0{padding-bottom:0!important}.pl-0,.px-0{padding-left:0!important}.p-1{padding:.25rem!important}.pt-1,.py-1{padding-top:.25rem!important}.pr-1,.px-1{padding-right:.25rem!important}.pb-1,.py-1{padding-bottom:.25rem!important}.pl-1,.px-1{padding-left:.25rem!important}.p-2{padding:.5rem!important}.pt-2,.py-2{padding-top:.5rem!important}.pr-2,.px-2{padding-right:.5rem!important}.pb-2,.py-2{padding-bottom:.5rem!important}.pl-2,.px-2{padding-left:.5rem!important}.p-3{padding:1rem!important}.pt-3,.py-3{padding-top:1rem!important}.pr-3,.px-3{padding-right:1rem!important}.pb-3,.py-3{padding-bottom:1rem!important}.pl-3,.px-3{padding-left:1rem!important}.p-4{padding:1.5rem!important}.pt-4,.py-4{padding-top:1.5rem!important}.pr-4,.px-4{padding-right:1.5rem!important}.pb-4,.py-4{padding-bottom:1.5rem!important}.pl-4,.px-4{padding-left:1.5rem!important}.p-5{padding:3rem!important}.pt-5,.py-5{padding-top:3rem!important}.pr-5,.px-5{padding-right:3rem!important}.pb-5,.py-5{padding-bottom:3rem!important}.pl-5,.px-5{padding-left:3rem!important}.m-auto{margin:auto!important}.mt-auto,.my-auto{margin-top:auto!important}.mr-auto,.mx-auto{margin-right:auto!important}.mb-auto,.my-auto{margin-bottom:auto!important}.ml-auto,.mx-auto{margin-left:auto!important}@media (min-width:576px){.m-sm-0{margin:0!important}.mt-sm-0,.my-sm-0{margin-top:0!important}.mr-sm-0,.mx-sm-0{margin-right:0!important}.mb-sm-0,.my-sm-0{margin-bottom:0!important}.ml-sm-0,.mx-sm-0{margin-left:0!important}.m-sm-1{margin:.25rem!important}.mt-sm-1,.my-sm-1{margin-top:.25rem!important}.mr-sm-1,.mx-sm-1{margin-right:.25rem!important}.mb-sm-1,.my-sm-1{margin-bottom:.25rem!important}.ml-sm-1,.mx-sm-1{margin-left:.25rem!important}.m-sm-2{margin:.5rem!important}.mt-sm-2,.my-sm-2{margin-top:.5rem!important}.mr-sm-2,.mx-sm-2{margin-right:.5rem!important}.mb-sm-2,.my-sm-2{margin-bottom:.5rem!important}.ml-sm-2,.mx-sm-2{margin-left:.5rem!important}.m-sm-3{margin:1rem!important}.mt-sm-3,.my-sm-3{margin-top:1rem!important}.mr-sm-3,.mx-sm-3{margin-right:1rem!important}.mb-sm-3,.my-sm-3{margin-bottom:1rem!important}.ml-sm-3,.mx-sm-3{margin-left:1rem!important}.m-sm-4{margin:1.5rem!important}.mt-sm-4,.my-sm-4{margin-top:1.5rem!important}.mr-sm-4,.mx-sm-4{margin-right:1.5rem!important}.mb-sm-4,.my-sm-4{margin-bottom:1.5rem!important}.ml-sm-4,.mx-sm-4{margin-left:1.5rem!important}.m-sm-5{margin:3rem!important}.mt-sm-5,.my-sm-5{margin-top:3rem!important}.mr-sm-5,.mx-sm-5{margin-right:3rem!important}.mb-sm-5,.my-sm-5{margin-bottom:3rem!important}.ml-sm-5,.mx-sm-5{margin-left:3rem!important}.p-sm-0{padding:0!important}.pt-sm-0,.py-sm-0{padding-top:0!important}.pr-sm-0,.px-sm-0{padding-right:0!important}.pb-sm-0,.py-sm-0{padding-bottom:0!important}.pl-sm-0,.px-sm-0{padding-left:0!important}.p-sm-1{padding:.25rem!important}.pt-sm-1,.py-sm-1{padding-top:.25rem!important}.pr-sm-1,.px-sm-1{padding-right:.25rem!important}.pb-sm-1,.py-sm-1{padding-bottom:.25rem!important}.pl-sm-1,.px-sm-1{padding-left:.25rem!important}.p-sm-2{padding:.5rem!important}.pt-sm-2,.py-sm-2{padding-top:.5rem!important}.pr-sm-2,.px-sm-2{padding-right:.5rem!important}.pb-sm-2,.py-sm-2{padding-bottom:.5rem!important}.pl-sm-2,.px-sm-2{padding-left:.5rem!important}.p-sm-3{padding:1rem!important}.pt-sm-3,.py-sm-3{padding-top:1rem!important}.pr-sm-3,.px-sm-3{padding-right:1rem!important}.pb-sm-3,.py-sm-3{padding-bottom:1rem!important}.pl-sm-3,.px-sm-3{padding-left:1rem!important}.p-sm-4{padding:1.5rem!important}.pt-sm-4,.py-sm-4{padding-top:1.5rem!important}.pr-sm-4,.px-sm-4{padding-right:1.5rem!important}.pb-sm-4,.py-sm-4{padding-bottom:1.5rem!important}.pl-sm-4,.px-sm-4{padding-left:1.5rem!important}.p-sm-5{padding:3rem!important}.pt-sm-5,.py-sm-5{padding-top:3rem!important}.pr-sm-5,.px-sm-5{padding-right:3rem!important}.pb-sm-5,.py-sm-5{padding-bottom:3rem!important}.pl-sm-5,.px-sm-5{padding-left:3rem!important}.m-sm-auto{margin:auto!important}.mt-sm-auto,.my-sm-auto{margin-top:auto!important}.mr-sm-auto,.mx-sm-auto{margin-right:auto!important}.mb-sm-auto,.my-sm-auto{margin-bottom:auto!important}.ml-sm-auto,.mx-sm-auto{margin-left:auto!important}}@media (min-width:768px){.m-md-0{margin:0!important}.mt-md-0,.my-md-0{margin-top:0!important}.mr-md-0,.mx-md-0{margin-right:0!important}.mb-md-0,.my-md-0{margin-bottom:0!important}.ml-md-0,.mx-md-0{margin-left:0!important}.m-md-1{margin:.25rem!important}.mt-md-1,.my-md-1{margin-top:.25rem!important}.mr-md-1,.mx-md-1{margin-right:.25rem!important}.mb-md-1,.my-md-1{margin-bottom:.25rem!important}.ml-md-1,.mx-md-1{margin-left:.25rem!important}.m-md-2{margin:.5rem!important}.mt-md-2,.my-md-2{margin-top:.5rem!important}.mr-md-2,.mx-md-2{margin-right:.5rem!important}.mb-md-2,.my-md-2{margin-bottom:.5rem!important}.ml-md-2,.mx-md-2{margin-left:.5rem!important}.m-md-3{margin:1rem!important}.mt-md-3,.my-md-3{margin-top:1rem!important}.mr-md-3,.mx-md-3{margin-right:1rem!important}.mb-md-3,.my-md-3{margin-bottom:1rem!important}.ml-md-3,.mx-md-3{margin-left:1rem!important}.m-md-4{margin:1.5rem!important}.mt-md-4,.my-md-4{margin-top:1.5rem!important}.mr-md-4,.mx-md-4{margin-right:1.5rem!important}.mb-md-4,.my-md-4{margin-bottom:1.5rem!important}.ml-md-4,.mx-md-4{margin-left:1.5rem!important}.m-md-5{margin:3rem!important}.mt-md-5,.my-md-5{margin-top:3rem!important}.mr-md-5,.mx-md-5{margin-right:3rem!important}.mb-md-5,.my-md-5{margin-bottom:3rem!important}.ml-md-5,.mx-md-5{margin-left:3rem!important}.p-md-0{padding:0!important}.pt-md-0,.py-md-0{padding-top:0!important}.pr-md-0,.px-md-0{padding-right:0!important}.pb-md-0,.py-md-0{padding-bottom:0!important}.pl-md-0,.px-md-0{padding-left:0!important}.p-md-1{padding:.25rem!important}.pt-md-1,.py-md-1{padding-top:.25rem!important}.pr-md-1,.px-md-1{padding-right:.25rem!important}.pb-md-1,.py-md-1{padding-bottom:.25rem!important}.pl-md-1,.px-md-1{padding-left:.25rem!important}.p-md-2{padding:.5rem!important}.pt-md-2,.py-md-2{padding-top:.5rem!important}.pr-md-2,.px-md-2{padding-right:.5rem!important}.pb-md-2,.py-md-2{padding-bottom:.5rem!important}.pl-md-2,.px-md-2{padding-left:.5rem!important}.p-md-3{padding:1rem!important}.pt-md-3,.py-md-3{padding-top:1rem!important}.pr-md-3,.px-md-3{padding-right:1rem!important}.pb-md-3,.py-md-3{padding-bottom:1rem!important}.pl-md-3,.px-md-3{padding-left:1rem!important}.p-md-4{padding:1.5rem!important}.pt-md-4,.py-md-4{padding-top:1.5rem!important}.pr-md-4,.px-md-4{padding-right:1.5rem!important}.pb-md-4,.py-md-4{padding-bottom:1.5rem!important}.pl-md-4,.px-md-4{padding-left:1.5rem!important}.p-md-5{padding:3rem!important}.pt-md-5,.py-md-5{padding-top:3rem!important}.pr-md-5,.px-md-5{padding-right:3rem!important}.pb-md-5,.py-md-5{padding-bottom:3rem!important}.pl-md-5,.px-md-5{padding-left:3rem!important}.m-md-auto{margin:auto!important}.mt-md-auto,.my-md-auto{margin-top:auto!important}.mr-md-auto,.mx-md-auto{margin-right:auto!important}.mb-md-auto,.my-md-auto{margin-bottom:auto!important}.ml-md-auto,.mx-md-auto{margin-left:auto!important}}@media (min-width:992px){.m-lg-0{margin:0!important}.mt-lg-0,.my-lg-0{margin-top:0!important}.mr-lg-0,.mx-lg-0{margin-right:0!important}.mb-lg-0,.my-lg-0{margin-bottom:0!important}.ml-lg-0,.mx-lg-0{margin-left:0!important}.m-lg-1{margin:.25rem!important}.mt-lg-1,.my-lg-1{margin-top:.25rem!important}.mr-lg-1,.mx-lg-1{margin-right:.25rem!important}.mb-lg-1,.my-lg-1{margin-bottom:.25rem!important}.ml-lg-1,.mx-lg-1{margin-left:.25rem!important}.m-lg-2{margin:.5rem!important}.mt-lg-2,.my-lg-2{margin-top:.5rem!important}.mr-lg-2,.mx-lg-2{margin-right:.5rem!important}.mb-lg-2,.my-lg-2{margin-bottom:.5rem!important}.ml-lg-2,.mx-lg-2{margin-left:.5rem!important}.m-lg-3{margin:1rem!important}.mt-lg-3,.my-lg-3{margin-top:1rem!important}.mr-lg-3,.mx-lg-3{margin-right:1rem!important}.mb-lg-3,.my-lg-3{margin-bottom:1rem!important}.ml-lg-3,.mx-lg-3{margin-left:1rem!important}.m-lg-4{margin:1.5rem!important}.mt-lg-4,.my-lg-4{margin-top:1.5rem!important}.mr-lg-4,.mx-lg-4{margin-right:1.5rem!important}.mb-lg-4,.my-lg-4{margin-bottom:1.5rem!important}.ml-lg-4,.mx-lg-4{margin-left:1.5rem!important}.m-lg-5{margin:3rem!important}.mt-lg-5,.my-lg-5{margin-top:3rem!important}.mr-lg-5,.mx-lg-5{margin-right:3rem!important}.mb-lg-5,.my-lg-5{margin-bottom:3rem!important}.ml-lg-5,.mx-lg-5{margin-left:3rem!important}.p-lg-0{padding:0!important}.pt-lg-0,.py-lg-0{padding-top:0!important}.pr-lg-0,.px-lg-0{padding-right:0!important}.pb-lg-0,.py-lg-0{padding-bottom:0!important}.pl-lg-0,.px-lg-0{padding-left:0!important}.p-lg-1{padding:.25rem!important}.pt-lg-1,.py-lg-1{padding-top:.25rem!important}.pr-lg-1,.px-lg-1{padding-right:.25rem!important}.pb-lg-1,.py-lg-1{padding-bottom:.25rem!important}.pl-lg-1,.px-lg-1{padding-left:.25rem!important}.p-lg-2{padding:.5rem!important}.pt-lg-2,.py-lg-2{padding-top:.5rem!important}.pr-lg-2,.px-lg-2{padding-right:.5rem!important}.pb-lg-2,.py-lg-2{padding-bottom:.5rem!important}.pl-lg-2,.px-lg-2{padding-left:.5rem!important}.p-lg-3{padding:1rem!important}.pt-lg-3,.py-lg-3{padding-top:1rem!important}.pr-lg-3,.px-lg-3{padding-right:1rem!important}.pb-lg-3,.py-lg-3{padding-bottom:1rem!important}.pl-lg-3,.px-lg-3{padding-left:1rem!important}.p-lg-4{padding:1.5rem!important}.pt-lg-4,.py-lg-4{padding-top:1.5rem!important}.pr-lg-4,.px-lg-4{padding-right:1.5rem!important}.pb-lg-4,.py-lg-4{padding-bottom:1.5rem!important}.pl-lg-4,.px-lg-4{padding-left:1.5rem!important}.p-lg-5{padding:3rem!important}.pt-lg-5,.py-lg-5{padding-top:3rem!important}.pr-lg-5,.px-lg-5{padding-right:3rem!important}.pb-lg-5,.py-lg-5{padding-bottom:3rem!important}.pl-lg-5,.px-lg-5{padding-left:3rem!important}.m-lg-auto{margin:auto!important}.mt-lg-auto,.my-lg-auto{margin-top:auto!important}.mr-lg-auto,.mx-lg-auto{margin-right:auto!important}.mb-lg-auto,.my-lg-auto{margin-bottom:auto!important}.ml-lg-auto,.mx-lg-auto{margin-left:auto!important}}@media (min-width:1200px){.m-xl-0{margin:0!important}.mt-xl-0,.my-xl-0{margin-top:0!important}.mr-xl-0,.mx-xl-0{margin-right:0!important}.mb-xl-0,.my-xl-0{margin-bottom:0!important}.ml-xl-0,.mx-xl-0{margin-left:0!important}.m-xl-1{margin:.25rem!important}.mt-xl-1,.my-xl-1{margin-top:.25rem!important}.mr-xl-1,.mx-xl-1{margin-right:.25rem!important}.mb-xl-1,.my-xl-1{margin-bottom:.25rem!important}.ml-xl-1,.mx-xl-1{margin-left:.25rem!important}.m-xl-2{margin:.5rem!important}.mt-xl-2,.my-xl-2{margin-top:.5rem!important}.mr-xl-2,.mx-xl-2{margin-right:.5rem!important}.mb-xl-2,.my-xl-2{margin-bottom:.5rem!important}.ml-xl-2,.mx-xl-2{margin-left:.5rem!important}.m-xl-3{margin:1rem!important}.mt-xl-3,.my-xl-3{margin-top:1rem!important}.mr-xl-3,.mx-xl-3{margin-right:1rem!important}.mb-xl-3,.my-xl-3{margin-bottom:1rem!important}.ml-xl-3,.mx-xl-3{margin-left:1rem!important}.m-xl-4{margin:1.5rem!important}.mt-xl-4,.my-xl-4{margin-top:1.5rem!important}.mr-xl-4,.mx-xl-4{margin-right:1.5rem!important}.mb-xl-4,.my-xl-4{margin-bottom:1.5rem!important}.ml-xl-4,.mx-xl-4{margin-left:1.5rem!important}.m-xl-5{margin:3rem!important}.mt-xl-5,.my-xl-5{margin-top:3rem!important}.mr-xl-5,.mx-xl-5{margin-right:3rem!important}.mb-xl-5,.my-xl-5{margin-bottom:3rem!important}.ml-xl-5,.mx-xl-5{margin-left:3rem!important}.p-xl-0{padding:0!important}.pt-xl-0,.py-xl-0{padding-top:0!important}.pr-xl-0,.px-xl-0{padding-right:0!important}.pb-xl-0,.py-xl-0{padding-bottom:0!important}.pl-xl-0,.px-xl-0{padding-left:0!important}.p-xl-1{padding:.25rem!important}.pt-xl-1,.py-xl-1{padding-top:.25rem!important}.pr-xl-1,.px-xl-1{padding-right:.25rem!important}.pb-xl-1,.py-xl-1{padding-bottom:.25rem!important}.pl-xl-1,.px-xl-1{padding-left:.25rem!important}.p-xl-2{padding:.5rem!important}.pt-xl-2,.py-xl-2{padding-top:.5rem!important}.pr-xl-2,.px-xl-2{padding-right:.5rem!important}.pb-xl-2,.py-xl-2{padding-bottom:.5rem!important}.pl-xl-2,.px-xl-2{padding-left:.5rem!important}.p-xl-3{padding:1rem!important}.pt-xl-3,.py-xl-3{padding-top:1rem!important}.pr-xl-3,.px-xl-3{padding-right:1rem!important}.pb-xl-3,.py-xl-3{padding-bottom:1rem!important}.pl-xl-3,.px-xl-3{padding-left:1rem!important}.p-xl-4{padding:1.5rem!important}.pt-xl-4,.py-xl-4{padding-top:1.5rem!important}.pr-xl-4,.px-xl-4{padding-right:1.5rem!important}.pb-xl-4,.py-xl-4{padding-bottom:1.5rem!important}.pl-xl-4,.px-xl-4{padding-left:1.5rem!important}.p-xl-5{padding:3rem!important}.pt-xl-5,.py-xl-5{padding-top:3rem!important}.pr-xl-5,.px-xl-5{padding-right:3rem!important}.pb-xl-5,.py-xl-5{padding-bottom:3rem!important}.pl-xl-5,.px-xl-5{padding-left:3rem!important}.m-xl-auto{margin:auto!important}.mt-xl-auto,.my-xl-auto{margin-top:auto!important}.mr-xl-auto,.mx-xl-auto{margin-right:auto!important}.mb-xl-auto,.my-xl-auto{margin-bottom:auto!important}.ml-xl-auto,.mx-xl-auto{margin-left:auto!important}}.text-justify{text-align:justify!important}.text-nowrap{white-space:nowrap!important}.text-truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.text-left{text-align:left!important}.text-right{text-align:right!important}.text-center{text-align:center!important}@media (min-width:576px){.text-sm-left{text-align:left!important}.text-sm-right{text-align:right!important}.text-sm-center{text-align:center!important}}@media (min-width:768px){.text-md-left{text-align:left!important}.text-md-right{text-align:right!important}.text-md-center{text-align:center!important}}@media (min-width:992px){.text-lg-left{text-align:left!important}.text-lg-right{text-align:right!important}.text-lg-center{text-align:center!important}}@media (min-width:1200px){.text-xl-left{text-align:left!important}.text-xl-right{text-align:right!important}.text-xl-center{text-align:center!important}}.text-lowercase{text-transform:lowercase!important}.text-uppercase{text-transform:uppercase!important}.text-capitalize{text-transform:capitalize!important}.font-weight-light{font-weight:300!important}.font-weight-normal{font-weight:400!important}.font-weight-bold{font-weight:700!important}.font-italic{font-style:italic!important}.text-white{color:#fff!important}.text-primary{color:#007bff!important}a.text-primary:focus,a.text-primary:hover{color:#0062cc!important}.text-secondary{color:#6c757d!important}a.text-secondary:focus,a.text-secondary:hover{color:#545b62!important}.text-success{color:#28a745!important}a.text-success:focus,a.text-success:hover{color:#1e7e34!important}.text-info{color:#17a2b8!important}a.text-info:focus,a.text-info:hover{color:#117a8b!important}.text-warning{color:#ffc107!important}a.text-warning:focus,a.text-warning:hover{color:#d39e00!important}.text-danger{color:#dc3545!important}a.text-danger:focus,a.text-danger:hover{color:#bd2130!important}.text-light{color:#f8f9fa!important}a.text-light:focus,a.text-light:hover{color:#dae0e5!important}.text-dark{color:#343a40!important}a.text-dark:focus,a.text-dark:hover{color:#1d2124!important}.text-muted{color:#6c757d!important}.text-hide{font:0/0 a;color:transparent;text-shadow:none;background-color:transparent;border:0}.visible{visibility:visible!important}.invisible{visibility:hidden!important}@media print{*,::after,::before{text-shadow:none!important;box-shadow:none!important}a:not(.btn){text-decoration:underline}abbr[title]::after{content:" (" attr(title) ")"}pre{white-space:pre-wrap!important}blockquote,pre{border:1px solid #999;page-break-inside:avoid}thead{display:table-header-group}img,tr{page-break-inside:avoid}h2,h3,p{orphans:3;widows:3}h2,h3{page-break-after:avoid}@page{size:a3}body{min-width:992px!important}.container{min-width:992px!important}.navbar{display:none}.badge{border:1px solid #000}.table{border-collapse:collapse!important}.table td,.table th{background-color:#fff!important}.table-bordered td,.table-bordered th{border:1px solid #ddd!important}}
+/*# sourceMappingURL=bootstrap.min.css.map */
\ No newline at end of file
diff --git a/apps/nps/0.29.21/web/static/css/datatables.css b/apps/nps/0.29.21/web/static/css/datatables.css
new file mode 100644
index 000000000..eb50e40d5
--- /dev/null
+++ b/apps/nps/0.29.21/web/static/css/datatables.css
@@ -0,0 +1,14921 @@
+/*
+ * This combined file was created by the DataTables downloader builder:
+ * https://datatables.net/download
+ *
+ * To rebuild or modify this file with the latest versions of the included
+ * software please visit:
+ * https://datatables.net/download/#bs5-5.3.0/jq-3.7.0/jszip-3.10.1/pdfmake-0.2.7/dt-2.1.8/af-2.7.0/b-3.1.2/b-colvis-3.1.2/b-html5-3.1.2/b-print-3.1.2/cr-2.0.4/date-1.5.4/fc-5.0.4/fh-4.0.1/kt-2.12.1/r-3.0.3/rg-1.5.0/rr-1.5.0/sc-2.4.3/sb-1.8.1/sp-2.3.3/sl-2.1.0/sr-1.4.1
+ *
+ * Included libraries:
+ * Bootstrap 5 5.3.0, jQuery 3 3.7.0, JSZip 3.10.1, pdfmake 0.2.7, DataTables 2.1.8, AutoFill 2.7.0, Buttons 3.1.2, Column visibility 3.1.2, HTML5 export 3.1.2, Print view 3.1.2, ColReorder 2.0.4, DateTime 1.5.4, FixedColumns 5.0.4, FixedHeader 4.0.1, KeyTable 2.12.1, Responsive 3.0.3, RowGroup 1.5.0, RowReorder 1.5.0, Scroller 2.4.3, SearchBuilder 1.8.1, SearchPanes 2.3.3, Select 2.1.0, StateRestore 1.4.1
+ */
+
+@charset "UTF-8";
+/*!
+ * Bootstrap v5.3.0 (https://getbootstrap.com/)
+ * Copyright 2011-2023 The Bootstrap Authors
+ * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
+ */
+:root,
+[data-bs-theme=light] {
+ --bs-blue: #0d6efd;
+ --bs-indigo: #6610f2;
+ --bs-purple: #6f42c1;
+ --bs-pink: #d63384;
+ --bs-red: #dc3545;
+ --bs-orange: #fd7e14;
+ --bs-yellow: #ffc107;
+ --bs-green: #198754;
+ --bs-teal: #20c997;
+ --bs-cyan: #0dcaf0;
+ --bs-black: #000;
+ --bs-white: #fff;
+ --bs-gray: #6c757d;
+ --bs-gray-dark: #343a40;
+ --bs-gray-100: #f8f9fa;
+ --bs-gray-200: #e9ecef;
+ --bs-gray-300: #dee2e6;
+ --bs-gray-400: #ced4da;
+ --bs-gray-500: #adb5bd;
+ --bs-gray-600: #6c757d;
+ --bs-gray-700: #495057;
+ --bs-gray-800: #343a40;
+ --bs-gray-900: #212529;
+ --bs-primary: #0d6efd;
+ --bs-secondary: #6c757d;
+ --bs-success: #198754;
+ --bs-info: #0dcaf0;
+ --bs-warning: #ffc107;
+ --bs-danger: #dc3545;
+ --bs-light: #f8f9fa;
+ --bs-dark: #212529;
+ --bs-primary-rgb: 13, 110, 253;
+ --bs-secondary-rgb: 108, 117, 125;
+ --bs-success-rgb: 25, 135, 84;
+ --bs-info-rgb: 13, 202, 240;
+ --bs-warning-rgb: 255, 193, 7;
+ --bs-danger-rgb: 220, 53, 69;
+ --bs-light-rgb: 248, 249, 250;
+ --bs-dark-rgb: 33, 37, 41;
+ --bs-primary-text-emphasis: #052c65;
+ --bs-secondary-text-emphasis: #2b2f32;
+ --bs-success-text-emphasis: #0a3622;
+ --bs-info-text-emphasis: #055160;
+ --bs-warning-text-emphasis: #664d03;
+ --bs-danger-text-emphasis: #58151c;
+ --bs-light-text-emphasis: #495057;
+ --bs-dark-text-emphasis: #495057;
+ --bs-primary-bg-subtle: #cfe2ff;
+ --bs-secondary-bg-subtle: #e2e3e5;
+ --bs-success-bg-subtle: #d1e7dd;
+ --bs-info-bg-subtle: #cff4fc;
+ --bs-warning-bg-subtle: #fff3cd;
+ --bs-danger-bg-subtle: #f8d7da;
+ --bs-light-bg-subtle: #fcfcfd;
+ --bs-dark-bg-subtle: #ced4da;
+ --bs-primary-border-subtle: #9ec5fe;
+ --bs-secondary-border-subtle: #c4c8cb;
+ --bs-success-border-subtle: #a3cfbb;
+ --bs-info-border-subtle: #9eeaf9;
+ --bs-warning-border-subtle: #ffe69c;
+ --bs-danger-border-subtle: #f1aeb5;
+ --bs-light-border-subtle: #e9ecef;
+ --bs-dark-border-subtle: #adb5bd;
+ --bs-white-rgb: 255, 255, 255;
+ --bs-black-rgb: 0, 0, 0;
+ --bs-font-sans-serif: system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", "Noto Sans", "Liberation Sans", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";
+ --bs-font-monospace: SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;
+ --bs-gradient: linear-gradient(180deg, rgba(255, 255, 255, 0.15), rgba(255, 255, 255, 0));
+ --bs-body-font-family: var(--bs-font-sans-serif);
+ --bs-body-font-size: 1rem;
+ --bs-body-font-weight: 400;
+ --bs-body-line-height: 1.5;
+ --bs-body-color: #212529;
+ --bs-body-color-rgb: 33, 37, 41;
+ --bs-body-bg: #fff;
+ --bs-body-bg-rgb: 255, 255, 255;
+ --bs-emphasis-color: #000;
+ --bs-emphasis-color-rgb: 0, 0, 0;
+ --bs-secondary-color: rgba(33, 37, 41, 0.75);
+ --bs-secondary-color-rgb: 33, 37, 41;
+ --bs-secondary-bg: #e9ecef;
+ --bs-secondary-bg-rgb: 233, 236, 239;
+ --bs-tertiary-color: rgba(33, 37, 41, 0.5);
+ --bs-tertiary-color-rgb: 33, 37, 41;
+ --bs-tertiary-bg: #f8f9fa;
+ --bs-tertiary-bg-rgb: 248, 249, 250;
+ --bs-heading-color: inherit;
+ --bs-link-color: #0d6efd;
+ --bs-link-color-rgb: 13, 110, 253;
+ --bs-link-decoration: underline;
+ --bs-link-hover-color: #0a58ca;
+ --bs-link-hover-color-rgb: 10, 88, 202;
+ --bs-code-color: #d63384;
+ --bs-highlight-bg: #fff3cd;
+ --bs-border-width: 1px;
+ --bs-border-style: solid;
+ --bs-border-color: #dee2e6;
+ --bs-border-color-translucent: rgba(0, 0, 0, 0.175);
+ --bs-border-radius: 0.375rem;
+ --bs-border-radius-sm: 0.25rem;
+ --bs-border-radius-lg: 0.5rem;
+ --bs-border-radius-xl: 1rem;
+ --bs-border-radius-xxl: 2rem;
+ --bs-border-radius-2xl: var(--bs-border-radius-xxl);
+ --bs-border-radius-pill: 50rem;
+ --bs-box-shadow: 0 0.5rem 1rem rgba(0, 0, 0, 0.15);
+ --bs-box-shadow-sm: 0 0.125rem 0.25rem rgba(0, 0, 0, 0.075);
+ --bs-box-shadow-lg: 0 1rem 3rem rgba(0, 0, 0, 0.175);
+ --bs-box-shadow-inset: inset 0 1px 2px rgba(0, 0, 0, 0.075);
+ --bs-focus-ring-width: 0.25rem;
+ --bs-focus-ring-opacity: 0.25;
+ --bs-focus-ring-color: rgba(13, 110, 253, 0.25);
+ --bs-form-valid-color: #198754;
+ --bs-form-valid-border-color: #198754;
+ --bs-form-invalid-color: #dc3545;
+ --bs-form-invalid-border-color: #dc3545;
+}
+
+[data-bs-theme=dark] {
+ color-scheme: dark;
+ --bs-body-color: #adb5bd;
+ --bs-body-color-rgb: 173, 181, 189;
+ --bs-body-bg: #212529;
+ --bs-body-bg-rgb: 33, 37, 41;
+ --bs-emphasis-color: #fff;
+ --bs-emphasis-color-rgb: 255, 255, 255;
+ --bs-secondary-color: rgba(173, 181, 189, 0.75);
+ --bs-secondary-color-rgb: 173, 181, 189;
+ --bs-secondary-bg: #343a40;
+ --bs-secondary-bg-rgb: 52, 58, 64;
+ --bs-tertiary-color: rgba(173, 181, 189, 0.5);
+ --bs-tertiary-color-rgb: 173, 181, 189;
+ --bs-tertiary-bg: #2b3035;
+ --bs-tertiary-bg-rgb: 43, 48, 53;
+ --bs-primary-text-emphasis: #6ea8fe;
+ --bs-secondary-text-emphasis: #a7acb1;
+ --bs-success-text-emphasis: #75b798;
+ --bs-info-text-emphasis: #6edff6;
+ --bs-warning-text-emphasis: #ffda6a;
+ --bs-danger-text-emphasis: #ea868f;
+ --bs-light-text-emphasis: #f8f9fa;
+ --bs-dark-text-emphasis: #dee2e6;
+ --bs-primary-bg-subtle: #031633;
+ --bs-secondary-bg-subtle: #161719;
+ --bs-success-bg-subtle: #051b11;
+ --bs-info-bg-subtle: #032830;
+ --bs-warning-bg-subtle: #332701;
+ --bs-danger-bg-subtle: #2c0b0e;
+ --bs-light-bg-subtle: #343a40;
+ --bs-dark-bg-subtle: #1a1d20;
+ --bs-primary-border-subtle: #084298;
+ --bs-secondary-border-subtle: #41464b;
+ --bs-success-border-subtle: #0f5132;
+ --bs-info-border-subtle: #087990;
+ --bs-warning-border-subtle: #997404;
+ --bs-danger-border-subtle: #842029;
+ --bs-light-border-subtle: #495057;
+ --bs-dark-border-subtle: #343a40;
+ --bs-heading-color: inherit;
+ --bs-link-color: #6ea8fe;
+ --bs-link-hover-color: #8bb9fe;
+ --bs-link-color-rgb: 110, 168, 254;
+ --bs-link-hover-color-rgb: 139, 185, 254;
+ --bs-code-color: #e685b5;
+ --bs-border-color: #495057;
+ --bs-border-color-translucent: rgba(255, 255, 255, 0.15);
+ --bs-form-valid-color: #75b798;
+ --bs-form-valid-border-color: #75b798;
+ --bs-form-invalid-color: #ea868f;
+ --bs-form-invalid-border-color: #ea868f;
+}
+
+*,
+*::before,
+*::after {
+ box-sizing: border-box;
+}
+
+@media (prefers-reduced-motion: no-preference) {
+ :root {
+ scroll-behavior: smooth;
+ }
+}
+
+body {
+ margin: 0;
+ font-family: var(--bs-body-font-family);
+ font-size: var(--bs-body-font-size);
+ font-weight: var(--bs-body-font-weight);
+ line-height: var(--bs-body-line-height);
+ color: var(--bs-body-color);
+ text-align: var(--bs-body-text-align);
+ background-color: var(--bs-body-bg);
+ -webkit-text-size-adjust: 100%;
+ -webkit-tap-highlight-color: rgba(0, 0, 0, 0);
+}
+
+hr {
+ margin: 1rem 0;
+ color: inherit;
+ border: 0;
+ border-top: var(--bs-border-width) solid;
+ opacity: 0.25;
+}
+
+h6, .h6, h5, .h5, h4, .h4, h3, .h3, h2, .h2, h1, .h1 {
+ margin-top: 0;
+ margin-bottom: 0.5rem;
+ font-weight: 500;
+ line-height: 1.2;
+ color: var(--bs-heading-color);
+}
+
+h1, .h1 {
+ font-size: calc(1.375rem + 1.5vw);
+}
+@media (min-width: 1200px) {
+ h1, .h1 {
+ font-size: 2.5rem;
+ }
+}
+
+h2, .h2 {
+ font-size: calc(1.325rem + 0.9vw);
+}
+@media (min-width: 1200px) {
+ h2, .h2 {
+ font-size: 2rem;
+ }
+}
+
+h3, .h3 {
+ font-size: calc(1.3rem + 0.6vw);
+}
+@media (min-width: 1200px) {
+ h3, .h3 {
+ font-size: 1.75rem;
+ }
+}
+
+h4, .h4 {
+ font-size: calc(1.275rem + 0.3vw);
+}
+@media (min-width: 1200px) {
+ h4, .h4 {
+ font-size: 1.5rem;
+ }
+}
+
+h5, .h5 {
+ font-size: 1.25rem;
+}
+
+h6, .h6 {
+ font-size: 1rem;
+}
+
+p {
+ margin-top: 0;
+ margin-bottom: 1rem;
+}
+
+abbr[title] {
+ -webkit-text-decoration: underline dotted;
+ text-decoration: underline dotted;
+ cursor: help;
+ -webkit-text-decoration-skip-ink: none;
+ text-decoration-skip-ink: none;
+}
+
+address {
+ margin-bottom: 1rem;
+ font-style: normal;
+ line-height: inherit;
+}
+
+ol,
+ul {
+ padding-left: 2rem;
+}
+
+ol,
+ul,
+dl {
+ margin-top: 0;
+ margin-bottom: 1rem;
+}
+
+ol ol,
+ul ul,
+ol ul,
+ul ol {
+ margin-bottom: 0;
+}
+
+dt {
+ font-weight: 700;
+}
+
+dd {
+ margin-bottom: 0.5rem;
+ margin-left: 0;
+}
+
+blockquote {
+ margin: 0 0 1rem;
+}
+
+b,
+strong {
+ font-weight: bolder;
+}
+
+small, .small {
+ font-size: 0.875em;
+}
+
+mark, .mark {
+ padding: 0.1875em;
+ background-color: var(--bs-highlight-bg);
+}
+
+sub,
+sup {
+ position: relative;
+ font-size: 0.75em;
+ line-height: 0;
+ vertical-align: baseline;
+}
+
+sub {
+ bottom: -0.25em;
+}
+
+sup {
+ top: -0.5em;
+}
+
+a {
+ color: rgba(var(--bs-link-color-rgb), var(--bs-link-opacity, 1));
+ text-decoration: underline;
+}
+a:hover {
+ --bs-link-color-rgb: var(--bs-link-hover-color-rgb);
+}
+
+a:not([href]):not([class]), a:not([href]):not([class]):hover {
+ color: inherit;
+ text-decoration: none;
+}
+
+pre,
+code,
+kbd,
+samp {
+ font-family: var(--bs-font-monospace);
+ font-size: 1em;
+}
+
+pre {
+ display: block;
+ margin-top: 0;
+ margin-bottom: 1rem;
+ overflow: auto;
+ font-size: 0.875em;
+}
+pre code {
+ font-size: inherit;
+ color: inherit;
+ word-break: normal;
+}
+
+code {
+ font-size: 0.875em;
+ color: var(--bs-code-color);
+ word-wrap: break-word;
+}
+a > code {
+ color: inherit;
+}
+
+kbd {
+ padding: 0.1875rem 0.375rem;
+ font-size: 0.875em;
+ color: var(--bs-body-bg);
+ background-color: var(--bs-body-color);
+ border-radius: 0.25rem;
+}
+kbd kbd {
+ padding: 0;
+ font-size: 1em;
+}
+
+figure {
+ margin: 0 0 1rem;
+}
+
+img,
+svg {
+ vertical-align: middle;
+}
+
+table {
+ caption-side: bottom;
+ border-collapse: collapse;
+}
+
+caption {
+ padding-top: 0.5rem;
+ padding-bottom: 0.5rem;
+ color: var(--bs-secondary-color);
+ text-align: left;
+}
+
+th {
+ text-align: inherit;
+ text-align: -webkit-match-parent;
+}
+
+thead,
+tbody,
+tfoot,
+tr,
+td,
+th {
+ border-color: inherit;
+ border-style: solid;
+ border-width: 0;
+}
+
+label {
+ display: inline-block;
+}
+
+button {
+ border-radius: 0;
+}
+
+button:focus:not(:focus-visible) {
+ outline: 0;
+}
+
+input,
+button,
+select,
+optgroup,
+textarea {
+ margin: 0;
+ font-family: inherit;
+ font-size: inherit;
+ line-height: inherit;
+}
+
+button,
+select {
+ text-transform: none;
+}
+
+[role=button] {
+ cursor: pointer;
+}
+
+select {
+ word-wrap: normal;
+}
+select:disabled {
+ opacity: 1;
+}
+
+[list]:not([type=date]):not([type=datetime-local]):not([type=month]):not([type=week]):not([type=time])::-webkit-calendar-picker-indicator {
+ display: none !important;
+}
+
+button,
+[type=button],
+[type=reset],
+[type=submit] {
+ -webkit-appearance: button;
+}
+button:not(:disabled),
+[type=button]:not(:disabled),
+[type=reset]:not(:disabled),
+[type=submit]:not(:disabled) {
+ cursor: pointer;
+}
+
+::-moz-focus-inner {
+ padding: 0;
+ border-style: none;
+}
+
+textarea {
+ resize: vertical;
+}
+
+fieldset {
+ min-width: 0;
+ padding: 0;
+ margin: 0;
+ border: 0;
+}
+
+legend {
+ float: left;
+ width: 100%;
+ padding: 0;
+ margin-bottom: 0.5rem;
+ font-size: calc(1.275rem + 0.3vw);
+ line-height: inherit;
+}
+@media (min-width: 1200px) {
+ legend {
+ font-size: 1.5rem;
+ }
+}
+legend + * {
+ clear: left;
+}
+
+::-webkit-datetime-edit-fields-wrapper,
+::-webkit-datetime-edit-text,
+::-webkit-datetime-edit-minute,
+::-webkit-datetime-edit-hour-field,
+::-webkit-datetime-edit-day-field,
+::-webkit-datetime-edit-month-field,
+::-webkit-datetime-edit-year-field {
+ padding: 0;
+}
+
+::-webkit-inner-spin-button {
+ height: auto;
+}
+
+[type=search] {
+ outline-offset: -2px;
+ -webkit-appearance: textfield;
+}
+
+/* rtl:raw:
+[type="tel"],
+[type="url"],
+[type="email"],
+[type="number"] {
+ direction: ltr;
+}
+*/
+::-webkit-search-decoration {
+ -webkit-appearance: none;
+}
+
+::-webkit-color-swatch-wrapper {
+ padding: 0;
+}
+
+::-webkit-file-upload-button {
+ font: inherit;
+ -webkit-appearance: button;
+}
+
+::file-selector-button {
+ font: inherit;
+ -webkit-appearance: button;
+}
+
+output {
+ display: inline-block;
+}
+
+iframe {
+ border: 0;
+}
+
+summary {
+ display: list-item;
+ cursor: pointer;
+}
+
+progress {
+ vertical-align: baseline;
+}
+
+[hidden] {
+ display: none !important;
+}
+
+.lead {
+ font-size: 1.25rem;
+ font-weight: 300;
+}
+
+.display-1 {
+ font-size: calc(1.625rem + 4.5vw);
+ font-weight: 300;
+ line-height: 1.2;
+}
+@media (min-width: 1200px) {
+ .display-1 {
+ font-size: 5rem;
+ }
+}
+
+.display-2 {
+ font-size: calc(1.575rem + 3.9vw);
+ font-weight: 300;
+ line-height: 1.2;
+}
+@media (min-width: 1200px) {
+ .display-2 {
+ font-size: 4.5rem;
+ }
+}
+
+.display-3 {
+ font-size: calc(1.525rem + 3.3vw);
+ font-weight: 300;
+ line-height: 1.2;
+}
+@media (min-width: 1200px) {
+ .display-3 {
+ font-size: 4rem;
+ }
+}
+
+.display-4 {
+ font-size: calc(1.475rem + 2.7vw);
+ font-weight: 300;
+ line-height: 1.2;
+}
+@media (min-width: 1200px) {
+ .display-4 {
+ font-size: 3.5rem;
+ }
+}
+
+.display-5 {
+ font-size: calc(1.425rem + 2.1vw);
+ font-weight: 300;
+ line-height: 1.2;
+}
+@media (min-width: 1200px) {
+ .display-5 {
+ font-size: 3rem;
+ }
+}
+
+.display-6 {
+ font-size: calc(1.375rem + 1.5vw);
+ font-weight: 300;
+ line-height: 1.2;
+}
+@media (min-width: 1200px) {
+ .display-6 {
+ font-size: 2.5rem;
+ }
+}
+
+.list-unstyled {
+ padding-left: 0;
+ list-style: none;
+}
+
+.list-inline {
+ padding-left: 0;
+ list-style: none;
+}
+
+.list-inline-item {
+ display: inline-block;
+}
+.list-inline-item:not(:last-child) {
+ margin-right: 0.5rem;
+}
+
+.initialism {
+ font-size: 0.875em;
+ text-transform: uppercase;
+}
+
+.blockquote {
+ margin-bottom: 1rem;
+ font-size: 1.25rem;
+}
+.blockquote > :last-child {
+ margin-bottom: 0;
+}
+
+.blockquote-footer {
+ margin-top: -1rem;
+ margin-bottom: 1rem;
+ font-size: 0.875em;
+ color: #6c757d;
+}
+.blockquote-footer::before {
+ content: "— ";
+}
+
+.img-fluid {
+ max-width: 100%;
+ height: auto;
+}
+
+.img-thumbnail {
+ padding: 0.25rem;
+ background-color: var(--bs-body-bg);
+ border: var(--bs-border-width) solid var(--bs-border-color);
+ border-radius: var(--bs-border-radius);
+ max-width: 100%;
+ height: auto;
+}
+
+.figure {
+ display: inline-block;
+}
+
+.figure-img {
+ margin-bottom: 0.5rem;
+ line-height: 1;
+}
+
+.figure-caption {
+ font-size: 0.875em;
+ color: var(--bs-secondary-color);
+}
+
+.container,
+.container-fluid,
+.container-xxl,
+.container-xl,
+.container-lg,
+.container-md,
+.container-sm {
+ --bs-gutter-x: 1.5rem;
+ --bs-gutter-y: 0;
+ width: 100%;
+ padding-right: calc(var(--bs-gutter-x) * 0.5);
+ padding-left: calc(var(--bs-gutter-x) * 0.5);
+ margin-right: auto;
+ margin-left: auto;
+}
+
+@media (min-width: 576px) {
+ .container-sm, .container {
+ max-width: 540px;
+ }
+}
+@media (min-width: 768px) {
+ .container-md, .container-sm, .container {
+ max-width: 720px;
+ }
+}
+@media (min-width: 992px) {
+ .container-lg, .container-md, .container-sm, .container {
+ max-width: 960px;
+ }
+}
+@media (min-width: 1200px) {
+ .container-xl, .container-lg, .container-md, .container-sm, .container {
+ max-width: 1140px;
+ }
+}
+@media (min-width: 1400px) {
+ .container-xxl, .container-xl, .container-lg, .container-md, .container-sm, .container {
+ max-width: 1320px;
+ }
+}
+:root {
+ --bs-breakpoint-xs: 0;
+ --bs-breakpoint-sm: 576px;
+ --bs-breakpoint-md: 768px;
+ --bs-breakpoint-lg: 992px;
+ --bs-breakpoint-xl: 1200px;
+ --bs-breakpoint-xxl: 1400px;
+}
+
+.row {
+ --bs-gutter-x: 1.5rem;
+ --bs-gutter-y: 0;
+ display: flex;
+ flex-wrap: wrap;
+ margin-top: calc(-1 * var(--bs-gutter-y));
+ margin-right: calc(-0.5 * var(--bs-gutter-x));
+ margin-left: calc(-0.5 * var(--bs-gutter-x));
+}
+.row > * {
+ flex-shrink: 0;
+ width: 100%;
+ max-width: 100%;
+ padding-right: calc(var(--bs-gutter-x) * 0.5);
+ padding-left: calc(var(--bs-gutter-x) * 0.5);
+ margin-top: var(--bs-gutter-y);
+}
+
+.col {
+ flex: 1 0 0%;
+}
+
+.row-cols-auto > * {
+ flex: 0 0 auto;
+ width: auto;
+}
+
+.row-cols-1 > * {
+ flex: 0 0 auto;
+ width: 100%;
+}
+
+.row-cols-2 > * {
+ flex: 0 0 auto;
+ width: 50%;
+}
+
+.row-cols-3 > * {
+ flex: 0 0 auto;
+ width: 33.3333333333%;
+}
+
+.row-cols-4 > * {
+ flex: 0 0 auto;
+ width: 25%;
+}
+
+.row-cols-5 > * {
+ flex: 0 0 auto;
+ width: 20%;
+}
+
+.row-cols-6 > * {
+ flex: 0 0 auto;
+ width: 16.6666666667%;
+}
+
+.col-auto {
+ flex: 0 0 auto;
+ width: auto;
+}
+
+.col-1 {
+ flex: 0 0 auto;
+ width: 8.33333333%;
+}
+
+.col-2 {
+ flex: 0 0 auto;
+ width: 16.66666667%;
+}
+
+.col-3 {
+ flex: 0 0 auto;
+ width: 25%;
+}
+
+.col-4 {
+ flex: 0 0 auto;
+ width: 33.33333333%;
+}
+
+.col-5 {
+ flex: 0 0 auto;
+ width: 41.66666667%;
+}
+
+.col-6 {
+ flex: 0 0 auto;
+ width: 50%;
+}
+
+.col-7 {
+ flex: 0 0 auto;
+ width: 58.33333333%;
+}
+
+.col-8 {
+ flex: 0 0 auto;
+ width: 66.66666667%;
+}
+
+.col-9 {
+ flex: 0 0 auto;
+ width: 75%;
+}
+
+.col-10 {
+ flex: 0 0 auto;
+ width: 83.33333333%;
+}
+
+.col-11 {
+ flex: 0 0 auto;
+ width: 91.66666667%;
+}
+
+.col-12 {
+ flex: 0 0 auto;
+ width: 100%;
+}
+
+.offset-1 {
+ margin-left: 8.33333333%;
+}
+
+.offset-2 {
+ margin-left: 16.66666667%;
+}
+
+.offset-3 {
+ margin-left: 25%;
+}
+
+.offset-4 {
+ margin-left: 33.33333333%;
+}
+
+.offset-5 {
+ margin-left: 41.66666667%;
+}
+
+.offset-6 {
+ margin-left: 50%;
+}
+
+.offset-7 {
+ margin-left: 58.33333333%;
+}
+
+.offset-8 {
+ margin-left: 66.66666667%;
+}
+
+.offset-9 {
+ margin-left: 75%;
+}
+
+.offset-10 {
+ margin-left: 83.33333333%;
+}
+
+.offset-11 {
+ margin-left: 91.66666667%;
+}
+
+.g-0,
+.gx-0 {
+ --bs-gutter-x: 0;
+}
+
+.g-0,
+.gy-0 {
+ --bs-gutter-y: 0;
+}
+
+.g-1,
+.gx-1 {
+ --bs-gutter-x: 0.25rem;
+}
+
+.g-1,
+.gy-1 {
+ --bs-gutter-y: 0.25rem;
+}
+
+.g-2,
+.gx-2 {
+ --bs-gutter-x: 0.5rem;
+}
+
+.g-2,
+.gy-2 {
+ --bs-gutter-y: 0.5rem;
+}
+
+.g-3,
+.gx-3 {
+ --bs-gutter-x: 1rem;
+}
+
+.g-3,
+.gy-3 {
+ --bs-gutter-y: 1rem;
+}
+
+.g-4,
+.gx-4 {
+ --bs-gutter-x: 1.5rem;
+}
+
+.g-4,
+.gy-4 {
+ --bs-gutter-y: 1.5rem;
+}
+
+.g-5,
+.gx-5 {
+ --bs-gutter-x: 3rem;
+}
+
+.g-5,
+.gy-5 {
+ --bs-gutter-y: 3rem;
+}
+
+@media (min-width: 576px) {
+ .col-sm {
+ flex: 1 0 0%;
+ }
+ .row-cols-sm-auto > * {
+ flex: 0 0 auto;
+ width: auto;
+ }
+ .row-cols-sm-1 > * {
+ flex: 0 0 auto;
+ width: 100%;
+ }
+ .row-cols-sm-2 > * {
+ flex: 0 0 auto;
+ width: 50%;
+ }
+ .row-cols-sm-3 > * {
+ flex: 0 0 auto;
+ width: 33.3333333333%;
+ }
+ .row-cols-sm-4 > * {
+ flex: 0 0 auto;
+ width: 25%;
+ }
+ .row-cols-sm-5 > * {
+ flex: 0 0 auto;
+ width: 20%;
+ }
+ .row-cols-sm-6 > * {
+ flex: 0 0 auto;
+ width: 16.6666666667%;
+ }
+ .col-sm-auto {
+ flex: 0 0 auto;
+ width: auto;
+ }
+ .col-sm-1 {
+ flex: 0 0 auto;
+ width: 8.33333333%;
+ }
+ .col-sm-2 {
+ flex: 0 0 auto;
+ width: 16.66666667%;
+ }
+ .col-sm-3 {
+ flex: 0 0 auto;
+ width: 25%;
+ }
+ .col-sm-4 {
+ flex: 0 0 auto;
+ width: 33.33333333%;
+ }
+ .col-sm-5 {
+ flex: 0 0 auto;
+ width: 41.66666667%;
+ }
+ .col-sm-6 {
+ flex: 0 0 auto;
+ width: 50%;
+ }
+ .col-sm-7 {
+ flex: 0 0 auto;
+ width: 58.33333333%;
+ }
+ .col-sm-8 {
+ flex: 0 0 auto;
+ width: 66.66666667%;
+ }
+ .col-sm-9 {
+ flex: 0 0 auto;
+ width: 75%;
+ }
+ .col-sm-10 {
+ flex: 0 0 auto;
+ width: 83.33333333%;
+ }
+ .col-sm-11 {
+ flex: 0 0 auto;
+ width: 91.66666667%;
+ }
+ .col-sm-12 {
+ flex: 0 0 auto;
+ width: 100%;
+ }
+ .offset-sm-0 {
+ margin-left: 0;
+ }
+ .offset-sm-1 {
+ margin-left: 8.33333333%;
+ }
+ .offset-sm-2 {
+ margin-left: 16.66666667%;
+ }
+ .offset-sm-3 {
+ margin-left: 25%;
+ }
+ .offset-sm-4 {
+ margin-left: 33.33333333%;
+ }
+ .offset-sm-5 {
+ margin-left: 41.66666667%;
+ }
+ .offset-sm-6 {
+ margin-left: 50%;
+ }
+ .offset-sm-7 {
+ margin-left: 58.33333333%;
+ }
+ .offset-sm-8 {
+ margin-left: 66.66666667%;
+ }
+ .offset-sm-9 {
+ margin-left: 75%;
+ }
+ .offset-sm-10 {
+ margin-left: 83.33333333%;
+ }
+ .offset-sm-11 {
+ margin-left: 91.66666667%;
+ }
+ .g-sm-0,
+ .gx-sm-0 {
+ --bs-gutter-x: 0;
+ }
+ .g-sm-0,
+ .gy-sm-0 {
+ --bs-gutter-y: 0;
+ }
+ .g-sm-1,
+ .gx-sm-1 {
+ --bs-gutter-x: 0.25rem;
+ }
+ .g-sm-1,
+ .gy-sm-1 {
+ --bs-gutter-y: 0.25rem;
+ }
+ .g-sm-2,
+ .gx-sm-2 {
+ --bs-gutter-x: 0.5rem;
+ }
+ .g-sm-2,
+ .gy-sm-2 {
+ --bs-gutter-y: 0.5rem;
+ }
+ .g-sm-3,
+ .gx-sm-3 {
+ --bs-gutter-x: 1rem;
+ }
+ .g-sm-3,
+ .gy-sm-3 {
+ --bs-gutter-y: 1rem;
+ }
+ .g-sm-4,
+ .gx-sm-4 {
+ --bs-gutter-x: 1.5rem;
+ }
+ .g-sm-4,
+ .gy-sm-4 {
+ --bs-gutter-y: 1.5rem;
+ }
+ .g-sm-5,
+ .gx-sm-5 {
+ --bs-gutter-x: 3rem;
+ }
+ .g-sm-5,
+ .gy-sm-5 {
+ --bs-gutter-y: 3rem;
+ }
+}
+@media (min-width: 768px) {
+ .col-md {
+ flex: 1 0 0%;
+ }
+ .row-cols-md-auto > * {
+ flex: 0 0 auto;
+ width: auto;
+ }
+ .row-cols-md-1 > * {
+ flex: 0 0 auto;
+ width: 100%;
+ }
+ .row-cols-md-2 > * {
+ flex: 0 0 auto;
+ width: 50%;
+ }
+ .row-cols-md-3 > * {
+ flex: 0 0 auto;
+ width: 33.3333333333%;
+ }
+ .row-cols-md-4 > * {
+ flex: 0 0 auto;
+ width: 25%;
+ }
+ .row-cols-md-5 > * {
+ flex: 0 0 auto;
+ width: 20%;
+ }
+ .row-cols-md-6 > * {
+ flex: 0 0 auto;
+ width: 16.6666666667%;
+ }
+ .col-md-auto {
+ flex: 0 0 auto;
+ width: auto;
+ }
+ .col-md-1 {
+ flex: 0 0 auto;
+ width: 8.33333333%;
+ }
+ .col-md-2 {
+ flex: 0 0 auto;
+ width: 16.66666667%;
+ }
+ .col-md-3 {
+ flex: 0 0 auto;
+ width: 25%;
+ }
+ .col-md-4 {
+ flex: 0 0 auto;
+ width: 33.33333333%;
+ }
+ .col-md-5 {
+ flex: 0 0 auto;
+ width: 41.66666667%;
+ }
+ .col-md-6 {
+ flex: 0 0 auto;
+ width: 50%;
+ }
+ .col-md-7 {
+ flex: 0 0 auto;
+ width: 58.33333333%;
+ }
+ .col-md-8 {
+ flex: 0 0 auto;
+ width: 66.66666667%;
+ }
+ .col-md-9 {
+ flex: 0 0 auto;
+ width: 75%;
+ }
+ .col-md-10 {
+ flex: 0 0 auto;
+ width: 83.33333333%;
+ }
+ .col-md-11 {
+ flex: 0 0 auto;
+ width: 91.66666667%;
+ }
+ .col-md-12 {
+ flex: 0 0 auto;
+ width: 100%;
+ }
+ .offset-md-0 {
+ margin-left: 0;
+ }
+ .offset-md-1 {
+ margin-left: 8.33333333%;
+ }
+ .offset-md-2 {
+ margin-left: 16.66666667%;
+ }
+ .offset-md-3 {
+ margin-left: 25%;
+ }
+ .offset-md-4 {
+ margin-left: 33.33333333%;
+ }
+ .offset-md-5 {
+ margin-left: 41.66666667%;
+ }
+ .offset-md-6 {
+ margin-left: 50%;
+ }
+ .offset-md-7 {
+ margin-left: 58.33333333%;
+ }
+ .offset-md-8 {
+ margin-left: 66.66666667%;
+ }
+ .offset-md-9 {
+ margin-left: 75%;
+ }
+ .offset-md-10 {
+ margin-left: 83.33333333%;
+ }
+ .offset-md-11 {
+ margin-left: 91.66666667%;
+ }
+ .g-md-0,
+ .gx-md-0 {
+ --bs-gutter-x: 0;
+ }
+ .g-md-0,
+ .gy-md-0 {
+ --bs-gutter-y: 0;
+ }
+ .g-md-1,
+ .gx-md-1 {
+ --bs-gutter-x: 0.25rem;
+ }
+ .g-md-1,
+ .gy-md-1 {
+ --bs-gutter-y: 0.25rem;
+ }
+ .g-md-2,
+ .gx-md-2 {
+ --bs-gutter-x: 0.5rem;
+ }
+ .g-md-2,
+ .gy-md-2 {
+ --bs-gutter-y: 0.5rem;
+ }
+ .g-md-3,
+ .gx-md-3 {
+ --bs-gutter-x: 1rem;
+ }
+ .g-md-3,
+ .gy-md-3 {
+ --bs-gutter-y: 1rem;
+ }
+ .g-md-4,
+ .gx-md-4 {
+ --bs-gutter-x: 1.5rem;
+ }
+ .g-md-4,
+ .gy-md-4 {
+ --bs-gutter-y: 1.5rem;
+ }
+ .g-md-5,
+ .gx-md-5 {
+ --bs-gutter-x: 3rem;
+ }
+ .g-md-5,
+ .gy-md-5 {
+ --bs-gutter-y: 3rem;
+ }
+}
+@media (min-width: 992px) {
+ .col-lg {
+ flex: 1 0 0%;
+ }
+ .row-cols-lg-auto > * {
+ flex: 0 0 auto;
+ width: auto;
+ }
+ .row-cols-lg-1 > * {
+ flex: 0 0 auto;
+ width: 100%;
+ }
+ .row-cols-lg-2 > * {
+ flex: 0 0 auto;
+ width: 50%;
+ }
+ .row-cols-lg-3 > * {
+ flex: 0 0 auto;
+ width: 33.3333333333%;
+ }
+ .row-cols-lg-4 > * {
+ flex: 0 0 auto;
+ width: 25%;
+ }
+ .row-cols-lg-5 > * {
+ flex: 0 0 auto;
+ width: 20%;
+ }
+ .row-cols-lg-6 > * {
+ flex: 0 0 auto;
+ width: 16.6666666667%;
+ }
+ .col-lg-auto {
+ flex: 0 0 auto;
+ width: auto;
+ }
+ .col-lg-1 {
+ flex: 0 0 auto;
+ width: 8.33333333%;
+ }
+ .col-lg-2 {
+ flex: 0 0 auto;
+ width: 16.66666667%;
+ }
+ .col-lg-3 {
+ flex: 0 0 auto;
+ width: 25%;
+ }
+ .col-lg-4 {
+ flex: 0 0 auto;
+ width: 33.33333333%;
+ }
+ .col-lg-5 {
+ flex: 0 0 auto;
+ width: 41.66666667%;
+ }
+ .col-lg-6 {
+ flex: 0 0 auto;
+ width: 50%;
+ }
+ .col-lg-7 {
+ flex: 0 0 auto;
+ width: 58.33333333%;
+ }
+ .col-lg-8 {
+ flex: 0 0 auto;
+ width: 66.66666667%;
+ }
+ .col-lg-9 {
+ flex: 0 0 auto;
+ width: 75%;
+ }
+ .col-lg-10 {
+ flex: 0 0 auto;
+ width: 83.33333333%;
+ }
+ .col-lg-11 {
+ flex: 0 0 auto;
+ width: 91.66666667%;
+ }
+ .col-lg-12 {
+ flex: 0 0 auto;
+ width: 100%;
+ }
+ .offset-lg-0 {
+ margin-left: 0;
+ }
+ .offset-lg-1 {
+ margin-left: 8.33333333%;
+ }
+ .offset-lg-2 {
+ margin-left: 16.66666667%;
+ }
+ .offset-lg-3 {
+ margin-left: 25%;
+ }
+ .offset-lg-4 {
+ margin-left: 33.33333333%;
+ }
+ .offset-lg-5 {
+ margin-left: 41.66666667%;
+ }
+ .offset-lg-6 {
+ margin-left: 50%;
+ }
+ .offset-lg-7 {
+ margin-left: 58.33333333%;
+ }
+ .offset-lg-8 {
+ margin-left: 66.66666667%;
+ }
+ .offset-lg-9 {
+ margin-left: 75%;
+ }
+ .offset-lg-10 {
+ margin-left: 83.33333333%;
+ }
+ .offset-lg-11 {
+ margin-left: 91.66666667%;
+ }
+ .g-lg-0,
+ .gx-lg-0 {
+ --bs-gutter-x: 0;
+ }
+ .g-lg-0,
+ .gy-lg-0 {
+ --bs-gutter-y: 0;
+ }
+ .g-lg-1,
+ .gx-lg-1 {
+ --bs-gutter-x: 0.25rem;
+ }
+ .g-lg-1,
+ .gy-lg-1 {
+ --bs-gutter-y: 0.25rem;
+ }
+ .g-lg-2,
+ .gx-lg-2 {
+ --bs-gutter-x: 0.5rem;
+ }
+ .g-lg-2,
+ .gy-lg-2 {
+ --bs-gutter-y: 0.5rem;
+ }
+ .g-lg-3,
+ .gx-lg-3 {
+ --bs-gutter-x: 1rem;
+ }
+ .g-lg-3,
+ .gy-lg-3 {
+ --bs-gutter-y: 1rem;
+ }
+ .g-lg-4,
+ .gx-lg-4 {
+ --bs-gutter-x: 1.5rem;
+ }
+ .g-lg-4,
+ .gy-lg-4 {
+ --bs-gutter-y: 1.5rem;
+ }
+ .g-lg-5,
+ .gx-lg-5 {
+ --bs-gutter-x: 3rem;
+ }
+ .g-lg-5,
+ .gy-lg-5 {
+ --bs-gutter-y: 3rem;
+ }
+}
+@media (min-width: 1200px) {
+ .col-xl {
+ flex: 1 0 0%;
+ }
+ .row-cols-xl-auto > * {
+ flex: 0 0 auto;
+ width: auto;
+ }
+ .row-cols-xl-1 > * {
+ flex: 0 0 auto;
+ width: 100%;
+ }
+ .row-cols-xl-2 > * {
+ flex: 0 0 auto;
+ width: 50%;
+ }
+ .row-cols-xl-3 > * {
+ flex: 0 0 auto;
+ width: 33.3333333333%;
+ }
+ .row-cols-xl-4 > * {
+ flex: 0 0 auto;
+ width: 25%;
+ }
+ .row-cols-xl-5 > * {
+ flex: 0 0 auto;
+ width: 20%;
+ }
+ .row-cols-xl-6 > * {
+ flex: 0 0 auto;
+ width: 16.6666666667%;
+ }
+ .col-xl-auto {
+ flex: 0 0 auto;
+ width: auto;
+ }
+ .col-xl-1 {
+ flex: 0 0 auto;
+ width: 8.33333333%;
+ }
+ .col-xl-2 {
+ flex: 0 0 auto;
+ width: 16.66666667%;
+ }
+ .col-xl-3 {
+ flex: 0 0 auto;
+ width: 25%;
+ }
+ .col-xl-4 {
+ flex: 0 0 auto;
+ width: 33.33333333%;
+ }
+ .col-xl-5 {
+ flex: 0 0 auto;
+ width: 41.66666667%;
+ }
+ .col-xl-6 {
+ flex: 0 0 auto;
+ width: 50%;
+ }
+ .col-xl-7 {
+ flex: 0 0 auto;
+ width: 58.33333333%;
+ }
+ .col-xl-8 {
+ flex: 0 0 auto;
+ width: 66.66666667%;
+ }
+ .col-xl-9 {
+ flex: 0 0 auto;
+ width: 75%;
+ }
+ .col-xl-10 {
+ flex: 0 0 auto;
+ width: 83.33333333%;
+ }
+ .col-xl-11 {
+ flex: 0 0 auto;
+ width: 91.66666667%;
+ }
+ .col-xl-12 {
+ flex: 0 0 auto;
+ width: 100%;
+ }
+ .offset-xl-0 {
+ margin-left: 0;
+ }
+ .offset-xl-1 {
+ margin-left: 8.33333333%;
+ }
+ .offset-xl-2 {
+ margin-left: 16.66666667%;
+ }
+ .offset-xl-3 {
+ margin-left: 25%;
+ }
+ .offset-xl-4 {
+ margin-left: 33.33333333%;
+ }
+ .offset-xl-5 {
+ margin-left: 41.66666667%;
+ }
+ .offset-xl-6 {
+ margin-left: 50%;
+ }
+ .offset-xl-7 {
+ margin-left: 58.33333333%;
+ }
+ .offset-xl-8 {
+ margin-left: 66.66666667%;
+ }
+ .offset-xl-9 {
+ margin-left: 75%;
+ }
+ .offset-xl-10 {
+ margin-left: 83.33333333%;
+ }
+ .offset-xl-11 {
+ margin-left: 91.66666667%;
+ }
+ .g-xl-0,
+ .gx-xl-0 {
+ --bs-gutter-x: 0;
+ }
+ .g-xl-0,
+ .gy-xl-0 {
+ --bs-gutter-y: 0;
+ }
+ .g-xl-1,
+ .gx-xl-1 {
+ --bs-gutter-x: 0.25rem;
+ }
+ .g-xl-1,
+ .gy-xl-1 {
+ --bs-gutter-y: 0.25rem;
+ }
+ .g-xl-2,
+ .gx-xl-2 {
+ --bs-gutter-x: 0.5rem;
+ }
+ .g-xl-2,
+ .gy-xl-2 {
+ --bs-gutter-y: 0.5rem;
+ }
+ .g-xl-3,
+ .gx-xl-3 {
+ --bs-gutter-x: 1rem;
+ }
+ .g-xl-3,
+ .gy-xl-3 {
+ --bs-gutter-y: 1rem;
+ }
+ .g-xl-4,
+ .gx-xl-4 {
+ --bs-gutter-x: 1.5rem;
+ }
+ .g-xl-4,
+ .gy-xl-4 {
+ --bs-gutter-y: 1.5rem;
+ }
+ .g-xl-5,
+ .gx-xl-5 {
+ --bs-gutter-x: 3rem;
+ }
+ .g-xl-5,
+ .gy-xl-5 {
+ --bs-gutter-y: 3rem;
+ }
+}
+@media (min-width: 1400px) {
+ .col-xxl {
+ flex: 1 0 0%;
+ }
+ .row-cols-xxl-auto > * {
+ flex: 0 0 auto;
+ width: auto;
+ }
+ .row-cols-xxl-1 > * {
+ flex: 0 0 auto;
+ width: 100%;
+ }
+ .row-cols-xxl-2 > * {
+ flex: 0 0 auto;
+ width: 50%;
+ }
+ .row-cols-xxl-3 > * {
+ flex: 0 0 auto;
+ width: 33.3333333333%;
+ }
+ .row-cols-xxl-4 > * {
+ flex: 0 0 auto;
+ width: 25%;
+ }
+ .row-cols-xxl-5 > * {
+ flex: 0 0 auto;
+ width: 20%;
+ }
+ .row-cols-xxl-6 > * {
+ flex: 0 0 auto;
+ width: 16.6666666667%;
+ }
+ .col-xxl-auto {
+ flex: 0 0 auto;
+ width: auto;
+ }
+ .col-xxl-1 {
+ flex: 0 0 auto;
+ width: 8.33333333%;
+ }
+ .col-xxl-2 {
+ flex: 0 0 auto;
+ width: 16.66666667%;
+ }
+ .col-xxl-3 {
+ flex: 0 0 auto;
+ width: 25%;
+ }
+ .col-xxl-4 {
+ flex: 0 0 auto;
+ width: 33.33333333%;
+ }
+ .col-xxl-5 {
+ flex: 0 0 auto;
+ width: 41.66666667%;
+ }
+ .col-xxl-6 {
+ flex: 0 0 auto;
+ width: 50%;
+ }
+ .col-xxl-7 {
+ flex: 0 0 auto;
+ width: 58.33333333%;
+ }
+ .col-xxl-8 {
+ flex: 0 0 auto;
+ width: 66.66666667%;
+ }
+ .col-xxl-9 {
+ flex: 0 0 auto;
+ width: 75%;
+ }
+ .col-xxl-10 {
+ flex: 0 0 auto;
+ width: 83.33333333%;
+ }
+ .col-xxl-11 {
+ flex: 0 0 auto;
+ width: 91.66666667%;
+ }
+ .col-xxl-12 {
+ flex: 0 0 auto;
+ width: 100%;
+ }
+ .offset-xxl-0 {
+ margin-left: 0;
+ }
+ .offset-xxl-1 {
+ margin-left: 8.33333333%;
+ }
+ .offset-xxl-2 {
+ margin-left: 16.66666667%;
+ }
+ .offset-xxl-3 {
+ margin-left: 25%;
+ }
+ .offset-xxl-4 {
+ margin-left: 33.33333333%;
+ }
+ .offset-xxl-5 {
+ margin-left: 41.66666667%;
+ }
+ .offset-xxl-6 {
+ margin-left: 50%;
+ }
+ .offset-xxl-7 {
+ margin-left: 58.33333333%;
+ }
+ .offset-xxl-8 {
+ margin-left: 66.66666667%;
+ }
+ .offset-xxl-9 {
+ margin-left: 75%;
+ }
+ .offset-xxl-10 {
+ margin-left: 83.33333333%;
+ }
+ .offset-xxl-11 {
+ margin-left: 91.66666667%;
+ }
+ .g-xxl-0,
+ .gx-xxl-0 {
+ --bs-gutter-x: 0;
+ }
+ .g-xxl-0,
+ .gy-xxl-0 {
+ --bs-gutter-y: 0;
+ }
+ .g-xxl-1,
+ .gx-xxl-1 {
+ --bs-gutter-x: 0.25rem;
+ }
+ .g-xxl-1,
+ .gy-xxl-1 {
+ --bs-gutter-y: 0.25rem;
+ }
+ .g-xxl-2,
+ .gx-xxl-2 {
+ --bs-gutter-x: 0.5rem;
+ }
+ .g-xxl-2,
+ .gy-xxl-2 {
+ --bs-gutter-y: 0.5rem;
+ }
+ .g-xxl-3,
+ .gx-xxl-3 {
+ --bs-gutter-x: 1rem;
+ }
+ .g-xxl-3,
+ .gy-xxl-3 {
+ --bs-gutter-y: 1rem;
+ }
+ .g-xxl-4,
+ .gx-xxl-4 {
+ --bs-gutter-x: 1.5rem;
+ }
+ .g-xxl-4,
+ .gy-xxl-4 {
+ --bs-gutter-y: 1.5rem;
+ }
+ .g-xxl-5,
+ .gx-xxl-5 {
+ --bs-gutter-x: 3rem;
+ }
+ .g-xxl-5,
+ .gy-xxl-5 {
+ --bs-gutter-y: 3rem;
+ }
+}
+.table {
+ --bs-table-color-type: initial;
+ --bs-table-bg-type: initial;
+ --bs-table-color-state: initial;
+ --bs-table-bg-state: initial;
+ --bs-table-color: var(--bs-body-color);
+ --bs-table-bg: var(--bs-body-bg);
+ --bs-table-border-color: var(--bs-border-color);
+ --bs-table-accent-bg: transparent;
+ --bs-table-striped-color: var(--bs-body-color);
+ --bs-table-striped-bg: rgba(0, 0, 0, 0.05);
+ --bs-table-active-color: var(--bs-body-color);
+ --bs-table-active-bg: rgba(0, 0, 0, 0.1);
+ --bs-table-hover-color: var(--bs-body-color);
+ --bs-table-hover-bg: rgba(0, 0, 0, 0.075);
+ width: 100%;
+ margin-bottom: 1rem;
+ vertical-align: top;
+ border-color: var(--bs-table-border-color);
+}
+.table > :not(caption) > * > * {
+ padding: 0.5rem 0.5rem;
+ color: var(--bs-table-color-state, var(--bs-table-color-type, var(--bs-table-color)));
+ background-color: var(--bs-table-bg);
+ border-bottom-width: var(--bs-border-width);
+ box-shadow: inset 0 0 0 9999px var(--bs-table-bg-state, var(--bs-table-bg-type, var(--bs-table-accent-bg)));
+}
+.table > tbody {
+ vertical-align: inherit;
+}
+.table > thead {
+ vertical-align: bottom;
+}
+
+.table-group-divider {
+ border-top: calc(var(--bs-border-width) * 2) solid currentcolor;
+}
+
+.caption-top {
+ caption-side: top;
+}
+
+.table-sm > :not(caption) > * > * {
+ padding: 0.25rem 0.25rem;
+}
+
+.table-bordered > :not(caption) > * {
+ border-width: var(--bs-border-width) 0;
+}
+.table-bordered > :not(caption) > * > * {
+ border-width: 0 var(--bs-border-width);
+}
+
+.table-borderless > :not(caption) > * > * {
+ border-bottom-width: 0;
+}
+.table-borderless > :not(:first-child) {
+ border-top-width: 0;
+}
+
+.table-striped > tbody > tr:nth-of-type(odd) > * {
+ --bs-table-color-type: var(--bs-table-striped-color);
+ --bs-table-bg-type: var(--bs-table-striped-bg);
+}
+
+.table-striped-columns > :not(caption) > tr > :nth-child(even) {
+ --bs-table-color-type: var(--bs-table-striped-color);
+ --bs-table-bg-type: var(--bs-table-striped-bg);
+}
+
+.table-active {
+ --bs-table-color-state: var(--bs-table-active-color);
+ --bs-table-bg-state: var(--bs-table-active-bg);
+}
+
+.table-hover > tbody > tr:hover > * {
+ --bs-table-color-state: var(--bs-table-hover-color);
+ --bs-table-bg-state: var(--bs-table-hover-bg);
+}
+
+.table-primary {
+ --bs-table-color: #000;
+ --bs-table-bg: #cfe2ff;
+ --bs-table-border-color: #bacbe6;
+ --bs-table-striped-bg: #c5d7f2;
+ --bs-table-striped-color: #000;
+ --bs-table-active-bg: #bacbe6;
+ --bs-table-active-color: #000;
+ --bs-table-hover-bg: #bfd1ec;
+ --bs-table-hover-color: #000;
+ color: var(--bs-table-color);
+ border-color: var(--bs-table-border-color);
+}
+
+.table-secondary {
+ --bs-table-color: #000;
+ --bs-table-bg: #e2e3e5;
+ --bs-table-border-color: #cbccce;
+ --bs-table-striped-bg: #d7d8da;
+ --bs-table-striped-color: #000;
+ --bs-table-active-bg: #cbccce;
+ --bs-table-active-color: #000;
+ --bs-table-hover-bg: #d1d2d4;
+ --bs-table-hover-color: #000;
+ color: var(--bs-table-color);
+ border-color: var(--bs-table-border-color);
+}
+
+.table-success {
+ --bs-table-color: #000;
+ --bs-table-bg: #d1e7dd;
+ --bs-table-border-color: #bcd0c7;
+ --bs-table-striped-bg: #c7dbd2;
+ --bs-table-striped-color: #000;
+ --bs-table-active-bg: #bcd0c7;
+ --bs-table-active-color: #000;
+ --bs-table-hover-bg: #c1d6cc;
+ --bs-table-hover-color: #000;
+ color: var(--bs-table-color);
+ border-color: var(--bs-table-border-color);
+}
+
+.table-info {
+ --bs-table-color: #000;
+ --bs-table-bg: #cff4fc;
+ --bs-table-border-color: #badce3;
+ --bs-table-striped-bg: #c5e8ef;
+ --bs-table-striped-color: #000;
+ --bs-table-active-bg: #badce3;
+ --bs-table-active-color: #000;
+ --bs-table-hover-bg: #bfe2e9;
+ --bs-table-hover-color: #000;
+ color: var(--bs-table-color);
+ border-color: var(--bs-table-border-color);
+}
+
+.table-warning {
+ --bs-table-color: #000;
+ --bs-table-bg: #fff3cd;
+ --bs-table-border-color: #e6dbb9;
+ --bs-table-striped-bg: #f2e7c3;
+ --bs-table-striped-color: #000;
+ --bs-table-active-bg: #e6dbb9;
+ --bs-table-active-color: #000;
+ --bs-table-hover-bg: #ece1be;
+ --bs-table-hover-color: #000;
+ color: var(--bs-table-color);
+ border-color: var(--bs-table-border-color);
+}
+
+.table-danger {
+ --bs-table-color: #000;
+ --bs-table-bg: #f8d7da;
+ --bs-table-border-color: #dfc2c4;
+ --bs-table-striped-bg: #eccccf;
+ --bs-table-striped-color: #000;
+ --bs-table-active-bg: #dfc2c4;
+ --bs-table-active-color: #000;
+ --bs-table-hover-bg: #e5c7ca;
+ --bs-table-hover-color: #000;
+ color: var(--bs-table-color);
+ border-color: var(--bs-table-border-color);
+}
+
+.table-light {
+ --bs-table-color: #000;
+ --bs-table-bg: #f8f9fa;
+ --bs-table-border-color: #dfe0e1;
+ --bs-table-striped-bg: #ecedee;
+ --bs-table-striped-color: #000;
+ --bs-table-active-bg: #dfe0e1;
+ --bs-table-active-color: #000;
+ --bs-table-hover-bg: #e5e6e7;
+ --bs-table-hover-color: #000;
+ color: var(--bs-table-color);
+ border-color: var(--bs-table-border-color);
+}
+
+.table-dark {
+ --bs-table-color: #fff;
+ --bs-table-bg: #212529;
+ --bs-table-border-color: #373b3e;
+ --bs-table-striped-bg: #2c3034;
+ --bs-table-striped-color: #fff;
+ --bs-table-active-bg: #373b3e;
+ --bs-table-active-color: #fff;
+ --bs-table-hover-bg: #323539;
+ --bs-table-hover-color: #fff;
+ color: var(--bs-table-color);
+ border-color: var(--bs-table-border-color);
+}
+
+.table-responsive {
+ overflow-x: auto;
+ -webkit-overflow-scrolling: touch;
+}
+
+@media (max-width: 575.98px) {
+ .table-responsive-sm {
+ overflow-x: auto;
+ -webkit-overflow-scrolling: touch;
+ }
+}
+@media (max-width: 767.98px) {
+ .table-responsive-md {
+ overflow-x: auto;
+ -webkit-overflow-scrolling: touch;
+ }
+}
+@media (max-width: 991.98px) {
+ .table-responsive-lg {
+ overflow-x: auto;
+ -webkit-overflow-scrolling: touch;
+ }
+}
+@media (max-width: 1199.98px) {
+ .table-responsive-xl {
+ overflow-x: auto;
+ -webkit-overflow-scrolling: touch;
+ }
+}
+@media (max-width: 1399.98px) {
+ .table-responsive-xxl {
+ overflow-x: auto;
+ -webkit-overflow-scrolling: touch;
+ }
+}
+.form-label {
+ margin-bottom: 0.5rem;
+}
+
+.col-form-label {
+ padding-top: calc(0.375rem + var(--bs-border-width));
+ padding-bottom: calc(0.375rem + var(--bs-border-width));
+ margin-bottom: 0;
+ font-size: inherit;
+ line-height: 1.5;
+}
+
+.col-form-label-lg {
+ padding-top: calc(0.5rem + var(--bs-border-width));
+ padding-bottom: calc(0.5rem + var(--bs-border-width));
+ font-size: 1.25rem;
+}
+
+.col-form-label-sm {
+ padding-top: calc(0.25rem + var(--bs-border-width));
+ padding-bottom: calc(0.25rem + var(--bs-border-width));
+ font-size: 0.875rem;
+}
+
+.form-text {
+ margin-top: 0.25rem;
+ font-size: 0.875em;
+ color: var(--bs-secondary-color);
+}
+
+.form-control {
+ display: block;
+ width: 100%;
+ padding: 0.375rem 0.75rem;
+ font-size: 1rem;
+ font-weight: 400;
+ line-height: 1.5;
+ color: var(--bs-body-color);
+ background-color: var(--bs-body-bg);
+ background-clip: padding-box;
+ border: var(--bs-border-width) solid var(--bs-border-color);
+ -webkit-appearance: none;
+ -moz-appearance: none;
+ appearance: none;
+ border-radius: var(--bs-border-radius);
+ transition: border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;
+}
+@media (prefers-reduced-motion: reduce) {
+ .form-control {
+ transition: none;
+ }
+}
+.form-control[type=file] {
+ overflow: hidden;
+}
+.form-control[type=file]:not(:disabled):not([readonly]) {
+ cursor: pointer;
+}
+.form-control:focus {
+ color: var(--bs-body-color);
+ background-color: var(--bs-body-bg);
+ border-color: #86b7fe;
+ outline: 0;
+ box-shadow: 0 0 0 0.25rem rgba(13, 110, 253, 0.25);
+}
+.form-control::-webkit-date-and-time-value {
+ min-width: 85px;
+ height: 1.5em;
+ margin: 0;
+}
+.form-control::-webkit-datetime-edit {
+ display: block;
+ padding: 0;
+}
+.form-control::-moz-placeholder {
+ color: var(--bs-secondary-color);
+ opacity: 1;
+}
+.form-control::placeholder {
+ color: var(--bs-secondary-color);
+ opacity: 1;
+}
+.form-control:disabled {
+ background-color: var(--bs-secondary-bg);
+ opacity: 1;
+}
+.form-control::-webkit-file-upload-button {
+ padding: 0.375rem 0.75rem;
+ margin: -0.375rem -0.75rem;
+ -webkit-margin-end: 0.75rem;
+ margin-inline-end: 0.75rem;
+ color: var(--bs-body-color);
+ background-color: var(--bs-tertiary-bg);
+ pointer-events: none;
+ border-color: inherit;
+ border-style: solid;
+ border-width: 0;
+ border-inline-end-width: var(--bs-border-width);
+ border-radius: 0;
+ -webkit-transition: color 0.15s ease-in-out, background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;
+ transition: color 0.15s ease-in-out, background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;
+}
+.form-control::file-selector-button {
+ padding: 0.375rem 0.75rem;
+ margin: -0.375rem -0.75rem;
+ -webkit-margin-end: 0.75rem;
+ margin-inline-end: 0.75rem;
+ color: var(--bs-body-color);
+ background-color: var(--bs-tertiary-bg);
+ pointer-events: none;
+ border-color: inherit;
+ border-style: solid;
+ border-width: 0;
+ border-inline-end-width: var(--bs-border-width);
+ border-radius: 0;
+ transition: color 0.15s ease-in-out, background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;
+}
+@media (prefers-reduced-motion: reduce) {
+ .form-control::-webkit-file-upload-button {
+ -webkit-transition: none;
+ transition: none;
+ }
+ .form-control::file-selector-button {
+ transition: none;
+ }
+}
+.form-control:hover:not(:disabled):not([readonly])::-webkit-file-upload-button {
+ background-color: var(--bs-secondary-bg);
+}
+.form-control:hover:not(:disabled):not([readonly])::file-selector-button {
+ background-color: var(--bs-secondary-bg);
+}
+
+.form-control-plaintext {
+ display: block;
+ width: 100%;
+ padding: 0.375rem 0;
+ margin-bottom: 0;
+ line-height: 1.5;
+ color: var(--bs-body-color);
+ background-color: transparent;
+ border: solid transparent;
+ border-width: var(--bs-border-width) 0;
+}
+.form-control-plaintext:focus {
+ outline: 0;
+}
+.form-control-plaintext.form-control-sm, .form-control-plaintext.form-control-lg {
+ padding-right: 0;
+ padding-left: 0;
+}
+
+.form-control-sm {
+ min-height: calc(1.5em + 0.5rem + calc(var(--bs-border-width) * 2));
+ padding: 0.25rem 0.5rem;
+ font-size: 0.875rem;
+ border-radius: var(--bs-border-radius-sm);
+}
+.form-control-sm::-webkit-file-upload-button {
+ padding: 0.25rem 0.5rem;
+ margin: -0.25rem -0.5rem;
+ -webkit-margin-end: 0.5rem;
+ margin-inline-end: 0.5rem;
+}
+.form-control-sm::file-selector-button {
+ padding: 0.25rem 0.5rem;
+ margin: -0.25rem -0.5rem;
+ -webkit-margin-end: 0.5rem;
+ margin-inline-end: 0.5rem;
+}
+
+.form-control-lg {
+ min-height: calc(1.5em + 1rem + calc(var(--bs-border-width) * 2));
+ padding: 0.5rem 1rem;
+ font-size: 1.25rem;
+ border-radius: var(--bs-border-radius-lg);
+}
+.form-control-lg::-webkit-file-upload-button {
+ padding: 0.5rem 1rem;
+ margin: -0.5rem -1rem;
+ -webkit-margin-end: 1rem;
+ margin-inline-end: 1rem;
+}
+.form-control-lg::file-selector-button {
+ padding: 0.5rem 1rem;
+ margin: -0.5rem -1rem;
+ -webkit-margin-end: 1rem;
+ margin-inline-end: 1rem;
+}
+
+textarea.form-control {
+ min-height: calc(1.5em + 0.75rem + calc(var(--bs-border-width) * 2));
+}
+textarea.form-control-sm {
+ min-height: calc(1.5em + 0.5rem + calc(var(--bs-border-width) * 2));
+}
+textarea.form-control-lg {
+ min-height: calc(1.5em + 1rem + calc(var(--bs-border-width) * 2));
+}
+
+.form-control-color {
+ width: 3rem;
+ height: calc(1.5em + 0.75rem + calc(var(--bs-border-width) * 2));
+ padding: 0.375rem;
+}
+.form-control-color:not(:disabled):not([readonly]) {
+ cursor: pointer;
+}
+.form-control-color::-moz-color-swatch {
+ border: 0 !important;
+ border-radius: var(--bs-border-radius);
+}
+.form-control-color::-webkit-color-swatch {
+ border: 0 !important;
+ border-radius: var(--bs-border-radius);
+}
+.form-control-color.form-control-sm {
+ height: calc(1.5em + 0.5rem + calc(var(--bs-border-width) * 2));
+}
+.form-control-color.form-control-lg {
+ height: calc(1.5em + 1rem + calc(var(--bs-border-width) * 2));
+}
+
+.form-select {
+ --bs-form-select-bg-img: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='%23343a40' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='m2 5 6 6 6-6'/%3e%3c/svg%3e");
+ display: block;
+ width: 100%;
+ padding: 0.375rem 2.25rem 0.375rem 0.75rem;
+ font-size: 1rem;
+ font-weight: 400;
+ line-height: 1.5;
+ color: var(--bs-body-color);
+ background-color: var(--bs-body-bg);
+ background-image: var(--bs-form-select-bg-img), var(--bs-form-select-bg-icon, none);
+ background-repeat: no-repeat;
+ background-position: right 0.75rem center;
+ background-size: 16px 12px;
+ border: var(--bs-border-width) solid var(--bs-border-color);
+ border-radius: var(--bs-border-radius);
+ transition: border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;
+ -webkit-appearance: none;
+ -moz-appearance: none;
+ appearance: none;
+}
+@media (prefers-reduced-motion: reduce) {
+ .form-select {
+ transition: none;
+ }
+}
+.form-select:focus {
+ border-color: #86b7fe;
+ outline: 0;
+ box-shadow: 0 0 0 0.25rem rgba(13, 110, 253, 0.25);
+}
+.form-select[multiple], .form-select[size]:not([size="1"]) {
+ padding-right: 0.75rem;
+ background-image: none;
+}
+.form-select:disabled {
+ background-color: var(--bs-secondary-bg);
+}
+.form-select:-moz-focusring {
+ color: transparent;
+ text-shadow: 0 0 0 var(--bs-body-color);
+}
+
+.form-select-sm {
+ padding-top: 0.25rem;
+ padding-bottom: 0.25rem;
+ padding-left: 0.5rem;
+ font-size: 0.875rem;
+ border-radius: var(--bs-border-radius-sm);
+}
+
+.form-select-lg {
+ padding-top: 0.5rem;
+ padding-bottom: 0.5rem;
+ padding-left: 1rem;
+ font-size: 1.25rem;
+ border-radius: var(--bs-border-radius-lg);
+}
+
+[data-bs-theme=dark] .form-select {
+ --bs-form-select-bg-img: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='%23adb5bd' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='m2 5 6 6 6-6'/%3e%3c/svg%3e");
+}
+
+.form-check {
+ display: block;
+ min-height: 1.5rem;
+ padding-left: 1.5em;
+ margin-bottom: 0.125rem;
+}
+.form-check .form-check-input {
+ float: left;
+ margin-left: -1.5em;
+}
+
+.form-check-reverse {
+ padding-right: 1.5em;
+ padding-left: 0;
+ text-align: right;
+}
+.form-check-reverse .form-check-input {
+ float: right;
+ margin-right: -1.5em;
+ margin-left: 0;
+}
+
+.form-check-input {
+ --bs-form-check-bg: var(--bs-body-bg);
+ width: 1em;
+ height: 1em;
+ margin-top: 0.25em;
+ vertical-align: top;
+ background-color: var(--bs-form-check-bg);
+ background-image: var(--bs-form-check-bg-image);
+ background-repeat: no-repeat;
+ background-position: center;
+ background-size: contain;
+ border: var(--bs-border-width) solid var(--bs-border-color);
+ -webkit-appearance: none;
+ -moz-appearance: none;
+ appearance: none;
+ -webkit-print-color-adjust: exact;
+ color-adjust: exact;
+ print-color-adjust: exact;
+}
+.form-check-input[type=checkbox] {
+ border-radius: 0.25em;
+}
+.form-check-input[type=radio] {
+ border-radius: 50%;
+}
+.form-check-input:active {
+ filter: brightness(90%);
+}
+.form-check-input:focus {
+ border-color: #86b7fe;
+ outline: 0;
+ box-shadow: 0 0 0 0.25rem rgba(13, 110, 253, 0.25);
+}
+.form-check-input:checked {
+ background-color: #0d6efd;
+ border-color: #0d6efd;
+}
+.form-check-input:checked[type=checkbox] {
+ --bs-form-check-bg-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20'%3e%3cpath fill='none' stroke='%23fff' stroke-linecap='round' stroke-linejoin='round' stroke-width='3' d='m6 10 3 3 6-6'/%3e%3c/svg%3e");
+}
+.form-check-input:checked[type=radio] {
+ --bs-form-check-bg-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='2' fill='%23fff'/%3e%3c/svg%3e");
+}
+.form-check-input[type=checkbox]:indeterminate {
+ background-color: #0d6efd;
+ border-color: #0d6efd;
+ --bs-form-check-bg-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20'%3e%3cpath fill='none' stroke='%23fff' stroke-linecap='round' stroke-linejoin='round' stroke-width='3' d='M6 10h8'/%3e%3c/svg%3e");
+}
+.form-check-input:disabled {
+ pointer-events: none;
+ filter: none;
+ opacity: 0.5;
+}
+.form-check-input[disabled] ~ .form-check-label, .form-check-input:disabled ~ .form-check-label {
+ cursor: default;
+ opacity: 0.5;
+}
+
+.form-switch {
+ padding-left: 2.5em;
+}
+.form-switch .form-check-input {
+ --bs-form-switch-bg: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='rgba%280, 0, 0, 0.25%29'/%3e%3c/svg%3e");
+ width: 2em;
+ margin-left: -2.5em;
+ background-image: var(--bs-form-switch-bg);
+ background-position: left center;
+ border-radius: 2em;
+ transition: background-position 0.15s ease-in-out;
+}
+@media (prefers-reduced-motion: reduce) {
+ .form-switch .form-check-input {
+ transition: none;
+ }
+}
+.form-switch .form-check-input:focus {
+ --bs-form-switch-bg: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='%2386b7fe'/%3e%3c/svg%3e");
+}
+.form-switch .form-check-input:checked {
+ background-position: right center;
+ --bs-form-switch-bg: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='%23fff'/%3e%3c/svg%3e");
+}
+.form-switch.form-check-reverse {
+ padding-right: 2.5em;
+ padding-left: 0;
+}
+.form-switch.form-check-reverse .form-check-input {
+ margin-right: -2.5em;
+ margin-left: 0;
+}
+
+.form-check-inline {
+ display: inline-block;
+ margin-right: 1rem;
+}
+
+.btn-check {
+ position: absolute;
+ clip: rect(0, 0, 0, 0);
+ pointer-events: none;
+}
+.btn-check[disabled] + .btn, .btn-check:disabled + .btn {
+ pointer-events: none;
+ filter: none;
+ opacity: 0.65;
+}
+
+[data-bs-theme=dark] .form-switch .form-check-input:not(:checked):not(:focus) {
+ --bs-form-switch-bg: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='rgba%28255, 255, 255, 0.25%29'/%3e%3c/svg%3e");
+}
+
+.form-range {
+ width: 100%;
+ height: 1.5rem;
+ padding: 0;
+ background-color: transparent;
+ -webkit-appearance: none;
+ -moz-appearance: none;
+ appearance: none;
+}
+.form-range:focus {
+ outline: 0;
+}
+.form-range:focus::-webkit-slider-thumb {
+ box-shadow: 0 0 0 1px #fff, 0 0 0 0.25rem rgba(13, 110, 253, 0.25);
+}
+.form-range:focus::-moz-range-thumb {
+ box-shadow: 0 0 0 1px #fff, 0 0 0 0.25rem rgba(13, 110, 253, 0.25);
+}
+.form-range::-moz-focus-outer {
+ border: 0;
+}
+.form-range::-webkit-slider-thumb {
+ width: 1rem;
+ height: 1rem;
+ margin-top: -0.25rem;
+ background-color: #0d6efd;
+ border: 0;
+ border-radius: 1rem;
+ -webkit-transition: background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;
+ transition: background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;
+ -webkit-appearance: none;
+ appearance: none;
+}
+@media (prefers-reduced-motion: reduce) {
+ .form-range::-webkit-slider-thumb {
+ -webkit-transition: none;
+ transition: none;
+ }
+}
+.form-range::-webkit-slider-thumb:active {
+ background-color: #b6d4fe;
+}
+.form-range::-webkit-slider-runnable-track {
+ width: 100%;
+ height: 0.5rem;
+ color: transparent;
+ cursor: pointer;
+ background-color: var(--bs-tertiary-bg);
+ border-color: transparent;
+ border-radius: 1rem;
+}
+.form-range::-moz-range-thumb {
+ width: 1rem;
+ height: 1rem;
+ background-color: #0d6efd;
+ border: 0;
+ border-radius: 1rem;
+ -moz-transition: background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;
+ transition: background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;
+ -moz-appearance: none;
+ appearance: none;
+}
+@media (prefers-reduced-motion: reduce) {
+ .form-range::-moz-range-thumb {
+ -moz-transition: none;
+ transition: none;
+ }
+}
+.form-range::-moz-range-thumb:active {
+ background-color: #b6d4fe;
+}
+.form-range::-moz-range-track {
+ width: 100%;
+ height: 0.5rem;
+ color: transparent;
+ cursor: pointer;
+ background-color: var(--bs-tertiary-bg);
+ border-color: transparent;
+ border-radius: 1rem;
+}
+.form-range:disabled {
+ pointer-events: none;
+}
+.form-range:disabled::-webkit-slider-thumb {
+ background-color: var(--bs-secondary-color);
+}
+.form-range:disabled::-moz-range-thumb {
+ background-color: var(--bs-secondary-color);
+}
+
+.form-floating {
+ position: relative;
+}
+.form-floating > .form-control,
+.form-floating > .form-control-plaintext,
+.form-floating > .form-select {
+ height: calc(3.5rem + calc(var(--bs-border-width) * 2));
+ min-height: calc(3.5rem + calc(var(--bs-border-width) * 2));
+ line-height: 1.25;
+}
+.form-floating > label {
+ position: absolute;
+ top: 0;
+ left: 0;
+ z-index: 2;
+ height: 100%;
+ padding: 1rem 0.75rem;
+ overflow: hidden;
+ text-align: start;
+ text-overflow: ellipsis;
+ white-space: nowrap;
+ pointer-events: none;
+ border: var(--bs-border-width) solid transparent;
+ transform-origin: 0 0;
+ transition: opacity 0.1s ease-in-out, transform 0.1s ease-in-out;
+}
+@media (prefers-reduced-motion: reduce) {
+ .form-floating > label {
+ transition: none;
+ }
+}
+.form-floating > .form-control,
+.form-floating > .form-control-plaintext {
+ padding: 1rem 0.75rem;
+}
+.form-floating > .form-control::-moz-placeholder, .form-floating > .form-control-plaintext::-moz-placeholder {
+ color: transparent;
+}
+.form-floating > .form-control::placeholder,
+.form-floating > .form-control-plaintext::placeholder {
+ color: transparent;
+}
+.form-floating > .form-control:not(:-moz-placeholder-shown), .form-floating > .form-control-plaintext:not(:-moz-placeholder-shown) {
+ padding-top: 1.625rem;
+ padding-bottom: 0.625rem;
+}
+.form-floating > .form-control:focus, .form-floating > .form-control:not(:placeholder-shown),
+.form-floating > .form-control-plaintext:focus,
+.form-floating > .form-control-plaintext:not(:placeholder-shown) {
+ padding-top: 1.625rem;
+ padding-bottom: 0.625rem;
+}
+.form-floating > .form-control:-webkit-autofill,
+.form-floating > .form-control-plaintext:-webkit-autofill {
+ padding-top: 1.625rem;
+ padding-bottom: 0.625rem;
+}
+.form-floating > .form-select {
+ padding-top: 1.625rem;
+ padding-bottom: 0.625rem;
+}
+.form-floating > .form-control:not(:-moz-placeholder-shown) ~ label {
+ color: rgba(var(--bs-body-color-rgb), 0.65);
+ transform: scale(0.85) translateY(-0.5rem) translateX(0.15rem);
+}
+.form-floating > .form-control:focus ~ label,
+.form-floating > .form-control:not(:placeholder-shown) ~ label,
+.form-floating > .form-control-plaintext ~ label,
+.form-floating > .form-select ~ label {
+ color: rgba(var(--bs-body-color-rgb), 0.65);
+ transform: scale(0.85) translateY(-0.5rem) translateX(0.15rem);
+}
+.form-floating > .form-control:not(:-moz-placeholder-shown) ~ label::after {
+ position: absolute;
+ inset: 1rem 0.375rem;
+ z-index: -1;
+ height: 1.5em;
+ content: "";
+ background-color: var(--bs-body-bg);
+ border-radius: var(--bs-border-radius);
+}
+.form-floating > .form-control:focus ~ label::after,
+.form-floating > .form-control:not(:placeholder-shown) ~ label::after,
+.form-floating > .form-control-plaintext ~ label::after,
+.form-floating > .form-select ~ label::after {
+ position: absolute;
+ inset: 1rem 0.375rem;
+ z-index: -1;
+ height: 1.5em;
+ content: "";
+ background-color: var(--bs-body-bg);
+ border-radius: var(--bs-border-radius);
+}
+.form-floating > .form-control:-webkit-autofill ~ label {
+ color: rgba(var(--bs-body-color-rgb), 0.65);
+ transform: scale(0.85) translateY(-0.5rem) translateX(0.15rem);
+}
+.form-floating > .form-control-plaintext ~ label {
+ border-width: var(--bs-border-width) 0;
+}
+.form-floating > :disabled ~ label {
+ color: #6c757d;
+}
+.form-floating > :disabled ~ label::after {
+ background-color: var(--bs-secondary-bg);
+}
+
+.input-group {
+ position: relative;
+ display: flex;
+ flex-wrap: wrap;
+ align-items: stretch;
+ width: 100%;
+}
+.input-group > .form-control,
+.input-group > .form-select,
+.input-group > .form-floating {
+ position: relative;
+ flex: 1 1 auto;
+ width: 1%;
+ min-width: 0;
+}
+.input-group > .form-control:focus,
+.input-group > .form-select:focus,
+.input-group > .form-floating:focus-within {
+ z-index: 5;
+}
+.input-group .btn {
+ position: relative;
+ z-index: 2;
+}
+.input-group .btn:focus {
+ z-index: 5;
+}
+
+.input-group-text {
+ display: flex;
+ align-items: center;
+ padding: 0.375rem 0.75rem;
+ font-size: 1rem;
+ font-weight: 400;
+ line-height: 1.5;
+ color: var(--bs-body-color);
+ text-align: center;
+ white-space: nowrap;
+ background-color: var(--bs-tertiary-bg);
+ border: var(--bs-border-width) solid var(--bs-border-color);
+ border-radius: var(--bs-border-radius);
+}
+
+.input-group-lg > .form-control,
+.input-group-lg > .form-select,
+.input-group-lg > .input-group-text,
+.input-group-lg > .btn {
+ padding: 0.5rem 1rem;
+ font-size: 1.25rem;
+ border-radius: var(--bs-border-radius-lg);
+}
+
+.input-group-sm > .form-control,
+.input-group-sm > .form-select,
+.input-group-sm > .input-group-text,
+.input-group-sm > .btn {
+ padding: 0.25rem 0.5rem;
+ font-size: 0.875rem;
+ border-radius: var(--bs-border-radius-sm);
+}
+
+.input-group-lg > .form-select,
+.input-group-sm > .form-select {
+ padding-right: 3rem;
+}
+
+.input-group:not(.has-validation) > :not(:last-child):not(.dropdown-toggle):not(.dropdown-menu):not(.form-floating),
+.input-group:not(.has-validation) > .dropdown-toggle:nth-last-child(n+3),
+.input-group:not(.has-validation) > .form-floating:not(:last-child) > .form-control,
+.input-group:not(.has-validation) > .form-floating:not(:last-child) > .form-select {
+ border-top-right-radius: 0;
+ border-bottom-right-radius: 0;
+}
+.input-group.has-validation > :nth-last-child(n+3):not(.dropdown-toggle):not(.dropdown-menu):not(.form-floating),
+.input-group.has-validation > .dropdown-toggle:nth-last-child(n+4),
+.input-group.has-validation > .form-floating:nth-last-child(n+3) > .form-control,
+.input-group.has-validation > .form-floating:nth-last-child(n+3) > .form-select {
+ border-top-right-radius: 0;
+ border-bottom-right-radius: 0;
+}
+.input-group > :not(:first-child):not(.dropdown-menu):not(.valid-tooltip):not(.valid-feedback):not(.invalid-tooltip):not(.invalid-feedback) {
+ margin-left: calc(var(--bs-border-width) * -1);
+ border-top-left-radius: 0;
+ border-bottom-left-radius: 0;
+}
+.input-group > .form-floating:not(:first-child) > .form-control,
+.input-group > .form-floating:not(:first-child) > .form-select {
+ border-top-left-radius: 0;
+ border-bottom-left-radius: 0;
+}
+
+.valid-feedback {
+ display: none;
+ width: 100%;
+ margin-top: 0.25rem;
+ font-size: 0.875em;
+ color: var(--bs-form-valid-color);
+}
+
+.valid-tooltip {
+ position: absolute;
+ top: 100%;
+ z-index: 5;
+ display: none;
+ max-width: 100%;
+ padding: 0.25rem 0.5rem;
+ margin-top: 0.1rem;
+ font-size: 0.875rem;
+ color: #fff;
+ background-color: var(--bs-success);
+ border-radius: var(--bs-border-radius);
+}
+
+.was-validated :valid ~ .valid-feedback,
+.was-validated :valid ~ .valid-tooltip,
+.is-valid ~ .valid-feedback,
+.is-valid ~ .valid-tooltip {
+ display: block;
+}
+
+.was-validated .form-control:valid, .form-control.is-valid {
+ border-color: var(--bs-form-valid-border-color);
+ padding-right: calc(1.5em + 0.75rem);
+ background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3e%3cpath fill='%23198754' d='M2.3 6.73.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3e%3c/svg%3e");
+ background-repeat: no-repeat;
+ background-position: right calc(0.375em + 0.1875rem) center;
+ background-size: calc(0.75em + 0.375rem) calc(0.75em + 0.375rem);
+}
+.was-validated .form-control:valid:focus, .form-control.is-valid:focus {
+ border-color: var(--bs-form-valid-border-color);
+ box-shadow: 0 0 0 0.25rem rgba(var(--bs-success-rgb), 0.25);
+}
+
+.was-validated textarea.form-control:valid, textarea.form-control.is-valid {
+ padding-right: calc(1.5em + 0.75rem);
+ background-position: top calc(0.375em + 0.1875rem) right calc(0.375em + 0.1875rem);
+}
+
+.was-validated .form-select:valid, .form-select.is-valid {
+ border-color: var(--bs-form-valid-border-color);
+}
+.was-validated .form-select:valid:not([multiple]):not([size]), .was-validated .form-select:valid:not([multiple])[size="1"], .form-select.is-valid:not([multiple]):not([size]), .form-select.is-valid:not([multiple])[size="1"] {
+ --bs-form-select-bg-icon: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3e%3cpath fill='%23198754' d='M2.3 6.73.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3e%3c/svg%3e");
+ padding-right: 4.125rem;
+ background-position: right 0.75rem center, center right 2.25rem;
+ background-size: 16px 12px, calc(0.75em + 0.375rem) calc(0.75em + 0.375rem);
+}
+.was-validated .form-select:valid:focus, .form-select.is-valid:focus {
+ border-color: var(--bs-form-valid-border-color);
+ box-shadow: 0 0 0 0.25rem rgba(var(--bs-success-rgb), 0.25);
+}
+
+.was-validated .form-control-color:valid, .form-control-color.is-valid {
+ width: calc(3rem + calc(1.5em + 0.75rem));
+}
+
+.was-validated .form-check-input:valid, .form-check-input.is-valid {
+ border-color: var(--bs-form-valid-border-color);
+}
+.was-validated .form-check-input:valid:checked, .form-check-input.is-valid:checked {
+ background-color: var(--bs-form-valid-color);
+}
+.was-validated .form-check-input:valid:focus, .form-check-input.is-valid:focus {
+ box-shadow: 0 0 0 0.25rem rgba(var(--bs-success-rgb), 0.25);
+}
+.was-validated .form-check-input:valid ~ .form-check-label, .form-check-input.is-valid ~ .form-check-label {
+ color: var(--bs-form-valid-color);
+}
+
+.form-check-inline .form-check-input ~ .valid-feedback {
+ margin-left: 0.5em;
+}
+
+.was-validated .input-group > .form-control:not(:focus):valid, .input-group > .form-control:not(:focus).is-valid,
+.was-validated .input-group > .form-select:not(:focus):valid,
+.input-group > .form-select:not(:focus).is-valid,
+.was-validated .input-group > .form-floating:not(:focus-within):valid,
+.input-group > .form-floating:not(:focus-within).is-valid {
+ z-index: 3;
+}
+
+.invalid-feedback {
+ display: none;
+ width: 100%;
+ margin-top: 0.25rem;
+ font-size: 0.875em;
+ color: var(--bs-form-invalid-color);
+}
+
+.invalid-tooltip {
+ position: absolute;
+ top: 100%;
+ z-index: 5;
+ display: none;
+ max-width: 100%;
+ padding: 0.25rem 0.5rem;
+ margin-top: 0.1rem;
+ font-size: 0.875rem;
+ color: #fff;
+ background-color: var(--bs-danger);
+ border-radius: var(--bs-border-radius);
+}
+
+.was-validated :invalid ~ .invalid-feedback,
+.was-validated :invalid ~ .invalid-tooltip,
+.is-invalid ~ .invalid-feedback,
+.is-invalid ~ .invalid-tooltip {
+ display: block;
+}
+
+.was-validated .form-control:invalid, .form-control.is-invalid {
+ border-color: var(--bs-form-invalid-border-color);
+ padding-right: calc(1.5em + 0.75rem);
+ background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12' width='12' height='12' fill='none' stroke='%23dc3545'%3e%3ccircle cx='6' cy='6' r='4.5'/%3e%3cpath stroke-linejoin='round' d='M5.8 3.6h.4L6 6.5z'/%3e%3ccircle cx='6' cy='8.2' r='.6' fill='%23dc3545' stroke='none'/%3e%3c/svg%3e");
+ background-repeat: no-repeat;
+ background-position: right calc(0.375em + 0.1875rem) center;
+ background-size: calc(0.75em + 0.375rem) calc(0.75em + 0.375rem);
+}
+.was-validated .form-control:invalid:focus, .form-control.is-invalid:focus {
+ border-color: var(--bs-form-invalid-border-color);
+ box-shadow: 0 0 0 0.25rem rgba(var(--bs-danger-rgb), 0.25);
+}
+
+.was-validated textarea.form-control:invalid, textarea.form-control.is-invalid {
+ padding-right: calc(1.5em + 0.75rem);
+ background-position: top calc(0.375em + 0.1875rem) right calc(0.375em + 0.1875rem);
+}
+
+.was-validated .form-select:invalid, .form-select.is-invalid {
+ border-color: var(--bs-form-invalid-border-color);
+}
+.was-validated .form-select:invalid:not([multiple]):not([size]), .was-validated .form-select:invalid:not([multiple])[size="1"], .form-select.is-invalid:not([multiple]):not([size]), .form-select.is-invalid:not([multiple])[size="1"] {
+ --bs-form-select-bg-icon: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12' width='12' height='12' fill='none' stroke='%23dc3545'%3e%3ccircle cx='6' cy='6' r='4.5'/%3e%3cpath stroke-linejoin='round' d='M5.8 3.6h.4L6 6.5z'/%3e%3ccircle cx='6' cy='8.2' r='.6' fill='%23dc3545' stroke='none'/%3e%3c/svg%3e");
+ padding-right: 4.125rem;
+ background-position: right 0.75rem center, center right 2.25rem;
+ background-size: 16px 12px, calc(0.75em + 0.375rem) calc(0.75em + 0.375rem);
+}
+.was-validated .form-select:invalid:focus, .form-select.is-invalid:focus {
+ border-color: var(--bs-form-invalid-border-color);
+ box-shadow: 0 0 0 0.25rem rgba(var(--bs-danger-rgb), 0.25);
+}
+
+.was-validated .form-control-color:invalid, .form-control-color.is-invalid {
+ width: calc(3rem + calc(1.5em + 0.75rem));
+}
+
+.was-validated .form-check-input:invalid, .form-check-input.is-invalid {
+ border-color: var(--bs-form-invalid-border-color);
+}
+.was-validated .form-check-input:invalid:checked, .form-check-input.is-invalid:checked {
+ background-color: var(--bs-form-invalid-color);
+}
+.was-validated .form-check-input:invalid:focus, .form-check-input.is-invalid:focus {
+ box-shadow: 0 0 0 0.25rem rgba(var(--bs-danger-rgb), 0.25);
+}
+.was-validated .form-check-input:invalid ~ .form-check-label, .form-check-input.is-invalid ~ .form-check-label {
+ color: var(--bs-form-invalid-color);
+}
+
+.form-check-inline .form-check-input ~ .invalid-feedback {
+ margin-left: 0.5em;
+}
+
+.was-validated .input-group > .form-control:not(:focus):invalid, .input-group > .form-control:not(:focus).is-invalid,
+.was-validated .input-group > .form-select:not(:focus):invalid,
+.input-group > .form-select:not(:focus).is-invalid,
+.was-validated .input-group > .form-floating:not(:focus-within):invalid,
+.input-group > .form-floating:not(:focus-within).is-invalid {
+ z-index: 4;
+}
+
+.btn {
+ --bs-btn-padding-x: 0.75rem;
+ --bs-btn-padding-y: 0.375rem;
+ --bs-btn-font-family: ;
+ --bs-btn-font-size: 1rem;
+ --bs-btn-font-weight: 400;
+ --bs-btn-line-height: 1.5;
+ --bs-btn-color: var(--bs-body-color);
+ --bs-btn-bg: transparent;
+ --bs-btn-border-width: var(--bs-border-width);
+ --bs-btn-border-color: transparent;
+ --bs-btn-border-radius: var(--bs-border-radius);
+ --bs-btn-hover-border-color: transparent;
+ --bs-btn-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.15), 0 1px 1px rgba(0, 0, 0, 0.075);
+ --bs-btn-disabled-opacity: 0.65;
+ --bs-btn-focus-box-shadow: 0 0 0 0.25rem rgba(var(--bs-btn-focus-shadow-rgb), .5);
+ display: inline-block;
+ padding: var(--bs-btn-padding-y) var(--bs-btn-padding-x);
+ font-family: var(--bs-btn-font-family);
+ font-size: var(--bs-btn-font-size);
+ font-weight: var(--bs-btn-font-weight);
+ line-height: var(--bs-btn-line-height);
+ color: var(--bs-btn-color);
+ text-align: center;
+ text-decoration: none;
+ vertical-align: middle;
+ cursor: pointer;
+ -webkit-user-select: none;
+ -moz-user-select: none;
+ user-select: none;
+ border: var(--bs-btn-border-width) solid var(--bs-btn-border-color);
+ border-radius: var(--bs-btn-border-radius);
+ background-color: var(--bs-btn-bg);
+ transition: color 0.15s ease-in-out, background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;
+}
+@media (prefers-reduced-motion: reduce) {
+ .btn {
+ transition: none;
+ }
+}
+.btn:hover {
+ color: var(--bs-btn-hover-color);
+ background-color: var(--bs-btn-hover-bg);
+ border-color: var(--bs-btn-hover-border-color);
+}
+.btn-check + .btn:hover {
+ color: var(--bs-btn-color);
+ background-color: var(--bs-btn-bg);
+ border-color: var(--bs-btn-border-color);
+}
+.btn:focus-visible {
+ color: var(--bs-btn-hover-color);
+ background-color: var(--bs-btn-hover-bg);
+ border-color: var(--bs-btn-hover-border-color);
+ outline: 0;
+ box-shadow: var(--bs-btn-focus-box-shadow);
+}
+.btn-check:focus-visible + .btn {
+ border-color: var(--bs-btn-hover-border-color);
+ outline: 0;
+ box-shadow: var(--bs-btn-focus-box-shadow);
+}
+.btn-check:checked + .btn, :not(.btn-check) + .btn:active, .btn:first-child:active, .btn.active, .btn.show {
+ color: var(--bs-btn-active-color);
+ background-color: var(--bs-btn-active-bg);
+ border-color: var(--bs-btn-active-border-color);
+}
+.btn-check:checked + .btn:focus-visible, :not(.btn-check) + .btn:active:focus-visible, .btn:first-child:active:focus-visible, .btn.active:focus-visible, .btn.show:focus-visible {
+ box-shadow: var(--bs-btn-focus-box-shadow);
+}
+.btn:disabled, .btn.disabled, fieldset:disabled .btn {
+ color: var(--bs-btn-disabled-color);
+ pointer-events: none;
+ background-color: var(--bs-btn-disabled-bg);
+ border-color: var(--bs-btn-disabled-border-color);
+ opacity: var(--bs-btn-disabled-opacity);
+}
+
+.btn-primary {
+ --bs-btn-color: #fff;
+ --bs-btn-bg: #0d6efd;
+ --bs-btn-border-color: #0d6efd;
+ --bs-btn-hover-color: #fff;
+ --bs-btn-hover-bg: #0b5ed7;
+ --bs-btn-hover-border-color: #0a58ca;
+ --bs-btn-focus-shadow-rgb: 49, 132, 253;
+ --bs-btn-active-color: #fff;
+ --bs-btn-active-bg: #0a58ca;
+ --bs-btn-active-border-color: #0a53be;
+ --bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);
+ --bs-btn-disabled-color: #fff;
+ --bs-btn-disabled-bg: #0d6efd;
+ --bs-btn-disabled-border-color: #0d6efd;
+}
+
+.btn-secondary {
+ --bs-btn-color: #fff;
+ --bs-btn-bg: #6c757d;
+ --bs-btn-border-color: #6c757d;
+ --bs-btn-hover-color: #fff;
+ --bs-btn-hover-bg: #5c636a;
+ --bs-btn-hover-border-color: #565e64;
+ --bs-btn-focus-shadow-rgb: 130, 138, 145;
+ --bs-btn-active-color: #fff;
+ --bs-btn-active-bg: #565e64;
+ --bs-btn-active-border-color: #51585e;
+ --bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);
+ --bs-btn-disabled-color: #fff;
+ --bs-btn-disabled-bg: #6c757d;
+ --bs-btn-disabled-border-color: #6c757d;
+}
+
+.btn-success {
+ --bs-btn-color: #fff;
+ --bs-btn-bg: #198754;
+ --bs-btn-border-color: #198754;
+ --bs-btn-hover-color: #fff;
+ --bs-btn-hover-bg: #157347;
+ --bs-btn-hover-border-color: #146c43;
+ --bs-btn-focus-shadow-rgb: 60, 153, 110;
+ --bs-btn-active-color: #fff;
+ --bs-btn-active-bg: #146c43;
+ --bs-btn-active-border-color: #13653f;
+ --bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);
+ --bs-btn-disabled-color: #fff;
+ --bs-btn-disabled-bg: #198754;
+ --bs-btn-disabled-border-color: #198754;
+}
+
+.btn-info {
+ --bs-btn-color: #000;
+ --bs-btn-bg: #0dcaf0;
+ --bs-btn-border-color: #0dcaf0;
+ --bs-btn-hover-color: #000;
+ --bs-btn-hover-bg: #31d2f2;
+ --bs-btn-hover-border-color: #25cff2;
+ --bs-btn-focus-shadow-rgb: 11, 172, 204;
+ --bs-btn-active-color: #000;
+ --bs-btn-active-bg: #3dd5f3;
+ --bs-btn-active-border-color: #25cff2;
+ --bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);
+ --bs-btn-disabled-color: #000;
+ --bs-btn-disabled-bg: #0dcaf0;
+ --bs-btn-disabled-border-color: #0dcaf0;
+}
+
+.btn-warning {
+ --bs-btn-color: #000;
+ --bs-btn-bg: #ffc107;
+ --bs-btn-border-color: #ffc107;
+ --bs-btn-hover-color: #000;
+ --bs-btn-hover-bg: #ffca2c;
+ --bs-btn-hover-border-color: #ffc720;
+ --bs-btn-focus-shadow-rgb: 217, 164, 6;
+ --bs-btn-active-color: #000;
+ --bs-btn-active-bg: #ffcd39;
+ --bs-btn-active-border-color: #ffc720;
+ --bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);
+ --bs-btn-disabled-color: #000;
+ --bs-btn-disabled-bg: #ffc107;
+ --bs-btn-disabled-border-color: #ffc107;
+}
+
+.btn-danger {
+ --bs-btn-color: #fff;
+ --bs-btn-bg: #dc3545;
+ --bs-btn-border-color: #dc3545;
+ --bs-btn-hover-color: #fff;
+ --bs-btn-hover-bg: #bb2d3b;
+ --bs-btn-hover-border-color: #b02a37;
+ --bs-btn-focus-shadow-rgb: 225, 83, 97;
+ --bs-btn-active-color: #fff;
+ --bs-btn-active-bg: #b02a37;
+ --bs-btn-active-border-color: #a52834;
+ --bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);
+ --bs-btn-disabled-color: #fff;
+ --bs-btn-disabled-bg: #dc3545;
+ --bs-btn-disabled-border-color: #dc3545;
+}
+
+.btn-light {
+ --bs-btn-color: #000;
+ --bs-btn-bg: #f8f9fa;
+ --bs-btn-border-color: #f8f9fa;
+ --bs-btn-hover-color: #000;
+ --bs-btn-hover-bg: #d3d4d5;
+ --bs-btn-hover-border-color: #c6c7c8;
+ --bs-btn-focus-shadow-rgb: 211, 212, 213;
+ --bs-btn-active-color: #000;
+ --bs-btn-active-bg: #c6c7c8;
+ --bs-btn-active-border-color: #babbbc;
+ --bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);
+ --bs-btn-disabled-color: #000;
+ --bs-btn-disabled-bg: #f8f9fa;
+ --bs-btn-disabled-border-color: #f8f9fa;
+}
+
+.btn-dark {
+ --bs-btn-color: #fff;
+ --bs-btn-bg: #212529;
+ --bs-btn-border-color: #212529;
+ --bs-btn-hover-color: #fff;
+ --bs-btn-hover-bg: #424649;
+ --bs-btn-hover-border-color: #373b3e;
+ --bs-btn-focus-shadow-rgb: 66, 70, 73;
+ --bs-btn-active-color: #fff;
+ --bs-btn-active-bg: #4d5154;
+ --bs-btn-active-border-color: #373b3e;
+ --bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);
+ --bs-btn-disabled-color: #fff;
+ --bs-btn-disabled-bg: #212529;
+ --bs-btn-disabled-border-color: #212529;
+}
+
+.btn-outline-primary {
+ --bs-btn-color: #0d6efd;
+ --bs-btn-border-color: #0d6efd;
+ --bs-btn-hover-color: #fff;
+ --bs-btn-hover-bg: #0d6efd;
+ --bs-btn-hover-border-color: #0d6efd;
+ --bs-btn-focus-shadow-rgb: 13, 110, 253;
+ --bs-btn-active-color: #fff;
+ --bs-btn-active-bg: #0d6efd;
+ --bs-btn-active-border-color: #0d6efd;
+ --bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);
+ --bs-btn-disabled-color: #0d6efd;
+ --bs-btn-disabled-bg: transparent;
+ --bs-btn-disabled-border-color: #0d6efd;
+ --bs-gradient: none;
+}
+
+.btn-outline-secondary {
+ --bs-btn-color: #6c757d;
+ --bs-btn-border-color: #6c757d;
+ --bs-btn-hover-color: #fff;
+ --bs-btn-hover-bg: #6c757d;
+ --bs-btn-hover-border-color: #6c757d;
+ --bs-btn-focus-shadow-rgb: 108, 117, 125;
+ --bs-btn-active-color: #fff;
+ --bs-btn-active-bg: #6c757d;
+ --bs-btn-active-border-color: #6c757d;
+ --bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);
+ --bs-btn-disabled-color: #6c757d;
+ --bs-btn-disabled-bg: transparent;
+ --bs-btn-disabled-border-color: #6c757d;
+ --bs-gradient: none;
+}
+
+.btn-outline-success {
+ --bs-btn-color: #198754;
+ --bs-btn-border-color: #198754;
+ --bs-btn-hover-color: #fff;
+ --bs-btn-hover-bg: #198754;
+ --bs-btn-hover-border-color: #198754;
+ --bs-btn-focus-shadow-rgb: 25, 135, 84;
+ --bs-btn-active-color: #fff;
+ --bs-btn-active-bg: #198754;
+ --bs-btn-active-border-color: #198754;
+ --bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);
+ --bs-btn-disabled-color: #198754;
+ --bs-btn-disabled-bg: transparent;
+ --bs-btn-disabled-border-color: #198754;
+ --bs-gradient: none;
+}
+
+.btn-outline-info {
+ --bs-btn-color: #0dcaf0;
+ --bs-btn-border-color: #0dcaf0;
+ --bs-btn-hover-color: #000;
+ --bs-btn-hover-bg: #0dcaf0;
+ --bs-btn-hover-border-color: #0dcaf0;
+ --bs-btn-focus-shadow-rgb: 13, 202, 240;
+ --bs-btn-active-color: #000;
+ --bs-btn-active-bg: #0dcaf0;
+ --bs-btn-active-border-color: #0dcaf0;
+ --bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);
+ --bs-btn-disabled-color: #0dcaf0;
+ --bs-btn-disabled-bg: transparent;
+ --bs-btn-disabled-border-color: #0dcaf0;
+ --bs-gradient: none;
+}
+
+.btn-outline-warning {
+ --bs-btn-color: #ffc107;
+ --bs-btn-border-color: #ffc107;
+ --bs-btn-hover-color: #000;
+ --bs-btn-hover-bg: #ffc107;
+ --bs-btn-hover-border-color: #ffc107;
+ --bs-btn-focus-shadow-rgb: 255, 193, 7;
+ --bs-btn-active-color: #000;
+ --bs-btn-active-bg: #ffc107;
+ --bs-btn-active-border-color: #ffc107;
+ --bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);
+ --bs-btn-disabled-color: #ffc107;
+ --bs-btn-disabled-bg: transparent;
+ --bs-btn-disabled-border-color: #ffc107;
+ --bs-gradient: none;
+}
+
+.btn-outline-danger {
+ --bs-btn-color: #dc3545;
+ --bs-btn-border-color: #dc3545;
+ --bs-btn-hover-color: #fff;
+ --bs-btn-hover-bg: #dc3545;
+ --bs-btn-hover-border-color: #dc3545;
+ --bs-btn-focus-shadow-rgb: 220, 53, 69;
+ --bs-btn-active-color: #fff;
+ --bs-btn-active-bg: #dc3545;
+ --bs-btn-active-border-color: #dc3545;
+ --bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);
+ --bs-btn-disabled-color: #dc3545;
+ --bs-btn-disabled-bg: transparent;
+ --bs-btn-disabled-border-color: #dc3545;
+ --bs-gradient: none;
+}
+
+.btn-outline-light {
+ --bs-btn-color: #f8f9fa;
+ --bs-btn-border-color: #f8f9fa;
+ --bs-btn-hover-color: #000;
+ --bs-btn-hover-bg: #f8f9fa;
+ --bs-btn-hover-border-color: #f8f9fa;
+ --bs-btn-focus-shadow-rgb: 248, 249, 250;
+ --bs-btn-active-color: #000;
+ --bs-btn-active-bg: #f8f9fa;
+ --bs-btn-active-border-color: #f8f9fa;
+ --bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);
+ --bs-btn-disabled-color: #f8f9fa;
+ --bs-btn-disabled-bg: transparent;
+ --bs-btn-disabled-border-color: #f8f9fa;
+ --bs-gradient: none;
+}
+
+.btn-outline-dark {
+ --bs-btn-color: #212529;
+ --bs-btn-border-color: #212529;
+ --bs-btn-hover-color: #fff;
+ --bs-btn-hover-bg: #212529;
+ --bs-btn-hover-border-color: #212529;
+ --bs-btn-focus-shadow-rgb: 33, 37, 41;
+ --bs-btn-active-color: #fff;
+ --bs-btn-active-bg: #212529;
+ --bs-btn-active-border-color: #212529;
+ --bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);
+ --bs-btn-disabled-color: #212529;
+ --bs-btn-disabled-bg: transparent;
+ --bs-btn-disabled-border-color: #212529;
+ --bs-gradient: none;
+}
+
+.btn-link {
+ --bs-btn-font-weight: 400;
+ --bs-btn-color: var(--bs-link-color);
+ --bs-btn-bg: transparent;
+ --bs-btn-border-color: transparent;
+ --bs-btn-hover-color: var(--bs-link-hover-color);
+ --bs-btn-hover-border-color: transparent;
+ --bs-btn-active-color: var(--bs-link-hover-color);
+ --bs-btn-active-border-color: transparent;
+ --bs-btn-disabled-color: #6c757d;
+ --bs-btn-disabled-border-color: transparent;
+ --bs-btn-box-shadow: 0 0 0 #000;
+ --bs-btn-focus-shadow-rgb: 49, 132, 253;
+ text-decoration: underline;
+}
+.btn-link:focus-visible {
+ color: var(--bs-btn-color);
+}
+.btn-link:hover {
+ color: var(--bs-btn-hover-color);
+}
+
+.btn-lg, .btn-group-lg > .btn {
+ --bs-btn-padding-y: 0.5rem;
+ --bs-btn-padding-x: 1rem;
+ --bs-btn-font-size: 1.25rem;
+ --bs-btn-border-radius: var(--bs-border-radius-lg);
+}
+
+.btn-sm, .btn-group-sm > .btn {
+ --bs-btn-padding-y: 0.25rem;
+ --bs-btn-padding-x: 0.5rem;
+ --bs-btn-font-size: 0.875rem;
+ --bs-btn-border-radius: var(--bs-border-radius-sm);
+}
+
+.fade {
+ transition: opacity 0.15s linear;
+}
+@media (prefers-reduced-motion: reduce) {
+ .fade {
+ transition: none;
+ }
+}
+.fade:not(.show) {
+ opacity: 0;
+}
+
+.collapse:not(.show) {
+ display: none;
+}
+
+.collapsing {
+ height: 0;
+ overflow: hidden;
+ transition: height 0.35s ease;
+}
+@media (prefers-reduced-motion: reduce) {
+ .collapsing {
+ transition: none;
+ }
+}
+.collapsing.collapse-horizontal {
+ width: 0;
+ height: auto;
+ transition: width 0.35s ease;
+}
+@media (prefers-reduced-motion: reduce) {
+ .collapsing.collapse-horizontal {
+ transition: none;
+ }
+}
+
+.dropup,
+.dropend,
+.dropdown,
+.dropstart,
+.dropup-center,
+.dropdown-center {
+ position: relative;
+}
+
+.dropdown-toggle {
+ white-space: nowrap;
+}
+.dropdown-toggle::after {
+ display: inline-block;
+ margin-left: 0.255em;
+ vertical-align: 0.255em;
+ content: "";
+ border-top: 0.3em solid;
+ border-right: 0.3em solid transparent;
+ border-bottom: 0;
+ border-left: 0.3em solid transparent;
+}
+.dropdown-toggle:empty::after {
+ margin-left: 0;
+}
+
+.dropdown-menu {
+ --bs-dropdown-zindex: 1000;
+ --bs-dropdown-min-width: 10rem;
+ --bs-dropdown-padding-x: 0;
+ --bs-dropdown-padding-y: 0.5rem;
+ --bs-dropdown-spacer: 0.125rem;
+ --bs-dropdown-font-size: 1rem;
+ --bs-dropdown-color: var(--bs-body-color);
+ --bs-dropdown-bg: var(--bs-body-bg);
+ --bs-dropdown-border-color: var(--bs-border-color-translucent);
+ --bs-dropdown-border-radius: var(--bs-border-radius);
+ --bs-dropdown-border-width: var(--bs-border-width);
+ --bs-dropdown-inner-border-radius: calc(var(--bs-border-radius) - var(--bs-border-width));
+ --bs-dropdown-divider-bg: var(--bs-border-color-translucent);
+ --bs-dropdown-divider-margin-y: 0.5rem;
+ --bs-dropdown-box-shadow: 0 0.5rem 1rem rgba(0, 0, 0, 0.15);
+ --bs-dropdown-link-color: var(--bs-body-color);
+ --bs-dropdown-link-hover-color: var(--bs-body-color);
+ --bs-dropdown-link-hover-bg: var(--bs-tertiary-bg);
+ --bs-dropdown-link-active-color: #fff;
+ --bs-dropdown-link-active-bg: #0d6efd;
+ --bs-dropdown-link-disabled-color: var(--bs-tertiary-color);
+ --bs-dropdown-item-padding-x: 1rem;
+ --bs-dropdown-item-padding-y: 0.25rem;
+ --bs-dropdown-header-color: #6c757d;
+ --bs-dropdown-header-padding-x: 1rem;
+ --bs-dropdown-header-padding-y: 0.5rem;
+ position: absolute;
+ z-index: var(--bs-dropdown-zindex);
+ display: none;
+ min-width: var(--bs-dropdown-min-width);
+ padding: var(--bs-dropdown-padding-y) var(--bs-dropdown-padding-x);
+ margin: 0;
+ font-size: var(--bs-dropdown-font-size);
+ color: var(--bs-dropdown-color);
+ text-align: left;
+ list-style: none;
+ background-color: var(--bs-dropdown-bg);
+ background-clip: padding-box;
+ border: var(--bs-dropdown-border-width) solid var(--bs-dropdown-border-color);
+ border-radius: var(--bs-dropdown-border-radius);
+}
+.dropdown-menu[data-bs-popper] {
+ top: 100%;
+ left: 0;
+ margin-top: var(--bs-dropdown-spacer);
+}
+
+.dropdown-menu-start {
+ --bs-position: start;
+}
+.dropdown-menu-start[data-bs-popper] {
+ right: auto;
+ left: 0;
+}
+
+.dropdown-menu-end {
+ --bs-position: end;
+}
+.dropdown-menu-end[data-bs-popper] {
+ right: 0;
+ left: auto;
+}
+
+@media (min-width: 576px) {
+ .dropdown-menu-sm-start {
+ --bs-position: start;
+ }
+ .dropdown-menu-sm-start[data-bs-popper] {
+ right: auto;
+ left: 0;
+ }
+ .dropdown-menu-sm-end {
+ --bs-position: end;
+ }
+ .dropdown-menu-sm-end[data-bs-popper] {
+ right: 0;
+ left: auto;
+ }
+}
+@media (min-width: 768px) {
+ .dropdown-menu-md-start {
+ --bs-position: start;
+ }
+ .dropdown-menu-md-start[data-bs-popper] {
+ right: auto;
+ left: 0;
+ }
+ .dropdown-menu-md-end {
+ --bs-position: end;
+ }
+ .dropdown-menu-md-end[data-bs-popper] {
+ right: 0;
+ left: auto;
+ }
+}
+@media (min-width: 992px) {
+ .dropdown-menu-lg-start {
+ --bs-position: start;
+ }
+ .dropdown-menu-lg-start[data-bs-popper] {
+ right: auto;
+ left: 0;
+ }
+ .dropdown-menu-lg-end {
+ --bs-position: end;
+ }
+ .dropdown-menu-lg-end[data-bs-popper] {
+ right: 0;
+ left: auto;
+ }
+}
+@media (min-width: 1200px) {
+ .dropdown-menu-xl-start {
+ --bs-position: start;
+ }
+ .dropdown-menu-xl-start[data-bs-popper] {
+ right: auto;
+ left: 0;
+ }
+ .dropdown-menu-xl-end {
+ --bs-position: end;
+ }
+ .dropdown-menu-xl-end[data-bs-popper] {
+ right: 0;
+ left: auto;
+ }
+}
+@media (min-width: 1400px) {
+ .dropdown-menu-xxl-start {
+ --bs-position: start;
+ }
+ .dropdown-menu-xxl-start[data-bs-popper] {
+ right: auto;
+ left: 0;
+ }
+ .dropdown-menu-xxl-end {
+ --bs-position: end;
+ }
+ .dropdown-menu-xxl-end[data-bs-popper] {
+ right: 0;
+ left: auto;
+ }
+}
+.dropup .dropdown-menu[data-bs-popper] {
+ top: auto;
+ bottom: 100%;
+ margin-top: 0;
+ margin-bottom: var(--bs-dropdown-spacer);
+}
+.dropup .dropdown-toggle::after {
+ display: inline-block;
+ margin-left: 0.255em;
+ vertical-align: 0.255em;
+ content: "";
+ border-top: 0;
+ border-right: 0.3em solid transparent;
+ border-bottom: 0.3em solid;
+ border-left: 0.3em solid transparent;
+}
+.dropup .dropdown-toggle:empty::after {
+ margin-left: 0;
+}
+
+.dropend .dropdown-menu[data-bs-popper] {
+ top: 0;
+ right: auto;
+ left: 100%;
+ margin-top: 0;
+ margin-left: var(--bs-dropdown-spacer);
+}
+.dropend .dropdown-toggle::after {
+ display: inline-block;
+ margin-left: 0.255em;
+ vertical-align: 0.255em;
+ content: "";
+ border-top: 0.3em solid transparent;
+ border-right: 0;
+ border-bottom: 0.3em solid transparent;
+ border-left: 0.3em solid;
+}
+.dropend .dropdown-toggle:empty::after {
+ margin-left: 0;
+}
+.dropend .dropdown-toggle::after {
+ vertical-align: 0;
+}
+
+.dropstart .dropdown-menu[data-bs-popper] {
+ top: 0;
+ right: 100%;
+ left: auto;
+ margin-top: 0;
+ margin-right: var(--bs-dropdown-spacer);
+}
+.dropstart .dropdown-toggle::after {
+ display: inline-block;
+ margin-left: 0.255em;
+ vertical-align: 0.255em;
+ content: "";
+}
+.dropstart .dropdown-toggle::after {
+ display: none;
+}
+.dropstart .dropdown-toggle::before {
+ display: inline-block;
+ margin-right: 0.255em;
+ vertical-align: 0.255em;
+ content: "";
+ border-top: 0.3em solid transparent;
+ border-right: 0.3em solid;
+ border-bottom: 0.3em solid transparent;
+}
+.dropstart .dropdown-toggle:empty::after {
+ margin-left: 0;
+}
+.dropstart .dropdown-toggle::before {
+ vertical-align: 0;
+}
+
+.dropdown-divider {
+ height: 0;
+ margin: var(--bs-dropdown-divider-margin-y) 0;
+ overflow: hidden;
+ border-top: 1px solid var(--bs-dropdown-divider-bg);
+ opacity: 1;
+}
+
+.dropdown-item {
+ display: block;
+ width: 100%;
+ padding: var(--bs-dropdown-item-padding-y) var(--bs-dropdown-item-padding-x);
+ clear: both;
+ font-weight: 400;
+ color: var(--bs-dropdown-link-color);
+ text-align: inherit;
+ text-decoration: none;
+ white-space: nowrap;
+ background-color: transparent;
+ border: 0;
+ border-radius: var(--bs-dropdown-item-border-radius, 0);
+}
+.dropdown-item:hover, .dropdown-item:focus {
+ color: var(--bs-dropdown-link-hover-color);
+ background-color: var(--bs-dropdown-link-hover-bg);
+}
+.dropdown-item.active, .dropdown-item:active {
+ color: var(--bs-dropdown-link-active-color);
+ text-decoration: none;
+ background-color: var(--bs-dropdown-link-active-bg);
+}
+.dropdown-item.disabled, .dropdown-item:disabled {
+ color: var(--bs-dropdown-link-disabled-color);
+ pointer-events: none;
+ background-color: transparent;
+}
+
+.dropdown-menu.show {
+ display: block;
+}
+
+.dropdown-header {
+ display: block;
+ padding: var(--bs-dropdown-header-padding-y) var(--bs-dropdown-header-padding-x);
+ margin-bottom: 0;
+ font-size: 0.875rem;
+ color: var(--bs-dropdown-header-color);
+ white-space: nowrap;
+}
+
+.dropdown-item-text {
+ display: block;
+ padding: var(--bs-dropdown-item-padding-y) var(--bs-dropdown-item-padding-x);
+ color: var(--bs-dropdown-link-color);
+}
+
+.dropdown-menu-dark {
+ --bs-dropdown-color: #dee2e6;
+ --bs-dropdown-bg: #343a40;
+ --bs-dropdown-border-color: var(--bs-border-color-translucent);
+ --bs-dropdown-box-shadow: ;
+ --bs-dropdown-link-color: #dee2e6;
+ --bs-dropdown-link-hover-color: #fff;
+ --bs-dropdown-divider-bg: var(--bs-border-color-translucent);
+ --bs-dropdown-link-hover-bg: rgba(255, 255, 255, 0.15);
+ --bs-dropdown-link-active-color: #fff;
+ --bs-dropdown-link-active-bg: #0d6efd;
+ --bs-dropdown-link-disabled-color: #adb5bd;
+ --bs-dropdown-header-color: #adb5bd;
+}
+
+.btn-group,
+.btn-group-vertical {
+ position: relative;
+ display: inline-flex;
+ vertical-align: middle;
+}
+.btn-group > .btn,
+.btn-group-vertical > .btn {
+ position: relative;
+ flex: 1 1 auto;
+}
+.btn-group > .btn-check:checked + .btn,
+.btn-group > .btn-check:focus + .btn,
+.btn-group > .btn:hover,
+.btn-group > .btn:focus,
+.btn-group > .btn:active,
+.btn-group > .btn.active,
+.btn-group-vertical > .btn-check:checked + .btn,
+.btn-group-vertical > .btn-check:focus + .btn,
+.btn-group-vertical > .btn:hover,
+.btn-group-vertical > .btn:focus,
+.btn-group-vertical > .btn:active,
+.btn-group-vertical > .btn.active {
+ z-index: 1;
+}
+
+.btn-toolbar {
+ display: flex;
+ flex-wrap: wrap;
+ justify-content: flex-start;
+}
+.btn-toolbar .input-group {
+ width: auto;
+}
+
+.btn-group {
+ border-radius: var(--bs-border-radius);
+}
+.btn-group > :not(.btn-check:first-child) + .btn,
+.btn-group > .btn-group:not(:first-child) {
+ margin-left: calc(var(--bs-border-width) * -1);
+}
+.btn-group > .btn:not(:last-child):not(.dropdown-toggle),
+.btn-group > .btn.dropdown-toggle-split:first-child,
+.btn-group > .btn-group:not(:last-child) > .btn {
+ border-top-right-radius: 0;
+ border-bottom-right-radius: 0;
+}
+.btn-group > .btn:nth-child(n+3),
+.btn-group > :not(.btn-check) + .btn,
+.btn-group > .btn-group:not(:first-child) > .btn {
+ border-top-left-radius: 0;
+ border-bottom-left-radius: 0;
+}
+
+.dropdown-toggle-split {
+ padding-right: 0.5625rem;
+ padding-left: 0.5625rem;
+}
+.dropdown-toggle-split::after, .dropup .dropdown-toggle-split::after, .dropend .dropdown-toggle-split::after {
+ margin-left: 0;
+}
+.dropstart .dropdown-toggle-split::before {
+ margin-right: 0;
+}
+
+.btn-sm + .dropdown-toggle-split, .btn-group-sm > .btn + .dropdown-toggle-split {
+ padding-right: 0.375rem;
+ padding-left: 0.375rem;
+}
+
+.btn-lg + .dropdown-toggle-split, .btn-group-lg > .btn + .dropdown-toggle-split {
+ padding-right: 0.75rem;
+ padding-left: 0.75rem;
+}
+
+.btn-group-vertical {
+ flex-direction: column;
+ align-items: flex-start;
+ justify-content: center;
+}
+.btn-group-vertical > .btn,
+.btn-group-vertical > .btn-group {
+ width: 100%;
+}
+.btn-group-vertical > .btn:not(:first-child),
+.btn-group-vertical > .btn-group:not(:first-child) {
+ margin-top: calc(var(--bs-border-width) * -1);
+}
+.btn-group-vertical > .btn:not(:last-child):not(.dropdown-toggle),
+.btn-group-vertical > .btn-group:not(:last-child) > .btn {
+ border-bottom-right-radius: 0;
+ border-bottom-left-radius: 0;
+}
+.btn-group-vertical > .btn ~ .btn,
+.btn-group-vertical > .btn-group:not(:first-child) > .btn {
+ border-top-left-radius: 0;
+ border-top-right-radius: 0;
+}
+
+.nav {
+ --bs-nav-link-padding-x: 1rem;
+ --bs-nav-link-padding-y: 0.5rem;
+ --bs-nav-link-font-weight: ;
+ --bs-nav-link-color: var(--bs-link-color);
+ --bs-nav-link-hover-color: var(--bs-link-hover-color);
+ --bs-nav-link-disabled-color: var(--bs-secondary-color);
+ display: flex;
+ flex-wrap: wrap;
+ padding-left: 0;
+ margin-bottom: 0;
+ list-style: none;
+}
+
+.nav-link {
+ display: block;
+ padding: var(--bs-nav-link-padding-y) var(--bs-nav-link-padding-x);
+ font-size: var(--bs-nav-link-font-size);
+ font-weight: var(--bs-nav-link-font-weight);
+ color: var(--bs-nav-link-color);
+ text-decoration: none;
+ background: none;
+ border: 0;
+ transition: color 0.15s ease-in-out, background-color 0.15s ease-in-out, border-color 0.15s ease-in-out;
+}
+@media (prefers-reduced-motion: reduce) {
+ .nav-link {
+ transition: none;
+ }
+}
+.nav-link:hover, .nav-link:focus {
+ color: var(--bs-nav-link-hover-color);
+}
+.nav-link:focus-visible {
+ outline: 0;
+ box-shadow: 0 0 0 0.25rem rgba(13, 110, 253, 0.25);
+}
+.nav-link.disabled {
+ color: var(--bs-nav-link-disabled-color);
+ pointer-events: none;
+ cursor: default;
+}
+
+.nav-tabs {
+ --bs-nav-tabs-border-width: var(--bs-border-width);
+ --bs-nav-tabs-border-color: var(--bs-border-color);
+ --bs-nav-tabs-border-radius: var(--bs-border-radius);
+ --bs-nav-tabs-link-hover-border-color: var(--bs-secondary-bg) var(--bs-secondary-bg) var(--bs-border-color);
+ --bs-nav-tabs-link-active-color: var(--bs-emphasis-color);
+ --bs-nav-tabs-link-active-bg: var(--bs-body-bg);
+ --bs-nav-tabs-link-active-border-color: var(--bs-border-color) var(--bs-border-color) var(--bs-body-bg);
+ border-bottom: var(--bs-nav-tabs-border-width) solid var(--bs-nav-tabs-border-color);
+}
+.nav-tabs .nav-link {
+ margin-bottom: calc(-1 * var(--bs-nav-tabs-border-width));
+ border: var(--bs-nav-tabs-border-width) solid transparent;
+ border-top-left-radius: var(--bs-nav-tabs-border-radius);
+ border-top-right-radius: var(--bs-nav-tabs-border-radius);
+}
+.nav-tabs .nav-link:hover, .nav-tabs .nav-link:focus {
+ isolation: isolate;
+ border-color: var(--bs-nav-tabs-link-hover-border-color);
+}
+.nav-tabs .nav-link.disabled, .nav-tabs .nav-link:disabled {
+ color: var(--bs-nav-link-disabled-color);
+ background-color: transparent;
+ border-color: transparent;
+}
+.nav-tabs .nav-link.active,
+.nav-tabs .nav-item.show .nav-link {
+ color: var(--bs-nav-tabs-link-active-color);
+ background-color: var(--bs-nav-tabs-link-active-bg);
+ border-color: var(--bs-nav-tabs-link-active-border-color);
+}
+.nav-tabs .dropdown-menu {
+ margin-top: calc(-1 * var(--bs-nav-tabs-border-width));
+ border-top-left-radius: 0;
+ border-top-right-radius: 0;
+}
+
+.nav-pills {
+ --bs-nav-pills-border-radius: var(--bs-border-radius);
+ --bs-nav-pills-link-active-color: #fff;
+ --bs-nav-pills-link-active-bg: #0d6efd;
+}
+.nav-pills .nav-link {
+ border-radius: var(--bs-nav-pills-border-radius);
+}
+.nav-pills .nav-link:disabled {
+ color: var(--bs-nav-link-disabled-color);
+ background-color: transparent;
+ border-color: transparent;
+}
+.nav-pills .nav-link.active,
+.nav-pills .show > .nav-link {
+ color: var(--bs-nav-pills-link-active-color);
+ background-color: var(--bs-nav-pills-link-active-bg);
+}
+
+.nav-underline {
+ --bs-nav-underline-gap: 1rem;
+ --bs-nav-underline-border-width: 0.125rem;
+ --bs-nav-underline-link-active-color: var(--bs-emphasis-color);
+ gap: var(--bs-nav-underline-gap);
+}
+.nav-underline .nav-link {
+ padding-right: 0;
+ padding-left: 0;
+ border-bottom: var(--bs-nav-underline-border-width) solid transparent;
+}
+.nav-underline .nav-link:hover, .nav-underline .nav-link:focus {
+ border-bottom-color: currentcolor;
+}
+.nav-underline .nav-link.active,
+.nav-underline .show > .nav-link {
+ font-weight: 700;
+ color: var(--bs-nav-underline-link-active-color);
+ border-bottom-color: currentcolor;
+}
+
+.nav-fill > .nav-link,
+.nav-fill .nav-item {
+ flex: 1 1 auto;
+ text-align: center;
+}
+
+.nav-justified > .nav-link,
+.nav-justified .nav-item {
+ flex-basis: 0;
+ flex-grow: 1;
+ text-align: center;
+}
+
+.nav-fill .nav-item .nav-link,
+.nav-justified .nav-item .nav-link {
+ width: 100%;
+}
+
+.tab-content > .tab-pane {
+ display: none;
+}
+.tab-content > .active {
+ display: block;
+}
+
+.navbar {
+ --bs-navbar-padding-x: 0;
+ --bs-navbar-padding-y: 0.5rem;
+ --bs-navbar-color: rgba(var(--bs-emphasis-color-rgb), 0.65);
+ --bs-navbar-hover-color: rgba(var(--bs-emphasis-color-rgb), 0.8);
+ --bs-navbar-disabled-color: rgba(var(--bs-emphasis-color-rgb), 0.3);
+ --bs-navbar-active-color: rgba(var(--bs-emphasis-color-rgb), 1);
+ --bs-navbar-brand-padding-y: 0.3125rem;
+ --bs-navbar-brand-margin-end: 1rem;
+ --bs-navbar-brand-font-size: 1.25rem;
+ --bs-navbar-brand-color: rgba(var(--bs-emphasis-color-rgb), 1);
+ --bs-navbar-brand-hover-color: rgba(var(--bs-emphasis-color-rgb), 1);
+ --bs-navbar-nav-link-padding-x: 0.5rem;
+ --bs-navbar-toggler-padding-y: 0.25rem;
+ --bs-navbar-toggler-padding-x: 0.75rem;
+ --bs-navbar-toggler-font-size: 1.25rem;
+ --bs-navbar-toggler-icon-bg: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30'%3e%3cpath stroke='rgba%2833, 37, 41, 0.75%29' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e");
+ --bs-navbar-toggler-border-color: rgba(var(--bs-emphasis-color-rgb), 0.15);
+ --bs-navbar-toggler-border-radius: var(--bs-border-radius);
+ --bs-navbar-toggler-focus-width: 0.25rem;
+ --bs-navbar-toggler-transition: box-shadow 0.15s ease-in-out;
+ position: relative;
+ display: flex;
+ flex-wrap: wrap;
+ align-items: center;
+ justify-content: space-between;
+ padding: var(--bs-navbar-padding-y) var(--bs-navbar-padding-x);
+}
+.navbar > .container,
+.navbar > .container-fluid,
+.navbar > .container-sm,
+.navbar > .container-md,
+.navbar > .container-lg,
+.navbar > .container-xl,
+.navbar > .container-xxl {
+ display: flex;
+ flex-wrap: inherit;
+ align-items: center;
+ justify-content: space-between;
+}
+.navbar-brand {
+ padding-top: var(--bs-navbar-brand-padding-y);
+ padding-bottom: var(--bs-navbar-brand-padding-y);
+ margin-right: var(--bs-navbar-brand-margin-end);
+ font-size: var(--bs-navbar-brand-font-size);
+ color: var(--bs-navbar-brand-color);
+ text-decoration: none;
+ white-space: nowrap;
+}
+.navbar-brand:hover, .navbar-brand:focus {
+ color: var(--bs-navbar-brand-hover-color);
+}
+
+.navbar-nav {
+ --bs-nav-link-padding-x: 0;
+ --bs-nav-link-padding-y: 0.5rem;
+ --bs-nav-link-font-weight: ;
+ --bs-nav-link-color: var(--bs-navbar-color);
+ --bs-nav-link-hover-color: var(--bs-navbar-hover-color);
+ --bs-nav-link-disabled-color: var(--bs-navbar-disabled-color);
+ display: flex;
+ flex-direction: column;
+ padding-left: 0;
+ margin-bottom: 0;
+ list-style: none;
+}
+.navbar-nav .nav-link.active, .navbar-nav .nav-link.show {
+ color: var(--bs-navbar-active-color);
+}
+.navbar-nav .dropdown-menu {
+ position: static;
+}
+
+.navbar-text {
+ padding-top: 0.5rem;
+ padding-bottom: 0.5rem;
+ color: var(--bs-navbar-color);
+}
+.navbar-text a,
+.navbar-text a:hover,
+.navbar-text a:focus {
+ color: var(--bs-navbar-active-color);
+}
+
+.navbar-collapse {
+ flex-basis: 100%;
+ flex-grow: 1;
+ align-items: center;
+}
+
+.navbar-toggler {
+ padding: var(--bs-navbar-toggler-padding-y) var(--bs-navbar-toggler-padding-x);
+ font-size: var(--bs-navbar-toggler-font-size);
+ line-height: 1;
+ color: var(--bs-navbar-color);
+ background-color: transparent;
+ border: var(--bs-border-width) solid var(--bs-navbar-toggler-border-color);
+ border-radius: var(--bs-navbar-toggler-border-radius);
+ transition: var(--bs-navbar-toggler-transition);
+}
+@media (prefers-reduced-motion: reduce) {
+ .navbar-toggler {
+ transition: none;
+ }
+}
+.navbar-toggler:hover {
+ text-decoration: none;
+}
+.navbar-toggler:focus {
+ text-decoration: none;
+ outline: 0;
+ box-shadow: 0 0 0 var(--bs-navbar-toggler-focus-width);
+}
+
+.navbar-toggler-icon {
+ display: inline-block;
+ width: 1.5em;
+ height: 1.5em;
+ vertical-align: middle;
+ background-image: var(--bs-navbar-toggler-icon-bg);
+ background-repeat: no-repeat;
+ background-position: center;
+ background-size: 100%;
+}
+
+.navbar-nav-scroll {
+ max-height: var(--bs-scroll-height, 75vh);
+ overflow-y: auto;
+}
+
+@media (min-width: 576px) {
+ .navbar-expand-sm {
+ flex-wrap: nowrap;
+ justify-content: flex-start;
+ }
+ .navbar-expand-sm .navbar-nav {
+ flex-direction: row;
+ }
+ .navbar-expand-sm .navbar-nav .dropdown-menu {
+ position: absolute;
+ }
+ .navbar-expand-sm .navbar-nav .nav-link {
+ padding-right: var(--bs-navbar-nav-link-padding-x);
+ padding-left: var(--bs-navbar-nav-link-padding-x);
+ }
+ .navbar-expand-sm .navbar-nav-scroll {
+ overflow: visible;
+ }
+ .navbar-expand-sm .navbar-collapse {
+ display: flex !important;
+ flex-basis: auto;
+ }
+ .navbar-expand-sm .navbar-toggler {
+ display: none;
+ }
+ .navbar-expand-sm .offcanvas {
+ position: static;
+ z-index: auto;
+ flex-grow: 1;
+ width: auto !important;
+ height: auto !important;
+ visibility: visible !important;
+ background-color: transparent !important;
+ border: 0 !important;
+ transform: none !important;
+ transition: none;
+ }
+ .navbar-expand-sm .offcanvas .offcanvas-header {
+ display: none;
+ }
+ .navbar-expand-sm .offcanvas .offcanvas-body {
+ display: flex;
+ flex-grow: 0;
+ padding: 0;
+ overflow-y: visible;
+ }
+}
+@media (min-width: 768px) {
+ .navbar-expand-md {
+ flex-wrap: nowrap;
+ justify-content: flex-start;
+ }
+ .navbar-expand-md .navbar-nav {
+ flex-direction: row;
+ }
+ .navbar-expand-md .navbar-nav .dropdown-menu {
+ position: absolute;
+ }
+ .navbar-expand-md .navbar-nav .nav-link {
+ padding-right: var(--bs-navbar-nav-link-padding-x);
+ padding-left: var(--bs-navbar-nav-link-padding-x);
+ }
+ .navbar-expand-md .navbar-nav-scroll {
+ overflow: visible;
+ }
+ .navbar-expand-md .navbar-collapse {
+ display: flex !important;
+ flex-basis: auto;
+ }
+ .navbar-expand-md .navbar-toggler {
+ display: none;
+ }
+ .navbar-expand-md .offcanvas {
+ position: static;
+ z-index: auto;
+ flex-grow: 1;
+ width: auto !important;
+ height: auto !important;
+ visibility: visible !important;
+ background-color: transparent !important;
+ border: 0 !important;
+ transform: none !important;
+ transition: none;
+ }
+ .navbar-expand-md .offcanvas .offcanvas-header {
+ display: none;
+ }
+ .navbar-expand-md .offcanvas .offcanvas-body {
+ display: flex;
+ flex-grow: 0;
+ padding: 0;
+ overflow-y: visible;
+ }
+}
+@media (min-width: 992px) {
+ .navbar-expand-lg {
+ flex-wrap: nowrap;
+ justify-content: flex-start;
+ }
+ .navbar-expand-lg .navbar-nav {
+ flex-direction: row;
+ }
+ .navbar-expand-lg .navbar-nav .dropdown-menu {
+ position: absolute;
+ }
+ .navbar-expand-lg .navbar-nav .nav-link {
+ padding-right: var(--bs-navbar-nav-link-padding-x);
+ padding-left: var(--bs-navbar-nav-link-padding-x);
+ }
+ .navbar-expand-lg .navbar-nav-scroll {
+ overflow: visible;
+ }
+ .navbar-expand-lg .navbar-collapse {
+ display: flex !important;
+ flex-basis: auto;
+ }
+ .navbar-expand-lg .navbar-toggler {
+ display: none;
+ }
+ .navbar-expand-lg .offcanvas {
+ position: static;
+ z-index: auto;
+ flex-grow: 1;
+ width: auto !important;
+ height: auto !important;
+ visibility: visible !important;
+ background-color: transparent !important;
+ border: 0 !important;
+ transform: none !important;
+ transition: none;
+ }
+ .navbar-expand-lg .offcanvas .offcanvas-header {
+ display: none;
+ }
+ .navbar-expand-lg .offcanvas .offcanvas-body {
+ display: flex;
+ flex-grow: 0;
+ padding: 0;
+ overflow-y: visible;
+ }
+}
+@media (min-width: 1200px) {
+ .navbar-expand-xl {
+ flex-wrap: nowrap;
+ justify-content: flex-start;
+ }
+ .navbar-expand-xl .navbar-nav {
+ flex-direction: row;
+ }
+ .navbar-expand-xl .navbar-nav .dropdown-menu {
+ position: absolute;
+ }
+ .navbar-expand-xl .navbar-nav .nav-link {
+ padding-right: var(--bs-navbar-nav-link-padding-x);
+ padding-left: var(--bs-navbar-nav-link-padding-x);
+ }
+ .navbar-expand-xl .navbar-nav-scroll {
+ overflow: visible;
+ }
+ .navbar-expand-xl .navbar-collapse {
+ display: flex !important;
+ flex-basis: auto;
+ }
+ .navbar-expand-xl .navbar-toggler {
+ display: none;
+ }
+ .navbar-expand-xl .offcanvas {
+ position: static;
+ z-index: auto;
+ flex-grow: 1;
+ width: auto !important;
+ height: auto !important;
+ visibility: visible !important;
+ background-color: transparent !important;
+ border: 0 !important;
+ transform: none !important;
+ transition: none;
+ }
+ .navbar-expand-xl .offcanvas .offcanvas-header {
+ display: none;
+ }
+ .navbar-expand-xl .offcanvas .offcanvas-body {
+ display: flex;
+ flex-grow: 0;
+ padding: 0;
+ overflow-y: visible;
+ }
+}
+@media (min-width: 1400px) {
+ .navbar-expand-xxl {
+ flex-wrap: nowrap;
+ justify-content: flex-start;
+ }
+ .navbar-expand-xxl .navbar-nav {
+ flex-direction: row;
+ }
+ .navbar-expand-xxl .navbar-nav .dropdown-menu {
+ position: absolute;
+ }
+ .navbar-expand-xxl .navbar-nav .nav-link {
+ padding-right: var(--bs-navbar-nav-link-padding-x);
+ padding-left: var(--bs-navbar-nav-link-padding-x);
+ }
+ .navbar-expand-xxl .navbar-nav-scroll {
+ overflow: visible;
+ }
+ .navbar-expand-xxl .navbar-collapse {
+ display: flex !important;
+ flex-basis: auto;
+ }
+ .navbar-expand-xxl .navbar-toggler {
+ display: none;
+ }
+ .navbar-expand-xxl .offcanvas {
+ position: static;
+ z-index: auto;
+ flex-grow: 1;
+ width: auto !important;
+ height: auto !important;
+ visibility: visible !important;
+ background-color: transparent !important;
+ border: 0 !important;
+ transform: none !important;
+ transition: none;
+ }
+ .navbar-expand-xxl .offcanvas .offcanvas-header {
+ display: none;
+ }
+ .navbar-expand-xxl .offcanvas .offcanvas-body {
+ display: flex;
+ flex-grow: 0;
+ padding: 0;
+ overflow-y: visible;
+ }
+}
+.navbar-expand {
+ flex-wrap: nowrap;
+ justify-content: flex-start;
+}
+.navbar-expand .navbar-nav {
+ flex-direction: row;
+}
+.navbar-expand .navbar-nav .dropdown-menu {
+ position: absolute;
+}
+.navbar-expand .navbar-nav .nav-link {
+ padding-right: var(--bs-navbar-nav-link-padding-x);
+ padding-left: var(--bs-navbar-nav-link-padding-x);
+}
+.navbar-expand .navbar-nav-scroll {
+ overflow: visible;
+}
+.navbar-expand .navbar-collapse {
+ display: flex !important;
+ flex-basis: auto;
+}
+.navbar-expand .navbar-toggler {
+ display: none;
+}
+.navbar-expand .offcanvas {
+ position: static;
+ z-index: auto;
+ flex-grow: 1;
+ width: auto !important;
+ height: auto !important;
+ visibility: visible !important;
+ background-color: transparent !important;
+ border: 0 !important;
+ transform: none !important;
+ transition: none;
+}
+.navbar-expand .offcanvas .offcanvas-header {
+ display: none;
+}
+.navbar-expand .offcanvas .offcanvas-body {
+ display: flex;
+ flex-grow: 0;
+ padding: 0;
+ overflow-y: visible;
+}
+
+.navbar-dark,
+.navbar[data-bs-theme=dark] {
+ --bs-navbar-color: rgba(255, 255, 255, 0.55);
+ --bs-navbar-hover-color: rgba(255, 255, 255, 0.75);
+ --bs-navbar-disabled-color: rgba(255, 255, 255, 0.25);
+ --bs-navbar-active-color: #fff;
+ --bs-navbar-brand-color: #fff;
+ --bs-navbar-brand-hover-color: #fff;
+ --bs-navbar-toggler-border-color: rgba(255, 255, 255, 0.1);
+ --bs-navbar-toggler-icon-bg: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30'%3e%3cpath stroke='rgba%28255, 255, 255, 0.55%29' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e");
+}
+
+[data-bs-theme=dark] .navbar-toggler-icon {
+ --bs-navbar-toggler-icon-bg: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30'%3e%3cpath stroke='rgba%28255, 255, 255, 0.55%29' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e");
+}
+
+.card {
+ --bs-card-spacer-y: 1rem;
+ --bs-card-spacer-x: 1rem;
+ --bs-card-title-spacer-y: 0.5rem;
+ --bs-card-title-color: ;
+ --bs-card-subtitle-color: ;
+ --bs-card-border-width: var(--bs-border-width);
+ --bs-card-border-color: var(--bs-border-color-translucent);
+ --bs-card-border-radius: var(--bs-border-radius);
+ --bs-card-box-shadow: ;
+ --bs-card-inner-border-radius: calc(var(--bs-border-radius) - (var(--bs-border-width)));
+ --bs-card-cap-padding-y: 0.5rem;
+ --bs-card-cap-padding-x: 1rem;
+ --bs-card-cap-bg: rgba(var(--bs-body-color-rgb), 0.03);
+ --bs-card-cap-color: ;
+ --bs-card-height: ;
+ --bs-card-color: ;
+ --bs-card-bg: var(--bs-body-bg);
+ --bs-card-img-overlay-padding: 1rem;
+ --bs-card-group-margin: 0.75rem;
+ position: relative;
+ display: flex;
+ flex-direction: column;
+ min-width: 0;
+ height: var(--bs-card-height);
+ color: var(--bs-body-color);
+ word-wrap: break-word;
+ background-color: var(--bs-card-bg);
+ background-clip: border-box;
+ border: var(--bs-card-border-width) solid var(--bs-card-border-color);
+ border-radius: var(--bs-card-border-radius);
+}
+.card > hr {
+ margin-right: 0;
+ margin-left: 0;
+}
+.card > .list-group {
+ border-top: inherit;
+ border-bottom: inherit;
+}
+.card > .list-group:first-child {
+ border-top-width: 0;
+ border-top-left-radius: var(--bs-card-inner-border-radius);
+ border-top-right-radius: var(--bs-card-inner-border-radius);
+}
+.card > .list-group:last-child {
+ border-bottom-width: 0;
+ border-bottom-right-radius: var(--bs-card-inner-border-radius);
+ border-bottom-left-radius: var(--bs-card-inner-border-radius);
+}
+.card > .card-header + .list-group,
+.card > .list-group + .card-footer {
+ border-top: 0;
+}
+
+.card-body {
+ flex: 1 1 auto;
+ padding: var(--bs-card-spacer-y) var(--bs-card-spacer-x);
+ color: var(--bs-card-color);
+}
+
+.card-title {
+ margin-bottom: var(--bs-card-title-spacer-y);
+ color: var(--bs-card-title-color);
+}
+
+.card-subtitle {
+ margin-top: calc(-0.5 * var(--bs-card-title-spacer-y));
+ margin-bottom: 0;
+ color: var(--bs-card-subtitle-color);
+}
+
+.card-text:last-child {
+ margin-bottom: 0;
+}
+
+.card-link + .card-link {
+ margin-left: var(--bs-card-spacer-x);
+}
+
+.card-header {
+ padding: var(--bs-card-cap-padding-y) var(--bs-card-cap-padding-x);
+ margin-bottom: 0;
+ color: var(--bs-card-cap-color);
+ background-color: var(--bs-card-cap-bg);
+ border-bottom: var(--bs-card-border-width) solid var(--bs-card-border-color);
+}
+.card-header:first-child {
+ border-radius: var(--bs-card-inner-border-radius) var(--bs-card-inner-border-radius) 0 0;
+}
+
+.card-footer {
+ padding: var(--bs-card-cap-padding-y) var(--bs-card-cap-padding-x);
+ color: var(--bs-card-cap-color);
+ background-color: var(--bs-card-cap-bg);
+ border-top: var(--bs-card-border-width) solid var(--bs-card-border-color);
+}
+.card-footer:last-child {
+ border-radius: 0 0 var(--bs-card-inner-border-radius) var(--bs-card-inner-border-radius);
+}
+
+.card-header-tabs {
+ margin-right: calc(-0.5 * var(--bs-card-cap-padding-x));
+ margin-bottom: calc(-1 * var(--bs-card-cap-padding-y));
+ margin-left: calc(-0.5 * var(--bs-card-cap-padding-x));
+ border-bottom: 0;
+}
+.card-header-tabs .nav-link.active {
+ background-color: var(--bs-card-bg);
+ border-bottom-color: var(--bs-card-bg);
+}
+
+.card-header-pills {
+ margin-right: calc(-0.5 * var(--bs-card-cap-padding-x));
+ margin-left: calc(-0.5 * var(--bs-card-cap-padding-x));
+}
+
+.card-img-overlay {
+ position: absolute;
+ top: 0;
+ right: 0;
+ bottom: 0;
+ left: 0;
+ padding: var(--bs-card-img-overlay-padding);
+ border-radius: var(--bs-card-inner-border-radius);
+}
+
+.card-img,
+.card-img-top,
+.card-img-bottom {
+ width: 100%;
+}
+
+.card-img,
+.card-img-top {
+ border-top-left-radius: var(--bs-card-inner-border-radius);
+ border-top-right-radius: var(--bs-card-inner-border-radius);
+}
+
+.card-img,
+.card-img-bottom {
+ border-bottom-right-radius: var(--bs-card-inner-border-radius);
+ border-bottom-left-radius: var(--bs-card-inner-border-radius);
+}
+
+.card-group > .card {
+ margin-bottom: var(--bs-card-group-margin);
+}
+@media (min-width: 576px) {
+ .card-group {
+ display: flex;
+ flex-flow: row wrap;
+ }
+ .card-group > .card {
+ flex: 1 0 0%;
+ margin-bottom: 0;
+ }
+ .card-group > .card + .card {
+ margin-left: 0;
+ border-left: 0;
+ }
+ .card-group > .card:not(:last-child) {
+ border-top-right-radius: 0;
+ border-bottom-right-radius: 0;
+ }
+ .card-group > .card:not(:last-child) .card-img-top,
+ .card-group > .card:not(:last-child) .card-header {
+ border-top-right-radius: 0;
+ }
+ .card-group > .card:not(:last-child) .card-img-bottom,
+ .card-group > .card:not(:last-child) .card-footer {
+ border-bottom-right-radius: 0;
+ }
+ .card-group > .card:not(:first-child) {
+ border-top-left-radius: 0;
+ border-bottom-left-radius: 0;
+ }
+ .card-group > .card:not(:first-child) .card-img-top,
+ .card-group > .card:not(:first-child) .card-header {
+ border-top-left-radius: 0;
+ }
+ .card-group > .card:not(:first-child) .card-img-bottom,
+ .card-group > .card:not(:first-child) .card-footer {
+ border-bottom-left-radius: 0;
+ }
+}
+
+.accordion {
+ --bs-accordion-color: var(--bs-body-color);
+ --bs-accordion-bg: var(--bs-body-bg);
+ --bs-accordion-transition: color 0.15s ease-in-out, background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out, border-radius 0.15s ease;
+ --bs-accordion-border-color: var(--bs-border-color);
+ --bs-accordion-border-width: var(--bs-border-width);
+ --bs-accordion-border-radius: var(--bs-border-radius);
+ --bs-accordion-inner-border-radius: calc(var(--bs-border-radius) - (var(--bs-border-width)));
+ --bs-accordion-btn-padding-x: 1.25rem;
+ --bs-accordion-btn-padding-y: 1rem;
+ --bs-accordion-btn-color: var(--bs-body-color);
+ --bs-accordion-btn-bg: var(--bs-accordion-bg);
+ --bs-accordion-btn-icon: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23212529'%3e%3cpath fill-rule='evenodd' d='M1.646 4.646a.5.5 0 0 1 .708 0L8 10.293l5.646-5.647a.5.5 0 0 1 .708.708l-6 6a.5.5 0 0 1-.708 0l-6-6a.5.5 0 0 1 0-.708z'/%3e%3c/svg%3e");
+ --bs-accordion-btn-icon-width: 1.25rem;
+ --bs-accordion-btn-icon-transform: rotate(-180deg);
+ --bs-accordion-btn-icon-transition: transform 0.2s ease-in-out;
+ --bs-accordion-btn-active-icon: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23052c65'%3e%3cpath fill-rule='evenodd' d='M1.646 4.646a.5.5 0 0 1 .708 0L8 10.293l5.646-5.647a.5.5 0 0 1 .708.708l-6 6a.5.5 0 0 1-.708 0l-6-6a.5.5 0 0 1 0-.708z'/%3e%3c/svg%3e");
+ --bs-accordion-btn-focus-border-color: #86b7fe;
+ --bs-accordion-btn-focus-box-shadow: 0 0 0 0.25rem rgba(13, 110, 253, 0.25);
+ --bs-accordion-body-padding-x: 1.25rem;
+ --bs-accordion-body-padding-y: 1rem;
+ --bs-accordion-active-color: var(--bs-primary-text-emphasis);
+ --bs-accordion-active-bg: var(--bs-primary-bg-subtle);
+}
+
+.accordion-button {
+ position: relative;
+ display: flex;
+ align-items: center;
+ width: 100%;
+ padding: var(--bs-accordion-btn-padding-y) var(--bs-accordion-btn-padding-x);
+ font-size: 1rem;
+ color: var(--bs-accordion-btn-color);
+ text-align: left;
+ background-color: var(--bs-accordion-btn-bg);
+ border: 0;
+ border-radius: 0;
+ overflow-anchor: none;
+ transition: var(--bs-accordion-transition);
+}
+@media (prefers-reduced-motion: reduce) {
+ .accordion-button {
+ transition: none;
+ }
+}
+.accordion-button:not(.collapsed) {
+ color: var(--bs-accordion-active-color);
+ background-color: var(--bs-accordion-active-bg);
+ box-shadow: inset 0 calc(-1 * var(--bs-accordion-border-width)) 0 var(--bs-accordion-border-color);
+}
+.accordion-button:not(.collapsed)::after {
+ background-image: var(--bs-accordion-btn-active-icon);
+ transform: var(--bs-accordion-btn-icon-transform);
+}
+.accordion-button::after {
+ flex-shrink: 0;
+ width: var(--bs-accordion-btn-icon-width);
+ height: var(--bs-accordion-btn-icon-width);
+ margin-left: auto;
+ content: "";
+ background-image: var(--bs-accordion-btn-icon);
+ background-repeat: no-repeat;
+ background-size: var(--bs-accordion-btn-icon-width);
+ transition: var(--bs-accordion-btn-icon-transition);
+}
+@media (prefers-reduced-motion: reduce) {
+ .accordion-button::after {
+ transition: none;
+ }
+}
+.accordion-button:hover {
+ z-index: 2;
+}
+.accordion-button:focus {
+ z-index: 3;
+ border-color: var(--bs-accordion-btn-focus-border-color);
+ outline: 0;
+ box-shadow: var(--bs-accordion-btn-focus-box-shadow);
+}
+
+.accordion-header {
+ margin-bottom: 0;
+}
+
+.accordion-item {
+ color: var(--bs-accordion-color);
+ background-color: var(--bs-accordion-bg);
+ border: var(--bs-accordion-border-width) solid var(--bs-accordion-border-color);
+}
+.accordion-item:first-of-type {
+ border-top-left-radius: var(--bs-accordion-border-radius);
+ border-top-right-radius: var(--bs-accordion-border-radius);
+}
+.accordion-item:first-of-type .accordion-button {
+ border-top-left-radius: var(--bs-accordion-inner-border-radius);
+ border-top-right-radius: var(--bs-accordion-inner-border-radius);
+}
+.accordion-item:not(:first-of-type) {
+ border-top: 0;
+}
+.accordion-item:last-of-type {
+ border-bottom-right-radius: var(--bs-accordion-border-radius);
+ border-bottom-left-radius: var(--bs-accordion-border-radius);
+}
+.accordion-item:last-of-type .accordion-button.collapsed {
+ border-bottom-right-radius: var(--bs-accordion-inner-border-radius);
+ border-bottom-left-radius: var(--bs-accordion-inner-border-radius);
+}
+.accordion-item:last-of-type .accordion-collapse {
+ border-bottom-right-radius: var(--bs-accordion-border-radius);
+ border-bottom-left-radius: var(--bs-accordion-border-radius);
+}
+
+.accordion-body {
+ padding: var(--bs-accordion-body-padding-y) var(--bs-accordion-body-padding-x);
+}
+
+.accordion-flush .accordion-collapse {
+ border-width: 0;
+}
+.accordion-flush .accordion-item {
+ border-right: 0;
+ border-left: 0;
+ border-radius: 0;
+}
+.accordion-flush .accordion-item:first-child {
+ border-top: 0;
+}
+.accordion-flush .accordion-item:last-child {
+ border-bottom: 0;
+}
+.accordion-flush .accordion-item .accordion-button, .accordion-flush .accordion-item .accordion-button.collapsed {
+ border-radius: 0;
+}
+
+[data-bs-theme=dark] .accordion-button::after {
+ --bs-accordion-btn-icon: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%236ea8fe'%3e%3cpath fill-rule='evenodd' d='M1.646 4.646a.5.5 0 0 1 .708 0L8 10.293l5.646-5.647a.5.5 0 0 1 .708.708l-6 6a.5.5 0 0 1-.708 0l-6-6a.5.5 0 0 1 0-.708z'/%3e%3c/svg%3e");
+ --bs-accordion-btn-active-icon: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%236ea8fe'%3e%3cpath fill-rule='evenodd' d='M1.646 4.646a.5.5 0 0 1 .708 0L8 10.293l5.646-5.647a.5.5 0 0 1 .708.708l-6 6a.5.5 0 0 1-.708 0l-6-6a.5.5 0 0 1 0-.708z'/%3e%3c/svg%3e");
+}
+
+.breadcrumb {
+ --bs-breadcrumb-padding-x: 0;
+ --bs-breadcrumb-padding-y: 0;
+ --bs-breadcrumb-margin-bottom: 1rem;
+ --bs-breadcrumb-bg: ;
+ --bs-breadcrumb-border-radius: ;
+ --bs-breadcrumb-divider-color: var(--bs-secondary-color);
+ --bs-breadcrumb-item-padding-x: 0.5rem;
+ --bs-breadcrumb-item-active-color: var(--bs-secondary-color);
+ display: flex;
+ flex-wrap: wrap;
+ padding: var(--bs-breadcrumb-padding-y) var(--bs-breadcrumb-padding-x);
+ margin-bottom: var(--bs-breadcrumb-margin-bottom);
+ font-size: var(--bs-breadcrumb-font-size);
+ list-style: none;
+ background-color: var(--bs-breadcrumb-bg);
+ border-radius: var(--bs-breadcrumb-border-radius);
+}
+
+.breadcrumb-item + .breadcrumb-item {
+ padding-left: var(--bs-breadcrumb-item-padding-x);
+}
+.breadcrumb-item + .breadcrumb-item::before {
+ float: left;
+ padding-right: var(--bs-breadcrumb-item-padding-x);
+ color: var(--bs-breadcrumb-divider-color);
+ content: var(--bs-breadcrumb-divider, "/") /* rtl: var(--bs-breadcrumb-divider, "/") */;
+}
+.breadcrumb-item.active {
+ color: var(--bs-breadcrumb-item-active-color);
+}
+
+.pagination {
+ --bs-pagination-padding-x: 0.75rem;
+ --bs-pagination-padding-y: 0.375rem;
+ --bs-pagination-font-size: 1rem;
+ --bs-pagination-color: var(--bs-link-color);
+ --bs-pagination-bg: var(--bs-body-bg);
+ --bs-pagination-border-width: var(--bs-border-width);
+ --bs-pagination-border-color: var(--bs-border-color);
+ --bs-pagination-border-radius: var(--bs-border-radius);
+ --bs-pagination-hover-color: var(--bs-link-hover-color);
+ --bs-pagination-hover-bg: var(--bs-tertiary-bg);
+ --bs-pagination-hover-border-color: var(--bs-border-color);
+ --bs-pagination-focus-color: var(--bs-link-hover-color);
+ --bs-pagination-focus-bg: var(--bs-secondary-bg);
+ --bs-pagination-focus-box-shadow: 0 0 0 0.25rem rgba(13, 110, 253, 0.25);
+ --bs-pagination-active-color: #fff;
+ --bs-pagination-active-bg: #0d6efd;
+ --bs-pagination-active-border-color: #0d6efd;
+ --bs-pagination-disabled-color: var(--bs-secondary-color);
+ --bs-pagination-disabled-bg: var(--bs-secondary-bg);
+ --bs-pagination-disabled-border-color: var(--bs-border-color);
+ display: flex;
+ padding-left: 0;
+ list-style: none;
+}
+
+.page-link {
+ position: relative;
+ display: block;
+ padding: var(--bs-pagination-padding-y) var(--bs-pagination-padding-x);
+ font-size: var(--bs-pagination-font-size);
+ color: var(--bs-pagination-color);
+ text-decoration: none;
+ background-color: var(--bs-pagination-bg);
+ border: var(--bs-pagination-border-width) solid var(--bs-pagination-border-color);
+ transition: color 0.15s ease-in-out, background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;
+}
+@media (prefers-reduced-motion: reduce) {
+ .page-link {
+ transition: none;
+ }
+}
+.page-link:hover {
+ z-index: 2;
+ color: var(--bs-pagination-hover-color);
+ background-color: var(--bs-pagination-hover-bg);
+ border-color: var(--bs-pagination-hover-border-color);
+}
+.page-link:focus {
+ z-index: 3;
+ color: var(--bs-pagination-focus-color);
+ background-color: var(--bs-pagination-focus-bg);
+ outline: 0;
+ box-shadow: var(--bs-pagination-focus-box-shadow);
+}
+.page-link.active, .active > .page-link {
+ z-index: 3;
+ color: var(--bs-pagination-active-color);
+ background-color: var(--bs-pagination-active-bg);
+ border-color: var(--bs-pagination-active-border-color);
+}
+.page-link.disabled, .disabled > .page-link {
+ color: var(--bs-pagination-disabled-color);
+ pointer-events: none;
+ background-color: var(--bs-pagination-disabled-bg);
+ border-color: var(--bs-pagination-disabled-border-color);
+}
+
+.page-item:not(:first-child) .page-link {
+ margin-left: calc(var(--bs-border-width) * -1);
+}
+.page-item:first-child .page-link {
+ border-top-left-radius: var(--bs-pagination-border-radius);
+ border-bottom-left-radius: var(--bs-pagination-border-radius);
+}
+.page-item:last-child .page-link {
+ border-top-right-radius: var(--bs-pagination-border-radius);
+ border-bottom-right-radius: var(--bs-pagination-border-radius);
+}
+
+.pagination-lg {
+ --bs-pagination-padding-x: 1.5rem;
+ --bs-pagination-padding-y: 0.75rem;
+ --bs-pagination-font-size: 1.25rem;
+ --bs-pagination-border-radius: var(--bs-border-radius-lg);
+}
+
+.pagination-sm {
+ --bs-pagination-padding-x: 0.5rem;
+ --bs-pagination-padding-y: 0.25rem;
+ --bs-pagination-font-size: 0.875rem;
+ --bs-pagination-border-radius: var(--bs-border-radius-sm);
+}
+
+.badge {
+ --bs-badge-padding-x: 0.65em;
+ --bs-badge-padding-y: 0.35em;
+ --bs-badge-font-size: 0.75em;
+ --bs-badge-font-weight: 700;
+ --bs-badge-color: #fff;
+ --bs-badge-border-radius: var(--bs-border-radius);
+ display: inline-block;
+ padding: var(--bs-badge-padding-y) var(--bs-badge-padding-x);
+ font-size: var(--bs-badge-font-size);
+ font-weight: var(--bs-badge-font-weight);
+ line-height: 1;
+ color: var(--bs-badge-color);
+ text-align: center;
+ white-space: nowrap;
+ vertical-align: baseline;
+ border-radius: var(--bs-badge-border-radius);
+}
+.badge:empty {
+ display: none;
+}
+
+.btn .badge {
+ position: relative;
+ top: -1px;
+}
+
+.alert {
+ --bs-alert-bg: transparent;
+ --bs-alert-padding-x: 1rem;
+ --bs-alert-padding-y: 1rem;
+ --bs-alert-margin-bottom: 1rem;
+ --bs-alert-color: inherit;
+ --bs-alert-border-color: transparent;
+ --bs-alert-border: var(--bs-border-width) solid var(--bs-alert-border-color);
+ --bs-alert-border-radius: var(--bs-border-radius);
+ --bs-alert-link-color: inherit;
+ position: relative;
+ padding: var(--bs-alert-padding-y) var(--bs-alert-padding-x);
+ margin-bottom: var(--bs-alert-margin-bottom);
+ color: var(--bs-alert-color);
+ background-color: var(--bs-alert-bg);
+ border: var(--bs-alert-border);
+ border-radius: var(--bs-alert-border-radius);
+}
+
+.alert-heading {
+ color: inherit;
+}
+
+.alert-link {
+ font-weight: 700;
+ color: var(--bs-alert-link-color);
+}
+
+.alert-dismissible {
+ padding-right: 3rem;
+}
+.alert-dismissible .btn-close {
+ position: absolute;
+ top: 0;
+ right: 0;
+ z-index: 2;
+ padding: 1.25rem 1rem;
+}
+
+.alert-primary {
+ --bs-alert-color: var(--bs-primary-text-emphasis);
+ --bs-alert-bg: var(--bs-primary-bg-subtle);
+ --bs-alert-border-color: var(--bs-primary-border-subtle);
+ --bs-alert-link-color: var(--bs-primary-text-emphasis);
+}
+
+.alert-secondary {
+ --bs-alert-color: var(--bs-secondary-text-emphasis);
+ --bs-alert-bg: var(--bs-secondary-bg-subtle);
+ --bs-alert-border-color: var(--bs-secondary-border-subtle);
+ --bs-alert-link-color: var(--bs-secondary-text-emphasis);
+}
+
+.alert-success {
+ --bs-alert-color: var(--bs-success-text-emphasis);
+ --bs-alert-bg: var(--bs-success-bg-subtle);
+ --bs-alert-border-color: var(--bs-success-border-subtle);
+ --bs-alert-link-color: var(--bs-success-text-emphasis);
+}
+
+.alert-info {
+ --bs-alert-color: var(--bs-info-text-emphasis);
+ --bs-alert-bg: var(--bs-info-bg-subtle);
+ --bs-alert-border-color: var(--bs-info-border-subtle);
+ --bs-alert-link-color: var(--bs-info-text-emphasis);
+}
+
+.alert-warning {
+ --bs-alert-color: var(--bs-warning-text-emphasis);
+ --bs-alert-bg: var(--bs-warning-bg-subtle);
+ --bs-alert-border-color: var(--bs-warning-border-subtle);
+ --bs-alert-link-color: var(--bs-warning-text-emphasis);
+}
+
+.alert-danger {
+ --bs-alert-color: var(--bs-danger-text-emphasis);
+ --bs-alert-bg: var(--bs-danger-bg-subtle);
+ --bs-alert-border-color: var(--bs-danger-border-subtle);
+ --bs-alert-link-color: var(--bs-danger-text-emphasis);
+}
+
+.alert-light {
+ --bs-alert-color: var(--bs-light-text-emphasis);
+ --bs-alert-bg: var(--bs-light-bg-subtle);
+ --bs-alert-border-color: var(--bs-light-border-subtle);
+ --bs-alert-link-color: var(--bs-light-text-emphasis);
+}
+
+.alert-dark {
+ --bs-alert-color: var(--bs-dark-text-emphasis);
+ --bs-alert-bg: var(--bs-dark-bg-subtle);
+ --bs-alert-border-color: var(--bs-dark-border-subtle);
+ --bs-alert-link-color: var(--bs-dark-text-emphasis);
+}
+
+@keyframes progress-bar-stripes {
+ 0% {
+ background-position-x: 1rem;
+ }
+}
+.progress,
+.progress-stacked {
+ --bs-progress-height: 1rem;
+ --bs-progress-font-size: 0.75rem;
+ --bs-progress-bg: var(--bs-secondary-bg);
+ --bs-progress-border-radius: var(--bs-border-radius);
+ --bs-progress-box-shadow: var(--bs-box-shadow-inset);
+ --bs-progress-bar-color: #fff;
+ --bs-progress-bar-bg: #0d6efd;
+ --bs-progress-bar-transition: width 0.6s ease;
+ display: flex;
+ height: var(--bs-progress-height);
+ overflow: hidden;
+ font-size: var(--bs-progress-font-size);
+ background-color: var(--bs-progress-bg);
+ border-radius: var(--bs-progress-border-radius);
+}
+
+.progress-bar {
+ display: flex;
+ flex-direction: column;
+ justify-content: center;
+ overflow: hidden;
+ color: var(--bs-progress-bar-color);
+ text-align: center;
+ white-space: nowrap;
+ background-color: var(--bs-progress-bar-bg);
+ transition: var(--bs-progress-bar-transition);
+}
+@media (prefers-reduced-motion: reduce) {
+ .progress-bar {
+ transition: none;
+ }
+}
+
+.progress-bar-striped {
+ background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
+ background-size: var(--bs-progress-height) var(--bs-progress-height);
+}
+
+.progress-stacked > .progress {
+ overflow: visible;
+}
+
+.progress-stacked > .progress > .progress-bar {
+ width: 100%;
+}
+
+.progress-bar-animated {
+ animation: 1s linear infinite progress-bar-stripes;
+}
+@media (prefers-reduced-motion: reduce) {
+ .progress-bar-animated {
+ animation: none;
+ }
+}
+
+.list-group {
+ --bs-list-group-color: var(--bs-body-color);
+ --bs-list-group-bg: var(--bs-body-bg);
+ --bs-list-group-border-color: var(--bs-border-color);
+ --bs-list-group-border-width: var(--bs-border-width);
+ --bs-list-group-border-radius: var(--bs-border-radius);
+ --bs-list-group-item-padding-x: 1rem;
+ --bs-list-group-item-padding-y: 0.5rem;
+ --bs-list-group-action-color: var(--bs-secondary-color);
+ --bs-list-group-action-hover-color: var(--bs-emphasis-color);
+ --bs-list-group-action-hover-bg: var(--bs-tertiary-bg);
+ --bs-list-group-action-active-color: var(--bs-body-color);
+ --bs-list-group-action-active-bg: var(--bs-secondary-bg);
+ --bs-list-group-disabled-color: var(--bs-secondary-color);
+ --bs-list-group-disabled-bg: var(--bs-body-bg);
+ --bs-list-group-active-color: #fff;
+ --bs-list-group-active-bg: #0d6efd;
+ --bs-list-group-active-border-color: #0d6efd;
+ display: flex;
+ flex-direction: column;
+ padding-left: 0;
+ margin-bottom: 0;
+ border-radius: var(--bs-list-group-border-radius);
+}
+
+.list-group-numbered {
+ list-style-type: none;
+ counter-reset: section;
+}
+.list-group-numbered > .list-group-item::before {
+ content: counters(section, ".") ". ";
+ counter-increment: section;
+}
+
+.list-group-item-action {
+ width: 100%;
+ color: var(--bs-list-group-action-color);
+ text-align: inherit;
+}
+.list-group-item-action:hover, .list-group-item-action:focus {
+ z-index: 1;
+ color: var(--bs-list-group-action-hover-color);
+ text-decoration: none;
+ background-color: var(--bs-list-group-action-hover-bg);
+}
+.list-group-item-action:active {
+ color: var(--bs-list-group-action-active-color);
+ background-color: var(--bs-list-group-action-active-bg);
+}
+
+.list-group-item {
+ position: relative;
+ display: block;
+ padding: var(--bs-list-group-item-padding-y) var(--bs-list-group-item-padding-x);
+ color: var(--bs-list-group-color);
+ text-decoration: none;
+ background-color: var(--bs-list-group-bg);
+ border: var(--bs-list-group-border-width) solid var(--bs-list-group-border-color);
+}
+.list-group-item:first-child {
+ border-top-left-radius: inherit;
+ border-top-right-radius: inherit;
+}
+.list-group-item:last-child {
+ border-bottom-right-radius: inherit;
+ border-bottom-left-radius: inherit;
+}
+.list-group-item.disabled, .list-group-item:disabled {
+ color: var(--bs-list-group-disabled-color);
+ pointer-events: none;
+ background-color: var(--bs-list-group-disabled-bg);
+}
+.list-group-item.active {
+ z-index: 2;
+ color: var(--bs-list-group-active-color);
+ background-color: var(--bs-list-group-active-bg);
+ border-color: var(--bs-list-group-active-border-color);
+}
+.list-group-item + .list-group-item {
+ border-top-width: 0;
+}
+.list-group-item + .list-group-item.active {
+ margin-top: calc(-1 * var(--bs-list-group-border-width));
+ border-top-width: var(--bs-list-group-border-width);
+}
+
+.list-group-horizontal {
+ flex-direction: row;
+}
+.list-group-horizontal > .list-group-item:first-child:not(:last-child) {
+ border-bottom-left-radius: var(--bs-list-group-border-radius);
+ border-top-right-radius: 0;
+}
+.list-group-horizontal > .list-group-item:last-child:not(:first-child) {
+ border-top-right-radius: var(--bs-list-group-border-radius);
+ border-bottom-left-radius: 0;
+}
+.list-group-horizontal > .list-group-item.active {
+ margin-top: 0;
+}
+.list-group-horizontal > .list-group-item + .list-group-item {
+ border-top-width: var(--bs-list-group-border-width);
+ border-left-width: 0;
+}
+.list-group-horizontal > .list-group-item + .list-group-item.active {
+ margin-left: calc(-1 * var(--bs-list-group-border-width));
+ border-left-width: var(--bs-list-group-border-width);
+}
+
+@media (min-width: 576px) {
+ .list-group-horizontal-sm {
+ flex-direction: row;
+ }
+ .list-group-horizontal-sm > .list-group-item:first-child:not(:last-child) {
+ border-bottom-left-radius: var(--bs-list-group-border-radius);
+ border-top-right-radius: 0;
+ }
+ .list-group-horizontal-sm > .list-group-item:last-child:not(:first-child) {
+ border-top-right-radius: var(--bs-list-group-border-radius);
+ border-bottom-left-radius: 0;
+ }
+ .list-group-horizontal-sm > .list-group-item.active {
+ margin-top: 0;
+ }
+ .list-group-horizontal-sm > .list-group-item + .list-group-item {
+ border-top-width: var(--bs-list-group-border-width);
+ border-left-width: 0;
+ }
+ .list-group-horizontal-sm > .list-group-item + .list-group-item.active {
+ margin-left: calc(-1 * var(--bs-list-group-border-width));
+ border-left-width: var(--bs-list-group-border-width);
+ }
+}
+@media (min-width: 768px) {
+ .list-group-horizontal-md {
+ flex-direction: row;
+ }
+ .list-group-horizontal-md > .list-group-item:first-child:not(:last-child) {
+ border-bottom-left-radius: var(--bs-list-group-border-radius);
+ border-top-right-radius: 0;
+ }
+ .list-group-horizontal-md > .list-group-item:last-child:not(:first-child) {
+ border-top-right-radius: var(--bs-list-group-border-radius);
+ border-bottom-left-radius: 0;
+ }
+ .list-group-horizontal-md > .list-group-item.active {
+ margin-top: 0;
+ }
+ .list-group-horizontal-md > .list-group-item + .list-group-item {
+ border-top-width: var(--bs-list-group-border-width);
+ border-left-width: 0;
+ }
+ .list-group-horizontal-md > .list-group-item + .list-group-item.active {
+ margin-left: calc(-1 * var(--bs-list-group-border-width));
+ border-left-width: var(--bs-list-group-border-width);
+ }
+}
+@media (min-width: 992px) {
+ .list-group-horizontal-lg {
+ flex-direction: row;
+ }
+ .list-group-horizontal-lg > .list-group-item:first-child:not(:last-child) {
+ border-bottom-left-radius: var(--bs-list-group-border-radius);
+ border-top-right-radius: 0;
+ }
+ .list-group-horizontal-lg > .list-group-item:last-child:not(:first-child) {
+ border-top-right-radius: var(--bs-list-group-border-radius);
+ border-bottom-left-radius: 0;
+ }
+ .list-group-horizontal-lg > .list-group-item.active {
+ margin-top: 0;
+ }
+ .list-group-horizontal-lg > .list-group-item + .list-group-item {
+ border-top-width: var(--bs-list-group-border-width);
+ border-left-width: 0;
+ }
+ .list-group-horizontal-lg > .list-group-item + .list-group-item.active {
+ margin-left: calc(-1 * var(--bs-list-group-border-width));
+ border-left-width: var(--bs-list-group-border-width);
+ }
+}
+@media (min-width: 1200px) {
+ .list-group-horizontal-xl {
+ flex-direction: row;
+ }
+ .list-group-horizontal-xl > .list-group-item:first-child:not(:last-child) {
+ border-bottom-left-radius: var(--bs-list-group-border-radius);
+ border-top-right-radius: 0;
+ }
+ .list-group-horizontal-xl > .list-group-item:last-child:not(:first-child) {
+ border-top-right-radius: var(--bs-list-group-border-radius);
+ border-bottom-left-radius: 0;
+ }
+ .list-group-horizontal-xl > .list-group-item.active {
+ margin-top: 0;
+ }
+ .list-group-horizontal-xl > .list-group-item + .list-group-item {
+ border-top-width: var(--bs-list-group-border-width);
+ border-left-width: 0;
+ }
+ .list-group-horizontal-xl > .list-group-item + .list-group-item.active {
+ margin-left: calc(-1 * var(--bs-list-group-border-width));
+ border-left-width: var(--bs-list-group-border-width);
+ }
+}
+@media (min-width: 1400px) {
+ .list-group-horizontal-xxl {
+ flex-direction: row;
+ }
+ .list-group-horizontal-xxl > .list-group-item:first-child:not(:last-child) {
+ border-bottom-left-radius: var(--bs-list-group-border-radius);
+ border-top-right-radius: 0;
+ }
+ .list-group-horizontal-xxl > .list-group-item:last-child:not(:first-child) {
+ border-top-right-radius: var(--bs-list-group-border-radius);
+ border-bottom-left-radius: 0;
+ }
+ .list-group-horizontal-xxl > .list-group-item.active {
+ margin-top: 0;
+ }
+ .list-group-horizontal-xxl > .list-group-item + .list-group-item {
+ border-top-width: var(--bs-list-group-border-width);
+ border-left-width: 0;
+ }
+ .list-group-horizontal-xxl > .list-group-item + .list-group-item.active {
+ margin-left: calc(-1 * var(--bs-list-group-border-width));
+ border-left-width: var(--bs-list-group-border-width);
+ }
+}
+.list-group-flush {
+ border-radius: 0;
+}
+.list-group-flush > .list-group-item {
+ border-width: 0 0 var(--bs-list-group-border-width);
+}
+.list-group-flush > .list-group-item:last-child {
+ border-bottom-width: 0;
+}
+
+.list-group-item-primary {
+ --bs-list-group-color: var(--bs-primary-text-emphasis);
+ --bs-list-group-bg: var(--bs-primary-bg-subtle);
+ --bs-list-group-border-color: var(--bs-primary-border-subtle);
+ --bs-list-group-action-hover-color: var(--bs-emphasis-color);
+ --bs-list-group-action-hover-bg: var(--bs-primary-border-subtle);
+ --bs-list-group-action-active-color: var(--bs-emphasis-color);
+ --bs-list-group-action-active-bg: var(--bs-primary-border-subtle);
+ --bs-list-group-active-color: var(--bs-primary-bg-subtle);
+ --bs-list-group-active-bg: var(--bs-primary-text-emphasis);
+ --bs-list-group-active-border-color: var(--bs-primary-text-emphasis);
+}
+
+.list-group-item-secondary {
+ --bs-list-group-color: var(--bs-secondary-text-emphasis);
+ --bs-list-group-bg: var(--bs-secondary-bg-subtle);
+ --bs-list-group-border-color: var(--bs-secondary-border-subtle);
+ --bs-list-group-action-hover-color: var(--bs-emphasis-color);
+ --bs-list-group-action-hover-bg: var(--bs-secondary-border-subtle);
+ --bs-list-group-action-active-color: var(--bs-emphasis-color);
+ --bs-list-group-action-active-bg: var(--bs-secondary-border-subtle);
+ --bs-list-group-active-color: var(--bs-secondary-bg-subtle);
+ --bs-list-group-active-bg: var(--bs-secondary-text-emphasis);
+ --bs-list-group-active-border-color: var(--bs-secondary-text-emphasis);
+}
+
+.list-group-item-success {
+ --bs-list-group-color: var(--bs-success-text-emphasis);
+ --bs-list-group-bg: var(--bs-success-bg-subtle);
+ --bs-list-group-border-color: var(--bs-success-border-subtle);
+ --bs-list-group-action-hover-color: var(--bs-emphasis-color);
+ --bs-list-group-action-hover-bg: var(--bs-success-border-subtle);
+ --bs-list-group-action-active-color: var(--bs-emphasis-color);
+ --bs-list-group-action-active-bg: var(--bs-success-border-subtle);
+ --bs-list-group-active-color: var(--bs-success-bg-subtle);
+ --bs-list-group-active-bg: var(--bs-success-text-emphasis);
+ --bs-list-group-active-border-color: var(--bs-success-text-emphasis);
+}
+
+.list-group-item-info {
+ --bs-list-group-color: var(--bs-info-text-emphasis);
+ --bs-list-group-bg: var(--bs-info-bg-subtle);
+ --bs-list-group-border-color: var(--bs-info-border-subtle);
+ --bs-list-group-action-hover-color: var(--bs-emphasis-color);
+ --bs-list-group-action-hover-bg: var(--bs-info-border-subtle);
+ --bs-list-group-action-active-color: var(--bs-emphasis-color);
+ --bs-list-group-action-active-bg: var(--bs-info-border-subtle);
+ --bs-list-group-active-color: var(--bs-info-bg-subtle);
+ --bs-list-group-active-bg: var(--bs-info-text-emphasis);
+ --bs-list-group-active-border-color: var(--bs-info-text-emphasis);
+}
+
+.list-group-item-warning {
+ --bs-list-group-color: var(--bs-warning-text-emphasis);
+ --bs-list-group-bg: var(--bs-warning-bg-subtle);
+ --bs-list-group-border-color: var(--bs-warning-border-subtle);
+ --bs-list-group-action-hover-color: var(--bs-emphasis-color);
+ --bs-list-group-action-hover-bg: var(--bs-warning-border-subtle);
+ --bs-list-group-action-active-color: var(--bs-emphasis-color);
+ --bs-list-group-action-active-bg: var(--bs-warning-border-subtle);
+ --bs-list-group-active-color: var(--bs-warning-bg-subtle);
+ --bs-list-group-active-bg: var(--bs-warning-text-emphasis);
+ --bs-list-group-active-border-color: var(--bs-warning-text-emphasis);
+}
+
+.list-group-item-danger {
+ --bs-list-group-color: var(--bs-danger-text-emphasis);
+ --bs-list-group-bg: var(--bs-danger-bg-subtle);
+ --bs-list-group-border-color: var(--bs-danger-border-subtle);
+ --bs-list-group-action-hover-color: var(--bs-emphasis-color);
+ --bs-list-group-action-hover-bg: var(--bs-danger-border-subtle);
+ --bs-list-group-action-active-color: var(--bs-emphasis-color);
+ --bs-list-group-action-active-bg: var(--bs-danger-border-subtle);
+ --bs-list-group-active-color: var(--bs-danger-bg-subtle);
+ --bs-list-group-active-bg: var(--bs-danger-text-emphasis);
+ --bs-list-group-active-border-color: var(--bs-danger-text-emphasis);
+}
+
+.list-group-item-light {
+ --bs-list-group-color: var(--bs-light-text-emphasis);
+ --bs-list-group-bg: var(--bs-light-bg-subtle);
+ --bs-list-group-border-color: var(--bs-light-border-subtle);
+ --bs-list-group-action-hover-color: var(--bs-emphasis-color);
+ --bs-list-group-action-hover-bg: var(--bs-light-border-subtle);
+ --bs-list-group-action-active-color: var(--bs-emphasis-color);
+ --bs-list-group-action-active-bg: var(--bs-light-border-subtle);
+ --bs-list-group-active-color: var(--bs-light-bg-subtle);
+ --bs-list-group-active-bg: var(--bs-light-text-emphasis);
+ --bs-list-group-active-border-color: var(--bs-light-text-emphasis);
+}
+
+.list-group-item-dark {
+ --bs-list-group-color: var(--bs-dark-text-emphasis);
+ --bs-list-group-bg: var(--bs-dark-bg-subtle);
+ --bs-list-group-border-color: var(--bs-dark-border-subtle);
+ --bs-list-group-action-hover-color: var(--bs-emphasis-color);
+ --bs-list-group-action-hover-bg: var(--bs-dark-border-subtle);
+ --bs-list-group-action-active-color: var(--bs-emphasis-color);
+ --bs-list-group-action-active-bg: var(--bs-dark-border-subtle);
+ --bs-list-group-active-color: var(--bs-dark-bg-subtle);
+ --bs-list-group-active-bg: var(--bs-dark-text-emphasis);
+ --bs-list-group-active-border-color: var(--bs-dark-text-emphasis);
+}
+
+.btn-close {
+ --bs-btn-close-color: #000;
+ --bs-btn-close-bg: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23000'%3e%3cpath d='M.293.293a1 1 0 0 1 1.414 0L8 6.586 14.293.293a1 1 0 1 1 1.414 1.414L9.414 8l6.293 6.293a1 1 0 0 1-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 0 1-1.414-1.414L6.586 8 .293 1.707a1 1 0 0 1 0-1.414z'/%3e%3c/svg%3e");
+ --bs-btn-close-opacity: 0.5;
+ --bs-btn-close-hover-opacity: 0.75;
+ --bs-btn-close-focus-shadow: 0 0 0 0.25rem rgba(13, 110, 253, 0.25);
+ --bs-btn-close-focus-opacity: 1;
+ --bs-btn-close-disabled-opacity: 0.25;
+ --bs-btn-close-white-filter: invert(1) grayscale(100%) brightness(200%);
+ box-sizing: content-box;
+ width: 1em;
+ height: 1em;
+ padding: 0.25em 0.25em;
+ color: var(--bs-btn-close-color);
+ background: transparent var(--bs-btn-close-bg) center/1em auto no-repeat;
+ border: 0;
+ border-radius: 0.375rem;
+ opacity: var(--bs-btn-close-opacity);
+}
+.btn-close:hover {
+ color: var(--bs-btn-close-color);
+ text-decoration: none;
+ opacity: var(--bs-btn-close-hover-opacity);
+}
+.btn-close:focus {
+ outline: 0;
+ box-shadow: var(--bs-btn-close-focus-shadow);
+ opacity: var(--bs-btn-close-focus-opacity);
+}
+.btn-close:disabled, .btn-close.disabled {
+ pointer-events: none;
+ -webkit-user-select: none;
+ -moz-user-select: none;
+ user-select: none;
+ opacity: var(--bs-btn-close-disabled-opacity);
+}
+
+.btn-close-white {
+ filter: var(--bs-btn-close-white-filter);
+}
+
+[data-bs-theme=dark] .btn-close {
+ filter: var(--bs-btn-close-white-filter);
+}
+
+.toast {
+ --bs-toast-zindex: 1090;
+ --bs-toast-padding-x: 0.75rem;
+ --bs-toast-padding-y: 0.5rem;
+ --bs-toast-spacing: 1.5rem;
+ --bs-toast-max-width: 350px;
+ --bs-toast-font-size: 0.875rem;
+ --bs-toast-color: ;
+ --bs-toast-bg: rgba(var(--bs-body-bg-rgb), 0.85);
+ --bs-toast-border-width: var(--bs-border-width);
+ --bs-toast-border-color: var(--bs-border-color-translucent);
+ --bs-toast-border-radius: var(--bs-border-radius);
+ --bs-toast-box-shadow: var(--bs-box-shadow);
+ --bs-toast-header-color: var(--bs-secondary-color);
+ --bs-toast-header-bg: rgba(var(--bs-body-bg-rgb), 0.85);
+ --bs-toast-header-border-color: var(--bs-border-color-translucent);
+ width: var(--bs-toast-max-width);
+ max-width: 100%;
+ font-size: var(--bs-toast-font-size);
+ color: var(--bs-toast-color);
+ pointer-events: auto;
+ background-color: var(--bs-toast-bg);
+ background-clip: padding-box;
+ border: var(--bs-toast-border-width) solid var(--bs-toast-border-color);
+ box-shadow: var(--bs-toast-box-shadow);
+ border-radius: var(--bs-toast-border-radius);
+}
+.toast.showing {
+ opacity: 0;
+}
+.toast:not(.show) {
+ display: none;
+}
+
+.toast-container {
+ --bs-toast-zindex: 1090;
+ position: absolute;
+ z-index: var(--bs-toast-zindex);
+ width: -webkit-max-content;
+ width: -moz-max-content;
+ width: max-content;
+ max-width: 100%;
+ pointer-events: none;
+}
+.toast-container > :not(:last-child) {
+ margin-bottom: var(--bs-toast-spacing);
+}
+
+.toast-header {
+ display: flex;
+ align-items: center;
+ padding: var(--bs-toast-padding-y) var(--bs-toast-padding-x);
+ color: var(--bs-toast-header-color);
+ background-color: var(--bs-toast-header-bg);
+ background-clip: padding-box;
+ border-bottom: var(--bs-toast-border-width) solid var(--bs-toast-header-border-color);
+ border-top-left-radius: calc(var(--bs-toast-border-radius) - var(--bs-toast-border-width));
+ border-top-right-radius: calc(var(--bs-toast-border-radius) - var(--bs-toast-border-width));
+}
+.toast-header .btn-close {
+ margin-right: calc(-0.5 * var(--bs-toast-padding-x));
+ margin-left: var(--bs-toast-padding-x);
+}
+
+.toast-body {
+ padding: var(--bs-toast-padding-x);
+ word-wrap: break-word;
+}
+
+.modal {
+ --bs-modal-zindex: 1055;
+ --bs-modal-width: 500px;
+ --bs-modal-padding: 1rem;
+ --bs-modal-margin: 0.5rem;
+ --bs-modal-color: ;
+ --bs-modal-bg: var(--bs-body-bg);
+ --bs-modal-border-color: var(--bs-border-color-translucent);
+ --bs-modal-border-width: var(--bs-border-width);
+ --bs-modal-border-radius: var(--bs-border-radius-lg);
+ --bs-modal-box-shadow: 0 0.125rem 0.25rem rgba(0, 0, 0, 0.075);
+ --bs-modal-inner-border-radius: calc(var(--bs-border-radius-lg) - (var(--bs-border-width)));
+ --bs-modal-header-padding-x: 1rem;
+ --bs-modal-header-padding-y: 1rem;
+ --bs-modal-header-padding: 1rem 1rem;
+ --bs-modal-header-border-color: var(--bs-border-color);
+ --bs-modal-header-border-width: var(--bs-border-width);
+ --bs-modal-title-line-height: 1.5;
+ --bs-modal-footer-gap: 0.5rem;
+ --bs-modal-footer-bg: ;
+ --bs-modal-footer-border-color: var(--bs-border-color);
+ --bs-modal-footer-border-width: var(--bs-border-width);
+ position: fixed;
+ top: 0;
+ left: 0;
+ z-index: var(--bs-modal-zindex);
+ display: none;
+ width: 100%;
+ height: 100%;
+ overflow-x: hidden;
+ overflow-y: auto;
+ outline: 0;
+}
+
+.modal-dialog {
+ position: relative;
+ width: auto;
+ margin: var(--bs-modal-margin);
+ pointer-events: none;
+}
+.modal.fade .modal-dialog {
+ transition: transform 0.3s ease-out;
+ transform: translate(0, -50px);
+}
+@media (prefers-reduced-motion: reduce) {
+ .modal.fade .modal-dialog {
+ transition: none;
+ }
+}
+.modal.show .modal-dialog {
+ transform: none;
+}
+.modal.modal-static .modal-dialog {
+ transform: scale(1.02);
+}
+
+.modal-dialog-scrollable {
+ height: calc(100% - var(--bs-modal-margin) * 2);
+}
+.modal-dialog-scrollable .modal-content {
+ max-height: 100%;
+ overflow: hidden;
+}
+.modal-dialog-scrollable .modal-body {
+ overflow-y: auto;
+}
+
+.modal-dialog-centered {
+ display: flex;
+ align-items: center;
+ min-height: calc(100% - var(--bs-modal-margin) * 2);
+}
+
+.modal-content {
+ position: relative;
+ display: flex;
+ flex-direction: column;
+ width: 100%;
+ color: var(--bs-modal-color);
+ pointer-events: auto;
+ background-color: var(--bs-modal-bg);
+ background-clip: padding-box;
+ border: var(--bs-modal-border-width) solid var(--bs-modal-border-color);
+ border-radius: var(--bs-modal-border-radius);
+ outline: 0;
+}
+
+.modal-backdrop {
+ --bs-backdrop-zindex: 1050;
+ --bs-backdrop-bg: #000;
+ --bs-backdrop-opacity: 0.5;
+ position: fixed;
+ top: 0;
+ left: 0;
+ z-index: var(--bs-backdrop-zindex);
+ width: 100vw;
+ height: 100vh;
+ background-color: var(--bs-backdrop-bg);
+}
+.modal-backdrop.fade {
+ opacity: 0;
+}
+.modal-backdrop.show {
+ opacity: var(--bs-backdrop-opacity);
+}
+
+.modal-header {
+ display: flex;
+ flex-shrink: 0;
+ align-items: center;
+ justify-content: space-between;
+ padding: var(--bs-modal-header-padding);
+ border-bottom: var(--bs-modal-header-border-width) solid var(--bs-modal-header-border-color);
+ border-top-left-radius: var(--bs-modal-inner-border-radius);
+ border-top-right-radius: var(--bs-modal-inner-border-radius);
+}
+.modal-header .btn-close {
+ padding: calc(var(--bs-modal-header-padding-y) * 0.5) calc(var(--bs-modal-header-padding-x) * 0.5);
+ margin: calc(-0.5 * var(--bs-modal-header-padding-y)) calc(-0.5 * var(--bs-modal-header-padding-x)) calc(-0.5 * var(--bs-modal-header-padding-y)) auto;
+}
+
+.modal-title {
+ margin-bottom: 0;
+ line-height: var(--bs-modal-title-line-height);
+}
+
+.modal-body {
+ position: relative;
+ flex: 1 1 auto;
+ padding: var(--bs-modal-padding);
+}
+
+.modal-footer {
+ display: flex;
+ flex-shrink: 0;
+ flex-wrap: wrap;
+ align-items: center;
+ justify-content: flex-end;
+ padding: calc(var(--bs-modal-padding) - var(--bs-modal-footer-gap) * 0.5);
+ background-color: var(--bs-modal-footer-bg);
+ border-top: var(--bs-modal-footer-border-width) solid var(--bs-modal-footer-border-color);
+ border-bottom-right-radius: var(--bs-modal-inner-border-radius);
+ border-bottom-left-radius: var(--bs-modal-inner-border-radius);
+}
+.modal-footer > * {
+ margin: calc(var(--bs-modal-footer-gap) * 0.5);
+}
+
+@media (min-width: 576px) {
+ .modal {
+ --bs-modal-margin: 1.75rem;
+ --bs-modal-box-shadow: 0 0.5rem 1rem rgba(0, 0, 0, 0.15);
+ }
+ .modal-dialog {
+ max-width: var(--bs-modal-width);
+ margin-right: auto;
+ margin-left: auto;
+ }
+ .modal-sm {
+ --bs-modal-width: 300px;
+ }
+}
+@media (min-width: 992px) {
+ .modal-lg,
+ .modal-xl {
+ --bs-modal-width: 800px;
+ }
+}
+@media (min-width: 1200px) {
+ .modal-xl {
+ --bs-modal-width: 1140px;
+ }
+}
+.modal-fullscreen {
+ width: 100vw;
+ max-width: none;
+ height: 100%;
+ margin: 0;
+}
+.modal-fullscreen .modal-content {
+ height: 100%;
+ border: 0;
+ border-radius: 0;
+}
+.modal-fullscreen .modal-header,
+.modal-fullscreen .modal-footer {
+ border-radius: 0;
+}
+.modal-fullscreen .modal-body {
+ overflow-y: auto;
+}
+
+@media (max-width: 575.98px) {
+ .modal-fullscreen-sm-down {
+ width: 100vw;
+ max-width: none;
+ height: 100%;
+ margin: 0;
+ }
+ .modal-fullscreen-sm-down .modal-content {
+ height: 100%;
+ border: 0;
+ border-radius: 0;
+ }
+ .modal-fullscreen-sm-down .modal-header,
+ .modal-fullscreen-sm-down .modal-footer {
+ border-radius: 0;
+ }
+ .modal-fullscreen-sm-down .modal-body {
+ overflow-y: auto;
+ }
+}
+@media (max-width: 767.98px) {
+ .modal-fullscreen-md-down {
+ width: 100vw;
+ max-width: none;
+ height: 100%;
+ margin: 0;
+ }
+ .modal-fullscreen-md-down .modal-content {
+ height: 100%;
+ border: 0;
+ border-radius: 0;
+ }
+ .modal-fullscreen-md-down .modal-header,
+ .modal-fullscreen-md-down .modal-footer {
+ border-radius: 0;
+ }
+ .modal-fullscreen-md-down .modal-body {
+ overflow-y: auto;
+ }
+}
+@media (max-width: 991.98px) {
+ .modal-fullscreen-lg-down {
+ width: 100vw;
+ max-width: none;
+ height: 100%;
+ margin: 0;
+ }
+ .modal-fullscreen-lg-down .modal-content {
+ height: 100%;
+ border: 0;
+ border-radius: 0;
+ }
+ .modal-fullscreen-lg-down .modal-header,
+ .modal-fullscreen-lg-down .modal-footer {
+ border-radius: 0;
+ }
+ .modal-fullscreen-lg-down .modal-body {
+ overflow-y: auto;
+ }
+}
+@media (max-width: 1199.98px) {
+ .modal-fullscreen-xl-down {
+ width: 100vw;
+ max-width: none;
+ height: 100%;
+ margin: 0;
+ }
+ .modal-fullscreen-xl-down .modal-content {
+ height: 100%;
+ border: 0;
+ border-radius: 0;
+ }
+ .modal-fullscreen-xl-down .modal-header,
+ .modal-fullscreen-xl-down .modal-footer {
+ border-radius: 0;
+ }
+ .modal-fullscreen-xl-down .modal-body {
+ overflow-y: auto;
+ }
+}
+@media (max-width: 1399.98px) {
+ .modal-fullscreen-xxl-down {
+ width: 100vw;
+ max-width: none;
+ height: 100%;
+ margin: 0;
+ }
+ .modal-fullscreen-xxl-down .modal-content {
+ height: 100%;
+ border: 0;
+ border-radius: 0;
+ }
+ .modal-fullscreen-xxl-down .modal-header,
+ .modal-fullscreen-xxl-down .modal-footer {
+ border-radius: 0;
+ }
+ .modal-fullscreen-xxl-down .modal-body {
+ overflow-y: auto;
+ }
+}
+.tooltip {
+ --bs-tooltip-zindex: 1080;
+ --bs-tooltip-max-width: 200px;
+ --bs-tooltip-padding-x: 0.5rem;
+ --bs-tooltip-padding-y: 0.25rem;
+ --bs-tooltip-margin: ;
+ --bs-tooltip-font-size: 0.875rem;
+ --bs-tooltip-color: var(--bs-body-bg);
+ --bs-tooltip-bg: var(--bs-emphasis-color);
+ --bs-tooltip-border-radius: var(--bs-border-radius);
+ --bs-tooltip-opacity: 0.9;
+ --bs-tooltip-arrow-width: 0.8rem;
+ --bs-tooltip-arrow-height: 0.4rem;
+ z-index: var(--bs-tooltip-zindex);
+ display: block;
+ margin: var(--bs-tooltip-margin);
+ font-family: var(--bs-font-sans-serif);
+ font-style: normal;
+ font-weight: 400;
+ line-height: 1.5;
+ text-align: left;
+ text-align: start;
+ text-decoration: none;
+ text-shadow: none;
+ text-transform: none;
+ letter-spacing: normal;
+ word-break: normal;
+ white-space: normal;
+ word-spacing: normal;
+ line-break: auto;
+ font-size: var(--bs-tooltip-font-size);
+ word-wrap: break-word;
+ opacity: 0;
+}
+.tooltip.show {
+ opacity: var(--bs-tooltip-opacity);
+}
+.tooltip .tooltip-arrow {
+ display: block;
+ width: var(--bs-tooltip-arrow-width);
+ height: var(--bs-tooltip-arrow-height);
+}
+.tooltip .tooltip-arrow::before {
+ position: absolute;
+ content: "";
+ border-color: transparent;
+ border-style: solid;
+}
+
+.bs-tooltip-top .tooltip-arrow, .bs-tooltip-auto[data-popper-placement^=top] .tooltip-arrow {
+ bottom: calc(-1 * var(--bs-tooltip-arrow-height));
+}
+.bs-tooltip-top .tooltip-arrow::before, .bs-tooltip-auto[data-popper-placement^=top] .tooltip-arrow::before {
+ top: -1px;
+ border-width: var(--bs-tooltip-arrow-height) calc(var(--bs-tooltip-arrow-width) * 0.5) 0;
+ border-top-color: var(--bs-tooltip-bg);
+}
+
+/* rtl:begin:ignore */
+.bs-tooltip-end .tooltip-arrow, .bs-tooltip-auto[data-popper-placement^=right] .tooltip-arrow {
+ left: calc(-1 * var(--bs-tooltip-arrow-height));
+ width: var(--bs-tooltip-arrow-height);
+ height: var(--bs-tooltip-arrow-width);
+}
+.bs-tooltip-end .tooltip-arrow::before, .bs-tooltip-auto[data-popper-placement^=right] .tooltip-arrow::before {
+ right: -1px;
+ border-width: calc(var(--bs-tooltip-arrow-width) * 0.5) var(--bs-tooltip-arrow-height) calc(var(--bs-tooltip-arrow-width) * 0.5) 0;
+ border-right-color: var(--bs-tooltip-bg);
+}
+
+/* rtl:end:ignore */
+.bs-tooltip-bottom .tooltip-arrow, .bs-tooltip-auto[data-popper-placement^=bottom] .tooltip-arrow {
+ top: calc(-1 * var(--bs-tooltip-arrow-height));
+}
+.bs-tooltip-bottom .tooltip-arrow::before, .bs-tooltip-auto[data-popper-placement^=bottom] .tooltip-arrow::before {
+ bottom: -1px;
+ border-width: 0 calc(var(--bs-tooltip-arrow-width) * 0.5) var(--bs-tooltip-arrow-height);
+ border-bottom-color: var(--bs-tooltip-bg);
+}
+
+/* rtl:begin:ignore */
+.bs-tooltip-start .tooltip-arrow, .bs-tooltip-auto[data-popper-placement^=left] .tooltip-arrow {
+ right: calc(-1 * var(--bs-tooltip-arrow-height));
+ width: var(--bs-tooltip-arrow-height);
+ height: var(--bs-tooltip-arrow-width);
+}
+.bs-tooltip-start .tooltip-arrow::before, .bs-tooltip-auto[data-popper-placement^=left] .tooltip-arrow::before {
+ left: -1px;
+ border-width: calc(var(--bs-tooltip-arrow-width) * 0.5) 0 calc(var(--bs-tooltip-arrow-width) * 0.5) var(--bs-tooltip-arrow-height);
+ border-left-color: var(--bs-tooltip-bg);
+}
+
+/* rtl:end:ignore */
+.tooltip-inner {
+ max-width: var(--bs-tooltip-max-width);
+ padding: var(--bs-tooltip-padding-y) var(--bs-tooltip-padding-x);
+ color: var(--bs-tooltip-color);
+ text-align: center;
+ background-color: var(--bs-tooltip-bg);
+ border-radius: var(--bs-tooltip-border-radius);
+}
+
+.popover {
+ --bs-popover-zindex: 1070;
+ --bs-popover-max-width: 276px;
+ --bs-popover-font-size: 0.875rem;
+ --bs-popover-bg: var(--bs-body-bg);
+ --bs-popover-border-width: var(--bs-border-width);
+ --bs-popover-border-color: var(--bs-border-color-translucent);
+ --bs-popover-border-radius: var(--bs-border-radius-lg);
+ --bs-popover-inner-border-radius: calc(var(--bs-border-radius-lg) - var(--bs-border-width));
+ --bs-popover-box-shadow: 0 0.5rem 1rem rgba(0, 0, 0, 0.15);
+ --bs-popover-header-padding-x: 1rem;
+ --bs-popover-header-padding-y: 0.5rem;
+ --bs-popover-header-font-size: 1rem;
+ --bs-popover-header-color: inherit;
+ --bs-popover-header-bg: var(--bs-secondary-bg);
+ --bs-popover-body-padding-x: 1rem;
+ --bs-popover-body-padding-y: 1rem;
+ --bs-popover-body-color: var(--bs-body-color);
+ --bs-popover-arrow-width: 1rem;
+ --bs-popover-arrow-height: 0.5rem;
+ --bs-popover-arrow-border: var(--bs-popover-border-color);
+ z-index: var(--bs-popover-zindex);
+ display: block;
+ max-width: var(--bs-popover-max-width);
+ font-family: var(--bs-font-sans-serif);
+ font-style: normal;
+ font-weight: 400;
+ line-height: 1.5;
+ text-align: left;
+ text-align: start;
+ text-decoration: none;
+ text-shadow: none;
+ text-transform: none;
+ letter-spacing: normal;
+ word-break: normal;
+ white-space: normal;
+ word-spacing: normal;
+ line-break: auto;
+ font-size: var(--bs-popover-font-size);
+ word-wrap: break-word;
+ background-color: var(--bs-popover-bg);
+ background-clip: padding-box;
+ border: var(--bs-popover-border-width) solid var(--bs-popover-border-color);
+ border-radius: var(--bs-popover-border-radius);
+}
+.popover .popover-arrow {
+ display: block;
+ width: var(--bs-popover-arrow-width);
+ height: var(--bs-popover-arrow-height);
+}
+.popover .popover-arrow::before, .popover .popover-arrow::after {
+ position: absolute;
+ display: block;
+ content: "";
+ border-color: transparent;
+ border-style: solid;
+ border-width: 0;
+}
+
+.bs-popover-top > .popover-arrow, .bs-popover-auto[data-popper-placement^=top] > .popover-arrow {
+ bottom: calc(-1 * (var(--bs-popover-arrow-height)) - var(--bs-popover-border-width));
+}
+.bs-popover-top > .popover-arrow::before, .bs-popover-auto[data-popper-placement^=top] > .popover-arrow::before, .bs-popover-top > .popover-arrow::after, .bs-popover-auto[data-popper-placement^=top] > .popover-arrow::after {
+ border-width: var(--bs-popover-arrow-height) calc(var(--bs-popover-arrow-width) * 0.5) 0;
+}
+.bs-popover-top > .popover-arrow::before, .bs-popover-auto[data-popper-placement^=top] > .popover-arrow::before {
+ bottom: 0;
+ border-top-color: var(--bs-popover-arrow-border);
+}
+.bs-popover-top > .popover-arrow::after, .bs-popover-auto[data-popper-placement^=top] > .popover-arrow::after {
+ bottom: var(--bs-popover-border-width);
+ border-top-color: var(--bs-popover-bg);
+}
+
+/* rtl:begin:ignore */
+.bs-popover-end > .popover-arrow, .bs-popover-auto[data-popper-placement^=right] > .popover-arrow {
+ left: calc(-1 * (var(--bs-popover-arrow-height)) - var(--bs-popover-border-width));
+ width: var(--bs-popover-arrow-height);
+ height: var(--bs-popover-arrow-width);
+}
+.bs-popover-end > .popover-arrow::before, .bs-popover-auto[data-popper-placement^=right] > .popover-arrow::before, .bs-popover-end > .popover-arrow::after, .bs-popover-auto[data-popper-placement^=right] > .popover-arrow::after {
+ border-width: calc(var(--bs-popover-arrow-width) * 0.5) var(--bs-popover-arrow-height) calc(var(--bs-popover-arrow-width) * 0.5) 0;
+}
+.bs-popover-end > .popover-arrow::before, .bs-popover-auto[data-popper-placement^=right] > .popover-arrow::before {
+ left: 0;
+ border-right-color: var(--bs-popover-arrow-border);
+}
+.bs-popover-end > .popover-arrow::after, .bs-popover-auto[data-popper-placement^=right] > .popover-arrow::after {
+ left: var(--bs-popover-border-width);
+ border-right-color: var(--bs-popover-bg);
+}
+
+/* rtl:end:ignore */
+.bs-popover-bottom > .popover-arrow, .bs-popover-auto[data-popper-placement^=bottom] > .popover-arrow {
+ top: calc(-1 * (var(--bs-popover-arrow-height)) - var(--bs-popover-border-width));
+}
+.bs-popover-bottom > .popover-arrow::before, .bs-popover-auto[data-popper-placement^=bottom] > .popover-arrow::before, .bs-popover-bottom > .popover-arrow::after, .bs-popover-auto[data-popper-placement^=bottom] > .popover-arrow::after {
+ border-width: 0 calc(var(--bs-popover-arrow-width) * 0.5) var(--bs-popover-arrow-height);
+}
+.bs-popover-bottom > .popover-arrow::before, .bs-popover-auto[data-popper-placement^=bottom] > .popover-arrow::before {
+ top: 0;
+ border-bottom-color: var(--bs-popover-arrow-border);
+}
+.bs-popover-bottom > .popover-arrow::after, .bs-popover-auto[data-popper-placement^=bottom] > .popover-arrow::after {
+ top: var(--bs-popover-border-width);
+ border-bottom-color: var(--bs-popover-bg);
+}
+.bs-popover-bottom .popover-header::before, .bs-popover-auto[data-popper-placement^=bottom] .popover-header::before {
+ position: absolute;
+ top: 0;
+ left: 50%;
+ display: block;
+ width: var(--bs-popover-arrow-width);
+ margin-left: calc(-0.5 * var(--bs-popover-arrow-width));
+ content: "";
+ border-bottom: var(--bs-popover-border-width) solid var(--bs-popover-header-bg);
+}
+
+/* rtl:begin:ignore */
+.bs-popover-start > .popover-arrow, .bs-popover-auto[data-popper-placement^=left] > .popover-arrow {
+ right: calc(-1 * (var(--bs-popover-arrow-height)) - var(--bs-popover-border-width));
+ width: var(--bs-popover-arrow-height);
+ height: var(--bs-popover-arrow-width);
+}
+.bs-popover-start > .popover-arrow::before, .bs-popover-auto[data-popper-placement^=left] > .popover-arrow::before, .bs-popover-start > .popover-arrow::after, .bs-popover-auto[data-popper-placement^=left] > .popover-arrow::after {
+ border-width: calc(var(--bs-popover-arrow-width) * 0.5) 0 calc(var(--bs-popover-arrow-width) * 0.5) var(--bs-popover-arrow-height);
+}
+.bs-popover-start > .popover-arrow::before, .bs-popover-auto[data-popper-placement^=left] > .popover-arrow::before {
+ right: 0;
+ border-left-color: var(--bs-popover-arrow-border);
+}
+.bs-popover-start > .popover-arrow::after, .bs-popover-auto[data-popper-placement^=left] > .popover-arrow::after {
+ right: var(--bs-popover-border-width);
+ border-left-color: var(--bs-popover-bg);
+}
+
+/* rtl:end:ignore */
+.popover-header {
+ padding: var(--bs-popover-header-padding-y) var(--bs-popover-header-padding-x);
+ margin-bottom: 0;
+ font-size: var(--bs-popover-header-font-size);
+ color: var(--bs-popover-header-color);
+ background-color: var(--bs-popover-header-bg);
+ border-bottom: var(--bs-popover-border-width) solid var(--bs-popover-border-color);
+ border-top-left-radius: var(--bs-popover-inner-border-radius);
+ border-top-right-radius: var(--bs-popover-inner-border-radius);
+}
+.popover-header:empty {
+ display: none;
+}
+
+.popover-body {
+ padding: var(--bs-popover-body-padding-y) var(--bs-popover-body-padding-x);
+ color: var(--bs-popover-body-color);
+}
+
+.carousel {
+ position: relative;
+}
+
+.carousel.pointer-event {
+ touch-action: pan-y;
+}
+
+.carousel-inner {
+ position: relative;
+ width: 100%;
+ overflow: hidden;
+}
+.carousel-inner::after {
+ display: block;
+ clear: both;
+ content: "";
+}
+
+.carousel-item {
+ position: relative;
+ display: none;
+ float: left;
+ width: 100%;
+ margin-right: -100%;
+ -webkit-backface-visibility: hidden;
+ backface-visibility: hidden;
+ transition: transform 0.6s ease-in-out;
+}
+@media (prefers-reduced-motion: reduce) {
+ .carousel-item {
+ transition: none;
+ }
+}
+
+.carousel-item.active,
+.carousel-item-next,
+.carousel-item-prev {
+ display: block;
+}
+
+.carousel-item-next:not(.carousel-item-start),
+.active.carousel-item-end {
+ transform: translateX(100%);
+}
+
+.carousel-item-prev:not(.carousel-item-end),
+.active.carousel-item-start {
+ transform: translateX(-100%);
+}
+
+.carousel-fade .carousel-item {
+ opacity: 0;
+ transition-property: opacity;
+ transform: none;
+}
+.carousel-fade .carousel-item.active,
+.carousel-fade .carousel-item-next.carousel-item-start,
+.carousel-fade .carousel-item-prev.carousel-item-end {
+ z-index: 1;
+ opacity: 1;
+}
+.carousel-fade .active.carousel-item-start,
+.carousel-fade .active.carousel-item-end {
+ z-index: 0;
+ opacity: 0;
+ transition: opacity 0s 0.6s;
+}
+@media (prefers-reduced-motion: reduce) {
+ .carousel-fade .active.carousel-item-start,
+ .carousel-fade .active.carousel-item-end {
+ transition: none;
+ }
+}
+
+.carousel-control-prev,
+.carousel-control-next {
+ position: absolute;
+ top: 0;
+ bottom: 0;
+ z-index: 1;
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ width: 15%;
+ padding: 0;
+ color: #fff;
+ text-align: center;
+ background: none;
+ border: 0;
+ opacity: 0.5;
+ transition: opacity 0.15s ease;
+}
+@media (prefers-reduced-motion: reduce) {
+ .carousel-control-prev,
+ .carousel-control-next {
+ transition: none;
+ }
+}
+.carousel-control-prev:hover, .carousel-control-prev:focus,
+.carousel-control-next:hover,
+.carousel-control-next:focus {
+ color: #fff;
+ text-decoration: none;
+ outline: 0;
+ opacity: 0.9;
+}
+
+.carousel-control-prev {
+ left: 0;
+}
+
+.carousel-control-next {
+ right: 0;
+}
+
+.carousel-control-prev-icon,
+.carousel-control-next-icon {
+ display: inline-block;
+ width: 2rem;
+ height: 2rem;
+ background-repeat: no-repeat;
+ background-position: 50%;
+ background-size: 100% 100%;
+}
+
+/* rtl:options: {
+ "autoRename": true,
+ "stringMap":[ {
+ "name" : "prev-next",
+ "search" : "prev",
+ "replace" : "next"
+ } ]
+} */
+.carousel-control-prev-icon {
+ background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23fff'%3e%3cpath d='M11.354 1.646a.5.5 0 0 1 0 .708L5.707 8l5.647 5.646a.5.5 0 0 1-.708.708l-6-6a.5.5 0 0 1 0-.708l6-6a.5.5 0 0 1 .708 0z'/%3e%3c/svg%3e");
+}
+
+.carousel-control-next-icon {
+ background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23fff'%3e%3cpath d='M4.646 1.646a.5.5 0 0 1 .708 0l6 6a.5.5 0 0 1 0 .708l-6 6a.5.5 0 0 1-.708-.708L10.293 8 4.646 2.354a.5.5 0 0 1 0-.708z'/%3e%3c/svg%3e");
+}
+
+.carousel-indicators {
+ position: absolute;
+ right: 0;
+ bottom: 0;
+ left: 0;
+ z-index: 2;
+ display: flex;
+ justify-content: center;
+ padding: 0;
+ margin-right: 15%;
+ margin-bottom: 1rem;
+ margin-left: 15%;
+}
+.carousel-indicators [data-bs-target] {
+ box-sizing: content-box;
+ flex: 0 1 auto;
+ width: 30px;
+ height: 3px;
+ padding: 0;
+ margin-right: 3px;
+ margin-left: 3px;
+ text-indent: -999px;
+ cursor: pointer;
+ background-color: #fff;
+ background-clip: padding-box;
+ border: 0;
+ border-top: 10px solid transparent;
+ border-bottom: 10px solid transparent;
+ opacity: 0.5;
+ transition: opacity 0.6s ease;
+}
+@media (prefers-reduced-motion: reduce) {
+ .carousel-indicators [data-bs-target] {
+ transition: none;
+ }
+}
+.carousel-indicators .active {
+ opacity: 1;
+}
+
+.carousel-caption {
+ position: absolute;
+ right: 15%;
+ bottom: 1.25rem;
+ left: 15%;
+ padding-top: 1.25rem;
+ padding-bottom: 1.25rem;
+ color: #fff;
+ text-align: center;
+}
+
+.carousel-dark .carousel-control-prev-icon,
+.carousel-dark .carousel-control-next-icon {
+ filter: invert(1) grayscale(100);
+}
+.carousel-dark .carousel-indicators [data-bs-target] {
+ background-color: #000;
+}
+.carousel-dark .carousel-caption {
+ color: #000;
+}
+
+[data-bs-theme=dark] .carousel .carousel-control-prev-icon,
+[data-bs-theme=dark] .carousel .carousel-control-next-icon, [data-bs-theme=dark].carousel .carousel-control-prev-icon,
+[data-bs-theme=dark].carousel .carousel-control-next-icon {
+ filter: invert(1) grayscale(100);
+}
+[data-bs-theme=dark] .carousel .carousel-indicators [data-bs-target], [data-bs-theme=dark].carousel .carousel-indicators [data-bs-target] {
+ background-color: #000;
+}
+[data-bs-theme=dark] .carousel .carousel-caption, [data-bs-theme=dark].carousel .carousel-caption {
+ color: #000;
+}
+
+.spinner-grow,
+.spinner-border {
+ display: inline-block;
+ width: var(--bs-spinner-width);
+ height: var(--bs-spinner-height);
+ vertical-align: var(--bs-spinner-vertical-align);
+ border-radius: 50%;
+ animation: var(--bs-spinner-animation-speed) linear infinite var(--bs-spinner-animation-name);
+}
+
+@keyframes spinner-border {
+ to {
+ transform: rotate(360deg) /* rtl:ignore */;
+ }
+}
+.spinner-border {
+ --bs-spinner-width: 2rem;
+ --bs-spinner-height: 2rem;
+ --bs-spinner-vertical-align: -0.125em;
+ --bs-spinner-border-width: 0.25em;
+ --bs-spinner-animation-speed: 0.75s;
+ --bs-spinner-animation-name: spinner-border;
+ border: var(--bs-spinner-border-width) solid currentcolor;
+ border-right-color: transparent;
+}
+
+.spinner-border-sm {
+ --bs-spinner-width: 1rem;
+ --bs-spinner-height: 1rem;
+ --bs-spinner-border-width: 0.2em;
+}
+
+@keyframes spinner-grow {
+ 0% {
+ transform: scale(0);
+ }
+ 50% {
+ opacity: 1;
+ transform: none;
+ }
+}
+.spinner-grow {
+ --bs-spinner-width: 2rem;
+ --bs-spinner-height: 2rem;
+ --bs-spinner-vertical-align: -0.125em;
+ --bs-spinner-animation-speed: 0.75s;
+ --bs-spinner-animation-name: spinner-grow;
+ background-color: currentcolor;
+ opacity: 0;
+}
+
+.spinner-grow-sm {
+ --bs-spinner-width: 1rem;
+ --bs-spinner-height: 1rem;
+}
+
+@media (prefers-reduced-motion: reduce) {
+ .spinner-border,
+ .spinner-grow {
+ --bs-spinner-animation-speed: 1.5s;
+ }
+}
+.offcanvas, .offcanvas-xxl, .offcanvas-xl, .offcanvas-lg, .offcanvas-md, .offcanvas-sm {
+ --bs-offcanvas-zindex: 1045;
+ --bs-offcanvas-width: 400px;
+ --bs-offcanvas-height: 30vh;
+ --bs-offcanvas-padding-x: 1rem;
+ --bs-offcanvas-padding-y: 1rem;
+ --bs-offcanvas-color: var(--bs-body-color);
+ --bs-offcanvas-bg: var(--bs-body-bg);
+ --bs-offcanvas-border-width: var(--bs-border-width);
+ --bs-offcanvas-border-color: var(--bs-border-color-translucent);
+ --bs-offcanvas-box-shadow: 0 0.125rem 0.25rem rgba(0, 0, 0, 0.075);
+ --bs-offcanvas-transition: transform 0.3s ease-in-out;
+ --bs-offcanvas-title-line-height: 1.5;
+}
+
+@media (max-width: 575.98px) {
+ .offcanvas-sm {
+ position: fixed;
+ bottom: 0;
+ z-index: var(--bs-offcanvas-zindex);
+ display: flex;
+ flex-direction: column;
+ max-width: 100%;
+ color: var(--bs-offcanvas-color);
+ visibility: hidden;
+ background-color: var(--bs-offcanvas-bg);
+ background-clip: padding-box;
+ outline: 0;
+ transition: var(--bs-offcanvas-transition);
+ }
+}
+@media (max-width: 575.98px) and (prefers-reduced-motion: reduce) {
+ .offcanvas-sm {
+ transition: none;
+ }
+}
+@media (max-width: 575.98px) {
+ .offcanvas-sm.offcanvas-start {
+ top: 0;
+ left: 0;
+ width: var(--bs-offcanvas-width);
+ border-right: var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);
+ transform: translateX(-100%);
+ }
+ .offcanvas-sm.offcanvas-end {
+ top: 0;
+ right: 0;
+ width: var(--bs-offcanvas-width);
+ border-left: var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);
+ transform: translateX(100%);
+ }
+ .offcanvas-sm.offcanvas-top {
+ top: 0;
+ right: 0;
+ left: 0;
+ height: var(--bs-offcanvas-height);
+ max-height: 100%;
+ border-bottom: var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);
+ transform: translateY(-100%);
+ }
+ .offcanvas-sm.offcanvas-bottom {
+ right: 0;
+ left: 0;
+ height: var(--bs-offcanvas-height);
+ max-height: 100%;
+ border-top: var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);
+ transform: translateY(100%);
+ }
+ .offcanvas-sm.showing, .offcanvas-sm.show:not(.hiding) {
+ transform: none;
+ }
+ .offcanvas-sm.showing, .offcanvas-sm.hiding, .offcanvas-sm.show {
+ visibility: visible;
+ }
+}
+@media (min-width: 576px) {
+ .offcanvas-sm {
+ --bs-offcanvas-height: auto;
+ --bs-offcanvas-border-width: 0;
+ background-color: transparent !important;
+ }
+ .offcanvas-sm .offcanvas-header {
+ display: none;
+ }
+ .offcanvas-sm .offcanvas-body {
+ display: flex;
+ flex-grow: 0;
+ padding: 0;
+ overflow-y: visible;
+ background-color: transparent !important;
+ }
+}
+
+@media (max-width: 767.98px) {
+ .offcanvas-md {
+ position: fixed;
+ bottom: 0;
+ z-index: var(--bs-offcanvas-zindex);
+ display: flex;
+ flex-direction: column;
+ max-width: 100%;
+ color: var(--bs-offcanvas-color);
+ visibility: hidden;
+ background-color: var(--bs-offcanvas-bg);
+ background-clip: padding-box;
+ outline: 0;
+ transition: var(--bs-offcanvas-transition);
+ }
+}
+@media (max-width: 767.98px) and (prefers-reduced-motion: reduce) {
+ .offcanvas-md {
+ transition: none;
+ }
+}
+@media (max-width: 767.98px) {
+ .offcanvas-md.offcanvas-start {
+ top: 0;
+ left: 0;
+ width: var(--bs-offcanvas-width);
+ border-right: var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);
+ transform: translateX(-100%);
+ }
+ .offcanvas-md.offcanvas-end {
+ top: 0;
+ right: 0;
+ width: var(--bs-offcanvas-width);
+ border-left: var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);
+ transform: translateX(100%);
+ }
+ .offcanvas-md.offcanvas-top {
+ top: 0;
+ right: 0;
+ left: 0;
+ height: var(--bs-offcanvas-height);
+ max-height: 100%;
+ border-bottom: var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);
+ transform: translateY(-100%);
+ }
+ .offcanvas-md.offcanvas-bottom {
+ right: 0;
+ left: 0;
+ height: var(--bs-offcanvas-height);
+ max-height: 100%;
+ border-top: var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);
+ transform: translateY(100%);
+ }
+ .offcanvas-md.showing, .offcanvas-md.show:not(.hiding) {
+ transform: none;
+ }
+ .offcanvas-md.showing, .offcanvas-md.hiding, .offcanvas-md.show {
+ visibility: visible;
+ }
+}
+@media (min-width: 768px) {
+ .offcanvas-md {
+ --bs-offcanvas-height: auto;
+ --bs-offcanvas-border-width: 0;
+ background-color: transparent !important;
+ }
+ .offcanvas-md .offcanvas-header {
+ display: none;
+ }
+ .offcanvas-md .offcanvas-body {
+ display: flex;
+ flex-grow: 0;
+ padding: 0;
+ overflow-y: visible;
+ background-color: transparent !important;
+ }
+}
+
+@media (max-width: 991.98px) {
+ .offcanvas-lg {
+ position: fixed;
+ bottom: 0;
+ z-index: var(--bs-offcanvas-zindex);
+ display: flex;
+ flex-direction: column;
+ max-width: 100%;
+ color: var(--bs-offcanvas-color);
+ visibility: hidden;
+ background-color: var(--bs-offcanvas-bg);
+ background-clip: padding-box;
+ outline: 0;
+ transition: var(--bs-offcanvas-transition);
+ }
+}
+@media (max-width: 991.98px) and (prefers-reduced-motion: reduce) {
+ .offcanvas-lg {
+ transition: none;
+ }
+}
+@media (max-width: 991.98px) {
+ .offcanvas-lg.offcanvas-start {
+ top: 0;
+ left: 0;
+ width: var(--bs-offcanvas-width);
+ border-right: var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);
+ transform: translateX(-100%);
+ }
+ .offcanvas-lg.offcanvas-end {
+ top: 0;
+ right: 0;
+ width: var(--bs-offcanvas-width);
+ border-left: var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);
+ transform: translateX(100%);
+ }
+ .offcanvas-lg.offcanvas-top {
+ top: 0;
+ right: 0;
+ left: 0;
+ height: var(--bs-offcanvas-height);
+ max-height: 100%;
+ border-bottom: var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);
+ transform: translateY(-100%);
+ }
+ .offcanvas-lg.offcanvas-bottom {
+ right: 0;
+ left: 0;
+ height: var(--bs-offcanvas-height);
+ max-height: 100%;
+ border-top: var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);
+ transform: translateY(100%);
+ }
+ .offcanvas-lg.showing, .offcanvas-lg.show:not(.hiding) {
+ transform: none;
+ }
+ .offcanvas-lg.showing, .offcanvas-lg.hiding, .offcanvas-lg.show {
+ visibility: visible;
+ }
+}
+@media (min-width: 992px) {
+ .offcanvas-lg {
+ --bs-offcanvas-height: auto;
+ --bs-offcanvas-border-width: 0;
+ background-color: transparent !important;
+ }
+ .offcanvas-lg .offcanvas-header {
+ display: none;
+ }
+ .offcanvas-lg .offcanvas-body {
+ display: flex;
+ flex-grow: 0;
+ padding: 0;
+ overflow-y: visible;
+ background-color: transparent !important;
+ }
+}
+
+@media (max-width: 1199.98px) {
+ .offcanvas-xl {
+ position: fixed;
+ bottom: 0;
+ z-index: var(--bs-offcanvas-zindex);
+ display: flex;
+ flex-direction: column;
+ max-width: 100%;
+ color: var(--bs-offcanvas-color);
+ visibility: hidden;
+ background-color: var(--bs-offcanvas-bg);
+ background-clip: padding-box;
+ outline: 0;
+ transition: var(--bs-offcanvas-transition);
+ }
+}
+@media (max-width: 1199.98px) and (prefers-reduced-motion: reduce) {
+ .offcanvas-xl {
+ transition: none;
+ }
+}
+@media (max-width: 1199.98px) {
+ .offcanvas-xl.offcanvas-start {
+ top: 0;
+ left: 0;
+ width: var(--bs-offcanvas-width);
+ border-right: var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);
+ transform: translateX(-100%);
+ }
+ .offcanvas-xl.offcanvas-end {
+ top: 0;
+ right: 0;
+ width: var(--bs-offcanvas-width);
+ border-left: var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);
+ transform: translateX(100%);
+ }
+ .offcanvas-xl.offcanvas-top {
+ top: 0;
+ right: 0;
+ left: 0;
+ height: var(--bs-offcanvas-height);
+ max-height: 100%;
+ border-bottom: var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);
+ transform: translateY(-100%);
+ }
+ .offcanvas-xl.offcanvas-bottom {
+ right: 0;
+ left: 0;
+ height: var(--bs-offcanvas-height);
+ max-height: 100%;
+ border-top: var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);
+ transform: translateY(100%);
+ }
+ .offcanvas-xl.showing, .offcanvas-xl.show:not(.hiding) {
+ transform: none;
+ }
+ .offcanvas-xl.showing, .offcanvas-xl.hiding, .offcanvas-xl.show {
+ visibility: visible;
+ }
+}
+@media (min-width: 1200px) {
+ .offcanvas-xl {
+ --bs-offcanvas-height: auto;
+ --bs-offcanvas-border-width: 0;
+ background-color: transparent !important;
+ }
+ .offcanvas-xl .offcanvas-header {
+ display: none;
+ }
+ .offcanvas-xl .offcanvas-body {
+ display: flex;
+ flex-grow: 0;
+ padding: 0;
+ overflow-y: visible;
+ background-color: transparent !important;
+ }
+}
+
+@media (max-width: 1399.98px) {
+ .offcanvas-xxl {
+ position: fixed;
+ bottom: 0;
+ z-index: var(--bs-offcanvas-zindex);
+ display: flex;
+ flex-direction: column;
+ max-width: 100%;
+ color: var(--bs-offcanvas-color);
+ visibility: hidden;
+ background-color: var(--bs-offcanvas-bg);
+ background-clip: padding-box;
+ outline: 0;
+ transition: var(--bs-offcanvas-transition);
+ }
+}
+@media (max-width: 1399.98px) and (prefers-reduced-motion: reduce) {
+ .offcanvas-xxl {
+ transition: none;
+ }
+}
+@media (max-width: 1399.98px) {
+ .offcanvas-xxl.offcanvas-start {
+ top: 0;
+ left: 0;
+ width: var(--bs-offcanvas-width);
+ border-right: var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);
+ transform: translateX(-100%);
+ }
+ .offcanvas-xxl.offcanvas-end {
+ top: 0;
+ right: 0;
+ width: var(--bs-offcanvas-width);
+ border-left: var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);
+ transform: translateX(100%);
+ }
+ .offcanvas-xxl.offcanvas-top {
+ top: 0;
+ right: 0;
+ left: 0;
+ height: var(--bs-offcanvas-height);
+ max-height: 100%;
+ border-bottom: var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);
+ transform: translateY(-100%);
+ }
+ .offcanvas-xxl.offcanvas-bottom {
+ right: 0;
+ left: 0;
+ height: var(--bs-offcanvas-height);
+ max-height: 100%;
+ border-top: var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);
+ transform: translateY(100%);
+ }
+ .offcanvas-xxl.showing, .offcanvas-xxl.show:not(.hiding) {
+ transform: none;
+ }
+ .offcanvas-xxl.showing, .offcanvas-xxl.hiding, .offcanvas-xxl.show {
+ visibility: visible;
+ }
+}
+@media (min-width: 1400px) {
+ .offcanvas-xxl {
+ --bs-offcanvas-height: auto;
+ --bs-offcanvas-border-width: 0;
+ background-color: transparent !important;
+ }
+ .offcanvas-xxl .offcanvas-header {
+ display: none;
+ }
+ .offcanvas-xxl .offcanvas-body {
+ display: flex;
+ flex-grow: 0;
+ padding: 0;
+ overflow-y: visible;
+ background-color: transparent !important;
+ }
+}
+
+.offcanvas {
+ position: fixed;
+ bottom: 0;
+ z-index: var(--bs-offcanvas-zindex);
+ display: flex;
+ flex-direction: column;
+ max-width: 100%;
+ color: var(--bs-offcanvas-color);
+ visibility: hidden;
+ background-color: var(--bs-offcanvas-bg);
+ background-clip: padding-box;
+ outline: 0;
+ transition: var(--bs-offcanvas-transition);
+}
+@media (prefers-reduced-motion: reduce) {
+ .offcanvas {
+ transition: none;
+ }
+}
+.offcanvas.offcanvas-start {
+ top: 0;
+ left: 0;
+ width: var(--bs-offcanvas-width);
+ border-right: var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);
+ transform: translateX(-100%);
+}
+.offcanvas.offcanvas-end {
+ top: 0;
+ right: 0;
+ width: var(--bs-offcanvas-width);
+ border-left: var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);
+ transform: translateX(100%);
+}
+.offcanvas.offcanvas-top {
+ top: 0;
+ right: 0;
+ left: 0;
+ height: var(--bs-offcanvas-height);
+ max-height: 100%;
+ border-bottom: var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);
+ transform: translateY(-100%);
+}
+.offcanvas.offcanvas-bottom {
+ right: 0;
+ left: 0;
+ height: var(--bs-offcanvas-height);
+ max-height: 100%;
+ border-top: var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);
+ transform: translateY(100%);
+}
+.offcanvas.showing, .offcanvas.show:not(.hiding) {
+ transform: none;
+}
+.offcanvas.showing, .offcanvas.hiding, .offcanvas.show {
+ visibility: visible;
+}
+
+.offcanvas-backdrop {
+ position: fixed;
+ top: 0;
+ left: 0;
+ z-index: 1040;
+ width: 100vw;
+ height: 100vh;
+ background-color: #000;
+}
+.offcanvas-backdrop.fade {
+ opacity: 0;
+}
+.offcanvas-backdrop.show {
+ opacity: 0.5;
+}
+
+.offcanvas-header {
+ display: flex;
+ align-items: center;
+ justify-content: space-between;
+ padding: var(--bs-offcanvas-padding-y) var(--bs-offcanvas-padding-x);
+}
+.offcanvas-header .btn-close {
+ padding: calc(var(--bs-offcanvas-padding-y) * 0.5) calc(var(--bs-offcanvas-padding-x) * 0.5);
+ margin-top: calc(-0.5 * var(--bs-offcanvas-padding-y));
+ margin-right: calc(-0.5 * var(--bs-offcanvas-padding-x));
+ margin-bottom: calc(-0.5 * var(--bs-offcanvas-padding-y));
+}
+
+.offcanvas-title {
+ margin-bottom: 0;
+ line-height: var(--bs-offcanvas-title-line-height);
+}
+
+.offcanvas-body {
+ flex-grow: 1;
+ padding: var(--bs-offcanvas-padding-y) var(--bs-offcanvas-padding-x);
+ overflow-y: auto;
+}
+
+.placeholder {
+ display: inline-block;
+ min-height: 1em;
+ vertical-align: middle;
+ cursor: wait;
+ background-color: currentcolor;
+ opacity: 0.5;
+}
+.placeholder.btn::before {
+ display: inline-block;
+ content: "";
+}
+
+.placeholder-xs {
+ min-height: 0.6em;
+}
+
+.placeholder-sm {
+ min-height: 0.8em;
+}
+
+.placeholder-lg {
+ min-height: 1.2em;
+}
+
+.placeholder-glow .placeholder {
+ animation: placeholder-glow 2s ease-in-out infinite;
+}
+
+@keyframes placeholder-glow {
+ 50% {
+ opacity: 0.2;
+ }
+}
+.placeholder-wave {
+ -webkit-mask-image: linear-gradient(130deg, #000 55%, rgba(0, 0, 0, 0.8) 75%, #000 95%);
+ mask-image: linear-gradient(130deg, #000 55%, rgba(0, 0, 0, 0.8) 75%, #000 95%);
+ -webkit-mask-size: 200% 100%;
+ mask-size: 200% 100%;
+ animation: placeholder-wave 2s linear infinite;
+}
+
+@keyframes placeholder-wave {
+ 100% {
+ -webkit-mask-position: -200% 0%;
+ mask-position: -200% 0%;
+ }
+}
+.clearfix::after {
+ display: block;
+ clear: both;
+ content: "";
+}
+
+.text-bg-primary {
+ color: #fff !important;
+ background-color: RGBA(13, 110, 253, var(--bs-bg-opacity, 1)) !important;
+}
+
+.text-bg-secondary {
+ color: #fff !important;
+ background-color: RGBA(108, 117, 125, var(--bs-bg-opacity, 1)) !important;
+}
+
+.text-bg-success {
+ color: #fff !important;
+ background-color: RGBA(25, 135, 84, var(--bs-bg-opacity, 1)) !important;
+}
+
+.text-bg-info {
+ color: #000 !important;
+ background-color: RGBA(13, 202, 240, var(--bs-bg-opacity, 1)) !important;
+}
+
+.text-bg-warning {
+ color: #000 !important;
+ background-color: RGBA(255, 193, 7, var(--bs-bg-opacity, 1)) !important;
+}
+
+.text-bg-danger {
+ color: #fff !important;
+ background-color: RGBA(220, 53, 69, var(--bs-bg-opacity, 1)) !important;
+}
+
+.text-bg-light {
+ color: #000 !important;
+ background-color: RGBA(248, 249, 250, var(--bs-bg-opacity, 1)) !important;
+}
+
+.text-bg-dark {
+ color: #fff !important;
+ background-color: RGBA(33, 37, 41, var(--bs-bg-opacity, 1)) !important;
+}
+
+.link-primary {
+ color: RGBA(var(--bs-primary-rgb), var(--bs-link-opacity, 1)) !important;
+ -webkit-text-decoration-color: RGBA(var(--bs-primary-rgb), var(--bs-link-underline-opacity, 1)) !important;
+ text-decoration-color: RGBA(var(--bs-primary-rgb), var(--bs-link-underline-opacity, 1)) !important;
+}
+.link-primary:hover, .link-primary:focus {
+ color: RGBA(10, 88, 202, var(--bs-link-opacity, 1)) !important;
+ -webkit-text-decoration-color: RGBA(10, 88, 202, var(--bs-link-underline-opacity, 1)) !important;
+ text-decoration-color: RGBA(10, 88, 202, var(--bs-link-underline-opacity, 1)) !important;
+}
+
+.link-secondary {
+ color: RGBA(var(--bs-secondary-rgb), var(--bs-link-opacity, 1)) !important;
+ -webkit-text-decoration-color: RGBA(var(--bs-secondary-rgb), var(--bs-link-underline-opacity, 1)) !important;
+ text-decoration-color: RGBA(var(--bs-secondary-rgb), var(--bs-link-underline-opacity, 1)) !important;
+}
+.link-secondary:hover, .link-secondary:focus {
+ color: RGBA(86, 94, 100, var(--bs-link-opacity, 1)) !important;
+ -webkit-text-decoration-color: RGBA(86, 94, 100, var(--bs-link-underline-opacity, 1)) !important;
+ text-decoration-color: RGBA(86, 94, 100, var(--bs-link-underline-opacity, 1)) !important;
+}
+
+.link-success {
+ color: RGBA(var(--bs-success-rgb), var(--bs-link-opacity, 1)) !important;
+ -webkit-text-decoration-color: RGBA(var(--bs-success-rgb), var(--bs-link-underline-opacity, 1)) !important;
+ text-decoration-color: RGBA(var(--bs-success-rgb), var(--bs-link-underline-opacity, 1)) !important;
+}
+.link-success:hover, .link-success:focus {
+ color: RGBA(20, 108, 67, var(--bs-link-opacity, 1)) !important;
+ -webkit-text-decoration-color: RGBA(20, 108, 67, var(--bs-link-underline-opacity, 1)) !important;
+ text-decoration-color: RGBA(20, 108, 67, var(--bs-link-underline-opacity, 1)) !important;
+}
+
+.link-info {
+ color: RGBA(var(--bs-info-rgb), var(--bs-link-opacity, 1)) !important;
+ -webkit-text-decoration-color: RGBA(var(--bs-info-rgb), var(--bs-link-underline-opacity, 1)) !important;
+ text-decoration-color: RGBA(var(--bs-info-rgb), var(--bs-link-underline-opacity, 1)) !important;
+}
+.link-info:hover, .link-info:focus {
+ color: RGBA(61, 213, 243, var(--bs-link-opacity, 1)) !important;
+ -webkit-text-decoration-color: RGBA(61, 213, 243, var(--bs-link-underline-opacity, 1)) !important;
+ text-decoration-color: RGBA(61, 213, 243, var(--bs-link-underline-opacity, 1)) !important;
+}
+
+.link-warning {
+ color: RGBA(var(--bs-warning-rgb), var(--bs-link-opacity, 1)) !important;
+ -webkit-text-decoration-color: RGBA(var(--bs-warning-rgb), var(--bs-link-underline-opacity, 1)) !important;
+ text-decoration-color: RGBA(var(--bs-warning-rgb), var(--bs-link-underline-opacity, 1)) !important;
+}
+.link-warning:hover, .link-warning:focus {
+ color: RGBA(255, 205, 57, var(--bs-link-opacity, 1)) !important;
+ -webkit-text-decoration-color: RGBA(255, 205, 57, var(--bs-link-underline-opacity, 1)) !important;
+ text-decoration-color: RGBA(255, 205, 57, var(--bs-link-underline-opacity, 1)) !important;
+}
+
+.link-danger {
+ color: RGBA(var(--bs-danger-rgb), var(--bs-link-opacity, 1)) !important;
+ -webkit-text-decoration-color: RGBA(var(--bs-danger-rgb), var(--bs-link-underline-opacity, 1)) !important;
+ text-decoration-color: RGBA(var(--bs-danger-rgb), var(--bs-link-underline-opacity, 1)) !important;
+}
+.link-danger:hover, .link-danger:focus {
+ color: RGBA(176, 42, 55, var(--bs-link-opacity, 1)) !important;
+ -webkit-text-decoration-color: RGBA(176, 42, 55, var(--bs-link-underline-opacity, 1)) !important;
+ text-decoration-color: RGBA(176, 42, 55, var(--bs-link-underline-opacity, 1)) !important;
+}
+
+.link-light {
+ color: RGBA(var(--bs-light-rgb), var(--bs-link-opacity, 1)) !important;
+ -webkit-text-decoration-color: RGBA(var(--bs-light-rgb), var(--bs-link-underline-opacity, 1)) !important;
+ text-decoration-color: RGBA(var(--bs-light-rgb), var(--bs-link-underline-opacity, 1)) !important;
+}
+.link-light:hover, .link-light:focus {
+ color: RGBA(249, 250, 251, var(--bs-link-opacity, 1)) !important;
+ -webkit-text-decoration-color: RGBA(249, 250, 251, var(--bs-link-underline-opacity, 1)) !important;
+ text-decoration-color: RGBA(249, 250, 251, var(--bs-link-underline-opacity, 1)) !important;
+}
+
+.link-dark {
+ color: RGBA(var(--bs-dark-rgb), var(--bs-link-opacity, 1)) !important;
+ -webkit-text-decoration-color: RGBA(var(--bs-dark-rgb), var(--bs-link-underline-opacity, 1)) !important;
+ text-decoration-color: RGBA(var(--bs-dark-rgb), var(--bs-link-underline-opacity, 1)) !important;
+}
+.link-dark:hover, .link-dark:focus {
+ color: RGBA(26, 30, 33, var(--bs-link-opacity, 1)) !important;
+ -webkit-text-decoration-color: RGBA(26, 30, 33, var(--bs-link-underline-opacity, 1)) !important;
+ text-decoration-color: RGBA(26, 30, 33, var(--bs-link-underline-opacity, 1)) !important;
+}
+
+.link-body-emphasis {
+ color: RGBA(var(--bs-emphasis-color-rgb), var(--bs-link-opacity, 1)) !important;
+ -webkit-text-decoration-color: RGBA(var(--bs-emphasis-color-rgb), var(--bs-link-underline-opacity, 1)) !important;
+ text-decoration-color: RGBA(var(--bs-emphasis-color-rgb), var(--bs-link-underline-opacity, 1)) !important;
+}
+.link-body-emphasis:hover, .link-body-emphasis:focus {
+ color: RGBA(var(--bs-emphasis-color-rgb), var(--bs-link-opacity, 0.75)) !important;
+ -webkit-text-decoration-color: RGBA(var(--bs-emphasis-color-rgb), var(--bs-link-underline-opacity, 0.75)) !important;
+ text-decoration-color: RGBA(var(--bs-emphasis-color-rgb), var(--bs-link-underline-opacity, 0.75)) !important;
+}
+
+.focus-ring:focus {
+ outline: 0;
+ box-shadow: var(--bs-focus-ring-x, 0) var(--bs-focus-ring-y, 0) var(--bs-focus-ring-blur, 0) var(--bs-focus-ring-width) var(--bs-focus-ring-color);
+}
+
+.icon-link {
+ display: inline-flex;
+ gap: 0.375rem;
+ align-items: center;
+ -webkit-text-decoration-color: rgba(var(--bs-link-color-rgb), var(--bs-link-opacity, 0.5));
+ text-decoration-color: rgba(var(--bs-link-color-rgb), var(--bs-link-opacity, 0.5));
+ text-underline-offset: 0.25em;
+ -webkit-backface-visibility: hidden;
+ backface-visibility: hidden;
+}
+.icon-link > .bi {
+ flex-shrink: 0;
+ width: 1em;
+ height: 1em;
+ fill: currentcolor;
+ transition: 0.2s ease-in-out transform;
+}
+@media (prefers-reduced-motion: reduce) {
+ .icon-link > .bi {
+ transition: none;
+ }
+}
+
+.icon-link-hover:hover > .bi, .icon-link-hover:focus-visible > .bi {
+ transform: var(--bs-icon-link-transform, translate3d(0.25em, 0, 0));
+}
+
+.ratio {
+ position: relative;
+ width: 100%;
+}
+.ratio::before {
+ display: block;
+ padding-top: var(--bs-aspect-ratio);
+ content: "";
+}
+.ratio > * {
+ position: absolute;
+ top: 0;
+ left: 0;
+ width: 100%;
+ height: 100%;
+}
+
+.ratio-1x1 {
+ --bs-aspect-ratio: 100%;
+}
+
+.ratio-4x3 {
+ --bs-aspect-ratio: 75%;
+}
+
+.ratio-16x9 {
+ --bs-aspect-ratio: 56.25%;
+}
+
+.ratio-21x9 {
+ --bs-aspect-ratio: 42.8571428571%;
+}
+
+.fixed-top {
+ position: fixed;
+ top: 0;
+ right: 0;
+ left: 0;
+ z-index: 1030;
+}
+
+.fixed-bottom {
+ position: fixed;
+ right: 0;
+ bottom: 0;
+ left: 0;
+ z-index: 1030;
+}
+
+.sticky-top {
+ position: -webkit-sticky;
+ position: sticky;
+ top: 0;
+ z-index: 1020;
+}
+
+.sticky-bottom {
+ position: -webkit-sticky;
+ position: sticky;
+ bottom: 0;
+ z-index: 1020;
+}
+
+@media (min-width: 576px) {
+ .sticky-sm-top {
+ position: -webkit-sticky;
+ position: sticky;
+ top: 0;
+ z-index: 1020;
+ }
+ .sticky-sm-bottom {
+ position: -webkit-sticky;
+ position: sticky;
+ bottom: 0;
+ z-index: 1020;
+ }
+}
+@media (min-width: 768px) {
+ .sticky-md-top {
+ position: -webkit-sticky;
+ position: sticky;
+ top: 0;
+ z-index: 1020;
+ }
+ .sticky-md-bottom {
+ position: -webkit-sticky;
+ position: sticky;
+ bottom: 0;
+ z-index: 1020;
+ }
+}
+@media (min-width: 992px) {
+ .sticky-lg-top {
+ position: -webkit-sticky;
+ position: sticky;
+ top: 0;
+ z-index: 1020;
+ }
+ .sticky-lg-bottom {
+ position: -webkit-sticky;
+ position: sticky;
+ bottom: 0;
+ z-index: 1020;
+ }
+}
+@media (min-width: 1200px) {
+ .sticky-xl-top {
+ position: -webkit-sticky;
+ position: sticky;
+ top: 0;
+ z-index: 1020;
+ }
+ .sticky-xl-bottom {
+ position: -webkit-sticky;
+ position: sticky;
+ bottom: 0;
+ z-index: 1020;
+ }
+}
+@media (min-width: 1400px) {
+ .sticky-xxl-top {
+ position: -webkit-sticky;
+ position: sticky;
+ top: 0;
+ z-index: 1020;
+ }
+ .sticky-xxl-bottom {
+ position: -webkit-sticky;
+ position: sticky;
+ bottom: 0;
+ z-index: 1020;
+ }
+}
+.hstack {
+ display: flex;
+ flex-direction: row;
+ align-items: center;
+ align-self: stretch;
+}
+
+.vstack {
+ display: flex;
+ flex: 1 1 auto;
+ flex-direction: column;
+ align-self: stretch;
+}
+
+.visually-hidden,
+.visually-hidden-focusable:not(:focus):not(:focus-within) {
+ width: 1px !important;
+ height: 1px !important;
+ padding: 0 !important;
+ margin: -1px !important;
+ overflow: hidden !important;
+ clip: rect(0, 0, 0, 0) !important;
+ white-space: nowrap !important;
+ border: 0 !important;
+}
+.visually-hidden:not(caption),
+.visually-hidden-focusable:not(:focus):not(:focus-within):not(caption) {
+ position: absolute !important;
+}
+
+.stretched-link::after {
+ position: absolute;
+ top: 0;
+ right: 0;
+ bottom: 0;
+ left: 0;
+ z-index: 1;
+ content: "";
+}
+
+.text-truncate {
+ overflow: hidden;
+ text-overflow: ellipsis;
+ white-space: nowrap;
+}
+
+.vr {
+ display: inline-block;
+ align-self: stretch;
+ width: 1px;
+ min-height: 1em;
+ background-color: currentcolor;
+ opacity: 0.25;
+}
+
+.align-baseline {
+ vertical-align: baseline !important;
+}
+
+.align-top {
+ vertical-align: top !important;
+}
+
+.align-middle {
+ vertical-align: middle !important;
+}
+
+.align-bottom {
+ vertical-align: bottom !important;
+}
+
+.align-text-bottom {
+ vertical-align: text-bottom !important;
+}
+
+.align-text-top {
+ vertical-align: text-top !important;
+}
+
+.float-start {
+ float: left !important;
+}
+
+.float-end {
+ float: right !important;
+}
+
+.float-none {
+ float: none !important;
+}
+
+.object-fit-contain {
+ -o-object-fit: contain !important;
+ object-fit: contain !important;
+}
+
+.object-fit-cover {
+ -o-object-fit: cover !important;
+ object-fit: cover !important;
+}
+
+.object-fit-fill {
+ -o-object-fit: fill !important;
+ object-fit: fill !important;
+}
+
+.object-fit-scale {
+ -o-object-fit: scale-down !important;
+ object-fit: scale-down !important;
+}
+
+.object-fit-none {
+ -o-object-fit: none !important;
+ object-fit: none !important;
+}
+
+.opacity-0 {
+ opacity: 0 !important;
+}
+
+.opacity-25 {
+ opacity: 0.25 !important;
+}
+
+.opacity-50 {
+ opacity: 0.5 !important;
+}
+
+.opacity-75 {
+ opacity: 0.75 !important;
+}
+
+.opacity-100 {
+ opacity: 1 !important;
+}
+
+.overflow-auto {
+ overflow: auto !important;
+}
+
+.overflow-hidden {
+ overflow: hidden !important;
+}
+
+.overflow-visible {
+ overflow: visible !important;
+}
+
+.overflow-scroll {
+ overflow: scroll !important;
+}
+
+.overflow-x-auto {
+ overflow-x: auto !important;
+}
+
+.overflow-x-hidden {
+ overflow-x: hidden !important;
+}
+
+.overflow-x-visible {
+ overflow-x: visible !important;
+}
+
+.overflow-x-scroll {
+ overflow-x: scroll !important;
+}
+
+.overflow-y-auto {
+ overflow-y: auto !important;
+}
+
+.overflow-y-hidden {
+ overflow-y: hidden !important;
+}
+
+.overflow-y-visible {
+ overflow-y: visible !important;
+}
+
+.overflow-y-scroll {
+ overflow-y: scroll !important;
+}
+
+.d-inline {
+ display: inline !important;
+}
+
+.d-inline-block {
+ display: inline-block !important;
+}
+
+.d-block {
+ display: block !important;
+}
+
+.d-grid {
+ display: grid !important;
+}
+
+.d-inline-grid {
+ display: inline-grid !important;
+}
+
+.d-table {
+ display: table !important;
+}
+
+.d-table-row {
+ display: table-row !important;
+}
+
+.d-table-cell {
+ display: table-cell !important;
+}
+
+.d-flex {
+ display: flex !important;
+}
+
+.d-inline-flex {
+ display: inline-flex !important;
+}
+
+.d-none {
+ display: none !important;
+}
+
+.shadow {
+ box-shadow: 0 0.5rem 1rem rgba(0, 0, 0, 0.15) !important;
+}
+
+.shadow-sm {
+ box-shadow: 0 0.125rem 0.25rem rgba(0, 0, 0, 0.075) !important;
+}
+
+.shadow-lg {
+ box-shadow: 0 1rem 3rem rgba(0, 0, 0, 0.175) !important;
+}
+
+.shadow-none {
+ box-shadow: none !important;
+}
+
+.focus-ring-primary {
+ --bs-focus-ring-color: rgba(var(--bs-primary-rgb), var(--bs-focus-ring-opacity));
+}
+
+.focus-ring-secondary {
+ --bs-focus-ring-color: rgba(var(--bs-secondary-rgb), var(--bs-focus-ring-opacity));
+}
+
+.focus-ring-success {
+ --bs-focus-ring-color: rgba(var(--bs-success-rgb), var(--bs-focus-ring-opacity));
+}
+
+.focus-ring-info {
+ --bs-focus-ring-color: rgba(var(--bs-info-rgb), var(--bs-focus-ring-opacity));
+}
+
+.focus-ring-warning {
+ --bs-focus-ring-color: rgba(var(--bs-warning-rgb), var(--bs-focus-ring-opacity));
+}
+
+.focus-ring-danger {
+ --bs-focus-ring-color: rgba(var(--bs-danger-rgb), var(--bs-focus-ring-opacity));
+}
+
+.focus-ring-light {
+ --bs-focus-ring-color: rgba(var(--bs-light-rgb), var(--bs-focus-ring-opacity));
+}
+
+.focus-ring-dark {
+ --bs-focus-ring-color: rgba(var(--bs-dark-rgb), var(--bs-focus-ring-opacity));
+}
+
+.position-static {
+ position: static !important;
+}
+
+.position-relative {
+ position: relative !important;
+}
+
+.position-absolute {
+ position: absolute !important;
+}
+
+.position-fixed {
+ position: fixed !important;
+}
+
+.position-sticky {
+ position: -webkit-sticky !important;
+ position: sticky !important;
+}
+
+.top-0 {
+ top: 0 !important;
+}
+
+.top-50 {
+ top: 50% !important;
+}
+
+.top-100 {
+ top: 100% !important;
+}
+
+.bottom-0 {
+ bottom: 0 !important;
+}
+
+.bottom-50 {
+ bottom: 50% !important;
+}
+
+.bottom-100 {
+ bottom: 100% !important;
+}
+
+.start-0 {
+ left: 0 !important;
+}
+
+.start-50 {
+ left: 50% !important;
+}
+
+.start-100 {
+ left: 100% !important;
+}
+
+.end-0 {
+ right: 0 !important;
+}
+
+.end-50 {
+ right: 50% !important;
+}
+
+.end-100 {
+ right: 100% !important;
+}
+
+.translate-middle {
+ transform: translate(-50%, -50%) !important;
+}
+
+.translate-middle-x {
+ transform: translateX(-50%) !important;
+}
+
+.translate-middle-y {
+ transform: translateY(-50%) !important;
+}
+
+.border {
+ border: var(--bs-border-width) var(--bs-border-style) var(--bs-border-color) !important;
+}
+
+.border-0 {
+ border: 0 !important;
+}
+
+.border-top {
+ border-top: var(--bs-border-width) var(--bs-border-style) var(--bs-border-color) !important;
+}
+
+.border-top-0 {
+ border-top: 0 !important;
+}
+
+.border-end {
+ border-right: var(--bs-border-width) var(--bs-border-style) var(--bs-border-color) !important;
+}
+
+.border-end-0 {
+ border-right: 0 !important;
+}
+
+.border-bottom {
+ border-bottom: var(--bs-border-width) var(--bs-border-style) var(--bs-border-color) !important;
+}
+
+.border-bottom-0 {
+ border-bottom: 0 !important;
+}
+
+.border-start {
+ border-left: var(--bs-border-width) var(--bs-border-style) var(--bs-border-color) !important;
+}
+
+.border-start-0 {
+ border-left: 0 !important;
+}
+
+.border-primary {
+ --bs-border-opacity: 1;
+ border-color: rgba(var(--bs-primary-rgb), var(--bs-border-opacity)) !important;
+}
+
+.border-secondary {
+ --bs-border-opacity: 1;
+ border-color: rgba(var(--bs-secondary-rgb), var(--bs-border-opacity)) !important;
+}
+
+.border-success {
+ --bs-border-opacity: 1;
+ border-color: rgba(var(--bs-success-rgb), var(--bs-border-opacity)) !important;
+}
+
+.border-info {
+ --bs-border-opacity: 1;
+ border-color: rgba(var(--bs-info-rgb), var(--bs-border-opacity)) !important;
+}
+
+.border-warning {
+ --bs-border-opacity: 1;
+ border-color: rgba(var(--bs-warning-rgb), var(--bs-border-opacity)) !important;
+}
+
+.border-danger {
+ --bs-border-opacity: 1;
+ border-color: rgba(var(--bs-danger-rgb), var(--bs-border-opacity)) !important;
+}
+
+.border-light {
+ --bs-border-opacity: 1;
+ border-color: rgba(var(--bs-light-rgb), var(--bs-border-opacity)) !important;
+}
+
+.border-dark {
+ --bs-border-opacity: 1;
+ border-color: rgba(var(--bs-dark-rgb), var(--bs-border-opacity)) !important;
+}
+
+.border-black {
+ --bs-border-opacity: 1;
+ border-color: rgba(var(--bs-black-rgb), var(--bs-border-opacity)) !important;
+}
+
+.border-white {
+ --bs-border-opacity: 1;
+ border-color: rgba(var(--bs-white-rgb), var(--bs-border-opacity)) !important;
+}
+
+.border-primary-subtle {
+ border-color: var(--bs-primary-border-subtle) !important;
+}
+
+.border-secondary-subtle {
+ border-color: var(--bs-secondary-border-subtle) !important;
+}
+
+.border-success-subtle {
+ border-color: var(--bs-success-border-subtle) !important;
+}
+
+.border-info-subtle {
+ border-color: var(--bs-info-border-subtle) !important;
+}
+
+.border-warning-subtle {
+ border-color: var(--bs-warning-border-subtle) !important;
+}
+
+.border-danger-subtle {
+ border-color: var(--bs-danger-border-subtle) !important;
+}
+
+.border-light-subtle {
+ border-color: var(--bs-light-border-subtle) !important;
+}
+
+.border-dark-subtle {
+ border-color: var(--bs-dark-border-subtle) !important;
+}
+
+.border-1 {
+ border-width: 1px !important;
+}
+
+.border-2 {
+ border-width: 2px !important;
+}
+
+.border-3 {
+ border-width: 3px !important;
+}
+
+.border-4 {
+ border-width: 4px !important;
+}
+
+.border-5 {
+ border-width: 5px !important;
+}
+
+.border-opacity-10 {
+ --bs-border-opacity: 0.1;
+}
+
+.border-opacity-25 {
+ --bs-border-opacity: 0.25;
+}
+
+.border-opacity-50 {
+ --bs-border-opacity: 0.5;
+}
+
+.border-opacity-75 {
+ --bs-border-opacity: 0.75;
+}
+
+.border-opacity-100 {
+ --bs-border-opacity: 1;
+}
+
+.w-25 {
+ width: 25% !important;
+}
+
+.w-50 {
+ width: 50% !important;
+}
+
+.w-75 {
+ width: 75% !important;
+}
+
+.w-100 {
+ width: 100% !important;
+}
+
+.w-auto {
+ width: auto !important;
+}
+
+.mw-100 {
+ max-width: 100% !important;
+}
+
+.vw-100 {
+ width: 100vw !important;
+}
+
+.min-vw-100 {
+ min-width: 100vw !important;
+}
+
+.h-25 {
+ height: 25% !important;
+}
+
+.h-50 {
+ height: 50% !important;
+}
+
+.h-75 {
+ height: 75% !important;
+}
+
+.h-100 {
+ height: 100% !important;
+}
+
+.h-auto {
+ height: auto !important;
+}
+
+.mh-100 {
+ max-height: 100% !important;
+}
+
+.vh-100 {
+ height: 100vh !important;
+}
+
+.min-vh-100 {
+ min-height: 100vh !important;
+}
+
+.flex-fill {
+ flex: 1 1 auto !important;
+}
+
+.flex-row {
+ flex-direction: row !important;
+}
+
+.flex-column {
+ flex-direction: column !important;
+}
+
+.flex-row-reverse {
+ flex-direction: row-reverse !important;
+}
+
+.flex-column-reverse {
+ flex-direction: column-reverse !important;
+}
+
+.flex-grow-0 {
+ flex-grow: 0 !important;
+}
+
+.flex-grow-1 {
+ flex-grow: 1 !important;
+}
+
+.flex-shrink-0 {
+ flex-shrink: 0 !important;
+}
+
+.flex-shrink-1 {
+ flex-shrink: 1 !important;
+}
+
+.flex-wrap {
+ flex-wrap: wrap !important;
+}
+
+.flex-nowrap {
+ flex-wrap: nowrap !important;
+}
+
+.flex-wrap-reverse {
+ flex-wrap: wrap-reverse !important;
+}
+
+.justify-content-start {
+ justify-content: flex-start !important;
+}
+
+.justify-content-end {
+ justify-content: flex-end !important;
+}
+
+.justify-content-center {
+ justify-content: center !important;
+}
+
+.justify-content-between {
+ justify-content: space-between !important;
+}
+
+.justify-content-around {
+ justify-content: space-around !important;
+}
+
+.justify-content-evenly {
+ justify-content: space-evenly !important;
+}
+
+.align-items-start {
+ align-items: flex-start !important;
+}
+
+.align-items-end {
+ align-items: flex-end !important;
+}
+
+.align-items-center {
+ align-items: center !important;
+}
+
+.align-items-baseline {
+ align-items: baseline !important;
+}
+
+.align-items-stretch {
+ align-items: stretch !important;
+}
+
+.align-content-start {
+ align-content: flex-start !important;
+}
+
+.align-content-end {
+ align-content: flex-end !important;
+}
+
+.align-content-center {
+ align-content: center !important;
+}
+
+.align-content-between {
+ align-content: space-between !important;
+}
+
+.align-content-around {
+ align-content: space-around !important;
+}
+
+.align-content-stretch {
+ align-content: stretch !important;
+}
+
+.align-self-auto {
+ align-self: auto !important;
+}
+
+.align-self-start {
+ align-self: flex-start !important;
+}
+
+.align-self-end {
+ align-self: flex-end !important;
+}
+
+.align-self-center {
+ align-self: center !important;
+}
+
+.align-self-baseline {
+ align-self: baseline !important;
+}
+
+.align-self-stretch {
+ align-self: stretch !important;
+}
+
+.order-first {
+ order: -1 !important;
+}
+
+.order-0 {
+ order: 0 !important;
+}
+
+.order-1 {
+ order: 1 !important;
+}
+
+.order-2 {
+ order: 2 !important;
+}
+
+.order-3 {
+ order: 3 !important;
+}
+
+.order-4 {
+ order: 4 !important;
+}
+
+.order-5 {
+ order: 5 !important;
+}
+
+.order-last {
+ order: 6 !important;
+}
+
+.m-0 {
+ margin: 0 !important;
+}
+
+.m-1 {
+ margin: 0.25rem !important;
+}
+
+.m-2 {
+ margin: 0.5rem !important;
+}
+
+.m-3 {
+ margin: 1rem !important;
+}
+
+.m-4 {
+ margin: 1.5rem !important;
+}
+
+.m-5 {
+ margin: 3rem !important;
+}
+
+.m-auto {
+ margin: auto !important;
+}
+
+.mx-0 {
+ margin-right: 0 !important;
+ margin-left: 0 !important;
+}
+
+.mx-1 {
+ margin-right: 0.25rem !important;
+ margin-left: 0.25rem !important;
+}
+
+.mx-2 {
+ margin-right: 0.5rem !important;
+ margin-left: 0.5rem !important;
+}
+
+.mx-3 {
+ margin-right: 1rem !important;
+ margin-left: 1rem !important;
+}
+
+.mx-4 {
+ margin-right: 1.5rem !important;
+ margin-left: 1.5rem !important;
+}
+
+.mx-5 {
+ margin-right: 3rem !important;
+ margin-left: 3rem !important;
+}
+
+.mx-auto {
+ margin-right: auto !important;
+ margin-left: auto !important;
+}
+
+.my-0 {
+ margin-top: 0 !important;
+ margin-bottom: 0 !important;
+}
+
+.my-1 {
+ margin-top: 0.25rem !important;
+ margin-bottom: 0.25rem !important;
+}
+
+.my-2 {
+ margin-top: 0.5rem !important;
+ margin-bottom: 0.5rem !important;
+}
+
+.my-3 {
+ margin-top: 1rem !important;
+ margin-bottom: 1rem !important;
+}
+
+.my-4 {
+ margin-top: 1.5rem !important;
+ margin-bottom: 1.5rem !important;
+}
+
+.my-5 {
+ margin-top: 3rem !important;
+ margin-bottom: 3rem !important;
+}
+
+.my-auto {
+ margin-top: auto !important;
+ margin-bottom: auto !important;
+}
+
+.mt-0 {
+ margin-top: 0 !important;
+}
+
+.mt-1 {
+ margin-top: 0.25rem !important;
+}
+
+.mt-2 {
+ margin-top: 0.5rem !important;
+}
+
+.mt-3 {
+ margin-top: 1rem !important;
+}
+
+.mt-4 {
+ margin-top: 1.5rem !important;
+}
+
+.mt-5 {
+ margin-top: 3rem !important;
+}
+
+.mt-auto {
+ margin-top: auto !important;
+}
+
+.me-0 {
+ margin-right: 0 !important;
+}
+
+.me-1 {
+ margin-right: 0.25rem !important;
+}
+
+.me-2 {
+ margin-right: 0.5rem !important;
+}
+
+.me-3 {
+ margin-right: 1rem !important;
+}
+
+.me-4 {
+ margin-right: 1.5rem !important;
+}
+
+.me-5 {
+ margin-right: 3rem !important;
+}
+
+.me-auto {
+ margin-right: auto !important;
+}
+
+.mb-0 {
+ margin-bottom: 0 !important;
+}
+
+.mb-1 {
+ margin-bottom: 0.25rem !important;
+}
+
+.mb-2 {
+ margin-bottom: 0.5rem !important;
+}
+
+.mb-3 {
+ margin-bottom: 1rem !important;
+}
+
+.mb-4 {
+ margin-bottom: 1.5rem !important;
+}
+
+.mb-5 {
+ margin-bottom: 3rem !important;
+}
+
+.mb-auto {
+ margin-bottom: auto !important;
+}
+
+.ms-0 {
+ margin-left: 0 !important;
+}
+
+.ms-1 {
+ margin-left: 0.25rem !important;
+}
+
+.ms-2 {
+ margin-left: 0.5rem !important;
+}
+
+.ms-3 {
+ margin-left: 1rem !important;
+}
+
+.ms-4 {
+ margin-left: 1.5rem !important;
+}
+
+.ms-5 {
+ margin-left: 3rem !important;
+}
+
+.ms-auto {
+ margin-left: auto !important;
+}
+
+.p-0 {
+ padding: 0 !important;
+}
+
+.p-1 {
+ padding: 0.25rem !important;
+}
+
+.p-2 {
+ padding: 0.5rem !important;
+}
+
+.p-3 {
+ padding: 1rem !important;
+}
+
+.p-4 {
+ padding: 1.5rem !important;
+}
+
+.p-5 {
+ padding: 3rem !important;
+}
+
+.px-0 {
+ padding-right: 0 !important;
+ padding-left: 0 !important;
+}
+
+.px-1 {
+ padding-right: 0.25rem !important;
+ padding-left: 0.25rem !important;
+}
+
+.px-2 {
+ padding-right: 0.5rem !important;
+ padding-left: 0.5rem !important;
+}
+
+.px-3 {
+ padding-right: 1rem !important;
+ padding-left: 1rem !important;
+}
+
+.px-4 {
+ padding-right: 1.5rem !important;
+ padding-left: 1.5rem !important;
+}
+
+.px-5 {
+ padding-right: 3rem !important;
+ padding-left: 3rem !important;
+}
+
+.py-0 {
+ padding-top: 0 !important;
+ padding-bottom: 0 !important;
+}
+
+.py-1 {
+ padding-top: 0.25rem !important;
+ padding-bottom: 0.25rem !important;
+}
+
+.py-2 {
+ padding-top: 0.5rem !important;
+ padding-bottom: 0.5rem !important;
+}
+
+.py-3 {
+ padding-top: 1rem !important;
+ padding-bottom: 1rem !important;
+}
+
+.py-4 {
+ padding-top: 1.5rem !important;
+ padding-bottom: 1.5rem !important;
+}
+
+.py-5 {
+ padding-top: 3rem !important;
+ padding-bottom: 3rem !important;
+}
+
+.pt-0 {
+ padding-top: 0 !important;
+}
+
+.pt-1 {
+ padding-top: 0.25rem !important;
+}
+
+.pt-2 {
+ padding-top: 0.5rem !important;
+}
+
+.pt-3 {
+ padding-top: 1rem !important;
+}
+
+.pt-4 {
+ padding-top: 1.5rem !important;
+}
+
+.pt-5 {
+ padding-top: 3rem !important;
+}
+
+.pe-0 {
+ padding-right: 0 !important;
+}
+
+.pe-1 {
+ padding-right: 0.25rem !important;
+}
+
+.pe-2 {
+ padding-right: 0.5rem !important;
+}
+
+.pe-3 {
+ padding-right: 1rem !important;
+}
+
+.pe-4 {
+ padding-right: 1.5rem !important;
+}
+
+.pe-5 {
+ padding-right: 3rem !important;
+}
+
+.pb-0 {
+ padding-bottom: 0 !important;
+}
+
+.pb-1 {
+ padding-bottom: 0.25rem !important;
+}
+
+.pb-2 {
+ padding-bottom: 0.5rem !important;
+}
+
+.pb-3 {
+ padding-bottom: 1rem !important;
+}
+
+.pb-4 {
+ padding-bottom: 1.5rem !important;
+}
+
+.pb-5 {
+ padding-bottom: 3rem !important;
+}
+
+.ps-0 {
+ padding-left: 0 !important;
+}
+
+.ps-1 {
+ padding-left: 0.25rem !important;
+}
+
+.ps-2 {
+ padding-left: 0.5rem !important;
+}
+
+.ps-3 {
+ padding-left: 1rem !important;
+}
+
+.ps-4 {
+ padding-left: 1.5rem !important;
+}
+
+.ps-5 {
+ padding-left: 3rem !important;
+}
+
+.gap-0 {
+ gap: 0 !important;
+}
+
+.gap-1 {
+ gap: 0.25rem !important;
+}
+
+.gap-2 {
+ gap: 0.5rem !important;
+}
+
+.gap-3 {
+ gap: 1rem !important;
+}
+
+.gap-4 {
+ gap: 1.5rem !important;
+}
+
+.gap-5 {
+ gap: 3rem !important;
+}
+
+.row-gap-0 {
+ row-gap: 0 !important;
+}
+
+.row-gap-1 {
+ row-gap: 0.25rem !important;
+}
+
+.row-gap-2 {
+ row-gap: 0.5rem !important;
+}
+
+.row-gap-3 {
+ row-gap: 1rem !important;
+}
+
+.row-gap-4 {
+ row-gap: 1.5rem !important;
+}
+
+.row-gap-5 {
+ row-gap: 3rem !important;
+}
+
+.column-gap-0 {
+ -moz-column-gap: 0 !important;
+ column-gap: 0 !important;
+}
+
+.column-gap-1 {
+ -moz-column-gap: 0.25rem !important;
+ column-gap: 0.25rem !important;
+}
+
+.column-gap-2 {
+ -moz-column-gap: 0.5rem !important;
+ column-gap: 0.5rem !important;
+}
+
+.column-gap-3 {
+ -moz-column-gap: 1rem !important;
+ column-gap: 1rem !important;
+}
+
+.column-gap-4 {
+ -moz-column-gap: 1.5rem !important;
+ column-gap: 1.5rem !important;
+}
+
+.column-gap-5 {
+ -moz-column-gap: 3rem !important;
+ column-gap: 3rem !important;
+}
+
+.font-monospace {
+ font-family: var(--bs-font-monospace) !important;
+}
+
+.fs-1 {
+ font-size: calc(1.375rem + 1.5vw) !important;
+}
+
+.fs-2 {
+ font-size: calc(1.325rem + 0.9vw) !important;
+}
+
+.fs-3 {
+ font-size: calc(1.3rem + 0.6vw) !important;
+}
+
+.fs-4 {
+ font-size: calc(1.275rem + 0.3vw) !important;
+}
+
+.fs-5 {
+ font-size: 1.25rem !important;
+}
+
+.fs-6 {
+ font-size: 1rem !important;
+}
+
+.fst-italic {
+ font-style: italic !important;
+}
+
+.fst-normal {
+ font-style: normal !important;
+}
+
+.fw-lighter {
+ font-weight: lighter !important;
+}
+
+.fw-light {
+ font-weight: 300 !important;
+}
+
+.fw-normal {
+ font-weight: 400 !important;
+}
+
+.fw-medium {
+ font-weight: 500 !important;
+}
+
+.fw-semibold {
+ font-weight: 600 !important;
+}
+
+.fw-bold {
+ font-weight: 700 !important;
+}
+
+.fw-bolder {
+ font-weight: bolder !important;
+}
+
+.lh-1 {
+ line-height: 1 !important;
+}
+
+.lh-sm {
+ line-height: 1.25 !important;
+}
+
+.lh-base {
+ line-height: 1.5 !important;
+}
+
+.lh-lg {
+ line-height: 2 !important;
+}
+
+.text-start {
+ text-align: left !important;
+}
+
+.text-end {
+ text-align: right !important;
+}
+
+.text-center {
+ text-align: center !important;
+}
+
+.text-decoration-none {
+ text-decoration: none !important;
+}
+
+.text-decoration-underline {
+ text-decoration: underline !important;
+}
+
+.text-decoration-line-through {
+ text-decoration: line-through !important;
+}
+
+.text-lowercase {
+ text-transform: lowercase !important;
+}
+
+.text-uppercase {
+ text-transform: uppercase !important;
+}
+
+.text-capitalize {
+ text-transform: capitalize !important;
+}
+
+.text-wrap {
+ white-space: normal !important;
+}
+
+.text-nowrap {
+ white-space: nowrap !important;
+}
+
+/* rtl:begin:remove */
+.text-break {
+ word-wrap: break-word !important;
+ word-break: break-word !important;
+}
+
+/* rtl:end:remove */
+.text-primary {
+ --bs-text-opacity: 1;
+ color: rgba(var(--bs-primary-rgb), var(--bs-text-opacity)) !important;
+}
+
+.text-secondary {
+ --bs-text-opacity: 1;
+ color: rgba(var(--bs-secondary-rgb), var(--bs-text-opacity)) !important;
+}
+
+.text-success {
+ --bs-text-opacity: 1;
+ color: rgba(var(--bs-success-rgb), var(--bs-text-opacity)) !important;
+}
+
+.text-info {
+ --bs-text-opacity: 1;
+ color: rgba(var(--bs-info-rgb), var(--bs-text-opacity)) !important;
+}
+
+.text-warning {
+ --bs-text-opacity: 1;
+ color: rgba(var(--bs-warning-rgb), var(--bs-text-opacity)) !important;
+}
+
+.text-danger {
+ --bs-text-opacity: 1;
+ color: rgba(var(--bs-danger-rgb), var(--bs-text-opacity)) !important;
+}
+
+.text-light {
+ --bs-text-opacity: 1;
+ color: rgba(var(--bs-light-rgb), var(--bs-text-opacity)) !important;
+}
+
+.text-dark {
+ --bs-text-opacity: 1;
+ color: rgba(var(--bs-dark-rgb), var(--bs-text-opacity)) !important;
+}
+
+.text-black {
+ --bs-text-opacity: 1;
+ color: rgba(var(--bs-black-rgb), var(--bs-text-opacity)) !important;
+}
+
+.text-white {
+ --bs-text-opacity: 1;
+ color: rgba(var(--bs-white-rgb), var(--bs-text-opacity)) !important;
+}
+
+.text-body {
+ --bs-text-opacity: 1;
+ color: rgba(var(--bs-body-color-rgb), var(--bs-text-opacity)) !important;
+}
+
+.text-muted {
+ --bs-text-opacity: 1;
+ color: var(--bs-secondary-color) !important;
+}
+
+.text-black-50 {
+ --bs-text-opacity: 1;
+ color: rgba(0, 0, 0, 0.5) !important;
+}
+
+.text-white-50 {
+ --bs-text-opacity: 1;
+ color: rgba(255, 255, 255, 0.5) !important;
+}
+
+.text-body-secondary {
+ --bs-text-opacity: 1;
+ color: var(--bs-secondary-color) !important;
+}
+
+.text-body-tertiary {
+ --bs-text-opacity: 1;
+ color: var(--bs-tertiary-color) !important;
+}
+
+.text-body-emphasis {
+ --bs-text-opacity: 1;
+ color: var(--bs-emphasis-color) !important;
+}
+
+.text-reset {
+ --bs-text-opacity: 1;
+ color: inherit !important;
+}
+
+.text-opacity-25 {
+ --bs-text-opacity: 0.25;
+}
+
+.text-opacity-50 {
+ --bs-text-opacity: 0.5;
+}
+
+.text-opacity-75 {
+ --bs-text-opacity: 0.75;
+}
+
+.text-opacity-100 {
+ --bs-text-opacity: 1;
+}
+
+.text-primary-emphasis {
+ color: var(--bs-primary-text-emphasis) !important;
+}
+
+.text-secondary-emphasis {
+ color: var(--bs-secondary-text-emphasis) !important;
+}
+
+.text-success-emphasis {
+ color: var(--bs-success-text-emphasis) !important;
+}
+
+.text-info-emphasis {
+ color: var(--bs-info-text-emphasis) !important;
+}
+
+.text-warning-emphasis {
+ color: var(--bs-warning-text-emphasis) !important;
+}
+
+.text-danger-emphasis {
+ color: var(--bs-danger-text-emphasis) !important;
+}
+
+.text-light-emphasis {
+ color: var(--bs-light-text-emphasis) !important;
+}
+
+.text-dark-emphasis {
+ color: var(--bs-dark-text-emphasis) !important;
+}
+
+.link-opacity-10 {
+ --bs-link-opacity: 0.1;
+}
+
+.link-opacity-10-hover:hover {
+ --bs-link-opacity: 0.1;
+}
+
+.link-opacity-25 {
+ --bs-link-opacity: 0.25;
+}
+
+.link-opacity-25-hover:hover {
+ --bs-link-opacity: 0.25;
+}
+
+.link-opacity-50 {
+ --bs-link-opacity: 0.5;
+}
+
+.link-opacity-50-hover:hover {
+ --bs-link-opacity: 0.5;
+}
+
+.link-opacity-75 {
+ --bs-link-opacity: 0.75;
+}
+
+.link-opacity-75-hover:hover {
+ --bs-link-opacity: 0.75;
+}
+
+.link-opacity-100 {
+ --bs-link-opacity: 1;
+}
+
+.link-opacity-100-hover:hover {
+ --bs-link-opacity: 1;
+}
+
+.link-offset-1 {
+ text-underline-offset: 0.125em !important;
+}
+
+.link-offset-1-hover:hover {
+ text-underline-offset: 0.125em !important;
+}
+
+.link-offset-2 {
+ text-underline-offset: 0.25em !important;
+}
+
+.link-offset-2-hover:hover {
+ text-underline-offset: 0.25em !important;
+}
+
+.link-offset-3 {
+ text-underline-offset: 0.375em !important;
+}
+
+.link-offset-3-hover:hover {
+ text-underline-offset: 0.375em !important;
+}
+
+.link-underline-primary {
+ --bs-link-underline-opacity: 1;
+ -webkit-text-decoration-color: rgba(var(--bs-primary-rgb), var(--bs-link-underline-opacity)) !important;
+ text-decoration-color: rgba(var(--bs-primary-rgb), var(--bs-link-underline-opacity)) !important;
+}
+
+.link-underline-secondary {
+ --bs-link-underline-opacity: 1;
+ -webkit-text-decoration-color: rgba(var(--bs-secondary-rgb), var(--bs-link-underline-opacity)) !important;
+ text-decoration-color: rgba(var(--bs-secondary-rgb), var(--bs-link-underline-opacity)) !important;
+}
+
+.link-underline-success {
+ --bs-link-underline-opacity: 1;
+ -webkit-text-decoration-color: rgba(var(--bs-success-rgb), var(--bs-link-underline-opacity)) !important;
+ text-decoration-color: rgba(var(--bs-success-rgb), var(--bs-link-underline-opacity)) !important;
+}
+
+.link-underline-info {
+ --bs-link-underline-opacity: 1;
+ -webkit-text-decoration-color: rgba(var(--bs-info-rgb), var(--bs-link-underline-opacity)) !important;
+ text-decoration-color: rgba(var(--bs-info-rgb), var(--bs-link-underline-opacity)) !important;
+}
+
+.link-underline-warning {
+ --bs-link-underline-opacity: 1;
+ -webkit-text-decoration-color: rgba(var(--bs-warning-rgb), var(--bs-link-underline-opacity)) !important;
+ text-decoration-color: rgba(var(--bs-warning-rgb), var(--bs-link-underline-opacity)) !important;
+}
+
+.link-underline-danger {
+ --bs-link-underline-opacity: 1;
+ -webkit-text-decoration-color: rgba(var(--bs-danger-rgb), var(--bs-link-underline-opacity)) !important;
+ text-decoration-color: rgba(var(--bs-danger-rgb), var(--bs-link-underline-opacity)) !important;
+}
+
+.link-underline-light {
+ --bs-link-underline-opacity: 1;
+ -webkit-text-decoration-color: rgba(var(--bs-light-rgb), var(--bs-link-underline-opacity)) !important;
+ text-decoration-color: rgba(var(--bs-light-rgb), var(--bs-link-underline-opacity)) !important;
+}
+
+.link-underline-dark {
+ --bs-link-underline-opacity: 1;
+ -webkit-text-decoration-color: rgba(var(--bs-dark-rgb), var(--bs-link-underline-opacity)) !important;
+ text-decoration-color: rgba(var(--bs-dark-rgb), var(--bs-link-underline-opacity)) !important;
+}
+
+.link-underline {
+ --bs-link-underline-opacity: 1;
+ -webkit-text-decoration-color: rgba(var(--bs-link-color-rgb), var(--bs-link-underline-opacity, 1)) !important;
+ text-decoration-color: rgba(var(--bs-link-color-rgb), var(--bs-link-underline-opacity, 1)) !important;
+}
+
+.link-underline-opacity-0 {
+ --bs-link-underline-opacity: 0;
+}
+
+.link-underline-opacity-0-hover:hover {
+ --bs-link-underline-opacity: 0;
+}
+
+.link-underline-opacity-10 {
+ --bs-link-underline-opacity: 0.1;
+}
+
+.link-underline-opacity-10-hover:hover {
+ --bs-link-underline-opacity: 0.1;
+}
+
+.link-underline-opacity-25 {
+ --bs-link-underline-opacity: 0.25;
+}
+
+.link-underline-opacity-25-hover:hover {
+ --bs-link-underline-opacity: 0.25;
+}
+
+.link-underline-opacity-50 {
+ --bs-link-underline-opacity: 0.5;
+}
+
+.link-underline-opacity-50-hover:hover {
+ --bs-link-underline-opacity: 0.5;
+}
+
+.link-underline-opacity-75 {
+ --bs-link-underline-opacity: 0.75;
+}
+
+.link-underline-opacity-75-hover:hover {
+ --bs-link-underline-opacity: 0.75;
+}
+
+.link-underline-opacity-100 {
+ --bs-link-underline-opacity: 1;
+}
+
+.link-underline-opacity-100-hover:hover {
+ --bs-link-underline-opacity: 1;
+}
+
+.bg-primary {
+ --bs-bg-opacity: 1;
+ background-color: rgba(var(--bs-primary-rgb), var(--bs-bg-opacity)) !important;
+}
+
+.bg-secondary {
+ --bs-bg-opacity: 1;
+ background-color: rgba(var(--bs-secondary-rgb), var(--bs-bg-opacity)) !important;
+}
+
+.bg-success {
+ --bs-bg-opacity: 1;
+ background-color: rgba(var(--bs-success-rgb), var(--bs-bg-opacity)) !important;
+}
+
+.bg-info {
+ --bs-bg-opacity: 1;
+ background-color: rgba(var(--bs-info-rgb), var(--bs-bg-opacity)) !important;
+}
+
+.bg-warning {
+ --bs-bg-opacity: 1;
+ background-color: rgba(var(--bs-warning-rgb), var(--bs-bg-opacity)) !important;
+}
+
+.bg-danger {
+ --bs-bg-opacity: 1;
+ background-color: rgba(var(--bs-danger-rgb), var(--bs-bg-opacity)) !important;
+}
+
+.bg-light {
+ --bs-bg-opacity: 1;
+ background-color: rgba(var(--bs-light-rgb), var(--bs-bg-opacity)) !important;
+}
+
+.bg-dark {
+ --bs-bg-opacity: 1;
+ background-color: rgba(var(--bs-dark-rgb), var(--bs-bg-opacity)) !important;
+}
+
+.bg-black {
+ --bs-bg-opacity: 1;
+ background-color: rgba(var(--bs-black-rgb), var(--bs-bg-opacity)) !important;
+}
+
+.bg-white {
+ --bs-bg-opacity: 1;
+ background-color: rgba(var(--bs-white-rgb), var(--bs-bg-opacity)) !important;
+}
+
+.bg-body {
+ --bs-bg-opacity: 1;
+ background-color: rgba(var(--bs-body-bg-rgb), var(--bs-bg-opacity)) !important;
+}
+
+.bg-transparent {
+ --bs-bg-opacity: 1;
+ background-color: transparent !important;
+}
+
+.bg-body-secondary {
+ --bs-bg-opacity: 1;
+ background-color: rgba(var(--bs-secondary-bg-rgb), var(--bs-bg-opacity)) !important;
+}
+
+.bg-body-tertiary {
+ --bs-bg-opacity: 1;
+ background-color: rgba(var(--bs-tertiary-bg-rgb), var(--bs-bg-opacity)) !important;
+}
+
+.bg-opacity-10 {
+ --bs-bg-opacity: 0.1;
+}
+
+.bg-opacity-25 {
+ --bs-bg-opacity: 0.25;
+}
+
+.bg-opacity-50 {
+ --bs-bg-opacity: 0.5;
+}
+
+.bg-opacity-75 {
+ --bs-bg-opacity: 0.75;
+}
+
+.bg-opacity-100 {
+ --bs-bg-opacity: 1;
+}
+
+.bg-primary-subtle {
+ background-color: var(--bs-primary-bg-subtle) !important;
+}
+
+.bg-secondary-subtle {
+ background-color: var(--bs-secondary-bg-subtle) !important;
+}
+
+.bg-success-subtle {
+ background-color: var(--bs-success-bg-subtle) !important;
+}
+
+.bg-info-subtle {
+ background-color: var(--bs-info-bg-subtle) !important;
+}
+
+.bg-warning-subtle {
+ background-color: var(--bs-warning-bg-subtle) !important;
+}
+
+.bg-danger-subtle {
+ background-color: var(--bs-danger-bg-subtle) !important;
+}
+
+.bg-light-subtle {
+ background-color: var(--bs-light-bg-subtle) !important;
+}
+
+.bg-dark-subtle {
+ background-color: var(--bs-dark-bg-subtle) !important;
+}
+
+.bg-gradient {
+ background-image: var(--bs-gradient) !important;
+}
+
+.user-select-all {
+ -webkit-user-select: all !important;
+ -moz-user-select: all !important;
+ user-select: all !important;
+}
+
+.user-select-auto {
+ -webkit-user-select: auto !important;
+ -moz-user-select: auto !important;
+ user-select: auto !important;
+}
+
+.user-select-none {
+ -webkit-user-select: none !important;
+ -moz-user-select: none !important;
+ user-select: none !important;
+}
+
+.pe-none {
+ pointer-events: none !important;
+}
+
+.pe-auto {
+ pointer-events: auto !important;
+}
+
+.rounded {
+ border-radius: var(--bs-border-radius) !important;
+}
+
+.rounded-0 {
+ border-radius: 0 !important;
+}
+
+.rounded-1 {
+ border-radius: var(--bs-border-radius-sm) !important;
+}
+
+.rounded-2 {
+ border-radius: var(--bs-border-radius) !important;
+}
+
+.rounded-3 {
+ border-radius: var(--bs-border-radius-lg) !important;
+}
+
+.rounded-4 {
+ border-radius: var(--bs-border-radius-xl) !important;
+}
+
+.rounded-5 {
+ border-radius: var(--bs-border-radius-xxl) !important;
+}
+
+.rounded-circle {
+ border-radius: 50% !important;
+}
+
+.rounded-pill {
+ border-radius: var(--bs-border-radius-pill) !important;
+}
+
+.rounded-top {
+ border-top-left-radius: var(--bs-border-radius) !important;
+ border-top-right-radius: var(--bs-border-radius) !important;
+}
+
+.rounded-top-0 {
+ border-top-left-radius: 0 !important;
+ border-top-right-radius: 0 !important;
+}
+
+.rounded-top-1 {
+ border-top-left-radius: var(--bs-border-radius-sm) !important;
+ border-top-right-radius: var(--bs-border-radius-sm) !important;
+}
+
+.rounded-top-2 {
+ border-top-left-radius: var(--bs-border-radius) !important;
+ border-top-right-radius: var(--bs-border-radius) !important;
+}
+
+.rounded-top-3 {
+ border-top-left-radius: var(--bs-border-radius-lg) !important;
+ border-top-right-radius: var(--bs-border-radius-lg) !important;
+}
+
+.rounded-top-4 {
+ border-top-left-radius: var(--bs-border-radius-xl) !important;
+ border-top-right-radius: var(--bs-border-radius-xl) !important;
+}
+
+.rounded-top-5 {
+ border-top-left-radius: var(--bs-border-radius-xxl) !important;
+ border-top-right-radius: var(--bs-border-radius-xxl) !important;
+}
+
+.rounded-top-circle {
+ border-top-left-radius: 50% !important;
+ border-top-right-radius: 50% !important;
+}
+
+.rounded-top-pill {
+ border-top-left-radius: var(--bs-border-radius-pill) !important;
+ border-top-right-radius: var(--bs-border-radius-pill) !important;
+}
+
+.rounded-end {
+ border-top-right-radius: var(--bs-border-radius) !important;
+ border-bottom-right-radius: var(--bs-border-radius) !important;
+}
+
+.rounded-end-0 {
+ border-top-right-radius: 0 !important;
+ border-bottom-right-radius: 0 !important;
+}
+
+.rounded-end-1 {
+ border-top-right-radius: var(--bs-border-radius-sm) !important;
+ border-bottom-right-radius: var(--bs-border-radius-sm) !important;
+}
+
+.rounded-end-2 {
+ border-top-right-radius: var(--bs-border-radius) !important;
+ border-bottom-right-radius: var(--bs-border-radius) !important;
+}
+
+.rounded-end-3 {
+ border-top-right-radius: var(--bs-border-radius-lg) !important;
+ border-bottom-right-radius: var(--bs-border-radius-lg) !important;
+}
+
+.rounded-end-4 {
+ border-top-right-radius: var(--bs-border-radius-xl) !important;
+ border-bottom-right-radius: var(--bs-border-radius-xl) !important;
+}
+
+.rounded-end-5 {
+ border-top-right-radius: var(--bs-border-radius-xxl) !important;
+ border-bottom-right-radius: var(--bs-border-radius-xxl) !important;
+}
+
+.rounded-end-circle {
+ border-top-right-radius: 50% !important;
+ border-bottom-right-radius: 50% !important;
+}
+
+.rounded-end-pill {
+ border-top-right-radius: var(--bs-border-radius-pill) !important;
+ border-bottom-right-radius: var(--bs-border-radius-pill) !important;
+}
+
+.rounded-bottom {
+ border-bottom-right-radius: var(--bs-border-radius) !important;
+ border-bottom-left-radius: var(--bs-border-radius) !important;
+}
+
+.rounded-bottom-0 {
+ border-bottom-right-radius: 0 !important;
+ border-bottom-left-radius: 0 !important;
+}
+
+.rounded-bottom-1 {
+ border-bottom-right-radius: var(--bs-border-radius-sm) !important;
+ border-bottom-left-radius: var(--bs-border-radius-sm) !important;
+}
+
+.rounded-bottom-2 {
+ border-bottom-right-radius: var(--bs-border-radius) !important;
+ border-bottom-left-radius: var(--bs-border-radius) !important;
+}
+
+.rounded-bottom-3 {
+ border-bottom-right-radius: var(--bs-border-radius-lg) !important;
+ border-bottom-left-radius: var(--bs-border-radius-lg) !important;
+}
+
+.rounded-bottom-4 {
+ border-bottom-right-radius: var(--bs-border-radius-xl) !important;
+ border-bottom-left-radius: var(--bs-border-radius-xl) !important;
+}
+
+.rounded-bottom-5 {
+ border-bottom-right-radius: var(--bs-border-radius-xxl) !important;
+ border-bottom-left-radius: var(--bs-border-radius-xxl) !important;
+}
+
+.rounded-bottom-circle {
+ border-bottom-right-radius: 50% !important;
+ border-bottom-left-radius: 50% !important;
+}
+
+.rounded-bottom-pill {
+ border-bottom-right-radius: var(--bs-border-radius-pill) !important;
+ border-bottom-left-radius: var(--bs-border-radius-pill) !important;
+}
+
+.rounded-start {
+ border-bottom-left-radius: var(--bs-border-radius) !important;
+ border-top-left-radius: var(--bs-border-radius) !important;
+}
+
+.rounded-start-0 {
+ border-bottom-left-radius: 0 !important;
+ border-top-left-radius: 0 !important;
+}
+
+.rounded-start-1 {
+ border-bottom-left-radius: var(--bs-border-radius-sm) !important;
+ border-top-left-radius: var(--bs-border-radius-sm) !important;
+}
+
+.rounded-start-2 {
+ border-bottom-left-radius: var(--bs-border-radius) !important;
+ border-top-left-radius: var(--bs-border-radius) !important;
+}
+
+.rounded-start-3 {
+ border-bottom-left-radius: var(--bs-border-radius-lg) !important;
+ border-top-left-radius: var(--bs-border-radius-lg) !important;
+}
+
+.rounded-start-4 {
+ border-bottom-left-radius: var(--bs-border-radius-xl) !important;
+ border-top-left-radius: var(--bs-border-radius-xl) !important;
+}
+
+.rounded-start-5 {
+ border-bottom-left-radius: var(--bs-border-radius-xxl) !important;
+ border-top-left-radius: var(--bs-border-radius-xxl) !important;
+}
+
+.rounded-start-circle {
+ border-bottom-left-radius: 50% !important;
+ border-top-left-radius: 50% !important;
+}
+
+.rounded-start-pill {
+ border-bottom-left-radius: var(--bs-border-radius-pill) !important;
+ border-top-left-radius: var(--bs-border-radius-pill) !important;
+}
+
+.visible {
+ visibility: visible !important;
+}
+
+.invisible {
+ visibility: hidden !important;
+}
+
+.z-n1 {
+ z-index: -1 !important;
+}
+
+.z-0 {
+ z-index: 0 !important;
+}
+
+.z-1 {
+ z-index: 1 !important;
+}
+
+.z-2 {
+ z-index: 2 !important;
+}
+
+.z-3 {
+ z-index: 3 !important;
+}
+
+@media (min-width: 576px) {
+ .float-sm-start {
+ float: left !important;
+ }
+ .float-sm-end {
+ float: right !important;
+ }
+ .float-sm-none {
+ float: none !important;
+ }
+ .object-fit-sm-contain {
+ -o-object-fit: contain !important;
+ object-fit: contain !important;
+ }
+ .object-fit-sm-cover {
+ -o-object-fit: cover !important;
+ object-fit: cover !important;
+ }
+ .object-fit-sm-fill {
+ -o-object-fit: fill !important;
+ object-fit: fill !important;
+ }
+ .object-fit-sm-scale {
+ -o-object-fit: scale-down !important;
+ object-fit: scale-down !important;
+ }
+ .object-fit-sm-none {
+ -o-object-fit: none !important;
+ object-fit: none !important;
+ }
+ .d-sm-inline {
+ display: inline !important;
+ }
+ .d-sm-inline-block {
+ display: inline-block !important;
+ }
+ .d-sm-block {
+ display: block !important;
+ }
+ .d-sm-grid {
+ display: grid !important;
+ }
+ .d-sm-inline-grid {
+ display: inline-grid !important;
+ }
+ .d-sm-table {
+ display: table !important;
+ }
+ .d-sm-table-row {
+ display: table-row !important;
+ }
+ .d-sm-table-cell {
+ display: table-cell !important;
+ }
+ .d-sm-flex {
+ display: flex !important;
+ }
+ .d-sm-inline-flex {
+ display: inline-flex !important;
+ }
+ .d-sm-none {
+ display: none !important;
+ }
+ .flex-sm-fill {
+ flex: 1 1 auto !important;
+ }
+ .flex-sm-row {
+ flex-direction: row !important;
+ }
+ .flex-sm-column {
+ flex-direction: column !important;
+ }
+ .flex-sm-row-reverse {
+ flex-direction: row-reverse !important;
+ }
+ .flex-sm-column-reverse {
+ flex-direction: column-reverse !important;
+ }
+ .flex-sm-grow-0 {
+ flex-grow: 0 !important;
+ }
+ .flex-sm-grow-1 {
+ flex-grow: 1 !important;
+ }
+ .flex-sm-shrink-0 {
+ flex-shrink: 0 !important;
+ }
+ .flex-sm-shrink-1 {
+ flex-shrink: 1 !important;
+ }
+ .flex-sm-wrap {
+ flex-wrap: wrap !important;
+ }
+ .flex-sm-nowrap {
+ flex-wrap: nowrap !important;
+ }
+ .flex-sm-wrap-reverse {
+ flex-wrap: wrap-reverse !important;
+ }
+ .justify-content-sm-start {
+ justify-content: flex-start !important;
+ }
+ .justify-content-sm-end {
+ justify-content: flex-end !important;
+ }
+ .justify-content-sm-center {
+ justify-content: center !important;
+ }
+ .justify-content-sm-between {
+ justify-content: space-between !important;
+ }
+ .justify-content-sm-around {
+ justify-content: space-around !important;
+ }
+ .justify-content-sm-evenly {
+ justify-content: space-evenly !important;
+ }
+ .align-items-sm-start {
+ align-items: flex-start !important;
+ }
+ .align-items-sm-end {
+ align-items: flex-end !important;
+ }
+ .align-items-sm-center {
+ align-items: center !important;
+ }
+ .align-items-sm-baseline {
+ align-items: baseline !important;
+ }
+ .align-items-sm-stretch {
+ align-items: stretch !important;
+ }
+ .align-content-sm-start {
+ align-content: flex-start !important;
+ }
+ .align-content-sm-end {
+ align-content: flex-end !important;
+ }
+ .align-content-sm-center {
+ align-content: center !important;
+ }
+ .align-content-sm-between {
+ align-content: space-between !important;
+ }
+ .align-content-sm-around {
+ align-content: space-around !important;
+ }
+ .align-content-sm-stretch {
+ align-content: stretch !important;
+ }
+ .align-self-sm-auto {
+ align-self: auto !important;
+ }
+ .align-self-sm-start {
+ align-self: flex-start !important;
+ }
+ .align-self-sm-end {
+ align-self: flex-end !important;
+ }
+ .align-self-sm-center {
+ align-self: center !important;
+ }
+ .align-self-sm-baseline {
+ align-self: baseline !important;
+ }
+ .align-self-sm-stretch {
+ align-self: stretch !important;
+ }
+ .order-sm-first {
+ order: -1 !important;
+ }
+ .order-sm-0 {
+ order: 0 !important;
+ }
+ .order-sm-1 {
+ order: 1 !important;
+ }
+ .order-sm-2 {
+ order: 2 !important;
+ }
+ .order-sm-3 {
+ order: 3 !important;
+ }
+ .order-sm-4 {
+ order: 4 !important;
+ }
+ .order-sm-5 {
+ order: 5 !important;
+ }
+ .order-sm-last {
+ order: 6 !important;
+ }
+ .m-sm-0 {
+ margin: 0 !important;
+ }
+ .m-sm-1 {
+ margin: 0.25rem !important;
+ }
+ .m-sm-2 {
+ margin: 0.5rem !important;
+ }
+ .m-sm-3 {
+ margin: 1rem !important;
+ }
+ .m-sm-4 {
+ margin: 1.5rem !important;
+ }
+ .m-sm-5 {
+ margin: 3rem !important;
+ }
+ .m-sm-auto {
+ margin: auto !important;
+ }
+ .mx-sm-0 {
+ margin-right: 0 !important;
+ margin-left: 0 !important;
+ }
+ .mx-sm-1 {
+ margin-right: 0.25rem !important;
+ margin-left: 0.25rem !important;
+ }
+ .mx-sm-2 {
+ margin-right: 0.5rem !important;
+ margin-left: 0.5rem !important;
+ }
+ .mx-sm-3 {
+ margin-right: 1rem !important;
+ margin-left: 1rem !important;
+ }
+ .mx-sm-4 {
+ margin-right: 1.5rem !important;
+ margin-left: 1.5rem !important;
+ }
+ .mx-sm-5 {
+ margin-right: 3rem !important;
+ margin-left: 3rem !important;
+ }
+ .mx-sm-auto {
+ margin-right: auto !important;
+ margin-left: auto !important;
+ }
+ .my-sm-0 {
+ margin-top: 0 !important;
+ margin-bottom: 0 !important;
+ }
+ .my-sm-1 {
+ margin-top: 0.25rem !important;
+ margin-bottom: 0.25rem !important;
+ }
+ .my-sm-2 {
+ margin-top: 0.5rem !important;
+ margin-bottom: 0.5rem !important;
+ }
+ .my-sm-3 {
+ margin-top: 1rem !important;
+ margin-bottom: 1rem !important;
+ }
+ .my-sm-4 {
+ margin-top: 1.5rem !important;
+ margin-bottom: 1.5rem !important;
+ }
+ .my-sm-5 {
+ margin-top: 3rem !important;
+ margin-bottom: 3rem !important;
+ }
+ .my-sm-auto {
+ margin-top: auto !important;
+ margin-bottom: auto !important;
+ }
+ .mt-sm-0 {
+ margin-top: 0 !important;
+ }
+ .mt-sm-1 {
+ margin-top: 0.25rem !important;
+ }
+ .mt-sm-2 {
+ margin-top: 0.5rem !important;
+ }
+ .mt-sm-3 {
+ margin-top: 1rem !important;
+ }
+ .mt-sm-4 {
+ margin-top: 1.5rem !important;
+ }
+ .mt-sm-5 {
+ margin-top: 3rem !important;
+ }
+ .mt-sm-auto {
+ margin-top: auto !important;
+ }
+ .me-sm-0 {
+ margin-right: 0 !important;
+ }
+ .me-sm-1 {
+ margin-right: 0.25rem !important;
+ }
+ .me-sm-2 {
+ margin-right: 0.5rem !important;
+ }
+ .me-sm-3 {
+ margin-right: 1rem !important;
+ }
+ .me-sm-4 {
+ margin-right: 1.5rem !important;
+ }
+ .me-sm-5 {
+ margin-right: 3rem !important;
+ }
+ .me-sm-auto {
+ margin-right: auto !important;
+ }
+ .mb-sm-0 {
+ margin-bottom: 0 !important;
+ }
+ .mb-sm-1 {
+ margin-bottom: 0.25rem !important;
+ }
+ .mb-sm-2 {
+ margin-bottom: 0.5rem !important;
+ }
+ .mb-sm-3 {
+ margin-bottom: 1rem !important;
+ }
+ .mb-sm-4 {
+ margin-bottom: 1.5rem !important;
+ }
+ .mb-sm-5 {
+ margin-bottom: 3rem !important;
+ }
+ .mb-sm-auto {
+ margin-bottom: auto !important;
+ }
+ .ms-sm-0 {
+ margin-left: 0 !important;
+ }
+ .ms-sm-1 {
+ margin-left: 0.25rem !important;
+ }
+ .ms-sm-2 {
+ margin-left: 0.5rem !important;
+ }
+ .ms-sm-3 {
+ margin-left: 1rem !important;
+ }
+ .ms-sm-4 {
+ margin-left: 1.5rem !important;
+ }
+ .ms-sm-5 {
+ margin-left: 3rem !important;
+ }
+ .ms-sm-auto {
+ margin-left: auto !important;
+ }
+ .p-sm-0 {
+ padding: 0 !important;
+ }
+ .p-sm-1 {
+ padding: 0.25rem !important;
+ }
+ .p-sm-2 {
+ padding: 0.5rem !important;
+ }
+ .p-sm-3 {
+ padding: 1rem !important;
+ }
+ .p-sm-4 {
+ padding: 1.5rem !important;
+ }
+ .p-sm-5 {
+ padding: 3rem !important;
+ }
+ .px-sm-0 {
+ padding-right: 0 !important;
+ padding-left: 0 !important;
+ }
+ .px-sm-1 {
+ padding-right: 0.25rem !important;
+ padding-left: 0.25rem !important;
+ }
+ .px-sm-2 {
+ padding-right: 0.5rem !important;
+ padding-left: 0.5rem !important;
+ }
+ .px-sm-3 {
+ padding-right: 1rem !important;
+ padding-left: 1rem !important;
+ }
+ .px-sm-4 {
+ padding-right: 1.5rem !important;
+ padding-left: 1.5rem !important;
+ }
+ .px-sm-5 {
+ padding-right: 3rem !important;
+ padding-left: 3rem !important;
+ }
+ .py-sm-0 {
+ padding-top: 0 !important;
+ padding-bottom: 0 !important;
+ }
+ .py-sm-1 {
+ padding-top: 0.25rem !important;
+ padding-bottom: 0.25rem !important;
+ }
+ .py-sm-2 {
+ padding-top: 0.5rem !important;
+ padding-bottom: 0.5rem !important;
+ }
+ .py-sm-3 {
+ padding-top: 1rem !important;
+ padding-bottom: 1rem !important;
+ }
+ .py-sm-4 {
+ padding-top: 1.5rem !important;
+ padding-bottom: 1.5rem !important;
+ }
+ .py-sm-5 {
+ padding-top: 3rem !important;
+ padding-bottom: 3rem !important;
+ }
+ .pt-sm-0 {
+ padding-top: 0 !important;
+ }
+ .pt-sm-1 {
+ padding-top: 0.25rem !important;
+ }
+ .pt-sm-2 {
+ padding-top: 0.5rem !important;
+ }
+ .pt-sm-3 {
+ padding-top: 1rem !important;
+ }
+ .pt-sm-4 {
+ padding-top: 1.5rem !important;
+ }
+ .pt-sm-5 {
+ padding-top: 3rem !important;
+ }
+ .pe-sm-0 {
+ padding-right: 0 !important;
+ }
+ .pe-sm-1 {
+ padding-right: 0.25rem !important;
+ }
+ .pe-sm-2 {
+ padding-right: 0.5rem !important;
+ }
+ .pe-sm-3 {
+ padding-right: 1rem !important;
+ }
+ .pe-sm-4 {
+ padding-right: 1.5rem !important;
+ }
+ .pe-sm-5 {
+ padding-right: 3rem !important;
+ }
+ .pb-sm-0 {
+ padding-bottom: 0 !important;
+ }
+ .pb-sm-1 {
+ padding-bottom: 0.25rem !important;
+ }
+ .pb-sm-2 {
+ padding-bottom: 0.5rem !important;
+ }
+ .pb-sm-3 {
+ padding-bottom: 1rem !important;
+ }
+ .pb-sm-4 {
+ padding-bottom: 1.5rem !important;
+ }
+ .pb-sm-5 {
+ padding-bottom: 3rem !important;
+ }
+ .ps-sm-0 {
+ padding-left: 0 !important;
+ }
+ .ps-sm-1 {
+ padding-left: 0.25rem !important;
+ }
+ .ps-sm-2 {
+ padding-left: 0.5rem !important;
+ }
+ .ps-sm-3 {
+ padding-left: 1rem !important;
+ }
+ .ps-sm-4 {
+ padding-left: 1.5rem !important;
+ }
+ .ps-sm-5 {
+ padding-left: 3rem !important;
+ }
+ .gap-sm-0 {
+ gap: 0 !important;
+ }
+ .gap-sm-1 {
+ gap: 0.25rem !important;
+ }
+ .gap-sm-2 {
+ gap: 0.5rem !important;
+ }
+ .gap-sm-3 {
+ gap: 1rem !important;
+ }
+ .gap-sm-4 {
+ gap: 1.5rem !important;
+ }
+ .gap-sm-5 {
+ gap: 3rem !important;
+ }
+ .row-gap-sm-0 {
+ row-gap: 0 !important;
+ }
+ .row-gap-sm-1 {
+ row-gap: 0.25rem !important;
+ }
+ .row-gap-sm-2 {
+ row-gap: 0.5rem !important;
+ }
+ .row-gap-sm-3 {
+ row-gap: 1rem !important;
+ }
+ .row-gap-sm-4 {
+ row-gap: 1.5rem !important;
+ }
+ .row-gap-sm-5 {
+ row-gap: 3rem !important;
+ }
+ .column-gap-sm-0 {
+ -moz-column-gap: 0 !important;
+ column-gap: 0 !important;
+ }
+ .column-gap-sm-1 {
+ -moz-column-gap: 0.25rem !important;
+ column-gap: 0.25rem !important;
+ }
+ .column-gap-sm-2 {
+ -moz-column-gap: 0.5rem !important;
+ column-gap: 0.5rem !important;
+ }
+ .column-gap-sm-3 {
+ -moz-column-gap: 1rem !important;
+ column-gap: 1rem !important;
+ }
+ .column-gap-sm-4 {
+ -moz-column-gap: 1.5rem !important;
+ column-gap: 1.5rem !important;
+ }
+ .column-gap-sm-5 {
+ -moz-column-gap: 3rem !important;
+ column-gap: 3rem !important;
+ }
+ .text-sm-start {
+ text-align: left !important;
+ }
+ .text-sm-end {
+ text-align: right !important;
+ }
+ .text-sm-center {
+ text-align: center !important;
+ }
+}
+@media (min-width: 768px) {
+ .float-md-start {
+ float: left !important;
+ }
+ .float-md-end {
+ float: right !important;
+ }
+ .float-md-none {
+ float: none !important;
+ }
+ .object-fit-md-contain {
+ -o-object-fit: contain !important;
+ object-fit: contain !important;
+ }
+ .object-fit-md-cover {
+ -o-object-fit: cover !important;
+ object-fit: cover !important;
+ }
+ .object-fit-md-fill {
+ -o-object-fit: fill !important;
+ object-fit: fill !important;
+ }
+ .object-fit-md-scale {
+ -o-object-fit: scale-down !important;
+ object-fit: scale-down !important;
+ }
+ .object-fit-md-none {
+ -o-object-fit: none !important;
+ object-fit: none !important;
+ }
+ .d-md-inline {
+ display: inline !important;
+ }
+ .d-md-inline-block {
+ display: inline-block !important;
+ }
+ .d-md-block {
+ display: block !important;
+ }
+ .d-md-grid {
+ display: grid !important;
+ }
+ .d-md-inline-grid {
+ display: inline-grid !important;
+ }
+ .d-md-table {
+ display: table !important;
+ }
+ .d-md-table-row {
+ display: table-row !important;
+ }
+ .d-md-table-cell {
+ display: table-cell !important;
+ }
+ .d-md-flex {
+ display: flex !important;
+ }
+ .d-md-inline-flex {
+ display: inline-flex !important;
+ }
+ .d-md-none {
+ display: none !important;
+ }
+ .flex-md-fill {
+ flex: 1 1 auto !important;
+ }
+ .flex-md-row {
+ flex-direction: row !important;
+ }
+ .flex-md-column {
+ flex-direction: column !important;
+ }
+ .flex-md-row-reverse {
+ flex-direction: row-reverse !important;
+ }
+ .flex-md-column-reverse {
+ flex-direction: column-reverse !important;
+ }
+ .flex-md-grow-0 {
+ flex-grow: 0 !important;
+ }
+ .flex-md-grow-1 {
+ flex-grow: 1 !important;
+ }
+ .flex-md-shrink-0 {
+ flex-shrink: 0 !important;
+ }
+ .flex-md-shrink-1 {
+ flex-shrink: 1 !important;
+ }
+ .flex-md-wrap {
+ flex-wrap: wrap !important;
+ }
+ .flex-md-nowrap {
+ flex-wrap: nowrap !important;
+ }
+ .flex-md-wrap-reverse {
+ flex-wrap: wrap-reverse !important;
+ }
+ .justify-content-md-start {
+ justify-content: flex-start !important;
+ }
+ .justify-content-md-end {
+ justify-content: flex-end !important;
+ }
+ .justify-content-md-center {
+ justify-content: center !important;
+ }
+ .justify-content-md-between {
+ justify-content: space-between !important;
+ }
+ .justify-content-md-around {
+ justify-content: space-around !important;
+ }
+ .justify-content-md-evenly {
+ justify-content: space-evenly !important;
+ }
+ .align-items-md-start {
+ align-items: flex-start !important;
+ }
+ .align-items-md-end {
+ align-items: flex-end !important;
+ }
+ .align-items-md-center {
+ align-items: center !important;
+ }
+ .align-items-md-baseline {
+ align-items: baseline !important;
+ }
+ .align-items-md-stretch {
+ align-items: stretch !important;
+ }
+ .align-content-md-start {
+ align-content: flex-start !important;
+ }
+ .align-content-md-end {
+ align-content: flex-end !important;
+ }
+ .align-content-md-center {
+ align-content: center !important;
+ }
+ .align-content-md-between {
+ align-content: space-between !important;
+ }
+ .align-content-md-around {
+ align-content: space-around !important;
+ }
+ .align-content-md-stretch {
+ align-content: stretch !important;
+ }
+ .align-self-md-auto {
+ align-self: auto !important;
+ }
+ .align-self-md-start {
+ align-self: flex-start !important;
+ }
+ .align-self-md-end {
+ align-self: flex-end !important;
+ }
+ .align-self-md-center {
+ align-self: center !important;
+ }
+ .align-self-md-baseline {
+ align-self: baseline !important;
+ }
+ .align-self-md-stretch {
+ align-self: stretch !important;
+ }
+ .order-md-first {
+ order: -1 !important;
+ }
+ .order-md-0 {
+ order: 0 !important;
+ }
+ .order-md-1 {
+ order: 1 !important;
+ }
+ .order-md-2 {
+ order: 2 !important;
+ }
+ .order-md-3 {
+ order: 3 !important;
+ }
+ .order-md-4 {
+ order: 4 !important;
+ }
+ .order-md-5 {
+ order: 5 !important;
+ }
+ .order-md-last {
+ order: 6 !important;
+ }
+ .m-md-0 {
+ margin: 0 !important;
+ }
+ .m-md-1 {
+ margin: 0.25rem !important;
+ }
+ .m-md-2 {
+ margin: 0.5rem !important;
+ }
+ .m-md-3 {
+ margin: 1rem !important;
+ }
+ .m-md-4 {
+ margin: 1.5rem !important;
+ }
+ .m-md-5 {
+ margin: 3rem !important;
+ }
+ .m-md-auto {
+ margin: auto !important;
+ }
+ .mx-md-0 {
+ margin-right: 0 !important;
+ margin-left: 0 !important;
+ }
+ .mx-md-1 {
+ margin-right: 0.25rem !important;
+ margin-left: 0.25rem !important;
+ }
+ .mx-md-2 {
+ margin-right: 0.5rem !important;
+ margin-left: 0.5rem !important;
+ }
+ .mx-md-3 {
+ margin-right: 1rem !important;
+ margin-left: 1rem !important;
+ }
+ .mx-md-4 {
+ margin-right: 1.5rem !important;
+ margin-left: 1.5rem !important;
+ }
+ .mx-md-5 {
+ margin-right: 3rem !important;
+ margin-left: 3rem !important;
+ }
+ .mx-md-auto {
+ margin-right: auto !important;
+ margin-left: auto !important;
+ }
+ .my-md-0 {
+ margin-top: 0 !important;
+ margin-bottom: 0 !important;
+ }
+ .my-md-1 {
+ margin-top: 0.25rem !important;
+ margin-bottom: 0.25rem !important;
+ }
+ .my-md-2 {
+ margin-top: 0.5rem !important;
+ margin-bottom: 0.5rem !important;
+ }
+ .my-md-3 {
+ margin-top: 1rem !important;
+ margin-bottom: 1rem !important;
+ }
+ .my-md-4 {
+ margin-top: 1.5rem !important;
+ margin-bottom: 1.5rem !important;
+ }
+ .my-md-5 {
+ margin-top: 3rem !important;
+ margin-bottom: 3rem !important;
+ }
+ .my-md-auto {
+ margin-top: auto !important;
+ margin-bottom: auto !important;
+ }
+ .mt-md-0 {
+ margin-top: 0 !important;
+ }
+ .mt-md-1 {
+ margin-top: 0.25rem !important;
+ }
+ .mt-md-2 {
+ margin-top: 0.5rem !important;
+ }
+ .mt-md-3 {
+ margin-top: 1rem !important;
+ }
+ .mt-md-4 {
+ margin-top: 1.5rem !important;
+ }
+ .mt-md-5 {
+ margin-top: 3rem !important;
+ }
+ .mt-md-auto {
+ margin-top: auto !important;
+ }
+ .me-md-0 {
+ margin-right: 0 !important;
+ }
+ .me-md-1 {
+ margin-right: 0.25rem !important;
+ }
+ .me-md-2 {
+ margin-right: 0.5rem !important;
+ }
+ .me-md-3 {
+ margin-right: 1rem !important;
+ }
+ .me-md-4 {
+ margin-right: 1.5rem !important;
+ }
+ .me-md-5 {
+ margin-right: 3rem !important;
+ }
+ .me-md-auto {
+ margin-right: auto !important;
+ }
+ .mb-md-0 {
+ margin-bottom: 0 !important;
+ }
+ .mb-md-1 {
+ margin-bottom: 0.25rem !important;
+ }
+ .mb-md-2 {
+ margin-bottom: 0.5rem !important;
+ }
+ .mb-md-3 {
+ margin-bottom: 1rem !important;
+ }
+ .mb-md-4 {
+ margin-bottom: 1.5rem !important;
+ }
+ .mb-md-5 {
+ margin-bottom: 3rem !important;
+ }
+ .mb-md-auto {
+ margin-bottom: auto !important;
+ }
+ .ms-md-0 {
+ margin-left: 0 !important;
+ }
+ .ms-md-1 {
+ margin-left: 0.25rem !important;
+ }
+ .ms-md-2 {
+ margin-left: 0.5rem !important;
+ }
+ .ms-md-3 {
+ margin-left: 1rem !important;
+ }
+ .ms-md-4 {
+ margin-left: 1.5rem !important;
+ }
+ .ms-md-5 {
+ margin-left: 3rem !important;
+ }
+ .ms-md-auto {
+ margin-left: auto !important;
+ }
+ .p-md-0 {
+ padding: 0 !important;
+ }
+ .p-md-1 {
+ padding: 0.25rem !important;
+ }
+ .p-md-2 {
+ padding: 0.5rem !important;
+ }
+ .p-md-3 {
+ padding: 1rem !important;
+ }
+ .p-md-4 {
+ padding: 1.5rem !important;
+ }
+ .p-md-5 {
+ padding: 3rem !important;
+ }
+ .px-md-0 {
+ padding-right: 0 !important;
+ padding-left: 0 !important;
+ }
+ .px-md-1 {
+ padding-right: 0.25rem !important;
+ padding-left: 0.25rem !important;
+ }
+ .px-md-2 {
+ padding-right: 0.5rem !important;
+ padding-left: 0.5rem !important;
+ }
+ .px-md-3 {
+ padding-right: 1rem !important;
+ padding-left: 1rem !important;
+ }
+ .px-md-4 {
+ padding-right: 1.5rem !important;
+ padding-left: 1.5rem !important;
+ }
+ .px-md-5 {
+ padding-right: 3rem !important;
+ padding-left: 3rem !important;
+ }
+ .py-md-0 {
+ padding-top: 0 !important;
+ padding-bottom: 0 !important;
+ }
+ .py-md-1 {
+ padding-top: 0.25rem !important;
+ padding-bottom: 0.25rem !important;
+ }
+ .py-md-2 {
+ padding-top: 0.5rem !important;
+ padding-bottom: 0.5rem !important;
+ }
+ .py-md-3 {
+ padding-top: 1rem !important;
+ padding-bottom: 1rem !important;
+ }
+ .py-md-4 {
+ padding-top: 1.5rem !important;
+ padding-bottom: 1.5rem !important;
+ }
+ .py-md-5 {
+ padding-top: 3rem !important;
+ padding-bottom: 3rem !important;
+ }
+ .pt-md-0 {
+ padding-top: 0 !important;
+ }
+ .pt-md-1 {
+ padding-top: 0.25rem !important;
+ }
+ .pt-md-2 {
+ padding-top: 0.5rem !important;
+ }
+ .pt-md-3 {
+ padding-top: 1rem !important;
+ }
+ .pt-md-4 {
+ padding-top: 1.5rem !important;
+ }
+ .pt-md-5 {
+ padding-top: 3rem !important;
+ }
+ .pe-md-0 {
+ padding-right: 0 !important;
+ }
+ .pe-md-1 {
+ padding-right: 0.25rem !important;
+ }
+ .pe-md-2 {
+ padding-right: 0.5rem !important;
+ }
+ .pe-md-3 {
+ padding-right: 1rem !important;
+ }
+ .pe-md-4 {
+ padding-right: 1.5rem !important;
+ }
+ .pe-md-5 {
+ padding-right: 3rem !important;
+ }
+ .pb-md-0 {
+ padding-bottom: 0 !important;
+ }
+ .pb-md-1 {
+ padding-bottom: 0.25rem !important;
+ }
+ .pb-md-2 {
+ padding-bottom: 0.5rem !important;
+ }
+ .pb-md-3 {
+ padding-bottom: 1rem !important;
+ }
+ .pb-md-4 {
+ padding-bottom: 1.5rem !important;
+ }
+ .pb-md-5 {
+ padding-bottom: 3rem !important;
+ }
+ .ps-md-0 {
+ padding-left: 0 !important;
+ }
+ .ps-md-1 {
+ padding-left: 0.25rem !important;
+ }
+ .ps-md-2 {
+ padding-left: 0.5rem !important;
+ }
+ .ps-md-3 {
+ padding-left: 1rem !important;
+ }
+ .ps-md-4 {
+ padding-left: 1.5rem !important;
+ }
+ .ps-md-5 {
+ padding-left: 3rem !important;
+ }
+ .gap-md-0 {
+ gap: 0 !important;
+ }
+ .gap-md-1 {
+ gap: 0.25rem !important;
+ }
+ .gap-md-2 {
+ gap: 0.5rem !important;
+ }
+ .gap-md-3 {
+ gap: 1rem !important;
+ }
+ .gap-md-4 {
+ gap: 1.5rem !important;
+ }
+ .gap-md-5 {
+ gap: 3rem !important;
+ }
+ .row-gap-md-0 {
+ row-gap: 0 !important;
+ }
+ .row-gap-md-1 {
+ row-gap: 0.25rem !important;
+ }
+ .row-gap-md-2 {
+ row-gap: 0.5rem !important;
+ }
+ .row-gap-md-3 {
+ row-gap: 1rem !important;
+ }
+ .row-gap-md-4 {
+ row-gap: 1.5rem !important;
+ }
+ .row-gap-md-5 {
+ row-gap: 3rem !important;
+ }
+ .column-gap-md-0 {
+ -moz-column-gap: 0 !important;
+ column-gap: 0 !important;
+ }
+ .column-gap-md-1 {
+ -moz-column-gap: 0.25rem !important;
+ column-gap: 0.25rem !important;
+ }
+ .column-gap-md-2 {
+ -moz-column-gap: 0.5rem !important;
+ column-gap: 0.5rem !important;
+ }
+ .column-gap-md-3 {
+ -moz-column-gap: 1rem !important;
+ column-gap: 1rem !important;
+ }
+ .column-gap-md-4 {
+ -moz-column-gap: 1.5rem !important;
+ column-gap: 1.5rem !important;
+ }
+ .column-gap-md-5 {
+ -moz-column-gap: 3rem !important;
+ column-gap: 3rem !important;
+ }
+ .text-md-start {
+ text-align: left !important;
+ }
+ .text-md-end {
+ text-align: right !important;
+ }
+ .text-md-center {
+ text-align: center !important;
+ }
+}
+@media (min-width: 992px) {
+ .float-lg-start {
+ float: left !important;
+ }
+ .float-lg-end {
+ float: right !important;
+ }
+ .float-lg-none {
+ float: none !important;
+ }
+ .object-fit-lg-contain {
+ -o-object-fit: contain !important;
+ object-fit: contain !important;
+ }
+ .object-fit-lg-cover {
+ -o-object-fit: cover !important;
+ object-fit: cover !important;
+ }
+ .object-fit-lg-fill {
+ -o-object-fit: fill !important;
+ object-fit: fill !important;
+ }
+ .object-fit-lg-scale {
+ -o-object-fit: scale-down !important;
+ object-fit: scale-down !important;
+ }
+ .object-fit-lg-none {
+ -o-object-fit: none !important;
+ object-fit: none !important;
+ }
+ .d-lg-inline {
+ display: inline !important;
+ }
+ .d-lg-inline-block {
+ display: inline-block !important;
+ }
+ .d-lg-block {
+ display: block !important;
+ }
+ .d-lg-grid {
+ display: grid !important;
+ }
+ .d-lg-inline-grid {
+ display: inline-grid !important;
+ }
+ .d-lg-table {
+ display: table !important;
+ }
+ .d-lg-table-row {
+ display: table-row !important;
+ }
+ .d-lg-table-cell {
+ display: table-cell !important;
+ }
+ .d-lg-flex {
+ display: flex !important;
+ }
+ .d-lg-inline-flex {
+ display: inline-flex !important;
+ }
+ .d-lg-none {
+ display: none !important;
+ }
+ .flex-lg-fill {
+ flex: 1 1 auto !important;
+ }
+ .flex-lg-row {
+ flex-direction: row !important;
+ }
+ .flex-lg-column {
+ flex-direction: column !important;
+ }
+ .flex-lg-row-reverse {
+ flex-direction: row-reverse !important;
+ }
+ .flex-lg-column-reverse {
+ flex-direction: column-reverse !important;
+ }
+ .flex-lg-grow-0 {
+ flex-grow: 0 !important;
+ }
+ .flex-lg-grow-1 {
+ flex-grow: 1 !important;
+ }
+ .flex-lg-shrink-0 {
+ flex-shrink: 0 !important;
+ }
+ .flex-lg-shrink-1 {
+ flex-shrink: 1 !important;
+ }
+ .flex-lg-wrap {
+ flex-wrap: wrap !important;
+ }
+ .flex-lg-nowrap {
+ flex-wrap: nowrap !important;
+ }
+ .flex-lg-wrap-reverse {
+ flex-wrap: wrap-reverse !important;
+ }
+ .justify-content-lg-start {
+ justify-content: flex-start !important;
+ }
+ .justify-content-lg-end {
+ justify-content: flex-end !important;
+ }
+ .justify-content-lg-center {
+ justify-content: center !important;
+ }
+ .justify-content-lg-between {
+ justify-content: space-between !important;
+ }
+ .justify-content-lg-around {
+ justify-content: space-around !important;
+ }
+ .justify-content-lg-evenly {
+ justify-content: space-evenly !important;
+ }
+ .align-items-lg-start {
+ align-items: flex-start !important;
+ }
+ .align-items-lg-end {
+ align-items: flex-end !important;
+ }
+ .align-items-lg-center {
+ align-items: center !important;
+ }
+ .align-items-lg-baseline {
+ align-items: baseline !important;
+ }
+ .align-items-lg-stretch {
+ align-items: stretch !important;
+ }
+ .align-content-lg-start {
+ align-content: flex-start !important;
+ }
+ .align-content-lg-end {
+ align-content: flex-end !important;
+ }
+ .align-content-lg-center {
+ align-content: center !important;
+ }
+ .align-content-lg-between {
+ align-content: space-between !important;
+ }
+ .align-content-lg-around {
+ align-content: space-around !important;
+ }
+ .align-content-lg-stretch {
+ align-content: stretch !important;
+ }
+ .align-self-lg-auto {
+ align-self: auto !important;
+ }
+ .align-self-lg-start {
+ align-self: flex-start !important;
+ }
+ .align-self-lg-end {
+ align-self: flex-end !important;
+ }
+ .align-self-lg-center {
+ align-self: center !important;
+ }
+ .align-self-lg-baseline {
+ align-self: baseline !important;
+ }
+ .align-self-lg-stretch {
+ align-self: stretch !important;
+ }
+ .order-lg-first {
+ order: -1 !important;
+ }
+ .order-lg-0 {
+ order: 0 !important;
+ }
+ .order-lg-1 {
+ order: 1 !important;
+ }
+ .order-lg-2 {
+ order: 2 !important;
+ }
+ .order-lg-3 {
+ order: 3 !important;
+ }
+ .order-lg-4 {
+ order: 4 !important;
+ }
+ .order-lg-5 {
+ order: 5 !important;
+ }
+ .order-lg-last {
+ order: 6 !important;
+ }
+ .m-lg-0 {
+ margin: 0 !important;
+ }
+ .m-lg-1 {
+ margin: 0.25rem !important;
+ }
+ .m-lg-2 {
+ margin: 0.5rem !important;
+ }
+ .m-lg-3 {
+ margin: 1rem !important;
+ }
+ .m-lg-4 {
+ margin: 1.5rem !important;
+ }
+ .m-lg-5 {
+ margin: 3rem !important;
+ }
+ .m-lg-auto {
+ margin: auto !important;
+ }
+ .mx-lg-0 {
+ margin-right: 0 !important;
+ margin-left: 0 !important;
+ }
+ .mx-lg-1 {
+ margin-right: 0.25rem !important;
+ margin-left: 0.25rem !important;
+ }
+ .mx-lg-2 {
+ margin-right: 0.5rem !important;
+ margin-left: 0.5rem !important;
+ }
+ .mx-lg-3 {
+ margin-right: 1rem !important;
+ margin-left: 1rem !important;
+ }
+ .mx-lg-4 {
+ margin-right: 1.5rem !important;
+ margin-left: 1.5rem !important;
+ }
+ .mx-lg-5 {
+ margin-right: 3rem !important;
+ margin-left: 3rem !important;
+ }
+ .mx-lg-auto {
+ margin-right: auto !important;
+ margin-left: auto !important;
+ }
+ .my-lg-0 {
+ margin-top: 0 !important;
+ margin-bottom: 0 !important;
+ }
+ .my-lg-1 {
+ margin-top: 0.25rem !important;
+ margin-bottom: 0.25rem !important;
+ }
+ .my-lg-2 {
+ margin-top: 0.5rem !important;
+ margin-bottom: 0.5rem !important;
+ }
+ .my-lg-3 {
+ margin-top: 1rem !important;
+ margin-bottom: 1rem !important;
+ }
+ .my-lg-4 {
+ margin-top: 1.5rem !important;
+ margin-bottom: 1.5rem !important;
+ }
+ .my-lg-5 {
+ margin-top: 3rem !important;
+ margin-bottom: 3rem !important;
+ }
+ .my-lg-auto {
+ margin-top: auto !important;
+ margin-bottom: auto !important;
+ }
+ .mt-lg-0 {
+ margin-top: 0 !important;
+ }
+ .mt-lg-1 {
+ margin-top: 0.25rem !important;
+ }
+ .mt-lg-2 {
+ margin-top: 0.5rem !important;
+ }
+ .mt-lg-3 {
+ margin-top: 1rem !important;
+ }
+ .mt-lg-4 {
+ margin-top: 1.5rem !important;
+ }
+ .mt-lg-5 {
+ margin-top: 3rem !important;
+ }
+ .mt-lg-auto {
+ margin-top: auto !important;
+ }
+ .me-lg-0 {
+ margin-right: 0 !important;
+ }
+ .me-lg-1 {
+ margin-right: 0.25rem !important;
+ }
+ .me-lg-2 {
+ margin-right: 0.5rem !important;
+ }
+ .me-lg-3 {
+ margin-right: 1rem !important;
+ }
+ .me-lg-4 {
+ margin-right: 1.5rem !important;
+ }
+ .me-lg-5 {
+ margin-right: 3rem !important;
+ }
+ .me-lg-auto {
+ margin-right: auto !important;
+ }
+ .mb-lg-0 {
+ margin-bottom: 0 !important;
+ }
+ .mb-lg-1 {
+ margin-bottom: 0.25rem !important;
+ }
+ .mb-lg-2 {
+ margin-bottom: 0.5rem !important;
+ }
+ .mb-lg-3 {
+ margin-bottom: 1rem !important;
+ }
+ .mb-lg-4 {
+ margin-bottom: 1.5rem !important;
+ }
+ .mb-lg-5 {
+ margin-bottom: 3rem !important;
+ }
+ .mb-lg-auto {
+ margin-bottom: auto !important;
+ }
+ .ms-lg-0 {
+ margin-left: 0 !important;
+ }
+ .ms-lg-1 {
+ margin-left: 0.25rem !important;
+ }
+ .ms-lg-2 {
+ margin-left: 0.5rem !important;
+ }
+ .ms-lg-3 {
+ margin-left: 1rem !important;
+ }
+ .ms-lg-4 {
+ margin-left: 1.5rem !important;
+ }
+ .ms-lg-5 {
+ margin-left: 3rem !important;
+ }
+ .ms-lg-auto {
+ margin-left: auto !important;
+ }
+ .p-lg-0 {
+ padding: 0 !important;
+ }
+ .p-lg-1 {
+ padding: 0.25rem !important;
+ }
+ .p-lg-2 {
+ padding: 0.5rem !important;
+ }
+ .p-lg-3 {
+ padding: 1rem !important;
+ }
+ .p-lg-4 {
+ padding: 1.5rem !important;
+ }
+ .p-lg-5 {
+ padding: 3rem !important;
+ }
+ .px-lg-0 {
+ padding-right: 0 !important;
+ padding-left: 0 !important;
+ }
+ .px-lg-1 {
+ padding-right: 0.25rem !important;
+ padding-left: 0.25rem !important;
+ }
+ .px-lg-2 {
+ padding-right: 0.5rem !important;
+ padding-left: 0.5rem !important;
+ }
+ .px-lg-3 {
+ padding-right: 1rem !important;
+ padding-left: 1rem !important;
+ }
+ .px-lg-4 {
+ padding-right: 1.5rem !important;
+ padding-left: 1.5rem !important;
+ }
+ .px-lg-5 {
+ padding-right: 3rem !important;
+ padding-left: 3rem !important;
+ }
+ .py-lg-0 {
+ padding-top: 0 !important;
+ padding-bottom: 0 !important;
+ }
+ .py-lg-1 {
+ padding-top: 0.25rem !important;
+ padding-bottom: 0.25rem !important;
+ }
+ .py-lg-2 {
+ padding-top: 0.5rem !important;
+ padding-bottom: 0.5rem !important;
+ }
+ .py-lg-3 {
+ padding-top: 1rem !important;
+ padding-bottom: 1rem !important;
+ }
+ .py-lg-4 {
+ padding-top: 1.5rem !important;
+ padding-bottom: 1.5rem !important;
+ }
+ .py-lg-5 {
+ padding-top: 3rem !important;
+ padding-bottom: 3rem !important;
+ }
+ .pt-lg-0 {
+ padding-top: 0 !important;
+ }
+ .pt-lg-1 {
+ padding-top: 0.25rem !important;
+ }
+ .pt-lg-2 {
+ padding-top: 0.5rem !important;
+ }
+ .pt-lg-3 {
+ padding-top: 1rem !important;
+ }
+ .pt-lg-4 {
+ padding-top: 1.5rem !important;
+ }
+ .pt-lg-5 {
+ padding-top: 3rem !important;
+ }
+ .pe-lg-0 {
+ padding-right: 0 !important;
+ }
+ .pe-lg-1 {
+ padding-right: 0.25rem !important;
+ }
+ .pe-lg-2 {
+ padding-right: 0.5rem !important;
+ }
+ .pe-lg-3 {
+ padding-right: 1rem !important;
+ }
+ .pe-lg-4 {
+ padding-right: 1.5rem !important;
+ }
+ .pe-lg-5 {
+ padding-right: 3rem !important;
+ }
+ .pb-lg-0 {
+ padding-bottom: 0 !important;
+ }
+ .pb-lg-1 {
+ padding-bottom: 0.25rem !important;
+ }
+ .pb-lg-2 {
+ padding-bottom: 0.5rem !important;
+ }
+ .pb-lg-3 {
+ padding-bottom: 1rem !important;
+ }
+ .pb-lg-4 {
+ padding-bottom: 1.5rem !important;
+ }
+ .pb-lg-5 {
+ padding-bottom: 3rem !important;
+ }
+ .ps-lg-0 {
+ padding-left: 0 !important;
+ }
+ .ps-lg-1 {
+ padding-left: 0.25rem !important;
+ }
+ .ps-lg-2 {
+ padding-left: 0.5rem !important;
+ }
+ .ps-lg-3 {
+ padding-left: 1rem !important;
+ }
+ .ps-lg-4 {
+ padding-left: 1.5rem !important;
+ }
+ .ps-lg-5 {
+ padding-left: 3rem !important;
+ }
+ .gap-lg-0 {
+ gap: 0 !important;
+ }
+ .gap-lg-1 {
+ gap: 0.25rem !important;
+ }
+ .gap-lg-2 {
+ gap: 0.5rem !important;
+ }
+ .gap-lg-3 {
+ gap: 1rem !important;
+ }
+ .gap-lg-4 {
+ gap: 1.5rem !important;
+ }
+ .gap-lg-5 {
+ gap: 3rem !important;
+ }
+ .row-gap-lg-0 {
+ row-gap: 0 !important;
+ }
+ .row-gap-lg-1 {
+ row-gap: 0.25rem !important;
+ }
+ .row-gap-lg-2 {
+ row-gap: 0.5rem !important;
+ }
+ .row-gap-lg-3 {
+ row-gap: 1rem !important;
+ }
+ .row-gap-lg-4 {
+ row-gap: 1.5rem !important;
+ }
+ .row-gap-lg-5 {
+ row-gap: 3rem !important;
+ }
+ .column-gap-lg-0 {
+ -moz-column-gap: 0 !important;
+ column-gap: 0 !important;
+ }
+ .column-gap-lg-1 {
+ -moz-column-gap: 0.25rem !important;
+ column-gap: 0.25rem !important;
+ }
+ .column-gap-lg-2 {
+ -moz-column-gap: 0.5rem !important;
+ column-gap: 0.5rem !important;
+ }
+ .column-gap-lg-3 {
+ -moz-column-gap: 1rem !important;
+ column-gap: 1rem !important;
+ }
+ .column-gap-lg-4 {
+ -moz-column-gap: 1.5rem !important;
+ column-gap: 1.5rem !important;
+ }
+ .column-gap-lg-5 {
+ -moz-column-gap: 3rem !important;
+ column-gap: 3rem !important;
+ }
+ .text-lg-start {
+ text-align: left !important;
+ }
+ .text-lg-end {
+ text-align: right !important;
+ }
+ .text-lg-center {
+ text-align: center !important;
+ }
+}
+@media (min-width: 1200px) {
+ .float-xl-start {
+ float: left !important;
+ }
+ .float-xl-end {
+ float: right !important;
+ }
+ .float-xl-none {
+ float: none !important;
+ }
+ .object-fit-xl-contain {
+ -o-object-fit: contain !important;
+ object-fit: contain !important;
+ }
+ .object-fit-xl-cover {
+ -o-object-fit: cover !important;
+ object-fit: cover !important;
+ }
+ .object-fit-xl-fill {
+ -o-object-fit: fill !important;
+ object-fit: fill !important;
+ }
+ .object-fit-xl-scale {
+ -o-object-fit: scale-down !important;
+ object-fit: scale-down !important;
+ }
+ .object-fit-xl-none {
+ -o-object-fit: none !important;
+ object-fit: none !important;
+ }
+ .d-xl-inline {
+ display: inline !important;
+ }
+ .d-xl-inline-block {
+ display: inline-block !important;
+ }
+ .d-xl-block {
+ display: block !important;
+ }
+ .d-xl-grid {
+ display: grid !important;
+ }
+ .d-xl-inline-grid {
+ display: inline-grid !important;
+ }
+ .d-xl-table {
+ display: table !important;
+ }
+ .d-xl-table-row {
+ display: table-row !important;
+ }
+ .d-xl-table-cell {
+ display: table-cell !important;
+ }
+ .d-xl-flex {
+ display: flex !important;
+ }
+ .d-xl-inline-flex {
+ display: inline-flex !important;
+ }
+ .d-xl-none {
+ display: none !important;
+ }
+ .flex-xl-fill {
+ flex: 1 1 auto !important;
+ }
+ .flex-xl-row {
+ flex-direction: row !important;
+ }
+ .flex-xl-column {
+ flex-direction: column !important;
+ }
+ .flex-xl-row-reverse {
+ flex-direction: row-reverse !important;
+ }
+ .flex-xl-column-reverse {
+ flex-direction: column-reverse !important;
+ }
+ .flex-xl-grow-0 {
+ flex-grow: 0 !important;
+ }
+ .flex-xl-grow-1 {
+ flex-grow: 1 !important;
+ }
+ .flex-xl-shrink-0 {
+ flex-shrink: 0 !important;
+ }
+ .flex-xl-shrink-1 {
+ flex-shrink: 1 !important;
+ }
+ .flex-xl-wrap {
+ flex-wrap: wrap !important;
+ }
+ .flex-xl-nowrap {
+ flex-wrap: nowrap !important;
+ }
+ .flex-xl-wrap-reverse {
+ flex-wrap: wrap-reverse !important;
+ }
+ .justify-content-xl-start {
+ justify-content: flex-start !important;
+ }
+ .justify-content-xl-end {
+ justify-content: flex-end !important;
+ }
+ .justify-content-xl-center {
+ justify-content: center !important;
+ }
+ .justify-content-xl-between {
+ justify-content: space-between !important;
+ }
+ .justify-content-xl-around {
+ justify-content: space-around !important;
+ }
+ .justify-content-xl-evenly {
+ justify-content: space-evenly !important;
+ }
+ .align-items-xl-start {
+ align-items: flex-start !important;
+ }
+ .align-items-xl-end {
+ align-items: flex-end !important;
+ }
+ .align-items-xl-center {
+ align-items: center !important;
+ }
+ .align-items-xl-baseline {
+ align-items: baseline !important;
+ }
+ .align-items-xl-stretch {
+ align-items: stretch !important;
+ }
+ .align-content-xl-start {
+ align-content: flex-start !important;
+ }
+ .align-content-xl-end {
+ align-content: flex-end !important;
+ }
+ .align-content-xl-center {
+ align-content: center !important;
+ }
+ .align-content-xl-between {
+ align-content: space-between !important;
+ }
+ .align-content-xl-around {
+ align-content: space-around !important;
+ }
+ .align-content-xl-stretch {
+ align-content: stretch !important;
+ }
+ .align-self-xl-auto {
+ align-self: auto !important;
+ }
+ .align-self-xl-start {
+ align-self: flex-start !important;
+ }
+ .align-self-xl-end {
+ align-self: flex-end !important;
+ }
+ .align-self-xl-center {
+ align-self: center !important;
+ }
+ .align-self-xl-baseline {
+ align-self: baseline !important;
+ }
+ .align-self-xl-stretch {
+ align-self: stretch !important;
+ }
+ .order-xl-first {
+ order: -1 !important;
+ }
+ .order-xl-0 {
+ order: 0 !important;
+ }
+ .order-xl-1 {
+ order: 1 !important;
+ }
+ .order-xl-2 {
+ order: 2 !important;
+ }
+ .order-xl-3 {
+ order: 3 !important;
+ }
+ .order-xl-4 {
+ order: 4 !important;
+ }
+ .order-xl-5 {
+ order: 5 !important;
+ }
+ .order-xl-last {
+ order: 6 !important;
+ }
+ .m-xl-0 {
+ margin: 0 !important;
+ }
+ .m-xl-1 {
+ margin: 0.25rem !important;
+ }
+ .m-xl-2 {
+ margin: 0.5rem !important;
+ }
+ .m-xl-3 {
+ margin: 1rem !important;
+ }
+ .m-xl-4 {
+ margin: 1.5rem !important;
+ }
+ .m-xl-5 {
+ margin: 3rem !important;
+ }
+ .m-xl-auto {
+ margin: auto !important;
+ }
+ .mx-xl-0 {
+ margin-right: 0 !important;
+ margin-left: 0 !important;
+ }
+ .mx-xl-1 {
+ margin-right: 0.25rem !important;
+ margin-left: 0.25rem !important;
+ }
+ .mx-xl-2 {
+ margin-right: 0.5rem !important;
+ margin-left: 0.5rem !important;
+ }
+ .mx-xl-3 {
+ margin-right: 1rem !important;
+ margin-left: 1rem !important;
+ }
+ .mx-xl-4 {
+ margin-right: 1.5rem !important;
+ margin-left: 1.5rem !important;
+ }
+ .mx-xl-5 {
+ margin-right: 3rem !important;
+ margin-left: 3rem !important;
+ }
+ .mx-xl-auto {
+ margin-right: auto !important;
+ margin-left: auto !important;
+ }
+ .my-xl-0 {
+ margin-top: 0 !important;
+ margin-bottom: 0 !important;
+ }
+ .my-xl-1 {
+ margin-top: 0.25rem !important;
+ margin-bottom: 0.25rem !important;
+ }
+ .my-xl-2 {
+ margin-top: 0.5rem !important;
+ margin-bottom: 0.5rem !important;
+ }
+ .my-xl-3 {
+ margin-top: 1rem !important;
+ margin-bottom: 1rem !important;
+ }
+ .my-xl-4 {
+ margin-top: 1.5rem !important;
+ margin-bottom: 1.5rem !important;
+ }
+ .my-xl-5 {
+ margin-top: 3rem !important;
+ margin-bottom: 3rem !important;
+ }
+ .my-xl-auto {
+ margin-top: auto !important;
+ margin-bottom: auto !important;
+ }
+ .mt-xl-0 {
+ margin-top: 0 !important;
+ }
+ .mt-xl-1 {
+ margin-top: 0.25rem !important;
+ }
+ .mt-xl-2 {
+ margin-top: 0.5rem !important;
+ }
+ .mt-xl-3 {
+ margin-top: 1rem !important;
+ }
+ .mt-xl-4 {
+ margin-top: 1.5rem !important;
+ }
+ .mt-xl-5 {
+ margin-top: 3rem !important;
+ }
+ .mt-xl-auto {
+ margin-top: auto !important;
+ }
+ .me-xl-0 {
+ margin-right: 0 !important;
+ }
+ .me-xl-1 {
+ margin-right: 0.25rem !important;
+ }
+ .me-xl-2 {
+ margin-right: 0.5rem !important;
+ }
+ .me-xl-3 {
+ margin-right: 1rem !important;
+ }
+ .me-xl-4 {
+ margin-right: 1.5rem !important;
+ }
+ .me-xl-5 {
+ margin-right: 3rem !important;
+ }
+ .me-xl-auto {
+ margin-right: auto !important;
+ }
+ .mb-xl-0 {
+ margin-bottom: 0 !important;
+ }
+ .mb-xl-1 {
+ margin-bottom: 0.25rem !important;
+ }
+ .mb-xl-2 {
+ margin-bottom: 0.5rem !important;
+ }
+ .mb-xl-3 {
+ margin-bottom: 1rem !important;
+ }
+ .mb-xl-4 {
+ margin-bottom: 1.5rem !important;
+ }
+ .mb-xl-5 {
+ margin-bottom: 3rem !important;
+ }
+ .mb-xl-auto {
+ margin-bottom: auto !important;
+ }
+ .ms-xl-0 {
+ margin-left: 0 !important;
+ }
+ .ms-xl-1 {
+ margin-left: 0.25rem !important;
+ }
+ .ms-xl-2 {
+ margin-left: 0.5rem !important;
+ }
+ .ms-xl-3 {
+ margin-left: 1rem !important;
+ }
+ .ms-xl-4 {
+ margin-left: 1.5rem !important;
+ }
+ .ms-xl-5 {
+ margin-left: 3rem !important;
+ }
+ .ms-xl-auto {
+ margin-left: auto !important;
+ }
+ .p-xl-0 {
+ padding: 0 !important;
+ }
+ .p-xl-1 {
+ padding: 0.25rem !important;
+ }
+ .p-xl-2 {
+ padding: 0.5rem !important;
+ }
+ .p-xl-3 {
+ padding: 1rem !important;
+ }
+ .p-xl-4 {
+ padding: 1.5rem !important;
+ }
+ .p-xl-5 {
+ padding: 3rem !important;
+ }
+ .px-xl-0 {
+ padding-right: 0 !important;
+ padding-left: 0 !important;
+ }
+ .px-xl-1 {
+ padding-right: 0.25rem !important;
+ padding-left: 0.25rem !important;
+ }
+ .px-xl-2 {
+ padding-right: 0.5rem !important;
+ padding-left: 0.5rem !important;
+ }
+ .px-xl-3 {
+ padding-right: 1rem !important;
+ padding-left: 1rem !important;
+ }
+ .px-xl-4 {
+ padding-right: 1.5rem !important;
+ padding-left: 1.5rem !important;
+ }
+ .px-xl-5 {
+ padding-right: 3rem !important;
+ padding-left: 3rem !important;
+ }
+ .py-xl-0 {
+ padding-top: 0 !important;
+ padding-bottom: 0 !important;
+ }
+ .py-xl-1 {
+ padding-top: 0.25rem !important;
+ padding-bottom: 0.25rem !important;
+ }
+ .py-xl-2 {
+ padding-top: 0.5rem !important;
+ padding-bottom: 0.5rem !important;
+ }
+ .py-xl-3 {
+ padding-top: 1rem !important;
+ padding-bottom: 1rem !important;
+ }
+ .py-xl-4 {
+ padding-top: 1.5rem !important;
+ padding-bottom: 1.5rem !important;
+ }
+ .py-xl-5 {
+ padding-top: 3rem !important;
+ padding-bottom: 3rem !important;
+ }
+ .pt-xl-0 {
+ padding-top: 0 !important;
+ }
+ .pt-xl-1 {
+ padding-top: 0.25rem !important;
+ }
+ .pt-xl-2 {
+ padding-top: 0.5rem !important;
+ }
+ .pt-xl-3 {
+ padding-top: 1rem !important;
+ }
+ .pt-xl-4 {
+ padding-top: 1.5rem !important;
+ }
+ .pt-xl-5 {
+ padding-top: 3rem !important;
+ }
+ .pe-xl-0 {
+ padding-right: 0 !important;
+ }
+ .pe-xl-1 {
+ padding-right: 0.25rem !important;
+ }
+ .pe-xl-2 {
+ padding-right: 0.5rem !important;
+ }
+ .pe-xl-3 {
+ padding-right: 1rem !important;
+ }
+ .pe-xl-4 {
+ padding-right: 1.5rem !important;
+ }
+ .pe-xl-5 {
+ padding-right: 3rem !important;
+ }
+ .pb-xl-0 {
+ padding-bottom: 0 !important;
+ }
+ .pb-xl-1 {
+ padding-bottom: 0.25rem !important;
+ }
+ .pb-xl-2 {
+ padding-bottom: 0.5rem !important;
+ }
+ .pb-xl-3 {
+ padding-bottom: 1rem !important;
+ }
+ .pb-xl-4 {
+ padding-bottom: 1.5rem !important;
+ }
+ .pb-xl-5 {
+ padding-bottom: 3rem !important;
+ }
+ .ps-xl-0 {
+ padding-left: 0 !important;
+ }
+ .ps-xl-1 {
+ padding-left: 0.25rem !important;
+ }
+ .ps-xl-2 {
+ padding-left: 0.5rem !important;
+ }
+ .ps-xl-3 {
+ padding-left: 1rem !important;
+ }
+ .ps-xl-4 {
+ padding-left: 1.5rem !important;
+ }
+ .ps-xl-5 {
+ padding-left: 3rem !important;
+ }
+ .gap-xl-0 {
+ gap: 0 !important;
+ }
+ .gap-xl-1 {
+ gap: 0.25rem !important;
+ }
+ .gap-xl-2 {
+ gap: 0.5rem !important;
+ }
+ .gap-xl-3 {
+ gap: 1rem !important;
+ }
+ .gap-xl-4 {
+ gap: 1.5rem !important;
+ }
+ .gap-xl-5 {
+ gap: 3rem !important;
+ }
+ .row-gap-xl-0 {
+ row-gap: 0 !important;
+ }
+ .row-gap-xl-1 {
+ row-gap: 0.25rem !important;
+ }
+ .row-gap-xl-2 {
+ row-gap: 0.5rem !important;
+ }
+ .row-gap-xl-3 {
+ row-gap: 1rem !important;
+ }
+ .row-gap-xl-4 {
+ row-gap: 1.5rem !important;
+ }
+ .row-gap-xl-5 {
+ row-gap: 3rem !important;
+ }
+ .column-gap-xl-0 {
+ -moz-column-gap: 0 !important;
+ column-gap: 0 !important;
+ }
+ .column-gap-xl-1 {
+ -moz-column-gap: 0.25rem !important;
+ column-gap: 0.25rem !important;
+ }
+ .column-gap-xl-2 {
+ -moz-column-gap: 0.5rem !important;
+ column-gap: 0.5rem !important;
+ }
+ .column-gap-xl-3 {
+ -moz-column-gap: 1rem !important;
+ column-gap: 1rem !important;
+ }
+ .column-gap-xl-4 {
+ -moz-column-gap: 1.5rem !important;
+ column-gap: 1.5rem !important;
+ }
+ .column-gap-xl-5 {
+ -moz-column-gap: 3rem !important;
+ column-gap: 3rem !important;
+ }
+ .text-xl-start {
+ text-align: left !important;
+ }
+ .text-xl-end {
+ text-align: right !important;
+ }
+ .text-xl-center {
+ text-align: center !important;
+ }
+}
+@media (min-width: 1400px) {
+ .float-xxl-start {
+ float: left !important;
+ }
+ .float-xxl-end {
+ float: right !important;
+ }
+ .float-xxl-none {
+ float: none !important;
+ }
+ .object-fit-xxl-contain {
+ -o-object-fit: contain !important;
+ object-fit: contain !important;
+ }
+ .object-fit-xxl-cover {
+ -o-object-fit: cover !important;
+ object-fit: cover !important;
+ }
+ .object-fit-xxl-fill {
+ -o-object-fit: fill !important;
+ object-fit: fill !important;
+ }
+ .object-fit-xxl-scale {
+ -o-object-fit: scale-down !important;
+ object-fit: scale-down !important;
+ }
+ .object-fit-xxl-none {
+ -o-object-fit: none !important;
+ object-fit: none !important;
+ }
+ .d-xxl-inline {
+ display: inline !important;
+ }
+ .d-xxl-inline-block {
+ display: inline-block !important;
+ }
+ .d-xxl-block {
+ display: block !important;
+ }
+ .d-xxl-grid {
+ display: grid !important;
+ }
+ .d-xxl-inline-grid {
+ display: inline-grid !important;
+ }
+ .d-xxl-table {
+ display: table !important;
+ }
+ .d-xxl-table-row {
+ display: table-row !important;
+ }
+ .d-xxl-table-cell {
+ display: table-cell !important;
+ }
+ .d-xxl-flex {
+ display: flex !important;
+ }
+ .d-xxl-inline-flex {
+ display: inline-flex !important;
+ }
+ .d-xxl-none {
+ display: none !important;
+ }
+ .flex-xxl-fill {
+ flex: 1 1 auto !important;
+ }
+ .flex-xxl-row {
+ flex-direction: row !important;
+ }
+ .flex-xxl-column {
+ flex-direction: column !important;
+ }
+ .flex-xxl-row-reverse {
+ flex-direction: row-reverse !important;
+ }
+ .flex-xxl-column-reverse {
+ flex-direction: column-reverse !important;
+ }
+ .flex-xxl-grow-0 {
+ flex-grow: 0 !important;
+ }
+ .flex-xxl-grow-1 {
+ flex-grow: 1 !important;
+ }
+ .flex-xxl-shrink-0 {
+ flex-shrink: 0 !important;
+ }
+ .flex-xxl-shrink-1 {
+ flex-shrink: 1 !important;
+ }
+ .flex-xxl-wrap {
+ flex-wrap: wrap !important;
+ }
+ .flex-xxl-nowrap {
+ flex-wrap: nowrap !important;
+ }
+ .flex-xxl-wrap-reverse {
+ flex-wrap: wrap-reverse !important;
+ }
+ .justify-content-xxl-start {
+ justify-content: flex-start !important;
+ }
+ .justify-content-xxl-end {
+ justify-content: flex-end !important;
+ }
+ .justify-content-xxl-center {
+ justify-content: center !important;
+ }
+ .justify-content-xxl-between {
+ justify-content: space-between !important;
+ }
+ .justify-content-xxl-around {
+ justify-content: space-around !important;
+ }
+ .justify-content-xxl-evenly {
+ justify-content: space-evenly !important;
+ }
+ .align-items-xxl-start {
+ align-items: flex-start !important;
+ }
+ .align-items-xxl-end {
+ align-items: flex-end !important;
+ }
+ .align-items-xxl-center {
+ align-items: center !important;
+ }
+ .align-items-xxl-baseline {
+ align-items: baseline !important;
+ }
+ .align-items-xxl-stretch {
+ align-items: stretch !important;
+ }
+ .align-content-xxl-start {
+ align-content: flex-start !important;
+ }
+ .align-content-xxl-end {
+ align-content: flex-end !important;
+ }
+ .align-content-xxl-center {
+ align-content: center !important;
+ }
+ .align-content-xxl-between {
+ align-content: space-between !important;
+ }
+ .align-content-xxl-around {
+ align-content: space-around !important;
+ }
+ .align-content-xxl-stretch {
+ align-content: stretch !important;
+ }
+ .align-self-xxl-auto {
+ align-self: auto !important;
+ }
+ .align-self-xxl-start {
+ align-self: flex-start !important;
+ }
+ .align-self-xxl-end {
+ align-self: flex-end !important;
+ }
+ .align-self-xxl-center {
+ align-self: center !important;
+ }
+ .align-self-xxl-baseline {
+ align-self: baseline !important;
+ }
+ .align-self-xxl-stretch {
+ align-self: stretch !important;
+ }
+ .order-xxl-first {
+ order: -1 !important;
+ }
+ .order-xxl-0 {
+ order: 0 !important;
+ }
+ .order-xxl-1 {
+ order: 1 !important;
+ }
+ .order-xxl-2 {
+ order: 2 !important;
+ }
+ .order-xxl-3 {
+ order: 3 !important;
+ }
+ .order-xxl-4 {
+ order: 4 !important;
+ }
+ .order-xxl-5 {
+ order: 5 !important;
+ }
+ .order-xxl-last {
+ order: 6 !important;
+ }
+ .m-xxl-0 {
+ margin: 0 !important;
+ }
+ .m-xxl-1 {
+ margin: 0.25rem !important;
+ }
+ .m-xxl-2 {
+ margin: 0.5rem !important;
+ }
+ .m-xxl-3 {
+ margin: 1rem !important;
+ }
+ .m-xxl-4 {
+ margin: 1.5rem !important;
+ }
+ .m-xxl-5 {
+ margin: 3rem !important;
+ }
+ .m-xxl-auto {
+ margin: auto !important;
+ }
+ .mx-xxl-0 {
+ margin-right: 0 !important;
+ margin-left: 0 !important;
+ }
+ .mx-xxl-1 {
+ margin-right: 0.25rem !important;
+ margin-left: 0.25rem !important;
+ }
+ .mx-xxl-2 {
+ margin-right: 0.5rem !important;
+ margin-left: 0.5rem !important;
+ }
+ .mx-xxl-3 {
+ margin-right: 1rem !important;
+ margin-left: 1rem !important;
+ }
+ .mx-xxl-4 {
+ margin-right: 1.5rem !important;
+ margin-left: 1.5rem !important;
+ }
+ .mx-xxl-5 {
+ margin-right: 3rem !important;
+ margin-left: 3rem !important;
+ }
+ .mx-xxl-auto {
+ margin-right: auto !important;
+ margin-left: auto !important;
+ }
+ .my-xxl-0 {
+ margin-top: 0 !important;
+ margin-bottom: 0 !important;
+ }
+ .my-xxl-1 {
+ margin-top: 0.25rem !important;
+ margin-bottom: 0.25rem !important;
+ }
+ .my-xxl-2 {
+ margin-top: 0.5rem !important;
+ margin-bottom: 0.5rem !important;
+ }
+ .my-xxl-3 {
+ margin-top: 1rem !important;
+ margin-bottom: 1rem !important;
+ }
+ .my-xxl-4 {
+ margin-top: 1.5rem !important;
+ margin-bottom: 1.5rem !important;
+ }
+ .my-xxl-5 {
+ margin-top: 3rem !important;
+ margin-bottom: 3rem !important;
+ }
+ .my-xxl-auto {
+ margin-top: auto !important;
+ margin-bottom: auto !important;
+ }
+ .mt-xxl-0 {
+ margin-top: 0 !important;
+ }
+ .mt-xxl-1 {
+ margin-top: 0.25rem !important;
+ }
+ .mt-xxl-2 {
+ margin-top: 0.5rem !important;
+ }
+ .mt-xxl-3 {
+ margin-top: 1rem !important;
+ }
+ .mt-xxl-4 {
+ margin-top: 1.5rem !important;
+ }
+ .mt-xxl-5 {
+ margin-top: 3rem !important;
+ }
+ .mt-xxl-auto {
+ margin-top: auto !important;
+ }
+ .me-xxl-0 {
+ margin-right: 0 !important;
+ }
+ .me-xxl-1 {
+ margin-right: 0.25rem !important;
+ }
+ .me-xxl-2 {
+ margin-right: 0.5rem !important;
+ }
+ .me-xxl-3 {
+ margin-right: 1rem !important;
+ }
+ .me-xxl-4 {
+ margin-right: 1.5rem !important;
+ }
+ .me-xxl-5 {
+ margin-right: 3rem !important;
+ }
+ .me-xxl-auto {
+ margin-right: auto !important;
+ }
+ .mb-xxl-0 {
+ margin-bottom: 0 !important;
+ }
+ .mb-xxl-1 {
+ margin-bottom: 0.25rem !important;
+ }
+ .mb-xxl-2 {
+ margin-bottom: 0.5rem !important;
+ }
+ .mb-xxl-3 {
+ margin-bottom: 1rem !important;
+ }
+ .mb-xxl-4 {
+ margin-bottom: 1.5rem !important;
+ }
+ .mb-xxl-5 {
+ margin-bottom: 3rem !important;
+ }
+ .mb-xxl-auto {
+ margin-bottom: auto !important;
+ }
+ .ms-xxl-0 {
+ margin-left: 0 !important;
+ }
+ .ms-xxl-1 {
+ margin-left: 0.25rem !important;
+ }
+ .ms-xxl-2 {
+ margin-left: 0.5rem !important;
+ }
+ .ms-xxl-3 {
+ margin-left: 1rem !important;
+ }
+ .ms-xxl-4 {
+ margin-left: 1.5rem !important;
+ }
+ .ms-xxl-5 {
+ margin-left: 3rem !important;
+ }
+ .ms-xxl-auto {
+ margin-left: auto !important;
+ }
+ .p-xxl-0 {
+ padding: 0 !important;
+ }
+ .p-xxl-1 {
+ padding: 0.25rem !important;
+ }
+ .p-xxl-2 {
+ padding: 0.5rem !important;
+ }
+ .p-xxl-3 {
+ padding: 1rem !important;
+ }
+ .p-xxl-4 {
+ padding: 1.5rem !important;
+ }
+ .p-xxl-5 {
+ padding: 3rem !important;
+ }
+ .px-xxl-0 {
+ padding-right: 0 !important;
+ padding-left: 0 !important;
+ }
+ .px-xxl-1 {
+ padding-right: 0.25rem !important;
+ padding-left: 0.25rem !important;
+ }
+ .px-xxl-2 {
+ padding-right: 0.5rem !important;
+ padding-left: 0.5rem !important;
+ }
+ .px-xxl-3 {
+ padding-right: 1rem !important;
+ padding-left: 1rem !important;
+ }
+ .px-xxl-4 {
+ padding-right: 1.5rem !important;
+ padding-left: 1.5rem !important;
+ }
+ .px-xxl-5 {
+ padding-right: 3rem !important;
+ padding-left: 3rem !important;
+ }
+ .py-xxl-0 {
+ padding-top: 0 !important;
+ padding-bottom: 0 !important;
+ }
+ .py-xxl-1 {
+ padding-top: 0.25rem !important;
+ padding-bottom: 0.25rem !important;
+ }
+ .py-xxl-2 {
+ padding-top: 0.5rem !important;
+ padding-bottom: 0.5rem !important;
+ }
+ .py-xxl-3 {
+ padding-top: 1rem !important;
+ padding-bottom: 1rem !important;
+ }
+ .py-xxl-4 {
+ padding-top: 1.5rem !important;
+ padding-bottom: 1.5rem !important;
+ }
+ .py-xxl-5 {
+ padding-top: 3rem !important;
+ padding-bottom: 3rem !important;
+ }
+ .pt-xxl-0 {
+ padding-top: 0 !important;
+ }
+ .pt-xxl-1 {
+ padding-top: 0.25rem !important;
+ }
+ .pt-xxl-2 {
+ padding-top: 0.5rem !important;
+ }
+ .pt-xxl-3 {
+ padding-top: 1rem !important;
+ }
+ .pt-xxl-4 {
+ padding-top: 1.5rem !important;
+ }
+ .pt-xxl-5 {
+ padding-top: 3rem !important;
+ }
+ .pe-xxl-0 {
+ padding-right: 0 !important;
+ }
+ .pe-xxl-1 {
+ padding-right: 0.25rem !important;
+ }
+ .pe-xxl-2 {
+ padding-right: 0.5rem !important;
+ }
+ .pe-xxl-3 {
+ padding-right: 1rem !important;
+ }
+ .pe-xxl-4 {
+ padding-right: 1.5rem !important;
+ }
+ .pe-xxl-5 {
+ padding-right: 3rem !important;
+ }
+ .pb-xxl-0 {
+ padding-bottom: 0 !important;
+ }
+ .pb-xxl-1 {
+ padding-bottom: 0.25rem !important;
+ }
+ .pb-xxl-2 {
+ padding-bottom: 0.5rem !important;
+ }
+ .pb-xxl-3 {
+ padding-bottom: 1rem !important;
+ }
+ .pb-xxl-4 {
+ padding-bottom: 1.5rem !important;
+ }
+ .pb-xxl-5 {
+ padding-bottom: 3rem !important;
+ }
+ .ps-xxl-0 {
+ padding-left: 0 !important;
+ }
+ .ps-xxl-1 {
+ padding-left: 0.25rem !important;
+ }
+ .ps-xxl-2 {
+ padding-left: 0.5rem !important;
+ }
+ .ps-xxl-3 {
+ padding-left: 1rem !important;
+ }
+ .ps-xxl-4 {
+ padding-left: 1.5rem !important;
+ }
+ .ps-xxl-5 {
+ padding-left: 3rem !important;
+ }
+ .gap-xxl-0 {
+ gap: 0 !important;
+ }
+ .gap-xxl-1 {
+ gap: 0.25rem !important;
+ }
+ .gap-xxl-2 {
+ gap: 0.5rem !important;
+ }
+ .gap-xxl-3 {
+ gap: 1rem !important;
+ }
+ .gap-xxl-4 {
+ gap: 1.5rem !important;
+ }
+ .gap-xxl-5 {
+ gap: 3rem !important;
+ }
+ .row-gap-xxl-0 {
+ row-gap: 0 !important;
+ }
+ .row-gap-xxl-1 {
+ row-gap: 0.25rem !important;
+ }
+ .row-gap-xxl-2 {
+ row-gap: 0.5rem !important;
+ }
+ .row-gap-xxl-3 {
+ row-gap: 1rem !important;
+ }
+ .row-gap-xxl-4 {
+ row-gap: 1.5rem !important;
+ }
+ .row-gap-xxl-5 {
+ row-gap: 3rem !important;
+ }
+ .column-gap-xxl-0 {
+ -moz-column-gap: 0 !important;
+ column-gap: 0 !important;
+ }
+ .column-gap-xxl-1 {
+ -moz-column-gap: 0.25rem !important;
+ column-gap: 0.25rem !important;
+ }
+ .column-gap-xxl-2 {
+ -moz-column-gap: 0.5rem !important;
+ column-gap: 0.5rem !important;
+ }
+ .column-gap-xxl-3 {
+ -moz-column-gap: 1rem !important;
+ column-gap: 1rem !important;
+ }
+ .column-gap-xxl-4 {
+ -moz-column-gap: 1.5rem !important;
+ column-gap: 1.5rem !important;
+ }
+ .column-gap-xxl-5 {
+ -moz-column-gap: 3rem !important;
+ column-gap: 3rem !important;
+ }
+ .text-xxl-start {
+ text-align: left !important;
+ }
+ .text-xxl-end {
+ text-align: right !important;
+ }
+ .text-xxl-center {
+ text-align: center !important;
+ }
+}
+@media (min-width: 1200px) {
+ .fs-1 {
+ font-size: 2.5rem !important;
+ }
+ .fs-2 {
+ font-size: 2rem !important;
+ }
+ .fs-3 {
+ font-size: 1.75rem !important;
+ }
+ .fs-4 {
+ font-size: 1.5rem !important;
+ }
+}
+@media print {
+ .d-print-inline {
+ display: inline !important;
+ }
+ .d-print-inline-block {
+ display: inline-block !important;
+ }
+ .d-print-block {
+ display: block !important;
+ }
+ .d-print-grid {
+ display: grid !important;
+ }
+ .d-print-inline-grid {
+ display: inline-grid !important;
+ }
+ .d-print-table {
+ display: table !important;
+ }
+ .d-print-table-row {
+ display: table-row !important;
+ }
+ .d-print-table-cell {
+ display: table-cell !important;
+ }
+ .d-print-flex {
+ display: flex !important;
+ }
+ .d-print-inline-flex {
+ display: inline-flex !important;
+ }
+ .d-print-none {
+ display: none !important;
+ }
+}
+
+/*# sourceMappingURL=bootstrap.css.map */
+
+@charset "UTF-8";
+:root {
+ --dt-row-selected: 13, 110, 253;
+ --dt-row-selected-text: 255, 255, 255;
+ --dt-row-selected-link: 9, 10, 11;
+ --dt-row-stripe: 0, 0, 0;
+ --dt-row-hover: 0, 0, 0;
+ --dt-column-ordering: 0, 0, 0;
+ --dt-html-background: white;
+}
+:root.dark {
+ --dt-html-background: rgb(33, 37, 41);
+}
+
+table.dataTable td.dt-control {
+ text-align: center;
+ cursor: pointer;
+}
+table.dataTable td.dt-control:before {
+ display: inline-block;
+ box-sizing: border-box;
+ content: "";
+ border-top: 5px solid transparent;
+ border-left: 10px solid rgba(0, 0, 0, 0.5);
+ border-bottom: 5px solid transparent;
+ border-right: 0px solid transparent;
+}
+table.dataTable tr.dt-hasChild td.dt-control:before {
+ border-top: 10px solid rgba(0, 0, 0, 0.5);
+ border-left: 5px solid transparent;
+ border-bottom: 0px solid transparent;
+ border-right: 5px solid transparent;
+}
+
+html.dark table.dataTable td.dt-control:before,
+:root[data-bs-theme=dark] table.dataTable td.dt-control:before,
+:root[data-theme=dark] table.dataTable td.dt-control:before {
+ border-left-color: rgba(255, 255, 255, 0.5);
+}
+html.dark table.dataTable tr.dt-hasChild td.dt-control:before,
+:root[data-bs-theme=dark] table.dataTable tr.dt-hasChild td.dt-control:before,
+:root[data-theme=dark] table.dataTable tr.dt-hasChild td.dt-control:before {
+ border-top-color: rgba(255, 255, 255, 0.5);
+ border-left-color: transparent;
+}
+
+div.dt-scroll {
+ width: 100%;
+}
+
+div.dt-scroll-body thead tr,
+div.dt-scroll-body tfoot tr {
+ height: 0;
+}
+div.dt-scroll-body thead tr th, div.dt-scroll-body thead tr td,
+div.dt-scroll-body tfoot tr th,
+div.dt-scroll-body tfoot tr td {
+ height: 0 !important;
+ padding-top: 0px !important;
+ padding-bottom: 0px !important;
+ border-top-width: 0px !important;
+ border-bottom-width: 0px !important;
+}
+div.dt-scroll-body thead tr th div.dt-scroll-sizing, div.dt-scroll-body thead tr td div.dt-scroll-sizing,
+div.dt-scroll-body tfoot tr th div.dt-scroll-sizing,
+div.dt-scroll-body tfoot tr td div.dt-scroll-sizing {
+ height: 0 !important;
+ overflow: hidden !important;
+}
+
+table.dataTable thead > tr > th:active,
+table.dataTable thead > tr > td:active {
+ outline: none;
+}
+table.dataTable thead > tr > th.dt-orderable-asc span.dt-column-order:before, table.dataTable thead > tr > th.dt-ordering-asc span.dt-column-order:before,
+table.dataTable thead > tr > td.dt-orderable-asc span.dt-column-order:before,
+table.dataTable thead > tr > td.dt-ordering-asc span.dt-column-order:before {
+ position: absolute;
+ display: block;
+ bottom: 50%;
+ content: "▲";
+ content: "▲"/"";
+}
+table.dataTable thead > tr > th.dt-orderable-desc span.dt-column-order:after, table.dataTable thead > tr > th.dt-ordering-desc span.dt-column-order:after,
+table.dataTable thead > tr > td.dt-orderable-desc span.dt-column-order:after,
+table.dataTable thead > tr > td.dt-ordering-desc span.dt-column-order:after {
+ position: absolute;
+ display: block;
+ top: 50%;
+ content: "▼";
+ content: "▼"/"";
+}
+table.dataTable thead > tr > th.dt-orderable-asc, table.dataTable thead > tr > th.dt-orderable-desc, table.dataTable thead > tr > th.dt-ordering-asc, table.dataTable thead > tr > th.dt-ordering-desc,
+table.dataTable thead > tr > td.dt-orderable-asc,
+table.dataTable thead > tr > td.dt-orderable-desc,
+table.dataTable thead > tr > td.dt-ordering-asc,
+table.dataTable thead > tr > td.dt-ordering-desc {
+ position: relative;
+ padding-right: 30px;
+}
+table.dataTable thead > tr > th.dt-orderable-asc span.dt-column-order, table.dataTable thead > tr > th.dt-orderable-desc span.dt-column-order, table.dataTable thead > tr > th.dt-ordering-asc span.dt-column-order, table.dataTable thead > tr > th.dt-ordering-desc span.dt-column-order,
+table.dataTable thead > tr > td.dt-orderable-asc span.dt-column-order,
+table.dataTable thead > tr > td.dt-orderable-desc span.dt-column-order,
+table.dataTable thead > tr > td.dt-ordering-asc span.dt-column-order,
+table.dataTable thead > tr > td.dt-ordering-desc span.dt-column-order {
+ position: absolute;
+ right: 12px;
+ top: 0;
+ bottom: 0;
+ width: 12px;
+}
+table.dataTable thead > tr > th.dt-orderable-asc span.dt-column-order:before, table.dataTable thead > tr > th.dt-orderable-asc span.dt-column-order:after, table.dataTable thead > tr > th.dt-orderable-desc span.dt-column-order:before, table.dataTable thead > tr > th.dt-orderable-desc span.dt-column-order:after, table.dataTable thead > tr > th.dt-ordering-asc span.dt-column-order:before, table.dataTable thead > tr > th.dt-ordering-asc span.dt-column-order:after, table.dataTable thead > tr > th.dt-ordering-desc span.dt-column-order:before, table.dataTable thead > tr > th.dt-ordering-desc span.dt-column-order:after,
+table.dataTable thead > tr > td.dt-orderable-asc span.dt-column-order:before,
+table.dataTable thead > tr > td.dt-orderable-asc span.dt-column-order:after,
+table.dataTable thead > tr > td.dt-orderable-desc span.dt-column-order:before,
+table.dataTable thead > tr > td.dt-orderable-desc span.dt-column-order:after,
+table.dataTable thead > tr > td.dt-ordering-asc span.dt-column-order:before,
+table.dataTable thead > tr > td.dt-ordering-asc span.dt-column-order:after,
+table.dataTable thead > tr > td.dt-ordering-desc span.dt-column-order:before,
+table.dataTable thead > tr > td.dt-ordering-desc span.dt-column-order:after {
+ left: 0;
+ opacity: 0.125;
+ line-height: 9px;
+ font-size: 0.8em;
+}
+table.dataTable thead > tr > th.dt-orderable-asc, table.dataTable thead > tr > th.dt-orderable-desc,
+table.dataTable thead > tr > td.dt-orderable-asc,
+table.dataTable thead > tr > td.dt-orderable-desc {
+ cursor: pointer;
+}
+table.dataTable thead > tr > th.dt-orderable-asc:hover, table.dataTable thead > tr > th.dt-orderable-desc:hover,
+table.dataTable thead > tr > td.dt-orderable-asc:hover,
+table.dataTable thead > tr > td.dt-orderable-desc:hover {
+ outline: 2px solid rgba(0, 0, 0, 0.05);
+ outline-offset: -2px;
+}
+table.dataTable thead > tr > th.dt-ordering-asc span.dt-column-order:before, table.dataTable thead > tr > th.dt-ordering-desc span.dt-column-order:after,
+table.dataTable thead > tr > td.dt-ordering-asc span.dt-column-order:before,
+table.dataTable thead > tr > td.dt-ordering-desc span.dt-column-order:after {
+ opacity: 0.6;
+}
+table.dataTable thead > tr > th.sorting_desc_disabled span.dt-column-order:after, table.dataTable thead > tr > th.sorting_asc_disabled span.dt-column-order:before,
+table.dataTable thead > tr > td.sorting_desc_disabled span.dt-column-order:after,
+table.dataTable thead > tr > td.sorting_asc_disabled span.dt-column-order:before {
+ display: none;
+}
+table.dataTable thead > tr > th:active,
+table.dataTable thead > tr > td:active {
+ outline: none;
+}
+
+div.dt-scroll-body > table.dataTable > thead > tr > th,
+div.dt-scroll-body > table.dataTable > thead > tr > td {
+ overflow: hidden;
+}
+
+:root.dark table.dataTable thead > tr > th.dt-orderable-asc:hover, :root.dark table.dataTable thead > tr > th.dt-orderable-desc:hover,
+:root.dark table.dataTable thead > tr > td.dt-orderable-asc:hover,
+:root.dark table.dataTable thead > tr > td.dt-orderable-desc:hover,
+:root[data-bs-theme=dark] table.dataTable thead > tr > th.dt-orderable-asc:hover,
+:root[data-bs-theme=dark] table.dataTable thead > tr > th.dt-orderable-desc:hover,
+:root[data-bs-theme=dark] table.dataTable thead > tr > td.dt-orderable-asc:hover,
+:root[data-bs-theme=dark] table.dataTable thead > tr > td.dt-orderable-desc:hover {
+ outline: 2px solid rgba(255, 255, 255, 0.05);
+}
+
+div.dt-processing {
+ position: absolute;
+ top: 50%;
+ left: 50%;
+ width: 200px;
+ margin-left: -100px;
+ margin-top: -22px;
+ text-align: center;
+ padding: 2px;
+ z-index: 10;
+}
+div.dt-processing > div:last-child {
+ position: relative;
+ width: 80px;
+ height: 15px;
+ margin: 1em auto;
+}
+div.dt-processing > div:last-child > div {
+ position: absolute;
+ top: 0;
+ width: 13px;
+ height: 13px;
+ border-radius: 50%;
+ background: rgb(13, 110, 253);
+ background: rgb(var(--dt-row-selected));
+ animation-timing-function: cubic-bezier(0, 1, 1, 0);
+}
+div.dt-processing > div:last-child > div:nth-child(1) {
+ left: 8px;
+ animation: datatables-loader-1 0.6s infinite;
+}
+div.dt-processing > div:last-child > div:nth-child(2) {
+ left: 8px;
+ animation: datatables-loader-2 0.6s infinite;
+}
+div.dt-processing > div:last-child > div:nth-child(3) {
+ left: 32px;
+ animation: datatables-loader-2 0.6s infinite;
+}
+div.dt-processing > div:last-child > div:nth-child(4) {
+ left: 56px;
+ animation: datatables-loader-3 0.6s infinite;
+}
+
+@keyframes datatables-loader-1 {
+ 0% {
+ transform: scale(0);
+ }
+ 100% {
+ transform: scale(1);
+ }
+}
+@keyframes datatables-loader-3 {
+ 0% {
+ transform: scale(1);
+ }
+ 100% {
+ transform: scale(0);
+ }
+}
+@keyframes datatables-loader-2 {
+ 0% {
+ transform: translate(0, 0);
+ }
+ 100% {
+ transform: translate(24px, 0);
+ }
+}
+table.dataTable.nowrap th, table.dataTable.nowrap td {
+ white-space: nowrap;
+}
+table.dataTable th,
+table.dataTable td {
+ box-sizing: border-box;
+}
+table.dataTable th.dt-left,
+table.dataTable td.dt-left {
+ text-align: left;
+}
+table.dataTable th.dt-center,
+table.dataTable td.dt-center {
+ text-align: center;
+}
+table.dataTable th.dt-right,
+table.dataTable td.dt-right {
+ text-align: right;
+}
+table.dataTable th.dt-justify,
+table.dataTable td.dt-justify {
+ text-align: justify;
+}
+table.dataTable th.dt-nowrap,
+table.dataTable td.dt-nowrap {
+ white-space: nowrap;
+}
+table.dataTable th.dt-empty,
+table.dataTable td.dt-empty {
+ text-align: center;
+ vertical-align: top;
+}
+table.dataTable th.dt-type-numeric, table.dataTable th.dt-type-date,
+table.dataTable td.dt-type-numeric,
+table.dataTable td.dt-type-date {
+ text-align: right;
+}
+table.dataTable thead th,
+table.dataTable thead td,
+table.dataTable tfoot th,
+table.dataTable tfoot td {
+ text-align: left;
+}
+table.dataTable thead th.dt-head-left,
+table.dataTable thead td.dt-head-left,
+table.dataTable tfoot th.dt-head-left,
+table.dataTable tfoot td.dt-head-left {
+ text-align: left;
+}
+table.dataTable thead th.dt-head-center,
+table.dataTable thead td.dt-head-center,
+table.dataTable tfoot th.dt-head-center,
+table.dataTable tfoot td.dt-head-center {
+ text-align: center;
+}
+table.dataTable thead th.dt-head-right,
+table.dataTable thead td.dt-head-right,
+table.dataTable tfoot th.dt-head-right,
+table.dataTable tfoot td.dt-head-right {
+ text-align: right;
+}
+table.dataTable thead th.dt-head-justify,
+table.dataTable thead td.dt-head-justify,
+table.dataTable tfoot th.dt-head-justify,
+table.dataTable tfoot td.dt-head-justify {
+ text-align: justify;
+}
+table.dataTable thead th.dt-head-nowrap,
+table.dataTable thead td.dt-head-nowrap,
+table.dataTable tfoot th.dt-head-nowrap,
+table.dataTable tfoot td.dt-head-nowrap {
+ white-space: nowrap;
+}
+table.dataTable tbody th.dt-body-left,
+table.dataTable tbody td.dt-body-left {
+ text-align: left;
+}
+table.dataTable tbody th.dt-body-center,
+table.dataTable tbody td.dt-body-center {
+ text-align: center;
+}
+table.dataTable tbody th.dt-body-right,
+table.dataTable tbody td.dt-body-right {
+ text-align: right;
+}
+table.dataTable tbody th.dt-body-justify,
+table.dataTable tbody td.dt-body-justify {
+ text-align: justify;
+}
+table.dataTable tbody th.dt-body-nowrap,
+table.dataTable tbody td.dt-body-nowrap {
+ white-space: nowrap;
+}
+
+/*! Bootstrap 5 integration for DataTables
+ *
+ * ©2020 SpryMedia Ltd, all rights reserved.
+ * License: MIT datatables.net/license/mit
+ */
+table.table.dataTable {
+ clear: both;
+ margin-bottom: 0;
+ max-width: none;
+ border-spacing: 0;
+}
+table.table.dataTable.table-striped > tbody > tr:nth-of-type(2n+1) > * {
+ box-shadow: none;
+}
+table.table.dataTable > :not(caption) > * > * {
+ background-color: var(--bs-table-bg);
+}
+table.table.dataTable > tbody > tr {
+ background-color: transparent;
+}
+table.table.dataTable > tbody > tr.selected > * {
+ box-shadow: inset 0 0 0 9999px rgb(13, 110, 253);
+ box-shadow: inset 0 0 0 9999px rgb(var(--dt-row-selected));
+ color: rgb(255, 255, 255);
+ color: rgb(var(--dt-row-selected-text));
+}
+table.table.dataTable > tbody > tr.selected a {
+ color: rgb(9, 10, 11);
+ color: rgb(var(--dt-row-selected-link));
+}
+table.table.dataTable.table-striped > tbody > tr:nth-of-type(2n+1) > * {
+ box-shadow: inset 0 0 0 9999px rgba(var(--dt-row-stripe), 0.05);
+}
+table.table.dataTable.table-striped > tbody > tr:nth-of-type(2n+1).selected > * {
+ box-shadow: inset 0 0 0 9999px rgba(13, 110, 253, 0.95);
+ box-shadow: inset 0 0 0 9999px rgba(var(--dt-row-selected), 0.95);
+}
+table.table.dataTable.table-hover > tbody > tr:hover > * {
+ box-shadow: inset 0 0 0 9999px rgba(var(--dt-row-hover), 0.075);
+}
+table.table.dataTable.table-hover > tbody > tr.selected:hover > * {
+ box-shadow: inset 0 0 0 9999px rgba(13, 110, 253, 0.975);
+ box-shadow: inset 0 0 0 9999px rgba(var(--dt-row-selected), 0.975);
+}
+
+div.dt-container div.dt-layout-start > *:not(:last-child) {
+ margin-right: 1em;
+}
+div.dt-container div.dt-layout-end > *:not(:first-child) {
+ margin-left: 1em;
+}
+div.dt-container div.dt-layout-full {
+ width: 100%;
+}
+div.dt-container div.dt-layout-full > *:only-child {
+ margin-left: auto;
+ margin-right: auto;
+}
+div.dt-container div.dt-layout-table > div {
+ display: block !important;
+}
+
+@media screen and (max-width: 767px) {
+ div.dt-container div.dt-layout-start > *:not(:last-child) {
+ margin-right: 0;
+ }
+ div.dt-container div.dt-layout-end > *:not(:first-child) {
+ margin-left: 0;
+ }
+}
+div.dt-container div.dt-length label {
+ font-weight: normal;
+ text-align: left;
+ white-space: nowrap;
+}
+div.dt-container div.dt-length select {
+ width: auto;
+ display: inline-block;
+ margin-right: 0.5em;
+}
+div.dt-container div.dt-search {
+ text-align: right;
+}
+div.dt-container div.dt-search label {
+ font-weight: normal;
+ white-space: nowrap;
+ text-align: left;
+}
+div.dt-container div.dt-search input {
+ margin-left: 0.5em;
+ display: inline-block;
+ width: auto;
+}
+div.dt-container div.dt-paging {
+ margin: 0;
+}
+div.dt-container div.dt-paging ul.pagination {
+ margin: 2px 0;
+ flex-wrap: wrap;
+}
+div.dt-container div.dt-row {
+ position: relative;
+}
+
+div.dt-scroll-head table.dataTable {
+ margin-bottom: 0 !important;
+}
+
+div.dt-scroll-body {
+ border-bottom-color: var(--bs-border-color);
+ border-bottom-width: var(--bs-border-width);
+ border-bottom-style: solid;
+}
+div.dt-scroll-body > table {
+ border-top: none;
+ margin-top: 0 !important;
+ margin-bottom: 0 !important;
+}
+div.dt-scroll-body > table > tbody > tr:first-child {
+ border-top-width: 0;
+}
+div.dt-scroll-body > table > thead > tr {
+ border-width: 0 !important;
+}
+div.dt-scroll-body > table > tbody > tr:last-child > * {
+ border-bottom: none;
+}
+
+div.dt-scroll-foot > .dt-scroll-footInner {
+ box-sizing: content-box;
+}
+div.dt-scroll-foot > .dt-scroll-footInner > table {
+ margin-top: 0 !important;
+ border-top: none;
+}
+div.dt-scroll-foot > .dt-scroll-footInner > table > tfoot > tr:first-child {
+ border-top-width: 0 !important;
+}
+
+@media screen and (max-width: 767px) {
+ div.dt-container div.dt-length,
+ div.dt-container div.dt-search,
+ div.dt-container div.dt-info,
+ div.dt-container div.dt-paging {
+ text-align: center;
+ }
+ div.dt-container .row {
+ --bs-gutter-y: 0.5rem;
+ }
+ div.dt-container div.dt-paging ul.pagination {
+ justify-content: center !important;
+ }
+}
+table.dataTable.table-sm > thead > tr th.dt-orderable-asc, table.dataTable.table-sm > thead > tr th.dt-orderable-desc, table.dataTable.table-sm > thead > tr th.dt-ordering-asc, table.dataTable.table-sm > thead > tr th.dt-ordering-desc,
+table.dataTable.table-sm > thead > tr td.dt-orderable-asc,
+table.dataTable.table-sm > thead > tr td.dt-orderable-desc,
+table.dataTable.table-sm > thead > tr td.dt-ordering-asc,
+table.dataTable.table-sm > thead > tr td.dt-ordering-desc {
+ padding-right: 20px;
+}
+table.dataTable.table-sm > thead > tr th.dt-orderable-asc span.dt-column-order, table.dataTable.table-sm > thead > tr th.dt-orderable-desc span.dt-column-order, table.dataTable.table-sm > thead > tr th.dt-ordering-asc span.dt-column-order, table.dataTable.table-sm > thead > tr th.dt-ordering-desc span.dt-column-order,
+table.dataTable.table-sm > thead > tr td.dt-orderable-asc span.dt-column-order,
+table.dataTable.table-sm > thead > tr td.dt-orderable-desc span.dt-column-order,
+table.dataTable.table-sm > thead > tr td.dt-ordering-asc span.dt-column-order,
+table.dataTable.table-sm > thead > tr td.dt-ordering-desc span.dt-column-order {
+ right: 5px;
+}
+
+div.dt-scroll-head table.table-bordered {
+ border-bottom-width: 0;
+}
+
+div.table-responsive > div.dt-container > div.row {
+ margin: 0;
+}
+div.table-responsive > div.dt-container > div.row > div[class^=col-]:first-child {
+ padding-left: 0;
+}
+div.table-responsive > div.dt-container > div.row > div[class^=col-]:last-child {
+ padding-right: 0;
+}
+
+:root[data-bs-theme=dark] {
+ --dt-row-hover: 255, 255, 255;
+ --dt-row-stripe: 255, 255, 255;
+ --dt-column-ordering: 255, 255, 255;
+}
+
+
+div.dt-autofill-handle{position:absolute;height:10px;width:10px;z-index:10;box-sizing:border-box;background:#0d6efd;cursor:pointer}div.dtk-focus-alt div.dt-autofill-handle{background:#ff8b33}div.dt-autofill-select{position:absolute;z-index:1001;background-color:#0d6efd;background-image:repeating-linear-gradient(45deg, transparent, transparent 5px, rgba(255, 255, 255, 0.5) 5px, rgba(255, 255, 255, 0.5) 10px)}div.dt-autofill-select.top,div.dt-autofill-select.bottom{height:3px;margin-top:-1px}div.dt-autofill-select.left,div.dt-autofill-select.right{width:3px;margin-left:-1px}div.dt-autofill-list{position:fixed;top:50%;left:50%;width:500px;margin-left:-250px;background-color:white;border-radius:.75em;box-shadow:0 12px 30px rgba(0, 0, 0, 0.6);z-index:104;box-sizing:border-box;padding:2em}div.dt-autofill-list div.dtaf-popover-close{position:absolute;top:6px;right:6px;width:22px;height:22px;text-align:center;border-radius:3px;cursor:pointer;z-index:12}div.dt-autofill-list>div.dt-autofill-list-items>button{display:block;width:100%;margin:1em 0;padding:1em;border-radius:.5em;border:1px solid rgba(0, 0, 0, 0.175);background-color:#f6f6f6;text-align:left;cursor:pointer}div.dt-autofill-list>div.dt-autofill-list-items>button:hover{background-color:#ebebeb}div.dt-autofill-list>div.dt-autofill-list-items>button:first-child{margin-top:0}div.dt-autofill-list>div.dt-autofill-list-items>button:last-child{margin-bottom:0}div.dt-autofill-list>div.dt-autofill-list-items>button input[type=number]{display:inline-block;box-sizing:border-box;padding:6px;width:70px;margin:-2px 0}div.dt-autofill-list>div.dt-autofill-list-items>button span{float:right}div.dtaf-popover-closeable{padding-top:2.5em}div.dt-autofill-background{position:fixed;top:0;left:0;width:100%;height:100%;background:rgba(0, 0, 0, 0.7);background:radial-gradient(ellipse farthest-corner at center, rgba(0, 0, 0, 0.3) 0%, rgba(0, 0, 0, 0.7) 100%);z-index:103}html.dark div.dt-autofill-handle{background:rgb(110, 168, 254)}html.dark div.dt-autofill-select{position:absolute;z-index:1001;background-color:rgb(110, 168, 254);background-image:repeating-linear-gradient(45deg, transparent, transparent 5px, rgba(0, 0, 0, 0.5) 5px, rgba(0, 0, 0, 0.5) 10px)}html.dark div.dt-autofill-list{background-color:var(--dt-html-background);border:1px solid rgba(255, 255, 255, 0.15)}html.dark div.dt-autofill-list button{color:inherit;border:1px solid rgba(255, 255, 255, 0.175);background-color:rgb(47, 52, 56)}html.dark div.dt-autofill-list button:hover{background-color:rgb(64, 69, 73)}@media screen and (max-width: 767px){div.dt-autofill-handle{height:16px;width:16px}div.dt-autofill-list{width:90%;left:74.5%}}div.dt-autofill-list div.dt-autofill-question input[type=number]{padding:6px;width:60px;margin:-2px 0}div.row.dt-row>div.col-sm-12{position:relative}
+
+
+@keyframes dtb-spinner {
+ 100% {
+ transform: rotate(360deg);
+ }
+}
+@-o-keyframes dtb-spinner {
+ 100% {
+ -o-transform: rotate(360deg);
+ transform: rotate(360deg);
+ }
+}
+@-ms-keyframes dtb-spinner {
+ 100% {
+ -ms-transform: rotate(360deg);
+ transform: rotate(360deg);
+ }
+}
+@-webkit-keyframes dtb-spinner {
+ 100% {
+ -webkit-transform: rotate(360deg);
+ transform: rotate(360deg);
+ }
+}
+@-moz-keyframes dtb-spinner {
+ 100% {
+ -moz-transform: rotate(360deg);
+ transform: rotate(360deg);
+ }
+}
+div.dataTables_wrapper {
+ position: relative;
+}
+
+div.dt-buttons {
+ position: initial;
+}
+div.dt-buttons .dt-button {
+ overflow: hidden;
+ text-overflow: ellipsis;
+ white-space: nowrap;
+}
+
+div.dt-button-info {
+ position: fixed;
+ top: 50%;
+ left: 50%;
+ width: 400px;
+ margin-top: -100px;
+ margin-left: -200px;
+ background-color: white;
+ border-radius: 0.75em;
+ box-shadow: 3px 4px 10px 1px rgba(0, 0, 0, 0.8);
+ text-align: center;
+ z-index: 2003;
+ overflow: hidden;
+}
+div.dt-button-info h2 {
+ padding: 2rem 2rem 1rem 2rem;
+ margin: 0;
+ font-weight: normal;
+}
+div.dt-button-info > div {
+ padding: 1em 2em 2em 2em;
+}
+
+div.dtb-popover-close {
+ position: absolute;
+ top: 6px;
+ right: 6px;
+ width: 22px;
+ height: 22px;
+ text-align: center;
+ border-radius: 3px;
+ cursor: pointer;
+ z-index: 2003;
+}
+
+button.dtb-hide-drop {
+ display: none !important;
+}
+
+div.dt-button-collection-title {
+ text-align: center;
+ padding: 0.3em 0.5em 0.5em;
+ margin-left: 0.5em;
+ margin-right: 0.5em;
+ font-size: 0.9em;
+ white-space: nowrap;
+ overflow: hidden;
+ text-overflow: ellipsis;
+}
+
+div.dt-button-collection-title:empty {
+ display: none;
+}
+
+span.dt-button-spacer {
+ display: inline-block;
+ margin: 0.5em;
+ white-space: nowrap;
+}
+span.dt-button-spacer.bar {
+ border-left: 1px solid rgba(0, 0, 0, 0.3);
+ vertical-align: middle;
+ padding-left: 0.5em;
+}
+span.dt-button-spacer.bar:empty {
+ height: 1em;
+ width: 1px;
+ padding-left: 0;
+}
+
+div.dt-button-collection .dt-button-active {
+ padding-right: 3em;
+}
+div.dt-button-collection .dt-button-active:after {
+ position: absolute;
+ top: 50%;
+ margin-top: -10px;
+ right: 1em;
+ display: inline-block;
+ content: "✓";
+ color: inherit;
+}
+div.dt-button-collection .dt-button-active.dt-button-split {
+ padding-right: 0;
+}
+div.dt-button-collection .dt-button-active.dt-button-split:after {
+ display: none;
+}
+div.dt-button-collection .dt-button-active.dt-button-split > *:first-child {
+ padding-right: 3em;
+}
+div.dt-button-collection .dt-button-active.dt-button-split > *:first-child:after {
+ position: absolute;
+ top: 50%;
+ margin-top: -10px;
+ right: 1em;
+ display: inline-block;
+ content: "✓";
+ color: inherit;
+}
+div.dt-button-collection .dt-button-active-a a {
+ padding-right: 3em;
+}
+div.dt-button-collection .dt-button-active-a a:after {
+ position: absolute;
+ right: 1em;
+ display: inline-block;
+ content: "✓";
+ color: inherit;
+}
+div.dt-button-collection span.dt-button-spacer {
+ width: 100%;
+ font-size: 0.9em;
+ text-align: center;
+ margin: 0.5em 0;
+}
+div.dt-button-collection span.dt-button-spacer:empty {
+ height: 0;
+ width: 100%;
+}
+div.dt-button-collection span.dt-button-spacer.bar {
+ border-left: none;
+ border-bottom: 1px solid rgba(0, 0, 0, 0.1);
+ padding-left: 0;
+}
+
+@media print {
+ table.dataTable tr > * {
+ box-shadow: none !important;
+ }
+}
+html.dark div.dt-button-info {
+ background-color: var(--dt-html-background);
+ border: 1px solid rgba(255, 255, 255, 0.15);
+}
+
+div.dt-buttons div.btn-group {
+ position: initial;
+}
+div.dt-buttons div.dropdown-menu {
+ margin-top: 4px;
+ width: 200px;
+}
+div.dt-buttons div.dropdown-menu .dt-button {
+ position: relative;
+}
+div.dt-buttons div.dropdown-menu div.dt-button-split {
+ display: flex;
+ flex-direction: row;
+ flex-wrap: wrap;
+ justify-content: flex-start;
+ align-content: flex-start;
+ align-items: stretch;
+}
+div.dt-buttons div.dropdown-menu div.dt-button-split a:first-child {
+ min-width: auto;
+ flex: 1 0 50px;
+ padding-right: 0;
+}
+div.dt-buttons div.dropdown-menu div.dt-button-split button:last-child {
+ min-width: 33px;
+ flex: 0;
+ background: transparent;
+ border: none;
+ line-height: 1rem;
+ color: var(--bs-dropdown-link-color);
+ padding: var(--bs-dropdown-item-padding-y) var(--bs-dropdown-item-padding-x);
+ overflow: visible;
+}
+div.dt-buttons div.dropdown-menu div.dt-button-split button:last-child:hover {
+ color: var(--bs-dropdown-link-hover-color);
+ background-color: var(--bs-dropdown-link-hover-bg);
+}
+div.dt-buttons div.dropdown-menu div.dt-button-split button:last-child:after {
+ position: relative;
+ left: -3px;
+}
+div.dt-buttons div.dropdown-menu.fixed {
+ position: fixed;
+ display: block;
+ top: 50%;
+ left: 50%;
+ margin-left: -75px;
+ border-radius: 5px;
+ background-color: white;
+ padding: 0.5em;
+}
+div.dt-buttons div.dropdown-menu.fixed.two-column {
+ margin-left: -200px;
+}
+div.dt-buttons div.dropdown-menu.fixed.three-column {
+ margin-left: -225px;
+}
+div.dt-buttons div.dropdown-menu.fixed.four-column {
+ margin-left: -300px;
+}
+div.dt-buttons div.dropdown-menu.fixed.columns {
+ margin-left: -409px;
+}
+@media screen and (max-width: 1024px) {
+ div.dt-buttons div.dropdown-menu.fixed.columns {
+ margin-left: -308px;
+ }
+}
+@media screen and (max-width: 640px) {
+ div.dt-buttons div.dropdown-menu.fixed.columns {
+ margin-left: -203px;
+ }
+}
+@media screen and (max-width: 460px) {
+ div.dt-buttons div.dropdown-menu.fixed.columns {
+ margin-left: -100px;
+ }
+}
+div.dt-buttons div.dropdown-menu.fixed > :last-child {
+ max-height: 100vh;
+ overflow: auto;
+}
+div.dt-buttons div.dropdown-menu.two-column > :last-child, div.dt-buttons div.dropdown-menu.three-column > :last-child, div.dt-buttons div.dropdown-menu.four-column > :last-child {
+ display: block !important;
+ -webkit-column-gap: 8px;
+ -moz-column-gap: 8px;
+ -ms-column-gap: 8px;
+ -o-column-gap: 8px;
+ column-gap: 8px;
+}
+div.dt-buttons div.dropdown-menu.two-column > :last-child > *, div.dt-buttons div.dropdown-menu.three-column > :last-child > *, div.dt-buttons div.dropdown-menu.four-column > :last-child > * {
+ -webkit-column-break-inside: avoid;
+ break-inside: avoid;
+}
+div.dt-buttons div.dropdown-menu.two-column {
+ width: 400px;
+}
+div.dt-buttons div.dropdown-menu.two-column > :last-child {
+ padding-bottom: 1px;
+ column-count: 2;
+}
+div.dt-buttons div.dropdown-menu.three-column {
+ width: 450px;
+}
+div.dt-buttons div.dropdown-menu.three-column > :last-child {
+ padding-bottom: 1px;
+ column-count: 3;
+}
+div.dt-buttons div.dropdown-menu.four-column {
+ width: 600px;
+}
+div.dt-buttons div.dropdown-menu.four-column > :last-child {
+ padding-bottom: 1px;
+ column-count: 4;
+}
+div.dt-buttons div.dropdown-menu .dt-button {
+ border-radius: 0;
+}
+div.dt-buttons div.dropdown-menu.columns {
+ width: auto;
+}
+div.dt-buttons div.dropdown-menu.columns > :last-child {
+ display: flex;
+ flex-wrap: wrap;
+ justify-content: flex-start;
+ align-items: center;
+ gap: 6px;
+ width: 818px;
+ padding-bottom: 1px;
+}
+div.dt-buttons div.dropdown-menu.columns > :last-child .dt-button {
+ min-width: 200px;
+ flex: 0 1;
+ margin: 0;
+}
+div.dt-buttons div.dropdown-menu.columns.dtb-b3 > :last-child, div.dt-buttons div.dropdown-menu.columns.dtb-b2 > :last-child, div.dt-buttons div.dropdown-menu.columns.dtb-b1 > :last-child {
+ justify-content: space-between;
+}
+div.dt-buttons div.dropdown-menu.columns.dtb-b3 .dt-button {
+ flex: 1 1 32%;
+}
+div.dt-buttons div.dropdown-menu.columns.dtb-b2 .dt-button {
+ flex: 1 1 48%;
+}
+div.dt-buttons div.dropdown-menu.columns.dtb-b1 .dt-button {
+ flex: 1 1 100%;
+}
+@media screen and (max-width: 1024px) {
+ div.dt-buttons div.dropdown-menu.columns > :last-child {
+ width: 612px;
+ }
+}
+@media screen and (max-width: 640px) {
+ div.dt-buttons div.dropdown-menu.columns > :last-child {
+ width: 406px;
+ }
+ div.dt-buttons div.dropdown-menu.columns.dtb-b3 .dt-button {
+ flex: 0 1 32%;
+ }
+}
+@media screen and (max-width: 460px) {
+ div.dt-buttons div.dropdown-menu.columns > :last-child {
+ width: 200px;
+ }
+}
+div.dt-buttons span.dt-button-spacer.empty {
+ margin: 1px;
+}
+div.dt-buttons span.dt-button-spacer.bar:empty {
+ height: inherit;
+}
+div.dt-buttons .btn.processing {
+ color: rgba(0, 0, 0, 0.2);
+}
+div.dt-buttons .btn.processing:after {
+ position: absolute;
+ top: 50%;
+ left: 50%;
+ width: 16px;
+ height: 16px;
+ margin: -8px 0 0 -8px;
+ box-sizing: border-box;
+ display: block;
+ content: " ";
+ border: 2px solid rgb(40, 40, 40);
+ border-radius: 50%;
+ border-left-color: transparent;
+ border-right-color: transparent;
+ animation: dtb-spinner 1500ms infinite linear;
+ -o-animation: dtb-spinner 1500ms infinite linear;
+ -ms-animation: dtb-spinner 1500ms infinite linear;
+ -webkit-animation: dtb-spinner 1500ms infinite linear;
+ -moz-animation: dtb-spinner 1500ms infinite linear;
+}
+
+div.dt-button-background {
+ position: fixed;
+ top: 0;
+ left: 0;
+ width: 100%;
+ height: 100%;
+ z-index: 999;
+}
+
+@media screen and (max-width: 767px) {
+ div.dt-buttons {
+ float: none;
+ width: 100%;
+ text-align: center;
+ margin-bottom: 0.5em;
+ }
+ div.dt-buttons a.btn {
+ float: none;
+ }
+}
+:root[data-bs-theme=dark] div.dropdown-menu.dt-button-collection.fixed {
+ background-color: rgb(33, 37, 41);
+ border: 1px solid rgba(255, 255, 255, 0.15);
+ border-radius: 8px;
+}
+
+
+body.dtcr-dragging {
+ overflow-x: hidden;
+}
+
+table.dtcr-cloned.dataTable {
+ position: absolute !important;
+ background-color: rgba(255, 255, 255, 0.7);
+ z-index: 202;
+ border-radius: 4px;
+}
+
+table.dataTable tbody tr td.dtcr-moving {
+ background-color: rgba(127, 127, 127, 0.15);
+}
+table.dataTable tbody tr td.dtcr-moving-first {
+ border-left: 1px solid #0d6efd;
+}
+table.dataTable tbody tr td.dtcr-moving-last {
+ border-right: 1px solid #0d6efd;
+}
+
+html.dark table.dtcr-cloned.dataTable {
+ background-color: rgba(33, 33, 33, 0.9);
+}
+
+
+div.dt-datetime {
+ position: absolute;
+ background-color: white;
+ z-index: 2050;
+ border: 1px solid #ccc;
+ box-shadow: 0 5px 15px -5px rgba(0, 0, 0, 0.5);
+ padding: 6px 20px;
+ width: 275px;
+ border-radius: 5px;
+}
+div.dt-datetime.inline {
+ position: relative;
+ box-shadow: none;
+}
+div.dt-datetime div.dt-datetime-title {
+ text-align: center;
+ padding: 5px 0px 3px;
+}
+div.dt-datetime div.dt-datetime-buttons {
+ text-align: center;
+}
+div.dt-datetime div.dt-datetime-buttons a {
+ display: inline-block;
+ padding: 0 0.5em 0.5em 0.5em;
+ margin: 0;
+ font-size: 0.9em;
+}
+div.dt-datetime div.dt-datetime-buttons a:hover {
+ text-decoration: underline;
+}
+div.dt-datetime table {
+ border-spacing: 0;
+ margin: 12px 0;
+ width: 100%;
+}
+div.dt-datetime table.dt-datetime-table-nospace {
+ margin-top: -12px;
+}
+div.dt-datetime table th {
+ font-size: 0.8em;
+ color: #777;
+ font-weight: normal;
+ width: 14.285714286%;
+ padding: 0 0 4px 0;
+ text-align: center;
+}
+div.dt-datetime table td {
+ font-size: 0.9em;
+ color: #444;
+ padding: 0;
+}
+div.dt-datetime table td.selectable {
+ text-align: center;
+ background: #f5f5f5;
+}
+div.dt-datetime table td.selectable.disabled {
+ color: #aaa;
+ background: white;
+}
+div.dt-datetime table td.selectable.disabled button:hover {
+ color: #aaa;
+ background: white;
+}
+div.dt-datetime table td.selectable.now {
+ background-color: #ddd;
+}
+div.dt-datetime table td.selectable.now button {
+ font-weight: bold;
+}
+div.dt-datetime table td.selectable.selected button {
+ background: #4E6CA3;
+ color: white;
+ border-radius: 2px;
+}
+div.dt-datetime table td.selectable button:hover {
+ background: #ff8000;
+ color: white;
+ border-radius: 2px;
+}
+div.dt-datetime table td.dt-datetime-week {
+ font-size: 0.7em;
+}
+div.dt-datetime table button {
+ width: 100%;
+ box-sizing: border-box;
+ border: none;
+ background: transparent;
+ font-size: inherit;
+ color: inherit;
+ text-align: center;
+ padding: 4px 0;
+ cursor: pointer;
+ margin: 0;
+}
+div.dt-datetime table button span {
+ display: inline-block;
+ min-width: 14px;
+ text-align: right;
+}
+div.dt-datetime table.weekNumber th {
+ width: 12.5%;
+}
+div.dt-datetime div.dt-datetime-calendar table {
+ margin-top: 0;
+}
+div.dt-datetime div.dt-datetime-label {
+ position: relative;
+ display: inline-block;
+ height: 30px;
+ padding: 5px 6px;
+ border: 1px solid transparent;
+ box-sizing: border-box;
+ cursor: pointer;
+}
+div.dt-datetime div.dt-datetime-label:hover {
+ border: 1px solid #ddd;
+ border-radius: 2px;
+ background-color: #f5f5f5;
+}
+div.dt-datetime div.dt-datetime-label select {
+ position: absolute;
+ top: 6px;
+ left: 0;
+ cursor: pointer;
+ opacity: 0;
+}
+div.dt-datetime.horizontal {
+ width: 550px;
+}
+div.dt-datetime.horizontal div.dt-datetime-date,
+div.dt-datetime.horizontal div.dt-datetime-time {
+ width: 48%;
+}
+div.dt-datetime.horizontal div.dt-datetime-time {
+ margin-left: 4%;
+}
+div.dt-datetime div.dt-datetime-date {
+ position: relative;
+ float: left;
+ width: 100%;
+}
+div.dt-datetime div.dt-datetime-time {
+ position: relative;
+ float: left;
+ width: 100%;
+ text-align: center;
+}
+div.dt-datetime div.dt-datetime-time > span {
+ vertical-align: middle;
+}
+div.dt-datetime div.dt-datetime-time th {
+ text-align: left;
+}
+div.dt-datetime div.dt-datetime-time div.dt-datetime-timeblock {
+ display: inline-block;
+ vertical-align: middle;
+}
+div.dt-datetime div.dt-datetime-iconLeft,
+div.dt-datetime div.dt-datetime-iconRight {
+ width: 30px;
+ height: 30px;
+ background-position: center;
+ background-repeat: no-repeat;
+ opacity: 0.3;
+ overflow: hidden;
+ box-sizing: border-box;
+ border: 1px solid transparent;
+}
+div.dt-datetime div.dt-datetime-iconLeft:hover,
+div.dt-datetime div.dt-datetime-iconRight:hover {
+ border: 1px solid #ccc;
+ border-radius: 2px;
+ background-color: #f0f0f0;
+ opacity: 0.6;
+}
+div.dt-datetime div.dt-datetime-iconLeft button,
+div.dt-datetime div.dt-datetime-iconRight button {
+ border: none;
+ background: transparent;
+ text-indent: 30px;
+ height: 100%;
+ width: 100%;
+ cursor: pointer;
+}
+div.dt-datetime div.dt-datetime-iconLeft {
+ position: absolute;
+ top: 5px;
+ left: 5px;
+}
+div.dt-datetime div.dt-datetime-iconLeft button {
+ position: relative;
+ z-index: 1;
+}
+div.dt-datetime div.dt-datetime-iconLeft:after {
+ position: absolute;
+ top: 7px;
+ left: 10px;
+ display: block;
+ content: "";
+ border-top: 7px solid transparent;
+ border-right: 7px solid black;
+ border-bottom: 7px solid transparent;
+}
+div.dt-datetime div.dt-datetime-iconRight {
+ position: absolute;
+ top: 5px;
+ right: 5px;
+}
+div.dt-datetime div.dt-datetime-iconRight button {
+ position: relative;
+ z-index: 1;
+}
+div.dt-datetime div.dt-datetime-iconRight:after {
+ position: absolute;
+ top: 7px;
+ left: 12px;
+ display: block;
+ content: "";
+ border-top: 7px solid transparent;
+ border-left: 7px solid black;
+ border-bottom: 7px solid transparent;
+}
+
+div.dt-datetime-error {
+ clear: both;
+ padding: 0 1em;
+ max-width: 240px;
+ font-size: 11px;
+ line-height: 1.25em;
+ text-align: center;
+ color: #b11f1f;
+}
+
+html.dark input.dt-datetime {
+ color-scheme: dark;
+}
+html.dark div.dt-datetime {
+ border: 1px solid #595b5e;
+ background-color: #212529;
+ box-shadow: 3px 4px 10px 1px rgba(0, 0, 0, 0.8);
+}
+html.dark div.dt-datetime table th {
+ color: #ccc;
+}
+html.dark div.dt-datetime table td {
+ color: #eee;
+}
+html.dark div.dt-datetime table td.selectable {
+ background: #373c41;
+}
+html.dark div.dt-datetime table td.selectable.disabled {
+ color: #aaa;
+ background: #171b1f;
+}
+html.dark div.dt-datetime table td.selectable.disabled button:hover {
+ color: #aaa;
+ background: #171b1f;
+}
+html.dark div.dt-datetime table td.selectable.now {
+ background: #4b5055;
+}
+html.dark div.dt-datetime table td.selectable.selected button {
+ background: #6ea8fe;
+ color: black;
+}
+html.dark div.dt-datetime table td.selectable button:hover {
+ background: #ff8000;
+ color: black;
+}
+html.dark div.dt-datetime div.dt-datetime-label:hover {
+ border: 1px solid transparent;
+ background-color: rgba(255, 255, 255, 0.1);
+}
+html.dark div.dt-datetime div.dt-datetime-iconLeft:hover,
+html.dark div.dt-datetime div.dt-datetime-iconRight:hover,
+html.dark div.dt-datetime div.dt-datetime-iconUp:hover,
+html.dark div.dt-datetime div.dt-datetime-iconDown:hover {
+ border: 1px solid transparent;
+ background-color: rgba(255, 255, 255, 0.1);
+}
+html.dark div.dt-datetime div.dt-datetime-iconLeft:after {
+ border-right-color: white;
+}
+html.dark div.dt-datetime div.dt-datetime-iconRight:after {
+ border-left-color: white;
+}
+html.dark div.dt-datetime select {
+ color-scheme: dark;
+}
+html.dark div.dt-datetime-error {
+ color: #b11f1f;
+}
+
+table.dataTable thead tr > .dtfc-fixed-start,
+table.dataTable thead tr > .dtfc-fixed-end,
+table.dataTable tfoot tr > .dtfc-fixed-start,
+table.dataTable tfoot tr > .dtfc-fixed-end {
+ top: 0;
+ bottom: 0;
+ z-index: 3;
+ background-color: white;
+}
+table.dataTable tbody tr > .dtfc-fixed-start,
+table.dataTable tbody tr > .dtfc-fixed-end {
+ z-index: 1;
+ background-color: white;
+}
+table.dataTable tr > .dtfc-fixed-left::after,
+table.dataTable tr > .dtfc-fixed-right::after {
+ position: absolute;
+ top: 0;
+ bottom: 0;
+ width: 10px;
+ transition: box-shadow 0.3s;
+ content: "";
+ pointer-events: none;
+}
+table.dataTable tr > .dtfc-fixed-left::after {
+ right: 0;
+ transform: translateX(100%);
+}
+table.dataTable tr > .dtfc-fixed-right::after {
+ left: 0;
+ transform: translateX(-80%);
+}
+table.dataTable.dtfc-scrolling-left tr > .dtfc-fixed-left::after {
+ box-shadow: inset 10px 0 8px -8px rgba(0, 0, 0, 0.2);
+}
+table.dataTable.dtfc-scrolling-right tr > .dtfc-fixed-right::after {
+ box-shadow: inset -10px 0 8px -8px rgba(0, 0, 0, 0.2);
+}
+table.dataTable.dtfc-scrolling-right tr > .dtfc-fixed-right + .dtfc-fixed-right::after {
+ box-shadow: none;
+}
+
+div.dt-scroll,
+div.dtfh-floatingparent {
+ position: relative;
+}
+div.dt-scroll div.dtfc-top-blocker,
+div.dt-scroll div.dtfc-bottom-blocker,
+div.dtfh-floatingparent div.dtfc-top-blocker,
+div.dtfh-floatingparent div.dtfc-bottom-blocker {
+ position: absolute;
+ background-color: white;
+}
+
+html.dark table.dataTable thead tr > .dtfc-fixed-start,
+html.dark table.dataTable thead tr > .dtfc-fixed-end,
+html.dark table.dataTable tfoot tr > .dtfc-fixed-start,
+html.dark table.dataTable tfoot tr > .dtfc-fixed-end {
+ background-color: var(--dt-html-background);
+}
+html.dark table.dataTable tbody tr > .dtfc-fixed-start,
+html.dark table.dataTable tbody tr > .dtfc-fixed-end {
+ background-color: var(--dt-html-background);
+}
+html.dark table.dataTable.dtfc-scrolling-left tbody > tr > .dtfc-fixed-left::after {
+ box-shadow: inset 10px 0 8px -8px rgba(0, 0, 0, 0.3);
+}
+html.dark table.dataTable.dtfc-scrolling-right tbody > tr > .dtfc-fixed-right::after {
+ box-shadow: inset -10px 0 8px -8px rgba(0, 0, 0, 0.3);
+}
+html.dark table.dataTable.dtfc-scrolling-right tbody > tr > .dtfc-fixed-right + .dtfc-fixed-right::after {
+ box-shadow: none;
+}
+html.dark div.dtfc-top-blocker,
+html.dark div.dtfc-bottom-blocker {
+ background-color: var(--dt-html-background);
+}
+
+div.dtfc-top-blocker,
+div.dtfc-top-blocker {
+ border-bottom: 0px solid #ddd !important;
+}
+
+table.dataTable {
+ border-collapse: separate;
+}
+table.dataTable.table-bordered {
+ border-left-width: 0;
+ border-right-width: 0;
+}
+table.dataTable.table-bordered th,
+table.dataTable.table-bordered td {
+ border-right-width: 0;
+ border-top-width: 0;
+}
+table.dataTable.table-bordered th:last-child,
+table.dataTable.table-bordered td:last-child {
+ border-right: 1px solid #dee2e6;
+}
+table.dataTable.table-bordered tr:last-child th,
+table.dataTable.table-bordered tr:last-child td {
+ border-bottom-width: 0;
+}
+
+table.dataTable thead tr > .dtfc-fixed-start,
+table.dataTable thead tr > .dtfc-fixed-end,
+table.dataTable tfoot tr > .dtfc-fixed-start,
+table.dataTable tfoot tr > .dtfc-fixed-end {
+ background-color: var(--bs-table-bg);
+}
+table.dataTable tbody tr > .dtfc-fixed-start,
+table.dataTable tbody tr > .dtfc-fixed-end {
+ background-color: var(--bs-table-bg);
+}
+
+div.dtfc-top-blocker,
+div.dtfc-bottom-blocker {
+ background-color: var(--bs-body-bg);
+}
+
+div.dt-scroll-body {
+ border-left-color: var(--bs-table-color) !important;
+}
+
+div.dt-scroll-headInner table.table-bordered tr th:first-child,
+div.dt-scroll-footInner table.table-bordered tr th:first-child {
+ border-left-color: var(--bs-border-color) !important;
+}
+
+
+table.dataTable.fixedHeader-floating,
+table.dataTable.fixedHeader-locked {
+ position: relative !important;
+ background-color: var(--bs-body-bg);
+ margin-top: 0 !important;
+ margin-bottom: 0 !important;
+}
+
+div.dtfh-floatingparent-foot table {
+ border-top-color: var(--bs-border-color);
+ border-top-width: var(--bs-border-width);
+ border-top-style: solid;
+}
+
+@media print {
+ table.fixedHeader-floating {
+ display: none;
+ }
+}
+
+
+table.dataTable tbody th.focus,
+table.dataTable tbody td.focus {
+ outline: 2px solid #0d6efd;
+ outline-offset: -2px;
+}
+table.dataTable tbody tr.selected th.focus,
+table.dataTable tbody tr.selected td.focus {
+ outline-color: #0143a3;
+}
+
+div.dtk-focus-alt table.dataTable tbody th.focus,
+div.dtk-focus-alt table.dataTable tbody td.focus {
+ outline: 2px solid #ff8b33;
+ outline-offset: -2px;
+}
+
+html.dark table.dataTable tbody th.focus,
+html.dark table.dataTable tbody td.focus {
+ outline-color: rgb(13, 110, 253);
+}
+html.dark table.dataTable tbody tr.selected th.focus,
+html.dark table.dataTable tbody tr.selected td.focus {
+ outline-color: #0143a3;
+}
+html.dark div.dtk-focus-alt table.dataTable tbody th.focus,
+html.dark div.dtk-focus-alt table.dataTable tbody td.focus {
+ outline-color: #ff8b33;
+}
+
+
+table.dataTable.dtr-inline.collapsed > tbody > tr > td.child,
+table.dataTable.dtr-inline.collapsed > tbody > tr > th.child,
+table.dataTable.dtr-inline.collapsed > tbody > tr > td.dataTables_empty {
+ cursor: default !important;
+}
+table.dataTable.dtr-inline.collapsed > tbody > tr > td.child:before,
+table.dataTable.dtr-inline.collapsed > tbody > tr > th.child:before,
+table.dataTable.dtr-inline.collapsed > tbody > tr > td.dataTables_empty:before {
+ display: none !important;
+}
+table.dataTable.dtr-inline.collapsed > tbody > tr > td.dtr-control,
+table.dataTable.dtr-inline.collapsed > tbody > tr > th.dtr-control {
+ cursor: pointer;
+}
+table.dataTable.dtr-inline.collapsed > tbody > tr > td.dtr-control:before,
+table.dataTable.dtr-inline.collapsed > tbody > tr > th.dtr-control:before {
+ margin-right: 0.5em;
+ display: inline-block;
+ box-sizing: border-box;
+ content: "";
+ border-top: 5px solid transparent;
+ border-left: 10px solid rgba(0, 0, 0, 0.5);
+ border-bottom: 5px solid transparent;
+ border-right: 0px solid transparent;
+}
+table.dataTable.dtr-inline.collapsed > tbody > tr > td.dtr-control.arrow-right::before,
+table.dataTable.dtr-inline.collapsed > tbody > tr > th.dtr-control.arrow-right::before {
+ border-top: 5px solid transparent;
+ border-left: 0px solid transparent;
+ border-bottom: 5px solid transparent;
+ border-right: 10px solid rgba(0, 0, 0, 0.5);
+}
+table.dataTable.dtr-inline.collapsed > tbody > tr.dtr-expanded > td.dtr-control:before,
+table.dataTable.dtr-inline.collapsed > tbody > tr.dtr-expanded > th.dtr-control:before {
+ border-top: 10px solid rgba(0, 0, 0, 0.5);
+ border-left: 5px solid transparent;
+ border-bottom: 0px solid transparent;
+ border-right: 5px solid transparent;
+}
+table.dataTable.dtr-inline.collapsed.compact > tbody > tr > td.dtr-control,
+table.dataTable.dtr-inline.collapsed.compact > tbody > tr > th.dtr-control {
+ padding-left: 0.333em;
+}
+table.dataTable.dtr-column > tbody > tr > td.dtr-control,
+table.dataTable.dtr-column > tbody > tr > th.dtr-control,
+table.dataTable.dtr-column > tbody > tr > td.control,
+table.dataTable.dtr-column > tbody > tr > th.control {
+ cursor: pointer;
+}
+table.dataTable.dtr-column > tbody > tr > td.dtr-control:before,
+table.dataTable.dtr-column > tbody > tr > th.dtr-control:before,
+table.dataTable.dtr-column > tbody > tr > td.control:before,
+table.dataTable.dtr-column > tbody > tr > th.control:before {
+ display: inline-block;
+ box-sizing: border-box;
+ content: "";
+ border-top: 5px solid transparent;
+ border-left: 10px solid rgba(0, 0, 0, 0.5);
+ border-bottom: 5px solid transparent;
+ border-right: 0px solid transparent;
+}
+table.dataTable.dtr-column > tbody > tr > td.dtr-control.arrow-right::before,
+table.dataTable.dtr-column > tbody > tr > th.dtr-control.arrow-right::before,
+table.dataTable.dtr-column > tbody > tr > td.control.arrow-right::before,
+table.dataTable.dtr-column > tbody > tr > th.control.arrow-right::before {
+ border-top: 5px solid transparent;
+ border-left: 0px solid transparent;
+ border-bottom: 5px solid transparent;
+ border-right: 10px solid rgba(0, 0, 0, 0.5);
+}
+table.dataTable.dtr-column > tbody > tr.dtr-expanded td.dtr-control:before,
+table.dataTable.dtr-column > tbody > tr.dtr-expanded th.dtr-control:before,
+table.dataTable.dtr-column > tbody > tr.dtr-expanded td.control:before,
+table.dataTable.dtr-column > tbody > tr.dtr-expanded th.control:before {
+ border-top: 10px solid rgba(0, 0, 0, 0.5);
+ border-left: 5px solid transparent;
+ border-bottom: 0px solid transparent;
+ border-right: 5px solid transparent;
+}
+table.dataTable > tbody > tr.child {
+ padding: 0.5em 1em;
+}
+table.dataTable > tbody > tr.child:hover {
+ background: transparent !important;
+}
+table.dataTable > tbody > tr.child ul.dtr-details {
+ display: inline-block;
+ list-style-type: none;
+ margin: 0;
+ padding: 0;
+}
+table.dataTable > tbody > tr.child ul.dtr-details > li {
+ border-bottom: 1px solid #efefef;
+ padding: 0.5em 0;
+}
+table.dataTable > tbody > tr.child ul.dtr-details > li:first-child {
+ padding-top: 0;
+}
+table.dataTable > tbody > tr.child ul.dtr-details > li:last-child {
+ padding-bottom: 0;
+ border-bottom: none;
+}
+table.dataTable > tbody > tr.child span.dtr-title {
+ display: inline-block;
+ min-width: 75px;
+ font-weight: bold;
+}
+
+div.dtr-modal {
+ position: fixed;
+ box-sizing: border-box;
+ top: 0;
+ left: 0;
+ height: 100%;
+ width: 100%;
+ z-index: 100;
+ padding: 10em 1em;
+}
+div.dtr-modal div.dtr-modal-display {
+ position: absolute;
+ top: 0;
+ left: 0;
+ bottom: 0;
+ right: 0;
+ width: 50%;
+ height: fit-content;
+ max-height: 75%;
+ overflow: auto;
+ margin: auto;
+ z-index: 102;
+ overflow: auto;
+ background-color: #f5f5f7;
+ border: 1px solid black;
+ border-radius: 0.5em;
+ box-shadow: 0 12px 30px rgba(0, 0, 0, 0.6);
+}
+div.dtr-modal div.dtr-modal-content {
+ position: relative;
+ padding: 2.5em;
+}
+div.dtr-modal div.dtr-modal-content h2 {
+ margin-top: 0;
+}
+div.dtr-modal div.dtr-modal-close {
+ position: absolute;
+ top: 6px;
+ right: 6px;
+ width: 22px;
+ height: 22px;
+ text-align: center;
+ border-radius: 3px;
+ cursor: pointer;
+ z-index: 12;
+}
+div.dtr-modal div.dtr-modal-background {
+ position: fixed;
+ top: 0;
+ left: 0;
+ right: 0;
+ bottom: 0;
+ z-index: 101;
+ background: rgba(0, 0, 0, 0.6);
+}
+
+@media screen and (max-width: 767px) {
+ div.dtr-modal div.dtr-modal-display {
+ width: 95%;
+ }
+}
+html.dark table.dataTable > tbody > tr > td.dtr-control:before,
+html[data-bs-theme=dark] table.dataTable > tbody > tr > td.dtr-control:before {
+ border-left-color: rgba(255, 255, 255, 0.5) !important;
+}
+html.dark table.dataTable > tbody > tr > td.dtr-control.arrow-right::before,
+html[data-bs-theme=dark] table.dataTable > tbody > tr > td.dtr-control.arrow-right::before {
+ border-right-color: rgba(255, 255, 255, 0.5) !important;
+}
+html.dark table.dataTable > tbody > tr.dtr-expanded > td.dtr-control:before,
+html.dark table.dataTable > tbody > tr.dtr-expanded > th.dtr-control:before,
+html[data-bs-theme=dark] table.dataTable > tbody > tr.dtr-expanded > td.dtr-control:before,
+html[data-bs-theme=dark] table.dataTable > tbody > tr.dtr-expanded > th.dtr-control:before {
+ border-top-color: rgba(255, 255, 255, 0.5) !important;
+ border-left-color: transparent !important;
+ border-right-color: transparent !important;
+}
+html.dark table.dataTable > tbody > tr.child ul.dtr-details > li,
+html[data-bs-theme=dark] table.dataTable > tbody > tr.child ul.dtr-details > li {
+ border-bottom-color: rgb(64, 67, 70);
+}
+html.dark div.dtr-modal div.dtr-modal-display,
+html[data-bs-theme=dark] div.dtr-modal div.dtr-modal-display {
+ background-color: rgb(33, 37, 41);
+ border: 1px solid rgba(255, 255, 255, 0.15);
+}
+
+div.dtr-bs-modal table.table tr:first-child td {
+ border-top: none;
+}
+
+table.dataTable.table-bordered th.dtr-control.dtr-hidden + *,
+table.dataTable.table-bordered td.dtr-control.dtr-hidden + * {
+ border-left-width: 1px;
+}
+
+
+table.dataTable tr.dtrg-group th {
+ background-color: rgba(0, 0, 0, 0.1);
+ text-align: left;
+}
+
+table.dataTable tr.dtrg-group.dtrg-level-0 th {
+ font-weight: bold;
+}
+
+table.dataTable tr.dtrg-group.dtrg-level-1 th,
+table.dataTable tr.dtrg-group.dtrg-level-2 th,
+table.dataTable tr.dtrg-group.dtrg-level-3 th,
+table.dataTable tr.dtrg-group.dtrg-level-4 th,
+table.dataTable tr.dtrg-group.dtrg-level-5 th {
+ background-color: rgba(0, 0, 0, 0.05);
+ padding-top: 0.25em;
+ padding-bottom: 0.25em;
+ padding-left: 2em;
+ font-size: 0.9em;
+}
+
+table.dataTable tr.dtrg-group.dtrg-level-2 th {
+ background-color: rgba(0, 0, 0, 0.01);
+ padding-left: 2.5em;
+}
+
+table.dataTable tr.dtrg-group.dtrg-level-3 th {
+ background-color: rgba(0, 0, 0, 0.01);
+ padding-left: 3em;
+}
+
+table.dataTable tr.dtrg-group.dtrg-level-4 th {
+ background-color: rgba(0, 0, 0, 0.01);
+ padding-left: 3.5em;
+}
+
+table.dataTable tr.dtrg-group.dtrg-level-5 th {
+ background-color: rgba(0, 0, 0, 0.01);
+ padding-left: 4em;
+}
+
+html.dark table.dataTable tr.dtrg-group th {
+ background-color: rgba(255, 255, 255, 0.1);
+}
+html.dark table.dataTable tr.dtrg-group.dtrg-level-1 th {
+ background-color: rgba(255, 255, 255, 0.05);
+}
+html.dark table.dataTable tr.dtrg-group.dtrg-level-2 th,
+html.dark table.dataTable tr.dtrg-group.dtrg-level-3 th,
+html.dark table.dataTable tr.dtrg-group.dtrg-level-4 th,
+html.dark table.dataTable tr.dtrg-group.dtrg-level-5 th {
+ background-color: rgba(255, 255, 255, 0.01);
+}
+
+table.dataTable.table-striped tr.dtrg-level-0 {
+ background-color: rgba(0, 0, 0, 0.1);
+}
+table.dataTable.table-striped tr.dtrg-level-1 {
+ background-color: rgba(0, 0, 0, 0.05);
+}
+table.dataTable.table-striped tr.dtrg-level-2,
+table.dataTable.table-striped tr.dtrg-level-3,
+table.dataTable.table-striped tr.dtrg-level-4,
+table.dataTable.table-striped tr.dtrg-level-5 {
+ background-color: rgba(0, 0, 0, 0.01);
+}
+table.dataTable.table-striped tr.dtrg-level-1 tr.dtrg-level-2 th,
+table.dataTable.table-striped tr.dtrg-level-3 th,
+table.dataTable.table-striped tr.dtrg-level-4 th,
+table.dataTable.table-striped tr.dtrg-level-5 th {
+ background-color: transparent;
+}
+
+
+div.dt-rowReorder-float-parent {
+ table-layout: fixed;
+ outline: 2px solid #0d6efd;
+ z-index: 2001;
+ position: absolute !important;
+ overflow: hidden;
+ border-radius: 3px;
+}
+div.dt-rowReorder-float-parent table.dt-rowReorder-float {
+ opacity: 0.9;
+ background-color: white;
+ margin: 0 !important;
+}
+
+div.dt-rowReorder-float-parent.drop-not-allowed {
+ cursor: not-allowed;
+}
+
+tr.dt-rowReorder-moving {
+ outline: 2px solid #888;
+ outline-offset: -2px;
+}
+
+body.dt-rowReorder-noOverflow {
+ overflow-x: hidden;
+}
+
+table.dataTable td.reorder {
+ text-align: center;
+ cursor: move;
+}
+
+html.dark div.dt-rowReorder-float-parent {
+ outline-color: rgb(110, 168, 254);
+}
+html.dark div.dt-rowReorder-float-parent table.dt-rowReorder-float {
+ background-color: var(--dt-html-background);
+}
+html.dark tr.dt-rowReorder-moving {
+ outline-color: #aaa;
+}
+
+html[data-bs-theme=dark] div.dt-rowReorder-float-parent {
+ outline-color: rgb(13, 110, 253);
+}
+
+
+div.dts {
+ display: block !important;
+}
+div.dts tbody th,
+div.dts tbody td {
+ white-space: nowrap;
+}
+div.dts div.dts_loading {
+ z-index: 1;
+}
+div.dts div.dts_label {
+ position: absolute;
+ right: 20px;
+ background: rgba(0, 0, 0, 0.8);
+ color: white;
+ box-shadow: 3px 3px 10px rgba(0, 0, 0, 0.5);
+ text-align: right;
+ border-radius: 3px;
+ padding: 0.4em;
+ z-index: 2;
+ display: none;
+}
+div.dts div.dt-scroll-body,
+div.dts div.dataTables_scrollBody {
+ background: repeating-linear-gradient(45deg, rgba(0, 0, 0, 0.025), rgba(0, 0, 0, 0.025) 10px, rgba(0, 0, 0, 0) 10px, rgba(0, 0, 0, 0) 20px);
+}
+div.dts div.dt-scroll-body table,
+div.dts div.dataTables_scrollBody table {
+ background-color: white;
+ z-index: 2;
+}
+div.dts div.dt-length,
+div.dts div.dt-paging,
+div.dts div.dataTables_paginate,
+div.dts div.dataTables_length {
+ display: none;
+}
+
+html.dark div.dts div.dts_label {
+ background: rgba(255, 255, 255, 0.8);
+ color: black;
+}
+html.dark div.dts div.dt-scroll-body,
+html.dark div.dts div.dataTables_scrollBody {
+ background: repeating-linear-gradient(45deg, rgba(255, 255, 255, 0.025), rgba(255, 255, 255, 0.025) 10px, rgba(255, 255, 255, 0) 10px, rgba(255, 255, 255, 0) 20px);
+}
+html.dark div.dts div.dt-scroll-body table,
+html.dark div.dts div.dataTables_scrollBody table {
+ background-color: var(--dt-html-background);
+ z-index: 2;
+}
+
+div.DTS div.dataTables_scrollBody table {
+ background-color: white;
+}
+
+html[data-bs-theme=dark] div.DTS div.dataTables_scrollBody table {
+ background-color: var(--bs-body-bg);
+}
+
+
+div.dt-button-collection {
+ overflow: visible !important;
+ z-index: 2002 !important;
+}
+div.dt-button-collection div.dtsb-searchBuilder {
+ box-sizing: border-box;
+ padding-left: 1em !important;
+ padding-right: 1em !important;
+}
+
+div.dt-button-collection.dtb-collection-closeable div.dtsb-titleRow {
+ padding-right: 40px;
+}
+
+.dtsb-greyscale {
+ border: 1px solid #cecece !important;
+}
+
+div.dtsb-logicContainer .dtsb-greyscale {
+ border: none !important;
+}
+
+div.dtsb-searchBuilder {
+ justify-content: space-evenly;
+ cursor: default;
+ margin-bottom: 1em;
+ text-align: left;
+ width: 100%;
+}
+div.dtsb-searchBuilder button.dtsb-button,
+div.dtsb-searchBuilder select {
+ font-size: 1em;
+}
+div.dtsb-searchBuilder div.dtsb-titleRow {
+ justify-content: space-evenly;
+ margin-bottom: 0.5em;
+}
+div.dtsb-searchBuilder div.dtsb-titleRow div.dtsb-title {
+ display: inline-block;
+ padding-top: 14px;
+}
+div.dtsb-searchBuilder div.dtsb-titleRow div.dtsb-title:empty {
+ display: inline;
+}
+div.dtsb-searchBuilder div.dtsb-titleRow button.dtsb-clearAll {
+ float: right;
+ margin-bottom: 0.8em;
+}
+div.dtsb-searchBuilder div.dtsb-vertical .dtsb-value, div.dtsb-searchBuilder div.dtsb-vertical .dtsb-data, div.dtsb-searchBuilder div.dtsb-vertical .dtsb-condition {
+ display: block;
+}
+div.dtsb-searchBuilder div.dtsb-group {
+ position: relative;
+ clear: both;
+ margin-bottom: 0.8em;
+}
+div.dtsb-searchBuilder div.dtsb-group button.dtsb-search {
+ float: right;
+}
+div.dtsb-searchBuilder div.dtsb-group button.dtsb-clearGroup {
+ margin: 2px;
+ text-align: center;
+ padding: 0;
+}
+div.dtsb-searchBuilder div.dtsb-group div.dtsb-logicContainer {
+ -webkit-transform: rotate(90deg);
+ -moz-transform: rotate(90deg);
+ -o-transform: rotate(90deg);
+ -ms-transform: rotate(90deg);
+ transform: rotate(90deg);
+ position: absolute;
+ margin-top: 0.8em;
+ margin-right: 0.8em;
+}
+div.dtsb-searchBuilder div.dtsb-group div.dtsb-criteria {
+ margin-bottom: 0.8em;
+ display: flex;
+ justify-content: start;
+ flex-flow: row wrap;
+}
+div.dtsb-searchBuilder div.dtsb-group div.dtsb-criteria select.dtsb-dropDown,
+div.dtsb-searchBuilder div.dtsb-group div.dtsb-criteria input.dtsb-input {
+ padding: 0.4em;
+ margin-right: 0.8em;
+ min-width: 5em;
+ max-width: 20em;
+ color: inherit;
+ font-size: 1em;
+}
+div.dtsb-searchBuilder div.dtsb-group div.dtsb-criteria select.dtsb-dropDown option.dtsb-notItalic,
+div.dtsb-searchBuilder div.dtsb-group div.dtsb-criteria input.dtsb-input option.dtsb-notItalic {
+ font-style: normal;
+}
+div.dtsb-searchBuilder div.dtsb-group div.dtsb-criteria select.dtsb-italic {
+ font-style: italic;
+}
+div.dtsb-searchBuilder div.dtsb-group div.dtsb-criteria div.dtsb-inputCont {
+ flex: 1;
+ white-space: nowrap;
+}
+div.dtsb-searchBuilder div.dtsb-group div.dtsb-criteria div.dtsb-inputCont span.dtsb-joiner {
+ margin-right: 0.8em;
+}
+div.dtsb-searchBuilder div.dtsb-group div.dtsb-criteria div.dtsb-inputCont input.dtsb-value {
+ width: 33%;
+}
+div.dtsb-searchBuilder div.dtsb-group div.dtsb-criteria div.dtsb-inputCont select,
+div.dtsb-searchBuilder div.dtsb-group div.dtsb-criteria div.dtsb-inputCont input {
+ height: 100%;
+ box-sizing: border-box;
+}
+div.dtsb-searchBuilder div.dtsb-group div.dtsb-criteria div.dtsb-buttonContainer {
+ margin-left: auto;
+ display: inline-block;
+}
+div.dtsb-searchBuilder div.dtsb-group div.dtsb-criteria div.dtsb-buttonContainer button.dtsb-delete, div.dtsb-searchBuilder div.dtsb-group div.dtsb-criteria div.dtsb-buttonContainer button.dtsb-right, div.dtsb-searchBuilder div.dtsb-group div.dtsb-criteria div.dtsb-buttonContainer button.dtsb-left {
+ margin-right: 0.8em;
+}
+div.dtsb-searchBuilder div.dtsb-group div.dtsb-criteria div.dtsb-buttonContainer button.dtsb-delete:last-child, div.dtsb-searchBuilder div.dtsb-group div.dtsb-criteria div.dtsb-buttonContainer button.dtsb-right:last-child, div.dtsb-searchBuilder div.dtsb-group div.dtsb-criteria div.dtsb-buttonContainer button.dtsb-left:last-child {
+ margin-right: 0;
+}
+@media screen and (max-width: 550px) {
+ div.dtsb-searchBuilder div.dtsb-group div.dtsb-criteria {
+ display: flex;
+ flex-flow: none;
+ flex-direction: column;
+ justify-content: start;
+ padding-right: calc(35px + 0.8em);
+ margin-bottom: 0px;
+ }
+ div.dtsb-searchBuilder div.dtsb-group div.dtsb-criteria:not(:first-child), div.dtsb-searchBuilder div.dtsb-group div.dtsb-criteria:not(:nth-child(2)), div.dtsb-searchBuilder div.dtsb-group div.dtsb-criteria:not(:last-child) {
+ padding-top: 0.8em;
+ }
+ div.dtsb-searchBuilder div.dtsb-group div.dtsb-criteria:first-child, div.dtsb-searchBuilder div.dtsb-group div.dtsb-criteria:nth-child(2), div.dtsb-searchBuilder div.dtsb-group div.dtsb-criteria:last-child {
+ padding-top: 0em;
+ }
+ div.dtsb-searchBuilder div.dtsb-group div.dtsb-criteria select.dtsb-dropDown,
+ div.dtsb-searchBuilder div.dtsb-group div.dtsb-criteria input.dtsb-input {
+ max-width: none;
+ width: 100%;
+ margin-bottom: 0.8em;
+ margin-right: 0.8em;
+ }
+ div.dtsb-searchBuilder div.dtsb-group div.dtsb-criteria div.dtsb-inputCont {
+ margin-right: 0.8em;
+ }
+ div.dtsb-searchBuilder div.dtsb-group div.dtsb-criteria div.dtsb-buttonContainer {
+ position: absolute;
+ width: 35px;
+ display: flex;
+ flex-wrap: wrap-reverse;
+ right: 0;
+ }
+ div.dtsb-searchBuilder div.dtsb-group div.dtsb-criteria div.dtsb-buttonContainer button {
+ margin-right: 0px !important;
+ }
+}
+
+div.dtsb-searchBuilder div.dtsb-titleRow {
+ height: 40px;
+}
+div.dtsb-searchBuilder div.dtsb-titleRow div.dtsb-title {
+ padding-top: 10px;
+}
+div.dtsb-searchBuilder div.dtsb-group button.dtsb-clearGroup {
+ margin-right: 8px;
+}
+div.dtsb-searchBuilder div.dtsb-group div.dtsb-criteria .form-select {
+ width: auto;
+ display: inline-block;
+ padding-right: 30px !important;
+}
+div.dtsb-searchBuilder div.dtsb-group div.dtsb-criteria select.dtsb-condition {
+ border-color: #28a745;
+}
+div.dtsb-searchBuilder div.dtsb-group div.dtsb-criteria select.dtsb-data {
+ border-color: #dc3545;
+}
+div.dtsb-searchBuilder div.dtsb-group div.dtsb-criteria select.dtsb-value, div.dtsb-searchBuilder div.dtsb-group div.dtsb-criteria input.dtsb-value {
+ border-color: #007bff;
+}
+div.dtsb-searchBuilder div.dtsb-group div.dtsb-criteria .form-control {
+ display: inline-block;
+ font-size: 1em;
+}
+div.dtsb-searchBuilder div.dtsb-group div.dtsb-logicContainer {
+ border-radius: 4px;
+ display: flex;
+ flex-direction: row;
+ flex-wrap: wrap;
+ justify-content: flex-start;
+ align-content: flex-start;
+ align-items: flex-start;
+ margin-top: 10px;
+ overflow: hidden;
+}
+div.dtsb-searchBuilder div.dtsb-group div.dtsb-logicContainer button.dtsb-logic {
+ border: none;
+ border-radius: 0px;
+ flex-grow: 1;
+ flex-shrink: 0;
+ flex-basis: 3em;
+ margin: 0px;
+ padding: 0.375rem 0.7rem;
+}
+div.dtsb-searchBuilder div.dtsb-group div.dtsb-logicContainer button.dtsb-clearGroup {
+ border: none;
+ border-radius: 0px;
+ width: 2em;
+ margin: 0px;
+}
+
+div.dt-button-collection div.dtsb-searchBuilder {
+ padding-left: 10px;
+ padding-right: 10px;
+}
+
+
+div.dtsp-topRow {
+ display: flex;
+ flex-direction: row;
+ flex-wrap: nowrap;
+ border: 2px solid rgba(0, 0, 0, 0);
+ border-radius: 3px;
+ justify-content: space-around;
+ align-content: flex-start;
+ align-items: flex-start;
+}
+div.dtsp-topRow input.dtsp-search {
+ text-overflow: ellipsis;
+ min-width: 50px;
+ flex-basis: 90px;
+ max-width: none;
+}
+div.dtsp-topRow input.dtsp-search::placeholder {
+ color: inherit;
+}
+div.dtsp-topRow div.dtsp-subRow1 {
+ display: flex;
+ flex-direction: row;
+ flex-wrap: nowrap;
+ flex: 1 1 auto;
+}
+div.dtsp-topRow div.dtsp-subRow1 div.dtsp-searchCont {
+ position: relative;
+ width: 100%;
+}
+div.dtsp-topRow div.dtsp-subRow1 input {
+ padding-right: 2em;
+ width: 100% !important;
+ box-sizing: border-box;
+ font-size: 1em;
+}
+div.dtsp-topRow div.dtsp-subRow1 input[disabled=disabled] {
+ background-color: transparent;
+ border: none;
+ cursor: initial;
+ box-shadow: none;
+ padding-bottom: 0;
+ padding-top: 0;
+ min-height: 1em;
+ height: fit-content;
+ box-sizing: content-box;
+}
+div.dtsp-topRow div.dtsp-subRow1 input[disabled=disabled]::placeholder {
+ color: initial;
+ opacity: 1;
+}
+div.dtsp-topRow div.dtsp-subRow1 button.dtsp-searchIcon {
+ position: absolute;
+ top: 0;
+ right: 0;
+ bottom: 0;
+}
+div.dtsp-topRow div.dtsp-subRow1 button.dtsp-searchIcon span {
+ background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA8AAAAPCAYAAAA71pVKAAABbmlDQ1BpY2MAACiRdZE7SwNBFIU/EyWikRRaiFhsoWKhEBREO42FTZAQFYza7G5eQhKX3QQJtoKNhWAh2vgq/AfaCrYKgqAIIhb+Al+NhPVOEkiQZJbZ+3FmzmXmDHjCGTPrtAYhm8vb0bmQthxb0Xzv+PHRxRSabjrWTCQSpun4eaRF1YdR1av5voajM55wTGhpF54wLTsvPC0c3sxbineFe8y0Hhc+ER6x5YDCt0o3KvymOFXhL8X2YnQWPKqnlqpjo47NtJ0VHhYeyGYKZvU86ib+RG5pQWqfzH4coswRQsOgwDoZ8oxKzUlmjX3Bsm+eDfGY8rcoYosjRVq8I6IWpGtCalL0hHwZiir3/3k6yfGxSnd/CNpeXfdzEHz7UNpz3d9T1y2dgfcFrnM1/4bkNPkt+l5NGziGwDZc3tQ04wCudqD32dJtvSx5ZXqSSfi4gK4YdN9Dx2olq+o650+wuCVPdAeHRzAk+wNrfw8JaBFXEnV+AAAACXBIWXMAAA9hAAAPYQGoP6dpAAABMUlEQVQoU6XRr0vDQRjH8akoM4iIjqGoOIZ5oIjB5XWxajaYDGLSIhhNYjcPRDSJwbQNw+L+BNGgYYo/5pT5/shz8vDlBgMPXux7z3N3z+25VOofYyCyd4ZYCavI4gXPsRp9LqiDdrEMH+8wv8Vh8gBfWclFPOEUN3hAHjlMoRa7wTzBS5xgKLFglPkZLjDic6HyDsEMNvGR2Nxifoci3tEI+X770JU0XmPXIlax+LTPh83fFox1X6kxyzdjm9UcdXi9S+Vti6svfyNULhNR9TVsYNhW6Ff9KKCNR7/Zv6eeaQ+6+qcdpu9BqGlp1HFgud+FYdzzUcUExu0Q/cdzHGEFetIlXKPjK/sbqYoOftMiS+j9jzEJPd1Wt+5+kdR/9EM9ucIC5jCbyPc01Q32kfsBppYz3hYFcCwAAAAASUVORK5CYII=") !important;
+ background-repeat: no-repeat;
+ background-position: center;
+ background-size: 12px;
+}
+div.dtsp-topRow div.dtsp-subRow2 {
+ white-space: nowrap;
+ flex: 0 0 auto;
+}
+div.dtsp-topRow button > span {
+ display: inline-block;
+ height: 100%;
+ width: 100%;
+}
+div.dtsp-topRow button.dtsp-nameButton span {
+ background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACMAAAAjCAYAAAAe2bNZAAABcGlDQ1BpY2MAACiRdZHNSwJBGMYftTDS8FCHkA57sOigIAXRMQzyYh3UIKvL7rirwe66zK6IdA26dBA6RF36OvQf1DXoWhAERRAR9B/0dQnZ3nEFJXSG2ffHs/O8zDwD+DM6M+yBJGCYDs+mU9JaYV0KviNMM4QoEjKzreXcUh59x88jfKI+JESv/vt6jlBRtRngGyKeYxZ3iBeIMzXHErxHPMbKcpH4hDjO6YDEt0JXPH4TXPL4SzDPZxcBv+gplbpY6WJW5gbxNHHM0KusfR5xk7BqruaoRmlNwEYWaaQgQUEVW9DhIEHVpMx6+5It3woq5GH0tVAHJ0cJZfLGSa1SV5WqRrpKU0dd5P4/T1ubnfG6h1PA4Kvrfk4CwX2g2XDd31PXbZ4BgRfg2uz4K5TT/DfpjY4WOwYiO8DlTUdTDoCrXWD82ZK53JICtPyaBnxcACMFYPQeGN7wsmr/x/kTkN+mJ7oDDo+AKdof2fwDCBRoDkL8UccAAAAJcEhZcwAAD2EAAA9hAag/p2kAAAK2SURBVFgJ7ZY9j41BFICvryCExrJBQ6HyEYVEIREaUZDQIRoR2ViJKCioxV+gkVXYTVZEQiEUhG2EQnxUCh0FKolY4ut5XnM2cyfva3Pt5m7EPcmzZ2bemTNnzjkzd1utnvQi0IvAfxiBy5z5FoxO89kPY+8mbMjtzs47RXs5/WVpbAG6bWExt5PuIibvhVkwmC+ck3eK9ln6/fAddFojYzBVuYSBpcnIEvRaqOw2RcaN18FPuJH0JvRUxbT3wWf4ltiKPgfVidWlbGZgPozDFfgAC+EA/K2EI4cwcAJ+gPaeQ+VQU2SOMMGcPgPl/m/V2p50rrbRsRgt9Iv5h6xtpP22Bz7Ce1C+gFFxfKzOmShcU+Qmyh2w3w8rIJfddHTck66EukL/xPhj+JM8rHNmFys0Pg4v0up3aFNlwR9NYyodd3OL/C64zpsymcTFcf6ElM4YzjAWKYrJkaq8kE/yUYNP4BoYvS1QRo+hNtF5xfkTUjoTheukSFFMjlTFm6PjceOca/SMpKfeCR1L6Uzk/y2WIkVhNFJlJAZhP+hYns7b9D3IPuhY5mYrIv8OrQJvR5NYyNaW4jsU8pSGNySiVx4o5tXq3JkoXE/mg5R/M8dGJCJpKhaDcjBRdbI/Rm8g69c122om33BHmj2CHoV5qa9jUXBraJ+G1fAVjIBO1klc87ro1K4JZ/K35SWW3TwcyDd6TecqnAEd8cGq2+w84xvBm1n3vS0izKkkwh5XNC/GmFPqqAtPF89AOScKuemaNzoTV1SD5dtSbmLf1/RV+tC0WTgcj6R7HEtrVGWaqu/lYDZ/2pvxQ/kIyw/gFByHC9AHw910hv1aUUumyd8yy0QfhmEkfiNod0Xusct68J1qc8Tdux0Z97Q+hsDb+AYGYEbF/4Guw2Q/qDPqZG/zXgT+3Qj8AtKnfWhFwmuAAAAAAElFTkSuQmCC") !important;
+ background-repeat: no-repeat;
+ background-position: center;
+ background-size: 23px;
+ vertical-align: bottom;
+}
+div.dtsp-topRow button.dtsp-countButton span {
+ background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAABcGlDQ1BpY2MAACiRdZHNSwJBGMYftTDS8FCHkA57sOigIAXRMQzyYh3UIKvL7rirwe66zK6IdA26dBA6RF36OvQf1DXoWhAERRAR9B/0dQnZ3nEFJXSG2ffHs/O8zDwD+DM6M+yBJGCYDs+mU9JaYV0KviNMM4QoEjKzreXcUh59x88jfKI+JESv/vt6jlBRtRngGyKeYxZ3iBeIMzXHErxHPMbKcpH4hDjO6YDEt0JXPH4TXPL4SzDPZxcBv+gplbpY6WJW5gbxNHHM0KusfR5xk7BqruaoRmlNwEYWaaQgQUEVW9DhIEHVpMx6+5It3woq5GH0tVAHJ0cJZfLGSa1SV5WqRrpKU0dd5P4/T1ubnfG6h1PA4Kvrfk4CwX2g2XDd31PXbZ4BgRfg2uz4K5TT/DfpjY4WOwYiO8DlTUdTDoCrXWD82ZK53JICtPyaBnxcACMFYPQeGN7wsmr/x/kTkN+mJ7oDDo+AKdof2fwDCBRoDkL8UccAAAAJcEhZcwAAD2EAAA9hAag/p2kAAAG5SURBVEgN3VU9LwVBFF0fiYhofUSlEQkKhU7z/oBCQkIiGr9BgUbhVzy9BAnhFyjV/AYFiU5ICM7ZN+c5Zud5dm3lJmfmzrkz9+7cu3c3y/6jjOBSF8CxXS7FmTkbwqIJjDpJvTcmsJ4K3KPZUpyZsx0sxoB9J6mnAkyC7wGuuCFIipNtEcpcWExgXpOBc78vgj6N+QO4NVsjwdFM59tUIDxDrHMBOeIQ34C5ZDregXuAQm4YcI68nN9B3wr2PcwPAIPkN2EqtJH6b+QZm1ajjTx7BqwAr26Lb+C2Kvpbt0Mb2HAJ7NrGFGfmXO3DeA4UshDfQAVmH0gaUFg852TTTDvlxwBlCtxy9zXyBhQFaq0wMmIdRebrfgosA3zb2hKnqG0oqchp4QbuR8X0TjzABhbdOT8jnQ/atcgqpnfwOA7yqZyTU587ZkIGdesLTt2EkynOnbreMUUKMI/dA4B/QVOcO13CQh+5wWCgDwo/75u59odB/wjmfhbgvACcAOyZPHihMWAoIwxyCLgf1oxfgjzVbgBXSTzIN+f0pg6s5DkcesLMRpsBrgE2XO3CN64JFP7JtUeKHX4CKtRRXFZ+7dEAAAAASUVORK5CYII=") !important;
+ background-repeat: no-repeat;
+ background-position: center;
+ background-size: 18px;
+ vertical-align: bottom;
+}
+div.dtsp-topRow button.dtsp-collapseButton span.dtsp-caret {
+ position: relative;
+ top: 9px;
+ display: inline-block;
+}
+div.dtsp-topRow button.dtsp-collapseButton.dtsp-rotated {
+ transform: rotate(180deg);
+}
+
+div.dtsp-searchPane table thead th,
+div.dtsp-searchPane table thead td {
+ width: 100% !important;
+}
+
+div.dt-button-collection {
+ z-index: 2002;
+}
+
+div.dt-button-collection.dtb-collection-closeable div.dtsp-titleRow {
+ padding-right: 25px;
+}
+
+div.dtsp-columns-1 {
+ max-width: 100%;
+ min-width: 100%;
+ margin: 0px !important;
+}
+
+div.dtsp-columns-2 {
+ max-width: 49%;
+ min-width: 49%;
+ margin: 0px !important;
+}
+
+div.dtsp-columns-3 {
+ max-width: 32%;
+ min-width: 32%;
+ margin: 0px !important;
+}
+
+div.dtsp-columns-4 {
+ max-width: 24%;
+ min-width: 24%;
+ margin: 0px !important;
+}
+
+div.dtsp-columns-5 {
+ max-width: 19%;
+ min-width: 19%;
+ margin: 0px !important;
+}
+
+div.dtsp-columns-6 {
+ max-width: 16%;
+ min-width: 16%;
+ margin: 0px !important;
+}
+
+div.dtsp-columns-7 {
+ max-width: 14%;
+ min-width: 14%;
+ margin: 0px !important;
+}
+
+div.dtsp-columns-8 {
+ max-width: 12%;
+ min-width: 12%;
+ margin: 0px !important;
+}
+
+div.dtsp-columns-9 {
+ max-width: 10.5%;
+ min-width: 10.5%;
+ margin: 0px !important;
+}
+
+div.dtsp-narrow {
+ flex-direction: column !important;
+}
+div.dtsp-narrow div.dtsp-subRow1,
+div.dtsp-narrow div.dtsp-subRow2 {
+ width: 100%;
+}
+div.dtsp-narrow div.dtsp-subRow2 button {
+ margin: 0 !important;
+ width: 25% !important;
+}
+
+div.dt-button-collection div.dtsp-panesContainer {
+ padding-left: 1em;
+ padding-right: 1em;
+ margin-bottom: 0;
+}
+
+div.dtsp-panesContainer {
+ margin-bottom: 1em;
+}
+
+div.dtsp-searchPane div.dt-container,
+div.dtsp-searchPane div.dataTables_wrapper {
+ width: 100%;
+}
+div.dtsp-searchPane div.dt-container div.dataTables_layout_cell,
+div.dtsp-searchPane div.dataTables_wrapper div.dataTables_layout_cell {
+ padding: 0;
+}
+div.dtsp-searchPane div.dt-container div.dt-layout-row:not(.dt-layout-table),
+div.dtsp-searchPane div.dataTables_wrapper div.dt-layout-row:not(.dt-layout-table) {
+ margin: 0;
+}
+div.dtsp-searchPane div.dt-container div.dt-scroll-head,
+div.dtsp-searchPane div.dt-container div.dataTables_scrollHead,
+div.dtsp-searchPane div.dataTables_wrapper div.dt-scroll-head,
+div.dtsp-searchPane div.dataTables_wrapper div.dataTables_scrollHead {
+ display: none !important;
+}
+div.dtsp-searchPane div.dt-container div.dt-scroll-body,
+div.dtsp-searchPane div.dt-container div.dataTables_scrollBody,
+div.dtsp-searchPane div.dataTables_wrapper div.dt-scroll-body,
+div.dtsp-searchPane div.dataTables_wrapper div.dataTables_scrollBody {
+ background: white !important;
+ border: none;
+}
+div.dtsp-searchPane div.dt-container div.dt-scroll-body thead,
+div.dtsp-searchPane div.dt-container div.dataTables_scrollBody thead,
+div.dtsp-searchPane div.dataTables_wrapper div.dt-scroll-body thead,
+div.dtsp-searchPane div.dataTables_wrapper div.dataTables_scrollBody thead {
+ display: none;
+}
+div.dtsp-searchPane div.dt-container div.dt-scroll-body table tr > th,
+div.dtsp-searchPane div.dt-container div.dt-scroll-body table tr > td,
+div.dtsp-searchPane div.dt-container div.dataTables_scrollBody table tr > th,
+div.dtsp-searchPane div.dt-container div.dataTables_scrollBody table tr > td,
+div.dtsp-searchPane div.dataTables_wrapper div.dt-scroll-body table tr > th,
+div.dtsp-searchPane div.dataTables_wrapper div.dt-scroll-body table tr > td,
+div.dtsp-searchPane div.dataTables_wrapper div.dataTables_scrollBody table tr > th,
+div.dtsp-searchPane div.dataTables_wrapper div.dataTables_scrollBody table tr > td {
+ padding: 5px 10px;
+}
+div.dtsp-searchPane div.dt-container div.dt-scroll-body td.dtsp-nameColumn,
+div.dtsp-searchPane div.dt-container div.dataTables_scrollBody td.dtsp-nameColumn,
+div.dtsp-searchPane div.dataTables_wrapper div.dt-scroll-body td.dtsp-nameColumn,
+div.dtsp-searchPane div.dataTables_wrapper div.dataTables_scrollBody td.dtsp-nameColumn {
+ width: 100% !important;
+}
+div.dtsp-searchPane div.dt-container div.dt-scroll-body div.dtsp-nameCont,
+div.dtsp-searchPane div.dt-container div.dataTables_scrollBody div.dtsp-nameCont,
+div.dtsp-searchPane div.dataTables_wrapper div.dt-scroll-body div.dtsp-nameCont,
+div.dtsp-searchPane div.dataTables_wrapper div.dataTables_scrollBody div.dtsp-nameCont {
+ width: 100%;
+ display: flex;
+ flex-direction: row;
+ justify-content: flex-start;
+ align-content: flex-start;
+ align-items: flex-start;
+}
+div.dtsp-searchPane div.dt-container div.dt-scroll-body div.dtsp-nameCont span.dtsp-name,
+div.dtsp-searchPane div.dt-container div.dt-scroll-body div.dtsp-nameCont span.dtsp-pill,
+div.dtsp-searchPane div.dt-container div.dataTables_scrollBody div.dtsp-nameCont span.dtsp-name,
+div.dtsp-searchPane div.dt-container div.dataTables_scrollBody div.dtsp-nameCont span.dtsp-pill,
+div.dtsp-searchPane div.dataTables_wrapper div.dt-scroll-body div.dtsp-nameCont span.dtsp-name,
+div.dtsp-searchPane div.dataTables_wrapper div.dt-scroll-body div.dtsp-nameCont span.dtsp-pill,
+div.dtsp-searchPane div.dataTables_wrapper div.dataTables_scrollBody div.dtsp-nameCont span.dtsp-name,
+div.dtsp-searchPane div.dataTables_wrapper div.dataTables_scrollBody div.dtsp-nameCont span.dtsp-pill {
+ cursor: default;
+}
+div.dtsp-searchPane div.dt-container div.dt-scroll-body div.dtsp-nameCont span.dtsp-name,
+div.dtsp-searchPane div.dt-container div.dataTables_scrollBody div.dtsp-nameCont span.dtsp-name,
+div.dtsp-searchPane div.dataTables_wrapper div.dt-scroll-body div.dtsp-nameCont span.dtsp-name,
+div.dtsp-searchPane div.dataTables_wrapper div.dataTables_scrollBody div.dtsp-nameCont span.dtsp-name {
+ text-overflow: ellipsis;
+ overflow: hidden;
+ display: inline-block;
+ vertical-align: middle;
+ white-space: nowrap;
+ flex-grow: 1;
+ text-align: left;
+}
+div.dtsp-searchPane div.dt-container div.dt-scroll-body div.dtsp-nameCont span.dtsp-pill,
+div.dtsp-searchPane div.dt-container div.dataTables_scrollBody div.dtsp-nameCont span.dtsp-pill,
+div.dtsp-searchPane div.dataTables_wrapper div.dt-scroll-body div.dtsp-nameCont span.dtsp-pill,
+div.dtsp-searchPane div.dataTables_wrapper div.dataTables_scrollBody div.dtsp-nameCont span.dtsp-pill {
+ display: inline-block;
+ background-color: #cfcfcf;
+ text-align: center;
+ border-radius: 10px;
+ width: auto;
+ min-width: 30px;
+ color: black;
+ font-size: 0.9em;
+ padding: 0 4px;
+}
+div.dtsp-searchPane div.dt-container div.dt-scroll-body div.dtsp-nameCont span.dtsp-pill:empty,
+div.dtsp-searchPane div.dt-container div.dataTables_scrollBody div.dtsp-nameCont span.dtsp-pill:empty,
+div.dtsp-searchPane div.dataTables_wrapper div.dt-scroll-body div.dtsp-nameCont span.dtsp-pill:empty,
+div.dtsp-searchPane div.dataTables_wrapper div.dataTables_scrollBody div.dtsp-nameCont span.dtsp-pill:empty {
+ display: none;
+}
+
+div.dtsp-panesContainer {
+ clear: both;
+ padding-left: 0;
+ padding-right: 0;
+ text-align: center;
+}
+div.dtsp-panesContainer div.dtsp-searchPanes {
+ display: flex;
+ flex-direction: row;
+ flex-wrap: wrap;
+ justify-content: space-between;
+ align-content: flex-start;
+ align-items: stretch;
+ clear: both;
+ text-align: left;
+}
+div.dtsp-panesContainer div.dtsp-searchPanes div.dtsp-searchPane {
+ flex-grow: 1;
+ flex-shrink: 0;
+ font-size: 0.9em;
+ margin-top: 15px !important;
+}
+div.dtsp-panesContainer div.dtsp-searchPanes div.dtsp-searchPane div.dt-container,
+div.dtsp-panesContainer div.dtsp-searchPanes div.dtsp-searchPane div.dataTables_wrapper {
+ flex: 1;
+ box-sizing: border-box;
+}
+div.dtsp-panesContainer div.dtsp-searchPanes div.dtsp-searchPane div.dt-container div.dt-search,
+div.dtsp-panesContainer div.dtsp-searchPanes div.dtsp-searchPane div.dt-container div.dataTables_filter,
+div.dtsp-panesContainer div.dtsp-searchPanes div.dtsp-searchPane div.dataTables_wrapper div.dt-search,
+div.dtsp-panesContainer div.dtsp-searchPanes div.dtsp-searchPane div.dataTables_wrapper div.dataTables_filter {
+ display: none;
+}
+div.dtsp-panesContainer div.dtsp-title {
+ float: left;
+ padding: 10px 0;
+}
+div.dtsp-panesContainer button.dtsp-clearAll,
+div.dtsp-panesContainer button.dtsp-collapseAll,
+div.dtsp-panesContainer button.dtsp-showAll {
+ float: right;
+}
+
+div.dtsp-hidden {
+ display: none !important;
+}
+
+html.dark div.dtsp-topRow div.dtsp-subRow1 div.dtsp-searchCont input[disabled=disabled]::placeholder,
+html[data-bs-theme=dark] div.dtsp-topRow div.dtsp-subRow1 div.dtsp-searchCont input[disabled=disabled]::placeholder {
+ color: white;
+}
+
+div.dtsp-panesContainer button.btn-subtle {
+ background-color: #f8f9fa;
+ border: 1px solid #ced4da;
+}
+div.dtsp-panesContainer button.btn-subtle.disabled {
+ opacity: 0.5;
+}
+div.dtsp-panesContainer button.btn-subtle:hover {
+ background-color: #cbd3da;
+}
+div.dtsp-panesContainer button.dtsp-clearAll,
+div.dtsp-panesContainer button.dtsp-showAll {
+ margin-left: 3px;
+}
+div.dtsp-panesContainer div.dtsp-searchPane div.dtsp-topRow {
+ margin: 0.5em 0;
+}
+div.dtsp-panesContainer div.dtsp-searchPane div.dtsp-topRow div.dtsp-subRow2 {
+ margin-left: 0.5em;
+}
+div.dtsp-panesContainer div.dtsp-searchPane div.dtsp-topRow button {
+ width: 35px;
+ line-height: 20px;
+}
+div.dtsp-panesContainer div.dtsp-searchPane div.dtsp-topRow button.dtsp-searchIcon, div.dtsp-panesContainer div.dtsp-searchPane div.dtsp-topRow button.dtsp-nameButton, div.dtsp-panesContainer div.dtsp-searchPane div.dtsp-topRow button.dtsp-countButton {
+ padding: 0;
+}
+div.dtsp-panesContainer div.dtsp-searchPane div.dtsp-topRow div.dtsp-subRow1 button {
+ border-right: none;
+ margin-right: 1px;
+}
+div.dtsp-panesContainer div.dtsp-searchPane div.dtsp-topRow div.dtsp-subRow1 input {
+ padding-right: 3em;
+}
+div.dtsp-panesContainer div.dtsp-searchPane div.dtsp-topRow span.dtsp-caret {
+ top: 3px;
+}
+div.dtsp-panesContainer div.dtsp-searchPane div.dtsp-topRow button.dtsp-rotated {
+ transform: none;
+}
+div.dtsp-panesContainer div.dtsp-searchPane div.dtsp-topRow button.dtsp-rotated span {
+ transform: rotate(180deg);
+ top: -2px;
+}
+div.dtsp-panesContainer div.dtsp-searchPane div.dtsp-topRow.dtsp-bordered:hover button.disabled {
+ cursor: pointer !important;
+ pointer-events: none;
+}
+div.dtsp-panesContainer div.dtsp-searchPane div.dtsp-topRow.dtsp-bordered:hover input.dtsp-paneInputButton {
+ pointer-events: none;
+}
+div.dtsp-panesContainer div.dtsp-searchPane div.dt-container,
+div.dtsp-panesContainer div.dtsp-searchPane div.dataTables_wrapper {
+ border: 2px #f0f0f0 solid;
+ border-radius: 4px;
+}
+div.dtsp-panesContainer div.dtsp-searchPane div.dt-container:hover,
+div.dtsp-panesContainer div.dtsp-searchPane div.dataTables_wrapper:hover {
+ border: 2px solid #cfcfcf !important;
+}
+div.dtsp-panesContainer div.dtsp-searchPane div.dt-container div.dtsp-nameCont span.badge,
+div.dtsp-panesContainer div.dtsp-searchPane div.dataTables_wrapper div.dtsp-nameCont span.badge {
+ min-width: 30px;
+ line-height: 1.25em;
+ margin-top: 3.5px;
+}
+div.dtsp-panesContainer div.dtsp-searchPane div.dt-container > div.row.mt-2,
+div.dtsp-panesContainer div.dtsp-searchPane div.dataTables_wrapper > div.row.mt-2 {
+ margin: 0 !important;
+}
+div.dtsp-panesContainer div.dtsp-searchPane div.dt-container > div.row.mt-2 > *,
+div.dtsp-panesContainer div.dtsp-searchPane div.dataTables_wrapper > div.row.mt-2 > * {
+ padding: 0;
+}
+div.dtsp-panesContainer button.disabled {
+ cursor: not-allowed;
+}
+
+div.dt-button-collection div.dtsp-panesContainer {
+ padding: 9px 1rem;
+}
+
+html[data-bs-theme=dark] div.dtsp-topRow button.dtsp-searchIcon span {
+ filter: invert(1);
+}
+html[data-bs-theme=dark] div.dtsp-topRow button.dtsp-nameButton span {
+ filter: invert(1);
+}
+html[data-bs-theme=dark] div.dtsp-topRow button.dtsp-countButton span {
+ filter: invert(1);
+}
+html[data-bs-theme=dark] div.dtsp-topRow input.dtsp-paneInputButton,
+html[data-bs-theme=dark] div.dtsp-topRow button {
+ color: inherit;
+}
+html[data-bs-theme=dark] div.dtsp-panesContainer button.btn-subtle {
+ background-color: rgb(33, 37, 41);
+ border: var(--bs-border-width) solid var(--bs-border-color);
+}
+html[data-bs-theme=dark] div.dtsp-panesContainer button.btn-subtle:hover {
+ background-color: rgba(255, 255, 255, 0.1);
+}
+html[data-bs-theme=dark] div.dtsp-panesContainer button.dtsp-clearAll,
+html[data-bs-theme=dark] div.dtsp-panesContainer button.dtsp-collapseAll,
+html[data-bs-theme=dark] div.dtsp-panesContainer button.dtsp-showAll {
+ color: inherit;
+}
+html[data-bs-theme=dark] div.dtsp-panesContainer button.dtsp-clearAll:hover,
+html[data-bs-theme=dark] div.dtsp-panesContainer button.dtsp-collapseAll:hover,
+html[data-bs-theme=dark] div.dtsp-panesContainer button.dtsp-showAll:hover {
+ background-color: rgb(64, 69, 73);
+}
+html[data-bs-theme=dark] div.dtsp-panesContainer button.dtsp-disabledButton {
+ color: rgb(124, 124, 124);
+}
+html[data-bs-theme=dark] div.dtsp-panesContainer div.dtsp-searchPane div.dt-container,
+html[data-bs-theme=dark] div.dtsp-panesContainer div.dtsp-searchPane div.dataTables_wrapper {
+ border: 1px solid rgba(255, 255, 255, 0.2);
+}
+html[data-bs-theme=dark] div.dtsp-panesContainer div.dtsp-searchPane div.dt-container:hover,
+html[data-bs-theme=dark] div.dtsp-panesContainer div.dtsp-searchPane div.dataTables_wrapper:hover {
+ border: 1px solid rgba(255, 255, 255, 0.3) !important;
+}
+html[data-bs-theme=dark] div.dtsp-panesContainer div.dtsp-searchPane div.dt-container div.dt-scroll-body,
+html[data-bs-theme=dark] div.dtsp-panesContainer div.dtsp-searchPane div.dt-container div.dataTables_scrollBody,
+html[data-bs-theme=dark] div.dtsp-panesContainer div.dtsp-searchPane div.dataTables_wrapper div.dt-scroll-body,
+html[data-bs-theme=dark] div.dtsp-panesContainer div.dtsp-searchPane div.dataTables_wrapper div.dataTables_scrollBody {
+ background: var(--bs-table-bg) !important;
+}
+html[data-bs-theme=dark] div.dtsp-panesContainer div.dtsp-searchPane div.dt-container div.dt-scroll-body div.dtsp-nameCont span.dtsp-pill,
+html[data-bs-theme=dark] div.dtsp-panesContainer div.dtsp-searchPane div.dt-container div.dataTables_scrollBody div.dtsp-nameCont span.dtsp-pill,
+html[data-bs-theme=dark] div.dtsp-panesContainer div.dtsp-searchPane div.dataTables_wrapper div.dt-scroll-body div.dtsp-nameCont span.dtsp-pill,
+html[data-bs-theme=dark] div.dtsp-panesContainer div.dtsp-searchPane div.dataTables_wrapper div.dataTables_scrollBody div.dtsp-nameCont span.dtsp-pill {
+ background-color: rgb(33, 37, 41);
+ color: inherit;
+}
+
+
+table.dataTable > tbody > tr > .selected {
+ background-color: rgb(13, 110, 253);
+ color: white;
+}
+table.dataTable > tbody > tr > .dt-select {
+ text-align: center;
+ vertical-align: middle;
+}
+table.dataTable > thead > tr > .dt-select {
+ text-align: center;
+}
+table.dataTable input.dt-select-checkbox {
+ appearance: none;
+ position: relative;
+ display: inline-block;
+ width: 12px;
+ height: 12px;
+ border: 1px solid;
+ border-radius: 3px;
+ vertical-align: middle;
+ margin-top: 1px;
+ color: inherit;
+ font-size: 20px;
+ line-height: 1em;
+}
+table.dataTable input.dt-select-checkbox:checked:after {
+ display: block;
+ content: "✓";
+ margin-top: -8px;
+}
+table.dataTable input.dt-select-checkbox:indeterminate:after {
+ display: block;
+ position: absolute;
+ content: " ";
+ top: 3px;
+ left: 3px;
+ height: 4px;
+ width: 4px;
+ background-color: black;
+ border-radius: 2px;
+}
+table.dataTable > tbody > tr.selected input.dt-select-checkbox:checked {
+ border: 1px solid;
+}
+table.dataTable > tbody > tr > td.select-checkbox,
+table.dataTable > tbody > tr > th.select-checkbox {
+ position: relative;
+}
+table.dataTable > tbody > tr > td.select-checkbox:before,
+table.dataTable > tbody > tr > th.select-checkbox:before {
+ display: block;
+ position: absolute;
+ top: 50%;
+ left: 50%;
+ width: 12px;
+ height: 12px;
+ box-sizing: border-box;
+ content: " ";
+ margin-top: -6px;
+ margin-left: -6px;
+ border: 1px solid;
+ border-radius: 3px;
+}
+table.dataTable > tbody > tr.selected > td.select-checkbox:before,
+table.dataTable > tbody > tr.selected > th.select-checkbox:before {
+ border: 1px solid;
+ content: "✓";
+ font-size: 20px;
+ line-height: 4px;
+ text-align: center;
+}
+table.dataTable.compact > tbody > tr > td.select-checkbox:before,
+table.dataTable.compact > tbody > tr > th.select-checkbox:before {
+ margin-top: -12px;
+}
+table.dataTable.compact > tbody > tr.selected > td.select-checkbox:after,
+table.dataTable.compact > tbody > tr.selected > th.select-checkbox:after {
+ margin-top: -16px;
+}
+
+div.dt-container span.select-info,
+div.dt-container span.select-item {
+ margin-left: 0.5em;
+}
+
+html.dark table.dataTable input.dt-select-checkbox:indeterminate:after,
+html[data-bs-theme=dark] table.dataTable input.dt-select-checkbox:indeterminate:after {
+ background-color: white;
+}
+
+@media screen and (max-width: 640px) {
+ div.dt-container span.select-info,
+ div.dt-container span.select-item {
+ margin-left: 0;
+ display: block;
+ }
+}
+table.dataTable.table-sm tbody td.select-checkbox::before {
+ margin-top: -9px;
+}
+
+
+div.dtsr-confirmation,
+div.dtsr-creation {
+ position: fixed;
+ top: 20%;
+ left: 50%;
+ width: 500px;
+ margin-left: -250px;
+ background-color: white;
+ border-radius: 0.75em;
+ box-shadow: 0 12px 30px rgba(0, 0, 0, 0.6);
+ z-index: 2003;
+ box-sizing: border-box;
+ padding: 2em;
+}
+div.dtsr-confirmation div.dtsr-creation-text,
+div.dtsr-confirmation div.dtsr-confirmation-title-row,
+div.dtsr-creation div.dtsr-creation-text,
+div.dtsr-creation div.dtsr-confirmation-title-row {
+ text-align: left;
+}
+div.dtsr-confirmation div.dtsr-creation-text h2,
+div.dtsr-confirmation div.dtsr-confirmation-title-row h2,
+div.dtsr-creation div.dtsr-creation-text h2,
+div.dtsr-creation div.dtsr-confirmation-title-row h2 {
+ padding-left: 0;
+ border-bottom: 0px;
+ margin-top: 0px;
+ padding-top: 0px;
+ margin-bottom: 1rem;
+}
+div.dtsr-confirmation div.dtsr-confirmation-text,
+div.dtsr-creation div.dtsr-confirmation-text {
+ text-align: center;
+}
+div.dtsr-confirmation div.dtsr-modal-foot,
+div.dtsr-confirmation div.dtsr-confirmation-buttons,
+div.dtsr-creation div.dtsr-modal-foot,
+div.dtsr-creation div.dtsr-confirmation-buttons {
+ text-align: right;
+ margin-top: 1em;
+}
+div.dtsr-confirmation div.dtsr-modal-foot button,
+div.dtsr-confirmation div.dtsr-confirmation-buttons button,
+div.dtsr-creation div.dtsr-modal-foot button,
+div.dtsr-creation div.dtsr-confirmation-buttons button {
+ margin: 0px;
+}
+div.dtsr-confirmation div.dtsr-creation-text,
+div.dtsr-creation div.dtsr-creation-text {
+ text-align: left;
+ padding: 0px;
+ border: none;
+}
+div.dtsr-confirmation div.dtsr-creation-text span,
+div.dtsr-creation div.dtsr-creation-text span {
+ font-size: 20px;
+}
+div.dtsr-confirmation div.dtsr-creation-form div.dtsr-left, div.dtsr-confirmation div.dtsr-creation-form div.dtsr-right,
+div.dtsr-creation div.dtsr-creation-form div.dtsr-left,
+div.dtsr-creation div.dtsr-creation-form div.dtsr-right {
+ display: inline-block;
+ width: 50%;
+}
+div.dtsr-confirmation div.dtsr-creation-form div.dtsr-left,
+div.dtsr-creation div.dtsr-creation-form div.dtsr-left {
+ text-align: right;
+}
+div.dtsr-confirmation div.dtsr-creation-form div.dtsr-right, div.dtsr-confirmation div.dtsr-creation-form div.dtsr-name-row,
+div.dtsr-creation div.dtsr-creation-form div.dtsr-right,
+div.dtsr-creation div.dtsr-creation-form div.dtsr-name-row {
+ text-align: left;
+}
+div.dtsr-confirmation div.dtsr-creation-form div.dtsr-form-row,
+div.dtsr-creation div.dtsr-creation-form div.dtsr-form-row {
+ display: flex;
+ margin: 0.5em 0;
+}
+div.dtsr-confirmation div.dtsr-creation-form div.dtsr-form-row:first-child,
+div.dtsr-creation div.dtsr-creation-form div.dtsr-form-row:first-child {
+ margin-top: 1em;
+ margin-bottom: 1em;
+}
+div.dtsr-confirmation div.dtsr-creation-form div.dtsr-form-row:last-child,
+div.dtsr-creation div.dtsr-creation-form div.dtsr-form-row:last-child {
+ margin-bottom: 0;
+}
+div.dtsr-confirmation div.dtsr-creation-form div.dtsr-form-row label,
+div.dtsr-creation div.dtsr-creation-form div.dtsr-form-row label {
+ width: 25%;
+ padding-right: 1em;
+ text-align: right;
+ padding-top: 2px;
+}
+div.dtsr-confirmation div.dtsr-creation-form div.dtsr-form-row div.dtsr-input,
+div.dtsr-creation div.dtsr-creation-form div.dtsr-form-row div.dtsr-input {
+ width: 75%;
+}
+div.dtsr-confirmation div.dtsr-creation-form div.dtsr-form-row div.dtsr-input div.dtsr-check-label,
+div.dtsr-creation div.dtsr-creation-form div.dtsr-form-row div.dtsr-input div.dtsr-check-label {
+ margin-bottom: 0.5em;
+}
+div.dtsr-confirmation div.dtsr-creation-form div.dtsr-form-row div.dtsr-input div.dtsr-check-label input,
+div.dtsr-creation div.dtsr-creation-form div.dtsr-form-row div.dtsr-input div.dtsr-check-label input {
+ margin-right: 0.5em;
+}
+div.dtsr-confirmation div.dtsr-confirmation-text,
+div.dtsr-creation div.dtsr-confirmation-text {
+ text-align: left;
+}
+div.dtsr-confirmation div.dtsr-confirmation-text label.dtsr-name-label,
+div.dtsr-creation div.dtsr-confirmation-text label.dtsr-name-label {
+ width: auto;
+ display: inline-block;
+ text-align: right;
+ padding-right: 15px;
+}
+div.dtsr-confirmation div.dtsr-confirmation-text input.dtsr-name-input,
+div.dtsr-creation div.dtsr-confirmation-text input.dtsr-name-input {
+ width: 66.6%;
+ display: inline-block;
+}
+div.dtsr-confirmation div.dtsr-modal-foot,
+div.dtsr-creation div.dtsr-modal-foot {
+ text-align: right;
+ padding-top: 10px;
+}
+div.dtsr-confirmation span.dtsr-modal-error,
+div.dtsr-creation span.dtsr-modal-error {
+ color: red;
+ font-size: 0.9em;
+}
+
+div.dtsr-creation {
+ top: 10%;
+}
+
+div.dtsr-check-row {
+ padding-top: 0px;
+}
+
+div.dtsr-popover-close {
+ position: absolute;
+ top: 10px;
+ right: 10px;
+ width: 22px;
+ height: 22px;
+ text-align: center;
+ border-radius: 3px;
+ cursor: pointer;
+ z-index: 12;
+}
+
+div.dtsr-background {
+ z-index: 2002;
+ position: fixed;
+ top: 0;
+ left: 0;
+ width: 100%;
+ height: 100%;
+ background: rgba(0, 0, 0, 0.7);
+ background: radial-gradient(ellipse farthest-corner at center, rgba(0, 0, 0, 0.3) 0%, rgba(0, 0, 0, 0.7) 100%);
+}
+
+div.dt-button-collection h3 {
+ text-align: center;
+ margin-top: 4px;
+ margin-bottom: 8px;
+ font-size: 1.5em;
+ white-space: nowrap;
+ overflow: hidden;
+ text-overflow: ellipsis;
+}
+div.dt-button-collection span.dtsr-emptyStates {
+ border-radius: 5px;
+ display: inline-block;
+ line-height: 1.6em;
+ white-space: nowrap;
+ text-align: center;
+ vertical-align: middle;
+ width: 100%;
+ padding-bottom: 7px;
+ padding-top: 3px;
+}
+
+html.dark div.dtsr-confirmation,
+html.dark div.dtsr-creation,
+html[data-bs-theme=dark] div.dtsr-confirmation,
+html[data-bs-theme=dark] div.dtsr-creation {
+ background-color: rgb(33, 37, 41);
+ border: 1px solid rgba(255, 255, 255, 0.15);
+}
+html.dark div.dtsr-confirmation button,
+html.dark div.dtsr-creation button,
+html[data-bs-theme=dark] div.dtsr-confirmation button,
+html[data-bs-theme=dark] div.dtsr-creation button {
+ color: inherit;
+ border: 1px solid rgba(255, 255, 255, 0.175);
+ background-color: rgb(47, 52, 56);
+}
+html.dark div.dtsr-confirmation button:hover,
+html.dark div.dtsr-creation button:hover,
+html[data-bs-theme=dark] div.dtsr-confirmation button:hover,
+html[data-bs-theme=dark] div.dtsr-creation button:hover {
+ background-color: rgb(64, 69, 73);
+}
+
+span.dtsr-check-label {
+ padding-left: 3px;
+}
+
+input.dtsr-input {
+ margin-left: 3px;
+ display: inline-block;
+ width: auto;
+}
+
+div.dtsr-creation-form div.dtsr-check-row {
+ height: 25px;
+}
+div.dtsr-creation-form div.dtsr-form-row label.dtsr-name-label {
+ width: 33.3%;
+ display: inline-block;
+ text-align: left !important;
+ padding-right: 15px;
+ padding-left: 15px;
+}
+div.dtsr-creation-form div.dtsr-form-row input.dtsr-name-input {
+ width: 66.6%;
+ display: inline-block;
+}
+
+div.dtsr-confirmation-text {
+ margin-top: 1.5em;
+}
+
+
diff --git a/apps/nps/0.29.21/web/static/css/fontawesome.min.css b/apps/nps/0.29.21/web/static/css/fontawesome.min.css
new file mode 100644
index 000000000..d51b6a7f0
--- /dev/null
+++ b/apps/nps/0.29.21/web/static/css/fontawesome.min.css
@@ -0,0 +1,5 @@
+/*!
+ * Font Awesome Free 5.11.2 by @fontawesome - https://fontawesome.com
+ * License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License)
+ */
+.fa,.fab,.fad,.fal,.far,.fas{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;display:inline-block;font-style:normal;font-variant:normal;text-rendering:auto;line-height:1}.fa-lg{font-size:1.33333em;line-height:.75em;vertical-align:-.0667em}.fa-xs{font-size:.75em}.fa-sm{font-size:.875em}.fa-1x{font-size:1em}.fa-2x{font-size:2em}.fa-3x{font-size:3em}.fa-4x{font-size:4em}.fa-5x{font-size:5em}.fa-6x{font-size:6em}.fa-7x{font-size:7em}.fa-8x{font-size:8em}.fa-9x{font-size:9em}.fa-10x{font-size:10em}.fa-fw{text-align:center;width:1.25em}.fa-ul{list-style-type:none;margin-left:2.5em;padding-left:0}.fa-ul>li{position:relative}.fa-li{left:-2em;position:absolute;text-align:center;width:2em;line-height:inherit}.fa-border{border:.08em solid #eee;border-radius:.1em;padding:.2em .25em .15em}.fa-pull-left{float:left}.fa-pull-right{float:right}.fa.fa-pull-left,.fab.fa-pull-left,.fal.fa-pull-left,.far.fa-pull-left,.fas.fa-pull-left{margin-right:.3em}.fa.fa-pull-right,.fab.fa-pull-right,.fal.fa-pull-right,.far.fa-pull-right,.fas.fa-pull-right{margin-left:.3em}.fa-spin{-webkit-animation:fa-spin 2s linear infinite;animation:fa-spin 2s linear infinite}.fa-pulse{-webkit-animation:fa-spin 1s steps(8) infinite;animation:fa-spin 1s steps(8) infinite}@-webkit-keyframes fa-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}to{-webkit-transform:rotate(1turn);transform:rotate(1turn)}}@keyframes fa-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}to{-webkit-transform:rotate(1turn);transform:rotate(1turn)}}.fa-rotate-90{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=1)";-webkit-transform:rotate(90deg);transform:rotate(90deg)}.fa-rotate-180{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=2)";-webkit-transform:rotate(180deg);transform:rotate(180deg)}.fa-rotate-270{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=3)";-webkit-transform:rotate(270deg);transform:rotate(270deg)}.fa-flip-horizontal{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1)";-webkit-transform:scaleX(-1);transform:scaleX(-1)}.fa-flip-vertical{-webkit-transform:scaleY(-1);transform:scaleY(-1)}.fa-flip-both,.fa-flip-horizontal.fa-flip-vertical,.fa-flip-vertical{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1)"}.fa-flip-both,.fa-flip-horizontal.fa-flip-vertical{-webkit-transform:scale(-1);transform:scale(-1)}:root .fa-flip-both,:root .fa-flip-horizontal,:root .fa-flip-vertical,:root .fa-rotate-90,:root .fa-rotate-180,:root .fa-rotate-270{-webkit-filter:none;filter:none}.fa-stack{display:inline-block;height:2em;line-height:2em;position:relative;vertical-align:middle;width:2.5em}.fa-stack-1x,.fa-stack-2x{left:0;position:absolute;text-align:center;width:100%}.fa-stack-1x{line-height:inherit}.fa-stack-2x{font-size:2em}.fa-inverse{color:#fff}.fa-500px:before{content:"\f26e"}.fa-accessible-icon:before{content:"\f368"}.fa-accusoft:before{content:"\f369"}.fa-acquisitions-incorporated:before{content:"\f6af"}.fa-ad:before{content:"\f641"}.fa-address-book:before{content:"\f2b9"}.fa-address-card:before{content:"\f2bb"}.fa-adjust:before{content:"\f042"}.fa-adn:before{content:"\f170"}.fa-adobe:before{content:"\f778"}.fa-adversal:before{content:"\f36a"}.fa-affiliatetheme:before{content:"\f36b"}.fa-air-freshener:before{content:"\f5d0"}.fa-airbnb:before{content:"\f834"}.fa-algolia:before{content:"\f36c"}.fa-align-center:before{content:"\f037"}.fa-align-justify:before{content:"\f039"}.fa-align-left:before{content:"\f036"}.fa-align-right:before{content:"\f038"}.fa-alipay:before{content:"\f642"}.fa-allergies:before{content:"\f461"}.fa-amazon:before{content:"\f270"}.fa-amazon-pay:before{content:"\f42c"}.fa-ambulance:before{content:"\f0f9"}.fa-american-sign-language-interpreting:before{content:"\f2a3"}.fa-amilia:before{content:"\f36d"}.fa-anchor:before{content:"\f13d"}.fa-android:before{content:"\f17b"}.fa-angellist:before{content:"\f209"}.fa-angle-double-down:before{content:"\f103"}.fa-angle-double-left:before{content:"\f100"}.fa-angle-double-right:before{content:"\f101"}.fa-angle-double-up:before{content:"\f102"}.fa-angle-down:before{content:"\f107"}.fa-angle-left:before{content:"\f104"}.fa-angle-right:before{content:"\f105"}.fa-angle-up:before{content:"\f106"}.fa-angry:before{content:"\f556"}.fa-angrycreative:before{content:"\f36e"}.fa-angular:before{content:"\f420"}.fa-ankh:before{content:"\f644"}.fa-app-store:before{content:"\f36f"}.fa-app-store-ios:before{content:"\f370"}.fa-apper:before{content:"\f371"}.fa-apple:before{content:"\f179"}.fa-apple-alt:before{content:"\f5d1"}.fa-apple-pay:before{content:"\f415"}.fa-archive:before{content:"\f187"}.fa-archway:before{content:"\f557"}.fa-arrow-alt-circle-down:before{content:"\f358"}.fa-arrow-alt-circle-left:before{content:"\f359"}.fa-arrow-alt-circle-right:before{content:"\f35a"}.fa-arrow-alt-circle-up:before{content:"\f35b"}.fa-arrow-circle-down:before{content:"\f0ab"}.fa-arrow-circle-left:before{content:"\f0a8"}.fa-arrow-circle-right:before{content:"\f0a9"}.fa-arrow-circle-up:before{content:"\f0aa"}.fa-arrow-down:before{content:"\f063"}.fa-arrow-left:before{content:"\f060"}.fa-arrow-right:before{content:"\f061"}.fa-arrow-up:before{content:"\f062"}.fa-arrows-alt:before{content:"\f0b2"}.fa-arrows-alt-h:before{content:"\f337"}.fa-arrows-alt-v:before{content:"\f338"}.fa-artstation:before{content:"\f77a"}.fa-assistive-listening-systems:before{content:"\f2a2"}.fa-asterisk:before{content:"\f069"}.fa-asymmetrik:before{content:"\f372"}.fa-at:before{content:"\f1fa"}.fa-atlas:before{content:"\f558"}.fa-atlassian:before{content:"\f77b"}.fa-atom:before{content:"\f5d2"}.fa-audible:before{content:"\f373"}.fa-audio-description:before{content:"\f29e"}.fa-autoprefixer:before{content:"\f41c"}.fa-avianex:before{content:"\f374"}.fa-aviato:before{content:"\f421"}.fa-award:before{content:"\f559"}.fa-aws:before{content:"\f375"}.fa-baby:before{content:"\f77c"}.fa-baby-carriage:before{content:"\f77d"}.fa-backspace:before{content:"\f55a"}.fa-backward:before{content:"\f04a"}.fa-bacon:before{content:"\f7e5"}.fa-balance-scale:before{content:"\f24e"}.fa-balance-scale-left:before{content:"\f515"}.fa-balance-scale-right:before{content:"\f516"}.fa-ban:before{content:"\f05e"}.fa-band-aid:before{content:"\f462"}.fa-bandcamp:before{content:"\f2d5"}.fa-barcode:before{content:"\f02a"}.fa-bars:before{content:"\f0c9"}.fa-baseball-ball:before{content:"\f433"}.fa-basketball-ball:before{content:"\f434"}.fa-bath:before{content:"\f2cd"}.fa-battery-empty:before{content:"\f244"}.fa-battery-full:before{content:"\f240"}.fa-battery-half:before{content:"\f242"}.fa-battery-quarter:before{content:"\f243"}.fa-battery-three-quarters:before{content:"\f241"}.fa-battle-net:before{content:"\f835"}.fa-bed:before{content:"\f236"}.fa-beer:before{content:"\f0fc"}.fa-behance:before{content:"\f1b4"}.fa-behance-square:before{content:"\f1b5"}.fa-bell:before{content:"\f0f3"}.fa-bell-slash:before{content:"\f1f6"}.fa-bezier-curve:before{content:"\f55b"}.fa-bible:before{content:"\f647"}.fa-bicycle:before{content:"\f206"}.fa-biking:before{content:"\f84a"}.fa-bimobject:before{content:"\f378"}.fa-binoculars:before{content:"\f1e5"}.fa-biohazard:before{content:"\f780"}.fa-birthday-cake:before{content:"\f1fd"}.fa-bitbucket:before{content:"\f171"}.fa-bitcoin:before{content:"\f379"}.fa-bity:before{content:"\f37a"}.fa-black-tie:before{content:"\f27e"}.fa-blackberry:before{content:"\f37b"}.fa-blender:before{content:"\f517"}.fa-blender-phone:before{content:"\f6b6"}.fa-blind:before{content:"\f29d"}.fa-blog:before{content:"\f781"}.fa-blogger:before{content:"\f37c"}.fa-blogger-b:before{content:"\f37d"}.fa-bluetooth:before{content:"\f293"}.fa-bluetooth-b:before{content:"\f294"}.fa-bold:before{content:"\f032"}.fa-bolt:before{content:"\f0e7"}.fa-bomb:before{content:"\f1e2"}.fa-bone:before{content:"\f5d7"}.fa-bong:before{content:"\f55c"}.fa-book:before{content:"\f02d"}.fa-book-dead:before{content:"\f6b7"}.fa-book-medical:before{content:"\f7e6"}.fa-book-open:before{content:"\f518"}.fa-book-reader:before{content:"\f5da"}.fa-bookmark:before{content:"\f02e"}.fa-bootstrap:before{content:"\f836"}.fa-border-all:before{content:"\f84c"}.fa-border-none:before{content:"\f850"}.fa-border-style:before{content:"\f853"}.fa-bowling-ball:before{content:"\f436"}.fa-box:before{content:"\f466"}.fa-box-open:before{content:"\f49e"}.fa-boxes:before{content:"\f468"}.fa-braille:before{content:"\f2a1"}.fa-brain:before{content:"\f5dc"}.fa-bread-slice:before{content:"\f7ec"}.fa-briefcase:before{content:"\f0b1"}.fa-briefcase-medical:before{content:"\f469"}.fa-broadcast-tower:before{content:"\f519"}.fa-broom:before{content:"\f51a"}.fa-brush:before{content:"\f55d"}.fa-btc:before{content:"\f15a"}.fa-buffer:before{content:"\f837"}.fa-bug:before{content:"\f188"}.fa-building:before{content:"\f1ad"}.fa-bullhorn:before{content:"\f0a1"}.fa-bullseye:before{content:"\f140"}.fa-burn:before{content:"\f46a"}.fa-buromobelexperte:before{content:"\f37f"}.fa-bus:before{content:"\f207"}.fa-bus-alt:before{content:"\f55e"}.fa-business-time:before{content:"\f64a"}.fa-buy-n-large:before{content:"\f8a6"}.fa-buysellads:before{content:"\f20d"}.fa-calculator:before{content:"\f1ec"}.fa-calendar:before{content:"\f133"}.fa-calendar-alt:before{content:"\f073"}.fa-calendar-check:before{content:"\f274"}.fa-calendar-day:before{content:"\f783"}.fa-calendar-minus:before{content:"\f272"}.fa-calendar-plus:before{content:"\f271"}.fa-calendar-times:before{content:"\f273"}.fa-calendar-week:before{content:"\f784"}.fa-camera:before{content:"\f030"}.fa-camera-retro:before{content:"\f083"}.fa-campground:before{content:"\f6bb"}.fa-canadian-maple-leaf:before{content:"\f785"}.fa-candy-cane:before{content:"\f786"}.fa-cannabis:before{content:"\f55f"}.fa-capsules:before{content:"\f46b"}.fa-car:before{content:"\f1b9"}.fa-car-alt:before{content:"\f5de"}.fa-car-battery:before{content:"\f5df"}.fa-car-crash:before{content:"\f5e1"}.fa-car-side:before{content:"\f5e4"}.fa-caret-down:before{content:"\f0d7"}.fa-caret-left:before{content:"\f0d9"}.fa-caret-right:before{content:"\f0da"}.fa-caret-square-down:before{content:"\f150"}.fa-caret-square-left:before{content:"\f191"}.fa-caret-square-right:before{content:"\f152"}.fa-caret-square-up:before{content:"\f151"}.fa-caret-up:before{content:"\f0d8"}.fa-carrot:before{content:"\f787"}.fa-cart-arrow-down:before{content:"\f218"}.fa-cart-plus:before{content:"\f217"}.fa-cash-register:before{content:"\f788"}.fa-cat:before{content:"\f6be"}.fa-cc-amazon-pay:before{content:"\f42d"}.fa-cc-amex:before{content:"\f1f3"}.fa-cc-apple-pay:before{content:"\f416"}.fa-cc-diners-club:before{content:"\f24c"}.fa-cc-discover:before{content:"\f1f2"}.fa-cc-jcb:before{content:"\f24b"}.fa-cc-mastercard:before{content:"\f1f1"}.fa-cc-paypal:before{content:"\f1f4"}.fa-cc-stripe:before{content:"\f1f5"}.fa-cc-visa:before{content:"\f1f0"}.fa-centercode:before{content:"\f380"}.fa-centos:before{content:"\f789"}.fa-certificate:before{content:"\f0a3"}.fa-chair:before{content:"\f6c0"}.fa-chalkboard:before{content:"\f51b"}.fa-chalkboard-teacher:before{content:"\f51c"}.fa-charging-station:before{content:"\f5e7"}.fa-chart-area:before{content:"\f1fe"}.fa-chart-bar:before{content:"\f080"}.fa-chart-line:before{content:"\f201"}.fa-chart-pie:before{content:"\f200"}.fa-check:before{content:"\f00c"}.fa-check-circle:before{content:"\f058"}.fa-check-double:before{content:"\f560"}.fa-check-square:before{content:"\f14a"}.fa-cheese:before{content:"\f7ef"}.fa-chess:before{content:"\f439"}.fa-chess-bishop:before{content:"\f43a"}.fa-chess-board:before{content:"\f43c"}.fa-chess-king:before{content:"\f43f"}.fa-chess-knight:before{content:"\f441"}.fa-chess-pawn:before{content:"\f443"}.fa-chess-queen:before{content:"\f445"}.fa-chess-rook:before{content:"\f447"}.fa-chevron-circle-down:before{content:"\f13a"}.fa-chevron-circle-left:before{content:"\f137"}.fa-chevron-circle-right:before{content:"\f138"}.fa-chevron-circle-up:before{content:"\f139"}.fa-chevron-down:before{content:"\f078"}.fa-chevron-left:before{content:"\f053"}.fa-chevron-right:before{content:"\f054"}.fa-chevron-up:before{content:"\f077"}.fa-child:before{content:"\f1ae"}.fa-chrome:before{content:"\f268"}.fa-chromecast:before{content:"\f838"}.fa-church:before{content:"\f51d"}.fa-circle:before{content:"\f111"}.fa-circle-notch:before{content:"\f1ce"}.fa-city:before{content:"\f64f"}.fa-clinic-medical:before{content:"\f7f2"}.fa-clipboard:before{content:"\f328"}.fa-clipboard-check:before{content:"\f46c"}.fa-clipboard-list:before{content:"\f46d"}.fa-clock:before{content:"\f017"}.fa-clone:before{content:"\f24d"}.fa-closed-captioning:before{content:"\f20a"}.fa-cloud:before{content:"\f0c2"}.fa-cloud-download-alt:before{content:"\f381"}.fa-cloud-meatball:before{content:"\f73b"}.fa-cloud-moon:before{content:"\f6c3"}.fa-cloud-moon-rain:before{content:"\f73c"}.fa-cloud-rain:before{content:"\f73d"}.fa-cloud-showers-heavy:before{content:"\f740"}.fa-cloud-sun:before{content:"\f6c4"}.fa-cloud-sun-rain:before{content:"\f743"}.fa-cloud-upload-alt:before{content:"\f382"}.fa-cloudscale:before{content:"\f383"}.fa-cloudsmith:before{content:"\f384"}.fa-cloudversify:before{content:"\f385"}.fa-cocktail:before{content:"\f561"}.fa-code:before{content:"\f121"}.fa-code-branch:before{content:"\f126"}.fa-codepen:before{content:"\f1cb"}.fa-codiepie:before{content:"\f284"}.fa-coffee:before{content:"\f0f4"}.fa-cog:before{content:"\f013"}.fa-cogs:before{content:"\f085"}.fa-coins:before{content:"\f51e"}.fa-columns:before{content:"\f0db"}.fa-comment:before{content:"\f075"}.fa-comment-alt:before{content:"\f27a"}.fa-comment-dollar:before{content:"\f651"}.fa-comment-dots:before{content:"\f4ad"}.fa-comment-medical:before{content:"\f7f5"}.fa-comment-slash:before{content:"\f4b3"}.fa-comments:before{content:"\f086"}.fa-comments-dollar:before{content:"\f653"}.fa-compact-disc:before{content:"\f51f"}.fa-compass:before{content:"\f14e"}.fa-compress:before{content:"\f066"}.fa-compress-arrows-alt:before{content:"\f78c"}.fa-concierge-bell:before{content:"\f562"}.fa-confluence:before{content:"\f78d"}.fa-connectdevelop:before{content:"\f20e"}.fa-contao:before{content:"\f26d"}.fa-cookie:before{content:"\f563"}.fa-cookie-bite:before{content:"\f564"}.fa-copy:before{content:"\f0c5"}.fa-copyright:before{content:"\f1f9"}.fa-cotton-bureau:before{content:"\f89e"}.fa-couch:before{content:"\f4b8"}.fa-cpanel:before{content:"\f388"}.fa-creative-commons:before{content:"\f25e"}.fa-creative-commons-by:before{content:"\f4e7"}.fa-creative-commons-nc:before{content:"\f4e8"}.fa-creative-commons-nc-eu:before{content:"\f4e9"}.fa-creative-commons-nc-jp:before{content:"\f4ea"}.fa-creative-commons-nd:before{content:"\f4eb"}.fa-creative-commons-pd:before{content:"\f4ec"}.fa-creative-commons-pd-alt:before{content:"\f4ed"}.fa-creative-commons-remix:before{content:"\f4ee"}.fa-creative-commons-sa:before{content:"\f4ef"}.fa-creative-commons-sampling:before{content:"\f4f0"}.fa-creative-commons-sampling-plus:before{content:"\f4f1"}.fa-creative-commons-share:before{content:"\f4f2"}.fa-creative-commons-zero:before{content:"\f4f3"}.fa-credit-card:before{content:"\f09d"}.fa-critical-role:before{content:"\f6c9"}.fa-crop:before{content:"\f125"}.fa-crop-alt:before{content:"\f565"}.fa-cross:before{content:"\f654"}.fa-crosshairs:before{content:"\f05b"}.fa-crow:before{content:"\f520"}.fa-crown:before{content:"\f521"}.fa-crutch:before{content:"\f7f7"}.fa-css3:before{content:"\f13c"}.fa-css3-alt:before{content:"\f38b"}.fa-cube:before{content:"\f1b2"}.fa-cubes:before{content:"\f1b3"}.fa-cut:before{content:"\f0c4"}.fa-cuttlefish:before{content:"\f38c"}.fa-d-and-d:before{content:"\f38d"}.fa-d-and-d-beyond:before{content:"\f6ca"}.fa-dashcube:before{content:"\f210"}.fa-database:before{content:"\f1c0"}.fa-deaf:before{content:"\f2a4"}.fa-delicious:before{content:"\f1a5"}.fa-democrat:before{content:"\f747"}.fa-deploydog:before{content:"\f38e"}.fa-deskpro:before{content:"\f38f"}.fa-desktop:before{content:"\f108"}.fa-dev:before{content:"\f6cc"}.fa-deviantart:before{content:"\f1bd"}.fa-dharmachakra:before{content:"\f655"}.fa-dhl:before{content:"\f790"}.fa-diagnoses:before{content:"\f470"}.fa-diaspora:before{content:"\f791"}.fa-dice:before{content:"\f522"}.fa-dice-d20:before{content:"\f6cf"}.fa-dice-d6:before{content:"\f6d1"}.fa-dice-five:before{content:"\f523"}.fa-dice-four:before{content:"\f524"}.fa-dice-one:before{content:"\f525"}.fa-dice-six:before{content:"\f526"}.fa-dice-three:before{content:"\f527"}.fa-dice-two:before{content:"\f528"}.fa-digg:before{content:"\f1a6"}.fa-digital-ocean:before{content:"\f391"}.fa-digital-tachograph:before{content:"\f566"}.fa-directions:before{content:"\f5eb"}.fa-discord:before{content:"\f392"}.fa-discourse:before{content:"\f393"}.fa-divide:before{content:"\f529"}.fa-dizzy:before{content:"\f567"}.fa-dna:before{content:"\f471"}.fa-dochub:before{content:"\f394"}.fa-docker:before{content:"\f395"}.fa-dog:before{content:"\f6d3"}.fa-dollar-sign:before{content:"\f155"}.fa-dolly:before{content:"\f472"}.fa-dolly-flatbed:before{content:"\f474"}.fa-donate:before{content:"\f4b9"}.fa-door-closed:before{content:"\f52a"}.fa-door-open:before{content:"\f52b"}.fa-dot-circle:before{content:"\f192"}.fa-dove:before{content:"\f4ba"}.fa-download:before{content:"\f019"}.fa-draft2digital:before{content:"\f396"}.fa-drafting-compass:before{content:"\f568"}.fa-dragon:before{content:"\f6d5"}.fa-draw-polygon:before{content:"\f5ee"}.fa-dribbble:before{content:"\f17d"}.fa-dribbble-square:before{content:"\f397"}.fa-dropbox:before{content:"\f16b"}.fa-drum:before{content:"\f569"}.fa-drum-steelpan:before{content:"\f56a"}.fa-drumstick-bite:before{content:"\f6d7"}.fa-drupal:before{content:"\f1a9"}.fa-dumbbell:before{content:"\f44b"}.fa-dumpster:before{content:"\f793"}.fa-dumpster-fire:before{content:"\f794"}.fa-dungeon:before{content:"\f6d9"}.fa-dyalog:before{content:"\f399"}.fa-earlybirds:before{content:"\f39a"}.fa-ebay:before{content:"\f4f4"}.fa-edge:before{content:"\f282"}.fa-edit:before{content:"\f044"}.fa-egg:before{content:"\f7fb"}.fa-eject:before{content:"\f052"}.fa-elementor:before{content:"\f430"}.fa-ellipsis-h:before{content:"\f141"}.fa-ellipsis-v:before{content:"\f142"}.fa-ello:before{content:"\f5f1"}.fa-ember:before{content:"\f423"}.fa-empire:before{content:"\f1d1"}.fa-envelope:before{content:"\f0e0"}.fa-envelope-open:before{content:"\f2b6"}.fa-envelope-open-text:before{content:"\f658"}.fa-envelope-square:before{content:"\f199"}.fa-envira:before{content:"\f299"}.fa-equals:before{content:"\f52c"}.fa-eraser:before{content:"\f12d"}.fa-erlang:before{content:"\f39d"}.fa-ethereum:before{content:"\f42e"}.fa-ethernet:before{content:"\f796"}.fa-etsy:before{content:"\f2d7"}.fa-euro-sign:before{content:"\f153"}.fa-evernote:before{content:"\f839"}.fa-exchange-alt:before{content:"\f362"}.fa-exclamation:before{content:"\f12a"}.fa-exclamation-circle:before{content:"\f06a"}.fa-exclamation-triangle:before{content:"\f071"}.fa-expand:before{content:"\f065"}.fa-expand-arrows-alt:before{content:"\f31e"}.fa-expeditedssl:before{content:"\f23e"}.fa-external-link-alt:before{content:"\f35d"}.fa-external-link-square-alt:before{content:"\f360"}.fa-eye:before{content:"\f06e"}.fa-eye-dropper:before{content:"\f1fb"}.fa-eye-slash:before{content:"\f070"}.fa-facebook:before{content:"\f09a"}.fa-facebook-f:before{content:"\f39e"}.fa-facebook-messenger:before{content:"\f39f"}.fa-facebook-square:before{content:"\f082"}.fa-fan:before{content:"\f863"}.fa-fantasy-flight-games:before{content:"\f6dc"}.fa-fast-backward:before{content:"\f049"}.fa-fast-forward:before{content:"\f050"}.fa-fax:before{content:"\f1ac"}.fa-feather:before{content:"\f52d"}.fa-feather-alt:before{content:"\f56b"}.fa-fedex:before{content:"\f797"}.fa-fedora:before{content:"\f798"}.fa-female:before{content:"\f182"}.fa-fighter-jet:before{content:"\f0fb"}.fa-figma:before{content:"\f799"}.fa-file:before{content:"\f15b"}.fa-file-alt:before{content:"\f15c"}.fa-file-archive:before{content:"\f1c6"}.fa-file-audio:before{content:"\f1c7"}.fa-file-code:before{content:"\f1c9"}.fa-file-contract:before{content:"\f56c"}.fa-file-csv:before{content:"\f6dd"}.fa-file-download:before{content:"\f56d"}.fa-file-excel:before{content:"\f1c3"}.fa-file-export:before{content:"\f56e"}.fa-file-image:before{content:"\f1c5"}.fa-file-import:before{content:"\f56f"}.fa-file-invoice:before{content:"\f570"}.fa-file-invoice-dollar:before{content:"\f571"}.fa-file-medical:before{content:"\f477"}.fa-file-medical-alt:before{content:"\f478"}.fa-file-pdf:before{content:"\f1c1"}.fa-file-powerpoint:before{content:"\f1c4"}.fa-file-prescription:before{content:"\f572"}.fa-file-signature:before{content:"\f573"}.fa-file-upload:before{content:"\f574"}.fa-file-video:before{content:"\f1c8"}.fa-file-word:before{content:"\f1c2"}.fa-fill:before{content:"\f575"}.fa-fill-drip:before{content:"\f576"}.fa-film:before{content:"\f008"}.fa-filter:before{content:"\f0b0"}.fa-fingerprint:before{content:"\f577"}.fa-fire:before{content:"\f06d"}.fa-fire-alt:before{content:"\f7e4"}.fa-fire-extinguisher:before{content:"\f134"}.fa-firefox:before{content:"\f269"}.fa-first-aid:before{content:"\f479"}.fa-first-order:before{content:"\f2b0"}.fa-first-order-alt:before{content:"\f50a"}.fa-firstdraft:before{content:"\f3a1"}.fa-fish:before{content:"\f578"}.fa-fist-raised:before{content:"\f6de"}.fa-flag:before{content:"\f024"}.fa-flag-checkered:before{content:"\f11e"}.fa-flag-usa:before{content:"\f74d"}.fa-flask:before{content:"\f0c3"}.fa-flickr:before{content:"\f16e"}.fa-flipboard:before{content:"\f44d"}.fa-flushed:before{content:"\f579"}.fa-fly:before{content:"\f417"}.fa-folder:before{content:"\f07b"}.fa-folder-minus:before{content:"\f65d"}.fa-folder-open:before{content:"\f07c"}.fa-folder-plus:before{content:"\f65e"}.fa-font:before{content:"\f031"}.fa-font-awesome:before{content:"\f2b4"}.fa-font-awesome-alt:before{content:"\f35c"}.fa-font-awesome-flag:before{content:"\f425"}.fa-font-awesome-logo-full:before{content:"\f4e6"}.fa-fonticons:before{content:"\f280"}.fa-fonticons-fi:before{content:"\f3a2"}.fa-football-ball:before{content:"\f44e"}.fa-fort-awesome:before{content:"\f286"}.fa-fort-awesome-alt:before{content:"\f3a3"}.fa-forumbee:before{content:"\f211"}.fa-forward:before{content:"\f04e"}.fa-foursquare:before{content:"\f180"}.fa-free-code-camp:before{content:"\f2c5"}.fa-freebsd:before{content:"\f3a4"}.fa-frog:before{content:"\f52e"}.fa-frown:before{content:"\f119"}.fa-frown-open:before{content:"\f57a"}.fa-fulcrum:before{content:"\f50b"}.fa-funnel-dollar:before{content:"\f662"}.fa-futbol:before{content:"\f1e3"}.fa-galactic-republic:before{content:"\f50c"}.fa-galactic-senate:before{content:"\f50d"}.fa-gamepad:before{content:"\f11b"}.fa-gas-pump:before{content:"\f52f"}.fa-gavel:before{content:"\f0e3"}.fa-gem:before{content:"\f3a5"}.fa-genderless:before{content:"\f22d"}.fa-get-pocket:before{content:"\f265"}.fa-gg:before{content:"\f260"}.fa-gg-circle:before{content:"\f261"}.fa-ghost:before{content:"\f6e2"}.fa-gift:before{content:"\f06b"}.fa-gifts:before{content:"\f79c"}.fa-git:before{content:"\f1d3"}.fa-git-alt:before{content:"\f841"}.fa-git-square:before{content:"\f1d2"}.fa-github:before{content:"\f09b"}.fa-github-alt:before{content:"\f113"}.fa-github-square:before{content:"\f092"}.fa-gitkraken:before{content:"\f3a6"}.fa-gitlab:before{content:"\f296"}.fa-gitter:before{content:"\f426"}.fa-glass-cheers:before{content:"\f79f"}.fa-glass-martini:before{content:"\f000"}.fa-glass-martini-alt:before{content:"\f57b"}.fa-glass-whiskey:before{content:"\f7a0"}.fa-glasses:before{content:"\f530"}.fa-glide:before{content:"\f2a5"}.fa-glide-g:before{content:"\f2a6"}.fa-globe:before{content:"\f0ac"}.fa-globe-africa:before{content:"\f57c"}.fa-globe-americas:before{content:"\f57d"}.fa-globe-asia:before{content:"\f57e"}.fa-globe-europe:before{content:"\f7a2"}.fa-gofore:before{content:"\f3a7"}.fa-golf-ball:before{content:"\f450"}.fa-goodreads:before{content:"\f3a8"}.fa-goodreads-g:before{content:"\f3a9"}.fa-google:before{content:"\f1a0"}.fa-google-drive:before{content:"\f3aa"}.fa-google-play:before{content:"\f3ab"}.fa-google-plus:before{content:"\f2b3"}.fa-google-plus-g:before{content:"\f0d5"}.fa-google-plus-square:before{content:"\f0d4"}.fa-google-wallet:before{content:"\f1ee"}.fa-gopuram:before{content:"\f664"}.fa-graduation-cap:before{content:"\f19d"}.fa-gratipay:before{content:"\f184"}.fa-grav:before{content:"\f2d6"}.fa-greater-than:before{content:"\f531"}.fa-greater-than-equal:before{content:"\f532"}.fa-grimace:before{content:"\f57f"}.fa-grin:before{content:"\f580"}.fa-grin-alt:before{content:"\f581"}.fa-grin-beam:before{content:"\f582"}.fa-grin-beam-sweat:before{content:"\f583"}.fa-grin-hearts:before{content:"\f584"}.fa-grin-squint:before{content:"\f585"}.fa-grin-squint-tears:before{content:"\f586"}.fa-grin-stars:before{content:"\f587"}.fa-grin-tears:before{content:"\f588"}.fa-grin-tongue:before{content:"\f589"}.fa-grin-tongue-squint:before{content:"\f58a"}.fa-grin-tongue-wink:before{content:"\f58b"}.fa-grin-wink:before{content:"\f58c"}.fa-grip-horizontal:before{content:"\f58d"}.fa-grip-lines:before{content:"\f7a4"}.fa-grip-lines-vertical:before{content:"\f7a5"}.fa-grip-vertical:before{content:"\f58e"}.fa-gripfire:before{content:"\f3ac"}.fa-grunt:before{content:"\f3ad"}.fa-guitar:before{content:"\f7a6"}.fa-gulp:before{content:"\f3ae"}.fa-h-square:before{content:"\f0fd"}.fa-hacker-news:before{content:"\f1d4"}.fa-hacker-news-square:before{content:"\f3af"}.fa-hackerrank:before{content:"\f5f7"}.fa-hamburger:before{content:"\f805"}.fa-hammer:before{content:"\f6e3"}.fa-hamsa:before{content:"\f665"}.fa-hand-holding:before{content:"\f4bd"}.fa-hand-holding-heart:before{content:"\f4be"}.fa-hand-holding-usd:before{content:"\f4c0"}.fa-hand-lizard:before{content:"\f258"}.fa-hand-middle-finger:before{content:"\f806"}.fa-hand-paper:before{content:"\f256"}.fa-hand-peace:before{content:"\f25b"}.fa-hand-point-down:before{content:"\f0a7"}.fa-hand-point-left:before{content:"\f0a5"}.fa-hand-point-right:before{content:"\f0a4"}.fa-hand-point-up:before{content:"\f0a6"}.fa-hand-pointer:before{content:"\f25a"}.fa-hand-rock:before{content:"\f255"}.fa-hand-scissors:before{content:"\f257"}.fa-hand-spock:before{content:"\f259"}.fa-hands:before{content:"\f4c2"}.fa-hands-helping:before{content:"\f4c4"}.fa-handshake:before{content:"\f2b5"}.fa-hanukiah:before{content:"\f6e6"}.fa-hard-hat:before{content:"\f807"}.fa-hashtag:before{content:"\f292"}.fa-hat-cowboy:before{content:"\f8c0"}.fa-hat-cowboy-side:before{content:"\f8c1"}.fa-hat-wizard:before{content:"\f6e8"}.fa-haykal:before{content:"\f666"}.fa-hdd:before{content:"\f0a0"}.fa-heading:before{content:"\f1dc"}.fa-headphones:before{content:"\f025"}.fa-headphones-alt:before{content:"\f58f"}.fa-headset:before{content:"\f590"}.fa-heart:before{content:"\f004"}.fa-heart-broken:before{content:"\f7a9"}.fa-heartbeat:before{content:"\f21e"}.fa-helicopter:before{content:"\f533"}.fa-highlighter:before{content:"\f591"}.fa-hiking:before{content:"\f6ec"}.fa-hippo:before{content:"\f6ed"}.fa-hips:before{content:"\f452"}.fa-hire-a-helper:before{content:"\f3b0"}.fa-history:before{content:"\f1da"}.fa-hockey-puck:before{content:"\f453"}.fa-holly-berry:before{content:"\f7aa"}.fa-home:before{content:"\f015"}.fa-hooli:before{content:"\f427"}.fa-hornbill:before{content:"\f592"}.fa-horse:before{content:"\f6f0"}.fa-horse-head:before{content:"\f7ab"}.fa-hospital:before{content:"\f0f8"}.fa-hospital-alt:before{content:"\f47d"}.fa-hospital-symbol:before{content:"\f47e"}.fa-hot-tub:before{content:"\f593"}.fa-hotdog:before{content:"\f80f"}.fa-hotel:before{content:"\f594"}.fa-hotjar:before{content:"\f3b1"}.fa-hourglass:before{content:"\f254"}.fa-hourglass-end:before{content:"\f253"}.fa-hourglass-half:before{content:"\f252"}.fa-hourglass-start:before{content:"\f251"}.fa-house-damage:before{content:"\f6f1"}.fa-houzz:before{content:"\f27c"}.fa-hryvnia:before{content:"\f6f2"}.fa-html5:before{content:"\f13b"}.fa-hubspot:before{content:"\f3b2"}.fa-i-cursor:before{content:"\f246"}.fa-ice-cream:before{content:"\f810"}.fa-icicles:before{content:"\f7ad"}.fa-icons:before{content:"\f86d"}.fa-id-badge:before{content:"\f2c1"}.fa-id-card:before{content:"\f2c2"}.fa-id-card-alt:before{content:"\f47f"}.fa-igloo:before{content:"\f7ae"}.fa-image:before{content:"\f03e"}.fa-images:before{content:"\f302"}.fa-imdb:before{content:"\f2d8"}.fa-inbox:before{content:"\f01c"}.fa-indent:before{content:"\f03c"}.fa-industry:before{content:"\f275"}.fa-infinity:before{content:"\f534"}.fa-info:before{content:"\f129"}.fa-info-circle:before{content:"\f05a"}.fa-instagram:before{content:"\f16d"}.fa-intercom:before{content:"\f7af"}.fa-internet-explorer:before{content:"\f26b"}.fa-invision:before{content:"\f7b0"}.fa-ioxhost:before{content:"\f208"}.fa-italic:before{content:"\f033"}.fa-itch-io:before{content:"\f83a"}.fa-itunes:before{content:"\f3b4"}.fa-itunes-note:before{content:"\f3b5"}.fa-java:before{content:"\f4e4"}.fa-jedi:before{content:"\f669"}.fa-jedi-order:before{content:"\f50e"}.fa-jenkins:before{content:"\f3b6"}.fa-jira:before{content:"\f7b1"}.fa-joget:before{content:"\f3b7"}.fa-joint:before{content:"\f595"}.fa-joomla:before{content:"\f1aa"}.fa-journal-whills:before{content:"\f66a"}.fa-js:before{content:"\f3b8"}.fa-js-square:before{content:"\f3b9"}.fa-jsfiddle:before{content:"\f1cc"}.fa-kaaba:before{content:"\f66b"}.fa-kaggle:before{content:"\f5fa"}.fa-key:before{content:"\f084"}.fa-keybase:before{content:"\f4f5"}.fa-keyboard:before{content:"\f11c"}.fa-keycdn:before{content:"\f3ba"}.fa-khanda:before{content:"\f66d"}.fa-kickstarter:before{content:"\f3bb"}.fa-kickstarter-k:before{content:"\f3bc"}.fa-kiss:before{content:"\f596"}.fa-kiss-beam:before{content:"\f597"}.fa-kiss-wink-heart:before{content:"\f598"}.fa-kiwi-bird:before{content:"\f535"}.fa-korvue:before{content:"\f42f"}.fa-landmark:before{content:"\f66f"}.fa-language:before{content:"\f1ab"}.fa-laptop:before{content:"\f109"}.fa-laptop-code:before{content:"\f5fc"}.fa-laptop-medical:before{content:"\f812"}.fa-laravel:before{content:"\f3bd"}.fa-lastfm:before{content:"\f202"}.fa-lastfm-square:before{content:"\f203"}.fa-laugh:before{content:"\f599"}.fa-laugh-beam:before{content:"\f59a"}.fa-laugh-squint:before{content:"\f59b"}.fa-laugh-wink:before{content:"\f59c"}.fa-layer-group:before{content:"\f5fd"}.fa-leaf:before{content:"\f06c"}.fa-leanpub:before{content:"\f212"}.fa-lemon:before{content:"\f094"}.fa-less:before{content:"\f41d"}.fa-less-than:before{content:"\f536"}.fa-less-than-equal:before{content:"\f537"}.fa-level-down-alt:before{content:"\f3be"}.fa-level-up-alt:before{content:"\f3bf"}.fa-life-ring:before{content:"\f1cd"}.fa-lightbulb:before{content:"\f0eb"}.fa-line:before{content:"\f3c0"}.fa-link:before{content:"\f0c1"}.fa-linkedin:before{content:"\f08c"}.fa-linkedin-in:before{content:"\f0e1"}.fa-linode:before{content:"\f2b8"}.fa-linux:before{content:"\f17c"}.fa-lira-sign:before{content:"\f195"}.fa-list:before{content:"\f03a"}.fa-list-alt:before{content:"\f022"}.fa-list-ol:before{content:"\f0cb"}.fa-list-ul:before{content:"\f0ca"}.fa-location-arrow:before{content:"\f124"}.fa-lock:before{content:"\f023"}.fa-lock-open:before{content:"\f3c1"}.fa-long-arrow-alt-down:before{content:"\f309"}.fa-long-arrow-alt-left:before{content:"\f30a"}.fa-long-arrow-alt-right:before{content:"\f30b"}.fa-long-arrow-alt-up:before{content:"\f30c"}.fa-low-vision:before{content:"\f2a8"}.fa-luggage-cart:before{content:"\f59d"}.fa-lyft:before{content:"\f3c3"}.fa-magento:before{content:"\f3c4"}.fa-magic:before{content:"\f0d0"}.fa-magnet:before{content:"\f076"}.fa-mail-bulk:before{content:"\f674"}.fa-mailchimp:before{content:"\f59e"}.fa-male:before{content:"\f183"}.fa-mandalorian:before{content:"\f50f"}.fa-map:before{content:"\f279"}.fa-map-marked:before{content:"\f59f"}.fa-map-marked-alt:before{content:"\f5a0"}.fa-map-marker:before{content:"\f041"}.fa-map-marker-alt:before{content:"\f3c5"}.fa-map-pin:before{content:"\f276"}.fa-map-signs:before{content:"\f277"}.fa-markdown:before{content:"\f60f"}.fa-marker:before{content:"\f5a1"}.fa-mars:before{content:"\f222"}.fa-mars-double:before{content:"\f227"}.fa-mars-stroke:before{content:"\f229"}.fa-mars-stroke-h:before{content:"\f22b"}.fa-mars-stroke-v:before{content:"\f22a"}.fa-mask:before{content:"\f6fa"}.fa-mastodon:before{content:"\f4f6"}.fa-maxcdn:before{content:"\f136"}.fa-mdb:before{content:"\f8ca"}.fa-medal:before{content:"\f5a2"}.fa-medapps:before{content:"\f3c6"}.fa-medium:before{content:"\f23a"}.fa-medium-m:before{content:"\f3c7"}.fa-medkit:before{content:"\f0fa"}.fa-medrt:before{content:"\f3c8"}.fa-meetup:before{content:"\f2e0"}.fa-megaport:before{content:"\f5a3"}.fa-meh:before{content:"\f11a"}.fa-meh-blank:before{content:"\f5a4"}.fa-meh-rolling-eyes:before{content:"\f5a5"}.fa-memory:before{content:"\f538"}.fa-mendeley:before{content:"\f7b3"}.fa-menorah:before{content:"\f676"}.fa-mercury:before{content:"\f223"}.fa-meteor:before{content:"\f753"}.fa-microchip:before{content:"\f2db"}.fa-microphone:before{content:"\f130"}.fa-microphone-alt:before{content:"\f3c9"}.fa-microphone-alt-slash:before{content:"\f539"}.fa-microphone-slash:before{content:"\f131"}.fa-microscope:before{content:"\f610"}.fa-microsoft:before{content:"\f3ca"}.fa-minus:before{content:"\f068"}.fa-minus-circle:before{content:"\f056"}.fa-minus-square:before{content:"\f146"}.fa-mitten:before{content:"\f7b5"}.fa-mix:before{content:"\f3cb"}.fa-mixcloud:before{content:"\f289"}.fa-mizuni:before{content:"\f3cc"}.fa-mobile:before{content:"\f10b"}.fa-mobile-alt:before{content:"\f3cd"}.fa-modx:before{content:"\f285"}.fa-monero:before{content:"\f3d0"}.fa-money-bill:before{content:"\f0d6"}.fa-money-bill-alt:before{content:"\f3d1"}.fa-money-bill-wave:before{content:"\f53a"}.fa-money-bill-wave-alt:before{content:"\f53b"}.fa-money-check:before{content:"\f53c"}.fa-money-check-alt:before{content:"\f53d"}.fa-monument:before{content:"\f5a6"}.fa-moon:before{content:"\f186"}.fa-mortar-pestle:before{content:"\f5a7"}.fa-mosque:before{content:"\f678"}.fa-motorcycle:before{content:"\f21c"}.fa-mountain:before{content:"\f6fc"}.fa-mouse:before{content:"\f8cc"}.fa-mouse-pointer:before{content:"\f245"}.fa-mug-hot:before{content:"\f7b6"}.fa-music:before{content:"\f001"}.fa-napster:before{content:"\f3d2"}.fa-neos:before{content:"\f612"}.fa-network-wired:before{content:"\f6ff"}.fa-neuter:before{content:"\f22c"}.fa-newspaper:before{content:"\f1ea"}.fa-nimblr:before{content:"\f5a8"}.fa-node:before{content:"\f419"}.fa-node-js:before{content:"\f3d3"}.fa-not-equal:before{content:"\f53e"}.fa-notes-medical:before{content:"\f481"}.fa-npm:before{content:"\f3d4"}.fa-ns8:before{content:"\f3d5"}.fa-nutritionix:before{content:"\f3d6"}.fa-object-group:before{content:"\f247"}.fa-object-ungroup:before{content:"\f248"}.fa-odnoklassniki:before{content:"\f263"}.fa-odnoklassniki-square:before{content:"\f264"}.fa-oil-can:before{content:"\f613"}.fa-old-republic:before{content:"\f510"}.fa-om:before{content:"\f679"}.fa-opencart:before{content:"\f23d"}.fa-openid:before{content:"\f19b"}.fa-opera:before{content:"\f26a"}.fa-optin-monster:before{content:"\f23c"}.fa-orcid:before{content:"\f8d2"}.fa-osi:before{content:"\f41a"}.fa-otter:before{content:"\f700"}.fa-outdent:before{content:"\f03b"}.fa-page4:before{content:"\f3d7"}.fa-pagelines:before{content:"\f18c"}.fa-pager:before{content:"\f815"}.fa-paint-brush:before{content:"\f1fc"}.fa-paint-roller:before{content:"\f5aa"}.fa-palette:before{content:"\f53f"}.fa-palfed:before{content:"\f3d8"}.fa-pallet:before{content:"\f482"}.fa-paper-plane:before{content:"\f1d8"}.fa-paperclip:before{content:"\f0c6"}.fa-parachute-box:before{content:"\f4cd"}.fa-paragraph:before{content:"\f1dd"}.fa-parking:before{content:"\f540"}.fa-passport:before{content:"\f5ab"}.fa-pastafarianism:before{content:"\f67b"}.fa-paste:before{content:"\f0ea"}.fa-patreon:before{content:"\f3d9"}.fa-pause:before{content:"\f04c"}.fa-pause-circle:before{content:"\f28b"}.fa-paw:before{content:"\f1b0"}.fa-paypal:before{content:"\f1ed"}.fa-peace:before{content:"\f67c"}.fa-pen:before{content:"\f304"}.fa-pen-alt:before{content:"\f305"}.fa-pen-fancy:before{content:"\f5ac"}.fa-pen-nib:before{content:"\f5ad"}.fa-pen-square:before{content:"\f14b"}.fa-pencil-alt:before{content:"\f303"}.fa-pencil-ruler:before{content:"\f5ae"}.fa-penny-arcade:before{content:"\f704"}.fa-people-carry:before{content:"\f4ce"}.fa-pepper-hot:before{content:"\f816"}.fa-percent:before{content:"\f295"}.fa-percentage:before{content:"\f541"}.fa-periscope:before{content:"\f3da"}.fa-person-booth:before{content:"\f756"}.fa-phabricator:before{content:"\f3db"}.fa-phoenix-framework:before{content:"\f3dc"}.fa-phoenix-squadron:before{content:"\f511"}.fa-phone:before{content:"\f095"}.fa-phone-alt:before{content:"\f879"}.fa-phone-slash:before{content:"\f3dd"}.fa-phone-square:before{content:"\f098"}.fa-phone-square-alt:before{content:"\f87b"}.fa-phone-volume:before{content:"\f2a0"}.fa-photo-video:before{content:"\f87c"}.fa-php:before{content:"\f457"}.fa-pied-piper:before{content:"\f2ae"}.fa-pied-piper-alt:before{content:"\f1a8"}.fa-pied-piper-hat:before{content:"\f4e5"}.fa-pied-piper-pp:before{content:"\f1a7"}.fa-piggy-bank:before{content:"\f4d3"}.fa-pills:before{content:"\f484"}.fa-pinterest:before{content:"\f0d2"}.fa-pinterest-p:before{content:"\f231"}.fa-pinterest-square:before{content:"\f0d3"}.fa-pizza-slice:before{content:"\f818"}.fa-place-of-worship:before{content:"\f67f"}.fa-plane:before{content:"\f072"}.fa-plane-arrival:before{content:"\f5af"}.fa-plane-departure:before{content:"\f5b0"}.fa-play:before{content:"\f04b"}.fa-play-circle:before{content:"\f144"}.fa-playstation:before{content:"\f3df"}.fa-plug:before{content:"\f1e6"}.fa-plus:before{content:"\f067"}.fa-plus-circle:before{content:"\f055"}.fa-plus-square:before{content:"\f0fe"}.fa-podcast:before{content:"\f2ce"}.fa-poll:before{content:"\f681"}.fa-poll-h:before{content:"\f682"}.fa-poo:before{content:"\f2fe"}.fa-poo-storm:before{content:"\f75a"}.fa-poop:before{content:"\f619"}.fa-portrait:before{content:"\f3e0"}.fa-pound-sign:before{content:"\f154"}.fa-power-off:before{content:"\f011"}.fa-pray:before{content:"\f683"}.fa-praying-hands:before{content:"\f684"}.fa-prescription:before{content:"\f5b1"}.fa-prescription-bottle:before{content:"\f485"}.fa-prescription-bottle-alt:before{content:"\f486"}.fa-print:before{content:"\f02f"}.fa-procedures:before{content:"\f487"}.fa-product-hunt:before{content:"\f288"}.fa-project-diagram:before{content:"\f542"}.fa-pushed:before{content:"\f3e1"}.fa-puzzle-piece:before{content:"\f12e"}.fa-python:before{content:"\f3e2"}.fa-qq:before{content:"\f1d6"}.fa-qrcode:before{content:"\f029"}.fa-question:before{content:"\f128"}.fa-question-circle:before{content:"\f059"}.fa-quidditch:before{content:"\f458"}.fa-quinscape:before{content:"\f459"}.fa-quora:before{content:"\f2c4"}.fa-quote-left:before{content:"\f10d"}.fa-quote-right:before{content:"\f10e"}.fa-quran:before{content:"\f687"}.fa-r-project:before{content:"\f4f7"}.fa-radiation:before{content:"\f7b9"}.fa-radiation-alt:before{content:"\f7ba"}.fa-rainbow:before{content:"\f75b"}.fa-random:before{content:"\f074"}.fa-raspberry-pi:before{content:"\f7bb"}.fa-ravelry:before{content:"\f2d9"}.fa-react:before{content:"\f41b"}.fa-reacteurope:before{content:"\f75d"}.fa-readme:before{content:"\f4d5"}.fa-rebel:before{content:"\f1d0"}.fa-receipt:before{content:"\f543"}.fa-record-vinyl:before{content:"\f8d9"}.fa-recycle:before{content:"\f1b8"}.fa-red-river:before{content:"\f3e3"}.fa-reddit:before{content:"\f1a1"}.fa-reddit-alien:before{content:"\f281"}.fa-reddit-square:before{content:"\f1a2"}.fa-redhat:before{content:"\f7bc"}.fa-redo:before{content:"\f01e"}.fa-redo-alt:before{content:"\f2f9"}.fa-registered:before{content:"\f25d"}.fa-remove-format:before{content:"\f87d"}.fa-renren:before{content:"\f18b"}.fa-reply:before{content:"\f3e5"}.fa-reply-all:before{content:"\f122"}.fa-replyd:before{content:"\f3e6"}.fa-republican:before{content:"\f75e"}.fa-researchgate:before{content:"\f4f8"}.fa-resolving:before{content:"\f3e7"}.fa-restroom:before{content:"\f7bd"}.fa-retweet:before{content:"\f079"}.fa-rev:before{content:"\f5b2"}.fa-ribbon:before{content:"\f4d6"}.fa-ring:before{content:"\f70b"}.fa-road:before{content:"\f018"}.fa-robot:before{content:"\f544"}.fa-rocket:before{content:"\f135"}.fa-rocketchat:before{content:"\f3e8"}.fa-rockrms:before{content:"\f3e9"}.fa-route:before{content:"\f4d7"}.fa-rss:before{content:"\f09e"}.fa-rss-square:before{content:"\f143"}.fa-ruble-sign:before{content:"\f158"}.fa-ruler:before{content:"\f545"}.fa-ruler-combined:before{content:"\f546"}.fa-ruler-horizontal:before{content:"\f547"}.fa-ruler-vertical:before{content:"\f548"}.fa-running:before{content:"\f70c"}.fa-rupee-sign:before{content:"\f156"}.fa-sad-cry:before{content:"\f5b3"}.fa-sad-tear:before{content:"\f5b4"}.fa-safari:before{content:"\f267"}.fa-salesforce:before{content:"\f83b"}.fa-sass:before{content:"\f41e"}.fa-satellite:before{content:"\f7bf"}.fa-satellite-dish:before{content:"\f7c0"}.fa-save:before{content:"\f0c7"}.fa-schlix:before{content:"\f3ea"}.fa-school:before{content:"\f549"}.fa-screwdriver:before{content:"\f54a"}.fa-scribd:before{content:"\f28a"}.fa-scroll:before{content:"\f70e"}.fa-sd-card:before{content:"\f7c2"}.fa-search:before{content:"\f002"}.fa-search-dollar:before{content:"\f688"}.fa-search-location:before{content:"\f689"}.fa-search-minus:before{content:"\f010"}.fa-search-plus:before{content:"\f00e"}.fa-searchengin:before{content:"\f3eb"}.fa-seedling:before{content:"\f4d8"}.fa-sellcast:before{content:"\f2da"}.fa-sellsy:before{content:"\f213"}.fa-server:before{content:"\f233"}.fa-servicestack:before{content:"\f3ec"}.fa-shapes:before{content:"\f61f"}.fa-share:before{content:"\f064"}.fa-share-alt:before{content:"\f1e0"}.fa-share-alt-square:before{content:"\f1e1"}.fa-share-square:before{content:"\f14d"}.fa-shekel-sign:before{content:"\f20b"}.fa-shield-alt:before{content:"\f3ed"}.fa-ship:before{content:"\f21a"}.fa-shipping-fast:before{content:"\f48b"}.fa-shirtsinbulk:before{content:"\f214"}.fa-shoe-prints:before{content:"\f54b"}.fa-shopping-bag:before{content:"\f290"}.fa-shopping-basket:before{content:"\f291"}.fa-shopping-cart:before{content:"\f07a"}.fa-shopware:before{content:"\f5b5"}.fa-shower:before{content:"\f2cc"}.fa-shuttle-van:before{content:"\f5b6"}.fa-sign:before{content:"\f4d9"}.fa-sign-in-alt:before{content:"\f2f6"}.fa-sign-language:before{content:"\f2a7"}.fa-sign-out-alt:before{content:"\f2f5"}.fa-signal:before{content:"\f012"}.fa-signature:before{content:"\f5b7"}.fa-sim-card:before{content:"\f7c4"}.fa-simplybuilt:before{content:"\f215"}.fa-sistrix:before{content:"\f3ee"}.fa-sitemap:before{content:"\f0e8"}.fa-sith:before{content:"\f512"}.fa-skating:before{content:"\f7c5"}.fa-sketch:before{content:"\f7c6"}.fa-skiing:before{content:"\f7c9"}.fa-skiing-nordic:before{content:"\f7ca"}.fa-skull:before{content:"\f54c"}.fa-skull-crossbones:before{content:"\f714"}.fa-skyatlas:before{content:"\f216"}.fa-skype:before{content:"\f17e"}.fa-slack:before{content:"\f198"}.fa-slack-hash:before{content:"\f3ef"}.fa-slash:before{content:"\f715"}.fa-sleigh:before{content:"\f7cc"}.fa-sliders-h:before{content:"\f1de"}.fa-slideshare:before{content:"\f1e7"}.fa-smile:before{content:"\f118"}.fa-smile-beam:before{content:"\f5b8"}.fa-smile-wink:before{content:"\f4da"}.fa-smog:before{content:"\f75f"}.fa-smoking:before{content:"\f48d"}.fa-smoking-ban:before{content:"\f54d"}.fa-sms:before{content:"\f7cd"}.fa-snapchat:before{content:"\f2ab"}.fa-snapchat-ghost:before{content:"\f2ac"}.fa-snapchat-square:before{content:"\f2ad"}.fa-snowboarding:before{content:"\f7ce"}.fa-snowflake:before{content:"\f2dc"}.fa-snowman:before{content:"\f7d0"}.fa-snowplow:before{content:"\f7d2"}.fa-socks:before{content:"\f696"}.fa-solar-panel:before{content:"\f5ba"}.fa-sort:before{content:"\f0dc"}.fa-sort-alpha-down:before{content:"\f15d"}.fa-sort-alpha-down-alt:before{content:"\f881"}.fa-sort-alpha-up:before{content:"\f15e"}.fa-sort-alpha-up-alt:before{content:"\f882"}.fa-sort-amount-down:before{content:"\f160"}.fa-sort-amount-down-alt:before{content:"\f884"}.fa-sort-amount-up:before{content:"\f161"}.fa-sort-amount-up-alt:before{content:"\f885"}.fa-sort-down:before{content:"\f0dd"}.fa-sort-numeric-down:before{content:"\f162"}.fa-sort-numeric-down-alt:before{content:"\f886"}.fa-sort-numeric-up:before{content:"\f163"}.fa-sort-numeric-up-alt:before{content:"\f887"}.fa-sort-up:before{content:"\f0de"}.fa-soundcloud:before{content:"\f1be"}.fa-sourcetree:before{content:"\f7d3"}.fa-spa:before{content:"\f5bb"}.fa-space-shuttle:before{content:"\f197"}.fa-speakap:before{content:"\f3f3"}.fa-speaker-deck:before{content:"\f83c"}.fa-spell-check:before{content:"\f891"}.fa-spider:before{content:"\f717"}.fa-spinner:before{content:"\f110"}.fa-splotch:before{content:"\f5bc"}.fa-spotify:before{content:"\f1bc"}.fa-spray-can:before{content:"\f5bd"}.fa-square:before{content:"\f0c8"}.fa-square-full:before{content:"\f45c"}.fa-square-root-alt:before{content:"\f698"}.fa-squarespace:before{content:"\f5be"}.fa-stack-exchange:before{content:"\f18d"}.fa-stack-overflow:before{content:"\f16c"}.fa-stackpath:before{content:"\f842"}.fa-stamp:before{content:"\f5bf"}.fa-star:before{content:"\f005"}.fa-star-and-crescent:before{content:"\f699"}.fa-star-half:before{content:"\f089"}.fa-star-half-alt:before{content:"\f5c0"}.fa-star-of-david:before{content:"\f69a"}.fa-star-of-life:before{content:"\f621"}.fa-staylinked:before{content:"\f3f5"}.fa-steam:before{content:"\f1b6"}.fa-steam-square:before{content:"\f1b7"}.fa-steam-symbol:before{content:"\f3f6"}.fa-step-backward:before{content:"\f048"}.fa-step-forward:before{content:"\f051"}.fa-stethoscope:before{content:"\f0f1"}.fa-sticker-mule:before{content:"\f3f7"}.fa-sticky-note:before{content:"\f249"}.fa-stop:before{content:"\f04d"}.fa-stop-circle:before{content:"\f28d"}.fa-stopwatch:before{content:"\f2f2"}.fa-store:before{content:"\f54e"}.fa-store-alt:before{content:"\f54f"}.fa-strava:before{content:"\f428"}.fa-stream:before{content:"\f550"}.fa-street-view:before{content:"\f21d"}.fa-strikethrough:before{content:"\f0cc"}.fa-stripe:before{content:"\f429"}.fa-stripe-s:before{content:"\f42a"}.fa-stroopwafel:before{content:"\f551"}.fa-studiovinari:before{content:"\f3f8"}.fa-stumbleupon:before{content:"\f1a4"}.fa-stumbleupon-circle:before{content:"\f1a3"}.fa-subscript:before{content:"\f12c"}.fa-subway:before{content:"\f239"}.fa-suitcase:before{content:"\f0f2"}.fa-suitcase-rolling:before{content:"\f5c1"}.fa-sun:before{content:"\f185"}.fa-superpowers:before{content:"\f2dd"}.fa-superscript:before{content:"\f12b"}.fa-supple:before{content:"\f3f9"}.fa-surprise:before{content:"\f5c2"}.fa-suse:before{content:"\f7d6"}.fa-swatchbook:before{content:"\f5c3"}.fa-swift:before{content:"\f8e1"}.fa-swimmer:before{content:"\f5c4"}.fa-swimming-pool:before{content:"\f5c5"}.fa-symfony:before{content:"\f83d"}.fa-synagogue:before{content:"\f69b"}.fa-sync:before{content:"\f021"}.fa-sync-alt:before{content:"\f2f1"}.fa-syringe:before{content:"\f48e"}.fa-table:before{content:"\f0ce"}.fa-table-tennis:before{content:"\f45d"}.fa-tablet:before{content:"\f10a"}.fa-tablet-alt:before{content:"\f3fa"}.fa-tablets:before{content:"\f490"}.fa-tachometer-alt:before{content:"\f3fd"}.fa-tag:before{content:"\f02b"}.fa-tags:before{content:"\f02c"}.fa-tape:before{content:"\f4db"}.fa-tasks:before{content:"\f0ae"}.fa-taxi:before{content:"\f1ba"}.fa-teamspeak:before{content:"\f4f9"}.fa-teeth:before{content:"\f62e"}.fa-teeth-open:before{content:"\f62f"}.fa-telegram:before{content:"\f2c6"}.fa-telegram-plane:before{content:"\f3fe"}.fa-temperature-high:before{content:"\f769"}.fa-temperature-low:before{content:"\f76b"}.fa-tencent-weibo:before{content:"\f1d5"}.fa-tenge:before{content:"\f7d7"}.fa-terminal:before{content:"\f120"}.fa-text-height:before{content:"\f034"}.fa-text-width:before{content:"\f035"}.fa-th:before{content:"\f00a"}.fa-th-large:before{content:"\f009"}.fa-th-list:before{content:"\f00b"}.fa-the-red-yeti:before{content:"\f69d"}.fa-theater-masks:before{content:"\f630"}.fa-themeco:before{content:"\f5c6"}.fa-themeisle:before{content:"\f2b2"}.fa-thermometer:before{content:"\f491"}.fa-thermometer-empty:before{content:"\f2cb"}.fa-thermometer-full:before{content:"\f2c7"}.fa-thermometer-half:before{content:"\f2c9"}.fa-thermometer-quarter:before{content:"\f2ca"}.fa-thermometer-three-quarters:before{content:"\f2c8"}.fa-think-peaks:before{content:"\f731"}.fa-thumbs-down:before{content:"\f165"}.fa-thumbs-up:before{content:"\f164"}.fa-thumbtack:before{content:"\f08d"}.fa-ticket-alt:before{content:"\f3ff"}.fa-times:before{content:"\f00d"}.fa-times-circle:before{content:"\f057"}.fa-tint:before{content:"\f043"}.fa-tint-slash:before{content:"\f5c7"}.fa-tired:before{content:"\f5c8"}.fa-toggle-off:before{content:"\f204"}.fa-toggle-on:before{content:"\f205"}.fa-toilet:before{content:"\f7d8"}.fa-toilet-paper:before{content:"\f71e"}.fa-toolbox:before{content:"\f552"}.fa-tools:before{content:"\f7d9"}.fa-tooth:before{content:"\f5c9"}.fa-torah:before{content:"\f6a0"}.fa-torii-gate:before{content:"\f6a1"}.fa-tractor:before{content:"\f722"}.fa-trade-federation:before{content:"\f513"}.fa-trademark:before{content:"\f25c"}.fa-traffic-light:before{content:"\f637"}.fa-train:before{content:"\f238"}.fa-tram:before{content:"\f7da"}.fa-transgender:before{content:"\f224"}.fa-transgender-alt:before{content:"\f225"}.fa-trash:before{content:"\f1f8"}.fa-trash-alt:before{content:"\f2ed"}.fa-trash-restore:before{content:"\f829"}.fa-trash-restore-alt:before{content:"\f82a"}.fa-tree:before{content:"\f1bb"}.fa-trello:before{content:"\f181"}.fa-tripadvisor:before{content:"\f262"}.fa-trophy:before{content:"\f091"}.fa-truck:before{content:"\f0d1"}.fa-truck-loading:before{content:"\f4de"}.fa-truck-monster:before{content:"\f63b"}.fa-truck-moving:before{content:"\f4df"}.fa-truck-pickup:before{content:"\f63c"}.fa-tshirt:before{content:"\f553"}.fa-tty:before{content:"\f1e4"}.fa-tumblr:before{content:"\f173"}.fa-tumblr-square:before{content:"\f174"}.fa-tv:before{content:"\f26c"}.fa-twitch:before{content:"\f1e8"}.fa-twitter:before{content:"\f099"}.fa-twitter-square:before{content:"\f081"}.fa-typo3:before{content:"\f42b"}.fa-uber:before{content:"\f402"}.fa-ubuntu:before{content:"\f7df"}.fa-uikit:before{content:"\f403"}.fa-umbraco:before{content:"\f8e8"}.fa-umbrella:before{content:"\f0e9"}.fa-umbrella-beach:before{content:"\f5ca"}.fa-underline:before{content:"\f0cd"}.fa-undo:before{content:"\f0e2"}.fa-undo-alt:before{content:"\f2ea"}.fa-uniregistry:before{content:"\f404"}.fa-universal-access:before{content:"\f29a"}.fa-university:before{content:"\f19c"}.fa-unlink:before{content:"\f127"}.fa-unlock:before{content:"\f09c"}.fa-unlock-alt:before{content:"\f13e"}.fa-untappd:before{content:"\f405"}.fa-upload:before{content:"\f093"}.fa-ups:before{content:"\f7e0"}.fa-usb:before{content:"\f287"}.fa-user:before{content:"\f007"}.fa-user-alt:before{content:"\f406"}.fa-user-alt-slash:before{content:"\f4fa"}.fa-user-astronaut:before{content:"\f4fb"}.fa-user-check:before{content:"\f4fc"}.fa-user-circle:before{content:"\f2bd"}.fa-user-clock:before{content:"\f4fd"}.fa-user-cog:before{content:"\f4fe"}.fa-user-edit:before{content:"\f4ff"}.fa-user-friends:before{content:"\f500"}.fa-user-graduate:before{content:"\f501"}.fa-user-injured:before{content:"\f728"}.fa-user-lock:before{content:"\f502"}.fa-user-md:before{content:"\f0f0"}.fa-user-minus:before{content:"\f503"}.fa-user-ninja:before{content:"\f504"}.fa-user-nurse:before{content:"\f82f"}.fa-user-plus:before{content:"\f234"}.fa-user-secret:before{content:"\f21b"}.fa-user-shield:before{content:"\f505"}.fa-user-slash:before{content:"\f506"}.fa-user-tag:before{content:"\f507"}.fa-user-tie:before{content:"\f508"}.fa-user-times:before{content:"\f235"}.fa-users:before{content:"\f0c0"}.fa-users-cog:before{content:"\f509"}.fa-usps:before{content:"\f7e1"}.fa-ussunnah:before{content:"\f407"}.fa-utensil-spoon:before{content:"\f2e5"}.fa-utensils:before{content:"\f2e7"}.fa-vaadin:before{content:"\f408"}.fa-vector-square:before{content:"\f5cb"}.fa-venus:before{content:"\f221"}.fa-venus-double:before{content:"\f226"}.fa-venus-mars:before{content:"\f228"}.fa-viacoin:before{content:"\f237"}.fa-viadeo:before{content:"\f2a9"}.fa-viadeo-square:before{content:"\f2aa"}.fa-vial:before{content:"\f492"}.fa-vials:before{content:"\f493"}.fa-viber:before{content:"\f409"}.fa-video:before{content:"\f03d"}.fa-video-slash:before{content:"\f4e2"}.fa-vihara:before{content:"\f6a7"}.fa-vimeo:before{content:"\f40a"}.fa-vimeo-square:before{content:"\f194"}.fa-vimeo-v:before{content:"\f27d"}.fa-vine:before{content:"\f1ca"}.fa-vk:before{content:"\f189"}.fa-vnv:before{content:"\f40b"}.fa-voicemail:before{content:"\f897"}.fa-volleyball-ball:before{content:"\f45f"}.fa-volume-down:before{content:"\f027"}.fa-volume-mute:before{content:"\f6a9"}.fa-volume-off:before{content:"\f026"}.fa-volume-up:before{content:"\f028"}.fa-vote-yea:before{content:"\f772"}.fa-vr-cardboard:before{content:"\f729"}.fa-vuejs:before{content:"\f41f"}.fa-walking:before{content:"\f554"}.fa-wallet:before{content:"\f555"}.fa-warehouse:before{content:"\f494"}.fa-water:before{content:"\f773"}.fa-wave-square:before{content:"\f83e"}.fa-waze:before{content:"\f83f"}.fa-weebly:before{content:"\f5cc"}.fa-weibo:before{content:"\f18a"}.fa-weight:before{content:"\f496"}.fa-weight-hanging:before{content:"\f5cd"}.fa-weixin:before{content:"\f1d7"}.fa-whatsapp:before{content:"\f232"}.fa-whatsapp-square:before{content:"\f40c"}.fa-wheelchair:before{content:"\f193"}.fa-whmcs:before{content:"\f40d"}.fa-wifi:before{content:"\f1eb"}.fa-wikipedia-w:before{content:"\f266"}.fa-wind:before{content:"\f72e"}.fa-window-close:before{content:"\f410"}.fa-window-maximize:before{content:"\f2d0"}.fa-window-minimize:before{content:"\f2d1"}.fa-window-restore:before{content:"\f2d2"}.fa-windows:before{content:"\f17a"}.fa-wine-bottle:before{content:"\f72f"}.fa-wine-glass:before{content:"\f4e3"}.fa-wine-glass-alt:before{content:"\f5ce"}.fa-wix:before{content:"\f5cf"}.fa-wizards-of-the-coast:before{content:"\f730"}.fa-wolf-pack-battalion:before{content:"\f514"}.fa-won-sign:before{content:"\f159"}.fa-wordpress:before{content:"\f19a"}.fa-wordpress-simple:before{content:"\f411"}.fa-wpbeginner:before{content:"\f297"}.fa-wpexplorer:before{content:"\f2de"}.fa-wpforms:before{content:"\f298"}.fa-wpressr:before{content:"\f3e4"}.fa-wrench:before{content:"\f0ad"}.fa-x-ray:before{content:"\f497"}.fa-xbox:before{content:"\f412"}.fa-xing:before{content:"\f168"}.fa-xing-square:before{content:"\f169"}.fa-y-combinator:before{content:"\f23b"}.fa-yahoo:before{content:"\f19e"}.fa-yammer:before{content:"\f840"}.fa-yandex:before{content:"\f413"}.fa-yandex-international:before{content:"\f414"}.fa-yarn:before{content:"\f7e3"}.fa-yelp:before{content:"\f1e9"}.fa-yen-sign:before{content:"\f157"}.fa-yin-yang:before{content:"\f6ad"}.fa-yoast:before{content:"\f2b1"}.fa-youtube:before{content:"\f167"}.fa-youtube-square:before{content:"\f431"}.fa-zhihu:before{content:"\f63f"}.sr-only{border:0;clip:rect(0,0,0,0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.sr-only-focusable:active,.sr-only-focusable:focus{clip:auto;height:auto;margin:0;overflow:visible;position:static;width:auto}
\ No newline at end of file
diff --git a/apps/nps/0.29.21/web/static/css/regular.min.css b/apps/nps/0.29.21/web/static/css/regular.min.css
new file mode 100644
index 000000000..d8b4d45c3
--- /dev/null
+++ b/apps/nps/0.29.21/web/static/css/regular.min.css
@@ -0,0 +1,5 @@
+/*!
+ * Font Awesome Free 5.11.2 by @fontawesome - https://fontawesome.com
+ * License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License)
+ */
+@font-face{font-family:"Font Awesome 5 Free";font-style:normal;font-weight:400;font-display:auto;src:url(../webfonts/fa-regular-400.eot);src:url(../webfonts/fa-regular-400.eot?#iefix) format("embedded-opentype"),url(../webfonts/fa-regular-400.woff2) format("woff2"),url(../webfonts/fa-regular-400.woff) format("woff"),url(../webfonts/fa-regular-400.ttf) format("truetype"),url(../webfonts/fa-regular-400.svg#fontawesome) format("svg")}.far{font-family:"Font Awesome 5 Free";font-weight:400}
\ No newline at end of file
diff --git a/apps/nps/0.29.21/web/static/css/solid.min.css b/apps/nps/0.29.21/web/static/css/solid.min.css
new file mode 100644
index 000000000..c2c8a464e
--- /dev/null
+++ b/apps/nps/0.29.21/web/static/css/solid.min.css
@@ -0,0 +1,5 @@
+/*!
+ * Font Awesome Free 5.11.2 by @fontawesome - https://fontawesome.com
+ * License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License)
+ */
+@font-face{font-family:"Font Awesome 5 Free";font-style:normal;font-weight:900;font-display:auto;src:url(../webfonts/fa-solid-900.eot);src:url(../webfonts/fa-solid-900.eot?#iefix) format("embedded-opentype"),url(../webfonts/fa-solid-900.woff2) format("woff2"),url(../webfonts/fa-solid-900.woff) format("woff"),url(../webfonts/fa-solid-900.ttf) format("truetype"),url(../webfonts/fa-solid-900.svg#fontawesome) format("svg")}.fa,.fas{font-family:"Font Awesome 5 Free";font-weight:900}
\ No newline at end of file
diff --git a/apps/nps/0.29.21/web/static/css/style.css b/apps/nps/0.29.21/web/static/css/style.css
new file mode 100755
index 000000000..5b3b9074c
--- /dev/null
+++ b/apps/nps/0.29.21/web/static/css/style.css
@@ -0,0 +1,12489 @@
+/*@import url("https://fonts.googleapis.com/css?family=Open+Sans:300,400,600,700");*/
+/*@import url("https://fonts.googleapis.com/css?family=Roboto:400,300,500,700");*/
+/*
+ *
+ * INSPINIA - Responsive Admin Theme
+ * version 2.9.3
+ *
+*/
+@font-face {
+ font-family: 'Glyphicons Halflings';
+ src: url('../webfonts/glyphicons-halflings-regular.eot');
+ src: url('../webfonts/glyphicons-halflings-regular.eot?#iefix') format('embedded-opentype'), url('../webfonts/glyphicons-halflings-regular.woff2') format('woff2'), url('../webfonts/glyphicons-halflings-regular.woff') format('woff'), url('../webfonts/glyphicons-halflings-regular.ttf') format('truetype'), url('../webfonts/glyphicons-halflings-regular.svg') format('svg');
+}
+
+@font-face {
+ font-family: 'SourceCodePro';
+ src: url('../webfonts/SourceCodePro.otf') format('opentype');
+}
+
+:root {
+ --text: #5e5e5e;
+ --color: #000000;
+ --bg: white;
+ --bg-mid: #f0f0f0;
+ --bg-title: #ffffff;
+ --base-color: #dcdde1;
+ --border-color: #e8e8e8;
+ --active-color: #858a99;
+ --scrollbar-hover-color: #535d6d;
+ --nav-text-color: #2c2c2c;
+ --nav-hover-color: #535d6d;
+ --icon-saturate: 0.8;
+ --icon-brightness: 0.8;
+}
+
+html[theme="dark-mode"] {
+ --text: #dddddd;
+ --color: #ffffff;
+ --bg: #242424;
+ --bg-mid: #2c2c2c;
+ --bg-title: #393939;
+ --base-color: #333333;
+ --border-color: #4b4b4b;
+ --active-color: #18b090;
+ --scrollbar-hover-color: #1dd3ad;
+ --nav-text-color: #c6c6c6;
+ --nav-hover-color: #0C5848;
+ --icon-saturate: 1.0;
+ --icon-brightness: 1.0;
+}
+
+html {
+ transition: color 300ms, background-color 300ms;
+}
+
+.glyphicon {
+ position: relative;
+ top: 1px;
+ display: inline-block;
+ font-family: 'Glyphicons Halflings';
+ font-style: normal;
+ font-weight: normal;
+ line-height: 1;
+ -webkit-font-smoothing: antialiased;
+ -moz-osx-font-smoothing: grayscale;
+}
+
+input[type="datetime-local"] {
+ position: relative;
+ cursor: pointer;
+}
+
+input[type="radio"] {
+ border-color: var(--border-color);
+}
+
+input[type="radio"]:checked {
+ border-color: var(--border-color);
+ background-color: var(--active-color);
+}
+
+input[type="radio"]:focus {
+ box-shadow: 0 0 0 0.2rem rgba(96, 112, 224, 0.25);
+}
+
+input[type="datetime-local"]::-webkit-calendar-picker-indicator {
+ position: absolute;
+ top: 0;
+ right: 0;
+ bottom: 0;
+ left: 0;
+ width: 100%;
+ height: 100%;
+ opacity: 0;
+ filter: invert(1);
+}
+
+.glyphicon-asterisk:before {
+ content: "\002a";
+}
+
+.glyphicon-plus:before {
+ content: "\002b";
+}
+
+.glyphicon-euro:before,
+.glyphicon-eur:before {
+ content: "\20ac";
+}
+
+.glyphicon-minus:before {
+ content: "\2212";
+}
+
+.glyphicon-cloud:before {
+ content: "\2601";
+}
+
+.glyphicon-envelope:before {
+ content: "\2709";
+}
+
+.glyphicon-pencil:before {
+ content: "\270f";
+}
+
+.glyphicon-glass:before {
+ content: "\e001";
+}
+
+.glyphicon-music:before {
+ content: "\e002";
+}
+
+.glyphicon-search:before {
+ content: "\e003";
+}
+
+.glyphicon-heart:before {
+ content: "\e005";
+}
+
+.glyphicon-star:before {
+ content: "\e006";
+}
+
+.glyphicon-star-empty:before {
+ content: "\e007";
+}
+
+.glyphicon-user:before {
+ content: "\e008";
+}
+
+.glyphicon-film:before {
+ content: "\e009";
+}
+
+.glyphicon-th-large:before {
+ content: "\e010";
+}
+
+.glyphicon-th:before {
+ content: "\e011";
+}
+
+.glyphicon-th-list:before {
+ content: "\e012";
+}
+
+.glyphicon-ok:before {
+ content: "\e013";
+}
+
+.glyphicon-remove:before {
+ content: "\e014";
+}
+
+.glyphicon-zoom-in:before {
+ content: "\e015";
+}
+
+.glyphicon-zoom-out:before {
+ content: "\e016";
+}
+
+.glyphicon-off:before {
+ content: "\e017";
+}
+
+.glyphicon-signal:before {
+ content: "\e018";
+}
+
+.glyphicon-cog:before {
+ content: "\e019";
+}
+
+.glyphicon-trash:before {
+ content: "\e020";
+}
+
+.glyphicon-home:before {
+ content: "\e021";
+}
+
+.glyphicon-file:before {
+ content: "\e022";
+}
+
+.glyphicon-time:before {
+ content: "\e023";
+}
+
+.glyphicon-road:before {
+ content: "\e024";
+}
+
+.glyphicon-download-alt:before {
+ content: "\e025";
+}
+
+.glyphicon-download:before {
+ content: "\e026";
+}
+
+.glyphicon-upload:before {
+ content: "\e027";
+}
+
+.glyphicon-inbox:before {
+ content: "\e028";
+}
+
+.glyphicon-play-circle:before {
+ content: "\e029";
+}
+
+.glyphicon-repeat:before {
+ content: "\e030";
+}
+
+.glyphicon-refresh:before {
+ content: "\e031";
+}
+
+.glyphicon-list-alt:before {
+ content: "\e032";
+}
+
+.glyphicon-lock:before {
+ content: "\e033";
+}
+
+.glyphicon-flag:before {
+ content: "\e034";
+}
+
+.glyphicon-headphones:before {
+ content: "\e035";
+}
+
+.glyphicon-volume-off:before {
+ content: "\e036";
+}
+
+.glyphicon-volume-down:before {
+ content: "\e037";
+}
+
+.glyphicon-volume-up:before {
+ content: "\e038";
+}
+
+.glyphicon-qrcode:before {
+ content: "\e039";
+}
+
+.glyphicon-barcode:before {
+ content: "\e040";
+}
+
+.glyphicon-tag:before {
+ content: "\e041";
+}
+
+.glyphicon-tags:before {
+ content: "\e042";
+}
+
+.glyphicon-book:before {
+ content: "\e043";
+}
+
+.glyphicon-bookmark:before {
+ content: "\e044";
+}
+
+.glyphicon-print:before {
+ content: "\e045";
+}
+
+.glyphicon-camera:before {
+ content: "\e046";
+}
+
+.glyphicon-font:before {
+ content: "\e047";
+}
+
+.glyphicon-bold:before {
+ content: "\e048";
+}
+
+.glyphicon-italic:before {
+ content: "\e049";
+}
+
+.glyphicon-text-height:before {
+ content: "\e050";
+}
+
+.glyphicon-text-width:before {
+ content: "\e051";
+}
+
+.glyphicon-align-left:before {
+ content: "\e052";
+}
+
+.glyphicon-align-center:before {
+ content: "\e053";
+}
+
+.glyphicon-align-right:before {
+ content: "\e054";
+}
+
+.glyphicon-align-justify:before {
+ content: "\e055";
+}
+
+.glyphicon-list:before {
+ content: "\e056";
+}
+
+.glyphicon-indent-left:before {
+ content: "\e057";
+}
+
+.glyphicon-indent-right:before {
+ content: "\e058";
+}
+
+.glyphicon-facetime-video:before {
+ content: "\e059";
+}
+
+.glyphicon-picture:before {
+ content: "\e060";
+}
+
+.glyphicon-map-marker:before {
+ content: "\e062";
+}
+
+.glyphicon-adjust:before {
+ content: "\e063";
+}
+
+.glyphicon-tint:before {
+ content: "\e064";
+}
+
+.glyphicon-edit:before {
+ content: "\e065";
+}
+
+.glyphicon-share:before {
+ content: "\e066";
+}
+
+.glyphicon-check:before {
+ content: "\e067";
+}
+
+.glyphicon-move:before {
+ content: "\e068";
+}
+
+.glyphicon-step-backward:before {
+ content: "\e069";
+}
+
+.glyphicon-fast-backward:before {
+ content: "\e070";
+}
+
+.glyphicon-backward:before {
+ content: "\e071";
+}
+
+.glyphicon-play:before {
+ content: "\e072";
+}
+
+.glyphicon-pause:before {
+ content: "\e073";
+}
+
+.glyphicon-stop:before {
+ content: "\e074";
+}
+
+.glyphicon-forward:before {
+ content: "\e075";
+}
+
+.glyphicon-fast-forward:before {
+ content: "\e076";
+}
+
+.glyphicon-step-forward:before {
+ content: "\e077";
+}
+
+.glyphicon-eject:before {
+ content: "\e078";
+}
+
+.glyphicon-chevron-left:before {
+ content: "\e079";
+}
+
+.glyphicon-chevron-right:before {
+ content: "\e080";
+}
+
+.glyphicon-plus-sign:before {
+ content: "\e081";
+}
+
+.glyphicon-minus-sign:before {
+ content: "\e082";
+}
+
+.glyphicon-remove-sign:before {
+ content: "\e083";
+}
+
+.glyphicon-ok-sign:before {
+ content: "\e084";
+}
+
+.glyphicon-question-sign:before {
+ content: "\e085";
+}
+
+.glyphicon-info-sign:before {
+ content: "\e086";
+}
+
+.glyphicon-screenshot:before {
+ content: "\e087";
+}
+
+.glyphicon-remove-circle:before {
+ content: "\e088";
+}
+
+.glyphicon-ok-circle:before {
+ content: "\e089";
+}
+
+.glyphicon-ban-circle:before {
+ content: "\e090";
+}
+
+.glyphicon-arrow-left:before {
+ content: "\e091";
+}
+
+.glyphicon-arrow-right:before {
+ content: "\e092";
+}
+
+.glyphicon-arrow-up:before {
+ content: "\e093";
+}
+
+.glyphicon-arrow-down:before {
+ content: "\e094";
+}
+
+.glyphicon-share-alt:before {
+ content: "\e095";
+}
+
+.glyphicon-resize-full:before {
+ content: "\e096";
+}
+
+.glyphicon-resize-small:before {
+ content: "\e097";
+}
+
+.glyphicon-exclamation-sign:before {
+ content: "\e101";
+}
+
+.glyphicon-gift:before {
+ content: "\e102";
+}
+
+.glyphicon-leaf:before {
+ content: "\e103";
+}
+
+.glyphicon-fire:before {
+ content: "\e104";
+}
+
+.glyphicon-eye-open:before {
+ content: "\e105";
+}
+
+.glyphicon-eye-close:before {
+ content: "\e106";
+}
+
+.glyphicon-warning-sign:before {
+ content: "\e107";
+}
+
+.glyphicon-plane:before {
+ content: "\e108";
+}
+
+.glyphicon-calendar:before {
+ content: "\e109";
+}
+
+.glyphicon-random:before {
+ content: "\e110";
+}
+
+.glyphicon-comment:before {
+ content: "\e111";
+}
+
+.glyphicon-magnet:before {
+ content: "\e112";
+}
+
+.glyphicon-chevron-up:before {
+ content: "\e113";
+}
+
+.glyphicon-chevron-down:before {
+ content: "\e114";
+}
+
+.glyphicon-retweet:before {
+ content: "\e115";
+}
+
+.glyphicon-shopping-cart:before {
+ content: "\e116";
+}
+
+.glyphicon-folder-close:before {
+ content: "\e117";
+}
+
+.glyphicon-folder-open:before {
+ content: "\e118";
+}
+
+.glyphicon-resize-vertical:before {
+ content: "\e119";
+}
+
+.glyphicon-resize-horizontal:before {
+ content: "\e120";
+}
+
+.glyphicon-hdd:before {
+ content: "\e121";
+}
+
+.glyphicon-bullhorn:before {
+ content: "\e122";
+}
+
+.glyphicon-bell:before {
+ content: "\e123";
+}
+
+.glyphicon-certificate:before {
+ content: "\e124";
+}
+
+.glyphicon-thumbs-up:before {
+ content: "\e125";
+}
+
+.glyphicon-thumbs-down:before {
+ content: "\e126";
+}
+
+.glyphicon-hand-right:before {
+ content: "\e127";
+}
+
+.glyphicon-hand-left:before {
+ content: "\e128";
+}
+
+.glyphicon-hand-up:before {
+ content: "\e129";
+}
+
+.glyphicon-hand-down:before {
+ content: "\e130";
+}
+
+.glyphicon-circle-arrow-right:before {
+ content: "\e131";
+}
+
+.glyphicon-circle-arrow-left:before {
+ content: "\e132";
+}
+
+.glyphicon-circle-arrow-up:before {
+ content: "\e133";
+}
+
+.glyphicon-circle-arrow-down:before {
+ content: "\e134";
+}
+
+.glyphicon-globe:before {
+ content: "\e135";
+}
+
+.glyphicon-wrench:before {
+ content: "\e136";
+}
+
+.glyphicon-tasks:before {
+ content: "\e137";
+}
+
+.glyphicon-filter:before {
+ content: "\e138";
+}
+
+.glyphicon-briefcase:before {
+ content: "\e139";
+}
+
+.glyphicon-fullscreen:before {
+ content: "\e140";
+}
+
+.glyphicon-dashboard:before {
+ content: "\e141";
+}
+
+.glyphicon-paperclip:before {
+ content: "\e142";
+}
+
+.glyphicon-heart-empty:before {
+ content: "\e143";
+}
+
+.glyphicon-link:before {
+ content: "\e144";
+}
+
+.glyphicon-phone:before {
+ content: "\e145";
+}
+
+.glyphicon-pushpin:before {
+ content: "\e146";
+}
+
+.glyphicon-usd:before {
+ content: "\e148";
+}
+
+.glyphicon-gbp:before {
+ content: "\e149";
+}
+
+.glyphicon-sort:before {
+ content: "\e150";
+}
+
+.glyphicon-sort-by-alphabet:before {
+ content: "\e151";
+}
+
+.glyphicon-sort-by-alphabet-alt:before {
+ content: "\e152";
+}
+
+.glyphicon-sort-by-order:before {
+ content: "\e153";
+}
+
+.glyphicon-sort-by-order-alt:before {
+ content: "\e154";
+}
+
+.glyphicon-sort-by-attributes:before {
+ content: "\e155";
+}
+
+.glyphicon-sort-by-attributes-alt:before {
+ content: "\e156";
+}
+
+.glyphicon-unchecked:before {
+ content: "\e157";
+}
+
+.glyphicon-expand:before {
+ content: "\e158";
+}
+
+.glyphicon-collapse-down:before {
+ content: "\e159";
+}
+
+.glyphicon-collapse-up:before {
+ content: "\e160";
+}
+
+.glyphicon-log-in:before {
+ content: "\e161";
+}
+
+.glyphicon-flash:before {
+ content: "\e162";
+}
+
+.glyphicon-log-out:before {
+ content: "\e163";
+}
+
+.glyphicon-new-window:before {
+ content: "\e164";
+}
+
+.glyphicon-record:before {
+ content: "\e165";
+}
+
+.glyphicon-save:before {
+ content: "\e166";
+}
+
+.glyphicon-open:before {
+ content: "\e167";
+}
+
+.glyphicon-saved:before {
+ content: "\e168";
+}
+
+.glyphicon-import:before {
+ content: "\e169";
+}
+
+.glyphicon-export:before {
+ content: "\e170";
+}
+
+.glyphicon-send:before {
+ content: "\e171";
+}
+
+.glyphicon-floppy-disk:before {
+ content: "\e172";
+}
+
+.glyphicon-floppy-saved:before {
+ content: "\e173";
+}
+
+.glyphicon-floppy-remove:before {
+ content: "\e174";
+}
+
+.glyphicon-floppy-save:before {
+ content: "\e175";
+}
+
+.glyphicon-floppy-open:before {
+ content: "\e176";
+}
+
+.glyphicon-credit-card:before {
+ content: "\e177";
+}
+
+.glyphicon-transfer:before {
+ content: "\e178";
+}
+
+.glyphicon-cutlery:before {
+ content: "\e179";
+}
+
+.glyphicon-header:before {
+ content: "\e180";
+}
+
+.glyphicon-compressed:before {
+ content: "\e181";
+}
+
+.glyphicon-earphone:before {
+ content: "\e182";
+}
+
+.glyphicon-phone-alt:before {
+ content: "\e183";
+}
+
+.glyphicon-tower:before {
+ content: "\e184";
+}
+
+.glyphicon-stats:before {
+ content: "\e185";
+}
+
+.glyphicon-sd-video:before {
+ content: "\e186";
+}
+
+.glyphicon-hd-video:before {
+ content: "\e187";
+}
+
+.glyphicon-subtitles:before {
+ content: "\e188";
+}
+
+.glyphicon-sound-stereo:before {
+ content: "\e189";
+}
+
+.glyphicon-sound-dolby:before {
+ content: "\e190";
+}
+
+.glyphicon-sound-5-1:before {
+ content: "\e191";
+}
+
+.glyphicon-sound-6-1:before {
+ content: "\e192";
+}
+
+.glyphicon-sound-7-1:before {
+ content: "\e193";
+}
+
+.glyphicon-copyright-mark:before {
+ content: "\e194";
+}
+
+.glyphicon-registration-mark:before {
+ content: "\e195";
+}
+
+.glyphicon-cloud-download:before {
+ content: "\e197";
+}
+
+.glyphicon-cloud-upload:before {
+ content: "\e198";
+}
+
+.glyphicon-tree-conifer:before {
+ content: "\e199";
+}
+
+.glyphicon-tree-deciduous:before {
+ content: "\e200";
+}
+
+.glyphicon-cd:before {
+ content: "\e201";
+}
+
+.glyphicon-save-file:before {
+ content: "\e202";
+}
+
+.glyphicon-open-file:before {
+ content: "\e203";
+}
+
+.glyphicon-level-up:before {
+ content: "\e204";
+}
+
+.glyphicon-copy:before {
+ content: "\e205";
+}
+
+.glyphicon-paste:before {
+ content: "\e206";
+}
+
+.glyphicon-alert:before {
+ content: "\e209";
+}
+
+.glyphicon-equalizer:before {
+ content: "\e210";
+}
+
+.glyphicon-king:before {
+ content: "\e211";
+}
+
+.glyphicon-queen:before {
+ content: "\e212";
+}
+
+.glyphicon-pawn:before {
+ content: "\e213";
+}
+
+.glyphicon-bishop:before {
+ content: "\e214";
+}
+
+.glyphicon-knight:before {
+ content: "\e215";
+}
+
+.glyphicon-baby-formula:before {
+ content: "\e216";
+}
+
+.glyphicon-tent:before {
+ content: "\26fa";
+}
+
+.glyphicon-blackboard:before {
+ content: "\e218";
+}
+
+.glyphicon-bed:before {
+ content: "\e219";
+}
+
+.glyphicon-apple:before {
+ content: "\f8ff";
+}
+
+.glyphicon-erase:before {
+ content: "\e221";
+}
+
+.glyphicon-hourglass:before {
+ content: "\231b";
+}
+
+.glyphicon-lamp:before {
+ content: "\e223";
+}
+
+.glyphicon-duplicate:before {
+ content: "\e224";
+}
+
+.glyphicon-piggy-bank:before {
+ content: "\e225";
+}
+
+.glyphicon-scissors:before {
+ content: "\e226";
+}
+
+.glyphicon-bitcoin:before {
+ content: "\e227";
+}
+
+.glyphicon-btc:before {
+ content: "\e227";
+}
+
+.glyphicon-xbt:before {
+ content: "\e227";
+}
+
+.glyphicon-yen:before {
+ content: "\00a5";
+}
+
+.glyphicon-jpy:before {
+ content: "\00a5";
+}
+
+.glyphicon-ruble:before {
+ content: "\20bd";
+}
+
+.glyphicon-rub:before {
+ content: "\20bd";
+}
+
+.glyphicon-scale:before {
+ content: "\e230";
+}
+
+.glyphicon-ice-lolly:before {
+ content: "\e231";
+}
+
+.glyphicon-ice-lolly-tasted:before {
+ content: "\e232";
+}
+
+.glyphicon-education:before {
+ content: "\e233";
+}
+
+.glyphicon-option-horizontal:before {
+ content: "\e234";
+}
+
+.glyphicon-option-vertical:before {
+ content: "\e235";
+}
+
+.glyphicon-menu-hamburger:before {
+ content: "\e236";
+}
+
+.glyphicon-modal-window:before {
+ content: "\e237";
+}
+
+.glyphicon-oil:before {
+ content: "\e238";
+}
+
+.glyphicon-grain:before {
+ content: "\e239";
+}
+
+.glyphicon-sunglasses:before {
+ content: "\e240";
+}
+
+.glyphicon-text-size:before {
+ content: "\e241";
+}
+
+.glyphicon-text-color:before {
+ content: "\e242";
+}
+
+.glyphicon-text-background:before {
+ content: "\e243";
+}
+
+.glyphicon-object-align-top:before {
+ content: "\e244";
+}
+
+.glyphicon-object-align-bottom:before {
+ content: "\e245";
+}
+
+.glyphicon-object-align-horizontal:before {
+ content: "\e246";
+}
+
+.glyphicon-object-align-left:before {
+ content: "\e247";
+}
+
+.glyphicon-object-align-vertical:before {
+ content: "\e248";
+}
+
+.glyphicon-object-align-right:before {
+ content: "\e249";
+}
+
+.glyphicon-triangle-right:before {
+ content: "\e250";
+}
+
+.glyphicon-triangle-left:before {
+ content: "\e251";
+}
+
+.glyphicon-triangle-bottom:before {
+ content: "\e252";
+}
+
+.glyphicon-triangle-top:before {
+ content: "\e253";
+}
+
+.glyphicon-console:before {
+ content: "\e254";
+}
+
+.glyphicon-superscript:before {
+ content: "\e255";
+}
+
+.glyphicon-subscript:before {
+ content: "\e256";
+}
+
+.glyphicon-menu-left:before {
+ content: "\e257";
+}
+
+.glyphicon-menu-right:before {
+ content: "\e258";
+}
+
+.glyphicon-menu-down:before {
+ content: "\e259";
+}
+
+.glyphicon-menu-up:before {
+ content: "\e260";
+}
+
+h1,
+h2,
+h3,
+h4,
+h5,
+h6 {
+ font-weight: 100;
+}
+
+::-webkit-scrollbar {
+ width: 8px;
+ height: 8px;
+}
+
+::-webkit-scrollbar-track {
+ background: var(--border-color);
+}
+
+::-webkit-scrollbar-thumb {
+ background: var(--active-color);
+ border-radius: 4px;
+}
+
+::-webkit-scrollbar-thumb:hover {
+ background: var(--scrollbar-hover-color);
+}
+
+.h1,
+.h2,
+.h3,
+h1,
+h2,
+h3 {
+ margin-top: 20px;
+ margin-bottom: 10px;
+}
+
+h1 {
+ font-size: 30px;
+}
+
+h2 {
+ font-size: 24px;
+}
+
+h3 {
+ font-size: 16px;
+}
+
+h4 {
+ font-size: 14px;
+}
+
+h5 {
+ font-size: 12px;
+}
+
+h6 {
+ font-size: 10px;
+}
+
+h3,
+h4,
+h5 {
+ margin-top: 5px;
+ font-weight: 600;
+}
+
+.nav > li > a {
+ display: flex;
+ align-items: center;
+ color: var(--nav-text-color);
+ font-weight: 600;
+ padding: 14px 20px 14px 25px;
+ display: block;
+}
+
+.nav > li > a .nav-label {
+ margin-left: 8px;
+}
+
+.nav.metismenu > li {
+ display: block;
+ width: 100%;
+ position: relative;
+}
+
+.nav.metismenu .dropdown-menu > li > a {
+ padding: 3px 20px;
+ display: block;
+}
+
+.nav.navbar-right > li > a {
+ color: #999999;
+}
+
+.nav > li.active > a, .nav > li.active > a:hover, .nav > li.active > a:focus {
+ color: #ffffff;
+ background-color: var(--active-color);
+ border-radius: 8px;
+}
+
+.nav > li.active > a i {
+ color: #ffffff !important;
+}
+
+.navbar-default .nav > li > a:hover,
+.navbar-default .nav > li > a:focus {
+ background-color: var(--nav-hover-color);
+ color: white;
+ border-radius: 8px;
+ opacity: 0.9;
+}
+
+.nav .open > a,
+.nav .open > a:hover,
+.nav .open > a:focus {
+ background: #fff;
+}
+
+.nav.navbar-top-links > li > a:hover,
+.nav.navbar-top-links > li > a:focus {
+ background-color: transparent;
+}
+
+.nav > li > a i {
+ margin-right: 6px;
+ font-size: 16px;
+ filter: saturate(var(--icon-saturate)) brightness(var(--icon-brightness));
+ transition: filter .2s;
+}
+
+.nav > li > a .fa-home {
+ color: #50b050 !important;
+}
+
+.nav > li > a .fa-cog {
+ color: #2098f0 !important;
+}
+
+.nav > li > a .fa-chart-bar {
+ color: #ff9900 !important;
+}
+
+.nav > li > a .fa-users {
+ color: #a028b0 !important;
+}
+
+.nav > li > a .fa-server {
+ color: #608088 !important;
+}
+
+.nav > li > a .fa-file {
+ color: #785848 !important;
+}
+
+.nav > li > a .fa-clock {
+ color: #009888 !important;
+}
+
+.nav > li > a .fa-lock {
+ color: #f04038 !important;
+}
+
+.nav > li > a .fa-flag {
+ color: #e82060 !important;
+}
+
+.nav > li > a .fa-download {
+ color: #4050b8 !important;
+}
+
+.nav > li > a .fa-tachometer-alt {
+ color: #00c0d0 !important;
+}
+
+.nav > li > a .fa-desktop {
+ color: #88c048 !important;
+}
+
+.nav > li > a .fa-globe {
+ color: #4050b8 !important;
+}
+
+.nav > li > a .fa-retweet {
+ color: #ff5820 !important;
+}
+
+.nav > li > a .fa-random {
+ color: #a028b0 !important;
+}
+
+.nav > li > a .fa-layer-group {
+ color: #785848 !important;
+}
+
+.nav > li > a .fa-low-vision {
+ color: #608088 !important;
+}
+
+.nav > li > a .fa-exchange-alt {
+ color: #ff9900 !important;
+}
+
+.nav > li > a .fa-briefcase {
+ color: #009888 !important;
+}
+
+.nav > li > a .fa-lightbulb {
+ color: #ffc008 !important;
+}
+
+.navbar {
+ border: 0;
+}
+
+.navbar-default {
+ background-color: transparent;
+ border-color: var(--base-color);
+}
+
+.navbar-top-links li {
+ display: inline-block;
+ align-self: center;
+}
+
+.body-small .navbar-top-links li:last-child {
+ margin-right: 0;
+}
+
+.navbar-top-links li a {
+ padding: 20px 10px;
+ min-height: 50px;
+}
+
+.dropdown-menu {
+ border: medium none;
+ border-radius: 3px;
+ box-shadow: 0 0 3px rgba(88, 96, 120, 0.7);
+ display: none;
+ float: left;
+ font-size: 12px;
+ left: 0;
+ list-style: none outside none;
+ padding: 0;
+ position: absolute;
+ text-shadow: none;
+ top: 100%;
+ z-index: 1000;
+}
+
+.dropdown-menu > li > a {
+ border-radius: 3px;
+ color: inherit;
+ line-height: 25px;
+ margin: 4px;
+ text-align: left;
+ font-weight: normal;
+ display: block;
+ padding: 3px 20px;
+}
+
+.dropdown-menu > li > a:focus,
+.dropdown-menu > li > a:hover {
+ color: #282828;
+ text-decoration: none;
+ background-color: #f8f8f8;
+}
+
+.dropdown-menu > .active > a,
+.dropdown-menu > .active > a:focus,
+.dropdown-menu > .active > a:hover {
+ color: #fff;
+ text-decoration: none;
+ background-color: #18b090;
+ outline: 0;
+}
+
+.dropdown-menu > li > a.font-bold {
+ font-weight: 600;
+}
+
+.navbar-top-links .dropdown-menu li {
+ display: block;
+}
+
+.navbar-top-links .dropdown-menu li:last-child {
+ margin-right: 0;
+}
+
+.navbar-top-links .dropdown-menu li a {
+ padding: 3px 20px;
+ min-height: 0;
+}
+
+.navbar-top-links .dropdown-menu li a div {
+ white-space: normal;
+}
+
+.navbar-top-links .dropdown-messages,
+.navbar-top-links .dropdown-tasks,
+.navbar-top-links .dropdown-alerts {
+ width: 310px;
+ min-width: 0;
+}
+
+.navbar-top-links .dropdown-messages {
+ margin-left: 5px;
+}
+
+.navbar-top-links .dropdown-tasks {
+ margin-left: -59px;
+}
+
+.navbar-top-links .dropdown-alerts {
+ margin-left: -123px;
+}
+
+.navbar-top-links .dropdown-user {
+ right: 0;
+ left: auto;
+}
+
+.dropdown-messages,
+.dropdown-alerts {
+ padding: 10px 10px 10px 10px;
+}
+
+.dropdown-messages li a,
+.dropdown-alerts li a {
+ font-size: 12px;
+}
+
+.dropdown-messages li em,
+.dropdown-alerts li em {
+ font-size: 10px;
+}
+
+.nav.navbar-top-links .dropdown-alerts a {
+ font-size: 12px;
+}
+
+.nav-header {
+ padding: 20px 15px;
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ flex-direction: row;
+ gap: 10px;
+ background-color: var(--base-color);
+}
+
+/*.caret {
+ display: inline-block;
+ width: 0;
+ height: 0;
+ margin-left: 2px;
+ vertical-align: middle;
+ border-top: 4px dashed;
+ border-right: 4px solid transparent;
+ border-left: 4px solid transparent;
+}*/
+.profile-element {
+ display: flex;
+ align-items: center;
+ gap: 10px;
+}
+
+.profile-element .dropdown-toggle::after {
+ display: none;
+}
+
+.profile-element span {
+ font-size: 14px;
+}
+
+.profile-element .fa-user-cog,
+.profile-element .fa-user {
+ font-size: 24px;
+}
+
+.pace-done .nav-header {
+ transition: all 0.4s;
+}
+
+ul.nav-second-level {
+ background: #f8f8ff;
+}
+
+.nav > li.active {
+ background: var(--active-color);
+ border-radius: 8px;
+}
+
+.nav.nav-second-level > li.active {
+ border: none;
+ background-color: #f8f8ff;
+}
+
+.nav.nav-second-level > li.active > a {
+ color: var(--active-color);
+}
+
+.nav.nav-second-level.collapse[style] {
+ height: auto !important;
+}
+
+.nav-header a {
+ color: #ffffff;
+}
+
+.nav-header .text-muted {
+ color: var(--text);
+}
+
+.minimalize-styl-2 {
+ padding: 4px 12px;
+ margin: 14px 5px 5px 20px;
+ font-size: 14px;
+ float: left;
+}
+
+.navbar-form-custom {
+ float: left;
+ height: 50px;
+ padding: 0;
+ width: 200px;
+ display: block;
+}
+
+.navbar-form-custom .form-group {
+ margin-bottom: 0;
+}
+
+.nav.navbar-top-links a {
+ font-size: 14px;
+}
+
+.navbar-form-custom .form-control {
+ background: none repeat scroll 0 0 rgba(0, 0, 0, 0);
+ border: medium none;
+ font-size: 14px;
+ height: 60px;
+ margin: 0;
+ z-index: 2000;
+}
+
+/*.nav.navbar-top-links .dropdown-toggle::after {
+ display: none;
+}
+*/
+.navbar.navbar-static-top {
+ padding: 0;
+ width: 100%;
+ align-items: inherit;
+}
+
+.navbar-static-top .dropdown-menu {
+ right: 0;
+ left: auto;
+}
+
+.count-info .label {
+ line-height: 12px;
+ padding: 2px 5px;
+ position: absolute;
+ right: 6px;
+ top: 12px;
+}
+
+.arrow {
+ float: right;
+}
+
+.fa.arrow:before {
+ content: "\f104";
+}
+
+.active > a > .fa.arrow:before {
+ content: "\f107";
+}
+
+.nav-second-level li,
+.nav-third-level li {
+ border-bottom: none !important;
+}
+
+.nav.nav-third-level > li.active {
+ border: none;
+}
+
+.nav-second-level li a {
+ padding: 7px 10px 7px 10px;
+ padding-left: 52px;
+ color: var(--text);
+}
+
+.nav-second-level li a:hover {
+ background-color: #cccccc;
+ color: #202020;
+}
+
+.fixed-sidebar.mini-navbar .nav-second-level.collapsing li a,
+.nav-second-level.collapsing li a {
+ min-width: 220px;
+}
+
+.body-small .nav-second-level.collapsing li a,
+.mini-navbar .nav-second-level.collapsing li a {
+ min-width: 140px;
+}
+
+.nav-third-level li a,
+.fixed-sidebar.mini-navbar .nav-second-level li .nav-third-level li a {
+ padding-left: 62px;
+}
+
+.nav-second-level li:last-child {
+ padding-bottom: 10px;
+}
+
+body:not(.fixed-sidebar):not(.canvas-menu).mini-navbar .nav li:hover > .nav-second-level,
+.mini-navbar .nav li:focus > .nav-second-level {
+ display: block;
+ border-radius: 0 2px 2px 0;
+ min-width: 160px;
+ height: auto;
+}
+
+body.mini-navbar .navbar-default .nav > li > .nav-second-level li a {
+ font-size: 12px;
+ border-radius: 3px;
+}
+
+.fixed-nav .slimScrollDiv #side-menu {
+ padding-bottom: 60px;
+}
+
+.mini-navbar .nav-second-level li a {
+ padding: 10px 10px 10px 15px;
+}
+
+.mini-navbar .nav .nav-second-level {
+ position: absolute;
+ left: 70px;
+ top: 0;
+ background-color: var(--base-color);
+ padding: 10px 10px 10px 10px;
+ font-size: 12px;
+}
+
+.canvas-menu.mini-navbar .nav-second-level {
+ background: #283848;
+}
+
+.mini-navbar li.active .nav-second-level {
+ left: 65px;
+}
+
+.navbar-default .special_link a {
+ background: #18b090;
+ color: white;
+}
+
+.navbar-default .special_link a:hover {
+ background: #189880 !important;
+ color: white;
+}
+
+.navbar-default .special_link a span.label {
+ background: #fff;
+ color: #18b090;
+}
+
+.navbar-default .landing_link a {
+ background: #20c0a0;
+ color: white;
+}
+
+.navbar-default .landing_link a:hover {
+ background: #18b090 !important;
+ color: white;
+}
+
+.navbar-default .landing_link a span.label {
+ background: #fff;
+ color: #20c0a0;
+}
+
+.logo-element {
+ text-align: center;
+ font-size: 18px;
+ font-weight: 600;
+ color: white;
+ display: none;
+ padding: 18px 0;
+}
+
+.navbar-static-side {
+ transition: width 0s;
+ position: relative;
+}
+
+.footer {
+ transition: margin 0s;
+}
+
+@media (max-height: 600px) {
+ .footer {
+ margin-top: auto;
+ bottom: auto !important;
+ left: auto !important;
+ width: 100%;
+ position: relative;
+ z-index: -1;
+ }
+}
+
+.pace-done .navbar-static-side,
+.pace-done .nav-header,
+.pace-done li.active,
+.pace-done #page-wrapper,
+.pace-done .footer {
+ -webkit-transition: all 0.4s;
+ -moz-transition: all 0.4s;
+ -o-transition: all 0.4s;
+ transition: all 0.4s;
+}
+
+.navbar-fixed-top {
+ background: #ffffff;
+ transition-duration: 0.4s;
+ border-bottom: 1px solid transparent !important;
+ z-index: 2030;
+ position: fixed;
+ right: 0;
+ left: 0;
+ padding: 0;
+ top: 0;
+}
+
+.navbar-fixed-top .navbar-form-custom .form-control {
+ height: 50px;
+}
+
+.navbar-fixed-top,
+.navbar-static-top {
+ background: var(--bg-mid);
+}
+
+.fixed-nav #wrapper {
+ margin-top: 0;
+}
+
+.nav-tabs > li.active > a,
+.nav-tabs > li.active > a:hover,
+.nav-tabs > li.active > a:focus {
+ -moz-border-bottom-colors: none;
+ -moz-border-left-colors: none;
+ -moz-border-right-colors: none;
+ -moz-border-top-colors: none;
+ background: none;
+ border-color: #e0e0e0 #e0e0e0 rgba(0, 0, 0, 0);
+ border-bottom: var(--bg-mid);
+ border-image: none;
+ border-style: solid;
+ border-width: 1px;
+ color: #585858;
+ cursor: default;
+}
+
+.nav.nav-tabs li {
+ background: none;
+ border: none;
+}
+
+body.fixed-nav #wrapper .navbar-static-side,
+body.fixed-nav #wrapper #page-wrapper {
+ margin-top: 60px;
+}
+
+body.top-navigation.fixed-nav #wrapper #page-wrapper {
+ margin-top: 0;
+}
+
+body.fixed-nav.fixed-nav-basic .navbar-fixed-top {
+ left: 220px;
+}
+
+body.fixed-nav.fixed-nav-basic.mini-navbar .navbar-fixed-top {
+ left: 70px;
+}
+
+body.fixed-nav.fixed-nav-basic.fixed-sidebar.mini-navbar .navbar-fixed-top {
+ left: 0;
+}
+
+body.fixed-nav.fixed-nav-basic #wrapper .navbar-static-side {
+ margin-top: 0;
+}
+
+body.fixed-nav.fixed-nav-basic.body-small .navbar-fixed-top {
+ left: 0;
+}
+
+body.fixed-nav.fixed-nav-basic.fixed-sidebar.mini-navbar.body-small .navbar-fixed-top {
+ left: 220px;
+}
+
+.fixed-nav .minimalize-styl-2 {
+ margin: 10px 5px 5px 15px;
+}
+
+.body-small .navbar-fixed-top {
+ margin-left: 0;
+}
+
+body.mini-navbar .navbar-static-side {
+ width: 70px;
+}
+
+body.mini-navbar .profile-element,
+body.mini-navbar .nav-label,
+body.mini-navbar .navbar-default .nav li a span {
+ display: none;
+}
+
+body.canvas-menu .profile-element {
+ display: block;
+}
+
+body:not(.fixed-sidebar):not(.canvas-menu).mini-navbar .nav-second-level {
+ display: none;
+}
+
+body.mini-navbar .navbar-default .nav > li > a {
+ font-size: 16px;
+}
+
+body.mini-navbar .logo-element {
+ display: block;
+}
+
+body.canvas-menu .logo-element {
+ display: none;
+}
+
+body.mini-navbar .nav-header {
+ padding: 0;
+ background-color: #18b090;
+}
+
+body.canvas-menu .nav-header {
+ padding: 33px 25px;
+}
+
+body.canvas-menu .sidebar-collapse li {
+ width: 100%;
+}
+
+body.mini-navbar #page-wrapper {
+ width: calc(100% - 70px);
+}
+
+body.canvas-menu.mini-navbar #page-wrapper,
+body.canvas-menu.mini-navbar .footer {
+ margin: 0;
+ width: 100%;
+}
+
+body.fixed-sidebar .navbar-static-side,
+body.canvas-menu .navbar-static-side {
+ width: 220px;
+ z-index: 2001;
+ height: 100vh;
+ position: fixed;
+}
+
+body.fixed-sidebar.mini-navbar .navbar-static-side {
+ width: 0;
+}
+
+body.fixed-sidebar #page-wrapper {
+ margin: 0 0 0 220px;
+}
+
+body.fixed-sidebar.body-small #page-wrapper {
+ margin: 0;
+}
+
+body.fixed-sidebar.mini-navbar #page-wrapper {
+ margin: 0 0 0 0;
+ width: 100%;
+}
+
+body.body-small.fixed-sidebar.mini-navbar #page-wrapper {
+ margin: 0 0 0 220px;
+}
+
+body.body-small.fixed-sidebar.mini-navbar .navbar-static-side {
+ width: 220px;
+}
+
+.fixed-sidebar.mini-navbar .nav li:focus > .nav-second-level,
+.canvas-menu.mini-navbar .nav li:focus > .nav-second-level {
+ display: block;
+ height: auto;
+}
+
+body.fixed-sidebar.mini-navbar .navbar-default .nav > li > .nav-second-level li a {
+ font-size: 12px;
+ border-radius: 3px;
+}
+
+body.canvas-menu.mini-navbar .navbar-default .nav > li > .nav-second-level li a {
+ font-size: 13px;
+ border-radius: 3px;
+}
+
+.fixed-sidebar.mini-navbar .nav-second-level li a,
+.canvas-menu.mini-navbar .nav-second-level li a {
+ padding: 10px 10px 10px 15px;
+}
+
+.fixed-sidebar.mini-navbar .nav-second-level,
+.canvas-menu.mini-navbar .nav-second-level {
+ position: relative;
+ padding: 0;
+ font-size: 13px;
+}
+
+.fixed-sidebar.mini-navbar li.active .nav-second-level,
+.canvas-menu.mini-navbar li.active .nav-second-level {
+ left: 0;
+}
+
+body.fixed-sidebar.mini-navbar .navbar-default .nav > li > a,
+body.canvas-menu.mini-navbar .navbar-default .nav > li > a {
+ font-size: 13px;
+}
+
+body.fixed-sidebar.mini-navbar .nav-label,
+body.fixed-sidebar.mini-navbar .navbar-default .nav li a span,
+body.canvas-menu.mini-navbar .nav-label,
+body.canvas-menu.mini-navbar .navbar-default .nav li a span {
+ display: inline;
+}
+
+body.canvas-menu.mini-navbar .navbar-default .nav li .profile-element a span {
+ display: block;
+}
+
+.canvas-menu.mini-navbar .nav-second-level li a,
+.fixed-sidebar.mini-navbar .nav-second-level li a {
+ padding: 7px 10px 7px 52px;
+}
+
+.fixed-sidebar.mini-navbar .nav-second-level,
+.canvas-menu.mini-navbar .nav-second-level {
+ left: 0;
+}
+
+body.canvas-menu nav.navbar-static-side {
+ z-index: 2001;
+ background: var(--base-color);
+ height: 100%;
+ position: fixed;
+ display: none;
+}
+
+body.canvas-menu.mini-navbar nav.navbar-static-side {
+ display: block;
+ width: 220px;
+}
+
+.top-navigation #page-wrapper {
+ width: 100%;
+}
+
+.top-navigation .navbar-nav .dropdown-menu > .active > a {
+ background: white;
+ color: #18b090;
+ font-weight: bold;
+}
+
+.white-bg .navbar-fixed-top,
+.white-bg .navbar-static-top {
+ background: #fff;
+}
+
+.top-navigation .navbar {
+ margin-bottom: 0;
+}
+
+.top-navigation .nav > li > a {
+ padding: 15px 20px;
+ color: var(--text);
+}
+
+.top-navigation .nav > li a:hover,
+.top-navigation .nav > li a:focus {
+ background: #fff;
+ color: #18b090;
+}
+
+.top-navigation .navbar .nav > li.active {
+ background: #fff;
+ border: none;
+}
+
+.top-navigation .nav > li.active > a {
+ color: #18b090;
+}
+
+.top-navigation .navbar-right {
+ margin-right: 10px;
+}
+
+.top-navigation .navbar-nav .dropdown-menu {
+ box-shadow: none;
+ border: 1px solid var(--border-color);
+}
+
+.top-navigation .dropdown-menu > li > a {
+ margin: 0;
+ padding: 7px 20px;
+}
+
+.navbar .dropdown-menu {
+ margin-top: 0;
+}
+
+.top-navigation .navbar-brand {
+ background: #18b090;
+ color: #fff;
+ padding: 15px 25px;
+ font-size: 18px;
+ line-height: 20px;
+}
+
+.top-navigation .navbar-top-links li:last-child {
+ margin-right: 0;
+}
+
+.top-navigation.mini-navbar #page-wrapper,
+.top-navigation.body-small.fixed-sidebar.mini-navbar #page-wrapper,
+.mini-navbar .top-navigation #page-wrapper,
+.body-small.fixed-sidebar.mini-navbar .top-navigation #page-wrapper,
+.canvas-menu #page-wrapper {
+ margin: 0;
+ width: 100%;
+}
+
+.top-navigation.fixed-nav #wrapper,
+.fixed-nav #wrapper.top-navigation {
+ margin-top: 50px;
+}
+
+.top-navigation .footer.fixed {
+ margin-left: 0 !important;
+}
+
+.top-navigation .wrapper.wrapper-content {
+ padding: 40px;
+}
+
+.top-navigation.body-small .wrapper.wrapper-content,
+.body-small .top-navigation .wrapper.wrapper-content {
+ padding: 40px 0 40px 0;
+}
+
+.navbar-toggler {
+ background-color: #18b090;
+ color: #fff;
+ padding: 6px 12px;
+ font-size: 14px;
+ margin: 8px;
+}
+
+.top-navigation .navbar-nav .open .dropdown-menu > li > a,
+.top-navigation .navbar-nav .open .dropdown-menu .dropdown-header {
+ padding: 10px 15px 10px 20px;
+}
+
+@media (max-width: 768px) {
+ .top-navigation .navbar-header {
+ display: block;
+ float: none;
+ }
+}
+
+.menu-visible-lg,
+.menu-visible-md {
+ display: none !important;
+}
+
+@media (min-width: 1200px) {
+ .menu-visible-lg {
+ display: block !important;
+ }
+}
+
+@media (min-width: 992px) {
+ .menu-visible-md {
+ display: block !important;
+ }
+}
+
+@media (max-width: 767px) {
+ .menu-visible-md {
+ display: block !important;
+ }
+
+ .menu-visible-lg {
+ display: block !important;
+ }
+}
+
+button:focus {
+ outline: 0 !important;
+}
+
+.btn {
+ border-radius: 3px;
+ font-size: inherit;
+}
+
+.btn:focus {
+ box-shadow: none;
+}
+
+.btn-xs {
+ font-size: 0.7rem;
+ padding: 0.2rem 0.4rem;
+}
+
+.btn-group-sm > .btn,
+.btn-sm {
+ font-size: .8rem;
+}
+
+.float-e-margins .btn {
+ margin-bottom: 5px;
+}
+
+.btn-w-m {
+ min-width: 120px;
+}
+
+.btn-primary.btn-outline {
+ color: #18b090 !important;
+}
+
+.btn-success.btn-outline {
+ color: #2080c8 !important;
+}
+
+.btn-info.btn-outline {
+ color: #20c8c8 !important;
+}
+
+.btn-warning.btn-outline {
+ color: #f8b058 !important;
+}
+
+.btn-danger.btn-outline {
+ color: #f05868 !important;
+}
+
+.btn-primary.btn-outline:hover,
+.btn-success.btn-outline:hover,
+.btn-info.btn-outline:hover,
+.btn-warning.btn-outline:hover,
+.btn-danger.btn-outline:hover {
+ color: #fff !important;
+}
+
+.btn.active,
+.btn:active {
+ background-image: none;
+ outline: 0;
+ -webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);
+ box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);
+}
+
+.btn-primary {
+ color: #fff;
+ background-color: #1878b8;
+ border-color: #1878b8;
+}
+
+.btn-primary:hover,
+.btn-primary:focus,
+.btn-primary.focus {
+ background-color: #186898;
+ border-color: #186898;
+ color: #ffffff;
+}
+
+.btn-primary.disabled,
+.btn-primary:disabled {
+ color: #fff;
+ background-color: #18a888;
+ border-color: #18a888;
+}
+
+.btn-primary:not(:disabled):not(.disabled):active,
+.btn-primary:not(:disabled):not(.disabled).active,
+.show > .btn-primary.dropdown-toggle {
+ color: #fff;
+ background-color: #105888;
+ border-color: #105888;
+}
+
+.btn-primary:not(:disabled):not(.disabled):active:focus,
+.btn-primary:not(:disabled):not(.disabled).active:focus,
+.show > .btn-primary.dropdown-toggle:focus {
+ -webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);
+ box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);
+}
+
+.btn-success {
+ color: #fff;
+ background-color: #2080c8;
+ border-color: #2080c8;
+}
+
+.btn-success:hover,
+.btn-success:focus,
+.btn-success.focus {
+ color: #fff;
+ background-color: #1878b8;
+ border-color: #1878b8;
+}
+
+.btn-success.disabled,
+.btn-success:disabled {
+ color: #fff;
+ background-color: #1878b8;
+ border-color: #1878b8;
+}
+
+.btn-success:not(:disabled):not(.disabled):active,
+.btn-success:not(:disabled):not(.disabled).active,
+.show > .btn-success.dropdown-toggle {
+ color: #fff;
+ background-color: #1878b8;
+ border-color: #1878b8;
+}
+
+.btn-success:not(:disabled):not(.disabled):active:focus,
+.btn-success:not(:disabled):not(.disabled).active:focus,
+.show > .btn-success.dropdown-toggle:focus {
+ -webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);
+ box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);
+}
+
+.btn-info {
+ color: #fff;
+ background-color: #20c8c8;
+ border-color: #20c8c8;
+}
+
+.btn-info:hover,
+.btn-info:focus,
+.btn-info.focus {
+ color: #fff;
+ background-color: #20b8b8;
+ border-color: #20b8b8;
+}
+
+.btn-info.disabled,
+.btn-info:disabled {
+ color: #fff;
+ background-color: #20b8b8;
+ border-color: #20b8b8;
+}
+
+.btn-info:not(:disabled):not(.disabled):active,
+.btn-info:not(:disabled):not(.disabled).active,
+.show > .btn-info.dropdown-toggle {
+ color: #fff;
+ background-color: #20b8b8;
+ border-color: #20b8b8;
+}
+
+.btn-info:not(:disabled):not(.disabled):active:focus,
+.btn-info:not(:disabled):not(.disabled).active:focus,
+.show > .btn-info.dropdown-toggle:focus {
+ -webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);
+ box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);
+}
+
+.btn-default {
+ color: inherit;
+ background: white;
+ border: 1px solid var(--border-color);
+}
+
+.btn-default:hover,
+.btn-default:focus,
+.btn-default:active,
+.btn-default.active,
+.open .dropdown-toggle.btn-default,
+.btn-default:active:focus,
+.btn-default:active:hover,
+.btn-default.active:hover,
+.btn-default.active:focus {
+ color: inherit;
+ border: 1px solid #cccccc;
+}
+
+.btn-default:active,
+.btn-default.active,
+.open .dropdown-toggle.btn-default {
+ box-shadow: 0 2px 5px rgba(0, 0, 0, 0.15) inset;
+}
+
+.btn-default.disabled,
+.btn-default.disabled:hover,
+.btn-default.disabled:focus,
+.btn-default.disabled:active,
+.btn-default.disabled.active,
+.btn-default[disabled],
+.btn-default[disabled]:hover,
+.btn-default[disabled]:focus,
+.btn-default[disabled]:active,
+.btn-default.active[disabled],
+fieldset[disabled] .btn-default,
+fieldset[disabled] .btn-default:hover,
+fieldset[disabled] .btn-default:focus,
+fieldset[disabled] .btn-default:active,
+fieldset[disabled] .btn-default.active {
+ color: #cccccc;
+}
+
+.btn-warning {
+ color: #ffffff;
+ background-color: #f8b058;
+ border-color: #f8b058;
+}
+
+.btn-warning:hover,
+.btn-warning:focus,
+.btn-warning.focus {
+ color: #ffffff;
+ background-color: #f8a848;
+ border-color: #f8a848;
+}
+
+.btn-warning.disabled,
+.btn-warning:disabled {
+ color: #ffffff;
+ background-color: #f8a848;
+ border-color: #f8a848;
+}
+
+.btn-warning:not(:disabled):not(.disabled):active,
+.btn-warning:not(:disabled):not(.disabled).active,
+.show > .btn-warning.dropdown-toggle {
+ color: #ffffff;
+ background-color: #f8a848;
+ border-color: #f8a848;
+}
+
+.btn-warning:not(:disabled):not(.disabled):active:focus,
+.btn-warning:not(:disabled):not(.disabled).active:focus,
+.show > .btn-warning.dropdown-toggle:focus {
+ -webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);
+ box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);
+}
+
+.btn-danger {
+ color: #fff !important;
+ background-color: #f05868;
+ border-color: #f05868;
+}
+
+.btn-danger:hover,
+.btn-danger:focus,
+.btn-danger.focus {
+ color: #fff;
+ background-color: #f04858;
+ border-color: #f04858;
+}
+
+.btn-danger.disabled,
+.btn-danger:disabled {
+ color: #fff;
+ background-color: #f04858;
+ border-color: #f04858;
+}
+
+.btn-danger:not(:disabled):not(.disabled):active,
+.btn-danger:not(:disabled):not(.disabled).active,
+.show > .btn-danger.dropdown-toggle {
+ color: #fff;
+ background-color: #f04858;
+ border-color: #f04858;
+}
+
+.btn-danger:not(:disabled):not(.disabled):active:focus,
+.btn-danger:not(:disabled):not(.disabled).active:focus,
+.show > .btn-danger.dropdown-toggle:focus {
+ -webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);
+ box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);
+}
+
+.btn-link {
+ color: inherit;
+}
+
+.btn-link:hover,
+.btn-link:focus,
+.btn-link:active,
+.btn-link.active,
+.open .dropdown-toggle.btn-link {
+ color: #18b090;
+ text-decoration: none;
+}
+
+.btn-link:active,
+.btn-link.active,
+.open .dropdown-toggle.btn-link {
+ background-image: none;
+ box-shadow: none;
+}
+
+.btn-link.disabled,
+.btn-link.disabled:hover,
+.btn-link.disabled:focus,
+.btn-link.disabled:active,
+.btn-link.disabled.active,
+.btn-link[disabled],
+.btn-link[disabled]:hover,
+.btn-link[disabled]:focus,
+.btn-link[disabled]:active,
+.btn-link.active[disabled],
+fieldset[disabled] .btn-link,
+fieldset[disabled] .btn-link:hover,
+fieldset[disabled] .btn-link:focus,
+fieldset[disabled] .btn-link:active,
+fieldset[disabled] .btn-link.active {
+ color: #cccccc;
+}
+
+.btn-white {
+ color: inherit;
+ background: white;
+ border: 1px solid var(--border-color);
+}
+
+.btn-white:hover,
+.btn-white:focus,
+.btn-white:active,
+.btn-white.active,
+.open .dropdown-toggle.btn-white,
+.btn-white:active:focus,
+.btn-white:active:hover,
+.btn-white.active:hover,
+.btn-white.active:focus {
+ color: inherit;
+ border: 1px solid #cccccc;
+}
+
+.btn-white:active,
+.btn-white.active {
+ box-shadow: 0 2px 5px rgba(0, 0, 0, 0.15) inset;
+}
+
+.btn-white:active,
+.btn-white.active,
+.open .dropdown-toggle.btn-white {
+ background-image: none;
+}
+
+.btn-white.disabled,
+.btn-white.disabled:hover,
+.btn-white.disabled:focus,
+.btn-white.disabled:active,
+.btn-white.disabled.active,
+.btn-white[disabled],
+.btn-white[disabled]:hover,
+.btn-white[disabled]:focus,
+.btn-white[disabled]:active,
+.btn-white.active[disabled],
+fieldset[disabled] .btn-white,
+fieldset[disabled] .btn-white:hover,
+fieldset[disabled] .btn-white:focus,
+fieldset[disabled] .btn-white:active,
+fieldset[disabled] .btn-white.active {
+ color: #cccccc;
+}
+
+.form-control,
+.form-control:focus,
+.has-error .form-control:focus,
+.has-success .form-control:focus,
+.has-warning .form-control:focus,
+.navbar-collapse,
+.navbar-form,
+.navbar-form-custom .form-control:focus,
+.navbar-form-custom .form-control:hover,
+.open .btn.dropdown-toggle,
+.panel,
+.popover,
+.progress,
+.progress-bar {
+ border-color: var(--bg);
+ color: var(--text);
+ box-shadow: none;
+}
+
+.btn-outline {
+ color: inherit;
+ background-color: transparent;
+ transition: all .5s;
+}
+
+.btn-rounded {
+ border-radius: 50px;
+}
+
+.btn-large-dim {
+ width: 90px;
+ height: 90px;
+ font-size: 42px;
+}
+
+button.dim {
+ display: inline-block;
+ text-decoration: none;
+ text-transform: uppercase;
+ text-align: center;
+ padding-top: 6px;
+ margin-right: 10px;
+ position: relative;
+ cursor: pointer;
+ border-radius: 5px;
+ font-weight: 600;
+ margin-bottom: 20px !important;
+}
+
+button.dim:active {
+ top: 3px;
+}
+
+button.btn-primary.dim {
+ box-shadow: inset 0 0 0 #189880, 0 5px 0 0 #189880, 0 10px 5px #999999 !important;
+}
+
+button.btn-primary.dim:active {
+ box-shadow: inset 0 0 0 #189880, 0 2px 0 0 #189880, 0 5px 3px #999999 !important;
+}
+
+button.btn-default.dim {
+ box-shadow: inset 0 0 0 #b0b0b0, 0 5px 0 0 #b0b0b0, 0 10px 5px #999999 !important;
+}
+
+button.btn-default.dim:active {
+ box-shadow: inset 0 0 0 #b0b0b0, 0 2px 0 0 #b0b0b0, 0 5px 3px #999999 !important;
+}
+
+button.btn-warning.dim {
+ box-shadow: inset 0 0 0 #f8a040, 0 5px 0 0 #f8a040, 0 10px 5px #999999 !important;
+}
+
+button.btn-warning.dim:active {
+ box-shadow: inset 0 0 0 #f8a040, 0 2px 0 0 #f8a040, 0 5px 3px #999999 !important;
+}
+
+button.btn-info.dim {
+ box-shadow: inset 0 0 0 #20b0b0, 0 5px 0 0 #20b0b0, 0 10px 5px #999999 !important;
+}
+
+button.btn-info.dim:active {
+ box-shadow: inset 0 0 0 #20b0b0, 0 2px 0 0 #20b0b0, 0 5px 3px #999999 !important;
+}
+
+button.btn-success.dim {
+ box-shadow: inset 0 0 0 #1870a8, 0 5px 0 0 #1870a8, 0 10px 5px #999999 !important;
+}
+
+button.btn-success.dim:active {
+ box-shadow: inset 0 0 0 #1870a8, 0 2px 0 0 #1870a8, 0 5px 3px #999999 !important;
+}
+
+button.btn-danger.dim {
+ box-shadow: inset 0 0 0 #e83850, 0 5px 0 0 #e83850, 0 10px 5px #999999 !important;
+}
+
+button.btn-danger.dim:active {
+ box-shadow: inset 0 0 0 #e83850, 0 2px 0 0 #e83850, 0 5px 3px #999999 !important;
+}
+
+button.dim:before {
+ font-size: 50px;
+ line-height: 1em;
+ font-weight: normal;
+ color: #fff;
+ display: block;
+ padding-top: 10px;
+}
+
+button.dim:active:before {
+ top: 7px;
+ font-size: 50px;
+}
+
+.btn:focus {
+ outline: none !important;
+}
+
+.label {
+ background-color: #d0d8e0;
+ color: #606060;
+ font-family: 'Open Sans', 'Helvetica Neue', Helvetica, Arial, sans-serif;
+ font-weight: 600;
+ padding: 3px 8px;
+ text-shadow: none;
+ border-radius: 0.25em;
+ line-height: 1;
+ white-space: nowrap;
+}
+
+.nav .label,
+.ibox .label {
+ font-size: 10px;
+}
+
+.badge {
+ background-color: #d0d8e0;
+ color: #606060;
+ font-family: 'Open Sans', 'Helvetica Neue', Helvetica, Arial, sans-serif;
+ font-size: 11px;
+ font-weight: 600;
+ padding-bottom: 4px;
+ padding-left: 6px;
+ padding-right: 6px;
+ text-shadow: none;
+ white-space: nowrap;
+}
+
+.label-primary,
+.badge-primary {
+ background-color: #18b090;
+ color: #ffffff;
+}
+
+.label-success,
+.badge-success {
+ background-color: #2080c8;
+ color: #ffffff;
+}
+
+.label-warning,
+.badge-warning {
+ background-color: #f8b058;
+ color: #ffffff;
+}
+
+.label-warning-light,
+.badge-warning-light {
+ background-color: #f8b058;
+ color: #ffffff;
+}
+
+.label-danger,
+.badge-danger {
+ background-color: #f05868;
+ color: #ffffff;
+}
+
+.label-info,
+.badge-info {
+ background-color: #20c8c8;
+ color: #ffffff;
+}
+
+.label-inverse,
+.badge-inverse {
+ background-color: #282828;
+ color: #ffffff;
+}
+
+.label-white,
+.badge-white {
+ background-color: #ffffff;
+ color: #606060;
+}
+
+.label-white,
+.badge-disable {
+ background-color: #283038;
+ color: #8890a0;
+}
+
+/* TOOGLE SWICH */
+.onoffswitch {
+ position: relative;
+ width: 64px;
+ -webkit-user-select: none;
+ -moz-user-select: none;
+ -ms-user-select: none;
+}
+
+.onoffswitch-checkbox {
+ display: none;
+}
+
+.onoffswitch-label {
+ display: block;
+ overflow: hidden;
+ cursor: pointer;
+ border: 2px solid #18b090;
+ border-radius: 2px;
+}
+
+.onoffswitch-inner {
+ width: 200%;
+ margin-left: -100%;
+ -moz-transition: margin 0.3s ease-in 0s;
+ -webkit-transition: margin 0.3s ease-in 0s;
+ -o-transition: margin 0.3s ease-in 0s;
+ transition: margin 0.3s ease-in 0s;
+}
+
+.onoffswitch-inner:before,
+.onoffswitch-inner:after {
+ float: left;
+ width: 50%;
+ height: 20px;
+ padding: 0;
+ line-height: 20px;
+ font-size: 12px;
+ color: white;
+ font-family: Trebuchet, Arial, sans-serif;
+ font-weight: bold;
+ -moz-box-sizing: border-box;
+ -webkit-box-sizing: border-box;
+ box-sizing: border-box;
+}
+
+.onoffswitch-inner:before {
+ content: "ON";
+ padding-left: 10px;
+ background-color: #18b090;
+ color: #ffffff;
+}
+
+.onoffswitch-inner:after {
+ content: "OFF";
+ padding-right: 10px;
+ background-color: #ffffff;
+ color: #999999;
+ text-align: right;
+}
+
+.onoffswitch-switch {
+ width: 20px;
+ margin: 0;
+ background: #ffffff;
+ border: 2px solid #18b090;
+ border-radius: 2px;
+ position: absolute;
+ top: 0;
+ bottom: 0;
+ right: 44px;
+ -moz-transition: all 0.3s ease-in 0s;
+ -webkit-transition: all 0.3s ease-in 0s;
+ -o-transition: all 0.3s ease-in 0s;
+ transition: all 0.3s ease-in 0s;
+}
+
+.onoffswitch-checkbox:checked + .onoffswitch-label .onoffswitch-inner {
+ margin-left: 0;
+}
+
+.onoffswitch-checkbox:checked + .onoffswitch-label .onoffswitch-switch {
+ right: 0;
+}
+
+.onoffswitch-checkbox:disabled + .onoffswitch-label .onoffswitch-inner:before {
+ background-color: #909090;
+}
+
+.onoffswitch-checkbox:disabled + .onoffswitch-label,
+.onoffswitch-checkbox:disabled + .onoffswitch-label .onoffswitch-switch {
+ border-color: #909090;
+}
+
+/* CHOSEN PLUGIN */
+.chosen-container-single .chosen-single {
+ background: #ffffff;
+ box-shadow: none;
+ -moz-box-sizing: border-box;
+ border-radius: 2px;
+ cursor: text;
+ height: auto !important;
+ margin: 0;
+ min-height: 30px;
+ overflow: hidden;
+ padding: 4px 12px;
+ position: relative;
+ width: 100%;
+}
+
+.chosen-container-multi .chosen-choices li.search-choice {
+ background: var(--bg-mid);
+ border: 1px solid var(--border-color);
+ border-radius: 2px;
+ box-shadow: none;
+ color: var(--text);
+ cursor: default;
+ line-height: 13px;
+ margin: 3px 0 3px 5px;
+ padding: 3px 20px 3px 5px;
+ position: relative;
+}
+
+/* Tags Input Plugin */
+.bootstrap-tagsinput {
+ border: 1px solid var(--border-color);
+ box-shadow: none;
+}
+
+/* PAGINATIN */
+.pagination > .active > a,
+.pagination > .active > span,
+.pagination > .active > a:hover,
+.pagination > .active > span:hover,
+.pagination > .active > a:focus,
+.pagination > .active > span:focus {
+ border-color: #e0e0e0;
+ cursor: default;
+ z-index: 2;
+}
+
+.pagination > li > a,
+.pagination > li > span {
+ background-color: #ffffff;
+ border: 1px solid #e0e0e0;
+ color: inherit;
+ float: left;
+ line-height: 1.42857;
+ margin-left: -1px;
+ padding: 4px 10px;
+ position: relative;
+ text-decoration: none;
+}
+
+.page-item.active .page-link {
+ background-color: #18b090;
+ border-color: #18b090;
+}
+
+.page-link:focus {
+ box-shadow: none;
+}
+
+.page-link:hover {
+ color: var(--text);
+}
+
+.pagination .footable-page.active a {
+ background-color: #18b090;
+ border-color: #18b090;
+ color: white;
+}
+
+/* TOOLTIPS */
+.tooltip-inner {
+ background-color: #304050;
+}
+
+.tooltip.top .tooltip-arrow {
+ border-top-color: #304050;
+}
+
+.tooltip.right .tooltip-arrow {
+ border-right-color: #304050;
+}
+
+.tooltip.bottom .tooltip-arrow {
+ border-bottom-color: #304050;
+}
+
+.tooltip.left .tooltip-arrow {
+ border-left-color: #304050;
+}
+
+/* EASY PIE CHART*/
+.easypiechart {
+ position: relative;
+ text-align: center;
+}
+
+.easypiechart .h2 {
+ margin-left: 10px;
+ margin-top: 10px;
+ display: inline-block;
+}
+
+.easypiechart canvas {
+ top: 0;
+ left: 0;
+}
+
+.easypiechart .easypie-text {
+ line-height: 1;
+ position: absolute;
+ top: 33px;
+ width: 100%;
+ z-index: 1;
+}
+
+.easypiechart img {
+ margin-top: -4px;
+}
+
+.jqstooltip {
+ -webkit-box-sizing: content-box;
+ -moz-box-sizing: content-box;
+ box-sizing: content-box;
+}
+
+/* FULLCALENDAR */
+.fc-state-default {
+ background-color: #ffffff;
+ background-image: none;
+ background-repeat: repeat-x;
+ box-shadow: none;
+ color: #333333;
+ text-shadow: none;
+}
+
+.fc-state-default {
+ border: 1px solid;
+}
+
+.fc-button {
+ color: inherit;
+ border: 1px solid var(--border-color);
+ cursor: pointer;
+ display: inline-block;
+ height: 1.9em;
+ line-height: 1.9em;
+ overflow: hidden;
+ padding: 0 0.6em;
+ position: relative;
+ white-space: nowrap;
+}
+
+.fc-state-active {
+ background-color: #18b090;
+ border-color: #18b090;
+ color: #ffffff;
+}
+
+.fc-header-title h2 {
+ font-size: 16px;
+ font-weight: 600;
+ color: inherit;
+}
+
+.fc-content .fc-widget-header,
+.fc-content .fc-widget-content {
+ border-color: var(--border-color);
+ font-weight: normal;
+}
+
+.fc-border-separate tbody {
+ background-color: #f8f8f8;
+}
+
+.fc-state-highlight {
+ background: none repeat scroll 0 0 #fff8e0;
+}
+
+.external-event {
+ padding: 5px 10px;
+ border-radius: 2px;
+ cursor: pointer;
+ margin-bottom: 5px;
+}
+
+.fc-ltr .fc-event-hori.fc-event-end,
+.fc-rtl .fc-event-hori.fc-event-start {
+ border-radius: 2px;
+}
+
+.fc-event,
+.fc-agenda .fc-event-time,
+.fc-event a {
+ padding: 4px 6px;
+ background-color: #18b090;
+ /* background color */
+ border-color: #18b090;
+ /* border color */
+}
+
+.fc-event-time,
+.fc-event-title {
+ color: #707070;
+ padding: 0 1px;
+}
+
+.ui-calendar .fc-event-time,
+.ui-calendar .fc-event-title {
+ color: #fff;
+}
+
+.fc-event-container a.fc-event {
+ color: #fff;
+}
+
+/* Chat */
+.chat-activity-list .chat-element {
+ border-bottom: 1px solid var(--border-color);
+}
+
+.chat-element:first-child {
+ margin-top: 0;
+}
+
+.chat-element {
+ padding-bottom: 15px;
+}
+
+.chat-element,
+.chat-element .media {
+ margin-top: 15px;
+}
+
+.chat-element,
+.media-body {
+ overflow: hidden;
+}
+
+.chat-element .media-body {
+ display: block;
+ width: auto;
+}
+
+.chat-element > .float-left {
+ margin-right: 10px;
+}
+
+.chat-element img.rounded-circle,
+.dropdown-messages-box img.rounded-circle {
+ width: 38px;
+ height: 38px;
+}
+
+.chat-element .well {
+ border: 1px solid var(--border-color);
+ box-shadow: none;
+ margin-top: 10px;
+ margin-bottom: 5px;
+ padding: 10px 20px;
+ font-size: 11px;
+ line-height: 16px;
+}
+
+.chat-element .actions {
+ margin-top: 10px;
+}
+
+.chat-element .photos {
+ margin: 10px 0;
+}
+
+.right.chat-element > .float-right {
+ margin-left: 10px;
+}
+
+.chat-photo {
+ max-height: 180px;
+ border-radius: 4px;
+ overflow: hidden;
+ margin-right: 10px;
+ margin-bottom: 10px;
+}
+
+.chat {
+ margin: 0;
+ padding: 0;
+ list-style: none;
+}
+
+.chat li {
+ margin-bottom: 10px;
+ padding-bottom: 5px;
+ border-bottom: 1px dotted #b0a8a8;
+}
+
+.chat li.left .chat-body {
+ margin-left: 60px;
+}
+
+.chat li.right .chat-body {
+ margin-right: 60px;
+}
+
+.chat li .chat-body p {
+ margin: 0;
+ color: #787878;
+}
+
+.panel .slidedown .glyphicon,
+.chat .glyphicon {
+ margin-right: 5px;
+}
+
+.chat-panel .panel-body {
+ height: 350px;
+ overflow-y: scroll;
+}
+
+/* LIST GROUP */
+a.list-group-item.active,
+a.list-group-item.active:hover,
+a.list-group-item.active:focus {
+ background-color: #18b090;
+ border-color: #18b090;
+ color: #ffffff;
+ z-index: 2;
+}
+
+.list-group-item-heading {
+ margin-top: 10px;
+}
+
+.list-group-item-text {
+ margin: 0 0 10px;
+ color: inherit;
+ font-size: 12px;
+ line-height: inherit;
+}
+
+.no-padding .list-group-item {
+ border-left: none;
+ border-right: none;
+ border-bottom: none;
+}
+
+.no-padding .list-group-item:first-child {
+ border-left: none;
+ border-right: none;
+ border-bottom: none;
+ border-top: none;
+}
+
+.no-padding .list-group {
+ margin-bottom: 0;
+}
+
+.list-group-item {
+ background-color: inherit;
+ border: 1px solid transparent;
+ display: block;
+ margin-bottom: -1px;
+ padding: 10px 15px;
+ position: relative;
+}
+
+.elements-list .list-group-item {
+ border-left: none;
+ border-right: none;
+ padding: 0;
+}
+
+.elements-list .list-group-item:first-child {
+ border-left: none;
+ border-right: none;
+ border-top: none !important;
+}
+
+.elements-list .list-group {
+ margin-bottom: 0;
+}
+
+.elements-list a {
+ color: inherit;
+}
+
+.elements-list .list-group-item a.active,
+.elements-list .list-group-item a:hover {
+ background: var(--bg-mid);
+ color: inherit;
+ border-color: var(--border-color);
+ border-radius: 0;
+}
+
+.elements-list li.active {
+ transition: none;
+}
+
+.elements-list .nav-link {
+ padding: 15px 25px;
+}
+
+.element-detail-box {
+ padding: 25px;
+}
+
+/* FLOT CHART */
+.flot-chart {
+ display: block;
+ height: 200px;
+}
+
+.widget .flot-chart.dashboard-chart {
+ display: block;
+ height: 120px;
+ margin-top: 40px;
+}
+
+.flot-chart.dashboard-chart {
+ display: block;
+ height: 180px;
+ margin-top: 40px;
+}
+
+.flot-chart-content {
+ width: 100%;
+ height: 100%;
+}
+
+.flot-chart-pie-content {
+ width: 200px;
+ height: 200px;
+ margin: auto;
+}
+
+.jqstooltip {
+ position: absolute;
+ display: block;
+ left: 0;
+ top: 0;
+ visibility: hidden;
+ background: #283038;
+ background-color: rgba(40, 48, 56, 0.8);
+ color: white;
+ text-align: left;
+ white-space: nowrap;
+ z-index: 10000;
+ padding: 5px 5px 5px 5px;
+ min-height: 22px;
+ border-radius: 3px;
+}
+
+.jqsfield {
+ color: white;
+ text-align: left;
+}
+
+.fh-150 {
+ height: 150px;
+}
+
+.fh-200 {
+ height: 200px;
+}
+
+.h-150 {
+ min-height: 150px;
+}
+
+.h-200 {
+ min-height: 200px;
+}
+
+.h-300 {
+ min-height: 300px;
+}
+
+.w-150 {
+ min-width: 150px;
+}
+
+.w-200 {
+ min-width: 200px;
+}
+
+.w-300 {
+ min-width: 300px;
+}
+
+.legendLabel {
+ padding-left: 5px;
+}
+
+.stat-list li:first-child {
+ margin-top: 0;
+}
+
+.stat-list {
+ list-style: none;
+ padding: 0;
+ margin: 0;
+}
+
+.stat-percent {
+ float: right;
+}
+
+.stat-list li {
+ margin-top: 15px;
+ position: relative;
+}
+
+/* DATATABLES */
+table.dataTable thead .sorting,
+table.dataTable thead .sorting_asc:after,
+table.dataTable thead .sorting_desc,
+table.dataTable thead .sorting_asc_disabled,
+table.dataTable thead .sorting_desc_disabled {
+ background: transparent;
+}
+
+.dataTables_wrapper {
+ padding-bottom: 30px;
+}
+
+.dataTables_length {
+ float: left;
+}
+
+.dataTables_filter label {
+ margin-right: 5px;
+}
+
+.html5buttons {
+ float: right;
+}
+
+.html5buttons a {
+ border: 1px solid var(--border-color);
+ background: #fff;
+ color: var(--text);
+ box-shadow: none;
+ padding: 6px 8px;
+ font-size: 12px;
+}
+
+.html5buttons a:hover,
+.html5buttons a:focus:active {
+ background-color: #eee;
+ color: inherit;
+ border-color: var(--border-color);
+}
+
+div.dt-button-info {
+ z-index: 100;
+}
+
+@media (max-width: 768px) {
+ .html5buttons {
+ float: none;
+ margin-top: 10px;
+ }
+
+ .dataTables_length {
+ float: none;
+ }
+}
+
+/* CIRCLE */
+.img-circle {
+ border-radius: 50%;
+}
+
+.btn-circle {
+ width: 30px;
+ height: 30px;
+ padding: 6px 0;
+ border-radius: 15px;
+ text-align: center;
+ font-size: 12px;
+ line-height: 1.428571429;
+}
+
+.btn-circle.btn-lg {
+ width: 50px;
+ height: 50px;
+ padding: 10px 16px;
+ border-radius: 25px;
+ font-size: 18px;
+ line-height: 1.33;
+}
+
+.btn-circle.btn-xl {
+ width: 70px;
+ height: 70px;
+ padding: 10px 16px;
+ border-radius: 35px;
+ font-size: 24px;
+ line-height: 1.33;
+}
+
+.show-grid [class^="col-"] {
+ padding-top: 10px;
+ padding-bottom: 10px;
+ border: 1px solid #ddd;
+ background-color: #eee !important;
+}
+
+.show-grid {
+ margin: 15px 0;
+}
+
+/* ANIMATION */
+.css-animation-box h1 {
+ font-size: 44px;
+}
+
+.animation-efect-links a {
+ padding: 4px 6px;
+ font-size: 12px;
+}
+
+#animation_box {
+ background-color: #f8f8f8;
+ border-radius: 16px;
+ width: 80%;
+ margin: 0 auto;
+ padding-top: 80px;
+}
+
+.animation-text-box {
+ position: absolute;
+ margin-top: 40px;
+ left: 50%;
+ margin-left: -100px;
+ width: 200px;
+}
+
+.animation-text-info {
+ position: absolute;
+ margin-top: -60px;
+ left: 50%;
+ margin-left: -100px;
+ width: 200px;
+ font-size: 10px;
+}
+
+.animation-text-box h2 {
+ font-size: 54px;
+ font-weight: 600;
+ margin-bottom: 5px;
+}
+
+.animation-text-box p {
+ font-size: 12px;
+ text-transform: uppercase;
+}
+
+/* PEACE */
+.pace {
+ -webkit-pointer-events: none;
+ pointer-events: none;
+ -webkit-user-select: none;
+ -moz-user-select: none;
+ user-select: none;
+}
+
+.pace-inactive {
+ display: none;
+}
+
+.pace .pace-progress {
+ background: #18b090;
+ position: fixed;
+ z-index: 2040;
+ top: 0;
+ right: 100%;
+ width: 100%;
+ height: 2px;
+}
+
+.pace-inactive {
+ display: none;
+}
+
+/* WIDGETS */
+.widget {
+ border-radius: 5px;
+ padding: 15px 20px;
+ margin-bottom: 10px;
+ margin-top: 10px;
+}
+
+.widget.style1 h2 {
+ font-size: 30px;
+}
+
+.widget h2,
+.widget h3 {
+ margin-top: 5px;
+ margin-bottom: 0;
+}
+
+.widget-text-box {
+ padding: 20px;
+ border: 1px solid var(--border-color);
+ background: #ffffff;
+}
+
+.widget-head-color-box {
+ border-radius: 5px 5px 0 0;
+ margin-top: 10px;
+}
+
+.widget .flot-chart {
+ height: 100px;
+}
+
+.vertical-align div {
+ display: inline-block;
+ vertical-align: middle;
+}
+
+.vertical-align h2,
+.vertical-align h3 {
+ margin: 0;
+}
+
+.todo-list {
+ list-style: none outside none;
+ margin: 0;
+ padding: 0;
+ font-size: 14px;
+}
+
+.todo-list.small-list {
+ font-size: 12px;
+}
+
+.todo-list.small-list > li {
+ background: var(--bg-mid);
+ border-left: none;
+ border-right: none;
+ border-radius: 4px;
+ color: inherit;
+ margin-bottom: 2px;
+ padding: 6px 6px 6px 12px;
+}
+
+.todo-list.small-list .btn-xs,
+.todo-list.small-list .btn-group-xs > .btn {
+ border-radius: 5px;
+ font-size: 10px;
+ line-height: 1.5;
+ padding: 1px 2px 1px 5px;
+}
+
+.todo-list > li {
+ background: var(--bg-mid);
+ border-left: 6px solid var(--border-color);
+ border-right: 6px solid var(--border-color);
+ border-radius: 4px;
+ color: inherit;
+ margin-bottom: 2px;
+ padding: 10px;
+}
+
+.todo-list .handle {
+ cursor: move;
+ display: inline-block;
+ font-size: 16px;
+ margin: 0 5px;
+}
+
+.todo-list > li .label {
+ font-size: 9px;
+ margin-left: 10px;
+}
+
+.check-link {
+ font-size: 16px;
+}
+
+.todo-completed {
+ text-decoration: line-through;
+}
+
+.geo-statistic h1 {
+ font-size: 36px;
+ margin-bottom: 0;
+}
+
+.glyphicon.fa {
+ font-family: "FontAwesome";
+}
+
+/* INPUTS */
+.inline {
+ display: inline-block !important;
+}
+
+.input-s-sm {
+ width: 120px;
+}
+
+.input-s {
+ width: 200px;
+}
+
+.form-control {
+ font-size: 0.9rem;
+}
+
+select.form-control:not([size]):not([multiple]) {
+ height: 2.05rem;
+}
+
+.input-sm,
+.form-control-sm {
+ height: 31px;
+}
+
+.input-s-lg {
+ width: 250px;
+}
+
+.i-checks {
+ padding-left: 0;
+}
+
+.form-control,
+.single-line {
+ background-color: var(--bg);
+ background-image: none;
+ border: 1px solid var(--border-color);
+ border-radius: 8px;
+ color: var(--color);
+ display: block;
+ padding: 6px 12px;
+ transition: border-color 0.15s ease-in-out 0s, box-shadow 0.15s ease-in-out 0s;
+ width: 100%;
+}
+
+.form-control:focus,
+.single-line:focus {
+ border-color: var(--border-color);
+ color: var(--color);
+ border-color: #606070;
+}
+
+.has-success .form-control,
+.has-success .form-control:focus {
+ border-color: #18b090;
+}
+
+.has-warning .form-control,
+.has-warning .form-control:focus {
+ border-color: #f8b058;
+}
+
+.has-error .form-control,
+.has-error .form-control:focus {
+ border-color: #f05868;
+}
+
+.has-success .control-label {
+ color: #18b090;
+}
+
+.has-warning .control-label {
+ color: #f8b058;
+}
+
+.has-error .control-label {
+ color: #f05868;
+}
+
+.input-group-addon {
+ background-color: #fff;
+ border: 1px solid var(--border-color);
+ border-radius: 1px;
+ color: inherit;
+ font-size: 14px;
+ font-weight: 400;
+ line-height: 1;
+ padding: 9px 12px 4px 12px;
+ text-align: center;
+}
+
+.input-daterange .input-group-addon {
+ margin: 0;
+}
+
+.input-group.date .input-group-addon {
+ border-right: 0;
+}
+
+.spinner-buttons.input-group-btn .btn-xs {
+ line-height: 1.13;
+}
+
+.spinner-buttons.input-group-btn {
+ width: 20%;
+}
+
+.noUi-connect {
+ background: none repeat scroll 0 0 #18b090;
+ box-shadow: none;
+}
+
+.slider_red .noUi-connect {
+ background: none repeat scroll 0 0 #f05868;
+ box-shadow: none;
+}
+
+/* UI Sortable */
+.ui-sortable .ibox-title {
+ background-color: rgba(0, 0, 0, 0.8);
+ cursor: move;
+}
+
+.ui-sortable-placeholder {
+ border: 1px dashed #cccccc !important;
+ visibility: visible !important;
+ background: var(--border-color);
+}
+
+.ibox.ui-sortable-placeholder {
+ margin: 0 0 23px !important;
+}
+
+/* SWITCHES */
+.onoffswitch {
+ position: relative;
+ width: 54px;
+ -webkit-user-select: none;
+ -moz-user-select: none;
+ -ms-user-select: none;
+}
+
+.onoffswitch-checkbox {
+ display: none;
+}
+
+.onoffswitch-label {
+ display: block;
+ overflow: hidden;
+ cursor: pointer;
+ border: 2px solid #18b090;
+ border-radius: 3px;
+}
+
+.onoffswitch-inner {
+ display: block;
+ width: 200%;
+ margin-left: -100%;
+ -moz-transition: margin 0.3s ease-in 0s;
+ -webkit-transition: margin 0.3s ease-in 0s;
+ -o-transition: margin 0.3s ease-in 0s;
+ transition: margin 0.3s ease-in 0s;
+}
+
+.onoffswitch-inner:before,
+.onoffswitch-inner:after {
+ display: block;
+ float: left;
+ width: 50%;
+ height: 16px;
+ padding: 0;
+ line-height: 16px;
+ font-size: 10px;
+ color: white;
+ font-family: Trebuchet, Arial, sans-serif;
+ font-weight: bold;
+ -moz-box-sizing: border-box;
+ -webkit-box-sizing: border-box;
+ box-sizing: border-box;
+}
+
+.onoffswitch-inner:before {
+ content: "ON";
+ padding-left: 7px;
+ background-color: #18b090;
+ color: #ffffff;
+}
+
+.onoffswitch-inner:after {
+ content: "OFF";
+ padding-right: 7px;
+ background-color: #ffffff;
+ color: #909090;
+ text-align: right;
+}
+
+.onoffswitch-switch {
+ display: block;
+ width: 18px;
+ margin: 0;
+ background: #ffffff;
+ border: 2px solid #18b090;
+ border-radius: 3px;
+ position: absolute;
+ top: 0;
+ bottom: 0;
+ right: 36px;
+ -moz-transition: all 0.3s ease-in 0s;
+ -webkit-transition: all 0.3s ease-in 0s;
+ -o-transition: all 0.3s ease-in 0s;
+ transition: all 0.3s ease-in 0s;
+}
+
+.onoffswitch-checkbox:checked + .onoffswitch-label .onoffswitch-inner {
+ margin-left: 0;
+}
+
+.onoffswitch-checkbox:checked + .onoffswitch-label .onoffswitch-switch {
+ right: 0;
+}
+
+/* jqGrid */
+.ui-jqgrid {
+ -moz-box-sizing: content-box;
+}
+
+.ui-jqgrid-btable {
+ border-collapse: separate;
+}
+
+.ui-jqgrid-htable {
+ border-collapse: separate;
+}
+
+.ui-jqgrid-titlebar {
+ height: 40px;
+ line-height: 15px;
+ color: var(--text);
+ background-color: #f8f8f8;
+ text-shadow: 0 1px 0 rgba(255, 255, 255, 0.5);
+}
+
+.ui-jqgrid .ui-jqgrid-title {
+ float: left;
+ margin: 1.1em 1em 0.2em;
+}
+
+.ui-jqgrid .ui-jqgrid-titlebar {
+ position: relative;
+ border-left: 0 solid;
+ border-right: 0 solid;
+ border-top: 0 solid;
+}
+
+.ui-widget-header {
+ background: none;
+ background-image: none;
+ background-color: #f8f8f8;
+ text-transform: uppercase;
+ border-top-left-radius: 0;
+ border-top-right-radius: 0;
+}
+
+.ui-jqgrid tr.ui-row-ltr td {
+ border-right-color: inherit;
+ border-right-style: solid;
+ border-right-width: 1px;
+ text-align: left;
+ border-color: #e0e0e0;
+ background-color: inherit;
+}
+
+.ui-search-toolbar input[type="text"] {
+ font-size: 12px;
+ height: 15px;
+ border: 1px solid #cccccc;
+ border-radius: 0;
+}
+
+.ui-state-default,
+.ui-widget-content .ui-state-default,
+.ui-widget-header .ui-state-default {
+ background: #f8f8f8;
+ border: 1px solid #e0e0e0;
+ line-height: 15px;
+ font-weight: bold;
+ color: var(--text);
+ text-shadow: 0 1px 0 rgba(255, 255, 255, 0.5);
+}
+
+.ui-widget-content {
+ box-sizing: content-box;
+}
+
+.ui-icon-triangle-1-n {
+ background-position: 1px -16px;
+}
+
+.ui-jqgrid tr.ui-search-toolbar th {
+ border-top-width: 0 !important;
+ border-top-color: inherit !important;
+ border-top-style: ridge !important;
+}
+
+.ui-state-hover,
+.ui-widget-content .ui-state-hover,
+.ui-state-focus,
+.ui-widget-content .ui-state-focus,
+.ui-widget-header .ui-state-focus {
+ background: #f8f8f8;
+ border-collapse: separate;
+}
+
+.ui-state-highlight,
+.ui-widget-content .ui-state-highlight,
+.ui-widget-header .ui-state-highlight {
+ background: #f0f8ff;
+}
+
+.ui-state-active,
+.ui-widget-content .ui-state-active,
+.ui-widget-header .ui-state-active {
+ border: 1px solid #e0e0e0;
+ background: #ffffff;
+ font-weight: normal;
+ color: #202020;
+}
+
+.ui-jqgrid .ui-pg-input {
+ font-size: inherit;
+ width: 50px;
+ border: 1px solid #cccccc;
+ height: 15px;
+}
+
+.ui-jqgrid .ui-pg-selbox {
+ display: block;
+ font-size: 1em;
+ height: 25px;
+ line-height: 18px;
+ margin: 0;
+ width: auto;
+}
+
+.ui-jqgrid .ui-pager-control {
+ position: relative;
+}
+
+.ui-jqgrid .ui-jqgrid-pager {
+ height: 32px;
+ position: relative;
+}
+
+.ui-pg-table .navtable .ui-corner-all {
+ border-radius: 0;
+}
+
+.ui-jqgrid .ui-pg-button:hover {
+ padding: 1px;
+ border: 0;
+}
+
+.ui-jqgrid .loading {
+ position: absolute;
+ top: 45%;
+ left: 45%;
+ width: auto;
+ height: auto;
+ z-index: 101;
+ padding: 6px;
+ margin: 5px;
+ text-align: center;
+ font-weight: bold;
+ display: none;
+ border-width: 2px !important;
+ font-size: 11px;
+}
+
+.ui-jqgrid .form-control {
+ height: 10px;
+ width: auto;
+ display: inline;
+ padding: 10px 12px;
+}
+
+.ui-jqgrid-pager {
+ height: 32px;
+}
+
+.ui-corner-all,
+.ui-corner-top,
+.ui-corner-left,
+.ui-corner-tl {
+ border-top-left-radius: 0;
+}
+
+.ui-corner-all,
+.ui-corner-top,
+.ui-corner-right,
+.ui-corner-tr {
+ border-top-right-radius: 0;
+}
+
+.ui-corner-all,
+.ui-corner-bottom,
+.ui-corner-left,
+.ui-corner-bl {
+ border-bottom-left-radius: 0;
+}
+
+.ui-corner-all,
+.ui-corner-bottom,
+.ui-corner-right,
+.ui-corner-br {
+ border-bottom-right-radius: 0;
+}
+
+.ui-widget-content {
+ border: 1px solid #ddd;
+}
+
+.ui-jqgrid .ui-jqgrid-titlebar {
+ padding: 0;
+}
+
+.ui-jqgrid .ui-jqgrid-titlebar {
+ border-bottom: 1px solid #ddd;
+}
+
+.ui-jqgrid tr.jqgrow td {
+ padding: 6px;
+}
+
+.ui-jqdialog .ui-jqdialog-titlebar {
+ padding: 10px 10px;
+}
+
+.ui-jqdialog .ui-jqdialog-title {
+ float: none !important;
+}
+
+.ui-jqdialog > .ui-resizable-se {
+ position: absolute;
+}
+
+/* Nestable list */
+.dd {
+ position: relative;
+ display: block;
+ margin: 0;
+ padding: 0;
+ list-style: none;
+ font-size: 13px;
+ line-height: 20px;
+}
+
+.dd-list {
+ display: block;
+ position: relative;
+ margin: 0;
+ padding: 0;
+ list-style: none;
+}
+
+.dd-list .dd-list {
+ padding-left: 30px;
+}
+
+.dd-collapsed .dd-list {
+ display: none;
+}
+
+.dd-item,
+.dd-empty,
+.dd-placeholder {
+ display: block;
+ position: relative;
+ margin: 0;
+ padding: 0;
+ min-height: 20px;
+ font-size: 13px;
+ line-height: 20px;
+}
+
+.dd-handle {
+ display: block;
+ margin: 5px 0;
+ padding: 5px 10px;
+ color: #333;
+ text-decoration: none;
+ border: 1px solid var(--border-color);
+ background: #f8f8f8;
+ -webkit-border-radius: 3px;
+ border-radius: 3px;
+ box-sizing: border-box;
+ -moz-box-sizing: border-box;
+}
+
+.dd-handle span {
+ font-weight: bold;
+}
+
+.dd-handle:hover {
+ background: var(--bg-mid);
+ cursor: pointer;
+ font-weight: bold;
+}
+
+.dd-item > button {
+ display: block;
+ position: relative;
+ cursor: pointer;
+ float: left;
+ width: 25px;
+ height: 20px;
+ margin: 5px 0;
+ padding: 0;
+ text-indent: 100%;
+ white-space: nowrap;
+ overflow: hidden;
+ border: 0;
+ background: transparent;
+ font-size: 12px;
+ line-height: 1;
+ text-align: center;
+ font-weight: bold;
+}
+
+.dd-item > button:before {
+ content: '+';
+ display: block;
+ position: absolute;
+ width: 100%;
+ text-align: center;
+ text-indent: 0;
+}
+
+.dd-item > button[data-action="collapse"]:before {
+ content: '-';
+}
+
+#nestable2 .dd-item > button {
+ font-family: FontAwesome;
+ height: 34px;
+ width: 33px;
+ color: #c0c0c0;
+}
+
+#nestable2 .dd-item > button:before {
+ content: "\f067";
+}
+
+#nestable2 .dd-item > button[data-action="collapse"]:before {
+ content: "\f068";
+}
+
+.dd-placeholder,
+.dd-empty {
+ margin: 5px 0;
+ padding: 0;
+ min-height: 30px;
+ background: #f0f8ff;
+ border: 1px dashed #b8c0c0;
+ box-sizing: border-box;
+ -moz-box-sizing: border-box;
+}
+
+.dd-empty {
+ border: 1px dashed #bbb;
+ min-height: 100px;
+ background-color: #e8e8e8;
+ background-image: -webkit-linear-gradient(45deg, #ffffff 25%, transparent 25%, transparent 75%, #ffffff 75%, #ffffff), -webkit-linear-gradient(45deg, #ffffff 25%, transparent 25%, transparent 75%, #ffffff 75%, #ffffff);
+ background-image: -moz-linear-gradient(45deg, #ffffff 25%, transparent 25%, transparent 75%, #ffffff 75%, #ffffff), -moz-linear-gradient(45deg, #ffffff 25%, transparent 25%, transparent 75%, #ffffff 75%, #ffffff);
+ background-image: linear-gradient(45deg, #ffffff 25%, transparent 25%, transparent 75%, #ffffff 75%, #ffffff), linear-gradient(45deg, #ffffff 25%, transparent 25%, transparent 75%, #ffffff 75%, #ffffff);
+ background-size: 60px 60px;
+ background-position: 0 0, 30px 30px;
+}
+
+.dd-dragel {
+ position: absolute;
+ z-index: 9999;
+ pointer-events: none;
+}
+
+.dd-dragel > .dd-item .dd-handle {
+ margin-top: 0;
+}
+
+.dd-dragel .dd-handle {
+ -webkit-box-shadow: 2px 4px 6px 0 rgba(0, 0, 0, 0.1);
+ box-shadow: 2px 4px 6px 0 rgba(0, 0, 0, 0.1);
+}
+
+/**
+* Nestable Extras
+*/
+.nestable-lists {
+ display: block;
+ clear: both;
+ padding: 30px 0;
+ width: 100%;
+ border: 0;
+ border-top: 2px solid #ddd;
+ border-bottom: 2px solid #ddd;
+}
+
+#nestable-menu {
+ padding: 0;
+ margin: 10px 0 20px 0;
+}
+
+#nestable-output,
+#nestable2-output {
+ width: 100%;
+ font-size: 0.75em;
+ line-height: 1.333333em;
+ font-family: open sans, lucida grande, lucida sans unicode, helvetica, arial, sans-serif;
+ padding: 5px;
+ box-sizing: border-box;
+ -moz-box-sizing: border-box;
+}
+
+#nestable2 .dd-handle {
+ color: inherit;
+ border: 1px dashed var(--border-color);
+ background: var(--bg-mid);
+ padding: 10px;
+}
+
+#nestable2 span.label {
+ margin-right: 10px;
+}
+
+#nestable-output,
+#nestable2-output {
+ font-size: 12px;
+ padding: 25px;
+ box-sizing: border-box;
+ -moz-box-sizing: border-box;
+}
+
+/* CodeMirror */
+.CodeMirror {
+ border: 1px solid #eee;
+ height: auto;
+}
+
+.CodeMirror-scroll {
+ overflow-y: hidden;
+ overflow-x: auto;
+}
+
+/* Google Maps */
+.google-map {
+ height: 300px;
+}
+
+/* Validation */
+label.error {
+ color: #d05868;
+ display: inline-block;
+ margin-left: 5px;
+}
+
+.form-control.error {
+ border: 1px dotted #d05868;
+}
+
+/* ngGrid */
+.gridStyle {
+ border: 1px solid #cccccc;
+ width: 100%;
+ height: 400px;
+}
+
+.gridStyle2 {
+ border: 1px solid #cccccc;
+ width: 500px;
+ height: 300px;
+}
+
+.ngH eaderCell {
+ border-right: none;
+ border-bottom: 1px solid var(--border-color);
+}
+
+.ngCell {
+ border-right: none;
+}
+
+.ngTopPanel {
+ background: #f8f8f8;
+}
+
+.ngRow.even {
+ background: #f8f8f8;
+}
+
+.ngRow.selected {
+ background: #e8f0f0;
+}
+
+.ngRow {
+ border-bottom: 1px solid var(--border-color);
+}
+
+.ngCell {
+ background-color: transparent;
+}
+
+.ngHeaderCell {
+ border-right: none;
+}
+
+/* Toastr custom style */
+#toast-container > div {
+ -moz-box-shadow: 0 0 3px #999;
+ -webkit-box-shadow: 0 0 3px #999;
+ box-shadow: 0 0 3px #999;
+ opacity: .9;
+ -ms-filter: alpha(opacity=90);
+ filter: alpha(opacity=90);
+}
+
+#toast-container > :hover {
+ -moz-box-shadow: 0 0 4px #999;
+ -webkit-box-shadow: 0 0 4px #999;
+ box-shadow: 0 0 4px #999;
+ opacity: 1;
+ -ms-filter: alpha(opacity=100);
+ filter: alpha(opacity=100);
+ cursor: pointer;
+}
+
+.toast {
+ background-color: #18b090;
+ border-color: var(--border-color);
+}
+
+.toast-success {
+ background-color: #18b090;
+}
+
+.toast-error {
+ background-color: #f05868;
+}
+
+.toast-info {
+ background-color: #20c8c8;
+}
+
+.toast-warning {
+ background-color: #f8b058;
+}
+
+.toast-top-full-width {
+ margin-top: 20px;
+}
+
+.toast-bottom-full-width {
+ margin-bottom: 20px;
+}
+
+.toast {
+ z-index: 3000;
+}
+
+.toast.toast-bootstrap {
+ background-color: white;
+}
+
+.toast.toast-bootstrap .toast-body {
+ background-color: #ffffff;
+ font-size: .775rem;
+}
+
+/* Notifie */
+.cg-notify-message.inspinia-notify {
+ background: #fff;
+ padding: 0;
+ box-shadow: 0 0 1px rgba(0, 0, 0, 0.1), 0 2px 4px rgba(0, 0, 0, 0.2);
+ -webkit-box-shadow: 0 0 1px rgba(0, 0, 0, 0.1), 0 2px 4px rgba(0, 0, 0, 0.2);
+ -moz-box-shadow: 0 0 1px rgba(0, 0, 0, 0.1), 0 2px 4px rgba(0, 0, 0, 0.2);
+ border: none;
+ margin-top: 30px;
+ color: inherit;
+}
+
+.inspinia-notify.alert-warning {
+ border-left: 6px solid #f8b058;
+}
+
+.inspinia-notify.alert-success {
+ border-left: 6px solid #2080c8;
+}
+
+.inspinia-notify.alert-danger {
+ border-left: 6px solid #f05868;
+}
+
+.inspinia-notify.alert-info {
+ border-left: 6px solid #18b090;
+}
+
+/* Image cropper style */
+.img-container,
+.img-preview {
+ overflow: hidden;
+ text-align: center;
+ width: 100%;
+}
+
+.img-preview-sm {
+ height: 130px;
+ width: 200px;
+}
+
+/* Forum styles */
+.forum-post-container .media {
+ margin: 10px 10px 10px 10px;
+ padding: 20px 10px 20px 10px;
+ border-bottom: 1px solid var(--bg-mid);
+}
+
+.forum-avatar {
+ float: left;
+ margin-right: 20px;
+ text-align: center;
+ width: 110px;
+}
+
+.forum-avatar .rounded-circle {
+ height: 48px;
+ width: 48px;
+}
+
+.author-info {
+ color: var(--text);
+ font-size: 11px;
+ margin-top: 5px;
+ text-align: center;
+}
+
+.forum-post-info {
+ padding: 9px 12px 6px 12px;
+ background: #f8f8f8;
+ border: 1px solid var(--bg-mid);
+}
+
+.media-body > .media {
+ background: #f8f8f8;
+ border-radius: 3px;
+ border: 1px solid var(--bg-mid);
+}
+
+.forum-post-container .media-body .photos {
+ margin: 10px 0;
+}
+
+.forum-photo {
+ max-width: 140px;
+ border-radius: 3px;
+}
+
+.media-body > .media .forum-avatar {
+ width: 70px;
+ margin-right: 10px;
+}
+
+.media-body > .media .forum-avatar .rounded-circle {
+ height: 38px;
+ width: 38px;
+}
+
+.mid-icon {
+ font-size: 66px;
+}
+
+.forum-item {
+ margin: 10px 0;
+ padding: 10px 0 20px;
+ border-bottom: 1px solid var(--bg-mid);
+}
+
+.views-number {
+ font-size: 24px;
+ line-height: 18px;
+ font-weight: 400;
+}
+
+.forum-container,
+.forum-post-container {
+ padding: 30px !important;
+}
+
+.forum-item small {
+ color: #999;
+}
+
+.forum-item .forum-sub-title {
+ color: #999;
+ margin-left: 50px;
+}
+
+.forum-title {
+ margin: 15px 0 15px 0;
+}
+
+.forum-info {
+ text-align: center;
+}
+
+.forum-desc {
+ color: #999;
+}
+
+.forum-icon {
+ float: left;
+ width: 30px;
+ margin-right: 20px;
+ text-align: center;
+}
+
+a.forum-item-title {
+ color: inherit;
+ display: block;
+ font-size: 18px;
+ font-weight: 600;
+}
+
+a.forum-item-title:hover {
+ color: inherit;
+}
+
+.forum-icon .fa {
+ font-size: 30px;
+ margin-top: 8px;
+ color: #999999;
+}
+
+.forum-item.active .fa {
+ color: #18b090;
+}
+
+.forum-item.active a.forum-item-title {
+ color: #18b090;
+}
+
+@media (max-width: 992px) {
+ .forum-info {
+ margin: 15px 0 10px 0;
+ /* Comment this is you want to show forum info in small devices */
+ display: none;
+ }
+
+ .forum-desc {
+ float: none !important;
+ }
+}
+
+/* New Timeline style */
+.vertical-container {
+ /* this class is used to give a max-width to the element it is applied to, and center it horizontally when it reaches that max-width */
+ width: 90%;
+ max-width: 1170px;
+ margin: 0 auto;
+}
+
+.vertical-container::after {
+ /* clearfix */
+ content: '';
+ display: table;
+ clear: both;
+}
+
+#vertical-timeline {
+ position: relative;
+ padding: 0;
+ margin-top: 2em;
+ margin-bottom: 2em;
+}
+
+#vertical-timeline::before {
+ content: '';
+ position: absolute;
+ top: 0;
+ left: 18px;
+ height: 100%;
+ width: 4px;
+ background: var(--bg-mid);
+}
+
+.vertical-timeline-content .btn {
+ float: right;
+}
+
+#vertical-timeline.light-timeline:before {
+ background: var(--border-color);
+}
+
+.dark-timeline .vertical-timeline-content:before {
+ border-color: transparent #f8f8f8 transparent transparent;
+}
+
+.dark-timeline.center-orientation .vertical-timeline-content:before {
+ border-color: transparent transparent transparent #f8f8f8;
+}
+
+.dark-timeline .vertical-timeline-block:nth-child(2n) .vertical-timeline-content:before,
+.dark-timeline.center-orientation .vertical-timeline-block:nth-child(2n) .vertical-timeline-content:before {
+ border-color: transparent #f8f8f8 transparent transparent;
+}
+
+.dark-timeline .vertical-timeline-content,
+.dark-timeline.center-orientation .vertical-timeline-content {
+ background: #f8f8f8;
+}
+
+@media only screen and (min-width: 1170px) {
+ #vertical-timeline.center-orientation {
+ margin-top: 3em;
+ margin-bottom: 3em;
+ }
+
+ #vertical-timeline.center-orientation:before {
+ left: 50%;
+ margin-left: -2px;
+ }
+}
+
+@media only screen and (max-width: 1170px) {
+ .center-orientation.dark-timeline .vertical-timeline-content:before {
+ border-color: transparent #f8f8f8 transparent transparent;
+ }
+}
+
+.vertical-timeline-block {
+ position: relative;
+ margin: 2em 0;
+}
+
+.vertical-timeline-block:after {
+ content: "";
+ display: table;
+ clear: both;
+}
+
+.vertical-timeline-block:first-child {
+ margin-top: 0;
+}
+
+.vertical-timeline-block:last-child {
+ margin-bottom: 0;
+}
+
+@media only screen and (min-width: 1170px) {
+ .center-orientation .vertical-timeline-block {
+ margin: 4em 0;
+ }
+
+ .center-orientation .vertical-timeline-block:first-child {
+ margin-top: 0;
+ }
+
+ .center-orientation .vertical-timeline-block:last-child {
+ margin-bottom: 0;
+ }
+}
+
+.vertical-timeline-icon {
+ position: absolute;
+ top: 0;
+ left: 0;
+ width: 40px;
+ height: 40px;
+ border-radius: 50%;
+ font-size: 16px;
+ border: 3px solid var(--bg-mid);
+ text-align: center;
+}
+
+.vertical-timeline-icon i {
+ display: block;
+ width: 24px;
+ height: 24px;
+ position: relative;
+ left: 50%;
+ top: 50%;
+ margin-left: -12px;
+ margin-top: -9px;
+}
+
+@media only screen and (min-width: 1170px) {
+ .center-orientation .vertical-timeline-icon {
+ width: 50px;
+ height: 50px;
+ left: 50%;
+ margin-left: -25px;
+ -webkit-transform: translateZ(0);
+ -webkit-backface-visibility: hidden;
+ font-size: 19px;
+ }
+
+ .center-orientation .vertical-timeline-icon i {
+ margin-left: -12px;
+ margin-top: -10px;
+ }
+
+ .center-orientation .cssanimations .vertical-timeline-icon.is-hidden {
+ visibility: hidden;
+ }
+}
+
+.vertical-timeline-content {
+ position: relative;
+ margin-left: 60px;
+ background: white;
+ border-radius: 0.25em;
+ padding: 1em;
+}
+
+.vertical-timeline-content:after {
+ content: "";
+ display: table;
+ clear: both;
+}
+
+.vertical-timeline-content h2 {
+ font-weight: 400;
+ margin-top: 4px;
+}
+
+.vertical-timeline-content p {
+ margin: 1em 0;
+ line-height: 1.6;
+}
+
+.vertical-timeline-content .vertical-date {
+ float: left;
+ font-weight: 500;
+}
+
+.vertical-date small {
+ color: #18b090;
+ font-weight: 400;
+}
+
+.vertical-timeline-content::before {
+ content: '';
+ position: absolute;
+ top: 16px;
+ right: 100%;
+ height: 0;
+ width: 0;
+ border: 7px solid transparent;
+ border-right: 7px solid white;
+}
+
+@media only screen and (min-width: 768px) {
+ .vertical-timeline-content h2 {
+ font-size: 18px;
+ }
+
+ .vertical-timeline-content p {
+ font-size: 13px;
+ }
+}
+
+@media only screen and (min-width: 1170px) {
+ .center-orientation .vertical-timeline-content {
+ margin-left: 0;
+ padding: 1.6em;
+ width: 45%;
+ }
+
+ .center-orientation .vertical-timeline-content::before {
+ top: 24px;
+ left: 100%;
+ border-color: transparent;
+ border-left-color: white;
+ }
+
+ .center-orientation .vertical-timeline-content .btn {
+ float: left;
+ }
+
+ .center-orientation .vertical-timeline-content .vertical-date {
+ position: absolute;
+ width: 100%;
+ left: 122%;
+ top: 2px;
+ font-size: 14px;
+ }
+
+ .center-orientation .vertical-timeline-block:nth-child(even) .vertical-timeline-content {
+ float: right;
+ }
+
+ .center-orientation .vertical-timeline-block:nth-child(even) .vertical-timeline-content::before {
+ top: 24px;
+ left: auto;
+ right: 100%;
+ border-color: transparent;
+ border-right-color: white;
+ }
+
+ .center-orientation .vertical-timeline-block:nth-child(even) .vertical-timeline-content .btn {
+ float: right;
+ }
+
+ .center-orientation .vertical-timeline-block:nth-child(even) .vertical-timeline-content .vertical-date {
+ left: auto;
+ right: 122%;
+ text-align: right;
+ }
+
+ .center-orientation .cssanimations .vertical-timeline-content.is-hidden {
+ visibility: hidden;
+ }
+}
+
+/* Tabs */
+.tabs-container .panel-body {
+ background: #fff;
+ border: 1px solid var(--border-color);
+ border-radius: 2px;
+ padding: 20px;
+ position: relative;
+}
+
+.tabs-container .nav-tabs > li.active > a,
+.tabs-container .nav-tabs > li.active > a:hover,
+.tabs-container .nav-tabs > li.active > a:focus {
+ border: 1px solid var(--border-color);
+ border-bottom-color: transparent;
+ background-color: #fff;
+}
+
+.tabs-container .nav-tabs > li {
+ float: left;
+ margin-bottom: -1px;
+}
+
+.tabs-container .tab-pane .panel-body {
+ border-top: none;
+}
+
+.tabs-container .nav-tabs > li.active > a,
+.tabs-container .nav-tabs > li.active > a:hover,
+.tabs-container .nav-tabs > li.active > a:focus {
+ border: 1px solid var(--border-color);
+ border-bottom-color: transparent;
+}
+
+.tabs-container .nav-tabs {
+ border-bottom: 1px solid var(--border-color);
+}
+
+.tabs-container .tab-pane .panel-body {
+ border-top: none;
+}
+
+.tabs-container .tabs-left .tab-pane .panel-body,
+.tabs-container .tabs-right .tab-pane .panel-body {
+ border-top: 1px solid var(--border-color);
+}
+
+.tabs-container .tabs-below > .nav-tabs,
+.tabs-container .tabs-right > .nav-tabs,
+.tabs-container .tabs-left > .nav-tabs {
+ border-bottom: 0;
+}
+
+.tabs-container .tabs-left .panel-body {
+ position: static;
+}
+
+.tabs-container .tabs-left > .nav-tabs,
+.tabs-container .tabs-right > .nav-tabs {
+ width: 20%;
+}
+
+.tabs-container .tabs-left .panel-body {
+ width: 80%;
+ margin-left: 20%;
+}
+
+.tabs-container .tabs-right .panel-body {
+ width: 80%;
+ margin-right: 20%;
+}
+
+.tabs-container .tab-content > .tab-pane,
+.tabs-container .pill-content > .pill-pane {
+ display: none;
+}
+
+.tabs-container .tab-content > .active,
+.tabs-container .pill-content > .active {
+ display: block;
+}
+
+.tabs-container .tabs-below > .nav-tabs {
+ border-top: 1px solid var(--border-color);
+}
+
+.tabs-container .tabs-below > .nav-tabs > li {
+ margin-top: -1px;
+ margin-bottom: 0;
+}
+
+.tabs-container .tabs-below > .nav-tabs > li > a {
+ -webkit-border-radius: 0 0 4px 4px;
+ -moz-border-radius: 0 0 4px 4px;
+ border-radius: 0 0 4px 4px;
+}
+
+.tabs-container .tabs-below > .nav-tabs > li > a:hover,
+.tabs-container .tabs-below > .nav-tabs > li > a:focus {
+ border-top-color: var(--border-color);
+ border-bottom-color: transparent;
+}
+
+.tabs-container .tabs-left > .nav-tabs > li,
+.tabs-container .tabs-right > .nav-tabs > li {
+ float: none;
+ word-break: break-word;
+ width: 100%;
+}
+
+.tabs-container .tabs-left > .nav-tabs > li > a,
+.tabs-container .tabs-right > .nav-tabs > li > a {
+ margin-right: 0;
+ margin-bottom: 3px;
+}
+
+.tabs-container .tabs-left > .nav-tabs {
+ float: left;
+ margin-right: 19px;
+}
+
+.tabs-container .tabs-left > .nav-tabs > li > a {
+ margin-right: -1px;
+ -webkit-border-radius: 4px 0 0 4px;
+ -moz-border-radius: 4px 0 0 4px;
+ border-radius: 4px 0 0 4px;
+}
+
+.tabs-container .tabs-left > .nav-tabs a.active,
+.tabs-container .tabs-left > .nav-tabs a.active:hover,
+.tabs-container .tabs-left > .nav-tabs a.active:focus {
+ border-color: var(--border-color) transparent var(--border-color) var(--border-color);
+}
+
+.tabs-container .tabs-right > .nav-tabs {
+ float: right;
+ margin-left: 19px;
+}
+
+.tabs-container .tabs-right > .nav-tabs > li > a {
+ margin-left: -1px;
+ -webkit-border-radius: 0 4px 4px 0;
+ -moz-border-radius: 0 4px 4px 0;
+ border-radius: 0 4px 4px 0;
+}
+
+.tabs-container .tabs-right > .nav-tabs a.active,
+.tabs-container .tabs-right > .nav-tabs a.active:hover,
+.tabs-container .tabs-right > .nav-tabs a.active:focus {
+ border-color: var(--border-color) var(--border-color) var(--border-color) transparent;
+ z-index: 1;
+}
+
+.tabs-container .tabs-right > .nav-tabs li {
+ z-index: 1;
+}
+
+.nav-tabs .nav-link:not(.active):focus,
+.nav-tabs .nav-link:not(.active):hover {
+ border-color: transparent;
+}
+
+@media (max-width: 767px) {
+ .tabs-container .nav-tabs > li {
+ float: none !important;
+ }
+
+ .tabs-container .nav-tabs > li.active > a {
+ border-bottom: 1px solid var(--border-color) !important;
+ margin: 0;
+ }
+}
+
+/* jsvectormap */
+.jvectormap-container {
+ width: 100%;
+ height: 100%;
+ position: relative;
+ overflow: hidden;
+}
+
+.jvectormap-tip {
+ position: absolute;
+ display: none;
+ border: solid 1px #cccccc;
+ border-radius: 3px;
+ background: #282828;
+ color: white;
+ font-family: sans-serif, Verdana;
+ font-size: smaller;
+ padding: 5px;
+}
+
+.jvectormap-zoomin,
+.jvectormap-zoomout,
+.jvectormap-goback {
+ position: absolute;
+ left: 10px;
+ border-radius: 3px;
+ background: #18b090;
+ padding: 3px;
+ color: white;
+ cursor: pointer;
+ line-height: 10px;
+ text-align: center;
+ box-sizing: content-box;
+}
+
+.jvectormap-zoomin,
+.jvectormap-zoomout {
+ width: 10px;
+ height: 10px;
+}
+
+.jvectormap-zoomin {
+ top: 10px;
+}
+
+.jvectormap-zoomout {
+ top: 30px;
+}
+
+.jvectormap-goback {
+ bottom: 10px;
+ z-index: 1000;
+ padding: 6px;
+}
+
+.jvectormap-spinner {
+ position: absolute;
+ left: 0;
+ top: 0;
+ right: 0;
+ bottom: 0;
+ background: center no-repeat url(data:image/gif;base64,R0lGODlhIAAgAPMAAP///wAAAMbGxoSEhLa2tpqamjY2NlZWVtjY2OTk5Ly8vB4eHgQEBAAAAAAAAAAAACH/C05FVFNDQVBFMi4wAwEAAAAh/hpDcmVhdGVkIHdpdGggYWpheGxvYWQuaW5mbwAh+QQJCgAAACwAAAAAIAAgAAAE5xDISWlhperN52JLhSSdRgwVo1ICQZRUsiwHpTJT4iowNS8vyW2icCF6k8HMMBkCEDskxTBDAZwuAkkqIfxIQyhBQBFvAQSDITM5VDW6XNE4KagNh6Bgwe60smQUB3d4Rz1ZBApnFASDd0hihh12BkE9kjAJVlycXIg7CQIFA6SlnJ87paqbSKiKoqusnbMdmDC2tXQlkUhziYtyWTxIfy6BE8WJt5YJvpJivxNaGmLHT0VnOgSYf0dZXS7APdpB309RnHOG5gDqXGLDaC457D1zZ/V/nmOM82XiHRLYKhKP1oZmADdEAAAh+QQJCgAAACwAAAAAIAAgAAAE6hDISWlZpOrNp1lGNRSdRpDUolIGw5RUYhhHukqFu8DsrEyqnWThGvAmhVlteBvojpTDDBUEIFwMFBRAmBkSgOrBFZogCASwBDEY/CZSg7GSE0gSCjQBMVG023xWBhklAnoEdhQEfyNqMIcKjhRsjEdnezB+A4k8gTwJhFuiW4dokXiloUepBAp5qaKpp6+Ho7aWW54wl7obvEe0kRuoplCGepwSx2jJvqHEmGt6whJpGpfJCHmOoNHKaHx61WiSR92E4lbFoq+B6QDtuetcaBPnW6+O7wDHpIiK9SaVK5GgV543tzjgGcghAgAh+QQJCgAAACwAAAAAIAAgAAAE7hDISSkxpOrN5zFHNWRdhSiVoVLHspRUMoyUakyEe8PTPCATW9A14E0UvuAKMNAZKYUZCiBMuBakSQKG8G2FzUWox2AUtAQFcBKlVQoLgQReZhQlCIJesQXI5B0CBnUMOxMCenoCfTCEWBsJColTMANldx15BGs8B5wlCZ9Po6OJkwmRpnqkqnuSrayqfKmqpLajoiW5HJq7FL1Gr2mMMcKUMIiJgIemy7xZtJsTmsM4xHiKv5KMCXqfyUCJEonXPN2rAOIAmsfB3uPoAK++G+w48edZPK+M6hLJpQg484enXIdQFSS1u6UhksENEQAAIfkECQoAAAAsAAAAACAAIAAABOcQyEmpGKLqzWcZRVUQnZYg1aBSh2GUVEIQ2aQOE+G+cD4ntpWkZQj1JIiZIogDFFyHI0UxQwFugMSOFIPJftfVAEoZLBbcLEFhlQiqGp1Vd140AUklUN3eCA51C1EWMzMCezCBBmkxVIVHBWd3HHl9JQOIJSdSnJ0TDKChCwUJjoWMPaGqDKannasMo6WnM562R5YluZRwur0wpgqZE7NKUm+FNRPIhjBJxKZteWuIBMN4zRMIVIhffcgojwCF117i4nlLnY5ztRLsnOk+aV+oJY7V7m76PdkS4trKcdg0Zc0tTcKkRAAAIfkECQoAAAAsAAAAACAAIAAABO4QyEkpKqjqzScpRaVkXZWQEximw1BSCUEIlDohrft6cpKCk5xid5MNJTaAIkekKGQkWyKHkvhKsR7ARmitkAYDYRIbUQRQjWBwJRzChi9CRlBcY1UN4g0/VNB0AlcvcAYHRyZPdEQFYV8ccwR5HWxEJ02YmRMLnJ1xCYp0Y5idpQuhopmmC2KgojKasUQDk5BNAwwMOh2RtRq5uQuPZKGIJQIGwAwGf6I0JXMpC8C7kXWDBINFMxS4DKMAWVWAGYsAdNqW5uaRxkSKJOZKaU3tPOBZ4DuK2LATgJhkPJMgTwKCdFjyPHEnKxFCDhEAACH5BAkKAAAALAAAAAAgACAAAATzEMhJaVKp6s2nIkolIJ2WkBShpkVRWqqQrhLSEu9MZJKK9y1ZrqYK9WiClmvoUaF8gIQSNeF1Er4MNFn4SRSDARWroAIETg1iVwuHjYB1kYc1mwruwXKC9gmsJXliGxc+XiUCby9ydh1sOSdMkpMTBpaXBzsfhoc5l58Gm5yToAaZhaOUqjkDgCWNHAULCwOLaTmzswadEqggQwgHuQsHIoZCHQMMQgQGubVEcxOPFAcMDAYUA85eWARmfSRQCdcMe0zeP1AAygwLlJtPNAAL19DARdPzBOWSm1brJBi45soRAWQAAkrQIykShQ9wVhHCwCQCACH5BAkKAAAALAAAAAAgACAAAATrEMhJaVKp6s2nIkqFZF2VIBWhUsJaTokqUCoBq+E71SRQeyqUToLA7VxF0JDyIQh/MVVPMt1ECZlfcjZJ9mIKoaTl1MRIl5o4CUKXOwmyrCInCKqcWtvadL2SYhyASyNDJ0uIiRMDjI0Fd30/iI2UA5GSS5UDj2l6NoqgOgN4gksEBgYFf0FDqKgHnyZ9OX8HrgYHdHpcHQULXAS2qKpENRg7eAMLC7kTBaixUYFkKAzWAAnLC7FLVxLWDBLKCwaKTULgEwbLA4hJtOkSBNqITT3xEgfLpBtzE/jiuL04RGEBgwWhShRgQExHBAAh+QQJCgAAACwAAAAAIAAgAAAE7xDISWlSqerNpyJKhWRdlSAVoVLCWk6JKlAqAavhO9UkUHsqlE6CwO1cRdCQ8iEIfzFVTzLdRAmZX3I2SfZiCqGk5dTESJeaOAlClzsJsqwiJwiqnFrb2nS9kmIcgEsjQydLiIlHehhpejaIjzh9eomSjZR+ipslWIRLAgMDOR2DOqKogTB9pCUJBagDBXR6XB0EBkIIsaRsGGMMAxoDBgYHTKJiUYEGDAzHC9EACcUGkIgFzgwZ0QsSBcXHiQvOwgDdEwfFs0sDzt4S6BK4xYjkDOzn0unFeBzOBijIm1Dgmg5YFQwsCMjp1oJ8LyIAACH5BAkKAAAALAAAAAAgACAAAATwEMhJaVKp6s2nIkqFZF2VIBWhUsJaTokqUCoBq+E71SRQeyqUToLA7VxF0JDyIQh/MVVPMt1ECZlfcjZJ9mIKoaTl1MRIl5o4CUKXOwmyrCInCKqcWtvadL2SYhyASyNDJ0uIiUd6GGl6NoiPOH16iZKNlH6KmyWFOggHhEEvAwwMA0N9GBsEC6amhnVcEwavDAazGwIDaH1ipaYLBUTCGgQDA8NdHz0FpqgTBwsLqAbWAAnIA4FWKdMLGdYGEgraigbT0OITBcg5QwPT4xLrROZL6AuQAPUS7bxLpoWidY0JtxLHKhwwMJBTHgPKdEQAACH5BAkKAAAALAAAAAAgACAAAATrEMhJaVKp6s2nIkqFZF2VIBWhUsJaTokqUCoBq+E71SRQeyqUToLA7VxF0JDyIQh/MVVPMt1ECZlfcjZJ9mIKoaTl1MRIl5o4CUKXOwmyrCInCKqcWtvadL2SYhyASyNDJ0uIiUd6GAULDJCRiXo1CpGXDJOUjY+Yip9DhToJA4RBLwMLCwVDfRgbBAaqqoZ1XBMHswsHtxtFaH1iqaoGNgAIxRpbFAgfPQSqpbgGBqUD1wBXeCYp1AYZ19JJOYgH1KwA4UBvQwXUBxPqVD9L3sbp2BNk2xvvFPJd+MFCN6HAAIKgNggY0KtEBAAh+QQJCgAAACwAAAAAIAAgAAAE6BDISWlSqerNpyJKhWRdlSAVoVLCWk6JKlAqAavhO9UkUHsqlE6CwO1cRdCQ8iEIfzFVTzLdRAmZX3I2SfYIDMaAFdTESJeaEDAIMxYFqrOUaNW4E4ObYcCXaiBVEgULe0NJaxxtYksjh2NLkZISgDgJhHthkpU4mW6blRiYmZOlh4JWkDqILwUGBnE6TYEbCgevr0N1gH4At7gHiRpFaLNrrq8HNgAJA70AWxQIH1+vsYMDAzZQPC9VCNkDWUhGkuE5PxJNwiUK4UfLzOlD4WvzAHaoG9nxPi5d+jYUqfAhhykOFwJWiAAAIfkECQoAAAAsAAAAACAAIAAABPAQyElpUqnqzaciSoVkXVUMFaFSwlpOCcMYlErAavhOMnNLNo8KsZsMZItJEIDIFSkLGQoQTNhIsFehRww2CQLKF0tYGKYSg+ygsZIuNqJksKgbfgIGepNo2cIUB3V1B3IvNiBYNQaDSTtfhhx0CwVPI0UJe0+bm4g5VgcGoqOcnjmjqDSdnhgEoamcsZuXO1aWQy8KAwOAuTYYGwi7w5h+Kr0SJ8MFihpNbx+4Erq7BYBuzsdiH1jCAzoSfl0rVirNbRXlBBlLX+BP0XJLAPGzTkAuAOqb0WT5AH7OcdCm5B8TgRwSRKIHQtaLCwg1RAAAOwAAAAAAAAAAAA==);
+}
+
+.jvectormap-legend-title {
+ font-weight: bold;
+ font-size: 14px;
+ text-align: center;
+}
+
+.jvectormap-legend-cnt {
+ position: absolute;
+}
+
+.jvectormap-legend-cnt-h {
+ bottom: 0;
+ right: 0;
+}
+
+.jvectormap-legend-cnt-v {
+ top: 0;
+ right: 0;
+}
+
+.jvectormap-legend {
+ background: black;
+ color: white;
+ border-radius: 3px;
+}
+
+.jvectormap-legend-cnt-h .jvectormap-legend {
+ float: left;
+ margin: 0 10px 10px 0;
+ padding: 3px 3px 1px 3px;
+}
+
+.jvectormap-legend-cnt-h .jvectormap-legend .jvectormap-legend-tick {
+ float: left;
+}
+
+.jvectormap-legend-cnt-v .jvectormap-legend {
+ margin: 10px 10px 0 0;
+ padding: 3px;
+}
+
+.jvectormap-legend-cnt-h .jvectormap-legend-tick {
+ width: 40px;
+}
+
+.jvectormap-legend-cnt-h .jvectormap-legend-tick-sample {
+ height: 15px;
+}
+
+.jvectormap-legend-cnt-v .jvectormap-legend-tick-sample {
+ height: 20px;
+ width: 20px;
+ display: inline-block;
+ vertical-align: middle;
+}
+
+.jvectormap-legend-tick-text {
+ font-size: 12px;
+}
+
+.jvectormap-legend-cnt-h .jvectormap-legend-tick-text {
+ text-align: center;
+}
+
+.jvectormap-legend-cnt-v .jvectormap-legend-tick-text {
+ display: inline-block;
+ vertical-align: middle;
+ line-height: 20px;
+ padding-left: 3px;
+}
+
+/*Slick Carousel */
+.slick-prev:before,
+.slick-next:before {
+ color: #18b090 !important;
+}
+
+/* Payments */
+.payment-card {
+ background: #ffffff;
+ padding: 20px;
+ margin-bottom: 25px;
+ border: 1px solid var(--border-color);
+}
+
+.payment-icon-big {
+ font-size: 60px;
+ color: #d0d8e0;
+}
+
+.payments-method.panel-group .panel + .panel {
+ margin-top: -1px;
+}
+
+.payments-method .panel-heading {
+ padding: 15px;
+ background-color: var(--bg-mid);
+}
+
+.payments-method .panel-default {
+ border: 1px solid var(--border-color);
+}
+
+.payments-method .panel {
+ border-radius: 0;
+}
+
+.payments-method .panel-heading h5 {
+ margin-bottom: 5px;
+}
+
+.payments-method .panel-heading i {
+ font-size: 26px;
+}
+
+/* Select2 custom styles */
+.select2-container--bootstrap4 .select2-results__option--highlighted,
+.select2-container--bootstrap4 .select2-results__option--highlighted.select2-results__option[aria-selected=true] {
+ background-color: #18b090;
+}
+
+.select2-container--bootstrap4 .select2-selection,
+.select2-container--bootstrap4 .select2-dropdown.select2-dropdown--above,
+.select2-container--bootstrap4 .select2-dropdown {
+ border-color: var(--border-color);
+}
+
+.select2-container :focus {
+ outline: none;
+}
+
+.select2-container--bootstrap4.select2-container--focus .select2-selection {
+ box-shadow: none;
+ border-color: #18b090;
+}
+
+.select2-container--bootstrap4 .select2-selection__clear {
+ margin-top: 0.9em;
+}
+
+/* Tour */
+.tour-tour .btn.btn-default {
+ background-color: #ffffff;
+ border: 1px solid #cccccc;
+ color: inherit;
+}
+
+.tour-step-backdrop {
+ z-index: 2101;
+}
+
+.tour-backdrop {
+ z-index: 2100;
+ opacity: .7;
+}
+
+.popover[class*=tour-] {
+ z-index: 2100;
+}
+
+.popover-header {
+ margin-top: 0;
+}
+
+body.tour-open .animated {
+ animation-fill-mode: initial;
+}
+
+.tour-tour .btn.btn-secondary {
+ background-color: #ffffff;
+ border: 1px solid #cccccc;
+ color: inherit;
+}
+
+/* Resizable */
+.resizable-panels .ibox {
+ clear: none;
+ margin: 10px;
+ float: left;
+ overflow: hidden;
+ min-height: 150px;
+ min-width: 150px;
+}
+
+.resizable-panels .ibox .ibox-content {
+ height: calc(100% - 49px);
+}
+
+.ui-resizable-helper {
+ background: rgba(204, 204, 204, 0.4);
+}
+
+/* Wizard step fix */
+.wizard > .content > .body {
+ position: relative;
+}
+
+/* PDF js style */
+.pdf-toolbar {
+ max-width: 600px;
+ margin: 0 auto;
+}
+
+.pdf-toolbar .input-group {
+ width: 100px;
+}
+
+/* Dropzone */
+.dropzone {
+ min-height: 140px;
+ border: 1px dashed #18b090;
+ background: white;
+ padding: 20px 20px;
+}
+
+.dropzone .dz-message {
+ font-size: 16px;
+}
+
+/* Activity stream */
+.stream {
+ position: relative;
+ padding: 10px 0;
+}
+
+.stream:first-child .stream-badge:before {
+ top: 10px;
+}
+
+.stream:last-child .stream-badge:before {
+ height: 30px;
+}
+
+.stream .stream-badge {
+ width: 50px;
+}
+
+.stream .stream-badge i {
+ border: 1px solid var(--border-color);
+ border-radius: 50%;
+ padding: 6px;
+ color: #808088;
+ position: absolute;
+ background-color: #ffffff;
+ left: 8px;
+}
+
+.stream .stream-badge i.fa-circle {
+ color: #cccccc;
+}
+
+.stream .stream-badge i.bg-success {
+ color: #ffffff;
+ background-color: #2080c8;
+ border-color: #2080c8;
+}
+
+.stream .stream-badge i.bg-primary {
+ color: #ffffff;
+ background-color: #18b090;
+ border-color: #18b090;
+}
+
+.stream .stream-badge i.bg-warning {
+ color: #ffffff;
+ background-color: #f8b058;
+ border-color: #f8b058;
+}
+
+.stream .stream-badge i.bg-info {
+ color: #ffffff;
+ background-color: #20c8c8;
+ border-color: #20c8c8;
+}
+
+.stream .stream-badge i.bg-danger {
+ color: #ffffff;
+ background-color: #f05868;
+ border-color: #f05868;
+}
+
+.stream .stream-badge:before {
+ content: '';
+ width: 1px;
+ background-color: var(--border-color);
+ position: absolute;
+ top: 0;
+ bottom: 0;
+ left: 20px;
+}
+
+.stream .stream-info {
+ font-size: 12px;
+ margin-bottom: 5px;
+}
+
+.stream .stream-info img {
+ border-radius: 50%;
+ width: 18px;
+ height: 18px;
+ margin-right: 2px;
+ margin-top: -4px;
+}
+
+.stream .stream-info .date {
+ color: #999999;
+ font-size: 80%;
+}
+
+.stream .stream-panel {
+ margin-left: 55px;
+}
+
+.stream-small {
+ margin: 10px 0;
+}
+
+.stream-small .label {
+ padding: 2px 6px;
+ margin-right: 2px;
+}
+
+/* Touch Spin */
+.bootstrap-touchspin-postfix.input-group-addon {
+ padding: inherit;
+}
+
+.bootstrap-touchspin-postfix .input-group-text {
+ background-color: inherit;
+ line-height: 1;
+ border: none;
+}
+
+/* Code */
+pre {
+ display: block;
+ padding: 9.5px;
+ margin: 0 0 10px;
+ font-size: 13px;
+ line-height: 1.42857143;
+ color: #333;
+ word-break: break-all;
+ word-wrap: break-word;
+ background-color: var(--bg-mid);
+ border: 1px solid #d0d8e0;
+ border-radius: 2px;
+}
+
+code,
+kbd,
+pre,
+samp {
+ font-family: Menlo, Monaco, Consolas, "Courier New", monospace;
+}
+
+.sidebar-panel {
+ width: 220px;
+ background: var(--border-color);
+ padding: 10px 20px;
+ position: absolute;
+ right: 0;
+ height: calc(100% - 62px);
+}
+
+.sidebar-panel .feed-element img.rounded-circle {
+ width: 32px;
+ height: 32px;
+}
+
+.sidebar-panel .feed-element,
+.media-body,
+.sidebar-panel p {
+ font-size: 12px;
+}
+
+.sidebar-panel .feed-element {
+ margin-top: 20px;
+ padding-bottom: 0;
+}
+
+.sidebar-panel .list-group {
+ margin-bottom: 10px;
+}
+
+.sidebar-panel .list-group .list-group-item {
+ padding: 5px 0;
+ font-size: 12px;
+ border: 0;
+}
+
+.sidebar-content .wrapper,
+.wrapper.sidebar-content {
+ padding-right: 230px !important;
+}
+
+.body-small .sidebar-content .wrapper,
+.body-small .wrapper.sidebar-content {
+ padding-right: 20px !important;
+}
+
+#right-sidebar {
+ background-color: #fff;
+ border-left: 1px solid var(--border-color);
+ border-top: 1px solid var(--border-color);
+ overflow: hidden;
+ position: fixed;
+ top: 60px;
+ width: 260px !important;
+ z-index: 1009;
+ bottom: 0;
+ right: -260px;
+}
+
+#right-sidebar.sidebar-open {
+ right: 0;
+}
+
+#right-sidebar.sidebar-open.sidebar-top {
+ top: 0;
+ border-top: none;
+}
+
+.sidebar-container ul.nav-tabs {
+ border: none;
+}
+
+.sidebar-container ul.nav-tabs.navs-4 li {
+ width: 25%;
+}
+
+.sidebar-container ul.nav-tabs.navs-3 li {
+ width: 33.3333%;
+}
+
+.sidebar-container ul.nav-tabs.navs-2 li {
+ width: 50%;
+}
+
+.sidebar-container ul.nav-tabs li {
+ border: none;
+}
+
+.sidebar-container ul.nav-tabs li a {
+ border: none;
+ padding: 12px 10px;
+ margin: 0;
+ border-radius: 0;
+ background: var(--base-color);
+ color: #fff;
+ text-align: center;
+ border-right: 1px solid #304858;
+}
+
+.sidebar-container ul.nav-tabs li.active a {
+ border: none;
+ background: #f8f8f8;
+ color: var(--text);
+ font-weight: bold;
+}
+
+.sidebar-container .nav-tabs > li.active > a:hover,
+.sidebar-container .nav-tabs > li.active > a:focus {
+ border: none;
+}
+
+.sidebar-container ul.sidebar-list {
+ margin: 0;
+ padding: 0;
+}
+
+.sidebar-container ul.sidebar-list li {
+ border-bottom: 1px solid var(--border-color);
+ padding: 15px 20px;
+ list-style: none;
+ font-size: 12px;
+}
+
+.sidebar-container .sidebar-message:nth-child(2n+2) {
+ background: #f8f8f8;
+}
+
+.sidebar-container ul.sidebar-list li a {
+ text-decoration: none;
+ color: inherit;
+}
+
+.sidebar-container .sidebar-content {
+ padding: 15px 20px;
+ font-size: 12px;
+}
+
+.sidebar-container .sidebar-title {
+ background: #f8f8f8;
+ padding: 20px;
+ border-bottom: 1px solid var(--border-color);
+}
+
+.sidebar-container .sidebar-title h3 {
+ margin-bottom: 3px;
+ padding-left: 2px;
+}
+
+.sidebar-container .tab-content h4 {
+ margin-bottom: 5px;
+}
+
+.sidebar-container .sidebar-message > a > .float-left {
+ margin-right: 10px;
+}
+
+.sidebar-container .sidebar-message > a {
+ text-decoration: none;
+ color: inherit;
+}
+
+.sidebar-container .sidebar-message {
+ padding: 15px 20px;
+}
+
+.sidebar-container .sidebar-message .media-body {
+ display: block;
+ width: auto;
+}
+
+.sidebar-container .sidebar-message .message-avatar {
+ height: 38px;
+ width: 38px;
+ border-radius: 50%;
+}
+
+.sidebar-container .setings-item {
+ padding: 15px 20px;
+ border-bottom: 1px solid var(--border-color);
+}
+
+body {
+ font-family: SourceCodePro, Consolas, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto,"Helvetica Neue", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol";
+ background-color: var(--base-color);
+ font-size: 13px;
+ color: var(--text);
+ overflow-x: hidden;
+}
+
+html,
+body {
+ height: 100%;
+}
+
+body.full-height-layout #wrapper,
+body.full-height-layout #page-wrapper {
+ height: 100%;
+}
+
+#page-wrapper {
+ min-height: 100vh;
+}
+
+body.boxed-layout {
+ background: url('patterns/shattered.png');
+}
+
+body.boxed-layout #wrapper {
+ background-color: #304050;
+ max-width: 1200px;
+ margin: 0 auto;
+ -webkit-box-shadow: 0 0 5px 0 rgba(0, 0, 0, 0.75);
+ -moz-box-shadow: 0 0 5px 0 rgba(0, 0, 0, 0.75);
+ box-shadow: 0 0 5px 0 rgba(0, 0, 0, 0.75);
+}
+
+.top-navigation.boxed-layout #wrapper,
+.boxed-layout #wrapper.top-navigation {
+ max-width: 1300px !important;
+}
+
+.block {
+ display: block;
+}
+
+.clear {
+ display: block;
+ overflow: hidden;
+}
+
+a {
+ cursor: pointer;
+}
+
+a:hover,
+a:focus {
+ text-decoration: none;
+}
+
+.border-bottom {
+ border-bottom: 1px solid var(--border-color) !important;
+}
+
+.font-bold {
+ font-weight: 600;
+}
+
+.font-normal {
+ font-weight: 400;
+}
+
+.text-uppercase {
+ text-transform: uppercase;
+}
+
+.font-italic {
+ font-style: italic;
+}
+
+.b-r {
+ border-right: 1px solid var(--border-color);
+}
+
+.hr-line-dashed {
+ border-top: 1px dashed var(--border-color);
+ color: #ffffff;
+ background-color: #ffffff;
+ height: 1px;
+ margin: 20px 0;
+}
+
+.hr-line-solid {
+ border-bottom: 1px solid var(--border-color);
+ background-color: rgba(0, 0, 0, 0);
+ border-style: solid !important;
+ margin-top: 15px;
+ margin-bottom: 15px;
+}
+
+video {
+ width: 100% !important;
+ height: auto !important;
+}
+
+/* GALLERY */
+.gallery > .row > div {
+ margin-bottom: 15px;
+}
+
+.fancybox img {
+ margin-bottom: 5px;
+ /* Only for demo */
+ width: 24%;
+}
+
+/* Summernote text editor */
+.note-editor {
+ height: auto !important;
+}
+
+.note-editor.fullscreen {
+ z-index: 2050;
+}
+
+.note-editor.note-frame.fullscreen {
+ z-index: 2020;
+}
+
+.note-editor.note-frame .note-editing-area .note-editable {
+ color: var(--text);
+ padding: 15px;
+}
+
+.note-editor.note-frame {
+ border: none;
+}
+
+.note-editor.panel {
+ margin-bottom: 0;
+}
+
+/* MODAL */
+.modal-content {
+ background-clip: padding-box;
+ background-color: #ffffff;
+ border: 1px solid rgba(0, 0, 0, 0);
+ border-radius: 4px;
+ box-shadow: 0 1px 3px rgba(0, 0, 0, 0.3);
+ outline: 0 none;
+ position: relative;
+}
+
+.modal-dialog {
+ z-index: 2200;
+}
+
+.modal-body {
+ padding: 20px 30px 30px 30px;
+}
+
+.inmodal .modal-body {
+ background: #f8f8f8;
+}
+
+.inmodal .modal-header {
+ padding: 30px 15px;
+ text-align: center;
+ display: block;
+}
+
+.animated.modal.fade .modal-dialog {
+ -webkit-transform: none;
+ -ms-transform: none;
+ -o-transform: none;
+ transform: none;
+}
+
+.inmodal .modal-title {
+ font-size: 26px;
+}
+
+.inmodal .modal-icon {
+ font-size: 84px;
+ color: #e0e0e0;
+}
+
+.modal-footer {
+ margin-top: 0;
+}
+
+/* WRAPPERS */
+#wrapper {
+ width: 100%;
+ overflow-x: hidden;
+ display: -ms-flex;
+ display: -webkit-flex;
+ display: flex;
+}
+
+.wrapper {
+ padding: 0 20px;
+}
+
+.page-content {
+ flex: 1;
+ position: relative;
+ z-index: 0;
+}
+
+.wrapper-content {
+ padding: 20px 20px 35px 20px;
+ position: absolute;
+ top: 0;
+ bottom: 0;
+ left: 0;
+ right: 0;
+ overflow: auto;
+}
+
+#page-wrapper {
+ padding: 0;
+ position: relative !important;
+ flex-shrink: 1;
+ width: calc(100% - 220px);
+ display: flex;
+ flex-direction: column;
+}
+
+@media (min-width: 768px) {
+ #page-wrapper {
+ position: inherit;
+ }
+}
+
+.title-action {
+ text-align: right;
+ padding-top: 30px;
+}
+
+.ibox-content h1,
+.ibox-content h2,
+.ibox-content h3,
+.ibox-content h4,
+.ibox-content h5,
+.ibox-title h1,
+.ibox-title h2,
+.ibox-title h3,
+.ibox-title h4,
+.ibox-title h5 {
+ margin-top: 5px;
+}
+
+ul.unstyled,
+ol.unstyled {
+ list-style: none outside none;
+ margin-left: 0;
+}
+
+.big-icon {
+ font-size: 160px !important;
+ color: #e8e8e8;
+}
+
+/* FOOTER */
+.footer {
+ background: none repeat scroll 0 0 var(--bg);
+ border-top: 1px solid var(--border-color);
+ bottom: 0;
+ left: 0;
+ padding: 10px 20px;
+ position: absolute;
+ right: 0;
+}
+
+.footer.fixed_full {
+ position: fixed;
+ bottom: 0;
+ left: 0;
+ right: 0;
+ z-index: 1000;
+ padding: 10px 20px;
+ background: white;
+ border-top: 1px solid var(--border-color);
+}
+
+.footer.fixed {
+ position: fixed;
+ bottom: 0;
+ left: 0;
+ right: 0;
+ z-index: 1000;
+ padding: 10px 20px;
+ background: var(--bg-mid);
+ border-top: 1px solid transparent;
+ margin-left: 220px;
+}
+
+body.mini-navbar .footer.fixed,
+body.body-small.mini-navbar .footer.fixed {
+ margin: 0 0 0 70px;
+}
+
+body.mini-navbar.fixed-sidebar .footer.fixed {
+ margin: 0;
+}
+
+body.mini-navbar.canvas-menu .footer.fixed,
+body.canvas-menu .footer.fixed {
+ margin: 0 !important;
+}
+
+body.fixed-sidebar.body-small.mini-navbar .footer.fixed {
+ margin: 0 0 0 220px;
+}
+
+body.body-small .footer.fixed {
+ margin-left: 0;
+}
+
+/* PANELS */
+.panel-title > .small,
+.panel-title > .small > a,
+.panel-title > a,
+.panel-title > small,
+.panel-title > small > a {
+ color: inherit;
+}
+
+.page-heading {
+ border-top: 0;
+ padding: 0 10px 20px 10px;
+}
+
+.panel-heading h1,
+.panel-heading h2 {
+ margin-bottom: 5px;
+}
+
+.panel-body {
+ padding: 15px;
+}
+
+/* Bootstrap 3.3.x panels */
+.panel {
+ margin-bottom: 20px;
+ background-color: #fff;
+ border: 1px solid transparent;
+ border-radius: 4px;
+}
+
+.panel-heading {
+ color: white;
+ padding: 10px 15px;
+ border-bottom: 1px solid transparent;
+ border-top-left-radius: 3px;
+ border-top-right-radius: 3px;
+}
+
+.panel-footer {
+ padding: 10px 15px;
+ border-top: 1px solid var(--border-color);
+ border-bottom-right-radius: 3px;
+ border-bottom-left-radius: 3px;
+}
+
+.panel-default > .panel-heading {
+ color: #333;
+ background-color: #f8f8f8;
+ border-color: var(--border-color);
+}
+
+.panel-default {
+ border-color: var(--border-color);
+}
+
+.panel-group .panel + .panel {
+ margin-top: 5px;
+}
+
+.panel-group .panel {
+ margin-bottom: 0;
+ border-radius: 4px;
+}
+
+/* TABLES */
+.table > caption + thead > tr:first-child > td,
+.table > caption + thead > tr:first-child > th,
+.table > colgroup + thead > tr:first-child > td,
+.table > colgroup + thead > tr:first-child > th,
+.table > thead:first-child > tr:first-child > td,
+.table > thead:first-child > tr:first-child > th {
+ border-top: 0;
+}
+
+.table-bordered {
+ border: 1px solid transparent;
+}
+
+.table-bordered > thead > tr > th,
+.table-bordered > thead > tr > td {
+ background-color: transparent;
+ border-bottom-width: 1px;
+}
+
+.table-bordered > thead > tr > th,
+.table-bordered > tbody > tr > th,
+.table-bordered > tfoot > tr > th,
+.table-bordered > thead > tr > td,
+.table-bordered > tbody > tr > td,
+.table-bordered > tfoot > tr > td {
+ border: 1px solid transparent;
+}
+
+.table > thead > tr > th {
+ border-bottom: 1px solid transparent;
+ vertical-align: bottom;
+}
+
+.table > thead > tr > th,
+.table > tbody > tr > th,
+.table > tfoot > tr > th,
+.table > thead > tr > td,
+.table > tbody > tr > td,
+.table > tfoot > tr > td {
+ border-top: 1px solid var(--border-color);
+ line-height: 1.42857;
+ padding: 8px;
+ vertical-align: top;
+}
+
+/* PANELS */
+.panel.blank-panel {
+ background: none;
+ margin: 0;
+}
+
+.blank-panel .panel-heading {
+ padding-bottom: 0;
+}
+
+.nav-tabs > li > a {
+ color: var(--nav-text-color);
+ font-weight: 600;
+ padding: 10px 20px 10px 25px;
+}
+
+.nav-tabs > li > a:hover,
+.nav-tabs > li > a:focus {
+ color: var(--text);
+}
+
+.ui-tab .tab-content {
+ padding: 20px 0;
+}
+
+/* GLOBAL */
+.no-padding {
+ padding: 0 !important;
+}
+
+.no-borders {
+ border: none !important;
+}
+
+.no-margins {
+ margin: 0 !important;
+}
+
+.no-top-border {
+ border-top: 0 !important;
+}
+
+.ibox-content.text-box {
+ padding-bottom: 0;
+ padding-top: 15px;
+}
+
+.border-left-right {
+ border-left: 1px solid var(--border-color);
+ border-right: 1px solid var(--border-color);
+}
+
+.border-top-bottom {
+ border-top: 1px solid var(--border-color);
+ border-bottom: 1px solid var(--border-color);
+}
+
+.border-left {
+ border-left: 1px solid var(--border-color);
+}
+
+.border-right {
+ border-right: 1px solid var(--border-color);
+}
+
+.border-top {
+ border-top: 1px solid var(--border-color);
+}
+
+.border-bottom {
+ border-bottom: 1px solid var(--border-color);
+}
+
+.border-size-sm {
+ border-width: 3px;
+}
+
+.border-size-md {
+ border-width: 6px;
+}
+
+.border-size-lg {
+ border-width: 9px;
+}
+
+.border-size-xl {
+ border-width: 12px;
+}
+
+.full-width {
+ width: 100% !important;
+}
+
+.link-block {
+ font-size: 12px;
+ padding: 10px;
+}
+
+.nav.navbar-top-links .link-block a {
+ font-size: 12px;
+}
+
+.navbar-top-links {
+ text-align: right;
+}
+
+.link-block a {
+ font-size: 10px;
+ color: inherit;
+}
+
+body.mini-navbar .branding {
+ display: none;
+}
+
+img.circle-border {
+ border: 6px solid #ffffff;
+ border-radius: 50%;
+}
+
+.branding {
+ float: left;
+ color: #ffffff;
+ font-size: 18px;
+ font-weight: 600;
+ padding: 17px 20px;
+ text-align: center;
+ background-color: #18b090;
+}
+
+.login-panel {
+ margin-top: 25%;
+}
+
+.icons-box h3 {
+ margin-top: 10px;
+ margin-bottom: 10px;
+}
+
+.icons-box .infont a i {
+ font-size: 25px;
+ display: block;
+ color: var(--text);
+}
+
+.icons-box .infont a {
+ color: #a8a8a8;
+}
+
+.icons-box .infont a {
+ padding: 10px;
+ margin: 1px;
+ display: block;
+}
+
+.ui-draggable .ibox-title {
+ background-color: rgba(0, 0, 0, 0.8);
+ cursor: move;
+}
+
+.breadcrumb {
+ background-color: #ffffff;
+ padding: 0;
+ margin-bottom: 0;
+}
+
+.breadcrumb > li a {
+ color: inherit;
+}
+
+.breadcrumb > .active {
+ color: inherit;
+}
+
+code {
+ background-color: rgba(128, 128, 128, 0.1);
+ border-radius: 4px;
+ font-size: 90%;
+ padding: 2px 4px;
+ white-space: nowrap;
+}
+
+.ibox {
+ clear: both;
+ margin-bottom: 25px;
+ margin-top: 0;
+ padding: 0;
+}
+
+.ibox.collapsed .ibox-content {
+ display: none;
+}
+
+.ibox.collapsed .fa.fa-chevron-up:before {
+ content: "\f078";
+}
+
+.ibox.collapsed .fa.fa-chevron-down:before {
+ content: "\f077";
+}
+
+.ibox:after,
+.ibox:before {
+ display: table;
+}
+
+.ibox-title {
+ background-color: var(--bg-title);
+ border: none;
+ color: var(--text);
+ margin-bottom: 0;
+ padding: 15px;
+ min-height: 48px;
+ position: relative;
+ clear: both;
+ border-radius: 8px 8px 0 0;
+ box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1);
+}
+
+.ibox-content {
+ background-color: var(--bg);
+ color: inherit;
+ padding: 15px 20px 20px 20px;
+ border: none;
+ border-radius: 0 0 8px 8px;
+ box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1);
+}
+
+.ibox-footer {
+ color: inherit;
+ border-top: 1px solid var(--border-color);
+ font-size: 90%;
+ background: #ffffff;
+ padding: 10px 15px;
+}
+
+table.table-mail tr td {
+ padding: 12px;
+}
+
+.table-mail .check-mail {
+ padding-left: 20px;
+}
+
+.table-mail .mail-date {
+ padding-right: 20px;
+}
+
+.star-mail,
+.check-mail {
+ width: 40px;
+}
+
+.unread td a,
+.unread td {
+ font-weight: 600;
+ color: inherit;
+}
+
+.read td a,
+.read td {
+ font-weight: normal;
+ color: inherit;
+}
+
+.unread td {
+ background-color: #f8f8f8;
+}
+
+.ibox-content {
+ clear: both;
+}
+
+.ibox-heading {
+ background-color: #f0f8f8;
+ border-bottom: none;
+}
+
+.ibox-heading h3 {
+ font-weight: 200;
+ font-size: 24px;
+}
+
+.ibox-title h5 {
+ display: inline-block;
+ font-size: 14px;
+ margin: 0 0 7px;
+ padding: 0;
+ text-overflow: ellipsis;
+ float: none;
+}
+
+.ibox-title .label {
+ margin-left: 4px;
+}
+
+.ibox-title .pull-right {
+ position: absolute;
+ right: 15px;
+ top: 15px;
+}
+
+.ibox-tools {
+ display: block;
+ float: none;
+ margin-top: 0;
+ position: absolute;
+ top: 15px;
+ right: 15px;
+ padding: 0;
+ text-align: right;
+}
+
+.ibox-tools a {
+ cursor: pointer;
+ margin-left: 5px;
+ color: #c0c0c0 !important;
+}
+
+.ibox-tools a.btn-primary {
+ color: #fff !important;
+}
+
+.ibox-tools .dropdown-menu > li > a {
+ padding: 4px 10px;
+ font-size: 12px;
+ color: var(--text) !important;
+}
+
+.ibox .ibox-tools.open > .dropdown-menu {
+ left: auto;
+ right: 0;
+}
+
+.ibox-tools .dropdown-toggle::after {
+ display: none;
+}
+
+.dropdown-item {
+ width: auto;
+}
+
+.dropdown-item.active,
+.dropdown-item:active {
+ background-color: inherit;
+ color: inherit;
+}
+
+/* BACKGROUNDS */
+.gray-bg,
+.bg-muted {
+ background-color: var(--bg-mid);
+}
+
+.white-bg {
+ background-color: var(--bg);
+}
+
+.blue-bg,
+.bg-success {
+ background-color: #2080c8 !important;
+ color: #ffffff;
+}
+
+.navy-bg,
+.bg-primary {
+ background-color: #18b090 !important;
+ color: #ffffff;
+}
+
+.lazur-bg,
+.bg-info {
+ background-color: #20c8c8 !important;
+ color: #ffffff;
+}
+
+.yellow-bg,
+.bg-warning {
+ background-color: #f8b058 !important;
+ color: #ffffff;
+}
+
+.red-bg,
+.bg-danger {
+ background-color: #f05868 !important;
+ color: #ffffff;
+}
+
+.black-bg {
+ background-color: #282828;
+}
+
+.panel-primary {
+ border-color: #18b090;
+}
+
+.panel-primary > .panel-heading {
+ background-color: #18b090;
+ border-color: #18b090;
+}
+
+.panel-success {
+ border-color: #2080c8;
+}
+
+.panel-success > .panel-heading {
+ background-color: #2080c8;
+ border-color: #2080c8;
+ color: #ffffff;
+}
+
+.panel-info {
+ border-color: #20c8c8;
+}
+
+.panel-info > .panel-heading {
+ background-color: #20c8c8;
+ border-color: #20c8c8;
+ color: #ffffff;
+}
+
+.panel-warning {
+ border-color: #f8b058;
+}
+
+.panel-warning > .panel-heading {
+ background-color: #f8b058;
+ border-color: #f8b058;
+ color: #ffffff;
+}
+
+.panel-danger {
+ border-color: #f05868;
+}
+
+.panel-danger > .panel-heading {
+ background-color: #f05868;
+ border-color: #f05868;
+ color: #ffffff;
+}
+
+.progress-bar {
+ background-color: #18b090;
+}
+
+.progress-small,
+.progress-small .progress-bar {
+ height: 10px;
+}
+
+.progress-small,
+.progress-mini {
+ margin-top: 5px;
+}
+
+.progress-mini,
+.progress-mini .progress-bar {
+ height: 5px;
+ margin-bottom: 0;
+}
+
+.progress-bar-navy-light {
+ background-color: #40c8a8;
+}
+
+.progress-bar-success {
+ background-color: #2080c8;
+}
+
+.progress-bar-info {
+ background-color: #20c8c8;
+}
+
+.progress-bar-warning {
+ background-color: #f8b058;
+}
+
+.progress-bar-danger {
+ background-color: #f05868;
+}
+
+.panel-title {
+ font-size: inherit;
+}
+
+.jumbotron {
+ border-radius: 6px;
+ padding: 40px;
+}
+
+.jumbotron h1 {
+ margin-top: 0;
+}
+
+/* COLORS */
+.text-navy {
+ color: #18b090 !important;
+}
+
+.text-primary {
+ color: inherit !important;
+}
+
+.text-success {
+ color: #2080c8 !important;
+}
+
+.text-info {
+ color: #20c8c8 !important;
+}
+
+.text-warning {
+ color: #f8b058 !important;
+}
+
+.text-danger {
+ color: #f05868 !important;
+}
+
+.text-muted {
+ color: #888888 !important;
+}
+
+.text-white {
+ color: #ffffff;
+}
+
+.simple_tag {
+ background-color: var(--bg-mid);
+ border: 1px solid var(--border-color);
+ border-radius: 2px;
+ color: inherit;
+ font-size: 10px;
+ margin-right: 5px;
+ margin-top: 5px;
+ padding: 5px 12px;
+ display: inline-block;
+}
+
+.img-shadow {
+ -webkit-box-shadow: 0 0 3px 0 #909090;
+ -moz-box-shadow: 0 0 3px 0 #909090;
+ box-shadow: 0 0 3px 0 #909090;
+}
+
+/* For handle diferent bg color in AngularJS version */
+.dashboards\.dashboard_2 nav.navbar,
+.dashboards\.dashboard_3 nav.navbar,
+.mailbox\.inbox nav.navbar,
+.mailbox\.email_view nav.navbar,
+.mailbox\.email_compose nav.navbar,
+.dashboards\.dashboard_4_1 nav.navbar,
+.metrics nav.navbar,
+.metrics\.index nav.navbar,
+.dashboards\.dashboard_5 nav.navbar {
+ background: #fff;
+}
+
+/* For handle diferent bg color in MVC version */
+.Dashboard_2 .navbar.navbar-static-top,
+.Dashboard_3 .navbar.navbar-static-top,
+.Dashboard_4_1 .navbar.navbar-static-top,
+.ComposeEmail .navbar.navbar-static-top,
+.EmailView .navbar.navbar-static-top,
+.Inbox .navbar.navbar-static-top,
+.Metrics .navbar.navbar-static-top,
+.Dashboard_5 .navbar.navbar-static-top {
+ background: #fff;
+}
+
+a.close-canvas-menu {
+ position: absolute;
+ top: 10px;
+ right: 15px;
+ z-index: 1011;
+ color: #a8b0c0;
+}
+
+a.close-canvas-menu:hover {
+ color: #fff;
+}
+
+.close-canvas-menu {
+ display: none;
+}
+
+.canvas-menu .close-canvas-menu {
+ display: block;
+}
+
+.light-navbar .navbar.navbar-static-top {
+ background-color: #ffffff;
+}
+
+/* FULL HEIGHT */
+.full-height {
+ height: 100%;
+}
+
+.fh-breadcrumb {
+ height: calc(100% - 196px);
+ margin: 0 -15px;
+ position: relative;
+}
+
+.fh-no-breadcrumb {
+ height: calc(100% - 99px);
+ margin: 0 -15px;
+ position: relative;
+}
+
+.fh-column {
+ background: #fff;
+ height: 100%;
+ width: 240px;
+ float: left;
+}
+
+.modal-backdrop {
+ z-index: 2040 !important;
+}
+
+.modal {
+ z-index: 2050 !important;
+}
+
+.spiner-example {
+ height: 200px;
+ padding-top: 70px;
+}
+
+legend {
+ font-size: 1rem;
+}
+
+/* MARGINS & PADDINGS */
+.p-xxs {
+ padding: 5px;
+}
+
+.p-xs {
+ padding: 10px;
+}
+
+.p-sm {
+ padding: 15px;
+}
+
+.p-m {
+ padding: 20px;
+}
+
+.p-md {
+ padding: 25px;
+}
+
+.p-lg {
+ padding: 30px;
+}
+
+.p-xl {
+ padding: 40px;
+}
+
+.p-w-xs {
+ padding: 0 10px;
+}
+
+.p-w-sm {
+ padding: 0 15px;
+}
+
+.p-w-m {
+ padding: 0 20px;
+}
+
+.p-w-md {
+ padding: 0 25px;
+}
+
+.p-w-lg {
+ padding: 0 30px;
+}
+
+.p-w-xl {
+ padding: 0 40px;
+}
+
+.p-h-xs {
+ padding: 10px 0;
+}
+
+.p-h-sm {
+ padding: 15px 0;
+}
+
+.p-h-m {
+ padding: 20px 0;
+}
+
+.p-h-md {
+ padding: 25px 0;
+}
+
+.p-h-lg {
+ padding: 30px 0;
+}
+
+.p-h-xl {
+ padding: 40px 0;
+}
+
+.m-xxs {
+ margin: 2px 4px;
+}
+
+.m {
+ margin: 15px;
+}
+
+.m-xs {
+ margin: 5px;
+}
+
+.m-sm {
+ margin: 10px;
+}
+
+.m-md {
+ margin: 20px;
+}
+
+.m-lg {
+ margin: 30px;
+}
+
+.m-xl {
+ margin: 50px;
+}
+
+.m-n {
+ margin: 0 !important;
+}
+
+.m-l-none {
+ margin-left: 0;
+}
+
+.m-l-xs {
+ margin-left: 5px;
+}
+
+.m-l-sm {
+ margin-left: 10px;
+}
+
+.m-l {
+ margin-left: 15px;
+}
+
+.m-l-md {
+ margin-left: 20px;
+}
+
+.m-l-lg {
+ margin-left: 30px;
+}
+
+.m-l-xl {
+ margin-left: 40px;
+}
+
+.m-l-n-xxs {
+ margin-left: -1px;
+}
+
+.m-l-n-xs {
+ margin-left: -5px;
+}
+
+.m-l-n-sm {
+ margin-left: -10px;
+}
+
+.m-l-n {
+ margin-left: -15px;
+}
+
+.m-l-n-md {
+ margin-left: -20px;
+}
+
+.m-l-n-lg {
+ margin-left: -30px;
+}
+
+.m-l-n-xl {
+ margin-left: -40px;
+}
+
+.m-t-none {
+ margin-top: 0;
+}
+
+.m-t-xxs {
+ margin-top: 1px;
+}
+
+.m-t-xs {
+ margin-top: 5px;
+}
+
+.m-t-sm {
+ margin-top: 10px;
+}
+
+.m-t {
+ margin-top: 15px;
+}
+
+.m-t-md {
+ margin-top: 20px;
+}
+
+.m-t-lg {
+ margin-top: 30px;
+}
+
+.m-t-xl {
+ margin-top: 40px;
+}
+
+.m-t-n-xxs {
+ margin-top: -1px;
+}
+
+.m-t-n-xs {
+ margin-top: -5px;
+}
+
+.m-t-n-sm {
+ margin-top: -10px;
+}
+
+.m-t-n {
+ margin-top: -15px;
+}
+
+.m-t-n-md {
+ margin-top: -20px;
+}
+
+.m-t-n-lg {
+ margin-top: -30px;
+}
+
+.m-t-n-xl {
+ margin-top: -40px;
+}
+
+.m-r-none {
+ margin-right: 0;
+}
+
+.m-r-xxs {
+ margin-right: 1px;
+}
+
+.m-r-xs {
+ margin-right: 5px;
+}
+
+.m-r-sm {
+ margin-right: 10px;
+}
+
+.m-r {
+ margin-right: 15px;
+}
+
+.m-r-md {
+ margin-right: 20px;
+}
+
+.m-r-lg {
+ margin-right: 30px;
+}
+
+.m-r-xl {
+ margin-right: 40px;
+}
+
+.m-r-n-xxs {
+ margin-right: -1px;
+}
+
+.m-r-n-xs {
+ margin-right: -5px;
+}
+
+.m-r-n-sm {
+ margin-right: -10px;
+}
+
+.m-r-n {
+ margin-right: -15px;
+}
+
+.m-r-n-md {
+ margin-right: -20px;
+}
+
+.m-r-n-lg {
+ margin-right: -30px;
+}
+
+.m-r-n-xl {
+ margin-right: -40px;
+}
+
+.m-b-none {
+ margin-bottom: 0;
+}
+
+.m-b-xxs {
+ margin-bottom: 1px;
+}
+
+.m-b-xs {
+ margin-bottom: 5px;
+}
+
+.m-b-sm {
+ margin-bottom: 10px;
+}
+
+.m-b {
+ margin-bottom: 15px;
+}
+
+.m-b-md {
+ margin-bottom: 20px;
+}
+
+.m-b-lg {
+ margin-bottom: 30px;
+}
+
+.m-b-xl {
+ margin-bottom: 40px;
+}
+
+.m-b-n-xxs {
+ margin-bottom: -1px;
+}
+
+.m-b-n-xs {
+ margin-bottom: -5px;
+}
+
+.m-b-n-sm {
+ margin-bottom: -10px;
+}
+
+.m-b-n {
+ margin-bottom: -15px;
+}
+
+.m-b-n-md {
+ margin-bottom: -20px;
+}
+
+.m-b-n-lg {
+ margin-bottom: -30px;
+}
+
+.m-b-n-xl {
+ margin-bottom: -40px;
+}
+
+.space-15 {
+ margin: 15px 0;
+}
+
+.space-20 {
+ margin: 20px 0;
+}
+
+.space-25 {
+ margin: 25px 0;
+}
+
+.space-30 {
+ margin: 30px 0;
+}
+
+.img-sm {
+ width: 32px;
+ height: 32px;
+}
+
+.img-md {
+ width: 64px;
+ height: 64px;
+}
+
+.img-lg {
+ width: 96px;
+ height: 96px;
+}
+
+.b-r-xs {
+ -webkit-border-radius: 1px;
+ -moz-border-radius: 1px;
+ border-radius: 1px;
+}
+
+.b-r-sm {
+ -webkit-border-radius: 3px;
+ -moz-border-radius: 3px;
+ border-radius: 3px;
+}
+
+.b-r-md {
+ -webkit-border-radius: 6px;
+ -moz-border-radius: 6px;
+ border-radius: 6px;
+}
+
+.b-r-lg {
+ -webkit-border-radius: 12px;
+ -moz-border-radius: 12px;
+ border-radius: 12px;
+}
+
+.b-r-xl {
+ -webkit-border-radius: 24px;
+ -moz-border-radius: 24px;
+ border-radius: 24px;
+}
+
+.fullscreen-ibox-mode .animated {
+ animation: none;
+}
+
+body.fullscreen-ibox-mode {
+ overflow-y: hidden;
+}
+
+.ibox.fullscreen {
+ z-index: 2030;
+ position: fixed;
+ top: 0;
+ left: 0;
+ right: 0;
+ bottom: 0;
+ overflow: auto;
+ margin-bottom: 0;
+}
+
+.ibox.fullscreen .collapse-link {
+ display: none;
+}
+
+.ibox.fullscreen .ibox-content {
+ min-height: calc(100% - 48px);
+}
+
+body.modal-open {
+ padding-right: inherit !important;
+}
+
+_::-webkit-full-page-media,
+_:future,
+:root body.modal-open .wrapper-content.animated {
+ -webkit-animation: none;
+ -ms-animation-nam: none;
+ animation: none;
+}
+
+body.modal-open .animated {
+ animation-fill-mode: initial;
+ z-index: inherit;
+}
+
+/* Show profile dropdown on fixed sidebar */
+body.mini-navbar.fixed-sidebar .profile-element,
+.block {
+ display: block !important;
+}
+
+body.mini-navbar.fixed-sidebar .nav-header {
+ padding: 33px 25px;
+}
+
+body.mini-navbar.fixed-sidebar .logo-element {
+ display: none;
+}
+
+.fullscreen-video .animated {
+ animation: none;
+}
+
+.list-inline > li {
+ display: inline-block;
+}
+
+.custom-file-label {
+ padding: .5rem .75rem;
+}
+
+.custom-file-label::after {
+ padding: .5rem .75rem;
+}
+
+/* SEARCH PAGE */
+.search-form {
+ margin-top: 10px;
+}
+
+.search-result h3 {
+ margin-bottom: 0;
+ color: #2010c0;
+}
+
+.search-result .search-link {
+ color: #006820;
+}
+
+.search-result p {
+ font-size: 12px;
+ margin-top: 5px;
+}
+
+/* CONTACTS */
+.contact-box {
+ background-color: #ffffff;
+ border: 1px solid var(--border-color);
+ padding: 20px;
+ margin-bottom: 20px;
+}
+
+.contact-box > a {
+ color: inherit;
+}
+
+.contact-box.center-version {
+ border: 1px solid var(--border-color);
+ padding: 0;
+}
+
+.contact-box.center-version > a {
+ display: block;
+ background-color: #ffffff;
+ padding: 20px;
+ text-align: center;
+}
+
+.contact-box.center-version > a img {
+ width: 80px;
+ height: 80px;
+ margin-top: 10px;
+ margin-bottom: 10px;
+}
+
+.contact-box.center-version address {
+ margin-bottom: 0;
+}
+
+.contact-box .contact-box-footer {
+ text-align: center;
+ background-color: #ffffff;
+ border-top: 1px solid var(--border-color);
+ padding: 15px 20px;
+}
+
+/* INVOICE */
+.invoice-table tbody > tr > td:last-child,
+.invoice-table tbody > tr > td:nth-child(4),
+.invoice-table tbody > tr > td:nth-child(3),
+.invoice-table tbody > tr > td:nth-child(2) {
+ text-align: right;
+}
+
+.invoice-table thead > tr > th:last-child,
+.invoice-table thead > tr > th:nth-child(4),
+.invoice-table thead > tr > th:nth-child(3),
+.invoice-table thead > tr > th:nth-child(2) {
+ text-align: right;
+}
+
+.invoice-total > tbody > tr > td:first-child {
+ text-align: right;
+}
+
+.invoice-total > tbody > tr > td {
+ border: 0 none;
+}
+
+.invoice-total > tbody > tr > td:last-child {
+ border-bottom: 1px solid #e0e0e0;
+ text-align: right;
+ width: 15%;
+}
+
+/* ERROR & LOGIN & LOCKSCREEN*/
+.middle-box {
+ max-width: 400px;
+ z-index: 100;
+ margin: 0 auto;
+ padding-top: 40px;
+}
+
+.lockscreen.middle-box {
+ width: 200px;
+ padding-top: 110px;
+}
+
+.loginscreen.middle-box {
+ width: 400px;
+}
+
+.loginColumns {
+ max-width: 800px;
+ margin: 0 auto;
+}
+
+.loginColumns input {
+ height: 36px;
+}
+
+.loginColumns .captcha-group {
+ display: flex;
+}
+
+.loginColumns .captcha-group .captcha {
+ margin-left: 15px;
+}
+
+.loginColumns .captcha-group .captcha img {
+ height: 36px;
+}
+
+.login-page {
+ min-height: 100vh;
+ display: flex;
+ flex-direction: column;
+ align-items: center;
+ justify-content: center;
+ background-color: var(--bg-mid);
+}
+
+.navbar-login {
+ position: absolute;
+ top: 20px;
+ right: 20px;
+ background: transparent !important;
+ border: none;
+ z-index: 10;
+}
+
+.login-card {
+ width: 100%;
+ max-width: 380px;
+ margin: auto 1rem;
+ border-radius: 0.8rem;
+ overflow: hidden;
+}
+
+.login-card .login-header {
+ padding: 2rem;
+ background: linear-gradient(87deg, #11cdef 0%, #1171ef 100%);
+ text-align: center;
+}
+
+.login-card .login-header.register {
+ background: linear-gradient(87deg, #f5c56f 0%, #fca17b 100%);
+}
+
+.login-card .login-header img {
+ width: 36px;
+ height: 36px;
+}
+
+.login-card .login-header h1 {
+ margin-top: 0.75rem;
+ font-size: 1.5rem;
+ color: #fff;
+ font-weight: 300;
+}
+
+.login-card .login-body {
+ padding: 2rem;
+ background-color: rgba(128, 128, 128, 0.2);
+}
+
+.login-card .form-group {
+ position: relative;
+ margin-bottom: 1.25rem;
+}
+
+.login-card .input-icon {
+ position: absolute;
+ top: 50%;
+ left: 1rem;
+ transform: translateY(-50%);
+ color: #adb5bd;
+ font-size: 1.1rem;
+ pointer-events: none;
+}
+
+.login-card .form-control {
+ width: 100%;
+ height: 3rem;
+ padding: 0.75rem 0.75rem 0.75rem 2.5rem;
+ border-radius: 0.375rem;
+ transition: all 0.2s;
+}
+
+.login-card .captcha-group {
+ display: flex;
+ align-items: center;
+}
+
+.login-card .captcha-group .flex-fill {
+ flex: 1;
+ position: relative;
+}
+
+.login-card .captcha-group .captcha-container {
+ margin-left: 0.75rem;
+ display: flex;
+ align-items: center;
+}
+
+.login-card .captcha-group img {
+ height: 2.5rem;
+ cursor: pointer;
+ border-radius: 0.25rem;
+ background-color: #fff;
+ padding: 0.25rem;
+}
+
+.login-card .input-icon {
+ position: absolute;
+ top: 50%;
+ left: 1rem;
+ transform: translateY(-50%);
+ color: #adb5bd;
+ font-size: 1.1rem;
+}
+
+.passwordBox {
+ max-width: 460px;
+ margin: 0 auto;
+ padding: 100px 20px 20px 20px;
+}
+
+.logo-name {
+ color: #e8e8e8;
+ font-size: 180px;
+ font-weight: 800;
+ letter-spacing: -10px;
+ margin-bottom: 0;
+}
+
+@media (max-width: 576px) {
+ .login-card {
+ max-width: 100%;
+ width: auto;
+ margin: 0 1rem;
+ border-radius: 0.5rem;
+ }
+
+ .login-card .login-header {
+ padding: 1.5rem;
+ }
+
+ .login-card .login-header h1 {
+ font-size: 1.25rem;
+ }
+
+ .login-card .login-body {
+ padding: 1.5rem;
+ }
+
+ .login-card .form-control {
+ height: 3.5rem;
+ font-size: 1rem;
+ padding: 1rem 1rem 1rem 3rem;
+ }
+
+ .login-card .btn {
+ padding: 0.75rem;
+ font-size: 1rem;
+ }
+}
+
+.middle-box h1 {
+ font-size: 170px;
+}
+
+.wrapper .middle-box {
+ margin-top: 140px;
+}
+
+.lock-word {
+ z-index: 10;
+ position: absolute;
+ top: 110px;
+ left: 50%;
+ margin-left: -470px;
+}
+
+.lock-word span {
+ font-size: 100px;
+ font-weight: 600;
+ color: #e8e8e8;
+ display: inline-block;
+}
+
+.lock-word .first-word {
+ margin-right: 160px;
+}
+
+/* DASBOARD */
+.dashboard-header {
+ border-top: 0;
+ padding: 20px 20px 20px 20px;
+}
+
+.dashboard-header h2 {
+ margin-top: 10px;
+ font-size: 26px;
+}
+
+.fist-item {
+ border-top: none !important;
+}
+
+.statistic-box {
+ margin-top: 40px;
+}
+
+.dashboard-header .list-group-item span.label {
+ margin-right: 10px;
+}
+
+.list-group.clear-list .list-group-item {
+ border-top: 1px solid var(--border-color);
+ border-bottom: 0;
+ border-right: 0;
+ border-left: 0;
+ padding: 10px 0;
+}
+
+ul.clear-list:first-child {
+ border-top: none !important;
+}
+
+/* Intimeline */
+.timeline-item .date i {
+ position: absolute;
+ top: 0;
+ right: 0;
+ padding: 5px;
+ width: 30px;
+ text-align: center;
+ border-top: 1px solid var(--border-color);
+ border-bottom: 1px solid var(--border-color);
+ border-left: 1px solid var(--border-color);
+ background: #f8f8f8;
+}
+
+.timeline-item .date {
+ text-align: right;
+ width: 110px;
+ position: relative;
+ padding-top: 30px;
+}
+
+.timeline-item .content {
+ border-left: 1px solid var(--border-color);
+ border-top: 1px solid var(--border-color);
+ padding-top: 10px;
+ min-height: 100px;
+}
+
+.timeline-item .content:hover {
+ background: #f8f8f8;
+}
+
+/* PIN BOARD */
+ul.notes li,
+ul.tag-list li {
+ list-style: none;
+}
+
+ul.notes li h4 {
+ margin-top: 20px;
+ font-size: 16px;
+}
+
+ul.notes li div {
+ text-decoration: none;
+ color: #000;
+ background: #ffc;
+ display: block;
+ height: 140px;
+ width: 140px;
+ padding: 1em;
+ position: relative;
+}
+
+ul.notes li div small {
+ position: absolute;
+ top: 5px;
+ right: 5px;
+ font-size: 10px;
+}
+
+ul.notes li div a {
+ position: absolute;
+ right: 10px;
+ bottom: 10px;
+ color: inherit;
+}
+
+ul.notes li {
+ margin: 10px 40px 50px 0;
+ float: left;
+}
+
+ul.notes li div p {
+ font-size: 12px;
+}
+
+ul.notes li div {
+ text-decoration: none;
+ color: #000;
+ background: #ffc;
+ display: block;
+ height: 140px;
+ width: 140px;
+ padding: 1em;
+ /* Firefox */
+ -moz-box-shadow: 5px 5px 2px #202020;
+ /* Safari+Chrome */
+ -webkit-box-shadow: 5px 5px 2px rgba(32, 32, 32, 0.7);
+ /* Opera */
+ box-shadow: 5px 5px 2px rgba(32, 32, 32, 0.7);
+}
+
+ul.notes li div {
+ -webkit-transform: rotate(-6deg);
+ -o-transform: rotate(-6deg);
+ -moz-transform: rotate(-6deg);
+ -ms-transform: rotate(-6deg);
+}
+
+ul.notes li:nth-child(even) div {
+ -o-transform: rotate(4deg);
+ -webkit-transform: rotate(4deg);
+ -moz-transform: rotate(4deg);
+ -ms-transform: rotate(4deg);
+ position: relative;
+ top: 5px;
+}
+
+ul.notes li:nth-child(3n) div {
+ -o-transform: rotate(-3deg);
+ -webkit-transform: rotate(-3deg);
+ -moz-transform: rotate(-3deg);
+ -ms-transform: rotate(-3deg);
+ position: relative;
+ top: -5px;
+}
+
+ul.notes li:nth-child(5n) div {
+ -o-transform: rotate(5deg);
+ -webkit-transform: rotate(5deg);
+ -moz-transform: rotate(5deg);
+ -ms-transform: rotate(5deg);
+ position: relative;
+ top: -10px;
+}
+
+ul.notes li div:hover,
+ul.notes li div:focus {
+ -webkit-transform: scale(1.1);
+ -moz-transform: scale(1.1);
+ -o-transform: scale(1.1);
+ -ms-transform: scale(1.1);
+ position: relative;
+ z-index: 5;
+}
+
+ul.notes li div {
+ text-decoration: none;
+ color: #000;
+ background: #ffc;
+ display: block;
+ height: 210px;
+ width: 210px;
+ padding: 1em;
+ -moz-box-shadow: 5px 5px 7px #202020;
+ -webkit-box-shadow: 5px 5px 7px rgba(32, 32, 32, 0.7);
+ box-shadow: 5px 5px 7px rgba(32, 32, 32, 0.7);
+ -moz-transition: -moz-transform 0.15s linear;
+ -o-transition: -o-transform 0.15s linear;
+ -webkit-transition: -webkit-transform 0.15s linear;
+}
+
+/* FILE MANAGER */
+.file-box {
+ float: left;
+ width: 220px;
+}
+
+.file-manager h5 {
+ text-transform: uppercase;
+}
+
+.file-manager {
+ list-style: none outside none;
+ margin: 0;
+ padding: 0;
+}
+
+.folder-list li a {
+ color: var(--text);
+ display: block;
+ padding: 5px 0;
+}
+
+.folder-list li {
+ border-bottom: 1px solid var(--border-color);
+ display: block;
+}
+
+.folder-list li i {
+ margin-right: 8px;
+ color: #405060;
+}
+
+.category-list li a {
+ color: var(--text);
+ display: block;
+ padding: 5px 0;
+}
+
+.category-list li {
+ display: block;
+}
+
+.category-list li i {
+ margin-right: 8px;
+ color: #405060;
+}
+
+.category-list li a .text-navy {
+ color: #18b090;
+}
+
+.category-list li a .text-primary {
+ color: #2080c8;
+}
+
+.category-list li a .text-info {
+ color: #20c8c8;
+}
+
+.category-list li a .text-danger {
+ color: #f05050;
+}
+
+.category-list li a .text-warning {
+ color: #f8b058;
+}
+
+.file-manager h5.tag-title {
+ margin-top: 20px;
+}
+
+.tag-list li {
+ float: left;
+}
+
+.tag-list li a {
+ font-size: 10px;
+ background-color: var(--bg-mid);
+ padding: 5px 12px;
+ color: inherit;
+ border-radius: 2px;
+ border: 1px solid var(--border-color);
+ margin-right: 5px;
+ margin-top: 5px;
+ display: block;
+}
+
+.file {
+ border: 1px solid var(--border-color);
+ padding: 0;
+ background-color: #ffffff;
+ position: relative;
+ margin-bottom: 20px;
+ margin-right: 20px;
+}
+
+.file-manager .hr-line-dashed {
+ margin: 15px 0;
+}
+
+.file .icon,
+.file .image {
+ height: 100px;
+ overflow: hidden;
+}
+
+.file .icon {
+ padding: 15px 10px;
+ text-align: center;
+}
+
+.file-control {
+ color: inherit;
+ font-size: 11px;
+ margin-right: 10px;
+}
+
+.file-control.active {
+ text-decoration: underline;
+}
+
+.file .icon i {
+ font-size: 70px;
+ color: #d8d8d8;
+}
+
+.file .file-name {
+ padding: 10px;
+ background-color: #f8f8f8;
+ border-top: 1px solid var(--border-color);
+}
+
+.file-name small {
+ color: var(--text);
+}
+
+.corner {
+ position: absolute;
+ display: inline-block;
+ width: 0;
+ height: 0;
+ line-height: 0;
+ border: 0.6em solid transparent;
+ border-right: 0.6em solid var(--bg-mid);
+ border-bottom: 0.6em solid var(--bg-mid);
+ right: 0em;
+ bottom: 0em;
+}
+
+a.compose-mail {
+ padding: 8px 10px;
+}
+
+.mail-search {
+ max-width: 300px;
+}
+
+/* PROFILE */
+.profile-content {
+ border-top: none !important;
+}
+
+.profile-stats {
+ margin-right: 10px;
+}
+
+.profile-image {
+ width: 120px;
+ float: left;
+}
+
+.profile-image img {
+ width: 96px;
+ height: 96px;
+}
+
+.profile-info {
+ margin-left: 120px;
+}
+
+.feed-activity-list .feed-element {
+ border-bottom: 1px solid var(--border-color);
+}
+
+.feed-element:first-child {
+ margin-top: 0;
+}
+
+.feed-element {
+ padding-bottom: 15px;
+}
+
+.feed-element,
+.feed-element .media {
+ margin-top: 15px;
+}
+
+.feed-element,
+.media-body {
+ overflow: hidden;
+}
+
+.feed-element > a img {
+ margin-right: 10px;
+}
+
+.feed-element img.rounded-circle,
+.dropdown-messages-box img.rounded-circle {
+ width: 38px;
+ height: 38px;
+}
+
+.feed-element .well {
+ border: 1px solid var(--border-color);
+ box-shadow: none;
+ margin-top: 10px;
+ margin-bottom: 5px;
+ padding: 10px 20px;
+ font-size: 11px;
+ line-height: 16px;
+}
+
+.feed-element .actions {
+ margin-top: 10px;
+}
+
+.feed-element .photos {
+ margin: 10px 0;
+}
+
+.dropdown-messages-box .dropdown-item:focus,
+.dropdown-messages-box .dropdown-item:hover {
+ background-color: inherit;
+}
+
+.feed-photo {
+ max-height: 180px;
+ border-radius: 4px;
+ overflow: hidden;
+ margin-right: 10px;
+ margin-bottom: 10px;
+}
+
+.file-list li {
+ padding: 5px 10px;
+ font-size: 11px;
+ border-radius: 2px;
+ border: 1px solid var(--border-color);
+ margin-bottom: 5px;
+}
+
+.file-list li a {
+ color: inherit;
+}
+
+.file-list li a:hover {
+ color: #18b090;
+}
+
+.user-friends img {
+ width: 42px;
+ height: 42px;
+ margin-bottom: 5px;
+ margin-right: 5px;
+}
+
+/* MAILBOX */
+.mail-box {
+ background-color: #ffffff;
+ border: 1px solid var(--border-color);
+ border-top: 0;
+ padding: 0;
+ margin-bottom: 20px;
+}
+
+.mail-box-header {
+ background-color: #ffffff;
+ border: 1px solid var(--border-color);
+ border-bottom: 0;
+ padding: 30px 20px 20px 20px;
+}
+
+.mail-box-header h2 {
+ margin-top: 0;
+}
+
+.mailbox-content .tag-list li a {
+ background: #ffffff;
+}
+
+.mail-body {
+ border-top: 1px solid var(--border-color);
+ padding: 20px;
+}
+
+.mail-text {
+ border-top: 1px solid var(--border-color);
+}
+
+.mail-text .note-toolbar {
+ padding: 10px 15px;
+}
+
+.mail-body .form-group {
+ margin-bottom: 5px;
+}
+
+.mail-text .note-editor .note-toolbar {
+ background-color: #f8f8f8;
+}
+
+.mail-attachment {
+ border-top: 1px solid var(--border-color);
+ padding: 20px;
+ font-size: 12px;
+}
+
+.mailbox-content {
+ background: none;
+ border: none;
+ padding: 10px;
+}
+
+.mail-ontact {
+ width: 23%;
+}
+
+/* PROJECTS */
+.project-people,
+.project-actions {
+ text-align: right;
+ vertical-align: middle;
+}
+
+dd.project-people {
+ text-align: left;
+ margin-top: 5px;
+}
+
+.project-people img {
+ width: 32px;
+ height: 32px;
+}
+
+.project-title a {
+ font-size: 14px;
+ color: var(--text);
+ font-weight: 600;
+}
+
+.project-list table tr td {
+ border-top: none;
+ border-bottom: 1px solid var(--border-color);
+ padding: 15px 10px;
+ vertical-align: middle;
+}
+
+.project-manager .tag-list li a {
+ font-size: 10px;
+ background-color: white;
+ padding: 5px 12px;
+ color: inherit;
+ border-radius: 2px;
+ border: 1px solid var(--border-color);
+ margin-right: 5px;
+ margin-top: 5px;
+ display: block;
+}
+
+.project-files li a {
+ font-size: 11px;
+ color: var(--text);
+ margin-left: 10px;
+ line-height: 22px;
+}
+
+/* FAQ */
+.faq-item {
+ padding: 20px;
+ margin-bottom: 2px;
+ background: #fff;
+}
+
+.faq-question {
+ font-size: 18px;
+ font-weight: 600;
+ color: #18b090;
+ display: block;
+}
+
+.faq-question:hover {
+ color: #18a080;
+}
+
+.faq-answer {
+ margin-top: 10px;
+ background: var(--bg-mid);
+ border: 1px solid var(--border-color);
+ border-radius: 3px;
+ padding: 15px;
+}
+
+.faq-item .tag-item {
+ background: var(--bg-mid);
+ padding: 2px 6px;
+ font-size: 10px;
+ text-transform: uppercase;
+}
+
+/* Chat view */
+.message-input {
+ height: 90px !important;
+}
+
+.chat-avatar {
+ width: 36px;
+ height: 36px;
+ float: left;
+ margin-right: 10px;
+}
+
+.chat-user-name {
+ padding: 10px;
+}
+
+.chat-user {
+ padding: 8px 10px;
+ border-bottom: 1px solid var(--border-color);
+}
+
+.chat-user a {
+ color: inherit;
+}
+
+.chat-view {
+ z-index: 20012;
+}
+
+.chat-users,
+.chat-statistic {
+ margin-left: -30px;
+}
+
+@media (max-width: 992px) {
+ .chat-users,
+ .chat-statistic {
+ margin-left: 0;
+ }
+}
+
+.chat-view .ibox-content {
+ padding: 0;
+}
+
+.chat-message {
+ padding: 10px 20px;
+}
+
+.message-avatar {
+ height: 48px;
+ width: 48px;
+ border: 1px solid var(--border-color);
+ border-radius: 4px;
+ margin-top: 1px;
+}
+
+.chat-discussion .chat-message.left .message-avatar {
+ float: left;
+ margin-right: 10px;
+}
+
+.chat-discussion .chat-message.right .message-avatar {
+ float: right;
+ margin-left: 10px;
+}
+
+.message {
+ background-color: #fff;
+ border: 1px solid var(--border-color);
+ text-align: left;
+ display: block;
+ padding: 10px 20px;
+ position: relative;
+ border-radius: 4px;
+}
+
+.chat-discussion .chat-message.left .message-date {
+ float: right;
+}
+
+.chat-discussion .chat-message.right .message-date {
+ float: left;
+}
+
+.chat-discussion .chat-message.left .message {
+ text-align: left;
+ margin-left: 55px;
+}
+
+.chat-discussion .chat-message.right .message {
+ text-align: right;
+ margin-right: 55px;
+}
+
+.message-date {
+ font-size: 10px;
+ color: #888888;
+}
+
+.message-content {
+ display: block;
+}
+
+.chat-discussion {
+ background: #eee;
+ padding: 15px;
+ height: 400px;
+ overflow-y: auto;
+}
+
+.chat-users {
+ overflow-y: auto;
+ height: 400px;
+}
+
+.chat-message-form .form-group {
+ margin-bottom: 0;
+}
+
+/* jsTree */
+.jstree-open > .jstree-anchor > .fa-folder:before {
+ content: "\f07c";
+}
+
+.jstree-default .jstree-icon.none {
+ width: 0;
+}
+
+/* CLIENTS */
+.clients-list {
+ margin-top: 20px;
+}
+
+.clients-list .tab-pane {
+ position: relative;
+ height: 600px;
+}
+
+.client-detail {
+ position: relative;
+ height: 620px;
+}
+
+.clients-list table tr td {
+ height: 46px;
+ vertical-align: middle;
+ border: none;
+}
+
+.client-link {
+ font-weight: 600;
+ color: inherit;
+}
+
+.client-link:hover {
+ color: inherit;
+}
+
+.client-avatar {
+ width: 42px;
+}
+
+.client-avatar img {
+ width: 28px;
+ height: 28px;
+ border-radius: 50%;
+}
+
+.contact-type {
+ width: 20px;
+ color: #c0c0c0;
+}
+
+.client-status {
+ text-align: left;
+}
+
+.client-detail .vertical-timeline-content p {
+ margin: 0;
+}
+
+.client-detail .vertical-timeline-icon.gray-bg {
+ color: #a8a8a8;
+}
+
+.clients-list .nav-tabs > li.active > a,
+.clients-list .nav-tabs > li.active > a:hover,
+.clients-list .nav-tabs > li.active > a:focus {
+ border-bottom: 1px solid #fff;
+}
+
+/* BLOG ARTICLE */
+.blog h2 {
+ font-weight: 700;
+}
+
+.blog h5 {
+ margin: 0 0 5px 0;
+}
+
+.blog .btn {
+ margin: 0 0 5px 0;
+}
+
+.article h1 {
+ font-size: 48px;
+ font-weight: 700;
+ color: #304050;
+}
+
+.article p {
+ font-size: 15px;
+ line-height: 26px;
+}
+
+.article-title {
+ text-align: center;
+ margin: 40px 0 100px 0;
+}
+
+.article .ibox-content {
+ padding: 40px;
+}
+
+/* ISSUE TRACKER */
+.issue-tracker .btn-link {
+ color: #18b090;
+}
+
+table.issue-tracker tbody tr td {
+ vertical-align: middle;
+ height: 50px;
+}
+
+.issue-info {
+ width: 50%;
+}
+
+.issue-info a {
+ font-weight: 600;
+ color: var(--text);
+}
+
+.issue-info small {
+ display: block;
+}
+
+/* TEAMS */
+.team-members {
+ margin: 10px 0;
+}
+
+.team-members img.rounded-circle {
+ width: 42px;
+ height: 42px;
+ margin-bottom: 5px;
+}
+
+/* AGILE BOARD */
+.sortable-list {
+ padding: 10px 0;
+}
+
+.agile-list {
+ list-style: none;
+ margin: 0;
+}
+
+.agile-list li {
+ background: #f8f8f8;
+ border: 1px solid var(--border-color);
+ margin: 0 0 10px 0;
+ padding: 10px;
+ border-radius: 2px;
+}
+
+.agile-list li:hover {
+ cursor: pointer;
+ background: #fff;
+}
+
+.agile-list li.warning-element {
+ border-left: 3px solid #f8b058;
+}
+
+.agile-list li.danger-element {
+ border-left: 3px solid #f05868;
+}
+
+.agile-list li.info-element {
+ border-left: 3px solid #2080c8;
+}
+
+.agile-list li.success-element {
+ border-left: 3px solid #18b090;
+}
+
+.agile-detail {
+ margin-top: 5px;
+ font-size: 12px;
+}
+
+/* DIFF */
+ins {
+ background-color: #ccffcc;
+ text-decoration: none;
+}
+
+del {
+ background-color: #ffcccc;
+}
+
+/* E-commerce */
+.product-box {
+ padding: 0;
+ border: 1px solid var(--border-color);
+}
+
+.product-box:hover,
+.product-box.active {
+ border: 1px solid transparent;
+ -webkit-box-shadow: 0 3px 7px 0 #a8a8a8;
+ -moz-box-shadow: 0 3px 7px 0 #a8a8a8;
+ box-shadow: 0 3px 7px 0 #a8a8a8;
+}
+
+.product-imitation {
+ text-align: center;
+ padding: 90px 0;
+ background-color: #f8f8f8;
+ color: #c0c0c0;
+ font-weight: 600;
+}
+
+.cart-product-imitation {
+ text-align: center;
+ padding-top: 30px;
+ height: 80px;
+ width: 80px;
+ background-color: #f8f8f8;
+}
+
+.product-imitation.xl {
+ padding: 120px 0;
+}
+
+.product-desc {
+ padding: 20px;
+ position: relative;
+}
+
+.ecommerce .tag-list {
+ padding: 0;
+}
+
+.ecommerce .fa-star {
+ color: #d0d8e0;
+}
+
+.ecommerce .fa-star.active {
+ color: #f8b058;
+}
+
+.ecommerce .note-editor {
+ border: 1px solid var(--border-color);
+}
+
+table.shoping-cart-table {
+ margin-bottom: 0;
+}
+
+table.shoping-cart-table tr td {
+ border: none;
+ text-align: right;
+}
+
+table.shoping-cart-table tr td.desc,
+table.shoping-cart-table tr td:first-child {
+ text-align: left;
+}
+
+table.shoping-cart-table tr td:last-child {
+ width: 80px;
+}
+
+.product-name {
+ font-size: 16px;
+ font-weight: 600;
+ color: var(--text);
+ display: block;
+ margin: 2px 0 5px 0;
+}
+
+.product-name:hover,
+.product-name:focus {
+ color: #18b090;
+}
+
+.product-price {
+ font-size: 14px;
+ font-weight: 600;
+ color: #ffffff;
+ background-color: #18b090;
+ padding: 6px 12px;
+ position: absolute;
+ top: -32px;
+ right: 0;
+}
+
+.product-detail .ibox-content {
+ padding: 30px 30px 50px 30px;
+}
+
+.image-imitation {
+ background-color: #f8f8f8;
+ text-align: center;
+ padding: 200px 0;
+}
+
+.product-main-price small {
+ font-size: 10px;
+}
+
+.product-images {
+ margin: 0 20px;
+}
+
+/* Social feed */
+.social-feed-separated .social-feed-box {
+ margin-left: 62px;
+}
+
+.social-feed-separated .social-avatar {
+ float: left;
+ padding: 0;
+}
+
+.social-feed-separated .social-avatar img {
+ width: 52px;
+ height: 52px;
+ border: 1px solid var(--border-color);
+}
+
+.social-feed-separated .social-feed-box .social-avatar {
+ padding: 15px 15px 0 15px;
+ float: none;
+}
+
+.social-feed-box {
+ /*padding: 15px;*/
+ border: 1px solid var(--border-color);
+ background: #fff;
+ margin-bottom: 15px;
+}
+
+.article .social-feed-box {
+ margin-bottom: 0;
+ border-bottom: none;
+}
+
+.article .social-feed-box:last-child {
+ margin-bottom: 0;
+ border-bottom: 1px solid var(--border-color);
+}
+
+.article .social-feed-box p {
+ font-size: 13px;
+ line-height: 18px;
+}
+
+.social-action {
+ margin: 15px;
+}
+
+.social-action .dropdown-toggle::after {
+ margin-left: auto;
+}
+
+.social-avatar {
+ padding: 15px 15px 0 15px;
+}
+
+.social-comment .social-comment {
+ margin-left: 45px;
+}
+
+.social-avatar img {
+ height: 40px;
+ width: 40px;
+ margin-right: 10px;
+}
+
+.social-avatar .media-body a {
+ font-size: 14px;
+ display: block;
+}
+
+.social-body {
+ padding: 15px;
+}
+
+.social-body img {
+ margin-bottom: 10px;
+}
+
+.social-footer {
+ border-top: 1px solid var(--border-color);
+ padding: 10px 15px;
+ background: #f8f8f8;
+}
+
+.social-footer .social-comment img {
+ width: 32px;
+ margin-right: 10px;
+}
+
+.social-comment:first-child {
+ margin-top: 0;
+}
+
+.social-comment {
+ margin-top: 15px;
+}
+
+.social-comment textarea {
+ font-size: 12px;
+}
+
+/* Vote list */
+.vote-item {
+ padding: 20px 25px;
+ background: #ffffff;
+ border-top: 1px solid var(--border-color);
+}
+
+.vote-item:last-child {
+ border-bottom: 1px solid var(--border-color);
+}
+
+.vote-item:hover {
+ background: #ffffff;
+}
+
+.vote-actions {
+ float: left;
+ width: 30px;
+ margin-right: 15px;
+ text-align: center;
+}
+
+.vote-actions a {
+ color: #18b090;
+ font-weight: 600;
+}
+
+.vote-actions {
+ font-weight: 600;
+}
+
+.vote-title {
+ display: block;
+ color: inherit;
+ font-size: 18px;
+ font-weight: 600;
+ margin-top: 5px;
+ margin-bottom: 2px;
+}
+
+.vote-title:hover,
+.vote-title:focus {
+ color: inherit;
+}
+
+.vote-info,
+.vote-title {
+ margin-left: 45px;
+}
+
+.vote-info,
+.vote-info a {
+ color: #b0b8b8;
+ font-size: 12px;
+}
+
+.vote-info a {
+ margin-right: 10px;
+}
+
+.vote-info a:hover {
+ color: #18b090;
+}
+
+.vote-icon {
+ text-align: right;
+ font-size: 38px;
+ display: block;
+ color: #e8e8e8;
+}
+
+.vote-icon.active {
+ color: #18b090;
+}
+
+body.body-small .vote-icon {
+ display: none;
+}
+
+.lightBoxGallery {
+ text-align: center;
+}
+
+.lightBoxGallery img {
+ margin: 5px;
+}
+
+#small-chat {
+ position: fixed;
+ bottom: 20px;
+ right: 20px;
+ z-index: 1000;
+}
+
+#small-chat .badge {
+ position: absolute;
+ top: -3px;
+ right: -4px;
+}
+
+.open-small-chat {
+ height: 38px;
+ width: 38px;
+ display: block;
+ background: #18b090;
+ padding: 9px 8px;
+ text-align: center;
+ color: #fff;
+ border-radius: 50%;
+}
+
+.open-small-chat:hover {
+ color: white;
+ background: #18b090;
+}
+
+.small-chat-box {
+ display: none;
+ position: fixed;
+ bottom: 20px;
+ right: 75px;
+ background: #fff;
+ border: 1px solid var(--border-color);
+ width: 230px;
+ height: 320px;
+ border-radius: 4px;
+}
+
+.small-chat-box.ng-small-chat {
+ display: block;
+}
+
+.body-small .small-chat-box {
+ bottom: 70px;
+ right: 20px;
+}
+
+.small-chat-box.active {
+ display: block;
+}
+
+.small-chat-box {
+ z-index: 1001;
+}
+
+.small-chat-box .heading {
+ background: #304050;
+ padding: 8px 15px;
+ font-weight: bold;
+ color: #fff;
+}
+
+.small-chat-box .chat-date {
+ opacity: 0.6;
+ font-size: 10px;
+ font-weight: normal;
+}
+
+.small-chat-box .content {
+ padding: 15px 15px;
+}
+
+.small-chat-box .content .author-name {
+ font-weight: bold;
+ margin-bottom: 3px;
+ font-size: 11px;
+}
+
+.small-chat-box .content > div {
+ padding-bottom: 20px;
+}
+
+.small-chat-box .content .chat-message {
+ padding: 5px 10px;
+ border-radius: 6px;
+ font-size: 11px;
+ line-height: 14px;
+ max-width: 80%;
+ background: var(--bg-mid);
+ margin-bottom: 10px;
+}
+
+.small-chat-box .content .chat-message.active {
+ background: #18b090;
+ color: #fff;
+}
+
+.small-chat-box .content .left {
+ text-align: left;
+ clear: both;
+}
+
+.small-chat-box .content .left .chat-message {
+ float: left;
+}
+
+.small-chat-box .content .right {
+ text-align: right;
+ clear: both;
+}
+
+.small-chat-box .content .right .chat-message {
+ float: right;
+}
+
+.small-chat-box .form-chat {
+ padding: 10px 10px;
+}
+
+/*
+ * metismenu - v2.0.2
+ * A jQuery menu plugin
+ * https://github.com/onokumus/metisMenu
+ *
+ * Made by Osman Nuri Okumus
+ * Under MIT License
+ */
+.metismenu .plus-minus,
+.metismenu .plus-times {
+ float: right;
+}
+
+.metismenu .arrow {
+ float: right;
+ line-height: 1.42857;
+}
+
+.metismenu .glyphicon.arrow:before {
+ content: "\e079";
+}
+
+.metismenu .active > a > .glyphicon.arrow:before {
+ content: "\e114";
+}
+
+.metismenu .fa.arrow:before {
+ content: "\f104";
+ color: var(--active-color);
+}
+
+.metismenu .active > a > .fa.arrow:before {
+ content: "\f107";
+ color: #10d0f0;
+}
+
+.metismenu .ion.arrow:before {
+ content: "\f3d2";
+}
+
+.metismenu .active > a > .ion.arrow:before {
+ content: "\f3d0";
+}
+
+.metismenu .fa.plus-minus:before,
+.metismenu .fa.plus-times:before {
+ content: "\f067";
+ color: var(--active-color);
+}
+
+.metismenu .active > a > .fa.plus-times {
+ -webkit-transform: rotate(45deg);
+ -ms-transform: rotate(45deg);
+ transform: rotate(45deg);
+ color: #10d0f0;
+}
+
+.metismenu .active > a > .fa.plus-minus:before {
+ content: "\f068";
+ color: #10d0f0;
+}
+
+.metismenu .collapse {
+ display: none;
+}
+
+.metismenu .collapse.in {
+ display: block;
+}
+
+.metismenu .collapsing {
+ position: relative;
+ height: 0;
+ overflow: hidden;
+ -webkit-transition-timing-function: ease;
+ transition-timing-function: ease;
+ -webkit-transition-duration: .35s;
+ transition-duration: .35s;
+ -webkit-transition-property: height, visibility;
+ transition-property: height, visibility;
+}
+
+.mini-navbar .metismenu .collapse {
+ opacity: 0;
+}
+
+.mini-navbar .metismenu .collapse.in {
+ opacity: 1;
+}
+
+.mini-navbar .metismenu .collapse a {
+ display: none;
+}
+
+.mini-navbar .metismenu .collapse.in a {
+ display: block;
+}
+
+/*
+ * Usage:
+ *
+ *
+ *
+ */
+.sk-spinner-rotating-plane.sk-spinner {
+ width: 30px;
+ height: 30px;
+ background-color: #18b090;
+ margin: 0 auto;
+ -webkit-animation: sk-rotatePlane 1.2s infinite ease-in-out;
+ animation: sk-rotatePlane 1.2s infinite ease-in-out;
+}
+
+@-webkit-keyframes sk-rotatePlane {
+ 0% {
+ -webkit-transform: perspective(120px) rotateX(0deg) rotateY(0deg);
+ transform: perspective(120px) rotateX(0deg) rotateY(0deg);
+ }
+ 50% {
+ -webkit-transform: perspective(120px) rotateX(-180.1deg) rotateY(0deg);
+ transform: perspective(120px) rotateX(-180.1deg) rotateY(0deg);
+ }
+ 100% {
+ -webkit-transform: perspective(120px) rotateX(-180deg) rotateY(-179.9deg);
+ transform: perspective(120px) rotateX(-180deg) rotateY(-179.9deg);
+ }
+}
+
+@keyframes sk-rotatePlane {
+ 0% {
+ -webkit-transform: perspective(120px) rotateX(0deg) rotateY(0deg);
+ transform: perspective(120px) rotateX(0deg) rotateY(0deg);
+ }
+ 50% {
+ -webkit-transform: perspective(120px) rotateX(-180.1deg) rotateY(0deg);
+ transform: perspective(120px) rotateX(-180.1deg) rotateY(0deg);
+ }
+ 100% {
+ -webkit-transform: perspective(120px) rotateX(-180deg) rotateY(-179.9deg);
+ transform: perspective(120px) rotateX(-180deg) rotateY(-179.9deg);
+ }
+}
+
+/*
+ * Usage:
+ *
+ *
+ *
+ */
+.sk-spinner-double-bounce.sk-spinner {
+ width: 40px;
+ height: 40px;
+ position: relative;
+ margin: 0 auto;
+}
+
+.sk-spinner-double-bounce .sk-double-bounce1,
+.sk-spinner-double-bounce .sk-double-bounce2 {
+ width: 100%;
+ height: 100%;
+ border-radius: 50%;
+ background-color: #18b090;
+ opacity: 0.6;
+ position: absolute;
+ top: 0;
+ left: 0;
+ -webkit-animation: sk-doubleBounce 2s infinite ease-in-out;
+ animation: sk-doubleBounce 2s infinite ease-in-out;
+}
+
+.sk-spinner-double-bounce .sk-double-bounce2 {
+ -webkit-animation-delay: -1s;
+ animation-delay: -1s;
+}
+
+@-webkit-keyframes sk-doubleBounce {
+ 0%,
+ 100% {
+ -webkit-transform: scale(0);
+ transform: scale(0);
+ }
+ 50% {
+ -webkit-transform: scale(1);
+ transform: scale(1);
+ }
+}
+
+@keyframes sk-doubleBounce {
+ 0%,
+ 100% {
+ -webkit-transform: scale(0);
+ transform: scale(0);
+ }
+ 50% {
+ -webkit-transform: scale(1);
+ transform: scale(1);
+ }
+}
+
+/*
+ * Usage:
+ *
+ *
+ *
+ */
+.sk-spinner-wave.sk-spinner {
+ margin: 0 auto;
+ width: 50px;
+ height: 30px;
+ text-align: center;
+ font-size: 10px;
+}
+
+.sk-spinner-wave div {
+ background-color: #18b090;
+ height: 100%;
+ width: 6px;
+ display: inline-block;
+ -webkit-animation: sk-waveStretchDelay 1.2s infinite ease-in-out;
+ animation: sk-waveStretchDelay 1.2s infinite ease-in-out;
+}
+
+.sk-spinner-wave .sk-rect2 {
+ -webkit-animation-delay: -1.1s;
+ animation-delay: -1.1s;
+}
+
+.sk-spinner-wave .sk-rect3 {
+ -webkit-animation-delay: -1s;
+ animation-delay: -1s;
+}
+
+.sk-spinner-wave .sk-rect4 {
+ -webkit-animation-delay: -0.9s;
+ animation-delay: -0.9s;
+}
+
+.sk-spinner-wave .sk-rect5 {
+ -webkit-animation-delay: -0.8s;
+ animation-delay: -0.8s;
+}
+
+@-webkit-keyframes sk-waveStretchDelay {
+ 0%,
+ 40%,
+ 100% {
+ -webkit-transform: scaleY(0.4);
+ transform: scaleY(0.4);
+ }
+ 20% {
+ -webkit-transform: scaleY(1);
+ transform: scaleY(1);
+ }
+}
+
+@keyframes sk-waveStretchDelay {
+ 0%,
+ 40%,
+ 100% {
+ -webkit-transform: scaleY(0.4);
+ transform: scaleY(0.4);
+ }
+ 20% {
+ -webkit-transform: scaleY(1);
+ transform: scaleY(1);
+ }
+}
+
+/*
+ * Usage:
+ *
+ *
+ *
+ */
+.sk-spinner-wandering-cubes.sk-spinner {
+ margin: 0 auto;
+ width: 32px;
+ height: 32px;
+ position: relative;
+}
+
+.sk-spinner-wandering-cubes .sk-cube1,
+.sk-spinner-wandering-cubes .sk-cube2 {
+ background-color: #18b090;
+ width: 10px;
+ height: 10px;
+ position: absolute;
+ top: 0;
+ left: 0;
+ -webkit-animation: sk-wanderingCubeMove 1.8s infinite ease-in-out;
+ animation: sk-wanderingCubeMove 1.8s infinite ease-in-out;
+}
+
+.sk-spinner-wandering-cubes .sk-cube2 {
+ -webkit-animation-delay: -0.9s;
+ animation-delay: -0.9s;
+}
+
+@-webkit-keyframes sk-wanderingCubeMove {
+ 25% {
+ -webkit-transform: translateX(42px) rotate(-90deg) scale(0.5);
+ transform: translateX(42px) rotate(-90deg) scale(0.5);
+ }
+ 50% {
+ /* Hack to make FF rotate in the right direction */
+ -webkit-transform: translateX(42px) translateY(42px) rotate(-179deg);
+ transform: translateX(42px) translateY(42px) rotate(-179deg);
+ }
+ 50.1% {
+ -webkit-transform: translateX(42px) translateY(42px) rotate(-180deg);
+ transform: translateX(42px) translateY(42px) rotate(-180deg);
+ }
+ 75% {
+ -webkit-transform: translateX(0px) translateY(42px) rotate(-270deg) scale(0.5);
+ transform: translateX(0px) translateY(42px) rotate(-270deg) scale(0.5);
+ }
+ 100% {
+ -webkit-transform: rotate(-360deg);
+ transform: rotate(-360deg);
+ }
+}
+
+@keyframes sk-wanderingCubeMove {
+ 25% {
+ -webkit-transform: translateX(42px) rotate(-90deg) scale(0.5);
+ transform: translateX(42px) rotate(-90deg) scale(0.5);
+ }
+ 50% {
+ /* Hack to make FF rotate in the right direction */
+ -webkit-transform: translateX(42px) translateY(42px) rotate(-179deg);
+ transform: translateX(42px) translateY(42px) rotate(-179deg);
+ }
+ 50.1% {
+ -webkit-transform: translateX(42px) translateY(42px) rotate(-180deg);
+ transform: translateX(42px) translateY(42px) rotate(-180deg);
+ }
+ 75% {
+ -webkit-transform: translateX(0px) translateY(42px) rotate(-270deg) scale(0.5);
+ transform: translateX(0px) translateY(42px) rotate(-270deg) scale(0.5);
+ }
+ 100% {
+ -webkit-transform: rotate(-360deg);
+ transform: rotate(-360deg);
+ }
+}
+
+/*
+ * Usage:
+ *
+ *
+ *
+ */
+.sk-spinner-pulse.sk-spinner {
+ width: 40px;
+ height: 40px;
+ margin: 0 auto;
+ background-color: #18b090;
+ border-radius: 100%;
+ -webkit-animation: sk-pulseScaleOut 1s infinite ease-in-out;
+ animation: sk-pulseScaleOut 1s infinite ease-in-out;
+}
+
+@-webkit-keyframes sk-pulseScaleOut {
+ 0% {
+ -webkit-transform: scale(0);
+ transform: scale(0);
+ }
+ 100% {
+ -webkit-transform: scale(1);
+ transform: scale(1);
+ opacity: 0;
+ }
+}
+
+@keyframes sk-pulseScaleOut {
+ 0% {
+ -webkit-transform: scale(0);
+ transform: scale(0);
+ }
+ 100% {
+ -webkit-transform: scale(1);
+ transform: scale(1);
+ opacity: 0;
+ }
+}
+
+/*
+ * Usage:
+ *
+ *
+ *
+ */
+.sk-spinner-chasing-dots.sk-spinner {
+ margin: 0 auto;
+ width: 40px;
+ height: 40px;
+ position: relative;
+ text-align: center;
+ -webkit-animation: sk-chasingDotsRotate 2s infinite linear;
+ animation: sk-chasingDotsRotate 2s infinite linear;
+}
+
+.sk-spinner-chasing-dots .sk-dot1,
+.sk-spinner-chasing-dots .sk-dot2 {
+ width: 60%;
+ height: 60%;
+ display: inline-block;
+ position: absolute;
+ top: 0;
+ background-color: #18b090;
+ border-radius: 100%;
+ -webkit-animation: sk-chasingDotsBounce 2s infinite ease-in-out;
+ animation: sk-chasingDotsBounce 2s infinite ease-in-out;
+}
+
+.sk-spinner-chasing-dots .sk-dot2 {
+ top: auto;
+ bottom: 0;
+ -webkit-animation-delay: -1s;
+ animation-delay: -1s;
+}
+
+@-webkit-keyframes sk-chasingDotsRotate {
+ 100% {
+ -webkit-transform: rotate(360deg);
+ transform: rotate(360deg);
+ }
+}
+
+@keyframes sk-chasingDotsRotate {
+ 100% {
+ -webkit-transform: rotate(360deg);
+ transform: rotate(360deg);
+ }
+}
+
+@-webkit-keyframes sk-chasingDotsBounce {
+ 0%,
+ 100% {
+ -webkit-transform: scale(0);
+ transform: scale(0);
+ }
+ 50% {
+ -webkit-transform: scale(1);
+ transform: scale(1);
+ }
+}
+
+@keyframes sk-chasingDotsBounce {
+ 0%,
+ 100% {
+ -webkit-transform: scale(0);
+ transform: scale(0);
+ }
+ 50% {
+ -webkit-transform: scale(1);
+ transform: scale(1);
+ }
+}
+
+/*
+ * Usage:
+ *
+ *
+ *
+ */
+.sk-spinner-three-bounce.sk-spinner {
+ margin: 0 auto;
+ width: 70px;
+ text-align: center;
+}
+
+.sk-spinner-three-bounce div {
+ width: 18px;
+ height: 18px;
+ background-color: #18b090;
+ border-radius: 100%;
+ display: inline-block;
+ -webkit-animation: sk-threeBounceDelay 1.4s infinite ease-in-out;
+ animation: sk-threeBounceDelay 1.4s infinite ease-in-out;
+ /* Prevent first frame from flickering when animation starts */
+ -webkit-animation-fill-mode: both;
+ animation-fill-mode: both;
+}
+
+.sk-spinner-three-bounce .sk-bounce1 {
+ -webkit-animation-delay: -0.32s;
+ animation-delay: -0.32s;
+}
+
+.sk-spinner-three-bounce .sk-bounce2 {
+ -webkit-animation-delay: -0.16s;
+ animation-delay: -0.16s;
+}
+
+@-webkit-keyframes sk-threeBounceDelay {
+ 0%,
+ 80%,
+ 100% {
+ -webkit-transform: scale(0);
+ transform: scale(0);
+ }
+ 40% {
+ -webkit-transform: scale(1);
+ transform: scale(1);
+ }
+}
+
+@keyframes sk-threeBounceDelay {
+ 0%,
+ 80%,
+ 100% {
+ -webkit-transform: scale(0);
+ transform: scale(0);
+ }
+ 40% {
+ -webkit-transform: scale(1);
+ transform: scale(1);
+ }
+}
+
+/*
+ * Usage:
+ *
+ *
+ *
+ *
+ *
+ *
+ *
+ *
+ *
+ *
+ *
+ *
+ *
+ *
+ *
+ *
+ */
+.sk-spinner-circle.sk-spinner {
+ margin: 0 auto;
+ width: 22px;
+ height: 22px;
+ position: relative;
+}
+
+.sk-spinner-circle .sk-circle {
+ width: 100%;
+ height: 100%;
+ position: absolute;
+ left: 0;
+ top: 0;
+}
+
+.sk-spinner-circle .sk-circle:before {
+ content: '';
+ display: block;
+ margin: 0 auto;
+ width: 20%;
+ height: 20%;
+ background-color: #18b090;
+ border-radius: 100%;
+ -webkit-animation: sk-circleBounceDelay 1.2s infinite ease-in-out;
+ animation: sk-circleBounceDelay 1.2s infinite ease-in-out;
+ /* Prevent first frame from flickering when animation starts */
+ -webkit-animation-fill-mode: both;
+ animation-fill-mode: both;
+}
+
+.sk-spinner-circle .sk-circle2 {
+ -webkit-transform: rotate(30deg);
+ -ms-transform: rotate(30deg);
+ transform: rotate(30deg);
+}
+
+.sk-spinner-circle .sk-circle3 {
+ -webkit-transform: rotate(60deg);
+ -ms-transform: rotate(60deg);
+ transform: rotate(60deg);
+}
+
+.sk-spinner-circle .sk-circle4 {
+ -webkit-transform: rotate(90deg);
+ -ms-transform: rotate(90deg);
+ transform: rotate(90deg);
+}
+
+.sk-spinner-circle .sk-circle5 {
+ -webkit-transform: rotate(120deg);
+ -ms-transform: rotate(120deg);
+ transform: rotate(120deg);
+}
+
+.sk-spinner-circle .sk-circle6 {
+ -webkit-transform: rotate(150deg);
+ -ms-transform: rotate(150deg);
+ transform: rotate(150deg);
+}
+
+.sk-spinner-circle .sk-circle7 {
+ -webkit-transform: rotate(180deg);
+ -ms-transform: rotate(180deg);
+ transform: rotate(180deg);
+}
+
+.sk-spinner-circle .sk-circle8 {
+ -webkit-transform: rotate(210deg);
+ -ms-transform: rotate(210deg);
+ transform: rotate(210deg);
+}
+
+.sk-spinner-circle .sk-circle9 {
+ -webkit-transform: rotate(240deg);
+ -ms-transform: rotate(240deg);
+ transform: rotate(240deg);
+}
+
+.sk-spinner-circle .sk-circle10 {
+ -webkit-transform: rotate(270deg);
+ -ms-transform: rotate(270deg);
+ transform: rotate(270deg);
+}
+
+.sk-spinner-circle .sk-circle11 {
+ -webkit-transform: rotate(300deg);
+ -ms-transform: rotate(300deg);
+ transform: rotate(300deg);
+}
+
+.sk-spinner-circle .sk-circle12 {
+ -webkit-transform: rotate(330deg);
+ -ms-transform: rotate(330deg);
+ transform: rotate(330deg);
+}
+
+.sk-spinner-circle .sk-circle2:before {
+ -webkit-animation-delay: -1.1s;
+ animation-delay: -1.1s;
+}
+
+.sk-spinner-circle .sk-circle3:before {
+ -webkit-animation-delay: -1s;
+ animation-delay: -1s;
+}
+
+.sk-spinner-circle .sk-circle4:before {
+ -webkit-animation-delay: -0.9s;
+ animation-delay: -0.9s;
+}
+
+.sk-spinner-circle .sk-circle5:before {
+ -webkit-animation-delay: -0.8s;
+ animation-delay: -0.8s;
+}
+
+.sk-spinner-circle .sk-circle6:before {
+ -webkit-animation-delay: -0.7s;
+ animation-delay: -0.7s;
+}
+
+.sk-spinner-circle .sk-circle7:before {
+ -webkit-animation-delay: -0.6s;
+ animation-delay: -0.6s;
+}
+
+.sk-spinner-circle .sk-circle8:before {
+ -webkit-animation-delay: -0.5s;
+ animation-delay: -0.5s;
+}
+
+.sk-spinner-circle .sk-circle9:before {
+ -webkit-animation-delay: -0.4s;
+ animation-delay: -0.4s;
+}
+
+.sk-spinner-circle .sk-circle10:before {
+ -webkit-animation-delay: -0.3s;
+ animation-delay: -0.3s;
+}
+
+.sk-spinner-circle .sk-circle11:before {
+ -webkit-animation-delay: -0.2s;
+ animation-delay: -0.2s;
+}
+
+.sk-spinner-circle .sk-circle12:before {
+ -webkit-animation-delay: -0.1s;
+ animation-delay: -0.1s;
+}
+
+@-webkit-keyframes sk-circleBounceDelay {
+ 0%,
+ 80%,
+ 100% {
+ -webkit-transform: scale(0);
+ transform: scale(0);
+ }
+ 40% {
+ -webkit-transform: scale(1);
+ transform: scale(1);
+ }
+}
+
+@keyframes sk-circleBounceDelay {
+ 0%,
+ 80%,
+ 100% {
+ -webkit-transform: scale(0);
+ transform: scale(0);
+ }
+ 40% {
+ -webkit-transform: scale(1);
+ transform: scale(1);
+ }
+}
+
+/*
+ * Usage:
+ *
+ *
+ *
+ *
+ *
+ *
+ *
+ *
+ *
+ *
+ *
+ *
+ *
+ */
+.sk-spinner-cube-grid {
+ /*
+ * Spinner positions
+ * 1 2 3
+ * 4 5 6
+ * 7 8 9
+ */
+}
+
+.sk-spinner-cube-grid.sk-spinner {
+ width: 30px;
+ height: 30px;
+ margin: 0 auto;
+}
+
+.sk-spinner-cube-grid .sk-cube {
+ width: 33%;
+ height: 33%;
+ background-color: #18b090;
+ float: left;
+ -webkit-animation: sk-cubeGridScaleDelay 1.3s infinite ease-in-out;
+ animation: sk-cubeGridScaleDelay 1.3s infinite ease-in-out;
+}
+
+.sk-spinner-cube-grid .sk-cube:nth-child(1) {
+ -webkit-animation-delay: 0.2s;
+ animation-delay: 0.2s;
+}
+
+.sk-spinner-cube-grid .sk-cube:nth-child(2) {
+ -webkit-animation-delay: 0.3s;
+ animation-delay: 0.3s;
+}
+
+.sk-spinner-cube-grid .sk-cube:nth-child(3) {
+ -webkit-animation-delay: 0.4s;
+ animation-delay: 0.4s;
+}
+
+.sk-spinner-cube-grid .sk-cube:nth-child(4) {
+ -webkit-animation-delay: 0.1s;
+ animation-delay: 0.1s;
+}
+
+.sk-spinner-cube-grid .sk-cube:nth-child(5) {
+ -webkit-animation-delay: 0.2s;
+ animation-delay: 0.2s;
+}
+
+.sk-spinner-cube-grid .sk-cube:nth-child(6) {
+ -webkit-animation-delay: 0.3s;
+ animation-delay: 0.3s;
+}
+
+.sk-spinner-cube-grid .sk-cube:nth-child(7) {
+ -webkit-animation-delay: 0s;
+ animation-delay: 0s;
+}
+
+.sk-spinner-cube-grid .sk-cube:nth-child(8) {
+ -webkit-animation-delay: 0.1s;
+ animation-delay: 0.1s;
+}
+
+.sk-spinner-cube-grid .sk-cube:nth-child(9) {
+ -webkit-animation-delay: 0.2s;
+ animation-delay: 0.2s;
+}
+
+@-webkit-keyframes sk-cubeGridScaleDelay {
+ 0%,
+ 70%,
+ 100% {
+ -webkit-transform: scale3D(1, 1, 1);
+ transform: scale3D(1, 1, 1);
+ }
+ 35% {
+ -webkit-transform: scale3D(0, 0, 1);
+ transform: scale3D(0, 0, 1);
+ }
+}
+
+@keyframes sk-cubeGridScaleDelay {
+ 0%,
+ 70%,
+ 100% {
+ -webkit-transform: scale3D(1, 1, 1);
+ transform: scale3D(1, 1, 1);
+ }
+ 35% {
+ -webkit-transform: scale3D(0, 0, 1);
+ transform: scale3D(0, 0, 1);
+ }
+}
+
+/*
+ * Usage:
+ *
+ *
+ *
+ *
+ *
+ */
+.sk-spinner-wordpress.sk-spinner {
+ background-color: #18b090;
+ width: 30px;
+ height: 30px;
+ border-radius: 30px;
+ position: relative;
+ margin: 0 auto;
+ -webkit-animation: sk-innerCircle 1s linear infinite;
+ animation: sk-innerCircle 1s linear infinite;
+}
+
+.sk-spinner-wordpress .sk-inner-circle {
+ display: block;
+ background-color: #fff;
+ width: 8px;
+ height: 8px;
+ position: absolute;
+ border-radius: 8px;
+ top: 5px;
+ left: 5px;
+}
+
+@-webkit-keyframes sk-innerCircle {
+ 0% {
+ -webkit-transform: rotate(0);
+ transform: rotate(0);
+ }
+ 100% {
+ -webkit-transform: rotate(360deg);
+ transform: rotate(360deg);
+ }
+}
+
+@keyframes sk-innerCircle {
+ 0% {
+ -webkit-transform: rotate(0);
+ transform: rotate(0);
+ }
+ 100% {
+ -webkit-transform: rotate(360deg);
+ transform: rotate(360deg);
+ }
+}
+
+/*
+ * Usage:
+ *
+ *
+ *
+ *
+ *
+ *
+ *
+ *
+ *
+ *
+ *
+ *
+ *
+ *
+ *
+ *
+ */
+.sk-spinner-fading-circle.sk-spinner {
+ margin: 0 auto;
+ width: 22px;
+ height: 22px;
+ position: relative;
+}
+
+.sk-spinner-fading-circle .sk-circle {
+ width: 100%;
+ height: 100%;
+ position: absolute;
+ left: 0;
+ top: 0;
+}
+
+.sk-spinner-fading-circle .sk-circle:before {
+ content: '';
+ display: block;
+ margin: 0 auto;
+ width: 18%;
+ height: 18%;
+ background-color: #18b090;
+ border-radius: 100%;
+ -webkit-animation: sk-circleFadeDelay 1.2s infinite ease-in-out;
+ animation: sk-circleFadeDelay 1.2s infinite ease-in-out;
+ /* Prevent first frame from flickering when animation starts */
+ -webkit-animation-fill-mode: both;
+ animation-fill-mode: both;
+}
+
+.sk-spinner-fading-circle .sk-circle2 {
+ -webkit-transform: rotate(30deg);
+ -ms-transform: rotate(30deg);
+ transform: rotate(30deg);
+}
+
+.sk-spinner-fading-circle .sk-circle3 {
+ -webkit-transform: rotate(60deg);
+ -ms-transform: rotate(60deg);
+ transform: rotate(60deg);
+}
+
+.sk-spinner-fading-circle .sk-circle4 {
+ -webkit-transform: rotate(90deg);
+ -ms-transform: rotate(90deg);
+ transform: rotate(90deg);
+}
+
+.sk-spinner-fading-circle .sk-circle5 {
+ -webkit-transform: rotate(120deg);
+ -ms-transform: rotate(120deg);
+ transform: rotate(120deg);
+}
+
+.sk-spinner-fading-circle .sk-circle6 {
+ -webkit-transform: rotate(150deg);
+ -ms-transform: rotate(150deg);
+ transform: rotate(150deg);
+}
+
+.sk-spinner-fading-circle .sk-circle7 {
+ -webkit-transform: rotate(180deg);
+ -ms-transform: rotate(180deg);
+ transform: rotate(180deg);
+}
+
+.sk-spinner-fading-circle .sk-circle8 {
+ -webkit-transform: rotate(210deg);
+ -ms-transform: rotate(210deg);
+ transform: rotate(210deg);
+}
+
+.sk-spinner-fading-circle .sk-circle9 {
+ -webkit-transform: rotate(240deg);
+ -ms-transform: rotate(240deg);
+ transform: rotate(240deg);
+}
+
+.sk-spinner-fading-circle .sk-circle10 {
+ -webkit-transform: rotate(270deg);
+ -ms-transform: rotate(270deg);
+ transform: rotate(270deg);
+}
+
+.sk-spinner-fading-circle .sk-circle11 {
+ -webkit-transform: rotate(300deg);
+ -ms-transform: rotate(300deg);
+ transform: rotate(300deg);
+}
+
+.sk-spinner-fading-circle .sk-circle12 {
+ -webkit-transform: rotate(330deg);
+ -ms-transform: rotate(330deg);
+ transform: rotate(330deg);
+}
+
+.sk-spinner-fading-circle .sk-circle2:before {
+ -webkit-animation-delay: -1.1s;
+ animation-delay: -1.1s;
+}
+
+.sk-spinner-fading-circle .sk-circle3:before {
+ -webkit-animation-delay: -1s;
+ animation-delay: -1s;
+}
+
+.sk-spinner-fading-circle .sk-circle4:before {
+ -webkit-animation-delay: -0.9s;
+ animation-delay: -0.9s;
+}
+
+.sk-spinner-fading-circle .sk-circle5:before {
+ -webkit-animation-delay: -0.8s;
+ animation-delay: -0.8s;
+}
+
+.sk-spinner-fading-circle .sk-circle6:before {
+ -webkit-animation-delay: -0.7s;
+ animation-delay: -0.7s;
+}
+
+.sk-spinner-fading-circle .sk-circle7:before {
+ -webkit-animation-delay: -0.6s;
+ animation-delay: -0.6s;
+}
+
+.sk-spinner-fading-circle .sk-circle8:before {
+ -webkit-animation-delay: -0.5s;
+ animation-delay: -0.5s;
+}
+
+.sk-spinner-fading-circle .sk-circle9:before {
+ -webkit-animation-delay: -0.4s;
+ animation-delay: -0.4s;
+}
+
+.sk-spinner-fading-circle .sk-circle10:before {
+ -webkit-animation-delay: -0.3s;
+ animation-delay: -0.3s;
+}
+
+.sk-spinner-fading-circle .sk-circle11:before {
+ -webkit-animation-delay: -0.2s;
+ animation-delay: -0.2s;
+}
+
+.sk-spinner-fading-circle .sk-circle12:before {
+ -webkit-animation-delay: -0.1s;
+ animation-delay: -0.1s;
+}
+
+@-webkit-keyframes sk-circleFadeDelay {
+ 0%,
+ 39%,
+ 100% {
+ opacity: 0;
+ }
+ 40% {
+ opacity: 1;
+ }
+}
+
+@keyframes sk-circleFadeDelay {
+ 0%,
+ 39%,
+ 100% {
+ opacity: 0;
+ }
+ 40% {
+ opacity: 1;
+ }
+}
+
+.ibox-content > .sk-spinner {
+ display: none;
+}
+
+.ibox-content.sk-loading {
+ position: relative;
+}
+
+.ibox-content.sk-loading:after {
+ content: '';
+ background-color: rgba(255, 255, 255, 0.7);
+ position: absolute;
+ top: 0;
+ left: 0;
+ right: 0;
+ bottom: 0;
+}
+
+.ibox-content.sk-loading > .sk-spinner {
+ display: block;
+ position: absolute;
+ top: 40%;
+ left: 0;
+ right: 0;
+ z-index: 2000;
+}
+
+/* PACE PLUGIN
+-------------------------------------------------- */
+.landing-page.pace .pace-progress {
+ background: #fff;
+ position: fixed;
+ z-index: 2000;
+ top: 0;
+ left: 0;
+ height: 2px;
+ -webkit-transition: width 1s;
+ -moz-transition: width 1s;
+ -o-transition: width 1s;
+ transition: width 1s;
+}
+
+.pace-inactive {
+ display: none;
+}
+
+body.landing-page {
+ color: var(--text);
+ font-family: 'Open Sans', helvetica, arial, sans-serif;
+ background-color: #fff;
+}
+
+.landing-page {
+ /* CUSTOMIZE THE NAVBAR
+ -------------------------------------------------- */
+ /* Flip around the padding for proper display in narrow viewports */
+ /* BACKGROUNDS SLIDER
+ -------------------------------------------------- */
+ /* CUSTOMIZE THE CAROUSEL
+ -------------------------------------------------- */
+ /* Carousel base class */
+ /* Since positioning the image, we need to help out the caption */
+ /* Declare heights because of positioning of img element */
+ /* Sections
+ ------------------------- */
+ /* Buttons - only primary custom button
+ ------------------------- */
+ /* RESPONSIVE CSS
+ -------------------------------------------------- */
+}
+
+.landing-page button:focus {
+ outline: 0;
+}
+
+.landing-page .container {
+ overflow: hidden;
+}
+
+.landing-page span.navy {
+ color: #18b090;
+}
+
+.landing-page p.text-color {
+ color: var(--text);
+}
+
+.landing-page a.navy-link {
+ color: #18b090;
+ text-decoration: none;
+}
+
+.landing-page a.navy-link:hover {
+ color: #18a080;
+}
+
+.landing-page section p {
+ color: #b0b0b0;
+ font-size: 13px;
+}
+
+.landing-page address {
+ font-size: 13px;
+}
+
+.landing-page h1 {
+ margin-top: 10px;
+ font-size: 30px;
+ font-weight: 200;
+}
+
+.landing-page .navy-line {
+ width: 60px;
+ height: 1px;
+ margin: 60px auto 0;
+ border-bottom: 2px solid #18b090;
+}
+
+.landing-page .navbar {
+ padding: 0 1rem;
+}
+
+.landing-page .navbar-wrapper {
+ position: fixed;
+ top: 0;
+ right: 0;
+ left: 0;
+ z-index: 200;
+}
+
+.landing-page .navbar-wrapper > .container {
+ padding-right: 0;
+ padding-left: 0;
+}
+
+.landing-page .navbar-wrapper .navbar {
+ padding-right: 15px;
+ padding-left: 15px;
+}
+
+.landing-page .navbar-default.navbar-scroll {
+ background-color: #fff;
+ border-color: #fff;
+ padding: 15px 0;
+}
+
+.landing-page .navbar-default {
+ background-color: transparent;
+ border-color: transparent;
+ transition: all 0.3s ease-in-out 0s;
+}
+
+.landing-page .navbar-default .nav li a {
+ color: #fff;
+ font-family: 'Open Sans', helvetica, arial, sans-serif;
+ font-weight: 700;
+ letter-spacing: 1px;
+ text-transform: uppercase;
+ font-size: 14px;
+}
+
+.landing-page .navbar-nav > li > a {
+ padding-top: 25px;
+ border-top: 6px solid transparent;
+}
+
+.landing-page .navbar-default .navbar-nav > .active > a,
+.landing-page .navbar-default .navbar-nav > .active > a:hover {
+ background: transparent;
+ color: #fff;
+ border-top: 6px solid #18b090;
+}
+
+.landing-page .navbar-default .navbar-nav > li > a:hover,
+.landing-page .navbar-default .navbar-nav > li > a:focus {
+ color: #18b090;
+ background: inherit;
+}
+
+.landing-page .navbar-default .navbar-nav > .active > a:focus {
+ background: transparent;
+ color: #fff;
+}
+
+.landing-page .navbar-default .navbar-nav > .active > a:focus {
+ background: transparent;
+ color: #ffffff;
+}
+
+.landing-page .navbar-default.navbar-scroll .navbar-nav > .active > a:focus {
+ background: transparent;
+ color: inherit;
+}
+
+.landing-page .navbar-default .navbar-brand:hover,
+.landing-page .navbar-default .navbar-brand:focus {
+ background: #18a080;
+ color: #fff;
+}
+
+.landing-page .navbar-default .navbar-brand {
+ color: #fff;
+ height: auto;
+ display: block;
+ font-size: 14px;
+ background: #18b090;
+ padding: 15px 20px 15px 20px;
+ border-radius: 0 0 5px 5px;
+ font-weight: 700;
+ transition: all 0.3s ease-in-out 0s;
+ margin-top: -16px;
+}
+
+.landing-page .navbar-scroll.navbar-default .nav li a {
+ color: var(--text);
+}
+
+.landing-page .navbar-scroll.navbar-default .nav li a:hover {
+ color: #18b090;
+}
+
+.landing-page .navbar-wrapper .navbar.navbar-scroll {
+ padding-top: 0;
+ padding-bottom: 5px;
+ border-bottom: 1px solid var(--border-color);
+ border-radius: 0;
+}
+
+.landing-page .nav.navbar-right {
+ flex-direction: row;
+}
+
+.landing-page .nav > li.active {
+ border: none;
+ background: inherit;
+}
+
+.landing-page .nav > li > a {
+ padding: 25px 10px 15px 10px;
+}
+
+.landing-page .navbar-scroll .navbar-nav > li > a {
+ padding: 20px 10px;
+}
+
+.landing-page .navbar-default .navbar-nav > li .nav-link.active,
+.landing-page .navbar-default .navbar-nav > li .nav-link.active:hover {
+ border-top: 6px solid #18b090;
+}
+
+.landing-page .navbar-fixed-top {
+ border: none !important;
+}
+
+.landing-page .navbar-fixed-top.navbar-scroll {
+ border-bottom: 1px solid var(--border-color) !important;
+}
+
+.landing-page .navbar.navbar-scroll .navbar-brand {
+ margin-top: 5px;
+ border-radius: 5px;
+ font-size: 12px;
+ padding: 10px;
+ height: auto;
+}
+
+.landing-page .header-back {
+ height: 470px;
+ width: 100%;
+}
+
+.landing-page .header-back.one {
+ background: url('../img/landing/header_one.jpg') 50% 0 no-repeat;
+}
+
+.landing-page .header-back.two {
+ background: url('../img/landing/header_two.jpg') 50% 0 no-repeat;
+}
+
+.landing-page .carousel {
+ height: 470px;
+ overflow: hidden;
+}
+
+.landing-page .carousel-caption {
+ z-index: 10;
+}
+
+.landing-page .carousel .item {
+ height: 470px;
+ background-color: #777;
+}
+
+.landing-page .carousel-inner > .item > img {
+ position: absolute;
+ top: 0;
+ left: 0;
+ min-width: 100%;
+ height: 470px;
+}
+
+.landing-page .carousel-fade .carousel-inner .item {
+ opacity: 0;
+ -webkit-transition-property: opacity;
+ transition-property: opacity;
+}
+
+.landing-page .carousel-fade .carousel-inner .active {
+ opacity: 1;
+}
+
+.landing-page .carousel-fade .carousel-inner .active.left,
+.landing-page .carousel-fade .carousel-inner .active.right {
+ left: 0;
+ opacity: 0;
+ z-index: 1;
+}
+
+.landing-page .carousel-fade .carousel-inner .next.left,
+.landing-page .carousel-fade .carousel-inner .prev.right {
+ opacity: 1;
+}
+
+.landing-page .carousel-fade .carousel-control {
+ z-index: 2;
+}
+
+.landing-page .carousel-control.left,
+.landing-page .carousel-control.right {
+ background: none;
+}
+
+.landing-page .carousel-control {
+ width: 6%;
+}
+
+.landing-page .carousel-inner .container {
+ position: relative;
+ overflow: visible;
+}
+
+.landing-page .carousel-inner {
+ overflow: visible;
+}
+
+.landing-page .carousel-caption {
+ position: absolute;
+ top: 100px;
+ left: 0;
+ bottom: auto;
+ right: auto;
+ text-align: left;
+}
+
+.landing-page .carousel-caption {
+ position: absolute;
+ top: 100px;
+ left: 0;
+ bottom: auto;
+ right: auto;
+ text-align: left;
+}
+
+.landing-page .carousel-caption.blank {
+ top: 140px;
+}
+
+.landing-page .carousel-image {
+ position: absolute;
+ right: 10px;
+ top: 150px;
+}
+
+.landing-page .carousel-indicators {
+ padding-right: 60px;
+}
+
+.landing-page .carousel-caption h1 {
+ font-weight: 700;
+ font-size: 38px;
+ text-transform: uppercase;
+ text-shadow: none;
+ letter-spacing: -1.5px;
+}
+
+.landing-page .carousel-caption p {
+ font-weight: 700;
+ text-transform: uppercase;
+ text-shadow: none;
+}
+
+.landing-page .caption-link {
+ color: #fff;
+ margin-left: 10px;
+ text-transform: capitalize;
+ font-weight: 400;
+}
+
+.landing-page .caption-link:hover {
+ text-decoration: none;
+ color: inherit;
+}
+
+.landing-page .services {
+ padding-top: 60px;
+}
+
+.landing-page .services h2 {
+ font-size: 20px;
+ letter-spacing: -1px;
+ font-weight: 600;
+ text-transform: uppercase;
+}
+
+.landing-page .features-block {
+ margin-top: 40px;
+}
+
+.landing-page .features-text {
+ margin-top: 40px;
+}
+
+.landing-page .features small {
+ color: #18b090;
+}
+
+.landing-page .features h2 {
+ font-size: 18px;
+ margin-top: 5px;
+}
+
+.landing-page .features-text-alone {
+ margin: 40px 0;
+}
+
+.landing-page .features-text-alone h1 {
+ font-weight: 200;
+}
+
+.landing-page .features-icon {
+ color: #18b090;
+ font-size: 40px;
+}
+
+.landing-page .navy-section {
+ margin-top: 60px;
+ background: #18b090;
+ color: #fff;
+ padding: 20px 0;
+}
+
+.landing-page .gray-section {
+ background: var(--bg-mid);
+ margin-top: 60px;
+}
+
+.landing-page .team-member {
+ text-align: center;
+}
+
+.landing-page .team-member img {
+ margin: auto;
+}
+
+.landing-page .social-icon a {
+ background: #18b090;
+ color: #fff;
+ padding: 4px 8px;
+ height: 28px;
+ width: 28px;
+ display: block;
+ border-radius: 50px;
+}
+
+.landing-page .social-icon a:hover {
+ background: #18a080;
+}
+
+.landing-page .img-small {
+ height: 88px;
+ width: 88px;
+}
+
+.landing-page .pricing-plan {
+ margin: 20px 30px 0 30px;
+ border-radius: 4px;
+}
+
+.landing-page .pricing-plan.selected {
+ transform: scale(1.1);
+ background: var(--bg-mid);
+}
+
+.landing-page .pricing-plan li {
+ padding: 10px 16px;
+ border-top: 1px solid var(--border-color);
+ text-align: center;
+ color: #b0b0b0;
+}
+
+.landing-page .pricing-plan .pricing-price span {
+ font-weight: 700;
+ color: #18b090;
+}
+
+.landing-page li.pricing-desc {
+ font-size: 13px;
+ border-top: none;
+ padding: 20px 16px;
+}
+
+.landing-page li.pricing-title {
+ background: #18b090;
+ color: #fff;
+ padding: 10px;
+ border-radius: 4px 4px 0 0;
+ font-size: 22px;
+ font-weight: 600;
+}
+
+.landing-page .testimonials {
+ padding-top: 80px;
+ padding-bottom: 90px;
+ background-color: #18b090;
+ background-image: url('../img/landing/avatar_all.png');
+}
+
+.landing-page .big-icon {
+ font-size: 56px !important;
+}
+
+.landing-page .features .big-icon {
+ color: #18b090 !important;
+}
+
+.landing-page .contact {
+ background-image: url('../img/landing/word_map.png');
+ background-position: 50% 50%;
+ background-repeat: no-repeat;
+ margin-top: 60px;
+}
+
+.landing-page section.timeline {
+ padding-bottom: 30px;
+}
+
+.landing-page section.comments {
+ padding-bottom: 80px;
+}
+
+.landing-page .comments-avatar {
+ margin-top: 25px;
+ margin-left: 22px;
+ margin-bottom: 25px;
+}
+
+.landing-page .comments-avatar .commens-name {
+ font-weight: 600;
+ font-size: 14px;
+}
+
+.landing-page .comments-avatar img {
+ width: 42px;
+ height: 42px;
+ border-radius: 50%;
+ margin-right: 10px;
+}
+
+.landing-page .bubble {
+ position: relative;
+ height: 120px;
+ padding: 20px;
+ background: #ffffff;
+ -webkit-border-radius: 10px;
+ -moz-border-radius: 10px;
+ border-radius: 10px;
+ font-style: italic;
+ font-size: 14px;
+}
+
+.landing-page .bubble:after {
+ content: '';
+ position: absolute;
+ border-style: solid;
+ border-width: 15px 14px 0;
+ border-color: #ffffff transparent;
+ display: block;
+ width: 0;
+ z-index: 1;
+ bottom: -15px;
+ left: 30px;
+}
+
+.landing-page .btn-primary.btn-outline:hover,
+.landing-page .btn-success.btn-outline:hover,
+.landing-page .btn-info.btn-outline:hover,
+.landing-page .btn-warning.btn-outline:hover,
+.landing-page .btn-danger.btn-outline:hover {
+ color: #fff;
+}
+
+.landing-page .btn-primary {
+ background-color: #18b090;
+ border-color: #18b090;
+ color: #ffffff;
+ font-size: 14px;
+ padding: 10px 20px;
+ font-weight: 600;
+}
+
+.landing-page .btn-primary:hover,
+.landing-page .btn-primary:focus,
+.landing-page .btn-primary:active,
+.landing-page .btn-primary.active,
+.landing-page .open .dropdown-toggle.btn-primary {
+ background-color: #18a080;
+ border-color: #18a080;
+ color: #ffffff;
+}
+
+.landing-page .btn-primary:active,
+.landing-page .btn-primary.active,
+.landing-page .open .dropdown-toggle.btn-primary {
+ background-image: none;
+}
+
+.landing-page .btn-primary.disabled,
+.landing-page .btn-primary.disabled:hover,
+.landing-page .btn-primary.disabled:focus,
+.landing-page .btn-primary.disabled:active,
+.landing-page .btn-primary.disabled.active,
+.landing-page .btn-primary[disabled],
+.landing-page .btn-primary[disabled]:hover,
+.landing-page .btn-primary[disabled]:focus,
+.landing-page .btn-primary[disabled]:active,
+.landing-page .btn-primary.active[disabled],
+.landing-page fieldset[disabled] .btn-primary,
+.landing-page fieldset[disabled] .btn-primary:hover,
+.landing-page fieldset[disabled] .btn-primary:focus,
+.landing-page fieldset[disabled] .btn-primary:active,
+.landing-page fieldset[disabled] .btn-primary.active {
+ background-color: #20c8a0;
+ border-color: #20c8a0;
+}
+
+@media (min-width: 768px) {
+ .landing-page {
+ /* Navbar positioning foo */
+ /* The navbar becomes detached from the top, so we round the corners */
+ /* Bump up size of carousel content */
+ }
+
+ .landing-page .navbar-wrapper .container {
+ padding-right: 15px;
+ padding-left: 15px;
+ }
+
+ .landing-page .navbar-wrapper .navbar {
+ padding-right: 0;
+ padding-left: 0;
+ }
+
+ .landing-page .navbar-wrapper .navbar {
+ border-radius: 4px;
+ }
+
+ .landing-page .carousel-caption p {
+ margin-bottom: 20px;
+ font-size: 14px;
+ line-height: 1.4;
+ }
+
+ .landing-page .featurette-heading {
+ font-size: 50px;
+ }
+}
+
+@media (max-width: 992px) {
+ .landing-page .carousel-image {
+ display: none;
+ }
+}
+
+@media (max-width: 768px) {
+ .landing-page .carousel-caption,
+ .landing-page .carousel-caption.blank {
+ left: 5%;
+ top: 80px;
+ }
+
+ .landing-page .carousel-caption h1 {
+ font-size: 28px;
+ }
+
+ .landing-page .navbar.navbar-scroll .navbar-brand {
+ margin-top: 6px;
+ }
+
+ .landing-page .navbar-default {
+ background-color: #fff;
+ border-color: #fff;
+ padding: 15px 0;
+ }
+
+ .landing-page .navbar-default .navbar-nav > .active > a:focus {
+ background: transparent;
+ color: inherit;
+ }
+
+ .landing-page .navbar-default .nav li a {
+ color: var(--text);
+ }
+
+ .landing-page .navbar-default .nav li a:hover {
+ color: #18b090;
+ }
+
+ .landing-page .navbar-wrapper .navbar {
+ padding-top: 0;
+ padding-bottom: 5px;
+ border-bottom: 1px solid var(--border-color);
+ border-radius: 0;
+ }
+
+ .landing-page .nav > li > a {
+ padding: 10px 10px 15px 10px;
+ }
+
+ .landing-page .navbar-nav > li > a {
+ padding: 20px 10px;
+ }
+
+ .landing-page .navbar .navbar-brand {
+ margin-top: 5px;
+ border-radius: 5px;
+ font-size: 12px;
+ padding: 10px;
+ height: auto;
+ }
+
+ .landing-page .navbar-wrapper .navbar {
+ padding-left: 15px;
+ padding-right: 5px;
+ }
+
+ .landing-page .navbar-default .navbar-nav > .active > a,
+ .landing-page .navbar-default .navbar-nav > .active > a:hover {
+ color: inherit;
+ }
+
+ .landing-page .carousel-control {
+ display: none;
+ }
+}
+
+@media (min-width: 992px) {
+ .landing-page .featurette-heading {
+ margin-top: 120px;
+ }
+}
+
+@media (max-width: 768px) {
+ .landing-page .navbar .navbar-header {
+ display: block;
+ float: none;
+ }
+
+ .landing-page .navbar .navbar-header .navbar-toggle {
+ background-color: #ffffff;
+ padding: 9px 10px;
+ border: none;
+ }
+
+ .landing-page .nav.navbar-right {
+ flex-direction: column;
+ }
+}
+
+.landing-page .navbar-toggle {
+ color: #ddd;
+ float: right;
+}
+
+.landing-page .navbar-toggle i {
+ font-size: 24px;
+}
+
+body.rtls {
+ text-align: right !important;
+ /* Theme config */
+}
+
+body.rtls .nav-second-level li a {
+ padding: 7px 35px 7px 10px;
+}
+
+body.rtls .ibox-title h5 {
+ float: right;
+}
+
+body.rtls .float-right {
+ float: left !important;
+}
+
+body.rtls .float-left {
+ float: right !important;
+}
+
+body.rtls .ibox-title {
+ background-color: rgba(0, 0, 0, 0.8);
+ padding: 15px 15px 8px 15px;
+}
+
+body.rtls .ibox-title .label {
+ float: left;
+}
+
+body.rtls #small-chat {
+ right: auto;
+ left: 20px;
+}
+
+body.rtls .small-chat-box {
+ right: auto;
+ left: 75px;
+}
+
+body.rtls .ibox-tools {
+ float: left;
+ position: static;
+}
+
+body.rtls .stat-percent {
+ float: left;
+}
+
+body.rtls .navbar-right {
+ float: left !important;
+}
+
+body.rtls .navbar-top-links li:last-child {
+ margin-left: 40px;
+ margin-right: 0;
+}
+
+body.rtls .minimalize-styl-2 {
+ float: right;
+ margin: 14px 20px 5px 5px;
+}
+
+body.rtls .feed-element > .float-left {
+ margin-left: 10px;
+ margin-right: 0;
+}
+
+body.rtls .timeline-item .date {
+ text-align: left;
+}
+
+body.rtls .timeline-item .date i {
+ left: 0;
+ right: auto;
+}
+
+body.rtls .timeline-item .content {
+ border-right: 1px solid var(--border-color);
+ border-left: none;
+}
+
+body.rtls .theme-config {
+ left: 0;
+ right: auto;
+}
+
+body.rtls .spin-icon {
+ border-radius: 0 20px 20px 0;
+}
+
+body.rtls .toast-close-button {
+ float: left;
+}
+
+body.rtls #toast-container > .toast:before {
+ margin: auto -1.5em auto 0.5em;
+}
+
+body.rtls #toast-container > div {
+ padding: 15px 50px 15px 15px;
+}
+
+body.rtls #toast-container > div {
+ background-position: 95% center;
+}
+
+body.rtls .center-orientation .vertical-timeline-icon i {
+ margin-left: 0;
+ margin-right: -12px;
+}
+
+body.rtls .vertical-timeline-icon i {
+ right: 50%;
+ left: auto;
+ margin-left: auto;
+ margin-right: -12px;
+}
+
+body.rtls .file-box {
+ float: right;
+}
+
+body.rtls ul.notes li {
+ float: right;
+}
+
+body.rtls .chat-users,
+body.rtls .chat-statistic {
+ margin-right: -30px;
+ margin-left: auto;
+}
+
+body.rtls .dropdown-menu > li > a {
+ text-align: right;
+}
+
+body.rtls .b-r {
+ border-left: 1px solid var(--border-color);
+ border-right: none;
+}
+
+body.rtls .dd-list .dd-list {
+ padding-right: 30px;
+ padding-left: 0;
+}
+
+body.rtls .dd-item > button {
+ float: right;
+}
+
+body.rtls .theme-config-box {
+ margin-left: -220px;
+ margin-right: 0;
+}
+
+body.rtls .theme-config-box.show {
+ margin-left: 0;
+ margin-right: 0;
+}
+
+body.rtls .spin-icon {
+ right: 0;
+ left: auto;
+}
+
+body.rtls .skin-settings {
+ margin-right: 40px;
+ margin-left: 0;
+}
+
+body.rtls .skin-settings {
+ direction: ltr;
+}
+
+body.rtls .footer.fixed {
+ margin-right: 220px;
+ margin-left: 0;
+}
+
+body.rtls .navbar-static-top .dropdown-menu {
+ left: 0;
+ right: auto;
+}
+
+body.rtls .social-footer .social-comment img,
+body.rtls .social-avatar img {
+ margin-left: 10px;
+ margin-right: 0;
+}
+
+body.rtls .sidebar-container .sidebar-message > a > .float-left {
+ margin-left: 10px;
+ margin-right: 0;
+}
+
+body.rtls .setings-item .switch {
+ margin-left: 5px;
+}
+
+body.rtls .nav > li > a i {
+ margin-left: 6px;
+}
+
+@media (max-width: 992px) {
+ body.rtls .chat-users,
+ body.rtls .chat-statistic {
+ margin-right: 0;
+ }
+}
+
+body.rtls.mini-navbar .footer.fixed,
+body.body-small.mini-navbar .footer.fixed {
+ margin: 0 70px 0 0;
+}
+
+body.rtls.mini-navbar.fixed-sidebar .footer.fixed,
+body.body-small.mini-navbar .footer.fixed {
+ margin: 0 0 0 0;
+}
+
+body.rtls.top-navigation .navbar-toggle {
+ float: right;
+ margin-left: 15px;
+ margin-right: 15px;
+}
+
+.body-small.rtls.top-navigation .navbar-header {
+ float: none;
+}
+
+body.rtls.top-navigation #page-wrapper {
+ margin: 0;
+}
+
+body.rtls.mini-navbar.fixed-sidebar #page-wrapper {
+ margin: 0 0 0 0;
+}
+
+body.rtls.body-small.fixed-sidebar.mini-navbar #page-wrapper {
+ margin: 0 220px 0 0;
+}
+
+body.rtls.body-small.fixed-sidebar.mini-navbar .navbar-static-side {
+ width: 220px;
+}
+
+.body-small.rtls .navbar-fixed-top {
+ margin-right: 0;
+}
+
+.body-small.rtls .navbar-header {
+ float: right;
+}
+
+body.rtls .navbar-top-links li:last-child {
+ margin-left: 20px;
+}
+
+body.rtls .top-navigation #page-wrapper,
+body.rtls.mini-navbar .top-navigation #page-wrapper,
+body.rtls.mini-navbar.top-navigation #page-wrapper {
+ margin: 0;
+}
+
+body.rtls .top-navigation .footer.fixed,
+body.rtls.top-navigation .footer.fixed {
+ margin: 0;
+}
+
+@media (max-width: 768px) {
+ body.rtls .navbar-top-links li:last-child {
+ margin-left: 10px;
+ }
+
+ .navbar-top-links li a {
+ padding: 20px 5px;
+ }
+
+ .body-small.rtls #page-wrapper {
+ position: inherit;
+ margin: 0 0 0 0;
+ min-height: 1000px;
+ }
+
+ .rtls.fixed-sidebar.body-small .navbar-static-side {
+ display: none;
+ z-index: 2001;
+ position: fixed;
+ width: 220px;
+ }
+
+ .rtls.fixed-sidebar.body-small.mini-navbar .navbar-static-side {
+ display: block;
+ }
+}
+
+.rtls .ltr-support {
+ direction: ltr;
+}
+
+.rtls.mini-navbar .nav-second-level,
+.rtls.mini-navbar li.active .nav-second-level {
+ left: auto;
+ right: 70px;
+}
+
+.rtls #right-sidebar {
+ left: -260px;
+ right: auto;
+}
+
+.rtls #right-sidebar.sidebar-open {
+ left: 0;
+}
+
+/*
+ *
+ * This is style for skin config
+ * Use only in demo theme
+ *
+*/
+.theme-config {
+ position: absolute;
+ top: 90px;
+ right: 0;
+ overflow: hidden;
+}
+
+.theme-config-box {
+ margin-right: -220px;
+ position: relative;
+ z-index: 2100;
+ transition-duration: 0.8s;
+}
+
+.theme-config-box.show {
+ margin-right: 0;
+}
+
+.spin-icon {
+ background: #18b090;
+ position: absolute;
+ padding: 7px 10px 7px 13px;
+ border-radius: 20px 0 0 20px;
+ font-size: 16px;
+ top: 0;
+ left: 0;
+ width: 40px;
+ color: #fff;
+ cursor: pointer;
+}
+
+.skin-settings {
+ width: 220px;
+ margin-left: 40px;
+ background: var(--bg-mid);
+}
+
+.skin-settings .title {
+ background: var(--bg-mid);
+ text-align: center;
+ text-transform: uppercase;
+ font-weight: 600;
+ display: block;
+ padding: 10px 15px;
+ font-size: 12px;
+}
+
+.setings-item {
+ padding: 10px 30px;
+}
+
+.setings-item.skin {
+ text-align: center;
+}
+
+.setings-item .switch {
+ float: right;
+}
+
+.skin-name a {
+ text-transform: uppercase;
+}
+
+.setings-item a {
+ color: #fff;
+}
+
+.default-skin,
+.blue-skin,
+.ultra-skin,
+.yellow-skin {
+ text-align: center;
+}
+
+.default-skin {
+ font-weight: 600;
+ background: #283848;
+}
+
+.default-skin:hover {
+ background: #203040;
+}
+
+.blue-skin {
+ font-weight: 600;
+ background: url("patterns/header-profile-skin-1.png") repeat scroll 0 0;
+}
+
+.blue-skin:hover {
+ background: #1090d8;
+}
+
+.yellow-skin {
+ font-weight: 600;
+ background: url("patterns/header-profile-skin-3.png") repeat scroll 0 100%;
+}
+
+.yellow-skin:hover {
+ background: #d08838;
+}
+
+.ultra-skin {
+ padding: 20px 10px;
+ font-weight: 600;
+ background: url("patterns/3.png") repeat scroll 0 0;
+}
+
+.ultra-skin:hover {
+ background: url("patterns/4.png") repeat scroll 0 0;
+}
+
+/*
+ *
+ * SKIN 1 - INSPINIA - Responsive Admin Theme
+ * NAME - Blue light
+ *
+*/
+.skin-1 .minimalize-styl-2 {
+ margin: 14px 5px 5px 30px;
+}
+
+.skin-1 .navbar-top-links li:last-child {
+ margin-right: 30px;
+}
+
+.skin-1.fixed-nav .minimalize-styl-2 {
+ margin: 14px 5px 5px 15px;
+}
+
+.skin-1 .spin-icon {
+ background: #1098f0 !important;
+}
+
+.skin-1 .nav-header {
+ background-color: #1098f0;
+ background-image: url('patterns/header-profile-skin-1.png');
+}
+
+.skin-1.mini-navbar .nav-second-level {
+ background: #404860;
+}
+
+.skin-1 .breadcrumb {
+ background: transparent;
+}
+
+.skin-1 .page-heading {
+ border: none;
+}
+
+.skin-1 .nav > li.active {
+ background: #384058;
+}
+
+.skin-1 .nav > li > a {
+ color: #a0a8b8;
+}
+
+.skin-1 ul.nav-second-level {
+ background-color: inherit;
+}
+
+.skin-1 .nav > li.active > a {
+ color: #fff;
+}
+
+.skin-1 .navbar-minimalize {
+ background: #1098f0;
+ border-color: #1098f0;
+}
+
+body.skin-1 {
+ background: #404860;
+}
+
+.skin-1 .navbar-static-top {
+ background: #ffffff;
+}
+
+.skin-1 .dashboard-header {
+ background: transparent;
+ border-bottom: none !important;
+ border-top: none;
+ padding: 20px 30px 10px 30px;
+}
+
+.fixed-nav.skin-1 .navbar-fixed-top {
+ background: #fff;
+}
+
+.skin-1 .wrapper-content {
+ padding: 30px 15px;
+}
+
+.skin-1 #page-wrapper {
+ background: #f0f8f8;
+}
+
+.skin-1 .ibox-title,
+.skin-1 .ibox-content {
+ border-width: 1px;
+}
+
+.skin-1 .ibox-content:last-child {
+ border-style: solid solid solid solid;
+}
+
+.skin-1 .nav > li.active {
+ border: none;
+}
+
+.skin-1 .nav-header {
+ padding: 35px 25px 25px 25px;
+}
+
+.skin-1 .nav-header a.dropdown-toggle {
+ color: #fff;
+ margin-top: 10px;
+}
+
+.skin-1 .nav-header a.dropdown-toggle .text-muted {
+ color: #fff;
+ opacity: 0.8;
+}
+
+.skin-1 .profile-element {
+ text-align: center;
+}
+
+.skin-1 .rounded-circle {
+ border-radius: 5px;
+}
+
+.skin-1 .navbar-default .nav > li > a:hover,
+.skin-1 .navbar-default .nav > li > a:focus {
+ background: #384058;
+ color: #fff;
+}
+
+.skin-1 .nav.nav-tabs > li.active > a {
+ color: #555;
+}
+
+.skin-1 .nav.nav-tabs > li.active {
+ background: transparent;
+}
+
+/*
+ *
+ * SKIN 2 - INSPINIA - Responsive Admin Theme
+ * NAME - Inspinia Ultra
+ *
+*/
+body.skin-2 {
+ color: #585858 !important;
+}
+
+.skin-2 .minimalize-styl-2 {
+ margin: 14px 5px 5px 25px;
+}
+
+.skin-2 .navbar-top-links li:last-child {
+ margin-right: 30px;
+}
+
+.skin-2 .spin-icon {
+ background: #20c8c8 !important;
+}
+
+.skin-2 .nav-header {
+ background-color: #20c8c8;
+ background-image: url('patterns/header-profile-skin-2.png');
+}
+
+.skin-2.mini-navbar .nav-second-level {
+ background: var(--bg-mid);
+}
+
+.skin-2 .breadcrumb {
+ background: transparent;
+}
+
+.skin-2.fixed-nav .minimalize-styl-2 {
+ margin: 14px 5px 5px 15px;
+}
+
+.skin-2 .page-heading {
+ border: none;
+ background: rgba(255, 255, 255, 0.7);
+}
+
+.skin-2 ul.nav-second-level {
+ background-color: inherit;
+}
+
+.skin-2 .nav > li.active {
+ background: #e0e0e0;
+}
+
+.skin-2 .logo-element {
+ padding: 17px 0;
+}
+
+.skin-2 .nav > li > a,
+.skin-2 .welcome-message {
+ color: #f0f8ff;
+}
+
+.skin-2 #top-search::-moz-placeholder {
+ color: #f0f8ff;
+ opacity: 0.5;
+}
+
+.skin-2 #side-menu > li > a,
+.skin-2 .nav.nav-second-level > li > a {
+ color: #586880;
+}
+
+.skin-2 .nav > li.active > a {
+ color: #203850;
+}
+
+.skin-2.mini-navbar .nav-header {
+ background: #203850;
+}
+
+.skin-2 .navbar-minimalize {
+ background: #20c8c8;
+ border-color: #20c8c8;
+}
+
+.skin-2 .border-bottom {
+ border-bottom: none !important;
+}
+
+.skin-2 #top-search {
+ color: #fff;
+}
+
+body.skin-2 #wrapper {
+ background-color: var(--bg-mid);
+}
+
+.skin-2 .navbar-static-top {
+ background: #203850;
+}
+
+.fixed-nav.skin-2 .navbar-fixed-top {
+ background: #203850;
+ border-bottom: none !important;
+}
+
+.skin-2 .nav-header {
+ padding: 30px 25px 30px 25px;
+}
+
+.skin-2 .dashboard-header {
+ background: rgba(255, 255, 255, 0.4);
+ border-bottom: none !important;
+ border-top: none;
+ padding: 20px 30px 20px 30px;
+}
+
+.skin-2 .wrapper-content {
+ padding: 30px 15px;
+}
+
+.skin-2 .dashoard-1 .wrapper-content {
+ padding: 0 30px 25px 30px;
+}
+
+.skin-2 .ibox-title {
+ background-color: rgba(0, 0, 0, 0.8);
+ background: rgba(255, 255, 255, 0.7);
+ border: none;
+ margin-bottom: 1px;
+}
+
+.skin-2 .ibox-content {
+ background: rgba(255, 255, 255, 0.4);
+ border: none !important;
+}
+
+.skin-2 #page-wrapper {
+ background: #f8f8f8;
+ background: -webkit-radial-gradient(center, ellipse cover, #f8f8f8 20%, #d8d8d8 100%);
+ background: -o-radial-gradient(center, ellipse cover, #f8f8f8 20%, #d8d8d8 100%);
+ background: -ms-radial-gradient(center, ellipse cover, #f8f8f8 20%, #d8d8d8 100%);
+ background: radial-gradient(ellipse at center, #f8f8f8 20%, #d8d8d8 100%);
+ -ms-filter: "progid:DXImageTransform.Microsoft.gradient(startColorstr=#f8f8f8, endColorstr=#d8d8d8)";
+}
+
+.skin-2 .ibox-title,
+.skin-2 .ibox-content {
+ border-width: 1px;
+}
+
+.skin-2 .ibox-content:last-child {
+ border-style: solid solid solid solid;
+}
+
+.skin-2 .nav > li.active {
+ border: none;
+}
+
+.skin-2 .nav-header a.dropdown-toggle {
+ color: #f0f8ff;
+ margin-top: 10px;
+}
+
+.skin-2 .nav-header a.dropdown-toggle .text-muted {
+ color: #f0f8ff;
+ opacity: 0.8;
+}
+
+.skin-2 .rounded-circle {
+ border-radius: 10px;
+}
+
+.skin-2 .nav.navbar-top-links > li > a:hover,
+.skin-2 .nav.navbar-top-links > li > a:focus {
+ background: #183040;
+}
+
+.skin-2 .navbar-default .nav > li > a:hover,
+.skin-2 .navbar-default .nav > li > a:focus {
+ background: #e0e0e0;
+ color: #203850;
+}
+
+.skin-2 .nav.nav-tabs > li.active > a {
+ color: #555;
+}
+
+.skin-2 .nav.nav-tabs > li.active {
+ background: transparent;
+}
+
+/*
+ *
+ * SKIN 3 - INSPINIA - Responsive Admin Theme
+ * NAME - Yellow/purple
+ *
+*/
+.skin-3 .minimalize-styl-2 {
+ margin: 14px 5px 5px 30px;
+}
+
+.skin-3 .navbar-top-links li:last-child {
+ margin-right: 30px;
+}
+
+.skin-3.fixed-nav .minimalize-styl-2 {
+ margin: 14px 5px 5px 15px;
+}
+
+.skin-3 .spin-icon {
+ background: #f0b850 !important;
+}
+
+body.boxed-layout.skin-3 #wrapper {
+ background: #403040;
+}
+
+.skin-3 .nav-header {
+ background-color: #f0b850;
+ background-image: url('patterns/header-profile-skin-3.png');
+}
+
+.skin-3.mini-navbar .nav-second-level {
+ background: #403040;
+}
+
+.skin-3 .breadcrumb {
+ background: transparent;
+}
+
+.skin-3 .page-heading {
+ border: none;
+}
+
+.skin-3 ul.nav-second-level {
+ background-color: inherit;
+}
+
+.skin-3 .nav > li.active {
+ background: #382840;
+}
+
+.fixed-nav.skin-3 .navbar-fixed-top {
+ background: #fff;
+}
+
+.skin-3 .nav > li > a {
+ color: #908898;
+}
+
+.skin-3 .nav > li.active > a {
+ color: #fff;
+}
+
+.skin-3 .navbar-minimalize {
+ background: #f0b850;
+ border-color: #f0b850;
+}
+
+body.skin-3 {
+ background: #403040;
+}
+
+.skin-3 .navbar-static-top {
+ background: #ffffff;
+}
+
+.skin-3 .dashboard-header {
+ background: transparent;
+ border-bottom: none !important;
+ border-top: none;
+ padding: 20px 30px 10px 30px;
+}
+
+.skin-3 .wrapper-content {
+ padding: 30px 15px;
+}
+
+.skin-3 #page-wrapper {
+ background: #f0f8f8;
+}
+
+.skin-3 .ibox-title,
+.skin-3 .ibox-content {
+ border-width: 1px;
+}
+
+.skin-3 .ibox-content:last-child {
+ border-style: solid solid solid solid;
+}
+
+.skin-3 .nav > li.active {
+ border: none;
+}
+
+.skin-3 .nav-header {
+ padding: 35px 25px 25px 25px;
+}
+
+.skin-3 .nav-header a.dropdown-toggle {
+ color: #fff;
+ margin-top: 10px;
+}
+
+.skin-3 .nav-header a.dropdown-toggle .text-muted {
+ color: #fff;
+ opacity: 0.8;
+}
+
+.skin-3 .profile-element {
+ text-align: center;
+}
+
+.skin-3 .rounded-circle {
+ border-radius: 5px;
+}
+
+.skin-3 .navbar-default .nav > li > a:hover,
+.skin-3 .navbar-default .nav > li > a:focus {
+ background: #382840;
+ color: #fff;
+}
+
+.skin-3 .nav.nav-tabs > li.active > a {
+ color: #555;
+}
+
+.skin-3 .nav.nav-tabs > li.active {
+ background: transparent;
+}
+
+/*
+ *
+ * SKIN 4 - INSPINIA - Responsive Admin Theme
+ * NAME - Light-Skin
+ *
+*/
+body.light-skin {
+ background-color: #f8f8f8;
+ color: #405078;
+}
+
+.light-skin {
+ /* For handle diferent bg color in MVC version */
+}
+
+.light-skin .select2-container--default .select2-selection--single,
+.light-skin .select2-container--default .select2-selection--multiple,
+.light-skin .select2-container--default .select2-selection--single .select2-selection__arrow {
+ height: 2.05rem;
+}
+
+.light-skin .select2-container--default .select2-selection--single .select2-selection__rendered {
+ line-height: 32px;
+}
+
+.light-skin .navbar-fixed-top,
+.light-skin .navbar-static-top {
+ background-color: transparent;
+}
+
+.light-skin .Dashboard_2 .navbar.navbar-static-top,
+.light-skin .Dashboard_3 .navbar.navbar-static-top,
+.light-skin .Dashboard_4_1 .navbar.navbar-static-top,
+.light-skin .ComposeEmail .navbar.navbar-static-top,
+.light-skin .EmailView .navbar.navbar-static-top,
+.light-skin .Inbox .navbar.navbar-static-top,
+.light-skin .Metrics .navbar.navbar-static-top,
+.light-skin .Dashboard_5 .navbar.navbar-static-top {
+ background: transparent;
+}
+
+.light-skin.fixed-nav .navbar-fixed-top {
+ background-color: #ffffff;
+}
+
+.light-skin.mini-navbar .nav .nav-second-level {
+ background-color: #f8f8f8;
+ box-shadow: 0 1px 8px rgba(0, 0, 0, 0.05), 0 1px 2px rgba(0, 0, 0, 0.1);
+}
+
+.light-skin.fixed-sidebar.mini-navbar .nav .nav-second-level,
+.light-skin.canvas-menu.mini-navbar .nav .nav-second-level {
+ box-shadow: none;
+}
+
+.light-skin.canvas-menu nav.navbar-static-side {
+ background-color: #f8f8f8;
+}
+
+.light-skin.canvas-menu.mini-navbar nav.navbar-static-side {
+ box-shadow: 0 1px 8px rgba(0, 0, 0, 0.05), 0 1px 2px rgba(0, 0, 0, 0.1);
+}
+
+.light-skin.mini-navbar .nav-header {
+ background-color: #f8f8f8;
+}
+
+.light-skin #page-wrapper.gray-bg,
+.light-skin #page-wrapper.bg-muted {
+ background-color: #f8f8f8;
+}
+
+.light-skin .logo-element {
+ color: #808898;
+}
+
+.light-skin nav > .sidebar-collapse > ul > li a {
+ color: #808898;
+ padding-top: 9px;
+ padding-bottom: 9px;
+}
+
+.light-skin nav > .sidebar-collapse .nav-second-level li a {
+ padding-top: 7px;
+ padding-bottom: 7px;
+}
+
+.light-skin .nav > li.active > a {
+ color: #385070;
+ font-weight: 700;
+}
+
+.light-skin .nav-header a {
+ color: #385070;
+}
+
+.light-skin .navbar-default .nav > li > a:hover,
+.light-skin .navbar-default .nav > li > a:focus {
+ background-color: inherit;
+ color: #385070;
+ font-weight: 700;
+}
+
+.light-skin .nav-header .font-bold {
+ font-size: 12px;
+ font-weight: 700;
+ color: #385070;
+}
+
+.light-skin .nav-header .text-muted {
+ color: #8090a0 !important;
+ font-size: 12px;
+}
+
+.light-skin .nav-header {
+ background-color: #f8f8f8;
+ background-image: none;
+ padding: 20px 25px 20px 25px;
+}
+
+.light-skin .profile-element img {
+ border-radius: 6px !important;
+}
+
+.light-skin .nav > li.active {
+ background: #f8f8f8;
+}
+
+.light-skin ul.nav-second-level {
+ background: #f8f8f8;
+}
+
+.light-skin .dashboard-header {
+ border-bottom: none !important;
+ border-top: 0;
+ border-radius: 4px;
+ padding: 20px 20px 20px 20px;
+ margin: 10px 10px 0 10px;
+ box-shadow: 0 1px 8px rgba(0, 0, 0, 0.05), 0 1px 2px rgba(0, 0, 0, 0.1);
+}
+
+.light-skin .page-heading {
+ padding-bottom: 10px;
+}
+
+.light-skin .ibox-title {
+ background-color: rgba(0, 0, 0, 0.8);
+ background-color: transparent;
+ border: none;
+ padding-left: 5px;
+}
+
+.light-skin .ibox-title h5 {
+ font-size: 12px;
+}
+
+.light-skin .ibox-tools {
+ right: 5px;
+}
+
+.light-skin .ibox-tools a {
+ color: #808898 !important;
+}
+
+.light-skin .ibox-heading {
+ background-color: #fff;
+ margin-bottom: 20px;
+}
+
+.light-skin .ibox-content {
+ box-shadow: 0 1px 8px rgba(0, 0, 0, 0.05), 0 1px 2px rgba(0, 0, 0, 0.1);
+ border-radius: 4px;
+ border: none;
+ background-color: #ffffff;
+}
+
+.light-skin .breadcrumb {
+ background-color: transparent;
+}
+
+.light-skin .minimalize-styl-2 {
+ margin: 14px 5px 5px 30px;
+}
+
+.light-skin .footer {
+ border: none;
+ background: none;
+}
+
+.light-skin .sidebar-panel {
+ background-color: #fff;
+}
+
+.light-skin #page-wrapper > .border-bottom,
+.light-skin .ibox.border-bottom {
+ border-bottom: transparent !important;
+}
+
+.light-skin .fh-breadcrumb {
+ height: calc(100% - 176px);
+}
+
+.light-skin.top-navigation #page-wrapper > .border-bottom {
+ border-bottom: 1px solid var(--border-color) !important;
+}
+
+.light-skin .wrapper.white-bg {
+ background-color: transparent;
+}
+
+.light-skin .ibox-tools a.btn-primary {
+ color: #ffffff !important;
+}
+
+.light-skin .chat-discussion {
+ background-color: #ffffff;
+}
+
+.light-skin .ibox-footer {
+ margin-top: 4px;
+ border: none;
+ box-shadow: 0 1px 8px rgba(0, 0, 0, 0.05), 0 1px 2px rgba(0, 0, 0, 0.1);
+ border-radius: 4px;
+}
+
+.light-skin .contact-box,
+.light-skin .social-feed-box,
+.light-skin .vertical-timeline-content {
+ box-shadow: 0 1px 8px rgba(0, 0, 0, 0.05), 0 1px 2px rgba(0, 0, 0, 0.1);
+ border: none;
+}
+
+.light-skin .navbar-default .landing_link a,
+.light-skin .navbar-default .special_link a {
+ color: #ffffff;
+}
+
+body.md-skin {
+ font-family: "Roboto", "Helvetica Neue", Helvetica, Arial, sans-serif;
+ background-color: #ffffff;
+}
+
+.md-skin .nav-header {
+ background: url("patterns/4.png") no-repeat;
+}
+
+.md-skin .label,
+.md-skin .badge {
+ font-family: 'Roboto';
+}
+
+.md-skin ul.nav-second-level {
+ background-color: inherit;
+}
+
+.md-skin .font-bold {
+ font-weight: 500;
+}
+
+.md-skin .wrapper-content {
+ padding: 30px 20px 40px;
+}
+
+@media (max-width: 768px) {
+ .md-skin .wrapper-content {
+ padding: 30px 0 40px;
+ }
+}
+
+.md-skin .page-heading {
+ border-bottom: none !important;
+ border-top: 0;
+ padding: 0 10px 20px 10px;
+ box-shadow: 0 1px 1px -1px rgba(0, 0, 0, 0.34), 0 0 6px 0 rgba(0, 0, 0, 0.14);
+}
+
+.md-skin .full-height-layout .page-heading {
+ border-bottom: 1px solid var(--border-color) !important;
+}
+
+.md-skin .ibox {
+ clear: both;
+ margin-bottom: 25px;
+ margin-top: 0;
+ padding: 0;
+ box-shadow: 0 2px 2px 0 rgba(0, 0, 0, 0.14), 0 3px 1px -2px rgba(0, 0, 0, 0.2), 0 1px 5px 0 rgba(0, 0, 0, 0.12);
+}
+
+.md-skin .ibox.border-bottom {
+ border-bottom: none !important;
+}
+
+.md-skin .ibox-title,
+.md-skin .ibox-content {
+ border-style: none;
+}
+
+.md-skin .ibox-title h5 {
+ font-size: 16px;
+ font-weight: 400;
+}
+
+.md-skin a.close-canvas-menu {
+ color: #ffffff;
+}
+
+.md-skin .welcome-message {
+ color: #ffffff !important;
+ font-weight: 300;
+}
+
+.md-skin #top-search::-moz-placeholder {
+ color: #ffffff;
+}
+
+.md-skin #top-search::-webkit-input-placeholder {
+ color: #ffffff;
+}
+
+.md-skin #nestable-output,
+.md-skin #nestable2-output {
+ font-family: 'Roboto', lucida grande, lucida sans unicode, helvetica, arial, sans-serif;
+}
+
+.md-skin .landing-page {
+ font-family: 'Roboto', helvetica, arial, sans-serif;
+}
+
+.md-skin .landing-page.navbar-default.navbar-scroll {
+ background-color: #fff !important;
+}
+
+.md-skin .landing-page.navbar-default {
+ background-color: transparent !important;
+ box-shadow: none;
+}
+
+.md-skin .landing-page.navbar-default .nav li a {
+ font-family: 'Roboto', helvetica, arial, sans-serif;
+}
+
+.md-skin .nav > li > a {
+ color: var(--text);
+ padding: 14px 20px 14px 25px;
+}
+
+.md-skin .nav.navbar-right > li > a {
+ color: #ffffff;
+}
+
+.md-skin .nav > li.active > a {
+ color: #586060;
+ font-weight: 700;
+}
+
+.md-skin .navbar-default .nav > li > a:hover,
+.md-skin .navbar-default .nav > li > a:focus {
+ font-weight: 700;
+ color: #586060;
+}
+
+.md-skin .nav .open > a,
+.md-skin .nav .open > a:hover,
+.md-skin .nav .open > a:focus {
+ background: #18b090;
+}
+
+.md-skin .navbar-top-links li {
+ display: inline-table;
+}
+
+.md-skin .navbar-top-links .dropdown-menu li {
+ display: block;
+}
+
+.md-skin .pace-done .nav-header {
+ transition: all 0.4s;
+}
+
+.md-skin .nav > li.active {
+ background: #f8f8f8;
+}
+
+.md-skin .nav-second-level li a {
+ padding: 7px 10px 7px 52px;
+}
+
+.md-skin .nav-third-level li a {
+ padding-left: 62px;
+}
+
+.md-skin .navbar-top-links li a {
+ padding: 20px 10px;
+ min-height: 50px;
+}
+
+.md-skin .nav > li > a {
+ font-weight: 400;
+}
+
+.md-skin .navbar-static-side .nav > li > a:focus,
+.md-skin .navbar-static-side .nav > li > a:hover {
+ background-color: inherit;
+}
+
+.md-skin .navbar-top-links .dropdown-menu li a {
+ padding: 3px 20px;
+ min-height: inherit;
+}
+
+.md-skin .nav-header .navbar-fixed-top a {
+ color: #ffffff;
+}
+
+.md-skin .nav-header .text-muted {
+ color: #ffffff !important;
+}
+
+.md-skin .navbar-form-custom .form-control {
+ font-weight: 300;
+}
+
+.md-skin .mini-navbar .nav-second-level {
+ background-color: inherit;
+}
+
+.md-skin .mini-navbar li.active .nav-second-level {
+ left: 65px;
+}
+
+.md-skin .canvas-menu.mini-navbar .nav-second-level {
+ background: inherit;
+}
+
+.md-skin .pace-done .navbar-static-side,
+.md-skin .pace-done .nav-header,
+.md-skin .pace-done li.active,
+.md-skin .pace-done #page-wrapper,
+.md-skin .pace-done .footer {
+ -webkit-transition: all 0.4s;
+ -moz-transition: all 0.4s;
+ -o-transition: all 0.4s;
+ transition: all 0.4s;
+}
+
+.md-skin .navbar-fixed-top {
+ background: #fff;
+ transition-duration: 0.4s;
+ z-index: 2030;
+ border-bottom: none !important;
+}
+
+.md-skin .navbar-fixed-top,
+.md-skin .navbar-static-top {
+ background-color: #18b090 !important;
+ box-shadow: 0 2px 2px 0 rgba(0, 0, 0, 0.14), 0 3px 1px -2px rgba(0, 0, 0, 0.2), 0 1px 5px 0 rgba(0, 0, 0, 0.12);
+}
+
+.md-skin .navbar-static-side {
+ box-shadow: 0 2px 2px 0 rgba(0, 0, 0, 0.14), 0 3px 1px -2px rgba(0, 0, 0, 0.2), 0 1px 5px 0 rgba(0, 0, 0, 0.12);
+}
+
+.md-skin #right-sidebar {
+ box-shadow: 0 2px 2px 0 rgba(0, 0, 0, 0.14), 0 3px 1px -2px rgba(0, 0, 0, 0.2), 0 1px 5px 0 rgba(0, 0, 0, 0.12);
+ border: none;
+ z-index: 900;
+}
+
+.md-skin .white-bg .navbar-fixed-top,
+.md-skin .white-bg .navbar-static-top {
+ background: #fff !important;
+}
+
+.md-skin .contact-box {
+ box-shadow: 0 2px 2px 0 rgba(0, 0, 0, 0.14), 0 3px 1px -2px rgba(0, 0, 0, 0.2), 0 1px 5px 0 rgba(0, 0, 0, 0.12);
+ border: none;
+}
+
+.md-skin .dashboard-header {
+ border-bottom: none !important;
+ border-top: 0;
+ padding: 20px 20px 20px 20px;
+ margin: 30px 20px 0 20px;
+ box-shadow: 0 2px 2px 0 rgba(0, 0, 0, 0.14), 0 3px 1px -2px rgba(0, 0, 0, 0.2), 0 1px 5px 0 rgba(0, 0, 0, 0.12);
+}
+
+@media (max-width: 768px) {
+ .md-skin .dashboard-header {
+ margin: 20px 0 0 0;
+ }
+}
+
+.md-skin ul.notes li div {
+ box-shadow: 0 2px 2px 0 rgba(0, 0, 0, 0.14), 0 3px 1px -2px rgba(0, 0, 0, 0.2), 0 1px 5px 0 rgba(0, 0, 0, 0.12);
+}
+
+.md-skin .file {
+ border: none;
+ box-shadow: 0 2px 2px 0 rgba(0, 0, 0, 0.14), 0 3px 1px -2px rgba(0, 0, 0, 0.2), 0 1px 5px 0 rgba(0, 0, 0, 0.12);
+}
+
+.md-skin .mail-box {
+ background-color: #ffffff;
+ box-shadow: 0 2px 2px 0 rgba(0, 0, 0, 0.14), 0 3px 1px -2px rgba(0, 0, 0, 0.2), 0 1px 5px 0 rgba(0, 0, 0, 0.12);
+ padding: 0;
+ margin-bottom: 20px;
+ border: none;
+}
+
+.md-skin .mail-box-header {
+ border: none;
+ background-color: #ffffff;
+ box-shadow: 0 2px 2px 0 rgba(0, 0, 0, 0.14), 0 3px 1px -2px rgba(0, 0, 0, 0.2), 0 1px 5px 0 rgba(0, 0, 0, 0.12);
+ padding: 30px 20px 20px 20px;
+}
+
+.md-skin .mailbox-content {
+ border: none;
+ padding: 20px;
+ background: #ffffff;
+}
+
+.md-skin .social-feed-box {
+ border: none;
+ background: #fff;
+ margin-bottom: 15px;
+ box-shadow: 0 2px 2px 0 rgba(0, 0, 0, 0.14), 0 3px 1px -2px rgba(0, 0, 0, 0.2), 0 1px 5px 0 rgba(0, 0, 0, 0.12);
+}
+
+.md-skin.landing-page .navbar-default {
+ background-color: transparent !important;
+ border-color: transparent;
+ transition: all 0.3s ease-in-out 0s;
+ box-shadow: none;
+}
+
+.md-skin.landing-page .navbar-default.navbar-scroll,
+.md-skin.landing-page.body-small .navbar-default {
+ background-color: #ffffff !important;
+}
+
+.md-skin.landing-page .nav > li.active {
+ background: inherit;
+}
+
+.md-skin.landing-page .navbar-scroll .navbar-nav > li > a {
+ padding: 20px 10px;
+}
+
+.md-skin.landing-page .navbar-default .nav li a {
+ font-family: 'Roboto', helvetica, arial, sans-serif;
+}
+
+.md-skin.landing-page .nav > li > a {
+ padding: 25px 10px 15px 10px;
+}
+
+.md-skin.landing-page .navbar-default .navbar-nav > li > a:hover,
+.md-skin.landing-page .navbar-default .navbar-nav > li > a:focus {
+ background: inherit;
+ color: #18b090;
+}
+
+.md-skin.landing-page.body-small .nav.navbar-right > li > a {
+ color: var(--text);
+}
+
+.md-skin .landing_link a,
+.md-skin .special_link a {
+ color: #ffffff !important;
+}
+
+.md-skin.canvas-menu.mini-navbar .nav-second-level {
+ background: #f8f8f8;
+}
+
+.md-skin.mini-navbar .nav-second-level {
+ background-color: #ffffff;
+ box-shadow: 0 2px 2px 0 rgba(0, 0, 0, 0.14), 0 3px 1px -2px rgba(0, 0, 0, 0.2), 0 1px 5px 0 rgba(0, 0, 0, 0.12);
+}
+
+.md-skin.mini-navbar .nav-second-level li a {
+ padding-left: 0;
+}
+
+.md-skin.mini-navbar.fixed-sidebar .nav-second-level li a {
+ padding-left: 52px;
+}
+
+.md-skin.top-navigation .nav.navbar-right > li > a {
+ padding: 15px 20px;
+ color: var(--text);
+}
+
+.md-skin.top-navigation .nav > li a:hover,
+.md-skin .top-navigation .nav > li a:focus,
+.md-skin.top-navigation .nav .open > a,
+.md-skin.top-navigation .nav .open > a:hover,
+.md-skin.top-navigation .nav .open > a:focus {
+ color: #18b090;
+ background: #ffffff;
+}
+
+.md-skin.top-navigation .nav > li.active a {
+ color: #18b090;
+ background: #ffffff;
+}
+
+.md-skin.fixed-nav #side-menu {
+ background-color: #fff;
+}
+
+.md-skin.fixed-nav #wrapper.top-navigation #page-wrapper {
+ margin-top: 0;
+}
+
+.md-skin.fixed-sidebar.mini-navbar #page-wrapper {
+ margin: 0 0 0 0;
+}
+
+.md-skin.body-small.fixed-sidebar.mini-navbar .navbar-static-side {
+ width: 220px;
+ background-color: #ffffff;
+}
+
+.md-skin.boxed-layout #wrapper {
+ background-color: #ffffff;
+}
+
+.md-skin.canvas-menu nav.navbar-static-side {
+ z-index: 2001;
+ background: #ffffff;
+ height: 100%;
+ position: fixed;
+ display: none;
+}
+
+@media (min-width: 768px) {
+ #page-wrapper {
+ position: inherit;
+ min-height: calc(100vh - 60px);
+ }
+
+ .navbar-static-side {
+ z-index: 2001;
+ width: 220px;
+ }
+
+ .navbar-top-links .dropdown-messages,
+ .navbar-top-links .dropdown-tasks,
+ .navbar-top-links .dropdown-alerts {
+ margin-left: auto;
+ }
+}
+
+@media (max-width: 768px) {
+ #page-wrapper {
+ position: inherit;
+ margin: 0 0 0 0;
+ min-height: calc(100vh - 60px);
+ width: 100%;
+ }
+
+ .body-small .navbar-static-side {
+ display: block;
+ z-index: 2001;
+ width: 0;
+ overflow: hidden;
+ }
+
+ .body-small.mini-navbar .navbar-static-side {
+ display: block;
+ overflow: visible;
+ }
+
+ .lock-word {
+ display: none;
+ }
+
+ .navbar-form-custom {
+ display: none;
+ }
+
+ .navbar-header {
+ display: inline;
+ float: left;
+ }
+
+ .sidebar-panel {
+ z-index: 2;
+ position: relative;
+ width: auto;
+ min-height: 100% !important;
+ }
+
+ .sidebar-content .wrapper {
+ padding-right: 0;
+ z-index: 1;
+ }
+
+ .fixed-sidebar.body-small .navbar-static-side {
+ display: none;
+ z-index: 2001;
+ position: fixed;
+ width: 220px;
+ }
+
+ .fixed-sidebar.body-small.mini-navbar .navbar-static-side {
+ display: block;
+ }
+
+ .ibox-tools {
+ float: none;
+ text-align: right;
+ display: block;
+ }
+
+ .navbar-static-side {
+ display: none;
+ }
+
+ body:not(.mini-navbar) {
+ -webkit-transition: background-color 500ms linear;
+ -moz-transition: background-color 500ms linear;
+ -o-transition: background-color 500ms linear;
+ -ms-transition: background-color 500ms linear;
+ transition: background-color 500ms linear;
+ background-color: var(--bg-mid);
+ }
+}
+
+@media (max-width: 350px) {
+ .timeline-item .date {
+ text-align: left;
+ width: 110px;
+ position: relative;
+ padding-top: 30px;
+ }
+
+ .timeline-item .date i {
+ position: absolute;
+ top: 0;
+ left: 15px;
+ padding: 5px;
+ width: 30px;
+ text-align: center;
+ border: 1px solid var(--border-color);
+ background: #f8f8f8;
+ }
+
+ .timeline-item .content {
+ border-left: none;
+ border-top: 1px solid var(--border-color);
+ padding-top: 10px;
+ min-height: 100px;
+ }
+
+ .nav.navbar-top-links li.dropdown {
+ display: none;
+ }
+
+ .ibox-tools {
+ float: none;
+ text-align: left;
+ display: inline-block;
+ }
+}
+
+/* Only demo */
+@media (max-width: 1000px) {
+ .welcome-message {
+ display: none;
+ }
+}
+
+@media print {
+ nav.navbar-static-side {
+ display: none;
+ }
+
+ body {
+ overflow: visible !important;
+ }
+
+ #page-wrapper {
+ margin: 0;
+ }
+}
+
+.page-content .row.tile {
+ padding: 20px 5px 35px 5px;
+ position: absolute;
+ top: 0;
+ bottom: 0;
+ left: 0;
+ right: 0;
+ margin: 0;
+ overflow-y: auto;
+}
+
+.sidebar-collapse {
+ position: absolute;
+ top: 0;
+ bottom: 0;
+ left: 0;
+ right: 0;
+ overflow-y: auto;
+ overflow-x: hidden;
+ scrollbar-width: none;
+ -ms-overflow-style: none;
+}
+
+.sidebar-collapse::-webkit-scrollbar {
+ display: none;
+}
+
+.body-small .sidebar-collapse {
+ bottom: 40px;
+}
+
+.bootstrap-select .dropdown-item {
+ font-size: 0.9rem;
+}
+
+.bootstrap-select .dropdown-toggle {
+ border: 1px solid var(--border-color) !important;
+ border-radius: 8px;
+ background-color: var(--bg) !important;
+ color: var(--text) !important;
+ transition: all 0.3s ease;
+}
+
+.bootstrap-select .show > .btn-light.dropdown-toggle {
+ background-color: transparent !important;
+}
+
+.bootstrap-select .dropdown-menu {
+ border-radius: 8px;
+ background-color: var(--bg-mid) !important;
+ border-color: var(--border-color) !important;
+}
+
+.bootstrap-select .dropdown-menu > li > a {
+ border-radius: 4px;
+ color: var(--text) !important;
+ padding: 8px 16px;
+ transition: all 0.2s ease;
+ background-color: var(--bg-mid) !important;
+}
+
+.bootstrap-select .dropdown-menu > li > a:hover {
+ background-color: var(--active-color) !important;
+ color: var(--color) !important;
+}
+
+.bootstrap-select .dropdown-toggle:focus,
+.bootstrap-select > select.mobile-device:focus + .dropdown-toggle {
+ outline: none !important;
+}
+
+.bootstrap-select .dropdown-toggle.btn-light,
+.bootstrap-select .dropdown-toggle.btn-light:hover {
+ color: #202828;
+}
+
+.dropdown-menu * {
+ color: inherit;
+ background-color: inherit;
+}
+
+.dropdown-menu,
+.dropdown-menu .no-results,
+.form-control:focus {
+ background-color: var(--bg) !important;
+ color: var(--text) !important;
+}
+
+.dropdown.bootstrap-select.form-control {
+ background: none !important;
+ box-shadow: none !important;
+ border: none !important;
+}
+
+.bs-actionsbox, .bs-donebutton, .bs-searchbox {
+ padding: 4px !important;
+}
diff --git a/apps/nps/0.29.21/web/static/img/flag/en-US.png b/apps/nps/0.29.21/web/static/img/flag/en-US.png
new file mode 100644
index 000000000..5706b57aa
Binary files /dev/null and b/apps/nps/0.29.21/web/static/img/flag/en-US.png differ
diff --git a/apps/nps/0.29.21/web/static/img/flag/zh-CN.png b/apps/nps/0.29.21/web/static/img/flag/zh-CN.png
new file mode 100644
index 000000000..8c35f25ca
Binary files /dev/null and b/apps/nps/0.29.21/web/static/img/flag/zh-CN.png differ
diff --git a/apps/nps/0.29.21/web/static/img/nps.svg b/apps/nps/0.29.21/web/static/img/nps.svg
new file mode 100644
index 000000000..79637dc10
--- /dev/null
+++ b/apps/nps/0.29.21/web/static/img/nps.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/apps/nps/0.29.21/web/static/js/bootstrap-select.min.js b/apps/nps/0.29.21/web/static/js/bootstrap-select.min.js
new file mode 100644
index 000000000..9cf360380
--- /dev/null
+++ b/apps/nps/0.29.21/web/static/js/bootstrap-select.min.js
@@ -0,0 +1,8 @@
+/*!
+ * Bootstrap-select v1.14.0-beta3 (https://developer.snapappointments.com/bootstrap-select)
+ *
+ * Copyright 2012-2025 SnapAppointments, LLC
+ * Licensed under MIT (https://github.com/snapappointments/bootstrap-select/blob/master/LICENSE)
+ */
+!function(e,t){void 0===e&&void 0!==window&&(e=window),"function"==typeof define&&define.amd?define(["jquery"],t):"object"==typeof module&&module.exports?module.exports=t(require("jquery")):t(e.jQuery)}(this,function(e){!function($){"use strict";var M=["sanitize","whiteList","sanitizeFn"],P=["background","cite","href","itemtype","longdesc","poster","src","xlink:href"],B={"*":["class","dir","id","lang","role","tabindex","style",/^aria-[\w-]*$/i],a:["target","href","title","rel"],area:[],b:[],br:[],col:[],code:[],div:[],em:[],hr:[],h1:[],h2:[],h3:[],h4:[],h5:[],h6:[],i:[],img:["src","alt","title","width","height"],li:[],ol:[],p:[],pre:[],s:[],small:[],span:[],sub:[],sup:[],strong:[],u:[],ul:[]},W=/^(?:(?:https?|mailto|ftp|tel|file):|[^&:/?#]*(?:[/?#]|$))/gi,R=/^data:(?:image\/(?:bmp|gif|jpeg|jpg|png|tiff|webp)|video\/(?:mpeg|mp4|ogg|webm)|audio\/(?:mp3|oga|ogg|opus));base64,[a-z0-9+/]+=*$/i,U=["title","placeholder"];function S(e,t,i){if(i&&"function"==typeof i)return i(e);for(var s=Object.keys(t),n=0,o=e.length;n]+>/g,"")),a=(a=s?Q(a):a).toUpperCase(),"function"==typeof i)o=i(a,t);else if("contains"===i)o=0<=a.indexOf(t);else if("containsAll"===i){var c,d=t.split(" "),h=!1,o=!1;for(c in d)(o=0<=a.indexOf(d[c]))||(h=!0);h&&(o=!1)}else o=a.startsWith(t);if(o)break}}return o}function g(e){return parseInt(e,10)||0}$.fn.triggerNative=function(e){var t,i=this[0];i.dispatchEvent&&(j?t=new Event(e,{bubbles:!0}):(t=document.createEvent("Event")).initEvent(e,!0,!1),i.dispatchEvent(t))};var F={"\xc0":"A","\xc1":"A","\xc2":"A","\xc3":"A","\xc4":"A","\xc5":"A","\xe0":"a","\xe1":"a","\xe2":"a","\xe3":"a","\xe4":"a","\xe5":"a","\xc7":"C","\xe7":"c","\xd0":"D","\xf0":"d","\xc8":"E","\xc9":"E","\xca":"E","\xcb":"E","\xe8":"e","\xe9":"e","\xea":"e","\xeb":"e","\xcc":"I","\xcd":"I","\xce":"I","\xcf":"I","\xec":"i","\xed":"i","\xee":"i","\xef":"i","\xd1":"N","\xf1":"n","\xd2":"O","\xd3":"O","\xd4":"O","\xd5":"O","\xd6":"O","\xd8":"O","\xf2":"o","\xf3":"o","\xf4":"o","\xf5":"o","\xf6":"o","\xf8":"o","\xd9":"U","\xda":"U","\xdb":"U","\xdc":"U","\xf9":"u","\xfa":"u","\xfb":"u","\xfc":"u","\xdd":"Y","\xfd":"y","\xff":"y","\xc6":"Ae","\xe6":"ae","\xde":"Th","\xfe":"th","\xdf":"ss","\u0100":"A","\u0102":"A","\u0104":"A","\u0101":"a","\u0103":"a","\u0105":"a","\u0106":"C","\u0108":"C","\u010a":"C","\u010c":"C","\u0107":"c","\u0109":"c","\u010b":"c","\u010d":"c","\u010e":"D","\u0110":"D","\u010f":"d","\u0111":"d","\u0112":"E","\u0114":"E","\u0116":"E","\u0118":"E","\u011a":"E","\u0113":"e","\u0115":"e","\u0117":"e","\u0119":"e","\u011b":"e","\u011c":"G","\u011e":"G","\u0120":"G","\u0122":"G","\u011d":"g","\u011f":"g","\u0121":"g","\u0123":"g","\u0124":"H","\u0126":"H","\u0125":"h","\u0127":"h","\u0128":"I","\u012a":"I","\u012c":"I","\u012e":"I","\u0130":"I","\u0129":"i","\u012b":"i","\u012d":"i","\u012f":"i","\u0131":"i","\u0134":"J","\u0135":"j","\u0136":"K","\u0137":"k","\u0138":"k","\u0139":"L","\u013b":"L","\u013d":"L","\u013f":"L","\u0141":"L","\u013a":"l","\u013c":"l","\u013e":"l","\u0140":"l","\u0142":"l","\u0143":"N","\u0145":"N","\u0147":"N","\u014a":"N","\u0144":"n","\u0146":"n","\u0148":"n","\u014b":"n","\u014c":"O","\u014e":"O","\u0150":"O","\u014d":"o","\u014f":"o","\u0151":"o","\u0154":"R","\u0156":"R","\u0158":"R","\u0155":"r","\u0157":"r","\u0159":"r","\u015a":"S","\u015c":"S","\u015e":"S","\u0160":"S","\u015b":"s","\u015d":"s","\u015f":"s","\u0161":"s","\u0162":"T","\u0164":"T","\u0166":"T","\u0163":"t","\u0165":"t","\u0167":"t","\u0168":"U","\u016a":"U","\u016c":"U","\u016e":"U","\u0170":"U","\u0172":"U","\u0169":"u","\u016b":"u","\u016d":"u","\u016f":"u","\u0171":"u","\u0173":"u","\u0174":"W","\u0175":"w","\u0176":"Y","\u0177":"y","\u0178":"Y","\u0179":"Z","\u017b":"Z","\u017d":"Z","\u017a":"z","\u017c":"z","\u017e":"z","\u0132":"IJ","\u0133":"ij","\u0152":"Oe","\u0153":"oe","\u0149":"'n","\u017f":"s"},G=/[\xc0-\xd6\xd8-\xf6\xf8-\xff\u0100-\u017f]/g,q=RegExp("[\\u0300-\\u036f\\ufe20-\\ufe2f\\u20d0-\\u20ff\\u1ab0-\\u1aff\\u1dc0-\\u1dff]","g");function K(e){return F[e]}function Q(e){return(e=e.toString())&&e.replace(G,K).replace(q,"")}u={"&":"&","<":"<",">":">",'"':""","'":"'","`":"`"},n="(?:"+Object.keys(u).join("|")+")",Y=RegExp(n),Z=RegExp(n,"g");var u,Y,Z,k=function(e){return Y.test(e=null==e?"":""+e)?e.replace(Z,J):e};function J(e){return u[e]}var X={32:" ",48:"0",49:"1",50:"2",51:"3",52:"4",53:"5",54:"6",55:"7",56:"8",57:"9",59:";",65:"A",66:"B",67:"C",68:"D",69:"E",70:"F",71:"G",72:"H",73:"I",74:"J",75:"K",76:"L",77:"M",78:"N",79:"O",80:"P",81:"Q",82:"R",83:"S",84:"T",85:"U",86:"V",87:"W",88:"X",89:"Y",90:"Z",96:"0",97:"1",98:"2",99:"3",100:"4",101:"5",102:"6",103:"7",104:"8",105:"9"},ee=27,te=13,b=32,w=9,I=38,O=40,f=window.Dropdown||window.bootstrap&&window.bootstrap.Dropdown;function ie(){var t;try{t=$.fn.dropdown.Constructor.VERSION}catch(e){t=f.VERSION}return t}var A={success:!1,major:"3"};try{A.full=(ie()||"").split(" ")[0].split("."),A.major=A.full[0],A.success=!0}catch(e){}var se=0,T=".bs.select",z={DISABLED:"disabled",DIVIDER:"divider",SHOW:"open",DROPUP:"dropup",MENU:"dropdown-menu",MENURIGHT:"dropdown-menu-right",MENULEFT:"dropdown-menu-left",BUTTONCLASS:"btn-default",POPOVERHEADER:"popover-title",ICONBASE:"glyphicon",TICKICON:"glyphicon-ok"},D={MENU:"."+z.MENU,DATA_TOGGLE:'data-toggle="dropdown"'},L={div:document.createElement("div"),span:document.createElement("span"),i:document.createElement("i"),subtext:document.createElement("small"),a:document.createElement("a"),li:document.createElement("li"),whitespace:document.createTextNode("\xa0"),fragment:document.createDocumentFragment(),option:document.createElement("option")},ne=(L.selectedOption=L.option.cloneNode(!1),L.selectedOption.setAttribute("selected",!0),L.noResults=L.li.cloneNode(!1),L.noResults.className="no-results",L.a.setAttribute("role","option"),L.a.className="dropdown-item",L.subtext.className="text-muted",L.text=L.span.cloneNode(!1),L.text.className="text",L.checkMark=L.span.cloneNode(!1),new RegExp(I+"|"+O)),oe=new RegExp("^"+w+"$|"+ee),m={li:function(e,t,i){var s=L.li.cloneNode(!1);return e&&(1===e.nodeType||11===e.nodeType?s.appendChild(e):s.innerHTML=e),void 0!==t&&""!==t&&(s.className=t),null!=i&&s.classList.add("optgroup-"+i),s},a:function(e,t,i){var s=L.a.cloneNode(!0);return e&&(11===e.nodeType?s.appendChild(e):s.insertAdjacentHTML("beforeend",e)),void 0!==t&&""!==t&&s.classList.add.apply(s.classList,t.split(/\s+/)),i&&s.setAttribute("style",i),s},text:function(e,t){var i,s,n=L.text.cloneNode(!1);if(e.content?n.innerHTML=e.content:(n.textContent=e.text,e.icon&&(i=L.whitespace.cloneNode(!1),(s=(!0===t?L.i:L.span).cloneNode(!1)).className=this.options.iconBase+" "+e.icon,L.fragment.appendChild(s),L.fragment.appendChild(i)),e.subtext&&((s=L.subtext.cloneNode(!1)).textContent=e.subtext,n.appendChild(s))),!0===t)for(;0'},maxOptions:!1,mobile:!1,selectOnTab:!0,dropdownAlignRight:!1,windowPadding:0,virtualScroll:600,display:!1,sanitize:!0,sanitizeFn:null,whiteList:B},H.prototype={constructor:H,init:function(){var i=this,e=this.$element.attr("id"),t=this.$element[0],s=t.form;se++,this.selectId="bs-select-"+se,t.classList.add("bs-select-hidden"),this.multiple=this.$element.prop("multiple"),this.autofocus=this.$element.prop("autofocus"),t.classList.contains("show-tick")&&(this.options.showTick=!0),this.$newElement=this.createDropdown(),this.$element.after(this.$newElement).prependTo(this.$newElement),s&&null===t.form&&(s.id||(s.id="form-"+this.selectId),t.setAttribute("form",s.id)),this.$button=this.$newElement.children("button"),this.options.allowClear&&(this.$clearButton=this.$button.children(".bs-select-clear-selected")),this.$menu=this.$newElement.children(D.MENU),this.$menuInner=this.$menu.children(".inner"),this.$searchbox=this.$menu.find("input"),t.classList.remove("bs-select-hidden"),this.fetchData(function(){i.render(!0),i.buildList(),requestAnimationFrame(function(){i.$element.trigger("loaded"+T)})}),!0===this.options.dropdownAlignRight&&this.$menu[0].classList.add(z.MENURIGHT),void 0!==e&&this.$button.attr("data-id",e),this.checkDisabled(),this.clickListener(),4