diff --git a/.github/workflows/docs-deploy.yml b/.github/workflows/docs-deploy.yml new file mode 100644 index 00000000..47e35743 --- /dev/null +++ b/.github/workflows/docs-deploy.yml @@ -0,0 +1,64 @@ +# Sample workflow for building and deploying a VitePress site to GitHub Pages +# +name: Deploy Coconut docs to Pages + +on: + # Runs on pushes targeting the `main` branch. Change this to `master` if you're + # using the `master` branch as the default branch. + push: + branches: [main] + + # Allows you to run this workflow manually from the Actions tab + workflow_dispatch: + +# Sets permissions of the GITHUB_TOKEN to allow deployment to GitHub Pages +permissions: + contents: read + pages: write + id-token: write + +# Allow only one concurrent deployment, skipping runs queued between the run in-progress and latest queued. +# However, do NOT cancel in-progress runs as we want to allow these production deployments to complete. +concurrency: + group: pages + cancel-in-progress: false + +jobs: + # Build job + build: + runs-on: ubuntu-latest + steps: + - name: Checkout + uses: actions/checkout@v4 + with: + fetch-depth: 0 # Not needed if lastUpdated is not enabled + # - uses: pnpm/action-setup@v3 # Uncomment this if you're using pnpm + # - uses: oven-sh/setup-bun@v1 # Uncomment this if you're using Bun + - name: Setup Node + uses: actions/setup-node@v4 + with: + node-version: 20 + cache: npm # or pnpm / yarn + - name: Setup Pages + uses: actions/configure-pages@v4 + - name: Install dependencies + run: npm ci # or pnpm install / yarn install / bun install + - name: Build with VitePress + run: npm run docs:build # or pnpm docs:build / yarn docs:build / bun run docs:build + - name: Upload artifact + uses: actions/upload-pages-artifact@v3 + with: + path: docs/.vitepress/dist + + # Deployment job + deploy: + environment: + name: github-pages + url: ${{ steps.deployment.outputs.page_url }} + needs: build + runs-on: ubuntu-latest + name: Deploy + steps: + - name: Deploy to GitHub Pages + id: deployment + uses: actions/deploy-pages@v4 diff --git a/app/Actions/Coconut/SearchMolecule.php b/app/Actions/Coconut/SearchMolecule.php index 428801ca..bef124cb 100644 --- a/app/Actions/Coconut/SearchMolecule.php +++ b/app/Actions/Coconut/SearchMolecule.php @@ -2,6 +2,7 @@ namespace App\Actions\Coconut; +use App\Models\Citation; use App\Models\Collection; use App\Models\Molecule; use App\Models\Organism; @@ -26,6 +27,8 @@ class SearchMolecule public $organisms = null; + public $citations = null; + /** * Search based on given query. */ @@ -140,6 +143,8 @@ private function getFilterMap() 'subclass' => 'chemical_sub_class', 'superclass' => 'chemical_super_class', 'parent' => 'direct_parent_classification', + 'org' => 'organism', + 'cite' => 'ciatation', ]; } @@ -233,6 +238,18 @@ private function buildTagsStatement($offset) return Molecule::whereHas('organisms', function ($query) use ($organismIds) { $query->whereIn('organism_id', $organismIds); })->where('active', true)->where('is_parent', false)->orderBy('annotation_level', 'DESC')->paginate($this->size); + } elseif ($this->tagType == 'citations') { + $this->citations = array_map('strtolower', array_map('trim', explode(',', $this->query))); + $citationIds = Citation::where(function ($query) { + foreach ($this->citations as $name) { + $query->orWhereRaw('LOWER(doi) LIKE ?', ['%'.strtolower($name).'%']) + ->orWhereRaw('LOWER(title) LIKE ?', ['%'.strtolower($name).'%']); + } + })->pluck('id'); + + return Molecule::whereHas('citations', function ($query) use ($citationIds) { + $query->whereIn('citation_id', $citationIds); + })->where('active', true)->where('is_parent', false)->orderBy('annotation_level', 'DESC')->paginate($this->size); } else { return Molecule::withAnyTags([$this->query], $this->tagType)->where('active', true)->where('is_parent', false)->paginate($this->size); } diff --git a/app/Actions/Fortify/CreateNewUser.php b/app/Actions/Fortify/CreateNewUser.php index 6884919b..31b4735f 100644 --- a/app/Actions/Fortify/CreateNewUser.php +++ b/app/Actions/Fortify/CreateNewUser.php @@ -30,7 +30,7 @@ public function create(array $input): User ])->validate(); return User::create([ - 'name' => $input['username'], + 'name' => $input['first_name'].' '.$input['last_name'], 'email' => $input['email'], 'password' => Hash::make($input['password']), diff --git a/app/Console/Commands/DashWidgetsRefresh.php b/app/Console/Commands/DashWidgetsRefresh.php index 23fd33f3..e4b5a62a 100644 --- a/app/Console/Commands/DashWidgetsRefresh.php +++ b/app/Console/Commands/DashWidgetsRefresh.php @@ -32,7 +32,7 @@ class DashWidgetsRefresh extends Command public function handle() { // Clear the cache for all widgets - Cache::flush(); + // Cache::flush(); // Create the cache for all DashboardStats widgets Cache::rememberForever('stats.collections', function () { diff --git a/app/Http/Controllers/API/Auth/RegisterController.php b/app/Http/Controllers/API/Auth/RegisterController.php index 0e2aa5da..e2136c66 100644 --- a/app/Http/Controllers/API/Auth/RegisterController.php +++ b/app/Http/Controllers/API/Auth/RegisterController.php @@ -25,7 +25,7 @@ public function register(Request $request): JsonResponse 'last_name' => $validatedData['last_name'], 'email' => $validatedData['email'], 'username' => $validatedData['username'], - 'name' => $validatedData['username'], + 'name' => $validatedData['first_name'].' '.$validatedData['last_name'], 'orcid_id' => $request['orcid_id'], 'affiliation' => $request['affiliation'], 'password' => Hash::make($validatedData['password']), diff --git a/app/Livewire/Search.php b/app/Livewire/Search.php index acce2ba9..998ea89d 100644 --- a/app/Livewire/Search.php +++ b/app/Livewire/Search.php @@ -37,6 +37,9 @@ class Search extends Component public $organisms = null; + #[Url(as: 'activeTab')] + public $activeTab = 'molecules'; + public function placeholder() { return <<<'HTML' @@ -65,16 +68,6 @@ public function placeholder() HTML; } - protected $listeners = ['updateSmiles' => 'setSmiles']; - - public function setSmiles($smiles, $searchType) - { - $this->query = $smiles; - $this->type = $searchType; - $this->page = null; - $this->tagType = null; - } - public function updatedQuery() { $this->page = 1; @@ -82,6 +75,11 @@ public function updatedQuery() $this->tagType = null; } + public function search(SearchMolecule $search) + { + $this->render($search); + } + public function render(SearchMolecule $search) { try { diff --git a/app/Livewire/StructureEditor.php b/app/Livewire/StructureEditor.php index e46e6c30..65c1fb40 100644 --- a/app/Livewire/StructureEditor.php +++ b/app/Livewire/StructureEditor.php @@ -10,6 +10,8 @@ class StructureEditor extends Component public $smiles; + public $type = 'substructure'; + public function mount($smiles) { $this->smiles = $smiles; diff --git a/app/Livewire/Welcome.php b/app/Livewire/Welcome.php index c1c06178..6c9c850a 100644 --- a/app/Livewire/Welcome.php +++ b/app/Livewire/Welcome.php @@ -18,13 +18,6 @@ class Welcome extends Component public $citationsMapped; - protected $listeners = ['updateSmiles' => 'setSmiles']; - - public function setSmiles($smiles, $searchType) - { - return redirect()->to('/search?q='.urlencode($smiles).'&type='.urlencode($searchType)); - } - public function placeholder() { return <<<'HTML' diff --git a/app/Models/User.php b/app/Models/User.php index 7307f709..06d1b247 100644 --- a/app/Models/User.php +++ b/app/Models/User.php @@ -87,4 +87,16 @@ public function linkedSocialAccounts() { return $this->hasMany(LinkedSocialAccount::class); } + + /** + * Check if user can access a particular panel. + */ + public function canAccessPanel(Panel $panel): bool + { + if ($panel->getId() === 'control-panel') { + return $this->roles()->exists(); + } + + return true; + } } diff --git a/database/migrations/2014_10_12_000000_create_users_table.php b/database/migrations/2014_10_12_000000_create_users_table.php index 8743d0c6..cabfc71e 100644 --- a/database/migrations/2014_10_12_000000_create_users_table.php +++ b/database/migrations/2014_10_12_000000_create_users_table.php @@ -13,13 +13,8 @@ public function up(): void { Schema::create('users', function (Blueprint $table) { $table->id(); - $table->string('name')->nullable(); + $table->string('name'); $table->string('email')->unique(); - $table->string('username')->unique(); - $table->string('first_name'); - $table->string('last_name'); - $table->string('orcid_id')->nullable(); - $table->string('affiliation')->nullable(); $table->timestamp('email_verified_at')->nullable(); $table->string('password')->nullable(); $table->rememberToken(); diff --git a/database/migrations/2024_08_08_150749_add_columns_to_users_table.php b/database/migrations/2024_08_08_150749_add_columns_to_users_table.php new file mode 100644 index 00000000..d7200885 --- /dev/null +++ b/database/migrations/2024_08_08_150749_add_columns_to_users_table.php @@ -0,0 +1,33 @@ +string('name')->nullable()->change(); + $table->string('username')->unique()->nullable(); + $table->string('first_name')->nullable(); + $table->string('last_name')->nullable(); + $table->string('orcid_id')->nullable(); + $table->string('affiliation')->nullable(); + }); + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + Schema::table('users', function (Blueprint $table) { + $table->dropColumn(['username', 'first_name', 'last_name', 'orcid_id', 'affiliation']); + }); + } +}; diff --git a/docs/.vitepress/cache/deps/_metadata.json b/docs/.vitepress/cache/deps/_metadata.json index ee217db1..a4f4d32e 100644 --- a/docs/.vitepress/cache/deps/_metadata.json +++ b/docs/.vitepress/cache/deps/_metadata.json @@ -1,31 +1,31 @@ { - "hash": "f6991786", + "hash": "911d3a82", "configHash": "a6dc731f", - "lockfileHash": "ba8dc5dd", - "browserHash": "6d39fbea", + "lockfileHash": "65d0b609", + "browserHash": "3f416605", "optimized": { "vue": { "src": "../../../../node_modules/vue/dist/vue.runtime.esm-bundler.js", "file": "vue.js", - "fileHash": "81b3a260", + "fileHash": "698daf6a", "needsInterop": false }, "vitepress > @vue/devtools-api": { "src": "../../../../node_modules/@vue/devtools-api/dist/index.js", "file": "vitepress___@vue_devtools-api.js", - "fileHash": "085c132f", + "fileHash": "abeac802", "needsInterop": false }, "vitepress > @vueuse/core": { "src": "../../../../node_modules/@vueuse/core/index.mjs", "file": "vitepress___@vueuse_core.js", - "fileHash": "d9cc147b", + "fileHash": "354fcef1", "needsInterop": false }, "@theme/index": { "src": "../../../../node_modules/vitepress/dist/client/theme-default/index.js", "file": "@theme_index.js", - "fileHash": "5ba4d4f8", + "fileHash": "d4ea2476", "needsInterop": false } }, diff --git a/docs/.vitepress/config.ts b/docs/.vitepress/config.mts similarity index 54% rename from docs/.vitepress/config.ts rename to docs/.vitepress/config.mts index fb75a3bd..2de021c2 100644 --- a/docs/.vitepress/config.ts +++ b/docs/.vitepress/config.mts @@ -3,7 +3,8 @@ import { defineConfig } from 'vitepress' // https://vitepress.dev/reference/site-config export default defineConfig({ title: "COCONUT Docs", - description: "COCONUT: the COlleCtion of Open Natural prodUcTs", + description: "COCONUT: the COlleCtion of Open NatUral producTs", + base: '/coconut/', themeConfig: { // https://vitepress.dev/reference/default-theme-config logo: '/logo.png', @@ -23,11 +24,11 @@ export default defineConfig({ ], nav: [ - { text: 'Home', link: '/' }, - { text: 'Guides', link: '/single-submission' }, - { text: 'API', link: '/auth-api' }, - { text: 'About', link: '/about' }, - { text: 'Contact', link: '/contact' } + { text: 'Home', link: '/introduction' }, + { text: 'Guides', link: '/collection-submission' }, + { text: 'API', link: 'https://coconut.cheminf.studio/api-documentation' }, + { text: 'About', link: 'https://coconut.cheminf.studio/about' }, + { text: 'Download', link: 'https://coconut.cheminf.studio/download' } ], sidebar: [ @@ -36,35 +37,45 @@ export default defineConfig({ items: [ { text: 'Introduction', link: '/introduction' }, { text: 'Sources', link: '/sources' }, - { text: 'Analysis', link: '/analysis' }, + // { text: 'Analysis', link: '/analysis' }, ] }, { - text: 'Search', + text: 'Browse/Search', items: [ - { text: 'Simple', link: '/simple-search' }, + { text: 'Browse', link: '/browse' }, + // { text: 'Simple', link: '/simple-search' }, { text: 'Structure', link: '/structure-search' }, + // { + // text: 'Structure', + // items: [ + // { text: 'Draw Structure', link: '/draw-structure' }, + // { text: 'Substructure Search', link: '/substructure-search' }, + // { text: 'Similarity Search', link: '/similarity-search' }, + // ] + // }, { text: 'Advanced', link: '/advanced-search' } ] }, { text: 'Submission Guides', items: [ - { text: 'Single Compound Submission', link: '/single-submission' }, - { text: 'Multiple Compound Submission', link: '/multi-submission' }, - { text: 'Programmatic Submission via API', link: '/api-submission' } - ] - }, - { - text: 'API', - items: [ - { text: 'Auth', link: '/auth-api' }, - { text: 'Search', link: '/search-api' }, - { text: 'Schemas', link: '/schemas-api' }, - { text: 'Download', link: '/download-api' }, - { text: 'Submission', link: '/submission-api' } + { text: 'Collection Submission', link: '/collection-submission' }, + // { text: 'Single Compound Submission', link: '/single-submission' }, + // { text: 'Multiple Compound Submission', link: '/multi-submission' }, + { text: 'Reporting', link: '/report-submission' } ] }, + // { + // text: 'API', + // items: [ + // { text: 'Auth', link: '/auth-api' }, + // { text: 'Search', link: '/search-api' }, + // { text: 'Schemas', link: '/schemas-api' }, + // { text: 'Download', link: '/download-api' }, + // { text: 'Submission', link: '/submission-api' } + // ] + // }, { text: 'Download', link:'/download', items: [ @@ -83,7 +94,7 @@ export default defineConfig({ ], socialLinks: [ - { icon: 'github', link: 'https://github.com/vuejs/vitepress' } + { icon: 'github', link: 'https://github.com/Steinbeck-Lab/coconut' } ] } }) diff --git a/docs/.vitepress/dist/404.html b/docs/.vitepress/dist/404.html index 678f76ae..d4a7228f 100644 --- a/docs/.vitepress/dist/404.html +++ b/docs/.vitepress/dist/404.html @@ -6,16 +6,16 @@ 404 | COCONUT Docs - + - - + +
- + \ No newline at end of file diff --git a/docs/.vitepress/dist/CheminfGit.png b/docs/.vitepress/dist/CheminfGit.png new file mode 100644 index 00000000..41d99ab2 Binary files /dev/null and b/docs/.vitepress/dist/CheminfGit.png differ diff --git a/docs/.vitepress/dist/FAQs.html b/docs/.vitepress/dist/FAQs.html index c4537f53..c1b11c05 100644 --- a/docs/.vitepress/dist/FAQs.html +++ b/docs/.vitepress/dist/FAQs.html @@ -6,19 +6,19 @@ Frequently Asked Questions (FAQs) | COCONUT Docs - + - - - - - + + + + + -
Skip to content

Frequently Asked Questions (FAQs)

1. What is the Coconut Natural Products Database?

The Coconut Natural Products Database is a comprehensive collection of information about various natural products derived from coconuts. It provides details about coconut-based products such as oils, milk, water, flour, and more.

2. How can I access the Coconut Natural Products Database?

The Coconut Natural Products Database can be accessed through a web-based interface. Simply visit the website and navigate to the database section to explore the available information.

3. What kind of information does the database contain?

The database contains detailed information about different coconut natural products, including their nutritional composition, processing methods, benefits, recommended usage, and potential allergens. It may also provide insights into the sourcing, production, and sustainability practices related to coconut-based products.

4. How can I search for specific coconut natural products?

The database offers search functionality that allows users to find specific coconut natural products. You can search by product name, category, ingredients, or specific attributes. The search feature helps you quickly locate the desired information within the vast collection of coconut-based products.

5. Can I contribute to the Coconut Natural Products Database?

Yes, contributions to the database are welcome. If you have additional information, insights, or new coconut-based products to include, you can submit them through the website. The database administrators will review and validate the submissions before integrating them into the database.

6. Is the Coconut Natural Products Database regularly updated?

Yes, the database is regularly updated to ensure that the information remains accurate and up to date. New products, nutritional data, scientific research findings, and other relevant information are continually added to keep the database current and comprehensive.

7. Can I access the Coconut Natural Products Database offline?

At present, the Coconut Natural Products Database is only accessible through the online web interface. However, users can bookmark specific pages or save relevant information for offline reference.

8. Is the Coconut Natural Products Database available for commercial use?

The availability and terms of commercial use may vary. It is advisable to contact the database administrators or the website owner to inquire about commercial usage, licensing, or any specific requirements.

9. Are there any subscription fees or charges to access the Coconut Natural Products Database?

The accessibility and associated costs of the Coconut Natural Products Database depend on its specific implementation. Some databases may offer free access to basic information, while others may require a subscription or offer premium services for advanced features and in-depth product analysis. Refer to the website or contact the administrators to learn more about the pricing structure, if applicable.

10. Who maintains and updates the Coconut Natural Products Database?

The Coconut Natural Products Database is maintained and updated by a team of experts, researchers, and database administrators dedicated to curating accurate and reliable information. Their goal is to provide a valuable resource for individuals, researchers, and industry professionals interested in coconut natural products.

If you have further questions or need additional assistance, please feel free to reach out to the database administrators through the contact information provided on the website.

- +
Skip to content

Frequently Asked Questions (FAQs)

1. What is the Coconut Natural Products Database?

The Coconut Natural Products Database is a comprehensive collection of information about various natural products derived from coconuts. It provides details about coconut-based products such as oils, milk, water, flour, and more.

2. How can I access the Coconut Natural Products Database?

The Coconut Natural Products Database can be accessed through a web-based interface. Simply visit the website and navigate to the database section to explore the available information.

3. What kind of information does the database contain?

The database contains detailed information about different coconut natural products, including their nutritional composition, processing methods, benefits, recommended usage, and potential allergens. It may also provide insights into the sourcing, production, and sustainability practices related to coconut-based products.

4. How can I search for specific coconut natural products?

The database offers search functionality that allows users to find specific coconut natural products. You can search by product name, category, ingredients, or specific attributes. The search feature helps you quickly locate the desired information within the vast collection of coconut-based products.

5. Can I contribute to the Coconut Natural Products Database?

Yes, contributions to the database are welcome. If you have additional information, insights, or new coconut-based products to include, you can submit them through the website. The database administrators will review and validate the submissions before integrating them into the database.

6. Is the Coconut Natural Products Database regularly updated?

Yes, the database is regularly updated to ensure that the information remains accurate and up to date. New products, nutritional data, scientific research findings, and other relevant information are continually added to keep the database current and comprehensive.

7. Can I access the Coconut Natural Products Database offline?

At present, the Coconut Natural Products Database is only accessible through the online web interface. However, users can bookmark specific pages or save relevant information for offline reference.

8. Is the Coconut Natural Products Database available for commercial use?

The availability and terms of commercial use may vary. It is advisable to contact the database administrators or the website owner to inquire about commercial usage, licensing, or any specific requirements.

9. Are there any subscription fees or charges to access the Coconut Natural Products Database?

The accessibility and associated costs of the Coconut Natural Products Database depend on its specific implementation. Some databases may offer free access to basic information, while others may require a subscription or offer premium services for advanced features and in-depth product analysis. Refer to the website or contact the administrators to learn more about the pricing structure, if applicable.

10. Who maintains and updates the Coconut Natural Products Database?

The Coconut Natural Products Database is maintained and updated by a team of experts, researchers, and database administrators dedicated to curating accurate and reliable information. Their goal is to provide a valuable resource for individuals, researchers, and industry professionals interested in coconut natural products.

If you have further questions or need additional assistance, please feel free to reach out to the database administrators through the contact information provided on the website.

+ \ No newline at end of file diff --git a/docs/.vitepress/dist/about.html b/docs/.vitepress/dist/about.html index 829e6199..f18aa03e 100644 --- a/docs/.vitepress/dist/about.html +++ b/docs/.vitepress/dist/about.html @@ -6,19 +6,19 @@ COCONUT Docs - + - - - - - + + + + + -
Skip to content
- +
Skip to content
+ \ No newline at end of file diff --git a/docs/.vitepress/dist/advanced-search.html b/docs/.vitepress/dist/advanced-search.html index cd3ec4ed..610e80fa 100644 --- a/docs/.vitepress/dist/advanced-search.html +++ b/docs/.vitepress/dist/advanced-search.html @@ -3,54 +3,22 @@ - Markdown Extension Examples | COCONUT Docs + Coming Soon | COCONUT Docs - + - - - - - + + + + + -
Skip to content
- +
Skip to content
+ \ No newline at end of file diff --git a/docs/.vitepress/dist/analysis.html b/docs/.vitepress/dist/analysis.html index 2ed2a1b4..1800e506 100644 --- a/docs/.vitepress/dist/analysis.html +++ b/docs/.vitepress/dist/analysis.html @@ -6,19 +6,19 @@ COCONUT online - Data analysis | COCONUT Docs - + - - - - - + + + + + -
Skip to content

COCONUT online - Data analysis

  • As shown in the sources section, COCONUT data has been extracted from 53 data sources and several have been manually collected from literature sets.

  • Currently, the COCONUT release (June 2023) contains 406,919 unique "flat" (without stereochemistry) NPs, and 730,441 NPs whose stereochemistry is preserved. Please refer to the original paper for more details.

  • We extensively use the ChEMBL structure curation pipeline developed with RDKit to clean the data and curate the database.

Curation steps

  • The snapshot of the mongoDB database form the COCONUT release 2022 was taken as the primary source,
    • Polyfluorinated compounds (64 in total) were removed
    • Structures that cannot be parsed by the ChEMBL structure curation pipeline (113 in total) have been removed.
    • Duplicates have been merged into one entry and the highly annotated entry has been made the parent entry, and the remainder is now included in the parent entry.
- +
Skip to content

COCONUT online - Data analysis

  • As shown in the sources section, COCONUT data has been extracted from 53 data sources and several have been manually collected from literature sets.

  • Currently, the COCONUT release (June 2023) contains 406,919 unique "flat" (without stereochemistry) NPs, and 730,441 NPs whose stereochemistry is preserved. Please refer to the original paper for more details.

  • We extensively use the ChEMBL structure curation pipeline developed with RDKit to clean the data and curate the database.

Curation steps

  • The snapshot of the mongoDB database form the COCONUT release 2022 was taken as the primary source,
    • Polyfluorinated compounds (64 in total) were removed
    • Structures that cannot be parsed by the ChEMBL structure curation pipeline (113 in total) have been removed.
    • Duplicates have been merged into one entry and the highly annotated entry has been made the parent entry, and the remainder is now included in the parent entry.
+ \ No newline at end of file diff --git a/docs/.vitepress/dist/api-examples.html b/docs/.vitepress/dist/api-examples.html new file mode 100644 index 00000000..61a7fab7 --- /dev/null +++ b/docs/.vitepress/dist/api-examples.html @@ -0,0 +1,227 @@ + + + + + + Runtime API Examples | COCONUT Docs + + + + + + + + + + + + + +
Skip to content

Runtime API Examples

This page demonstrates usage of some of the runtime APIs provided by VitePress.

The main useData() API can be used to access site, theme, and page data for the current page. It works in both .md and .vue files:

md
<script setup>
+import { useData } from 'vitepress'
+
+const { theme, page, frontmatter } = useData()
+</script>
+
+## Results
+
+### Theme Data
+<pre>{{ theme }}</pre>
+
+### Page Data
+<pre>{{ page }}</pre>
+
+### Page Frontmatter
+<pre>{{ frontmatter }}</pre>

Results

Theme Data

{
+  "logo": "/logo.png",
+  "siteTitle": "",
+  "head": [
+    [
+      "link",
+      {
+        "rel": "apple-touch-icon",
+        "sizes": "180x180",
+        "href": "/assets/favicons/apple-touch-icon.png"
+      }
+    ],
+    [
+      "link",
+      {
+        "rel": "icon",
+        "type": "image/png",
+        "sizes": "32x32",
+        "href": "/assets/favicons/favicon-32x32.png"
+      }
+    ],
+    [
+      "link",
+      {
+        "rel": "icon",
+        "type": "image/png",
+        "sizes": "16x16",
+        "href": "/assets/favicons/favicon-16x16.png"
+      }
+    ],
+    [
+      "link",
+      {
+        "rel": "manifest",
+        "href": "/assets/favicons/site.webmanifest"
+      }
+    ],
+    [
+      "link",
+      {
+        "rel": "mask-icon",
+        "href": "/assets/favicons/safari-pinned-tab.svg",
+        "color": "#3a0839"
+      }
+    ],
+    [
+      "link",
+      {
+        "rel": "shortcut icon",
+        "href": "/assets/favicons/favicon.ico"
+      }
+    ],
+    [
+      "meta",
+      {
+        "name": "msapplication-TileColor",
+        "content": "#3a0839"
+      }
+    ],
+    [
+      "meta",
+      {
+        "name": "msapplication-config",
+        "content": "/assets/favicons/browserconfig.xml"
+      }
+    ],
+    [
+      "meta",
+      {
+        "name": "theme-color",
+        "content": "#ffffff"
+      }
+    ]
+  ],
+  "nav": [
+    {
+      "text": "Home",
+      "link": "/introduction"
+    },
+    {
+      "text": "Guides",
+      "link": "/collection-submission"
+    },
+    {
+      "text": "API",
+      "link": "https://coconut.cheminf.studio/api-documentation"
+    },
+    {
+      "text": "About",
+      "link": "https://coconut.cheminf.studio/about"
+    },
+    {
+      "text": "Download",
+      "link": "https://coconut.cheminf.studio/download"
+    }
+  ],
+  "sidebar": [
+    {
+      "text": "Welcome",
+      "items": [
+        {
+          "text": "Introduction",
+          "link": "/introduction"
+        },
+        {
+          "text": "Sources",
+          "link": "/sources"
+        }
+      ]
+    },
+    {
+      "text": "Browse/Search",
+      "items": [
+        {
+          "text": "Browse",
+          "link": "/browse"
+        },
+        {
+          "text": "Structure",
+          "link": "/structure-search"
+        },
+        {
+          "text": "Advanced",
+          "link": "/advanced-search"
+        }
+      ]
+    },
+    {
+      "text": "Submission Guides",
+      "items": [
+        {
+          "text": "Collection Submission",
+          "link": "/collection-submission"
+        },
+        {
+          "text": "Reporting",
+          "link": "/report-submission"
+        }
+      ]
+    },
+    {
+      "text": "Download",
+      "link": "/download",
+      "items": []
+    },
+    {
+      "text": "Development",
+      "items": [
+        {
+          "text": "Installation",
+          "link": "/installation"
+        },
+        {
+          "text": "Database Schema",
+          "link": "/db-schema"
+        },
+        {
+          "text": "License",
+          "link": "/license"
+        },
+        {
+          "text": "FAQs",
+          "link": "/FAQs"
+        },
+        {
+          "text": "Issues / Feature requests",
+          "link": "/issues"
+        }
+      ]
+    }
+  ],
+  "socialLinks": [
+    {
+      "icon": "github",
+      "link": "https://github.com/Steinbeck-Lab/coconut"
+    }
+  ]
+}

Page Data

{
+  "title": "Runtime API Examples",
+  "description": "",
+  "frontmatter": {
+    "outline": "deep"
+  },
+  "headers": [],
+  "relativePath": "api-examples.md",
+  "filePath": "api-examples.md"
+}

Page Frontmatter

{
+  "outline": "deep"
+}

More

Check out the documentation for the full list of runtime APIs.

+ + + + \ No newline at end of file diff --git a/docs/.vitepress/dist/api-submission.html b/docs/.vitepress/dist/api-submission.html index 3b08ef70..7c3b8b80 100644 --- a/docs/.vitepress/dist/api-submission.html +++ b/docs/.vitepress/dist/api-submission.html @@ -6,18 +6,18 @@ Markdown Extension Examples | COCONUT Docs - + - - - - - + + + + + -
Skip to content

Markdown Extension Examples

This page demonstrates some of the built-in markdown extensions provided by VitePress.

Syntax Highlighting

VitePress provides Syntax Highlighting powered by Shiki, with additional features like line-highlighting:

Input

```js{4}
+    
Skip to content

Markdown Extension Examples

This page demonstrates some of the built-in markdown extensions provided by VitePress.

Syntax Highlighting

VitePress provides Syntax Highlighting powered by Shiki, with additional features like line-highlighting:

Input

```js{4}
 export default {
   data () {
     return {
@@ -49,8 +49,8 @@
 
 ::: details
 This is a details block.
-:::

Output

INFO

This is an info box.

TIP

This is a tip.

WARNING

This is a warning.

DANGER

This is a dangerous warning.

Details

This is a details block.

More

Check out the documentation for the full list of markdown extensions.

- +:::

Output

INFO

This is an info box.

TIP

This is a tip.

WARNING

This is a warning.

DANGER

This is a dangerous warning.

Details

This is a details block.

More

Check out the documentation for the full list of markdown extensions.

+ \ No newline at end of file diff --git a/docs/.vitepress/dist/assets/FAQs.md.DWn2LnF0.js b/docs/.vitepress/dist/assets/FAQs.md.Bzquhxla.js similarity index 98% rename from docs/.vitepress/dist/assets/FAQs.md.DWn2LnF0.js rename to docs/.vitepress/dist/assets/FAQs.md.Bzquhxla.js index 88d87b78..4d33c620 100644 --- a/docs/.vitepress/dist/assets/FAQs.md.DWn2LnF0.js +++ b/docs/.vitepress/dist/assets/FAQs.md.Bzquhxla.js @@ -1 +1 @@ -import{_ as a,c as t,o as e,a1 as o}from"./chunks/framework.D_xGnxpE.js";const f=JSON.parse('{"title":"Frequently Asked Questions (FAQs)","description":"","frontmatter":{},"headers":[],"relativePath":"FAQs.md","filePath":"FAQs.md"}'),s={name:"FAQs.md"},r=o('

Frequently Asked Questions (FAQs)

1. What is the Coconut Natural Products Database?

The Coconut Natural Products Database is a comprehensive collection of information about various natural products derived from coconuts. It provides details about coconut-based products such as oils, milk, water, flour, and more.

2. How can I access the Coconut Natural Products Database?

The Coconut Natural Products Database can be accessed through a web-based interface. Simply visit the website and navigate to the database section to explore the available information.

3. What kind of information does the database contain?

The database contains detailed information about different coconut natural products, including their nutritional composition, processing methods, benefits, recommended usage, and potential allergens. It may also provide insights into the sourcing, production, and sustainability practices related to coconut-based products.

4. How can I search for specific coconut natural products?

The database offers search functionality that allows users to find specific coconut natural products. You can search by product name, category, ingredients, or specific attributes. The search feature helps you quickly locate the desired information within the vast collection of coconut-based products.

5. Can I contribute to the Coconut Natural Products Database?

Yes, contributions to the database are welcome. If you have additional information, insights, or new coconut-based products to include, you can submit them through the website. The database administrators will review and validate the submissions before integrating them into the database.

6. Is the Coconut Natural Products Database regularly updated?

Yes, the database is regularly updated to ensure that the information remains accurate and up to date. New products, nutritional data, scientific research findings, and other relevant information are continually added to keep the database current and comprehensive.

7. Can I access the Coconut Natural Products Database offline?

At present, the Coconut Natural Products Database is only accessible through the online web interface. However, users can bookmark specific pages or save relevant information for offline reference.

8. Is the Coconut Natural Products Database available for commercial use?

The availability and terms of commercial use may vary. It is advisable to contact the database administrators or the website owner to inquire about commercial usage, licensing, or any specific requirements.

9. Are there any subscription fees or charges to access the Coconut Natural Products Database?

The accessibility and associated costs of the Coconut Natural Products Database depend on its specific implementation. Some databases may offer free access to basic information, while others may require a subscription or offer premium services for advanced features and in-depth product analysis. Refer to the website or contact the administrators to learn more about the pricing structure, if applicable.

10. Who maintains and updates the Coconut Natural Products Database?

The Coconut Natural Products Database is maintained and updated by a team of experts, researchers, and database administrators dedicated to curating accurate and reliable information. Their goal is to provide a valuable resource for individuals, researchers, and industry professionals interested in coconut natural products.

If you have further questions or need additional assistance, please feel free to reach out to the database administrators through the contact information provided on the website.

',22),n=[r];function c(i,u,d,h,l,b){return e(),t("div",null,n)}const m=a(s,[["render",c]]);export{f as __pageData,m as default}; +import{_ as a,c as t,o as e,a1 as o}from"./chunks/framework.D0pIZSx4.js";const f=JSON.parse('{"title":"Frequently Asked Questions (FAQs)","description":"","frontmatter":{},"headers":[],"relativePath":"FAQs.md","filePath":"FAQs.md"}'),s={name:"FAQs.md"},r=o('

Frequently Asked Questions (FAQs)

1. What is the Coconut Natural Products Database?

The Coconut Natural Products Database is a comprehensive collection of information about various natural products derived from coconuts. It provides details about coconut-based products such as oils, milk, water, flour, and more.

2. How can I access the Coconut Natural Products Database?

The Coconut Natural Products Database can be accessed through a web-based interface. Simply visit the website and navigate to the database section to explore the available information.

3. What kind of information does the database contain?

The database contains detailed information about different coconut natural products, including their nutritional composition, processing methods, benefits, recommended usage, and potential allergens. It may also provide insights into the sourcing, production, and sustainability practices related to coconut-based products.

4. How can I search for specific coconut natural products?

The database offers search functionality that allows users to find specific coconut natural products. You can search by product name, category, ingredients, or specific attributes. The search feature helps you quickly locate the desired information within the vast collection of coconut-based products.

5. Can I contribute to the Coconut Natural Products Database?

Yes, contributions to the database are welcome. If you have additional information, insights, or new coconut-based products to include, you can submit them through the website. The database administrators will review and validate the submissions before integrating them into the database.

6. Is the Coconut Natural Products Database regularly updated?

Yes, the database is regularly updated to ensure that the information remains accurate and up to date. New products, nutritional data, scientific research findings, and other relevant information are continually added to keep the database current and comprehensive.

7. Can I access the Coconut Natural Products Database offline?

At present, the Coconut Natural Products Database is only accessible through the online web interface. However, users can bookmark specific pages or save relevant information for offline reference.

8. Is the Coconut Natural Products Database available for commercial use?

The availability and terms of commercial use may vary. It is advisable to contact the database administrators or the website owner to inquire about commercial usage, licensing, or any specific requirements.

9. Are there any subscription fees or charges to access the Coconut Natural Products Database?

The accessibility and associated costs of the Coconut Natural Products Database depend on its specific implementation. Some databases may offer free access to basic information, while others may require a subscription or offer premium services for advanced features and in-depth product analysis. Refer to the website or contact the administrators to learn more about the pricing structure, if applicable.

10. Who maintains and updates the Coconut Natural Products Database?

The Coconut Natural Products Database is maintained and updated by a team of experts, researchers, and database administrators dedicated to curating accurate and reliable information. Their goal is to provide a valuable resource for individuals, researchers, and industry professionals interested in coconut natural products.

If you have further questions or need additional assistance, please feel free to reach out to the database administrators through the contact information provided on the website.

',22),n=[r];function c(i,u,d,h,l,b){return e(),t("div",null,n)}const m=a(s,[["render",c]]);export{f as __pageData,m as default}; diff --git a/docs/.vitepress/dist/assets/FAQs.md.DWn2LnF0.lean.js b/docs/.vitepress/dist/assets/FAQs.md.Bzquhxla.lean.js similarity index 66% rename from docs/.vitepress/dist/assets/FAQs.md.DWn2LnF0.lean.js rename to docs/.vitepress/dist/assets/FAQs.md.Bzquhxla.lean.js index 61bb93e3..e96afb97 100644 --- a/docs/.vitepress/dist/assets/FAQs.md.DWn2LnF0.lean.js +++ b/docs/.vitepress/dist/assets/FAQs.md.Bzquhxla.lean.js @@ -1 +1 @@ -import{_ as a,c as t,o as e,a1 as o}from"./chunks/framework.D_xGnxpE.js";const f=JSON.parse('{"title":"Frequently Asked Questions (FAQs)","description":"","frontmatter":{},"headers":[],"relativePath":"FAQs.md","filePath":"FAQs.md"}'),s={name:"FAQs.md"},r=o("",22),n=[r];function c(i,u,d,h,l,b){return e(),t("div",null,n)}const m=a(s,[["render",c]]);export{f as __pageData,m as default}; +import{_ as a,c as t,o as e,a1 as o}from"./chunks/framework.D0pIZSx4.js";const f=JSON.parse('{"title":"Frequently Asked Questions (FAQs)","description":"","frontmatter":{},"headers":[],"relativePath":"FAQs.md","filePath":"FAQs.md"}'),s={name:"FAQs.md"},r=o("",22),n=[r];function c(i,u,d,h,l,b){return e(),t("div",null,n)}const m=a(s,[["render",c]]);export{f as __pageData,m as default}; diff --git a/docs/.vitepress/dist/assets/about.md.dAk0mzg2.lean.js b/docs/.vitepress/dist/assets/about.md.BjBdSy5G.js similarity index 80% rename from docs/.vitepress/dist/assets/about.md.dAk0mzg2.lean.js rename to docs/.vitepress/dist/assets/about.md.BjBdSy5G.js index e0bda564..b68c37db 100644 --- a/docs/.vitepress/dist/assets/about.md.dAk0mzg2.lean.js +++ b/docs/.vitepress/dist/assets/about.md.BjBdSy5G.js @@ -1 +1 @@ -import{_ as t,c as e,o as a}from"./chunks/framework.D_xGnxpE.js";const m=JSON.parse('{"title":"","description":"","frontmatter":{},"headers":[],"relativePath":"about.md","filePath":"about.md"}'),o={name:"about.md"};function r(s,c,n,p,_,d){return a(),e("div")}const f=t(o,[["render",r]]);export{m as __pageData,f as default}; +import{_ as t,c as e,o as a}from"./chunks/framework.D0pIZSx4.js";const m=JSON.parse('{"title":"","description":"","frontmatter":{},"headers":[],"relativePath":"about.md","filePath":"about.md"}'),o={name:"about.md"};function r(s,c,n,p,_,d){return a(),e("div")}const f=t(o,[["render",r]]);export{m as __pageData,f as default}; diff --git a/docs/.vitepress/dist/assets/about.md.dAk0mzg2.js b/docs/.vitepress/dist/assets/about.md.BjBdSy5G.lean.js similarity index 80% rename from docs/.vitepress/dist/assets/about.md.dAk0mzg2.js rename to docs/.vitepress/dist/assets/about.md.BjBdSy5G.lean.js index e0bda564..b68c37db 100644 --- a/docs/.vitepress/dist/assets/about.md.dAk0mzg2.js +++ b/docs/.vitepress/dist/assets/about.md.BjBdSy5G.lean.js @@ -1 +1 @@ -import{_ as t,c as e,o as a}from"./chunks/framework.D_xGnxpE.js";const m=JSON.parse('{"title":"","description":"","frontmatter":{},"headers":[],"relativePath":"about.md","filePath":"about.md"}'),o={name:"about.md"};function r(s,c,n,p,_,d){return a(),e("div")}const f=t(o,[["render",r]]);export{m as __pageData,f as default}; +import{_ as t,c as e,o as a}from"./chunks/framework.D0pIZSx4.js";const m=JSON.parse('{"title":"","description":"","frontmatter":{},"headers":[],"relativePath":"about.md","filePath":"about.md"}'),o={name:"about.md"};function r(s,c,n,p,_,d){return a(),e("div")}const f=t(o,[["render",r]]);export{m as __pageData,f as default}; diff --git a/docs/.vitepress/dist/assets/advanced-search.md.BTpkrwsQ.js b/docs/.vitepress/dist/assets/advanced-search.md.BTpkrwsQ.js new file mode 100644 index 00000000..ba3c793c --- /dev/null +++ b/docs/.vitepress/dist/assets/advanced-search.md.BTpkrwsQ.js @@ -0,0 +1 @@ +import{_ as a,c as o,o as n,j as e,a as t}from"./chunks/framework.D0pIZSx4.js";const g=JSON.parse('{"title":"Coming Soon","description":"","frontmatter":{},"headers":[],"relativePath":"advanced-search.md","filePath":"advanced-search.md"}'),c={name:"advanced-search.md"},s=e("h1",{id:"coming-soon",tabindex:"-1"},[t("Coming Soon "),e("a",{class:"header-anchor",href:"#coming-soon","aria-label":'Permalink to "Coming Soon"'},"​")],-1),r=[s];function d(i,m,_,h,l,p){return n(),o("div",null,r)}const v=a(c,[["render",d]]);export{g as __pageData,v as default}; diff --git a/docs/.vitepress/dist/assets/advanced-search.md.BTpkrwsQ.lean.js b/docs/.vitepress/dist/assets/advanced-search.md.BTpkrwsQ.lean.js new file mode 100644 index 00000000..ba3c793c --- /dev/null +++ b/docs/.vitepress/dist/assets/advanced-search.md.BTpkrwsQ.lean.js @@ -0,0 +1 @@ +import{_ as a,c as o,o as n,j as e,a as t}from"./chunks/framework.D0pIZSx4.js";const g=JSON.parse('{"title":"Coming Soon","description":"","frontmatter":{},"headers":[],"relativePath":"advanced-search.md","filePath":"advanced-search.md"}'),c={name:"advanced-search.md"},s=e("h1",{id:"coming-soon",tabindex:"-1"},[t("Coming Soon "),e("a",{class:"header-anchor",href:"#coming-soon","aria-label":'Permalink to "Coming Soon"'},"​")],-1),r=[s];function d(i,m,_,h,l,p){return n(),o("div",null,r)}const v=a(c,[["render",d]]);export{g as __pageData,v as default}; diff --git a/docs/.vitepress/dist/assets/advanced-search.md.Cwsq9mQr.js b/docs/.vitepress/dist/assets/advanced-search.md.Cwsq9mQr.js deleted file mode 100644 index 7650e693..00000000 --- a/docs/.vitepress/dist/assets/advanced-search.md.Cwsq9mQr.js +++ /dev/null @@ -1,33 +0,0 @@ -import{_ as s,c as a,o as n,a1 as i}from"./chunks/framework.D_xGnxpE.js";const g=JSON.parse('{"title":"Markdown Extension Examples","description":"","frontmatter":{},"headers":[],"relativePath":"advanced-search.md","filePath":"advanced-search.md"}'),e={name:"advanced-search.md"},t=i(`

Markdown Extension Examples

This page demonstrates some of the built-in markdown extensions provided by VitePress.

Syntax Highlighting

VitePress provides Syntax Highlighting powered by Shiki, with additional features like line-highlighting:

Input

\`\`\`js{4}
-export default {
-  data () {
-    return {
-      msg: 'Highlighted!'
-    }
-  }
-}
-\`\`\`

Output

js
export default {
-  data () {
-    return {
-      msg: 'Highlighted!'
-    }
-  }
-}

Custom Containers

Input

md
::: info
-This is an info box.
-:::
-
-::: tip
-This is a tip.
-:::
-
-::: warning
-This is a warning.
-:::
-
-::: danger
-This is a dangerous warning.
-:::
-
-::: details
-This is a details block.
-:::

Output

INFO

This is an info box.

TIP

This is a tip.

WARNING

This is a warning.

DANGER

This is a dangerous warning.

Details

This is a details block.

More

Check out the documentation for the full list of markdown extensions.

`,19),p=[t];function l(h,r,o,d,c,k){return n(),a("div",null,p)}const u=s(e,[["render",l]]);export{g as __pageData,u as default}; diff --git a/docs/.vitepress/dist/assets/advanced-search.md.Cwsq9mQr.lean.js b/docs/.vitepress/dist/assets/advanced-search.md.Cwsq9mQr.lean.js deleted file mode 100644 index 46ac2453..00000000 --- a/docs/.vitepress/dist/assets/advanced-search.md.Cwsq9mQr.lean.js +++ /dev/null @@ -1 +0,0 @@ -import{_ as s,c as a,o as n,a1 as i}from"./chunks/framework.D_xGnxpE.js";const g=JSON.parse('{"title":"Markdown Extension Examples","description":"","frontmatter":{},"headers":[],"relativePath":"advanced-search.md","filePath":"advanced-search.md"}'),e={name:"advanced-search.md"},t=i("",19),p=[t];function l(h,r,o,d,c,k){return n(),a("div",null,p)}const u=s(e,[["render",l]]);export{g as __pageData,u as default}; diff --git a/docs/.vitepress/dist/assets/analysis.md.D9J1hnWY.js b/docs/.vitepress/dist/assets/analysis.md.aBwP1KKU.js similarity index 94% rename from docs/.vitepress/dist/assets/analysis.md.D9J1hnWY.js rename to docs/.vitepress/dist/assets/analysis.md.aBwP1KKU.js index 239061f4..45e97c28 100644 --- a/docs/.vitepress/dist/assets/analysis.md.D9J1hnWY.js +++ b/docs/.vitepress/dist/assets/analysis.md.aBwP1KKU.js @@ -1 +1 @@ -import{_ as e,c as a,o as t,a1 as r}from"./chunks/framework.D_xGnxpE.js";const _=JSON.parse('{"title":"COCONUT online - Data analysis","description":"","frontmatter":{},"headers":[],"relativePath":"analysis.md","filePath":"analysis.md"}'),n={name:"analysis.md"},s=r('

COCONUT online - Data analysis

Curation steps

',4),o=[s];function i(l,h,c,d,u,p){return t(),a("div",null,o)}const f=e(n,[["render",i]]);export{_ as __pageData,f as default}; +import{_ as e,c as a,o as t,a1 as r}from"./chunks/framework.D0pIZSx4.js";const _=JSON.parse('{"title":"COCONUT online - Data analysis","description":"","frontmatter":{},"headers":[],"relativePath":"analysis.md","filePath":"analysis.md"}'),n={name:"analysis.md"},s=r('

COCONUT online - Data analysis

Curation steps

',4),o=[s];function i(l,h,c,d,u,p){return t(),a("div",null,o)}const f=e(n,[["render",i]]);export{_ as __pageData,f as default}; diff --git a/docs/.vitepress/dist/assets/analysis.md.D9J1hnWY.lean.js b/docs/.vitepress/dist/assets/analysis.md.aBwP1KKU.lean.js similarity index 67% rename from docs/.vitepress/dist/assets/analysis.md.D9J1hnWY.lean.js rename to docs/.vitepress/dist/assets/analysis.md.aBwP1KKU.lean.js index 025b3bdf..d8a24aab 100644 --- a/docs/.vitepress/dist/assets/analysis.md.D9J1hnWY.lean.js +++ b/docs/.vitepress/dist/assets/analysis.md.aBwP1KKU.lean.js @@ -1 +1 @@ -import{_ as e,c as a,o as t,a1 as r}from"./chunks/framework.D_xGnxpE.js";const _=JSON.parse('{"title":"COCONUT online - Data analysis","description":"","frontmatter":{},"headers":[],"relativePath":"analysis.md","filePath":"analysis.md"}'),n={name:"analysis.md"},s=r("",4),o=[s];function i(l,h,c,d,u,p){return t(),a("div",null,o)}const f=e(n,[["render",i]]);export{_ as __pageData,f as default}; +import{_ as e,c as a,o as t,a1 as r}from"./chunks/framework.D0pIZSx4.js";const _=JSON.parse('{"title":"COCONUT online - Data analysis","description":"","frontmatter":{},"headers":[],"relativePath":"analysis.md","filePath":"analysis.md"}'),n={name:"analysis.md"},s=r("",4),o=[s];function i(l,h,c,d,u,p){return t(),a("div",null,o)}const f=e(n,[["render",i]]);export{_ as __pageData,f as default}; diff --git a/docs/.vitepress/dist/assets/api-examples.md.BGcf4ZON.js b/docs/.vitepress/dist/assets/api-examples.md.BGcf4ZON.js new file mode 100644 index 00000000..39e4916b --- /dev/null +++ b/docs/.vitepress/dist/assets/api-examples.md.BGcf4ZON.js @@ -0,0 +1,16 @@ +import{u as h,c as p,j as s,t as i,k as e,a1 as r,a,o as k}from"./chunks/framework.D0pIZSx4.js";const d=r(`

Runtime API Examples

This page demonstrates usage of some of the runtime APIs provided by VitePress.

The main useData() API can be used to access site, theme, and page data for the current page. It works in both .md and .vue files:

md
<script setup>
+import { useData } from 'vitepress'
+
+const { theme, page, frontmatter } = useData()
+</script>
+
+## Results
+
+### Theme Data
+<pre>{{ theme }}</pre>
+
+### Page Data
+<pre>{{ page }}</pre>
+
+### Page Frontmatter
+<pre>{{ frontmatter }}</pre>

Results

Theme Data

`,6),o=s("h3",{id:"page-data",tabindex:"-1"},[a("Page Data "),s("a",{class:"header-anchor",href:"#page-data","aria-label":'Permalink to "Page Data"'},"​")],-1),E=s("h3",{id:"page-frontmatter",tabindex:"-1"},[a("Page Frontmatter "),s("a",{class:"header-anchor",href:"#page-frontmatter","aria-label":'Permalink to "Page Frontmatter"'},"​")],-1),g=s("h2",{id:"more",tabindex:"-1"},[a("More "),s("a",{class:"header-anchor",href:"#more","aria-label":'Permalink to "More"'},"​")],-1),c=s("p",null,[a("Check out the documentation for the "),s("a",{href:"https://vitepress.dev/reference/runtime-api#usedata",target:"_blank",rel:"noreferrer"},"full list of runtime APIs"),a(".")],-1),D=JSON.parse('{"title":"Runtime API Examples","description":"","frontmatter":{"outline":"deep"},"headers":[],"relativePath":"api-examples.md","filePath":"api-examples.md"}'),m={name:"api-examples.md"},F=Object.assign(m,{setup(u){const{site:y,theme:t,page:n,frontmatter:l}=h();return(_,f)=>(k(),p("div",null,[d,s("pre",null,i(e(t)),1),o,s("pre",null,i(e(n)),1),E,s("pre",null,i(e(l)),1),g,c]))}});export{D as __pageData,F as default}; diff --git a/docs/.vitepress/dist/assets/api-examples.md.BGcf4ZON.lean.js b/docs/.vitepress/dist/assets/api-examples.md.BGcf4ZON.lean.js new file mode 100644 index 00000000..6bb4f6df --- /dev/null +++ b/docs/.vitepress/dist/assets/api-examples.md.BGcf4ZON.lean.js @@ -0,0 +1 @@ +import{u as h,c as p,j as s,t as i,k as e,a1 as r,a,o as k}from"./chunks/framework.D0pIZSx4.js";const d=r("",6),o=s("h3",{id:"page-data",tabindex:"-1"},[a("Page Data "),s("a",{class:"header-anchor",href:"#page-data","aria-label":'Permalink to "Page Data"'},"​")],-1),E=s("h3",{id:"page-frontmatter",tabindex:"-1"},[a("Page Frontmatter "),s("a",{class:"header-anchor",href:"#page-frontmatter","aria-label":'Permalink to "Page Frontmatter"'},"​")],-1),g=s("h2",{id:"more",tabindex:"-1"},[a("More "),s("a",{class:"header-anchor",href:"#more","aria-label":'Permalink to "More"'},"​")],-1),c=s("p",null,[a("Check out the documentation for the "),s("a",{href:"https://vitepress.dev/reference/runtime-api#usedata",target:"_blank",rel:"noreferrer"},"full list of runtime APIs"),a(".")],-1),D=JSON.parse('{"title":"Runtime API Examples","description":"","frontmatter":{"outline":"deep"},"headers":[],"relativePath":"api-examples.md","filePath":"api-examples.md"}'),m={name:"api-examples.md"},F=Object.assign(m,{setup(u){const{site:y,theme:t,page:n,frontmatter:l}=h();return(_,f)=>(k(),p("div",null,[d,s("pre",null,i(e(t)),1),o,s("pre",null,i(e(n)),1),E,s("pre",null,i(e(l)),1),g,c]))}});export{D as __pageData,F as default}; diff --git a/docs/.vitepress/dist/assets/api-submission.md.DVSejR-G.js b/docs/.vitepress/dist/assets/api-submission.md.CqfI-AR6.js similarity index 97% rename from docs/.vitepress/dist/assets/api-submission.md.DVSejR-G.js rename to docs/.vitepress/dist/assets/api-submission.md.CqfI-AR6.js index 6ffdebbc..ac19b411 100644 --- a/docs/.vitepress/dist/assets/api-submission.md.DVSejR-G.js +++ b/docs/.vitepress/dist/assets/api-submission.md.CqfI-AR6.js @@ -1,4 +1,4 @@ -import{_ as s,c as a,o as i,a1 as n}from"./chunks/framework.D_xGnxpE.js";const g=JSON.parse('{"title":"Markdown Extension Examples","description":"","frontmatter":{},"headers":[],"relativePath":"api-submission.md","filePath":"api-submission.md"}'),e={name:"api-submission.md"},t=n(`

Markdown Extension Examples

This page demonstrates some of the built-in markdown extensions provided by VitePress.

Syntax Highlighting

VitePress provides Syntax Highlighting powered by Shiki, with additional features like line-highlighting:

Input

\`\`\`js{4}
+import{_ as s,c as a,o as i,a1 as n}from"./chunks/framework.D0pIZSx4.js";const g=JSON.parse('{"title":"Markdown Extension Examples","description":"","frontmatter":{},"headers":[],"relativePath":"api-submission.md","filePath":"api-submission.md"}'),e={name:"api-submission.md"},t=n(`

Markdown Extension Examples

This page demonstrates some of the built-in markdown extensions provided by VitePress.

Syntax Highlighting

VitePress provides Syntax Highlighting powered by Shiki, with additional features like line-highlighting:

Input

\`\`\`js{4}
 export default {
   data () {
     return {
diff --git a/docs/.vitepress/dist/assets/api-submission.md.DVSejR-G.lean.js b/docs/.vitepress/dist/assets/api-submission.md.CqfI-AR6.lean.js
similarity index 68%
rename from docs/.vitepress/dist/assets/api-submission.md.DVSejR-G.lean.js
rename to docs/.vitepress/dist/assets/api-submission.md.CqfI-AR6.lean.js
index 8f814b0e..5256a9cb 100644
--- a/docs/.vitepress/dist/assets/api-submission.md.DVSejR-G.lean.js
+++ b/docs/.vitepress/dist/assets/api-submission.md.CqfI-AR6.lean.js
@@ -1 +1 @@
-import{_ as s,c as a,o as i,a1 as n}from"./chunks/framework.D_xGnxpE.js";const g=JSON.parse('{"title":"Markdown Extension Examples","description":"","frontmatter":{},"headers":[],"relativePath":"api-submission.md","filePath":"api-submission.md"}'),e={name:"api-submission.md"},t=n("",19),p=[t];function l(h,o,r,d,c,k){return i(),a("div",null,p)}const u=s(e,[["render",l]]);export{g as __pageData,u as default};
+import{_ as s,c as a,o as i,a1 as n}from"./chunks/framework.D0pIZSx4.js";const g=JSON.parse('{"title":"Markdown Extension Examples","description":"","frontmatter":{},"headers":[],"relativePath":"api-submission.md","filePath":"api-submission.md"}'),e={name:"api-submission.md"},t=n("",19),p=[t];function l(h,o,r,d,c,k){return i(),a("div",null,p)}const u=s(e,[["render",l]]);export{g as __pageData,u as default};
diff --git a/docs/.vitepress/dist/assets/app.FL6pNBk8.js b/docs/.vitepress/dist/assets/app.1BJIuGVJ.js
similarity index 67%
rename from docs/.vitepress/dist/assets/app.FL6pNBk8.js
rename to docs/.vitepress/dist/assets/app.1BJIuGVJ.js
index 34032957..55171847 100644
--- a/docs/.vitepress/dist/assets/app.FL6pNBk8.js
+++ b/docs/.vitepress/dist/assets/app.1BJIuGVJ.js
@@ -1 +1 @@
-import{U as o,a3 as p,a4 as u,a5 as l,a6 as c,a7 as f,a8 as d,a9 as m,aa as h,ab as g,ac as A,d as P,u as v,y,x as C,ad as b,ae as w,af as E,ag as R}from"./chunks/framework.D_xGnxpE.js";import{t as S}from"./chunks/theme.Bf2yJofF.js";function i(e){if(e.extends){const a=i(e.extends);return{...a,...e,async enhanceApp(t){a.enhanceApp&&await a.enhanceApp(t),e.enhanceApp&&await e.enhanceApp(t)}}}return e}const s=i(S),_=P({name:"VitePressApp",setup(){const{site:e,lang:a,dir:t}=v();return y(()=>{C(()=>{document.documentElement.lang=a.value,document.documentElement.dir=t.value})}),e.value.router.prefetchLinks&&b(),w(),E(),s.setup&&s.setup(),()=>R(s.Layout)}});async function T(){globalThis.__VITEPRESS__=!0;const e=D(),a=x();a.provide(u,e);const t=l(e.route);return a.provide(c,t),a.component("Content",f),a.component("ClientOnly",d),Object.defineProperties(a.config.globalProperties,{$frontmatter:{get(){return t.frontmatter.value}},$params:{get(){return t.page.value.params}}}),s.enhanceApp&&await s.enhanceApp({app:a,router:e,siteData:m}),{app:a,router:e,data:t}}function x(){return h(_)}function D(){let e=o,a;return g(t=>{let n=A(t),r=null;return n&&(e&&(a=n),(e||a===n)&&(n=n.replace(/\.js$/,".lean.js")),r=import(n)),o&&(e=!1),r},s.NotFound)}o&&T().then(({app:e,router:a,data:t})=>{a.go().then(()=>{p(a.route,t.site),e.mount("#app")})});export{T as createApp};
+import{U as o,a5 as p,a6 as u,a7 as l,a8 as c,a9 as f,aa as d,ab as m,ac as h,ad as g,ae as A,d as P,u as v,y,x as C,af as b,ag as w,ah as E,ai as R}from"./chunks/framework.D0pIZSx4.js";import{t as S}from"./chunks/theme.C1ZqtMac.js";function i(e){if(e.extends){const a=i(e.extends);return{...a,...e,async enhanceApp(t){a.enhanceApp&&await a.enhanceApp(t),e.enhanceApp&&await e.enhanceApp(t)}}}return e}const s=i(S),_=P({name:"VitePressApp",setup(){const{site:e,lang:a,dir:t}=v();return y(()=>{C(()=>{document.documentElement.lang=a.value,document.documentElement.dir=t.value})}),e.value.router.prefetchLinks&&b(),w(),E(),s.setup&&s.setup(),()=>R(s.Layout)}});async function T(){globalThis.__VITEPRESS__=!0;const e=x(),a=j();a.provide(u,e);const t=l(e.route);return a.provide(c,t),a.component("Content",f),a.component("ClientOnly",d),Object.defineProperties(a.config.globalProperties,{$frontmatter:{get(){return t.frontmatter.value}},$params:{get(){return t.page.value.params}}}),s.enhanceApp&&await s.enhanceApp({app:a,router:e,siteData:m}),{app:a,router:e,data:t}}function j(){return h(_)}function x(){let e=o,a;return g(t=>{let n=A(t),r=null;return n&&(e&&(a=n),(e||a===n)&&(n=n.replace(/\.js$/,".lean.js")),r=import(n)),o&&(e=!1),r},s.NotFound)}o&&T().then(({app:e,router:a,data:t})=>{a.go().then(()=>{p(a.route,t.site),e.mount("#app")})});export{T as createApp};
diff --git a/docs/.vitepress/dist/assets/auth-api.md.jqYdnIeU.js b/docs/.vitepress/dist/assets/auth-api.md.D1vW5Gem.js
similarity index 97%
rename from docs/.vitepress/dist/assets/auth-api.md.jqYdnIeU.js
rename to docs/.vitepress/dist/assets/auth-api.md.D1vW5Gem.js
index 37d741d6..c6af5a7a 100644
--- a/docs/.vitepress/dist/assets/auth-api.md.jqYdnIeU.js
+++ b/docs/.vitepress/dist/assets/auth-api.md.D1vW5Gem.js
@@ -1,4 +1,4 @@
-import{_ as s,c as a,o as i,a1 as n}from"./chunks/framework.D_xGnxpE.js";const g=JSON.parse('{"title":"Markdown Extension Examples","description":"","frontmatter":{},"headers":[],"relativePath":"auth-api.md","filePath":"auth-api.md"}'),t={name:"auth-api.md"},e=n(`

Markdown Extension Examples

This page demonstrates some of the built-in markdown extensions provided by VitePress.

Syntax Highlighting

VitePress provides Syntax Highlighting powered by Shiki, with additional features like line-highlighting:

Input

\`\`\`js{4}
+import{_ as s,c as a,o as i,a1 as n}from"./chunks/framework.D0pIZSx4.js";const g=JSON.parse('{"title":"Markdown Extension Examples","description":"","frontmatter":{},"headers":[],"relativePath":"auth-api.md","filePath":"auth-api.md"}'),t={name:"auth-api.md"},e=n(`

Markdown Extension Examples

This page demonstrates some of the built-in markdown extensions provided by VitePress.

Syntax Highlighting

VitePress provides Syntax Highlighting powered by Shiki, with additional features like line-highlighting:

Input

\`\`\`js{4}
 export default {
   data () {
     return {
diff --git a/docs/.vitepress/dist/assets/auth-api.md.jqYdnIeU.lean.js b/docs/.vitepress/dist/assets/auth-api.md.D1vW5Gem.lean.js
similarity index 67%
rename from docs/.vitepress/dist/assets/auth-api.md.jqYdnIeU.lean.js
rename to docs/.vitepress/dist/assets/auth-api.md.D1vW5Gem.lean.js
index 4fc61def..849c98d1 100644
--- a/docs/.vitepress/dist/assets/auth-api.md.jqYdnIeU.lean.js
+++ b/docs/.vitepress/dist/assets/auth-api.md.D1vW5Gem.lean.js
@@ -1 +1 @@
-import{_ as s,c as a,o as i,a1 as n}from"./chunks/framework.D_xGnxpE.js";const g=JSON.parse('{"title":"Markdown Extension Examples","description":"","frontmatter":{},"headers":[],"relativePath":"auth-api.md","filePath":"auth-api.md"}'),t={name:"auth-api.md"},e=n("",19),p=[e];function l(h,o,r,d,c,k){return i(),a("div",null,p)}const u=s(t,[["render",l]]);export{g as __pageData,u as default};
+import{_ as s,c as a,o as i,a1 as n}from"./chunks/framework.D0pIZSx4.js";const g=JSON.parse('{"title":"Markdown Extension Examples","description":"","frontmatter":{},"headers":[],"relativePath":"auth-api.md","filePath":"auth-api.md"}'),t={name:"auth-api.md"},e=n("",19),p=[e];function l(h,o,r,d,c,k){return i(),a("div",null,p)}const u=s(t,[["render",l]]);export{g as __pageData,u as default};
diff --git a/docs/.vitepress/dist/assets/browse.md.IMFZCDVC.js b/docs/.vitepress/dist/assets/browse.md.IMFZCDVC.js
new file mode 100644
index 00000000..d78c1907
--- /dev/null
+++ b/docs/.vitepress/dist/assets/browse.md.IMFZCDVC.js
@@ -0,0 +1 @@
+import{_ as e,c as a,o as t,a1 as r,a2 as o}from"./chunks/framework.D0pIZSx4.js";const g=JSON.parse('{"title":"COCONUT online - Browse","description":"","frontmatter":{},"headers":[],"relativePath":"browse.md","filePath":"browse.md"}'),i={name:"browse.md"},n=r('

COCONUT online - Browse

Cheming and Computational Metabolomics logo

Molecule Search Functionality

Our advanced molecule search engine provides a robust set of features for users to search for and identify chemical compounds through various methods. Below is a detailed overview of the search functionalities available.

  • Molecule Name: Users can search for molecules by entering any widely recognized name, such as IUPAC, trivial, or synonym names. The search engine will identify compounds that contain the inputted name in their title.

InChI-IUPAC (International Chemical Identifier)

  • InChI Search: The InChI is a non-proprietary identifier for chemical substances that is widely used in electronic data sources. It expresses chemical structures in terms of atomic connectivity, tautomeric state, isotopes, stereochemistry, and electronic charge in order to produce a string of machine-readable characters unique to the particular molecule. Therefore, when InChl name is entered, the software output will be a unique inputted compound with all required characteristics.
  • InChIKey: The InChIKey is a 25-character hashed version of the full InChI, designed to allow for easy web searches of chemical compounds. InChIKeys consist of 14 characters resulting from a hash of the connectivity information from the full InChI string, followed by a hyphen, followed by 8 characters resulting from a hash of the remaining layers of the InChI, followed by a single character indicating the version of InChI used, followed by single checksum character. Therefore, when the user enters the InChl key, the software output will be a single compound that is recognized by a particular InChl key.
  • Molecular Formula: The molecular formula is a type of chemical formula that shows the kinds of atoms and the number of each kind in a single molecule of a particular compound. The molecular formula doesn’t show any information about the molecule structure. The structures and characteristics of compounds with the same molecular formula may vary significantly. Hence, by entering a molecular formula into the search bar, the software output will be a group of compounds with specified atoms and their numbers within a single molecule.

Coconut ID

  • Unique Identifier: Each natural product in our database is assigned a unique Coconut ID, which can be used for quick and precise searches exclusively on COCONUT.
  • Visual Structure Search: Users can search for compounds by providing a visual depiction of their structure. The vast number of functional groups often causes issues to name the compound appropriately. Therefore, usage of structure search is a great way to discover all characteristics of a compound just by providing its visual depiction. The search engine recognizes InChI and canonical SMILES formats.
  • InChI Structural Formulas: The search engine recognizes different types of InChI structural formulas, including expanded, condensed, and skeletal formulas.

    • Expanded Structural Formula: Shows all of the bonds connecting all of the atoms within the compound.
    • Condensed Structural Formula: Shows the symbols of atoms in order as they appear in the molecule's structure while most of the bond dashes are excluded. The vertical bonds are always excluded, while horizontal bonds may be included to specify polyatomic groups. If there is a repetition of a polyatomic group in the chain, parentheses are used to enclose the polyatomic group. The subscript number on the right side of the parentheses represents the number of repetitions of the particular group. The proper condensed structural formula should be written on a single horizontal line without branching in any direction.
    • Skeletal Formula: Represents the carbon skeleton and function groups attached to it. In the skeletal formula, carbon atoms and hydrogen atoms attached to them are not shown. The bonds between carbon lines are presented as well as bonds to functional groups.
  • Canonical SMILES Structural Formulas: The canonical SMILES structure is a unique string that can be used as a universal identifier for a specific chemical structure including stereochemistry of a compound. Therefore, canonical SMILES provides a unique form for any particular molecule. The user can choose a convenient option and then proceed with the structure drawing.

    The 3D structure of the molecule is commonly used for the description of simple molecules. In this type of structure drawing, all types of covalent bonds are presented with respect to their spatial orientation. The usage of models is the best way to pursue a 3D structure drawing. The valence shell repulsion pair theory proposes five main models of simple molecules: linear, trigonal planar, tetrahedral, trigonal bipyramidal, and octahedral.

  • Partial Structure Search: Users can search for compounds by entering a known substructure using InChI or SMILES formats. The engine supports three algorithms:
    • Default (Ullmann Algorithm): Utilizes a backtracking procedure with a refinement step to reduce the search space. This refinement is the most important step of the algorithm. It evaluates the surrounding of every node in the database molecules and compares them with the entered substructure.
    • Depth-First (DF) Pattern: The DF algorithm executes the search operation of the entered molecule in a depth-first manner (bond by bond). Therefore, this algorithm utilizes backtracking search iterating over the bonds of entered molecules.
    • Vento-Foggia Algorithm: The Vento-Foggia algorithm iteratively extends a partial solution using a set of feasibility criteria to decide whether to extend or backtrack. In the Ullmann algorithm, the node-atom mapping is fixed in every step. In contrast, the Vento-Foggia algorithm iteratively adds node-atom pairs to a current solution. In that way, this algorithm directly discovers the topology of the substructure and seeks for all natural products that contain the entered substructure.
  • Tanimoto Threshold: The search engine finds compounds with a similarity score (Sab) greater than or equal to the specified Tanimoto coefficient. This allows users to find compounds closely related to the query structure.
  • Molecular Descriptors and Structural Properties: The advanced search feature enables users to search by specific molecular descriptors, which quantify physical and chemical characteristics. Users can also choose to search within specific data sources compiled in our database.

These search functionalities are designed to cater to various needs, from simple name-based searches to complex structural and substructural queries, ensuring comprehensive and accurate retrieval of chemical information.

',25),s=[n];function c(l,h,u,d,m,f){return t(),a("div",null,s)}const b=e(i,[["render",c]]);export{g as __pageData,b as default}; diff --git a/docs/.vitepress/dist/assets/browse.md.IMFZCDVC.lean.js b/docs/.vitepress/dist/assets/browse.md.IMFZCDVC.lean.js new file mode 100644 index 00000000..95d77423 --- /dev/null +++ b/docs/.vitepress/dist/assets/browse.md.IMFZCDVC.lean.js @@ -0,0 +1 @@ +import{_ as e,c as a,o as t,a1 as r,a2 as o}from"./chunks/framework.D0pIZSx4.js";const g=JSON.parse('{"title":"COCONUT online - Browse","description":"","frontmatter":{},"headers":[],"relativePath":"browse.md","filePath":"browse.md"}'),i={name:"browse.md"},n=r("",25),s=[n];function c(l,h,u,d,m,f){return t(),a("div",null,s)}const b=e(i,[["render",c]]);export{g as __pageData,b as default}; diff --git a/docs/.vitepress/dist/assets/chunks/framework.D0pIZSx4.js b/docs/.vitepress/dist/assets/chunks/framework.D0pIZSx4.js new file mode 100644 index 00000000..927df1cd --- /dev/null +++ b/docs/.vitepress/dist/assets/chunks/framework.D0pIZSx4.js @@ -0,0 +1,17 @@ +/** +* @vue/shared v3.4.27 +* (c) 2018-present Yuxi (Evan) You and Vue contributors +* @license MIT +**//*! #__NO_SIDE_EFFECTS__ */function fs(e,t){const n=new Set(e.split(","));return s=>n.has(s)}const te={},gt=[],xe=()=>{},ci=()=>!1,Vt=e=>e.charCodeAt(0)===111&&e.charCodeAt(1)===110&&(e.charCodeAt(2)>122||e.charCodeAt(2)<97),ds=e=>e.startsWith("onUpdate:"),re=Object.assign,hs=(e,t)=>{const n=e.indexOf(t);n>-1&&e.splice(n,1)},ai=Object.prototype.hasOwnProperty,Y=(e,t)=>ai.call(e,t),U=Array.isArray,mt=e=>mn(e)==="[object Map]",Lr=e=>mn(e)==="[object Set]",K=e=>typeof e=="function",se=e=>typeof e=="string",ut=e=>typeof e=="symbol",Z=e=>e!==null&&typeof e=="object",Ir=e=>(Z(e)||K(e))&&K(e.then)&&K(e.catch),Pr=Object.prototype.toString,mn=e=>Pr.call(e),ui=e=>mn(e).slice(8,-1),Mr=e=>mn(e)==="[object Object]",ps=e=>se(e)&&e!=="NaN"&&e[0]!=="-"&&""+parseInt(e,10)===e,_t=fs(",key,ref,ref_for,ref_key,onVnodeBeforeMount,onVnodeMounted,onVnodeBeforeUpdate,onVnodeUpdated,onVnodeBeforeUnmount,onVnodeUnmounted"),_n=e=>{const t=Object.create(null);return n=>t[n]||(t[n]=e(n))},fi=/-(\w)/g,Ne=_n(e=>e.replace(fi,(t,n)=>n?n.toUpperCase():"")),di=/\B([A-Z])/g,ft=_n(e=>e.replace(di,"-$1").toLowerCase()),yn=_n(e=>e.charAt(0).toUpperCase()+e.slice(1)),nn=_n(e=>e?`on${yn(e)}`:""),Je=(e,t)=>!Object.is(e,t),Fn=(e,t)=>{for(let n=0;n{Object.defineProperty(e,t,{configurable:!0,enumerable:!1,writable:s,value:n})},hi=e=>{const t=parseFloat(e);return isNaN(t)?e:t},pi=e=>{const t=se(e)?Number(e):NaN;return isNaN(t)?e:t};let js;const Fr=()=>js||(js=typeof globalThis<"u"?globalThis:typeof self<"u"?self:typeof window<"u"?window:typeof global<"u"?global:{});function gs(e){if(U(e)){const t={};for(let n=0;n{if(n){const s=n.split(mi);s.length>1&&(t[s[0].trim()]=s[1].trim())}}),t}function ms(e){let t="";if(se(e))t=e;else if(U(e))for(let n=0;nse(e)?e:e==null?"":U(e)||Z(e)&&(e.toString===Pr||!K(e.toString))?JSON.stringify(e,Hr,2):String(e),Hr=(e,t)=>t&&t.__v_isRef?Hr(e,t.value):mt(t)?{[`Map(${t.size})`]:[...t.entries()].reduce((n,[s,r],o)=>(n[$n(s,o)+" =>"]=r,n),{})}:Lr(t)?{[`Set(${t.size})`]:[...t.values()].map(n=>$n(n))}:ut(t)?$n(t):Z(t)&&!U(t)&&!Mr(t)?String(t):t,$n=(e,t="")=>{var n;return ut(e)?`Symbol(${(n=e.description)!=null?n:t})`:e};/** +* @vue/reactivity v3.4.27 +* (c) 2018-present Yuxi (Evan) You and Vue contributors +* @license MIT +**/let we;class wi{constructor(t=!1){this.detached=t,this._active=!0,this.effects=[],this.cleanups=[],this.parent=we,!t&&we&&(this.index=(we.scopes||(we.scopes=[])).push(this)-1)}get active(){return this._active}run(t){if(this._active){const n=we;try{return we=this,t()}finally{we=n}}}on(){we=this}off(){we=this.parent}stop(t){if(this._active){let n,s;for(n=0,s=this.effects.length;n=4))break}this._dirtyLevel===1&&(this._dirtyLevel=0),et()}return this._dirtyLevel>=4}set dirty(t){this._dirtyLevel=t?4:0}run(){if(this._dirtyLevel=0,!this.active)return this.fn();let t=ze,n=lt;try{return ze=!0,lt=this,this._runnings++,Vs(this),this.fn()}finally{Ds(this),this._runnings--,lt=n,ze=t}}stop(){this.active&&(Vs(this),Ds(this),this.onStop&&this.onStop(),this.active=!1)}}function xi(e){return e.value}function Vs(e){e._trackId++,e._depsLength=0}function Ds(e){if(e.deps.length>e._depsLength){for(let t=e._depsLength;t{const n=new Map;return n.cleanup=e,n.computed=t,n},cn=new WeakMap,ct=Symbol(""),ts=Symbol("");function be(e,t,n){if(ze&<){let s=cn.get(e);s||cn.set(e,s=new Map);let r=s.get(n);r||s.set(n,r=kr(()=>s.delete(n))),Ur(lt,r)}}function He(e,t,n,s,r,o){const i=cn.get(e);if(!i)return;let l=[];if(t==="clear")l=[...i.values()];else if(n==="length"&&U(e)){const c=Number(s);i.forEach((u,d)=>{(d==="length"||!ut(d)&&d>=c)&&l.push(u)})}else switch(n!==void 0&&l.push(i.get(n)),t){case"add":U(e)?ps(n)&&l.push(i.get("length")):(l.push(i.get(ct)),mt(e)&&l.push(i.get(ts)));break;case"delete":U(e)||(l.push(i.get(ct)),mt(e)&&l.push(i.get(ts)));break;case"set":mt(e)&&l.push(i.get(ct));break}ys();for(const c of l)c&&Br(c,4);bs()}function Si(e,t){const n=cn.get(e);return n&&n.get(t)}const Ti=fs("__proto__,__v_isRef,__isVue"),Kr=new Set(Object.getOwnPropertyNames(Symbol).filter(e=>e!=="arguments"&&e!=="caller").map(e=>Symbol[e]).filter(ut)),Us=Ai();function Ai(){const e={};return["includes","indexOf","lastIndexOf"].forEach(t=>{e[t]=function(...n){const s=J(this);for(let o=0,i=this.length;o{e[t]=function(...n){Ze(),ys();const s=J(this)[t].apply(this,n);return bs(),et(),s}}),e}function Ri(e){ut(e)||(e=String(e));const t=J(this);return be(t,"has",e),t.hasOwnProperty(e)}class Wr{constructor(t=!1,n=!1){this._isReadonly=t,this._isShallow=n}get(t,n,s){const r=this._isReadonly,o=this._isShallow;if(n==="__v_isReactive")return!r;if(n==="__v_isReadonly")return r;if(n==="__v_isShallow")return o;if(n==="__v_raw")return s===(r?o?Ui:Xr:o?zr:Gr).get(t)||Object.getPrototypeOf(t)===Object.getPrototypeOf(s)?t:void 0;const i=U(t);if(!r){if(i&&Y(Us,n))return Reflect.get(Us,n,s);if(n==="hasOwnProperty")return Ri}const l=Reflect.get(t,n,s);return(ut(n)?Kr.has(n):Ti(n))||(r||be(t,"get",n),o)?l:pe(l)?i&&ps(n)?l:l.value:Z(l)?r?wn(l):vn(l):l}}class qr extends Wr{constructor(t=!1){super(!1,t)}set(t,n,s,r){let o=t[n];if(!this._isShallow){const c=Mt(o);if(!an(s)&&!Mt(s)&&(o=J(o),s=J(s)),!U(t)&&pe(o)&&!pe(s))return c?!1:(o.value=s,!0)}const i=U(t)&&ps(n)?Number(n)e,bn=e=>Reflect.getPrototypeOf(e);function kt(e,t,n=!1,s=!1){e=e.__v_raw;const r=J(e),o=J(t);n||(Je(t,o)&&be(r,"get",t),be(r,"get",o));const{has:i}=bn(r),l=s?vs:n?Cs:Nt;if(i.call(r,t))return l(e.get(t));if(i.call(r,o))return l(e.get(o));e!==r&&e.get(t)}function Kt(e,t=!1){const n=this.__v_raw,s=J(n),r=J(e);return t||(Je(e,r)&&be(s,"has",e),be(s,"has",r)),e===r?n.has(e):n.has(e)||n.has(r)}function Wt(e,t=!1){return e=e.__v_raw,!t&&be(J(e),"iterate",ct),Reflect.get(e,"size",e)}function Bs(e){e=J(e);const t=J(this);return bn(t).has.call(t,e)||(t.add(e),He(t,"add",e,e)),this}function ks(e,t){t=J(t);const n=J(this),{has:s,get:r}=bn(n);let o=s.call(n,e);o||(e=J(e),o=s.call(n,e));const i=r.call(n,e);return n.set(e,t),o?Je(t,i)&&He(n,"set",e,t):He(n,"add",e,t),this}function Ks(e){const t=J(this),{has:n,get:s}=bn(t);let r=n.call(t,e);r||(e=J(e),r=n.call(t,e)),s&&s.call(t,e);const o=t.delete(e);return r&&He(t,"delete",e,void 0),o}function Ws(){const e=J(this),t=e.size!==0,n=e.clear();return t&&He(e,"clear",void 0,void 0),n}function qt(e,t){return function(s,r){const o=this,i=o.__v_raw,l=J(i),c=t?vs:e?Cs:Nt;return!e&&be(l,"iterate",ct),i.forEach((u,d)=>s.call(r,c(u),c(d),o))}}function Gt(e,t,n){return function(...s){const r=this.__v_raw,o=J(r),i=mt(o),l=e==="entries"||e===Symbol.iterator&&i,c=e==="keys"&&i,u=r[e](...s),d=n?vs:t?Cs:Nt;return!t&&be(o,"iterate",c?ts:ct),{next(){const{value:h,done:b}=u.next();return b?{value:h,done:b}:{value:l?[d(h[0]),d(h[1])]:d(h),done:b}},[Symbol.iterator](){return this}}}}function De(e){return function(...t){return e==="delete"?!1:e==="clear"?void 0:this}}function Mi(){const e={get(o){return kt(this,o)},get size(){return Wt(this)},has:Kt,add:Bs,set:ks,delete:Ks,clear:Ws,forEach:qt(!1,!1)},t={get(o){return kt(this,o,!1,!0)},get size(){return Wt(this)},has:Kt,add:Bs,set:ks,delete:Ks,clear:Ws,forEach:qt(!1,!0)},n={get(o){return kt(this,o,!0)},get size(){return Wt(this,!0)},has(o){return Kt.call(this,o,!0)},add:De("add"),set:De("set"),delete:De("delete"),clear:De("clear"),forEach:qt(!0,!1)},s={get(o){return kt(this,o,!0,!0)},get size(){return Wt(this,!0)},has(o){return Kt.call(this,o,!0)},add:De("add"),set:De("set"),delete:De("delete"),clear:De("clear"),forEach:qt(!0,!0)};return["keys","values","entries",Symbol.iterator].forEach(o=>{e[o]=Gt(o,!1,!1),n[o]=Gt(o,!0,!1),t[o]=Gt(o,!1,!0),s[o]=Gt(o,!0,!0)}),[e,n,t,s]}const[Ni,Fi,$i,Hi]=Mi();function ws(e,t){const n=t?e?Hi:$i:e?Fi:Ni;return(s,r,o)=>r==="__v_isReactive"?!e:r==="__v_isReadonly"?e:r==="__v_raw"?s:Reflect.get(Y(n,r)&&r in s?n:s,r,o)}const ji={get:ws(!1,!1)},Vi={get:ws(!1,!0)},Di={get:ws(!0,!1)};const Gr=new WeakMap,zr=new WeakMap,Xr=new WeakMap,Ui=new WeakMap;function Bi(e){switch(e){case"Object":case"Array":return 1;case"Map":case"Set":case"WeakMap":case"WeakSet":return 2;default:return 0}}function ki(e){return e.__v_skip||!Object.isExtensible(e)?0:Bi(ui(e))}function vn(e){return Mt(e)?e:Es(e,!1,Li,ji,Gr)}function Ki(e){return Es(e,!1,Pi,Vi,zr)}function wn(e){return Es(e,!0,Ii,Di,Xr)}function Es(e,t,n,s,r){if(!Z(e)||e.__v_raw&&!(t&&e.__v_isReactive))return e;const o=r.get(e);if(o)return o;const i=ki(e);if(i===0)return e;const l=new Proxy(e,i===2?s:n);return r.set(e,l),l}function At(e){return Mt(e)?At(e.__v_raw):!!(e&&e.__v_isReactive)}function Mt(e){return!!(e&&e.__v_isReadonly)}function an(e){return!!(e&&e.__v_isShallow)}function Yr(e){return e?!!e.__v_raw:!1}function J(e){const t=e&&e.__v_raw;return t?J(t):e}function sn(e){return Object.isExtensible(e)&&Nr(e,"__v_skip",!0),e}const Nt=e=>Z(e)?vn(e):e,Cs=e=>Z(e)?wn(e):e;class Jr{constructor(t,n,s,r){this.getter=t,this._setter=n,this.dep=void 0,this.__v_isRef=!0,this.__v_isReadonly=!1,this.effect=new _s(()=>t(this._value),()=>Rt(this,this.effect._dirtyLevel===2?2:3)),this.effect.computed=this,this.effect.active=this._cacheable=!r,this.__v_isReadonly=s}get value(){const t=J(this);return(!t._cacheable||t.effect.dirty)&&Je(t._value,t._value=t.effect.run())&&Rt(t,4),xs(t),t.effect._dirtyLevel>=2&&Rt(t,2),t._value}set value(t){this._setter(t)}get _dirty(){return this.effect.dirty}set _dirty(t){this.effect.dirty=t}}function Wi(e,t,n=!1){let s,r;const o=K(e);return o?(s=e,r=xe):(s=e.get,r=e.set),new Jr(s,r,o||!r,n)}function xs(e){var t;ze&<&&(e=J(e),Ur(lt,(t=e.dep)!=null?t:e.dep=kr(()=>e.dep=void 0,e instanceof Jr?e:void 0)))}function Rt(e,t=4,n){e=J(e);const s=e.dep;s&&Br(s,t)}function pe(e){return!!(e&&e.__v_isRef===!0)}function ae(e){return Zr(e,!1)}function Qr(e){return Zr(e,!0)}function Zr(e,t){return pe(e)?e:new qi(e,t)}class qi{constructor(t,n){this.__v_isShallow=n,this.dep=void 0,this.__v_isRef=!0,this._rawValue=n?t:J(t),this._value=n?t:Nt(t)}get value(){return xs(this),this._value}set value(t){const n=this.__v_isShallow||an(t)||Mt(t);t=n?t:J(t),Je(t,this._rawValue)&&(this._rawValue=t,this._value=n?t:Nt(t),Rt(this,4))}}function eo(e){return pe(e)?e.value:e}const Gi={get:(e,t,n)=>eo(Reflect.get(e,t,n)),set:(e,t,n,s)=>{const r=e[t];return pe(r)&&!pe(n)?(r.value=n,!0):Reflect.set(e,t,n,s)}};function to(e){return At(e)?e:new Proxy(e,Gi)}class zi{constructor(t){this.dep=void 0,this.__v_isRef=!0;const{get:n,set:s}=t(()=>xs(this),()=>Rt(this));this._get=n,this._set=s}get value(){return this._get()}set value(t){this._set(t)}}function Xi(e){return new zi(e)}class Yi{constructor(t,n,s){this._object=t,this._key=n,this._defaultValue=s,this.__v_isRef=!0}get value(){const t=this._object[this._key];return t===void 0?this._defaultValue:t}set value(t){this._object[this._key]=t}get dep(){return Si(J(this._object),this._key)}}class Ji{constructor(t){this._getter=t,this.__v_isRef=!0,this.__v_isReadonly=!0}get value(){return this._getter()}}function Qi(e,t,n){return pe(e)?e:K(e)?new Ji(e):Z(e)&&arguments.length>1?Zi(e,t,n):ae(e)}function Zi(e,t,n){const s=e[t];return pe(s)?s:new Yi(e,t,n)}/** +* @vue/runtime-core v3.4.27 +* (c) 2018-present Yuxi (Evan) You and Vue contributors +* @license MIT +**/function Xe(e,t,n,s){try{return s?e(...s):e()}catch(r){En(r,t,n)}}function Se(e,t,n,s){if(K(e)){const r=Xe(e,t,n,s);return r&&Ir(r)&&r.catch(o=>{En(o,t,n)}),r}if(U(e)){const r=[];for(let o=0;o>>1,r=de[s],o=$t(r);oPe&&de.splice(t,1)}function sl(e){U(e)?yt.push(...e):(!Ke||!Ke.includes(e,e.allowRecurse?ot+1:ot))&&yt.push(e),so()}function qs(e,t,n=Ft?Pe+1:0){for(;n$t(n)-$t(s));if(yt.length=0,Ke){Ke.push(...t);return}for(Ke=t,ot=0;ote.id==null?1/0:e.id,rl=(e,t)=>{const n=$t(e)-$t(t);if(n===0){if(e.pre&&!t.pre)return-1;if(t.pre&&!e.pre)return 1}return n};function ro(e){ns=!1,Ft=!0,de.sort(rl);try{for(Pe=0;Pese(S)?S.trim():S)),h&&(r=n.map(hi))}let l,c=s[l=nn(t)]||s[l=nn(Ne(t))];!c&&o&&(c=s[l=nn(ft(t))]),c&&Se(c,e,6,r);const u=s[l+"Once"];if(u){if(!e.emitted)e.emitted={};else if(e.emitted[l])return;e.emitted[l]=!0,Se(u,e,6,r)}}function oo(e,t,n=!1){const s=t.emitsCache,r=s.get(e);if(r!==void 0)return r;const o=e.emits;let i={},l=!1;if(!K(e)){const c=u=>{const d=oo(u,t,!0);d&&(l=!0,re(i,d))};!n&&t.mixins.length&&t.mixins.forEach(c),e.extends&&c(e.extends),e.mixins&&e.mixins.forEach(c)}return!o&&!l?(Z(e)&&s.set(e,null),null):(U(o)?o.forEach(c=>i[c]=null):re(i,o),Z(e)&&s.set(e,i),i)}function xn(e,t){return!e||!Vt(t)?!1:(t=t.slice(2).replace(/Once$/,""),Y(e,t[0].toLowerCase()+t.slice(1))||Y(e,ft(t))||Y(e,t))}let he=null,Sn=null;function fn(e){const t=he;return he=e,Sn=e&&e.type.__scopeId||null,t}function ja(e){Sn=e}function Va(){Sn=null}function il(e,t=he,n){if(!t||e._n)return e;const s=(...r)=>{s._d&&rr(-1);const o=fn(t);let i;try{i=e(...r)}finally{fn(o),s._d&&rr(1)}return i};return s._n=!0,s._c=!0,s._d=!0,s}function Hn(e){const{type:t,vnode:n,proxy:s,withProxy:r,propsOptions:[o],slots:i,attrs:l,emit:c,render:u,renderCache:d,props:h,data:b,setupState:S,ctx:P,inheritAttrs:M}=e,B=fn(e);let q,G;try{if(n.shapeFlag&4){const m=r||s,I=m;q=Ae(u.call(I,m,d,h,S,b,P)),G=l}else{const m=t;q=Ae(m.length>1?m(h,{attrs:l,slots:i,emit:c}):m(h,null)),G=t.props?l:ll(l)}}catch(m){Pt.length=0,En(m,e,1),q=ue(ye)}let g=q;if(G&&M!==!1){const m=Object.keys(G),{shapeFlag:I}=g;m.length&&I&7&&(o&&m.some(ds)&&(G=cl(G,o)),g=Qe(g,G,!1,!0))}return n.dirs&&(g=Qe(g,null,!1,!0),g.dirs=g.dirs?g.dirs.concat(n.dirs):n.dirs),n.transition&&(g.transition=n.transition),q=g,fn(B),q}const ll=e=>{let t;for(const n in e)(n==="class"||n==="style"||Vt(n))&&((t||(t={}))[n]=e[n]);return t},cl=(e,t)=>{const n={};for(const s in e)(!ds(s)||!(s.slice(9)in t))&&(n[s]=e[s]);return n};function al(e,t,n){const{props:s,children:r,component:o}=e,{props:i,children:l,patchFlag:c}=t,u=o.emitsOptions;if(t.dirs||t.transition)return!0;if(n&&c>=0){if(c&1024)return!0;if(c&16)return s?Gs(s,i,u):!!i;if(c&8){const d=t.dynamicProps;for(let h=0;he.__isSuspense;function ao(e,t){t&&t.pendingBranch?U(e)?t.effects.push(...e):t.effects.push(e):sl(e)}const dl=Symbol.for("v-scx"),hl=()=>vt(dl);function uo(e,t){return Tn(e,null,t)}function Ba(e,t){return Tn(e,null,{flush:"post"})}const zt={};function Me(e,t,n){return Tn(e,t,n)}function Tn(e,t,{immediate:n,deep:s,flush:r,once:o,onTrack:i,onTrigger:l}=te){if(t&&o){const O=t;t=(...V)=>{O(...V),I()}}const c=ce,u=O=>s===!0?O:pt(O,s===!1?1:void 0);let d,h=!1,b=!1;if(pe(e)?(d=()=>e.value,h=an(e)):At(e)?(d=()=>u(e),h=!0):U(e)?(b=!0,h=e.some(O=>At(O)||an(O)),d=()=>e.map(O=>{if(pe(O))return O.value;if(At(O))return u(O);if(K(O))return Xe(O,c,2)})):K(e)?t?d=()=>Xe(e,c,2):d=()=>(S&&S(),Se(e,c,3,[P])):d=xe,t&&s){const O=d;d=()=>pt(O())}let S,P=O=>{S=g.onStop=()=>{Xe(O,c,4),S=g.onStop=void 0}},M;if(In)if(P=xe,t?n&&Se(t,c,3,[d(),b?[]:void 0,P]):d(),r==="sync"){const O=hl();M=O.__watcherHandles||(O.__watcherHandles=[])}else return xe;let B=b?new Array(e.length).fill(zt):zt;const q=()=>{if(!(!g.active||!g.dirty))if(t){const O=g.run();(s||h||(b?O.some((V,A)=>Je(V,B[A])):Je(O,B)))&&(S&&S(),Se(t,c,3,[O,B===zt?void 0:b&&B[0]===zt?[]:B,P]),B=O)}else g.run()};q.allowRecurse=!!t;let G;r==="sync"?G=q:r==="post"?G=()=>me(q,c&&c.suspense):(q.pre=!0,c&&(q.id=c.uid),G=()=>Ts(q));const g=new _s(d,xe,G),m=jr(),I=()=>{g.stop(),m&&hs(m.effects,g)};return t?n?q():B=g.run():r==="post"?me(g.run.bind(g),c&&c.suspense):g.run(),M&&M.push(I),I}function pl(e,t,n){const s=this.proxy,r=se(e)?e.includes(".")?fo(s,e):()=>s[e]:e.bind(s,s);let o;K(t)?o=t:(o=t.handler,n=t);const i=Dt(this),l=Tn(r,o.bind(s),n);return i(),l}function fo(e,t){const n=t.split(".");return()=>{let s=e;for(let r=0;r{pt(s,t,n)});else if(Mr(e))for(const s in e)pt(e[s],t,n);return e}function Ie(e,t,n,s){const r=e.dirs,o=t&&t.dirs;for(let i=0;i{e.isMounted=!0}),yo(()=>{e.isUnmounting=!0}),e}const Ee=[Function,Array],ho={mode:String,appear:Boolean,persisted:Boolean,onBeforeEnter:Ee,onEnter:Ee,onAfterEnter:Ee,onEnterCancelled:Ee,onBeforeLeave:Ee,onLeave:Ee,onAfterLeave:Ee,onLeaveCancelled:Ee,onBeforeAppear:Ee,onAppear:Ee,onAfterAppear:Ee,onAppearCancelled:Ee},ml={name:"BaseTransition",props:ho,setup(e,{slots:t}){const n=Ln(),s=gl();return()=>{const r=t.default&&go(t.default(),!0);if(!r||!r.length)return;let o=r[0];if(r.length>1){for(const b of r)if(b.type!==ye){o=b;break}}const i=J(e),{mode:l}=i;if(s.isLeaving)return jn(o);const c=Xs(o);if(!c)return jn(o);const u=ss(c,i,s,n);rs(c,u);const d=n.subTree,h=d&&Xs(d);if(h&&h.type!==ye&&!it(c,h)){const b=ss(h,i,s,n);if(rs(h,b),l==="out-in"&&c.type!==ye)return s.isLeaving=!0,b.afterLeave=()=>{s.isLeaving=!1,n.update.active!==!1&&(n.effect.dirty=!0,n.update())},jn(o);l==="in-out"&&c.type!==ye&&(b.delayLeave=(S,P,M)=>{const B=po(s,h);B[String(h.key)]=h,S[We]=()=>{P(),S[We]=void 0,delete u.delayedLeave},u.delayedLeave=M})}return o}}},_l=ml;function po(e,t){const{leavingVNodes:n}=e;let s=n.get(t.type);return s||(s=Object.create(null),n.set(t.type,s)),s}function ss(e,t,n,s){const{appear:r,mode:o,persisted:i=!1,onBeforeEnter:l,onEnter:c,onAfterEnter:u,onEnterCancelled:d,onBeforeLeave:h,onLeave:b,onAfterLeave:S,onLeaveCancelled:P,onBeforeAppear:M,onAppear:B,onAfterAppear:q,onAppearCancelled:G}=t,g=String(e.key),m=po(n,e),I=(A,j)=>{A&&Se(A,s,9,j)},O=(A,j)=>{const w=j[1];I(A,j),U(A)?A.every(D=>D.length<=1)&&w():A.length<=1&&w()},V={mode:o,persisted:i,beforeEnter(A){let j=l;if(!n.isMounted)if(r)j=M||l;else return;A[We]&&A[We](!0);const w=m[g];w&&it(e,w)&&w.el[We]&&w.el[We](),I(j,[A])},enter(A){let j=c,w=u,D=d;if(!n.isMounted)if(r)j=B||c,w=q||u,D=G||d;else return;let x=!1;const W=A[Xt]=oe=>{x||(x=!0,oe?I(D,[A]):I(w,[A]),V.delayedLeave&&V.delayedLeave(),A[Xt]=void 0)};j?O(j,[A,W]):W()},leave(A,j){const w=String(e.key);if(A[Xt]&&A[Xt](!0),n.isUnmounting)return j();I(h,[A]);let D=!1;const x=A[We]=W=>{D||(D=!0,j(),W?I(P,[A]):I(S,[A]),A[We]=void 0,m[w]===e&&delete m[w])};m[w]=e,b?O(b,[A,x]):x()},clone(A){return ss(A,t,n,s)}};return V}function jn(e){if(An(e))return e=Qe(e),e.children=null,e}function Xs(e){if(!An(e))return e;const{shapeFlag:t,children:n}=e;if(n){if(t&16)return n[0];if(t&32&&K(n.default))return n.default()}}function rs(e,t){e.shapeFlag&6&&e.component?rs(e.component.subTree,t):e.shapeFlag&128?(e.ssContent.transition=t.clone(e.ssContent),e.ssFallback.transition=t.clone(e.ssFallback)):e.transition=t}function go(e,t=!1,n){let s=[],r=0;for(let o=0;o1)for(let o=0;o!!e.type.__asyncLoader,An=e=>e.type.__isKeepAlive;function yl(e,t){_o(e,"a",t)}function bl(e,t){_o(e,"da",t)}function _o(e,t,n=ce){const s=e.__wdc||(e.__wdc=()=>{let r=n;for(;r;){if(r.isDeactivated)return;r=r.parent}return e()});if(Rn(t,s,n),n){let r=n.parent;for(;r&&r.parent;)An(r.parent.vnode)&&vl(s,t,n,r),r=r.parent}}function vl(e,t,n,s){const r=Rn(t,e,s,!0);On(()=>{hs(s[t],r)},n)}function Rn(e,t,n=ce,s=!1){if(n){const r=n[e]||(n[e]=[]),o=t.__weh||(t.__weh=(...i)=>{if(n.isUnmounted)return;Ze();const l=Dt(n),c=Se(t,n,e,i);return l(),et(),c});return s?r.unshift(o):r.push(o),o}}const Ve=e=>(t,n=ce)=>(!In||e==="sp")&&Rn(e,(...s)=>t(...s),n),wl=Ve("bm"),Ct=Ve("m"),El=Ve("bu"),Cl=Ve("u"),yo=Ve("bum"),On=Ve("um"),xl=Ve("sp"),Sl=Ve("rtg"),Tl=Ve("rtc");function Al(e,t=ce){Rn("ec",e,t)}function ka(e,t,n,s){let r;const o=n;if(U(e)||se(e)){r=new Array(e.length);for(let i=0,l=e.length;it(i,l,void 0,o));else{const i=Object.keys(e);r=new Array(i.length);for(let l=0,c=i.length;lpn(t)?!(t.type===ye||t.type===_e&&!bo(t.children)):!0)?e:null}function Wa(e,t){const n={};for(const s in e)n[/[A-Z]/.test(s)?`on:${s}`:nn(s)]=e[s];return n}const os=e=>e?Vo(e)?Ls(e)||e.proxy:os(e.parent):null,Ot=re(Object.create(null),{$:e=>e,$el:e=>e.vnode.el,$data:e=>e.data,$props:e=>e.props,$attrs:e=>e.attrs,$slots:e=>e.slots,$refs:e=>e.refs,$parent:e=>os(e.parent),$root:e=>os(e.root),$emit:e=>e.emit,$options:e=>As(e),$forceUpdate:e=>e.f||(e.f=()=>{e.effect.dirty=!0,Ts(e.update)}),$nextTick:e=>e.n||(e.n=Cn.bind(e.proxy)),$watch:e=>pl.bind(e)}),Vn=(e,t)=>e!==te&&!e.__isScriptSetup&&Y(e,t),Rl={get({_:e},t){if(t==="__v_skip")return!0;const{ctx:n,setupState:s,data:r,props:o,accessCache:i,type:l,appContext:c}=e;let u;if(t[0]!=="$"){const S=i[t];if(S!==void 0)switch(S){case 1:return s[t];case 2:return r[t];case 4:return n[t];case 3:return o[t]}else{if(Vn(s,t))return i[t]=1,s[t];if(r!==te&&Y(r,t))return i[t]=2,r[t];if((u=e.propsOptions[0])&&Y(u,t))return i[t]=3,o[t];if(n!==te&&Y(n,t))return i[t]=4,n[t];is&&(i[t]=0)}}const d=Ot[t];let h,b;if(d)return t==="$attrs"&&be(e.attrs,"get",""),d(e);if((h=l.__cssModules)&&(h=h[t]))return h;if(n!==te&&Y(n,t))return i[t]=4,n[t];if(b=c.config.globalProperties,Y(b,t))return b[t]},set({_:e},t,n){const{data:s,setupState:r,ctx:o}=e;return Vn(r,t)?(r[t]=n,!0):s!==te&&Y(s,t)?(s[t]=n,!0):Y(e.props,t)||t[0]==="$"&&t.slice(1)in e?!1:(o[t]=n,!0)},has({_:{data:e,setupState:t,accessCache:n,ctx:s,appContext:r,propsOptions:o}},i){let l;return!!n[i]||e!==te&&Y(e,i)||Vn(t,i)||(l=o[0])&&Y(l,i)||Y(s,i)||Y(Ot,i)||Y(r.config.globalProperties,i)},defineProperty(e,t,n){return n.get!=null?e._.accessCache[t]=0:Y(n,"value")&&this.set(e,t,n.value,null),Reflect.defineProperty(e,t,n)}};function qa(){return Ol().slots}function Ol(){const e=Ln();return e.setupContext||(e.setupContext=Uo(e))}function Ys(e){return U(e)?e.reduce((t,n)=>(t[n]=null,t),{}):e}let is=!0;function Ll(e){const t=As(e),n=e.proxy,s=e.ctx;is=!1,t.beforeCreate&&Js(t.beforeCreate,e,"bc");const{data:r,computed:o,methods:i,watch:l,provide:c,inject:u,created:d,beforeMount:h,mounted:b,beforeUpdate:S,updated:P,activated:M,deactivated:B,beforeDestroy:q,beforeUnmount:G,destroyed:g,unmounted:m,render:I,renderTracked:O,renderTriggered:V,errorCaptured:A,serverPrefetch:j,expose:w,inheritAttrs:D,components:x,directives:W,filters:oe}=t;if(u&&Il(u,s,null),i)for(const X in i){const F=i[X];K(F)&&(s[X]=F.bind(n))}if(r){const X=r.call(n,n);Z(X)&&(e.data=vn(X))}if(is=!0,o)for(const X in o){const F=o[X],Fe=K(F)?F.bind(n,n):K(F.get)?F.get.bind(n,n):xe,Ut=!K(F)&&K(F.set)?F.set.bind(n):xe,tt=ne({get:Fe,set:Ut});Object.defineProperty(s,X,{enumerable:!0,configurable:!0,get:()=>tt.value,set:Oe=>tt.value=Oe})}if(l)for(const X in l)vo(l[X],s,n,X);if(c){const X=K(c)?c.call(n):c;Reflect.ownKeys(X).forEach(F=>{Hl(F,X[F])})}d&&Js(d,e,"c");function $(X,F){U(F)?F.forEach(Fe=>X(Fe.bind(n))):F&&X(F.bind(n))}if($(wl,h),$(Ct,b),$(El,S),$(Cl,P),$(yl,M),$(bl,B),$(Al,A),$(Tl,O),$(Sl,V),$(yo,G),$(On,m),$(xl,j),U(w))if(w.length){const X=e.exposed||(e.exposed={});w.forEach(F=>{Object.defineProperty(X,F,{get:()=>n[F],set:Fe=>n[F]=Fe})})}else e.exposed||(e.exposed={});I&&e.render===xe&&(e.render=I),D!=null&&(e.inheritAttrs=D),x&&(e.components=x),W&&(e.directives=W)}function Il(e,t,n=xe){U(e)&&(e=ls(e));for(const s in e){const r=e[s];let o;Z(r)?"default"in r?o=vt(r.from||s,r.default,!0):o=vt(r.from||s):o=vt(r),pe(o)?Object.defineProperty(t,s,{enumerable:!0,configurable:!0,get:()=>o.value,set:i=>o.value=i}):t[s]=o}}function Js(e,t,n){Se(U(e)?e.map(s=>s.bind(t.proxy)):e.bind(t.proxy),t,n)}function vo(e,t,n,s){const r=s.includes(".")?fo(n,s):()=>n[s];if(se(e)){const o=t[e];K(o)&&Me(r,o)}else if(K(e))Me(r,e.bind(n));else if(Z(e))if(U(e))e.forEach(o=>vo(o,t,n,s));else{const o=K(e.handler)?e.handler.bind(n):t[e.handler];K(o)&&Me(r,o,e)}}function As(e){const t=e.type,{mixins:n,extends:s}=t,{mixins:r,optionsCache:o,config:{optionMergeStrategies:i}}=e.appContext,l=o.get(t);let c;return l?c=l:!r.length&&!n&&!s?c=t:(c={},r.length&&r.forEach(u=>dn(c,u,i,!0)),dn(c,t,i)),Z(t)&&o.set(t,c),c}function dn(e,t,n,s=!1){const{mixins:r,extends:o}=t;o&&dn(e,o,n,!0),r&&r.forEach(i=>dn(e,i,n,!0));for(const i in t)if(!(s&&i==="expose")){const l=Pl[i]||n&&n[i];e[i]=l?l(e[i],t[i]):t[i]}return e}const Pl={data:Qs,props:Zs,emits:Zs,methods:Tt,computed:Tt,beforeCreate:ge,created:ge,beforeMount:ge,mounted:ge,beforeUpdate:ge,updated:ge,beforeDestroy:ge,beforeUnmount:ge,destroyed:ge,unmounted:ge,activated:ge,deactivated:ge,errorCaptured:ge,serverPrefetch:ge,components:Tt,directives:Tt,watch:Nl,provide:Qs,inject:Ml};function Qs(e,t){return t?e?function(){return re(K(e)?e.call(this,this):e,K(t)?t.call(this,this):t)}:t:e}function Ml(e,t){return Tt(ls(e),ls(t))}function ls(e){if(U(e)){const t={};for(let n=0;n1)return n&&K(t)?t.call(s&&s.proxy):t}}const Eo={},Co=()=>Object.create(Eo),xo=e=>Object.getPrototypeOf(e)===Eo;function jl(e,t,n,s=!1){const r={},o=Co();e.propsDefaults=Object.create(null),So(e,t,r,o);for(const i in e.propsOptions[0])i in r||(r[i]=void 0);n?e.props=s?r:Ki(r):e.type.props?e.props=r:e.props=o,e.attrs=o}function Vl(e,t,n,s){const{props:r,attrs:o,vnode:{patchFlag:i}}=e,l=J(r),[c]=e.propsOptions;let u=!1;if((s||i>0)&&!(i&16)){if(i&8){const d=e.vnode.dynamicProps;for(let h=0;h{c=!0;const[b,S]=To(h,t,!0);re(i,b),S&&l.push(...S)};!n&&t.mixins.length&&t.mixins.forEach(d),e.extends&&d(e.extends),e.mixins&&e.mixins.forEach(d)}if(!o&&!c)return Z(e)&&s.set(e,gt),gt;if(U(o))for(let d=0;d-1,S[1]=M<0||P-1||Y(S,"default"))&&l.push(h)}}}const u=[i,l];return Z(e)&&s.set(e,u),u}function er(e){return e[0]!=="$"&&!_t(e)}function tr(e){return e===null?"null":typeof e=="function"?e.name||"":typeof e=="object"&&e.constructor&&e.constructor.name||""}function nr(e,t){return tr(e)===tr(t)}function sr(e,t){return U(t)?t.findIndex(n=>nr(n,e)):K(t)&&nr(t,e)?0:-1}const Ao=e=>e[0]==="_"||e==="$stable",Rs=e=>U(e)?e.map(Ae):[Ae(e)],Dl=(e,t,n)=>{if(t._n)return t;const s=il((...r)=>Rs(t(...r)),n);return s._c=!1,s},Ro=(e,t,n)=>{const s=e._ctx;for(const r in e){if(Ao(r))continue;const o=e[r];if(K(o))t[r]=Dl(r,o,s);else if(o!=null){const i=Rs(o);t[r]=()=>i}}},Oo=(e,t)=>{const n=Rs(t);e.slots.default=()=>n},Ul=(e,t)=>{const n=e.slots=Co();if(e.vnode.shapeFlag&32){const s=t._;s?(re(n,t),Nr(n,"_",s,!0)):Ro(t,n)}else t&&Oo(e,t)},Bl=(e,t,n)=>{const{vnode:s,slots:r}=e;let o=!0,i=te;if(s.shapeFlag&32){const l=t._;l?n&&l===1?o=!1:(re(r,t),!n&&l===1&&delete r._):(o=!t.$stable,Ro(t,r)),i=t}else t&&(Oo(e,t),i={default:1});if(o)for(const l in r)!Ao(l)&&i[l]==null&&delete r[l]};function hn(e,t,n,s,r=!1){if(U(e)){e.forEach((b,S)=>hn(b,t&&(U(t)?t[S]:t),n,s,r));return}if(bt(s)&&!r)return;const o=s.shapeFlag&4?Ls(s.component)||s.component.proxy:s.el,i=r?null:o,{i:l,r:c}=e,u=t&&t.r,d=l.refs===te?l.refs={}:l.refs,h=l.setupState;if(u!=null&&u!==c&&(se(u)?(d[u]=null,Y(h,u)&&(h[u]=null)):pe(u)&&(u.value=null)),K(c))Xe(c,l,12,[i,d]);else{const b=se(c),S=pe(c);if(b||S){const P=()=>{if(e.f){const M=b?Y(h,c)?h[c]:d[c]:c.value;r?U(M)&&hs(M,o):U(M)?M.includes(o)||M.push(o):b?(d[c]=[o],Y(h,c)&&(h[c]=d[c])):(c.value=[o],e.k&&(d[e.k]=c.value))}else b?(d[c]=i,Y(h,c)&&(h[c]=i)):S&&(c.value=i,e.k&&(d[e.k]=i))};i?(P.id=-1,me(P,n)):P()}}}let Ue=!1;const kl=e=>e.namespaceURI.includes("svg")&&e.tagName!=="foreignObject",Kl=e=>e.namespaceURI.includes("MathML"),Yt=e=>{if(kl(e))return"svg";if(Kl(e))return"mathml"},Jt=e=>e.nodeType===8;function Wl(e){const{mt:t,p:n,o:{patchProp:s,createText:r,nextSibling:o,parentNode:i,remove:l,insert:c,createComment:u}}=e,d=(g,m)=>{if(!m.hasChildNodes()){n(null,g,m),un(),m._vnode=g;return}Ue=!1,h(m.firstChild,g,null,null,null),un(),m._vnode=g,Ue&&console.error("Hydration completed but contains mismatches.")},h=(g,m,I,O,V,A=!1)=>{A=A||!!m.dynamicChildren;const j=Jt(g)&&g.data==="[",w=()=>M(g,m,I,O,V,j),{type:D,ref:x,shapeFlag:W,patchFlag:oe}=m;let le=g.nodeType;m.el=g,oe===-2&&(A=!1,m.dynamicChildren=null);let $=null;switch(D){case wt:le!==3?m.children===""?(c(m.el=r(""),i(g),g),$=g):$=w():(g.data!==m.children&&(Ue=!0,g.data=m.children),$=o(g));break;case ye:G(g)?($=o(g),q(m.el=g.content.firstChild,g,I)):le!==8||j?$=w():$=o(g);break;case It:if(j&&(g=o(g),le=g.nodeType),le===1||le===3){$=g;const X=!m.children.length;for(let F=0;F{A=A||!!m.dynamicChildren;const{type:j,props:w,patchFlag:D,shapeFlag:x,dirs:W,transition:oe}=m,le=j==="input"||j==="option";if(le||D!==-1){W&&Ie(m,null,I,"created");let $=!1;if(G(g)){$=Lo(O,oe)&&I&&I.vnode.props&&I.vnode.props.appear;const F=g.content.firstChild;$&&oe.beforeEnter(F),q(F,g,I),m.el=g=F}if(x&16&&!(w&&(w.innerHTML||w.textContent))){let F=S(g.firstChild,m,g,I,O,V,A);for(;F;){Ue=!0;const Fe=F;F=F.nextSibling,l(Fe)}}else x&8&&g.textContent!==m.children&&(Ue=!0,g.textContent=m.children);if(w)if(le||!A||D&48)for(const F in w)(le&&(F.endsWith("value")||F==="indeterminate")||Vt(F)&&!_t(F)||F[0]===".")&&s(g,F,null,w[F],void 0,void 0,I);else w.onClick&&s(g,"onClick",null,w.onClick,void 0,void 0,I);let X;(X=w&&w.onVnodeBeforeMount)&&Ce(X,I,m),W&&Ie(m,null,I,"beforeMount"),((X=w&&w.onVnodeMounted)||W||$)&&ao(()=>{X&&Ce(X,I,m),$&&oe.enter(g),W&&Ie(m,null,I,"mounted")},O)}return g.nextSibling},S=(g,m,I,O,V,A,j)=>{j=j||!!m.dynamicChildren;const w=m.children,D=w.length;for(let x=0;x{const{slotScopeIds:j}=m;j&&(V=V?V.concat(j):j);const w=i(g),D=S(o(g),m,w,I,O,V,A);return D&&Jt(D)&&D.data==="]"?o(m.anchor=D):(Ue=!0,c(m.anchor=u("]"),w,D),D)},M=(g,m,I,O,V,A)=>{if(Ue=!0,m.el=null,A){const D=B(g);for(;;){const x=o(g);if(x&&x!==D)l(x);else break}}const j=o(g),w=i(g);return l(g),n(null,m,w,j,I,O,Yt(w),V),j},B=(g,m="[",I="]")=>{let O=0;for(;g;)if(g=o(g),g&&Jt(g)&&(g.data===m&&O++,g.data===I)){if(O===0)return o(g);O--}return g},q=(g,m,I)=>{const O=m.parentNode;O&&O.replaceChild(g,m);let V=I;for(;V;)V.vnode.el===m&&(V.vnode.el=V.subTree.el=g),V=V.parent},G=g=>g.nodeType===1&&g.tagName.toLowerCase()==="template";return[d,h]}const me=ao;function ql(e){return Gl(e,Wl)}function Gl(e,t){const n=Fr();n.__VUE__=!0;const{insert:s,remove:r,patchProp:o,createElement:i,createText:l,createComment:c,setText:u,setElementText:d,parentNode:h,nextSibling:b,setScopeId:S=xe,insertStaticContent:P}=e,M=(a,f,p,_=null,y=null,C=null,R=void 0,E=null,T=!!f.dynamicChildren)=>{if(a===f)return;a&&!it(a,f)&&(_=Bt(a),Oe(a,y,C,!0),a=null),f.patchFlag===-2&&(T=!1,f.dynamicChildren=null);const{type:v,ref:L,shapeFlag:H}=f;switch(v){case wt:B(a,f,p,_);break;case ye:q(a,f,p,_);break;case It:a==null&&G(f,p,_,R);break;case _e:x(a,f,p,_,y,C,R,E,T);break;default:H&1?I(a,f,p,_,y,C,R,E,T):H&6?W(a,f,p,_,y,C,R,E,T):(H&64||H&128)&&v.process(a,f,p,_,y,C,R,E,T,dt)}L!=null&&y&&hn(L,a&&a.ref,C,f||a,!f)},B=(a,f,p,_)=>{if(a==null)s(f.el=l(f.children),p,_);else{const y=f.el=a.el;f.children!==a.children&&u(y,f.children)}},q=(a,f,p,_)=>{a==null?s(f.el=c(f.children||""),p,_):f.el=a.el},G=(a,f,p,_)=>{[a.el,a.anchor]=P(a.children,f,p,_,a.el,a.anchor)},g=({el:a,anchor:f},p,_)=>{let y;for(;a&&a!==f;)y=b(a),s(a,p,_),a=y;s(f,p,_)},m=({el:a,anchor:f})=>{let p;for(;a&&a!==f;)p=b(a),r(a),a=p;r(f)},I=(a,f,p,_,y,C,R,E,T)=>{f.type==="svg"?R="svg":f.type==="math"&&(R="mathml"),a==null?O(f,p,_,y,C,R,E,T):j(a,f,y,C,R,E,T)},O=(a,f,p,_,y,C,R,E)=>{let T,v;const{props:L,shapeFlag:H,transition:N,dirs:k}=a;if(T=a.el=i(a.type,C,L&&L.is,L),H&8?d(T,a.children):H&16&&A(a.children,T,null,_,y,Dn(a,C),R,E),k&&Ie(a,null,_,"created"),V(T,a,a.scopeId,R,_),L){for(const Q in L)Q!=="value"&&!_t(Q)&&o(T,Q,null,L[Q],C,a.children,_,y,$e);"value"in L&&o(T,"value",null,L.value,C),(v=L.onVnodeBeforeMount)&&Ce(v,_,a)}k&&Ie(a,null,_,"beforeMount");const z=Lo(y,N);z&&N.beforeEnter(T),s(T,f,p),((v=L&&L.onVnodeMounted)||z||k)&&me(()=>{v&&Ce(v,_,a),z&&N.enter(T),k&&Ie(a,null,_,"mounted")},y)},V=(a,f,p,_,y)=>{if(p&&S(a,p),_)for(let C=0;C<_.length;C++)S(a,_[C]);if(y){let C=y.subTree;if(f===C){const R=y.vnode;V(a,R,R.scopeId,R.slotScopeIds,y.parent)}}},A=(a,f,p,_,y,C,R,E,T=0)=>{for(let v=T;v{const E=f.el=a.el;let{patchFlag:T,dynamicChildren:v,dirs:L}=f;T|=a.patchFlag&16;const H=a.props||te,N=f.props||te;let k;if(p&&nt(p,!1),(k=N.onVnodeBeforeUpdate)&&Ce(k,p,f,a),L&&Ie(f,a,p,"beforeUpdate"),p&&nt(p,!0),v?w(a.dynamicChildren,v,E,p,_,Dn(f,y),C):R||F(a,f,E,null,p,_,Dn(f,y),C,!1),T>0){if(T&16)D(E,f,H,N,p,_,y);else if(T&2&&H.class!==N.class&&o(E,"class",null,N.class,y),T&4&&o(E,"style",H.style,N.style,y),T&8){const z=f.dynamicProps;for(let Q=0;Q{k&&Ce(k,p,f,a),L&&Ie(f,a,p,"updated")},_)},w=(a,f,p,_,y,C,R)=>{for(let E=0;E{if(p!==_){if(p!==te)for(const E in p)!_t(E)&&!(E in _)&&o(a,E,p[E],null,R,f.children,y,C,$e);for(const E in _){if(_t(E))continue;const T=_[E],v=p[E];T!==v&&E!=="value"&&o(a,E,v,T,R,f.children,y,C,$e)}"value"in _&&o(a,"value",p.value,_.value,R)}},x=(a,f,p,_,y,C,R,E,T)=>{const v=f.el=a?a.el:l(""),L=f.anchor=a?a.anchor:l("");let{patchFlag:H,dynamicChildren:N,slotScopeIds:k}=f;k&&(E=E?E.concat(k):k),a==null?(s(v,p,_),s(L,p,_),A(f.children||[],p,L,y,C,R,E,T)):H>0&&H&64&&N&&a.dynamicChildren?(w(a.dynamicChildren,N,p,y,C,R,E),(f.key!=null||y&&f===y.subTree)&&Io(a,f,!0)):F(a,f,p,L,y,C,R,E,T)},W=(a,f,p,_,y,C,R,E,T)=>{f.slotScopeIds=E,a==null?f.shapeFlag&512?y.ctx.activate(f,p,_,R,T):oe(f,p,_,y,C,R,T):le(a,f,T)},oe=(a,f,p,_,y,C,R)=>{const E=a.component=nc(a,_,y);if(An(a)&&(E.ctx.renderer=dt),sc(E),E.asyncDep){if(y&&y.registerDep(E,$),!a.el){const T=E.subTree=ue(ye);q(null,T,f,p)}}else $(E,a,f,p,y,C,R)},le=(a,f,p)=>{const _=f.component=a.component;if(al(a,f,p))if(_.asyncDep&&!_.asyncResolved){X(_,f,p);return}else _.next=f,nl(_.update),_.effect.dirty=!0,_.update();else f.el=a.el,_.vnode=f},$=(a,f,p,_,y,C,R)=>{const E=()=>{if(a.isMounted){let{next:L,bu:H,u:N,parent:k,vnode:z}=a;{const ht=Po(a);if(ht){L&&(L.el=z.el,X(a,L,R)),ht.asyncDep.then(()=>{a.isUnmounted||E()});return}}let Q=L,ee;nt(a,!1),L?(L.el=z.el,X(a,L,R)):L=z,H&&Fn(H),(ee=L.props&&L.props.onVnodeBeforeUpdate)&&Ce(ee,k,L,z),nt(a,!0);const ie=Hn(a),Te=a.subTree;a.subTree=ie,M(Te,ie,h(Te.el),Bt(Te),a,y,C),L.el=ie.el,Q===null&&ul(a,ie.el),N&&me(N,y),(ee=L.props&&L.props.onVnodeUpdated)&&me(()=>Ce(ee,k,L,z),y)}else{let L;const{el:H,props:N}=f,{bm:k,m:z,parent:Q}=a,ee=bt(f);if(nt(a,!1),k&&Fn(k),!ee&&(L=N&&N.onVnodeBeforeMount)&&Ce(L,Q,f),nt(a,!0),H&&Nn){const ie=()=>{a.subTree=Hn(a),Nn(H,a.subTree,a,y,null)};ee?f.type.__asyncLoader().then(()=>!a.isUnmounted&&ie()):ie()}else{const ie=a.subTree=Hn(a);M(null,ie,p,_,a,y,C),f.el=ie.el}if(z&&me(z,y),!ee&&(L=N&&N.onVnodeMounted)){const ie=f;me(()=>Ce(L,Q,ie),y)}(f.shapeFlag&256||Q&&bt(Q.vnode)&&Q.vnode.shapeFlag&256)&&a.a&&me(a.a,y),a.isMounted=!0,f=p=_=null}},T=a.effect=new _s(E,xe,()=>Ts(v),a.scope),v=a.update=()=>{T.dirty&&T.run()};v.id=a.uid,nt(a,!0),v()},X=(a,f,p)=>{f.component=a;const _=a.vnode.props;a.vnode=f,a.next=null,Vl(a,f.props,_,p),Bl(a,f.children,p),Ze(),qs(a),et()},F=(a,f,p,_,y,C,R,E,T=!1)=>{const v=a&&a.children,L=a?a.shapeFlag:0,H=f.children,{patchFlag:N,shapeFlag:k}=f;if(N>0){if(N&128){Ut(v,H,p,_,y,C,R,E,T);return}else if(N&256){Fe(v,H,p,_,y,C,R,E,T);return}}k&8?(L&16&&$e(v,y,C),H!==v&&d(p,H)):L&16?k&16?Ut(v,H,p,_,y,C,R,E,T):$e(v,y,C,!0):(L&8&&d(p,""),k&16&&A(H,p,_,y,C,R,E,T))},Fe=(a,f,p,_,y,C,R,E,T)=>{a=a||gt,f=f||gt;const v=a.length,L=f.length,H=Math.min(v,L);let N;for(N=0;NL?$e(a,y,C,!0,!1,H):A(f,p,_,y,C,R,E,T,H)},Ut=(a,f,p,_,y,C,R,E,T)=>{let v=0;const L=f.length;let H=a.length-1,N=L-1;for(;v<=H&&v<=N;){const k=a[v],z=f[v]=T?qe(f[v]):Ae(f[v]);if(it(k,z))M(k,z,p,null,y,C,R,E,T);else break;v++}for(;v<=H&&v<=N;){const k=a[H],z=f[N]=T?qe(f[N]):Ae(f[N]);if(it(k,z))M(k,z,p,null,y,C,R,E,T);else break;H--,N--}if(v>H){if(v<=N){const k=N+1,z=kN)for(;v<=H;)Oe(a[v],y,C,!0),v++;else{const k=v,z=v,Q=new Map;for(v=z;v<=N;v++){const ve=f[v]=T?qe(f[v]):Ae(f[v]);ve.key!=null&&Q.set(ve.key,v)}let ee,ie=0;const Te=N-z+1;let ht=!1,Fs=0;const xt=new Array(Te);for(v=0;v=Te){Oe(ve,y,C,!0);continue}let Le;if(ve.key!=null)Le=Q.get(ve.key);else for(ee=z;ee<=N;ee++)if(xt[ee-z]===0&&it(ve,f[ee])){Le=ee;break}Le===void 0?Oe(ve,y,C,!0):(xt[Le-z]=v+1,Le>=Fs?Fs=Le:ht=!0,M(ve,f[Le],p,null,y,C,R,E,T),ie++)}const $s=ht?zl(xt):gt;for(ee=$s.length-1,v=Te-1;v>=0;v--){const ve=z+v,Le=f[ve],Hs=ve+1{const{el:C,type:R,transition:E,children:T,shapeFlag:v}=a;if(v&6){tt(a.component.subTree,f,p,_);return}if(v&128){a.suspense.move(f,p,_);return}if(v&64){R.move(a,f,p,dt);return}if(R===_e){s(C,f,p);for(let H=0;HE.enter(C),y);else{const{leave:H,delayLeave:N,afterLeave:k}=E,z=()=>s(C,f,p),Q=()=>{H(C,()=>{z(),k&&k()})};N?N(C,z,Q):Q()}else s(C,f,p)},Oe=(a,f,p,_=!1,y=!1)=>{const{type:C,props:R,ref:E,children:T,dynamicChildren:v,shapeFlag:L,patchFlag:H,dirs:N}=a;if(E!=null&&hn(E,null,p,a,!0),L&256){f.ctx.deactivate(a);return}const k=L&1&&N,z=!bt(a);let Q;if(z&&(Q=R&&R.onVnodeBeforeUnmount)&&Ce(Q,f,a),L&6)li(a.component,p,_);else{if(L&128){a.suspense.unmount(p,_);return}k&&Ie(a,null,f,"beforeUnmount"),L&64?a.type.remove(a,f,p,y,dt,_):v&&(C!==_e||H>0&&H&64)?$e(v,f,p,!1,!0):(C===_e&&H&384||!y&&L&16)&&$e(T,f,p),_&&Ms(a)}(z&&(Q=R&&R.onVnodeUnmounted)||k)&&me(()=>{Q&&Ce(Q,f,a),k&&Ie(a,null,f,"unmounted")},p)},Ms=a=>{const{type:f,el:p,anchor:_,transition:y}=a;if(f===_e){ii(p,_);return}if(f===It){m(a);return}const C=()=>{r(p),y&&!y.persisted&&y.afterLeave&&y.afterLeave()};if(a.shapeFlag&1&&y&&!y.persisted){const{leave:R,delayLeave:E}=y,T=()=>R(p,C);E?E(a.el,C,T):T()}else C()},ii=(a,f)=>{let p;for(;a!==f;)p=b(a),r(a),a=p;r(f)},li=(a,f,p)=>{const{bum:_,scope:y,update:C,subTree:R,um:E}=a;_&&Fn(_),y.stop(),C&&(C.active=!1,Oe(R,a,f,p)),E&&me(E,f),me(()=>{a.isUnmounted=!0},f),f&&f.pendingBranch&&!f.isUnmounted&&a.asyncDep&&!a.asyncResolved&&a.suspenseId===f.pendingId&&(f.deps--,f.deps===0&&f.resolve())},$e=(a,f,p,_=!1,y=!1,C=0)=>{for(let R=C;Ra.shapeFlag&6?Bt(a.component.subTree):a.shapeFlag&128?a.suspense.next():b(a.anchor||a.el);let Pn=!1;const Ns=(a,f,p)=>{a==null?f._vnode&&Oe(f._vnode,null,null,!0):M(f._vnode||null,a,f,null,null,null,p),Pn||(Pn=!0,qs(),un(),Pn=!1),f._vnode=a},dt={p:M,um:Oe,m:tt,r:Ms,mt:oe,mc:A,pc:F,pbc:w,n:Bt,o:e};let Mn,Nn;return t&&([Mn,Nn]=t(dt)),{render:Ns,hydrate:Mn,createApp:$l(Ns,Mn)}}function Dn({type:e,props:t},n){return n==="svg"&&e==="foreignObject"||n==="mathml"&&e==="annotation-xml"&&t&&t.encoding&&t.encoding.includes("html")?void 0:n}function nt({effect:e,update:t},n){e.allowRecurse=t.allowRecurse=n}function Lo(e,t){return(!e||e&&!e.pendingBranch)&&t&&!t.persisted}function Io(e,t,n=!1){const s=e.children,r=t.children;if(U(s)&&U(r))for(let o=0;o>1,e[n[l]]0&&(t[s]=n[o-1]),n[o]=s)}}for(o=n.length,i=n[o-1];o-- >0;)n[o]=i,i=t[i];return n}function Po(e){const t=e.subTree.component;if(t)return t.asyncDep&&!t.asyncResolved?t:Po(t)}const Xl=e=>e.__isTeleport,_e=Symbol.for("v-fgt"),wt=Symbol.for("v-txt"),ye=Symbol.for("v-cmt"),It=Symbol.for("v-stc"),Pt=[];let Re=null;function Mo(e=!1){Pt.push(Re=e?null:[])}function Yl(){Pt.pop(),Re=Pt[Pt.length-1]||null}let Ht=1;function rr(e){Ht+=e}function No(e){return e.dynamicChildren=Ht>0?Re||gt:null,Yl(),Ht>0&&Re&&Re.push(e),e}function Ga(e,t,n,s,r,o){return No(Ho(e,t,n,s,r,o,!0))}function Fo(e,t,n,s,r){return No(ue(e,t,n,s,r,!0))}function pn(e){return e?e.__v_isVNode===!0:!1}function it(e,t){return e.type===t.type&&e.key===t.key}const $o=({key:e})=>e??null,rn=({ref:e,ref_key:t,ref_for:n})=>(typeof e=="number"&&(e=""+e),e!=null?se(e)||pe(e)||K(e)?{i:he,r:e,k:t,f:!!n}:e:null);function Ho(e,t=null,n=null,s=0,r=null,o=e===_e?0:1,i=!1,l=!1){const c={__v_isVNode:!0,__v_skip:!0,type:e,props:t,key:t&&$o(t),ref:t&&rn(t),scopeId:Sn,slotScopeIds:null,children:n,component:null,suspense:null,ssContent:null,ssFallback:null,dirs:null,transition:null,el:null,anchor:null,target:null,targetAnchor:null,staticCount:0,shapeFlag:o,patchFlag:s,dynamicProps:r,dynamicChildren:null,appContext:null,ctx:he};return l?(Os(c,n),o&128&&e.normalize(c)):n&&(c.shapeFlag|=se(n)?8:16),Ht>0&&!i&&Re&&(c.patchFlag>0||o&6)&&c.patchFlag!==32&&Re.push(c),c}const ue=Jl;function Jl(e,t=null,n=null,s=0,r=null,o=!1){if((!e||e===lo)&&(e=ye),pn(e)){const l=Qe(e,t,!0);return n&&Os(l,n),Ht>0&&!o&&Re&&(l.shapeFlag&6?Re[Re.indexOf(e)]=l:Re.push(l)),l.patchFlag|=-2,l}if(lc(e)&&(e=e.__vccOpts),t){t=Ql(t);let{class:l,style:c}=t;l&&!se(l)&&(t.class=ms(l)),Z(c)&&(Yr(c)&&!U(c)&&(c=re({},c)),t.style=gs(c))}const i=se(e)?1:fl(e)?128:Xl(e)?64:Z(e)?4:K(e)?2:0;return Ho(e,t,n,s,r,i,o,!0)}function Ql(e){return e?Yr(e)||xo(e)?re({},e):e:null}function Qe(e,t,n=!1,s=!1){const{props:r,ref:o,patchFlag:i,children:l,transition:c}=e,u=t?Zl(r||{},t):r,d={__v_isVNode:!0,__v_skip:!0,type:e.type,props:u,key:u&&$o(u),ref:t&&t.ref?n&&o?U(o)?o.concat(rn(t)):[o,rn(t)]:rn(t):o,scopeId:e.scopeId,slotScopeIds:e.slotScopeIds,children:l,target:e.target,targetAnchor:e.targetAnchor,staticCount:e.staticCount,shapeFlag:e.shapeFlag,patchFlag:t&&e.type!==_e?i===-1?16:i|16:i,dynamicProps:e.dynamicProps,dynamicChildren:e.dynamicChildren,appContext:e.appContext,dirs:e.dirs,transition:c,component:e.component,suspense:e.suspense,ssContent:e.ssContent&&Qe(e.ssContent),ssFallback:e.ssFallback&&Qe(e.ssFallback),el:e.el,anchor:e.anchor,ctx:e.ctx,ce:e.ce};return c&&s&&(d.transition=c.clone(d)),d}function jo(e=" ",t=0){return ue(wt,null,e,t)}function za(e,t){const n=ue(It,null,e);return n.staticCount=t,n}function Xa(e="",t=!1){return t?(Mo(),Fo(ye,null,e)):ue(ye,null,e)}function Ae(e){return e==null||typeof e=="boolean"?ue(ye):U(e)?ue(_e,null,e.slice()):typeof e=="object"?qe(e):ue(wt,null,String(e))}function qe(e){return e.el===null&&e.patchFlag!==-1||e.memo?e:Qe(e)}function Os(e,t){let n=0;const{shapeFlag:s}=e;if(t==null)t=null;else if(U(t))n=16;else if(typeof t=="object")if(s&65){const r=t.default;r&&(r._c&&(r._d=!1),Os(e,r()),r._c&&(r._d=!0));return}else{n=32;const r=t._;!r&&!xo(t)?t._ctx=he:r===3&&he&&(he.slots._===1?t._=1:(t._=2,e.patchFlag|=1024))}else K(t)?(t={default:t,_ctx:he},n=32):(t=String(t),s&64?(n=16,t=[jo(t)]):n=8);e.children=t,e.shapeFlag|=n}function Zl(...e){const t={};for(let n=0;nce||he;let gn,as;{const e=Fr(),t=(n,s)=>{let r;return(r=e[n])||(r=e[n]=[]),r.push(s),o=>{r.length>1?r.forEach(i=>i(o)):r[0](o)}};gn=t("__VUE_INSTANCE_SETTERS__",n=>ce=n),as=t("__VUE_SSR_SETTERS__",n=>In=n)}const Dt=e=>{const t=ce;return gn(e),e.scope.on(),()=>{e.scope.off(),gn(t)}},or=()=>{ce&&ce.scope.off(),gn(null)};function Vo(e){return e.vnode.shapeFlag&4}let In=!1;function sc(e,t=!1){t&&as(t);const{props:n,children:s}=e.vnode,r=Vo(e);jl(e,n,r,t),Ul(e,s);const o=r?rc(e,t):void 0;return t&&as(!1),o}function rc(e,t){const n=e.type;e.accessCache=Object.create(null),e.proxy=new Proxy(e.ctx,Rl);const{setup:s}=n;if(s){const r=e.setupContext=s.length>1?Uo(e):null,o=Dt(e);Ze();const i=Xe(s,e,0,[e.props,r]);if(et(),o(),Ir(i)){if(i.then(or,or),t)return i.then(l=>{ir(e,l,t)}).catch(l=>{En(l,e,0)});e.asyncDep=i}else ir(e,i,t)}else Do(e,t)}function ir(e,t,n){K(t)?e.type.__ssrInlineRender?e.ssrRender=t:e.render=t:Z(t)&&(e.setupState=to(t)),Do(e,n)}let lr;function Do(e,t,n){const s=e.type;if(!e.render){if(!t&&lr&&!s.render){const r=s.template||As(e).template;if(r){const{isCustomElement:o,compilerOptions:i}=e.appContext.config,{delimiters:l,compilerOptions:c}=s,u=re(re({isCustomElement:o,delimiters:l},i),c);s.render=lr(r,u)}}e.render=s.render||xe}{const r=Dt(e);Ze();try{Ll(e)}finally{et(),r()}}}const oc={get(e,t){return be(e,"get",""),e[t]}};function Uo(e){const t=n=>{e.exposed=n||{}};return{attrs:new Proxy(e.attrs,oc),slots:e.slots,emit:e.emit,expose:t}}function Ls(e){if(e.exposed)return e.exposeProxy||(e.exposeProxy=new Proxy(to(sn(e.exposed)),{get(t,n){if(n in t)return t[n];if(n in Ot)return Ot[n](e)},has(t,n){return n in t||n in Ot}}))}function ic(e,t=!0){return K(e)?e.displayName||e.name:e.name||t&&e.__name}function lc(e){return K(e)&&"__vccOpts"in e}const ne=(e,t)=>Wi(e,t,In);function us(e,t,n){const s=arguments.length;return s===2?Z(t)&&!U(t)?pn(t)?ue(e,null,[t]):ue(e,t):ue(e,null,t):(s>3?n=Array.prototype.slice.call(arguments,2):s===3&&pn(n)&&(n=[n]),ue(e,t,n))}const cc="3.4.27";/** +* @vue/runtime-dom v3.4.27 +* (c) 2018-present Yuxi (Evan) You and Vue contributors +* @license MIT +**/const ac="http://www.w3.org/2000/svg",uc="http://www.w3.org/1998/Math/MathML",Ge=typeof document<"u"?document:null,cr=Ge&&Ge.createElement("template"),fc={insert:(e,t,n)=>{t.insertBefore(e,n||null)},remove:e=>{const t=e.parentNode;t&&t.removeChild(e)},createElement:(e,t,n,s)=>{const r=t==="svg"?Ge.createElementNS(ac,e):t==="mathml"?Ge.createElementNS(uc,e):Ge.createElement(e,n?{is:n}:void 0);return e==="select"&&s&&s.multiple!=null&&r.setAttribute("multiple",s.multiple),r},createText:e=>Ge.createTextNode(e),createComment:e=>Ge.createComment(e),setText:(e,t)=>{e.nodeValue=t},setElementText:(e,t)=>{e.textContent=t},parentNode:e=>e.parentNode,nextSibling:e=>e.nextSibling,querySelector:e=>Ge.querySelector(e),setScopeId(e,t){e.setAttribute(t,"")},insertStaticContent(e,t,n,s,r,o){const i=n?n.previousSibling:t.lastChild;if(r&&(r===o||r.nextSibling))for(;t.insertBefore(r.cloneNode(!0),n),!(r===o||!(r=r.nextSibling)););else{cr.innerHTML=s==="svg"?`${e}`:s==="mathml"?`${e}`:e;const l=cr.content;if(s==="svg"||s==="mathml"){const c=l.firstChild;for(;c.firstChild;)l.appendChild(c.firstChild);l.removeChild(c)}t.insertBefore(l,n)}return[i?i.nextSibling:t.firstChild,n?n.previousSibling:t.lastChild]}},Be="transition",St="animation",jt=Symbol("_vtc"),Bo=(e,{slots:t})=>us(_l,dc(e),t);Bo.displayName="Transition";const ko={name:String,type:String,css:{type:Boolean,default:!0},duration:[String,Number,Object],enterFromClass:String,enterActiveClass:String,enterToClass:String,appearFromClass:String,appearActiveClass:String,appearToClass:String,leaveFromClass:String,leaveActiveClass:String,leaveToClass:String};Bo.props=re({},ho,ko);const st=(e,t=[])=>{U(e)?e.forEach(n=>n(...t)):e&&e(...t)},ar=e=>e?U(e)?e.some(t=>t.length>1):e.length>1:!1;function dc(e){const t={};for(const x in e)x in ko||(t[x]=e[x]);if(e.css===!1)return t;const{name:n="v",type:s,duration:r,enterFromClass:o=`${n}-enter-from`,enterActiveClass:i=`${n}-enter-active`,enterToClass:l=`${n}-enter-to`,appearFromClass:c=o,appearActiveClass:u=i,appearToClass:d=l,leaveFromClass:h=`${n}-leave-from`,leaveActiveClass:b=`${n}-leave-active`,leaveToClass:S=`${n}-leave-to`}=e,P=hc(r),M=P&&P[0],B=P&&P[1],{onBeforeEnter:q,onEnter:G,onEnterCancelled:g,onLeave:m,onLeaveCancelled:I,onBeforeAppear:O=q,onAppear:V=G,onAppearCancelled:A=g}=t,j=(x,W,oe)=>{rt(x,W?d:l),rt(x,W?u:i),oe&&oe()},w=(x,W)=>{x._isLeaving=!1,rt(x,h),rt(x,S),rt(x,b),W&&W()},D=x=>(W,oe)=>{const le=x?V:G,$=()=>j(W,x,oe);st(le,[W,$]),ur(()=>{rt(W,x?c:o),ke(W,x?d:l),ar(le)||fr(W,s,M,$)})};return re(t,{onBeforeEnter(x){st(q,[x]),ke(x,o),ke(x,i)},onBeforeAppear(x){st(O,[x]),ke(x,c),ke(x,u)},onEnter:D(!1),onAppear:D(!0),onLeave(x,W){x._isLeaving=!0;const oe=()=>w(x,W);ke(x,h),ke(x,b),mc(),ur(()=>{x._isLeaving&&(rt(x,h),ke(x,S),ar(m)||fr(x,s,B,oe))}),st(m,[x,oe])},onEnterCancelled(x){j(x,!1),st(g,[x])},onAppearCancelled(x){j(x,!0),st(A,[x])},onLeaveCancelled(x){w(x),st(I,[x])}})}function hc(e){if(e==null)return null;if(Z(e))return[Un(e.enter),Un(e.leave)];{const t=Un(e);return[t,t]}}function Un(e){return pi(e)}function ke(e,t){t.split(/\s+/).forEach(n=>n&&e.classList.add(n)),(e[jt]||(e[jt]=new Set)).add(t)}function rt(e,t){t.split(/\s+/).forEach(s=>s&&e.classList.remove(s));const n=e[jt];n&&(n.delete(t),n.size||(e[jt]=void 0))}function ur(e){requestAnimationFrame(()=>{requestAnimationFrame(e)})}let pc=0;function fr(e,t,n,s){const r=e._endId=++pc,o=()=>{r===e._endId&&s()};if(n)return setTimeout(o,n);const{type:i,timeout:l,propCount:c}=gc(e,t);if(!i)return s();const u=i+"end";let d=0;const h=()=>{e.removeEventListener(u,b),o()},b=S=>{S.target===e&&++d>=c&&h()};setTimeout(()=>{d(n[P]||"").split(", "),r=s(`${Be}Delay`),o=s(`${Be}Duration`),i=dr(r,o),l=s(`${St}Delay`),c=s(`${St}Duration`),u=dr(l,c);let d=null,h=0,b=0;t===Be?i>0&&(d=Be,h=i,b=o.length):t===St?u>0&&(d=St,h=u,b=c.length):(h=Math.max(i,u),d=h>0?i>u?Be:St:null,b=d?d===Be?o.length:c.length:0);const S=d===Be&&/\b(transform|all)(,|$)/.test(s(`${Be}Property`).toString());return{type:d,timeout:h,propCount:b,hasTransform:S}}function dr(e,t){for(;e.lengthhr(n)+hr(e[s])))}function hr(e){return e==="auto"?0:Number(e.slice(0,-1).replace(",","."))*1e3}function mc(){return document.body.offsetHeight}function _c(e,t,n){const s=e[jt];s&&(t=(t?[t,...s]:[...s]).join(" ")),t==null?e.removeAttribute("class"):n?e.setAttribute("class",t):e.className=t}const pr=Symbol("_vod"),yc=Symbol("_vsh"),bc=Symbol(""),vc=/(^|;)\s*display\s*:/;function wc(e,t,n){const s=e.style,r=se(n);let o=!1;if(n&&!r){if(t)if(se(t))for(const i of t.split(";")){const l=i.slice(0,i.indexOf(":")).trim();n[l]==null&&on(s,l,"")}else for(const i in t)n[i]==null&&on(s,i,"");for(const i in n)i==="display"&&(o=!0),on(s,i,n[i])}else if(r){if(t!==n){const i=s[bc];i&&(n+=";"+i),s.cssText=n,o=vc.test(n)}}else t&&e.removeAttribute("style");pr in e&&(e[pr]=o?s.display:"",e[yc]&&(s.display="none"))}const gr=/\s*!important$/;function on(e,t,n){if(U(n))n.forEach(s=>on(e,t,s));else if(n==null&&(n=""),t.startsWith("--"))e.setProperty(t,n);else{const s=Ec(e,t);gr.test(n)?e.setProperty(ft(s),n.replace(gr,""),"important"):e[s]=n}}const mr=["Webkit","Moz","ms"],Bn={};function Ec(e,t){const n=Bn[t];if(n)return n;let s=Ne(t);if(s!=="filter"&&s in e)return Bn[t]=s;s=yn(s);for(let r=0;rkn||(Oc.then(()=>kn=0),kn=Date.now());function Ic(e,t){const n=s=>{if(!s._vts)s._vts=Date.now();else if(s._vts<=n.attached)return;Se(Pc(s,n.value),t,5,[s])};return n.value=e,n.attached=Lc(),n}function Pc(e,t){if(U(t)){const n=e.stopImmediatePropagation;return e.stopImmediatePropagation=()=>{n.call(e),e._stopped=!0},t.map(s=>r=>!r._stopped&&s&&s(r))}else return t}const vr=e=>e.charCodeAt(0)===111&&e.charCodeAt(1)===110&&e.charCodeAt(2)>96&&e.charCodeAt(2)<123,Mc=(e,t,n,s,r,o,i,l,c)=>{const u=r==="svg";t==="class"?_c(e,s,u):t==="style"?wc(e,n,s):Vt(t)?ds(t)||Ac(e,t,n,s,i):(t[0]==="."?(t=t.slice(1),!0):t[0]==="^"?(t=t.slice(1),!1):Nc(e,t,s,u))?xc(e,t,s,o,i,l,c):(t==="true-value"?e._trueValue=s:t==="false-value"&&(e._falseValue=s),Cc(e,t,s,u))};function Nc(e,t,n,s){if(s)return!!(t==="innerHTML"||t==="textContent"||t in e&&vr(t)&&K(n));if(t==="spellcheck"||t==="draggable"||t==="translate"||t==="form"||t==="list"&&e.tagName==="INPUT"||t==="type"&&e.tagName==="TEXTAREA")return!1;if(t==="width"||t==="height"){const r=e.tagName;if(r==="IMG"||r==="VIDEO"||r==="CANVAS"||r==="SOURCE")return!1}return vr(t)&&se(n)?!1:t in e}const Fc=["ctrl","shift","alt","meta"],$c={stop:e=>e.stopPropagation(),prevent:e=>e.preventDefault(),self:e=>e.target!==e.currentTarget,ctrl:e=>!e.ctrlKey,shift:e=>!e.shiftKey,alt:e=>!e.altKey,meta:e=>!e.metaKey,left:e=>"button"in e&&e.button!==0,middle:e=>"button"in e&&e.button!==1,right:e=>"button"in e&&e.button!==2,exact:(e,t)=>Fc.some(n=>e[`${n}Key`]&&!t.includes(n))},Ya=(e,t)=>{const n=e._withMods||(e._withMods={}),s=t.join(".");return n[s]||(n[s]=(r,...o)=>{for(let i=0;i{const n=e._withKeys||(e._withKeys={}),s=t.join(".");return n[s]||(n[s]=r=>{if(!("key"in r))return;const o=ft(r.key);if(t.some(i=>i===o||Hc[i]===o))return e(r)})},jc=re({patchProp:Mc},fc);let Kn,wr=!1;function Vc(){return Kn=wr?Kn:ql(jc),wr=!0,Kn}const Qa=(...e)=>{const t=Vc().createApp(...e),{mount:n}=t;return t.mount=s=>{const r=Uc(s);if(r)return n(r,!0,Dc(r))},t};function Dc(e){if(e instanceof SVGElement)return"svg";if(typeof MathMLElement=="function"&&e instanceof MathMLElement)return"mathml"}function Uc(e){return se(e)?document.querySelector(e):e}const Za=(e,t)=>{const n=e.__vccOpts||e;for(const[s,r]of t)n[s]=r;return n},Bc=window.__VP_SITE_DATA__;function Is(e){return jr()?(Ci(e),!0):!1}function Ye(e){return typeof e=="function"?e():eo(e)}const Ko=typeof window<"u"&&typeof document<"u";typeof WorkerGlobalScope<"u"&&globalThis instanceof WorkerGlobalScope;const kc=Object.prototype.toString,Kc=e=>kc.call(e)==="[object Object]",Wo=()=>{},Er=Wc();function Wc(){var e,t;return Ko&&((e=window==null?void 0:window.navigator)==null?void 0:e.userAgent)&&(/iP(ad|hone|od)/.test(window.navigator.userAgent)||((t=window==null?void 0:window.navigator)==null?void 0:t.maxTouchPoints)>2&&/iPad|Macintosh/.test(window==null?void 0:window.navigator.userAgent))}function qc(e,t){function n(...s){return new Promise((r,o)=>{Promise.resolve(e(()=>t.apply(this,s),{fn:t,thisArg:this,args:s})).then(r).catch(o)})}return n}const qo=e=>e();function Gc(e=qo){const t=ae(!0);function n(){t.value=!1}function s(){t.value=!0}const r=(...o)=>{t.value&&e(...o)};return{isActive:wn(t),pause:n,resume:s,eventFilter:r}}function zc(e){return Ln()}function Go(...e){if(e.length!==1)return Qi(...e);const t=e[0];return typeof t=="function"?wn(Xi(()=>({get:t,set:Wo}))):ae(t)}function Xc(e,t,n={}){const{eventFilter:s=qo,...r}=n;return Me(e,qc(s,t),r)}function Yc(e,t,n={}){const{eventFilter:s,...r}=n,{eventFilter:o,pause:i,resume:l,isActive:c}=Gc(s);return{stop:Xc(e,t,{...r,eventFilter:o}),pause:i,resume:l,isActive:c}}function Ps(e,t=!0,n){zc()?Ct(e,n):t?e():Cn(e)}function zo(e){var t;const n=Ye(e);return(t=n==null?void 0:n.$el)!=null?t:n}const je=Ko?window:void 0;function Et(...e){let t,n,s,r;if(typeof e[0]=="string"||Array.isArray(e[0])?([n,s,r]=e,t=je):[t,n,s,r]=e,!t)return Wo;Array.isArray(n)||(n=[n]),Array.isArray(s)||(s=[s]);const o=[],i=()=>{o.forEach(d=>d()),o.length=0},l=(d,h,b,S)=>(d.addEventListener(h,b,S),()=>d.removeEventListener(h,b,S)),c=Me(()=>[zo(t),Ye(r)],([d,h])=>{if(i(),!d)return;const b=Kc(h)?{...h}:h;o.push(...n.flatMap(S=>s.map(P=>l(d,S,P,b))))},{immediate:!0,flush:"post"}),u=()=>{c(),i()};return Is(u),u}function Jc(e){return typeof e=="function"?e:typeof e=="string"?t=>t.key===e:Array.isArray(e)?t=>e.includes(t.key):()=>!0}function eu(...e){let t,n,s={};e.length===3?(t=e[0],n=e[1],s=e[2]):e.length===2?typeof e[1]=="object"?(t=!0,n=e[0],s=e[1]):(t=e[0],n=e[1]):(t=!0,n=e[0]);const{target:r=je,eventName:o="keydown",passive:i=!1,dedupe:l=!1}=s,c=Jc(t);return Et(r,o,d=>{d.repeat&&Ye(l)||c(d)&&n(d)},i)}function Qc(){const e=ae(!1),t=Ln();return t&&Ct(()=>{e.value=!0},t),e}function Zc(e){const t=Qc();return ne(()=>(t.value,!!e()))}function Xo(e,t={}){const{window:n=je}=t,s=Zc(()=>n&&"matchMedia"in n&&typeof n.matchMedia=="function");let r;const o=ae(!1),i=u=>{o.value=u.matches},l=()=>{r&&("removeEventListener"in r?r.removeEventListener("change",i):r.removeListener(i))},c=uo(()=>{s.value&&(l(),r=n.matchMedia(Ye(e)),"addEventListener"in r?r.addEventListener("change",i):r.addListener(i),o.value=r.matches)});return Is(()=>{c(),l(),r=void 0}),o}const Qt=typeof globalThis<"u"?globalThis:typeof window<"u"?window:typeof global<"u"?global:typeof self<"u"?self:{},Zt="__vueuse_ssr_handlers__",ea=ta();function ta(){return Zt in Qt||(Qt[Zt]=Qt[Zt]||{}),Qt[Zt]}function Yo(e,t){return ea[e]||t}function na(e){return e==null?"any":e instanceof Set?"set":e instanceof Map?"map":e instanceof Date?"date":typeof e=="boolean"?"boolean":typeof e=="string"?"string":typeof e=="object"?"object":Number.isNaN(e)?"any":"number"}const sa={boolean:{read:e=>e==="true",write:e=>String(e)},object:{read:e=>JSON.parse(e),write:e=>JSON.stringify(e)},number:{read:e=>Number.parseFloat(e),write:e=>String(e)},any:{read:e=>e,write:e=>String(e)},string:{read:e=>e,write:e=>String(e)},map:{read:e=>new Map(JSON.parse(e)),write:e=>JSON.stringify(Array.from(e.entries()))},set:{read:e=>new Set(JSON.parse(e)),write:e=>JSON.stringify(Array.from(e))},date:{read:e=>new Date(e),write:e=>e.toISOString()}},Cr="vueuse-storage";function ra(e,t,n,s={}){var r;const{flush:o="pre",deep:i=!0,listenToStorageChanges:l=!0,writeDefaults:c=!0,mergeDefaults:u=!1,shallow:d,window:h=je,eventFilter:b,onError:S=w=>{console.error(w)},initOnMounted:P}=s,M=(d?Qr:ae)(typeof t=="function"?t():t);if(!n)try{n=Yo("getDefaultStorage",()=>{var w;return(w=je)==null?void 0:w.localStorage})()}catch(w){S(w)}if(!n)return M;const B=Ye(t),q=na(B),G=(r=s.serializer)!=null?r:sa[q],{pause:g,resume:m}=Yc(M,()=>O(M.value),{flush:o,deep:i,eventFilter:b});h&&l&&Ps(()=>{Et(h,"storage",A),Et(h,Cr,j),P&&A()}),P||A();function I(w,D){h&&h.dispatchEvent(new CustomEvent(Cr,{detail:{key:e,oldValue:w,newValue:D,storageArea:n}}))}function O(w){try{const D=n.getItem(e);if(w==null)I(D,null),n.removeItem(e);else{const x=G.write(w);D!==x&&(n.setItem(e,x),I(D,x))}}catch(D){S(D)}}function V(w){const D=w?w.newValue:n.getItem(e);if(D==null)return c&&B!=null&&n.setItem(e,G.write(B)),B;if(!w&&u){const x=G.read(D);return typeof u=="function"?u(x,B):q==="object"&&!Array.isArray(x)?{...B,...x}:x}else return typeof D!="string"?D:G.read(D)}function A(w){if(!(w&&w.storageArea!==n)){if(w&&w.key==null){M.value=B;return}if(!(w&&w.key!==e)){g();try{(w==null?void 0:w.newValue)!==G.write(M.value)&&(M.value=V(w))}catch(D){S(D)}finally{w?Cn(m):m()}}}}function j(w){A(w.detail)}return M}function Jo(e){return Xo("(prefers-color-scheme: dark)",e)}function oa(e={}){const{selector:t="html",attribute:n="class",initialValue:s="auto",window:r=je,storage:o,storageKey:i="vueuse-color-scheme",listenToStorageChanges:l=!0,storageRef:c,emitAuto:u,disableTransition:d=!0}=e,h={auto:"",light:"light",dark:"dark",...e.modes||{}},b=Jo({window:r}),S=ne(()=>b.value?"dark":"light"),P=c||(i==null?Go(s):ra(i,s,o,{window:r,listenToStorageChanges:l})),M=ne(()=>P.value==="auto"?S.value:P.value),B=Yo("updateHTMLAttrs",(m,I,O)=>{const V=typeof m=="string"?r==null?void 0:r.document.querySelector(m):zo(m);if(!V)return;let A;if(d&&(A=r.document.createElement("style"),A.appendChild(document.createTextNode("*,*::before,*::after{-webkit-transition:none!important;-moz-transition:none!important;-o-transition:none!important;-ms-transition:none!important;transition:none!important}")),r.document.head.appendChild(A)),I==="class"){const j=O.split(/\s/g);Object.values(h).flatMap(w=>(w||"").split(/\s/g)).filter(Boolean).forEach(w=>{j.includes(w)?V.classList.add(w):V.classList.remove(w)})}else V.setAttribute(I,O);d&&(r.getComputedStyle(A).opacity,document.head.removeChild(A))});function q(m){var I;B(t,n,(I=h[m])!=null?I:m)}function G(m){e.onChanged?e.onChanged(m,q):q(m)}Me(M,G,{flush:"post",immediate:!0}),Ps(()=>G(M.value));const g=ne({get(){return u?P.value:M.value},set(m){P.value=m}});try{return Object.assign(g,{store:P,system:S,state:M})}catch{return g}}function ia(e={}){const{valueDark:t="dark",valueLight:n="",window:s=je}=e,r=oa({...e,onChanged:(l,c)=>{var u;e.onChanged?(u=e.onChanged)==null||u.call(e,l==="dark",c,l):c(l)},modes:{dark:t,light:n}}),o=ne(()=>r.system?r.system.value:Jo({window:s}).value?"dark":"light");return ne({get(){return r.value==="dark"},set(l){const c=l?"dark":"light";o.value===c?r.value="auto":r.value=c}})}function Wn(e){return typeof Window<"u"&&e instanceof Window?e.document.documentElement:typeof Document<"u"&&e instanceof Document?e.documentElement:e}function Qo(e){const t=window.getComputedStyle(e);if(t.overflowX==="scroll"||t.overflowY==="scroll"||t.overflowX==="auto"&&e.clientWidth1?!0:(t.preventDefault&&t.preventDefault(),!1)}const en=new WeakMap;function tu(e,t=!1){const n=ae(t);let s=null;Me(Go(e),i=>{const l=Wn(Ye(i));if(l){const c=l;en.get(c)||en.set(c,c.style.overflow),n.value&&(c.style.overflow="hidden")}},{immediate:!0});const r=()=>{const i=Wn(Ye(e));!i||n.value||(Er&&(s=Et(i,"touchmove",l=>{la(l)},{passive:!1})),i.style.overflow="hidden",n.value=!0)},o=()=>{var i;const l=Wn(Ye(e));!l||!n.value||(Er&&(s==null||s()),l.style.overflow=(i=en.get(l))!=null?i:"",en.delete(l),n.value=!1)};return Is(o),ne({get(){return n.value},set(i){i?r():o()}})}function nu(e={}){const{window:t=je,behavior:n="auto"}=e;if(!t)return{x:ae(0),y:ae(0)};const s=ae(t.scrollX),r=ae(t.scrollY),o=ne({get(){return s.value},set(l){scrollTo({left:l,behavior:n})}}),i=ne({get(){return r.value},set(l){scrollTo({top:l,behavior:n})}});return Et(t,"scroll",()=>{s.value=t.scrollX,r.value=t.scrollY},{capture:!1,passive:!0}),{x:o,y:i}}function su(e={}){const{window:t=je,initialWidth:n=Number.POSITIVE_INFINITY,initialHeight:s=Number.POSITIVE_INFINITY,listenOrientation:r=!0,includeScrollbar:o=!0}=e,i=ae(n),l=ae(s),c=()=>{t&&(o?(i.value=t.innerWidth,l.value=t.innerHeight):(i.value=t.document.documentElement.clientWidth,l.value=t.document.documentElement.clientHeight))};if(c(),Ps(c),Et("resize",c,{passive:!0}),r){const u=Xo("(orientation: portrait)");Me(u,()=>c())}return{width:i,height:l}}var qn={BASE_URL:"/coconut/",MODE:"production",DEV:!1,PROD:!0,SSR:!1},Gn={};const Zo=/^(?:[a-z]+:|\/\/)/i,ca="vitepress-theme-appearance",aa=/#.*$/,ua=/[?#].*$/,fa=/(?:(^|\/)index)?\.(?:md|html)$/,fe=typeof document<"u",ei={relativePath:"404.md",filePath:"",title:"404",description:"Not Found",headers:[],frontmatter:{sidebar:!1,layout:"page"},lastUpdated:0,isNotFound:!0};function da(e,t,n=!1){if(t===void 0)return!1;if(e=xr(`/${e}`),n)return new RegExp(t).test(e);if(xr(t)!==e)return!1;const s=t.match(aa);return s?(fe?location.hash:"")===s[0]:!0}function xr(e){return decodeURI(e).replace(ua,"").replace(fa,"$1")}function ha(e){return Zo.test(e)}function pa(e,t){return Object.keys((e==null?void 0:e.locales)||{}).find(n=>n!=="root"&&!ha(n)&&da(t,`/${n}/`,!0))||"root"}function ga(e,t){var s,r,o,i,l,c,u;const n=pa(e,t);return Object.assign({},e,{localeIndex:n,lang:((s=e.locales[n])==null?void 0:s.lang)??e.lang,dir:((r=e.locales[n])==null?void 0:r.dir)??e.dir,title:((o=e.locales[n])==null?void 0:o.title)??e.title,titleTemplate:((i=e.locales[n])==null?void 0:i.titleTemplate)??e.titleTemplate,description:((l=e.locales[n])==null?void 0:l.description)??e.description,head:ni(e.head,((c=e.locales[n])==null?void 0:c.head)??[]),themeConfig:{...e.themeConfig,...(u=e.locales[n])==null?void 0:u.themeConfig}})}function ti(e,t){const n=t.title||e.title,s=t.titleTemplate??e.titleTemplate;if(typeof s=="string"&&s.includes(":title"))return s.replace(/:title/g,n);const r=ma(e.title,s);return n===r.slice(3)?n:`${n}${r}`}function ma(e,t){return t===!1?"":t===!0||t===void 0?` | ${e}`:e===t?"":` | ${t}`}function _a(e,t){const[n,s]=t;if(n!=="meta")return!1;const r=Object.entries(s)[0];return r==null?!1:e.some(([o,i])=>o===n&&i[r[0]]===r[1])}function ni(e,t){return[...e.filter(n=>!_a(t,n)),...t]}const ya=/[\u0000-\u001F"#$&*+,:;<=>?[\]^`{|}\u007F]/g,ba=/^[a-z]:/i;function Sr(e){const t=ba.exec(e),n=t?t[0]:"";return n+e.slice(n.length).replace(ya,"_").replace(/(^|\/)_+(?=[^/]*$)/,"$1")}const zn=new Set;function va(e){if(zn.size===0){const n=typeof process=="object"&&(Gn==null?void 0:Gn.VITE_EXTRA_EXTENSIONS)||(qn==null?void 0:qn.VITE_EXTRA_EXTENSIONS)||"";("3g2,3gp,aac,ai,apng,au,avif,bin,bmp,cer,class,conf,crl,css,csv,dll,doc,eps,epub,exe,gif,gz,ics,ief,jar,jpe,jpeg,jpg,js,json,jsonld,m4a,man,mid,midi,mjs,mov,mp2,mp3,mp4,mpe,mpeg,mpg,mpp,oga,ogg,ogv,ogx,opus,otf,p10,p7c,p7m,p7s,pdf,png,ps,qt,roff,rtf,rtx,ser,svg,t,tif,tiff,tr,ts,tsv,ttf,txt,vtt,wav,weba,webm,webp,woff,woff2,xhtml,xml,yaml,yml,zip"+(n&&typeof n=="string"?","+n:"")).split(",").forEach(s=>zn.add(s))}const t=e.split(".").pop();return t==null||!zn.has(t.toLowerCase())}const wa=Symbol(),at=Qr(Bc);function ru(e){const t=ne(()=>ga(at.value,e.data.relativePath)),n=t.value.appearance,s=n==="force-dark"?ae(!0):n?ia({storageKey:ca,initialValue:()=>typeof n=="string"?n:"auto",...typeof n=="object"?n:{}}):ae(!1),r=ae(fe?location.hash:"");return fe&&window.addEventListener("hashchange",()=>{r.value=location.hash}),Me(()=>e.data,()=>{r.value=fe?location.hash:""}),{site:t,theme:ne(()=>t.value.themeConfig),page:ne(()=>e.data),frontmatter:ne(()=>e.data.frontmatter),params:ne(()=>e.data.params),lang:ne(()=>t.value.lang),dir:ne(()=>e.data.frontmatter.dir||t.value.dir),localeIndex:ne(()=>t.value.localeIndex||"root"),title:ne(()=>ti(t.value,e.data)),description:ne(()=>e.data.description||t.value.description),isDark:s,hash:ne(()=>r.value)}}function Ea(){const e=vt(wa);if(!e)throw new Error("vitepress data not properly injected in app");return e}function Ca(e,t){return`${e}${t}`.replace(/\/+/g,"/")}function Tr(e){return Zo.test(e)||!e.startsWith("/")?e:Ca(at.value.base,e)}function xa(e){let t=e.replace(/\.html$/,"");if(t=decodeURIComponent(t),t=t.replace(/\/$/,"/index"),fe){const n="/coconut/";t=Sr(t.slice(n.length).replace(/\//g,"_")||"index")+".md";let s=__VP_HASH_MAP__[t.toLowerCase()];if(s||(t=t.endsWith("_index.md")?t.slice(0,-9)+".md":t.slice(0,-3)+"_index.md",s=__VP_HASH_MAP__[t.toLowerCase()]),!s)return null;t=`${n}assets/${t}.${s}.js`}else t=`./${Sr(t.slice(1).replace(/\//g,"_"))}.md.js`;return t}let ln=[];function ou(e){ln.push(e),On(()=>{ln=ln.filter(t=>t!==e)})}function Sa(){let e=at.value.scrollOffset,t=0,n=24;if(typeof e=="object"&&"padding"in e&&(n=e.padding,e=e.selector),typeof e=="number")t=e;else if(typeof e=="string")t=Ar(e,n);else if(Array.isArray(e))for(const s of e){const r=Ar(s,n);if(r){t=r;break}}return t}function Ar(e,t){const n=document.querySelector(e);if(!n)return 0;const s=n.getBoundingClientRect().bottom;return s<0?0:s+t}const Ta=Symbol(),si="http://a.com",Aa=()=>({path:"/",component:null,data:ei});function iu(e,t){const n=vn(Aa()),s={route:n,go:r};async function r(l=fe?location.href:"/"){var c,u;l=Xn(l),await((c=s.onBeforeRouteChange)==null?void 0:c.call(s,l))!==!1&&(fe&&l!==Xn(location.href)&&(history.replaceState({scrollPosition:window.scrollY},""),history.pushState({},"",l)),await i(l),await((u=s.onAfterRouteChanged)==null?void 0:u.call(s,l)))}let o=null;async function i(l,c=0,u=!1){var b;if(await((b=s.onBeforePageLoad)==null?void 0:b.call(s,l))===!1)return;const d=new URL(l,si),h=o=d.pathname;try{let S=await e(h);if(!S)throw new Error(`Page not found: ${h}`);if(o===h){o=null;const{default:P,__pageData:M}=S;if(!P)throw new Error(`Invalid route component: ${P}`);n.path=fe?h:Tr(h),n.component=sn(P),n.data=sn(M),fe&&Cn(()=>{let B=at.value.base+M.relativePath.replace(/(?:(^|\/)index)?\.md$/,"$1");if(!at.value.cleanUrls&&!B.endsWith("/")&&(B+=".html"),B!==d.pathname&&(d.pathname=B,l=B+d.search+d.hash,history.replaceState({},"",l)),d.hash&&!c){let q=null;try{q=document.getElementById(decodeURIComponent(d.hash).slice(1))}catch(G){console.warn(G)}if(q){Rr(q,d.hash);return}}window.scrollTo(0,c)})}}catch(S){if(!/fetch|Page not found/.test(S.message)&&!/^\/404(\.html|\/)?$/.test(l)&&console.error(S),!u)try{const P=await fetch(at.value.base+"hashmap.json");window.__VP_HASH_MAP__=await P.json(),await i(l,c,!0);return}catch{}if(o===h){o=null,n.path=fe?h:Tr(h),n.component=t?sn(t):null;const P=fe?h.replace(/(^|\/)$/,"$1index").replace(/(\.html)?$/,".md").replace(/^\//,""):"404.md";n.data={...ei,relativePath:P}}}}return fe&&(history.state===null&&history.replaceState({},""),window.addEventListener("click",l=>{if(l.target.closest("button"))return;const u=l.target.closest("a");if(u&&!u.closest(".vp-raw")&&(u instanceof SVGElement||!u.download)){const{target:d}=u,{href:h,origin:b,pathname:S,hash:P,search:M}=new URL(u.href instanceof SVGAnimatedString?u.href.animVal:u.href,u.baseURI),B=new URL(location.href);!l.ctrlKey&&!l.shiftKey&&!l.altKey&&!l.metaKey&&!d&&b===B.origin&&va(S)&&(l.preventDefault(),S===B.pathname&&M===B.search?(P!==B.hash&&(history.pushState({},"",h),window.dispatchEvent(new HashChangeEvent("hashchange",{oldURL:B.href,newURL:h}))),P?Rr(u,P,u.classList.contains("header-anchor")):window.scrollTo(0,0)):r(h))}},{capture:!0}),window.addEventListener("popstate",async l=>{var c;l.state!==null&&(await i(Xn(location.href),l.state&&l.state.scrollPosition||0),(c=s.onAfterRouteChanged)==null||c.call(s,location.href))}),window.addEventListener("hashchange",l=>{l.preventDefault()})),s}function Ra(){const e=vt(Ta);if(!e)throw new Error("useRouter() is called without provider.");return e}function ri(){return Ra().route}function Rr(e,t,n=!1){let s=null;try{s=e.classList.contains("header-anchor")?e:document.getElementById(decodeURIComponent(t).slice(1))}catch(r){console.warn(r)}if(s){let r=function(){!n||Math.abs(i-window.scrollY)>window.innerHeight?window.scrollTo(0,i):window.scrollTo({left:0,top:i,behavior:"smooth"})};const o=parseInt(window.getComputedStyle(s).paddingTop,10),i=window.scrollY+s.getBoundingClientRect().top-Sa()+o;requestAnimationFrame(r)}}function Xn(e){const t=new URL(e,si);return t.pathname=t.pathname.replace(/(^|\/)index(\.html)?$/,"$1"),at.value.cleanUrls?t.pathname=t.pathname.replace(/\.html$/,""):!t.pathname.endsWith("/")&&!t.pathname.endsWith(".html")&&(t.pathname+=".html"),t.pathname+t.search+t.hash}const Yn=()=>ln.forEach(e=>e()),lu=mo({name:"VitePressContent",props:{as:{type:[Object,String],default:"div"}},setup(e){const t=ri(),{site:n}=Ea();return()=>us(e.as,n.value.contentProps??{style:{position:"relative"}},[t.component?us(t.component,{onVnodeMounted:Yn,onVnodeUpdated:Yn,onVnodeUnmounted:Yn}):"404 Page Not Found"])}}),cu="/coconut/search-page.png",au="/coconut/logo.png",uu="/coconut/CheminfGit.png",Oa="modulepreload",La=function(e){return"/coconut/"+e},Or={},fu=function(t,n,s){let r=Promise.resolve();if(n&&n.length>0){document.getElementsByTagName("link");const o=document.querySelector("meta[property=csp-nonce]"),i=(o==null?void 0:o.nonce)||(o==null?void 0:o.getAttribute("nonce"));r=Promise.all(n.map(l=>{if(l=La(l),l in Or)return;Or[l]=!0;const c=l.endsWith(".css"),u=c?'[rel="stylesheet"]':"";if(document.querySelector(`link[href="${l}"]${u}`))return;const d=document.createElement("link");if(d.rel=c?"stylesheet":Oa,c||(d.as="script",d.crossOrigin=""),d.href=l,i&&d.setAttribute("nonce",i),document.head.appendChild(d),c)return new Promise((h,b)=>{d.addEventListener("load",h),d.addEventListener("error",()=>b(new Error(`Unable to preload CSS for ${l}`)))})}))}return r.then(()=>t()).catch(o=>{const i=new Event("vite:preloadError",{cancelable:!0});if(i.payload=o,window.dispatchEvent(i),!i.defaultPrevented)throw o})},du=mo({setup(e,{slots:t}){const n=ae(!1);return Ct(()=>{n.value=!0}),()=>n.value&&t.default?t.default():null}});function hu(){fe&&window.addEventListener("click",e=>{var n;const t=e.target;if(t.matches(".vp-code-group input")){const s=(n=t.parentElement)==null?void 0:n.parentElement;if(!s)return;const r=Array.from(s.querySelectorAll("input")).indexOf(t);if(r<0)return;const o=s.querySelector(".blocks");if(!o)return;const i=Array.from(o.children).find(u=>u.classList.contains("active"));if(!i)return;const l=o.children[r];if(!l||i===l)return;i.classList.remove("active"),l.classList.add("active");const c=s==null?void 0:s.querySelector(`label[for="${t.id}"]`);c==null||c.scrollIntoView({block:"nearest"})}})}function pu(){if(fe){const e=new WeakMap;window.addEventListener("click",t=>{var s;const n=t.target;if(n.matches('div[class*="language-"] > button.copy')){const r=n.parentElement,o=(s=n.nextElementSibling)==null?void 0:s.nextElementSibling;if(!r||!o)return;const i=/language-(shellscript|shell|bash|sh|zsh)/.test(r.className),l=[".vp-copy-ignore",".diff.remove"],c=o.cloneNode(!0);c.querySelectorAll(l.join(",")).forEach(d=>d.remove());let u=c.textContent||"";i&&(u=u.replace(/^ *(\$|>) /gm,"").trim()),Ia(u).then(()=>{n.classList.add("copied"),clearTimeout(e.get(n));const d=setTimeout(()=>{n.classList.remove("copied"),n.blur(),e.delete(n)},2e3);e.set(n,d)})}})}}async function Ia(e){try{return navigator.clipboard.writeText(e)}catch{const t=document.createElement("textarea"),n=document.activeElement;t.value=e,t.setAttribute("readonly",""),t.style.contain="strict",t.style.position="absolute",t.style.left="-9999px",t.style.fontSize="12pt";const s=document.getSelection(),r=s?s.rangeCount>0&&s.getRangeAt(0):null;document.body.appendChild(t),t.select(),t.selectionStart=0,t.selectionEnd=e.length,document.execCommand("copy"),document.body.removeChild(t),r&&(s.removeAllRanges(),s.addRange(r)),n&&n.focus()}}function gu(e,t){let n=!0,s=[];const r=o=>{if(n){n=!1,o.forEach(l=>{const c=Jn(l);for(const u of document.head.children)if(u.isEqualNode(c)){s.push(u);return}});return}const i=o.map(Jn);s.forEach((l,c)=>{const u=i.findIndex(d=>d==null?void 0:d.isEqualNode(l??null));u!==-1?delete i[u]:(l==null||l.remove(),delete s[c])}),i.forEach(l=>l&&document.head.appendChild(l)),s=[...s,...i].filter(Boolean)};uo(()=>{const o=e.data,i=t.value,l=o&&o.description,c=o&&o.frontmatter.head||[],u=ti(i,o);u!==document.title&&(document.title=u);const d=l||i.description;let h=document.querySelector("meta[name=description]");h?h.getAttribute("content")!==d&&h.setAttribute("content",d):Jn(["meta",{name:"description",content:d}]),r(ni(i.head,Ma(c)))})}function Jn([e,t,n]){const s=document.createElement(e);for(const r in t)s.setAttribute(r,t[r]);return n&&(s.innerHTML=n),e==="script"&&!t.async&&(s.async=!1),s}function Pa(e){return e[0]==="meta"&&e[1]&&e[1].name==="description"}function Ma(e){return e.filter(t=>!Pa(t))}const Qn=new Set,oi=()=>document.createElement("link"),Na=e=>{const t=oi();t.rel="prefetch",t.href=e,document.head.appendChild(t)},Fa=e=>{const t=new XMLHttpRequest;t.open("GET",e,t.withCredentials=!0),t.send()};let tn;const $a=fe&&(tn=oi())&&tn.relList&&tn.relList.supports&&tn.relList.supports("prefetch")?Na:Fa;function mu(){if(!fe||!window.IntersectionObserver)return;let e;if((e=navigator.connection)&&(e.saveData||/2g/.test(e.effectiveType)))return;const t=window.requestIdleCallback||setTimeout;let n=null;const s=()=>{n&&n.disconnect(),n=new IntersectionObserver(o=>{o.forEach(i=>{if(i.isIntersecting){const l=i.target;n.unobserve(l);const{pathname:c}=l;if(!Qn.has(c)){Qn.add(c);const u=xa(c);u&&$a(u)}}})}),t(()=>{document.querySelectorAll("#app a").forEach(o=>{const{hostname:i,pathname:l}=new URL(o.href instanceof SVGAnimatedString?o.href.animVal:o.href,o.baseURI),c=l.match(/\.\w+$/);c&&c[0]!==".html"||o.target!=="_blank"&&i===location.hostname&&(l!==location.pathname?n.observe(o):Qn.add(l))})})};Ct(s);const r=ri();Me(()=>r.path,s),On(()=>{n&&n.disconnect()})}export{Ya as $,Ba as A,Cl as B,Sa as C,Da as D,ka as E,_e as F,Qr as G,ou as H,ue as I,Ua as J,Zo as K,ri as L,Zl as M,vt as N,su as O,gs as P,eu as Q,Cn as R,nu as S,Bo as T,fe as U,wn as V,tu as W,Hl as X,Ja as Y,Wa as Z,Za as _,jo as a,qa as a0,za as a1,cu as a2,au as a3,uu as a4,gu as a5,Ta as a6,ru as a7,wa as a8,lu as a9,du as aa,at as ab,Qa as ac,iu as ad,xa as ae,mu as af,pu as ag,hu as ah,us as ai,fu as aj,Fo as b,Ga as c,mo as d,Xa as e,va as f,Tr as g,ne as h,ha as i,Ho as j,eo as k,Va as l,da as m,ms as n,Mo as o,ja as p,Xo as q,Ka as r,ae as s,Ha as t,Ea as u,Me as v,il as w,uo as x,Ct as y,On as z}; diff --git a/docs/.vitepress/dist/assets/chunks/framework.D_xGnxpE.js b/docs/.vitepress/dist/assets/chunks/framework.D_xGnxpE.js deleted file mode 100644 index 11d18a00..00000000 --- a/docs/.vitepress/dist/assets/chunks/framework.D_xGnxpE.js +++ /dev/null @@ -1,17 +0,0 @@ -/** -* @vue/shared v3.4.27 -* (c) 2018-present Yuxi (Evan) You and Vue contributors -* @license MIT -**//*! #__NO_SIDE_EFFECTS__ */function fs(e,t){const n=new Set(e.split(","));return s=>n.has(s)}const te={},gt=[],xe=()=>{},lo=()=>!1,Vt=e=>e.charCodeAt(0)===111&&e.charCodeAt(1)===110&&(e.charCodeAt(2)>122||e.charCodeAt(2)<97),ds=e=>e.startsWith("onUpdate:"),re=Object.assign,hs=(e,t)=>{const n=e.indexOf(t);n>-1&&e.splice(n,1)},co=Object.prototype.hasOwnProperty,Y=(e,t)=>co.call(e,t),U=Array.isArray,mt=e=>mn(e)==="[object Map]",Lr=e=>mn(e)==="[object Set]",K=e=>typeof e=="function",se=e=>typeof e=="string",ut=e=>typeof e=="symbol",Z=e=>e!==null&&typeof e=="object",Ir=e=>(Z(e)||K(e))&&K(e.then)&&K(e.catch),Pr=Object.prototype.toString,mn=e=>Pr.call(e),ao=e=>mn(e).slice(8,-1),Mr=e=>mn(e)==="[object Object]",ps=e=>se(e)&&e!=="NaN"&&e[0]!=="-"&&""+parseInt(e,10)===e,_t=fs(",key,ref,ref_for,ref_key,onVnodeBeforeMount,onVnodeMounted,onVnodeBeforeUpdate,onVnodeUpdated,onVnodeBeforeUnmount,onVnodeUnmounted"),_n=e=>{const t=Object.create(null);return n=>t[n]||(t[n]=e(n))},uo=/-(\w)/g,Ne=_n(e=>e.replace(uo,(t,n)=>n?n.toUpperCase():"")),fo=/\B([A-Z])/g,ft=_n(e=>e.replace(fo,"-$1").toLowerCase()),yn=_n(e=>e.charAt(0).toUpperCase()+e.slice(1)),nn=_n(e=>e?`on${yn(e)}`:""),Je=(e,t)=>!Object.is(e,t),Fn=(e,t)=>{for(let n=0;n{Object.defineProperty(e,t,{configurable:!0,enumerable:!1,writable:s,value:n})},ho=e=>{const t=parseFloat(e);return isNaN(t)?e:t},po=e=>{const t=se(e)?Number(e):NaN;return isNaN(t)?e:t};let js;const Fr=()=>js||(js=typeof globalThis<"u"?globalThis:typeof self<"u"?self:typeof window<"u"?window:typeof global<"u"?global:{});function gs(e){if(U(e)){const t={};for(let n=0;n{if(n){const s=n.split(mo);s.length>1&&(t[s[0].trim()]=s[1].trim())}}),t}function ms(e){let t="";if(se(e))t=e;else if(U(e))for(let n=0;nse(e)?e:e==null?"":U(e)||Z(e)&&(e.toString===Pr||!K(e.toString))?JSON.stringify(e,Hr,2):String(e),Hr=(e,t)=>t&&t.__v_isRef?Hr(e,t.value):mt(t)?{[`Map(${t.size})`]:[...t.entries()].reduce((n,[s,r],i)=>(n[$n(s,i)+" =>"]=r,n),{})}:Lr(t)?{[`Set(${t.size})`]:[...t.values()].map(n=>$n(n))}:ut(t)?$n(t):Z(t)&&!U(t)&&!Mr(t)?String(t):t,$n=(e,t="")=>{var n;return ut(e)?`Symbol(${(n=e.description)!=null?n:t})`:e};/** -* @vue/reactivity v3.4.27 -* (c) 2018-present Yuxi (Evan) You and Vue contributors -* @license MIT -**/let we;class wo{constructor(t=!1){this.detached=t,this._active=!0,this.effects=[],this.cleanups=[],this.parent=we,!t&&we&&(this.index=(we.scopes||(we.scopes=[])).push(this)-1)}get active(){return this._active}run(t){if(this._active){const n=we;try{return we=this,t()}finally{we=n}}}on(){we=this}off(){we=this.parent}stop(t){if(this._active){let n,s;for(n=0,s=this.effects.length;n=4))break}this._dirtyLevel===1&&(this._dirtyLevel=0),et()}return this._dirtyLevel>=4}set dirty(t){this._dirtyLevel=t?4:0}run(){if(this._dirtyLevel=0,!this.active)return this.fn();let t=ze,n=lt;try{return ze=!0,lt=this,this._runnings++,Vs(this),this.fn()}finally{Ds(this),this._runnings--,lt=n,ze=t}}stop(){this.active&&(Vs(this),Ds(this),this.onStop&&this.onStop(),this.active=!1)}}function xo(e){return e.value}function Vs(e){e._trackId++,e._depsLength=0}function Ds(e){if(e.deps.length>e._depsLength){for(let t=e._depsLength;t{const n=new Map;return n.cleanup=e,n.computed=t,n},cn=new WeakMap,ct=Symbol(""),ts=Symbol("");function be(e,t,n){if(ze&<){let s=cn.get(e);s||cn.set(e,s=new Map);let r=s.get(n);r||s.set(n,r=kr(()=>s.delete(n))),Ur(lt,r)}}function He(e,t,n,s,r,i){const o=cn.get(e);if(!o)return;let l=[];if(t==="clear")l=[...o.values()];else if(n==="length"&&U(e)){const c=Number(s);o.forEach((u,d)=>{(d==="length"||!ut(d)&&d>=c)&&l.push(u)})}else switch(n!==void 0&&l.push(o.get(n)),t){case"add":U(e)?ps(n)&&l.push(o.get("length")):(l.push(o.get(ct)),mt(e)&&l.push(o.get(ts)));break;case"delete":U(e)||(l.push(o.get(ct)),mt(e)&&l.push(o.get(ts)));break;case"set":mt(e)&&l.push(o.get(ct));break}ys();for(const c of l)c&&Br(c,4);bs()}function So(e,t){const n=cn.get(e);return n&&n.get(t)}const To=fs("__proto__,__v_isRef,__isVue"),Kr=new Set(Object.getOwnPropertyNames(Symbol).filter(e=>e!=="arguments"&&e!=="caller").map(e=>Symbol[e]).filter(ut)),Us=Ao();function Ao(){const e={};return["includes","indexOf","lastIndexOf"].forEach(t=>{e[t]=function(...n){const s=J(this);for(let i=0,o=this.length;i{e[t]=function(...n){Ze(),ys();const s=J(this)[t].apply(this,n);return bs(),et(),s}}),e}function Ro(e){ut(e)||(e=String(e));const t=J(this);return be(t,"has",e),t.hasOwnProperty(e)}class Wr{constructor(t=!1,n=!1){this._isReadonly=t,this._isShallow=n}get(t,n,s){const r=this._isReadonly,i=this._isShallow;if(n==="__v_isReactive")return!r;if(n==="__v_isReadonly")return r;if(n==="__v_isShallow")return i;if(n==="__v_raw")return s===(r?i?Uo:Xr:i?zr:Gr).get(t)||Object.getPrototypeOf(t)===Object.getPrototypeOf(s)?t:void 0;const o=U(t);if(!r){if(o&&Y(Us,n))return Reflect.get(Us,n,s);if(n==="hasOwnProperty")return Ro}const l=Reflect.get(t,n,s);return(ut(n)?Kr.has(n):To(n))||(r||be(t,"get",n),i)?l:pe(l)?o&&ps(n)?l:l.value:Z(l)?r?wn(l):vn(l):l}}class qr extends Wr{constructor(t=!1){super(!1,t)}set(t,n,s,r){let i=t[n];if(!this._isShallow){const c=Mt(i);if(!an(s)&&!Mt(s)&&(i=J(i),s=J(s)),!U(t)&&pe(i)&&!pe(s))return c?!1:(i.value=s,!0)}const o=U(t)&&ps(n)?Number(n)e,bn=e=>Reflect.getPrototypeOf(e);function kt(e,t,n=!1,s=!1){e=e.__v_raw;const r=J(e),i=J(t);n||(Je(t,i)&&be(r,"get",t),be(r,"get",i));const{has:o}=bn(r),l=s?vs:n?Cs:Nt;if(o.call(r,t))return l(e.get(t));if(o.call(r,i))return l(e.get(i));e!==r&&e.get(t)}function Kt(e,t=!1){const n=this.__v_raw,s=J(n),r=J(e);return t||(Je(e,r)&&be(s,"has",e),be(s,"has",r)),e===r?n.has(e):n.has(e)||n.has(r)}function Wt(e,t=!1){return e=e.__v_raw,!t&&be(J(e),"iterate",ct),Reflect.get(e,"size",e)}function Bs(e){e=J(e);const t=J(this);return bn(t).has.call(t,e)||(t.add(e),He(t,"add",e,e)),this}function ks(e,t){t=J(t);const n=J(this),{has:s,get:r}=bn(n);let i=s.call(n,e);i||(e=J(e),i=s.call(n,e));const o=r.call(n,e);return n.set(e,t),i?Je(t,o)&&He(n,"set",e,t):He(n,"add",e,t),this}function Ks(e){const t=J(this),{has:n,get:s}=bn(t);let r=n.call(t,e);r||(e=J(e),r=n.call(t,e)),s&&s.call(t,e);const i=t.delete(e);return r&&He(t,"delete",e,void 0),i}function Ws(){const e=J(this),t=e.size!==0,n=e.clear();return t&&He(e,"clear",void 0,void 0),n}function qt(e,t){return function(s,r){const i=this,o=i.__v_raw,l=J(o),c=t?vs:e?Cs:Nt;return!e&&be(l,"iterate",ct),o.forEach((u,d)=>s.call(r,c(u),c(d),i))}}function Gt(e,t,n){return function(...s){const r=this.__v_raw,i=J(r),o=mt(i),l=e==="entries"||e===Symbol.iterator&&o,c=e==="keys"&&o,u=r[e](...s),d=n?vs:t?Cs:Nt;return!t&&be(i,"iterate",c?ts:ct),{next(){const{value:h,done:b}=u.next();return b?{value:h,done:b}:{value:l?[d(h[0]),d(h[1])]:d(h),done:b}},[Symbol.iterator](){return this}}}}function De(e){return function(...t){return e==="delete"?!1:e==="clear"?void 0:this}}function Mo(){const e={get(i){return kt(this,i)},get size(){return Wt(this)},has:Kt,add:Bs,set:ks,delete:Ks,clear:Ws,forEach:qt(!1,!1)},t={get(i){return kt(this,i,!1,!0)},get size(){return Wt(this)},has:Kt,add:Bs,set:ks,delete:Ks,clear:Ws,forEach:qt(!1,!0)},n={get(i){return kt(this,i,!0)},get size(){return Wt(this,!0)},has(i){return Kt.call(this,i,!0)},add:De("add"),set:De("set"),delete:De("delete"),clear:De("clear"),forEach:qt(!0,!1)},s={get(i){return kt(this,i,!0,!0)},get size(){return Wt(this,!0)},has(i){return Kt.call(this,i,!0)},add:De("add"),set:De("set"),delete:De("delete"),clear:De("clear"),forEach:qt(!0,!0)};return["keys","values","entries",Symbol.iterator].forEach(i=>{e[i]=Gt(i,!1,!1),n[i]=Gt(i,!0,!1),t[i]=Gt(i,!1,!0),s[i]=Gt(i,!0,!0)}),[e,n,t,s]}const[No,Fo,$o,Ho]=Mo();function ws(e,t){const n=t?e?Ho:$o:e?Fo:No;return(s,r,i)=>r==="__v_isReactive"?!e:r==="__v_isReadonly"?e:r==="__v_raw"?s:Reflect.get(Y(n,r)&&r in s?n:s,r,i)}const jo={get:ws(!1,!1)},Vo={get:ws(!1,!0)},Do={get:ws(!0,!1)};const Gr=new WeakMap,zr=new WeakMap,Xr=new WeakMap,Uo=new WeakMap;function Bo(e){switch(e){case"Object":case"Array":return 1;case"Map":case"Set":case"WeakMap":case"WeakSet":return 2;default:return 0}}function ko(e){return e.__v_skip||!Object.isExtensible(e)?0:Bo(ao(e))}function vn(e){return Mt(e)?e:Es(e,!1,Lo,jo,Gr)}function Ko(e){return Es(e,!1,Po,Vo,zr)}function wn(e){return Es(e,!0,Io,Do,Xr)}function Es(e,t,n,s,r){if(!Z(e)||e.__v_raw&&!(t&&e.__v_isReactive))return e;const i=r.get(e);if(i)return i;const o=ko(e);if(o===0)return e;const l=new Proxy(e,o===2?s:n);return r.set(e,l),l}function At(e){return Mt(e)?At(e.__v_raw):!!(e&&e.__v_isReactive)}function Mt(e){return!!(e&&e.__v_isReadonly)}function an(e){return!!(e&&e.__v_isShallow)}function Yr(e){return e?!!e.__v_raw:!1}function J(e){const t=e&&e.__v_raw;return t?J(t):e}function sn(e){return Object.isExtensible(e)&&Nr(e,"__v_skip",!0),e}const Nt=e=>Z(e)?vn(e):e,Cs=e=>Z(e)?wn(e):e;class Jr{constructor(t,n,s,r){this.getter=t,this._setter=n,this.dep=void 0,this.__v_isRef=!0,this.__v_isReadonly=!1,this.effect=new _s(()=>t(this._value),()=>Rt(this,this.effect._dirtyLevel===2?2:3)),this.effect.computed=this,this.effect.active=this._cacheable=!r,this.__v_isReadonly=s}get value(){const t=J(this);return(!t._cacheable||t.effect.dirty)&&Je(t._value,t._value=t.effect.run())&&Rt(t,4),xs(t),t.effect._dirtyLevel>=2&&Rt(t,2),t._value}set value(t){this._setter(t)}get _dirty(){return this.effect.dirty}set _dirty(t){this.effect.dirty=t}}function Wo(e,t,n=!1){let s,r;const i=K(e);return i?(s=e,r=xe):(s=e.get,r=e.set),new Jr(s,r,i||!r,n)}function xs(e){var t;ze&<&&(e=J(e),Ur(lt,(t=e.dep)!=null?t:e.dep=kr(()=>e.dep=void 0,e instanceof Jr?e:void 0)))}function Rt(e,t=4,n){e=J(e);const s=e.dep;s&&Br(s,t)}function pe(e){return!!(e&&e.__v_isRef===!0)}function ae(e){return Zr(e,!1)}function Qr(e){return Zr(e,!0)}function Zr(e,t){return pe(e)?e:new qo(e,t)}class qo{constructor(t,n){this.__v_isShallow=n,this.dep=void 0,this.__v_isRef=!0,this._rawValue=n?t:J(t),this._value=n?t:Nt(t)}get value(){return xs(this),this._value}set value(t){const n=this.__v_isShallow||an(t)||Mt(t);t=n?t:J(t),Je(t,this._rawValue)&&(this._rawValue=t,this._value=n?t:Nt(t),Rt(this,4))}}function ei(e){return pe(e)?e.value:e}const Go={get:(e,t,n)=>ei(Reflect.get(e,t,n)),set:(e,t,n,s)=>{const r=e[t];return pe(r)&&!pe(n)?(r.value=n,!0):Reflect.set(e,t,n,s)}};function ti(e){return At(e)?e:new Proxy(e,Go)}class zo{constructor(t){this.dep=void 0,this.__v_isRef=!0;const{get:n,set:s}=t(()=>xs(this),()=>Rt(this));this._get=n,this._set=s}get value(){return this._get()}set value(t){this._set(t)}}function Xo(e){return new zo(e)}class Yo{constructor(t,n,s){this._object=t,this._key=n,this._defaultValue=s,this.__v_isRef=!0}get value(){const t=this._object[this._key];return t===void 0?this._defaultValue:t}set value(t){this._object[this._key]=t}get dep(){return So(J(this._object),this._key)}}class Jo{constructor(t){this._getter=t,this.__v_isRef=!0,this.__v_isReadonly=!0}get value(){return this._getter()}}function Qo(e,t,n){return pe(e)?e:K(e)?new Jo(e):Z(e)&&arguments.length>1?Zo(e,t,n):ae(e)}function Zo(e,t,n){const s=e[t];return pe(s)?s:new Yo(e,t,n)}/** -* @vue/runtime-core v3.4.27 -* (c) 2018-present Yuxi (Evan) You and Vue contributors -* @license MIT -**/function Xe(e,t,n,s){try{return s?e(...s):e()}catch(r){En(r,t,n)}}function Se(e,t,n,s){if(K(e)){const r=Xe(e,t,n,s);return r&&Ir(r)&&r.catch(i=>{En(i,t,n)}),r}if(U(e)){const r=[];for(let i=0;i>>1,r=de[s],i=$t(r);iPe&&de.splice(t,1)}function sl(e){U(e)?yt.push(...e):(!Ke||!Ke.includes(e,e.allowRecurse?it+1:it))&&yt.push(e),si()}function qs(e,t,n=Ft?Pe+1:0){for(;n$t(n)-$t(s));if(yt.length=0,Ke){Ke.push(...t);return}for(Ke=t,it=0;ite.id==null?1/0:e.id,rl=(e,t)=>{const n=$t(e)-$t(t);if(n===0){if(e.pre&&!t.pre)return-1;if(t.pre&&!e.pre)return 1}return n};function ri(e){ns=!1,Ft=!0,de.sort(rl);try{for(Pe=0;Pese(S)?S.trim():S)),h&&(r=n.map(ho))}let l,c=s[l=nn(t)]||s[l=nn(Ne(t))];!c&&i&&(c=s[l=nn(ft(t))]),c&&Se(c,e,6,r);const u=s[l+"Once"];if(u){if(!e.emitted)e.emitted={};else if(e.emitted[l])return;e.emitted[l]=!0,Se(u,e,6,r)}}function ii(e,t,n=!1){const s=t.emitsCache,r=s.get(e);if(r!==void 0)return r;const i=e.emits;let o={},l=!1;if(!K(e)){const c=u=>{const d=ii(u,t,!0);d&&(l=!0,re(o,d))};!n&&t.mixins.length&&t.mixins.forEach(c),e.extends&&c(e.extends),e.mixins&&e.mixins.forEach(c)}return!i&&!l?(Z(e)&&s.set(e,null),null):(U(i)?i.forEach(c=>o[c]=null):re(o,i),Z(e)&&s.set(e,o),o)}function xn(e,t){return!e||!Vt(t)?!1:(t=t.slice(2).replace(/Once$/,""),Y(e,t[0].toLowerCase()+t.slice(1))||Y(e,ft(t))||Y(e,t))}let he=null,Sn=null;function fn(e){const t=he;return he=e,Sn=e&&e.type.__scopeId||null,t}function ja(e){Sn=e}function Va(){Sn=null}function ol(e,t=he,n){if(!t||e._n)return e;const s=(...r)=>{s._d&&rr(-1);const i=fn(t);let o;try{o=e(...r)}finally{fn(i),s._d&&rr(1)}return o};return s._n=!0,s._c=!0,s._d=!0,s}function Hn(e){const{type:t,vnode:n,proxy:s,withProxy:r,propsOptions:[i],slots:o,attrs:l,emit:c,render:u,renderCache:d,props:h,data:b,setupState:S,ctx:P,inheritAttrs:M}=e,B=fn(e);let q,G;try{if(n.shapeFlag&4){const m=r||s,I=m;q=Ae(u.call(I,m,d,h,S,b,P)),G=l}else{const m=t;q=Ae(m.length>1?m(h,{attrs:l,slots:o,emit:c}):m(h,null)),G=t.props?l:ll(l)}}catch(m){Pt.length=0,En(m,e,1),q=ue(ye)}let g=q;if(G&&M!==!1){const m=Object.keys(G),{shapeFlag:I}=g;m.length&&I&7&&(i&&m.some(ds)&&(G=cl(G,i)),g=Qe(g,G,!1,!0))}return n.dirs&&(g=Qe(g,null,!1,!0),g.dirs=g.dirs?g.dirs.concat(n.dirs):n.dirs),n.transition&&(g.transition=n.transition),q=g,fn(B),q}const ll=e=>{let t;for(const n in e)(n==="class"||n==="style"||Vt(n))&&((t||(t={}))[n]=e[n]);return t},cl=(e,t)=>{const n={};for(const s in e)(!ds(s)||!(s.slice(9)in t))&&(n[s]=e[s]);return n};function al(e,t,n){const{props:s,children:r,component:i}=e,{props:o,children:l,patchFlag:c}=t,u=i.emitsOptions;if(t.dirs||t.transition)return!0;if(n&&c>=0){if(c&1024)return!0;if(c&16)return s?Gs(s,o,u):!!o;if(c&8){const d=t.dynamicProps;for(let h=0;he.__isSuspense;function ai(e,t){t&&t.pendingBranch?U(e)?t.effects.push(...e):t.effects.push(e):sl(e)}const dl=Symbol.for("v-scx"),hl=()=>vt(dl);function ui(e,t){return Tn(e,null,t)}function Ba(e,t){return Tn(e,null,{flush:"post"})}const zt={};function Me(e,t,n){return Tn(e,t,n)}function Tn(e,t,{immediate:n,deep:s,flush:r,once:i,onTrack:o,onTrigger:l}=te){if(t&&i){const O=t;t=(...V)=>{O(...V),I()}}const c=ce,u=O=>s===!0?O:pt(O,s===!1?1:void 0);let d,h=!1,b=!1;if(pe(e)?(d=()=>e.value,h=an(e)):At(e)?(d=()=>u(e),h=!0):U(e)?(b=!0,h=e.some(O=>At(O)||an(O)),d=()=>e.map(O=>{if(pe(O))return O.value;if(At(O))return u(O);if(K(O))return Xe(O,c,2)})):K(e)?t?d=()=>Xe(e,c,2):d=()=>(S&&S(),Se(e,c,3,[P])):d=xe,t&&s){const O=d;d=()=>pt(O())}let S,P=O=>{S=g.onStop=()=>{Xe(O,c,4),S=g.onStop=void 0}},M;if(In)if(P=xe,t?n&&Se(t,c,3,[d(),b?[]:void 0,P]):d(),r==="sync"){const O=hl();M=O.__watcherHandles||(O.__watcherHandles=[])}else return xe;let B=b?new Array(e.length).fill(zt):zt;const q=()=>{if(!(!g.active||!g.dirty))if(t){const O=g.run();(s||h||(b?O.some((V,A)=>Je(V,B[A])):Je(O,B)))&&(S&&S(),Se(t,c,3,[O,B===zt?void 0:b&&B[0]===zt?[]:B,P]),B=O)}else g.run()};q.allowRecurse=!!t;let G;r==="sync"?G=q:r==="post"?G=()=>me(q,c&&c.suspense):(q.pre=!0,c&&(q.id=c.uid),G=()=>Ts(q));const g=new _s(d,xe,G),m=jr(),I=()=>{g.stop(),m&&hs(m.effects,g)};return t?n?q():B=g.run():r==="post"?me(g.run.bind(g),c&&c.suspense):g.run(),M&&M.push(I),I}function pl(e,t,n){const s=this.proxy,r=se(e)?e.includes(".")?fi(s,e):()=>s[e]:e.bind(s,s);let i;K(t)?i=t:(i=t.handler,n=t);const o=Dt(this),l=Tn(r,i.bind(s),n);return o(),l}function fi(e,t){const n=t.split(".");return()=>{let s=e;for(let r=0;r{pt(s,t,n)});else if(Mr(e))for(const s in e)pt(e[s],t,n);return e}function Ie(e,t,n,s){const r=e.dirs,i=t&&t.dirs;for(let o=0;o{e.isMounted=!0}),_i(()=>{e.isUnmounting=!0}),e}const Ee=[Function,Array],di={mode:String,appear:Boolean,persisted:Boolean,onBeforeEnter:Ee,onEnter:Ee,onAfterEnter:Ee,onEnterCancelled:Ee,onBeforeLeave:Ee,onLeave:Ee,onAfterLeave:Ee,onLeaveCancelled:Ee,onBeforeAppear:Ee,onAppear:Ee,onAfterAppear:Ee,onAppearCancelled:Ee},ml={name:"BaseTransition",props:di,setup(e,{slots:t}){const n=Ln(),s=gl();return()=>{const r=t.default&&pi(t.default(),!0);if(!r||!r.length)return;let i=r[0];if(r.length>1){for(const b of r)if(b.type!==ye){i=b;break}}const o=J(e),{mode:l}=o;if(s.isLeaving)return jn(i);const c=Xs(i);if(!c)return jn(i);const u=ss(c,o,s,n);rs(c,u);const d=n.subTree,h=d&&Xs(d);if(h&&h.type!==ye&&!ot(c,h)){const b=ss(h,o,s,n);if(rs(h,b),l==="out-in"&&c.type!==ye)return s.isLeaving=!0,b.afterLeave=()=>{s.isLeaving=!1,n.update.active!==!1&&(n.effect.dirty=!0,n.update())},jn(i);l==="in-out"&&c.type!==ye&&(b.delayLeave=(S,P,M)=>{const B=hi(s,h);B[String(h.key)]=h,S[We]=()=>{P(),S[We]=void 0,delete u.delayedLeave},u.delayedLeave=M})}return i}}},_l=ml;function hi(e,t){const{leavingVNodes:n}=e;let s=n.get(t.type);return s||(s=Object.create(null),n.set(t.type,s)),s}function ss(e,t,n,s){const{appear:r,mode:i,persisted:o=!1,onBeforeEnter:l,onEnter:c,onAfterEnter:u,onEnterCancelled:d,onBeforeLeave:h,onLeave:b,onAfterLeave:S,onLeaveCancelled:P,onBeforeAppear:M,onAppear:B,onAfterAppear:q,onAppearCancelled:G}=t,g=String(e.key),m=hi(n,e),I=(A,j)=>{A&&Se(A,s,9,j)},O=(A,j)=>{const w=j[1];I(A,j),U(A)?A.every(D=>D.length<=1)&&w():A.length<=1&&w()},V={mode:i,persisted:o,beforeEnter(A){let j=l;if(!n.isMounted)if(r)j=M||l;else return;A[We]&&A[We](!0);const w=m[g];w&&ot(e,w)&&w.el[We]&&w.el[We](),I(j,[A])},enter(A){let j=c,w=u,D=d;if(!n.isMounted)if(r)j=B||c,w=q||u,D=G||d;else return;let x=!1;const W=A[Xt]=ie=>{x||(x=!0,ie?I(D,[A]):I(w,[A]),V.delayedLeave&&V.delayedLeave(),A[Xt]=void 0)};j?O(j,[A,W]):W()},leave(A,j){const w=String(e.key);if(A[Xt]&&A[Xt](!0),n.isUnmounting)return j();I(h,[A]);let D=!1;const x=A[We]=W=>{D||(D=!0,j(),W?I(P,[A]):I(S,[A]),A[We]=void 0,m[w]===e&&delete m[w])};m[w]=e,b?O(b,[A,x]):x()},clone(A){return ss(A,t,n,s)}};return V}function jn(e){if(An(e))return e=Qe(e),e.children=null,e}function Xs(e){if(!An(e))return e;const{shapeFlag:t,children:n}=e;if(n){if(t&16)return n[0];if(t&32&&K(n.default))return n.default()}}function rs(e,t){e.shapeFlag&6&&e.component?rs(e.component.subTree,t):e.shapeFlag&128?(e.ssContent.transition=t.clone(e.ssContent),e.ssFallback.transition=t.clone(e.ssFallback)):e.transition=t}function pi(e,t=!1,n){let s=[],r=0;for(let i=0;i1)for(let i=0;i!!e.type.__asyncLoader,An=e=>e.type.__isKeepAlive;function yl(e,t){mi(e,"a",t)}function bl(e,t){mi(e,"da",t)}function mi(e,t,n=ce){const s=e.__wdc||(e.__wdc=()=>{let r=n;for(;r;){if(r.isDeactivated)return;r=r.parent}return e()});if(Rn(t,s,n),n){let r=n.parent;for(;r&&r.parent;)An(r.parent.vnode)&&vl(s,t,n,r),r=r.parent}}function vl(e,t,n,s){const r=Rn(t,e,s,!0);On(()=>{hs(s[t],r)},n)}function Rn(e,t,n=ce,s=!1){if(n){const r=n[e]||(n[e]=[]),i=t.__weh||(t.__weh=(...o)=>{if(n.isUnmounted)return;Ze();const l=Dt(n),c=Se(t,n,e,o);return l(),et(),c});return s?r.unshift(i):r.push(i),i}}const Ve=e=>(t,n=ce)=>(!In||e==="sp")&&Rn(e,(...s)=>t(...s),n),wl=Ve("bm"),Ct=Ve("m"),El=Ve("bu"),Cl=Ve("u"),_i=Ve("bum"),On=Ve("um"),xl=Ve("sp"),Sl=Ve("rtg"),Tl=Ve("rtc");function Al(e,t=ce){Rn("ec",e,t)}function ka(e,t,n,s){let r;const i=n;if(U(e)||se(e)){r=new Array(e.length);for(let o=0,l=e.length;ot(o,l,void 0,i));else{const o=Object.keys(e);r=new Array(o.length);for(let l=0,c=o.length;lpn(t)?!(t.type===ye||t.type===_e&&!yi(t.children)):!0)?e:null}function Wa(e,t){const n={};for(const s in e)n[/[A-Z]/.test(s)?`on:${s}`:nn(s)]=e[s];return n}const is=e=>e?ji(e)?Ls(e)||e.proxy:is(e.parent):null,Ot=re(Object.create(null),{$:e=>e,$el:e=>e.vnode.el,$data:e=>e.data,$props:e=>e.props,$attrs:e=>e.attrs,$slots:e=>e.slots,$refs:e=>e.refs,$parent:e=>is(e.parent),$root:e=>is(e.root),$emit:e=>e.emit,$options:e=>As(e),$forceUpdate:e=>e.f||(e.f=()=>{e.effect.dirty=!0,Ts(e.update)}),$nextTick:e=>e.n||(e.n=Cn.bind(e.proxy)),$watch:e=>pl.bind(e)}),Vn=(e,t)=>e!==te&&!e.__isScriptSetup&&Y(e,t),Rl={get({_:e},t){if(t==="__v_skip")return!0;const{ctx:n,setupState:s,data:r,props:i,accessCache:o,type:l,appContext:c}=e;let u;if(t[0]!=="$"){const S=o[t];if(S!==void 0)switch(S){case 1:return s[t];case 2:return r[t];case 4:return n[t];case 3:return i[t]}else{if(Vn(s,t))return o[t]=1,s[t];if(r!==te&&Y(r,t))return o[t]=2,r[t];if((u=e.propsOptions[0])&&Y(u,t))return o[t]=3,i[t];if(n!==te&&Y(n,t))return o[t]=4,n[t];os&&(o[t]=0)}}const d=Ot[t];let h,b;if(d)return t==="$attrs"&&be(e.attrs,"get",""),d(e);if((h=l.__cssModules)&&(h=h[t]))return h;if(n!==te&&Y(n,t))return o[t]=4,n[t];if(b=c.config.globalProperties,Y(b,t))return b[t]},set({_:e},t,n){const{data:s,setupState:r,ctx:i}=e;return Vn(r,t)?(r[t]=n,!0):s!==te&&Y(s,t)?(s[t]=n,!0):Y(e.props,t)||t[0]==="$"&&t.slice(1)in e?!1:(i[t]=n,!0)},has({_:{data:e,setupState:t,accessCache:n,ctx:s,appContext:r,propsOptions:i}},o){let l;return!!n[o]||e!==te&&Y(e,o)||Vn(t,o)||(l=i[0])&&Y(l,o)||Y(s,o)||Y(Ot,o)||Y(r.config.globalProperties,o)},defineProperty(e,t,n){return n.get!=null?e._.accessCache[t]=0:Y(n,"value")&&this.set(e,t,n.value,null),Reflect.defineProperty(e,t,n)}};function qa(){return Ol().slots}function Ol(){const e=Ln();return e.setupContext||(e.setupContext=Di(e))}function Ys(e){return U(e)?e.reduce((t,n)=>(t[n]=null,t),{}):e}let os=!0;function Ll(e){const t=As(e),n=e.proxy,s=e.ctx;os=!1,t.beforeCreate&&Js(t.beforeCreate,e,"bc");const{data:r,computed:i,methods:o,watch:l,provide:c,inject:u,created:d,beforeMount:h,mounted:b,beforeUpdate:S,updated:P,activated:M,deactivated:B,beforeDestroy:q,beforeUnmount:G,destroyed:g,unmounted:m,render:I,renderTracked:O,renderTriggered:V,errorCaptured:A,serverPrefetch:j,expose:w,inheritAttrs:D,components:x,directives:W,filters:ie}=t;if(u&&Il(u,s,null),o)for(const X in o){const F=o[X];K(F)&&(s[X]=F.bind(n))}if(r){const X=r.call(n,n);Z(X)&&(e.data=vn(X))}if(os=!0,i)for(const X in i){const F=i[X],Fe=K(F)?F.bind(n,n):K(F.get)?F.get.bind(n,n):xe,Ut=!K(F)&&K(F.set)?F.set.bind(n):xe,tt=ne({get:Fe,set:Ut});Object.defineProperty(s,X,{enumerable:!0,configurable:!0,get:()=>tt.value,set:Oe=>tt.value=Oe})}if(l)for(const X in l)bi(l[X],s,n,X);if(c){const X=K(c)?c.call(n):c;Reflect.ownKeys(X).forEach(F=>{Hl(F,X[F])})}d&&Js(d,e,"c");function $(X,F){U(F)?F.forEach(Fe=>X(Fe.bind(n))):F&&X(F.bind(n))}if($(wl,h),$(Ct,b),$(El,S),$(Cl,P),$(yl,M),$(bl,B),$(Al,A),$(Tl,O),$(Sl,V),$(_i,G),$(On,m),$(xl,j),U(w))if(w.length){const X=e.exposed||(e.exposed={});w.forEach(F=>{Object.defineProperty(X,F,{get:()=>n[F],set:Fe=>n[F]=Fe})})}else e.exposed||(e.exposed={});I&&e.render===xe&&(e.render=I),D!=null&&(e.inheritAttrs=D),x&&(e.components=x),W&&(e.directives=W)}function Il(e,t,n=xe){U(e)&&(e=ls(e));for(const s in e){const r=e[s];let i;Z(r)?"default"in r?i=vt(r.from||s,r.default,!0):i=vt(r.from||s):i=vt(r),pe(i)?Object.defineProperty(t,s,{enumerable:!0,configurable:!0,get:()=>i.value,set:o=>i.value=o}):t[s]=i}}function Js(e,t,n){Se(U(e)?e.map(s=>s.bind(t.proxy)):e.bind(t.proxy),t,n)}function bi(e,t,n,s){const r=s.includes(".")?fi(n,s):()=>n[s];if(se(e)){const i=t[e];K(i)&&Me(r,i)}else if(K(e))Me(r,e.bind(n));else if(Z(e))if(U(e))e.forEach(i=>bi(i,t,n,s));else{const i=K(e.handler)?e.handler.bind(n):t[e.handler];K(i)&&Me(r,i,e)}}function As(e){const t=e.type,{mixins:n,extends:s}=t,{mixins:r,optionsCache:i,config:{optionMergeStrategies:o}}=e.appContext,l=i.get(t);let c;return l?c=l:!r.length&&!n&&!s?c=t:(c={},r.length&&r.forEach(u=>dn(c,u,o,!0)),dn(c,t,o)),Z(t)&&i.set(t,c),c}function dn(e,t,n,s=!1){const{mixins:r,extends:i}=t;i&&dn(e,i,n,!0),r&&r.forEach(o=>dn(e,o,n,!0));for(const o in t)if(!(s&&o==="expose")){const l=Pl[o]||n&&n[o];e[o]=l?l(e[o],t[o]):t[o]}return e}const Pl={data:Qs,props:Zs,emits:Zs,methods:Tt,computed:Tt,beforeCreate:ge,created:ge,beforeMount:ge,mounted:ge,beforeUpdate:ge,updated:ge,beforeDestroy:ge,beforeUnmount:ge,destroyed:ge,unmounted:ge,activated:ge,deactivated:ge,errorCaptured:ge,serverPrefetch:ge,components:Tt,directives:Tt,watch:Nl,provide:Qs,inject:Ml};function Qs(e,t){return t?e?function(){return re(K(e)?e.call(this,this):e,K(t)?t.call(this,this):t)}:t:e}function Ml(e,t){return Tt(ls(e),ls(t))}function ls(e){if(U(e)){const t={};for(let n=0;n1)return n&&K(t)?t.call(s&&s.proxy):t}}const wi={},Ei=()=>Object.create(wi),Ci=e=>Object.getPrototypeOf(e)===wi;function jl(e,t,n,s=!1){const r={},i=Ei();e.propsDefaults=Object.create(null),xi(e,t,r,i);for(const o in e.propsOptions[0])o in r||(r[o]=void 0);n?e.props=s?r:Ko(r):e.type.props?e.props=r:e.props=i,e.attrs=i}function Vl(e,t,n,s){const{props:r,attrs:i,vnode:{patchFlag:o}}=e,l=J(r),[c]=e.propsOptions;let u=!1;if((s||o>0)&&!(o&16)){if(o&8){const d=e.vnode.dynamicProps;for(let h=0;h{c=!0;const[b,S]=Si(h,t,!0);re(o,b),S&&l.push(...S)};!n&&t.mixins.length&&t.mixins.forEach(d),e.extends&&d(e.extends),e.mixins&&e.mixins.forEach(d)}if(!i&&!c)return Z(e)&&s.set(e,gt),gt;if(U(i))for(let d=0;d-1,S[1]=M<0||P-1||Y(S,"default"))&&l.push(h)}}}const u=[o,l];return Z(e)&&s.set(e,u),u}function er(e){return e[0]!=="$"&&!_t(e)}function tr(e){return e===null?"null":typeof e=="function"?e.name||"":typeof e=="object"&&e.constructor&&e.constructor.name||""}function nr(e,t){return tr(e)===tr(t)}function sr(e,t){return U(t)?t.findIndex(n=>nr(n,e)):K(t)&&nr(t,e)?0:-1}const Ti=e=>e[0]==="_"||e==="$stable",Rs=e=>U(e)?e.map(Ae):[Ae(e)],Dl=(e,t,n)=>{if(t._n)return t;const s=ol((...r)=>Rs(t(...r)),n);return s._c=!1,s},Ai=(e,t,n)=>{const s=e._ctx;for(const r in e){if(Ti(r))continue;const i=e[r];if(K(i))t[r]=Dl(r,i,s);else if(i!=null){const o=Rs(i);t[r]=()=>o}}},Ri=(e,t)=>{const n=Rs(t);e.slots.default=()=>n},Ul=(e,t)=>{const n=e.slots=Ei();if(e.vnode.shapeFlag&32){const s=t._;s?(re(n,t),Nr(n,"_",s,!0)):Ai(t,n)}else t&&Ri(e,t)},Bl=(e,t,n)=>{const{vnode:s,slots:r}=e;let i=!0,o=te;if(s.shapeFlag&32){const l=t._;l?n&&l===1?i=!1:(re(r,t),!n&&l===1&&delete r._):(i=!t.$stable,Ai(t,r)),o=t}else t&&(Ri(e,t),o={default:1});if(i)for(const l in r)!Ti(l)&&o[l]==null&&delete r[l]};function hn(e,t,n,s,r=!1){if(U(e)){e.forEach((b,S)=>hn(b,t&&(U(t)?t[S]:t),n,s,r));return}if(bt(s)&&!r)return;const i=s.shapeFlag&4?Ls(s.component)||s.component.proxy:s.el,o=r?null:i,{i:l,r:c}=e,u=t&&t.r,d=l.refs===te?l.refs={}:l.refs,h=l.setupState;if(u!=null&&u!==c&&(se(u)?(d[u]=null,Y(h,u)&&(h[u]=null)):pe(u)&&(u.value=null)),K(c))Xe(c,l,12,[o,d]);else{const b=se(c),S=pe(c);if(b||S){const P=()=>{if(e.f){const M=b?Y(h,c)?h[c]:d[c]:c.value;r?U(M)&&hs(M,i):U(M)?M.includes(i)||M.push(i):b?(d[c]=[i],Y(h,c)&&(h[c]=d[c])):(c.value=[i],e.k&&(d[e.k]=c.value))}else b?(d[c]=o,Y(h,c)&&(h[c]=o)):S&&(c.value=o,e.k&&(d[e.k]=o))};o?(P.id=-1,me(P,n)):P()}}}let Ue=!1;const kl=e=>e.namespaceURI.includes("svg")&&e.tagName!=="foreignObject",Kl=e=>e.namespaceURI.includes("MathML"),Yt=e=>{if(kl(e))return"svg";if(Kl(e))return"mathml"},Jt=e=>e.nodeType===8;function Wl(e){const{mt:t,p:n,o:{patchProp:s,createText:r,nextSibling:i,parentNode:o,remove:l,insert:c,createComment:u}}=e,d=(g,m)=>{if(!m.hasChildNodes()){n(null,g,m),un(),m._vnode=g;return}Ue=!1,h(m.firstChild,g,null,null,null),un(),m._vnode=g,Ue&&console.error("Hydration completed but contains mismatches.")},h=(g,m,I,O,V,A=!1)=>{A=A||!!m.dynamicChildren;const j=Jt(g)&&g.data==="[",w=()=>M(g,m,I,O,V,j),{type:D,ref:x,shapeFlag:W,patchFlag:ie}=m;let le=g.nodeType;m.el=g,ie===-2&&(A=!1,m.dynamicChildren=null);let $=null;switch(D){case wt:le!==3?m.children===""?(c(m.el=r(""),o(g),g),$=g):$=w():(g.data!==m.children&&(Ue=!0,g.data=m.children),$=i(g));break;case ye:G(g)?($=i(g),q(m.el=g.content.firstChild,g,I)):le!==8||j?$=w():$=i(g);break;case It:if(j&&(g=i(g),le=g.nodeType),le===1||le===3){$=g;const X=!m.children.length;for(let F=0;F{A=A||!!m.dynamicChildren;const{type:j,props:w,patchFlag:D,shapeFlag:x,dirs:W,transition:ie}=m,le=j==="input"||j==="option";if(le||D!==-1){W&&Ie(m,null,I,"created");let $=!1;if(G(g)){$=Oi(O,ie)&&I&&I.vnode.props&&I.vnode.props.appear;const F=g.content.firstChild;$&&ie.beforeEnter(F),q(F,g,I),m.el=g=F}if(x&16&&!(w&&(w.innerHTML||w.textContent))){let F=S(g.firstChild,m,g,I,O,V,A);for(;F;){Ue=!0;const Fe=F;F=F.nextSibling,l(Fe)}}else x&8&&g.textContent!==m.children&&(Ue=!0,g.textContent=m.children);if(w)if(le||!A||D&48)for(const F in w)(le&&(F.endsWith("value")||F==="indeterminate")||Vt(F)&&!_t(F)||F[0]===".")&&s(g,F,null,w[F],void 0,void 0,I);else w.onClick&&s(g,"onClick",null,w.onClick,void 0,void 0,I);let X;(X=w&&w.onVnodeBeforeMount)&&Ce(X,I,m),W&&Ie(m,null,I,"beforeMount"),((X=w&&w.onVnodeMounted)||W||$)&&ai(()=>{X&&Ce(X,I,m),$&&ie.enter(g),W&&Ie(m,null,I,"mounted")},O)}return g.nextSibling},S=(g,m,I,O,V,A,j)=>{j=j||!!m.dynamicChildren;const w=m.children,D=w.length;for(let x=0;x{const{slotScopeIds:j}=m;j&&(V=V?V.concat(j):j);const w=o(g),D=S(i(g),m,w,I,O,V,A);return D&&Jt(D)&&D.data==="]"?i(m.anchor=D):(Ue=!0,c(m.anchor=u("]"),w,D),D)},M=(g,m,I,O,V,A)=>{if(Ue=!0,m.el=null,A){const D=B(g);for(;;){const x=i(g);if(x&&x!==D)l(x);else break}}const j=i(g),w=o(g);return l(g),n(null,m,w,j,I,O,Yt(w),V),j},B=(g,m="[",I="]")=>{let O=0;for(;g;)if(g=i(g),g&&Jt(g)&&(g.data===m&&O++,g.data===I)){if(O===0)return i(g);O--}return g},q=(g,m,I)=>{const O=m.parentNode;O&&O.replaceChild(g,m);let V=I;for(;V;)V.vnode.el===m&&(V.vnode.el=V.subTree.el=g),V=V.parent},G=g=>g.nodeType===1&&g.tagName.toLowerCase()==="template";return[d,h]}const me=ai;function ql(e){return Gl(e,Wl)}function Gl(e,t){const n=Fr();n.__VUE__=!0;const{insert:s,remove:r,patchProp:i,createElement:o,createText:l,createComment:c,setText:u,setElementText:d,parentNode:h,nextSibling:b,setScopeId:S=xe,insertStaticContent:P}=e,M=(a,f,p,_=null,y=null,C=null,R=void 0,E=null,T=!!f.dynamicChildren)=>{if(a===f)return;a&&!ot(a,f)&&(_=Bt(a),Oe(a,y,C,!0),a=null),f.patchFlag===-2&&(T=!1,f.dynamicChildren=null);const{type:v,ref:L,shapeFlag:H}=f;switch(v){case wt:B(a,f,p,_);break;case ye:q(a,f,p,_);break;case It:a==null&&G(f,p,_,R);break;case _e:x(a,f,p,_,y,C,R,E,T);break;default:H&1?I(a,f,p,_,y,C,R,E,T):H&6?W(a,f,p,_,y,C,R,E,T):(H&64||H&128)&&v.process(a,f,p,_,y,C,R,E,T,dt)}L!=null&&y&&hn(L,a&&a.ref,C,f||a,!f)},B=(a,f,p,_)=>{if(a==null)s(f.el=l(f.children),p,_);else{const y=f.el=a.el;f.children!==a.children&&u(y,f.children)}},q=(a,f,p,_)=>{a==null?s(f.el=c(f.children||""),p,_):f.el=a.el},G=(a,f,p,_)=>{[a.el,a.anchor]=P(a.children,f,p,_,a.el,a.anchor)},g=({el:a,anchor:f},p,_)=>{let y;for(;a&&a!==f;)y=b(a),s(a,p,_),a=y;s(f,p,_)},m=({el:a,anchor:f})=>{let p;for(;a&&a!==f;)p=b(a),r(a),a=p;r(f)},I=(a,f,p,_,y,C,R,E,T)=>{f.type==="svg"?R="svg":f.type==="math"&&(R="mathml"),a==null?O(f,p,_,y,C,R,E,T):j(a,f,y,C,R,E,T)},O=(a,f,p,_,y,C,R,E)=>{let T,v;const{props:L,shapeFlag:H,transition:N,dirs:k}=a;if(T=a.el=o(a.type,C,L&&L.is,L),H&8?d(T,a.children):H&16&&A(a.children,T,null,_,y,Dn(a,C),R,E),k&&Ie(a,null,_,"created"),V(T,a,a.scopeId,R,_),L){for(const Q in L)Q!=="value"&&!_t(Q)&&i(T,Q,null,L[Q],C,a.children,_,y,$e);"value"in L&&i(T,"value",null,L.value,C),(v=L.onVnodeBeforeMount)&&Ce(v,_,a)}k&&Ie(a,null,_,"beforeMount");const z=Oi(y,N);z&&N.beforeEnter(T),s(T,f,p),((v=L&&L.onVnodeMounted)||z||k)&&me(()=>{v&&Ce(v,_,a),z&&N.enter(T),k&&Ie(a,null,_,"mounted")},y)},V=(a,f,p,_,y)=>{if(p&&S(a,p),_)for(let C=0;C<_.length;C++)S(a,_[C]);if(y){let C=y.subTree;if(f===C){const R=y.vnode;V(a,R,R.scopeId,R.slotScopeIds,y.parent)}}},A=(a,f,p,_,y,C,R,E,T=0)=>{for(let v=T;v{const E=f.el=a.el;let{patchFlag:T,dynamicChildren:v,dirs:L}=f;T|=a.patchFlag&16;const H=a.props||te,N=f.props||te;let k;if(p&&nt(p,!1),(k=N.onVnodeBeforeUpdate)&&Ce(k,p,f,a),L&&Ie(f,a,p,"beforeUpdate"),p&&nt(p,!0),v?w(a.dynamicChildren,v,E,p,_,Dn(f,y),C):R||F(a,f,E,null,p,_,Dn(f,y),C,!1),T>0){if(T&16)D(E,f,H,N,p,_,y);else if(T&2&&H.class!==N.class&&i(E,"class",null,N.class,y),T&4&&i(E,"style",H.style,N.style,y),T&8){const z=f.dynamicProps;for(let Q=0;Q{k&&Ce(k,p,f,a),L&&Ie(f,a,p,"updated")},_)},w=(a,f,p,_,y,C,R)=>{for(let E=0;E{if(p!==_){if(p!==te)for(const E in p)!_t(E)&&!(E in _)&&i(a,E,p[E],null,R,f.children,y,C,$e);for(const E in _){if(_t(E))continue;const T=_[E],v=p[E];T!==v&&E!=="value"&&i(a,E,v,T,R,f.children,y,C,$e)}"value"in _&&i(a,"value",p.value,_.value,R)}},x=(a,f,p,_,y,C,R,E,T)=>{const v=f.el=a?a.el:l(""),L=f.anchor=a?a.anchor:l("");let{patchFlag:H,dynamicChildren:N,slotScopeIds:k}=f;k&&(E=E?E.concat(k):k),a==null?(s(v,p,_),s(L,p,_),A(f.children||[],p,L,y,C,R,E,T)):H>0&&H&64&&N&&a.dynamicChildren?(w(a.dynamicChildren,N,p,y,C,R,E),(f.key!=null||y&&f===y.subTree)&&Li(a,f,!0)):F(a,f,p,L,y,C,R,E,T)},W=(a,f,p,_,y,C,R,E,T)=>{f.slotScopeIds=E,a==null?f.shapeFlag&512?y.ctx.activate(f,p,_,R,T):ie(f,p,_,y,C,R,T):le(a,f,T)},ie=(a,f,p,_,y,C,R)=>{const E=a.component=nc(a,_,y);if(An(a)&&(E.ctx.renderer=dt),sc(E),E.asyncDep){if(y&&y.registerDep(E,$),!a.el){const T=E.subTree=ue(ye);q(null,T,f,p)}}else $(E,a,f,p,y,C,R)},le=(a,f,p)=>{const _=f.component=a.component;if(al(a,f,p))if(_.asyncDep&&!_.asyncResolved){X(_,f,p);return}else _.next=f,nl(_.update),_.effect.dirty=!0,_.update();else f.el=a.el,_.vnode=f},$=(a,f,p,_,y,C,R)=>{const E=()=>{if(a.isMounted){let{next:L,bu:H,u:N,parent:k,vnode:z}=a;{const ht=Ii(a);if(ht){L&&(L.el=z.el,X(a,L,R)),ht.asyncDep.then(()=>{a.isUnmounted||E()});return}}let Q=L,ee;nt(a,!1),L?(L.el=z.el,X(a,L,R)):L=z,H&&Fn(H),(ee=L.props&&L.props.onVnodeBeforeUpdate)&&Ce(ee,k,L,z),nt(a,!0);const oe=Hn(a),Te=a.subTree;a.subTree=oe,M(Te,oe,h(Te.el),Bt(Te),a,y,C),L.el=oe.el,Q===null&&ul(a,oe.el),N&&me(N,y),(ee=L.props&&L.props.onVnodeUpdated)&&me(()=>Ce(ee,k,L,z),y)}else{let L;const{el:H,props:N}=f,{bm:k,m:z,parent:Q}=a,ee=bt(f);if(nt(a,!1),k&&Fn(k),!ee&&(L=N&&N.onVnodeBeforeMount)&&Ce(L,Q,f),nt(a,!0),H&&Nn){const oe=()=>{a.subTree=Hn(a),Nn(H,a.subTree,a,y,null)};ee?f.type.__asyncLoader().then(()=>!a.isUnmounted&&oe()):oe()}else{const oe=a.subTree=Hn(a);M(null,oe,p,_,a,y,C),f.el=oe.el}if(z&&me(z,y),!ee&&(L=N&&N.onVnodeMounted)){const oe=f;me(()=>Ce(L,Q,oe),y)}(f.shapeFlag&256||Q&&bt(Q.vnode)&&Q.vnode.shapeFlag&256)&&a.a&&me(a.a,y),a.isMounted=!0,f=p=_=null}},T=a.effect=new _s(E,xe,()=>Ts(v),a.scope),v=a.update=()=>{T.dirty&&T.run()};v.id=a.uid,nt(a,!0),v()},X=(a,f,p)=>{f.component=a;const _=a.vnode.props;a.vnode=f,a.next=null,Vl(a,f.props,_,p),Bl(a,f.children,p),Ze(),qs(a),et()},F=(a,f,p,_,y,C,R,E,T=!1)=>{const v=a&&a.children,L=a?a.shapeFlag:0,H=f.children,{patchFlag:N,shapeFlag:k}=f;if(N>0){if(N&128){Ut(v,H,p,_,y,C,R,E,T);return}else if(N&256){Fe(v,H,p,_,y,C,R,E,T);return}}k&8?(L&16&&$e(v,y,C),H!==v&&d(p,H)):L&16?k&16?Ut(v,H,p,_,y,C,R,E,T):$e(v,y,C,!0):(L&8&&d(p,""),k&16&&A(H,p,_,y,C,R,E,T))},Fe=(a,f,p,_,y,C,R,E,T)=>{a=a||gt,f=f||gt;const v=a.length,L=f.length,H=Math.min(v,L);let N;for(N=0;NL?$e(a,y,C,!0,!1,H):A(f,p,_,y,C,R,E,T,H)},Ut=(a,f,p,_,y,C,R,E,T)=>{let v=0;const L=f.length;let H=a.length-1,N=L-1;for(;v<=H&&v<=N;){const k=a[v],z=f[v]=T?qe(f[v]):Ae(f[v]);if(ot(k,z))M(k,z,p,null,y,C,R,E,T);else break;v++}for(;v<=H&&v<=N;){const k=a[H],z=f[N]=T?qe(f[N]):Ae(f[N]);if(ot(k,z))M(k,z,p,null,y,C,R,E,T);else break;H--,N--}if(v>H){if(v<=N){const k=N+1,z=kN)for(;v<=H;)Oe(a[v],y,C,!0),v++;else{const k=v,z=v,Q=new Map;for(v=z;v<=N;v++){const ve=f[v]=T?qe(f[v]):Ae(f[v]);ve.key!=null&&Q.set(ve.key,v)}let ee,oe=0;const Te=N-z+1;let ht=!1,Fs=0;const xt=new Array(Te);for(v=0;v=Te){Oe(ve,y,C,!0);continue}let Le;if(ve.key!=null)Le=Q.get(ve.key);else for(ee=z;ee<=N;ee++)if(xt[ee-z]===0&&ot(ve,f[ee])){Le=ee;break}Le===void 0?Oe(ve,y,C,!0):(xt[Le-z]=v+1,Le>=Fs?Fs=Le:ht=!0,M(ve,f[Le],p,null,y,C,R,E,T),oe++)}const $s=ht?zl(xt):gt;for(ee=$s.length-1,v=Te-1;v>=0;v--){const ve=z+v,Le=f[ve],Hs=ve+1{const{el:C,type:R,transition:E,children:T,shapeFlag:v}=a;if(v&6){tt(a.component.subTree,f,p,_);return}if(v&128){a.suspense.move(f,p,_);return}if(v&64){R.move(a,f,p,dt);return}if(R===_e){s(C,f,p);for(let H=0;HE.enter(C),y);else{const{leave:H,delayLeave:N,afterLeave:k}=E,z=()=>s(C,f,p),Q=()=>{H(C,()=>{z(),k&&k()})};N?N(C,z,Q):Q()}else s(C,f,p)},Oe=(a,f,p,_=!1,y=!1)=>{const{type:C,props:R,ref:E,children:T,dynamicChildren:v,shapeFlag:L,patchFlag:H,dirs:N}=a;if(E!=null&&hn(E,null,p,a,!0),L&256){f.ctx.deactivate(a);return}const k=L&1&&N,z=!bt(a);let Q;if(z&&(Q=R&&R.onVnodeBeforeUnmount)&&Ce(Q,f,a),L&6)oo(a.component,p,_);else{if(L&128){a.suspense.unmount(p,_);return}k&&Ie(a,null,f,"beforeUnmount"),L&64?a.type.remove(a,f,p,y,dt,_):v&&(C!==_e||H>0&&H&64)?$e(v,f,p,!1,!0):(C===_e&&H&384||!y&&L&16)&&$e(T,f,p),_&&Ms(a)}(z&&(Q=R&&R.onVnodeUnmounted)||k)&&me(()=>{Q&&Ce(Q,f,a),k&&Ie(a,null,f,"unmounted")},p)},Ms=a=>{const{type:f,el:p,anchor:_,transition:y}=a;if(f===_e){io(p,_);return}if(f===It){m(a);return}const C=()=>{r(p),y&&!y.persisted&&y.afterLeave&&y.afterLeave()};if(a.shapeFlag&1&&y&&!y.persisted){const{leave:R,delayLeave:E}=y,T=()=>R(p,C);E?E(a.el,C,T):T()}else C()},io=(a,f)=>{let p;for(;a!==f;)p=b(a),r(a),a=p;r(f)},oo=(a,f,p)=>{const{bum:_,scope:y,update:C,subTree:R,um:E}=a;_&&Fn(_),y.stop(),C&&(C.active=!1,Oe(R,a,f,p)),E&&me(E,f),me(()=>{a.isUnmounted=!0},f),f&&f.pendingBranch&&!f.isUnmounted&&a.asyncDep&&!a.asyncResolved&&a.suspenseId===f.pendingId&&(f.deps--,f.deps===0&&f.resolve())},$e=(a,f,p,_=!1,y=!1,C=0)=>{for(let R=C;Ra.shapeFlag&6?Bt(a.component.subTree):a.shapeFlag&128?a.suspense.next():b(a.anchor||a.el);let Pn=!1;const Ns=(a,f,p)=>{a==null?f._vnode&&Oe(f._vnode,null,null,!0):M(f._vnode||null,a,f,null,null,null,p),Pn||(Pn=!0,qs(),un(),Pn=!1),f._vnode=a},dt={p:M,um:Oe,m:tt,r:Ms,mt:ie,mc:A,pc:F,pbc:w,n:Bt,o:e};let Mn,Nn;return t&&([Mn,Nn]=t(dt)),{render:Ns,hydrate:Mn,createApp:$l(Ns,Mn)}}function Dn({type:e,props:t},n){return n==="svg"&&e==="foreignObject"||n==="mathml"&&e==="annotation-xml"&&t&&t.encoding&&t.encoding.includes("html")?void 0:n}function nt({effect:e,update:t},n){e.allowRecurse=t.allowRecurse=n}function Oi(e,t){return(!e||e&&!e.pendingBranch)&&t&&!t.persisted}function Li(e,t,n=!1){const s=e.children,r=t.children;if(U(s)&&U(r))for(let i=0;i>1,e[n[l]]0&&(t[s]=n[i-1]),n[i]=s)}}for(i=n.length,o=n[i-1];i-- >0;)n[i]=o,o=t[o];return n}function Ii(e){const t=e.subTree.component;if(t)return t.asyncDep&&!t.asyncResolved?t:Ii(t)}const Xl=e=>e.__isTeleport,_e=Symbol.for("v-fgt"),wt=Symbol.for("v-txt"),ye=Symbol.for("v-cmt"),It=Symbol.for("v-stc"),Pt=[];let Re=null;function Pi(e=!1){Pt.push(Re=e?null:[])}function Yl(){Pt.pop(),Re=Pt[Pt.length-1]||null}let Ht=1;function rr(e){Ht+=e}function Mi(e){return e.dynamicChildren=Ht>0?Re||gt:null,Yl(),Ht>0&&Re&&Re.push(e),e}function Ga(e,t,n,s,r,i){return Mi($i(e,t,n,s,r,i,!0))}function Ni(e,t,n,s,r){return Mi(ue(e,t,n,s,r,!0))}function pn(e){return e?e.__v_isVNode===!0:!1}function ot(e,t){return e.type===t.type&&e.key===t.key}const Fi=({key:e})=>e??null,rn=({ref:e,ref_key:t,ref_for:n})=>(typeof e=="number"&&(e=""+e),e!=null?se(e)||pe(e)||K(e)?{i:he,r:e,k:t,f:!!n}:e:null);function $i(e,t=null,n=null,s=0,r=null,i=e===_e?0:1,o=!1,l=!1){const c={__v_isVNode:!0,__v_skip:!0,type:e,props:t,key:t&&Fi(t),ref:t&&rn(t),scopeId:Sn,slotScopeIds:null,children:n,component:null,suspense:null,ssContent:null,ssFallback:null,dirs:null,transition:null,el:null,anchor:null,target:null,targetAnchor:null,staticCount:0,shapeFlag:i,patchFlag:s,dynamicProps:r,dynamicChildren:null,appContext:null,ctx:he};return l?(Os(c,n),i&128&&e.normalize(c)):n&&(c.shapeFlag|=se(n)?8:16),Ht>0&&!o&&Re&&(c.patchFlag>0||i&6)&&c.patchFlag!==32&&Re.push(c),c}const ue=Jl;function Jl(e,t=null,n=null,s=0,r=null,i=!1){if((!e||e===li)&&(e=ye),pn(e)){const l=Qe(e,t,!0);return n&&Os(l,n),Ht>0&&!i&&Re&&(l.shapeFlag&6?Re[Re.indexOf(e)]=l:Re.push(l)),l.patchFlag|=-2,l}if(lc(e)&&(e=e.__vccOpts),t){t=Ql(t);let{class:l,style:c}=t;l&&!se(l)&&(t.class=ms(l)),Z(c)&&(Yr(c)&&!U(c)&&(c=re({},c)),t.style=gs(c))}const o=se(e)?1:fl(e)?128:Xl(e)?64:Z(e)?4:K(e)?2:0;return $i(e,t,n,s,r,o,i,!0)}function Ql(e){return e?Yr(e)||Ci(e)?re({},e):e:null}function Qe(e,t,n=!1,s=!1){const{props:r,ref:i,patchFlag:o,children:l,transition:c}=e,u=t?Zl(r||{},t):r,d={__v_isVNode:!0,__v_skip:!0,type:e.type,props:u,key:u&&Fi(u),ref:t&&t.ref?n&&i?U(i)?i.concat(rn(t)):[i,rn(t)]:rn(t):i,scopeId:e.scopeId,slotScopeIds:e.slotScopeIds,children:l,target:e.target,targetAnchor:e.targetAnchor,staticCount:e.staticCount,shapeFlag:e.shapeFlag,patchFlag:t&&e.type!==_e?o===-1?16:o|16:o,dynamicProps:e.dynamicProps,dynamicChildren:e.dynamicChildren,appContext:e.appContext,dirs:e.dirs,transition:c,component:e.component,suspense:e.suspense,ssContent:e.ssContent&&Qe(e.ssContent),ssFallback:e.ssFallback&&Qe(e.ssFallback),el:e.el,anchor:e.anchor,ctx:e.ctx,ce:e.ce};return c&&s&&(d.transition=c.clone(d)),d}function Hi(e=" ",t=0){return ue(wt,null,e,t)}function za(e,t){const n=ue(It,null,e);return n.staticCount=t,n}function Xa(e="",t=!1){return t?(Pi(),Ni(ye,null,e)):ue(ye,null,e)}function Ae(e){return e==null||typeof e=="boolean"?ue(ye):U(e)?ue(_e,null,e.slice()):typeof e=="object"?qe(e):ue(wt,null,String(e))}function qe(e){return e.el===null&&e.patchFlag!==-1||e.memo?e:Qe(e)}function Os(e,t){let n=0;const{shapeFlag:s}=e;if(t==null)t=null;else if(U(t))n=16;else if(typeof t=="object")if(s&65){const r=t.default;r&&(r._c&&(r._d=!1),Os(e,r()),r._c&&(r._d=!0));return}else{n=32;const r=t._;!r&&!Ci(t)?t._ctx=he:r===3&&he&&(he.slots._===1?t._=1:(t._=2,e.patchFlag|=1024))}else K(t)?(t={default:t,_ctx:he},n=32):(t=String(t),s&64?(n=16,t=[Hi(t)]):n=8);e.children=t,e.shapeFlag|=n}function Zl(...e){const t={};for(let n=0;nce||he;let gn,as;{const e=Fr(),t=(n,s)=>{let r;return(r=e[n])||(r=e[n]=[]),r.push(s),i=>{r.length>1?r.forEach(o=>o(i)):r[0](i)}};gn=t("__VUE_INSTANCE_SETTERS__",n=>ce=n),as=t("__VUE_SSR_SETTERS__",n=>In=n)}const Dt=e=>{const t=ce;return gn(e),e.scope.on(),()=>{e.scope.off(),gn(t)}},ir=()=>{ce&&ce.scope.off(),gn(null)};function ji(e){return e.vnode.shapeFlag&4}let In=!1;function sc(e,t=!1){t&&as(t);const{props:n,children:s}=e.vnode,r=ji(e);jl(e,n,r,t),Ul(e,s);const i=r?rc(e,t):void 0;return t&&as(!1),i}function rc(e,t){const n=e.type;e.accessCache=Object.create(null),e.proxy=new Proxy(e.ctx,Rl);const{setup:s}=n;if(s){const r=e.setupContext=s.length>1?Di(e):null,i=Dt(e);Ze();const o=Xe(s,e,0,[e.props,r]);if(et(),i(),Ir(o)){if(o.then(ir,ir),t)return o.then(l=>{or(e,l,t)}).catch(l=>{En(l,e,0)});e.asyncDep=o}else or(e,o,t)}else Vi(e,t)}function or(e,t,n){K(t)?e.type.__ssrInlineRender?e.ssrRender=t:e.render=t:Z(t)&&(e.setupState=ti(t)),Vi(e,n)}let lr;function Vi(e,t,n){const s=e.type;if(!e.render){if(!t&&lr&&!s.render){const r=s.template||As(e).template;if(r){const{isCustomElement:i,compilerOptions:o}=e.appContext.config,{delimiters:l,compilerOptions:c}=s,u=re(re({isCustomElement:i,delimiters:l},o),c);s.render=lr(r,u)}}e.render=s.render||xe}{const r=Dt(e);Ze();try{Ll(e)}finally{et(),r()}}}const ic={get(e,t){return be(e,"get",""),e[t]}};function Di(e){const t=n=>{e.exposed=n||{}};return{attrs:new Proxy(e.attrs,ic),slots:e.slots,emit:e.emit,expose:t}}function Ls(e){if(e.exposed)return e.exposeProxy||(e.exposeProxy=new Proxy(ti(sn(e.exposed)),{get(t,n){if(n in t)return t[n];if(n in Ot)return Ot[n](e)},has(t,n){return n in t||n in Ot}}))}function oc(e,t=!0){return K(e)?e.displayName||e.name:e.name||t&&e.__name}function lc(e){return K(e)&&"__vccOpts"in e}const ne=(e,t)=>Wo(e,t,In);function us(e,t,n){const s=arguments.length;return s===2?Z(t)&&!U(t)?pn(t)?ue(e,null,[t]):ue(e,t):ue(e,null,t):(s>3?n=Array.prototype.slice.call(arguments,2):s===3&&pn(n)&&(n=[n]),ue(e,t,n))}const cc="3.4.27";/** -* @vue/runtime-dom v3.4.27 -* (c) 2018-present Yuxi (Evan) You and Vue contributors -* @license MIT -**/const ac="http://www.w3.org/2000/svg",uc="http://www.w3.org/1998/Math/MathML",Ge=typeof document<"u"?document:null,cr=Ge&&Ge.createElement("template"),fc={insert:(e,t,n)=>{t.insertBefore(e,n||null)},remove:e=>{const t=e.parentNode;t&&t.removeChild(e)},createElement:(e,t,n,s)=>{const r=t==="svg"?Ge.createElementNS(ac,e):t==="mathml"?Ge.createElementNS(uc,e):Ge.createElement(e,n?{is:n}:void 0);return e==="select"&&s&&s.multiple!=null&&r.setAttribute("multiple",s.multiple),r},createText:e=>Ge.createTextNode(e),createComment:e=>Ge.createComment(e),setText:(e,t)=>{e.nodeValue=t},setElementText:(e,t)=>{e.textContent=t},parentNode:e=>e.parentNode,nextSibling:e=>e.nextSibling,querySelector:e=>Ge.querySelector(e),setScopeId(e,t){e.setAttribute(t,"")},insertStaticContent(e,t,n,s,r,i){const o=n?n.previousSibling:t.lastChild;if(r&&(r===i||r.nextSibling))for(;t.insertBefore(r.cloneNode(!0),n),!(r===i||!(r=r.nextSibling)););else{cr.innerHTML=s==="svg"?`${e}`:s==="mathml"?`${e}`:e;const l=cr.content;if(s==="svg"||s==="mathml"){const c=l.firstChild;for(;c.firstChild;)l.appendChild(c.firstChild);l.removeChild(c)}t.insertBefore(l,n)}return[o?o.nextSibling:t.firstChild,n?n.previousSibling:t.lastChild]}},Be="transition",St="animation",jt=Symbol("_vtc"),Ui=(e,{slots:t})=>us(_l,dc(e),t);Ui.displayName="Transition";const Bi={name:String,type:String,css:{type:Boolean,default:!0},duration:[String,Number,Object],enterFromClass:String,enterActiveClass:String,enterToClass:String,appearFromClass:String,appearActiveClass:String,appearToClass:String,leaveFromClass:String,leaveActiveClass:String,leaveToClass:String};Ui.props=re({},di,Bi);const st=(e,t=[])=>{U(e)?e.forEach(n=>n(...t)):e&&e(...t)},ar=e=>e?U(e)?e.some(t=>t.length>1):e.length>1:!1;function dc(e){const t={};for(const x in e)x in Bi||(t[x]=e[x]);if(e.css===!1)return t;const{name:n="v",type:s,duration:r,enterFromClass:i=`${n}-enter-from`,enterActiveClass:o=`${n}-enter-active`,enterToClass:l=`${n}-enter-to`,appearFromClass:c=i,appearActiveClass:u=o,appearToClass:d=l,leaveFromClass:h=`${n}-leave-from`,leaveActiveClass:b=`${n}-leave-active`,leaveToClass:S=`${n}-leave-to`}=e,P=hc(r),M=P&&P[0],B=P&&P[1],{onBeforeEnter:q,onEnter:G,onEnterCancelled:g,onLeave:m,onLeaveCancelled:I,onBeforeAppear:O=q,onAppear:V=G,onAppearCancelled:A=g}=t,j=(x,W,ie)=>{rt(x,W?d:l),rt(x,W?u:o),ie&&ie()},w=(x,W)=>{x._isLeaving=!1,rt(x,h),rt(x,S),rt(x,b),W&&W()},D=x=>(W,ie)=>{const le=x?V:G,$=()=>j(W,x,ie);st(le,[W,$]),ur(()=>{rt(W,x?c:i),ke(W,x?d:l),ar(le)||fr(W,s,M,$)})};return re(t,{onBeforeEnter(x){st(q,[x]),ke(x,i),ke(x,o)},onBeforeAppear(x){st(O,[x]),ke(x,c),ke(x,u)},onEnter:D(!1),onAppear:D(!0),onLeave(x,W){x._isLeaving=!0;const ie=()=>w(x,W);ke(x,h),ke(x,b),mc(),ur(()=>{x._isLeaving&&(rt(x,h),ke(x,S),ar(m)||fr(x,s,B,ie))}),st(m,[x,ie])},onEnterCancelled(x){j(x,!1),st(g,[x])},onAppearCancelled(x){j(x,!0),st(A,[x])},onLeaveCancelled(x){w(x),st(I,[x])}})}function hc(e){if(e==null)return null;if(Z(e))return[Un(e.enter),Un(e.leave)];{const t=Un(e);return[t,t]}}function Un(e){return po(e)}function ke(e,t){t.split(/\s+/).forEach(n=>n&&e.classList.add(n)),(e[jt]||(e[jt]=new Set)).add(t)}function rt(e,t){t.split(/\s+/).forEach(s=>s&&e.classList.remove(s));const n=e[jt];n&&(n.delete(t),n.size||(e[jt]=void 0))}function ur(e){requestAnimationFrame(()=>{requestAnimationFrame(e)})}let pc=0;function fr(e,t,n,s){const r=e._endId=++pc,i=()=>{r===e._endId&&s()};if(n)return setTimeout(i,n);const{type:o,timeout:l,propCount:c}=gc(e,t);if(!o)return s();const u=o+"end";let d=0;const h=()=>{e.removeEventListener(u,b),i()},b=S=>{S.target===e&&++d>=c&&h()};setTimeout(()=>{d(n[P]||"").split(", "),r=s(`${Be}Delay`),i=s(`${Be}Duration`),o=dr(r,i),l=s(`${St}Delay`),c=s(`${St}Duration`),u=dr(l,c);let d=null,h=0,b=0;t===Be?o>0&&(d=Be,h=o,b=i.length):t===St?u>0&&(d=St,h=u,b=c.length):(h=Math.max(o,u),d=h>0?o>u?Be:St:null,b=d?d===Be?i.length:c.length:0);const S=d===Be&&/\b(transform|all)(,|$)/.test(s(`${Be}Property`).toString());return{type:d,timeout:h,propCount:b,hasTransform:S}}function dr(e,t){for(;e.lengthhr(n)+hr(e[s])))}function hr(e){return e==="auto"?0:Number(e.slice(0,-1).replace(",","."))*1e3}function mc(){return document.body.offsetHeight}function _c(e,t,n){const s=e[jt];s&&(t=(t?[t,...s]:[...s]).join(" ")),t==null?e.removeAttribute("class"):n?e.setAttribute("class",t):e.className=t}const pr=Symbol("_vod"),yc=Symbol("_vsh"),bc=Symbol(""),vc=/(^|;)\s*display\s*:/;function wc(e,t,n){const s=e.style,r=se(n);let i=!1;if(n&&!r){if(t)if(se(t))for(const o of t.split(";")){const l=o.slice(0,o.indexOf(":")).trim();n[l]==null&&on(s,l,"")}else for(const o in t)n[o]==null&&on(s,o,"");for(const o in n)o==="display"&&(i=!0),on(s,o,n[o])}else if(r){if(t!==n){const o=s[bc];o&&(n+=";"+o),s.cssText=n,i=vc.test(n)}}else t&&e.removeAttribute("style");pr in e&&(e[pr]=i?s.display:"",e[yc]&&(s.display="none"))}const gr=/\s*!important$/;function on(e,t,n){if(U(n))n.forEach(s=>on(e,t,s));else if(n==null&&(n=""),t.startsWith("--"))e.setProperty(t,n);else{const s=Ec(e,t);gr.test(n)?e.setProperty(ft(s),n.replace(gr,""),"important"):e[s]=n}}const mr=["Webkit","Moz","ms"],Bn={};function Ec(e,t){const n=Bn[t];if(n)return n;let s=Ne(t);if(s!=="filter"&&s in e)return Bn[t]=s;s=yn(s);for(let r=0;rkn||(Oc.then(()=>kn=0),kn=Date.now());function Ic(e,t){const n=s=>{if(!s._vts)s._vts=Date.now();else if(s._vts<=n.attached)return;Se(Pc(s,n.value),t,5,[s])};return n.value=e,n.attached=Lc(),n}function Pc(e,t){if(U(t)){const n=e.stopImmediatePropagation;return e.stopImmediatePropagation=()=>{n.call(e),e._stopped=!0},t.map(s=>r=>!r._stopped&&s&&s(r))}else return t}const vr=e=>e.charCodeAt(0)===111&&e.charCodeAt(1)===110&&e.charCodeAt(2)>96&&e.charCodeAt(2)<123,Mc=(e,t,n,s,r,i,o,l,c)=>{const u=r==="svg";t==="class"?_c(e,s,u):t==="style"?wc(e,n,s):Vt(t)?ds(t)||Ac(e,t,n,s,o):(t[0]==="."?(t=t.slice(1),!0):t[0]==="^"?(t=t.slice(1),!1):Nc(e,t,s,u))?xc(e,t,s,i,o,l,c):(t==="true-value"?e._trueValue=s:t==="false-value"&&(e._falseValue=s),Cc(e,t,s,u))};function Nc(e,t,n,s){if(s)return!!(t==="innerHTML"||t==="textContent"||t in e&&vr(t)&&K(n));if(t==="spellcheck"||t==="draggable"||t==="translate"||t==="form"||t==="list"&&e.tagName==="INPUT"||t==="type"&&e.tagName==="TEXTAREA")return!1;if(t==="width"||t==="height"){const r=e.tagName;if(r==="IMG"||r==="VIDEO"||r==="CANVAS"||r==="SOURCE")return!1}return vr(t)&&se(n)?!1:t in e}const Fc=["ctrl","shift","alt","meta"],$c={stop:e=>e.stopPropagation(),prevent:e=>e.preventDefault(),self:e=>e.target!==e.currentTarget,ctrl:e=>!e.ctrlKey,shift:e=>!e.shiftKey,alt:e=>!e.altKey,meta:e=>!e.metaKey,left:e=>"button"in e&&e.button!==0,middle:e=>"button"in e&&e.button!==1,right:e=>"button"in e&&e.button!==2,exact:(e,t)=>Fc.some(n=>e[`${n}Key`]&&!t.includes(n))},Ya=(e,t)=>{const n=e._withMods||(e._withMods={}),s=t.join(".");return n[s]||(n[s]=(r,...i)=>{for(let o=0;o{const n=e._withKeys||(e._withKeys={}),s=t.join(".");return n[s]||(n[s]=r=>{if(!("key"in r))return;const i=ft(r.key);if(t.some(o=>o===i||Hc[o]===i))return e(r)})},jc=re({patchProp:Mc},fc);let Kn,wr=!1;function Vc(){return Kn=wr?Kn:ql(jc),wr=!0,Kn}const Qa=(...e)=>{const t=Vc().createApp(...e),{mount:n}=t;return t.mount=s=>{const r=Uc(s);if(r)return n(r,!0,Dc(r))},t};function Dc(e){if(e instanceof SVGElement)return"svg";if(typeof MathMLElement=="function"&&e instanceof MathMLElement)return"mathml"}function Uc(e){return se(e)?document.querySelector(e):e}const Za=(e,t)=>{const n=e.__vccOpts||e;for(const[s,r]of t)n[s]=r;return n},eu="/logo.png",Bc="modulepreload",kc=function(e){return"/"+e},Er={},tu=function(t,n,s){let r=Promise.resolve();if(n&&n.length>0){document.getElementsByTagName("link");const i=document.querySelector("meta[property=csp-nonce]"),o=(i==null?void 0:i.nonce)||(i==null?void 0:i.getAttribute("nonce"));r=Promise.all(n.map(l=>{if(l=kc(l),l in Er)return;Er[l]=!0;const c=l.endsWith(".css"),u=c?'[rel="stylesheet"]':"";if(document.querySelector(`link[href="${l}"]${u}`))return;const d=document.createElement("link");if(d.rel=c?"stylesheet":Bc,c||(d.as="script",d.crossOrigin=""),d.href=l,o&&d.setAttribute("nonce",o),document.head.appendChild(d),c)return new Promise((h,b)=>{d.addEventListener("load",h),d.addEventListener("error",()=>b(new Error(`Unable to preload CSS for ${l}`)))})}))}return r.then(()=>t()).catch(i=>{const o=new Event("vite:preloadError",{cancelable:!0});if(o.payload=i,window.dispatchEvent(o),!o.defaultPrevented)throw i})},Kc=window.__VP_SITE_DATA__;function Is(e){return jr()?(Co(e),!0):!1}function Ye(e){return typeof e=="function"?e():ei(e)}const ki=typeof window<"u"&&typeof document<"u";typeof WorkerGlobalScope<"u"&&globalThis instanceof WorkerGlobalScope;const Wc=Object.prototype.toString,qc=e=>Wc.call(e)==="[object Object]",Ki=()=>{},Cr=Gc();function Gc(){var e,t;return ki&&((e=window==null?void 0:window.navigator)==null?void 0:e.userAgent)&&(/iP(ad|hone|od)/.test(window.navigator.userAgent)||((t=window==null?void 0:window.navigator)==null?void 0:t.maxTouchPoints)>2&&/iPad|Macintosh/.test(window==null?void 0:window.navigator.userAgent))}function zc(e,t){function n(...s){return new Promise((r,i)=>{Promise.resolve(e(()=>t.apply(this,s),{fn:t,thisArg:this,args:s})).then(r).catch(i)})}return n}const Wi=e=>e();function Xc(e=Wi){const t=ae(!0);function n(){t.value=!1}function s(){t.value=!0}const r=(...i)=>{t.value&&e(...i)};return{isActive:wn(t),pause:n,resume:s,eventFilter:r}}function Yc(e){return Ln()}function qi(...e){if(e.length!==1)return Qo(...e);const t=e[0];return typeof t=="function"?wn(Xo(()=>({get:t,set:Ki}))):ae(t)}function Jc(e,t,n={}){const{eventFilter:s=Wi,...r}=n;return Me(e,zc(s,t),r)}function Qc(e,t,n={}){const{eventFilter:s,...r}=n,{eventFilter:i,pause:o,resume:l,isActive:c}=Xc(s);return{stop:Jc(e,t,{...r,eventFilter:i}),pause:o,resume:l,isActive:c}}function Ps(e,t=!0,n){Yc()?Ct(e,n):t?e():Cn(e)}function Gi(e){var t;const n=Ye(e);return(t=n==null?void 0:n.$el)!=null?t:n}const je=ki?window:void 0;function Et(...e){let t,n,s,r;if(typeof e[0]=="string"||Array.isArray(e[0])?([n,s,r]=e,t=je):[t,n,s,r]=e,!t)return Ki;Array.isArray(n)||(n=[n]),Array.isArray(s)||(s=[s]);const i=[],o=()=>{i.forEach(d=>d()),i.length=0},l=(d,h,b,S)=>(d.addEventListener(h,b,S),()=>d.removeEventListener(h,b,S)),c=Me(()=>[Gi(t),Ye(r)],([d,h])=>{if(o(),!d)return;const b=qc(h)?{...h}:h;i.push(...n.flatMap(S=>s.map(P=>l(d,S,P,b))))},{immediate:!0,flush:"post"}),u=()=>{c(),o()};return Is(u),u}function Zc(e){return typeof e=="function"?e:typeof e=="string"?t=>t.key===e:Array.isArray(e)?t=>e.includes(t.key):()=>!0}function nu(...e){let t,n,s={};e.length===3?(t=e[0],n=e[1],s=e[2]):e.length===2?typeof e[1]=="object"?(t=!0,n=e[0],s=e[1]):(t=e[0],n=e[1]):(t=!0,n=e[0]);const{target:r=je,eventName:i="keydown",passive:o=!1,dedupe:l=!1}=s,c=Zc(t);return Et(r,i,d=>{d.repeat&&Ye(l)||c(d)&&n(d)},o)}function ea(){const e=ae(!1),t=Ln();return t&&Ct(()=>{e.value=!0},t),e}function ta(e){const t=ea();return ne(()=>(t.value,!!e()))}function zi(e,t={}){const{window:n=je}=t,s=ta(()=>n&&"matchMedia"in n&&typeof n.matchMedia=="function");let r;const i=ae(!1),o=u=>{i.value=u.matches},l=()=>{r&&("removeEventListener"in r?r.removeEventListener("change",o):r.removeListener(o))},c=ui(()=>{s.value&&(l(),r=n.matchMedia(Ye(e)),"addEventListener"in r?r.addEventListener("change",o):r.addListener(o),i.value=r.matches)});return Is(()=>{c(),l(),r=void 0}),i}const Qt=typeof globalThis<"u"?globalThis:typeof window<"u"?window:typeof global<"u"?global:typeof self<"u"?self:{},Zt="__vueuse_ssr_handlers__",na=sa();function sa(){return Zt in Qt||(Qt[Zt]=Qt[Zt]||{}),Qt[Zt]}function Xi(e,t){return na[e]||t}function ra(e){return e==null?"any":e instanceof Set?"set":e instanceof Map?"map":e instanceof Date?"date":typeof e=="boolean"?"boolean":typeof e=="string"?"string":typeof e=="object"?"object":Number.isNaN(e)?"any":"number"}const ia={boolean:{read:e=>e==="true",write:e=>String(e)},object:{read:e=>JSON.parse(e),write:e=>JSON.stringify(e)},number:{read:e=>Number.parseFloat(e),write:e=>String(e)},any:{read:e=>e,write:e=>String(e)},string:{read:e=>e,write:e=>String(e)},map:{read:e=>new Map(JSON.parse(e)),write:e=>JSON.stringify(Array.from(e.entries()))},set:{read:e=>new Set(JSON.parse(e)),write:e=>JSON.stringify(Array.from(e))},date:{read:e=>new Date(e),write:e=>e.toISOString()}},xr="vueuse-storage";function oa(e,t,n,s={}){var r;const{flush:i="pre",deep:o=!0,listenToStorageChanges:l=!0,writeDefaults:c=!0,mergeDefaults:u=!1,shallow:d,window:h=je,eventFilter:b,onError:S=w=>{console.error(w)},initOnMounted:P}=s,M=(d?Qr:ae)(typeof t=="function"?t():t);if(!n)try{n=Xi("getDefaultStorage",()=>{var w;return(w=je)==null?void 0:w.localStorage})()}catch(w){S(w)}if(!n)return M;const B=Ye(t),q=ra(B),G=(r=s.serializer)!=null?r:ia[q],{pause:g,resume:m}=Qc(M,()=>O(M.value),{flush:i,deep:o,eventFilter:b});h&&l&&Ps(()=>{Et(h,"storage",A),Et(h,xr,j),P&&A()}),P||A();function I(w,D){h&&h.dispatchEvent(new CustomEvent(xr,{detail:{key:e,oldValue:w,newValue:D,storageArea:n}}))}function O(w){try{const D=n.getItem(e);if(w==null)I(D,null),n.removeItem(e);else{const x=G.write(w);D!==x&&(n.setItem(e,x),I(D,x))}}catch(D){S(D)}}function V(w){const D=w?w.newValue:n.getItem(e);if(D==null)return c&&B!=null&&n.setItem(e,G.write(B)),B;if(!w&&u){const x=G.read(D);return typeof u=="function"?u(x,B):q==="object"&&!Array.isArray(x)?{...B,...x}:x}else return typeof D!="string"?D:G.read(D)}function A(w){if(!(w&&w.storageArea!==n)){if(w&&w.key==null){M.value=B;return}if(!(w&&w.key!==e)){g();try{(w==null?void 0:w.newValue)!==G.write(M.value)&&(M.value=V(w))}catch(D){S(D)}finally{w?Cn(m):m()}}}}function j(w){A(w.detail)}return M}function Yi(e){return zi("(prefers-color-scheme: dark)",e)}function la(e={}){const{selector:t="html",attribute:n="class",initialValue:s="auto",window:r=je,storage:i,storageKey:o="vueuse-color-scheme",listenToStorageChanges:l=!0,storageRef:c,emitAuto:u,disableTransition:d=!0}=e,h={auto:"",light:"light",dark:"dark",...e.modes||{}},b=Yi({window:r}),S=ne(()=>b.value?"dark":"light"),P=c||(o==null?qi(s):oa(o,s,i,{window:r,listenToStorageChanges:l})),M=ne(()=>P.value==="auto"?S.value:P.value),B=Xi("updateHTMLAttrs",(m,I,O)=>{const V=typeof m=="string"?r==null?void 0:r.document.querySelector(m):Gi(m);if(!V)return;let A;if(d&&(A=r.document.createElement("style"),A.appendChild(document.createTextNode("*,*::before,*::after{-webkit-transition:none!important;-moz-transition:none!important;-o-transition:none!important;-ms-transition:none!important;transition:none!important}")),r.document.head.appendChild(A)),I==="class"){const j=O.split(/\s/g);Object.values(h).flatMap(w=>(w||"").split(/\s/g)).filter(Boolean).forEach(w=>{j.includes(w)?V.classList.add(w):V.classList.remove(w)})}else V.setAttribute(I,O);d&&(r.getComputedStyle(A).opacity,document.head.removeChild(A))});function q(m){var I;B(t,n,(I=h[m])!=null?I:m)}function G(m){e.onChanged?e.onChanged(m,q):q(m)}Me(M,G,{flush:"post",immediate:!0}),Ps(()=>G(M.value));const g=ne({get(){return u?P.value:M.value},set(m){P.value=m}});try{return Object.assign(g,{store:P,system:S,state:M})}catch{return g}}function ca(e={}){const{valueDark:t="dark",valueLight:n="",window:s=je}=e,r=la({...e,onChanged:(l,c)=>{var u;e.onChanged?(u=e.onChanged)==null||u.call(e,l==="dark",c,l):c(l)},modes:{dark:t,light:n}}),i=ne(()=>r.system?r.system.value:Yi({window:s}).value?"dark":"light");return ne({get(){return r.value==="dark"},set(l){const c=l?"dark":"light";i.value===c?r.value="auto":r.value=c}})}function Wn(e){return typeof Window<"u"&&e instanceof Window?e.document.documentElement:typeof Document<"u"&&e instanceof Document?e.documentElement:e}function Ji(e){const t=window.getComputedStyle(e);if(t.overflowX==="scroll"||t.overflowY==="scroll"||t.overflowX==="auto"&&e.clientWidth1?!0:(t.preventDefault&&t.preventDefault(),!1)}const en=new WeakMap;function su(e,t=!1){const n=ae(t);let s=null;Me(qi(e),o=>{const l=Wn(Ye(o));if(l){const c=l;en.get(c)||en.set(c,c.style.overflow),n.value&&(c.style.overflow="hidden")}},{immediate:!0});const r=()=>{const o=Wn(Ye(e));!o||n.value||(Cr&&(s=Et(o,"touchmove",l=>{aa(l)},{passive:!1})),o.style.overflow="hidden",n.value=!0)},i=()=>{var o;const l=Wn(Ye(e));!l||!n.value||(Cr&&(s==null||s()),l.style.overflow=(o=en.get(l))!=null?o:"",en.delete(l),n.value=!1)};return Is(i),ne({get(){return n.value},set(o){o?r():i()}})}function ru(e={}){const{window:t=je,behavior:n="auto"}=e;if(!t)return{x:ae(0),y:ae(0)};const s=ae(t.scrollX),r=ae(t.scrollY),i=ne({get(){return s.value},set(l){scrollTo({left:l,behavior:n})}}),o=ne({get(){return r.value},set(l){scrollTo({top:l,behavior:n})}});return Et(t,"scroll",()=>{s.value=t.scrollX,r.value=t.scrollY},{capture:!1,passive:!0}),{x:i,y:o}}function iu(e={}){const{window:t=je,initialWidth:n=Number.POSITIVE_INFINITY,initialHeight:s=Number.POSITIVE_INFINITY,listenOrientation:r=!0,includeScrollbar:i=!0}=e,o=ae(n),l=ae(s),c=()=>{t&&(i?(o.value=t.innerWidth,l.value=t.innerHeight):(o.value=t.document.documentElement.clientWidth,l.value=t.document.documentElement.clientHeight))};if(c(),Ps(c),Et("resize",c,{passive:!0}),r){const u=zi("(orientation: portrait)");Me(u,()=>c())}return{width:o,height:l}}var qn={BASE_URL:"/",MODE:"production",DEV:!1,PROD:!0,SSR:!1},Gn={};const Qi=/^(?:[a-z]+:|\/\/)/i,ua="vitepress-theme-appearance",fa=/#.*$/,da=/[?#].*$/,ha=/(?:(^|\/)index)?\.(?:md|html)$/,fe=typeof document<"u",Zi={relativePath:"404.md",filePath:"",title:"404",description:"Not Found",headers:[],frontmatter:{sidebar:!1,layout:"page"},lastUpdated:0,isNotFound:!0};function pa(e,t,n=!1){if(t===void 0)return!1;if(e=Sr(`/${e}`),n)return new RegExp(t).test(e);if(Sr(t)!==e)return!1;const s=t.match(fa);return s?(fe?location.hash:"")===s[0]:!0}function Sr(e){return decodeURI(e).replace(da,"").replace(ha,"$1")}function ga(e){return Qi.test(e)}function ma(e,t){return Object.keys((e==null?void 0:e.locales)||{}).find(n=>n!=="root"&&!ga(n)&&pa(t,`/${n}/`,!0))||"root"}function _a(e,t){var s,r,i,o,l,c,u;const n=ma(e,t);return Object.assign({},e,{localeIndex:n,lang:((s=e.locales[n])==null?void 0:s.lang)??e.lang,dir:((r=e.locales[n])==null?void 0:r.dir)??e.dir,title:((i=e.locales[n])==null?void 0:i.title)??e.title,titleTemplate:((o=e.locales[n])==null?void 0:o.titleTemplate)??e.titleTemplate,description:((l=e.locales[n])==null?void 0:l.description)??e.description,head:to(e.head,((c=e.locales[n])==null?void 0:c.head)??[]),themeConfig:{...e.themeConfig,...(u=e.locales[n])==null?void 0:u.themeConfig}})}function eo(e,t){const n=t.title||e.title,s=t.titleTemplate??e.titleTemplate;if(typeof s=="string"&&s.includes(":title"))return s.replace(/:title/g,n);const r=ya(e.title,s);return n===r.slice(3)?n:`${n}${r}`}function ya(e,t){return t===!1?"":t===!0||t===void 0?` | ${e}`:e===t?"":` | ${t}`}function ba(e,t){const[n,s]=t;if(n!=="meta")return!1;const r=Object.entries(s)[0];return r==null?!1:e.some(([i,o])=>i===n&&o[r[0]]===r[1])}function to(e,t){return[...e.filter(n=>!ba(t,n)),...t]}const va=/[\u0000-\u001F"#$&*+,:;<=>?[\]^`{|}\u007F]/g,wa=/^[a-z]:/i;function Tr(e){const t=wa.exec(e),n=t?t[0]:"";return n+e.slice(n.length).replace(va,"_").replace(/(^|\/)_+(?=[^/]*$)/,"$1")}const zn=new Set;function Ea(e){if(zn.size===0){const n=typeof process=="object"&&(Gn==null?void 0:Gn.VITE_EXTRA_EXTENSIONS)||(qn==null?void 0:qn.VITE_EXTRA_EXTENSIONS)||"";("3g2,3gp,aac,ai,apng,au,avif,bin,bmp,cer,class,conf,crl,css,csv,dll,doc,eps,epub,exe,gif,gz,ics,ief,jar,jpe,jpeg,jpg,js,json,jsonld,m4a,man,mid,midi,mjs,mov,mp2,mp3,mp4,mpe,mpeg,mpg,mpp,oga,ogg,ogv,ogx,opus,otf,p10,p7c,p7m,p7s,pdf,png,ps,qt,roff,rtf,rtx,ser,svg,t,tif,tiff,tr,ts,tsv,ttf,txt,vtt,wav,weba,webm,webp,woff,woff2,xhtml,xml,yaml,yml,zip"+(n&&typeof n=="string"?","+n:"")).split(",").forEach(s=>zn.add(s))}const t=e.split(".").pop();return t==null||!zn.has(t.toLowerCase())}const Ca=Symbol(),at=Qr(Kc);function ou(e){const t=ne(()=>_a(at.value,e.data.relativePath)),n=t.value.appearance,s=n==="force-dark"?ae(!0):n?ca({storageKey:ua,initialValue:()=>typeof n=="string"?n:"auto",...typeof n=="object"?n:{}}):ae(!1),r=ae(fe?location.hash:"");return fe&&window.addEventListener("hashchange",()=>{r.value=location.hash}),Me(()=>e.data,()=>{r.value=fe?location.hash:""}),{site:t,theme:ne(()=>t.value.themeConfig),page:ne(()=>e.data),frontmatter:ne(()=>e.data.frontmatter),params:ne(()=>e.data.params),lang:ne(()=>t.value.lang),dir:ne(()=>e.data.frontmatter.dir||t.value.dir),localeIndex:ne(()=>t.value.localeIndex||"root"),title:ne(()=>eo(t.value,e.data)),description:ne(()=>e.data.description||t.value.description),isDark:s,hash:ne(()=>r.value)}}function xa(){const e=vt(Ca);if(!e)throw new Error("vitepress data not properly injected in app");return e}function Sa(e,t){return`${e}${t}`.replace(/\/+/g,"/")}function Ar(e){return Qi.test(e)||!e.startsWith("/")?e:Sa(at.value.base,e)}function Ta(e){let t=e.replace(/\.html$/,"");if(t=decodeURIComponent(t),t=t.replace(/\/$/,"/index"),fe){const n="/";t=Tr(t.slice(n.length).replace(/\//g,"_")||"index")+".md";let s=__VP_HASH_MAP__[t.toLowerCase()];if(s||(t=t.endsWith("_index.md")?t.slice(0,-9)+".md":t.slice(0,-3)+"_index.md",s=__VP_HASH_MAP__[t.toLowerCase()]),!s)return null;t=`${n}assets/${t}.${s}.js`}else t=`./${Tr(t.slice(1).replace(/\//g,"_"))}.md.js`;return t}let ln=[];function lu(e){ln.push(e),On(()=>{ln=ln.filter(t=>t!==e)})}function Aa(){let e=at.value.scrollOffset,t=0,n=24;if(typeof e=="object"&&"padding"in e&&(n=e.padding,e=e.selector),typeof e=="number")t=e;else if(typeof e=="string")t=Rr(e,n);else if(Array.isArray(e))for(const s of e){const r=Rr(s,n);if(r){t=r;break}}return t}function Rr(e,t){const n=document.querySelector(e);if(!n)return 0;const s=n.getBoundingClientRect().bottom;return s<0?0:s+t}const Ra=Symbol(),no="http://a.com",Oa=()=>({path:"/",component:null,data:Zi});function cu(e,t){const n=vn(Oa()),s={route:n,go:r};async function r(l=fe?location.href:"/"){var c,u;l=Xn(l),await((c=s.onBeforeRouteChange)==null?void 0:c.call(s,l))!==!1&&(fe&&l!==Xn(location.href)&&(history.replaceState({scrollPosition:window.scrollY},""),history.pushState({},"",l)),await o(l),await((u=s.onAfterRouteChanged)==null?void 0:u.call(s,l)))}let i=null;async function o(l,c=0,u=!1){var b;if(await((b=s.onBeforePageLoad)==null?void 0:b.call(s,l))===!1)return;const d=new URL(l,no),h=i=d.pathname;try{let S=await e(h);if(!S)throw new Error(`Page not found: ${h}`);if(i===h){i=null;const{default:P,__pageData:M}=S;if(!P)throw new Error(`Invalid route component: ${P}`);n.path=fe?h:Ar(h),n.component=sn(P),n.data=sn(M),fe&&Cn(()=>{let B=at.value.base+M.relativePath.replace(/(?:(^|\/)index)?\.md$/,"$1");if(!at.value.cleanUrls&&!B.endsWith("/")&&(B+=".html"),B!==d.pathname&&(d.pathname=B,l=B+d.search+d.hash,history.replaceState({},"",l)),d.hash&&!c){let q=null;try{q=document.getElementById(decodeURIComponent(d.hash).slice(1))}catch(G){console.warn(G)}if(q){Or(q,d.hash);return}}window.scrollTo(0,c)})}}catch(S){if(!/fetch|Page not found/.test(S.message)&&!/^\/404(\.html|\/)?$/.test(l)&&console.error(S),!u)try{const P=await fetch(at.value.base+"hashmap.json");window.__VP_HASH_MAP__=await P.json(),await o(l,c,!0);return}catch{}if(i===h){i=null,n.path=fe?h:Ar(h),n.component=t?sn(t):null;const P=fe?h.replace(/(^|\/)$/,"$1index").replace(/(\.html)?$/,".md").replace(/^\//,""):"404.md";n.data={...Zi,relativePath:P}}}}return fe&&(history.state===null&&history.replaceState({},""),window.addEventListener("click",l=>{if(l.target.closest("button"))return;const u=l.target.closest("a");if(u&&!u.closest(".vp-raw")&&(u instanceof SVGElement||!u.download)){const{target:d}=u,{href:h,origin:b,pathname:S,hash:P,search:M}=new URL(u.href instanceof SVGAnimatedString?u.href.animVal:u.href,u.baseURI),B=new URL(location.href);!l.ctrlKey&&!l.shiftKey&&!l.altKey&&!l.metaKey&&!d&&b===B.origin&&Ea(S)&&(l.preventDefault(),S===B.pathname&&M===B.search?(P!==B.hash&&(history.pushState({},"",h),window.dispatchEvent(new HashChangeEvent("hashchange",{oldURL:B.href,newURL:h}))),P?Or(u,P,u.classList.contains("header-anchor")):window.scrollTo(0,0)):r(h))}},{capture:!0}),window.addEventListener("popstate",async l=>{var c;l.state!==null&&(await o(Xn(location.href),l.state&&l.state.scrollPosition||0),(c=s.onAfterRouteChanged)==null||c.call(s,location.href))}),window.addEventListener("hashchange",l=>{l.preventDefault()})),s}function La(){const e=vt(Ra);if(!e)throw new Error("useRouter() is called without provider.");return e}function so(){return La().route}function Or(e,t,n=!1){let s=null;try{s=e.classList.contains("header-anchor")?e:document.getElementById(decodeURIComponent(t).slice(1))}catch(r){console.warn(r)}if(s){let r=function(){!n||Math.abs(o-window.scrollY)>window.innerHeight?window.scrollTo(0,o):window.scrollTo({left:0,top:o,behavior:"smooth"})};const i=parseInt(window.getComputedStyle(s).paddingTop,10),o=window.scrollY+s.getBoundingClientRect().top-Aa()+i;requestAnimationFrame(r)}}function Xn(e){const t=new URL(e,no);return t.pathname=t.pathname.replace(/(^|\/)index(\.html)?$/,"$1"),at.value.cleanUrls?t.pathname=t.pathname.replace(/\.html$/,""):!t.pathname.endsWith("/")&&!t.pathname.endsWith(".html")&&(t.pathname+=".html"),t.pathname+t.search+t.hash}const Yn=()=>ln.forEach(e=>e()),au=gi({name:"VitePressContent",props:{as:{type:[Object,String],default:"div"}},setup(e){const t=so(),{site:n}=xa();return()=>us(e.as,n.value.contentProps??{style:{position:"relative"}},[t.component?us(t.component,{onVnodeMounted:Yn,onVnodeUpdated:Yn,onVnodeUnmounted:Yn}):"404 Page Not Found"])}}),uu=gi({setup(e,{slots:t}){const n=ae(!1);return Ct(()=>{n.value=!0}),()=>n.value&&t.default?t.default():null}});function fu(){fe&&window.addEventListener("click",e=>{var n;const t=e.target;if(t.matches(".vp-code-group input")){const s=(n=t.parentElement)==null?void 0:n.parentElement;if(!s)return;const r=Array.from(s.querySelectorAll("input")).indexOf(t);if(r<0)return;const i=s.querySelector(".blocks");if(!i)return;const o=Array.from(i.children).find(u=>u.classList.contains("active"));if(!o)return;const l=i.children[r];if(!l||o===l)return;o.classList.remove("active"),l.classList.add("active");const c=s==null?void 0:s.querySelector(`label[for="${t.id}"]`);c==null||c.scrollIntoView({block:"nearest"})}})}function du(){if(fe){const e=new WeakMap;window.addEventListener("click",t=>{var s;const n=t.target;if(n.matches('div[class*="language-"] > button.copy')){const r=n.parentElement,i=(s=n.nextElementSibling)==null?void 0:s.nextElementSibling;if(!r||!i)return;const o=/language-(shellscript|shell|bash|sh|zsh)/.test(r.className),l=[".vp-copy-ignore",".diff.remove"],c=i.cloneNode(!0);c.querySelectorAll(l.join(",")).forEach(d=>d.remove());let u=c.textContent||"";o&&(u=u.replace(/^ *(\$|>) /gm,"").trim()),Ia(u).then(()=>{n.classList.add("copied"),clearTimeout(e.get(n));const d=setTimeout(()=>{n.classList.remove("copied"),n.blur(),e.delete(n)},2e3);e.set(n,d)})}})}}async function Ia(e){try{return navigator.clipboard.writeText(e)}catch{const t=document.createElement("textarea"),n=document.activeElement;t.value=e,t.setAttribute("readonly",""),t.style.contain="strict",t.style.position="absolute",t.style.left="-9999px",t.style.fontSize="12pt";const s=document.getSelection(),r=s?s.rangeCount>0&&s.getRangeAt(0):null;document.body.appendChild(t),t.select(),t.selectionStart=0,t.selectionEnd=e.length,document.execCommand("copy"),document.body.removeChild(t),r&&(s.removeAllRanges(),s.addRange(r)),n&&n.focus()}}function hu(e,t){let n=!0,s=[];const r=i=>{if(n){n=!1,i.forEach(l=>{const c=Jn(l);for(const u of document.head.children)if(u.isEqualNode(c)){s.push(u);return}});return}const o=i.map(Jn);s.forEach((l,c)=>{const u=o.findIndex(d=>d==null?void 0:d.isEqualNode(l??null));u!==-1?delete o[u]:(l==null||l.remove(),delete s[c])}),o.forEach(l=>l&&document.head.appendChild(l)),s=[...s,...o].filter(Boolean)};ui(()=>{const i=e.data,o=t.value,l=i&&i.description,c=i&&i.frontmatter.head||[],u=eo(o,i);u!==document.title&&(document.title=u);const d=l||o.description;let h=document.querySelector("meta[name=description]");h?h.getAttribute("content")!==d&&h.setAttribute("content",d):Jn(["meta",{name:"description",content:d}]),r(to(o.head,Ma(c)))})}function Jn([e,t,n]){const s=document.createElement(e);for(const r in t)s.setAttribute(r,t[r]);return n&&(s.innerHTML=n),e==="script"&&!t.async&&(s.async=!1),s}function Pa(e){return e[0]==="meta"&&e[1]&&e[1].name==="description"}function Ma(e){return e.filter(t=>!Pa(t))}const Qn=new Set,ro=()=>document.createElement("link"),Na=e=>{const t=ro();t.rel="prefetch",t.href=e,document.head.appendChild(t)},Fa=e=>{const t=new XMLHttpRequest;t.open("GET",e,t.withCredentials=!0),t.send()};let tn;const $a=fe&&(tn=ro())&&tn.relList&&tn.relList.supports&&tn.relList.supports("prefetch")?Na:Fa;function pu(){if(!fe||!window.IntersectionObserver)return;let e;if((e=navigator.connection)&&(e.saveData||/2g/.test(e.effectiveType)))return;const t=window.requestIdleCallback||setTimeout;let n=null;const s=()=>{n&&n.disconnect(),n=new IntersectionObserver(i=>{i.forEach(o=>{if(o.isIntersecting){const l=o.target;n.unobserve(l);const{pathname:c}=l;if(!Qn.has(c)){Qn.add(c);const u=Ta(c);u&&$a(u)}}})}),t(()=>{document.querySelectorAll("#app a").forEach(i=>{const{hostname:o,pathname:l}=new URL(i.href instanceof SVGAnimatedString?i.href.animVal:i.href,i.baseURI),c=l.match(/\.\w+$/);c&&c[0]!==".html"||i.target!=="_blank"&&o===location.hostname&&(l!==location.pathname?n.observe(i):Qn.add(l))})})};Ct(s);const r=so();Me(()=>r.path,s),On(()=>{n&&n.disconnect()})}export{Ya as $,Ba as A,Cl as B,Aa as C,Da as D,ka as E,_e as F,Qr as G,lu as H,ue as I,Ua as J,Qi as K,so as L,Zl as M,vt as N,iu as O,gs as P,nu as Q,Cn as R,ru as S,Ui as T,fe as U,wn as V,su as W,Hl as X,Ja as Y,Wa as Z,Za as _,Hi as a,qa as a0,za as a1,eu as a2,hu as a3,Ra as a4,ou as a5,Ca as a6,au as a7,uu as a8,at as a9,Qa as aa,cu as ab,Ta as ac,pu as ad,du as ae,fu as af,us as ag,tu as ah,Ni as b,Ga as c,gi as d,Xa as e,Ea as f,Ar as g,ne as h,ga as i,$i as j,ei as k,Va as l,pa as m,ms as n,Pi as o,ja as p,zi as q,Ka as r,ae as s,Ha as t,xa as u,Me as v,ol as w,ui as x,Ct as y,On as z}; diff --git a/docs/.vitepress/dist/assets/chunks/theme.Bf2yJofF.js b/docs/.vitepress/dist/assets/chunks/theme.C1ZqtMac.js similarity index 99% rename from docs/.vitepress/dist/assets/chunks/theme.Bf2yJofF.js rename to docs/.vitepress/dist/assets/chunks/theme.C1ZqtMac.js index 60261c94..fb3bab71 100644 --- a/docs/.vitepress/dist/assets/chunks/theme.Bf2yJofF.js +++ b/docs/.vitepress/dist/assets/chunks/theme.C1ZqtMac.js @@ -1 +1 @@ -import{d as _,o as a,c,r as l,n as T,a as D,t as I,b,w as v,e as f,T as de,_ as k,u as Oe,i as Ue,f as Ge,g as ve,h as $,j as p,k as r,p as C,l as H,m as z,q as ie,s as w,v as j,x as Z,y as R,z as pe,A as ge,B as je,C as ze,D as q,F as M,E,G as ye,H as x,I as m,J as K,K as Pe,L as ee,M as Y,N as te,O as qe,P as Le,Q as We,R as Ke,S as Ve,U as oe,V as Re,W as Se,X as Ie,Y as Je,Z as Ye,$ as Qe,a0 as Xe}from"./framework.D_xGnxpE.js";const Ze=_({__name:"VPBadge",props:{text:{},type:{default:"tip"}},setup(o){return(e,t)=>(a(),c("span",{class:T(["VPBadge",e.type])},[l(e.$slots,"default",{},()=>[D(I(e.text),1)])],2))}}),xe={key:0,class:"VPBackdrop"},et=_({__name:"VPBackdrop",props:{show:{type:Boolean}},setup(o){return(e,t)=>(a(),b(de,{name:"fade"},{default:v(()=>[e.show?(a(),c("div",xe)):f("",!0)]),_:1}))}}),tt=k(et,[["__scopeId","data-v-c79a1216"]]),L=Oe;function ot(o,e){let t,n=!1;return()=>{t&&clearTimeout(t),n?t=setTimeout(o,e):(o(),(n=!0)&&setTimeout(()=>n=!1,e))}}function le(o){return/^\//.test(o)?o:`/${o}`}function he(o){const{pathname:e,search:t,hash:n,protocol:s}=new URL(o,"http://a.com");if(Ue(o)||o.startsWith("#")||!s.startsWith("http")||!Ge(e))return o;const{site:i}=L(),u=e.endsWith("/")||e.endsWith(".html")?o:o.replace(/(?:(^\.+)\/)?.*$/,`$1${e.replace(/(\.md)?$/,i.value.cleanUrls?"":".html")}${t}${n}`);return ve(u)}function J({correspondingLink:o=!1}={}){const{site:e,localeIndex:t,page:n,theme:s,hash:i}=L(),u=$(()=>{var d,g;return{label:(d=e.value.locales[t.value])==null?void 0:d.label,link:((g=e.value.locales[t.value])==null?void 0:g.link)||(t.value==="root"?"/":`/${t.value}/`)}});return{localeLinks:$(()=>Object.entries(e.value.locales).flatMap(([d,g])=>u.value.label===g.label?[]:{text:g.label,link:st(g.link||(d==="root"?"/":`/${d}/`),s.value.i18nRouting!==!1&&o,n.value.relativePath.slice(u.value.link.length-1),!e.value.cleanUrls)+i.value})),currentLang:u}}function st(o,e,t,n){return e?o.replace(/\/$/,"")+le(t.replace(/(^|\/)index\.md$/,"$1").replace(/\.md$/,n?".html":"")):o}const nt=o=>(C("data-v-d6be1790"),o=o(),H(),o),at={class:"NotFound"},rt={class:"code"},it={class:"title"},lt=nt(()=>p("div",{class:"divider"},null,-1)),ct={class:"quote"},ut={class:"action"},dt=["href","aria-label"],vt=_({__name:"NotFound",setup(o){const{theme:e}=L(),{currentLang:t}=J();return(n,s)=>{var i,u,h,d,g;return a(),c("div",at,[p("p",rt,I(((i=r(e).notFound)==null?void 0:i.code)??"404"),1),p("h1",it,I(((u=r(e).notFound)==null?void 0:u.title)??"PAGE NOT FOUND"),1),lt,p("blockquote",ct,I(((h=r(e).notFound)==null?void 0:h.quote)??"But if you don't change your direction, and if you keep looking, you may end up where you are heading."),1),p("div",ut,[p("a",{class:"link",href:r(ve)(r(t).link),"aria-label":((d=r(e).notFound)==null?void 0:d.linkLabel)??"go to home"},I(((g=r(e).notFound)==null?void 0:g.linkText)??"Take me home"),9,dt)])])}}}),pt=k(vt,[["__scopeId","data-v-d6be1790"]]);function we(o,e){if(Array.isArray(o))return Q(o);if(o==null)return[];e=le(e);const t=Object.keys(o).sort((s,i)=>i.split("/").length-s.split("/").length).find(s=>e.startsWith(le(s))),n=t?o[t]:[];return Array.isArray(n)?Q(n):Q(n.items,n.base)}function ht(o){const e=[];let t=0;for(const n in o){const s=o[n];if(s.items){t=e.push(s);continue}e[t]||e.push({items:[]}),e[t].items.push(s)}return e}function ft(o){const e=[];function t(n){for(const s of n)s.text&&s.link&&e.push({text:s.text,link:s.link,docFooterText:s.docFooterText}),s.items&&t(s.items)}return t(o),e}function ce(o,e){return Array.isArray(e)?e.some(t=>ce(o,t)):z(o,e.link)?!0:e.items?ce(o,e.items):!1}function Q(o,e){return[...o].map(t=>{const n={...t},s=n.base||e;return s&&n.link&&(n.link=s+n.link),n.items&&(n.items=Q(n.items,s)),n})}function O(){const{frontmatter:o,page:e,theme:t}=L(),n=ie("(min-width: 960px)"),s=w(!1),i=$(()=>{const B=t.value.sidebar,S=e.value.relativePath;return B?we(B,S):[]}),u=w(i.value);j(i,(B,S)=>{JSON.stringify(B)!==JSON.stringify(S)&&(u.value=i.value)});const h=$(()=>o.value.sidebar!==!1&&u.value.length>0&&o.value.layout!=="home"),d=$(()=>g?o.value.aside==null?t.value.aside==="left":o.value.aside==="left":!1),g=$(()=>o.value.layout==="home"?!1:o.value.aside!=null?!!o.value.aside:t.value.aside!==!1),P=$(()=>h.value&&n.value),y=$(()=>h.value?ht(u.value):[]);function V(){s.value=!0}function N(){s.value=!1}function A(){s.value?N():V()}return{isOpen:s,sidebar:u,sidebarGroups:y,hasSidebar:h,hasAside:g,leftAside:d,isSidebarEnabled:P,open:V,close:N,toggle:A}}function _t(o,e){let t;Z(()=>{t=o.value?document.activeElement:void 0}),R(()=>{window.addEventListener("keyup",n)}),pe(()=>{window.removeEventListener("keyup",n)});function n(s){s.key==="Escape"&&o.value&&(e(),t==null||t.focus())}}function mt(o){const{page:e,hash:t}=L(),n=w(!1),s=$(()=>o.value.collapsed!=null),i=$(()=>!!o.value.link),u=w(!1),h=()=>{u.value=z(e.value.relativePath,o.value.link)};j([e,o,t],h),R(h);const d=$(()=>u.value?!0:o.value.items?ce(e.value.relativePath,o.value.items):!1),g=$(()=>!!(o.value.items&&o.value.items.length));Z(()=>{n.value=!!(s.value&&o.value.collapsed)}),ge(()=>{(u.value||d.value)&&(n.value=!1)});function P(){s.value&&(n.value=!n.value)}return{collapsed:n,collapsible:s,isLink:i,isActiveLink:u,hasActiveLink:d,hasChildren:g,toggle:P}}function kt(){const{hasSidebar:o}=O(),e=ie("(min-width: 960px)"),t=ie("(min-width: 1280px)");return{isAsideEnabled:$(()=>!t.value&&!e.value?!1:o.value?t.value:e.value)}}const ue=[];function Te(o){return typeof o.outline=="object"&&!Array.isArray(o.outline)&&o.outline.label||o.outlineTitle||"On this page"}function fe(o){const e=[...document.querySelectorAll(".VPDoc :where(h1,h2,h3,h4,h5,h6)")].filter(t=>t.id&&t.hasChildNodes()).map(t=>{const n=Number(t.tagName[1]);return{element:t,title:bt(t),link:"#"+t.id,level:n}});return $t(e,o)}function bt(o){let e="";for(const t of o.childNodes)if(t.nodeType===1){if(t.classList.contains("VPBadge")||t.classList.contains("header-anchor")||t.classList.contains("ignore-header"))continue;e+=t.textContent}else t.nodeType===3&&(e+=t.textContent);return e.trim()}function $t(o,e){if(e===!1)return[];const t=(typeof e=="object"&&!Array.isArray(e)?e.level:e)||2,[n,s]=typeof t=="number"?[t,t]:t==="deep"?[2,6]:t;o=o.filter(u=>u.level>=n&&u.level<=s),ue.length=0;for(const{element:u,link:h}of o)ue.push({element:u,link:h});const i=[];e:for(let u=0;u=0;d--){const g=o[d];if(g.level{requestAnimationFrame(i),window.addEventListener("scroll",n)}),je(()=>{u(location.hash)}),pe(()=>{window.removeEventListener("scroll",n)});function i(){if(!t.value)return;const h=window.scrollY,d=window.innerHeight,g=document.body.offsetHeight,P=Math.abs(h+d-g)<1,y=ue.map(({element:N,link:A})=>({link:A,top:yt(N)})).filter(({top:N})=>!Number.isNaN(N)).sort((N,A)=>N.top-A.top);if(!y.length){u(null);return}if(h<1){u(null);return}if(P){u(y[y.length-1].link);return}let V=null;for(const{link:N,top:A}of y){if(A>h+ze()+4)break;V=N}u(V)}function u(h){s&&s.classList.remove("active"),h==null?s=null:s=o.value.querySelector(`a[href="${decodeURIComponent(h)}"]`);const d=s;d?(d.classList.add("active"),e.value.style.top=d.offsetTop+39+"px",e.value.style.opacity="1"):(e.value.style.top="33px",e.value.style.opacity="0")}}function yt(o){let e=0;for(;o!==document.body;){if(o===null)return NaN;e+=o.offsetTop,o=o.offsetParent}return e}const Pt=["href","title"],Lt=_({__name:"VPDocOutlineItem",props:{headers:{},root:{type:Boolean}},setup(o){function e({target:t}){const n=t.href.split("#")[1],s=document.getElementById(decodeURIComponent(n));s==null||s.focus({preventScroll:!0})}return(t,n)=>{const s=q("VPDocOutlineItem",!0);return a(),c("ul",{class:T(["VPDocOutlineItem",t.root?"root":"nested"])},[(a(!0),c(M,null,E(t.headers,({children:i,link:u,title:h})=>(a(),c("li",null,[p("a",{class:"outline-link",href:u,onClick:e,title:h},I(h),9,Pt),i!=null&&i.length?(a(),b(s,{key:0,headers:i},null,8,["headers"])):f("",!0)]))),256))],2)}}}),Ne=k(Lt,[["__scopeId","data-v-b933a997"]]),Vt={class:"content"},St={"aria-level":"2",class:"outline-title",id:"doc-outline-aria-label",role:"heading"},It=_({__name:"VPDocAsideOutline",setup(o){const{frontmatter:e,theme:t}=L(),n=ye([]);x(()=>{n.value=fe(e.value.outline??t.value.outline)});const s=w(),i=w();return gt(s,i),(u,h)=>(a(),c("nav",{"aria-labelledby":"doc-outline-aria-label",class:T(["VPDocAsideOutline",{"has-outline":n.value.length>0}]),ref_key:"container",ref:s},[p("div",Vt,[p("div",{class:"outline-marker",ref_key:"marker",ref:i},null,512),p("div",St,I(r(Te)(r(t))),1),m(Ne,{headers:n.value,root:!0},null,8,["headers"])])],2))}}),wt=k(It,[["__scopeId","data-v-a5bbad30"]]),Tt={class:"VPDocAsideCarbonAds"},Nt=_({__name:"VPDocAsideCarbonAds",props:{carbonAds:{}},setup(o){const e=()=>null;return(t,n)=>(a(),c("div",Tt,[m(r(e),{"carbon-ads":t.carbonAds},null,8,["carbon-ads"])]))}}),Mt=o=>(C("data-v-3f215769"),o=o(),H(),o),At={class:"VPDocAside"},Bt=Mt(()=>p("div",{class:"spacer"},null,-1)),Ct=_({__name:"VPDocAside",setup(o){const{theme:e}=L();return(t,n)=>(a(),c("div",At,[l(t.$slots,"aside-top",{},void 0,!0),l(t.$slots,"aside-outline-before",{},void 0,!0),m(wt),l(t.$slots,"aside-outline-after",{},void 0,!0),Bt,l(t.$slots,"aside-ads-before",{},void 0,!0),r(e).carbonAds?(a(),b(Nt,{key:0,"carbon-ads":r(e).carbonAds},null,8,["carbon-ads"])):f("",!0),l(t.$slots,"aside-ads-after",{},void 0,!0),l(t.$slots,"aside-bottom",{},void 0,!0)]))}}),Ht=k(Ct,[["__scopeId","data-v-3f215769"]]);function Et(){const{theme:o,page:e}=L();return $(()=>{const{text:t="Edit this page",pattern:n=""}=o.value.editLink||{};let s;return typeof n=="function"?s=n(e.value):s=n.replace(/:path/g,e.value.filePath),{url:s,text:t}})}function Ft(){const{page:o,theme:e,frontmatter:t}=L();return $(()=>{var g,P,y,V,N,A,B,S;const n=we(e.value.sidebar,o.value.relativePath),s=ft(n),i=Dt(s,U=>U.link.replace(/[?#].*$/,"")),u=i.findIndex(U=>z(o.value.relativePath,U.link)),h=((g=e.value.docFooter)==null?void 0:g.prev)===!1&&!t.value.prev||t.value.prev===!1,d=((P=e.value.docFooter)==null?void 0:P.next)===!1&&!t.value.next||t.value.next===!1;return{prev:h?void 0:{text:(typeof t.value.prev=="string"?t.value.prev:typeof t.value.prev=="object"?t.value.prev.text:void 0)??((y=i[u-1])==null?void 0:y.docFooterText)??((V=i[u-1])==null?void 0:V.text),link:(typeof t.value.prev=="object"?t.value.prev.link:void 0)??((N=i[u-1])==null?void 0:N.link)},next:d?void 0:{text:(typeof t.value.next=="string"?t.value.next:typeof t.value.next=="object"?t.value.next.text:void 0)??((A=i[u+1])==null?void 0:A.docFooterText)??((B=i[u+1])==null?void 0:B.text),link:(typeof t.value.next=="object"?t.value.next.link:void 0)??((S=i[u+1])==null?void 0:S.link)}}})}function Dt(o,e){const t=new Set;return o.filter(n=>{const s=e(n);return t.has(s)?!1:t.add(s)})}const F=_({__name:"VPLink",props:{tag:{},href:{},noIcon:{type:Boolean},target:{},rel:{}},setup(o){const e=o,t=$(()=>e.tag??(e.href?"a":"span")),n=$(()=>e.href&&Pe.test(e.href)||e.target==="_blank");return(s,i)=>(a(),b(K(t.value),{class:T(["VPLink",{link:s.href,"vp-external-link-icon":n.value,"no-icon":s.noIcon}]),href:s.href?r(he)(s.href):void 0,target:s.target??(n.value?"_blank":void 0),rel:s.rel??(n.value?"noreferrer":void 0)},{default:v(()=>[l(s.$slots,"default")]),_:3},8,["class","href","target","rel"]))}}),Ot={class:"VPLastUpdated"},Ut=["datetime"],Gt=_({__name:"VPDocFooterLastUpdated",setup(o){const{theme:e,page:t,frontmatter:n,lang:s}=L(),i=$(()=>new Date(n.value.lastUpdated??t.value.lastUpdated)),u=$(()=>i.value.toISOString()),h=w("");return R(()=>{Z(()=>{var d,g,P;h.value=new Intl.DateTimeFormat((g=(d=e.value.lastUpdated)==null?void 0:d.formatOptions)!=null&&g.forceLocale?s.value:void 0,((P=e.value.lastUpdated)==null?void 0:P.formatOptions)??{dateStyle:"short",timeStyle:"short"}).format(i.value)})}),(d,g)=>{var P;return a(),c("p",Ot,[D(I(((P=r(e).lastUpdated)==null?void 0:P.text)||r(e).lastUpdatedText||"Last updated")+": ",1),p("time",{datetime:u.value},I(h.value),9,Ut)])}}}),jt=k(Gt,[["__scopeId","data-v-7e05ebdb"]]),Me=o=>(C("data-v-d4a0bba5"),o=o(),H(),o),zt={key:0,class:"VPDocFooter"},qt={key:0,class:"edit-info"},Wt={key:0,class:"edit-link"},Kt=Me(()=>p("span",{class:"vpi-square-pen edit-link-icon"},null,-1)),Rt={key:1,class:"last-updated"},Jt={key:1,class:"prev-next","aria-labelledby":"doc-footer-aria-label"},Yt=Me(()=>p("span",{class:"visually-hidden",id:"doc-footer-aria-label"},"Pager",-1)),Qt={class:"pager"},Xt=["innerHTML"],Zt=["innerHTML"],xt={class:"pager"},eo=["innerHTML"],to=["innerHTML"],oo=_({__name:"VPDocFooter",setup(o){const{theme:e,page:t,frontmatter:n}=L(),s=Et(),i=Ft(),u=$(()=>e.value.editLink&&n.value.editLink!==!1),h=$(()=>t.value.lastUpdated&&n.value.lastUpdated!==!1),d=$(()=>u.value||h.value||i.value.prev||i.value.next);return(g,P)=>{var y,V,N,A;return d.value?(a(),c("footer",zt,[l(g.$slots,"doc-footer-before",{},void 0,!0),u.value||h.value?(a(),c("div",qt,[u.value?(a(),c("div",Wt,[m(F,{class:"edit-link-button",href:r(s).url,"no-icon":!0},{default:v(()=>[Kt,D(" "+I(r(s).text),1)]),_:1},8,["href"])])):f("",!0),h.value?(a(),c("div",Rt,[m(jt)])):f("",!0)])):f("",!0),(y=r(i).prev)!=null&&y.link||(V=r(i).next)!=null&&V.link?(a(),c("nav",Jt,[Yt,p("div",Qt,[(N=r(i).prev)!=null&&N.link?(a(),b(F,{key:0,class:"pager-link prev",href:r(i).prev.link},{default:v(()=>{var B;return[p("span",{class:"desc",innerHTML:((B=r(e).docFooter)==null?void 0:B.prev)||"Previous page"},null,8,Xt),p("span",{class:"title",innerHTML:r(i).prev.text},null,8,Zt)]}),_:1},8,["href"])):f("",!0)]),p("div",xt,[(A=r(i).next)!=null&&A.link?(a(),b(F,{key:0,class:"pager-link next",href:r(i).next.link},{default:v(()=>{var B;return[p("span",{class:"desc",innerHTML:((B=r(e).docFooter)==null?void 0:B.next)||"Next page"},null,8,eo),p("span",{class:"title",innerHTML:r(i).next.text},null,8,to)]}),_:1},8,["href"])):f("",!0)])])):f("",!0)])):f("",!0)}}}),so=k(oo,[["__scopeId","data-v-d4a0bba5"]]),no=o=>(C("data-v-39a288b8"),o=o(),H(),o),ao={class:"container"},ro=no(()=>p("div",{class:"aside-curtain"},null,-1)),io={class:"aside-container"},lo={class:"aside-content"},co={class:"content"},uo={class:"content-container"},vo={class:"main"},po=_({__name:"VPDoc",setup(o){const{theme:e}=L(),t=ee(),{hasSidebar:n,hasAside:s,leftAside:i}=O(),u=$(()=>t.path.replace(/[./]+/g,"_").replace(/_html$/,""));return(h,d)=>{const g=q("Content");return a(),c("div",{class:T(["VPDoc",{"has-sidebar":r(n),"has-aside":r(s)}])},[l(h.$slots,"doc-top",{},void 0,!0),p("div",ao,[r(s)?(a(),c("div",{key:0,class:T(["aside",{"left-aside":r(i)}])},[ro,p("div",io,[p("div",lo,[m(Ht,null,{"aside-top":v(()=>[l(h.$slots,"aside-top",{},void 0,!0)]),"aside-bottom":v(()=>[l(h.$slots,"aside-bottom",{},void 0,!0)]),"aside-outline-before":v(()=>[l(h.$slots,"aside-outline-before",{},void 0,!0)]),"aside-outline-after":v(()=>[l(h.$slots,"aside-outline-after",{},void 0,!0)]),"aside-ads-before":v(()=>[l(h.$slots,"aside-ads-before",{},void 0,!0)]),"aside-ads-after":v(()=>[l(h.$slots,"aside-ads-after",{},void 0,!0)]),_:3})])])],2)):f("",!0),p("div",co,[p("div",uo,[l(h.$slots,"doc-before",{},void 0,!0),p("main",vo,[m(g,{class:T(["vp-doc",[u.value,r(e).externalLinkIcon&&"external-link-icon-enabled"]])},null,8,["class"])]),m(so,null,{"doc-footer-before":v(()=>[l(h.$slots,"doc-footer-before",{},void 0,!0)]),_:3}),l(h.$slots,"doc-after",{},void 0,!0)])])]),l(h.$slots,"doc-bottom",{},void 0,!0)],2)}}}),ho=k(po,[["__scopeId","data-v-39a288b8"]]),fo=_({__name:"VPButton",props:{tag:{},size:{default:"medium"},theme:{default:"brand"},text:{},href:{},target:{},rel:{}},setup(o){const e=o,t=$(()=>e.href&&Pe.test(e.href)),n=$(()=>e.tag||e.href?"a":"button");return(s,i)=>(a(),b(K(n.value),{class:T(["VPButton",[s.size,s.theme]]),href:s.href?r(he)(s.href):void 0,target:e.target??(t.value?"_blank":void 0),rel:e.rel??(t.value?"noreferrer":void 0)},{default:v(()=>[D(I(s.text),1)]),_:1},8,["class","href","target","rel"]))}}),_o=k(fo,[["__scopeId","data-v-cad61b99"]]),mo=["src","alt"],ko=_({inheritAttrs:!1,__name:"VPImage",props:{image:{},alt:{}},setup(o){return(e,t)=>{const n=q("VPImage",!0);return e.image?(a(),c(M,{key:0},[typeof e.image=="string"||"src"in e.image?(a(),c("img",Y({key:0,class:"VPImage"},typeof e.image=="string"?e.$attrs:{...e.image,...e.$attrs},{src:r(ve)(typeof e.image=="string"?e.image:e.image.src),alt:e.alt??(typeof e.image=="string"?"":e.image.alt||"")}),null,16,mo)):(a(),c(M,{key:1},[m(n,Y({class:"dark",image:e.image.dark,alt:e.image.alt},e.$attrs),null,16,["image","alt"]),m(n,Y({class:"light",image:e.image.light,alt:e.image.alt},e.$attrs),null,16,["image","alt"])],64))],64)):f("",!0)}}}),X=k(ko,[["__scopeId","data-v-8426fc1a"]]),bo=o=>(C("data-v-303bb580"),o=o(),H(),o),$o={class:"container"},go={class:"main"},yo={key:0,class:"name"},Po=["innerHTML"],Lo=["innerHTML"],Vo=["innerHTML"],So={key:0,class:"actions"},Io={key:0,class:"image"},wo={class:"image-container"},To=bo(()=>p("div",{class:"image-bg"},null,-1)),No=_({__name:"VPHero",props:{name:{},text:{},tagline:{},image:{},actions:{}},setup(o){const e=te("hero-image-slot-exists");return(t,n)=>(a(),c("div",{class:T(["VPHero",{"has-image":t.image||r(e)}])},[p("div",$o,[p("div",go,[l(t.$slots,"home-hero-info-before",{},void 0,!0),l(t.$slots,"home-hero-info",{},()=>[t.name?(a(),c("h1",yo,[p("span",{innerHTML:t.name,class:"clip"},null,8,Po)])):f("",!0),t.text?(a(),c("p",{key:1,innerHTML:t.text,class:"text"},null,8,Lo)):f("",!0),t.tagline?(a(),c("p",{key:2,innerHTML:t.tagline,class:"tagline"},null,8,Vo)):f("",!0)],!0),l(t.$slots,"home-hero-info-after",{},void 0,!0),t.actions?(a(),c("div",So,[(a(!0),c(M,null,E(t.actions,s=>(a(),c("div",{key:s.link,class:"action"},[m(_o,{tag:"a",size:"medium",theme:s.theme,text:s.text,href:s.link,target:s.target,rel:s.rel},null,8,["theme","text","href","target","rel"])]))),128))])):f("",!0),l(t.$slots,"home-hero-actions-after",{},void 0,!0)]),t.image||r(e)?(a(),c("div",Io,[p("div",wo,[To,l(t.$slots,"home-hero-image",{},()=>[t.image?(a(),b(X,{key:0,class:"image-src",image:t.image},null,8,["image"])):f("",!0)],!0)])])):f("",!0)])],2))}}),Mo=k(No,[["__scopeId","data-v-303bb580"]]),Ao=_({__name:"VPHomeHero",setup(o){const{frontmatter:e}=L();return(t,n)=>r(e).hero?(a(),b(Mo,{key:0,class:"VPHomeHero",name:r(e).hero.name,text:r(e).hero.text,tagline:r(e).hero.tagline,image:r(e).hero.image,actions:r(e).hero.actions},{"home-hero-info-before":v(()=>[l(t.$slots,"home-hero-info-before")]),"home-hero-info":v(()=>[l(t.$slots,"home-hero-info")]),"home-hero-info-after":v(()=>[l(t.$slots,"home-hero-info-after")]),"home-hero-actions-after":v(()=>[l(t.$slots,"home-hero-actions-after")]),"home-hero-image":v(()=>[l(t.$slots,"home-hero-image")]),_:3},8,["name","text","tagline","image","actions"])):f("",!0)}}),Bo=o=>(C("data-v-a3976bdc"),o=o(),H(),o),Co={class:"box"},Ho={key:0,class:"icon"},Eo=["innerHTML"],Fo=["innerHTML"],Do=["innerHTML"],Oo={key:4,class:"link-text"},Uo={class:"link-text-value"},Go=Bo(()=>p("span",{class:"vpi-arrow-right link-text-icon"},null,-1)),jo=_({__name:"VPFeature",props:{icon:{},title:{},details:{},link:{},linkText:{},rel:{},target:{}},setup(o){return(e,t)=>(a(),b(F,{class:"VPFeature",href:e.link,rel:e.rel,target:e.target,"no-icon":!0,tag:e.link?"a":"div"},{default:v(()=>[p("article",Co,[typeof e.icon=="object"&&e.icon.wrap?(a(),c("div",Ho,[m(X,{image:e.icon,alt:e.icon.alt,height:e.icon.height||48,width:e.icon.width||48},null,8,["image","alt","height","width"])])):typeof e.icon=="object"?(a(),b(X,{key:1,image:e.icon,alt:e.icon.alt,height:e.icon.height||48,width:e.icon.width||48},null,8,["image","alt","height","width"])):e.icon?(a(),c("div",{key:2,class:"icon",innerHTML:e.icon},null,8,Eo)):f("",!0),p("h2",{class:"title",innerHTML:e.title},null,8,Fo),e.details?(a(),c("p",{key:3,class:"details",innerHTML:e.details},null,8,Do)):f("",!0),e.linkText?(a(),c("div",Oo,[p("p",Uo,[D(I(e.linkText)+" ",1),Go])])):f("",!0)])]),_:1},8,["href","rel","target","tag"]))}}),zo=k(jo,[["__scopeId","data-v-a3976bdc"]]),qo={key:0,class:"VPFeatures"},Wo={class:"container"},Ko={class:"items"},Ro=_({__name:"VPFeatures",props:{features:{}},setup(o){const e=o,t=$(()=>{const n=e.features.length;if(n){if(n===2)return"grid-2";if(n===3)return"grid-3";if(n%3===0)return"grid-6";if(n>3)return"grid-4"}else return});return(n,s)=>n.features?(a(),c("div",qo,[p("div",Wo,[p("div",Ko,[(a(!0),c(M,null,E(n.features,i=>(a(),c("div",{key:i.title,class:T(["item",[t.value]])},[m(zo,{icon:i.icon,title:i.title,details:i.details,link:i.link,"link-text":i.linkText,rel:i.rel,target:i.target},null,8,["icon","title","details","link","link-text","rel","target"])],2))),128))])])])):f("",!0)}}),Jo=k(Ro,[["__scopeId","data-v-a6181336"]]),Yo=_({__name:"VPHomeFeatures",setup(o){const{frontmatter:e}=L();return(t,n)=>r(e).features?(a(),b(Jo,{key:0,class:"VPHomeFeatures",features:r(e).features},null,8,["features"])):f("",!0)}}),Qo=_({__name:"VPHomeContent",setup(o){const{width:e}=qe({initialWidth:0,includeScrollbar:!1});return(t,n)=>(a(),c("div",{class:"vp-doc container",style:Le(r(e)?{"--vp-offset":`calc(50% - ${r(e)/2}px)`}:{})},[l(t.$slots,"default",{},void 0,!0)],4))}}),Xo=k(Qo,[["__scopeId","data-v-8e2d4988"]]),Zo={class:"VPHome"},xo=_({__name:"VPHome",setup(o){const{frontmatter:e}=L();return(t,n)=>{const s=q("Content");return a(),c("div",Zo,[l(t.$slots,"home-hero-before",{},void 0,!0),m(Ao,null,{"home-hero-info-before":v(()=>[l(t.$slots,"home-hero-info-before",{},void 0,!0)]),"home-hero-info":v(()=>[l(t.$slots,"home-hero-info",{},void 0,!0)]),"home-hero-info-after":v(()=>[l(t.$slots,"home-hero-info-after",{},void 0,!0)]),"home-hero-actions-after":v(()=>[l(t.$slots,"home-hero-actions-after",{},void 0,!0)]),"home-hero-image":v(()=>[l(t.$slots,"home-hero-image",{},void 0,!0)]),_:3}),l(t.$slots,"home-hero-after",{},void 0,!0),l(t.$slots,"home-features-before",{},void 0,!0),m(Yo),l(t.$slots,"home-features-after",{},void 0,!0),r(e).markdownStyles!==!1?(a(),b(Xo,{key:0},{default:v(()=>[m(s)]),_:1})):(a(),b(s,{key:1}))])}}}),es=k(xo,[["__scopeId","data-v-686f80a6"]]),ts={},os={class:"VPPage"};function ss(o,e){const t=q("Content");return a(),c("div",os,[l(o.$slots,"page-top"),m(t),l(o.$slots,"page-bottom")])}const ns=k(ts,[["render",ss]]),as=_({__name:"VPContent",setup(o){const{page:e,frontmatter:t}=L(),{hasSidebar:n}=O();return(s,i)=>(a(),c("div",{class:T(["VPContent",{"has-sidebar":r(n),"is-home":r(t).layout==="home"}]),id:"VPContent"},[r(e).isNotFound?l(s.$slots,"not-found",{key:0},()=>[m(pt)],!0):r(t).layout==="page"?(a(),b(ns,{key:1},{"page-top":v(()=>[l(s.$slots,"page-top",{},void 0,!0)]),"page-bottom":v(()=>[l(s.$slots,"page-bottom",{},void 0,!0)]),_:3})):r(t).layout==="home"?(a(),b(es,{key:2},{"home-hero-before":v(()=>[l(s.$slots,"home-hero-before",{},void 0,!0)]),"home-hero-info-before":v(()=>[l(s.$slots,"home-hero-info-before",{},void 0,!0)]),"home-hero-info":v(()=>[l(s.$slots,"home-hero-info",{},void 0,!0)]),"home-hero-info-after":v(()=>[l(s.$slots,"home-hero-info-after",{},void 0,!0)]),"home-hero-actions-after":v(()=>[l(s.$slots,"home-hero-actions-after",{},void 0,!0)]),"home-hero-image":v(()=>[l(s.$slots,"home-hero-image",{},void 0,!0)]),"home-hero-after":v(()=>[l(s.$slots,"home-hero-after",{},void 0,!0)]),"home-features-before":v(()=>[l(s.$slots,"home-features-before",{},void 0,!0)]),"home-features-after":v(()=>[l(s.$slots,"home-features-after",{},void 0,!0)]),_:3})):r(t).layout&&r(t).layout!=="doc"?(a(),b(K(r(t).layout),{key:3})):(a(),b(ho,{key:4},{"doc-top":v(()=>[l(s.$slots,"doc-top",{},void 0,!0)]),"doc-bottom":v(()=>[l(s.$slots,"doc-bottom",{},void 0,!0)]),"doc-footer-before":v(()=>[l(s.$slots,"doc-footer-before",{},void 0,!0)]),"doc-before":v(()=>[l(s.$slots,"doc-before",{},void 0,!0)]),"doc-after":v(()=>[l(s.$slots,"doc-after",{},void 0,!0)]),"aside-top":v(()=>[l(s.$slots,"aside-top",{},void 0,!0)]),"aside-outline-before":v(()=>[l(s.$slots,"aside-outline-before",{},void 0,!0)]),"aside-outline-after":v(()=>[l(s.$slots,"aside-outline-after",{},void 0,!0)]),"aside-ads-before":v(()=>[l(s.$slots,"aside-ads-before",{},void 0,!0)]),"aside-ads-after":v(()=>[l(s.$slots,"aside-ads-after",{},void 0,!0)]),"aside-bottom":v(()=>[l(s.$slots,"aside-bottom",{},void 0,!0)]),_:3}))],2))}}),rs=k(as,[["__scopeId","data-v-1428d186"]]),is={class:"container"},ls=["innerHTML"],cs=["innerHTML"],us=_({__name:"VPFooter",setup(o){const{theme:e,frontmatter:t}=L(),{hasSidebar:n}=O();return(s,i)=>r(e).footer&&r(t).footer!==!1?(a(),c("footer",{key:0,class:T(["VPFooter",{"has-sidebar":r(n)}])},[p("div",is,[r(e).footer.message?(a(),c("p",{key:0,class:"message",innerHTML:r(e).footer.message},null,8,ls)):f("",!0),r(e).footer.copyright?(a(),c("p",{key:1,class:"copyright",innerHTML:r(e).footer.copyright},null,8,cs)):f("",!0)])],2)):f("",!0)}}),ds=k(us,[["__scopeId","data-v-e315a0ad"]]);function vs(){const{theme:o,frontmatter:e}=L(),t=ye([]),n=$(()=>t.value.length>0);return x(()=>{t.value=fe(e.value.outline??o.value.outline)}),{headers:t,hasLocalNav:n}}const ps=o=>(C("data-v-17a5e62e"),o=o(),H(),o),hs={class:"menu-text"},fs=ps(()=>p("span",{class:"vpi-chevron-right icon"},null,-1)),_s={class:"header"},ms={class:"outline"},ks=_({__name:"VPLocalNavOutlineDropdown",props:{headers:{},navHeight:{}},setup(o){const e=o,{theme:t}=L(),n=w(!1),s=w(0),i=w(),u=w();function h(y){var V;(V=i.value)!=null&&V.contains(y.target)||(n.value=!1)}j(n,y=>{if(y){document.addEventListener("click",h);return}document.removeEventListener("click",h)}),We("Escape",()=>{n.value=!1}),x(()=>{n.value=!1});function d(){n.value=!n.value,s.value=window.innerHeight+Math.min(window.scrollY-e.navHeight,0)}function g(y){y.target.classList.contains("outline-link")&&(u.value&&(u.value.style.transition="none"),Ke(()=>{n.value=!1}))}function P(){n.value=!1,window.scrollTo({top:0,left:0,behavior:"smooth"})}return(y,V)=>(a(),c("div",{class:"VPLocalNavOutlineDropdown",style:Le({"--vp-vh":s.value+"px"}),ref_key:"main",ref:i},[y.headers.length>0?(a(),c("button",{key:0,onClick:d,class:T({open:n.value})},[p("span",hs,I(r(Te)(r(t))),1),fs],2)):(a(),c("button",{key:1,onClick:P},I(r(t).returnToTopLabel||"Return to top"),1)),m(de,{name:"flyout"},{default:v(()=>[n.value?(a(),c("div",{key:0,ref_key:"items",ref:u,class:"items",onClick:g},[p("div",_s,[p("a",{class:"top-link",href:"#",onClick:P},I(r(t).returnToTopLabel||"Return to top"),1)]),p("div",ms,[m(Ne,{headers:y.headers},null,8,["headers"])])],512)):f("",!0)]),_:1})],4))}}),bs=k(ks,[["__scopeId","data-v-17a5e62e"]]),$s=o=>(C("data-v-a6f0e41e"),o=o(),H(),o),gs={class:"container"},ys=["aria-expanded"],Ps=$s(()=>p("span",{class:"vpi-align-left menu-icon"},null,-1)),Ls={class:"menu-text"},Vs=_({__name:"VPLocalNav",props:{open:{type:Boolean}},emits:["open-menu"],setup(o){const{theme:e,frontmatter:t}=L(),{hasSidebar:n}=O(),{headers:s}=vs(),{y:i}=Ve(),u=w(0);R(()=>{u.value=parseInt(getComputedStyle(document.documentElement).getPropertyValue("--vp-nav-height"))}),x(()=>{s.value=fe(t.value.outline??e.value.outline)});const h=$(()=>s.value.length===0),d=$(()=>h.value&&!n.value),g=$(()=>({VPLocalNav:!0,"has-sidebar":n.value,empty:h.value,fixed:d.value}));return(P,y)=>r(t).layout!=="home"&&(!d.value||r(i)>=u.value)?(a(),c("div",{key:0,class:T(g.value)},[p("div",gs,[r(n)?(a(),c("button",{key:0,class:"menu","aria-expanded":P.open,"aria-controls":"VPSidebarNav",onClick:y[0]||(y[0]=V=>P.$emit("open-menu"))},[Ps,p("span",Ls,I(r(e).sidebarMenuLabel||"Menu"),1)],8,ys)):f("",!0),m(bs,{headers:r(s),navHeight:u.value},null,8,["headers","navHeight"])])],2)):f("",!0)}}),Ss=k(Vs,[["__scopeId","data-v-a6f0e41e"]]);function Is(){const o=w(!1);function e(){o.value=!0,window.addEventListener("resize",s)}function t(){o.value=!1,window.removeEventListener("resize",s)}function n(){o.value?t():e()}function s(){window.outerWidth>=768&&t()}const i=ee();return j(()=>i.path,t),{isScreenOpen:o,openScreen:e,closeScreen:t,toggleScreen:n}}const ws={},Ts={class:"VPSwitch",type:"button",role:"switch"},Ns={class:"check"},Ms={key:0,class:"icon"};function As(o,e){return a(),c("button",Ts,[p("span",Ns,[o.$slots.default?(a(),c("span",Ms,[l(o.$slots,"default",{},void 0,!0)])):f("",!0)])])}const Bs=k(ws,[["render",As],["__scopeId","data-v-1d5665e3"]]),Ae=o=>(C("data-v-d1f28634"),o=o(),H(),o),Cs=Ae(()=>p("span",{class:"vpi-sun sun"},null,-1)),Hs=Ae(()=>p("span",{class:"vpi-moon moon"},null,-1)),Es=_({__name:"VPSwitchAppearance",setup(o){const{isDark:e,theme:t}=L(),n=te("toggle-appearance",()=>{e.value=!e.value}),s=$(()=>e.value?t.value.lightModeSwitchTitle||"Switch to light theme":t.value.darkModeSwitchTitle||"Switch to dark theme");return(i,u)=>(a(),b(Bs,{title:s.value,class:"VPSwitchAppearance","aria-checked":r(e),onClick:r(n)},{default:v(()=>[Cs,Hs]),_:1},8,["title","aria-checked","onClick"]))}}),_e=k(Es,[["__scopeId","data-v-d1f28634"]]),Fs={key:0,class:"VPNavBarAppearance"},Ds=_({__name:"VPNavBarAppearance",setup(o){const{site:e}=L();return(t,n)=>r(e).appearance&&r(e).appearance!=="force-dark"?(a(),c("div",Fs,[m(_e)])):f("",!0)}}),Os=k(Ds,[["__scopeId","data-v-e6aabb21"]]),me=w();let Be=!1,re=0;function Us(o){const e=w(!1);if(oe){!Be&&Gs(),re++;const t=j(me,n=>{var s,i,u;n===o.el.value||(s=o.el.value)!=null&&s.contains(n)?(e.value=!0,(i=o.onFocus)==null||i.call(o)):(e.value=!1,(u=o.onBlur)==null||u.call(o))});pe(()=>{t(),re--,re||js()})}return Re(e)}function Gs(){document.addEventListener("focusin",Ce),Be=!0,me.value=document.activeElement}function js(){document.removeEventListener("focusin",Ce)}function Ce(){me.value=document.activeElement}const zs={class:"VPMenuLink"},qs=_({__name:"VPMenuLink",props:{item:{}},setup(o){const{page:e}=L();return(t,n)=>(a(),c("div",zs,[m(F,{class:T({active:r(z)(r(e).relativePath,t.item.activeMatch||t.item.link,!!t.item.activeMatch)}),href:t.item.link,target:t.item.target,rel:t.item.rel},{default:v(()=>[D(I(t.item.text),1)]),_:1},8,["class","href","target","rel"])]))}}),se=k(qs,[["__scopeId","data-v-43f1e123"]]),Ws={class:"VPMenuGroup"},Ks={key:0,class:"title"},Rs=_({__name:"VPMenuGroup",props:{text:{},items:{}},setup(o){return(e,t)=>(a(),c("div",Ws,[e.text?(a(),c("p",Ks,I(e.text),1)):f("",!0),(a(!0),c(M,null,E(e.items,n=>(a(),c(M,null,["link"in n?(a(),b(se,{key:0,item:n},null,8,["item"])):f("",!0)],64))),256))]))}}),Js=k(Rs,[["__scopeId","data-v-69e747b5"]]),Ys={class:"VPMenu"},Qs={key:0,class:"items"},Xs=_({__name:"VPMenu",props:{items:{}},setup(o){return(e,t)=>(a(),c("div",Ys,[e.items?(a(),c("div",Qs,[(a(!0),c(M,null,E(e.items,n=>(a(),c(M,{key:n.text},["link"in n?(a(),b(se,{key:0,item:n},null,8,["item"])):(a(),b(Js,{key:1,text:n.text,items:n.items},null,8,["text","items"]))],64))),128))])):f("",!0),l(e.$slots,"default",{},void 0,!0)]))}}),Zs=k(Xs,[["__scopeId","data-v-e7ea1737"]]),xs=o=>(C("data-v-b6c34ac9"),o=o(),H(),o),en=["aria-expanded","aria-label"],tn={key:0,class:"text"},on=["innerHTML"],sn=xs(()=>p("span",{class:"vpi-chevron-down text-icon"},null,-1)),nn={key:1,class:"vpi-more-horizontal icon"},an={class:"menu"},rn=_({__name:"VPFlyout",props:{icon:{},button:{},label:{},items:{}},setup(o){const e=w(!1),t=w();Us({el:t,onBlur:n});function n(){e.value=!1}return(s,i)=>(a(),c("div",{class:"VPFlyout",ref_key:"el",ref:t,onMouseenter:i[1]||(i[1]=u=>e.value=!0),onMouseleave:i[2]||(i[2]=u=>e.value=!1)},[p("button",{type:"button",class:"button","aria-haspopup":"true","aria-expanded":e.value,"aria-label":s.label,onClick:i[0]||(i[0]=u=>e.value=!e.value)},[s.button||s.icon?(a(),c("span",tn,[s.icon?(a(),c("span",{key:0,class:T([s.icon,"option-icon"])},null,2)):f("",!0),s.button?(a(),c("span",{key:1,innerHTML:s.button},null,8,on)):f("",!0),sn])):(a(),c("span",nn))],8,en),p("div",an,[m(Zs,{items:s.items},{default:v(()=>[l(s.$slots,"default",{},void 0,!0)]),_:3},8,["items"])])],544))}}),ke=k(rn,[["__scopeId","data-v-b6c34ac9"]]),ln=["href","aria-label","innerHTML"],cn=_({__name:"VPSocialLink",props:{icon:{},link:{},ariaLabel:{}},setup(o){const e=o,t=$(()=>typeof e.icon=="object"?e.icon.svg:``);return(n,s)=>(a(),c("a",{class:"VPSocialLink no-icon",href:n.link,"aria-label":n.ariaLabel??(typeof n.icon=="string"?n.icon:""),target:"_blank",rel:"noopener",innerHTML:t.value},null,8,ln))}}),un=k(cn,[["__scopeId","data-v-eee4e7cb"]]),dn={class:"VPSocialLinks"},vn=_({__name:"VPSocialLinks",props:{links:{}},setup(o){return(e,t)=>(a(),c("div",dn,[(a(!0),c(M,null,E(e.links,({link:n,icon:s,ariaLabel:i})=>(a(),b(un,{key:n,icon:s,link:n,ariaLabel:i},null,8,["icon","link","ariaLabel"]))),128))]))}}),be=k(vn,[["__scopeId","data-v-7bc22406"]]),pn={key:0,class:"group translations"},hn={class:"trans-title"},fn={key:1,class:"group"},_n={class:"item appearance"},mn={class:"label"},kn={class:"appearance-action"},bn={key:2,class:"group"},$n={class:"item social-links"},gn=_({__name:"VPNavBarExtra",setup(o){const{site:e,theme:t}=L(),{localeLinks:n,currentLang:s}=J({correspondingLink:!0}),i=$(()=>n.value.length&&s.value.label||e.value.appearance||t.value.socialLinks);return(u,h)=>i.value?(a(),b(ke,{key:0,class:"VPNavBarExtra",label:"extra navigation"},{default:v(()=>[r(n).length&&r(s).label?(a(),c("div",pn,[p("p",hn,I(r(s).label),1),(a(!0),c(M,null,E(r(n),d=>(a(),b(se,{key:d.link,item:d},null,8,["item"]))),128))])):f("",!0),r(e).appearance&&r(e).appearance!=="force-dark"?(a(),c("div",fn,[p("div",_n,[p("p",mn,I(r(t).darkModeSwitchLabel||"Appearance"),1),p("div",kn,[m(_e)])])])):f("",!0),r(t).socialLinks?(a(),c("div",bn,[p("div",$n,[m(be,{class:"social-links-list",links:r(t).socialLinks},null,8,["links"])])])):f("",!0)]),_:1})):f("",!0)}}),yn=k(gn,[["__scopeId","data-v-d0bd9dde"]]),Pn=o=>(C("data-v-e5dd9c1c"),o=o(),H(),o),Ln=["aria-expanded"],Vn=Pn(()=>p("span",{class:"container"},[p("span",{class:"top"}),p("span",{class:"middle"}),p("span",{class:"bottom"})],-1)),Sn=[Vn],In=_({__name:"VPNavBarHamburger",props:{active:{type:Boolean}},emits:["click"],setup(o){return(e,t)=>(a(),c("button",{type:"button",class:T(["VPNavBarHamburger",{active:e.active}]),"aria-label":"mobile navigation","aria-expanded":e.active,"aria-controls":"VPNavScreen",onClick:t[0]||(t[0]=n=>e.$emit("click"))},Sn,10,Ln))}}),wn=k(In,[["__scopeId","data-v-e5dd9c1c"]]),Tn=["innerHTML"],Nn=_({__name:"VPNavBarMenuLink",props:{item:{}},setup(o){const{page:e}=L();return(t,n)=>(a(),b(F,{class:T({VPNavBarMenuLink:!0,active:r(z)(r(e).relativePath,t.item.activeMatch||t.item.link,!!t.item.activeMatch)}),href:t.item.link,noIcon:t.item.noIcon,target:t.item.target,rel:t.item.rel,tabindex:"0"},{default:v(()=>[p("span",{innerHTML:t.item.text},null,8,Tn)]),_:1},8,["class","href","noIcon","target","rel"]))}}),Mn=k(Nn,[["__scopeId","data-v-9c663999"]]),An=_({__name:"VPNavBarMenuGroup",props:{item:{}},setup(o){const e=o,{page:t}=L(),n=i=>"link"in i?z(t.value.relativePath,i.link,!!e.item.activeMatch):i.items.some(n),s=$(()=>n(e.item));return(i,u)=>(a(),b(ke,{class:T({VPNavBarMenuGroup:!0,active:r(z)(r(t).relativePath,i.item.activeMatch,!!i.item.activeMatch)||s.value}),button:i.item.text,items:i.item.items},null,8,["class","button","items"]))}}),Bn=o=>(C("data-v-7f418b0f"),o=o(),H(),o),Cn={key:0,"aria-labelledby":"main-nav-aria-label",class:"VPNavBarMenu"},Hn=Bn(()=>p("span",{id:"main-nav-aria-label",class:"visually-hidden"},"Main Navigation",-1)),En=_({__name:"VPNavBarMenu",setup(o){const{theme:e}=L();return(t,n)=>r(e).nav?(a(),c("nav",Cn,[Hn,(a(!0),c(M,null,E(r(e).nav,s=>(a(),c(M,{key:s.text},["link"in s?(a(),b(Mn,{key:0,item:s},null,8,["item"])):(a(),b(An,{key:1,item:s},null,8,["item"]))],64))),128))])):f("",!0)}}),Fn=k(En,[["__scopeId","data-v-7f418b0f"]]);function Dn(o){const{localeIndex:e,theme:t}=L();function n(s){var A,B,S;const i=s.split("."),u=(A=t.value.search)==null?void 0:A.options,h=u&&typeof u=="object",d=h&&((S=(B=u.locales)==null?void 0:B[e.value])==null?void 0:S.translations)||null,g=h&&u.translations||null;let P=d,y=g,V=o;const N=i.pop();for(const U of i){let G=null;const W=V==null?void 0:V[U];W&&(G=V=W);const ne=y==null?void 0:y[U];ne&&(G=y=ne);const ae=P==null?void 0:P[U];ae&&(G=P=ae),W||(V=G),ne||(y=G),ae||(P=G)}return(P==null?void 0:P[N])??(y==null?void 0:y[N])??(V==null?void 0:V[N])??""}return n}const On=["aria-label"],Un={class:"DocSearch-Button-Container"},Gn=p("span",{class:"vp-icon DocSearch-Search-Icon"},null,-1),jn={class:"DocSearch-Button-Placeholder"},zn=p("span",{class:"DocSearch-Button-Keys"},[p("kbd",{class:"DocSearch-Button-Key"}),p("kbd",{class:"DocSearch-Button-Key"},"K")],-1),$e=_({__name:"VPNavBarSearchButton",setup(o){const t=Dn({button:{buttonText:"Search",buttonAriaLabel:"Search"}});return(n,s)=>(a(),c("button",{type:"button",class:"DocSearch DocSearch-Button","aria-label":r(t)("button.buttonAriaLabel")},[p("span",Un,[Gn,p("span",jn,I(r(t)("button.buttonText")),1)]),zn],8,On))}}),qn={class:"VPNavBarSearch"},Wn={id:"local-search"},Kn={key:1,id:"docsearch"},Rn=_({__name:"VPNavBarSearch",setup(o){const e=()=>null,t=()=>null,{theme:n}=L(),s=w(!1),i=w(!1);R(()=>{});function u(){s.value||(s.value=!0,setTimeout(h,16))}function h(){const P=new Event("keydown");P.key="k",P.metaKey=!0,window.dispatchEvent(P),setTimeout(()=>{document.querySelector(".DocSearch-Modal")||h()},16)}const d=w(!1),g="";return(P,y)=>{var V;return a(),c("div",qn,[r(g)==="local"?(a(),c(M,{key:0},[d.value?(a(),b(r(e),{key:0,onClose:y[0]||(y[0]=N=>d.value=!1)})):f("",!0),p("div",Wn,[m($e,{onClick:y[1]||(y[1]=N=>d.value=!0)})])],64)):r(g)==="algolia"?(a(),c(M,{key:1},[s.value?(a(),b(r(t),{key:0,algolia:((V=r(n).search)==null?void 0:V.options)??r(n).algolia,onVnodeBeforeMount:y[2]||(y[2]=N=>i.value=!0)},null,8,["algolia"])):f("",!0),i.value?f("",!0):(a(),c("div",Kn,[m($e,{onClick:u})]))],64)):f("",!0)])}}}),Jn=_({__name:"VPNavBarSocialLinks",setup(o){const{theme:e}=L();return(t,n)=>r(e).socialLinks?(a(),b(be,{key:0,class:"VPNavBarSocialLinks",links:r(e).socialLinks},null,8,["links"])):f("",!0)}}),Yn=k(Jn,[["__scopeId","data-v-0394ad82"]]),Qn=["href","rel","target"],Xn={key:1},Zn={key:2},xn=_({__name:"VPNavBarTitle",setup(o){const{site:e,theme:t}=L(),{hasSidebar:n}=O(),{currentLang:s}=J(),i=$(()=>{var d;return typeof t.value.logoLink=="string"?t.value.logoLink:(d=t.value.logoLink)==null?void 0:d.link}),u=$(()=>{var d;return typeof t.value.logoLink=="string"||(d=t.value.logoLink)==null?void 0:d.rel}),h=$(()=>{var d;return typeof t.value.logoLink=="string"||(d=t.value.logoLink)==null?void 0:d.target});return(d,g)=>(a(),c("div",{class:T(["VPNavBarTitle",{"has-sidebar":r(n)}])},[p("a",{class:"title",href:i.value??r(he)(r(s).link),rel:u.value,target:h.value},[l(d.$slots,"nav-bar-title-before",{},void 0,!0),r(t).logo?(a(),b(X,{key:0,class:"logo",image:r(t).logo},null,8,["image"])):f("",!0),r(t).siteTitle?(a(),c("span",Xn,I(r(t).siteTitle),1)):r(t).siteTitle===void 0?(a(),c("span",Zn,I(r(e).title),1)):f("",!0),l(d.$slots,"nav-bar-title-after",{},void 0,!0)],8,Qn)],2))}}),ea=k(xn,[["__scopeId","data-v-ab179fa1"]]),ta={class:"items"},oa={class:"title"},sa=_({__name:"VPNavBarTranslations",setup(o){const{theme:e}=L(),{localeLinks:t,currentLang:n}=J({correspondingLink:!0});return(s,i)=>r(t).length&&r(n).label?(a(),b(ke,{key:0,class:"VPNavBarTranslations",icon:"vpi-languages",label:r(e).langMenuLabel||"Change language"},{default:v(()=>[p("div",ta,[p("p",oa,I(r(n).label),1),(a(!0),c(M,null,E(r(t),u=>(a(),b(se,{key:u.link,item:u},null,8,["item"]))),128))])]),_:1},8,["label"])):f("",!0)}}),na=k(sa,[["__scopeId","data-v-88af2de4"]]),aa=o=>(C("data-v-ccf7ddec"),o=o(),H(),o),ra={class:"wrapper"},ia={class:"container"},la={class:"title"},ca={class:"content"},ua={class:"content-body"},da=aa(()=>p("div",{class:"divider"},[p("div",{class:"divider-line"})],-1)),va=_({__name:"VPNavBar",props:{isScreenOpen:{type:Boolean}},emits:["toggle-screen"],setup(o){const{y:e}=Ve(),{hasSidebar:t}=O(),{frontmatter:n}=L(),s=w({});return ge(()=>{s.value={"has-sidebar":t.value,home:n.value.layout==="home",top:e.value===0}}),(i,u)=>(a(),c("div",{class:T(["VPNavBar",s.value])},[p("div",ra,[p("div",ia,[p("div",la,[m(ea,null,{"nav-bar-title-before":v(()=>[l(i.$slots,"nav-bar-title-before",{},void 0,!0)]),"nav-bar-title-after":v(()=>[l(i.$slots,"nav-bar-title-after",{},void 0,!0)]),_:3})]),p("div",ca,[p("div",ua,[l(i.$slots,"nav-bar-content-before",{},void 0,!0),m(Rn,{class:"search"}),m(Fn,{class:"menu"}),m(na,{class:"translations"}),m(Os,{class:"appearance"}),m(Yn,{class:"social-links"}),m(yn,{class:"extra"}),l(i.$slots,"nav-bar-content-after",{},void 0,!0),m(wn,{class:"hamburger",active:i.isScreenOpen,onClick:u[0]||(u[0]=h=>i.$emit("toggle-screen"))},null,8,["active"])])])])]),da],2))}}),pa=k(va,[["__scopeId","data-v-ccf7ddec"]]),ha={key:0,class:"VPNavScreenAppearance"},fa={class:"text"},_a=_({__name:"VPNavScreenAppearance",setup(o){const{site:e,theme:t}=L();return(n,s)=>r(e).appearance&&r(e).appearance!=="force-dark"?(a(),c("div",ha,[p("p",fa,I(r(t).darkModeSwitchLabel||"Appearance"),1),m(_e)])):f("",!0)}}),ma=k(_a,[["__scopeId","data-v-2d7af913"]]),ka=_({__name:"VPNavScreenMenuLink",props:{item:{}},setup(o){const e=te("close-screen");return(t,n)=>(a(),b(F,{class:"VPNavScreenMenuLink",href:t.item.link,target:t.item.target,rel:t.item.rel,onClick:r(e),innerHTML:t.item.text},null,8,["href","target","rel","onClick","innerHTML"]))}}),ba=k(ka,[["__scopeId","data-v-7f31e1f6"]]),$a=_({__name:"VPNavScreenMenuGroupLink",props:{item:{}},setup(o){const e=te("close-screen");return(t,n)=>(a(),b(F,{class:"VPNavScreenMenuGroupLink",href:t.item.link,target:t.item.target,rel:t.item.rel,onClick:r(e)},{default:v(()=>[D(I(t.item.text),1)]),_:1},8,["href","target","rel","onClick"]))}}),He=k($a,[["__scopeId","data-v-19976ae1"]]),ga={class:"VPNavScreenMenuGroupSection"},ya={key:0,class:"title"},Pa=_({__name:"VPNavScreenMenuGroupSection",props:{text:{},items:{}},setup(o){return(e,t)=>(a(),c("div",ga,[e.text?(a(),c("p",ya,I(e.text),1)):f("",!0),(a(!0),c(M,null,E(e.items,n=>(a(),b(He,{key:n.text,item:n},null,8,["item"]))),128))]))}}),La=k(Pa,[["__scopeId","data-v-8133b170"]]),Va=o=>(C("data-v-ff6087d4"),o=o(),H(),o),Sa=["aria-controls","aria-expanded"],Ia=["innerHTML"],wa=Va(()=>p("span",{class:"vpi-plus button-icon"},null,-1)),Ta=["id"],Na={key:1,class:"group"},Ma=_({__name:"VPNavScreenMenuGroup",props:{text:{},items:{}},setup(o){const e=o,t=w(!1),n=$(()=>`NavScreenGroup-${e.text.replace(" ","-").toLowerCase()}`);function s(){t.value=!t.value}return(i,u)=>(a(),c("div",{class:T(["VPNavScreenMenuGroup",{open:t.value}])},[p("button",{class:"button","aria-controls":n.value,"aria-expanded":t.value,onClick:s},[p("span",{class:"button-text",innerHTML:i.text},null,8,Ia),wa],8,Sa),p("div",{id:n.value,class:"items"},[(a(!0),c(M,null,E(i.items,h=>(a(),c(M,{key:h.text},["link"in h?(a(),c("div",{key:h.text,class:"item"},[m(He,{item:h},null,8,["item"])])):(a(),c("div",Na,[m(La,{text:h.text,items:h.items},null,8,["text","items"])]))],64))),128))],8,Ta)],2))}}),Aa=k(Ma,[["__scopeId","data-v-ff6087d4"]]),Ba={key:0,class:"VPNavScreenMenu"},Ca=_({__name:"VPNavScreenMenu",setup(o){const{theme:e}=L();return(t,n)=>r(e).nav?(a(),c("nav",Ba,[(a(!0),c(M,null,E(r(e).nav,s=>(a(),c(M,{key:s.text},["link"in s?(a(),b(ba,{key:0,item:s},null,8,["item"])):(a(),b(Aa,{key:1,text:s.text||"",items:s.items},null,8,["text","items"]))],64))),128))])):f("",!0)}}),Ha=_({__name:"VPNavScreenSocialLinks",setup(o){const{theme:e}=L();return(t,n)=>r(e).socialLinks?(a(),b(be,{key:0,class:"VPNavScreenSocialLinks",links:r(e).socialLinks},null,8,["links"])):f("",!0)}}),Ee=o=>(C("data-v-858fe1a4"),o=o(),H(),o),Ea=Ee(()=>p("span",{class:"vpi-languages icon lang"},null,-1)),Fa=Ee(()=>p("span",{class:"vpi-chevron-down icon chevron"},null,-1)),Da={class:"list"},Oa=_({__name:"VPNavScreenTranslations",setup(o){const{localeLinks:e,currentLang:t}=J({correspondingLink:!0}),n=w(!1);function s(){n.value=!n.value}return(i,u)=>r(e).length&&r(t).label?(a(),c("div",{key:0,class:T(["VPNavScreenTranslations",{open:n.value}])},[p("button",{class:"title",onClick:s},[Ea,D(" "+I(r(t).label)+" ",1),Fa]),p("ul",Da,[(a(!0),c(M,null,E(r(e),h=>(a(),c("li",{key:h.link,class:"item"},[m(F,{class:"link",href:h.link},{default:v(()=>[D(I(h.text),1)]),_:2},1032,["href"])]))),128))])],2)):f("",!0)}}),Ua=k(Oa,[["__scopeId","data-v-858fe1a4"]]),Ga={class:"container"},ja=_({__name:"VPNavScreen",props:{open:{type:Boolean}},setup(o){const e=w(null),t=Se(oe?document.body:null);return(n,s)=>(a(),b(de,{name:"fade",onEnter:s[0]||(s[0]=i=>t.value=!0),onAfterLeave:s[1]||(s[1]=i=>t.value=!1)},{default:v(()=>[n.open?(a(),c("div",{key:0,class:"VPNavScreen",ref_key:"screen",ref:e,id:"VPNavScreen"},[p("div",Ga,[l(n.$slots,"nav-screen-content-before",{},void 0,!0),m(Ca,{class:"menu"}),m(Ua,{class:"translations"}),m(ma,{class:"appearance"}),m(Ha,{class:"social-links"}),l(n.$slots,"nav-screen-content-after",{},void 0,!0)])],512)):f("",!0)]),_:3}))}}),za=k(ja,[["__scopeId","data-v-cc5739dd"]]),qa={key:0,class:"VPNav"},Wa=_({__name:"VPNav",setup(o){const{isScreenOpen:e,closeScreen:t,toggleScreen:n}=Is(),{frontmatter:s}=L(),i=$(()=>s.value.navbar!==!1);return Ie("close-screen",t),Z(()=>{oe&&document.documentElement.classList.toggle("hide-nav",!i.value)}),(u,h)=>i.value?(a(),c("header",qa,[m(pa,{"is-screen-open":r(e),onToggleScreen:r(n)},{"nav-bar-title-before":v(()=>[l(u.$slots,"nav-bar-title-before",{},void 0,!0)]),"nav-bar-title-after":v(()=>[l(u.$slots,"nav-bar-title-after",{},void 0,!0)]),"nav-bar-content-before":v(()=>[l(u.$slots,"nav-bar-content-before",{},void 0,!0)]),"nav-bar-content-after":v(()=>[l(u.$slots,"nav-bar-content-after",{},void 0,!0)]),_:3},8,["is-screen-open","onToggleScreen"]),m(za,{open:r(e)},{"nav-screen-content-before":v(()=>[l(u.$slots,"nav-screen-content-before",{},void 0,!0)]),"nav-screen-content-after":v(()=>[l(u.$slots,"nav-screen-content-after",{},void 0,!0)]),_:3},8,["open"])])):f("",!0)}}),Ka=k(Wa,[["__scopeId","data-v-ae24b3ad"]]),Fe=o=>(C("data-v-b8d55f3b"),o=o(),H(),o),Ra=["role","tabindex"],Ja=Fe(()=>p("div",{class:"indicator"},null,-1)),Ya=Fe(()=>p("span",{class:"vpi-chevron-right caret-icon"},null,-1)),Qa=[Ya],Xa={key:1,class:"items"},Za=_({__name:"VPSidebarItem",props:{item:{},depth:{}},setup(o){const e=o,{collapsed:t,collapsible:n,isLink:s,isActiveLink:i,hasActiveLink:u,hasChildren:h,toggle:d}=mt($(()=>e.item)),g=$(()=>h.value?"section":"div"),P=$(()=>s.value?"a":"div"),y=$(()=>h.value?e.depth+2===7?"p":`h${e.depth+2}`:"p"),V=$(()=>s.value?void 0:"button"),N=$(()=>[[`level-${e.depth}`],{collapsible:n.value},{collapsed:t.value},{"is-link":s.value},{"is-active":i.value},{"has-active":u.value}]);function A(S){"key"in S&&S.key!=="Enter"||!e.item.link&&d()}function B(){e.item.link&&d()}return(S,U)=>{const G=q("VPSidebarItem",!0);return a(),b(K(g.value),{class:T(["VPSidebarItem",N.value])},{default:v(()=>[S.item.text?(a(),c("div",Y({key:0,class:"item",role:V.value},Ye(S.item.items?{click:A,keydown:A}:{},!0),{tabindex:S.item.items&&0}),[Ja,S.item.link?(a(),b(F,{key:0,tag:P.value,class:"link",href:S.item.link,rel:S.item.rel,target:S.item.target},{default:v(()=>[(a(),b(K(y.value),{class:"text",innerHTML:S.item.text},null,8,["innerHTML"]))]),_:1},8,["tag","href","rel","target"])):(a(),b(K(y.value),{key:1,class:"text",innerHTML:S.item.text},null,8,["innerHTML"])),S.item.collapsed!=null&&S.item.items&&S.item.items.length?(a(),c("div",{key:2,class:"caret",role:"button","aria-label":"toggle section",onClick:B,onKeydown:Je(B,["enter"]),tabindex:"0"},Qa,32)):f("",!0)],16,Ra)):f("",!0),S.item.items&&S.item.items.length?(a(),c("div",Xa,[S.depth<5?(a(!0),c(M,{key:0},E(S.item.items,W=>(a(),b(G,{key:W.text,item:W,depth:S.depth+1},null,8,["item","depth"]))),128)):f("",!0)])):f("",!0)]),_:1},8,["class"])}}}),xa=k(Za,[["__scopeId","data-v-b8d55f3b"]]),De=o=>(C("data-v-575e6a36"),o=o(),H(),o),er=De(()=>p("div",{class:"curtain"},null,-1)),tr={class:"nav",id:"VPSidebarNav","aria-labelledby":"sidebar-aria-label",tabindex:"-1"},or=De(()=>p("span",{class:"visually-hidden",id:"sidebar-aria-label"}," Sidebar Navigation ",-1)),sr=_({__name:"VPSidebar",props:{open:{type:Boolean}},setup(o){const{sidebarGroups:e,hasSidebar:t}=O(),n=o,s=w(null),i=Se(oe?document.body:null);return j([n,s],()=>{var u;n.open?(i.value=!0,(u=s.value)==null||u.focus()):i.value=!1},{immediate:!0,flush:"post"}),(u,h)=>r(t)?(a(),c("aside",{key:0,class:T(["VPSidebar",{open:u.open}]),ref_key:"navEl",ref:s,onClick:h[0]||(h[0]=Qe(()=>{},["stop"]))},[er,p("nav",tr,[or,l(u.$slots,"sidebar-nav-before",{},void 0,!0),(a(!0),c(M,null,E(r(e),d=>(a(),c("div",{key:d.text,class:"group"},[m(xa,{item:d,depth:0},null,8,["item"])]))),128)),l(u.$slots,"sidebar-nav-after",{},void 0,!0)])],2)):f("",!0)}}),nr=k(sr,[["__scopeId","data-v-575e6a36"]]),ar=_({__name:"VPSkipLink",setup(o){const e=ee(),t=w();j(()=>e.path,()=>t.value.focus());function n({target:s}){const i=document.getElementById(decodeURIComponent(s.hash).slice(1));if(i){const u=()=>{i.removeAttribute("tabindex"),i.removeEventListener("blur",u)};i.setAttribute("tabindex","-1"),i.addEventListener("blur",u),i.focus(),window.scrollTo(0,0)}}return(s,i)=>(a(),c(M,null,[p("span",{ref_key:"backToTop",ref:t,tabindex:"-1"},null,512),p("a",{href:"#VPContent",class:"VPSkipLink visually-hidden",onClick:n}," Skip to content ")],64))}}),rr=k(ar,[["__scopeId","data-v-0f60ec36"]]),ir=_({__name:"Layout",setup(o){const{isOpen:e,open:t,close:n}=O(),s=ee();j(()=>s.path,n),_t(e,n);const{frontmatter:i}=L(),u=Xe(),h=$(()=>!!u["home-hero-image"]);return Ie("hero-image-slot-exists",h),(d,g)=>{const P=q("Content");return r(i).layout!==!1?(a(),c("div",{key:0,class:T(["Layout",r(i).pageClass])},[l(d.$slots,"layout-top",{},void 0,!0),m(rr),m(tt,{class:"backdrop",show:r(e),onClick:r(n)},null,8,["show","onClick"]),m(Ka,null,{"nav-bar-title-before":v(()=>[l(d.$slots,"nav-bar-title-before",{},void 0,!0)]),"nav-bar-title-after":v(()=>[l(d.$slots,"nav-bar-title-after",{},void 0,!0)]),"nav-bar-content-before":v(()=>[l(d.$slots,"nav-bar-content-before",{},void 0,!0)]),"nav-bar-content-after":v(()=>[l(d.$slots,"nav-bar-content-after",{},void 0,!0)]),"nav-screen-content-before":v(()=>[l(d.$slots,"nav-screen-content-before",{},void 0,!0)]),"nav-screen-content-after":v(()=>[l(d.$slots,"nav-screen-content-after",{},void 0,!0)]),_:3}),m(Ss,{open:r(e),onOpenMenu:r(t)},null,8,["open","onOpenMenu"]),m(nr,{open:r(e)},{"sidebar-nav-before":v(()=>[l(d.$slots,"sidebar-nav-before",{},void 0,!0)]),"sidebar-nav-after":v(()=>[l(d.$slots,"sidebar-nav-after",{},void 0,!0)]),_:3},8,["open"]),m(rs,null,{"page-top":v(()=>[l(d.$slots,"page-top",{},void 0,!0)]),"page-bottom":v(()=>[l(d.$slots,"page-bottom",{},void 0,!0)]),"not-found":v(()=>[l(d.$slots,"not-found",{},void 0,!0)]),"home-hero-before":v(()=>[l(d.$slots,"home-hero-before",{},void 0,!0)]),"home-hero-info-before":v(()=>[l(d.$slots,"home-hero-info-before",{},void 0,!0)]),"home-hero-info":v(()=>[l(d.$slots,"home-hero-info",{},void 0,!0)]),"home-hero-info-after":v(()=>[l(d.$slots,"home-hero-info-after",{},void 0,!0)]),"home-hero-actions-after":v(()=>[l(d.$slots,"home-hero-actions-after",{},void 0,!0)]),"home-hero-image":v(()=>[l(d.$slots,"home-hero-image",{},void 0,!0)]),"home-hero-after":v(()=>[l(d.$slots,"home-hero-after",{},void 0,!0)]),"home-features-before":v(()=>[l(d.$slots,"home-features-before",{},void 0,!0)]),"home-features-after":v(()=>[l(d.$slots,"home-features-after",{},void 0,!0)]),"doc-footer-before":v(()=>[l(d.$slots,"doc-footer-before",{},void 0,!0)]),"doc-before":v(()=>[l(d.$slots,"doc-before",{},void 0,!0)]),"doc-after":v(()=>[l(d.$slots,"doc-after",{},void 0,!0)]),"doc-top":v(()=>[l(d.$slots,"doc-top",{},void 0,!0)]),"doc-bottom":v(()=>[l(d.$slots,"doc-bottom",{},void 0,!0)]),"aside-top":v(()=>[l(d.$slots,"aside-top",{},void 0,!0)]),"aside-bottom":v(()=>[l(d.$slots,"aside-bottom",{},void 0,!0)]),"aside-outline-before":v(()=>[l(d.$slots,"aside-outline-before",{},void 0,!0)]),"aside-outline-after":v(()=>[l(d.$slots,"aside-outline-after",{},void 0,!0)]),"aside-ads-before":v(()=>[l(d.$slots,"aside-ads-before",{},void 0,!0)]),"aside-ads-after":v(()=>[l(d.$slots,"aside-ads-after",{},void 0,!0)]),_:3}),m(ds),l(d.$slots,"layout-bottom",{},void 0,!0)],2)):(a(),b(P,{key:1}))}}}),lr=k(ir,[["__scopeId","data-v-5d98c3a5"]]),ur={Layout:lr,enhanceApp:({app:o})=>{o.component("Badge",Ze)}};export{ur as t}; +import{d as _,o as a,c,r as l,n as T,a as D,t as I,b,w as v,e as f,T as de,_ as k,u as Oe,i as Ue,f as Ge,g as ve,h as $,j as p,k as r,p as C,l as H,m as z,q as ie,s as w,v as j,x as Z,y as R,z as pe,A as ge,B as je,C as ze,D as q,F as M,E,G as ye,H as x,I as m,J as K,K as Pe,L as ee,M as Y,N as te,O as qe,P as Le,Q as We,R as Ke,S as Ve,U as oe,V as Re,W as Se,X as Ie,Y as Je,Z as Ye,$ as Qe,a0 as Xe}from"./framework.D0pIZSx4.js";const Ze=_({__name:"VPBadge",props:{text:{},type:{default:"tip"}},setup(o){return(e,t)=>(a(),c("span",{class:T(["VPBadge",e.type])},[l(e.$slots,"default",{},()=>[D(I(e.text),1)])],2))}}),xe={key:0,class:"VPBackdrop"},et=_({__name:"VPBackdrop",props:{show:{type:Boolean}},setup(o){return(e,t)=>(a(),b(de,{name:"fade"},{default:v(()=>[e.show?(a(),c("div",xe)):f("",!0)]),_:1}))}}),tt=k(et,[["__scopeId","data-v-c79a1216"]]),L=Oe;function ot(o,e){let t,n=!1;return()=>{t&&clearTimeout(t),n?t=setTimeout(o,e):(o(),(n=!0)&&setTimeout(()=>n=!1,e))}}function le(o){return/^\//.test(o)?o:`/${o}`}function he(o){const{pathname:e,search:t,hash:n,protocol:s}=new URL(o,"http://a.com");if(Ue(o)||o.startsWith("#")||!s.startsWith("http")||!Ge(e))return o;const{site:i}=L(),u=e.endsWith("/")||e.endsWith(".html")?o:o.replace(/(?:(^\.+)\/)?.*$/,`$1${e.replace(/(\.md)?$/,i.value.cleanUrls?"":".html")}${t}${n}`);return ve(u)}function J({correspondingLink:o=!1}={}){const{site:e,localeIndex:t,page:n,theme:s,hash:i}=L(),u=$(()=>{var d,g;return{label:(d=e.value.locales[t.value])==null?void 0:d.label,link:((g=e.value.locales[t.value])==null?void 0:g.link)||(t.value==="root"?"/":`/${t.value}/`)}});return{localeLinks:$(()=>Object.entries(e.value.locales).flatMap(([d,g])=>u.value.label===g.label?[]:{text:g.label,link:st(g.link||(d==="root"?"/":`/${d}/`),s.value.i18nRouting!==!1&&o,n.value.relativePath.slice(u.value.link.length-1),!e.value.cleanUrls)+i.value})),currentLang:u}}function st(o,e,t,n){return e?o.replace(/\/$/,"")+le(t.replace(/(^|\/)index\.md$/,"$1").replace(/\.md$/,n?".html":"")):o}const nt=o=>(C("data-v-d6be1790"),o=o(),H(),o),at={class:"NotFound"},rt={class:"code"},it={class:"title"},lt=nt(()=>p("div",{class:"divider"},null,-1)),ct={class:"quote"},ut={class:"action"},dt=["href","aria-label"],vt=_({__name:"NotFound",setup(o){const{theme:e}=L(),{currentLang:t}=J();return(n,s)=>{var i,u,h,d,g;return a(),c("div",at,[p("p",rt,I(((i=r(e).notFound)==null?void 0:i.code)??"404"),1),p("h1",it,I(((u=r(e).notFound)==null?void 0:u.title)??"PAGE NOT FOUND"),1),lt,p("blockquote",ct,I(((h=r(e).notFound)==null?void 0:h.quote)??"But if you don't change your direction, and if you keep looking, you may end up where you are heading."),1),p("div",ut,[p("a",{class:"link",href:r(ve)(r(t).link),"aria-label":((d=r(e).notFound)==null?void 0:d.linkLabel)??"go to home"},I(((g=r(e).notFound)==null?void 0:g.linkText)??"Take me home"),9,dt)])])}}}),pt=k(vt,[["__scopeId","data-v-d6be1790"]]);function we(o,e){if(Array.isArray(o))return Q(o);if(o==null)return[];e=le(e);const t=Object.keys(o).sort((s,i)=>i.split("/").length-s.split("/").length).find(s=>e.startsWith(le(s))),n=t?o[t]:[];return Array.isArray(n)?Q(n):Q(n.items,n.base)}function ht(o){const e=[];let t=0;for(const n in o){const s=o[n];if(s.items){t=e.push(s);continue}e[t]||e.push({items:[]}),e[t].items.push(s)}return e}function ft(o){const e=[];function t(n){for(const s of n)s.text&&s.link&&e.push({text:s.text,link:s.link,docFooterText:s.docFooterText}),s.items&&t(s.items)}return t(o),e}function ce(o,e){return Array.isArray(e)?e.some(t=>ce(o,t)):z(o,e.link)?!0:e.items?ce(o,e.items):!1}function Q(o,e){return[...o].map(t=>{const n={...t},s=n.base||e;return s&&n.link&&(n.link=s+n.link),n.items&&(n.items=Q(n.items,s)),n})}function O(){const{frontmatter:o,page:e,theme:t}=L(),n=ie("(min-width: 960px)"),s=w(!1),i=$(()=>{const B=t.value.sidebar,S=e.value.relativePath;return B?we(B,S):[]}),u=w(i.value);j(i,(B,S)=>{JSON.stringify(B)!==JSON.stringify(S)&&(u.value=i.value)});const h=$(()=>o.value.sidebar!==!1&&u.value.length>0&&o.value.layout!=="home"),d=$(()=>g?o.value.aside==null?t.value.aside==="left":o.value.aside==="left":!1),g=$(()=>o.value.layout==="home"?!1:o.value.aside!=null?!!o.value.aside:t.value.aside!==!1),P=$(()=>h.value&&n.value),y=$(()=>h.value?ht(u.value):[]);function V(){s.value=!0}function N(){s.value=!1}function A(){s.value?N():V()}return{isOpen:s,sidebar:u,sidebarGroups:y,hasSidebar:h,hasAside:g,leftAside:d,isSidebarEnabled:P,open:V,close:N,toggle:A}}function _t(o,e){let t;Z(()=>{t=o.value?document.activeElement:void 0}),R(()=>{window.addEventListener("keyup",n)}),pe(()=>{window.removeEventListener("keyup",n)});function n(s){s.key==="Escape"&&o.value&&(e(),t==null||t.focus())}}function mt(o){const{page:e,hash:t}=L(),n=w(!1),s=$(()=>o.value.collapsed!=null),i=$(()=>!!o.value.link),u=w(!1),h=()=>{u.value=z(e.value.relativePath,o.value.link)};j([e,o,t],h),R(h);const d=$(()=>u.value?!0:o.value.items?ce(e.value.relativePath,o.value.items):!1),g=$(()=>!!(o.value.items&&o.value.items.length));Z(()=>{n.value=!!(s.value&&o.value.collapsed)}),ge(()=>{(u.value||d.value)&&(n.value=!1)});function P(){s.value&&(n.value=!n.value)}return{collapsed:n,collapsible:s,isLink:i,isActiveLink:u,hasActiveLink:d,hasChildren:g,toggle:P}}function kt(){const{hasSidebar:o}=O(),e=ie("(min-width: 960px)"),t=ie("(min-width: 1280px)");return{isAsideEnabled:$(()=>!t.value&&!e.value?!1:o.value?t.value:e.value)}}const ue=[];function Te(o){return typeof o.outline=="object"&&!Array.isArray(o.outline)&&o.outline.label||o.outlineTitle||"On this page"}function fe(o){const e=[...document.querySelectorAll(".VPDoc :where(h1,h2,h3,h4,h5,h6)")].filter(t=>t.id&&t.hasChildNodes()).map(t=>{const n=Number(t.tagName[1]);return{element:t,title:bt(t),link:"#"+t.id,level:n}});return $t(e,o)}function bt(o){let e="";for(const t of o.childNodes)if(t.nodeType===1){if(t.classList.contains("VPBadge")||t.classList.contains("header-anchor")||t.classList.contains("ignore-header"))continue;e+=t.textContent}else t.nodeType===3&&(e+=t.textContent);return e.trim()}function $t(o,e){if(e===!1)return[];const t=(typeof e=="object"&&!Array.isArray(e)?e.level:e)||2,[n,s]=typeof t=="number"?[t,t]:t==="deep"?[2,6]:t;o=o.filter(u=>u.level>=n&&u.level<=s),ue.length=0;for(const{element:u,link:h}of o)ue.push({element:u,link:h});const i=[];e:for(let u=0;u=0;d--){const g=o[d];if(g.level{requestAnimationFrame(i),window.addEventListener("scroll",n)}),je(()=>{u(location.hash)}),pe(()=>{window.removeEventListener("scroll",n)});function i(){if(!t.value)return;const h=window.scrollY,d=window.innerHeight,g=document.body.offsetHeight,P=Math.abs(h+d-g)<1,y=ue.map(({element:N,link:A})=>({link:A,top:yt(N)})).filter(({top:N})=>!Number.isNaN(N)).sort((N,A)=>N.top-A.top);if(!y.length){u(null);return}if(h<1){u(null);return}if(P){u(y[y.length-1].link);return}let V=null;for(const{link:N,top:A}of y){if(A>h+ze()+4)break;V=N}u(V)}function u(h){s&&s.classList.remove("active"),h==null?s=null:s=o.value.querySelector(`a[href="${decodeURIComponent(h)}"]`);const d=s;d?(d.classList.add("active"),e.value.style.top=d.offsetTop+39+"px",e.value.style.opacity="1"):(e.value.style.top="33px",e.value.style.opacity="0")}}function yt(o){let e=0;for(;o!==document.body;){if(o===null)return NaN;e+=o.offsetTop,o=o.offsetParent}return e}const Pt=["href","title"],Lt=_({__name:"VPDocOutlineItem",props:{headers:{},root:{type:Boolean}},setup(o){function e({target:t}){const n=t.href.split("#")[1],s=document.getElementById(decodeURIComponent(n));s==null||s.focus({preventScroll:!0})}return(t,n)=>{const s=q("VPDocOutlineItem",!0);return a(),c("ul",{class:T(["VPDocOutlineItem",t.root?"root":"nested"])},[(a(!0),c(M,null,E(t.headers,({children:i,link:u,title:h})=>(a(),c("li",null,[p("a",{class:"outline-link",href:u,onClick:e,title:h},I(h),9,Pt),i!=null&&i.length?(a(),b(s,{key:0,headers:i},null,8,["headers"])):f("",!0)]))),256))],2)}}}),Ne=k(Lt,[["__scopeId","data-v-b933a997"]]),Vt={class:"content"},St={"aria-level":"2",class:"outline-title",id:"doc-outline-aria-label",role:"heading"},It=_({__name:"VPDocAsideOutline",setup(o){const{frontmatter:e,theme:t}=L(),n=ye([]);x(()=>{n.value=fe(e.value.outline??t.value.outline)});const s=w(),i=w();return gt(s,i),(u,h)=>(a(),c("nav",{"aria-labelledby":"doc-outline-aria-label",class:T(["VPDocAsideOutline",{"has-outline":n.value.length>0}]),ref_key:"container",ref:s},[p("div",Vt,[p("div",{class:"outline-marker",ref_key:"marker",ref:i},null,512),p("div",St,I(r(Te)(r(t))),1),m(Ne,{headers:n.value,root:!0},null,8,["headers"])])],2))}}),wt=k(It,[["__scopeId","data-v-a5bbad30"]]),Tt={class:"VPDocAsideCarbonAds"},Nt=_({__name:"VPDocAsideCarbonAds",props:{carbonAds:{}},setup(o){const e=()=>null;return(t,n)=>(a(),c("div",Tt,[m(r(e),{"carbon-ads":t.carbonAds},null,8,["carbon-ads"])]))}}),Mt=o=>(C("data-v-3f215769"),o=o(),H(),o),At={class:"VPDocAside"},Bt=Mt(()=>p("div",{class:"spacer"},null,-1)),Ct=_({__name:"VPDocAside",setup(o){const{theme:e}=L();return(t,n)=>(a(),c("div",At,[l(t.$slots,"aside-top",{},void 0,!0),l(t.$slots,"aside-outline-before",{},void 0,!0),m(wt),l(t.$slots,"aside-outline-after",{},void 0,!0),Bt,l(t.$slots,"aside-ads-before",{},void 0,!0),r(e).carbonAds?(a(),b(Nt,{key:0,"carbon-ads":r(e).carbonAds},null,8,["carbon-ads"])):f("",!0),l(t.$slots,"aside-ads-after",{},void 0,!0),l(t.$slots,"aside-bottom",{},void 0,!0)]))}}),Ht=k(Ct,[["__scopeId","data-v-3f215769"]]);function Et(){const{theme:o,page:e}=L();return $(()=>{const{text:t="Edit this page",pattern:n=""}=o.value.editLink||{};let s;return typeof n=="function"?s=n(e.value):s=n.replace(/:path/g,e.value.filePath),{url:s,text:t}})}function Ft(){const{page:o,theme:e,frontmatter:t}=L();return $(()=>{var g,P,y,V,N,A,B,S;const n=we(e.value.sidebar,o.value.relativePath),s=ft(n),i=Dt(s,U=>U.link.replace(/[?#].*$/,"")),u=i.findIndex(U=>z(o.value.relativePath,U.link)),h=((g=e.value.docFooter)==null?void 0:g.prev)===!1&&!t.value.prev||t.value.prev===!1,d=((P=e.value.docFooter)==null?void 0:P.next)===!1&&!t.value.next||t.value.next===!1;return{prev:h?void 0:{text:(typeof t.value.prev=="string"?t.value.prev:typeof t.value.prev=="object"?t.value.prev.text:void 0)??((y=i[u-1])==null?void 0:y.docFooterText)??((V=i[u-1])==null?void 0:V.text),link:(typeof t.value.prev=="object"?t.value.prev.link:void 0)??((N=i[u-1])==null?void 0:N.link)},next:d?void 0:{text:(typeof t.value.next=="string"?t.value.next:typeof t.value.next=="object"?t.value.next.text:void 0)??((A=i[u+1])==null?void 0:A.docFooterText)??((B=i[u+1])==null?void 0:B.text),link:(typeof t.value.next=="object"?t.value.next.link:void 0)??((S=i[u+1])==null?void 0:S.link)}}})}function Dt(o,e){const t=new Set;return o.filter(n=>{const s=e(n);return t.has(s)?!1:t.add(s)})}const F=_({__name:"VPLink",props:{tag:{},href:{},noIcon:{type:Boolean},target:{},rel:{}},setup(o){const e=o,t=$(()=>e.tag??(e.href?"a":"span")),n=$(()=>e.href&&Pe.test(e.href)||e.target==="_blank");return(s,i)=>(a(),b(K(t.value),{class:T(["VPLink",{link:s.href,"vp-external-link-icon":n.value,"no-icon":s.noIcon}]),href:s.href?r(he)(s.href):void 0,target:s.target??(n.value?"_blank":void 0),rel:s.rel??(n.value?"noreferrer":void 0)},{default:v(()=>[l(s.$slots,"default")]),_:3},8,["class","href","target","rel"]))}}),Ot={class:"VPLastUpdated"},Ut=["datetime"],Gt=_({__name:"VPDocFooterLastUpdated",setup(o){const{theme:e,page:t,frontmatter:n,lang:s}=L(),i=$(()=>new Date(n.value.lastUpdated??t.value.lastUpdated)),u=$(()=>i.value.toISOString()),h=w("");return R(()=>{Z(()=>{var d,g,P;h.value=new Intl.DateTimeFormat((g=(d=e.value.lastUpdated)==null?void 0:d.formatOptions)!=null&&g.forceLocale?s.value:void 0,((P=e.value.lastUpdated)==null?void 0:P.formatOptions)??{dateStyle:"short",timeStyle:"short"}).format(i.value)})}),(d,g)=>{var P;return a(),c("p",Ot,[D(I(((P=r(e).lastUpdated)==null?void 0:P.text)||r(e).lastUpdatedText||"Last updated")+": ",1),p("time",{datetime:u.value},I(h.value),9,Ut)])}}}),jt=k(Gt,[["__scopeId","data-v-7e05ebdb"]]),Me=o=>(C("data-v-d4a0bba5"),o=o(),H(),o),zt={key:0,class:"VPDocFooter"},qt={key:0,class:"edit-info"},Wt={key:0,class:"edit-link"},Kt=Me(()=>p("span",{class:"vpi-square-pen edit-link-icon"},null,-1)),Rt={key:1,class:"last-updated"},Jt={key:1,class:"prev-next","aria-labelledby":"doc-footer-aria-label"},Yt=Me(()=>p("span",{class:"visually-hidden",id:"doc-footer-aria-label"},"Pager",-1)),Qt={class:"pager"},Xt=["innerHTML"],Zt=["innerHTML"],xt={class:"pager"},eo=["innerHTML"],to=["innerHTML"],oo=_({__name:"VPDocFooter",setup(o){const{theme:e,page:t,frontmatter:n}=L(),s=Et(),i=Ft(),u=$(()=>e.value.editLink&&n.value.editLink!==!1),h=$(()=>t.value.lastUpdated&&n.value.lastUpdated!==!1),d=$(()=>u.value||h.value||i.value.prev||i.value.next);return(g,P)=>{var y,V,N,A;return d.value?(a(),c("footer",zt,[l(g.$slots,"doc-footer-before",{},void 0,!0),u.value||h.value?(a(),c("div",qt,[u.value?(a(),c("div",Wt,[m(F,{class:"edit-link-button",href:r(s).url,"no-icon":!0},{default:v(()=>[Kt,D(" "+I(r(s).text),1)]),_:1},8,["href"])])):f("",!0),h.value?(a(),c("div",Rt,[m(jt)])):f("",!0)])):f("",!0),(y=r(i).prev)!=null&&y.link||(V=r(i).next)!=null&&V.link?(a(),c("nav",Jt,[Yt,p("div",Qt,[(N=r(i).prev)!=null&&N.link?(a(),b(F,{key:0,class:"pager-link prev",href:r(i).prev.link},{default:v(()=>{var B;return[p("span",{class:"desc",innerHTML:((B=r(e).docFooter)==null?void 0:B.prev)||"Previous page"},null,8,Xt),p("span",{class:"title",innerHTML:r(i).prev.text},null,8,Zt)]}),_:1},8,["href"])):f("",!0)]),p("div",xt,[(A=r(i).next)!=null&&A.link?(a(),b(F,{key:0,class:"pager-link next",href:r(i).next.link},{default:v(()=>{var B;return[p("span",{class:"desc",innerHTML:((B=r(e).docFooter)==null?void 0:B.next)||"Next page"},null,8,eo),p("span",{class:"title",innerHTML:r(i).next.text},null,8,to)]}),_:1},8,["href"])):f("",!0)])])):f("",!0)])):f("",!0)}}}),so=k(oo,[["__scopeId","data-v-d4a0bba5"]]),no=o=>(C("data-v-39a288b8"),o=o(),H(),o),ao={class:"container"},ro=no(()=>p("div",{class:"aside-curtain"},null,-1)),io={class:"aside-container"},lo={class:"aside-content"},co={class:"content"},uo={class:"content-container"},vo={class:"main"},po=_({__name:"VPDoc",setup(o){const{theme:e}=L(),t=ee(),{hasSidebar:n,hasAside:s,leftAside:i}=O(),u=$(()=>t.path.replace(/[./]+/g,"_").replace(/_html$/,""));return(h,d)=>{const g=q("Content");return a(),c("div",{class:T(["VPDoc",{"has-sidebar":r(n),"has-aside":r(s)}])},[l(h.$slots,"doc-top",{},void 0,!0),p("div",ao,[r(s)?(a(),c("div",{key:0,class:T(["aside",{"left-aside":r(i)}])},[ro,p("div",io,[p("div",lo,[m(Ht,null,{"aside-top":v(()=>[l(h.$slots,"aside-top",{},void 0,!0)]),"aside-bottom":v(()=>[l(h.$slots,"aside-bottom",{},void 0,!0)]),"aside-outline-before":v(()=>[l(h.$slots,"aside-outline-before",{},void 0,!0)]),"aside-outline-after":v(()=>[l(h.$slots,"aside-outline-after",{},void 0,!0)]),"aside-ads-before":v(()=>[l(h.$slots,"aside-ads-before",{},void 0,!0)]),"aside-ads-after":v(()=>[l(h.$slots,"aside-ads-after",{},void 0,!0)]),_:3})])])],2)):f("",!0),p("div",co,[p("div",uo,[l(h.$slots,"doc-before",{},void 0,!0),p("main",vo,[m(g,{class:T(["vp-doc",[u.value,r(e).externalLinkIcon&&"external-link-icon-enabled"]])},null,8,["class"])]),m(so,null,{"doc-footer-before":v(()=>[l(h.$slots,"doc-footer-before",{},void 0,!0)]),_:3}),l(h.$slots,"doc-after",{},void 0,!0)])])]),l(h.$slots,"doc-bottom",{},void 0,!0)],2)}}}),ho=k(po,[["__scopeId","data-v-39a288b8"]]),fo=_({__name:"VPButton",props:{tag:{},size:{default:"medium"},theme:{default:"brand"},text:{},href:{},target:{},rel:{}},setup(o){const e=o,t=$(()=>e.href&&Pe.test(e.href)),n=$(()=>e.tag||e.href?"a":"button");return(s,i)=>(a(),b(K(n.value),{class:T(["VPButton",[s.size,s.theme]]),href:s.href?r(he)(s.href):void 0,target:e.target??(t.value?"_blank":void 0),rel:e.rel??(t.value?"noreferrer":void 0)},{default:v(()=>[D(I(s.text),1)]),_:1},8,["class","href","target","rel"]))}}),_o=k(fo,[["__scopeId","data-v-cad61b99"]]),mo=["src","alt"],ko=_({inheritAttrs:!1,__name:"VPImage",props:{image:{},alt:{}},setup(o){return(e,t)=>{const n=q("VPImage",!0);return e.image?(a(),c(M,{key:0},[typeof e.image=="string"||"src"in e.image?(a(),c("img",Y({key:0,class:"VPImage"},typeof e.image=="string"?e.$attrs:{...e.image,...e.$attrs},{src:r(ve)(typeof e.image=="string"?e.image:e.image.src),alt:e.alt??(typeof e.image=="string"?"":e.image.alt||"")}),null,16,mo)):(a(),c(M,{key:1},[m(n,Y({class:"dark",image:e.image.dark,alt:e.image.alt},e.$attrs),null,16,["image","alt"]),m(n,Y({class:"light",image:e.image.light,alt:e.image.alt},e.$attrs),null,16,["image","alt"])],64))],64)):f("",!0)}}}),X=k(ko,[["__scopeId","data-v-8426fc1a"]]),bo=o=>(C("data-v-303bb580"),o=o(),H(),o),$o={class:"container"},go={class:"main"},yo={key:0,class:"name"},Po=["innerHTML"],Lo=["innerHTML"],Vo=["innerHTML"],So={key:0,class:"actions"},Io={key:0,class:"image"},wo={class:"image-container"},To=bo(()=>p("div",{class:"image-bg"},null,-1)),No=_({__name:"VPHero",props:{name:{},text:{},tagline:{},image:{},actions:{}},setup(o){const e=te("hero-image-slot-exists");return(t,n)=>(a(),c("div",{class:T(["VPHero",{"has-image":t.image||r(e)}])},[p("div",$o,[p("div",go,[l(t.$slots,"home-hero-info-before",{},void 0,!0),l(t.$slots,"home-hero-info",{},()=>[t.name?(a(),c("h1",yo,[p("span",{innerHTML:t.name,class:"clip"},null,8,Po)])):f("",!0),t.text?(a(),c("p",{key:1,innerHTML:t.text,class:"text"},null,8,Lo)):f("",!0),t.tagline?(a(),c("p",{key:2,innerHTML:t.tagline,class:"tagline"},null,8,Vo)):f("",!0)],!0),l(t.$slots,"home-hero-info-after",{},void 0,!0),t.actions?(a(),c("div",So,[(a(!0),c(M,null,E(t.actions,s=>(a(),c("div",{key:s.link,class:"action"},[m(_o,{tag:"a",size:"medium",theme:s.theme,text:s.text,href:s.link,target:s.target,rel:s.rel},null,8,["theme","text","href","target","rel"])]))),128))])):f("",!0),l(t.$slots,"home-hero-actions-after",{},void 0,!0)]),t.image||r(e)?(a(),c("div",Io,[p("div",wo,[To,l(t.$slots,"home-hero-image",{},()=>[t.image?(a(),b(X,{key:0,class:"image-src",image:t.image},null,8,["image"])):f("",!0)],!0)])])):f("",!0)])],2))}}),Mo=k(No,[["__scopeId","data-v-303bb580"]]),Ao=_({__name:"VPHomeHero",setup(o){const{frontmatter:e}=L();return(t,n)=>r(e).hero?(a(),b(Mo,{key:0,class:"VPHomeHero",name:r(e).hero.name,text:r(e).hero.text,tagline:r(e).hero.tagline,image:r(e).hero.image,actions:r(e).hero.actions},{"home-hero-info-before":v(()=>[l(t.$slots,"home-hero-info-before")]),"home-hero-info":v(()=>[l(t.$slots,"home-hero-info")]),"home-hero-info-after":v(()=>[l(t.$slots,"home-hero-info-after")]),"home-hero-actions-after":v(()=>[l(t.$slots,"home-hero-actions-after")]),"home-hero-image":v(()=>[l(t.$slots,"home-hero-image")]),_:3},8,["name","text","tagline","image","actions"])):f("",!0)}}),Bo=o=>(C("data-v-a3976bdc"),o=o(),H(),o),Co={class:"box"},Ho={key:0,class:"icon"},Eo=["innerHTML"],Fo=["innerHTML"],Do=["innerHTML"],Oo={key:4,class:"link-text"},Uo={class:"link-text-value"},Go=Bo(()=>p("span",{class:"vpi-arrow-right link-text-icon"},null,-1)),jo=_({__name:"VPFeature",props:{icon:{},title:{},details:{},link:{},linkText:{},rel:{},target:{}},setup(o){return(e,t)=>(a(),b(F,{class:"VPFeature",href:e.link,rel:e.rel,target:e.target,"no-icon":!0,tag:e.link?"a":"div"},{default:v(()=>[p("article",Co,[typeof e.icon=="object"&&e.icon.wrap?(a(),c("div",Ho,[m(X,{image:e.icon,alt:e.icon.alt,height:e.icon.height||48,width:e.icon.width||48},null,8,["image","alt","height","width"])])):typeof e.icon=="object"?(a(),b(X,{key:1,image:e.icon,alt:e.icon.alt,height:e.icon.height||48,width:e.icon.width||48},null,8,["image","alt","height","width"])):e.icon?(a(),c("div",{key:2,class:"icon",innerHTML:e.icon},null,8,Eo)):f("",!0),p("h2",{class:"title",innerHTML:e.title},null,8,Fo),e.details?(a(),c("p",{key:3,class:"details",innerHTML:e.details},null,8,Do)):f("",!0),e.linkText?(a(),c("div",Oo,[p("p",Uo,[D(I(e.linkText)+" ",1),Go])])):f("",!0)])]),_:1},8,["href","rel","target","tag"]))}}),zo=k(jo,[["__scopeId","data-v-a3976bdc"]]),qo={key:0,class:"VPFeatures"},Wo={class:"container"},Ko={class:"items"},Ro=_({__name:"VPFeatures",props:{features:{}},setup(o){const e=o,t=$(()=>{const n=e.features.length;if(n){if(n===2)return"grid-2";if(n===3)return"grid-3";if(n%3===0)return"grid-6";if(n>3)return"grid-4"}else return});return(n,s)=>n.features?(a(),c("div",qo,[p("div",Wo,[p("div",Ko,[(a(!0),c(M,null,E(n.features,i=>(a(),c("div",{key:i.title,class:T(["item",[t.value]])},[m(zo,{icon:i.icon,title:i.title,details:i.details,link:i.link,"link-text":i.linkText,rel:i.rel,target:i.target},null,8,["icon","title","details","link","link-text","rel","target"])],2))),128))])])])):f("",!0)}}),Jo=k(Ro,[["__scopeId","data-v-a6181336"]]),Yo=_({__name:"VPHomeFeatures",setup(o){const{frontmatter:e}=L();return(t,n)=>r(e).features?(a(),b(Jo,{key:0,class:"VPHomeFeatures",features:r(e).features},null,8,["features"])):f("",!0)}}),Qo=_({__name:"VPHomeContent",setup(o){const{width:e}=qe({initialWidth:0,includeScrollbar:!1});return(t,n)=>(a(),c("div",{class:"vp-doc container",style:Le(r(e)?{"--vp-offset":`calc(50% - ${r(e)/2}px)`}:{})},[l(t.$slots,"default",{},void 0,!0)],4))}}),Xo=k(Qo,[["__scopeId","data-v-8e2d4988"]]),Zo={class:"VPHome"},xo=_({__name:"VPHome",setup(o){const{frontmatter:e}=L();return(t,n)=>{const s=q("Content");return a(),c("div",Zo,[l(t.$slots,"home-hero-before",{},void 0,!0),m(Ao,null,{"home-hero-info-before":v(()=>[l(t.$slots,"home-hero-info-before",{},void 0,!0)]),"home-hero-info":v(()=>[l(t.$slots,"home-hero-info",{},void 0,!0)]),"home-hero-info-after":v(()=>[l(t.$slots,"home-hero-info-after",{},void 0,!0)]),"home-hero-actions-after":v(()=>[l(t.$slots,"home-hero-actions-after",{},void 0,!0)]),"home-hero-image":v(()=>[l(t.$slots,"home-hero-image",{},void 0,!0)]),_:3}),l(t.$slots,"home-hero-after",{},void 0,!0),l(t.$slots,"home-features-before",{},void 0,!0),m(Yo),l(t.$slots,"home-features-after",{},void 0,!0),r(e).markdownStyles!==!1?(a(),b(Xo,{key:0},{default:v(()=>[m(s)]),_:1})):(a(),b(s,{key:1}))])}}}),es=k(xo,[["__scopeId","data-v-686f80a6"]]),ts={},os={class:"VPPage"};function ss(o,e){const t=q("Content");return a(),c("div",os,[l(o.$slots,"page-top"),m(t),l(o.$slots,"page-bottom")])}const ns=k(ts,[["render",ss]]),as=_({__name:"VPContent",setup(o){const{page:e,frontmatter:t}=L(),{hasSidebar:n}=O();return(s,i)=>(a(),c("div",{class:T(["VPContent",{"has-sidebar":r(n),"is-home":r(t).layout==="home"}]),id:"VPContent"},[r(e).isNotFound?l(s.$slots,"not-found",{key:0},()=>[m(pt)],!0):r(t).layout==="page"?(a(),b(ns,{key:1},{"page-top":v(()=>[l(s.$slots,"page-top",{},void 0,!0)]),"page-bottom":v(()=>[l(s.$slots,"page-bottom",{},void 0,!0)]),_:3})):r(t).layout==="home"?(a(),b(es,{key:2},{"home-hero-before":v(()=>[l(s.$slots,"home-hero-before",{},void 0,!0)]),"home-hero-info-before":v(()=>[l(s.$slots,"home-hero-info-before",{},void 0,!0)]),"home-hero-info":v(()=>[l(s.$slots,"home-hero-info",{},void 0,!0)]),"home-hero-info-after":v(()=>[l(s.$slots,"home-hero-info-after",{},void 0,!0)]),"home-hero-actions-after":v(()=>[l(s.$slots,"home-hero-actions-after",{},void 0,!0)]),"home-hero-image":v(()=>[l(s.$slots,"home-hero-image",{},void 0,!0)]),"home-hero-after":v(()=>[l(s.$slots,"home-hero-after",{},void 0,!0)]),"home-features-before":v(()=>[l(s.$slots,"home-features-before",{},void 0,!0)]),"home-features-after":v(()=>[l(s.$slots,"home-features-after",{},void 0,!0)]),_:3})):r(t).layout&&r(t).layout!=="doc"?(a(),b(K(r(t).layout),{key:3})):(a(),b(ho,{key:4},{"doc-top":v(()=>[l(s.$slots,"doc-top",{},void 0,!0)]),"doc-bottom":v(()=>[l(s.$slots,"doc-bottom",{},void 0,!0)]),"doc-footer-before":v(()=>[l(s.$slots,"doc-footer-before",{},void 0,!0)]),"doc-before":v(()=>[l(s.$slots,"doc-before",{},void 0,!0)]),"doc-after":v(()=>[l(s.$slots,"doc-after",{},void 0,!0)]),"aside-top":v(()=>[l(s.$slots,"aside-top",{},void 0,!0)]),"aside-outline-before":v(()=>[l(s.$slots,"aside-outline-before",{},void 0,!0)]),"aside-outline-after":v(()=>[l(s.$slots,"aside-outline-after",{},void 0,!0)]),"aside-ads-before":v(()=>[l(s.$slots,"aside-ads-before",{},void 0,!0)]),"aside-ads-after":v(()=>[l(s.$slots,"aside-ads-after",{},void 0,!0)]),"aside-bottom":v(()=>[l(s.$slots,"aside-bottom",{},void 0,!0)]),_:3}))],2))}}),rs=k(as,[["__scopeId","data-v-1428d186"]]),is={class:"container"},ls=["innerHTML"],cs=["innerHTML"],us=_({__name:"VPFooter",setup(o){const{theme:e,frontmatter:t}=L(),{hasSidebar:n}=O();return(s,i)=>r(e).footer&&r(t).footer!==!1?(a(),c("footer",{key:0,class:T(["VPFooter",{"has-sidebar":r(n)}])},[p("div",is,[r(e).footer.message?(a(),c("p",{key:0,class:"message",innerHTML:r(e).footer.message},null,8,ls)):f("",!0),r(e).footer.copyright?(a(),c("p",{key:1,class:"copyright",innerHTML:r(e).footer.copyright},null,8,cs)):f("",!0)])],2)):f("",!0)}}),ds=k(us,[["__scopeId","data-v-e315a0ad"]]);function vs(){const{theme:o,frontmatter:e}=L(),t=ye([]),n=$(()=>t.value.length>0);return x(()=>{t.value=fe(e.value.outline??o.value.outline)}),{headers:t,hasLocalNav:n}}const ps=o=>(C("data-v-17a5e62e"),o=o(),H(),o),hs={class:"menu-text"},fs=ps(()=>p("span",{class:"vpi-chevron-right icon"},null,-1)),_s={class:"header"},ms={class:"outline"},ks=_({__name:"VPLocalNavOutlineDropdown",props:{headers:{},navHeight:{}},setup(o){const e=o,{theme:t}=L(),n=w(!1),s=w(0),i=w(),u=w();function h(y){var V;(V=i.value)!=null&&V.contains(y.target)||(n.value=!1)}j(n,y=>{if(y){document.addEventListener("click",h);return}document.removeEventListener("click",h)}),We("Escape",()=>{n.value=!1}),x(()=>{n.value=!1});function d(){n.value=!n.value,s.value=window.innerHeight+Math.min(window.scrollY-e.navHeight,0)}function g(y){y.target.classList.contains("outline-link")&&(u.value&&(u.value.style.transition="none"),Ke(()=>{n.value=!1}))}function P(){n.value=!1,window.scrollTo({top:0,left:0,behavior:"smooth"})}return(y,V)=>(a(),c("div",{class:"VPLocalNavOutlineDropdown",style:Le({"--vp-vh":s.value+"px"}),ref_key:"main",ref:i},[y.headers.length>0?(a(),c("button",{key:0,onClick:d,class:T({open:n.value})},[p("span",hs,I(r(Te)(r(t))),1),fs],2)):(a(),c("button",{key:1,onClick:P},I(r(t).returnToTopLabel||"Return to top"),1)),m(de,{name:"flyout"},{default:v(()=>[n.value?(a(),c("div",{key:0,ref_key:"items",ref:u,class:"items",onClick:g},[p("div",_s,[p("a",{class:"top-link",href:"#",onClick:P},I(r(t).returnToTopLabel||"Return to top"),1)]),p("div",ms,[m(Ne,{headers:y.headers},null,8,["headers"])])],512)):f("",!0)]),_:1})],4))}}),bs=k(ks,[["__scopeId","data-v-17a5e62e"]]),$s=o=>(C("data-v-a6f0e41e"),o=o(),H(),o),gs={class:"container"},ys=["aria-expanded"],Ps=$s(()=>p("span",{class:"vpi-align-left menu-icon"},null,-1)),Ls={class:"menu-text"},Vs=_({__name:"VPLocalNav",props:{open:{type:Boolean}},emits:["open-menu"],setup(o){const{theme:e,frontmatter:t}=L(),{hasSidebar:n}=O(),{headers:s}=vs(),{y:i}=Ve(),u=w(0);R(()=>{u.value=parseInt(getComputedStyle(document.documentElement).getPropertyValue("--vp-nav-height"))}),x(()=>{s.value=fe(t.value.outline??e.value.outline)});const h=$(()=>s.value.length===0),d=$(()=>h.value&&!n.value),g=$(()=>({VPLocalNav:!0,"has-sidebar":n.value,empty:h.value,fixed:d.value}));return(P,y)=>r(t).layout!=="home"&&(!d.value||r(i)>=u.value)?(a(),c("div",{key:0,class:T(g.value)},[p("div",gs,[r(n)?(a(),c("button",{key:0,class:"menu","aria-expanded":P.open,"aria-controls":"VPSidebarNav",onClick:y[0]||(y[0]=V=>P.$emit("open-menu"))},[Ps,p("span",Ls,I(r(e).sidebarMenuLabel||"Menu"),1)],8,ys)):f("",!0),m(bs,{headers:r(s),navHeight:u.value},null,8,["headers","navHeight"])])],2)):f("",!0)}}),Ss=k(Vs,[["__scopeId","data-v-a6f0e41e"]]);function Is(){const o=w(!1);function e(){o.value=!0,window.addEventListener("resize",s)}function t(){o.value=!1,window.removeEventListener("resize",s)}function n(){o.value?t():e()}function s(){window.outerWidth>=768&&t()}const i=ee();return j(()=>i.path,t),{isScreenOpen:o,openScreen:e,closeScreen:t,toggleScreen:n}}const ws={},Ts={class:"VPSwitch",type:"button",role:"switch"},Ns={class:"check"},Ms={key:0,class:"icon"};function As(o,e){return a(),c("button",Ts,[p("span",Ns,[o.$slots.default?(a(),c("span",Ms,[l(o.$slots,"default",{},void 0,!0)])):f("",!0)])])}const Bs=k(ws,[["render",As],["__scopeId","data-v-1d5665e3"]]),Ae=o=>(C("data-v-d1f28634"),o=o(),H(),o),Cs=Ae(()=>p("span",{class:"vpi-sun sun"},null,-1)),Hs=Ae(()=>p("span",{class:"vpi-moon moon"},null,-1)),Es=_({__name:"VPSwitchAppearance",setup(o){const{isDark:e,theme:t}=L(),n=te("toggle-appearance",()=>{e.value=!e.value}),s=$(()=>e.value?t.value.lightModeSwitchTitle||"Switch to light theme":t.value.darkModeSwitchTitle||"Switch to dark theme");return(i,u)=>(a(),b(Bs,{title:s.value,class:"VPSwitchAppearance","aria-checked":r(e),onClick:r(n)},{default:v(()=>[Cs,Hs]),_:1},8,["title","aria-checked","onClick"]))}}),_e=k(Es,[["__scopeId","data-v-d1f28634"]]),Fs={key:0,class:"VPNavBarAppearance"},Ds=_({__name:"VPNavBarAppearance",setup(o){const{site:e}=L();return(t,n)=>r(e).appearance&&r(e).appearance!=="force-dark"?(a(),c("div",Fs,[m(_e)])):f("",!0)}}),Os=k(Ds,[["__scopeId","data-v-e6aabb21"]]),me=w();let Be=!1,re=0;function Us(o){const e=w(!1);if(oe){!Be&&Gs(),re++;const t=j(me,n=>{var s,i,u;n===o.el.value||(s=o.el.value)!=null&&s.contains(n)?(e.value=!0,(i=o.onFocus)==null||i.call(o)):(e.value=!1,(u=o.onBlur)==null||u.call(o))});pe(()=>{t(),re--,re||js()})}return Re(e)}function Gs(){document.addEventListener("focusin",Ce),Be=!0,me.value=document.activeElement}function js(){document.removeEventListener("focusin",Ce)}function Ce(){me.value=document.activeElement}const zs={class:"VPMenuLink"},qs=_({__name:"VPMenuLink",props:{item:{}},setup(o){const{page:e}=L();return(t,n)=>(a(),c("div",zs,[m(F,{class:T({active:r(z)(r(e).relativePath,t.item.activeMatch||t.item.link,!!t.item.activeMatch)}),href:t.item.link,target:t.item.target,rel:t.item.rel},{default:v(()=>[D(I(t.item.text),1)]),_:1},8,["class","href","target","rel"])]))}}),se=k(qs,[["__scopeId","data-v-43f1e123"]]),Ws={class:"VPMenuGroup"},Ks={key:0,class:"title"},Rs=_({__name:"VPMenuGroup",props:{text:{},items:{}},setup(o){return(e,t)=>(a(),c("div",Ws,[e.text?(a(),c("p",Ks,I(e.text),1)):f("",!0),(a(!0),c(M,null,E(e.items,n=>(a(),c(M,null,["link"in n?(a(),b(se,{key:0,item:n},null,8,["item"])):f("",!0)],64))),256))]))}}),Js=k(Rs,[["__scopeId","data-v-69e747b5"]]),Ys={class:"VPMenu"},Qs={key:0,class:"items"},Xs=_({__name:"VPMenu",props:{items:{}},setup(o){return(e,t)=>(a(),c("div",Ys,[e.items?(a(),c("div",Qs,[(a(!0),c(M,null,E(e.items,n=>(a(),c(M,{key:n.text},["link"in n?(a(),b(se,{key:0,item:n},null,8,["item"])):(a(),b(Js,{key:1,text:n.text,items:n.items},null,8,["text","items"]))],64))),128))])):f("",!0),l(e.$slots,"default",{},void 0,!0)]))}}),Zs=k(Xs,[["__scopeId","data-v-e7ea1737"]]),xs=o=>(C("data-v-b6c34ac9"),o=o(),H(),o),en=["aria-expanded","aria-label"],tn={key:0,class:"text"},on=["innerHTML"],sn=xs(()=>p("span",{class:"vpi-chevron-down text-icon"},null,-1)),nn={key:1,class:"vpi-more-horizontal icon"},an={class:"menu"},rn=_({__name:"VPFlyout",props:{icon:{},button:{},label:{},items:{}},setup(o){const e=w(!1),t=w();Us({el:t,onBlur:n});function n(){e.value=!1}return(s,i)=>(a(),c("div",{class:"VPFlyout",ref_key:"el",ref:t,onMouseenter:i[1]||(i[1]=u=>e.value=!0),onMouseleave:i[2]||(i[2]=u=>e.value=!1)},[p("button",{type:"button",class:"button","aria-haspopup":"true","aria-expanded":e.value,"aria-label":s.label,onClick:i[0]||(i[0]=u=>e.value=!e.value)},[s.button||s.icon?(a(),c("span",tn,[s.icon?(a(),c("span",{key:0,class:T([s.icon,"option-icon"])},null,2)):f("",!0),s.button?(a(),c("span",{key:1,innerHTML:s.button},null,8,on)):f("",!0),sn])):(a(),c("span",nn))],8,en),p("div",an,[m(Zs,{items:s.items},{default:v(()=>[l(s.$slots,"default",{},void 0,!0)]),_:3},8,["items"])])],544))}}),ke=k(rn,[["__scopeId","data-v-b6c34ac9"]]),ln=["href","aria-label","innerHTML"],cn=_({__name:"VPSocialLink",props:{icon:{},link:{},ariaLabel:{}},setup(o){const e=o,t=$(()=>typeof e.icon=="object"?e.icon.svg:``);return(n,s)=>(a(),c("a",{class:"VPSocialLink no-icon",href:n.link,"aria-label":n.ariaLabel??(typeof n.icon=="string"?n.icon:""),target:"_blank",rel:"noopener",innerHTML:t.value},null,8,ln))}}),un=k(cn,[["__scopeId","data-v-eee4e7cb"]]),dn={class:"VPSocialLinks"},vn=_({__name:"VPSocialLinks",props:{links:{}},setup(o){return(e,t)=>(a(),c("div",dn,[(a(!0),c(M,null,E(e.links,({link:n,icon:s,ariaLabel:i})=>(a(),b(un,{key:n,icon:s,link:n,ariaLabel:i},null,8,["icon","link","ariaLabel"]))),128))]))}}),be=k(vn,[["__scopeId","data-v-7bc22406"]]),pn={key:0,class:"group translations"},hn={class:"trans-title"},fn={key:1,class:"group"},_n={class:"item appearance"},mn={class:"label"},kn={class:"appearance-action"},bn={key:2,class:"group"},$n={class:"item social-links"},gn=_({__name:"VPNavBarExtra",setup(o){const{site:e,theme:t}=L(),{localeLinks:n,currentLang:s}=J({correspondingLink:!0}),i=$(()=>n.value.length&&s.value.label||e.value.appearance||t.value.socialLinks);return(u,h)=>i.value?(a(),b(ke,{key:0,class:"VPNavBarExtra",label:"extra navigation"},{default:v(()=>[r(n).length&&r(s).label?(a(),c("div",pn,[p("p",hn,I(r(s).label),1),(a(!0),c(M,null,E(r(n),d=>(a(),b(se,{key:d.link,item:d},null,8,["item"]))),128))])):f("",!0),r(e).appearance&&r(e).appearance!=="force-dark"?(a(),c("div",fn,[p("div",_n,[p("p",mn,I(r(t).darkModeSwitchLabel||"Appearance"),1),p("div",kn,[m(_e)])])])):f("",!0),r(t).socialLinks?(a(),c("div",bn,[p("div",$n,[m(be,{class:"social-links-list",links:r(t).socialLinks},null,8,["links"])])])):f("",!0)]),_:1})):f("",!0)}}),yn=k(gn,[["__scopeId","data-v-d0bd9dde"]]),Pn=o=>(C("data-v-e5dd9c1c"),o=o(),H(),o),Ln=["aria-expanded"],Vn=Pn(()=>p("span",{class:"container"},[p("span",{class:"top"}),p("span",{class:"middle"}),p("span",{class:"bottom"})],-1)),Sn=[Vn],In=_({__name:"VPNavBarHamburger",props:{active:{type:Boolean}},emits:["click"],setup(o){return(e,t)=>(a(),c("button",{type:"button",class:T(["VPNavBarHamburger",{active:e.active}]),"aria-label":"mobile navigation","aria-expanded":e.active,"aria-controls":"VPNavScreen",onClick:t[0]||(t[0]=n=>e.$emit("click"))},Sn,10,Ln))}}),wn=k(In,[["__scopeId","data-v-e5dd9c1c"]]),Tn=["innerHTML"],Nn=_({__name:"VPNavBarMenuLink",props:{item:{}},setup(o){const{page:e}=L();return(t,n)=>(a(),b(F,{class:T({VPNavBarMenuLink:!0,active:r(z)(r(e).relativePath,t.item.activeMatch||t.item.link,!!t.item.activeMatch)}),href:t.item.link,noIcon:t.item.noIcon,target:t.item.target,rel:t.item.rel,tabindex:"0"},{default:v(()=>[p("span",{innerHTML:t.item.text},null,8,Tn)]),_:1},8,["class","href","noIcon","target","rel"]))}}),Mn=k(Nn,[["__scopeId","data-v-9c663999"]]),An=_({__name:"VPNavBarMenuGroup",props:{item:{}},setup(o){const e=o,{page:t}=L(),n=i=>"link"in i?z(t.value.relativePath,i.link,!!e.item.activeMatch):i.items.some(n),s=$(()=>n(e.item));return(i,u)=>(a(),b(ke,{class:T({VPNavBarMenuGroup:!0,active:r(z)(r(t).relativePath,i.item.activeMatch,!!i.item.activeMatch)||s.value}),button:i.item.text,items:i.item.items},null,8,["class","button","items"]))}}),Bn=o=>(C("data-v-7f418b0f"),o=o(),H(),o),Cn={key:0,"aria-labelledby":"main-nav-aria-label",class:"VPNavBarMenu"},Hn=Bn(()=>p("span",{id:"main-nav-aria-label",class:"visually-hidden"},"Main Navigation",-1)),En=_({__name:"VPNavBarMenu",setup(o){const{theme:e}=L();return(t,n)=>r(e).nav?(a(),c("nav",Cn,[Hn,(a(!0),c(M,null,E(r(e).nav,s=>(a(),c(M,{key:s.text},["link"in s?(a(),b(Mn,{key:0,item:s},null,8,["item"])):(a(),b(An,{key:1,item:s},null,8,["item"]))],64))),128))])):f("",!0)}}),Fn=k(En,[["__scopeId","data-v-7f418b0f"]]);function Dn(o){const{localeIndex:e,theme:t}=L();function n(s){var A,B,S;const i=s.split("."),u=(A=t.value.search)==null?void 0:A.options,h=u&&typeof u=="object",d=h&&((S=(B=u.locales)==null?void 0:B[e.value])==null?void 0:S.translations)||null,g=h&&u.translations||null;let P=d,y=g,V=o;const N=i.pop();for(const U of i){let G=null;const W=V==null?void 0:V[U];W&&(G=V=W);const ne=y==null?void 0:y[U];ne&&(G=y=ne);const ae=P==null?void 0:P[U];ae&&(G=P=ae),W||(V=G),ne||(y=G),ae||(P=G)}return(P==null?void 0:P[N])??(y==null?void 0:y[N])??(V==null?void 0:V[N])??""}return n}const On=["aria-label"],Un={class:"DocSearch-Button-Container"},Gn=p("span",{class:"vp-icon DocSearch-Search-Icon"},null,-1),jn={class:"DocSearch-Button-Placeholder"},zn=p("span",{class:"DocSearch-Button-Keys"},[p("kbd",{class:"DocSearch-Button-Key"}),p("kbd",{class:"DocSearch-Button-Key"},"K")],-1),$e=_({__name:"VPNavBarSearchButton",setup(o){const t=Dn({button:{buttonText:"Search",buttonAriaLabel:"Search"}});return(n,s)=>(a(),c("button",{type:"button",class:"DocSearch DocSearch-Button","aria-label":r(t)("button.buttonAriaLabel")},[p("span",Un,[Gn,p("span",jn,I(r(t)("button.buttonText")),1)]),zn],8,On))}}),qn={class:"VPNavBarSearch"},Wn={id:"local-search"},Kn={key:1,id:"docsearch"},Rn=_({__name:"VPNavBarSearch",setup(o){const e=()=>null,t=()=>null,{theme:n}=L(),s=w(!1),i=w(!1);R(()=>{});function u(){s.value||(s.value=!0,setTimeout(h,16))}function h(){const P=new Event("keydown");P.key="k",P.metaKey=!0,window.dispatchEvent(P),setTimeout(()=>{document.querySelector(".DocSearch-Modal")||h()},16)}const d=w(!1),g="";return(P,y)=>{var V;return a(),c("div",qn,[r(g)==="local"?(a(),c(M,{key:0},[d.value?(a(),b(r(e),{key:0,onClose:y[0]||(y[0]=N=>d.value=!1)})):f("",!0),p("div",Wn,[m($e,{onClick:y[1]||(y[1]=N=>d.value=!0)})])],64)):r(g)==="algolia"?(a(),c(M,{key:1},[s.value?(a(),b(r(t),{key:0,algolia:((V=r(n).search)==null?void 0:V.options)??r(n).algolia,onVnodeBeforeMount:y[2]||(y[2]=N=>i.value=!0)},null,8,["algolia"])):f("",!0),i.value?f("",!0):(a(),c("div",Kn,[m($e,{onClick:u})]))],64)):f("",!0)])}}}),Jn=_({__name:"VPNavBarSocialLinks",setup(o){const{theme:e}=L();return(t,n)=>r(e).socialLinks?(a(),b(be,{key:0,class:"VPNavBarSocialLinks",links:r(e).socialLinks},null,8,["links"])):f("",!0)}}),Yn=k(Jn,[["__scopeId","data-v-0394ad82"]]),Qn=["href","rel","target"],Xn={key:1},Zn={key:2},xn=_({__name:"VPNavBarTitle",setup(o){const{site:e,theme:t}=L(),{hasSidebar:n}=O(),{currentLang:s}=J(),i=$(()=>{var d;return typeof t.value.logoLink=="string"?t.value.logoLink:(d=t.value.logoLink)==null?void 0:d.link}),u=$(()=>{var d;return typeof t.value.logoLink=="string"||(d=t.value.logoLink)==null?void 0:d.rel}),h=$(()=>{var d;return typeof t.value.logoLink=="string"||(d=t.value.logoLink)==null?void 0:d.target});return(d,g)=>(a(),c("div",{class:T(["VPNavBarTitle",{"has-sidebar":r(n)}])},[p("a",{class:"title",href:i.value??r(he)(r(s).link),rel:u.value,target:h.value},[l(d.$slots,"nav-bar-title-before",{},void 0,!0),r(t).logo?(a(),b(X,{key:0,class:"logo",image:r(t).logo},null,8,["image"])):f("",!0),r(t).siteTitle?(a(),c("span",Xn,I(r(t).siteTitle),1)):r(t).siteTitle===void 0?(a(),c("span",Zn,I(r(e).title),1)):f("",!0),l(d.$slots,"nav-bar-title-after",{},void 0,!0)],8,Qn)],2))}}),ea=k(xn,[["__scopeId","data-v-ab179fa1"]]),ta={class:"items"},oa={class:"title"},sa=_({__name:"VPNavBarTranslations",setup(o){const{theme:e}=L(),{localeLinks:t,currentLang:n}=J({correspondingLink:!0});return(s,i)=>r(t).length&&r(n).label?(a(),b(ke,{key:0,class:"VPNavBarTranslations",icon:"vpi-languages",label:r(e).langMenuLabel||"Change language"},{default:v(()=>[p("div",ta,[p("p",oa,I(r(n).label),1),(a(!0),c(M,null,E(r(t),u=>(a(),b(se,{key:u.link,item:u},null,8,["item"]))),128))])]),_:1},8,["label"])):f("",!0)}}),na=k(sa,[["__scopeId","data-v-88af2de4"]]),aa=o=>(C("data-v-ccf7ddec"),o=o(),H(),o),ra={class:"wrapper"},ia={class:"container"},la={class:"title"},ca={class:"content"},ua={class:"content-body"},da=aa(()=>p("div",{class:"divider"},[p("div",{class:"divider-line"})],-1)),va=_({__name:"VPNavBar",props:{isScreenOpen:{type:Boolean}},emits:["toggle-screen"],setup(o){const{y:e}=Ve(),{hasSidebar:t}=O(),{frontmatter:n}=L(),s=w({});return ge(()=>{s.value={"has-sidebar":t.value,home:n.value.layout==="home",top:e.value===0}}),(i,u)=>(a(),c("div",{class:T(["VPNavBar",s.value])},[p("div",ra,[p("div",ia,[p("div",la,[m(ea,null,{"nav-bar-title-before":v(()=>[l(i.$slots,"nav-bar-title-before",{},void 0,!0)]),"nav-bar-title-after":v(()=>[l(i.$slots,"nav-bar-title-after",{},void 0,!0)]),_:3})]),p("div",ca,[p("div",ua,[l(i.$slots,"nav-bar-content-before",{},void 0,!0),m(Rn,{class:"search"}),m(Fn,{class:"menu"}),m(na,{class:"translations"}),m(Os,{class:"appearance"}),m(Yn,{class:"social-links"}),m(yn,{class:"extra"}),l(i.$slots,"nav-bar-content-after",{},void 0,!0),m(wn,{class:"hamburger",active:i.isScreenOpen,onClick:u[0]||(u[0]=h=>i.$emit("toggle-screen"))},null,8,["active"])])])])]),da],2))}}),pa=k(va,[["__scopeId","data-v-ccf7ddec"]]),ha={key:0,class:"VPNavScreenAppearance"},fa={class:"text"},_a=_({__name:"VPNavScreenAppearance",setup(o){const{site:e,theme:t}=L();return(n,s)=>r(e).appearance&&r(e).appearance!=="force-dark"?(a(),c("div",ha,[p("p",fa,I(r(t).darkModeSwitchLabel||"Appearance"),1),m(_e)])):f("",!0)}}),ma=k(_a,[["__scopeId","data-v-2d7af913"]]),ka=_({__name:"VPNavScreenMenuLink",props:{item:{}},setup(o){const e=te("close-screen");return(t,n)=>(a(),b(F,{class:"VPNavScreenMenuLink",href:t.item.link,target:t.item.target,rel:t.item.rel,onClick:r(e),innerHTML:t.item.text},null,8,["href","target","rel","onClick","innerHTML"]))}}),ba=k(ka,[["__scopeId","data-v-7f31e1f6"]]),$a=_({__name:"VPNavScreenMenuGroupLink",props:{item:{}},setup(o){const e=te("close-screen");return(t,n)=>(a(),b(F,{class:"VPNavScreenMenuGroupLink",href:t.item.link,target:t.item.target,rel:t.item.rel,onClick:r(e)},{default:v(()=>[D(I(t.item.text),1)]),_:1},8,["href","target","rel","onClick"]))}}),He=k($a,[["__scopeId","data-v-19976ae1"]]),ga={class:"VPNavScreenMenuGroupSection"},ya={key:0,class:"title"},Pa=_({__name:"VPNavScreenMenuGroupSection",props:{text:{},items:{}},setup(o){return(e,t)=>(a(),c("div",ga,[e.text?(a(),c("p",ya,I(e.text),1)):f("",!0),(a(!0),c(M,null,E(e.items,n=>(a(),b(He,{key:n.text,item:n},null,8,["item"]))),128))]))}}),La=k(Pa,[["__scopeId","data-v-8133b170"]]),Va=o=>(C("data-v-ff6087d4"),o=o(),H(),o),Sa=["aria-controls","aria-expanded"],Ia=["innerHTML"],wa=Va(()=>p("span",{class:"vpi-plus button-icon"},null,-1)),Ta=["id"],Na={key:1,class:"group"},Ma=_({__name:"VPNavScreenMenuGroup",props:{text:{},items:{}},setup(o){const e=o,t=w(!1),n=$(()=>`NavScreenGroup-${e.text.replace(" ","-").toLowerCase()}`);function s(){t.value=!t.value}return(i,u)=>(a(),c("div",{class:T(["VPNavScreenMenuGroup",{open:t.value}])},[p("button",{class:"button","aria-controls":n.value,"aria-expanded":t.value,onClick:s},[p("span",{class:"button-text",innerHTML:i.text},null,8,Ia),wa],8,Sa),p("div",{id:n.value,class:"items"},[(a(!0),c(M,null,E(i.items,h=>(a(),c(M,{key:h.text},["link"in h?(a(),c("div",{key:h.text,class:"item"},[m(He,{item:h},null,8,["item"])])):(a(),c("div",Na,[m(La,{text:h.text,items:h.items},null,8,["text","items"])]))],64))),128))],8,Ta)],2))}}),Aa=k(Ma,[["__scopeId","data-v-ff6087d4"]]),Ba={key:0,class:"VPNavScreenMenu"},Ca=_({__name:"VPNavScreenMenu",setup(o){const{theme:e}=L();return(t,n)=>r(e).nav?(a(),c("nav",Ba,[(a(!0),c(M,null,E(r(e).nav,s=>(a(),c(M,{key:s.text},["link"in s?(a(),b(ba,{key:0,item:s},null,8,["item"])):(a(),b(Aa,{key:1,text:s.text||"",items:s.items},null,8,["text","items"]))],64))),128))])):f("",!0)}}),Ha=_({__name:"VPNavScreenSocialLinks",setup(o){const{theme:e}=L();return(t,n)=>r(e).socialLinks?(a(),b(be,{key:0,class:"VPNavScreenSocialLinks",links:r(e).socialLinks},null,8,["links"])):f("",!0)}}),Ee=o=>(C("data-v-858fe1a4"),o=o(),H(),o),Ea=Ee(()=>p("span",{class:"vpi-languages icon lang"},null,-1)),Fa=Ee(()=>p("span",{class:"vpi-chevron-down icon chevron"},null,-1)),Da={class:"list"},Oa=_({__name:"VPNavScreenTranslations",setup(o){const{localeLinks:e,currentLang:t}=J({correspondingLink:!0}),n=w(!1);function s(){n.value=!n.value}return(i,u)=>r(e).length&&r(t).label?(a(),c("div",{key:0,class:T(["VPNavScreenTranslations",{open:n.value}])},[p("button",{class:"title",onClick:s},[Ea,D(" "+I(r(t).label)+" ",1),Fa]),p("ul",Da,[(a(!0),c(M,null,E(r(e),h=>(a(),c("li",{key:h.link,class:"item"},[m(F,{class:"link",href:h.link},{default:v(()=>[D(I(h.text),1)]),_:2},1032,["href"])]))),128))])],2)):f("",!0)}}),Ua=k(Oa,[["__scopeId","data-v-858fe1a4"]]),Ga={class:"container"},ja=_({__name:"VPNavScreen",props:{open:{type:Boolean}},setup(o){const e=w(null),t=Se(oe?document.body:null);return(n,s)=>(a(),b(de,{name:"fade",onEnter:s[0]||(s[0]=i=>t.value=!0),onAfterLeave:s[1]||(s[1]=i=>t.value=!1)},{default:v(()=>[n.open?(a(),c("div",{key:0,class:"VPNavScreen",ref_key:"screen",ref:e,id:"VPNavScreen"},[p("div",Ga,[l(n.$slots,"nav-screen-content-before",{},void 0,!0),m(Ca,{class:"menu"}),m(Ua,{class:"translations"}),m(ma,{class:"appearance"}),m(Ha,{class:"social-links"}),l(n.$slots,"nav-screen-content-after",{},void 0,!0)])],512)):f("",!0)]),_:3}))}}),za=k(ja,[["__scopeId","data-v-cc5739dd"]]),qa={key:0,class:"VPNav"},Wa=_({__name:"VPNav",setup(o){const{isScreenOpen:e,closeScreen:t,toggleScreen:n}=Is(),{frontmatter:s}=L(),i=$(()=>s.value.navbar!==!1);return Ie("close-screen",t),Z(()=>{oe&&document.documentElement.classList.toggle("hide-nav",!i.value)}),(u,h)=>i.value?(a(),c("header",qa,[m(pa,{"is-screen-open":r(e),onToggleScreen:r(n)},{"nav-bar-title-before":v(()=>[l(u.$slots,"nav-bar-title-before",{},void 0,!0)]),"nav-bar-title-after":v(()=>[l(u.$slots,"nav-bar-title-after",{},void 0,!0)]),"nav-bar-content-before":v(()=>[l(u.$slots,"nav-bar-content-before",{},void 0,!0)]),"nav-bar-content-after":v(()=>[l(u.$slots,"nav-bar-content-after",{},void 0,!0)]),_:3},8,["is-screen-open","onToggleScreen"]),m(za,{open:r(e)},{"nav-screen-content-before":v(()=>[l(u.$slots,"nav-screen-content-before",{},void 0,!0)]),"nav-screen-content-after":v(()=>[l(u.$slots,"nav-screen-content-after",{},void 0,!0)]),_:3},8,["open"])])):f("",!0)}}),Ka=k(Wa,[["__scopeId","data-v-ae24b3ad"]]),Fe=o=>(C("data-v-b8d55f3b"),o=o(),H(),o),Ra=["role","tabindex"],Ja=Fe(()=>p("div",{class:"indicator"},null,-1)),Ya=Fe(()=>p("span",{class:"vpi-chevron-right caret-icon"},null,-1)),Qa=[Ya],Xa={key:1,class:"items"},Za=_({__name:"VPSidebarItem",props:{item:{},depth:{}},setup(o){const e=o,{collapsed:t,collapsible:n,isLink:s,isActiveLink:i,hasActiveLink:u,hasChildren:h,toggle:d}=mt($(()=>e.item)),g=$(()=>h.value?"section":"div"),P=$(()=>s.value?"a":"div"),y=$(()=>h.value?e.depth+2===7?"p":`h${e.depth+2}`:"p"),V=$(()=>s.value?void 0:"button"),N=$(()=>[[`level-${e.depth}`],{collapsible:n.value},{collapsed:t.value},{"is-link":s.value},{"is-active":i.value},{"has-active":u.value}]);function A(S){"key"in S&&S.key!=="Enter"||!e.item.link&&d()}function B(){e.item.link&&d()}return(S,U)=>{const G=q("VPSidebarItem",!0);return a(),b(K(g.value),{class:T(["VPSidebarItem",N.value])},{default:v(()=>[S.item.text?(a(),c("div",Y({key:0,class:"item",role:V.value},Ye(S.item.items?{click:A,keydown:A}:{},!0),{tabindex:S.item.items&&0}),[Ja,S.item.link?(a(),b(F,{key:0,tag:P.value,class:"link",href:S.item.link,rel:S.item.rel,target:S.item.target},{default:v(()=>[(a(),b(K(y.value),{class:"text",innerHTML:S.item.text},null,8,["innerHTML"]))]),_:1},8,["tag","href","rel","target"])):(a(),b(K(y.value),{key:1,class:"text",innerHTML:S.item.text},null,8,["innerHTML"])),S.item.collapsed!=null&&S.item.items&&S.item.items.length?(a(),c("div",{key:2,class:"caret",role:"button","aria-label":"toggle section",onClick:B,onKeydown:Je(B,["enter"]),tabindex:"0"},Qa,32)):f("",!0)],16,Ra)):f("",!0),S.item.items&&S.item.items.length?(a(),c("div",Xa,[S.depth<5?(a(!0),c(M,{key:0},E(S.item.items,W=>(a(),b(G,{key:W.text,item:W,depth:S.depth+1},null,8,["item","depth"]))),128)):f("",!0)])):f("",!0)]),_:1},8,["class"])}}}),xa=k(Za,[["__scopeId","data-v-b8d55f3b"]]),De=o=>(C("data-v-575e6a36"),o=o(),H(),o),er=De(()=>p("div",{class:"curtain"},null,-1)),tr={class:"nav",id:"VPSidebarNav","aria-labelledby":"sidebar-aria-label",tabindex:"-1"},or=De(()=>p("span",{class:"visually-hidden",id:"sidebar-aria-label"}," Sidebar Navigation ",-1)),sr=_({__name:"VPSidebar",props:{open:{type:Boolean}},setup(o){const{sidebarGroups:e,hasSidebar:t}=O(),n=o,s=w(null),i=Se(oe?document.body:null);return j([n,s],()=>{var u;n.open?(i.value=!0,(u=s.value)==null||u.focus()):i.value=!1},{immediate:!0,flush:"post"}),(u,h)=>r(t)?(a(),c("aside",{key:0,class:T(["VPSidebar",{open:u.open}]),ref_key:"navEl",ref:s,onClick:h[0]||(h[0]=Qe(()=>{},["stop"]))},[er,p("nav",tr,[or,l(u.$slots,"sidebar-nav-before",{},void 0,!0),(a(!0),c(M,null,E(r(e),d=>(a(),c("div",{key:d.text,class:"group"},[m(xa,{item:d,depth:0},null,8,["item"])]))),128)),l(u.$slots,"sidebar-nav-after",{},void 0,!0)])],2)):f("",!0)}}),nr=k(sr,[["__scopeId","data-v-575e6a36"]]),ar=_({__name:"VPSkipLink",setup(o){const e=ee(),t=w();j(()=>e.path,()=>t.value.focus());function n({target:s}){const i=document.getElementById(decodeURIComponent(s.hash).slice(1));if(i){const u=()=>{i.removeAttribute("tabindex"),i.removeEventListener("blur",u)};i.setAttribute("tabindex","-1"),i.addEventListener("blur",u),i.focus(),window.scrollTo(0,0)}}return(s,i)=>(a(),c(M,null,[p("span",{ref_key:"backToTop",ref:t,tabindex:"-1"},null,512),p("a",{href:"#VPContent",class:"VPSkipLink visually-hidden",onClick:n}," Skip to content ")],64))}}),rr=k(ar,[["__scopeId","data-v-0f60ec36"]]),ir=_({__name:"Layout",setup(o){const{isOpen:e,open:t,close:n}=O(),s=ee();j(()=>s.path,n),_t(e,n);const{frontmatter:i}=L(),u=Xe(),h=$(()=>!!u["home-hero-image"]);return Ie("hero-image-slot-exists",h),(d,g)=>{const P=q("Content");return r(i).layout!==!1?(a(),c("div",{key:0,class:T(["Layout",r(i).pageClass])},[l(d.$slots,"layout-top",{},void 0,!0),m(rr),m(tt,{class:"backdrop",show:r(e),onClick:r(n)},null,8,["show","onClick"]),m(Ka,null,{"nav-bar-title-before":v(()=>[l(d.$slots,"nav-bar-title-before",{},void 0,!0)]),"nav-bar-title-after":v(()=>[l(d.$slots,"nav-bar-title-after",{},void 0,!0)]),"nav-bar-content-before":v(()=>[l(d.$slots,"nav-bar-content-before",{},void 0,!0)]),"nav-bar-content-after":v(()=>[l(d.$slots,"nav-bar-content-after",{},void 0,!0)]),"nav-screen-content-before":v(()=>[l(d.$slots,"nav-screen-content-before",{},void 0,!0)]),"nav-screen-content-after":v(()=>[l(d.$slots,"nav-screen-content-after",{},void 0,!0)]),_:3}),m(Ss,{open:r(e),onOpenMenu:r(t)},null,8,["open","onOpenMenu"]),m(nr,{open:r(e)},{"sidebar-nav-before":v(()=>[l(d.$slots,"sidebar-nav-before",{},void 0,!0)]),"sidebar-nav-after":v(()=>[l(d.$slots,"sidebar-nav-after",{},void 0,!0)]),_:3},8,["open"]),m(rs,null,{"page-top":v(()=>[l(d.$slots,"page-top",{},void 0,!0)]),"page-bottom":v(()=>[l(d.$slots,"page-bottom",{},void 0,!0)]),"not-found":v(()=>[l(d.$slots,"not-found",{},void 0,!0)]),"home-hero-before":v(()=>[l(d.$slots,"home-hero-before",{},void 0,!0)]),"home-hero-info-before":v(()=>[l(d.$slots,"home-hero-info-before",{},void 0,!0)]),"home-hero-info":v(()=>[l(d.$slots,"home-hero-info",{},void 0,!0)]),"home-hero-info-after":v(()=>[l(d.$slots,"home-hero-info-after",{},void 0,!0)]),"home-hero-actions-after":v(()=>[l(d.$slots,"home-hero-actions-after",{},void 0,!0)]),"home-hero-image":v(()=>[l(d.$slots,"home-hero-image",{},void 0,!0)]),"home-hero-after":v(()=>[l(d.$slots,"home-hero-after",{},void 0,!0)]),"home-features-before":v(()=>[l(d.$slots,"home-features-before",{},void 0,!0)]),"home-features-after":v(()=>[l(d.$slots,"home-features-after",{},void 0,!0)]),"doc-footer-before":v(()=>[l(d.$slots,"doc-footer-before",{},void 0,!0)]),"doc-before":v(()=>[l(d.$slots,"doc-before",{},void 0,!0)]),"doc-after":v(()=>[l(d.$slots,"doc-after",{},void 0,!0)]),"doc-top":v(()=>[l(d.$slots,"doc-top",{},void 0,!0)]),"doc-bottom":v(()=>[l(d.$slots,"doc-bottom",{},void 0,!0)]),"aside-top":v(()=>[l(d.$slots,"aside-top",{},void 0,!0)]),"aside-bottom":v(()=>[l(d.$slots,"aside-bottom",{},void 0,!0)]),"aside-outline-before":v(()=>[l(d.$slots,"aside-outline-before",{},void 0,!0)]),"aside-outline-after":v(()=>[l(d.$slots,"aside-outline-after",{},void 0,!0)]),"aside-ads-before":v(()=>[l(d.$slots,"aside-ads-before",{},void 0,!0)]),"aside-ads-after":v(()=>[l(d.$slots,"aside-ads-after",{},void 0,!0)]),_:3}),m(ds),l(d.$slots,"layout-bottom",{},void 0,!0)],2)):(a(),b(P,{key:1}))}}}),lr=k(ir,[["__scopeId","data-v-5d98c3a5"]]),ur={Layout:lr,enhanceApp:({app:o})=>{o.component("Badge",Ze)}};export{ur as t}; diff --git a/docs/.vitepress/dist/assets/collection-submission.md.D0Y8RckF.js b/docs/.vitepress/dist/assets/collection-submission.md.D0Y8RckF.js new file mode 100644 index 00000000..22981b48 --- /dev/null +++ b/docs/.vitepress/dist/assets/collection-submission.md.D0Y8RckF.js @@ -0,0 +1 @@ +import{_ as o,c as t,o as e,a1 as n}from"./chunks/framework.D0pIZSx4.js";const m=JSON.parse('{"title":"Submitting a Collection","description":"","frontmatter":{},"headers":[],"relativePath":"collection-submission.md","filePath":"collection-submission.md"}'),i={name:"collection-submission.md"},l=n('

Submitting a Collection

Submitting a collection of compounds to the COCONUT platform is a two-step process:

  1. Creation of a Collection
  2. Uploading Compounds into the Created Collection

Step 1: Creation of a Collection

Before uploading a compound collection onto the COCONUT platform, you need to create a collection.

  1. Login to your COCONUT account.
  2. Navigate to the Collections Section:
    • On the left pane, select "Collections."
  3. Create a New Collection:
    • Inside the Collections page, click the "New Collection" button at the top right.
  4. Fill the "Create Collection" Form:
    • Title: Provide a title for the collection.
    • Slug: Auto-generated by the COCONUT platform. No need to fill this field.
    • Description: Provide a description of this collection of compounds.
    • URL: If the collection is from a source available online, provide the URL (for reference for our Curators, this does not import the compounds onto COCONUT).
    • Tags: Enter comma-separated keywords to identify this collection during searches.
    • Identifier: Provide a unique identifier for the collection.
    • License: Choose a license from the dropdown menu.
  5. Submit the Form:
    • Click "Create" to create the collection or "Create & create another" if you have another collection to submit.

This creates an empty collection. To upload molecules/compounds, proceed with the steps below.

Step 2: Uploading Compounds into the Created Collection

After creating an empty collection, an "Entries" pane becomes available at the bottom.

  1. Initiate the Import Process:

    • Click on "Import Entries" on the left of the "Entries" pane.
  2. Download the Template:

    • In the pop-up window, download the template CSV file, which specifies the fields expected by COCONUT in a comma-separated format. Provide the following details for each molecule:
      • canonical_smiles: Canonical SMILES notation of the chemical structure.
      • reference_id: Reference ID as reported in a source database/dataset.
      • name: IUPAC name/trivial name as reported in the original publication or source.

        Example: [9-fluoro-11-hydroxy-17-(2-hydroxyacetyl)-10,13,16-trimethyl-3-oxo-6,7,8,11,12,14,15,16-octahydrocyclopenta[a]phenanthren-17-yl] pentanoate

      • doi: DOI of the original publication where the molecule is first reported.

        Example: doi.org/10.1021/ci5003697

      • link: Database link of the molecule.
      • organism: Scientific name of the organism in which the compound is found.

        Example: Tanacetum parthenium

      • organism_part: The part of the organism in which the compound is found.

        Example: Eyes

      • COCONUT_id: Auto-generated by the COCONUT platform. No need to fill this field.
      • mol_filename: If a 2D/3D molfile is present for the given molecule, mention its name.
      • structural_comments: Comments regarding the structure, if any.
      • geo_location: Geographical location where this molecule is found.

        Example: Rajahmundry, India

      • location: Specific location within the geographical area where the molecule is found.

        Example: Air, Water, Soil, etc.

  3. Upload the CSV File:

    • In the same pop-up window from step 2, click "Upload the CSV" file with all the details of the compounds. Choose the file.
  4. Verify Column Mapping:

    • The pop-up window will show expected columns on the right and detected columns from the CSV file on the left. Ensure the mapping is correct. Use the dropdowns for any corrections and click "Import."

    Tip: If you have already uploaded the CSV file before and made changes to the details of molecules in the CSV file and want to upload the modified CSV file, you need to choose "Update existing records" so that the respective molecules will get updated with the new data provided.

  5. Start the Import Process:

    • You should see an "Import started" notification at the top left.

    Note for Local Development: Start Laravel Horizon to process the queued compounds:

    bash
    sail artisan horizon
  6. Check the Import Status:

    • Once the processing completes, you should see the compounds listed along with their status "SUBMITTED."

    Warning: For statuses other than "SUBMITTED," recheck the corresponding compound's details in the CSV and re-upload it, repeating step 4.

  7. Process the Compounds:

    • Even if one compound in the uploaded list has the status "SUBMITTED," you will see the "Process" button along with the "Import entries" button. Click this to process the submitted compounds.
  8. Complete the Processing:

    • Wait for the processing to finish. The status updates to "PASSED" for successfully processed entries and "REJECTED" for those that failed processing.
      • For successfully processed compounds, check the "Citations" and "Molecules" tabs to ensure everything is properly processed.
      • The "Audits" tab will have a trail of who did what and when on the Collection.

      Warning: For failed entries, recheck the corresponding compound's details in the CSV and re-upload it, repeating step 4.

  9. Publish the Compounds:

    • If at least one compound passed the process, you will see the "Publish" button. Clicking this will publish the compounds that passed processing.

    Info: After publishing, the collection status changes from "DRAFT" to "PUBLISHED." Only the compounds with status "PASSED" will be visible to everyone on the COCONUT platform.

',10),s=[l];function r(a,c,u,p,g,h){return e(),t("div",null,s)}const f=o(i,[["render",r]]);export{m as __pageData,f as default}; diff --git a/docs/.vitepress/dist/assets/collection-submission.md.D0Y8RckF.lean.js b/docs/.vitepress/dist/assets/collection-submission.md.D0Y8RckF.lean.js new file mode 100644 index 00000000..679fd08d --- /dev/null +++ b/docs/.vitepress/dist/assets/collection-submission.md.D0Y8RckF.lean.js @@ -0,0 +1 @@ +import{_ as o,c as t,o as e,a1 as n}from"./chunks/framework.D0pIZSx4.js";const m=JSON.parse('{"title":"Submitting a Collection","description":"","frontmatter":{},"headers":[],"relativePath":"collection-submission.md","filePath":"collection-submission.md"}'),i={name:"collection-submission.md"},l=n("",10),s=[l];function r(a,c,u,p,g,h){return e(),t("div",null,s)}const f=o(i,[["render",r]]);export{m as __pageData,f as default}; diff --git a/docs/.vitepress/dist/assets/contact.md.BTQuI3CN.lean.js b/docs/.vitepress/dist/assets/contact.md.B_dZuMJG.js similarity index 80% rename from docs/.vitepress/dist/assets/contact.md.BTQuI3CN.lean.js rename to docs/.vitepress/dist/assets/contact.md.B_dZuMJG.js index 3b6e73ad..14127467 100644 --- a/docs/.vitepress/dist/assets/contact.md.BTQuI3CN.lean.js +++ b/docs/.vitepress/dist/assets/contact.md.B_dZuMJG.js @@ -1 +1 @@ -import{_ as t,c as e,o as a}from"./chunks/framework.D_xGnxpE.js";const m=JSON.parse('{"title":"","description":"","frontmatter":{},"headers":[],"relativePath":"contact.md","filePath":"contact.md"}'),c={name:"contact.md"};function o(n,r,s,p,_,d){return a(),e("div")}const f=t(c,[["render",o]]);export{m as __pageData,f as default}; +import{_ as t,c as e,o as a}from"./chunks/framework.D0pIZSx4.js";const m=JSON.parse('{"title":"","description":"","frontmatter":{},"headers":[],"relativePath":"contact.md","filePath":"contact.md"}'),c={name:"contact.md"};function o(n,r,s,p,_,d){return a(),e("div")}const f=t(c,[["render",o]]);export{m as __pageData,f as default}; diff --git a/docs/.vitepress/dist/assets/contact.md.BTQuI3CN.js b/docs/.vitepress/dist/assets/contact.md.B_dZuMJG.lean.js similarity index 80% rename from docs/.vitepress/dist/assets/contact.md.BTQuI3CN.js rename to docs/.vitepress/dist/assets/contact.md.B_dZuMJG.lean.js index 3b6e73ad..14127467 100644 --- a/docs/.vitepress/dist/assets/contact.md.BTQuI3CN.js +++ b/docs/.vitepress/dist/assets/contact.md.B_dZuMJG.lean.js @@ -1 +1 @@ -import{_ as t,c as e,o as a}from"./chunks/framework.D_xGnxpE.js";const m=JSON.parse('{"title":"","description":"","frontmatter":{},"headers":[],"relativePath":"contact.md","filePath":"contact.md"}'),c={name:"contact.md"};function o(n,r,s,p,_,d){return a(),e("div")}const f=t(c,[["render",o]]);export{m as __pageData,f as default}; +import{_ as t,c as e,o as a}from"./chunks/framework.D0pIZSx4.js";const m=JSON.parse('{"title":"","description":"","frontmatter":{},"headers":[],"relativePath":"contact.md","filePath":"contact.md"}'),c={name:"contact.md"};function o(n,r,s,p,_,d){return a(),e("div")}const f=t(c,[["render",o]]);export{m as __pageData,f as default}; diff --git a/docs/.vitepress/dist/assets/db-schema.md.CH4jOCvK.js b/docs/.vitepress/dist/assets/db-schema.md.CH4jOCvK.js deleted file mode 100644 index 38cc38ac..00000000 --- a/docs/.vitepress/dist/assets/db-schema.md.CH4jOCvK.js +++ /dev/null @@ -1 +0,0 @@ -import{_ as e,c as t,o as s,j as a,a as c}from"./chunks/framework.D_xGnxpE.js";const o="/assets/graph.DXNG91Tx.png",N=JSON.parse('{"title":"COCONUT Database Schema","description":"","frontmatter":{},"headers":[],"relativePath":"db-schema.md","filePath":"db-schema.md"}'),n={name:"db-schema.md"},r=a("h1",{id:"coconut-database-schema",tabindex:"-1"},[c("COCONUT Database Schema "),a("a",{class:"header-anchor",href:"#coconut-database-schema","aria-label":'Permalink to "COCONUT Database Schema"'},"​")],-1),d=a("p",null,[a("img",{src:o,alt:"ontology-custom-element-why"})],-1),m=[r,d];function h(i,_,l,p,b,f){return s(),t("div",null,m)}const O=e(n,[["render",h]]);export{N as __pageData,O as default}; diff --git a/docs/.vitepress/dist/assets/db-schema.md.CH4jOCvK.lean.js b/docs/.vitepress/dist/assets/db-schema.md.CH4jOCvK.lean.js deleted file mode 100644 index 38cc38ac..00000000 --- a/docs/.vitepress/dist/assets/db-schema.md.CH4jOCvK.lean.js +++ /dev/null @@ -1 +0,0 @@ -import{_ as e,c as t,o as s,j as a,a as c}from"./chunks/framework.D_xGnxpE.js";const o="/assets/graph.DXNG91Tx.png",N=JSON.parse('{"title":"COCONUT Database Schema","description":"","frontmatter":{},"headers":[],"relativePath":"db-schema.md","filePath":"db-schema.md"}'),n={name:"db-schema.md"},r=a("h1",{id:"coconut-database-schema",tabindex:"-1"},[c("COCONUT Database Schema "),a("a",{class:"header-anchor",href:"#coconut-database-schema","aria-label":'Permalink to "COCONUT Database Schema"'},"​")],-1),d=a("p",null,[a("img",{src:o,alt:"ontology-custom-element-why"})],-1),m=[r,d];function h(i,_,l,p,b,f){return s(),t("div",null,m)}const O=e(n,[["render",h]]);export{N as __pageData,O as default}; diff --git a/docs/.vitepress/dist/assets/db-schema.md.la3ov2W8.js b/docs/.vitepress/dist/assets/db-schema.md.la3ov2W8.js new file mode 100644 index 00000000..62ae1989 --- /dev/null +++ b/docs/.vitepress/dist/assets/db-schema.md.la3ov2W8.js @@ -0,0 +1 @@ +import{_ as a,c as t,o as s,j as e,a as o}from"./chunks/framework.D0pIZSx4.js";const w=JSON.parse('{"title":"COCONUT Database Schema","description":"","frontmatter":{},"headers":[],"relativePath":"db-schema.md","filePath":"db-schema.md"}'),c={name:"db-schema.md"},r=e("h1",{id:"coconut-database-schema",tabindex:"-1"},[o("COCONUT Database Schema "),e("a",{class:"header-anchor",href:"#coconut-database-schema","aria-label":'Permalink to "COCONUT Database Schema"'},"​")],-1),d=e("p",null,[e("br"),e("br")],-1),h=e("iframe",{style:{border:"1px solid rgba(0, 0, 0, 0.1)"},width:"800",height:"450",src:"https://www.figma.com/embed?embed_host=share&url=https%3A%2F%2Fwww.figma.com%2Fboard%2FyVQeNRsqlkXOgI5BIlMlb4%2FCocoDB%3Fnode-id%3D0-1%26t%3DYgVM9dCFvlmc5xhe-1",allowfullscreen:""},null,-1),n=[r,d,h];function l(m,i,_,b,p,f){return s(),t("div",null,n)}const C=a(c,[["render",l]]);export{w as __pageData,C as default}; diff --git a/docs/.vitepress/dist/assets/db-schema.md.la3ov2W8.lean.js b/docs/.vitepress/dist/assets/db-schema.md.la3ov2W8.lean.js new file mode 100644 index 00000000..62ae1989 --- /dev/null +++ b/docs/.vitepress/dist/assets/db-schema.md.la3ov2W8.lean.js @@ -0,0 +1 @@ +import{_ as a,c as t,o as s,j as e,a as o}from"./chunks/framework.D0pIZSx4.js";const w=JSON.parse('{"title":"COCONUT Database Schema","description":"","frontmatter":{},"headers":[],"relativePath":"db-schema.md","filePath":"db-schema.md"}'),c={name:"db-schema.md"},r=e("h1",{id:"coconut-database-schema",tabindex:"-1"},[o("COCONUT Database Schema "),e("a",{class:"header-anchor",href:"#coconut-database-schema","aria-label":'Permalink to "COCONUT Database Schema"'},"​")],-1),d=e("p",null,[e("br"),e("br")],-1),h=e("iframe",{style:{border:"1px solid rgba(0, 0, 0, 0.1)"},width:"800",height:"450",src:"https://www.figma.com/embed?embed_host=share&url=https%3A%2F%2Fwww.figma.com%2Fboard%2FyVQeNRsqlkXOgI5BIlMlb4%2FCocoDB%3Fnode-id%3D0-1%26t%3DYgVM9dCFvlmc5xhe-1",allowfullscreen:""},null,-1),n=[r,d,h];function l(m,i,_,b,p,f){return s(),t("div",null,n)}const C=a(c,[["render",l]]);export{w as __pageData,C as default}; diff --git a/docs/.vitepress/dist/assets/download-api.md.DNlzWqR1.js b/docs/.vitepress/dist/assets/download-api.md.Bb6UBng9.js similarity index 97% rename from docs/.vitepress/dist/assets/download-api.md.DNlzWqR1.js rename to docs/.vitepress/dist/assets/download-api.md.Bb6UBng9.js index 54c7940e..bc20fe47 100644 --- a/docs/.vitepress/dist/assets/download-api.md.DNlzWqR1.js +++ b/docs/.vitepress/dist/assets/download-api.md.Bb6UBng9.js @@ -1,4 +1,4 @@ -import{_ as s,c as a,o as i,a1 as n}from"./chunks/framework.D_xGnxpE.js";const g=JSON.parse('{"title":"Markdown Extension Examples","description":"","frontmatter":{},"headers":[],"relativePath":"download-api.md","filePath":"download-api.md"}'),e={name:"download-api.md"},t=n(`

Markdown Extension Examples

This page demonstrates some of the built-in markdown extensions provided by VitePress.

Syntax Highlighting

VitePress provides Syntax Highlighting powered by Shiki, with additional features like line-highlighting:

Input

\`\`\`js{4}
+import{_ as s,c as a,o as i,a1 as n}from"./chunks/framework.D0pIZSx4.js";const g=JSON.parse('{"title":"Markdown Extension Examples","description":"","frontmatter":{},"headers":[],"relativePath":"download-api.md","filePath":"download-api.md"}'),e={name:"download-api.md"},t=n(`

Markdown Extension Examples

This page demonstrates some of the built-in markdown extensions provided by VitePress.

Syntax Highlighting

VitePress provides Syntax Highlighting powered by Shiki, with additional features like line-highlighting:

Input

\`\`\`js{4}
 export default {
   data () {
     return {
diff --git a/docs/.vitepress/dist/assets/download-api.md.DNlzWqR1.lean.js b/docs/.vitepress/dist/assets/download-api.md.Bb6UBng9.lean.js
similarity index 68%
rename from docs/.vitepress/dist/assets/download-api.md.DNlzWqR1.lean.js
rename to docs/.vitepress/dist/assets/download-api.md.Bb6UBng9.lean.js
index 933ab7fb..e74e38ec 100644
--- a/docs/.vitepress/dist/assets/download-api.md.DNlzWqR1.lean.js
+++ b/docs/.vitepress/dist/assets/download-api.md.Bb6UBng9.lean.js
@@ -1 +1 @@
-import{_ as s,c as a,o as i,a1 as n}from"./chunks/framework.D_xGnxpE.js";const g=JSON.parse('{"title":"Markdown Extension Examples","description":"","frontmatter":{},"headers":[],"relativePath":"download-api.md","filePath":"download-api.md"}'),e={name:"download-api.md"},t=n("",19),p=[t];function l(h,o,r,d,c,k){return i(),a("div",null,p)}const u=s(e,[["render",l]]);export{g as __pageData,u as default};
+import{_ as s,c as a,o as i,a1 as n}from"./chunks/framework.D0pIZSx4.js";const g=JSON.parse('{"title":"Markdown Extension Examples","description":"","frontmatter":{},"headers":[],"relativePath":"download-api.md","filePath":"download-api.md"}'),e={name:"download-api.md"},t=n("",19),p=[t];function l(h,o,r,d,c,k){return i(),a("div",null,p)}const u=s(e,[["render",l]]);export{g as __pageData,u as default};
diff --git a/docs/.vitepress/dist/assets/download.md.6FT9ahmt.js b/docs/.vitepress/dist/assets/download.md.6FT9ahmt.js
deleted file mode 100644
index cccab5be..00000000
--- a/docs/.vitepress/dist/assets/download.md.6FT9ahmt.js
+++ /dev/null
@@ -1 +0,0 @@
-import{_ as a,c as t,o as e,a1 as s}from"./chunks/framework.D_xGnxpE.js";const f=JSON.parse('{"title":"Download","description":"","frontmatter":{},"headers":[],"relativePath":"download.md","filePath":"download.md"}'),o={name:"download.md"},i=s('

Download

Coconut online provides users with various download options listed below, offering a convenient means to obtain chemical structures of natural products in a widely accepted and machine-readable format.

  • Download the COCONUT dataset as a Postgres dump.
  • Download Natural Products Structures in Canonical and Absolute SMILES format.
  • Download Natural Products Structures in SDF format.

At the end of each month, precisely at 00:00 CET, a snapshot of the Coconut data is taken and archived in an S3 storage bucket. To obtain the dump file of the most recent snapshot through UI, navigate to the left panel of your dashboard and locate the Download button. Click on the Download with option as desired and this will initiate the download of the data file containing the latest snapshot.

To access data through the API, refer to the API or Swagger documentation for instructions on downloading the data.

WARNING

Please note that the COCONUT dataset is subject to certain terms of use and licensing restrictions. Make sure to review and comply with the respective terms and conditions associated with the dataset.

Download the COCONUT dataset as a Postgres dump

This functionality allows you to obtain the comprehensive COCONUT dataset in the form of a Postgres dump file. Once you have downloaded the Postgres dump file, you can import it into your local Postgres database management system by following the below instruction, which will allow you to explore, query, and analyze the COCONUT dataset using SQL statements within your own environment.

INFO

The Postgres dump exclusively comprises data only from the following tables: molecules, properties, and citations.

Instruction to restore

To restore the database using the dump file, follow these instructions:

  • Make sure that Postgres (version 14.0 or higher) is up and running on your system.

  • Unzip the downloaded dump file.

  • To import, run the below command by replacing the database name and username with yours and enter the password when prompted.

bash
psql -h 127.0.0.1 -p 5432 -d < database name > -U < username > -W < postgresql-coconut.sql

Download Natural Products Structures in Canonical and Absolute SMILES format

The "Download Natural Products Structures in SMILES format" API provides a convenient way to obtain the chemical structures of natural products in the Cannonical Simplified Molecular Input Line Entry System (SMILES) and Absolute SMILES format. This format represents molecular structures using a string of ASCII characters, allowing for easy storage, sharing, and processing of chemical information.

Download Natural Products Structures in SDF format

This functionality provides a convenient way to access the chemical structures of natural products in the Structure-Data File (SDF) format. SDF is a widely used file format for representing molecular structures and associated data, making it suitable for various cheminformatics applications.

',17),n=[i];function r(l,d,h,u,c,p){return e(),t("div",null,n)}const k=a(o,[["render",r]]);export{f as __pageData,k as default}; diff --git a/docs/.vitepress/dist/assets/download.md.6FT9ahmt.lean.js b/docs/.vitepress/dist/assets/download.md.6FT9ahmt.lean.js deleted file mode 100644 index 86aaf6e4..00000000 --- a/docs/.vitepress/dist/assets/download.md.6FT9ahmt.lean.js +++ /dev/null @@ -1 +0,0 @@ -import{_ as a,c as t,o as e,a1 as s}from"./chunks/framework.D_xGnxpE.js";const f=JSON.parse('{"title":"Download","description":"","frontmatter":{},"headers":[],"relativePath":"download.md","filePath":"download.md"}'),o={name:"download.md"},i=s("",17),n=[i];function r(l,d,h,u,c,p){return e(),t("div",null,n)}const k=a(o,[["render",r]]);export{f as __pageData,k as default}; diff --git a/docs/.vitepress/dist/assets/download.md.BGMOFAY5.js b/docs/.vitepress/dist/assets/download.md.BGMOFAY5.js new file mode 100644 index 00000000..23de58f1 --- /dev/null +++ b/docs/.vitepress/dist/assets/download.md.BGMOFAY5.js @@ -0,0 +1 @@ +import{_ as t,c as a,o as e,a1 as s}from"./chunks/framework.D0pIZSx4.js";const f=JSON.parse('{"title":"Download","description":"","frontmatter":{},"headers":[],"relativePath":"download.md","filePath":"download.md"}'),o={name:"download.md"},i=s('

Download

Coconut online provides users with various download options listed below, offering a convenient means to obtain chemical structures of natural products in a widely accepted and machine-readable format.

  • Download the COCONUT dataset as a Postgres dump.
  • Download Natural Products Structures in Canonical and Absolute SMILES format.
  • Download Natural Products Structures in SDF format.

At the end of each month, precisely at 00:00 CET, a snapshot of the Coconut data is taken and archived in an S3 storage bucket. To obtain the dump file of the most recent snapshot through UI, navigate to the left panel of your dashboard and locate the Download button. Click on the Download with option as desired and this will initiate the download of the data file containing the latest snapshot.

To access data through the API, refer to the API or Swagger documentation for instructions on downloading the data.

WARNING

Please note that the COCONUT dataset is subject to certain terms of use and licensing restrictions. Make sure to review and comply with the respective terms and conditions associated with the dataset.

Download the COCONUT dataset as a Postgres dump

This functionality allows you to obtain the comprehensive COCONUT dataset in the form of a Postgres dump file. Once you have downloaded the Postgres dump file, you can import it into your local Postgres database management system by following the below instruction, which will allow you to explore, query, and analyze the COCONUT dataset using SQL statements within your own environment.

INFO

The Postgres dump exclusively comprises data only from the following tables: molecules, properties, and citations.

Instruction to restore

To restore the database using the dump file, follow these instructions:

  • Make sure that Postgres (version 14.0 or higher) is up and running on your system.

  • Unzip the downloaded dump file.

  • To import, run the below command by replacing the database name and username with yours and enter the password when prompted.

bash
psql -h 127.0.0.1 -p 5432 -d < database name > -U < username > -W < postgresql-coconut.sql

Download Natural Products Structures in Canonical and Absolute SMILES format

The "Download Natural Products Structures in SMILES format" API provides a convenient way to obtain the chemical structures of natural products in the Cannonical Simplified Molecular Input Line Entry System (SMILES) and Absolute SMILES format. This format represents molecular structures using a string of ASCII characters, allowing for easy storage, sharing, and processing of chemical information.

Download Natural Products Structures in SDF format

This functionality provides a convenient way to access the chemical structures of natural products in the Structure-Data File (SDF) format. SDF is a widely used file format for representing molecular structures and associated data, making it suitable for various cheminformatics applications.

',17),n=[i];function r(l,d,h,u,c,p){return e(),a("div",null,n)}const k=t(o,[["render",r]]);export{f as __pageData,k as default}; diff --git a/docs/.vitepress/dist/assets/download.md.BGMOFAY5.lean.js b/docs/.vitepress/dist/assets/download.md.BGMOFAY5.lean.js new file mode 100644 index 00000000..05263b2e --- /dev/null +++ b/docs/.vitepress/dist/assets/download.md.BGMOFAY5.lean.js @@ -0,0 +1 @@ +import{_ as t,c as a,o as e,a1 as s}from"./chunks/framework.D0pIZSx4.js";const f=JSON.parse('{"title":"Download","description":"","frontmatter":{},"headers":[],"relativePath":"download.md","filePath":"download.md"}'),o={name:"download.md"},i=s("",17),n=[i];function r(l,d,h,u,c,p){return e(),a("div",null,n)}const k=t(o,[["render",r]]);export{f as __pageData,k as default}; diff --git a/docs/.vitepress/dist/assets/draw-structure.md.BMnWGmAO.js b/docs/.vitepress/dist/assets/draw-structure.md.BMnWGmAO.js new file mode 100644 index 00000000..a4888de5 --- /dev/null +++ b/docs/.vitepress/dist/assets/draw-structure.md.BMnWGmAO.js @@ -0,0 +1 @@ +import{_ as t,c as r,o as a,j as e,a as c}from"./chunks/framework.D0pIZSx4.js";const f=JSON.parse('{"title":"COCONUT online - Draw Structure","description":"","frontmatter":{},"headers":[],"relativePath":"draw-structure.md","filePath":"draw-structure.md"}'),o={name:"draw-structure.md"},n=e("h1",{id:"coconut-online-draw-structure",tabindex:"-1"},[c("COCONUT online - Draw Structure "),e("a",{class:"header-anchor",href:"#coconut-online-draw-structure","aria-label":'Permalink to "COCONUT online - Draw Structure"'},"​")],-1),s=[n];function u(d,i,l,_,p,h){return a(),r("div",null,s)}const w=t(o,[["render",u]]);export{f as __pageData,w as default}; diff --git a/docs/.vitepress/dist/assets/draw-structure.md.BMnWGmAO.lean.js b/docs/.vitepress/dist/assets/draw-structure.md.BMnWGmAO.lean.js new file mode 100644 index 00000000..a4888de5 --- /dev/null +++ b/docs/.vitepress/dist/assets/draw-structure.md.BMnWGmAO.lean.js @@ -0,0 +1 @@ +import{_ as t,c as r,o as a,j as e,a as c}from"./chunks/framework.D0pIZSx4.js";const f=JSON.parse('{"title":"COCONUT online - Draw Structure","description":"","frontmatter":{},"headers":[],"relativePath":"draw-structure.md","filePath":"draw-structure.md"}'),o={name:"draw-structure.md"},n=e("h1",{id:"coconut-online-draw-structure",tabindex:"-1"},[c("COCONUT online - Draw Structure "),e("a",{class:"header-anchor",href:"#coconut-online-draw-structure","aria-label":'Permalink to "COCONUT online - Draw Structure"'},"​")],-1),s=[n];function u(d,i,l,_,p,h){return a(),r("div",null,s)}const w=t(o,[["render",u]]);export{f as __pageData,w as default}; diff --git a/docs/.vitepress/dist/assets/graph.DXNG91Tx.png b/docs/.vitepress/dist/assets/graph.DXNG91Tx.png deleted file mode 100644 index 6ce4fb12..00000000 Binary files a/docs/.vitepress/dist/assets/graph.DXNG91Tx.png and /dev/null differ diff --git a/docs/.vitepress/dist/assets/index.md.BKubXQgb.js b/docs/.vitepress/dist/assets/index.md.BKubXQgb.js deleted file mode 100644 index 98a6e0cc..00000000 --- a/docs/.vitepress/dist/assets/index.md.BKubXQgb.js +++ /dev/null @@ -1 +0,0 @@ -import{_ as e,c as t,o as a}from"./chunks/framework.D_xGnxpE.js";const m=JSON.parse(`{"title":"","description":"","frontmatter":{"layout":"home","hero":{"name":"COCONUT","text":"COlleCtion of Open NatUral producTs","tagline":"An aggregated dataset of elucidated and predicted NPs collected from open sources and a web interface to browse, search and easily and quickly download NPs.","actions":[{"theme":"brand","text":"Documentation","link":"/introduction"},{"theme":"alt","text":"Submission Guides","link":"/web-submission"}]},"features":[{"title":"Curation","details":"Community driven curation, while maintaining the quality of a expert curators."},{"title":"Submission","details":"Submit new compounds through Web, API, CLI or Chrome extension. Integrate in your workflow at ease."},{"title":"Bugs / Issue tracking","details":"Report issues with data or bugs in our web application and get help from the community to resolve them."},{"title":"API","details":"Search, retrieve or submit compounds programatically. Integrate COCONUT API's in your LIMS."},{"title":"Rich Annotations","details":"Ontology driven annotations and provenance information."}]},"headers":[],"relativePath":"index.md","filePath":"index.md"}`),n={name:"index.md"};function o(i,r,s,d,l,c){return a(),t("div")}const p=e(n,[["render",o]]);export{m as __pageData,p as default}; diff --git a/docs/.vitepress/dist/assets/index.md.BKubXQgb.lean.js b/docs/.vitepress/dist/assets/index.md.BKubXQgb.lean.js deleted file mode 100644 index 98a6e0cc..00000000 --- a/docs/.vitepress/dist/assets/index.md.BKubXQgb.lean.js +++ /dev/null @@ -1 +0,0 @@ -import{_ as e,c as t,o as a}from"./chunks/framework.D_xGnxpE.js";const m=JSON.parse(`{"title":"","description":"","frontmatter":{"layout":"home","hero":{"name":"COCONUT","text":"COlleCtion of Open NatUral producTs","tagline":"An aggregated dataset of elucidated and predicted NPs collected from open sources and a web interface to browse, search and easily and quickly download NPs.","actions":[{"theme":"brand","text":"Documentation","link":"/introduction"},{"theme":"alt","text":"Submission Guides","link":"/web-submission"}]},"features":[{"title":"Curation","details":"Community driven curation, while maintaining the quality of a expert curators."},{"title":"Submission","details":"Submit new compounds through Web, API, CLI or Chrome extension. Integrate in your workflow at ease."},{"title":"Bugs / Issue tracking","details":"Report issues with data or bugs in our web application and get help from the community to resolve them."},{"title":"API","details":"Search, retrieve or submit compounds programatically. Integrate COCONUT API's in your LIMS."},{"title":"Rich Annotations","details":"Ontology driven annotations and provenance information."}]},"headers":[],"relativePath":"index.md","filePath":"index.md"}`),n={name:"index.md"};function o(i,r,s,d,l,c){return a(),t("div")}const p=e(n,[["render",o]]);export{m as __pageData,p as default}; diff --git a/docs/.vitepress/dist/assets/index.md.tK3Qsnyh.js b/docs/.vitepress/dist/assets/index.md.tK3Qsnyh.js new file mode 100644 index 00000000..bb3d361a --- /dev/null +++ b/docs/.vitepress/dist/assets/index.md.tK3Qsnyh.js @@ -0,0 +1 @@ +import{_ as e,c as t,o as a}from"./chunks/framework.D0pIZSx4.js";const h=JSON.parse('{"title":"","description":"","frontmatter":{"layout":"home","hero":{"name":"COCONUT Docs","text":"","tagline":"The Comprehensive Resource for Open Natural Products","actions":[{"theme":"brand","text":"Get started","link":"/introduction"},{"theme":"alt","text":"Search Compounds","link":"https://coconut.cheminf.studio/search"}]},"features":[{"title":"Online Submission and Curation","details":"Allows users to contribute new data, ensuring the database remains current and comprehensive."},{"title":"Search and Filter","details":"Advanced search and filtering options to find compounds based on specific criteria easily."},{"title":"API Access","details":"Provides API access for seamless integration with other tools and databases."}]},"headers":[],"relativePath":"index.md","filePath":"index.md"}'),n={name:"index.md"};function s(i,o,r,c,d,l){return a(),t("div")}const u=e(n,[["render",s]]);export{h as __pageData,u as default}; diff --git a/docs/.vitepress/dist/assets/index.md.tK3Qsnyh.lean.js b/docs/.vitepress/dist/assets/index.md.tK3Qsnyh.lean.js new file mode 100644 index 00000000..bb3d361a --- /dev/null +++ b/docs/.vitepress/dist/assets/index.md.tK3Qsnyh.lean.js @@ -0,0 +1 @@ +import{_ as e,c as t,o as a}from"./chunks/framework.D0pIZSx4.js";const h=JSON.parse('{"title":"","description":"","frontmatter":{"layout":"home","hero":{"name":"COCONUT Docs","text":"","tagline":"The Comprehensive Resource for Open Natural Products","actions":[{"theme":"brand","text":"Get started","link":"/introduction"},{"theme":"alt","text":"Search Compounds","link":"https://coconut.cheminf.studio/search"}]},"features":[{"title":"Online Submission and Curation","details":"Allows users to contribute new data, ensuring the database remains current and comprehensive."},{"title":"Search and Filter","details":"Advanced search and filtering options to find compounds based on specific criteria easily."},{"title":"API Access","details":"Provides API access for seamless integration with other tools and databases."}]},"headers":[],"relativePath":"index.md","filePath":"index.md"}'),n={name:"index.md"};function s(i,o,r,c,d,l){return a(),t("div")}const u=e(n,[["render",s]]);export{h as __pageData,u as default}; diff --git a/docs/.vitepress/dist/assets/installation.md.B3EGeUq6.js b/docs/.vitepress/dist/assets/installation.md.B3EGeUq6.js deleted file mode 100644 index 6b0bbe5e..00000000 --- a/docs/.vitepress/dist/assets/installation.md.B3EGeUq6.js +++ /dev/null @@ -1 +0,0 @@ -import{_ as e,c as a,o as s,a1 as t}from"./chunks/framework.D_xGnxpE.js";const g=JSON.parse('{"title":"COCONUT - Installation Guide","description":"","frontmatter":{},"headers":[],"relativePath":"installation.md","filePath":"installation.md"}'),i={name:"installation.md"},n=t('

COCONUT - Installation Guide

Prerequisites

Before you begin, make sure you have the following prerequisites installed on your system:

  • PHP (>= 8.1.2)
  • Composer
  • Docker

Step 1: Clone the Repository

Clone the COCONUT project repository from Github using the following command:

bash
git clone https://github.com/Steinbeck-Lab/coconut-2.0

Step 2: Navigate to Project Directory

bash
cd coconut-2.0

Step 3: Install Dependencies

Install the project dependencies using Composer:

composer install

Step 4: Configure Environment Variables

bash
cp .env.example .env

Edit the .env file and set the necessary environment variables such as database credentials.

Step 5: Start Docker Containers

Run the Sail command to start the Docker containers:

bash
./vendor/bin/sail up -d

Step 6: Generate Application Key

Generate the application key using the following command:

bash
./vendor/bin/sail artisan key:generate

Step 7: Run Database Migrations

Run the database migrations to create the required tables:

bash
./vendor/bin/sail artisan migrate

Step 8: Seed the Database (Optional)

If your project includes seeders, you can run them using the following command:

bash
./vendor/bin/sail artisan db:seed

Step 9: Access the Application

Once the Docker containers are up and running, you can access the Laravel application in your browser by visiting:

bash
http://localhost

Step 10: Run Vite Local Development Server

To run the Vite local development server for front-end assets, execute the following command:

bash
npm run dev

or

bash
yarn dev

Once the Docker containers are up and running, you can access the Laravel application in your browser by visiting:

bash
http://localhost

Congratulations! You have successfully installed the Laravel project using Sail.

Note: You can stop the Docker containers by running ./vendor/bin/sail down from your project directory.

',39),l=[n];function o(p,h,r,c,d,u){return s(),a("div",null,l)}const b=e(i,[["render",o]]);export{g as __pageData,b as default}; diff --git a/docs/.vitepress/dist/assets/installation.md.B3EGeUq6.lean.js b/docs/.vitepress/dist/assets/installation.md.B3EGeUq6.lean.js deleted file mode 100644 index b67d50e0..00000000 --- a/docs/.vitepress/dist/assets/installation.md.B3EGeUq6.lean.js +++ /dev/null @@ -1 +0,0 @@ -import{_ as e,c as a,o as s,a1 as t}from"./chunks/framework.D_xGnxpE.js";const g=JSON.parse('{"title":"COCONUT - Installation Guide","description":"","frontmatter":{},"headers":[],"relativePath":"installation.md","filePath":"installation.md"}'),i={name:"installation.md"},n=t("",39),l=[n];function o(p,h,r,c,d,u){return s(),a("div",null,l)}const b=e(i,[["render",o]]);export{g as __pageData,b as default}; diff --git a/docs/.vitepress/dist/assets/installation.md.CEGY1Qt-.js b/docs/.vitepress/dist/assets/installation.md.CEGY1Qt-.js new file mode 100644 index 00000000..0a0d4e53 --- /dev/null +++ b/docs/.vitepress/dist/assets/installation.md.CEGY1Qt-.js @@ -0,0 +1 @@ +import{_ as e,c as a,o as s,a1 as t}from"./chunks/framework.D0pIZSx4.js";const g=JSON.parse('{"title":"COCONUT - Installation Guide","description":"","frontmatter":{},"headers":[],"relativePath":"installation.md","filePath":"installation.md"}'),i={name:"installation.md"},n=t('

COCONUT - Installation Guide

Prerequisites

Before you begin, make sure you have the following prerequisites installed on your system:

  • PHP (>= 8.3)
  • Node
  • Composer
  • Docker

Step 1: Clone the Repository

Clone the COCONUT project repository from Github using the following command:

bash
git clone https://github.com/Steinbeck-Lab/coconut.git

Step 2: Navigate to Project Directory

bash
cd coconut

Step 3: Install Dependencies

Install the PHP dependencies using Composer:

composer install

Install the JS dependencies using NPM:

npm install

Step 4: Configure Environment Variables

bash
cp .env.example .env

Edit the .env file and set the necessary environment variables such as database credentials.

Step 5: Start Docker Containers

Run the Sail command to start the Docker containers:

bash
./vendor/bin/sail up -d

Step 6: Generate Application Key

Generate the application key using the following command:

bash
./vendor/bin/sail artisan key:generate

Step 7: Run Database Migrations

Run the database migrations to create the required tables:

bash
./vendor/bin/sail artisan migrate

Step 8: Seed the Database (Optional)

If your project includes seeders, you can run them using the following command:

bash
./vendor/bin/sail artisan db:seed

Step 9: Access the Application

Once the Docker containers are up and running, you can access the Laravel application in your browser by visiting:

bash
http://localhost

Step 10: Run Vite Local Development Server

To run the Vite local development server for front-end assets, execute the following command:

bash
npm run dev

or

bash
yarn dev

Once the Docker containers are up and running, you can access the Laravel application in your browser by visiting:

bash
http://localhost

Congratulations! You have successfully installed the Laravel project using Sail.

Note: You can stop the Docker containers by running ./vendor/bin/sail down from your project directory.

',41),l=[n];function p(o,h,r,c,d,u){return s(),a("div",null,l)}const b=e(i,[["render",p]]);export{g as __pageData,b as default}; diff --git a/docs/.vitepress/dist/assets/installation.md.CEGY1Qt-.lean.js b/docs/.vitepress/dist/assets/installation.md.CEGY1Qt-.lean.js new file mode 100644 index 00000000..89cf1a8e --- /dev/null +++ b/docs/.vitepress/dist/assets/installation.md.CEGY1Qt-.lean.js @@ -0,0 +1 @@ +import{_ as e,c as a,o as s,a1 as t}from"./chunks/framework.D0pIZSx4.js";const g=JSON.parse('{"title":"COCONUT - Installation Guide","description":"","frontmatter":{},"headers":[],"relativePath":"installation.md","filePath":"installation.md"}'),i={name:"installation.md"},n=t("",41),l=[n];function p(o,h,r,c,d,u){return s(),a("div",null,l)}const b=e(i,[["render",p]]);export{g as __pageData,b as default}; diff --git a/docs/.vitepress/dist/assets/introduction.md.D3tK6PrH.js b/docs/.vitepress/dist/assets/introduction.md.D3tK6PrH.js new file mode 100644 index 00000000..173fd1f9 --- /dev/null +++ b/docs/.vitepress/dist/assets/introduction.md.D3tK6PrH.js @@ -0,0 +1,6 @@ +import{_ as e,c as a,o as t,a1 as n,a3 as i,a4 as s}from"./chunks/framework.D0pIZSx4.js";const k=JSON.parse('{"title":"COCONUT (Collection of Open Natural Products) Online","description":"","frontmatter":{},"headers":[],"relativePath":"introduction.md","filePath":"introduction.md"}'),o={name:"introduction.md"},r=n('

COCONUT (Collection of Open Natural Products) Online

COlleCtion of Open Natural prodUcTs (COCONUT) is an aggregated dataset that comprises elucidated and predicted natural products (NPs) sourced from open repositories. It also provides a user-friendly web interface for browsing, searching, and efficiently downloading NPs. The database encompasses more than 50 open NP resources, granting unrestricted access to the data without any associated charges. Each entry in the database represents a "flat" NP structure and is accompanied by information on its known stereochemical forms, relevant literature, producing organisms, natural geographical distribution, and precomputed molecular properties. NPs are small bioactive molecules produced by living organisms, holding potential applications in pharmacology and various industries. The significance of these compounds has fueled global interest in NP research across diverse fields. Consequently, there has been a proliferation of generalistic and specialized NP databases over the years. Nevertheless, there is currently no comprehensive online resource that consolidates all known NPs in a single location. Such a resource would greatly facilitate NP research, enabling computational screening and other in silico applications.

Logo

INFO

  • The COCONUT logo incorporates a molecule called 6-Amyl-α-pyrone, which is an unsaturated lactone with a COCONUT fragrance. This molecule is produced by Trichoderma species, which are fungi.

Citation guidelines

By appropriately citing the COCONUT Database, readers are provided with the means to easily locate the original source of the data utilized.

  • Citing paper:
md
Sorokina, M., Merseburger, P., Rajan, K. et al. 
+COCONUT online: Collection of Open Natural Products database. 
+J Cheminform 13, 2 (2021). 
+https://doi.org/10.1186/s13321-020-00478-9
  • Citing software:
md
Venkata, C., Sharma, N., Schaub, J., Steinbeck, C., & Rajan, K. (2023). 
+COCONUT-2.0 (Version v0.0.1 - prerelease) [Computer software]. 
+https://doi.org/10.5281/zenodo.??

Acknowledgments and Maintainence

Cheminformatics Microservice and Natural Products Online are developed and maintained by the Steinbeck group at the Friedrich Schiller University Jena, Germany.

Funded by ChemBioSys (Project INF) - Project number: 239748522 - SFB 1127.

Cheming and Computational Metabolomics logo

',14),l=[r];function c(d,p,h,u,g,m){return t(),a("div",null,l)}const b=e(o,[["render",c]]);export{k as __pageData,b as default}; diff --git a/docs/.vitepress/dist/assets/introduction.md.D3tK6PrH.lean.js b/docs/.vitepress/dist/assets/introduction.md.D3tK6PrH.lean.js new file mode 100644 index 00000000..3d2cc33b --- /dev/null +++ b/docs/.vitepress/dist/assets/introduction.md.D3tK6PrH.lean.js @@ -0,0 +1 @@ +import{_ as e,c as a,o as t,a1 as n,a3 as i,a4 as s}from"./chunks/framework.D0pIZSx4.js";const k=JSON.parse('{"title":"COCONUT (Collection of Open Natural Products) Online","description":"","frontmatter":{},"headers":[],"relativePath":"introduction.md","filePath":"introduction.md"}'),o={name:"introduction.md"},r=n("",14),l=[r];function c(d,p,h,u,g,m){return t(),a("div",null,l)}const b=e(o,[["render",c]]);export{k as __pageData,b as default}; diff --git a/docs/.vitepress/dist/assets/introduction.md.c5JF7RpG.js b/docs/.vitepress/dist/assets/introduction.md.c5JF7RpG.js deleted file mode 100644 index cb442eac..00000000 --- a/docs/.vitepress/dist/assets/introduction.md.c5JF7RpG.js +++ /dev/null @@ -1,6 +0,0 @@ -import{_ as e,c as a,o as t,a1 as i,a2 as s}from"./chunks/framework.D_xGnxpE.js";const f=JSON.parse('{"title":"COCONUT (Collection of Open Natural Products) Online","description":"","frontmatter":{},"headers":[],"relativePath":"introduction.md","filePath":"introduction.md"}'),n={name:"introduction.md"},o=i('

COCONUT (Collection of Open Natural Products) Online

COlleCtion of Open NatUral producTs (COCONUT) is an aggregated dataset that comprises elucidated and predicted natural products (NPs) sourced from open repositories. It also provides a user-friendly web interface for browsing, searching, and efficiently downloading NPs. The database encompasses more than 50 open NP resources, granting unrestricted access to the data without any associated charges. Each entry in the database represents a "flat" NP structure and is accompanied by information on its known stereochemical forms, relevant literature, producing organisms, natural geographical distribution, and precomputed molecular properties. NPs are small bioactive molecules produced by living organisms, holding potential applications in pharmacology and various industries. The significance of these compounds has fueled global interest in NP research across diverse fields. Consequently, there has been a proliferation of generalistic and specialized NP databases over the years. Nevertheless, there is currently no comprehensive online resource that consolidates all known NPs in a single location. Such a resource would greatly facilitate NP research, enabling computational screening and other in silico applications.

Logo

INFO

  • The COCONUT logo incorporates a molecule called 6-Amyl-α-pyrone, which is an unsaturated lactone with a COCONUT fragrance. This molecule is produced by Trichoderma species, which are fungi.

Citation guidelines

By appropriately citing the COCONUT Database, readers are provided with the means to easily locate the original source of the data utilized.

  • Citing paper:
md
Sorokina, M., Merseburger, P., Rajan, K. et al. 
-COCONUT online: Collection of Open Natural Products database. 
-J Cheminform 13, 2 (2021). 
-https://doi.org/10.1186/s13321-020-00478-9
  • Citing software:
md
Venkata, C., Sharma, N., Schaub, J., Steinbeck, C., & Rajan, K. (2023). 
-COCONUT-2.0 (Version v0.0.1 - prerelease) [Computer software]. 
-https://doi.org/10.5281/zenodo.??
`,10),r=[o];function l(c,d,p,h,u,g){return t(),a("div",null,r)}const k=e(n,[["render",l]]);export{f as __pageData,k as default}; diff --git a/docs/.vitepress/dist/assets/introduction.md.c5JF7RpG.lean.js b/docs/.vitepress/dist/assets/introduction.md.c5JF7RpG.lean.js deleted file mode 100644 index e48798cf..00000000 --- a/docs/.vitepress/dist/assets/introduction.md.c5JF7RpG.lean.js +++ /dev/null @@ -1 +0,0 @@ -import{_ as e,c as a,o as t,a1 as i,a2 as s}from"./chunks/framework.D_xGnxpE.js";const f=JSON.parse('{"title":"COCONUT (Collection of Open Natural Products) Online","description":"","frontmatter":{},"headers":[],"relativePath":"introduction.md","filePath":"introduction.md"}'),n={name:"introduction.md"},o=i("",10),r=[o];function l(c,d,p,h,u,g){return t(),a("div",null,r)}const k=e(n,[["render",l]]);export{f as __pageData,k as default}; diff --git a/docs/.vitepress/dist/assets/issues.md.ClqioswW.js b/docs/.vitepress/dist/assets/issues.md.Bg_RyD9U.js similarity index 85% rename from docs/.vitepress/dist/assets/issues.md.ClqioswW.js rename to docs/.vitepress/dist/assets/issues.md.Bg_RyD9U.js index 233f0b98..916c9e47 100644 --- a/docs/.vitepress/dist/assets/issues.md.ClqioswW.js +++ b/docs/.vitepress/dist/assets/issues.md.Bg_RyD9U.js @@ -1,4 +1,4 @@ -import{_ as s,c as a,o as n,a1 as e}from"./chunks/framework.D_xGnxpE.js";const f=JSON.parse('{"title":"Help us improve","description":"","frontmatter":{"outline":"deep"},"headers":[],"relativePath":"issues.md","filePath":"issues.md"}'),p={name:"issues.md"},t=e(`

Help us improve

Feature Request

Thank you for your interest in improving COCONUT Database! Please use the template below to submit your feature request either by email or on our github. We appreciate your feedback and suggestions.

Feature Request Template:

**Title:**
+import{_ as s,c as a,o as n,a1 as e}from"./chunks/framework.D0pIZSx4.js";const f=JSON.parse('{"title":"Help us improve","description":"","frontmatter":{"outline":"deep"},"headers":[],"relativePath":"issues.md","filePath":"issues.md"}'),p={name:"issues.md"},t=e(`

Help us improve

Feature Request

Thank you for your interest in improving COCONUT Database! Please use the template below to submit your feature request either by email or on our github. We appreciate your feedback and suggestions.

Feature Request Template:

**Title:**
 
 Give your feature request a descriptive title.
 
@@ -28,7 +28,7 @@ import{_ as s,c as a,o as n,a1 as e}from"./chunks/framework.D_xGnxpE.js";const f
 
 **Contact Information:**
 
-If you would like to be contacted regarding your feature request, please provide your preferred contact information (e.g., email address).

Thank you for taking the time to submit your feature request. We value your input and will carefully consider all suggestions as we continue to improve our product.

Report Issues/Bugs

We appreciate your help in improving our product. If you have encountered any issues or bugs, please use the template below to report them either by email or on our github. Your feedback is valuable to us in ensuring a smooth user experience.

Issue Template:

**Summary:**
+If you would like to be contacted regarding your feature request, please provide your preferred contact information (e.g., email address).

Thank you for taking the time to submit your feature request. We value your input and will carefully consider all suggestions as we continue to improve our product.

Report Issues/Bugs

We appreciate your help in improving our product. If you have encountered any issues or bugs, please use the template below to report them either by email or on our github. Your feedback is valuable to us in ensuring a smooth user experience.

Issue Template:

**Summary:**
 
 Provide a brief summary of the issue.
 
diff --git a/docs/.vitepress/dist/assets/issues.md.ClqioswW.lean.js b/docs/.vitepress/dist/assets/issues.md.Bg_RyD9U.lean.js
similarity index 67%
rename from docs/.vitepress/dist/assets/issues.md.ClqioswW.lean.js
rename to docs/.vitepress/dist/assets/issues.md.Bg_RyD9U.lean.js
index f4be3721..ccae9489 100644
--- a/docs/.vitepress/dist/assets/issues.md.ClqioswW.lean.js
+++ b/docs/.vitepress/dist/assets/issues.md.Bg_RyD9U.lean.js
@@ -1 +1 @@
-import{_ as s,c as a,o as n,a1 as e}from"./chunks/framework.D_xGnxpE.js";const f=JSON.parse('{"title":"Help us improve","description":"","frontmatter":{"outline":"deep"},"headers":[],"relativePath":"issues.md","filePath":"issues.md"}'),p={name:"issues.md"},t=e("",11),i=[t];function l(r,o,c,u,d,h){return n(),a("div",null,i)}const g=s(p,[["render",l]]);export{f as __pageData,g as default};
+import{_ as s,c as a,o as n,a1 as e}from"./chunks/framework.D0pIZSx4.js";const f=JSON.parse('{"title":"Help us improve","description":"","frontmatter":{"outline":"deep"},"headers":[],"relativePath":"issues.md","filePath":"issues.md"}'),p={name:"issues.md"},t=e("",11),i=[t];function l(r,o,c,u,d,h){return n(),a("div",null,i)}const g=s(p,[["render",l]]);export{f as __pageData,g as default};
diff --git a/docs/.vitepress/dist/assets/license.md.D6et81ne.js b/docs/.vitepress/dist/assets/license.md.D6et81ne.js
deleted file mode 100644
index 3f5734bf..00000000
--- a/docs/.vitepress/dist/assets/license.md.D6et81ne.js
+++ /dev/null
@@ -1 +0,0 @@
-import{_ as t,c as o,o as i,j as e,a as s}from"./chunks/framework.D_xGnxpE.js";const S=JSON.parse('{"title":"MIT License","description":"","frontmatter":{},"headers":[],"relativePath":"license.md","filePath":"license.md"}'),n={name:"license.md"},a=e("h1",{id:"mit-license",tabindex:"-1"},[s("MIT License "),e("a",{class:"header-anchor",href:"#mit-license","aria-label":'Permalink to "MIT License"'},"​")],-1),c=e("p",null,"Copyright (c) 2023 Steinbeck-Lab",-1),r=e("p",null,'Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:',-1),l=e("p",null,"The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.",-1),T=e("p",null,'THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.',-1),I=[a,c,r,l,T];function d(O,E,h,R,N,A){return i(),o("div",null,I)}const f=t(n,[["render",d]]);export{S as __pageData,f as default};
diff --git a/docs/.vitepress/dist/assets/license.md.D6et81ne.lean.js b/docs/.vitepress/dist/assets/license.md.D6et81ne.lean.js
deleted file mode 100644
index 3f5734bf..00000000
--- a/docs/.vitepress/dist/assets/license.md.D6et81ne.lean.js
+++ /dev/null
@@ -1 +0,0 @@
-import{_ as t,c as o,o as i,j as e,a as s}from"./chunks/framework.D_xGnxpE.js";const S=JSON.parse('{"title":"MIT License","description":"","frontmatter":{},"headers":[],"relativePath":"license.md","filePath":"license.md"}'),n={name:"license.md"},a=e("h1",{id:"mit-license",tabindex:"-1"},[s("MIT License "),e("a",{class:"header-anchor",href:"#mit-license","aria-label":'Permalink to "MIT License"'},"​")],-1),c=e("p",null,"Copyright (c) 2023 Steinbeck-Lab",-1),r=e("p",null,'Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:',-1),l=e("p",null,"The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.",-1),T=e("p",null,'THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.',-1),I=[a,c,r,l,T];function d(O,E,h,R,N,A){return i(),o("div",null,I)}const f=t(n,[["render",d]]);export{S as __pageData,f as default};
diff --git a/docs/.vitepress/dist/assets/license.md.DfItzB9F.js b/docs/.vitepress/dist/assets/license.md.DfItzB9F.js
new file mode 100644
index 00000000..80807c02
--- /dev/null
+++ b/docs/.vitepress/dist/assets/license.md.DfItzB9F.js
@@ -0,0 +1 @@
+import{_ as e,c as t,o,a1 as a}from"./chunks/framework.D0pIZSx4.js";const I=JSON.parse('{"title":"Code and Data License Information","description":"","frontmatter":{},"headers":[],"relativePath":"license.md","filePath":"license.md"}'),i={name:"license.md"},n=a('

Code and Data License Information

Code

The code provided in this repository is licensed under the MIT License:

Copyright (c) 2023 Steinbeck-Lab

Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

Data

The data provided in this repository is released under the CC0 1.0 Universal (CC0 1.0) Public Domain Dedication:

CC0 1.0 Universal (CC0 1.0) Public Domain Dedication

The person who associated a work with this deed has dedicated the work to the public domain by waiving all of his or her rights to the work worldwide under copyright law, including all related and neighboring rights, to the extent allowed by law.

You can copy, modify, distribute and perform the work, even for commercial purposes, all without asking permission.

The above copyright notice has been included as a courtesy to the public domain, but is not required by law. The person who associated the work with this deed makes no warranties about the work, and disclaims liability for all uses of the work, to the fullest extent permitted by applicable law.

',13),r=[n];function s(d,c,l,h,p,T){return o(),t("div",null,r)}const f=e(i,[["render",s]]);export{I as __pageData,f as default}; diff --git a/docs/.vitepress/dist/assets/license.md.DfItzB9F.lean.js b/docs/.vitepress/dist/assets/license.md.DfItzB9F.lean.js new file mode 100644 index 00000000..b3e90e7d --- /dev/null +++ b/docs/.vitepress/dist/assets/license.md.DfItzB9F.lean.js @@ -0,0 +1 @@ +import{_ as e,c as t,o,a1 as a}from"./chunks/framework.D0pIZSx4.js";const I=JSON.parse('{"title":"Code and Data License Information","description":"","frontmatter":{},"headers":[],"relativePath":"license.md","filePath":"license.md"}'),i={name:"license.md"},n=a("",13),r=[n];function s(d,c,l,h,p,T){return o(),t("div",null,r)}const f=e(i,[["render",s]]);export{I as __pageData,f as default}; diff --git a/docs/.vitepress/dist/assets/single-submission.md.Ct5SXe7T.js b/docs/.vitepress/dist/assets/markdown-examples.md.D2XVdsBH.js similarity index 65% rename from docs/.vitepress/dist/assets/single-submission.md.Ct5SXe7T.js rename to docs/.vitepress/dist/assets/markdown-examples.md.D2XVdsBH.js index 3af20828..89338a96 100644 --- a/docs/.vitepress/dist/assets/single-submission.md.Ct5SXe7T.js +++ b/docs/.vitepress/dist/assets/markdown-examples.md.D2XVdsBH.js @@ -1,12 +1,12 @@ -import{_ as s,c as a,o as i,a1 as n}from"./chunks/framework.D_xGnxpE.js";const E=JSON.parse('{"title":"Markdown Extension Examples","description":"","frontmatter":{},"headers":[],"relativePath":"single-submission.md","filePath":"single-submission.md"}'),e={name:"single-submission.md"},t=n(`

Markdown Extension Examples

This page demonstrates some of the built-in markdown extensions provided by VitePress.

Syntax Highlighting

VitePress provides Syntax Highlighting powered by Shiki, with additional features like line-highlighting:

Input

\`\`\`js{4}
-export default {
-  data () {
-    return {
-      msg: 'Highlighted!'
-    }
-  }
-}
-\`\`\`

Output

js
export default {
+import{_ as s,c as a,o as i,a1 as n}from"./chunks/framework.D0pIZSx4.js";const g=JSON.parse('{"title":"Markdown Extension Examples","description":"","frontmatter":{},"headers":[],"relativePath":"markdown-examples.md","filePath":"markdown-examples.md"}'),t={name:"markdown-examples.md"},e=n(`

Markdown Extension Examples

This page demonstrates some of the built-in markdown extensions provided by VitePress.

Syntax Highlighting

VitePress provides Syntax Highlighting powered by Shiki, with additional features like line-highlighting:

Input

md
\`\`\`js{4}
+export default {
+  data () {
+    return {
+      msg: 'Highlighted!'
+    }
+  }
+}
+\`\`\`

Output

js
export default {
   data () {
     return {
       msg: 'Highlighted!'
@@ -30,4 +30,4 @@ import{_ as s,c as a,o as i,a1 as n}from"./chunks/framework.D_xGnxpE.js";const E
 
 ::: details
 This is a details block.
-:::

Output

INFO

This is an info box.

TIP

This is a tip.

WARNING

This is a warning.

DANGER

This is a dangerous warning.

Details

This is a details block.

More

Check out the documentation for the full list of markdown extensions.

`,19),l=[t];function p(h,o,r,d,c,k){return i(),a("div",null,l)}const u=s(e,[["render",p]]);export{E as __pageData,u as default}; +:::

Output

INFO

This is an info box.

TIP

This is a tip.

WARNING

This is a warning.

DANGER

This is a dangerous warning.

Details

This is a details block.

More

Check out the documentation for the full list of markdown extensions.

`,19),l=[e];function p(h,k,r,o,d,E){return i(),a("div",null,l)}const m=s(t,[["render",p]]);export{g as __pageData,m as default}; diff --git a/docs/.vitepress/dist/assets/markdown-examples.md.D2XVdsBH.lean.js b/docs/.vitepress/dist/assets/markdown-examples.md.D2XVdsBH.lean.js new file mode 100644 index 00000000..ebceb9ae --- /dev/null +++ b/docs/.vitepress/dist/assets/markdown-examples.md.D2XVdsBH.lean.js @@ -0,0 +1 @@ +import{_ as s,c as a,o as i,a1 as n}from"./chunks/framework.D0pIZSx4.js";const g=JSON.parse('{"title":"Markdown Extension Examples","description":"","frontmatter":{},"headers":[],"relativePath":"markdown-examples.md","filePath":"markdown-examples.md"}'),t={name:"markdown-examples.md"},e=n("",19),l=[e];function p(h,k,r,o,d,E){return i(),a("div",null,l)}const m=s(t,[["render",p]]);export{g as __pageData,m as default}; diff --git a/docs/.vitepress/dist/assets/multi-submission.md.BcHGrxq4.js b/docs/.vitepress/dist/assets/multi-submission.md.BcHGrxq4.js new file mode 100644 index 00000000..de5d3b0b --- /dev/null +++ b/docs/.vitepress/dist/assets/multi-submission.md.BcHGrxq4.js @@ -0,0 +1 @@ +import{_ as s,c as a,o as t,j as e,a as n}from"./chunks/framework.D0pIZSx4.js";const h=JSON.parse('{"title":"Markdown Extension Examples","description":"","frontmatter":{},"headers":[],"relativePath":"multi-submission.md","filePath":"multi-submission.md"}'),o={name:"multi-submission.md"},i=e("h1",{id:"markdown-extension-examples",tabindex:"-1"},[n("Markdown Extension Examples "),e("a",{class:"header-anchor",href:"#markdown-extension-examples","aria-label":'Permalink to "Markdown Extension Examples"'},"​")],-1),r=[i];function m(d,l,c,p,x,_){return t(),a("div",null,r)}const f=s(o,[["render",m]]);export{h as __pageData,f as default}; diff --git a/docs/.vitepress/dist/assets/multi-submission.md.BcHGrxq4.lean.js b/docs/.vitepress/dist/assets/multi-submission.md.BcHGrxq4.lean.js new file mode 100644 index 00000000..de5d3b0b --- /dev/null +++ b/docs/.vitepress/dist/assets/multi-submission.md.BcHGrxq4.lean.js @@ -0,0 +1 @@ +import{_ as s,c as a,o as t,j as e,a as n}from"./chunks/framework.D0pIZSx4.js";const h=JSON.parse('{"title":"Markdown Extension Examples","description":"","frontmatter":{},"headers":[],"relativePath":"multi-submission.md","filePath":"multi-submission.md"}'),o={name:"multi-submission.md"},i=e("h1",{id:"markdown-extension-examples",tabindex:"-1"},[n("Markdown Extension Examples "),e("a",{class:"header-anchor",href:"#markdown-extension-examples","aria-label":'Permalink to "Markdown Extension Examples"'},"​")],-1),r=[i];function m(d,l,c,p,x,_){return t(),a("div",null,r)}const f=s(o,[["render",m]]);export{h as __pageData,f as default}; diff --git a/docs/.vitepress/dist/assets/multi-submission.md.CHBV7X4Z.js b/docs/.vitepress/dist/assets/multi-submission.md.CHBV7X4Z.js deleted file mode 100644 index 472cb3f4..00000000 --- a/docs/.vitepress/dist/assets/multi-submission.md.CHBV7X4Z.js +++ /dev/null @@ -1,33 +0,0 @@ -import{_ as s,c as a,o as i,a1 as n}from"./chunks/framework.D_xGnxpE.js";const g=JSON.parse('{"title":"Markdown Extension Examples","description":"","frontmatter":{},"headers":[],"relativePath":"multi-submission.md","filePath":"multi-submission.md"}'),t={name:"multi-submission.md"},e=n(`

Markdown Extension Examples

This page demonstrates some of the built-in markdown extensions provided by VitePress.

Syntax Highlighting

VitePress provides Syntax Highlighting powered by Shiki, with additional features like line-highlighting:

Input

\`\`\`js{4}
-export default {
-  data () {
-    return {
-      msg: 'Highlighted!'
-    }
-  }
-}
-\`\`\`

Output

js
export default {
-  data () {
-    return {
-      msg: 'Highlighted!'
-    }
-  }
-}

Custom Containers

Input

md
::: info
-This is an info box.
-:::
-
-::: tip
-This is a tip.
-:::
-
-::: warning
-This is a warning.
-:::
-
-::: danger
-This is a dangerous warning.
-:::
-
-::: details
-This is a details block.
-:::

Output

INFO

This is an info box.

TIP

This is a tip.

WARNING

This is a warning.

DANGER

This is a dangerous warning.

Details

This is a details block.

More

Check out the documentation for the full list of markdown extensions.

`,19),l=[e];function p(h,o,r,d,c,k){return i(),a("div",null,l)}const u=s(t,[["render",p]]);export{g as __pageData,u as default}; diff --git a/docs/.vitepress/dist/assets/multi-submission.md.CHBV7X4Z.lean.js b/docs/.vitepress/dist/assets/multi-submission.md.CHBV7X4Z.lean.js deleted file mode 100644 index 50db4089..00000000 --- a/docs/.vitepress/dist/assets/multi-submission.md.CHBV7X4Z.lean.js +++ /dev/null @@ -1 +0,0 @@ -import{_ as s,c as a,o as i,a1 as n}from"./chunks/framework.D_xGnxpE.js";const g=JSON.parse('{"title":"Markdown Extension Examples","description":"","frontmatter":{},"headers":[],"relativePath":"multi-submission.md","filePath":"multi-submission.md"}'),t={name:"multi-submission.md"},e=n("",19),l=[e];function p(h,o,r,d,c,k){return i(),a("div",null,l)}const u=s(t,[["render",p]]);export{g as __pageData,u as default}; diff --git a/docs/.vitepress/dist/assets/report-submission.md.thVCQVWu.js b/docs/.vitepress/dist/assets/report-submission.md.thVCQVWu.js new file mode 100644 index 00000000..385b2b9d --- /dev/null +++ b/docs/.vitepress/dist/assets/report-submission.md.thVCQVWu.js @@ -0,0 +1 @@ +import{_ as o,c as t,o as e,a1 as r}from"./chunks/framework.D0pIZSx4.js";const h=JSON.parse('{"title":"Reporting Discrepancies: Compounds, Collections, Citations, or Organisms","description":"","frontmatter":{},"headers":[],"relativePath":"report-submission.md","filePath":"report-submission.md"}'),i={name:"report-submission.md"},s=r('

Reporting Discrepancies: Compounds, Collections, Citations, or Organisms

The COCONUT platform provides users with the ability to report discrepancies in compounds, collections, citations, or organisms. Multiple items can be reported at once, ensuring thorough feedback on any observed issues. If you come across any discrepancies, please follow the steps outlined below to submit a report.

Reporting Collections, Citations, or Organisms

  1. Log in to your COCONUT account.
  2. In the dashboard's left pane, select "Reports."
  3. On the Reports page, click the "New Report" button at the top right.
  4. Complete the "Create Report" form:
    • Report Type: Select the category of the item you wish to report.
    • Title: Provide a concise title summarizing the issue.
    • Evidence/Comment: Offer evidence or comments supporting your observation of the discrepancy.
    • URL: Include any relevant links to substantiate your report.
    • Citations / Collections / Organisms: Select the respective items you wish to report.
      • For Molecules: The select option is currently unavailable. Instead, please provide the identifiers of the molecules, separated by commas.
    • Tags: Add comma-separated keywords to facilitate easy search and categorization of your report.
  5. Click "Create" to submit your report, or "Create & create another" if you have additional reports to submit.

Reporting Compounds

There are two methods available for reporting compounds:

1. Reporting from the Compound Page

This method allows you to report a single compound directly from its detail page:

  1. On the COCONUT homepage, click "Browse" at the top of the page.
  2. Locate and click on the compound you wish to report.
  3. On the right pane, beneath the compound images, click "Report this compound."
  4. Log in if prompted.
  5. Complete the "Create Report" form:
    • Title: Provide a concise title summarizing the issue.
    • Evidence/Comment: Offer evidence or comments supporting your observation of the discrepancy.
    • URL: Include any relevant links to substantiate your report.
    • Molecules: This field will be pre-filled with the compound identifier.
    • Tags: Add comma-separated keywords to facilitate easy search and categorization of your report.
  6. Click "Create" to submit your report.

2. Reporting from the Reports Page

You can report one or more compounds from the Reports page:

  1. Log in to your COCONUT account.
  2. In the dashboard's left pane, select "Reports."
  3. On the Reports page, click the "New Report" button at the top right.
  4. Complete the "Create Report" form:
    • Report Type: Select "Molecule."
    • Title: Provide a concise title summarizing the issue.
    • Evidence/Comment: Offer evidence or comments supporting your observation of the discrepancy.
    • URL: Include any relevant links to substantiate your report.
    • Molecules: The select option is currently unavailable. Instead, provide the identifiers of the molecules, separated by commas (e.g., CNP0335993,CNP0335993).
    • Tags: Add comma-separated keywords to facilitate easy search and categorization of your report.
  5. Click "Create" to submit your report, or "Create & create another" if you have additional reports to submit.

3. Reporting from the Molecules Table

This method allows you to report one or more compounds directly from the Molecules table:

  1. Log in to your COCONUT account.
  2. In the dashboard's left pane, select "Molecules."
    • To submit a single compound:
      1. In the Molecules page, click on the ellipsis (three vertical dots) next to the molecule you wish to report.
    • To submit multiple compounds:
      1. In the Molecules page, check the boxes next to the molecules you wish to report.
      2. Click on the "Bulk actions" button that appears at the top left of the table header.
      3. Select "Report molecules" from the dropdown menu.
  3. You will be redirected to the Reports page, where the molecule identifiers will be pre-populated in the form.
  4. Complete the "Create Report" form:
    • Title: Provide a concise title summarizing the issue.
    • Evidence/Comment: Offer evidence or comments supporting your observation of the discrepancy.
    • URL: Include any relevant links to substantiate your report.
    • Molecules: This field will be pre-filled with the compound identifier(s).
    • Tags: Add comma-separated keywords to facilitate easy search and categorization of your report.
  5. Click "Create" to submit your report.
',15),n=[s];function l(a,c,p,u,g,m){return e(),t("div",null,n)}const f=o(i,[["render",l]]);export{h as __pageData,f as default}; diff --git a/docs/.vitepress/dist/assets/report-submission.md.thVCQVWu.lean.js b/docs/.vitepress/dist/assets/report-submission.md.thVCQVWu.lean.js new file mode 100644 index 00000000..c3f16e15 --- /dev/null +++ b/docs/.vitepress/dist/assets/report-submission.md.thVCQVWu.lean.js @@ -0,0 +1 @@ +import{_ as o,c as t,o as e,a1 as r}from"./chunks/framework.D0pIZSx4.js";const h=JSON.parse('{"title":"Reporting Discrepancies: Compounds, Collections, Citations, or Organisms","description":"","frontmatter":{},"headers":[],"relativePath":"report-submission.md","filePath":"report-submission.md"}'),i={name:"report-submission.md"},s=r("",15),n=[s];function l(a,c,p,u,g,m){return e(),t("div",null,n)}const f=o(i,[["render",l]]);export{h as __pageData,f as default}; diff --git a/docs/.vitepress/dist/assets/schemas-api.md.SZAfPZXJ.js b/docs/.vitepress/dist/assets/schemas-api.md.18DnqYio.js similarity index 97% rename from docs/.vitepress/dist/assets/schemas-api.md.SZAfPZXJ.js rename to docs/.vitepress/dist/assets/schemas-api.md.18DnqYio.js index 28b6f246..11d375e9 100644 --- a/docs/.vitepress/dist/assets/schemas-api.md.SZAfPZXJ.js +++ b/docs/.vitepress/dist/assets/schemas-api.md.18DnqYio.js @@ -1,4 +1,4 @@ -import{_ as s,c as a,o as i,a1 as n}from"./chunks/framework.D_xGnxpE.js";const g=JSON.parse('{"title":"Markdown Extension Examples","description":"","frontmatter":{},"headers":[],"relativePath":"schemas-api.md","filePath":"schemas-api.md"}'),e={name:"schemas-api.md"},t=n(`

Markdown Extension Examples

This page demonstrates some of the built-in markdown extensions provided by VitePress.

Syntax Highlighting

VitePress provides Syntax Highlighting powered by Shiki, with additional features like line-highlighting:

Input

\`\`\`js{4}
+import{_ as s,c as a,o as i,a1 as n}from"./chunks/framework.D0pIZSx4.js";const g=JSON.parse('{"title":"Markdown Extension Examples","description":"","frontmatter":{},"headers":[],"relativePath":"schemas-api.md","filePath":"schemas-api.md"}'),e={name:"schemas-api.md"},t=n(`

Markdown Extension Examples

This page demonstrates some of the built-in markdown extensions provided by VitePress.

Syntax Highlighting

VitePress provides Syntax Highlighting powered by Shiki, with additional features like line-highlighting:

Input

\`\`\`js{4}
 export default {
   data () {
     return {
diff --git a/docs/.vitepress/dist/assets/schemas-api.md.SZAfPZXJ.lean.js b/docs/.vitepress/dist/assets/schemas-api.md.18DnqYio.lean.js
similarity index 68%
rename from docs/.vitepress/dist/assets/schemas-api.md.SZAfPZXJ.lean.js
rename to docs/.vitepress/dist/assets/schemas-api.md.18DnqYio.lean.js
index e1b40d50..3fcf9a5a 100644
--- a/docs/.vitepress/dist/assets/schemas-api.md.SZAfPZXJ.lean.js
+++ b/docs/.vitepress/dist/assets/schemas-api.md.18DnqYio.lean.js
@@ -1 +1 @@
-import{_ as s,c as a,o as i,a1 as n}from"./chunks/framework.D_xGnxpE.js";const g=JSON.parse('{"title":"Markdown Extension Examples","description":"","frontmatter":{},"headers":[],"relativePath":"schemas-api.md","filePath":"schemas-api.md"}'),e={name:"schemas-api.md"},t=n("",19),p=[t];function l(h,o,r,c,d,k){return i(),a("div",null,p)}const u=s(e,[["render",l]]);export{g as __pageData,u as default};
+import{_ as s,c as a,o as i,a1 as n}from"./chunks/framework.D0pIZSx4.js";const g=JSON.parse('{"title":"Markdown Extension Examples","description":"","frontmatter":{},"headers":[],"relativePath":"schemas-api.md","filePath":"schemas-api.md"}'),e={name:"schemas-api.md"},t=n("",19),p=[t];function l(h,o,r,c,d,k){return i(),a("div",null,p)}const u=s(e,[["render",l]]);export{g as __pageData,u as default};
diff --git a/docs/.vitepress/dist/assets/sdf-download.md.BlXeH5Wm.js b/docs/.vitepress/dist/assets/sdf-download.md.BQVQ7M5b.js
similarity index 97%
rename from docs/.vitepress/dist/assets/sdf-download.md.BlXeH5Wm.js
rename to docs/.vitepress/dist/assets/sdf-download.md.BQVQ7M5b.js
index 66fbd91a..f9263988 100644
--- a/docs/.vitepress/dist/assets/sdf-download.md.BlXeH5Wm.js
+++ b/docs/.vitepress/dist/assets/sdf-download.md.BQVQ7M5b.js
@@ -1,4 +1,4 @@
-import{_ as s,c as a,o as n,a1 as i}from"./chunks/framework.D_xGnxpE.js";const g=JSON.parse('{"title":"Markdown Extension Examples","description":"","frontmatter":{},"headers":[],"relativePath":"sdf-download.md","filePath":"sdf-download.md"}'),e={name:"sdf-download.md"},t=i(`

Markdown Extension Examples

This page demonstrates some of the built-in markdown extensions provided by VitePress.

Syntax Highlighting

VitePress provides Syntax Highlighting powered by Shiki, with additional features like line-highlighting:

Input

\`\`\`js{4}
+import{_ as s,c as a,o as n,a1 as i}from"./chunks/framework.D0pIZSx4.js";const g=JSON.parse('{"title":"Markdown Extension Examples","description":"","frontmatter":{},"headers":[],"relativePath":"sdf-download.md","filePath":"sdf-download.md"}'),e={name:"sdf-download.md"},t=i(`

Markdown Extension Examples

This page demonstrates some of the built-in markdown extensions provided by VitePress.

Syntax Highlighting

VitePress provides Syntax Highlighting powered by Shiki, with additional features like line-highlighting:

Input

\`\`\`js{4}
 export default {
   data () {
     return {
diff --git a/docs/.vitepress/dist/assets/sdf-download.md.BlXeH5Wm.lean.js b/docs/.vitepress/dist/assets/sdf-download.md.BQVQ7M5b.lean.js
similarity index 68%
rename from docs/.vitepress/dist/assets/sdf-download.md.BlXeH5Wm.lean.js
rename to docs/.vitepress/dist/assets/sdf-download.md.BQVQ7M5b.lean.js
index e18e0286..3885f948 100644
--- a/docs/.vitepress/dist/assets/sdf-download.md.BlXeH5Wm.lean.js
+++ b/docs/.vitepress/dist/assets/sdf-download.md.BQVQ7M5b.lean.js
@@ -1 +1 @@
-import{_ as s,c as a,o as n,a1 as i}from"./chunks/framework.D_xGnxpE.js";const g=JSON.parse('{"title":"Markdown Extension Examples","description":"","frontmatter":{},"headers":[],"relativePath":"sdf-download.md","filePath":"sdf-download.md"}'),e={name:"sdf-download.md"},t=i("",19),l=[t];function p(h,o,r,d,c,k){return n(),a("div",null,l)}const u=s(e,[["render",p]]);export{g as __pageData,u as default};
+import{_ as s,c as a,o as n,a1 as i}from"./chunks/framework.D0pIZSx4.js";const g=JSON.parse('{"title":"Markdown Extension Examples","description":"","frontmatter":{},"headers":[],"relativePath":"sdf-download.md","filePath":"sdf-download.md"}'),e={name:"sdf-download.md"},t=i("",19),l=[t];function p(h,o,r,d,c,k){return n(),a("div",null,l)}const u=s(e,[["render",p]]);export{g as __pageData,u as default};
diff --git a/docs/.vitepress/dist/assets/search-api.md.B8QPpKFW.js b/docs/.vitepress/dist/assets/search-api.md.BM5G9xzO.js
similarity index 97%
rename from docs/.vitepress/dist/assets/search-api.md.B8QPpKFW.js
rename to docs/.vitepress/dist/assets/search-api.md.BM5G9xzO.js
index eb3f415e..f2876f12 100644
--- a/docs/.vitepress/dist/assets/search-api.md.B8QPpKFW.js
+++ b/docs/.vitepress/dist/assets/search-api.md.BM5G9xzO.js
@@ -1,4 +1,4 @@
-import{_ as s,c as a,o as i,a1 as n}from"./chunks/framework.D_xGnxpE.js";const g=JSON.parse('{"title":"Markdown Extension Examples","description":"","frontmatter":{},"headers":[],"relativePath":"search-api.md","filePath":"search-api.md"}'),e={name:"search-api.md"},t=n(`

Markdown Extension Examples

This page demonstrates some of the built-in markdown extensions provided by VitePress.

Syntax Highlighting

VitePress provides Syntax Highlighting powered by Shiki, with additional features like line-highlighting:

Input

\`\`\`js{4}
+import{_ as s,c as a,o as i,a1 as n}from"./chunks/framework.D0pIZSx4.js";const g=JSON.parse('{"title":"Markdown Extension Examples","description":"","frontmatter":{},"headers":[],"relativePath":"search-api.md","filePath":"search-api.md"}'),e={name:"search-api.md"},t=n(`

Markdown Extension Examples

This page demonstrates some of the built-in markdown extensions provided by VitePress.

Syntax Highlighting

VitePress provides Syntax Highlighting powered by Shiki, with additional features like line-highlighting:

Input

\`\`\`js{4}
 export default {
   data () {
     return {
diff --git a/docs/.vitepress/dist/assets/search-api.md.B8QPpKFW.lean.js b/docs/.vitepress/dist/assets/search-api.md.BM5G9xzO.lean.js
similarity index 67%
rename from docs/.vitepress/dist/assets/search-api.md.B8QPpKFW.lean.js
rename to docs/.vitepress/dist/assets/search-api.md.BM5G9xzO.lean.js
index e2267c84..c8cc9196 100644
--- a/docs/.vitepress/dist/assets/search-api.md.B8QPpKFW.lean.js
+++ b/docs/.vitepress/dist/assets/search-api.md.BM5G9xzO.lean.js
@@ -1 +1 @@
-import{_ as s,c as a,o as i,a1 as n}from"./chunks/framework.D_xGnxpE.js";const g=JSON.parse('{"title":"Markdown Extension Examples","description":"","frontmatter":{},"headers":[],"relativePath":"search-api.md","filePath":"search-api.md"}'),e={name:"search-api.md"},t=n("",19),p=[t];function l(h,r,o,c,d,k){return i(),a("div",null,p)}const u=s(e,[["render",l]]);export{g as __pageData,u as default};
+import{_ as s,c as a,o as i,a1 as n}from"./chunks/framework.D0pIZSx4.js";const g=JSON.parse('{"title":"Markdown Extension Examples","description":"","frontmatter":{},"headers":[],"relativePath":"search-api.md","filePath":"search-api.md"}'),e={name:"search-api.md"},t=n("",19),p=[t];function l(h,r,o,c,d,k){return i(),a("div",null,p)}const u=s(e,[["render",l]]);export{g as __pageData,u as default};
diff --git a/docs/.vitepress/dist/assets/similarity-search.md.ChwSV90O.js b/docs/.vitepress/dist/assets/similarity-search.md.ChwSV90O.js
new file mode 100644
index 00000000..e4dbcd7b
--- /dev/null
+++ b/docs/.vitepress/dist/assets/similarity-search.md.ChwSV90O.js
@@ -0,0 +1 @@
+import{_ as t,c as a,o as i,j as e,a as r}from"./chunks/framework.D0pIZSx4.js";const f=JSON.parse('{"title":"COCONUT online - Similarity Structure","description":"","frontmatter":{},"headers":[],"relativePath":"similarity-search.md","filePath":"similarity-search.md"}'),s={name:"similarity-search.md"},c=e("h1",{id:"coconut-online-similarity-structure",tabindex:"-1"},[r("COCONUT online - Similarity Structure "),e("a",{class:"header-anchor",href:"#coconut-online-similarity-structure","aria-label":'Permalink to "COCONUT online - Similarity Structure"'},"​")],-1),o=[c];function n(l,m,d,u,_,h){return i(),a("div",null,o)}const y=t(s,[["render",n]]);export{f as __pageData,y as default};
diff --git a/docs/.vitepress/dist/assets/similarity-search.md.ChwSV90O.lean.js b/docs/.vitepress/dist/assets/similarity-search.md.ChwSV90O.lean.js
new file mode 100644
index 00000000..e4dbcd7b
--- /dev/null
+++ b/docs/.vitepress/dist/assets/similarity-search.md.ChwSV90O.lean.js
@@ -0,0 +1 @@
+import{_ as t,c as a,o as i,j as e,a as r}from"./chunks/framework.D0pIZSx4.js";const f=JSON.parse('{"title":"COCONUT online - Similarity Structure","description":"","frontmatter":{},"headers":[],"relativePath":"similarity-search.md","filePath":"similarity-search.md"}'),s={name:"similarity-search.md"},c=e("h1",{id:"coconut-online-similarity-structure",tabindex:"-1"},[r("COCONUT online - Similarity Structure "),e("a",{class:"header-anchor",href:"#coconut-online-similarity-structure","aria-label":'Permalink to "COCONUT online - Similarity Structure"'},"​")],-1),o=[c];function n(l,m,d,u,_,h){return i(),a("div",null,o)}const y=t(s,[["render",n]]);export{f as __pageData,y as default};
diff --git a/docs/.vitepress/dist/assets/simple-search.md.BFPIsGX4.js b/docs/.vitepress/dist/assets/simple-search.md.l6ttnD4G.js
similarity index 96%
rename from docs/.vitepress/dist/assets/simple-search.md.BFPIsGX4.js
rename to docs/.vitepress/dist/assets/simple-search.md.l6ttnD4G.js
index 87b6b7e7..68701440 100644
--- a/docs/.vitepress/dist/assets/simple-search.md.BFPIsGX4.js
+++ b/docs/.vitepress/dist/assets/simple-search.md.l6ttnD4G.js
@@ -1 +1 @@
-import{_ as e,c as a,o as i,a1 as t}from"./chunks/framework.D_xGnxpE.js";const f=JSON.parse('{"title":"COCONUT online - Simple search","description":"","frontmatter":{},"headers":[],"relativePath":"simple-search.md","filePath":"simple-search.md"}'),n={name:"simple-search.md"},r=t('

COCONUT online - Simple search

Molecule name

  • The search engine is capable of recognizing any commonly used Natural Product name entered by the user. These names can be expressed as IUPAC names, trivial names, or synonyms. The search function is specifically designed to capture and identify a comprehensive list of compounds that include the text provided by the user in their search entry.

InChI-IUPAC International Chemical Identifier (InChI)

  • The InChI identifier serves as a widely adopted non-proprietary identifier employed in electronic data sources for the purpose of identifying chemical substances. It provides a comprehensive depiction of chemical structures, encompassing atomic connectivity, tautomeric states, isotopes, stereochemistry, and electronic charge. As a result, it generates a distinctive sequence of machine-readable characters specific to the given molecule. When an InChI is inputted, the search process retrieves a singular compound possessing all the necessary characteristics.

InChI key

  • Chemical compounds can be conveniently searched online using the InChIKey, which is a shortened version of the InChI (International Chemical Identifier). The InChIKey consists of 25 characters, with the initial 14 characters representing a hash of the connectivity information derived from the complete InChI string. The subsequent 8 characters form a hash of the remaining layers of the InChI. These are followed by a character denoting the version of InChI employed and, lastly, a checksum character. Upon entering an InChIKey, the software retrieves the corresponding specific compound associated with that key.

Molecular formula

  • The molecular formula reveals the specific atoms and their quantities within a single molecule of a given chemical compound. However, it does not convey any details about the molecule's structure. It's important to note that compounds sharing the same molecular formula can exhibit distinct structures and properties. As a result, inputting a molecular formula in the search bar will generate a list of compounds that encompass the specified atoms and their respective quantities within each molecule.

COCONUT ID

  • It is feasible to perform a targeted search on our website, specifically for natural products stored in our database, using their distinct identification numbers.
',11),o=[r];function s(c,l,h,u,d,m){return i(),a("div",null,o)}const I=e(n,[["render",s]]);export{f as __pageData,I as default}; +import{_ as e,c as a,o as i,a1 as t}from"./chunks/framework.D0pIZSx4.js";const f=JSON.parse('{"title":"COCONUT online - Simple search","description":"","frontmatter":{},"headers":[],"relativePath":"simple-search.md","filePath":"simple-search.md"}'),n={name:"simple-search.md"},r=t('

COCONUT online - Simple search

Molecule name

  • The search engine is capable of recognizing any commonly used Natural Product name entered by the user. These names can be expressed as IUPAC names, trivial names, or synonyms. The search function is specifically designed to capture and identify a comprehensive list of compounds that include the text provided by the user in their search entry.

InChI-IUPAC International Chemical Identifier (InChI)

  • The InChI identifier serves as a widely adopted non-proprietary identifier employed in electronic data sources for the purpose of identifying chemical substances. It provides a comprehensive depiction of chemical structures, encompassing atomic connectivity, tautomeric states, isotopes, stereochemistry, and electronic charge. As a result, it generates a distinctive sequence of machine-readable characters specific to the given molecule. When an InChI is inputted, the search process retrieves a singular compound possessing all the necessary characteristics.

InChI key

  • Chemical compounds can be conveniently searched online using the InChIKey, which is a shortened version of the InChI (International Chemical Identifier). The InChIKey consists of 25 characters, with the initial 14 characters representing a hash of the connectivity information derived from the complete InChI string. The subsequent 8 characters form a hash of the remaining layers of the InChI. These are followed by a character denoting the version of InChI employed and, lastly, a checksum character. Upon entering an InChIKey, the software retrieves the corresponding specific compound associated with that key.

Molecular formula

  • The molecular formula reveals the specific atoms and their quantities within a single molecule of a given chemical compound. However, it does not convey any details about the molecule's structure. It's important to note that compounds sharing the same molecular formula can exhibit distinct structures and properties. As a result, inputting a molecular formula in the search bar will generate a list of compounds that encompass the specified atoms and their respective quantities within each molecule.

COCONUT ID

  • It is feasible to perform a targeted search on our website, specifically for natural products stored in our database, using their distinct identification numbers.
',11),o=[r];function s(c,l,h,u,d,m){return i(),a("div",null,o)}const I=e(n,[["render",s]]);export{f as __pageData,I as default}; diff --git a/docs/.vitepress/dist/assets/simple-search.md.BFPIsGX4.lean.js b/docs/.vitepress/dist/assets/simple-search.md.l6ttnD4G.lean.js similarity index 68% rename from docs/.vitepress/dist/assets/simple-search.md.BFPIsGX4.lean.js rename to docs/.vitepress/dist/assets/simple-search.md.l6ttnD4G.lean.js index 696663f0..5aabed4a 100644 --- a/docs/.vitepress/dist/assets/simple-search.md.BFPIsGX4.lean.js +++ b/docs/.vitepress/dist/assets/simple-search.md.l6ttnD4G.lean.js @@ -1 +1 @@ -import{_ as e,c as a,o as i,a1 as t}from"./chunks/framework.D_xGnxpE.js";const f=JSON.parse('{"title":"COCONUT online - Simple search","description":"","frontmatter":{},"headers":[],"relativePath":"simple-search.md","filePath":"simple-search.md"}'),n={name:"simple-search.md"},r=t("",11),o=[r];function s(c,l,h,u,d,m){return i(),a("div",null,o)}const I=e(n,[["render",s]]);export{f as __pageData,I as default}; +import{_ as e,c as a,o as i,a1 as t}from"./chunks/framework.D0pIZSx4.js";const f=JSON.parse('{"title":"COCONUT online - Simple search","description":"","frontmatter":{},"headers":[],"relativePath":"simple-search.md","filePath":"simple-search.md"}'),n={name:"simple-search.md"},r=t("",11),o=[r];function s(c,l,h,u,d,m){return i(),a("div",null,o)}const I=e(n,[["render",s]]);export{f as __pageData,I as default}; diff --git a/docs/.vitepress/dist/assets/single-submission.md.C5MtaGQH.js b/docs/.vitepress/dist/assets/single-submission.md.C5MtaGQH.js new file mode 100644 index 00000000..a4afb0ac --- /dev/null +++ b/docs/.vitepress/dist/assets/single-submission.md.C5MtaGQH.js @@ -0,0 +1 @@ +import{_ as t,c as e,o,a1 as n}from"./chunks/framework.D0pIZSx4.js";const h=JSON.parse('{"title":"Submitting a Single Compound","description":"","frontmatter":{},"headers":[],"relativePath":"single-submission.md","filePath":"single-submission.md"}'),i={name:"single-submission.md"},l=n('

Submitting a Single Compound

To submit a compound to the COCONUT platform, please follow the steps outlined below:

Steps to Submit a Compound

  1. Login to your COCONUT account.

  2. Navigate to the Molecules Section:

    • In the left pane, select "Molecules."
  3. Initiate the Submission Process:

    • On the Molecules page, click the "New Molecule" button at the top right.
  4. Complete the "Create Molecule" Form:

    • Name: Enter the trivial name reported for the molecule in the original publication.

      Example: Betamethasone-17-valerate

    • Identifier: This is auto-generated by the COCONUT platform. No need to fill this field.

    • IUPAC Name: Provide the systematic standardized IUPAC name (International Union of Pure and Applied Chemistry name) generated according to IUPAC regulations.

      Example: [9-fluoro-11-hydroxy-17-(2-hydroxyacetyl)-10,13,16-trimethyl-3-oxo-6,7,8,11,12,14,15,16-octahydrocyclopenta[a]phenanthren-17-yl] pentanoate

    • Standard InChI: Enter the standard InChI (International Chemical Identifier) generated using cheminformatics software.

      Example: InChI=1S/C27H37FO6/c1-5-6-7-23(33)34-27(22(32)15-29)16(2)12-20-19-9-8-17-13-18(30)10-11-24(17,3)26(19,28)21(31)14-25(20,27)4/h10-11,13,16,19-21,29,31H,5-9,12,14-15H2,1-4H3

    • Standard InChI Key: Provide the standard InChI Key derived from the standard InChI.

      Example: SNHRLVCMMWUAJD-UHFFFAOYSA-N

    • Canonical SMILES: Enter the canonical SMILES (Simplified Molecular Input Line Entry System) representation of the molecule.

      Example: CCCCC(=O)OC1(C(=O)CO)C(C)CC2C3CCC4=CC(=O)C=CC4(C)C3(F)C(O)CC21C

    • Murcko Framework: This field will be auto-generated by the system and defines the core structure of the molecule.

    • Synonyms: Provide other names or identifiers by which the molecule is known.

      Example: Betamethasone 17 Valerate, SCHEMBL221479, .beta.-Methasone 17-valerate, SNHRLVCMMWUAJD-UHFFFAOYSA-N, STL451052, AKOS037482517, LS-15203, 9-Fluoro-11, 21-dihydroxy-16-methyl-3, 20-dioxopregna-1, 4-dien-17-yl pentanoate

  5. Submit the Form:

    • Click "Create" to submit your compound.
    • If you have another compound to submit, click "Create & create another."
',4),r=[l];function a(s,u,p,c,m,d){return o(),e("div",null,r)}const C=t(i,[["render",a]]);export{h as __pageData,C as default}; diff --git a/docs/.vitepress/dist/assets/single-submission.md.C5MtaGQH.lean.js b/docs/.vitepress/dist/assets/single-submission.md.C5MtaGQH.lean.js new file mode 100644 index 00000000..2d91e599 --- /dev/null +++ b/docs/.vitepress/dist/assets/single-submission.md.C5MtaGQH.lean.js @@ -0,0 +1 @@ +import{_ as t,c as e,o,a1 as n}from"./chunks/framework.D0pIZSx4.js";const h=JSON.parse('{"title":"Submitting a Single Compound","description":"","frontmatter":{},"headers":[],"relativePath":"single-submission.md","filePath":"single-submission.md"}'),i={name:"single-submission.md"},l=n("",4),r=[l];function a(s,u,p,c,m,d){return o(),e("div",null,r)}const C=t(i,[["render",a]]);export{h as __pageData,C as default}; diff --git a/docs/.vitepress/dist/assets/single-submission.md.Ct5SXe7T.lean.js b/docs/.vitepress/dist/assets/single-submission.md.Ct5SXe7T.lean.js deleted file mode 100644 index a32b4102..00000000 --- a/docs/.vitepress/dist/assets/single-submission.md.Ct5SXe7T.lean.js +++ /dev/null @@ -1 +0,0 @@ -import{_ as s,c as a,o as i,a1 as n}from"./chunks/framework.D_xGnxpE.js";const E=JSON.parse('{"title":"Markdown Extension Examples","description":"","frontmatter":{},"headers":[],"relativePath":"single-submission.md","filePath":"single-submission.md"}'),e={name:"single-submission.md"},t=n("",19),l=[t];function p(h,o,r,d,c,k){return i(),a("div",null,l)}const u=s(e,[["render",p]]);export{E as __pageData,u as default}; diff --git a/docs/.vitepress/dist/assets/sources.md.BoxPAq4F.js b/docs/.vitepress/dist/assets/sources.md.BoxPAq4F.js new file mode 100644 index 00000000..7439d79a --- /dev/null +++ b/docs/.vitepress/dist/assets/sources.md.BoxPAq4F.js @@ -0,0 +1 @@ +import{_ as t,c as e,o as a,a1 as r}from"./chunks/framework.D0pIZSx4.js";const p=JSON.parse('{"title":"COCONUT online - Sources","description":"","frontmatter":{},"headers":[],"relativePath":"sources.md","filePath":"sources.md"}'),n={name:"sources.md"},i=r('

COCONUT online - Sources

COCONUT database summary stats:

Total MoleculesTotal CollectionsUnique OrganismsCitations Mapped
1,080,8766357,62624,272

Public databases and primary sources from which COCONUT was meticulously assembled:

S.NoDatabase nameEntries integrated in COCONUTLatest resource URL
1AfroCancer390Fidele Ntie-Kang, Justina Ngozi Nwodo, Akachukwu Ibezim, Conrad Veranso Simoben, Berin Karaman, Valery Fuh Ngwa, Wolfgang Sippl, Michael Umale Adikwu, and Luc Meva’a Mbaze Journal of Chemical Information and Modeling 2014 54 (9), 2433-2450 https://doi.org/10.1021/ci5003697
2AfroDB953Fidele Ntie-Kang ,Denis Zofou,Smith B. Babiaka,Rolande Meudom,Michael Scharfe,Lydia L. Lifongo,James A. Mbah,Luc Meva’a Mbaze,Wolfgang Sippl,Simon M. N. Efange https://doi.org/10.1371/journal.pone.0078085
3AfroMalariaDB265Onguéné, P.A., Ntie-Kang, F., Mbah, J.A. et al. The potential of anti-malarial compounds derived from African medicinal plants, part III: an in silico evaluation of drug metabolism and pharmacokinetics profiling. Org Med Chem Lett 4, 6 (2014). https://doi.org/10.1186/s13588-014-0006-x
4AnalytiCon Discovery NPs5,147Natural products are a sebset of AnalytiCon Discovery NPs https://ac-discovery.com/screening-libraries/
5BIOFACQUIM605Pilón-Jiménez, B.A.; Saldívar-González, F.I.; Díaz-Eufracio, B.I.; Medina-Franco, J.L. BIOFACQUIM: A Mexican Compound Database of Natural Products. Biomolecules 2019, 9, 31. https://doi.org/10.3390/biom9010031
6BitterDB685Ayana Dagan-Wiener, Antonella Di Pizio, Ido Nissim, Malkeet S Bahia, Nitzan Dubovski, Eitan Margulis, Masha Y Niv, BitterDB: taste ligands and receptors database in 2019, Nucleic Acids Research, Volume 47, Issue D1, 08 January 2019, Pages D1179–D1185, https://doi.org/10.1093/nar/gky974
7Carotenoids Database1,195Junko Yabuzaki, Carotenoids Database: structures, chemical fingerprints and distribution among organisms, Database, Volume 2017, 2017, bax004, https://doi.org/10.1093/database/bax004
8ChEBI NPs16,215Janna Hastings, Paula de Matos, Adriano Dekker, Marcus Ennis, Bhavana Harsha, Namrata Kale, Venkatesh Muthukrishnan, Gareth Owen, Steve Turner, Mark Williams, Christoph Steinbeck, The ChEBI reference database and ontology for biologically relevant chemistry: enhancements for 2013, Nucleic Acids Research, Volume 41, Issue D1, 1 January 2013, Pages D456–D463, https://doi.org/10.1093/nar/gks1146
9ChEMBL NPs1,910Anna Gaulton, Anne Hersey, Michał Nowotka, A. Patrícia Bento, Jon Chambers, David Mendez, Prudence Mutowo, Francis Atkinson, Louisa J. Bellis, Elena Cibrián-Uhalte, Mark Davies, Nathan Dedman, Anneli Karlsson, María Paula Magariños, John P. Overington, George Papadatos, Ines Smit, Andrew R. Leach, The ChEMBL database in 2017, Nucleic Acids Research, Volume 45, Issue D1, January 2017, Pages D945–D954, https://doi.org/10.1093/nar/gkw1074
10ChemSpider NPs9,740Harry E. Pence and Antony Williams Journal of Chemical Education 2010 87 (11), 1123-1124 https://doi.org/10.1021/ed100697w
11CMAUP (cCollective molecular activities of useful plants)47,593Xian Zeng, Peng Zhang, Yali Wang, Chu Qin, Shangying Chen, Weidong He, Lin Tao, Ying Tan, Dan Gao, Bohua Wang, Zhe Chen, Weiping Chen, Yu Yang Jiang, Yu Zong Chen, CMAUP: a database of collective molecular activities of useful plants, Nucleic Acids Research, Volume 47, Issue D1, 08 January 2019, Pages D1118–D1127, https://doi.org/10.1093/nar/gky965
12ConMedNP3,111DOI https://doi.org/10.1039/C3RA43754J
13ETM (Ethiopian Traditional Medicine) DB1,798Bultum, L.E., Woyessa, A.M. & Lee, D. ETM-DB: integrated Ethiopian traditional herbal medicine and phytochemicals database. BMC Complement Altern Med 19, 212 (2019). https://doi.org/10.1186/s12906-019-2634-1
14Exposome-explorer434Vanessa Neveu, Alice Moussy, Héloïse Rouaix, Roland Wedekind, Allison Pon, Craig Knox, David S. Wishart, Augustin Scalbert, Exposome-Explorer: a manually-curated database on biomarkers of exposure to dietary and environmental factors, Nucleic Acids Research, Volume 45, Issue D1, January 2017, Pages D979–D984, https://doi.org/10.1093/nar/gkw980
15FoodDB70,385Natural products are a sebset of FoodDB https://foodb.ca/
16GNPS (Global Natural Products Social Molecular Networking)11,103Wang, M., Carver, J., Phelan, V. et al. Sharing and community curation of mass spectrometry data with Global Natural Products Social Molecular Networking. Nat Biotechnol 34, 828–837 (2016). https://doi.org/10.1038/nbt.3597
17HIM (Herbal Ingredients in-vivo Metabolism database)1,259Kang, H., Tang, K., Liu, Q. et al. HIM-herbal ingredients in-vivo metabolism database. J Cheminform 5, 28 (2013). https://doi.org/10.1186/1758-2946-5-28
18HIT (Herbal Ingredients Targets)530Hao Ye, Li Ye, Hong Kang, Duanfeng Zhang, Lin Tao, Kailin Tang, Xueping Liu, Ruixin Zhu, Qi Liu, Y. Z. Chen, Yixue Li, Zhiwei Cao, HIT: linking herbal active ingredients to targets, Nucleic Acids Research, Volume 39, Issue suppl_1, 1 January 2011, Pages D1055–D1059, https://doi.org/10.1093/nar/gkq1165
19Indofine Chemical Company46Natural products are a sebset of Indofine Chemical Company https://indofinechemical.com/
20InflamNat664Ruihan Zhang, Jing Lin, Yan Zou, Xing-Jie Zhang, and Wei-Lie Xiao Journal of Chemical Information and Modeling 2019 59 (1), 66-73 DOI: 10.1021/acs.jcim.8b00560 https://doi.org/10.1021/acs.jcim.8b00560
21InPACdb124Vetrivel et al., Bioinformation 4(2): 71-74 (2009) https://www.bioinformation.net/004/001500042009.htm
22InterBioScreen Ltd68,372Natural products are a sebset of InterBioScreen Ltd https://www.ibscreen.com/natural-compounds
23KNApSaCK48,241Kensuke Nakamura, Naoki Shimura, Yuuki Otabe, Aki Hirai-Morita, Yukiko Nakamura, Naoaki Ono, Md Altaf Ul-Amin, Shigehiko Kanaya, KNApSAcK-3D: A Three-Dimensional Structure Database of Plant Metabolites, Plant and Cell Physiology, Volume 54, Issue 2, February 2013, Page e4, https://doi.org/10.1093/pcp/pcs186
24Lichen Database1,718Olivier-Jimenez, D., Chollet-Krugler, M., Rondeau, D. et al. A database of high-resolution MS/MS spectra for lichen metabolites. Sci Data 6, 294 (2019). https://doi.org/10.1038/s41597-019-0305-1
25Marine Natural Products14,220Gentile, D.; Patamia, V.; Scala, A.; Sciortino, M.T.; Piperno, A.; Rescifina, A. Putative Inhibitors of SARS-CoV-2 Main Protease from A Library of Marine Natural Products: A Virtual Screening and Molecular Modeling Study. Mar. Drugs 2020, 18, 225. https://doi.org/10.3390/md18040225
26Mitishamba database1,095Derese, Solomon., Ndakala, Albert .,Rogo, Michael., Maynim, cholastica and Oyim, James (2015). Mitishamba database: a web based in silico database of natural products from Kenya plants. The 16th symposium of the natural products reseach network for eastern and central Africa (NAPRECA) 31st August to 3rd September 2015 Arusha, Tanzania http://erepository.uonbi.ac.ke/handle/11295/92273
27NANPDB (Natural Products from Northern African Sources)7,482Fidele Ntie-Kang, Kiran K. Telukunta, Kersten Döring, Conrad V. Simoben, Aurélien F. A. Moumbock, Yvette I. Malange, Leonel E. Njume, Joseph N. Yong, Wolfgang Sippl, and Stefan Günther Journal of Natural Products 2017 80 (7), 2067-2076 DOI: 10.1021/acs.jnatprod.7b00283 https://doi.org/10.1021/acs.jnatprod.7b00283
28NCI DTP data419Natural products are a sebset of NCI DTP data https://wiki.nci.nih.gov/display/NCIDTPdata/Compound+Sets
29NPACT1,572Manu Mangal, Parul Sagar, Harinder Singh, Gajendra P. S. Raghava, Subhash M. Agarwal, NPACT: Naturally Occurring Plant-based Anti-cancer Compound-Activity-Target database, Nucleic Acids Research, Volume 41, Issue D1, 1 January 2013, Pages D1124–D1129, https://doi.org/10.1093/nar/gks1047
30NPASS96,173Xian Zeng, Peng Zhang, Weidong He, Chu Qin, Shangying Chen, Lin Tao, Yali Wang, Ying Tan, Dan Gao, Bohua Wang, Zhe Chen, Weiping Chen, Yu Yang Jiang, Yu Zong Chen, NPASS: natural product activity and species source database for natural product research, discovery and tool development, Nucleic Acids Research, Volume 46, Issue D1, 4 January 2018, Pages D1217–D1222, https://doi.org/10.1093/nar/gkx1026
31NPAtlas36,395Jeffrey A. van Santen, Grégoire Jacob, Amrit Leen Singh, Victor Aniebok, Marcy J. Balunas, Derek Bunsko, Fausto Carnevale Neto, Laia Castaño-Espriu, Chen Chang, Trevor N. Clark, Jessica L. Cleary Little, David A. Delgadillo, Pieter C. Dorrestein, Katherine R. Duncan, Joseph M. Egan, Melissa M. Galey, F.P. Jake Haeckl, Alex Hua, Alison H. Hughes, Dasha Iskakova, Aswad Khadilkar, Jung-Ho Lee, Sanghoon Lee, Nicole LeGrow, Dennis Y. Liu, Jocelyn M. Macho, Catherine S. McCaughey, Marnix H. Medema, Ram P. Neupane, Timothy J. O’Donnell, Jasmine S. Paula, Laura M. Sanchez, Anam F. Shaikh, Sylvia Soldatou, Barbara R. Terlouw, Tuan Anh Tran, Mercia Valentine, Justin J. J. van der Hooft, Duy A. Vo, Mingxun Wang, Darryl Wilson, Katherine E. Zink, and Roger G. Linington ACS Central Science 2019 5 (11), 1824-1833 DOI: 10.1021/acscentsci.9b00806 https://doi.org/10.1021/acscentsci.9b00806
32NPCARE1,446Choi, H., Cho, S.Y., Pak, H.J. et al. NPCARE: database of natural products and fractional extracts for cancer regulation. J Cheminform 9, 2 (2017). https://doi.org/10.1186/s13321-016-0188-5
33NPEdia49,597Takeshi Tomiki, Tamio Saito, Masashi Ueki, Hideaki Konno, Takeo Asaoka, Ryuichiro Suzuki, Masakazu Uramoto, Hideaki Kakeya, Hiroyuki Osada, [Special Issue: Fact Databases and Freewares] RIKEN Natural Products Encyclopedia (RIKEN NPEdia),a Chemical Database of RIKEN Natural Products Depository (RIKEN NPDepo), Journal of Computer Aided Chemistry, 2006, Volume 7, Pages 157-162, Released on J-STAGE September 15, 2006, Online ISSN 1345-8647, https://doi.org/10.2751/jcac.7.157
34NuBBEDB2,215Pilon, A.C., Valli, M., Dametto, A.C. et al. NuBBEDB: an updated database to uncover chemical and biological information from Brazilian biodiversity. Sci Rep 7, 7215 (2017). https://doi.org/10.1038/s41598-017-07451-x
35p-ANAPL533Fidele Ntie-Kang ,Pascal Amoa Onguéné ,Ghislain W. Fotso,Kerstin Andrae-Marobela ,Merhatibeb Bezabih,Jean Claude Ndom,Bonaventure T. Ngadjui,Abiodun O. Ogundaini,Berhanu M. Abegaz,Luc Mbaze Meva’a Published: March 5, 2014 https://doi.org/10.1371/journal.pone.0090655
36Phenol-explorer742Joseph A. Rothwell, Jara Perez-Jimenez, Vanessa Neveu, Alexander Medina-Remón, Nouha M'Hiri, Paula García-Lobato, Claudine Manach, Craig Knox, Roman Eisner, David S. Wishart, Augustin Scalbert, Phenol-Explorer 3.0: a major update of the Phenol-Explorer database to incorporate data on the effects of food processing on polyphenol content, Database, Volume 2013, 2013, bat070, https://doi.org/10.1093/database/bat070
37PubChem NPs3,533Natural products are a sebset of PubChem NPs https://pubchem.ncbi.nlm.nih.gov/substance/251960601
38ReSpect4,854Yuji Sawada, Ryo Nakabayashi, Yutaka Yamada, Makoto Suzuki, Muneo Sato, Akane Sakata, Kenji Akiyama, Tetsuya Sakurai, Fumio Matsuda, Toshio Aoki, Masami Yokota Hirai, Kazuki Saito, RIKEN tandem mass spectral database (ReSpect) for phytochemicals: A plant-specific MS/MS-based data resource and database, Phytochemistry, Volume 82, 2012, Pages 38-45, ISSN 0031-9422, https://doi.org/10.1016/j.phytochem.2012.07.007.
39SANCDB995Hatherley, R., Brown, D.K., Musyoka, T.M. et al. SANCDB: a South African natural compound database. J Cheminform 7, 29 (2015). https://doi.org/10.1186/s13321-015-0080-8
40Seaweed Metabolite Database (SWMD)1,075Davis & Vasanthi, Bioinformation 5(8): 361-364 (2011) https://www.bioinformation.net/005/007900052011.htm
41Specs Natural Products744Natural products are a sebset of Specs Natural Products https://www.specs.net/index.php
42Spektraris NMR248Justin T. Fischedick, Sean R. Johnson, Raymond E.B. Ketchum, Rodney B. Croteau, B. Markus Lange, NMR spectroscopic search module for Spektraris, an online resource for plant natural product identification – Taxane diterpenoids from Taxus×media cell suspension cultures as a case study, Phytochemistry, Volume 113, 2015, Pages 87-95, ISSN 0031-9422, https://doi.org/10.1016/j.phytochem.2014.11.020.
43StreptomeDB6,522Aurélien F A Moumbock, Mingjie Gao, Ammar Qaseem, Jianyu Li, Pascal A Kirchner, Bakoh Ndingkokhar, Boris D Bekono, Conrad V Simoben, Smith B Babiaka, Yvette I Malange, Florian Sauter, Paul Zierep, Fidele Ntie-Kang, Stefan Günther, StreptomeDB 3.0: an updated compendium of streptomycetes natural products, Nucleic Acids Research, Volume 49, Issue D1, 8 January 2021, Pages D600–D604, https://doi.org/10.1093/nar/gkaa868
44Super Natural II325,149Priyanka Banerjee, Jevgeni Erehman, Björn-Oliver Gohlke, Thomas Wilhelm, Robert Preissner, Mathias Dunkel, Super Natural II—a database of natural products, Nucleic Acids Research, Volume 43, Issue D1, 28 January 2015, Pages D935–D939, https://doi.org/10.1093/nar/gku886
45TCMDB@Taiwan (Traditional Chinese Medicine database)58,401Calvin Yu-Chian Chen Published: January 6, 2011 https://doi.org/10.1371/journal.pone.0015939
46TCMID (Traditional Chinese Medicine Integrated Database)32,038Xue R, Fang Z, Zhang M, Yi Z, Wen C, Shi T. TCMID: Traditional Chinese Medicine integrative database for herb molecular mechanism analysis. Nucleic Acids Res. 2013 Jan;41(Database issue):D1089-95. doi: 10.1093/nar/gks1100. Epub 2012 Nov 29. PMID: 23203875; PMCID: PMC3531123.
47TIPdb (database of Taiwan indigenous plants)8,838Chun-Wei Tung, Ying-Chi Lin, Hsun-Shuo Chang, Chia-Chi Wang, Ih-Sheng Chen, Jhao-Liang Jheng, Jih-Heng Li, TIPdb-3D: the three-dimensional structure database of phytochemicals from Taiwan indigenous plants, Database, Volume 2014, 2014, bau055, https://doi.org/10.1093/database/bau055
48TPPT (Toxic Plants–PhytoToxins)1,561Barbara F. Günthardt, Juliane Hollender, Konrad Hungerbühler, Martin Scheringer, and Thomas D. Bucheli Journal of Agricultural and Food Chemistry 2018 66 (29), 7577-7588 DOI: 10.1021/acs.jafc.8b01639 https://pubs.acs.org/doi/10.1021/acs.jafc.8b01639
49UEFS (Natural Products Databse of the UEFS)503Natural products are a sebset of UEFS (Natural Products Databse of the UEFS) https://zinc12.docking.org/catalogs/uefsnp
50UNPD (Universal Natural Products Database)213,210Jiangyong Gu,Yuanshen Gui,Lirong Chen ,Gu Yuan,Hui-Zhe Lu,Xiaojie Xu Published: April 25, 2013 https://doi.org/10.1371/journal.pone.0062839
51VietHerb5,150Thanh-Hoang Nguyen-Vo, Tri Le, Duy Pham, Tri Nguyen, Phuc Le, An Nguyen, Thanh Nguyen, Thien-Ngan Nguyen, Vu Nguyen, Hai Do, Khang Trinh, Hai Trong Duong, and Ly Le Journal of Chemical Information and Modeling 2019 59 (1), 1-9 DOI: 10.1021/acs.jcim.8b00399 https://pubs.acs.org/doi/10.1021/acs.jcim.8b00399
52ZINC NP85,201Teague Sterling and John J. Irwin Journal of Chemical Information and Modeling 2015 55 (11), 2324-2337 DOI: 10.1021/acs.jcim.5b00559 https://doi.org/10.1021/acs.jcim.5b00559
53CyanoMetNP2,113Jones MR, Pinto E, Torres MA, Dörr F, Mazur-Marzec H, Szubert K, Tartaglione L, Dell'Aversano C, Miles CO, Beach DG, McCarron P, Sivonen K, Fewer DP, Jokela J, Janssen EM. CyanoMetDB, a comprehensive public database of secondary metabolites from cyanobacteria. Water Res. 2021 May 15;196:117017. doi: 10.1016/j.watres.2021.117017. Epub 2021 Mar 8. PMID: 33765498.
54DrugBankNP9,283Wishart DS, Feunang YD, Guo AC, Lo EJ, Marcu A, Grant JR, Sajed T, Johnson D, Li C, Sayeeda Z, Assempour N, Iynkkaran I, Liu Y, Maciejewski A, Gale N, Wilson A, Chin L, Cummings R, Le D, Pon A, Knox C, Wilson M. DrugBank 5.0: a major update to the DrugBank database for 2018. Nucleic Acids Res. 2017 Nov 8. doi: 10.1093/nar/gkx1037.
55Australian natural products21,591Saubern, Simon; Shmaylov, Alex; Locock, Katherine; McGilvery, Don; Collins, David (2023): Australian Natural Products dataset. v5. CSIRO. Data Collection. https://doi.org/10.25919/v8wq-mr81
56EMNPD6,145Xu, HQ., Xiao, H., Bu, JH. et al. EMNPD: a comprehensive endophytic microorganism natural products database for prompt the discovery of new bioactive substances. J Cheminform 15, 115 (2023). https://doi.org/10.1186/s13321-023-00779-9
57ANPDB7,4821) Pharmacoinformatic investigation of medicinal plants from East Africa Conrad V. Simoben, Ammar Qaseem, Aurélien F. A. Moumbock, Kiran K. Telukunta, Stefan Günther, Wolfgang Sippl, and Fidele Ntie-Kang Molecular Informatics 2020 DOI: 10.1002/minf.202000163 https://doi.org/10.1002/minf.202000163 2) NANPDB: A Resource for Natural Products from Northern African Sources Fidele Ntie-Kang, Kiran K. Telukunta, Kersten Döring, Conrad V. Simoben, Aurélien F. A. Moumbock, Yvette I. Malange, Leonel E. Njume, Joseph N. Yong, Wolfgang Sippl, and Stefan Günther Journal of Natural Products 2017 DOI: 10.1021/acs.jnatprod.7b00283 https://pubs.acs.org/doi/10.1021/acs.jnatprod.7b00283
58Phyto4Health3,175Nikita Ionov, Dmitry Druzhilovskiy, Dmitry Filimonov, and Vladimir Poroikov Journal of Chemical Information and Modeling 2023 63 (7), 1847-1851 DOI: 10.1021/acs.jcim.2c01567 https://pubs.acs.org/doi/10.1021/acs.jcim.2c01567
59Piella DB65Natural products are a sebset of Piella DB https://micro.biol.ethz.ch/research/piel.html
60Watermelon1,526Natural products are a sebset of Watermelon https://watermelon.naturalproducts.net/
61Latin America dataset12,959Gómez-García A, Jiménez DAA, Zamora WJ, Barazorda-Ccahuana HL, Chávez-Fumagalli MÁ, Valli M, Andricopulo AD, Bolzani VDS, Olmedo DA, Solís PN, Núñez MJ, Rodríguez Pérez JR, Valencia Sánchez HA, Cortés Hernández HF, Medina-Franco JL. Navigating the Chemical Space and Chemical Multiverse of a Unified Latin American Natural Product Database: LANaPDB. Pharmaceuticals (Basel). 2023 Sep 30;16(10):1388. doi: 10.3390/ph16101388. PMID: 37895859; PMCID: PMC10609821.
62CMNPD31,561Chuanyu Lyu, Tong Chen, Bo Qiang, Ningfeng Liu, Heyu Wang, Liangren Zhang, Zhenming Liu, CMNPD: a comprehensive marine natural products database towards facilitating drug discovery from the ocean, Nucleic Acids Research, Volume 49, Issue D1, 8 January 2021, Pages D509–D515, https://doi.org/10.1093/nar/gkaa763
63Supernatural31,203,509Natural products are a sebset of Supernatural3 https://academic.oup.com/nar/article/51/D1/D654/6833249
Total Entries2,551,803
',5),l=[i];function s(o,d,c,g,h,u){return a(),e("div",null,l)}const m=t(n,[["render",s]]);export{p as __pageData,m as default}; diff --git a/docs/.vitepress/dist/assets/sources.md.BoxPAq4F.lean.js b/docs/.vitepress/dist/assets/sources.md.BoxPAq4F.lean.js new file mode 100644 index 00000000..eb250190 --- /dev/null +++ b/docs/.vitepress/dist/assets/sources.md.BoxPAq4F.lean.js @@ -0,0 +1 @@ +import{_ as t,c as e,o as a,a1 as r}from"./chunks/framework.D0pIZSx4.js";const p=JSON.parse('{"title":"COCONUT online - Sources","description":"","frontmatter":{},"headers":[],"relativePath":"sources.md","filePath":"sources.md"}'),n={name:"sources.md"},i=r("",5),l=[i];function s(o,d,c,g,h,u){return a(),e("div",null,l)}const m=t(n,[["render",s]]);export{p as __pageData,m as default}; diff --git a/docs/.vitepress/dist/assets/sources.md.CcFcUxT0.js b/docs/.vitepress/dist/assets/sources.md.CcFcUxT0.js deleted file mode 100644 index 5812ed3d..00000000 --- a/docs/.vitepress/dist/assets/sources.md.CcFcUxT0.js +++ /dev/null @@ -1 +0,0 @@ -import{_ as t,c as a,o as e,a1 as r}from"./chunks/framework.D_xGnxpE.js";const m=JSON.parse('{"title":"COCONUT online - Sources","description":"","frontmatter":{},"headers":[],"relativePath":"sources.md","filePath":"sources.md"}'),o={name:"sources.md"},d=r('

COCONUT online - Sources

Public databases and primary sources from which COCONUT was meticulously assembled.

Database nameEntries integrated in COCONUTLatest resource URL
AfroCancer365Ntie-Kang F, Nwodo JN, Ibezim A, Simoben CV, Karaman B, Ngwa VF (2014) Molecular modeling of potential anticancer agents from African medicinal plants. J Chem Inf Model 54:2433–2450. https://doi.org/10.1021/ci5003697
AfroDB874Ntie-Kang F, Zofou D, Babiaka SB, Meudom R, Scharfe M, Lifongo LL (2013) AfroDb: a select highly potent and diverse natural product library from African medicinal plants. PLoS ONE 8:e78085
AfroMalariaDB252Onguéné PA, Ntie-Kang F, Mbah JA, Lifongo LL, Ndom JC, Sippl W (2014) The potential of anti-malarial compounds derived from African medicinal plants, part III: an in silico evaluation of drug metabolism and pharmacokinetics profiling. Org Med Chem Lett 4:6. https://doi.org/10.1186/s13588-014-0006-x
AnalytiCon Discovery NPs4908AnalytiCon Discovery, Screening Libraries. In: AnalytiCon Discovery. https://ac-discovery.com/screening-libraries/
BIOFACQUIM400Pilón-Jiménez BA, Saldívar-González FI, Díaz-Eufracio BI, Medina-Franco JL (2019) BIOFACQUIM: a Mexican compound database of natural products. Biomolecules 9:31. https://doi.org/10.3390/biom9010031
BitterDB625Dagan-Wiener A, Di Pizio A, Nissim I, Bahia MS, Dubovski N, Margulis E (2019) BitterDB: taste ligands and receptors database in 2019. Nucleic Acids Res 47:D1179–D1185. https://doi.org/10.1093/nar/gky974
Carotenoids Database986Yabuzaki J (2017) Carotenoids Database: structures, chemical fingerprints and distribution among organisms. Database J Biol Databases Curation. https://doi.org/10.1093/database/bax004
ChEBI NPs14603ChemAxon (2012) JChem Base was used for structure searching and chemical database access and management. http://www.chemaxon.com
ChEMBL NPs1585Schaub J, Zielesny A, Steinbeck C, Sorokina M (2020) Too sweet: cheminformatics for deglycosylation in natural products. J Cheminform 12:67. https://doi.org/10.1186/s13321-020-00467-y
ChemSpider NPs9027Pence HE, Williams A (2010) ChemSpider: an online chemical information resource. J Chem Educ 87:1123–1124. https://doi.org/10.1021/ed100697w
CMAUP (cCollective molecular activities of useful plants)20868Zeng X, Zhang P, Wang Y, Qin C, Chen S, He W (2019) CMAUP: a database of collective molecular activities of useful plants. Nucleic Acids Res 47:D1118–27
ConMedNP2504Ntie-Kang F, Amoa Onguéné P, Scharfe M, Owono LCO, Megnassan E, Meva’a Mbaze L (2014) ConMedNP: a natural product library from Central African medicinal plants for drug discovery. RSC Adv 4:409–419. https://doi.org/10.1039/c3ra43754j
ETM (Ethiopian Traditional Medicine) DB1633Bultum LE, Woyessa AM, Lee D (2019) ETM-DB: integrated Ethiopian traditional herbal medicine and phytochemicals database. BMC Complement Altern Med 19:212. https://doi.org/10.1186/s12906-019-2634-1
Exposome-explorer478Neveu V, Moussy A, Rouaix H, Wedekind R, Pon A, Knox C (2017) Exposome-Explorer: a manually-curated database on biomarkers of exposure to dietary and environmental factors. Nucleic Acids Res 45:D979–D984. https://doi.org/10.1093/nar/gkw980
FooDB22123FooDB. http://foodb.ca/
GNPS (Global Natural Products Social Molecular Networking)6740Wang M, Carver JJ, Phelan VV, Sanchez LM, Garg N, Peng Y (2016) Sharing and community curation of mass spectrometry data with Global Natural Products Social Molecular Networking. Nat Biotechnol 34:828. https://doi.org/10.1038/nbt.3597
HIM (Herbal Ingredients in-vivo Metabolism database)962Kang H, Tang K, Liu Q, Sun Y, Huang Q, Zhu R (2013) HIM-herbal ingredients in vivo metabolism database. J Cheminform 5:28. https://doi.org/10.1186/1758-2946-5-28
HIT (Herbal Ingredients Targets)470Ye H, Ye L, Kang H, Zhang D, Tao L, Tang K (2011) HIT: linking herbal active ingredients to targets. Nucleic Acids Res 39:D1055–D1059 https://doi.org/10.1093/nar/gkq1165
Indofine Chemical Company46NDOFINE Chemical Company. http://www.indofinechemical.com/Media/sdf/sdf_files.aspx
InflamNat536Zhang R, Lin J, Zou Y, Zhang X-J, Xiao W-L (2019) Chemical space and biological target network of anti-inflammatory natural products, J Chem Inf Model 59:66–73. https://doi.org/10.1021/acs.jcim.8b00560
InPACdb122Vetrivel U, Subramanian N, Pilla K (2009) InPACdb—Indian plant anticancer compounds database. Bioinformation 4:71–74
InterBioScreen Ltd67291InterBioScreen | Natural Compounds. https://www.ibscreen.com/natural-compounds
KNApSaCK44422Nakamura K, Shimura N, Otabe Y, Hirai-Morita A, Nakamura Y, Ono N (2013) KNApSAcK-3D: a three-dimensional structure database of plant metabolites. Plant Cell Physiol 54:e4–e4. https://doi.org/10.1093/pcp/pcs186
Lichen Database1453Lichen Database. In: MTBLS999: A database of high-resolution MS/MS spectra for lichen metabolites. https://www.ebi.ac.uk/metabolights/MTBLS999
Marine Natural Products11880Gentile D, Patamia V, Scala A, Sciortino MT, Piperno A, Rescifina A (2020) Putative inhibitors of SARS-CoV-2 main protease from a library of marine natural products: a virtual screening and molecular modeling study. Marine Drugs 18:225. https://doi.org/10.3390/md18040225
Mitishamba database1010Derese S, Oyim J, Rogo M, Ndakala A (2015) Mitishamba database: a web based in silico database of natural products from Kenya plants. Nairobi, University of Nairobi
NANPDB (Natural Products from Northern African Sources)3914Ntie-Kang F, Telukunta KK, Döring K, Simoben CV, Moumbock AF, Malange YI (2017) NANPDB: a resource for natural products from Northern African sources. J Nat Prod 80:2067–2076. https://doi.org/10.1021/acs.jnatprod.7b00283
NCI DTP data404Compound Sets—NCI DTP Data—National Cancer Institute—Confluence Wiki. https://wiki.nci.nih.gov/display/NCIDTPdata/Compound+Sets
NPACT1453Mangal M, Sagar P, Singh H, Raghava GPS, Agarwal SM (2013) NPACT: naturally occurring plant-based anti-cancer compound-activity-target database. Nucleic Acids Res 41:D1124–D1129. https://doi.org/10.1093/nar/gks1047
NPASS27424Zeng X, Zhang P, He W, Qin C, Chen S, Tao L (2018) NPASS: natural product activity and species source database for natural product research, discovery and tool development. Nucleic Acids Res 46:D1217–D1222. https://doi.org/10.1093/nar/gkx1026
NPAtlas23914van Santen JA, Jacob G, Singh AL, Aniebok V, Balunas MJ, Bunsko D et al (2019) The natural products atlas: an open access knowledge base for microbial natural products discovery. ACS Cent Sci 5:1824–1833. https://doi.org/10.1021/acscentsci.9b00806
NPCARE1362Choi H, Cho SY, Pak HJ, Kim Y, Choi J, Lee YJ (2017) NPCARE: database of natural products and fractional extracts for cancer regulation. J Cheminformatics 9:2. https://doi.org/10.1186/s13321-016-0188-5
NPEdia16166Tomiki T, Saito T, Ueki M, Konno H, Asaoka T, Suzuki R (2006) RIKEN natural products encyclopedia (RIKEN NPEdia), a chemical database of RIKEN natural products depository (RIKEN NPDepo). J Comput Aid Chem 7:157–162
NuBBEDB2022Pilon AC, Valli M, Dametto AC, Pinto MEF, Freire RT, Castro-Gamboa I (2017) NuBBEDB: an updated database to uncover chemical and biological information from Brazilian biodiversity. Sci Rep 7:7215. https://doi.org/10.1038/s41598-017-07451-x
p-ANAPL467Ntie-Kang F, Onguéné PA, Fotso GW, Andrae-Marobela K, Bezabih M, Ndom JC (2014) Virtualizing the p-ANAPL library: a step towards drug discovery from African medicinal plants. PLoS ONE 9:e90655. https://doi.org/10.1371/journal.pone.0090655
Phenol-explorer681Rothwell JA, Perez-Jimenez J, Neveu V, Medina-Remón A, M’Hiri N, García-Lobato P (2013) Phenol-Explorer 3.0: a major update of the Phenol-Explorer database to incorporate data on the effects of food processing on polyphenol content. Database. https://doi.org/10.1093/database/bat070
PubChem NPs2828OpenChemLib (https://github.com/cheminfo/openchemlib-js
ReSpect699Sawada Y, Nakabayashi R, Yamada Y, Suzuki M, Sato M, Sakata A (2012) RIKEN tandem mass spectral database (ReSpect) for phytochemicals: a plant-specific MS/MS-based data resource and database. Phytochemistry 82:38–45. https://doi.org/10.1016/j.phytochem.2012.07.007
SANCDB592Hatherley R, Brown DK, Musyoka TM, Penkler DL, Faya N, Lobb KA (2015) SANCDB: a South African natural compound database. J Cheminformatics 7:29. https://doi.org/10.1186/s13321-015-0080-8
Seaweed Metabolite Database (SWMD)348Davis GDJ, Vasanthi AHR (2011) Seaweed metabolite database (SWMD): a database of natural compounds from marine algae. Bioinformation 5:361–364.
Specs Natural Products745Specs. Compound management services and research compounds for the life science industry. https://www.specs.net/index.php
Spektraris NMR242Fischedick JT, Johnson SR, Ketchum REB, Croteau RB, Lange BM (2015) NMR spectroscopic search module for Spektraris, an online resource for plant natural product identification—Taxane diterpenoids from Taxus × media cell suspension cultures as a case study. Phytochemistry 113:87–95. https://doi.org/10.1016/j.phytochem.2014.11.020
StreptomeDB6058Moumbock AFA, Gao M, Qaseem A, Li J, Kirchner PA, Ndingkokhar B (2020) StreptomeDB 3.0: an updated compendium of streptomycetes natural products. Nucleic Acids Res. https://doi.org/10.1093/nar/gkaa868
Super Natural II214420Banerjee P, Erehman J, Gohlke B-O, Wilhelm T, Preissner R, Dunkel M (2015) Super Natural II—a database of natural products. Nucleic Acids Res 43:D935–D939. https://doi.org/10.1093/nar/gku886
TCMDB@Taiwan (Traditional Chinese Medicine database)50862Chen CY-C (2011) TCM Database: the World’s Largest Traditional Chinese Medicine Database for Drug Screening in silico. PLOS ONE 6:e15939. https://doi.org/10.1371/journal.pone.0015939
TCMID (Traditional Chinese Medicine Integrated Database)10552TCMID: traditional Chinese medicine integrative database for herb molecular mechanism analysis. https://www.ncbi.nlm.nih.gov/pmc/articles/PMC3531123/
TIPdb (database of Taiwan indigenous plants)7742Tung C-W, Lin Y-C, Chang H-S, Wang C-C, Chen I-S, Jheng J-L (2014) TIPdb-3D: the three-dimensional structure database of phytochemicals from Taiwan indigenous plants. Database. https://doi.org/10.1093/database/bau055
TPPT (Toxic Plants–PhytoToxins)1483ünthardt BF, Hollender J, Hungerbühler K, Scheringer M, Bucheli TD (2018) Comprehensive toxic plants-phytotoxins database and its application in assessing aquatic micropollution potential. J Agric Food Chem 66:7577–7588. https://doi.org/10.1021/acs.jafc.8b01639
UEFS (Natural Products Databse of the UEFS)481UEFS Natural Products. http://zinc12.docking.org/catalogs/uefsnp
UNPD (Universal Natural Products Database)156865Gu J, Gui Y, Chen L, Yuan G, Lu H-Z, Xu X (2013) Use of natural products as chemical library for drug discovery and network pharmacology. PLoS ONE 8:e62839. https://doi.org/10.1371/journal.pone.0062839
VietHerb4759Nguyen-Vo T-H, Le T, Pham D, Nguyen T, Le P, Nguyen A (2019) VIETHERB: a database for Vietnamese herbal species. J Chem Inf Model 59:1–9. https://doi.org/10.1021/acs.jcim.8b00399
ZINC NP67327Sterling T, Irwin JJ (2015) ZINC 15—ligand discovery for everyone. J Chem Inf Model 55:2324–2337. https://doi.org/10.1021/acs.jcim.5b00559
Manually selected molecules61x
',3),n=[d];function i(s,l,c,h,p,g){return e(),a("div",null,n)}const f=t(o,[["render",i]]);export{m as __pageData,f as default}; diff --git a/docs/.vitepress/dist/assets/sources.md.CcFcUxT0.lean.js b/docs/.vitepress/dist/assets/sources.md.CcFcUxT0.lean.js deleted file mode 100644 index 74e13087..00000000 --- a/docs/.vitepress/dist/assets/sources.md.CcFcUxT0.lean.js +++ /dev/null @@ -1 +0,0 @@ -import{_ as t,c as a,o as e,a1 as r}from"./chunks/framework.D_xGnxpE.js";const m=JSON.parse('{"title":"COCONUT online - Sources","description":"","frontmatter":{},"headers":[],"relativePath":"sources.md","filePath":"sources.md"}'),o={name:"sources.md"},d=r("",3),n=[d];function i(s,l,c,h,p,g){return e(),a("div",null,n)}const f=t(o,[["render",i]]);export{m as __pageData,f as default}; diff --git a/docs/.vitepress/dist/assets/structure-search.md.CUhR9U3h.js b/docs/.vitepress/dist/assets/structure-search.md.CUhR9U3h.js new file mode 100644 index 00000000..8a10da8d --- /dev/null +++ b/docs/.vitepress/dist/assets/structure-search.md.CUhR9U3h.js @@ -0,0 +1 @@ +import{_ as e,c as r,o as a,a1 as t}from"./chunks/framework.D0pIZSx4.js";const m=JSON.parse('{"title":"COCONUT online searches using Structures","description":"","frontmatter":{},"headers":[],"relativePath":"structure-search.md","filePath":"structure-search.md"}'),s={name:"structure-search.md"},c=t('

COCONUT online searches using Structures

Draw Structure

',4),u=[c];function i(n,o,h,l,d,_){return a(),r("div",null,u)}const b=e(s,[["render",i]]);export{m as __pageData,b as default}; diff --git a/docs/.vitepress/dist/assets/structure-search.md.CUhR9U3h.lean.js b/docs/.vitepress/dist/assets/structure-search.md.CUhR9U3h.lean.js new file mode 100644 index 00000000..455ecea7 --- /dev/null +++ b/docs/.vitepress/dist/assets/structure-search.md.CUhR9U3h.lean.js @@ -0,0 +1 @@ +import{_ as e,c as r,o as a,a1 as t}from"./chunks/framework.D0pIZSx4.js";const m=JSON.parse('{"title":"COCONUT online searches using Structures","description":"","frontmatter":{},"headers":[],"relativePath":"structure-search.md","filePath":"structure-search.md"}'),s={name:"structure-search.md"},c=t("",4),u=[c];function i(n,o,h,l,d,_){return a(),r("div",null,u)}const b=e(s,[["render",i]]);export{m as __pageData,b as default}; diff --git a/docs/.vitepress/dist/assets/structure-search.md.CwqNUKoF.js b/docs/.vitepress/dist/assets/structure-search.md.CwqNUKoF.js deleted file mode 100644 index b1e5453f..00000000 --- a/docs/.vitepress/dist/assets/structure-search.md.CwqNUKoF.js +++ /dev/null @@ -1,33 +0,0 @@ -import{_ as s,c as a,o as i,a1 as n}from"./chunks/framework.D_xGnxpE.js";const g=JSON.parse('{"title":"Markdown Extension Examples","description":"","frontmatter":{},"headers":[],"relativePath":"structure-search.md","filePath":"structure-search.md"}'),e={name:"structure-search.md"},t=n(`

Markdown Extension Examples

This page demonstrates some of the built-in markdown extensions provided by VitePress.

Syntax Highlighting

VitePress provides Syntax Highlighting powered by Shiki, with additional features like line-highlighting:

Input

\`\`\`js{4}
-export default {
-  data () {
-    return {
-      msg: 'Highlighted!'
-    }
-  }
-}
-\`\`\`

Output

js
export default {
-  data () {
-    return {
-      msg: 'Highlighted!'
-    }
-  }
-}

Custom Containers

Input

md
::: info
-This is an info box.
-:::
-
-::: tip
-This is a tip.
-:::
-
-::: warning
-This is a warning.
-:::
-
-::: danger
-This is a dangerous warning.
-:::
-
-::: details
-This is a details block.
-:::

Output

INFO

This is an info box.

TIP

This is a tip.

WARNING

This is a warning.

DANGER

This is a dangerous warning.

Details

This is a details block.

More

Check out the documentation for the full list of markdown extensions.

`,19),p=[t];function l(h,r,o,c,d,k){return i(),a("div",null,p)}const u=s(e,[["render",l]]);export{g as __pageData,u as default}; diff --git a/docs/.vitepress/dist/assets/structure-search.md.CwqNUKoF.lean.js b/docs/.vitepress/dist/assets/structure-search.md.CwqNUKoF.lean.js deleted file mode 100644 index ad11c748..00000000 --- a/docs/.vitepress/dist/assets/structure-search.md.CwqNUKoF.lean.js +++ /dev/null @@ -1 +0,0 @@ -import{_ as s,c as a,o as i,a1 as n}from"./chunks/framework.D_xGnxpE.js";const g=JSON.parse('{"title":"Markdown Extension Examples","description":"","frontmatter":{},"headers":[],"relativePath":"structure-search.md","filePath":"structure-search.md"}'),e={name:"structure-search.md"},t=n("",19),p=[t];function l(h,r,o,c,d,k){return i(),a("div",null,p)}const u=s(e,[["render",l]]);export{g as __pageData,u as default}; diff --git a/docs/.vitepress/dist/assets/style.BYhvpbhd.css b/docs/.vitepress/dist/assets/style.BYhvpbhd.css deleted file mode 100644 index b656c4ff..00000000 --- a/docs/.vitepress/dist/assets/style.BYhvpbhd.css +++ /dev/null @@ -1 +0,0 @@ -@font-face{font-family:Inter;font-style:normal;font-weight:100 900;font-display:swap;src:url(/assets/inter-roman-cyrillic-ext.BBPuwvHQ.woff2) format("woff2");unicode-range:U+0460-052F,U+1C80-1C88,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Inter;font-style:normal;font-weight:100 900;font-display:swap;src:url(/assets/inter-roman-cyrillic.C5lxZ8CY.woff2) format("woff2");unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}@font-face{font-family:Inter;font-style:normal;font-weight:100 900;font-display:swap;src:url(/assets/inter-roman-greek-ext.CqjqNYQ-.woff2) format("woff2");unicode-range:U+1F00-1FFF}@font-face{font-family:Inter;font-style:normal;font-weight:100 900;font-display:swap;src:url(/assets/inter-roman-greek.BBVDIX6e.woff2) format("woff2");unicode-range:U+0370-0377,U+037A-037F,U+0384-038A,U+038C,U+038E-03A1,U+03A3-03FF}@font-face{font-family:Inter;font-style:normal;font-weight:100 900;font-display:swap;src:url(/assets/inter-roman-vietnamese.BjW4sHH5.woff2) format("woff2");unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Inter;font-style:normal;font-weight:100 900;font-display:swap;src:url(/assets/inter-roman-latin-ext.4ZJIpNVo.woff2) format("woff2");unicode-range:U+0100-02AF,U+0304,U+0308,U+0329,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Inter;font-style:normal;font-weight:100 900;font-display:swap;src:url(/assets/inter-roman-latin.Di8DUHzh.woff2) format("woff2");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Inter;font-style:italic;font-weight:100 900;font-display:swap;src:url(/assets/inter-italic-cyrillic-ext.r48I6akx.woff2) format("woff2");unicode-range:U+0460-052F,U+1C80-1C88,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Inter;font-style:italic;font-weight:100 900;font-display:swap;src:url(/assets/inter-italic-cyrillic.By2_1cv3.woff2) format("woff2");unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}@font-face{font-family:Inter;font-style:italic;font-weight:100 900;font-display:swap;src:url(/assets/inter-italic-greek-ext.1u6EdAuj.woff2) format("woff2");unicode-range:U+1F00-1FFF}@font-face{font-family:Inter;font-style:italic;font-weight:100 900;font-display:swap;src:url(/assets/inter-italic-greek.DJ8dCoTZ.woff2) format("woff2");unicode-range:U+0370-0377,U+037A-037F,U+0384-038A,U+038C,U+038E-03A1,U+03A3-03FF}@font-face{font-family:Inter;font-style:italic;font-weight:100 900;font-display:swap;src:url(/assets/inter-italic-vietnamese.BSbpV94h.woff2) format("woff2");unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Inter;font-style:italic;font-weight:100 900;font-display:swap;src:url(/assets/inter-italic-latin-ext.CN1xVJS-.woff2) format("woff2");unicode-range:U+0100-02AF,U+0304,U+0308,U+0329,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Inter;font-style:italic;font-weight:100 900;font-display:swap;src:url(/assets/inter-italic-latin.C2AdPX0b.woff2) format("woff2");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Punctuation SC;font-weight:400;src:local("PingFang SC Regular"),local("Noto Sans CJK SC"),local("Microsoft YaHei");unicode-range:U+201C,U+201D,U+2018,U+2019,U+2E3A,U+2014,U+2013,U+2026,U+00B7,U+007E,U+002F}@font-face{font-family:Punctuation SC;font-weight:500;src:local("PingFang SC Medium"),local("Noto Sans CJK SC"),local("Microsoft YaHei");unicode-range:U+201C,U+201D,U+2018,U+2019,U+2E3A,U+2014,U+2013,U+2026,U+00B7,U+007E,U+002F}@font-face{font-family:Punctuation SC;font-weight:600;src:local("PingFang SC Semibold"),local("Noto Sans CJK SC Bold"),local("Microsoft YaHei Bold");unicode-range:U+201C,U+201D,U+2018,U+2019,U+2E3A,U+2014,U+2013,U+2026,U+00B7,U+007E,U+002F}@font-face{font-family:Punctuation SC;font-weight:700;src:local("PingFang SC Semibold"),local("Noto Sans CJK SC Bold"),local("Microsoft YaHei Bold");unicode-range:U+201C,U+201D,U+2018,U+2019,U+2E3A,U+2014,U+2013,U+2026,U+00B7,U+007E,U+002F}:root{--vp-c-white: #ffffff;--vp-c-black: #000000;--vp-c-neutral: var(--vp-c-black);--vp-c-neutral-inverse: var(--vp-c-white)}.dark{--vp-c-neutral: var(--vp-c-white);--vp-c-neutral-inverse: var(--vp-c-black)}:root{--vp-c-gray-1: #dddde3;--vp-c-gray-2: #e4e4e9;--vp-c-gray-3: #ebebef;--vp-c-gray-soft: rgba(142, 150, 170, .14);--vp-c-indigo-1: #3451b2;--vp-c-indigo-2: #3a5ccc;--vp-c-indigo-3: #5672cd;--vp-c-indigo-soft: rgba(100, 108, 255, .14);--vp-c-purple-1: #6f42c1;--vp-c-purple-2: #7e4cc9;--vp-c-purple-3: #8e5cd9;--vp-c-purple-soft: rgba(159, 122, 234, .14);--vp-c-green-1: #18794e;--vp-c-green-2: #299764;--vp-c-green-3: #30a46c;--vp-c-green-soft: rgba(16, 185, 129, .14);--vp-c-yellow-1: #915930;--vp-c-yellow-2: #946300;--vp-c-yellow-3: #9f6a00;--vp-c-yellow-soft: rgba(234, 179, 8, .14);--vp-c-red-1: #b8272c;--vp-c-red-2: #d5393e;--vp-c-red-3: #e0575b;--vp-c-red-soft: rgba(244, 63, 94, .14);--vp-c-sponsor: #db2777}.dark{--vp-c-gray-1: #515c67;--vp-c-gray-2: #414853;--vp-c-gray-3: #32363f;--vp-c-gray-soft: rgba(101, 117, 133, .16);--vp-c-indigo-1: #a8b1ff;--vp-c-indigo-2: #5c73e7;--vp-c-indigo-3: #3e63dd;--vp-c-indigo-soft: rgba(100, 108, 255, .16);--vp-c-purple-1: #c8abfa;--vp-c-purple-2: #a879e6;--vp-c-purple-3: #8e5cd9;--vp-c-purple-soft: rgba(159, 122, 234, .16);--vp-c-green-1: #3dd68c;--vp-c-green-2: #30a46c;--vp-c-green-3: #298459;--vp-c-green-soft: rgba(16, 185, 129, .16);--vp-c-yellow-1: #f9b44e;--vp-c-yellow-2: #da8b17;--vp-c-yellow-3: #a46a0a;--vp-c-yellow-soft: rgba(234, 179, 8, .16);--vp-c-red-1: #f66f81;--vp-c-red-2: #f14158;--vp-c-red-3: #b62a3c;--vp-c-red-soft: rgba(244, 63, 94, .16)}:root{--vp-c-bg: #ffffff;--vp-c-bg-alt: #f6f6f7;--vp-c-bg-elv: #ffffff;--vp-c-bg-soft: #f6f6f7}.dark{--vp-c-bg: #1b1b1f;--vp-c-bg-alt: #161618;--vp-c-bg-elv: #202127;--vp-c-bg-soft: #202127}:root{--vp-c-border: #c2c2c4;--vp-c-divider: #e2e2e3;--vp-c-gutter: #e2e2e3}.dark{--vp-c-border: #3c3f44;--vp-c-divider: #2e2e32;--vp-c-gutter: #000000}:root{--vp-c-text-1: rgba(60, 60, 67);--vp-c-text-2: rgba(60, 60, 67, .78);--vp-c-text-3: rgba(60, 60, 67, .56)}.dark{--vp-c-text-1: rgba(255, 255, 245, .86);--vp-c-text-2: rgba(235, 235, 245, .6);--vp-c-text-3: rgba(235, 235, 245, .38)}:root{--vp-c-default-1: var(--vp-c-gray-1);--vp-c-default-2: var(--vp-c-gray-2);--vp-c-default-3: var(--vp-c-gray-3);--vp-c-default-soft: var(--vp-c-gray-soft);--vp-c-brand-1: var(--vp-c-indigo-1);--vp-c-brand-2: var(--vp-c-indigo-2);--vp-c-brand-3: var(--vp-c-indigo-3);--vp-c-brand-soft: var(--vp-c-indigo-soft);--vp-c-brand: var(--vp-c-brand-1);--vp-c-tip-1: var(--vp-c-brand-1);--vp-c-tip-2: var(--vp-c-brand-2);--vp-c-tip-3: var(--vp-c-brand-3);--vp-c-tip-soft: var(--vp-c-brand-soft);--vp-c-note-1: var(--vp-c-brand-1);--vp-c-note-2: var(--vp-c-brand-2);--vp-c-note-3: var(--vp-c-brand-3);--vp-c-note-soft: var(--vp-c-brand-soft);--vp-c-success-1: var(--vp-c-green-1);--vp-c-success-2: var(--vp-c-green-2);--vp-c-success-3: var(--vp-c-green-3);--vp-c-success-soft: var(--vp-c-green-soft);--vp-c-important-1: var(--vp-c-purple-1);--vp-c-important-2: var(--vp-c-purple-2);--vp-c-important-3: var(--vp-c-purple-3);--vp-c-important-soft: var(--vp-c-purple-soft);--vp-c-warning-1: var(--vp-c-yellow-1);--vp-c-warning-2: var(--vp-c-yellow-2);--vp-c-warning-3: var(--vp-c-yellow-3);--vp-c-warning-soft: var(--vp-c-yellow-soft);--vp-c-danger-1: var(--vp-c-red-1);--vp-c-danger-2: var(--vp-c-red-2);--vp-c-danger-3: var(--vp-c-red-3);--vp-c-danger-soft: var(--vp-c-red-soft);--vp-c-caution-1: var(--vp-c-red-1);--vp-c-caution-2: var(--vp-c-red-2);--vp-c-caution-3: var(--vp-c-red-3);--vp-c-caution-soft: var(--vp-c-red-soft)}:root{--vp-font-family-base: "Inter", ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";--vp-font-family-mono: ui-monospace, "Menlo", "Monaco", "Consolas", "Liberation Mono", "Courier New", monospace;font-optical-sizing:auto}:root:where(:lang(zh)){--vp-font-family-base: "Punctuation SC", "Inter", ui-sans-serif, system-ui, "PingFang SC", "Noto Sans CJK SC", "Noto Sans SC", "Heiti SC", "Microsoft YaHei", "DengXian", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"}:root{--vp-shadow-1: 0 1px 2px rgba(0, 0, 0, .04), 0 1px 2px rgba(0, 0, 0, .06);--vp-shadow-2: 0 3px 12px rgba(0, 0, 0, .07), 0 1px 4px rgba(0, 0, 0, .07);--vp-shadow-3: 0 12px 32px rgba(0, 0, 0, .1), 0 2px 6px rgba(0, 0, 0, .08);--vp-shadow-4: 0 14px 44px rgba(0, 0, 0, .12), 0 3px 9px rgba(0, 0, 0, .12);--vp-shadow-5: 0 18px 56px rgba(0, 0, 0, .16), 0 4px 12px rgba(0, 0, 0, .16)}:root{--vp-z-index-footer: 10;--vp-z-index-local-nav: 20;--vp-z-index-nav: 30;--vp-z-index-layout-top: 40;--vp-z-index-backdrop: 50;--vp-z-index-sidebar: 60}@media (min-width: 960px){:root{--vp-z-index-sidebar: 25}}:root{--vp-layout-max-width: 1440px}:root{--vp-header-anchor-symbol: "#"}:root{--vp-code-line-height: 1.7;--vp-code-font-size: .875em;--vp-code-color: var(--vp-c-brand-1);--vp-code-link-color: var(--vp-c-brand-1);--vp-code-link-hover-color: var(--vp-c-brand-2);--vp-code-bg: var(--vp-c-default-soft);--vp-code-block-color: var(--vp-c-text-2);--vp-code-block-bg: var(--vp-c-bg-alt);--vp-code-block-divider-color: var(--vp-c-gutter);--vp-code-lang-color: var(--vp-c-text-3);--vp-code-line-highlight-color: var(--vp-c-default-soft);--vp-code-line-number-color: var(--vp-c-text-3);--vp-code-line-diff-add-color: var(--vp-c-success-soft);--vp-code-line-diff-add-symbol-color: var(--vp-c-success-1);--vp-code-line-diff-remove-color: var(--vp-c-danger-soft);--vp-code-line-diff-remove-symbol-color: var(--vp-c-danger-1);--vp-code-line-warning-color: var(--vp-c-warning-soft);--vp-code-line-error-color: var(--vp-c-danger-soft);--vp-code-copy-code-border-color: var(--vp-c-divider);--vp-code-copy-code-bg: var(--vp-c-bg-soft);--vp-code-copy-code-hover-border-color: var(--vp-c-divider);--vp-code-copy-code-hover-bg: var(--vp-c-bg);--vp-code-copy-code-active-text: var(--vp-c-text-2);--vp-code-copy-copied-text-content: "Copied";--vp-code-tab-divider: var(--vp-code-block-divider-color);--vp-code-tab-text-color: var(--vp-c-text-2);--vp-code-tab-bg: var(--vp-code-block-bg);--vp-code-tab-hover-text-color: var(--vp-c-text-1);--vp-code-tab-active-text-color: var(--vp-c-text-1);--vp-code-tab-active-bar-color: var(--vp-c-brand-1)}:root{--vp-button-brand-border: transparent;--vp-button-brand-text: var(--vp-c-white);--vp-button-brand-bg: var(--vp-c-brand-3);--vp-button-brand-hover-border: transparent;--vp-button-brand-hover-text: var(--vp-c-white);--vp-button-brand-hover-bg: var(--vp-c-brand-2);--vp-button-brand-active-border: transparent;--vp-button-brand-active-text: var(--vp-c-white);--vp-button-brand-active-bg: var(--vp-c-brand-1);--vp-button-alt-border: transparent;--vp-button-alt-text: var(--vp-c-text-1);--vp-button-alt-bg: var(--vp-c-default-3);--vp-button-alt-hover-border: transparent;--vp-button-alt-hover-text: var(--vp-c-text-1);--vp-button-alt-hover-bg: var(--vp-c-default-2);--vp-button-alt-active-border: transparent;--vp-button-alt-active-text: var(--vp-c-text-1);--vp-button-alt-active-bg: var(--vp-c-default-1);--vp-button-sponsor-border: var(--vp-c-text-2);--vp-button-sponsor-text: var(--vp-c-text-2);--vp-button-sponsor-bg: transparent;--vp-button-sponsor-hover-border: var(--vp-c-sponsor);--vp-button-sponsor-hover-text: var(--vp-c-sponsor);--vp-button-sponsor-hover-bg: transparent;--vp-button-sponsor-active-border: var(--vp-c-sponsor);--vp-button-sponsor-active-text: var(--vp-c-sponsor);--vp-button-sponsor-active-bg: transparent}:root{--vp-custom-block-font-size: 14px;--vp-custom-block-code-font-size: 13px;--vp-custom-block-info-border: transparent;--vp-custom-block-info-text: var(--vp-c-text-1);--vp-custom-block-info-bg: var(--vp-c-default-soft);--vp-custom-block-info-code-bg: var(--vp-c-default-soft);--vp-custom-block-note-border: transparent;--vp-custom-block-note-text: var(--vp-c-text-1);--vp-custom-block-note-bg: var(--vp-c-default-soft);--vp-custom-block-note-code-bg: var(--vp-c-default-soft);--vp-custom-block-tip-border: transparent;--vp-custom-block-tip-text: var(--vp-c-text-1);--vp-custom-block-tip-bg: var(--vp-c-tip-soft);--vp-custom-block-tip-code-bg: var(--vp-c-tip-soft);--vp-custom-block-important-border: transparent;--vp-custom-block-important-text: var(--vp-c-text-1);--vp-custom-block-important-bg: var(--vp-c-important-soft);--vp-custom-block-important-code-bg: var(--vp-c-important-soft);--vp-custom-block-warning-border: transparent;--vp-custom-block-warning-text: var(--vp-c-text-1);--vp-custom-block-warning-bg: var(--vp-c-warning-soft);--vp-custom-block-warning-code-bg: var(--vp-c-warning-soft);--vp-custom-block-danger-border: transparent;--vp-custom-block-danger-text: var(--vp-c-text-1);--vp-custom-block-danger-bg: var(--vp-c-danger-soft);--vp-custom-block-danger-code-bg: var(--vp-c-danger-soft);--vp-custom-block-caution-border: transparent;--vp-custom-block-caution-text: var(--vp-c-text-1);--vp-custom-block-caution-bg: var(--vp-c-caution-soft);--vp-custom-block-caution-code-bg: var(--vp-c-caution-soft);--vp-custom-block-details-border: var(--vp-custom-block-info-border);--vp-custom-block-details-text: var(--vp-custom-block-info-text);--vp-custom-block-details-bg: var(--vp-custom-block-info-bg);--vp-custom-block-details-code-bg: var(--vp-custom-block-info-code-bg)}:root{--vp-input-border-color: var(--vp-c-border);--vp-input-bg-color: var(--vp-c-bg-alt);--vp-input-switch-bg-color: var(--vp-c-default-soft)}:root{--vp-nav-height: 64px;--vp-nav-bg-color: var(--vp-c-bg);--vp-nav-screen-bg-color: var(--vp-c-bg);--vp-nav-logo-height: 24px}.hide-nav{--vp-nav-height: 0px}.hide-nav .VPSidebar{--vp-nav-height: 22px}:root{--vp-local-nav-bg-color: var(--vp-c-bg)}:root{--vp-sidebar-width: 272px;--vp-sidebar-bg-color: var(--vp-c-bg-alt)}:root{--vp-backdrop-bg-color: rgba(0, 0, 0, .6)}:root{--vp-home-hero-name-color: var(--vp-c-brand-1);--vp-home-hero-name-background: transparent;--vp-home-hero-image-background-image: none;--vp-home-hero-image-filter: none}:root{--vp-badge-info-border: transparent;--vp-badge-info-text: var(--vp-c-text-2);--vp-badge-info-bg: var(--vp-c-default-soft);--vp-badge-tip-border: transparent;--vp-badge-tip-text: var(--vp-c-tip-1);--vp-badge-tip-bg: var(--vp-c-tip-soft);--vp-badge-warning-border: transparent;--vp-badge-warning-text: var(--vp-c-warning-1);--vp-badge-warning-bg: var(--vp-c-warning-soft);--vp-badge-danger-border: transparent;--vp-badge-danger-text: var(--vp-c-danger-1);--vp-badge-danger-bg: var(--vp-c-danger-soft)}:root{--vp-carbon-ads-text-color: var(--vp-c-text-1);--vp-carbon-ads-poweredby-color: var(--vp-c-text-2);--vp-carbon-ads-bg-color: var(--vp-c-bg-soft);--vp-carbon-ads-hover-text-color: var(--vp-c-brand-1);--vp-carbon-ads-hover-poweredby-color: var(--vp-c-text-1)}:root{--vp-local-search-bg: var(--vp-c-bg);--vp-local-search-result-bg: var(--vp-c-bg);--vp-local-search-result-border: var(--vp-c-divider);--vp-local-search-result-selected-bg: var(--vp-c-bg);--vp-local-search-result-selected-border: var(--vp-c-brand-1);--vp-local-search-highlight-bg: var(--vp-c-brand-1);--vp-local-search-highlight-text: var(--vp-c-neutral-inverse)}@media (prefers-reduced-motion: reduce){*,:before,:after{animation-delay:-1ms!important;animation-duration:1ms!important;animation-iteration-count:1!important;background-attachment:initial!important;scroll-behavior:auto!important;transition-duration:0s!important;transition-delay:0s!important}}*,:before,:after{box-sizing:border-box}html{line-height:1.4;font-size:16px;-webkit-text-size-adjust:100%}html.dark{color-scheme:dark}body{margin:0;width:100%;min-width:320px;min-height:100vh;line-height:24px;font-family:var(--vp-font-family-base);font-size:16px;font-weight:400;color:var(--vp-c-text-1);background-color:var(--vp-c-bg);font-synthesis:style;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}main{display:block}h1,h2,h3,h4,h5,h6{margin:0;line-height:24px;font-size:16px;font-weight:400}p{margin:0}strong,b{font-weight:600}a,area,button,[role=button],input,label,select,summary,textarea{touch-action:manipulation}a{color:inherit;text-decoration:inherit}ol,ul{list-style:none;margin:0;padding:0}blockquote{margin:0}pre,code,kbd,samp{font-family:var(--vp-font-family-mono)}img,svg,video,canvas,audio,iframe,embed,object{display:block}figure{margin:0}img,video{max-width:100%;height:auto}button,input,optgroup,select,textarea{border:0;padding:0;line-height:inherit;color:inherit}button{padding:0;font-family:inherit;background-color:transparent;background-image:none}button:enabled,[role=button]:enabled{cursor:pointer}button:focus,button:focus-visible{outline:1px dotted;outline:4px auto -webkit-focus-ring-color}button:focus:not(:focus-visible){outline:none!important}input:focus,textarea:focus,select:focus{outline:none}table{border-collapse:collapse}input{background-color:transparent}input::-moz-placeholder,textarea::-moz-placeholder{color:var(--vp-c-text-3)}input::placeholder,textarea::placeholder{color:var(--vp-c-text-3)}input::-webkit-outer-spin-button,input::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}input[type=number]{-moz-appearance:textfield}textarea{resize:vertical}select{-webkit-appearance:none}fieldset{margin:0;padding:0}h1,h2,h3,h4,h5,h6,li,p{overflow-wrap:break-word}vite-error-overlay{z-index:9999}mjx-container{display:inline-block;margin:auto 2px -2px}mjx-container>svg{display:inline-block;margin:auto}[class^=vpi-],[class*=" vpi-"],.vp-icon{width:1em;height:1em}[class^=vpi-].bg,[class*=" vpi-"].bg,.vp-icon.bg{background-size:100% 100%;background-color:transparent}[class^=vpi-]:not(.bg),[class*=" vpi-"]:not(.bg),.vp-icon:not(.bg){-webkit-mask:var(--icon) no-repeat;mask:var(--icon) no-repeat;-webkit-mask-size:100% 100%;mask-size:100% 100%;background-color:currentColor;color:inherit}.vpi-align-left{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Cpath d='M21 6H3M15 12H3M17 18H3'/%3E%3C/svg%3E")}.vpi-arrow-right,.vpi-arrow-down,.vpi-arrow-left,.vpi-arrow-up{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Cpath d='M5 12h14M12 5l7 7-7 7'/%3E%3C/svg%3E")}.vpi-chevron-right,.vpi-chevron-down,.vpi-chevron-left,.vpi-chevron-up{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Cpath d='m9 18 6-6-6-6'/%3E%3C/svg%3E")}.vpi-chevron-down,.vpi-arrow-down{transform:rotate(90deg)}.vpi-chevron-left,.vpi-arrow-left{transform:rotate(180deg)}.vpi-chevron-up,.vpi-arrow-up{transform:rotate(-90deg)}.vpi-square-pen{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Cpath d='M12 3H5a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2v-7'/%3E%3Cpath d='M18.375 2.625a2.121 2.121 0 1 1 3 3L12 15l-4 1 1-4Z'/%3E%3C/svg%3E")}.vpi-plus{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Cpath d='M5 12h14M12 5v14'/%3E%3C/svg%3E")}.vpi-sun{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Ccircle cx='12' cy='12' r='4'/%3E%3Cpath d='M12 2v2M12 20v2M4.93 4.93l1.41 1.41M17.66 17.66l1.41 1.41M2 12h2M20 12h2M6.34 17.66l-1.41 1.41M19.07 4.93l-1.41 1.41'/%3E%3C/svg%3E")}.vpi-moon{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Cpath d='M12 3a6 6 0 0 0 9 9 9 9 0 1 1-9-9Z'/%3E%3C/svg%3E")}.vpi-more-horizontal{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Ccircle cx='12' cy='12' r='1'/%3E%3Ccircle cx='19' cy='12' r='1'/%3E%3Ccircle cx='5' cy='12' r='1'/%3E%3C/svg%3E")}.vpi-languages{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Cpath d='m5 8 6 6M4 14l6-6 2-3M2 5h12M7 2h1M22 22l-5-10-5 10M14 18h6'/%3E%3C/svg%3E")}.vpi-heart{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Cpath d='M19 14c1.49-1.46 3-3.21 3-5.5A5.5 5.5 0 0 0 16.5 3c-1.76 0-3 .5-4.5 2-1.5-1.5-2.74-2-4.5-2A5.5 5.5 0 0 0 2 8.5c0 2.3 1.5 4.05 3 5.5l7 7Z'/%3E%3C/svg%3E")}.vpi-search{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Ccircle cx='11' cy='11' r='8'/%3E%3Cpath d='m21 21-4.3-4.3'/%3E%3C/svg%3E")}.vpi-layout-list{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Crect width='7' height='7' x='3' y='3' rx='1'/%3E%3Crect width='7' height='7' x='3' y='14' rx='1'/%3E%3Cpath d='M14 4h7M14 9h7M14 15h7M14 20h7'/%3E%3C/svg%3E")}.vpi-delete{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Cpath d='M20 5H9l-7 7 7 7h11a2 2 0 0 0 2-2V7a2 2 0 0 0-2-2ZM18 9l-6 6M12 9l6 6'/%3E%3C/svg%3E")}.vpi-corner-down-left{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Cpath d='m9 10-5 5 5 5'/%3E%3Cpath d='M20 4v7a4 4 0 0 1-4 4H4'/%3E%3C/svg%3E")}:root{--vp-icon-copy: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='rgba(128,128,128,1)' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Crect width='8' height='4' x='8' y='2' rx='1' ry='1'/%3E%3Cpath d='M16 4h2a2 2 0 0 1 2 2v14a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2V6a2 2 0 0 1 2-2h2'/%3E%3C/svg%3E");--vp-icon-copied: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='rgba(128,128,128,1)' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Crect width='8' height='4' x='8' y='2' rx='1' ry='1'/%3E%3Cpath d='M16 4h2a2 2 0 0 1 2 2v14a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2V6a2 2 0 0 1 2-2h2'/%3E%3Cpath d='m9 14 2 2 4-4'/%3E%3C/svg%3E")}.vpi-social-discord{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M20.317 4.37a19.791 19.791 0 0 0-4.885-1.515.074.074 0 0 0-.079.037c-.21.375-.444.864-.608 1.25a18.27 18.27 0 0 0-5.487 0 12.64 12.64 0 0 0-.617-1.25.077.077 0 0 0-.079-.037A19.736 19.736 0 0 0 3.677 4.37a.07.07 0 0 0-.032.027C.533 9.046-.32 13.58.099 18.057a.082.082 0 0 0 .031.057 19.9 19.9 0 0 0 5.993 3.03.078.078 0 0 0 .084-.028c.462-.63.874-1.295 1.226-1.994a.076.076 0 0 0-.041-.106 13.107 13.107 0 0 1-1.872-.892.077.077 0 0 1-.008-.128 10.2 10.2 0 0 0 .372-.292.074.074 0 0 1 .077-.01c3.928 1.793 8.18 1.793 12.062 0a.074.074 0 0 1 .078.01c.12.098.246.198.373.292a.077.077 0 0 1-.006.127 12.299 12.299 0 0 1-1.873.892.077.077 0 0 0-.041.107c.36.698.772 1.362 1.225 1.993a.076.076 0 0 0 .084.028 19.839 19.839 0 0 0 6.002-3.03.077.077 0 0 0 .032-.054c.5-5.177-.838-9.674-3.549-13.66a.061.061 0 0 0-.031-.03zM8.02 15.33c-1.183 0-2.157-1.085-2.157-2.419 0-1.333.956-2.419 2.157-2.419 1.21 0 2.176 1.096 2.157 2.42 0 1.333-.956 2.418-2.157 2.418zm7.975 0c-1.183 0-2.157-1.085-2.157-2.419 0-1.333.955-2.419 2.157-2.419 1.21 0 2.176 1.096 2.157 2.42 0 1.333-.946 2.418-2.157 2.418Z'/%3E%3C/svg%3E")}.vpi-social-facebook{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M9.101 23.691v-7.98H6.627v-3.667h2.474v-1.58c0-4.085 1.848-5.978 5.858-5.978.401 0 .955.042 1.468.103a8.68 8.68 0 0 1 1.141.195v3.325a8.623 8.623 0 0 0-.653-.036 26.805 26.805 0 0 0-.733-.009c-.707 0-1.259.096-1.675.309a1.686 1.686 0 0 0-.679.622c-.258.42-.374.995-.374 1.752v1.297h3.919l-.386 2.103-.287 1.564h-3.246v8.245C19.396 23.238 24 18.179 24 12.044c0-6.627-5.373-12-12-12s-12 5.373-12 12c0 5.628 3.874 10.35 9.101 11.647Z'/%3E%3C/svg%3E")}.vpi-social-github{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M12 .297c-6.63 0-12 5.373-12 12 0 5.303 3.438 9.8 8.205 11.385.6.113.82-.258.82-.577 0-.285-.01-1.04-.015-2.04-3.338.724-4.042-1.61-4.042-1.61C4.422 18.07 3.633 17.7 3.633 17.7c-1.087-.744.084-.729.084-.729 1.205.084 1.838 1.236 1.838 1.236 1.07 1.835 2.809 1.305 3.495.998.108-.776.417-1.305.76-1.605-2.665-.3-5.466-1.332-5.466-5.93 0-1.31.465-2.38 1.235-3.22-.135-.303-.54-1.523.105-3.176 0 0 1.005-.322 3.3 1.23.96-.267 1.98-.399 3-.405 1.02.006 2.04.138 3 .405 2.28-1.552 3.285-1.23 3.285-1.23.645 1.653.24 2.873.12 3.176.765.84 1.23 1.91 1.23 3.22 0 4.61-2.805 5.625-5.475 5.92.42.36.81 1.096.81 2.22 0 1.606-.015 2.896-.015 3.286 0 .315.21.69.825.57C20.565 22.092 24 17.592 24 12.297c0-6.627-5.373-12-12-12'/%3E%3C/svg%3E")}.vpi-social-instagram{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M7.03.084c-1.277.06-2.149.264-2.91.563a5.874 5.874 0 0 0-2.124 1.388 5.878 5.878 0 0 0-1.38 2.127C.321 4.926.12 5.8.064 7.076.008 8.354-.005 8.764.001 12.023c.007 3.259.021 3.667.083 4.947.061 1.277.264 2.149.563 2.911.308.789.72 1.457 1.388 2.123a5.872 5.872 0 0 0 2.129 1.38c.763.295 1.636.496 2.913.552 1.278.056 1.689.069 4.947.063 3.257-.007 3.668-.021 4.947-.082 1.28-.06 2.147-.265 2.91-.563a5.881 5.881 0 0 0 2.123-1.388 5.881 5.881 0 0 0 1.38-2.129c.295-.763.496-1.636.551-2.912.056-1.28.07-1.69.063-4.948-.006-3.258-.02-3.667-.081-4.947-.06-1.28-.264-2.148-.564-2.911a5.892 5.892 0 0 0-1.387-2.123 5.857 5.857 0 0 0-2.128-1.38C19.074.322 18.202.12 16.924.066 15.647.009 15.236-.006 11.977 0 8.718.008 8.31.021 7.03.084m.14 21.693c-1.17-.05-1.805-.245-2.228-.408a3.736 3.736 0 0 1-1.382-.895 3.695 3.695 0 0 1-.9-1.378c-.165-.423-.363-1.058-.417-2.228-.06-1.264-.072-1.644-.08-4.848-.006-3.204.006-3.583.061-4.848.05-1.169.246-1.805.408-2.228.216-.561.477-.96.895-1.382a3.705 3.705 0 0 1 1.379-.9c.423-.165 1.057-.361 2.227-.417 1.265-.06 1.644-.072 4.848-.08 3.203-.006 3.583.006 4.85.062 1.168.05 1.804.244 2.227.408.56.216.96.475 1.382.895.421.42.681.817.9 1.378.165.422.362 1.056.417 2.227.06 1.265.074 1.645.08 4.848.005 3.203-.006 3.583-.061 4.848-.051 1.17-.245 1.805-.408 2.23-.216.56-.477.96-.896 1.38a3.705 3.705 0 0 1-1.378.9c-.422.165-1.058.362-2.226.418-1.266.06-1.645.072-4.85.079-3.204.007-3.582-.006-4.848-.06m9.783-16.192a1.44 1.44 0 1 0 1.437-1.442 1.44 1.44 0 0 0-1.437 1.442M5.839 12.012a6.161 6.161 0 1 0 12.323-.024 6.162 6.162 0 0 0-12.323.024M8 12.008A4 4 0 1 1 12.008 16 4 4 0 0 1 8 12.008'/%3E%3C/svg%3E")}.vpi-social-linkedin{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M20.447 20.452h-3.554v-5.569c0-1.328-.027-3.037-1.852-3.037-1.853 0-2.136 1.445-2.136 2.939v5.667H9.351V9h3.414v1.561h.046c.477-.9 1.637-1.85 3.37-1.85 3.601 0 4.267 2.37 4.267 5.455v6.286zM5.337 7.433a2.062 2.062 0 0 1-2.063-2.065 2.064 2.064 0 1 1 2.063 2.065zm1.782 13.019H3.555V9h3.564v11.452zM22.225 0H1.771C.792 0 0 .774 0 1.729v20.542C0 23.227.792 24 1.771 24h20.451C23.2 24 24 23.227 24 22.271V1.729C24 .774 23.2 0 22.222 0h.003z'/%3E%3C/svg%3E")}.vpi-social-mastodon{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M23.268 5.313c-.35-2.578-2.617-4.61-5.304-5.004C17.51.242 15.792 0 11.813 0h-.03c-3.98 0-4.835.242-5.288.309C3.882.692 1.496 2.518.917 5.127.64 6.412.61 7.837.661 9.143c.074 1.874.088 3.745.26 5.611.118 1.24.325 2.47.62 3.68.55 2.237 2.777 4.098 4.96 4.857 2.336.792 4.849.923 7.256.38.265-.061.527-.132.786-.213.585-.184 1.27-.39 1.774-.753a.057.057 0 0 0 .023-.043v-1.809a.052.052 0 0 0-.02-.041.053.053 0 0 0-.046-.01 20.282 20.282 0 0 1-4.709.545c-2.73 0-3.463-1.284-3.674-1.818a5.593 5.593 0 0 1-.319-1.433.053.053 0 0 1 .066-.054c1.517.363 3.072.546 4.632.546.376 0 .75 0 1.125-.01 1.57-.044 3.224-.124 4.768-.422.038-.008.077-.015.11-.024 2.435-.464 4.753-1.92 4.989-5.604.008-.145.03-1.52.03-1.67.002-.512.167-3.63-.024-5.545zm-3.748 9.195h-2.561V8.29c0-1.309-.55-1.976-1.67-1.976-1.23 0-1.846.79-1.846 2.35v3.403h-2.546V8.663c0-1.56-.617-2.35-1.848-2.35-1.112 0-1.668.668-1.67 1.977v6.218H4.822V8.102c0-1.31.337-2.35 1.011-3.12.696-.77 1.608-1.164 2.74-1.164 1.311 0 2.302.5 2.962 1.498l.638 1.06.638-1.06c.66-.999 1.65-1.498 2.96-1.498 1.13 0 2.043.395 2.74 1.164.675.77 1.012 1.81 1.012 3.12z'/%3E%3C/svg%3E")}.vpi-social-npm{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M1.763 0C.786 0 0 .786 0 1.763v20.474C0 23.214.786 24 1.763 24h20.474c.977 0 1.763-.786 1.763-1.763V1.763C24 .786 23.214 0 22.237 0zM5.13 5.323l13.837.019-.009 13.836h-3.464l.01-10.382h-3.456L12.04 19.17H5.113z'/%3E%3C/svg%3E")}.vpi-social-slack{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M5.042 15.165a2.528 2.528 0 0 1-2.52 2.523A2.528 2.528 0 0 1 0 15.165a2.527 2.527 0 0 1 2.522-2.52h2.52v2.52zm1.271 0a2.527 2.527 0 0 1 2.521-2.52 2.527 2.527 0 0 1 2.521 2.52v6.313A2.528 2.528 0 0 1 8.834 24a2.528 2.528 0 0 1-2.521-2.522v-6.313zM8.834 5.042a2.528 2.528 0 0 1-2.521-2.52A2.528 2.528 0 0 1 8.834 0a2.528 2.528 0 0 1 2.521 2.522v2.52H8.834zm0 1.271a2.528 2.528 0 0 1 2.521 2.521 2.528 2.528 0 0 1-2.521 2.521H2.522A2.528 2.528 0 0 1 0 8.834a2.528 2.528 0 0 1 2.522-2.521h6.312zm10.122 2.521a2.528 2.528 0 0 1 2.522-2.521A2.528 2.528 0 0 1 24 8.834a2.528 2.528 0 0 1-2.522 2.521h-2.522V8.834zm-1.268 0a2.528 2.528 0 0 1-2.523 2.521 2.527 2.527 0 0 1-2.52-2.521V2.522A2.527 2.527 0 0 1 15.165 0a2.528 2.528 0 0 1 2.523 2.522v6.312zm-2.523 10.122a2.528 2.528 0 0 1 2.523 2.522A2.528 2.528 0 0 1 15.165 24a2.527 2.527 0 0 1-2.52-2.522v-2.522h2.52zm0-1.268a2.527 2.527 0 0 1-2.52-2.523 2.526 2.526 0 0 1 2.52-2.52h6.313A2.527 2.527 0 0 1 24 15.165a2.528 2.528 0 0 1-2.522 2.523h-6.313z'/%3E%3C/svg%3E")}.vpi-social-twitter,.vpi-social-x{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M18.901 1.153h3.68l-8.04 9.19L24 22.846h-7.406l-5.8-7.584-6.638 7.584H.474l8.6-9.83L0 1.154h7.594l5.243 6.932ZM17.61 20.644h2.039L6.486 3.24H4.298Z'/%3E%3C/svg%3E")}.vpi-social-youtube{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M23.498 6.186a3.016 3.016 0 0 0-2.122-2.136C19.505 3.545 12 3.545 12 3.545s-7.505 0-9.377.505A3.017 3.017 0 0 0 .502 6.186C0 8.07 0 12 0 12s0 3.93.502 5.814a3.016 3.016 0 0 0 2.122 2.136c1.871.505 9.376.505 9.376.505s7.505 0 9.377-.505a3.015 3.015 0 0 0 2.122-2.136C24 15.93 24 12 24 12s0-3.93-.502-5.814zM9.545 15.568V8.432L15.818 12l-6.273 3.568z'/%3E%3C/svg%3E")}.visually-hidden{position:absolute;width:1px;height:1px;white-space:nowrap;clip:rect(0 0 0 0);-webkit-clip-path:inset(50%);clip-path:inset(50%);overflow:hidden}.custom-block{border:1px solid transparent;border-radius:8px;padding:16px 16px 8px;line-height:24px;font-size:var(--vp-custom-block-font-size);color:var(--vp-c-text-2)}.custom-block.info{border-color:var(--vp-custom-block-info-border);color:var(--vp-custom-block-info-text);background-color:var(--vp-custom-block-info-bg)}.custom-block.info a,.custom-block.info code{color:var(--vp-c-brand-1)}.custom-block.info a:hover,.custom-block.info a:hover>code{color:var(--vp-c-brand-2)}.custom-block.info code{background-color:var(--vp-custom-block-info-code-bg)}.custom-block.note{border-color:var(--vp-custom-block-note-border);color:var(--vp-custom-block-note-text);background-color:var(--vp-custom-block-note-bg)}.custom-block.note a,.custom-block.note code{color:var(--vp-c-brand-1)}.custom-block.note a:hover,.custom-block.note a:hover>code{color:var(--vp-c-brand-2)}.custom-block.note code{background-color:var(--vp-custom-block-note-code-bg)}.custom-block.tip{border-color:var(--vp-custom-block-tip-border);color:var(--vp-custom-block-tip-text);background-color:var(--vp-custom-block-tip-bg)}.custom-block.tip a,.custom-block.tip code{color:var(--vp-c-tip-1)}.custom-block.tip a:hover,.custom-block.tip a:hover>code{color:var(--vp-c-tip-2)}.custom-block.tip code{background-color:var(--vp-custom-block-tip-code-bg)}.custom-block.important{border-color:var(--vp-custom-block-important-border);color:var(--vp-custom-block-important-text);background-color:var(--vp-custom-block-important-bg)}.custom-block.important a,.custom-block.important code{color:var(--vp-c-important-1)}.custom-block.important a:hover,.custom-block.important a:hover>code{color:var(--vp-c-important-2)}.custom-block.important code{background-color:var(--vp-custom-block-important-code-bg)}.custom-block.warning{border-color:var(--vp-custom-block-warning-border);color:var(--vp-custom-block-warning-text);background-color:var(--vp-custom-block-warning-bg)}.custom-block.warning a,.custom-block.warning code{color:var(--vp-c-warning-1)}.custom-block.warning a:hover,.custom-block.warning a:hover>code{color:var(--vp-c-warning-2)}.custom-block.warning code{background-color:var(--vp-custom-block-warning-code-bg)}.custom-block.danger{border-color:var(--vp-custom-block-danger-border);color:var(--vp-custom-block-danger-text);background-color:var(--vp-custom-block-danger-bg)}.custom-block.danger a,.custom-block.danger code{color:var(--vp-c-danger-1)}.custom-block.danger a:hover,.custom-block.danger a:hover>code{color:var(--vp-c-danger-2)}.custom-block.danger code{background-color:var(--vp-custom-block-danger-code-bg)}.custom-block.caution{border-color:var(--vp-custom-block-caution-border);color:var(--vp-custom-block-caution-text);background-color:var(--vp-custom-block-caution-bg)}.custom-block.caution a,.custom-block.caution code{color:var(--vp-c-caution-1)}.custom-block.caution a:hover,.custom-block.caution a:hover>code{color:var(--vp-c-caution-2)}.custom-block.caution code{background-color:var(--vp-custom-block-caution-code-bg)}.custom-block.details{border-color:var(--vp-custom-block-details-border);color:var(--vp-custom-block-details-text);background-color:var(--vp-custom-block-details-bg)}.custom-block.details a{color:var(--vp-c-brand-1)}.custom-block.details a:hover,.custom-block.details a:hover>code{color:var(--vp-c-brand-2)}.custom-block.details code{background-color:var(--vp-custom-block-details-code-bg)}.custom-block-title{font-weight:600}.custom-block p+p{margin:8px 0}.custom-block.details summary{margin:0 0 8px;font-weight:700;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;user-select:none}.custom-block.details summary+p{margin:8px 0}.custom-block a{color:inherit;font-weight:600;text-decoration:underline;text-underline-offset:2px;transition:opacity .25s}.custom-block a:hover{opacity:.75}.custom-block code{font-size:var(--vp-custom-block-code-font-size)}.custom-block.custom-block th,.custom-block.custom-block blockquote>p{font-size:var(--vp-custom-block-font-size);color:inherit}.dark .vp-code span{color:var(--shiki-dark, inherit)}html:not(.dark) .vp-code span{color:var(--shiki-light, inherit)}.vp-code-group{margin-top:16px}.vp-code-group .tabs{position:relative;display:flex;margin-right:-24px;margin-left:-24px;padding:0 12px;background-color:var(--vp-code-tab-bg);overflow-x:auto;overflow-y:hidden;box-shadow:inset 0 -1px var(--vp-code-tab-divider)}@media (min-width: 640px){.vp-code-group .tabs{margin-right:0;margin-left:0;border-radius:8px 8px 0 0}}.vp-code-group .tabs input{position:fixed;opacity:0;pointer-events:none}.vp-code-group .tabs label{position:relative;display:inline-block;border-bottom:1px solid transparent;padding:0 12px;line-height:48px;font-size:14px;font-weight:500;color:var(--vp-code-tab-text-color);white-space:nowrap;cursor:pointer;transition:color .25s}.vp-code-group .tabs label:after{position:absolute;right:8px;bottom:-1px;left:8px;z-index:1;height:2px;border-radius:2px;content:"";background-color:transparent;transition:background-color .25s}.vp-code-group label:hover{color:var(--vp-code-tab-hover-text-color)}.vp-code-group input:checked+label{color:var(--vp-code-tab-active-text-color)}.vp-code-group input:checked+label:after{background-color:var(--vp-code-tab-active-bar-color)}.vp-code-group div[class*=language-],.vp-block{display:none;margin-top:0!important;border-top-left-radius:0!important;border-top-right-radius:0!important}.vp-code-group div[class*=language-].active,.vp-block.active{display:block}.vp-block{padding:20px 24px}.vp-doc h1,.vp-doc h2,.vp-doc h3,.vp-doc h4,.vp-doc h5,.vp-doc h6{position:relative;font-weight:600;outline:none}.vp-doc h1{letter-spacing:-.02em;line-height:40px;font-size:28px}.vp-doc h2{margin:48px 0 16px;border-top:1px solid var(--vp-c-divider);padding-top:24px;letter-spacing:-.02em;line-height:32px;font-size:24px}.vp-doc h3{margin:32px 0 0;letter-spacing:-.01em;line-height:28px;font-size:20px}.vp-doc .header-anchor{position:absolute;top:0;left:0;margin-left:-.87em;font-weight:500;-webkit-user-select:none;-moz-user-select:none;user-select:none;opacity:0;text-decoration:none;transition:color .25s,opacity .25s}.vp-doc .header-anchor:before{content:var(--vp-header-anchor-symbol)}.vp-doc h1:hover .header-anchor,.vp-doc h1 .header-anchor:focus,.vp-doc h2:hover .header-anchor,.vp-doc h2 .header-anchor:focus,.vp-doc h3:hover .header-anchor,.vp-doc h3 .header-anchor:focus,.vp-doc h4:hover .header-anchor,.vp-doc h4 .header-anchor:focus,.vp-doc h5:hover .header-anchor,.vp-doc h5 .header-anchor:focus,.vp-doc h6:hover .header-anchor,.vp-doc h6 .header-anchor:focus{opacity:1}@media (min-width: 768px){.vp-doc h1{letter-spacing:-.02em;line-height:40px;font-size:32px}}.vp-doc h2 .header-anchor{top:24px}.vp-doc p,.vp-doc summary{margin:16px 0}.vp-doc p{line-height:28px}.vp-doc blockquote{margin:16px 0;border-left:2px solid var(--vp-c-divider);padding-left:16px;transition:border-color .5s}.vp-doc blockquote>p{margin:0;font-size:16px;color:var(--vp-c-text-2);transition:color .5s}.vp-doc a{font-weight:500;color:var(--vp-c-brand-1);text-decoration:underline;text-underline-offset:2px;transition:color .25s,opacity .25s}.vp-doc a:hover{color:var(--vp-c-brand-2)}.vp-doc strong{font-weight:600}.vp-doc ul,.vp-doc ol{padding-left:1.25rem;margin:16px 0}.vp-doc ul{list-style:disc}.vp-doc ol{list-style:decimal}.vp-doc li+li{margin-top:8px}.vp-doc li>ol,.vp-doc li>ul{margin:8px 0 0}.vp-doc table{display:block;border-collapse:collapse;margin:20px 0;overflow-x:auto}.vp-doc tr{background-color:var(--vp-c-bg);border-top:1px solid var(--vp-c-divider);transition:background-color .5s}.vp-doc tr:nth-child(2n){background-color:var(--vp-c-bg-soft)}.vp-doc th,.vp-doc td{border:1px solid var(--vp-c-divider);padding:8px 16px}.vp-doc th{text-align:left;font-size:14px;font-weight:600;color:var(--vp-c-text-2);background-color:var(--vp-c-bg-soft)}.vp-doc td{font-size:14px}.vp-doc hr{margin:16px 0;border:none;border-top:1px solid var(--vp-c-divider)}.vp-doc .custom-block{margin:16px 0}.vp-doc .custom-block p{margin:8px 0;line-height:24px}.vp-doc .custom-block p:first-child{margin:0}.vp-doc .custom-block div[class*=language-]{margin:8px 0;border-radius:8px}.vp-doc .custom-block div[class*=language-] code{font-weight:400;background-color:transparent}.vp-doc .custom-block .vp-code-group .tabs{margin:0;border-radius:8px 8px 0 0}.vp-doc :not(pre,h1,h2,h3,h4,h5,h6)>code{font-size:var(--vp-code-font-size);color:var(--vp-code-color)}.vp-doc :not(pre)>code{border-radius:4px;padding:3px 6px;background-color:var(--vp-code-bg);transition:color .25s,background-color .5s}.vp-doc a>code{color:var(--vp-code-link-color)}.vp-doc a:hover>code{color:var(--vp-code-link-hover-color)}.vp-doc h1>code,.vp-doc h2>code,.vp-doc h3>code{font-size:.9em}.vp-doc div[class*=language-],.vp-block{position:relative;margin:16px -24px;background-color:var(--vp-code-block-bg);overflow-x:auto;transition:background-color .5s}@media (min-width: 640px){.vp-doc div[class*=language-],.vp-block{border-radius:8px;margin:16px 0}}@media (max-width: 639px){.vp-doc li div[class*=language-]{border-radius:8px 0 0 8px}}.vp-doc div[class*=language-]+div[class*=language-],.vp-doc div[class$=-api]+div[class*=language-],.vp-doc div[class*=language-]+div[class$=-api]>div[class*=language-]{margin-top:-8px}.vp-doc [class*=language-] pre,.vp-doc [class*=language-] code{direction:ltr;text-align:left;white-space:pre;word-spacing:normal;word-break:normal;word-wrap:normal;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-hyphens:none;hyphens:none}.vp-doc [class*=language-] pre{position:relative;z-index:1;margin:0;padding:20px 0;background:transparent;overflow-x:auto}.vp-doc [class*=language-] code{display:block;padding:0 24px;width:-moz-fit-content;width:fit-content;min-width:100%;line-height:var(--vp-code-line-height);font-size:var(--vp-code-font-size);color:var(--vp-code-block-color);transition:color .5s}.vp-doc [class*=language-] code .highlighted{background-color:var(--vp-code-line-highlight-color);transition:background-color .5s;margin:0 -24px;padding:0 24px;width:calc(100% + 48px);display:inline-block}.vp-doc [class*=language-] code .highlighted.error{background-color:var(--vp-code-line-error-color)}.vp-doc [class*=language-] code .highlighted.warning{background-color:var(--vp-code-line-warning-color)}.vp-doc [class*=language-] code .diff{transition:background-color .5s;margin:0 -24px;padding:0 24px;width:calc(100% + 48px);display:inline-block}.vp-doc [class*=language-] code .diff:before{position:absolute;left:10px}.vp-doc [class*=language-] .has-focused-lines .line:not(.has-focus){filter:blur(.095rem);opacity:.7;transition:filter .35s,opacity .35s}.vp-doc [class*=language-]:hover .has-focused-lines .line:not(.has-focus){filter:blur(0);opacity:1}.vp-doc [class*=language-] code .diff.remove{background-color:var(--vp-code-line-diff-remove-color);opacity:.7}.vp-doc [class*=language-] code .diff.remove:before{content:"-";color:var(--vp-code-line-diff-remove-symbol-color)}.vp-doc [class*=language-] code .diff.add{background-color:var(--vp-code-line-diff-add-color)}.vp-doc [class*=language-] code .diff.add:before{content:"+";color:var(--vp-code-line-diff-add-symbol-color)}.vp-doc div[class*=language-].line-numbers-mode{padding-left:32px}.vp-doc .line-numbers-wrapper{position:absolute;top:0;bottom:0;left:0;z-index:3;border-right:1px solid var(--vp-code-block-divider-color);padding-top:20px;width:32px;text-align:center;font-family:var(--vp-font-family-mono);line-height:var(--vp-code-line-height);font-size:var(--vp-code-font-size);color:var(--vp-code-line-number-color);transition:border-color .5s,color .5s}.vp-doc [class*=language-]>button.copy{direction:ltr;position:absolute;top:12px;right:12px;z-index:3;border:1px solid var(--vp-code-copy-code-border-color);border-radius:4px;width:40px;height:40px;background-color:var(--vp-code-copy-code-bg);opacity:0;cursor:pointer;background-image:var(--vp-icon-copy);background-position:50%;background-size:20px;background-repeat:no-repeat;transition:border-color .25s,background-color .25s,opacity .25s}.vp-doc [class*=language-]:hover>button.copy,.vp-doc [class*=language-]>button.copy:focus{opacity:1}.vp-doc [class*=language-]>button.copy:hover,.vp-doc [class*=language-]>button.copy.copied{border-color:var(--vp-code-copy-code-hover-border-color);background-color:var(--vp-code-copy-code-hover-bg)}.vp-doc [class*=language-]>button.copy.copied,.vp-doc [class*=language-]>button.copy:hover.copied{border-radius:0 4px 4px 0;background-color:var(--vp-code-copy-code-hover-bg);background-image:var(--vp-icon-copied)}.vp-doc [class*=language-]>button.copy.copied:before,.vp-doc [class*=language-]>button.copy:hover.copied:before{position:relative;top:-1px;transform:translate(calc(-100% - 1px));display:flex;justify-content:center;align-items:center;border:1px solid var(--vp-code-copy-code-hover-border-color);border-right:0;border-radius:4px 0 0 4px;padding:0 10px;width:-moz-fit-content;width:fit-content;height:40px;text-align:center;font-size:12px;font-weight:500;color:var(--vp-code-copy-code-active-text);background-color:var(--vp-code-copy-code-hover-bg);white-space:nowrap;content:var(--vp-code-copy-copied-text-content)}.vp-doc [class*=language-]>span.lang{position:absolute;top:2px;right:8px;z-index:2;font-size:12px;font-weight:500;color:var(--vp-code-lang-color);transition:color .4s,opacity .4s}.vp-doc [class*=language-]:hover>button.copy+span.lang,.vp-doc [class*=language-]>button.copy:focus+span.lang{opacity:0}.vp-doc .VPTeamMembers{margin-top:24px}.vp-doc .VPTeamMembers.small.count-1 .container{margin:0!important;max-width:calc((100% - 24px)/2)!important}.vp-doc .VPTeamMembers.small.count-2 .container,.vp-doc .VPTeamMembers.small.count-3 .container{max-width:100%!important}.vp-doc .VPTeamMembers.medium.count-1 .container{margin:0!important;max-width:calc((100% - 24px)/2)!important}:is(.vp-external-link-icon,.vp-doc a[href*="://"],.vp-doc a[target=_blank]):not(.no-icon):after{display:inline-block;margin-top:-1px;margin-left:4px;width:11px;height:11px;background:currentColor;color:var(--vp-c-text-3);flex-shrink:0;--icon: url("data:image/svg+xml, %3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' %3E%3Cpath d='M0 0h24v24H0V0z' fill='none' /%3E%3Cpath d='M9 5v2h6.59L4 18.59 5.41 20 17 8.41V15h2V5H9z' /%3E%3C/svg%3E");-webkit-mask-image:var(--icon);mask-image:var(--icon)}.vp-external-link-icon:after{content:""}.external-link-icon-enabled :is(.vp-doc a[href*="://"],.vp-doc a[target=_blank]):after{content:"";color:currentColor}.vp-sponsor{border-radius:16px;overflow:hidden}.vp-sponsor.aside{border-radius:12px}.vp-sponsor-section+.vp-sponsor-section{margin-top:4px}.vp-sponsor-tier{margin:0 0 4px!important;text-align:center;letter-spacing:1px!important;line-height:24px;width:100%;font-weight:600;color:var(--vp-c-text-2);background-color:var(--vp-c-bg-soft)}.vp-sponsor.normal .vp-sponsor-tier{padding:13px 0 11px;font-size:14px}.vp-sponsor.aside .vp-sponsor-tier{padding:9px 0 7px;font-size:12px}.vp-sponsor-grid+.vp-sponsor-tier{margin-top:4px}.vp-sponsor-grid{display:flex;flex-wrap:wrap;gap:4px}.vp-sponsor-grid.xmini .vp-sponsor-grid-link{height:64px}.vp-sponsor-grid.xmini .vp-sponsor-grid-image{max-width:64px;max-height:22px}.vp-sponsor-grid.mini .vp-sponsor-grid-link{height:72px}.vp-sponsor-grid.mini .vp-sponsor-grid-image{max-width:96px;max-height:24px}.vp-sponsor-grid.small .vp-sponsor-grid-link{height:96px}.vp-sponsor-grid.small .vp-sponsor-grid-image{max-width:96px;max-height:24px}.vp-sponsor-grid.medium .vp-sponsor-grid-link{height:112px}.vp-sponsor-grid.medium .vp-sponsor-grid-image{max-width:120px;max-height:36px}.vp-sponsor-grid.big .vp-sponsor-grid-link{height:184px}.vp-sponsor-grid.big .vp-sponsor-grid-image{max-width:192px;max-height:56px}.vp-sponsor-grid[data-vp-grid="2"] .vp-sponsor-grid-item{width:calc((100% - 4px)/2)}.vp-sponsor-grid[data-vp-grid="3"] .vp-sponsor-grid-item{width:calc((100% - 4px * 2) / 3)}.vp-sponsor-grid[data-vp-grid="4"] .vp-sponsor-grid-item{width:calc((100% - 12px)/4)}.vp-sponsor-grid[data-vp-grid="5"] .vp-sponsor-grid-item{width:calc((100% - 16px)/5)}.vp-sponsor-grid[data-vp-grid="6"] .vp-sponsor-grid-item{width:calc((100% - 4px * 5) / 6)}.vp-sponsor-grid-item{flex-shrink:0;width:100%;background-color:var(--vp-c-bg-soft);transition:background-color .25s}.vp-sponsor-grid-item:hover{background-color:var(--vp-c-default-soft)}.vp-sponsor-grid-item:hover .vp-sponsor-grid-image{filter:grayscale(0) invert(0)}.vp-sponsor-grid-item.empty:hover{background-color:var(--vp-c-bg-soft)}.dark .vp-sponsor-grid-item:hover{background-color:var(--vp-c-white)}.dark .vp-sponsor-grid-item.empty:hover{background-color:var(--vp-c-bg-soft)}.vp-sponsor-grid-link{display:flex}.vp-sponsor-grid-box{display:flex;justify-content:center;align-items:center;width:100%}.vp-sponsor-grid-image{max-width:100%;filter:grayscale(1);transition:filter .25s}.dark .vp-sponsor-grid-image{filter:grayscale(1) invert(1)}.VPBadge{display:inline-block;margin-left:2px;border:1px solid transparent;border-radius:12px;padding:0 10px;line-height:22px;font-size:12px;font-weight:500;transform:translateY(-2px)}.VPBadge.small{padding:0 6px;line-height:18px;font-size:10px;transform:translateY(-8px)}.VPDocFooter .VPBadge{display:none}.vp-doc h1>.VPBadge{margin-top:4px;vertical-align:top}.vp-doc h2>.VPBadge{margin-top:3px;padding:0 8px;vertical-align:top}.vp-doc h3>.VPBadge{vertical-align:middle}.vp-doc h4>.VPBadge,.vp-doc h5>.VPBadge,.vp-doc h6>.VPBadge{vertical-align:middle;line-height:18px}.VPBadge.info{border-color:var(--vp-badge-info-border);color:var(--vp-badge-info-text);background-color:var(--vp-badge-info-bg)}.VPBadge.tip{border-color:var(--vp-badge-tip-border);color:var(--vp-badge-tip-text);background-color:var(--vp-badge-tip-bg)}.VPBadge.warning{border-color:var(--vp-badge-warning-border);color:var(--vp-badge-warning-text);background-color:var(--vp-badge-warning-bg)}.VPBadge.danger{border-color:var(--vp-badge-danger-border);color:var(--vp-badge-danger-text);background-color:var(--vp-badge-danger-bg)}.VPBackdrop[data-v-c79a1216]{position:fixed;top:0;right:0;bottom:0;left:0;z-index:var(--vp-z-index-backdrop);background:var(--vp-backdrop-bg-color);transition:opacity .5s}.VPBackdrop.fade-enter-from[data-v-c79a1216],.VPBackdrop.fade-leave-to[data-v-c79a1216]{opacity:0}.VPBackdrop.fade-leave-active[data-v-c79a1216]{transition-duration:.25s}@media (min-width: 1280px){.VPBackdrop[data-v-c79a1216]{display:none}}.NotFound[data-v-d6be1790]{padding:64px 24px 96px;text-align:center}@media (min-width: 768px){.NotFound[data-v-d6be1790]{padding:96px 32px 168px}}.code[data-v-d6be1790]{line-height:64px;font-size:64px;font-weight:600}.title[data-v-d6be1790]{padding-top:12px;letter-spacing:2px;line-height:20px;font-size:20px;font-weight:700}.divider[data-v-d6be1790]{margin:24px auto 18px;width:64px;height:1px;background-color:var(--vp-c-divider)}.quote[data-v-d6be1790]{margin:0 auto;max-width:256px;font-size:14px;font-weight:500;color:var(--vp-c-text-2)}.action[data-v-d6be1790]{padding-top:20px}.link[data-v-d6be1790]{display:inline-block;border:1px solid var(--vp-c-brand-1);border-radius:16px;padding:3px 16px;font-size:14px;font-weight:500;color:var(--vp-c-brand-1);transition:border-color .25s,color .25s}.link[data-v-d6be1790]:hover{border-color:var(--vp-c-brand-2);color:var(--vp-c-brand-2)}.root[data-v-b933a997]{position:relative;z-index:1}.nested[data-v-b933a997]{padding-right:16px;padding-left:16px}.outline-link[data-v-b933a997]{display:block;line-height:32px;font-size:14px;font-weight:400;color:var(--vp-c-text-2);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;transition:color .5s}.outline-link[data-v-b933a997]:hover,.outline-link.active[data-v-b933a997]{color:var(--vp-c-text-1);transition:color .25s}.outline-link.nested[data-v-b933a997]{padding-left:13px}.VPDocAsideOutline[data-v-a5bbad30]{display:none}.VPDocAsideOutline.has-outline[data-v-a5bbad30]{display:block}.content[data-v-a5bbad30]{position:relative;border-left:1px solid var(--vp-c-divider);padding-left:16px;font-size:13px;font-weight:500}.outline-marker[data-v-a5bbad30]{position:absolute;top:32px;left:-1px;z-index:0;opacity:0;width:2px;border-radius:2px;height:18px;background-color:var(--vp-c-brand-1);transition:top .25s cubic-bezier(0,1,.5,1),background-color .5s,opacity .25s}.outline-title[data-v-a5bbad30]{line-height:32px;font-size:14px;font-weight:600}.VPDocAside[data-v-3f215769]{display:flex;flex-direction:column;flex-grow:1}.spacer[data-v-3f215769]{flex-grow:1}.VPDocAside[data-v-3f215769] .spacer+.VPDocAsideSponsors,.VPDocAside[data-v-3f215769] .spacer+.VPDocAsideCarbonAds{margin-top:24px}.VPDocAside[data-v-3f215769] .VPDocAsideSponsors+.VPDocAsideCarbonAds{margin-top:16px}.VPLastUpdated[data-v-7e05ebdb]{line-height:24px;font-size:14px;font-weight:500;color:var(--vp-c-text-2)}@media (min-width: 640px){.VPLastUpdated[data-v-7e05ebdb]{line-height:32px;font-size:14px;font-weight:500}}.VPDocFooter[data-v-d4a0bba5]{margin-top:64px}.edit-info[data-v-d4a0bba5]{padding-bottom:18px}@media (min-width: 640px){.edit-info[data-v-d4a0bba5]{display:flex;justify-content:space-between;align-items:center;padding-bottom:14px}}.edit-link-button[data-v-d4a0bba5]{display:flex;align-items:center;border:0;line-height:32px;font-size:14px;font-weight:500;color:var(--vp-c-brand-1);transition:color .25s}.edit-link-button[data-v-d4a0bba5]:hover{color:var(--vp-c-brand-2)}.edit-link-icon[data-v-d4a0bba5]{margin-right:8px}.prev-next[data-v-d4a0bba5]{border-top:1px solid var(--vp-c-divider);padding-top:24px;display:grid;grid-row-gap:8px}@media (min-width: 640px){.prev-next[data-v-d4a0bba5]{grid-template-columns:repeat(2,1fr);grid-column-gap:16px}}.pager-link[data-v-d4a0bba5]{display:block;border:1px solid var(--vp-c-divider);border-radius:8px;padding:11px 16px 13px;width:100%;height:100%;transition:border-color .25s}.pager-link[data-v-d4a0bba5]:hover{border-color:var(--vp-c-brand-1)}.pager-link.next[data-v-d4a0bba5]{margin-left:auto;text-align:right}.desc[data-v-d4a0bba5]{display:block;line-height:20px;font-size:12px;font-weight:500;color:var(--vp-c-text-2)}.title[data-v-d4a0bba5]{display:block;line-height:20px;font-size:14px;font-weight:500;color:var(--vp-c-brand-1);transition:color .25s}.VPDoc[data-v-39a288b8]{padding:32px 24px 96px;width:100%}@media (min-width: 768px){.VPDoc[data-v-39a288b8]{padding:48px 32px 128px}}@media (min-width: 960px){.VPDoc[data-v-39a288b8]{padding:48px 32px 0}.VPDoc:not(.has-sidebar) .container[data-v-39a288b8]{display:flex;justify-content:center;max-width:992px}.VPDoc:not(.has-sidebar) .content[data-v-39a288b8]{max-width:752px}}@media (min-width: 1280px){.VPDoc .container[data-v-39a288b8]{display:flex;justify-content:center}.VPDoc .aside[data-v-39a288b8]{display:block}}@media (min-width: 1440px){.VPDoc:not(.has-sidebar) .content[data-v-39a288b8]{max-width:784px}.VPDoc:not(.has-sidebar) .container[data-v-39a288b8]{max-width:1104px}}.container[data-v-39a288b8]{margin:0 auto;width:100%}.aside[data-v-39a288b8]{position:relative;display:none;order:2;flex-grow:1;padding-left:32px;width:100%;max-width:256px}.left-aside[data-v-39a288b8]{order:1;padding-left:unset;padding-right:32px}.aside-container[data-v-39a288b8]{position:fixed;top:0;padding-top:calc(var(--vp-nav-height) + var(--vp-layout-top-height, 0px) + var(--vp-doc-top-height, 0px) + 48px);width:224px;height:100vh;overflow-x:hidden;overflow-y:auto;scrollbar-width:none}.aside-container[data-v-39a288b8]::-webkit-scrollbar{display:none}.aside-curtain[data-v-39a288b8]{position:fixed;bottom:0;z-index:10;width:224px;height:32px;background:linear-gradient(transparent,var(--vp-c-bg) 70%)}.aside-content[data-v-39a288b8]{display:flex;flex-direction:column;min-height:calc(100vh - (var(--vp-nav-height) + var(--vp-layout-top-height, 0px) + 48px));padding-bottom:32px}.content[data-v-39a288b8]{position:relative;margin:0 auto;width:100%}@media (min-width: 960px){.content[data-v-39a288b8]{padding:0 32px 128px}}@media (min-width: 1280px){.content[data-v-39a288b8]{order:1;margin:0;min-width:640px}}.content-container[data-v-39a288b8]{margin:0 auto}.VPDoc.has-aside .content-container[data-v-39a288b8]{max-width:688px}.VPButton[data-v-cad61b99]{display:inline-block;border:1px solid transparent;text-align:center;font-weight:600;white-space:nowrap;transition:color .25s,border-color .25s,background-color .25s}.VPButton[data-v-cad61b99]:active{transition:color .1s,border-color .1s,background-color .1s}.VPButton.medium[data-v-cad61b99]{border-radius:20px;padding:0 20px;line-height:38px;font-size:14px}.VPButton.big[data-v-cad61b99]{border-radius:24px;padding:0 24px;line-height:46px;font-size:16px}.VPButton.brand[data-v-cad61b99]{border-color:var(--vp-button-brand-border);color:var(--vp-button-brand-text);background-color:var(--vp-button-brand-bg)}.VPButton.brand[data-v-cad61b99]:hover{border-color:var(--vp-button-brand-hover-border);color:var(--vp-button-brand-hover-text);background-color:var(--vp-button-brand-hover-bg)}.VPButton.brand[data-v-cad61b99]:active{border-color:var(--vp-button-brand-active-border);color:var(--vp-button-brand-active-text);background-color:var(--vp-button-brand-active-bg)}.VPButton.alt[data-v-cad61b99]{border-color:var(--vp-button-alt-border);color:var(--vp-button-alt-text);background-color:var(--vp-button-alt-bg)}.VPButton.alt[data-v-cad61b99]:hover{border-color:var(--vp-button-alt-hover-border);color:var(--vp-button-alt-hover-text);background-color:var(--vp-button-alt-hover-bg)}.VPButton.alt[data-v-cad61b99]:active{border-color:var(--vp-button-alt-active-border);color:var(--vp-button-alt-active-text);background-color:var(--vp-button-alt-active-bg)}.VPButton.sponsor[data-v-cad61b99]{border-color:var(--vp-button-sponsor-border);color:var(--vp-button-sponsor-text);background-color:var(--vp-button-sponsor-bg)}.VPButton.sponsor[data-v-cad61b99]:hover{border-color:var(--vp-button-sponsor-hover-border);color:var(--vp-button-sponsor-hover-text);background-color:var(--vp-button-sponsor-hover-bg)}.VPButton.sponsor[data-v-cad61b99]:active{border-color:var(--vp-button-sponsor-active-border);color:var(--vp-button-sponsor-active-text);background-color:var(--vp-button-sponsor-active-bg)}html:not(.dark) .VPImage.dark[data-v-8426fc1a]{display:none}.dark .VPImage.light[data-v-8426fc1a]{display:none}.VPHero[data-v-303bb580]{margin-top:calc((var(--vp-nav-height) + var(--vp-layout-top-height, 0px)) * -1);padding:calc(var(--vp-nav-height) + var(--vp-layout-top-height, 0px) + 48px) 24px 48px}@media (min-width: 640px){.VPHero[data-v-303bb580]{padding:calc(var(--vp-nav-height) + var(--vp-layout-top-height, 0px) + 80px) 48px 64px}}@media (min-width: 960px){.VPHero[data-v-303bb580]{padding:calc(var(--vp-nav-height) + var(--vp-layout-top-height, 0px) + 80px) 64px 64px}}.container[data-v-303bb580]{display:flex;flex-direction:column;margin:0 auto;max-width:1152px}@media (min-width: 960px){.container[data-v-303bb580]{flex-direction:row}}.main[data-v-303bb580]{position:relative;z-index:10;order:2;flex-grow:1;flex-shrink:0}.VPHero.has-image .container[data-v-303bb580]{text-align:center}@media (min-width: 960px){.VPHero.has-image .container[data-v-303bb580]{text-align:left}.main[data-v-303bb580]{order:1;width:calc((100% / 3) * 2)}.VPHero.has-image .main[data-v-303bb580]{max-width:592px}}.name[data-v-303bb580],.text[data-v-303bb580]{max-width:392px;letter-spacing:-.4px;line-height:40px;font-size:32px;font-weight:700;white-space:pre-wrap}.VPHero.has-image .name[data-v-303bb580],.VPHero.has-image .text[data-v-303bb580]{margin:0 auto}.name[data-v-303bb580]{color:var(--vp-home-hero-name-color)}.clip[data-v-303bb580]{background:var(--vp-home-hero-name-background);-webkit-background-clip:text;background-clip:text;-webkit-text-fill-color:var(--vp-home-hero-name-color)}@media (min-width: 640px){.name[data-v-303bb580],.text[data-v-303bb580]{max-width:576px;line-height:56px;font-size:48px}}@media (min-width: 960px){.name[data-v-303bb580],.text[data-v-303bb580]{line-height:64px;font-size:56px}.VPHero.has-image .name[data-v-303bb580],.VPHero.has-image .text[data-v-303bb580]{margin:0}}.tagline[data-v-303bb580]{padding-top:8px;max-width:392px;line-height:28px;font-size:18px;font-weight:500;white-space:pre-wrap;color:var(--vp-c-text-2)}.VPHero.has-image .tagline[data-v-303bb580]{margin:0 auto}@media (min-width: 640px){.tagline[data-v-303bb580]{padding-top:12px;max-width:576px;line-height:32px;font-size:20px}}@media (min-width: 960px){.tagline[data-v-303bb580]{line-height:36px;font-size:24px}.VPHero.has-image .tagline[data-v-303bb580]{margin:0}}.actions[data-v-303bb580]{display:flex;flex-wrap:wrap;margin:-6px;padding-top:24px}.VPHero.has-image .actions[data-v-303bb580]{justify-content:center}@media (min-width: 640px){.actions[data-v-303bb580]{padding-top:32px}}@media (min-width: 960px){.VPHero.has-image .actions[data-v-303bb580]{justify-content:flex-start}}.action[data-v-303bb580]{flex-shrink:0;padding:6px}.image[data-v-303bb580]{order:1;margin:-76px -24px -48px}@media (min-width: 640px){.image[data-v-303bb580]{margin:-108px -24px -48px}}@media (min-width: 960px){.image[data-v-303bb580]{flex-grow:1;order:2;margin:0;min-height:100%}}.image-container[data-v-303bb580]{position:relative;margin:0 auto;width:320px;height:320px}@media (min-width: 640px){.image-container[data-v-303bb580]{width:392px;height:392px}}@media (min-width: 960px){.image-container[data-v-303bb580]{display:flex;justify-content:center;align-items:center;width:100%;height:100%;transform:translate(-32px,-32px)}}.image-bg[data-v-303bb580]{position:absolute;top:50%;left:50%;border-radius:50%;width:192px;height:192px;background-image:var(--vp-home-hero-image-background-image);filter:var(--vp-home-hero-image-filter);transform:translate(-50%,-50%)}@media (min-width: 640px){.image-bg[data-v-303bb580]{width:256px;height:256px}}@media (min-width: 960px){.image-bg[data-v-303bb580]{width:320px;height:320px}}[data-v-303bb580] .image-src{position:absolute;top:50%;left:50%;max-width:192px;max-height:192px;transform:translate(-50%,-50%)}@media (min-width: 640px){[data-v-303bb580] .image-src{max-width:256px;max-height:256px}}@media (min-width: 960px){[data-v-303bb580] .image-src{max-width:320px;max-height:320px}}.VPFeature[data-v-a3976bdc]{display:block;border:1px solid var(--vp-c-bg-soft);border-radius:12px;height:100%;background-color:var(--vp-c-bg-soft);transition:border-color .25s,background-color .25s}.VPFeature.link[data-v-a3976bdc]:hover{border-color:var(--vp-c-brand-1)}.box[data-v-a3976bdc]{display:flex;flex-direction:column;padding:24px;height:100%}.box[data-v-a3976bdc]>.VPImage{margin-bottom:20px}.icon[data-v-a3976bdc]{display:flex;justify-content:center;align-items:center;margin-bottom:20px;border-radius:6px;background-color:var(--vp-c-default-soft);width:48px;height:48px;font-size:24px;transition:background-color .25s}.title[data-v-a3976bdc]{line-height:24px;font-size:16px;font-weight:600}.details[data-v-a3976bdc]{flex-grow:1;padding-top:8px;line-height:24px;font-size:14px;font-weight:500;color:var(--vp-c-text-2)}.link-text[data-v-a3976bdc]{padding-top:8px}.link-text-value[data-v-a3976bdc]{display:flex;align-items:center;font-size:14px;font-weight:500;color:var(--vp-c-brand-1)}.link-text-icon[data-v-a3976bdc]{margin-left:6px}.VPFeatures[data-v-a6181336]{position:relative;padding:0 24px}@media (min-width: 640px){.VPFeatures[data-v-a6181336]{padding:0 48px}}@media (min-width: 960px){.VPFeatures[data-v-a6181336]{padding:0 64px}}.container[data-v-a6181336]{margin:0 auto;max-width:1152px}.items[data-v-a6181336]{display:flex;flex-wrap:wrap;margin:-8px}.item[data-v-a6181336]{padding:8px;width:100%}@media (min-width: 640px){.item.grid-2[data-v-a6181336],.item.grid-4[data-v-a6181336],.item.grid-6[data-v-a6181336]{width:50%}}@media (min-width: 768px){.item.grid-2[data-v-a6181336],.item.grid-4[data-v-a6181336]{width:50%}.item.grid-3[data-v-a6181336],.item.grid-6[data-v-a6181336]{width:calc(100% / 3)}}@media (min-width: 960px){.item.grid-4[data-v-a6181336]{width:25%}}.container[data-v-8e2d4988]{margin:auto;width:100%;max-width:1280px;padding:0 24px}@media (min-width: 640px){.container[data-v-8e2d4988]{padding:0 48px}}@media (min-width: 960px){.container[data-v-8e2d4988]{width:100%;padding:0 64px}}.vp-doc[data-v-8e2d4988] .VPHomeSponsors,.vp-doc[data-v-8e2d4988] .VPTeamPage{margin-left:var(--vp-offset, calc(50% - 50vw) );margin-right:var(--vp-offset, calc(50% - 50vw) )}.vp-doc[data-v-8e2d4988] .VPHomeSponsors h2{border-top:none;letter-spacing:normal}.vp-doc[data-v-8e2d4988] .VPHomeSponsors a,.vp-doc[data-v-8e2d4988] .VPTeamPage a{text-decoration:none}.VPHome[data-v-686f80a6]{margin-bottom:96px}@media (min-width: 768px){.VPHome[data-v-686f80a6]{margin-bottom:128px}}.VPContent[data-v-1428d186]{flex-grow:1;flex-shrink:0;margin:var(--vp-layout-top-height, 0px) auto 0;width:100%}.VPContent.is-home[data-v-1428d186]{width:100%;max-width:100%}.VPContent.has-sidebar[data-v-1428d186]{margin:0}@media (min-width: 960px){.VPContent[data-v-1428d186]{padding-top:var(--vp-nav-height)}.VPContent.has-sidebar[data-v-1428d186]{margin:var(--vp-layout-top-height, 0px) 0 0;padding-left:var(--vp-sidebar-width)}}@media (min-width: 1440px){.VPContent.has-sidebar[data-v-1428d186]{padding-right:calc((100vw - var(--vp-layout-max-width)) / 2);padding-left:calc((100vw - var(--vp-layout-max-width)) / 2 + var(--vp-sidebar-width))}}.VPFooter[data-v-e315a0ad]{position:relative;z-index:var(--vp-z-index-footer);border-top:1px solid var(--vp-c-gutter);padding:32px 24px;background-color:var(--vp-c-bg)}.VPFooter.has-sidebar[data-v-e315a0ad]{display:none}.VPFooter[data-v-e315a0ad] a{text-decoration-line:underline;text-underline-offset:2px;transition:color .25s}.VPFooter[data-v-e315a0ad] a:hover{color:var(--vp-c-text-1)}@media (min-width: 768px){.VPFooter[data-v-e315a0ad]{padding:32px}}.container[data-v-e315a0ad]{margin:0 auto;max-width:var(--vp-layout-max-width);text-align:center}.message[data-v-e315a0ad],.copyright[data-v-e315a0ad]{line-height:24px;font-size:14px;font-weight:500;color:var(--vp-c-text-2)}.VPLocalNavOutlineDropdown[data-v-17a5e62e]{padding:12px 20px 11px}@media (min-width: 960px){.VPLocalNavOutlineDropdown[data-v-17a5e62e]{padding:12px 36px 11px}}.VPLocalNavOutlineDropdown button[data-v-17a5e62e]{display:block;font-size:12px;font-weight:500;line-height:24px;color:var(--vp-c-text-2);transition:color .5s;position:relative}.VPLocalNavOutlineDropdown button[data-v-17a5e62e]:hover{color:var(--vp-c-text-1);transition:color .25s}.VPLocalNavOutlineDropdown button.open[data-v-17a5e62e]{color:var(--vp-c-text-1)}.icon[data-v-17a5e62e]{display:inline-block;vertical-align:middle;margin-left:2px;font-size:14px;transform:rotate(0);transition:transform .25s}@media (min-width: 960px){.VPLocalNavOutlineDropdown button[data-v-17a5e62e]{font-size:14px}.icon[data-v-17a5e62e]{font-size:16px}}.open>.icon[data-v-17a5e62e]{transform:rotate(90deg)}.items[data-v-17a5e62e]{position:absolute;top:40px;right:16px;left:16px;display:grid;gap:1px;border:1px solid var(--vp-c-border);border-radius:8px;background-color:var(--vp-c-gutter);max-height:calc(var(--vp-vh, 100vh) - 86px);overflow:hidden auto;box-shadow:var(--vp-shadow-3)}@media (min-width: 960px){.items[data-v-17a5e62e]{right:auto;left:calc(var(--vp-sidebar-width) + 32px);width:320px}}.header[data-v-17a5e62e]{background-color:var(--vp-c-bg-soft)}.top-link[data-v-17a5e62e]{display:block;padding:0 16px;line-height:48px;font-size:14px;font-weight:500;color:var(--vp-c-brand-1)}.outline[data-v-17a5e62e]{padding:8px 0;background-color:var(--vp-c-bg-soft)}.flyout-enter-active[data-v-17a5e62e]{transition:all .2s ease-out}.flyout-leave-active[data-v-17a5e62e]{transition:all .15s ease-in}.flyout-enter-from[data-v-17a5e62e],.flyout-leave-to[data-v-17a5e62e]{opacity:0;transform:translateY(-16px)}.VPLocalNav[data-v-a6f0e41e]{position:sticky;top:0;left:0;z-index:var(--vp-z-index-local-nav);border-bottom:1px solid var(--vp-c-gutter);padding-top:var(--vp-layout-top-height, 0px);width:100%;background-color:var(--vp-local-nav-bg-color)}.VPLocalNav.fixed[data-v-a6f0e41e]{position:fixed}@media (min-width: 960px){.VPLocalNav[data-v-a6f0e41e]{top:var(--vp-nav-height)}.VPLocalNav.has-sidebar[data-v-a6f0e41e]{padding-left:var(--vp-sidebar-width)}.VPLocalNav.empty[data-v-a6f0e41e]{display:none}}@media (min-width: 1280px){.VPLocalNav[data-v-a6f0e41e]{display:none}}@media (min-width: 1440px){.VPLocalNav.has-sidebar[data-v-a6f0e41e]{padding-left:calc((100vw - var(--vp-layout-max-width)) / 2 + var(--vp-sidebar-width))}}.container[data-v-a6f0e41e]{display:flex;justify-content:space-between;align-items:center}.menu[data-v-a6f0e41e]{display:flex;align-items:center;padding:12px 24px 11px;line-height:24px;font-size:12px;font-weight:500;color:var(--vp-c-text-2);transition:color .5s}.menu[data-v-a6f0e41e]:hover{color:var(--vp-c-text-1);transition:color .25s}@media (min-width: 768px){.menu[data-v-a6f0e41e]{padding:0 32px}}@media (min-width: 960px){.menu[data-v-a6f0e41e]{display:none}}.menu-icon[data-v-a6f0e41e]{margin-right:8px;font-size:14px}.VPOutlineDropdown[data-v-a6f0e41e]{padding:12px 24px 11px}@media (min-width: 768px){.VPOutlineDropdown[data-v-a6f0e41e]{padding:12px 32px 11px}}.VPSwitch[data-v-1d5665e3]{position:relative;border-radius:11px;display:block;width:40px;height:22px;flex-shrink:0;border:1px solid var(--vp-input-border-color);background-color:var(--vp-input-switch-bg-color);transition:border-color .25s!important}.VPSwitch[data-v-1d5665e3]:hover{border-color:var(--vp-c-brand-1)}.check[data-v-1d5665e3]{position:absolute;top:1px;left:1px;width:18px;height:18px;border-radius:50%;background-color:var(--vp-c-neutral-inverse);box-shadow:var(--vp-shadow-1);transition:transform .25s!important}.icon[data-v-1d5665e3]{position:relative;display:block;width:18px;height:18px;border-radius:50%;overflow:hidden}.icon[data-v-1d5665e3] [class^=vpi-]{position:absolute;top:3px;left:3px;width:12px;height:12px;color:var(--vp-c-text-2)}.dark .icon[data-v-1d5665e3] [class^=vpi-]{color:var(--vp-c-text-1);transition:opacity .25s!important}.sun[data-v-d1f28634]{opacity:1}.moon[data-v-d1f28634],.dark .sun[data-v-d1f28634]{opacity:0}.dark .moon[data-v-d1f28634]{opacity:1}.dark .VPSwitchAppearance[data-v-d1f28634] .check{transform:translate(18px)}.VPNavBarAppearance[data-v-e6aabb21]{display:none}@media (min-width: 1280px){.VPNavBarAppearance[data-v-e6aabb21]{display:flex;align-items:center}}.VPMenuGroup+.VPMenuLink[data-v-43f1e123]{margin:12px -12px 0;border-top:1px solid var(--vp-c-divider);padding:12px 12px 0}.link[data-v-43f1e123]{display:block;border-radius:6px;padding:0 12px;line-height:32px;font-size:14px;font-weight:500;color:var(--vp-c-text-1);white-space:nowrap;transition:background-color .25s,color .25s}.link[data-v-43f1e123]:hover{color:var(--vp-c-brand-1);background-color:var(--vp-c-default-soft)}.link.active[data-v-43f1e123]{color:var(--vp-c-brand-1)}.VPMenuGroup[data-v-69e747b5]{margin:12px -12px 0;border-top:1px solid var(--vp-c-divider);padding:12px 12px 0}.VPMenuGroup[data-v-69e747b5]:first-child{margin-top:0;border-top:0;padding-top:0}.VPMenuGroup+.VPMenuGroup[data-v-69e747b5]{margin-top:12px;border-top:1px solid var(--vp-c-divider)}.title[data-v-69e747b5]{padding:0 12px;line-height:32px;font-size:14px;font-weight:600;color:var(--vp-c-text-2);white-space:nowrap;transition:color .25s}.VPMenu[data-v-e7ea1737]{border-radius:12px;padding:12px;min-width:128px;border:1px solid var(--vp-c-divider);background-color:var(--vp-c-bg-elv);box-shadow:var(--vp-shadow-3);transition:background-color .5s;max-height:calc(100vh - var(--vp-nav-height));overflow-y:auto}.VPMenu[data-v-e7ea1737] .group{margin:0 -12px;padding:0 12px 12px}.VPMenu[data-v-e7ea1737] .group+.group{border-top:1px solid var(--vp-c-divider);padding:11px 12px 12px}.VPMenu[data-v-e7ea1737] .group:last-child{padding-bottom:0}.VPMenu[data-v-e7ea1737] .group+.item{border-top:1px solid var(--vp-c-divider);padding:11px 16px 0}.VPMenu[data-v-e7ea1737] .item{padding:0 16px;white-space:nowrap}.VPMenu[data-v-e7ea1737] .label{flex-grow:1;line-height:28px;font-size:12px;font-weight:500;color:var(--vp-c-text-2);transition:color .5s}.VPMenu[data-v-e7ea1737] .action{padding-left:24px}.VPFlyout[data-v-b6c34ac9]{position:relative}.VPFlyout[data-v-b6c34ac9]:hover{color:var(--vp-c-brand-1);transition:color .25s}.VPFlyout:hover .text[data-v-b6c34ac9]{color:var(--vp-c-text-2)}.VPFlyout:hover .icon[data-v-b6c34ac9]{fill:var(--vp-c-text-2)}.VPFlyout.active .text[data-v-b6c34ac9]{color:var(--vp-c-brand-1)}.VPFlyout.active:hover .text[data-v-b6c34ac9]{color:var(--vp-c-brand-2)}.VPFlyout:hover .menu[data-v-b6c34ac9],.button[aria-expanded=true]+.menu[data-v-b6c34ac9]{opacity:1;visibility:visible;transform:translateY(0)}.button[aria-expanded=false]+.menu[data-v-b6c34ac9]{opacity:0;visibility:hidden;transform:translateY(0)}.button[data-v-b6c34ac9]{display:flex;align-items:center;padding:0 12px;height:var(--vp-nav-height);color:var(--vp-c-text-1);transition:color .5s}.text[data-v-b6c34ac9]{display:flex;align-items:center;line-height:var(--vp-nav-height);font-size:14px;font-weight:500;color:var(--vp-c-text-1);transition:color .25s}.option-icon[data-v-b6c34ac9]{margin-right:0;font-size:16px}.text-icon[data-v-b6c34ac9]{margin-left:4px;font-size:14px}.icon[data-v-b6c34ac9]{font-size:20px;transition:fill .25s}.menu[data-v-b6c34ac9]{position:absolute;top:calc(var(--vp-nav-height) / 2 + 20px);right:0;opacity:0;visibility:hidden;transition:opacity .25s,visibility .25s,transform .25s}.VPSocialLink[data-v-eee4e7cb]{display:flex;justify-content:center;align-items:center;width:36px;height:36px;color:var(--vp-c-text-2);transition:color .5s}.VPSocialLink[data-v-eee4e7cb]:hover{color:var(--vp-c-text-1);transition:color .25s}.VPSocialLink[data-v-eee4e7cb]>svg,.VPSocialLink[data-v-eee4e7cb]>[class^=vpi-social-]{width:20px;height:20px;fill:currentColor}.VPSocialLinks[data-v-7bc22406]{display:flex;justify-content:center}.VPNavBarExtra[data-v-d0bd9dde]{display:none;margin-right:-12px}@media (min-width: 768px){.VPNavBarExtra[data-v-d0bd9dde]{display:block}}@media (min-width: 1280px){.VPNavBarExtra[data-v-d0bd9dde]{display:none}}.trans-title[data-v-d0bd9dde]{padding:0 24px 0 12px;line-height:32px;font-size:14px;font-weight:700;color:var(--vp-c-text-1)}.item.appearance[data-v-d0bd9dde],.item.social-links[data-v-d0bd9dde]{display:flex;align-items:center;padding:0 12px}.item.appearance[data-v-d0bd9dde]{min-width:176px}.appearance-action[data-v-d0bd9dde]{margin-right:-2px}.social-links-list[data-v-d0bd9dde]{margin:-4px -8px}.VPNavBarHamburger[data-v-e5dd9c1c]{display:flex;justify-content:center;align-items:center;width:48px;height:var(--vp-nav-height)}@media (min-width: 768px){.VPNavBarHamburger[data-v-e5dd9c1c]{display:none}}.container[data-v-e5dd9c1c]{position:relative;width:16px;height:14px;overflow:hidden}.VPNavBarHamburger:hover .top[data-v-e5dd9c1c]{top:0;left:0;transform:translate(4px)}.VPNavBarHamburger:hover .middle[data-v-e5dd9c1c]{top:6px;left:0;transform:translate(0)}.VPNavBarHamburger:hover .bottom[data-v-e5dd9c1c]{top:12px;left:0;transform:translate(8px)}.VPNavBarHamburger.active .top[data-v-e5dd9c1c]{top:6px;transform:translate(0) rotate(225deg)}.VPNavBarHamburger.active .middle[data-v-e5dd9c1c]{top:6px;transform:translate(16px)}.VPNavBarHamburger.active .bottom[data-v-e5dd9c1c]{top:6px;transform:translate(0) rotate(135deg)}.VPNavBarHamburger.active:hover .top[data-v-e5dd9c1c],.VPNavBarHamburger.active:hover .middle[data-v-e5dd9c1c],.VPNavBarHamburger.active:hover .bottom[data-v-e5dd9c1c]{background-color:var(--vp-c-text-2);transition:top .25s,background-color .25s,transform .25s}.top[data-v-e5dd9c1c],.middle[data-v-e5dd9c1c],.bottom[data-v-e5dd9c1c]{position:absolute;width:16px;height:2px;background-color:var(--vp-c-text-1);transition:top .25s,background-color .5s,transform .25s}.top[data-v-e5dd9c1c]{top:0;left:0;transform:translate(0)}.middle[data-v-e5dd9c1c]{top:6px;left:0;transform:translate(8px)}.bottom[data-v-e5dd9c1c]{top:12px;left:0;transform:translate(4px)}.VPNavBarMenuLink[data-v-9c663999]{display:flex;align-items:center;padding:0 12px;line-height:var(--vp-nav-height);font-size:14px;font-weight:500;color:var(--vp-c-text-1);transition:color .25s}.VPNavBarMenuLink.active[data-v-9c663999],.VPNavBarMenuLink[data-v-9c663999]:hover{color:var(--vp-c-brand-1)}.VPNavBarMenu[data-v-7f418b0f]{display:none}@media (min-width: 768px){.VPNavBarMenu[data-v-7f418b0f]{display:flex}}/*! @docsearch/css 3.6.0 | MIT License | © Algolia, Inc. and contributors | https://docsearch.algolia.com */:root{--docsearch-primary-color:#5468ff;--docsearch-text-color:#1c1e21;--docsearch-spacing:12px;--docsearch-icon-stroke-width:1.4;--docsearch-highlight-color:var(--docsearch-primary-color);--docsearch-muted-color:#969faf;--docsearch-container-background:rgba(101,108,133,.8);--docsearch-logo-color:#5468ff;--docsearch-modal-width:560px;--docsearch-modal-height:600px;--docsearch-modal-background:#f5f6f7;--docsearch-modal-shadow:inset 1px 1px 0 0 hsla(0,0%,100%,.5),0 3px 8px 0 #555a64;--docsearch-searchbox-height:56px;--docsearch-searchbox-background:#ebedf0;--docsearch-searchbox-focus-background:#fff;--docsearch-searchbox-shadow:inset 0 0 0 2px var(--docsearch-primary-color);--docsearch-hit-height:56px;--docsearch-hit-color:#444950;--docsearch-hit-active-color:#fff;--docsearch-hit-background:#fff;--docsearch-hit-shadow:0 1px 3px 0 #d4d9e1;--docsearch-key-gradient:linear-gradient(-225deg,#d5dbe4,#f8f8f8);--docsearch-key-shadow:inset 0 -2px 0 0 #cdcde6,inset 0 0 1px 1px #fff,0 1px 2px 1px rgba(30,35,90,.4);--docsearch-key-pressed-shadow:inset 0 -2px 0 0 #cdcde6,inset 0 0 1px 1px #fff,0 1px 1px 0 rgba(30,35,90,.4);--docsearch-footer-height:44px;--docsearch-footer-background:#fff;--docsearch-footer-shadow:0 -1px 0 0 #e0e3e8,0 -3px 6px 0 rgba(69,98,155,.12)}html[data-theme=dark]{--docsearch-text-color:#f5f6f7;--docsearch-container-background:rgba(9,10,17,.8);--docsearch-modal-background:#15172a;--docsearch-modal-shadow:inset 1px 1px 0 0 #2c2e40,0 3px 8px 0 #000309;--docsearch-searchbox-background:#090a11;--docsearch-searchbox-focus-background:#000;--docsearch-hit-color:#bec3c9;--docsearch-hit-shadow:none;--docsearch-hit-background:#090a11;--docsearch-key-gradient:linear-gradient(-26.5deg,#565872,#31355b);--docsearch-key-shadow:inset 0 -2px 0 0 #282d55,inset 0 0 1px 1px #51577d,0 2px 2px 0 rgba(3,4,9,.3);--docsearch-key-pressed-shadow:inset 0 -2px 0 0 #282d55,inset 0 0 1px 1px #51577d,0 1px 1px 0 rgba(3,4,9,.30196078431372547);--docsearch-footer-background:#1e2136;--docsearch-footer-shadow:inset 0 1px 0 0 rgba(73,76,106,.5),0 -4px 8px 0 rgba(0,0,0,.2);--docsearch-logo-color:#fff;--docsearch-muted-color:#7f8497}.DocSearch-Button{align-items:center;background:var(--docsearch-searchbox-background);border:0;border-radius:40px;color:var(--docsearch-muted-color);cursor:pointer;display:flex;font-weight:500;height:36px;justify-content:space-between;margin:0 0 0 16px;padding:0 8px;-webkit-user-select:none;-moz-user-select:none;user-select:none}.DocSearch-Button:active,.DocSearch-Button:focus,.DocSearch-Button:hover{background:var(--docsearch-searchbox-focus-background);box-shadow:var(--docsearch-searchbox-shadow);color:var(--docsearch-text-color);outline:none}.DocSearch-Button-Container{align-items:center;display:flex}.DocSearch-Search-Icon{stroke-width:1.6}.DocSearch-Button .DocSearch-Search-Icon{color:var(--docsearch-text-color)}.DocSearch-Button-Placeholder{font-size:1rem;padding:0 12px 0 6px}.DocSearch-Button-Keys{display:flex;min-width:calc(40px + .8em)}.DocSearch-Button-Key{align-items:center;background:var(--docsearch-key-gradient);border-radius:3px;box-shadow:var(--docsearch-key-shadow);color:var(--docsearch-muted-color);display:flex;height:18px;justify-content:center;margin-right:.4em;position:relative;padding:0 0 2px;border:0;top:-1px;width:20px}.DocSearch-Button-Key--pressed{transform:translate3d(0,1px,0);box-shadow:var(--docsearch-key-pressed-shadow)}@media (max-width:768px){.DocSearch-Button-Keys,.DocSearch-Button-Placeholder{display:none}}.DocSearch--active{overflow:hidden!important}.DocSearch-Container,.DocSearch-Container *{box-sizing:border-box}.DocSearch-Container{background-color:var(--docsearch-container-background);height:100vh;left:0;position:fixed;top:0;width:100vw;z-index:200}.DocSearch-Container a{text-decoration:none}.DocSearch-Link{-webkit-appearance:none;-moz-appearance:none;appearance:none;background:none;border:0;color:var(--docsearch-highlight-color);cursor:pointer;font:inherit;margin:0;padding:0}.DocSearch-Modal{background:var(--docsearch-modal-background);border-radius:6px;box-shadow:var(--docsearch-modal-shadow);flex-direction:column;margin:60px auto auto;max-width:var(--docsearch-modal-width);position:relative}.DocSearch-SearchBar{display:flex;padding:var(--docsearch-spacing) var(--docsearch-spacing) 0}.DocSearch-Form{align-items:center;background:var(--docsearch-searchbox-focus-background);border-radius:4px;box-shadow:var(--docsearch-searchbox-shadow);display:flex;height:var(--docsearch-searchbox-height);margin:0;padding:0 var(--docsearch-spacing);position:relative;width:100%}.DocSearch-Input{-webkit-appearance:none;-moz-appearance:none;appearance:none;background:transparent;border:0;color:var(--docsearch-text-color);flex:1;font:inherit;font-size:1.2em;height:100%;outline:none;padding:0 0 0 8px;width:80%}.DocSearch-Input::-moz-placeholder{color:var(--docsearch-muted-color);opacity:1}.DocSearch-Input::placeholder{color:var(--docsearch-muted-color);opacity:1}.DocSearch-Input::-webkit-search-cancel-button,.DocSearch-Input::-webkit-search-decoration,.DocSearch-Input::-webkit-search-results-button,.DocSearch-Input::-webkit-search-results-decoration{display:none}.DocSearch-LoadingIndicator,.DocSearch-MagnifierLabel,.DocSearch-Reset{margin:0;padding:0}.DocSearch-MagnifierLabel,.DocSearch-Reset{align-items:center;color:var(--docsearch-highlight-color);display:flex;justify-content:center}.DocSearch-Container--Stalled .DocSearch-MagnifierLabel,.DocSearch-LoadingIndicator{display:none}.DocSearch-Container--Stalled .DocSearch-LoadingIndicator{align-items:center;color:var(--docsearch-highlight-color);display:flex;justify-content:center}@media screen and (prefers-reduced-motion:reduce){.DocSearch-Reset{animation:none;-webkit-appearance:none;-moz-appearance:none;appearance:none;background:none;border:0;border-radius:50%;color:var(--docsearch-icon-color);cursor:pointer;right:0;stroke-width:var(--docsearch-icon-stroke-width)}}.DocSearch-Reset{animation:fade-in .1s ease-in forwards;-webkit-appearance:none;-moz-appearance:none;appearance:none;background:none;border:0;border-radius:50%;color:var(--docsearch-icon-color);cursor:pointer;padding:2px;right:0;stroke-width:var(--docsearch-icon-stroke-width)}.DocSearch-Reset[hidden]{display:none}.DocSearch-Reset:hover{color:var(--docsearch-highlight-color)}.DocSearch-LoadingIndicator svg,.DocSearch-MagnifierLabel svg{height:24px;width:24px}.DocSearch-Cancel{display:none}.DocSearch-Dropdown{max-height:calc(var(--docsearch-modal-height) - var(--docsearch-searchbox-height) - var(--docsearch-spacing) - var(--docsearch-footer-height));min-height:var(--docsearch-spacing);overflow-y:auto;overflow-y:overlay;padding:0 var(--docsearch-spacing);scrollbar-color:var(--docsearch-muted-color) var(--docsearch-modal-background);scrollbar-width:thin}.DocSearch-Dropdown::-webkit-scrollbar{width:12px}.DocSearch-Dropdown::-webkit-scrollbar-track{background:transparent}.DocSearch-Dropdown::-webkit-scrollbar-thumb{background-color:var(--docsearch-muted-color);border:3px solid var(--docsearch-modal-background);border-radius:20px}.DocSearch-Dropdown ul{list-style:none;margin:0;padding:0}.DocSearch-Label{font-size:.75em;line-height:1.6em}.DocSearch-Help,.DocSearch-Label{color:var(--docsearch-muted-color)}.DocSearch-Help{font-size:.9em;margin:0;-webkit-user-select:none;-moz-user-select:none;user-select:none}.DocSearch-Title{font-size:1.2em}.DocSearch-Logo a{display:flex}.DocSearch-Logo svg{color:var(--docsearch-logo-color);margin-left:8px}.DocSearch-Hits:last-of-type{margin-bottom:24px}.DocSearch-Hits mark{background:none;color:var(--docsearch-highlight-color)}.DocSearch-HitsFooter{color:var(--docsearch-muted-color);display:flex;font-size:.85em;justify-content:center;margin-bottom:var(--docsearch-spacing);padding:var(--docsearch-spacing)}.DocSearch-HitsFooter a{border-bottom:1px solid;color:inherit}.DocSearch-Hit{border-radius:4px;display:flex;padding-bottom:4px;position:relative}@media screen and (prefers-reduced-motion:reduce){.DocSearch-Hit--deleting{transition:none}}.DocSearch-Hit--deleting{opacity:0;transition:all .25s linear}@media screen and (prefers-reduced-motion:reduce){.DocSearch-Hit--favoriting{transition:none}}.DocSearch-Hit--favoriting{transform:scale(0);transform-origin:top center;transition:all .25s linear;transition-delay:.25s}.DocSearch-Hit a{background:var(--docsearch-hit-background);border-radius:4px;box-shadow:var(--docsearch-hit-shadow);display:block;padding-left:var(--docsearch-spacing);width:100%}.DocSearch-Hit-source{background:var(--docsearch-modal-background);color:var(--docsearch-highlight-color);font-size:.85em;font-weight:600;line-height:32px;margin:0 -4px;padding:8px 4px 0;position:sticky;top:0;z-index:10}.DocSearch-Hit-Tree{color:var(--docsearch-muted-color);height:var(--docsearch-hit-height);opacity:.5;stroke-width:var(--docsearch-icon-stroke-width);width:24px}.DocSearch-Hit[aria-selected=true] a{background-color:var(--docsearch-highlight-color)}.DocSearch-Hit[aria-selected=true] mark{text-decoration:underline}.DocSearch-Hit-Container{align-items:center;color:var(--docsearch-hit-color);display:flex;flex-direction:row;height:var(--docsearch-hit-height);padding:0 var(--docsearch-spacing) 0 0}.DocSearch-Hit-icon{height:20px;width:20px}.DocSearch-Hit-action,.DocSearch-Hit-icon{color:var(--docsearch-muted-color);stroke-width:var(--docsearch-icon-stroke-width)}.DocSearch-Hit-action{align-items:center;display:flex;height:22px;width:22px}.DocSearch-Hit-action svg{display:block;height:18px;width:18px}.DocSearch-Hit-action+.DocSearch-Hit-action{margin-left:6px}.DocSearch-Hit-action-button{-webkit-appearance:none;-moz-appearance:none;appearance:none;background:none;border:0;border-radius:50%;color:inherit;cursor:pointer;padding:2px}svg.DocSearch-Hit-Select-Icon{display:none}.DocSearch-Hit[aria-selected=true] .DocSearch-Hit-Select-Icon{display:block}.DocSearch-Hit-action-button:focus,.DocSearch-Hit-action-button:hover{background:#0003;transition:background-color .1s ease-in}@media screen and (prefers-reduced-motion:reduce){.DocSearch-Hit-action-button:focus,.DocSearch-Hit-action-button:hover{transition:none}}.DocSearch-Hit-action-button:focus path,.DocSearch-Hit-action-button:hover path{fill:#fff}.DocSearch-Hit-content-wrapper{display:flex;flex:1 1 auto;flex-direction:column;font-weight:500;justify-content:center;line-height:1.2em;margin:0 8px;overflow-x:hidden;position:relative;text-overflow:ellipsis;white-space:nowrap;width:80%}.DocSearch-Hit-title{font-size:.9em}.DocSearch-Hit-path{color:var(--docsearch-muted-color);font-size:.75em}.DocSearch-Hit[aria-selected=true] .DocSearch-Hit-action,.DocSearch-Hit[aria-selected=true] .DocSearch-Hit-icon,.DocSearch-Hit[aria-selected=true] .DocSearch-Hit-path,.DocSearch-Hit[aria-selected=true] .DocSearch-Hit-text,.DocSearch-Hit[aria-selected=true] .DocSearch-Hit-title,.DocSearch-Hit[aria-selected=true] .DocSearch-Hit-Tree,.DocSearch-Hit[aria-selected=true] mark{color:var(--docsearch-hit-active-color)!important}@media screen and (prefers-reduced-motion:reduce){.DocSearch-Hit-action-button:focus,.DocSearch-Hit-action-button:hover{background:#0003;transition:none}}.DocSearch-ErrorScreen,.DocSearch-NoResults,.DocSearch-StartScreen{font-size:.9em;margin:0 auto;padding:36px 0;text-align:center;width:80%}.DocSearch-Screen-Icon{color:var(--docsearch-muted-color);padding-bottom:12px}.DocSearch-NoResults-Prefill-List{display:inline-block;padding-bottom:24px;text-align:left}.DocSearch-NoResults-Prefill-List ul{display:inline-block;padding:8px 0 0}.DocSearch-NoResults-Prefill-List li{list-style-position:inside;list-style-type:"» "}.DocSearch-Prefill{-webkit-appearance:none;-moz-appearance:none;appearance:none;background:none;border:0;border-radius:1em;color:var(--docsearch-highlight-color);cursor:pointer;display:inline-block;font-size:1em;font-weight:700;padding:0}.DocSearch-Prefill:focus,.DocSearch-Prefill:hover{outline:none;text-decoration:underline}.DocSearch-Footer{align-items:center;background:var(--docsearch-footer-background);border-radius:0 0 8px 8px;box-shadow:var(--docsearch-footer-shadow);display:flex;flex-direction:row-reverse;flex-shrink:0;height:var(--docsearch-footer-height);justify-content:space-between;padding:0 var(--docsearch-spacing);position:relative;-webkit-user-select:none;-moz-user-select:none;user-select:none;width:100%;z-index:300}.DocSearch-Commands{color:var(--docsearch-muted-color);display:flex;list-style:none;margin:0;padding:0}.DocSearch-Commands li{align-items:center;display:flex}.DocSearch-Commands li:not(:last-of-type){margin-right:.8em}.DocSearch-Commands-Key{align-items:center;background:var(--docsearch-key-gradient);border-radius:2px;box-shadow:var(--docsearch-key-shadow);display:flex;height:18px;justify-content:center;margin-right:.4em;padding:0 0 1px;color:var(--docsearch-muted-color);border:0;width:20px}.DocSearch-VisuallyHiddenForAccessibility{clip:rect(0 0 0 0);-webkit-clip-path:inset(50%);clip-path:inset(50%);height:1px;overflow:hidden;position:absolute;white-space:nowrap;width:1px}@media (max-width:768px){:root{--docsearch-spacing:10px;--docsearch-footer-height:40px}.DocSearch-Dropdown{height:100%}.DocSearch-Container{height:100vh;height:-webkit-fill-available;height:calc(var(--docsearch-vh, 1vh)*100);position:absolute}.DocSearch-Footer{border-radius:0;bottom:0;position:absolute}.DocSearch-Hit-content-wrapper{display:flex;position:relative;width:80%}.DocSearch-Modal{border-radius:0;box-shadow:none;height:100vh;height:-webkit-fill-available;height:calc(var(--docsearch-vh, 1vh)*100);margin:0;max-width:100%;width:100%}.DocSearch-Dropdown{max-height:calc(var(--docsearch-vh, 1vh)*100 - var(--docsearch-searchbox-height) - var(--docsearch-spacing) - var(--docsearch-footer-height))}.DocSearch-Cancel{-webkit-appearance:none;-moz-appearance:none;appearance:none;background:none;border:0;color:var(--docsearch-highlight-color);cursor:pointer;display:inline-block;flex:none;font:inherit;font-size:1em;font-weight:500;margin-left:var(--docsearch-spacing);outline:none;overflow:hidden;padding:0;-webkit-user-select:none;-moz-user-select:none;user-select:none;white-space:nowrap}.DocSearch-Commands,.DocSearch-Hit-Tree{display:none}}@keyframes fade-in{0%{opacity:0}to{opacity:1}}[class*=DocSearch]{--docsearch-primary-color: var(--vp-c-brand-1);--docsearch-highlight-color: var(--docsearch-primary-color);--docsearch-text-color: var(--vp-c-text-1);--docsearch-muted-color: var(--vp-c-text-2);--docsearch-searchbox-shadow: none;--docsearch-searchbox-background: transparent;--docsearch-searchbox-focus-background: transparent;--docsearch-key-gradient: transparent;--docsearch-key-shadow: none;--docsearch-modal-background: var(--vp-c-bg-soft);--docsearch-footer-background: var(--vp-c-bg)}.dark [class*=DocSearch]{--docsearch-modal-shadow: none;--docsearch-footer-shadow: none;--docsearch-logo-color: var(--vp-c-text-2);--docsearch-hit-background: var(--vp-c-default-soft);--docsearch-hit-color: var(--vp-c-text-2);--docsearch-hit-shadow: none}.DocSearch-Button{display:flex;justify-content:center;align-items:center;margin:0;padding:0;width:48px;height:55px;background:transparent;transition:border-color .25s}.DocSearch-Button:hover{background:transparent}.DocSearch-Button:focus{outline:1px dotted;outline:5px auto -webkit-focus-ring-color}.DocSearch-Button-Key--pressed{transform:none;box-shadow:none}.DocSearch-Button:focus:not(:focus-visible){outline:none!important}@media (min-width: 768px){.DocSearch-Button{justify-content:flex-start;border:1px solid transparent;border-radius:8px;padding:0 10px 0 12px;width:100%;height:40px;background-color:var(--vp-c-bg-alt)}.DocSearch-Button:hover{border-color:var(--vp-c-brand-1);background:var(--vp-c-bg-alt)}}.DocSearch-Button .DocSearch-Button-Container{display:flex;align-items:center}.DocSearch-Button .DocSearch-Search-Icon{position:relative;width:16px;height:16px;color:var(--vp-c-text-1);fill:currentColor;transition:color .5s}.DocSearch-Button:hover .DocSearch-Search-Icon{color:var(--vp-c-text-1)}@media (min-width: 768px){.DocSearch-Button .DocSearch-Search-Icon{top:1px;margin-right:8px;width:14px;height:14px;color:var(--vp-c-text-2)}}.DocSearch-Button .DocSearch-Button-Placeholder{display:none;margin-top:2px;padding:0 16px 0 0;font-size:13px;font-weight:500;color:var(--vp-c-text-2);transition:color .5s}.DocSearch-Button:hover .DocSearch-Button-Placeholder{color:var(--vp-c-text-1)}@media (min-width: 768px){.DocSearch-Button .DocSearch-Button-Placeholder{display:inline-block}}.DocSearch-Button .DocSearch-Button-Keys{direction:ltr;display:none;min-width:auto}@media (min-width: 768px){.DocSearch-Button .DocSearch-Button-Keys{display:flex;align-items:center}}.DocSearch-Button .DocSearch-Button-Key{display:block;margin:2px 0 0;border:1px solid var(--vp-c-divider);border-right:none;border-radius:4px 0 0 4px;padding-left:6px;min-width:0;width:auto;height:22px;line-height:22px;font-family:var(--vp-font-family-base);font-size:12px;font-weight:500;transition:color .5s,border-color .5s}.DocSearch-Button .DocSearch-Button-Key+.DocSearch-Button-Key{border-right:1px solid var(--vp-c-divider);border-left:none;border-radius:0 4px 4px 0;padding-left:2px;padding-right:6px}.DocSearch-Button .DocSearch-Button-Key:first-child{font-size:0!important}.DocSearch-Button .DocSearch-Button-Key:first-child:after{content:"Ctrl";font-size:12px;letter-spacing:normal;color:var(--docsearch-muted-color)}.mac .DocSearch-Button .DocSearch-Button-Key:first-child:after{content:"⌘"}.DocSearch-Button .DocSearch-Button-Key:first-child>*{display:none}.DocSearch-Search-Icon{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' stroke-width='1.6' viewBox='0 0 20 20'%3E%3Cpath fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' d='m14.386 14.386 4.088 4.088-4.088-4.088A7.533 7.533 0 1 1 3.733 3.733a7.533 7.533 0 0 1 10.653 10.653z'/%3E%3C/svg%3E")}.VPNavBarSearch{display:flex;align-items:center}@media (min-width: 768px){.VPNavBarSearch{flex-grow:1;padding-left:24px}}@media (min-width: 960px){.VPNavBarSearch{padding-left:32px}}.dark .DocSearch-Footer{border-top:1px solid var(--vp-c-divider)}.DocSearch-Form{border:1px solid var(--vp-c-brand-1);background-color:var(--vp-c-white)}.dark .DocSearch-Form{background-color:var(--vp-c-default-soft)}.DocSearch-Screen-Icon>svg{margin:auto}.VPNavBarSocialLinks[data-v-0394ad82]{display:none}@media (min-width: 1280px){.VPNavBarSocialLinks[data-v-0394ad82]{display:flex;align-items:center}}.title[data-v-ab179fa1]{display:flex;align-items:center;border-bottom:1px solid transparent;width:100%;height:var(--vp-nav-height);font-size:16px;font-weight:600;color:var(--vp-c-text-1);transition:opacity .25s}@media (min-width: 960px){.title[data-v-ab179fa1]{flex-shrink:0}.VPNavBarTitle.has-sidebar .title[data-v-ab179fa1]{border-bottom-color:var(--vp-c-divider)}}[data-v-ab179fa1] .logo{margin-right:8px;height:var(--vp-nav-logo-height)}.VPNavBarTranslations[data-v-88af2de4]{display:none}@media (min-width: 1280px){.VPNavBarTranslations[data-v-88af2de4]{display:flex;align-items:center}}.title[data-v-88af2de4]{padding:0 24px 0 12px;line-height:32px;font-size:14px;font-weight:700;color:var(--vp-c-text-1)}.VPNavBar[data-v-ccf7ddec]{position:relative;height:var(--vp-nav-height);pointer-events:none;white-space:nowrap;transition:background-color .5s}.VPNavBar[data-v-ccf7ddec]:not(.home){background-color:var(--vp-nav-bg-color)}@media (min-width: 960px){.VPNavBar[data-v-ccf7ddec]:not(.home){background-color:transparent}.VPNavBar[data-v-ccf7ddec]:not(.has-sidebar):not(.home.top){background-color:var(--vp-nav-bg-color)}}.wrapper[data-v-ccf7ddec]{padding:0 8px 0 24px}@media (min-width: 768px){.wrapper[data-v-ccf7ddec]{padding:0 32px}}@media (min-width: 960px){.VPNavBar.has-sidebar .wrapper[data-v-ccf7ddec]{padding:0}}.container[data-v-ccf7ddec]{display:flex;justify-content:space-between;margin:0 auto;max-width:calc(var(--vp-layout-max-width) - 64px);height:var(--vp-nav-height);pointer-events:none}.container>.title[data-v-ccf7ddec],.container>.content[data-v-ccf7ddec]{pointer-events:none}.container[data-v-ccf7ddec] *{pointer-events:auto}@media (min-width: 960px){.VPNavBar.has-sidebar .container[data-v-ccf7ddec]{max-width:100%}}.title[data-v-ccf7ddec]{flex-shrink:0;height:calc(var(--vp-nav-height) - 1px);transition:background-color .5s}@media (min-width: 960px){.VPNavBar.has-sidebar .title[data-v-ccf7ddec]{position:absolute;top:0;left:0;z-index:2;padding:0 32px;width:var(--vp-sidebar-width);height:var(--vp-nav-height);background-color:transparent}}@media (min-width: 1440px){.VPNavBar.has-sidebar .title[data-v-ccf7ddec]{padding-left:max(32px,calc((100% - (var(--vp-layout-max-width) - 64px)) / 2));width:calc((100% - (var(--vp-layout-max-width) - 64px)) / 2 + var(--vp-sidebar-width) - 32px)}}.content[data-v-ccf7ddec]{flex-grow:1}@media (min-width: 960px){.VPNavBar.has-sidebar .content[data-v-ccf7ddec]{position:relative;z-index:1;padding-right:32px;padding-left:var(--vp-sidebar-width)}}@media (min-width: 1440px){.VPNavBar.has-sidebar .content[data-v-ccf7ddec]{padding-right:calc((100vw - var(--vp-layout-max-width)) / 2 + 32px);padding-left:calc((100vw - var(--vp-layout-max-width)) / 2 + var(--vp-sidebar-width))}}.content-body[data-v-ccf7ddec]{display:flex;justify-content:flex-end;align-items:center;height:var(--vp-nav-height);transition:background-color .5s}@media (min-width: 960px){.VPNavBar:not(.home.top) .content-body[data-v-ccf7ddec]{position:relative;background-color:var(--vp-nav-bg-color)}.VPNavBar:not(.has-sidebar):not(.home.top) .content-body[data-v-ccf7ddec]{background-color:transparent}}@media (max-width: 767px){.content-body[data-v-ccf7ddec]{-moz-column-gap:.5rem;column-gap:.5rem}}.menu+.translations[data-v-ccf7ddec]:before,.menu+.appearance[data-v-ccf7ddec]:before,.menu+.social-links[data-v-ccf7ddec]:before,.translations+.appearance[data-v-ccf7ddec]:before,.appearance+.social-links[data-v-ccf7ddec]:before{margin-right:8px;margin-left:8px;width:1px;height:24px;background-color:var(--vp-c-divider);content:""}.menu+.appearance[data-v-ccf7ddec]:before,.translations+.appearance[data-v-ccf7ddec]:before{margin-right:16px}.appearance+.social-links[data-v-ccf7ddec]:before{margin-left:16px}.social-links[data-v-ccf7ddec]{margin-right:-8px}.divider[data-v-ccf7ddec]{width:100%;height:1px}@media (min-width: 960px){.VPNavBar.has-sidebar .divider[data-v-ccf7ddec]{padding-left:var(--vp-sidebar-width)}}@media (min-width: 1440px){.VPNavBar.has-sidebar .divider[data-v-ccf7ddec]{padding-left:calc((100vw - var(--vp-layout-max-width)) / 2 + var(--vp-sidebar-width))}}.divider-line[data-v-ccf7ddec]{width:100%;height:1px;transition:background-color .5s}.VPNavBar:not(.home) .divider-line[data-v-ccf7ddec]{background-color:var(--vp-c-gutter)}@media (min-width: 960px){.VPNavBar:not(.home.top) .divider-line[data-v-ccf7ddec]{background-color:var(--vp-c-gutter)}.VPNavBar:not(.has-sidebar):not(.home.top) .divider[data-v-ccf7ddec]{background-color:var(--vp-c-gutter)}}.VPNavScreenAppearance[data-v-2d7af913]{display:flex;justify-content:space-between;align-items:center;border-radius:8px;padding:12px 14px 12px 16px;background-color:var(--vp-c-bg-soft)}.text[data-v-2d7af913]{line-height:24px;font-size:12px;font-weight:500;color:var(--vp-c-text-2)}.VPNavScreenMenuLink[data-v-7f31e1f6]{display:block;border-bottom:1px solid var(--vp-c-divider);padding:12px 0 11px;line-height:24px;font-size:14px;font-weight:500;color:var(--vp-c-text-1);transition:border-color .25s,color .25s}.VPNavScreenMenuLink[data-v-7f31e1f6]:hover{color:var(--vp-c-brand-1)}.VPNavScreenMenuGroupLink[data-v-19976ae1]{display:block;margin-left:12px;line-height:32px;font-size:14px;font-weight:400;color:var(--vp-c-text-1);transition:color .25s}.VPNavScreenMenuGroupLink[data-v-19976ae1]:hover{color:var(--vp-c-brand-1)}.VPNavScreenMenuGroupSection[data-v-8133b170]{display:block}.title[data-v-8133b170]{line-height:32px;font-size:13px;font-weight:700;color:var(--vp-c-text-2);transition:color .25s}.VPNavScreenMenuGroup[data-v-ff6087d4]{border-bottom:1px solid var(--vp-c-divider);height:48px;overflow:hidden;transition:border-color .5s}.VPNavScreenMenuGroup .items[data-v-ff6087d4]{visibility:hidden}.VPNavScreenMenuGroup.open .items[data-v-ff6087d4]{visibility:visible}.VPNavScreenMenuGroup.open[data-v-ff6087d4]{padding-bottom:10px;height:auto}.VPNavScreenMenuGroup.open .button[data-v-ff6087d4]{padding-bottom:6px;color:var(--vp-c-brand-1)}.VPNavScreenMenuGroup.open .button-icon[data-v-ff6087d4]{transform:rotate(45deg)}.button[data-v-ff6087d4]{display:flex;justify-content:space-between;align-items:center;padding:12px 4px 11px 0;width:100%;line-height:24px;font-size:14px;font-weight:500;color:var(--vp-c-text-1);transition:color .25s}.button[data-v-ff6087d4]:hover{color:var(--vp-c-brand-1)}.button-icon[data-v-ff6087d4]{transition:transform .25s}.group[data-v-ff6087d4]:first-child{padding-top:0}.group+.group[data-v-ff6087d4],.group+.item[data-v-ff6087d4]{padding-top:4px}.VPNavScreenTranslations[data-v-858fe1a4]{height:24px;overflow:hidden}.VPNavScreenTranslations.open[data-v-858fe1a4]{height:auto}.title[data-v-858fe1a4]{display:flex;align-items:center;font-size:14px;font-weight:500;color:var(--vp-c-text-1)}.icon[data-v-858fe1a4]{font-size:16px}.icon.lang[data-v-858fe1a4]{margin-right:8px}.icon.chevron[data-v-858fe1a4]{margin-left:4px}.list[data-v-858fe1a4]{padding:4px 0 0 24px}.link[data-v-858fe1a4]{line-height:32px;font-size:13px;color:var(--vp-c-text-1)}.VPNavScreen[data-v-cc5739dd]{position:fixed;top:calc(var(--vp-nav-height) + var(--vp-layout-top-height, 0px) + 1px);right:0;bottom:0;left:0;padding:0 32px;width:100%;background-color:var(--vp-nav-screen-bg-color);overflow-y:auto;transition:background-color .5s;pointer-events:auto}.VPNavScreen.fade-enter-active[data-v-cc5739dd],.VPNavScreen.fade-leave-active[data-v-cc5739dd]{transition:opacity .25s}.VPNavScreen.fade-enter-active .container[data-v-cc5739dd],.VPNavScreen.fade-leave-active .container[data-v-cc5739dd]{transition:transform .25s ease}.VPNavScreen.fade-enter-from[data-v-cc5739dd],.VPNavScreen.fade-leave-to[data-v-cc5739dd]{opacity:0}.VPNavScreen.fade-enter-from .container[data-v-cc5739dd],.VPNavScreen.fade-leave-to .container[data-v-cc5739dd]{transform:translateY(-8px)}@media (min-width: 768px){.VPNavScreen[data-v-cc5739dd]{display:none}}.container[data-v-cc5739dd]{margin:0 auto;padding:24px 0 96px;max-width:288px}.menu+.translations[data-v-cc5739dd],.menu+.appearance[data-v-cc5739dd],.translations+.appearance[data-v-cc5739dd]{margin-top:24px}.menu+.social-links[data-v-cc5739dd]{margin-top:16px}.appearance+.social-links[data-v-cc5739dd]{margin-top:16px}.VPNav[data-v-ae24b3ad]{position:relative;top:var(--vp-layout-top-height, 0px);left:0;z-index:var(--vp-z-index-nav);width:100%;pointer-events:none;transition:background-color .5s}@media (min-width: 960px){.VPNav[data-v-ae24b3ad]{position:fixed}}.VPSidebarItem.level-0[data-v-b8d55f3b]{padding-bottom:24px}.VPSidebarItem.collapsed.level-0[data-v-b8d55f3b]{padding-bottom:10px}.item[data-v-b8d55f3b]{position:relative;display:flex;width:100%}.VPSidebarItem.collapsible>.item[data-v-b8d55f3b]{cursor:pointer}.indicator[data-v-b8d55f3b]{position:absolute;top:6px;bottom:6px;left:-17px;width:2px;border-radius:2px;transition:background-color .25s}.VPSidebarItem.level-2.is-active>.item>.indicator[data-v-b8d55f3b],.VPSidebarItem.level-3.is-active>.item>.indicator[data-v-b8d55f3b],.VPSidebarItem.level-4.is-active>.item>.indicator[data-v-b8d55f3b],.VPSidebarItem.level-5.is-active>.item>.indicator[data-v-b8d55f3b]{background-color:var(--vp-c-brand-1)}.link[data-v-b8d55f3b]{display:flex;align-items:center;flex-grow:1}.text[data-v-b8d55f3b]{flex-grow:1;padding:4px 0;line-height:24px;font-size:14px;transition:color .25s}.VPSidebarItem.level-0 .text[data-v-b8d55f3b]{font-weight:700;color:var(--vp-c-text-1)}.VPSidebarItem.level-1 .text[data-v-b8d55f3b],.VPSidebarItem.level-2 .text[data-v-b8d55f3b],.VPSidebarItem.level-3 .text[data-v-b8d55f3b],.VPSidebarItem.level-4 .text[data-v-b8d55f3b],.VPSidebarItem.level-5 .text[data-v-b8d55f3b]{font-weight:500;color:var(--vp-c-text-2)}.VPSidebarItem.level-0.is-link>.item>.link:hover .text[data-v-b8d55f3b],.VPSidebarItem.level-1.is-link>.item>.link:hover .text[data-v-b8d55f3b],.VPSidebarItem.level-2.is-link>.item>.link:hover .text[data-v-b8d55f3b],.VPSidebarItem.level-3.is-link>.item>.link:hover .text[data-v-b8d55f3b],.VPSidebarItem.level-4.is-link>.item>.link:hover .text[data-v-b8d55f3b],.VPSidebarItem.level-5.is-link>.item>.link:hover .text[data-v-b8d55f3b]{color:var(--vp-c-brand-1)}.VPSidebarItem.level-0.has-active>.item>.text[data-v-b8d55f3b],.VPSidebarItem.level-1.has-active>.item>.text[data-v-b8d55f3b],.VPSidebarItem.level-2.has-active>.item>.text[data-v-b8d55f3b],.VPSidebarItem.level-3.has-active>.item>.text[data-v-b8d55f3b],.VPSidebarItem.level-4.has-active>.item>.text[data-v-b8d55f3b],.VPSidebarItem.level-5.has-active>.item>.text[data-v-b8d55f3b],.VPSidebarItem.level-0.has-active>.item>.link>.text[data-v-b8d55f3b],.VPSidebarItem.level-1.has-active>.item>.link>.text[data-v-b8d55f3b],.VPSidebarItem.level-2.has-active>.item>.link>.text[data-v-b8d55f3b],.VPSidebarItem.level-3.has-active>.item>.link>.text[data-v-b8d55f3b],.VPSidebarItem.level-4.has-active>.item>.link>.text[data-v-b8d55f3b],.VPSidebarItem.level-5.has-active>.item>.link>.text[data-v-b8d55f3b]{color:var(--vp-c-text-1)}.VPSidebarItem.level-0.is-active>.item .link>.text[data-v-b8d55f3b],.VPSidebarItem.level-1.is-active>.item .link>.text[data-v-b8d55f3b],.VPSidebarItem.level-2.is-active>.item .link>.text[data-v-b8d55f3b],.VPSidebarItem.level-3.is-active>.item .link>.text[data-v-b8d55f3b],.VPSidebarItem.level-4.is-active>.item .link>.text[data-v-b8d55f3b],.VPSidebarItem.level-5.is-active>.item .link>.text[data-v-b8d55f3b]{color:var(--vp-c-brand-1)}.caret[data-v-b8d55f3b]{display:flex;justify-content:center;align-items:center;margin-right:-7px;width:32px;height:32px;color:var(--vp-c-text-3);cursor:pointer;transition:color .25s;flex-shrink:0}.item:hover .caret[data-v-b8d55f3b]{color:var(--vp-c-text-2)}.item:hover .caret[data-v-b8d55f3b]:hover{color:var(--vp-c-text-1)}.caret-icon[data-v-b8d55f3b]{font-size:18px;transform:rotate(90deg);transition:transform .25s}.VPSidebarItem.collapsed .caret-icon[data-v-b8d55f3b]{transform:rotate(0)}.VPSidebarItem.level-1 .items[data-v-b8d55f3b],.VPSidebarItem.level-2 .items[data-v-b8d55f3b],.VPSidebarItem.level-3 .items[data-v-b8d55f3b],.VPSidebarItem.level-4 .items[data-v-b8d55f3b],.VPSidebarItem.level-5 .items[data-v-b8d55f3b]{border-left:1px solid var(--vp-c-divider);padding-left:16px}.VPSidebarItem.collapsed .items[data-v-b8d55f3b]{display:none}.VPSidebar[data-v-575e6a36]{position:fixed;top:var(--vp-layout-top-height, 0px);bottom:0;left:0;z-index:var(--vp-z-index-sidebar);padding:32px 32px 96px;width:calc(100vw - 64px);max-width:320px;background-color:var(--vp-sidebar-bg-color);opacity:0;box-shadow:var(--vp-c-shadow-3);overflow-x:hidden;overflow-y:auto;transform:translate(-100%);transition:opacity .5s,transform .25s ease;overscroll-behavior:contain}.VPSidebar.open[data-v-575e6a36]{opacity:1;visibility:visible;transform:translate(0);transition:opacity .25s,transform .5s cubic-bezier(.19,1,.22,1)}.dark .VPSidebar[data-v-575e6a36]{box-shadow:var(--vp-shadow-1)}@media (min-width: 960px){.VPSidebar[data-v-575e6a36]{padding-top:var(--vp-nav-height);width:var(--vp-sidebar-width);max-width:100%;background-color:var(--vp-sidebar-bg-color);opacity:1;visibility:visible;box-shadow:none;transform:translate(0)}}@media (min-width: 1440px){.VPSidebar[data-v-575e6a36]{padding-left:max(32px,calc((100% - (var(--vp-layout-max-width) - 64px)) / 2));width:calc((100% - (var(--vp-layout-max-width) - 64px)) / 2 + var(--vp-sidebar-width) - 32px)}}@media (min-width: 960px){.curtain[data-v-575e6a36]{position:sticky;top:-64px;left:0;z-index:1;margin-top:calc(var(--vp-nav-height) * -1);margin-right:-32px;margin-left:-32px;height:var(--vp-nav-height);background-color:var(--vp-sidebar-bg-color)}}.nav[data-v-575e6a36]{outline:0}.group+.group[data-v-575e6a36]{border-top:1px solid var(--vp-c-divider);padding-top:10px}@media (min-width: 960px){.group[data-v-575e6a36]{padding-top:10px;width:calc(var(--vp-sidebar-width) - 64px)}}.VPSkipLink[data-v-0f60ec36]{top:8px;left:8px;padding:8px 16px;z-index:999;border-radius:8px;font-size:12px;font-weight:700;text-decoration:none;color:var(--vp-c-brand-1);box-shadow:var(--vp-shadow-3);background-color:var(--vp-c-bg)}.VPSkipLink[data-v-0f60ec36]:focus{height:auto;width:auto;clip:auto;-webkit-clip-path:none;clip-path:none}@media (min-width: 1280px){.VPSkipLink[data-v-0f60ec36]{top:14px;left:16px}}.Layout[data-v-5d98c3a5]{display:flex;flex-direction:column;min-height:100vh}.VPHomeSponsors[data-v-3d121b4a]{border-top:1px solid var(--vp-c-gutter);padding-top:88px!important;margin:96px 0}@media (min-width: 768px){.VPHomeSponsors[data-v-3d121b4a]{margin:128px 0}}.VPHomeSponsors[data-v-3d121b4a]{padding:0 24px}@media (min-width: 768px){.VPHomeSponsors[data-v-3d121b4a]{padding:0 48px}}@media (min-width: 960px){.VPHomeSponsors[data-v-3d121b4a]{padding:0 64px}}.container[data-v-3d121b4a]{margin:0 auto;max-width:1152px}.love[data-v-3d121b4a]{margin:0 auto;width:-moz-fit-content;width:fit-content;font-size:28px;color:var(--vp-c-text-3)}.icon[data-v-3d121b4a]{display:inline-block}.message[data-v-3d121b4a]{margin:0 auto;padding-top:10px;max-width:320px;text-align:center;line-height:24px;font-size:16px;font-weight:500;color:var(--vp-c-text-2)}.sponsors[data-v-3d121b4a]{padding-top:32px}.action[data-v-3d121b4a]{padding-top:40px;text-align:center}.VPTeamPage[data-v-7c57f839]{margin:96px 0}@media (min-width: 768px){.VPTeamPage[data-v-7c57f839]{margin:128px 0}}.VPHome .VPTeamPageTitle[data-v-7c57f839-s]{border-top:1px solid var(--vp-c-gutter);padding-top:88px!important}.VPTeamPageSection+.VPTeamPageSection[data-v-7c57f839-s],.VPTeamMembers+.VPTeamPageSection[data-v-7c57f839-s]{margin-top:64px}.VPTeamMembers+.VPTeamMembers[data-v-7c57f839-s]{margin-top:24px}@media (min-width: 768px){.VPTeamPageTitle+.VPTeamPageSection[data-v-7c57f839-s]{margin-top:16px}.VPTeamPageSection+.VPTeamPageSection[data-v-7c57f839-s],.VPTeamMembers+.VPTeamPageSection[data-v-7c57f839-s]{margin-top:96px}}.VPTeamMembers[data-v-7c57f839-s]{padding:0 24px}@media (min-width: 768px){.VPTeamMembers[data-v-7c57f839-s]{padding:0 48px}}@media (min-width: 960px){.VPTeamMembers[data-v-7c57f839-s]{padding:0 64px}}.VPTeamPageTitle[data-v-bf2cbdac]{padding:48px 32px;text-align:center}@media (min-width: 768px){.VPTeamPageTitle[data-v-bf2cbdac]{padding:64px 48px 48px}}@media (min-width: 960px){.VPTeamPageTitle[data-v-bf2cbdac]{padding:80px 64px 48px}}.title[data-v-bf2cbdac]{letter-spacing:0;line-height:44px;font-size:36px;font-weight:500}@media (min-width: 768px){.title[data-v-bf2cbdac]{letter-spacing:-.5px;line-height:56px;font-size:48px}}.lead[data-v-bf2cbdac]{margin:0 auto;max-width:512px;padding-top:12px;line-height:24px;font-size:16px;font-weight:500;color:var(--vp-c-text-2)}@media (min-width: 768px){.lead[data-v-bf2cbdac]{max-width:592px;letter-spacing:.15px;line-height:28px;font-size:20px}}.VPTeamPageSection[data-v-b1a88750]{padding:0 32px}@media (min-width: 768px){.VPTeamPageSection[data-v-b1a88750]{padding:0 48px}}@media (min-width: 960px){.VPTeamPageSection[data-v-b1a88750]{padding:0 64px}}.title[data-v-b1a88750]{position:relative;margin:0 auto;max-width:1152px;text-align:center;color:var(--vp-c-text-2)}.title-line[data-v-b1a88750]{position:absolute;top:16px;left:0;width:100%;height:1px;background-color:var(--vp-c-divider)}.title-text[data-v-b1a88750]{position:relative;display:inline-block;padding:0 24px;letter-spacing:0;line-height:32px;font-size:20px;font-weight:500;background-color:var(--vp-c-bg)}.lead[data-v-b1a88750]{margin:0 auto;max-width:480px;padding-top:12px;text-align:center;line-height:24px;font-size:16px;font-weight:500;color:var(--vp-c-text-2)}.members[data-v-b1a88750]{padding-top:40px}.VPTeamMembersItem[data-v-f3fa364a]{display:flex;flex-direction:column;gap:2px;border-radius:12px;width:100%;height:100%;overflow:hidden}.VPTeamMembersItem.small .profile[data-v-f3fa364a]{padding:32px}.VPTeamMembersItem.small .data[data-v-f3fa364a]{padding-top:20px}.VPTeamMembersItem.small .avatar[data-v-f3fa364a]{width:64px;height:64px}.VPTeamMembersItem.small .name[data-v-f3fa364a]{line-height:24px;font-size:16px}.VPTeamMembersItem.small .affiliation[data-v-f3fa364a]{padding-top:4px;line-height:20px;font-size:14px}.VPTeamMembersItem.small .desc[data-v-f3fa364a]{padding-top:12px;line-height:20px;font-size:14px}.VPTeamMembersItem.small .links[data-v-f3fa364a]{margin:0 -16px -20px;padding:10px 0 0}.VPTeamMembersItem.medium .profile[data-v-f3fa364a]{padding:48px 32px}.VPTeamMembersItem.medium .data[data-v-f3fa364a]{padding-top:24px;text-align:center}.VPTeamMembersItem.medium .avatar[data-v-f3fa364a]{width:96px;height:96px}.VPTeamMembersItem.medium .name[data-v-f3fa364a]{letter-spacing:.15px;line-height:28px;font-size:20px}.VPTeamMembersItem.medium .affiliation[data-v-f3fa364a]{padding-top:4px;font-size:16px}.VPTeamMembersItem.medium .desc[data-v-f3fa364a]{padding-top:16px;max-width:288px;font-size:16px}.VPTeamMembersItem.medium .links[data-v-f3fa364a]{margin:0 -16px -12px;padding:16px 12px 0}.profile[data-v-f3fa364a]{flex-grow:1;background-color:var(--vp-c-bg-soft)}.data[data-v-f3fa364a]{text-align:center}.avatar[data-v-f3fa364a]{position:relative;flex-shrink:0;margin:0 auto;border-radius:50%;box-shadow:var(--vp-shadow-3)}.avatar-img[data-v-f3fa364a]{position:absolute;top:0;right:0;bottom:0;left:0;border-radius:50%;-o-object-fit:cover;object-fit:cover}.name[data-v-f3fa364a]{margin:0;font-weight:600}.affiliation[data-v-f3fa364a]{margin:0;font-weight:500;color:var(--vp-c-text-2)}.org.link[data-v-f3fa364a]{color:var(--vp-c-text-2);transition:color .25s}.org.link[data-v-f3fa364a]:hover{color:var(--vp-c-brand-1)}.desc[data-v-f3fa364a]{margin:0 auto}.desc[data-v-f3fa364a] a{font-weight:500;color:var(--vp-c-brand-1);text-decoration-style:dotted;transition:color .25s}.links[data-v-f3fa364a]{display:flex;justify-content:center;height:56px}.sp-link[data-v-f3fa364a]{display:flex;justify-content:center;align-items:center;text-align:center;padding:16px;font-size:14px;font-weight:500;color:var(--vp-c-sponsor);background-color:var(--vp-c-bg-soft);transition:color .25s,background-color .25s}.sp .sp-link.link[data-v-f3fa364a]:hover,.sp .sp-link.link[data-v-f3fa364a]:focus{outline:none;color:var(--vp-c-white);background-color:var(--vp-c-sponsor)}.sp-icon[data-v-f3fa364a]{margin-right:8px;font-size:16px}.VPTeamMembers.small .container[data-v-6cb0dbc4]{grid-template-columns:repeat(auto-fit,minmax(224px,1fr))}.VPTeamMembers.small.count-1 .container[data-v-6cb0dbc4]{max-width:276px}.VPTeamMembers.small.count-2 .container[data-v-6cb0dbc4]{max-width:576px}.VPTeamMembers.small.count-3 .container[data-v-6cb0dbc4]{max-width:876px}.VPTeamMembers.medium .container[data-v-6cb0dbc4]{grid-template-columns:repeat(auto-fit,minmax(256px,1fr))}@media (min-width: 375px){.VPTeamMembers.medium .container[data-v-6cb0dbc4]{grid-template-columns:repeat(auto-fit,minmax(288px,1fr))}}.VPTeamMembers.medium.count-1 .container[data-v-6cb0dbc4]{max-width:368px}.VPTeamMembers.medium.count-2 .container[data-v-6cb0dbc4]{max-width:760px}.container[data-v-6cb0dbc4]{display:grid;gap:24px;margin:0 auto;max-width:1152px} diff --git a/docs/.vitepress/dist/assets/style.D_gO-k38.css b/docs/.vitepress/dist/assets/style.D_gO-k38.css new file mode 100644 index 00000000..915d895d --- /dev/null +++ b/docs/.vitepress/dist/assets/style.D_gO-k38.css @@ -0,0 +1 @@ +@font-face{font-family:Inter;font-style:normal;font-weight:100 900;font-display:swap;src:url(/coconut/assets/inter-roman-cyrillic-ext.BBPuwvHQ.woff2) format("woff2");unicode-range:U+0460-052F,U+1C80-1C88,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Inter;font-style:normal;font-weight:100 900;font-display:swap;src:url(/coconut/assets/inter-roman-cyrillic.C5lxZ8CY.woff2) format("woff2");unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}@font-face{font-family:Inter;font-style:normal;font-weight:100 900;font-display:swap;src:url(/coconut/assets/inter-roman-greek-ext.CqjqNYQ-.woff2) format("woff2");unicode-range:U+1F00-1FFF}@font-face{font-family:Inter;font-style:normal;font-weight:100 900;font-display:swap;src:url(/coconut/assets/inter-roman-greek.BBVDIX6e.woff2) format("woff2");unicode-range:U+0370-0377,U+037A-037F,U+0384-038A,U+038C,U+038E-03A1,U+03A3-03FF}@font-face{font-family:Inter;font-style:normal;font-weight:100 900;font-display:swap;src:url(/coconut/assets/inter-roman-vietnamese.BjW4sHH5.woff2) format("woff2");unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Inter;font-style:normal;font-weight:100 900;font-display:swap;src:url(/coconut/assets/inter-roman-latin-ext.4ZJIpNVo.woff2) format("woff2");unicode-range:U+0100-02AF,U+0304,U+0308,U+0329,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Inter;font-style:normal;font-weight:100 900;font-display:swap;src:url(/coconut/assets/inter-roman-latin.Di8DUHzh.woff2) format("woff2");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Inter;font-style:italic;font-weight:100 900;font-display:swap;src:url(/coconut/assets/inter-italic-cyrillic-ext.r48I6akx.woff2) format("woff2");unicode-range:U+0460-052F,U+1C80-1C88,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Inter;font-style:italic;font-weight:100 900;font-display:swap;src:url(/coconut/assets/inter-italic-cyrillic.By2_1cv3.woff2) format("woff2");unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}@font-face{font-family:Inter;font-style:italic;font-weight:100 900;font-display:swap;src:url(/coconut/assets/inter-italic-greek-ext.1u6EdAuj.woff2) format("woff2");unicode-range:U+1F00-1FFF}@font-face{font-family:Inter;font-style:italic;font-weight:100 900;font-display:swap;src:url(/coconut/assets/inter-italic-greek.DJ8dCoTZ.woff2) format("woff2");unicode-range:U+0370-0377,U+037A-037F,U+0384-038A,U+038C,U+038E-03A1,U+03A3-03FF}@font-face{font-family:Inter;font-style:italic;font-weight:100 900;font-display:swap;src:url(/coconut/assets/inter-italic-vietnamese.BSbpV94h.woff2) format("woff2");unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Inter;font-style:italic;font-weight:100 900;font-display:swap;src:url(/coconut/assets/inter-italic-latin-ext.CN1xVJS-.woff2) format("woff2");unicode-range:U+0100-02AF,U+0304,U+0308,U+0329,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Inter;font-style:italic;font-weight:100 900;font-display:swap;src:url(/coconut/assets/inter-italic-latin.C2AdPX0b.woff2) format("woff2");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Punctuation SC;font-weight:400;src:local("PingFang SC Regular"),local("Noto Sans CJK SC"),local("Microsoft YaHei");unicode-range:U+201C,U+201D,U+2018,U+2019,U+2E3A,U+2014,U+2013,U+2026,U+00B7,U+007E,U+002F}@font-face{font-family:Punctuation SC;font-weight:500;src:local("PingFang SC Medium"),local("Noto Sans CJK SC"),local("Microsoft YaHei");unicode-range:U+201C,U+201D,U+2018,U+2019,U+2E3A,U+2014,U+2013,U+2026,U+00B7,U+007E,U+002F}@font-face{font-family:Punctuation SC;font-weight:600;src:local("PingFang SC Semibold"),local("Noto Sans CJK SC Bold"),local("Microsoft YaHei Bold");unicode-range:U+201C,U+201D,U+2018,U+2019,U+2E3A,U+2014,U+2013,U+2026,U+00B7,U+007E,U+002F}@font-face{font-family:Punctuation SC;font-weight:700;src:local("PingFang SC Semibold"),local("Noto Sans CJK SC Bold"),local("Microsoft YaHei Bold");unicode-range:U+201C,U+201D,U+2018,U+2019,U+2E3A,U+2014,U+2013,U+2026,U+00B7,U+007E,U+002F}:root{--vp-c-white: #ffffff;--vp-c-black: #000000;--vp-c-neutral: var(--vp-c-black);--vp-c-neutral-inverse: var(--vp-c-white)}.dark{--vp-c-neutral: var(--vp-c-white);--vp-c-neutral-inverse: var(--vp-c-black)}:root{--vp-c-gray-1: #dddde3;--vp-c-gray-2: #e4e4e9;--vp-c-gray-3: #ebebef;--vp-c-gray-soft: rgba(142, 150, 170, .14);--vp-c-indigo-1: #3451b2;--vp-c-indigo-2: #3a5ccc;--vp-c-indigo-3: #5672cd;--vp-c-indigo-soft: rgba(100, 108, 255, .14);--vp-c-purple-1: #6f42c1;--vp-c-purple-2: #7e4cc9;--vp-c-purple-3: #8e5cd9;--vp-c-purple-soft: rgba(159, 122, 234, .14);--vp-c-green-1: #18794e;--vp-c-green-2: #299764;--vp-c-green-3: #30a46c;--vp-c-green-soft: rgba(16, 185, 129, .14);--vp-c-yellow-1: #915930;--vp-c-yellow-2: #946300;--vp-c-yellow-3: #9f6a00;--vp-c-yellow-soft: rgba(234, 179, 8, .14);--vp-c-red-1: #b8272c;--vp-c-red-2: #d5393e;--vp-c-red-3: #e0575b;--vp-c-red-soft: rgba(244, 63, 94, .14);--vp-c-sponsor: #db2777}.dark{--vp-c-gray-1: #515c67;--vp-c-gray-2: #414853;--vp-c-gray-3: #32363f;--vp-c-gray-soft: rgba(101, 117, 133, .16);--vp-c-indigo-1: #a8b1ff;--vp-c-indigo-2: #5c73e7;--vp-c-indigo-3: #3e63dd;--vp-c-indigo-soft: rgba(100, 108, 255, .16);--vp-c-purple-1: #c8abfa;--vp-c-purple-2: #a879e6;--vp-c-purple-3: #8e5cd9;--vp-c-purple-soft: rgba(159, 122, 234, .16);--vp-c-green-1: #3dd68c;--vp-c-green-2: #30a46c;--vp-c-green-3: #298459;--vp-c-green-soft: rgba(16, 185, 129, .16);--vp-c-yellow-1: #f9b44e;--vp-c-yellow-2: #da8b17;--vp-c-yellow-3: #a46a0a;--vp-c-yellow-soft: rgba(234, 179, 8, .16);--vp-c-red-1: #f66f81;--vp-c-red-2: #f14158;--vp-c-red-3: #b62a3c;--vp-c-red-soft: rgba(244, 63, 94, .16)}:root{--vp-c-bg: #ffffff;--vp-c-bg-alt: #f6f6f7;--vp-c-bg-elv: #ffffff;--vp-c-bg-soft: #f6f6f7}.dark{--vp-c-bg: #1b1b1f;--vp-c-bg-alt: #161618;--vp-c-bg-elv: #202127;--vp-c-bg-soft: #202127}:root{--vp-c-border: #c2c2c4;--vp-c-divider: #e2e2e3;--vp-c-gutter: #e2e2e3}.dark{--vp-c-border: #3c3f44;--vp-c-divider: #2e2e32;--vp-c-gutter: #000000}:root{--vp-c-text-1: rgba(60, 60, 67);--vp-c-text-2: rgba(60, 60, 67, .78);--vp-c-text-3: rgba(60, 60, 67, .56)}.dark{--vp-c-text-1: rgba(255, 255, 245, .86);--vp-c-text-2: rgba(235, 235, 245, .6);--vp-c-text-3: rgba(235, 235, 245, .38)}:root{--vp-c-default-1: var(--vp-c-gray-1);--vp-c-default-2: var(--vp-c-gray-2);--vp-c-default-3: var(--vp-c-gray-3);--vp-c-default-soft: var(--vp-c-gray-soft);--vp-c-brand-1: var(--vp-c-indigo-1);--vp-c-brand-2: var(--vp-c-indigo-2);--vp-c-brand-3: var(--vp-c-indigo-3);--vp-c-brand-soft: var(--vp-c-indigo-soft);--vp-c-brand: var(--vp-c-brand-1);--vp-c-tip-1: var(--vp-c-brand-1);--vp-c-tip-2: var(--vp-c-brand-2);--vp-c-tip-3: var(--vp-c-brand-3);--vp-c-tip-soft: var(--vp-c-brand-soft);--vp-c-note-1: var(--vp-c-brand-1);--vp-c-note-2: var(--vp-c-brand-2);--vp-c-note-3: var(--vp-c-brand-3);--vp-c-note-soft: var(--vp-c-brand-soft);--vp-c-success-1: var(--vp-c-green-1);--vp-c-success-2: var(--vp-c-green-2);--vp-c-success-3: var(--vp-c-green-3);--vp-c-success-soft: var(--vp-c-green-soft);--vp-c-important-1: var(--vp-c-purple-1);--vp-c-important-2: var(--vp-c-purple-2);--vp-c-important-3: var(--vp-c-purple-3);--vp-c-important-soft: var(--vp-c-purple-soft);--vp-c-warning-1: var(--vp-c-yellow-1);--vp-c-warning-2: var(--vp-c-yellow-2);--vp-c-warning-3: var(--vp-c-yellow-3);--vp-c-warning-soft: var(--vp-c-yellow-soft);--vp-c-danger-1: var(--vp-c-red-1);--vp-c-danger-2: var(--vp-c-red-2);--vp-c-danger-3: var(--vp-c-red-3);--vp-c-danger-soft: var(--vp-c-red-soft);--vp-c-caution-1: var(--vp-c-red-1);--vp-c-caution-2: var(--vp-c-red-2);--vp-c-caution-3: var(--vp-c-red-3);--vp-c-caution-soft: var(--vp-c-red-soft)}:root{--vp-font-family-base: "Inter", ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";--vp-font-family-mono: ui-monospace, "Menlo", "Monaco", "Consolas", "Liberation Mono", "Courier New", monospace;font-optical-sizing:auto}:root:where(:lang(zh)){--vp-font-family-base: "Punctuation SC", "Inter", ui-sans-serif, system-ui, "PingFang SC", "Noto Sans CJK SC", "Noto Sans SC", "Heiti SC", "Microsoft YaHei", "DengXian", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"}:root{--vp-shadow-1: 0 1px 2px rgba(0, 0, 0, .04), 0 1px 2px rgba(0, 0, 0, .06);--vp-shadow-2: 0 3px 12px rgba(0, 0, 0, .07), 0 1px 4px rgba(0, 0, 0, .07);--vp-shadow-3: 0 12px 32px rgba(0, 0, 0, .1), 0 2px 6px rgba(0, 0, 0, .08);--vp-shadow-4: 0 14px 44px rgba(0, 0, 0, .12), 0 3px 9px rgba(0, 0, 0, .12);--vp-shadow-5: 0 18px 56px rgba(0, 0, 0, .16), 0 4px 12px rgba(0, 0, 0, .16)}:root{--vp-z-index-footer: 10;--vp-z-index-local-nav: 20;--vp-z-index-nav: 30;--vp-z-index-layout-top: 40;--vp-z-index-backdrop: 50;--vp-z-index-sidebar: 60}@media (min-width: 960px){:root{--vp-z-index-sidebar: 25}}:root{--vp-layout-max-width: 1440px}:root{--vp-header-anchor-symbol: "#"}:root{--vp-code-line-height: 1.7;--vp-code-font-size: .875em;--vp-code-color: var(--vp-c-brand-1);--vp-code-link-color: var(--vp-c-brand-1);--vp-code-link-hover-color: var(--vp-c-brand-2);--vp-code-bg: var(--vp-c-default-soft);--vp-code-block-color: var(--vp-c-text-2);--vp-code-block-bg: var(--vp-c-bg-alt);--vp-code-block-divider-color: var(--vp-c-gutter);--vp-code-lang-color: var(--vp-c-text-3);--vp-code-line-highlight-color: var(--vp-c-default-soft);--vp-code-line-number-color: var(--vp-c-text-3);--vp-code-line-diff-add-color: var(--vp-c-success-soft);--vp-code-line-diff-add-symbol-color: var(--vp-c-success-1);--vp-code-line-diff-remove-color: var(--vp-c-danger-soft);--vp-code-line-diff-remove-symbol-color: var(--vp-c-danger-1);--vp-code-line-warning-color: var(--vp-c-warning-soft);--vp-code-line-error-color: var(--vp-c-danger-soft);--vp-code-copy-code-border-color: var(--vp-c-divider);--vp-code-copy-code-bg: var(--vp-c-bg-soft);--vp-code-copy-code-hover-border-color: var(--vp-c-divider);--vp-code-copy-code-hover-bg: var(--vp-c-bg);--vp-code-copy-code-active-text: var(--vp-c-text-2);--vp-code-copy-copied-text-content: "Copied";--vp-code-tab-divider: var(--vp-code-block-divider-color);--vp-code-tab-text-color: var(--vp-c-text-2);--vp-code-tab-bg: var(--vp-code-block-bg);--vp-code-tab-hover-text-color: var(--vp-c-text-1);--vp-code-tab-active-text-color: var(--vp-c-text-1);--vp-code-tab-active-bar-color: var(--vp-c-brand-1)}:root{--vp-button-brand-border: transparent;--vp-button-brand-text: var(--vp-c-white);--vp-button-brand-bg: var(--vp-c-brand-3);--vp-button-brand-hover-border: transparent;--vp-button-brand-hover-text: var(--vp-c-white);--vp-button-brand-hover-bg: var(--vp-c-brand-2);--vp-button-brand-active-border: transparent;--vp-button-brand-active-text: var(--vp-c-white);--vp-button-brand-active-bg: var(--vp-c-brand-1);--vp-button-alt-border: transparent;--vp-button-alt-text: var(--vp-c-text-1);--vp-button-alt-bg: var(--vp-c-default-3);--vp-button-alt-hover-border: transparent;--vp-button-alt-hover-text: var(--vp-c-text-1);--vp-button-alt-hover-bg: var(--vp-c-default-2);--vp-button-alt-active-border: transparent;--vp-button-alt-active-text: var(--vp-c-text-1);--vp-button-alt-active-bg: var(--vp-c-default-1);--vp-button-sponsor-border: var(--vp-c-text-2);--vp-button-sponsor-text: var(--vp-c-text-2);--vp-button-sponsor-bg: transparent;--vp-button-sponsor-hover-border: var(--vp-c-sponsor);--vp-button-sponsor-hover-text: var(--vp-c-sponsor);--vp-button-sponsor-hover-bg: transparent;--vp-button-sponsor-active-border: var(--vp-c-sponsor);--vp-button-sponsor-active-text: var(--vp-c-sponsor);--vp-button-sponsor-active-bg: transparent}:root{--vp-custom-block-font-size: 14px;--vp-custom-block-code-font-size: 13px;--vp-custom-block-info-border: transparent;--vp-custom-block-info-text: var(--vp-c-text-1);--vp-custom-block-info-bg: var(--vp-c-default-soft);--vp-custom-block-info-code-bg: var(--vp-c-default-soft);--vp-custom-block-note-border: transparent;--vp-custom-block-note-text: var(--vp-c-text-1);--vp-custom-block-note-bg: var(--vp-c-default-soft);--vp-custom-block-note-code-bg: var(--vp-c-default-soft);--vp-custom-block-tip-border: transparent;--vp-custom-block-tip-text: var(--vp-c-text-1);--vp-custom-block-tip-bg: var(--vp-c-tip-soft);--vp-custom-block-tip-code-bg: var(--vp-c-tip-soft);--vp-custom-block-important-border: transparent;--vp-custom-block-important-text: var(--vp-c-text-1);--vp-custom-block-important-bg: var(--vp-c-important-soft);--vp-custom-block-important-code-bg: var(--vp-c-important-soft);--vp-custom-block-warning-border: transparent;--vp-custom-block-warning-text: var(--vp-c-text-1);--vp-custom-block-warning-bg: var(--vp-c-warning-soft);--vp-custom-block-warning-code-bg: var(--vp-c-warning-soft);--vp-custom-block-danger-border: transparent;--vp-custom-block-danger-text: var(--vp-c-text-1);--vp-custom-block-danger-bg: var(--vp-c-danger-soft);--vp-custom-block-danger-code-bg: var(--vp-c-danger-soft);--vp-custom-block-caution-border: transparent;--vp-custom-block-caution-text: var(--vp-c-text-1);--vp-custom-block-caution-bg: var(--vp-c-caution-soft);--vp-custom-block-caution-code-bg: var(--vp-c-caution-soft);--vp-custom-block-details-border: var(--vp-custom-block-info-border);--vp-custom-block-details-text: var(--vp-custom-block-info-text);--vp-custom-block-details-bg: var(--vp-custom-block-info-bg);--vp-custom-block-details-code-bg: var(--vp-custom-block-info-code-bg)}:root{--vp-input-border-color: var(--vp-c-border);--vp-input-bg-color: var(--vp-c-bg-alt);--vp-input-switch-bg-color: var(--vp-c-default-soft)}:root{--vp-nav-height: 64px;--vp-nav-bg-color: var(--vp-c-bg);--vp-nav-screen-bg-color: var(--vp-c-bg);--vp-nav-logo-height: 24px}.hide-nav{--vp-nav-height: 0px}.hide-nav .VPSidebar{--vp-nav-height: 22px}:root{--vp-local-nav-bg-color: var(--vp-c-bg)}:root{--vp-sidebar-width: 272px;--vp-sidebar-bg-color: var(--vp-c-bg-alt)}:root{--vp-backdrop-bg-color: rgba(0, 0, 0, .6)}:root{--vp-home-hero-name-color: var(--vp-c-brand-1);--vp-home-hero-name-background: transparent;--vp-home-hero-image-background-image: none;--vp-home-hero-image-filter: none}:root{--vp-badge-info-border: transparent;--vp-badge-info-text: var(--vp-c-text-2);--vp-badge-info-bg: var(--vp-c-default-soft);--vp-badge-tip-border: transparent;--vp-badge-tip-text: var(--vp-c-tip-1);--vp-badge-tip-bg: var(--vp-c-tip-soft);--vp-badge-warning-border: transparent;--vp-badge-warning-text: var(--vp-c-warning-1);--vp-badge-warning-bg: var(--vp-c-warning-soft);--vp-badge-danger-border: transparent;--vp-badge-danger-text: var(--vp-c-danger-1);--vp-badge-danger-bg: var(--vp-c-danger-soft)}:root{--vp-carbon-ads-text-color: var(--vp-c-text-1);--vp-carbon-ads-poweredby-color: var(--vp-c-text-2);--vp-carbon-ads-bg-color: var(--vp-c-bg-soft);--vp-carbon-ads-hover-text-color: var(--vp-c-brand-1);--vp-carbon-ads-hover-poweredby-color: var(--vp-c-text-1)}:root{--vp-local-search-bg: var(--vp-c-bg);--vp-local-search-result-bg: var(--vp-c-bg);--vp-local-search-result-border: var(--vp-c-divider);--vp-local-search-result-selected-bg: var(--vp-c-bg);--vp-local-search-result-selected-border: var(--vp-c-brand-1);--vp-local-search-highlight-bg: var(--vp-c-brand-1);--vp-local-search-highlight-text: var(--vp-c-neutral-inverse)}@media (prefers-reduced-motion: reduce){*,:before,:after{animation-delay:-1ms!important;animation-duration:1ms!important;animation-iteration-count:1!important;background-attachment:initial!important;scroll-behavior:auto!important;transition-duration:0s!important;transition-delay:0s!important}}*,:before,:after{box-sizing:border-box}html{line-height:1.4;font-size:16px;-webkit-text-size-adjust:100%}html.dark{color-scheme:dark}body{margin:0;width:100%;min-width:320px;min-height:100vh;line-height:24px;font-family:var(--vp-font-family-base);font-size:16px;font-weight:400;color:var(--vp-c-text-1);background-color:var(--vp-c-bg);font-synthesis:style;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}main{display:block}h1,h2,h3,h4,h5,h6{margin:0;line-height:24px;font-size:16px;font-weight:400}p{margin:0}strong,b{font-weight:600}a,area,button,[role=button],input,label,select,summary,textarea{touch-action:manipulation}a{color:inherit;text-decoration:inherit}ol,ul{list-style:none;margin:0;padding:0}blockquote{margin:0}pre,code,kbd,samp{font-family:var(--vp-font-family-mono)}img,svg,video,canvas,audio,iframe,embed,object{display:block}figure{margin:0}img,video{max-width:100%;height:auto}button,input,optgroup,select,textarea{border:0;padding:0;line-height:inherit;color:inherit}button{padding:0;font-family:inherit;background-color:transparent;background-image:none}button:enabled,[role=button]:enabled{cursor:pointer}button:focus,button:focus-visible{outline:1px dotted;outline:4px auto -webkit-focus-ring-color}button:focus:not(:focus-visible){outline:none!important}input:focus,textarea:focus,select:focus{outline:none}table{border-collapse:collapse}input{background-color:transparent}input::-moz-placeholder,textarea::-moz-placeholder{color:var(--vp-c-text-3)}input::placeholder,textarea::placeholder{color:var(--vp-c-text-3)}input::-webkit-outer-spin-button,input::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}input[type=number]{-moz-appearance:textfield}textarea{resize:vertical}select{-webkit-appearance:none}fieldset{margin:0;padding:0}h1,h2,h3,h4,h5,h6,li,p{overflow-wrap:break-word}vite-error-overlay{z-index:9999}mjx-container{display:inline-block;margin:auto 2px -2px}mjx-container>svg{display:inline-block;margin:auto}[class^=vpi-],[class*=" vpi-"],.vp-icon{width:1em;height:1em}[class^=vpi-].bg,[class*=" vpi-"].bg,.vp-icon.bg{background-size:100% 100%;background-color:transparent}[class^=vpi-]:not(.bg),[class*=" vpi-"]:not(.bg),.vp-icon:not(.bg){-webkit-mask:var(--icon) no-repeat;mask:var(--icon) no-repeat;-webkit-mask-size:100% 100%;mask-size:100% 100%;background-color:currentColor;color:inherit}.vpi-align-left{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Cpath d='M21 6H3M15 12H3M17 18H3'/%3E%3C/svg%3E")}.vpi-arrow-right,.vpi-arrow-down,.vpi-arrow-left,.vpi-arrow-up{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Cpath d='M5 12h14M12 5l7 7-7 7'/%3E%3C/svg%3E")}.vpi-chevron-right,.vpi-chevron-down,.vpi-chevron-left,.vpi-chevron-up{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Cpath d='m9 18 6-6-6-6'/%3E%3C/svg%3E")}.vpi-chevron-down,.vpi-arrow-down{transform:rotate(90deg)}.vpi-chevron-left,.vpi-arrow-left{transform:rotate(180deg)}.vpi-chevron-up,.vpi-arrow-up{transform:rotate(-90deg)}.vpi-square-pen{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Cpath d='M12 3H5a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2v-7'/%3E%3Cpath d='M18.375 2.625a2.121 2.121 0 1 1 3 3L12 15l-4 1 1-4Z'/%3E%3C/svg%3E")}.vpi-plus{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Cpath d='M5 12h14M12 5v14'/%3E%3C/svg%3E")}.vpi-sun{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Ccircle cx='12' cy='12' r='4'/%3E%3Cpath d='M12 2v2M12 20v2M4.93 4.93l1.41 1.41M17.66 17.66l1.41 1.41M2 12h2M20 12h2M6.34 17.66l-1.41 1.41M19.07 4.93l-1.41 1.41'/%3E%3C/svg%3E")}.vpi-moon{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Cpath d='M12 3a6 6 0 0 0 9 9 9 9 0 1 1-9-9Z'/%3E%3C/svg%3E")}.vpi-more-horizontal{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Ccircle cx='12' cy='12' r='1'/%3E%3Ccircle cx='19' cy='12' r='1'/%3E%3Ccircle cx='5' cy='12' r='1'/%3E%3C/svg%3E")}.vpi-languages{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Cpath d='m5 8 6 6M4 14l6-6 2-3M2 5h12M7 2h1M22 22l-5-10-5 10M14 18h6'/%3E%3C/svg%3E")}.vpi-heart{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Cpath d='M19 14c1.49-1.46 3-3.21 3-5.5A5.5 5.5 0 0 0 16.5 3c-1.76 0-3 .5-4.5 2-1.5-1.5-2.74-2-4.5-2A5.5 5.5 0 0 0 2 8.5c0 2.3 1.5 4.05 3 5.5l7 7Z'/%3E%3C/svg%3E")}.vpi-search{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Ccircle cx='11' cy='11' r='8'/%3E%3Cpath d='m21 21-4.3-4.3'/%3E%3C/svg%3E")}.vpi-layout-list{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Crect width='7' height='7' x='3' y='3' rx='1'/%3E%3Crect width='7' height='7' x='3' y='14' rx='1'/%3E%3Cpath d='M14 4h7M14 9h7M14 15h7M14 20h7'/%3E%3C/svg%3E")}.vpi-delete{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Cpath d='M20 5H9l-7 7 7 7h11a2 2 0 0 0 2-2V7a2 2 0 0 0-2-2ZM18 9l-6 6M12 9l6 6'/%3E%3C/svg%3E")}.vpi-corner-down-left{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Cpath d='m9 10-5 5 5 5'/%3E%3Cpath d='M20 4v7a4 4 0 0 1-4 4H4'/%3E%3C/svg%3E")}:root{--vp-icon-copy: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='rgba(128,128,128,1)' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Crect width='8' height='4' x='8' y='2' rx='1' ry='1'/%3E%3Cpath d='M16 4h2a2 2 0 0 1 2 2v14a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2V6a2 2 0 0 1 2-2h2'/%3E%3C/svg%3E");--vp-icon-copied: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='rgba(128,128,128,1)' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Crect width='8' height='4' x='8' y='2' rx='1' ry='1'/%3E%3Cpath d='M16 4h2a2 2 0 0 1 2 2v14a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2V6a2 2 0 0 1 2-2h2'/%3E%3Cpath d='m9 14 2 2 4-4'/%3E%3C/svg%3E")}.vpi-social-discord{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M20.317 4.37a19.791 19.791 0 0 0-4.885-1.515.074.074 0 0 0-.079.037c-.21.375-.444.864-.608 1.25a18.27 18.27 0 0 0-5.487 0 12.64 12.64 0 0 0-.617-1.25.077.077 0 0 0-.079-.037A19.736 19.736 0 0 0 3.677 4.37a.07.07 0 0 0-.032.027C.533 9.046-.32 13.58.099 18.057a.082.082 0 0 0 .031.057 19.9 19.9 0 0 0 5.993 3.03.078.078 0 0 0 .084-.028c.462-.63.874-1.295 1.226-1.994a.076.076 0 0 0-.041-.106 13.107 13.107 0 0 1-1.872-.892.077.077 0 0 1-.008-.128 10.2 10.2 0 0 0 .372-.292.074.074 0 0 1 .077-.01c3.928 1.793 8.18 1.793 12.062 0a.074.074 0 0 1 .078.01c.12.098.246.198.373.292a.077.077 0 0 1-.006.127 12.299 12.299 0 0 1-1.873.892.077.077 0 0 0-.041.107c.36.698.772 1.362 1.225 1.993a.076.076 0 0 0 .084.028 19.839 19.839 0 0 0 6.002-3.03.077.077 0 0 0 .032-.054c.5-5.177-.838-9.674-3.549-13.66a.061.061 0 0 0-.031-.03zM8.02 15.33c-1.183 0-2.157-1.085-2.157-2.419 0-1.333.956-2.419 2.157-2.419 1.21 0 2.176 1.096 2.157 2.42 0 1.333-.956 2.418-2.157 2.418zm7.975 0c-1.183 0-2.157-1.085-2.157-2.419 0-1.333.955-2.419 2.157-2.419 1.21 0 2.176 1.096 2.157 2.42 0 1.333-.946 2.418-2.157 2.418Z'/%3E%3C/svg%3E")}.vpi-social-facebook{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M9.101 23.691v-7.98H6.627v-3.667h2.474v-1.58c0-4.085 1.848-5.978 5.858-5.978.401 0 .955.042 1.468.103a8.68 8.68 0 0 1 1.141.195v3.325a8.623 8.623 0 0 0-.653-.036 26.805 26.805 0 0 0-.733-.009c-.707 0-1.259.096-1.675.309a1.686 1.686 0 0 0-.679.622c-.258.42-.374.995-.374 1.752v1.297h3.919l-.386 2.103-.287 1.564h-3.246v8.245C19.396 23.238 24 18.179 24 12.044c0-6.627-5.373-12-12-12s-12 5.373-12 12c0 5.628 3.874 10.35 9.101 11.647Z'/%3E%3C/svg%3E")}.vpi-social-github{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M12 .297c-6.63 0-12 5.373-12 12 0 5.303 3.438 9.8 8.205 11.385.6.113.82-.258.82-.577 0-.285-.01-1.04-.015-2.04-3.338.724-4.042-1.61-4.042-1.61C4.422 18.07 3.633 17.7 3.633 17.7c-1.087-.744.084-.729.084-.729 1.205.084 1.838 1.236 1.838 1.236 1.07 1.835 2.809 1.305 3.495.998.108-.776.417-1.305.76-1.605-2.665-.3-5.466-1.332-5.466-5.93 0-1.31.465-2.38 1.235-3.22-.135-.303-.54-1.523.105-3.176 0 0 1.005-.322 3.3 1.23.96-.267 1.98-.399 3-.405 1.02.006 2.04.138 3 .405 2.28-1.552 3.285-1.23 3.285-1.23.645 1.653.24 2.873.12 3.176.765.84 1.23 1.91 1.23 3.22 0 4.61-2.805 5.625-5.475 5.92.42.36.81 1.096.81 2.22 0 1.606-.015 2.896-.015 3.286 0 .315.21.69.825.57C20.565 22.092 24 17.592 24 12.297c0-6.627-5.373-12-12-12'/%3E%3C/svg%3E")}.vpi-social-instagram{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M7.03.084c-1.277.06-2.149.264-2.91.563a5.874 5.874 0 0 0-2.124 1.388 5.878 5.878 0 0 0-1.38 2.127C.321 4.926.12 5.8.064 7.076.008 8.354-.005 8.764.001 12.023c.007 3.259.021 3.667.083 4.947.061 1.277.264 2.149.563 2.911.308.789.72 1.457 1.388 2.123a5.872 5.872 0 0 0 2.129 1.38c.763.295 1.636.496 2.913.552 1.278.056 1.689.069 4.947.063 3.257-.007 3.668-.021 4.947-.082 1.28-.06 2.147-.265 2.91-.563a5.881 5.881 0 0 0 2.123-1.388 5.881 5.881 0 0 0 1.38-2.129c.295-.763.496-1.636.551-2.912.056-1.28.07-1.69.063-4.948-.006-3.258-.02-3.667-.081-4.947-.06-1.28-.264-2.148-.564-2.911a5.892 5.892 0 0 0-1.387-2.123 5.857 5.857 0 0 0-2.128-1.38C19.074.322 18.202.12 16.924.066 15.647.009 15.236-.006 11.977 0 8.718.008 8.31.021 7.03.084m.14 21.693c-1.17-.05-1.805-.245-2.228-.408a3.736 3.736 0 0 1-1.382-.895 3.695 3.695 0 0 1-.9-1.378c-.165-.423-.363-1.058-.417-2.228-.06-1.264-.072-1.644-.08-4.848-.006-3.204.006-3.583.061-4.848.05-1.169.246-1.805.408-2.228.216-.561.477-.96.895-1.382a3.705 3.705 0 0 1 1.379-.9c.423-.165 1.057-.361 2.227-.417 1.265-.06 1.644-.072 4.848-.08 3.203-.006 3.583.006 4.85.062 1.168.05 1.804.244 2.227.408.56.216.96.475 1.382.895.421.42.681.817.9 1.378.165.422.362 1.056.417 2.227.06 1.265.074 1.645.08 4.848.005 3.203-.006 3.583-.061 4.848-.051 1.17-.245 1.805-.408 2.23-.216.56-.477.96-.896 1.38a3.705 3.705 0 0 1-1.378.9c-.422.165-1.058.362-2.226.418-1.266.06-1.645.072-4.85.079-3.204.007-3.582-.006-4.848-.06m9.783-16.192a1.44 1.44 0 1 0 1.437-1.442 1.44 1.44 0 0 0-1.437 1.442M5.839 12.012a6.161 6.161 0 1 0 12.323-.024 6.162 6.162 0 0 0-12.323.024M8 12.008A4 4 0 1 1 12.008 16 4 4 0 0 1 8 12.008'/%3E%3C/svg%3E")}.vpi-social-linkedin{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M20.447 20.452h-3.554v-5.569c0-1.328-.027-3.037-1.852-3.037-1.853 0-2.136 1.445-2.136 2.939v5.667H9.351V9h3.414v1.561h.046c.477-.9 1.637-1.85 3.37-1.85 3.601 0 4.267 2.37 4.267 5.455v6.286zM5.337 7.433a2.062 2.062 0 0 1-2.063-2.065 2.064 2.064 0 1 1 2.063 2.065zm1.782 13.019H3.555V9h3.564v11.452zM22.225 0H1.771C.792 0 0 .774 0 1.729v20.542C0 23.227.792 24 1.771 24h20.451C23.2 24 24 23.227 24 22.271V1.729C24 .774 23.2 0 22.222 0h.003z'/%3E%3C/svg%3E")}.vpi-social-mastodon{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M23.268 5.313c-.35-2.578-2.617-4.61-5.304-5.004C17.51.242 15.792 0 11.813 0h-.03c-3.98 0-4.835.242-5.288.309C3.882.692 1.496 2.518.917 5.127.64 6.412.61 7.837.661 9.143c.074 1.874.088 3.745.26 5.611.118 1.24.325 2.47.62 3.68.55 2.237 2.777 4.098 4.96 4.857 2.336.792 4.849.923 7.256.38.265-.061.527-.132.786-.213.585-.184 1.27-.39 1.774-.753a.057.057 0 0 0 .023-.043v-1.809a.052.052 0 0 0-.02-.041.053.053 0 0 0-.046-.01 20.282 20.282 0 0 1-4.709.545c-2.73 0-3.463-1.284-3.674-1.818a5.593 5.593 0 0 1-.319-1.433.053.053 0 0 1 .066-.054c1.517.363 3.072.546 4.632.546.376 0 .75 0 1.125-.01 1.57-.044 3.224-.124 4.768-.422.038-.008.077-.015.11-.024 2.435-.464 4.753-1.92 4.989-5.604.008-.145.03-1.52.03-1.67.002-.512.167-3.63-.024-5.545zm-3.748 9.195h-2.561V8.29c0-1.309-.55-1.976-1.67-1.976-1.23 0-1.846.79-1.846 2.35v3.403h-2.546V8.663c0-1.56-.617-2.35-1.848-2.35-1.112 0-1.668.668-1.67 1.977v6.218H4.822V8.102c0-1.31.337-2.35 1.011-3.12.696-.77 1.608-1.164 2.74-1.164 1.311 0 2.302.5 2.962 1.498l.638 1.06.638-1.06c.66-.999 1.65-1.498 2.96-1.498 1.13 0 2.043.395 2.74 1.164.675.77 1.012 1.81 1.012 3.12z'/%3E%3C/svg%3E")}.vpi-social-npm{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M1.763 0C.786 0 0 .786 0 1.763v20.474C0 23.214.786 24 1.763 24h20.474c.977 0 1.763-.786 1.763-1.763V1.763C24 .786 23.214 0 22.237 0zM5.13 5.323l13.837.019-.009 13.836h-3.464l.01-10.382h-3.456L12.04 19.17H5.113z'/%3E%3C/svg%3E")}.vpi-social-slack{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M5.042 15.165a2.528 2.528 0 0 1-2.52 2.523A2.528 2.528 0 0 1 0 15.165a2.527 2.527 0 0 1 2.522-2.52h2.52v2.52zm1.271 0a2.527 2.527 0 0 1 2.521-2.52 2.527 2.527 0 0 1 2.521 2.52v6.313A2.528 2.528 0 0 1 8.834 24a2.528 2.528 0 0 1-2.521-2.522v-6.313zM8.834 5.042a2.528 2.528 0 0 1-2.521-2.52A2.528 2.528 0 0 1 8.834 0a2.528 2.528 0 0 1 2.521 2.522v2.52H8.834zm0 1.271a2.528 2.528 0 0 1 2.521 2.521 2.528 2.528 0 0 1-2.521 2.521H2.522A2.528 2.528 0 0 1 0 8.834a2.528 2.528 0 0 1 2.522-2.521h6.312zm10.122 2.521a2.528 2.528 0 0 1 2.522-2.521A2.528 2.528 0 0 1 24 8.834a2.528 2.528 0 0 1-2.522 2.521h-2.522V8.834zm-1.268 0a2.528 2.528 0 0 1-2.523 2.521 2.527 2.527 0 0 1-2.52-2.521V2.522A2.527 2.527 0 0 1 15.165 0a2.528 2.528 0 0 1 2.523 2.522v6.312zm-2.523 10.122a2.528 2.528 0 0 1 2.523 2.522A2.528 2.528 0 0 1 15.165 24a2.527 2.527 0 0 1-2.52-2.522v-2.522h2.52zm0-1.268a2.527 2.527 0 0 1-2.52-2.523 2.526 2.526 0 0 1 2.52-2.52h6.313A2.527 2.527 0 0 1 24 15.165a2.528 2.528 0 0 1-2.522 2.523h-6.313z'/%3E%3C/svg%3E")}.vpi-social-twitter,.vpi-social-x{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M18.901 1.153h3.68l-8.04 9.19L24 22.846h-7.406l-5.8-7.584-6.638 7.584H.474l8.6-9.83L0 1.154h7.594l5.243 6.932ZM17.61 20.644h2.039L6.486 3.24H4.298Z'/%3E%3C/svg%3E")}.vpi-social-youtube{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M23.498 6.186a3.016 3.016 0 0 0-2.122-2.136C19.505 3.545 12 3.545 12 3.545s-7.505 0-9.377.505A3.017 3.017 0 0 0 .502 6.186C0 8.07 0 12 0 12s0 3.93.502 5.814a3.016 3.016 0 0 0 2.122 2.136c1.871.505 9.376.505 9.376.505s7.505 0 9.377-.505a3.015 3.015 0 0 0 2.122-2.136C24 15.93 24 12 24 12s0-3.93-.502-5.814zM9.545 15.568V8.432L15.818 12l-6.273 3.568z'/%3E%3C/svg%3E")}.visually-hidden{position:absolute;width:1px;height:1px;white-space:nowrap;clip:rect(0 0 0 0);-webkit-clip-path:inset(50%);clip-path:inset(50%);overflow:hidden}.custom-block{border:1px solid transparent;border-radius:8px;padding:16px 16px 8px;line-height:24px;font-size:var(--vp-custom-block-font-size);color:var(--vp-c-text-2)}.custom-block.info{border-color:var(--vp-custom-block-info-border);color:var(--vp-custom-block-info-text);background-color:var(--vp-custom-block-info-bg)}.custom-block.info a,.custom-block.info code{color:var(--vp-c-brand-1)}.custom-block.info a:hover,.custom-block.info a:hover>code{color:var(--vp-c-brand-2)}.custom-block.info code{background-color:var(--vp-custom-block-info-code-bg)}.custom-block.note{border-color:var(--vp-custom-block-note-border);color:var(--vp-custom-block-note-text);background-color:var(--vp-custom-block-note-bg)}.custom-block.note a,.custom-block.note code{color:var(--vp-c-brand-1)}.custom-block.note a:hover,.custom-block.note a:hover>code{color:var(--vp-c-brand-2)}.custom-block.note code{background-color:var(--vp-custom-block-note-code-bg)}.custom-block.tip{border-color:var(--vp-custom-block-tip-border);color:var(--vp-custom-block-tip-text);background-color:var(--vp-custom-block-tip-bg)}.custom-block.tip a,.custom-block.tip code{color:var(--vp-c-tip-1)}.custom-block.tip a:hover,.custom-block.tip a:hover>code{color:var(--vp-c-tip-2)}.custom-block.tip code{background-color:var(--vp-custom-block-tip-code-bg)}.custom-block.important{border-color:var(--vp-custom-block-important-border);color:var(--vp-custom-block-important-text);background-color:var(--vp-custom-block-important-bg)}.custom-block.important a,.custom-block.important code{color:var(--vp-c-important-1)}.custom-block.important a:hover,.custom-block.important a:hover>code{color:var(--vp-c-important-2)}.custom-block.important code{background-color:var(--vp-custom-block-important-code-bg)}.custom-block.warning{border-color:var(--vp-custom-block-warning-border);color:var(--vp-custom-block-warning-text);background-color:var(--vp-custom-block-warning-bg)}.custom-block.warning a,.custom-block.warning code{color:var(--vp-c-warning-1)}.custom-block.warning a:hover,.custom-block.warning a:hover>code{color:var(--vp-c-warning-2)}.custom-block.warning code{background-color:var(--vp-custom-block-warning-code-bg)}.custom-block.danger{border-color:var(--vp-custom-block-danger-border);color:var(--vp-custom-block-danger-text);background-color:var(--vp-custom-block-danger-bg)}.custom-block.danger a,.custom-block.danger code{color:var(--vp-c-danger-1)}.custom-block.danger a:hover,.custom-block.danger a:hover>code{color:var(--vp-c-danger-2)}.custom-block.danger code{background-color:var(--vp-custom-block-danger-code-bg)}.custom-block.caution{border-color:var(--vp-custom-block-caution-border);color:var(--vp-custom-block-caution-text);background-color:var(--vp-custom-block-caution-bg)}.custom-block.caution a,.custom-block.caution code{color:var(--vp-c-caution-1)}.custom-block.caution a:hover,.custom-block.caution a:hover>code{color:var(--vp-c-caution-2)}.custom-block.caution code{background-color:var(--vp-custom-block-caution-code-bg)}.custom-block.details{border-color:var(--vp-custom-block-details-border);color:var(--vp-custom-block-details-text);background-color:var(--vp-custom-block-details-bg)}.custom-block.details a{color:var(--vp-c-brand-1)}.custom-block.details a:hover,.custom-block.details a:hover>code{color:var(--vp-c-brand-2)}.custom-block.details code{background-color:var(--vp-custom-block-details-code-bg)}.custom-block-title{font-weight:600}.custom-block p+p{margin:8px 0}.custom-block.details summary{margin:0 0 8px;font-weight:700;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;user-select:none}.custom-block.details summary+p{margin:8px 0}.custom-block a{color:inherit;font-weight:600;text-decoration:underline;text-underline-offset:2px;transition:opacity .25s}.custom-block a:hover{opacity:.75}.custom-block code{font-size:var(--vp-custom-block-code-font-size)}.custom-block.custom-block th,.custom-block.custom-block blockquote>p{font-size:var(--vp-custom-block-font-size);color:inherit}.dark .vp-code span{color:var(--shiki-dark, inherit)}html:not(.dark) .vp-code span{color:var(--shiki-light, inherit)}.vp-code-group{margin-top:16px}.vp-code-group .tabs{position:relative;display:flex;margin-right:-24px;margin-left:-24px;padding:0 12px;background-color:var(--vp-code-tab-bg);overflow-x:auto;overflow-y:hidden;box-shadow:inset 0 -1px var(--vp-code-tab-divider)}@media (min-width: 640px){.vp-code-group .tabs{margin-right:0;margin-left:0;border-radius:8px 8px 0 0}}.vp-code-group .tabs input{position:fixed;opacity:0;pointer-events:none}.vp-code-group .tabs label{position:relative;display:inline-block;border-bottom:1px solid transparent;padding:0 12px;line-height:48px;font-size:14px;font-weight:500;color:var(--vp-code-tab-text-color);white-space:nowrap;cursor:pointer;transition:color .25s}.vp-code-group .tabs label:after{position:absolute;right:8px;bottom:-1px;left:8px;z-index:1;height:2px;border-radius:2px;content:"";background-color:transparent;transition:background-color .25s}.vp-code-group label:hover{color:var(--vp-code-tab-hover-text-color)}.vp-code-group input:checked+label{color:var(--vp-code-tab-active-text-color)}.vp-code-group input:checked+label:after{background-color:var(--vp-code-tab-active-bar-color)}.vp-code-group div[class*=language-],.vp-block{display:none;margin-top:0!important;border-top-left-radius:0!important;border-top-right-radius:0!important}.vp-code-group div[class*=language-].active,.vp-block.active{display:block}.vp-block{padding:20px 24px}.vp-doc h1,.vp-doc h2,.vp-doc h3,.vp-doc h4,.vp-doc h5,.vp-doc h6{position:relative;font-weight:600;outline:none}.vp-doc h1{letter-spacing:-.02em;line-height:40px;font-size:28px}.vp-doc h2{margin:48px 0 16px;border-top:1px solid var(--vp-c-divider);padding-top:24px;letter-spacing:-.02em;line-height:32px;font-size:24px}.vp-doc h3{margin:32px 0 0;letter-spacing:-.01em;line-height:28px;font-size:20px}.vp-doc .header-anchor{position:absolute;top:0;left:0;margin-left:-.87em;font-weight:500;-webkit-user-select:none;-moz-user-select:none;user-select:none;opacity:0;text-decoration:none;transition:color .25s,opacity .25s}.vp-doc .header-anchor:before{content:var(--vp-header-anchor-symbol)}.vp-doc h1:hover .header-anchor,.vp-doc h1 .header-anchor:focus,.vp-doc h2:hover .header-anchor,.vp-doc h2 .header-anchor:focus,.vp-doc h3:hover .header-anchor,.vp-doc h3 .header-anchor:focus,.vp-doc h4:hover .header-anchor,.vp-doc h4 .header-anchor:focus,.vp-doc h5:hover .header-anchor,.vp-doc h5 .header-anchor:focus,.vp-doc h6:hover .header-anchor,.vp-doc h6 .header-anchor:focus{opacity:1}@media (min-width: 768px){.vp-doc h1{letter-spacing:-.02em;line-height:40px;font-size:32px}}.vp-doc h2 .header-anchor{top:24px}.vp-doc p,.vp-doc summary{margin:16px 0}.vp-doc p{line-height:28px}.vp-doc blockquote{margin:16px 0;border-left:2px solid var(--vp-c-divider);padding-left:16px;transition:border-color .5s}.vp-doc blockquote>p{margin:0;font-size:16px;color:var(--vp-c-text-2);transition:color .5s}.vp-doc a{font-weight:500;color:var(--vp-c-brand-1);text-decoration:underline;text-underline-offset:2px;transition:color .25s,opacity .25s}.vp-doc a:hover{color:var(--vp-c-brand-2)}.vp-doc strong{font-weight:600}.vp-doc ul,.vp-doc ol{padding-left:1.25rem;margin:16px 0}.vp-doc ul{list-style:disc}.vp-doc ol{list-style:decimal}.vp-doc li+li{margin-top:8px}.vp-doc li>ol,.vp-doc li>ul{margin:8px 0 0}.vp-doc table{display:block;border-collapse:collapse;margin:20px 0;overflow-x:auto}.vp-doc tr{background-color:var(--vp-c-bg);border-top:1px solid var(--vp-c-divider);transition:background-color .5s}.vp-doc tr:nth-child(2n){background-color:var(--vp-c-bg-soft)}.vp-doc th,.vp-doc td{border:1px solid var(--vp-c-divider);padding:8px 16px}.vp-doc th{text-align:left;font-size:14px;font-weight:600;color:var(--vp-c-text-2);background-color:var(--vp-c-bg-soft)}.vp-doc td{font-size:14px}.vp-doc hr{margin:16px 0;border:none;border-top:1px solid var(--vp-c-divider)}.vp-doc .custom-block{margin:16px 0}.vp-doc .custom-block p{margin:8px 0;line-height:24px}.vp-doc .custom-block p:first-child{margin:0}.vp-doc .custom-block div[class*=language-]{margin:8px 0;border-radius:8px}.vp-doc .custom-block div[class*=language-] code{font-weight:400;background-color:transparent}.vp-doc .custom-block .vp-code-group .tabs{margin:0;border-radius:8px 8px 0 0}.vp-doc :not(pre,h1,h2,h3,h4,h5,h6)>code{font-size:var(--vp-code-font-size);color:var(--vp-code-color)}.vp-doc :not(pre)>code{border-radius:4px;padding:3px 6px;background-color:var(--vp-code-bg);transition:color .25s,background-color .5s}.vp-doc a>code{color:var(--vp-code-link-color)}.vp-doc a:hover>code{color:var(--vp-code-link-hover-color)}.vp-doc h1>code,.vp-doc h2>code,.vp-doc h3>code{font-size:.9em}.vp-doc div[class*=language-],.vp-block{position:relative;margin:16px -24px;background-color:var(--vp-code-block-bg);overflow-x:auto;transition:background-color .5s}@media (min-width: 640px){.vp-doc div[class*=language-],.vp-block{border-radius:8px;margin:16px 0}}@media (max-width: 639px){.vp-doc li div[class*=language-]{border-radius:8px 0 0 8px}}.vp-doc div[class*=language-]+div[class*=language-],.vp-doc div[class$=-api]+div[class*=language-],.vp-doc div[class*=language-]+div[class$=-api]>div[class*=language-]{margin-top:-8px}.vp-doc [class*=language-] pre,.vp-doc [class*=language-] code{direction:ltr;text-align:left;white-space:pre;word-spacing:normal;word-break:normal;word-wrap:normal;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-hyphens:none;hyphens:none}.vp-doc [class*=language-] pre{position:relative;z-index:1;margin:0;padding:20px 0;background:transparent;overflow-x:auto}.vp-doc [class*=language-] code{display:block;padding:0 24px;width:-moz-fit-content;width:fit-content;min-width:100%;line-height:var(--vp-code-line-height);font-size:var(--vp-code-font-size);color:var(--vp-code-block-color);transition:color .5s}.vp-doc [class*=language-] code .highlighted{background-color:var(--vp-code-line-highlight-color);transition:background-color .5s;margin:0 -24px;padding:0 24px;width:calc(100% + 48px);display:inline-block}.vp-doc [class*=language-] code .highlighted.error{background-color:var(--vp-code-line-error-color)}.vp-doc [class*=language-] code .highlighted.warning{background-color:var(--vp-code-line-warning-color)}.vp-doc [class*=language-] code .diff{transition:background-color .5s;margin:0 -24px;padding:0 24px;width:calc(100% + 48px);display:inline-block}.vp-doc [class*=language-] code .diff:before{position:absolute;left:10px}.vp-doc [class*=language-] .has-focused-lines .line:not(.has-focus){filter:blur(.095rem);opacity:.7;transition:filter .35s,opacity .35s}.vp-doc [class*=language-]:hover .has-focused-lines .line:not(.has-focus){filter:blur(0);opacity:1}.vp-doc [class*=language-] code .diff.remove{background-color:var(--vp-code-line-diff-remove-color);opacity:.7}.vp-doc [class*=language-] code .diff.remove:before{content:"-";color:var(--vp-code-line-diff-remove-symbol-color)}.vp-doc [class*=language-] code .diff.add{background-color:var(--vp-code-line-diff-add-color)}.vp-doc [class*=language-] code .diff.add:before{content:"+";color:var(--vp-code-line-diff-add-symbol-color)}.vp-doc div[class*=language-].line-numbers-mode{padding-left:32px}.vp-doc .line-numbers-wrapper{position:absolute;top:0;bottom:0;left:0;z-index:3;border-right:1px solid var(--vp-code-block-divider-color);padding-top:20px;width:32px;text-align:center;font-family:var(--vp-font-family-mono);line-height:var(--vp-code-line-height);font-size:var(--vp-code-font-size);color:var(--vp-code-line-number-color);transition:border-color .5s,color .5s}.vp-doc [class*=language-]>button.copy{direction:ltr;position:absolute;top:12px;right:12px;z-index:3;border:1px solid var(--vp-code-copy-code-border-color);border-radius:4px;width:40px;height:40px;background-color:var(--vp-code-copy-code-bg);opacity:0;cursor:pointer;background-image:var(--vp-icon-copy);background-position:50%;background-size:20px;background-repeat:no-repeat;transition:border-color .25s,background-color .25s,opacity .25s}.vp-doc [class*=language-]:hover>button.copy,.vp-doc [class*=language-]>button.copy:focus{opacity:1}.vp-doc [class*=language-]>button.copy:hover,.vp-doc [class*=language-]>button.copy.copied{border-color:var(--vp-code-copy-code-hover-border-color);background-color:var(--vp-code-copy-code-hover-bg)}.vp-doc [class*=language-]>button.copy.copied,.vp-doc [class*=language-]>button.copy:hover.copied{border-radius:0 4px 4px 0;background-color:var(--vp-code-copy-code-hover-bg);background-image:var(--vp-icon-copied)}.vp-doc [class*=language-]>button.copy.copied:before,.vp-doc [class*=language-]>button.copy:hover.copied:before{position:relative;top:-1px;transform:translate(calc(-100% - 1px));display:flex;justify-content:center;align-items:center;border:1px solid var(--vp-code-copy-code-hover-border-color);border-right:0;border-radius:4px 0 0 4px;padding:0 10px;width:-moz-fit-content;width:fit-content;height:40px;text-align:center;font-size:12px;font-weight:500;color:var(--vp-code-copy-code-active-text);background-color:var(--vp-code-copy-code-hover-bg);white-space:nowrap;content:var(--vp-code-copy-copied-text-content)}.vp-doc [class*=language-]>span.lang{position:absolute;top:2px;right:8px;z-index:2;font-size:12px;font-weight:500;color:var(--vp-code-lang-color);transition:color .4s,opacity .4s}.vp-doc [class*=language-]:hover>button.copy+span.lang,.vp-doc [class*=language-]>button.copy:focus+span.lang{opacity:0}.vp-doc .VPTeamMembers{margin-top:24px}.vp-doc .VPTeamMembers.small.count-1 .container{margin:0!important;max-width:calc((100% - 24px)/2)!important}.vp-doc .VPTeamMembers.small.count-2 .container,.vp-doc .VPTeamMembers.small.count-3 .container{max-width:100%!important}.vp-doc .VPTeamMembers.medium.count-1 .container{margin:0!important;max-width:calc((100% - 24px)/2)!important}:is(.vp-external-link-icon,.vp-doc a[href*="://"],.vp-doc a[target=_blank]):not(.no-icon):after{display:inline-block;margin-top:-1px;margin-left:4px;width:11px;height:11px;background:currentColor;color:var(--vp-c-text-3);flex-shrink:0;--icon: url("data:image/svg+xml, %3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' %3E%3Cpath d='M0 0h24v24H0V0z' fill='none' /%3E%3Cpath d='M9 5v2h6.59L4 18.59 5.41 20 17 8.41V15h2V5H9z' /%3E%3C/svg%3E");-webkit-mask-image:var(--icon);mask-image:var(--icon)}.vp-external-link-icon:after{content:""}.external-link-icon-enabled :is(.vp-doc a[href*="://"],.vp-doc a[target=_blank]):after{content:"";color:currentColor}.vp-sponsor{border-radius:16px;overflow:hidden}.vp-sponsor.aside{border-radius:12px}.vp-sponsor-section+.vp-sponsor-section{margin-top:4px}.vp-sponsor-tier{margin:0 0 4px!important;text-align:center;letter-spacing:1px!important;line-height:24px;width:100%;font-weight:600;color:var(--vp-c-text-2);background-color:var(--vp-c-bg-soft)}.vp-sponsor.normal .vp-sponsor-tier{padding:13px 0 11px;font-size:14px}.vp-sponsor.aside .vp-sponsor-tier{padding:9px 0 7px;font-size:12px}.vp-sponsor-grid+.vp-sponsor-tier{margin-top:4px}.vp-sponsor-grid{display:flex;flex-wrap:wrap;gap:4px}.vp-sponsor-grid.xmini .vp-sponsor-grid-link{height:64px}.vp-sponsor-grid.xmini .vp-sponsor-grid-image{max-width:64px;max-height:22px}.vp-sponsor-grid.mini .vp-sponsor-grid-link{height:72px}.vp-sponsor-grid.mini .vp-sponsor-grid-image{max-width:96px;max-height:24px}.vp-sponsor-grid.small .vp-sponsor-grid-link{height:96px}.vp-sponsor-grid.small .vp-sponsor-grid-image{max-width:96px;max-height:24px}.vp-sponsor-grid.medium .vp-sponsor-grid-link{height:112px}.vp-sponsor-grid.medium .vp-sponsor-grid-image{max-width:120px;max-height:36px}.vp-sponsor-grid.big .vp-sponsor-grid-link{height:184px}.vp-sponsor-grid.big .vp-sponsor-grid-image{max-width:192px;max-height:56px}.vp-sponsor-grid[data-vp-grid="2"] .vp-sponsor-grid-item{width:calc((100% - 4px)/2)}.vp-sponsor-grid[data-vp-grid="3"] .vp-sponsor-grid-item{width:calc((100% - 4px * 2) / 3)}.vp-sponsor-grid[data-vp-grid="4"] .vp-sponsor-grid-item{width:calc((100% - 12px)/4)}.vp-sponsor-grid[data-vp-grid="5"] .vp-sponsor-grid-item{width:calc((100% - 16px)/5)}.vp-sponsor-grid[data-vp-grid="6"] .vp-sponsor-grid-item{width:calc((100% - 4px * 5) / 6)}.vp-sponsor-grid-item{flex-shrink:0;width:100%;background-color:var(--vp-c-bg-soft);transition:background-color .25s}.vp-sponsor-grid-item:hover{background-color:var(--vp-c-default-soft)}.vp-sponsor-grid-item:hover .vp-sponsor-grid-image{filter:grayscale(0) invert(0)}.vp-sponsor-grid-item.empty:hover{background-color:var(--vp-c-bg-soft)}.dark .vp-sponsor-grid-item:hover{background-color:var(--vp-c-white)}.dark .vp-sponsor-grid-item.empty:hover{background-color:var(--vp-c-bg-soft)}.vp-sponsor-grid-link{display:flex}.vp-sponsor-grid-box{display:flex;justify-content:center;align-items:center;width:100%}.vp-sponsor-grid-image{max-width:100%;filter:grayscale(1);transition:filter .25s}.dark .vp-sponsor-grid-image{filter:grayscale(1) invert(1)}.VPBadge{display:inline-block;margin-left:2px;border:1px solid transparent;border-radius:12px;padding:0 10px;line-height:22px;font-size:12px;font-weight:500;transform:translateY(-2px)}.VPBadge.small{padding:0 6px;line-height:18px;font-size:10px;transform:translateY(-8px)}.VPDocFooter .VPBadge{display:none}.vp-doc h1>.VPBadge{margin-top:4px;vertical-align:top}.vp-doc h2>.VPBadge{margin-top:3px;padding:0 8px;vertical-align:top}.vp-doc h3>.VPBadge{vertical-align:middle}.vp-doc h4>.VPBadge,.vp-doc h5>.VPBadge,.vp-doc h6>.VPBadge{vertical-align:middle;line-height:18px}.VPBadge.info{border-color:var(--vp-badge-info-border);color:var(--vp-badge-info-text);background-color:var(--vp-badge-info-bg)}.VPBadge.tip{border-color:var(--vp-badge-tip-border);color:var(--vp-badge-tip-text);background-color:var(--vp-badge-tip-bg)}.VPBadge.warning{border-color:var(--vp-badge-warning-border);color:var(--vp-badge-warning-text);background-color:var(--vp-badge-warning-bg)}.VPBadge.danger{border-color:var(--vp-badge-danger-border);color:var(--vp-badge-danger-text);background-color:var(--vp-badge-danger-bg)}.VPBackdrop[data-v-c79a1216]{position:fixed;top:0;right:0;bottom:0;left:0;z-index:var(--vp-z-index-backdrop);background:var(--vp-backdrop-bg-color);transition:opacity .5s}.VPBackdrop.fade-enter-from[data-v-c79a1216],.VPBackdrop.fade-leave-to[data-v-c79a1216]{opacity:0}.VPBackdrop.fade-leave-active[data-v-c79a1216]{transition-duration:.25s}@media (min-width: 1280px){.VPBackdrop[data-v-c79a1216]{display:none}}.NotFound[data-v-d6be1790]{padding:64px 24px 96px;text-align:center}@media (min-width: 768px){.NotFound[data-v-d6be1790]{padding:96px 32px 168px}}.code[data-v-d6be1790]{line-height:64px;font-size:64px;font-weight:600}.title[data-v-d6be1790]{padding-top:12px;letter-spacing:2px;line-height:20px;font-size:20px;font-weight:700}.divider[data-v-d6be1790]{margin:24px auto 18px;width:64px;height:1px;background-color:var(--vp-c-divider)}.quote[data-v-d6be1790]{margin:0 auto;max-width:256px;font-size:14px;font-weight:500;color:var(--vp-c-text-2)}.action[data-v-d6be1790]{padding-top:20px}.link[data-v-d6be1790]{display:inline-block;border:1px solid var(--vp-c-brand-1);border-radius:16px;padding:3px 16px;font-size:14px;font-weight:500;color:var(--vp-c-brand-1);transition:border-color .25s,color .25s}.link[data-v-d6be1790]:hover{border-color:var(--vp-c-brand-2);color:var(--vp-c-brand-2)}.root[data-v-b933a997]{position:relative;z-index:1}.nested[data-v-b933a997]{padding-right:16px;padding-left:16px}.outline-link[data-v-b933a997]{display:block;line-height:32px;font-size:14px;font-weight:400;color:var(--vp-c-text-2);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;transition:color .5s}.outline-link[data-v-b933a997]:hover,.outline-link.active[data-v-b933a997]{color:var(--vp-c-text-1);transition:color .25s}.outline-link.nested[data-v-b933a997]{padding-left:13px}.VPDocAsideOutline[data-v-a5bbad30]{display:none}.VPDocAsideOutline.has-outline[data-v-a5bbad30]{display:block}.content[data-v-a5bbad30]{position:relative;border-left:1px solid var(--vp-c-divider);padding-left:16px;font-size:13px;font-weight:500}.outline-marker[data-v-a5bbad30]{position:absolute;top:32px;left:-1px;z-index:0;opacity:0;width:2px;border-radius:2px;height:18px;background-color:var(--vp-c-brand-1);transition:top .25s cubic-bezier(0,1,.5,1),background-color .5s,opacity .25s}.outline-title[data-v-a5bbad30]{line-height:32px;font-size:14px;font-weight:600}.VPDocAside[data-v-3f215769]{display:flex;flex-direction:column;flex-grow:1}.spacer[data-v-3f215769]{flex-grow:1}.VPDocAside[data-v-3f215769] .spacer+.VPDocAsideSponsors,.VPDocAside[data-v-3f215769] .spacer+.VPDocAsideCarbonAds{margin-top:24px}.VPDocAside[data-v-3f215769] .VPDocAsideSponsors+.VPDocAsideCarbonAds{margin-top:16px}.VPLastUpdated[data-v-7e05ebdb]{line-height:24px;font-size:14px;font-weight:500;color:var(--vp-c-text-2)}@media (min-width: 640px){.VPLastUpdated[data-v-7e05ebdb]{line-height:32px;font-size:14px;font-weight:500}}.VPDocFooter[data-v-d4a0bba5]{margin-top:64px}.edit-info[data-v-d4a0bba5]{padding-bottom:18px}@media (min-width: 640px){.edit-info[data-v-d4a0bba5]{display:flex;justify-content:space-between;align-items:center;padding-bottom:14px}}.edit-link-button[data-v-d4a0bba5]{display:flex;align-items:center;border:0;line-height:32px;font-size:14px;font-weight:500;color:var(--vp-c-brand-1);transition:color .25s}.edit-link-button[data-v-d4a0bba5]:hover{color:var(--vp-c-brand-2)}.edit-link-icon[data-v-d4a0bba5]{margin-right:8px}.prev-next[data-v-d4a0bba5]{border-top:1px solid var(--vp-c-divider);padding-top:24px;display:grid;grid-row-gap:8px}@media (min-width: 640px){.prev-next[data-v-d4a0bba5]{grid-template-columns:repeat(2,1fr);grid-column-gap:16px}}.pager-link[data-v-d4a0bba5]{display:block;border:1px solid var(--vp-c-divider);border-radius:8px;padding:11px 16px 13px;width:100%;height:100%;transition:border-color .25s}.pager-link[data-v-d4a0bba5]:hover{border-color:var(--vp-c-brand-1)}.pager-link.next[data-v-d4a0bba5]{margin-left:auto;text-align:right}.desc[data-v-d4a0bba5]{display:block;line-height:20px;font-size:12px;font-weight:500;color:var(--vp-c-text-2)}.title[data-v-d4a0bba5]{display:block;line-height:20px;font-size:14px;font-weight:500;color:var(--vp-c-brand-1);transition:color .25s}.VPDoc[data-v-39a288b8]{padding:32px 24px 96px;width:100%}@media (min-width: 768px){.VPDoc[data-v-39a288b8]{padding:48px 32px 128px}}@media (min-width: 960px){.VPDoc[data-v-39a288b8]{padding:48px 32px 0}.VPDoc:not(.has-sidebar) .container[data-v-39a288b8]{display:flex;justify-content:center;max-width:992px}.VPDoc:not(.has-sidebar) .content[data-v-39a288b8]{max-width:752px}}@media (min-width: 1280px){.VPDoc .container[data-v-39a288b8]{display:flex;justify-content:center}.VPDoc .aside[data-v-39a288b8]{display:block}}@media (min-width: 1440px){.VPDoc:not(.has-sidebar) .content[data-v-39a288b8]{max-width:784px}.VPDoc:not(.has-sidebar) .container[data-v-39a288b8]{max-width:1104px}}.container[data-v-39a288b8]{margin:0 auto;width:100%}.aside[data-v-39a288b8]{position:relative;display:none;order:2;flex-grow:1;padding-left:32px;width:100%;max-width:256px}.left-aside[data-v-39a288b8]{order:1;padding-left:unset;padding-right:32px}.aside-container[data-v-39a288b8]{position:fixed;top:0;padding-top:calc(var(--vp-nav-height) + var(--vp-layout-top-height, 0px) + var(--vp-doc-top-height, 0px) + 48px);width:224px;height:100vh;overflow-x:hidden;overflow-y:auto;scrollbar-width:none}.aside-container[data-v-39a288b8]::-webkit-scrollbar{display:none}.aside-curtain[data-v-39a288b8]{position:fixed;bottom:0;z-index:10;width:224px;height:32px;background:linear-gradient(transparent,var(--vp-c-bg) 70%)}.aside-content[data-v-39a288b8]{display:flex;flex-direction:column;min-height:calc(100vh - (var(--vp-nav-height) + var(--vp-layout-top-height, 0px) + 48px));padding-bottom:32px}.content[data-v-39a288b8]{position:relative;margin:0 auto;width:100%}@media (min-width: 960px){.content[data-v-39a288b8]{padding:0 32px 128px}}@media (min-width: 1280px){.content[data-v-39a288b8]{order:1;margin:0;min-width:640px}}.content-container[data-v-39a288b8]{margin:0 auto}.VPDoc.has-aside .content-container[data-v-39a288b8]{max-width:688px}.VPButton[data-v-cad61b99]{display:inline-block;border:1px solid transparent;text-align:center;font-weight:600;white-space:nowrap;transition:color .25s,border-color .25s,background-color .25s}.VPButton[data-v-cad61b99]:active{transition:color .1s,border-color .1s,background-color .1s}.VPButton.medium[data-v-cad61b99]{border-radius:20px;padding:0 20px;line-height:38px;font-size:14px}.VPButton.big[data-v-cad61b99]{border-radius:24px;padding:0 24px;line-height:46px;font-size:16px}.VPButton.brand[data-v-cad61b99]{border-color:var(--vp-button-brand-border);color:var(--vp-button-brand-text);background-color:var(--vp-button-brand-bg)}.VPButton.brand[data-v-cad61b99]:hover{border-color:var(--vp-button-brand-hover-border);color:var(--vp-button-brand-hover-text);background-color:var(--vp-button-brand-hover-bg)}.VPButton.brand[data-v-cad61b99]:active{border-color:var(--vp-button-brand-active-border);color:var(--vp-button-brand-active-text);background-color:var(--vp-button-brand-active-bg)}.VPButton.alt[data-v-cad61b99]{border-color:var(--vp-button-alt-border);color:var(--vp-button-alt-text);background-color:var(--vp-button-alt-bg)}.VPButton.alt[data-v-cad61b99]:hover{border-color:var(--vp-button-alt-hover-border);color:var(--vp-button-alt-hover-text);background-color:var(--vp-button-alt-hover-bg)}.VPButton.alt[data-v-cad61b99]:active{border-color:var(--vp-button-alt-active-border);color:var(--vp-button-alt-active-text);background-color:var(--vp-button-alt-active-bg)}.VPButton.sponsor[data-v-cad61b99]{border-color:var(--vp-button-sponsor-border);color:var(--vp-button-sponsor-text);background-color:var(--vp-button-sponsor-bg)}.VPButton.sponsor[data-v-cad61b99]:hover{border-color:var(--vp-button-sponsor-hover-border);color:var(--vp-button-sponsor-hover-text);background-color:var(--vp-button-sponsor-hover-bg)}.VPButton.sponsor[data-v-cad61b99]:active{border-color:var(--vp-button-sponsor-active-border);color:var(--vp-button-sponsor-active-text);background-color:var(--vp-button-sponsor-active-bg)}html:not(.dark) .VPImage.dark[data-v-8426fc1a]{display:none}.dark .VPImage.light[data-v-8426fc1a]{display:none}.VPHero[data-v-303bb580]{margin-top:calc((var(--vp-nav-height) + var(--vp-layout-top-height, 0px)) * -1);padding:calc(var(--vp-nav-height) + var(--vp-layout-top-height, 0px) + 48px) 24px 48px}@media (min-width: 640px){.VPHero[data-v-303bb580]{padding:calc(var(--vp-nav-height) + var(--vp-layout-top-height, 0px) + 80px) 48px 64px}}@media (min-width: 960px){.VPHero[data-v-303bb580]{padding:calc(var(--vp-nav-height) + var(--vp-layout-top-height, 0px) + 80px) 64px 64px}}.container[data-v-303bb580]{display:flex;flex-direction:column;margin:0 auto;max-width:1152px}@media (min-width: 960px){.container[data-v-303bb580]{flex-direction:row}}.main[data-v-303bb580]{position:relative;z-index:10;order:2;flex-grow:1;flex-shrink:0}.VPHero.has-image .container[data-v-303bb580]{text-align:center}@media (min-width: 960px){.VPHero.has-image .container[data-v-303bb580]{text-align:left}.main[data-v-303bb580]{order:1;width:calc((100% / 3) * 2)}.VPHero.has-image .main[data-v-303bb580]{max-width:592px}}.name[data-v-303bb580],.text[data-v-303bb580]{max-width:392px;letter-spacing:-.4px;line-height:40px;font-size:32px;font-weight:700;white-space:pre-wrap}.VPHero.has-image .name[data-v-303bb580],.VPHero.has-image .text[data-v-303bb580]{margin:0 auto}.name[data-v-303bb580]{color:var(--vp-home-hero-name-color)}.clip[data-v-303bb580]{background:var(--vp-home-hero-name-background);-webkit-background-clip:text;background-clip:text;-webkit-text-fill-color:var(--vp-home-hero-name-color)}@media (min-width: 640px){.name[data-v-303bb580],.text[data-v-303bb580]{max-width:576px;line-height:56px;font-size:48px}}@media (min-width: 960px){.name[data-v-303bb580],.text[data-v-303bb580]{line-height:64px;font-size:56px}.VPHero.has-image .name[data-v-303bb580],.VPHero.has-image .text[data-v-303bb580]{margin:0}}.tagline[data-v-303bb580]{padding-top:8px;max-width:392px;line-height:28px;font-size:18px;font-weight:500;white-space:pre-wrap;color:var(--vp-c-text-2)}.VPHero.has-image .tagline[data-v-303bb580]{margin:0 auto}@media (min-width: 640px){.tagline[data-v-303bb580]{padding-top:12px;max-width:576px;line-height:32px;font-size:20px}}@media (min-width: 960px){.tagline[data-v-303bb580]{line-height:36px;font-size:24px}.VPHero.has-image .tagline[data-v-303bb580]{margin:0}}.actions[data-v-303bb580]{display:flex;flex-wrap:wrap;margin:-6px;padding-top:24px}.VPHero.has-image .actions[data-v-303bb580]{justify-content:center}@media (min-width: 640px){.actions[data-v-303bb580]{padding-top:32px}}@media (min-width: 960px){.VPHero.has-image .actions[data-v-303bb580]{justify-content:flex-start}}.action[data-v-303bb580]{flex-shrink:0;padding:6px}.image[data-v-303bb580]{order:1;margin:-76px -24px -48px}@media (min-width: 640px){.image[data-v-303bb580]{margin:-108px -24px -48px}}@media (min-width: 960px){.image[data-v-303bb580]{flex-grow:1;order:2;margin:0;min-height:100%}}.image-container[data-v-303bb580]{position:relative;margin:0 auto;width:320px;height:320px}@media (min-width: 640px){.image-container[data-v-303bb580]{width:392px;height:392px}}@media (min-width: 960px){.image-container[data-v-303bb580]{display:flex;justify-content:center;align-items:center;width:100%;height:100%;transform:translate(-32px,-32px)}}.image-bg[data-v-303bb580]{position:absolute;top:50%;left:50%;border-radius:50%;width:192px;height:192px;background-image:var(--vp-home-hero-image-background-image);filter:var(--vp-home-hero-image-filter);transform:translate(-50%,-50%)}@media (min-width: 640px){.image-bg[data-v-303bb580]{width:256px;height:256px}}@media (min-width: 960px){.image-bg[data-v-303bb580]{width:320px;height:320px}}[data-v-303bb580] .image-src{position:absolute;top:50%;left:50%;max-width:192px;max-height:192px;transform:translate(-50%,-50%)}@media (min-width: 640px){[data-v-303bb580] .image-src{max-width:256px;max-height:256px}}@media (min-width: 960px){[data-v-303bb580] .image-src{max-width:320px;max-height:320px}}.VPFeature[data-v-a3976bdc]{display:block;border:1px solid var(--vp-c-bg-soft);border-radius:12px;height:100%;background-color:var(--vp-c-bg-soft);transition:border-color .25s,background-color .25s}.VPFeature.link[data-v-a3976bdc]:hover{border-color:var(--vp-c-brand-1)}.box[data-v-a3976bdc]{display:flex;flex-direction:column;padding:24px;height:100%}.box[data-v-a3976bdc]>.VPImage{margin-bottom:20px}.icon[data-v-a3976bdc]{display:flex;justify-content:center;align-items:center;margin-bottom:20px;border-radius:6px;background-color:var(--vp-c-default-soft);width:48px;height:48px;font-size:24px;transition:background-color .25s}.title[data-v-a3976bdc]{line-height:24px;font-size:16px;font-weight:600}.details[data-v-a3976bdc]{flex-grow:1;padding-top:8px;line-height:24px;font-size:14px;font-weight:500;color:var(--vp-c-text-2)}.link-text[data-v-a3976bdc]{padding-top:8px}.link-text-value[data-v-a3976bdc]{display:flex;align-items:center;font-size:14px;font-weight:500;color:var(--vp-c-brand-1)}.link-text-icon[data-v-a3976bdc]{margin-left:6px}.VPFeatures[data-v-a6181336]{position:relative;padding:0 24px}@media (min-width: 640px){.VPFeatures[data-v-a6181336]{padding:0 48px}}@media (min-width: 960px){.VPFeatures[data-v-a6181336]{padding:0 64px}}.container[data-v-a6181336]{margin:0 auto;max-width:1152px}.items[data-v-a6181336]{display:flex;flex-wrap:wrap;margin:-8px}.item[data-v-a6181336]{padding:8px;width:100%}@media (min-width: 640px){.item.grid-2[data-v-a6181336],.item.grid-4[data-v-a6181336],.item.grid-6[data-v-a6181336]{width:50%}}@media (min-width: 768px){.item.grid-2[data-v-a6181336],.item.grid-4[data-v-a6181336]{width:50%}.item.grid-3[data-v-a6181336],.item.grid-6[data-v-a6181336]{width:calc(100% / 3)}}@media (min-width: 960px){.item.grid-4[data-v-a6181336]{width:25%}}.container[data-v-8e2d4988]{margin:auto;width:100%;max-width:1280px;padding:0 24px}@media (min-width: 640px){.container[data-v-8e2d4988]{padding:0 48px}}@media (min-width: 960px){.container[data-v-8e2d4988]{width:100%;padding:0 64px}}.vp-doc[data-v-8e2d4988] .VPHomeSponsors,.vp-doc[data-v-8e2d4988] .VPTeamPage{margin-left:var(--vp-offset, calc(50% - 50vw) );margin-right:var(--vp-offset, calc(50% - 50vw) )}.vp-doc[data-v-8e2d4988] .VPHomeSponsors h2{border-top:none;letter-spacing:normal}.vp-doc[data-v-8e2d4988] .VPHomeSponsors a,.vp-doc[data-v-8e2d4988] .VPTeamPage a{text-decoration:none}.VPHome[data-v-686f80a6]{margin-bottom:96px}@media (min-width: 768px){.VPHome[data-v-686f80a6]{margin-bottom:128px}}.VPContent[data-v-1428d186]{flex-grow:1;flex-shrink:0;margin:var(--vp-layout-top-height, 0px) auto 0;width:100%}.VPContent.is-home[data-v-1428d186]{width:100%;max-width:100%}.VPContent.has-sidebar[data-v-1428d186]{margin:0}@media (min-width: 960px){.VPContent[data-v-1428d186]{padding-top:var(--vp-nav-height)}.VPContent.has-sidebar[data-v-1428d186]{margin:var(--vp-layout-top-height, 0px) 0 0;padding-left:var(--vp-sidebar-width)}}@media (min-width: 1440px){.VPContent.has-sidebar[data-v-1428d186]{padding-right:calc((100vw - var(--vp-layout-max-width)) / 2);padding-left:calc((100vw - var(--vp-layout-max-width)) / 2 + var(--vp-sidebar-width))}}.VPFooter[data-v-e315a0ad]{position:relative;z-index:var(--vp-z-index-footer);border-top:1px solid var(--vp-c-gutter);padding:32px 24px;background-color:var(--vp-c-bg)}.VPFooter.has-sidebar[data-v-e315a0ad]{display:none}.VPFooter[data-v-e315a0ad] a{text-decoration-line:underline;text-underline-offset:2px;transition:color .25s}.VPFooter[data-v-e315a0ad] a:hover{color:var(--vp-c-text-1)}@media (min-width: 768px){.VPFooter[data-v-e315a0ad]{padding:32px}}.container[data-v-e315a0ad]{margin:0 auto;max-width:var(--vp-layout-max-width);text-align:center}.message[data-v-e315a0ad],.copyright[data-v-e315a0ad]{line-height:24px;font-size:14px;font-weight:500;color:var(--vp-c-text-2)}.VPLocalNavOutlineDropdown[data-v-17a5e62e]{padding:12px 20px 11px}@media (min-width: 960px){.VPLocalNavOutlineDropdown[data-v-17a5e62e]{padding:12px 36px 11px}}.VPLocalNavOutlineDropdown button[data-v-17a5e62e]{display:block;font-size:12px;font-weight:500;line-height:24px;color:var(--vp-c-text-2);transition:color .5s;position:relative}.VPLocalNavOutlineDropdown button[data-v-17a5e62e]:hover{color:var(--vp-c-text-1);transition:color .25s}.VPLocalNavOutlineDropdown button.open[data-v-17a5e62e]{color:var(--vp-c-text-1)}.icon[data-v-17a5e62e]{display:inline-block;vertical-align:middle;margin-left:2px;font-size:14px;transform:rotate(0);transition:transform .25s}@media (min-width: 960px){.VPLocalNavOutlineDropdown button[data-v-17a5e62e]{font-size:14px}.icon[data-v-17a5e62e]{font-size:16px}}.open>.icon[data-v-17a5e62e]{transform:rotate(90deg)}.items[data-v-17a5e62e]{position:absolute;top:40px;right:16px;left:16px;display:grid;gap:1px;border:1px solid var(--vp-c-border);border-radius:8px;background-color:var(--vp-c-gutter);max-height:calc(var(--vp-vh, 100vh) - 86px);overflow:hidden auto;box-shadow:var(--vp-shadow-3)}@media (min-width: 960px){.items[data-v-17a5e62e]{right:auto;left:calc(var(--vp-sidebar-width) + 32px);width:320px}}.header[data-v-17a5e62e]{background-color:var(--vp-c-bg-soft)}.top-link[data-v-17a5e62e]{display:block;padding:0 16px;line-height:48px;font-size:14px;font-weight:500;color:var(--vp-c-brand-1)}.outline[data-v-17a5e62e]{padding:8px 0;background-color:var(--vp-c-bg-soft)}.flyout-enter-active[data-v-17a5e62e]{transition:all .2s ease-out}.flyout-leave-active[data-v-17a5e62e]{transition:all .15s ease-in}.flyout-enter-from[data-v-17a5e62e],.flyout-leave-to[data-v-17a5e62e]{opacity:0;transform:translateY(-16px)}.VPLocalNav[data-v-a6f0e41e]{position:sticky;top:0;left:0;z-index:var(--vp-z-index-local-nav);border-bottom:1px solid var(--vp-c-gutter);padding-top:var(--vp-layout-top-height, 0px);width:100%;background-color:var(--vp-local-nav-bg-color)}.VPLocalNav.fixed[data-v-a6f0e41e]{position:fixed}@media (min-width: 960px){.VPLocalNav[data-v-a6f0e41e]{top:var(--vp-nav-height)}.VPLocalNav.has-sidebar[data-v-a6f0e41e]{padding-left:var(--vp-sidebar-width)}.VPLocalNav.empty[data-v-a6f0e41e]{display:none}}@media (min-width: 1280px){.VPLocalNav[data-v-a6f0e41e]{display:none}}@media (min-width: 1440px){.VPLocalNav.has-sidebar[data-v-a6f0e41e]{padding-left:calc((100vw - var(--vp-layout-max-width)) / 2 + var(--vp-sidebar-width))}}.container[data-v-a6f0e41e]{display:flex;justify-content:space-between;align-items:center}.menu[data-v-a6f0e41e]{display:flex;align-items:center;padding:12px 24px 11px;line-height:24px;font-size:12px;font-weight:500;color:var(--vp-c-text-2);transition:color .5s}.menu[data-v-a6f0e41e]:hover{color:var(--vp-c-text-1);transition:color .25s}@media (min-width: 768px){.menu[data-v-a6f0e41e]{padding:0 32px}}@media (min-width: 960px){.menu[data-v-a6f0e41e]{display:none}}.menu-icon[data-v-a6f0e41e]{margin-right:8px;font-size:14px}.VPOutlineDropdown[data-v-a6f0e41e]{padding:12px 24px 11px}@media (min-width: 768px){.VPOutlineDropdown[data-v-a6f0e41e]{padding:12px 32px 11px}}.VPSwitch[data-v-1d5665e3]{position:relative;border-radius:11px;display:block;width:40px;height:22px;flex-shrink:0;border:1px solid var(--vp-input-border-color);background-color:var(--vp-input-switch-bg-color);transition:border-color .25s!important}.VPSwitch[data-v-1d5665e3]:hover{border-color:var(--vp-c-brand-1)}.check[data-v-1d5665e3]{position:absolute;top:1px;left:1px;width:18px;height:18px;border-radius:50%;background-color:var(--vp-c-neutral-inverse);box-shadow:var(--vp-shadow-1);transition:transform .25s!important}.icon[data-v-1d5665e3]{position:relative;display:block;width:18px;height:18px;border-radius:50%;overflow:hidden}.icon[data-v-1d5665e3] [class^=vpi-]{position:absolute;top:3px;left:3px;width:12px;height:12px;color:var(--vp-c-text-2)}.dark .icon[data-v-1d5665e3] [class^=vpi-]{color:var(--vp-c-text-1);transition:opacity .25s!important}.sun[data-v-d1f28634]{opacity:1}.moon[data-v-d1f28634],.dark .sun[data-v-d1f28634]{opacity:0}.dark .moon[data-v-d1f28634]{opacity:1}.dark .VPSwitchAppearance[data-v-d1f28634] .check{transform:translate(18px)}.VPNavBarAppearance[data-v-e6aabb21]{display:none}@media (min-width: 1280px){.VPNavBarAppearance[data-v-e6aabb21]{display:flex;align-items:center}}.VPMenuGroup+.VPMenuLink[data-v-43f1e123]{margin:12px -12px 0;border-top:1px solid var(--vp-c-divider);padding:12px 12px 0}.link[data-v-43f1e123]{display:block;border-radius:6px;padding:0 12px;line-height:32px;font-size:14px;font-weight:500;color:var(--vp-c-text-1);white-space:nowrap;transition:background-color .25s,color .25s}.link[data-v-43f1e123]:hover{color:var(--vp-c-brand-1);background-color:var(--vp-c-default-soft)}.link.active[data-v-43f1e123]{color:var(--vp-c-brand-1)}.VPMenuGroup[data-v-69e747b5]{margin:12px -12px 0;border-top:1px solid var(--vp-c-divider);padding:12px 12px 0}.VPMenuGroup[data-v-69e747b5]:first-child{margin-top:0;border-top:0;padding-top:0}.VPMenuGroup+.VPMenuGroup[data-v-69e747b5]{margin-top:12px;border-top:1px solid var(--vp-c-divider)}.title[data-v-69e747b5]{padding:0 12px;line-height:32px;font-size:14px;font-weight:600;color:var(--vp-c-text-2);white-space:nowrap;transition:color .25s}.VPMenu[data-v-e7ea1737]{border-radius:12px;padding:12px;min-width:128px;border:1px solid var(--vp-c-divider);background-color:var(--vp-c-bg-elv);box-shadow:var(--vp-shadow-3);transition:background-color .5s;max-height:calc(100vh - var(--vp-nav-height));overflow-y:auto}.VPMenu[data-v-e7ea1737] .group{margin:0 -12px;padding:0 12px 12px}.VPMenu[data-v-e7ea1737] .group+.group{border-top:1px solid var(--vp-c-divider);padding:11px 12px 12px}.VPMenu[data-v-e7ea1737] .group:last-child{padding-bottom:0}.VPMenu[data-v-e7ea1737] .group+.item{border-top:1px solid var(--vp-c-divider);padding:11px 16px 0}.VPMenu[data-v-e7ea1737] .item{padding:0 16px;white-space:nowrap}.VPMenu[data-v-e7ea1737] .label{flex-grow:1;line-height:28px;font-size:12px;font-weight:500;color:var(--vp-c-text-2);transition:color .5s}.VPMenu[data-v-e7ea1737] .action{padding-left:24px}.VPFlyout[data-v-b6c34ac9]{position:relative}.VPFlyout[data-v-b6c34ac9]:hover{color:var(--vp-c-brand-1);transition:color .25s}.VPFlyout:hover .text[data-v-b6c34ac9]{color:var(--vp-c-text-2)}.VPFlyout:hover .icon[data-v-b6c34ac9]{fill:var(--vp-c-text-2)}.VPFlyout.active .text[data-v-b6c34ac9]{color:var(--vp-c-brand-1)}.VPFlyout.active:hover .text[data-v-b6c34ac9]{color:var(--vp-c-brand-2)}.VPFlyout:hover .menu[data-v-b6c34ac9],.button[aria-expanded=true]+.menu[data-v-b6c34ac9]{opacity:1;visibility:visible;transform:translateY(0)}.button[aria-expanded=false]+.menu[data-v-b6c34ac9]{opacity:0;visibility:hidden;transform:translateY(0)}.button[data-v-b6c34ac9]{display:flex;align-items:center;padding:0 12px;height:var(--vp-nav-height);color:var(--vp-c-text-1);transition:color .5s}.text[data-v-b6c34ac9]{display:flex;align-items:center;line-height:var(--vp-nav-height);font-size:14px;font-weight:500;color:var(--vp-c-text-1);transition:color .25s}.option-icon[data-v-b6c34ac9]{margin-right:0;font-size:16px}.text-icon[data-v-b6c34ac9]{margin-left:4px;font-size:14px}.icon[data-v-b6c34ac9]{font-size:20px;transition:fill .25s}.menu[data-v-b6c34ac9]{position:absolute;top:calc(var(--vp-nav-height) / 2 + 20px);right:0;opacity:0;visibility:hidden;transition:opacity .25s,visibility .25s,transform .25s}.VPSocialLink[data-v-eee4e7cb]{display:flex;justify-content:center;align-items:center;width:36px;height:36px;color:var(--vp-c-text-2);transition:color .5s}.VPSocialLink[data-v-eee4e7cb]:hover{color:var(--vp-c-text-1);transition:color .25s}.VPSocialLink[data-v-eee4e7cb]>svg,.VPSocialLink[data-v-eee4e7cb]>[class^=vpi-social-]{width:20px;height:20px;fill:currentColor}.VPSocialLinks[data-v-7bc22406]{display:flex;justify-content:center}.VPNavBarExtra[data-v-d0bd9dde]{display:none;margin-right:-12px}@media (min-width: 768px){.VPNavBarExtra[data-v-d0bd9dde]{display:block}}@media (min-width: 1280px){.VPNavBarExtra[data-v-d0bd9dde]{display:none}}.trans-title[data-v-d0bd9dde]{padding:0 24px 0 12px;line-height:32px;font-size:14px;font-weight:700;color:var(--vp-c-text-1)}.item.appearance[data-v-d0bd9dde],.item.social-links[data-v-d0bd9dde]{display:flex;align-items:center;padding:0 12px}.item.appearance[data-v-d0bd9dde]{min-width:176px}.appearance-action[data-v-d0bd9dde]{margin-right:-2px}.social-links-list[data-v-d0bd9dde]{margin:-4px -8px}.VPNavBarHamburger[data-v-e5dd9c1c]{display:flex;justify-content:center;align-items:center;width:48px;height:var(--vp-nav-height)}@media (min-width: 768px){.VPNavBarHamburger[data-v-e5dd9c1c]{display:none}}.container[data-v-e5dd9c1c]{position:relative;width:16px;height:14px;overflow:hidden}.VPNavBarHamburger:hover .top[data-v-e5dd9c1c]{top:0;left:0;transform:translate(4px)}.VPNavBarHamburger:hover .middle[data-v-e5dd9c1c]{top:6px;left:0;transform:translate(0)}.VPNavBarHamburger:hover .bottom[data-v-e5dd9c1c]{top:12px;left:0;transform:translate(8px)}.VPNavBarHamburger.active .top[data-v-e5dd9c1c]{top:6px;transform:translate(0) rotate(225deg)}.VPNavBarHamburger.active .middle[data-v-e5dd9c1c]{top:6px;transform:translate(16px)}.VPNavBarHamburger.active .bottom[data-v-e5dd9c1c]{top:6px;transform:translate(0) rotate(135deg)}.VPNavBarHamburger.active:hover .top[data-v-e5dd9c1c],.VPNavBarHamburger.active:hover .middle[data-v-e5dd9c1c],.VPNavBarHamburger.active:hover .bottom[data-v-e5dd9c1c]{background-color:var(--vp-c-text-2);transition:top .25s,background-color .25s,transform .25s}.top[data-v-e5dd9c1c],.middle[data-v-e5dd9c1c],.bottom[data-v-e5dd9c1c]{position:absolute;width:16px;height:2px;background-color:var(--vp-c-text-1);transition:top .25s,background-color .5s,transform .25s}.top[data-v-e5dd9c1c]{top:0;left:0;transform:translate(0)}.middle[data-v-e5dd9c1c]{top:6px;left:0;transform:translate(8px)}.bottom[data-v-e5dd9c1c]{top:12px;left:0;transform:translate(4px)}.VPNavBarMenuLink[data-v-9c663999]{display:flex;align-items:center;padding:0 12px;line-height:var(--vp-nav-height);font-size:14px;font-weight:500;color:var(--vp-c-text-1);transition:color .25s}.VPNavBarMenuLink.active[data-v-9c663999],.VPNavBarMenuLink[data-v-9c663999]:hover{color:var(--vp-c-brand-1)}.VPNavBarMenu[data-v-7f418b0f]{display:none}@media (min-width: 768px){.VPNavBarMenu[data-v-7f418b0f]{display:flex}}/*! @docsearch/css 3.6.0 | MIT License | © Algolia, Inc. and contributors | https://docsearch.algolia.com */:root{--docsearch-primary-color:#5468ff;--docsearch-text-color:#1c1e21;--docsearch-spacing:12px;--docsearch-icon-stroke-width:1.4;--docsearch-highlight-color:var(--docsearch-primary-color);--docsearch-muted-color:#969faf;--docsearch-container-background:rgba(101,108,133,.8);--docsearch-logo-color:#5468ff;--docsearch-modal-width:560px;--docsearch-modal-height:600px;--docsearch-modal-background:#f5f6f7;--docsearch-modal-shadow:inset 1px 1px 0 0 hsla(0,0%,100%,.5),0 3px 8px 0 #555a64;--docsearch-searchbox-height:56px;--docsearch-searchbox-background:#ebedf0;--docsearch-searchbox-focus-background:#fff;--docsearch-searchbox-shadow:inset 0 0 0 2px var(--docsearch-primary-color);--docsearch-hit-height:56px;--docsearch-hit-color:#444950;--docsearch-hit-active-color:#fff;--docsearch-hit-background:#fff;--docsearch-hit-shadow:0 1px 3px 0 #d4d9e1;--docsearch-key-gradient:linear-gradient(-225deg,#d5dbe4,#f8f8f8);--docsearch-key-shadow:inset 0 -2px 0 0 #cdcde6,inset 0 0 1px 1px #fff,0 1px 2px 1px rgba(30,35,90,.4);--docsearch-key-pressed-shadow:inset 0 -2px 0 0 #cdcde6,inset 0 0 1px 1px #fff,0 1px 1px 0 rgba(30,35,90,.4);--docsearch-footer-height:44px;--docsearch-footer-background:#fff;--docsearch-footer-shadow:0 -1px 0 0 #e0e3e8,0 -3px 6px 0 rgba(69,98,155,.12)}html[data-theme=dark]{--docsearch-text-color:#f5f6f7;--docsearch-container-background:rgba(9,10,17,.8);--docsearch-modal-background:#15172a;--docsearch-modal-shadow:inset 1px 1px 0 0 #2c2e40,0 3px 8px 0 #000309;--docsearch-searchbox-background:#090a11;--docsearch-searchbox-focus-background:#000;--docsearch-hit-color:#bec3c9;--docsearch-hit-shadow:none;--docsearch-hit-background:#090a11;--docsearch-key-gradient:linear-gradient(-26.5deg,#565872,#31355b);--docsearch-key-shadow:inset 0 -2px 0 0 #282d55,inset 0 0 1px 1px #51577d,0 2px 2px 0 rgba(3,4,9,.3);--docsearch-key-pressed-shadow:inset 0 -2px 0 0 #282d55,inset 0 0 1px 1px #51577d,0 1px 1px 0 rgba(3,4,9,.30196078431372547);--docsearch-footer-background:#1e2136;--docsearch-footer-shadow:inset 0 1px 0 0 rgba(73,76,106,.5),0 -4px 8px 0 rgba(0,0,0,.2);--docsearch-logo-color:#fff;--docsearch-muted-color:#7f8497}.DocSearch-Button{align-items:center;background:var(--docsearch-searchbox-background);border:0;border-radius:40px;color:var(--docsearch-muted-color);cursor:pointer;display:flex;font-weight:500;height:36px;justify-content:space-between;margin:0 0 0 16px;padding:0 8px;-webkit-user-select:none;-moz-user-select:none;user-select:none}.DocSearch-Button:active,.DocSearch-Button:focus,.DocSearch-Button:hover{background:var(--docsearch-searchbox-focus-background);box-shadow:var(--docsearch-searchbox-shadow);color:var(--docsearch-text-color);outline:none}.DocSearch-Button-Container{align-items:center;display:flex}.DocSearch-Search-Icon{stroke-width:1.6}.DocSearch-Button .DocSearch-Search-Icon{color:var(--docsearch-text-color)}.DocSearch-Button-Placeholder{font-size:1rem;padding:0 12px 0 6px}.DocSearch-Button-Keys{display:flex;min-width:calc(40px + .8em)}.DocSearch-Button-Key{align-items:center;background:var(--docsearch-key-gradient);border-radius:3px;box-shadow:var(--docsearch-key-shadow);color:var(--docsearch-muted-color);display:flex;height:18px;justify-content:center;margin-right:.4em;position:relative;padding:0 0 2px;border:0;top:-1px;width:20px}.DocSearch-Button-Key--pressed{transform:translate3d(0,1px,0);box-shadow:var(--docsearch-key-pressed-shadow)}@media (max-width:768px){.DocSearch-Button-Keys,.DocSearch-Button-Placeholder{display:none}}.DocSearch--active{overflow:hidden!important}.DocSearch-Container,.DocSearch-Container *{box-sizing:border-box}.DocSearch-Container{background-color:var(--docsearch-container-background);height:100vh;left:0;position:fixed;top:0;width:100vw;z-index:200}.DocSearch-Container a{text-decoration:none}.DocSearch-Link{-webkit-appearance:none;-moz-appearance:none;appearance:none;background:none;border:0;color:var(--docsearch-highlight-color);cursor:pointer;font:inherit;margin:0;padding:0}.DocSearch-Modal{background:var(--docsearch-modal-background);border-radius:6px;box-shadow:var(--docsearch-modal-shadow);flex-direction:column;margin:60px auto auto;max-width:var(--docsearch-modal-width);position:relative}.DocSearch-SearchBar{display:flex;padding:var(--docsearch-spacing) var(--docsearch-spacing) 0}.DocSearch-Form{align-items:center;background:var(--docsearch-searchbox-focus-background);border-radius:4px;box-shadow:var(--docsearch-searchbox-shadow);display:flex;height:var(--docsearch-searchbox-height);margin:0;padding:0 var(--docsearch-spacing);position:relative;width:100%}.DocSearch-Input{-webkit-appearance:none;-moz-appearance:none;appearance:none;background:transparent;border:0;color:var(--docsearch-text-color);flex:1;font:inherit;font-size:1.2em;height:100%;outline:none;padding:0 0 0 8px;width:80%}.DocSearch-Input::-moz-placeholder{color:var(--docsearch-muted-color);opacity:1}.DocSearch-Input::placeholder{color:var(--docsearch-muted-color);opacity:1}.DocSearch-Input::-webkit-search-cancel-button,.DocSearch-Input::-webkit-search-decoration,.DocSearch-Input::-webkit-search-results-button,.DocSearch-Input::-webkit-search-results-decoration{display:none}.DocSearch-LoadingIndicator,.DocSearch-MagnifierLabel,.DocSearch-Reset{margin:0;padding:0}.DocSearch-MagnifierLabel,.DocSearch-Reset{align-items:center;color:var(--docsearch-highlight-color);display:flex;justify-content:center}.DocSearch-Container--Stalled .DocSearch-MagnifierLabel,.DocSearch-LoadingIndicator{display:none}.DocSearch-Container--Stalled .DocSearch-LoadingIndicator{align-items:center;color:var(--docsearch-highlight-color);display:flex;justify-content:center}@media screen and (prefers-reduced-motion:reduce){.DocSearch-Reset{animation:none;-webkit-appearance:none;-moz-appearance:none;appearance:none;background:none;border:0;border-radius:50%;color:var(--docsearch-icon-color);cursor:pointer;right:0;stroke-width:var(--docsearch-icon-stroke-width)}}.DocSearch-Reset{animation:fade-in .1s ease-in forwards;-webkit-appearance:none;-moz-appearance:none;appearance:none;background:none;border:0;border-radius:50%;color:var(--docsearch-icon-color);cursor:pointer;padding:2px;right:0;stroke-width:var(--docsearch-icon-stroke-width)}.DocSearch-Reset[hidden]{display:none}.DocSearch-Reset:hover{color:var(--docsearch-highlight-color)}.DocSearch-LoadingIndicator svg,.DocSearch-MagnifierLabel svg{height:24px;width:24px}.DocSearch-Cancel{display:none}.DocSearch-Dropdown{max-height:calc(var(--docsearch-modal-height) - var(--docsearch-searchbox-height) - var(--docsearch-spacing) - var(--docsearch-footer-height));min-height:var(--docsearch-spacing);overflow-y:auto;overflow-y:overlay;padding:0 var(--docsearch-spacing);scrollbar-color:var(--docsearch-muted-color) var(--docsearch-modal-background);scrollbar-width:thin}.DocSearch-Dropdown::-webkit-scrollbar{width:12px}.DocSearch-Dropdown::-webkit-scrollbar-track{background:transparent}.DocSearch-Dropdown::-webkit-scrollbar-thumb{background-color:var(--docsearch-muted-color);border:3px solid var(--docsearch-modal-background);border-radius:20px}.DocSearch-Dropdown ul{list-style:none;margin:0;padding:0}.DocSearch-Label{font-size:.75em;line-height:1.6em}.DocSearch-Help,.DocSearch-Label{color:var(--docsearch-muted-color)}.DocSearch-Help{font-size:.9em;margin:0;-webkit-user-select:none;-moz-user-select:none;user-select:none}.DocSearch-Title{font-size:1.2em}.DocSearch-Logo a{display:flex}.DocSearch-Logo svg{color:var(--docsearch-logo-color);margin-left:8px}.DocSearch-Hits:last-of-type{margin-bottom:24px}.DocSearch-Hits mark{background:none;color:var(--docsearch-highlight-color)}.DocSearch-HitsFooter{color:var(--docsearch-muted-color);display:flex;font-size:.85em;justify-content:center;margin-bottom:var(--docsearch-spacing);padding:var(--docsearch-spacing)}.DocSearch-HitsFooter a{border-bottom:1px solid;color:inherit}.DocSearch-Hit{border-radius:4px;display:flex;padding-bottom:4px;position:relative}@media screen and (prefers-reduced-motion:reduce){.DocSearch-Hit--deleting{transition:none}}.DocSearch-Hit--deleting{opacity:0;transition:all .25s linear}@media screen and (prefers-reduced-motion:reduce){.DocSearch-Hit--favoriting{transition:none}}.DocSearch-Hit--favoriting{transform:scale(0);transform-origin:top center;transition:all .25s linear;transition-delay:.25s}.DocSearch-Hit a{background:var(--docsearch-hit-background);border-radius:4px;box-shadow:var(--docsearch-hit-shadow);display:block;padding-left:var(--docsearch-spacing);width:100%}.DocSearch-Hit-source{background:var(--docsearch-modal-background);color:var(--docsearch-highlight-color);font-size:.85em;font-weight:600;line-height:32px;margin:0 -4px;padding:8px 4px 0;position:sticky;top:0;z-index:10}.DocSearch-Hit-Tree{color:var(--docsearch-muted-color);height:var(--docsearch-hit-height);opacity:.5;stroke-width:var(--docsearch-icon-stroke-width);width:24px}.DocSearch-Hit[aria-selected=true] a{background-color:var(--docsearch-highlight-color)}.DocSearch-Hit[aria-selected=true] mark{text-decoration:underline}.DocSearch-Hit-Container{align-items:center;color:var(--docsearch-hit-color);display:flex;flex-direction:row;height:var(--docsearch-hit-height);padding:0 var(--docsearch-spacing) 0 0}.DocSearch-Hit-icon{height:20px;width:20px}.DocSearch-Hit-action,.DocSearch-Hit-icon{color:var(--docsearch-muted-color);stroke-width:var(--docsearch-icon-stroke-width)}.DocSearch-Hit-action{align-items:center;display:flex;height:22px;width:22px}.DocSearch-Hit-action svg{display:block;height:18px;width:18px}.DocSearch-Hit-action+.DocSearch-Hit-action{margin-left:6px}.DocSearch-Hit-action-button{-webkit-appearance:none;-moz-appearance:none;appearance:none;background:none;border:0;border-radius:50%;color:inherit;cursor:pointer;padding:2px}svg.DocSearch-Hit-Select-Icon{display:none}.DocSearch-Hit[aria-selected=true] .DocSearch-Hit-Select-Icon{display:block}.DocSearch-Hit-action-button:focus,.DocSearch-Hit-action-button:hover{background:#0003;transition:background-color .1s ease-in}@media screen and (prefers-reduced-motion:reduce){.DocSearch-Hit-action-button:focus,.DocSearch-Hit-action-button:hover{transition:none}}.DocSearch-Hit-action-button:focus path,.DocSearch-Hit-action-button:hover path{fill:#fff}.DocSearch-Hit-content-wrapper{display:flex;flex:1 1 auto;flex-direction:column;font-weight:500;justify-content:center;line-height:1.2em;margin:0 8px;overflow-x:hidden;position:relative;text-overflow:ellipsis;white-space:nowrap;width:80%}.DocSearch-Hit-title{font-size:.9em}.DocSearch-Hit-path{color:var(--docsearch-muted-color);font-size:.75em}.DocSearch-Hit[aria-selected=true] .DocSearch-Hit-action,.DocSearch-Hit[aria-selected=true] .DocSearch-Hit-icon,.DocSearch-Hit[aria-selected=true] .DocSearch-Hit-path,.DocSearch-Hit[aria-selected=true] .DocSearch-Hit-text,.DocSearch-Hit[aria-selected=true] .DocSearch-Hit-title,.DocSearch-Hit[aria-selected=true] .DocSearch-Hit-Tree,.DocSearch-Hit[aria-selected=true] mark{color:var(--docsearch-hit-active-color)!important}@media screen and (prefers-reduced-motion:reduce){.DocSearch-Hit-action-button:focus,.DocSearch-Hit-action-button:hover{background:#0003;transition:none}}.DocSearch-ErrorScreen,.DocSearch-NoResults,.DocSearch-StartScreen{font-size:.9em;margin:0 auto;padding:36px 0;text-align:center;width:80%}.DocSearch-Screen-Icon{color:var(--docsearch-muted-color);padding-bottom:12px}.DocSearch-NoResults-Prefill-List{display:inline-block;padding-bottom:24px;text-align:left}.DocSearch-NoResults-Prefill-List ul{display:inline-block;padding:8px 0 0}.DocSearch-NoResults-Prefill-List li{list-style-position:inside;list-style-type:"» "}.DocSearch-Prefill{-webkit-appearance:none;-moz-appearance:none;appearance:none;background:none;border:0;border-radius:1em;color:var(--docsearch-highlight-color);cursor:pointer;display:inline-block;font-size:1em;font-weight:700;padding:0}.DocSearch-Prefill:focus,.DocSearch-Prefill:hover{outline:none;text-decoration:underline}.DocSearch-Footer{align-items:center;background:var(--docsearch-footer-background);border-radius:0 0 8px 8px;box-shadow:var(--docsearch-footer-shadow);display:flex;flex-direction:row-reverse;flex-shrink:0;height:var(--docsearch-footer-height);justify-content:space-between;padding:0 var(--docsearch-spacing);position:relative;-webkit-user-select:none;-moz-user-select:none;user-select:none;width:100%;z-index:300}.DocSearch-Commands{color:var(--docsearch-muted-color);display:flex;list-style:none;margin:0;padding:0}.DocSearch-Commands li{align-items:center;display:flex}.DocSearch-Commands li:not(:last-of-type){margin-right:.8em}.DocSearch-Commands-Key{align-items:center;background:var(--docsearch-key-gradient);border-radius:2px;box-shadow:var(--docsearch-key-shadow);display:flex;height:18px;justify-content:center;margin-right:.4em;padding:0 0 1px;color:var(--docsearch-muted-color);border:0;width:20px}.DocSearch-VisuallyHiddenForAccessibility{clip:rect(0 0 0 0);-webkit-clip-path:inset(50%);clip-path:inset(50%);height:1px;overflow:hidden;position:absolute;white-space:nowrap;width:1px}@media (max-width:768px){:root{--docsearch-spacing:10px;--docsearch-footer-height:40px}.DocSearch-Dropdown{height:100%}.DocSearch-Container{height:100vh;height:-webkit-fill-available;height:calc(var(--docsearch-vh, 1vh)*100);position:absolute}.DocSearch-Footer{border-radius:0;bottom:0;position:absolute}.DocSearch-Hit-content-wrapper{display:flex;position:relative;width:80%}.DocSearch-Modal{border-radius:0;box-shadow:none;height:100vh;height:-webkit-fill-available;height:calc(var(--docsearch-vh, 1vh)*100);margin:0;max-width:100%;width:100%}.DocSearch-Dropdown{max-height:calc(var(--docsearch-vh, 1vh)*100 - var(--docsearch-searchbox-height) - var(--docsearch-spacing) - var(--docsearch-footer-height))}.DocSearch-Cancel{-webkit-appearance:none;-moz-appearance:none;appearance:none;background:none;border:0;color:var(--docsearch-highlight-color);cursor:pointer;display:inline-block;flex:none;font:inherit;font-size:1em;font-weight:500;margin-left:var(--docsearch-spacing);outline:none;overflow:hidden;padding:0;-webkit-user-select:none;-moz-user-select:none;user-select:none;white-space:nowrap}.DocSearch-Commands,.DocSearch-Hit-Tree{display:none}}@keyframes fade-in{0%{opacity:0}to{opacity:1}}[class*=DocSearch]{--docsearch-primary-color: var(--vp-c-brand-1);--docsearch-highlight-color: var(--docsearch-primary-color);--docsearch-text-color: var(--vp-c-text-1);--docsearch-muted-color: var(--vp-c-text-2);--docsearch-searchbox-shadow: none;--docsearch-searchbox-background: transparent;--docsearch-searchbox-focus-background: transparent;--docsearch-key-gradient: transparent;--docsearch-key-shadow: none;--docsearch-modal-background: var(--vp-c-bg-soft);--docsearch-footer-background: var(--vp-c-bg)}.dark [class*=DocSearch]{--docsearch-modal-shadow: none;--docsearch-footer-shadow: none;--docsearch-logo-color: var(--vp-c-text-2);--docsearch-hit-background: var(--vp-c-default-soft);--docsearch-hit-color: var(--vp-c-text-2);--docsearch-hit-shadow: none}.DocSearch-Button{display:flex;justify-content:center;align-items:center;margin:0;padding:0;width:48px;height:55px;background:transparent;transition:border-color .25s}.DocSearch-Button:hover{background:transparent}.DocSearch-Button:focus{outline:1px dotted;outline:5px auto -webkit-focus-ring-color}.DocSearch-Button-Key--pressed{transform:none;box-shadow:none}.DocSearch-Button:focus:not(:focus-visible){outline:none!important}@media (min-width: 768px){.DocSearch-Button{justify-content:flex-start;border:1px solid transparent;border-radius:8px;padding:0 10px 0 12px;width:100%;height:40px;background-color:var(--vp-c-bg-alt)}.DocSearch-Button:hover{border-color:var(--vp-c-brand-1);background:var(--vp-c-bg-alt)}}.DocSearch-Button .DocSearch-Button-Container{display:flex;align-items:center}.DocSearch-Button .DocSearch-Search-Icon{position:relative;width:16px;height:16px;color:var(--vp-c-text-1);fill:currentColor;transition:color .5s}.DocSearch-Button:hover .DocSearch-Search-Icon{color:var(--vp-c-text-1)}@media (min-width: 768px){.DocSearch-Button .DocSearch-Search-Icon{top:1px;margin-right:8px;width:14px;height:14px;color:var(--vp-c-text-2)}}.DocSearch-Button .DocSearch-Button-Placeholder{display:none;margin-top:2px;padding:0 16px 0 0;font-size:13px;font-weight:500;color:var(--vp-c-text-2);transition:color .5s}.DocSearch-Button:hover .DocSearch-Button-Placeholder{color:var(--vp-c-text-1)}@media (min-width: 768px){.DocSearch-Button .DocSearch-Button-Placeholder{display:inline-block}}.DocSearch-Button .DocSearch-Button-Keys{direction:ltr;display:none;min-width:auto}@media (min-width: 768px){.DocSearch-Button .DocSearch-Button-Keys{display:flex;align-items:center}}.DocSearch-Button .DocSearch-Button-Key{display:block;margin:2px 0 0;border:1px solid var(--vp-c-divider);border-right:none;border-radius:4px 0 0 4px;padding-left:6px;min-width:0;width:auto;height:22px;line-height:22px;font-family:var(--vp-font-family-base);font-size:12px;font-weight:500;transition:color .5s,border-color .5s}.DocSearch-Button .DocSearch-Button-Key+.DocSearch-Button-Key{border-right:1px solid var(--vp-c-divider);border-left:none;border-radius:0 4px 4px 0;padding-left:2px;padding-right:6px}.DocSearch-Button .DocSearch-Button-Key:first-child{font-size:0!important}.DocSearch-Button .DocSearch-Button-Key:first-child:after{content:"Ctrl";font-size:12px;letter-spacing:normal;color:var(--docsearch-muted-color)}.mac .DocSearch-Button .DocSearch-Button-Key:first-child:after{content:"⌘"}.DocSearch-Button .DocSearch-Button-Key:first-child>*{display:none}.DocSearch-Search-Icon{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' stroke-width='1.6' viewBox='0 0 20 20'%3E%3Cpath fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' d='m14.386 14.386 4.088 4.088-4.088-4.088A7.533 7.533 0 1 1 3.733 3.733a7.533 7.533 0 0 1 10.653 10.653z'/%3E%3C/svg%3E")}.VPNavBarSearch{display:flex;align-items:center}@media (min-width: 768px){.VPNavBarSearch{flex-grow:1;padding-left:24px}}@media (min-width: 960px){.VPNavBarSearch{padding-left:32px}}.dark .DocSearch-Footer{border-top:1px solid var(--vp-c-divider)}.DocSearch-Form{border:1px solid var(--vp-c-brand-1);background-color:var(--vp-c-white)}.dark .DocSearch-Form{background-color:var(--vp-c-default-soft)}.DocSearch-Screen-Icon>svg{margin:auto}.VPNavBarSocialLinks[data-v-0394ad82]{display:none}@media (min-width: 1280px){.VPNavBarSocialLinks[data-v-0394ad82]{display:flex;align-items:center}}.title[data-v-ab179fa1]{display:flex;align-items:center;border-bottom:1px solid transparent;width:100%;height:var(--vp-nav-height);font-size:16px;font-weight:600;color:var(--vp-c-text-1);transition:opacity .25s}@media (min-width: 960px){.title[data-v-ab179fa1]{flex-shrink:0}.VPNavBarTitle.has-sidebar .title[data-v-ab179fa1]{border-bottom-color:var(--vp-c-divider)}}[data-v-ab179fa1] .logo{margin-right:8px;height:var(--vp-nav-logo-height)}.VPNavBarTranslations[data-v-88af2de4]{display:none}@media (min-width: 1280px){.VPNavBarTranslations[data-v-88af2de4]{display:flex;align-items:center}}.title[data-v-88af2de4]{padding:0 24px 0 12px;line-height:32px;font-size:14px;font-weight:700;color:var(--vp-c-text-1)}.VPNavBar[data-v-ccf7ddec]{position:relative;height:var(--vp-nav-height);pointer-events:none;white-space:nowrap;transition:background-color .5s}.VPNavBar[data-v-ccf7ddec]:not(.home){background-color:var(--vp-nav-bg-color)}@media (min-width: 960px){.VPNavBar[data-v-ccf7ddec]:not(.home){background-color:transparent}.VPNavBar[data-v-ccf7ddec]:not(.has-sidebar):not(.home.top){background-color:var(--vp-nav-bg-color)}}.wrapper[data-v-ccf7ddec]{padding:0 8px 0 24px}@media (min-width: 768px){.wrapper[data-v-ccf7ddec]{padding:0 32px}}@media (min-width: 960px){.VPNavBar.has-sidebar .wrapper[data-v-ccf7ddec]{padding:0}}.container[data-v-ccf7ddec]{display:flex;justify-content:space-between;margin:0 auto;max-width:calc(var(--vp-layout-max-width) - 64px);height:var(--vp-nav-height);pointer-events:none}.container>.title[data-v-ccf7ddec],.container>.content[data-v-ccf7ddec]{pointer-events:none}.container[data-v-ccf7ddec] *{pointer-events:auto}@media (min-width: 960px){.VPNavBar.has-sidebar .container[data-v-ccf7ddec]{max-width:100%}}.title[data-v-ccf7ddec]{flex-shrink:0;height:calc(var(--vp-nav-height) - 1px);transition:background-color .5s}@media (min-width: 960px){.VPNavBar.has-sidebar .title[data-v-ccf7ddec]{position:absolute;top:0;left:0;z-index:2;padding:0 32px;width:var(--vp-sidebar-width);height:var(--vp-nav-height);background-color:transparent}}@media (min-width: 1440px){.VPNavBar.has-sidebar .title[data-v-ccf7ddec]{padding-left:max(32px,calc((100% - (var(--vp-layout-max-width) - 64px)) / 2));width:calc((100% - (var(--vp-layout-max-width) - 64px)) / 2 + var(--vp-sidebar-width) - 32px)}}.content[data-v-ccf7ddec]{flex-grow:1}@media (min-width: 960px){.VPNavBar.has-sidebar .content[data-v-ccf7ddec]{position:relative;z-index:1;padding-right:32px;padding-left:var(--vp-sidebar-width)}}@media (min-width: 1440px){.VPNavBar.has-sidebar .content[data-v-ccf7ddec]{padding-right:calc((100vw - var(--vp-layout-max-width)) / 2 + 32px);padding-left:calc((100vw - var(--vp-layout-max-width)) / 2 + var(--vp-sidebar-width))}}.content-body[data-v-ccf7ddec]{display:flex;justify-content:flex-end;align-items:center;height:var(--vp-nav-height);transition:background-color .5s}@media (min-width: 960px){.VPNavBar:not(.home.top) .content-body[data-v-ccf7ddec]{position:relative;background-color:var(--vp-nav-bg-color)}.VPNavBar:not(.has-sidebar):not(.home.top) .content-body[data-v-ccf7ddec]{background-color:transparent}}@media (max-width: 767px){.content-body[data-v-ccf7ddec]{-moz-column-gap:.5rem;column-gap:.5rem}}.menu+.translations[data-v-ccf7ddec]:before,.menu+.appearance[data-v-ccf7ddec]:before,.menu+.social-links[data-v-ccf7ddec]:before,.translations+.appearance[data-v-ccf7ddec]:before,.appearance+.social-links[data-v-ccf7ddec]:before{margin-right:8px;margin-left:8px;width:1px;height:24px;background-color:var(--vp-c-divider);content:""}.menu+.appearance[data-v-ccf7ddec]:before,.translations+.appearance[data-v-ccf7ddec]:before{margin-right:16px}.appearance+.social-links[data-v-ccf7ddec]:before{margin-left:16px}.social-links[data-v-ccf7ddec]{margin-right:-8px}.divider[data-v-ccf7ddec]{width:100%;height:1px}@media (min-width: 960px){.VPNavBar.has-sidebar .divider[data-v-ccf7ddec]{padding-left:var(--vp-sidebar-width)}}@media (min-width: 1440px){.VPNavBar.has-sidebar .divider[data-v-ccf7ddec]{padding-left:calc((100vw - var(--vp-layout-max-width)) / 2 + var(--vp-sidebar-width))}}.divider-line[data-v-ccf7ddec]{width:100%;height:1px;transition:background-color .5s}.VPNavBar:not(.home) .divider-line[data-v-ccf7ddec]{background-color:var(--vp-c-gutter)}@media (min-width: 960px){.VPNavBar:not(.home.top) .divider-line[data-v-ccf7ddec]{background-color:var(--vp-c-gutter)}.VPNavBar:not(.has-sidebar):not(.home.top) .divider[data-v-ccf7ddec]{background-color:var(--vp-c-gutter)}}.VPNavScreenAppearance[data-v-2d7af913]{display:flex;justify-content:space-between;align-items:center;border-radius:8px;padding:12px 14px 12px 16px;background-color:var(--vp-c-bg-soft)}.text[data-v-2d7af913]{line-height:24px;font-size:12px;font-weight:500;color:var(--vp-c-text-2)}.VPNavScreenMenuLink[data-v-7f31e1f6]{display:block;border-bottom:1px solid var(--vp-c-divider);padding:12px 0 11px;line-height:24px;font-size:14px;font-weight:500;color:var(--vp-c-text-1);transition:border-color .25s,color .25s}.VPNavScreenMenuLink[data-v-7f31e1f6]:hover{color:var(--vp-c-brand-1)}.VPNavScreenMenuGroupLink[data-v-19976ae1]{display:block;margin-left:12px;line-height:32px;font-size:14px;font-weight:400;color:var(--vp-c-text-1);transition:color .25s}.VPNavScreenMenuGroupLink[data-v-19976ae1]:hover{color:var(--vp-c-brand-1)}.VPNavScreenMenuGroupSection[data-v-8133b170]{display:block}.title[data-v-8133b170]{line-height:32px;font-size:13px;font-weight:700;color:var(--vp-c-text-2);transition:color .25s}.VPNavScreenMenuGroup[data-v-ff6087d4]{border-bottom:1px solid var(--vp-c-divider);height:48px;overflow:hidden;transition:border-color .5s}.VPNavScreenMenuGroup .items[data-v-ff6087d4]{visibility:hidden}.VPNavScreenMenuGroup.open .items[data-v-ff6087d4]{visibility:visible}.VPNavScreenMenuGroup.open[data-v-ff6087d4]{padding-bottom:10px;height:auto}.VPNavScreenMenuGroup.open .button[data-v-ff6087d4]{padding-bottom:6px;color:var(--vp-c-brand-1)}.VPNavScreenMenuGroup.open .button-icon[data-v-ff6087d4]{transform:rotate(45deg)}.button[data-v-ff6087d4]{display:flex;justify-content:space-between;align-items:center;padding:12px 4px 11px 0;width:100%;line-height:24px;font-size:14px;font-weight:500;color:var(--vp-c-text-1);transition:color .25s}.button[data-v-ff6087d4]:hover{color:var(--vp-c-brand-1)}.button-icon[data-v-ff6087d4]{transition:transform .25s}.group[data-v-ff6087d4]:first-child{padding-top:0}.group+.group[data-v-ff6087d4],.group+.item[data-v-ff6087d4]{padding-top:4px}.VPNavScreenTranslations[data-v-858fe1a4]{height:24px;overflow:hidden}.VPNavScreenTranslations.open[data-v-858fe1a4]{height:auto}.title[data-v-858fe1a4]{display:flex;align-items:center;font-size:14px;font-weight:500;color:var(--vp-c-text-1)}.icon[data-v-858fe1a4]{font-size:16px}.icon.lang[data-v-858fe1a4]{margin-right:8px}.icon.chevron[data-v-858fe1a4]{margin-left:4px}.list[data-v-858fe1a4]{padding:4px 0 0 24px}.link[data-v-858fe1a4]{line-height:32px;font-size:13px;color:var(--vp-c-text-1)}.VPNavScreen[data-v-cc5739dd]{position:fixed;top:calc(var(--vp-nav-height) + var(--vp-layout-top-height, 0px) + 1px);right:0;bottom:0;left:0;padding:0 32px;width:100%;background-color:var(--vp-nav-screen-bg-color);overflow-y:auto;transition:background-color .5s;pointer-events:auto}.VPNavScreen.fade-enter-active[data-v-cc5739dd],.VPNavScreen.fade-leave-active[data-v-cc5739dd]{transition:opacity .25s}.VPNavScreen.fade-enter-active .container[data-v-cc5739dd],.VPNavScreen.fade-leave-active .container[data-v-cc5739dd]{transition:transform .25s ease}.VPNavScreen.fade-enter-from[data-v-cc5739dd],.VPNavScreen.fade-leave-to[data-v-cc5739dd]{opacity:0}.VPNavScreen.fade-enter-from .container[data-v-cc5739dd],.VPNavScreen.fade-leave-to .container[data-v-cc5739dd]{transform:translateY(-8px)}@media (min-width: 768px){.VPNavScreen[data-v-cc5739dd]{display:none}}.container[data-v-cc5739dd]{margin:0 auto;padding:24px 0 96px;max-width:288px}.menu+.translations[data-v-cc5739dd],.menu+.appearance[data-v-cc5739dd],.translations+.appearance[data-v-cc5739dd]{margin-top:24px}.menu+.social-links[data-v-cc5739dd]{margin-top:16px}.appearance+.social-links[data-v-cc5739dd]{margin-top:16px}.VPNav[data-v-ae24b3ad]{position:relative;top:var(--vp-layout-top-height, 0px);left:0;z-index:var(--vp-z-index-nav);width:100%;pointer-events:none;transition:background-color .5s}@media (min-width: 960px){.VPNav[data-v-ae24b3ad]{position:fixed}}.VPSidebarItem.level-0[data-v-b8d55f3b]{padding-bottom:24px}.VPSidebarItem.collapsed.level-0[data-v-b8d55f3b]{padding-bottom:10px}.item[data-v-b8d55f3b]{position:relative;display:flex;width:100%}.VPSidebarItem.collapsible>.item[data-v-b8d55f3b]{cursor:pointer}.indicator[data-v-b8d55f3b]{position:absolute;top:6px;bottom:6px;left:-17px;width:2px;border-radius:2px;transition:background-color .25s}.VPSidebarItem.level-2.is-active>.item>.indicator[data-v-b8d55f3b],.VPSidebarItem.level-3.is-active>.item>.indicator[data-v-b8d55f3b],.VPSidebarItem.level-4.is-active>.item>.indicator[data-v-b8d55f3b],.VPSidebarItem.level-5.is-active>.item>.indicator[data-v-b8d55f3b]{background-color:var(--vp-c-brand-1)}.link[data-v-b8d55f3b]{display:flex;align-items:center;flex-grow:1}.text[data-v-b8d55f3b]{flex-grow:1;padding:4px 0;line-height:24px;font-size:14px;transition:color .25s}.VPSidebarItem.level-0 .text[data-v-b8d55f3b]{font-weight:700;color:var(--vp-c-text-1)}.VPSidebarItem.level-1 .text[data-v-b8d55f3b],.VPSidebarItem.level-2 .text[data-v-b8d55f3b],.VPSidebarItem.level-3 .text[data-v-b8d55f3b],.VPSidebarItem.level-4 .text[data-v-b8d55f3b],.VPSidebarItem.level-5 .text[data-v-b8d55f3b]{font-weight:500;color:var(--vp-c-text-2)}.VPSidebarItem.level-0.is-link>.item>.link:hover .text[data-v-b8d55f3b],.VPSidebarItem.level-1.is-link>.item>.link:hover .text[data-v-b8d55f3b],.VPSidebarItem.level-2.is-link>.item>.link:hover .text[data-v-b8d55f3b],.VPSidebarItem.level-3.is-link>.item>.link:hover .text[data-v-b8d55f3b],.VPSidebarItem.level-4.is-link>.item>.link:hover .text[data-v-b8d55f3b],.VPSidebarItem.level-5.is-link>.item>.link:hover .text[data-v-b8d55f3b]{color:var(--vp-c-brand-1)}.VPSidebarItem.level-0.has-active>.item>.text[data-v-b8d55f3b],.VPSidebarItem.level-1.has-active>.item>.text[data-v-b8d55f3b],.VPSidebarItem.level-2.has-active>.item>.text[data-v-b8d55f3b],.VPSidebarItem.level-3.has-active>.item>.text[data-v-b8d55f3b],.VPSidebarItem.level-4.has-active>.item>.text[data-v-b8d55f3b],.VPSidebarItem.level-5.has-active>.item>.text[data-v-b8d55f3b],.VPSidebarItem.level-0.has-active>.item>.link>.text[data-v-b8d55f3b],.VPSidebarItem.level-1.has-active>.item>.link>.text[data-v-b8d55f3b],.VPSidebarItem.level-2.has-active>.item>.link>.text[data-v-b8d55f3b],.VPSidebarItem.level-3.has-active>.item>.link>.text[data-v-b8d55f3b],.VPSidebarItem.level-4.has-active>.item>.link>.text[data-v-b8d55f3b],.VPSidebarItem.level-5.has-active>.item>.link>.text[data-v-b8d55f3b]{color:var(--vp-c-text-1)}.VPSidebarItem.level-0.is-active>.item .link>.text[data-v-b8d55f3b],.VPSidebarItem.level-1.is-active>.item .link>.text[data-v-b8d55f3b],.VPSidebarItem.level-2.is-active>.item .link>.text[data-v-b8d55f3b],.VPSidebarItem.level-3.is-active>.item .link>.text[data-v-b8d55f3b],.VPSidebarItem.level-4.is-active>.item .link>.text[data-v-b8d55f3b],.VPSidebarItem.level-5.is-active>.item .link>.text[data-v-b8d55f3b]{color:var(--vp-c-brand-1)}.caret[data-v-b8d55f3b]{display:flex;justify-content:center;align-items:center;margin-right:-7px;width:32px;height:32px;color:var(--vp-c-text-3);cursor:pointer;transition:color .25s;flex-shrink:0}.item:hover .caret[data-v-b8d55f3b]{color:var(--vp-c-text-2)}.item:hover .caret[data-v-b8d55f3b]:hover{color:var(--vp-c-text-1)}.caret-icon[data-v-b8d55f3b]{font-size:18px;transform:rotate(90deg);transition:transform .25s}.VPSidebarItem.collapsed .caret-icon[data-v-b8d55f3b]{transform:rotate(0)}.VPSidebarItem.level-1 .items[data-v-b8d55f3b],.VPSidebarItem.level-2 .items[data-v-b8d55f3b],.VPSidebarItem.level-3 .items[data-v-b8d55f3b],.VPSidebarItem.level-4 .items[data-v-b8d55f3b],.VPSidebarItem.level-5 .items[data-v-b8d55f3b]{border-left:1px solid var(--vp-c-divider);padding-left:16px}.VPSidebarItem.collapsed .items[data-v-b8d55f3b]{display:none}.VPSidebar[data-v-575e6a36]{position:fixed;top:var(--vp-layout-top-height, 0px);bottom:0;left:0;z-index:var(--vp-z-index-sidebar);padding:32px 32px 96px;width:calc(100vw - 64px);max-width:320px;background-color:var(--vp-sidebar-bg-color);opacity:0;box-shadow:var(--vp-c-shadow-3);overflow-x:hidden;overflow-y:auto;transform:translate(-100%);transition:opacity .5s,transform .25s ease;overscroll-behavior:contain}.VPSidebar.open[data-v-575e6a36]{opacity:1;visibility:visible;transform:translate(0);transition:opacity .25s,transform .5s cubic-bezier(.19,1,.22,1)}.dark .VPSidebar[data-v-575e6a36]{box-shadow:var(--vp-shadow-1)}@media (min-width: 960px){.VPSidebar[data-v-575e6a36]{padding-top:var(--vp-nav-height);width:var(--vp-sidebar-width);max-width:100%;background-color:var(--vp-sidebar-bg-color);opacity:1;visibility:visible;box-shadow:none;transform:translate(0)}}@media (min-width: 1440px){.VPSidebar[data-v-575e6a36]{padding-left:max(32px,calc((100% - (var(--vp-layout-max-width) - 64px)) / 2));width:calc((100% - (var(--vp-layout-max-width) - 64px)) / 2 + var(--vp-sidebar-width) - 32px)}}@media (min-width: 960px){.curtain[data-v-575e6a36]{position:sticky;top:-64px;left:0;z-index:1;margin-top:calc(var(--vp-nav-height) * -1);margin-right:-32px;margin-left:-32px;height:var(--vp-nav-height);background-color:var(--vp-sidebar-bg-color)}}.nav[data-v-575e6a36]{outline:0}.group+.group[data-v-575e6a36]{border-top:1px solid var(--vp-c-divider);padding-top:10px}@media (min-width: 960px){.group[data-v-575e6a36]{padding-top:10px;width:calc(var(--vp-sidebar-width) - 64px)}}.VPSkipLink[data-v-0f60ec36]{top:8px;left:8px;padding:8px 16px;z-index:999;border-radius:8px;font-size:12px;font-weight:700;text-decoration:none;color:var(--vp-c-brand-1);box-shadow:var(--vp-shadow-3);background-color:var(--vp-c-bg)}.VPSkipLink[data-v-0f60ec36]:focus{height:auto;width:auto;clip:auto;-webkit-clip-path:none;clip-path:none}@media (min-width: 1280px){.VPSkipLink[data-v-0f60ec36]{top:14px;left:16px}}.Layout[data-v-5d98c3a5]{display:flex;flex-direction:column;min-height:100vh}.VPHomeSponsors[data-v-3d121b4a]{border-top:1px solid var(--vp-c-gutter);padding-top:88px!important;margin:96px 0}@media (min-width: 768px){.VPHomeSponsors[data-v-3d121b4a]{margin:128px 0}}.VPHomeSponsors[data-v-3d121b4a]{padding:0 24px}@media (min-width: 768px){.VPHomeSponsors[data-v-3d121b4a]{padding:0 48px}}@media (min-width: 960px){.VPHomeSponsors[data-v-3d121b4a]{padding:0 64px}}.container[data-v-3d121b4a]{margin:0 auto;max-width:1152px}.love[data-v-3d121b4a]{margin:0 auto;width:-moz-fit-content;width:fit-content;font-size:28px;color:var(--vp-c-text-3)}.icon[data-v-3d121b4a]{display:inline-block}.message[data-v-3d121b4a]{margin:0 auto;padding-top:10px;max-width:320px;text-align:center;line-height:24px;font-size:16px;font-weight:500;color:var(--vp-c-text-2)}.sponsors[data-v-3d121b4a]{padding-top:32px}.action[data-v-3d121b4a]{padding-top:40px;text-align:center}.VPTeamPage[data-v-7c57f839]{margin:96px 0}@media (min-width: 768px){.VPTeamPage[data-v-7c57f839]{margin:128px 0}}.VPHome .VPTeamPageTitle[data-v-7c57f839-s]{border-top:1px solid var(--vp-c-gutter);padding-top:88px!important}.VPTeamPageSection+.VPTeamPageSection[data-v-7c57f839-s],.VPTeamMembers+.VPTeamPageSection[data-v-7c57f839-s]{margin-top:64px}.VPTeamMembers+.VPTeamMembers[data-v-7c57f839-s]{margin-top:24px}@media (min-width: 768px){.VPTeamPageTitle+.VPTeamPageSection[data-v-7c57f839-s]{margin-top:16px}.VPTeamPageSection+.VPTeamPageSection[data-v-7c57f839-s],.VPTeamMembers+.VPTeamPageSection[data-v-7c57f839-s]{margin-top:96px}}.VPTeamMembers[data-v-7c57f839-s]{padding:0 24px}@media (min-width: 768px){.VPTeamMembers[data-v-7c57f839-s]{padding:0 48px}}@media (min-width: 960px){.VPTeamMembers[data-v-7c57f839-s]{padding:0 64px}}.VPTeamPageTitle[data-v-bf2cbdac]{padding:48px 32px;text-align:center}@media (min-width: 768px){.VPTeamPageTitle[data-v-bf2cbdac]{padding:64px 48px 48px}}@media (min-width: 960px){.VPTeamPageTitle[data-v-bf2cbdac]{padding:80px 64px 48px}}.title[data-v-bf2cbdac]{letter-spacing:0;line-height:44px;font-size:36px;font-weight:500}@media (min-width: 768px){.title[data-v-bf2cbdac]{letter-spacing:-.5px;line-height:56px;font-size:48px}}.lead[data-v-bf2cbdac]{margin:0 auto;max-width:512px;padding-top:12px;line-height:24px;font-size:16px;font-weight:500;color:var(--vp-c-text-2)}@media (min-width: 768px){.lead[data-v-bf2cbdac]{max-width:592px;letter-spacing:.15px;line-height:28px;font-size:20px}}.VPTeamPageSection[data-v-b1a88750]{padding:0 32px}@media (min-width: 768px){.VPTeamPageSection[data-v-b1a88750]{padding:0 48px}}@media (min-width: 960px){.VPTeamPageSection[data-v-b1a88750]{padding:0 64px}}.title[data-v-b1a88750]{position:relative;margin:0 auto;max-width:1152px;text-align:center;color:var(--vp-c-text-2)}.title-line[data-v-b1a88750]{position:absolute;top:16px;left:0;width:100%;height:1px;background-color:var(--vp-c-divider)}.title-text[data-v-b1a88750]{position:relative;display:inline-block;padding:0 24px;letter-spacing:0;line-height:32px;font-size:20px;font-weight:500;background-color:var(--vp-c-bg)}.lead[data-v-b1a88750]{margin:0 auto;max-width:480px;padding-top:12px;text-align:center;line-height:24px;font-size:16px;font-weight:500;color:var(--vp-c-text-2)}.members[data-v-b1a88750]{padding-top:40px}.VPTeamMembersItem[data-v-f3fa364a]{display:flex;flex-direction:column;gap:2px;border-radius:12px;width:100%;height:100%;overflow:hidden}.VPTeamMembersItem.small .profile[data-v-f3fa364a]{padding:32px}.VPTeamMembersItem.small .data[data-v-f3fa364a]{padding-top:20px}.VPTeamMembersItem.small .avatar[data-v-f3fa364a]{width:64px;height:64px}.VPTeamMembersItem.small .name[data-v-f3fa364a]{line-height:24px;font-size:16px}.VPTeamMembersItem.small .affiliation[data-v-f3fa364a]{padding-top:4px;line-height:20px;font-size:14px}.VPTeamMembersItem.small .desc[data-v-f3fa364a]{padding-top:12px;line-height:20px;font-size:14px}.VPTeamMembersItem.small .links[data-v-f3fa364a]{margin:0 -16px -20px;padding:10px 0 0}.VPTeamMembersItem.medium .profile[data-v-f3fa364a]{padding:48px 32px}.VPTeamMembersItem.medium .data[data-v-f3fa364a]{padding-top:24px;text-align:center}.VPTeamMembersItem.medium .avatar[data-v-f3fa364a]{width:96px;height:96px}.VPTeamMembersItem.medium .name[data-v-f3fa364a]{letter-spacing:.15px;line-height:28px;font-size:20px}.VPTeamMembersItem.medium .affiliation[data-v-f3fa364a]{padding-top:4px;font-size:16px}.VPTeamMembersItem.medium .desc[data-v-f3fa364a]{padding-top:16px;max-width:288px;font-size:16px}.VPTeamMembersItem.medium .links[data-v-f3fa364a]{margin:0 -16px -12px;padding:16px 12px 0}.profile[data-v-f3fa364a]{flex-grow:1;background-color:var(--vp-c-bg-soft)}.data[data-v-f3fa364a]{text-align:center}.avatar[data-v-f3fa364a]{position:relative;flex-shrink:0;margin:0 auto;border-radius:50%;box-shadow:var(--vp-shadow-3)}.avatar-img[data-v-f3fa364a]{position:absolute;top:0;right:0;bottom:0;left:0;border-radius:50%;-o-object-fit:cover;object-fit:cover}.name[data-v-f3fa364a]{margin:0;font-weight:600}.affiliation[data-v-f3fa364a]{margin:0;font-weight:500;color:var(--vp-c-text-2)}.org.link[data-v-f3fa364a]{color:var(--vp-c-text-2);transition:color .25s}.org.link[data-v-f3fa364a]:hover{color:var(--vp-c-brand-1)}.desc[data-v-f3fa364a]{margin:0 auto}.desc[data-v-f3fa364a] a{font-weight:500;color:var(--vp-c-brand-1);text-decoration-style:dotted;transition:color .25s}.links[data-v-f3fa364a]{display:flex;justify-content:center;height:56px}.sp-link[data-v-f3fa364a]{display:flex;justify-content:center;align-items:center;text-align:center;padding:16px;font-size:14px;font-weight:500;color:var(--vp-c-sponsor);background-color:var(--vp-c-bg-soft);transition:color .25s,background-color .25s}.sp .sp-link.link[data-v-f3fa364a]:hover,.sp .sp-link.link[data-v-f3fa364a]:focus{outline:none;color:var(--vp-c-white);background-color:var(--vp-c-sponsor)}.sp-icon[data-v-f3fa364a]{margin-right:8px;font-size:16px}.VPTeamMembers.small .container[data-v-6cb0dbc4]{grid-template-columns:repeat(auto-fit,minmax(224px,1fr))}.VPTeamMembers.small.count-1 .container[data-v-6cb0dbc4]{max-width:276px}.VPTeamMembers.small.count-2 .container[data-v-6cb0dbc4]{max-width:576px}.VPTeamMembers.small.count-3 .container[data-v-6cb0dbc4]{max-width:876px}.VPTeamMembers.medium .container[data-v-6cb0dbc4]{grid-template-columns:repeat(auto-fit,minmax(256px,1fr))}@media (min-width: 375px){.VPTeamMembers.medium .container[data-v-6cb0dbc4]{grid-template-columns:repeat(auto-fit,minmax(288px,1fr))}}.VPTeamMembers.medium.count-1 .container[data-v-6cb0dbc4]{max-width:368px}.VPTeamMembers.medium.count-2 .container[data-v-6cb0dbc4]{max-width:760px}.container[data-v-6cb0dbc4]{display:grid;gap:24px;margin:0 auto;max-width:1152px} diff --git a/docs/.vitepress/dist/assets/submission-api.md.lbGFQUdB.js b/docs/.vitepress/dist/assets/submission-api.md.ioTnqB_o.js similarity index 97% rename from docs/.vitepress/dist/assets/submission-api.md.lbGFQUdB.js rename to docs/.vitepress/dist/assets/submission-api.md.ioTnqB_o.js index 1ad21fa9..abccb115 100644 --- a/docs/.vitepress/dist/assets/submission-api.md.lbGFQUdB.js +++ b/docs/.vitepress/dist/assets/submission-api.md.ioTnqB_o.js @@ -1,4 +1,4 @@ -import{_ as s,c as a,o as i,a1 as n}from"./chunks/framework.D_xGnxpE.js";const g=JSON.parse('{"title":"Markdown Extension Examples","description":"","frontmatter":{},"headers":[],"relativePath":"submission-api.md","filePath":"submission-api.md"}'),e={name:"submission-api.md"},t=n(`

Markdown Extension Examples

This page demonstrates some of the built-in markdown extensions provided by VitePress.

Syntax Highlighting

VitePress provides Syntax Highlighting powered by Shiki, with additional features like line-highlighting:

Input

\`\`\`js{4}
+import{_ as s,c as a,o as i,a1 as n}from"./chunks/framework.D0pIZSx4.js";const g=JSON.parse('{"title":"Markdown Extension Examples","description":"","frontmatter":{},"headers":[],"relativePath":"submission-api.md","filePath":"submission-api.md"}'),e={name:"submission-api.md"},t=n(`

Markdown Extension Examples

This page demonstrates some of the built-in markdown extensions provided by VitePress.

Syntax Highlighting

VitePress provides Syntax Highlighting powered by Shiki, with additional features like line-highlighting:

Input

\`\`\`js{4}
 export default {
   data () {
     return {
diff --git a/docs/.vitepress/dist/assets/submission-api.md.lbGFQUdB.lean.js b/docs/.vitepress/dist/assets/submission-api.md.ioTnqB_o.lean.js
similarity index 68%
rename from docs/.vitepress/dist/assets/submission-api.md.lbGFQUdB.lean.js
rename to docs/.vitepress/dist/assets/submission-api.md.ioTnqB_o.lean.js
index 4be1e215..ef0164c0 100644
--- a/docs/.vitepress/dist/assets/submission-api.md.lbGFQUdB.lean.js
+++ b/docs/.vitepress/dist/assets/submission-api.md.ioTnqB_o.lean.js
@@ -1 +1 @@
-import{_ as s,c as a,o as i,a1 as n}from"./chunks/framework.D_xGnxpE.js";const g=JSON.parse('{"title":"Markdown Extension Examples","description":"","frontmatter":{},"headers":[],"relativePath":"submission-api.md","filePath":"submission-api.md"}'),e={name:"submission-api.md"},t=n("",19),p=[t];function l(h,o,r,d,c,k){return i(),a("div",null,p)}const u=s(e,[["render",l]]);export{g as __pageData,u as default};
+import{_ as s,c as a,o as i,a1 as n}from"./chunks/framework.D0pIZSx4.js";const g=JSON.parse('{"title":"Markdown Extension Examples","description":"","frontmatter":{},"headers":[],"relativePath":"submission-api.md","filePath":"submission-api.md"}'),e={name:"submission-api.md"},t=n("",19),p=[t];function l(h,o,r,d,c,k){return i(),a("div",null,p)}const u=s(e,[["render",l]]);export{g as __pageData,u as default};
diff --git a/docs/.vitepress/dist/assets/substructure-search.md.ON0PbB4X.js b/docs/.vitepress/dist/assets/substructure-search.md.ON0PbB4X.js
new file mode 100644
index 00000000..90320d58
--- /dev/null
+++ b/docs/.vitepress/dist/assets/substructure-search.md.ON0PbB4X.js
@@ -0,0 +1 @@
+import{_ as t,c as r,o as s,j as e,a}from"./chunks/framework.D0pIZSx4.js";const m=JSON.parse('{"title":"COCONUT online - Substructure Search","description":"","frontmatter":{},"headers":[],"relativePath":"substructure-search.md","filePath":"substructure-search.md"}'),c={name:"substructure-search.md"},o=e("h1",{id:"coconut-online-substructure-search",tabindex:"-1"},[a("COCONUT online - Substructure Search "),e("a",{class:"header-anchor",href:"#coconut-online-substructure-search","aria-label":'Permalink to "COCONUT online - Substructure Search"'},"​")],-1),u=[o];function n(i,h,l,d,_,b){return s(),r("div",null,u)}const f=t(c,[["render",n]]);export{m as __pageData,f as default};
diff --git a/docs/.vitepress/dist/assets/substructure-search.md.ON0PbB4X.lean.js b/docs/.vitepress/dist/assets/substructure-search.md.ON0PbB4X.lean.js
new file mode 100644
index 00000000..90320d58
--- /dev/null
+++ b/docs/.vitepress/dist/assets/substructure-search.md.ON0PbB4X.lean.js
@@ -0,0 +1 @@
+import{_ as t,c as r,o as s,j as e,a}from"./chunks/framework.D0pIZSx4.js";const m=JSON.parse('{"title":"COCONUT online - Substructure Search","description":"","frontmatter":{},"headers":[],"relativePath":"substructure-search.md","filePath":"substructure-search.md"}'),c={name:"substructure-search.md"},o=e("h1",{id:"coconut-online-substructure-search",tabindex:"-1"},[a("COCONUT online - Substructure Search "),e("a",{class:"header-anchor",href:"#coconut-online-substructure-search","aria-label":'Permalink to "COCONUT online - Substructure Search"'},"​")],-1),u=[o];function n(i,h,l,d,_,b){return s(),r("div",null,u)}const f=t(c,[["render",n]]);export{m as __pageData,f as default};
diff --git a/docs/.vitepress/dist/auth-api.html b/docs/.vitepress/dist/auth-api.html
index 8a2d4c3a..d7368f28 100644
--- a/docs/.vitepress/dist/auth-api.html
+++ b/docs/.vitepress/dist/auth-api.html
@@ -6,18 +6,18 @@
     Markdown Extension Examples | COCONUT Docs
     
     
-    
+    
     
-    
-    
-    
-    
-    
+    
+    
+    
+    
+    
     
     
   
   
-    
Skip to content

Markdown Extension Examples

This page demonstrates some of the built-in markdown extensions provided by VitePress.

Syntax Highlighting

VitePress provides Syntax Highlighting powered by Shiki, with additional features like line-highlighting:

Input

```js{4}
+    
Skip to content

Markdown Extension Examples

This page demonstrates some of the built-in markdown extensions provided by VitePress.

Syntax Highlighting

VitePress provides Syntax Highlighting powered by Shiki, with additional features like line-highlighting:

Input

```js{4}
 export default {
   data () {
     return {
@@ -49,8 +49,8 @@
 
 ::: details
 This is a details block.
-:::

Output

INFO

This is an info box.

TIP

This is a tip.

WARNING

This is a warning.

DANGER

This is a dangerous warning.

Details

This is a details block.

More

Check out the documentation for the full list of markdown extensions.

- +:::

Output

INFO

This is an info box.

TIP

This is a tip.

WARNING

This is a warning.

DANGER

This is a dangerous warning.

Details

This is a details block.

More

Check out the documentation for the full list of markdown extensions.

+ \ No newline at end of file diff --git a/docs/.vitepress/dist/browse.html b/docs/.vitepress/dist/browse.html new file mode 100644 index 00000000..9d7149a5 --- /dev/null +++ b/docs/.vitepress/dist/browse.html @@ -0,0 +1,24 @@ + + + + + + COCONUT online - Browse | COCONUT Docs + + + + + + + + + + + + + +
Skip to content

COCONUT online - Browse

Cheming and Computational Metabolomics logo

Molecule Search Functionality

Our advanced molecule search engine provides a robust set of features for users to search for and identify chemical compounds through various methods. Below is a detailed overview of the search functionalities available.

  • Molecule Name: Users can search for molecules by entering any widely recognized name, such as IUPAC, trivial, or synonym names. The search engine will identify compounds that contain the inputted name in their title.

InChI-IUPAC (International Chemical Identifier)

  • InChI Search: The InChI is a non-proprietary identifier for chemical substances that is widely used in electronic data sources. It expresses chemical structures in terms of atomic connectivity, tautomeric state, isotopes, stereochemistry, and electronic charge in order to produce a string of machine-readable characters unique to the particular molecule. Therefore, when InChl name is entered, the software output will be a unique inputted compound with all required characteristics.
  • InChIKey: The InChIKey is a 25-character hashed version of the full InChI, designed to allow for easy web searches of chemical compounds. InChIKeys consist of 14 characters resulting from a hash of the connectivity information from the full InChI string, followed by a hyphen, followed by 8 characters resulting from a hash of the remaining layers of the InChI, followed by a single character indicating the version of InChI used, followed by single checksum character. Therefore, when the user enters the InChl key, the software output will be a single compound that is recognized by a particular InChl key.
  • Molecular Formula: The molecular formula is a type of chemical formula that shows the kinds of atoms and the number of each kind in a single molecule of a particular compound. The molecular formula doesn’t show any information about the molecule structure. The structures and characteristics of compounds with the same molecular formula may vary significantly. Hence, by entering a molecular formula into the search bar, the software output will be a group of compounds with specified atoms and their numbers within a single molecule.

Coconut ID

  • Unique Identifier: Each natural product in our database is assigned a unique Coconut ID, which can be used for quick and precise searches exclusively on COCONUT.
  • Visual Structure Search: Users can search for compounds by providing a visual depiction of their structure. The vast number of functional groups often causes issues to name the compound appropriately. Therefore, usage of structure search is a great way to discover all characteristics of a compound just by providing its visual depiction. The search engine recognizes InChI and canonical SMILES formats.
  • InChI Structural Formulas: The search engine recognizes different types of InChI structural formulas, including expanded, condensed, and skeletal formulas.

    • Expanded Structural Formula: Shows all of the bonds connecting all of the atoms within the compound.
    • Condensed Structural Formula: Shows the symbols of atoms in order as they appear in the molecule's structure while most of the bond dashes are excluded. The vertical bonds are always excluded, while horizontal bonds may be included to specify polyatomic groups. If there is a repetition of a polyatomic group in the chain, parentheses are used to enclose the polyatomic group. The subscript number on the right side of the parentheses represents the number of repetitions of the particular group. The proper condensed structural formula should be written on a single horizontal line without branching in any direction.
    • Skeletal Formula: Represents the carbon skeleton and function groups attached to it. In the skeletal formula, carbon atoms and hydrogen atoms attached to them are not shown. The bonds between carbon lines are presented as well as bonds to functional groups.
  • Canonical SMILES Structural Formulas: The canonical SMILES structure is a unique string that can be used as a universal identifier for a specific chemical structure including stereochemistry of a compound. Therefore, canonical SMILES provides a unique form for any particular molecule. The user can choose a convenient option and then proceed with the structure drawing.

    The 3D structure of the molecule is commonly used for the description of simple molecules. In this type of structure drawing, all types of covalent bonds are presented with respect to their spatial orientation. The usage of models is the best way to pursue a 3D structure drawing. The valence shell repulsion pair theory proposes five main models of simple molecules: linear, trigonal planar, tetrahedral, trigonal bipyramidal, and octahedral.

  • Partial Structure Search: Users can search for compounds by entering a known substructure using InChI or SMILES formats. The engine supports three algorithms:
    • Default (Ullmann Algorithm): Utilizes a backtracking procedure with a refinement step to reduce the search space. This refinement is the most important step of the algorithm. It evaluates the surrounding of every node in the database molecules and compares them with the entered substructure.
    • Depth-First (DF) Pattern: The DF algorithm executes the search operation of the entered molecule in a depth-first manner (bond by bond). Therefore, this algorithm utilizes backtracking search iterating over the bonds of entered molecules.
    • Vento-Foggia Algorithm: The Vento-Foggia algorithm iteratively extends a partial solution using a set of feasibility criteria to decide whether to extend or backtrack. In the Ullmann algorithm, the node-atom mapping is fixed in every step. In contrast, the Vento-Foggia algorithm iteratively adds node-atom pairs to a current solution. In that way, this algorithm directly discovers the topology of the substructure and seeks for all natural products that contain the entered substructure.
  • Tanimoto Threshold: The search engine finds compounds with a similarity score (Sab) greater than or equal to the specified Tanimoto coefficient. This allows users to find compounds closely related to the query structure.
  • Molecular Descriptors and Structural Properties: The advanced search feature enables users to search by specific molecular descriptors, which quantify physical and chemical characteristics. Users can also choose to search within specific data sources compiled in our database.

These search functionalities are designed to cater to various needs, from simple name-based searches to complex structural and substructural queries, ensuring comprehensive and accurate retrieval of chemical information.

+ + + + \ No newline at end of file diff --git a/docs/.vitepress/dist/collection-submission.html b/docs/.vitepress/dist/collection-submission.html new file mode 100644 index 00000000..d81a1980 --- /dev/null +++ b/docs/.vitepress/dist/collection-submission.html @@ -0,0 +1,24 @@ + + + + + + Submitting a Collection | COCONUT Docs + + + + + + + + + + + + + +
Skip to content

Submitting a Collection

Submitting a collection of compounds to the COCONUT platform is a two-step process:

  1. Creation of a Collection
  2. Uploading Compounds into the Created Collection

Step 1: Creation of a Collection

Before uploading a compound collection onto the COCONUT platform, you need to create a collection.

  1. Login to your COCONUT account.
  2. Navigate to the Collections Section:
    • On the left pane, select "Collections."
  3. Create a New Collection:
    • Inside the Collections page, click the "New Collection" button at the top right.
  4. Fill the "Create Collection" Form:
    • Title: Provide a title for the collection.
    • Slug: Auto-generated by the COCONUT platform. No need to fill this field.
    • Description: Provide a description of this collection of compounds.
    • URL: If the collection is from a source available online, provide the URL (for reference for our Curators, this does not import the compounds onto COCONUT).
    • Tags: Enter comma-separated keywords to identify this collection during searches.
    • Identifier: Provide a unique identifier for the collection.
    • License: Choose a license from the dropdown menu.
  5. Submit the Form:
    • Click "Create" to create the collection or "Create & create another" if you have another collection to submit.

This creates an empty collection. To upload molecules/compounds, proceed with the steps below.

Step 2: Uploading Compounds into the Created Collection

After creating an empty collection, an "Entries" pane becomes available at the bottom.

  1. Initiate the Import Process:

    • Click on "Import Entries" on the left of the "Entries" pane.
  2. Download the Template:

    • In the pop-up window, download the template CSV file, which specifies the fields expected by COCONUT in a comma-separated format. Provide the following details for each molecule:
      • canonical_smiles: Canonical SMILES notation of the chemical structure.
      • reference_id: Reference ID as reported in a source database/dataset.
      • name: IUPAC name/trivial name as reported in the original publication or source.

        Example: [9-fluoro-11-hydroxy-17-(2-hydroxyacetyl)-10,13,16-trimethyl-3-oxo-6,7,8,11,12,14,15,16-octahydrocyclopenta[a]phenanthren-17-yl] pentanoate

      • doi: DOI of the original publication where the molecule is first reported.

        Example: doi.org/10.1021/ci5003697

      • link: Database link of the molecule.
      • organism: Scientific name of the organism in which the compound is found.

        Example: Tanacetum parthenium

      • organism_part: The part of the organism in which the compound is found.

        Example: Eyes

      • COCONUT_id: Auto-generated by the COCONUT platform. No need to fill this field.
      • mol_filename: If a 2D/3D molfile is present for the given molecule, mention its name.
      • structural_comments: Comments regarding the structure, if any.
      • geo_location: Geographical location where this molecule is found.

        Example: Rajahmundry, India

      • location: Specific location within the geographical area where the molecule is found.

        Example: Air, Water, Soil, etc.

  3. Upload the CSV File:

    • In the same pop-up window from step 2, click "Upload the CSV" file with all the details of the compounds. Choose the file.
  4. Verify Column Mapping:

    • The pop-up window will show expected columns on the right and detected columns from the CSV file on the left. Ensure the mapping is correct. Use the dropdowns for any corrections and click "Import."

    Tip: If you have already uploaded the CSV file before and made changes to the details of molecules in the CSV file and want to upload the modified CSV file, you need to choose "Update existing records" so that the respective molecules will get updated with the new data provided.

  5. Start the Import Process:

    • You should see an "Import started" notification at the top left.

    Note for Local Development: Start Laravel Horizon to process the queued compounds:

    bash
    sail artisan horizon
  6. Check the Import Status:

    • Once the processing completes, you should see the compounds listed along with their status "SUBMITTED."

    Warning: For statuses other than "SUBMITTED," recheck the corresponding compound's details in the CSV and re-upload it, repeating step 4.

  7. Process the Compounds:

    • Even if one compound in the uploaded list has the status "SUBMITTED," you will see the "Process" button along with the "Import entries" button. Click this to process the submitted compounds.
  8. Complete the Processing:

    • Wait for the processing to finish. The status updates to "PASSED" for successfully processed entries and "REJECTED" for those that failed processing.
      • For successfully processed compounds, check the "Citations" and "Molecules" tabs to ensure everything is properly processed.
      • The "Audits" tab will have a trail of who did what and when on the Collection.

      Warning: For failed entries, recheck the corresponding compound's details in the CSV and re-upload it, repeating step 4.

  9. Publish the Compounds:

    • If at least one compound passed the process, you will see the "Publish" button. Clicking this will publish the compounds that passed processing.

    Info: After publishing, the collection status changes from "DRAFT" to "PUBLISHED." Only the compounds with status "PASSED" will be visible to everyone on the COCONUT platform.

+ + + + \ No newline at end of file diff --git a/docs/.vitepress/dist/contact.html b/docs/.vitepress/dist/contact.html index da303c57..e2f0553d 100644 --- a/docs/.vitepress/dist/contact.html +++ b/docs/.vitepress/dist/contact.html @@ -6,19 +6,19 @@ COCONUT Docs - + - - - - - + + + + + - - + + \ No newline at end of file diff --git a/docs/.vitepress/dist/db-schema.html b/docs/.vitepress/dist/db-schema.html index 534e6e29..62828758 100644 --- a/docs/.vitepress/dist/db-schema.html +++ b/docs/.vitepress/dist/db-schema.html @@ -6,19 +6,19 @@ COCONUT Database Schema | COCONUT Docs - + - - - - - + + + + + - - + + \ No newline at end of file diff --git a/docs/.vitepress/dist/dfg_logo_schriftzug_blau_foerderung_en.gif b/docs/.vitepress/dist/dfg_logo_schriftzug_blau_foerderung_en.gif new file mode 100644 index 00000000..6c0c2bfd Binary files /dev/null and b/docs/.vitepress/dist/dfg_logo_schriftzug_blau_foerderung_en.gif differ diff --git a/docs/.vitepress/dist/download-api.html b/docs/.vitepress/dist/download-api.html index 26f10a25..59c32b20 100644 --- a/docs/.vitepress/dist/download-api.html +++ b/docs/.vitepress/dist/download-api.html @@ -6,18 +6,18 @@ Markdown Extension Examples | COCONUT Docs - + - - - - - + + + + + -
Skip to content

Markdown Extension Examples

This page demonstrates some of the built-in markdown extensions provided by VitePress.

Syntax Highlighting

VitePress provides Syntax Highlighting powered by Shiki, with additional features like line-highlighting:

Input

```js{4}
+    
Skip to content

Markdown Extension Examples

This page demonstrates some of the built-in markdown extensions provided by VitePress.

Syntax Highlighting

VitePress provides Syntax Highlighting powered by Shiki, with additional features like line-highlighting:

Input

```js{4}
 export default {
   data () {
     return {
@@ -49,8 +49,8 @@
 
 ::: details
 This is a details block.
-:::

Output

INFO

This is an info box.

TIP

This is a tip.

WARNING

This is a warning.

DANGER

This is a dangerous warning.

Details

This is a details block.

More

Check out the documentation for the full list of markdown extensions.

- +:::

Output

INFO

This is an info box.

TIP

This is a tip.

WARNING

This is a warning.

DANGER

This is a dangerous warning.

Details

This is a details block.

More

Check out the documentation for the full list of markdown extensions.

+ \ No newline at end of file diff --git a/docs/.vitepress/dist/download.html b/docs/.vitepress/dist/download.html index ee59dd71..cad4314f 100644 --- a/docs/.vitepress/dist/download.html +++ b/docs/.vitepress/dist/download.html @@ -6,19 +6,19 @@ Download | COCONUT Docs - + - - - - - + + + + + -
Skip to content

Download

Coconut online provides users with various download options listed below, offering a convenient means to obtain chemical structures of natural products in a widely accepted and machine-readable format.

  • Download the COCONUT dataset as a Postgres dump.
  • Download Natural Products Structures in Canonical and Absolute SMILES format.
  • Download Natural Products Structures in SDF format.

At the end of each month, precisely at 00:00 CET, a snapshot of the Coconut data is taken and archived in an S3 storage bucket. To obtain the dump file of the most recent snapshot through UI, navigate to the left panel of your dashboard and locate the Download button. Click on the Download with option as desired and this will initiate the download of the data file containing the latest snapshot.

To access data through the API, refer to the API or Swagger documentation for instructions on downloading the data.

WARNING

Please note that the COCONUT dataset is subject to certain terms of use and licensing restrictions. Make sure to review and comply with the respective terms and conditions associated with the dataset.

Download the COCONUT dataset as a Postgres dump

This functionality allows you to obtain the comprehensive COCONUT dataset in the form of a Postgres dump file. Once you have downloaded the Postgres dump file, you can import it into your local Postgres database management system by following the below instruction, which will allow you to explore, query, and analyze the COCONUT dataset using SQL statements within your own environment.

INFO

The Postgres dump exclusively comprises data only from the following tables: molecules, properties, and citations.

Instruction to restore

To restore the database using the dump file, follow these instructions:

  • Make sure that Postgres (version 14.0 or higher) is up and running on your system.

  • Unzip the downloaded dump file.

  • To import, run the below command by replacing the database name and username with yours and enter the password when prompted.

bash
psql -h 127.0.0.1 -p 5432 -d < database name > -U < username > -W < postgresql-coconut.sql

Download Natural Products Structures in Canonical and Absolute SMILES format

The "Download Natural Products Structures in SMILES format" API provides a convenient way to obtain the chemical structures of natural products in the Cannonical Simplified Molecular Input Line Entry System (SMILES) and Absolute SMILES format. This format represents molecular structures using a string of ASCII characters, allowing for easy storage, sharing, and processing of chemical information.

Download Natural Products Structures in SDF format

This functionality provides a convenient way to access the chemical structures of natural products in the Structure-Data File (SDF) format. SDF is a widely used file format for representing molecular structures and associated data, making it suitable for various cheminformatics applications.

- +
Skip to content

Download

Coconut online provides users with various download options listed below, offering a convenient means to obtain chemical structures of natural products in a widely accepted and machine-readable format.

  • Download the COCONUT dataset as a Postgres dump.
  • Download Natural Products Structures in Canonical and Absolute SMILES format.
  • Download Natural Products Structures in SDF format.

At the end of each month, precisely at 00:00 CET, a snapshot of the Coconut data is taken and archived in an S3 storage bucket. To obtain the dump file of the most recent snapshot through UI, navigate to the left panel of your dashboard and locate the Download button. Click on the Download with option as desired and this will initiate the download of the data file containing the latest snapshot.

To access data through the API, refer to the API or Swagger documentation for instructions on downloading the data.

WARNING

Please note that the COCONUT dataset is subject to certain terms of use and licensing restrictions. Make sure to review and comply with the respective terms and conditions associated with the dataset.

Download the COCONUT dataset as a Postgres dump

This functionality allows you to obtain the comprehensive COCONUT dataset in the form of a Postgres dump file. Once you have downloaded the Postgres dump file, you can import it into your local Postgres database management system by following the below instruction, which will allow you to explore, query, and analyze the COCONUT dataset using SQL statements within your own environment.

INFO

The Postgres dump exclusively comprises data only from the following tables: molecules, properties, and citations.

Instruction to restore

To restore the database using the dump file, follow these instructions:

  • Make sure that Postgres (version 14.0 or higher) is up and running on your system.

  • Unzip the downloaded dump file.

  • To import, run the below command by replacing the database name and username with yours and enter the password when prompted.

bash
psql -h 127.0.0.1 -p 5432 -d < database name > -U < username > -W < postgresql-coconut.sql

Download Natural Products Structures in Canonical and Absolute SMILES format

The "Download Natural Products Structures in SMILES format" API provides a convenient way to obtain the chemical structures of natural products in the Cannonical Simplified Molecular Input Line Entry System (SMILES) and Absolute SMILES format. This format represents molecular structures using a string of ASCII characters, allowing for easy storage, sharing, and processing of chemical information.

Download Natural Products Structures in SDF format

This functionality provides a convenient way to access the chemical structures of natural products in the Structure-Data File (SDF) format. SDF is a widely used file format for representing molecular structures and associated data, making it suitable for various cheminformatics applications.

+ \ No newline at end of file diff --git a/docs/.vitepress/dist/draw-structure.html b/docs/.vitepress/dist/draw-structure.html new file mode 100644 index 00000000..5d068e85 --- /dev/null +++ b/docs/.vitepress/dist/draw-structure.html @@ -0,0 +1,24 @@ + + + + + + COCONUT online - Draw Structure | COCONUT Docs + + + + + + + + + + + + + +
Skip to content

COCONUT online - Draw Structure

+ + + + \ No newline at end of file diff --git a/docs/.vitepress/dist/hashmap.json b/docs/.vitepress/dist/hashmap.json index 959f7b38..66215570 100644 --- a/docs/.vitepress/dist/hashmap.json +++ b/docs/.vitepress/dist/hashmap.json @@ -1 +1 @@ -{"faqs.md":"DWn2LnF0","about.md":"dAk0mzg2","advanced-search.md":"Cwsq9mQr","analysis.md":"D9J1hnWY","api-submission.md":"DVSejR-G","contact.md":"BTQuI3CN","db-schema.md":"CH4jOCvK","auth-api.md":"jqYdnIeU","download-api.md":"DNlzWqR1","index.md":"BKubXQgb","download.md":"6FT9ahmt","installation.md":"B3EGeUq6","introduction.md":"c5JF7RpG","license.md":"D6et81ne","issues.md":"ClqioswW","multi-submission.md":"CHBV7X4Z","schemas-api.md":"SZAfPZXJ","sdf-download.md":"BlXeH5Wm","search-api.md":"B8QPpKFW","simple-search.md":"BFPIsGX4","single-submission.md":"Ct5SXe7T","submission-api.md":"lbGFQUdB","structure-search.md":"CwqNUKoF","sources.md":"CcFcUxT0"} +{"analysis.md":"aBwP1KKU","advanced-search.md":"BTpkrwsQ","faqs.md":"Bzquhxla","auth-api.md":"D1vW5Gem","about.md":"BjBdSy5G","api-examples.md":"BGcf4ZON","api-submission.md":"CqfI-AR6","contact.md":"B_dZuMJG","browse.md":"IMFZCDVC","collection-submission.md":"D0Y8RckF","db-schema.md":"la3ov2W8","draw-structure.md":"BMnWGmAO","download.md":"BGMOFAY5","license.md":"DfItzB9F","installation.md":"CEGY1Qt-","index.md":"tK3Qsnyh","issues.md":"Bg_RyD9U","multi-submission.md":"BcHGrxq4","introduction.md":"D3tK6PrH","download-api.md":"Bb6UBng9","report-submission.md":"thVCQVWu","markdown-examples.md":"D2XVdsBH","similarity-search.md":"ChwSV90O","schemas-api.md":"18DnqYio","sdf-download.md":"BQVQ7M5b","search-api.md":"BM5G9xzO","simple-search.md":"l6ttnD4G","single-submission.md":"C5MtaGQH","structure-search.md":"CUhR9U3h","submission-api.md":"ioTnqB_o","substructure-search.md":"ON0PbB4X","sources.md":"BoxPAq4F"} diff --git a/docs/.vitepress/dist/index.html b/docs/.vitepress/dist/index.html index 4b954a81..813de729 100644 --- a/docs/.vitepress/dist/index.html +++ b/docs/.vitepress/dist/index.html @@ -6,19 +6,19 @@ COCONUT Docs - + - - - - - + + + + + -
Skip to content

COCONUT

COlleCtion of Open NatUral producTs

An aggregated dataset of elucidated and predicted NPs collected from open sources and a web interface to browse, search and easily and quickly download NPs.

- +
Skip to content

COCONUT Docs

The Comprehensive Resource for Open Natural Products

+ \ No newline at end of file diff --git a/docs/.vitepress/dist/installation.html b/docs/.vitepress/dist/installation.html index d669d751..e091755f 100644 --- a/docs/.vitepress/dist/installation.html +++ b/docs/.vitepress/dist/installation.html @@ -6,19 +6,19 @@ COCONUT - Installation Guide | COCONUT Docs - + - - - - - + + + + + -
Skip to content

COCONUT - Installation Guide

Prerequisites

Before you begin, make sure you have the following prerequisites installed on your system:

  • PHP (>= 8.1.2)
  • Composer
  • Docker

Step 1: Clone the Repository

Clone the COCONUT project repository from Github using the following command:

bash
git clone https://github.com/Steinbeck-Lab/coconut-2.0

Step 2: Navigate to Project Directory

bash
cd coconut-2.0

Step 3: Install Dependencies

Install the project dependencies using Composer:

composer install

Step 4: Configure Environment Variables

bash
cp .env.example .env

Edit the .env file and set the necessary environment variables such as database credentials.

Step 5: Start Docker Containers

Run the Sail command to start the Docker containers:

bash
./vendor/bin/sail up -d

Step 6: Generate Application Key

Generate the application key using the following command:

bash
./vendor/bin/sail artisan key:generate

Step 7: Run Database Migrations

Run the database migrations to create the required tables:

bash
./vendor/bin/sail artisan migrate

Step 8: Seed the Database (Optional)

If your project includes seeders, you can run them using the following command:

bash
./vendor/bin/sail artisan db:seed

Step 9: Access the Application

Once the Docker containers are up and running, you can access the Laravel application in your browser by visiting:

bash
http://localhost

Step 10: Run Vite Local Development Server

To run the Vite local development server for front-end assets, execute the following command:

bash
npm run dev

or

bash
yarn dev

Once the Docker containers are up and running, you can access the Laravel application in your browser by visiting:

bash
http://localhost

Congratulations! You have successfully installed the Laravel project using Sail.

Note: You can stop the Docker containers by running ./vendor/bin/sail down from your project directory.

- +
Skip to content

COCONUT - Installation Guide

Prerequisites

Before you begin, make sure you have the following prerequisites installed on your system:

  • PHP (>= 8.3)
  • Node
  • Composer
  • Docker

Step 1: Clone the Repository

Clone the COCONUT project repository from Github using the following command:

bash
git clone https://github.com/Steinbeck-Lab/coconut.git

Step 2: Navigate to Project Directory

bash
cd coconut

Step 3: Install Dependencies

Install the PHP dependencies using Composer:

composer install

Install the JS dependencies using NPM:

npm install

Step 4: Configure Environment Variables

bash
cp .env.example .env

Edit the .env file and set the necessary environment variables such as database credentials.

Step 5: Start Docker Containers

Run the Sail command to start the Docker containers:

bash
./vendor/bin/sail up -d

Step 6: Generate Application Key

Generate the application key using the following command:

bash
./vendor/bin/sail artisan key:generate

Step 7: Run Database Migrations

Run the database migrations to create the required tables:

bash
./vendor/bin/sail artisan migrate

Step 8: Seed the Database (Optional)

If your project includes seeders, you can run them using the following command:

bash
./vendor/bin/sail artisan db:seed

Step 9: Access the Application

Once the Docker containers are up and running, you can access the Laravel application in your browser by visiting:

bash
http://localhost

Step 10: Run Vite Local Development Server

To run the Vite local development server for front-end assets, execute the following command:

bash
npm run dev

or

bash
yarn dev

Once the Docker containers are up and running, you can access the Laravel application in your browser by visiting:

bash
http://localhost

Congratulations! You have successfully installed the Laravel project using Sail.

Note: You can stop the Docker containers by running ./vendor/bin/sail down from your project directory.

+ \ No newline at end of file diff --git a/docs/.vitepress/dist/introduction.html b/docs/.vitepress/dist/introduction.html index e0c72c52..aa2fdda5 100644 --- a/docs/.vitepress/dist/introduction.html +++ b/docs/.vitepress/dist/introduction.html @@ -6,24 +6,24 @@ COCONUT (Collection of Open Natural Products) Online | COCONUT Docs - + - - - - - + + + + + -
Skip to content

COCONUT (Collection of Open Natural Products) Online

COlleCtion of Open NatUral producTs (COCONUT) is an aggregated dataset that comprises elucidated and predicted natural products (NPs) sourced from open repositories. It also provides a user-friendly web interface for browsing, searching, and efficiently downloading NPs. The database encompasses more than 50 open NP resources, granting unrestricted access to the data without any associated charges. Each entry in the database represents a "flat" NP structure and is accompanied by information on its known stereochemical forms, relevant literature, producing organisms, natural geographical distribution, and precomputed molecular properties. NPs are small bioactive molecules produced by living organisms, holding potential applications in pharmacology and various industries. The significance of these compounds has fueled global interest in NP research across diverse fields. Consequently, there has been a proliferation of generalistic and specialized NP databases over the years. Nevertheless, there is currently no comprehensive online resource that consolidates all known NPs in a single location. Such a resource would greatly facilitate NP research, enabling computational screening and other in silico applications.

Logo

INFO

  • The COCONUT logo incorporates a molecule called 6-Amyl-α-pyrone, which is an unsaturated lactone with a COCONUT fragrance. This molecule is produced by Trichoderma species, which are fungi.

Citation guidelines

By appropriately citing the COCONUT Database, readers are provided with the means to easily locate the original source of the data utilized.

  • Citing paper:
md
Sorokina, M., Merseburger, P., Rajan, K. et al. 
+    
Skip to content

COCONUT (Collection of Open Natural Products) Online

COlleCtion of Open Natural prodUcTs (COCONUT) is an aggregated dataset that comprises elucidated and predicted natural products (NPs) sourced from open repositories. It also provides a user-friendly web interface for browsing, searching, and efficiently downloading NPs. The database encompasses more than 50 open NP resources, granting unrestricted access to the data without any associated charges. Each entry in the database represents a "flat" NP structure and is accompanied by information on its known stereochemical forms, relevant literature, producing organisms, natural geographical distribution, and precomputed molecular properties. NPs are small bioactive molecules produced by living organisms, holding potential applications in pharmacology and various industries. The significance of these compounds has fueled global interest in NP research across diverse fields. Consequently, there has been a proliferation of generalistic and specialized NP databases over the years. Nevertheless, there is currently no comprehensive online resource that consolidates all known NPs in a single location. Such a resource would greatly facilitate NP research, enabling computational screening and other in silico applications.

Logo

INFO

  • The COCONUT logo incorporates a molecule called 6-Amyl-α-pyrone, which is an unsaturated lactone with a COCONUT fragrance. This molecule is produced by Trichoderma species, which are fungi.

Citation guidelines

By appropriately citing the COCONUT Database, readers are provided with the means to easily locate the original source of the data utilized.

  • Citing paper:
md
Sorokina, M., Merseburger, P., Rajan, K. et al. 
 COCONUT online: Collection of Open Natural Products database. 
 J Cheminform 13, 2 (2021). 
 https://doi.org/10.1186/s13321-020-00478-9
  • Citing software:
md
Venkata, C., Sharma, N., Schaub, J., Steinbeck, C., & Rajan, K. (2023). 
 COCONUT-2.0 (Version v0.0.1 - prerelease) [Computer software]. 
-https://doi.org/10.5281/zenodo.??
- +https://doi.org/10.5281/zenodo.??

Acknowledgments and Maintainence

Cheminformatics Microservice and Natural Products Online are developed and maintained by the Steinbeck group at the Friedrich Schiller University Jena, Germany.

Funded by ChemBioSys (Project INF) - Project number: 239748522 - SFB 1127.

Cheming and Computational Metabolomics logo

+ \ No newline at end of file diff --git a/docs/.vitepress/dist/issues.html b/docs/.vitepress/dist/issues.html index 201c1e32..202cb26a 100644 --- a/docs/.vitepress/dist/issues.html +++ b/docs/.vitepress/dist/issues.html @@ -6,18 +6,18 @@ Help us improve | COCONUT Docs - + - - - - - + + + + + -
Skip to content

Help us improve

Feature Request

Thank you for your interest in improving COCONUT Database! Please use the template below to submit your feature request either by email or on our github. We appreciate your feedback and suggestions.

Feature Request Template:

**Title:**
+    
Skip to content

Help us improve

Feature Request

Thank you for your interest in improving COCONUT Database! Please use the template below to submit your feature request either by email or on our github. We appreciate your feedback and suggestions.

Feature Request Template:

**Title:**
 
 Give your feature request a descriptive title.
 
@@ -47,7 +47,7 @@
 
 **Contact Information:**
 
-If you would like to be contacted regarding your feature request, please provide your preferred contact information (e.g., email address).

Thank you for taking the time to submit your feature request. We value your input and will carefully consider all suggestions as we continue to improve our product.

Report Issues/Bugs

We appreciate your help in improving our product. If you have encountered any issues or bugs, please use the template below to report them either by email or on our github. Your feedback is valuable to us in ensuring a smooth user experience.

Issue Template:

**Summary:**
+If you would like to be contacted regarding your feature request, please provide your preferred contact information (e.g., email address).

Thank you for taking the time to submit your feature request. We value your input and will carefully consider all suggestions as we continue to improve our product.

Report Issues/Bugs

We appreciate your help in improving our product. If you have encountered any issues or bugs, please use the template below to report them either by email or on our github. Your feedback is valuable to us in ensuring a smooth user experience.

Issue Template:

**Summary:**
 
 Provide a brief summary of the issue.
 
@@ -80,8 +80,8 @@
 
 **Additional Information:**
 
-Provide any additional information that may be helpful in resolving the issue, such as error messages, related links, or any troubleshooting steps already attempted.

Thank you for taking the time to report the issue. We appreciate your cooperation in helping us improve our product and provide a better experience for all users.

- +Provide any additional information that may be helpful in resolving the issue, such as error messages, related links, or any troubleshooting steps already attempted.

Thank you for taking the time to report the issue. We appreciate your cooperation in helping us improve our product and provide a better experience for all users.

+ \ No newline at end of file diff --git a/docs/.vitepress/dist/license.html b/docs/.vitepress/dist/license.html index a4703c30..7fe0e210 100644 --- a/docs/.vitepress/dist/license.html +++ b/docs/.vitepress/dist/license.html @@ -3,22 +3,22 @@ - MIT License | COCONUT Docs + Code and Data License Information | COCONUT Docs - + - - - - - + + + + + -
Skip to content

MIT License

Copyright (c) 2023 Steinbeck-Lab

Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

- +
Skip to content

Code and Data License Information

Code

The code provided in this repository is licensed under the MIT License:

Copyright (c) 2023 Steinbeck-Lab

Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

Data

The data provided in this repository is released under the CC0 1.0 Universal (CC0 1.0) Public Domain Dedication:

CC0 1.0 Universal (CC0 1.0) Public Domain Dedication

The person who associated a work with this deed has dedicated the work to the public domain by waiving all of his or her rights to the work worldwide under copyright law, including all related and neighboring rights, to the extent allowed by law.

You can copy, modify, distribute and perform the work, even for commercial purposes, all without asking permission.

The above copyright notice has been included as a courtesy to the public domain, but is not required by law. The person who associated the work with this deed makes no warranties about the work, and disclaims liability for all uses of the work, to the fullest extent permitted by applicable law.

+ \ No newline at end of file diff --git a/docs/.vitepress/dist/markdown-examples.html b/docs/.vitepress/dist/markdown-examples.html new file mode 100644 index 00000000..deb0340a --- /dev/null +++ b/docs/.vitepress/dist/markdown-examples.html @@ -0,0 +1,56 @@ + + + + + + Markdown Extension Examples | COCONUT Docs + + + + + + + + + + + + + +
Skip to content

Markdown Extension Examples

This page demonstrates some of the built-in markdown extensions provided by VitePress.

Syntax Highlighting

VitePress provides Syntax Highlighting powered by Shiki, with additional features like line-highlighting:

Input

md
```js{4}
+export default {
+  data () {
+    return {
+      msg: 'Highlighted!'
+    }
+  }
+}
+```

Output

js
export default {
+  data () {
+    return {
+      msg: 'Highlighted!'
+    }
+  }
+}

Custom Containers

Input

md
::: info
+This is an info box.
+:::
+
+::: tip
+This is a tip.
+:::
+
+::: warning
+This is a warning.
+:::
+
+::: danger
+This is a dangerous warning.
+:::
+
+::: details
+This is a details block.
+:::

Output

INFO

This is an info box.

TIP

This is a tip.

WARNING

This is a warning.

DANGER

This is a dangerous warning.

Details

This is a details block.

More

Check out the documentation for the full list of markdown extensions.

+ + + + \ No newline at end of file diff --git a/docs/.vitepress/dist/multi-submission.html b/docs/.vitepress/dist/multi-submission.html index 07e9a6d5..6864e85a 100644 --- a/docs/.vitepress/dist/multi-submission.html +++ b/docs/.vitepress/dist/multi-submission.html @@ -6,51 +6,19 @@ Markdown Extension Examples | COCONUT Docs - + - - - - - + + + + + -
Skip to content

Markdown Extension Examples

This page demonstrates some of the built-in markdown extensions provided by VitePress.

Syntax Highlighting

VitePress provides Syntax Highlighting powered by Shiki, with additional features like line-highlighting:

Input

```js{4}
-export default {
-  data () {
-    return {
-      msg: 'Highlighted!'
-    }
-  }
-}
-```

Output

js
export default {
-  data () {
-    return {
-      msg: 'Highlighted!'
-    }
-  }
-}

Custom Containers

Input

md
::: info
-This is an info box.
-:::
-
-::: tip
-This is a tip.
-:::
-
-::: warning
-This is a warning.
-:::
-
-::: danger
-This is a dangerous warning.
-:::
-
-::: details
-This is a details block.
-:::

Output

INFO

This is an info box.

TIP

This is a tip.

WARNING

This is a warning.

DANGER

This is a dangerous warning.

Details

This is a details block.

More

Check out the documentation for the full list of markdown extensions.

- +
Skip to content

Markdown Extension Examples

+ \ No newline at end of file diff --git a/docs/.vitepress/dist/report-submission.html b/docs/.vitepress/dist/report-submission.html new file mode 100644 index 00000000..789d0230 --- /dev/null +++ b/docs/.vitepress/dist/report-submission.html @@ -0,0 +1,24 @@ + + + + + + Reporting Discrepancies: Compounds, Collections, Citations, or Organisms | COCONUT Docs + + + + + + + + + + + + + +
Skip to content

Reporting Discrepancies: Compounds, Collections, Citations, or Organisms

The COCONUT platform provides users with the ability to report discrepancies in compounds, collections, citations, or organisms. Multiple items can be reported at once, ensuring thorough feedback on any observed issues. If you come across any discrepancies, please follow the steps outlined below to submit a report.

Reporting Collections, Citations, or Organisms

  1. Log in to your COCONUT account.
  2. In the dashboard's left pane, select "Reports."
  3. On the Reports page, click the "New Report" button at the top right.
  4. Complete the "Create Report" form:
    • Report Type: Select the category of the item you wish to report.
    • Title: Provide a concise title summarizing the issue.
    • Evidence/Comment: Offer evidence or comments supporting your observation of the discrepancy.
    • URL: Include any relevant links to substantiate your report.
    • Citations / Collections / Organisms: Select the respective items you wish to report.
      • For Molecules: The select option is currently unavailable. Instead, please provide the identifiers of the molecules, separated by commas.
    • Tags: Add comma-separated keywords to facilitate easy search and categorization of your report.
  5. Click "Create" to submit your report, or "Create & create another" if you have additional reports to submit.

Reporting Compounds

There are two methods available for reporting compounds:

1. Reporting from the Compound Page

This method allows you to report a single compound directly from its detail page:

  1. On the COCONUT homepage, click "Browse" at the top of the page.
  2. Locate and click on the compound you wish to report.
  3. On the right pane, beneath the compound images, click "Report this compound."
  4. Log in if prompted.
  5. Complete the "Create Report" form:
    • Title: Provide a concise title summarizing the issue.
    • Evidence/Comment: Offer evidence or comments supporting your observation of the discrepancy.
    • URL: Include any relevant links to substantiate your report.
    • Molecules: This field will be pre-filled with the compound identifier.
    • Tags: Add comma-separated keywords to facilitate easy search and categorization of your report.
  6. Click "Create" to submit your report.

2. Reporting from the Reports Page

You can report one or more compounds from the Reports page:

  1. Log in to your COCONUT account.
  2. In the dashboard's left pane, select "Reports."
  3. On the Reports page, click the "New Report" button at the top right.
  4. Complete the "Create Report" form:
    • Report Type: Select "Molecule."
    • Title: Provide a concise title summarizing the issue.
    • Evidence/Comment: Offer evidence or comments supporting your observation of the discrepancy.
    • URL: Include any relevant links to substantiate your report.
    • Molecules: The select option is currently unavailable. Instead, provide the identifiers of the molecules, separated by commas (e.g., CNP0335993,CNP0335993).
    • Tags: Add comma-separated keywords to facilitate easy search and categorization of your report.
  5. Click "Create" to submit your report, or "Create & create another" if you have additional reports to submit.

3. Reporting from the Molecules Table

This method allows you to report one or more compounds directly from the Molecules table:

  1. Log in to your COCONUT account.
  2. In the dashboard's left pane, select "Molecules."
    • To submit a single compound:
      1. In the Molecules page, click on the ellipsis (three vertical dots) next to the molecule you wish to report.
    • To submit multiple compounds:
      1. In the Molecules page, check the boxes next to the molecules you wish to report.
      2. Click on the "Bulk actions" button that appears at the top left of the table header.
      3. Select "Report molecules" from the dropdown menu.
  3. You will be redirected to the Reports page, where the molecule identifiers will be pre-populated in the form.
  4. Complete the "Create Report" form:
    • Title: Provide a concise title summarizing the issue.
    • Evidence/Comment: Offer evidence or comments supporting your observation of the discrepancy.
    • URL: Include any relevant links to substantiate your report.
    • Molecules: This field will be pre-filled with the compound identifier(s).
    • Tags: Add comma-separated keywords to facilitate easy search and categorization of your report.
  5. Click "Create" to submit your report.
+ + + + \ No newline at end of file diff --git a/docs/.vitepress/dist/schemas-api.html b/docs/.vitepress/dist/schemas-api.html index 5c9edfeb..d0119d1d 100644 --- a/docs/.vitepress/dist/schemas-api.html +++ b/docs/.vitepress/dist/schemas-api.html @@ -6,18 +6,18 @@ Markdown Extension Examples | COCONUT Docs - + - - - - - + + + + + -
Skip to content

Markdown Extension Examples

This page demonstrates some of the built-in markdown extensions provided by VitePress.

Syntax Highlighting

VitePress provides Syntax Highlighting powered by Shiki, with additional features like line-highlighting:

Input

```js{4}
+    
Skip to content

Markdown Extension Examples

This page demonstrates some of the built-in markdown extensions provided by VitePress.

Syntax Highlighting

VitePress provides Syntax Highlighting powered by Shiki, with additional features like line-highlighting:

Input

```js{4}
 export default {
   data () {
     return {
@@ -49,8 +49,8 @@
 
 ::: details
 This is a details block.
-:::

Output

INFO

This is an info box.

TIP

This is a tip.

WARNING

This is a warning.

DANGER

This is a dangerous warning.

Details

This is a details block.

More

Check out the documentation for the full list of markdown extensions.

- +:::

Output

INFO

This is an info box.

TIP

This is a tip.

WARNING

This is a warning.

DANGER

This is a dangerous warning.

Details

This is a details block.

More

Check out the documentation for the full list of markdown extensions.

+ \ No newline at end of file diff --git a/docs/.vitepress/dist/sdf-download.html b/docs/.vitepress/dist/sdf-download.html index 2117c08f..232a7842 100644 --- a/docs/.vitepress/dist/sdf-download.html +++ b/docs/.vitepress/dist/sdf-download.html @@ -6,18 +6,18 @@ Markdown Extension Examples | COCONUT Docs - + - - - - - + + + + + -
Skip to content

Markdown Extension Examples

This page demonstrates some of the built-in markdown extensions provided by VitePress.

Syntax Highlighting

VitePress provides Syntax Highlighting powered by Shiki, with additional features like line-highlighting:

Input

```js{4}
+    
Skip to content

Markdown Extension Examples

This page demonstrates some of the built-in markdown extensions provided by VitePress.

Syntax Highlighting

VitePress provides Syntax Highlighting powered by Shiki, with additional features like line-highlighting:

Input

```js{4}
 export default {
   data () {
     return {
@@ -49,8 +49,8 @@
 
 ::: details
 This is a details block.
-:::

Output

INFO

This is an info box.

TIP

This is a tip.

WARNING

This is a warning.

DANGER

This is a dangerous warning.

Details

This is a details block.

More

Check out the documentation for the full list of markdown extensions.

- +:::

Output

INFO

This is an info box.

TIP

This is a tip.

WARNING

This is a warning.

DANGER

This is a dangerous warning.

Details

This is a details block.

More

Check out the documentation for the full list of markdown extensions.

+ \ No newline at end of file diff --git a/docs/.vitepress/dist/search-api.html b/docs/.vitepress/dist/search-api.html index 595f8598..97f201b8 100644 --- a/docs/.vitepress/dist/search-api.html +++ b/docs/.vitepress/dist/search-api.html @@ -6,18 +6,18 @@ Markdown Extension Examples | COCONUT Docs - + - - - - - + + + + + -
Skip to content

Markdown Extension Examples

This page demonstrates some of the built-in markdown extensions provided by VitePress.

Syntax Highlighting

VitePress provides Syntax Highlighting powered by Shiki, with additional features like line-highlighting:

Input

```js{4}
+    
Skip to content

Markdown Extension Examples

This page demonstrates some of the built-in markdown extensions provided by VitePress.

Syntax Highlighting

VitePress provides Syntax Highlighting powered by Shiki, with additional features like line-highlighting:

Input

```js{4}
 export default {
   data () {
     return {
@@ -49,8 +49,8 @@
 
 ::: details
 This is a details block.
-:::

Output

INFO

This is an info box.

TIP

This is a tip.

WARNING

This is a warning.

DANGER

This is a dangerous warning.

Details

This is a details block.

More

Check out the documentation for the full list of markdown extensions.

- +:::

Output

INFO

This is an info box.

TIP

This is a tip.

WARNING

This is a warning.

DANGER

This is a dangerous warning.

Details

This is a details block.

More

Check out the documentation for the full list of markdown extensions.

+ \ No newline at end of file diff --git a/docs/.vitepress/dist/search-page.png b/docs/.vitepress/dist/search-page.png new file mode 100644 index 00000000..d89feb3f Binary files /dev/null and b/docs/.vitepress/dist/search-page.png differ diff --git a/docs/.vitepress/dist/similarity-search.html b/docs/.vitepress/dist/similarity-search.html new file mode 100644 index 00000000..c2234645 --- /dev/null +++ b/docs/.vitepress/dist/similarity-search.html @@ -0,0 +1,24 @@ + + + + + + COCONUT online - Similarity Structure | COCONUT Docs + + + + + + + + + + + + + +
Skip to content
+ + + + \ No newline at end of file diff --git a/docs/.vitepress/dist/simple-search.html b/docs/.vitepress/dist/simple-search.html index 6754ec22..16b5b0a2 100644 --- a/docs/.vitepress/dist/simple-search.html +++ b/docs/.vitepress/dist/simple-search.html @@ -6,19 +6,19 @@ COCONUT online - Simple search | COCONUT Docs - + - - - - - + + + + + -
Skip to content
- +
Skip to content
+ \ No newline at end of file diff --git a/docs/.vitepress/dist/single-submission.html b/docs/.vitepress/dist/single-submission.html index 9f5949f0..27f8230b 100644 --- a/docs/.vitepress/dist/single-submission.html +++ b/docs/.vitepress/dist/single-submission.html @@ -3,54 +3,22 @@ - Markdown Extension Examples | COCONUT Docs + Submitting a Single Compound | COCONUT Docs - + - - - - - + + + + + -
Skip to content

Markdown Extension Examples

This page demonstrates some of the built-in markdown extensions provided by VitePress.

Syntax Highlighting

VitePress provides Syntax Highlighting powered by Shiki, with additional features like line-highlighting:

Input

```js{4}
-export default {
-  data () {
-    return {
-      msg: 'Highlighted!'
-    }
-  }
-}
-```

Output

js
export default {
-  data () {
-    return {
-      msg: 'Highlighted!'
-    }
-  }
-}

Custom Containers

Input

md
::: info
-This is an info box.
-:::
-
-::: tip
-This is a tip.
-:::
-
-::: warning
-This is a warning.
-:::
-
-::: danger
-This is a dangerous warning.
-:::
-
-::: details
-This is a details block.
-:::

Output

INFO

This is an info box.

TIP

This is a tip.

WARNING

This is a warning.

DANGER

This is a dangerous warning.

Details

This is a details block.

More

Check out the documentation for the full list of markdown extensions.

- +
Skip to content

Submitting a Single Compound

To submit a compound to the COCONUT platform, please follow the steps outlined below:

Steps to Submit a Compound

  1. Login to your COCONUT account.

  2. Navigate to the Molecules Section:

    • In the left pane, select "Molecules."
  3. Initiate the Submission Process:

    • On the Molecules page, click the "New Molecule" button at the top right.
  4. Complete the "Create Molecule" Form:

    • Name: Enter the trivial name reported for the molecule in the original publication.

      Example: Betamethasone-17-valerate

    • Identifier: This is auto-generated by the COCONUT platform. No need to fill this field.

    • IUPAC Name: Provide the systematic standardized IUPAC name (International Union of Pure and Applied Chemistry name) generated according to IUPAC regulations.

      Example: [9-fluoro-11-hydroxy-17-(2-hydroxyacetyl)-10,13,16-trimethyl-3-oxo-6,7,8,11,12,14,15,16-octahydrocyclopenta[a]phenanthren-17-yl] pentanoate

    • Standard InChI: Enter the standard InChI (International Chemical Identifier) generated using cheminformatics software.

      Example: InChI=1S/C27H37FO6/c1-5-6-7-23(33)34-27(22(32)15-29)16(2)12-20-19-9-8-17-13-18(30)10-11-24(17,3)26(19,28)21(31)14-25(20,27)4/h10-11,13,16,19-21,29,31H,5-9,12,14-15H2,1-4H3

    • Standard InChI Key: Provide the standard InChI Key derived from the standard InChI.

      Example: SNHRLVCMMWUAJD-UHFFFAOYSA-N

    • Canonical SMILES: Enter the canonical SMILES (Simplified Molecular Input Line Entry System) representation of the molecule.

      Example: CCCCC(=O)OC1(C(=O)CO)C(C)CC2C3CCC4=CC(=O)C=CC4(C)C3(F)C(O)CC21C

    • Murcko Framework: This field will be auto-generated by the system and defines the core structure of the molecule.

    • Synonyms: Provide other names or identifiers by which the molecule is known.

      Example: Betamethasone 17 Valerate, SCHEMBL221479, .beta.-Methasone 17-valerate, SNHRLVCMMWUAJD-UHFFFAOYSA-N, STL451052, AKOS037482517, LS-15203, 9-Fluoro-11, 21-dihydroxy-16-methyl-3, 20-dioxopregna-1, 4-dien-17-yl pentanoate

  5. Submit the Form:

    • Click "Create" to submit your compound.
    • If you have another compound to submit, click "Create & create another."
+ \ No newline at end of file diff --git a/docs/.vitepress/dist/sources.html b/docs/.vitepress/dist/sources.html index 98a615ec..5e557dfd 100644 --- a/docs/.vitepress/dist/sources.html +++ b/docs/.vitepress/dist/sources.html @@ -6,19 +6,19 @@ COCONUT online - Sources | COCONUT Docs - + - - - - - + + + + + -
Skip to content

COCONUT online - Sources

Public databases and primary sources from which COCONUT was meticulously assembled.

Database nameEntries integrated in COCONUTLatest resource URL
AfroCancer365Ntie-Kang F, Nwodo JN, Ibezim A, Simoben CV, Karaman B, Ngwa VF (2014) Molecular modeling of potential anticancer agents from African medicinal plants. J Chem Inf Model 54:2433–2450. https://doi.org/10.1021/ci5003697
AfroDB874Ntie-Kang F, Zofou D, Babiaka SB, Meudom R, Scharfe M, Lifongo LL (2013) AfroDb: a select highly potent and diverse natural product library from African medicinal plants. PLoS ONE 8:e78085
AfroMalariaDB252Onguéné PA, Ntie-Kang F, Mbah JA, Lifongo LL, Ndom JC, Sippl W (2014) The potential of anti-malarial compounds derived from African medicinal plants, part III: an in silico evaluation of drug metabolism and pharmacokinetics profiling. Org Med Chem Lett 4:6. https://doi.org/10.1186/s13588-014-0006-x
AnalytiCon Discovery NPs4908AnalytiCon Discovery, Screening Libraries. In: AnalytiCon Discovery. https://ac-discovery.com/screening-libraries/
BIOFACQUIM400Pilón-Jiménez BA, Saldívar-González FI, Díaz-Eufracio BI, Medina-Franco JL (2019) BIOFACQUIM: a Mexican compound database of natural products. Biomolecules 9:31. https://doi.org/10.3390/biom9010031
BitterDB625Dagan-Wiener A, Di Pizio A, Nissim I, Bahia MS, Dubovski N, Margulis E (2019) BitterDB: taste ligands and receptors database in 2019. Nucleic Acids Res 47:D1179–D1185. https://doi.org/10.1093/nar/gky974
Carotenoids Database986Yabuzaki J (2017) Carotenoids Database: structures, chemical fingerprints and distribution among organisms. Database J Biol Databases Curation. https://doi.org/10.1093/database/bax004
ChEBI NPs14603ChemAxon (2012) JChem Base was used for structure searching and chemical database access and management. http://www.chemaxon.com
ChEMBL NPs1585Schaub J, Zielesny A, Steinbeck C, Sorokina M (2020) Too sweet: cheminformatics for deglycosylation in natural products. J Cheminform 12:67. https://doi.org/10.1186/s13321-020-00467-y
ChemSpider NPs9027Pence HE, Williams A (2010) ChemSpider: an online chemical information resource. J Chem Educ 87:1123–1124. https://doi.org/10.1021/ed100697w
CMAUP (cCollective molecular activities of useful plants)20868Zeng X, Zhang P, Wang Y, Qin C, Chen S, He W (2019) CMAUP: a database of collective molecular activities of useful plants. Nucleic Acids Res 47:D1118–27
ConMedNP2504Ntie-Kang F, Amoa Onguéné P, Scharfe M, Owono LCO, Megnassan E, Meva’a Mbaze L (2014) ConMedNP: a natural product library from Central African medicinal plants for drug discovery. RSC Adv 4:409–419. https://doi.org/10.1039/c3ra43754j
ETM (Ethiopian Traditional Medicine) DB1633Bultum LE, Woyessa AM, Lee D (2019) ETM-DB: integrated Ethiopian traditional herbal medicine and phytochemicals database. BMC Complement Altern Med 19:212. https://doi.org/10.1186/s12906-019-2634-1
Exposome-explorer478Neveu V, Moussy A, Rouaix H, Wedekind R, Pon A, Knox C (2017) Exposome-Explorer: a manually-curated database on biomarkers of exposure to dietary and environmental factors. Nucleic Acids Res 45:D979–D984. https://doi.org/10.1093/nar/gkw980
FooDB22123FooDB. http://foodb.ca/
GNPS (Global Natural Products Social Molecular Networking)6740Wang M, Carver JJ, Phelan VV, Sanchez LM, Garg N, Peng Y (2016) Sharing and community curation of mass spectrometry data with Global Natural Products Social Molecular Networking. Nat Biotechnol 34:828. https://doi.org/10.1038/nbt.3597
HIM (Herbal Ingredients in-vivo Metabolism database)962Kang H, Tang K, Liu Q, Sun Y, Huang Q, Zhu R (2013) HIM-herbal ingredients in vivo metabolism database. J Cheminform 5:28. https://doi.org/10.1186/1758-2946-5-28
HIT (Herbal Ingredients Targets)470Ye H, Ye L, Kang H, Zhang D, Tao L, Tang K (2011) HIT: linking herbal active ingredients to targets. Nucleic Acids Res 39:D1055–D1059 https://doi.org/10.1093/nar/gkq1165
Indofine Chemical Company46NDOFINE Chemical Company. http://www.indofinechemical.com/Media/sdf/sdf_files.aspx
InflamNat536Zhang R, Lin J, Zou Y, Zhang X-J, Xiao W-L (2019) Chemical space and biological target network of anti-inflammatory natural products, J Chem Inf Model 59:66–73. https://doi.org/10.1021/acs.jcim.8b00560
InPACdb122Vetrivel U, Subramanian N, Pilla K (2009) InPACdb—Indian plant anticancer compounds database. Bioinformation 4:71–74
InterBioScreen Ltd67291InterBioScreen | Natural Compounds. https://www.ibscreen.com/natural-compounds
KNApSaCK44422Nakamura K, Shimura N, Otabe Y, Hirai-Morita A, Nakamura Y, Ono N (2013) KNApSAcK-3D: a three-dimensional structure database of plant metabolites. Plant Cell Physiol 54:e4–e4. https://doi.org/10.1093/pcp/pcs186
Lichen Database1453Lichen Database. In: MTBLS999: A database of high-resolution MS/MS spectra for lichen metabolites. https://www.ebi.ac.uk/metabolights/MTBLS999
Marine Natural Products11880Gentile D, Patamia V, Scala A, Sciortino MT, Piperno A, Rescifina A (2020) Putative inhibitors of SARS-CoV-2 main protease from a library of marine natural products: a virtual screening and molecular modeling study. Marine Drugs 18:225. https://doi.org/10.3390/md18040225
Mitishamba database1010Derese S, Oyim J, Rogo M, Ndakala A (2015) Mitishamba database: a web based in silico database of natural products from Kenya plants. Nairobi, University of Nairobi
NANPDB (Natural Products from Northern African Sources)3914Ntie-Kang F, Telukunta KK, Döring K, Simoben CV, Moumbock AF, Malange YI (2017) NANPDB: a resource for natural products from Northern African sources. J Nat Prod 80:2067–2076. https://doi.org/10.1021/acs.jnatprod.7b00283
NCI DTP data404Compound Sets—NCI DTP Data—National Cancer Institute—Confluence Wiki. https://wiki.nci.nih.gov/display/NCIDTPdata/Compound+Sets
NPACT1453Mangal M, Sagar P, Singh H, Raghava GPS, Agarwal SM (2013) NPACT: naturally occurring plant-based anti-cancer compound-activity-target database. Nucleic Acids Res 41:D1124–D1129. https://doi.org/10.1093/nar/gks1047
NPASS27424Zeng X, Zhang P, He W, Qin C, Chen S, Tao L (2018) NPASS: natural product activity and species source database for natural product research, discovery and tool development. Nucleic Acids Res 46:D1217–D1222. https://doi.org/10.1093/nar/gkx1026
NPAtlas23914van Santen JA, Jacob G, Singh AL, Aniebok V, Balunas MJ, Bunsko D et al (2019) The natural products atlas: an open access knowledge base for microbial natural products discovery. ACS Cent Sci 5:1824–1833. https://doi.org/10.1021/acscentsci.9b00806
NPCARE1362Choi H, Cho SY, Pak HJ, Kim Y, Choi J, Lee YJ (2017) NPCARE: database of natural products and fractional extracts for cancer regulation. J Cheminformatics 9:2. https://doi.org/10.1186/s13321-016-0188-5
NPEdia16166Tomiki T, Saito T, Ueki M, Konno H, Asaoka T, Suzuki R (2006) RIKEN natural products encyclopedia (RIKEN NPEdia), a chemical database of RIKEN natural products depository (RIKEN NPDepo). J Comput Aid Chem 7:157–162
NuBBEDB2022Pilon AC, Valli M, Dametto AC, Pinto MEF, Freire RT, Castro-Gamboa I (2017) NuBBEDB: an updated database to uncover chemical and biological information from Brazilian biodiversity. Sci Rep 7:7215. https://doi.org/10.1038/s41598-017-07451-x
p-ANAPL467Ntie-Kang F, Onguéné PA, Fotso GW, Andrae-Marobela K, Bezabih M, Ndom JC (2014) Virtualizing the p-ANAPL library: a step towards drug discovery from African medicinal plants. PLoS ONE 9:e90655. https://doi.org/10.1371/journal.pone.0090655
Phenol-explorer681Rothwell JA, Perez-Jimenez J, Neveu V, Medina-Remón A, M’Hiri N, García-Lobato P (2013) Phenol-Explorer 3.0: a major update of the Phenol-Explorer database to incorporate data on the effects of food processing on polyphenol content. Database. https://doi.org/10.1093/database/bat070
PubChem NPs2828OpenChemLib (https://github.com/cheminfo/openchemlib-js
ReSpect699Sawada Y, Nakabayashi R, Yamada Y, Suzuki M, Sato M, Sakata A (2012) RIKEN tandem mass spectral database (ReSpect) for phytochemicals: a plant-specific MS/MS-based data resource and database. Phytochemistry 82:38–45. https://doi.org/10.1016/j.phytochem.2012.07.007
SANCDB592Hatherley R, Brown DK, Musyoka TM, Penkler DL, Faya N, Lobb KA (2015) SANCDB: a South African natural compound database. J Cheminformatics 7:29. https://doi.org/10.1186/s13321-015-0080-8
Seaweed Metabolite Database (SWMD)348Davis GDJ, Vasanthi AHR (2011) Seaweed metabolite database (SWMD): a database of natural compounds from marine algae. Bioinformation 5:361–364.
Specs Natural Products745Specs. Compound management services and research compounds for the life science industry. https://www.specs.net/index.php
Spektraris NMR242Fischedick JT, Johnson SR, Ketchum REB, Croteau RB, Lange BM (2015) NMR spectroscopic search module for Spektraris, an online resource for plant natural product identification—Taxane diterpenoids from Taxus × media cell suspension cultures as a case study. Phytochemistry 113:87–95. https://doi.org/10.1016/j.phytochem.2014.11.020
StreptomeDB6058Moumbock AFA, Gao M, Qaseem A, Li J, Kirchner PA, Ndingkokhar B (2020) StreptomeDB 3.0: an updated compendium of streptomycetes natural products. Nucleic Acids Res. https://doi.org/10.1093/nar/gkaa868
Super Natural II214420Banerjee P, Erehman J, Gohlke B-O, Wilhelm T, Preissner R, Dunkel M (2015) Super Natural II—a database of natural products. Nucleic Acids Res 43:D935–D939. https://doi.org/10.1093/nar/gku886
TCMDB@Taiwan (Traditional Chinese Medicine database)50862Chen CY-C (2011) TCM Database: the World’s Largest Traditional Chinese Medicine Database for Drug Screening in silico. PLOS ONE 6:e15939. https://doi.org/10.1371/journal.pone.0015939
TCMID (Traditional Chinese Medicine Integrated Database)10552TCMID: traditional Chinese medicine integrative database for herb molecular mechanism analysis. https://www.ncbi.nlm.nih.gov/pmc/articles/PMC3531123/
TIPdb (database of Taiwan indigenous plants)7742Tung C-W, Lin Y-C, Chang H-S, Wang C-C, Chen I-S, Jheng J-L (2014) TIPdb-3D: the three-dimensional structure database of phytochemicals from Taiwan indigenous plants. Database. https://doi.org/10.1093/database/bau055
TPPT (Toxic Plants–PhytoToxins)1483ünthardt BF, Hollender J, Hungerbühler K, Scheringer M, Bucheli TD (2018) Comprehensive toxic plants-phytotoxins database and its application in assessing aquatic micropollution potential. J Agric Food Chem 66:7577–7588. https://doi.org/10.1021/acs.jafc.8b01639
UEFS (Natural Products Databse of the UEFS)481UEFS Natural Products. http://zinc12.docking.org/catalogs/uefsnp
UNPD (Universal Natural Products Database)156865Gu J, Gui Y, Chen L, Yuan G, Lu H-Z, Xu X (2013) Use of natural products as chemical library for drug discovery and network pharmacology. PLoS ONE 8:e62839. https://doi.org/10.1371/journal.pone.0062839
VietHerb4759Nguyen-Vo T-H, Le T, Pham D, Nguyen T, Le P, Nguyen A (2019) VIETHERB: a database for Vietnamese herbal species. J Chem Inf Model 59:1–9. https://doi.org/10.1021/acs.jcim.8b00399
ZINC NP67327Sterling T, Irwin JJ (2015) ZINC 15—ligand discovery for everyone. J Chem Inf Model 55:2324–2337. https://doi.org/10.1021/acs.jcim.5b00559
Manually selected molecules61x
- +
Skip to content

COCONUT online - Sources

COCONUT database summary stats:

Total MoleculesTotal CollectionsUnique OrganismsCitations Mapped
1,080,8766357,62624,272

Public databases and primary sources from which COCONUT was meticulously assembled:

S.NoDatabase nameEntries integrated in COCONUTLatest resource URL
1AfroCancer390Fidele Ntie-Kang, Justina Ngozi Nwodo, Akachukwu Ibezim, Conrad Veranso Simoben, Berin Karaman, Valery Fuh Ngwa, Wolfgang Sippl, Michael Umale Adikwu, and Luc Meva’a Mbaze Journal of Chemical Information and Modeling 2014 54 (9), 2433-2450 https://doi.org/10.1021/ci5003697
2AfroDB953Fidele Ntie-Kang ,Denis Zofou,Smith B. Babiaka,Rolande Meudom,Michael Scharfe,Lydia L. Lifongo,James A. Mbah,Luc Meva’a Mbaze,Wolfgang Sippl,Simon M. N. Efange https://doi.org/10.1371/journal.pone.0078085
3AfroMalariaDB265Onguéné, P.A., Ntie-Kang, F., Mbah, J.A. et al. The potential of anti-malarial compounds derived from African medicinal plants, part III: an in silico evaluation of drug metabolism and pharmacokinetics profiling. Org Med Chem Lett 4, 6 (2014). https://doi.org/10.1186/s13588-014-0006-x
4AnalytiCon Discovery NPs5,147Natural products are a sebset of AnalytiCon Discovery NPs https://ac-discovery.com/screening-libraries/
5BIOFACQUIM605Pilón-Jiménez, B.A.; Saldívar-González, F.I.; Díaz-Eufracio, B.I.; Medina-Franco, J.L. BIOFACQUIM: A Mexican Compound Database of Natural Products. Biomolecules 2019, 9, 31. https://doi.org/10.3390/biom9010031
6BitterDB685Ayana Dagan-Wiener, Antonella Di Pizio, Ido Nissim, Malkeet S Bahia, Nitzan Dubovski, Eitan Margulis, Masha Y Niv, BitterDB: taste ligands and receptors database in 2019, Nucleic Acids Research, Volume 47, Issue D1, 08 January 2019, Pages D1179–D1185, https://doi.org/10.1093/nar/gky974
7Carotenoids Database1,195Junko Yabuzaki, Carotenoids Database: structures, chemical fingerprints and distribution among organisms, Database, Volume 2017, 2017, bax004, https://doi.org/10.1093/database/bax004
8ChEBI NPs16,215Janna Hastings, Paula de Matos, Adriano Dekker, Marcus Ennis, Bhavana Harsha, Namrata Kale, Venkatesh Muthukrishnan, Gareth Owen, Steve Turner, Mark Williams, Christoph Steinbeck, The ChEBI reference database and ontology for biologically relevant chemistry: enhancements for 2013, Nucleic Acids Research, Volume 41, Issue D1, 1 January 2013, Pages D456–D463, https://doi.org/10.1093/nar/gks1146
9ChEMBL NPs1,910Anna Gaulton, Anne Hersey, Michał Nowotka, A. Patrícia Bento, Jon Chambers, David Mendez, Prudence Mutowo, Francis Atkinson, Louisa J. Bellis, Elena Cibrián-Uhalte, Mark Davies, Nathan Dedman, Anneli Karlsson, María Paula Magariños, John P. Overington, George Papadatos, Ines Smit, Andrew R. Leach, The ChEMBL database in 2017, Nucleic Acids Research, Volume 45, Issue D1, January 2017, Pages D945–D954, https://doi.org/10.1093/nar/gkw1074
10ChemSpider NPs9,740Harry E. Pence and Antony Williams Journal of Chemical Education 2010 87 (11), 1123-1124 https://doi.org/10.1021/ed100697w
11CMAUP (cCollective molecular activities of useful plants)47,593Xian Zeng, Peng Zhang, Yali Wang, Chu Qin, Shangying Chen, Weidong He, Lin Tao, Ying Tan, Dan Gao, Bohua Wang, Zhe Chen, Weiping Chen, Yu Yang Jiang, Yu Zong Chen, CMAUP: a database of collective molecular activities of useful plants, Nucleic Acids Research, Volume 47, Issue D1, 08 January 2019, Pages D1118–D1127, https://doi.org/10.1093/nar/gky965
12ConMedNP3,111DOI https://doi.org/10.1039/C3RA43754J
13ETM (Ethiopian Traditional Medicine) DB1,798Bultum, L.E., Woyessa, A.M. & Lee, D. ETM-DB: integrated Ethiopian traditional herbal medicine and phytochemicals database. BMC Complement Altern Med 19, 212 (2019). https://doi.org/10.1186/s12906-019-2634-1
14Exposome-explorer434Vanessa Neveu, Alice Moussy, Héloïse Rouaix, Roland Wedekind, Allison Pon, Craig Knox, David S. Wishart, Augustin Scalbert, Exposome-Explorer: a manually-curated database on biomarkers of exposure to dietary and environmental factors, Nucleic Acids Research, Volume 45, Issue D1, January 2017, Pages D979–D984, https://doi.org/10.1093/nar/gkw980
15FoodDB70,385Natural products are a sebset of FoodDB https://foodb.ca/
16GNPS (Global Natural Products Social Molecular Networking)11,103Wang, M., Carver, J., Phelan, V. et al. Sharing and community curation of mass spectrometry data with Global Natural Products Social Molecular Networking. Nat Biotechnol 34, 828–837 (2016). https://doi.org/10.1038/nbt.3597
17HIM (Herbal Ingredients in-vivo Metabolism database)1,259Kang, H., Tang, K., Liu, Q. et al. HIM-herbal ingredients in-vivo metabolism database. J Cheminform 5, 28 (2013). https://doi.org/10.1186/1758-2946-5-28
18HIT (Herbal Ingredients Targets)530Hao Ye, Li Ye, Hong Kang, Duanfeng Zhang, Lin Tao, Kailin Tang, Xueping Liu, Ruixin Zhu, Qi Liu, Y. Z. Chen, Yixue Li, Zhiwei Cao, HIT: linking herbal active ingredients to targets, Nucleic Acids Research, Volume 39, Issue suppl_1, 1 January 2011, Pages D1055–D1059, https://doi.org/10.1093/nar/gkq1165
19Indofine Chemical Company46Natural products are a sebset of Indofine Chemical Company https://indofinechemical.com/
20InflamNat664Ruihan Zhang, Jing Lin, Yan Zou, Xing-Jie Zhang, and Wei-Lie Xiao Journal of Chemical Information and Modeling 2019 59 (1), 66-73 DOI: 10.1021/acs.jcim.8b00560 https://doi.org/10.1021/acs.jcim.8b00560
21InPACdb124Vetrivel et al., Bioinformation 4(2): 71-74 (2009) https://www.bioinformation.net/004/001500042009.htm
22InterBioScreen Ltd68,372Natural products are a sebset of InterBioScreen Ltd https://www.ibscreen.com/natural-compounds
23KNApSaCK48,241Kensuke Nakamura, Naoki Shimura, Yuuki Otabe, Aki Hirai-Morita, Yukiko Nakamura, Naoaki Ono, Md Altaf Ul-Amin, Shigehiko Kanaya, KNApSAcK-3D: A Three-Dimensional Structure Database of Plant Metabolites, Plant and Cell Physiology, Volume 54, Issue 2, February 2013, Page e4, https://doi.org/10.1093/pcp/pcs186
24Lichen Database1,718Olivier-Jimenez, D., Chollet-Krugler, M., Rondeau, D. et al. A database of high-resolution MS/MS spectra for lichen metabolites. Sci Data 6, 294 (2019). https://doi.org/10.1038/s41597-019-0305-1
25Marine Natural Products14,220Gentile, D.; Patamia, V.; Scala, A.; Sciortino, M.T.; Piperno, A.; Rescifina, A. Putative Inhibitors of SARS-CoV-2 Main Protease from A Library of Marine Natural Products: A Virtual Screening and Molecular Modeling Study. Mar. Drugs 2020, 18, 225. https://doi.org/10.3390/md18040225
26Mitishamba database1,095Derese, Solomon., Ndakala, Albert .,Rogo, Michael., Maynim, cholastica and Oyim, James (2015). Mitishamba database: a web based in silico database of natural products from Kenya plants. The 16th symposium of the natural products reseach network for eastern and central Africa (NAPRECA) 31st August to 3rd September 2015 Arusha, Tanzania http://erepository.uonbi.ac.ke/handle/11295/92273
27NANPDB (Natural Products from Northern African Sources)7,482Fidele Ntie-Kang, Kiran K. Telukunta, Kersten Döring, Conrad V. Simoben, Aurélien F. A. Moumbock, Yvette I. Malange, Leonel E. Njume, Joseph N. Yong, Wolfgang Sippl, and Stefan Günther Journal of Natural Products 2017 80 (7), 2067-2076 DOI: 10.1021/acs.jnatprod.7b00283 https://doi.org/10.1021/acs.jnatprod.7b00283
28NCI DTP data419Natural products are a sebset of NCI DTP data https://wiki.nci.nih.gov/display/NCIDTPdata/Compound+Sets
29NPACT1,572Manu Mangal, Parul Sagar, Harinder Singh, Gajendra P. S. Raghava, Subhash M. Agarwal, NPACT: Naturally Occurring Plant-based Anti-cancer Compound-Activity-Target database, Nucleic Acids Research, Volume 41, Issue D1, 1 January 2013, Pages D1124–D1129, https://doi.org/10.1093/nar/gks1047
30NPASS96,173Xian Zeng, Peng Zhang, Weidong He, Chu Qin, Shangying Chen, Lin Tao, Yali Wang, Ying Tan, Dan Gao, Bohua Wang, Zhe Chen, Weiping Chen, Yu Yang Jiang, Yu Zong Chen, NPASS: natural product activity and species source database for natural product research, discovery and tool development, Nucleic Acids Research, Volume 46, Issue D1, 4 January 2018, Pages D1217–D1222, https://doi.org/10.1093/nar/gkx1026
31NPAtlas36,395Jeffrey A. van Santen, Grégoire Jacob, Amrit Leen Singh, Victor Aniebok, Marcy J. Balunas, Derek Bunsko, Fausto Carnevale Neto, Laia Castaño-Espriu, Chen Chang, Trevor N. Clark, Jessica L. Cleary Little, David A. Delgadillo, Pieter C. Dorrestein, Katherine R. Duncan, Joseph M. Egan, Melissa M. Galey, F.P. Jake Haeckl, Alex Hua, Alison H. Hughes, Dasha Iskakova, Aswad Khadilkar, Jung-Ho Lee, Sanghoon Lee, Nicole LeGrow, Dennis Y. Liu, Jocelyn M. Macho, Catherine S. McCaughey, Marnix H. Medema, Ram P. Neupane, Timothy J. O’Donnell, Jasmine S. Paula, Laura M. Sanchez, Anam F. Shaikh, Sylvia Soldatou, Barbara R. Terlouw, Tuan Anh Tran, Mercia Valentine, Justin J. J. van der Hooft, Duy A. Vo, Mingxun Wang, Darryl Wilson, Katherine E. Zink, and Roger G. Linington ACS Central Science 2019 5 (11), 1824-1833 DOI: 10.1021/acscentsci.9b00806 https://doi.org/10.1021/acscentsci.9b00806
32NPCARE1,446Choi, H., Cho, S.Y., Pak, H.J. et al. NPCARE: database of natural products and fractional extracts for cancer regulation. J Cheminform 9, 2 (2017). https://doi.org/10.1186/s13321-016-0188-5
33NPEdia49,597Takeshi Tomiki, Tamio Saito, Masashi Ueki, Hideaki Konno, Takeo Asaoka, Ryuichiro Suzuki, Masakazu Uramoto, Hideaki Kakeya, Hiroyuki Osada, [Special Issue: Fact Databases and Freewares] RIKEN Natural Products Encyclopedia (RIKEN NPEdia),a Chemical Database of RIKEN Natural Products Depository (RIKEN NPDepo), Journal of Computer Aided Chemistry, 2006, Volume 7, Pages 157-162, Released on J-STAGE September 15, 2006, Online ISSN 1345-8647, https://doi.org/10.2751/jcac.7.157
34NuBBEDB2,215Pilon, A.C., Valli, M., Dametto, A.C. et al. NuBBEDB: an updated database to uncover chemical and biological information from Brazilian biodiversity. Sci Rep 7, 7215 (2017). https://doi.org/10.1038/s41598-017-07451-x
35p-ANAPL533Fidele Ntie-Kang ,Pascal Amoa Onguéné ,Ghislain W. Fotso,Kerstin Andrae-Marobela ,Merhatibeb Bezabih,Jean Claude Ndom,Bonaventure T. Ngadjui,Abiodun O. Ogundaini,Berhanu M. Abegaz,Luc Mbaze Meva’a Published: March 5, 2014 https://doi.org/10.1371/journal.pone.0090655
36Phenol-explorer742Joseph A. Rothwell, Jara Perez-Jimenez, Vanessa Neveu, Alexander Medina-Remón, Nouha M'Hiri, Paula García-Lobato, Claudine Manach, Craig Knox, Roman Eisner, David S. Wishart, Augustin Scalbert, Phenol-Explorer 3.0: a major update of the Phenol-Explorer database to incorporate data on the effects of food processing on polyphenol content, Database, Volume 2013, 2013, bat070, https://doi.org/10.1093/database/bat070
37PubChem NPs3,533Natural products are a sebset of PubChem NPs https://pubchem.ncbi.nlm.nih.gov/substance/251960601
38ReSpect4,854Yuji Sawada, Ryo Nakabayashi, Yutaka Yamada, Makoto Suzuki, Muneo Sato, Akane Sakata, Kenji Akiyama, Tetsuya Sakurai, Fumio Matsuda, Toshio Aoki, Masami Yokota Hirai, Kazuki Saito, RIKEN tandem mass spectral database (ReSpect) for phytochemicals: A plant-specific MS/MS-based data resource and database, Phytochemistry, Volume 82, 2012, Pages 38-45, ISSN 0031-9422, https://doi.org/10.1016/j.phytochem.2012.07.007.
39SANCDB995Hatherley, R., Brown, D.K., Musyoka, T.M. et al. SANCDB: a South African natural compound database. J Cheminform 7, 29 (2015). https://doi.org/10.1186/s13321-015-0080-8
40Seaweed Metabolite Database (SWMD)1,075Davis & Vasanthi, Bioinformation 5(8): 361-364 (2011) https://www.bioinformation.net/005/007900052011.htm
41Specs Natural Products744Natural products are a sebset of Specs Natural Products https://www.specs.net/index.php
42Spektraris NMR248Justin T. Fischedick, Sean R. Johnson, Raymond E.B. Ketchum, Rodney B. Croteau, B. Markus Lange, NMR spectroscopic search module for Spektraris, an online resource for plant natural product identification – Taxane diterpenoids from Taxus×media cell suspension cultures as a case study, Phytochemistry, Volume 113, 2015, Pages 87-95, ISSN 0031-9422, https://doi.org/10.1016/j.phytochem.2014.11.020.
43StreptomeDB6,522Aurélien F A Moumbock, Mingjie Gao, Ammar Qaseem, Jianyu Li, Pascal A Kirchner, Bakoh Ndingkokhar, Boris D Bekono, Conrad V Simoben, Smith B Babiaka, Yvette I Malange, Florian Sauter, Paul Zierep, Fidele Ntie-Kang, Stefan Günther, StreptomeDB 3.0: an updated compendium of streptomycetes natural products, Nucleic Acids Research, Volume 49, Issue D1, 8 January 2021, Pages D600–D604, https://doi.org/10.1093/nar/gkaa868
44Super Natural II325,149Priyanka Banerjee, Jevgeni Erehman, Björn-Oliver Gohlke, Thomas Wilhelm, Robert Preissner, Mathias Dunkel, Super Natural II—a database of natural products, Nucleic Acids Research, Volume 43, Issue D1, 28 January 2015, Pages D935–D939, https://doi.org/10.1093/nar/gku886
45TCMDB@Taiwan (Traditional Chinese Medicine database)58,401Calvin Yu-Chian Chen Published: January 6, 2011 https://doi.org/10.1371/journal.pone.0015939
46TCMID (Traditional Chinese Medicine Integrated Database)32,038Xue R, Fang Z, Zhang M, Yi Z, Wen C, Shi T. TCMID: Traditional Chinese Medicine integrative database for herb molecular mechanism analysis. Nucleic Acids Res. 2013 Jan;41(Database issue):D1089-95. doi: 10.1093/nar/gks1100. Epub 2012 Nov 29. PMID: 23203875; PMCID: PMC3531123.
47TIPdb (database of Taiwan indigenous plants)8,838Chun-Wei Tung, Ying-Chi Lin, Hsun-Shuo Chang, Chia-Chi Wang, Ih-Sheng Chen, Jhao-Liang Jheng, Jih-Heng Li, TIPdb-3D: the three-dimensional structure database of phytochemicals from Taiwan indigenous plants, Database, Volume 2014, 2014, bau055, https://doi.org/10.1093/database/bau055
48TPPT (Toxic Plants–PhytoToxins)1,561Barbara F. Günthardt, Juliane Hollender, Konrad Hungerbühler, Martin Scheringer, and Thomas D. Bucheli Journal of Agricultural and Food Chemistry 2018 66 (29), 7577-7588 DOI: 10.1021/acs.jafc.8b01639 https://pubs.acs.org/doi/10.1021/acs.jafc.8b01639
49UEFS (Natural Products Databse of the UEFS)503Natural products are a sebset of UEFS (Natural Products Databse of the UEFS) https://zinc12.docking.org/catalogs/uefsnp
50UNPD (Universal Natural Products Database)213,210Jiangyong Gu,Yuanshen Gui,Lirong Chen ,Gu Yuan,Hui-Zhe Lu,Xiaojie Xu Published: April 25, 2013 https://doi.org/10.1371/journal.pone.0062839
51VietHerb5,150Thanh-Hoang Nguyen-Vo, Tri Le, Duy Pham, Tri Nguyen, Phuc Le, An Nguyen, Thanh Nguyen, Thien-Ngan Nguyen, Vu Nguyen, Hai Do, Khang Trinh, Hai Trong Duong, and Ly Le Journal of Chemical Information and Modeling 2019 59 (1), 1-9 DOI: 10.1021/acs.jcim.8b00399 https://pubs.acs.org/doi/10.1021/acs.jcim.8b00399
52ZINC NP85,201Teague Sterling and John J. Irwin Journal of Chemical Information and Modeling 2015 55 (11), 2324-2337 DOI: 10.1021/acs.jcim.5b00559 https://doi.org/10.1021/acs.jcim.5b00559
53CyanoMetNP2,113Jones MR, Pinto E, Torres MA, Dörr F, Mazur-Marzec H, Szubert K, Tartaglione L, Dell'Aversano C, Miles CO, Beach DG, McCarron P, Sivonen K, Fewer DP, Jokela J, Janssen EM. CyanoMetDB, a comprehensive public database of secondary metabolites from cyanobacteria. Water Res. 2021 May 15;196:117017. doi: 10.1016/j.watres.2021.117017. Epub 2021 Mar 8. PMID: 33765498.
54DrugBankNP9,283Wishart DS, Feunang YD, Guo AC, Lo EJ, Marcu A, Grant JR, Sajed T, Johnson D, Li C, Sayeeda Z, Assempour N, Iynkkaran I, Liu Y, Maciejewski A, Gale N, Wilson A, Chin L, Cummings R, Le D, Pon A, Knox C, Wilson M. DrugBank 5.0: a major update to the DrugBank database for 2018. Nucleic Acids Res. 2017 Nov 8. doi: 10.1093/nar/gkx1037.
55Australian natural products21,591Saubern, Simon; Shmaylov, Alex; Locock, Katherine; McGilvery, Don; Collins, David (2023): Australian Natural Products dataset. v5. CSIRO. Data Collection. https://doi.org/10.25919/v8wq-mr81
56EMNPD6,145Xu, HQ., Xiao, H., Bu, JH. et al. EMNPD: a comprehensive endophytic microorganism natural products database for prompt the discovery of new bioactive substances. J Cheminform 15, 115 (2023). https://doi.org/10.1186/s13321-023-00779-9
57ANPDB7,4821) Pharmacoinformatic investigation of medicinal plants from East Africa Conrad V. Simoben, Ammar Qaseem, Aurélien F. A. Moumbock, Kiran K. Telukunta, Stefan Günther, Wolfgang Sippl, and Fidele Ntie-Kang Molecular Informatics 2020 DOI: 10.1002/minf.202000163 https://doi.org/10.1002/minf.202000163 2) NANPDB: A Resource for Natural Products from Northern African Sources Fidele Ntie-Kang, Kiran K. Telukunta, Kersten Döring, Conrad V. Simoben, Aurélien F. A. Moumbock, Yvette I. Malange, Leonel E. Njume, Joseph N. Yong, Wolfgang Sippl, and Stefan Günther Journal of Natural Products 2017 DOI: 10.1021/acs.jnatprod.7b00283 https://pubs.acs.org/doi/10.1021/acs.jnatprod.7b00283
58Phyto4Health3,175Nikita Ionov, Dmitry Druzhilovskiy, Dmitry Filimonov, and Vladimir Poroikov Journal of Chemical Information and Modeling 2023 63 (7), 1847-1851 DOI: 10.1021/acs.jcim.2c01567 https://pubs.acs.org/doi/10.1021/acs.jcim.2c01567
59Piella DB65Natural products are a sebset of Piella DB https://micro.biol.ethz.ch/research/piel.html
60Watermelon1,526Natural products are a sebset of Watermelon https://watermelon.naturalproducts.net/
61Latin America dataset12,959Gómez-García A, Jiménez DAA, Zamora WJ, Barazorda-Ccahuana HL, Chávez-Fumagalli MÁ, Valli M, Andricopulo AD, Bolzani VDS, Olmedo DA, Solís PN, Núñez MJ, Rodríguez Pérez JR, Valencia Sánchez HA, Cortés Hernández HF, Medina-Franco JL. Navigating the Chemical Space and Chemical Multiverse of a Unified Latin American Natural Product Database: LANaPDB. Pharmaceuticals (Basel). 2023 Sep 30;16(10):1388. doi: 10.3390/ph16101388. PMID: 37895859; PMCID: PMC10609821.
62CMNPD31,561Chuanyu Lyu, Tong Chen, Bo Qiang, Ningfeng Liu, Heyu Wang, Liangren Zhang, Zhenming Liu, CMNPD: a comprehensive marine natural products database towards facilitating drug discovery from the ocean, Nucleic Acids Research, Volume 49, Issue D1, 8 January 2021, Pages D509–D515, https://doi.org/10.1093/nar/gkaa763
63Supernatural31,203,509Natural products are a sebset of Supernatural3 https://academic.oup.com/nar/article/51/D1/D654/6833249
Total Entries2,551,803
+ \ No newline at end of file diff --git a/docs/.vitepress/dist/structure-search.html b/docs/.vitepress/dist/structure-search.html index a5454040..ea2581d1 100644 --- a/docs/.vitepress/dist/structure-search.html +++ b/docs/.vitepress/dist/structure-search.html @@ -3,54 +3,22 @@ - Markdown Extension Examples | COCONUT Docs + COCONUT online searches using Structures | COCONUT Docs - + - - - - - + + + + + -
Skip to content
- +
Skip to content
+ \ No newline at end of file diff --git a/docs/.vitepress/dist/submission-api.html b/docs/.vitepress/dist/submission-api.html index 1b003a0b..46ab9d7c 100644 --- a/docs/.vitepress/dist/submission-api.html +++ b/docs/.vitepress/dist/submission-api.html @@ -6,18 +6,18 @@ Markdown Extension Examples | COCONUT Docs - + - - - - - + + + + + -
Skip to content

Markdown Extension Examples

This page demonstrates some of the built-in markdown extensions provided by VitePress.

Syntax Highlighting

VitePress provides Syntax Highlighting powered by Shiki, with additional features like line-highlighting:

Input

```js{4}
+    
Skip to content

Markdown Extension Examples

This page demonstrates some of the built-in markdown extensions provided by VitePress.

Syntax Highlighting

VitePress provides Syntax Highlighting powered by Shiki, with additional features like line-highlighting:

Input

```js{4}
 export default {
   data () {
     return {
@@ -49,8 +49,8 @@
 
 ::: details
 This is a details block.
-:::

Output

INFO

This is an info box.

TIP

This is a tip.

WARNING

This is a warning.

DANGER

This is a dangerous warning.

Details

This is a details block.

More

Check out the documentation for the full list of markdown extensions.

- +:::

Output

INFO

This is an info box.

TIP

This is a tip.

WARNING

This is a warning.

DANGER

This is a dangerous warning.

Details

This is a details block.

More

Check out the documentation for the full list of markdown extensions.

+ \ No newline at end of file diff --git a/docs/.vitepress/dist/substructure-search.html b/docs/.vitepress/dist/substructure-search.html new file mode 100644 index 00000000..9934dcdb --- /dev/null +++ b/docs/.vitepress/dist/substructure-search.html @@ -0,0 +1,24 @@ + + + + + + COCONUT online - Substructure Search | COCONUT Docs + + + + + + + + + + + + + +
Skip to content
+ + + + \ No newline at end of file diff --git a/docs/advanced-search.md b/docs/advanced-search.md index 8e55eb8a..d30962bd 100644 --- a/docs/advanced-search.md +++ b/docs/advanced-search.md @@ -1,85 +1 @@ -# Markdown Extension Examples - -This page demonstrates some of the built-in markdown extensions provided by VitePress. - -## Syntax Highlighting - -VitePress provides Syntax Highlighting powered by [Shiki](https://github.com/shikijs/shiki), with additional features like line-highlighting: - -**Input** - -```` -```js{4} -export default { - data () { - return { - msg: 'Highlighted!' - } - } -} -``` -```` - -**Output** - -```js{4} -export default { - data () { - return { - msg: 'Highlighted!' - } - } -} -``` - -## Custom Containers - -**Input** - -```md -::: info -This is an info box. -::: - -::: tip -This is a tip. -::: - -::: warning -This is a warning. -::: - -::: danger -This is a dangerous warning. -::: - -::: details -This is a details block. -::: -``` - -**Output** - -::: info -This is an info box. -::: - -::: tip -This is a tip. -::: - -::: warning -This is a warning. -::: - -::: danger -This is a dangerous warning. -::: - -::: details -This is a details block. -::: - -## More - -Check out the documentation for the [full list of markdown extensions](https://vitepress.dev/guide/markdown). +# Coming Soon diff --git a/docs/api-examples.md b/docs/api-examples.md new file mode 100644 index 00000000..6bd8bb5c --- /dev/null +++ b/docs/api-examples.md @@ -0,0 +1,49 @@ +--- +outline: deep +--- + +# Runtime API Examples + +This page demonstrates usage of some of the runtime APIs provided by VitePress. + +The main `useData()` API can be used to access site, theme, and page data for the current page. It works in both `.md` and `.vue` files: + +```md + + +## Results + +### Theme Data +
{{ theme }}
+ +### Page Data +
{{ page }}
+ +### Page Frontmatter +
{{ frontmatter }}
+``` + + + +## Results + +### Theme Data +
{{ theme }}
+ +### Page Data +
{{ page }}
+ +### Page Frontmatter +
{{ frontmatter }}
+ +## More + +Check out the documentation for the [full list of runtime APIs](https://vitepress.dev/reference/runtime-api#usedata). diff --git a/docs/browse.md b/docs/browse.md new file mode 100644 index 00000000..c4f19622 --- /dev/null +++ b/docs/browse.md @@ -0,0 +1,50 @@ +# COCONUT online - Browse + +![Cheming and Computational Metabolomics logo](/search-page.png) + + +# Molecule Search Functionality + +Our advanced molecule search engine provides a robust set of features for users to search for and identify chemical compounds through various methods. Below is a detailed overview of the search functionalities available. + +### Simple Search +- **Molecule Name:** Users can search for molecules by entering any widely recognized name, such as IUPAC, trivial, or synonym names. The search engine will identify compounds that contain the inputted name in their title. + +### InChI-IUPAC (International Chemical Identifier) +- **InChI Search:** The InChI is a non-proprietary identifier for chemical substances that is widely used in electronic data sources. It expresses chemical structures in terms of atomic connectivity, tautomeric state, isotopes, stereochemistry, and electronic charge in order to produce a string of machine-readable characters unique to the particular molecule. Therefore, when InChl name is entered, the software output will be a unique inputted compound with all required characteristics. + +### InChIKey Search +- **InChIKey:** The InChIKey is a 25-character hashed version of the full InChI, designed to allow for easy web searches of chemical compounds. InChIKeys consist of 14 characters resulting from a hash of the connectivity information from the full InChI string, followed by a hyphen, followed by 8 characters resulting from a hash of the remaining layers of the InChI, followed by a single character indicating the version of InChI used, followed by single checksum character. Therefore, when the user enters the InChl key, the software output will be a single compound that is recognized by a particular InChl key. + +### Molecular Formula Search +- **Molecular Formula:** The molecular formula is a type of chemical formula that shows the kinds of atoms and the number of each kind in a single molecule of a particular compound. The molecular formula doesn’t show any information about the molecule structure. The structures and characteristics of compounds with the same molecular formula may vary significantly. Hence, by entering a molecular formula into the search bar, the software output will be a group of compounds with specified atoms and their numbers within a single molecule. + +### Coconut ID +- **Unique Identifier:** Each natural product in our database is assigned a unique Coconut ID, which can be used for quick and precise searches exclusively on COCONUT. + +### Structure Search +- **Visual Structure Search:** Users can search for compounds by providing a visual depiction of their structure. The vast number of functional groups often causes issues to name the compound appropriately. Therefore, usage of structure search is a great way to discover all characteristics of a compound just by providing its visual depiction. The search engine recognizes InChI and canonical SMILES formats. + +### Exact Match Search +- **InChI Structural Formulas:** The search engine recognizes different types of InChI structural formulas, including expanded, condensed, and skeletal formulas. + >- **Expanded Structural Formula**: Shows all of the bonds connecting all of the atoms within the compound. + >- **Condensed Structural Formula**: Shows the symbols of atoms in order as they appear in the molecule's structure while most of the bond dashes are excluded. The vertical bonds are always excluded, while horizontal bonds may be included to specify polyatomic groups. If there is a repetition of a polyatomic group in the chain, parentheses are used to enclose the polyatomic group. The subscript number on the right side of the parentheses represents the number of repetitions of the particular group. The proper condensed structural formula should be written on a single horizontal line without branching in any direction. + >- **Skeletal Formula**: Represents the carbon skeleton and function groups attached to it. In the skeletal formula, carbon atoms and hydrogen atoms attached to them are not shown. The bonds between carbon lines are presented as well as bonds to functional groups. + +- **Canonical SMILES Structural Formulas:** The canonical SMILES structure is a unique string that can be used as a universal identifier for a specific chemical structure including stereochemistry of a compound. Therefore, canonical SMILES provides a unique form for any particular molecule. The user can choose a convenient option and then proceed with the structure drawing. + > The 3D structure of the molecule is commonly used for the description of simple molecules. In this type of structure drawing, all types of covalent bonds are presented with respect to their spatial orientation. The usage of models is the best way to pursue a 3D structure drawing. The valence shell repulsion pair theory proposes five main models of simple molecules: linear, trigonal planar, tetrahedral, trigonal bipyramidal, and octahedral. + + +### Substructure Search +- **Partial Structure Search:** Users can search for compounds by entering a known substructure using InChI or SMILES formats. The engine supports three algorithms: + >- **Default (Ullmann Algorithm):** Utilizes a backtracking procedure with a refinement step to reduce the search space. This refinement is the most important step of the algorithm. It evaluates the surrounding of every node in the database molecules and compares them with the entered substructure. + >- **Depth-First (DF) Pattern:** The DF algorithm executes the search operation of the entered molecule in a depth-first manner (bond by bond). Therefore, this algorithm utilizes backtracking search iterating over the bonds of entered molecules. + >- **Vento-Foggia Algorithm:** The Vento-Foggia algorithm iteratively extends a partial solution using a set of feasibility criteria to decide whether to extend or backtrack. In the Ullmann algorithm, the node-atom mapping is fixed in every step. In contrast, the Vento-Foggia algorithm iteratively adds node-atom pairs to a current solution. In that way, this algorithm directly discovers the topology of the substructure and seeks for all natural products that contain the entered substructure. + +### Similarity Search +- **Tanimoto Threshold:** The search engine finds compounds with a similarity score (Sab) greater than or equal to the specified Tanimoto coefficient. This allows users to find compounds closely related to the query structure. + +### Advanced Search +- **Molecular Descriptors and Structural Properties:** The advanced search feature enables users to search by specific molecular descriptors, which quantify physical and chemical characteristics. Users can also choose to search within specific data sources compiled in our database. + +These search functionalities are designed to cater to various needs, from simple name-based searches to complex structural and substructural queries, ensuring comprehensive and accurate retrieval of chemical information. diff --git a/docs/collection-submission.md b/docs/collection-submission.md new file mode 100644 index 00000000..c3b81d63 --- /dev/null +++ b/docs/collection-submission.md @@ -0,0 +1,82 @@ + +# Submitting a Collection + +Submitting a collection of compounds to the COCONUT platform is a two-step process: + +1. **Creation of a Collection** +2. **Uploading Compounds into the Created Collection** + +## Step 1: Creation of a Collection + +Before uploading a compound collection onto the COCONUT platform, you need to create a collection. + +1. **Login to your COCONUT account.** +2. **Navigate to the Collections Section:** + - On the left pane, select **"Collections."** +3. **Create a New Collection:** + - Inside the Collections page, click the **"New Collection"** button at the top right. +4. **Fill the "Create Collection" Form:** + - **Title:** Provide a title for the collection. + - **Slug:** Auto-generated by the COCONUT platform. No need to fill this field. + - **Description:** Provide a description of this collection of compounds. + - **URL:** If the collection is from a source available online, provide the URL *(for reference for our Curators, this does not import the compounds onto COCONUT).* + - **Tags:** Enter comma-separated keywords to identify this collection during searches. + - **Identifier:** Provide a unique identifier for the collection. + - **License:** Choose a license from the dropdown menu. +5. **Submit the Form:** + - Click **"Create"** to create the collection or **"Create & create another"** if you have another collection to submit. + +This creates an empty collection. To upload molecules/compounds, proceed with the steps below. + +## Step 2: Uploading Compounds into the Created Collection + +After creating an empty collection, an **"Entries"** pane becomes available at the bottom. + +1. **Initiate the Import Process:** + - Click on **"Import Entries"** on the left of the "Entries" pane. +2. **Download the Template:** + - In the pop-up window, download the template CSV file, which specifies the fields expected by COCONUT in a comma-separated format. Provide the following details for each molecule: + - **canonical_smiles:** Canonical SMILES notation of the chemical structure. + - **reference_id:** Reference ID as reported in a source database/dataset. + - **name:** IUPAC name/trivial name as reported in the original publication or source. + > **Example:** [9-fluoro-11-hydroxy-17-(2-hydroxyacetyl)-10,13,16-trimethyl-3-oxo-6,7,8,11,12,14,15,16-octahydrocyclopenta[a]phenanthren-17-yl] pentanoate + - **doi:** DOI of the original publication where the molecule is first reported. + > **Example:** doi.org/10.1021/ci5003697 + - **link:** Database link of the molecule. + - **organism:** Scientific name of the organism in which the compound is found. + > **Example:** Tanacetum parthenium + - **organism_part:** The part of the organism in which the compound is found. + > **Example:** Eyes + - **COCONUT_id:** Auto-generated by the COCONUT platform. No need to fill this field. + - **mol_filename:** If a 2D/3D molfile is present for the given molecule, mention its name. + - **structural_comments:** Comments regarding the structure, if any. + - **geo_location:** Geographical location where this molecule is found. + > **Example:** Rajahmundry, India + - **location:** Specific location within the geographical area where the molecule is found. + > **Example:** Air, Water, Soil, etc. +3. **Upload the CSV File:** + - In the same pop-up window from step 2, click **"Upload the CSV"** file with all the details of the compounds. Choose the file. +4. **Verify Column Mapping:** + - The pop-up window will show expected columns on the right and detected columns from the CSV file on the left. Ensure the mapping is correct. Use the dropdowns for any corrections and click **"Import."** + > **Tip:** If you have already uploaded the CSV file before and made changes to the details of molecules in the CSV file and want to upload the modified CSV file, you need to choose **"Update existing records"** so that the respective molecules will get updated with the new data provided. +5. **Start the Import Process:** + - You should see an **"Import started"** notification at the top left. + > **Note for Local Development:** Start Laravel Horizon to process the queued compounds: + ```bash + sail artisan horizon +6. **Check the Import Status:** + - Once the processing completes, you should see the compounds listed along with their status **"SUBMITTED."** + > **Warning:** For statuses other than **"SUBMITTED,"** recheck the corresponding compound's details in the CSV and re-upload it, repeating step 4. + +7. **Process the Compounds:** + - Even if one compound in the uploaded list has the status **"SUBMITTED,"** you will see the **"Process"** button along with the **"Import entries"** button. Click this to process the submitted compounds. + +8. **Complete the Processing:** + - Wait for the processing to finish. The status updates to **"PASSED"** for successfully processed entries and **"REJECTED"** for those that failed processing. + - For successfully processed compounds, check the **"Citations"** and **"Molecules"** tabs to ensure everything is properly processed. + - The **"Audits"** tab will have a trail of who did what and when on the Collection. + > **Warning:** For failed entries, recheck the corresponding compound's details in the CSV and re-upload it, repeating step 4. + +9. **Publish the Compounds:** + - If at least one compound passed the process, you will see the **"Publish"** button. Clicking this will publish the compounds that passed processing. + > **Info:** After publishing, the collection status changes from **"DRAFT"** to **"PUBLISHED."** Only the compounds with status **"PASSED"** will be visible to everyone on the COCONUT platform. diff --git a/docs/db-schema.md b/docs/db-schema.md index 9511aee0..acb7e192 100644 --- a/docs/db-schema.md +++ b/docs/db-schema.md @@ -1,3 +1,4 @@ # COCONUT Database Schema -![ontology-custom-element-why](./public/graph.png) \ No newline at end of file +

+ \ No newline at end of file diff --git a/docs/draw-structure.md b/docs/draw-structure.md new file mode 100644 index 00000000..47f8735b --- /dev/null +++ b/docs/draw-structure.md @@ -0,0 +1,4 @@ +# COCONUT online - Draw Structure + + + diff --git a/docs/index.md b/docs/index.md index 028b8813..347081dc 100644 --- a/docs/index.md +++ b/docs/index.md @@ -3,27 +3,23 @@ layout: home hero: - name: "COCONUT" - text: "COlleCtion of Open Natural prodUcTs" - tagline: An aggregated dataset of elucidated and predicted NPs collected from open sources and a web interface to browse, search and easily and quickly download NPs. + name: "COCONUT Docs" + text: "" + tagline: The Comprehensive Resource for Open Natural Products actions: - theme: brand - text: Documentation + text: Get started link: /introduction - theme: alt - text: Submission Guides - link: /web-submission + text: Search Compounds + link: https://coconut.cheminf.studio/search features: - - title: Curation - details: Community driven curation, while maintaining the quality of a expert curators. - - title: Submission - details: Submit new compounds through Web, API, CLI or Chrome extension. Integrate in your workflow at ease. - - title: Bugs / Issue tracking - details: Report issues with data or bugs in our web application and get help from the community to resolve them. - - title: API - details: Search, retrieve or submit compounds programatically. Integrate COCONUT API's in your LIMS. - - title: Rich Annotations - details: Ontology driven annotations and provenance information. + - title: Online Submission and Curation + details: Allows users to contribute new data, ensuring the database remains current and comprehensive. + - title: Search and Filter + details: Advanced search and filtering options to find compounds based on specific criteria easily. + - title: API Access + details: Provides API access for seamless integration with other tools and databases. --- diff --git a/docs/installation.md b/docs/installation.md index 39e97dcf..292ecde4 100644 --- a/docs/installation.md +++ b/docs/installation.md @@ -4,7 +4,8 @@ Before you begin, make sure you have the following prerequisites installed on your system: -- PHP (>= 8.1.2) +- PHP (>= 8.3) +- Node - Composer - Docker @@ -13,23 +14,29 @@ Before you begin, make sure you have the following prerequisites installed on yo Clone the COCONUT project repository from Github using the following command: ```bash -git clone https://github.com/Steinbeck-Lab/coconut-2.0 +git clone https://github.com/Steinbeck-Lab/coconut.git ``` ## Step 2: Navigate to Project Directory ```bash -cd coconut-2.0 +cd coconut ``` ## Step 3: Install Dependencies -Install the project dependencies using Composer: +Install the PHP dependencies using Composer: ``` composer install ``` +Install the JS dependencies using NPM: + +``` +npm install +``` + ## Step 4: Configure Environment Variables ```bash diff --git a/docs/introduction.md b/docs/introduction.md index 4aabb6e7..8192f882 100644 --- a/docs/introduction.md +++ b/docs/introduction.md @@ -1,4 +1,4 @@ -# COCONUT (COlleCtion of Open Natural prodUcTs) Online +# COCONUT (Collection of Open Natural Products) Online [COlleCtion of Open Natural prodUcTs (COCONUT)](https://dev.coconut.naturalproducts.net) is an aggregated dataset that comprises elucidated and predicted natural products (NPs) sourced from open repositories. It also provides a user-friendly web interface for browsing, searching, and efficiently downloading NPs. The database encompasses more than 50 open NP resources, granting unrestricted access to the data without any associated charges. Each entry in the database represents a "flat" NP structure and is accompanied by information on its known stereochemical forms, relevant literature, producing organisms, natural geographical distribution, and [precomputed](https://api.naturalproducts.net/docs) molecular properties. NPs are small bioactive molecules produced by living organisms, holding potential applications in pharmacology and various industries. The significance of these compounds has fueled global interest in NP research across diverse fields. Consequently, there has been a proliferation of generalistic and specialized NP databases over the years. Nevertheless, there is currently no comprehensive online resource that consolidates all known NPs in a single location. Such a resource would greatly facilitate NP research, enabling computational screening and other in silico applications. @@ -17,7 +17,7 @@ - Citing paper: ```md Sorokina, M., Merseburger, P., Rajan, K. et al. -COCONUT online: COlleCtion of Open Natural prodUcTs database. +COCONUT online: Collection of Open Natural Products database. J Cheminform 13, 2 (2021). https://doi.org/10.1186/s13321-020-00478-9 ``` @@ -27,4 +27,12 @@ https://doi.org/10.1186/s13321-020-00478-9 Venkata, C., Sharma, N., Schaub, J., Steinbeck, C., & Rajan, K. (2023). COCONUT-2.0 (Version v0.0.1 - prerelease) [Computer software]. https://doi.org/10.5281/zenodo.?? -``` \ No newline at end of file +``` + +## Acknowledgments and Maintainence + +Cheminformatics Microservice and [Natural Products Online](https://naturalproducts.net/) are developed and maintained by the [Steinbeck group](https://cheminf.uni-jena.de/) at the [Friedrich Schiller University](https://www.uni-jena.de/en/) Jena, Germany. + +Funded by [ChemBioSys](https://docs.api.naturalproducts.net/introduction.html) (Project INF) - Project number: 239748522 - SFB 1127. + +![Cheming and Computational Metabolomics logo](/CheminfGit.png) \ No newline at end of file diff --git a/docs/issues.md b/docs/issues.md index d5350c63..7d73fc1e 100644 --- a/docs/issues.md +++ b/docs/issues.md @@ -6,7 +6,7 @@ outline: deep ## Feature Request -Thank you for your interest in improving COCONUT Database! Please use the template below to submit your feature request either by email or on our [github](https://github.com/Steinbeck-Lab/coconut-2.0/issues). We appreciate your feedback and suggestions. +Thank you for your interest in improving COCONUT Database! Please use the template below to submit your feature request either by email or on our [github](https://github.com/Steinbeck-Lab/coconut/issues). We appreciate your feedback and suggestions. **Feature Request Template:** @@ -48,7 +48,7 @@ Thank you for taking the time to submit your feature request. We value your inpu ## Report Issues/Bugs -We appreciate your help in improving our product. If you have encountered any issues or bugs, please use the template below to report them either by email or on our [github](https://github.com/NFDI4Chem/ontology-elements/issues). Your feedback is valuable to us in ensuring a smooth user experience. +We appreciate your help in improving our product. If you have encountered any issues or bugs, please use the template below to report them either by email or on our [github](https://github.com/Steinbeck-Lab/coconut/issues). Your feedback is valuable to us in ensuring a smooth user experience. **Issue Template:** diff --git a/docs/license.md b/docs/license.md index 45667403..85109269 100644 --- a/docs/license.md +++ b/docs/license.md @@ -1,4 +1,8 @@ -# MIT License +# Code and Data License Information + +## Code + +The code provided in this repository is licensed under the MIT License: Copyright (c) 2023 Steinbeck-Lab @@ -18,4 +22,18 @@ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. \ No newline at end of file +SOFTWARE. + + +## Data + +The data provided in this repository is released under the [CC0 1.0 Universal (CC0 1.0) Public Domain Dedication](https://creativecommons.org/publicdomain/zero/1.0/): + +CC0 1.0 Universal (CC0 1.0) Public Domain Dedication + +The person who associated a work with this deed has dedicated the work to the public domain by waiving all of his or her rights to the work worldwide under copyright law, including all related and neighboring rights, to the extent allowed by law. + +You can copy, modify, distribute and perform the work, even for commercial purposes, all without asking permission. + +The above copyright notice has been included as a courtesy to the public domain, but is not required by law. The person who associated the work with this deed makes no warranties about the work, and disclaims liability for all uses of the work, to the fullest extent permitted by applicable law. + diff --git a/docs/markdown-examples.md b/docs/markdown-examples.md new file mode 100644 index 00000000..f9258a55 --- /dev/null +++ b/docs/markdown-examples.md @@ -0,0 +1,85 @@ +# Markdown Extension Examples + +This page demonstrates some of the built-in markdown extensions provided by VitePress. + +## Syntax Highlighting + +VitePress provides Syntax Highlighting powered by [Shiki](https://github.com/shikijs/shiki), with additional features like line-highlighting: + +**Input** + +````md +```js{4} +export default { + data () { + return { + msg: 'Highlighted!' + } + } +} +``` +```` + +**Output** + +```js{4} +export default { + data () { + return { + msg: 'Highlighted!' + } + } +} +``` + +## Custom Containers + +**Input** + +```md +::: info +This is an info box. +::: + +::: tip +This is a tip. +::: + +::: warning +This is a warning. +::: + +::: danger +This is a dangerous warning. +::: + +::: details +This is a details block. +::: +``` + +**Output** + +::: info +This is an info box. +::: + +::: tip +This is a tip. +::: + +::: warning +This is a warning. +::: + +::: danger +This is a dangerous warning. +::: + +::: details +This is a details block. +::: + +## More + +Check out the documentation for the [full list of markdown extensions](https://vitepress.dev/guide/markdown). diff --git a/docs/multi-submission.md b/docs/multi-submission.md index 8e55eb8a..6796f68e 100644 --- a/docs/multi-submission.md +++ b/docs/multi-submission.md @@ -1,85 +1,2 @@ # Markdown Extension Examples -This page demonstrates some of the built-in markdown extensions provided by VitePress. - -## Syntax Highlighting - -VitePress provides Syntax Highlighting powered by [Shiki](https://github.com/shikijs/shiki), with additional features like line-highlighting: - -**Input** - -```` -```js{4} -export default { - data () { - return { - msg: 'Highlighted!' - } - } -} -``` -```` - -**Output** - -```js{4} -export default { - data () { - return { - msg: 'Highlighted!' - } - } -} -``` - -## Custom Containers - -**Input** - -```md -::: info -This is an info box. -::: - -::: tip -This is a tip. -::: - -::: warning -This is a warning. -::: - -::: danger -This is a dangerous warning. -::: - -::: details -This is a details block. -::: -``` - -**Output** - -::: info -This is an info box. -::: - -::: tip -This is a tip. -::: - -::: warning -This is a warning. -::: - -::: danger -This is a dangerous warning. -::: - -::: details -This is a details block. -::: - -## More - -Check out the documentation for the [full list of markdown extensions](https://vitepress.dev/guide/markdown). diff --git a/docs/public/CheminfGit.png b/docs/public/CheminfGit.png new file mode 100644 index 00000000..41d99ab2 Binary files /dev/null and b/docs/public/CheminfGit.png differ diff --git a/docs/public/dfg_logo_schriftzug_blau_foerderung_en.gif b/docs/public/dfg_logo_schriftzug_blau_foerderung_en.gif new file mode 100644 index 00000000..6c0c2bfd Binary files /dev/null and b/docs/public/dfg_logo_schriftzug_blau_foerderung_en.gif differ diff --git a/docs/public/search-page.png b/docs/public/search-page.png new file mode 100644 index 00000000..d89feb3f Binary files /dev/null and b/docs/public/search-page.png differ diff --git a/docs/report-submission.md b/docs/report-submission.md new file mode 100644 index 00000000..ce5a4d38 --- /dev/null +++ b/docs/report-submission.md @@ -0,0 +1,75 @@ +# Reporting Discrepancies: Compounds, Collections, Citations, or Organisms + +The COCONUT platform provides users with the ability to report discrepancies in compounds, collections, citations, or organisms. Multiple items can be reported at once, ensuring thorough feedback on any observed issues. If you come across any discrepancies, please follow the steps outlined below to submit a report. + +## Reporting Collections, Citations, or Organisms + +1. **Log in to your COCONUT account.** +2. In the dashboard's left pane, select **"Reports."** +3. On the Reports page, click the **"New Report"** button at the top right. +4. Complete the **"Create Report"** form: + - **Report Type:** Select the category of the item you wish to report. + - **Title:** Provide a concise title summarizing the issue. + - **Evidence/Comment:** Offer evidence or comments supporting your observation of the discrepancy. + - **URL:** Include any relevant links to substantiate your report. + - **Citations / Collections / Organisms:** Select the respective items you wish to report. + - For Molecules: The select option is currently unavailable. Instead, please provide the identifiers of the molecules, separated by commas. + - **Tags:** Add comma-separated keywords to facilitate easy search and categorization of your report. +5. Click **"Create"** to submit your report, or **"Create & create another"** if you have additional reports to submit. + +## Reporting Compounds + +There are two methods available for reporting compounds: + +### 1. Reporting from the Compound Page + +This method allows you to report a single compound directly from its detail page: + +1. On the COCONUT homepage, click **"Browse"** at the top of the page. +2. Locate and click on the compound you wish to report. +3. On the right pane, beneath the compound images, click **"Report this compound."** +4. Log in if prompted. +5. Complete the **"Create Report"** form: + - **Title:** Provide a concise title summarizing the issue. + - **Evidence/Comment:** Offer evidence or comments supporting your observation of the discrepancy. + - **URL:** Include any relevant links to substantiate your report. + - **Molecules:** This field will be pre-filled with the compound identifier. + - **Tags:** Add comma-separated keywords to facilitate easy search and categorization of your report. +6. Click **"Create"** to submit your report. + +### 2. Reporting from the Reports Page + +You can report one or more compounds from the Reports page: + +1. **Log in to your COCONUT account.** +2. In the dashboard's left pane, select **"Reports."** +3. On the Reports page, click the **"New Report"** button at the top right. +4. Complete the **"Create Report"** form: + - **Report Type:** Select **"Molecule."** + - **Title:** Provide a concise title summarizing the issue. + - **Evidence/Comment:** Offer evidence or comments supporting your observation of the discrepancy. + - **URL:** Include any relevant links to substantiate your report. + - **Molecules:** The select option is currently unavailable. Instead, provide the identifiers of the molecules, separated by commas (e.g., `CNP0335993,CNP0335993`). + - **Tags:** Add comma-separated keywords to facilitate easy search and categorization of your report. +5. Click **"Create"** to submit your report, or **"Create & create another"** if you have additional reports to submit. + +### 3. Reporting from the Molecules Table + +This method allows you to report one or more compounds directly from the Molecules table: + +1. **Log in to your COCONUT account.** +2. In the dashboard's left pane, select **"Molecules."** + - To submit a **single compound**: + 1. In the Molecules page, click on the ellipsis (three vertical dots) next to the molecule you wish to report. + - To submit **multiple compounds**: + 1. In the Molecules page, check the boxes next to the molecules you wish to report. + 2. Click on the **"Bulk actions"** button that appears at the top left of the table header. + 3. Select **"Report molecules"** from the dropdown menu. +3. You will be redirected to the Reports page, where the molecule identifiers will be pre-populated in the form. +4. Complete the **"Create Report"** form: + - **Title:** Provide a concise title summarizing the issue. + - **Evidence/Comment:** Offer evidence or comments supporting your observation of the discrepancy. + - **URL:** Include any relevant links to substantiate your report. + - **Molecules:** This field will be pre-filled with the compound identifier(s). + - **Tags:** Add comma-separated keywords to facilitate easy search and categorization of your report. +5. Click **"Create"** to submit your report. diff --git a/docs/similarity-search.md b/docs/similarity-search.md new file mode 100644 index 00000000..f64eddc1 --- /dev/null +++ b/docs/similarity-search.md @@ -0,0 +1,4 @@ +# COCONUT online - Similarity Structure + + + diff --git a/docs/single-submission.md b/docs/single-submission.md index 8e55eb8a..c7a3a9a1 100644 --- a/docs/single-submission.md +++ b/docs/single-submission.md @@ -1,85 +1,41 @@ -# Markdown Extension Examples +# Submitting a Single Compound -This page demonstrates some of the built-in markdown extensions provided by VitePress. +To submit a compound to the COCONUT platform, please follow the steps outlined below: -## Syntax Highlighting +## Steps to Submit a Compound -VitePress provides Syntax Highlighting powered by [Shiki](https://github.com/shikijs/shiki), with additional features like line-highlighting: +1. **Login to your COCONUT account.** -**Input** +2. **Navigate to the Molecules Section:** + - In the left pane, select **"Molecules."** -```` -```js{4} -export default { - data () { - return { - msg: 'Highlighted!' - } - } -} -``` -```` +3. **Initiate the Submission Process:** + - On the Molecules page, click the **"New Molecule"** button at the top right. -**Output** +4. **Complete the "Create Molecule" Form:** -```js{4} -export default { - data () { - return { - msg: 'Highlighted!' - } - } -} -``` + - **Name:** Enter the trivial name reported for the molecule in the original publication. + > **Example:** Betamethasone-17-valerate -## Custom Containers + - **Identifier:** This is auto-generated by the COCONUT platform. No need to fill this field. -**Input** + - **IUPAC Name:** Provide the systematic standardized IUPAC name (International Union of Pure and Applied Chemistry name) generated according to IUPAC regulations. + > **Example:** [9-fluoro-11-hydroxy-17-(2-hydroxyacetyl)-10,13,16-trimethyl-3-oxo-6,7,8,11,12,14,15,16-octahydrocyclopenta[a]phenanthren-17-yl] pentanoate -```md -::: info -This is an info box. -::: + - **Standard InChI:** Enter the standard InChI (International Chemical Identifier) generated using cheminformatics software. + > **Example:** InChI=1S/C27H37FO6/c1-5-6-7-23(33)34-27(22(32)15-29)16(2)12-20-19-9-8-17-13-18(30)10-11-24(17,3)26(19,28)21(31)14-25(20,27)4/h10-11,13,16,19-21,29,31H,5-9,12,14-15H2,1-4H3 -::: tip -This is a tip. -::: + - **Standard InChI Key:** Provide the standard InChI Key derived from the standard InChI. + > **Example:** SNHRLVCMMWUAJD-UHFFFAOYSA-N -::: warning -This is a warning. -::: + - **Canonical SMILES:** Enter the canonical SMILES (Simplified Molecular Input Line Entry System) representation of the molecule. + > **Example:** CCCCC(=O)OC1(C(=O)CO)C(C)CC2C3CCC4=CC(=O)C=CC4(C)C3(F)C(O)CC21C -::: danger -This is a dangerous warning. -::: + - **Murcko Framework:** This field will be auto-generated by the system and defines the core structure of the molecule. -::: details -This is a details block. -::: -``` + - **Synonyms:** Provide other names or identifiers by which the molecule is known. + > **Example:** Betamethasone 17 Valerate, SCHEMBL221479, .beta.-Methasone 17-valerate, SNHRLVCMMWUAJD-UHFFFAOYSA-N, STL451052, AKOS037482517, LS-15203, 9-Fluoro-11, 21-dihydroxy-16-methyl-3, 20-dioxopregna-1, 4-dien-17-yl pentanoate -**Output** - -::: info -This is an info box. -::: - -::: tip -This is a tip. -::: - -::: warning -This is a warning. -::: - -::: danger -This is a dangerous warning. -::: - -::: details -This is a details block. -::: - -## More - -Check out the documentation for the [full list of markdown extensions](https://vitepress.dev/guide/markdown). +5. **Submit the Form:** + - Click **"Create"** to submit your compound. + - If you have another compound to submit, click **"Create & create another."** \ No newline at end of file diff --git a/docs/sources.md b/docs/sources.md index 026bf0f9..3dc0e40c 100644 --- a/docs/sources.md +++ b/docs/sources.md @@ -1,59 +1,76 @@ # COCONUT online - Sources -Public databases and primary sources from which COCONUT was meticulously assembled. +## COCONUT database summary stats: -|Database name|Entries integrated in COCONUT|Latest resource URL | -|--------------------------------------------------------------------------------------------------------|-------------------------------------------------------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| -|AfroCancer |365 |Ntie-Kang F, Nwodo JN, Ibezim A, Simoben CV, Karaman B, Ngwa VF (2014) Molecular modeling of potential anticancer agents from African medicinal plants. J Chem Inf Model 54:2433–2450. https://doi.org/10.1021/ci5003697 | -|AfroDB |874 |Ntie-Kang F, Zofou D, Babiaka SB, Meudom R, Scharfe M, Lifongo LL (2013) AfroDb: a select highly potent and diverse natural product library from African medicinal plants. PLoS ONE 8:e78085 | -|AfroMalariaDB |252 |Onguéné PA, Ntie-Kang F, Mbah JA, Lifongo LL, Ndom JC, Sippl W (2014) The potential of anti-malarial compounds derived from African medicinal plants, part III: an in silico evaluation of drug metabolism and pharmacokinetics profiling. Org Med Chem Lett 4:6. https://doi.org/10.1186/s13588-014-0006-x | -|AnalytiCon Discovery NPs |4908 |AnalytiCon Discovery, Screening Libraries. In: AnalytiCon Discovery. https://ac-discovery.com/screening-libraries/ | -|BIOFACQUIM |400 |Pilón-Jiménez BA, Saldívar-González FI, Díaz-Eufracio BI, Medina-Franco JL (2019) BIOFACQUIM: a Mexican compound database of natural products. Biomolecules 9:31. https://doi.org/10.3390/biom9010031 | -|BitterDB |625 |Dagan-Wiener A, Di Pizio A, Nissim I, Bahia MS, Dubovski N, Margulis E (2019) BitterDB: taste ligands and receptors database in 2019. Nucleic Acids Res 47:D1179–D1185. https://doi.org/10.1093/nar/gky974 | -|Carotenoids Database |986 |Yabuzaki J (2017) Carotenoids Database: structures, chemical fingerprints and distribution among organisms. Database J Biol Databases Curation. https://doi.org/10.1093/database/bax004 | -|ChEBI NPs |14603 |ChemAxon (2012) JChem Base was used for structure searching and chemical database access and management. http://www.chemaxon.com | -|ChEMBL NPs |1585 |Schaub J, Zielesny A, Steinbeck C, Sorokina M (2020) Too sweet: cheminformatics for deglycosylation in natural products. J Cheminform 12:67. https://doi.org/10.1186/s13321-020-00467-y | -|ChemSpider NPs |9027 |Pence HE, Williams A (2010) ChemSpider: an online chemical information resource. J Chem Educ 87:1123–1124. https://doi.org/10.1021/ed100697w | -|CMAUP (cCollective molecular activities of useful plants) |20868 |Zeng X, Zhang P, Wang Y, Qin C, Chen S, He W (2019) CMAUP: a database of collective molecular activities of useful plants. Nucleic Acids Res 47:D1118–27 | -|ConMedNP |2504 |Ntie-Kang F, Amoa Onguéné P, Scharfe M, Owono LCO, Megnassan E, Meva’a Mbaze L (2014) ConMedNP: a natural product library from Central African medicinal plants for drug discovery. RSC Adv 4:409–419. https://doi.org/10.1039/c3ra43754j | -|ETM (Ethiopian Traditional Medicine) DB |1633 |Bultum LE, Woyessa AM, Lee D (2019) ETM-DB: integrated Ethiopian traditional herbal medicine and phytochemicals database. BMC Complement Altern Med 19:212. https://doi.org/10.1186/s12906-019-2634-1 | -|Exposome-explorer |478 |Neveu V, Moussy A, Rouaix H, Wedekind R, Pon A, Knox C (2017) Exposome-Explorer: a manually-curated database on biomarkers of exposure to dietary and environmental factors. Nucleic Acids Res 45:D979–D984. https://doi.org/10.1093/nar/gkw980 | -|FooDB |22123 |FooDB. http://foodb.ca/ | -|GNPS (Global Natural Products Social Molecular Networking) |6740 |Wang M, Carver JJ, Phelan VV, Sanchez LM, Garg N, Peng Y (2016) Sharing and community curation of mass spectrometry data with Global Natural Products Social Molecular Networking. Nat Biotechnol 34:828. https://doi.org/10.1038/nbt.3597 | -|HIM (Herbal Ingredients in-vivo Metabolism database) |962 |Kang H, Tang K, Liu Q, Sun Y, Huang Q, Zhu R (2013) HIM-herbal ingredients in vivo metabolism database. J Cheminform 5:28. https://doi.org/10.1186/1758-2946-5-28 | -|HIT (Herbal Ingredients Targets) |470 |Ye H, Ye L, Kang H, Zhang D, Tao L, Tang K (2011) HIT: linking herbal active ingredients to targets. Nucleic Acids Res 39:D1055–D1059 https://doi.org/10.1093/nar/gkq1165 | -|Indofine Chemical Company |46 |NDOFINE Chemical Company. http://www.indofinechemical.com/Media/sdf/sdf_files.aspx | -|InflamNat |536 |Zhang R, Lin J, Zou Y, Zhang X-J, Xiao W-L (2019) Chemical space and biological target network of anti-inflammatory natural products, J Chem Inf Model 59:66–73. https://doi.org/10.1021/acs.jcim.8b00560 | -|InPACdb |122 |Vetrivel U, Subramanian N, Pilla K (2009) InPACdb—Indian plant anticancer compounds database. Bioinformation 4:71–74 | -|InterBioScreen Ltd |67291 |InterBioScreen | Natural Compounds. https://www.ibscreen.com/natural-compounds | -|KNApSaCK |44422 |Nakamura K, Shimura N, Otabe Y, Hirai-Morita A, Nakamura Y, Ono N (2013) KNApSAcK-3D: a three-dimensional structure database of plant metabolites. Plant Cell Physiol 54:e4–e4. https://doi.org/10.1093/pcp/pcs186 | -|Lichen Database |1453 |Lichen Database. In: MTBLS999: A database of high-resolution MS/MS spectra for lichen metabolites. https://www.ebi.ac.uk/metabolights/MTBLS999 | -|Marine Natural Products |11880 |Gentile D, Patamia V, Scala A, Sciortino MT, Piperno A, Rescifina A (2020) Putative inhibitors of SARS-CoV-2 main protease from a library of marine natural products: a virtual screening and molecular modeling study. Marine Drugs 18:225. https://doi.org/10.3390/md18040225 | -|Mitishamba database |1010 |Derese S, Oyim J, Rogo M, Ndakala A (2015) Mitishamba database: a web based in silico database of natural products from Kenya plants. Nairobi, University of Nairobi | -|NANPDB (Natural Products from Northern African Sources) |3914 |Ntie-Kang F, Telukunta KK, Döring K, Simoben CV, Moumbock AF, Malange YI (2017) NANPDB: a resource for natural products from Northern African sources. J Nat Prod 80:2067–2076. https://doi.org/10.1021/acs.jnatprod.7b00283 | -|NCI DTP data |404 |Compound Sets—NCI DTP Data—National Cancer Institute—Confluence Wiki. https://wiki.nci.nih.gov/display/NCIDTPdata/Compound+Sets | -|NPACT |1453 |Mangal M, Sagar P, Singh H, Raghava GPS, Agarwal SM (2013) NPACT: naturally occurring plant-based anti-cancer compound-activity-target database. Nucleic Acids Res 41:D1124–D1129. https://doi.org/10.1093/nar/gks1047 | -|NPASS |27424 |Zeng X, Zhang P, He W, Qin C, Chen S, Tao L (2018) NPASS: natural product activity and species source database for natural product research, discovery and tool development. Nucleic Acids Res 46:D1217–D1222. https://doi.org/10.1093/nar/gkx1026 | -|NPAtlas |23914 |van Santen JA, Jacob G, Singh AL, Aniebok V, Balunas MJ, Bunsko D et al (2019) The natural products atlas: an open access knowledge base for microbial natural products discovery. ACS Cent Sci 5:1824–1833. https://doi.org/10.1021/acscentsci.9b00806 | -|NPCARE |1362 |Choi H, Cho SY, Pak HJ, Kim Y, Choi J, Lee YJ (2017) NPCARE: database of natural products and fractional extracts for cancer regulation. J Cheminformatics 9:2. https://doi.org/10.1186/s13321-016-0188-5 | -|NPEdia |16166 |Tomiki T, Saito T, Ueki M, Konno H, Asaoka T, Suzuki R (2006) RIKEN natural products encyclopedia (RIKEN NPEdia), a chemical database of RIKEN natural products depository (RIKEN NPDepo). J Comput Aid Chem 7:157–162 | -|NuBBEDB |2022 |Pilon AC, Valli M, Dametto AC, Pinto MEF, Freire RT, Castro-Gamboa I (2017) NuBBEDB: an updated database to uncover chemical and biological information from Brazilian biodiversity. Sci Rep 7:7215. https://doi.org/10.1038/s41598-017-07451-x | -|p-ANAPL |467 |Ntie-Kang F, Onguéné PA, Fotso GW, Andrae-Marobela K, Bezabih M, Ndom JC (2014) Virtualizing the p-ANAPL library: a step towards drug discovery from African medicinal plants. PLoS ONE 9:e90655. https://doi.org/10.1371/journal.pone.0090655 | -|Phenol-explorer |681 |Rothwell JA, Perez-Jimenez J, Neveu V, Medina-Remón A, M’Hiri N, García-Lobato P (2013) Phenol-Explorer 3.0: a major update of the Phenol-Explorer database to incorporate data on the effects of food processing on polyphenol content. Database. https://doi.org/10.1093/database/bat070 | -|PubChem NPs |2828 |OpenChemLib (https://github.com/cheminfo/openchemlib-js | -|ReSpect |699 |Sawada Y, Nakabayashi R, Yamada Y, Suzuki M, Sato M, Sakata A (2012) RIKEN tandem mass spectral database (ReSpect) for phytochemicals: a plant-specific MS/MS-based data resource and database. Phytochemistry 82:38–45. https://doi.org/10.1016/j.phytochem.2012.07.007 | -|SANCDB |592 |Hatherley R, Brown DK, Musyoka TM, Penkler DL, Faya N, Lobb KA (2015) SANCDB: a South African natural compound database. J Cheminformatics 7:29. https://doi.org/10.1186/s13321-015-0080-8 | -|Seaweed Metabolite Database (SWMD) |348 |Davis GDJ, Vasanthi AHR (2011) Seaweed metabolite database (SWMD): a database of natural compounds from marine algae. Bioinformation 5:361–364. | -|Specs Natural Products |745 |Specs. Compound management services and research compounds for the life science industry. https://www.specs.net/index.php | -|Spektraris NMR |242 |Fischedick JT, Johnson SR, Ketchum REB, Croteau RB, Lange BM (2015) NMR spectroscopic search module for Spektraris, an online resource for plant natural product identification—Taxane diterpenoids from Taxus × media cell suspension cultures as a case study. Phytochemistry 113:87–95. https://doi.org/10.1016/j.phytochem.2014.11.020| -|StreptomeDB |6058 |Moumbock AFA, Gao M, Qaseem A, Li J, Kirchner PA, Ndingkokhar B (2020) StreptomeDB 3.0: an updated compendium of streptomycetes natural products. Nucleic Acids Res. https://doi.org/10.1093/nar/gkaa868 | -|Super Natural II |214420 |Banerjee P, Erehman J, Gohlke B-O, Wilhelm T, Preissner R, Dunkel M (2015) Super Natural II—a database of natural products. Nucleic Acids Res 43:D935–D939. https://doi.org/10.1093/nar/gku886 | -|TCMDB@Taiwan (Traditional Chinese Medicine database) |50862 |Chen CY-C (2011) TCM Database: the World’s Largest Traditional Chinese Medicine Database for Drug Screening in silico. PLOS ONE 6:e15939. https://doi.org/10.1371/journal.pone.0015939 | -|TCMID (Traditional Chinese Medicine Integrated Database) |10552 |TCMID: traditional Chinese medicine integrative database for herb molecular mechanism analysis. https://www.ncbi.nlm.nih.gov/pmc/articles/PMC3531123/ | -|TIPdb (database of Taiwan indigenous plants) |7742 |Tung C-W, Lin Y-C, Chang H-S, Wang C-C, Chen I-S, Jheng J-L (2014) TIPdb-3D: the three-dimensional structure database of phytochemicals from Taiwan indigenous plants. Database. https://doi.org/10.1093/database/bau055 | -|TPPT (Toxic Plants–PhytoToxins) |1483 |ünthardt BF, Hollender J, Hungerbühler K, Scheringer M, Bucheli TD (2018) Comprehensive toxic plants-phytotoxins database and its application in assessing aquatic micropollution potential. J Agric Food Chem 66:7577–7588. https://doi.org/10.1021/acs.jafc.8b01639 | -|UEFS (Natural Products Databse of the UEFS) |481 |UEFS Natural Products. http://zinc12.docking.org/catalogs/uefsnp | -|UNPD (Universal Natural Products Database) |156865 |Gu J, Gui Y, Chen L, Yuan G, Lu H-Z, Xu X (2013) Use of natural products as chemical library for drug discovery and network pharmacology. PLoS ONE 8:e62839. https://doi.org/10.1371/journal.pone.0062839 | -|VietHerb |4759 |Nguyen-Vo T-H, Le T, Pham D, Nguyen T, Le P, Nguyen A (2019) VIETHERB: a database for Vietnamese herbal species. J Chem Inf Model 59:1–9. https://doi.org/10.1021/acs.jcim.8b00399 | -|ZINC NP |67327 |Sterling T, Irwin JJ (2015) ZINC 15—ligand discovery for everyone. J Chem Inf Model 55:2324–2337. https://doi.org/10.1021/acs.jcim.5b00559 | -|Manually selected molecules |61 |x | +| Total Molecules | Total Collections | Unique Organisms | Citations Mapped | +|:-----------------:|:-------------------:|:------------------:|:------------------:| +| 1,080,876 | 63 | 57,626 | 24,272 | + +## Public databases and primary sources from which COCONUT was meticulously assembled: + +| S.No | Database name | Entries integrated in COCONUT | Latest resource URL | +|:----:|:----------------------------------------------------------:|:-----------------------------:|:------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------:| +| 1 | AfroCancer | 390 | Fidele Ntie-Kang, Justina Ngozi Nwodo, Akachukwu Ibezim, Conrad Veranso Simoben, Berin Karaman, Valery Fuh Ngwa, Wolfgang Sippl, Michael Umale Adikwu, and Luc Meva’a Mbaze Journal of Chemical Information and Modeling 2014 54 (9), 2433-2450 https://doi.org/10.1021/ci5003697 | +| 2 | AfroDB | 953 | Fidele Ntie-Kang ,Denis Zofou,Smith B. Babiaka,Rolande Meudom,Michael Scharfe,Lydia L. Lifongo,James A. Mbah,Luc Meva’a Mbaze,Wolfgang Sippl,Simon M. N. Efange https://doi.org/10.1371/journal.pone.0078085 | +| 3 | AfroMalariaDB | 265 | Onguéné, P.A., Ntie-Kang, F., Mbah, J.A. et al. The potential of anti-malarial compounds derived from African medicinal plants, part III: an in silico evaluation of drug metabolism and pharmacokinetics profiling. Org Med Chem Lett 4, 6 (2014). https://doi.org/10.1186/s13588-014-0006-x | +| 4 | AnalytiCon Discovery NPs | 5,147 | Natural products are a sebset of AnalytiCon Discovery NPs https://ac-discovery.com/screening-libraries/ | +| 5 | BIOFACQUIM | 605 | Pilón-Jiménez, B.A.; Saldívar-González, F.I.; Díaz-Eufracio, B.I.; Medina-Franco, J.L. BIOFACQUIM: A Mexican Compound Database of Natural Products. Biomolecules 2019, 9, 31. https://doi.org/10.3390/biom9010031 | +| 6 | BitterDB | 685 | Ayana Dagan-Wiener, Antonella Di Pizio, Ido Nissim, Malkeet S Bahia, Nitzan Dubovski, Eitan Margulis, Masha Y Niv, BitterDB: taste ligands and receptors database in 2019, Nucleic Acids Research, Volume 47, Issue D1, 08 January 2019, Pages D1179–D1185, https://doi.org/10.1093/nar/gky974 | +| 7 | Carotenoids Database | 1,195 | Junko Yabuzaki, Carotenoids Database: structures, chemical fingerprints and distribution among organisms, Database, Volume 2017, 2017, bax004, https://doi.org/10.1093/database/bax004 | +| 8 | ChEBI NPs | 16,215 | Janna Hastings, Paula de Matos, Adriano Dekker, Marcus Ennis, Bhavana Harsha, Namrata Kale, Venkatesh Muthukrishnan, Gareth Owen, Steve Turner, Mark Williams, Christoph Steinbeck, The ChEBI reference database and ontology for biologically relevant chemistry: enhancements for 2013, Nucleic Acids Research, Volume 41, Issue D1, 1 January 2013, Pages D456–D463, https://doi.org/10.1093/nar/gks1146 | +| 9 | ChEMBL NPs | 1,910 | Anna Gaulton, Anne Hersey, Michał Nowotka, A. Patrícia Bento, Jon Chambers, David Mendez, Prudence Mutowo, Francis Atkinson, Louisa J. Bellis, Elena Cibrián-Uhalte, Mark Davies, Nathan Dedman, Anneli Karlsson, María Paula Magariños, John P. Overington, George Papadatos, Ines Smit, Andrew R. Leach, The ChEMBL database in 2017, Nucleic Acids Research, Volume 45, Issue D1, January 2017, Pages D945–D954, https://doi.org/10.1093/nar/gkw1074 | +| 10 | ChemSpider NPs | 9,740 | Harry E. Pence and Antony Williams Journal of Chemical Education 2010 87 (11), 1123-1124 https://doi.org/10.1021/ed100697w | +| 11 | CMAUP (cCollective molecular activities of useful plants) | 47,593 | Xian Zeng, Peng Zhang, Yali Wang, Chu Qin, Shangying Chen, Weidong He, Lin Tao, Ying Tan, Dan Gao, Bohua Wang, Zhe Chen, Weiping Chen, Yu Yang Jiang, Yu Zong Chen, CMAUP: a database of collective molecular activities of useful plants, Nucleic Acids Research, Volume 47, Issue D1, 08 January 2019, Pages D1118–D1127, https://doi.org/10.1093/nar/gky965 | +| 12 | ConMedNP | 3,111 | DOI https://doi.org/10.1039/C3RA43754J | +| 13 | ETM (Ethiopian Traditional Medicine) DB | 1,798 | Bultum, L.E., Woyessa, A.M. & Lee, D. ETM-DB: integrated Ethiopian traditional herbal medicine and phytochemicals database. BMC Complement Altern Med 19, 212 (2019). https://doi.org/10.1186/s12906-019-2634-1 | +| 14 | Exposome-explorer | 434 | Vanessa Neveu, Alice Moussy, Héloïse Rouaix, Roland Wedekind, Allison Pon, Craig Knox, David S. Wishart, Augustin Scalbert, Exposome-Explorer: a manually-curated database on biomarkers of exposure to dietary and environmental factors, Nucleic Acids Research, Volume 45, Issue D1, January 2017, Pages D979–D984, https://doi.org/10.1093/nar/gkw980 | +| 15 | FoodDB | 70,385 | Natural products are a sebset of FoodDB https://foodb.ca/ | +| 16 | GNPS (Global Natural Products Social Molecular Networking) | 11,103 | Wang, M., Carver, J., Phelan, V. et al. Sharing and community curation of mass spectrometry data with Global Natural Products Social Molecular Networking. Nat Biotechnol 34, 828–837 (2016). https://doi.org/10.1038/nbt.3597 | +| 17 | HIM (Herbal Ingredients in-vivo Metabolism database) | 1,259 | Kang, H., Tang, K., Liu, Q. et al. HIM-herbal ingredients in-vivo metabolism database. J Cheminform 5, 28 (2013). https://doi.org/10.1186/1758-2946-5-28 | +| 18 | HIT (Herbal Ingredients Targets) | 530 | Hao Ye, Li Ye, Hong Kang, Duanfeng Zhang, Lin Tao, Kailin Tang, Xueping Liu, Ruixin Zhu, Qi Liu, Y. Z. Chen, Yixue Li, Zhiwei Cao, HIT: linking herbal active ingredients to targets, Nucleic Acids Research, Volume 39, Issue suppl_1, 1 January 2011, Pages D1055–D1059, https://doi.org/10.1093/nar/gkq1165 | +| 19 | Indofine Chemical Company | 46 | Natural products are a sebset of Indofine Chemical Company https://indofinechemical.com/ | +| 20 | InflamNat | 664 | Ruihan Zhang, Jing Lin, Yan Zou, Xing-Jie Zhang, and Wei-Lie Xiao Journal of Chemical Information and Modeling 2019 59 (1), 66-73 DOI: 10.1021/acs.jcim.8b00560 https://doi.org/10.1021/acs.jcim.8b00560 | +| 21 | InPACdb | 124 | Vetrivel et al., Bioinformation 4(2): 71-74 (2009) https://www.bioinformation.net/004/001500042009.htm | +| 22 | InterBioScreen Ltd | 68,372 | Natural products are a sebset of InterBioScreen Ltd https://www.ibscreen.com/natural-compounds | +| 23 | KNApSaCK | 48,241 | Kensuke Nakamura, Naoki Shimura, Yuuki Otabe, Aki Hirai-Morita, Yukiko Nakamura, Naoaki Ono, Md Altaf Ul-Amin, Shigehiko Kanaya, KNApSAcK-3D: A Three-Dimensional Structure Database of Plant Metabolites, Plant and Cell Physiology, Volume 54, Issue 2, February 2013, Page e4, https://doi.org/10.1093/pcp/pcs186 | +| 24 | Lichen Database | 1,718 | Olivier-Jimenez, D., Chollet-Krugler, M., Rondeau, D. et al. A database of high-resolution MS/MS spectra for lichen metabolites. Sci Data 6, 294 (2019). https://doi.org/10.1038/s41597-019-0305-1 | +| 25 | Marine Natural Products | 14,220 | Gentile, D.; Patamia, V.; Scala, A.; Sciortino, M.T.; Piperno, A.; Rescifina, A. Putative Inhibitors of SARS-CoV-2 Main Protease from A Library of Marine Natural Products: A Virtual Screening and Molecular Modeling Study. Mar. Drugs 2020, 18, 225. https://doi.org/10.3390/md18040225 | +| 26 | Mitishamba database | 1,095 | Derese, Solomon., Ndakala, Albert .,Rogo, Michael., Maynim, cholastica and Oyim, James (2015). Mitishamba database: a web based in silico database of natural products from Kenya plants. The 16th symposium of the natural products reseach network for eastern and central Africa (NAPRECA) 31st August to 3rd September 2015 Arusha, Tanzania http://erepository.uonbi.ac.ke/handle/11295/92273 | +| 27 | NANPDB (Natural Products from Northern African Sources) | 7,482 | Fidele Ntie-Kang, Kiran K. Telukunta, Kersten Döring, Conrad V. Simoben, Aurélien F. A. Moumbock, Yvette I. Malange, Leonel E. Njume, Joseph N. Yong, Wolfgang Sippl, and Stefan Günther Journal of Natural Products 2017 80 (7), 2067-2076 DOI: 10.1021/acs.jnatprod.7b00283 https://doi.org/10.1021/acs.jnatprod.7b00283 | +| 28 | NCI DTP data | 419 | Natural products are a sebset of NCI DTP data https://wiki.nci.nih.gov/display/NCIDTPdata/Compound+Sets | +| 29 | NPACT | 1,572 | Manu Mangal, Parul Sagar, Harinder Singh, Gajendra P. S. Raghava, Subhash M. Agarwal, NPACT: Naturally Occurring Plant-based Anti-cancer Compound-Activity-Target database, Nucleic Acids Research, Volume 41, Issue D1, 1 January 2013, Pages D1124–D1129, https://doi.org/10.1093/nar/gks1047 | +| 30 | NPASS | 96,173 | Xian Zeng, Peng Zhang, Weidong He, Chu Qin, Shangying Chen, Lin Tao, Yali Wang, Ying Tan, Dan Gao, Bohua Wang, Zhe Chen, Weiping Chen, Yu Yang Jiang, Yu Zong Chen, NPASS: natural product activity and species source database for natural product research, discovery and tool development, Nucleic Acids Research, Volume 46, Issue D1, 4 January 2018, Pages D1217–D1222, https://doi.org/10.1093/nar/gkx1026 | +| 31 | NPAtlas | 36,395 | Jeffrey A. van Santen, Grégoire Jacob, Amrit Leen Singh, Victor Aniebok, Marcy J. Balunas, Derek Bunsko, Fausto Carnevale Neto, Laia Castaño-Espriu, Chen Chang, Trevor N. Clark, Jessica L. Cleary Little, David A. Delgadillo, Pieter C. Dorrestein, Katherine R. Duncan, Joseph M. Egan, Melissa M. Galey, F.P. Jake Haeckl, Alex Hua, Alison H. Hughes, Dasha Iskakova, Aswad Khadilkar, Jung-Ho Lee, Sanghoon Lee, Nicole LeGrow, Dennis Y. Liu, Jocelyn M. Macho, Catherine S. McCaughey, Marnix H. Medema, Ram P. Neupane, Timothy J. O’Donnell, Jasmine S. Paula, Laura M. Sanchez, Anam F. Shaikh, Sylvia Soldatou, Barbara R. Terlouw, Tuan Anh Tran, Mercia Valentine, Justin J. J. van der Hooft, Duy A. Vo, Mingxun Wang, Darryl Wilson, Katherine E. Zink, and Roger G. Linington ACS Central Science 2019 5 (11), 1824-1833 DOI: 10.1021/acscentsci.9b00806 https://doi.org/10.1021/acscentsci.9b00806 | +| 32 | NPCARE | 1,446 | Choi, H., Cho, S.Y., Pak, H.J. et al. NPCARE: database of natural products and fractional extracts for cancer regulation. J Cheminform 9, 2 (2017). https://doi.org/10.1186/s13321-016-0188-5 | +| 33 | NPEdia | 49,597 | Takeshi Tomiki, Tamio Saito, Masashi Ueki, Hideaki Konno, Takeo Asaoka, Ryuichiro Suzuki, Masakazu Uramoto, Hideaki Kakeya, Hiroyuki Osada, [Special Issue: Fact Databases and Freewares] RIKEN Natural Products Encyclopedia (RIKEN NPEdia),a Chemical Database of RIKEN Natural Products Depository (RIKEN NPDepo), Journal of Computer Aided Chemistry, 2006, Volume 7, Pages 157-162, Released on J-STAGE September 15, 2006, Online ISSN 1345-8647, https://doi.org/10.2751/jcac.7.157 | +| 34 | NuBBEDB | 2,215 | Pilon, A.C., Valli, M., Dametto, A.C. et al. NuBBEDB: an updated database to uncover chemical and biological information from Brazilian biodiversity. Sci Rep 7, 7215 (2017). https://doi.org/10.1038/s41598-017-07451-x | +| 35 | p-ANAPL | 533 | Fidele Ntie-Kang ,Pascal Amoa Onguéné ,Ghislain W. Fotso,Kerstin Andrae-Marobela ,Merhatibeb Bezabih,Jean Claude Ndom,Bonaventure T. Ngadjui,Abiodun O. Ogundaini,Berhanu M. Abegaz,Luc Mbaze Meva’a Published: March 5, 2014 https://doi.org/10.1371/journal.pone.0090655 | +| 36 | Phenol-explorer | 742 | Joseph A. Rothwell, Jara Perez-Jimenez, Vanessa Neveu, Alexander Medina-Remón, Nouha M'Hiri, Paula García-Lobato, Claudine Manach, Craig Knox, Roman Eisner, David S. Wishart, Augustin Scalbert, Phenol-Explorer 3.0: a major update of the Phenol-Explorer database to incorporate data on the effects of food processing on polyphenol content, Database, Volume 2013, 2013, bat070, https://doi.org/10.1093/database/bat070 | +| 37 | PubChem NPs | 3,533 | Natural products are a sebset of PubChem NPs https://pubchem.ncbi.nlm.nih.gov/substance/251960601 | +| 38 | ReSpect | 4,854 | Yuji Sawada, Ryo Nakabayashi, Yutaka Yamada, Makoto Suzuki, Muneo Sato, Akane Sakata, Kenji Akiyama, Tetsuya Sakurai, Fumio Matsuda, Toshio Aoki, Masami Yokota Hirai, Kazuki Saito, RIKEN tandem mass spectral database (ReSpect) for phytochemicals: A plant-specific MS/MS-based data resource and database, Phytochemistry, Volume 82, 2012, Pages 38-45, ISSN 0031-9422, https://doi.org/10.1016/j.phytochem.2012.07.007. | +| 39 | SANCDB | 995 | Hatherley, R., Brown, D.K., Musyoka, T.M. et al. SANCDB: a South African natural compound database. J Cheminform 7, 29 (2015). https://doi.org/10.1186/s13321-015-0080-8 | +| 40 | Seaweed Metabolite Database (SWMD) | 1,075 | Davis & Vasanthi, Bioinformation 5(8): 361-364 (2011) https://www.bioinformation.net/005/007900052011.htm | +| 41 | Specs Natural Products | 744 | Natural products are a sebset of Specs Natural Products https://www.specs.net/index.php | +| 42 | Spektraris NMR | 248 | Justin T. Fischedick, Sean R. Johnson, Raymond E.B. Ketchum, Rodney B. Croteau, B. Markus Lange, NMR spectroscopic search module for Spektraris, an online resource for plant natural product identification – Taxane diterpenoids from Taxus×media cell suspension cultures as a case study, Phytochemistry, Volume 113, 2015, Pages 87-95, ISSN 0031-9422, https://doi.org/10.1016/j.phytochem.2014.11.020. | +| 43 | StreptomeDB | 6,522 | Aurélien F A Moumbock, Mingjie Gao, Ammar Qaseem, Jianyu Li, Pascal A Kirchner, Bakoh Ndingkokhar, Boris D Bekono, Conrad V Simoben, Smith B Babiaka, Yvette I Malange, Florian Sauter, Paul Zierep, Fidele Ntie-Kang, Stefan Günther, StreptomeDB 3.0: an updated compendium of streptomycetes natural products, Nucleic Acids Research, Volume 49, Issue D1, 8 January 2021, Pages D600–D604, https://doi.org/10.1093/nar/gkaa868 | +| 44 | Super Natural II | 325,149 | Priyanka Banerjee, Jevgeni Erehman, Björn-Oliver Gohlke, Thomas Wilhelm, Robert Preissner, Mathias Dunkel, Super Natural II—a database of natural products, Nucleic Acids Research, Volume 43, Issue D1, 28 January 2015, Pages D935–D939, https://doi.org/10.1093/nar/gku886 | +| 45 | TCMDB@Taiwan (Traditional Chinese Medicine database) | 58,401 | Calvin Yu-Chian Chen Published: January 6, 2011 https://doi.org/10.1371/journal.pone.0015939 | +| 46 | TCMID (Traditional Chinese Medicine Integrated Database) | 32,038 | Xue R, Fang Z, Zhang M, Yi Z, Wen C, Shi T. TCMID: Traditional Chinese Medicine integrative database for herb molecular mechanism analysis. Nucleic Acids Res. 2013 Jan;41(Database issue):D1089-95. doi: 10.1093/nar/gks1100. Epub 2012 Nov 29. PMID: 23203875; PMCID: PMC3531123. | +| 47 | TIPdb (database of Taiwan indigenous plants) | 8,838 | Chun-Wei Tung, Ying-Chi Lin, Hsun-Shuo Chang, Chia-Chi Wang, Ih-Sheng Chen, Jhao-Liang Jheng, Jih-Heng Li, TIPdb-3D: the three-dimensional structure database of phytochemicals from Taiwan indigenous plants, Database, Volume 2014, 2014, bau055, https://doi.org/10.1093/database/bau055 | +| 48 | TPPT (Toxic Plants–PhytoToxins) | 1,561 | Barbara F. Günthardt, Juliane Hollender, Konrad Hungerbühler, Martin Scheringer, and Thomas D. Bucheli Journal of Agricultural and Food Chemistry 2018 66 (29), 7577-7588 DOI: 10.1021/acs.jafc.8b01639 https://pubs.acs.org/doi/10.1021/acs.jafc.8b01639 | +| 49 | UEFS (Natural Products Databse of the UEFS) | 503 | Natural products are a sebset of UEFS (Natural Products Databse of the UEFS) https://zinc12.docking.org/catalogs/uefsnp | +| 50 | UNPD (Universal Natural Products Database) | 213,210 | Jiangyong Gu,Yuanshen Gui,Lirong Chen ,Gu Yuan,Hui-Zhe Lu,Xiaojie Xu Published: April 25, 2013 https://doi.org/10.1371/journal.pone.0062839 | +| 51 | VietHerb | 5,150 | Thanh-Hoang Nguyen-Vo, Tri Le, Duy Pham, Tri Nguyen, Phuc Le, An Nguyen, Thanh Nguyen, Thien-Ngan Nguyen, Vu Nguyen, Hai Do, Khang Trinh, Hai Trong Duong, and Ly Le Journal of Chemical Information and Modeling 2019 59 (1), 1-9 DOI: 10.1021/acs.jcim.8b00399 https://pubs.acs.org/doi/10.1021/acs.jcim.8b00399 | +| 52 | ZINC NP | 85,201 | Teague Sterling and John J. Irwin Journal of Chemical Information and Modeling 2015 55 (11), 2324-2337 DOI: 10.1021/acs.jcim.5b00559 https://doi.org/10.1021/acs.jcim.5b00559 | +| 53 | CyanoMetNP | 2,113 | Jones MR, Pinto E, Torres MA, Dörr F, Mazur-Marzec H, Szubert K, Tartaglione L, Dell'Aversano C, Miles CO, Beach DG, McCarron P, Sivonen K, Fewer DP, Jokela J, Janssen EM. CyanoMetDB, a comprehensive public database of secondary metabolites from cyanobacteria. Water Res. 2021 May 15;196:117017. doi: 10.1016/j.watres.2021.117017. Epub 2021 Mar 8. PMID: 33765498. | +| 54 | DrugBankNP | 9,283 | Wishart DS, Feunang YD, Guo AC, Lo EJ, Marcu A, Grant JR, Sajed T, Johnson D, Li C, Sayeeda Z, Assempour N, Iynkkaran I, Liu Y, Maciejewski A, Gale N, Wilson A, Chin L, Cummings R, Le D, Pon A, Knox C, Wilson M. DrugBank 5.0: a major update to the DrugBank database for 2018. Nucleic Acids Res. 2017 Nov 8. doi: 10.1093/nar/gkx1037. | +| 55 | Australian natural products | 21,591 | Saubern, Simon; Shmaylov, Alex; Locock, Katherine; McGilvery, Don; Collins, David (2023): Australian Natural Products dataset. v5. CSIRO. Data Collection. https://doi.org/10.25919/v8wq-mr81 | +| 56 | EMNPD | 6,145 | Xu, HQ., Xiao, H., Bu, JH. et al. EMNPD: a comprehensive endophytic microorganism natural products database for prompt the discovery of new bioactive substances. J Cheminform 15, 115 (2023). https://doi.org/10.1186/s13321-023-00779-9 | +| 57 | ANPDB | 7,482 | 1) Pharmacoinformatic investigation of medicinal plants from East Africa Conrad V. Simoben, Ammar Qaseem, Aurélien F. A. Moumbock, Kiran K. Telukunta, Stefan Günther, Wolfgang Sippl, and Fidele Ntie-Kang Molecular Informatics 2020 DOI: 10.1002/minf.202000163 https://doi.org/10.1002/minf.202000163 2) NANPDB: A Resource for Natural Products from Northern African Sources Fidele Ntie-Kang, Kiran K. Telukunta, Kersten Döring, Conrad V. Simoben, Aurélien F. A. Moumbock, Yvette I. Malange, Leonel E. Njume, Joseph N. Yong, Wolfgang Sippl, and Stefan Günther Journal of Natural Products 2017 DOI: 10.1021/acs.jnatprod.7b00283 https://pubs.acs.org/doi/10.1021/acs.jnatprod.7b00283 | +| 58 | Phyto4Health | 3,175 | Nikita Ionov, Dmitry Druzhilovskiy, Dmitry Filimonov, and Vladimir Poroikov Journal of Chemical Information and Modeling 2023 63 (7), 1847-1851 DOI: 10.1021/acs.jcim.2c01567 https://pubs.acs.org/doi/10.1021/acs.jcim.2c01567 | +| 59 | Piella DB | 65 | Natural products are a sebset of Piella DB https://micro.biol.ethz.ch/research/piel.html | +| 60 | Watermelon | 1,526 | Natural products are a sebset of Watermelon https://watermelon.naturalproducts.net/ | +| 61 | Latin America dataset | 12,959 | Gómez-García A, Jiménez DAA, Zamora WJ, Barazorda-Ccahuana HL, Chávez-Fumagalli MÁ, Valli M, Andricopulo AD, Bolzani VDS, Olmedo DA, Solís PN, Núñez MJ, Rodríguez Pérez JR, Valencia Sánchez HA, Cortés Hernández HF, Medina-Franco JL. Navigating the Chemical Space and Chemical Multiverse of a Unified Latin American Natural Product Database: LANaPDB. Pharmaceuticals (Basel). 2023 Sep 30;16(10):1388. doi: 10.3390/ph16101388. PMID: 37895859; PMCID: PMC10609821. | +| 62 | CMNPD | 31,561 | Chuanyu Lyu, Tong Chen, Bo Qiang, Ningfeng Liu, Heyu Wang, Liangren Zhang, Zhenming Liu, CMNPD: a comprehensive marine natural products database towards facilitating drug discovery from the ocean, Nucleic Acids Research, Volume 49, Issue D1, 8 January 2021, Pages D509–D515, https://doi.org/10.1093/nar/gkaa763 | +| 63 | Supernatural3 | 1,203,509 | Natural products are a sebset of Supernatural3 https://academic.oup.com/nar/article/51/D1/D654/6833249 | +| | **Total Entries** | 2,551,803 | | \ No newline at end of file diff --git a/docs/structure-search.md b/docs/structure-search.md index 8e55eb8a..bcec4f9e 100644 --- a/docs/structure-search.md +++ b/docs/structure-search.md @@ -1,85 +1,7 @@ -# Markdown Extension Examples +# COCONUT online searches using Structures -This page demonstrates some of the built-in markdown extensions provided by VitePress. +## Draw Structure -## Syntax Highlighting +## Substructure Search -VitePress provides Syntax Highlighting powered by [Shiki](https://github.com/shikijs/shiki), with additional features like line-highlighting: - -**Input** - -```` -```js{4} -export default { - data () { - return { - msg: 'Highlighted!' - } - } -} -``` -```` - -**Output** - -```js{4} -export default { - data () { - return { - msg: 'Highlighted!' - } - } -} -``` - -## Custom Containers - -**Input** - -```md -::: info -This is an info box. -::: - -::: tip -This is a tip. -::: - -::: warning -This is a warning. -::: - -::: danger -This is a dangerous warning. -::: - -::: details -This is a details block. -::: -``` - -**Output** - -::: info -This is an info box. -::: - -::: tip -This is a tip. -::: - -::: warning -This is a warning. -::: - -::: danger -This is a dangerous warning. -::: - -::: details -This is a details block. -::: - -## More - -Check out the documentation for the [full list of markdown extensions](https://vitepress.dev/guide/markdown). +## Similarity Search \ No newline at end of file diff --git a/docs/substructure-search.md b/docs/substructure-search.md new file mode 100644 index 00000000..ac83f1ab --- /dev/null +++ b/docs/substructure-search.md @@ -0,0 +1,4 @@ +# COCONUT online - Substructure Search + + + diff --git a/resources/views/livewire/about.blade.php b/resources/views/livewire/about.blade.php index 2e2af60c..9f749e47 100644 --- a/resources/views/livewire/about.blade.php +++ b/resources/views/livewire/about.blade.php @@ -129,15 +129,7 @@ class="pointer-events-none absolute inset-0 rounded-xl ring-1 ring-inset ring-gr in Germany, under the leadership of Professor Christoph Steinbeck. Funded by the - Deutsche - Forschungsgemeinschaft (DFG, German Research - Foundation) - under the - National Research Data - Infrastructure – NFDI4Chem - – Project number: - 441958208 and - (Project INF) + Chembiosys (Project INF) - Project number: 239748522 - SFB 1127.

@@ -162,9 +154,7 @@ class="mx-auto mt-16 grid max-w-2xl grid-cols-1 gap-x-8 gap-y-16 text-base leadi
Help Desk
- Any issues or support requests can be raised at our - Help Desk - or write to us at + Write to us for any issues or support requests info.COCONUT@uni-jena.de.
diff --git a/resources/views/livewire/download.blade.php b/resources/views/livewire/download.blade.php index 97811c7c..d1b5e4e1 100644 --- a/resources/views/livewire/download.blade.php +++ b/resources/views/livewire/download.blade.php @@ -1,49 +1,53 @@ -
-
-
-

- Download -

-

Version: August 2024

-
-
-
-

-

The data is released under the Creative - Commons CC0 license, allowing for free use, modification, and distribution without any - restrictions. No attribution is required when utilizing this data.

+
+
+

+ Download +

+

Version: August 2024

+
+
+
+

+

The data is released under the Creative + Commons CC0 license, allowing for free use, modification, and distribution without any + restrictions. No attribution is required when utilizing this data.

-
-
-
Download Natural - Products Structures in SDF
-
-
- -
-
-
-
Download the complete - COCONUT dataset as a PostgreSQL dump -
-
-
- Download -
-
-
-
Download Natural - Products Structures in CSV format
-
-
- Download -
-
-
-
+
+
+
Download Natural + Products Structures in SDF
+
+
+ Download
+ coconut-08-2024.sdf - 364.1 MB
+
+
+
+
Download the complete + COCONUT dataset as a PostgreSQL dump +
+
+
+ Download
+ coconut-08-2024.sql - 20.94 GB
+
+
+
+
Download Natural + Products Structures in CSV format
+
+
+ Download
+ coconut-08-2024.csv - 209.2 MB
+
+
+
diff --git a/resources/views/livewire/header.blade.php b/resources/views/livewire/header.blade.php index a1fe189a..0758a04c 100644 --- a/resources/views/livewire/header.blade.php +++ b/resources/views/livewire/header.blade.php @@ -1,4 +1,4 @@ -
+